diff --git a/Microsoft.ML.sln b/Microsoft.ML.sln index 3f197a955b..759ef2e8f6 100644 --- a/Microsoft.ML.sln +++ b/Microsoft.ML.sln @@ -1,4 +1,4 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.1.32120.378 MinimumVisualStudioVersion = 10.0.40219.1 @@ -123,6 +123,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.AutoML", "src\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.AutoML.Samples", "docs\samples\Microsoft.ML.AutoML.Samples\Microsoft.ML.AutoML.Samples.csproj", "{A6924919-9E37-4023-8B7F-E85C8E3CC9B3}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.AutoML.Interactive", "src\Microsoft.ML.AutoML.Interactive\Microsoft.ML.AutoML.Interactive.csproj", "{3B00090A-B5E4-4570-BCD0-B4CD5D499394}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Samples.GPU", "docs\samples\Microsoft.ML.Samples.GPU\Microsoft.ML.Samples.GPU.csproj", "{3C8F910B-7F23-4D25-B521-6D5AC9570ADD}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Featurizers", "src\Microsoft.ML.Featurizers\Microsoft.ML.Featurizers.csproj", "{E2DD0721-5B0F-4606-8182-4C7EFB834518}" @@ -157,7 +159,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.SearchSpace.Te EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.AutoML.SourceGenerator", "tools-local\Microsoft.ML.AutoML.SourceGenerator\Microsoft.ML.AutoML.SourceGenerator.csproj", "{C804B990-390E-41D7-8FF1-6774495D70E2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.ML.TorchSharp", "src\Microsoft.ML.TorchSharp\Microsoft.ML.TorchSharp.csproj", "{FF0BD187-4451-4A3B-934B-2AE3454896E2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.TorchSharp", "src\Microsoft.ML.TorchSharp\Microsoft.ML.TorchSharp.csproj", "{FF0BD187-4451-4A3B-934B-2AE3454896E2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Tokenizers", "src\Microsoft.ML.Tokenizers\Microsoft.ML.Tokenizers.csproj", "{BBC3A950-BD68-45AC-9DBD-A8F4D8847745}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Tokenizers.Tests", "test\Microsoft.ML.Tokenizers.Tests\Microsoft.ML.Tokenizers.Tests.csproj", "{C3D82402-F207-4F19-8C57-5AF0FBAF9682}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.ML.XGBoost", "src\Microsoft.ML.XGBoost\Microsoft.ML.XGBoost.csproj", "{9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -607,6 +615,14 @@ Global {A6924919-9E37-4023-8B7F-E85C8E3CC9B3}.Release|Any CPU.Build.0 = Release|Any CPU {A6924919-9E37-4023-8B7F-E85C8E3CC9B3}.Release|x64.ActiveCfg = Release|Any CPU {A6924919-9E37-4023-8B7F-E85C8E3CC9B3}.Release|x64.Build.0 = Release|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Debug|x64.ActiveCfg = Debug|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Debug|x64.Build.0 = Debug|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Release|Any CPU.Build.0 = Release|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Release|x64.ActiveCfg = Release|Any CPU + {3B00090A-B5E4-4570-BCD0-B4CD5D499394}.Release|x64.Build.0 = Release|Any CPU {3C8F910B-7F23-4D25-B521-6D5AC9570ADD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3C8F910B-7F23-4D25-B521-6D5AC9570ADD}.Debug|Any CPU.Build.0 = Debug|Any CPU {3C8F910B-7F23-4D25-B521-6D5AC9570ADD}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -747,6 +763,30 @@ Global {FF0BD187-4451-4A3B-934B-2AE3454896E2}.Release|Any CPU.Build.0 = Release|Any CPU {FF0BD187-4451-4A3B-934B-2AE3454896E2}.Release|x64.ActiveCfg = Release|Any CPU {FF0BD187-4451-4A3B-934B-2AE3454896E2}.Release|x64.Build.0 = Release|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Debug|x64.ActiveCfg = Debug|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Debug|x64.Build.0 = Debug|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Release|Any CPU.Build.0 = Release|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Release|x64.ActiveCfg = Release|Any CPU + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745}.Release|x64.Build.0 = Release|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Debug|x64.ActiveCfg = Debug|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Debug|x64.Build.0 = Debug|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Release|Any CPU.Build.0 = Release|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Release|x64.ActiveCfg = Release|Any CPU + {C3D82402-F207-4F19-8C57-5AF0FBAF9682}.Release|x64.Build.0 = Release|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Debug|x64.ActiveCfg = Debug|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Debug|x64.Build.0 = Debug|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Release|Any CPU.Build.0 = Release|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Release|x64.ActiveCfg = Release|Any CPU + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -806,6 +846,7 @@ Global {C2652287-CD6D-40FB-B042-95FB56D09DB8} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4} {E48285BF-F49A-4EA3-AED0-1BDDBF77EB80} = {09EADF06-BE25-4228-AB53-95AE3E15B530} {A6924919-9E37-4023-8B7F-E85C8E3CC9B3} = {DA452A53-2E94-4433-B08C-041EDEC729E6} + {3B00090A-B5E4-4570-BCD0-B4CD5D499394} = {09EADF06-BE25-4228-AB53-95AE3E15B530} {3C8F910B-7F23-4D25-B521-6D5AC9570ADD} = {DA452A53-2E94-4433-B08C-041EDEC729E6} {E2DD0721-5B0F-4606-8182-4C7EFB834518} = {09EADF06-BE25-4228-AB53-95AE3E15B530} {56CB0850-7341-4D71-9AE4-9EFC472D93DD} = {09EADF06-BE25-4228-AB53-95AE3E15B530} @@ -824,6 +865,9 @@ Global {A3E9F25F-2718-4FF9-A35A-54C232A847AB} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4} {C804B990-390E-41D7-8FF1-6774495D70E2} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E} {FF0BD187-4451-4A3B-934B-2AE3454896E2} = {09EADF06-BE25-4228-AB53-95AE3E15B530} + {BBC3A950-BD68-45AC-9DBD-A8F4D8847745} = {09EADF06-BE25-4228-AB53-95AE3E15B530} + {C3D82402-F207-4F19-8C57-5AF0FBAF9682} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4} + {9CF22D6B-3094-4F42-9CBF-1B07087CF1EE} = {09EADF06-BE25-4228-AB53-95AE3E15B530} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D} diff --git a/NuGet.config b/NuGet.config index 976d8d3441..ffcdda42a0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,7 @@ + @@ -13,6 +14,7 @@ + diff --git a/THIRD-PARTY-NOTICES.TXT b/THIRD-PARTY-NOTICES.TXT index ae6f0a7ec3..49d4e0c2a8 100644 --- a/THIRD-PARTY-NOTICES.TXT +++ b/THIRD-PARTY-NOTICES.TXT @@ -65,4 +65,23 @@ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PA PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. \ No newline at end of file +DEALINGS IN THE SOFTWARE. + +License notice for HuggingFace Tokenizers +------------------------------------------ + +https://github.com/huggingface/tokenizers/blob/main/LICENSE + +Copyright 2004 HuggingFace Tokenizers + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/build/.night-build.yml b/build/.night-build.yml index 1f3ae20269..442a2bbf4e 100644 --- a/build/.night-build.yml +++ b/build/.night-build.yml @@ -64,7 +64,7 @@ jobs: buildScript: ./build.sh nightlyBuild: true pool: - vmImage: macOS-10.15 + vmImage: macOS-12 - template: /build/ci/job-template.yml parameters: @@ -117,4 +117,4 @@ jobs: buildScript: build.cmd nightlyBuild: true pool: - vmImage: windows-2019 \ No newline at end of file + vmImage: windows-2019 diff --git a/build/ci/job-template.yml b/build/ci/job-template.yml index 09cb464776..89f81e66eb 100644 --- a/build/ci/job-template.yml +++ b/build/ci/job-template.yml @@ -20,7 +20,7 @@ jobs: ${{ if eq(parameters.nightlyBuild, 'true') }}: timeoutInMinutes: 30 ${{ if and(eq(parameters.nightlyBuild, 'false'), eq(parameters.codeCoverage, 'false')) }}: - timeoutInMinutes: 90 + timeoutInMinutes: 120 ${{ if eq(parameters.codeCoverage, 'true') }}: timeoutInMinutes: 120 cancelTimeoutInMinutes: 10 @@ -239,4 +239,4 @@ jobs: displayName: Clean up runtime folder for package (Unix) - ${{ if eq(parameters.nightlyBuild, 'false') }}: - script: ${{ parameters.buildScript }} /p:Build=false -pack -ci -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} $(testTargetFramework) - displayName: Build Packages \ No newline at end of file + displayName: Build Packages diff --git a/build/vsts-ci.yml b/build/vsts-ci.yml index fca74af788..dc6590f4be 100644 --- a/build/vsts-ci.yml +++ b/build/vsts-ci.yml @@ -119,13 +119,8 @@ jobs: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_MULTILEVEL_LOOKUP: 0 pool: - vmImage: macOS-10.15 + vmImage: macOS-12 steps: - # Work around MacOS Homebrew image/environment bug: https://github.com/actions/virtual-environments/issues/2322#issuecomment-749211076 - - script: | - rm -rf /usr/local/bin/2to3 - displayName: MacOS Homebrew bug Workaround - continueOnError: true - script: brew update && brew unlink python@3.8 && brew install mono-libgdiplus && brew install $(Build.SourcesDirectory)/build/libomp.rb --build-from-source --formula && brew link libomp --force displayName: Install build dependencies - script: ./restore.sh @@ -155,7 +150,7 @@ jobs: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_MULTILEVEL_LOOKUP: 0 pool: - vmImage: macOS-10.15 + vmImage: macOS-12 steps: # Work around MacOS Homebrew image/environment bug: https://github.com/actions/virtual-environments/issues/2322#issuecomment-749211076 - script: | diff --git a/docs/api-reference/algo-details-fasttree.md b/docs/api-reference/algo-details-fasttree.md index 54985d89d2..7bc710e2c7 100644 --- a/docs/api-reference/algo-details-fasttree.md +++ b/docs/api-reference/algo-details-fasttree.md @@ -35,6 +35,6 @@ For more information see: * [Wikipedia: Gradient boosting (Gradient tree boosting).](https://en.wikipedia.org/wiki/Gradient_boosting#Gradient_tree_boosting) * [Greedy function approximation: A gradient boosting -machine.](https://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.aos/1013203451) +machine.](https://projecteuclid.org/journals/annals-of-statistics/volume-29/issue-5/Greedy-function-approximation-A-gradient-boostingmachine/10.1214/aos/1013203451.full) -Check the See Also section for links to examples of the usage. \ No newline at end of file +Check the See Also section for links to examples of the usage. diff --git a/docs/samples/Microsoft.ML.AutoML.Samples/Cifar10.cs b/docs/samples/Microsoft.ML.AutoML.Samples/Cifar10.cs new file mode 100644 index 0000000000..cda207ec09 --- /dev/null +++ b/docs/samples/Microsoft.ML.AutoML.Samples/Cifar10.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace Microsoft.ML.AutoML.Samples +{ + public static class Cifar10 + { + public static string cifar10FolderPath = Path.Combine(Path.GetTempPath(), "cifar10"); + public static string cifar10ZipPath = Path.Combine(Path.GetTempPath(), "cifar10.zip"); + public static string cifar10Url = @"https://github.com/YoongiKim/CIFAR-10-images/archive/refs/heads/master.zip"; + public static string directory = "CIFAR-10-images-master"; + + public static void Run() + { + var imageInputs = Directory.GetFiles(cifar10FolderPath) + .Where(p => Path.GetExtension(p) == ".jpg") + .Select(p => new ModelInput + { + ImagePath = p, + Label = p.Split("\\").SkipLast(1).Last(), + }); + + var testImages = imageInputs.Where(f => f.ImagePath.Contains("test")); + var trainImages = imageInputs.Where(f => f.ImagePath.Contains("train")); + var context = new MLContext(); + context.Log += (e, o) => + { + if (o.Source.StartsWith("AutoMLExperiment")) + Console.WriteLine(o.Message); + }; + + var trainDataset = context.Data.LoadFromEnumerable(trainImages); + var testDataset = context.Data.LoadFromEnumerable(testImages); + var experiment = context.Auto().CreateExperiment(); + var pipeline = context.Auto().Featurizer(trainDataset) + .Append(context.Auto().MultiClassification()); + + experiment.SetDataset(trainDataset, testDataset) + .SetPipeline(pipeline) + .SetMulticlassClassificationMetric(MulticlassClassificationMetric.MicroAccuracy) + .SetTrainingTimeInSeconds(200); + + var result = experiment.Run(); + } + + class ModelInput + { + public string ImagePath { get; set; } + + public string Label { get; set; } + } + } +} diff --git a/docs/samples/Microsoft.ML.AutoML.Samples/Microsoft.ML.AutoML.Samples.csproj b/docs/samples/Microsoft.ML.AutoML.Samples/Microsoft.ML.AutoML.Samples.csproj index 9d511df6a5..1c4da82682 100644 --- a/docs/samples/Microsoft.ML.AutoML.Samples/Microsoft.ML.AutoML.Samples.csproj +++ b/docs/samples/Microsoft.ML.AutoML.Samples/Microsoft.ML.AutoML.Samples.csproj @@ -10,6 +10,7 @@ + diff --git a/docs/samples/Microsoft.ML.AutoML.Samples/Program.cs b/docs/samples/Microsoft.ML.AutoML.Samples/Program.cs index 4342873c64..646c3546ae 100644 --- a/docs/samples/Microsoft.ML.AutoML.Samples/Program.cs +++ b/docs/samples/Microsoft.ML.AutoML.Samples/Program.cs @@ -23,6 +23,9 @@ public static void Main(string[] args) RankingExperiment.Run(); Console.Clear(); + Cifar10.Run(); + Console.Clear(); + Console.WriteLine("Done"); } catch (Exception ex) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/PriorTrainer.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/PriorTrainer.cs index e2c0da3f32..f0225cc34f 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/PriorTrainer.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/PriorTrainer.cs @@ -38,6 +38,27 @@ public static void Example() // Run the model on test data set. var transformedTestData = model.Transform(testData); + +#if true + var predLabelColumn = transformedTestData.Schema["PredictedLabel"]; + var scoreColumn = transformedTestData.Schema["Score"]; + var probColumn = transformedTestData.Schema["Probability"]; + + bool predLabelVal = default(bool); + float scoreVal = default(float); + using (var cursor = transformedTestData.GetRowCursor(new[] { predLabelColumn, scoreColumn, probColumn })) + { + var predLabelGetter = cursor.GetGetter(predLabelColumn); + var scoreGetter = cursor.GetGetter(scoreColumn); + while (cursor.MoveNext()) + { + predLabelGetter(ref predLabelVal); + scoreGetter(ref scoreVal); + Console.WriteLine(($"Got a score {scoreVal} with label {predLabelVal}")); + } + } +#else + // Convert IDataView object to a list. var predictions = mlContext.Data .CreateEnumerable(transformedTestData, @@ -60,6 +81,7 @@ public static void Example() .Evaluate(transformedTestData); PrintMetrics(metrics); +#endif // Expected output: // Accuracy: 0.68 diff --git a/docs/specs/AutoML Experiment API Proposal.md b/docs/specs/AutoML Experiment API Proposal.md new file mode 100644 index 0000000000..1aa5a00d9b --- /dev/null +++ b/docs/specs/AutoML Experiment API Proposal.md @@ -0,0 +1,85 @@ +## Overview +Experiment API is a set of API build to work with `SweepablePipeline`. Its aim is to make the interaction among `Tuner`, `Search Space` and `Sweepable Pipeline` transparent to external customers. + +## Problem +Suppose that you have `sweepable pipeline`, `tuner` and `searchSpace`, and you want to optimize the `sweepable pipeline` over given `searchSpace` using that `tuner`. In order to make that happen, without `Experiment API`, you would need to mannually interact with tuner and searchSpace, building mlnet training pipeline, train and evaluate model, and tracing the best model/parameter. Thus process expose too many details and would not be considered easy-to-use for users to start with. + +```csharp +// this training process just expose too many details. +var pipeline, tuner; + +// search space comes with pipeline. +var searchSpace = pipeline.SearchSpace; + +tuner.SetSearchSpace(searchSPace); +foreach(var parameter in tuner.Proposal()) +{ + // construct ML.Net pipeline from parameter + var mlPipeline = pipeline.BuildTrainingPipeline(parameter); + + // evaluate + var model = mlPipeline.Fit(trainData); + var score = model.Evaluate(testData); + + // code to save best model + if(score > bestScore) + { + bestScore = score; + bestModel = model; + } + + // update tuner with score + tuner.Update(parameter, score); +} +``` + +## Solution: Experiment API + +With Experiment api, we can make `pipeline`, `tuner` and `searchspace` transparent to users so they don't have to know how those parts work with each other. What replaces them is a higher-level concept: `Experiment`. `Experiment` will take the input from users, like training time, searching strategy, train/test/validation dataset, model saving strategy... After all input is given, experiment will take care the rest of training process. + +```csharp +// Experiment api. +var pipeline, tuner; + +var experiment = pipeline.CreateExperiment(trainTime = 100, trainDataset = "train.csv", split = "cv", folds = 10, metric = "AUC", tuner = tuner, monitor = monitor); + +// or fluent-style api +experiment = pipeline.CreateExperiment(); + +experiment.SetTrainingTime(100) + .SetDataset(trainDataset = "train.csv", split = "cv", fold = 10) + .SetEvaluationMetric(metric = "AUC") // or a lambda function which return a score + .SetTuner(tuner) + .SetMonitor(monitor); + +experiment.Run() +monitor.ShowProgress(); + +// trial 1: score ... parameter ... +// trial 2: score ... parameter ... +``` + +### default classifiers and regressors + +It will be useful if we provide an API that returns a combination of all available trainers with default search spaces. + +```csharp +var featurizePipeline + +// regression +var pipeline = featurizePipeline.Append(context.AutoML().Regressors(labelColumn = "label", useLgbm = true, useFastTree = false, ...)); + +// binary classification +var pipeline = featurizePipeline.Append(context.AutoML().BinaryClassification(labelColumn = "label", useLgbm = true, useFastTree = false, ...)); + +// multi-class classification +var pipeline = featurizePipeline.Append(context.AutoML().MultiClassification(labelColumn = "label", useLgbm = true, useFastTree = false, ...)); + +// univariant forecasting +var pipeline = featurizePipeline.Append(context.AutoML().Forcasting(labelColumn = "label", horizon ...)); + +// create Experiment +var exp = pipeline.CreateExperiment(); +... + +``` \ No newline at end of file diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7362ddefe7..7f6d05980b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -7,25 +7,25 @@ - + https://github.com/dotnet/arcade - 569a3f07467a9ebf55b78bbf92ab10b85e597819 + a264eb13fea14125f3ef8d4056586cd66fa55309 - + https://github.com/dotnet/arcade - 569a3f07467a9ebf55b78bbf92ab10b85e597819 + a264eb13fea14125f3ef8d4056586cd66fa55309 - + https://github.com/dotnet/arcade - 569a3f07467a9ebf55b78bbf92ab10b85e597819 + a264eb13fea14125f3ef8d4056586cd66fa55309 - + https://github.com/dotnet/arcade - 569a3f07467a9ebf55b78bbf92ab10b85e597819 + a264eb13fea14125f3ef8d4056586cd66fa55309 - + https://github.com/dotnet/arcade - 569a3f07467a9ebf55b78bbf92ab10b85e597819 + a264eb13fea14125f3ef8d4056586cd66fa55309 https://github.com/dotnet/arcade-services @@ -39,9 +39,9 @@ https://github.com/dotnet/xharness 89cb4b1d368e0f15b4df8e02a176dd1f1c33958b - + https://github.com/dotnet/arcade - 569a3f07467a9ebf55b78bbf92ab10b85e597819 + a264eb13fea14125f3ef8d4056586cd66fa55309 https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index da4fc00545..b5ec1b8096 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -33,17 +33,23 @@ 2.0.0 3.19.4 2.3.1 + 1.7.0 3.3.0 3.9.0 - 1.0.0-beta.22103.1 - 1.0.0-beta.22103.1 + 1.0.0-beta.22314.1 + 1.0.0-beta.22314.1 0.4.1 1.10.0 0.0.0.12 + 0.0.0.12 + 2021.7.0 + 1 + 1 2.1.0 2.1.0 - 10.0.3 + 13.0.1 2.1.3 + 0.0.1 1.3.3 0.20.1 2 @@ -68,7 +74,7 @@ 3.1.0 5.10.2 1.0.1-beta1.20374.2 - 7.0.0-beta.22313.1 + 7.0.0-beta.22327.2 2.1.0 3.0.1 0.0.6-test diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml index 09a223989f..3eb7e2d5f8 100644 --- a/eng/common/templates/steps/send-to-helix.yml +++ b/eng/common/templates/steps/send-to-helix.yml @@ -3,7 +3,7 @@ parameters: HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues + HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group HelixConfiguration: '' # optional -- additional property attached to a job HelixPreCommands: '' # optional -- commands to run before Helix work item execution @@ -12,7 +12,7 @@ parameters: WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner @@ -22,14 +22,14 @@ parameters: DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting int) + HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) Creator: '' # optional -- if the build is external, use this to specify who is sending the job DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' displayName: ${{ parameters.DisplayNamePrefix }} (Windows) env: BuildConfig: $(_BuildConfig) @@ -59,7 +59,7 @@ steps: SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog displayName: ${{ parameters.DisplayNamePrefix }} (Unix) env: BuildConfig: $(_BuildConfig) diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 423bd962e9..395b43eebb 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -573,7 +573,7 @@ function InitializeBuildTool() { ExitWithExitCode 1 } $dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet') - $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'netcoreapp3.1' } + $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net7.0' } } elseif ($msbuildEngine -eq "vs") { try { $msbuildPath = InitializeVisualStudioMSBuild -install:$restore diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 17f0a36580..c110d0ed41 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -312,7 +312,7 @@ function InitializeBuildTool { # return values _InitializeBuildTool="$_InitializeDotNetCli/dotnet" _InitializeBuildToolCommand="msbuild" - _InitializeBuildToolFramework="netcoreapp3.1" + _InitializeBuildToolFramework="net7.0" } # Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116 diff --git a/global.json b/global.json index 7c093b0660..e118d70c2e 100644 --- a/global.json +++ b/global.json @@ -11,8 +11,8 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.22313.1", - "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.22313.1", + "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.22327.2", + "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.22327.2", "Microsoft.Build.Traversal": "2.1.1", "Microsoft.SourceLink.GitHub": "1.1.0-beta-20206-02", "Microsoft.SourceLink.Common": "1.1.0-beta-20206-02" diff --git a/src/Microsoft.Data.Analysis/ColumnArithmeticTemplate.ttinclude b/src/Microsoft.Data.Analysis/ColumnArithmeticTemplate.ttinclude index 4c3e9f332b..bb31da6a94 100644 --- a/src/Microsoft.Data.Analysis/ColumnArithmeticTemplate.ttinclude +++ b/src/Microsoft.Data.Analysis/ColumnArithmeticTemplate.ttinclude @@ -150,7 +150,8 @@ new TypeConfiguration("short", unsupportedMethods: new[] {"All", "Any"}), new TypeConfiguration("uint", classPrefix:"UInt", unsupportedMethods: new[] {"UnaryMinus", "All", "Any"}), new TypeConfiguration("ulong", classPrefix:"ULong", unsupportedMethods: new[] {"UnaryMinus", "All", "Any"}), - new TypeConfiguration("ushort", classPrefix:"UShort", unsupportedMethods: new[] {"UnaryMinus", "All", "Any"}) + new TypeConfiguration("ushort", classPrefix:"UShort", unsupportedMethods: new[] {"UnaryMinus", "All", "Any"}), + new TypeConfiguration("DateTime", supportsBitwise: false, supportsNumeric: false, unsupportedMethods: new[] {"And", "Or", "Xor"}) }; public string GetBinaryShiftOperationReturnType(TypeConfiguration t1) diff --git a/src/Microsoft.Data.Analysis/DataFrame.IO.cs b/src/Microsoft.Data.Analysis/DataFrame.IO.cs index 30f395352c..4f14615b0e 100644 --- a/src/Microsoft.Data.Analysis/DataFrame.IO.cs +++ b/src/Microsoft.Data.Analysis/DataFrame.IO.cs @@ -450,28 +450,25 @@ public static void WriteCsv(DataFrame dataFrame, Stream csvStream, { if (dataFrame != null) { - var columnNames = dataFrame.Columns.GetColumnNames(); - if (header) { - var headerColumns = string.Join(separator.ToString(), columnNames); - csvFile.WriteLine(headerColumns); + WriteHeader(csvFile, dataFrame.Columns.GetColumnNames(), separator); } var record = new StringBuilder(); foreach (var row in dataFrame.Rows) { - bool firstRow = true; + bool firstCell = true; foreach (var cell in row) { - if (!firstRow) + if (!firstCell) { record.Append(separator); } else { - firstRow = false; + firstCell = false; } Type t = cell?.GetType(); @@ -500,6 +497,18 @@ public static void WriteCsv(DataFrame dataFrame, Stream csvStream, continue; } + if (t == typeof(string)) + { + bool needsQuotes = ((string)cell).IndexOf(separator) != -1 || ((string)cell).IndexOf('\n') != -1; + if (needsQuotes) + { + record.Append('\"'); + record.Append(cell); + record.Append('\"'); + continue; + } + } + record.Append(cell); } @@ -510,5 +519,34 @@ public static void WriteCsv(DataFrame dataFrame, Stream csvStream, } } } + private static void WriteHeader(StreamWriter csvFile, IReadOnlyList columnNames, char separator) + { + bool firstColumn = true; + foreach (string name in columnNames) + { + if (!firstColumn) + { + csvFile.Write(separator); + } + else + { + firstColumn = false; + } + + bool needsQuotes = name.IndexOf(separator) != -1 || name.IndexOf('\n') != -1; + if (needsQuotes) + { + csvFile.Write('\"'); + csvFile.Write(name); + csvFile.Write('\"'); + } + else + { + csvFile.Write(name); + } + } + + csvFile.WriteLine(); + } } } diff --git a/src/Microsoft.Data.Analysis/DateTimeDataFrameColumn.cs b/src/Microsoft.Data.Analysis/DateTimeDataFrameColumn.cs new file mode 100644 index 0000000000..2bb875f66c --- /dev/null +++ b/src/Microsoft.Data.Analysis/DateTimeDataFrameColumn.cs @@ -0,0 +1,23 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Data.Analysis +{ + public partial class DateTimeDataFrameColumn : PrimitiveDataFrameColumn + { + public DateTimeDataFrameColumn(string name, IEnumerable values) : base(name, values) { } + + public DateTimeDataFrameColumn(string name, IEnumerable values) : base(name, values) { } + + public DateTimeDataFrameColumn(string name, long length = 0) : base(name, length) { } + + public DateTimeDataFrameColumn(string name, ReadOnlyMemory buffer, ReadOnlyMemory nullBitMap, int length = 0, int nullCount = 0) : base(name, buffer, nullBitMap, length, nullCount) { } + + internal DateTimeDataFrameColumn(string name, PrimitiveColumnContainer values) : base(name, values) { } + } +} diff --git a/src/Microsoft.Data.Analysis/IDataView.Extension.cs b/src/Microsoft.Data.Analysis/IDataView.Extension.cs index 32b97d365a..aae5c38e63 100644 --- a/src/Microsoft.Data.Analysis/IDataView.Extension.cs +++ b/src/Microsoft.Data.Analysis/IDataView.Extension.cs @@ -68,6 +68,10 @@ public static DataFrame ToDataFrame(this IDataView dataView, long maxRows, param { dataFrameColumns.Add(new BooleanDataFrameColumn(dataViewColumn.Name)); } + else if (type == DateTimeDataViewType.Instance) + { + dataFrameColumns.Add(new DateTimeDataFrameColumn(dataViewColumn.Name)); + } else if (type == NumberDataViewType.Byte) { dataFrameColumns.Add(new ByteDataFrameColumn(dataViewColumn.Name)); diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationAPIs.ExplodedColumns.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationAPIs.ExplodedColumns.cs index 51258d1d77..25f36cfdf9 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationAPIs.ExplodedColumns.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationAPIs.ExplodedColumns.cs @@ -12248,6 +12248,33 @@ public BooleanDataFrameColumn ElementwiseLessThan(UInt16DataFrameColumn column) return ElementwiseLessThanImplementation(column); } } + public partial class DateTimeDataFrameColumn + { + public BooleanDataFrameColumn ElementwiseEquals(DateTimeDataFrameColumn column) + { + return ElementwiseEqualsImplementation(column); + } + public BooleanDataFrameColumn ElementwiseNotEquals(DateTimeDataFrameColumn column) + { + return ElementwiseNotEqualsImplementation(column); + } + public BooleanDataFrameColumn ElementwiseGreaterThanOrEqual(DateTimeDataFrameColumn column) + { + return ElementwiseGreaterThanOrEqualImplementation(column); + } + public BooleanDataFrameColumn ElementwiseLessThanOrEqual(DateTimeDataFrameColumn column) + { + return ElementwiseLessThanOrEqualImplementation(column); + } + public BooleanDataFrameColumn ElementwiseGreaterThan(DateTimeDataFrameColumn column) + { + return ElementwiseGreaterThanImplementation(column); + } + public BooleanDataFrameColumn ElementwiseLessThan(DateTimeDataFrameColumn column) + { + return ElementwiseLessThanImplementation(column); + } + } public partial class BooleanDataFrameColumn { public BooleanDataFrameColumn ElementwiseEquals(bool value) @@ -15692,6 +15719,33 @@ public BooleanDataFrameColumn ElementwiseLessThan(ushort value) return ElementwiseLessThanImplementation(value); } } + public partial class DateTimeDataFrameColumn + { + public BooleanDataFrameColumn ElementwiseEquals(DateTime value) + { + return ElementwiseEqualsImplementation(value); + } + public BooleanDataFrameColumn ElementwiseNotEquals(DateTime value) + { + return ElementwiseNotEqualsImplementation(value); + } + public BooleanDataFrameColumn ElementwiseGreaterThanOrEqual(DateTime value) + { + return ElementwiseGreaterThanOrEqualImplementation(value); + } + public BooleanDataFrameColumn ElementwiseLessThanOrEqual(DateTime value) + { + return ElementwiseLessThanOrEqualImplementation(value); + } + public BooleanDataFrameColumn ElementwiseGreaterThan(DateTime value) + { + return ElementwiseGreaterThanImplementation(value); + } + public BooleanDataFrameColumn ElementwiseLessThan(DateTime value) + { + return ElementwiseLessThanImplementation(value); + } + } public partial class ByteDataFrameColumn { diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationImplementations.Exploded.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationImplementations.Exploded.cs index 9dd963a338..af3ac7e5ee 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationImplementations.Exploded.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperationImplementations.Exploded.cs @@ -1204,6 +1204,15 @@ internal BooleanDataFrameColumn ElementwiseEqualsImplementation(UInt16DataFrameC return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseEqualsImplementation(DateTimeDataFrameColumn column) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseEquals(column.ColumnContainer, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseEqualsImplementation(bool value) @@ -1312,6 +1321,15 @@ internal BooleanDataFrameColumn ElementwiseEqualsImplementation(ushort value) return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseEqualsImplementation(DateTime value) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseEquals(value, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseNotEqualsImplementation(BooleanDataFrameColumn column) @@ -1420,6 +1438,15 @@ internal BooleanDataFrameColumn ElementwiseNotEqualsImplementation(UInt16DataFra return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseNotEqualsImplementation(DateTimeDataFrameColumn column) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseNotEquals(column.ColumnContainer, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseNotEqualsImplementation(bool value) @@ -1528,6 +1555,15 @@ internal BooleanDataFrameColumn ElementwiseNotEqualsImplementation(ushort value) return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseNotEqualsImplementation(DateTime value) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseNotEquals(value, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseGreaterThanOrEqualImplementation(BooleanDataFrameColumn column) @@ -1636,6 +1672,15 @@ internal BooleanDataFrameColumn ElementwiseGreaterThanOrEqualImplementation(UInt return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseGreaterThanOrEqualImplementation(DateTimeDataFrameColumn column) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseGreaterThanOrEqual(column.ColumnContainer, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseGreaterThanOrEqualImplementation(bool value) @@ -1744,6 +1789,15 @@ internal BooleanDataFrameColumn ElementwiseGreaterThanOrEqualImplementation(usho return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseGreaterThanOrEqualImplementation(DateTime value) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseGreaterThanOrEqual(value, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseLessThanOrEqualImplementation(BooleanDataFrameColumn column) @@ -1852,6 +1906,15 @@ internal BooleanDataFrameColumn ElementwiseLessThanOrEqualImplementation(UInt16D return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseLessThanOrEqualImplementation(DateTimeDataFrameColumn column) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseLessThanOrEqual(column.ColumnContainer, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseLessThanOrEqualImplementation(bool value) @@ -1960,6 +2023,15 @@ internal BooleanDataFrameColumn ElementwiseLessThanOrEqualImplementation(ushort return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseLessThanOrEqualImplementation(DateTime value) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseLessThanOrEqual(value, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseGreaterThanImplementation(BooleanDataFrameColumn column) @@ -2068,6 +2140,15 @@ internal BooleanDataFrameColumn ElementwiseGreaterThanImplementation(UInt16DataF return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseGreaterThanImplementation(DateTimeDataFrameColumn column) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseGreaterThan(column.ColumnContainer, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseGreaterThanImplementation(bool value) @@ -2176,6 +2257,15 @@ internal BooleanDataFrameColumn ElementwiseGreaterThanImplementation(ushort valu return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseGreaterThanImplementation(DateTime value) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseGreaterThan(value, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseLessThanImplementation(BooleanDataFrameColumn column) @@ -2284,6 +2374,15 @@ internal BooleanDataFrameColumn ElementwiseLessThanImplementation(UInt16DataFram return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseLessThanImplementation(DateTimeDataFrameColumn column) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseLessThan(column.ColumnContainer, newColumn.ColumnContainer); + return newColumn; + } + } public partial class BooleanDataFrameColumn { internal BooleanDataFrameColumn ElementwiseLessThanImplementation(bool value) @@ -2392,4 +2491,13 @@ internal BooleanDataFrameColumn ElementwiseLessThanImplementation(ushort value) return newColumn; } } + public partial class DateTimeDataFrameColumn + { + internal BooleanDataFrameColumn ElementwiseLessThanImplementation(DateTime value) + { + BooleanDataFrameColumn newColumn = CloneAsBooleanColumn(); + ColumnContainer.ElementwiseLessThan(value, newColumn.ColumnContainer); + return newColumn; + } + } } diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.tt b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.tt index 33f0a0ad72..b1ea4e40bb 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.tt +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.tt @@ -86,10 +86,15 @@ public static class ComparisonOperationCombinations { continue; } + // Bool should only compare with bool, DateTime only with DateTime if (type.TypeName == "bool" && innerType.TypeName != "bool") { continue; } + if (type.TypeName == "DateTime" && innerType.TypeName != "DateTime") + { + continue; + } if (type.SupportsNumeric != innerType.SupportsNumeric) { continue; diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.ttinclude b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.ttinclude index 23a88d1f12..946e0a7e12 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.ttinclude +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.Combinations.ttinclude @@ -266,6 +266,7 @@ public static class ComparisonOperationCombinations new TypeCombination("ushort", "uint", "bool"), new TypeCombination("ushort", "ulong", "bool"), new TypeCombination("ushort", "ushort", "bool"), + new TypeCombination("DateTime", "DateTime", "bool"), }; } #> diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs index 6a77e49ad4..fc265060ae 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs @@ -45,6 +45,8 @@ public override DataFrameColumn Add(DataFrameColumn column, bool inPlace = false return AddImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return AddImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return AddImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -90,6 +92,8 @@ public override DataFrameColumn Subtract(DataFrameColumn column, bool inPlace = return SubtractImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return SubtractImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return SubtractImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -135,6 +139,8 @@ public override DataFrameColumn Multiply(DataFrameColumn column, bool inPlace = return MultiplyImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return MultiplyImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return MultiplyImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -180,6 +186,8 @@ public override DataFrameColumn Divide(DataFrameColumn column, bool inPlace = fa return DivideImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return DivideImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return DivideImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -225,6 +233,8 @@ public override DataFrameColumn Modulo(DataFrameColumn column, bool inPlace = fa return ModuloImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return ModuloImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return ModuloImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -270,6 +280,8 @@ public override DataFrameColumn And(DataFrameColumn column, bool inPlace = false return AndImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return AndImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return AndImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -310,6 +322,8 @@ public override DataFrameColumn Or(DataFrameColumn column, bool inPlace = false) return OrImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return OrImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return OrImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -350,6 +364,8 @@ public override DataFrameColumn Xor(DataFrameColumn column, bool inPlace = false return XorImplementation(column as PrimitiveDataFrameColumn, inPlace); case PrimitiveDataFrameColumn ushortColumn: return XorImplementation(column as PrimitiveDataFrameColumn, inPlace); + case PrimitiveDataFrameColumn DateTimeColumn: + return XorImplementation(column as PrimitiveDataFrameColumn, inPlace); default: throw new NotSupportedException(); } @@ -400,6 +416,8 @@ public override PrimitiveDataFrameColumn ElementwiseEquals(DataFrameColumn return ElementwiseEqualsImplementation(column as PrimitiveDataFrameColumn); case PrimitiveDataFrameColumn ushortColumn: return ElementwiseEqualsImplementation(column as PrimitiveDataFrameColumn); + case PrimitiveDataFrameColumn DateTimeColumn: + return ElementwiseEqualsImplementation(column as PrimitiveDataFrameColumn); default: throw new NotSupportedException(); } @@ -445,6 +463,8 @@ public override PrimitiveDataFrameColumn ElementwiseNotEquals(DataFrameCol return ElementwiseNotEqualsImplementation(column as PrimitiveDataFrameColumn); case PrimitiveDataFrameColumn ushortColumn: return ElementwiseNotEqualsImplementation(column as PrimitiveDataFrameColumn); + case PrimitiveDataFrameColumn DateTimeColumn: + return ElementwiseNotEqualsImplementation(column as PrimitiveDataFrameColumn); default: throw new NotSupportedException(); } @@ -490,6 +510,8 @@ public override PrimitiveDataFrameColumn ElementwiseGreaterThanOrEqual(Dat return ElementwiseGreaterThanOrEqualImplementation(column as PrimitiveDataFrameColumn); case PrimitiveDataFrameColumn ushortColumn: return ElementwiseGreaterThanOrEqualImplementation(column as PrimitiveDataFrameColumn); + case PrimitiveDataFrameColumn DateTimeColumn: + return ElementwiseGreaterThanOrEqualImplementation(column as PrimitiveDataFrameColumn); default: throw new NotSupportedException(); } @@ -535,6 +557,8 @@ public override PrimitiveDataFrameColumn ElementwiseLessThanOrEqual(DataFr return ElementwiseLessThanOrEqualImplementation(column as PrimitiveDataFrameColumn); case PrimitiveDataFrameColumn ushortColumn: return ElementwiseLessThanOrEqualImplementation(column as PrimitiveDataFrameColumn); + case PrimitiveDataFrameColumn DateTimeColumn: + return ElementwiseLessThanOrEqualImplementation(column as PrimitiveDataFrameColumn); default: throw new NotSupportedException(); } @@ -580,6 +604,8 @@ public override PrimitiveDataFrameColumn ElementwiseGreaterThan(DataFrameC return ElementwiseGreaterThanImplementation(column as PrimitiveDataFrameColumn); case PrimitiveDataFrameColumn ushortColumn: return ElementwiseGreaterThanImplementation(column as PrimitiveDataFrameColumn); + case PrimitiveDataFrameColumn DateTimeColumn: + return ElementwiseGreaterThanImplementation(column as PrimitiveDataFrameColumn); default: throw new NotSupportedException(); } @@ -625,6 +651,8 @@ public override PrimitiveDataFrameColumn ElementwiseLessThan(DataFrameColu return ElementwiseLessThanImplementation(column as PrimitiveDataFrameColumn); case PrimitiveDataFrameColumn ushortColumn: return ElementwiseLessThanImplementation(column as PrimitiveDataFrameColumn); + case PrimitiveDataFrameColumn DateTimeColumn: + return ElementwiseLessThanImplementation(column as PrimitiveDataFrameColumn); default: throw new NotSupportedException(); } @@ -674,6 +702,8 @@ internal DataFrameColumn AddImplementation(PrimitiveDataFrameColumn column decimalColumn._columnContainer.Add(column.CloneAsDecimalColumn()._columnContainer); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -749,6 +779,8 @@ internal DataFrameColumn AddImplementation(U value, bool inPlace) decimalColumn._columnContainer.Add(DecimalConverter.Instance.GetDecimal(value)); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -829,6 +861,8 @@ internal DataFrameColumn SubtractImplementation(PrimitiveDataFrameColumn c decimalColumn._columnContainer.Subtract(column.CloneAsDecimalColumn()._columnContainer); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -904,6 +938,8 @@ internal DataFrameColumn SubtractImplementation(U value, bool inPlace) decimalColumn._columnContainer.Subtract(DecimalConverter.Instance.GetDecimal(value)); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -984,6 +1020,8 @@ internal DataFrameColumn MultiplyImplementation(PrimitiveDataFrameColumn c decimalColumn._columnContainer.Multiply(column.CloneAsDecimalColumn()._columnContainer); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1059,6 +1097,8 @@ internal DataFrameColumn MultiplyImplementation(U value, bool inPlace) decimalColumn._columnContainer.Multiply(DecimalConverter.Instance.GetDecimal(value)); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1139,6 +1179,8 @@ internal DataFrameColumn DivideImplementation(PrimitiveDataFrameColumn col decimalColumn._columnContainer.Divide(column.CloneAsDecimalColumn()._columnContainer); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1214,6 +1256,8 @@ internal DataFrameColumn DivideImplementation(U value, bool inPlace) decimalColumn._columnContainer.Divide(DecimalConverter.Instance.GetDecimal(value)); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1294,6 +1338,8 @@ internal DataFrameColumn ModuloImplementation(PrimitiveDataFrameColumn col decimalColumn._columnContainer.Modulo(column.CloneAsDecimalColumn()._columnContainer); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1369,6 +1415,8 @@ internal DataFrameColumn ModuloImplementation(U value, bool inPlace) decimalColumn._columnContainer.Modulo(DecimalConverter.Instance.GetDecimal(value)); return decimalColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1445,6 +1493,7 @@ internal DataFrameColumn AndImplementation(PrimitiveDataFrameColumn column case Type uintType when uintType == typeof(uint): case Type ulongType when ulongType == typeof(ulong): case Type ushortType when ushortType == typeof(ushort): + case Type DateTimeType when DateTimeType == typeof(DateTime): default: throw new NotSupportedException(); } @@ -1474,6 +1523,7 @@ internal PrimitiveDataFrameColumn AndImplementation(U value, bool inPla case Type uintType when uintType == typeof(uint): case Type ulongType when ulongType == typeof(ulong): case Type ushortType when ushortType == typeof(ushort): + case Type DateTimeType when DateTimeType == typeof(DateTime): default: throw new NotSupportedException(); } @@ -1508,6 +1558,7 @@ internal DataFrameColumn OrImplementation(PrimitiveDataFrameColumn column, case Type uintType when uintType == typeof(uint): case Type ulongType when ulongType == typeof(ulong): case Type ushortType when ushortType == typeof(ushort): + case Type DateTimeType when DateTimeType == typeof(DateTime): default: throw new NotSupportedException(); } @@ -1537,6 +1588,7 @@ internal PrimitiveDataFrameColumn OrImplementation(U value, bool inPlac case Type uintType when uintType == typeof(uint): case Type ulongType when ulongType == typeof(ulong): case Type ushortType when ushortType == typeof(ushort): + case Type DateTimeType when DateTimeType == typeof(DateTime): default: throw new NotSupportedException(); } @@ -1571,6 +1623,7 @@ internal DataFrameColumn XorImplementation(PrimitiveDataFrameColumn column case Type uintType when uintType == typeof(uint): case Type ulongType when ulongType == typeof(ulong): case Type ushortType when ushortType == typeof(ushort): + case Type DateTimeType when DateTimeType == typeof(DateTime): default: throw new NotSupportedException(); } @@ -1600,6 +1653,7 @@ internal PrimitiveDataFrameColumn XorImplementation(U value, bool inPla case Type uintType when uintType == typeof(uint): case Type ulongType when ulongType == typeof(ulong): case Type ushortType when ushortType == typeof(ushort): + case Type DateTimeType when DateTimeType == typeof(DateTime): default: throw new NotSupportedException(); } @@ -1661,6 +1715,8 @@ internal DataFrameColumn LeftShiftImplementation(int value, bool inPlace) PrimitiveDataFrameColumn newushortColumn = inPlace ? ushortColumn : ushortColumn.Clone(); newushortColumn._columnContainer.LeftShift(value); return newushortColumn; + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); default: throw new NotSupportedException(); } @@ -1722,6 +1778,8 @@ internal DataFrameColumn RightShiftImplementation(int value, bool inPlace) PrimitiveDataFrameColumn newushortColumn = inPlace ? ushortColumn : ushortColumn.Clone(); newushortColumn._columnContainer.RightShift(value); return newushortColumn; + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); default: throw new NotSupportedException(); } @@ -1740,9 +1798,9 @@ internal PrimitiveDataFrameColumn ElementwiseEqualsImplementation(Primi { throw new NotSupportedException(); } - PrimitiveDataFrameColumn retColumn = CloneAsBooleanColumn(); - (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(column._columnContainer, retColumn._columnContainer); - return retColumn; + PrimitiveDataFrameColumn retboolColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(column._columnContainer, retboolColumn._columnContainer); + return retboolColumn; case Type decimalType when decimalType == typeof(decimal): if (typeof(U) == typeof(bool)) { @@ -1763,6 +1821,14 @@ internal PrimitiveDataFrameColumn ElementwiseEqualsImplementation(Primi decimalColumn._columnContainer.ElementwiseEquals(column.CloneAsDecimalColumn()._columnContainer, newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + if (typeof(U) != typeof(DateTime)) + { + throw new NotSupportedException(); + } + PrimitiveDataFrameColumn retDateTimeColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(column._columnContainer, retDateTimeColumn._columnContainer); + return retDateTimeColumn; case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1816,9 +1882,9 @@ internal PrimitiveDataFrameColumn ElementwiseEqualsImplementation(U val { throw new NotSupportedException(); } - PrimitiveDataFrameColumn retColumn = CloneAsBooleanColumn(); - (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(Unsafe.As(ref value), retColumn._columnContainer); - return retColumn; + PrimitiveDataFrameColumn retboolColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(Unsafe.As(ref value), retboolColumn._columnContainer); + return retboolColumn; case Type decimalType when decimalType == typeof(decimal): if (typeof(U) == typeof(bool)) { @@ -1839,6 +1905,14 @@ internal PrimitiveDataFrameColumn ElementwiseEqualsImplementation(U val decimalColumn._columnContainer.ElementwiseEquals(DecimalConverter.Instance.GetDecimal(value), newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + if (typeof(U) != typeof(DateTime)) + { + throw new NotSupportedException(); + } + PrimitiveDataFrameColumn retDateTimeColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(Unsafe.As(ref value), retDateTimeColumn._columnContainer); + return retDateTimeColumn; case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1897,9 +1971,9 @@ internal PrimitiveDataFrameColumn ElementwiseNotEqualsImplementation(Pr { throw new NotSupportedException(); } - PrimitiveDataFrameColumn retColumn = CloneAsBooleanColumn(); - (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(column._columnContainer, retColumn._columnContainer); - return retColumn; + PrimitiveDataFrameColumn retboolColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(column._columnContainer, retboolColumn._columnContainer); + return retboolColumn; case Type decimalType when decimalType == typeof(decimal): if (typeof(U) == typeof(bool)) { @@ -1920,6 +1994,14 @@ internal PrimitiveDataFrameColumn ElementwiseNotEqualsImplementation(Pr decimalColumn._columnContainer.ElementwiseNotEquals(column.CloneAsDecimalColumn()._columnContainer, newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + if (typeof(U) != typeof(DateTime)) + { + throw new NotSupportedException(); + } + PrimitiveDataFrameColumn retDateTimeColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(column._columnContainer, retDateTimeColumn._columnContainer); + return retDateTimeColumn; case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -1973,9 +2055,9 @@ internal PrimitiveDataFrameColumn ElementwiseNotEqualsImplementation(U { throw new NotSupportedException(); } - PrimitiveDataFrameColumn retColumn = CloneAsBooleanColumn(); - (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(Unsafe.As(ref value), retColumn._columnContainer); - return retColumn; + PrimitiveDataFrameColumn retboolColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(Unsafe.As(ref value), retboolColumn._columnContainer); + return retboolColumn; case Type decimalType when decimalType == typeof(decimal): if (typeof(U) == typeof(bool)) { @@ -1996,6 +2078,14 @@ internal PrimitiveDataFrameColumn ElementwiseNotEqualsImplementation(U decimalColumn._columnContainer.ElementwiseNotEquals(DecimalConverter.Instance.GetDecimal(value), newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + if (typeof(U) != typeof(DateTime)) + { + throw new NotSupportedException(); + } + PrimitiveDataFrameColumn retDateTimeColumn = CloneAsBooleanColumn(); + (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(Unsafe.As(ref value), retDateTimeColumn._columnContainer); + return retDateTimeColumn; case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2071,6 +2161,8 @@ internal PrimitiveDataFrameColumn ElementwiseGreaterThanOrEqualImplementat decimalColumn._columnContainer.ElementwiseGreaterThanOrEqual(column.CloneAsDecimalColumn()._columnContainer, newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2141,6 +2233,8 @@ internal PrimitiveDataFrameColumn ElementwiseGreaterThanOrEqualImplementat decimalColumn._columnContainer.ElementwiseGreaterThanOrEqual(DecimalConverter.Instance.GetDecimal(value), newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2216,6 +2310,8 @@ internal PrimitiveDataFrameColumn ElementwiseLessThanOrEqualImplementation decimalColumn._columnContainer.ElementwiseLessThanOrEqual(column.CloneAsDecimalColumn()._columnContainer, newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2286,6 +2382,8 @@ internal PrimitiveDataFrameColumn ElementwiseLessThanOrEqualImplementation decimalColumn._columnContainer.ElementwiseLessThanOrEqual(DecimalConverter.Instance.GetDecimal(value), newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2361,6 +2459,8 @@ internal PrimitiveDataFrameColumn ElementwiseGreaterThanImplementation( decimalColumn._columnContainer.ElementwiseGreaterThan(column.CloneAsDecimalColumn()._columnContainer, newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2431,6 +2531,8 @@ internal PrimitiveDataFrameColumn ElementwiseGreaterThanImplementation( decimalColumn._columnContainer.ElementwiseGreaterThan(DecimalConverter.Instance.GetDecimal(value), newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2506,6 +2608,8 @@ internal PrimitiveDataFrameColumn ElementwiseLessThanImplementation(Pri decimalColumn._columnContainer.ElementwiseLessThan(column.CloneAsDecimalColumn()._columnContainer, newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2576,6 +2680,8 @@ internal PrimitiveDataFrameColumn ElementwiseLessThanImplementation(U v decimalColumn._columnContainer.ElementwiseLessThan(DecimalConverter.Instance.GetDecimal(value), newColumn._columnContainer); return newColumn; } + case Type DateTimeType when DateTimeType == typeof(DateTime): + throw new NotSupportedException(); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt index 6809de48d1..bbe3cdbb0f 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt @@ -169,32 +169,32 @@ namespace Microsoft.Data.Analysis switch (typeof(T)) { <# foreach (TypeConfiguration type in typeConfiguration) { #> -<# if (type.TypeName == "bool") { #> +<# if (type.TypeName == "bool" || type.TypeName == "DateTime") { #> case Type <#=type.TypeName#>Type when <#=type.TypeName#>Type == typeof(<#=type.TypeName#>): <# if (method.IsNumeric == true) { #> throw new NotSupportedException(); <# } else { #> - if (typeof(U) != typeof(bool)) + if (typeof(U) != typeof(<#=type.TypeName#>)) { throw new NotSupportedException(); } <# if (method.MethodType == MethodType.ComparisonScalar || method.MethodType == MethodType.Comparison) { #> - PrimitiveDataFrameColumn retColumn = CloneAsBooleanColumn(); + PrimitiveDataFrameColumn ret<#=type.TypeName#>Column = CloneAsBooleanColumn(); <# if (method.MethodType == MethodType.ComparisonScalar) { #> - (this as PrimitiveDataFrameColumn)._columnContainer.<#=method.MethodName#>(Unsafe.As(ref value), retColumn._columnContainer); + (this as PrimitiveDataFrameColumn)._columnContainer.<#=method.MethodName#>(Unsafe.As(ref value), ret<#=type.TypeName#>Column._columnContainer); <# } else { #> - (this as PrimitiveDataFrameColumn)._columnContainer.<#=method.MethodName#>(column._columnContainer, retColumn._columnContainer); + (this as PrimitiveDataFrameColumn)._columnContainer.<#=method.MethodName#>(column._columnContainer, ret<#=type.TypeName#>Column._columnContainer); <# } #> <# } else if (method.MethodType == MethodType.BinaryScalar) {#> PrimitiveDataFrameColumn column = this as PrimitiveDataFrameColumn; - PrimitiveDataFrameColumn retColumn = <#=GenerateInPlaceStatement("column", "column.Clone()")#>; - retColumn._columnContainer.<#=method.MethodName#>(value); + PrimitiveDataFrameColumn ret<#=type.TypeName#>Column = <#=GenerateInPlaceStatement("column", "column.Clone()")#>; + ret<#=type.TypeName#>Column._columnContainer.<#=method.MethodName#>(value); <# } else { #> PrimitiveDataFrameColumn column = this as PrimitiveDataFrameColumn; - PrimitiveDataFrameColumn retColumn = <#=GenerateInPlaceStatement("column", "column.Clone()")#>; - retColumn._columnContainer.<#=method.MethodName#>(column._columnContainer); + PrimitiveDataFrameColumn ret<#=type.TypeName#>Column = <#=GenerateInPlaceStatement("column", "column.Clone()")#>; + ret<#=type.TypeName#>Column._columnContainer.<#=method.MethodName#>(column._columnContainer); <# } #> - return retColumn; + return ret<#=type.TypeName#>Column; <# } #> <# } else if (type.TypeName == "decimal") { #> case Type <#=type.TypeName#>Type when <#=type.TypeName#>Type == typeof(<#=type.TypeName#>): @@ -231,7 +231,7 @@ namespace Microsoft.Data.Analysis return newColumn; <# } #> } - else + else { <# if (method.MethodType == MethodType.BinaryScalar) { #> if (inPlace) @@ -314,7 +314,7 @@ namespace Microsoft.Data.Analysis return newColumn; <# } #> } - else + else { <# if (method.MethodType == MethodType.BinaryScalar) { #> if (inPlace) diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.cs index 80f003cd68..3cc07217e3 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.cs @@ -55,6 +55,7 @@ public override DataFrameColumn ReverseAdd(U value, bool inPlace = false) case PrimitiveDataFrameColumn uintColumn: case PrimitiveDataFrameColumn ulongColumn: case PrimitiveDataFrameColumn ushortColumn: + case PrimitiveDataFrameColumn DateTimeColumn: if (typeof(U) == typeof(bool)) { throw new NotSupportedException(); @@ -129,6 +130,7 @@ public override DataFrameColumn ReverseSubtract(U value, bool inPlace = false case PrimitiveDataFrameColumn uintColumn: case PrimitiveDataFrameColumn ulongColumn: case PrimitiveDataFrameColumn ushortColumn: + case PrimitiveDataFrameColumn DateTimeColumn: if (typeof(U) == typeof(bool)) { throw new NotSupportedException(); @@ -203,6 +205,7 @@ public override DataFrameColumn ReverseMultiply(U value, bool inPlace = false case PrimitiveDataFrameColumn uintColumn: case PrimitiveDataFrameColumn ulongColumn: case PrimitiveDataFrameColumn ushortColumn: + case PrimitiveDataFrameColumn DateTimeColumn: if (typeof(U) == typeof(bool)) { throw new NotSupportedException(); @@ -277,6 +280,7 @@ public override DataFrameColumn ReverseDivide(U value, bool inPlace = false) case PrimitiveDataFrameColumn uintColumn: case PrimitiveDataFrameColumn ulongColumn: case PrimitiveDataFrameColumn ushortColumn: + case PrimitiveDataFrameColumn DateTimeColumn: if (typeof(U) == typeof(bool)) { throw new NotSupportedException(); @@ -351,6 +355,7 @@ public override DataFrameColumn ReverseModulo(U value, bool inPlace = false) case PrimitiveDataFrameColumn uintColumn: case PrimitiveDataFrameColumn ulongColumn: case PrimitiveDataFrameColumn ushortColumn: + case PrimitiveDataFrameColumn DateTimeColumn: if (typeof(U) == typeof(bool)) { throw new NotSupportedException(); @@ -396,7 +401,6 @@ public override PrimitiveDataFrameColumn ReverseAnd(bool value, bool inPla return retColumn; default: throw new NotSupportedException(); - } } /// @@ -410,7 +414,6 @@ public override PrimitiveDataFrameColumn ReverseOr(bool value, bool inPlac return retColumn; default: throw new NotSupportedException(); - } } /// @@ -424,10 +427,7 @@ public override PrimitiveDataFrameColumn ReverseXor(bool value, bool inPla return retColumn; default: throw new NotSupportedException(); - } } - - } } diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.tt b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.tt index 68382f5b92..6bb592486e 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.tt +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.ReversedBinaryOperations.tt @@ -40,7 +40,6 @@ namespace Microsoft.Data.Analysis return retColumn; default: throw new NotSupportedException(); - } <# } else { #> switch (this) @@ -113,7 +112,5 @@ namespace Microsoft.Data.Analysis } <# } #> <# } #> - - } } diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.cs index 730b8ddfd6..3cd6799780 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.cs @@ -282,7 +282,7 @@ public override long NullCount public override bool IsNumericColumn() { bool ret = true; - if (typeof(T) == typeof(char) || typeof(T) == typeof(bool)) + if (typeof(T) == typeof(char) || typeof(T) == typeof(bool) || typeof(T) == typeof(DateTime)) ret = false; return ret; } @@ -325,7 +325,10 @@ public override DataFrame ValueCounts() } /// - public override bool HasDescription() => IsNumericColumn(); + public override bool HasDescription() + { + return this.IsNumericColumn() || typeof(T) == typeof(DateTime); + } /// /// Returns a preview of the column contents as a formatted string. @@ -701,6 +704,10 @@ private static DataViewType GetDataViewType() { return NumberDataViewType.Double; } + else if (typeof(T) == typeof(DateTime)) + { + return DateTimeDataViewType.Instance; + } else if (typeof(T) == typeof(float)) { return NumberDataViewType.Single; @@ -744,7 +751,7 @@ private static DataViewType GetDataViewType() return NumberDataViewType.Double; } - throw new NotSupportedException(); + throw new NotSupportedException("Type is " + typeof(T).Name); } protected internal override Delegate GetDataViewGetter(DataViewRowCursor cursor) diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs index 84dd3bdec4..f432805185 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs @@ -116,6 +116,10 @@ public static IPrimitiveDataFrameColumnArithmetic GetArithmetic() { return (IPrimitiveDataFrameColumnArithmetic)new UShortArithmetic(); } + else if (typeof(T) == typeof(DateTime)) + { + return (IPrimitiveDataFrameColumnArithmetic)new DateTimeArithmetic(); + } throw new NotSupportedException(); } } @@ -130,7 +134,6 @@ public void Add(PrimitiveColumnContainer column, bool scalar) { throw new NotSupportedException(); } - public void Add(bool scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -143,7 +146,6 @@ public void Subtract(PrimitiveColumnContainer column, bool scalar) { throw new NotSupportedException(); } - public void Subtract(bool scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -156,7 +158,6 @@ public void Multiply(PrimitiveColumnContainer column, bool scalar) { throw new NotSupportedException(); } - public void Multiply(bool scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -169,7 +170,6 @@ public void Divide(PrimitiveColumnContainer column, bool scalar) { throw new NotSupportedException(); } - public void Divide(bool scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -182,7 +182,6 @@ public void Modulo(PrimitiveColumnContainer column, bool scalar) { throw new NotSupportedException(); } - public void Modulo(bool scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -216,7 +215,6 @@ public void And(PrimitiveColumnContainer column, bool scalar) } } } - public void And(bool scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -260,7 +258,6 @@ public void Or(PrimitiveColumnContainer column, bool scalar) } } } - public void Or(bool scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -304,7 +301,6 @@ public void Xor(PrimitiveColumnContainer column, bool scalar) } } } - public void Xor(bool scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -449,7 +445,6 @@ public void Add(PrimitiveColumnContainer column, byte scalar) } } } - public void Add(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -493,7 +488,6 @@ public void Subtract(PrimitiveColumnContainer column, byte scalar) } } } - public void Subtract(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -537,7 +531,6 @@ public void Multiply(PrimitiveColumnContainer column, byte scalar) } } } - public void Multiply(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -581,7 +574,6 @@ public void Divide(PrimitiveColumnContainer column, byte scalar) } } } - public void Divide(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -625,7 +617,6 @@ public void Modulo(PrimitiveColumnContainer column, byte scalar) } } } - public void Modulo(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -669,7 +660,6 @@ public void And(PrimitiveColumnContainer column, byte scalar) } } } - public void And(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -713,7 +703,6 @@ public void Or(PrimitiveColumnContainer column, byte scalar) } } } - public void Or(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -757,7 +746,6 @@ public void Xor(PrimitiveColumnContainer column, byte scalar) } } } - public void Xor(byte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1006,7 +994,6 @@ public void Add(PrimitiveColumnContainer column, char scalar) } } } - public void Add(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1050,7 +1037,6 @@ public void Subtract(PrimitiveColumnContainer column, char scalar) } } } - public void Subtract(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1094,7 +1080,6 @@ public void Multiply(PrimitiveColumnContainer column, char scalar) } } } - public void Multiply(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1138,7 +1123,6 @@ public void Divide(PrimitiveColumnContainer column, char scalar) } } } - public void Divide(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1182,7 +1166,6 @@ public void Modulo(PrimitiveColumnContainer column, char scalar) } } } - public void Modulo(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1226,7 +1209,6 @@ public void And(PrimitiveColumnContainer column, char scalar) } } } - public void And(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1270,7 +1252,6 @@ public void Or(PrimitiveColumnContainer column, char scalar) } } } - public void Or(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1314,7 +1295,6 @@ public void Xor(PrimitiveColumnContainer column, char scalar) } } } - public void Xor(char scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1563,7 +1543,6 @@ public void Add(PrimitiveColumnContainer column, decimal scalar) } } } - public void Add(decimal scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1607,7 +1586,6 @@ public void Subtract(PrimitiveColumnContainer column, decimal scalar) } } } - public void Subtract(decimal scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1651,7 +1629,6 @@ public void Multiply(PrimitiveColumnContainer column, decimal scalar) } } } - public void Multiply(decimal scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1695,7 +1672,6 @@ public void Divide(PrimitiveColumnContainer column, decimal scalar) } } } - public void Divide(decimal scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1739,7 +1715,6 @@ public void Modulo(PrimitiveColumnContainer column, decimal scalar) } } } - public void Modulo(decimal scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -1762,7 +1737,6 @@ public void And(PrimitiveColumnContainer column, decimal scalar) { throw new NotSupportedException(); } - public void And(decimal scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -1775,7 +1749,6 @@ public void Or(PrimitiveColumnContainer column, decimal scalar) { throw new NotSupportedException(); } - public void Or(decimal scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -1788,7 +1761,6 @@ public void Xor(PrimitiveColumnContainer column, decimal scalar) { throw new NotSupportedException(); } - public void Xor(decimal scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2007,7 +1979,6 @@ public void Add(PrimitiveColumnContainer column, double scalar) } } } - public void Add(double scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2051,7 +2022,6 @@ public void Subtract(PrimitiveColumnContainer column, double scalar) } } } - public void Subtract(double scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2095,7 +2065,6 @@ public void Multiply(PrimitiveColumnContainer column, double scalar) } } } - public void Multiply(double scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2139,7 +2108,6 @@ public void Divide(PrimitiveColumnContainer column, double scalar) } } } - public void Divide(double scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2183,7 +2151,6 @@ public void Modulo(PrimitiveColumnContainer column, double scalar) } } } - public void Modulo(double scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2206,7 +2173,6 @@ public void And(PrimitiveColumnContainer column, double scalar) { throw new NotSupportedException(); } - public void And(double scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2219,7 +2185,6 @@ public void Or(PrimitiveColumnContainer column, double scalar) { throw new NotSupportedException(); } - public void Or(double scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2232,7 +2197,6 @@ public void Xor(PrimitiveColumnContainer column, double scalar) { throw new NotSupportedException(); } - public void Xor(double scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2451,7 +2415,6 @@ public void Add(PrimitiveColumnContainer column, float scalar) } } } - public void Add(float scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2495,7 +2458,6 @@ public void Subtract(PrimitiveColumnContainer column, float scalar) } } } - public void Subtract(float scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2539,7 +2501,6 @@ public void Multiply(PrimitiveColumnContainer column, float scalar) } } } - public void Multiply(float scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2583,7 +2544,6 @@ public void Divide(PrimitiveColumnContainer column, float scalar) } } } - public void Divide(float scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2627,7 +2587,6 @@ public void Modulo(PrimitiveColumnContainer column, float scalar) } } } - public void Modulo(float scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2650,7 +2609,6 @@ public void And(PrimitiveColumnContainer column, float scalar) { throw new NotSupportedException(); } - public void And(float scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2663,7 +2621,6 @@ public void Or(PrimitiveColumnContainer column, float scalar) { throw new NotSupportedException(); } - public void Or(float scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2676,7 +2633,6 @@ public void Xor(PrimitiveColumnContainer column, float scalar) { throw new NotSupportedException(); } - public void Xor(float scalar, PrimitiveColumnContainer column) { throw new NotSupportedException(); @@ -2895,7 +2851,6 @@ public void Add(PrimitiveColumnContainer column, int scalar) } } } - public void Add(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2939,7 +2894,6 @@ public void Subtract(PrimitiveColumnContainer column, int scalar) } } } - public void Subtract(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -2983,7 +2937,6 @@ public void Multiply(PrimitiveColumnContainer column, int scalar) } } } - public void Multiply(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3027,7 +2980,6 @@ public void Divide(PrimitiveColumnContainer column, int scalar) } } } - public void Divide(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3071,7 +3023,6 @@ public void Modulo(PrimitiveColumnContainer column, int scalar) } } } - public void Modulo(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3115,7 +3066,6 @@ public void And(PrimitiveColumnContainer column, int scalar) } } } - public void And(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3159,7 +3109,6 @@ public void Or(PrimitiveColumnContainer column, int scalar) } } } - public void Or(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3203,7 +3152,6 @@ public void Xor(PrimitiveColumnContainer column, int scalar) } } } - public void Xor(int scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3452,7 +3400,6 @@ public void Add(PrimitiveColumnContainer column, long scalar) } } } - public void Add(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3496,7 +3443,6 @@ public void Subtract(PrimitiveColumnContainer column, long scalar) } } } - public void Subtract(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3540,7 +3486,6 @@ public void Multiply(PrimitiveColumnContainer column, long scalar) } } } - public void Multiply(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3584,7 +3529,6 @@ public void Divide(PrimitiveColumnContainer column, long scalar) } } } - public void Divide(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3628,7 +3572,6 @@ public void Modulo(PrimitiveColumnContainer column, long scalar) } } } - public void Modulo(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3672,7 +3615,6 @@ public void And(PrimitiveColumnContainer column, long scalar) } } } - public void And(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3716,7 +3658,6 @@ public void Or(PrimitiveColumnContainer column, long scalar) } } } - public void Or(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -3760,7 +3701,6 @@ public void Xor(PrimitiveColumnContainer column, long scalar) } } } - public void Xor(long scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4009,7 +3949,6 @@ public void Add(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Add(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4053,7 +3992,6 @@ public void Subtract(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Subtract(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4097,7 +4035,6 @@ public void Multiply(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Multiply(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4141,7 +4078,6 @@ public void Divide(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Divide(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4185,7 +4121,6 @@ public void Modulo(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Modulo(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4229,7 +4164,6 @@ public void And(PrimitiveColumnContainer column, sbyte scalar) } } } - public void And(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4273,7 +4207,6 @@ public void Or(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Or(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4317,7 +4250,6 @@ public void Xor(PrimitiveColumnContainer column, sbyte scalar) } } } - public void Xor(sbyte scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4566,7 +4498,6 @@ public void Add(PrimitiveColumnContainer column, short scalar) } } } - public void Add(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4610,7 +4541,6 @@ public void Subtract(PrimitiveColumnContainer column, short scalar) } } } - public void Subtract(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4654,7 +4584,6 @@ public void Multiply(PrimitiveColumnContainer column, short scalar) } } } - public void Multiply(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4698,7 +4627,6 @@ public void Divide(PrimitiveColumnContainer column, short scalar) } } } - public void Divide(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4742,7 +4670,6 @@ public void Modulo(PrimitiveColumnContainer column, short scalar) } } } - public void Modulo(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4786,7 +4713,6 @@ public void And(PrimitiveColumnContainer column, short scalar) } } } - public void And(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4830,7 +4756,6 @@ public void Or(PrimitiveColumnContainer column, short scalar) } } } - public void Or(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -4874,7 +4799,6 @@ public void Xor(PrimitiveColumnContainer column, short scalar) } } } - public void Xor(short scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5123,7 +5047,6 @@ public void Add(PrimitiveColumnContainer column, uint scalar) } } } - public void Add(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5167,7 +5090,6 @@ public void Subtract(PrimitiveColumnContainer column, uint scalar) } } } - public void Subtract(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5211,7 +5133,6 @@ public void Multiply(PrimitiveColumnContainer column, uint scalar) } } } - public void Multiply(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5255,7 +5176,6 @@ public void Divide(PrimitiveColumnContainer column, uint scalar) } } } - public void Divide(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5299,7 +5219,6 @@ public void Modulo(PrimitiveColumnContainer column, uint scalar) } } } - public void Modulo(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5343,7 +5262,6 @@ public void And(PrimitiveColumnContainer column, uint scalar) } } } - public void And(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5387,7 +5305,6 @@ public void Or(PrimitiveColumnContainer column, uint scalar) } } } - public void Or(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5431,7 +5348,6 @@ public void Xor(PrimitiveColumnContainer column, uint scalar) } } } - public void Xor(uint scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5680,7 +5596,6 @@ public void Add(PrimitiveColumnContainer column, ulong scalar) } } } - public void Add(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5724,7 +5639,6 @@ public void Subtract(PrimitiveColumnContainer column, ulong scalar) } } } - public void Subtract(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5768,7 +5682,6 @@ public void Multiply(PrimitiveColumnContainer column, ulong scalar) } } } - public void Multiply(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5812,7 +5725,6 @@ public void Divide(PrimitiveColumnContainer column, ulong scalar) } } } - public void Divide(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5856,7 +5768,6 @@ public void Modulo(PrimitiveColumnContainer column, ulong scalar) } } } - public void Modulo(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5900,7 +5811,6 @@ public void And(PrimitiveColumnContainer column, ulong scalar) } } } - public void And(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5944,7 +5854,6 @@ public void Or(PrimitiveColumnContainer column, ulong scalar) } } } - public void Or(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -5988,7 +5897,6 @@ public void Xor(PrimitiveColumnContainer column, ulong scalar) } } } - public void Xor(ulong scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6237,7 +6145,6 @@ public void Add(PrimitiveColumnContainer column, ushort scalar) } } } - public void Add(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6281,7 +6188,6 @@ public void Subtract(PrimitiveColumnContainer column, ushort scalar) } } } - public void Subtract(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6325,7 +6231,6 @@ public void Multiply(PrimitiveColumnContainer column, ushort scalar) } } } - public void Multiply(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6369,7 +6274,6 @@ public void Divide(PrimitiveColumnContainer column, ushort scalar) } } } - public void Divide(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6413,7 +6317,6 @@ public void Modulo(PrimitiveColumnContainer column, ushort scalar) } } } - public void Modulo(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6457,7 +6360,6 @@ public void And(PrimitiveColumnContainer column, ushort scalar) } } } - public void And(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6501,7 +6403,6 @@ public void Or(PrimitiveColumnContainer column, ushort scalar) } } } - public void Or(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6545,7 +6446,6 @@ public void Xor(PrimitiveColumnContainer column, ushort scalar) } } } - public void Xor(ushort scalar, PrimitiveColumnContainer column) { for (int b = 0; b < column.Buffers.Count; b++) @@ -6763,8 +6663,201 @@ public void ElementwiseLessThan(PrimitiveColumnContainer column, ushort } } } - - - - + internal class DateTimeArithmetic : IPrimitiveDataFrameColumnArithmetic + { + public void Add(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Add(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Add(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void Subtract(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Subtract(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Subtract(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void Multiply(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Multiply(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Multiply(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void Divide(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Divide(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Divide(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void Modulo(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Modulo(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Modulo(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void And(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void And(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void And(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void Or(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Or(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Or(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void Xor(PrimitiveColumnContainer left, PrimitiveColumnContainer right) + { + throw new NotSupportedException(); + } + public void Xor(PrimitiveColumnContainer column, DateTime scalar) + { + throw new NotSupportedException(); + } + public void Xor(DateTime scalar, PrimitiveColumnContainer column) + { + throw new NotSupportedException(); + } + public void LeftShift(PrimitiveColumnContainer column, int value) + { + throw new NotSupportedException(); + } + public void RightShift(PrimitiveColumnContainer column, int value) + { + throw new NotSupportedException(); + } + public void ElementwiseEquals(PrimitiveColumnContainer left, PrimitiveColumnContainer right, PrimitiveColumnContainer ret) + { + for (int b = 0; b < left.Buffers.Count; b++) + { + var buffer = left.Buffers[b]; + var mutableBuffer = DataFrameBuffer.GetMutableBuffer(buffer); + left.Buffers[b] = mutableBuffer; + var span = mutableBuffer.Span; + var otherSpan = right.Buffers[b].ReadOnlySpan; + for (int i = 0; i < span.Length; i++) + { + ret[i] = (span[i] == otherSpan[i]); + } + } + } + public void ElementwiseEquals(PrimitiveColumnContainer column, DateTime scalar, PrimitiveColumnContainer ret) + { + for (int b = 0; b < column.Buffers.Count; b++) + { + var buffer = column.Buffers[b]; + var mutableBuffer = DataFrameBuffer.GetMutableBuffer(buffer); + column.Buffers[b] = mutableBuffer; + var span = mutableBuffer.Span; + for (int i = 0; i < span.Length; i++) + { + ret[i] = (span[i] == scalar); + } + } + } + public void ElementwiseNotEquals(PrimitiveColumnContainer left, PrimitiveColumnContainer right, PrimitiveColumnContainer ret) + { + for (int b = 0; b < left.Buffers.Count; b++) + { + var buffer = left.Buffers[b]; + var mutableBuffer = DataFrameBuffer.GetMutableBuffer(buffer); + left.Buffers[b] = mutableBuffer; + var span = mutableBuffer.Span; + var otherSpan = right.Buffers[b].ReadOnlySpan; + for (int i = 0; i < span.Length; i++) + { + ret[i] = (span[i] != otherSpan[i]); + } + } + } + public void ElementwiseNotEquals(PrimitiveColumnContainer column, DateTime scalar, PrimitiveColumnContainer ret) + { + for (int b = 0; b < column.Buffers.Count; b++) + { + var buffer = column.Buffers[b]; + var mutableBuffer = DataFrameBuffer.GetMutableBuffer(buffer); + column.Buffers[b] = mutableBuffer; + var span = mutableBuffer.Span; + for (int i = 0; i < span.Length; i++) + { + ret[i] = (span[i] != scalar); + } + } + } + public void ElementwiseGreaterThanOrEqual(PrimitiveColumnContainer left, PrimitiveColumnContainer right, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseGreaterThanOrEqual(PrimitiveColumnContainer column, DateTime scalar, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseLessThanOrEqual(PrimitiveColumnContainer left, PrimitiveColumnContainer right, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseLessThanOrEqual(PrimitiveColumnContainer column, DateTime scalar, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseGreaterThan(PrimitiveColumnContainer left, PrimitiveColumnContainer right, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseGreaterThan(PrimitiveColumnContainer column, DateTime scalar, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseLessThan(PrimitiveColumnContainer left, PrimitiveColumnContainer right, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + public void ElementwiseLessThan(PrimitiveColumnContainer column, DateTime scalar, PrimitiveColumnContainer ret) + { + throw new NotSupportedException(); + } + } } diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt index 7af9f7b040..0c04fe549e 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt @@ -21,9 +21,9 @@ namespace Microsoft.Data.Analysis where T : struct { <# foreach (MethodConfiguration method in methodConfiguration) { #> - <#= method.GetMethodSignature("PrimitiveColumnContainer", "T")#>; + <#= method.GetMethodSignature("PrimitiveColumnContainer", "T")#>; <# if (method.MethodType == MethodType.BinaryScalar) { #> - <#= method.GetInvertedMethodSignatureForBinaryScalarsOps("PrimitiveColumnContainer", "T")#>; + <#= method.GetInvertedMethodSignatureForBinaryScalarsOps("PrimitiveColumnContainer", "T")#>; <# } #> <# } #> } @@ -58,7 +58,7 @@ namespace Microsoft.Data.Analysis <# if ((method.IsNumeric && !type.SupportsNumeric) || (method.IsBitwise && !type.SupportsBitwise) || (type.UnsupportedMethods.Contains(method.MethodName))) { #> throw new NotSupportedException(); <# } else if (method.Operator != null) { #> - for (int b = 0 ; b < <#= method.Op1Name #>.Buffers.Count; b++) + for (int b = 0; b < <#= method.Op1Name #>.Buffers.Count; b++) { var buffer = <#= method.Op1Name #>.Buffers[b]; var mutableBuffer = DataFrameBuffer<<#=type.TypeName#>>.GetMutableBuffer(buffer); @@ -84,22 +84,22 @@ namespace Microsoft.Data.Analysis } <# } #> } -<# if (method.MethodType == MethodType.BinaryScalar) { #> +<# if (method.MethodType == MethodType.BinaryScalar) { #> public <#= method.GetInvertedMethodSignatureForBinaryScalarsOps("PrimitiveColumnContainer", type.TypeName) #> { <# if ((method.IsNumeric && !type.SupportsNumeric) || (method.IsBitwise && !type.SupportsBitwise) || (type.UnsupportedMethods.Contains(method.MethodName))) { #> - throw new NotSupportedException(); + throw new NotSupportedException(); <# } else if (method.Operator != null) { #> - for (int b = 0 ; b < <#= method.Op1Name #>.Buffers.Count; b++) + for (int b = 0; b < <#= method.Op1Name #>.Buffers.Count; b++) { - var buffer = <#= method.Op1Name #>.Buffers[b]; + var buffer = <#= method.Op1Name #>.Buffers[b]; var mutableBuffer = DataFrameBuffer<<#=type.TypeName#>>.GetMutableBuffer(buffer); <#= method.Op1Name #>.Buffers[b] = mutableBuffer; var span = mutableBuffer.Span; <# if (method.MethodType == MethodType.Binary || method.MethodType == MethodType.Comparison) { #> var otherSpan = <#=method.Op2Name#>.Buffers[b].ReadOnlySpan; <# } #> - for (int i = 0; i < span.Length; i++) + for (int i = 0; i < span.Length; i++) { <# if (method.MethodType == MethodType.BinaryScalar || method.MethodType == MethodType.BinaryInt) { #> span[i] = (<#=type.TypeName#>)(<#= method.Op2Name #> <#= method.Operator #> span[i]); @@ -112,8 +112,4 @@ namespace Microsoft.Data.Analysis <# } #> } <# } #> - - - - } diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.cs index afca6d48e1..a4c5d73b0d 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.cs @@ -103,6 +103,10 @@ public static IPrimitiveColumnComputation GetComputation() { return (IPrimitiveColumnComputation)new DateTimeComputation(); } + else if (typeof(T) == typeof(DateTime)) + { + return (IPrimitiveColumnComputation)new DateTimeComputation(); + } throw new NotSupportedException(); } diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.tt b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.tt index 3532b5f281..e71fc10a90 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.tt +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.tt @@ -65,6 +65,9 @@ namespace Microsoft.Data.Analysis } <# foreach (TypeConfiguration type in typeConfiguration) { #> +<# if (type.TypeName == "DateTime") {#> +<# // DateTime computation in DateTimeComputation.cs #> +<# continue; }#> internal class <#=type.ClassPrefix#>Computation : IPrimitiveColumnComputation<<#=type.TypeName#>> { <# foreach (MethodConfiguration method in computationMethodConfiguration) { #> diff --git a/src/Microsoft.ML.AutoML.Interactive/ActionThrottler.cs b/src/Microsoft.ML.AutoML.Interactive/ActionThrottler.cs new file mode 100644 index 0000000000..16c15b947a --- /dev/null +++ b/src/Microsoft.ML.AutoML.Interactive/ActionThrottler.cs @@ -0,0 +1,50 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.ML.AutoML +{ + internal class ActionThrottler + { + private readonly Action _action; + private readonly TimeSpan _minDelay; + + private DateTime _nextUpdateTime = DateTime.MinValue; + private int _updatePending = 0; + + /// + /// This constructor initializes an ActionThrottler that ensures runs no more than once per . + /// + /// The action to thorttle. + /// Timespan to indicate the minimum delay between each time action is executed. + public ActionThrottler(Action action, TimeSpan minDelay) + { + _minDelay = minDelay; + _action = action; + } + + + public async Task ExecuteAsync() + { + if (Interlocked.CompareExchange(ref _updatePending, 1, 0) == 0) // _updatePending is int initialized with 0 + { + DateTime currentTime = DateTime.UtcNow; + + if (_nextUpdateTime > currentTime) + { + await Task.Delay(_nextUpdateTime - currentTime); + } + _action(); + _nextUpdateTime = DateTime.UtcNow + _minDelay; + _updatePending = 0; + } + } + } +} diff --git a/src/Microsoft.ML.AutoML.Interactive/AutoMLMonitorKernelExtension.cs b/src/Microsoft.ML.AutoML.Interactive/AutoMLMonitorKernelExtension.cs new file mode 100644 index 0000000000..8d06caad80 --- /dev/null +++ b/src/Microsoft.ML.AutoML.Interactive/AutoMLMonitorKernelExtension.cs @@ -0,0 +1,103 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.AspNetCore.Html; +using Microsoft.Data.Analysis; +using Microsoft.DotNet.Interactive; +using Microsoft.DotNet.Interactive.Commands; +using Microsoft.DotNet.Interactive.Formatting; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using Plotly.NET.CSharp; +using static Microsoft.DotNet.Interactive.Formatting.PocketViewTags; + + +namespace Microsoft.ML.AutoML +{ + public class AutoMLMonitorKernelExtension : IKernelExtension + { + public async Task OnLoadAsync(Kernel kernel) + { + Formatter.Register((monitor, writer) => + { + WriteSummary(monitor, writer); + WriteChart(monitor, writer); + WriteTable(monitor, writer); + }, "text/html"); + + if (Kernel.Root?.FindKernel("csharp") is { } csKernel) + { + await LoadExtensionApiAsync(csKernel); + } + } + + private static async Task LoadExtensionApiAsync(Kernel cSharpKernel) + { + await cSharpKernel.SendAsync(new SubmitCode($@"#r ""{typeof(AutoMLMonitorKernelExtension).Assembly.Location}"" +using {typeof(NotebookMonitor).Namespace};")); + } + + private static void WriteSummary(NotebookMonitor monitor, TextWriter writer) + { + + var summary = new List(); + + if (monitor.BestTrial != null) + { + var bestTrialParam = JsonSerializer.Serialize(monitor.BestTrial.TrialSettings.Parameter, new JsonSerializerOptions() { WriteIndented = true, }); + summary.Add(h3("Best Trial")); + summary.Add(p($"Id: {monitor.BestTrial.TrialSettings.TrialId}")); + summary.Add(p($"Trainer: {monitor.SweepablePipeline.ToString(monitor.BestTrial.TrialSettings.Parameter)}".Replace("Unknown=>", ""))); + summary.Add(p($"Parameters: {bestTrialParam}")); + } + if (monitor.ActiveTrial != null) + { + + var activeTrialParam = JsonSerializer.Serialize(monitor.ActiveTrial.Parameter, new JsonSerializerOptions() { WriteIndented = true, }); + + summary.Add(h3("Active Trial")); + summary.Add(p($"Id: {monitor.ActiveTrial.TrialId}")); + summary.Add(p($"Trainer: {monitor.SweepablePipeline.ToString(monitor.ActiveTrial.Parameter)}".Replace("Unknown=>", ""))); + summary.Add(p($"Parameters: {activeTrialParam}")); + } + + writer.Write(div(summary)); + } + + private static void WriteChart(NotebookMonitor monitor, TextWriter writer) + { + var x = monitor.CompletedTrials.Select(x => x.TrialSettings.TrialId); + var y = monitor.CompletedTrials.Select(x => x.Metric); + + var chart = Chart.Point(x, y, "Plot Metrics over Trials.") + .WithTraceInfo(ShowLegend: false) + .WithXAxisStyle(TitleText: "Trial", ShowGrid: false) + .WithYAxisStyle(TitleText: "Metric", ShowGrid: false); + + var chartHeader = new List(); + chartHeader.Add(h3("Plot Metrics over Trials")); + writer.Write(div(chartHeader)); + + + Formatter.GetPreferredFormatterFor(typeof(Plotly.NET.GenericChart.GenericChart), "text/html").Format(chart, writer); + + // Works around issue with earlier versions of Plotly.NET - https://github.com/plotly/Plotly.NET/pull/305 + if (writer.ToString().EndsWith(""); + } + } + + private static void WriteTable(NotebookMonitor notebookMonitor, TextWriter writer) + { + var tableHeader = new List(); + tableHeader.Add(h3("All Trials Table")); + writer.Write(div(tableHeader)); + Formatter.GetPreferredFormatterFor(typeof(DataFrame), "text/html").Format(notebookMonitor.TrialData, writer); + } + } +} diff --git a/src/Microsoft.ML.AutoML.Interactive/Microsoft.ML.AutoML.Interactive.csproj b/src/Microsoft.ML.AutoML.Interactive/Microsoft.ML.AutoML.Interactive.csproj new file mode 100644 index 0000000000..15040401ee --- /dev/null +++ b/src/Microsoft.ML.AutoML.Interactive/Microsoft.ML.AutoML.Interactive.csproj @@ -0,0 +1,20 @@ + + + + net6.0 + false + + + + + + + + + + + + + + + diff --git a/src/Microsoft.ML.AutoML.Interactive/NotebookMonitor.cs b/src/Microsoft.ML.AutoML.Interactive/NotebookMonitor.cs new file mode 100644 index 0000000000..81b22a9435 --- /dev/null +++ b/src/Microsoft.ML.AutoML.Interactive/NotebookMonitor.cs @@ -0,0 +1,88 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.DotNet.Interactive; +using System.Collections.Generic; +using Microsoft.Data.Analysis; +using System; +using System.Threading.Tasks; +using System.Text.Json; +using System.Threading; + +namespace Microsoft.ML.AutoML +{ + public class NotebookMonitor : IMonitor + { + private readonly ActionThrottler _updateThrottler; + private DisplayedValue _valueToUpdate; + + public SweepablePipeline SweepablePipeline { get; private set; } + public TrialResult BestTrial { get; set; } + public TrialResult MostRecentTrial { get; set; } + public TrialSettings ActiveTrial { get; set; } + public List CompletedTrials { get; set; } + public DataFrame TrialData { get; set; } + + public NotebookMonitor(SweepablePipeline pipeline) + { + CompletedTrials = new List(); + TrialData = new DataFrame(new PrimitiveDataFrameColumn("Trial"), new PrimitiveDataFrameColumn("Metric"), new StringDataFrameColumn("Trainer"), new StringDataFrameColumn("Parameters")); + _updateThrottler = new ActionThrottler(Update, TimeSpan.FromSeconds(5)); + SweepablePipeline = pipeline; + } + + public void ReportBestTrial(TrialResult result) + { + BestTrial = result; + + ThrottledUpdate(); + } + + public void ReportCompletedTrial(TrialResult result) + { + MostRecentTrial = result; + CompletedTrials.Add(result); + + var activeRunParam = JsonSerializer.Serialize(result.TrialSettings.Parameter, new JsonSerializerOptions() { WriteIndented = false, }); + + TrialData.Append(new List>() + { + new KeyValuePair("Trial",result.TrialSettings.TrialId), + new KeyValuePair("Metric", result.Metric), + new KeyValuePair("Trainer",SweepablePipeline.ToString(result.TrialSettings.Parameter).Replace("Unknown=>","")), + new KeyValuePair("Parameters",activeRunParam), + }, true); + + ThrottledUpdate(); + } + + public void ReportFailTrial(TrialSettings setting, Exception exp = null) + { + // TODO figure out what to do with failed trials. + ThrottledUpdate(); + } + + public void ReportRunningTrial(TrialSettings setting) + { + ActiveTrial = setting; + ThrottledUpdate(); + } + + private void ThrottledUpdate() + { + Task.Run(async () => await _updateThrottler.ExecuteAsync()); + } + + public void Update() + { + _valueToUpdate.Update(this); + } + + public void SetUpdate(DisplayedValue valueToUpdate) + { + _valueToUpdate = valueToUpdate; + ThrottledUpdate(); + } + } +} diff --git a/src/Microsoft.ML.AutoML/API/AutoCatalog.cs b/src/Microsoft.ML.AutoML/API/AutoCatalog.cs index 0c3f3ab222..280777db70 100644 --- a/src/Microsoft.ML.AutoML/API/AutoCatalog.cs +++ b/src/Microsoft.ML.AutoML/API/AutoCatalog.cs @@ -326,7 +326,7 @@ public AutoMLExperiment CreateExperiment(AutoMLExperiment.AutoMLExperimentSettin /// if provided, use it as search space for lbfgs, otherwise the default search space will be used. /// if provided, use it as search space for sdca, otherwise the default search space will be used. /// - public SweepableEstimator[] BinaryClassification(string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, bool useFastForest = true, bool useLgbm = true, bool useFastTree = true, bool useLbfgs = true, bool useSdca = true, + public SweepablePipeline BinaryClassification(string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, bool useFastForest = true, bool useLgbm = true, bool useFastTree = true, bool useLbfgs = true, bool useSdca = true, FastTreeOption fastTreeOption = null, LgbmOption lgbmOption = null, FastForestOption fastForestOption = null, LbfgsOption lbfgsOption = null, SdcaOption sdcaOption = null, SearchSpace fastTreeSearchSpace = null, SearchSpace lgbmSearchSpace = null, SearchSpace fastForestSearchSpace = null, SearchSpace lbfgsSearchSpace = null, SearchSpace sdcaSearchSpace = null) { @@ -377,7 +377,7 @@ public SweepableEstimator[] BinaryClassification(string labelColumnName = Defaul res.Add(SweepableEstimatorFactory.CreateSdcaLogisticRegressionBinary(sdcaOption, sdcaSearchSpace ?? new SearchSpace(sdcaOption))); } - return res.ToArray(); + return new SweepablePipeline().Append(res.ToArray()); } /// @@ -402,7 +402,7 @@ public SweepableEstimator[] BinaryClassification(string labelColumnName = Defaul /// if provided, use it as search space for lbfgs, otherwise the default search space will be used. /// if provided, use it as search space for sdca, otherwise the default search space will be used. /// - public SweepableEstimator[] MultiClassification(string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, bool useFastForest = true, bool useLgbm = true, bool useFastTree = true, bool useLbfgs = true, bool useSdca = true, + public SweepablePipeline MultiClassification(string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, bool useFastForest = true, bool useLgbm = true, bool useFastTree = true, bool useLbfgs = true, bool useSdca = true, FastTreeOption fastTreeOption = null, LgbmOption lgbmOption = null, FastForestOption fastForestOption = null, LbfgsOption lbfgsOption = null, SdcaOption sdcaOption = null, SearchSpace fastTreeSearchSpace = null, SearchSpace lgbmSearchSpace = null, SearchSpace fastForestSearchSpace = null, SearchSpace lbfgsSearchSpace = null, SearchSpace sdcaSearchSpace = null) { @@ -455,7 +455,7 @@ public SweepableEstimator[] MultiClassification(string labelColumnName = Default res.Add(SweepableEstimatorFactory.CreateSdcaLogisticRegressionOva(sdcaOption, sdcaSearchSpace ?? new SearchSpace(sdcaOption))); } - return res.ToArray(); + return new SweepablePipeline().Append(res.ToArray()); } /// @@ -480,7 +480,7 @@ public SweepableEstimator[] MultiClassification(string labelColumnName = Default /// if provided, use it as search space for lbfgs, otherwise the default search space will be used. /// if provided, use it as search space for sdca, otherwise the default search space will be used. /// - public SweepableEstimator[] Regression(string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, bool useFastForest = true, bool useLgbm = true, bool useFastTree = true, bool useLbfgs = true, bool useSdca = true, + public SweepablePipeline Regression(string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, bool useFastForest = true, bool useLgbm = true, bool useFastTree = true, bool useLbfgs = true, bool useSdca = true, FastTreeOption fastTreeOption = null, LgbmOption lgbmOption = null, FastForestOption fastForestOption = null, LbfgsOption lbfgsOption = null, SdcaOption sdcaOption = null, SearchSpace fastTreeSearchSpace = null, SearchSpace lgbmSearchSpace = null, SearchSpace fastForestSearchSpace = null, SearchSpace lbfgsSearchSpace = null, SearchSpace sdcaSearchSpace = null) { @@ -531,7 +531,7 @@ public SweepableEstimator[] Regression(string labelColumnName = DefaultColumnNam res.Add(SweepableEstimatorFactory.CreateSdcaRegression(sdcaOption, sdcaSearchSpace ?? new SearchSpace(sdcaOption))); } - return res.ToArray(); + return new SweepablePipeline().Append(res.ToArray()); } /// @@ -539,7 +539,7 @@ public SweepableEstimator[] Regression(string labelColumnName = DefaultColumnNam /// /// output column name. /// input column name. - internal SweepableEstimator[] TextFeaturizer(string outputColumnName, string inputColumnName) + internal SweepablePipeline TextFeaturizer(string outputColumnName, string inputColumnName) { var option = new FeaturizeTextOption { @@ -547,15 +547,15 @@ internal SweepableEstimator[] TextFeaturizer(string outputColumnName, string inp OutputColumnName = outputColumnName, }; - return new[] { SweepableEstimatorFactory.CreateFeaturizeText(option) }; + return new SweepablePipeline().Append(new[] { SweepableEstimatorFactory.CreateFeaturizeText(option) }); } /// - /// Create a list of for featurizing numeric columns. + /// Create a for featurizing numeric columns. /// /// output column names. /// input column names. - internal SweepableEstimator[] NumericFeaturizer(string[] outputColumnNames, string[] inputColumnNames) + internal SweepablePipeline NumericFeaturizer(string[] outputColumnNames, string[] inputColumnNames) { Contracts.CheckValue(inputColumnNames, nameof(inputColumnNames)); Contracts.CheckValue(outputColumnNames, nameof(outputColumnNames)); @@ -566,7 +566,30 @@ internal SweepableEstimator[] NumericFeaturizer(string[] outputColumnNames, stri OutputColumnNames = outputColumnNames, }; - return new[] { SweepableEstimatorFactory.CreateReplaceMissingValues(replaceMissingValueOption) }; + return new SweepablePipeline().Append(new[] { SweepableEstimatorFactory.CreateReplaceMissingValues(replaceMissingValueOption) }); + } + + /// + /// Create a for featurizing boolean columns. This pipeline convert all boolean column + /// to numeric type. + /// + /// output column names. + /// input column names. + /// a list of + internal SweepableEstimator[] BooleanFeaturizer(string[] outputColumnNames, string[] inputColumnNames) + { + Contracts.CheckValue(inputColumnNames, nameof(inputColumnNames)); + Contracts.CheckValue(outputColumnNames, nameof(outputColumnNames)); + Contracts.Check(outputColumnNames.Count() == inputColumnNames.Count() && outputColumnNames.Count() > 0, "outputColumnNames and inputColumnNames must have the same length and greater than 0"); + + // by default, convertType's output kind is single + var convertTypeOption = new ConvertTypeOption + { + InputColumnNames = inputColumnNames, + OutputColumnNames = outputColumnNames, + }; + + return new[] { SweepableEstimatorFactory.CreateConvertType(convertTypeOption) }; } /// @@ -574,7 +597,7 @@ internal SweepableEstimator[] NumericFeaturizer(string[] outputColumnNames, stri /// /// output column names. /// input column names. - internal SweepableEstimator[] CatalogFeaturizer(string[] outputColumnNames, string[] inputColumnNames) + internal SweepablePipeline CatalogFeaturizer(string[] outputColumnNames, string[] inputColumnNames) { Contracts.Check(outputColumnNames.Count() == inputColumnNames.Count() && outputColumnNames.Count() > 0, "outputColumnNames and inputColumnNames must have the same length and greater than 0"); @@ -584,7 +607,45 @@ internal SweepableEstimator[] CatalogFeaturizer(string[] outputColumnNames, stri OutputColumnNames = outputColumnNames, }; - return new SweepableEstimator[] { SweepableEstimatorFactory.CreateOneHotEncoding(option), SweepableEstimatorFactory.CreateOneHotHashEncoding(option) }; + return new SweepablePipeline().Append(new SweepableEstimator[] { SweepableEstimatorFactory.CreateOneHotEncoding(option), SweepableEstimatorFactory.CreateOneHotHashEncoding(option) }); + } + + internal SweepablePipeline ImagePathFeaturizer(string outputColumnName, string inputColumnName) + { + // load image => resize image (224, 224) => extract pixels => dnn featurizer + var loadImageOption = new LoadImageOption + { + ImageFolder = null, + InputColumnName = inputColumnName, + OutputColumnName = outputColumnName, + }; + + var resizeImageOption = new ResizeImageOption + { + ImageHeight = 224, + ImageWidth = 224, + InputColumnName = inputColumnName, + OutputColumnName = outputColumnName, + }; + + var extractPixelOption = new ExtractPixelsOption + { + InputColumnName = inputColumnName, + OutputColumnName = outputColumnName, + }; + + var dnnFeaturizerOption = new DnnFeaturizerImageOption + { + InputColumnName = inputColumnName, + OutputColumnName = outputColumnName, + }; + + var pipeline = new SweepablePipeline(); + + return pipeline.Append(SweepableEstimatorFactory.CreateLoadImages(loadImageOption)) + .Append(SweepableEstimatorFactory.CreateResizeImages(resizeImageOption)) + .Append(SweepableEstimatorFactory.CreateExtractPixels(extractPixelOption)) + .Append(SweepableEstimatorFactory.CreateDnnFeaturizerImage(dnnFeaturizerOption)); } /// @@ -593,17 +654,18 @@ internal SweepableEstimator[] CatalogFeaturizer(string[] outputColumnNames, stri /// them into a single feature column as output. /// /// input data. - /// columns that should be treated as catalog. If not specified, it will automatically infer if a column is catalog or not. + /// columns that should be treated as catalog. If not specified, it will automatically infer if a column is catalog or not. /// columns that should be treated as numeric. If not specified, it will automatically infer if a column is catalog or not. /// columns that should be treated as text. If not specified, it will automatically infer if a column is catalog or not. + /// columns that should be treated as image path. If not specified, it will automatically infer if a column is catalog or not. /// output feature column. /// columns that won't be included when featurizing, like label - public MultiModelPipeline Featurizer(IDataView data, string outputColumnName = "Features", string[] catalogColumns = null, string[] numericColumns = null, string[] textColumns = null, string[] excludeColumns = null) + public SweepablePipeline Featurizer(IDataView data, string outputColumnName = "Features", string[] catelogicalColumns = null, string[] numericColumns = null, string[] textColumns = null, string[] imagePathColumns = null, string[] excludeColumns = null) { Contracts.CheckValue(data, nameof(data)); // validate if there's overlapping among catalogColumns, numericColumns, textColumns and excludeColumns - var overallColumns = new string[][] { catalogColumns, numericColumns, textColumns, excludeColumns } + var overallColumns = new string[][] { catelogicalColumns, numericColumns, textColumns, excludeColumns } .Where(c => c != null) .SelectMany(c => c); @@ -622,9 +684,9 @@ public MultiModelPipeline Featurizer(IDataView data, string outputColumnName = " } } - if (catalogColumns != null) + if (catelogicalColumns != null) { - foreach (var catalogColumn in catalogColumns) + foreach (var catalogColumn in catelogicalColumns) { columnInfo.CategoricalColumnNames.Add(catalogColumn); } @@ -646,6 +708,14 @@ public MultiModelPipeline Featurizer(IDataView data, string outputColumnName = " } } + if (imagePathColumns != null) + { + foreach (var column in imagePathColumns) + { + columnInfo.ImagePathColumnNames.Add(column); + } + } + return this.Featurizer(data, columnInfo, outputColumnName); } @@ -657,31 +727,47 @@ public MultiModelPipeline Featurizer(IDataView data, string outputColumnName = " /// input data. /// column information. /// output feature column. - /// A for featurization. - public MultiModelPipeline Featurizer(IDataView data, ColumnInformation columnInformation, string outputColumnName = "Features") + /// A for featurization. + public SweepablePipeline Featurizer(IDataView data, ColumnInformation columnInformation, string outputColumnName = "Features") { Contracts.CheckValue(data, nameof(data)); Contracts.CheckValue(columnInformation, nameof(columnInformation)); var columnPurposes = PurposeInference.InferPurposes(this._context, data, columnInformation); var textFeatures = columnPurposes.Where(c => c.Purpose == ColumnPurpose.TextFeature); - var numericFeatures = columnPurposes.Where(c => c.Purpose == ColumnPurpose.NumericFeature); + var numericFeatures = columnPurposes.Where(c => c.Purpose == ColumnPurpose.NumericFeature + && data.Schema[c.ColumnIndex].Type != BooleanDataViewType.Instance + && !(data.Schema[c.ColumnIndex].Type is VectorDataViewType vt && vt.ItemType == BooleanDataViewType.Instance)).ToArray(); + var booleanFeatures = columnPurposes.Where(c => c.Purpose == ColumnPurpose.NumericFeature && !numericFeatures.Contains(c)); var catalogFeatures = columnPurposes.Where(c => c.Purpose == ColumnPurpose.CategoricalFeature); + var imagePathFeatures = columnPurposes.Where(c => c.Purpose == ColumnPurpose.ImagePath); var textFeatureColumnNames = textFeatures.Select(c => data.Schema[c.ColumnIndex].Name).ToArray(); var numericFeatureColumnNames = numericFeatures.Select(c => data.Schema[c.ColumnIndex].Name).ToArray(); var catalogFeatureColumnNames = catalogFeatures.Select(c => data.Schema[c.ColumnIndex].Name).ToArray(); + var imagePathColumnNames = imagePathFeatures.Select(c => data.Schema[c.ColumnIndex].Name).ToArray(); + var booleanFeatureColumnNames = booleanFeatures.Select(c => data.Schema[c.ColumnIndex].Name).ToArray(); - var pipeline = new MultiModelPipeline(); + var pipeline = new SweepablePipeline(); if (numericFeatureColumnNames.Length > 0) { pipeline = pipeline.Append(this.NumericFeaturizer(numericFeatureColumnNames, numericFeatureColumnNames)); } + if (booleanFeatureColumnNames.Length > 0) + { + pipeline = pipeline.Append(this.BooleanFeaturizer(booleanFeatureColumnNames, booleanFeatureColumnNames)); + } + if (catalogFeatureColumnNames.Length > 0) { pipeline = pipeline.Append(this.CatalogFeaturizer(catalogFeatureColumnNames, catalogFeatureColumnNames)); } + foreach (var imagePathColumn in imagePathColumnNames) + { + pipeline = pipeline.Append(this.ImagePathFeaturizer(imagePathColumn, imagePathColumn)); + } + foreach (var textColumn in textFeatureColumnNames) { pipeline = pipeline.Append(this.TextFeaturizer(textColumn, textColumn)); @@ -689,7 +775,7 @@ public MultiModelPipeline Featurizer(IDataView data, ColumnInformation columnInf var option = new ConcatOption { - InputColumnNames = textFeatureColumnNames.Concat(numericFeatureColumnNames).Concat(catalogFeatureColumnNames).ToArray(), + InputColumnNames = textFeatureColumnNames.Concat(numericFeatureColumnNames).Concat(catalogFeatureColumnNames).Concat(imagePathColumnNames).Concat(booleanFeatureColumnNames).ToArray(), OutputColumnName = outputColumnName, }; diff --git a/src/Microsoft.ML.AutoML/API/AutoMLExperimentExtension.cs b/src/Microsoft.ML.AutoML/API/AutoMLExperimentExtension.cs new file mode 100644 index 0000000000..090bc43496 --- /dev/null +++ b/src/Microsoft.ML.AutoML/API/AutoMLExperimentExtension.cs @@ -0,0 +1,169 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.ML.Runtime; +using static Microsoft.ML.DataOperationsCatalog; + +namespace Microsoft.ML.AutoML +{ + public static class AutoMLExperimentExtension + { + /// + /// Set train and validation dataset for . This will make uses + /// to train a model, and use to evaluate the model. + /// + /// + /// dataset for training a model. + /// dataset for validating a model during training. + /// + public static AutoMLExperiment SetDataset(this AutoMLExperiment experiment, IDataView train, IDataView validation) + { + var datasetManager = new TrainTestDatasetManager() + { + TrainDataset = train, + TestDataset = validation + }; + + experiment.ServiceCollection.AddSingleton(datasetManager); + experiment.ServiceCollection.AddSingleton(datasetManager); + + return experiment; + } + + /// + /// Set train and validation dataset for . This will make uses from + /// to train a model, and use from to evaluate the model. + /// + /// + /// a for train and validation. + /// + public static AutoMLExperiment SetDataset(this AutoMLExperiment experiment, TrainTestData trainValidationSplit) + { + return experiment.SetDataset(trainValidationSplit.TrainSet, trainValidationSplit.TestSet); + } + + /// + /// Set cross-validation dataset for . This will make use n= cross-validation split on + /// to train and evaluate a model. + /// + /// + /// dataset for cross-validation split. + /// + /// + public static AutoMLExperiment SetDataset(this AutoMLExperiment experiment, IDataView dataset, int fold = 10) + { + var datasetManager = new CrossValidateDatasetManager() + { + Dataset = dataset, + Fold = fold, + }; + + experiment.ServiceCollection.AddSingleton(datasetManager); + experiment.ServiceCollection.AddSingleton(datasetManager); + + return experiment; + } + + /// + /// Set as evaluation manager for . This will make + /// uses as evaluation metric. + /// + /// + /// evaluation metric. + /// label column. + /// predicted column. + /// + public static AutoMLExperiment SetBinaryClassificationMetric(this AutoMLExperiment experiment, BinaryClassificationMetric metric, string labelColumn = "label", string predictedColumn = "PredictedLabel") + { + var metricManager = new BinaryMetricManager(metric, labelColumn, predictedColumn); + return experiment.SetEvaluateMetric(metricManager); + } + + /// + /// Set as evaluation manager for . This will make + /// uses as evaluation metric. + /// + /// + /// evaluation metric. + /// label column. + /// predicted column. + /// + public static AutoMLExperiment SetMulticlassClassificationMetric(this AutoMLExperiment experiment, MulticlassClassificationMetric metric, string labelColumn = "label", string predictedColumn = "PredictedLabel") + { + var metricManager = new MultiClassMetricManager() + { + Metric = metric, + PredictedColumn = predictedColumn, + LabelColumn = labelColumn, + }; + + return experiment.SetEvaluateMetric(metricManager); + } + + /// + /// Set as evaluation manager for . This will make + /// uses as evaluation metric. + /// + /// + /// evaluation metric. + /// label column. + /// score column. + /// + public static AutoMLExperiment SetRegressionMetric(this AutoMLExperiment experiment, RegressionMetric metric, string labelColumn = "Label", string scoreColumn = "Score") + { + var metricManager = new RegressionMetricManager() + { + Metric = metric, + ScoreColumn = scoreColumn, + LabelColumn = labelColumn, + }; + + return experiment.SetEvaluateMetric(metricManager); + } + + /// + /// Set for training. This also make uses + /// , and for automl traininng as well. + /// + /// + /// + /// + public static AutoMLExperiment SetPipeline(this AutoMLExperiment experiment, SweepablePipeline pipeline) + { + experiment.AddSearchSpace(AutoMLExperiment.PipelineSearchspaceName, pipeline.SearchSpace); + experiment.ServiceCollection.AddSingleton(pipeline); + + experiment.SetTrialRunner(); + experiment.SetMonitor(); + experiment.SetTuner(); + + return experiment; + } + + public static AutoMLExperiment SetPerformanceMonitor(this AutoMLExperiment experiment, int checkIntervalInMilliseconds = 1000) + { + experiment.SetPerformanceMonitor((service) => + { + var channel = service.GetService(); + + return new DefaultPerformanceMonitor(channel, checkIntervalInMilliseconds); + }); + + return experiment; + } + + private static AutoMLExperiment SetEvaluateMetric(this AutoMLExperiment experiment, TEvaluateMetricManager metricManager) + where TEvaluateMetricManager : class, IEvaluateMetricManager + { + experiment.ServiceCollection.AddSingleton(metricManager); + experiment.ServiceCollection.AddSingleton(metricManager); + + return experiment; + } + } +} diff --git a/src/Microsoft.ML.AutoML/API/BinaryClassificationExperiment.cs b/src/Microsoft.ML.AutoML/API/BinaryClassificationExperiment.cs index 359c19fcb2..012b230b3c 100644 --- a/src/Microsoft.ML.AutoML/API/BinaryClassificationExperiment.cs +++ b/src/Microsoft.ML.AutoML/API/BinaryClassificationExperiment.cs @@ -4,11 +4,17 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; using Microsoft.ML.Data; +using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; using Microsoft.ML.Trainers.FastTree; using Microsoft.ML.Trainers.LightGbm; +using static Microsoft.ML.TrainCatalogBase; namespace Microsoft.ML.AutoML { @@ -90,11 +96,6 @@ public enum BinaryClassificationMetric /// public enum BinaryClassificationTrainer { - /// - /// See . - /// - AveragedPerceptron, - /// /// See . /// @@ -110,11 +111,6 @@ public enum BinaryClassificationTrainer /// LightGbm, - /// - /// See . - /// - LinearSvm, - /// /// See . /// @@ -124,16 +120,6 @@ public enum BinaryClassificationTrainer /// See . /// SdcaLogisticRegression, - - /// - /// See . - /// - SgdCalibrated, - - /// - /// See . - /// - SymbolicSgdLogisticRegression, } /// @@ -147,6 +133,10 @@ public enum BinaryClassificationTrainer /// public sealed class BinaryClassificationExperiment : ExperimentBase { + private readonly AutoMLExperiment _experiment; + private const string Features = "__Features__"; + private SweepablePipeline _pipeline; + internal BinaryClassificationExperiment(MLContext context, BinaryExperimentSettings settings) : base(context, new BinaryMetricsAgent(context, settings.OptimizingMetric), @@ -155,6 +145,164 @@ internal BinaryClassificationExperiment(MLContext context, BinaryExperimentSetti TaskKind.BinaryClassification, TrainerExtensionUtil.GetTrainerNames(settings.Trainers)) { + _experiment = context.Auto().CreateExperiment(); + if (settings.MaximumMemoryUsageInMegaByte is double d) + { + _experiment.SetMaximumMemoryUsageInMegaByte(d); + } + } + + public override ExperimentResult Execute(IDataView trainData, ColumnInformation columnInformation, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var label = columnInformation.LabelColumnName; + _experiment.SetBinaryClassificationMetric(Settings.OptimizingMetric, label); + _experiment.SetTrainingTimeInSeconds(Settings.MaxExperimentTimeInSeconds); + + // Cross val threshold for # of dataset rows -- + // If dataset has < threshold # of rows, use cross val. + // Else, run experiment using train-validate split. + const int crossValRowCountThreshold = 15000; + var rowCount = DatasetDimensionsUtil.CountRows(trainData, crossValRowCountThreshold); + // TODO + // split cross validation result according to sample key as well. + if (rowCount < crossValRowCountThreshold) + { + const int numCrossValFolds = 10; + _experiment.SetDataset(trainData, numCrossValFolds); + } + else + { + var splitData = Context.Data.TrainTestSplit(trainData); + _experiment.SetDataset(splitData.TrainSet, splitData.TestSet); + } + _pipeline = CreateBinaryClassificationPipeline(trainData, columnInformation, preFeaturizer); + _experiment.SetPipeline(_pipeline); + + // set monitor + TrialResultMonitor monitor = null; + _experiment.SetMonitor((provider) => + { + var channel = provider.GetService(); + var pipeline = provider.GetService(); + monitor = new TrialResultMonitor(channel, pipeline); + monitor.OnTrialCompleted += (o, e) => + { + var detail = BestResultUtil.ToRunDetail(Context, e, _pipeline); + progressHandler?.Report(detail); + }; + + return monitor; + }); + _experiment.SetTrialRunner(); + _experiment.Run(); + + var runDetails = monitor.RunDetails.Select(e => BestResultUtil.ToRunDetail(Context, e, _pipeline)); + var bestRun = BestResultUtil.ToRunDetail(Context, monitor.BestRun, _pipeline); + var result = new ExperimentResult(runDetails, bestRun); + + return result; + } + + public override ExperimentResult Execute(IDataView trainData, IDataView validationData, ColumnInformation columnInformation, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var label = columnInformation.LabelColumnName; + _experiment.SetBinaryClassificationMetric(Settings.OptimizingMetric, label); + _experiment.SetTrainingTimeInSeconds(Settings.MaxExperimentTimeInSeconds); + _experiment.SetDataset(trainData, validationData); + _pipeline = CreateBinaryClassificationPipeline(trainData, columnInformation, preFeaturizer); + _experiment.SetPipeline(_pipeline); + + // set monitor + TrialResultMonitor monitor = null; + _experiment.SetMonitor((provider) => + { + var channel = provider.GetService(); + var pipeline = provider.GetService(); + monitor = new TrialResultMonitor(channel, pipeline); + monitor.OnTrialCompleted += (o, e) => + { + var detail = BestResultUtil.ToRunDetail(Context, e, _pipeline); + progressHandler?.Report(detail); + }; + + return monitor; + }); + _experiment.SetTrialRunner(); + _experiment.Run(); + + var runDetails = monitor.RunDetails.Select(e => BestResultUtil.ToRunDetail(Context, e, _pipeline)); + var bestRun = BestResultUtil.ToRunDetail(Context, monitor.BestRun, _pipeline); + var result = new ExperimentResult(runDetails, bestRun); + + return result; + } + + public override ExperimentResult Execute(IDataView trainData, IDataView validationData, string labelColumnName = "Label", IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var columnInformation = new ColumnInformation() + { + LabelColumnName = labelColumnName, + }; + + return Execute(trainData, validationData, columnInformation, preFeaturizer, progressHandler); + } + + public override ExperimentResult Execute(IDataView trainData, string labelColumnName = "Label", string samplingKeyColumn = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var columnInformation = new ColumnInformation() + { + LabelColumnName = labelColumnName, + SamplingKeyColumnName = samplingKeyColumn, + }; + + return Execute(trainData, columnInformation, preFeaturizer, progressHandler); + } + + public override CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, ColumnInformation columnInformation = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var label = columnInformation.LabelColumnName; + _experiment.SetBinaryClassificationMetric(Settings.OptimizingMetric, label); + _experiment.SetTrainingTimeInSeconds(Settings.MaxExperimentTimeInSeconds); + _experiment.SetDataset(trainData, (int)numberOfCVFolds); + _pipeline = CreateBinaryClassificationPipeline(trainData, columnInformation, preFeaturizer); + _experiment.SetPipeline(_pipeline); + + // set monitor + TrialResultMonitor monitor = null; + _experiment.SetMonitor((provider) => + { + var channel = provider.GetService(); + var pipeline = provider.GetService(); + monitor = new TrialResultMonitor(channel, pipeline); + monitor.OnTrialCompleted += (o, e) => + { + var detail = BestResultUtil.ToCrossValidationRunDetail(Context, e, _pipeline); + progressHandler?.Report(detail); + }; + + return monitor; + }); + + _experiment.SetTrialRunner(); + _experiment.Run(); + + var runDetails = monitor.RunDetails.Select(e => BestResultUtil.ToCrossValidationRunDetail(Context, e, _pipeline)); + var bestResult = BestResultUtil.ToCrossValidationRunDetail(Context, monitor.BestRun, _pipeline); + + var result = new CrossValidationExperimentResult(runDetails, bestResult); + + return result; + } + + public override CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, string labelColumnName = "Label", string samplingKeyColumn = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var columnInformation = new ColumnInformation() + { + LabelColumnName = labelColumnName, + SamplingKeyColumnName = samplingKeyColumn, + }; + + return Execute(trainData, numberOfCVFolds, columnInformation, preFeaturizer, progressHandler); } private protected override RunDetail GetBestRun(IEnumerable> results) @@ -166,5 +314,149 @@ private protected override CrossValidationRunDetail { return BestResultUtil.GetBestRun(results, MetricsAgent, OptimizingMetricInfo.IsMaximizing); } + + private SweepablePipeline CreateBinaryClassificationPipeline(IDataView trainData, ColumnInformation columnInformation, IEstimator preFeaturizer = null) + { + var useSdca = Settings.Trainers.Contains(BinaryClassificationTrainer.SdcaLogisticRegression); + var uselbfgs = Settings.Trainers.Contains(BinaryClassificationTrainer.LbfgsLogisticRegression); + var useLgbm = Settings.Trainers.Contains(BinaryClassificationTrainer.LightGbm); + var useFastForest = Settings.Trainers.Contains(BinaryClassificationTrainer.FastForest); + var useFastTree = Settings.Trainers.Contains(BinaryClassificationTrainer.FastTree); + + if (preFeaturizer != null) + { + return preFeaturizer.Append(Context.Auto().Featurizer(trainData, columnInformation, Features)) + .Append(Context.Auto().BinaryClassification(labelColumnName: columnInformation.LabelColumnName, useSdca: useSdca, useFastTree: useFastTree, useLgbm: useLgbm, useLbfgs: uselbfgs, useFastForest: useFastForest, featureColumnName: Features)); + } + else + { + return Context.Auto().Featurizer(trainData, columnInformation, Features) + .Append(Context.Auto().BinaryClassification(labelColumnName: columnInformation.LabelColumnName, useSdca: useSdca, useFastTree: useFastTree, useLgbm: useLgbm, useLbfgs: uselbfgs, useFastForest: useFastForest, featureColumnName: Features)); + } + } + } + + internal class BinaryClassificationRunner : ITrialRunner + { + private MLContext _context; + private readonly IDatasetManager _datasetManager; + private readonly IMetricManager _metricManager; + private readonly SweepablePipeline _pipeline; + private readonly Random _rnd; + public BinaryClassificationRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager, SweepablePipeline pipeline, AutoMLExperiment.AutoMLExperimentSettings settings) + { + _context = context; + _datasetManager = datasetManager; + _metricManager = metricManager; + _pipeline = pipeline; + _rnd = settings.Seed.HasValue ? new Random(settings.Seed.Value) : new Random(); + } + + public void Dispose() + { + _context.CancelExecution(); + _context = null; + } + + public TrialResult Run(TrialSettings settings) + { + if (_metricManager is BinaryMetricManager metricManager) + { + var parameter = settings.Parameter[AutoMLExperiment.PipelineSearchspaceName]; + var pipeline = _pipeline.BuildFromOption(_context, parameter); + if (_datasetManager is ICrossValidateDatasetManager datasetManager) + { + var stopWatch = new Stopwatch(); + stopWatch.Start(); + var fold = datasetManager.Fold ?? 5; + var metrics = _context.BinaryClassification.CrossValidateNonCalibrated(datasetManager.Dataset, pipeline, fold, metricManager.LabelColumn); + + // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. + var res = metrics[_rnd.Next(fold)]; + var model = res.Model; + var metric = metricManager.Metric switch + { + BinaryClassificationMetric.PositivePrecision => res.Metrics.PositivePrecision, + BinaryClassificationMetric.Accuracy => res.Metrics.Accuracy, + BinaryClassificationMetric.AreaUnderRocCurve => res.Metrics.AreaUnderRocCurve, + BinaryClassificationMetric.AreaUnderPrecisionRecallCurve => res.Metrics.AreaUnderPrecisionRecallCurve, + _ => throw new NotImplementedException($"{metricManager.MetricName} is not supported!"), + }; + var loss = metricManager.IsMaximize ? -metric : metric; + stopWatch.Stop(); + + + return new TrialResult() + { + Loss = loss, + Metric = metric, + Model = model, + TrialSettings = settings, + DurationInMilliseconds = stopWatch.ElapsedMilliseconds, + Metrics = res.Metrics, + CrossValidationMetrics = metrics, + Pipeline = pipeline, + }; + } + + if (_datasetManager is ITrainTestDatasetManager trainTestDatasetManager) + { + var stopWatch = new Stopwatch(); + stopWatch.Start(); + var model = pipeline.Fit(trainTestDatasetManager.TrainDataset); + var eval = model.Transform(trainTestDatasetManager.TestDataset); + var metrics = _context.BinaryClassification.EvaluateNonCalibrated(eval, metricManager.LabelColumn, predictedLabelColumnName: metricManager.PredictedColumn); + + // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. + var metric = Enum.Parse(typeof(BinaryClassificationMetric), metricManager.MetricName) switch + { + BinaryClassificationMetric.PositivePrecision => metrics.PositivePrecision, + BinaryClassificationMetric.Accuracy => metrics.Accuracy, + BinaryClassificationMetric.AreaUnderRocCurve => metrics.AreaUnderRocCurve, + BinaryClassificationMetric.AreaUnderPrecisionRecallCurve => metrics.AreaUnderPrecisionRecallCurve, + _ => throw new NotImplementedException($"{metricManager.Metric} is not supported!"), + }; + var loss = metricManager.IsMaximize ? -metric : metric; + + stopWatch.Stop(); + + + return new TrialResult() + { + Loss = loss, + Metric = metric, + Model = model, + TrialSettings = settings, + DurationInMilliseconds = stopWatch.ElapsedMilliseconds, + Metrics = metrics, + Pipeline = pipeline, + }; + } + } + + throw new ArgumentException($"The runner metric manager is of type {_metricManager.GetType()} which expected to be of type {typeof(ITrainTestDatasetManager)} or {typeof(ICrossValidateDatasetManager)}"); + } + + public Task RunAsync(TrialSettings settings, CancellationToken ct) + { + try + { + using (var ctRegistration = ct.Register(() => + { + _context?.CancelExecution(); + })) + { + return Task.Run(() => Run(settings)); + } + } + catch (Exception ex) when (ct.IsCancellationRequested) + { + throw new OperationCanceledException(ex.Message, ex.InnerException); + } + catch (Exception) + { + throw; + } + } } } diff --git a/src/Microsoft.ML.AutoML/API/ExperimentBase.cs b/src/Microsoft.ML.AutoML/API/ExperimentBase.cs index eb6db27cdb..dd2f0ed7e7 100644 --- a/src/Microsoft.ML.AutoML/API/ExperimentBase.cs +++ b/src/Microsoft.ML.AutoML/API/ExperimentBase.cs @@ -64,7 +64,7 @@ internal ExperimentBase(MLContext context, /// /// Depending on the size of your data, the AutoML experiment could take a long time to execute. /// - public ExperimentResult Execute(IDataView trainData, string labelColumnName = DefaultColumnNames.Label, + public virtual ExperimentResult Execute(IDataView trainData, string labelColumnName = DefaultColumnNames.Label, string samplingKeyColumn = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) { ColumnInformation columnInformation; @@ -106,7 +106,7 @@ public ExperimentResult Execute(IDataView trainData, string labelColum /// /// Depending on the size of your data, the AutoML experiment could take a long time to execute. /// - public ExperimentResult Execute(IDataView trainData, ColumnInformation columnInformation, + public virtual ExperimentResult Execute(IDataView trainData, ColumnInformation columnInformation, IEstimator preFeaturizer = null, IProgress> progressHandler = null) { // Cross val threshold for # of dataset rows -- @@ -156,7 +156,7 @@ private string GetSamplingKey(string groupIdColumnName, string samplingKeyColumn /// /// Depending on the size of your data, the AutoML experiment could take a long time to execute. /// - public ExperimentResult Execute(IDataView trainData, IDataView validationData, string labelColumnName = DefaultColumnNames.Label, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + public virtual ExperimentResult Execute(IDataView trainData, IDataView validationData, string labelColumnName = DefaultColumnNames.Label, IEstimator preFeaturizer = null, IProgress> progressHandler = null) { var columnInformation = (_task == TaskKind.Ranking) ? new ColumnInformation() { LabelColumnName = labelColumnName, GroupIdColumnName = DefaultColumnNames.GroupId } : @@ -184,7 +184,7 @@ public ExperimentResult Execute(IDataView trainData, IDataView validat /// /// Depending on the size of your data, the AutoML experiment could take a long time to execute. /// - public ExperimentResult Execute(IDataView trainData, IDataView validationData, + public virtual ExperimentResult Execute(IDataView trainData, IDataView validationData, ColumnInformation columnInformation, IEstimator preFeaturizer = null, IProgress> progressHandler = null) { @@ -214,7 +214,7 @@ public ExperimentResult Execute(IDataView trainData, IDataView validat /// /// Depending on the size of your data, the AutoML experiment could take a long time to execute. /// - public CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, + public virtual CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, ColumnInformation columnInformation = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) { @@ -244,7 +244,7 @@ public CrossValidationExperimentResult Execute(IDataView trainData, ui /// /// Depending on the size of your data, the AutoML experiment could take a long time to execute. /// - public CrossValidationExperimentResult Execute(IDataView trainData, + public virtual CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, string labelColumnName = DefaultColumnNames.Label, string samplingKeyColumn = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) diff --git a/src/Microsoft.ML.AutoML/API/ExperimentSettings.cs b/src/Microsoft.ML.AutoML/API/ExperimentSettings.cs index 8b54f697c4..a505eb4895 100644 --- a/src/Microsoft.ML.AutoML/API/ExperimentSettings.cs +++ b/src/Microsoft.ML.AutoML/API/ExperimentSettings.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Threading; namespace Microsoft.ML.AutoML @@ -56,6 +57,8 @@ public abstract class ExperimentSettings /// The default value is . public CacheBeforeTrainer CacheBeforeTrainer { get; set; } + public double? MaximumMemoryUsageInMegaByte { get; set; } + internal int MaxModels; /// diff --git a/src/Microsoft.ML.AutoML/API/MulticlassClassificationExperiment.cs b/src/Microsoft.ML.AutoML/API/MulticlassClassificationExperiment.cs index 1e2a88ca07..020b59c1dd 100644 --- a/src/Microsoft.ML.AutoML/API/MulticlassClassificationExperiment.cs +++ b/src/Microsoft.ML.AutoML/API/MulticlassClassificationExperiment.cs @@ -4,8 +4,13 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; using Microsoft.ML.Data; +using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; using Microsoft.ML.Trainers.FastTree; using Microsoft.ML.Trainers.LightGbm; @@ -77,11 +82,6 @@ public enum MulticlassClassificationMetric /// public enum MulticlassClassificationTrainer { - /// - /// using . - /// - AveragedPerceptronOva, - /// /// using . /// @@ -97,11 +97,6 @@ public enum MulticlassClassificationTrainer /// LightGbm, - /// - /// using . - /// - LinearSupportVectorMachinesOva, - /// /// See . /// @@ -116,16 +111,6 @@ public enum MulticlassClassificationTrainer /// See . /// SdcaMaximumEntropy, - - /// - /// using . - /// - SgdCalibratedOva, - - /// - /// using . - /// - SymbolicSgdLogisticRegressionOva, } /// @@ -139,6 +124,10 @@ public enum MulticlassClassificationTrainer /// public sealed class MulticlassClassificationExperiment : ExperimentBase { + private readonly AutoMLExperiment _experiment; + private const string Features = "__Features__"; + private SweepablePipeline _pipeline; + internal MulticlassClassificationExperiment(MLContext context, MulticlassExperimentSettings settings) : base(context, new MultiMetricsAgent(context, settings.OptimizingMetric), @@ -147,6 +136,169 @@ internal MulticlassClassificationExperiment(MLContext context, MulticlassExperim TaskKind.MulticlassClassification, TrainerExtensionUtil.GetTrainerNames(settings.Trainers)) { + _experiment = context.Auto().CreateExperiment(); + + if (settings.MaximumMemoryUsageInMegaByte is double d) + { + _experiment.SetMaximumMemoryUsageInMegaByte(d); + } + } + + public override ExperimentResult Execute(IDataView trainData, ColumnInformation columnInformation, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var label = columnInformation.LabelColumnName; + _experiment.SetMulticlassClassificationMetric(Settings.OptimizingMetric, label); + _experiment.SetTrainingTimeInSeconds(Settings.MaxExperimentTimeInSeconds); + + // Cross val threshold for # of dataset rows -- + // If dataset has < threshold # of rows, use cross val. + // Else, run experiment using train-validate split. + const int crossValRowCountThreshold = 15000; + var rowCount = DatasetDimensionsUtil.CountRows(trainData, crossValRowCountThreshold); + // TODO + // split cross validation result according to sample key as well. + if (rowCount < crossValRowCountThreshold) + { + const int numCrossValFolds = 10; + _experiment.SetDataset(trainData, numCrossValFolds); + } + else + { + var splitData = Context.Data.TrainTestSplit(trainData); + return Execute(splitData.TrainSet, splitData.TestSet, columnInformation, preFeaturizer, progressHandler); + } + + _pipeline = CreateMulticlassClassificationPipeline(trainData, columnInformation, preFeaturizer); + _experiment.SetPipeline(_pipeline); + + // set monitor + TrialResultMonitor monitor = null; + _experiment.SetMonitor((provider) => + { + var channel = provider.GetService(); + var pipeline = provider.GetService(); + monitor = new TrialResultMonitor(channel, pipeline); + monitor.OnTrialCompleted += (o, e) => + { + var detail = BestResultUtil.ToRunDetail(Context, e, _pipeline); + progressHandler?.Report(detail); + }; + + return monitor; + }); + + _experiment.SetTrialRunner(); + _experiment.Run(); + + var runDetails = monitor.RunDetails.Select(e => BestResultUtil.ToRunDetail(Context, e, _pipeline)); + var bestRun = BestResultUtil.ToRunDetail(Context, monitor.BestRun, _pipeline); + var result = new ExperimentResult(runDetails, bestRun); + + return result; + } + public override ExperimentResult Execute(IDataView trainData, IDataView validationData, ColumnInformation columnInformation, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var label = columnInformation.LabelColumnName; + _experiment.SetMulticlassClassificationMetric(Settings.OptimizingMetric, label); + _experiment.SetTrainingTimeInSeconds(Settings.MaxExperimentTimeInSeconds); + _experiment.SetDataset(trainData, validationData); + + _pipeline = CreateMulticlassClassificationPipeline(trainData, columnInformation, preFeaturizer); + _experiment.SetPipeline(_pipeline); + + // set monitor + TrialResultMonitor monitor = null; + _experiment.SetMonitor((provider) => + { + var channel = provider.GetService(); + var pipeline = provider.GetService(); + monitor = new TrialResultMonitor(channel, pipeline); + monitor.OnTrialCompleted += (o, e) => + { + var detail = BestResultUtil.ToRunDetail(Context, e, _pipeline); + progressHandler?.Report(detail); + }; + + return monitor; + }); + + _experiment.SetTrialRunner(); + _experiment.Run(); + + var runDetails = monitor.RunDetails.Select(e => BestResultUtil.ToRunDetail(Context, e, _pipeline)); + var bestRun = BestResultUtil.ToRunDetail(Context, monitor.BestRun, _pipeline); + var result = new ExperimentResult(runDetails, bestRun); + + return result; + } + + public override ExperimentResult Execute(IDataView trainData, IDataView validationData, string labelColumnName = "Label", IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var columnInformation = new ColumnInformation() + { + LabelColumnName = labelColumnName, + }; + + return Execute(trainData, validationData, columnInformation, preFeaturizer, progressHandler); + } + + public override ExperimentResult Execute(IDataView trainData, string labelColumnName = "Label", string samplingKeyColumn = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var columnInformation = new ColumnInformation() + { + LabelColumnName = labelColumnName, + SamplingKeyColumnName = samplingKeyColumn, + }; + + return Execute(trainData, columnInformation, preFeaturizer, progressHandler); + } + + public override CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, ColumnInformation columnInformation = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var label = columnInformation.LabelColumnName; + _experiment.SetMulticlassClassificationMetric(Settings.OptimizingMetric, label); + _experiment.SetTrainingTimeInSeconds(Settings.MaxExperimentTimeInSeconds); + _experiment.SetDataset(trainData, (int)numberOfCVFolds); + + _pipeline = CreateMulticlassClassificationPipeline(trainData, columnInformation, preFeaturizer); + _experiment.SetPipeline(_pipeline); + + // set monitor + TrialResultMonitor monitor = null; + _experiment.SetMonitor((provider) => + { + var channel = provider.GetService(); + var pipeline = provider.GetService(); + monitor = new TrialResultMonitor(channel, pipeline); + monitor.OnTrialCompleted += (o, e) => + { + var detail = BestResultUtil.ToCrossValidationRunDetail(Context, e, _pipeline); + progressHandler?.Report(detail); + }; + + return monitor; + }); + + _experiment.SetTrialRunner(); + _experiment.Run(); + + var runDetails = monitor.RunDetails.Select(e => BestResultUtil.ToCrossValidationRunDetail(Context, e, _pipeline)); + var bestResult = BestResultUtil.ToCrossValidationRunDetail(Context, monitor.BestRun, _pipeline); + + var result = new CrossValidationExperimentResult(runDetails, bestResult); + + return result; + } + + public override CrossValidationExperimentResult Execute(IDataView trainData, uint numberOfCVFolds, string labelColumnName = "Label", string samplingKeyColumn = null, IEstimator preFeaturizer = null, IProgress> progressHandler = null) + { + var columnInformation = new ColumnInformation() + { + LabelColumnName = labelColumnName, + SamplingKeyColumnName = samplingKeyColumn, + }; + + return Execute(trainData, numberOfCVFolds, columnInformation, preFeaturizer, progressHandler); } private protected override CrossValidationRunDetail GetBestCrossValRun(IEnumerable> results) @@ -158,5 +310,157 @@ private protected override RunDetail GetBestRun { return BestResultUtil.GetBestRun(results, MetricsAgent, OptimizingMetricInfo.IsMaximizing); } + + private SweepablePipeline CreateMulticlassClassificationPipeline(IDataView trainData, ColumnInformation columnInformation, IEstimator preFeaturizer = null) + { + var useSdca = Settings.Trainers.Contains(MulticlassClassificationTrainer.SdcaMaximumEntropy); + var uselbfgs = Settings.Trainers.Contains(MulticlassClassificationTrainer.LbfgsLogisticRegressionOva); + var useLgbm = Settings.Trainers.Contains(MulticlassClassificationTrainer.LightGbm); + var useFastForest = Settings.Trainers.Contains(MulticlassClassificationTrainer.FastForestOva); + var useFastTree = Settings.Trainers.Contains(MulticlassClassificationTrainer.FastTreeOva); + + SweepablePipeline pipeline = new SweepablePipeline(); + if (preFeaturizer != null) + { + pipeline = pipeline.Append(preFeaturizer); + } + var label = columnInformation.LabelColumnName; + + + pipeline = pipeline.Append(Context.Auto().Featurizer(trainData, columnInformation, Features)); + pipeline = pipeline.Append(Context.Transforms.Conversion.MapValueToKey(label, label)); + pipeline = pipeline.Append(Context.Auto().MultiClassification(label, useSdca: useSdca, useFastTree: useFastTree, useLgbm: useLgbm, useLbfgs: uselbfgs, useFastForest: useFastForest, featureColumnName: Features)); + pipeline = pipeline.Append(Context.Transforms.Conversion.MapKeyToValue(DefaultColumnNames.PredictedLabel, DefaultColumnNames.PredictedLabel)); + + return pipeline; + } + } + + + internal class MulticlassClassificationRunner : ITrialRunner + { + private MLContext _context; + private readonly IDatasetManager _datasetManager; + private readonly IMetricManager _metricManager; + private readonly SweepablePipeline _pipeline; + private readonly Random _rnd; + + public MulticlassClassificationRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager, SweepablePipeline pipeline, AutoMLExperiment.AutoMLExperimentSettings settings) + { + _context = context; + _datasetManager = datasetManager; + _metricManager = metricManager; + _pipeline = pipeline; + _rnd = settings.Seed.HasValue ? new Random(settings.Seed.Value) : new Random(); + } + + public TrialResult Run(TrialSettings settings) + { + if (_metricManager is MultiClassMetricManager metricManager) + { + var parameter = settings.Parameter[AutoMLExperiment.PipelineSearchspaceName]; + var pipeline = _pipeline.BuildFromOption(_context, parameter); + if (_datasetManager is ICrossValidateDatasetManager datasetManager) + { + var stopWatch = new Stopwatch(); + stopWatch.Start(); + var fold = datasetManager.Fold ?? 5; + var metrics = _context.MulticlassClassification.CrossValidate(datasetManager.Dataset, pipeline, fold, metricManager.LabelColumn); + + // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. + var res = metrics[_rnd.Next(fold)]; + var model = res.Model; + var metric = metricManager.Metric switch + { + MulticlassClassificationMetric.MacroAccuracy => res.Metrics.MacroAccuracy, + MulticlassClassificationMetric.MicroAccuracy => res.Metrics.MicroAccuracy, + MulticlassClassificationMetric.LogLoss => res.Metrics.LogLoss, + MulticlassClassificationMetric.LogLossReduction => res.Metrics.LogLossReduction, + MulticlassClassificationMetric.TopKAccuracy => res.Metrics.TopKAccuracy, + _ => throw new NotImplementedException($"{metricManager.MetricName} is not supported!"), + }; + var loss = metricManager.IsMaximize ? -metric : metric; + + stopWatch.Stop(); + + + return new TrialResult() + { + Loss = loss, + Metric = metric, + Model = model, + TrialSettings = settings, + DurationInMilliseconds = stopWatch.ElapsedMilliseconds, + Metrics = res.Metrics, + CrossValidationMetrics = metrics, + Pipeline = pipeline, + }; + } + + if (_datasetManager is ITrainTestDatasetManager trainTestDatasetManager) + { + var stopWatch = new Stopwatch(); + stopWatch.Start(); + var model = pipeline.Fit(trainTestDatasetManager.TrainDataset); + var eval = model.Transform(trainTestDatasetManager.TestDataset); + var metrics = _context.MulticlassClassification.Evaluate(eval, metricManager.LabelColumn, predictedLabelColumnName: metricManager.PredictedColumn); + + var metric = metricManager.Metric switch + { + MulticlassClassificationMetric.MacroAccuracy => metrics.MacroAccuracy, + MulticlassClassificationMetric.MicroAccuracy => metrics.MicroAccuracy, + MulticlassClassificationMetric.LogLoss => metrics.LogLoss, + MulticlassClassificationMetric.LogLossReduction => metrics.LogLossReduction, + MulticlassClassificationMetric.TopKAccuracy => metrics.TopKAccuracy, + _ => throw new NotImplementedException($"{metricManager.Metric} is not supported!"), + }; + var loss = metricManager.IsMaximize ? -metric : metric; + + stopWatch.Stop(); + + + return new TrialResult() + { + Loss = loss, + Metric = metric, + Model = model, + TrialSettings = settings, + DurationInMilliseconds = stopWatch.ElapsedMilliseconds, + Metrics = metrics, + Pipeline = pipeline, + }; + } + } + + throw new ArgumentException($"The runner metric manager is of type {_metricManager.GetType()} which expected to be of type {typeof(ITrainTestDatasetManager)} or {typeof(ICrossValidateDatasetManager)}"); + } + + public Task RunAsync(TrialSettings settings, CancellationToken ct) + { + try + { + using (var ctRegistration = ct.Register(() => + { + _context?.CancelExecution(); + })) + { + return Task.Run(() => Run(settings)); + } + } + catch (Exception ex) when (ct.IsCancellationRequested) + { + throw new OperationCanceledException(ex.Message, ex.InnerException); + } + catch (Exception) + { + throw; + } + } + + public void Dispose() + { + _context.CancelExecution(); + _context = null; + } } } diff --git a/src/Microsoft.ML.AutoML/API/SweepableExtension.cs b/src/Microsoft.ML.AutoML/API/SweepableExtension.cs index 006e35ee6e..506037d549 100644 --- a/src/Microsoft.ML.AutoML/API/SweepableExtension.cs +++ b/src/Microsoft.ML.AutoML/API/SweepableExtension.cs @@ -6,59 +6,48 @@ namespace Microsoft.ML.AutoML { public static class SweepableExtension { - public static SweepableEstimatorPipeline Append(this IEstimator estimator, SweepableEstimator estimator1) + public static SweepablePipeline Append(this IEstimator estimator, SweepableEstimator estimator1) { - return new SweepableEstimatorPipeline().Append(estimator).Append(estimator1); + return new SweepablePipeline().Append(estimator).Append(estimator1); } - public static SweepableEstimatorPipeline Append(this SweepableEstimatorPipeline pipeline, IEstimator estimator1) + public static SweepablePipeline Append(this SweepablePipeline pipeline, IEstimator estimator) { - return pipeline.Append(new SweepableEstimator((context, parameter) => estimator1, new SearchSpace.SearchSpace())); + return pipeline.Append(new SweepableEstimator((context, parameter) => estimator, new SearchSpace.SearchSpace())); } - public static SweepableEstimatorPipeline Append(this SweepableEstimator estimator, SweepableEstimator estimator1) + public static SweepablePipeline Append(this SweepableEstimator estimator, SweepablePipeline estimator1) { - return new SweepableEstimatorPipeline().Append(estimator).Append(estimator1); + return new SweepablePipeline().Append(estimator).Append(estimator1); } - public static SweepableEstimatorPipeline Append(this SweepableEstimator estimator, IEstimator estimator1) + public static SweepablePipeline Append(this SweepableEstimator estimator, IEstimator estimator1) { - return new SweepableEstimatorPipeline().Append(estimator).Append(estimator1); + return new SweepablePipeline().Append(estimator).Append(estimator1); } - public static MultiModelPipeline Append(this IEstimator estimator, params SweepableEstimator[] estimators) + public static SweepablePipeline Append(this IEstimator estimator, SweepablePipeline pipeline) { var sweepableEstimator = new SweepableEstimator((context, parameter) => estimator, new SearchSpace.SearchSpace()); - var multiModelPipeline = new MultiModelPipeline().Append(sweepableEstimator).Append(estimators); + var res = new SweepablePipeline().Append(sweepableEstimator).Append(pipeline); - return multiModelPipeline; + return res; } - public static MultiModelPipeline Append(this MultiModelPipeline pipeline, IEstimator estimator) + public static SweepablePipeline Append(this SweepableEstimator estimator, params SweepableEstimator[] estimators) { - var sweepableEstimator = new SweepableEstimator((context, parameter) => estimator, new SearchSpace.SearchSpace()); - var multiModelPipeline = pipeline.Append(sweepableEstimator); - - return multiModelPipeline; - } + var pipeline = new SweepablePipeline(); + pipeline = pipeline.Append(estimator); - public static MultiModelPipeline Append(this SweepableEstimatorPipeline pipeline, params SweepableEstimator[] estimators) - { - var multiModelPipeline = new MultiModelPipeline(); - foreach (var estimator in pipeline.Estimators) - { - multiModelPipeline = multiModelPipeline.Append(estimator); - } - - return multiModelPipeline.Append(estimators); + return pipeline.Append(estimators); } - public static MultiModelPipeline Append(this SweepableEstimator estimator, params SweepableEstimator[] estimators) + public static SweepablePipeline Append(this IEstimator estimator, params SweepableEstimator[] estimators) { - var multiModelPipeline = new MultiModelPipeline(); - multiModelPipeline = multiModelPipeline.Append(estimator); + var sweepableEstimator = new SweepableEstimator((context, parameter) => estimator, new SearchSpace.SearchSpace()); + var pipeline = new SweepablePipeline().Append(sweepableEstimator).Append(estimators); - return multiModelPipeline.Append(estimators); + return pipeline; } } } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/AutoMLExperiment.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/AutoMLExperiment.cs index eef54851c3..358b806d3c 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/AutoMLExperiment.cs +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/AutoMLExperiment.cs @@ -3,133 +3,173 @@ // See the LICENSE file in the project root for more information. using System; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.ML.Data; using Microsoft.ML.Runtime; +using Microsoft.ML.SearchSpace; using static Microsoft.ML.DataOperationsCatalog; namespace Microsoft.ML.AutoML { public class AutoMLExperiment { + internal const string PipelineSearchspaceName = "_pipeline_"; private readonly AutoMLExperimentSettings _settings; private readonly MLContext _context; - private double _bestError = double.MaxValue; + private double _bestLoss = double.MaxValue; private TrialResult _bestTrialResult = null; private readonly IServiceCollection _serviceCollection; + private CancellationTokenSource _globalCancellationTokenSource; public AutoMLExperiment(MLContext context, AutoMLExperimentSettings settings) { _context = context; _settings = settings; + + if (_settings.Seed == null) + { + _settings.Seed = ((IHostEnvironmentInternal)_context.Model.GetEnvironment()).Seed; + } + + if (_settings.SearchSpace == null) + { + _settings.SearchSpace = new SearchSpace.SearchSpace(); + } + _serviceCollection = new ServiceCollection(); + InitializeServiceCollection(); } private void InitializeServiceCollection() { - _serviceCollection.TryAddSingleton(_context); + _serviceCollection.TryAddTransient((provider) => + { + var channel = provider.GetRequiredService(); + var context = new MLContext(_settings.Seed); + _globalCancellationTokenSource.Token.Register(() => + { + // only force-canceling running trials when there's completed trials. + // otherwise, wait for the current running trial to be completed. + if (_bestTrialResult != null) + context.CancelExecution(); + }); + + context.Log += (o, e) => + { + // Relay logs that are generated by the current MLContext to the Experiment class's + // _logger. + switch (e.Kind) + { + case ChannelMessageKind.Trace: + channel.Trace(e.Message); + break; + case ChannelMessageKind.Info: + channel.Info(e.Message); + break; + case ChannelMessageKind.Warning: + channel.Warning(e.Message); + break; + case ChannelMessageKind.Error: + channel.Error(e.Message); + break; + default: + break; + } + }; + + return context; + }); + + this.SetPerformanceMonitor(2000); _serviceCollection.TryAddSingleton(_settings); - _serviceCollection.TryAddSingleton(); - _serviceCollection.TryAddSingleton(); - _serviceCollection.TryAddSingleton(); - _serviceCollection.TryAddTransient(); - _serviceCollection.TryAddTransient(); - _serviceCollection.TryAddTransient(); - _serviceCollection.TryAddTransient(); - _serviceCollection.TryAddTransient(); - _serviceCollection.TryAddTransient(); - _serviceCollection.TryAddScoped(); - _serviceCollection.TryAddScoped(); + _serviceCollection.TryAddSingleton(((IChannelProvider)_context).Start(nameof(AutoMLExperiment))); } + internal IServiceCollection ServiceCollection { get => _serviceCollection; } + public AutoMLExperiment SetTrainingTimeInSeconds(uint trainingTimeInSeconds) { _settings.MaxExperimentTimeInSeconds = trainingTimeInSeconds; return this; } - public AutoMLExperiment SetDataset(IDataView train, IDataView test) + public AutoMLExperiment SetMaximumMemoryUsageInMegaByte(double value = double.MaxValue) { - var datasetManager = new TrainTestDatasetManager() - { - TrainDataset = train, - TestDataset = test - }; + Contracts.Assert(!double.IsNaN(value) && value > 0, "value can't be nan or non-positive"); + _settings.MaximumMemoryUsageInMegaByte = value; + return this; + } - _serviceCollection.AddSingleton(datasetManager); + public AutoMLExperiment AddSearchSpace(string key, SearchSpace.SearchSpace searchSpace) + { + _settings.SearchSpace[key] = searchSpace; return this; } - public AutoMLExperiment SetDataset(TrainTestData trainTestSplit) + public AutoMLExperiment SetMonitor(TMonitor monitor) + where TMonitor : class, IMonitor { - SetDataset(trainTestSplit.TrainSet, trainTestSplit.TestSet); + _serviceCollection.AddSingleton(monitor); return this; } - public AutoMLExperiment SetDataset(IDataView dataset, int fold = 10) + public AutoMLExperiment SetMonitor() + where TMonitor : class, IMonitor { - var datasetManager = new CrossValidateDatasetManager() - { - Dataset = dataset, - Fold = fold, - }; - - _serviceCollection.AddSingleton(datasetManager); + _serviceCollection.AddSingleton(); return this; } - public AutoMLExperiment SetTunerFactory() - where TTunerFactory : ITunerFactory + public AutoMLExperiment SetMonitor(Func factory) + where TMonitor : class, IMonitor { - var descriptor = new ServiceDescriptor(typeof(ITunerFactory), typeof(TTunerFactory), ServiceLifetime.Singleton); - if (_serviceCollection.Contains(descriptor)) - { - _serviceCollection.Replace(descriptor); - } - else - { - _serviceCollection.Add(descriptor); - } + _serviceCollection.AddSingleton(factory); return this; } - public AutoMLExperiment SetMonitor(IMonitor monitor) + public AutoMLExperiment SetTrialRunner(TTrialRunner runner) + where TTrialRunner : class, ITrialRunner { - var descriptor = new ServiceDescriptor(typeof(IMonitor), monitor); - if (_serviceCollection.Contains(descriptor)) - { - _serviceCollection.Replace(descriptor); - } - else - { - _serviceCollection.Add(descriptor); - } + _serviceCollection.AddSingleton(runner); return this; } - public AutoMLExperiment SetPipeline(MultiModelPipeline pipeline) + public AutoMLExperiment SetTrialRunner(Func factory) + where TTrialRunner : class, ITrialRunner { - _settings.Pipeline = pipeline; + _serviceCollection.AddTransient(factory); + return this; } - public AutoMLExperiment SetIsMaximizeMetric(bool isMaximize) + public AutoMLExperiment SetTrialRunner() + where TTrialRunner : class, ITrialRunner { - _settings.IsMaximizeMetric = isMaximize; + _serviceCollection.AddTransient(); + return this; } - public AutoMLExperiment SetTrialRunner(ITrialRunner runner) + public AutoMLExperiment SetTuner(TTuner proposer) + where TTuner : class, ITuner { - var factory = new CustomRunnerFactory(runner); - var descriptor = new ServiceDescriptor(typeof(ITrialRunnerFactory), factory); + return this.SetTuner((service) => proposer); + } + + public AutoMLExperiment SetTuner(Func factory) + where TTuner : class, ITuner + { + var descriptor = ServiceDescriptor.Singleton(factory); + if (_serviceCollection.Contains(descriptor)) { _serviceCollection.Replace(descriptor); @@ -142,57 +182,26 @@ public AutoMLExperiment SetTrialRunner(ITrialRunner runner) return this; } - public AutoMLExperiment SetPipeline(SweepableEstimatorPipeline pipeline) + public AutoMLExperiment SetTuner() + where TTuner : class, ITuner { - var res = new MultiModelPipeline(); - foreach (var e in pipeline.Estimators) - { - res = res.Append(e); - } - - SetPipeline(res); - - return this; - } - - public AutoMLExperiment SetEvaluateMetric(BinaryClassificationMetric metric, string labelColumn = "label", string predictedColumn = "Predicted") - { - var metricManager = new BinaryMetricManager() - { - Metric = metric, - PredictedColumn = predictedColumn, - LabelColumn = labelColumn, - }; - _serviceCollection.AddSingleton(metricManager); - SetIsMaximizeMetric(metricManager.IsMaximize); + _serviceCollection.AddSingleton(); return this; } - public AutoMLExperiment SetEvaluateMetric(MulticlassClassificationMetric metric, string labelColumn = "label", string predictedColumn = "Predicted") + internal AutoMLExperiment SetPerformanceMonitor() + where TPerformanceMonitor : class, IPerformanceMonitor { - var metricManager = new MultiClassMetricManager() - { - Metric = metric, - PredictedColumn = predictedColumn, - LabelColumn = labelColumn, - }; - _serviceCollection.AddSingleton(metricManager); - SetIsMaximizeMetric(metricManager.IsMaximize); + _serviceCollection.AddTransient(); return this; } - public AutoMLExperiment SetEvaluateMetric(RegressionMetric metric, string labelColumn = "Label", string scoreColumn = "Score") + internal AutoMLExperiment SetPerformanceMonitor(Func factory) + where TPerformanceMonitor : class, IPerformanceMonitor { - var metricManager = new RegressionMetricManager() - { - Metric = metric, - ScoreColumn = scoreColumn, - LabelColumn = labelColumn, - }; - _serviceCollection.AddSingleton(metricManager); - SetIsMaximizeMetric(metricManager.IsMaximize); + _serviceCollection.AddTransient(factory); return this; } @@ -215,60 +224,101 @@ public TrialResult Run() public async Task RunAsync(CancellationToken ct = default) { ValidateSettings(); - var cts = new CancellationTokenSource(); + _globalCancellationTokenSource = new CancellationTokenSource(); _settings.CancellationToken = ct; - cts.CancelAfter((int)_settings.MaxExperimentTimeInSeconds * 1000); - _settings.CancellationToken.Register(() => cts.Cancel()); - cts.Token.Register(() => _context.CancelExecution()); - - InitializeServiceCollection(); + // use TimeSpan to avoid overflow. + _globalCancellationTokenSource.CancelAfter(TimeSpan.FromSeconds(_settings.MaxExperimentTimeInSeconds)); + _settings.CancellationToken.Register(() => _globalCancellationTokenSource.Cancel()); var serviceProvider = _serviceCollection.BuildServiceProvider(); var monitor = serviceProvider.GetService(); + var logger = serviceProvider.GetRequiredService(); var trialNum = 0; - var pipelineProposer = serviceProvider.GetService(); - var hyperParameterProposer = serviceProvider.GetService(); - var runnerFactory = serviceProvider.GetService(); + var tuner = serviceProvider.GetService(); + Contracts.Assert(tuner != null, "tuner can't be null"); - while (true) + while (!_globalCancellationTokenSource.Token.IsCancellationRequested) { + var setting = new TrialSettings() + { + TrialId = trialNum++, + Parameter = Parameter.CreateNestedParameter(), + }; + var parameter = tuner.Propose(setting); + setting.Parameter = parameter; + + monitor?.ReportRunningTrial(setting); try { - if (cts.Token.IsCancellationRequested) + using (var trialCancellationTokenSource = new CancellationTokenSource()) + using (var deregisterCallback = _globalCancellationTokenSource.Token.Register(() => + { + // only force-canceling running trials when there's completed trials. + // otherwise, wait for the current running trial to be completed. + if (_bestTrialResult != null) + trialCancellationTokenSource.Cancel(); + })) + using (var performanceMonitor = serviceProvider.GetService()) + using (var runner = serviceProvider.GetRequiredService()) { - break; + performanceMonitor.MemoryUsageInMegaByte += (o, m) => + { + if (_settings.MaximumMemoryUsageInMegaByte is double d && m > d && !trialCancellationTokenSource.IsCancellationRequested) + { + logger.Trace($"cancel current trial {setting.TrialId} because it uses {m} mb memory and the maximum memory usage is {d}"); + trialCancellationTokenSource.Cancel(); + + GC.AddMemoryPressure(Convert.ToInt64(m) * 1024 * 1024); + GC.Collect(); + } + }; + + performanceMonitor.Start(); + logger.Trace($"trial setting - {JsonSerializer.Serialize(setting)}"); + var trialResult = await runner.RunAsync(setting, trialCancellationTokenSource.Token); + + var peakCpu = performanceMonitor?.GetPeakCpuUsage(); + var peakMemoryInMB = performanceMonitor?.GetPeakMemoryUsageInMegaByte(); + trialResult.PeakCpu = peakCpu; + trialResult.PeakMemoryInMegaByte = peakMemoryInMB; + + monitor?.ReportCompletedTrial(trialResult); + tuner.Update(trialResult); + + var loss = trialResult.Loss; + if (loss < _bestLoss) + { + _bestTrialResult = trialResult; + _bestLoss = loss; + monitor?.ReportBestTrial(trialResult); + } } - - var setting = new TrialSettings() + } + catch (OperationCanceledException ex) when (_globalCancellationTokenSource.IsCancellationRequested == false) + { + monitor?.ReportFailTrial(setting, ex); + var result = new TrialResult { - ExperimentSettings = _settings, - TrialId = trialNum++, + TrialSettings = setting, + Loss = double.MaxValue, }; - setting = pipelineProposer.Propose(setting); - setting = hyperParameterProposer.Propose(setting); - monitor.ReportRunningTrial(setting); - var runner = runnerFactory.CreateTrialRunner(); - var trialResult = runner.Run(setting, serviceProvider); - monitor.ReportCompletedTrial(trialResult); - hyperParameterProposer.Update(setting, trialResult); - pipelineProposer.Update(setting, trialResult); - - var error = _settings.IsMaximizeMetric ? 1 - trialResult.Metric : trialResult.Metric; - if (error < _bestError) - { - _bestTrialResult = trialResult; - _bestError = error; - monitor.ReportBestTrial(trialResult); - } + tuner.Update(result); + continue; } - catch (Exception) + catch (OperationCanceledException) when (_globalCancellationTokenSource.IsCancellationRequested) { - if (cts.Token.IsCancellationRequested) - { - break; - } - else + break; + } + catch (Exception ex) + { + monitor?.ReportFailTrial(setting, ex); + + if (!_globalCancellationTokenSource.IsCancellationRequested && _bestTrialResult == null) { + // TODO + // it's questionable on whether to abort the entire training process + // for a single fail trial. We should make it an option and only exit + // when error is fatal (like schema mismatch). throw; } } @@ -292,11 +342,9 @@ private void ValidateSettings() public class AutoMLExperimentSettings : ExperimentSettings { - public MultiModelPipeline Pipeline { get; set; } - public int? Seed { get; set; } - public bool IsMaximizeMetric { get; set; } + public SearchSpace.SearchSpace SearchSpace { get; set; } } } } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/IDatasetManager.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/IDatasetManager.cs index ac057be17d..ee752f3e07 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/IDatasetManager.cs +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/IDatasetManager.cs @@ -12,14 +12,28 @@ public interface IDatasetManager { } - public class TrainTestDatasetManager : IDatasetManager + internal interface ICrossValidateDatasetManager + { + int? Fold { get; set; } + + IDataView Dataset { get; set; } + } + + internal interface ITrainTestDatasetManager + { + IDataView TrainDataset { get; set; } + + IDataView TestDataset { get; set; } + } + + internal class TrainTestDatasetManager : IDatasetManager, ITrainTestDatasetManager { public IDataView TrainDataset { get; set; } public IDataView TestDataset { get; set; } } - public class CrossValidateDatasetManager : IDatasetManager + internal class CrossValidateDatasetManager : IDatasetManager, ICrossValidateDatasetManager { public IDataView Dataset { get; set; } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/IMetricManager.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/IMetricManager.cs index 84316b2ba5..3c25268bfb 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/IMetricManager.cs +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/IMetricManager.cs @@ -9,13 +9,27 @@ namespace Microsoft.ML.AutoML /// /// Interface for metric manager. /// - internal interface IMetricManager + public interface IMetricManager { bool IsMaximize { get; } } - internal class BinaryMetricManager : IMetricManager + public interface IEvaluateMetricManager : IMetricManager { + double Evaluate(MLContext context, IDataView eval); + + string MetricName { get; } + } + + internal class BinaryMetricManager : IEvaluateMetricManager + { + public BinaryMetricManager(BinaryClassificationMetric metric, string labelColumn, string predictedColumn) + { + Metric = metric; + PredictedColumn = predictedColumn; + LabelColumn = labelColumn; + } + public BinaryClassificationMetric Metric { get; set; } public string PredictedColumn { get; set; } @@ -34,9 +48,29 @@ internal class BinaryMetricManager : IMetricManager BinaryClassificationMetric.F1Score => true, _ => throw new NotImplementedException(), }; + + public string MetricName => Metric.ToString(); + + public double Evaluate(MLContext context, IDataView eval) + { + var metric = context.BinaryClassification.EvaluateNonCalibrated(eval, labelColumnName: LabelColumn, predictedLabelColumnName: PredictedColumn); + + return Metric switch + { + BinaryClassificationMetric.Accuracy => metric.Accuracy, + BinaryClassificationMetric.AreaUnderPrecisionRecallCurve => metric.AreaUnderPrecisionRecallCurve, + BinaryClassificationMetric.AreaUnderRocCurve => metric.AreaUnderRocCurve, + BinaryClassificationMetric.PositivePrecision => metric.PositivePrecision, + BinaryClassificationMetric.NegativePrecision => metric.NegativePrecision, + BinaryClassificationMetric.NegativeRecall => metric.NegativeRecall, + BinaryClassificationMetric.PositiveRecall => metric.PositivePrecision, + BinaryClassificationMetric.F1Score => metric.F1Score, + _ => throw new NotImplementedException(), + }; + } } - internal class MultiClassMetricManager : IMetricManager + internal class MultiClassMetricManager : IEvaluateMetricManager { public MulticlassClassificationMetric Metric { get; set; } @@ -53,9 +87,26 @@ internal class MultiClassMetricManager : IMetricManager MulticlassClassificationMetric.TopKAccuracy => true, _ => throw new NotImplementedException(), }; + + public string MetricName => Metric.ToString(); + + public double Evaluate(MLContext context, IDataView eval) + { + var metric = context.MulticlassClassification.Evaluate(eval, labelColumnName: LabelColumn, predictedLabelColumnName: PredictedColumn); + + return Metric switch + { + MulticlassClassificationMetric.MacroAccuracy => metric.MacroAccuracy, + MulticlassClassificationMetric.MicroAccuracy => metric.MicroAccuracy, + MulticlassClassificationMetric.LogLoss => metric.LogLoss, + MulticlassClassificationMetric.LogLossReduction => metric.LogLossReduction, + MulticlassClassificationMetric.TopKAccuracy => metric.TopKAccuracy, + _ => throw new NotImplementedException(), + }; + } } - internal class RegressionMetricManager : IMetricManager + internal class RegressionMetricManager : IEvaluateMetricManager { public RegressionMetric Metric { get; set; } @@ -71,5 +122,21 @@ internal class RegressionMetricManager : IMetricManager RegressionMetric.MeanAbsoluteError => false, _ => throw new NotImplementedException(), }; + + public string MetricName => Metric.ToString(); + + public double Evaluate(MLContext context, IDataView eval) + { + var metric = context.Regression.Evaluate(eval, LabelColumn, ScoreColumn); + + return Metric switch + { + RegressionMetric.RSquared => metric.RSquared, + RegressionMetric.RootMeanSquaredError => metric.RootMeanSquaredError, + RegressionMetric.MeanSquaredError => metric.MeanSquaredError, + RegressionMetric.MeanAbsoluteError => metric.MeanAbsoluteError, + _ => throw new NotImplementedException(), + }; + } } } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/IMonitor.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/IMonitor.cs index 1d17908370..6a28d80010 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/IMonitor.cs +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/IMonitor.cs @@ -17,46 +17,101 @@ public interface IMonitor void ReportBestTrial(TrialResult result); - void ReportFailTrial(TrialResult result); + void ReportFailTrial(TrialSettings settings, Exception exception = null); void ReportRunningTrial(TrialSettings setting); } - // this monitor redirects output result to context.log + /// + /// monitor that redirect output results to context.Log channel. + /// internal class MLContextMonitor : IMonitor { - private readonly MLContext _context; - private readonly IServiceProvider _serviceProvider; private readonly IChannel _logger; private readonly List _completedTrials; - - public MLContextMonitor(MLContext context, IServiceProvider provider) + private readonly SweepablePipeline _pipeline; + public MLContextMonitor(IChannel logger, SweepablePipeline pipeline) { - _context = context; - _serviceProvider = provider; - _logger = ((IChannelProvider)context).Start(nameof(AutoMLExperiment)); + _logger = logger; _completedTrials = new List(); + _pipeline = pipeline; } - public void ReportBestTrial(TrialResult result) + public virtual void ReportBestTrial(TrialResult result) { - _logger.Info($"Update Best Trial - Id: {result.TrialSettings.TrialId} - Metric: {result.Metric} - Pipeline: {result.TrialSettings.Pipeline}"); + _logger.Info($"Update Best Trial - Id: {result.TrialSettings.TrialId} - Metric: {result.Metric} - Pipeline: {_pipeline.ToString(result.TrialSettings.Parameter)}"); } - public void ReportCompletedTrial(TrialResult result) + public virtual void ReportCompletedTrial(TrialResult result) { - _logger.Info($"Update Completed Trial - Id: {result.TrialSettings.TrialId} - Metric: {result.Metric} - Pipeline: {result.TrialSettings.Pipeline} - Duration: {result.DurationInMilliseconds}"); + _logger.Info($"Update Completed Trial - Id: {result.TrialSettings.TrialId} - Metric: {result.Metric} - Pipeline: {_pipeline.ToString(result.TrialSettings.Parameter)} - Duration: {result.DurationInMilliseconds} - Peak CPU: {result.PeakCpu?.ToString("p")} - Peak Memory in MB: {result.PeakMemoryInMegaByte?.ToString("F")}"); _completedTrials.Add(result); } - public void ReportFailTrial(TrialResult result) + public virtual void ReportFailTrial(TrialSettings settings, Exception exception = null) + { + _logger.Info($"Update Failed Trial - Id: {settings.TrialId} - Pipeline: {_pipeline.ToString(settings.Parameter)}"); + } + + public virtual void ReportRunningTrial(TrialSettings setting) + { + _logger.Info($"Update Running Trial - Id: {setting.TrialId} - Pipeline: {_pipeline.ToString(setting.Parameter)}"); + } + } + + internal class TrialResultMonitor : MLContextMonitor + where TMetrics : class + { + public TrialResultMonitor(IChannel channel, SweepablePipeline pipeline) + : base(channel, pipeline) + { + this.RunDetails = new List>(); + } + + public event EventHandler> OnTrialCompleted; + + public List> RunDetails { get; } + + public TrialResult BestRun { get; private set; } + + public override void ReportBestTrial(TrialResult result) { - _logger.Info($"Update Failed Trial - Id: {result.TrialSettings.TrialId} - Metric: {result.Metric} - Pipeline: {result.TrialSettings.Pipeline}"); + base.ReportBestTrial(result); + if (result is TrialResult binaryClassificationResult) + { + BestRun = binaryClassificationResult; + } + else + { + throw new ArgumentException($"result must be of type {typeof(TrialResult)}"); + } } - public void ReportRunningTrial(TrialSettings setting) + public override void ReportCompletedTrial(TrialResult result) { - _logger.Info($"Update Running Trial - Id: {setting.TrialId} - Pipeline: {setting.Pipeline}"); + base.ReportCompletedTrial(result); + if (result is TrialResult metricResult) + { + RunDetails.Add(metricResult); + OnTrialCompleted?.Invoke(this, metricResult); + } + else + { + throw new ArgumentException($"result must be of type {typeof(TrialResult)}"); + } + } + + public override void ReportFailTrial(TrialSettings settings, Exception exp) + { + base.ReportFailTrial(settings, exp); + + var result = new TrialResult + { + TrialSettings = settings, + Exception = exp, + }; + + RunDetails.Add(result); } } } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/IPerformanceMonitor.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/IPerformanceMonitor.cs new file mode 100644 index 0000000000..fa86bb5894 --- /dev/null +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/IPerformanceMonitor.cs @@ -0,0 +1,119 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; +using System.Threading.Tasks; +using System.Timers; +using Microsoft.ML.Runtime; + +namespace Microsoft.ML.AutoML +{ + internal interface IPerformanceMonitor : IDisposable + { + void Start(); + + void Stop(); + + double? GetPeakMemoryUsageInMegaByte(); + + double? GetPeakCpuUsage(); + + public event EventHandler CpuUsage; + + public event EventHandler MemoryUsageInMegaByte; + } + + internal class DefaultPerformanceMonitor : IPerformanceMonitor + { + private readonly IChannel _logger; + private Timer _timer; + private double? _peakCpuUsage; + private double? _peakMemoryUsage; + private readonly int _checkIntervalInMilliseconds; + private TimeSpan _totalCpuProcessorTime; + + public DefaultPerformanceMonitor(IChannel logger, int checkIntervalInMilliseconds) + { + _logger = logger; + _checkIntervalInMilliseconds = checkIntervalInMilliseconds; + } + + + public event EventHandler CpuUsage; + + public event EventHandler MemoryUsageInMegaByte; + + + public void Dispose() + { + Stop(); + } + + public double? GetPeakCpuUsage() + { + return _peakCpuUsage; + } + + public double? GetPeakMemoryUsageInMegaByte() + { + return _peakMemoryUsage; + } + + public void Start() + { + if (_timer == null) + { + _timer = new Timer(_checkIntervalInMilliseconds); + _totalCpuProcessorTime = Process.GetCurrentProcess().TotalProcessorTime; + _timer.Elapsed += OnCheckCpuAndMemoryUsage; + _timer.AutoReset = true; + _timer.Enabled = true; + _logger?.Trace($"{typeof(DefaultPerformanceMonitor)} has been started"); + } + } + + public void Stop() + { + _timer?.Stop(); + _timer?.Dispose(); + _timer = null; + _peakCpuUsage = null; + _peakMemoryUsage = null; + } + + private void OnCheckCpuAndMemoryUsage(object source, ElapsedEventArgs e) + { + SampleCpuAndMemoryUsage(); + } + + private void SampleCpuAndMemoryUsage() + { + // calculate CPU usage in % + // the % of CPU usage is calculating in the following way + // for every _totalCpuProcessorTime + // total CPU time is _totalCpuProcessorTime * ProcessorCount + // total CPU time used by current process is currentCpuProcessorTime + // the % of CPU usage by current process is simply currentCpuProcessorTime / total CPU time. + using (var process = Process.GetCurrentProcess()) + { + var currentCpuProcessorTime = Process.GetCurrentProcess().TotalProcessorTime; + var elapseCpuProcessorTime = currentCpuProcessorTime - _totalCpuProcessorTime; + var cpuUsedMs = elapseCpuProcessorTime.TotalMilliseconds; + var cpuUsageInTotal = cpuUsedMs / (Environment.ProcessorCount * _checkIntervalInMilliseconds); + _totalCpuProcessorTime = currentCpuProcessorTime; + _peakCpuUsage = Math.Max(cpuUsageInTotal, _peakCpuUsage ?? 0); + + // calculate Memory Usage in MB + var memoryUsage = process.PrivateMemorySize64 * 1.0 / (1024 * 1024); + _peakMemoryUsage = Math.Max(memoryUsage, _peakMemoryUsage ?? 0); + _logger?.Trace($"current CPU: {cpuUsageInTotal}, current Memory(mb): {memoryUsage}"); + MemoryUsageInMegaByte?.Invoke(this, memoryUsage); + CpuUsage?.Invoke(this, cpuUsageInTotal); + } + } + } +} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/Runner/ITrialRunner.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/Runner/ITrialRunner.cs new file mode 100644 index 0000000000..6a56e1c808 --- /dev/null +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/Runner/ITrialRunner.cs @@ -0,0 +1,21 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Diagnostics; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.ML.Data; + +namespace Microsoft.ML.AutoML +{ + /// + /// interface for all trial runners. + /// + public interface ITrialRunner : IDisposable + { + Task RunAsync(TrialSettings settings, CancellationToken ct); + } +} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/Runner/SweepablePipelineRunner.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/Runner/SweepablePipelineRunner.cs new file mode 100644 index 0000000000..d42363bde0 --- /dev/null +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/Runner/SweepablePipelineRunner.cs @@ -0,0 +1,118 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +#nullable enable +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.ML.Data; +using Microsoft.ML.Runtime; + +namespace Microsoft.ML.AutoML +{ + internal class SweepablePipelineRunner : ITrialRunner + { + private MLContext? _mLContext; + private readonly IEvaluateMetricManager _metricManager; + private readonly IDatasetManager _datasetManager; + private readonly SweepablePipeline _pipeline; + private readonly IChannel? _logger; + + public SweepablePipelineRunner(MLContext context, SweepablePipeline pipeline, IEvaluateMetricManager metricManager, IDatasetManager datasetManager, IChannel? logger = null) + { + _mLContext = context; + _metricManager = metricManager; + _pipeline = pipeline; + _datasetManager = datasetManager; + _logger = logger; + } + + public TrialResult Run(TrialSettings settings) + { + var stopWatch = new Stopwatch(); + stopWatch.Start(); + var parameter = settings.Parameter[AutoMLExperiment.PipelineSearchspaceName]; + var mlnetPipeline = _pipeline.BuildFromOption(_mLContext, parameter); + if (_datasetManager is ICrossValidateDatasetManager crossValidateDatasetManager) + { + var datasetSplit = _mLContext!.Data.CrossValidationSplit(crossValidateDatasetManager.Dataset, crossValidateDatasetManager.Fold ?? 5); + var metrics = new List(); + var models = new List(); + foreach (var split in datasetSplit) + { + var model = mlnetPipeline.Fit(split.TrainSet); + var eval = model.Transform(split.TestSet); + metrics.Add(_metricManager.Evaluate(_mLContext, eval)); + models.Add(model); + } + + stopWatch.Stop(); + + var metric = metrics.Average(); + var loss = _metricManager.IsMaximize ? -metric : metric; + + return new TrialResult + { + Metric = metric, + Model = models.First(), + DurationInMilliseconds = stopWatch.ElapsedMilliseconds, + TrialSettings = settings, + Loss = loss, + }; + } + + if (_datasetManager is ITrainTestDatasetManager trainTestDatasetManager) + { + var model = mlnetPipeline.Fit(trainTestDatasetManager.TrainDataset); + var eval = model.Transform(trainTestDatasetManager.TestDataset); + var metric = _metricManager.Evaluate(_mLContext, eval); + stopWatch.Stop(); + var loss = _metricManager.IsMaximize ? -metric : metric; + + return new TrialResult + { + Loss = loss, + Metric = metric, + Model = model, + DurationInMilliseconds = stopWatch.ElapsedMilliseconds, + TrialSettings = settings, + }; + } + + throw new ArgumentException("IDatasetManager must be either ITrainTestDatasetManager or ICrossValidationDatasetManager"); + } + + public Task RunAsync(TrialSettings settings, CancellationToken ct) + { + try + { + using (var ctRegistration = ct.Register(() => + { + _mLContext?.CancelExecution(); + })) + { + return Task.Run(() => Run(settings)); + } + } + catch (Exception ex) when (ct.IsCancellationRequested) + { + throw new OperationCanceledException(ex.Message, ex.InnerException); + } + catch (Exception) + { + throw; + } + } + + public void Dispose() + { + _mLContext!.CancelExecution(); + _mLContext = null; + } + } +} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialResult.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialResult.cs index bceaa08cde..f618a34eeb 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialResult.cs +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialResult.cs @@ -2,6 +2,12 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; +using System.Collections; +using System.Collections.Generic; +using Microsoft.ML.Data; +using static Microsoft.ML.TrainCatalogBase; + namespace Microsoft.ML.AutoML { public class TrialResult @@ -10,8 +16,39 @@ public class TrialResult public ITransformer Model { get; set; } + /// + /// the loss for current trial, which is smaller the better. This value will be used to fit smart tuners in . + /// + public double Loss { get; set; } + + /// + /// Evaluation result. + /// public double Metric { get; set; } public double DurationInMilliseconds { get; set; } + + public double? PeakCpu { get; set; } + + public double? PeakMemoryInMegaByte { get; set; } + } + + /// + /// TrialResult with Metrics + /// + internal class TrialResult : TrialResult + where TMetric : class + { + public TMetric Metrics { get; set; } + + public IEnumerable> CrossValidationMetrics { get; set; } + + public Exception Exception { get; set; } + + public bool IsSucceed { get => Exception == null; } + + public bool IsCrossValidation { get => CrossValidationMetrics == null; } + + public EstimatorChain Pipeline { get; set; } } } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialRunner.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialRunner.cs deleted file mode 100644 index a0e8cb3e5f..0000000000 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialRunner.cs +++ /dev/null @@ -1,331 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Diagnostics; - -namespace Microsoft.ML.AutoML -{ - /// - /// interface for all trial runners. - /// - public interface ITrialRunner - { - TrialResult Run(TrialSettings settings, IServiceProvider provider = null); - } - - internal class BinaryClassificationCVRunner : ITrialRunner - { - private readonly MLContext _context; - private readonly IDatasetManager _datasetManager; - private readonly IMetricManager _metricManager; - - public BinaryClassificationCVRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager) - { - _context = context; - _datasetManager = datasetManager; - _metricManager = metricManager; - } - - public TrialResult Run(TrialSettings settings, IServiceProvider provider) - { - var rnd = new Random(settings.ExperimentSettings.Seed ?? 0); - if (_datasetManager is CrossValidateDatasetManager datasetSettings - && _metricManager is BinaryMetricManager metricSettings) - { - var stopWatch = new Stopwatch(); - stopWatch.Start(); - var fold = datasetSettings.Fold ?? 5; - - var pipeline = settings.Pipeline.BuildTrainingPipeline(_context, settings.Parameter); - var metrics = _context.BinaryClassification.CrossValidateNonCalibrated(datasetSettings.Dataset, pipeline, fold, metricSettings.LabelColumn); - - // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. - var res = metrics[rnd.Next(fold)]; - var model = res.Model; - var metric = metricSettings.Metric switch - { - BinaryClassificationMetric.PositivePrecision => res.Metrics.PositivePrecision, - BinaryClassificationMetric.Accuracy => res.Metrics.Accuracy, - BinaryClassificationMetric.AreaUnderRocCurve => res.Metrics.AreaUnderRocCurve, - BinaryClassificationMetric.AreaUnderPrecisionRecallCurve => res.Metrics.AreaUnderPrecisionRecallCurve, - _ => throw new NotImplementedException($"{metricSettings.Metric} is not supported!"), - }; - - stopWatch.Stop(); - - - return new TrialResult() - { - Metric = metric, - Model = model, - TrialSettings = settings, - DurationInMilliseconds = stopWatch.ElapsedMilliseconds, - }; - } - - throw new ArgumentException(); - } - } - - internal class BinaryClassificationTrainTestRunner : ITrialRunner - { - private readonly MLContext _context; - private readonly IDatasetManager _datasetManager; - private readonly IMetricManager _metricManager; - - public BinaryClassificationTrainTestRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager) - { - _context = context; - _metricManager = metricManager; - _datasetManager = datasetManager; - } - - public TrialResult Run(TrialSettings settings, IServiceProvider provider) - { - if (_datasetManager is TrainTestDatasetManager datasetSettings - && _metricManager is BinaryMetricManager metricSettings) - { - var stopWatch = new Stopwatch(); - stopWatch.Start(); - - var pipeline = settings.Pipeline.BuildTrainingPipeline(_context, settings.Parameter); - var model = pipeline.Fit(datasetSettings.TrainDataset); - var eval = model.Transform(datasetSettings.TestDataset); - var metrics = _context.BinaryClassification.EvaluateNonCalibrated(eval, metricSettings.LabelColumn, predictedLabelColumnName: metricSettings.PredictedColumn); - - // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. - var metric = metricSettings.Metric switch - { - BinaryClassificationMetric.PositivePrecision => metrics.PositivePrecision, - BinaryClassificationMetric.Accuracy => metrics.Accuracy, - BinaryClassificationMetric.AreaUnderRocCurve => metrics.AreaUnderRocCurve, - BinaryClassificationMetric.AreaUnderPrecisionRecallCurve => metrics.AreaUnderPrecisionRecallCurve, - _ => throw new NotImplementedException($"{metricSettings.Metric} is not supported!"), - }; - - stopWatch.Stop(); - - - return new TrialResult() - { - Metric = metric, - Model = model, - TrialSettings = settings, - DurationInMilliseconds = stopWatch.ElapsedMilliseconds, - }; - } - - throw new ArgumentException(); - } - } - - internal class MultiClassificationTrainTestRunner : ITrialRunner - { - private readonly MLContext _context; - private readonly IDatasetManager _datasetManager; - private readonly IMetricManager _metricManager; - - public MultiClassificationTrainTestRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager) - { - _context = context; - _metricManager = metricManager; - _datasetManager = datasetManager; - } - - public TrialResult Run(TrialSettings settings, IServiceProvider provider) - { - if (_datasetManager is TrainTestDatasetManager datasetSettings - && _metricManager is MultiClassMetricManager metricSettings) - { - var stopWatch = new Stopwatch(); - stopWatch.Start(); - - var pipeline = settings.Pipeline.BuildTrainingPipeline(_context, settings.Parameter); - var model = pipeline.Fit(datasetSettings.TrainDataset); - var eval = model.Transform(datasetSettings.TestDataset); - var metrics = _context.MulticlassClassification.Evaluate(eval, metricSettings.LabelColumn, predictedLabelColumnName: metricSettings.PredictedColumn); - - var metric = metricSettings.Metric switch - { - MulticlassClassificationMetric.MicroAccuracy => metrics.MicroAccuracy, - MulticlassClassificationMetric.MacroAccuracy => metrics.MacroAccuracy, - MulticlassClassificationMetric.TopKAccuracy => metrics.TopKAccuracy, - MulticlassClassificationMetric.LogLoss => metrics.LogLoss, - MulticlassClassificationMetric.LogLossReduction => metrics.LogLossReduction, - _ => throw new NotImplementedException($"{metricSettings.Metric} is not supported!"), - }; - - stopWatch.Stop(); - - - return new TrialResult() - { - Metric = metric, - Model = model, - TrialSettings = settings, - DurationInMilliseconds = stopWatch.ElapsedMilliseconds, - }; - } - - throw new ArgumentException(); - } - } - - internal class MultiClassificationCVRunner : ITrialRunner - { - private readonly MLContext _context; - private readonly IDatasetManager _datasetManager; - private readonly IMetricManager _metricManager; - - public MultiClassificationCVRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager) - { - _context = context; - _metricManager = metricManager; - _datasetManager = datasetManager; - } - - public TrialResult Run(TrialSettings settings, IServiceProvider provider) - { - var rnd = new Random(settings.ExperimentSettings.Seed ?? 0); - if (_datasetManager is CrossValidateDatasetManager datasetSettings - && _metricManager is MultiClassMetricManager metricSettings) - { - var stopWatch = new Stopwatch(); - stopWatch.Start(); - var fold = datasetSettings.Fold ?? 5; - - var pipeline = settings.Pipeline.BuildTrainingPipeline(_context, settings.Parameter); - var metrics = _context.MulticlassClassification.CrossValidate(datasetSettings.Dataset, pipeline, fold, metricSettings.LabelColumn, seed: settings.ExperimentSettings?.Seed); - // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. - var res = metrics[rnd.Next(fold)]; - var model = res.Model; - var metric = metricSettings.Metric switch - { - MulticlassClassificationMetric.MicroAccuracy => res.Metrics.MicroAccuracy, - MulticlassClassificationMetric.MacroAccuracy => res.Metrics.MacroAccuracy, - MulticlassClassificationMetric.TopKAccuracy => res.Metrics.TopKAccuracy, - MulticlassClassificationMetric.LogLoss => res.Metrics.LogLoss, - MulticlassClassificationMetric.LogLossReduction => res.Metrics.LogLossReduction, - _ => throw new NotImplementedException($"{metricSettings.Metric} is not supported!"), - }; - - stopWatch.Stop(); - - return new TrialResult() - { - Metric = metric, - Model = model, - TrialSettings = settings, - DurationInMilliseconds = stopWatch.ElapsedMilliseconds, - }; - } - - throw new ArgumentException(); - } - } - - internal class RegressionTrainTestRunner : ITrialRunner - { - private readonly MLContext _context; - private readonly IDatasetManager _datasetManager; - private readonly IMetricManager _metricManager; - - public RegressionTrainTestRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager) - { - _context = context; - _metricManager = metricManager; - _datasetManager = datasetManager; - } - - public TrialResult Run(TrialSettings settings, IServiceProvider provider) - { - if (_datasetManager is TrainTestDatasetManager datasetSettings - && _metricManager is RegressionMetricManager metricSettings) - { - var stopWatch = new Stopwatch(); - stopWatch.Start(); - - var pipeline = settings.Pipeline.BuildTrainingPipeline(_context, settings.Parameter); - var model = pipeline.Fit(datasetSettings.TrainDataset); - var eval = model.Transform(datasetSettings.TestDataset); - var metrics = _context.Regression.Evaluate(eval, metricSettings.LabelColumn, scoreColumnName: metricSettings.ScoreColumn); - - var metric = metricSettings.Metric switch - { - RegressionMetric.RootMeanSquaredError => metrics.RootMeanSquaredError, - RegressionMetric.RSquared => metrics.RSquared, - RegressionMetric.MeanSquaredError => metrics.MeanSquaredError, - RegressionMetric.MeanAbsoluteError => metrics.MeanAbsoluteError, - _ => throw new NotImplementedException($"{metricSettings.Metric} is not supported!"), - }; - - stopWatch.Stop(); - - - return new TrialResult() - { - Metric = metric, - Model = model, - TrialSettings = settings, - DurationInMilliseconds = stopWatch.ElapsedMilliseconds, - }; - } - - throw new ArgumentException(); - } - } - - internal class RegressionCVRunner : ITrialRunner - { - private readonly MLContext _context; - private readonly IDatasetManager _datasetManager; - private readonly IMetricManager _metricManager; - - public RegressionCVRunner(MLContext context, IDatasetManager datasetManager, IMetricManager metricManager) - { - _context = context; - _metricManager = metricManager; - _datasetManager = datasetManager; - } - - public TrialResult Run(TrialSettings settings, IServiceProvider provider) - { - var rnd = new Random(settings.ExperimentSettings.Seed ?? 0); - if (_datasetManager is CrossValidateDatasetManager datasetSettings - && _metricManager is RegressionMetricManager metricSettings) - { - var stopWatch = new Stopwatch(); - stopWatch.Start(); - var fold = datasetSettings.Fold ?? 5; - - var pipeline = settings.Pipeline.BuildTrainingPipeline(_context, settings.Parameter); - var metrics = _context.Regression.CrossValidate(datasetSettings.Dataset, pipeline, fold, metricSettings.LabelColumn, seed: settings.ExperimentSettings?.Seed); - // now we just randomly pick a model, but a better way is to provide option to pick a model which score is the cloest to average or the best. - var res = metrics[rnd.Next(fold)]; - var model = res.Model; - var metric = metricSettings.Metric switch - { - RegressionMetric.RootMeanSquaredError => res.Metrics.RootMeanSquaredError, - RegressionMetric.RSquared => res.Metrics.RSquared, - RegressionMetric.MeanSquaredError => res.Metrics.MeanSquaredError, - RegressionMetric.MeanAbsoluteError => res.Metrics.MeanAbsoluteError, - _ => throw new NotImplementedException($"{metricSettings.Metric} is not supported!"), - }; - - stopWatch.Stop(); - - return new TrialResult() - { - Metric = metric, - Model = model, - TrialSettings = settings, - DurationInMilliseconds = stopWatch.ElapsedMilliseconds, - }; - } - - throw new ArgumentException(); - } - } -} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialRunnerFactory.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialRunnerFactory.cs deleted file mode 100644 index 8bba47d321..0000000000 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialRunnerFactory.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Microsoft.Extensions.DependencyInjection; - -#nullable enable -namespace Microsoft.ML.AutoML -{ - /// - /// interface for trial runner factory. - /// - public interface ITrialRunnerFactory - { - ITrialRunner? CreateTrialRunner(); - } - - internal class CustomRunnerFactory : ITrialRunnerFactory - { - private readonly ITrialRunner _instance; - - public CustomRunnerFactory(ITrialRunner runner) - { - _instance = runner; - } - - public ITrialRunner? CreateTrialRunner() - { - return _instance; - } - } - - internal class TrialRunnerFactory : ITrialRunnerFactory - { - private readonly IServiceProvider _provider; - - public TrialRunnerFactory(IServiceProvider provider) - { - _provider = provider; - } - - public ITrialRunner? CreateTrialRunner() - { - var datasetManager = _provider.GetService(); - var metricManager = _provider.GetService(); - - ITrialRunner? runner = (datasetManager, metricManager) switch - { - (CrossValidateDatasetManager, BinaryMetricManager) => _provider.GetService(), - (TrainTestDatasetManager, BinaryMetricManager) => _provider.GetService(), - (CrossValidateDatasetManager, MultiClassMetricManager) => _provider.GetService(), - (TrainTestDatasetManager, MultiClassMetricManager) => _provider.GetService(), - (CrossValidateDatasetManager, RegressionMetricManager) => _provider.GetService(), - (TrainTestDatasetManager, RegressionMetricManager) => _provider.GetService(), - _ => throw new NotImplementedException(), - }; - - return runner; - } - } -} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettings.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettings.cs index 19294ffde9..38d14c2a6d 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettings.cs +++ b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettings.cs @@ -10,12 +10,6 @@ public class TrialSettings { public int TrialId { get; set; } - public SweepableEstimatorPipeline Pipeline { get; set; } - - public string Schema { get; set; } - public Parameter Parameter { get; set; } - - public AutoMLExperiment.AutoMLExperimentSettings ExperimentSettings { get; set; } } } diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/HyperParameterProposer.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/HyperParameterProposer.cs deleted file mode 100644 index ee091027b2..0000000000 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/HyperParameterProposer.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.ML.AutoML -{ - internal class HyperParameterProposer : ITrialSettingsProposer - { - private readonly Dictionary _tuners; - private readonly IServiceProvider _provider; - - public HyperParameterProposer(IServiceProvider provider) - { - _tuners = new Dictionary(); - _provider = provider; - } - - public TrialSettings Propose(TrialSettings settings) - { - var tunerFactory = _provider.GetService(); - if (!_tuners.ContainsKey(settings.Schema)) - { - var t = tunerFactory.CreateTuner(settings); - _tuners.Add(settings.Schema, t); - } - - var tuner = _tuners[settings.Schema]; - var parameter = tuner.Propose(settings); - settings.Parameter = parameter; - - return settings; - } - - public void Update(TrialSettings settings, TrialResult result) - { - var schema = settings.Schema; - if (_tuners.TryGetValue(schema, out var tuner)) - { - tuner.Update(result); - } - } - } -} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/ITrialSettingsProposer.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/ITrialSettingsProposer.cs deleted file mode 100644 index ad73331fab..0000000000 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/ITrialSettingsProposer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Microsoft.ML.AutoML -{ - internal interface ITrialSettingsProposer - { - TrialSettings Propose(TrialSettings settings); - - void Update(TrialSettings parameter, TrialResult result); - } - - internal interface ISavableProposer : ITrialSettingsProposer - { - void SaveStatusToFile(string fileName); - - void LoadStatusFromFile(string fileName); - } -} diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TunerFactory.cs b/src/Microsoft.ML.AutoML/AutoMLExperiment/TunerFactory.cs deleted file mode 100644 index 6acc5f37e6..0000000000 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TunerFactory.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.ML.AutoML -{ - /// - /// interface for all tuner factories. - /// - public interface ITunerFactory - { - ITuner CreateTuner(TrialSettings settings); - } - - internal class CostFrugalTunerFactory : ITunerFactory - { - private readonly IServiceProvider _provider; - - public CostFrugalTunerFactory(IServiceProvider provider) - { - _provider = provider; - } - - public ITuner CreateTuner(TrialSettings settings) - { - var experimentSetting = _provider.GetService(); - var searchSpace = settings.Pipeline.SearchSpace; - var initParameter = settings.Pipeline.Parameter; - var isMaximize = experimentSetting.IsMaximizeMetric; - - return new CostFrugalTuner(searchSpace, initParameter, !isMaximize); - } - } - - internal class RandomTunerFactory : ITunerFactory - { - private readonly IServiceProvider _provider; - - public RandomTunerFactory(IServiceProvider provider) - { - _provider = provider; - } - - public ITuner CreateTuner(TrialSettings settings) - { - var searchSpace = settings.Pipeline.SearchSpace; - - return new RandomSearchTuner(searchSpace); - } - } - - internal class GridSearchTunerFactory : ITunerFactory - { - private readonly IServiceProvider _provider; - - public GridSearchTunerFactory(IServiceProvider provider) - { - _provider = provider; - } - - public ITuner CreateTuner(TrialSettings settings) - { - var searchSpace = settings.Pipeline.SearchSpace; - - return new GridSearchTuner(searchSpace); - } - } -} diff --git a/src/Microsoft.ML.AutoML/CodeGen/dnn_featurizer_image_search_space.json b/src/Microsoft.ML.AutoML/CodeGen/dnn_featurizer_image_search_space.json new file mode 100644 index 0000000000..2b7136d513 --- /dev/null +++ b/src/Microsoft.ML.AutoML/CodeGen/dnn_featurizer_image_search_space.json @@ -0,0 +1,22 @@ +{ + "$schema": "./search-space-schema.json#", + "name": "dnn_featurizer_image_option", + "search_space": [ + { + "name": "OutputColumnName", + "type": "string" + }, + { + "name": "InputColumnName", + "type": "string" + }, + { + "name": "ModelFactory", + "type": "dnnModelFactory", + "default": "resnet_18", + "search_space": [ + "alexnet", "resnet_101", "resnet_18", "resnet_50" + ] + } + ] +} diff --git a/src/Microsoft.ML.AutoML/CodeGen/estimator-schema.json b/src/Microsoft.ML.AutoML/CodeGen/estimator-schema.json index 4467ec810c..ce39ff8887 100644 --- a/src/Microsoft.ML.AutoML/CodeGen/estimator-schema.json +++ b/src/Microsoft.ML.AutoML/CodeGen/estimator-schema.json @@ -68,6 +68,7 @@ "ApplyOnnxModel", "ResizeImages", "ExtractPixels", + "DnnFeaturizerImage", "Naive", "ForecastBySsa" ] @@ -180,22 +181,12 @@ "confidenceLowerBoundColumn", "confidenceUpperBoundColumn", "confidenceLevel", - "variableHorizon" + "variableHorizon", + "modelFactory" ] }, "argumentType": { - "type": "string", - "enum": [ - "integer", - "float", - "double", - "string", - "boolean", - "resizingKind", - "colorBits", - "colorsOrder", - "anchor" - ] + "$ref": "search-space-schema.json#/definitions/option_type" } } } diff --git a/src/Microsoft.ML.AutoML/CodeGen/lgbm_search_space.json b/src/Microsoft.ML.AutoML/CodeGen/lgbm_search_space.json index 2794e3c961..a0f6e1fd2f 100644 --- a/src/Microsoft.ML.AutoML/CodeGen/lgbm_search_space.json +++ b/src/Microsoft.ML.AutoML/CodeGen/lgbm_search_space.json @@ -7,7 +7,7 @@ "type": "integer", "default": 4, "search_space": { - "log_base": true, + "log_base": false, "max": 32768, "min": 4 } @@ -39,7 +39,7 @@ "search_space": { "min": 4, "max": 32768, - "log_base": true + "log_base": false } }, { diff --git a/src/Microsoft.ML.AutoML/CodeGen/search-space-schema.json b/src/Microsoft.ML.AutoML/CodeGen/search-space-schema.json index 224ea9a375..f99c390b62 100644 --- a/src/Microsoft.ML.AutoML/CodeGen/search-space-schema.json +++ b/src/Microsoft.ML.AutoML/CodeGen/search-space-schema.json @@ -2,6 +2,29 @@ "$schema": "http://json-schema.org/draft-04/schema", "title": "Search Space", "definitions": { + "boolArray": { + "type": "array", + "items": { "type": "boolean" } + }, + "intArray": { + "type": "array", + "items": { "type": "integer" } + }, + "dnnModelFactoryArray": { + "type": "array", + "items": { + "$ref": "#/definitions/dnnModelFactoryType" + } + }, + "dnnModelFactoryType": { + "type": "string", + "enum": [ + "resnet_18", + "resnet_50", + "resnet_101", + "alexnet" + ] + }, "range": { "type": "object", "properties": { @@ -12,18 +35,17 @@ "required": [ "min", "max" ] }, "choice": { - "type": "object", - "properties": { - "value": { - "oneOf": [ - { "type": "string" }, - { "type": "number" }, - { "type": "integer" }, - { "type": "boolean" } - ] + "oneOf": [ + { + "$ref": "#/definitions/intArray" + }, + { + "$ref": "#/definitions/dnnModelFactoryArray" + }, + { + "$ref": "#/definitions/boolArray" } - }, - "required": [ "value" ] + ] }, "option": { "type": "object", @@ -86,7 +108,8 @@ "extract_pixels_option", "load_image_option", "image_classification_option", - "matrix_factorization_option" + "matrix_factorization_option", + "dnn_featurizer_image_option" ] }, "option_name": { @@ -130,7 +153,8 @@ "ApproximationRank", "NumberOfIterations", "Quiet", - "OutputAsFloatArray" + "OutputAsFloatArray", + "ModelFactory" ] }, "option_type": { @@ -145,7 +169,8 @@ "resizingKind", "colorBits", "colorsOrder", - "anchor" + "anchor", + "dnnModelFactory" ] } }, diff --git a/src/Microsoft.ML.AutoML/CodeGen/transformer-estimators.json b/src/Microsoft.ML.AutoML/CodeGen/transformer-estimators.json index 88d3e94adc..0fc42d3aa6 100644 --- a/src/Microsoft.ML.AutoML/CodeGen/transformer-estimators.json +++ b/src/Microsoft.ML.AutoML/CodeGen/transformer-estimators.json @@ -321,6 +321,27 @@ "nugetDependencies": [ "Microsoft.ML", "Microsoft.ML.ImageAnalytics" ], "usingStatements": [ "Microsoft.ML" ], "searchOption": "load_image_option" + }, + { + "functionName": "DnnFeaturizerImage", + "estimatorTypes": [ "Transforms" ], + "arguments": [ + { + "argumentName": "outputColumnName", + "argumentType": "string" + }, + { + "argumentName": "inputColumnName", + "argumentType": "string" + }, + { + "argumentName": "modelFactory", + "argumentType": "dnnModelFactory" + } + ], + "nugetDependencies": [ "Microsoft.ML.OnnxTransformer", "Microsoft.ML.OnnxRuntime" ], + "usingStatements": [ "Microsoft.ML" ], + "searchOption": "dnn_featurizer_image_option" } ] } diff --git a/src/Microsoft.ML.AutoML/Microsoft.ML.AutoML.csproj b/src/Microsoft.ML.AutoML/Microsoft.ML.AutoML.csproj index 36a14ec5ce..d25012a3d4 100644 --- a/src/Microsoft.ML.AutoML/Microsoft.ML.AutoML.csproj +++ b/src/Microsoft.ML.AutoML/Microsoft.ML.AutoML.csproj @@ -6,14 +6,39 @@ Microsoft.ML.AutoML ML.NET AutoML: Optimizes an ML pipeline for your dataset, by automatically locating the best feature engineering, model, and hyperparameters $(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage + + + $(NoWarn);1591;NU5100 + $(TargetsForTfmSpecificContentInPackage);AddAutoMLInteractiveToInteractiveExtensionsFolder + + + + + + + + + + <_ItemsToIncludeForInteractive Update="@(_ItemsToIncludeForInteractive)" PackagePath="interactive-extensions/dotnet" /> + + + + all + + + + all diff --git a/src/Microsoft.ML.AutoML/SweepableEstimator/Estimators/Images.cs b/src/Microsoft.ML.AutoML/SweepableEstimator/Estimators/Images.cs index 6df898e0f3..8998151e5e 100644 --- a/src/Microsoft.ML.AutoML/SweepableEstimator/Estimators/Images.cs +++ b/src/Microsoft.ML.AutoML/SweepableEstimator/Estimators/Images.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. - +using System; namespace Microsoft.ML.AutoML.CodeGen { internal partial class LoadImages @@ -44,4 +44,28 @@ public override IEstimator BuildFromOption(MLContext context, Imag return context.MulticlassClassification.Trainers.ImageClassification(param.LabelColumnName, param.FeatureColumnName, param.ScoreColumnName); } } + + internal partial class DnnFeaturizerImage + { + public override IEstimator BuildFromOption(MLContext context, DnnFeaturizerImageOption param) + { + switch (param.ModelFactory) + { + case "resnet_50": + return context.Transforms.DnnFeaturizeImage(param.OutputColumnName, + m => m.ModelSelector.ResNet50(context, param.OutputColumnName, param.InputColumnName), param.InputColumnName); + case "resnet_18": + return context.Transforms.DnnFeaturizeImage(param.OutputColumnName, + m => m.ModelSelector.ResNet18(context, param.OutputColumnName, param.InputColumnName), param.InputColumnName); + case "resnet_101": + return context.Transforms.DnnFeaturizeImage(param.OutputColumnName, + m => m.ModelSelector.ResNet101(context, param.OutputColumnName, param.InputColumnName), param.InputColumnName); + case "alexnet": + return context.Transforms.DnnFeaturizeImage(param.OutputColumnName, + m => m.ModelSelector.AlexNet(context, param.OutputColumnName, param.InputColumnName), param.InputColumnName); + default: + throw new NotImplementedException(); + } + } + } } diff --git a/src/Microsoft.ML.AutoML/SweepableEstimator/ISweepable.cs b/src/Microsoft.ML.AutoML/SweepableEstimator/ISweepable.cs index 5e7a6f681a..01a0a2935c 100644 --- a/src/Microsoft.ML.AutoML/SweepableEstimator/ISweepable.cs +++ b/src/Microsoft.ML.AutoML/SweepableEstimator/ISweepable.cs @@ -9,12 +9,12 @@ namespace Microsoft.ML.AutoML { - internal interface ISweepable + public interface ISweepable { public SearchSpace.SearchSpace SearchSpace { get; } } - internal interface ISweepable : ISweepable + public interface ISweepable : ISweepable where T : IEstimator { public T BuildFromOption(MLContext context, Parameter parameter); diff --git a/src/Microsoft.ML.AutoML/SweepableEstimator/MultiModelPipeline.cs b/src/Microsoft.ML.AutoML/SweepableEstimator/MultiModelPipeline.cs index eb1b58d1a1..885a726b79 100644 --- a/src/Microsoft.ML.AutoML/SweepableEstimator/MultiModelPipeline.cs +++ b/src/Microsoft.ML.AutoML/SweepableEstimator/MultiModelPipeline.cs @@ -10,14 +10,14 @@ namespace Microsoft.ML.AutoML { [JsonConverter(typeof(MultiModelPipelineConverter))] - public class MultiModelPipeline + internal class MultiModelPipeline { private static readonly StringEntity _nilStringEntity = new StringEntity("Nil"); private static readonly EstimatorEntity _nilSweepableEntity = new EstimatorEntity(null); private readonly Dictionary _estimators; private readonly Entity _schema; - public MultiModelPipeline() + internal MultiModelPipeline() { _estimators = new Dictionary(); _schema = null; diff --git a/src/Microsoft.ML.AutoML/SweepableEstimator/SweepableEstimatorPipeline.cs b/src/Microsoft.ML.AutoML/SweepableEstimator/SweepableEstimatorPipeline.cs index f04b7ae63b..76e5682ba5 100644 --- a/src/Microsoft.ML.AutoML/SweepableEstimator/SweepableEstimatorPipeline.cs +++ b/src/Microsoft.ML.AutoML/SweepableEstimator/SweepableEstimatorPipeline.cs @@ -11,7 +11,7 @@ namespace Microsoft.ML.AutoML { [JsonConverter(typeof(SweepableEstimatorPipelineConverter))] - public class SweepableEstimatorPipeline + internal class SweepableEstimatorPipeline { private readonly List _estimators; diff --git a/src/Microsoft.ML.AutoML/SweepableEstimator/SweepablePipeline.cs b/src/Microsoft.ML.AutoML/SweepableEstimator/SweepablePipeline.cs index 37c4ac385e..6f754d12b5 100644 --- a/src/Microsoft.ML.AutoML/SweepableEstimator/SweepablePipeline.cs +++ b/src/Microsoft.ML.AutoML/SweepableEstimator/SweepablePipeline.cs @@ -14,7 +14,7 @@ namespace Microsoft.ML.AutoML { [JsonConverter(typeof(SweepablePipelineConverter))] - internal class SweepablePipeline : ISweepable> + public class SweepablePipeline : ISweepable> { private readonly Entity _schema; private const string SchemaOption = "_SCHEMA_"; @@ -28,12 +28,11 @@ public SearchSpace.SearchSpace SearchSpace get { var searchSpace = new SearchSpace.SearchSpace(); - var kvPairs = _estimators.Select((e, i) => new KeyValuePair(i.ToString(), e.Value.SearchSpace)); - foreach (var kv in kvPairs) + foreach (var kv in _estimators) { if (kv.Value != null) { - searchSpace.Add(kv.Key, kv.Value); + searchSpace.Add(kv.Key, kv.Value.SearchSpace); } } @@ -85,13 +84,34 @@ internal SweepablePipeline(Dictionary estimators, En public EstimatorChain BuildFromOption(MLContext context, Parameter parameter) { _currentSchema = parameter[SchemaOption].AsType(); - var estimators = Entity.FromExpression(_currentSchema) + var pipeline = new EstimatorChain(); + var estimatorParameterPair = Entity.FromExpression(_currentSchema) .ValueEntities() .Where(e => e is StringEntity se && se.Value != "Nil") - .Select((se) => _estimators[((StringEntity)se).Value]); + .Select((se) => + { + var key = ((StringEntity)se).Value; + var estimator = _estimators[key]; + var param = parameter[key]; + return (estimator, param); + }); - var pipeline = new SweepableEstimatorPipeline(estimators); - return pipeline.BuildTrainingPipeline(context, parameter); + foreach (var kv in estimatorParameterPair) + { + pipeline = pipeline.Append(kv.estimator.BuildFromOption(context, kv.param)); + } + + return pipeline; + } + + public SweepablePipeline BuildSweepableEstimatorPipeline(string schema) + { + var entity = Entity.FromExpression(schema); + var pipelineNodes = entity.ValueEntities() + .Where(e => e is StringEntity se && se.Value != "Nil") + .ToDictionary((se) => se.ToString(), (se) => _estimators[((StringEntity)se).Value]); + + return new SweepablePipeline(pipelineNodes, entity, schema); } public SweepablePipeline Append(params ISweepable>[] sweepables) @@ -128,6 +148,27 @@ public SweepablePipeline Append(params ISweepable>[] sw return AppendEntity(false, entity); } + public string ToString(Parameter parameter) + { + if (parameter.TryGetValue(AutoMLExperiment.PipelineSearchspaceName, out var pipelineParameter)) + { + var schema = pipelineParameter["_SCHEMA_"].AsType(); + var estimatorStrings = Entity.FromExpression(_currentSchema) + .ValueEntities() + .Where(e => e is StringEntity se && se.Value != "Nil") + .Select((se) => + { + var key = ((StringEntity)se).Value; + var estimator = _estimators[key]; + return estimator.EstimatorType.ToString(); + }); + + return string.Join("=>", estimatorStrings); + } + + return string.Empty; + } + private SweepablePipeline AppendEntity(bool allowSkip, Entity entity) { var estimators = _estimators.ToDictionary(x => x.Key, x => x.Value); diff --git a/src/Microsoft.ML.AutoML/TrainerExtensions/TrainerExtensionUtil.cs b/src/Microsoft.ML.AutoML/TrainerExtensions/TrainerExtensionUtil.cs index 843de811a7..4bd89de9f2 100644 --- a/src/Microsoft.ML.AutoML/TrainerExtensions/TrainerExtensionUtil.cs +++ b/src/Microsoft.ML.AutoML/TrainerExtensions/TrainerExtensionUtil.cs @@ -302,24 +302,16 @@ public static TrainerName GetTrainerName(BinaryClassificationTrainer binaryTrain { switch (binaryTrainer) { - case BinaryClassificationTrainer.AveragedPerceptron: - return TrainerName.AveragedPerceptronBinary; case BinaryClassificationTrainer.FastForest: return TrainerName.FastForestBinary; case BinaryClassificationTrainer.FastTree: return TrainerName.FastTreeBinary; case BinaryClassificationTrainer.LightGbm: return TrainerName.LightGbmBinary; - case BinaryClassificationTrainer.LinearSvm: - return TrainerName.LinearSvmBinary; case BinaryClassificationTrainer.LbfgsLogisticRegression: return TrainerName.LbfgsLogisticRegressionBinary; case BinaryClassificationTrainer.SdcaLogisticRegression: return TrainerName.SdcaLogisticRegressionBinary; - case BinaryClassificationTrainer.SgdCalibrated: - return TrainerName.SgdCalibratedBinary; - case BinaryClassificationTrainer.SymbolicSgdLogisticRegression: - return TrainerName.SymbolicSgdLogisticRegressionBinary; } // never expected to reach here @@ -330,26 +322,18 @@ public static TrainerName GetTrainerName(MulticlassClassificationTrainer multiTr { switch (multiTrainer) { - case MulticlassClassificationTrainer.AveragedPerceptronOva: - return TrainerName.AveragedPerceptronOva; case MulticlassClassificationTrainer.FastForestOva: return TrainerName.FastForestOva; case MulticlassClassificationTrainer.FastTreeOva: return TrainerName.FastTreeOva; case MulticlassClassificationTrainer.LightGbm: return TrainerName.LightGbmMulti; - case MulticlassClassificationTrainer.LinearSupportVectorMachinesOva: - return TrainerName.LinearSvmOva; case MulticlassClassificationTrainer.LbfgsMaximumEntropy: return TrainerName.LbfgsMaximumEntropyMulti; case MulticlassClassificationTrainer.LbfgsLogisticRegressionOva: return TrainerName.LbfgsLogisticRegressionOva; case MulticlassClassificationTrainer.SdcaMaximumEntropy: return TrainerName.SdcaMaximumEntropyMulti; - case MulticlassClassificationTrainer.SgdCalibratedOva: - return TrainerName.SgdCalibratedOva; - case MulticlassClassificationTrainer.SymbolicSgdLogisticRegressionOva: - return TrainerName.SymbolicSgdLogisticRegressionOva; } // never expected to reach here diff --git a/src/Microsoft.ML.AutoML/Tuner/CostFrugalTuner.cs b/src/Microsoft.ML.AutoML/Tuner/CostFrugalTuner.cs index 949f851dff..453c592553 100644 --- a/src/Microsoft.ML.AutoML/Tuner/CostFrugalTuner.cs +++ b/src/Microsoft.ML.AutoML/Tuner/CostFrugalTuner.cs @@ -13,48 +13,49 @@ internal class CostFrugalTuner : ITuner { private readonly RandomNumberGenerator _rng = new RandomNumberGenerator(); private readonly SearchSpace.SearchSpace _searchSpace; - private readonly bool _minimize; private readonly Flow2 _localSearch; private readonly Dictionary _searchThreadPool = new Dictionary(); private int _currentThreadId; private readonly Dictionary _trialProposedBy = new Dictionary(); - private readonly Dictionary _configs = new Dictionary(); private readonly double[] _lsBoundMax; private readonly double[] _lsBoundMin; private bool _initUsed = false; - private double _bestMetric; + private double _bestLoss; - public CostFrugalTuner(SearchSpace.SearchSpace searchSpace, Parameter initValue = null, bool minimizeMode = true) + public CostFrugalTuner(AutoMLExperiment.AutoMLExperimentSettings settings) + : this(settings.SearchSpace, settings.SearchSpace.SampleFromFeatureSpace(settings.SearchSpace.Default)) { - _searchSpace = searchSpace; - _minimize = minimizeMode; + } + public CostFrugalTuner(SearchSpace.SearchSpace searchSpace, Parameter initValue = null) + { + _searchSpace = searchSpace; _localSearch = new Flow2(searchSpace, initValue, true); _currentThreadId = 0; _lsBoundMin = _searchSpace.MappingToFeatureSpace(initValue); _lsBoundMax = _searchSpace.MappingToFeatureSpace(initValue); _initUsed = false; - _bestMetric = double.MaxValue; + _bestLoss = double.MaxValue; } public Parameter Propose(TrialSettings settings) { var trialId = settings.TrialId; + Parameter param; if (_initUsed) { var searchThread = _searchThreadPool[_currentThreadId]; - _configs[trialId] = _searchSpace.MappingToFeatureSpace(searchThread.Suggest(trialId)); + param = searchThread.Suggest(trialId); _trialProposedBy[trialId] = _currentThreadId; } else { - _configs[trialId] = CreateInitConfigFromAdmissibleRegion(); + param = _searchSpace.SampleFromFeatureSpace(CreateInitConfigFromAdmissibleRegion()); _trialProposedBy[trialId] = _currentThreadId; } - var param = _configs[trialId]; - return _searchSpace.SampleFromFeatureSpace(param); + return param; } public Parameter BestConfig { get; set; } @@ -62,26 +63,25 @@ public Parameter Propose(TrialSettings settings) public void Update(TrialResult result) { var trialId = result.TrialSettings.TrialId; - var metric = result.Metric; - metric = _minimize ? metric : -metric; - if (metric < _bestMetric) + var parameter = result.TrialSettings.Parameter; + var loss = result.Loss; + if (loss < _bestLoss) { - BestConfig = _searchSpace.SampleFromFeatureSpace(_configs[trialId]); - _bestMetric = metric; + BestConfig = parameter; + _bestLoss = loss; } var cost = result.DurationInMilliseconds; - int threadId = _trialProposedBy[trialId]; + int threadId = _trialProposedBy.ContainsKey(trialId) ? _trialProposedBy[trialId] : _currentThreadId; if (_searchThreadPool.Count == 0) { - var initParameter = _searchSpace.SampleFromFeatureSpace(_configs[trialId]); - _searchThreadPool[_currentThreadId] = _localSearch.CreateSearchThread(initParameter, metric, cost); + _searchThreadPool[_currentThreadId] = _localSearch.CreateSearchThread(parameter, loss, cost); _initUsed = true; - UpdateAdmissibleRegion(_configs[trialId]); + UpdateAdmissibleRegion(_searchSpace.MappingToFeatureSpace(parameter)); } else { - _searchThreadPool[threadId].OnTrialComplete(trialId, metric, cost); + _searchThreadPool[threadId].OnTrialComplete(trialId, loss, cost); if (_searchThreadPool[threadId].IsConverged) { _searchThreadPool.Remove(threadId); diff --git a/src/Microsoft.ML.AutoML/Tuner/EciCfoTuner.cs b/src/Microsoft.ML.AutoML/Tuner/EciCfoTuner.cs new file mode 100644 index 0000000000..f2f32e1f9b --- /dev/null +++ b/src/Microsoft.ML.AutoML/Tuner/EciCfoTuner.cs @@ -0,0 +1,59 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.ML.SearchSpace; + +namespace Microsoft.ML.AutoML +{ + /// + /// propose hyper parameter using ECI index and . + /// ECI index is a way to measure the importance of a trainer. A higher ECI means a trainer + /// is more likely to be picked. + /// + public class EciCostFrugalTuner : ITuner + { + private readonly Dictionary _tuners; + private readonly PipelineProposer _pipelineProposer; + // this dictionary records the schema for each trial. + // the key is trial id, and value is the schema for that trial. + + public EciCostFrugalTuner(SweepablePipeline sweepablePipeline, AutoMLExperiment.AutoMLExperimentSettings settings) + { + _tuners = new Dictionary(); + _pipelineProposer = new PipelineProposer(sweepablePipeline, settings); + } + + public Parameter Propose(TrialSettings settings) + { + (var searchSpace, var schema) = _pipelineProposer.ProposeSearchSpace(); + if (!_tuners.ContainsKey(schema)) + { + var t = new CostFrugalTuner(searchSpace, searchSpace.SampleFromFeatureSpace(searchSpace.Default)); + _tuners.Add(schema, t); + } + + var tuner = _tuners[schema]; + settings.Parameter[AutoMLExperiment.PipelineSearchspaceName] = tuner.Propose(settings); + + return settings.Parameter; + } + + public void Update(TrialResult result) + { + var originalParameter = result.TrialSettings.Parameter; + var schema = result.TrialSettings.Parameter[AutoMLExperiment.PipelineSearchspaceName]["_SCHEMA_"].AsType(); + _pipelineProposer.Update(result, schema); + if (_tuners.TryGetValue(schema, out var tuner)) + { + var parameter = result.TrialSettings.Parameter[AutoMLExperiment.PipelineSearchspaceName]; + result.TrialSettings.Parameter = parameter; + tuner.Update(result); + result.TrialSettings.Parameter = originalParameter; + } + } + } +} diff --git a/src/Microsoft.ML.AutoML/Tuner/GridSearchTuner.cs b/src/Microsoft.ML.AutoML/Tuner/GridSearchTuner.cs index d060ac9ed7..e68461899b 100644 --- a/src/Microsoft.ML.AutoML/Tuner/GridSearchTuner.cs +++ b/src/Microsoft.ML.AutoML/Tuner/GridSearchTuner.cs @@ -12,6 +12,11 @@ internal class GridSearchTuner : ITuner private readonly SearchSpace.Tuner.GridSearchTuner _tuner; private IEnumerator _enumerator; + public GridSearchTuner(AutoMLExperiment.AutoMLExperimentSettings settings) + : this(settings.SearchSpace, 10) + { + } + public GridSearchTuner(SearchSpace.SearchSpace searchSpace, int stepSize = 10) { _tuner = new SearchSpace.Tuner.GridSearchTuner(searchSpace, stepSize); diff --git a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/PipelineProposer.cs b/src/Microsoft.ML.AutoML/Tuner/PipelineProposer.cs similarity index 64% rename from src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/PipelineProposer.cs rename to src/Microsoft.ML.AutoML/Tuner/PipelineProposer.cs index d40e6d6b6a..886a6bd648 100644 --- a/src/Microsoft.ML.AutoML/AutoMLExperiment/TrialSettingsProposer/PipelineProposer.cs +++ b/src/Microsoft.ML.AutoML/Tuner/PipelineProposer.cs @@ -7,7 +7,9 @@ using System.IO; using System.Linq; using Microsoft.ML.AutoML.CodeGen; +using Microsoft.ML.SearchSpace.Option; using Newtonsoft.Json; +using Tensorflow; using static Microsoft.ML.AutoML.AutoMLExperiment; namespace Microsoft.ML.AutoML @@ -15,7 +17,7 @@ namespace Microsoft.ML.AutoML /// /// propose sweepable estimator pipeline from a group of candidates using eci in flaml (https://arxiv.org/abs/1911.04706) /// - internal class PipelineProposer : ISavableProposer + internal class PipelineProposer { private readonly Dictionary _estimatorCost; private Dictionary _learnerInitialCost; @@ -37,9 +39,10 @@ internal class PipelineProposer : ISavableProposer private double _globalBestError; private readonly Random _rand; - private MultiModelPipeline _multiModelPipeline; + private readonly SweepablePipeline _sweepablePipeline; + private readonly string[] _pipelineSchemas; - public PipelineProposer(AutoMLExperimentSettings settings) + public PipelineProposer(SweepablePipeline sweepablePipeline, AutoMLExperimentSettings settings) { // this cost is used to initialize eci when started, the smaller the number, the less cost this trainer will use at start, and more likely it will be // picked. @@ -53,40 +56,48 @@ public PipelineProposer(AutoMLExperimentSettings settings) { EstimatorType.LbfgsPoissonRegressionRegression, 4.73 }, { EstimatorType.FastForestOva, 4.283 }, { EstimatorType.FastTreeOva, 3.701 }, - { EstimatorType.LightGbmMulti, 14.765 }, - { EstimatorType.SdcaMaximumEntropyMulti, 1.129 }, - { EstimatorType.SdcaLogisticRegressionOva, 3.16 }, + { EstimatorType.LightGbmMulti, 4.765 }, + { EstimatorType.SdcaMaximumEntropyMulti, 10.129 }, + { EstimatorType.SdcaLogisticRegressionOva, 13.16 }, { EstimatorType.LbfgsMaximumEntropyMulti, 7.980 }, { EstimatorType.LbfgsLogisticRegressionOva, 11.513 }, - { EstimatorType.LightGbmBinary, 14.765 }, + { EstimatorType.LightGbmBinary, 4.765 }, { EstimatorType.FastTreeBinary, 3.701 }, { EstimatorType.FastForestBinary, 4.283 }, - { EstimatorType.SdcaLogisticRegressionBinary, 3.16 }, + { EstimatorType.SdcaLogisticRegressionBinary, 13.16 }, { EstimatorType.LbfgsLogisticRegressionBinary, 11.513 }, { EstimatorType.ForecastBySsa, 1 }, { EstimatorType.ImageClassificationMulti, 1 }, { EstimatorType.MatrixFactorization, 1 }, }; - _rand = new Random(settings.Seed ?? 0); - _multiModelPipeline = null; + _sweepablePipeline = sweepablePipeline; + + if (settings.Seed.HasValue) + { + _rand = new Random(settings.Seed.Value); + } + else + { + _rand = new Random(); + } + + _pipelineSchemas = _sweepablePipeline.Schema.ToTerms().Select(t => t.ToString()).ToArray(); } - public TrialSettings Propose(TrialSettings settings) + public (SearchSpace.SearchSpace, string) ProposeSearchSpace() { - _multiModelPipeline = settings.ExperimentSettings.Pipeline; - _learnerInitialCost = _multiModelPipeline.PipelineIds.ToDictionary(kv => kv, kv => GetEstimatedCostForPipeline(kv, _multiModelPipeline)); - var pipelineIds = _multiModelPipeline.PipelineIds; - + _learnerInitialCost = _pipelineSchemas.ToDictionary(kv => kv, kv => GetEstimatedCostForPipeline(kv, _sweepablePipeline)); + string schema; if (_eci == null) { // initialize eci with the estimated cost and always start from pipeline which has lowest cost. - _eci = pipelineIds.ToDictionary(kv => kv, kv => GetEstimatedCostForPipeline(kv, _multiModelPipeline)); - settings.Schema = _eci.OrderBy(kv => kv.Value).First().Key; + _eci = _pipelineSchemas.ToDictionary(kv => kv, kv => GetEstimatedCostForPipeline(kv, _sweepablePipeline)); + schema = _eci.OrderBy(kv => kv.Value).First().Key; } else { - var probabilities = pipelineIds.Select(id => _eci[id]).ToArray(); + var probabilities = _pipelineSchemas.Select(id => _eci[id]).ToArray(); probabilities = ArrayMath.Inverse(probabilities); probabilities = ArrayMath.Normalize(probabilities); @@ -96,70 +107,25 @@ public TrialSettings Propose(TrialSettings settings) // selected pipeline id index int i; - for (i = 0; i != pipelineIds.Length; ++i) + for (i = 0; i != _pipelineSchemas.Length; ++i) { - sum += ((double[])probabilities)[i]; + sum += probabilities[i]; if (sum > randdouble) { break; } } - settings.Schema = pipelineIds[i]; - } - - settings.Pipeline = _multiModelPipeline.BuildSweepableEstimatorPipeline(settings.Schema); - return settings; - } - - public void SaveStatusToFile(string fileName) - { - using (var writer = new FileStream(fileName, FileMode.Create)) - { - SaveStatusToStream(writer); - } - } - - public void SaveStatusToStream(Stream stream) - { - var status = new Status() - { - K1 = _k1, - K2 = _k2, - E1 = _e1, - E2 = _e2, - Eci = _eci, - GlobalBestError = _globalBestError, - }; - - using (var fileWriter = new StreamWriter(stream)) - { - var json = JsonConvert.SerializeObject(status); - fileWriter.Write(json); + schema = _pipelineSchemas[i]; } - } - public void LoadStatusFromFile(string fileName) - { - if (File.Exists(fileName)) - { - var json = File.ReadAllText(fileName); - var status = JsonConvert.DeserializeObject(json); - _k1 = status.K1; - _k2 = status.K2; - _e1 = status.E1; - _e2 = status.E2; - _eci = status.Eci; - _globalBestError = status.GlobalBestError; - } + return (_sweepablePipeline.BuildSweepableEstimatorPipeline(schema).SearchSpace, schema); } - public void Update(TrialSettings parameter, TrialResult result) + public void Update(TrialResult result, string schema) { - var schema = parameter.Schema; - var error = CaculateError(result.Metric, parameter.ExperimentSettings.IsMaximizeMetric); + var loss = result.Loss; var duration = result.DurationInMilliseconds / 1000; - var pipelineIds = _multiModelPipeline.PipelineIds; var isSuccess = duration != 0; // if k1 is null, it means this is the first completed trial. @@ -173,13 +139,13 @@ public void Update(TrialSettings parameter, TrialResult result) { if (_k1 == null) { - _k1 = pipelineIds.ToDictionary(id => id, id => duration * _learnerInitialCost[id] / _learnerInitialCost[schema]); + _k1 = _pipelineSchemas.ToDictionary(id => id, id => duration * _learnerInitialCost[id] / _learnerInitialCost[schema]); _k2 = _k1.ToDictionary(kv => kv.Key, kv => kv.Value); - _e1 = pipelineIds.ToDictionary(id => id, id => error); - _e2 = pipelineIds.ToDictionary(id => id, id => 1.05 * error); - _globalBestError = error; + _e1 = _pipelineSchemas.ToDictionary(id => id, id => loss); + _e2 = _pipelineSchemas.ToDictionary(id => id, id => 1.05 * loss); + _globalBestError = loss; } - else if (error >= _e1[schema]) + else if (loss >= _e1[schema]) { // if error is larger than current best error, which means there's no improvements for // the last trial with the current learner. @@ -193,18 +159,18 @@ public void Update(TrialSettings parameter, TrialResult result) _k2[schema] = _k1[schema]; _k1[schema] = duration; _e2[schema] = _e1[schema]; - _e1[schema] = error; + _e1[schema] = loss; // update global best error as well - if (error < _globalBestError) + if (loss < _globalBestError) { - _globalBestError = error; + _globalBestError = loss; } } // update eci var eci1 = Math.Max(_k1[schema], _k2[schema]); - var estimatorCostForBreakThrough = 2 * (error - _globalBestError) / ((_e2[schema] - _e1[schema]) / (_k2[schema] + _k1[schema])); + var estimatorCostForBreakThrough = 2 * (loss - _globalBestError) + double.Epsilon / ((_e2[schema] - _e1[schema]) / (_k2[schema] + _k1[schema]) + double.Epsilon); _eci[schema] = Math.Max(eci1, estimatorCostForBreakThrough); } else @@ -227,15 +193,15 @@ private double CaculateError(double loss, bool isMaximize) return isMaximize ? 1 - loss : loss; } - private double GetEstimatedCostForPipeline(string kv, MultiModelPipeline multiModelPipeline) + private double GetEstimatedCostForPipeline(string schema, SweepablePipeline pipeline) { - var entity = Entity.FromExpression(kv); + var entity = Entity.FromExpression(schema); var estimatorTypes = entity.ValueEntities().Where(v => v is StringEntity s && s.Value != "Nil") .Select(v => { var s = v as StringEntity; - var estimator = multiModelPipeline.Estimators[s.Value]; + var estimator = pipeline.Estimators[s.Value]; return estimator.EstimatorType; }); diff --git a/src/Microsoft.ML.AutoML/Tuner/RandomSearchTuner.cs b/src/Microsoft.ML.AutoML/Tuner/RandomSearchTuner.cs index 0a860a4730..fd63a51dfa 100644 --- a/src/Microsoft.ML.AutoML/Tuner/RandomSearchTuner.cs +++ b/src/Microsoft.ML.AutoML/Tuner/RandomSearchTuner.cs @@ -12,6 +12,11 @@ internal class RandomSearchTuner : ITuner private readonly RandomTuner _tuner; private readonly SearchSpace.SearchSpace _searchSpace; + public RandomSearchTuner(AutoMLExperiment.AutoMLExperimentSettings settings) + : this(settings.SearchSpace) + { + } + public RandomSearchTuner(SearchSpace.SearchSpace searchSpace) { _tuner = new RandomTuner(); diff --git a/src/Microsoft.ML.AutoML/Utils/BestResultUtil.cs b/src/Microsoft.ML.AutoML/Utils/BestResultUtil.cs index f1de5c1baf..cdcf850d8f 100644 --- a/src/Microsoft.ML.AutoML/Utils/BestResultUtil.cs +++ b/src/Microsoft.ML.AutoML/Utils/BestResultUtil.cs @@ -96,6 +96,30 @@ public static int GetIndexOfBestScore(IEnumerable scores, bool isMetricM return isMetricMaximizing ? GetIndexOfMaxScore(scores) : GetIndexOfMinScore(scores); } + public static RunDetail ToRunDetail(MLContext context, TrialResult result, SweepablePipeline pipeline) + where TMetrics : class + { + var parameter = result.TrialSettings.Parameter; + var trainerName = pipeline.ToString(parameter); + var modelContainer = new ModelContainer(context, result.Model); + var detail = new RunDetail(trainerName, result.Pipeline, null, modelContainer, result.Metrics, result.Exception); + detail.RuntimeInSeconds = result.DurationInMilliseconds / 1000; + + return detail; + } + + public static CrossValidationRunDetail ToCrossValidationRunDetail(MLContext context, TrialResult result, SweepablePipeline pipeline) + where TMetrics : class + { + var parameter = result.TrialSettings.Parameter; + var trainerName = pipeline.ToString(parameter); + var crossValidationResult = result.CrossValidationMetrics.Select(m => new TrainResult(new ModelContainer(context, m.Model), m.Metrics, result.Exception)); + var detail = new CrossValidationRunDetail(trainerName, result.Pipeline, null, crossValidationResult); + detail.RuntimeInSeconds = result.DurationInMilliseconds / 1000; + + return detail; + } + private static int GetIndexOfMinScore(IEnumerable scores) { var minScore = double.PositiveInfinity; diff --git a/src/Microsoft.ML.Console/Microsoft.ML.Console.csproj b/src/Microsoft.ML.Console/Microsoft.ML.Console.csproj index f4331b79fb..1e5874752b 100644 --- a/src/Microsoft.ML.Console/Microsoft.ML.Console.csproj +++ b/src/Microsoft.ML.Console/Microsoft.ML.Console.csproj @@ -14,6 +14,7 @@ + diff --git a/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs b/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs index 659e725534..3102ddeb7f 100644 --- a/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs +++ b/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs @@ -26,6 +26,7 @@ [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.FastTree" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Mkl.Components" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.OneDal" + PublicKey.Value)] +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.XGBoost" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.KMeansClustering" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.LightGbm" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.OnnxConverter" + PublicKey.Value)] diff --git a/src/Microsoft.ML.CpuMath/CpuMathUtils.netstandard.cs b/src/Microsoft.ML.CpuMath/CpuMathUtils.netstandard.cs index e9f3f40f0e..2c8fcf15c9 100644 --- a/src/Microsoft.ML.CpuMath/CpuMathUtils.netstandard.cs +++ b/src/Microsoft.ML.CpuMath/CpuMathUtils.netstandard.cs @@ -20,7 +20,9 @@ public static int GetVectorAlignment() => Vector128Alignment; /// - /// Check if 's alignment is suitable to SSE instructions. Returns + /// + /// + /// if 's alignment is suitable to SSE instructions. Returns /// if 's alignment is ok and otherwise. /// /// The vector being checked. diff --git a/src/Microsoft.ML.Data/DataLoadSave/TransformerChain.cs b/src/Microsoft.ML.Data/DataLoadSave/TransformerChain.cs index b43d457326..e11a894be0 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/TransformerChain.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/TransformerChain.cs @@ -119,26 +119,46 @@ public TransformerChain(params ITransformer[] transformers) } public DataViewSchema GetOutputSchema(DataViewSchema inputSchema) + { + // Default to only scoring scope. + return GetOutputSchema(inputSchema, TransformerScope.Scoring); + } + + public DataViewSchema GetOutputSchema(DataViewSchema inputSchema, TransformerScope scope) { Contracts.CheckValue(inputSchema, nameof(inputSchema)); + var chain = GetModelFor(scope); + var s = inputSchema; - foreach (var xf in _transformers) + foreach (var xf in chain) s = xf.GetOutputSchema(s); return s; } public IDataView Transform(IDataView input) + { + // Default to only scoring scope. + return Transform(input, TransformerScope.Scoring); + } + + public IDataView Transform(IDataView input, TransformerScope scope) { Contracts.CheckValue(input, nameof(input)); + // Default to all scopes, but still allow for smaller scopes. + var chain = GetModelFor(scope); + // Trigger schema propagation prior to transforming. // REVIEW: does this actually constitute 'early warning', given that Transform call is lazy anyway? - GetOutputSchema(input.Schema); + chain.GetOutputSchema(input.Schema); var dv = input; - foreach (var xf in _transformers) - dv = xf.Transform(dv); + foreach (var transformer in chain) + { + dv = transformer.Transform(dv); + } + return dv; } diff --git a/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs b/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs index e50d84e954..8b5829097e 100644 --- a/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs +++ b/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs @@ -25,6 +25,7 @@ [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.FastTree" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Mkl.Components" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.OneDal" + PublicKey.Value)] +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.XGBoost" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.KMeansClustering" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.LightGbm" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.OnnxConverter" + PublicKey.Value)] diff --git a/src/Microsoft.ML.Data/TrainCatalog.cs b/src/Microsoft.ML.Data/TrainCatalog.cs index 56aed9d0f8..c1fd5485d7 100644 --- a/src/Microsoft.ML.Data/TrainCatalog.cs +++ b/src/Microsoft.ML.Data/TrainCatalog.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.CompilerServices; using Microsoft.ML.Calibrators; using Microsoft.ML.Data; using Microsoft.ML.Runtime; @@ -102,7 +103,12 @@ private protected CrossValidationResult[] CrossValidateTrain(IDataView data, IEs foreach (var split in DataOperationsCatalog.CrossValidationSplit(Environment, data, splitColumn, numFolds)) { var model = estimator.Fit(split.TrainSet); - var scoredTest = model.Transform(split.TestSet); + IDataView scoredTest; + + if (IsCastableToTransformerChainOfITransformer(model)) + scoredTest = (Unsafe.As>(model)).Transform(split.TestSet, TransformerScope.Everything); + else + scoredTest = model.Transform(split.TestSet); result[fold] = new CrossValidationResult(model, scoredTest, fold); fold++; } @@ -110,6 +116,21 @@ private protected CrossValidationResult[] CrossValidateTrain(IDataView data, IEs return result; } + private static bool IsCastableToTransformerChainOfITransformer(object o) + { + var type = o.GetType(); + while (!type!.FullName!.StartsWith("Microsoft.ML.Data.TransformerChain`1[", StringComparison.Ordinal)) + { + type = type!.BaseType; + if (type is null) + { + return false; + } + } + + return true; + } + [BestFriend] private protected TrainCatalogBase(IHostEnvironment env, string registrationName) { diff --git a/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs b/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs index 564ba93952..5df8dac79a 100644 --- a/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs +++ b/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs @@ -244,9 +244,10 @@ public void SaveAsOnnx(OnnxContext ctx) foreach (var column in _columns) { - var srcVariableName = ctx.GetVariableName(column.inputColumnName); - if (!ctx.ContainsColumn(srcVariableName)) + if (!ctx.ContainsColumn(column.inputColumnName)) continue; + + var srcVariableName = ctx.GetVariableName(column.inputColumnName); _schema.TryGetColumnIndex(column.inputColumnName, out int colIndex); var dstVariableName = ctx.AddIntermediateVariable(_schema[colIndex].Type, column.outputColumnName); var node = ctx.CreateNode(opType, srcVariableName, dstVariableName, ctx.GetNodeName(opType), ""); diff --git a/src/Microsoft.ML.FastTree/FastTree.cs b/src/Microsoft.ML.FastTree/FastTree.cs index 381b844bc1..c1cf5a5166 100644 --- a/src/Microsoft.ML.FastTree/FastTree.cs +++ b/src/Microsoft.ML.FastTree/FastTree.cs @@ -647,6 +647,8 @@ private protected virtual void Train(IChannel ch) pch.SetHeader(new ProgressHeader("trees"), e => e.SetProgress(0, Ensemble.NumTrees, numTotalTrees)); while (Ensemble.NumTrees < numTotalTrees) { + ch.Trace($"numTotalTrees left: {numTotalTrees}"); + Host.CheckAlive(); using (Timer.Time(TimerEvent.Iteration)) { #if NO_STORE @@ -687,6 +689,7 @@ private protected virtual void Train(IChannel ch) baggingProvider.GetCurrentOutOfBagPartition().Documents); } + Host.CheckAlive(); CustomizedTrainingIteration(tree); using (Timer.Time(TimerEvent.Test)) @@ -738,6 +741,7 @@ private protected virtual void Train(IChannel ch) } } + Host.CheckAlive(); if (earlyStoppingRule != null) { Contracts.Assert(numTotalTrees == 0 || bestIteration > 0); @@ -750,8 +754,13 @@ private protected virtual void Train(IChannel ch) bestIteration = GetBestIteration(ch); } + Host.CheckAlive(); OptimizationAlgorithm.FinalizeLearning(bestIteration); + + Host.CheckAlive(); Ensemble.PopulateRawThresholds(TrainSet); + + Host.CheckAlive(); ParallelTraining.FinalizeTreeLearner(); } diff --git a/src/Microsoft.ML.FastTree/RandomForestClassification.cs b/src/Microsoft.ML.FastTree/RandomForestClassification.cs index ec7846f7dc..d474ee861e 100644 --- a/src/Microsoft.ML.FastTree/RandomForestClassification.cs +++ b/src/Microsoft.ML.FastTree/RandomForestClassification.cs @@ -4,7 +4,10 @@ using System; using System.Linq; +using System.Collections.Generic; +using System.Runtime.InteropServices; using Microsoft.ML; +using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Calibrators; using Microsoft.ML.CommandLine; using Microsoft.ML.Data; @@ -219,7 +222,26 @@ private protected override FastForestBinaryModelParameters TrainModelCore(TrainC trainData.CheckOptFloatWeight(); FeatureCount = trainData.Schema.Feature.Value.Type.GetValueCount(); ConvertData(trainData); - TrainCore(ch); + + if (!trainData.Schema.Weight.HasValue && + System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture == System.Runtime.InteropServices.Architecture.X64 && + Environment.GetEnvironmentVariable("MLNET_BACKEND") == "ONEDAL") + { + if (FastTreeTrainerOptions.FeatureFraction != 1.0) + { + ch.Warning($"oneDAL decision forest doesn't support 'FeatureFraction'[per tree] != 1.0, changing it from {FastTreeTrainerOptions.FeatureFraction} to 1.0"); + FastTreeTrainerOptions.FeatureFraction = 1.0; + } + CursOpt cursorOpt = CursOpt.Label | CursOpt.Features; + var cursorFactory = new FloatLabelCursor.Factory(trainData, cursorOpt); + TrainCoreOneDal(ch, cursorFactory, FeatureCount); + if (FeatureMap != null) + TrainedEnsemble.RemapFeatures(FeatureMap); + } + else + { + TrainCore(ch); + } } // LogitBoost is naturally calibrated to // output probabilities when transformed using @@ -230,6 +252,138 @@ private protected override FastForestBinaryModelParameters TrainModelCore(TrainC return new FastForestBinaryModelParameters(Host, TrainedEnsemble, FeatureCount, InnerOptions); } + internal static class OneDal + { + private const string OneDalLibPath = "OneDalNative"; + + [DllImport(OneDalLibPath, EntryPoint = "decisionForestClassificationCompute")] + public static extern unsafe int DecisionForestClassificationCompute( + void* featuresPtr, void* labelsPtr, long nRows, int nColumns, int nClasses, int numberOfThreads, + float featureFractionPerSplit, int numberOfTrees, int numberOfLeaves, int minimumExampleCountPerLeaf, int maxBins, + void* lteChildPtr, void* gtChildPtr, void* splitFeaturePtr, void* featureThresholdPtr, void* leafValuesPtr, void* modelPtr); + } + + private protected void TrainCoreOneDal(IChannel ch, FloatLabelCursor.Factory cursorFactory, int featureCount) + { + CheckOptions(ch); + Initialize(ch); + + List featuresList = new List(); + List labelsList = new List(); + int nClasses = 2; + int numberOfLeaves = FastTreeTrainerOptions.NumberOfLeaves; + int numberOfTrees = FastTreeTrainerOptions.NumberOfTrees; + long n = 0; + + int numberOfThreads = 0; + if (FastTreeTrainerOptions.NumberOfThreads.HasValue) + numberOfThreads = FastTreeTrainerOptions.NumberOfThreads.Value; + + using (var cursor = cursorFactory.Create()) + { + while (cursor.MoveNext()) + { + // label + labelsList.Add(cursor.Label); + + // features + var values = cursor.Features.GetValues(); + if (cursor.Features.IsDense) + { + ch.Assert(values.Length == featureCount); + + for (int j = 0; j < featureCount; ++j) + { + featuresList.Add(values[j]); + } + } + else + { + var indices = cursor.Features.GetIndices(); + int i = 0; + for (int j = 0; j < indices.Length; ++j) + { + for (int k = i; k < indices[j]; ++k) + { + featuresList.Add(0); + } + featuresList.Add(values[indices[j]]); + i = indices[j] + 1; + } + } + n++; + } + ch.Check(n > 0, "No training examples in dataset."); + if (cursor.BadFeaturesRowCount > 0) + ch.Warning("Skipped {0} instances with missing features/labelColumn during training", cursor.SkippedRowCount); + } + + float[] featuresArray = featuresList.ToArray(); + float[] labelsArray = labelsList.ToArray(); + + int[] lteChildArray = new int[(numberOfLeaves - 1) * numberOfTrees]; + int[] gtChildArray = new int[(numberOfLeaves - 1) * numberOfTrees]; + int[] splitFeatureArray = new int[(numberOfLeaves - 1) * numberOfTrees]; + float[] featureThresholdArray = new float[(numberOfLeaves - 1) * numberOfTrees]; + float[] leafValuesArray = new float[numberOfLeaves * numberOfTrees]; + + int oneDalModelSize = -1; + int projectedOneDalModelSize = 96 * nClasses * numberOfLeaves * numberOfTrees + 4096 * 16; + byte[] oneDalModel = new byte[projectedOneDalModelSize]; + + unsafe + { +#pragma warning disable MSML_SingleVariableDeclaration // Have only a single variable present per declaration + fixed (void* featuresPtr = &featuresArray[0], labelsPtr = &labelsArray[0], + lteChildPtr = <eChildArray[0], gtChildPtr = >ChildArray[0], splitFeaturePtr = &splitFeatureArray[0], + featureThresholdPtr = &featureThresholdArray[0], leafValuesPtr = &leafValuesArray[0], oneDalModelPtr = &oneDalModel[0]) +#pragma warning restore MSML_SingleVariableDeclaration // Have only a single variable present per declaration + { + oneDalModelSize = OneDal.DecisionForestClassificationCompute(featuresPtr, labelsPtr, n, featureCount, nClasses, + numberOfThreads, (float)FastTreeTrainerOptions.FeatureFractionPerSplit, numberOfTrees, + numberOfLeaves, FastTreeTrainerOptions.MinimumExampleCountPerLeaf, FastTreeTrainerOptions.MaximumBinCountPerFeature, + lteChildPtr, gtChildPtr, splitFeaturePtr, featureThresholdPtr, leafValuesPtr, oneDalModelPtr + ); + } + } + // TrainedEnsemble = new InternalTreeEnsemble(oneDalModel, oneDalModelSize, InternalTreeEnsemble.OneDalModelType.Classification); + TrainedEnsemble = new InternalTreeEnsemble(); + for (int i = 0; i < numberOfTrees; ++i) + { + int[] lteChildArrayPerTree = new int[numberOfLeaves - 1]; + int[] gtChildArrayPerTree = new int[numberOfLeaves - 1]; + int[] splitFeatureArrayPerTree = new int[numberOfLeaves - 1]; + float[] featureThresholdArrayPerTree = new float[numberOfLeaves - 1]; + double[] leafValuesArrayPerTree = new double[numberOfLeaves]; + + int[][] categoricalSplitFeaturesPerTree = new int[numberOfLeaves - 1][]; + bool[] categoricalSplitPerTree = new bool[numberOfLeaves - 1]; + double[] splitGainPerTree = new double[numberOfLeaves - 1]; + float[] defaultValueForMissingPerTree = new float[numberOfLeaves - 1]; + + for (int j = 0; j < numberOfLeaves - 1; ++j) + { + lteChildArrayPerTree[j] = lteChildArray[(numberOfLeaves - 1) * i + j]; + gtChildArrayPerTree[j] = gtChildArray[(numberOfLeaves - 1) * i + j]; + splitFeatureArrayPerTree[j] = splitFeatureArray[(numberOfLeaves - 1) * i + j]; + featureThresholdArrayPerTree[j] = featureThresholdArray[(numberOfLeaves - 1) * i + j]; + leafValuesArrayPerTree[j] = leafValuesArray[numberOfLeaves * i + j]; + + categoricalSplitFeaturesPerTree[j] = null; + categoricalSplitPerTree[j] = false; + splitGainPerTree[j] = 0.0; + defaultValueForMissingPerTree[j] = 0.0f; + } + leafValuesArrayPerTree[numberOfLeaves - 1] = leafValuesArray[numberOfLeaves * i + numberOfLeaves - 1]; + + InternalQuantileRegressionTree newTree = new InternalQuantileRegressionTree(splitFeatureArrayPerTree, splitGainPerTree, null, + featureThresholdArrayPerTree, defaultValueForMissingPerTree, lteChildArrayPerTree, gtChildArrayPerTree, leafValuesArrayPerTree, + categoricalSplitFeaturesPerTree, categoricalSplitPerTree); + newTree.PopulateThresholds(TrainSet); + TrainedEnsemble.AddTree(newTree); + } + } + private protected override ObjectiveFunctionBase ConstructObjFunc(IChannel ch) { return new ObjectiveFunctionImpl(TrainSet, _trainSetLabels, FastTreeTrainerOptions); diff --git a/src/Microsoft.ML.FastTree/TreeEnsemble/InternalQuantileRegressionTree.cs b/src/Microsoft.ML.FastTree/TreeEnsemble/InternalQuantileRegressionTree.cs index e5ae4776ed..c193029668 100644 --- a/src/Microsoft.ML.FastTree/TreeEnsemble/InternalQuantileRegressionTree.cs +++ b/src/Microsoft.ML.FastTree/TreeEnsemble/InternalQuantileRegressionTree.cs @@ -29,6 +29,14 @@ public InternalQuantileRegressionTree(int maxLeaves) { } + public InternalQuantileRegressionTree(int[] splitFeatures, double[] splitGain, double[] gainPValue, + float[] rawThresholds, float[] defaultValueForMissing, int[] lteChild, int[] gtChild, double[] leafValues, + int[][] categoricalSplitFeatures, bool[] categoricalSplit) + : base(splitFeatures, splitGain, gainPValue, rawThresholds, defaultValueForMissing, + lteChild, gtChild, leafValues, categoricalSplitFeatures, categoricalSplit) + { + } + internal InternalQuantileRegressionTree(ModelLoadContext ctx, bool usingDefaultValue, bool categoricalSplits) : base(ctx, usingDefaultValue, categoricalSplits) { diff --git a/src/Microsoft.ML.FastTree/TreeEnsemble/InternalRegressionTree.cs b/src/Microsoft.ML.FastTree/TreeEnsemble/InternalRegressionTree.cs index bdfaabdcde..e325861e2f 100644 --- a/src/Microsoft.ML.FastTree/TreeEnsemble/InternalRegressionTree.cs +++ b/src/Microsoft.ML.FastTree/TreeEnsemble/InternalRegressionTree.cs @@ -51,7 +51,7 @@ internal class InternalRegressionTree /// public int[][] CategoricalSplitFeatureRanges; // These are the thresholds based on the binned values of the raw features. - public uint[] Thresholds { get; } + public uint[] Thresholds { get; private set; } // These are the thresholds based on the raw feature values. Populated after training. public float[] RawThresholds { get; private set; } public double[] SplitGains { get { return _splitGain; } } @@ -189,7 +189,7 @@ public static InternalRegressionTree Create(int numLeaves, int[] splitFeatures, } } - internal InternalRegressionTree(int[] splitFeatures, double[] splitGain, double[] gainPValue, + protected InternalRegressionTree(int[] splitFeatures, double[] splitGain, double[] gainPValue, float[] rawThresholds, float[] defaultValueForMissing, int[] lteChild, int[] gtChild, double[] leafValues, int[][] categoricalSplitFeatures, bool[] categoricalSplit) : this() @@ -201,6 +201,7 @@ internal InternalRegressionTree(int[] splitFeatures, double[] splitGain, double[ _splitGain = splitGain; _gainPValue = gainPValue; RawThresholds = rawThresholds; + Thresholds = new uint[NumLeaves - 1]; DefaultValueForMissing = defaultValueForMissing; LteChild = lteChild; GtChild = gtChild; @@ -1099,6 +1100,32 @@ public void PopulateRawThresholds(Dataset dataset) } } + public void PopulateThresholds(Dataset dataset) + { + var features = dataset.Flocks; + + int numNodes = NumLeaves - 1; + for (int n = 0; n < numNodes; n++) + { + int flock; + int subfeature; + dataset.MapFeatureToFlockAndSubFeature(SplitFeatures[n], out flock, out subfeature); + if (CategoricalSplit[n] == false) + { + uint numBins = (uint)dataset.Flocks[flock].BinUpperBounds(subfeature).Length; + for (uint i = 1; i < numBins; ++i) + { + double rawThreshold = dataset.Flocks[flock].BinUpperBounds(subfeature)[i]; + if (RawThresholds[n] < rawThreshold) + { + Thresholds[n] = i; + break; + } + } + } + } + } + public void RemapFeatures(int[] oldToNewFeatures) { Contracts.AssertValue(oldToNewFeatures); diff --git a/src/Microsoft.ML.FastTree/TreeEnsemble/InternalTreeEnsemble.cs b/src/Microsoft.ML.FastTree/TreeEnsemble/InternalTreeEnsemble.cs index ce3b9328c4..d88dabb7f8 100644 --- a/src/Microsoft.ML.FastTree/TreeEnsemble/InternalTreeEnsemble.cs +++ b/src/Microsoft.ML.FastTree/TreeEnsemble/InternalTreeEnsemble.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Runtime.InteropServices; using Microsoft.ML.Data; using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Model.Pfa; @@ -25,6 +26,25 @@ internal class InternalTreeEnsemble private readonly string _firstInputInitializationContent; private readonly List _trees; + // oneDAL model specific properties + public enum OneDalModelType : byte + { + Regression = 0, + Classification = 1 + } + private readonly OneDalModelType _oneDalModelType; + private readonly byte[] _oneDalModel; + private readonly int _oneDalModelSize; + + internal static class OneDal + { + private const string OneDalLibPath = "OneDalNative"; + + [DllImport(OneDalLibPath, EntryPoint = "decisionForestClassificationPrediction")] + public static extern unsafe double DecisionForestClassificationPrediction( + void* featuresPtr, int nColumns, int nClasses, void* modelPtr, int modelSize); + } + public IEnumerable Trees => _trees; public double Bias { get; set; } @@ -34,6 +54,15 @@ internal class InternalTreeEnsemble public InternalTreeEnsemble() { _trees = new List(); + _oneDalModel = null; + } + + public InternalTreeEnsemble(byte[] oneDalModel, int oneDalModelSize, OneDalModelType oneDalModelType) + { + _trees = new List(); + _oneDalModel = oneDalModel; + _oneDalModelSize = oneDalModelSize; + _oneDalModelType = oneDalModelType; } public InternalTreeEnsemble(ModelLoadContext ctx, bool usingDefaultValues, bool categoricalSplits) @@ -54,6 +83,7 @@ public InternalTreeEnsemble(ModelLoadContext ctx, bool usingDefaultValues, bool AddTree(InternalRegressionTree.Load(ctx, usingDefaultValues, categoricalSplits)); Bias = ctx.Reader.ReadDouble(); _firstInputInitializationContent = ctx.LoadStringOrNull(); + _oneDalModel = null; } internal void Save(ModelSaveContext ctx) @@ -258,8 +288,31 @@ public double GetOutput(int[] binnedInstance) public double GetOutput(in VBuffer feat) { double output = 0.0; - for (int h = 0; h < NumTrees; h++) - output += _trees[h].GetOutput(in feat); + if (_oneDalModel != null) + { + var featuresToCopy = feat.GetValues(); + int nFeatures = feat.Length; + float[] featuresArray = new float[nFeatures]; + for (int i = 0; i < nFeatures; ++i) + featuresArray[i] = featuresToCopy[i]; + + unsafe + { + #pragma warning disable MSML_SingleVariableDeclaration // Have only a single variable present per declaration + fixed (void* featuresPtr = &featuresArray[0], modelPtr = &_oneDalModel[0]) + #pragma warning restore MSML_SingleVariableDeclaration // Have only a single variable present per declaration + { + if (_oneDalModelType == OneDalModelType.Classification) + output = OneDal.DecisionForestClassificationPrediction(featuresPtr, nFeatures, 2, modelPtr, _oneDalModelSize); + output = (1.0 - 2.0 * output) * (double)NumTrees; + } + } + } + else + { + for (int h = 0; h < NumTrees; h++) + output += _trees[h].GetOutput(in feat); + } return output; } diff --git a/src/Microsoft.ML.Featurizers/Microsoft.ML.Featurizers.csproj b/src/Microsoft.ML.Featurizers/Microsoft.ML.Featurizers.csproj index 175ab9d059..2ea5f15fcb 100644 --- a/src/Microsoft.ML.Featurizers/Microsoft.ML.Featurizers.csproj +++ b/src/Microsoft.ML.Featurizers/Microsoft.ML.Featurizers.csproj @@ -10,6 +10,7 @@ + diff --git a/src/Microsoft.ML.LightGbm/LightGbmTrainerBase.cs b/src/Microsoft.ML.LightGbm/LightGbmTrainerBase.cs index e616d12267..4f17e19128 100644 --- a/src/Microsoft.ML.LightGbm/LightGbmTrainerBase.cs +++ b/src/Microsoft.ML.LightGbm/LightGbmTrainerBase.cs @@ -539,7 +539,7 @@ private CategoricalMetaData GetCategoricalMetaData(IChannel ch, RoleMappedData t ch.Info("Auto-tuning parameters: " + nameof(LightGbmTrainerOptions.UseCategoricalSplit) + " = " + useCat); if (useCat) { - var featureCol = trainData.Schema.Schema[DefaultColumnNames.Features]; + var featureCol = trainData.Schema.Feature.Value; AnnotationUtils.TryGetCategoricalFeatureIndices(trainData.Schema.Schema, featureCol.Index, out categoricalFeatures); } var colType = trainData.Schema.Feature.Value.Type; @@ -619,7 +619,7 @@ private void TrainCore(IChannel ch, IProgressChannel pch, Dataset dtrain, Catego Host.AssertValue(pch); Host.AssertValue(dtrain); Host.AssertValueOrNull(dvalid); - + Host.CheckAlive(); // For multi class, the number of labels is required. ch.Assert(((ITrainer)this).PredictionKind != PredictionKind.MulticlassClassification || GbmOptions.ContainsKey("num_class"), "LightGBM requires the number of classes to be specified in the parameters."); @@ -628,7 +628,7 @@ private void TrainCore(IChannel ch, IProgressChannel pch, Dataset dtrain, Catego lock (LightGbmShared.LockForMultiThreadingInside) { ch.Info("LightGBM objective={0}", GbmOptions["objective"]); - using (Booster bst = WrappedLightGbmTraining.Train(ch, pch, GbmOptions, dtrain, + using (Booster bst = WrappedLightGbmTraining.Train(Host, ch, pch, GbmOptions, dtrain, dvalid: dvalid, numIteration: LightGbmTrainerOptions.NumberOfIterations, verboseEval: LightGbmTrainerOptions.Verbose, earlyStoppingRound: LightGbmTrainerOptions.EarlyStoppingRound)) { diff --git a/src/Microsoft.ML.LightGbm/WrappedLightGbmTraining.cs b/src/Microsoft.ML.LightGbm/WrappedLightGbmTraining.cs index d898018e9a..169467f43a 100644 --- a/src/Microsoft.ML.LightGbm/WrappedLightGbmTraining.cs +++ b/src/Microsoft.ML.LightGbm/WrappedLightGbmTraining.cs @@ -15,7 +15,7 @@ internal static class WrappedLightGbmTraining /// /// Train and return a booster. /// - public static Booster Train(IChannel ch, IProgressChannel pch, + public static Booster Train(IHost host, IChannel ch, IProgressChannel pch, Dictionary parameters, Dataset dtrain, Dataset dvalid = null, int numIteration = 100, bool verboseEval = true, int earlyStoppingRound = 0) { @@ -67,6 +67,7 @@ public static Booster Train(IChannel ch, IProgressChannel pch, }); for (iter = 0; iter < numIteration; ++iter) { + host.CheckAlive(); if (bst.Update()) break; diff --git a/src/Microsoft.ML.OneDal/KnnClassificationTrainer.cs b/src/Microsoft.ML.OneDal/KnnClassificationTrainer.cs index f0ca436941..3de8fb55a9 100644 --- a/src/Microsoft.ML.OneDal/KnnClassificationTrainer.cs +++ b/src/Microsoft.ML.OneDal/KnnClassificationTrainer.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -8,27 +8,31 @@ using System.Linq; +using Microsoft.ML; using Microsoft.ML.Data; using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Runtime; - -using Microsoft.ML; +#if false using Microsoft.ML.OneDal; +#endif +#if false [assembly: LoadableClass(typeof(KnnClassificationTransformer), null, typeof(SignatureLoadModel), KnnClassificationTransformer.UserName, KnnClassificationTransformer.LoaderSignature)] [assembly: LoadableClass(typeof(IRowMapper), typeof(KnnClassificationTransformer), null, typeof(SignatureLoadRowMapper), KnnClassificationTransformer.UserName, KnnClassificationTransformer.LoaderSignature)] +#endif +#if false namespace Microsoft.ML.OneDal { public class KnnClassificationTrainer : IEstimator { - private readonly IHost _host; + private readonly IHost _host; private KnnAlgorithm _knnAlgorithm; - public internal class KnnClassificationOptions + internal class KnnClassificationOptions { private readonly int _numNeighbors = default(int); public int NumNeighbors { get; } @@ -38,7 +42,7 @@ public internal class KnnClassificationOptions } } - KnnClassificationTrainer(IHostEnvironment env, int numClasses) // FIXME -- pass an Options instance rather than naked numClasses + public KnnClassificationTrainer(IHostEnvironment env, int numClasses) // FIXME -- pass an Options instance rather than naked numClasses { Contracts.CheckValue(env, nameof(env)); _host = Contracts.CheckRef(env, nameof(env)).Register("KnnClassificationTrainer"); @@ -49,9 +53,14 @@ public internal class KnnClassificationOptions public KnnClassificationTransformer Fit(IDataView input) { int featureDimensionality = default(int); - if (featuresColumn.Type is VectorDataViewType vt) { + var featuresColumn = input.Schema["Features"]; + var labelColumn = input.Schema["Label"]; + if (featuresColumn.Type is VectorDataViewType vt) + { featureDimensionality = vt.Size; - } else { + } + else + { return null; } @@ -65,43 +74,52 @@ public KnnClassificationTransformer Fit(IDataView input) var featureGetter = cursor.GetGetter>(featuresColumn); var labelGetter = cursor.GetGetter(labelColumn); - List< VBuffer > tempFeatures = new List >(); - List< float > tempLabels = new List(); + List> tempFeatures = new List>(); + List tempLabels = new List(); while (cursor.MoveNext()) { featureGetter(ref featureValues); labelGetter(ref labelValue); - tempFeatures.Add(featureValues); - tempLabels.Add(labelValue); + tempFeatures.Add(featureValues); + tempLabels.Add(labelValue); samples++; } - float[] data = new float[samples * featureDimensionality]; - float[] dataLabels = new float[samples]; + float[] data = new float[samples * featureDimensionality]; + float[] dataLabels = new float[samples]; Span dataSpan = new Span(data); + //VBuffer tempFeaturesValues = default(VBuffer); - for( int = 0; i < tempFeatures.Count(); i++) { - + for (int i = 0; i < tempFeatures.Count(); i++) + { int offset = i * featureDimensionality; Span target = dataSpan.Slice(offset, featureDimensionality); - tempFeatures.GetValues().CopyTo(target); + //tempFeatures.GetValues().CopyTo(target); dataLabels[i] = tempLabels[i]; - } - _knnAlgorithm.Train(data, dataLabels); + } +#if false + _knnAlgorithm.Train(data, dataLabels); +#endif } +#if false return new KnnClassificationTransformer(_host, _knnAlgorithm); +#else + return null; +#endif + } public SchemaShape GetOutputSchema(SchemaShape inputSchema) { +#if false Host.CheckValue(inputSchema, nameof(inputSchema)); var result = inputSchema.ToDictionary(x => x.Name); var resultDic = inputSchema.ToDictionary(x => x.Name); -// FIXME + // FIXME // This loop checks if all input columns needed in the underlying transformer can be found // in inputSchema. for (var i = 0; i < Transformer.Inputs.Length; i++) @@ -136,6 +154,9 @@ public SchemaShape GetOutputSchema(SchemaShape inputSchema) } return new SchemaShape(resultDic.Values); +#else + return null; +#endif } } @@ -148,27 +169,58 @@ public sealed class KnnClassificationTransformer : ITransformer, IDisposable internal const string LoaderSignature = "KNNCLASS"; - private KnnAlgorithm _knn; // Assumes the model is trained +#if false + private KnnAlgorithm _knn; // Assumes the model is trained +#endif + public bool IsRowToRowMapper => throw new NotImplementedException(); + +#if false public KnnClassificationTransformer(IHost host, KnnAlgorithm knn) : base(host) { + _knn = knn; } +#endif public IDataView Transform(IDataView input) - { - _host.CheckValue(input, nameof(input)) - return new KnnDataView(input, _knn); - } + { +#if false + _host.CheckValue(input, nameof(input)); + return new KnnDataView(input, _knn); +#else + return null; +#endif + } public void Dispose() { +#if false _knn.Dispose(); +#endif } +#if false private protected override void SaveModel(ModelSaveContext ctx) { throw new NotImplementedException(); } +#endif + + public DataViewSchema GetOutputSchema(DataViewSchema inputSchema) + { + throw new NotImplementedException(); + } + + public IRowToRowMapper GetRowToRowMapper(DataViewSchema inputSchema) + { + throw new NotImplementedException(); + } + + public void Save(ModelSaveContext ctx) + { + throw new NotImplementedException(); + } } - } \ No newline at end of file + } +#endif diff --git a/src/Microsoft.ML.OneDal/KnnDataView.cs b/src/Microsoft.ML.OneDal/KnnDataView.cs index 02b4187664..fcd571cd09 100644 --- a/src/Microsoft.ML.OneDal/KnnDataView.cs +++ b/src/Microsoft.ML.OneDal/KnnDataView.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -8,161 +8,218 @@ using System.Linq; using System.Security; using System.Text; - +using Microsoft.ML; using Microsoft.ML.Data; using Microsoft.ML.Runtime; -internal sealed class KnnDataView : IDataTransform +#if false +namespace Microsoft.ML.OneDal { - - public DataViewSchema Schema { get; } - public bool CanShuffle => false; - private KnnAlgorithm _knn; // Expects the trained knn algorithm - public KnnAlgorithm KNN { get { return _knn; }} - - public KnnDataView(IDataView source, KnnAlgorithm knn) + public sealed class KnnDataView : IDataTransform { - Source = source; // the "parent" dataview - - // FIXME -- copy from Source rather than construct from scratch - var builder = new DataViewSchema.Builder(); - builder.AddColumn("Features", VectorDataViewType.Instance); - builder.AddColumn("Label", NumberDataViewType.Instance); - Schema = builder.ToSchema(); - } - public long? GetRowCount() => null; - - public DataViewRowCursor GetRowCursor(IEnumerable columnsNeeded, Random rand = null) - => new Cursor(this, columnsNeeded.Any(c => c.Index == 0), columnsNeeded.Any(c => c.Index == 1)); - - public DataViewRowCursor[] GetRowCursorSet(IEnumerable columnsNeeded, int n, Random rand = null) - => new[] { GetRowCursor(columnsNeeded, rand) }; - - - private sealed class Cursor : DataViewRowCursor - { - private KnnDataView _parent =parent, bool wantsFeatures, bool wantsLabels) - private bool _disposed; - private long _position; - private readonly Delegate[] _getters; - - private int _featuresDimensionality; - private readonly IList< VBuffer > _featureCache; - private int _itemsInCache = 0; - private readonly IList< int > _classCache; - - private bool _parentIsEmpty = false; - private DataViewRowCursor _parentCursor; - private ValueGetter< VBuffer > _featuresGetterFromCursor; - private int _currentIndex = -1; - private const int cacheCapacity = 1000; - - public override long Position => _position; - public override long Batch => 0; - public override DataViewSchema Schema { get; } - - public Cursor(KnnDataView parent, bool wantsFeatures, bool wantsLabels) - { - _parent = parent; - Schema = parent.Schema; - _position = -1; - var featuresColumn = Schema["Features"]; - _featuresDimensionality = -1; - if (featuresColumn.Type is VectorDataViewType vt) { - _featuresDimensionality = vt.Size; - } - // FIXME -- report error when features column is not a vector (probably check from above) - - _parentCursor = parent.Source.GetRowCursor(new [] { featuresColumn }); - _featuresGetterFromCursor = _parentCursor.GetGetter< VBuffer >(featuresColumn); - _getters = new Delegate[] - { - wantsFeatures ? (ValueGetter>) FeaturesGetterImplementation : null, - wantsLabels ? (ValueGetter) LabelsGetterImplementation : null - - }; - } - - protected override void Dispose(bool disposing) - { - if (_disposed) - return; - if (disposing) { - // _enumerator.Dispose(); // FIXME -- dispose of parentcursor - _position = -1; - } - _disposed = true; - base.Dispose(disposing); - } - - // FIXME - private void FeaturesGetterImplementation(ref VBuffer value) { - _featureCache[_currentIndex].CopyTo(value); - } - - private void LabelsGetterImplementation(ref int value) => value = _classCache[_currentIndex]; - - private void IdGetterImplementation(ref DataViewRowId id) => id = new DataViewRowId((ulong)_position, 0); - - public override ValueGetter GetGetter(DataViewSchema.Column column) - { - if (!IsColumnActive(column)) - throw new ArgumentOutOfRangeException(nameof(column)); - return (ValueGetter)_getters[column.Index]; - } - - public override ValueGetter GetIdGetter() => IdGetterImplementation; - - public override bool IsColumnActive(DataViewSchema.Column column) - => _getters[column.Index] != null; - - public override bool MoveNext() - { - if (_disposed) return false; - if (_parentIsEmpty) { - Dispose(); - return false; - } - - if ((_itemsInCache == 0) || (_currentIndex >= _itemsInCache)) { - _itemsInCache = FillCache(); - if (_itemsInCache <= 0) return false; - _currentIndex = 0; - return true; - } - _currentIndex = 0; - return true; - } - - private int FillCache() - { - if (_parentIsEmpty) return -1; - _featureCache.Clear(); - int itemsInCache = 0; - VBuffer< float > featuresValue; - while (_parentCursor.MoveNext() && (itemsInCache < cacheCapacity)) { - _featuresGetterFromCursor( featuresValue ); - _featureCache.Add(featuresValue); - itemsInCache++; - } - - float [] featuresData = new float[itemsInCache * _featuresDimensionality]; - Span featuresSpan = new Span(featuresData); - int index = 0; - foreach(var vb in _featureCache) { - int offset = index * _featuresDimensionality; - Span target = featuresSpan.Slice(offset, _featuresDimensionality); - vb.GetValues().CopyTo(target); - } - float [] labelsTarget = new float[itemsInCache]; - _parent.KNN.Predict(featuresData, labelsTarget); // FIXME -- should pass directly to Cursor + private readonly IHostEnvironment _host; + private readonly IDataView _source; + + public DataViewSchema Schema { get; } + public bool CanShuffle => false; + private KnnAlgorithm _knn; // Expects the trained knn algorithm + public KnnAlgorithm KNN { get { return _knn; }} + + public IDataView Source => _source; + + public KnnDataView(IDataView source, KnnAlgorithm knn) + { + + // FIXME -- copy from Source rather than construct from scratch + var builder = new DataViewSchema.Builder(); + builder.AddColumn("Features", NumberDataViewType.Single); + builder.AddColumn("Label", NumberDataViewType.Single); + Schema = builder.ToSchema(); + } + + public long? GetRowCount() => null; + + public DataViewRowCursor GetRowCursor(IEnumerable columnsNeeded, Random rand = null) + => new Cursor(this, columnsNeeded.Any(c => c.Index == 0), columnsNeeded.Any(c => c.Index == 1)); + + public DataViewRowCursor[] GetRowCursorSet(IEnumerable columnsNeeded, int n, Random rand = null) + => new[] { GetRowCursor(columnsNeeded, rand) }; + + public void Save(ModelSaveContext ctx) + { + throw new NotImplementedException(); + } + + + private sealed class Cursor : DataViewRowCursor + { +#if false + private KnnDataView _parent = Source; +#endif + private bool _disposed; + private long _position; +#if false + private readonly Delegate[] _getters; + + private int _featuresDimensionality = 0; + private readonly IList> _featureCache; + private int _itemsInCache = 0; + private readonly IList _classCache; + + private bool _parentIsEmpty = false; + private DataViewRowCursor _parentCursor; + private ValueGetter> _featuresGetterFromCursor; + private int _currentIndex = -1; + private const int CacheCapacity = 1000; + + public override long Position => _position; + public override long Batch => 0; + public override DataViewSchema Schema { get; } +#endif + + public Cursor(KnnDataView parent, bool wantsFeatures, bool wantsLabels) + { +#if false + _parent = parent; + Schema = parent.Schema; + _position = -1; + var featuresColumn = Schema["Features"]; + _featuresDimensionality = -1; + if (featuresColumn.Type is VectorDataViewType vt) + { + _featuresDimensionality = vt.Size; + } + // FIXME -- report error when features column is not a vector (probably check from above) + + _parentCursor = parent.Source.GetRowCursor(new [] { featuresColumn }); + _featuresGetterFromCursor = _parentCursor.GetGetter>(featuresColumn); + _getters = new Delegate[] + { + wantsFeatures ? (ValueGetter>) FeaturesGetterImplementation : null, + wantsLabels ? (ValueGetter) LabelsGetterImplementation : null + }; +#endif + } + + protected override void Dispose(bool disposing) + { + if (_disposed) + return; + if (disposing) + { + // _enumerator.Dispose(); // FIXME -- dispose of parentcursor + _position = -1; + } + _disposed = true; + base.Dispose(disposing); + } + +#if false + // FIXME + private void FeaturesGetterImplementation(ref VBuffer value) + { + _featureCache[_currentIndex].CopyTo(value); + } + + + private void LabelsGetterImplementation(ref int value) => value = _classCache[_currentIndex]; + + private void IdGetterImplementation(ref DataViewRowId id) => id = new DataViewRowId((ulong)_position, 0); + + public override ValueGetter GetGetter(DataViewSchema.Column column) + { + if (!IsColumnActive(column)) + throw new ArgumentOutOfRangeException(nameof(column)); + return (ValueGetter)_getters[column.Index]; + } + + public override ValueGetter GetIdGetter() => IdGetterImplementation; + + public override bool IsColumnActive(DataViewSchema.Column column) + => _getters[column.Index] != null; + + public override bool MoveNext() + { + if (_disposed) return false; + if (_parentIsEmpty) + { + Dispose(); + return false; + } + + if ((_itemsInCache == 0) || (_currentIndex >= _itemsInCache)) + { + _itemsInCache = FillCache(); + if (_itemsInCache <= 0) return false; + _currentIndex = 0; + return true; + } + _currentIndex = 0; + return true; + } + + private int FillCache() + { + if (_parentIsEmpty) return -1; + _featureCache.Clear(); + int itemsInCache = 0; + VBuffer featuresValue; + while (_parentCursor.MoveNext() && (itemsInCache < CacheCapacity)) + { + _featuresGetterFromCursor(featuresValue); + _featureCache.Add(featuresValue); + itemsInCache++; + } + + float[] featuresData = new float[itemsInCache * _featuresDimensionality]; + Span featuresSpan = new Span(featuresData); + int index = 0; + foreach (var vb in _featureCache) + { + int offset = index * _featuresDimensionality; + Span target = featuresSpan.Slice(offset, _featuresDimensionality); + vb.GetValues().CopyTo(target); + } + float[] labelsTarget = new float[itemsInCache]; +//#if false + _parent.KNN.Predict(featuresData, labelsTarget); // FIXME -- should pass directly to Cursor for (int i = 0; i < itemsInCache; i++) { _classCache[i] = labelsTarget[i]; // FIXME -- settle on a name, labels or class } +//#endif + + if (itemsInCache < CacheCapacity) _parentIsEmpty = true; + return itemsInCache; + } +#endif + public override long Position => throw new NotImplementedException(); + + public override long Batch => throw new NotImplementedException(); + + public override DataViewSchema Schema => throw new NotImplementedException(); + + public override ValueGetter GetGetter(DataViewSchema.Column column) + { + throw new NotImplementedException(); + } + + public override ValueGetter GetIdGetter() + { + throw new NotImplementedException(); + } + + public override bool IsColumnActive(DataViewSchema.Column column) + { + throw new NotImplementedException(); + } + + public override bool MoveNext() + { + throw new NotImplementedException(); + } + } - if (itemsInCache < cacheCapacity) _parentIsEmpty = true; - return itemsInCache; - } } } +#endif \ No newline at end of file diff --git a/src/Microsoft.ML.OneDal/KnnInterface.cs b/src/Microsoft.ML.OneDal/KnnInterface.cs index 82fc4104eb..777ae9f8b8 100644 --- a/src/Microsoft.ML.OneDal/KnnInterface.cs +++ b/src/Microsoft.ML.OneDal/KnnInterface.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -16,9 +16,9 @@ using Microsoft.Win32.SafeHandles; +#if false namespace Microsoft.ML.OneDal { - internal static class KnnInterface { public sealed class SafeKnnAlgorithmHandle : SafeHandleZeroOrMinusOneIsInvalid @@ -36,7 +36,7 @@ protected override bool ReleaseHandle() } } - const string LibPath = "OneDALNative"; + const string LibPath = "OneDALNative"; [DllImport(LibPath)] public static extern unsafe SafeKnnAlgorithmHandle CreateEngine(int numClasses); @@ -114,3 +114,4 @@ public void Dispose() } } } +#endif \ No newline at end of file diff --git a/src/Microsoft.ML.OneDal/Microsoft.ML.OneDal.csproj b/src/Microsoft.ML.OneDal/Microsoft.ML.OneDal.csproj index 7bb2b5ef68..86c527960a 100644 --- a/src/Microsoft.ML.OneDal/Microsoft.ML.OneDal.csproj +++ b/src/Microsoft.ML.OneDal/Microsoft.ML.OneDal.csproj @@ -24,6 +24,16 @@ all + + win + linux + osx + + + + all + + diff --git a/src/Microsoft.ML.OneDal/OneDalCatalog.cs b/src/Microsoft.ML.OneDal/OneDalCatalog.cs index dc53b4487f..e53d0d3045 100644 --- a/src/Microsoft.ML.OneDal/OneDalCatalog.cs +++ b/src/Microsoft.ML.OneDal/OneDalCatalog.cs @@ -6,14 +6,17 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; using Microsoft.ML.Transforms; +#if false +using Microsoft.ML.OneDal; namespace Microsoft.ML { public static class OneDalCatalog { public static KnnClassificationTrainer KnnClassification( - this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, - int numClasses) + this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, int numClasses) => new KnnClassificationTrainer(CatalogUtils.GetEnvironment(catalog), numClasses); } + } +#endif \ No newline at end of file diff --git a/src/Microsoft.ML.OnnxTransformer/OnnxTransform.cs b/src/Microsoft.ML.OnnxTransformer/OnnxTransform.cs index c1f6d1fe7f..b30b2ace89 100644 --- a/src/Microsoft.ML.OnnxTransformer/OnnxTransform.cs +++ b/src/Microsoft.ML.OnnxTransformer/OnnxTransform.cs @@ -385,8 +385,13 @@ private static IEnumerable AdjustDimensions(OnnxShape shape) { if (shape.Count > 0) { - return shape.Select(x => (x <= 0) ? 1 : x); + if (shape[0] < 0) + { + shape[0] = 1; + } + return shape.Select(x => (x <= 0) ? 0 : x); } + return new[] { 1 }; } @@ -444,6 +449,11 @@ public Mapper(OnnxTransformer parent, DataViewSchema inputSchema) : var shape = inputNodeInfo.Shape; var inputShape = AdjustDimensions(inputNodeInfo.Shape); + + // Only allow a single unkown size dimension + if (inputShape.Where(x => x == 0).Count() > 1) + throw new ArgumentOutOfRangeException(_parent.Inputs[i], "Only 1 unknown dimension is allowed"); + _inputTensorShapes[i] = inputShape.ToList(); _inputOnnxTypes[i] = inputNodeInfo.TypeInOnnxRuntime; @@ -456,9 +466,6 @@ public Mapper(OnnxTransformer parent, DataViewSchema inputSchema) : var type = inputSchema[_inputColIndices[i]].Type; var vectorType = type as VectorDataViewType; - if (vectorType != null && vectorType.Size == 0) - throw Host.Except($"Variable length input columns not supported"); - var itemType = type.GetItemType(); var nodeItemType = inputNodeInfo.DataViewType.GetItemType(); if (itemType != nodeItemType) @@ -474,11 +481,14 @@ public Mapper(OnnxTransformer parent, DataViewSchema inputSchema) : // If the column is one dimension we make sure that the total size of the Onnx shape matches. // Compute the total size of the known dimensions of the shape. - int valCount = inputShape.Where(x => x > 0).Aggregate((x, y) => x * y); - // The column length should be divisible by this, so that the other dimensions can be integral. - int typeValueCount = type.GetValueCount(); - if (typeValueCount % valCount != 0) - throw Contracts.Except($"Input shape mismatch: Input '{_parent.Inputs[i]}' has shape {String.Join(",", inputShape)}, but input data is of length {typeValueCount}."); + if (!inputShape.Any(x => x == 0)) + { + int valCount = inputShape.Where(x => x > 0).Aggregate((x, y) => x * y); + // The column length should be divisible by this, so that the other dimensions can be integral. + int typeValueCount = type.GetValueCount(); + if (typeValueCount % valCount != 0) + throw Contracts.Except($"Input shape mismatch: Input '{_parent.Inputs[i]}' has shape {String.Join(",", inputShape)}, but input data is of length {typeValueCount}."); + } } } @@ -781,11 +791,17 @@ public NamedOnnxValue GetNamedOnnxValue() private class NamedOnnxValueGetterVec : INamedOnnxValueGetter { + private delegate NamedOnnxValue GetNamedOnnxVal(); + private readonly ValueGetter> _srcGetter; private readonly OnnxShape _tensorShape; private readonly string _colName; private VBuffer _vBuffer; private VBuffer _vBufferDense; + private readonly int _denominator; + private readonly int _zeroIndex; + private readonly GetNamedOnnxVal _namedOnnxValueDelegate; + public NamedOnnxValueGetterVec(DataViewRow input, int colIndex, OnnxShape tensorShape) { _srcGetter = input.GetGetter>(input.Schema[colIndex]); @@ -793,11 +809,38 @@ public NamedOnnxValueGetterVec(DataViewRow input, int colIndex, OnnxShape tensor _colName = input.Schema[colIndex].Name; _vBuffer = default; _vBufferDense = default; + _denominator = _tensorShape.Where(x => x > 0).Aggregate((a, x) => a * x); + _zeroIndex = _tensorShape.IndexOf(0); + + var isKnownSize = (input.Schema[colIndex].Type as VectorDataViewType).IsKnownSize; + + if (isKnownSize) + _namedOnnxValueDelegate = GetNamedOnnxValueKnownSize; + else + _namedOnnxValueDelegate = GetNamedOnnxValueUnknownSize; } public NamedOnnxValue GetNamedOnnxValue() + { + return _namedOnnxValueDelegate(); + } + + private void GetNamedOnnxValueCore() { _srcGetter(ref _vBuffer); _vBuffer.CopyToDense(ref _vBufferDense); + } + + private NamedOnnxValue GetNamedOnnxValueKnownSize() + { + GetNamedOnnxValueCore(); + return OnnxUtils.CreateNamedOnnxValue(_colName, _vBufferDense.GetValues(), _tensorShape); + } + + private NamedOnnxValue GetNamedOnnxValueUnknownSize() + { + GetNamedOnnxValueCore(); + + _tensorShape[_zeroIndex] = _vBufferDense.Length / _denominator; return OnnxUtils.CreateNamedOnnxValue(_colName, _vBufferDense.GetValues(), _tensorShape); } } @@ -908,14 +951,14 @@ public override SchemaShape GetOutputSchema(SchemaShape inputSchema) // Get the i-th IDataView input column's name in the underlying ONNX transformer. var input = Transformer.Inputs[i]; + // Only allow 1 unknown dimension + if (Transformer.Model.ModelInfo.InputsInfo[i].Shape.Where(x => x == 0).Count() > 1) + throw new ArgumentOutOfRangeException(input, "Only 1 unknown dimension is allowed"); + // Make sure inputSchema contains the i-th input column. if (!inputSchema.TryFindColumn(input, out var col)) throw Host.ExceptSchemaMismatch(nameof(inputSchema), "input", input); - // Make sure that the input columns in inputSchema are fixed shape tensors. - if (col.Kind == SchemaShape.Column.VectorKind.VariableVector) - throw Host.ExceptSchemaMismatch(nameof(inputSchema), "input", input, "vector", col.GetTypeString()); - var inputsInfo = Transformer.Model.ModelInfo.InputsInfo; var idx = Transformer.Model.ModelInfo.InputNames.IndexOf(input); if (idx < 0) diff --git a/src/Microsoft.ML.SearchSpace/Attribute/ChoiceAttribute.cs b/src/Microsoft.ML.SearchSpace/Attribute/ChoiceAttribute.cs index 9467fb5fd1..ccb13cb16c 100644 --- a/src/Microsoft.ML.SearchSpace/Attribute/ChoiceAttribute.cs +++ b/src/Microsoft.ML.SearchSpace/Attribute/ChoiceAttribute.cs @@ -3,9 +3,9 @@ // See the LICENSE file in the project root for more information. using System; +using System.Diagnostics.Contracts; using System.Globalization; using System.Linq; -using Microsoft.ML.Runtime; using Microsoft.ML.SearchSpace.Option; namespace Microsoft.ML.SearchSpace @@ -24,9 +24,9 @@ public sealed class ChoiceAttribute : Attribute public ChoiceAttribute(params object[] candidates) { var candidatesType = candidates.Select(o => o.GetType()).Distinct(); - Contracts.Assert(candidatesType.Count() == 1, "multiple candidates type detected"); + Contract.Assert(candidatesType.Count() == 1, "multiple candidates type detected"); - Option = new ChoiceOption(candidates.Select(c => Convert.ToString(c, CultureInfo.InvariantCulture)).ToArray()); + Option = new ChoiceOption(candidates); } /// @@ -35,10 +35,10 @@ public ChoiceAttribute(params object[] candidates) public ChoiceAttribute(object[] candidates, object defaultValue) { var candidatesType = candidates.Select(o => o.GetType()).Distinct(); - Contracts.Assert(candidatesType.Count() == 1, "multiple candidates type detected"); - Contracts.Assert(candidatesType.First() == defaultValue.GetType(), "candidates type doesn't match with defaultValue type"); + Contract.Assert(candidatesType.Count() == 1, "multiple candidates type detected"); + Contract.Assert(candidatesType.First() == defaultValue.GetType(), "candidates type doesn't match with defaultValue type"); - Option = new ChoiceOption(candidates.Select(c => Convert.ToString(c, CultureInfo.InvariantCulture)).ToArray(), Convert.ToString(defaultValue, CultureInfo.InvariantCulture)); + Option = new ChoiceOption(candidates, defaultValue); } internal ChoiceOption Option { get; } diff --git a/src/Microsoft.ML.SearchSpace/Microsoft.ML.SearchSpace.csproj b/src/Microsoft.ML.SearchSpace/Microsoft.ML.SearchSpace.csproj index 0eb3260f6b..85b50459f7 100644 --- a/src/Microsoft.ML.SearchSpace/Microsoft.ML.SearchSpace.csproj +++ b/src/Microsoft.ML.SearchSpace/Microsoft.ML.SearchSpace.csproj @@ -11,9 +11,4 @@ - - - - - diff --git a/src/Microsoft.ML.SearchSpace/Option/ChoiceOption.cs b/src/Microsoft.ML.SearchSpace/Option/ChoiceOption.cs index dfdbe7cbd9..813be703bd 100644 --- a/src/Microsoft.ML.SearchSpace/Option/ChoiceOption.cs +++ b/src/Microsoft.ML.SearchSpace/Option/ChoiceOption.cs @@ -3,8 +3,8 @@ // See the LICENSE file in the project root for more information. using System; +using System.Diagnostics.Contracts; using System.Linq; -using Microsoft.ML.Runtime; #nullable enable @@ -22,11 +22,11 @@ public sealed class ChoiceOption : OptionBase /// public ChoiceOption(params object[] choices) { - Contracts.Check(choices.Length > 0 && choices.Length < 1074, "the length of choices must be (0, 1074)"); + Contract.Assert(choices.Length > 0 && choices.Length < 1074, "the length of choices must be (0, 1074)"); var distinctChoices = choices.Distinct(); - Contracts.Check(distinctChoices.Count() == choices.Length, "choices must not contain repeated values"); + Contract.Assert(distinctChoices.Count() == choices.Length, "choices must not contain repeated values"); - Choices = distinctChoices.OrderBy(x => x).ToArray(); + Choices = distinctChoices.Select(o => Parameter.FromObject(o)).ToArray(); _option = new UniformSingleOption(0, Choices.Length); Default = Enumerable.Repeat(0.0, FeatureSpaceDim).ToArray(); } @@ -46,7 +46,7 @@ public ChoiceOption(object[] choices, object? defaultChoice) /// /// Get all choices. /// - public object[] Choices { get; } + public Parameter[] Choices { get; } /// /// @@ -68,9 +68,8 @@ public override double[] MappingToFeatureSpace(Parameter param) return new double[0]; } - var value = param.AsType(); - var x = Array.BinarySearch(Choices, value); - Contracts.Check(x != -1, $"{value} not contains"); + var x = Array.IndexOf(Choices, param); + Contract.Assert(x >= 0, $"{param} not contains"); return _option.MappingToFeatureSpace(Parameter.FromInt(x)); } @@ -80,10 +79,10 @@ public override double[] MappingToFeatureSpace(Parameter param) /// public override Parameter SampleFromFeatureSpace(double[] values) { - Contracts.Check(values.Length >= 0, "values length must be greater than 0"); + Contract.Assert(values.Length >= 0, "values length must be greater than 0"); if (values.Length == 0) { - return Parameter.FromObject(Choices[0]); + return Choices[0]; } var param = _option.SampleFromFeatureSpace(values); @@ -96,7 +95,7 @@ public override Parameter SampleFromFeatureSpace(double[] values) { idx = Choices.Length - 1; } - return Parameter.FromObject(Choices[idx]); + return Choices[idx]; } } } diff --git a/src/Microsoft.ML.SearchSpace/Option/UniformNumericOption.cs b/src/Microsoft.ML.SearchSpace/Option/UniformNumericOption.cs index 7738db8a23..53b3c42c8c 100644 --- a/src/Microsoft.ML.SearchSpace/Option/UniformNumericOption.cs +++ b/src/Microsoft.ML.SearchSpace/Option/UniformNumericOption.cs @@ -3,8 +3,8 @@ // See the LICENSE file in the project root for more information. using System; +using System.Diagnostics.Contracts; using System.Linq; -using Microsoft.ML.Runtime; namespace Microsoft.ML.SearchSpace.Option { @@ -21,8 +21,8 @@ public abstract class UniformNumericOption : OptionBase /// Indicate whether it should be log base or not. public UniformNumericOption(double min, double max, bool logBase = false) { - Contracts.Check(max > min, "max must be larger than min."); - Contracts.Check(min > 0 || logBase == false, "min must be larger than 0 if logBase is true."); + Contract.Assert(max > min, "max must be larger than min."); + Contract.Assert(min > 0 || logBase == false, "min must be larger than 0 if logBase is true."); Min = min; Max = max; LogBase = logBase; @@ -60,7 +60,7 @@ public UniformNumericOption(double min, double max, bool logBase = false) public override double[] MappingToFeatureSpace(Parameter param) { var x = param.AsType(); - Contracts.Check(x <= Max && x >= Min, $"{x} is not within [{Min}, {Max}]"); + Contract.Assert(x <= Max && x >= Min, $"{x} is not within [{Min}, {Max}]"); if (LogBase) { var logMax = Math.Log(Max); @@ -80,9 +80,9 @@ public override double[] MappingToFeatureSpace(Parameter param) /// public override Parameter SampleFromFeatureSpace(double[] values) { - Contracts.Check(values.Length == 1, "values length must be 1"); + Contract.Assert(values.Length == 1, "values length must be 1"); var value = values[0]; - Contracts.Check(value <= 1 && value >= 0, $"{value} must be between [0,1]"); + Contract.Assert(value <= 1 && value >= 0, $"{value} must be between [0,1]"); if (LogBase) { diff --git a/src/Microsoft.ML.SearchSpace/Parameter.cs b/src/Microsoft.ML.SearchSpace/Parameter.cs index bcc4f02bf2..c1cb387ffe 100644 --- a/src/Microsoft.ML.SearchSpace/Parameter.cs +++ b/src/Microsoft.ML.SearchSpace/Parameter.cs @@ -5,10 +5,10 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Diagnostics.Contracts; using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; -using Microsoft.ML.Runtime; using Microsoft.ML.SearchSpace.Converter; namespace Microsoft.ML.SearchSpace @@ -374,7 +374,7 @@ IEnumerator IEnumerable.GetEnumerator() private void VerifyIfParameterIsObjectType() { - Contracts.Check(ParameterType == ParameterType.Object, "parameter is not object type."); + Contract.Assert(ParameterType == ParameterType.Object, "parameter is not object type."); } /// @@ -404,6 +404,9 @@ public bool Remove(string key) return (_value as IDictionary).Remove(key); } + /// + /// + /// public bool Equals(Parameter other) { //Check whether the compared object is null. @@ -418,6 +421,9 @@ public bool Equals(Parameter other) return thisJson == otherJson; } + /// + /// + /// public override int GetHashCode() { var thisJson = JsonSerializer.Serialize(this); diff --git a/src/Microsoft.ML.SearchSpace/SearchSpace.cs b/src/Microsoft.ML.SearchSpace/SearchSpace.cs index 9007161bea..12aefa95e7 100644 --- a/src/Microsoft.ML.SearchSpace/SearchSpace.cs +++ b/src/Microsoft.ML.SearchSpace/SearchSpace.cs @@ -4,8 +4,8 @@ using System; using System.Collections.Generic; +using System.Diagnostics.Contracts; using System.Linq; -using Microsoft.ML.Runtime; using Microsoft.ML.SearchSpace.Option; namespace Microsoft.ML.SearchSpace @@ -115,7 +115,7 @@ public override int?[] Step /// public override Parameter SampleFromFeatureSpace(double[] feature) { - Contracts.Check(feature.Length == FeatureSpaceDim, "input feature doesn't match"); + Contract.Assert(feature.Length == FeatureSpaceDim, "input feature doesn't match"); var param = Parameter.CreateNestedParameter(); var cur = 0; @@ -187,7 +187,7 @@ private Dictionary GetOptionsFromField(Type typeInfo) var nestOptionAttributes = field.GetCustomAttributes(typeof(NestOptionAttribute), false); var attributes = choiceAttributes.Concat(rangeAttributes).Concat(booleanChoiceAttributes).Concat(nestOptionAttributes); - Contracts.Check(attributes.Count() <= 1, $"{field.Name} can only define one of the choice|range|option attribute"); + Contract.Assert(attributes.Count() <= 1, $"{field.Name} can only define one of the choice|range|option attribute"); if (attributes.Count() == 0) { continue; @@ -225,7 +225,7 @@ private Dictionary GetOptionsFromProperty(Type typeInfo) var nestOptionAttributes = property.GetCustomAttributes(typeof(NestOptionAttribute), false); var attributes = choiceAttributes.Concat(rangeAttributes).Concat(booleanChoiceAttributes).Concat(nestOptionAttributes); - Contracts.Check(attributes.Count() <= 1, $"{property.Name} can only define one of the choice|range|option attribute"); + Contract.Assert(attributes.Count() <= 1, $"{property.Name} can only define one of the choice|range|option attribute"); if (attributes.Count() == 0) { continue; @@ -254,20 +254,20 @@ private void CheckOptionType(object attribute, string optionName, Type type) { if (attribute is BooleanChoiceAttribute) { - Contracts.Assert(type == typeof(bool), $"[Option:{optionName}] BooleanChoice can only apply to property or field which type is bool"); + Contract.Assert(type == typeof(bool), $"[Option:{optionName}] BooleanChoice can only apply to property or field which type is bool"); return; } if (attribute is RangeAttribute range && (range.Option is UniformDoubleOption || range.Option is UniformSingleOption)) { - Contracts.Assert(type != typeof(int) && type != typeof(short) && type != typeof(long), $"[Option:{optionName}] UniformDoubleOption or UniformSingleOption can't apply to property or field which type is int or short or long"); + Contract.Assert(type != typeof(int) && type != typeof(short) && type != typeof(long), $"[Option:{optionName}] UniformDoubleOption or UniformSingleOption can't apply to property or field which type is int or short or long"); return; } if (attribute is ChoiceAttribute) { var supportTypes = new Type[] { typeof(string), typeof(int), typeof(short), typeof(long), typeof(float), typeof(double), typeof(char) }; - Contracts.Assert(supportTypes.Contains(type) || type.IsEnum, $"[Option:{optionName}] ChoiceAttribute can only apply to enum or the following types {string.Join(",", supportTypes.Select(x => x.Name))}"); + Contract.Assert(supportTypes.Contains(type) || type.IsEnum, $"[Option:{optionName}] ChoiceAttribute can only apply to enum or the following types {string.Join(",", supportTypes.Select(x => x.Name))}"); return; } } diff --git a/src/Microsoft.ML.Tokenizers/AddedToken.cs b/src/Microsoft.ML.Tokenizers/AddedToken.cs new file mode 100644 index 0000000000..01684cf49f --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/AddedToken.cs @@ -0,0 +1,91 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Represent a token added by the user on top of the existing Model vocabulary. + /// AddedToken can be configured to specify the behavior they should have in various situations + /// like: + /// - Whether they should only match single words + /// - Whether to include any WhiteSpace on its left or right + /// + public struct AddedToken : IEquatable + { + /// + /// Gets or sets the content of the added token + /// + public string Content { get; set; } + + /// + /// Gets or sets whether this token must be a single word or can break words + /// + internal bool SingleWord { get; set; } + + /// + /// Gets or sets whether this token should strip WhiteSpaces on its left + /// + internal bool LeftStrip { get; set; } + + /// + /// Gets or sets whether this token should strip WhiteSpaces on its right + /// + internal bool RightStrip { get; set; } + + /// + /// Gets or sets whether this token should be normalized + /// + internal bool Normalized { get; set; } + + /// + /// Gets or sets whether this token is special + /// + internal bool Special { get; set; } + + /// + /// Create a new AddedToken object. + /// + public AddedToken() + { + Content = ""; + SingleWord = LeftStrip = RightStrip = Special = false; + Normalized = true; + } + + /// + /// Create a new AddedToken object from the given content, specifying if it is intended to be a + /// special token. Special tokens are not normalized by default. + /// + /// The content of the added token. + /// Indicate whether this token is special. + public AddedToken(string content, bool special = false) : this() + { + Content = content ?? ""; + Special = special; + Normalized = !special; + } + + /// + /// Determines whether two token instances are equal. + /// + /// The token to compare with the current token. + public bool Equals(AddedToken other) => Content == other.Content; + + // We only want to hash on the content. AddedToken cannot be added multiple times with different options + /// + /// Returns the hash code for the current token. + /// + public override int GetHashCode() => Content.GetHashCode(); + + + /// + /// Defines an implicit conversion of a string object to AddedToken. + /// + public static implicit operator AddedToken(string token) => new AddedToken(token); + } +} diff --git a/src/Microsoft.ML.Tokenizers/Microsoft.ML.Tokenizers.csproj b/src/Microsoft.ML.Tokenizers/Microsoft.ML.Tokenizers.csproj new file mode 100644 index 0000000000..78b6d7f49b --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Microsoft.ML.Tokenizers.csproj @@ -0,0 +1,13 @@ + + + + + netstandard2.0 + enable + Microsoft.ML.Tokenizers contains the implmentation of the tokenization used in the NLP transforms. + + + + + + diff --git a/src/Microsoft.ML.Tokenizers/Model/BPE.cs b/src/Microsoft.ML.Tokenizers/Model/BPE.cs new file mode 100644 index 0000000000..74b5995879 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/BPE.cs @@ -0,0 +1,448 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Represent the Byte Pair Encoding model. + /// + public sealed class Bpe : Model + { + /// A [Byte Pair Encoding](https://www.aclweb.org/anthology/P16-1162/) model. + + private string? _unknownToken; + + /// + /// Gets or Sets unknown token. The unknown token to be used when we encounter an unknown char + /// + public string? UnknownToken + { + get + { + return _unknownToken; + } + + set + { + _unknownToken = value; + + if (value is null) + { + if (VocabReverse.TryGetValue(0, out string v)) + { + VocabReverse.Remove(0); + if (Vocab.TryGetValue(v, out int id)) + { + Vocab.Remove(v); + } + } + } + else + { + Vocab[value] = 0; + VocabReverse[0] = value; + } + } + } + + /// + /// An optional prefix to use on any sub-word that exist only behind another one + /// + public string? ContinuingSubwordPrefix { get; set; } + + /// + /// An optional suffix to characterize and end-of-word sub-word + /// + public string? EndOfWordSuffix { get; set; } + + /// + /// Gets or sets whether allowing multiple unknown tokens get fused + /// + public bool FuseUnknownTokens { get; set; } + + /// + /// Construct a new Bpe model object with no tokenization vocabulary. This constructor is useful only in the training scenario. + /// + public Bpe() + { + Vocab = new(); + VocabReverse = new(); + Merges = new(); + + UnknownToken = "[Unk]"; + } + + /// + /// Construct a new Bpe model object to use for sentence tokenization and tokenizer training. + /// + /// The JSON file path containing the dictionary of string keys and their ids. + /// The file path containing the tokens's pairs list. + /// The unknown token to be used by the model. + /// The prefix to attach to sub-word units that don’t represent a beginning of word. + /// The suffix to attach to sub-word units that represent an end of word. + public Bpe(string vocabFile, string? mergesFile, string? unknownToken = null, string? continuingSubwordPrefix = null, string? endOfWordSuffix = null) + { + ContinuingSubwordPrefix = continuingSubwordPrefix; + EndOfWordSuffix = endOfWordSuffix; + + (Dictionary? vocab1, Vec<(string, string)> merges) = ReadFile(vocabFile, mergesFile); + Vocab = vocab1 ?? new Dictionary(); + + VocabReverse = new(); + + foreach (KeyValuePair kvp in Vocab) + { + VocabReverse.Add(kvp.Value, kvp.Key); + } + + if (unknownToken is null && VocabReverse.TryGetValue(0, out string unkToken)) + { + unknownToken = unkToken; + } + + UnknownToken = unknownToken; + + int prefixLen = ContinuingSubwordPrefix is null ? 0 : ContinuingSubwordPrefix.Length; + + Merges = new(); + for (int i = 0; i < merges.Count; i++) + { + (string a, string b) mergeValues = merges[i]; + + if (!Vocab.TryGetValue(mergeValues.a, out int aId)) + { + throw new InvalidOperationException($"Trying to merge a token {mergeValues.a} which not exist in the vocabulary."); + } + + if (!Vocab.TryGetValue(mergeValues.b, out int bId)) + { + throw new InvalidOperationException($"Trying to merge a token {mergeValues.b} which not exist in the vocabulary."); + } + + string newToken = $"{mergeValues.a}{mergeValues.b.Substring(prefixLen)}"; + if (!Vocab.TryGetValue(newToken, out int newId)) + { + throw new InvalidOperationException($"Trying to merge a token {newToken} which not exist in the vocabulary."); + } + + Merges.Add(new Pair(aId, bId), (i, newId)); + } + } + + /// + /// Gets the Bpe decoder object. + /// + public static TokenizerDecoder Decoder { get; } = new BpeDecoder(); + + /// + /// Tokenize a sequence string to a list of tokens. + /// + /// The sequence to tokenize. + /// The list of tokens generated from the sequence tokenization. + public override IReadOnlyList Tokenize(string sequence) + { + if (sequence.Length == 0) + { + return EmptyTokensList; + } + + if (!Dropout.HasValue) + { + return TokenizeWithCache(sequence); + } + + Word word = MergeWord(sequence); + + return WordToTokens(ref word); + } + + /// + /// Map the token to tokenized Id. + /// + /// The token to map to the Id. + /// The mapped Id of the token. + public override int? TokenToId(string token) + { + if (Vocab.TryGetValue(token, out int value)) + { + return value; + } + + return null; + } + + /// + /// Map the tokenized Id to the token. + /// + /// The Id to map to the token. + /// Indicate if want to skip the special tokens during the decoding. + /// The mapped token of the Id. + public override string? IdToToken(int id, bool skipSpecialTokens = false) + { + if (VocabReverse.TryGetValue(id, out string value)) + { + return value; + } + + return null; + } + + /// + /// Gets the dictionary mapping tokens to Ids. + /// + public override IReadOnlyDictionary GetVocab() => Vocab; + + /// + /// Gets the dictionary size that map tokens to Ids. + /// + public override int GetVocabSize() => Vocab.Count; + + /// + /// Gets a trainer object to use in training the model and generate the vocabulary and merges data. + /// + public override Trainer? GetTrainer() => new BpeTrainer(); + + /// + /// Save the model data into the vocabulary and merges files. + /// + /// The file system path to store the generated files at. + /// Optional prefix for the generated file names. + /// The list of all saved files. + public override string[] Save(string path, string? prefix = null) + { + // Write vocab.json + string vocabFileNname = prefix is null ? "vocab.json" : $"{prefix}-vocab.json"; + string vocabPath = Path.Combine(path, vocabFileNname); + string serialized = JsonSerializer.Serialize(VocabReverse, new JsonSerializerOptions { Converters = { new DictReversingConverter() } }); + File.WriteAllText(vocabPath, serialized, System.Text.Encoding.UTF8); + + // Write merges.txt + string mergeFileName = prefix is null ? "merges.txt" : $"{prefix}-merges.txt"; + string mergePath = Path.Combine(path, mergeFileName); + (Pair pair, int rank)[] pairsArray = new (Pair, int)[Merges.Count]; + int i = 0; + foreach (var p in Merges) + { + pairsArray[i++] = (p.Key, p.Value.Item1 /* rank */); + } + Array.Sort(pairsArray, (x, y) => x.rank.CompareTo(y.rank)); + using StreamWriter file = new(mergePath, append: false, System.Text.Encoding.UTF8); + file.WriteLine("#version: 0.2 - Trained by `huggingface/tokenizers`"); + foreach (var p in pairsArray) + { + file.WriteLine($"{VocabReverse[p.pair.First]} {VocabReverse[p.pair.Second]}"); + } + + return new string[] { vocabPath, mergePath }; + } + + /// Read the given files to extract the vocab and merges + internal static (Dictionary?, Vec<(string, string)>) ReadFile(string? vocab, string? merges) + { + Dictionary? dic; + using (Stream stream = File.OpenRead(vocab)) + { + dic = JsonSerializer.Deserialize>(stream) as Dictionary; + } + + return (dic, ConvertMergesToHashmap(merges)); + } + + /// The vocabulary assigns a number to each token. + internal Dictionary Vocab { get; set; } + + /// Contains the mapping between Pairs and their (rank, newId). + internal Dictionary, (int, int)> Merges { get; set; } + + /// Contains the cache for optimizing the encoding step. + internal Cache? Cache { get; set; } + + internal static readonly int DefaultCacheCapacity = 10_000; + + /// Reversed vocabulary, to rebuild sentences. + internal SortedDictionary VocabReverse { get; set; } + + /// Dropout probability for merges. 0 = no dropout is the default. At 1.0, tokenization will + /// perform no merges, so the result will just be characters. + internal float? Dropout { get; set; } + + /// Converts the merges strings (for example from `merges.txt` file) with the format + /// "{pair_a} {pair_b}" into the format expected by the BPE struct + internal static Vec<(string, string)> ConvertMergesToHashmap(string? mergesFile) + { + if (mergesFile is null) + { + return new Vec<(string, string)>(); + } + + Vec<(string, string)> merges = new(1000); + + int lineNumber = 0; + foreach (string line in System.IO.File.ReadLines(mergesFile)) + { + lineNumber++; + if (line.StartsWith("#version", StringComparison.Ordinal) || line.Length == 0) + { + continue; + } + int index = line.IndexOf(' '); + if (index < 0 || index == line.Length - 1 || line.IndexOf(' ', index + 1) >= 0) + { + throw new InvalidOperationException($"Invalid merger file format at line: {lineNumber}"); + } + merges.Push((line.Substring(0, index), line.Substring(index + 1))); + } + + return merges; + } + + /// Reset the cache. + internal void ClearCache() => Cache?.Clear(); + + private readonly Dictionary _charToString = new Dictionary(); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal string CharToString(char c) + { + if (_charToString.TryGetValue(c, out string v)) + { + return v; + } + + string s = c.ToString(); + _charToString[c] = s; + return s; + } + + internal Word MergeWord(string w) + { + Word word = Word.WithCapacity((int)w.Length); + (int Id, int Len)? unk = null; + int i = 0; + + while (i < w.Length) + { + int length; + string s; + + if (Char.IsHighSurrogate(w[i]) && i < w.Length - 1 && Char.IsLowSurrogate(w[i + 1])) + { + length = 2; + s = w.Substring(i, (int)length); + } + else + { + length = 1; + s = CharToString(w[i]); + } + + // Add the `continuing_subword_prefix` if relevant + if (i > 0 && ContinuingSubwordPrefix is not null) + { + s = $"{ContinuingSubwordPrefix}{s}"; + } + + // Add the `end_of_word_suffix` if relevant + if (i + length >= w.Length && EndOfWordSuffix is not null) + { + s = $"{s}{EndOfWordSuffix}"; + } + + if (Vocab.TryGetValue(s, out int id)) + { + if (unk.HasValue) + { + word.Add(unk.Value.Id, unk.Value.Len); + unk = null; + } + word.Add(id, length); + } + else if (UnknownToken is not null) + { + if (unk.HasValue) + { + if (FuseUnknownTokens) + { + // Fuse unk + unk = (unk.Value.Id, unk.Value.Len + length); + } + else + { + // Do not fuse unk, add the previous one + word.Add(unk.Value.Id, unk.Value.Len); + if (!Vocab.TryGetValue(UnknownToken, out int value)) + { + throw new InvalidOperationException($"Unknown Token Out Of Vocabulary."); + } + unk = (value, length); + } + } + else + { + if (!Vocab.TryGetValue(UnknownToken, out int value)) + { + throw new InvalidOperationException($"Unknown Token Out Of Vocabulary."); + } + unk = (value, length); + } + } + + i += (int)length; + } + + if (unk.HasValue) + { + word.Add(unk.Value.Id, unk.Value.Len); + } + + word.MergeAll(Merges, Dropout); + return word; + } + + // internal Word.Enumerator WordToTokens(Word word) => word.GetIterator(VocabReverse); + internal List WordToTokens(ref Word word) + { + List tokens = new(word.SymbolsCount); + + foreach (Token token in word.GetIterator(VocabReverse)) + { + tokens.Add(token); + } + + return tokens; + } + + internal List TokenizeWithCache(string sequence) + { + if (Cache is not null) + { + Word? hit = Cache.Get(sequence); + if (hit.HasValue) + { + Word w = hit.Value; + return WordToTokens(ref w); + } + } + + Word word = MergeWord(sequence); + List tokens = WordToTokens(ref word); + + if (Cache is not null) + { + Cache.Set(sequence, word); + } + + return tokens; + } + + internal static readonly List EmptyTokensList = new(); + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/BPEDecoder.cs b/src/Microsoft.ML.Tokenizers/Model/BPEDecoder.cs new file mode 100644 index 0000000000..d3a9d943a5 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/BPEDecoder.cs @@ -0,0 +1,50 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Allows decoding Original BPE by joining all the tokens and then replacing + /// the suffix used to identify end-of-words by white spaces + /// + public sealed class BpeDecoder : TokenizerDecoder + { + private readonly string? _suffix; + + /// + /// Construct a new Bpe decoder object. + /// + public BpeDecoder() => _suffix = null; + + /// + /// Construct a new Bpe decoder object. + /// + /// The suffix that was used to characterize an end-of-word. This suffix will be replaced by white spaces during the decoding. + public BpeDecoder(string? suffix) => _suffix = suffix; + + /// + /// Decode the original BPE by joining all the tokens and then replacing the suffix used to identify end-of-words by white spaces. + /// + /// The list of tokens to merge. + /// The string containing all merged tokens. + public override string Decode(IEnumerable tokens) + { + if (tokens is null) + { + throw new ArgumentNullException(nameof(tokens)); + } + + if (_suffix == null) + { + return string.Join("", tokens); + } + + return string.Join(" ", tokens).Replace(_suffix, " "); + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/BpeTrainer.cs b/src/Microsoft.ML.Tokenizers/Model/BpeTrainer.cs new file mode 100644 index 0000000000..31942e17fb --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/BpeTrainer.cs @@ -0,0 +1,529 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// The Bpe trainer responsible to train the Bpe model. + /// + public sealed class BpeTrainer : Trainer + { + /// + /// Gets the size of the final vocabulary, including all tokens and alphabet. + /// + public int VocabSize { get; } + + /// + /// Gets the minimum frequency a pair should have in order to be merged. + /// + public int MinFrequency { get; } + + /// + /// Gets the list of special tokens the model should know of. + /// + public IReadOnlyList? SpecialTokens { get; } + + /// + /// Gets the maximum different characters to keep in the alphabet. + /// + public int? LimitAlphabet { get; } + + /// + /// Gets the list of characters to include in the initial alphabet, even if not seen in the training dataset. + /// If the strings contain more than one character, only the first one is kept. + /// + public HashSet? InitialAlphabet { get; } + + /// + /// Gets the prefix to be used for every sub-word that is not a beginning-of-word. + /// + public string? ContinuingSubwordPrefix { get; } + + /// + /// Gets the suffix to be used for every sub-word that is a end-of-word. + /// + public string? EndOfWordSuffix { get; } + + private Dictionary Words { get; set; } + + /// + /// Construct a new BpeTrainer object using the default values. + /// + public BpeTrainer() : this(null) + { + } + + /// + /// Construct a new BpeTrainer object. + /// + /// The list of special tokens the model should know of. + /// The minimum frequency a pair should have in order to be merged. + /// the size of the final vocabulary, including all tokens and alphabet. + /// Callback for the training progress updates. + /// The list of characters to include in the initial alphabet. + /// The JSON file path containing the dictionary of string keys and their ids + /// the prefix to be used for every sub-word that is not a beginning-of-word. + /// the suffix to be used for every sub-word that is a end-of-word. + public BpeTrainer( + IEnumerable? specialTokens, + int minFrequency = 0, + int vocabSize = 30000, + ReportProgress? progress = null, + int? limitAlphabet = null, + HashSet? initialAlphabet = null, + string? continuingSubwordPrefix = null, + string? endOfWordSuffix = null) + { + MinFrequency = minFrequency; + VocabSize = vocabSize; + Progress = progress; + SpecialTokens = new List(specialTokens); + LimitAlphabet = limitAlphabet; + InitialAlphabet = initialAlphabet; + ContinuingSubwordPrefix = continuingSubwordPrefix; + EndOfWordSuffix = endOfWordSuffix; + Words = new(); + } + + /// Add the provided special tokens to the initial vocabulary + private void AddSpecialTokens(Dictionary w2Id, ref Vec id2W) + { + if (SpecialTokens is not null) + { + foreach (var token in SpecialTokens) + { + if (!w2Id.ContainsKey(token.Content)) + { + id2W.Push(token.Content); + w2Id.Add(token.Content, id2W.Count - 1); + } + } + } + } + + private void ComputeAlphabet(Dictionary wc, Dictionary w2Id, ref Vec id2W) + { + // Compute the alphabet from seen words + Dictionary alphabet = new(); + foreach (KeyValuePair kvp in wc) + { + foreach (char c in kvp.Key) + { + if (alphabet.ContainsKey(c)) + { + alphabet[c] = alphabet[c] + kvp.Value; + } + else + { + alphabet[c] = kvp.Value; + } + } + } + + // Also include anything from the provided initial alphabet + if (InitialAlphabet is not null) + { + foreach (char c in InitialAlphabet) + { + alphabet[c] = int.MaxValue; + } + } + + List> kept = new List>(alphabet.Count); + foreach (KeyValuePair kvp in alphabet) + { + kept.Add(kvp); + } + + // Compute the number of chars to remove from the alphabet + // If `limit_alphabet < initial_alphabet.len()`, some of these initial characters + // will be removed + int toRemove = LimitAlphabet.HasValue && alphabet.Count > LimitAlphabet.Value ? (int)(alphabet.Count - LimitAlphabet.Value) : 0; + + // Remove the unwanted chars + if (toRemove > 0) + { + kept.Sort((x, y) => (int)x.Value - (int)y.Value); + kept.RemoveRange(0, toRemove); + } + + // Keep the initial alphabet (sorted for determinism) + kept.Sort((x, y) => (int)x.Key - (int)y.Key); + + foreach (KeyValuePair kvp in kept) + { + string s = kvp.Key.ToString(); + if (!w2Id.ContainsKey(s)) + { + id2W.Push(s); + w2Id[s] = (int)id2W.Count - 1; + } + } + } + + private readonly Dictionary _charToString = new Dictionary(); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal string CharToString(char c) + { + if (_charToString.TryGetValue(c, out string v)) + { + return v; + } + + string s = c.ToString(); + _charToString[c] = s; + return s; + } + + /// Tokenize words and add sub-words to the vocabulary when relevant + private (Vec, Vec) TokenizeWords(Dictionary wc, Dictionary w2Id, ref Vec id2w) + { + Vec words = new Vec(wc.Count); + Vec counts = new Vec(wc.Count); + + foreach (KeyValuePair kvp in wc) + { + Word currentWord = new Word(); + counts.Push(kvp.Value); + + for (int i = 0; i < kvp.Key.Length; i++) + { + char c = kvp.Key[i]; ; + string s = CharToString(c); + if (w2Id.ContainsKey(s)) + { + // Found the initial char in the authorized alphabet + // Add the `continuing_subword_prefix` if relevant + if (i != 0 && ContinuingSubwordPrefix is not null) + { + s = $"{ContinuingSubwordPrefix}{s}"; + } + + // Add the `end_of_word_suffix` if relevant + if (i == kvp.Key.Length - 1 && EndOfWordSuffix is not null) + { + s = $"{s}{EndOfWordSuffix}"; + } + + // Insert the new formed string if necessary + if (!w2Id.ContainsKey(s)) + { + id2w.Push(s); + w2Id[s] = (int)(id2w.Count - 1); + } + + currentWord.Add(w2Id[s], 1); // We do not care about the len here + } + } + + words.Push(currentWord); + Progress?.Invoke(new Progress(ProgressState.Increment, null, 1)); + } + + return (words, counts); + } + + private (Dictionary, int>, Dictionary, HashSet>) CountPairs(ref Vec words, ref Vec counts) + { + if (words.Count <= 0) + { + return (new(), new()); + } + + Dictionary, int> pairCounts = new Dictionary, int>(); + Dictionary, HashSet> whereToUpdate = new(); + + for (int i = 0; i < words.Count; i++) + { + ref Word word = ref words[i]; + + int j = 0; + Vec chars = word.GetChars(); + while (j < chars.Count - 1) + { + Pair curPair = new Pair(chars[j], chars[j + 1]); + + // Initialize pair_counts and where_to_update for this pair if we just saw it + if (!pairCounts.ContainsKey(curPair)) + { + pairCounts[curPair] = 0; + } + + // Then update counts + int count = counts[i]; + + if (!whereToUpdate.TryGetValue(curPair, out HashSet h)) + { + h = new HashSet(); + whereToUpdate[curPair] = h; + } + + h.Add(i); + + pairCounts[curPair] = pairCounts[curPair] + (int)count; + + j++; + } + + Progress?.Invoke(new Progress(ProgressState.Increment, null, 1)); + } + + return (pairCounts, whereToUpdate); + } + + private IReadOnlyList? DoTrain(Dictionary wordCounts, Bpe model) + { + Dictionary wordToId = new(VocabSize); + Vec idToWord = new(VocabSize); + + // + // 1. Add all special tokens to the vocabulary + // + AddSpecialTokens(wordToId, ref idToWord); + + // + // 2. Compute the initial alphabet + // + ComputeAlphabet(wordCounts, wordToId, ref idToWord); + + // + // 3. Tokenize words + // + Progress?.Invoke(new Progress(ProgressState.Start, "Tokenize words", wordCounts.Count)); + (Vec words, Vec counts) = TokenizeWords(wordCounts, wordToId, ref idToWord); + Progress?.Invoke(new Progress(ProgressState.End, null, wordCounts.Count)); + + // + // 4. Count pairs in words + // + Progress?.Invoke(new Progress(ProgressState.Start, "Count pairs", wordCounts.Count)); + (Dictionary, int> pairCounts, Dictionary, HashSet> whereToUpdate) = CountPairs(ref words, ref counts); + + // Insert them in the queue + PriorityQueue queue = new(pairCounts.Count); + + foreach (KeyValuePair, HashSet> kvp in whereToUpdate) + { + int count = pairCounts[kvp.Key]; + if (count > 0) + { + queue.Enqueue(new BpeTrainerMerge(kvp.Key, count, kvp.Value)); + } + } + + whereToUpdate.Clear(); + Progress?.Invoke(new Progress(ProgressState.End, null, words.Count)); + + // + // 5. Do merges + // + Progress?.Invoke(new Progress(ProgressState.End, "Compute merges", VocabSize)); + Vec<(Pair, int)> merges = new(); + + while (true) + { + // Stop as soon as we have a big enough vocabulary + if (wordToId.Count >= VocabSize || queue.Count == 0) + { + break; + } + + BpeTrainerMerge top = queue.Dequeue(); + + if (top.Count != pairCounts[top.Pair]) + { + top.Count = pairCounts[top.Pair]; + queue.Enqueue(top); + continue; + } + + if (top.Count < 1 || MinFrequency > top.Count) + { + break; + } + + string partA = idToWord[(int)top.Pair.First]; + string partB = idToWord[(int)top.Pair.Second]; + + // Build new token + if (ContinuingSubwordPrefix is not null) + { + if (partB.StartsWith(ContinuingSubwordPrefix, StringComparison.Ordinal)) + { + partB = partB.Substring(ContinuingSubwordPrefix.Length); + } + } + + string newToken = $"{partA}{partB}"; + + // Insert new token if it does not already exist + if (!wordToId.TryGetValue(newToken, out int newTokenId)) + { + newTokenId = (int)idToWord.Count; + idToWord.Push(newToken); + wordToId[newToken] = newTokenId; + } + + merges.Push((top.Pair, newTokenId)); + + Vec<((Pair, int), int)> changes = new(); + + // Merge the new pair in every words + foreach (int i in top.Pos) + { + ref Word w = ref words[(int)i]; + + Vec<(Pair, int)> m = w.Merge(top.Pair.First, top.Pair.Second, newTokenId); + + for (int j = 0; j < m.Count; j++) + { + changes.Push((m[j], i)); + } + } + + // Introduce new formed pairs + for (int j = 0; j < changes.Count; j++) + { + ((Pair p, int change), int iw) = changes[j]; + int count = (int)(change * counts[(int)iw]); + + pairCounts[p] = pairCounts.TryGetValue(p, out int c) ? c + count : count; + + if (change > 0) + { + if (!whereToUpdate.TryGetValue(p, out HashSet h)) + { + h = new(); + whereToUpdate[p] = h; + } + h.Add(iw); + } + } + + foreach (KeyValuePair, HashSet> kvp in whereToUpdate) + { + int count = pairCounts[kvp.Key]; + if (count > 0) + { + queue.Enqueue(new BpeTrainerMerge(kvp.Key, count, kvp.Value)); + } + } + whereToUpdate.Clear(); + + Progress?.Invoke(new Progress(ProgressState.Increment, null, 1)); + } + + Progress?.Invoke(new Progress(ProgressState.End, null, merges.Count)); + + // Transfer new vocab & options to model + model.Vocab = wordToId; + + if (SpecialTokens is not null) + { + for (int i = 0; i < SpecialTokens.Count; i++) + { + model.Vocab[SpecialTokens[(int)i].Content] = i; + } + + if (SpecialTokens.Count > 0) + { + model.UnknownToken = SpecialTokens[0].Content; + } + } + + model.VocabReverse = new(); + + foreach (KeyValuePair kvp in model.Vocab) + { + model.VocabReverse[kvp.Value] = kvp.Key; + } + + model.Merges = new(); + + for (int i = 0; i < merges.Count; i++) + { + (Pair p, int v) = merges[i]; + model.Merges[p] = ((int)i, v); + } + + model.ContinuingSubwordPrefix = ContinuingSubwordPrefix; + model.EndOfWordSuffix = EndOfWordSuffix; + + return SpecialTokens; + } + + /// + /// Process the input sequences and feed the result to the model. + /// + /// The list of sequences to feed the trainer. + /// Optional process callback for reporting the training progress update. + public override void Feed(IEnumerable sequences, Func> process) + { + foreach (string s in sequences) + { + foreach (string word in process(s)) + { + Words[word] = Words.TryGetValue(word, out int value) ? value + 1 : 1; + } + } + } + + /// + /// Perform the actual training and update the input model with the new vocabularies and merges data. + /// + /// The model to train. This has to be BpeModel to work with BpeTrainer. + /// The list of the added tokens. + public override IReadOnlyList? Train(Model model) + { + if (model is Bpe bpeModel) + { + return DoTrain(Words, bpeModel); + } + + throw new Exception($"BpeTrainer work only with Bpe Model."); + } + } + + internal struct BpeTrainerMerge : IEquatable, IComparable + { + public BpeTrainerMerge(Pair pair, int count, HashSet pos) + { + Pair = pair; + Count = count; + Pos = pos; + } + + public Pair Pair { get; set; } + public int Count { get; set; } + public HashSet Pos { get; set; } + + public int CompareTo(BpeTrainerMerge other) + { + if (Count != other.Count) + { + // return Count.CompareTo(other.Count); + return other.Count.CompareTo(Count); + } + + return Pair.CompareTo(other.Pair); + } + + public override int GetHashCode() + { + int hashcode = 23; + hashcode = (hashcode * 37) + Count.GetHashCode(); + hashcode = (hashcode * 37) + Pair.First.GetHashCode(); + hashcode = (hashcode * 37) + Pair.Second.GetHashCode(); + return hashcode; + } + + public bool Equals(BpeTrainerMerge other) => Count == other.Count && Pair.Equals(other.Pair); + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Cache.cs b/src/Microsoft.ML.Tokenizers/Model/Cache.cs new file mode 100644 index 0000000000..2665bacfcf --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Cache.cs @@ -0,0 +1,104 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; + +namespace Microsoft.ML.Tokenizers +{ + internal sealed class Cache + { + internal Cache() : this(Bpe.DefaultCacheCapacity) { } + + internal Cache(int capacity) + { + Capacity = capacity; + Map = new Dictionary((int)Capacity); + } + + private readonly ReaderWriterLockSlim _cacheLock = new ReaderWriterLockSlim(); + + internal Dictionary Map { get; set; } + + internal int Capacity { get; set; } + + internal void Fresh() => Map = new Dictionary((int)Capacity); + + internal void Clear() + { + _cacheLock.EnterWriteLock(); + try + { + Map.Clear(); + } + finally { _cacheLock.ExitWriteLock(); } + } + + internal List GetValues(IEnumerable keys) + { + List? values = new(); + _cacheLock.EnterReadLock(); + try + { + foreach (TKey key in keys) + { + if (Map.TryGetValue(key, out TValue value)) + { + values.Add(value); + } + } + } + finally { _cacheLock.ExitReadLock(); } + + return values; + } + + internal TValue? Get(TKey key) + { + _cacheLock.EnterReadLock(); + try + { + if (Map.TryGetValue(key, out TValue value)) + { + return value; + } + } + finally { _cacheLock.ExitReadLock(); } + + return default; + } + + internal void SetValues(IEnumerable<(TKey, TValue)> enteries) + { + _cacheLock.EnterWriteLock(); + try + { + foreach ((TKey, TValue) entry in enteries) + { + if (Capacity <= Map.Count) + { + break; + } + Map[entry.Item1] = entry.Item2; + } + } + finally { _cacheLock.ExitWriteLock(); } + } + + internal void Set(TKey k, TValue v) + { + _cacheLock.EnterWriteLock(); + try + { + if (Capacity > Map.Count) + { + Map[k] = v; + } + } + finally { _cacheLock.ExitWriteLock(); } + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/EnglishRoberta.cs b/src/Microsoft.ML.Tokenizers/Model/EnglishRoberta.cs new file mode 100644 index 0000000000..24218f11e7 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/EnglishRoberta.cs @@ -0,0 +1,725 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Represent the Byte Pair Encoding model. + /// + public sealed class EnglishRoberta : Model + { + private readonly HighestOccurrenceMapping _vocabIdToHighestOccurrence; + private readonly IReadOnlyDictionary _vocab; + private readonly SortedDictionary _vocabReverse; + private readonly Dictionary<(string, string), int> _mergeRanks; + private readonly IReadOnlyDictionary _byteToUnicode; + private readonly IReadOnlyDictionary _unicodeToByte; + private readonly string[] _charToString; + private readonly Cache> _cache; + + /// + /// Construct tokenizer object to use with the English Robert model. + /// + /// The JSON file path containing the dictionary of string keys and their ids. + /// The file path containing the tokens's pairs list. + /// Remap the original GPT-2 model Ids to high occurrence ranks and values. + public EnglishRoberta(string vocabularyPath, string mergePath, string highestOccurrenceMappingPath) + { + // vocabularyPath like encoder.json + // merge file like vocab.bpe + // highestOccurrenceMappingPath like dict.txt + + _vocabIdToHighestOccurrence = GetHighestOccurrenceMapping(highestOccurrenceMappingPath); + _vocab = GetVocabulary(vocabularyPath); + _vocabReverse = _vocab.ReverseSorted(); + _mergeRanks = GetMergeRanks(mergePath); + int maxCharValue = GetByteToUnicode(out _byteToUnicode); + _charToString = new string[maxCharValue]; + for (char c = (char)0; c < (char)maxCharValue; c++) + { + _charToString[c] = c.ToString(); + } + + _unicodeToByte = _byteToUnicode.Reverse(); + _cache = new Cache>(); + } + + // + // Public Model interfaces implementation + // + + /// + /// Gets the dictionary mapping tokens to Ids. + /// + public override IReadOnlyDictionary GetVocab() => _vocab; + + /// + /// Gets the dictionary size that map tokens to Ids. + /// + public override int GetVocabSize() => _vocab.Count; + + /// + /// Map the tokenized Id to the token. + /// + /// The Id to map to the token. + /// Indicate if want to skip the special tokens during the decoding. + /// The mapped token of the Id. + public override string? IdToToken(int id, bool skipSpecialTokens = false) => + skipSpecialTokens && id < 0 ? null : _vocabReverse.TryGetValue(id, out var value) ? value : null; + + /// + /// Save the model data into the vocabulary, merges, and occurrence mapping files. + /// + /// The file system path to store the generated files at. + /// Optional prefix for the generated file names. + /// The list of all saved files. + public override string[] Save(string path, string? prefix = null) + { + // Write vocab.json + string vocabFileNname = prefix is null ? "vocab.json" : $"{prefix}-vocab.json"; + string vocabPath = Path.Combine(path, vocabFileNname); + string serialized = JsonSerializer.Serialize(_vocabReverse, new JsonSerializerOptions { Converters = { new DictReversingConverter() } }); + File.WriteAllText(vocabPath, serialized, System.Text.Encoding.UTF8); + + // Write merges.txt + string mergeFileName = prefix is null ? "merges.txt" : $"{prefix}-merges.txt"; + string mergePath = Path.Combine(path, mergeFileName); + + KeyValuePair<(string, string), int>[] mergeArray = _mergeRanks.ToArray(); + Array.Sort(mergeArray, (x, y) => x.Value.CompareTo(y.Value)); + + using StreamWriter file = new(mergePath, append: false, System.Text.Encoding.UTF8); + file.WriteLine("#version: 0.2"); + foreach (var p in mergeArray) + { + if (p.Value == int.MaxValue) + { + // Skip the entries which we added during the runs. + continue; + } + file.WriteLine($"{p.Key.Item1} {p.Key.Item2}"); + } + + // Write high occurrence mapping file + string highOccurrenceFileName = prefix is null ? "dict.txt" : $"{prefix}-dict.txt"; + string highOccurrencePath = Path.Combine(path, highOccurrenceFileName); + using StreamWriter file1 = new(highOccurrencePath, append: false, System.Text.Encoding.UTF8); + _vocabIdToHighestOccurrence.Save(file1); + + return new string[] { vocabPath, mergePath, highOccurrencePath }; + } + + /// + /// Tokenize a sequence string to a list of tokens. + /// + /// The sequence to tokenize. + /// The list of tokens generated from the sequence tokenization. + public override IReadOnlyList Tokenize(string sequence) + { + var bpeTokens = new List(); + + Span token = stackalloc char[100]; + Span indexMapping = stackalloc int[100]; + + if (sequence.Length > 100) + { + token = new char[sequence.Length].AsSpan(); + indexMapping = new int[sequence.Length].AsSpan(); + } + + int newTokenIndex = 0; + for (int i = 0; i < sequence.Length; i++) + { + if (_byteToUnicode.TryGetValue(sequence[i], out var value)) + { + token[newTokenIndex] = value; + indexMapping[newTokenIndex] = i; + newTokenIndex++; + } + } + + if (newTokenIndex == 0) + { + return Bpe.EmptyTokensList; + } + + IReadOnlyList? hit = _cache.Get(sequence); + if (hit is not null) + { + return ModifyTokenListOffsets(hit, indexMapping); + } + + IReadOnlyList result = BpeToken(token.Slice(0, newTokenIndex), indexMapping); + _cache.Set(sequence, result); + return result; + } + + /// + /// Map the token to tokenized Id. + /// + /// The token to map to the Id. + /// The mapped Id of the token. + public override int? TokenToId(string token) => _vocab.TryGetValue(token, out var value) ? value : null; + + /// + /// Gets a trainer object to use in training the model and generate the vocabulary and merges data. + /// + /// + /// This tokenizer doesn't support training so this method will return null. Consider using Bpe.GetTrainer() for training. + /// + public override Trainer? GetTrainer() => null; + + /// + /// Convert a list of tokens Ids to highest occurrence rankings. + /// + /// The Ids list to map to the high occurrence rank. + /// The list of ranks mapped from the list of Ids. + public IReadOnlyList IdsToOccurrenceRanks(IReadOnlyList ids) + { + if (ids is null) + { + throw new ArgumentNullException(nameof(ids)); + } + + List list = new List(ids.Count); + + foreach (int id in ids) + { + list.Add(id <= 0 ? -id : _vocabIdToHighestOccurrence.IdToOccurrenceRank(id)); + } + + return list; + } + + /// + /// Convert a list of tokens Ids to highest occurrence values. + /// + /// The Ids list to map to the high occurrence values. + /// The list of occurrence values mapped from the list of Ids. + public IReadOnlyList IdsToOccurrenceValues(IReadOnlyList ids) + { + if (ids is null) + { + throw new ArgumentNullException(nameof(ids)); + } + + List list = new List(ids.Count); + + foreach (int id in ids) + { + list.Add(id <= 0 ? 0 : _vocabIdToHighestOccurrence.IdToOccurrenceValue(id)); + } + + return list; + } + + /// + /// Convert a list of highest occurrence rankings to tokens Ids list . + /// + /// The high occurrence ranks list to map to the Ids list. + /// The list of Ids mapped from the list of ranks. + public IReadOnlyList OccurrenceRanksIds(IReadOnlyList ranks) + { + if (ranks is null) + { + throw new ArgumentNullException(nameof(ranks)); + } + + List list = new List(ranks.Count); + + foreach (int rank in ranks) + { + list.Add(_vocabIdToHighestOccurrence.OccurrenceRankToId(rank)); + } + + return list; + } + + /// + /// Gets the index of the pad symbol inside the symbols list. + /// + public int PadIndex => _vocabIdToHighestOccurrence.PadIndex; + + /// + /// Gets the symbols list length. + /// + public int SymbolsCount => _vocabIdToHighestOccurrence.Count; + + /// + /// Add the mask symbol to the symbols list. + /// + /// The mask symbol. + /// The index of the mask symbol in the symbols list. + public int AddMaskSymbol(string mask = "") => _vocabIdToHighestOccurrence.AddMaskSymbol(mask); + + // + // Private & Internal methods + // + + private IReadOnlyList ModifyTokenListOffsets(IReadOnlyList tokens, Span indexMapping) + { + int index = 0; + + for (int i = 0; i < tokens.Count; i++) + { + Debug.Assert(index + tokens[i].Value.Length <= indexMapping.Length); + + if (tokens[i].Offset != (indexMapping[index], indexMapping[index + tokens[i].Value.Length - 1] + 1)) + { + List list = new List(tokens.Count); + for (int j = 0; j < i; j++) + { + list.Add(tokens[j]); + } + + for (int j = i; j < tokens.Count; j++) + { + list.Add(new Token(tokens[j].Id, tokens[j].Value, (indexMapping[index], indexMapping[index + tokens[j].Value.Length - 1] + 1))); + index += tokens[j].Value.Length; + } + + return list; + } + + index += tokens[i].Value.Length; + } + + return tokens; + } + + private static HighestOccurrenceMapping GetHighestOccurrenceMapping(string highestOccurrenceMappingPath) => + HighestOccurrenceMapping.Load(highestOccurrenceMappingPath); + + private Dictionary GetVocabulary(string vocabularyPath) + { + Dictionary? vocab; + try + { + using (Stream stream = File.OpenRead(vocabularyPath)) + { + vocab = JsonSerializer.Deserialize>(stream) as Dictionary; + + } + } + catch (Exception e) + { + throw new ArgumentException($"Problems met when parsing JSON object in {vocabularyPath}.{Environment.NewLine}Error message: {e.Message}"); + } + + if (vocab is null) + { + throw new ArgumentException($"Failed to read the vocabulary file '{vocabularyPath}'"); + } + + if (_vocabIdToHighestOccurrence.BosWord is not null) + { + vocab[_vocabIdToHighestOccurrence.BosWord] = -_vocabIdToHighestOccurrence.BosIndex; + } + + if (_vocabIdToHighestOccurrence.EosWord is not null) + { + vocab[_vocabIdToHighestOccurrence.EosWord] = -_vocabIdToHighestOccurrence.EosIndex; + } + + if (_vocabIdToHighestOccurrence.UnkWord is not null) + { + vocab[_vocabIdToHighestOccurrence.UnkWord] = -_vocabIdToHighestOccurrence.UnkIndex; + } + + if (_vocabIdToHighestOccurrence.PadWord is not null) + { + vocab[_vocabIdToHighestOccurrence.PadWord] = -_vocabIdToHighestOccurrence.PadIndex; + } + + return vocab; + } + + private Dictionary<(string, string), int> GetMergeRanks(string mergePath) + { + string[] splitContents; + + try + { + splitContents = File.ReadAllLines(mergePath); + } + catch (Exception e) + { + throw new IOException($"Cannot read the file '{mergePath}'.{Environment.NewLine}Error message: {e.Message}", e); + } + + var mergeRanks = new Dictionary<(string, string), int>(); + + for (int i = 0; i < splitContents.Length; i++) + { + if (i == 0 || i == splitContents.Length - 1) + { + continue; + } + + var split = splitContents[i].Split(' '); + if (split.Length != 2 || string.IsNullOrEmpty(split[0]) || string.IsNullOrEmpty(split[1])) + { + throw new Exception($"Invalid format of merge file: \"{splitContents[i]}\""); + } + + mergeRanks.Add((split[0], split[1]), i); + } + + return mergeRanks; + } + + /// + /// Returns list of utf-8 bytes and a corresponding list of unicode chars. + /// This mapping is to make unseen characters (such as control characters) displayable. + /// + private static int GetByteToUnicode(out IReadOnlyDictionary byteToUnicode) + { + var byteToUnicodeMapping = Enumerable.Range('!', '~' - '!' + 1) + .Concat(Enumerable.Range('¡', '¬' - '¡' + 1)) + .Concat(Enumerable.Range('®', 'ÿ' - '®' + 1)) + .ToDictionary(b => (char)b, b => (char)b); + + const int numChars = 256; + var n = 0; + foreach (var b in Enumerable.Range(0, numChars)) + { + if (!byteToUnicodeMapping.ContainsKey((char)b)) + { + byteToUnicodeMapping.Add((char)b, (char)(numChars + n)); + ++n; + } + } + + byteToUnicode = byteToUnicodeMapping; + return numChars + n; + } + + /// + /// Encode a token into BPE-ed sub-tokens. E.g., "playing" into ["play", "ing"]. + /// + private List BpeToken(Span token, Span indexMapping) + { + List word = new(token.Length); + foreach (char c in token) + { + Debug.Assert(c < _charToString.Length); + word.Add(_charToString[c]); + } + + HashSet<(string, string)> pairs = WordToPairs(word); + + if (pairs.Count == 0) + { + string tokenValue = token.ToString(); + return new List { new Token(_vocab[tokenValue], tokenValue, (indexMapping[0], indexMapping[token.Length - 1] + 1)) }; + } + + while (true) + { + /* while conditions */ + // if only one element left, merge is finished (with the whole word merged) + if (word.Count == 1) + { + break; + } + + // get the most frequent bi-gram pair + var (first, second) = pairs.ArgMin(pair => _mergeRanks.GetOrAdd(pair, int.MaxValue)); + if (!_mergeRanks.ContainsKey((first, second))) + { + break; + } + /* end while conditions */ + + // search and merge all (first, second) pairs in {word} + var newWord = new List(); + var i = 0; + while (i < word.Count) + { + // find the next occurrence of {first} and add the elements before into {newWord} + var j = word.IndexOf(first, i); + if (j == -1) + { + newWord.AddRange(word.Skip(i)); + break; + } + else + { + newWord.AddRange(word.Skip(i).Take(j - i)); + i = j; + } + + // check the next element is {second} or not + if (i < word.Count - 1 && word[i + 1] == second) + { + newWord.Add(first + second); + i += 2; + } + else + { + newWord.Add(word[i]); + i += 1; + } + } + + word = newWord; + + // otherwise, continue merging + pairs = WordToPairs(word); + } + + var tokens = new List(word.Count); + int index = 0; + + foreach (string w in word) + { + tokens.Add(new Token(_vocab[w], w, (indexMapping[index], indexMapping[index + w.Length - 1] + 1))); + index += w.Length; + } + + return tokens; + } + + /// + /// Extract element pairs in an aggregating word. E.g. [p, l, ay] into [(p,l), (l,ay)]. + /// If word contains 0 or 1 element, an empty HashSet will be returned. + /// + private static HashSet<(string, string)> WordToPairs(IReadOnlyList word) + { + var pairs = new HashSet<(string, string)>(); + if (word.Count <= 1) + { + return pairs; + } + + var prevElem = word[0]; + foreach (var elem in word.Skip(1)) + { + pairs.Add((prevElem, elem)); + prevElem = elem; + } + + return pairs; + } + } + + /// + /// HighestOccurrenceMapping maps the GPT-2 vocabulary Id to highest occurrence value came from dict.txt file + /// + internal sealed class HighestOccurrenceMapping + { + public const int NumSpecialSymbols = 4; + + public string? PadWord { get; } + public string? EosWord { get; } + public string? UnkWord { get; } + public string? BosWord { get; } + + public int PadIndex { get; } + public int EosIndex { get; } + public int UnkIndex { get; } + public int BosIndex { get; } + + public string? MaskWord { get; private set; } + public int MaskIndex { get; private set; } + + private readonly List<(int Id, int OccurrenceScore)> _symbols; + private readonly Dictionary _idToIndex; + private readonly Dictionary _stringSymbolToIndexMapping; + + /// Any of `pad`, `eos`, `unk` and `bos` is `null`. + public HighestOccurrenceMapping(string pad = "", string eos = "", string unk = "", string bos = "", string[]? extraSpecialSymbols = null) + { + _idToIndex = new Dictionary(); + _symbols = new List<(int, int)>(); + _stringSymbolToIndexMapping = new Dictionary(); + + BosWord = bos; + PadWord = pad; + EosWord = eos; + UnkWord = unk; + BosIndex = ReserveStringSymboleSlot(bos); + PadIndex = ReserveStringSymboleSlot(pad); + EosIndex = ReserveStringSymboleSlot(eos); + UnkIndex = ReserveStringSymboleSlot(unk); + + if (extraSpecialSymbols is not null) + { + foreach (var symbol in extraSpecialSymbols) + { + ReserveStringSymboleSlot(symbol); + } + } + } + + public int IdToOccurrenceRank(int id) + { + if ((uint)id <= NumSpecialSymbols) + return id; + + return _idToIndex.TryGetValue(id, out int rank) ? rank : UnkIndex; + } + + public int IdToOccurrenceValue(int id) + { + if ((uint)id <= NumSpecialSymbols) + return 0; + + if (_idToIndex.TryGetValue(id, out int rank)) + { + Debug.Assert(rank < _symbols.Count); + return _symbols[rank].OccurrenceScore; + } + + return 0; + } + + public int OccurrenceRankToId(int rank) + { + if ((uint)rank >= _symbols.Count) + { + return UnkIndex; + } + + return _symbols[rank].Id; + } + + private int ReserveStringSymboleSlot(string symbol, int defaultOccurrence = -1) + { + if (symbol is null) + { + throw new ArgumentNullException(nameof(symbol), $"argument {nameof(symbol)} should not be null."); + } + + if (!_stringSymbolToIndexMapping.TryGetValue(symbol, out int idx)) + { + idx = _symbols.Count; + _symbols.Add((-1, defaultOccurrence)); + _stringSymbolToIndexMapping[symbol] = idx; + } + + return idx; + } + + public int AddSymbol(int id, int highOccuranceScore) + { + if (!_idToIndex.TryGetValue(id, out int idx)) + { + idx = _symbols.Count; + _symbols.Add((id, highOccuranceScore)); + _idToIndex[id] = idx; + } + + return idx; + } + + public int AddMaskSymbol(string mask = "") + { + MaskWord = mask; + MaskIndex = ReserveStringSymboleSlot(mask, 1); + return MaskIndex; + } + + /// `idx` is negative. + public int this[int idx] + { + get + { + if (idx < 0) + { + throw new ArgumentOutOfRangeException(nameof(idx), $"Index should be non-negative, got {idx}."); + } + + return idx < _symbols.Count ? _symbols[idx].Id : UnkIndex; + } + } + + public int Count => _symbols.Count; + + public bool Equals(HighestOccurrenceMapping other) => _idToIndex.SequenceEqual(other._idToIndex); + + public bool Contains(string symbol) => symbol != null && _stringSymbolToIndexMapping.ContainsKey(symbol); + + public bool Contains(int id) => _idToIndex.ContainsKey(id); + + /// `symbol` is `null`. + public int IndexOf(int id) => _idToIndex.ContainsKey(id) ? _idToIndex[id] : UnkIndex; + + /// + /// Loads the mapping from a text file with the format: + /// 13 850314647 + /// 262 800385005 + /// 11 800251374 + /// 284 432911125 + /// ... + /// + public static HighestOccurrenceMapping Load(string fileName) + { + var mapping = new HighestOccurrenceMapping(); + mapping.AddFromFile(fileName); + return mapping; + } + + /// + /// Loads a pre-existing vocabulary from a text file and adds its symbols to this instance. + /// + public void AddFromFile(string fileName) + { + var lines = File.ReadAllLines(fileName, Encoding.UTF8); + + foreach (var line in lines) + { + var splitLine = line.Trim().Split(' '); + if (splitLine.Length != 2) + { + throw new ArgumentException("Incorrect vocabulary format, expected \" \""); + } + + if (!int.TryParse(splitLine[1], out int occurrenceScore)) + { + throw new ArgumentException($"Cannot parse the line: '{line}'."); + } + + if (!int.TryParse(splitLine[0], out var id)) + { + ReserveStringSymboleSlot(splitLine[0], occurrenceScore); + } + else + { + AddSymbol(id, occurrenceScore); + } + } + } + + public void Save(StreamWriter file) + { + for (int i = NumSpecialSymbols; i < _symbols.Count; i++) + { + (int id, int occurrenceScore) symbol = _symbols[i]; + if (symbol.id >= 0 && symbol.occurrenceScore >= 0) + { + file.WriteLine($"{symbol.id} {symbol.occurrenceScore}"); + } + } + + foreach (KeyValuePair kvp in _stringSymbolToIndexMapping) + { + if (_symbols[kvp.Value].OccurrenceScore >= 0) + { + file.WriteLine($"{kvp.Key} {_symbols[kvp.Value].OccurrenceScore}"); + } + } + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Merge.cs b/src/Microsoft.ML.Tokenizers/Model/Merge.cs new file mode 100644 index 0000000000..232d9e1ec5 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Merge.cs @@ -0,0 +1,45 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + // Used inside the Word class for merging the tokenized parts. + internal struct Merge : IEquatable, IComparable + { + public Merge(int pos, int rank, int newId) + { + Pos = pos; + Rank = rank; + NewId = newId; + } + + public int Pos { get; set; } + public int Rank { get; set; } + public int NewId { get; set; } + + public int CompareTo(Merge other) + { + if (Rank != other.Rank) + { + return Rank.CompareTo(other.Rank); + } + + return Pos.CompareTo(other.Pos); + } + + public override int GetHashCode() + { + int hashcode = 23; + hashcode = (hashcode * 37) + Rank.GetHashCode(); + hashcode = (hashcode * 37) + Pos.GetHashCode(); + return hashcode; + } + + public bool Equals(Merge other) => Pos == other.Pos && Rank == other.Rank; + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Model.cs b/src/Microsoft.ML.Tokenizers/Model/Model.cs new file mode 100644 index 0000000000..bd4a2a7b04 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Model.cs @@ -0,0 +1,62 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Represents a model used during Tokenization (like BPE or Word Piece or Unigram). + /// + public abstract class Model + { + /// + /// Tokenize a sequence string to a list of tokens. + /// + /// The sequence to tokenize. + /// The list of tokens generated from the sequence tokenization. + public abstract IReadOnlyList Tokenize(string sequence); + + /// + /// Map the token to tokenized Id. + /// + /// The token to map to the Id. + /// The mapped Id of the token. + public abstract int? TokenToId(string token); + + /// + /// Map the tokenized Id to the token. + /// + /// The Id to map to the token. + /// Indicate if want to skip the special tokens during the decoding. + /// The mapped token of the Id. + public abstract string? IdToToken(int id, bool skipSpecialTokens = false); + + /// + /// Gets the dictionary mapping tokens to Ids. + /// + public abstract IReadOnlyDictionary GetVocab(); + + /// + /// Gets the dictionary size that map tokens to Ids. + /// + public abstract int GetVocabSize(); + + /// + /// Save the model data into the vocabulary and merges files. + /// + /// The file system path to store the generated files at. + /// Optional prefix for the generated file names. + /// The list of all saved files. + public abstract string[] Save(string path, string? prefix = null); + + /// + /// Gets a trainer object to use in training the model. + /// + public abstract Trainer? GetTrainer(); + } + +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Pair.cs b/src/Microsoft.ML.Tokenizers/Model/Pair.cs new file mode 100644 index 0000000000..7ac6f9ca3e --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Pair.cs @@ -0,0 +1,41 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + internal struct Pair : IEquatable>, IComparable> where T : struct, IEquatable, IComparable + { + public T First { get; set; } + public T Second { get; set; } + + public static Pair Create(T first, T second) => new Pair(first, second); + + public Pair(T first, T second) + { + First = first; + Second = second; + } + + public bool Equals(Pair other) => First.Equals(other.First) && Second.Equals(other.Second); + + public override int GetHashCode() + { + int hashcode = 23; + hashcode = (hashcode * 37) + First.GetHashCode(); + hashcode = (hashcode * 37) + Second.GetHashCode(); + return hashcode; + + } + + public int CompareTo(Pair other) + { + int compareFirst = First.CompareTo(other.First); + return compareFirst == 0 ? Second.CompareTo(other.Second) : compareFirst; + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Progress.cs b/src/Microsoft.ML.Tokenizers/Model/Progress.cs new file mode 100644 index 0000000000..50aef06e57 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Progress.cs @@ -0,0 +1,64 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Microsoft.ML.Tokenizers +{ + public delegate void ReportProgress(Progress progress); + + /// + /// Represent the state of the reported progress. + /// + public enum ProgressState + { + /// + /// The progress is started. The reported value in the Progress structure will have the max number progressing toward. + /// + Start, + + /// + /// The progress is ended. The reported value in the Progress structure will have the final max processed number. + /// + End, + + /// + /// The progress is incremented. The reported value in increment value in the progress. + /// + Increment + } + + public readonly struct Progress + { + /// + /// Construct the Progress object using the progress state, message and the value. + /// + public Progress(ProgressState state, string? message, int value) + { + State = state; + Message = message; + Value = value; + } + + /// + /// The progress state. + /// + public ProgressState State { get; } + + /// + /// The message of the progress. + /// + public string? Message { get; } + + /// + /// The Value of the progress. + /// + /// + /// The value is the max number the progress can reach if the progress state is `Start`. + /// The value is the max number the progress reached if the progress state is `End`. + /// The value is the incremented value in the progress if the progress state is `Increment`. + /// + public int Value { get; } + } +} \ No newline at end of file diff --git a/src/Microsoft.ML.Tokenizers/Model/Symbol.cs b/src/Microsoft.ML.Tokenizers/Model/Symbol.cs new file mode 100644 index 0000000000..39c730b313 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Symbol.cs @@ -0,0 +1,36 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + internal struct Symbol + { + internal int C { get; set; } + internal int Prev { get; set; } + internal int Next { get; set; } + internal int Len { get; set; } // number of characters + + public Symbol(int c, int prev, int next, int len) + { + C = c; + Prev = prev; + Next = next; + Len = len; + } + + /// Merges the current Symbol with the other one. + /// In order to update prev/next, we consider Self to be the Symbol on the left, + /// and other to be the next one on the right. + internal void MergeWith(ref Symbol other, int c) + { + C = c; + Len += other.Len; + Next = other.Next; + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Trainer.cs b/src/Microsoft.ML.Tokenizers/Model/Trainer.cs new file mode 100644 index 0000000000..cec73e43e3 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Trainer.cs @@ -0,0 +1,36 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// A `Trainer` has the responsibility to train a model. We feed it with lines/sentences + /// and then it can train the given `Model`. + /// + public abstract class Trainer + { + /// + /// Set when need to report the progress during the training. + /// + public ReportProgress? Progress { get; set; } + + /// + /// Perform the actual training and update the input model with the new vocabularies and merges data. + /// + /// The model to train. + /// Special tokens to be added directly to the tokenizer along with the model. + public abstract IReadOnlyList? Train(Model model); + + /// + /// Process the input sequences and feed the result to the model. + /// + /// The list of sequences to feed the trainer. + /// Optional process callback for reporting the training progress update. + public abstract void Feed(IEnumerable sequences, Func> process); + } +} diff --git a/src/Microsoft.ML.Tokenizers/Model/Word.cs b/src/Microsoft.ML.Tokenizers/Model/Word.cs new file mode 100644 index 0000000000..2b5e50605e --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Model/Word.cs @@ -0,0 +1,261 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + internal struct Word + { + private static readonly Random _random = new Random(); + private Vec _symbols; + + public Word() => _symbols = new Vec(); + + public Word(int capacity) + { + if (capacity > int.MaxValue) + { + throw new ArgumentOutOfRangeException(nameof(capacity)); + } + _symbols = new Vec((int)capacity); + } + + public static Word WithCapacity(int capacity) => new Word(capacity); + + public int SymbolsCount => _symbols.Count; + + public void Add(int c, int charLength) + { + int prev = -1; + int next = -1; + + int len = _symbols.Count; + + if (len > 0) + { + // Update `next` on the previous one + _symbols[len - 1].Next = len; + prev = len - 1; + } + + _symbols.Push(new Symbol(c, prev, next, charLength)); + } + + public Vec<(Pair, int)> Merge(int c1, int c2, int replacement) + { + Vec<(Pair, int)> changes = new(); + int i = 0; + + while (true) + { + if (i >= _symbols.Count) + { + break; + } + + // Found a pair + if (_symbols[i].C == c1 && i + 1 < _symbols.Count && _symbols[i + 1].C == c2) + { + Symbol first = _symbols[i]; + Symbol second = _symbols[i + 1]; + + // If there are other characters before the pair + if (i > 0) + { + changes.Push((Pair.Create(_symbols[i - 1].C, first.C), -1)); + changes.Push((Pair.Create(_symbols[i - 1].C, replacement), 1)); + } + + // Remove in place + // Insert replacement before first char of pair + // Remove first char of pair + // And then the second + + _symbols[i].C = replacement; + _symbols[i].Prev = first.Prev; + _symbols[i].Next = second.Next; + _symbols[i].Len = first.Len + second.Len; + + _symbols.Remove(i + 1); + + // If there are other characters after the pair + if (i < _symbols.Count - 1) + { + changes.Push((Pair.Create(second.C, _symbols[i + 1].C), -1)); + changes.Push((Pair.Create(replacement, _symbols[i + 1].C), 1)); + } + } + + i += 1; + }; + + return changes; + } + + public void MergeAll(Dictionary, (int, int)> merges, float? dropout) + { + // Queue queue = new Queue(_symbols.Count); + PriorityQueue queue = new PriorityQueue(_symbols.Count); + + Vec skip = new Vec(queue.Count); + + for (int i = 0; i < _symbols.Count - 1; i++) + { + if (merges.TryGetValue(Pair.Create(_symbols[i].C, _symbols[i + 1].C), out (int m1, int m2) value)) + { + queue.Enqueue(new Merge(i, value.m1, value.m2)); + } + } + + while (queue.Count > 0) + { + Merge top = queue.Dequeue(); + if (dropout.HasValue && _random.NextDouble() < dropout) + { + skip.Push(top); + } + else + { + // Re-insert the skipped elements + for (int i = 0; i < skip.Count; i++) + { + queue.Enqueue(skip[i]); + } + skip.Clear(); + + // Do nothing if we are the last symbol + if (_symbols.Count == 0 || _symbols[top.Pos].Len == 0 || _symbols[top.Pos].Next == -1) + { + continue; + } + + int nextPos = _symbols[top.Pos].Next; + Symbol right = _symbols[nextPos]; + + // Make sure we are not processing an expired queue entry + Pair targetNewPair = Pair.Create(_symbols[top.Pos].C, right.C); + if (!merges.TryGetValue(targetNewPair, out (int m1, int m2) value) || value.m2 != top.NewId) + { + continue; + } + + // Otherwise, let's merge + _symbols[top.Pos].MergeWith(ref right, top.NewId); + + // Tag the right part as removed + _symbols[nextPos].Len = 0; + + // Update `prev` on the new `next` to the current pos + if (right.Next > -1 && right.Next < _symbols.Count) + { + _symbols[right.Next].Prev = top.Pos; + } + + // Insert the new pair formed with the previous symbol + Symbol current = _symbols[top.Pos]; + if (current.Prev >= 0) + { + int prev = current.Prev; + Symbol prevSymbol = _symbols[prev]; + Pair newPair = Pair.Create(prevSymbol.C, current.C); + + if (merges.TryGetValue(newPair, out value)) + { + queue.Enqueue(new Merge(current.Prev, value.m1, value.m2)); + } + } + + // Insert the new pair formed with the next symbol + int next = current.Next; + if ((uint)next < (uint)_symbols.Count) + { + Symbol nextSymbol = _symbols[(int)next]; + Pair newPair = Pair.Create(current.C, nextSymbol.C); + if (merges.TryGetValue(newPair, out value)) + { + queue.Enqueue(new Merge(top.Pos, value.m1, value.m2)); + } + } + } + } + + // Filter out the removed symbols + for (int i = _symbols.Count - 1; i >= 0; i--) + { + if (_symbols[i].Len == 0) + { + _symbols.Remove(i); + } + } + } + + public Vec GetChars() + { + Vec chars = new Vec(); + for (int i = 0; i < _symbols.Count; i++) + { + chars.Push(_symbols[i].C); + } + + return chars; + } + + public override string ToString() + { + if (_symbols.Count == 0) + { + return "[]"; + } + + StringBuilder sb = new StringBuilder(); + sb.Append('['); + sb.Append($"{_symbols[0].C}"); + for (int i = 1; i < _symbols.Count; i++) + { + sb.Append($", {_symbols[i].C}"); + } + sb.Append(']'); + return sb.ToString(); + } + + public Enumerator GetIterator(SortedDictionary vocabReverse) => new Enumerator(ref _symbols, vocabReverse); + + public struct Enumerator + { + private int _index; + private int _pos; + private Vec _symbols; + private readonly SortedDictionary _vocabReverse; + + public Enumerator(ref Vec symbols, SortedDictionary vocabReverse) + { + _index = -1; + _pos = 0; + _symbols = symbols; + _vocabReverse = vocabReverse; + } + + public readonly Enumerator GetEnumerator() => this; + + public readonly Token Current => new Token(_symbols[_index].C, _vocabReverse[_symbols[_index].C], (_pos, _pos + _symbols[_index].Len)); + + public bool MoveNext() + { + if (_symbols.Count == 0 || _index >= _symbols.Count - 1) + { + return false; + } + + _pos = _index == -1 ? 0 : _pos + _symbols[_index].Len; + + _index++; + return true; + } + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Normalizer/LowerCaseNormalizer.cs b/src/Microsoft.ML.Tokenizers/Normalizer/LowerCaseNormalizer.cs new file mode 100644 index 0000000000..063bae352a --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Normalizer/LowerCaseNormalizer.cs @@ -0,0 +1,26 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Normalize the string to lowercase form before processing it with the tokenizer. + /// + public sealed class LowerCaseNormalizer : Normalizer + { + /// + /// Creates a LowerCaseNormalizer object. + /// + public LowerCaseNormalizer() { } + + /// + /// Lowercase the original string. + /// + /// The original string to normalize to lowercase form. + /// The lower-cased normalized string. + public override NormalizedString Normalize(string original) => new NormalizedString(original, original.ToLowerInvariant(), mapping: null, isOneToOneMapping: true); + } +} diff --git a/src/Microsoft.ML.Tokenizers/Normalizer/NormalizedString.cs b/src/Microsoft.ML.Tokenizers/Normalizer/NormalizedString.cs new file mode 100644 index 0000000000..41a584caba --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Normalizer/NormalizedString.cs @@ -0,0 +1,64 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Contains the normalized string and the mapping to the original string. + /// + public readonly struct NormalizedString + { + /// + /// Create NormalizedString object containing the normalization of the original string and the mapping + /// between the original and the normalized string. + /// + /// The original string before normalization. + /// The normalized string. + /// The mapping between the normalized string and the original string. + /// Indicate whether the mapping is one-to-one. + public NormalizedString(string original, string normalizedString, int[]? mapping, bool isOneToOneMapping) + { + Original = original; + Normalized = normalizedString; + NormalizedToOriginalMapping = mapping; + + if (mapping is not null && mapping.Length < normalizedString.Length) + { + throw new ArgumentException($"Mapping array has to cover the whole normalized string length mapping", nameof(mapping)); + } + + IsOneToOneMapping = isOneToOneMapping; + } + + /// + /// Gets the original string before the normalization. + /// + public string Original { get; } + + /// + /// Gets the normalized string. + /// + public string Normalized { get; } + + /// + /// Gets the mapping between the normalized string and the original string. + /// + /// + /// The mapping can be null if IsOneToOneMapping is true or if the normalization doesn't support the mapping. + /// + public int[]? NormalizedToOriginalMapping { get; } + + /// + /// Gets whether the normalization between the normalized string and the original string is one-to-one. + /// + public bool IsOneToOneMapping { get; } + + /// + /// Gets whether can map the normalized string the original string. + /// + public bool CanMapToOriginal => IsOneToOneMapping || NormalizedToOriginalMapping is not null; + } +} diff --git a/src/Microsoft.ML.Tokenizers/Normalizer/Normalizer.cs b/src/Microsoft.ML.Tokenizers/Normalizer/Normalizer.cs new file mode 100644 index 0000000000..06a0374d72 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Normalizer/Normalizer.cs @@ -0,0 +1,21 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Normalize the string before processing it with the tokenizer. + /// + public abstract class Normalizer + { + /// + /// Process the original string to modify it and obtain a normalized string. + /// + /// The original string to normalize. + /// The normalized string along with the mapping to the original string. + public abstract NormalizedString Normalize(string original); + } +} diff --git a/src/Microsoft.ML.Tokenizers/Normalizer/UpperCaseNormalizer.cs b/src/Microsoft.ML.Tokenizers/Normalizer/UpperCaseNormalizer.cs new file mode 100644 index 0000000000..048b4fffe8 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Normalizer/UpperCaseNormalizer.cs @@ -0,0 +1,26 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Normalize the string to uppercase form before processing it with the tokenizer. + /// + public sealed class UpperCaseNormalizer : Normalizer + { + /// + /// Creates a UpperCaseNormalizer object. + /// + public UpperCaseNormalizer() { } + + /// + /// Uppercase the original string. + /// + /// The original string to normalize to uppercase form. + /// The upper-cased normalized string. + public override NormalizedString Normalize(string original) => new NormalizedString(original, original.ToUpperInvariant(), mapping: null, isOneToOneMapping: true); + } +} diff --git a/src/Microsoft.ML.Tokenizers/PreTokenizer/PreTokenizer.cs b/src/Microsoft.ML.Tokenizers/PreTokenizer/PreTokenizer.cs new file mode 100644 index 0000000000..a45fd26228 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/PreTokenizer/PreTokenizer.cs @@ -0,0 +1,64 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// This Split contains the underlying split token as well as its offsets + /// in the original string. These offsets are in the `original` referential. + /// It also contains any `Token` associated to the current split. + /// + public sealed class Split : IEquatable + { + /// + /// Gets the underlying split token. Each SubString is represented by a token + /// and in the end we might be carrying a lot of SubString representing various parts of the + /// original input string. + /// + public string TokenString { get; } + + /// + /// Returns the offset mapping to the original string + /// + public (int Index, int End) Offset { get; } + + /// + /// create a Split object using the token and the offset + /// + public Split(string token, (int Index, int End) offset) + { + TokenString = token; + Offset = offset; + } + + /// + /// Indicates whether the current Split object is equal to another Split object. + /// + /// The Split object to compare with the current object. + public bool Equals(Split? other) => + other is not null && + TokenString == other.TokenString && + Offset.Index == other.Offset.Index && + Offset.End == other.Offset.End; + } + + + /// + /// Base class for all pre-tokenizers classes. + /// The PreTokenizer is in charge of doing the pre-segmentation step. + /// + public abstract class PreTokenizer + { + /// + /// Splits the given string in multiple substrings at the word boundary, keeping track of the offsets of said substrings from the original string. + /// + /// The string to split into tokens. + /// The list of the splits containing the tokens and the token's offsets to the original string. + public abstract IReadOnlyList PreTokenize(string sentence); + } +} diff --git a/src/Microsoft.ML.Tokenizers/PreTokenizer/Roberta.cs b/src/Microsoft.ML.Tokenizers/PreTokenizer/Roberta.cs new file mode 100644 index 0000000000..56a306df54 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/PreTokenizer/Roberta.cs @@ -0,0 +1,48 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// The pre-tokenizer for Roberta English tokenizer. + /// + public sealed class RobertaPreTokenizer : PreTokenizer + { + /// + /// Gets a singleton instance of the Roberta pre-tokenizer.. + /// + public static readonly RobertaPreTokenizer Instance = new RobertaPreTokenizer(); + + private const string Pattern = @"'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+"; + + private static readonly IReadOnlyList _emptyList = new List(); + + /// + /// Splits the given string in multiple substrings at the word boundary, keeping track of the offsets of said substrings from the original string. + /// + /// The string to split into tokens. + /// The list of the splits containing the tokens and the token's offsets to the original string. + public override IReadOnlyList PreTokenize(string? sentence) + { + if (sentence is null) + { + return _emptyList; + } + + List parts = new List(); + + foreach (Match match in Regex.Matches(sentence, Pattern)) + { + parts.Add(new Split(match.Value, (match.Index, match.Index + match.Length))); + } + + return parts; + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/PreTokenizer/Whitespace.cs b/src/Microsoft.ML.Tokenizers/PreTokenizer/Whitespace.cs new file mode 100644 index 0000000000..65bc2b7eea --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/PreTokenizer/Whitespace.cs @@ -0,0 +1,49 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// The pre-tokenizer which split the text at the word boundary. + /// The word is a set of alphabet, numeric, and underscore characters. + /// + public sealed class WhiteSpace : PreTokenizer + { + /// + /// Gets a singleton instance of the WhiteSpace pre-tokenizer.. + /// + public static readonly WhiteSpace Instance = new WhiteSpace(); + + private const string Pattern = @"\w+|[^\w\s]+"; + + private static readonly IReadOnlyList _emptyList = new List(); + + /// + /// Splits the given string in multiple substrings at the word boundary, keeping track of the offsets of said substrings from the original string. + /// + /// The string to split into tokens. + /// The list of the splits containing the tokens and the token's offsets to the original string. + public override IReadOnlyList PreTokenize(string? sentence) + { + if (sentence is null) + { + return _emptyList; + } + + List parts = new List(); + + foreach (Match match in Regex.Matches(sentence, Pattern)) + { + parts.Add(new Split(match.Value, (match.Index, match.Index + match.Length))); + } + + return parts; + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Token.cs b/src/Microsoft.ML.Tokenizers/Token.cs new file mode 100644 index 0000000000..7ae9b8b25c --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Token.cs @@ -0,0 +1,45 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// Represent the token produced from the tokenization process containing the token substring, + /// the id associated to the token substring, and the offset mapping to the original string. + /// + public sealed class Token + { + /// + /// Gets or sets the Id value associated to the token. + /// + public int Id { get; set; } + + /// + /// Gets or sets the token string value. + /// + public string Value { get; set; } + + /// + /// Gets or sets the offset mapping to the original string. + /// + public (int Index, int End) Offset { get; set; } + + /// + /// Construct a new Token object using the token value, Id, and the offset mapping to the original string. + /// + /// The Id value associated to the token. + /// The token string value. + /// The offset mapping to the original string. + public Token(int id, string value, (int, int) offset) + { + Id = id; + Offset = offset; + Value = value; + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Tokenizer.cs b/src/Microsoft.ML.Tokenizers/Tokenizer.cs new file mode 100644 index 0000000000..aedbb0571e --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Tokenizer.cs @@ -0,0 +1,191 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// A Tokenizer works as a pipeline. It processes some raw text as input and outputs a TokenizerResult object. + /// + public class Tokenizer + { + /// + /// Create a new Tokenizer object. + /// + /// The Model in use by the Tokenizer. + /// The optional PreTokenizer in use by the Tokenizer. WhiteSpace PreTokenizer will be used if this parameter is null. + /// The optional Normalizer in use by the Tokenizer. + public Tokenizer(Model model, PreTokenizer? preTokenizer = null, Normalizer? normalizer = null) + { + Model = model; + PreTokenizer = preTokenizer ?? WhiteSpace.Instance; + Normalizer = normalizer; + } + + /// + /// Gets the Model in use by the Tokenizer. + /// + public Model Model { get; } + + /// + /// Gets or sets the PreTokenizer used by the Tokenizer. + /// + public PreTokenizer PreTokenizer { get; set; } + + /// + /// Gets or sets the Normalizer in use by the Tokenizer. + /// + public Normalizer? Normalizer { get; set; } + + /// + /// Gets or sets the Decoder in use by the Tokenizer. + /// + public TokenizerDecoder? Decoder { get; set; } + + /// + /// Encodes input text to object has the tokens list, tokens Ids, tokens offset mapping. + /// + /// The text to tokenize. + /// The tokenization result includes the tokens list, tokens Ids, tokens offset mapping. + public TokenizerResult Encode(string sequence) + { + if (sequence is null) + { + throw new ArgumentNullException(nameof(sequence)); + } + + string normalized; + NormalizedString normalizedString = default; + + bool offsetsMappedToOriginal = true; + if (Normalizer is not null) + { + normalizedString = Normalizer.Normalize(sequence); + normalized = normalizedString.Normalized; + + offsetsMappedToOriginal = normalizedString.CanMapToOriginal; + } + else + { + normalized = sequence; + } + + TokenizerResult encoding = new(sequence, normalized, PreTokenizer.PreTokenize(normalized), offsetsMappedToOriginal); + + if (Normalizer is null || !normalizedString.CanMapToOriginal || normalizedString.IsOneToOneMapping) + { + // Optimize the case we don't have to map the offsets. + foreach (Split split in encoding.Splits) + { + IReadOnlyList tokens = Model.Tokenize(split.TokenString); + foreach (Token token in tokens) + { + token.Offset = (token.Offset.Index + split.Offset.Index, token.Offset.End + split.Offset.Index); + } + + encoding.AddTokens(tokens); + } + } + else + { + Debug.Assert(normalizedString.NormalizedToOriginalMapping is not null); + + foreach (Split split in encoding.Splits) + { + IReadOnlyList tokens = Model.Tokenize(split.TokenString); + foreach (Token token in tokens) + { + int index = normalizedString.NormalizedToOriginalMapping![token.Offset.Index + split.Offset.Index]; + int end = normalizedString.NormalizedToOriginalMapping![token.Offset.End + split.Offset.Index - 1] + 1; + + Debug.Assert(index < end && end >= 0 && index >= 0); + + token.Offset = (index, end); + } + + encoding.AddTokens(tokens); + } + } + + return encoding; + } + + // skipSpecialTokens is used in post processing we don't support yet. We are keeping it to allow using it when we support post processing. + /// + /// Decodes the Id to the mapped token. + /// + /// The id to map to the token. + /// Indicate if want to skip the special tokens during the decoding. + /// The decoded string or null if there is no token mapped to the input id. + public string? Decode(int id, bool skipSpecialTokens = false) => Model.IdToToken(id, skipSpecialTokens); + + // skipSpecialTokens is used in post processing we don't support yet. We are keeping it to allow using it when we support post processing. + /// + /// Decode the given ids, back to a String. + /// + /// The list of ids that we want to decode. + /// Whether the special tokens should be removed from the decoded string. + /// The decoded string. + public string? Decode(IEnumerable ids, bool skipSpecialTokens = false) + { + List tokens = new List(); + + foreach (int id in ids) + { + tokens.Add(Model.IdToToken(id) ?? ""); + } + + return Decoder?.Decode(tokens) ?? string.Join("", tokens); + } + + /// + /// Train the tokenizer model using input files. + /// + /// An optional trainer that should be used to train our Model. + /// Optional progress callback to report the training progress. + /// A list of the files that we should use for training. + public void TrainFromFiles( + Trainer? trainer, + ReportProgress? progress, + params string[] files) + { + Trainer? t = trainer ?? Model.GetTrainer(); + if (t == null) + { + throw new ArgumentNullException(nameof(trainer)); + } + + foreach (var file in files) + { + string[] lines = File.ReadAllLines(file); + progress?.Invoke(new Progress(ProgressState.Start, $"{file}", lines.Length)); + + t.Feed(lines, (s) => + { + string current = Normalizer is null ? s : Normalizer.Normalize(s).Normalized; + IReadOnlyList splits = PreTokenizer.PreTokenize(current); + List list = new(splits.Count); + foreach (Split split in splits) + { + list.Add(split.TokenString); + } + + progress?.Invoke(new Progress(ProgressState.Increment, null, 1)); + + return list; + }); + progress?.Invoke(new Progress(ProgressState.End, null, lines.Length)); + } + + IReadOnlyList? addedTokens = t.Train(Model); + + // To Do: support added vocabulary in the tokenizer which will include this returned special_tokens. + // self.add_special_tokens(&special_tokens); + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/TokenizerDecoder.cs b/src/Microsoft.ML.Tokenizers/TokenizerDecoder.cs new file mode 100644 index 0000000000..2328603de8 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/TokenizerDecoder.cs @@ -0,0 +1,23 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// A Decoder has the responsibility to merge the given list of tokens in a string. + /// + public abstract class TokenizerDecoder + { + /// + /// Decode by joining all the tokens to a string. + /// + /// The list of tokens to merge. + /// The string containing all merged tokens. + public abstract string Decode(IEnumerable tokens); + } +} diff --git a/src/Microsoft.ML.Tokenizers/TokenizerResult.cs b/src/Microsoft.ML.Tokenizers/TokenizerResult.cs new file mode 100644 index 0000000000..4571e79482 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/TokenizerResult.cs @@ -0,0 +1,158 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + /// + /// The Encoding represents the output of a Tokenizer. + /// + public sealed class TokenizerResult + { + /// + /// Create a new object of the TokenizerResult object. + /// + /// The list of tokens to merge. + /// The list of tokens to merge. + /// The list of tokens to merge. + /// Indicate whether the offsets is mapped to the original string or the normalized string. + public TokenizerResult(string originalString, string normalizedString, IReadOnlyList splits, bool offsetsMappedToOriginalString) + { + OriginalString = originalString; + NormalizedString = normalizedString; + Splits = splits; + OffsetsMappedToOriginalString = offsetsMappedToOriginalString; + } + + /// + /// Gets the original tokenized string. + /// + public string? OriginalString { get; } + + /// + /// Gets the normalized form of the original string. + /// + public string? NormalizedString { get; } + + /// + /// Gets the normalized form of the original string. + /// + public bool OffsetsMappedToOriginalString { get; } + + internal IReadOnlyList Splits { get; } + private List? _tokens; + private List? _tokensWords; + private List? _ids; + private List<(int Index, int End)>? _offsets; + + internal void AddTokens(IReadOnlyList addedTokens) + { + if (_tokens is null) + { + _tokens = new(addedTokens); + return; + } + + foreach (var token in addedTokens) + { + _tokens.Add(token); + } + } + + private static readonly IReadOnlyList _emptyIds = new List(); + + /// + /// Gets list of the tokens Ids. + /// The Ids are the main input to a Language Model. They are the token indices, the numerical representations that a LM understands. + /// + public IReadOnlyList Ids + { + get + { + if (_ids is not null) + { + return _ids; + } + + if (_tokens is null) + { + return _emptyIds; + } + + _ids = new List(_tokens.Count); + + foreach (var token in _tokens) + { + _ids.Add(token.Id); + } + + return _ids; + } + } + + private static readonly IReadOnlyList _emptyTokens = new List(); + + /// + /// Gets the generated tokens. They are the string representation of the Ids. + /// + public IReadOnlyList Tokens + { + get + { + if (_tokensWords is not null) + { + return _tokensWords; + } + + if (_tokens is null) + { + return _emptyTokens; + } + + _tokensWords = new List(_tokens.Count); + + foreach (var token in _tokens) + { + _tokensWords.Add(token.Value); + } + + return _tokensWords; + } + } + + private static readonly IReadOnlyList<(int, int)> _emptyOffsets = new List<(int, int)>(); + + /// + /// Gets The list of offsets. These offsets let’s you slice the input string, and thus retrieve + /// the original part that led to producing the corresponding token. + /// + public IReadOnlyList<(int Index, int End)> Offsets + { + get + { + if (_offsets is not null) + { + return _offsets; + } + + if (_tokens is null) + { + return _emptyOffsets; + } + + _offsets = new List<(int Index, int End)>(_tokens.Count); + + foreach (var token in _tokens) + { + _offsets.Add(token.Offset); + } + + return _offsets; + } + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Utils/PriorityQueue.cs b/src/Microsoft.ML.Tokenizers/Utils/PriorityQueue.cs new file mode 100644 index 0000000000..e2eaa38846 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Utils/PriorityQueue.cs @@ -0,0 +1,90 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + internal class PriorityQueue where T : IComparable + { + private readonly List _data; + + public PriorityQueue(int capacity) + { + _data = new List(capacity); + } + + public void Enqueue(T item) + { + _data.Add(item); + int ci = _data.Count - 1; // child index; start at end + while (ci > 0) + { + int pi = (ci - 1) / 2; // parent index + if (_data[ci].CompareTo(_data[pi]) >= 0) break; // child item is larger than (or equal) parent so we're done + T tmp = _data[ci]; _data[ci] = _data[pi]; _data[pi] = tmp; + ci = pi; + } + } + + public T Dequeue() + { + // assumes pq is not empty; up to calling code + int li = _data.Count - 1; // last index (before removal) + T frontItem = _data[0]; // fetch the front + _data[0] = _data[li]; + _data.RemoveAt(li); + + --li; // last index (after removal) + int pi = 0; // parent index. start at front of pq + while (true) + { + int ci = pi * 2 + 1; // left child index of parent + if (ci > li) break; // no children so done + int rc = ci + 1; // right child + if (rc <= li && _data[rc].CompareTo(_data[ci]) < 0) // if there is a rc (ci + 1), and it is smaller than left child, use the rc instead + ci = rc; + if (_data[pi].CompareTo(_data[ci]) <= 0) break; // parent is smaller than (or equal to) smallest child so done + T tmp = _data[pi]; _data[pi] = _data[ci]; _data[ci] = tmp; // swap parent and child + pi = ci; + } + return frontItem; + } + + public T Peek() + { + T frontItem = _data[0]; + return frontItem; + } + + public int Count => _data.Count; + + public override string ToString() + { + string s = ""; + for (int i = 0; i < _data.Count; ++i) + s += _data[i].ToString() + " "; + s += "count = " + _data.Count; + return s; + } + + public bool IsConsistent() + { + // is the heap property true for all data? + if (_data.Count == 0) return true; + int li = _data.Count - 1; // last index + for (int pi = 0; pi < _data.Count; ++pi) // each parent index + { + int lci = 2 * pi + 1; // left child index + int rci = 2 * pi + 2; // right child index + + if (lci <= li && _data[pi].CompareTo(_data[lci]) > 0) return false; // if lc exists and it's greater than parent then bad. + if (rci <= li && _data[pi].CompareTo(_data[rci]) > 0) return false; // check the right child too. + } + return true; // passed all checks + } // IsConsistent + } // PriorityQueue +} diff --git a/src/Microsoft.ML.Tokenizers/Utils/TokenizerExtensions.cs b/src/Microsoft.ML.Tokenizers/Utils/TokenizerExtensions.cs new file mode 100644 index 0000000000..9c398cb7b1 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Utils/TokenizerExtensions.cs @@ -0,0 +1,83 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.ML.Tokenizers +{ + internal static class TokenizerExtensions + { + public static T? ArgMin(this IEnumerable source, Func getValue) + { + var keys = source.ToList(); // avoid enumerate twice + var values = keys.Select(getValue); + var (minSource, minValue) = keys.Zip(values, (first, second) => (first, second)).Aggregate((min, x) => min.second <= x.second ? min : x); + return minValue < int.MaxValue ? minSource : default; + } + + public static TValue GetOrAdd(this Dictionary dic, TKey key, TValue setValue) + { + if (dic.TryGetValue(key, out var value)) + { + return value; + } + + dic[key] = setValue; + return setValue; + } + + public static IReadOnlyDictionary Reverse(this IReadOnlyDictionary source) + { + Dictionary dictionary = new Dictionary(); + if (source != null) + { + foreach (KeyValuePair pair in source) + { + dictionary[pair.Value] = pair.Key; + } + return dictionary; + } + return dictionary; + } + + public static SortedDictionary ReverseSorted(this IReadOnlyDictionary source) + { + SortedDictionary dictionary = new SortedDictionary(); + if (source != null) + { + foreach (KeyValuePair pair in source) + { + dictionary[pair.Value] = pair.Key; + } + return dictionary; + } + return dictionary; + } + } + + internal class DictReversingConverter : JsonConverter> + { + public override SortedDictionary? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => null; + + public override void Write(Utf8JsonWriter writer, SortedDictionary value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + + foreach (KeyValuePair pair in value) + { + if (pair.Key >= 0) + { + writer.WriteNumber(pair.Value, pair.Key); + } + } + + writer.WriteEndObject(); + } + } +} diff --git a/src/Microsoft.ML.Tokenizers/Utils/Vec.cs b/src/Microsoft.ML.Tokenizers/Utils/Vec.cs new file mode 100644 index 0000000000..84f14bb585 --- /dev/null +++ b/src/Microsoft.ML.Tokenizers/Utils/Vec.cs @@ -0,0 +1,79 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.ML.Tokenizers +{ + internal struct Vec + { + private const int DefaultCapacity = 10; + private int _count; + private T[]? _buffer; + + public ref T this[int index] + { + get + { + if (index >= _count) + { + throw new ArgumentOutOfRangeException(nameof(index), $"{index} is out of range"); + } + return ref _buffer![index]; + } + } + + public Vec() + { + _count = 0; + _buffer = null; + } + + public Vec(int capacity) + { + _count = 0; + _buffer = new T[capacity]; + } + + public int Capacity => _buffer is null ? 0 : _buffer.Length; + public int Count => _count; + + public void Push(T t) + { + if (_buffer is null) + { + _buffer = new T[DefaultCapacity]; + _buffer[0] = t; + _count = 1; + return; + } + + if (_buffer.Length <= _count) + { + Array.Resize(ref _buffer, _buffer.Length << 1); + } + + _buffer[_count++] = t; + } + + public void Remove(int index) + { + if (index >= _count || _buffer is null) + { + return; + } + + for (int i = index; i < _count - 1; i++) + { + _buffer[i] = _buffer[i + 1]; + } + + _count--; + } + + public void Clear() => _count = 0; + } +} diff --git a/src/Microsoft.ML.TorchSharp/Extensions/IEnumerableExtensions.cs b/src/Microsoft.ML.TorchSharp/Extensions/IEnumerableExtensions.cs deleted file mode 100644 index c751982c1c..0000000000 --- a/src/Microsoft.ML.TorchSharp/Extensions/IEnumerableExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Microsoft.ML.TorchSharp.Extensions -{ - internal static class IEnumerableExtensions - { - public static string ToString(this IEnumerable enumerable, bool verbose = true) - { - return verbose - ? $"[{string.Join(", ", enumerable.Select(e => e.ToString()))}]" - : enumerable?.ToString() ?? string.Empty; - } - - public static T ArgMin(this IEnumerable source, Func getValue) - { - var keys = source.ToList(); // avoid enumerate twice - var values = keys.Select(getValue); - var (minSource, minValue) = keys.Zip(values, (first, second) => (first, second)).Aggregate((min, x) => min.second <= x.second ? min : x); - return minValue < int.MaxValue ? minSource : default; - } - } -} diff --git a/src/Microsoft.ML.TorchSharp/Extensions/IReadOnlyDictionaryExtension.cs b/src/Microsoft.ML.TorchSharp/Extensions/IReadOnlyDictionaryExtension.cs deleted file mode 100644 index c3d779a439..0000000000 --- a/src/Microsoft.ML.TorchSharp/Extensions/IReadOnlyDictionaryExtension.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.ML.TorchSharp.Extensions -{ - internal static class IReadOnlyDictionaryExtension - { - public static IReadOnlyDictionary Reverse(this IReadOnlyDictionary source) - { - var dictionary = new Dictionary(); - if (source != null) - { - foreach (var pair in source) - { - dictionary[pair.Value] = pair.Key; - } - } - return dictionary; - } - } -} diff --git a/src/Microsoft.ML.TorchSharp/Extensions/TokenizerExtensions.cs b/src/Microsoft.ML.TorchSharp/Extensions/TokenizerExtensions.cs new file mode 100644 index 0000000000..1cb5a7fbd4 --- /dev/null +++ b/src/Microsoft.ML.TorchSharp/Extensions/TokenizerExtensions.cs @@ -0,0 +1,60 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using Microsoft.ML.Runtime; +using Microsoft.ML.Tokenizers; +using Microsoft.ML.TorchSharp.Utils; + +namespace Microsoft.ML.TorchSharp.Extensions +{ + internal static class TokenizerExtensions + { + private const string EncoderJsonName = "encoder.json"; + private const string MergeName = "vocab.bpe"; + private const string DictName = "dict.txt"; + + private static readonly Uri _encoderJsonUrl = new Uri("https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/encoder.json"); + private static readonly Uri _mergeUrl = new Uri("https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/vocab.bpe"); + private static readonly Uri _dictUrl = new Uri("https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/dict.txt"); + + private static Tokenizer _instance; + + internal static Tokenizer GetInstance(IChannel ch) + { + if (_instance is null) + { + FileUtils.LoadFromFileOrDownloadFromWeb(string.Empty, EncoderJsonName, _encoderJsonUrl, ch); + FileUtils.LoadFromFileOrDownloadFromWeb(string.Empty, MergeName, _mergeUrl, ch); + FileUtils.LoadFromFileOrDownloadFromWeb(string.Empty, DictName, _dictUrl, ch); + + EnglishRoberta model = new EnglishRoberta(EncoderJsonName, MergeName, DictName); + model.AddMaskSymbol(); + _instance = new Tokenizer(model, new RobertaPreTokenizer()); + } + + return _instance; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static EnglishRoberta RobertaModel(this Tokenizer tokenizer) + { + EnglishRoberta model = tokenizer.Model as EnglishRoberta; + if (model is null) + { + throw new InvalidOperationException($"The input tokenizer is not using the EnglishRoberta model."); + } + + return model; + } + + internal static IReadOnlyList EncodeToConverted(this Tokenizer tokenizer, string sentence) + { + TokenizerResult encoding = tokenizer.Encode(sentence); + return tokenizer.RobertaModel().IdsToOccurrenceRanks(encoding.Ids); + } + } +} \ No newline at end of file diff --git a/src/Microsoft.ML.TorchSharp/Microsoft.ML.TorchSharp.csproj b/src/Microsoft.ML.TorchSharp/Microsoft.ML.TorchSharp.csproj index 603637f315..30de2c75dc 100644 --- a/src/Microsoft.ML.TorchSharp/Microsoft.ML.TorchSharp.csproj +++ b/src/Microsoft.ML.TorchSharp/Microsoft.ML.TorchSharp.csproj @@ -17,6 +17,7 @@ + all diff --git a/src/Microsoft.ML.TorchSharp/NasBert/Models/BaseModel.cs b/src/Microsoft.ML.TorchSharp/NasBert/Models/BaseModel.cs index 7f94703abc..3ab75c4ae1 100644 --- a/src/Microsoft.ML.TorchSharp/NasBert/Models/BaseModel.cs +++ b/src/Microsoft.ML.TorchSharp/NasBert/Models/BaseModel.cs @@ -18,20 +18,19 @@ internal abstract class BaseModel : BaseModule protected readonly TransformerEncoder Encoder; -#pragma warning disable CA1024 // Use properties where appropriate: Modules should be fields in TorchSharp +#pragma warning disable CA1024 // Use properties where appropriate: Modules should be fields in TorchSharp public TransformerEncoder GetEncoder() => Encoder; public abstract BaseHead GetHead(); #pragma warning restore CA1024 // Use properties where appropriate - protected BaseModel(TextClassificationTrainer.Options options, Vocabulary vocabulary) + protected BaseModel(TextClassificationTrainer.Options options, int padIndex, int symbolsCount) : base(nameof(BaseModel)) { - vocabulary = vocabulary ?? throw new ArgumentNullException(nameof(vocabulary)); Options = options ?? throw new ArgumentNullException(nameof(options)); Encoder = new TransformerEncoder( - paddingIdx: vocabulary.PadIndex, - vocabSize: vocabulary.Count, + paddingIdx: padIndex, + vocabSize: symbolsCount, dropout: Options.Dropout, attentionDropout: Options.AttentionDropout, activationDropout: Options.ActivationDropout, diff --git a/src/Microsoft.ML.TorchSharp/NasBert/Models/TextClassificationModel.cs b/src/Microsoft.ML.TorchSharp/NasBert/Models/TextClassificationModel.cs index ec5541e8af..8c82d5f69d 100644 --- a/src/Microsoft.ML.TorchSharp/NasBert/Models/TextClassificationModel.cs +++ b/src/Microsoft.ML.TorchSharp/NasBert/Models/TextClassificationModel.cs @@ -15,8 +15,8 @@ internal sealed class TextClassificationModel : BaseModel public override BaseHead GetHead() => _predictionHead; - public TextClassificationModel(TextClassificationTrainer.Options options, Vocabulary vocabulary, int numClasses) - : base(options, vocabulary) + public TextClassificationModel(TextClassificationTrainer.Options options, int padIndex, int symbolsCount, int numClasses) + : base(options, padIndex, symbolsCount) { _predictionHead = new PredictionHead( inputDim: Options.EncoderOutputDim, diff --git a/src/Microsoft.ML.TorchSharp/NasBert/Preprocessing/BpeTokenizer.cs b/src/Microsoft.ML.TorchSharp/NasBert/Preprocessing/BpeTokenizer.cs deleted file mode 100644 index 43f78d3653..0000000000 --- a/src/Microsoft.ML.TorchSharp/NasBert/Preprocessing/BpeTokenizer.cs +++ /dev/null @@ -1,317 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Text.RegularExpressions; -using Microsoft.ML.Runtime; -using Microsoft.ML.TorchSharp.Extensions; -using Microsoft.ML.TorchSharp.Utils; -using Newtonsoft.Json; - -namespace Microsoft.ML.TorchSharp.NasBert.Preprocessing -{ - internal class BpeTokenizer - { - // Singleton - private static BpeTokenizer _instance; - private static string _path; - - private const string EncoderJsonName = "encoder.json"; - private const string MergeName = "vocab.bpe"; - private const string DictName = "dict.txt"; - - private static readonly Uri _encoderJsonUrl = new Uri("https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/encoder.json"); - private static readonly Uri _mergeUrl = new Uri("https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/vocab.bpe"); - private static readonly Uri _dictUrl = new Uri("https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/dict.txt"); - - internal readonly Vocabulary Vocabulary; - private readonly IReadOnlyDictionary _encoder; - private readonly IReadOnlyDictionary _decoder; - private readonly (string, string)[] _merges; - private readonly DefaultDictionary<(string, string), int> _mergeRanks; - private readonly IReadOnlyDictionary _byteToUnicode; - private readonly IReadOnlyDictionary _unicodeToByte; - private const string Pattern = @"'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+"; - - internal const int InitToken = 0; - internal const int SeperatorToken = 2; - - /// - /// Get the singleton of BPE tokenizer with vocabulary files in . - /// - public static BpeTokenizer GetInstance(IChannel ch, string path = null) - { - if (_instance == null) - { - _path = path ?? ""; - _instance = new BpeTokenizer(ch); - } - - return _instance; - } - - private BpeTokenizer(IChannel ch) - { - Vocabulary = GetVocabulary(ch); - _encoder = GetEncoder(ch); - _decoder = _encoder.Reverse(); - _merges = GetMerges(ch); - _mergeRanks = GetMergeRanks(); - _byteToUnicode = GetByteToUnicode(); - _unicodeToByte = _byteToUnicode.Reverse(); - } - - private static Vocabulary GetVocabulary(IChannel ch) - { - _ = FileUtils.LoadFromFileOrDownloadFromWeb(_path, DictName, _dictUrl, ch); - return Vocabulary.Load(System.IO.Path.Combine(_path, DictName)); - } - - private Dictionary GetEncoder(IChannel ch) - { - var contents = FileUtils.LoadFromFileOrDownloadFromWeb(_path, EncoderJsonName, _encoderJsonUrl, ch); - - // Parse JSON - try - { - var jsonResult = (Dictionary)JsonConvert.DeserializeObject>(contents); - - jsonResult[Vocabulary.BosWord] = -Vocabulary.BosIndex; - jsonResult[Vocabulary.EosWord] = -Vocabulary.EosIndex; - jsonResult[Vocabulary.UnkWord] = -Vocabulary.UnkIndex; - jsonResult[Vocabulary.PadWord] = -Vocabulary.PadIndex; - - return jsonResult; - } - catch (JsonException e) - { - throw new JsonException($"Problems met when parsing JSON object in {EncoderJsonName}.\n" + - $"Error message: {e.Message}"); - } - } - - private static (string, string)[] GetMerges(IChannel ch) - { - var contents = FileUtils.LoadFromFileOrDownloadFromWeb(_path, MergeName, _mergeUrl, ch); - - // Parse merge info - var splitContents = contents.Split('\n'); - var merges = splitContents.Where((source, index) => index != splitContents.Length - 1 && index != 0).Select(line => // Was [1..^1] originally - { - var split = line.Split(' '); - if (split.Length != 2 || string.IsNullOrEmpty(split[0]) || string.IsNullOrEmpty(split[1])) - { - throw new Exception("Invalid format of merge file: \"{line}\""); - } - return (split[0], split[1]); - }).ToArray(); - return merges; - } - - private DefaultDictionary<(string, string), int> GetMergeRanks() - { - var mergeRanks = new DefaultDictionary<(string, string), int>(() => int.MaxValue); - for (var i = 0; i < _merges.Length; ++i) - { - mergeRanks.Add(_merges[i], i); - } - - return mergeRanks; - } - - /// - /// Returns list of utf-8 bytes and a corresponding list of unicode chars. - /// This mapping is to make unseen characters (such as control characters) displayable. - /// - private static Dictionary GetByteToUnicode() - { - var byteToUnicode = Enumerable.Range('!', '~' - '!' + 1) - .Concat(Enumerable.Range('¡', '¬' - '¡' + 1)) - .Concat(Enumerable.Range('®', 'ÿ' - '®' + 1)) - .ToDictionary(b => (char)b, b => (char)b); - - const int numChars = 256; - var n = 0; - foreach (var b in Enumerable.Range(0, numChars)) - { - if (byteToUnicode.ContainsKey((char)b)) continue; - byteToUnicode.Add((char)b, (char)(numChars + n)); - ++n; - } - - return byteToUnicode; - } - - /// - /// Encode a text string to the token IDs using BPE. - /// - public IList Encode(string text) - { - var bpeTokens = Bpe(text); - var bpeTokenIds = bpeTokens.Select(token => _encoder[token]).ToList(); - return bpeTokenIds; - } - - /// - /// Encode a text string to the converted token IDs using BPE. - /// - public IList EncodeToConverted(string text) - { - var origin = Encode(text); - var converted = origin.Select(token => token <= 0 - ? -token - : Vocabulary.IndexOf($"{token}")); - return converted.ToList(); - } - - /// - /// Decode origin token IDs and return the corresponding string. - /// Origin token ID is the token ID after BPE processing. - /// - public string DecodeOrigin(IEnumerable tokenIds) - { - var tokens = tokenIds.Select(id => _decoder[id]); - var textChars = string.Join("", tokens) - .Where(c => _unicodeToByte.ContainsKey(c)) - .Select(c => _unicodeToByte[c]); - var text = new string(textChars.ToArray()); - return text; - } - - /// - /// Decode converted token IDs and return the corresponding string. - /// Origin token ID is the token ID after BPE processing, and defines a mapping - /// between origin token IDs and converted token IDs. - /// - public string DecodeConverted(IEnumerable tokenIds) - { - // 1. not to decode padding tokens - // 2. special tokens (BOS, EOS, PAD, UNK) in vocabulary are presented as strings rather than integers, - // so they will cause parsing failure. We treat their IDs as negative integers to avoid conflict with - // normal tokens. Other unrecognized tokens will be treated as token#13, which is ".". - var tokenArray = tokenIds - .Where(token => token != Vocabulary.PadIndex) - .Select(token => int.TryParse(Vocabulary[token], out var result) ? result : - token < Vocabulary.NumSpecialSymbols ? -token : - 13) - .ToArray(); - var text = DecodeOrigin(tokenArray); - return text; - } - - - /// - /// Encode text with several tokens into BPE-ed sub-tokens. - /// - private List Bpe(string text) - { - var bpeTokens = new List(); - var tokenMatches = Regex.Matches(text, Pattern); - for (var i = 0; i < tokenMatches.Count; ++i) - { - var token = tokenMatches[i].Value; - var convertedToken = string.Join("", token - .Where(b => _byteToUnicode.ContainsKey(b)) - .Select(b => _byteToUnicode[b])); - if (convertedToken.Length == 0) continue; - bpeTokens.AddRange(BpeToken(convertedToken)); - } - - return bpeTokens; - } - - /// - /// Encode a token into BPE-ed sub-tokens. E.g., "playing" into ["play", "ing"]. - /// - private List BpeToken(string token) - { - var word = token.Select(c => c.ToString()).ToList(); - var pairs = WordToPairs(word); - - if (pairs.Count == 0) - { - return new List { token }; - } - - while (true) - { - /* while conditions */ - // if only one element left, merge is finished (with the whole word merged) - if (word.Count == 1) - { - break; - } - - // get the most frequent bi-gram pair - var (first, second) = pairs.ArgMin(pair => _mergeRanks[pair]); - if (!_mergeRanks.ContainsKey((first, second))) - { - break; - } - /* end while conditions */ - - // search and merge all (first, second) pairs in {word} - var newWord = new List(); - var i = 0; - while (i < word.Count) - { - // find the next occurrence of {first} and add the elements before into {newWord} - var j = word.IndexOf(first, i); - if (j == -1) - { - newWord.AddRange(word.Skip(i)); - break; - } - else - { - newWord.AddRange(word.Skip(i).Take(j - i)); - i = j; - } - - // check the next element is {second} or not - if (i < word.Count - 1 && word[i + 1] == second) - { - newWord.Add(first + second); - i += 2; - } - else - { - newWord.Add(word[i]); - i += 1; - } - } - - word = newWord; - - // otherwise, continue merging - pairs = WordToPairs(word); - } - - return word; - } - - /// - /// Extract element pairs in an aggregating word. E.g. [p, l, ay] into [(p,l), (l,ay)]. - /// If word contains 0 or 1 element, an empty HashSet will be returned. - /// - private static HashSet<(string, string)> WordToPairs(IReadOnlyList word) - { - var pairs = new HashSet<(string, string)>(); - if (word.Count <= 1) return pairs; - - var prevElem = word[0]; - foreach (var elem in word.Skip(1)) - { - pairs.Add((prevElem, elem)); - prevElem = elem; - } - - return pairs; - } - } -} diff --git a/src/Microsoft.ML.TorchSharp/NasBert/TextClassificationTrainer.cs b/src/Microsoft.ML.TorchSharp/NasBert/TextClassificationTrainer.cs index 8cd63f7c64..1ceb88f6cd 100644 --- a/src/Microsoft.ML.TorchSharp/NasBert/TextClassificationTrainer.cs +++ b/src/Microsoft.ML.TorchSharp/NasBert/TextClassificationTrainer.cs @@ -10,8 +10,8 @@ using Microsoft.ML.Data; using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Runtime; +using Microsoft.ML.Tokenizers; using Microsoft.ML.TorchSharp.NasBert.Models; -using Microsoft.ML.TorchSharp.NasBert.Preprocessing; using Microsoft.ML.Trainers; using Microsoft.ML.Transforms; using TorchSharp; @@ -27,6 +27,7 @@ using System.IO; using System.CodeDom; using System.Runtime.CompilerServices; +using Microsoft.ML.Data.IO; [assembly: LoadableClass(typeof(TextClassificationTransformer), null, typeof(SignatureLoadModel), TextClassificationTransformer.UserName, TextClassificationTransformer.LoaderSignature)] @@ -70,7 +71,6 @@ public sealed class TextClassificationTrainer : IEstimator p.requires_grad); Optimizer = BaseOptimizer.GetOptimizer(_parent._options, parameters); LearningRateScheduler = torch.optim.lr_scheduler.OneCycleLR( @@ -473,7 +477,7 @@ private bool ValidateStep(DataViewRowCursor cursor, using (torch.no_grad()) { - var inputTensor = DataUtils.CollateTokens(inputTensors, Tokenizer.Vocabulary.PadIndex, device: Device); + var inputTensor = DataUtils.CollateTokens(inputTensors, Tokenizer.RobertaModel().PadIndex, device: Device); var targetsTensor = tensor(targets, device: Device); var logits = Model.forward(inputTensor); var predictions = GetPredictions(logits); @@ -550,7 +554,7 @@ private bool TrainStep(DataViewRowCursor cursor, Optimizer.zero_grad(); - var inputTensor = DataUtils.CollateTokens(inputTensors, Tokenizer.Vocabulary.PadIndex, device: Device); + var inputTensor = DataUtils.CollateTokens(inputTensors, Tokenizer.RobertaModel().PadIndex, device: Device); var targetsTensor = tensor(targets, device: Device); var logits = Model.forward(inputTensor); var lossFunction = torch.nn.functional.cross_entropy_loss(reduction: _parent._options.Reduction); @@ -592,7 +596,7 @@ private torch.Tensor PrepareData(ValueGetter> sentence1Gett Tensor t; if (sentence2Getter == default) { - t = torch.tensor((new[] { BpeTokenizer.InitToken }).Concat(Tokenizer.EncodeToConverted(sentence1.ToString())).ToList(), device: Device); + t = torch.tensor((new[] { 0 /* InitToken */ }).Concat(Tokenizer.EncodeToConverted(sentence1.ToString())).ToList(), device: Device); } else { @@ -600,8 +604,8 @@ private torch.Tensor PrepareData(ValueGetter> sentence1Gett ReadOnlyMemory sentence2 = default; sentence2Getter(ref sentence2); - t = torch.tensor((new[] { BpeTokenizer.InitToken }).Concat(Tokenizer.EncodeToConverted(sentence1.ToString())) - .Concat(new[] { BpeTokenizer.SeperatorToken }).Concat(Tokenizer.EncodeToConverted(sentence2.ToString())).ToList(), device: Device); + t = torch.tensor((new[] { 0 /* InitToken */ }).Concat(Tokenizer.EncodeToConverted(sentence1.ToString())) + .Concat(new[] { 2 /* SeparatorToken */ }).Concat(Tokenizer.EncodeToConverted(sentence2.ToString())).ToList(), device: Device); } if (t.NumberOfElements > 512) @@ -668,7 +672,6 @@ public sealed class TextClassificationTransformer : RowToRowTransformerBase private readonly Device _device; private readonly TextClassificationModel _model; - private readonly Vocabulary _vocabulary; private readonly TextClassificationTrainer.Options _options; private readonly string _predictedLabelColumnName; @@ -676,23 +679,25 @@ public sealed class TextClassificationTransformer : RowToRowTransformerBase public readonly SchemaShape.Column SentenceColumn; public readonly SchemaShape.Column SentenceColumn2; - public readonly SchemaShape.Column LabelColumn; + public readonly DataViewSchema.DetachedColumn LabelColumn; internal const string LoaderSignature = "NASBERT"; - internal TextClassificationTransformer(IHostEnvironment env, TextClassificationTrainer.Options options, TextClassificationModel model, Vocabulary vocabulary) + private static readonly FuncStaticMethodInfo1 _decodeInitMethodInfo + = new FuncStaticMethodInfo1(DecodeInit); + + internal TextClassificationTransformer(IHostEnvironment env, TextClassificationTrainer.Options options, TextClassificationModel model, DataViewSchema.DetachedColumn labelColumn) : base(Contracts.CheckRef(env, nameof(env)).Register(nameof(TextClassificationTransformer))) { _device = TorchUtils.InitializeDevice(env); _options = options; - LabelColumn = new SchemaShape.Column(_options.LabelColumnName, SchemaShape.Column.VectorKind.Scalar, NumberDataViewType.UInt32, true); + LabelColumn = labelColumn; SentenceColumn = new SchemaShape.Column(_options.Sentence1ColumnName, SchemaShape.Column.VectorKind.Scalar, TextDataViewType.Instance, false); SentenceColumn2 = _options.Sentence2ColumnName == default ? default : new SchemaShape.Column(_options.Sentence2ColumnName, SchemaShape.Column.VectorKind.Scalar, TextDataViewType.Instance, false); _predictedLabelColumnName = _options.PredictionColumnName; _scoreColumnName = _options.ScoreColumnName; - _vocabulary = vocabulary; _model = model; if (_device == CUDA) @@ -728,15 +733,35 @@ private static TextClassificationTransformer Create(IHostEnvironment env, ModelL }; var ch = env.Start("Load Model"); - var tokenizer = BpeTokenizer.GetInstance(ch); - var vocabulary = tokenizer.Vocabulary; - vocabulary.AddMaskSymbol(); + var tokenizer = TokenizerExtensions.GetInstance(ch); + EnglishRoberta tokenizerModel = tokenizer.RobertaModel(); - var model = new TextClassificationModel(options, vocabulary, options.NumberOfClasses); + var model = new TextClassificationModel(options, tokenizerModel.PadIndex, tokenizerModel.SymbolsCount, options.NumberOfClasses); if (!ctx.TryLoadBinaryStream("TSModel", r => model.load(r))) throw env.ExceptDecode(); - return new TextClassificationTransformer(env, options, model, vocabulary); + BinarySaver saver = new BinarySaver(env, new BinarySaver.Arguments()); + DataViewType type; + object value; + env.CheckDecode(saver.TryLoadTypeAndValue(ctx.Reader.BaseStream, out type, out value)); + var vecType = type as VectorDataViewType; + env.CheckDecode(vecType != null); + env.CheckDecode(value != null); + var labelGetter = Microsoft.ML.Internal.Utilities.Utils.MarshalInvoke(_decodeInitMethodInfo, vecType.ItemType.RawType, value); + + var meta = new DataViewSchema.Annotations.Builder(); + meta.Add(AnnotationUtils.Kinds.KeyValues, type, labelGetter); + + var labelCol = new DataViewSchema.DetachedColumn(options.LabelColumnName, type, meta.ToAnnotations()); + + return new TextClassificationTransformer(env, options, model, labelCol); + } + + private static Delegate DecodeInit(object value) + { + VBuffer buffValue = (VBuffer)value; + ValueGetter> buffGetter = (ref VBuffer dst) => buffValue.CopyTo(ref dst); + return buffGetter; } public SchemaShape GetOutputSchema(SchemaShape inputSchema) @@ -744,8 +769,8 @@ public SchemaShape GetOutputSchema(SchemaShape inputSchema) Host.CheckValue(inputSchema, nameof(inputSchema)); CheckInputSchema(inputSchema); - inputSchema.TryFindColumn(LabelColumn.Name, out var labelCol); - var predLabelMetadata = new SchemaShape(labelCol.Annotations.Where(x => x.Name == AnnotationUtils.Kinds.KeyValues) + var labelAnnotationsColumn = new SchemaShape.Column(AnnotationUtils.Kinds.SlotNames, SchemaShape.Column.VectorKind.Vector, LabelColumn.Annotations.Schema[AnnotationUtils.Kinds.SlotNames].Type, false); + var predLabelMetadata = new SchemaShape(new SchemaShape.Column[] { labelAnnotationsColumn } .Concat(AnnotationUtils.GetTrainerOutputAnnotation())); var outColumns = inputSchema.ToDictionary(x => x.Name); @@ -753,7 +778,7 @@ public SchemaShape GetOutputSchema(SchemaShape inputSchema) NumberDataViewType.UInt32, true, predLabelMetadata); outColumns[_scoreColumnName] = new SchemaShape.Column(_scoreColumnName, SchemaShape.Column.VectorKind.Vector, - NumberDataViewType.Single, false, new SchemaShape(AnnotationUtils.AnnotationsForMulticlassScoreColumn(labelCol))); + NumberDataViewType.Single, false, new SchemaShape(AnnotationUtils.AnnotationsForMulticlassScoreColumn(labelAnnotationsColumn))); return new SchemaShape(outColumns.Values); } @@ -775,12 +800,6 @@ private void CheckInputSchema(SchemaShape inputSchema) throw Host.ExceptSchemaMismatch(nameof(inputSchema), "sentence2", SentenceColumn2.Name, SentenceColumn2.GetTypeString(), sentenceCol2.GetTypeString()); } - - if (!inputSchema.TryFindColumn(LabelColumn.Name, out var labelCol)) - throw Host.ExceptSchemaMismatch(nameof(inputSchema), "label", LabelColumn.Name); - if (!LabelColumn.IsCompatibleWith(labelCol)) - throw Host.ExceptSchemaMismatch(nameof(inputSchema), "label", LabelColumn.Name, - LabelColumn.GetTypeString(), labelCol.GetTypeString()); } private static VersionInfo GetVersionInfo() @@ -819,6 +838,22 @@ private protected override void SaveModel(ModelSaveContext ctx) { _model.save(w); }); + + var labelColType = LabelColumn.Annotations.Schema[AnnotationUtils.Kinds.KeyValues].Type as VectorDataViewType; + Microsoft.ML.Internal.Utilities.Utils.MarshalActionInvoke(SaveLabelValues, labelColType.ItemType.RawType, ctx); + } + + private void SaveLabelValues(ModelSaveContext ctx) + { + ValueGetter> getter = LabelColumn.Annotations.GetGetter>(LabelColumn.Annotations.Schema[AnnotationUtils.Kinds.KeyValues]); + var val = default(VBuffer); + getter(ref val); + + BinarySaver saver = new BinarySaver(Host, new BinarySaver.Arguments()); + int bytesWritten; + var labelColType = LabelColumn.Annotations.Schema[AnnotationUtils.Kinds.KeyValues].Type as VectorDataViewType; + if (!saver.TryWriteTypeAndValue>(ctx.Writer.BaseStream, labelColType, ref val, out bytesWritten)) + throw Host.Except("We do not know how to serialize label names of type '{0}'", labelColType.ItemType); } private protected override IRowMapper MakeRowMapper(DataViewSchema schema) => new Mapper(this, schema); @@ -827,25 +862,24 @@ private sealed class Mapper : MapperBase { private readonly TextClassificationTransformer _parent; private readonly HashSet _inputColIndices; - private readonly DataViewSchema.Column _labelCol; private readonly DataViewSchema _inputSchema; - private static readonly FuncInstanceMethodInfo1 _makeLabelAnnotationGetter - = FuncInstanceMethodInfo1.Create(target => target.GetLabelAnnotations); + + private static readonly FuncInstanceMethodInfo1 _makeLabelAnnotationGetter + = FuncInstanceMethodInfo1.Create(target => target.GetLabelAnnotations); + public Mapper(TextClassificationTransformer parent, DataViewSchema inputSchema) : base(Contracts.CheckRef(parent, nameof(parent)).Host.Register(nameof(Mapper)), inputSchema, parent) { _parent = parent; _inputColIndices = new HashSet(); - int col = 0; - if (inputSchema.TryGetColumnIndex(parent._options.Sentence1ColumnName, out col)) + if (inputSchema.TryGetColumnIndex(parent._options.Sentence1ColumnName, out var col)) _inputColIndices.Add(col); if (parent._options.Sentence2ColumnName != default) if (inputSchema.TryGetColumnIndex(parent._options.Sentence2ColumnName, out col)) _inputColIndices.Add(col); - _labelCol = inputSchema[_parent._options.LabelColumnName]; _inputSchema = inputSchema; torch.random.manual_seed(1); @@ -855,8 +889,9 @@ public Mapper(TextClassificationTransformer parent, DataViewSchema inputSchema) protected override DataViewSchema.DetachedColumn[] GetOutputColumnsCore() { var info = new DataViewSchema.DetachedColumn[2]; - var keyType = _labelCol.Annotations.Schema.GetColumnOrNull(AnnotationUtils.Kinds.KeyValues)?.Type as VectorDataViewType; - var getter = Microsoft.ML.Internal.Utilities.Utils.MarshalInvoke(_makeLabelAnnotationGetter, this, keyType.ItemType.RawType); + var keyType = _parent.LabelColumn.Annotations.Schema.GetColumnOrNull(AnnotationUtils.Kinds.KeyValues)?.Type as VectorDataViewType; + var getter = Microsoft.ML.Internal.Utilities.Utils.MarshalInvoke(_makeLabelAnnotationGetter, this, keyType.ItemType.RawType, _parent.LabelColumn); + var meta = new DataViewSchema.Annotations.Builder(); meta.Add(AnnotationUtils.Kinds.ScoreColumnKind, TextDataViewType.Instance, (ref ReadOnlyMemory value) => { value = AnnotationUtils.Const.ScoreColumnKind.MulticlassClassification.AsMemory(); }); @@ -865,15 +900,18 @@ protected override DataViewSchema.DetachedColumn[] GetOutputColumnsCore() meta.Add(AnnotationUtils.Kinds.TrainingLabelValues, keyType, getter); meta.Add(AnnotationUtils.Kinds.SlotNames, keyType, getter); - info[0] = new DataViewSchema.DetachedColumn(_parent._options.PredictionColumnName, new KeyDataViewType(typeof(uint), _parent._options.NumberOfClasses), _labelCol.Annotations); + var labelBuilder = new DataViewSchema.Annotations.Builder(); + labelBuilder.Add(AnnotationUtils.Kinds.KeyValues, keyType, getter); + + info[0] = new DataViewSchema.DetachedColumn(_parent._options.PredictionColumnName, new KeyDataViewType(typeof(uint), _parent._options.NumberOfClasses), labelBuilder.ToAnnotations()); info[1] = new DataViewSchema.DetachedColumn(_parent._options.ScoreColumnName, new VectorDataViewType(NumberDataViewType.Single, _parent._options.NumberOfClasses), meta.ToAnnotations()); return info; } - private Delegate GetLabelAnnotations() + private Delegate GetLabelAnnotations(DataViewSchema.DetachedColumn labelCol) { - return _labelCol.Annotations.GetGetter>(_labelCol.Annotations.Schema[AnnotationUtils.Kinds.KeyValues]); + return labelCol.Annotations.GetGetter>(labelCol.Annotations.Schema[AnnotationUtils.Kinds.KeyValues]); } private ValueGetter GetScoreColumnSetId(DataViewSchema schema) @@ -926,7 +964,7 @@ private Delegate MakeScoreGetter(DataViewRow input, IChannel ch, TensorCacher ou ValueGetter> getSentence1 = default; ValueGetter> getSentence2 = default; - BpeTokenizer tokenizer = BpeTokenizer.GetInstance(ch); + Tokenizer tokenizer = TokenizerExtensions.GetInstance(ch); getSentence1 = input.GetGetter>(input.Schema[_parent.SentenceColumn.Name]); if (_parent.SentenceColumn2.IsValid) @@ -939,7 +977,7 @@ private Delegate MakeScoreGetter(DataViewRow input, IChannel ch, TensorCacher ou { using var disposeScope = torch.NewDisposeScope(); var editor = VBufferEditor.Create(ref dst, _parent._options.NumberOfClasses); - UpdateCacheIfNeeded(input.Position, outputCacher, ref sentence1, ref sentence2, ref getSentence1, ref getSentence2, ref tokenizer); + UpdateCacheIfNeeded(input.Position, outputCacher, ref sentence1, ref sentence2, ref getSentence1, ref getSentence2, tokenizer); var values = outputCacher.Result.cpu().ToArray(); for (var i = 0; i < values.Length; i++) @@ -957,7 +995,7 @@ private Delegate MakePredictedLabelGetter(DataViewRow input, IChannel ch, Tensor ValueGetter> getSentence1 = default; ValueGetter> getSentence2 = default; - BpeTokenizer tokenizer = BpeTokenizer.GetInstance(ch); + Tokenizer tokenizer = TokenizerExtensions.GetInstance(ch); getSentence1 = input.GetGetter>(input.Schema[_parent.SentenceColumn.Name]); if (_parent.SentenceColumn2.IsValid) @@ -969,25 +1007,25 @@ private Delegate MakePredictedLabelGetter(DataViewRow input, IChannel ch, Tensor ValueGetter classification = (ref UInt32 dst) => { using var disposeScope = torch.NewDisposeScope(); - UpdateCacheIfNeeded(input.Position, outputCacher, ref sentence1, ref sentence2, ref getSentence1, ref getSentence2, ref tokenizer); + UpdateCacheIfNeeded(input.Position, outputCacher, ref sentence1, ref sentence2, ref getSentence1, ref getSentence2, tokenizer); dst = (UInt32)outputCacher.Result.argmax(-1).cpu().item() + 1; }; return classification; } - private IList PrepInputTokens(ref ReadOnlyMemory sentence1, ref ReadOnlyMemory sentence2, ref ValueGetter> getSentence1, ref ValueGetter> getSentence2, ref BpeTokenizer tokenizer) + private IList PrepInputTokens(ref ReadOnlyMemory sentence1, ref ReadOnlyMemory sentence2, ref ValueGetter> getSentence1, ref ValueGetter> getSentence2, Tokenizer tokenizer) { getSentence1(ref sentence1); if (getSentence2 == default) { - return new[] { BpeTokenizer.InitToken }.Concat(tokenizer.EncodeToConverted(sentence1.ToString())).ToList(); + return new[] { 0 /* InitToken */ }.Concat(tokenizer.EncodeToConverted(sentence1.ToString())).ToList(); } else { getSentence2(ref sentence2); - return new[] { BpeTokenizer.InitToken }.Concat(tokenizer.EncodeToConverted(sentence1.ToString())) - .Concat(new[] { BpeTokenizer.SeperatorToken }).Concat(tokenizer.EncodeToConverted(sentence2.ToString())).ToList(); + return new[] { 0 /* InitToken */ }.Concat(tokenizer.EncodeToConverted(sentence1.ToString())) + .Concat(new[] { 2 /* SeperatorToken */ }).Concat(tokenizer.EncodeToConverted(sentence2.ToString())).ToList(); } } @@ -1026,12 +1064,12 @@ public void Dispose() } } - private void UpdateCacheIfNeeded(long position, TensorCacher outputCache, ref ReadOnlyMemory sentence1, ref ReadOnlyMemory sentence2, ref ValueGetter> getSentence1, ref ValueGetter> getSentence2, ref BpeTokenizer tokenizer) + private void UpdateCacheIfNeeded(long position, TensorCacher outputCache, ref ReadOnlyMemory sentence1, ref ReadOnlyMemory sentence2, ref ValueGetter> getSentence1, ref ValueGetter> getSentence2, Tokenizer tokenizer) { if (outputCache.Position != position) { outputCache.Result?.Dispose(); - outputCache.Result = PrepAndRunModel(PrepInputTokens(ref sentence1, ref sentence2, ref getSentence1, ref getSentence2, ref tokenizer)); + outputCache.Result = PrepAndRunModel(PrepInputTokens(ref sentence1, ref sentence2, ref getSentence1, ref getSentence2, tokenizer)); outputCache.Result.MoveToOuterDisposeScope(); outputCache.Position = position; } diff --git a/src/Microsoft.ML.TorchSharp/NasBert/Vocabulary.cs b/src/Microsoft.ML.TorchSharp/NasBert/Vocabulary.cs deleted file mode 100644 index e3f054174f..0000000000 --- a/src/Microsoft.ML.TorchSharp/NasBert/Vocabulary.cs +++ /dev/null @@ -1,209 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using Microsoft.ML.TorchSharp.Extensions; -using TorchSharp; - -namespace Microsoft.ML.TorchSharp.NasBert -{ - internal sealed class Vocabulary - { - public const int NumSpecialSymbols = 4; - - public string PadWord { get; } - public string EosWord { get; } - public string UnkWord { get; } - public string BosWord { get; } - - public int PadIndex { get; } - public int EosIndex { get; } - public int UnkIndex { get; } - public int BosIndex { get; } - - public string MaskWord { get; private set; } - public int MaskIndex { get; private set; } - - private readonly List _symbols; - private readonly Dictionary _indices; - private readonly List _counter; - - public IReadOnlyDictionary Indices => _indices; - public IReadOnlyList Counter => _counter; - - /// Any of `pad`, `eos`, `unk` and `bos` is `null`. - public Vocabulary(string pad = "", string eos = "", string unk = "", string bos = "", - string[] extraSpecialSymbols = null) - { - _indices = new Dictionary(); - _counter = new List(); - _symbols = new List(); - - PadWord = pad; - EosWord = eos; - UnkWord = unk; - BosWord = bos; - BosIndex = AddSymbol(bos); - PadIndex = AddSymbol(pad); - EosIndex = AddSymbol(eos); - UnkIndex = AddSymbol(unk); - - if (extraSpecialSymbols != null) - { - foreach (var symbol in extraSpecialSymbols) - { - AddSymbol(symbol); - } - } - } - - /// - /// Add a word to the vocabulary. - /// - /// `word` is `null`. - public int AddSymbol(string word, int n = 1) - { - if (word == null) - { - throw new ArgumentNullException(nameof(word), $"argument {nameof(word)} should not be null."); - } - - int idx; - if (_indices.ContainsKey(word)) - { - idx = _indices[word]; - _counter[idx] += n; - } - else - { - idx = _symbols.Count; - _indices[word] = idx; - _symbols.Add(word); - _counter.Add(n); - } - - return idx; - } - - public int AddMaskSymbol(string mask = "") - { - MaskWord = mask; - MaskIndex = AddSymbol(mask); - return MaskIndex; - } - - /// `idx` is negative. - public string this[int idx] - { - get - { - if (idx < 0) - { - throw new ArgumentOutOfRangeException(nameof(idx), $"Index should be non-negative, got {idx}."); - } - - return idx < _symbols.Count ? _symbols[idx] : UnkWord; - } - } - - public int Count => _symbols.Count; - - public bool Equals(Vocabulary other) => _indices.SequenceEqual(other._indices); - - public bool Contains(string symbol) => symbol != null && _indices.ContainsKey(symbol); - - /// `symbol` is `null`. - public int IndexOf(string symbol) => _indices.ContainsKey(symbol) ? _indices[symbol] : UnkIndex; - - /// - /// Convert a tensor of token indices to a string. - /// Can optionally remove BPE symbols or escape "<unk>" words. - /// - public string Tensor2String(torch.Tensor tensor, string bpeSymbol = null, bool escapeUnk = false) - { - if (tensor.IsNull()) return string.Empty; - bpeSymbol ??= ""; - - List subStrings; - - if (tensor.dim() == 2) - { - subStrings = Enumerable.Range(0, (int)tensor.shape[0]) - .Select(i => Tensor2String(tensor[i], bpeSymbol, escapeUnk)) - .ToList(); - return string.Join("\n", subStrings); - } - - subStrings = Enumerable.Range(0, (int)tensor.shape[0]) - .Select(i => _symbols[i]) - .ToList(); - var sentence = string.Join(" ", subStrings); - return ProcessBpeSymbol(sentence, bpeSymbol); - } - - private static string ProcessBpeSymbol(string sentence, string bpeSymbol) - { - if (bpeSymbol == "sentencepiece") - sentence = sentence.Replace(" ", "").Replace("\u2581", " ").Trim(); - if (bpeSymbol != null) - sentence = (sentence + " ").Replace(bpeSymbol, "").TrimEnd(); - return sentence; - } - - /// - /// Updates vocabulary from new vocabulary. - /// - public void Update(Vocabulary newVocabulary) - { - foreach (var pair in newVocabulary.Indices) - { - AddSymbol(pair.Key, newVocabulary.Counter[pair.Value]); - } - } - - /// - /// Loads the vocabulary from a text file with the format: - /// <symbol0> <count0> - /// <symbol1> <count1> - /// ... - /// - public static Vocabulary Load(string fileName) - { - var vocabulary = new Vocabulary(); - vocabulary.AddFromFile(fileName); - return vocabulary; - } - - /// - /// Loads a pre-existing vocabulary from a text file and adds its symbols to this instance. - /// - public void AddFromFile(string fileName) - { - var lines = File.ReadAllLines(fileName, Encoding.UTF8); - - foreach (var line in lines) - { - var splitLine = line.Trim().Split(' '); - if (splitLine.Length != 2) - { - throw new ArgumentException("Incorrect vocabulary format, expected \" \""); - } - - var word = splitLine[0]; - if (int.TryParse(splitLine[1], out var count)) - { - AddSymbol(word, count); - } - else - { - throw new ArgumentException($"Cannot parse {splitLine[1]} as an integer. File line: \"{line}\"."); - } - } - } - } -} diff --git a/src/Microsoft.ML.XGBoost/Microsoft.ML.XGBoost.csproj b/src/Microsoft.ML.XGBoost/Microsoft.ML.XGBoost.csproj new file mode 100644 index 0000000000..732ebdf14b --- /dev/null +++ b/src/Microsoft.ML.XGBoost/Microsoft.ML.XGBoost.csproj @@ -0,0 +1,33 @@ + + + + + netstandard2.0 + Microsoft.ML.XGBoost + true + ML.NET component for XGBoost + + + + + + + + all + + + all + + + all + + + + + + + + + diff --git a/src/Microsoft.ML.XGBoost/Properties/AssemblyInfo.cs b/src/Microsoft.ML.XGBoost/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..9d1bb36754 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/Properties/AssemblyInfo.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Runtime.CompilerServices; +using Microsoft.ML; + +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Tests" + PublicKey.TestValue)] +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Predictor.Tests" + PublicKey.Value)] + +[assembly: InternalsVisibleTo(assemblyName: "RunTests" + InternalPublicKey.Value)] + +[assembly: WantsToBeBestFriends] diff --git a/src/Microsoft.ML.XGBoost/WrappedXGBoostInterface.cs b/src/Microsoft.ML.XGBoost/WrappedXGBoostInterface.cs new file mode 100644 index 0000000000..5562931f6f --- /dev/null +++ b/src/Microsoft.ML.XGBoost/WrappedXGBoostInterface.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Runtime.InteropServices; +using System.Runtime; +using System.Text; + +namespace Microsoft.ML.Trainers.XGBoost +{ + /// + /// Wrapper of the c interfaces of XGBoost + /// Refer to https://xgboost.readthedocs.io/en/stable/tutorials/c_api_tutorial.html to get the details. + /// + + internal static class WrappedXGBoostInterface + { + + private const string DllName = "xgboost"; + + [DllImport(DllName)] + public static extern void XGBoostVersion(out int major, out int minor, out int patch); + + #region Error API + + [DllImport(DllName)] + public static extern string XGBGetLastError(); + + #endregion + + #region DMatrix API + + [DllImport(DllName)] + public static extern int XGDMatrixCreateFromMat(float[] data, ulong nrow, ulong ncol, + float missing, out IntPtr handle); + + [DllImport(DllName)] + public static extern int XGDMatrixFree(IntPtr handle); + + [DllImport(DllName)] + public static extern int XGDMatrixNumRow(IntPtr handle, out ulong nrows); + + [DllImport(DllName)] + public static extern int XGDMatrixNumCol(IntPtr handle, out ulong ncols); + + [DllImport(DllName)] + public static extern int XGDMatrixGetFloatInfo(IntPtr handle, string field, + out ulong len, out IntPtr result); + + [DllImport(DllName)] + public static extern int XGDMatrixSetFloatInfo(IntPtr handle, string field, + IntPtr array, ulong len); + #endregion + + + #region API Booster + + [DllImport(DllName)] + public static extern int XGBoosterCreate(IntPtr[] dmats, + ulong len, out IntPtr handle); + + [DllImport(DllName)] + public static extern int XGBoosterFree(IntPtr handle); + + [DllImport(DllName)] + public static extern int XGBoosterSetParam(IntPtr handle, string name, string val); + + #endregion + + + #region API train + [DllImport(DllName)] + public static extern int XGBoosterUpdateOneIter(IntPtr bHandle, int iter, + IntPtr dHandle); + + [DllImport(DllName)] + public static extern int XGBoosterEvalOneIter(); + #endregion + + #region API predict + [DllImport(DllName)] + public static extern int XGBoosterPredict(IntPtr bHandle, IntPtr dHandle, + int optionMask, int ntreeLimit, int training, + out ulong predsLen, out IntPtr predsPtr); + #endregion + + #region API serialization + [DllImport(DllName)] + public static extern int XGBoosterDumpModel(IntPtr handle, string fmap, int with_stats, out int out_len, out IntPtr dumpStr); + + [DllImport(DllName)] + public static extern int XGBoosterDumpModelEx(IntPtr handle, string fmap, int with_stats, string format, out int out_len, out IntPtr dumpStr); + #endregion + + } + + internal static class XGBoostInterfaceUtils + { + /// + /// Checks if XGBoost has a pending error message. Raises an exception in that case. + /// + public static void Check(int res) + { + if (res != 0) + { + string mes = WrappedXGBoostInterface.XGBGetLastError(); + throw new Exception($"XGBoost Error, code is {res}, error message is '{mes}'."); + } + } + + public static float[] GetPredictionsArray(IntPtr predsPtr, ulong predsLen) + { + var length = unchecked((int)predsLen); + var preds = new float[length]; + for (var i = 0; i < length; i++) + { + var floatBytes = new byte[4]; + for (var b = 0; b < 4; b++) + { + floatBytes[b] = Marshal.ReadByte(predsPtr, 4*i + b); + } + preds[i] = BitConverter.ToSingle(floatBytes, 0); + } + return preds; + } + } +} diff --git a/src/Microsoft.ML.XGBoost/WrappedXGBoostTraining.cs b/src/Microsoft.ML.XGBoost/WrappedXGBoostTraining.cs new file mode 100644 index 0000000000..5b36ab53d3 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/WrappedXGBoostTraining.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; + +namespace Microsoft.ML.Trainers.XGBoost +{ + /// + /// Helpers to train a booster with given parameters. + /// Follows the `xgboost.train` Python API design + /// + #if false + internal + #else + public + #endif + static class WrappedXGBoostTraining + { + /// + /// Train and return a booster. + /// + internal static Booster Train( + #if false + IChannel ch, IProgressChannel pch, + #endif + Dictionary parameters, DMatrix dtrain, int numIteration = 100 + #if false +, bool verboseEval = true, int earlyStoppingRound = 0 + #endif + ) + { + + // create Booster. + Booster bst = new Booster(parameters, dtrain); + +#if false + ch.Info("Starting training."); +#endif + + int iter = 0; + + for (iter = 0; iter < numIteration; ++iter) + { + bst.Update(dtrain, iter); + } + + return bst; + + } + } +} diff --git a/src/Microsoft.ML.XGBoost/WrappedXGBooster.cs b/src/Microsoft.ML.XGBoost/WrappedXGBooster.cs new file mode 100644 index 0000000000..df65cbca14 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/WrappedXGBooster.cs @@ -0,0 +1,274 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Runtime.InteropServices; +using System.Text; + +namespace Microsoft.ML.Trainers.XGBoost +{ + /// + /// Wrapper of Booster object of XGBoost. + /// + internal class Booster : IDisposable + { + + private bool disposed; + private readonly IntPtr _handle; + private const int normalPrediction = 0; // Value for the optionMask in prediction +#pragma warning disable CS0414 + private int numClass = 1; +#pragma warning restore CS0414 + + public IntPtr Handle => _handle; + + public Booster(Dictionary parameters, DMatrix trainDMatrix) + { + var dmats = new [] { trainDMatrix.Handle }; + var len = unchecked((ulong)dmats.Length); + var errp = WrappedXGBoostInterface.XGBoosterCreate(dmats, len, out _handle); + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + SetParameters(parameters); + } + + public Booster(DMatrix trainDMatrix) + { + var dmats = new [] { trainDMatrix.Handle }; + var len = unchecked((ulong)dmats.Length); + var errp = WrappedXGBoostInterface.XGBoosterCreate(dmats, len, out _handle); + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + } + + public void Update(DMatrix train, int iter) + { + var errp = WrappedXGBoostInterface.XGBoosterUpdateOneIter(_handle, iter, train.Handle); + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + } + + public float[] Predict(DMatrix test) + { + ulong predsLen; + IntPtr predsPtr; +/* +allowed values of optionmask: + 0:normal prediction + 1:output margin instead of transformed value + 2:output leaf index of trees instead of leaf value, note leaf index is unique per tree + 4:output feature contributions to individual predictions + +// using `0` for ntreeLimit means use all the trees +*/ + + var errp = WrappedXGBoostInterface.XGBoosterPredict(_handle, test.Handle, 0, 0, 0, out predsLen, out predsPtr); + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + return XGBoostInterfaceUtils.GetPredictionsArray(predsPtr, predsLen); + } + +#if false + // Should enable XGBoosterSaveModelToBuffer + [BestFriend] + internal unsafe string GetModelString() + { + int bufLen = 2 << 15; + byte[] buffer = new byte[bufLen]; + int size = 0; + fixed (byte* ptr = buffer) + LightGbmInterfaceUtils.Check(WrappedLightGbmInterface.BoosterSaveModelToString(Handle, 0, BestIteration, bufLen, ref size, ptr)); + // If buffer size is not enough, reallocate buffer and get again. + if (size > bufLen) + { + bufLen = size; + buffer = new byte[bufLen]; + fixed (byte* ptr = buffer) + LightGbmInterfaceUtils.Check(WrappedLightGbmInterface.BoosterSaveModelToString(Handle, 0, BestIteration, bufLen, ref size, ptr)); + } + byte[] content = new byte[size]; + Array.Copy(buffer, content, size); + fixed (byte* ptr = content) + return LightGbmInterfaceUtils.GetString((IntPtr)ptr); + } +#endif + + public void SetParameters(Dictionary parameters) + { + // support internationalisation i.e. support floats with commas (e.g. 0,5F) + var nfi = new NumberFormatInfo { NumberDecimalSeparator = "." }; + + SetParameter("max_depth", ((int)parameters["max_depth"]).ToString()); + SetParameter("learning_rate", ((float)parameters["learning_rate"]).ToString(nfi)); + SetParameter("n_estimators", ((int)parameters["n_estimators"]).ToString()); + SetParameter("silent", ((bool)parameters["silent"]).ToString()); + SetParameter("objective", (string)parameters["objective"]); + SetParameter("booster", (string)parameters["booster"]); + SetParameter("tree_method", (string)parameters["tree_method"]); + + SetParameter("nthread", ((int)parameters["nthread"]).ToString()); + SetParameter("gamma", ((float)parameters["gamma"]).ToString(nfi)); + SetParameter("min_child_weight", ((int)parameters["min_child_weight"]).ToString()); + SetParameter("max_delta_step", ((int)parameters["max_delta_step"]).ToString()); + SetParameter("subsample", ((float)parameters["subsample"]).ToString(nfi)); + SetParameter("colsample_bytree", ((float)parameters["colsample_bytree"]).ToString(nfi)); + SetParameter("colsample_bylevel", ((float)parameters["colsample_bylevel"]).ToString(nfi)); + SetParameter("reg_alpha", ((float)parameters["reg_alpha"]).ToString(nfi)); + SetParameter("reg_lambda", ((float)parameters["reg_lambda"]).ToString(nfi)); + SetParameter("scale_pos_weight", ((float)parameters["scale_pos_weight"]).ToString(nfi)); + + SetParameter("base_score", ((float)parameters["base_score"]).ToString(nfi)); + SetParameter("seed", ((int)parameters["seed"]).ToString()); + SetParameter("missing", ((float)parameters["missing"]).ToString(nfi)); + + SetParameter("sample_type", (string)parameters["sample_type"]); + SetParameter("normalize_type ", (string)parameters["normalize_type"]); + SetParameter("rate_drop", ((float)parameters["rate_drop"]).ToString(nfi)); + SetParameter("one_drop", ((int)parameters["one_drop"]).ToString()); + SetParameter("skip_drop", ((float)parameters["skip_drop"]).ToString(nfi)); + + if (parameters.TryGetValue("num_class",out var value)) + { + numClass = (int)value; + SetParameter("num_class", numClass.ToString()); + } + + } + + public void SetParameter(string name, string val) + { + var errp = WrappedXGBoostInterface.XGBoosterSetParam(_handle, name, val); + + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + } + +#region Create Models + + public string[] DumpModelEx(string fmap, int with_stats, string format) + { + int length; + IntPtr treePtr; + var intptrSize = IntPtr.Size; + + WrappedXGBoostInterface.XGBoosterDumpModelEx(_handle, fmap, with_stats, format, out length, out treePtr); + + var trees = new string[length]; + int readSize = 0; + var handle2 = GCHandle.Alloc(treePtr, GCHandleType.Pinned); + + //iterate through the length of the tree ensemble and pull the strings out from the returned pointer's array of pointers. prepend python's api convention of adding booster[i] to the beginning of the tree + for (var i = 0; i < length; i++) + { + var ipt1 = Marshal.ReadIntPtr(Marshal.ReadIntPtr(handle2.AddrOfPinnedObject()), intptrSize * i); + string s = Marshal.PtrToStringAnsi(ipt1); + trees[i] = string.Format("booster[{0}]\n{1}", i, s); + var bytesToRead = (s.Length * 2) + IntPtr.Size; + readSize += bytesToRead; + } + handle2.Free(); + return trees; + } + + public void GetModel() + { + var ss = DumpModelEx("", with_stats: 0, format : "json"); + var boosterPattern = @"^booster\[\d+\]"; + List ensemble = new List(); // should probably return this + + for (int i = 0; i < ss.Length; i++){ + var m = Regex.Matches(ss[i], boosterPattern, RegexOptions.IgnoreCase); + if ((m.Count >= 1) && (m[0].Groups.Count >=1)) { + // every booster representation should match + var structString = ss[i].Substring(m[0].Groups[0].Value.Length); + var doc = JsonDocument.Parse(structString); + TreeNode t = TreeNode.Create(doc.RootElement); + ensemble.Add(t); + } + } + + } + + private class TablePopulator + { + public Dictionary> dict = new(); + public Dictionary nodes = new(); + public Dictionary lte = new(); + public Dictionary gt = new(); + + public TablePopulator(JsonElement elm) + { + PopulateTable(elm, 0); + } + + public void PopulateTable(JsonElement elm, int level) + { + string nodeId = ""; + if (elm.TryGetProperty("nodeid", out JsonElement nodeidElm)) { + // If this test fails, should probably bail, as the syntax of the booster is incorrect + nodeId = nodeidElm.ToString(); + nodes.Add(nodeId, level); + } + + if (!dict.ContainsKey(level)) { + dict.Add(level, new List()); + } + + if (elm.TryGetProperty("leaf", out JsonElement leafJsonNode)) { + dict[level].Add(elm); + } else if (elm.TryGetProperty("children", out JsonElement internalJsonNode)) { + dict[level].Add(elm); + if (elm.TryGetProperty("yes", out JsonElement yesNodeId)) { + lte.Add(nodeId, yesNodeId.ToString()); + } + + if (elm.TryGetProperty("no", out JsonElement noNodeId)) { + gt.Add(nodeId, noNodeId.ToString()); + } + + foreach(var e in internalJsonNode.EnumerateArray()) { + PopulateTable(e, level + 1); + } + } else { + throw new Exception("Invalid booster content"); + } + } + } +#endregion + + #region IDisposable Support + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (disposed) + { + return; + } + WrappedXGBoostInterface.XGBoosterFree(_handle); + disposed = true; + } + #endregion + } +} diff --git a/src/Microsoft.ML.XGBoost/WrappedXGDMatrix.cs b/src/Microsoft.ML.XGBoost/WrappedXGDMatrix.cs new file mode 100644 index 0000000000..a28ae89863 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/WrappedXGDMatrix.cs @@ -0,0 +1,93 @@ +using System; +using System.Runtime.InteropServices; + +namespace Microsoft.ML.Trainers.XGBoost +{ + /// + /// Wrapper of DMatrix object of XGBoost + /// + internal sealed class DMatrix : IDisposable + { + private bool disposed = false; + private IntPtr _handle; + public IntPtr Handle => _handle; + private const float Missing = 0f; + + /// + /// Create a for storing training and prediction data under XGBoost framework. + public unsafe DMatrix(float[] data, uint nrows, uint ncols, float[]? labels = null) + { + int errp = WrappedXGBoostInterface.XGDMatrixCreateFromMat(data, nrows, ncols, Missing, out _handle); + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + + if (labels != null) { + SetLabel(labels); + } + + } + + public ulong GetNumRows() + { + ulong numRows; + int errp = WrappedXGBoostInterface.XGDMatrixNumRow(_handle, out numRows); + if (errp == -1) { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + return numRows; + } + + public ulong GetNumCols() + { + ulong numCols; + int errp = WrappedXGBoostInterface.XGDMatrixNumCol(_handle, out numCols); + if (errp == -1) { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + return numCols; + } + + public unsafe void SetLabel(float[] labels) + { + #if false + Contracts.AssertValue(labels); + Contracts.Assert(labels.Length == GetNumRows()); + #endif + fixed (float* ptr = labels) { + int errp = WrappedXGBoostInterface.XGDMatrixSetFloatInfo(_handle, "label", (IntPtr)ptr, (ulong)labels.Length); + if (errp == -1) { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + void Dispose(bool disposing) + { + if (disposed) + { + return; + } + + int errp = WrappedXGBoostInterface.XGDMatrixFree(_handle); + if (errp == -1) + { + string reason = WrappedXGBoostInterface.XGBGetLastError(); + throw new XGBoostDLLException(reason); + } + disposed = true; + + } + } +} diff --git a/src/Microsoft.ML.XGBoost/XGBoostBinaryClassifierEstimator.cs b/src/Microsoft.ML.XGBoost/XGBoostBinaryClassifierEstimator.cs new file mode 100644 index 0000000000..8f002598ca --- /dev/null +++ b/src/Microsoft.ML.XGBoost/XGBoostBinaryClassifierEstimator.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.ML; +using Microsoft.ML.CommandLine; +using Microsoft.ML.Data; +using Microsoft.ML.EntryPoints; +using Microsoft.ML.Internal.Utilities; +using Microsoft.ML.Model.OnnxConverter; +using Microsoft.ML.Runtime; +using Microsoft.ML.Transforms; + +namespace Microsoft.ML.Trainers.XGBoost +{ + internal static class Defaults + { + public const int NumberOfIterations = 100; + } + + public sealed class XGBoostBinaryClassificationTransformer : OneToOneTransformerBase + { + private Booster _booster; + private int _numColumns; + + internal XGBoostBinaryClassificationTransformer(IHost host, Booster booster, params (string outputColumnName, string inputColumnName)[] columns) : base(host, columns) + { + _booster = booster; + _numColumns = columns.Length; + } + + internal XGBoostBinaryClassificationTransformer(IHost host, ModelLoadContext ctx) : base(host, ctx) + { + } + + private protected override IRowMapper MakeRowMapper(DataViewSchema schema) => new Mapper(this, schema); + + private protected override void SaveModel(ModelSaveContext ctx) + { + Host.CheckValue(ctx, nameof(ctx)); + } + + private sealed class Mapper : OneToOneMapperBase, ISaveAsOnnx + { + private readonly XGBoostBinaryClassificationTransformer _parent; + private readonly int _numColumns; + public Mapper(XGBoostBinaryClassificationTransformer parent, DataViewSchema inputSchema) + : base(parent.Host.Register(nameof(Mapper)), parent, inputSchema) + { + _parent = parent; + _numColumns = _parent._numColumns; + } + + public bool CanSaveOnnx(OnnxContext ctx) => true; + + public void SaveAsOnnx(OnnxContext ctx) + { + throw new NotImplementedException(); + } + + protected override DataViewSchema.DetachedColumn[] GetOutputColumnsCore() + { + var result = new DataViewSchema.DetachedColumn[_numColumns]; + for (int i = 0; i < _numColumns; i++) + result[i] = new DataViewSchema.DetachedColumn("PredictedLabel", NumberDataViewType.Int16, null); + return result; + } + + protected override Delegate MakeGetter(DataViewRow input, int iinfo, Func activeOutput, out Action disposer) + { + Contracts.AssertValue(input); + Contracts.Assert(0 <= iinfo && iinfo < _numColumns); + disposer = null; + + var srcGetter = input.GetGetter>(input.Schema[ColMapNewToOld[iinfo]]); + var src = default(VBuffer); + + ValueGetter> dstGetter = (ref VBuffer dst) => + { + srcGetter(ref src); + Predict(Host, in src, ref dst); + }; + + return dstGetter; + } + + private void Predict(IExceptionContext ectx, in VBuffer src, ref VBuffer dst) + { + #if false + dst = _parent._booster.Predict(src); + #else + dst = new VBuffer(); + #endif + } + + } + } + + public sealed class XGBoostBinaryClassificationEstimator : IEstimator + { + private readonly IHost _host; + + public sealed class Options : TrainerInputBase + { + /// + /// Maximum tree depth for base learners + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum tree depth for base learners.", ShortName = "us")] + public int MaxDepth = 3; + } + + public XGBoostBinaryClassificationEstimator(IHost host, XGBoostBinaryClassificationTransformer transformer) { + _host = Contracts.CheckRef(host, nameof(host)).Register(nameof(XGBoostBinaryClassificationEstimator)); + } + + public XGBoostBinaryClassificationEstimator(IHostEnvironment env, string labelColumnName, string featureColumnName, int? numberOfLeaves, int? minimumExampleCountPerLeaf, double? learningRate, int? numberOfIterations) + { + _host = Contracts.CheckRef(env, nameof(env)).Register(nameof(XGBoostBinaryClassificationEstimator)); + } + + public XGBoostBinaryClassificationTransformer Fit(IDataView input) + { + var featuresColumn = input.Schema["Features"]; + var labelColumn = input.Schema["Label"]; + int featureDimensionality = default(int); + if (featuresColumn.Type is VectorDataViewType vt) { + featureDimensionality = vt.Size; + } else { + _host.Except($"A vector input is expected"); + } + int samples = 0; + int maxSamples = 10000; + + float[] data = new float[ maxSamples * featureDimensionality]; + float[] dataLabels = new float[ maxSamples ]; + Span dataSpan = new Span(data); + + using (var cursor = input.GetRowCursor(new[] { featuresColumn, labelColumn })) { + + float labelValue = default; + VBuffer featureValues = default(VBuffer); + + var featureGetter = cursor.GetGetter< VBuffer >(featuresColumn); + var labelGetter = cursor.GetGetter(labelColumn); + + while (cursor.MoveNext() && samples < maxSamples) { + featureGetter(ref featureValues); + labelGetter(ref labelValue); + + int offset = samples * featureDimensionality; + Span target = dataSpan.Slice(offset, featureDimensionality); + featureValues.GetValues().CopyTo(target); + dataLabels[samples] = labelValue; + samples++; + } + + DMatrix trainMat = new DMatrix(data, (uint)maxSamples, (uint)featureDimensionality, dataLabels); + Booster booster = new Booster(trainMat); + return new XGBoostBinaryClassificationTransformer(_host, booster, ("Features", "PredictedLabel")); + } + } + +#if true + // Used for schema propagation and verification in a pipeline (i.e., in an Estimator chain). + public SchemaShape GetOutputSchema(SchemaShape inputSchema) + { + throw new NotImplementedException(); + } +#else + public override SchemaShape GetOutputSchema(SchemaShape inputSchema) + { + _host.CheckValue(inputSchema, nameof(inputSchema)); + return new SchemaShape(inputSchema); + } +#endif + } +} diff --git a/src/Microsoft.ML.XGBoost/XGBoostCatalog.cs b/src/Microsoft.ML.XGBoost/XGBoostCatalog.cs new file mode 100644 index 0000000000..ef4b793ac5 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/XGBoostCatalog.cs @@ -0,0 +1,35 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; + +using Microsoft.ML.Data; +using Microsoft.ML.Runtime; +using Microsoft.ML.Trainers.XGBoost; + +namespace Microsoft.ML +{ + /// + /// Collection of extension methods for the , + /// , + /// and catalogs. + /// + public static class XGBoostExtensions + { + public static XGBoostBinaryClassificationEstimator XGBoost(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + string labelColumnName = DefaultColumnNames.Label, + string featureColumnName = DefaultColumnNames.Features, + int? numberOfLeaves = null, + int? minimumExampleCountPerLeaf = null, + double? learningRate = null, + int numberOfIterations = Defaults.NumberOfIterations) + { + Contracts.CheckValue(catalog, nameof(catalog)); + var env = CatalogUtils.GetEnvironment(catalog); + return new XGBoostBinaryClassificationEstimator(env, labelColumnName, featureColumnName, numberOfLeaves, minimumExampleCountPerLeaf, learningRate, numberOfIterations); + } + } +} diff --git a/src/Microsoft.ML.XGBoost/XGBoostInterface.cs b/src/Microsoft.ML.XGBoost/XGBoostInterface.cs new file mode 100644 index 0000000000..a31a9a9aa7 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/XGBoostInterface.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using Microsoft.ML.Runtime; + +namespace Microsoft.ML.Trainers.XGBoost +{ + + public class XGBoostDLLException : Exception + { + public XGBoostDLLException() + { + /* empty */ + } + + public XGBoostDLLException(string message) + : base(message) + { + /* empty */ + } + + } + + public static class XGBoost + { + public struct XGBoostVersion + { + public int Major; + public int Minor; + public int Patch; + } + + public static XGBoostVersion Version() + { + int major, minor, patch; + WrappedXGBoostInterface.XGBoostVersion(out major, out minor, out patch); + return new XGBoostVersion { + Major = major, + Minor = minor, + Patch = patch + }; + } + } +} diff --git a/src/Microsoft.ML.XGBoost/XGBoostModel.cs b/src/Microsoft.ML.XGBoost/XGBoostModel.cs new file mode 100644 index 0000000000..c82f363dd1 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/XGBoostModel.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Runtime.InteropServices; + +namespace Microsoft.ML.Trainers.XGBoost +{ + +public abstract class TreeNode +{ + private uint _nodeId; + public uint NodeId { get => _nodeId; } + public TreeNode(uint nodeId) + { + _nodeId = nodeId; + } + + public static TreeNode Create(JsonElement jsonElement) + { + if (jsonElement.TryGetProperty("leaf", out JsonElement leafJsonNode)) { + return TreeLeafNode.Create(jsonElement); + } else if (jsonElement.TryGetProperty("children", out JsonElement internalJsonNode)) { + return TreeInternalNode.Create(jsonElement); + } else { + throw new Exception("Invalid booster content"); + } + } +} + +public class TreeLeafNode : TreeNode +{ + private float _leafValue; + public float LeafValue { get => _leafValue; } + public TreeLeafNode(uint nodeId, float leafValue) : base(nodeId) + { + _leafValue = leafValue; + } + + public static new TreeLeafNode Create(JsonElement jsonElement) + { + try { + var nodeId = jsonElement.GetProperty("nodeid").GetUInt32(); + float leafValue = (float)(jsonElement.GetProperty("leaf").GetDouble()); + return new TreeLeafNode(nodeId, leafValue); + } catch (Exception ex) { + throw ex; + } + } +} + +public class TreeInternalNode : TreeNode +{ + private uint _depth; + private string _split; + private float _split_condition; + private uint _yes; + private uint _no; + private uint _missing; + private Dictionary _children; + + public uint Depth { get => _depth; } + public string Split { get => _split; } + public float SplitCondition { get => _split_condition; } + public uint Yes { get => _yes; } + public uint No { get => _no; } + public Dictionary Children { get => _children; } + + public TreeInternalNode(uint nodeId, uint depth, string split, float split_condition, uint missing, uint yes, uint no) + : base (nodeId) + { + _depth = depth; + _split = split; + _split_condition = split_condition; + _missing = missing; + _yes = yes; + _no = no; + _children = new Dictionary(); + } + + public static new TreeInternalNode Create(JsonElement jsonElement) + { + try { + var nodeId = jsonElement.GetProperty("nodeid").GetUInt32(); + var depth = jsonElement.GetProperty("depth").GetUInt32(); + var split = jsonElement.GetProperty("split").GetString(); + var split_condition = (float)(jsonElement.GetProperty("split_condition").GetDouble()); + var yes = jsonElement.GetProperty("yes").GetUInt32(); + var no = jsonElement.GetProperty("no").GetUInt32(); + var missing = jsonElement.GetProperty("missing").GetUInt32(); + var ret = new TreeInternalNode(nodeId, depth, split, split_condition, missing, yes, no); + foreach(var e in jsonElement.GetProperty("children").EnumerateArray()) { + var t = TreeNode.Create(e); + ret.Children.Add(t.NodeId, t); + } + return ret; + } catch (Exception ex) { + throw ex; + } + } +} +} \ No newline at end of file diff --git a/src/Microsoft.ML.XGBoost/XGBoostTrainerBase.cs b/src/Microsoft.ML.XGBoost/XGBoostTrainerBase.cs new file mode 100644 index 0000000000..075f6025b5 --- /dev/null +++ b/src/Microsoft.ML.XGBoost/XGBoostTrainerBase.cs @@ -0,0 +1,1536 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.ML.CommandLine; +using Microsoft.ML.Data; +using Microsoft.ML.EntryPoints; +using Microsoft.ML.Internal.Internallearn; +using Microsoft.ML.Internal.Utilities; +using Microsoft.ML.Runtime; +using Microsoft.ML.Trainers; +// using Microsoft.ML.Trainers.FastTree; + +namespace Microsoft.ML.Trainers.XGBoost +{ + /// + /// The for predicting a target using a binary classification model. + /// + /// + /// + /// + public sealed class XGBoostTrainer : ITrainer, + ITrainerEstimator, XGBoostModelParameters> + { + internal const string LoadNameValue = "XGBoostPredictor"; + internal const string UserNameValue = "XGBoost Predictor"; + internal const string Summary = "A trivial model for producing the prior based on the number of positive and negative examples."; + + /// + /// The shrinkage rate for trees, used to prevent over-fitting. + /// Also aliased to "eta" + /// + /// + /// Valid range is (0,1]. + /// + [Argument(ArgumentType.AtMostOnce, + HelpText = "Shrinkage rate for trees, used to prevent over-fitting. Range: (0,1].", + SortOrder = 2, ShortName = "lr", NullName = "")] + public double? LearningRate; + + /// + /// The maximum number of leaves in one tree. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum leaves for trees.", + SortOrder = 2, ShortName = "nl", NullName = "")] + public int? NumberOfLeaves; + + /// + /// Minimum loss reduction required to make a further partition on a leaf node of + /// the tree. The larger gamma is, the more conservative the algorithm will be. + /// aka: gamma + /// range: [0,\infnty] + /// + public int? MinSplitLoss; + + /// + /// Maximum depth of a tree. Increasing this value will make the model more complex and + /// more likely to overfit. 0 indicates no limit on depth. Beware that XGBoost aggressively + /// consumes memory when training a deep tree. exact tree method requires non-zero value. + /// range: [0,\infnty], default=6 + /// + public int? MaxDepth; + + /// + /// Minimum sum of instance weight (hessian) needed in a child. If the tree partition step + /// results in a leaf node with the sum of instance weight less than min_child_weight, then + /// the building process will give up further partitioning. In linear regression task, this + /// simply corresponds to minimum number of instances needed to be in each node. The larger + /// MinChildWeight is, the more conservative the algorithm will be. + /// range: [0,\infnty] + public float? MinChildWeight; + + /// + /// L2 regularization term on weights. Increasing this value will make model more conservative + /// + public float? L2Regularization; + + /// + /// L1 regularization term on weights. Increasing this value will make model more conservative. + /// + public float? L1Regularization; + + internal sealed class Options + { + // Static override name map that maps friendly names to XGBMArguments arguments. + // If an argument is not here, then its name is identical to a lightGBM argument + // and does not require a mapping, for example, Subsample. + // For a complete list, see https://xgboost.readthedocs.io/en/latest/parameter.html + private protected static Dictionary NameMapping = new Dictionary() + { + {nameof(MinSplitLoss), "min_split_loss"}, + {nameof(NumberOfLeaves), "num_leaves"}, + {nameof(MaxDepth), "max_depth" }, + {nameof(MinChildWeight), "min_child_weight" }, + {nameof(L2Regularization), "lambda" }, + {nameof(L1Regularization), "alpha" } + }; + + private protected string GetOptionName(string name) + { + if (NameMapping.ContainsKey(name)) + return NameMapping[name]; + //return XGBoostInterfaceUtils.GetOptionName(name); + return ""; + } + } + + private readonly string _labelColumnName; + private readonly string _weightColumnName; + private readonly IHost _host; + + /// Return the type of prediction task. + PredictionKind ITrainer.PredictionKind => PredictionKind.BinaryClassification; + + private static readonly TrainerInfo _info = new TrainerInfo(normalization: false, caching: false); + + /// + /// Auxiliary information about the trainer in terms of its capabilities + /// and requirements. + /// + public TrainerInfo Info => _info; + + internal XGBoostTrainer(IHostEnvironment env, Options options) + { + Contracts.CheckValue(env, nameof(env)); + _host = env.Register(LoadNameValue); + _host.CheckValue(options, nameof(options)); + } + + /// + /// Initializes XGBoostTrainer object. + /// + internal XGBoostTrainer(IHostEnvironment env, String labelColumn, String weightColunn = null) + { + Contracts.CheckValue(env, nameof(env)); + _host = env.Register(LoadNameValue); + _host.CheckValue(labelColumn, nameof(labelColumn)); + _host.CheckValueOrNull(weightColunn); + + _labelColumnName = labelColumn; + _weightColumnName = weightColunn != null ? weightColunn : null; + } + + /// + /// Trains and returns a . + /// + public BinaryPredictionTransformer Fit(IDataView input) + { + RoleMappedData trainRoles = new RoleMappedData(input, label: _labelColumnName, feature: null, weight: _weightColumnName); + var pred = ((ITrainer)this).Train(new TrainContext(trainRoles)); + return new BinaryPredictionTransformer(_host, pred, input.Schema, featureColumn: null, labelColumn: _labelColumnName); + } + + private XGBoostModelParameters Train(TrainContext context) + { + _host.CheckValue(context, nameof(context)); + var data = context.TrainingSet; + data.CheckBinaryLabel(); + _host.CheckParam(data.Schema.Label.HasValue, nameof(data), "Missing Label column"); + var labelCol = data.Schema.Label.Value; + _host.CheckParam(labelCol.Type == BooleanDataViewType.Instance, nameof(data), "Invalid type for Label column"); + + double pos = 0; + double neg = 0; + + int colWeight = -1; + if (data.Schema.Weight?.Type == NumberDataViewType.Single) + colWeight = data.Schema.Weight.Value.Index; + + var cols = colWeight > -1 ? new DataViewSchema.Column[] { labelCol, data.Schema.Weight.Value } : new DataViewSchema.Column[] { labelCol }; + + using (var cursor = data.Data.GetRowCursor(cols)) + { + var getLab = cursor.GetGetter(data.Schema.Label.Value); + var getWeight = colWeight >= 0 ? cursor.GetGetter(data.Schema.Weight.Value) : null; + bool lab = default; + float weight = 1; + while (cursor.MoveNext()) + { + getLab(ref lab); + if (getWeight != null) + { + getWeight(ref weight); + if (!(0 < weight && weight < float.PositiveInfinity)) + continue; + } + + // Testing both directions effectively ignores NaNs. + if (lab) + pos += weight; + else + neg += weight; + } + } + + float prob = prob = pos + neg > 0 ? (float)(pos / (pos + neg)) : float.NaN; + return new XGBoostModelParameters(_host, prob); + } + + IPredictor ITrainer.Train(TrainContext context) => Train(context); + + XGBoostModelParameters ITrainer.Train(TrainContext context) => Train(context); + + private static SchemaShape.Column MakeFeatureColumn(string featureColumn) + => new SchemaShape.Column(featureColumn, SchemaShape.Column.VectorKind.Vector, NumberDataViewType.Single, false); + + private static SchemaShape.Column MakeLabelColumn(string labelColumn) + => new SchemaShape.Column(labelColumn, SchemaShape.Column.VectorKind.Scalar, NumberDataViewType.Single, false); + + /// + /// Returns the of the schema which will be produced by the transformer. + /// Used for schema propagation and verification in a pipeline. + /// + public SchemaShape GetOutputSchema(SchemaShape inputSchema) + { + _host.CheckValue(inputSchema, nameof(inputSchema)); + + var outColumns = inputSchema.ToDictionary(x => x.Name); + + var newColumns = new[] + { + new SchemaShape.Column(DefaultColumnNames.Score, SchemaShape.Column.VectorKind.Scalar, NumberDataViewType.Single, false, new SchemaShape(AnnotationUtils.GetTrainerOutputAnnotation())), + new SchemaShape.Column(DefaultColumnNames.Probability, SchemaShape.Column.VectorKind.Scalar, NumberDataViewType.Single, false, new SchemaShape(AnnotationUtils.GetTrainerOutputAnnotation(true))), + new SchemaShape.Column(DefaultColumnNames.PredictedLabel, SchemaShape.Column.VectorKind.Scalar, BooleanDataViewType.Instance, false, new SchemaShape(AnnotationUtils.GetTrainerOutputAnnotation())) + }; + foreach (SchemaShape.Column column in newColumns) + outColumns[column.Name] = column; + + return new SchemaShape(outColumns.Values); + } + } + + /// + /// Model parameters for . + /// + public sealed class XGBoostModelParameters : + ModelParametersBase, + IDistPredictorProducing, + IValueMapperDist + //, ISingleCanSaveOnnx + { + internal const string LoaderSignature = "XGBoostPredictor"; + private static VersionInfo GetVersionInfo() + { + return new VersionInfo( + modelSignature: "PRIORPRD", + verWrittenCur: 0x00010001, + verReadableCur: 0x00010001, + verWeCanReadBack: 0x00010001, + loaderSignature: LoaderSignature, + loaderAssemblyName: typeof(XGBoostModelParameters).Assembly.FullName); + } + + private readonly float _prob; + private readonly float _raw; + #if false + bool ICanSaveOnnx.CanSaveOnnx(OnnxContext ctx) => true; + #endif + + /// + /// Instantiates a model that returns the prior probability of the positive class in the training set. + /// + /// The host environment. + /// The probability of the positive class. + internal XGBoostModelParameters(IHostEnvironment env, float prob) + : base(env, LoaderSignature) + { + Host.Check(!float.IsNaN(prob)); + + _prob = prob; + _raw = 2 * _prob - 1; // This could be other functions -- logodds for instance + + _inputType = new VectorDataViewType(NumberDataViewType.Single); + } + + private XGBoostModelParameters(IHostEnvironment env, ModelLoadContext ctx) + : base(env, LoaderSignature, ctx) + { + // *** Binary format *** + // Float: _prob + + _prob = ctx.Reader.ReadFloat(); + Host.CheckDecode(!float.IsNaN(_prob)); + + _raw = 2 * _prob - 1; + + _inputType = new VectorDataViewType(NumberDataViewType.Single); + } + + internal static XGBoostModelParameters Create(IHostEnvironment env, ModelLoadContext ctx) + { + Contracts.CheckValue(env, nameof(env)); + env.CheckValue(ctx, nameof(ctx)); + ctx.CheckAtModel(GetVersionInfo()); + return new XGBoostModelParameters(env, ctx); + } + + private protected override void SaveCore(ModelSaveContext ctx) + { + base.SaveCore(ctx); + ctx.SetVersionInfo(GetVersionInfo()); + + // *** Binary format *** + // Float: _prob + + Contracts.Assert(!float.IsNaN(_prob)); + ctx.Writer.Write(_prob); + } + +#if false + bool ISingleCanSaveOnnx.SaveAsOnnx(OnnxContext ctx, string[] outputs, string labelColumn) + { + Host.CheckValue(ctx, nameof(ctx)); + Host.Check(Utils.Size(outputs) >= 3); + + const int minimumOpSetVersion = 9; + ctx.CheckOpSetVersion(minimumOpSetVersion, LoaderSignature); + + string scoreVarName = outputs[1]; + string probVarName = outputs[2]; + var prob = ctx.AddInitializer(_prob, "probability"); + var score = ctx.AddInitializer(_raw, "score"); + + var xorOutput = ctx.AddIntermediateVariable(null, "XorOutput", true); + string opType = "Xor"; + ctx.CreateNode(opType, new[] { labelColumn, labelColumn }, new[] { xorOutput }, ctx.GetNodeName(opType), ""); + + var notOutput = ctx.AddIntermediateVariable(null, "NotOutput", true); + opType = "Not"; + ctx.CreateNode(opType, xorOutput, notOutput, ctx.GetNodeName(opType), ""); + + var castOutput = ctx.AddIntermediateVariable(null, "CastOutput", true); + opType = "Cast"; + var node = ctx.CreateNode(opType, notOutput, castOutput, ctx.GetNodeName(opType), ""); + var t = InternalDataKindExtensions.ToInternalDataKind(DataKind.Single).ToType(); + node.AddAttribute("to", t); + + opType = "Mul"; + ctx.CreateNode(opType, new[] { castOutput, prob }, new[] { probVarName }, ctx.GetNodeName(opType), ""); + + opType = "Mul"; + ctx.CreateNode(opType, new[] { castOutput, score }, new[] { scoreVarName }, ctx.GetNodeName(opType), ""); + return true; + } + #endif + + private protected override PredictionKind PredictionKind => PredictionKind.BinaryClassification; + + private readonly DataViewType _inputType; + DataViewType IValueMapper.InputType => _inputType; + DataViewType IValueMapper.OutputType => NumberDataViewType.Single; + DataViewType IValueMapperDist.DistType => NumberDataViewType.Single; + + ValueMapper IValueMapper.GetMapper() + { + Contracts.Check(typeof(TIn) == typeof(VBuffer)); + Contracts.Check(typeof(TOut) == typeof(float)); + + ValueMapper, float> del = Map; + return (ValueMapper)(Delegate)del; + } + + ValueMapper IValueMapperDist.GetMapper() + { + Contracts.Check(typeof(TIn) == typeof(VBuffer)); + Contracts.Check(typeof(TOut) == typeof(float)); + Contracts.Check(typeof(TDist) == typeof(float)); + + ValueMapper, float, float> del = MapDist; + return (ValueMapper)(Delegate)del; + } + + private void Map(in VBuffer src, ref float dst) + { + dst = _raw; + } + + private void MapDist(in VBuffer src, ref float score, ref float prob) + { + score = _raw; + prob = _prob; + } + } + +#if false + /// + /// Base class for all training with LightGBM. + /// + public abstract class LightGbmTrainerBase : TrainerEstimatorBaseWithGroupId + where TTransformer : ISingleFeaturePredictionTransformer + where TModel : class + where TOptions : LightGbmTrainerBase.OptionsBase, new() + { + public class OptionsBase : TrainerInputBaseWithGroupId + { + // Static override name map that maps friendly names to lightGBM arguments. + // If an argument is not here, then its name is identical to a lightGBM argument + // and does not require a mapping, for example, Subsample. + private protected static Dictionary NameMapping = new Dictionary() + { + {nameof(MinimumExampleCountPerLeaf), "min_data_per_leaf"}, + {nameof(NumberOfLeaves), "num_leaves"}, + {nameof(MaximumBinCountPerFeature), "max_bin" }, + {nameof(MinimumExampleCountPerGroup), "min_data_per_group" }, + {nameof(MaximumCategoricalSplitPointCount), "max_cat_threshold" }, + {nameof(CategoricalSmoothing), "cat_smooth" }, + {nameof(L2CategoricalRegularization), "cat_l2" }, + {nameof(HandleMissingValue), "use_missing" }, + {nameof(UseZeroAsMissingValue), "zero_as_missing" } + }; + + private protected string GetOptionName(string name) + { + if (NameMapping.ContainsKey(name)) + return NameMapping[name]; + return LightGbmInterfaceUtils.GetOptionName(name); + } + + private protected OptionsBase() { } + + /// + /// The number of boosting iterations. A new tree is created in each iteration, so this is equivalent to the number of trees. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Number of iterations.", SortOrder = 1, ShortName = "iter")] + [TGUI(Label = "Number of boosting iterations", SuggestedSweeps = "10,20,50,100,150,200")] + [TlcModule.SweepableDiscreteParam("NumBoostRound", new object[] { 10, 20, 50, 100, 150, 200 })] + public int NumberOfIterations = Defaults.NumberOfIterations; + + /// + /// The shrinkage rate for trees, used to prevent over-fitting. + /// + /// + /// Valid range is (0,1]. + /// + [Argument(ArgumentType.AtMostOnce, + HelpText = "Shrinkage rate for trees, used to prevent over-fitting. Range: (0,1].", + SortOrder = 2, ShortName = "lr", NullName = "")] + [TGUI(Label = "Learning Rate", SuggestedSweeps = "0.025-0.4;log")] + [TlcModule.SweepableFloatParamAttribute("LearningRate", 0.025f, 0.4f, isLogScale: true)] + public double? LearningRate; + + /// + /// The maximum number of leaves in one tree. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum leaves for trees.", + SortOrder = 2, ShortName = "nl", NullName = "")] + [TGUI(Description = "The maximum number of leaves per tree", SuggestedSweeps = "2-128;log;inc:4")] + [TlcModule.SweepableLongParamAttribute("NumLeaves", 2, 128, isLogScale: true, stepSize: 4)] + public int? NumberOfLeaves; + + /// + /// The minimal number of data points required to form a new tree leaf. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Minimum number of instances needed in a child.", + SortOrder = 2, ShortName = "mil", NullName = "")] + [TGUI(Label = "Min Documents In Leaves", SuggestedSweeps = "1,10,20,50 ")] + [TlcModule.SweepableDiscreteParamAttribute("MinDataPerLeaf", new object[] { 1, 10, 20, 50 })] + public int? MinimumExampleCountPerLeaf; + + /// + /// The maximum number of bins that feature values will be bucketed in. + /// + /// + /// The small number of bins may reduce training accuracy but may increase general power (deal with over-fitting). + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum number of bucket bin for features.", ShortName = "mb")] + public int MaximumBinCountPerFeature = 255; + + /// + /// Determines which booster to use. + /// + /// + /// Available boosters are , , and . + /// + [Argument(ArgumentType.Multiple, + HelpText = "Which booster to use, can be gbtree, gblinear or dart. gbtree and dart use tree based model while gblinear uses linear function.", + Name = "Booster", + SortOrder = 3)] + internal IBoosterParameterFactory BoosterFactory = new GradientBooster.Options(); + + /// + /// Determines whether to output progress status during training and evaluation. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Verbose", ShortName = "v")] + public bool Verbose = false; + + /// + /// Controls the logging level in LighGBM. + /// + /// + /// means only output Fatal errors. means output Fatal, Warning, and Info level messages. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Printing running messages.")] + public bool Silent = true; + + /// + /// Determines the number of threads used to run LightGBM. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Number of parallel threads used to run LightGBM.", ShortName = "nt")] + public int? NumberOfThreads; + + /// + /// Determines the number of rounds, after which training will stop if validation metric doesn't improve. + /// + /// + /// 0 means disable early stopping. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Rounds of early stopping, 0 will disable it.", + ShortName = "es")] + public int EarlyStoppingRound = 0; + + /// + /// Number of data points per batch, when loading data. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Number of entries in a batch when loading data.", Hide = true)] + public int BatchSize = 1 << 20; + + /// + /// Whether to enable categorical split or not. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Enable categorical split or not.", ShortName = "cat")] + [TlcModule.SweepableDiscreteParam("UseCat", new object[] { true, false })] + public bool? UseCategoricalSplit; + + /// + /// Whether to enable special handling of missing value or not. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Enable special handling of missing value or not.", ShortName = "hmv")] + [TlcModule.SweepableDiscreteParam("UseMissing", new object[] { true, false })] + public bool HandleMissingValue = true; + + /// + /// Whether to enable the usage of zero (0) as missing value. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Enable usage of zero (0) as missing value.", ShortName = "uzam")] + [TlcModule.SweepableDiscreteParam("UseZeroAsMissing", new object[] { true, false })] + public bool UseZeroAsMissingValue = false; + + /// + /// The minimum number of data points per categorical group. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Minimum number of instances per categorical group.", ShortName = "mdpg")] + [TlcModule.Range(Inf = 0, Max = int.MaxValue)] + [TlcModule.SweepableDiscreteParam("MinDataPerGroup", new object[] { 10, 50, 100, 200 })] + public int MinimumExampleCountPerGroup = 100; + + /// + /// Maximum categorical split points to consider when splitting on a categorical feature. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Max number of categorical thresholds.", ShortName = "maxcat")] + [TlcModule.Range(Inf = 0, Max = int.MaxValue)] + [TlcModule.SweepableDiscreteParam("MaxCatThreshold", new object[] { 8, 16, 32, 64 })] + public int MaximumCategoricalSplitPointCount = 32; + + /// + /// Laplace smooth term in categorical feature split. + /// This can reduce the effect of noises in categorical features, especially for categories with few data. + /// + /// + /// Constraints: >= 0.0 + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Lapalace smooth term in categorical feature spilt. Avoid the bias of small categories.")] + [TlcModule.Range(Min = 0.0)] + [TlcModule.SweepableDiscreteParam("CatSmooth", new object[] { 1, 10, 20 })] + public double CategoricalSmoothing = 10; + + /// + /// L2 regularization for categorical split. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "L2 Regularization for categorical split.")] + [TlcModule.Range(Min = 0.0)] + [TlcModule.SweepableDiscreteParam("CatL2", new object[] { 0.1, 0.5, 1, 5, 10 })] + public double L2CategoricalRegularization = 10; + + /// + /// The random seed for LightGBM to use. + /// + /// + /// If not specified, will generate a random seed to be used. + /// + [Argument(ArgumentType.AtMostOnce, HelpText = "Sets the random seed for LightGBM to use.")] + public int? Seed; + + [Argument(ArgumentType.Multiple, HelpText = "Parallel LightGBM Learning Algorithm", ShortName = "parag")] + internal ISupportParallel ParallelTrainer = new SingleTrainerFactory(); + + private BoosterParameterBase.OptionsBase _boosterParameter; + + /// + /// Booster parameter to use + /// + public BoosterParameterBase.OptionsBase Booster + { + get => _boosterParameter; + + set + { + _boosterParameter = value; + BoosterFactory = _boosterParameter; + } + } + + internal virtual Dictionary ToDictionary(IHost host) + { + Contracts.CheckValue(host, nameof(host)); + Dictionary res = new Dictionary(); + + var boosterParams = BoosterFactory.CreateComponent(host); + boosterParams.UpdateParameters(res); + res["boosting_type"] = boosterParams.BoosterName; + + res["verbose"] = Silent ? "-1" : "1"; + if (NumberOfThreads.HasValue) + res["nthread"] = NumberOfThreads.Value; + + res["seed"] = (Seed.HasValue) ? Seed : host.Rand.Next(); + + res[GetOptionName(nameof(MaximumBinCountPerFeature))] = MaximumBinCountPerFeature; + res[GetOptionName(nameof(HandleMissingValue))] = HandleMissingValue; + res[GetOptionName(nameof(UseZeroAsMissingValue))] = UseZeroAsMissingValue; + res[GetOptionName(nameof(MinimumExampleCountPerGroup))] = MinimumExampleCountPerGroup; + res[GetOptionName(nameof(MaximumCategoricalSplitPointCount))] = MaximumCategoricalSplitPointCount; + res[GetOptionName(nameof(CategoricalSmoothing))] = CategoricalSmoothing; + res[GetOptionName(nameof(L2CategoricalRegularization))] = L2CategoricalRegularization; + + return res; + } + } + + private sealed class CategoricalMetaData + { + public int NumCol; + public int TotalCats; + public int[] CategoricalBoudaries; + public int[] OnehotIndices; + public int[] OnehotBias; + public bool[] IsCategoricalFeature; + public int[] CatIndices; + } + + // Contains the passed in options when the API is called + private protected readonly TOptions LightGbmTrainerOptions; + + /// + /// Stores arguments as objects to convert them to invariant string type in the end so that + /// the code is culture agnostic. When retrieving key value from this dictionary as string + /// please convert to string invariant by string.Format(CultureInfo.InvariantCulture, "{0}", Option[key]). + /// + private protected readonly Dictionary GbmOptions; + + private protected readonly IParallel ParallelTraining; + + // Store _featureCount and _trainedEnsemble to construct predictor. + private protected int FeatureCount; + private protected InternalTreeEnsemble TrainedEnsemble; + + private static readonly TrainerInfo _info = new TrainerInfo(normalization: false, caching: false, supportValid: true); + public override TrainerInfo Info => _info; + + private protected LightGbmTrainerBase(IHostEnvironment env, + string name, + SchemaShape.Column labelColumn, + string featureColumnName, + string exampleWeightColumnName, + string rowGroupColumnName, + int? numberOfLeaves, + int? minimumExampleCountPerLeaf, + double? learningRate, + int numberOfIterations) + : this(env, name, new TOptions() + { + NumberOfLeaves = numberOfLeaves, + MinimumExampleCountPerLeaf = minimumExampleCountPerLeaf, + LearningRate = learningRate, + NumberOfIterations = numberOfIterations, + LabelColumnName = labelColumn.Name, + FeatureColumnName = featureColumnName, + ExampleWeightColumnName = exampleWeightColumnName, + RowGroupColumnName = rowGroupColumnName + }, + labelColumn) + { + } + + private protected LightGbmTrainerBase(IHostEnvironment env, string name, TOptions options, SchemaShape.Column label) + : base(Contracts.CheckRef(env, nameof(env)).Register(name), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), label, + TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName), TrainerUtils.MakeU4ScalarColumn(options.RowGroupColumnName)) + { + Host.CheckValue(options, nameof(options)); + Contracts.CheckUserArg(options.NumberOfIterations >= 0, nameof(options.NumberOfIterations), "must be >= 0."); + Contracts.CheckUserArg(options.MaximumBinCountPerFeature > 0, nameof(options.MaximumBinCountPerFeature), "must be > 0."); + Contracts.CheckUserArg(options.MinimumExampleCountPerGroup > 0, nameof(options.MinimumExampleCountPerGroup), "must be > 0."); + Contracts.CheckUserArg(options.MaximumCategoricalSplitPointCount > 0, nameof(options.MaximumCategoricalSplitPointCount), "must be > 0."); + Contracts.CheckUserArg(options.CategoricalSmoothing >= 0, nameof(options.CategoricalSmoothing), "must be >= 0."); + Contracts.CheckUserArg(options.L2CategoricalRegularization >= 0.0, nameof(options.L2CategoricalRegularization), "must be >= 0."); + + LightGbmTrainerOptions = options; + ParallelTraining = LightGbmTrainerOptions.ParallelTrainer != null ? LightGbmTrainerOptions.ParallelTrainer.CreateComponent(Host) : new SingleTrainer(); + GbmOptions = LightGbmTrainerOptions.ToDictionary(Host); + InitParallelTraining(); + } + + private protected override TModel TrainModelCore(TrainContext context) + { + InitializeBeforeTraining(); + + Host.CheckValue(context, nameof(context)); + + Dataset dtrain = null; + Dataset dvalid = null; + CategoricalMetaData catMetaData; + try + { + using (var ch = Host.Start("Loading data for LightGBM")) + { + using (var pch = Host.StartProgressChannel("Loading data for LightGBM")) + { + dtrain = LoadTrainingData(ch, context.TrainingSet, out catMetaData); + if (context.ValidationSet != null) + dvalid = LoadValidationData(ch, dtrain, context.ValidationSet, catMetaData); + } + } + using (var ch = Host.Start("Training with LightGBM")) + { + using (var pch = Host.StartProgressChannel("Training with LightGBM")) + TrainCore(ch, pch, dtrain, catMetaData, dvalid); + } + } + finally + { + dtrain?.Dispose(); + dvalid?.Dispose(); + DisposeParallelTraining(); + } + return CreatePredictor(); + } + + private protected virtual void InitializeBeforeTraining() { } + + private void InitParallelTraining() + { + if (ParallelTraining.ParallelType() != "serial" && ParallelTraining.NumMachines() > 1) + { + GbmOptions["tree_learner"] = ParallelTraining.ParallelType(); + var otherParams = ParallelTraining.AdditionalParams(); + if (otherParams != null) + { + foreach (var pair in otherParams) + GbmOptions[pair.Key] = pair.Value; + } + + Contracts.CheckValue(ParallelTraining.GetReduceScatterFunction(), nameof(ParallelTraining.GetReduceScatterFunction)); + Contracts.CheckValue(ParallelTraining.GetAllgatherFunction(), nameof(ParallelTraining.GetAllgatherFunction)); + LightGbmInterfaceUtils.Check(WrappedLightGbmInterface.NetworkInitWithFunctions( + ParallelTraining.NumMachines(), + ParallelTraining.Rank(), + ParallelTraining.GetReduceScatterFunction(), + ParallelTraining.GetAllgatherFunction() + )); + } + } + + private void DisposeParallelTraining() + { + if (ParallelTraining.NumMachines() > 1) + LightGbmInterfaceUtils.Check(WrappedLightGbmInterface.NetworkFree()); + } + + private protected virtual void CheckDataValid(IChannel ch, RoleMappedData data) + { + data.CheckFeatureFloatVector(); + ch.CheckParam(data.Schema.Label.HasValue, nameof(data), "Need a label column"); + } + + private protected virtual void GetDefaultParameters(IChannel ch, int numRow, bool hasCategorical, int totalCats, bool hiddenMsg = false) + { + double learningRate = LightGbmTrainerOptions.LearningRate ?? DefaultLearningRate(numRow, hasCategorical, totalCats); + int numberOfLeaves = LightGbmTrainerOptions.NumberOfLeaves ?? DefaultNumLeaves(numRow, hasCategorical, totalCats); + int minimumExampleCountPerLeaf = LightGbmTrainerOptions.MinimumExampleCountPerLeaf ?? DefaultMinDataPerLeaf(numRow, numberOfLeaves, 1); + GbmOptions["learning_rate"] = learningRate; + GbmOptions["num_leaves"] = numberOfLeaves; + GbmOptions["min_data_per_leaf"] = minimumExampleCountPerLeaf; + if (!hiddenMsg) + { + if (!LightGbmTrainerOptions.LearningRate.HasValue) + ch.Info("Auto-tuning parameters: " + nameof(LightGbmTrainerOptions.LearningRate) + " = " + learningRate); + if (!LightGbmTrainerOptions.NumberOfLeaves.HasValue) + ch.Info("Auto-tuning parameters: " + nameof(LightGbmTrainerOptions.NumberOfLeaves) + " = " + numberOfLeaves); + if (!LightGbmTrainerOptions.MinimumExampleCountPerLeaf.HasValue) + ch.Info("Auto-tuning parameters: " + nameof(LightGbmTrainerOptions.MinimumExampleCountPerLeaf) + " = " + minimumExampleCountPerLeaf); + } + } + + [BestFriend] + internal Dictionary GetGbmParameters() => GbmOptions; + + private FloatLabelCursor.Factory CreateCursorFactory(RoleMappedData data) + { + var loadFlags = CursOpt.AllLabels | CursOpt.AllFeatures; + if (PredictionKind == PredictionKind.Ranking) + loadFlags |= CursOpt.Group; + + if (data.Schema.Weight.HasValue) + loadFlags |= CursOpt.AllWeights; + + var factory = new FloatLabelCursor.Factory(data, loadFlags); + return factory; + } + + private static List GetCategoricalBoundires(int[] categoricalFeatures, int rawNumCol) + { + List catBoundaries = new List { 0 }; + int curFidx = 0; + int j = 0; + while (curFidx < rawNumCol) + { + if (j < categoricalFeatures.Length && curFidx == categoricalFeatures[j]) + { + if (curFidx > catBoundaries[catBoundaries.Count - 1]) + catBoundaries.Add(curFidx); + if (categoricalFeatures[j + 1] - categoricalFeatures[j] >= 0) + { + curFidx = categoricalFeatures[j + 1] + 1; + catBoundaries.Add(curFidx); + } + else + { + for (int i = curFidx + 1; i <= categoricalFeatures[j + 1] + 1; ++i) + catBoundaries.Add(i); + curFidx = categoricalFeatures[j + 1] + 1; + } + j += 2; + } + else + { + catBoundaries.Add(curFidx + 1); + ++curFidx; + } + } + return catBoundaries; + } + + private static List ConstructCategoricalFeatureMetaData(int[] categoricalFeatures, int rawNumCol, ref CategoricalMetaData catMetaData) + { + List catBoundaries = GetCategoricalBoundires(categoricalFeatures, rawNumCol); + catMetaData.NumCol = catBoundaries.Count - 1; + catMetaData.CategoricalBoudaries = catBoundaries.ToArray(); + catMetaData.IsCategoricalFeature = new bool[catMetaData.NumCol]; + catMetaData.OnehotIndices = new int[rawNumCol]; + catMetaData.OnehotBias = new int[rawNumCol]; + List catIndices = new List(); + int j = 0; + for (int i = 0; i < catMetaData.NumCol; ++i) + { + var numCat = catMetaData.CategoricalBoudaries[i + 1] - catMetaData.CategoricalBoudaries[i]; + if (numCat > 1) + { + catMetaData.TotalCats += numCat; + catMetaData.IsCategoricalFeature[i] = true; + catIndices.Add(i.ToString()); + for (int k = catMetaData.CategoricalBoudaries[i]; k < catMetaData.CategoricalBoudaries[i + 1]; ++k) + { + catMetaData.OnehotIndices[j] = i; + catMetaData.OnehotBias[j] = k - catMetaData.CategoricalBoudaries[i]; + ++j; + } + } + else + { + catMetaData.IsCategoricalFeature[i] = false; + catMetaData.OnehotIndices[j] = i; + catMetaData.OnehotBias[j] = 0; + ++j; + } + } + catMetaData.CatIndices = catIndices.Select(int.Parse).ToArray(); + return catIndices; + } + + private CategoricalMetaData GetCategoricalMetaData(IChannel ch, RoleMappedData trainData, int numRow) + { + CategoricalMetaData catMetaData = new CategoricalMetaData(); + int[] categoricalFeatures = null; + const int useCatThreshold = 50000; + // Disable cat when data is too small, reduce the overfitting. + bool useCat = LightGbmTrainerOptions.UseCategoricalSplit ?? numRow > useCatThreshold; + if (!LightGbmTrainerOptions.UseCategoricalSplit.HasValue) + ch.Info("Auto-tuning parameters: " + nameof(LightGbmTrainerOptions.UseCategoricalSplit) + " = " + useCat); + if (useCat) + { + var featureCol = trainData.Schema.Feature.Value; + AnnotationUtils.TryGetCategoricalFeatureIndices(trainData.Schema.Schema, featureCol.Index, out categoricalFeatures); + } + var colType = trainData.Schema.Feature.Value.Type; + int rawNumCol = colType.GetVectorSize(); + FeatureCount = rawNumCol; + catMetaData.TotalCats = 0; + if (categoricalFeatures == null) + { + catMetaData.CategoricalBoudaries = null; + catMetaData.NumCol = rawNumCol; + } + else + { + var catIndices = ConstructCategoricalFeatureMetaData(categoricalFeatures, rawNumCol, ref catMetaData); + // Set categorical features + GbmOptions["categorical_feature"] = string.Join(",", catIndices); + } + return catMetaData; + } + + private Dataset LoadTrainingData(IChannel ch, RoleMappedData trainData, out CategoricalMetaData catMetaData) + { + // Verifications. + Host.AssertValue(ch); + ch.CheckValue(trainData, nameof(trainData)); + + CheckDataValid(ch, trainData); + + // Load metadata first. + var factory = CreateCursorFactory(trainData); + GetMetainfo(ch, factory, out int numRow, out float[] labels, out float[] weights, out int[] groups); + catMetaData = GetCategoricalMetaData(ch, trainData, numRow); + GetDefaultParameters(ch, numRow, catMetaData.CategoricalBoudaries != null, catMetaData.TotalCats); + + CheckAndUpdateParametersBeforeTraining(ch, trainData, labels, groups); + string param = LightGbmInterfaceUtils.JoinParameters(GbmOptions); + + Dataset dtrain; + // To reduce peak memory usage, only enable one sampling task at any given time. + lock (LightGbmShared.SampleLock) + { + CreateDatasetFromSamplingData(ch, factory, numRow, + param, labels, weights, groups, catMetaData, out dtrain); + } + + // Push rows into dataset. + LoadDataset(ch, factory, dtrain, numRow, LightGbmTrainerOptions.BatchSize, catMetaData); + + return dtrain; + } + + private Dataset LoadValidationData(IChannel ch, Dataset dtrain, RoleMappedData validData, CategoricalMetaData catMetaData) + { + // Verifications. + Host.AssertValue(ch); + + ch.CheckValue(validData, nameof(validData)); + + CheckDataValid(ch, validData); + + // Load meta info first. + var factory = CreateCursorFactory(validData); + GetMetainfo(ch, factory, out int numRow, out float[] labels, out float[] weights, out int[] groups); + + // Construct validation dataset. + Dataset dvalid = new Dataset(dtrain, numRow, labels, weights, groups); + + // Push rows into dataset. + LoadDataset(ch, factory, dvalid, numRow, LightGbmTrainerOptions.BatchSize, catMetaData); + + return dvalid; + } + + private void TrainCore(IChannel ch, IProgressChannel pch, Dataset dtrain, CategoricalMetaData catMetaData, Dataset dvalid = null) + { + Host.AssertValue(ch); + Host.AssertValue(pch); + Host.AssertValue(dtrain); + Host.AssertValueOrNull(dvalid); + + // For multi class, the number of labels is required. + ch.Assert(((ITrainer)this).PredictionKind != PredictionKind.MulticlassClassification || GbmOptions.ContainsKey("num_class"), + "LightGBM requires the number of classes to be specified in the parameters."); + + // Only enable one trainer to run at one time. + lock (LightGbmShared.LockForMultiThreadingInside) + { + ch.Info("LightGBM objective={0}", GbmOptions["objective"]); + using (Booster bst = WrappedLightGbmTraining.Train(ch, pch, GbmOptions, dtrain, + dvalid: dvalid, numIteration: LightGbmTrainerOptions.NumberOfIterations, + verboseEval: LightGbmTrainerOptions.Verbose, earlyStoppingRound: LightGbmTrainerOptions.EarlyStoppingRound)) + { + TrainedEnsemble = bst.GetModel(catMetaData.CategoricalBoudaries); + } + } + } + + /// + /// Calculate the density of data. Only use top 1000 rows to calculate. + /// + private static double DetectDensity(FloatLabelCursor.Factory factory, int numRows = 1000) + { + int nonZeroCount = 0; + int totalCount = 0; + using (var cursor = factory.Create()) + { + while (cursor.MoveNext() && numRows > 0) + { + nonZeroCount += cursor.Features.GetValues().Length; + totalCount += cursor.Features.Length; + --numRows; + } + } + return (double)nonZeroCount / totalCount; + } + + /// + /// Compute row count, list of labels, weights and group counts of the dataset. + /// + private void GetMetainfo(IChannel ch, FloatLabelCursor.Factory factory, + out int numRow, out float[] labels, out float[] weights, out int[] groups) + { + ch.Check(factory.Data.Schema.Label != null, "The data should have label."); + List labelList = new List(); + bool hasWeights = factory.Data.Schema.Weight != null; + bool hasGroup = false; + if (PredictionKind == PredictionKind.Ranking) + { + ch.Check(factory.Data.Schema.Group != null, "The data for ranking task should have group field."); + hasGroup = true; + } + List weightList = hasWeights ? new List() : null; + List cursorGroups = hasGroup ? new List() : null; + + using (var cursor = factory.Create()) + { + while (cursor.MoveNext()) + { + if (labelList.Count == Utils.ArrayMaxSize) + throw ch.Except($"Dataset row count exceeded the maximum count of {Utils.ArrayMaxSize}"); + labelList.Add(cursor.Label); + if (hasWeights) + { + // Default weight = 1. + if (float.IsNaN(cursor.Weight)) + weightList.Add(1); + else + weightList.Add(cursor.Weight); + } + if (hasGroup) + cursorGroups.Add(cursor.Group); + } + } + labels = labelList.ToArray(); + ConvertNaNLabels(ch, factory.Data, labels); + numRow = labels.Length; + ch.Check(numRow > 0, "Cannot use empty dataset."); + weights = hasWeights ? weightList.ToArray() : null; + groups = null; + if (hasGroup) + { + List groupList = new List(); + int lastGroup = -1; + for (int i = 0; i < numRow; ++i) + { + if (i == 0 || cursorGroups[i] != cursorGroups[i - 1]) + { + groupList.Add(1); + ++lastGroup; + } + else + ++groupList[lastGroup]; + } + groups = groupList.ToArray(); + } + } + + /// + /// Convert Nan labels. Default way is converting them to zero. + /// + private protected virtual void ConvertNaNLabels(IChannel ch, RoleMappedData data, float[] labels) + { + for (int i = 0; i < labels.Length; ++i) + { + if (float.IsNaN(labels[i])) + labels[i] = 0; + } + } + + private static bool MoveMany(FloatLabelCursor cursor, long count) + { + for (long i = 0; i < count; ++i) + { + if (!cursor.MoveNext()) + return false; + } + return true; + } + + private void GetFeatureValueDense(IChannel ch, FloatLabelCursor cursor, CategoricalMetaData catMetaData, Random rand, out ReadOnlySpan featureValues) + { + var cursorFeaturesValues = cursor.Features.GetValues(); + if (catMetaData.CategoricalBoudaries != null) + { + float[] featureValuesTemp = new float[catMetaData.NumCol]; + for (int i = 0; i < catMetaData.NumCol; ++i) + { + float fv = cursorFeaturesValues[catMetaData.CategoricalBoudaries[i]]; + if (catMetaData.IsCategoricalFeature[i]) + { + int hotIdx = catMetaData.CategoricalBoudaries[i] - 1; + int nhot = 0; + for (int j = catMetaData.CategoricalBoudaries[i]; j < catMetaData.CategoricalBoudaries[i + 1]; ++j) + { + if (cursorFeaturesValues[j] > 0) + { + // Reservoir Sampling. + nhot++; + var prob = rand.NextSingle(); + if (prob < 1.0f / nhot) + hotIdx = j; + } + } + // All-Zero is category 0. + fv = hotIdx - catMetaData.CategoricalBoudaries[i]; + } + featureValuesTemp[i] = fv; + } + featureValues = featureValuesTemp; + } + else + { + featureValues = cursorFeaturesValues; + } + } + + private void GetFeatureValueSparse(IChannel ch, FloatLabelCursor cursor, + CategoricalMetaData catMetaData, Random rand, out ReadOnlySpan indices, + out ReadOnlySpan featureValues, out int cnt) + { + var cursorFeaturesValues = cursor.Features.GetValues(); + var cursorFeaturesIndices = cursor.Features.GetIndices(); + if (catMetaData.CategoricalBoudaries != null) + { + Dictionary ivPair = new Dictionary(); + foreach (var idx in catMetaData.CatIndices) + ivPair[idx] = -1; + int lastIdx = -1; + int nhot = 0; + for (int i = 0; i < cursorFeaturesValues.Length; ++i) + { + float fv = cursorFeaturesValues[i]; + int colIdx = cursorFeaturesIndices[i]; + int newColIdx = catMetaData.OnehotIndices[colIdx]; + if (catMetaData.IsCategoricalFeature[newColIdx]) + fv = catMetaData.OnehotBias[colIdx]; + if (newColIdx != lastIdx) + { + ivPair[newColIdx] = fv; + nhot = 1; + } + else + { + // Multi-hot. + ++nhot; + var prob = rand.NextSingle(); + if (prob < 1.0f / nhot) + ivPair[newColIdx] = fv; + } + lastIdx = newColIdx; + } + var sortedIVPair = new SortedDictionary(ivPair); + indices = sortedIVPair.Keys.ToArray(); + featureValues = sortedIVPair.Values.ToArray(); + cnt = ivPair.Count; + } + else + { + indices = cursorFeaturesIndices; + featureValues = cursorFeaturesValues; + cnt = cursorFeaturesValues.Length; + } + } + + /// + /// Create a dataset from the sampling data. + /// + private void CreateDatasetFromSamplingData(IChannel ch, FloatLabelCursor.Factory factory, + int numRow, string param, float[] labels, float[] weights, int[] groups, CategoricalMetaData catMetaData, + out Dataset dataset) + { + Host.AssertValue(ch); + + int numSampleRow = GetNumSampleRow(numRow, FeatureCount); + + var rand = Host.Rand; + double averageStep = (double)numRow / numSampleRow; + int totalIdx = 0; + int sampleIdx = 0; + double density = DetectDensity(factory); + + double[][] sampleValuePerColumn = new double[catMetaData.NumCol][]; + int[][] sampleIndicesPerColumn = new int[catMetaData.NumCol][]; + int[] nonZeroCntPerColumn = new int[catMetaData.NumCol]; + int estimateNonZeroCnt = (int)(numSampleRow * density); + estimateNonZeroCnt = Math.Max(1, estimateNonZeroCnt); + for (int i = 0; i < catMetaData.NumCol; i++) + { + nonZeroCntPerColumn[i] = 0; + sampleValuePerColumn[i] = new double[estimateNonZeroCnt]; + sampleIndicesPerColumn[i] = new int[estimateNonZeroCnt]; + } + using (var cursor = factory.Create()) + { + int step = 1; + if (averageStep > 1) + step = rand.Next((int)(2 * averageStep - 1)) + 1; + while (MoveMany(cursor, step)) + { + if (cursor.Features.IsDense) + { + GetFeatureValueDense(ch, cursor, catMetaData, rand, out ReadOnlySpan featureValues); + for (int i = 0; i < catMetaData.NumCol; ++i) + { + float fv = featureValues[i]; + if (fv == 0) + continue; + int curNonZeroCnt = nonZeroCntPerColumn[i]; + Utils.EnsureSize(ref sampleValuePerColumn[i], curNonZeroCnt + 1); + Utils.EnsureSize(ref sampleIndicesPerColumn[i], curNonZeroCnt + 1); + // sampleValuePerColumn[i] is a vector whose j-th element is added when j-th non-zero value + // at the i-th feature is found as scanning the training data. + // In other words, sampleValuePerColumn[i][j] is the j-th non-zero i-th feature in the data set. + // when we scan the data matrix example-by-example. + sampleValuePerColumn[i][curNonZeroCnt] = fv; + // If the data set is dense, sampleValuePerColumn[i][j] would be the i-th feature at the j-th example. + // If the data set is not dense, sampleValuePerColumn[i][j] would be the i-th feature at the + // sampleIndicesPerColumn[i][j]-th example. + sampleIndicesPerColumn[i][curNonZeroCnt] = sampleIdx; + // The number of non-zero values at the i-th feature is nonZeroCntPerColumn[i]. + nonZeroCntPerColumn[i] = curNonZeroCnt + 1; + } + } + else + { + GetFeatureValueSparse(ch, cursor, catMetaData, rand, out ReadOnlySpan featureIndices, out ReadOnlySpan featureValues, out int cnt); + for (int i = 0; i < cnt; ++i) + { + int colIdx = featureIndices[i]; + float fv = featureValues[i]; + if (fv == 0) + continue; + int curNonZeroCnt = nonZeroCntPerColumn[colIdx]; + Utils.EnsureSize(ref sampleValuePerColumn[colIdx], curNonZeroCnt + 1); + Utils.EnsureSize(ref sampleIndicesPerColumn[colIdx], curNonZeroCnt + 1); + sampleValuePerColumn[colIdx][curNonZeroCnt] = fv; + sampleIndicesPerColumn[colIdx][curNonZeroCnt] = sampleIdx; + nonZeroCntPerColumn[colIdx] = curNonZeroCnt + 1; + } + } + // Actual row indexed sampled from the original data set + totalIdx += step; + // Row index in the sub-sampled data created in this loop. + ++sampleIdx; + if (numSampleRow == sampleIdx || numRow == totalIdx) + break; + averageStep = (double)(numRow - totalIdx) / (numSampleRow - sampleIdx); + step = 1; + if (averageStep > 1) + step = rand.Next((int)(2 * averageStep - 1)) + 1; + } + } + dataset = new Dataset(sampleValuePerColumn, sampleIndicesPerColumn, catMetaData.NumCol, nonZeroCntPerColumn, sampleIdx, numRow, param, labels, weights, groups); + } + + /// + /// Load dataset. Use row batch way to reduce peak memory cost. + /// + private void LoadDataset(IChannel ch, FloatLabelCursor.Factory factory, Dataset dataset, int numRow, int batchSize, CategoricalMetaData catMetaData) + { + Host.AssertValue(ch); + ch.AssertValue(factory); + ch.AssertValue(dataset); + ch.Assert(dataset.GetNumRows() == numRow); + ch.Assert(dataset.GetNumCols() == catMetaData.NumCol); + var rand = Host.Rand; + // To avoid array resize, batch size should bigger than size of one row. + batchSize = Math.Max(batchSize, catMetaData.NumCol); + double density = DetectDensity(factory); + int numElem = 0; + int totalRowCount = 0; + int curRowCount = 0; + + if (density >= 0.5) + { + int batchRow = batchSize / catMetaData.NumCol; + batchRow = Math.Max(1, batchRow); + if (batchRow > numRow) + batchRow = numRow; + + // This can only happen if the size of ONE example(row) exceeds the max array size. This looks like a very unlikely case. + if ((long)catMetaData.NumCol * batchRow > Utils.ArrayMaxSize) + throw ch.Except("Size of array exceeded the " + nameof(Utils.ArrayMaxSize)); + + float[] features = new float[catMetaData.NumCol * batchRow]; + + using (var cursor = factory.Create()) + { + while (cursor.MoveNext()) + { + ch.Assert(totalRowCount < numRow); + CopyToArray(ch, cursor, features, catMetaData, rand, ref numElem); + ++totalRowCount; + ++curRowCount; + if (batchRow == curRowCount) + { + ch.Assert(numElem == curRowCount * catMetaData.NumCol); + // PushRows is run by multi-threading inside, so lock here. + lock (LightGbmShared.LockForMultiThreadingInside) + dataset.PushRows(features, curRowCount, catMetaData.NumCol, totalRowCount - curRowCount); + curRowCount = 0; + numElem = 0; + } + } + ch.Assert(totalRowCount == numRow); + if (curRowCount > 0) + { + ch.Assert(numElem == curRowCount * catMetaData.NumCol); + // PushRows is run by multi-threading inside, so lock here. + lock (LightGbmShared.LockForMultiThreadingInside) + dataset.PushRows(features, curRowCount, catMetaData.NumCol, totalRowCount - curRowCount); + } + } + } + else + { + int esimateBatchRow = (int)(batchSize / (catMetaData.NumCol * density)); + esimateBatchRow = Math.Max(1, esimateBatchRow); + float[] features = new float[batchSize]; + int[] indices = new int[batchSize]; + int[] indptr = new int[esimateBatchRow + 1]; + + using (var cursor = factory.Create()) + { + while (cursor.MoveNext()) + { + ch.Assert(totalRowCount < numRow); + // Need push rows to LightGBM. + if (numElem + cursor.Features.GetValues().Length > features.Length) + { + // Mini batch size is greater than size of one row. + // So, at least we have the data of one row. + ch.Assert(curRowCount > 0); + Utils.EnsureSize(ref indptr, curRowCount + 1); + indptr[curRowCount] = numElem; + // PushRows is run by multi-threading inside, so lock here. + lock (LightGbmShared.LockForMultiThreadingInside) + { + dataset.PushRows(indptr, indices, features, + curRowCount + 1, numElem, catMetaData.NumCol, totalRowCount - curRowCount); + } + curRowCount = 0; + numElem = 0; + } + Utils.EnsureSize(ref indptr, curRowCount + 1); + indptr[curRowCount] = numElem; + CopyToCsr(ch, cursor, indices, features, catMetaData, rand, ref numElem); + ++totalRowCount; + ++curRowCount; + } + ch.Assert(totalRowCount == numRow); + if (curRowCount > 0) + { + Utils.EnsureSize(ref indptr, curRowCount + 1); + indptr[curRowCount] = numElem; + // PushRows is run by multi-threading inside, so lock here. + lock (LightGbmShared.LockForMultiThreadingInside) + { + dataset.PushRows(indptr, indices, features, curRowCount + 1, + numElem, catMetaData.NumCol, totalRowCount - curRowCount); + } + } + } + } + } + + private void CopyToArray(IChannel ch, FloatLabelCursor cursor, float[] features, CategoricalMetaData catMetaData, Random rand, ref int numElem) + { + ch.Assert(features.Length >= numElem + catMetaData.NumCol); + if (catMetaData.CategoricalBoudaries != null) + { + if (cursor.Features.IsDense) + { + GetFeatureValueDense(ch, cursor, catMetaData, rand, out ReadOnlySpan featureValues); + for (int i = 0; i < catMetaData.NumCol; ++i) + features[numElem + i] = featureValues[i]; + numElem += catMetaData.NumCol; + } + else + { + GetFeatureValueSparse(ch, cursor, catMetaData, rand, out ReadOnlySpan indices, out ReadOnlySpan featureValues, out int cnt); + int lastIdx = 0; + for (int i = 0; i < cnt; i++) + { + int slot = indices[i]; + float fv = featureValues[i]; + Contracts.Assert(slot >= lastIdx); + while (lastIdx < slot) + features[numElem + lastIdx++] = 0.0f; + Contracts.Assert(lastIdx == slot); + features[numElem + lastIdx++] = fv; + } + while (lastIdx < catMetaData.NumCol) + features[numElem + lastIdx++] = 0.0f; + numElem += catMetaData.NumCol; + } + } + else + { + cursor.Features.CopyTo(features, numElem, 0.0f); + numElem += catMetaData.NumCol; + } + } + + private void CopyToCsr(IChannel ch, FloatLabelCursor cursor, + int[] indices, float[] features, CategoricalMetaData catMetaData, Random rand, ref int numElem) + { + int numValue = cursor.Features.GetValues().Length; + if (numValue > 0) + { + ch.Assert(indices.Length >= numElem + numValue); + ch.Assert(features.Length >= numElem + numValue); + + if (cursor.Features.IsDense) + { + GetFeatureValueDense(ch, cursor, catMetaData, rand, out ReadOnlySpan featureValues); + for (int i = 0; i < catMetaData.NumCol; ++i) + { + float fv = featureValues[i]; + if (fv == 0) + continue; + features[numElem] = fv; + indices[numElem] = i; + ++numElem; + } + } + else + { + GetFeatureValueSparse(ch, cursor, catMetaData, rand, out ReadOnlySpan featureIndices, out ReadOnlySpan featureValues, out int cnt); + for (int i = 0; i < cnt; ++i) + { + int colIdx = featureIndices[i]; + float fv = featureValues[i]; + if (fv == 0) + continue; + features[numElem] = fv; + indices[numElem] = colIdx; + ++numElem; + } + } + } + } + + private static double DefaultLearningRate(int numRow, bool useCat, int totalCats) + { + if (useCat) + { + if (totalCats < 1e6) + return 0.1; + else + return 0.15; + } + else if (numRow <= 100000) + return 0.2; + else + return 0.25; + } + + private static int DefaultNumLeaves(int numRow, bool useCat, int totalCats) + { + if (useCat && totalCats > 100) + { + if (totalCats < 1e6) + return 20; + else + return 30; + } + else if (numRow <= 100000) + return 20; + else + return 30; + } + + private protected static int DefaultMinDataPerLeaf(int numRow, int numberOfLeaves, int numClass) + { + if (numClass > 1) + { + int ret = numRow / numberOfLeaves / numClass / 10; + ret = Math.Max(ret, 5); + ret = Math.Min(ret, 50); + return ret; + } + else + { + return 20; + } + } + + private static int GetNumSampleRow(int numRow, int numCol) + { + // Default is 65536. + int ret = 1 << 16; + // If have many features, use more sampling data. + if (numCol >= 100000) + ret *= 4; + ret = Math.Min(ret, numRow); + return ret; + } + + private protected abstract TModel CreatePredictor(); + + /// + /// This function will be called before training. It will check the label/group and add parameters for specific applications. + /// + private protected abstract void CheckAndUpdateParametersBeforeTraining(IChannel ch, + RoleMappedData data, float[] labels, int[] groups); + } + #endif +} diff --git a/src/Native/CMakeLists.txt b/src/Native/CMakeLists.txt index 2a51672e93..9194f443da 100644 --- a/src/Native/CMakeLists.txt +++ b/src/Native/CMakeLists.txt @@ -245,6 +245,7 @@ if(NOT ${ARCHITECTURE} MATCHES "arm.*") add_subdirectory(MklProxyNative) # TODO: Almost sure this OneDal doesn't work on ARM (or doesn't work as well), so leaving here for the moment (but disabled) add_subdirectory(OneDalNative) + #add_subdirectory(XGBoostNative) # TODO: once we fix the 4 intel MKL methods, SymSgdNative will need to go back in. add_subdirectory(SymSgdNative) endif() diff --git a/src/Native/Native.proj b/src/Native/Native.proj index 603781dc95..498e852896 100644 --- a/src/Native/Native.proj +++ b/src/Native/Native.proj @@ -50,6 +50,11 @@ .dylib.dwarf + + .$(OneDalBinaryMajorVersion)$(NativeLibExtension) + $(NativeLibExtension).$(OneDalBinaryMajorVersion).$(OneDalBinaryMinorVersion) + + @@ -59,7 +64,7 @@ We are shipping 2 native assemblies in different nuget packages, and one has a reference on the other and MacOS needs to have the rpath in the assembly to where it should load the referenced assembly and since .NET Core can run assemblies out of a NuGet cache, we need to add the NuGet cache relative location. --> - --configuration $(Configuration) --arch $(TargetArchitecture) $(StripArgs) --mkllibpath $(NuGetPackageRoot)mlnetmkldeps/$(MlNetMklDepsVersion)/runtimes/$(PackageRid)/native --mkllibrpath ../../../../../microsoft.ml.mkl.redist/$(Version)/runtimes/$(PackageRid)/native + --configuration $(Configuration) --arch $(TargetArchitecture) $(StripArgs) --mkllibpath $(NuGetPackageRoot)mlnetmkldeps/$(MlNetMklDepsPackageVersion)/runtimes/$(PackageRid)/native --mkllibrpath ../../../../../microsoft.ml.mkl.redist/$(Version)/runtimes/$(PackageRid)/native --onedallibpath $(NuGetPackageRoot)inteldal.devel-reduced.$(PackageRid)/$(OneDalDevelReducedPackageVersion)/build/native @@ -72,7 +77,7 @@ DependsOnTargets="GenerateNativeVersionFile"> - $(Configuration) $(TargetArchitecture) --mkllibpath $(NuGetPackageRoot)mlnetmkldeps\$(MlNetMklDepsVersion)\runtimes\$(PackageRid)\native + $(Configuration) $(TargetArchitecture) --mkllibpath $(NuGetPackageRoot)mlnetmkldeps\$(MlNetMklDepsPackageVersion)\runtimes\$(PackageRid)\native --onedallibpath $(NuGetPackageRoot)inteldal.devel-reduced.$(PackageRid).$(OneDalDevelReducedPackageVersion)/build/native @@ -97,6 +102,14 @@ + + + + -#include "daal.h" -#include "../Stdafx.h" - -using namespace std; -using namespace daal; -using namespace daal::algorithms; -using namespace daal::services; -using namespace daal::data_management; - -/* -### Logistic regression wrapper ### - -public unsafe static extern void LogisticRegressionCompute(void* featuresPtr, void* labelsPtr, void* weightsPtr, bool useSampleWeights, void* betaPtr, - long nRows, int nColumns, int nClasses, float l1Reg, float l2Reg, float accuracyThreshold, int nIterations, int m, int nThreads); -*/ -template -void logisticRegressionLBFGSComputeTemplate(FPType * featuresPtr, int * labelsPtr, FPType * weightsPtr, bool useSampleWeights, FPType * betaPtr, - long long nRows, int nColumns, int nClasses, float l1Reg, float l2Reg, float accuracyThreshold, int nIterations, int m, int nThreads) -{ - bool verbose = false; - #ifdef linux - if (const char* env_p = std::getenv("MLNET_BACKEND_VERBOSE")) - #elif _WIN32 - // WL Merge Note: std::getenv cause compilation error, use _dupenv_s in win, need to validate correctness. - char * env_p; - size_t size; - errno_t err = _dupenv_s(&env_p, &size, "MLNET_BACKEND_VERBOSE"); - if(!err && env_p) - #endif - { - verbose = true; - printf("%s - %.12f\n", "l1Reg", l1Reg); - printf("%s - %.12f\n", "l2Reg", l2Reg); - printf("%s - %.12f\n", "accuracyThreshold", accuracyThreshold); - printf("%s - %d\n", "nIterations", nIterations); - printf("%s - %d\n", "m", m); - printf("%s - %d\n", "nClasses", nClasses); - printf("%s - %d\n", "nThreads", nThreads); - - const size_t nThreadsOld = Environment::getInstance()->getNumberOfThreads(); - printf("%s - %zd\n", "nThreadsOld", nThreadsOld); //Note: %lu cause compilation error, modify to %d - } - #ifdef _WIN32 - free(env_p); - #endif - - Environment::getInstance()->setNumberOfThreads(nThreads); - - NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); - NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); - NumericTablePtr weightsTable(new HomogenNumericTable(weightsPtr, 1, nRows)); - - SharedPtr> lbfgsAlgorithm(new optimization_solver::lbfgs::Batch()); - lbfgsAlgorithm->parameter.batchSize = featuresTable->getNumberOfRows(); - lbfgsAlgorithm->parameter.correctionPairBatchSize = featuresTable->getNumberOfRows(); - lbfgsAlgorithm->parameter.L = 1; - lbfgsAlgorithm->parameter.m = m; - lbfgsAlgorithm->parameter.accuracyThreshold = accuracyThreshold; - lbfgsAlgorithm->parameter.nIterations = nIterations; - - if (nClasses == 1) - { - SharedPtr> logLoss(new optimization_solver::logistic_loss::Batch(featuresTable->getNumberOfRows())); - logLoss->parameter().numberOfTerms = featuresTable->getNumberOfRows(); - logLoss->parameter().interceptFlag = true; - logLoss->parameter().penaltyL1 = l1Reg; - logLoss->parameter().penaltyL2 = l2Reg; - - lbfgsAlgorithm->parameter.function = logLoss; - } - else - { - SharedPtr> crossEntropyLoss(new optimization_solver::cross_entropy_loss::Batch(nClasses, featuresTable->getNumberOfRows())); - crossEntropyLoss->parameter().numberOfTerms = featuresTable->getNumberOfRows(); - crossEntropyLoss->parameter().interceptFlag = true; - crossEntropyLoss->parameter().penaltyL1 = l1Reg; - crossEntropyLoss->parameter().penaltyL2 = l2Reg; - crossEntropyLoss->parameter().nClasses = nClasses; - - lbfgsAlgorithm->parameter.function = crossEntropyLoss; - } - - logistic_regression::training::Batch trainingAlgorithm(nClasses == 1 ? 2 : nClasses); - trainingAlgorithm.parameter().optimizationSolver = lbfgsAlgorithm; - trainingAlgorithm.parameter().penaltyL1 = l1Reg; - trainingAlgorithm.parameter().penaltyL2 = l2Reg; - trainingAlgorithm.parameter().interceptFlag = true; - - trainingAlgorithm.input.set(classifier::training::data, featuresTable); - trainingAlgorithm.input.set(classifier::training::labels, labelsTable); - if (useSampleWeights) - { - trainingAlgorithm.input.set(classifier::training::weights, weightsTable); - } - - trainingAlgorithm.compute(); - - logistic_regression::training::ResultPtr trainingResult = trainingAlgorithm.getResult(); - logistic_regression::ModelPtr modelPtr = trainingResult->get(classifier::training::model); - - NumericTablePtr betaTable = modelPtr->getBeta(); - if (betaTable->getNumberOfRows() != nClasses) - { - printf("Wrong number of classes in beta table\n"); - } - if (betaTable->getNumberOfColumns() != nColumns + 1) - { - printf("Wrong number of features in beta table\n"); - } - - BlockDescriptor betaBlock; - betaTable->getBlockOfRows(0, betaTable->getNumberOfRows(), readWrite, betaBlock); - FPType * betaForCopy = betaBlock.getBlockPtr(); - for (size_t i = 0; i < nClasses; ++i) - { - betaPtr[i] = betaForCopy[i * (nColumns + 1)]; - } - for (size_t i = 0; i < nClasses; ++i) - { - for (size_t j = 1; j < nColumns + 1; ++j) - { - betaPtr[nClasses + i * nColumns + j - 1] = betaForCopy[i * (nColumns + 1) + j]; - } - } - - if (verbose) - { - optimization_solver::iterative_solver::ResultPtr solverResult = lbfgsAlgorithm->getResult(); - NumericTablePtr nIterationsTable = solverResult->get(optimization_solver::iterative_solver::nIterations); - BlockDescriptor nIterationsBlock; - nIterationsTable->getBlockOfRows(0, 1, readWrite, nIterationsBlock); - int * nIterationsPtr = nIterationsBlock.getBlockPtr(); - - printf("Solver iterations: %d\n", nIterationsPtr[0]); - - logistic_regression::prediction::Batch predictionAlgorithm(nClasses == 1 ? 2 : nClasses); - // predictionAlgorithm.parameter().resultsToEvaluate |= - // static_cast(classifier::computeClassProbabilities); - predictionAlgorithm.input.set(classifier::prediction::data, featuresTable); - predictionAlgorithm.input.set(classifier::prediction::model, modelPtr); - predictionAlgorithm.compute(); - NumericTablePtr predictionsTable = predictionAlgorithm.getResult()->get(classifier::prediction::prediction); - BlockDescriptor predictionsBlock; - predictionsTable->getBlockOfRows(0, nRows, readWrite, predictionsBlock); - int * predictions = predictionsBlock.getBlockPtr(); - FPType accuracy = 0; - for (long i = 0; i < nRows; ++i) - { - if (predictions[i] == labelsPtr[i]) - { - accuracy += 1.0; - } - } - accuracy /= nRows; - predictionsTable->releaseBlockOfRows(predictionsBlock); - nIterationsTable->releaseBlockOfRows(nIterationsBlock); - printf("oneDAL LogReg traning accuracy: %f\n", accuracy); - } - - betaTable->releaseBlockOfRows(betaBlock); - -} - -EXPORT_API(void) logisticRegressionLBFGSCompute(void * featuresPtr, void * labelsPtr, void * weightsPtr, bool useSampleWeights, void * betaPtr, - long long nRows, int nColumns, int nClasses, float l1Reg, float l2Reg, float accuracyThreshold, int nIterations, int m, int nThreads) -{ - return logisticRegressionLBFGSComputeTemplate((float *)featuresPtr, (int *)labelsPtr, (float *)weightsPtr, useSampleWeights, (float *)betaPtr, - nRows, nColumns, nClasses, l1Reg, l2Reg, accuracyThreshold, nIterations, m, nThreads); -} - -/* -### Ridge regression wrapper ### - -[DllImport(OneDalLibPath, EntryPoint = "ridgeRegressionOnlineCompute")] -public unsafe static extern int RidgeRegressionOnlineCompute(void* featuresPtr, void* labelsPtr, int nRows, int nColumns, float l2Reg, void* partialResultPtr, int partialResultSize); - -[DllImport(OneDalLibPath, EntryPoint = "ridgeRegressionOnlineFinalize")] -public unsafe static extern void RidgeRegressionOnlineFinalize(void* featuresPtr, void* labelsPtr, long nAllRows, int nRows, int nColumns, float l2Reg, void* partialResultPtr, int partialResultSize, - void* betaPtr, void* xtyPtr, void* xtxPtr); -*/ -template -int ridgeRegressionOnlineComputeTemplate(FPType * featuresPtr, FPType * labelsPtr, int nRows, int nColumns, float l2Reg, byte * partialResultPtr, int partialResultSize) -{ - // Create input data tables - NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); - NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); - FPType l2 = l2Reg; - NumericTablePtr l2RegTable(new HomogenNumericTable(&l2, 1, 1)); - - // Set up and execute training - ridge_regression::training::Online trainingAlgorithm; - trainingAlgorithm.parameter.ridgeParameters = l2RegTable; - - ridge_regression::training::PartialResultPtr pRes(new ridge_regression::training::PartialResult); - if (partialResultSize != 0) - { - OutputDataArchive dataArch(partialResultPtr, partialResultSize); - pRes->deserialize(dataArch); - trainingAlgorithm.setPartialResult(pRes); - } - - trainingAlgorithm.input.set(ridge_regression::training::data, featuresTable); - trainingAlgorithm.input.set(ridge_regression::training::dependentVariables, labelsTable); - trainingAlgorithm.compute(); - - // Serialize partial result - pRes = trainingAlgorithm.getPartialResult(); - InputDataArchive dataArch; - pRes->serialize(dataArch); - partialResultSize = (int)dataArch.getSizeOfArchive(); - dataArch.copyArchiveToArray(partialResultPtr, (size_t)partialResultSize); - - return partialResultSize; -} - -template -void ridgeRegressionOnlineFinalizeTemplate(FPType * featuresPtr, FPType * labelsPtr, long long int nAllRows, int nRows, int nColumns, float l2Reg, byte * partialResultPtr, int partialResultSize, - FPType * betaPtr, FPType * xtyPtr, FPType * xtxPtr) -{ - NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); - NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); - FPType l2 = l2Reg; - NumericTablePtr l2RegTable(new HomogenNumericTable(&l2, 1, 1)); - - ridge_regression::training::Online trainingAlgorithm; - - ridge_regression::training::PartialResultPtr pRes(new ridge_regression::training::PartialResult); - if (partialResultSize != 0) - { - OutputDataArchive dataArch(partialResultPtr, partialResultSize); - pRes->deserialize(dataArch); - trainingAlgorithm.setPartialResult(pRes); - } - - trainingAlgorithm.parameter.ridgeParameters = l2RegTable; - - trainingAlgorithm.input.set(ridge_regression::training::data, featuresTable); - trainingAlgorithm.input.set(ridge_regression::training::dependentVariables, labelsTable); - trainingAlgorithm.compute(); - trainingAlgorithm.finalizeCompute(); - - ridge_regression::training::ResultPtr trainingResult = trainingAlgorithm.getResult(); - ridge_regression::ModelNormEq * model = static_cast(trainingResult->get(ridge_regression::training::model).get()); - - NumericTablePtr xtxTable = model->getXTXTable(); - const size_t nBeta = xtxTable->getNumberOfRows(); - BlockDescriptor xtxBlock; - xtxTable->getBlockOfRows(0, nBeta, readWrite, xtxBlock); - FPType * xtx = xtxBlock.getBlockPtr(); - - size_t offset = 0; - for (size_t i = 0; i < nBeta; ++i) - { - for (size_t j = 0; j <= i; ++j) - { - xtxPtr[offset] = xtx[i * nBeta + j]; - offset++; - } - } - offset = 0; - for (size_t i = 0; i < nBeta; ++i) - { - xtxPtr[offset] += l2Reg * l2Reg * nAllRows; - offset += i + 2; - } - - NumericTablePtr xtyTable = model->getXTYTable(); - BlockDescriptor xtyBlock; - xtyTable->getBlockOfRows(0, xtyTable->getNumberOfRows(), readWrite, xtyBlock); - FPType * xty = xtyBlock.getBlockPtr(); - for (size_t i = 0; i < nBeta; ++i) - { - xtyPtr[i] = xty[i]; - } - - NumericTablePtr betaTable = trainingResult->get(ridge_regression::training::model)->getBeta(); - BlockDescriptor betaBlock; - betaTable->getBlockOfRows(0, 1, readWrite, betaBlock); - FPType * betaForCopy = betaBlock.getBlockPtr(); - for (size_t i = 0; i < nBeta; ++i) - { - betaPtr[i] = betaForCopy[i]; - } - - xtxTable->releaseBlockOfRows(xtxBlock); - xtyTable->releaseBlockOfRows(xtyBlock); - betaTable->releaseBlockOfRows(betaBlock); -} - -EXPORT_API(int) ridgeRegressionOnlineCompute(void * featuresPtr, void * labelsPtr, int nRows, int nColumns, float l2Reg, void * partialResultPtr, int partialResultSize) -{ - return ridgeRegressionOnlineComputeTemplate((double *)featuresPtr, (double *)labelsPtr, nRows, nColumns, l2Reg, (byte *)partialResultPtr, partialResultSize); -} - -EXPORT_API(void) ridgeRegressionOnlineFinalize(void * featuresPtr, void * labelsPtr, long long int nAllRows, int nRows, int nColumns, float l2Reg, void * partialResultPtr, int partialResultSize, - void * betaPtr, void * xtyPtr, void * xtxPtr) -{ - ridgeRegressionOnlineFinalizeTemplate((double *)featuresPtr, (double *)labelsPtr, nAllRows, nRows, nColumns, l2Reg, (byte *)partialResultPtr, partialResultSize, - (double *)betaPtr, (double *)xtyPtr, (double *)xtxPtr); -} diff --git a/src/Native/OneDalNative/OneDalAlgorithms.cpp b/src/Native/OneDalNative/OneDalAlgorithms.cpp new file mode 100644 index 0000000000..2d58aa016f --- /dev/null +++ b/src/Native/OneDalNative/OneDalAlgorithms.cpp @@ -0,0 +1,623 @@ +#include +#include +#include "daal.h" +#include "../Stdafx.h" + +using namespace std; +using namespace daal; +using namespace daal::algorithms; +using namespace daal::services; +using namespace daal::data_management; + + +bool getVerboseVariable() +{ + bool verbose = false; + #ifdef linux + if (const char* env_p = std::getenv("MLNET_BACKEND_VERBOSE")) + #elif _WIN32 + // WL Merge Note: std::getenv cause compilation error, use _dupenv_s in win, need to validate correctness. + char * env_p; + size_t size; + errno_t err = _dupenv_s(&env_p, &size, "MLNET_BACKEND_VERBOSE"); + if(!err && env_p) + #endif + verbose = true; + #ifdef _WIN32 + free(env_p); + #endif + + return verbose; +} +/* + Decision Forest regression tree traveler +*/ + +/* + ### Decision Forest regression wrappers ### + +*/ + +/* + Decision Forest classification tree traveler +*/ +template +class ClassifierNodeVisitor : public daal::algorithms::tree_utils::classification::TreeNodeVisitor +{ +public: + ClassifierNodeVisitor(size_t numberOfLeaves, bool verbose) + { + _verbose = verbose; + _numberOfLeaves = numberOfLeaves; + _lteChild = new int[_numberOfLeaves - 1]; + _gtChild = new int[_numberOfLeaves - 1]; + _splitFeature = new int[_numberOfLeaves - 1]; + _featureThreshold = new FPType[_numberOfLeaves - 1]; + _leafValues = new FPType[_numberOfLeaves]; + + _currentNode = 0; + _currentLeaf = -1; + _previousLevel = 0; + _previousNodes = new size_t[1024]; + } + + virtual bool onLeafNode(const tree_utils::classification::LeafNodeDescriptor & desc) + { + // step down + if (desc.level == _previousLevel + 1) + { + _lteChild[_previousNodes[_previousLevel]] = _currentLeaf; + } + // switch to different branch + else + { + _gtChild[_previousNodes[desc.level - 1]] = _currentLeaf; + } + _leafValues[-_currentLeaf - 1] = 1 - 2 * desc.prob[0]; + _previousLevel = desc.level; + _currentLeaf--; + + if (_verbose) + { + for (size_t i = 0; i < desc.level; ++i) std::cout << " "; + std::cout << "Level " << desc.level << ", leaf node. Label value = " << desc.label << ", Impurity = " << desc.impurity + << ", Number of samples = " << desc.nNodeSampleCount << ", Probabilities = { "; + for (size_t indexClass = 0; indexClass < 2; ++indexClass) + { + std::cout << desc.prob[indexClass] << ' '; + } + std::cout << "}" << std::endl; + + for (size_t i = 0; i < desc.level; ++i) std::cout << " "; + std::cout << "DEBUG: current level " << _previousLevel << " currentLeaf " << _currentLeaf + 1 << " previousNodes"; + for (size_t i = 0; i < desc.level; ++i) + std::cout << " " << _previousNodes[i]; + std::cout << std::endl; + } + return true; + } + + virtual bool onSplitNode(const tree_utils::classification::SplitNodeDescriptor & desc) + { + // step down or root node + if (desc.level == _previousLevel + 1 || desc.level == 0) + { + if (desc.level != 0) + _lteChild[_previousNodes[_previousLevel]] = _currentNode; + } + // switch to different branch + else + { + _gtChild[_previousNodes[desc.level - 1]] = _currentNode; + } + _splitFeature[_currentNode] = desc.featureIndex; + _featureThreshold[_currentNode] = desc.featureValue; + _previousNodes[desc.level] = _currentNode; + _previousLevel = desc.level; + _currentNode++; + + if (_verbose) + { + for (size_t i = 0; i < desc.level; ++i) std::cout << " "; + std::cout << "Level " << desc.level << ", split node. Feature index = " << desc.featureIndex << ", feature value = " << desc.featureValue + << ", Impurity = " << desc.impurity << ", Number of samples = " << desc.nNodeSampleCount << std::endl; + + for (size_t i = 0; i < desc.level; ++i) std::cout << " "; + std::cout << "DEBUG: current level " << _previousLevel << " currentNode " << _currentNode - 1 << " previousNodes"; + for (size_t i = 0; i < desc.level; ++i) + std::cout << " " << _previousNodes[i]; + std::cout << std::endl; + } + return true; + } + + void copyTreeStructureToBuffers(int * lteChild, int * gtChild, int * splitFeature, FPType * featureThreshold, FPType * leafValues) + { + for (size_t i = 0; i < _numberOfLeaves - 1; ++i) + { + lteChild[i] = _lteChild[i]; + gtChild[i] = _gtChild[i]; + splitFeature[i] = _splitFeature[i]; + featureThreshold[i] = _featureThreshold[i]; + leafValues[i] = _leafValues[i]; + } + leafValues[_numberOfLeaves - 1] = _leafValues[_numberOfLeaves - 1]; + + if (_verbose) + { + printf("Number of leaves: %d\n", -_currentLeaf - 1); + printf("Number of nodes: %lu\n", _currentNode); + } + } + + ~ClassifierNodeVisitor() + { + delete[] _previousNodes; + delete[] _lteChild; + delete[] _gtChild; + delete[] _splitFeature; + delete[] _featureThreshold; + delete[] _leafValues; + } + + size_t _numberOfLeaves; + int * _lteChild; + int * _gtChild; + int * _splitFeature; + FPType * _featureThreshold; + FPType * _leafValues; + + size_t * _previousNodes; + size_t _currentNode; + int _currentLeaf; + size_t _previousLevel; + bool _verbose; +}; + +/* + ### Decision Forest classification wrappers ### + + [DllImport(OneDalLibPath, EntryPoint = "decisionForestClassificationCompute")] + public static extern unsafe int DecisionForestClassificationCompute( + void* featuresPtr, void* labelsPtr, long nRows, int nColumns, int nClasses, int numberOfThreads, + float featureFractionPerSplit, int numberOfTrees, int numberOfLeaves, int minimumExampleCountPerLeaf, int maxBins, + void* lteChildPtr, void* gtChildPtr, void* splitFeaturePtr, void* featureThresholdPtr, void* leafValuesPtr, void* modelPtr) +*/ +template +int decisionForestClassificationComputeTemplate( + FPType * featuresPtr, FPType * labelsPtr, long long nRows, int nColumns, int nClasses, + int numberOfThreads, float featureFractionPerSplit, int numberOfTrees, int numberOfLeaves, int minimumExampleCountPerLeaf, int maxBins, + int * lteChildPtr, int * gtChildPtr, int * splitFeaturePtr, FPType * featureThresholdPtr, FPType * leafValuesPtr, byte* modelPtr) +{ + bool verbose = getVerboseVariable(); + if (verbose) + { + printf("%s\n", "Decision Forest Classification parameters:"); + printf("\t%s - %d\n", "numberOfThreads", numberOfThreads); + printf("\t%s - %d\n", "numberOfTrees", numberOfTrees); + printf("\t%s - %.6f\n", "featureFractionPerSplit", featureFractionPerSplit); + printf("\t%s - %d\n", "featureFractionPerSplit(int)", (int)(nColumns * featureFractionPerSplit)); + printf("\t%s - %d\n", "numberOfLeaves", numberOfLeaves); + printf("\t%s - %d\n", "minimumExampleCountPerLeaf", minimumExampleCountPerLeaf); + printf("\t%s - %d\n", "maxBins", maxBins); + } + + if (numberOfThreads != 0) + Environment::getInstance()->setNumberOfThreads(numberOfThreads); + + NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); + NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); + + decision_forest::classification::training::Batch algorithm(nClasses); + + algorithm.input.set(classifier::training::data, featuresTable); + algorithm.input.set(classifier::training::labels, labelsTable); + + algorithm.parameter().nTrees = numberOfTrees; + algorithm.parameter().observationsPerTreeFraction = 1; + algorithm.parameter().featuresPerNode = (int)(nColumns * featureFractionPerSplit); + algorithm.parameter().maxTreeDepth = 0; // unlimited growth in depth + algorithm.parameter().impurityThreshold = 0; + algorithm.parameter().varImportance = algorithms::decision_forest::training::MDI; + algorithm.parameter().resultsToCompute = algorithms::decision_forest::training::computeOutOfBagError; + algorithm.parameter().bootstrap = true; + algorithm.parameter().minObservationsInLeafNode = minimumExampleCountPerLeaf; + algorithm.parameter().minObservationsInSplitNode = 2; + algorithm.parameter().minWeightFractionInLeafNode = 0; + algorithm.parameter().minImpurityDecreaseInSplitNode = 0; + algorithm.parameter().maxLeafNodes = numberOfLeaves; + algorithm.parameter().maxBins = maxBins; + algorithm.parameter().minBinSize = 5; + + algorithm.compute(); + + decision_forest::classification::training::ResultPtr trainingResult = algorithm.getResult(); + decision_forest::classification::ModelPtr model = trainingResult->get(classifier::training::model); + + InputDataArchive dataArch; + trainingResult->serialize(dataArch); + int modelSize = dataArch.getSizeOfArchive(); + dataArch.copyArchiveToArray(modelPtr, modelSize); + + for (size_t i = 0; i < numberOfTrees; ++i) + { + ClassifierNodeVisitor visitor(numberOfLeaves, verbose); + model->traverseDFS(i, visitor); + + visitor.copyTreeStructureToBuffers( + lteChildPtr + i * (numberOfLeaves - 1), + gtChildPtr + i * (numberOfLeaves - 1), + splitFeaturePtr + i * (numberOfLeaves - 1), + featureThresholdPtr + i * (numberOfLeaves - 1), + leafValuesPtr + i * numberOfLeaves + ); + + if (verbose) + { + printf("lteChild:\n"); + for (size_t j = 0; j < numberOfLeaves - 1; ++j) + printf("%d ", lteChildPtr[i * (numberOfLeaves - 1) + j]); + printf("\n"); + + printf("gtChild:\n"); + for (size_t j = 0; j < numberOfLeaves - 1; ++j) + printf("%d ", gtChildPtr[i * (numberOfLeaves - 1) + j]); + printf("\n"); + + printf("splitFeature:\n"); + for (size_t j = 0; j < numberOfLeaves - 1; ++j) + printf("%d ", splitFeaturePtr[i * (numberOfLeaves - 1) + j]); + printf("\n"); + + printf("featureThreshold:\n"); + for (size_t j = 0; j < numberOfLeaves - 1; ++j) + printf("%f ", featureThresholdPtr[i * (numberOfLeaves - 1) + j]); + printf("\n"); + + printf("leafValues:\n"); + for (size_t j = 0; j < numberOfLeaves; ++j) + printf("%f ", leafValuesPtr[i * numberOfLeaves + j]); + printf("\n"); + } + } + + return modelSize; +} + +EXPORT_API(int) decisionForestClassificationCompute( + void * featuresPtr, void * labelsPtr, long long nRows, int nColumns, int nClasses, + int numberOfThreads, float featureFractionPerSplit, int numberOfTrees, int numberOfLeaves, int minimumExampleCountPerLeaf, int maxBins, + void * lteChildPtr, void * gtChildPtr, void * splitFeaturePtr, void * featureThresholdPtr, void * leafValuesPtr, void* modelPtr) +{ + return decisionForestClassificationComputeTemplate( + (float *)featuresPtr, (float *)labelsPtr, nRows, nColumns, nClasses, + numberOfThreads, featureFractionPerSplit, numberOfTrees, numberOfLeaves, minimumExampleCountPerLeaf, maxBins, + (int *)lteChildPtr, (int *)gtChildPtr, (int *)splitFeaturePtr, (float *)featureThresholdPtr, (float *)leafValuesPtr, (byte *)modelPtr); +} + +/* + [DllImport(OneDalLibPath, EntryPoint = "decisionForestClassificationPrediction")] + public static extern unsafe double DecisionForestClassificationPrediction( + void* featuresPtr, int nColumns, int nClasses, void* modelPtr, int modelSize); +*/ +template +double decisionForestClassificationPredictionTemplate( + FPType * featuresPtr, int nColumns, int nClasses, byte* modelPtr, int modelSize) +{ + OutputDataArchive dataArch(modelPtr, modelSize); + + decision_forest::classification::training::ResultPtr trainingResult(new decision_forest::classification::training::Result()); + trainingResult->deserialize(dataArch); + + double output; + NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, 1)); + + decision_forest::classification::prediction::Batch algorithm(nClasses); + + algorithm.input.set(classifier::prediction::data, featuresTable); + algorithm.input.set(classifier::prediction::model, trainingResult->get(classifier::training::model)); + + algorithm.parameter().votingMethod = decision_forest::classification::prediction::weighted; + algorithm.parameter().resultsToEvaluate |= static_cast(classifier::computeClassProbabilities); + + algorithm.compute(); + + classifier::prediction::ResultPtr predictionResult = algorithm.getResult(); + + NumericTablePtr predictionTable(predictionResult->get(classifier::prediction::probabilities)); + BlockDescriptor predictionBlock; + predictionTable->getBlockOfRows(0, predictionTable->getNumberOfRows(), readWrite, predictionBlock); + FPType * prediction = predictionBlock.getBlockPtr(); + output = prediction[0]; + predictionTable->releaseBlockOfRows(predictionBlock); + + return output; +} + +EXPORT_API(int) decisionForestClassificationPrediction( + void * featuresPtr, int nColumns, int nClasses, void* modelPtr, int modelSize) +{ + return decisionForestClassificationPredictionTemplate( + (float *)featuresPtr, nColumns, nClasses, (byte *)modelPtr, modelSize); +} + +/* + ### Logistic regression wrapper ### + + public unsafe static extern void LogisticRegressionCompute(void* featuresPtr, void* labelsPtr, void* weightsPtr, bool useSampleWeights, void* betaPtr, + long nRows, int nColumns, int nClasses, float l1Reg, float l2Reg, float accuracyThreshold, int nIterations, int m, int nThreads); +*/ +template +void logisticRegressionLBFGSComputeTemplate(FPType * featuresPtr, int * labelsPtr, FPType * weightsPtr, bool useSampleWeights, FPType * betaPtr, + long long nRows, int nColumns, int nClasses, float l1Reg, float l2Reg, float accuracyThreshold, int nIterations, int m, int nThreads) +{ + bool verbose = getVerboseVariable(); + if (verbose) + { + printf("%s\n", "Logistic Regression parameters:"); + printf("%s - %.12f\n", "l1Reg", l1Reg); + printf("%s - %.12f\n", "l2Reg", l2Reg); + printf("%s - %.12f\n", "accuracyThreshold", accuracyThreshold); + printf("%s - %d\n", "nIterations", nIterations); + printf("%s - %d\n", "m", m); + printf("%s - %d\n", "nClasses", nClasses); + printf("%s - %d\n", "nThreads", nThreads); + + const size_t nThreadsOld = Environment::getInstance()->getNumberOfThreads(); + printf("%s - %zd\n", "nThreadsOld", nThreadsOld); //Note: %lu cause compilation error, modify to %d + } + + Environment::getInstance()->setNumberOfThreads(nThreads); + + NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); + NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); + NumericTablePtr weightsTable(new HomogenNumericTable(weightsPtr, 1, nRows)); + + SharedPtr> lbfgsAlgorithm(new optimization_solver::lbfgs::Batch()); + lbfgsAlgorithm->parameter.batchSize = featuresTable->getNumberOfRows(); + lbfgsAlgorithm->parameter.correctionPairBatchSize = featuresTable->getNumberOfRows(); + lbfgsAlgorithm->parameter.L = 1; + lbfgsAlgorithm->parameter.m = m; + lbfgsAlgorithm->parameter.accuracyThreshold = accuracyThreshold; + lbfgsAlgorithm->parameter.nIterations = nIterations; + + if (nClasses == 1) + { + SharedPtr> logLoss(new optimization_solver::logistic_loss::Batch(featuresTable->getNumberOfRows())); + logLoss->parameter().numberOfTerms = featuresTable->getNumberOfRows(); + logLoss->parameter().interceptFlag = true; + logLoss->parameter().penaltyL1 = l1Reg; + logLoss->parameter().penaltyL2 = l2Reg; + + lbfgsAlgorithm->parameter.function = logLoss; + } + else + { + SharedPtr> crossEntropyLoss(new optimization_solver::cross_entropy_loss::Batch(nClasses, featuresTable->getNumberOfRows())); + crossEntropyLoss->parameter().numberOfTerms = featuresTable->getNumberOfRows(); + crossEntropyLoss->parameter().interceptFlag = true; + crossEntropyLoss->parameter().penaltyL1 = l1Reg; + crossEntropyLoss->parameter().penaltyL2 = l2Reg; + crossEntropyLoss->parameter().nClasses = nClasses; + + lbfgsAlgorithm->parameter.function = crossEntropyLoss; + } + + logistic_regression::training::Batch trainingAlgorithm(nClasses == 1 ? 2 : nClasses); + trainingAlgorithm.parameter().optimizationSolver = lbfgsAlgorithm; + trainingAlgorithm.parameter().penaltyL1 = l1Reg; + trainingAlgorithm.parameter().penaltyL2 = l2Reg; + trainingAlgorithm.parameter().interceptFlag = true; + + trainingAlgorithm.input.set(classifier::training::data, featuresTable); + trainingAlgorithm.input.set(classifier::training::labels, labelsTable); + if (useSampleWeights) + { + trainingAlgorithm.input.set(classifier::training::weights, weightsTable); + } + + trainingAlgorithm.compute(); + + logistic_regression::training::ResultPtr trainingResult = trainingAlgorithm.getResult(); + logistic_regression::ModelPtr modelPtr = trainingResult->get(classifier::training::model); + + NumericTablePtr betaTable = modelPtr->getBeta(); + if (betaTable->getNumberOfRows() != nClasses) + { + printf("Wrong number of classes in beta table\n"); + } + if (betaTable->getNumberOfColumns() != nColumns + 1) + { + printf("Wrong number of features in beta table\n"); + } + + BlockDescriptor betaBlock; + betaTable->getBlockOfRows(0, betaTable->getNumberOfRows(), readWrite, betaBlock); + FPType * betaForCopy = betaBlock.getBlockPtr(); + for (size_t i = 0; i < nClasses; ++i) + { + betaPtr[i] = betaForCopy[i * (nColumns + 1)]; + } + for (size_t i = 0; i < nClasses; ++i) + { + for (size_t j = 1; j < nColumns + 1; ++j) + { + betaPtr[nClasses + i * nColumns + j - 1] = betaForCopy[i * (nColumns + 1) + j]; + } + } + + if (verbose) + { + optimization_solver::iterative_solver::ResultPtr solverResult = lbfgsAlgorithm->getResult(); + NumericTablePtr nIterationsTable = solverResult->get(optimization_solver::iterative_solver::nIterations); + BlockDescriptor nIterationsBlock; + nIterationsTable->getBlockOfRows(0, 1, readWrite, nIterationsBlock); + int * nIterationsPtr = nIterationsBlock.getBlockPtr(); + + printf("Solver iterations: %d\n", nIterationsPtr[0]); + + logistic_regression::prediction::Batch predictionAlgorithm(nClasses == 1 ? 2 : nClasses); + // predictionAlgorithm.parameter().resultsToEvaluate |= + // static_cast(classifier::computeClassProbabilities); + predictionAlgorithm.input.set(classifier::prediction::data, featuresTable); + predictionAlgorithm.input.set(classifier::prediction::model, modelPtr); + predictionAlgorithm.compute(); + NumericTablePtr predictionsTable = predictionAlgorithm.getResult()->get(classifier::prediction::prediction); + BlockDescriptor predictionsBlock; + predictionsTable->getBlockOfRows(0, nRows, readWrite, predictionsBlock); + int * predictions = predictionsBlock.getBlockPtr(); + FPType accuracy = 0; + for (long i = 0; i < nRows; ++i) + { + if (predictions[i] == labelsPtr[i]) + { + accuracy += 1.0; + } + } + accuracy /= nRows; + predictionsTable->releaseBlockOfRows(predictionsBlock); + nIterationsTable->releaseBlockOfRows(nIterationsBlock); + printf("oneDAL LogReg traning accuracy: %f\n", accuracy); + } + + betaTable->releaseBlockOfRows(betaBlock); + +} + +EXPORT_API(void) logisticRegressionLBFGSCompute(void * featuresPtr, void * labelsPtr, void * weightsPtr, bool useSampleWeights, void * betaPtr, + long long nRows, int nColumns, int nClasses, float l1Reg, float l2Reg, float accuracyThreshold, int nIterations, int m, int nThreads) +{ + return logisticRegressionLBFGSComputeTemplate((float *)featuresPtr, (int *)labelsPtr, (float *)weightsPtr, useSampleWeights, (float *)betaPtr, + nRows, nColumns, nClasses, l1Reg, l2Reg, accuracyThreshold, nIterations, m, nThreads); +} + +/* + ### Ridge regression wrapper ### + + [DllImport(OneDalLibPath, EntryPoint = "ridgeRegressionOnlineCompute")] + public unsafe static extern int RidgeRegressionOnlineCompute(void* featuresPtr, void* labelsPtr, int nRows, int nColumns, float l2Reg, void* partialResultPtr, int partialResultSize); + + [DllImport(OneDalLibPath, EntryPoint = "ridgeRegressionOnlineFinalize")] + public unsafe static extern void RidgeRegressionOnlineFinalize(void* featuresPtr, void* labelsPtr, long nAllRows, int nRows, int nColumns, float l2Reg, void* partialResultPtr, int partialResultSize, + void* betaPtr, void* xtyPtr, void* xtxPtr); +*/ +template +int ridgeRegressionOnlineComputeTemplate(FPType * featuresPtr, FPType * labelsPtr, int nRows, int nColumns, float l2Reg, byte * partialResultPtr, int partialResultSize) +{ + // Create input data tables + NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); + NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); + FPType l2 = l2Reg; + NumericTablePtr l2RegTable(new HomogenNumericTable(&l2, 1, 1)); + + // Set up and execute training + ridge_regression::training::Online trainingAlgorithm; + trainingAlgorithm.parameter.ridgeParameters = l2RegTable; + + ridge_regression::training::PartialResultPtr pRes(new ridge_regression::training::PartialResult); + if (partialResultSize != 0) + { + OutputDataArchive dataArch(partialResultPtr, partialResultSize); + pRes->deserialize(dataArch); + trainingAlgorithm.setPartialResult(pRes); + } + + trainingAlgorithm.input.set(ridge_regression::training::data, featuresTable); + trainingAlgorithm.input.set(ridge_regression::training::dependentVariables, labelsTable); + trainingAlgorithm.compute(); + + // Serialize partial result + pRes = trainingAlgorithm.getPartialResult(); + InputDataArchive dataArch; + pRes->serialize(dataArch); + partialResultSize = (int)dataArch.getSizeOfArchive(); + dataArch.copyArchiveToArray(partialResultPtr, (size_t)partialResultSize); + + return partialResultSize; +} + +template +void ridgeRegressionOnlineFinalizeTemplate(FPType * featuresPtr, FPType * labelsPtr, long long int nAllRows, int nRows, int nColumns, float l2Reg, byte * partialResultPtr, int partialResultSize, + FPType * betaPtr, FPType * xtyPtr, FPType * xtxPtr) +{ + NumericTablePtr featuresTable(new HomogenNumericTable(featuresPtr, nColumns, nRows)); + NumericTablePtr labelsTable(new HomogenNumericTable(labelsPtr, 1, nRows)); + FPType l2 = l2Reg; + NumericTablePtr l2RegTable(new HomogenNumericTable(&l2, 1, 1)); + + ridge_regression::training::Online trainingAlgorithm; + + ridge_regression::training::PartialResultPtr pRes(new ridge_regression::training::PartialResult); + if (partialResultSize != 0) + { + OutputDataArchive dataArch(partialResultPtr, partialResultSize); + pRes->deserialize(dataArch); + trainingAlgorithm.setPartialResult(pRes); + } + + trainingAlgorithm.parameter.ridgeParameters = l2RegTable; + + trainingAlgorithm.input.set(ridge_regression::training::data, featuresTable); + trainingAlgorithm.input.set(ridge_regression::training::dependentVariables, labelsTable); + trainingAlgorithm.compute(); + trainingAlgorithm.finalizeCompute(); + + ridge_regression::training::ResultPtr trainingResult = trainingAlgorithm.getResult(); + ridge_regression::ModelNormEq * model = static_cast(trainingResult->get(ridge_regression::training::model).get()); + + NumericTablePtr xtxTable = model->getXTXTable(); + const size_t nBeta = xtxTable->getNumberOfRows(); + BlockDescriptor xtxBlock; + xtxTable->getBlockOfRows(0, nBeta, readWrite, xtxBlock); + FPType * xtx = xtxBlock.getBlockPtr(); + + size_t offset = 0; + for (size_t i = 0; i < nBeta; ++i) + { + for (size_t j = 0; j <= i; ++j) + { + xtxPtr[offset] = xtx[i * nBeta + j]; + offset++; + } + } + offset = 0; + for (size_t i = 0; i < nBeta; ++i) + { + xtxPtr[offset] += l2Reg * l2Reg * nAllRows; + offset += i + 2; + } + + NumericTablePtr xtyTable = model->getXTYTable(); + BlockDescriptor xtyBlock; + xtyTable->getBlockOfRows(0, xtyTable->getNumberOfRows(), readWrite, xtyBlock); + FPType * xty = xtyBlock.getBlockPtr(); + for (size_t i = 0; i < nBeta; ++i) + { + xtyPtr[i] = xty[i]; + } + + NumericTablePtr betaTable = trainingResult->get(ridge_regression::training::model)->getBeta(); + BlockDescriptor betaBlock; + betaTable->getBlockOfRows(0, 1, readWrite, betaBlock); + FPType * betaForCopy = betaBlock.getBlockPtr(); + for (size_t i = 0; i < nBeta; ++i) + { + betaPtr[i] = betaForCopy[i]; + } + + xtxTable->releaseBlockOfRows(xtxBlock); + xtyTable->releaseBlockOfRows(xtyBlock); + betaTable->releaseBlockOfRows(betaBlock); +} + +EXPORT_API(int) ridgeRegressionOnlineCompute(void * featuresPtr, void * labelsPtr, int nRows, int nColumns, float l2Reg, void * partialResultPtr, int partialResultSize) +{ + return ridgeRegressionOnlineComputeTemplate((double *)featuresPtr, (double *)labelsPtr, nRows, nColumns, l2Reg, (byte *)partialResultPtr, partialResultSize); +} + +EXPORT_API(void) ridgeRegressionOnlineFinalize(void * featuresPtr, void * labelsPtr, long long int nAllRows, int nRows, int nColumns, float l2Reg, void * partialResultPtr, int partialResultSize, + void * betaPtr, void * xtyPtr, void * xtxPtr) +{ + ridgeRegressionOnlineFinalizeTemplate((double *)featuresPtr, (double *)labelsPtr, nAllRows, nRows, nColumns, l2Reg, (byte *)partialResultPtr, partialResultSize, + (double *)betaPtr, (double *)xtyPtr, (double *)xtxPtr); +} diff --git a/src/Native/XGBoostNative/CMakeLists.txt b/src/Native/XGBoostNative/CMakeLists.txt new file mode 100644 index 0000000000..33258f2011 --- /dev/null +++ b/src/Native/XGBoostNative/CMakeLists.txt @@ -0,0 +1,22 @@ +project (XGBoostNative) + +if(NOT ${ARCHITECTURE} MATCHES "arm.*") + add_definitions(-DUSESSE) +endif() + +find_package(xgboost REQUIRED) + +if (XGBOOST_BUILD_STATIC_LIB) + enable_language(CXX) + # find again for those cxx libraries. + find_package(xgboost REQUIRED) +endif(XGBOOST_BUILD_STATIC_LIB) + +set(SOURCES XGBoostWrapper.cpp) +add_library(XGBoostNative SHARED ${SOURCES}) +target_link_libraries(XGBoostNative PRIVATE xgboost::xgboost) +install_library_and_symbols (XGBoostNative) + + + + diff --git a/src/Native/XGBoostNative/Readme.md b/src/Native/XGBoostNative/Readme.md new file mode 100644 index 0000000000..b9f33f1a5f --- /dev/null +++ b/src/Native/XGBoostNative/Readme.md @@ -0,0 +1,3 @@ +Built against XGBoost built from source. + +Remember to set the CMAKE_PREFIX_PATH env variable to your XGBoost install directory (for example $XGBOOST_ROOT/lib/cmake/xgboost) diff --git a/src/Native/XGBoostNative/XGBoostWrapper.cpp b/src/Native/XGBoostNative/XGBoostWrapper.cpp new file mode 100644 index 0000000000..8594aeb090 --- /dev/null +++ b/src/Native/XGBoostNative/XGBoostWrapper.cpp @@ -0,0 +1,12 @@ +//#include +//#include +#include +#include "../Stdafx.h" + +EXPORT_API(void) xgboostClfToDMatrix(void* featuresPtr, void* labels, void* results, long long nRows, long long nCols) +{ + DMatrixHandle dmatrix; + XGDMatrixCreateFromMat((float*)featuresPtr, nRows, nCols, 0, &dmatrix); + + return; +} diff --git a/src/Native/build.cmd b/src/Native/build.cmd index 7ac8702e70..27ea994706 100644 --- a/src/Native/build.cmd +++ b/src/Native/build.cmd @@ -16,8 +16,7 @@ set __BuildArch=x64 set __VCBuildArch=x86_amd64 set CMAKE_BUILD_TYPE=Debug set MKL_LIB_PATH="" -:: TODO - fix this path -::set ONEDAL_LIB_PATH="F:\one_dal" +set ONEDAL_LIB_PATH="" :Arg_Loop @@ -32,7 +31,7 @@ if /i [%1] == [arm] ( set __BuildArch=arm&&set __VCBuildArch=x86_arm&&sh if /i [%1] == [arm64] ( set __BuildArch=arm64&&set __VCBuildArch=x86_arm64&&shift&goto Arg_Loop) if /i [%1] == [--mkllibpath] ( set MKL_LIB_PATH=%2&&shift&goto Arg_Loop) -::if /i [%1] == [--onedallibpath] ( set ONEDAL_LIB_PATH=%2&&shift&goto Arg_Loop) +if /i [%1] == [--onedallibpath] ( set ONEDAL_LIB_PATH=%2&&shift&goto Arg_Loop) shift goto :Arg_Loop diff --git a/src/Native/build.sh b/src/Native/build.sh index c8b8abaef8..bd18f5157b 100755 --- a/src/Native/build.sh +++ b/src/Native/build.sh @@ -10,7 +10,7 @@ usage() echo " --configuration Build Configuration (Debug, Release)" echo " --stripSymbols Enable symbol stripping (to external file)" echo " --mkllibpath Path to mkl library." - echo " --onedalpath Path to OneDal library." + echo " --onedallibpath Path to OneDal library." exit 1 } @@ -31,8 +31,7 @@ __baseIntermediateOutputPath="$RootRepo/artifacts/obj" __versionSourceFile="$__baseIntermediateOutputPath/version.c" __mkllibpath="" __mkllibrpath="" -# TODO: remove CONDA_PREFIX with fix -__onedallibpath=$CONDA_PREFIX +__onedallibpath="" while [ "$1" != "" ]; do lowerI="$(echo $1 | awk '{print tolower($0)}')" @@ -57,7 +56,7 @@ while [ "$1" != "" ]; do shift __mkllibrpath=$1 ;; - --onedalpath) + --onedallibpath) shift __onedallibpath=$1 ;; diff --git a/test/Directory.Build.props b/test/Directory.Build.props index bdfe42bdb9..424d11fbb0 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -33,6 +33,7 @@ + " +22 area-System.Numerics Two Numerics Tests are failing only on our CI server Two of the tests in our System.Numerics.Vectors suite are failing only on our CI build server, and potentially only intermittently: Vector2NormalizeTest1 Vector4NormalizeTest2 Given that these are very similar to other tests which cover a similar edge-case (especially the Vector3 normalization tests, which aren't failing), we will need to investigate why these tests in particular are failing on our build server. This may have been a point-in-time issue as we brought up our build infrastructure, and may not re-surface again. +36 area-System.Numerics SIMD test failures on non-ENU configurations. After pulling both of @adamralph 's pull requests #31 and #32, I'm continuing to see test failures for SIMD on a DEU (German) test environment. Here's a representative error: d:\oss\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(545): error : System.Numerics.Tests.GenericVe ctorTests.ToStringCurrencySByte: Assert.Equal() Failure\r\nPosition: First difference is at position 8\r\nExpected: <97,00 ?, -108,00 ?, 22,00 ?, 29,00 ?, 49,00 ?, 60,00 ?, 103,00 ?, 58,00 ?, -62,00 ?, -124,00 ?, -117,00 ?, 48,00 ?, 15,00 ?, -35,00 ?, -13,00 ?, -34,00 ?>\r\nActual: <97,00 ?. -108,00 ?. 22,00 ?. 29,00 ?. 49,00 ?. 60,00 ?. 103 ,00 ?. 58,00 ?. -62,00 ?. -124,00 ?. -117,00 ?. 48,00 ?. 15,00 ?. -35,00 ?. -13,00 ?. -34,00 ?> [D:\oss\corefx\bin\ tools\fxbuild.proj] Observe that expected separates elements with a comma, actual separates elements with a dot. +41 area-System.Numerics Quaternion operator overloads should be using the respective methods Quaternion declares a handful of methods to perform addition, subtraction and multiplication, and provides the respective overloads for these operations. However, instead of re-using the `Add`, `Multiply` etc. methods, the code is re-written in the operator overloads. The operators should be using their respective methods rather than re-declaring the same code. This is under the assumption that the JIT inlines the methods when they are used in the operator overloads. +49 area-Infrastructure Add Linux/Mac build script A `build.sh` should be added alongside `build.cmd` to build corefx on Linux/Mac. +50 area-System.Numerics Made Quarternion's operator overloads use their respective methods "Operator overloads of Quaternion now utilize their respective methods, and removed redundant ""this"" qualifiers in Quaternion constructor. " +52 area-Meta ReferenceSource repo license incorrect for individual files some of the files I looked up, it has header comment with Apache 2.0 license. which license should apply for those files? MIT or Apache 2.0 +54 area-System.Xml "Remove always true ""if"" and unreachable code in System.Xml.Linq.XObject.SkipNotify method." "This: if (o.Annotations() != null) is always true because the above while can finish only in two conditions: when o != null or when o.annotations == null. The first condition will be catched by "" if (o == null)"" and if the second one is true, ""o.Annotations() != null"" will also always be true i think. " +55 area-System.Xml [Issue 54] Removed always-true if and unreachable code in XObject.cs Removed always-true if and unreachable code in XObject.cs +58 area-System.Xml System.Xml.sln fails to build on Mono, error CS0433 **I know that cross-platform support is coming later, I just thought it might make sense to document this here in case someone else tries the same** Building System.Xml.sln with xbuild on Mono doesn't work (the other solutions build fine), it throws the following errors: ``` Build FAILED. Errors: /home/alexander/dev/corefx/src/System.Xml.sln (default targets) -> (Build target) -> /home/alexander/dev/corefx/src/System.Xml.XPath.XDocument/System.Xml.XPath.XDocument.csproj (default targets) -> /usr/lib/mono/4.5/Microsoft.CSharp.targets (CoreCompile target) -> System/Xml/XPath/XAttributeExtensions.cs(10,56): error CS0433: The imported type `System.Xml.Linq.XAttribute' is defined multiple times System/Xml/XPath/XAttributeExtensions.cs(10,78): error CS0433: The imported type `System.Xml.Linq.XNamespace' is defined multiple times System/Xml/XPath/XDocumentExtensions.cs(22,61): error CS0433: The imported type `System.Xml.Linq.XNode' is defined multiple times System/Xml/XPath/XObjectExtensions.cs(10,23): error CS0433: The imported type `System.Xml.Linq.XContainer' is defined multiple times System/Xml/XPath/XObjectExtensions.cs(10,49): error CS0433: The imported type `System.Xml.Linq.XObject' is defined multiple times System/Xml/XPath/XNodeNavigator.cs(48,9): error CS0433: The imported type `System.Xml.Linq.XElement' is defined multiple times System/Xml/XPath/XNodeNavigator.cs(784,35): error CS0433: The imported type `System.Xml.Linq.XText' is defined multiple times ``` It looks like it runs into a conflict with the System.Xml.Linq library in the Mono GAC. Needs further investigation. +69 area-Infrastructure build.cmd does not build solution on HP laptop (when Platform=MCD is pre-set) "I've got HP laptop with windows 7. When I run build.cmd, I've got the error ""configuration is invalid"" ``` C:\Projects\dotnet\corefx>build.cmd C:\Projects\dotnet\corefx\src\System.Collections.Immutable.sln.metaproj : error MSB4126: указанная конфигурация решения ""Release|MCD"" недопустима. Укажите допустимую конфигурац ию решения с помощью свойств Configuration и Platform (например, MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform=""Any CPU"") или оставьте эти свойства пустыми, чтобы использовать конфигурацию решения по умолчанию. [C:\Projects\dotnet\corefx\src\System.Collections.Immutable.sln] ``` The reason of this error is that environment variable `Platform` is set to `MCD` on the laptop by default. I have to change build command in the build.cmd by adding `/p:Platform=""Any CPU""` to compile the project. Build script should check for allowed platforms and generate user-friendly error message, which says what to do to successfully compile the project when the platform is not supported. " +70 area-Meta Hello, World! sample "Feature request: please add ""Hello, World!"" sample, which shows how to use .NET Core with user applications. " +71 area-System.Numerics Behaviour of `Quaternion.CreateFromAxisAngle` when axis is not a unit vector "The resulting quaternion depends on the length of `axis`. This does not describe a rotation and thus does not match the documentation. There are a few ways to handle this issue: 1. Normalize `axis`, but this incurs a performance hit 2. Add a precondition that `axis.Length()` ≈ 1. But enforcing that pre-condition is about as expensive as 1), so it'd probably need to be a documentation-only precondition. Unfortunately this means that consumers will rely on the current behaviour even if it's undocumented, so I don't think that this is a good solution. 3. Document the current behaviour --- Just for convenience, the relevant source code: ``` /// /// Creates a Quaternion from a vector and an angle to rotate about the vector. /// /// The vector to rotate around. /// The angle, in radians, to rotate around the vector. /// The created Quaternion. public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle) { Quaternion ans; float halfAngle = angle * 0.5f; float s = (float)Math.Sin(halfAngle); float c = (float)Math.Cos(halfAngle); ans.X = axis.X * s; ans.Y = axis.Y * s; ans.Z = axis.Z * s; ans.W = c; return ans; } ``` " +72 area-System.Numerics `Equals` with NaN values (IEEE vs. reflexivity) The built in floating point types compare `NaN` as unequal when using `==` and `!=` (following IEEE semantics) but compare it as equal when using the `Equals` method. Your floating point based types currently use IEEE semantics even for `Equals`. I suggest using the same behaviour as the built in types in your floating point based types like vectors or quaternions. The MSDN documentation of `Equals` contains an exception that allows `A.Equals(A)` to return false on floating point types, so you don't strictly violate its contract. But returning false still breaks hash tables and does not match the behaviour of the built in types, so I consider it a bad idea. This can be avoided by calling `Equals` on the members instead of `==` in the implementation of `Equals` but not in `==` and `!=`. For example with quaternion, replace ``` public bool Equals(Quaternion other) { return (X == other.X && Y == other.Y && Z == other.Z && W == other.W); } ``` with ``` public bool Equals(Quaternion other) { return (X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z) && W.Equals(other.W)); } ``` You might want to add tests that check that `==` and `!=` compare all the above cases as unequal, so that they match the IEEE specification. Replace: ``` // Counterintuitive result - IEEE rules for NaN comparison are weird! Assert.False(a.Equals(a)); Assert.False(b.Equals(b)); Assert.False(c.Equals(c)); Assert.False(d.Equals(d)); ``` with: ``` // Equals does not follow IEEE semantics since many consumers rely on equality being reflexive. // This includes collections like `Dictionary` or `HashSet` Assert.True(a.Equals(a)); Assert.True(b.Equals(b)); Assert.True(c.Equals(c)); Assert.True(d.Equals(d)); // Counterintuitive result - IEEE rules for NaN comparison are weird! Assert.False(a == a); Assert.False(b == b); Assert.False(c == c); Assert.False(d == d); Assert.True(a != a); Assert.True(b != b); Assert.True(c != c); Assert.True(d != d); ``` +77 area-System.Xml Some Xml encoding tests lost their encoding Some of Xml tests were testing problematic characters in different Encoding (like Russian characters). At some point few years back the encoding was lost while moving between different repos. Tests pass because .cs files lost their encoding too. Tests need to be rewritten since there is no trace of original copy +81 area-System.Xml Add test coverage for XPath and XDocument - Adding test coverage for XPath implementations (XPath.XPathDocument, XPath.XmlDocument, XPath.XDocument) - Adding some tests for XDocument (more coming later) +94 area-Meta Necessary bits for Mono.Posix I tried to build [Mono.Posix](https://github.com/mono/mono/tree/master/mcs/class/Mono.Posix) against aspnetcore50 and found a lot of API that mono uses to be missing from .NET Core most prominently in the Interop-domain (like CustomMarshaler). Please add Mono.Posix to your list of scenarios that can benefit from the API surface of .NET Core. +110 area-System.Xml Add async document/element loading for XLinq. Adds XElement.LoadAsync and XDocument.LoadAsync. Code from the sync versions has been largely lifted out so they can share an implementation as much as possible. +116 area-System.Numerics Quaternion and public fields Is there a reason that the Quaternion struct has public exposed fields versus read only properties? Seems to be against the general guidelines for structs and immutability. Why would you want to allow X, Y, Z and W to be set outside of the ctor? +118 area-System.Numerics Matrix4x4 - more useful public properties Forward, Backward, Up, Down, Left, Right public properties for Matrix4x4 +119 area-System.Numerics Vector3 - more public static properties Up, Down, Left, Right, Forward, Backward vector public static properties +121 area-System.Numerics Matrix4x4 - more useful public properties Added Forward, Backward, Up, Down, Left, Right vectors public properties for Matrix4x4. Fix #118 +129 area-System.Xml Add XmlReader System.Xml.XmlReader is currently missing. +136 area-System.Xml XPath tests with expressions resulting in +/- infinity fail in Windows 10 "The following XPath tests fail for me on Windows 10 Technical Preview, build 9879: StringFunctionsTest2457 StringFunctionsTest2458 The call to Convert.ChangeType in XPathTests.Common.Utils.XPathObject is throwing a FormatException when the value passed is ""Infinity"" or ""-Infinity"". The tests pass for me on Windows 8.1. Each of these tests is part of 3 different test assemblies, resulting in 6 failures total: System.Xml.XPath.Tests.dll System.Xml.XPath.XDocument.Tests.dll System.Xml.XPath.XmlDocument.Tests.dll " +141 area-System.Numerics Added .ToArray() and .FromArray() for Vector types This commit adds Vector2.ToArray(), Vector2.FromArray(float[]), Vector3.ToArray(), Vector3.FromArray(float[]), Vector4.ToArray() and Vector4.FromArray(float[]). The FromArray method copies the array elements to a vector: the element at index 0 becomes X, the element at index 1 becomes Y and so on. The ToArray() method converts the vector to an array: it puts X at index 0, Y at index 1 and so on. These methods looked useful to me if you have an array but want to do vector operations. +142 area-System.Numerics Vector2 and Vector3 Projection The current source includes public static methods for reflection of a vector about a unit vector normal but the underlying vector projection is also useful by itself. Proposing: ``` C# public static Vector2 Project(Vector2 vector, Vector2 component) { ... } //... public static Vector3 Project(Vector3 vector, Vector3 component) { ... } ``` I'll wait for feed back before trying to submit a pull request. +144 area-Infrastructure All the linked files are in the root folder of the XML projects. When you reference files outside the project directory, such as the common directory in the XML code case, these links by default show up in the root of the project in VS which is very annoying and clutters the solution unnecessarily. We should add the appropriate metadata to these Compile items so that VS will group them correctly in the solution explorer. +149 area-System.Xml Wrong named tests in System.Xml.XmlDocument "- The files NodeChangingTests.cs, NodeChangedTests.cs, NodeInsertingTests.cs and NodeInsertedTests.cs contain test cases called ""RemoveEventHandler"". No test uses a ""Remove""-event. Maybe a Copy&Paste mistake from file NodeRemovedTests.cs. - The files NodeChangingTests.cs and NodeChangedTests.cs contain test cases called ""RemoveNode"" but testing a change of a node. " +156 area-System.Numerics Private static read only fields for Vectors Private static read only fields for One, Zero and Unit vectors on Vector2, Vector3 and Vector4. +157 area-System.Numerics Alternative versions of methods for Vectors and Matrices "Would be helpful to have alternative versions of methods with ""out"" parameter as result. Example: this ```C# public static Matrix CreateFromQuaternion(Quaternion quaternion) { ... } ``` and that ```C# public static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix result) { ... } ``` What do you think guys? Do you want to add that? " +176 area-System.Linq System.Linq.Parallel Tests are Failing on AppVeyor Machines The following 5 tests are failing (some intermittently) on our AppVeyor CI builds. I haven't investigated deeply, but I suspect it has to do with the limited hardware that the VM's are equipped with. Some of the test explicitly test whether multiple threads are created, which might not even be the case in an underpowered VM. +181 area-System.Linq Removes unnecessary object allocations because of delegates "I introduced several singletons to store delegate instances to avoid unnecessary object allocation in generic methods. #### For example `ParallelEnumerable.PerformAggregation()` method **Before:** ``` csharp private static T PerformAggregation(this ParallelQuery source, Func reduce, T seed, bool seedIsSpecified, bool throwIfEmpty, QueryAggregationOptions options) { Contract.Assert(source != null); Contract.Assert(reduce != null); Contract.Assert(options.IsValidQueryAggregationOption(), ""enum is out of range""); AssociativeAggregationOperator op = new AssociativeAggregationOperator( source, seed, null, seedIsSpecified, reduce, reduce, delegate (T obj) { return obj; }, throwIfEmpty, options); return op.Aggregate(); } ``` ``` IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.2 IL_0003: ldnull IL_0004: ldarg.3 IL_0005: ldarg.1 IL_0006: ldarg.1 IL_0007: ldnull IL_0008: ldftn !!0 System.Linq.ParallelEnumerable::'b__e'(!!0) >>> IL_000e: newobj instance void class [System.Runtime]System.Func`2::.ctor(object, native int) IL_0013: ldarg.s throwIfEmpty IL_0015: ldarg.s options IL_0017: newobj instance void class System.Linq.Parallel.AssociativeAggregationOperator`3::.ctor(class [System.Runtime]System.Collections.Generic.IEnumerable`1, !1, class [System.Runtime]System.Func`1, bool, class [System.Runtime]System.Func`3, class [System.Runtime]System.Func`3, class [System.Runtime]System.Func`2, bool, valuetype System.Linq.Parallel.QueryAggregationOptions) IL_001c: stloc.0 IL_001d: ldloc.0 IL_001e: callvirt instance !2 class System.Linq.Parallel.AssociativeAggregationOperator`3::Aggregate() IL_0023: stloc.1 IL_0024: br.s IL_0026 IL_0026: ldloc.1 IL_0027: ret ``` **After:** ``` csharp private static T PerformAggregation(this ParallelQuery source, Func reduce, T seed, bool seedIsSpecified, bool throwIfEmpty, QueryAggregationOptions options) { Contract.Assert(source != null); Contract.Assert(reduce != null); Contract.Assert(options.IsValidQueryAggregationOption(), ""enum is out of range""); AssociativeAggregationOperator op = new AssociativeAggregationOperator( source, seed, null, seedIsSpecified, reduce, reduce, IdentityFunction.Instance, throwIfEmpty, options); return op.Aggregate(); } ``` ``` IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.2 IL_0003: ldnull IL_0004: ldarg.3 IL_0005: ldarg.1 IL_0006: ldarg.1 >>> IL_0007: ldsfld class [System.Runtime]System.Func`2 class System.Linq.IdentityFunction`1::Instance IL_000c: ldarg.s throwIfEmpty IL_000e: ldarg.s options IL_0010: newobj instance void class System.Linq.Parallel.AssociativeAggregationOperator`3::.ctor(class [System.Runtime]System.Collections.Generic.IEnumerable`1, !1, class [System.Runtime]System.Func`1, bool, class [System.Runtime]System.Func`3, class [System.Runtime]System.Func`3, class [System.Runtime]System.Func`2, bool, valuetype System.Linq.Parallel.QueryAggregationOptions) IL_0015: stloc.0 IL_0016: ldloc.0 IL_0017: callvirt instance !2 class System.Linq.Parallel.AssociativeAggregationOperator`3::Aggregate() IL_001c: stloc.1 IL_001d: br.s IL_001f IL_001f: ldloc.1 IL_0020: ret ``` Where `IdentityFunction` looks like ``` csharp internal class IdentityFunction { public static readonly Func Instance = Function; private static T Function(T arg) { return arg; } } ``` " +187 area-System.IO Can the System.IO namespace be modified to manipulate device handles? "This assumes the `System.IO` and 'Microsoft.Win32.SafeHandles' namespace are being open sourced in CoreFX. If not close this ticket. Right now if you do the following: ``` var handle = File.Open(""\\\\.\\Global\\ProcmonDebugLogger"", FileMode.Append); ``` You get an exception **FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use of ""\.\"" in the path.** If you want raw device access, you need to use P/Invoke. I propose the following: ``` public sealed class Microsoft.Win32.SafeHandles.SafeDeviceHandle: SafeHandleZeroOrMinusOneIsInvalid { . . . } public static Microsoft.Win32.SafeHandles.SafeFileHandle System.IO.File.OpenHandle(string path) { public bool DeviceIoControl( . . .) { . . . } } public static Microsoft.Win32.SafeHandles.SafeDeviceHandle System.IO.File.OpenDeviceHandle(string path) { . . .} ``` My use case for this would be to remove the [PInvoke functons from ProceMonDebugOutput](https://github.com/Wintellect/ProcMonDebugOutput/blob/master/Source/Sysinternals.Debug/NativeMethods.cs) by @JohnWintellect. " +195 area-System.Xml [System.Xml.XPath] Few tests fail sometimes fail because of NRE Few tests are failing in the same place because of NRE. Stack trace (RegressionTestsTest557): E:\oss\corefx\bin\tools\tests.targets(17,5): error : XPathTests.FunctionalTests.MiscellaneousCases.RegressionTestsTests.RegressionTestsTest557: System.NullReferenceException : Object reference not set to an instance of an object. [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XmlDocumentEx.GetNamespaceXml(XmlDocument xmlDocument)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.DocumentXPathNavigator.MoveToFirstNamespace(XPathNamespaceScope scope)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.NamespaceQuery.Advance()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.Query.MoveNext()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.Query.get_Count()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.XPathSelectionIterator.get_Count()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathNodesetTest(String xml, String testExpression, XPathResult expected, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.FunctionalTests.MiscellaneousCases.RegressionTestsTests.RegressionTestsTest557() [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : XPathTests.FunctionalTests.CoreFunctionLibrary.StringFunctionsTests.StringFunctionsTest2465: System.NullReferenceException : Object reference not set to an instance of an object. [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XmlDocumentEx.GetNamespaceXml(XmlDocument xmlDocument)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.DocumentXPathNavigator.MoveToNextNamespace(XPathNamespaceScope scope)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.NamespaceQuery.Advance()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.ForwardPositionQuery.Evaluate(XPathNodeIterator context)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.BaseAxisQuery.Evaluate(XPathNodeIterator nodeIterator)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.MergeFilterQuery.Evaluate(XPathNodeIterator nodeIterator)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr, XPathNodeIterator context)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Select(XPathExpression expr)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.CreateNavigator(String xml, String startingNodePath, XmlNamespaceManager namespaceManager)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathObject[T](String xml, String testExpression, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathStringTest(String xml, String testExpression, Object expected, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.FunctionalTests.CoreFunctionLibrary.StringFunctionsTests.StringFunctionsTest2465() [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : XPathTests.FunctionalTests.Location.Paths.Axes.ComplexExpressionsTests.ComplexExpressionsTest348: System.NullReferenceException : Object reference not set to an instance of an object. [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XmlDocumentEx.GetNamespaceXml(XmlDocument xmlDocument)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.DocumentXPathNavigator.MoveToNextNamespace(XPathNamespaceScope scope)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.NamespaceQuery.Advance()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.Query.MoveNext()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.Query.get_Count()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.XPathSelectionIterator.get_Count()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathNodesetTest(String xml, String testExpression, XPathResult expected, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.FunctionalTests.Location.Paths.Axes.ComplexExpressionsTests.ComplexExpressionsTest348() [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : XPathTests.FunctionalTests.Location.Paths.Predicates.UsingPositionFunctionTests.UsingPositionFunctionTest681: System.NullReferenceException : Object reference not set to an instance of an object. [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XmlDocumentEx.GetNamespaceXml(XmlDocument xmlDocument)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.DocumentXPathNavigator.MoveToNextNamespace(XPathNamespaceScope scope)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.NamespaceQuery.Advance()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.MergeFilterQuery.Evaluate(XPathNodeIterator nodeIterator)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr, XPathNodeIterator context)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Select(XPathExpression expr)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathNodesetTest(String xml, String testExpression, XPathResult expected, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.FunctionalTests.Location.Paths.Predicates.UsingPositionFunctionTests.UsingPositionFunctionTest681() [E:\oss\corefx\bin\tools\fxbuild.proj] Stack trace (NodeSetFunctionsTest22100): E:\oss\corefx\bin\tools\tests.targets(17,5): error : XPathTests.FunctionalTests.CoreFunctionLibrary.NodeSetFunctionsTests.NodeSetFunctionsTest22100: System.NullReferenceException : Object reference not set to an instance of an object. [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XmlDocumentEx.GetNamespaceXml(XmlDocument xmlDocument)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.DocumentXPathNavigator.MoveToNextNamespace(XPathNamespaceScope scope)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.NamespaceQuery.Advance()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.FilterQuery.Advance()\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at MS.Internal.Xml.XPath.MergeFilterQuery.Evaluate(XPathNodeIterator nodeIterator)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr, XPathNodeIterator context)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at System.Xml.XPath.XPathNavigator.Select(XPathExpression expr)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.CreateNavigator(String xml, String startingNodePath, XmlNamespaceManager namespaceManager)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathObject[T](String xml, String testExpression, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.Common.Utils.XPathStringTest(String xml, String testExpression, Object expected, XmlNamespaceManager namespaceManager, String startingNodePath)\r [E:\oss\corefx\bin\tools\fxbuild.proj] E:\oss\corefx\bin\tools\tests.targets(17,5): error : at XPathTests.FunctionalTests.CoreFunctionLibrary.NodeSetFunctionsTests.NodeSetFunctionsTest22100() [E:\oss\corefx\bin\tools\fxbuild.proj] +201 area-System.Numerics Vector2/Vector3 could implement operator overloads For the sake of intuitive use, Vector2 and Vector3's `Public operator methods` could be extended with actual operator overloads. This promotes intuitive usage where `var vec = vecA * vecB;` is assumed to be more programmer-friendly than `var vec = Vector3.Multiply(vecA, vecB);`. I'm looking forward to your thoughts. +218 area-System.Console Add tests for System.Console library +219 area-System.Runtime Consider adding API to return common Funcs and Actions without reallocating See pull request #181: In that case, caching was proposed for System.Linq.Parallel. This means that other libraries can't share the same cache (which can grow by the number of generic instantiations). Furthermore, since the actual call sites affected in PLINQ were already allocating considerably, it is doubtful that PLINQ would benefit from the optimization. We should study if we can design public API in the BCL in the same vein as the new `Array.Empty().` _Before_ we do this, we should: 1. Gather data about how many places we have across the stack that would benefit from these shared allocations and find use cases in more compelling places than PLINQ. 2. Design the API. We can use this issue to discuss and evolve it in to a mini-spec. Here's an idea just to get that ball rolling on that. ``` C# namespace System { public static class CommonAction { public static Action Empty { get; } } public static class CommonFunc { public static Func AlwaysTrue(); public static Func Identity(); public static Func IsInstanceOf(); public static Func Cast(); } } ``` +220 area-System.Console Fix /property:OS=Unix build of System.Console Some resource strings got lost in the move to GitHub. There was also an inconsistency with the available NuGet packages and where SafeHandle lives. +221 area-System.Numerics Fix vector tests warnings about obsolete Marshal.SizeOf The System.Numerics.Vectors tests were causing build warnings like the following: ``` C# Vector2Tests.cs(15,29): warning CS0618: 'System.Runtime.InteropServices.Marshal.SizeOf(System.Type)' is obsolete: 'SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf(). ``` This changes does exactly that. +224 area-System.Console Implement simple console foreground/background color scoping via IDisposable "Just a simple API evolution that allows the developer to ""scope"" his color updates. Can be used like that : ``` csharp static void Main(string[] args) { Console.WriteLine(""Default""); using (Console.UseBackgroundColor(ConsoleColor.Red)) { Console.WriteLine(""Background red""); using (Console.UseForegroundColor(ConsoleColor.Green)) { Console.WriteLine(""Foreground green""); using (Console.UseForegroundColor(ConsoleColor.Yellow)) { Console.WriteLine(""Foreground yellow""); } Console.WriteLine(""Foreground green""); using (Console.UseBackgroundColor(ConsoleColor.Blue)) { Console.WriteLine(""Background blue""); } Console.WriteLine(""Background red""); } } Console.WriteLine(""Default""); } ``` And outputs like that : ![image](https://cloud.githubusercontent.com/assets/1341236/5394321/69d6a080-813c-11e4-95e9-98856de8555a.png) " +227 area-System.Text Added System.Text.RegularExpressions source This adds the product source code for the System.Text.RegularExpressions library. The tests will require the CoreCLR test runner to execute, so those will be added once the runner is available. +228 area-System.Xml Some tests are failing because of lacking System.String.Format overload build /p=IncludeTraits=ActiveIssue=228 Example tests Test Name: NameWithWhitespace Test FullName: XmlDocumentTests.XmlDocumentTests.CreateElementTests.NameWithWhitespace Test Source: e:\oss\corefx\src\System.Xml.XmlDocument\tests\XmlDocumentTests\CreateElementTests.cs : line 90 Test Outcome: Failed Test Duration: 0:00:00.091 Result Message: Assert.Throws() Failure Expected: typeof(System.Xml.XmlException) Actual: typeof(System.MissingMethodException): Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'. Result StackTrace: at System.Xml.XmlExceptionHelper.BuildCharExceptionArgs(Char invChar, Char nextChar) at System.Xml.XmlExceptionHelper.BuildCharExceptionArgs(String data, Int32 invCharIndex) in e:\oss\corefx\src\Common\src\System\Xml\ValidateNames.cs:line 349 at System.Xml.XmlDocument.CheckName(String name) in e:\oss\corefx\src\System.Xml.XmlDocument\src\System\Xml\Dom\XmlDocument.cs:line 110 at System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) in e:\oss\corefx\src\System.Xml.XmlDocument\src\System\Xml\Dom\XmlElement.cs:line 22 at System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) in e:\oss\corefx\src\System.Xml.XmlDocument\src\System\Xml\Dom\XmlDocument.cs:line 713 at System.Xml.XmlDocument.CreateElement(String name) in e:\oss\corefx\src\System.Xml.XmlDocument\src\System\Xml\Dom\XmlDocument.cs:line 492 at XmlDocumentTests.XmlDocumentTests.CreateElementTests.<>c__DisplayClass10.b__c() in e:\oss\corefx\src\System.Xml.XmlDocument\tests\XmlDocumentTests\CreateElementTests.cs:line 92 +230 area-Meta XML Documentation comments not included "I was looking through the recently added Regex code and noticed that a lot of XML documentation summaries are not there, but they do show up in the .NET Framework documentation. Are the comments stored in an external file? If so, isn't it better to include them in the code or provide the external files? Some people would like to compile the libraries themselves and they would be missing a lot of inline documentation. **Example** _.NET Framework_ ![Documentation](http://i.imgur.com/ySqyI81.png) _.NET Core_ ![No Documentation](http://i.imgur.com/RvBK6fh.png) " +231 area-System.Text Improve performance of Regex ctor and IsMatch "The Regex class maintains a cache of byte codes, which the Regex ctor indexes into using a key. It uses this seemingly innocuous line to create that key: ``` C# String key = ((int)options).ToString(NumberFormatInfo.InvariantInfo) + "":"" + cultureKey + "":"" + pattern; ``` This, however, has the unfortunate effect of allocating a string for the options, a string array for the five strings to be passed to the String.Concat call generated by the compiler, another string array allocation inside of Concat, and then the resulting string for the whole operation. The cost of those allocations is causing a non-trivial slowdown for repeated Regex.IsMatch calls for simple regular expressions, such as for a phone number (e.g. from the MSDN docs ""^\d{3}-\d{3}-\d{4}$""). This commit adds a new struct key type that just stores the constitutent options, cultureKey, and pattern, rather than creating a string to store them. That key is then what's stored in each entry in the cache. For repeated Regex.IsMatch calls for basic regular expressions like the phone number one previously mentioned, on my machine this improves throughput by ~35%, in large part due to an ~80% reduction in number of allocations, and (for this particular test case) an ~70% reduction in number of bytes allocated (it depends primarily on the length of the pattern and the length of the culture name). " +234 area-System.Numerics Some System.Numerics.Vector tests are disabled without comment build /p:IncludeTraits=ActiveIssue=234 +235 area-System.Linq Some System.Linq.Parallel tests are disabled without comment build /p:IncludeTraits=ActiveIssue=235 +240 area-System.Linq Some System.Linq.Parallel tests are super slow on CI Deadlock or super slow build /p:IncludeTraits=ActiveIssue=240 +241 area-System.Linq Fix multiple projects for optimizations, debug/trace, etc. System.Linq.Parallel.csproj wasn't outputting symbols, and it didn't have optimizations enabled in Release. System.Numerics.Vectors.csproj was setting TRACE in Release builds but not in Debug builds. System.Text.RegularExpressions.csproj wasn't setting either DEBUG nor RELEASE constants in either Debug/Release builds, it didn't have optimizations enabled in Release, and it wasn't generating symbols in either. The XML libraries were't setting DEBUG/TRACE in either Debug/Release builds, weren't enabling optimizations in Release builds, and weren't generating symbols in either. DEBUG is important in almost all of these libraries, as they use Debug.\* for asserts and the like. Symbol generation is important for debugging. Optimizations are obviously important (but just to verify I saw significant performance wins in multiple libraries just from turning this on in release). TRACE isn't really important, as none of the libraries do release tracing, but I thought it good hygiene to enable it. +247 area-Meta Add Security transparency Since Code Access Security is a thing of the past with .NET Core, I wouldn't expect permissions or security attributes to be used (or even to exist). I didn't see permissions anywhere in the current code: they seem to have be completely removed from .NET Core as expected. However, [several committed files](https://github.com/dotnet/corefx/search?q=SecurityCritical+OR+SecuritySafeCritical&type=Code) still use `SecurityCriticalAttribute` or `SecuritySafeCriticalAttribute`. Is this a left-over from the .NET framework code? I expect so, since they mean nothing without permission checks. If this is intended, what are the guidelines about using them? +249 area-System.Collections Memory allocation documentation for ImmutableDictionary Keys and Values ## Background As described in #246 (and previously in #147), the `Keys` and `Values` properties of `ImmutableDictionary` cannot be used without incurring memory allocations on the heap. However, a slight modification of user code provides _equivalent_ behavior without these allocations. With allocations: ``` csharp foreach (var key in dictionary.Keys) { ... } ``` Without allocations: ``` csharp foreach (var pair in dictionary) { var key = pair.Key; } ``` ## Suggestion Since updating the `Keys` and `Values` properties to eliminate the allocations would be a breaking change (#246), the only recourse is to update the documentation for these properties to describe steps a user can take to avoid allocations if these properties are used heavily within a particular application. ## Caveat Care must be taken to ensure that the documentation does not read in a way that suggests the `Keys` and `Values` properties should not be used. The properties behave properly and would not be even a measurable source of time spent in the application in nearly all cases. This notice is only meant for users making heavy use of these properties who are also actively working to reduce the memory allocations performed within an especially performance-sensitive section of code. +251 area-System.Text Fix DEBUG constant name It looks like DBG was being used instead of DEBUG at System.Text.RegularExpressions. Was this on purpose? +252 area-System.Text Fix some more XML docs I know that the documentation will be updated eventually, but in the meanwhile we can have a few less compiler warnings if you guys agree. +253 area-System.Text Fix GetGroup never returning EmptyGroup This is a very obvious bug: _captureMap probably used to be a hashtable and the code was not properly refactored. I took the opportunity to redo the method using the Dictionary equivalent logic. Not adding unit tests for this, because the unit test project seems to be missing, and I'm not sure if you guys are going to add it or not, so let me know how to proceed. +254 area-System.Text Improve Dictionary access Just spotted this quick dictionary access optimization. +255 area-System.Text Improve Dictionary access +262 area-System.Reflection System.Reflection.Metadata should provide easier signature reading API **EDIT** 12/3/2015 - Replaced entire description with the detailed proposal matching PR #4809 Today, System.Reflection.Metadata provides low-level access to ECMA-335 CLI metadata, but only provides signatures as blobs that must be parsed with direct knowledge of the format as described in the section II.23.2 of the CLI specification. There is a `BlobReader` for reading various elements out of blobs, but it is up to the caller to read the right things at the right positions. This was by-design as the library is designed to sit at the lowest level behind the scenes of higher level API such as Reflection proper, Roslyn, or CCI. The challenge with signatures is that they are variable-length and encode tree structures, and each higher level model that could sit on top of System.Reflection.Metadata will have different representations for the trees. We do not want to introduce an API to build a fully-formed tree that then has to be traversed and rewritten to match the actual use case. This proposal is therefore a middle ground between: 1. Here are the bytes and some helpers. Read the spec to decode. (Status quo) 2. Yet another high-level metadata API. (Out-of-scope for this layer) It works as follows: 1. The caller chooses an arbitrary representation, `TType`, for type symbols and implements `ISignatureTypeProvider`. (See full API spec below). 2. Signatures are parsed by recursive descent and the provider is called to create new type nodes: - _Give me the `TType` that represents this primitive_ - _Give me the `TType` that represents this TypeDefinition_ - _Give me the `TType` that represents an array of this other TType_ - _etc._ # Sample Usage Given a suitable `TypeSymbol` and `TypeSymbolProvider : ISignatureTypeProvider`, here is code walking all of the `TypeSymbol`'s for every field, parameter, and return type: ``` C# using (var stream = File.OpenRead(pathToDll)) using (var peReader = new PEReader(stream)) { var reader = peReader.GetMetadataReader(); var provider = new TypeSymbolProvider(); foreach (TypeDefinitionHandle typeHandle in reader.TypeDefinitions) { TypeDefinition type = reader.GetTypeDefinition(typeHandle); foreach (FieldDefinitionHandle fieldHandle in type.GetFields()) { FieldDefinition field = reader.GetFieldDefinition(fieldHandle); TypeSymbol fieldType = field.DecodeSignature(provider); // ... } foreach (MethodDefinitionHandle methodHandle in type.GetMethods()) { MethodDefinition method = reader.GetMethodDefinition(methodHandle); MethodSignature methodSig = method.DecodeSignature(provider); TypeSymbol returnType = methodSig.ReturnType; // ... foreach (TypeSymbol parameterType in methodSig.ParameterTypes) { // ... } } } } ``` # Full API ## Additions to existing types These provide convenience entry points. There are other use cases where you want to parse only part of a signature or a signature that you did not obtain from the metadata reader. For that, the `SignatureDecoder` ``` C# namespace System.Reflection.Metadata { public struct FieldDefinition { public TType DecodeSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); } public struct MemberReference { public TType DecodeFieldSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); public MethodSignature DecodeMethodSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); // MemberReferenceKind GetKind(); already exists } public struct MethodDefinition { public MethodSignature DecodeSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); } public struct MethodSpecification { public ImmutableArray DecodeSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); } public struct PropertyDefinition { public MethodSignature DecodeSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); } public struct StandaloneSignature { public ImmutableArray DecodeLocalSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); public MethodSignature DecodeMethodSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); public StandaloneSignatureKind GetKind(); } public enum StandaloneSignatureKind { LocalVariables = 1, Method = 0, } public struct TypeSpecification { public TType DecodeSignature( ISignatureTypeProvider provider, SignatureDecoderOptions options=SignatureDecoderOptions.None); } } ``` ## New types ``` C# namespace System.Reflection.Metadata.Decoding { public struct ArrayShape { public ArrayShape(int rank, ImmutableArray sizes, ImmutableArray lowerBounds); public ImmutableArray LowerBounds { get; } public int Rank { get; } public ImmutableArray Sizes { get; } } public interface IConstructedTypeProvider : ISZArrayTypeProvider { TType GetArrayType(TType elementType, ArrayShape shape); TType GetByReferenceType(TType elementType); TType GetGenericInstance(TType genericType, ImmutableArray typeArguments); TType GetPointerType(TType elementType); } public interface IPrimitiveTypeProvider { TType GetPrimitiveType(PrimitiveTypeCode typeCode); } public interface ITypeProvider { TType GetTypeFromDefinition( MetadataReader reader, TypeDefinitionHandle handle, SignatureTypeHandleCode code); TType GetTypeFromReference( MetadataReader reader, TypeReferenceHandle handle, SignatureTypeHandleCode code); } public interface ISignatureTypeProvider : IConstructedTypeProvider, IPrimitiveTypeProvider, ITypeProvider { TType GetFunctionPointerType(MethodSignature signature); TType GetGenericMethodParameter(int index); TType GetGenericTypeParameter(int index); TType GetModifiedType( MetadataReader reader, bool isRequired, EntityHandle modifierTypeHandle, TType unmodifiedType); TType GetPinnedType(TType elementType); } public interface ISZArrayTypeProvider { TType GetSZArrayType(TType elementType); } public struct MethodSignature { public MethodSignature( SignatureHeader header, TType returnType, int requiredParameterCount, int genericParameterCount, ImmutableArray parameterTypes); public int GenericParameterCount { get; } public SignatureHeader Header { get; } public ImmutableArray ParameterTypes { get; } public int RequiredParameterCount { get; } public TType ReturnType { get; } } public enum PrimitiveTypeCode : byte { Boolean = (byte)2, Byte = (byte)5, Char = (byte)3, Double = (byte)13, Int16 = (byte)6, Int32 = (byte)8, Int64 = (byte)10, IntPtr = (byte)24, Object = (byte)28, SByte = (byte)4, Single = (byte)12, String = (byte)14, TypedReference = (byte)22, UInt16 = (byte)7, UInt32 = (byte)9, UInt64 = (byte)11, UIntPtr = (byte)25, Void = (byte)1, } public struct SignatureDecoder { public SignatureDecoder( ISignatureTypeProvider provider, MetadataReader metadataReader=null, SignatureDecoderOptions options=SignatureDecoderOptions.None); public TType DecodeFieldSignature(ref BlobReader blobReader); public ImmutableArray DecodeLocalSignature(ref BlobReader blobReader); public MethodSignature DecodeMethodSignature(ref BlobReader blobReader); public ImmutableArray DecodeMethodSpecificationSignature(ref BlobReader blobReader); public TType DecodeType(ref BlobReader blobReader); } public enum SignatureDecoderOptions { DifferentiateClassAndValueTypes = 1, None = 0, } public enum SignatureTypeHandleCode : byte { Class = (byte)18, Unresolved = (byte)0, ValueType = (byte)17, } } ``` # Notes - The interface segregation of `ISignatureTypeProvider` is for future `TypeNameParser` and `CustomAttributeDecoder` (still under development in dev/metadata branch), which share some but not all of the same requirements for a type provider as the `SignatureDecoder` +267 area-System.Text Remove superfluous internal access modifier I'm not sure I see the point in having the internal modifier on these fields, but if I'm missing something feel free to close. +271 area-System.Text Regex collections should implement generic collection interfaces "`CaptureCollection`, `GroupCollection`, and `MatchCollection` currently only implement the non-generic `ICollection` interface. These collections should implement the generic collection interfaces to better interoperate with more modern APIs, such as LINQ. Since these collections are already indexable, they should implement `IList` and `IReadOnlyList`, as well as the non-generic `IList` (to be consistent with the generic interfaces). ## Rationale and Usage This is certainly a nice-to-have, but it _is_ a long-standing [request](https://connect.microsoft.com/VisualStudio/feedback/details/469250/capturecollection-groupcollection-and-matchcollection-do-not-implement-icollection-t-and-ienumerable-t) that [developers](http://stackoverflow.com/q/7274422) [still](http://jimlynn.wordpress.com/2009/11/04/why-cant-i-use-linq-on-a-capturecollection/) [ask](http://stackoverflow.com/q/16379433) [about](http://stackoverflow.com/q/4108956). Implementing the generic interfaces will allow these collections to be used more easily with LINQ and interoperate better with more modern framework and library APIs. For example, to use these collections with LINQ right now you have to know about and remember to use `Enumerable.Cast()` to cast the non-generic `IEnumerable` into an `IEnumerable`: ``` c# var captures = from capture in match.Groups.Cast().Last().Captures.Cast() select capture.Value; ``` With these changes you'd no longer have to do that: ``` c# var captures = from capture in match.Groups.Last().Captures select capture.Value; ``` Plus, in the above example, you'd get a performance improvement when using `Enumerable.Last.()` as its implementation has a fast-path for collections that implement `IList`. ## Proposed API ``` c# // DebuggerDisplay and DebuggerTypeProxy added [DebuggerDisplay(""Count = {Count}"")] [DebuggerTypeProxy(typeof(RegexCollectionDebuggerProxy))] // Previously only implemented ICollection public class CaptureCollection : IList, IReadOnlyList, IList { // Existing members public int Count { get; } public Capture this[int i] { get; } public IEnumerator GetEnumerator(); object ICollection.SyncRoot { get; } bool ICollection.IsSynchronized { get; } void ICollection.CopyTo(Array array, int arrayIndex); // Proposed members public void CopyTo(Capture[] array, int arrayIndex); IEnumerator IEnumerable.GetEnumerator(); int IList.IndexOf(Capture item); void IList.Insert(int index, Capture item); void IList.RemoveAt(int index); Capture IList.this[int index] { get; set; } void ICollection.Add(Capture item); void ICollection.Clear(); bool ICollection.Contains(Capture item); bool ICollection.IsReadOnly { get; } bool ICollection.Remove(Capture item); int IList.Add(object value); void IList.Clear(); bool IList.Contains(object value); int IList.IndexOf(object value); IList.Insert(int index, object value); bool IList.IsFixedSize { get; } bool IList.IsReadOnly { get; } void IList.Remove(object value); void IList.RemoveAt(int index); object IList.this[int index] { get; set; } } // DebuggerDisplay and DebuggerTypeProxy added [DebuggerDisplay(""Count = {Count}"")] [DebuggerTypeProxy(typeof(RegexCollectionDebuggerProxy))] // Previously only implemented ICollection public class GroupCollection : IList, IReadOnlyList, IList { // Existing members public int Count { get; } public Group this[int groupnum] { get; } public Group this[String groupname] { get; } public IEnumerator GetEnumerator(); object ICollection.SyncRoot { get; } bool ICollection.IsSynchronized { get; } void ICollection.CopyTo(Array array, int arrayIndex); // Proposed members public void CopyTo(Group[] array, int arrayIndex); IEnumerator IEnumerable.GetEnumerator(); int IList.IndexOf(Group item); void IList.Insert(int index, Group item); void IList.RemoveAt(int index); Group IList.this[int index] { get; set; } void ICollection.Add(Group item); void ICollection.Clear(); bool ICollection.Contains(Group item); bool ICollection.IsReadOnly { get; } bool ICollection.Remove(Group item); int IList.Add(object value); void IList.Clear(); bool IList.Contains(object value); int IList.IndexOf(object value); IList.Insert(int index, object value); bool IList.IsFixedSize { get; } bool IList.IsReadOnly { get; } void IList.Remove(object value); void IList.RemoveAt(int index); object IList.this[int index] { get; set; } } // DebuggerDisplay and DebuggerTypeProxy added [DebuggerDisplay(""Count = {Count}"")] [DebuggerTypeProxy(typeof(RegexCollectionDebuggerProxy))] // Previously only implemented ICollection public class MatchCollection : IList, IReadOnlyList, IList { // Existing members public int Count { get; } public virtual Match this[int i] { get; } public IEnumerator GetEnumerator(); object ICollection.SyncRoot { get; } bool ICollection.IsSynchronized { get; } void ICollection.CopyTo(Array array, int arrayIndex); // Proposed members public void CopyTo(Match[] array, int arrayIndex); IEnumerator IEnumerable.GetEnumerator(); int IList.IndexOf(Match item); void IList.Insert(int index, Match item); void IList.RemoveAt(int index); Match IList.this[int index] { get; set; } void ICollection.Add(Match item); void ICollection.Clear(); bool ICollection.Contains(Match item); bool ICollection.IsReadOnly { get; } bool ICollection.Remove(Match item); int IList.Add(object value); void IList.Clear(); bool IList.Contains(object value); int IList.IndexOf(object value); IList.Insert(int index, object value); bool IList.IsFixedSize { get; } bool IList.IsReadOnly { get; } void IList.Remove(object value); void IList.RemoveAt(int index); object IList.this[int index] { get; set; } } ``` ## Details - There was some discussion as to whether only the read-only interfaces should be implemented, or both the read-only and mutable interfaces. The consensus is to implement both the read-only and mutable interfaces. This is consistent with other collections in the framework. The mutable interfaces are implemented as read-only: mutable members are implemented explicitly and throw `NotSupportedException` (like `ReadOnlyCollection`). - There was an open question as to whether the non-generic `IList` should be implemented as well. These collections are indexable and if `IList` and `IReadOnlyList` are being implemented, `IList` should be implemented as well. This does add several more members, but they are all implemented explicitly so they don't add any new public members to intellisense, and the implementations are very straightforward. - `ICollection.CopyTo` is implemented implicitly (public). - All other new members are implemented explicitly (non-public): - Mutable members are implemented explicitly because these collections are read-only and the mutable members throw `NotSupportedException` (like `ReadOnlyCollection`). - `IList` members are implemented explicitly to hide non-generic members from intellisense. - `IList.IndexOf` and `ICollection.Contains` are implemented explicitly because these methods aren't very useful for these collections and should not be visible in intellisense by default. They're not useful because an implementation using `EqualityComparer.Default` (consistent with other collections) will search the collection using reference equality due to the fact that `Capture`, `Group`, and `Match` do not implement `IEquatable` and do not override `Equals()` and `GetHashCode()`. Further, these types do not have public constructors -- they are created internally by the regex engine, making it very unlikely that you'd want to search for an item in a collection ""A"" that was obtained from collection ""B"". - `IEnumerable.GetEnumerator()` must be implemented explicitly because the non-generic `IEnumerable.GetEnumerator()` is already implemented implicitly and we can't overload on return type. This also precludes returning a `struct` `Enumerator` (for better enumeration performance) because changing the return type of the existing method would be a binary breaking change. As a result, you'll still have to specify the type when using `foreach` (e.g. `foreach (Capture capture in captures)`); you won't be able to use `var` (e.g. `foreach (var capture in captures)`), unfortunately. ## Open Questions - Should `GroupCollection` implement `IDictionary`, `IReadOnlyDictionary`, and `IDictionary`? `GroupCollection` already has a string indexer. Is it worth implementing the dictionary interfaces as part of this? Personally, I'm leaning toward ""no"" because there isn't a compelling scenario for the dictionary interfaces, and they can always be added in the future when needed. ## Pull Request A PR with the proposed changes is available: #1756 ## Updates - Edited this description to make it more of a _speclet_, based on the discussion below and the proposed API Review process. - Some improvements based on feedback from @sharwell. - Fixed existing members. - Added `IList`. These collections are indexable and it would be strange if `IList` and `IReadOnlyList` were implemented alongside `ICollection` but without `IList`. - Added `DebuggerDisplay` and `DebuggerTypeProxy` attributes. - Made `ICollection.CopyTo` implicit (public). " +277 area-System.Text Update regular expressions collections to implement IReadOnlyList Fixes #271 I believe this is the least intrusive path to implementing the requested functionality. I considered the following items but decided to not include them with this pull request. - `GroupEnumerator` is internal, so it might be possible to change the type of `GroupEnumerator.Capture` from `Capture` to `Group`. This would make the explicit cast in the generic `Current` property unnecessary. - I did not update `CaptureCollection` to implement `IReadOnlyDictionary`, primarily because it's a larger change with the addition of the `Keys` and `Values` properties (even if they are explicitly implemented). This should probably be reviewed independently from a straightforward implementation of `IReadOnlyList`. +281 area-System.Diagnostics System.Diagnostics.FileVersionInfo different/incorrect behaviors compared to .NET Framework FileVersionInfo solely depends on System.IO.FileSystem (and all of its dependencies, including System.IO, System.Threading.Tasks, etc) just to do a File.Exists in GetVersionInfo. We should remove this and instead see if we can use the return value of GetFileVersionInfoSizeEx to mimic the same behavior. +283 area-System.Linq System.Linq.Parallel test assembly disabled as it takes too long on AppVeyor The System.Linq.Parallel test assembly is disabled because it takes 50 seconds to run on my development machine and lots and lots of time to run on AppVeyor. +284 area-System.Xml XPath AxesCombination tests are failing on debug builds While running with debug builds the following AxesCombination Tests are failing with the below assert: \src\Common\tests\System.Xml.XPath\FuncLocation\PathAxeCombinationsTests.cs AxesCombinationsTest2142 AxesCombinationsTest2143 AxesCombinationsTest2144 IsSamePosition() on custom navigator returns inconsistent results at XPathNavigator.ComparePosition(XPathNavigator nav) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\XPathNavigator.cs(711) at Query.CompareNodes(XPathNavigator l, XPathNavigator r) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\Internal\Query.cs(150) at Query.Insert(List`1 buffer, XPathNavigator nav) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\Internal\Query.cs(109) at DocumentOrderQuery.Evaluate(XPathNodeIterator context) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\Internal\DocumentOrderQuery.cs(20) at BaseAxisQuery.Evaluate(XPathNodeIterator nodeIterator) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\Internal\BaseAxisQuery.cs(108) at XPathNavigator.Evaluate(XPathExpression expr, XPathNodeIterator context) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\XPathNavigator.cs(802) at XPathNavigator.Evaluate(XPathExpression expr) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\XPathNavigator.cs(784) at XPathNavigator.Select(XPathExpression expr) d:\github\corefx\src\System.Xml.XPath\src\System\Xml\XPath\XPathNavigator.cs(764) at Utils.XPathNodesetTest(String xml, String testExpression, XPathResult expected, XmlNamespaceManager namespaceManager, String startingNodePath) d:\github\corefx\src\Common\tests\System.Xml.XPath\Common\Utils.cs(128) at AxesCombinationsTests.AxesCombinationsTest2144() d:\github\corefx\src\Common\tests\System.Xml.XPath\FuncLocation\PathAxeCombinationsTests.cs(44979) +292 area-System.Text Add Regex Tests This adds our tests for the System.Text.RegularExpressions library. Currently, these tests (and almost all of the tests that we will be bringing out from our internal sources) are going to print a lot of things to the console, as that is the testing paradigm we follow internally. We will be coming up with a way to either redirect the test output, or make it configurable. +293 area-System.Diagnostics Add FileVersionInfo tests This adds all of our tests for the System.Diagnostics.FileVersionInfo library. Included also are the assemblies and executables that are used as test assets. +294 area-Meta Proposal for the API Review process Now that we’re on GitHub we also get requests for new APIs. The current API review process is designed around the assumption that it is internal-only. We need to rethink this process for an open source world. This issue represents a proposal how this could be handled. It’s not final – any feedback is highly appreciated. ## Process Goals The key goals are: - **Designed for GitHub**. In order to be sustainable and not be a hurdle for contributors the API review process must feel natural to folks familiar with GitHub. - **Efficiency**. Performing API reviews requires looping in a set of experts. We want to conduct API reviews in an agile fashion without randomizing the reviewers or community members. - **Transparency**. We can use the same process for both internal as well as external contributors. This allows contributors to benefit from the results of API reviews even if the implementer isn’t external. ## Overall Process GitHub is generally based around the pull-request model. The idea is that contributors perform their changes in their own fork and submit a pull request against our repository. For trivial code changes, such as typo fixes, we want folks to directly submit a pull request rather than opening an issue. However, for bug fixes or feature work, we want contributors to first start a discussion by creating an issue. For work that involves adding new APIs we'd like the issue to contain what we call a _speclet_. The speclet should provide a rough sketch of how the APIs are intended to be used, with sample code that shows typical scenarios. The goal isn't to be complete but rather to illustrate the direction so that readers can judge whether the proposal is sound. ![Process diagram](https://cloud.githubusercontent.com/assets/5169960/5499091/a6895e2c-86dd-11e4-8b0e-6ba1ae152541.png) ## Steps - **Contributor opens an issue**. The issue description should contain a speclet that represents a sketch of the new APIs, including samples on how the APIs are being used. The goal isn’t to get a complete API list, but a good handle on how the new APIs would roughly look like and in what scenarios they are being used. - **Community discusses the proposal**. If changes are necessary, the contributor is encouraged to edit the issue description. This allows folks joining later to understand the most recent proposal. To avoid confusion, the contributor should maintain a tiny change log, like a bolded “Updates:” followed by a bullet point list of the updates that were being made. - **Issue is tagged as “Accepting PRs”**. Once the contributor and project owner agree on the overall shape and direction, the project owner tags the issue as “Accepting PRs”. The contributor should indicate whether they will be providing the PR or only contributed the idea. - **Coding**. The contributor is implementing the APIs as discussed. Minor deviations are OK, but if during the implementation the design starts to take a major shift, the contributor is encouraged to go back to the issue and raise the concerns with the current proposal. - **Pull request is being created**. Once the contributor believes the implementation is ready for review, she creates a pull request, referencing the issue created in the first step. - **Pull request is being reviewed**. The community reviews the code for the pull request. The review should focus on the code changes and architecture – not the APIs themselves. Once at least two project owners give their OK, the PR is considered good to go. - **Pull is tagged as “Needs API Review”**. The project owner then marks the pull request as “Needs API Review”. - **API review**. Using the information in the pull request we’ll create an APIX file that constitutes the API delta. The API review board meets multiple times a week to review all PRs that are tagged as needing an API review. - **Pull request is updated with the results of the API Review**. Once the API review is complete, the project owner uploads the notes and API HTML diff, including all comments. The project owner also updates the PR accordingly, with either a call to action to address some concerns or a good to go indicator. - **Pull request is merged**. When there are no issues – or the issues were addressed by the contributor, the PR is merged. ## API Design Guidelines The .NET design guidelines are captured in the famous book [Framework Design Guidelines](http://amazon.com/dp/0321545613) by Krzysztof Cwalina and Brad Abrams. A digest with the most important guidelines are available in our [developer wiki](https://github.com/dotnet/corefx/wiki/Framework%20Design%20Guidelines%20Digest). Long term, we'd like to publish the individual guidelines in standalone repo on which we can also accept PRs and -- more importantly for API reviews -- link to. +295 area-System.Diagnostics Fix file name casing in System.Diagnostics.FileVersionInfo.csproj The file on disk is called Interop.manual.cs, not Interop.Manual.cs. This fixes compilation with Mono on Linux (or other case-sensitive FS). +298 area-System.Xml Use String.Equals instead of String.Compare for equality checks Per the [Best Practices for Using Strings in the .NET Framework](http://msdn.microsoft.com/en-us/library/dd465121%28v=vs.110%29.aspx): - Use an overload of the `String.Equals` method to test whether two strings are equal. - Use the `String.Compare` and `String.CompareTo` methods to sort strings, **not to check for equality**. +299 area-Meta Removing `readonly` from a field can be a breaking change Currently the [**Signatures** section of the Breaking Change Rules](https://github.com/dotnet/corefx/wiki/Breaking-Change-Rules#signatures) page includes the following: > ✓ Allowed > - Removing `readonly` from a field As hinted in [a recent tweet](https://twitter.com/samharwell/status/543970816321650688), this should probably be disallowed in a particular case. I would prefer not to give the answer away publicly yet, but feel free to contact me by email. Here is the original tweet: > C# Quiz: Add `readonly` to a field only set in the constructor, which changes the runtime behavior of the type (no use of reflection). +300 area-Meta Refactor System.Servicemodel.ClientBase to have non-generic base "The following is an example of a generic extension method I would like to write, but cannot because `ClientBase` does not inherit from a base class containing the non generic members. It would be very helpful if `ClientBase` was refactored into `ClientBase:ClientBase` ``` C# using DotNetOpenAuth.OAuth2; using System; using System.Net; using System.ServiceModel; using System.ServiceModel.Channels; using System.Threading; using System.Threading.Tasks; namespace OAuthClient { public static class ExtensionMethods { public static async Task CallAsync(this TClient wcfClient, Func predicate, IAuthorizationState authorization, CancellationToken cancellationToken) where TClient : ClientBase where TChannel : class { if (authorization == null) { throw new InvalidOperationException(""No access token!""); } // Refresh the access token if it expires and if its lifetime is too short to be of use. if (authorization.AccessTokenExpirationUtc.HasValue) { await AuthorizationServer.Client.RefreshAuthorizationAsync(authorization, TimeSpan.FromSeconds(30)); } var httpRequest = (HttpWebRequest)WebRequest.Create(wcfClient.Endpoint.Address.Uri); ClientBase.AuthorizeRequest(httpRequest, authorization.AccessToken); var httpDetails = new HttpRequestMessageProperty(); httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers[HttpRequestHeader.Authorization]; using (var scope = new OperationContextScope(wcfClient.InnerChannel)) { OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpDetails; bool isError = true; try { T result = predicate(wcfClient); // If there is an error on the channel, the close call will throw an exception. wcfClient.Close(); isError = false; return result; } finally { // If we have an error on the channel, we cannot close the channel so we abort. // Exceptions that occur will still be raised unmodified. if (isError) { wcfClient.Abort(); } } } } } } ``` " +301 area-System.Diagnostics FileVersionInfo Cleanup This addresses code review feedback from #274. /cc @mellinoe and @stephentoub +304 area-System.Text Regex should provide a validation method "`Regex` doesn't provide a way to validate whether a given string is a valid regular expression without getting an exception. It should provide one. ## Background `TryParse` is a common pattern in .NET which is useful when a potentially invalid string has to be converted to a different representation. As invalid user input is not an exceptional situation, it makes sense to avoid exception overhead (which coincidentally also educates new developers to handle those situations correctly). Regular expressions are not as common in external input as `int` or `DateTime`, however there are situations when regex is an appropriate tool for the power users (e.g. advanced text editor search/replace). If you want to validate the regex as it is being typed (with reasonable throttling), it is useful to have as little overhead as possible. Request for Regex.TryParse (not by me) had [5 votes on Microsoft Connect](http://webcache.googleusercontent.com/search?q=cache:KV6wcz2SJ44J:https://connect.microsoft.com/VisualStudio/feedback/details/331753/regex-should-have-a-static-tryparse-method+) and currently exists on [UserVoice with 3 votes](http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2683916-regex-should-have-a-static-tryparse-method). ## Design Options Originally I wanted to propose `Regex.TryCreate` (which is in line with `Uri.TryCreate` since `Regex` does no have a `Parse` method). However even for power users regexes might not be easy to write, and providing more information than just ""you have failed"" is useful. I can't think of any existing pattern in the BCL that fits this well, but basically something like this would be useful: ``` csharp public class Regex { // existing members… public static RegexParseResult Parse(string pattern); public static RegexParseResult Parse(string pattern, RegexOptions options); // or alternatively we could use a default value for options } public class RegexParseResult { public bool IsSuccess { get; } public Regex Regex { get; } // parser doesn't have to provide more than one, however it would allow it to do so in the future public IReadOnlyCollection Errors { get; } } public class RegexParseError { public string Message { get; } public int Start { get; } public int End { get; } } ``` ### API Concerns It would be useful to know if I am missing some existing common pattern here, so that consistency with other BCL APIs can be provided. I don't like using name `Parse` here either as it invites confusion -- however I can't currently think of a better approach. ## Example Usage ``` csharp public class RegexValidationRule : System.Windows.Controls.ValidationRule { public override ValidationResult Validate(object value, CultureInfo cultureInfo) { var valueString = (string)value; var parseResult = Regex.Parse(valueString); if (!parseResult.IsSuccess) { var errorString = string.Join(NewLine, parseResult.Errors.Select(e => $""{e.Message} at {e.Start}"")); return new ValidationResult(false, errorString); } return ValidationResult.ValidResult; } } ``` ## Compatibility I think adding a new static method should be safe enough. " +306 area-System.Diagnostics Make Process.Start have a option to change handle inheritance "Currently if you call Process.Start internally CreateProcess is called with bInheritHandles = true (hard coded). It would be great to make it possible to change this behavior, e.g. by adding a Property to ProcessStartInfo. Currently there is no way I know of to change this other then reimplementing System.Diagnostics.Process. # Example If you run this application twice without exiting the first notepad instance the second instance will not be able to open the tcp port, because notepad is still running. This can be a problem for server applications that are starting child processes themself and crash, or are killed by the user before the socket can be closed. ``` csharp using System.Diagnostics; using System.Net; using System.Net.Sockets; class Program { static void Main() { TcpListener listener = new TcpListener(IPAddress.Any, 4567); listener.Start(); Process.Start(new ProcessStartInfo(""notepad.exe"") { UseShellExecute = false }); //Simulate application crash without freeing resources } } ``` # Design proposal The easiest way to make this possible is to add a new Property to ProcessStartInfo and use this in the Call to CreateProcess ``` csharp public sealed class ProcessStartInfo { // ... public bool InheritHandles { get; set; } // defaults to true // ... } ``` # Questions - Is there a very important reason why this was hardcoded like this in the first place? " +307 area-Meta Is the corefx repo or the dotnet org a good place for key community projects? Forked from #294. from @n8ohu - > I am working on uses a C# wrapper around a cross-platform C library and it would, in my opinion, be beneficial to other developers if it was part of the core; There is really a spectrum of .NET libraries, with one end point being the official corefx distribution and the other a weekend project never to be touched again. What you are proposing is much closer to the former. I think your base question is whether corefx or a peer repo is appropriate for key community-owned projects. Your scenario is C# wrappers over native libraries, but it could also be a pure managed library, too. We are considering a similar plan for our own libraries that don't fit or don't fit yet in corefx. We can and should include community libraries in that thinking. The Mono org seems to embrace community libraries that have broad applicability. We should take some inspiration from that. It's always a fine idea to host a library out of your own GitHub account. At the same time, we are intending the dotnet org to be a center of gravity for .NET library development. That's why we put the corefx repo there (and same will be true for the coreclr one) instead of the Microsoft org. It's likely the case that discoverability will be better in the dotnet org than an arbitrary personal repo. What do you think? +311 area-System.Console Bring back Console.CancelKeyPress "We need this so that we can wait on Ctrl + C events in console applications. See https://github.com/aspnet/Hosting/blob/dev/src/Microsoft.AspNet.Hosting/Program.cs#L69. " +312 area-System.IO FileSystem cross platformness and testability Building cross platform applications that talk to the file system is painful. There are several issues like case sensitivity, slash differences and other bizarre restrictions and differences. On another front, testability of the file system has always been impossible with .NET. Any application/library that uses the FileSystem uses something like https://www.nuget.org/packages/System.IO.Abstractions or a custom abstraction to allow mockability. Are there any plans to improve the System.IO API to solve some of these problems? +313 area-System.Numerics System.Numerics.Vectors Fails to Load W/ .NET 4.6 Preview Installed "``` An unhandled exception of type 'System.IO.FileLoadException' occurred in Unknown Module. Additional information: Could not load file or assembly 'System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ``` Steps to Reproduce. - Create a console application. - Add the nuget package for System.Numerics.Vector to the project (I tried 1.1.5-beta and 1.1.6-beta). - Add some dependent code (I used `Console.WriteLine(""Hardware Accelerated Vectors: {0}"", Vector.IsHardwareAccelerated);`) - Run the project. - Get above exception. It looks like somehow VS is getting the version number pinned at 4.0.0 and rejects the load. Specific version is disabled, the DLL is being copied as expected and no relevant entries appear to be in the app.config. " +316 area-System.Text Implement IList, IReadOnlyList, and IList on Regex Collections Fixes #271 This is still a work-in-progress. ### TODO - [x] Implement `IList`, `IReadOnlyList`, and `IList` - [x] Add `RegexCollectionDebuggerProxy` - [x] API review - [x] Changes based on API review and initial code review feedback - [ ] Cleanup - [ ] Add tests - [ ] Final code review ### Questions/Notes - As @sharwell noted in #277: `GroupEnumerator` is internal, so it might be possible to change the type of `GroupEnumerator.Capture` from `Capture` to `Group`. This would make the explicit cast in the generic `Current` property unnecessary. +317 area-System.Text Simplify MatchCollection's ICollection.CopyTo - Uses [`List`'s implementation of `ICollection.CopyTo`](https://github.com/Microsoft/referencesource/blob/9da503f9ef21e8d1f2905c78d4e3e5cbb3d6f85a/mscorlib/system/collections/generic/list.cs#L394-L407) which is behavior compatible with the previous implementation. - Avoids an unnecessary array allocation by no longer using `List.ToArray()`. - `SR.Arg_RankMultiDimNotSupported` and `SR.Arg_InvalidArrayType` are no longer needed. - Avoids accessing a property to trigger a side effect. +321 area-System.Text Regex capture, match and group collections now implement the generic IEnumerable This is my first contribution to the .NET Core. I would like to know whether this change would be acceptable under the guidelines of the .NET framework. I am asking because I am making classes implement an interface (acceptable by your rules), but I am also changing the existing interface implementation to an explicit one, in favor of the implicit implementation being the new interface (which is a really grey area that is not included in the rules). Please guide me as to how this pull request needs to change to become acceptable. +322 area-Meta Branching (or not) While commenting on [an outstanding pull request](https://github.com/dotnet/corefx/pull/110#issuecomment-65910391), David Kean mentioned: > We're trying to figure out our branching structure at the moment. Currently we have only a single branch that represents what we're shipping for the next update of .NET Core. Clearly this isn't scalable for the product, and we're going to creating branches for future work so PR's that have API changes and destablizing changes get a little more bake time. @joshfree is looking into that. I would like to get the conversation about branching structure out into the open. And to do that, I would like to start by asking: _why_ is a single branch not scalable for the product? I have worked in code bases of various sizes, release schedules, and branching schemes, and my experience is that NOT branching is nearly always preferable to branching. In fact, the most common reasons given for wanting to branch (e.g. disruptive or long-running changes) are exactly the times when branching hurts the most, because it encourages divergence between different works-in-progress, pushing difficult integration decisions farther out and requiring more rework later. Rather than a policy that handles change by branching, I would rather see a policy of trunk-based development that encourages all changes - even incomplete changes - to be merged into master on a frequent basis. This shortens and simplifies the merging process and encourages small refactorings and improvements by reducing the amount of work needed to merge them. Obviously allowing unfinished work to be committed to master requires mechanisms in place to ensure that such work does not affect the releasability of the framework. Mechanisms such as feature flags and branch by abstraction are slightly more complicated to implement in a framework (especially one that is highly tuned for performance) than in a typical application, but not excessively so. And the advantage of keeping all of the ongoing work together is well worth the effort. What are the community's thoughts on trunk-based development? +323 area-System.Text Decrease in working set was incorrectly marked as test failure "I am hitting a test failure that does not have a consistent repro. ``` Err_004888anied Total memory increased significantly there may be a memory leak (TaskId:339) Percent Difference=0.338227637196709, Max Acceptable Percent Difference=0.3, Start Working Set=576180, End Working Set=381300 (TaskId:339) ``` We probably should not use `Math.abs()` to calculate the difference at https://github.com/dotnet/corefx/blob/master/src/System.Text.RegularExpressions/tests/RegexLangElementsCoverageTests.cs#L60 ``` csharp percentDifference = ((double)Math.Abs(startWorkingSet - endWorkingSet)) / startWorkingSet; if (maxAcceptablePercentDifference < percentDifference) { Console.WriteLine(""Err_004888anied Total memory increased significantly there may be a memory leak""); Console.WriteLine(""Percent Difference={0}, Max Acceptable Percent Difference={1}, Start Working Set={2}, End Working Set={3}"", percentDifference, maxAcceptablePercentDifference, startWorkingSet, endWorkingSet); iCountErrors++; } ``` " +325 area-System.Numerics StringBuilder append with single length strings changed to chars Some StringBuilder.Append calls made with single length symbol strings. These can be a char so that they get directly assigned to the internal char array buffer. Also more consistent with other areas of the codebase. +326 area-Meta .NET Core and pattern compatability (@terrajobst rightly [pointed out](https://github.com/dotnet/corefx/issues/271#issuecomment-68022859) that the thread on implementing collection interfaces on Regex classes had wandered into abstract discussion not related to the original issue. So I am opening this issue in order to continue the discussion here.) To summarize my point (see the [Regex thread](https://github.com/dotnet/corefx/issues/271) for more details): with the addition of IReadOnlyList in .NET 4.5, I don't believe it is appropriate to continue implementing mutable collection interfaces such as IList on immutable collections. The fact that existing immutable collections (including those in the Immutable Collections library) implement these interfaces is not a good enough reason to continue this flawed pattern. This issue is a particular example of the larger question of how .NET Core will evolve, and how much tolerance it has to evolve _away_ from flawed patterns in the .NET Framework. +329 area-Infrastructure Use `nuget restore` instead of `nuget install` See [this line](https://github.com/dotnet/corefx/pull/324#discussion-diff-22273168R41) and the discussion for details. +338 area-System.Text RegexCharClass Improvements and Cleanup Apologies in advance for the large pull request. Normally, I'd break these changes up into separate smaller pull requests, but in this case the changes were all to the same file and some changes build on top of earlier changes, so it was easier to submit as one larger pull request. Each commit is factored appropriately, so it may be easiest to review each commit separately for more sane diffs. The most significant change was to precompute the constants instead of computing the values at runtime in the static constructor. I have a [one-off test](https://gist.github.com/justinvp/0c1b5faf72349b56a2ed) (not intended to be checked-in) that asserts that the precomputed values from the new implementation are equal to the values that would have been computed at runtime using the previous implementation. +340 area-System.Text Support for RegexOptions.Compiled? `RegexOptions.Compiled` isn't currently supported (the option exists but doesn't do anything). Will this be supported? If so, when? If not, why not? +342 area-System.Text More Regex Cleanup Sorry for another larger pull request -- there are just so many opportunities for cleanup in Regex! Most of the commits are pretty fine-grained (some probably could have been squashed together, sorry). +344 area-System.Security Support for Rfc2898DeriveBytes and other founding cryptographic support Hi, Reading the contribution DOs and DON'TS it says not to file an API addition without discussing first. I have the System.Security.Cryptography.Rfc2898DeriveBytes essentially created in a PCL so works in WinRT etc. I'd like to expand on this as Rfc2898DeriveBytes is HmacSha1 based and people are trying to move onto hmacsha256 and upwards nowadays and I'd like to bring this into .NET Core I'd like to start bringing in System.Security.Cryptography namespace into .NET Core. I'll include tests from the test data listed with the cryptographic standards and whatnot where possible. Can I do this? :) +348 area-Meta Updated README.md with recently added projects +349 area-System.Threading TaskHelpers cleanup TaskHelpers.cs is a temporary stop-gap for assemblies that don't yet depend on the latest System.Threading.Tasks contract. This change removes the dependency on the file for those assemblies that do use the latest, changing them to access the Task.CompletedTask, Task.FromCanceled, and Task.FromException members on Task instead of the corresponding workarounds on TaskHelpers. This file should eventually go away entirely. +350 area-System.Console Use StringBuilderCache in additional assemblies "StringBuilderCache maintains a cache of up to a single StringBuilder per thread, avoiding StringBuilder allocations for the common pattern of: ``` C# StringBuilder sb = new StringBuilder(); // ... do some appends return sb.ToString(); ``` and instead enabling: ``` C# StringBuilder sb = StringBuilderCache.Acquire(); // ... do some appends return StringBuilderCache.GetStringAndRelease(sb); ``` It was added to the repo as part of System.IO.FileSystem. This change deploys usage of it through other assemblies. Not all ""new StringBuilder(...)"" usage has been replaced, just those instances that are expected to be most impactful, e.g. tests were ignored, places where StringBuilders are stored into fields were ignored, debug code was ignored, less common members were ignored, etc. Simple microbenchmarks showed measurable improvements as a result. For example, a test around Regex.Replace showed that ~10% of the allocations incurred were for StringBuilder instances; using StringBuilderCache mostly eliminated these and improved throughput by a corresponding ~10%. This will of course vary based on the test employed, but it's a data point. " +352 area-Meta Design document for performance patterns As noted in #351, some patterns which are commonly used in the .NET Framework for performance reasons are not obvious to users who are new to this project. Due to the number of projects which leverage the .NET library as part of their own applications, performance is a particularly sensitive area, especially in regards to [unnecessary] memory allocations. It would be very helpful to have a document explaining commonly used patterns intended to avoid unnecessary memory allocations, and perhaps other techniques which your prior work has indicated are high-value practices for some reason. +361 area-System.Net Ability to set the HttpWebRequest.DefaultMaximumErrorResponseLength on a per request basis I realize the http code hasn't been imported yet.. But it would be really nice if this could be changed in >=4.6 Currently the only way you can set the DefaultMaximumErrorResponseLength for a request is AppDomain wide. We should also be able to be set on a per request basis (like we can do with ServicePoint). +362 area-System.Console Bring back Console.CancelKeyPress We need this so that we can wait on Ctrl + C events in console applications. issue #311 +371 area-System.IO Unix Interop Code is platform specific In commits like this: https://github.com/dotnet/corefx/commit/377dde76c5df105a7bab2c0a3002c0d835ff1b07 An attempt has been made to map both structures and constants to C# managed structures. Unix does not have a binary interface for either the constants or the structures, so the definition is likely already wrong for some platforms and will likely be wrong for ports, even within Linux itself. While the structures are constants do change from Unix to Unix a little known quirk is that both structures and constants also change in size, layout and the values in Linux itself. Early versions of Linux chose to emulate the ABI of the host platform, allowing early Linux to easily execute binaries written for the mainstream operating system of the platform. Linux/Alpha copied OSF/1; Linux/SPARC copied SunOS 4; Linux/MIPS some variation of IRIX and so on. This is why Linux includes many of these definitions in /usr/include/arch/XXX, because they are different in each platform. You should do something similar to what Mono.Posix does, which is to have a managed wrapper that talks to a C library that actually performs the native call and marshals the native version to a well-known structure shared with the managed implementation. +377 area-System.Text Regex tests intermittently fail due to memory usage "In RegexLangElementsCoverageTests.cs, there are several checks related to the total memory usage of the test: ``` CSharp // ** RegexLangElementsCoverageTests.cs ** double maxAcceptablePercentDifference = .3; startWorkingSet = GC.GetTotalMemory(true); ... endWorkingSet = GC.GetTotalMemory(true); percentDifference = ((double)Math.Abs(startWorkingSet - endWorkingSet)) / startWorkingSet; if (maxAcceptablePercentDifference < percentDifference) { Console.WriteLine(""Err_004888anied Total memory increased significantly there may be a memory leak""); Console.WriteLine(""Percent Difference={0}, Max Acceptable Percent Difference={1}, Start Working Set={2}, End Working Set={3}"", percentDifference, maxAcceptablePercentDifference, startWorkingSet, endWorkingSet); iCountErrors++; } ``` I think this check may be causing us more bad than good. I'm not sure what GC.GetTotalMemory takes into consideration, but this logic might also be getting tripped up by the fact that we have multiple tests running in parallel. Also, in general, this seems like a bit of a flaky check in the first place; it fails around 10% of the time for me, I would say. Anyone opposed to removing these checks, or at least making it not an error? " +381 area-Meta Question: Single statement `if` formatting "Looking at `System.Threading.Tasks.Dataflow` (amazing library by the way), I see three different variations of formatting of single-statement `if` statements. In _one_ method. From [`DataflowBlock.OutputAvailableAsync`](https://github.com/dotnet/corefx/blob/2bf5a7185fd81949da4d47a432662d8fe80989f6/src/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs#L1485-L1550) [**One line**](https://github.com/dotnet/corefx/blob/2bf5a7185fd81949da4d47a432662d8fe80989f6/src/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs#L1489): ``` c# if (source == null) throw new ArgumentNullException(""source""); ``` [**Two lines**](https://github.com/dotnet/corefx/blob/2bf5a7185fd81949da4d47a432662d8fe80989f6/src/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs#L1493-L1494): ``` c# if (cancellationToken.IsCancellationRequested) return Common.CreateTaskFromCancellation(cancellationToken); ``` [**With braces**](https://github.com/dotnet/corefx/blob/2bf5a7185fd81949da4d47a432662d8fe80989f6/src/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs#L1513-L1516): ``` c# if (target.Task.IsCompleted) { return target.Task; } ``` Are the guidelines for formatting these more nuanced than I'm able to see, or is this just inconsistent formatting? Is this kind of inconsistent formatting normal and acceptable? Is there a preference for how new code should be formatted? " +384 area-System.Collections Application of ObsoleteAttribute to legacy collection types As mentioned in #370, the lack of `[Obsolete]` on certain legacy types in `System.Collections.Specialized` could be confusing to developers. In general I support the use of ObsoleteAttribute, but for this particular library I would recommend it only be applied to types which have well-known newer (better) alternatives. I'm working on the following table... | Legacy Type | Replacement | | --- | --- | | `BitVector32` | No direct replacement? | | `HybridDictionary` | No direct replacement? | | `IOrderedDictionary` | No direct replacement? | | `ListDictionary` | No direct replacement? | | `NameObjectCollectionBase` | No direct replacement? | | `NameValueCollection` | No direct replacement? | | `OrderedDictionary` | No direct replacement? | | `StringCollection` | `List` | | `StringEnumerator` | Only used with `StringCollection` (not marked obsolete?) | | `StringDictionary` | `Dictionary` | +386 area-Infrastructure Jenkins connection abort issues and associated issues with subsequent runs Seeing intermittent issues with Windows remoting in Jenkins. These are known issues but have gone unfixed for a while. In addition, this causes the next job to run in a potentially un-clean environment +391 area-Meta Language or BCL data types "I'm not sure it's worth to discuss this issue. To ensure consistency within the code base the preferred data types should be noted in the wiki. I know this can be a sensitive and subjective issue... **Only use BCL data types** ``` c# String text; String.IsNullOrEmpty(text); Double number; Double.TryParse(text, out number); ``` **Only use language data types** ``` c# string text; string.IsNullOrEmpty(text); double number; double.TryParse(text, out number); ``` **Use language data types for declarations | BCL data types for calling members** ``` c# string text; String.IsNullOrEmpty(text); double number; Double.TryParse(text, out number); ``` My favorit is the last option because - an Enum can't inherit from UInt32 so you have to use uint - because it's not obvious that data types have members - ~~[MSDN](http://msdn.microsoft.com/en-us/library/ms229045.aspx) says ""**√ DO** use a generic CLR type name, rather than a language-specific name, in the rare cases when an identifier has no semantic meaning beyond its type.""~~ " +392 area-Meta Update Wiki to mention that changes to .NET Core must be binary compatible with the full .NET Framework A question came up in the comments for #271 about the possibility of a binary breaking change in the .NET Core Regex collections from the Regex collections in the full .NET Framework. @davkean responded: > You need to be able to build against this library and run on .NET Framework 4.6. And I asked: > So if you accept this suggestion (adding the generic interfaces to these types), the changes will have to be added to .NET 4.6 as well? How much time is left to make changes to .NET 4.6? And @weshaggard responded: > Yes @justinvp any types that already exist on the full desktop framework will need to be updated there as well if they are updated in .NET Core. We have a high level goal of making code written for .NET work no matter what .NET platform you are targeting. As for how much time is left to add new public APIs to .NET 4.6 at this point we are not accepting any more unless they are critical. > > With that said we fully expect .NET Core to evolve much more quickly then the full .NET framework that ships in Windows. We just have to be aware that any changes need to eventually make it there as well so while thinking about breaking changes you cannot just consider .NET Core you must consider the other platforms as well. If we don't do that then we risk diverging the platforms and making .NET development as a whole more difficult. I think it'd be worth adding this to one of the wiki pages so it is clear to everyone that types in .NET Core that exist in the full .NET Framework must be binary compatible. I don't think this is explicitly stated anywhere currently. +395 area-System.Runtime String comparer for sorting numeric strings logically "## Rationale For sorting purposes it's common to need portions of strings containing numbers to be treated like numbers. Consider the list of strings `""Windows 7"", ""Windows 10""`. Using the `Ordinal` `StringComparer` to sort the list one would get ``` Windows 10 Windows 7 ``` but the desired ascending logical sort would be ``` Windows 7 Windows 10 ``` ## Proposed API ```diff namespace System { public class StringComparer { + public static StringComparer Create(CultureInfo culture, CompareOptions options); } } namespace System.Globalization { public enum CompareOptions { + NumericOrdering = 0x00000020 } } ``` ## Usage ```cs var list = new List { ""Windows 10"", ""Windows 7"" }; list.Sort(StringComparer.Logical); // List is now ""Windows 7"", ""Windows 10"" ``` This would also be good for sorting strings containing IP addresses. ## Details * `Logical` is a convenience property equivalent to the result of `Create(CultureInfo.CurrentCulture, CompareOptions.Logical)` * `LogicalIgnoreCase` is a convenience property equivalent to the result of `Create(CultureInfo.CurrentCulture, CompareOptions.Logical | CompareOptions.IgnoreCase)` * Non-numeric sequences will be evaluated with the culture provided. * Numeric sequences will be determined by the result of `Char.IsDigit`. * All UTF-16 digits will be supported and are manually parsed using `Char.GetNumericValue`. * Only positive integral values without digit separators will be supported directly. * Numbers will be treated as `ulong`s. Logic for overflows will have to be considered. * The string `Windows 8.1` would be considered 4 sequences. The `Windows ` would be a string sequence, the `8` would be a numeric sequence, the `.` would be another string sequence, and the `1` would be another numeric sequence. * This API could later be expanded to include support for allowing signs, decimals, and digit separators through the use of overloads accepting a `NumberStyles` parameter. * When a numeric and string sequence are considered at the same time the numeric sequence always comes before the string sequence so when sorting the following list, `""a"", ""7""` the number `7` will be sorted before the letter `a`. * Existing methods that take a `CompareOptions` parameter as input will need to be updated to support the new `Logical` member. ## Open Questions * Should `CompareOptions.Logical` be implemented as the flag option `SORT_DIGITSASNUMBERS` to the `dwCmpFlags` parameter of [`CompareStringEx`](https://msdn.microsoft.com/en-us/library/windows/desktop/dd317761(v=vs.85).aspx)? Using it's implementation should be more efficient but later expanding support for `NumberStyles` will require a re-implementation with matching behavior. ## Updates * Added `Logical` and `LogicalIgnoreCase` properties. * Added support for all UTF-16 digits. * Added more `CreateLogical` overloads to match the `Create` method. * Added retrieval of the `NumberFormatInfo` from the `StringComparer` parameter when not explicitly provided and is a `CultureAwareComparer`. * Removed `CreateLogical` overloads that matched the `Create` method. * Switched to only supporting positive integral values without digit separators. * Added consideration of comparing a numeric sequence with a string sequence. * Added the flag member `CompareOptions.Logical` and changed `CreateLogical` to be just an overload of `Create`." +396 area-Meta Update README.md description of legacy collections +398 area-System.Diagnostics Refactor System.Diagnostics.FileVersionInfo with PAL Introduce a Windows and Unix build for System.Diagnostics.FileVersionInfo.dll. Windows-specific functionality has been moved to separate files, with Unix-specific (but stubbed out) files added to match. +409 area-System.Xml Reduce XPath unit tests run time "Either reduce unit tests subset (apply [OuterLoop] to long tests) or modify tests to keep run time below 5s on average machine. Currently on some machine they run for ~25s. Reduce it by a factor of 5. " +410 area-Meta Update readme to reflect System.Collections.Concurrent +423 area-Meta CLA Labels I've been following the project for a while now and noticed that recently there is a bot in place that adds `cla-required`, `cla-signed` and `cla-not-required`. I personally think that these labels clutter up a lot. Wouldn't it be easier to only add `cla-required` when they haven't signed it yet and remove it when signed? Leaving out the other two labels. Also, when signing up for the CLA you require to enter the company you work for, not everyone has work and some are still studying. +424 area-System.Security X509Certificate: .pfx format unsupported on CoreCLR "This snippet works on `aspnet50` but an exception is thrown on `aspnetcore50` (tested on Windows 7 and Windows 8.1): ``` csharp public static class Program { public static void Main(string[] args) { var assembly = typeof(Program).GetTypeInfo().Assembly; using (var resource = assembly.GetManifestResourceStream(""Certificate.pfx"")) using (var buffer = new MemoryStream()) { resource.CopyTo(buffer); var certificate = new X509Certificate2(buffer.ToArray(), ""Owin.Security.OpenIdConnect.Server""); Console.ReadLine(); } } } ``` ![image](https://cloud.githubusercontent.com/assets/6998306/5743652/fdeb3562-9c1a-11e4-93db-1fec2523adcd.png) ``` {System.Security.Cryptography.CryptographicException: Impossible de trouver l’objet requis. at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType(Byte[] rawData) at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password) at X509Certificate2.Program.Main(String[] args)} ``` Complete repro: https://github.com/PinpointTownes/X509Certificate-Bug " +432 area-System.Console Fix handling of some terminfo files ConsolePal in Unix parses terminfo files to determine the correct format strings to use for setting foreground and background color. Before indexing into the file's contents to grab those strings, we were missing a check to ensure that the file actually contained enough string entries that it could contain a foreground or background color string. This commit just adds that check. +439 area-Infrastructure Building in Visual Studio stopped working While building on the command line via `build.cmd` works just fine, building with Visual Studio doesn't. It's worth calling out that building on the command line via `devenv` is also broken: ``` $ devenv .\System.Collections.NonGeneric.sln /build Microsoft Visual Studio 2013 Version 12.0.31101.0. Copyright (C) Microsoft Corp. All rights reserved. 1>------ Build started: Project: System.Collections.NonGeneric, Configuration: Debug Any CPU ------ 1>CSC : error CS0518: Predefined type 'System.Object' is not defined or imported 2>------ Build started: Project: System.Collections.NonGeneric.Tests, Configuration: Debug Any CPU ------ 2>CSC : error CS0006: Metadata file 'P:\oss\corefx\bin\Debug\System.Collections.NonGeneric\System.Collections.NonGeneric.dll' could not be found ========== Build: 0 succeeded, 2 failed, 0 up-to-date, 0 skipped ========== ``` It seems the new build-based package resolution is to blame. For example, here is the output of building **System.Collections.NonGeneric**: | Type | # | Description | Project | | --- | --- | --- | --- | | Error | 1 | Unable to find nupkg for System.Text.Encoding. | System.Collections.NonGeneric.Tests | | Error | 2 | Unable to find nupkg for xunit.console.netcore. | System.Collections.NonGeneric.Tests | | Error | 3 | Unable to find nupkg for xunit.runner.dependencies.netcore. | System.Collections.NonGeneric.Tests | | Error | 4 | Unable to find nupkg for Microsoft.DotNet.TestHost. | System.Collections.NonGeneric.Tests | | Error | 5 | Unable to find nupkg for System.Collections.Concurrent. | System.Collections.NonGeneric.Tests | | Error | 6 | Unable to find nupkg for System.Diagnostics.Tracing. | System.Collections.NonGeneric.Tests | | Error | 7 | Unable to find nupkg for System.IO.FileSystem. | System.Collections.NonGeneric.Tests | | Error | 8 | Unable to find nupkg for System.IO.FileSystem.Primitives. | System.Collections.NonGeneric.Tests | | Error | 9 | Unable to find nupkg for System.Linq. | System.Collections.NonGeneric.Tests | | Error | 10 | Unable to find nupkg for System.Reflection.Extensions. | System.Collections.NonGeneric.Tests | | Error | 11 | Unable to find nupkg for System.Runtime.Handles. | System.Collections.NonGeneric.Tests | | Error | 12 | Unable to find nupkg for System.Runtime.InteropServices. | System.Collections.NonGeneric.Tests | | Error | 13 | Unable to find nupkg for System.Text.Encoding.Extensions. | System.Collections.NonGeneric.Tests | | Error | 14 | Unable to find nupkg for System.Text.RegularExpressions. | System.Collections.NonGeneric.Tests | | Error | 15 | Unable to find nupkg for System.Xml.ReaderWriter. | System.Collections.NonGeneric.Tests | | Error | 16 | Unable to find nupkg for System.Xml.XDocument. | System.Collections.NonGeneric.Tests | +440 area-System.Text Initial commit of System.Text.Encoding.CodePages +442 area-System.Text Pull System.Text.Encoding.CodePages from v1.0 to master +445 area-System.Text Stop compiling Interop.cs into Unix build of code pages The Interop.cs file was being compiled into the unix build of System.Text.Encoding.CodePages. This commit just renames the file to be Windows-specific and includes it only in the Windows builds. It also does some minor cleanup of a couple of files. +447 area-Meta Update README.md to include System.IO.MemoryMappedFiles +449 area-Infrastructure Corefx build fails when Xamarin PCL profiles are installed 1. Install Xamarin tools 2. Build corefx EXPECTED: Build succeeds ACTUAL: Build fails with lots of type resolution errors The ResolveNuGetPackages target is failing to resolve assets out of xunit.core.netcore: ``` C:\git\corefx\src\packages\Microsoft.DotNet.BuildTools.1.0.21-prerelease\lib\packageresolve.targets(25,5): warning : Unable to resolve the assets of xunit.core.netcore: Couldn't find a matching group ``` The Xamarin tools add XML files to the SupportedFrameworks folders of some PCL profiles. This results in the configured frameworks for the project to be: ``` .NETFramework,Version=v4.5;.NETCore,Version=v4.5;WindowsPhoneApp,Version=v8.1;WindowsPhone,Version=v8.0;MonoAndroid,Version=v1.0;MonoTouch,Version=v1.0 ``` From the package, the following frameworks are supported: ``` .NETFramework,Version=v4.5;ASP.NetCore,Version=v5.0;.NETCore,Version=v4.5;WindowsPhoneApp,Version=v8.1;WindowsPhone,Version=v8.0 ``` So since the package doesn't support MonoTouch and MonoAndroid, the build system isn't resolving any of the assemblies inside it. +453 area-System.Xml Make fields readonly in System.Xml +454 area-System.Xml Using IsNullOrEmpty in checks Using IsNullOrEmpty in checks instead of direct checks on null or empty +455 area-Meta Consider merging labels `up-for-grabs` and `accepting prs` labels As discussed [here](https://github.com/dahlbyk/up-for-grabs.net/pull/146) it seems that these labels are semantically so close that it may make sense for us to merge them. - `up-for-grabs`. This is meant for tagging issues to indicate that we'd like the help of the community. - `accepting pr`. We use this label as part of the [API review process](https://github.com/dotnet/corefx/wiki/API-Review-Process). It's tagging proposals for API additions to indicate that we're happy to review & accept pull requests for those. It seems they are conceptually both doing the same thing: they are indicating to our community that we're happy if they jump in and help. Thoughts? +459 area-System.Linq Re-enable PLINQ tests The PLINQ tests are currently disabled. This PR turns them back on, alleviating the deadlocks that had caused them to be disabled initially. I also addressed a few other things, including some waits that weren't working correctly and some tests that should be OuterLoop due to their demands on the thread pool. On my machine, the tests as they are after the PR do take ~15 seconds to run as part of the build. I think that's completely reasonable for a set of tests for such a library, but if we're uncomfortable with that we can aim to bring it down further separately. For now, I just want to make sure there's at least some coverage in builds and CI. +461 area-System.Collections Add a static Shuffle method to Array and an instance method to List Consider adding a static Shuffle method to Array and an instance method to List ## Motivation Shuffling data is often required in various applications. .NET does not contain a method to shuffle an array which results in many people implementing it themselves. Implementing a Shuffle method is not really hard but it does require like 10 lines of code and people often wonder where to put these so they just prefer quick and dirty solutions like abusing sort methods with random sort key or even worse random comparison. These methods are far from ideal both because they depend on implementation details of the sorting methods and because they are less effective than the ideal O(N) implementation. ## Proposed API Methods on Array: ``` C# public static void Shuffle(T[] array) public static void Shuffle(T[] array, int index, int length) public static void Shuffle(T[] array, Random rng) public static void Shuffle(T[] array, int index, int length, Random rng) ``` Methods on List ``` C# public void Shuffle() public void Shuffle(Random rng) ``` ## Details The Shuffle method on Array has an overload that can be used to shuffle just part of the array. This is in line with existing Array methods like Sort and Copy and can be useful when implementing Shuffle on List where only the elements of the List will be shuffled without shuffling the full capacity of the list. I also suggest adding an instance Shuffle method on List since this is the most common usage of such a method. +464 area-System.ComponentModel Fix inverted documentation between two methods I just noticed this documentation mistake, the two method descriptions were swapped. +465 area-System.Linq Re-enable PLINQ tests Re-issuing #459 against v1.0 branch. Already reviewed there, so will merge once successfully passes CI. +466 area-Meta Update README.md for System.ComponentModel +467 area-System.Runtime Add a Clamp method to System.Math I know the `System.Math` library hasn't been pushed to the .Net Core library but since discussing api additions could take some time I thought it was a good idea to propose it now. # Rationale and Usage `Math.Clamp` is an easy to implement method and makes it easier for developers. Currently developers would have to implement their own methods in an extension class or use `Math.Max` and `Math.Min` together. The proposed API will shorten the amount of code needed and increase readability. Two examples on how we currently can clamp in .NET: ``` C# int result = Math.Max(Math.Min(value, 100), 0); ``` ``` C# public static class Ext { // Source: http://stackoverflow.com/a/2683487/1455541 public static T Clamp(T val, T min, T max) where T : IComparable { if (val.CompareTo(min) < 0) return min; else if(val.CompareTo(max) > 0) return max; else return val; } } // Somewhere in the codebase int result = Ext.Clamp(value, 0, 100); ``` The proposed API would turn that into: ``` C# int result = Math.Clamp(value, 0, 100); ``` # Proposed API 1 - Specialized ``` C# public static class Math { public static Byte Clamp(Byte value, Byte min, Byte max); public static Decimal Clamp(Decimal value, Decimal min, Decimal max); public static Double Clamp(Double value, Double min, Double max); public static Int16 Clamp(Int16 value, Int16 min, Int16 max); public static Int32 Clamp(Int32 value, Int32 min, Int32 max); public static Int64 Clamp(Int64 value, Int64 min, Int64 max); public static SByte Clamp(SByte value, SByte min, SByte max); public static Single Clamp(Single value, Single min, Single max); public static UInt16 Clamp(UInt16 value, UInt16 min, UInt16 max); public static UInt32 Clamp(UInt32 value, UInt32 min, UInt32 max); public static UInt64 Clamp(UInt64 value, UInt64 min, UInt64 max); } ``` This proposed version mimics the way current `System.Math` methods do it. # Proposed API 2 - IComparable Because this is a new API addition it can also be possible to have smaller implementation using generics that should cover all the cases. ``` C# public static class Math { public static T Clamp(T value, T min, T max) where T : System.IComparable; } ``` # Open Questions - If the api addition is going to be implemented should it be implemented as Proposed API 1 or 2? +468 area-System.Text Spelling fixes for System.Text.RegularExpressions Just fixing a handful of spelling errors in comments. +470 area-Meta Do not use optional arguments on public APIs As part of the [discussion](https://github.com/dotnet/apireviews/tree/master/2015-01-14-misc#110-add-async-documentelement-loading-for-xlinq) around adding async document/element loading for XLINQ (#110) it was mentioned using optional arguments (commonly called optional parameters). **PLEASE, DON'T USE IT ON PUBLIC APIS!!!** Before there were optional arguments the problem of a large number of possible parameters for an API already existed. And since we are talking about XML, look at how `XmlReader` and `XmlWritter` solved it: - [public static XmlReader Create(TextReader input, XmlReaderSettings settings)](http://referencesource.microsoft.com/#System.Xml/System/Xml/Core/XmlReader.cs,6375d7745e42dee9) - [public static XmlWriter Create(XmlWriter output, XmlWriterSettings settings)](http://referencesource.microsoft.com/System.Xml/a.html#c6b2420e91f21e33) Taking advantage of object initialization, calling it looks like optional arguments: ``` XmlReader.Create(reader, new XmlReaderSettings{ IgnoreWhitespace = true }); ``` (I'm going to propose more type inference for cases like this: [Do not require type specification for constructors when the type is known #35](https://github.com/dotnet/roslyn/issues/35)) It's extensible. Another setting can always be added with proper defaults and without breaking existing code. And those settings also become something that can be passed around. Imagine that the original API used optional arguments and there was only one `Save` method. How would you keep that and now add an `CancellationToken` parameter? +482 area-System.Xml Simple cleanup in XDocument classes +484 area-System.Xml "Explicitly marked XDocument private methods with ""private"" keyword" The `private` keyword was used for fields within the XDocument classes but not the method definitions. Updated for consistency. +489 area-System.Numerics Add primitive structs Rectangle and Point System.Drawing, System.Windows, and XNA all implement nearly-identical structures to represent points and rectangles. Given the verbosity of a correct implementation, many library developers re-use an existing implementation, and tie their public APIs to (non-core-compatible) dependencies. Offering primitives like Point, Rectangle (as well as PointF, RectangleF, and Color) would make it much easier for libraries to be compatible with each other. Or, is there a de-facto standard nuget package for these structs that we can promote? +490 area-System.Runtime Allow the Math methods to return float values I find myself casting returned results from Math methods into floats constantly, even if only floats are supplied as parameters for that method. Many developers don't need the accuracy of a double and floats works fine, many other numeric structs store their values are floats too (such as a Vector2). While explicit casting doesn't hurt anyone there are other classes I have come by that return a float if the supplied parameter(s) is float only. This wouldn't really be considered a new API addition, all it would do is add overloaded methods that accepts floats as parameters and returns a float (could call the Double version of the Method underneath to avoid code duplication and cast back). If any of the parameters become a double then the double version of the Method would be called and a double value would return. I would like feedback on what other people think before implementing it. +492 area-System.Collections statistic distribution generator I am thinking to add some random generators that obeys specific statistic distribution functions (like normal, binomial, geometric and so on) and also makes the random generator usable as IEnumerable to be easier to use in line or sequence expressions. There is a great paper that covers the ability to obtain sampling functions by composing other sampling functions that is quite nice to express via IEnumerable and IEnumerator. Suck functions can be very useful to obtain numbers that follow a specific law, for example to be used in generating correct weights to initialise untrained neural networks or similar scenarios. +494 area-System.Runtime Consider exposing extension methods for System.Array .Net 2 convenience methods With .net 2.0, `System.Array` was given a set of convenient LINQ like methods like those present on `List`. Unlike `List`, they were added as static methods. While, LINQ does offer some of these methods these variants do offer some differences/benefits as they are A: Optimized for arrays. B: Evaluated immediately. C: Always produce an array. These methods are:: ``` csharp AsReadOnly BinarySearch ConvertAll Exists Find FindAll FindIndex FindLast FindLastIndex ForEach IndexOf LastIndexOf Sort TrueForAll ``` Some of these offer no real benefit over LINQ, but others can be very useful especially in array heavy APIs like Reflection. Primarily `ConvertAll` and `FindAll`. These methods would also make it easier to work with arrays. There would be no clash with existing LINQ methods as they have different names. +496 area-System.Xml Reformat Xml code Guidelines were updated few times since the last time it was done. +497 area-Meta Remove non-cancellable overloads from async APIs I'd like to start discussion on removing the convenience overloads that call a cancellable API with `CancellationToken.None`: `Task DoAsync() { return DoAsync(CancellationToken.None); }` I think these overloads bloat the API and if you've got a large number of parameters, can be error-prone to implement. I also believe they encourage poor design: consider that a great majority of async code either already does or should support cancellation. The use of these APIs should be relatively rare in good code. +498 area-System.Collections HashSet constructor performance tuning for ISet "As it is currently, `HashSet` has a constructor that takes `IEnumerable`. `var set1 = new HashSet{2,3,4};` `var set2 = new HashSet(set1); // binds against ctor..(IEnumerable)` This works nicely, but the fact that we are ""copying/cloning"" from `ISet` is not being taken advantange of. If we have `HashSet` with ~10000 elements, **there is no efficient way to create a copy of it**. Instead, current implementation will call internally `AddIfNotPresent` for each element in given `IEnumerable`, eg, do an expensive element lookup for each item that is being added (to check if it doesn't exist in our current `HashSet`). This does not have to be the case. `ISet` already promises us the uniqueness. Let me know if this is something of interest, I would like to work on that. " +503 area-Meta Make use of Code Contracts where ever applicable. I wonder the reason why while the code contracts are part of BCL and it is a research project of Microsoft, only some of the API makes use of it. This this is effectively preventing making use of code contracts for the end consumers as well. I would appreciate at least if you can make use of Code Contracts on the public surface API. +507 area-System.Collections Specification tests for collection interfaces In the last [API review](https://github.com/dotnet/apireviews/tree/master/2015-01-14-misc#follow-ups-for-api-review-board), @KrzysztofCwalina mentioned that it would be nice to have a set of tests that can serve as specifications for the expected behavior of the built-in collection interfaces. These tests could be used by people creating types which implement these interfaces to ensure that their implementations match the specification. I love this idea, and would love to help create the suite. Is this something that the community can engage on? +516 area-Meta Replace hand-rolled tests for exceptions with xunit's Assert.Throws There is a lot of hand-rolled exception checking in various test code. This should be refactored to use xunit's Assert.Throws method as it improves readability and can reduce possible bugs in test code. For an example please see PR https://github.com/dotnet/corefx/pull/512 +519 area-System.Runtime Allow BitConverter.ToString to format without dashes "I think BitConverter is not even in CoreFx yet, but for when it is, please allow to convert to an hex string without dashes. This is to avoid this pattern: ``` BitConverter.ToString(data).Replace(""-"", string.Empty); ``` This representation of bytes is common enough that .NET should have a simple method to do this without extra code or an extra memory allocation. " +522 area-System.Threading Thread apartment states in .NET Core Hi all! Just wondering, will you support thread apartment state in .NET Core ? Currently there are no support. Maybe in future? Thanks. +525 area-Meta Consider creating a gitter channel for corefx repo "I was checking out the Aurelia docs (new JS framework), and they casually mention ""If you have questions, we hope that you will join us on our [gitter channel](https://gitter.im/Aurelia/Discuss)."" Gitter is apparently a free group chat for open source projects hosted on github. Here's the best ""About"" page I could find: http://blog.gitter.im/about/. It looks like they have really good github integration (an activity feed that shows PRs; issues; commits; etc). I'd be really interested in trying out a gitter channel for the corefx repo. " +526 area-System.Collections Dictionary class should allow to use a custom load factor Hello guys, I had seen the `Dictionary` class does not allow the use of a custom `load factor`, this may allow many optimizations, as the case we want to create a dictionary of known initial size and it will be completely filled, but we don't want that resizing operations occurs, for example it would be possible setting the `load factor` to `1.0F`. The class constructors below may be added: ``` csharp public Dictionary(int capacity, float loadFactor); public Dictionary(int capacity, float loadFactor, IEqualityComparer comparer) ``` Simirlarly to `Java`'s `HashMap` class constructor: ``` java public HashMap(int initialCapacity, float loadFactor); ``` When the `load factor` is not known, it should take a default value, for example `0.75F`. Thanks a lot :smile: and excuse me for any inconvenience. +529 area-Infrastructure Clean target removes dependencies "The ""Clean"" target of the build script intentionally removes the ""src\packages"" directory, causing the next build to have to restore them again. This is unnecessary, and atypical compared to most build scripts. ""Clean"" typically removes the outputs of the build process, not the inputs. If there is a need for an ability to wipe out the packages directory, I propose putting this functionality under a separate target, ""CleanDependencies"". " +537 area-System.Globalization Refactor globalization extensions with PAL Simple refactoring to introduce a PAL layer into System.Globalization.Extensions. Cleaned up a few things along the way as well, e.g. factoring out some duplicated code into helpers, making a few fields readonly, etc. +538 area-System.Runtime New API proposal: null replacement with Option, Some and None "The .NET framework and C# have implemented a lot of ideas of functional programming. LINQ, lambdas and immutability are only a few examples. In my eyes this makes the real difference between Java and .NET Solving the [null reference problem](http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare) would be the next great addition to the .NET framework borrowed from functional languages. So in this issue I want to propose the addition of a [Option type](http://en.wikipedia.org/wiki/Option_type) to the .NET Framework. # Background Taken from https://github.com/louthy/language-ext#null-reference-problem: > null must be the biggest mistake in the whole of computer language history. I realise the original designers of C# had to make pragmatic decisions, it's a shame this one slipped through though. So, what to do about the 'null problem'? > > null is often used to indicate 'no value'. i.e. the method called can't produce a value of the type it said it was going to produce, and therefore it gives you 'no value'. The thing is that when 'no value' is passed to the consuming code, it gets assigned to a variable of type T, the same type that the function said it was going to return, except this variable now has a timebomb in it. You must continually check if the value is null, if it's passed around it must be checked too. > > Option works in a very similar way to Nullable except it works with all types rather than just value types. It's a struct and therefore can't be null. An instance can be created by either calling Some(value), which represents a positive 'I have a value' response; Or None, which is the equivalent of returning null. > > So why is it any better than returning T and using null? It seems we can have a non-value response again right? Yes, that's true, however you're forced to acknowledge that fact, and write code to handle both possible outcomes because you can't get to the underlying value without acknowledging the possibility of the two states that the value could be in. This bulletproofs your code. You're also explicitly telling any other programmers that: ""This method might not return a value, make sure you deal with that"". This explicit declaration is very powerful. # Rationale and Usage So basically the `Option` type enforces developers to check if a return value has really a value. An example function returning an option would be something like this: ``` public Option GetCacheValue(string key) { if(cache.Keys.Contains(key)) { return cache[key]; //return new Some(cache[key]) //return new Option(cache[key]); } else { return Option.None; //return new Option(); } } ``` The consumer code would then look like this: ``` string value = GetCacheValue(key).Match( some: v => v, none: () => ""this is the default value"" ) ``` # Proposed API ``` public struct Option { // For creating a None public Option(); public Option(T value) public static readonly Option None = new Option(); public bool IsNone {get; }; public bool IsSome { get; } public static implicit operator Option(T value) public static implicit operator Option(OptionNone none) public TReturn Match(Func some, Func none); public static Option Some(T value); } ``` # Details - This was mainly inspired by https://github.com/louthy/language-ext/blob/master/LanguageExt.Core/Option.cs of @louthy # Open questions - [ ] Should there be a public `Value` property as an alternative to Match? - [ ] In which assembly would this be correct? Namespace? - [ ] Should Option be a struct (security, since it cannot be null) or an interface (usability, since `Option` is then also an `Option`)? Thoughts? " +539 area-Meta Improve flow of readme Changed the ordering of content and a few pieces of wording. Primary goal was to pop contributing opportunities as early as possible in the readme, since the components list is getting quite long. We may want to do something different with the list as it grows even longer, but we'll not worry about that now. +540 area-System.Xml Remove double type checks in System.Xml Replace code like this: ``` if (obj is Foo) ((Foo)obj).DoSomething(); ``` with ``` Foo foo = obj as Foo; if (foo != null) foo.DoSomething(); ``` Most of these changes were verified in #491 and #482, but these PRs were reverted due reasons non-related with these changes. +549 area-System.IO DriveInfo tests fail if current user uses SUBST On my machine I'm using SUBST to map folders as drives. This causes the the drive info tests to fail: ``` System.IO.FileSystem.DriveInfoTests.Get_VolumeLabel.Test01 [FAIL] System.IO.IOException : The directory is not a subdirectory of the root directory. Stack Trace: p:\oss\corefx\src\System.IO.FileSystem.DriveInfo\src\System\IO\DriveInfo.Windows.cs(235,0): at System.IO.DriveInfo.set_VolumeLabel(String value) p:\oss\corefx\src\System.IO.FileSystem.DriveInfo\tests\GetVolumeLabelTests.cs(74,0): at System.IO.FileSystem.DriveInfoTests.Get_VolumeLabel.Test01() System.IO.FileSystem.DriveInfoTests.Set_VolumeLabel.Test01 [FAIL] System.IO.IOException : The directory is not a subdirectory of the root directory. Stack Trace: p:\oss\corefx\src\System.IO.FileSystem.DriveInfo\src\System\IO\DriveInfo.Windows.cs(235,0): at System.IO.DriveInfo.set_VolumeLabel(String value) p:\oss\corefx\src\System.IO.FileSystem.DriveInfo\tests\SetVolumeLabelTests.cs(75,0): at System.IO.FileSystem.DriveInfoTests.Set_VolumeLabel.Test01() ``` I would expect the drive info tests to be resilient to this. +572 area-System.Console Initial commit of System.Console tests +574 area-System.Collections Add PriorityQueue to Collections "See [**LATEST Proposal**](https://github.com/dotnet/corefxlab/blob/master/docs/specs/priority-queue.md) in corefxlab repo. # Second Proposal options Proposal from https://github.com/dotnet/corefx/issues/574#issuecomment-307971397 ### Assumptions Elements in priority queue are unique. If they are not, we would have to introduce 'handles' of items to enable their update/remove. Or the update/remove semantics would have to apply to first/all, which is weird. Modeled after [`Queue`](https://apisof.net/catalog/System.Collections.Generic.Queue%3CT%3E) ([MSDN link](https://msdn.microsoft.com/en-us/library/7977ey2c(v=vs.110).aspx)) ### API ```c# public class PriorityQueue : IEnumerable, IEnumerable<(TElement element, TPriority priority)>, IReadOnlyCollection<(TElement element, TPriority priority)> // ICollection not included on purpose { public PriorityQueue(); public PriorityQueue(IComparer comparer); public IComparer Comparer { get; } public int Count { get; } public bool IsEmpty { get; } public bool Contains(TElement element); // Peek & Dequeue public (TElement element, TPriority priority) Peek(); // Throws if empty public (TElement element, TPriority priority) Dequeue(); // Throws if empty public bool TryPeek(out TElement element, out TPriority priority); // Returns false if empty public bool TryDequeue(out TElement element, out TPriority priority); // Returns false if empty // Enqueue & Update public void Enqueue(TElement element, TPriority priority); // Throws if it is duplicate public void Update(TElement element, TPriority priority); // Throws if element does not exist public void EnqueueOrUpdate(TElement element, TPriority priority); public bool TryEnqueue(TElement element, TPriority priority); // Returns false if it is duplicate (does NOT update it) public bool TryUpdate(TElement element, TPriority priority); // Returns false if element does not exist (does NOT add it) public void Remove(TElement element); // Throws if element does not exist public bool TryRemove(TElement element); // Returns false if element does not exist public void Clear(); public IEnumerator<(TElement element, TPriority priority)> GetEnumerator(); IEnumerator IEnumerable.GetEnumerator(); // // Selector part // public PriorityQueue(Func prioritySelector); public PriorityQueue(Func prioritySelector, IComparer comparer); public Func PrioritySelector { get; } public void Enqueue(TElement element); public void Update(TElement element); } ```` **Open questions:** 1. Class name `PriorityQueue` vs. `Heap` 2. Introduce `IHeap` and constructor overload? (Should we wait for later?) 3. Introduce `IPriorityQueue`? (Should we wait for later - `IDictionary` example) 4. Use selector (of priority stored inside the value) or not (5 APIs difference) 5. Use tuples `(TElement element, TPriority priority)` vs. `KeyValuePair` * Should `Peek` and `Dequeue` rather have `out` argument instead of tuple? 6. Is `Peek` and `Dequeue` throwing useful at all? ----------------------------------------------------------------------------------------------- # Original Proposal Issue https://github.com/dotnet/corefx/issues/163 requested the addition of a priority queue to the core .NET collection data structures. This post, while a duplicate, is intended to act the formal submission to the corefx API Review Process. The issue contents are the _speclet_ for a new System.Collections.Generic.PriorityQueue type. I will be contributing the PR, if approved. ## Rationale and Usage The .NET Base Class Libraries (BCL) currently lacks support for ordered producer-consumer collections. A common requirement of many software applications is the ability generate a list of items over time and process them in an order different from the order they were received in. There are three generic data structures within the System.Collections hierarchy of namespaces that supported a sorted collection of items; System.Collections.Generic.SortedList, System.Collections.Generic.SortedSet, and System.Collections.Generic.SortedDictionary. Of these, SortedSet and SortedDictionary are not appropriate for producer-consumer patterns that generate duplicate values. The complexity of SortedList is Θ(n) worst case for both Add and Remove. A much more memory and time efficient data structure for ordered collections with producer-consumer usage patterns is a priority queue. Other than when capacity resizing is necessary, worse case insertion (enqueue) and remove top (dequeue) performance is Θ(log n) - far better than the existing options that exist in the BCL. Priority queues have a wide degree of applicability across different classes of applications. The Wikipedia page on Priority Queues offers a list of many different well understand use cases. While highly specialized implementations may still require custom priority queue implementations, a standard implementation would cover a broad range of usage scenarios. Priority queues are particularly useful in scheduling the output of multiple producers, which is an important pattern in highly parallelized software. It's worth noting that both the C++ standard library and Java offer priority queue functionality as part of their basic APIs. ## Proposed API ``` C# namespace System.Collections.Generic { /// /// Represents a collection of objects that are removed in a sorted order. /// /// Specifies the type of elements in the queue. [DebuggerDisplay(""Count = {count}"")] [DebuggerTypeProxy(typeof(System_PriorityQueueDebugView<>))] public class PriorityQueue : IEnumerable, ICollection, IEnumerable, IReadOnlyCollection { /// /// Initializes a new instance of the class /// that uses a default comparer. /// public PriorityQueue(); /// /// Initializes a new instance of the class /// that has the specified initial capacity. /// /// The initial number of elements that the can contain. /// is less than zero. public PriorityQueue(int capacity); /// /// Initializes a new instance of the class /// that uses a specified comparer. /// /// The to use when comparing elements. /// is null. public PriorityQueue(IComparer comparer); /// /// Initializes a new instance of the class /// that contains elements copied from the specified collection and uses a default comparer. /// /// The collection whose elements are copied to the new . /// is null. public PriorityQueue(IEnumerable collection); /// /// Initializes a new instance of the class /// that contains elements copied from the specified collection and uses a specified comparer. /// /// The collection whose elements are copied to the new . /// The to use when comparing elements. /// /// is null. -or- /// is null. /// public PriorityQueue(IEnumerable collection, IComparer comparer); /// /// Initializes a new instance of the class that is empty, /// has the specified initial capacity, and uses a specified comparer. /// /// The initial number of elements that the can contain. /// The to use when comparing elements. /// is less than zero. /// is null. public PriorityQueue(int capacity, IComparer comparer); /// /// Gets the for the . /// /// /// The that is used when /// comparing elements in the . /// public IComparer Comparer { get; } /// /// Gets the number of elements contained in the . /// /// The number of elements contained in the . public int Count { get; } /// /// Adds an object to the into the by its priority. /// /// /// The object to add to the . /// The value can be null for reference types. /// public void Enqueue(T item); /// /// Removes and returns the object with the lowest priority in the . /// /// The object with the lowest priority that is removed from the . /// The is empty. public T Dequeue(); /// /// Returns the object with the lowest priority in the . /// /// The is empty. public T Peek(); /// /// Removes all elements from the . /// public void Clear(); /// /// Determines whether an element is in the . /// /// /// The object to add to the end of the . /// The value can be null for reference types. /// /// /// true if item is found in the ; otherwise, false. /// public bool Contains(T item); /// /// Copies the elements of the to an , /// starting at a particular index. /// /// /// The one-dimensional Array that is the /// destination of the elements copied from the . /// The Array must have zero-based indexing. /// /// The zero-based index in at which copying begins. /// is null. /// /// is less than zero. -or- /// is equal to or greater than the length of the /// /// /// The number of elements in the source is /// greater than the available space from to the end of the destination /// . /// public void CopyTo(T[] array, int arrayIndex); /// /// Copies the elements of the to an /// , starting at a particular index. /// /// /// The one-dimensional Array that is the /// destination of the elements copied from the . /// The Array must have zero-based indexing. /// /// The zero-based index in at which copying begins. /// is null. /// is less than zero. /// /// is multidimensional. -or- /// does not have zero-based indexing. -or- /// is equal to or greater than the length of the -or- /// The number of elements in the source is /// greater than the available space from to the end of the destination /// . -or- /// The type of the source cannot be cast automatically /// to the type of the destination . /// void ICollection.CopyTo(Array array, int index); /// /// Copies the elements stored in the to a new array. /// /// /// A new array containing a snapshot of elements copied from the . /// public T[] ToArray(); /// /// Returns an enumerator that iterates through the /// /// An enumerator for the contents of the . public Enumerator GetEnumerator(); /// /// Returns an enumerator that iterates through the /// /// An enumerator for the contents of the . IEnumerator IEnumerable.GetEnumerator(); /// /// Returns an enumerator that iterates through the . /// /// An that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator(); /// /// Sets the capacity to the actual number of elements in the , /// if that number is less than than a threshold value. /// public void TrimExcess(); /// /// Gets a value that indicates whether access to the is /// synchronized with the SyncRoot. /// /// true if access to the is synchronized /// with the SyncRoot; otherwise, false. For , this property always /// returns false. bool ICollection.IsSynchronized { get; } /// /// Gets an object that can be used to synchronize access to the /// . /// /// /// An object that can be used to synchronize access to the /// . /// object ICollection.SyncRoot { get; } public struct Enumerator : IEnumerator { public T Current { get; } object IEnumerator.Current { get; } public bool MoveNext(); public void Reset(); public void Dispose(); } } } ``` ## Details - Implementation data structure will be a binary heap. Items with a greater comparison value will be returned first. (descending order) - Time complexities: | Operation | Complexity | Notes | | --- | --- | --- | | Construct | Θ(1) | | | Construct Using IEnumerable | Θ(n) | | | Enqueue | Θ(log n) | | | Dequeue | Θ(log n) | | | Peek | Θ(1) | | | Count | Θ(1) | | | Clear | Θ(N) | | | Contains | Θ(N) | | | CopyTo | Θ(N) | Uses Array.Copy, actual complexity may be lower | | ToArray | Θ(N) | Uses Array.Copy, actual complexity may be lower | | GetEnumerator | Θ(1) | | | Enumerator.MoveNext | Θ(1) | | - Additional constructor overloads that take the System.Comparison delegate were intentionally omitted in favor of a simplified API surface area. Callers can use Comparer.Create to convert a function or Lambda expression to an IComparer interface if necessary. This does require the caller to incur a one-time heap allocation. - Although System.Collections.Generic is not yet part of corefx, I propose that this class be added to corefxlab in the meantime. It can be moved to the primary corefx repository once System.Collections.Generic are added and there is consensus that its status should be elevated from experimental to an official API. - An IsEmpty property was not included, since there is no additional performance penalty calling Count. The majority of the collection data structures do not include IsEmpty. - The IsSynchronized and SyncRoot properties of ICollection were implemented explicitly as they are effectively obsolete. This also follows the pattern used for the other System.Collection.Generic data structures. - Dequeue and Peek throw an InvalidOperationException when the queue is empty to match the established behavior of System.Collections.Queue. - IProducerConsumerCollection was not implemented as its documentation states that it is only intended for thread-safe collections. ## Open Questions - Is avoiding an additional heap allocation during calls to GetEnumerator when using foreach a strong enough rationale for including the nested public enumerator structure? - Should CopyTo, ToArray, and GetEnumerator return results in prioritized (sorted) order, or the internal order used by the data structure? My assumption is that the internal order should be returned, as it doesn't incur any additional performance penalties. However, this is a potential usability issue if a developer thinks of the class as a ""sorted queue"" rather a priority queue. - Does adding a type named PriorityQueue to System.Collections.Generic cause a potentially breaking change? The namespace is heavily used, and could cause a source compatibility problem for projects that include their own priority queue type. - Should items be dequeued in ascending or descending order, based on the output of IComparer? (my assumption is ascending order, to match the normal sorting convention of IComparer). - Should the collection be 'stable'? In other words, should two items with equal IComparison results be dequeued in the exact same order they are enqueued in? (my assumption is this isn't needed) ## Updates - Fixed complexity of 'Construct Using IEnumerable' to Θ(n). Thanks @svick. - Added another option question regarding whether the priority queue should be ordered in ascending or descending order compared to the IComparer. - Removed NotSupportedException from explicit SyncRoot property to match behavior of other System.Collection.Generic types instead of using the newer pattern. - Made the public GetEnumerator method return a nested Enumerator struct instead of IEnumerable, similar to the existing System.Collections.Generic types. This is an optimization to avoid a heap (GC) allocation when using a foreach loop. - Removed ComVisible attribute. - Changed complexity of Clear to Θ(n). Thanks @mbeidler. " +579 area-System.Globalization System.Globalization.Extensions.Tests fail on Windows 7 "On Win7 (7601) the globalization extensions have several failures: System.Globalization.Extensions.Tests.IdnaConformanceTests.TestAsciiPositive [FAIL] System.ArgumentException : Decoded string is not a valid IDN name. Parameter name: Unicode System.Globalization.Extensions.Tests.IdnaConformanceTests.TestUnicodePositive [FAIL] Expected: <+á.+ɦê>. Actual:. Error on line number 61 System.Globalization.Extensions.Tests.IdnaConformanceTests.TestAsciiNegative [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: (No exception was thrown) System.Globalization.Extensions.Tests.NormalizationAll.NormalizeTest [FAIL] Assert.False() Failure (many lines like ""'\x0068' is not matched with the normalized form '\x2095 with Géò normalization"") " +581 area-System.Xml Improve performance and allocations of xpath string functions "Improve Translate perf by ~20% and allocations by around 50% (dependant on string) Improve Normalize perf by ~30% and allocations by around 55% (dependant on string) General: We are always iterating through every char so we can get them all in one go and use that as our temporary buffer instead of the StringBuilder. Because these functions can remove chars there is a read point in the buffer and an update point. The update point is always the same place or less than the read point. Normalize: No need for XmlConvertEx.TrimString as we can start ""firstSpace"" as false to trim the start and all trailing whitespace at the end is combined into one space. We can just check that at the end which avoids a trim string creation. " +584 area-System.Linq ParallelEnumerable.Range(...).AsOrdered().Concat(...) ...out of order I'm getting a pretty distressing error: ``` int leftSize = 4; int rightSize = 4; int[] leftData = new int[leftSize]; for (int i = 0; i < leftSize; i++) leftData[i] = i; int[] rightData = new int[rightSize]; for (int i = 0; i < rightSize; i++) rightData[i] = i; ParallelQuery query = ParallelEnumerable.Range(0, leftSize).AsOrdered().Concat(ParallelEnumerable.Range(0, rightSize)); Assert.True(leftData.Concat(rightData).SequenceEqual(query)); ``` ...fails. The expected sequence is `[0, 1, 2, 3, 0, 1, 2, 3]`, and the actual result of this `Concat(...)` is `[0, 0, 1, 1, 2, 2, 3, 3]`. Adding `AsOrdered()` to the inner range has no effect. There is no history of changes for `Concat(...)`, although the actual problem may be elsewhere. This issue is **NOT** present in the current .NET distribution (ie, creating a brand-new C# project won't reproduce the error, this is something happening in corefx, which is a really good thing)/ Generating the parallel sequence via `Enumerable.Range(...).AsParallel().AsOrdered()` _also_ fails, but seems to be putting the elements in non-deterministic order (the last run was `[0, 1, 1, 2, 2, 3, 0, 3]`). However, generating the sequence via `leftData.AsParallel().AsOrdered().Concat(leftData.AsParallel())` returns the expected sequence (both of them have to be generated via backing arrays, or you get the re-ordered or non-deterministic results). `ParallelEnumerable.Range(...).AsOrdered()` _does_ return an ordered sequence. The following test succeeds: ``` int count = 8; ParallelQuery elements = ParallelEnumerable.Range(0, count).AsOrdered().Select(x => (object)x); int counter = 0; Assert.All(elements.Cast(), x => Assert.Equal(counter++, x)); Assert.Equal(count, counter); ``` +585 area-System.Linq Fix PLINQ concat ordering bug For .NET Core, some (temporary) changes were made to PLINQ to remove some of its usage of generics in order to workaround some (temporary) constraints of the runtime. In doing so, this bug slipped in, with the wrong concat key being created for an element in the sequence, causing erroneous results. This PR fixes the bug and adds a test case that fails before and succeeds after the fix. (Fixes #584) +589 area-System.Linq Address remaining PLINQ test ActiveIssues A bunch of PLINQ tests are disabled as ActiveIssue. This commit fixes all of them (issues #176 and #240), except for #235, which is addressed by a separate PR (#585) for a product bug rather than test issues. I did not do a general pass through the PLINQ tests, even though they could use it. PlinqModesTests - There's an explicit comment at the top of the test that it's not meant for DOP==1 (it verifies that work happens in parallel), and then apparently we were surprised when it was failing on single core machines that result in DOP == 1 ;) UnionIntersectDistinctTests.RunOreredUnionTest1 - There's no reason this test should fail. If it does, there's a bug to be investigated. I'm assuming it was actually stalling because of another test running with it concurrently. WithCancellationTests - A bunch of these tests were scheduling tasks to asynchronously cancel/dispose a query, and the query was written to take a certain amount of time to hopefully allow for cancellation to take place. But it appears as part of the tests being ported, those timeouts were simply commented out, making it extremely likely the tests would fail. I've just rewritten them to do the cancellation as part of the query's execution rather than using a separate asynchronous task. I also deleted some duplicative tests. And I made some tests that still did explicit delays/timeouts to be OuterLoop. +594 area-System.Runtime Parsing string to enum with digit as first char takes a very long time "Note: This has to do with mscorlib. https://github.com/Microsoft/referencesource sent me here, but this doesn't look like the place where this is handled. Am I right? When parsing strings to enums with TryParse, in some cases this takes way longer than in all the other cases. After a bit of research I found that all the strings with a digit as first char are slower. This is due to the attempt to parse the string to the underlying type (https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/enum.cs#L441) with a Convert.ChangeType, which can throw an exception, because further down the line it uses (for example) Int32.Parse instead of TryParse (https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/convert.cs#L1121). The time it takes to create the Exception is significant. In my project I ended up writing a new Enum parser to circumvent this issue. ""Something"": 240.49 ns per parse ""1Somethin"": 37178.57 ns per parse ""123456789"": 485.63 ns per parse As users expect Convert.ToXxx() to throw an exception when it fails, changing this is a bad idea I think. Possible solutions I can think of: - Extend the Convert class with Try-methods that don't throw exceptions, and use those while trying to parse an enum (much work) - Instead of checking whether the first character is a digit (https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/enum.cs#L434), change that line to a TryParse of the whole string (the easier way) " +598 area-Meta Improve flow of readme The readme file contains several pieces of information, of which the list of components is the most substantial. I pulled the engagement-oriented content above the component list, to make it easier to read. I also attempted to better clarify and position CoreFX within .NET Core. At the point that CoreCLR shows up, this will be more important. Supersedes PR #539, which had the wrong baseline and targeted the wrong branch. +617 area-System.Diagnostics Failure in System.Diagnostics.FileVersionInfoTest on Chinese Windows 8.1 "Four out of the six tests in System.Diagnostics.FileVersionInfoTest failed when `build` on Chinese Windows 8.1. They might also fail on other non-ENU OS'es. - FileVersionInfoTest.FileVersionInfo_Normal [FAIL] Error - Property 'Language' incorrect. Expected == ""English (United States)"", Actual == ""\u82f1\u8bed(\u7f8e\u56fd)"", Alternate == <null> - FileVersionInfoTest.FileVersionInfo_Chinese [FAIL] Error - Property 'Language' incorrect. Expected == ""Chinese (Simplified)"", Actual == ""\u4e2d\u6587(\u7b80\u4f53)"", Alternate == ""Chinese (Simplified, PRC)"" - FileVersionInfoTest.FileVersionInfo_DifferentFileVersionAndProductVersion [FAIL] Error - Property 'Language' incorrect. Expected == ""Process Default Language"", Actual == ""\u8fdb\u7a0b\u9ed8\u8ba4\u8bed\u8a00"", Alternate == <null> > - FileVersionInfoTest.FileVersionInfo_CustomManagedAssembly [FAIL] Error - Property 'Language' incorrect. Expected == ""Language Neutral"", Actual == ""\u8bed\u8a00\u4e2d\u6027"", Alternate == <null> " +621 area-Infrastructure Multiple nuget src\ dirs? Why are there multiple nuget src dirs.? There is a .nuget with a single file and a nuget with multiple files. Was this an oversight? Can I fix/combine them? +624 area-System.Diagnostics FileVersionInfo test: Get expected values using VerLanguageName call #617 It seems that VerLanguageName returns value in Windows locale no matter what thread locale is set, so must get expected values using that function. Fixes #617 Also, as really minor addition - change newline from \r\n to Environment.NewLine to match with same change in FileVersionInfo class (since it now uses AppendLine) +625 area-Meta HelloWorld WinRT Dependency? Hello, I'm trying to build the HelloWorld demo based off the Blog post instructions. It looks like the nuget.org packages aren't quite synced up, so that's a shame and I'm using 22416 instead. After I build and attempt to run the program I get an error stating that winrt-string is missing. Should this be working on Windows 7? -Thanks +626 area-System.Runtime Deprecate DateTime.Now (The original issue was at dotnet/coreclr#45), but I've moved it over here as the meat of the issue is about framework design. From @mj1856 I would like to propose that [`DateTime.Now`](https://github.com/dotnet/coreclr/blob/ef1e2ab328087c61a6878c1e84f4fc5d710aebce/src/mscorlib/src/System/DateTime.cs#L904-L920) be deprecated. This is most developer's first introduction to working with time, and is also a root cause of bugs related to daylight saving time and time zones. Developers should get in the habit of thinking globally, rather than locally - especially when designing for the web. Even on desktop and mobile applications that only run in a single time zone, this can create the kind of bugs that pull developers out of bed at 2AM on the morning of a daylight saving time transition. More supporting arguments: - [The Case Against DateTime.Now](http://www.codeofmatt.com/2013/04/25/the-case-against-datetime-now/) - Matt Johnson (me) - [What's Wrong with DateTime Anyway](http://blog.nodatime.org/2011/08/what-wrong-with-datetime-anyway.html) - Jon Skeet Given the widespread nature of this API, I suggest _not_ removing it from coreclr - but rather marking it with an `[Obsolete]` attribute. I can send a PR if the suggestion is approved. +636 area-System.Diagnostics Possible typo in FileVersionInfoTest "This is low priority, but logging here so it doesn't get lost. In [FileVersionInfoTest.cs line 239](https://github.com/dotnet/corefx/blob/0252409de5d77d4a104903a68d9ee34d54992e54/src/System.Diagnostics.FileVersionInfo/tests/FileVersionInfoTest.cs#L239): ``` s_fviSecondNativeLibrary.ProductName = ""Unkown_Product_Name""; ``` ""Unkown"" should be ""Unknown"", but correcting it fails the test. It should probably be first corrected wherever it originates from. Thanks. " +641 area-System.Xml Some System.Xml.Linq.XDocument tests are failing Some of the tests used to print error messages but did not fail. I added Asserts assuming that they fail and created this issue. I did not check if this is a test bug, product bug or not a bug at all (we need to check what happens on desktop and if this is something we should fix). +642 area-System.Xml Clean up System.Xml.Linq.XDocument tests "- [x] Remove spam messages (there are few left) - [x] Some of the tests might be failing but not throwing (look at the messages - https://github.com/dotnet/corefx/issues/641) - [x] Convert tests to use Xunit (right now they are only partially) - [x] Replace if (expr) throw new TestException, etc with proper use of Xunit asserts " +644 area-System.Reflection Proposal: Additional methods to aid in reflection of generic types "I don't know if this is the appropriate place to make such a suggestion. ## Problem I've always found it a bit annoying that the reflection APIs in .NET haven't been improved much since the advent of generics and when working with generic types or methods that considerable additional boilerplate needs to be written in order to correctly work with these types. ## Solution In the past I've implemented helper extension methods which significantly simplify reflection over generic types and methods. These extension methods largely work on top of the public surface of the `System.Type` class, although a few dealing with generic methods did resort to reflection in order to call internal methods to better detect and deal with ambiguities. I think that it would be very convenient to have these methods (or something like them) considered for addition into the core framework. I am willing and able to share my extension methods and could start a branch if there is traction to this idea. ### FindGenericInterfaces Identical to `Type.FindInterfaces` except that it will match on open generic interface types. ``` cs public delegate bool GenericTypeFilter(Type type, Type[] genericArguments, object filterCriteria); public static Type[] FindGenericInterfaces(this Type type, Type genericInterfaceType); public static Type[] FindGenericInterfaces(this Type type, Type genericInterfaceType, GenericTypeFilter filter, object filterCriteria); Type[] interfaces = typeof(int[]).FindGenericInterfaces(typeof(IEnumerable<>), (type, types, criteria) => types[0] == typeof(int), null); ``` ### ImplementsInterface Returns `true` if the type implements the specified interface. The interface can either be an open generic type or a closed constructed type. If the case of the former the overloads can be used to return the generic type arguments. For those overloads that accept a specific count of `out` parameters the generic type arguments must match the count of the `out Type` arguments. For the overload that accepts a `Type[]` the number of generic type arguments must match the length of the array. The overload that accepts an `out Type[]` will match any number of generic type arguments. _I also have `IsSubclassOf` and `Is` extension methods that function in almost the same manner except that the first matches if the type is a subclass of the specified type and the second matches if the type is a subclass of, implements or is of the specified type._ ``` cs public static bool ImplementsInterface(this Type type, Type interfaceType); public static bool ImplementsInterface(this Type type, Type interfaceType, out Type genericArgument); public static bool ImplementsInterface(this Type type, Type interfaceType, out Type genericArgument1, out Type genericArgument2); public static bool ImplementsInterface(this Type type, Type interfaceType, out Type genericArgument1, out Type genericArgument2, out Type genericArgument3); public static bool ImplementsInterface(this Type type, Type interfaceType, Type[] genericArguments); public static bool ImplementsInterface(this Type type, Type interfaceType, out Type[] genericArguments); Type elementType, keyType; if (typeof(int[]).ImplementsInterface(typeof(IEnumerable)) { ... } if (typeof(int[]).ImplementsInterface(typeof(IEnumerable<>), out elementType)) { ... } if (typeof(Dictionary).ImplementsInterface(typeof(IDictionary<>), out keyType, out elementType)) { ... } Type[] arguments = new Type[2]; if (typeof(Dictionary).ImplementsInterface(typeof(IDictionary<>), arguments)) { ... } arguments = null; if (typeof(Dictionary).ImplementsInterface(typeof(IDictionary<>), out arguments)) { ... } ``` ### GetGenericMethod _Separated into proposal [Add GetGenericMethod method to simplify finding generic methods via reflection](https://github.com/dotnet/corefx/issues/16567)._ Returns the generic method with the same number of specified generic arguments. The generic arguments are checked for compatibility with the generic type constraints. If a parameter type list is also specified then the parameter types must be acceptable for the given generic type arguments. _In order to properly handle matches and ambiguity resolution I did have to break out reflection in order to invoke the internal members `RuntimeType.FilterApplyMethodBase`, `DefaultBinder.FindMostDerivedNewSlotMeth` and `DefaultBinder.CompareMethodSigAndName`. A built-in implementation would not require to rely on any reflection._ ``` cs public static MethodInfo GetGenericMethod(this Type type, string name, Type[] genericArgs); public static MethodInfo GetGenericMethod(this Type type, string name, Type[] genericArgs, BindingFlags bindingAttrs); public static MethodInfo GetGenericMethod(this Type type, string name, Type[] genericArgs, Type[] types); public static MethodInfo GetGenericMethod(this Type type, string name, Type[] genericArgs, Type[] types, ParameterModifier[] modifiers); public static MethodInfo GetGenericMethod(this Type type, string name, Type[] genericArgs, BindingFlags bindingAttrs, Binder binder, Type[] types, ParameterModifier[] modifiers); public static MethodInfo GetGenericMethod(this Type type, string name, Type[] genericArgs, BindingFlags bindingAttrs, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); public class Foo { public void Bar(object value) { ... } public void Bar(T value) { ... } } MethodInfo genericBar = typeof(Foo).GetGenericMethod(""Bar"", new Type[] { typeof(string) }, new Type[] { typeof(string) }); ``` " +645 area-System.IO Support long file names on Windows Now would seem to be the time to finally tackle the MAX_PATH nightmare. With the Win32FileSystem and other abstractions we can convert incoming paths to their long path equivalent if needed before handing off to the actual Win32 APIs. It appears that all of the APIs currently in use support the extended syntax (\?), with the exception of Get/SetDirectory. +649 area-System.Runtime String.Equals isn't intuitive and forces us to do the OrdinalIgnoreCase thing "We're doing a sample and we are FOREVER doing this ``` if (sort.Equals(""Title"", StringComparison.OrdinalIgnoreCase)) ``` I think it's time for an overload or an extension that ""does the right thing."" This is a 10 year old pattern and if the default is wrong (as we tell people to do this) then let's make a better method. Everyone has a version and extension that does this. " +652 area-Meta Remove dead code Many libraries and tests has some dead code. Please remove it per library. At minimum we should run FxCop (list might not be complete, following is just a list of folders under src/) - [ ] Microsoft.Win32.Primitives - [ ] Microsoft.Win32.Registry - [ ] System.Collections.Concurrent - [ ] System.Collections.Immutable - [ ] System.Collections.NonGeneric - [ ] System.Collections.Specialized - [ ] System.ComponentModel.Annotations - [ ] System.ComponentModel.Primitives - [ ] System.ComponentModel - [ ] System.Console - [ ] System.Diagnostics.FileVersionInfo - [ ] System.Diagnostics.Process - [ ] System.Globalization.Extensions - [ ] System.IO.FileSystem.DriveInfo - [ ] System.IO.FileSystem.Primitives - [ ] System.IO.FileSystem - [ ] System.IO.MemoryMappedFiles - [ ] System.IO.Pipes - [x] System.IO.UnmanagedMemoryStream (https://github.com/dotnet/corefx/pull/1080) - [ ] System.Linq.Parallel - [ ] System.Numerics.Vectors - [ ] System.Reflection.Metadata - [x] System.Resources.ResourceWriter - [ ] System.Runtime - [ ] System.Text.Encoding.CodePages - [ ] System.Text.RegularExpressions - [x] System.Threading.Tasks.Dataflow - [ ] System.Xml.XDocument - [ ] System.Xml.XPath.XDocument - [ ] System.Xml.XPath.XmlDocument - [ ] System.Xml.XPath - [ ] System.Xml.XmlDocument +657 area-System.Runtime System.Runtime tests fail on Win10, non en-US culture The code for the Single and Double.TryParse and ToString tests seem to assume OS < Win10 and CultureInfo = en-US. Here's a failure running on Win10 due to the same infinity issue as #136 ``` DoubleTests.TestToString [FAIL] Assert.Equal() Failure Γåô (pos 0) Expected: Infinity Actual: Γê₧ Γåæ (pos 0) Stack Trace: D:\Src\corefx\src\System.Runtime\tests\System\Double.cs(181,0): at DoubleTests.TestToString() DoubleTests.TestTryParse [FAIL] Assert.True() Failure Finished: System.Runtime.Tests Stack Trace: D:\Src\corefx\src\System.Runtime\tests\System\Double.cs(294,0): at DoubleTests.TestTryParse() SingleTests.TestToString [FAIL] Assert.Equal() Failure Γåô (pos 0) Expected: Infinity Actual: Γê₧ Γåæ (pos 0) Stack Trace: D:\Src\corefx\src\System.Runtime\tests\System\Single.cs(181,0): at SingleTests.TestToString() SingleTests.TestTryParse [FAIL] Assert.True() Failure Stack Trace: D:\Src\corefx\src\System.Runtime\tests\System\Single.cs(294,0): at SingleTests.TestTryParse() ``` I did not repro similar issues with non en-US culture, but I think from code inspection it won't work there either (even on Win7 or Win8)... +659 area-System.Runtime GCTest TotalMemory tests failing. ``` GCTests.TotalMemory [FAIL] Assert.True() Failure Stack Trace: d:\j\workspace\dotnet_corefx_prtest\Config\Release\OS\Windows_NT\Tests\false\label\windows\src\System.Runtime\tests\System\GC.cs(68,0): at GCTests.TotalMemory() ``` See: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/Config=Release,OS=Windows_NT,Tests=false,label=windows/91/console +668 area-System.Runtime Implement a generic Enum.Parse method Although the Enum.TryParse method (https://msdn.microsoft.com/en-us/library/system.enum.tryparse(v=vs.110).aspx) has two generic overloads, the Enum.Parse overloads (https://msdn.microsoft.com/en-us/library/System.Enum.Parse(v=vs.110).aspx) were added to the .NET Framework in version 1.0, before the introduction of generics. They create the need for rather redundant code, such as ``` Colors colorValue = (Colors) Enum.Parse(typeof(Colors), colorString); ``` which entails the need to add an additional cast, as well as instantiate a Type object that represents the enumeration type. It would be nice to add generic Parse overloads that correspond to the generic TryParse overloads: ``` public static TEnum Enum.Parse(String value); public static TEnum Enum.Parse(String value, Boolean ignoreCase); ``` Note that there's also another open issue on improving the performance of Enum.TryParse at https://github.com/dotnet/corefx/issues/594. +674 area-System.Diagnostics FileVersionInfo tests' native assemblies and exes do not have sources We should at least provide the sources for these native binaries so that we can tell what's going on if we hit issues. The next time we need to make a change to these tests, it would also be worth getting the native binaries to build as vcxprojs, relying on the VS2013 prerequisite for now (see [System.ServiceProcess.ServiceController.Tests](https://github.com/dotnet/corefx/tree/v1.0/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests) for an example). When we start to light up tests cross-platform, we will be forced to clean this up and use CMake or some other solution for native binaries. cc @weshaggard +679 area-Infrastructure Refactor build to run tests based on targets and dependencies rather than properties "The build system currently runs tests by setting the RunTestsForProject to execute after PrepareForRun. Because we don't want to run the tests after a Visual Studio build (because VS has its own mechanisms for running tests), since #508 the BuildingInsideVisualStudio property is used to disable the RunTestsForProject target. Making the build system aware of the context in which its running in order to skip a target feels odd in a build system with a robust target and dependency mechanism. It seems to me that it would be more idiomatic for the build to expose its targets in such a way so that each context can use the target system to control what targets are run. In other words, do not include the RunTestsForProject in the dependency tree of the default target for the sub-project files (which is what Visual Studio will execute), but do include it in the dependency tree of the default target for the top-level build file. In practice, I believe this would just mean changing the default target for each sub-project to be Compile instead of Build. This would also have the positive effect of making the build IDE-agnostic, which is important as .NET Core becomes truly cross-platform. What would the value of the ""BuildingInsideVisualStudio"" property be from within Xamarin Studio, or SharpDevelop, or Sublime using [OmniSharp](http://www.omnisharp.net/)? Xamarin Studio actually sets BuildingInVisualStudio to true in order to try and increase compatibility, which is obviously not a desirable state of affairs. Let's try to reduce the need for such hacks by keeping the dependencies between the build and the IDE clean (i.e. one-way). " +682 area-Meta Contract.Assert vs Debug.Assert Some of the CoreFX libraries use Contract.Assert. Others use Debug.Assert. We should be consistent, and if possible sweep the source to unify this. +683 area-System.Console Why having System.Console.dll? Why having a new DLL called `System.Console.dll`? `System.Console` class is already in `mscorlib.dll` since .NET Framework 1.0 +684 area-System.Runtime Add non-throwing methods to Convert class "Convert class is the only method to convert boxed values to needed integer type. However, it throws exceptions, so it is too hard to implement behavior that matches simple explicit cast between integer types. As a solution - add TryXXX methods to Convert class. Additionally, it would be nice to have option to make Convert behave like explicit cast. For example, this is valid: ``` C# int a = -1; int b = (int)(uint)a; ``` But this is not: ``` C# int a = -1; int b = Convert.ToInt32(Convert.ToUInt32(a)); ``` This can be really useful when you process some data as ""just some bytes"" and you may get either signed or unsigned boxed value at input. As a possible solution - add overload that accepts second boolean argument and acts like an explicit integer cast. Example of this problems and required workaround can be seen in Enum class, in particular here: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Enum.cs#L207 " +686 area-Meta (Proposal) Coding Guidelines. "The coding guidelines should be alter to permit the following styles. which aids the readability of the code. - Align on the `:` of named parameters rather than lefthand edge of parmeter name ``` c# public static ImmutableArray GetAllMethodBodyDiagnostics(CSharpCompilation compilation, CancellationToken cancellationToken) { DiagnosticBag diagnostics = DiagnosticBag.GetInstance(); CompileMethodBodies( compilation: compilation, moduleBeingBuilt: null, generateDebugInfo: false, hasDeclarationErrors: false, filter: null, filterTree: null, filterSpanWithinTree: null, diagnostics: diagnostics, cancellationToken: cancellationToken ); DocumentationCommentCompiler.WriteDocumentationCommentXml(compilation, null, null, diagnostics, cancellationToken); compilation.ReportUnusedImports(diagnostics, cancellationToken); return diagnostics.ToReadOnlyAndFree(); } ``` vs ``` c# public static ImmutableArray GetAllMethodBodyDiagnostics(CSharpCompilation compilation, CancellationToken cancellationToken) { DiagnosticBag diagnostics = DiagnosticBag.GetInstance(); CompileMethodBodies( compilation: compilation, moduleBeingBuilt: null, generateDebugInfo: false, hasDeclarationErrors: false, filter: null, filterTree: null, filterSpanWithinTree: null, diagnostics: diagnostics, cancellationToken: cancellationToken); DocumentationCommentCompiler.WriteDocumentationCommentXml(compilation, null, null, diagnostics, cancellationToken); compilation.ReportUnusedImports(diagnostics, cancellationToken); * return diagnostics.ToReadOnlyAndFree(); } ``` - Simple IF If the If statement is small and has no else, and the code block is small enough. The combined width is less than the 80 character width limit. ``` c# if( arg0 == null ) throw new ArgumentException( nameof( arg0 ) ); if( arg0 == null ) { throw new ArgumentException( nameof( arg0 ) ); }; ``` vs ``` c# if( arg0 == null ) { throw new ArgumentException( nameof( arg0 ) ); } ``` Consider multiple guards statements you are approaching halve of the length of the screen, ever before you've reached the core of the method. - Simple case clause ``` c# select ( value ) { case 0: return ""Zero""; case 1: return ""One""; case 2: return ""Two""; // ... case 9: return ""Nine""; default: return ""Foo""; } ``` vs ``` c# select ( value ) { case 0: return ""Zero""; case 1: return ""One""; case 2: return ""Two""; // ... case 9: return ""Nine""; default: return ""Foo""; } ``` 15 LoC rather than 25 or 35 if you need to include the `break` ``` case 0: output = ""Zero""; break; ``` - 2 space indentation Consider the case of pattern-matching, each scope gets indented, 5 levels of indentation and you're already used a quarter of the permitted code width. - Method Parameter align vertically If the method signature is getting ""too"" wide, then consider vertical alignment. ``` c# internal static MethodSymbol DefineScriptEntryPoint ( CSharpCompilation compilation, PEModuleBuilder moduleBeingBuilt, TypeSymbol returnType, bool hasDeclarationErrors, DiagnosticBag diagnostics ) { ``` ``` c# internal static MethodSymbol DefineScriptEntryPoint(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuilt, TypeSymbol returnType, bool hasDeclarationErrors, DiagnosticBag diagnostics) { ``` **NOTE** I not say that the existing code should be altered (it would still be valid according to the guidelines) but allow pull-requests to use some permitted alternatives forms. Yes someone could submit a pull-request that changes the exist to use the alternatives. Whether that pull-request would be accepted is a different question. " +692 area-System.Runtime Add a non-generic version of Enum.TryParse These are the methods in Enum class related to string parsing. ``` c# public static object Parse(Type enumType, string value); public static object Parse(Type enumType, string value, bool ignoreCase); public static bool TryParse(string value, out TEnum result) where TEnum : struct; public static bool TryParse(string value, bool ignoreCase, out TEnum result) where TEnum : struct; ``` Apparently Parse is exposed only in non-generic form, while TryParse is only exposed in generic form. This is somewhat inconsistent. It is simple enough to call a non-generic method in a generic method, but not the other way around. So Parse can be made generic using the following helper. But it is a lot harder to wrap TryParse into TryParse(Type enumType) without reflection calls. ``` c# public static TEnum Parse(string value, bool ignoreCase) { return Enum.Parse(typeof(TEnum), value, ignoreCase); } ``` The suggestion is to add a non-generic Enum.TryParse method, the API signature would look like ``` c# public static bool TryParse(Type enumType, string value, out object result) public static bool TryParse(Type enumType, string value, bool ignoreCase, out object result) ``` +693 area-System.Runtime Add Enum.SetFlag and Enum.RemoveFlag to make bitwise flagging easier To maintain multiple bool states in a class, instead of declaring many bool fields, an enum flag can be used to compact these states in to a single member to optimize for memory usage. ``` c# [Flags] enum DirtyFlags { X = 1, Y = 1 << 1, Z = 1 << 2 }; DirtyFlags dirtyFlags = DirtyFlags.X | DirtyFlags.Y | DirtyFlags.Z; ``` It is simple to test if a flag is set using `Enum.HasFlag(DirtyFlags.X)`, but the scenario is not complete. Without the ability to set and remove a flag, the following code needs to be maintained manually: ``` c# // Setting a flag dirtyFlags |= DirtyFlags.X; // Removing a flag, this is harder to remember :( dirtyFlags &= ^DirtyFlags.X; ``` The suggestion is to add 2 methods to Enum to help set and clear a flag. ``` c# public bool HasFlag(Enum flag); // This method already exists public bool SetFlag(Enum flag); public bool RemoveFlag(Enum flag); ``` These methods should be aggressively inlined since bitwise manipulations is very likely to be used in a performance sensitive scenario. +694 area-Meta State policy on mscorlib "I see a lot of confusion around mscorlib, since it's part of coreclr project, but it feels more like part of corefx. Some issues are open here (and sent to coreclr, like #594), some are open there and sent to here (like #684). Plus, there is some classes that exist in both repos with some differences like ConcurrentDictionary (for example of pull request open to one repo and sent to another see dotnet/coreclr#63). And even tests for runtime classes are in corefx (but runtime classes itself are in coreclr). There should be something like ""rule of a thumb"" to rule this out. " +699 area-System.Collections Implement ForEachAsync in System.Collections.Concurrent @stephentoub has some great blog posts about higher level operations that can be implemented all using public API that exists today. Some of these would be great to see in the library itself: http://blogs.msdn.com/b/pfxteam/archive/2012/03/05/10278165.aspx In particular ``` C# public static Task ForEachAsync(this IEnumerable source, Func body) { return Task.WhenAll( from item in source select Task.Run(() => body(item))); } ``` And ``` C# public static Task ForEachAsync(this IEnumerable source, int dop, Func body) { return Task.WhenAll( from partition in Partitioner.Create(source).GetPartitions(dop) select Task.Run(async delegate { using (partition) while (partition.MoveNext()) await body(partition.Current); })); } ``` +700 area-System.Runtime Proposal: System.Date type "Currently, trying to use System.DateTime to represent just calendar dates is overkill and is an easy way to introduce bugs. SQL Server supports a native date-only type, and having a date-only type in .NET to match would be very handy. But not only from SQL: accepting an MVC action method parameter from an HTML5 input type=""date"" field would be simplified with a native Date type. Examples: ``` C# Date d = new Date(2015, 2, 9); Date d2 = Date.UtcToday; Date d3 = Date.LocalToday; // helper methods for adding/subtracting days, months, years, or TimeSpan Date d4 = d.AddDays(7); Date d5 = d.Subtract(TimeSpan.FromYears(2)); string s = d.ToString(); //--> ""2015-02-09"" // properties: int y = d.Year; int m = d.Month; int day = d.Day; DayOfWeek weekday = d.DayOfWeek; int doy = d.DayOfYear; // convert from DateTime: Date d6 = DateTime.UtcNow.ToDate(); Date d7 = (Date)DateTime.UtcNow; // convert to DateTime: DateTime dt = d.ToDateTime(); DateTime dt2 = (DateTime)d; // equivalent to new DateTime(d.Year, d.Month, d.Day) ``` " +701 area-Infrastructure Add Contract Reference Asssemblies to the repo We need to enabling building our contract reference assemblies in the CoreFX repo. They are be needed for a number of reasons: 1) We need to build them to put them in our nuget packages. 2) We need them to produce our facades for our nuget packages. 3) People would like to see a reference for what is supported (see #147 as example) and for what we will be bringing online overtime. We will need to figure out the structure we want to provide them in and provide the tooling for editing them. A strawman for the structure would be something like: src\System.Runtime\src\Contract\4.0.0.0\System.Runtime.cs|csproj src\System.Runtime\src\Contract\4.0.10.0\System.Runtime.cs|csproj src\System.Runtime\src\Contract\4.0.20.0\System.Runtime.cs|csproj +703 area-System.Globalization Open-source System.Globalization unit tests Note: The implementation of this contract lives in mscorlib in the [coreclr](https://github.com/dotnet/coreclr) repository, but we are planning to put tests in this repo and test against the NuGet package produced by the coreclr repo. +704 area-System.IO Open-source System.IO unit tests Note: The implementation of this contract lives in mscorlib in the [coreclr](https://github.com/dotnet/coreclr) repository, but we are planning to put tests in this repo and test against the NuGet package produced by the coreclr repo. +705 area-System.Reflection Open-source System.Reflection unit tests Note: The implementation of this contract lives in mscorlib in the [coreclr](https://github.com/dotnet/coreclr) repository, but we are planning to put tests in this repo and test against the NuGet package produced by the coreclr repo. +707 area-System.Threading Open-source System.Threading unit tests Note: The implementation of this contract lives in mscorlib in the [coreclr](https://github.com/dotnet/coreclr) repository, but we are planning to put tests in this repo and test against the NuGet package produced by the coreclr repo. +708 area-System.Text Open-source System.Text.Encoding unit tests Note: The implementation of this contract lives in mscorlib in the [coreclr](https://github.com/dotnet/coreclr) repository, but we are planning to put tests in this repo and test against the NuGet package produced by the coreclr repo. +709 area-System.Diagnostics Write a test for PROCESS_QUERY_LIMITED functionality "Per #303 we have some debt here we need to get tested. It's not clear the best strategy here. Should this be an inner loop test? Does the test need to run elevated somehow or can we run at regular permissions and create a low integrity process? " +721 area-System.Net Registered I/O Extensions Expose Winsock's RIO Extensions to .NET. [Registered I/O is available](https://msdn.microsoft.com/en-gb/library/windows/desktop/ms740642%28v=vs.85%29.aspx) for desktop from Windows 8, Windows Server 2012, Windows Store apps from Server 2012 R2 and 8.1, and phone from Windows Phone 8 User code would want to pre-register a buffer, which would need to be pinned and go via [RIORegisterBuffer](https://msdn.microsoft.com/en-us/library/windows/desktop/hh437199%28v=vs.85%29.aspx) probably by passing through an internal buffer as per the [Websocket](http://referencesource.microsoft.com/#System/net/System/Net/WebSockets/WebSocket.cs,7dd0b6c7a0033d04)s to reduce data copies. Async sends and receives driven via ArraySegment over provided internal buffer. (Related [SO question](http://stackoverflow.com/questions/18419117/rio-registered-i-o-sockets-in-net)) +725 area-System.Console Augment terminfo search with first-letter-as-hex terminfo files are organized into subdirectories based on the first letter of the terminal name. On Linux, the letter itself is used as the directory name. On OS X, the hex value for the letter is used as the directory name. This commit updates the logic that searches for the terminfo database file to try both locations. Fixes #723 (the search portion of it, not the runtime asserts once the correct search path is used) +728 area-System.Text Open-source EncodingData tool This tool is used to generate [System.Text.Encoding.CodePages\src\System\Text\EncodingTable.Data.cs](https://github.com/dotnet/corefx/blob/master/src/System.Text.Encoding.CodePages/src/System/Text/EncodingTable.Data.cs). +735 area-Infrastructure NativeServiceTest fails to build with /p:OS=Unix "When running the following command from the root of my corefx repo: ``` build /t:rebuild /p:SkipTests=true /p:OS=Unix ``` I consistently get the following error towards the end of the build: ``` C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets(57,5): error MSB8020: The build tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, please install v120 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting ""Retarget solution"". [\src\System.ServiceProcess.ServiceController\tests\NativeTestService\NativeTestService.vcxproj] ``` I have VS2015 CTP 5 installed. I don't have VS2013 installed. (We don't actually need this Windows-only test project to build when building with OS=Unix, if that's the source of the problem.) " +736 area-System.IO Use lseek instead of lseek64 in Unix I/O As part of this, changed interop definitions of off_t to be Int64 rather than IntPtr. For now we're assuming that we'll run either on 64-bit systems and/or where _FILE_OFFSET_BITS == 64. We can revisit this if that assumption fails. Fixes #733 +738 area-System.Runtime Add more tests around Enum.TryParse +743 area-Infrastructure Feature: Need to create a solution for building localized binaries We need to come up with a solution to enable building localized binaries as well as taking contributions to localized content. +744 area-Infrastructure Top level bin\ output folder has become cluttered with overly generic names "Many of the files below are specific to a given library's tests, but there is no convention to identify them as such. e.g. 'Assembly1' is specific to FileVersionInfo tests and 'ModuleCore' is for Xml. We should either: 1. Rename all test assemblies to include a prefix matching their parent. 2. Create a hierarchical structure in bin\ I think 1 would be better as it would also make the build log easier to understand. I also question whether we even need so many test assemblies, especially in the XML case. `` D:\Src\corefx\bin\Debug>dir /b \* | findstr /v ""System"" | findstr /v ""Microsoft"" Assembly1 Axes.Tests BaseLibManaged Events.Tests MemoryMappedFile.Tests MemoryMappedViewAccessor.Tests MemoryMappedViewStream.Tests Misc.Tests ModuleCore NativeTestService ProcessTest_ConsoleApp Properties.Tests SDMSample.Tests Streaming.Tests TreeManipulation.Tests XDocument.Common XDocument.Test.ModuleCore XmlCoreTest XmlDiff xNodeBuilder.Tests xNodeReader.Tests XunitTraitsDiscoverers ``` ``` " +745 area-Infrastructure Many solutions fail to build in VS without a full build.cmd first The culprit in most cases is a missing project reference to XunitTraitsDiscoverers. VS needs the targets of project references to be in the scope of the current solution. While we could go and add this project everywhere, I think it will clutter the solutions. A better approach might be to use shared source files that we pull in the test targets/props. +746 area-Infrastructure The top-level src/ folder is cluttered with all of those .slns "IMHO, each library should have its sln file within its own folder. Instead of ``` src\ System.Xyz\ System.Xyz.sln ``` We should have ``` src\ System.Xyz\ System.Xyz.sln ``` I believe the reasons why we had the former originally are obsolete now. 1) We liked the idea of grouping related libraries together in a solution. Today, only System.Xml.\* does this. However, it will not really work long-term because we shouldn't have library-to-library project-to-project references as it messes with our package versioning story post-V1. 2) We had problems with redundant packages/ folders. I believe this was solved by the NuGet.config change that moved packages to a folder at the root outside of src " +754 area-System.Collections Simplify and modernize System.Collections tests The System.Collections tests were mechanically ported from existing test assets using a different test framework. Some of the tests also include misleading comments, and complication and obfuscation relating to constraints at the time they were written. +758 area-Infrastructure BuildPackages target fails because GetPackageVersion needs a version number "BuildPackages target is broken currently because GetPackageVersion requires more than we are currently setting in corefx repo right now. Luckily (:)) we had another bug that prevented this target from running on clean builds so not many people have hit it yet including our CI system. I'm fixing the other bug however I'm going to disable BuildPackages for now until we get this fixed. Task ""GetPackageVersion"" (TaskId:2) Task Parameter:NuSpecFile=D:\git\corefx\src\nuget\Microsoft.Bcl.Immutable.nuspec (TaskId:2) D:\git\corefx\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-4\lib\packages.targets(62,5): error MSB4044: The ""GetPackageVersion"" task was not given a value for the required parameter ""DailyBuildNumber"". " +759 area-Infrastructure Incremental build tweaks Update Clean target to no longer delete PackagesDir, to address #529. Fixed an issue with the _RestoreBuildTools target where we sometimes get into a never ending running of that target in cases where your dir.props or pacakges.config is newer than the tools. This showed its head while I had edits to that file and was no longer cleaning my Packages directory. To address I always ensure the outputs are newer by touching them at the end of the target whenever it is ran. Also realized that our BuildPackages target was not being run any longer on clean builds and only on incremental builds. This showed that it is recently broken by the latest build tools update and I filed #758 for that but for now I'm disabling the building of the packaging. I also started importing dir.targets in build.proj so the tools were restored in time for them to be used in src\dir.proj even on clean builds. +765 area-Infrastructure Add daily build number to NuGet packages and fix package versioning. This is to address issue #758. This change adds BuildNumber.props containing the daily build number property that's consumed by the package build infrastructure. Updated package versions for Immutable and Metadata based on the values of the daily building packages. The values have a build number one greater than the last build. Deleted all nuspec files for non-shipping packages. +770 area-Infrastructure Make XunitTraitDiscoverers as a part of the custom Xunit. Inorder to skip tests and other xunit functionality, the projects require an extra project reference to XunitTraitDiscoverers. Making this a part of the netcore xunit will be good. It's basically an extension on Xunit functionalities, and we should merge these two projects. +774 area-Infrastructure Add System.Threading to packages.config in test projects "This would otherwise make the Mono mcs compiler fail with: ""error CS0518: The predefined type `System.Threading.Interlocked' is defined in an assembly that is not referenced."" It's the same change as in https://github.com/dotnet/corefx/pull/328 " +775 area-Infrastructure Use xunit netcore package in XunitTraitsDiscoverers XunitTraitsDiscoverers used the original xunit.abstractions and xunit.core packages instead of the netcore version. This causes a problem like https://github.com/dotnet/buildtools/pull/38 when compiling on Mono due to the unwanted xunit.runner.tdnet.dll +776 area-Infrastructure Fix condition in dir.targets The value passed to Exists() should be enclosed in single quotes according to https://msdn.microsoft.com/en-us/library/7szfhaft.aspx +777 area-Infrastructure Move solution files to the appropriate projects folders fixes #746 +780 area-System.Collections Immutable collections test failure in CI An immutable collections test failed in a CI run: ``` System.Collections.Immutable -> d:\j\workspace\dotnet_corefx_windows_debug_prtest\bin\Windows_NT\Debug\System.Collections.Immutable\System.Collections.Immutable.dll System.Collections.Immutable.Tests -> d:\j\workspace\dotnet_corefx_windows_debug_prtest\bin\Windows_NT\Debug\System.Collections.Immutable.Tests\System.Collections.Immutable.Tests.dll xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Collections.Immutable.Tests Discovered: System.Collections.Immutable.Tests Starting: System.Collections.Immutable.Tests System.Collections.Immutable.Test.ImmutableSortedSetTest.EmptyTest [FAIL] Assert.Same() Failure Expected: ImmutableSortedSet [] Actual: ImmutableSortedSet [] Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Collections.Immutable\tests\ImmutableSortedSetTest.cs(354,0): at System.Collections.Immutable.Test.ImmutableSortedSetTest.EmptyTestHelper[T](IImmutableSet`1 emptySet, T value, IComparer`1 comparer) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Collections.Immutable\tests\ImmutableSortedSetTest.cs(82,0): at System.Collections.Immutable.Test.ImmutableSortedSetTest.EmptyTest() Finished: System.Collections.Immutable.Tests === TEST EXECUTION SUMMARY === System.Collections.Immutable.Tests Total: 591, Errors: 0, Failed: 1, Skipped: 0, Time: 1.839s ``` +783 area-Infrastructure Switch to running tests with new BuildAndTest target. An attempt to address #679 This change adds a BuildAndTest and Test target to our default dir.targets file and hooks RunTestsForProject off the Test target so that by default if you build an individual project from the command line or in an IDE like VS it will just do the build and not run the tests. If people want to run the tests then they need to execute the BuildAndTest target (or just the Test target). This prevents the need for us to use special conditions like BuildingInsideVisualStudio in our targets. I've also changed the DefaultTargets for our build.proj and dirs.proj files to be BuildAndTest so if you run the build for them it will stil do the build and test run. cc @eatdrinksleepcode @nguerrera +800 area-Infrastructure Enable code coverage on VS2015 and include more libraries Two issues: 1) Code coverage doesn't work with VS2015. 2) Several of our libraries are disabled from code coverage. For the first, the issue turned out to be a failure of the OpenCover code coverage tool to read the PDBs produced by Roslyn. The library on which the tool depends for PDB reading has been updated to support Roslyn, and a more recent version of OpenCover than the one we're currently using pulls in that updated version of the PDB reader. As such, the fix is just to upgrade which version of OpenCover we use. For the second, whatever reason caused us to disable code coverage on several projects appear to have since been addressed, either by us or in the OpenCover update. The fix then is to just re-enable code coverage on these libraries. The only library that remains disabled for code coverage is System.Diagnostics.Process.dll. It's either hanging or just taking a really, really long time (PLINQ takes about 10 minutes, but at least it completes). Needs more investigation. +810 area-System.Globalization Implement System.Globalization.Extensions on Unix The library has been refactored to have the Unix implementation stubbed out. It needs to be properly implemented. +811 area-System.Diagnostics Implement System.Diagnostics.FileVersionInfo on Unix The library has been refactored to have the Unix implementation stubbed out. It should be implemented to the extent that makes sense on Unix. +817 area-System.IO Implement System.IO.FileSystem.Watcher for Mac The Linux implementation uses inotify, which is Linux-specific. We'll need a different implementation for Mac, such as one based on FAM, kqueue, or FSEvents. +818 area-Infrastructure Update solutions/projects with OS-specific configs For projects that have OS-specific implementations, this change modifies their solution and project files to create OS-specific configurations. Rather than just having a Debug or Release option, in Visual Studio a developer can now select OS_Debug or OS_Release, e.g. for a project that has a Windows implementation and a Unix implementation, Windows_Debug, Windows_Release, Unix_Debug, and Unix_Release will all be available options. Changing the configuration will update the properties used to configure conditional includes, build outputs, etc. cc: @mmitche, @AArnott. Andrew, please let me know if there's a better way to achieve this. +820 area-Infrastructure Run compliance tool against Project K " " +821 area-Infrastructure Collect telemetry from test runs +822 area-Infrastructure Auto upload packages to nuget/myget +823 area-Infrastructure Strategy for test hooks/mocks that works everywhere +824 area-Infrastructure Contract Generation +825 area-Infrastructure Runtime Facade Generation +826 area-System.IO Open Source ClrCompression.dll +838 area-Infrastructure Dashboard: Caclulate product confidence from test and code coverage data. " " +839 area-Infrastructure enable perf and stress infrastructure +840 area-Infrastructure Align ToF and xunit reporting " " +841 area-Infrastructure Run OuterLoop tests on officially built binaries " " +846 area-System.Globalization Cross Platform System.Globalization "This a meta-workitem tracking a bunch of smaller stuff, now that we have multiple folks working on this stuff concurrently. - [x] TimeZone - [x] Encodings (#2774) - [x] Collation (#2769) - [x] Casing (#2772) - [x] Locales (#2770) - [x] Calendars (#2773) " +864 area-System.Reflection Open Source System.Reflection.Primitives Tests +875 area-Infrastructure OS-independent libraries should be built to an OS-independent folder Once #818 gets merged, we should refactor how our binaries are built to output paths. Libraries that have no direct OS-dependencies and do not have an OS-specific build should go into a neutral folder, and libraries that have OS-specific builds should go into an OS-specific folder. +880 area-Microsoft.CSharp Open Source Microsoft.CSharp.dll +882 area-System.Net Open Source Networking.dll +891 area-System.Net Open Source System.Net.Http.dll +892 area-System.Net Open Source System.Net.Http.WinHttpHandler.dll +893 area-System.Net Open Source System.Net.NameResolution.dll +894 area-System.Net Open Source System.Net.NetworkInformation.dll +895 area-System.Net Open Source System.Net.Primitives.dll +896 area-System.Net Open Source System.Net.Sockets.dll +897 area-System.Net Open Source System.Net.Utilities.dll +912 area-Infrastructure Update properties in dir.props to make them more consistent Used some msbuild string functions to help eliminate some of the duplications around OS/OSGroup/ConfigurationGroup. Explicitly started defining all the needed properties by build tools in a consistent way so the build upon each other. Restructured the output paths a little to eliminate many nested directories. Binaries: $(OS).$(Platform).$(Configuration)\$(MSBuildProjectName)\ Intermediates: obj\$(OS).$(Platform).$(Configuration)\$(MSBuildProjectName)\ Tests: tests\$(OS).$(Platform).$(Configuration)\$(MSBuildProjectName)\ +914 area-System.Text Write a test for GetGroup never returning Empty Group We merged #253 without a corresponding test. We need to write one. +915 area-Meta Remove uses of Console.WriteLine in the Unit Tests? A bunch of our unit tests do `Console.WriteLine` either on regular paths or on error cases. By my count there's bout 1600 hits for `Console.Write*` in our tests. This is a bit of an over-count because some of these are the Console tests themselves. I don't really like this very much. It feels like something we inherited when porting our legacy test assets. Is it worthwhile to go clean this up? I don't mind doing the work, just don't want to put in a bunch of effort if it doesn't stand a chance of getting merged. I'm sure @nguerrera will be interested in this and my understanding was @davkean had some guidance on how to author and port tests and I'd be interested in understanding how this aligns with his thinking. +921 area-System.ComponentModel Improve code coverage for System.ComponentModel.Annotations According to the current code coverage report, this library is only at 75%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +930 area-System.Numerics Improve code coverage for System.Numerics.Vectors According to the current code coverage report, this library is only at 72%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +931 area-System.Reflection Improve code coverage for System.Reflection.Metadata According to the current code coverage report, this library is only at 51%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +933 area-System.Text Improve code coverage for System.Text.Encoding.CodePages (66%) "According to the current code coverage report, this library is only at 66%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. " +934 area-System.Xml Improve code coverage for System.Xml.XPath According to the current code coverage report, this library is only at 51%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +935 area-System.Xml Improve code coverage for System.Xml.XPath.XDocument According to the current code coverage report, this library is only at 54.5%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +936 area-System.Xml Improve code coverage for System.Xml.XPath.XmlDocument According to the current code coverage report, this library is only at 15%! Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +937 area-System.Xml Improve code coverage for System.Xml.XmlDocument According to the current code coverage report, this library is only at 47%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +942 area-Infrastructure Failed CI build reported it completed successfully "PR #917 had a bad P/Invoke declaration that caused a TypeLoadException and a huge number of tests to fail. But even though the build lists a large number of test failures: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/138/#showFailuresLink the build still shows as green / successful, and GitHub reports ""all is well"". " +956 area-Meta VS automatically changing solution and csproj What are your thoughts about VS automatically changing stuff? I.e: https://github.com/dotnet/corefx/pull/954 VS updated version info. Also it removed new line character in the end of csproj (I removed this this change). Should we keep that kind of changes or revert them? I don't have strong opinion on that although I generally think that easier solution is always better: we should not manually change csproj & sln files so if VS wants to change it I would let it. +957 area-Infrastructure Dashboard: Hook up official build results. " " +961 area-Infrastructure Add IsInnerLoopTestProject and IsOuterLoopTestProject property support during the build "Add properties to disable selected projects from Inner- or Outer- loop run. By default all projects are Inner-loop. You can disable it from particular run by explicitly setting TestCategories property " +962 area-System.Xml Remove dependency on System.Xml.XPath.XmlDocument from System.Xml.XPath.XDocument tests "Currently the test is comparing two different implementations of XPath - one of them is assumed ""good"" as there are currently no known bugs to it. I will remove the dependency once it is no longer needed although it is helpful right now since XPath.XDocument has few bugs for investigation and it has proven to be helpful for me (there are few behavioral differences between implementations which we cannot remove now because of compat and that other implementation is helping figure out if this is known compat issue or a code/test defect). Please remove this dependency once the bugs are fixed. Related issues: https://github.com/dotnet/corefx/issues/641 https://github.com/dotnet/corefx/issues/284 https://github.com/dotnet/corefx/issues/17 " +963 area-Infrastructure Support Proxy servers for our nuget download task See PR #788 where we reverted the fix for #38 because there were some unhanded cases which caused a null reference if the DefaultWebProxy is null. We should add support again with proper checks in place. +970 area-System.Collections ReadOnlyObservableCollection.CollectionChanged should be made public "The `ReadOnlyObservableCollection.CollectionChanged` event is protected, which is flawed, it prevents you from being able to observe changes to it without casting to `INotifyCollectionChanged`. I suspect the original thinking was because the collection is ""read-only"" it never changes - this is not correct. _Read-only_ in .NET means that the consumer has a read-only view over a collection (which is why we project `IReadOnlyList` to `IVectorView`), not that the contents are immutable and never change. While we've made `protected` members `public` in the past (such as `Exception.HResult`), this event was marked `virtual`, which while binary compatible, would be a source-breaking change for those that overrode it. I suspect very little have overridden it, but we may want to consider adding a new event with a different name such as `Changed`. " +972 area-System.IO Fix for Issue #587 - Untangle FileStream's async implementation Fix for Issue #587 - Untangle FileStream's async implementation This removes the need for the old Begin\End methods in Win32FileStream by modifying the wrapper around the Overlapped (Win32FileStream.FileStreamAsyncResult) to use a TaskCompletionSource, thus allowing the core Read\Write methods to return Tasks directly. It also fixes a potential race condition where Begin\* may be registering the cancellation at the same time that End\* is trying to dispose it (if the user called the End\* method from the callback that they provided to the Begin\* method). +973 area-Meta .NET Core + Existing Platforms - What Can We Expect? I found myself watching a discussion between @davkean and @onovotny go down [[start here](https://twitter.com/davkean/status/568636866053812224)] to better understand where .NET Core sits relative to existing platforms. Because 140 characters is a terrible medium, let's keep this going here. I'm still looking at supporting Windows 7 users for a while at least, so I'm curious what options are available around continuing to build Portable Class Libraries (the plans here seem to be that referencing other NuGet packages is how you can access additional BCL functionality in the future - correct me if I'm wrong) over targeting .NET Core directly. What do we gain? What do we lose? And what expectations should we have in the short-term? +975 area-System.Runtime Fill System.Runtime.Extensions test gaps The initial merge of System.Runtime.Extensions tests (#802) included tests which we were running internally that were marked as covering the System.Runtime.Extensions contract. That set of tests does not cover all the types in the contract. We should add tests to cover the rest of this contract. +978 area-Infrastructure Dashboard: Enable User specific layouts and configs. "https://github.com/benjamine/jsondiffpatch can be used to greate user specific patch data to modify the global freeboard state. " +980 area-Infrastructure System.ObjectModel code coverage is failing === TEST EXECUTION SUMMARY === System.ObjectModel.Tests Total: 53, Errors: 0, Failed: 0, Skipped: 0, Time: 0.340s Committing... No results, this could be for a number of reasons. The most common reasons are: 1) missing PDBs for the assemblies that match the filter please review the output file and refer to the Usage guide (Usage.rtf) about filters. 2) the profiler may not be registered correctly, please refer to the Usage guide and the -register switch. +984 area-System.IO SerialPort Support on Windows Just wondering if SerialPort namespace will be included at some point? -------------------------------------------------------------------- ### Execution plan - [x] 1. @JeremyKuhne to seed the sources in CoreFX (from full .NET Framework) - add source code (sanitized, with licenses), the source won't build - [x] 2. Make the code build * CC: @JeremyKuhne @karelz on PRs * Note: We will not take any functional changes to the implementation, architecture, or API surface at this point unless they are absolutely necessary to make the code compile on .NET Core. Please give heads up on this issue as soon as you discover cases like that. - [x] 3. Add tests - tracking progress in #15752 - [x] @JeremyKuhne to find out if we can leverage full .NET Framework tests * We need to design the test environment - we need ability to test the code in CI (ideally without heavy modification of CI machines) * We need to set goal for code coverage If anyone is working on any step, please mention it & coordinate here to avoid duplicated effort. @karelz will co-assign the issue to you as well. +987 area-System.Reflection MetadataReader ReadFile fast path does not work with async file streams When a FileStream is opened with isAsync: true (.NET Core default!), the ReadFile P/Invoke code that we have in the metadata reader to read small files straight to native memory. ReadFile fails with invalid param error code because our handle was opened for overlapped IO. For now, I'm changing the code to be more defensive and always fall back to the slow file -> managed heap -> native heap code path. (It currently throws.) @ericstj: Can you help me figure out how to tweak FileStreamReadLightUp.cs to handle this? Also, @tmat has already mentioned to me that this code path will slow us down on Linux and Mac. Perhaps, this is the right opportunity to define a portable FileStream.Read overload that reads to unmanaged memory? +991 area-Infrastructure Enable code coverage report generation for individual projects If we run a subset of the projects for code coverage, we should still generate a report. +992 area-System.Numerics Consider saturated arithmetic functionality for Vector In the past, we've seen some requests for Vector to provide some means to do saturated arithmetic operations. Such operations could be useful for a variety of applications, like signal processing, image processing, etc. It makes sense to at least investigate what such functionality would look like, how it could be exposed, etc. Given that there are also SSE2+ instructions that expose some level of saturated arithmetic, I'm hopeful that we could also get some baseline hardware-instruction support for this. Work to do: - Define API surface exposed (which operations are supported) - Define which types support these operations (which integral types? all?) - Determine which operations could benefit from SIMD instructions - Create a simple working prototype (without hardware instructions) - Create formal API design speclet +993 area-System.Numerics Consider generic support for Shuffle and Shift operations on Vector Two useful operations that we have long-considered adding to Vector are shuffle and shift. These are pretty fundamental operations that low-level algorithms could very often take advantage of. One of the challenges was developing a generic but straightforward interface for utilizing such operations across all of the (integral) numeric types that Vector supports. Work to be done: - Define which operations are supported (shuffle at a minimum) - Determine which operations could benefit from SIMD instructions - These should be able to benefit greatly - Create a simple working prototype (without hardware instructions) - Create formal API design speclet and follow regular procedure +996 area-Infrastructure Dashboard: Add page to show test failures for specific area. " " +998 area-Infrastructure Dashboard: Make Bug Id link open in new window. " " +999 area-System.Runtime Add back Environment.Is64BitXXX Hi all. There are some methods that aren't yet implemented in Environment class. - Is64BitProcess - Is64BitOperatingSystem - OSVersion Will they be implemented? +1000 area-System.Diagnostics Several Dataflow ETW events aren't firing due to MethodAccessExceptions Several System.Threading.Tasks.Dataflow ETW events aren't firing on .NET Core, due to what looks like private reflection issues: MethodAccessExceptions are getting thrown and swallowed when firing these events. +1006 area-System.Net Add SmtpClient support Is there any plans to add `System.Net.Mail` into aspnetcore50? +1008 area-System.Numerics Faster and/or vectorized sin/cos In certain types of applications, the extra precision and correctness afforded by Math.Sin() and Math.Cos() are not worth the performance penalty they impose. These applications are often already using primarily single precision floats for computations, and thus have to round trip through double to make use of these methods. I propose adding a FastMath or Mathf or similar set of methods for lower precision high performance implementations of these methods. If it were not for the existence of System.Numerics.Vectors, I would advocate that these simply be an external library separate from the core framework, but since the vector math library ships Quaternion and Matrix support, I would vastly prefer that these types make use of the faster math operations for things like calculating rotations. My reasoning is that these types exist in the first place for people concerned with performance, and as it stands they're simply too slow compared to the alternatives for them to see much use. For a practical anecdote, I recently wrote an OpenGL draw call stress test to determine CPU overhead and how many draw calls I can push from my .NET app. By far the biggest consumer of frame time was Sin and Cos inside the quaternion rotation method used to rotate the cubes I was rendering. Using a fully managed implementation of SinCos based on the venerable CEPHES library cut that time roughly in half. This could be further extended by vectorizing with SIMD, provided that the Vector types support a few more intrinsics such as shuffle. I wouldn't mind doing this work if people think it would be useful. My main concern is that shipping System.Numerics.Vectors (quaternions and matrices) without these faster math routines will forever doom them to obscurity, since switching to reduced precision operations in the future would be a breaking change. +1009 area-Infrastructure Error message in System.ServiceProcess.ServiceController when building from VS2015 DevCmd When building using Developer Command from VS 2015 I get following error message: (build doesn't fail though - jut red message) ``` NativeTestService.cpp cl : Command line error D8027: cannot execute 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\c1xx.dll' [E:\oss\corefx\src\System.ServiceProcess.ServiceController\tests\NativeTestService\NativeTestService.vcxproj] ``` It doesn't repro on VS 2013 DevCmd. +1010 area-System.Numerics Add support for extracting a bit mask from a Vector SSE2/AVX supports extracting the MSB from each 8 byte,4 byte,2 byte or 1 byte segment (the `movemask_*` family). This can be extremely useful while performing algorithms that are data sensitive and use SSE registers like big buffers. A user could implement algorithms that work entirely in safe code that could benefit from avoiding the allocation and rigmarole of copying data out of a register to an array when you just want to test if a field is not empty. Admittedly, it is a downer as ARM does not have an intrinsic for this operation but there is workarounds that should perform better than copying everything in and out memory to test the bytes. http://stackoverflow.com/questions/11870910/sse-mm-movemask-epi8-equivalent-method-for-arm-neon +1016 area-System.Xml Update the XElement implementation in System.Xml.XDocument to include XmlSchemaProvider attribute once the packages are refreshed. +1019 area-Meta Consider adding Disposables [Reactive Extensions](https://github.com/Reactive-Extensions/Rx.NET/tree/master/Rx.NET/Source/System.Reactive.Core/Reactive/Disposables) and [System.Threading.Tasks.Dataflow](https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Dataflow/src/Internal/ActionOnDispose.cs) are using their own internal Disposables. I don't know how many people have written similar APIs too. We also use our own disposables to run actions. This is very helpful for types implementing IObservable and types used within a `using`-statement. I think CoreFX is the right place to offer a small common API for disposables. What are your thoughts? +1021 area-Infrastructure Improving test coverage and relevance: investigate tools for code dependencies. Investigate tools that will show the dependencies between code and tests. This will allow us to only run the relevant set of tests related to new changes. +1022 area-Infrastructure MSBuild consistency in casing boolean properties "MSBuild properties are case sensitive. The ""false""/""true"" vs ""False""/""True"" What do we prefer? It looks like we don't have any standards with this and I saw various places in the targets which mix two different casings even for the same properties. I believe we should unify this Examples: src\System.Collections.Immutable\src\System.Collections.Immutable.csproj (lowercase): ``` true full false DEBUG;TRACE prompt 4 false System.Collections.Immutable.ruleset ``` and the same project in the bottom: ``` True True Strings.resx ``` src\dirs.targets: (Look at the IsTestProject property and CLSCompliant condition): https://github.com/dotnet/corefx/blob/master/src/dir.targets#L94 ``` True True False false ``` " +1033 area-System.Reflection Delimiter list in the type name grammer was incorrect "Duplicated ""*"" in the delimiter list, it should be ""\"". See Tokenizer.HandleEscapeSequence for more information. " +1034 area-Meta Update Developer Wiki with new section on Code Coverage The developer guide wiki (https://github.com/dotnet/corefx/wiki/Developer-Guide) should have a section on the code coverage system - including how to manually run the coverage build and generate a new report. +1037 area-System.Diagnostics Investigate why Assert went out of it's way to call MessageBox on a different thread There's some internal history on why this decision was made that @stephentoub and I both don't fully grok. I need to take the time and understand if this is still something we need to be doing and why it only mattered for CoreCLR and not desktop at the time. Once that's done, something like #1012 might be in order. +1039 area-Meta Why is DataTable/View/Set absent? I looked here: https://github.com/dotnet/corefx-progress and saw DataTable/View/Set isn't ported to .NET Core. IMHO this is a mistake, as DataTable and friends are a convenient way to handle untyped data at runtime, and is e.g. often used when fetching data through stored procedures as it's easy to e.g. fetch a dataset with the result of a proc which returns 3 cursors on e.g. Oracle. I fail to see why this cornerstone of many people's data-access code is absent in a framework that targets servers. +1044 area-Infrastructure Microsoft.DotNet.TestHost.1.0.3-prerelease only targets 32-bit "Running tests on Window 7 64-bit fails due to `CoreRun.exe` being 64-bit and the TestHost dlls being 32-bit. When setting the 32-bit flag on `xunit.console.netcore.exe` with `corflags.exe` and invoking it directly (iow without `corerun.exe`), the tests work again. ``` > dumpbin /headers CoreRun.exe | find ""machine"" 8664 machine (x64) > dumpbin /headers api-ms-win-core-console-l1-1-0.dll | find ""machine"" 14C machine (x86) ``` " +1045 area-System.Xml XmlReader.ReadAsync goes into infinite recursion "**Before fixing the bug please make sure the tests for Xml.ReaderWriter were already added or you can add your own tests - make sure you test old and new behavior. Any breaking changes need to be additionally reviewed.** _This is a modified copy of internal bug, may contain fragments of discussions I not necessarily written myself_ Repro: ``` csharp XmlReader xmlReader = XmlReader.Create(""http://www.example.com/example.xml"", new XmlReaderSettings{Async = true}); await xmlReader.ReadAsync(); ``` > I investigated this issue and believe the root cause is that the support for this scenario (UriString) is not yet implemented, that causes the termination statement ""laterInitParam = null"" inside FinishInitUriStringAsync() never gets a chance to execute and thus the infinite recursion. Open issues: 1) XmlReader.Create, XElement.Load, XDocument.Load overloads with ""string uri"" are not supported 2) Characters that are not supported in the current encoding are not automatically encoded as entities Code change which caused break: ``` csharp private Task FinishInitAsync() { switch (laterInitParam.initType) { // code below was removed when removing Uri support //case InitInputType.UriString: // return FinishInitUriStringAsync(); //<= This is never executed and thus leads to the infinite recursion. case InitInputType.Stream: return FinishInitStreamAsync(); case InitInputType.TextReader: return FinishInitTextReaderAsync(); default: //should never hit here Debug.Assert(false, ""Invalid InitInputType""); return AsyncHelper.DoneTask; } } ``` Tasks: - [ ] Determine if we want to support Uri or not - [ ] Fix the issue " +1050 area-System.Reflection Metadata reader CanReadFromSameMemoryMappedPEReaderInParallel test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/257/ ``` System.Reflection.Metadata.Tests.MetadataReaderTests.CanReadFromSameMemoryMappedPEReaderInParallel [FAIL] System.AggregateException : One or more errors occurred. ---- System.BadImageFormatException : Invalid COR20 header signature. ---- System.BadImageFormatException : Invalid COR20 header signature. Stack Trace: Discovered: System.ComponentModel.Primitives.Tests at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure) at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally) --- End of stack trace from previous location where exception was thrown --- at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException) at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally) at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, Action`1 body) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\tests\Metadata\MetadataReaderTests.cs(2457,0): at System.Reflection.Metadata.Tests.MetadataReaderTests.CanReadFromSameMemoryMappedPEReaderInParallel() ----- Inner Stack Trace #1 (System.BadImageFormatException) ----- d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\MetadataReader.cs(173,0): at System.Reflection.Metadata.MetadataReader.ReadMetadataHeader(BlobReader& memReader) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\MetadataReader.cs(97,0): at System.Reflection.Metadata.MetadataReader..ctor(Byte* metadata, Int32 length, MetadataReaderOptions options, MetadataStringDecoder utf8Decoder) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\PEReaderExtensions.cs(71,0): at System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(PEReader peReader, MetadataReaderOptions options, MetadataStringDecoder utf8Decoder) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\PEReaderExtensions.cs(47,0): at System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(PEReader peReader) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\tests\Metadata\MetadataReaderTests.cs(2457,0): at System.Reflection.Metadata.Tests.MetadataReaderTests.<>c__DisplayClass2c.b__2a(Int32 _) at System.Threading.Tasks.Parallel.<>c__DisplayClass9`1.b__12(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.Parallel.<>c__DisplayClass9`1.b__12(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) at System.Threading.Tasks.TaskReplicator.Replica.Execute() ----- Inner Stack Trace #2 (System.BadImageFormatException) ----- d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\MetadataReader.cs(173,0): at System.Reflection.Metadata.MetadataReader.ReadMetadataHeader(BlobReader& memReader) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\MetadataReader.cs(97,0): at System.Reflection.Metadata.MetadataReader..ctor(Byte* metadata, Int32 length, MetadataReaderOptions options, MetadataStringDecoder utf8Decoder) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\PEReaderExtensions.cs(71,0): at System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(PEReader peReader, MetadataReaderOptions options, MetadataStringDecoder utf8Decoder) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\src\System\Reflection\Metadata\PEReaderExtensions.cs(47,0): at System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(PEReader peReader) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Reflection.Metadata\tests\Metadata\MetadataReaderTests.cs(2457,0): at System.Reflection.Metadata.Tests.MetadataReaderTests.<>c__DisplayClass2c.b__2a(Int32 _) at System.Threading.Tasks.Parallel.<>c__DisplayClass9`1.b__12(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.Parallel.<>c__DisplayClass9`1.b__12(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) at System.Threading.Tasks.TaskReplicator.Replica.Execute() ``` +1051 area-System.Text RegexGroup should provide a Name #### Background Regex group can have names assigned to them (e.g. `(?.+)`). Those names can be used in an indexer of `RegexGroupCollection`, however the `RegexGroup` objects themselves do not provide a `Name` property. The names can be retrieved using `regex.GetGroupNames`, but it is not immediately obvious -- and I'm not sure it is even possible if static `Regex` method was used for matching. To prove it is not obvious, see this [Regex: get the name of captured groups in C#](http://stackoverflow.com/questions/1381097/regex-get-the-name-of-captured-groups-in-c-sharp) which at the moment had 48 votes on question, and 66 on answer. There are a few similar questions as well. #### API Design ``` csharp public class RegexGroup : ... { // ... public string Name { get; } } ``` Note that for numbered groups this should return group index as string, for consistency with `Regex.GetGroupNames`. #### Compatibility At the moment I do not see any potential compatibility issues with adding a property. +1052 area-System.IO Initial commit of System.IO.FileSystem tests (File, Directory, FI, DI) Initial commit of ported tests for the System.IO.FileSystem contract. Includes tests for File, Directory, FileInfo, and DirectoryInfo. A few tests have been rewritten in the xunit style, but the majority of these tests have been ported from ToF, which were ported from old tree. When porting, I modified or disabled tests to make sure every test only writes in its working directory. I verified this with PerfView. I also replaced hard-coded paths with calls to Path.GetRandomFileName() to prevent multiple runs from interfering with each other, and multiple tests running in parallel from interfering with each other. Any test that used a delay to wait for the state of the file system to stabilize was marked with OuterLoopAttribute. On my machine, all of the tests including OuterLoop take between 10s and 15s to run. Just inner loop tests take between 1s and 2s to run. Lots of these tests are candidates for rewriting, and Eric introduced a useful base class for tests when he rewrote the FileStream tests. Checking in these ported assets will give us a good idea of what the coverage is, and act as a baseline to compare the rewritten tests against. +1053 area-System.ComponentModel Make DisplayNameAttribute available in .NET Core This was originally going to be a request to move `DisplayNameAttribute` into Core, but the problem seems a little bigger than that. Currently, `System.dll` houses approximately a couple hundred types spread across four dozen different namespaces, but not everything in it is listed on the [Open Source Progress table](https://github.com/dotnet/corefx-progress/blob/master/src-diff/README.md) (although a select few namespaces like `System.Security.Cryptography.X509Certificates` _are_ there). This still makes some namespaces (for example `System.ComponentModel`) feel incomplete because of how they're spread across different assemblies. The previously mentioned `X509Certificates` namespace is already being tracked with all its types from `System.dll`, so other namespaces should follow suit, right? I was porting a project of mine over to see the ASP.NET vNext templates in action, but the lack of `DisplayNameAttribute` is literally the only thing preventing me from building it (even if I tell it to not target .NET Core) without commenting those attributes out. And if .NET Core's philosophy is to only use what you need, why should I be forced to import some monolithic DLL with hundreds of types that I don't need just for the one that I _do_ need, because that type is not in the DLL named after its containing namespace? ¯\(°_o)/¯ +1054 area-Infrastructure Add NuGet.org and MyGet.org latest build feeds to readme.md The CoreFX NuGet.org and MyGet.org latest build / package feeds should be added to our README.md. See https://github.com/xunit/xunit as an example. +1058 area-Infrastructure Add Windows 7 coverage to Jenkins / Outerloop runs Currently build.cmd no longer passes on Windows 7 machines (see https://github.com/dotnet/corefx/issues/1044). We should look into adding Win7 coverage to Jenkins to ensure we don't regress building or running tests on this platform. +1063 area-Meta Append guidelines with how PR feedback should be addressed "Pull request guidelines should contain something like ""rule of a thumb"" which rule how PR feedback should be addressed or how merge conflicts should be resolved. As example consider #972. Commits like `Merge branch 'master' into Issue587` (aaa5434) clutter history and should be avoided. `git rebase` should be used for updating branch with fix. Other commits in this PR could be squashed. As another example consider PR #1003. It's initial commit of the library so it's OK to address feedback in a separate commit. However in this PR feedback addressed twice and the second could be amended to the first. Conclusion: 1. Merge conflicts should be resolved through rebasing. 2. PR feedback should be in a separate commit if it contains important changes. Changes like formatting or renaming variable introduced in PR are not important and could be addressed through amending/rebasing. " +1068 area-System.Reflection Allow ISignatureTypeProvider to be a struct The `SignatureDecoder` takes the provider as a naked interface. This makes it inefficient to bake it by a struct because it will cause it being boxed each time it's passed. However, it's very desirable to make the provider a struct because it allows the caller to provide call site specific information. For example, in order for implementers to reference the generic type parameters of the method or type, the `ISignatureTypeProvider` needs to have access to the containing type / containing method. To avoid the boxing operation, the methods simply needs an additional contraint like so: ``` csharp public static TType DecodeType(Handle handle, TProvider provider) where TProvider : ISignatureTypeProvider ``` Unfortunately, this causes some noise as C# is no longer able to infer the type arguments, so each call site must now qualify the type arguments. +1071 area-System.Reflection Merge master to dev/metadata In particular, the changes from PR #1026 are needed to address the CI failure in #1068. There is no code review required as these commits have already been reviewed and there are no merge conflicts. +1072 area-System.Collections Remove source control bindings VS will keep prompting developers what to do with those. Eventually, they will show up as a diff, so it's best to commit those as a one-off. +1073 area-Infrastructure Rename all test assemblies to include a library prefix Fixes #744 Open question: what to do with - BaseLibManaged - ModuleCore - XDocument.Common - XDocument.Test.ModuleCore - XmlCoreTest - XmlDiff +1079 area-System.Security Add leaveOpen constructor overload for CryptoStream "A CryptoStream always closes the wrapped stream when it is disposed. This not ideal when using a MemoryStream or when another action needs to be taken on the result. The workarounds are manually calling `FlushFinalBlock()` and then getting the MemoryStream bytes before disposing the CryptoStream, or using a custom stream that ignores the dispose call from CryptoStream. Neither are ideal and can be avoided with a ""leaveOpen"" option. Implementation would be the same as DeflateStream, on `Dispose()` check if leaveOpen is true and don't close the internal stream. ``` public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode, bool leaveOpen) ``` I'm happy to do the change when System.Security.Cryptography.Encryption arrives. " +1081 area-System.Diagnostics Proposal: Add new property for getting process path "## Rationale and Usage In order to get process path you need to use `someProcess.MainModule.FileName` property. However it suffers from a couple of issue: - Accessing MainModule of 64 bit process from a 32 bit one throws an exception - You can't access MainModule of elevated process from a non elevated one As you can see many developers [encounter](http://stackoverflow.com/q/8431298/239438) [these](http://stackoverflow.com/q/9501771/239438) issues. I suggest adding a new property which returns the path to executable of the Process. To overcome the issues that I described we can use `QueryFullProcessImageName` together with `PROCESS_QUERY_LIMITED_INFORMATION` access right. ## Api Proposal ```csharp namespace System.Diagnostics { public class Process : Component { public string MainModuleFilePath { get; } } } ``` ## Open Questions Should the new property be called `MainModuleFilePath` or something else? From my own experience most of people use `Path` when asking question on stackoverflow but @Priya91 suggested calling it `MainModuleFilePath` as it is returning Path of the `MainModule` property. ## Cross Platform Support To implement this property on other platforms on Linux we can use `readlink` to read the value of `""/proc/%d/exe""` symlink and on OS X we can use `proc_pidpath` which returns process path given process pid." +1085 area-System.Reflection MetadataReader: (THandle)(Handle)default(THandle) should round-trip for all handles For most handles default(THandle) is the canonical nil value that can convert to the weakly-typed Handle and back, but for some such as StringHandle and NamespaceHandle default(THandle) is an invalid value that becomes a nil module handle on conversion to Handle and cannot be round-tripped back to THandle. A fix is proposed in #1075. Filing a bug to track it so that I can close a duplicate internal bug against it. +1086 area-System.IO Add API to get actual file casing in path "Per @jasonwilliams200OK in dotnet/coreclr#390 Based on this answer: http://stackoverflow.com/a/81493/1712065 (further redirected from: http://stackoverflow.com/a/326153). Please add the ability to retrieve path with actual case via `FileInfo` and `DirectoryInfo` classes. The candidate member being `FullPath` and `Name`. Perhaps there is some sophisticated way of getting it from win32 file system API, but [that](http://stackoverflow.com/a/81493/1712065) seems to be a working solution. Expected: ``` c# using System.IO.FileInfo; // .. // actual path was: // C:\\SharePoint\\scripts\\MasterDeployment.ps1 FileInfo info = new FileInfo(""c:\\sharepoint\\scriPts\\maSTerdeploymnet.PS1""); Console.WriteLine(info.FullPath); // C:\\SharePoint\\scripts\\MasterDeployment.ps1 Console.WriteLine(info.Name); // MasterDeployment.ps1 ``` Actual result: ``` c# using System.IO.FileInfo; // .. // actual path was: // C:\\SharePoint\\scripts\\MasterDeployment.ps1 FileInfo info = new FileInfo(""c:\\sharepoint\\scriPts\\maSTerdeploymnet.PS1""); Console.WriteLine(info.FullPath); // c:\\sharepoint\\scriPts\\maSTerdeploymnet.PS1 Console.WriteLine(info.Name); // maSTerdeploymnet.PS1 ``` " +1088 area-System.Xml Remove link to a document that no longer exists There is a link to an internal SharePoint site that no longer exits, so it's unclear what the content was but the gist seems to be contained in the code comment. +1091 area-Infrastructure Projects fail to load in VS without having built on command line first "Since the new resources targets were added, projects cannot be opened in VS from a clean enlistment with no packages having been restored yet. **Repro steps** 1. Delete corefx/packages/ folder 2. Open a solution in VS ``` C:\src\corefx\src\System.Reflection.Metadata\src\System.Reflection.Metadata.csproj : error : The imported project ""C:\src\corefx\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00015 \lib\resources.targets"" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk. C:\src\corefx\src\dir.targets ``` " +1093 area-Infrastructure Create an optimization story for open-source compiled assemblies We need to design and develop the optimization story for our open-source corefx libraries. +1099 area-Infrastructure Build the exclusion list of CT errors against Project K " " +1100 area-System.Diagnostics StartInfo may return incorrect information for *running* processes. ProcessStartInfo.EnvironmentVariables gives an incorrect value for a _running_ process. We fetch environment variables via the GetEnviornmentVariables which gives the information of the current process and not of the _running_ process. Desktop also has the same behavior. +1101 area-System.Reflection Fix CustomAttributeNamedArgument to return the correct value There is a bug where `CustomAttributeNamedArgument` returns the type instead of the value. Strong typing can't help with `object`, can it? @nguerrera +1102 area-System.Numerics Further BigInteger test refactoring - Completes the removal of Console.WriteLine() from BigInteger tests and general refactoring to better use XUnit Asserts. (Progress against https://github.com/dotnet/corefx/issues/915.) - Generalizes the switch statement in Driver.cs's Worker class. - Removes duplicate code in StackCalculator.cs by referencing the identical implementations in MyBigInt.cs. - Removes duplicate implementations of Print(), GetRandomByteArray(), and IsZero() by moving them to MyBigInt.cs. - Enables a set of existing but unused tests: - RunDivRemTests - RunIsEvenTests - RunIsOneTests - ModPowValidSmallNumbers - RunMultiplyTests (If there is history for why theses tests were disabled/never enabled, please let me know, but it looks like a set of refactoring mistakes.) The first five commits are basically VS regex find-replace with the exception of the [changes to Driver.cs](https://github.com/dotnet/corefx/commit/2b7616cc33009422a662f34891406c755eecb4a6) mentioned above. The last four are more general refactoring to reduce copy/past function implementations. Please let me know how (or if) you want these commits squashed before merging. +1103 area-Infrastructure Coverage runs failing since ProcessTests changes @pallavit, since the recent ProcessTests cleanup changes got committed, all of our code coverage runs have hung. They've all hit an AV exception, followed by what appears to be OpenCover hanging during its subsequent processing: ``` xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Diagnostics.Process.Tests Discovered: System.Diagnostics.Process.Tests Starting: System.Diagnostics.Process.Tests Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at System.AppDomain.SetupDomain(Boolean allowRedirects, String path, String configFile, String[] propertyNames, String[] propertyValues) System.Diagnostics.ProcessTests.ProcessTest.Process_HasExited [FAIL] Process_HasExited001 failed Stack Trace: d:\j\workspace\dotnet_corefx_coverage_windows\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests\ProcessTest.cs(178,0): at System.Diagnostics.ProcessTests.ProcessTest.Process_HasExited() Finished: System.Diagnostics.Process.Tests === TEST EXECUTION SUMMARY === System.Diagnostics.Process.Tests Total: 34, Errors: 0, Failed: 1, Skipped: 0, Time: 120.241s Committing... Visited Classes 23 of 35 (65.71) Visited Methods 186 of 357 (52.1) Visited Points 1570 of 2998 (52.37) Visited Branches 515 of 1161 (44.36) ==== Alternative Results (includes all methods including those without corresponding source) ==== Alternative Visited Classes 27 of 40 (67.5) Alternative Visited Methods 193 of 415 (46.51) ``` @sawilde, FYI. +1105 area-Infrastructure CI code coverage runs failing due to invalid UploadCoverallsData "Our CI code coverage runs get all the way to the end and then fail with this error: ``` d:\j\workspace\dotnet_corefx_coverage_windows\build.proj(36,7): error MSB4113: Specified condition ""'$(UploadCoverallsData)'"" evaluates to """" instead of a boolean. ``` " +1107 area-Infrastructure Official builds should place tags on what was built "We're eventually going to want to be able to answer the question of ""what code was in build [whatever]?"". It seems the answer to this in git is tags. As an example, https://github.com/torvalds/linux, click on the branches dropdown and change to the tabs tab. Supporting documentation: http://git-scm.com/book/tr/v2/Git-Basics-Tagging " +1110 area-Infrastructure corefx helloworld Hi, I want to use corefx components and coreclr in my command line program. I started with corefxlab helloworld and I tried to add corefx from nuget manager. I was able to find corefx components but when I tried to install, I get the following error message. How do I overcome this? ``` Could not install package 'System.Globalization 4.0.10-beta-22231'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. ``` Also, how do I install my private coreCLR and corefx components to my commandline program? I am using VS 2015 CTP6. Thanks +1118 area-Meta Use TimeSpan everywhere we use an int for seconds, milliseconds, and timeouts "In a large software project, it's easy to mess up units for time. IE, is that Int32 seconds or milliseconds? Or maybe minutes? I've been fixing my team's source code to use the unit-agnostic TimeSpan class wherever possible. However the .NET Framework is not complete in its adoption of TimeSpan. Specifically, we don't have a Process.WaitForExit overload that takes a TimeSpan, only an Int32 for the timeout. I suggest someone look through all .NET Framework API's for Int32 parameters containing ""second"", ""millisecond"", ""ms"", ""timeout"" (and perhaps ""time"") and see if there is a parallel TimeSpan-based overload. If not, please fix that. " +1121 area-System.Linq Allow customization of LINQ to XML string content. This issues comes about as a result of the following question on Stack Overflow: http://stackoverflow.com/questions/28947090/culture-and-linq-to-xml There appears to be no way to customize how a custom object is serialized to XML. The main problem this causes in my code is related to culture, but this could apply to other areas too. Looking at the code, it seems that there is no customization point for an object passed as content to LINQ to XML. Is this correct? Would it be a good idea to provide one? +1128 area-Microsoft.CSharp Add Microsoft.CSharp source +1129 area-System.Numerics More support for Math functions in System.Numerics.Vectors In particular I need Math.Exp support, similar to how there is support for Math.Sqrt via the Vector.SquareRoot function. It should be trivial to add support for Math.Exp and in fact I've done this with my local copy of System.Numerics.Vectors using SquareRoot as a guiding example. My application now uses the new Vector.Exp function instead of me having to use the CopyTo function to unpack my Vector to a double[] array, perform Math.Exp on each element of the array and then pack up into a new Vector. May I check the changes in? +1131 area-System.Linq Add System.Linq Source and Tests +1132 area-System.Security Need EncryptedXml and supporting types in Core framework This will likely depend on a large pile of other work, but I'd like to raise the issue. In porting applications to use CoreCLR, I have run into the need for the [EncryptedXml class](https://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.encryptedxml%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396) more than once. From looking around, there are various 3rd party encryption libraries that exist but this adds a cost to porting from 1st-party .NET types. Enabling EncryptedXml in the Core framework will also enable encrypted configuration files in ASP.NET 5 Core profile as well... currently the user must create their own implementation of an encrypted configuration on this platform. +1133 area-System.Linq Add System.Linq.Queryable Source and Tests +1136 area-System.Collections Failure in System.Collections.Specialized.Tests.GetItemObjTests in CI MESSAGE: Error, returned wrong item for lowercase key +++++++++++++++++++ STACK TRACE: at System.Collections.Specialized.Tests.GetItemObjTests.Test01() in d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Collections.Specialized\tests\HybridDictionary\GetItemObjTests.cs:line 362 +1149 area-System.Linq Refactor System.Linq Following @stephentoub comment here: https://github.com/dotnet/corefx/issues/1143#issuecomment-81683842 I am filing this issue to track doing some refactoring in System.Linq. Currently, everything is in one file which has about 3.2k lines and around 20 classes and interfaces. It is good if this can be refactored to make the code easier to follow. +1151 area-System.Numerics New API for single-precision math ### Rationale The .NET framework does not currently provide scalar single-precision floating-point support for many of the trigonometric, logarithmic, and other common mathematical functions. Single-precision floating-point support should be provided for these mathematical functions in order to better interop with high-performance, scientific, and multimedia-based applications where single-precision floating-points are the only implementation required and/or used. Since adding these methods to the existing `System.Math` class would break backwards compatibility, they should be provided through a separate class that provides the same and/or similar functionality. Providing these new APIs would: - improve code readability (especially in the non-hardware backed implementations of methods in the `System.Numerics.Vector` structs) - improve code performance in areas where the single-precision implementation is all that is required - provide better interoperability with high-performance, scientific, and multimedia-based applications where data structures and existing code may be dependent on single-precision implementations of such methods. - provide a more advanced infrastructure for mathematics in the CoreCLR ### Proposed API The proposed API here provides feature-parity with the existing double-precision math functions provided by the framework. #### System.BitConverter ``` C# public static class BitConverter { public static float Int32BitsToSingle(int); public static int SingleToInt32Bits(float); } ``` #### System.Single ``` C# public static partial class MathF { public const float E = 2.71828183f; public const float PI = 3.14159265f; // Trigonometric Functions public static float Acos(float); public static float Asin(float); public static float Atan(float); public static float Atan2(float, float); public static float Cos(float); public static float Sin(float); public static float Tan(float); // Hyperbolic Functions public static float Cosh(float); public static float Sinh(float); public static float Tanh(float); // Exponential Functions public static float Exp(float); // Logarithmic Functions public static float Log(float); public static float Log(float, float); public static float Log10(float); // Power Functions public static float Pow(float, float); public static float Sqrt(float); // Rounding Functions public static float Ceiling(float); public static float Floor(float); public static float Round(float); public static float Round(float, int); public static float Round(float, int, MidpointRounding); public static float Round(float, MidpointRounding); public static float Truncate(float); // Manipulation Functions public static int Sign(float); // Minimum, Maximum, and Difference Functions public static float Max(float, float); public static float Min(float, float); // Other Functions public static float Abs(float); public static float IEEERemainder(float, float); } ``` ### Example Usage Currently to calculate the Tangent for each member of the `System.Numerics.Vector4` struct, you currently have to call the double-precision version of the method and cast to the result to a single-precision value: ``` C# public static Vector4 Acos(Vector4 value) { return new Vector4((float)(Math.Acos(value.X)), (float)(Math.Acos(value.Y)), (float)(Math.Acos(value.Z)), (float)(Math.Acos(value.W))); } ``` With the proposed changes, this would now be simplified to the following: ``` C# public static Vector4 Acos(Vector4 value) { return new Vector4(Mathf.Acos(value.X), Mathf.Acos(value.Y), Mathf.Acos(value.Z), Mathf.Acos(value.W)); } ``` The `System.Numerics` library itself is filled with similar examples as are various bits of code in the CoreFX and CoreCLR repositories. ### Perf Numbers All performance tests are implemented as follows: - 100,000 iterations are executed - The time of all iterations are aggregated to compute the `Total Time` - The time of all iterations are averaged to compute the `Average Time` - A single iteration executes some simple operation, using the function under test, 5000 times The execution time below is the `Total Time` for all 100,000 iterations, measured in seconds. **Hardware: Desktop w/ 3.7GHz Quad-Core A10-7850K (AMD) and 16GB RAM** | Function | Improvment | Execution Time - Double | Execution Time - Single | | :-: | :-: | :-: | :-: | | Abs | 0.199243555% | 0.63752649s | 0.63625626s | | Acos | 12.30220910% | 11.5265412s | 10.1085220s | | Asin | 18.66801808% | 11.9472425s | 9.71692911s | | Atan | 21.10350002% | 10.9964683s | 8.67582861s | | Atan2 | 20.51327307% | 24.3328097s | 19.3413540s | | Ceiling | 12.91487191% | 1.87116459s | 1.62950608s | | Cos | 5.026665542% | 7.19916547s | 6.83728750s | | Cosh | 16.46166555% | 13.5416170s | 11.3124413s | | Exp | 33.67586387% | 6.65578424s | 4.41439140s | | Floor | 10.39208688% | 1.74655247s | 1.56504922s | | Log | 19.81117664% | 6.42244806s | 5.15008553s | | Log10 | 18.40605725% | 6.75118866s | 5.50856101s | | Pow | 47.85595440% | 31.8820155s | 16.6245727s | | Round | 0.976398142% | 4.22620632s | 4.18494172s | | Sin | 15.49539339% | 5.98022268s | 5.05356365s | | Sinh | 17.96609899% | 14.6242270s | 11.9968239s | | Sqrt | 4.676516651% | 2.51281945s | 2.39530703s | | Tan | 30.33470555% | 9.07290178s | 6.32066374s | | Tanh | 0.108182099% | 8.12724112s | 8.11844890s | I believe some extra perf will be squeezed out when the intrinsics (such as `CORINFO_INTRINSIC_Sqrt`) are properly implemented in the VM layer for single-precision values. Without such functionality, it falls back to the double-precision functionality (extra precision, reduced performance) for certain calls. ### Pull Request There is a sample pull request covering these changes available: dotnet/coreclr#5492 ### Additional Details This will require several changes in the CoreCLR as well to support the new APIs via FCALLs and Intrinsics. +1153 area-System.Console Bring back Console.ReadKey() For reference, see issue #311 and the related aspnet/Hosting#140. Console.ReadKey() can solve both issues (thought explicit support for CancelKeyPress is nice as that can handle different keyboard configurations etc). ReadKey() is a helpful API for many console app scenarios and is quite difficult for users to implement in a non-Windows-specific way if they want to get the same functionality. Please consider bringing it back. +1155 area-System.Linq Ordering of ParallelEnumerable.GroupJoin and Join "This feels strange or bug-ish to me, but I'm not seeing anything either way in documentation. The following: ```c# ParallelQuery left = Enumerable.Range(1, 4).AsParallel().AsOrdered(); ParallelQuery right = Enumerable.Range(8, 32).AsParallel().AsOrdered(); foreach (Tuple> p in left.GroupJoin(right, x => x, y => y / 8, (k, g) => Tuple.Create(k, g))) { Console.Write(p.Item1.ToString() + "":""); foreach (int i in p.Item2) { Console.Write(i.ToString() + "",""); } Console.WriteLine(); } Console.Read(); ``` ... has output like this: ![groupjoin](https://cloud.githubusercontent.com/assets/5569508/6683955/d5efffe4-cccf-11e4-8958-4dfde0993f1d.jpg) The first grouping is out of order, whereas I'm expecting even the grouped elements to be returned in order (which is what the non-parallel version does). Strangely, of the multiple times I've run it, only the first run has ever been out of order. Using `OrderBy` on the right query tends to result in other runs being disordered.... `Join` has similar problems to `GroupJoin`: ```c# ParallelQuery left = Enumerable.Range(1, 4).AsParallel().AsOrdered(); ParallelQuery right = Enumerable.Range(8, 32).AsParallel().AsOrdered(); int prev = 0; foreach (Tuple p in left.Join(right, x => x, y => y / 8, (k, g) => Tuple.Create(k, g))) { if (prev != p.Item1) { Console.WriteLine(); Console.Write(p.Item1.ToString() + "":""); prev = p.Item1; } Console.Write(p.Item2.ToString() + "",""); } Console.Read(); ``` ... is producing output that looks like this: ![join](https://cloud.githubusercontent.com/assets/5569508/6684267/ee062632-ccd2-11e4-8363-679f7ed8dd0b.png) ...where every run is disordered. This is the behavior of the current consumer release as well. So is this ""intended"" behavior, and the documentation should be updated to warn people about the change from the sequential version (which explicitly states the ordering of the child elements is preserved), or is this an actual bug? @stephentoub , @svick , any thoughts? " +1165 area-System.IO FileSystemWatcher_InternalBufferSize_File test failed in CI FileSystemWatcher_4000_Tests.FileSystemWatcher_InternalBufferSize_File [FAIL] Should not observe a error event Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.IO.FileSystem.Watcher\tests\Utility\Utility.cs(100,0): at Utility.ExpectNoEvent(WaitHandle eventOccured, String eventName, Int32 timeout) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.InternalBufferSize.cs(53,0): at FileSystemWatcher_4000_Tests.FileSystemWatcher_InternalBufferSize_File() Finished: System.IO.FileSystem.Watcher.Tests +1168 area-System.Numerics Vector Shuffling Operations "As mentioned in #993, a lot of useful SIMD code relies on shuffling data around within registers. There are a whole bunch of instructions available to do this, so we'd like to expose a coherent subset of these via Vector. ## Rationale and Usage Simple stream processing, such as the operations already supported on Vector, are entirely parallel and thus don't benefit from shuffling operations. However, lots of common uses of SIMD do require it, such as doing geometric vector operations like matrix multiplies and vector cross products. These are key scenarios for certain users, such as game developers. If rearranging elements is required for an algorithm and fast hardware support is not provided, the cost of loading and storing to and from SIMD registers might exceed any benefits gained from using SIMD in the first place. When looking at existing libraries that wrap SIMD functionality at a low level, it's apparent that there are a few main use cases of shuffle: - Permuting the elements of two different vectors into a result - ""Swizzling"" the elements within a single vector - ""Splatting"" or ""broadcasting"" one element to all others within a single vector Rather than expose one single shuffle method directly, I think it makes sense to go with this slightly higher level functionality such that the API doesn't become too tied to a particular architecture's instruction set. ## Proposed API New methods on the Vector struct: ``` csharp // pick elements from a and b to place into result internal static unsafe Vector Permute2 (Vector a, Vector b, int s0, int s1); internal static unsafe Vector Permute4 (Vector a, Vector b, int s0, int s1, int s2, int s3); // rearrange elements within a internal static unsafe Vector Swizzle2 (Vector a, int s0, int s1); internal static unsafe Vector Swizzle4 (Vector a, int s0, int s1, int s2, int s3); // rearrange bytes in a internal static unsafe Vector ShuffleBytes (Vector a, Vector mask); // broadcast specified element to all other elements in a internal static unsafe Vector Splat (Vector a, int element); ``` New methods on Vector class that are simple wrappers around the Vector methods. ``` csharp public static Vector Permute (Vector a, Vector b, int s0, int s1); public static Vector Permute (Vector a, Vector b, int s0, int s1); public static Vector Permute (Vector a, Vector b, int s0, int s1); public static Vector Permute (Vector a, Vector b, int s0, int s1, int s2, int s3); public static Vector Permute (Vector a, Vector b, int s0, int s1, int s2, int s3); public static Vector Permute (Vector a, Vector b, int s0, int s1, int s2, int s3); public static Vector Swizzle (Vector a, int s0, int s1); public static Vector Swizzle (Vector a, int s0, int s1); public static Vector Swizzle (Vector a, int s0, int s1); public static Vector Swizzle (Vector a, int s0, int s1, int s2, int s3); public static Vector Swizzle (Vector a, int s0, int s1, int s2, int s3); public static Vector Swizzle (Vector a, int s0, int s1, int s2, int s3); public static Vector ShuffleBytes (Vector a, Vector mask); public static Vector Splat (Vector a, int element); ``` ## Details and Questions - There are a lot of tradeoffs when picking method signatures for shuffle. For example, instead of taking many selector parameters, we could instead have one combined integer mask. However, pretty much every single caller will then implement their own helper method to do the bitwise combination of the mask, so all callsites get more complicated. Additionally, we want the JIT to discover and optimize the cases where the parameters are JIT-time constants. - I chose for the selector parameters to be ints instead of, say, bytes. I'm not sure if there's a compelling reason to choose one over the other. In either case, we'd have to define what happens when the parameters are out of range. Since the intrinsics are going to bitwise combine them, in the interests of speed it'd be good if they could say that are not range checked. - We could also have a Permute8 and Swizzle8 and extend the methods to shorts and ushorts. The parameter lists get kind of unwieldy... - ShuffleBytes is an interesting case. pshufb is a very useful instruction to expose, but it's an SSSE3 instruction. It may be worth being more explicit about which features are supported by the hardware via some set of caps flags instead of the single boolean IsHardwareAccelerated we have now. - Shuffle intrinsically breaks the abstraction of Vector of not needing to know the underlying register size. Honestly, I think that's an unworkable abstraction in the long term; it's too difficult to write usage code that can work with arbitrarily sized vectors, so it might be worth exploring having specifically sized Vector128, Vector256, etc. This is clearly a discussion to be had in a separate issue though. " +1170 area-System.Collections IEnumerator.Current does not throw after hitting the end of the collection. This issue is in the `List.Enumerator` class. When the collection is enumerated to then end and then modified, accessing `IEnumerator.Current` returns `default(T)` rather than throwing. According to the [documentation](https://msdn.microsoft.com/en-us/library/vstudio/system.collections.ienumerator.current%28v=vs.100%29.aspx) it should throw. Simple Test case: ``` CSharp var list = new List{0,1}; var enumerator = ((IEnumerable)list).GetEnumerator(); while (enumerator.MoveNext()){} list.Add(2); Assert.Throws(() => enumerator.Current); ``` This test fails currently with `enumerator.Current` returning 0. +1171 area-System.Collections Add tests for KeyedCollection. Issue #867 "This change adds tests for `KeyedCollection` ported from internal test assets, bringing test coverage from 0 to 96% This also includes tests for `IList`, `ICollection`, and `IEnumerable` that can be used across all tests involving collections. I will be bringing over tests for `IList`, `ICollection`, and `IEnumerable` in a future PR. " +1178 area-System.Linq Add System.Linq.Expressions source and tests. +1182 area-System.Linq System.Linq performance improvement suggestions "With Linq-to-Objects it is quite common practice to perform a series of transformations, and then materialize sequence to a concrete collection type by calling _ToArray(), ToList(), ToDictionary()_. These operations would work much faster if they knew the number of elements in the sequence. Currently System.Linq.Enumerable has special treatment for _ICollection_ interface only. I suppose that additional support for _IReadOnlyCollection_ can improve performance in some cases, because through it we can figure out the total number of elements. Another problem with System.Linq is that in many cases the information about the number of elements is lost. One of the most common example: ``` C# List source = ...; List transformed = source.Select(o => o + 1).ToList(); ``` Obviously _Select_ does not change the number of elements in the sequence, but _ToList_ method cannot take advantage of that. Information is lost. In this particular scenario, it would be great for _Select_ to return some _SelectIterator_ instance, which implements _IReadOnlyCollection_, and thereby passes the number of elements to the subsequent methods. **Steps to measure performance gain**: 1. Find in _System.Linq.Tests\Performance_ the test for the method you've changed; 2. Uncomment `[Fact]` attribute above that method; 3. Build test project by Visual Studio in Release mode; 4. Go to the folder with tests binaries: `bin\tests\Windows_NT.AnyCPU.Release\System.Linq.Tests\aspnetcore50\`; 5. Open command prompt (cmd.exe or PowerShell); 6. Run command: `CoreRun.exe xunit.console.netcore.exe System.Linq.Tests.dll -parallel none -trait ""Perf=true""`; 7. Wait for results that will be printed right in the command window; 8. Don't forget to run tests with different collection sizes. This can be done by varying _elementCount_ argument of _Measure_ method. **Casting to `IReadOnlyCollection`** is a slow operation so it is not a good idea to check if this interface implemented. The performance drop will be most noticeable on the small collections. **Tasks**: - [ ] `Select`: add iterators for `List`, `Array[T]`, `ICollection`; - [ ] `ToArray`, `ToDictionary`: add special support for `ICollection` (and, very carefully, for `IReadOnlyCollection`) to get the initial capacity; - [ ] `ToList` (???): add special support for `IReadOnlyCollection` to get the initial capacity (separated as it will affect _System.Collections.Generic_); - [ ] `OrderBy(Descending)/ThanBy(Descending)`: implement special iterator for `ICollection` to propagate `Count`; - [ ] `Cast`, `Reverse`: add iterators for `ICollection` to propagate `Count`; - [ ] `Range`, `Repeat`: add an iterator that implements `ICollection`; - [ ] `Skip`, `Take`: add an iterator that handle `ICollection`; - [x] Add performance tests for _System.Linq_ " +1187 area-System.Collections Improve the exception message of ToDictionary when keys are duplicated "`Enumerable.ToDictionary` makes it easy to turn an array into a dictionary. But when the keys are duplicated in the source array, it just throws an `ArgumentException` that says **An entry with the same key already exists**. It is hard to know what keys are duplicated. To improve the exception message without adding extra overhead, the exception message can be modified to **$""An entry with the key { key } already exists""**. `ToDictionary` internally calls `Dictionary.Add()`, so the improvement made to Dictionary.Add benefits all code that calls the method. " +1198 area-System.Linq Improve code coverage for System.Linq.Expressions According to the current code coverage report, this library is only at ~40%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +1199 area-Serialization Improve code coverage for System.Xml.XmlSerializer According to the current code coverage report, this library is only at ~42%. Our general goal is closer to 90%, though this will depend on the library. We should investigate to see whether the current coverage level is appropriate, and if not, improve our test suites to provide better coverage. +1218 area-System.Collections Provide ConcurrentDictionary the ability to set initial capacity with DefaultConcurrencyLevel "It's absurdly difficult to create a ConcurrentDictionary with an initial capacity. This forces you to set the arcane DefaultConcurrencyLevel integer. I absolutely want to defer that to the platform. This leads to using this horrific code: ``` c# (int)typeof(ConcurrentDictionary<,>).MakeGenericType(typeof(int), typeof(int)) .GetProperty(""DefaultConcurrencyLevel"", BindingFlags.Static | BindingFlags.NonPublic) .GetValue(new ConcurrentDictionary()); ``` So either add a constructor that allows this. Add magic number support that providing < 1 results in this, or just make DefaultConcurrencyLevel be a public property. " +1220 area-Infrastructure Need a mechanism to be able to run dangerous Outerloop tests (that require machines to be recycled) Of the System.IO.FileSystem tests ported over, there were a couple that modified the current directory. Some set the current directory directly, some used the CurrentDirectoryContext helper class. Most of these instances were testing the behavior of APIs that acted on relative paths. For example, CreateDirectory_DotDotAsPath_WhenCurrentDirectoryIsRoot_DoesNotThrow() in CreateDirectory.cs does what its title says. This is a specific instance of the general problem of testing global process state. +1221 area-System.IO System.IO.FileSystem tests need a mechanism to test mounting drives System.IO.FileSystem tests need a way to test machine-wide state, specifically mounting network drives. +1227 area-System.Linq Performance tests for System.Linq (issue #1182) This PR introduces the performance tests for System.Linq as a part of work on the issue #1182. +1235 area-Serialization Add some tests for serialization Add/update serialization tests: DCS_BaseClassAndDerivedClassWithSameProperty Xml_StringAsRoot +1241 area-System.Linq Adding more tests to System.Linq. This time I copied some files from System.Linq.Parallel, because, looking at them, they seem to fit very well with System.Linq after removing the AsParallel() keyword. If I get a positive feedback about this from the community, then I will go ahead with copying the rest of files from System.Linq (of course on the condition that they fit) and hopefully this will improve the code coverage of System.Linq considerably. #1143 +1243 area-Infrastructure Build should disallow OS versions (and other parameters) that aren't supported We should have an allowable OS list and disallow parameters not matching the list. This avoids issues where someone sets OS=Mac vs OS=OSX. +1244 area-System.Runtime Add overloads to string trimming "The proposal is to add new extension methods / overloads for string trimming, As you know, right now, it's only possible to trim individual characters from a string, but I would like to trim suffixes & prefixes. An example usage: `""MyTest"".TrimEnd(""Test"") == ""My"" == true` I feel like they should've be there. It seems kind of weird to me, as I've implemented these by myself in the past few times, and am sure there are quite few people who miss this & would find it useful: http://stackoverflow.com/questions/7170909/trim-string-from-end-of-string-in-net-why-is-this-missing http://stackoverflow.com/questions/4101539/c-sharp-removing-strings-from-end-of-string http://stackoverflow.com/questions/5284591/how-to-remove-a-suffix-from-end-of-string http://stackoverflow.com/questions/4335878/c-sharp-trimstart-with-string-parameter Now the following statement is not true, but if it would be, it would describe how I am feeling: ""ooh hey, we offer you string replace method which can replace individual chars, but not the whole strings. It's not too hard to craft your own one, give it a try!"" The following applies to `TrimEnd` / `TrimStart`, but the overloads would be 1:1, so I will discuss only `TrimEnd`. **First overload:** `public string TrimEnd(string suffix)` Behaviour: trim the suffix, case-sensitive, and only once. The comparision is done the same way, as it would be for `string.Replace`. `""MyTestTest"".TrimEnd(""Test"") == ""MyTest"" == true` **Second overload:** `public string TrimEnd(string suffix, StringComparison comparison)` Works as the first one, but allows you to explictly tell how to compare. `""MyTESTtest"".TrimEnd(""test"", StringComparison.InvariantCultureIgnoreCase) == ""MyTEST"" == true` **Third overload(s):** I am not sure if these are needed, but I wanted to throw this out here anyway: ``` public string TrimEnd(string suffix, bool trimRepeatedly) public string TrimEnd(string suffix, bool trimRepeatedly StringComparison comparison) ""MyTestTEST"".TrimEnd(""test"", true, StringComparison.InvariantCultureIgnoreCase) == ""My"" == true ``` This proposal has nothing to do with string.Trim(), as it would be ambigious. `""tetet"".Trim(""tet"") == ???` Namespace: _System_ Type: _System.String_ Assembly: _System.Runtime.dll_ I'd be willing to work on this :3 " +1247 area-Serialization Serialization tests fail ``` DataContractSerializerTests.DCS_ContainsLinkedList [FAIL] System.Exception : Test failed for input : SerializationTypes.ContainsLinkedList Stack Trace: d:\Workspace\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs(1717,0): at DataContractSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractSerializerSettings settings, Func`1 serializerFactory) d:\Workspace\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs(1113,0): at DataContractSerializerTests.DCS_ContainsLinkedList() Starting: System.Xml.XPath.XmlDocument.Tests Finished: System.Runtime.Serialization.Xml.Tests === TEST EXECUTION SUMMARY === System.Runtime.Serialization.Xml.Tests Total: 97, Errors: 0, Failed: 1, Skipped: 0, Time: 1,906s ``` # ``` DataContractJsonSerializerTests.DCJS_ContainsLinkedList [FAIL] System.FormatException : Input string was not in a correct format. Stack Trace: at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(IFormatProvider provider, String format, Object[] args) at System.Diagnostics.Debug.WriteLine(String format, Object[] args) d:\Workspace\corefx\src\Common\tests\System\Console.cs(12,0): at System.Console.WriteLine(String message, Object[] args) d:\Workspace\corefx\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(1291,0): at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) d:\Workspace\corefx\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(1047,0): at DataContractJsonSerializerTests.DCJS_ContainsLinkedList() xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Xml.XPath.Tests Finished: System.Runtime.Serialization.Json.Tests === TEST EXECUTION SUMMARY === System.Runtime.Serialization.Json.Tests Total: 74, Errors: 0, Failed: 1, Skipped: 0, Time: 1,477s ``` /cc @khdang +1254 area-System.Linq Enumerable.Single and Enumerable.SingleOrDefault overloaded implementations are inconsistent There is an inconsistency between the implementations of [Enumerable.Single()](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L1260) and [Enumerable.Single(predicate)](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L1284). Similarly there is another similar inconsistency between the implementations of [Enumerable.SingleOrDefault()](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L1306) and [Enumerable.SingleOrDefault(predicate)](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L1330) The overloads which accept a predicate enumerate the whole sequence before eventually throwing, even if more than one matching elements were already found: For consistency and performance reasons, it may be a good idea to make [Enumerable.Single(predicate)](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L1284) and [Enumerable.SingleOrDefault(predicate)](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L1330) methods able to fail fast and to throw an `InvalidOperationException` as soon as a second matching element is found. If that seems like a reasonable change, I would gladly submit a pull request. +1255 area-Infrastructure Create Win7 CI build We currently have a number of folks that are still working on Win7 which we support and we keep breaking things from time to time. We need to get a CI build/test for Win7. +1256 area-Serialization Fix issue with serialization of XmlElement "From #1199 The following code runs on .net 4.5 but does not run on corefx. There is an exception {""To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy. System.Xml.XmlElement does not implement Add(System.Object).""} System.Exception {System.InvalidOperationException} ``` csharp public class Program { public void Main(string[] args) { XmlSerializer serializer = new XmlSerializer(typeof(Product)); string text = @"" Iphone smartphone ""; StringReader reader = new StringReader(text); Product product = (Product)serializer.Deserialize(reader); Console.ReadLine(); } } public class Product { [XmlAnyElement] public XmlElement[] AllElements; } ``` " +1271 area-System.Runtime Add overload for case insensitive string Replace "# Introduction `String` does not provide `Replace` method for case-insensitive replacements, but only for case-sensitive replacements. # Rationale and usage The idea here is to make programmers life easier & move closer to API consistency. It is fairly common scenario where you have user inserted data that has some kind of place-holders (tokens), that later have to be replaced by some templating system. Current solutions in the internet involve using regex class for this trivial task. ```c# var userTemplateData = ""Hello there. Time now is %currenttime%""; var evaluatedData = Regex.Replace( userTemplateData, ""%CurrentTime%"", DateTime.Now.ToString(), RegexOptions.IgnoreCase); // evaluatedData = ""Hello there. Time now is 01/04/2015 14:37""; ``` This approach is horrible: 1) not readable 2) often times not correct, as pattern has to be run through `Regex.Escape` before. 3) most likely slow(er) After the necessary change is added, we can do: ```c# var evaluatedData = userTemplateData.Replace( ""%CurrentTime%"", DateTime.Now.ToString(), StringComparison.InvariantCultureIgnoreCase); ``` How common would the usage of this be? I would **speculate** that every programmer in their career will hit the lack of case-insensitive replacement in framework at least once. I can't say much more, expect provide some StackOverflow links below in Details section. I did quick search through the code-base I am new to, and found around ~30 case-insensitive `Regex.Replace` usages. # Proposed API ```c# public sealed class String : ... { .... // these two methods are provided for framework consistency // trying to follow the StartsWith/EndsWith public string Replace(string oldValue, string newValue, StringComparison comparison); public string Replace(string oldValue, string newValue, bool ignoreCase, CultureInfo culture); public string Replace(char oldValue, char newValue, CompareOptions options); .... } ``` # Details Namespace: **System** Type: **System.String** Assembly: **System.Runtime.dll** I'd love to see the current `string.Replace` [CoreClr implementation](https://github.com/dotnet/coreclr/blob/cbf46fb0b6a0b209ed1caf4a680910b383e68cba/src/classlibnative/bcltype/stringnative.cpp#L835) pulled out from CoreClr, and implemented 100% in the `String.cs`: This would help to: - avoid code-duplication - make it more transparent (programmers can take look at the implementation) - unit-test a little less, as they share both common functionality for `Replace(..., StringComparison.Ordinal);` Alternatively, we could also modify the existing `CoreClr` implementation to deal with `StringComparison`. Or, just rewrite everything from zero. # Links to explore http://stackoverflow.com/questions/244531/is-there-an-alternative-to-string-replace-that-is-case-insensitive http://stackoverflow.com/questions/6275980/string-replace-by-ignoring-case http://weblogs.asp.net/jongalloway/71188 # Updates - Edited this description to make it more of a **speclet**, based on the discussion below and the proposed API Review process. - Feedback to @tarekgh. Added my opinion about how often this functionality would be used I'd be willing to work on this :3 " +1272 area-System.Collections Make System.Collections.Immutable [Serializable] Please make collections from namespace System.Collections.Immutable serializable if it is possible - mark them with `[Serializable]` attribute and do other related changes. There can be many cases when this would be useful. Thanks. +1285 area-System.Reflection Misc additions supporting Portable PDB reader +1297 area-System.Linq Unit Tests for Enumerable.Select Set of basic tests for: ``` IEnumerable Enumerable.Select( this IEnumerable source, Func selector) ``` 1. Verify `ArgumentNullException`is thrown when either `source` or `selector` is null. 2. Verify that deferred execution works (for `T[]`, `List` and `IEnumerable`) 3. Verify that returned collection contains expected items (for `T[]`, `List` and `IEnumerable`) 4. Verify that `GetEnumerator` called twice returns two different instances of enumerator. Tests are intended to improve code coverage around `Select` method before applying performance improvements to it (https://github.com/dotnet/corefx/pull/1282). It's also connected to https://github.com/dotnet/corefx/pull/1241 and https://github.com/dotnet/corefx/issues/1143. +1298 area-System.IO System.IO.Compression test asset and native dependency proposal "System.IO.Compression provides an API to compress and decompress files. It supports the ZIP and gzip archive formats and the Deflate compression algorithm. **_Testing**_ System.IO.Compression has existing test assets that fit three categories: 1. Round trip data through compression and verify it remains intact 2. Extract and verify data compressed through other compatible compression libraries 3. Verify behavior when attempting to decompress invalid or edge case archives The existing assets include archives, as well as decompressed binary files both for use as source material, and an oracle to verify decompression. Altogether, the binary assets weigh in at about 40MB. **Problem:** these test assets need to exist at test run time. Placing them in our corefx git repository is problematic because binary assets do not compress well and will bloat the size of our repository. **Proposal:** Binary test assets are packaged in to a nuget package per test assembly to be deployed at test run time. The binary assets to generate these nuget package are persisted in a single separate Git repository. Git repository structure: corefx-testdata\ corefx-testdata\System.IO.Compression.TestData.nuspec corefx-testdata\System.IO.Compression.TestData\ Nupkg structure: content\ Test asset nuget packages are depended on by the test assembly’s packages.config Currently, nuget is designed to deploy at package reference time (ie. when a package is referenced in Visual Studio) rather than runtime. In Dev14 this is changing. Until then, we’ll include a target in the test assembly’s csproj to copy the assets from the downloaded nuget package to the test’s working directory. In addition to System.IO.Compression, metadata reader uses binary test assets, but as they are only 100KB combined and are not a practical problem. System.IO.Packaging has 60GB of test assets. **Proposal:** System.IO.Packaging split their test assets in to tiers, with a single nuget package per tier. The inner loop tests should be no more than some number of megabytes. **_Native Dependencies**_ In the desktop .NET Framework, although we have a purely managed implementation of the deflate algorithm, customers have reported that the popular cross-platform open-source zlib library is faster and performs high quality compression. In response we include zlib, which we wrap and delegate to. We build it from source using the unmodified 1.2.3 version of the sources in the FX partition, and name the resulting output “clrcompression.dll.” On Windows, to fit with .NET Core’s app-local, side-by-side model, if we include zlib, we should deploy a copy of the native assembly alongside the managed System.IO.Compression.dll assembly included with an application. zlib distributes both sources and official binaries. While we could redistribute the official zlib binary, unfortunately they only release a 32-bit version and we are currently distributing a 64-bit version of coreclr. While zlib has a permissive license, it is not the MIT license, and including it in the corefx repository would mean the corefx repository no longer only contained code under a single license. **Proposal:** Continue building clrcompression.dll from the FX repository. Publish the 64-bit version of clrcompression.dll in a nuget package System.IO.Compression.clrcompression-x64.nupkg. Make System.IO.Compression.clrcompression-x64 a dependency of the System.IO.Compression package. **X-Plat todo:** Linux has a strong history of deploying applications and their dependencies through package managers. Packagers bundle the application binaries and metadata describing dependencies in to packages, and publish those on package manager repositories. We are planning to declare other framework and runtime dependencies through package managers where appropriate, and System.IO.Compression’s zlib dependency should be consistent. " +1305 area-System.Xml Inconsistent behavior of XmlAttributeCollection.InsertBefore and InsertAfter "I've noticed an inconsistent behavior of `XmlAttributeCollection.InsertAfter(XmlAttribute newNode, XmlAttribute refNode)` comparing to `InsertBefore` when the reference node is the last in the collection (the first for `InsertBefore`) and it's a duplicate of the new node. The duplicate node (attribute) needs to be removed before inserting. `InsertAfter` is unable to handle the case and throws `System.ArgumentOutOfRangeException` further in `List.Insert()` due to an incorrectly calculated insert position, while `InsertBefore` does the job. I'm not sure if this case has any practical use, but might be worth fixing. The following unit test reproduces the problem: ``` [Fact] // [ActiveIssue(""Throws argument out of range exception"")] public void InsertAfterRemovesDupRefAttr() { const string attributeName = ""existingAttr""; const string attributeUri = ""some:existingUri""; XmlDocument doc = CreateDocumentWithElement(); XmlElement element = doc.DocumentElement; element.Attributes.Append(doc.CreateAttribute(""attr1"", ""some:uri1"")); element.Attributes.Append(doc.CreateAttribute(""attr2"", ""some:uri2"")); XmlAttribute refAttr = element.Attributes.Append(doc.CreateAttribute(attributeName, attributeUri)); //dup XmlAttribute newAttr = doc.CreateAttribute(attributeName, attributeUri); XmlAttributeCollection target = element.Attributes; target.InsertAfter(newAttr, refAttr); // throws // Assert... } ``` A similar case (the reference attribute is the first in the collection) works for `InsertBefore`: ``` [Fact] public void InsertBeforeRemovesDupRefAttr() { const string attributeName = ""existingAttr""; const string attributeUri = ""some:existingUri""; XmlDocument doc = CreateDocumentWithElement(); XmlElement element = doc.DocumentElement; XmlAttribute refAttr = element.Attributes.Append(doc.CreateAttribute(attributeName, attributeUri)); //dup element.Attributes.Append(doc.CreateAttribute(""attr1"", ""some:uri1"")); element.Attributes.Append(doc.CreateAttribute(""attr2"", ""some:uri2"")); XmlAttribute newAttr = doc.CreateAttribute(attributeName, attributeUri); XmlAttributeCollection target = element.Attributes; target.InsertBefore(newAttr, refAttr); // Assert... } ``` " +1313 area-System.IO FileInfo: get_LastWritTime test fail ``` EXEC : warning : (runTest, d:\corefx\src\System.IO.FileSystem\tests\FileInfo\get_LastWriteTime.cs, 100) Eror_f984f! LastWriteTime is way off [D:\corefx\src\System.IO.FileSystem\tests\System.IO.FileSystem.Tests.csproj] FAiL! get_LastWriteTime.cs ,iCountErrors==1 FileInfo_get_LastWriteTime.runTest [FAIL] Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: d:\corefx\src\System.IO.FileSystem\tests\FileInfo\get_LastWriteTime.cs(126,0): at FileInfo_get_LastWriteTime.runTest() ``` +1314 area-System.Collections Regression: Comparer_DefaultInvariant.ExecuteComparer_DefaultInvariant http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release/lastFailedBuild/testReport/junit/(root)/Comparer_DefaultInvariant/ExecuteComparer_DefaultInvariant/ MESSAGE: Assert.True() Failure +++++++++++++++++++ STACK TRACE: at Comparer_DefaultInvariant.ExecuteComparer_DefaultInvariant() in d:\j\workspace\dotnet_corefx_windows_release\src\System.Collections.NonGeneric\tests\Comparer\Comparer_DefaultInvariant.cs:line 114 +1316 area-Infrastructure Use roslyn compiler to build corefx We should be using the Roslyn compiler to build +1317 area-Serialization Remove LegacyNetCF serializer from XmlSerializer +1318 area-Infrastructure Single tests should be able to be run through the IDE Currently there seems to be some miscommunication between the corefx repo/project setup and the IDE, and the test discovery inside the IDE for xunit is broken. This makes it difficult to run single tests +1326 area-System.IO System.IO.Compression tests need to remove a workaround for not understood DST issue The System.IO.Comprssion tests verify the last modified metadata of zip file entries. There is currently a workaround where the check will succeed if the entry is 1 hour earlier than expected. This is to work around a not understood DST issue either in the test, or in the library. I need to understand if the issue is a test or product issue, and fix. +1330 area-System.Linq Parallel.Linq.Distinct not returning first element equal element in ordered queries. "Parallel.Linq.Distinct doen't return the first ""equal"" element in ordered queries. Take, for example, the following set: `{0, 1, 2, 3, 4, 5, 6, 7}` - and use a comparator that says everything `mod 4` is identical (so, `0` is the same as `4`, `1` and `5`, etc). I'm somewhat expecting to get `{0, 1, 2, 3}`, but I don't - any of the 'later' identical values can be returned. For those of you contending that ""They're identical, it doesn't matter"", which I somewhat thought too, I'm basing this on comments internal to the [Distinct operator](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/Unary/DistinctQueryOperator.cs#L238-L251): ``` 238 // For each element, we track the smallest order key for that element that we saw so far 239 TKey oldEntry; 240 241 Wrapper wrappedElem = new Wrapper((TInputOutput)elem.First); 242 243 // If this is the first occurrence of this element, or the order key is lower than all keys we saw previously, 244 // update the order key for this element. 245 if (!_hashLookup.TryGetValue(wrappedElem, out oldEntry) || _keyComparer.Compare(orderKey, oldEntry) < 0) 246 { 247 // For each ""elem"" value, we store the smallest key, and the element value that had that key. 248 // Note that even though two element values are ""equal"" according to the EqualityComparer, 249 // we still cannot choose arbitrarily which of the two to yield. 250 _hashLookup[wrappedElem] = orderKey; 251 } ``` The [ordering page](https://msdn.microsoft.com/en-us/library/vstudio/dd460677%28v=vs.110%29.aspx) just says these operators return ""ordered"" results given an ordered source, which is technically still happening - so long as there was an element in that original position, that or an equal one is returned in that position. Vanilla LINQ actually says `Distinct` returns _unordered_ results, but I'm guessing they really meant ""we didn't use `OrderBy` to make things easier for us"", especially as all the examples (and the way the operator is implemented) show that it retains the ordering of the original source (and how the other set operators behave - `Except` doesn't mention ordering, `Intersect` explicitly mentions the original order is retained, and `Union` mostly implies the original order is retained). So... which is correct? Should the actual-first equal element be returned (as I'm expecting), or that's a stronger guarantee than we need (and any equal item can be returned in its place)? Example reproduction code (may fail to fail): ``` using System; using System.Collections.Generic; using System.Linq; using Xunit; namespace Test { public class Example { [Fact] public static void DistinctExample() { ParallelQuery original = ParallelEnumerable.Range(0, 24).AsOrdered(); int seen = 0; Assert.All(original.Distinct(new ModularCongruenceComparer(4)), i => Assert.Equal(seen++, i)); Assert.Equal(4, seen); } private class ModularCongruenceComparer : IEqualityComparer { private int _mod; public ModularCongruenceComparer(int mod) { _mod = Math.Max(1, mod); } private int leastPositiveResidue(int x) { return ((x % _mod) + _mod) % _mod; } public bool Equals(int x, int y) { return leastPositiveResidue(x) == leastPositiveResidue(y); } public int GetHashCode(int x) { return leastPositiveResidue(x).GetHashCode(); } public int GetHashCode(object obj) { return GetHashCode((int)obj); } } } } ``` " +1332 area-System.Linq Parallel.Linq.Concat not consistent with ordered input "`Parallel.Linq.Concat` isn't behaving consistently when given ordered input sources. As `Concat` is a binary operator, two sources may be supplied. The inconsistency surfaces depending on which, and how, operand is ordered. If both **or** either (only the left or the right) is ordered via `AsOrdered()`, the entire output is ordered. If the left operator is ordered via any of the `OrderBy(...)` operators (`OrderBy`, `OrderByDescending`, `ThenBy`, `ThenByDescending`), the entire output is ordered. If the _right_ operator is ordered via any of the `OrderBy(...)` operators, only the _left_ output is ordered (as by `AsOrdered()`), and the right is returned in a non-deterministic order. It only seems to do this with right sources constructed via `Enumerable.Range(...).AsParallel()` and `Partitioner.Create(...).AsParallel()`. Using a `List` is safe (eg, `Enumerable.Range(...).ToList().AsParallel()`), however the output of LINQ is not: `list.Select(x => x).AsParallel()` can return unordered output. How the left operand is constructed appears to have no effect. This is also the behavior of the current consumer release. Example program: ``` static void Main(string[] args) { int leftSize = 8; int rightSize = 8; ParallelQuery query = ParallelEnumerable.Range(0, leftSize) .Concat(Enumerable.Range(0, rightSize).AsParallel().OrderBy(x => x)); foreach (int i in query) { Console.Write(i + ""|""); } Console.ReadLine(); } ``` (This is a bit of a Heisenbug - expect it to generate completely ordered output on occasion. It's possible that it does this for all input types, and I just haven't seen it yet, although I consider this unlikely) The [ordering page](https://msdn.microsoft.com/en-us/library/vstudio/dd460677%28v=vs.110%29.aspx) states that ordered input to `Concat` results in ordered output, and unordered input results in unordered output, but it isn't clear what happens when you have one of each. At minimum, the output actually observed is disturbing on first encounter. `Zip` appears to operate similar to how I anticipate `Concat` operating - if either input is ordered, the entire output is ordered, regardless of source. " +1334 area-System.IO Investigate async usage for System.IO.Compression "@stephentoub pointed out two suspect uses of Async in System.IO.Compression in https://github.com/dotnet/corefx/pull/1309 - In System\IO\Compression\DeflateStream.cs: ``` 347 + // If there is no data on the output buffer and we are not at 348 + // the end of the stream, we need to get more data from the base stream 349 + readTask = _stream.ReadAsync(buffer, 0, buffer.Length, cancellationToken); 350 + if (readTask == null) 351 + { 352 + throw new InvalidOperationException(SR.NotReadableStream); 353 + } 354 + 355 + var tcs = new TaskCompletionSource(); 356 + 357 + // ContinueWith will never throw here otherwise we'll be in inconsistent state 358 + readTask.ContinueWith( ``` ""It's not clear to me why ContinueWith is being used in this fashion rather than using async/await. We should open a work item to revisit this async implementation."" In System\IO\Compression\DeflateStream.cs: ``` 625 + Interlocked.Increment(ref asyncOperations); 626 + 627 + try 628 + { 629 + return base.WriteAsync(array, offset, count, cancellationToken).ContinueWith( 630 + (t) => Interlocked.Decrement(ref asyncOperations), ``` ""This looks like a real bug. Any exceptions or cancellation information from the Task returned from the base WriteAsync is getting eaten."" " +1336 area-System.Linq Collections should have extensions to compute order statistic `System.Linq` has extensions implemented for computing the minimum and maximum. Example: ``` C# var a = new int[] {100, 300, 200, 400}; WriteLine(a.Max()); // prints 400 WriteLine(a.Min()); // prints 100 ``` While these are useful values when dealing with collections, they are merely special cases of nth order statistics. More often than not, people are also interested in a specific cases. For example, when querying the collection in the sample code above, the question may be posed, what is the 3rd smallest item in the array? The naive implementation would be to sort the array and print the 3rd item in it. However, there are selection algorithms that can do this more efficiently, without the need to actually invoke a sort method on the array. A method should be implemented in line with the `Min` and `Max` extension methods to accomplish this. The API should be a simple as: ``` C# WriteLine(a.NthSmallestElement(3)) // should print 300 WriteLine(a.NthSmallestElement(1)) // should print 100 WriteLine(a.NthSmallestElement(a.Length)) // should print 400 ``` The method name may differ based on further discussion. I chose the name based on C++ references that I had seen earlier. +1343 area-Serialization Add serialization support for XmlDocument and XmlElement in XmlSerializer Add back the code that was removed when moving serialization to .NET Core. Issue #1256. +1346 area-System.Runtime Support for ICustomMarshaler Split from #1333 Recorded uses in (3rd party) libraries: - [LibGit2Sharp](https://github.com/libgit2/libgit2sharp/search?utf8=%E2%9C%93&q=ICustomMarshaler&type=Code) - Mono.Posix see #94 +1347 area-Serialization Support for binary serialization Split from #1333 Turns out binary serialization is not really needed in my case as it's used only on exceptions, but it would still be nice to know whether it's coming back or whether it is depreciated. +1349 area-System.Reflection Dev/metadata Merge changes from master. +1351 area-Serialization Add serialization support for XmlDocument and XmlElement in XmlSerializer Add back the code that was removed when moving serialization to .NET Core. Issue #1256. +1355 area-System.IO Failure in System.IO.FileSystem.DriveInfo ``` Discovering: System.IO.FileSystem.DriveInfo.Tests Discovered: System.IO.FileSystem.DriveInfo.Tests Starting: System.IO.FileSystem.DriveInfo.Tests System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.TestVolumeLabel [FAIL] Assert.Throws() Failure Expected: typeof(System.UnauthorizedAccessException) Actual: typeof(System.IO.IOException): The request is not supported Stack Trace: e:\oss\corefx\src\System.IO.FileSystem.DriveInfo\src\System\IO\DriveInfo.Windows.cs(235,0): at System.IO.DriveInfo.set_VolumeLabel(String value) e:\oss\corefx\src\System.IO.FileSystem.DriveInfo\tests\DriveInfo.Windows.Tests.cs(180,0): at System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.<>c__DisplayClass20.b__18() Finished: System.IO.FileSystem.DriveInfo.Tests ``` I think this is consistent failure on my box (at least repeated few times) This happens for my DVD drive when there is no drive inside. @Priya91 seemed to also have checked it on her computer but she was unable to repro. When I use DriveInfo class on my DVD drive it is able to get the DriveType but trying to access VolumeLabel or DriveFormat (also for read) causes the same failure. +1360 area-System.Collections System.Collections.Specialized.Tests.GetItemObjTests.Test01 [FAIL] ``` System.Collections.Specialized.Tests.GetItemObjTests.Test01 [FAIL] Error, returned wrong item for uppercase key Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Collections.Specialized\tests\HybridDictionary\GetItemObjTests.cs(328,0): at System.Collections.Specialized.Tests.GetItemObjTests.Test01() ``` I coudln't repro locally, probably some threading issue +1370 area-System.Diagnostics Provide an API for traversing/reasoning about async call stacks Any tool that shows exceptions today also shows the callstack. With the introduction of the async keyword (yield was the same I guess), it's becoming increasingly harder to show reasonable call stacks because of the async state machine. It would be nice if there was an API somewhere that could be used to clean up the async state machine and pretty print a call stack with readable method names (tools like reflector do this). Here's an example of a typical error page in an MVC 6 application: ![image](https://cloud.githubusercontent.com/assets/95136/7085404/4e19da18-df2b-11e4-8fa7-28a0799854f0.png) +1373 area-System.Linq enumerable.AsParallel().LongCount() can only count int.MaxValue elements "... as well as `enumerable.AsParallel().LongCount(x => true)` (I thought this override had a successful run, but it isn't now) The overflow is encountered at [PartitionedDataSource.cs, line 967](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Parallel/src/System/Linq/Parallel/Partitioning/PartitionedDataSource.cs#L697). The problem is that these partitioned data sources all presume to only operate over `int.MaxValue` elements, and the rest of the file (and related infrastructure) depend on that. Some sort of re-architecting (rather than simply switching the key from `int` to `long`) is probably required. Repro test: ``` [Fact] // Extremely long-running public static void LongCount_LargeCount() { Assert.Equal(int.MaxValue + 1L, new OverlyLargeEnumerable().AsParallel().LongCount()); } private class OverlyLargeEnumerable : IEnumerable { public IEnumerator GetEnumerator() { return new OverlyLargeEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } private class OverlyLargeEnumerator : IEnumerator { private long _current = -1; public long Current { get { return _current; } } object IEnumerator.Current { get { return Current; } } public void Dispose() { _current = int.MaxValue; } public bool MoveNext() { // Adds one _after_ compare, so final value is int.MaxValue + 1 return _current++ < int.MaxValue; } public void Reset() { _current = -1; } } } ``` Vanilla LINQ is fine. This behavior is present on the current consumer release. (""You had one job! ONE! JOB!"") (side note - I'm a little surprised by how much slower this runs in parallel compared to doing it sequentially - by about 6 times, or ~120 seconds vs 20 seconds) " +1378 area-System.Collections Add IEnumerable> variants to Dictionary's .ctors We should consider adding constructors to `Dictionary` which allow building a Dictionary from an IEnumerable of KeyValueParis. ## Rationale and Usage Given an `IEnumerable>` there's no simple way to construct a dictionary, around it. Instead you have to do something like: ``` csharp var dict = new Dictionary(); foreach (KeyValuePair kvp in enum) { dict.Add(kvp.Key, kvp.Value); } ``` or ``` csharp var dict = enumerable.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); ``` `ConcurrentDictionary` already provides such .ctors. This is especially useful in the case where you want to make a copy of an `IReadOnlyDictionary` ## Proposed API ``` csharp public class Dictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { // New .ctors public Dictionary(IEnumerable> enumerable); public Dictionary(IEnumerable> enumerable, IEqualityComparer comparer); // Existing .ctors public Dictionary(); public Dictionary(IDictionary dictionary); public Dictionary(IDictionary dictionary, IEqualityComparer comparer); public Dictionary(IEqualityComparer comparer); public Dictionary(int capacity); public Dictionary(int capacity, IEqualityComparer comparer); // Remaining members removed for brevity. } ``` See some additional discussion on this issue is at dotnet/coreclr#680 +1389 area-System.Reflection Fixes a couple of bugs in debug handle enumerators +1414 area-System.Collections ImmutableList (and Builder) IList.Contains, IndexOf, Remove methods throw instead of return -1 given unexpected argument types A bit longer story http://blog.rthand.com/post/2015/04/10/A-hidden-bug-in-Windows-Stores-ComboBox.aspx Basically a Windows Store (8.1 and 10 at least) ComboBox first tries ComboBoxItem against its ItemsSource IList.IndexOf and if that gracefully fails (returns -1) then it tries with the actual type. This works with normal List because this guy returns -1 when an incompatible type is used, where ImmutableList throws an exception (doesn't do any check actually) and ComboBox doesn't understand that very well. To make it worse ComboBox doesn't perform this stunt immediately but only after a while (when one scrolles some of its items). Now, I'd say that this is ComboBox' fault but who knows. +1415 area-System.Linq Propose: new method Enumerable.IndexOf Hi, I would like to propose a new member for Enumerable class: ``` int IndexOf(IEnumerable source, T item, IEqualityComperer comparer) ``` It's useful to find the index of an item inside the source. Only `IList` has a similar method but it forces me to completely materialize all the source. The implementation can enumerate list or, if the original source type is `IList`, call the `IList.IndexOf` method. If the source type is an `Array` we can call `Array.IndexOf`. What do you think? +1440 area-Serialization Improve code coverage for data contract serializers Improve code coverage for DataContractSerializer and DataContractJsonSerializer +1441 area-Serialization Expose more details in serialization test failures Include expected and actual output when serialization tests fail and clean up tests to get rid of Console.WriteLine. +1443 area-System.Reflection Merge master +1450 area-System.Runtime Make TimeZoneInfo.AdjustmentRule.BaseUtcOffsetDelta public I would like to propose that `TimeZoneInfo.AdjustmentRule.BaseUtcOffsetDelta` be marked `public` instead of `internal`. This can be seen [here](https://github.com/dotnet/coreclr/blob/d46b09d4dfc8e25d7e61a9994f89720cf01b5086/src/mscorlib/src/System/TimeZoneInfo.cs#L3754). There are several reasons: - The `AdjustmentRule` class is loaded from registry information, loosely matching the `_REG_TZI_FORMAT` structure. (See [this article](http://blogs.msdn.com/b/bclteam/archive/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free.aspx)). - The whole reason this property was added ([KB3012229](https://support.microsoft.com/en-us/kb/3012229)) is such that the data from the registry can be better reflected in this class. Specifically, the `_REG_TZI_FORMAT.Bias` value can change from year to year, so `AdjustmentRule.BasUtcOffsetDelta` was created to track the delta between the year-to-year bias and the default bias for the time zone. - There's no good reason (IMHO) to keep this internal. Doing so means that the full functionality of the `AdjustmentRule` class can really only be used when populated by the framework itself. It also makes understanding the way that the framework populates the class difficult, as all fields are exposed through public properties _except_ this one. - It creates problems for those trying to use it in other scenarios. See Example 2 in Jon Skeet's post [Backward Compatibility Pain](http://codeblog.jonskeet.uk/2015/03/02/backward-compatibility-pain/). Additionally, there needs to be some public way to create an `AdjustmentRule` that has a value for this property. Either the existing `CreateAdjustmentRule` factory method should be made public, or a parameter could be added to the existing constructor, or another constructor could be added. Thanks for your consideration. +1455 area-System.Reflection Merge branch 'master' of https://github.com/dotnet/corefx into dev/metadata +1464 area-System.Reflection Set genericParameterCount in MethodSignature This addresses issue #1463 +1472 area-System.Reflection Merge branch 'master' of https://github.com/dotnet/corefx into dev/metadata +1474 area-Meta CoreFX Primer "I'm writing a [.NET Primer](https://github.com/dotnet/coreclr/pull/725) in the CoreCLR repo that has a strong bias to the runtime features. I'd like to start one that has a strong bias to the framework libraries. It makes sense for it to live in this repo. Naturally, there would be cross-linking between the two. - Good idea? - What should this primer be called? I don't want to call one "".NET Core Runtime Primer"" and then other "".NET Core Framework Primer"". The primer I'm working on right now is the primer for the fundamentals of .NET generally, in an ECMA 335 sense. It's intended to be equally meaningful for Mono. The CoreFX Primer, on the other hand, would be specific to this implementation, so we could reasonable call it the "".NET Core Framework Primer"". /cc @Petermarcu FYI: This topic would move the corefx primer: https://github.com/dotnet/coreclr/blob/dotnet-primer/Documentation/framework-libraries.md. " +1476 area-System.Text Regex constructor throws NullReferenceException and OutOfMemoryException "Following line of code throws NullReferenceException: Regex regex = new Regex(""(?(?i))""); And following line of code throws OutOfMemoryException: Regex regex = new Regex("" (?(?i))""); Both patterns are if constructs where expression ""?i"" contains quantifier following nothing. There seems to a problem with ""i"" letter or any other letter that is an inline character for a particular option (i, m, n, s, x). If you change ""i"" with ""a"" (not an inline character), ArgumentException is thrown as expected. Both patterns are invalid so according to the .NET documentation, both lines should throw ArgumentException. This behaviour is especially unpleasant in case of ""regex tester"" application (such as http://regexator.net) which tries to continually evaluate user input as regex pattern. This behaviour has been tested in .NET 4.0, 4.5 and 4.6, all with the same results. " +1477 area-Infrastructure Test infrastructure requirements and scenarios "Current updated proposal from @Chrisboh : **Requirements we need to satisfy** • Run a set of tests that all developers should run before checking in • Specify a set of tests to run from the command line • Be able to debug all test cases • Run with code coverage turned on • Only build what is required ## Proposal The key to this proposal starts at build time. We need to only build what we are going to run. This is important both for overall runtime as well running tests using .net native. In order to satisfy this we need to move our ability to filter up higher in the process. ## Building only What is Required The following include is where we find all of our test projects and add them to the list of items we would like to build. **File:** CoreFX\src\dirs.proj (line 8) `` We need to add a condition to this to only include items that match a supplied filter. This filter would contain the following items. **Filter List:** • InnerLoop • Functional • Partner • Customer #### InnerLoop This will contain everything we consider an Unit test today and until we complete the work to run our tests based on selectivity should be the minimum required set of tests that get run before accepting any PR. #### Functional (OuterLoop Ring 1) This category is made up of test cases that will test larger sections of the code and / or take longer to run. The tests in this category should also give us a quick high level check that there are no major issues with regards to basic performance, stress, or security. #### Partner (OuterLoop Ring 2) The goal of this category is to determine if we are ready for team Dogfooding. All performance and stress tests should be in this category as well as any compliance / security tests. #### Customer (OuterLoop Ring 3) The goal of this category is to determine if we are ready to release this for Partner Dogfooding. This will contain all scenario test cases and will have a manual component added as well. ## Defining Test Project In order for our filtering to work correctly we need to ensure that test project is setup correctly. The simple way to do this is to create a test project for each category in the Filter list. This would give us at most 4 test projects but it will be more typical to have around 2 projects as I could see unifying scenario, compliance, and security tests in a single location. In order to do this we will need to filter by test project name. We will follow the following naming conventions. `*..tests.dll` Example: `System.ObjectModel.InnerLoop.tests.dll` ## Xunit Attributes Now it is time to address what we are going to be doing about the Xunit attributes. First we will remove all attributes that can be replaced with the project filters. This will include things like InnerLoop, OuterLoop, Performance, and Stress. These attributes will not be used when deciding what binaries we should build and run. What this doesn't mean is that we will be removing all attributes entirely. We still need to keep and leverage certain attributes in order to give us the flexibility we need to further fine tune our runs. Here are some of the key attributes we will need to leave in place. #### Active Issue Attribute This attribute will be used to filter out failing test cases when running locally. When running our daily builds we should include these test cases and label them as failing with a known bug. #### Platform Specific Attribute This attribute will be used to filter out test cases that do not apply to the platform you are currently running on. There was some debate on whether we should promote this to the filter list or not. At this time we don’t feel there are enough test cases to warrant promoting this to the filter list. In the future if this becomes an issue we can revisit this. ## Command Line We will need to execute everything from the command line as well as be able to select everything we need. Doing so will be done via two properties. The first will be defining the test categories that you would like to include. This will be done with the following property. `/p:TestTypes=""InnerLoop;Functional""` The second property will be used to supply extra command line parameters to Xunit. This will simply be a pass-through from the msbuild command line onto Xunit and we will use the following property for that. `/p:AdditionalXunitArgs=""-notrait ActiveIssue""` Additionally if you do not specify the TestTypes property it should run all Developer test cases automatically. Also not specifying the AdditionalXunitArgs property should be default exclude any test with an Active Issue and regardless if the property is specified we should include the correct OS parameter. ## Debugging This will be the same as what we have today. In the future we should invest me making the Xunit.runner.VisualStudio work and this would simplify everything. " +1490 area-System.Linq Parallel.Linq.GroupBy not using first 'equal' key. Similar to `Distinct` ( #1330 ), `GroupBy` isn't choosing the 'first' or earliest identical element for a key. That is, given an ordered range `{0, ... 23}`and running `GroupBy(x => x, compareMod(4))`, I'm expecting the first (lowest, here) element that occurs in the source to be chosen as the key - `{0, 1, 2, 3}`. Instead, any element may be chosen as the key (although it looks like `0` is consistently being chosen for the first key... hmmm...) Reproduction code (may not always fail): ``` using System; using System.Collections.Generic; using System.Linq; using Xunit; namespace Test { public class Example { [Fact] public static void GroupByExample() { ParallelQuery original = ParallelEnumerable.Range(0, 24).AsOrdered(); int seen = 0; Assert.All(original.GroupBy(x => x, new ModularCongruenceComparer(4)), i => Assert.Equal(seen++, i.Key)); Assert.Equal(4, seen); } private class ModularCongruenceComparer : IEqualityComparer { private int _mod; public ModularCongruenceComparer(int mod) { _mod = Math.Max(1, mod); } private int leastPositiveResidue(int x) { return ((x % _mod) + _mod) % _mod; } public bool Equals(int x, int y) { return leastPositiveResidue(x) == leastPositiveResidue(y); } public int GetHashCode(int x) { return leastPositiveResidue(x).GetHashCode(); } public int GetHashCode(object obj) { return GetHashCode((int)obj); } } } } ``` +1491 area-System.Xml Some tests are failing when decimal separator is not a dot Some XML tests are failing if decimal separator is not a dot. Example repro: - Start->Run (WinKey + R) -> `intl.cpl` - Change format (no need to change locale) to `Ukrainian (Ukraine)` - `build /p:WithCategories=OuterLoop` Example error: ``` TestCase:WriteFullEndElement - ERROR: RECA Expected: -4582,24 Actual : -4582.24 elem.WriteValue(floatToUri) ``` +1498 area-System.Linq Unit tests for Enumerable.Where Following MarcinJuraszek's examples for Enumerable.Select, I added basically identical tests for Enumerable.Where. +1502 area-System.Collections [Proposal] Use B+-trees instead of AVL trees for Immutable Collections Currently the `Node` class used for `ImmutableList` includes 40 bytes of overhead per list element on X64, and 24 bytes of overhead on X86. This means the memory cost of using this data structure for an `ImmutableList` is 1000% on X64, and 600% on X86 (these figures represent the amount of memory used for storing non-data elements associated with the structure). I propose migrating to a B+-tree instead, using a fixed value for _b_ and declaring data values in the index and data pages directly (to avoid unnecessary memory overhead for arrays). The choice of _b_ primarily affects the following things: 1. The height of the tree. Shorter tree heights improve performance for random access lookups by improving memory locality for a majority of traversal operations. 2. The size of the pages. Mutations of immutable data structures require reconstructing pages leading back to the root. If the pages are large, mutations could become expensive. In addition to the above, B+-trees provide a substantial memory savings by removing the child pointers (the Left and Right pointers for AVL nodes) from the leaves. My initial calculations (which could be completely wrong) indicate that the average memory allocation required for a single mutation operation on a list of 100000 elements using the AVL structure is 775 bytes for X64 and 493 bytes for X86. The optimal value of _b_ for X64 in terms of mutation allocation overhead is _b_=8, which costs 476 bytes per operation on a list of the same size (39% reduction). For X86 this same value of _b_ costs 388 bytes per mutation (21% reduction, and _b_=6 would be optimal with 382 bytes). The overall storage overhead for _b_=8 drops a staggering amount down to 169% for X64 and 119% for X86 (counting the average page at 75% capacity, based on a merge at 50% and split at 100%). +1504 area-System.Collections Some Collections.NonGeneric tests have race conditions and ocassionally failing ( http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/963/console ) ``` Xunit.Sdk.EqualException: Assert.Equal() Failure Γåô (pos 0) Expected: en-US Actual: cs-CZ Γåæ (pos 0) at Xunit.Assert.Equal(String expected, String actual, Boolean ignoreCase, Boolean ignoreLineEndingDifferences, Boolean ignoreWhiteSpaceDifferences) at Xunit.Assert.Equal(String expected, String actual) at Comparer_DefaultInvariant.runTest() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Collections.NonGeneric\tests\Comparer\Comparer_DefaultInvariant.cs:line 52 Fail! iCountErrors==1 Comparer_DefaultInvariant.ExecuteComparer_DefaultInvariant [FAIL] Assert.True() Failure ``` The tests are setting: ``` csharp CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; ``` Which may fail when run on different threads. +1509 area-System.Numerics Poor hash function in .Net source The `CombineHashCodes` in `System.Numerics.HashCodeHelper` has a very high collision rate for uniformly distributed data! The method probably first appeared in `System.Web.Util.HashCodeCombiner` class and then used in `System.Array`, `System.Tuple` and dotnet/corefx. Here's an example: Assuming the `CombineHashCodes` method's implementation is: ``` C# internal static int CombineHashCodes(int h1, int h2) { return (((h1 << 5) + h1) ^ h2); } ``` 100K raw data results in more than 6K duplicate hash values, that is 6% of a uniformly distributed set: ``` C# var data = Enumerable.Range(0, 100000) .Select(t => new { Val1 = t, Val2 = 100000 + t }) .GroupBy(t => CombineHashCodes(t.Val1.GetHashCode(), t.Val2.GetHashCode())) .Where(t => t.Count() > 1) .Select(t => new { Hash = t.Key, Items = t.ToList() }) .ToList(); ``` I believe there are much better hash functions to use like the one Josh Bloch suggests in Effective Java, which results in no hash collision even for 1M records of data in example above: ``` C# internal static int CombineHashCodes(int h1, int h2) { return (17 * 31 + h1) * 31 + h2; } ``` +1511 area-Infrastructure Remove properties not relevant to code formatting from corefx.vssettings "Looks like we have a few properties that are unrelated to formatting in corefx.vssettings such as: ``` 0 2 ``` We should remove them so that only C# formatting settings are in that file. " +1512 area-System.Collections System.Collections.Immutable and APTCA/SecurityTransparentAttribute If possible please add one of attributes forcing assembly to be Security Transparent (AllowPartiallyTrustedCallersAttribute or SecurityTransparentAttribute). This will help using this library in some quite uncommon partial trust scenarios. +1513 area-System.Runtime Add String.Split overloads that take a single char and string separator It's extremely common to split a string based on a single `char` or `string` separator, yet `String.Split` only offers overloads that accept an array of separators. The `params char[] separator` overload is particularly insidious as the `params` usage often results in a large number of unnecessary `char[]` heap allocations, unbeknownst to the developer. ## Rationale and Usage [Stack Exchange ran into this](http://blog.marcgravell.com/2013/11/allocaction-allocation-allocation.html) (significant number of separator arrays in memory) and submitted a [pull request](https://aspnetwebstack.codeplex.com/SourceControl/network/forks/marcgravell/outputcachecleanup/contribution/7201) to ASP.NET MVC to cache `String.Split` separator arrays inside the ASP.NET MVC codebase. They ended up with the following: ``` c# namespace System.Web.Mvc { internal static class StringSplits { // note array contents not technically read-only; just... don't edit them! internal static readonly char[] Period = new[] { '.' }, Comma = new[] { ',' }; } } ``` With uses of `string.Split('.')` and `string.Split(',')` replaced with `string.Split(StringSplits.Period)` and `string.Split(StringSplits.Comma)` to avoid the `char[]` allocations. It'd be awesome if `String.Split` offered overloads that accepted a single separator to avoid this. ## Proposed API ``` c# public partial class String { // Proposed methods public string[] Split(char separator, StringSplitOptions options = StringSplitOptions.None); public string[] Split(char separator, int count, StringSplitOptions options = StringSplitOptions.None); public string[] Split(string separator, StringSplitOptions options = StringSplitOptions.None); public string[] Split(string separator, int count, StringSplitOptions options = StringSplitOptions.None); // Existing methods public string[] Split(params char[] separator); public string[] Split(char[] separator, int count); public string[] Split(char[] separator, StringSplitOptions options); public string[] Split(char[] separator, int count, StringSplitOptions options); public string[] Split(string[] separator, StringSplitOptions options); public string[] Split(string[] separator, int count, StringSplitOptions options); } ``` ## Notes We had wanted to add `public string[] Split(string separator)`, but this breaks source compatibility with uses of `Split(null)`, which is documented to split based on white space, because it makes the call ambiguous between `Split(char[])` and `Split(string)`. I won't go into it here as it's really a separate feature request, but it would also be worth considering new `Split` methods that return a `struct` collection of `StringSpan`/`StringSegment` structs (in lieu of internal runtime span/substring magic) to avoid the resulting `string[]` allocation (and substring allocations, unless needed). I'd be happy to contribute an implementation and tests. +1514 area-System.Runtime Add String.Format overloads to avoid unnecessary allocations "It's pretty common to pass value types to `String.Format`, unfortunately this results in unnecessary boxing allocations. ## Rationale Consider the following: ``` c# long id = ...; int index = ...; int length = ...; // Traditional call to String.Format string foo = string.Format(""{0}: Index = {1}, Length = {2}"", id, index, length); // Use of the string interpolation language feature string bar = $""{id}: Index = {index}, Length = {length}""; ``` Both the traditional call to `String.Format` and the use of the string interpolation language feature (which is just syntactic sugar for `String.Format`) requires 3 boxing allocations. ## Proposed API ``` c# namespace System { public sealed class String : ... { // Proposed methods public static string Format(string format, T0 arg0); public static string Format(string format, T0 arg0, T1 arg1); public static string Format(string format, T0 arg0, T1 arg1, T2 arg2); public static string Format(IFormatProvider provider, string format, T0 arg0); public static string Format(IFormatProvider provider, string format, T0 arg0, T1 arg1); public static string Format(IFormatProvider provider, string format, T0 arg0, T1 arg1, T2 arg2); // Existing methods public static string Format(string format, object arg0); public static string Format(string format, object arg0, object arg1); public static string Format(string format, object arg0, object arg1, object arg2); public static string Format(string format, params object[] args); public static string Format(IFormatProvider provider, string format, object arg0); public static string Format(IFormatProvider provider, string format, object arg0, object arg1); public static string Format(IFormatProvider provider, string format, object arg0, object arg1, object arg2); public static string Format(IFormatProvider provider, string format, params object[] args); ... } } namespace System.Text { public sealed class StringBuilder { // Proposed methods public StringBuilder AppendFormat(string format, T0 arg0); public StringBuilder AppendFormat(string format, T0 arg0, T1 arg1); public StringBuilder AppendFormat(string format, T0 arg0, T1 arg1, T2 arg2); public StringBuilder AppendFormat(IFormatProvider provider, string format, T0 arg0); public StringBuilder AppendFormat(IFormatProvider provider, string format, T0 arg0, T1 arg1); public StringBuilder AppendFormat(IFormatProvider provider, string format, T0 arg0, T1 arg1, T2 arg2); // Existing methods public StringBuilder AppendFormat(string format, object arg0); public StringBuilder AppendFormat(string format, object arg0, object arg1); public StringBuilder AppendFormat(string format, object arg0, object arg1, object arg2); public StringBuilder AppendFormat(string format, params object[] args); public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0); public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1); public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1, object arg2); public StringBuilder AppendFormat(IFormatProvider provider, string format, params object[] args); ... } } namespace System.Runtime.CompilerServices { public static class FormattableStringFactory { // Proposed methods public static FormattableString Create(string format, T0 argument0); public static FormattableString Create(string format, T0 argument0, T1 argument1); public static FormattableString Create(string format, T0 argument0, T1 argument1, T2 argument2); // Existing method public static FormattableString Create(string format, params object[] arguments); } } ``` I'd be happy to contribute an implementation and tests. " +1533 area-System.IO FileStream constructor should allow bufferSize = 0 to indicate non-buffered stream FileStream.Init will throw ArgumentOutOfRangeException if (bufferSize <-0), IMHO it should allow bufferSize = 0 value, indicating this FileStream object nerver uses buffer on this level, provides more flexibility and control for app developer, current workaround is set bufferSize to 1, which is ugly. +1534 area-System.Collections Should FEATURE_RANDOMIZED_STRING_HASHING be set in corefx For collection types in coreclr, we use randomized string hashing above a threshold. This is guarded with the feature define FEATURE_RANDOMIZED_STRING_HASHING. If we use the same behavior in corefx for types including HashSet and HashTable, we need to port its supporting code. +1538 area-System.Diagnostics Fix the System.Diagnostics.Process tests on OS X Some System.Diagnostics.Process tests are failing on OS X; root cause the failures and fix whatever is breaking +1543 area-System.Reflection Fix decoding of multi-mod types in signatures Address issue #1535 by updating the metadata reader's signature decoder to correctly decode types with multiple modifiers. +1546 area-Serialization Fix security exception with private serialization event methods in DCJS "Fix security exception in the deserialization scenario of type with serialization event method marked as private, such as: ``` csharp [DataContract] public class Data { [OnDeserialized] private void OnDeserialized(StreamingContext context) { } [DataMember] public int Property1 { get; set; } } … string json = ""{\""Property1\"":1}""; DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(Data)); Data obj = s.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json))) as Data; //Crashes ``` Actual behavior: SecurityException: The data contract type 'DataContractInternalRepro.Data' cannot be deserialized because the OnDeserialized method 'OnDeserialized' is not public. Making the method public will fix this error. Expected behavior: no exception This scenario is working in DCS. It looks like the exception in DCJS is thrown at the wrong place. " +1552 area-System.Reflection Merge +1561 area-System.Linq LINQ's Buffer ctor requires Count/CopyTo results be consistent "LINQ's internal Buffer, which is used in operations like ToArray, OrderBy, Reverse, etc., assumes that if the input `IEnumerable` implements `ICollection`, then CopyTo will be guaranteed to copy the number of items returned previously by Count: https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Enumerable.cs#L3087-L3093 ``` C# int count = 0; ICollection collection = source as ICollection; if (collection != null) { count = collection.Count; if (count > 0) { items = new TElement[count]; collection.CopyTo(items, 0); } } else { foreach (TElement item in source) { if (items == null) { items = new TElement[4]; } else if (items.Length == count) { TElement[] newItems = ArrayT.Resize(items, checked(count * 2), count); items = newItems; } items[count] = item; count++; } } ``` This is problematic for any collection that fails this guarantee, e.g. by design the concurrent collections (`ConcurrentQueue`, `ConcurrentDictionary`, etc.) may have their number of elements change between the call to Count and CopyTo if elements were added or removed concurrently. We could address this in the implementation of Buffer by avoiding the use of CopyTo, e.g. ``` C# int count = 4; ICollection collection = source as ICollection; if (collection != null) { int tmpCount = collection.Count; if (tmpCount > 0) count = tmpCount; } foreach (TElement item in source) { if (items == null) { items = new TElement[count]; } else if (items.Length == count) { TElement[] newItems = ArrayT.Resize(items, checked(count * 2), count); items = newItems; } items[count] = item; count++; } ``` This turns Count into an estimate rather than a guarantee, avoiding the problem. However, it has the downside of having a (potentially) less efficient copy mechanism for other `ICollection` implementations, including an `IEnumerator` allocation used in the foreach. That said, it's not clear to me how often we hit the ""fast"" CopyTo path anyway; many collection types have their own ToArray method, so if the LINQ method is being used, it's likely because there are other LINQ operators in the middle, e.g. `collection.Where(...).Select(...).ToArray()`, in which case the optimization will not apply. A few possible options: 1. We say that concurrent collections may not be used concurrently with LINQ operations. Developers may of course already be doing this, and since you can pass concurrent collections around as `IEnumerable`, the developer may not even know they're using concurrent collections but may silently either get corrupted data (e.g. the count drops after allocating the array, leaving default elements at the end of the array) or exceptions (e.g. CopyTo tries to copy more elements than the array can hold). 2. We make the above change, such that we no longer require the Count == CopyTo size guarantee, potentially special casing some known types like `List`, `Collection`, etc. and some known other situations, e.g. IsReadOnly returning true. 3. We special-case the known-problematic cases in the framework, namely the Concurrent\* collections, and do the second option above just for those. We could add a marker interface or something to more easily identify them, which would also allow other collections to opt-out of such things as well. 4. ""something really cool that I don't even know about"" Thoughts? " +1563 area-System.Drawing .NET core should have primitive drawing types Issue: #1363 Based on the analysis done by Experience and Insights, primitive drawing types are commonly used even outside Image processing scenarios. The following types are to be considered: - Point - Rectangle - Size From the discussion, it is clear we need int and float based versions of the primitives, we decided to expose the already existing System.Drawing primitives as is, that is, Point, PointF, Size, SizeF, Rectangle and RectangleF to .NET Core. We are not exposing Color at the moment because we feel the existing Color type in System.Drawing is insufficient as specified in the below conversations. Once the existing types are exposed, we will start a separate discussion on crafting Color primitive for .NET Core. **Contract** System.Drawing.Primitives **API Proposal** ``` csharp namespace System.Drawing { public struct Point { public static readonly Point Empty; public Point(Size sz); public Point(int dw); public Point(int x, int y); public bool IsEmpty { get; } public int X { get; set; } public int Y { get; set; } public static Point Add(Point pt, Size sz); public static Point Ceiling(PointF value); public override bool Equals(object obj); public override int GetHashCode(); public void Offset(Point p); public void Offset(int dx, int dy); public static Point operator +(Point pt, Size sz); public static bool operator ==(Point left, Point right); public static explicit operator Size (Point p); public static implicit operator PointF (Point p); public static bool operator !=(Point left, Point right); public static Point operator -(Point pt, Size sz); public static Point Round(PointF value); public static Point Subtract(Point pt, Size sz); public override string ToString(); public static Point Truncate(PointF value); } public struct PointF { public static readonly PointF Empty; public PointF(float x, float y); public bool IsEmpty { get; } public float X { get; set; } public float Y { get; set; } public static PointF Add(PointF pt, Size sz); public static PointF Add(PointF pt, SizeF sz); public override bool Equals(object obj); public override int GetHashCode(); public static PointF operator +(PointF pt, Size sz); public static PointF operator +(PointF pt, SizeF sz); public static bool operator ==(PointF left, PointF right); public static bool operator !=(PointF left, PointF right); public static PointF operator -(PointF pt, Size sz); public static PointF operator -(PointF pt, SizeF sz); public static PointF Subtract(PointF pt, Size sz); public static PointF Subtract(PointF pt, SizeF sz); public override string ToString(); } public struct Rectangle { public static readonly Rectangle Empty; public Rectangle(Point location, Size size); public Rectangle(int x, int y, int width, int height); public int Bottom { get; } public int Height { get; set; } public bool IsEmpty { get; } public int Left { get; } public Point Location { get; set; } public int Right { get; } public Size Size { get; set; } public int Top { get; } public int Width { get; set; } public int X { get; set; } public int Y { get; set; } public static Rectangle Ceiling(RectangleF value); public bool Contains(Point pt); public bool Contains(Rectangle rect); public bool Contains(int x, int y); public override bool Equals(object obj); public static Rectangle FromLTRB(int left, int top, int right, int bottom); public override int GetHashCode(); public static Rectangle Inflate(Rectangle rect, int x, int y); public void Inflate(Size size); public void Inflate(int width, int height); public void Intersect(Rectangle rect); public static Rectangle Intersect(Rectangle a, Rectangle b); public bool IntersectsWith(Rectangle rect); public void Offset(Point pos); public void Offset(int x, int y); public static bool operator ==(Rectangle left, Rectangle right); public static bool operator !=(Rectangle left, Rectangle right); public static Rectangle Round(RectangleF value); public override string ToString(); public static Rectangle Truncate(RectangleF value); public static Rectangle Union(Rectangle a, Rectangle b); } public struct RectangleF { public static readonly RectangleF Empty; public RectangleF(PointF location, SizeF size); public RectangleF(float x, float y, float width, float height); public float Bottom { get; } public float Height { get; set; } public bool IsEmpty { get; } public float Left { get; } public PointF Location { get; set; } public float Right { get; } public SizeF Size { get; set; } public float Top { get; } public float Width { get; set; } public float X { get; set; } public float Y { get; set; } public bool Contains(PointF pt); public bool Contains(RectangleF rect); public bool Contains(float x, float y); public override bool Equals(object obj); public static RectangleF FromLTRB(float left, float top, float right, float bottom); public override int GetHashCode(); public static RectangleF Inflate(RectangleF rect, float x, float y); public void Inflate(SizeF size); public void Inflate(float x, float y); public void Intersect(RectangleF rect); public static RectangleF Intersect(RectangleF a, RectangleF b); public bool IntersectsWith(RectangleF rect); public void Offset(PointF pos); public void Offset(float x, float y); public static bool operator ==(RectangleF left, RectangleF right); public static implicit operator RectangleF (Rectangle r); public static bool operator !=(RectangleF left, RectangleF right); public override string ToString(); public static RectangleF Union(RectangleF a, RectangleF b); } public struct Size { public static readonly Size Empty; public Size(Point pt); public Size(int width, int height); public int Height { get; set; } public bool IsEmpty { get; } public int Width { get; set; } public static Size Add(Size sz1, Size sz2); public static Size Ceiling(SizeF value); public override bool Equals(object obj); public override int GetHashCode(); public static Size operator +(Size sz1, Size sz2); public static bool operator ==(Size sz1, Size sz2); public static explicit operator Point (Size size); public static implicit operator SizeF (Size p); public static bool operator !=(Size sz1, Size sz2); public static Size operator -(Size sz1, Size sz2); public static Size Round(SizeF value); public static Size Subtract(Size sz1, Size sz2); public override string ToString(); public static Size Truncate(SizeF value); } public struct SizeF { public static readonly SizeF Empty; public SizeF(PointF pt); public SizeF(SizeF size); public SizeF(float width, float height); public float Height { get; set; } public bool IsEmpty { get; } public float Width { get; set; } public static SizeF Add(SizeF sz1, SizeF sz2); public override bool Equals(object obj); public override int GetHashCode(); public static SizeF operator +(SizeF sz1, SizeF sz2); public static bool operator ==(SizeF sz1, SizeF sz2); public static explicit operator PointF (SizeF size); public static bool operator !=(SizeF sz1, SizeF sz2); public static SizeF operator -(SizeF sz1, SizeF sz2); public static SizeF Subtract(SizeF sz1, SizeF sz2); public PointF ToPointF(); public Size ToSize(); public override string ToString(); } } ``` +1565 area-System.Runtime System.String should be consistent with taking StringComparison arguments Every method on `System.String` that compares strings should take a `StringComparison` argument. An example where that's not the case is, `String.Contains`. We should to a holistic pass to make sure we don't miss others. +1571 area-System.IO Add TextWriter.Write(string value, int index, int count) overload TextWriter has an overload for writing a segment of a char array with this Write overload: void Write(char[] buffer, int index, int count) But TextWriter doesn't have an overload for writing a segment of a string, e.g.: void Write(string value, int index, int count) This means that in cases where you have a segment of a string that you want to write you either need to either substring and pass that value to Write(string) or copy the string to a char array and then use the char array segement overload. It would be a new virtual method but the default implementation could simply call the current Write(char[] buffer, int index, int count) overload. The main problem I see with adding Write(string, int, int) is there is a Write(string, object, object) overload that does string formatting that would be hidden. Avoid with different name? Example of having to having to use the Write(char[] buffer, int index, int count) overload where a string overload would simplify code and improve performance: https://github.com/JamesNK/Newtonsoft.Json/blob/6a22345e28006d74c25e353b6235bc5222bab821/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs#L220-L228 +1577 area-System.Net HttpPrefixes So http prefixes ... Its an IIS specific API that makes zero sense when IIS is no longer present. I know this code hasn't come over yet code wise but I figured I would create an issue for it for discussion about what may happen. As an example I want to: Bind to 192.168.1.101 : 1111 Allow an elastic ip with a round robin dns to be used. In mono as example this will cause it to bind *:1111 and allow which is totally not what I wanted, there is no good way in the current api of actually specifying. I can specify 192.168.1.101:1111/ just fine. What happens when I as well specify myroundrobindns:1111/? Do I mean that I want to allow this host header or to bind to this interface? This is where the problem starts.... What if I only specified the myroundrobindns:1111? Then it would make sense to bind all or give me an error (without IIS). But this behaviour makes it impossible to do the above (common use case). There are literally dozens of derpy little gotchas like this (and no good way of working around them) due to how the api is laid out and not wanting to break compatibility with msclr. Whats the plan for CoreFX? Thoughts? Greg +1582 area-Infrastructure XML test libs included in coverage report I looked at the coverage report and noticed that a bunch of XML test libs are included: ![image](https://cloud.githubusercontent.com/assets/1376924/7392228/d392bf42-ee86-11e4-8254-db6d5ee5e20f.png) Those are dragging the overall coverage down and should be excluded from coverage. /cc @krwq +1583 area-System.Runtime Add generic overloads to Math.Min and Math.Max There are overloads of `Math.Min` and `Math.Max` for all the numeric types, but there aren't any for general comparable types (including framework types like `DateTime` and `TimeSpan`). It would be nice to have them. ## Rationale For integral types, `Math.Min` and `Math.Max` are not necessary, e.g. instead of `Math.Min(a, b)`, you can write `a <= b ? a : b`. But they are nice, because they make the meaning clear and decrease the likelihood of error. The same argument applies to general comparable types, so they should work with `Math.Min` and `Math.Max` too. ## Proposed API ``` c# public static class Math { public static T Min(T val1, T val2) where T : IComparable; public static T Min(T val1, T val2, IComparer comparer); public static T Max(T val1, T val2) where T : IComparable; public static T Max(T val1, T val2, IComparer comparer); } ``` ## Open questions - Should the constraint `where T : IComparable` be there? Other framework methods that require comparison, like `Enumerable.OrderBy`, don't have it and instead use `Comparer.Default`. - Should nullable value types be supported? The proposed version doesn't, because `T?` does not implement `IComparable`, even when `T` does implement `IComparable`. +1586 area-System.Net Initial open sourcing of System.Net.Http code. +1591 area-System.Reflection System.Reflection.Metadata.MetadataReader.MetadataReader consistently throws InvalidOperationException in store app I'm able to use System.Reflection.Metadata without any problems in my .NET 4.5.1 desktop app, but I'm unable to successfully use it in a Windows Store app--I consistently see this exception getting thrown: ``` System.InvalidOperationException occurred Message: Exception thrown: 'System.InvalidOperationException' in mscorlib.ni.dll Additional information: The API 'System.Text.Encoding.GetString(Byte*, Int32)' cannot be used on the current platform. See http://go.microsoft.com/fwlink/?LinkId=248273 for more information. ``` ...with this call stack: ``` mscorlib.ni.dll!System.Delegate.CreateDelegateInternal(System.RuntimeType rtType, System.Reflection.RuntimeMethodInfo rtMethod, object firstArgument, System.DelegateBindingFlags flags, ref System.Threading.StackCrawlMark stackMark) Unknown mscorlib.ni.dll!System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(System.Type delegateType, object firstArgument, System.DelegateBindingFlags bindingFlags, ref System.Threading.StackCrawlMark stackMark) Unknown mscorlib.ni.dll!System.Reflection.RuntimeMethodInfo.CreateDelegate(System.Type delegateType, object target) Unknown > System.Reflection.Metadata.dll!System.Reflection.Internal.EncodingHelper.LoadGetStringPlatform() Unknown System.Reflection.Metadata.dll!System.Reflection.Internal.EncodingHelper.EncodingHelper() Unknown [Native to Managed Transition] [Managed to Native Transition] System.Reflection.Metadata.dll!System.Reflection.Internal.EncodingHelper.GetString(System.Text.Encoding encoding, byte* bytes, int byteCount) Unknown System.Reflection.Metadata.dll!System.Reflection.Metadata.MetadataStringDecoder.GetString(byte* bytes, int byteCount) Unknown System.Reflection.Metadata.dll!System.Reflection.Metadata.MetadataReader.ReadMetadataHeader(ref System.Reflection.Metadata.BlobReader memReader) Unknown System.Reflection.Metadata.dll!System.Reflection.Metadata.MetadataReader.MetadataReader(byte* metadata, int length, System.Reflection.Metadata.MetadataReaderOptions options, System.Reflection.Metadata.MetadataStringDecoder utf8Decoder) Unknown System.Reflection.Metadata.dll!System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(System.Reflection.PortableExecutable.PEReader peReader, System.Reflection.Metadata.MetadataReaderOptions options, System.Reflection.Metadata.MetadataStringDecoder utf8Decoder) Unknown ``` I see that the current implementation of `LoadGetStringPlatform` looks for `MemberAccessException`s as indication that some sort of platform-specific fallback is required; could it be that it needs to catch other exception types as well (i.e. `InvalidOperationException`)? +1593 area-System.Xml XPathNodeIterator should implement IEnumerable Currently XPathNodeIterator implements only IEnumerable interface. XPathNodeIterator always iterates over objects of type XPathNavigator and thus every usage ends up with casting back and forth XPathNavigator --> object --> XPathNavigator in a loop. Implementing IEnumerable on this type would allow to avoid this indirection and in cases where iterating is useful improve perf. cc: @tmat EDIT 2017/12/28: In PR: https://github.com/dotnet/corefx/pull/26083 Requested API changes: ```diff namespace System.Xml.XPath { ... - public abstract class XPathNodeIterator : ICloneable, IEnumerable + public abstract class XPathNodeIterator : ICloneable, IEnumerable ... ``` +1595 area-System.Xml Add XmlReader.ResetState to enable pooling (modified copy of internal bug / cc: @tmat) The XmlReader allocates char[] and byte[] buffers in its ParseState. XmlReader created via XmlReader.Create doesn't expose ResetState method that would allow pooling. XmlTextReader does, however the class is legacy and not available on new platforms (in portable profile). Or in simple words: put multiple xml files in one stream and try to parse it without creating multiple XmlReader instances which do a lot of allocations. Simple scenario is reading xml doc comments by Roslyn +1596 area-System.Globalization Randomized Hashing APIs Proposal is to add APIs which expose old hashing methods and the new one (old ones are non randomized). Background: On some platforms default is to use randomized hashing and on some it is non randomized. Exposing APIs allows devs to make it explicit so in case we want to always use randomized hashing for security reasons we can do it or if we want the hashing to be faster we can use non randomized. (Some work might need to be done in dotnet/coreclr) This was already reviewed internally once although here is another iteration. Proposal is to add following APIs ``` csharp //assembly System.Globalization { namespace System.Globalization { public class CompareInfo { public virtual int GetHashCode(string source, CompareOptions options, HashingOption hashingOption); } // enum numbers should be explicit in the final version public enum HashingOption { //Default, ??? NonRandomized, Randomized, } } //} //assembly System.Globalization.Extensions { namespace System.Globalization { public static class GlobalizationExtensions { public static StringComparer GetStringComparer(this CompareInfo compareInfo, CompareOptions options, HashingOption hashingOption); } } //} //assembly System.Runtime.Extensions { namespace System { public abstract class StringComparer : IComparer, IComparer, IEqualityComparer, IEqualityComparer { public static StringComparer OrdinalNonRandomized { get; } public static StringComparer OrdinalIgnoreCaseNonRandomized { get; } public static StringComparer OrdinalRandomized { get; } public static StringComparer OrdinalIgnoreCaseRandomized { get; } } } //} ``` +1597 area-Infrastructure Running CoreFx tests from VS is broken I’m using TestDriven.NET. 1) Right-click on a test method and selecting “Run Test” works well for System.Reflection.Metadata tests. Good. 2) Right-click on a test class or a test file reports an error in output: The target type doesn't contain tests from a known test framework or a 'Main' method. 3) Right-click on a test method and selecting “Test with … Debugger” freezes VS. Test Explorer doesn’t show any tests even after full solution build. Trying to set the test project as a startup project and F5 it. Error: “The working directory does not exist: 'C:\FX0\bin\tests\Windows_NT.AnyCPU.Debug\System.Reflection.Metadata.Tests\dnxcore50'.” Seems like building the entire CoreFx repo fixes this issue (although I’m not quite sure). In any case I don’t want to build the entire repo to run a single test. Couldn’t get F5 work from Dev12 VS, yet the project is Dev12 VS. With Dev14 I was able to debug the test. +1598 area-Meta Improve layout of bin\tests directory Building and running all CoreFx tests creates bin\tests directory with an insane amount of files (14493 files of total size 1.4GB). The problem is that every CoreFx library deploys its own copy of DNX and XUnit (175 files) to its test directory. Instead all tests should be deployed into a single directory with a single copy of DNX. +1603 area-Meta Add inner and outer loop testing explanation to Developer Guide +1605 area-System.Numerics Add Conversions methods to Vector It would be useful to support conversions between different types of Vector. The API and usage model is pretty straightforward for same-size types, e.g. Double and Int64, so I would suggest that we start by exposing that, and consider mixed-size converts as usage demands (we have had customer requests for at least the same-size convert). A possible instance method on Vector might look like this: public Vector ToVectorDouble(); and it would throw arg exception for non-64-bit vectors (or, alternatively, it could be defined as an extension method on the static Vector class for only those instantiations that are supported). I propose the following: - `Vector <=> Vector` - `Vector <=> Vector` - `Vector <=> Vector` - `Vector <=> Vector` +1608 area-System.Numerics Add Gather methods for Vector Vector Gathers are a commonly used paradigm in vector computation - where a gather involves constructing a vector from non-contiguous elements of a source array. Gather is supported on AVX2, but even on targets that do not directly support it, such a method would be useful, in order to avoid the overhead of having to use an array to hold the elements prior to contructing the Vector. VectorGather should perhaps be declared on the static Vector class, something like: `public static Vector VectorGather(T[] source, Vector indexVector) where T,U : struct` Initially, I think it would be reasonable to support only same/size convert and gather – but eventually we may want to consider mixed size (e.g. a gather to a Vector using the lower values of a Vector. AVX2 has a pretty rich mixture of these. @mellinoe what do you think? +1609 area-System.Diagnostics System.Diagnostics.Debug.Tests does not build on Linux System.Diagnostics.Debug.Tests currently fails trying to resolve types against System.Runtime. It is disabled in dir.props. +1611 area-System.Net HttpResponseHeader should have a Cookies property Hello, The HttpResponseHeader class (found at https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Headers/HttpResponseHeaders.cs ) doesn't seem to include a standard and pretty trivial header, the Cookies header. Furthermore, as suggested by http://www.asp.net/web-api/overview/advanced/http-cookies, we should use the HttpResponseHeadersExtensions, found at https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Net.Http.Formatting/HttpResponseHeadersExtensions.cs , however, as you can see in the code (and in the CookieHeaderValue class) - there's no way to configure default values, e.g. HttpOnly or Secured. In a regular ASP.NET website we can set the default values in web.config, but since ASP.NET WebAPI doesn't rely on that, there's no way, even in the WebAPI configuration registering method to set such values. Part from creating my own extension to add cookies with default values, I would suggest adding support for cookies in the HttpResponseHeaders class and having the option to set default values in registration time. Thank you very much. +1612 area-System.Data System.Data.SqlClient.SqlParameter Precision and Scale do not work via the abstract API "Package from dnxcore50 via ``` ""System.Data.SqlClient"": ""4.0.0-beta-*"", ``` This works: ``` SqlParameter p = ... p.Precision = 10; p.Scale = 5; ``` However, if instead we use the abstract base class (like most tools will be): ``` SqlParameter p = ... DbParameter d = p; d.Precision = 10; d.Scale = 5; ``` then all of `p.Precision`, `p.Scale`, `d.Precision`, `d.Scale` **remain at 0**, and consequently do not work correctly. The abstract API's `Scale` and `Precision` (and any other associated members) should mirror the concrete type's equivalent. This code is not in corefx yet, so I cannot fix it :( " +1613 area-System.Data System.Data.SqlClient does not allow enum parameters values (it does in .NET) "Is this an expected break? For example: ``` using (var cmd = connection.CreateCommand()) { cmd.CommandText = ""select @foo""; cmd.Parameters.AddWithValue(""@foo"", AnEnum.B); object value = cmd.ExecuteScalar(); AnEnum val = (AnEnum)value; // cheeky unbox behavior val.IsEqualTo(AnEnum.B); } enum AnEnum { A = 2, B = 1 } ``` In .NET this works fine; in CoreCLR this breaks on the `ExecuteScalar()` call, reporting an `ArgumentException` with text: > No mapping exists from object type AnEnum to a known managed provider native type. " +1616 area-System.Numerics bug: Vector extracting components with a literal leads to incorrect code gen. It appears that if you try to retrieve components of a `Vector` with a constant something wrong is occurring and an incorrect code is generated. This does not happen when extracting to an array, or when you use a variable (like say through a for-loop). This only happens when you extract literal components. Here is a simple reproduction. This happened in VS2015 RC ``` csharp static bool TestLiterals(Vector vl) { var v = vl[0]; var v1 = vl[1]; var v2 = vl[2]; var v3 = vl[3]; return v != 0 || v1 != 0 || v2 != 0 || v3 != 0; } static bool TestLoop(Vector vl) { for(int i=0; i < Vector.Count; i++) { var v = vl[i]; if (v != 0) return true; } return false; } static void Main(string[] args) { var array = new long[4] { 0, 0, 0, 1 }; var vector = new Vector(array); Console.WriteLine(Vector.Count); Console.WriteLine(TestLiterals(vector)); Console.WriteLine(TestLoop(vector)); } ``` On my i5 broadwell chip it printed: ``` 4 False True ``` This is very much the wrong result. The correct answer should be: ``` 4 True True ``` It's pretty easy to see that both methods should yield the same result. Here is the assembly of the `testliteral` And the error becomes obvious. ``` **00007FFB1E086E20 vmovupd ymm0,ymmword ptr [rcx] 00007FFB1E086E25 vmovd rax,xmm0 ** **00007FFB1E086E2A vmovupd ymm0,ymmword ptr [rcx] 00007FFB1E086E2F vmovaps ymm1,ymm0 00007FFB1E086E34 vpsrldq ymm1,ymm1,8 00007FFB1E086E3A vmovd rdx,xmm1 ** 00007FFB1E086E3F vmovupd ymm0,ymmword ptr [rcx] 00007FFB1E086E44 vmovaps ymm1,ymm0 00007FFB1E086E49 vpsrldq ymm1,ymm1,10h 00007FFB1E086E4F vmovd r8,xmm1 00007FFB1E086E54 vmovupd ymm0,ymmword ptr [rcx] 00007FFB1E086E59 vmovaps ymm1,ymm0 00007FFB1E086E5E vpsrldq ymm1,ymm1,18h 00007FFB1E086E64 vmovd rcx,xmm1 00007FFB1E086E69 or rax,rdx 00007FFB1E086E6C or rax,r8 00007FFB1E086E6F test rax,rax 00007FFB1E086E72 jne 00007FFB1E086E7E ``` The input vector is in `ymm0` and it is using `ymm1` as its scratch buffer, first copying and then shifting the register by the offset but is trying to pull the component out of `xmm1`! It appears that the compiler while having some concept of AVX registers, is still confused. +1617 area-System.Numerics Vector should allow variable length based size of available registers. Currently, it seems that `Vector` will always be the size of the largest available register, and has no support for using a smaller register. E.g. if you have AVX2, you currently can only build `Vector` of 256bit. For some algorithms it can be very useful to be able to use either a vector of size 16 or a vector of size 32. +1622 area-Infrastructure Consider open sourcing ApiCompat. Internally we have some tooling to ensure that implementation assemblies are compatible with contracts. It would be a good idea to open source that and use it as part of the build or CI system or something. I'm not sure if this will happen naturally when we actually start generating contracts in the open or if we'll need to take extra steps. +1624 area-System.Net An simple way to mock an httpClient.GetAsync(..) method for unit tests? `System.Net.Http` has now been uploaded to the repo :smile: :tada: :balloon: Whenever I've used this in some service, it works great but makes it hard to unit test => my unit tests don't want to actually ever hit that real end point. Ages ago, I asked @davidfowl what should we do? I hoping I paraphrase and don't misquote him - but he suggested that I need to fake up a message handler (ie. `HttpClientHandler`), wire that up, etc. As such, I ended up making a helper library called [HttpClient.Helpers](https://github.com/PureKrome/HttpClient.Helpers) to help me run my unit tests. So this works ... but it feels _very_ messy and .. complicated. I'm sure I'm not the first person that needs to make sure my unit tests don't do a real call to an external service. Is there an easier way? Like .. can't we just have an `IHttpClient` interface and we can inject that into our service? +1625 area-System.Runtime "[public api] System.Runtime.Environment - OSName(""FreeBSD"") or OSName(""BSD"")" "This issue is to discuss what the final identifier will be within the entire public API surface and what will be the build target identifier that msbuild will use. https://github.com/dotnet/corefx/issues/1576 started the discussion of wether to use `OSName(""FreeBSD"")` vs `OSName(""BSD"")` in the unit tests and is recommended reading before progressing with reading this issue. `FreeBSD` won but it can be easily refactored due to being a non-public contract. The BSD's (FreeBSD/NetBSD/OpenBSD/DragonFlyBSD) unlike Linux all have different kernels so potentially it might be required to split them out as separate platforms. This might be completely unnecessary whereby the additional BSD's may just work as a direct result of the port team's efforts. There are enough differences between the different BSDs that it could be needed to differentiate between them however. We have some time before a decision needs to be cemented in as there is a more pressing issue as mentioned by @stephentoub and registered as issue #1626 > There's what's likely a more pressing issue, which is actually building for FreeBSD. Today, when we need to specialize an assembly for a particular platform, we effectively have three builds, producing three different managed assemblies: Windows, Linux, OSX. Sounds like at least for now we'll need a fourth, FreeBSD. I suggest you start by modifying the build to support an IsFreeBSD property (or just IsBSD of you think there's a high chance that the implementations across BSDs will be the same even with varied kernels) along with the appropriate OSGroup targets. That can then be used in the csproj files as needed to specialize an assembly with FreeBSD-specific code. I feel uneasy about using either `OSName(""FreeBSD"")` (platform fragmentation) or `OSName(""BSD"")` (too generic) with the amount of information available at this point in time but obviously a direction needs to be chosen. @janhenke @josteink (core members of the portteam) have put forward on multiple times that they would prefer `FreeBSD` and I have no strong preferences in any which direction as long as the _future_ implications are considered carefully because this decision affects the public API surface. Ultimately advice, direction and a decision will be needed by MSFT on this matter. note: issue was edited/refactored based on feedback from josenink since original post. " +1626 area-Meta Support for FreeBSD ## Updated proposal from 2017/9 Proposal (by @karelz - https://github.com/dotnet/corefx/issues/1626#issuecomment-329840518) will be updated in top-post based on further discussion and proposal changes. We discussed community-driven port for FreeBSD with @RussellHaley (from FreeBSD community) and @wfurt (from .NET Core team) who both expressed interest in the work. Here's a plan proposal we put together (feedback / suggestions are welcome): 1. Produce binaries in CoreCLR & CoreFX repo targeting FreeBSD - using hacks is fine * Hard to parallelize, @wfurt will work on that * The build can be mix of builds from other platforms (Mac, Linux) targeting FreeBSD * We will need documented steps (on FreeBSD wiki) to reproduce the build with FreeBSD-specific bug fixes 2. Run & stabilize CoreCLR tests (using corerun) * Tests may be built on another platform * Goal: Provides basic quality of runtime 3. Run & stabilize CoreFX tests (using corerun) * Tests may be built on another platform * Note this requires xunit. We believe, based on our past porting experience, once [2] is done, xunit will just work. * This can be in theory parallelized with [2] - it may require shortcutting xunit (e.g. generate static execution recipe on another platform) * We can expose new OSPlatform API for FreeBSD when the pass rate is reasonable: see #23989 4. Full stack build on FreeBSD (using corerun as bootstrapper from [1]-[3]) * We will need all tools (nuget, msbuild, roslyn) to work on boostrapping .NET Core 5. Installers (FreeBSD ports) * First-stage: Using product binaries from nuget feeds * Second-stage: Build product from source (blocked on build from source effort) * Requires FreeBSD community expertise and guidance on design * Note: We can link FreeBSD packages also from official .NET Core download pages as community-support packages 6. Regular build and test runs on FreeBSD * Goal: Make sure changes in .NET Core repos breaking FreeBSD are known early * Design needed * Requires FreeBSD community expertise and guidance on design Operation principles: * Changes in [2]-[4] should be done primarily in CoreCLR/CoreFX repos (due to CLA signing requirements, code reviews from .NET Core team experts/members. etc.) * We will track high-level work on this issue. Specific bugs will be filed as separate issues. If anyone is interested in helping, please let us know here. We can easily distribute work items from [2] & [3] above once we are far enough with [1]. --------------------------------------------- ## Original proposal from @ghuntley from 2015/5 This issue is to discuss unit(s) of work to actually produce FreeBSD assemblies for corefx. > @stephentoub - There's what's likely a more pressing issue, which is actually building for FreeBSD. Today, when we need to specialize an assembly for a particular platform, we effectively have three builds, producing three different managed assemblies: Windows, Linux, OSX. Sounds like at least for now we'll need a fourth, FreeBSD. I suggest you start by modifying the build to support an IsFreeBSD property (or just IsBSD of you think there's a high chance that the implementations across BSDs will be the same even with varied kernels) along with the appropriate OSGroup targets. That can then be used in the csproj files as needed to specialize an assembly with FreeBSD-specific code. Related issue(s) - #1625 (OSGroup identifier in the public API) - #1576 (OSGroup identifier in the private API) /cc: @janhenke @josteink +1633 area-System.Reflection More offsets in MetadataReader I believe MetadataReader should have more APIs which tell me about offsets. I. e.: Let's say I'm writing strong name signer, there are few steps required (assuming that assembly is already delayed signed): - calculate hash, - sign hash, - inject signature to calculate hash you need to skip some parts of the PE file like: - strong name signature blob (including the 8 bytes in the header) - certificates blob (including 8 bytes header) - checksum so I need to have offsets and sizes for each of those. For blobs there are already APIs: i.e.: ``` peReader.PEHeaders.CorHeader.StrongNameSignatureDirectory.Size peReader.PEHeaders.CorHeader.StrongNameSignatureDirectory.RelativeVirtualAddress peReader.PEHeaders.PEHeader.CertificateTableDirectory.Size peReader.PEHeaders.PEHeader.CertificateTableDirectory.RelativeVirtualAddress ``` what is missing is: - checksum offset (and optionally a size) - blob headers for blob headers we can do simple change in System.Reflection.PortableExecutable.DirectoryEntry which is: ``` diff public struct DirectoryEntry { //... + public readonly int HeaderOffset; //... internal DirectoryEntry(ref PEBinaryReader reader) { + HeaderOffset = reader.CurrentOffset; RelativeVirtualAddress = reader.ReadInt32(); Size = reader.ReadInt32(); } //... } ``` For stuff like CheckSum offset we need something like this: ``` diff public sealed class PEHeader { //... + public int BaseOffset; // this might be always 0 so const would be fine too //... + public const int CheckSumOffset; + public const int CheckSumSize; + //etc. for other fields } ``` cc: @nguerrera @tmat What are your thoughts? With good modifications we could probably reuse some of those types when writing MetadataWriter (assuming we are planning to do that) +1635 area-System.Security System.Security.Cryptography.Hashing.Algorithms cannot resolve System.Text.Encoding and System.Threading.Tasks ? "Using beta5 TFMs : dnx451 and dnxcore50 and this is my project.json dependencies: ``` ""dependencies"": { ""BioBook.Data"": ""1.0.0-*"", ""HtmlMinifier.MiddleWare"": ""1.0.0-beta5-1000"", ""Microsoft.AspNet.Authentication"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.Authentication.Cookies"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.Diagnostics"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.Diagnostics.Entity"": ""7.0.0-beta5-*"", ""Microsoft.AspNet.Hosting"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.Identity.EntityFramework"": ""3.0.0-beta5-*"", ""Microsoft.AspNet.Mvc"": ""6.0.0-beta5-*"", ""Microsoft.AspNet.Mvc.TagHelpers"": ""6.0.0-beta5-*"", ""Microsoft.AspNet.Server.IIS"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.Server.WebListener"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.StaticFiles"": ""1.0.0-beta5-*"", ""Microsoft.AspNet.Tooling.Razor"": ""1.0.0-beta5-*"", ""Microsoft.DataAnnotations"": ""1.0.0-beta1-*"", ""Microsoft.Framework.CodeGenerators.Mvc"": ""1.0.0-beta5-*"", ""Microsoft.Framework.ConfigurationModel.Json"": ""1.0.0-beta5-*"", ""Microsoft.Framework.DependencyInjection"": ""1.0.0-beta5-*"" }, ""frameworks"": { ""dnx451"": { ""frameworkAssemblies"": { } }, ""dnxcore50"": { ""dependencies"": { } } }, ``` When building it returns 2 errors ``` Error Dependency System.Text.Encoding >= 4.0.0-beta-22830 could not be resolved Error Dependency System.Threading.Tasks >= 4.0.0-beta-22830 could not be resolved ``` If I remove Microsoft.AspNet.Mvc.TagHelpers, the error goes away. Looking at dnu list --details I found that tag helpers doesn't have a dependency for those packages but System.Security.Cryptography.Hashing.Algorithms looks like it has. (it think that package is not open source yet, because a) can't find it. b) https://github.com/dotnet/corefx/issues/836 ) Also, removing Microsoft.AspNet.Mvc.TagHelpers but adding System.Security.Cryptography.Hashing.Algorithms triggers the same errors. If I explicit add those packages as dependencies the errors goes away like this: ``` ""dependencies"": { ""System.Text.Encoding"": ""4.0.10-beta-22830"", ""System.Threading.Tasks"": ""4.0.10-beta-22830"", ... }, ``` **Note:** I was asked on jabbr.net if I had a Compiler/Preprocess folder with uncommented directives. I do have that folder with one file `RazorPreCompilation.cs` but the code inside that file is commented. Also removing the folder does not fixes the build errors. Not sure what else I can do/look at but if you need anything else just let me know. " +1641 area-Infrastructure corefx fails on Arch Linux: Not registered task DownloadFile "I'm not sure whether corefx is supposed to work on Linux at this point, and I have no clue how to build this anyway. Still running `xbuild` in the top directory produces this. ``` [hritcu@detained corefx]$ xbuild XBuild Engine Version 12.0 Mono, Version 3.12.1.0 Copyright (C) 2005-2013 Various Mono authors Build started 5/6/2015 2:42:54 PM. __________________________________________________ Project ""/home/hritcu/Temp/corefx/build.proj"" (default target(s)): Target _RestoreBuildTools: Restoring build tools... : error : Error initializing task DownloadFile: Not registered task DownloadFile. Build FAILED. Errors: /home/hritcu/Temp/corefx/build.proj (default targets) -> /home/hritcu/Temp/corefx/dir.targets (_RestoreBuildTools target) -> : error : Error initializing task DownloadFile: Not registered task DownloadFile. 0 Warning(s) 1 Error(s) Time Elapsed 00:00:00.0923120 ``` " +1642 area-System.Numerics [BigInteger] Parse test with trailing spaces fails on some cultures ``` System.Numerics.Tests.parseTest.RunParseToStringTests [FAIL] Assert.Throws() Failure Expected: typeof(System.FormatException) Actual: (No exception was thrown) Stack Trace: m:\Workspace\github\corefx\src\System.Runtime.Numerics\tests\BigInteger\parse.cs(408,0): at System.Numerics.Tests.parseTest.VerifyParseToString(String num1, NumberStyles ns, Boolean failureNotExpected, String expected) m:\Workspace\github\corefx\src\System.Runtime.Numerics\tests\BigInteger\parse.cs(380,0): at System.Numerics.Tests.parseTest.VerifyParseToString(String num1, NumberStyles ns, Boolean failureNotExpected) m:\Workspace\github\corefx\src\System.Runtime.Numerics\tests\BigInteger\parse.cs(247,0): at System.Numerics.Tests.parseTest.VerifyNumberStyles(NumberStyles ns, Random random) m:\Workspace\github\corefx\src\System.Runtime.Numerics\tests\BigInteger\parse.cs(33,0): at System.Numerics.Tests.parseTest.RunParseToStringTests() Finished: System.Runtime.Numerics.Tests === TEST EXECUTION SUMMARY === System.Runtime.Numerics.Tests Total: 2, Errors: 0, Failed: 1, Skipped: 0, Time: 20,751s ``` Repro steps: 1. Start->Run (WinKey + R) -> intl.cpl 2. Change format (no need to change locale) to Ukrainian (Ukraine) 3. `build /p:WithCategories=OuterLoop` **Possible solution:** https://github.com/dotnet/corefx/pull/1592#issuecomment-99520215 +1645 area-System.IO Add option on StreamWriter not to emit Byte Order Mark (BOM) Someone posted on CoreClr: https://github.com/dotnet/coreclr/issues/933 a requirement to have StreamWriter to optionally not emit BOM to the stream. A possible solution is to either add a defaulted bool parameter to each/some of the constructors (bool emitBOM = True), or add a new enum e.g. StreamWriterOptions with EmitBOM as one of the enums and again having that enum as a defaulted parameter on each/some of the constructors. There maybe an issue with binary compatibility so it might be better to add a new constructor with the bool/enum.' Comments? +1647 area-System.Text Expose Hex/Char utilities from System.Text.Encoders.Web as public APIs (on some type) See: src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HexUtil.cs +1650 area-System.Security Investigate handle usage in src/common/src/Interop/Windows/secur32/Interop.LSAStructs.cs This issue came up but was not addressed in the initial commit of System.Security.Principal and System.Security.Principal.WIndows. See the constructor in UNICODE_INTPTR_STRING. The comment was regarding whether we need to add DangerousAddRef / DangerousReleasing around DangerousGetHandle. +1652 area-System.Security Address possible race conditions in System.Security.Principal.Windows tests "See src/system.security.principal.Windows/tests/WindowsIdentityTests.cs Initial commit feedback was: ""Could this not be problematic / prone to race conditions if the safe handle gets finalized concurrent with usage of logonToken (no AddRef/Releasing is being done to prevent that)?"" " +1653 area-System.IO Named pipes and array segment Hello. was thinking why the named pipe api doesn't provide the possibility to use array segments as the socket api to be able to use buffer pooling to reduce the impact of pinning for arrays that are not big enough to make it to LOH. is a common technique with socket to avoid possible out of memory exception due to fragmentation. I am having nightmares because a new app we are building is doing a lot of io via named pipes and now OOM exceptions are all over the place. Any plan about this kind of features? +1657 area-System.IO FileSystemWatcher_4000_Tests.FileSystemWatcher_IncludeSubDirectories test failing in CI This test has failed multiple times in the last few days: ``` MESSAGE: Didn't observe a created event within 500ms +++++++++++++++++++ STACK TRACE: at Utility.ExpectEvent(WaitHandle eventOccured, String eventName, Int32 timeout) in d:\j\workspace\dotnet_corefx_windows_release\src\System.IO.FileSystem.Watcher\tests\Utility\Utility.cs:line 94 at FileSystemWatcher_4000_Tests.FileSystemWatcher_IncludeSubDirectories_Directory() in d:\j\workspace\dotnet_corefx_windows_release\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.IncludeSubDirectories.cs:line 67 ``` +1664 area-System.Reflection System.Reflection.Metadata fails to read offset of DataDirectories spanning across multiple sections "If an assembly contains any DataDirectory which is in more than one section we throw ""System.BadImageFormatException : Section too small."". While I agree we should not have any assemblies like that we unfortunately already shipped one which has this issue. I believe we can still calculate the offset without checking ranges (or we can check the global range only) Example can be found here: https://github.com/krwq/corefx/tree/pereaderdatadir This is basically: ``` csharp using (FileStream fs = new FileStream(@""C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.JScript.dll"", FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete)) { using (PEReader reader = new PEReader(fs, PEStreamOptions.LeaveOpen | PEStreamOptions.PrefetchEntireImage | PEStreamOptions.PrefetchMetadata)) { int offset; if (reader.PEHeaders.TryGetDirectoryOffset(reader.PEHeaders.PEHeader.CertificateTableDirectory, out offset)) { } } } ``` " +1665 area-System.Reflection Vague/invalid Strong Name Signing description in ECMA-335 ECMA-335 description of strong name signing (II.6.2.1.3): - To calculate the hash, the signature is zeroed, the hash calculated, and then the result is stored into the signature. - The Strong Name (SN) signing process uses standard hash and cipher algorithms for Strong name signing. An SHA-1 hash over most of the PE file is generated. That hash value is RSA-signed with the SN private key. For verification purposes the public key is stored into the PE file as well as the signed hash value. - Except for the following, all portions of the PE File are hashed: - The Authenticode Signature entry: PE files can be authenticode signed. The authenticode signature is contained in the 8-byte entry at offset 128 of the PE Header Data Directory (“Certificate Table” in §II.25.2.3.3) and the contents of the PE File in the range specified by this directory entry. [Note: In a PE File conforming to this specification, this entry shall be zero. end note] - The Strong Name Blob: The 8-byte entry at offset 32 of the CLI Header (“StrongNameSignature” in §II.25.3.3) and the contents of the hash data contained at this RVA in the PE File. If the 8-byte entry is 0, there is no associated strong name signature. - The PE Header Checksum: The 4-byte entry at offset 64 of the PE Header Windows NT-Specific Fields (“File Checksum” in §II.25.2.3.2). [Note: In a PE File conforming to this specification, this entry shall be zero. end note] What we actually do is (hashing): - In CorHeader/CLI Header set StrongNameSigned flag (value: 8). (I believe this is starting on 12th byte of CLI Header and is UInt32 - do not remove the old flag value just do bitwise OR with value 8) - Set Checksum (4 bytes) to zeros (this is in optional PE header in NT specific fields) - Set Certificate Directory entry (only 8 byte header) to zeros - Calculate hash of PE header from the start until sections headers are finished. Notes: - Continue hashing each section in the order of occurrence in the headers (this will start immediately after section headers and will intentionally skip padding after section headers). Note: - Strong Name Directory - entirely skip from hashing (but do hash its data directory 8 byte header as is) After we get a hash we sign it and store in Strong Name Directory +1683 area-Infrastructure System.Collections.Tests runs against Nuget package not compiled output "Unit tests in System.Collections.Tests.csproj appear to execute against the System.Collections package, and not the compiled output in the bin folder. Any local changes made to System.Collections are not picked up by System.Collections.Tests during compilation at command line (build.bat, msbuild System.Collections.sln) or in Visual Studio. For example, new types are not found by the test project. Compiling in verbose mode shows that the reference to System.Collections.dll is being pulled from the packages folder (packages/System.Collections/4.0.10-beta/...) and not the compiled output of the local build. Chicken and the egg scenario, where compiling the solution for System.Collections depends on it having been successfully compiled (in the MS build lab)! In addition, some of the behavior appears to be intentional. In System.Collections.Tests.csproj, a custom comment was added above the : ""Compile tests against the contract, but copy our local-built implementation for testing"". The behavior makes it impossible to write unit tests for new logic (e.g. in forks) for System.Collection.dll. " +1690 area-Meta Publish document about reference assemblies, contracts, and facades. We are beginning to open source our facades and soon our contracts and so we need to add some documentation for people to better understand how these all work. +1691 area-System.Linq [Compiler Bug] PropertyInfo retrieved from LambdaExpression reports wrong ReflectedType when property is derived from another class This is an old bug: https://connect.microsoft.com/VisualStudio/feedback/details/554853 https://connect.microsoft.com/VisualStudio/feedback/details/607165/propertyinfo-retrieved-from-lambdaexpression-reports-wrong-reflectedtype-when-property-is-derived-from-another-class +1712 area-System.Console Investigate if we still need all the thread jumping machinery in Console's ControlCHandler Console's ControlCHandler tries to queue work the threadpool to actually call the user code which handles the control c event. This was added as part of runtime hardening during the 2.0 days. The original fix for the issue (which introduced this jumping into another thread goo) had this comment: > On 64-bit platforms the ControlC handler is executed on a thread created > outside the runtime with very small stack. Our SO checking now > conservatively checks for space, which leaves insufficient space to > allow an exception to be thrown and caught. > > The change is to launch the user event on a ThreadPool thread instead of > in the ControlC handler thread. Care is taken to ensure that the thread > does not deadlock, even if we fail to successfully begin execution of > the Threadpool thread. @jkotas wonders if this is needed anymore: > Looking at the history, this code was added in Whidbey days where we were trying to harden the runtime against stack overflows by adding probes for large amounts of stack everywhere. We have given up on it since then. Internally we have moved the code to use Tasks instead of the ThreadPool directly (as part of some general work around some internal testing scenarios for .NET Native), but we might just be able to get out of the game completely. +1718 area-System.Reflection Merges changes from master to dev/metadata +1728 area-System.IO Determine whether to change Unix behavior when getting time from a non-existent file On Windows, for back-compat reasons, getting CreationTime (and maybe last access/write time, too) from a non-existent file via FileInfo returns the equivalent of DateTime.FromFileTime(0), rather than throwing an exception. On Unix, we do what's arguably the more expected behavior and throw. We should determine whether we want to change the Unix implementation to match what's there on Windows. +1732 area-System.Reflection Update package revision number to 00003 +1739 area-System.Security Interop\Windows\BCrypt\Cng.cs does not follow the Interop guidelines Cng.cs was ported as-was from closed source into open. It should be broken up into multiple Interop.Method.cs and/or Interop.MethodCollection.cs files, and the SafeHandle types extracted into files of their own right. +1742 area-Infrastructure Coverage report should consider OuterLoop tests I have a reason to believe that coverage report doesn't count OuterLoop tests. When looking at: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_coverage_windows/lastStableBuild/Code_Coverage_Report/ I can see test project (I know it shouldn't be on report): System.Xml.RW.XmlReaderLib has 0% coverage which is impossible as I'm 100% sure some outer-loop only tests projects are including it and run tests from there (and thus test the test project). Also ridiculously low Xml.ReaderWriter coverage seems to be confirming it (I know coverage isn't perfect but I'm pretty sure it is much more than 17%). +1745 area-System.Net URI class throws with Unix file paths "The following is thrown from System.Uri.CreateThis(...) when you are using Unix file paths to construct a URI object. ""System.UriFormatException: Invalid URI: The format of the URI could not be determined."" I know for windows there is special logic to add file:// to the front of the path, and Mono handles the paths correctly, but using CoreCLR non-windows it throws. " +1751 area-System.Net "Overzealous ""URI not absolute"" InvalidOperationExceptions from Uri instance members" "Many of Uri's instance properties throw an InvalidOperationException complaining that the operation is not supported for a relative URI. In some cases, this doesn't really make sense. The best example I can think of is the Uri.HostNameType property. Consider the scenario where one constructs an instance of the Uri class with the path ""www.domain.com"". As expected, this evaluates to a relative path, because the protocol has not been specified. However, absolute or not, one would expect the value of its Uri.HostNameType to be UriHostNameType.Dns. Instead, checking the HostNameType throws an exception. This particular scenario also exhibits an inconsistency with other members of the Uri class. Uri.CheckHostName(string name) is a static method which returns a UriHostNameType value, just the same as the Uri.HostNameType instance property. One could reasonably expect the following two calls to return the same value: var hostType = new Uri(""www.domain.com"", UriKind.RelativeOrAbsolute).HostNameType; var hostType = Uri.CheckHostName(""www.domain.com""); Unfortunately, the first call throws an exception. The second call using CheckHostName, however, returns the expected value: UriHostNameType.Dns. " +1756 area-System.Text Implement generic interfaces on Regex collections Implement `IList`, `IReadOnlyList`, and `IList` on the Regex collections. Fixes #271 +1761 area-Serialization Remove dependency from System.Xml.XmlSerializer on System.Runtime.WindowsRuntime 4.0.10 "I had to workaround an issue in System.Xml.XmlSerializer with the current packages: System.Runtime.WindowsRuntime 4.0.0 has a depedendency on ""windows"" package which doesn't exist. This was caused by our auto-generation task not filtering the winrt reference in the reference assembly's surface area. I've fixed this in a separate change and we can remove the workaround once we have a new set of packages next week. " +1768 area-Serialization XmlSerializer Tests Failing after latest merge from TFS +1774 area-System.Security System.Security.Cryptography.Hashing.Algorithms: HMAC::get_Key behavior differs from desktop on large keys. "Desktop: ``` HMAC hmac = new HMACSHA1(); hmac.Key = new byte[65]; int length = hmac.Key.Length; // 20 ``` CoreFX: ``` HMAC hmac = new HMACSHA1(); hmac.Key = new byte[65]; int length = hmac.Key.Length; // 65 ``` [RFC 2104, section 2](https://tools.ietf.org/html/rfc2104#section-2) says ""Applications that use keys longer than B bytes will first hash the key using H and then use the resultant L byte string as the actual key to HMAC."". In this case, SHA-1's block size (B) is 64, so the key is replaced with H(K). And then hmac.Key should return the H(K) answer, instead of the value which was set. Once this bug is fixed, there should be a test that verifies it. " +1776 area-Infrastructure Test runs are disabled when building on Linux See the skip of RunTestsForProject in https://github.com/dotnet/corefx/blob/master/mono.targets. +1784 area-System.Reflection Assembly.GetExecutingAssembly, AppDomain.CurrentDomain and similar Are there any plans to include the following classes and methods in near future? I am porting my framework (http://github.com/riganti/redwood) to .NET Core and I miss these methods. - Assembly.GetReferencedAssemblies - Assembly.GetExecutingAssembly - Assembly.GetEntryAssembly - Assembly.GetCallingAssembly - Assembly.CreateInstance - Assembly.Load which takes byte array or a stream - AppDomain.CurrentDomain.GetAssemblies - AppDomain.CurrentDomain.AssemblyResolve Or is there another way in the new .NET Core how to list all loaded assemblies, get the assembly of method that is being executed or a calling method etc.? +1786 area-System.Reflection Merge branch 'master' of https://github.com/dotnet/corefx into dev/metadata +1787 area-Infrastructure System.IO.Compression.ZipFile.Tests failing in microbuild of dev/metadata branch Disabling these tests in dev/metadata branch until these issues are resolved. ``` System.IO.Compression.Test.ZipTest.CreateFromDirectoryNormal System.IO.Compression.Test.ZipTest.CreateEntryFromFileTest System.IO.Compression.Test.ZipTest.UpdateReadTwice System.IO.Compression.Test.ZipTest.UpdateAddFile ``` Stack trace is the same for all failures: ``` System.IO.Compression.ZLibException : The underlying compression routine could not be loaded correctly. ---- System.DllNotFoundException : Unable to load DLL 'clrcompression.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.IO.Compression.DeflaterZLib.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.DeflaterZLib..ctor(CompressionLevel compressionLevel) at System.IO.Compression.DeflateStream.CreateDeflater(Nullable`1 compressionLevel) at System.IO.Compression.DeflateStream..ctor(Stream stream, CompressionMode mode, Boolean leaveOpen) at System.IO.Compression.ZipArchiveEntry.GetDataCompressor(Stream backingStream, Boolean leaveBackingStreamOpen, EventHandler onClose) at System.IO.Compression.ZipArchiveEntry.OpenInWriteMode() at System.IO.Compression.ZipArchiveEntry.Open() ``` +1788 area-System.Reflection Disable System.IO.Compression.ZipFile.Tests failing in microbuild of dev/metadata branch +1790 area-Meta .NET Core API inclusion principles doc So, I was responding in #1420 and tried to hunt down some docs here that had a set of principles for what was/should be included in .Net Core. I couldn't find anything in my quick search. Maybe I missed it? Maybe we need to get something better together? /cc @nexussays @nguerrera @blackdwarf +1791 area-Infrastructure GIT fails to sync frequently in internal corefx-dev-metadata-realsigned queue. "``` EXEC: src refspec dev/metadata does not match any. EXEC: failed to push some refs to 'https://github.com/dotnet/corefx.git' corefx-dev-metadata-realsigned\src\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00048\lib\UpdateBuildValues.targets (39): The command ""git push origin dev/metadata"" exited with code 1. ``` " +1793 area-System.IO Please add support for BufferedStream type in .NET Core We have a scenario where we implement our own stream and use the BufferedStream class to add a buffering layer on top of it. +1794 area-System.Net Why does HttpClient dispose HttpContent? Hi. I'm trying to write some tests on our custom protocol over http. So, I passed a fake message handler to client, like this (we don't use C#6 yet, so): ```c# public class CachingRequestsHandler : DelegatingHandler { public CachingRequestsHandler() { this.Requests = new List(); } public List Requests { get; private set; } protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { this.Requests.Add(request); return Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)); } } ``` When in test I'm trying to inspect request's `Content`, I'm getting an `ObjectDisposedException`. As I found `HttpClient` [unconditionally disposes](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/HttpClient.cs#L360) `Content`. I have two questions: - will this behavior change in future to give user some control over Content? - how should I work around this issue, because I want to assert and test all parts of request: headers and content? Is there a fast and easy way to clone `HttpRequestMessage`? +1797 area-System.Diagnostics Implement System.Diagnostics.StackTrace/StackFrame Per discussion in #1420, this issue is to design & implement equivalents for [StackFrame](http://referencesource.microsoft.com/#mscorlib/system/diagnostics/stackframe.cs) and [StackTrace.](http://referencesource.microsoft.com/#mscorlib/system/diagnostics/stacktrace.cs) taking into account any possible API changes that might be necessary to better fit the goals of .NET Core. Implementation discussion may want to reference #1790 +1805 area-System.Reflection Section name in PEReader contains null padding String in section name (i.e. peReader.PEHeaders.SectionHeaders[0].Name) contains null characters. I believe we should remove it, unless it is by design. ECMA description of field: ``` An 8-byte, null-padded ASCII string. There is no terminating null if the string is exactly eight characters long. ``` Here is how we get the value: ``` csharp // reader is PEBinaryReader // _name is string // PEFileConstants.SizeofSectionName = 8 _name = reader.ReadUTF8(PEFileConstants.SizeofSectionName); // impl of ReadUTF8: public string ReadUTF8(int byteCount) { byte[] bytes = ReadBytes(byteCount); return Encoding.UTF8.GetString(bytes, 0, byteCount); } ``` In theory it can also be encoding bug. +1813 area-System.Security Oid.FriendlyName gives different answers on Unix and Windows "``` new Oid(""1.2.840.113549.1.1.1"").FriendlyName ``` Windows: `""RSA""` Unix: `""rsaEncryption""` The tests for `FriendlyName` may encounter some errors when they get ported and CI tries to evaluate them. Or maybe there will be a sufficient core of sameness to allow the tests to keep running. " +1815 area-System.Reflection PEReader throws on an empty PE image +1820 area-System.Security Interop\Windows\Crypt32\OidInfo.cs does not follow the Interop guidelines OidInfo.cs was ported as-was from closed source into open. It should be broken up into multiple Interop.Method.cs and/or Interop.MethodCollection.cs files. If it is already a reasonable MethodCollection set, it still needs the type/namespace names adjusted, and the file to be renamed. +1821 area-System.Reflection Merge branch 'master' +1825 area-System.Net HttpClient ReadAsync waits for whole buffer to fill up even if HttpCompletionOption.ResponseHeadersRead is set Hi, I've prepared a simple project to demonstrate my issue: https://github.com/ppekrol/ReadAsyncIssue Steps to reproduce: 1. Run web (ReadAsyncIssue), can be under DNX451 or DNXCORE50, no difference 2. Run console app: a) when DNX451 is used, ReadAsync returns immediately (read length = 100) b) when DNXCORE50 is used, ReadAsync waits for buffer to fill (8192) I think this is a bug. +1831 area-Serialization Two XML Tests failing due to new PlatformNotSupportedException fc5506a2 introduced a platform not supported exception in a few APIs so the behavior could align with .NET Native. This is causing a few failing tests. +1832 area-System.Reflection Use immutable collections 1.1.36 in metadata +1836 area-System.Linq System.Linq.Parallel Exceptions not consistent The exceptions thrown (or wrapped) by PLINQ aren't consistent. Enumerables throwing an exception during `GetEnumerator()` will expose the original exception, and won't wrap it in `AggregateException` (which at least a naïve reading of the documentation suggests it should), for everything but the following 'output' methods: - `Average` - `Count` - `LongCount` - `Max` - `Min` - `Sum` ... and `SequenceEqual`, but only when some other method is called first (eg, `new FailingEnumerable.AsParallel().Select(x => x).SequenceEquals(b)`). If the enumerator itself throws an exception (from `MoveNext()` or `Current`), and additional PLINQ method is called first: 1. `SequenceEqual` throws nested `AggregateException`s 2. The following 'output' methods throw the original exception, and will not wrap it in an `AggregateException`: - `Aggregate(seed, accumulator)` - `Aggregate(seed, accumulator, resultSelector)` - `foreach(...)` - `ToArray` - `ToDictionary` - `ToList` This is, at minimum, a 'gotcha' waiting to trip somebody up. How should we handle it? Interestingly, `SequenceEqual` has: > // If first.GetEnumerator throws an exception, we don't want to wrap it with an AggregateException. > // If second.GetEnumerator throws an exception, we don't want to wrap it with an AggregateException. ... which I have a feeling was to deal with the case where an inner operator threw something already wrapped (to not nest it), but ended up missing the other cases.
I've got a [Gist](https://gist.github.com/Clockwork-Muse/c10553dbce3de937aecd) of the tests I'm using to find this info, although I wasn't planning on adding them to the PLINQ tests in this form. Especially because some stuff has been ad-hoc tweaked to be able to find the info better +1838 area-System.Diagnostics Provide way to send Control+C to proccess Currently .NET doesn't have way to exit nicely from created console process. It would be nice if we had a such a method. ``` csharp namespace System.Diagnostics { public class Process { public void SendCtrlCSignal() { ... } } } ``` It can be implemented following way on Windows: http://stackoverflow.com/a/15281070/61505 , for unix we can call `kill (pid, SIGINT);` http://stackoverflow.com/a/1761182/61505 It provide a lot of problems for other users too http://stanislavs.org/stopping-command-line-applications-programatically-with-ctrl-c-events-from-net/ +1839 area-System.Reflection Merge master and use immutable collections 1.1.36 in metadata +1840 area-System.IO System.IO.Pipes.Tests fail with EntryPointNotFoundException on Win10 I have disabled the following tests in dev/metadata branch until they are fixed. ``` AnonymousPipesSimpleTest.ClientPInvokeChecks [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'GetNamedPipeHandleStateW' in DLL 'api-ms-win-core-namedpipe-l1-2-1.dll'. Stack Trace: at Interop.mincore.GetNamedPipeHandleState(SafePipeHandle hNamedPipe, Int32& lpState, IntPtr lpCurInstances, IntPtr lpMaxCollectionCount, IntPtr lpCollectDataTimeout, IntPtr lpUserName, Int32 nMaxUserNameSize) C:\FX0\src\System.IO.Pipes\src\System\IO\Pipes\PipeStream.Windows.cs(983,0): at System.IO.Pipes.PipeStream.UpdateReadMode() C:\FX0\src\System.IO.Pipes\src\System\IO\Pipes\PipeStream.Windows.cs(236,0): at System.IO.Pipes.PipeStream.get_ReadMode() C:\FX0\src\System.IO.Pipes\tests\AnonymousPipesSimpleTest.cs(221,0): at AnonymousPipesSimpleTest.ClientPInvokeChecks() NamedPipesSimpleTest.ClientServerMessages [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'GetNamedPipeHandleStateW' in DLL 'api-ms-win-core-namedpipe-l1-2-1.dll'. Stack Trace: at Interop.mincore.GetNamedPipeHandleState(SafePipeHandle hNamedPipe, IntPtr lpState, IntPtr lpCurInstances, IntPtr lpMaxCollectionCount, IntPtr lpCollectDataTimeout, StringBuilder lpUserName, Int32 nMaxUserNameSize) C:\FX0\src\System.IO.Pipes\src\System\IO\Pipes\NamedPipeServerStream.Windows.cs(149,0): at System.IO.Pipes.NamedPipeServerStream.GetImpersonationUserName() C:\FX0\src\System.IO.Pipes\tests\NamedPipesSimpleTest.cs(389,0): at NamedPipesSimpleTest.ClientServerMessages() Finished: System.IO.Pipes.Tests ``` +1843 area-Serialization Workaround for perf issue with the new jit pointer dereference in serialization With the new jit, the *chars deference is done twice which is more costly compared to legacy jit +1844 area-System.Net Support System.Net.Security.NegotiateStream Add support for NegotiateStream that exists in the full .NET Framework. This involves either creating a new library or a newer version of an existing one. As a minimum it should support the same client API surface as the full .NET Framework. This is required for WCF to complete its NetTcpBinding implementation. +1849 area-System.IO Unix: Why not use Unix Domain Sockets for Named Pipes? System.IO.Pipes map to native windows implementations of anonymous and named pipes. Windows anonymous are close in implementation to Unix pipes in that they are one way and byte oriented (not datagram or message oriented). On the other hand, Named pipes can be either full (supporting I/O in both directions) or half (I/O in one direction) and messages can either be byte oriented or message/datagram oriented. Pipe connections can also be made across systems through the network (I believe using SMB) Unix has named pipes called FiFo's but they are one way only and not message oriented. The current Pipes port for corefx under unix uses FIfo's and therefore is a subset implementation. Instead of using Fifo's why don't we use Unix Domain Sockets? They support most of the functionality of windows named pipes including full/half duplex, byte or message oriented. They however don't support cross system connections. see overview of Unix Domain Sockets here: http://www.thomasstover.com/uds.html Ultimately, what is the goal of the corefx library on a different platform? To bind to existing similar functionality? or to provide strict portability of the api's across platforms (what I'm calling emulation)? If we strictly bind, then there will always be limitations and differences on functionality provided thus decreasing portability. However by binding, we are hooking into existing OS capabilities and can in theory hook up to other non-net apps on the host platform. If we strictly emulate (e.g. say grab a chunk of shared memory and then using semaphores to strictly emulate named pipes functionality under Unix), then we can be extremely portable however we can't communicate with anything else. A possible solution is to extend what can be used as a 'pipe name' in the system.io.pipes implementation where the syntax can be extended to give hints as to what to bind to in the underlying implementation but with the default (without any extended syntax) defaulting to an emulated functional solution. Comments? +1854 area-System.Net "SslStream.AuthenticateAsClientAsync() fails with ""The buffers supplied to a function was too small""" From time to time I receive this error message. ``` System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> System.ComponentModel.Win32Exception: The buffers supplied to a function was too small --- End of inner exception stack trace --- at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at MailKit.Net.Imap.ImapClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) at MailKit.MailService.<>c__DisplayClass3.b__2() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at DownloadAndUpdatePrices.Email.EmailService.d__0.MoveNext() in d:\ProjectIS-3\WebProjectAutosouz\DownloadAndUpdatePrices\DownloadAndUpdatePrices\Email\EmailService.cs:line 35 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at DownloadAndUpdatePrices.BLL.DownloadService.d__0.MoveNext() in d:\ProjectIS-3\WebProjectAutosouz\DownloadAndUpdatePrices\DownloadAndUpdatePrices\BLL\DownloadService.cs:line 22 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at DownloadAndUpdatePrices.Program.d__d.MoveNext() in d:\ProjectIS-3\WebProjectAutosouz\DownloadAndUpdatePrices\DownloadAndUpdatePrices\Program.cs:line 48 ``` https://github.com/jstedfast/MailKit/issues/197 +1855 area-System.Reflection dotNET +1861 area-Infrastructure Linux tests fail in CI due to mscorlib.ni.dll existing. Linux test runs in CI have been failing (silently) for a while with execute assembly errors. This started around here: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst/264/ Which had these changes: Update to latest CoreFx packages (commit: 08c0d8628ef621fbd44d7aaa85b3239616a6b108) Move DNU/Roslyn forward (commit: 804b4330a6ae767694cf89ebd173533b539f16f5) The problem looks to be due to the fact that we are now copying mscorlib.ni.dll into the test folder. This is not a Linux native image so things blow up when we try to load and run it. To unblock things, I am adding some logic to run-tests.sh to just delete the native images, but that's not the right long term thing (especially with crossgen support coming real soon now). We need to stop this incorrect native image from being deployed, and eventually deploy the right one. This issue tracks doing the right thing. Once fixed, we should remove the code in run-test.sh that's tagged with this issue number. +1863 area-System.Security Some OID tests failing Cross Platform These tests are failing in CI (which we previously were not catching because no tests were running) System.Security.Cryptography.Encoding.Tests.OidTests.TestFromFriendlyName [FAIL] System.Security.Cryptography.Encoding.Tests.OidTests.TestFromOidValue [FAIL] System.Security.Cryptography.Encoding.Tests.OidTests.TestKnownValues [FAIL] +1866 area-System.Net DNS protocol support enhancement: MX and SRV records Hi, Is there any plan to support MX or SRV DNS field in corefx ? Thank you. Bhaal22 +1874 area-System.Diagnostics System.Diagnostics.ProcessTests.ProcessTest.Process_AsyncHalfCharacterAtATime test sometimes fails ``` System.Diagnostics.ProcessTests.ProcessTest.Process_AsyncHalfCharacterAtATime [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: E:\oss\corefx\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests\Process_StreamTests.cs(131,0): at System.Diagnostics.ProcessTests.ProcessTest.Process_AsyncHalfCharacterAtATime() ``` +1877 area-System.Linq [System.Linq.Expressions] Allow Switch with empty cases list Now we can not create an expression, that represents this code: ``` cs switch(x) { default: return 0; } ``` But c# allows this and this is can be very helpful - users do not needs a checks and brunches in own code. Problem with a next line: https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/SwitchExpression.cs#L205 I have asked this question on StackOverflow a few months ago: http://stackoverflow.com/questions/28360782/switch-without-cases-but-with-default-in-system-linq-expressions Why this is not allowed? Can we change it? +1880 area-System.IO Add event buffering to Windows FileSystemWatcher to avoid InternalBufferOverflowExceptions "Consumers should not have to worry about internals like the Windows FileSystemWatcher (FSW) trying to minimize usage of precious non-paged memory resulting in InternalBufferOverflowExceptions. By default the FSW should buffer events in ""normal"" memory. This could easily be implemented using a BlockingCollection. FSW could be configurable to use the old behaviour only. For details and and a implementation sample see my post: https://petermeinl.wordpress.com/2015/05/18/tamed-filesystemwatcher/ Average programmers (for which we should make life as easy as reasonable) often are often not even aware of having to implement an OnError event handler resulting in InternalBufferOverflowExceptions going unnoticed and FSW being perceived as unreliable. " +1883 area-System.Numerics Buffer too small in BigIntegerCalculator.Divide We are seeing some memory corruption after a recent change to biginteger.divide. This is what I got from an engineer investigating the issue: I was able to repro this bug and find its cause. The bug is in System.Runtime.Numerics.dll, introduced by change #1476305 on 5/23. There is an array overflow in unsafe C# code that does division of BigInteger, in System.Numerics.BigIntegerCalculator.Divide(UInt32_, Int32, UInt32_, Int32, UInt32_, Int32, UInt32_, Int32) in FxCore/Open/src/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.DivRem.cs. This method allocates a few arrays: ``` fixed (uint* dividend = new uint[dividendLength], divisor = new uint[divisorLength], guess = new uint[divisorLength]) ``` The guess array is used as the destination of a multiplication: MultiplyDivisor(divisor, divisorLength, digit, guess); This multiplies an array of length divisorLength with an uint. The result length is divisorLength+1, longer than the memory allocated for guess. This overwrites the sync block of the next item in memory, causing asserts later on. Increasing the allocation of guess by 1 should fix this bug. +1891 area-Meta What are the rules on adding new APIs to CoreFX? I saw this: https://github.com/dotnet/corefx/issues/1017#issuecomment-107752252. > To expose the RuntimeEnvironment class, it requires updation to the desktop api, which will not come to effect until next desktop release. Hence, the portable version cannot be released, before the desktop 4.6.1 is released, to ensure this contract works on all platforms, which is the same problem we had with PlatformID, we want to decouple ourselves from desktop dependencies and be more quick with releases. What are the rules that are proposed for updating .NET Core? There are at least a few scenarios: - Adding new members on a type that exists in the .NET Framework. - Adding new types that represent a similar concept that exists in the .NET Framework - Adding new types (new concepts) that do not exist in the .NET Framework. Ideally, we could update .NET Core at the pace we want. Is the issue that we might add one new member to a type that is represented in contract foo and doing so would make contract foo incompatible with .NET Framework vLatest? /cc @Priya91, @terrajobst, @davidfowl +1894 area-System.Net The message or signature supplied for verification has been altered "Hello. I'm using [MailKit](https://github.com/jstedfast/MailKit) And have simple code: ``` c# public static async Task DownloadFileAsync(EmailModel emailModel, bool notSetFlagSeen) { var result = new DownloadResult(); if (emailModel != null) { using (var client = new ImapClient()) { await client.ConnectAsync(emailModel.Host, emailModel.Port, emailModel.Secure); // Note: since we don't have an OAuth2 token, disable // the XOAUTH2 authentication mechanism. client.AuthenticationMechanisms.Remove(""XOAUTH""); await client.AuthenticateAsync(emailModel.UserName, emailModel.Password); ................................... ``` From time to time I receive this error message. Stack trace: ``` System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> System.ComponentModel.Win32Exception: The message or signature supplied for verification has been altered --- End of inner exception stack trace --- at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at MailKit.Net.Imap.ImapClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) at MailKit.MailService.<>c__DisplayClass3.b__2() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at DownloadAndUpdatePrices.Email.EmailService.d__0.MoveNext() in d:\ProjectIS-3\WebProjectAutosouz\DownloadAndUpdatePrices\DownloadAndUpdatePrices\Email\EmailService.cs:line 35 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at DownloadAndUpdatePrices.BLL.DownloadService.d__0.MoveNext() in d:\ProjectIS-3\WebProjectAutosouz\DownloadAndUpdatePrices\DownloadAndUpdatePrices\BLL\DownloadService.cs:line 22 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at DownloadAndUpdatePrices.Program.d__f.MoveNext() in d:\ProjectIS-3\WebProjectAutosouz\DownloadAndUpdatePrices\DownloadAndUpdatePrices\Program.cs:line 49 ``` " +1896 area-System.Diagnostics Process_MainModule failed in CI (returned different module than expected) http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/1532/console ``` System.Diagnostics.ProcessTests.ProcessTest.Process_MainModule [FAIL] Assert.Equal() Failure  (pos 0) Expected: corerun Actual: ntdll  (pos 0) Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests\ProcessTest.cs(239,0): at System.Diagnostics.ProcessTests.ProcessTest.Process_MainModule() ``` +1899 area-System.Xml xmldocument load error "I am using nuget pacakge System.Xml.XmlDocument 4.0.0-beta-22819 and when I tried to load xml, I am getting the error `System.Xml.XmlException: Root element is missing.` for every valid xml file. Code ``` TextReader textReader = File.OpenText(@""xml\document.xml""); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; settings.DtdProcessing = DtdProcessing.Ignore; XmlDocument doc = new XmlDocument(); // doc.LoadXml(textReader.ReadToEnd()); using (StringReader sr = new StringReader(textReader.ReadToEnd())) using (XmlReader reader = XmlReader.Create(sr, settings)) { doc.Load(reader); } ``` XML files ``` University of XML Department of XML parsing George Washington Abraham Lincoln Bill J. Clinton George W. Bush Barack H. Obama Song Li ``` and another xml file ``` test test2 test3 ``` " +1900 area-System.Text Make sure object initialization in System.Text.Encodings.Web is synchronized See comments in https://github.com/dotnet/corefx/pull/1889 +1903 area-System.Runtime "[Suggestion] Add ""Time-based"" Class to enhance the ""WeakReference""" "Hello all: In asp.net we have Cache, this can be automatically set ""timeout"" and release its memory by setting dependency such as ""Timespan"", ""file""..... However in other situations we don't have such functions yet. It would be better if we have such a ""Time-based"" class, and it will automatically release many ""short-period-timed"" variable, something like WeakReferece (However, WeakReference doesn't have a time-based foundation yet, and we cannot control how long it will be released). In my mind, this can be designed something like this following: ``` public sealed class TimeBasedValue :IDisposable where T:class { //An absolute time that bombs up the value public TimeBasedValue (T value, DateTime span){……} // Absolute/Relative time for bombing up the value public TimeBasedValue (T value, int timePeriod, Mode mode, Unit unit) {……} //When time is overdue, this value must be null public T Value{get;} //""Mode"" is an enum that shows how the time period is calculated: Absolute, Relative to the last access.... public Mode TimeMode{get;} // Hour, Minute, Second or Millsecond? public Unit Unit{get;} //This will be called once the time is overdue, and it will first check whether the Value has implemented ""IDisposable"" or not, if yes, call it first. However no matter what happens, the Value should be set to null public void Dispose() { var value = Value; IDisposable idisp = value as IDisposable ; try { if(idisp!=null) { idisp.Dispose(); } } finally { idisp = null; } } } ``` " +1904 area-System.IO zip_InvalidParametersAndStrangeFiles.StrangeFiles4 disabled on Unix "I'm disabling the System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles.StrangeFiles4 test on Unix as it fails once we fix the Path.AltDirectorySeparatorChar to be '/' instead of '\' ('\' isn't a valid directory separator char on Unix). The problem stems from an assert in ZipTestHelpers: ``` C# Assert.Equal(file.Name, entry.Name); ``` This particular ""strange"" zip file (dataDescriptor.zip) contains an entry named ""notempty\second.txt"", and the assert is expecting the entry.Name to be ""second.txt"", but when '\' isn't a separator character, the entry.Name (which just returns Path.GetFileName(...)) is coming back as ""notempty\second.txt"". This is after all a ""strange"" zip file, so I don't know whether this is a product issue or a test issue. " +1914 area-System.Reflection Build more specific test verification methods for System.Reflection.Emit.ILGeneration constructor verification tests In CustomAttributeBuilderCtor1.PosTest1() ``` csharp CustomAttributeBuilder cab = new CustomAttributeBuilder( typeof(ObsoleteAttribute).GetConstructor(ctorParams), paramValues); Assert.NotNull(cab); ``` Instead of simpe Assert.NotNull, check for configuration of cab from the ctor. +1917 area-Serialization Fix XmlSerializer issue when deserializing type with protected parameterless constructor When deserialize types with non-public default constructor, generated code from XmlSerializer throws missing method exception because no constructor is available for Activator.CreateInstance. This is affecting debugging scenario for some apps. This is to port the change we did in NetNative. +1930 area-System.Net Regression in redirection functionality of System.Net.Http.HttpClient "@davidsh , I found this regression when trying to integrating `HttpClient` into `dnu restore` Here is a simple repro: ``` public class Program { public void Main(string[] args) { Task.Run(async () => { var client = new HttpClient(); //var request = new HttpRequestMessage(HttpMethod.Get, ""http://www.bing.com""); // Works var request = new HttpRequestMessage(HttpMethod.Get, ""http://bing.com""); // Throws exception using (var response = await client.SendAsync(request)) { Console.WriteLine(await response.Content.ReadAsStringAsync()); } }).Wait(); } } ``` The exception thrown: ``` System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The requested header was not found at System.Net.Http.WinHttpHandler.WinHttpStatusCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 stat usInformationLength) --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at ConsoleApp8.Program.<>c.<
b__0_0>d.MoveNext() in C:\AspNet\VS2015Projects\ConsoleApp8\src\ConsoleApp8\Program.cs:line 19 System.Net.Http.WinHttpException: The requested header was not found at System.Net.Http.WinHttpHandler.WinHttpStatusCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 stat usInformationLength) ``` " +1931 area-Serialization Add support for data contract surrogate type aliasing +1936 area-System.Net System.System.Net.Http.FormUrlEncodedContent(...) can't handle very long parameters/values "FormUrlEncodedContent(IEnumerable>) [uses](https://github.com/dotnet/corefx/blob/5f3cf426df9d41e629a02ee6d8fb32089e35227b/src/System.Net.Http/src/System/Net/FormUrlEncodedContent.cs#L40) Uri.EscapeDataString which internally uses [UriHelper.EscapeString](https://github.com/dotnet/corefx/blob/f969471a5719e901e9147928c9a71ea17d6d7862/src/System.Private.Uri/src/System/UriHelper.cs#L128) which [can't handle](https://github.com/dotnet/corefx/blob/f969471a5719e901e9147928c9a71ea17d6d7862/src/System.Private.Uri/src/System/UriHelper.cs#L131) strings longer than 65520 characters. ``` C# var uc1 = new FormUrlEncodedContent( new Dictionary { {""test"", new string('F', 65520)} } );//works fine var uc = new FormUrlEncodedContent( new Dictionary { {""test"", new string('F', 65521)} } ); //exception ``` " +1942 area-System.Collections Proposal: Dictionary.TryAdd(TKey, TValue) It's very common to see code that does this: ``` C# Dictionary data = ...; ... if (!data.ContainsKey(key)) data.Add(key, value); ``` This forces the dictionary to lookup the key twice when the key isn't yet in the dictionary. It'd be great if we had an additional method on the type: ``` C# public bool TryAdd(TKey key, TValue value); ``` Functionally it would behave exactly as if it were implemented like: ``` C# public bool TryAdd(TKey key, TValue value) { if (ContainsKey(key)) return false; Add(key, value); return true; } ``` but the implementation internally would be done more efficiently, essentially implemented by calling a variant of Insert but that returns false instead of throwing when a duplicate key is found. +1961 area-System.Text Review all remaining samness tests in System.Text.Encodings.Web.Tests There are some tests in the suite that Assert.Same. These need to be reviewed and either removed or we need to ensure the code is synchronizing properly and the tests will not fail. +1963 area-System.Security Add EVP_CIPHER_CTX_new to System.Security.Cryptography.Native Interop.EVP.Cipher.cs: ``` // This was computed by sizeof(EVP_CIPHER_CTX) on a 64-bit Ubuntu // machine running OpenSSL 1.0.1f. If we end up making a native // interop boundary library for OpenSSL then a very good candidate // method would be EVP_CIPHER_CTX_new, so the size can be computed // to match the platform. internal const int EVP_CIPHER_CTX_SIZE = 168; ``` Currently the native library is in dotnet/coreclr; so some mild gymnastics might be required. EVP_CIPHER_CTX_new should allocate the memory and call (OpenSSL) EVP_CIPHER_CTX_init, and have a well-defined free. If gymnastics are required for checking this in, a followup issue to use the new method should be filed. If the native library has moved to dotnet/corefx by the time this is done, then the managed code to consume it should potentially be part of the same change. +1965 area-System.Security AES DecryptorReusabilty.TestDecryptorReusability test is failing on Unix ``` 14:20:43 Finished: System.Security.Cryptography.Encoding.Tests 14:20:43 System.Security.Cryptography.Encryption.Aes.Tests.DecryptorReusabilty.TestDecryptorReusability [FAIL] 14:20:43 Assert.Equal() Failure 14:20:43 Expected: Byte[] [20, 48, 113, 173, 237, ...] 14:20:43 Actual: Byte[] [20, 48, 113, 173, 237, ...] ``` +1967 area-System.Collections [Proposal] IImmutableSet.Union should handle duplicates like ISet.UnionWith The [`ISet.UnionWith`](https://msdn.microsoft.com/en-us/library/dd411713.aspx) method is documented to handle duplicates as follows: > ``` cs > void UnionWith(IEnumerable other) > ``` > > Any duplicate elements in _other_ are ignored. The [`Enumerable.Union`](https://msdn.microsoft.com/en-us/library/vstudio/bb341731.aspx) extension method documents an even stronger condition: > ``` cs > public static IEnumerable Union(this IEnumerable first, IEnumerable second) > ``` > > When the object returned by this method is enumerated, `Union` enumerates _first_ and _second_ in that order and yields each element that has not already been yielded. The `IImmutableSet.Union` method appears to provide the same functionality as the above method, but does not specify the behavior of the result with respect to duplicate elements. In the current implementation of `ImmutableSortedSet`, the `Union` operation behavior varies depending on the relative size of the `this` and `other` sequences. This could be confusing for users expecting the elements of the `this` sequence to take precedence. I propose defining the behavior with respect to duplicates partially (to match `ISet.UnionWith`) or fully (to match `Enumerable.Union`), and updating the implementation of `ImmutableSortedSet` to follow the new behavior. +1973 area-System.Collections Please add interface IReadOnlySet and make HashSet, SortedSet implement it "Since `IReadOnlyList` was added the parity between sets and lists has declined. It would be great to re-establish it. Using it would be an implementation-agnostic way of saying: ""here is this read-only collection where items are unique"". Clearly it's needed by many people: SQL Server: https://msdn.microsoft.com/en-us/library/gg503096.aspx Roslyn: https://github.com/dotnet/roslyn/blob/master/src/Compilers/Core/Portable/InternalUtilities/IReadOnlySet.cs Some Guy In Comments: http://blogs.msdn.com/b/bclteam/archive/2013/03/06/update-to-immutable-collections.aspx " +1975 area-System.Net Fixes issues with the System.Net.Http tests - Tests were not running because the directories were not named properly. - Rename test project to match the correct name. - Fix typo in resource strings. +1985 area-System.Security X509DistinguishedName::Format returns different answers on Windows and Unix The most concrete example is that OID(2.5.4.8) displays in Windows as 'S', but on Unix (OpenSSL) as 'ST'. This is related to https://www.github.com/dotnet/corefx/issues/1813, but a targeted fix for that issue would not fix this, and vice versa. +1991 area-System.IO Improve memory allocations of DeflateStream We use GZipStream to handle the data sent on the wire to a WebAPI with both big and small requests. The allocation stress is more evident with small packages though. On a sample of 60 seconds in an stress test we measured that System.IO.Compression.OutputWindow.ctor() and System.IO.Compression.DefrateStream.ctor() would be consistently in the top 5 allocators. Between the two 1.8Gb in allocations in 60 seconds. The root is that DefrateStream will create on every construction (1 per request) an Infrater (https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression/src/System/IO/Compression/DeflateStream.cs#L62) and the Infrater will also build an OutputWindow (https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression/src/System/IO/Compression/OutputWindow.cs). Which in turn will allocate 32Kb to use as a buffer for each request. Reusing those buffers and/or OutputWindow would aleviate a lot the allocation stress GZipStream causes when used in small streams contexts like Web APIs. +1993 area-System.Security [Feature] Finish X509Certificate support for Unix The current Unix X509 code was to the level that it needed to be to allow presenting an SSL wire cert for verification. This needs to be completed. The functions which currently throw a `NotImplementedException` are ``` Internal.Cryptography.Pal.CertificatePal::CertificatePal.FromFile(string, string, X509KeyStorageFlags) Internal.Cryptography.Pal.CertificatePal::CertificatePal.FromHandle(IntPtr) Internal.Cryptography.Pal.OpenSslX509CertificateReader::OpenSslX509CertificateReader.Archived.set(bool) Internal.Cryptography.Pal.OpenSslX509CertificateReader::OpenSslX509CertificateReader.FriendlyName.set(string) Internal.Cryptography.Pal.OpenSslX509CertificateReader::OpenSslX509CertificateReader.SetPrivateKey(AsymmetricAlgorithm, AsymmetricAlgorithm) Internal.Cryptography.Pal.OpenSslX509ChainProcessor::OpenSslX509ChainProcessor.ChainElements.get() Internal.Cryptography.Pal.OpenSslX509ChainProcessor::OpenSslX509ChainProcessor.ChainStatus.get() Internal.Cryptography.Pal.OpenSslX509ChainProcessor::OpenSslX509ChainProcessor.Verify(X509VerificationFlags, Exception) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.ComputeCapiSha1OfPublicKey(PublicKey) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.DecodePublicKey(Oid, byte[], byte[]) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.DecodeX509BasicConstraintsExtension(byte[], bool, bool, int) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.EncodeX509BasicConstraints2Extension(bool, bool, int) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.EncodeX509EnhancedKeyUsageExtension(OidCollection) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.EncodeX509KeyUsageExtension(X509KeyUsageFlags) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.EncodeX509SubjectKeyIdentifierExtension(byte[]) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.GetCertContentType(byte[]) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.GetCertContentType(string) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.X500DistinguishedNameEncode(string, X500DistinguishedNameFlags) Internal.Cryptography.Pal.OpenSslX509Encoder::OpenSslX509Encoder.X500DistinguishedNameFormat(byte[], bool) Internal.Cryptography.Pal.OpenSslX509StoreProvider::OpenSslX509StoreProvider.Add(ICertificatePal) Internal.Cryptography.Pal.OpenSslX509StoreProvider::OpenSslX509StoreProvider.Export(X509ContentType, string) Internal.Cryptography.Pal.OpenSslX509StoreProvider::OpenSslX509StoreProvider.Remove(ICertificatePal) Internal.Cryptography.Pal.StorePal::StorePal.FromBlob(byte[], string, X509KeyStorageFlags) Internal.Cryptography.Pal.StorePal::StorePal.FromCertificate(ICertificatePal) Internal.Cryptography.Pal.StorePal::StorePal.FromFile(string, string, X509KeyStorageFlags) Internal.Cryptography.Pal.StorePal::StorePal.FromSystemStore(string, StoreLocation, OpenFlags) Internal.Cryptography.Pal.StorePal::StorePal.LinkFromCertificateCollection(X509Certificate2Collection) ``` +1994 area-System.Net System.Net.Http package doesn't target 4.5.x TFMs in latest build "I'm using System.Net.Http-4.0.0-beta-23008 (afaik, the latest) and the TFMs in the package are ""DNXCore50"", ""netcore50"", and ""net46"". `lib/net46` directory in the latest package contains nothing but a `_._` empty file. Should there be a TFM for `dnx451` or similar? " +2003 area-Infrastructure Add option for building corefx in deterministic mode Roslyn will support compiling in [deterministic mode](https://github.com/dotnet/roslyn/issues/372) where same inputs generate same outputs. There should be an option of building corefx in this mode. Note: this depends on the deterministic build feature being implemented in Roslyn, there's nothing actionable for corefx for now, but I wanted to have something to track :) +2008 area-System.Security X509's Helpers::HexToByte needs to signal invalid input "Because HexToByte doesn't signal on invalid input DecodeHexString returns a byte[] for non-hex inputs. So when the FindByInvalidThumbprint test runs (and searches for ""Nothing"") that is the same as searching for `new byte[] { 0xFF, 0xFF, 0xFF, 0xFF }`. A more marginal case would be that ""00FZ00"" becomes `{ 0x00, 0xFF, 0x00 }`, which could cause some interesting wrong matches for things like FindBySerialNumber. As the Find API returns no matches (vs throwing exception) on invalid input, the Decode probably should be redone to TryDecode, giving the helper routines the knowledge that they should just return no match. " +2009 area-System.Security SyncRoot and IsSynchronized on X509 collections should be explicitly implemented (private) I noticed that [`X509ChainElementCollection`](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509ChainElementCollection.cs#L24-L32) and [`X509ExtensionCollection`](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509ExtensionCollection.cs#L28-L36) implement `ICollection`'s `SyncRoot` and `IsSynchronized` properties implicitly (public). These should be explicit (private). I believe this is a compatible change from a subsetting perspective (between desktop and corefx) as this was done on the Regex collections, for example. Other collections in this assembly, like [`X509CertificateCollection`](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509CertificateCollection.cs#L43-L54) already implement these properties explicitly (private). I'd be happy to submit a PR. cc @bartonjs +2011 area-System.IO Several FileSystemWatcher tests are failing on OSX Expected events are not being raised for at least: - FileSystemWatcher_Changed_LastWrite_File - FileSystemWatcher_Changed_LastWrite_Directory - FileSystemWatcher_Created_MoveDirectory A Debug.Assert in FindRenameChangePairedChange is also firing for the MoveDirectory test: +2022 area-System.IO What about adding interfaces to FileInfo and DirectoryInfo? When testing it would be nice to be able to mock the filesystem. Would a PR introducing interfaces be accepted? +2028 area-System.Collections Inconsistent, unexpected bounds check in RemoveRange - `ImmutableArray.RemoveRange` requires 0<=index.RemoveRange` requires 0<=index.Builder.ToImmutable Currently the documentation for `ImmutableList.Builder.ToImmutable()` includes the following remark: > This method is an O(n) operation, and approaches O(1) time as the number of actual mutations to the set since the last call to this method approaches 0. The problem with this statement is the complexity of this operation is only O(1) when the number of mutations is _exactly_ equal to 0. As the number of mutations _approaches_ 0, the complexity is actually approaching O(log n). +2036 area-System.Collections Exposed Immutable Collections APIs should allow `null` comparers Several immutable collections APIs throw an `ArgumentNullException` if a null `IComparer` or `IEqualityComparer` is provided. This is not intuitive, and deviates from a very common pattern established by the .NET framework. All publicly-exposed API methods in this assembly should be updated to ensure the following: 1. If a null value is provided for `IComparer`, `Comparer.Default` should be used instead. 2. If a null value is provided for `IEqualityComparer`, `EqualityComparer.Default` should be used instead. +2046 area-System.IO How to implement System.IO.FileSystem.Watcher on FreeBSD This issue is to discuss how we can implement `System.IO.FileSystem.Watcher` on FreeBSD which does not have inotify: - [ ] Determine/discuss if this be a source of trouble? - [ ] We could stub it out at the moment and throw a PlatformNotsupportedException as suggested in by Stephen - https://github.com/dotnet/corefx/pull/2021#issuecomment-111602342 - [ ] Implement proper solution using kqueue/libev? Any recommendations here are very much welcome. # Reference Material - https://www.freebsd.org/cgi/man.cgi?query=kqueue - http://software.schmorp.de/pkg/libev.html - http://libevent.org/ # Related Issues - https://github.com/dotnet/corefx/issues/1626#issuecomment-111975933 - https://github.com/dotnet/corefx/issues/1626#issuecomment-111975140 +2051 area-System.Reflection [PortablePdb] Local signature in method body, entry point, #Pdb stream Adds local signature token to method body, so that PDB readers have access to them without loading IL stream. Adds a new #Pdb stream to standalone debug metadata that includes sizes of type-system tables referenced by the debug metadata tables. Replaces entry point CDI with an entry in #Pdb stream. +2053 area-Serialization Fix exception message differences when deserializing empty string There is differences in the exception message when deserializing empty string using DataContractSerializer in NetCore/NetNative compared to Desktop. This is due to XmlDictionaryReader uses different kind of XmlReader in one of the CreateTextReader overloads. This PR updates the overload to initialize to the same XmlUtf8TextReader. +2058 area-System.Reflection Merge branch 'master' of https://github.com/dotnet/corefx into dev/metadata +2061 area-System.Reflection [MetadataReader] document format and constrains of -Ptr tables InitializeTableReaders method contains the following code: ``` C# // Compute ref sizes for tables that can have pointer tables int fieldRefSizeSorted = GetReferenceSize(rowCounts, TableIndex.FieldPtr) > SmallIndexSize ? LargeIndexSize : GetReferenceSize(rowCounts, TableIndex.Field); int methodRefSizeSorted = GetReferenceSize(rowCounts, TableIndex.MethodPtr) > SmallIndexSize ? LargeIndexSize : GetReferenceSize(rowCounts, TableIndex.MethodDef); int paramRefSizeSorted = GetReferenceSize(rowCounts, TableIndex.ParamPtr) > SmallIndexSize ? LargeIndexSize : GetReferenceSize(rowCounts, TableIndex.Param); int eventRefSizeSorted = GetReferenceSize(rowCounts, TableIndex.EventPtr) > SmallIndexSize ? LargeIndexSize : GetReferenceSize(rowCounts, TableIndex.Event); int propertyRefSizeSorted = GetReferenceSize(rowCounts, TableIndex.PropertyPtr) > SmallIndexSize ? LargeIndexSize : GetReferenceSize(rowCounts, TableIndex.Property); ``` It's not clear if any of these conditions are ever true. I'd think that the size of XxxPtr table is always the same as the corresponding Xxx table, since the Ptr table is used as an index. It might make sense that XxxPtr table is smaller than the Xxx table. But I don't see how it can have more rows. Do we have tests that cover these? +2064 area-System.Runtime INumber or INumeric interface for base number types I often run into the problem that I want to handle numeric base types in a common way. Unfortunately, they are missing a common interface to express their similarities. Therefore I propose to create an `INumber` or `INumeric` interface on the following numeric base types: - `System.Decimal` - `System.Double` - `System.Single` - `System.Int32` - `System.UInt32` - `System.Int64` - `System.UInt64` This interface should define common functionality, like `+`, `-`, `*`, `/`, etc. +2065 area-System.Data Are DataColumn, DataTable and DescriptionAttribute supported with ASP .Net Core ? I am trying to compile my existing app with ASP .Net Core 5.0. During compilation several error we are getting error like : error CS0246: The type or namespace name 'DescriptionAttribute' could not be found (are you missing a using directive or an assembly reference?) etc. Aren't these supported ? +2069 area-System.Reflection Disable tests failing in internal build Tracked by #1787 +2070 area-System.Diagnostics How to implement System.Diagnostics.Process on FreeBSD? This issue is to discuss how we can implement `System.Diagnostics.Process` on FreeBSD which does not have procfs by enabled by default as [it should be considered deprecated.](http://lists.freebsd.org/pipermail/freebsd-fs/2011-February/010760.html) # Reference Material - [Implement basic System.Diagnostics.Process.Modules support on Linux #2188](https://github.com/dotnet/corefx/pull/2188#issuecomment-116671221) - The System.Diagnostics.Process [specification on MSDN.](https://msdn.microsoft.com/en-us/library/system.diagnostics.process%28v=vs.110%29.aspx) - The [FreeBSD process information implementation within Mono](https://github.com/mono/mono/blob/master/mono/io-layer/processes.c#L1888-L1910) (LGPL) - The [FreeBSD process information implementation within IO.JS](https://github.com/nodejs/io.js/blob/master/deps/uv/src/unix/freebsd.c) (MIT) - https://www.freebsd.org/cgi/man.cgi?procstat and https://www.freebsd.org/cgi/man.cgi?sysctl(3) ``` KERN_PROC Return selected information about specific running processes. For the following names, an array of struct kinfo_proc structures is returned, whose size depends on the current number of such objects in the system. Third level name Fourth level is: KERN_PROC_ALL None KERN_PROC_PID A process ID KERN_PROC_PGRP A process group KERN_PROC_TTY A tty device KERN_PROC_UID A user ID KERN_PROC_RUID A real user ID If the third level name is KERN_PROC_ARGS then the command line argument array is returned in a flattened form, i.e., zero-termi- nated arguments follow each other. The total size of array is returned. It is also possible for a process to set its own process title this way. If the third level name is KERN_PROC_PATHNAME, the path of the process' text file is stored. For KERN_PROC_PATHNAME, a process ID of -1 implies the current process. Third level name Fourth level is: KERN_PROC_ARGS A process ID KERN_PROC_PATHNAME A process ID ``` /cc: @janhenke @saper @jasonwilliams200OK @josteink +2075 area-System.Linq Append/Prepend "## Summary Two of the IEnumerable extension methods that I carry in my collection (we all have a personal collection of IEnumerable extension methods, am I right?) are Append and Prepend, for adding a single element to the end or beginning of a sequence respectively. Though not quite as common as concatenating sequences, I have been surprised at how often this need arises. Doing this inside of an expression today is not straightforward; the best equivalent that I have found is far from ideal: ``` sequence.Concat(Enumerable.Repeat(singleValue, 1)) ``` I propose adding Prepend and Append extension methods to Enumerable to fill this need. ## API ``` public static class Enumerable { public static IEnumerable Append(this IEnumerable source, T value); public static IEnumerable Prepend(this IEnumerable source, T value) } ``` ## Usage ``` optionalValues.Prepend("""") ``` " +2076 area-System.Linq Sorting sequences ## Summary There are two scenarios where the existing Enumerable OrderBy methods are not ideal: - When sorting a sequence of comparable values (e.g. ints). In this case an identify function must be provided as the key selector: `ints.Sort(x => x)` - When sorting on something other than a single key, an identity function must be provided to select the element as the key, AND an instance of IComparer must be provided, which is at odds with the majority of LINQ methods which take functions (and are therefore easier to use with lambda expressions): ``` using NodaTime; using NodaTime.TimeZones; ... IEnumerable tzs = ...; var tzEqComparer = new ZoneEqualityComparer(); tzs = tzs.OrderBy(x => x, Comparer.Create((tz1, tz2) => tzEqComparer.Equals(tz1, tz2) ? 0 : tz1.Id.CompareTo(tz2.Id)); ``` I propose adding various overloads of Sort to address these situations. The name Sort is chosen specifically to distinguish these methods, which do not take a key selector, from the OrderBy methods, which do. If this is not considered an important distinction, the names could be changed to OrderBy without colliding with the existing methods. ## API ``` public static class Enumerable { public static IOrderedEnumerable Sort(this IEnumerable source) where T : IComparable public static IOrderedEnumerable Sort(this IEnumerable source, IComparer comparer) public static IOrderedEnumerable Sort(this IEnumerable source, Comparison comparison) public static IOrderedEnumerable SortDescending(this IEnumerable source) where T : IComparable public static IOrderedEnumerable SortDescending(this IEnumerable source, IComparer comparer) public static IOrderedEnumerable SortDescending(this IEnumerable source, Comparison comparison) public static IOrderedEnumerable ThenSort(this IOrderedEnumerable source) where T : IComparable public static IOrderedEnumerable ThenSort(this IOrderedEnumerable source, IComparer comparer) public static IOrderedEnumerable ThenSort(this IOrderedEnumerable source, Comparison comparison) public static IOrderedEnumerable ThenSortDescending(this IOrderedEnumerable source) where T : IComparable public static IOrderedEnumerable ThenSortDescending(this IOrderedEnumerable source, IComparer comparer) public static IOrderedEnumerable ThenSortDescending(this IOrderedEnumerable source, Comparison comparison) } ``` ## Usage ``` ints.Sort() ``` ``` using NodaTime; using NodaTime.TimeZones; ... IEnumerable tzs = ...; var tzEqComparer = new ZoneEqualityComparer(); tzs = tzs.Sort((tz1, tz2) => tzEqComparer.Equals(tz1, tz2) ? 0 : tz1.Id.CompareTo(tz2.Id)); ``` ## Questions 1. The generic restriction to IComparable is not necessary if the implementation will delegate to OrderBy with an identity function (although there are other potential implementations). However, even if not strictly necessary, it clearly expresses the intent of the method. Is there a downside to keeping it? 2. Overloads that take an IComparer are included for parity with OrderBy. Between the two, I prefer the overload that takes the Comparison, since converting an IComparer into a Comparison is more straightforward than going the other way. However, I am not aware of the rationale behind using IComparer instead of Comparison in the OrderBy methods. We should consider whether the same rationale applies to Sort, or whether it might make sense to remove the IComparer overloads to reduce the API surface. 3. Should the OrderBy methods have overloads added that take Comparison for parity? Or is there something about the usage pattern of selecting a key that makes it less likely that a comparison function will be provided inline? (This is the inverse of question 2). 4. What about Queryable? +2077 area-Serialization Support JSON-LD in DataContractJsonSerializer There is an issue raised by dotnet/wcf#28 requesting support for JSON-LD. If more info is needed, @akuckartz would be a good person to start with, as the original issue-raiser. It would be great to hear from the community if JSON-LD is useful so this work can be prioritized appropriately. Thanks! +2081 area-Serialization Update NetCore DCJS to use the same code with NetNative DCJS DCJS implementation in NetCore at the moment is based on the JavascriptSerializer/Deserializer which is rather different from the ones used in NetNative and on Desktop. This introduces unneccessary effort in making improvement and providing consistent behaviors. This change switches DCJS in NetCore to the same code that is used in NetNative with MERGE_DCJS directive. If there is no issues I will follow to clean up this directive and unused code. @SGuyGe @zhenlan @roncain @shmao +2085 area-Serialization Fix serialization of generic queue to align with NetNative Generic queue is serialized differently in NetCore compared to NetNative since it skips the queue's _syncRoot property of type object. This change is to fix the behavior when serializing property of type object in general. As Serialization of generic queue on desktop is controlled with Serializable, NonSerialized attributes, which are not available in NetCore, this results in a different load compared to desktop. I have verified that cross platform serialization/deserialization works fine. cc: @SGuyGe @zhenlan @shmao +2093 area-System.ComponentModel Can `sealed` modifier be removed from `DisplayAttribute`? I'm redirected here from MVC6 repo (https://github.com/aspnet/Mvc/issues/2706). In MVC6 we are meant to use `DisplayAttribute` to define human readable texts for model's properties. In earlier versions, MVC was using `DisplayNameAttribute` and it could be inherited, so developers were overriding it and customizing texts, messages, labels on the air (like translating or formatting them etc.). Now MVC6 uses .NET's `DisplayAttribute` for this use and it's sealed and unfortunately we are restricted here now. Is it possible to remove the `sealed` modifier from this attribute? So I think the frameworks using this attribute will be more customizable. +2101 area-System.Reflection Add TypeInfo.IsEquivalent(TypeInfo) to CoreFx It is currently not possible to write a library that compares types correctly (considering NoPIA interface unification) and that works on both Desktop CLR and CoreCLR without calling Type.IsEquivalentTo via Reflection on Desktop. +2102 area-System.Text Consider adding StringBuilder.AppendEncoded(Encoding encoding, byte* bytes, int byteCount) In general Encoding APIs don't compose well with other fundamental APIs without allocating temporary blobs/strings in between. +2103 area-System.Globalization How should we handle default data for Globalization tests? "In .NET Core, a large portion of the implementation of our globalization code is built on-top of OS primitives. which we don't control. Globalization data changes frequently and updates to the data can break unit tests. Some examples of changes we've had problems with in the past: 1. Collation data changing across releases and platforms, causing sorting tests to break. 2. Locale data changing (e.g a locale adopts a new currency symbol) causing test breaks. 3. Casing data changes, breaking ToUpper/ToLower tests. 4. Different platforms supporting different version of IDNA. In our internal tests, we've taken a few approaches to solving these problems: 1. Implementing another set of (hopefully lightweight) P/Invokes on-top of OS Functions and using them to generate the expected data at runtime. 2. Disabling specific tests (by hand) on specific platforms or changing the expected data for a specific platform via a runtime test. 3. Encoding metadata about the version of Unicode a platform supports and the version a test requires and skipping tests if they don't match. As I start to open source more of our collation tests, I'm running into problems where we depend on support libraries that implement the OS behavior from (1). It's not clear to me that adopting this is the right long term approach. There's a bunch of platform specific code in these support libraries which will also have to be brought cross platform. The library also contains a fair amount of logic itself. My general preference would be to do something like the following: 1. Use XUnit data driven tests (i.e. `[Theory]`) to write tests that decouple the implementation of the test from the input data. 2. Using `[MemberData]` control the set of inputs that flow to each test based on runtime platform detection. For example, consider something like the following: ``` csharp [Theory] [MemberData(""CompareToData"")] public static void CompareTo(string localeName, string left, string right, int expected, CompareOptions options) { CompareInfo ci = CompareInfo.GetCompareInfo(localeName); int result = ci.Compare(left, right, options); Assert.Equal(expected, Math.Sign(result)); } public static IEnumerable CompareToData { get { yield return new object[] { """", ""Works Everywhere"", ""WORKS EVERYWHERE"", 0, CompareOptions.IgnoreCase }; if (PlatformDetection.IsWindows) { yield return /* ... some set of data that only works on Windows ... */; } } } ``` Will will also need the ability to run certain cases on a specific version of Windows (since behavior changes between versions) or a specific version of ICU. However, I would expect the general shape of the tests would remain the same (`[Theory]`'s + `[MemberData]`'s) and the only thing that would differ would be the filtering we use when deciding if we include a test case in the MemberData. I think there are two downsides with this approach: 1. Bringing a new version of an existing platform online is more expensive. Since we no longer call to the OS to get our oracle data, we will need to investigate test failures to understand if there are product bugs or simply changes in OS algorithms. 2. `[Theory]` is slower than simply having a ton of a `Assert`'s for different cases (or doing a loop) in one `[Fact]`. The major slowdown was in test discovery. As an experiment (and to ease some debugging for some work I was doing), I ported the [NormalizationAll](https://github.com/dotnet/corefx/blob/master/src/System.Globalization.Extensions/tests/Normalization/NormalizationAll.cs) test to use `[Theory]` and the test which used complete very quickly now take about a minute to run (There are 72K test cases, XUnit reports that it took 10.6 seconds to execute the tests (compared to 1.5 when using a loop), but that didn't count the ~50 seconds to discover the tests). It also appears that much of this time is spent even if the tests would not be run (e.g due to `[ActiveIssue]` or `[OuterLoop]`). Ideally this could be fixed, but I am not sure, naively it feels weird that you pay an order of magnitude penalty in test execution because of Theory, but I have not dug into the internals of xUnit. The mitigation here is to not use [Theory] when doing so would generate tons of cases, I guess, and just do a loop ourselves (ideally still over something like a member data API). I'm not sure if these are dealbreakers or not. (2) seems bad, but is a general problem for us adopting Theory for large data-sets, which seems to be a a problem for more than just globalization. I also really hope that we can adopt something like this, since it makes reporting for data driven tests so much nicer. I'm interested in what @stephentoub and @tarekgh think here. Does the pain of OS Data updates make the OS Wrapper library the right approach, even if it brings in a lot of extra code and causes a another large amount of work when we bring up a new platform? Is the fixed data + filtering approach a better long term direction? Do we need both for some reason? " +2106 area-System.Security Proposal: Add Ed25519 and Curve25519 Algorithms to System.Security.Cryptography The System.Security.Cryptography namespace contains several commonly used cryptographic algorithms. I propose the addition of two commonly used algorithms which are currently missing: - **Ed25519** is an implementation of an _Edwards-curve Digital Signature Algorithm_. - **Curve25519** is an algorithm designed to be used with _elliptic curve Diffie-Hellman (ECDH) key exchange algorithm_. Both are based on the same elliptic curve. Many open source projects (e.g. OpenSSH, OpenBSD) seem to prefer this elliptic curve for use in elliptic curve cryptography (ECC). It is therefore beneficial to have these algorithms implemented in CoreFX. The two algorithms should be included in the existing classes in the `System.Security.Cryptography` namespace, but it must be possible to explicitly ask for the usage of these algorithms. +2108 area-Meta Where should ref docs and associated samples be stored? Ideally, they would live in the code repo. Thoughts? For clarity, ref docs augment the metadata and /// comments already available in the repo/builds. Many topics won't have ref topics. @blackdwarf, @danroth27 In reference to #2107 +2109 area-System.Reflection Add System.Reflection.Metadata.Test.Desktop, which targets FX 4.6 and Xunit 1.9.2 This makes it possible to run and debug tests in VS. Caveats: can't use Theory attribute since it's not available in Xunit 1.9.2 +2110 area-System.Reflection TD.NET doesn't work well with shared projects, replacing with manual sharing +2114 area-System.Linq Enumerable.SequenceEqual takes IEqualityComparer rather than a predicate Why does [Enumerable.SequenceEqual](http://msdn.microsoft.com/en-us/library/vstudio/bb342073.aspx) take its comparer as an [IEqualityComparer](http://msdn.microsoft.com/en-us/library/vstudio/ms132151.aspx)? The algorithm seems to make no use of [GetHashCode](http://msdn.microsoft.com/en-us/library/vstudio/ms132155.aspx). Why does it not instead take a `Func` predicate, similar to how [First](http://msdn.microsoft.com/en-us/library/vstudio/bb535050.aspx) takes a `Func`? +2119 area-System.Runtime Make all structs that claim to be thread-safe dereference `this` at most once per entrypoint `ImmutableArray` goes to great lengths to be thread-safe by [never dereferencing `this` more than once per public entrypoint](https://github.com/dotnet/corefx/blob/1dc118cc46f88e4889a23190b450d89e565967fd/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray%601.cs#L18-L33) (to fix bug #191). Other structs in the Framework do _not_ take this care (such as `DateTime`, `Nullable`, or `System.Int32`), despite [claiming to be thread-safe in MSDN documentation](https://msdn.microsoft.com/en-us/library/System.DateTime%28v=vs.110%29.aspx). Should we take the same care for the other structs? The community [has been fascinated](http://stackoverflow.com/questions/30957211/what-advantage-is-there-to-storing-this-in-a-local-variable-in-a-struct-method/30957262) by the pattern in `ImmutableArray` and brought up that it might make sense to spread it around more. +2121 area-System.Reflection Implements fast document name comparison, parsing, and general case-insensitive string comparison +2124 area-Infrastructure We need a way to run tests on different runtime We need a way to choose between different platforms when running tests. Example proposition: ``` build /p:TestProduct=Desktop ``` +2127 area-System.Collections Consider adding KeyValuePair type with a factory method For better or worse KeyValuePair is frequently used structure to represent a pair (mostly due to the lack of struct tuples). It is currently inconvenient to create these pairs as one needs to specify type arguments to the constructor. A simple factory method would make it more succinct since the C# and VB compilers can usually infer the generic arguments: ``` C# public static class KeyValuePair { public static KeyValuePair Create(K key, V value) { return new KeyValuePair(key, value); } } ``` this pattern is already used by ImmutableArray. +2129 area-Serialization Fix Jit assert failure in struct serialization tests due to missing cast This change fixes 3 struct serialization test Jit assert failures due to missing cast in IL generated code. cc: @zhenlan @SGuyGe @shmao +2135 area-Infrastructure Reenable build multithreading once dnx issues are fixed Once dnx concurrency issues are fixed, reenable project multithreading. Currently disabled in CI using /p:SerializeProjects=false. +2139 area-System.Net Merge changes from TFS +2146 area-System.Linq Add commonly required Enumerable methods (DistinctBy, ExceptBy, AsChunked, ...) We have Distinct, Except, Intersect, Union, etc. Often it is required, though, to base the set operation on some key. OrderBy can do that for example. I request that the following methods be added: - DistinctBy (pick the first element deterministically for each key) - ExceptBy (return all items of the first sequence that do not have a matching key in the second) - IntersectBy (return the first item in a.Concat(b) for each unique key where the key appears in both collections) - UnionBy (return the first item in a.Concat(b) for each unique key) - MaxBy/MinBy The set operations need to deal with duplicate keys in a sensible way. I have added to that list my idea for how to do that in sane and well-defined way.
Another commonly required helper method is one that splits a sequence into chunks of a fixed size: ``` static IEnumerable> AsChunked(this IEnumerable sequence, int chunkSize) ``` This is useful for many things, for example: - Split a list into pages - Make AsParallel operate on coarser items by feeding it chunks - If you want to save a huge stream of items to files you can use this to split the sequence into one chunk per file - Request rows from the database in chunks of 1000 IDs This requirement comes up on Stack Overflow a lot and there is no built-in way to do it. The chunks should be drawn lazily. In fact the items of each chunk should be lazy as well. This allows for very big chunks such as 1 billion items per chunk. Maybe we need two variants: 1. `IEnumerable> AsChunkedLazy` 2. `IEnumerable AsChunkedEager` The second one would be easier to handle for consumers. The first one requires more disciplined use because each chunk must be enumerated at most once and the chunks must be enumerated in order. This is required for an efficient streaming operation. +2149 area-System.Net Initial open source WinHttpHandler This is the initial open sourcing of the System.Net.Http.WinHttpHandler package. This commit also includes a fully buildable System.Net.Http.dll binary as well as System.Net.Http.WinHttpHandler.dll binary. Unit tests are included as well. There is a skeleton file for beginning cross-platform work on System.Net.Http. +2150 area-Infrastructure Unit tests on Windows run on 32-bit CoreCLR We are using a 32bit coreclr to run all of our tests when running on windows. This is different from what we do for OSX and Linux (where we use the 64 bit version of the runtime built from [dotnet/coreclr](https://github.com/dotnet/coreclr)). I believe because of this we also don't get coverage on any of the RyuJIT specific optimizations around Vectors as part of our unit tests. I think it would be ideal if we also ran tests on a 64 bit runtime and it corresponded to some LKG build from [dotnet/coreclr](https://github.com/dotnet/coreclr). /cc @stephentoub +2151 area-System.Reflection Fix incorrect MethodSpec signature header check There was some confusion in untested code around ELEMENTTYPE_GENERICINST vs. CALLCONV_GENERICINST cc @tmat +2152 area-System.Xml [Perf] Fix XmlDocument/XPath to properly compare strings by ref "XmlDocument/XPath when comparing namespaces it uses fixed string object (from private class defined in XmlConst.cs). During the split of System.Xml.dll to smaller libraries (XmlDocument, ReaderWriter, XPath, XPath.XmlDocument) we introduced shared XmlConst.cs file for those constants and thus different references for those strings. To optimize implementation is comparing built-in namespaces by reference and thus in some cases it doesn't work properly and causes some undefined behavior. The cases which were breaking tests were already fixed although there are some other broken scenarios which got introduced when running product on Desktop (runtime). Steps: - [x] Workaround to not compare by ref (one line change in Ref.cs) to unblock Desktop ASAP (we are gonna lose some perf but correctness is more important than perf) - https://github.com/dotnet/corefx/pull/2154 - [ ] Make sure there is only one copy of string constants in one of the libraries (ReaderWriter or XmlDocument) and other libraries should get the valid and needed references to string some other way (i.e. through XmlDoc's NameTable or exposing something new in the contract if NameTable is too slow or not possible) - [ ] Re-enable comparison by ref and validate it is passing when running on Desktop runtime (on Win 10) and coreclr **Except for the first checkbox it is up for grabs** Please revert Ref.cs to its original form with the last checkbox: ``` csharp public static bool Equal(string strA, string strB) { #if DEBUG if (((object)strA != (object)strB) && string.Equals(strA, strB)) System.Diagnostics.Debug.Fail(""Ref.Equal: Object comparison used for non-atomized string '"" + strA + ""'""); #endif return (object)strA == (object)strB; } ``` " +2153 area-System.Net Eliminate closure allocations in System.Net.Http +2155 area-System.Net System.Net.Http.dll should throw NotImplementedException instead of DllNotFoundException When sending HTTP request with HttpClient on CoreCLR + *nix, the following exception is thrown: ``` Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'winhttp.dll': Error 126 (Exception from HRESULT: 0x8007007E) at System.Net.Http.Interop.WinHttpSetStatusCallback(SafeInternetHandle handle, WINHTTP_STATUS_CALLBACK callback, UInt32 notificationFlags, IntPtr reserved) at System.Net.Http.WinHttpHandler.SetStatusCallback(SafeInternetHandle requestHandle, WINHTTP_STATUS_CALLBACK callback) at System.Net.Http.WinHttpHandler.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.AsyncMethodBuilderCore.b__4(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() libc++abi.dylib: terminating with uncaught exception of type PAL_SEHException Abort trap: 6 ``` It is better to use a more friendly exception. +2159 area-System.Linq Overridden ToString not being called (IOrderedQueryable) I have a class which implements `IOrderedQueryable`. With DNX 4, I can print out my LINQ queries as described in [this LINQ provider tutorial](http://blogs.msdn.com/b/mattwar/archive/2007/07/31/linq-building-an-iqueryable-provider-part-ii.aspx) (i.e. `Console.WriteLine(ExampleQueryable.Where(x => ...))` should call the overridden `ToString()` on my class implementing `IOrderedQueryable`). It works fine in DNX 4, but with DNX Core, it skips my overridden `ToString()` completely (I tested this by placing a breakpoint), and instead seems to be calling `ToString()` on `System.Object`. +2165 area-System.Net Follow-up feedback/action items for WinHttpHandler This issue is capturing feedback from the PR which copied the sources of WinHttpHandler into GitHub. https://github.com/dotnet/corefx/pull/2149 While most of the original feedback was addressed in the PR, some feedback action items are deferred and are being tracked in this issue. - [x] Review use of SafeWinHttpHandle. Check for leaks etc. - Tracking with #2501 - [x] Review TODO's in code. - Done. All TODO's have separate issues. - [x] Consolidate use of Safe*Handle code especially SafeHandleZeroOrMinusOneIsInvalid classes - Tracking with #2501 - [x] Optimize error handling around chain.Build(). - Done #4910 - [x] Optimize closures in Task related lambdas - Done #3867 - [x] Optimize use of TaskCompletionSource regarding `RequestState` - Done #3867 - [x] Propagate `CancellationToken` in calls to `TrySetCanceled` Fixed w/ #2608 - [x] Pass `CancellationToken` to `CopyToAsync` - Considered but `HttpContent.CopyToAsync` does not have an overload that takes a `CancellationToken`. - [x] Consider moving `HRESULT_FROM_WIN32` method to Common/Interop folder. - Done #2511 - [x] Consider change DLL import signature of `GetModuleHandle` to return `SafeHandle` or use `GetModuleEx` with `GET_MODULE_HANDLE_EX_FLAG_PIN` or `GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT` - Considered but there are no race conditions since the 'winhttp.dll' is always loaded during the use of the WinHttpHandler class. - [x] Add UnitTests to test fix with proxy authentication and redirection for PR #2463 - [x] Move duplicate code in WinHttpCertificateHelper.cs and merge with similar code used in System.Net.Security - Tracked in #14542. - [x] Optimize auth scheme lookups in WinHttpAuthHelper.cs - WON'T FIX. - [x] Register callback on cancellation token to cancel WinHTTP operation for WinHttpRequestStream, WinHttpResponseStream - Issue #8627 for WinHttpResponseStream - [x] Add logging for failures in classes such as WinHttpResponseParser, WinHttpResponseStream - Tracked in #7856. - [x] Consider refactoring cache logic from WinHttpAuthHelper into separate class and avoid out parameters - WON'T FIX. - [x] Optimize algorithm used in scanning client certificate list in WinHttpCertificateHelper - WON'T FIX. - [x] Refactor cookie handling from WinHttpHandler into separate class. - Done #5001 +2167 area-System.Collections Add ImmutableArray.Builder.Sort(Comparison comparison) List has an overload of Sort that takes a delegate. It's useful when writing an inline comparer using a lambda: ``` C# list.Sort((x, y) => ); ``` +2168 area-System.Net Sporadic wrong response from HttpClient.SendAsync() when using an authenticated proxy "@davidsh Repro steps: 1. Fiddler Web Debugger -> Rules -> Require Proxy Authentication 2. Run the following program and at some point you will see: ![capture](https://cloud.githubusercontent.com/assets/1383883/8366945/bdfdbc32-1b4e-11e5-9a4a-3c336f95fe52.PNG) Looks like you get `407 (Proxy Auth Required)` sporadically even you always provide correct credentials for the proxy. Can only repro with CoreCLR. ``` c# using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Collections.Generic; namespace ConsoleApp3 { public class Program { public void Main(string[] args) { var webProxy = new WebProxy(""http://localhost:8888""); webProxy.Credentials = new NetworkCredential(""1"", ""1""); var handler = new HttpClientHandler { Proxy = webProxy, UseProxy = true }; var client = new HttpClient(handler); var tasks = new List(); foreach (var uri in URIs.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { tasks.Add(SendRequest(client, uri)); } Task.WhenAll(tasks).Wait(); Console.WriteLine(""Done""); } private async Task SendRequest(HttpClient client, string uri) { Console.WriteLine($""GET {uri}""); var request = new HttpRequestMessage(HttpMethod.Get, uri); using (var response = await client.SendAsync(request)) { Console.WriteLine($""{response.StatusCode} response from {uri}""); response.EnsureSuccessStatusCode(); } } private class WebProxy : IWebProxy { private readonly Uri _uri; public WebProxy(string uri) { _uri = new Uri(uri); } public ICredentials Credentials { get; set; } public Uri GetProxy(Uri destination) { return _uri; } public bool IsBypassed(Uri host) { return host.IsLoopback; } } private const string URIs = @"" https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.SqlServer' https://www.nuget.org/api/v2/FindPackagesById()?id='EntityFramework.SqlServer' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.SqlServer' https://nuget.org/api/v2/FindPackagesById()?id='EntityFramework.SqlServer' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='EntityFramework.SqlServer' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.InMemory' https://www.nuget.org/api/v2/FindPackagesById()?id='EntityFramework.InMemory' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.InMemory' https://nuget.org/api/v2/FindPackagesById()?id='EntityFramework.InMemory' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='EntityFramework.InMemory' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Kestrel' https://www.nuget.org/api/v2/FindPackagesById()?id='Kestrel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Kestrel' https://nuget.org/api/v2/FindPackagesById()?id='Kestrel' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Kestrel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Cookies' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Cookies' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Cookies' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Cookies' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.Cookies' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Facebook' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Facebook' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Facebook' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Facebook' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.Facebook' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Google' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Google' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Google' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Google' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.Google' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.MicrosoftAccount' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.MicrosoftAccount' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.MicrosoftAccount' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.MicrosoftAccount' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.MicrosoftAccount' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OpenIdConnect' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OpenIdConnect' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OpenIdConnect' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OpenIdConnect' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.OpenIdConnect' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Twitter' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Twitter' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Twitter' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.Twitter' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.Twitter' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Diagnostics' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Entity' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Entity' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Entity' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Entity' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Entity' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity.EntityFramework' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity.EntityFramework' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity.EntityFramework' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity.EntityFramework' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Identity.EntityFramework' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Mvc' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.IIS' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.IIS' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.IIS' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.IIS' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Server.IIS' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.WebListener' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.WebListener' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.WebListener' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.WebListener' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Server.WebListener' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Session' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Session' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Session' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Session' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Session' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Server' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Server' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Server' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Server' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.SignalR.Server' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.StaticFiles' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGenerators.Mvc' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGenerators.Mvc' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGenerators.Mvc' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGenerators.Mvc' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.CodeGenerators.Mvc' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.CommandLine' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.CommandLine' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.CommandLine' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.CommandLine' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Configuration.CommandLine' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Json' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Json' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Json' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Json' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Configuration.Json' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Console' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Console' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Console' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Console' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Logging.Console' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.IIS' https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.Facebook/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.Google/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.OpenIdConnect/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/Kestrel/1.0.0-beta6-11901 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.Twitter/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.MicrosoftAccount/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Diagnostics.Entity/7.0.0-beta6-13321 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Identity.EntityFramework/3.0.0-beta6-12644 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Mvc/6.0.0-beta6-14192 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Mvc.TagHelpers/6.0.0-beta6-14192 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Server.WebListener/1.0.0-beta6-12361 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.Configuration.CommandLine/1.0.0-beta6-11520 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.Configuration.EnvironmentVariables/1.0.0-beta6-11520 https://www.myget.org/F/aspnetvnext/api/v2/package/EntityFramework.SqlServer/7.0.0-beta6-13586 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.Configuration.Json/1.0.0-beta6-11520 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.Cookies/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/EntityFramework.InMemory/7.0.0-beta6-13586 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Diagnostics/1.0.0-beta6-13321 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.Logging.Console/1.0.0-beta6-11516 https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting' https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.CodeGenerators.Mvc/1.0.0-beta6-12480 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Session/1.0.0-beta6-10599 https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting' https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.SignalR.Server/3.0.0-beta6-12626 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Tooling.Razor/1.0.0-beta6-13550 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.StaticFiles/1.0.0-beta6-12110 https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Hosting' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OAuth' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OAuth' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OAuth' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication.OAuth' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication.OAuth' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.Relational' https://www.nuget.org/api/v2/FindPackagesById()?id='EntityFramework.Relational' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.Relational' https://nuget.org/api/v2/FindPackagesById()?id='EntityFramework.Relational' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='EntityFramework.Relational' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Newtonsoft.Json' https://www.nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Newtonsoft.Json' https://nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Newtonsoft.Json' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Threading' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading' https://nuget.org/api/v2/FindPackagesById()?id='System.Threading' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Threading' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authorization' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authorization' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authorization' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authorization' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authorization' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Configuration' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Dynamic.Runtime' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Dynamic.Runtime' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Dynamic.Runtime' https://nuget.org/api/v2/FindPackagesById()?id='System.Dynamic.Runtime' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Dynamic.Runtime' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Authentication' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Authentication' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Identity' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Identity' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.ObjectModel' https://www.nuget.org/api/v2/FindPackagesById()?id='System.ObjectModel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.ObjectModel' https://nuget.org/api/v2/FindPackagesById()?id='System.ObjectModel' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.ObjectModel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Cors.Core' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Cors.Core' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Cors.Core' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Cors.Core' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Cors.Core' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing.Algorithms' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing.Algorithms' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing.Algorithms' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing.Algorithms' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Cryptography.Hashing.Algorithms' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.IdentityModel.Protocol.Extensions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.IdentityModel.Protocol.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.IdentityModel.Protocol.Extensions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.IdentityModel.Protocol.Extensions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.IdentityModel.Protocol.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Runtime' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime' https://nuget.org/api/v2/FindPackagesById()?id='System.Runtime' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Runtime' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Headers' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Headers' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Headers' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Headers' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Net.Http.Headers' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.ApiExplorer' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.ApiExplorer' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.ApiExplorer' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.ApiExplorer' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Mvc.ApiExplorer' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Server' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Server' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Server' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Net.Http.Server' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Net.Http.Server' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Extensions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Extensions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Extensions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Mvc.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Razor' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Razor' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Razor' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.Razor' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Mvc.Razor' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Memory' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Memory' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Memory' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Memory' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Caching.Memory' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Net.Http.WinHttpHandler' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Net.Http.WinHttpHandler' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Net.Http.WinHttpHandler' https://nuget.org/api/v2/FindPackagesById()?id='System.Net.Http.WinHttpHandler' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Net.Http.WinHttpHandler' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.DependencyInjection' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.DependencyInjection' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.DependencyInjection' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.DependencyInjection' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.DependencyInjection' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Collections' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Collections' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Collections' https://nuget.org/api/v2/FindPackagesById()?id='System.Collections' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Collections' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Collections.Specialized' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Collections.Specialized' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Collections.Specialized' https://nuget.org/api/v2/FindPackagesById()?id='System.Collections.Specialized' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Collections.Specialized' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.ComponentModel' https://www.nuget.org/api/v2/FindPackagesById()?id='System.ComponentModel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.ComponentModel' https://nuget.org/api/v2/FindPackagesById()?id='System.ComponentModel' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.ComponentModel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Claims' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Claims' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Claims' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Claims' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Claims' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.ComponentModel.TypeConverter' https://www.nuget.org/api/v2/FindPackagesById()?id='System.ComponentModel.TypeConverter' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.ComponentModel.TypeConverter' https://nuget.org/api/v2/FindPackagesById()?id='System.ComponentModel.TypeConverter' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.ComponentModel.TypeConverter' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Diagnostics.Debug' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Diagnostics.Debug' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Diagnostics.Debug' https://nuget.org/api/v2/FindPackagesById()?id='System.Diagnostics.Debug' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Diagnostics.Debug' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Diagnostics.Tools' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Diagnostics.Tools' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Diagnostics.Tools' https://nuget.org/api/v2/FindPackagesById()?id='System.Diagnostics.Tools' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Diagnostics.Tools' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Globalization' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Globalization' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Globalization' https://nuget.org/api/v2/FindPackagesById()?id='System.Globalization' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Globalization' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Linq' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Linq' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Linq' https://nuget.org/api/v2/FindPackagesById()?id='System.Linq' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Linq' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Linq.Expressions' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Linq.Expressions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Linq.Expressions' https://nuget.org/api/v2/FindPackagesById()?id='System.Linq.Expressions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Linq.Expressions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Linq.Queryable' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Linq.Queryable' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Linq.Queryable' https://nuget.org/api/v2/FindPackagesById()?id='System.Linq.Queryable' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Linq.Queryable' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Reflection' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection' https://nuget.org/api/v2/FindPackagesById()?id='System.Reflection' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Reflection' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.FileSystemGlobbing' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.FileSystemGlobbing' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.FileSystemGlobbing' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.FileSystemGlobbing' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.FileSystemGlobbing' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Resources.ResourceManager' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Resources.ResourceManager' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Resources.ResourceManager' https://nuget.org/api/v2/FindPackagesById()?id='System.Resources.ResourceManager' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Resources.ResourceManager' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime.Extensions' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Runtime.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime.Extensions' https://nuget.org/api/v2/FindPackagesById()?id='System.Runtime.Extensions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Runtime.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Principal' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Principal' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Principal' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Principal' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Principal' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Http.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Caching.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Caching.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Text.Encoding' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Text.Encoding' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Text.Encoding' https://nuget.org/api/v2/FindPackagesById()?id='System.Text.Encoding' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Text.Encoding' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Logging.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.OptionsModel' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.OptionsModel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.OptionsModel' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.OptionsModel' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.OptionsModel' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.Tasks' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Threading.Tasks' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.Tasks' https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Server.IIS/1.0.0-beta6-11976 https://nuget.org/api/v2/FindPackagesById()?id='System.Threading.Tasks' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Threading.Tasks' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Extensions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Extensions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Http.Extensions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Http.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Data.SqlClient' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Data.SqlClient' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Data.SqlClient' https://nuget.org/api/v2/FindPackagesById()?id='System.Data.SqlClient' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Data.SqlClient' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Text.Encoding.CodePages' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Text.Encoding.CodePages' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Text.Encoding.CodePages' https://nuget.org/api/v2/FindPackagesById()?id='System.Text.Encoding.CodePages' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Text.Encoding.CodePages' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.Core' https://www.nuget.org/api/v2/FindPackagesById()?id='EntityFramework.Core' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='EntityFramework.Core' https://nuget.org/api/v2/FindPackagesById()?id='EntityFramework.Core' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='EntityFramework.Core' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.FileProviders.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.FileProviders.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.FileProviders.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.FileProviders.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.FileProviders.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor.Runtime' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor.Runtime' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor.Runtime' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor.Runtime' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Razor.Runtime' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Diagnostics.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Hosting.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Hosting.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.Thread' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Threading.Thread' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.Thread' https://nuget.org/api/v2/FindPackagesById()?id='System.Threading.Thread' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Threading.Thread' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.RandomNumberGenerator' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.RandomNumberGenerator' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.RandomNumberGenerator' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.RandomNumberGenerator' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Cryptography.RandomNumberGenerator' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.WebEncoders' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Messaging' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Messaging' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Messaging' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.SignalR.Messaging' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.SignalR.Messaging' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.DataProtection' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.DataProtection' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.DataProtection' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.DataProtection' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.DataProtection' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Console' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Console' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Console' https://nuget.org/api/v2/FindPackagesById()?id='System.Console' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Console' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.IO' https://www.nuget.org/api/v2/FindPackagesById()?id='System.IO' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.IO' https://nuget.org/api/v2/FindPackagesById()?id='System.IO' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.IO' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.WebUtilities' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.WebUtilities' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.WebUtilities' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.WebUtilities' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.WebUtilities' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Logging' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders.Core' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders.Core' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders.Core' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.WebEncoders.Core' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.WebEncoders.Core' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Abstractions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Runtime.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.CSharp' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.CSharp' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.CSharp' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.CSharp' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.CSharp' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Collections.Concurrent' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Collections.Concurrent' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Collections.Concurrent' https://nuget.org/api/v2/FindPackagesById()?id='System.Collections.Concurrent' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Collections.Concurrent' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Extensions' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Extensions' https://nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Extensions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Reflection.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Emit' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Emit' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Emit' https://nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Emit' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Reflection.Emit' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Emit.ILGeneration' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Emit.ILGeneration' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Emit.ILGeneration' https://nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Emit.ILGeneration' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Reflection.Emit.ILGeneration' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Primitives' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Reflection.Primitives' https://nuget.org/api/v2/FindPackagesById()?id='System.Reflection.Primitives' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Reflection.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.ThreadPool' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Threading.ThreadPool' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.ThreadPool' https://nuget.org/api/v2/FindPackagesById()?id='System.Threading.ThreadPool' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Threading.ThreadPool' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.Timer' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Threading.Timer' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Threading.Timer' https://nuget.org/api/v2/FindPackagesById()?id='System.Threading.Timer' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Threading.Timer' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS.Interop' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS.Interop' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS.Interop' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS.Interop' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS.Interop' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Loader.IIS' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.CodeGeneration' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.EntityFramework' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.EntityFramework' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.EntityFramework' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.EntityFramework' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.EntityFramework' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.Templating' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.Templating' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.Templating' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.Templating' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.CodeGeneration.Templating' https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.FileSystemGlobbing/1.0.0-beta6-11549 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Net.Http.WinHttpHandler/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Authentication.OAuth/1.0.0-beta6-12600 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.Configuration/1.0.0-beta6-11520 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Collections.Specialized/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.SignalR.Messaging/3.0.0-beta6-12626 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Security.Claims/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Threading.Tasks/4.0.10-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.ObjectModel/4.0.10-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Threading/4.0.10-beta-23021 http://www.myget.org/F/azureadwebstacknightly/api/v2/package/Newtonsoft.Json/6.0.6 https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime.Handles' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Runtime.Handles' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime.Handles' https://nuget.org/api/v2/FindPackagesById()?id='System.Runtime.Handles' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Runtime.Handles' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Abstractions' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Abstractions' https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/package/System.Threading.Thread/4.0.0-beta-23021 http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Framework.Configuration.Abstractions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.X509Certificates' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.X509Certificates' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.X509Certificates' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.X509Certificates' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Cryptography.X509Certificates' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Win32.Primitives' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Win32.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Win32.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Loader.IIS/1.0.0-beta6-11976 https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.Win32.Primitives' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.Win32.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.IO.FileSystem' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById?id='Microsoft.Framework.DependencyInjection'&$skiptoken='Microsoft.Framework.DependencyInjection','1.0.0-beta6-11513' https://www.nuget.org/api/v2/FindPackagesById()?id='System.IO.FileSystem' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.IO.FileSystem' https://nuget.org/api/v2/FindPackagesById()?id='System.IO.FileSystem' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.IO.FileSystem' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Net.Http' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Net.Http' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Net.Http' https://nuget.org/api/v2/FindPackagesById()?id='System.Net.Http' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Net.Http' https://www.myget.org/F/aspnetvnext/api/v2/package/System.Threading.Tasks/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Threading/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.IO.Compression' https://www.nuget.org/api/v2/FindPackagesById()?id='System.IO.Compression' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.IO.Compression' https://nuget.org/api/v2/FindPackagesById()?id='System.IO.Compression' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.IO.Compression' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime.InteropServices' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Runtime.InteropServices' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Runtime.InteropServices' https://nuget.org/api/v2/FindPackagesById()?id='System.Runtime.InteropServices' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Runtime.InteropServices' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Net.Primitives' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Net.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Net.Primitives' https://nuget.org/api/v2/FindPackagesById()?id='System.Net.Primitives' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Net.Primitives' https://www.myget.org/F/aspnetvnext/api/v2/package/System.Reflection.Extensions/4.0.0-beta-23021 http://www.myget.org/F/azureadwebstacknightly/api/v2/package/Newtonsoft.Json/6.0.6 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Security.Cryptography.RandomNumberGenerator/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/EntityFramework.Core/7.0.0-beta6-13586 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.AspNet.Razor.Runtime/4.0.0-beta6-11615 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.CodeGeneration.Templating/1.0.0-beta6-12480 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Threading.Timer/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.Encryption' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.Encryption' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.Encryption' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.Encryption' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Cryptography.Encryption' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing' https://www.nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing' https://nuget.org/api/v2/FindPackagesById()?id='System.Security.Cryptography.Hashing' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Security.Cryptography.Hashing' https://www.myget.org/F/aspnetvnext/api/v2/package/System.IO/4.0.10-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.IO/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.WebEncoders/1.0.0-beta6-11657 http://www.myget.org/F/azureadwebstacknightly/api/v2/package/Newtonsoft.Json/6.0.6 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Runtime/4.0.20-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/System.Runtime/4.0.0-beta-23021 https://www.myget.org/F/aspnetvnext/api/v2/package/Microsoft.Framework.DependencyInjection/1.0.0-beta6-11523 https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Text.Encoding.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/package/System.Console/4.0.0-beta-23021 https://www.nuget.org/api/v2/FindPackagesById()?id='System.Text.Encoding.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='System.Text.Encoding.Extensions' https://nuget.org/api/v2/FindPackagesById()?id='System.Text.Encoding.Extensions' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='System.Text.Encoding.Extensions' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor' https://www.myget.org/F/aspnetvnext/api/v2/package/System.Text.Encoding.CodePages/4.0.0-beta-23021 https://nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Razor' http://www.myget.org/F/azureadwebstacknightly/FindPackagesById()?id='Microsoft.AspNet.Razor' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Roslyn' https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Roslyn' https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Runtime.Roslyn' ""; } } ``` " +2169 area-Serialization Fix serialization for type which has DataMember with special Name values This issue happens only for DCJS and affecting both NetCore and NetNative, due to missing method from recent merging of DCJS. cc: @SGuyGe @shmao @zhenlan +2171 area-Infrastructure When compiling in TFS, using the ECMA key requires setting before dir.props import Because the TFS build targets sets true, sign.targets won't respect the UseECMAKey property. Additionally, because dir.props sets based on the AssemblyKeyType conditional, AssemblyKeyType needs to be set in the project before importing dir.props. +2174 area-Serialization Deserializing xml on linux coreclr x64 throws System.NotSupportedException "When executing the following code on ubuntu 14.04 using coreclr x64 version 1.0.0-beta6-12120 a System.NotSupportedException is thrown. This works fine on windows with same coreclr version ``` c# public class Program { public class Test3 { public string Title {get;set;} } public void Main(string[] args) { string xml = ""Test 12345""; XmlSerializer serializer = new XmlSerializer(typeof(Test3)); StringReader reader = new StringReader(xml); var value = (Test3)serializer.Deserialize(reader); var title = value.Title; } } ``` the stacktrace: ``` System.InvalidOperationException: There is an error in XML document (0, 0). ---> System.NotSupportedException: Specified method is not supported. at System.Xml.Serialization.XmlSerializerImplementation.get_ReadMethods() at System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlReader xmlReader, Object events, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, Object events) --- End of inner exception stack trace --- at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, Object events) at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader) at SampleApp.Program.Main(String[] args) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Framework.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Framework.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args) at Microsoft.Framework.ApplicationHost.Program.Main(String[] args) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Framework.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at dnx.host.Bootstrapper.RunAsync(List`1 args, IRuntimeEnvironment env) at dnx.host.RuntimeBootstrapper.ExecuteAsync(String[] args) at dnx.host.RuntimeBootstrapper.Execute(String[] args) System.NotSupportedException: Specified method is not supported. at System.Xml.Serialization.XmlSerializerImplementation.get_ReadMethods() at System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlReader xmlReader, Object events, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, Object events) ``` " +2177 area-Serialization Silent Failure: XmlSerializer.Deserialize Method (XmlReader) "I attempted to file this on Connect, but it appears that even though Connect states that it is still accepting issues, it is closed. There is a bug in the current release version (4.5.2) that fails w/o any errors, on the deserialization of a property of a class that is defined as a List. I haven't tried lists of other types, but they are probably affected as well, and this only affects Deserialize, not Serialize. There are 2 classes below, and both serialize properly, in the exact same way. However, the Works class will deserialize properly, while the DoesNotWork class will not. The DoesNotWork class will end up with an Items property that contains a list with zero items, when 1 or more items exist. We discovered this in a property that has code in both the get and set accessors, while all properties that don't have any get or set code work perfectly. ``` C# [Serialize] [XmlRoot(""root"")] public class Works { [XmlElement(""items"")] public List Items { get; set; } } [Serialize] [XmlRoot(""root"")] public class DoesNotWork { private List _items; [XmlElement(""items"")] public List Items { get { return _items; } set { _items = value; } } } ``` " +2189 area-System.Xml Bring XSL-T to CoreFX The [xUnit.net](https://github.com/xunit) unit test framework uses XSL-T to transform its native XML reporting format into other XML (NUnit, xUnit.net v1) formats as well as to generate HTML reports. This strategy works well for desktop runners, but is currently not supported in our [DNX runner](https://github.com/xunit/dnx.xunit) because of the lack of XSL-T support on the platform. This is a [feature request for our DNX runner](https://github.com/xunit/dnx.xunit/issues/42) which we cannot satisfy without some form of XSL-T support. In particular, the code we use today exercises `XslCompiledTransform`: https://github.com/xunit/xunit/tree/05826dcfd3cee97d93ff63201db0296933dd3511/src/xunit.runner.reporters.desktop +2191 area-System.Data Add Sql Impersonation Support SqlClient team needs to add Impersonation support for Project K, but underlying code support does not currently exist. +2192 area-System.Net Update README.md for System.Net.Http.WinHttpHandler Update the README.md for the System.Net.Http.WinHttpHandler library. +2199 area-Meta Review converged configuration APIs ASP.NET has created configuration APIs (TBD: Link). @divega was driving a working group to push these APIs down so that they can become general purpose BCL-ish APIs. We should review the proposal for a converged API set. +2203 area-System.Security Add support for X509 revocation checks on Unix Due to a lack of a stable networking stack, the X509Chain for Unix does not support CRL downloading or OCSP. There are a couple of different parts to be done: - OCSP (Online checks) - CRL fetching (Online checks) - CRL caching (Online/Offline checks) - CRL cache refresh - Using the CRL during chain building +2204 area-System.Security Figure out a strategy for X509VerificationFlags on Unix Because OpenSSL reports back only the first error it finds, the Ignore\* flags can't be used to disregard error codes coming back. Whatever flags cannot be supported should be changed to a PlatformNotSupportedException. +2207 area-System.Security Add support for additional LocalMachine X509Stores on Unix, or throw PlatformNotSupportedException LM\Root, and to a lesser degree LM\CA, are populated from a system directory. The other stores could be put into another path area, if we wanted to support having writable system stores. If writable system stores makes no sense, then other LM* stores should throw a descriptive PlatformNotSupportedException, not a blank NotImplementedException. +2209 area-System.Numerics Support for SSE4 intrinsics by RyuJIT Support for many of the interesting instructions like popcnt (technically SSE4a) could be an interesting addition and prove to be useful to avoid using unmanaged code in certain performance sensitive applications. Many (technically all) of the operations can be emulated in CPU when not available with specific optimizations for the target platform or even have the ability with specially crafted if-then-else optimizations. That would allow to even switch to an entirely different algorithm without any runtime impact (if properly done at the jitting phase). +2210 area-System.Security Consider multi-threading implications on the OpenSSL ERR_get_error queue. OpenSSL compiled with OPENSSL_FIPS seems to have a single static ERR_STATE object for the process. The default appears to be set up for providing the capabilities for stack-per-thread, but OPENSSL_thread_id() appears to return the process ID, not the thread ID. The mainline seems to be served by `OPENSSL_set_id_callback` to something returning a thread ID; and lightup for FIPS could try invoking `int_ERR_lib_init`, which resets the library to the non-FIPS way of error management (though that theoretically has FIPS implications...). +2217 area-System.Text UTF8Encoding should support encoding/decoding of unpaired surrogates "According to RFC 3629 encoding/decoding unmatched surrogates should be disallowed: ""The definition of UTF-8 prohibits encoding character numbers between U+D800 and U+DFFF, which are reserved for use with the UTF-16 encoding form (as surrogate pairs) and do not directly represent characters."" However, this hasn't been followed by real world encoders/decoders. For example, the ECMA-335 standard encodes string arguments of custom attributes using UTF8 and the compilers allowed unpaired surrogates in the attribute argument. Another example is PDB - the file paths in PDB are stored as UTF8 encoded strings and unpaired surrogates are also allowed. The same for values of local string constants (e.g. `const string surrogate = ""\ud800""`). To avoid breaking changes Roslyn needs to allow unpaired surrogates in the above cases and the MetadataReader should also use a variant of UTF8 encoding that is able to decode them. Currently Roslyn has a custom implementation of UTF8 encoder originating from CCI. In general, it seems that pragmatically a UTF16-UTF8 round-tripping is desirable in certain scenarios and UTF8Encoding should support it. I propose to add a constructor to UTF8 Encoding that takes a bool allowUnpairedSurrogates (false by default) that can be used by both Roslyn and MetadataReader. " +2220 area-System.Net [WIP] Refactor HttpClient and MultipartContent with async/await +2221 area-System.Runtime Replacement for unavailable Assembly methods Hi, How is the supported way to deal with the Assembly class? For instance, I have some method calls like Assembly.Location or Assembly.GetCallingAssembly() which I couldn't find a way to bring those calls to CoreFX. Thanks. +2227 area-System.IO FileSystem intermittent test failures Tests for the FileSystem class intermittently fail. The offenders are: | Test Failure | Notes | | --- | --- | | File_WriteAll_all.runTest | | | File_ReadAll_all.runTest | | | File_WriteAllBytes_StrBtA.runTest | | | File_AppendAll_all.runTest | | | File_Copy_str_str_b.runTest | also leaves leftover test directories (only on failure) | | FileInfo_Refresh.runTest | also leaves leftover test directories (only on failure) | | FileInfo_getLastWriteTime | according to #1313 - I detected no failures on my runs | | FileInfo_Create_str | | | DirectoryInfo_Refresh.runTest | also leaves leftover test directories (only on failure) | | DirectoryInfo_Move_str.runTest | also leaves leftover test directories (only on failure) | The source of the failures is the repeated use of the same test file names causing file already in use exceptions. +2241 area-System.Linq Enumerable.ToArray() fails on the results of some uses of Enumerable.Cast() Generally any implementation of `IEnumerable` should be able to produce a `T[]` with a call to `ToArray()`. However, in some cases the `IEnumerable` produced by a call to `Cast()` will in fact be an array of another type that can be converted on the fly by the implementation of `GetEnumerator()`. This works well in many cases and is a valuable optimisation (rather than going through `CastIterator`) but if `ToArray()` is called on it, the result is an `ArrayTypeMismatchException` that would not be expected by the user, especially since code might call `ToArray()` without knowing that `Cast()` had been used, or pass the result of `Cast()` to a method, not knowing that `ToArray()` would be used. In particular this happens if you `Cast()` an array of one `enum` type to another `enum` type. +2246 area-System.Net HttpClient not thread Safe Hi, Recently I noticed HttpClient, FtpClient (maybe SMTPClient I have to check) are not thread safe when Scheme is set https. Since all those classes relies on static member SecurityProtocol in ServicePointManager. We cant have multiple tasks or threads targeting different SSL or TLS version at the same time. I didn't see ServicePointManager in corefx repository located in System.Net namespace. Are there plans to open this piece of code ? +2249 area-System.Data DbDataReader.Close() doesn't unify with System.Data.Common If I write a provider against System.Data.Common on .NET Standard 1.2 and implement `Dispose` appropriately, then I try to use that provider on .NET Framework 4.6 or .NET Core 2.0, the following code won't work. ``` C# reader.Close(); // No-op Assert.True(reader.IsClosed); // Fails since Dispose is never called ``` It fails because on .NET Framework and .NET Core 2.0, `Dispose` calls `Close` (not the other way around) and since there is no virtual `Close` method on .NET Standard 1.2, I cannot override it without cross-targeting the frameworks that do have it. +2252 area-System.Collections Provide a sorting algorithm with good behavior on nearly-sorted inputs. The existing 4.5 Array.sort is implemented with intro sort. While this has reasonable behavior, it effectively has the same number of comparisons regardless of input size. This number of comparisons is (as expected) around `n * log_n`. While this is acceptable for random inputs, it is unfortunately much slower for nearly-sorted inputs. More recent algorithms (like TimSort) can provide massive improvements here, sorting nearly-sorted lists with a nearly linear number of comparisons. For code-paths where sorting is expensive, and where comparisons are not cheap, a better sort algorithm built into the Fx would be appreciated. Whether or not this becomes the default is up to you. But providing it as an option would still be a huge boon. Note: this hits Roslyn+TypeScript. We often produce trees (i.e. for tagging) from nearly sorted data. There may be hundreds of thousands of elements in this data. Being able to sort in near-linear time means we can then build our trees in linear time. With data sets this large, the difference between `n` and `n log n` is actually quite significant. +2254 area-System.Runtime Provide ways to parse sections of a string, not an entire string. Right now .Net provides lots of ways to convert strings to other values. For example `Int32.TryParse`. This is fine if you are starting with a string, but it's very suboptimal if you have a larger string, and are trying to parse out a piece of it. You are forced to first create a substring, and then parse that. This adds GC pressure to the system and can be a large perf impact. It would be very beneficial to have overloads of these functions that took a start+length. Alternatively, if there were some sort of struct representing a piece of a string, that could also work as well. Right now this impacts TypeScript greatly. We have to marshal data from JavaScript to .Net. This comes in as a string to us, which we then need to parse out into actual values (like ints). We are forced to either send tons of strings over (not ideal), or send one big string over that we then are forced to break into tons of small strings. Right now we've worked around this by hand-writing our own Int32.Parse that can work on subsections of a string. But this is non-ideal and would really be served inside the runtime so everyone could benefit. This is a place where really ony the runtime could implement this thing. There is so much complexity around string parsing (even just for ints), with things like FormatSpecifiers and whatnot, that trying to duplicate it in another library would be unfeasible. +2255 area-System.Linq IntersectIterator not optimized to exit early In System/Linq/Enumerable.cs, the `IntersectIterator` method will iterate over all of the items of `first`, even if the `set` created by `second` is empty. A simple performance optimization would be to `yield break` when `set` is empty. +2260 area-System.Net Merge changes from TFS +2273 area-System.Security Enable AuthorityInformationAccess downloads for X509Chain on Unix. Windows will follow the AuthorityInformationAccess record and attempt to download any intermediate certificates as part of building the X509Chain, we should enable this for the Unix platforms as well, to maintain feature parity. **Important**: Downloaded self-signed certificates are NOT considered trustworthy, and they need to make the chain report as not valid (unless root trust was bypassed). Also important: Any testing for this should be [OuterLoop], because it would depend on the network. +2278 area-System.Collections Rename Validation to Microsoft.Internal.Validation "The C# (and possibly VB compiler) will match the top-level namespace `Validation` in `System.Collections.Immutable` even though it only contains internal types. This prevents customers from using a type named `Validation` in their code. Specifically, assume a customer has defined the type like this: ``` C# namespace Support { public static class Validation { public static bool IsValid(string x) { return true; } } } ``` Consuming this type stops working when `System.Collections.Immutable` is referenced: ``` C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using Support; namespace ImmutableTest { public class Experiment { // With out Immutable included, the below works just fine. // Once I include immutable, Validation, which was really // Support.Validation, but was found because of the using // statement above, it starts to fail showing that it can't // find IsValid in the namespace Validation. public void Test1() { Validation.IsValid(""AS""); } public void Test2() { Support.Validation.IsValid(""AS""); } } } ``` According to @jaredpar this behavior is by-design: > This behavior is by design for C# at least. A simple name lookup will prefer matching namespaces over types (section 7.5.2). I didn’t check the VB spec but it almost assuredly has the same design here. In order to avoid that conflict, we should rename the `Validation` namespace to something like `System.Validation`. " +2279 area-System.IO File System Watching for the Root Watch Folder doesn't match on all platforms The FSW on Unix and OS X can receive notifications about the root folder being watcher but the Windows implementation cannot. There are also differences (lock being taken) on Desktop CLR that might not be the case on CoreCLR +2287 area-Serialization DataContractJsonSerializerTests.DCJS_EnumerableCollection test fails in UTC+03.00 (Minsk) timezone "DataContractJsonSerializerTests.DCJS_EnumerableCollection fails in my timezone (UTC+03.00, Minsk). Current code: ``` C# var offsetMinutes = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes; var timeZoneString = string.Format(""{0:+;-}{1}"", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@""hhmm"")); var original = new EnumerableCollection(); original.Add(new DateTime(2000, 1, 1).AddMinutes(offsetMinutes)); ``` Fix: ``` C# var date = new DateTime(2000, 1, 1); var offsetMinutes = (int)TimeZoneInfo.Local.GetUtcOffset(date).TotalMinutes; var timeZoneString = string.Format(""{0:+;-}{1}"", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@""hhmm"")); var original = new EnumerableCollection(); original.Add(date.AddMinutes(offsetMinutes)); ``` " +2292 area-Serialization Improve test coverage for XmlSerializer +2295 area-System.Xml System.Xml.XPath to support XPath 2, XPath 3 and their XSLT variants #### Motivation `System.Xml.XPath` currently conforms with XPath 1.0 [[W3C-xpath-1]](http://www.w3.org/TR/xpath/) and XSLT 1.0 [[W3C-xslt-1]](http://www.w3.org/TR/xslt/) standards, but not XPath 2.0 [[W3C-xpath-2]](http://www.w3.org/TR/xpath20/), XPath 3.0 [[W3C-xpath-3]](http://www.w3.org/TR/xpath-30/), XPath 3.1 [[W3C-xpath-3.1]](http://www.w3.org/TR/xpath-31/), XSLT 2.0 [[W3C-xslt-2]](http://www.w3.org/TR/xslt20/) and XSLT 3.0 [[W3C-xslt-3]](http://www.w3.org/TR/xslt-30/). The missing standard implementations in BCL are required by many consumer scenarios, for which .NET applications rely on [third party libraries](http://stackoverflow.com/a/1533114/863980). One of the chief scenario is Content Query Web Part (CQWP) in SharePoint, where the users' XSLT code can be drastically minimized if v2 is supported by `System.Xml.XPath`. As for most parts, there are backward compatibility fallbacks available, that is; the code written in XSLT 2 precisely, can be expressed verbosely in XSLT 1 and since so forth. ### Pitfalls Unfortunately, (besides the existing third-party libraries' APIs) I do not have an off-hand -- concrete -- method list to propose, as it requires further brain-storming on whether to auto-select processor based on the input or to explicitly separate the namespaces (`System.Xml.XPath2` and `System.Xml.XPath3`). The point to ponder being; since the sub-languages XPath 2 and XPath 3 intrinsically facilitates backward compatibility modes, see [XPath 2: J.1.3 Backwards Compatibility Behavior](http://www.w3.org/TR/xslt20/#backwards-compatibility-behavior) and [XPath 3: 3.10 Backwards Compatible Processing](http://www.w3.org/TR/xslt-30/#backwards), should the API be any different than the existing one and let consumers select the standard mode? +2315 area-System.Drawing Primitive Color Type for .NET Core ## Primitive Color Type for .NET Core The previous discussion of primitives showed that color discussion should expand into a separate issue. The primitive discussion was started because many customers wanted to move to the .NET Core, but were blocked by the lack of System.Drawing primitives there. There was much discussion and internal debate over defining Point, Rect, and Size and much of that was fueled by scenarios that you guys cited in the previous primitives issue. (Thank you!) Here we are looking for additional scenarios to discuss the advantages of creating a new Color type for the cross-platform .NET Core Graphics API. Feel free to repost your two cents from the previous primitives issue. Thanks for your input! Topics of Interest: (This is where providing scenarios would be awesome) 1. Naming (ColorRgba, sRGB) 2. Different Color Formats (int8 bits, float 16 bits, float 32 bits, alpha or not) Color4F, Color3F, Color4F 3. Color Spaces (conversion issues) 4. Gamma vs Linear 5. Extension Methods (vector operations: lerp, scaling, conversions: from RGB to HSB and reverse, from vectors) 6. Semantic parity with CSS 7. WinRT Compatibility Limit Scope: KnownColors will not be brought over as they don’t always translate well into the cross-platform world depending on the hardware so let’s focus our discussion on defining the Color object for now. +2316 area-System.Linq LINQ/PLINQ `Sum(int)` does not loft to long for intermediate calculation. Currently, even if the total value of elements in a collection falls within the range of the type, LINQ/PLINQ will throw errors if the _running_ total would overflow. That is: ``` new[] { int.MaxValue, int.MaxValue, int.MinValue }.Sum() ``` ... currently throws an overflow exception because of the first two items, even though the total is within range (`int.MaxValue - 1`). It may be beneficial to loft to long for the intermediate cancellation, similar to how float lofts to double (although that particular one is more about an accurate result, not exactly overflow). +2317 area-System.Linq Make IOrderedEnumerable covariant Today, I was trying to convert an `IOrderedEnumerable` to an `IOrderedEnumerable`, but the compiler responded with an error. Looking into the interface, there doesn't seem to be any reason why it can't be [covariant](https://msdn.microsoft.com/en-us/library/dd799517%28v=vs.110%29.aspx), and in fact when I copied and pasted the interface and changed the class signature to `IOrderedEnumerable` everything compiled fine. Can we change this in the BCL, as well? There doesn't seem to be a reason not to. Sidenote: This **may** cause some [breaking changes](http://stackoverflow.com/a/2843563/4077294), but as the post points out this has already been done with `IEnumerable` on a greater scale. ### Proposed API ```C# // Updates existing interface in being covariant. public interface IOrderedEnumerable : IEnumerable { // Existing member IOrderedEnumerable CreateOrderedEnumerable(Func keySelector, IComparer comparer, bool descending); } ``` *(edited by @terrajobst to include the API write-up from @JonHanna)* +2320 area-System.Reflection (api review) IL Object Model "@terrajobst From the recent [API Review 2015-07-08](https://github.com/dotnet/apireviews/tree/master/2015-07-08-ildasm-and-drawing) **IL Object Model** **Observations** - Implement a custom object model. - use [Mono's Cecil](https://github.com/jbevain/cecil) implementation. **Parsing** - From the byte stream - From the text representation. **Output** - Byte stream - Text Representation The issue here I see is that some instructions have ""pointers"" to data embedded into the assembly bytes. A very common one is `Strings`. So you're going to need an object to represent that so that construction of the output bytes is correct. **IL Labels** These point to data objects that encoded into the assembly. - Strings being a common one. - `switch` uses them as jump targets. A benefit of an IL object model, is that you could get an IL representation of a method, without doing a full compilation. **Targeting** For example Roslyn should ""compile"" to an IL Object model, first. which then permit for further diagnostic analysers (or an optional layer). On the produced IL For example:- A analyser to help minimise Boxing operations. you'll should be able to trickle that information back to source-code level. **Compilation** The last stage would ""Compilation Targets"" for various architectures eg. x86, x64,ARM and maybe even Typescript. This could be supplied as NuGet package. --- Side Note I implemented a partial implementation of an object model for IL [here](https://github.com/AdamSpeight2008/IL.Sarc) " +2321 area-System.Runtime ReadOnlyCollection interfaces. From MSDN: ``` public class ReadOnlyCollection : IList, ICollection, IEnumerable, IEnumerable, IList, ICollection, IReadOnlyList, IReadOnlyCollection ``` Suggested fix: ``` public class ReadOnlyCollection : IEnumerable, IEnumerable, IReadOnlyList, IReadOnlyCollection, ICollection ``` +2323 area-System.Linq Add Enumerable.ToHashSet We have `Enumerable.To*` methods for many common collections. `HashSet` is sorely missing. This feature should be cheap to implement and not be problematic in any way that I can see. Evidence that this feature is sorely missing: https://www.google.com/webhp?complete=1&hl=en&gws_rd=cr,ssl&ei=#complete=1&hl=en&q=.net+tohashset People are writing this method over and over again. +2324 area-System.Runtime Add common helper methods to the String class "The `String` class is missing some helper methods for string manipulation that are commonly needed. Of course it is possible for developers to add extension methods but that should not be required. here, I'll propose a list of methods that I think can be easily understood and are commonly required. The ordering of this list starts with the least controversial in my mind. 1. `bool Contains(this string str, string value, StringComparison comparisonType)`. We have no Contains version that takes a StringComparison. The workaround with `IndexOf` is awkward and feels like magic. 2. `Replace(..., StringComparison)`. Right now, `Replace` always uses `Ordinal`. 3. `string Left(this string str, int count)` as well as `Right`. `Left` is equivalent to `str.Substring(0, count)` but right is `str.Substring(str.Length - count, count)`. 4. `Truncate(int maxLength)`. This is not equivalent to Substring(maxLength) because Substring throws if the string is short. 5. `bool IsValidIndex(this string str, int index)` tests whether the argument can be used to obtain a character from the indexer. That sometimes comes in handy. Also `bool IsValidRange(this string str, int index, int count)`. Both can be useful for `Debug.Assert` assertions. 6. `string TrimPrefix(this string str, string prefix)` as well as `TrimPostfix`. It turns out that when working with externally generated strings (ETL processes) it is very common to need to remove a prefix. For example to get a JIRA issue number as an int you do `int.Parse(""PROJ-2317"".TrimPrefix(""PROJ-""))`. `Replace(..., ""PROJ-"", """")` is not equivalent and semantically wrong. The `TrimStart` method cannot be used here. Further helper methods would be `EnsurePrefix/Postfix`. 7. Some helpers to work on strings that might be null or empty. This comes up _all the time_. ``` public static string EmptyToNull(this string str) { return string.IsNullOrEmpty(str) ? null : str; } public static string NullToEmpty(this string str) { return str ?? string.Empty; } public static bool IsNullOrEmpty(this string str) { return string.IsNullOrEmpty(str); } public static bool IsNullOrWhitespace(this string str) { return string.IsNullOrWhiteSpace(str); } ``` 1. `SplitLines()`. Returns the string split into lines. Need to define how to deal with OS-specific line endings. Probably, this should just be `str.Replace(""\r"", """").Split('\n')` which seems to work for everything. I can see some issues with some of these proposals. They are not perfect but I want to get the discussion going. I feel the BCL has a blind spot here. The list certainly starts out with a few no-brainers. " +2327 area-System.Linq Make Enumerable.Any use the same optimizations that Count has (ICollection checks) `Enumerable.Count` uses `ICollection` and `ICollection` to perform a fast and allocation-free computation. `Enumerable.Any` should do that as well. The fact that `Any` does not check `ICollection` is pretty much the only downside to using `Any` vs. `Count() != 0`. This downside should be eliminated. This missing optimization causes confusion: - http://stackoverflow.com/questions/2989300/interview-question-any-vs-if-length-0-for-testing-if-a-collection-has-e - http://dpatrickcaldwell.blogspot.de/2011/08/enumerableany-vs-enumerablecount.html +2329 area-System.Threading Use a more dependable policy for thread pool thread injection As of .NET 4.5 the thread pool injects one thread per 0.5sec if it thinks more threads are required. This is a problem if the number of required threads suddenly increases. Example: A corporate ASP.NET website is idle at night. In the morning at 8AM 1000 people log on and start working. If the app is using let's say 100 threads starting from 8AM it will take like 50sec to create all of them. Until then there will be serious delays and timeouts. It is possible to construe arbitrarily bad scenarios. **Problem statement:** If thread pool load suddenly increases in IO bound workloads the pool is too slow to respond. This causes throughput and availability disruption. IO bound workloads relying on synchronous IO are common. Sudden workload changes are also common. Sometimes the workload can change due to a problem outside of the developer's control: A web service timing out or a database become slow. Let me stress that this causes service interruption. You can easily repro this yourself. Run a load test on an ASP.NET site with `Thread.Sleep(10000);`. The thread count goes up by 2 each second. Starting and shutting down a thread was benchmarked by me to be around 1ms in total. Threads are not really an expensive resource. The thread pool should be a lot more eager to create and destroy threads. 500ms delay to potentially save 1ms is not a good trade-off. **Easy fix:** I propose lowering the injection delay to 100ms. This reduces the problem given above by 5x. Ideally, the rate would be configurable. The shutdown delay could be lowered from 30s as well. Keeping an idle thread for 30000ms to save 1ms seems excessive. In this ticket I'm not that concerned with retiring threads, though. **Smarter, riskier fix:** The delay could depend on the number of threads in existence, the core count and the perceived pressure on the thread-pool. The injection rate could be: - 0ms delay for up to (ProcessorCount \* 1) threads - 50ms delay for up to (ProcessorCount \* 4) threads - Starting from that a delay of (100ms \* (ThreadCount / ProcessorCount \* someFloatFactor)). Reasoning: The more the CPU is oversubscribed the slower we want to inject. Maybe we need to have a maximum delay of 1sec. Or, the delay must rise sub-linearly (e.g. sqrt). Note, that the Windows Kernel has some thread pool injection heuristics that apply back pressure the more threads are in existence. This seems to work. Source: https://channel9.msdn.com/Shows/Going+Deep/Inside-Windows-8-Pedro-Teixeira-Thread-pool +2332 area-System.Net Improve ServicePointManager.DefaultConnectionLimit "`ServicePointManager.DefaultConnectionLimit` appears to be `2` on .NET 4.5 in non-ASP.NET apps. This is too low for almost any production load. I don't know what this low limit is supposed to accomplish. I understand the presence of _some_ limit as a safety measure but `2` is really never useful. Many developers have trouble with that: https://www.google.com/webhp?complete=1&hl=en&gws_rd=cr,ssl&ei=#complete=1&hl=en&q=site:stackoverflow.com+%22ServicePointManager.DefaultConnectionLimit%22 When somebody asks ""My HTTP requests are unexpectedly slow"" the default answer is ""DefaultConnectionLimit = int.MaxValue"" and this solves the problem in about 80% of the cases. This is strong evidence that the default should be changed. This is an ongoing cause for trouble and surprise. There are three choices that I can think of: 1. Unlimited. ASP.NET has chosen this (`SetAutoConfigLimits`) presumably for good reasons. I think this is the least surprising choice. When a developer says `new WebClient().Download(...)` he expects the request to be sent right away. The dev is responsible for ensuring a sane degree of concurrency. he can use `SemaphoreSlim` or the service point infrastructure for that. 2. A constant factor on the CPU count of the machine (e.g. 10). Pro: This scales up with the size of the machine. Con: It might be a low-CPU (e.g. 2) machine that does little processing but relays it's request to some backend REST service that does the heavy lifting. 100 outstanding requests per CPU would not surprise me at all in such a situation. The benefits of async IO would be throttled. 3. `1`. At least this would make developers very quickly aware that the limit exists and that they need to change it. Maybe the value of `2` follows from that reasoning. I consider this to be a weak choice that is going to be perceived as stupid (as is `2`). Another reason for ""Unlimited"" is that there should not be global limits but per-service limits. A .NET process often hosts many components each of which potentially take from the global limit. They could interact in surprising (and spooky) ways. I think the .NET Framework should pick the default value that has the least surprise and set this to `int.MaxValue`. Also, consider revising the default value of `Expect100Continue`. I believe there is not a single developer in the world who expects each `POST` request to be performed twice by default. I do not know a single case where this was ever deemed useful. Disabling this behavior would entail, I believe, low compatibility risk. (See http://stackoverflow.com/search?q=Expect100Continue) " +2335 area-System.Collections Improve ConcurrentBag GetEnumerator performance Currently `ConcurrentBag` `GetEnumerator()` causes list copying everytime enumerator is accessed eg. through `foreach`. This causes strain on the GC and list copying is also heavy operation on large bags. There should be alternative methods to enumarate the bag contents or implement `GetEnumerator()` so that it does not cause list copying. I have presented here 3 possbile solutions to this problem. **Solution 1)** Add `ForEach` method to `ConcurrentBag`: ``` CSharp public void ForEach(Func action) { // Short path if the bag is empty if (_headList == null) return; bool lockTaken = false; try { FreezeBag(ref lockTaken); ThreadLocalList currentList = _headList; while (currentList != null) // Go through thread lists { Node currentNode = currentList._head; while (currentNode != null) // Go through thead specific linked list { if (!action(currentNode._value)) return; // User wanted to break the operation currentNode = currentNode._next; } currentList = currentList._nextList; } } finally { UnfreezeBag(lockTaken); } } ``` `ForEach` function takes user specified `Func` delegate. This delegate takes the bag item as an argument and returns true/false depending on whether the user wants to continue or stop the enumeration operation. Here `ForEach` operation would lock the bag so that other threads would need to wait for the operation to finish. Therefore results of this operation would represent the bag as a moment-in-time snapshot. **Solution 2)** Add `GetEnumerableSlim` function: ``` CSharp public IEnumerable GetEnumerableSlim() { ThreadLocalList currentList = _headList; while (currentList != null) { Node currentNode = currentList._head; while (currentNode != null) { yield return currentNode._value; currentNode = currentNode._next; } currentList = currentList._nextList; } } ``` This would require an additional change to the internal class `Node`: ``` CSharp internal class Node { public Node(T value) { _value = value; } public readonly T _value; public volatile Node _next; // This needs to be marked as volatile public Node _prev; } ``` `GetEnumerableSlim` would enumerate the bag contents concurrently without locking the bag. The proposed implementation is thread safe from memory model point of view. The fields `ConcurrentBag._headList`, `ThreadLocalList._head` and `Node._next` are all volatile variables. Therefore all the threads always have the newest value available. In addition the `Node._value` reference/value is immutable. `GetEnumerableSlim` is safe to use concurrently. Of course here the enumerator would miss some of the concurrent additions/removals from the bag. Also enumerator could contain modification after the `GetEnumerator` was called. Similiar behaviour is also used in `ConcurrentDictionary`, `GetEnumerator` which may also miss some of the concurrent changes or contain new changes after the `GetEnumerator` was called. Therefore the `GetEnumerableSlim` is consistent with other concurrent collections and their enumerator implementations. (It would be intresting to know why `ConcurrentBag` `GetEnumerator` was originally implementeted so that it copies the bag contents to a list where as the other concurrent collections enumerate the contents concurrently eg. `ConcurrentQueue`.) **Solution 3)** Replace `GetEnumerator` with `GetEnumeratorSlim` implementation. This solution would totally eliminate the risk of performance degradation due to list allocations. But this might not be possible if the existing code relies on the fact that `GetEnumerator` returns moment-in-time representation of the bag. +2336 area-System.Globalization Rename tests in System.Globalization About 40-50% of the tests in System.Globalization do not have self descriptive names. They are currently named PosTest, NegTest etc. +2337 area-System.Globalization Add Unicode Tests to System.Globalization Write Unicode Tests that are generic and not coupled with a particular version of Unicode. Specifically CharUnicodeInfo.GetNumericValue() and CharUnicodeInfo.GetUnicodeCategory() +2338 area-System.Collections Add ConcurrentBag and ConcurrentQueue Clear method Currently `ConcurrentBag` does not support clearing of the bag. Currently only way to clear the bag is to call `TryTake` in a loop which is suboptimal in high concurrency applications: ``` CSharp T dummy; while(bag.TryTake(out dummy)) {} ``` Instead `Clear` method could be implemented so that the bag is emptied at once. Here is the proposed implementation: ``` CSharp public void Clear() { // Short path if the bag is empty if (_headList == null) return; bool lockTaken = false; try { FreezeBag(ref lockTaken); ThreadLocalList currentList = _headList; while (currentList != null) { currentList.Reset(); currentList = currentList._nextList; } } finally { UnfreezeBag(lockTaken); } } ``` Internal class `ThreadLocalList` needs new `Reset/Invalidate` method which sets the thread specific linked list _head and _tail to null as well as resets the counters. GC would then collect the non referenced linked list nodes. ``` CSharp internal void Reset() { _head = null; _tail = null; _count = 0; _stealCount = 0; } ``` `Clear` would lock the bag for the duration of the operation since it could cause undefined behaviour if other threads would access the bag while linked lists are being reseted. (Similarly ConcurrentDictionary also locks the dictionary when `Clear` is called.) +2339 area-System.IO Finish rewriting System.IO.FileSystem tests Finish rewriting the tests for System.IO.FileSystem and replacing the giant runTest() methods with individual [Fact]s and [Theory]s, replacing every instance of Console.WriteLine along the way. +2342 area-System.Xml XmlSchema in CoreFX Hi, Are there any plans to include XmlSchema in CoreFX? If not, is there any recommended way to manipulate schemas? Thank you. +2352 area-System.Runtime API Addition: Add generic Array.Reverse Add generic `Array.Reverse`. ## Rationale [`Array.Reverse`](https://github.com/dotnet/coreclr/blob/ef1e2ab328087c61a6878c1e84f4fc5d710aebce/src/mscorlib/src/System/Array.cs#L1570-L1606) is non-generic. It includes a fast path for a known set of primitive types via a call into the runtime (see [`TrySZReverse`](https://github.com/dotnet/coreclr/blob/4cf8a6b082d9bb1789facd996d8265d3908757b2/src/classlibnative/bcltype/arrayhelpers.cpp#L390-L424)), otherwise it falls back to slower code paths that involve boxing for value types. This is a significant performance cost for non-primitive value types, ~22x slower. Callers of `Array.Reverse` (like `List.Reverse` and `ImmutableArray.Builder.Reverse`) are affected by this performance issue. As a workaround, [`List.Reverse`](https://github.com/dotnet/coreclr/pull/1231) and [`ImmutableArray.Builder.Reverse`](https://github.com/dotnet/corefx/pull/2354) are being updated to not use the non-generic `Array.Reverse` method until the generic `Array.Reverse` method becomes available. Other non-generic methods on `Array` have generic counterparts like `Array.Sort` and `Array.Sort`, so this would just be making `Reverse` consistent with those. ## Proposed API ``` c# public abstract class Array : ... { // Proposed public static void Reverse(T[] array); public static void Reverse(T[] array, int index, int length); // Existing public static void Reverse(Array array); public static void Reverse(Array array, int index, int length); } ``` +2358 area-System.Net Initial commit of System.Net.WebHeaderCollection Just what it says on the tin. +2368 area-System.Net Address PR feedback for System.Net.WebHeaderCollection - Replace `HeaderParser` with `Func` - Make static fields `readonly` - Optimize `HeaderInfoTable` for allocation volume and remove the static constructor - Replace non-generic collections with generic collections +2369 area-System.IO Directory AccessTime, WriteTime, and CreationTime for nonexistent directories inconsistent "Labeld in code as ""//See VSWhidbey # 92050"" On Windows, Directory.GetAccessTime, Directory.GetWriteTime, and Directory.GetCreationTime (as well as their DirectoryInfo clones) will return default values when queried with a path to a nonexistent directory. On Unix, running those same methods for AccessTime and WriteTime throws a ""FileNotFoundException"". Is this behavioral difference desired? Example: ``` Assert.Equal(DateTime.FromFileTime(0).Ticks, Directory.GetLastAccessTime(""doesntexist"").Ticks); //true on Windows, throws on Ubuntu Assert.Equal(DateTime.FromFileTime(0).Ticks, Directory.GetLastWriteTime(""doesntexist"").Ticks); //same as above ``` " +2370 area-System.Net Move some System.Net.WebHeaderCollection tests from [Fact]s to [Theory]s The current version of xUnit used by CoreFX has problems writing text containing certain code points to the test log. There are tests in S.N.WHC that use these code points. These tests are currently [Fact]s, but should be combined with the appropriate [Theory] once CoreFX has taken an updated version of xUnit that fixes the issue. +2372 area-System.Net Add System.Net.WebHeaderCollection to README.md Add System.Net.WebHeaderCollection to README.md +2375 area-System.Reflection Add metadata tokens/module versions back to reflection libraries in CORE CLR. Recent versions of the CORE clr have removed metadata from the reflection libraries. We are writing .NET diagnostics tools, and these APIs are important for supporting our diagnostics scenarios. We would like the APIs to be added back. +2376 area-System.Numerics BigRational The BCL project included a BigRational type: http://bcl.codeplex.com/releases/view/42782 The code seems to be released under the [Microsoft Public License](http://bcl.codeplex.com/license). Would there be any license related issue around including BigRational in corefx? It looks like it's also available on [NuGet](https://www.nuget.org/packages/BigRationalLibrary/). There's also a Rational type in [Solver Foundation](https://msdn.microsoft.com/en-us/library/microsoft.solverfoundation.common.rational%28v=vs.93%29.aspx), but the code doesn't appear to be freely available. +2380 area-System.Net Address PR feedback for System.Net.WebHeaderCollection Fixes #2368 +2382 area-System.Net Initial commit of System.Net.WebSockets +2383 area-Infrastructure Figure out how to provide parameters to unit tests at build/run-time. The System.Net tests are likely to need this in order to provide some configurability for the servers used during testing. +2384 area-System.Net WebException: update WebException.GetStatusFromException after System.Net.Http API changes For now, we use the .HResult of the exception to help us map to a suitable WebExceptionStatus enum value. The .HResult is set into this exception by the underlying .NET Core and .NET Native versions of the System.Net.Http stack. In the future, the HttpRequestException will have its own .Status property that is an enum type that is more compatible directly with the WebExceptionStatus enum. +2385 area-System.Net System.Net.Requests.Tests: HttpWebResponse tests need a server that does not provide a Content-Type header Just what it says on the tin. The httpbin servers we're currently using for testing do not have this characteristic. +2386 area-System.Net Initial commit of System.Net.Requests This change also contains some minor refactorings in System.Net.{Http,WebHeaderCollection} in order to share some code between the various System.Net assemblies. +2387 area-System.Net Refactor Http tests for multiple test projects "This change sets up the layout for having multiple test projects for Http. It follows the current guidlines as well as working within the BUILDTOOLS requirements of having "".Tests.csproj"" for the names of the projects. After this PR is done, we will be migrating a large set of http functional tests to GitHub " +2390 area-System.IO FileSystem test update - Updated Directory tests. Note that there are still some unresolved issues pending a solution to #1221 - Consolidated AccessTime, WriteTime, and CreationTime tests for FileInfo, File, DirectoryInfo, and Directory into one file per folder - GetSetTimes.cs - Removed failing tests for the above properties - Added some Unix tests - Resolves #2359 +2392 area-System.Collections Add ImmutableArray.Builder.AddRange, MoveToArray methods The builder currently has APIs: ``` C# public void AddRange(T[] items, int length); public ImmutableArray MoveToImmutable(); ``` but is missing the following: ``` C# public void AddRange(T[] items, int start, int length); public T[] MoveToArray(); ``` +2394 area-Meta Port Workflow Foundation to .NET Core Hello, I don't see in the plans neither here and coreCLR for porting Workflow Foundation for CoreCLR... We want know how can we start porting it and add PRs for it here. Thanks +2399 area-System.Net Address CR feedback for System.Net.WebSockets. - Document the ASCII validation in `WebSocketValidate.ValidateSubProtocol` - Clean up `using` statements in `WebSocketValidate` - Decide which exception type to derive from in `WebSocketException` +2400 area-System.Linq Take advantage of algorihmic differences between first-from-ordered and ordered. The fact of something being ordered can have implications for subsequent operations. The ordering Linq methods (`OrderBy`, `ThenBy`, etc.) operate first in O(1) time and space to make a promise of a subsequent O(n log n) sort in O(n) space. In many case though the following operation does not need all of the promised operation. `.OrderBy(λ).First()`, `.OrderBy(λ).First(λ)`, and so on request that a sequence be sorted (O(n log n) time/O(n) space) and then the first element taken (O(1) time and space) which is in total an O(n log n) time/O(n) space operation. However, it is reducible to the O(n) time/O(1) space operation of identifying just the item in question which can be done in O(n) time and O(1) space. As `First`, `Last` and their variants are particularly common with ordered sequences (in some cases not having any meaning without an order), I think this would be a worth-while optimisation. There are other optimisations available, such as all aggregate operations (`Sum` etc.) could be moved from O(n log n) time to O(n) time simply by extracting the source and ignoring the ordering, this may not be as common a case as to make it worthwhile. One could argue that the user should have not put the ordering in there in the first place, and while the cost of checking for an ordered source is slightly, it's not worth paying it on all aggregate operations to benefit a flawed case. `Reverse` is somewhere in the middle. It's reasonable to expect someone might construct an ordered sequence and then `Reverse` in some cases. It's got subtleties (one cannot simply reverse all `OrderBy` to `OrderByDescending` and vice-versa because `OrderBy` is documented as performing stable ordering in linq-2-objects and therefore reversed must have reverse source ordering on equivalent items) but wouldn't be hard, but it's less clear whether the pay off would be worth it. In the more useful cases of `First` etc. there is a fly in the ointment in that this would affect the number of times both key selectors for ordering and predicates for `First` etc. were called. As per #2349 this means side effects on `Func`s would be affected, though perhaps in a way that was less predictable to the user than with that issue anyway. As such, changing the behaviour of `First` in this case would require either a decision in favour of the change that issue would allow for, or a decision that this case was less harmed by such changing side-effects. In summary. I propose that `OrderBy(…).First(…)` and its cousins be optimised, and the trade-offs of optimising `OrderBy(…).Reverse()` be considered. +2402 area-System.IO DirectoryInfo.CreateSubdirectory(path) trims whitespace and returns parent directory "Calling directory.CreateSubdirectory(""whitespaces"") will return ""directory"" and create no subdirectory. ``` DirectoryInfo parentDir = new DirectoryInfo(TestDirectory); DirectoryInfo childDir = parentDir.CreateSubdirectory("" ""); Assert.Equal(parentDir.FullName + Path.DirectorySeparatorChar, childDir.FullName); ``` If newlines or tabs are used, then it throws as expected: ``` DirectoryInfo parentDir = new DirectoryInfo(TestDirectory); Assert.Throws(() => parentDir.CreateSubdirectory(""\n"")); Assert.Throws(() => parentDir.CreateSubdirectory(""\t"")); ``` The reason for this is that dir.CreateSubdirectory(path) essentially wraps around Directory.CreateDirectory(Path.Combine(dir.FullName, path)) which trims trailing whitespace (in this case ""path""). Is this functionality desired? It makes sense to keep curtailing trailing whitespace in Directory.CreateDirectory for back compat reasons, but having CreateSubdirectory on whitespace return the parent directory is unintuitive. " +2403 area-System.IO DirectoryInfo.CreateSubdirectory(path) throws ArgumentException for newline and tab nonsignificant trailing characters "There's a discrepancy in the way DirectoryInfo.CreateSubdirectory and Directory.CreateDirectory handle trailing tab and newline characters on Windows. The below code exhibits the difference: ``` { // Directory.CreateDirectory curtails trailing tab and newline characters string filePath = IOServices.RemoveTrailingSlash(GetTestFilePath()); DirectoryInfo result = Directory.CreateDirectory(filePath + ""\n""); Assert.Equal(filePath, IOServices.RemoveTrailingSlash(result.FullName)); } { // DirectoryInfo.CreateSubdirectory throws an ArgumentException when there are newline or tab characters anywhere in a file name, even as trailing chars string fileName = IOServices.RemoveTrailingSlash(GetTestFileName()); DirectoryInfo parentDir = new DirectoryInfo(TestDirectory); Assert.Throws(() => parentDir.CreateSubdirectory(fileName + ""\n"")); //illegal characters in path } ``` This is somewhat related to #2402 in that DirectoryInfo.CreateDirectory handles whitespace very differently than Directory.CreateDirectory or even DirectoryInfo.Create. " +2405 area-System.Net Refactor WinHttpHandler tests for multiple test projects "This change sets up the layout for having multiple test projects for WinHttpHandler. It follows the current guidlines as well as working within the BUILDTOOLS requirements of having "".Tests.csproj"" for the names of the projects. Also, fixed up some cross-platform definitions in the solutions files for Http and WinHttpHandler. After this PR is done, we will be migrating a large set of http functional tests to GitHub " +2408 area-System.Net Fix WebHeaderCollection.GetEnumerator(). Change WebHeaderCollection.GetEnumerator() from an explicit implementation to a public override to avoid delegating to the base collection. This change also adds a test for this behavior. +2409 area-System.Net Address PR feedback for System.Net.Requests - Audit WebException.cs for inefficient usage of string.Format - Audit the code for string.Compare vs. string.Equals +2416 area-System.Net Abort_BeginGetRequestStreamThenAbort_RequestStreamCallbackCalledBeforeAbortReturns failed in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug/813/consoleFull ``` System.Net.Requests.Test.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_RequestStreamCallbackCalledBeforeAbortReturns(remoteServer: Uri { AbsolutePath = ""/post"", AbsoluteUri = ""http://httpbin.org/post"", Authority = ""httpbin.org"", DnsSafeHost = ""httpbin.org"", Fragment = """", ... }) [FAIL] 19:58:58 Assert.Equal() Failure 19:58:58 Expected: 1 19:58:58 Actual: 0 19:58:58 Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Requests\tests\HttpWebRequestTest.cs(548,0): at System.Net.Requests.Test.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_RequestStreamCallbackCalledBeforeAbortReturns(Uri remoteServer) ``` " +2424 area-System.Net Remove unstable System.Net.Requests tests As per issue #2416 remove unstable System.Net.Requests tests that were inadvertently ported to GitHub. +2427 area-Infrastructure Update CoreFx build to shipping nuget Need to do the following to bring ourselves current with the shipping nuget scenarios. - [x] switch from DNX to nuget.exe - [x] move projects from `dnxcore50` to `netstandard1.x` - [ ] use PCL meta-package in all test projects - [x] eliminate `test-runtime\project.json` hack - [ ] ensure we use inbox nuget task/targets when present and only use BuildTools version when inbox is missing - [x] switch to stable version consumption of packages +2433 area-System.IO Update to FileSystem Tests - Consolidated AccessTime, WriteTime, and CreationTime tests for FileInfo, File, DirectoryInfo, and Directory into one file per folder - GetSetTimes.cs - Added some Unix tests - Overhauled the Write/Read/Append tests for the File class and removed many duplicate tests - Continuation of #2390 +2435 area-Serialization DataContractSerializer constructor causes NullRefException when serializing object When using [this](https://github.com/dotnet/corefx/blob/6e5d09b0334ca8735962f29f38a390c1298639c0/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSerializer.cs#L51) constructor for the DataContractSerializer: ``` csharp public DataContractSerializer(Type type, string rootName, string rootNamespace, IEnumerable knownTypes) ``` The resulting serializer can throw a `NullReferenceException`. This is caused by the creation of `XmlDictionaryString` objects which have a `null` `XmlDictionary`. There's also a bug/change in behavior in `XmlDictionaryString` compared with Desktop. On Desktop, if you specify a `null` value for the dictionary when constructing a new instance, an `ArgumentNullException` will be thrown. In corefx, it will attempt to create an empty instance of `IXmlDictionary` and assign that. It then straight away assigns the passed in `null` value to the dictionary effectively throwing away the empty dictionary that was created. Some of the Xml writers require the dictionary for an `XmlDicationary` string to be non-null. This is causing a `NullRefException` to be thrown. Here is a partial call stack from WCF: ``` csharp at System.Xml.XmlBinaryWriterSession.PriorityDictionary`2.TryGetValue(K key, V& value) at System.Xml.XmlBinaryWriterSession.TryLookup(XmlDictionaryString s, Int32& key) at System.Xml.XmlBinaryNodeWriter.TryGetKey(XmlDictionaryString s, Int32& key) at System.Xml.XmlBinaryNodeWriter.WriteXmlnsAttribute(String prefix, XmlDictionaryString ns) at System.Xml.XmlBaseWriter.NamespaceManager.DeclareNamespaces(XmlNodeWriter writer) at System.Xml.XmlBaseWriter.EndStartElement() at System.Xml.XmlBaseWriter.AutoComplete(WriteState writeState) at System.Xml.XmlBaseWriter.StartElement(String& prefix, String localName, String ns, XmlDictionaryString xNs) at System.Xml.XmlBaseWriter.WriteStartElement(String prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri) at System.Runtime.Serialization.XmlWriterDelegator.WriteStartElementPrimitive(XmlDictionaryString localName, XmlDictionaryString namespaceUri) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteString(XmlWriterDelegator xmlWriter, String value, XmlDictionaryString name, XmlDictionaryString ns) at WriteFaultDetailToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract ) at System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph) at System.Runtime.Serialization.XmlObjectSerializer.WriteObject(XmlDictionaryWriter writer, Object graph) ``` +2444 area-System.Data Open items for System.Data.Common The following needs to be incorporated based on the comments in the pull request https://github.com/dotnet/corefx/pull/2197 Please note that the code is being submitted via another pull request https://github.com/dotnet/corefx/pull/2443 1. Investigate the CancellationToken for the Tasks 2. There are more comments made by Stephen Toub, which need to be taken care of. Refer to https://github.com/dotnet/corefx/pull/2197 +2454 area-System.Threading Remove reentrancy by default from the TPL The TPL has a few performance features that cause reentrancy. Here are the ones I know of: 1. `TaskCompletionSource.SetXxx` can cause continuations to be executed synchronously. AFAIK this can happen both with or without `ExecuteSynchronously`. Starting with .NET 4.6 there is `RunContinuationsAsynchronously` to disable this behavior. 2. `Task.Wait()` and `Task.Result` can execute an unstarted CPU-based task inline. I do not know of any good workaround from the perspective of the caller of `Wait`/`Result`. Probably, `static Task.Wait(Task)` and related methods have the same problem. 3. `CancellationTokenSource.Cancel()` can execute registered notifications inline. 4. `TaskAwaiter` uses `TaskContinuationOptions.ExecuteSynchronously` if there is no synchronization context set. This forces reentrancy for whatever code completes the task being awaited. In all of these situations arbitrary code can run as part of invoking the respective TPL method. You might not control that code. There might be no way for you to know what code that is because you are writing a library. In big apps it might be architecturally impossible/unwanted to know what code might run. This is **arbitrary, non-deterministic reentrancy in multi-threaded code**. This is very dangerous behavior. Concrete problems (examples): 1. You might call `TaskCompletionSource.SetResult()` under a lock. Now, arbitrary code might run under your lock as well. This can **deadlock**. 2. That arbitrary code might perform blocking operations (e.g. IO). This will now run under your lock and **extend the lock hold time**. 3. The **invariants** of your data might be **temporarily broken**. Due to reentrancy other code can now observe invalid data. 4. **Monitor might fail to provide mutual exclusion** because `lock (x) { lock (x) { } }` does not block/deadlock. Inlining code onto the current thread opens the gates for any locks held by this thread. 5. You might run on a thread with **thread-dependent state** (STA thread, changed priority, deviating culture, `HttpContext.Current` null or not null, ...). This state is now exposed to arbitrary code. It is made available for mutation as well. **This is very unsafe behavior by default.** The number of questions that come up about it on Stack Overflow is noticeable. The bugs are insidious (racy). Please disable _all_ of these behaviors by default. Make unsafe performance features opt in. I doubt there will be compatibility impact from doing this because all of the behaviors above are, to my knowledge, non-deterministic. Completion callbacks should always be queued to the thread pool (or to any scheduler if specified) by default. The TPL should be safe by default. Reentrancy behavior should be: 1. Off by default. 2. Opt-in possible. 3. Overriding forced opt out by any side taking part (completing thread and registering thread). A library should be able to force-disable any of this, no matter whether it registers continuations or whether it completes tasks. This is a problem both for monolithic apps as well as for library authors. See this high-profile case that lead to the inclusion of `RunContinuationsAsynchronously` in .NET 4.6: http://stackoverflow.com/questions/22579206/how-can-i-prevent-synchronous-continuations-on-a-task +2458 area-System.IO FileInfo.Open() with FileMode.Append throws unexpected exception The following code is an example of the situation: ``` string fileName = GetTestFilePath(); using (FileStream fs = new FileInfo(fileName).Open(FileMode.Create)) { fs.WriteByte(0); } using (FileStream fs = new FileInfo(fileName).Open(FileMode.Append)) // Throws ArgumentException: append access can be requested only in write-only mode { } ``` The issue is a result of the default FileAccess value used in the FileInfo.Open(FileMode) method: ``` public FileStream Open(FileMode mode) { return Open(mode, FileAccess.ReadWrite, FileShare.None); } ``` when it should be the same as what File.Open(FileMode) does like so: ``` public FileStream Open(FileMode mode) { return Open(mode, (mode == FileMode.Append ? FileAccess.Write : FileAccess.ReadWrite), FileShare.None); } ``` +2459 area-System.IO DriveLetter_Unix currently failing System.IO.FileSystem.Tests.Directory_CreateDirectory.DriveLetter_Unix [FAIL] 09:58:09 System.IO.DirectoryNotFoundException : Could not find a part of the path '/mnt/j/workspace/dotnet_corefx_linux_debug_tst_prtest/bin/tests/Windows_NT.AnyCPU.Debug/System.IO.FileSystem.Tests/dnxcore50/C:'. 09:58:09 Stack Trace: 09:58:10 at System.IO.UnixFileSystem.RemoveDirectoryInternal(String fullPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) 09:58:10 at System.IO.UnixFileSystem.RemoveDirectory(String fullPath, Boolean recursive) 09:58:10 at System.IO.Directory.Delete(String path) 09:58:10 at System.IO.FileSystem.Tests.Directory_CreateDirectory.DriveLetter_Unix() 09:58:10 Finished: System.IO.FileSystem.Tests +2460 area-System.IO File.Move relies on the UnixFileSystem CopyFile method that overwrites only when it shouldn't The File.Move(source, dest) and FileInfo.MoveTo(dest) functions do not currently function as they should with regards to overwrites. The following test passes on Windows, but fails on Linux: ``` FileInfo testFileSource = new FileInfo(GetTestFilePath()); testFileSource.Create().Dispose(); FileInfo testFileDest = new FileInfo(GetTestFilePath()); testFileDest.Create().Dispose(); Assert.Throws(() => File.Move(testFileSource.FullName, testFileDest.FullName)); // doesn't throw on Ubuntu ``` +2461 area-System.Data [RC1 blocker] Windows interop getting called on OS X Using SqlClient on CoreCLR (Darwin) calls interop methods that require Windows APIs. This is a regression. This behavior just showed after upgrading DNX. Currently using `dnx-coreclr-darwin-x64.1.0.0-beta7-12264`. Here is the stack trace: > ``` > System.DllNotFoundException : Unable to load DLL 'api-ms-win-core-processthreads-l1-1-0.dll': The specified module could not be found. > (Exception from HRESULT: 0x8007007E) > Stack Trace: > at Interop.mincore.GetCurrentThread() > at Interop.mincore.OpenThreadToken(TokenAccessLevels desiredAccess, WinSecurityContext openAs, SafeAccessTokenHandle& tokenHandle) > at System.Security.Principal.WindowsIdentity.GetCurrentToken(TokenAccessLevels desiredAccess, Boolean threadOnly, Boolean& isImpersonating, Int32& hr) > at System.Security.Principal.WindowsIdentity.GetCurrentInternal(TokenAccessLevels desiredAccess, Boolean threadOnly) > at System.Data.ProviderBase.DbConnectionPoolIdentity.GetCurrent() > at System.Data.ProviderBase.DbConnectionPoolGroup.GetConnectionPool(DbConnectionFactory connectionFactory) > at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPool(DbConnection owningObject, DbConnectionPoolGroup connectionPoolGroup) > at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) > at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) > at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) > at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) > at System.Data.SqlClient.SqlConnection.Open() > at Microsoft.Data.Entity.SqlServer.FunctionalTests.SqlServerTestStore.DeleteDatabase(String name) > at Microsoft.Data.Entity.SqlServer.FunctionalTests.SqlServerTestStore.CreateTransient(Boolean createDatabase) > at Microsoft.Data.Entity.SqlServer.FunctionalTests.SqlServerTestStore.CreateScratch(Boolean createDatabase) > at Microsoft.Data.Entity.FunctionalTests.SharedCrossStoreFixture.CreateTestStore(Type testStoreType) > at Microsoft.Data.Entity.FunctionalTests.SqlServerCrossStoreFixture.CreateTestStore(Type testStoreType) > at Microsoft.Data.Entity.FunctionalTests.EndToEndTest`2..ctor(TFixture fixture) > at Microsoft.Data.Entity.FunctionalTests.SqlServerEndToEndTest..ctor(SqlServerCrossStoreFixture fixture) > ``` +2463 area-System.Net Fix proxy authentication handling during redirects /cc @CIPop @pgavlin @SidharthNabar @ChengTian Reference issue #2168 +2467 area-System.Net Avoid internal enumerator allocations in HttpClient There are many places where `ObjectCollection` instances are enumerated internally. Each time one of these collections is enumerated, an enumerator is allocated on the heap. This change avoids the enumerator allocation by using a struct enumerator (internal-only). +2470 area-System.Net Avoid a closure/delegate allocation in WinHttpHandler One-line change to avoid a closure and delegate allocation on each call. +2473 area-System.Net Initial xplat work for HttpClient Created a CurlHandler class to wrap calls to libcurl. Very limited support currently which will be extended in future checkins. Start of #2480 +2480 area-System.Net Implement System.Net.Http on Unix +2481 area-System.Net Implement System.Net.Primitives on Unix +2482 area-System.Net Implement System.Net.Sockets on Unix +2483 area-System.Net Implement System.Net.Security on Unix +2484 area-System.Net Implement System.Net.NameResolution on Unix +2485 area-System.Net Implement System.Net.NetworkInformation on Unix +2486 area-System.Net Implement System.Net.WebSockets.Client on Unix +2487 area-System.Net Implement System.Net.Utilities on Unix +2488 area-System.Net GetResponseAsync_ServerNameNotInDns_ThrowsWebException failing locally "I just upgraded to Windows 10 RTM and VS2015 RTM. Not sure if it's related, but this test is now failing for me locally. ``` Discovering: System.Net.Requests.Tests Discovered: System.Net.Requests.Tests Starting: System.Net.Requests.Tests System.Net.Requests.Test.HttpWebRequestTest.GetResponseAsync_ServerNameNotInDns_ThrowsWebException(remoteServer: Uri { AbsolutePath = ""/get"", AbsoluteUri = ""http://httpbin.org/get"", Authority = ""httpbin.org"", DnsSafeHost = ""httpbin.org"", Fragment = """", ... }) [FAIL] Assert.True() Failure Stack Trace: \corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs(398,0): at System.Net.Requests.Test.HttpWebRequestTest.GetRes ponseAsync_ServerNameNotInDns_ThrowsWebException(Uri remoteServer) System.Net.Requests.Test.HttpWebRequestTest.GetResponseAsync_ServerNameNotInDns_ThrowsWebException(remoteServer: Uri { AbsolutePath = ""/get"", AbsoluteUri = ""https://httpbin.org/get"", Authority = ""httpbin.org"", DnsSafeHost = ""httpbin.org"", Fragment = """", ... }) [FAIL] Assert.True() Failure Stack Trace: \corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs(398,0): at System.Net.Requests.Test.HttpWebRequestTest.GetRes ponseAsync_ServerNameNotInDns_ThrowsWebException(Uri remoteServer) Finished: System.Net.Requests.Tests ``` " +2490 area-System.Net Open Source System.Net.Websockets.Client +2492 area-System.Net Open source System.Net.Security +2493 area-System.Net Avoid unnecessary byte[] allocations in HttpContent `HttpContent.ReadAsStringAsync()` has a bunch of calls to `Encoding.GetPreamble()` as part of its encoding detection. `GetPreamble()` creates a new `byte[]` each time it is called. These `byte[]` allocations can be avoided. +2496 area-Serialization Fix serialization test failure in Minsk timezone Fix #2287 +2499 area-System.Net Replace ad-hoc definitions of SafeHandleZeroOrMinusOneIsInvalid with a single definition. Just as it says. There are at least two or three distinct definitions of this type, all with identical semantics. +2500 area-System.Net Event logging for System.Net.* Event logging for these assemblies is currently unimplemented: we need to design and implement a solution. +2501 area-System.Net Remove dead code - SafeWinHttpHandleWithCallback SafeWinHttpHandleWithCallback is a better pattern; SafeWinHttpHandle is probably a better name. The implementation for the former should probably be folded into the latter. +2502 area-Serialization XmlUTF8TextWriter has not implement WriteStartElementAsync or WriteEndElementAsync WCF's async operations need to call these methods. See https://github.com/dotnet/wcf/issues/221. +2503 area-System.Net Move System.Net.* strings to resources as appropriate.` Just what it says on the tin. +2504 area-Serialization Add FlushAsync and WriteBase64Async in XmlDictionaryWriter WCF needs to use FlushAsync and WriteBase64Async. See https://github.com/dotnet/wcf/issues/222. +2505 area-System.Net Replace single-item pinned buffers in System.Net.WebSockets.Client with PinnableBufferCache. +2506 area-System.Net Optimize locking patterns in System.Net.WebSockets.Client. For example, release the lock between operations and check, under the lock, that the state is still valid before continuing. +2507 area-System.Net Optimize factoring over operations between WinHttpWebSocket and WinHttpWebSocketCallback. It may be profitable to move some code from WinHttpWebSocket to WinHttpWebSocketCallback. +2508 area-System.Net Release pinned buffers at correct time in WinHttpResponseStream, WinHttpWebSocket This is a potential bug: pinned buffers must not be released until it is guaranteed that no further operations will be made that use those buffers. +2509 area-System.Net Handle SSL-related failures in WinHttpWebSocketCallback. This code needs to be shared with WinHttpHandler. +2511 area-System.Net Initial commit of System.Net.WebSockets.Client. +2512 area-System.IO Final major update to the tests for System.IO.FileSystem "- Resolves #2458. FileInfo.Open(FileMode.Append) didn't allow appending per so I modified FileInfo to allow it - Resolves #2460. File.Move and FileInfo.MoveTo no longer always overwrite the destination file. - Resolves #2459. Reenabled Directory_CreateDirectory.DriveLetter_Unix as it's previous failures were not the fault of the method but of the system. - Added Interop.Link to the Interop files for the implementation of File.Move - Consolidated all of the related files that did nothing but inherit from other classes (e.g. File_GetFiles_str and File_GetFiles_str_str were consolidated into File_GetFiles) - Renamed all files to only include parameters in the filename if there are multiple files for a test. - Removed the ""partial"" keyword from some test classes - Finished overhauling all test cases that don't directly require solutions to Build System issues before being re-added (e.g. those that require networked drives or altering the current directory) - Added some tests to increase code coverage slightly in some cases. - All classes and files have been renamed to match the standard set by FileStream: only include parameters in the test/class name if there are overloads - Modified the Unix behavior for distinguishing between a FileNotFoundException and a DirectoryNotFoundException to match that of Windows. " +2522 area-System.Security RSAOpenSsl should support PSS signing RSAOpenSsl::SignHash throws when the signing mode is other than Pkcs1. OpenSSL's RSA_sign function only does PKCS1, and that's how signing currently works. PSS is theoretically available, but needs to be done using lower level API. Remember to keep it bound to OpenSsl 1.0.1 (if possible... if not, it might have to just throw on OSX). +2523 area-System.Security RSAOpenSsl should support OAEP padding using a SHA-2 algorithm Currently it only supports Pkcs1 and OaepSha1. Other hashing algorithms would work, but it requires doing the OAEP manually, since OpenSSL doesn't expose a convenient wrapper function for this. +2524 area-System.Net Reduce HttpWebResponse header allocations Removed unnecessary ToUpperInvariant allocation in WinHttpHandler. HttpWebResponse created a StringBuilder for every header in the response to handle possible multi-values. Common case is a single value so lazy create the buffer when there is more than 1. +2525 area-System.Net System.Uri.GetComponents behavior and MSDN documentation "`System.Uri.GetComponents` method behaves different from the MSDN documentation. https://msdn.microsoft.com/en-us/library/system.uri.getcomponents%28v=vs.110%29.aspx The documentation says: > When `Query` or `Fragment` is specified alone, the return value includes the delimiter. But actually, this method returns value without delimiter. ``` csharp var uri = new Uri(""http://www.example.com/path/to/sample.html?key=value#fragment""); // Expected: ""path/to/sample.html"" (without delimiter; not ""/path/to/sample.html"") Debug.Assert(uri.GetComponents(UriComponents.Path, UriFormat.SafeUnescaped).Equals(""path/to/sample.html"")); // Expected: ""/path/to/sample.html"" (with delimiter) Debug.Assert(uri.GetComponents(UriComponents.Path | UriComponents.KeepDelimiter, UriFormat.SafeUnescaped).Equals(""/path/to/sample.html"")); // FAIL (Expected: ""?key=value"", Actual: ""key=value"") Debug.Assert(uri.GetComponents(UriComponents.Query, UriFormat.SafeUnescaped).Equals(""?key=value"")); // Expected: ""?key=value"" (with delimter) Debug.Assert(uri.GetComponents(UriComponents.Query | UriComponents.KeepDelimiter, UriFormat.SafeUnescaped).Equals(""?key=value"")); // FAIL (Expected: ""#fragment"", Actual: ""fragment"") Debug.Assert(uri.GetComponents(UriComponents.Fragment, UriFormat.SafeUnescaped).Equals(""#fragment"")); // Expected: ""#fragment"" (with delimiter) Debug.Assert(uri.GetComponents(UriComponents.Fragment | UriComponents.KeepDelimiter, UriFormat.SafeUnescaped).Equals(""#fragment"")); ``` I needed `UriComponents.KeepDelimiter` flag just like `UriComponents.Path` to get result with delimiter. I'm not sure that this is a bug (maybe this is a documentation issue; even Mono behaves like this), but I want this ""issue"" to be reviewed anyway. " +2531 area-System.Net Remove StreamToStreamCopy in HttpClient This change removes the internal `StreamToStreamCopy` class, which is only used by `StreamContent.SerializeToStreamAsync`, thus avoiding the instance allocation of the class. `Stream` already has a built-in `CopyToAsync` helper that can be used, that `MemoryStream` [overrides](https://github.com/dotnet/coreclr/blob/ef1e2ab328087c61a6878c1e84f4fc5d710aebce/src/mscorlib/src/System/IO/MemoryStream.cs#L455-L457) to provide a more efficient implementation when the destination is another MemoryStream. Also some minor cleanup: I made some fields `readonly` that could be, and removed an unused using. Question about the existing behavior: If an exception is thrown during the copy operation, the source stream won't be disposed (if it can be disposed). Is this is by design? I was going to wrap the `await _content.CopyToAsync(...)` in a try/finally with the dispose in the finally, but I didn't want to change the existing behavior if it is by design. +2532 area-System.Net Cleanup ByteArrayContent - Use `Task.FromResult` instead of `TaskCompletionSource` (avoids the allocation) - Make readonly fields `readonly` - Remove unused `using` +2534 area-System.Net Make StreamToStreamCopy static Avoids the unnecessary instance allocation in `StreamContent.SerializeToStreamAsync()`. +2535 area-System.Text System.Text.Encoding HeaderName missing Was this property removed on purpose? Or is it just not yet implemented? If it _has_ been purposely removed, what should I be using instead if I want the name to use in email headers? +2537 area-System.IO Win32FileSystem File.Move is inconsistent with its Exception throws "There is an inconsistent behavior in File.Move with regards to non existent directories in paths that is present in both the desktop and core frameworks. If the parent directory of the source file is nonexistent, a FileNotFoundException is thrown. If the parent directory of the dest file is nonexistent, a DirectoryNotFoundException is thrown. Example: ``` File.Create(""test1"").Dispose(); File.Move(Path.Combine(Directory.GetCurrentDirectory(), ""test2"", ""test3""), ""test4""); // throws a FileNotFoundException File.Move(""test1"", Path.Combine(Directory.GetCurrentDirectory(), ""test2"", ""test3"")); // throws a DirectoryNotFoundException ``` The reason for this is that File.Move makes a call to ""InternalExists"" to check that the sourceFile exists in full and if it doesn't then a FileNotFoundException is thrown regardless of which part of the path caused the failure. Removing this check is simple and will leave path checking to the FileSystem implementation (which would be preferable), but it will need to be mirrored in the desktop as well or ignored/worked around on both. " +2538 area-System.Globalization TimeZoneInfo should have consistent Ids across Windows and Linux "Currently Windows has TimeZoneInfo.Id values like ""Pacific Standard Time"" and ""Eastern Standard Time"". But on Linux they are ""America/Los_Angeles"" and ""America/New_York"". We should make these Ids consistent across platforms so the same code can run on both Windows and Linux. Currently if you call TimeZoneInfo.FindSystemTimeZoneById you need to pass in different strings between Windows and Linux. " +2542 area-System.Net Unify System.Net.WebSockets.Client's WinHttpException with System.Net.Http's WinHttpException. +2546 area-System.Security Many deprecation warnings in System.Security.Cryptography.Native on Mac OS X I'm about to unblock the mac build by disabling the warnings, but building System.Security.Crytpography.Native on Mac OS X produces many deprecation warnings. +2551 area-System.Reflection BugFix: Signature Decoder not providing ValueType or Class flag This change would fix #2314. I just added to flags into the provider interface so that the api consumers can retrieve the information in case they need it. In order to do these they need to set the flag `bool NeedProjectedFlags` to `true` . In this case they could know if it is a valuetype or class through the `SignatureTypeCode TypeCode` property added in `ISignatureTypeProvider` as well. Adding @AlexGhiondea +2553 area-System.Net Fix regression in HttpMethod.GetHashCode() A PR from last month changed how GetHashCode() works. This ended up breaking tests against the .NET Native build of System.Net.Http which shares the same source code as CoreFx. So, reverting the change in GetHashCode() and porting additional ToF tests to GitHub. +2554 area-System.Net Update README.md for System.Net.WebSockets.Client System.Net.WebSockets.Client source code was recently ported to GitHub. Updating the README.md for that. cc: @CIPop @SidharthNabar @pgavlin @stephentoub @ericstj +2555 area-System.Net Address feedback on xplat implementation of HttpClient +2556 area-System.Net Consider changing HttpMethod to do equality comparisons case-sensitive Reference PR #2553. Consider changing the `System.Net.Http.HttpMethod` class so that equality comparison between two `HttpMethod` objects is done in a case-sensitive manner (aligning with the latest HTTP RFC) instead of the current case-insensitive manner. +2557 area-System.Net HttpClient via libcurl : proxy support This commit introduces integrates CURL handler with the proxy functionality offered by libcurl +2558 area-System.IO Modified calls to GetTestFilePath within loops to not use the same filename - Added an overload to GetTestFilePath that takes an integer index parameter to add to the generated filename so that calls to the function within loops will be able to differentiate themselves - Resolves #1434 +2559 area-System.Net Initial commit of System.Net.Primitives. +2561 area-System.Net Optimize HttpMethod.GetHashCode() Avoid unnecessary allocations associated with the use of `ToUpperInvariant()`, and test improvements. Also, some minor cleanup (made `_method` `readonly`, removed unused usings, and removed trailing whitespace). +2575 area-System.Data SQL server alias recognized with CLR runtime but not CoreCLR "I wrote a test console application and set up a SQL configuration alias in SQL server configuration manager. When running my application with the dnx 4.51 runtime, the database connection is established with no problem and the application functions normally If I switch the runtime to dnx core 5.0, any attempts to connect to the database from the application fail with the SqlException 'The network path was not found.' Replacing the alias in the connection string with the actual server name resolves the issue. The connection string I'm using is included below: ``` ""connectionString"": ""Server=aliasName;Database=dbName;Trusted_Connection=True;MultipleActiveResultSets=true"" ``` Perhaps the System.Data.SqlClient coreCLR library does not support SQL aliases and this is not a bug. I just think the different behavior between runtimes is a bit odd and the error it produces is not helpful in deciphering the problem. " +2576 area-System.Threading System.Threading.Thread should support all runtimes The current System.Threading.Thread (and System.Threading.ThreadPool) packages only support desktop and CoreCLR. The problem is that with a name like System.Threading.\* and with threads being a core part of many apps, people won't know (or care!) that UWP apps will lose out on that library because only Task is supported. The best solution is to implement Thread/ThreadPool for UWP so that people can use the threading model they're most comfortable with and what's most appropriate for the job. Forcing Task for UWP is counterproductive if it'll mean that UWP will lose out on many libraries that choose to use Thread anyway. When it comes to creation/consumption of .NET Core packages, right now ASPNet is the biggest driver. As much as we want people to use UWP, it's just smaller for now. That puts even greater pressure on UWP as library authors will either not know that Thread isn't available on UWP or care even if they do. .NET Core is supposed to be unifying the BCL and shielding libraries from platform/runtime differences. Please don't fragment it with something as central as Thread. +2582 area-Infrastructure Build warnings from outer-loop only test projects We have a bunch of these on every build: ``` EXEC : warning : System.Xml.RW.FactoryReader.Tests has no tests to run ``` My understanding is that these libraries contain only outer loop tests by design. in that case, we should adjust things to not warn in that case. I also wonder if we really need so many different XML test assemblies... +2583 area-System.Security PfxTests.TestPrivateKey intermittent failure I can't repro it, but I got the following once: ``` System.Security.Cryptography.X509Certificates.Tests.PfxTests.TestPrivateKey [FAIL] System.Security.Cryptography.CryptographicException : OpenCSP failed with error code 2148073494. Stack Trace: D:\Src\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\CapiHelper.cs(306,0): at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) D:\Src\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\CapiHelper.cs(698,0): at Internal.NativeCrypto.CapiHelper.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 keySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) D:\Src\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\RSACryptoServiceProvider.cs(89,0): at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() D:\Src\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\RSACryptoServiceProvider.cs(69,0): at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize) D:\Src\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\RSACryptoServiceProvider.cs(50,0): at System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters parameters) D:\Src\corefx\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(49,0): at Internal.Cryptography.Pal.CertificatePal.get_PrivateKey() D:\Src\corefx\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\RSACertificateExtensions.cs(55,0): at System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2 certificate) D:\Src\corefx\src\System.Security.Cryptography.X509Certificates\tests\PfxTests.cs(70,0): at System.Security.Cryptography.X509Certificates.Tests.PfxTests.TestPrivateKey() Finished: System.Security.Cryptography.X509Certificates.Tests === TEST EXECUTION SUMMARY === System.Security.Cryptography.X509Certificates.Tests Total: 157, Errors: 0, Failed: 1, Skipped: 0, Time: 0.854s ``` +2585 area-System.Reflection Merge master to dev/metadata +2586 area-System.Reflection SignatureDecoder isValueType not set correctly for some projected types and should be optional Follow-up to PR #2551 a. isValueType is not set correctly when a type is projected from value type to class or vice versa. b. There should be an opt-in option to pas non-null isValueType. By default, it should always be null and when option is on, it should compute isValueType (including possible projection case) cc @nguerrera +2588 area-System.IO Modified the Unix implementation of FileMove and fixed the corresponding broken FileSystemWatcher tests - Resolves #2460 - Changed the way the UnixFileSystem does File moving; it was previously implemented using the rename syscall but now uses a combination of link and unlink. The side effect of this change is that the FileSystemWatcher will now treat File.Move as a deletion. - Removed all tests from FileSystemWatcher that made calls to File.Move and consolidated them into a new file: FileSystemWatcher.MoveFile.cs. This new file separates tests into Windows and Unix categories and uses Theories to supply the input WatcherChangeType and whether a move should trigger an event for the given type. If we later decide to change the Unix behavior of MoveFile, changing the FileSystemWatcher tests will be a simple matter of flipping the boolean values for the affected tests. +2589 area-System.Net Update README.md for System.Net.Primitives System.Net.Primitives source code is now on GitHub. Updating the README.md. +2591 area-System.Net Cleanup CookieCollection - Public surface area now matches the [reference assembly contract](https://github.com/dotnet/corefx/blob/b84605422a74d69e7aa61a25d8760bfe2fa32296/src/System.Net.Primitives/ref/System.Net.Primitives.cs#L47-L55) and dead code removed - Removed the `CookieCollectionEnumerator` (`_list.GetEnumerator()` used instead). This removes the need for the `_version` field as `List` already tracks this - Avoid the enumerator allocation in `Add(CookieCollection)` by enumerating `_list` - Removed unused internal constructor and associated field - Made the `_list` field readonly - Removed unused usings - Removed trailing whitespace Fixes #2593 +2593 area-System.Net Remove dead code related to CookieCollection.IsReadOnly from System.Net.Primitives **Edit:** `IsReadOnly` is dead code that should be removed from CoreCLR. --- Original issue description (kept here so the comments below make sense): > The [default constructor](https://github.com/dotnet/corefx/blob/63ff03fce5ab7c7ac6920d99af148a447d04c822/src/System.Net.Primitives/src/System/Net/CookieCollection.cs#L33) sets this to `true`, but `CookieCollection` is always mutable (same as on the desktop framework) -- there's nothing in its implementation that enforces it being read-only. > > Is it too late to remove this public property from the System.Net.Primitives contract? (I'm assuming it can't be removed, but figured I'd ask anyway). > > If it can't be removed, should the default value be changed to `false` to reflect the actual behavior? However, this would go against the [MSDN documentation](https://msdn.microsoft.com/en-us/library/w6x28886%28v=vs.110%29.aspx) for the desktop framework, which states the default value is `true`. +2595 area-System.Net Implement System.Net.Primitives for *nix. Platform abstractions have been added for IP address parsing and host information. The closest APIs that most POSIX systems have to the NTDLL IP address parsing APIs are getaddrinfo/getnameinfo. In the case of IPv6 in particular, inet_ntop/inet_pton are not sufficient, as these APIs do not support scope IDs. +2597 area-System.Net HttpClient xplat: Basic request and response processing - Also addressed some of the comments in https://github.com/dotnet/corefx/issues/2555 +2598 area-System.Net Fix HTTPS checks in xplat HttpClient cc: @davidsh @stephentoub @CIPop @SidharthNabar @pgavlin +2604 area-Infrastructure run-test.sh deploys WP8 dataflow if present, fails ETW test On my machine (might have different behavior based on file system order), running with System.Threading.Tasks.Dataflow and System.Threading.Tasks.Dataflow.WP8 dlls in the corefx bin path, the test overlay gets the WP8 build, which doesn't have FEATURE_TRACING and the ETW test fails +2608 area-System.Net From Feedback in issue 2149, Propagate CancellationToken in calls to TrySetCanceled: As a minor improvement, using the new TrySetCanceled overload, you could make this state.Tcs.TrySetCanceled(state.CancellationToken) ... that just helps to ensure that the token is propagated to anyone getting an OperationCanceledException later on. +2610 area-System.IO FileSystem GetLastWriteTime and GetLastAccessTime don't properly convert values to Local DateTimeKind "The following test has different results for each platform: ``` FileInfo testFile = new FileInfo(""test.txt""); testFile.Create().Dispose(); DateTime dt = new DateTime(2014, 12, 1, 12, 0, 0, DateTimeKind.Local); Console.WriteLine(""regular: "" + dt.ToString()); Console.WriteLine(""local: "" + dt.ToLocalTime().ToString()); Console.WriteLine(""utc: "" + dt.ToUniversalTime().ToString()); File.SetLastWriteTime(testFile.FullName, dt); var res = File.GetLastWriteTime(testFile.FullName); Console.WriteLine(""result: "" + res.ToString()); Console.WriteLine(""result.toLocal(): "" + res.ToLocalTime().ToString()); Console.WriteLine(""result.ToUTC(): "" + res.ToUniversalTime().ToString()); Console.WriteLine(); ``` On Desktop Framework: ``` regular: 12/1/2014 12:00:00 PM local: 12/1/2014 12:00:00 PM utc: 12/1/2014 8:00:00 PM result: 12/1/2014 12:00:00 PM result.toLocal(): 12/1/2014 12:00:00 PM result.ToUTC(): 12/1/2014 8:00:00 PM ``` On Win32 Core: ``` regular: 12/1/2014 12:00:00 PM local: 12/1/2014 12:00:00 PM utc: 12/1/2014 8:00:00 PM result: 12/1/2014 12:00:00 PM result.toLocal(): 12/1/2014 4:00:00 AM result.ToUTC(): 12/1/2014 8:00:00 PM ``` On Linux Core: ``` regular: 12/01/2014 12:00:00 local: 12/01/2014 12:00:00 utc: 12/01/2014 4:00:00 result: 12/01/2014 04:00:00 result.toLocal(): 12/01/2014 12:00:00 result.ToUTC(): 12/01/2014 20:00:00 ``` The issue lies in the conversions from DateTimeOffsets to DateTimes: nowhere is DateTimeKind (i.e. local or UTC) considered when reading the attributes of a file. To make the behavior in line with the Desktop, we should convert all filesystem times (CreationTime, WriteTime, AccessTime) to DateTimeKind.Local when converting them from a DateTimeOffset to a DateTime. Thanks to @eerhardt for help finding the lack of conversion. " +2611 area-System.IO Fixed AccessTime, WriteTime, and CreationTime to return a DateTime object with properly set DateTimeKind - The implementations of GetLastAccessTime, GetCreationTime, and GetLastWriteTime were not properly converting the read values to LocalTime for either Windows or Unix. - Resolves #2603, #2610 +2613 area-System.Diagnostics ProcessThreadTests.TestStartTimeProperty failed on Linux in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/1488/console ``` 20:32:15 System.Diagnostics.ProcessTests.ProcessThreadTests.TestStartTimeProperty [FAIL] 20:32:15 Assert+WrapperXunitException : File path: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests\ProcessThreadTests.cs. Line: 85 20:32:15 ---- Assert.InRange() Failure 20:32:15 Range: (635742559171500970 - 635742559171722530) 20:32:15 Actual: 635742559171972800 20:32:15 Stack Trace: 20:32:16 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 20:32:16 at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) 20:32:16 at System.Diagnostics.ProcessTests.ProcessThreadTests.TestStartTimeProperty() 20:32:16 ----- Inner Stack Trace ----- 20:32:16 at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) 20:32:20 Finished: System.Diagnostics.Process.Tests 20:32:20 20:32:20 === TEST EXECUTION SUMMARY === 20:32:20 System.Diagnostics.Process.Tests Total: 55, Errors: 0, Failed: 1, Skipped: 0, Time: 6.307s ``` +2618 area-System.Runtime TimeZoneInfo.TransitionTime cannot support Israel, et al. time zones on Linux "It currently isn't possible to support Israel, Asia/Amman, Asia/Gaza, Asia/Hebron, Pacific/Fiji and America/Godthab daylight savings rules in the POSIX string that is used on Linux to describe the daylight savings transitions for years after the last transition stored in the file. Here is Israel's POSIX string: IST-2IDT,M3.4.4/**26**,M10.5.0 This is saying that daylight savings starts 26 hours after midnight of the 4th Thursday of March. ""On July 8, 2013, the Israeli Knesset approved the bill to extend IDT even further. According to the bill, IDT will begin on the Friday before the last Sunday of March, and end on the last Sunday of October."" From https://en.wikipedia.org/wiki/Israel_Summer_Time So this might not be the last Friday of the month. Some years it is the last Friday of the month, some years it is the 2nd to last. This rule isn't possible to describe in the current [TimeZoneInfo.TransitionTime structure](https://msdn.microsoft.com/en-us/library/vstudio/system.timezoneinfo.transitiontime%28v=vs.110%29.aspx). It can only specify the 4th Friday, or the last Friday, there is no way to say ""the Friday before the last Sunday"". To fix this, we should add a ""TimeSpan Offset"" to TransitionTime that we can use to convert the string ""M3.4.4/26"" into a TransitionTime structure. Here the TimeSpan Offset = 26 hours, and month = 3, week = 4, day = 4. The ""TimeOfDay"" property would be ignored in this case. Note that America/Godthab uses a negative time offset: WGT3WGST,M3.5.0/-2,M10.5.0/-1. " +2619 area-System.Reflection Three TypeExtensions tests failing on Linux with xUnit 2.1.0 A few of the reflection tests seem to be failing on Linux when run with xUnit 2.1.0. These tests are doing fairly simple stuff, just subscribing some events and then triggering them, and checking the state afterwards. ``` System.Reflection.Compatibility.UnitTests.EventInfoAddEventHandler.PosTest2 System.Reflection.Compatibility.UnitTests.EventInfoAddEventHandler.PosTest3 System.Reflection.Compatibility.UnitTests.EventInfoAddEventHandler.PosTest1 ``` +2621 area-System.Net Fix casing to unblock Linux native builds I had hoped that this was going to be fixed by PR #2591, but that PR appears to be on hold for the moment. This change fixes the casing in the proj file so that native Linux builds will pass. +2624 area-System.Reflection Bump file version of S.R.Metadata to match assembly version +2632 area-System.IO DirectoryInfo.ToString inconsistent with Desktop On Desktop creating a DirectoryInfo with a full path returns a full path. Creating a DirectoryInfo with a short path, or creating it from a parent (eg: CreateSubdirectory, EnumerateDirectories,etc) returns just the directory name. On CoreCLR we are always trimming to just the directory name. I traced this behavior back to an IFDEF in the original code https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/IO/DirectoryInfo.cs#L639-L643. It seems that the original CoreCLR implementation (Silverlight/phone) hardcoded the short name. We should prefer the desktop behavior instead of the current. The current behavior is due to the legacy behavior of SL trying to sandbox the app. This is not a goal for CoreCLR and we don't have a back-compat burden for the current implementation. We also need to examine similar cases in other FileSystem types. +2635 area-System.Security Ensure that X509Certificates file tests run the gamut of supported formats. Updating the testdata package isn't the most friendly of things to do right now, so tracking this in an issue for later. - [X] X509-DER - [ ] X509-PEM - [X] PKCS12 - [ ] PKCS7 - [ ] PKCS7-PEM +2640 area-System.IO [IO.Pipes] Outer cancellation of WaitForConnectionAsync/ReadAsync/WriteAsync "Consider the following code ``` c# [DllImport(""api-ms-win-core-io-l1-1-0.dll"", SetLastError = true)] internal static unsafe extern bool CancelIoEx(SafeHandle handle, NativeOverlapped* lpOverlapped); public static async Task CanBeCanceled_False() { using (NamedPipeServerStream server = new NamedPipeServerStream(""unique3"", PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 0, 0)) { Task waitForConnectionTask = server.WaitForConnectionAsync(CancellationToken.None); // cannot be canceled unsafe { CancelIoEx(server.SafePipeHandle, null); } await waitForConnectionTask; // throws OperationCanceledException } } public static async Task CanBeCanceled_True() { using (NamedPipeServerStream server = new NamedPipeServerStream(""unique3"", PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 0, 0)) { var ctx = new CancellationTokenSource(); Task waitForConnectionTask = server.WaitForConnectionAsync(ctx.Token); // could be canceled unsafe { CancelIoEx(server.SafePipeHandle, null); } await waitForConnectionTask; // throws IOException: IO operation was aborted unexpectedly. } } ``` Is it intentional behavior or it's a bug that we receive `OperationCanceledException` even if we couldn't cancel in a normal way (without interop) ? " +2648 area-System.ComponentModel RangeAttribute with string constructor fails on various locales "`RangeAttribute(Type, string, string)` can be used to validate various types implementing `IComparable`. However, it does the conversion from the string parameters using the current culture, which is wrong. Simple repro: ``` Thread.CurrentThread.CurrentCulture = new CultureInfo(""fr""); new RangeAttribute(typeof(decimal), ""0.1"", ""0.9"").IsValid(123m) ``` fails with a `FormatException`: _0.1 is not a valid value for Decimal._ While in this sample the strings could be adjusted at runtime to represent numbers using the current culture, the typical usage of an attribute is ``` [Range(typeof(decimal), ""0.1"", ""0.9"")] public decimal Value { get; set; } ``` where the values **must** be constants, and can't change depending on the culture. Culprit line: https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RangeAttribute.cs#L203 The fix can't be to simply change `CurrentCulture` to `InvariantCulture` here, since this will alter the runtime validation behavior: `InvariantCulture` should be used to convert the `min` and `max` parameters (maybe falling back to `CurrentCulture` for back-compat, if the constructor was used directly), but `CurrentCulture` should be kept to validate the user-entered value. If accepted, I can add some unit tests and a fix for this issue. " +2651 area-System.Net Automatic Content Decompression Modified CurlHandler to set the curl options for automatic response content decompression. +2658 area-Serialization Fix one of DCS constructors that cause NRE in wcf Verified that this fixes #2435 by aligning with the behavior on Desktop cc: @mconnew +2666 area-System.Reflection Bug fix: When decoding a modified type it was throwing a BadImageForm… …atException, the previous change to get the valuetype and class prefix flag broke that because didn't update DecodeModifiedType to read a compressed integer instead of reading a SignatureTypeCode. +2667 area-System.Security TestLoadSignedFile failure in CI See: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/2796/testReport/junit/System.Security.Cryptography.X509Certificates.Tests/LoadFromFileTests/TestLoadSignedFile/ ``` MESSAGE: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. +++++++++++++++++++ STACK TRACE: at Internal.Cryptography.Pal.CertificatePal.GetSignerInPKCS7Store(SafeCertStoreHandle hCertStore, SafeCryptMsgHandle hCryptMsg) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.Import.cs:line 142 at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, String password, X509KeyStorageFlags keyStorageFlags) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.Import.cs:line 84 at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.Import.cs:line 29 at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Certificate.cs:line 72 at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Certificate.cs:line 55 at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Certificate2.cs:line 48 at System.Security.Cryptography.X509Certificates.Tests.LoadFromFileTests.TestLoadSignedFile() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\tests\LoadFromFileTests.cs:line 127 ``` +2676 area-System.Net Merge changes from TFS +2684 area-System.IO FSW tests don't verify path information The tests are only checking that events are occurring, but not that they're for the right/expected paths. +2688 area-System.Reflection System.Reflection.Metadata needs a MarshalDecoder for marshalling descriptor types. It needs a marshal decoder such as CustomAttributes decoder and SignatureDecoder to decode marshalling descriptor since it specifications on ECMA spec 355 are diferent. cc @nguerrera @AlexGhiondea +2699 area-System.IO Code cleanup for System.IO.Packaging "- [x] ContentType.cs - line 234 - use String.Equals instead of String.Compare - [x] ContentType.cs - 83 - if (contentType.Length == 0) - [x] PackagePart.cs - 849 - return !s.CanRead && !s.CanSeek && !s.CanWrite; - [ ] Package.cs - 976 - What's the purpose of the try block with an empty finally? - [x] PackageUriHelper.cs - 1297 - at least one other place where the same thing was declared. Should they be consolidated? - [x] PackageUriHelper.cs - 1025 - Rather than using comments, these could use named arguments. - [x] PackageUriHelper.cs - 991 - There are various places thus far in the implementation that use '/' hardcoded... should they instead be using ForwardSlashChar? - [ ] PackageUriHelper.cs - 926 - Why not just: return the_condition; - [x] PackUriHelper.cs - 695 - the chars array could be stackalloc'd instead of heap allocated. - [x] PackUriHelper.cs - 451 - Any reason not to combine these Path.Combine calls? - [x] InternalRelationshipCollection.cs - 592 - Debug.Fail? - [ ] InternalRelationshipCollection.cs - 325 - Formatting off - [ ] IgnoreFlushAndCloseStream.cs - 18 - This comment appears out-of-date: there is no IgnoreFlushAndClose property, and Flush/Dispose never delegate to the wrapped stream's corresponding members. - [ ] IgnoreFlushAndCloseStream.cs - 48 - get { return !_disposed && _stream.CanRead; } - [ ] FileFormatException.cs - 139 - readonly? - [x] ContentType.cs - 666 - This loop could be replaced by a call to Array.IndexOf. - [x] ContentType.cs - 620 - return IsAsciiLetter(character) || (character >= '0' && character <= '9'); - [x] ContentType.cs - 561 - It seems a bit odd to be explicit about the kind of comparison we want for the characters and to be doing a Compare rather than Equal when what we're checking for is just an empty string. - [x] ContentType.cs - 527 - if (string.IsNullOrEmpty(token)) - [x] ContentType.cs - 531 - The body of this loop could be simplified to just: if (!IsAsciiLetterOrDigit(token[i]) && !IsAllowedCharacter(token[i])) throw new ArgumentException(SR.InvalidToken); - [ ] ContentType.cs - 398 - There's a lot of string manipulation / allocation / etc. happening in these various helper functions. Doesn't need to be fixed now, as it's not clear that it's a problem. But it'd be interesting to do some perf testing / profiling and see what pops as hot spots that we'll potentially want to fix. - [x] ContentType.cs - 390 - ""ans"" => ""and"" - [ ] ContentType.cs - 225 - Do we know that MoveNext is always going to return true here such that Current will be valid? - [ ] ContentType.cs - 89 - It doesn't appear that we know at this point that contentType isn't empty. Couldn't this result in indexing out of bounds into contentType? - [x] ContentType.cs - 262 - ""paramterKey"" => ""parameterKey"" - [ ] PackUriHelper.cs - 791 - Could this just do a ordinal-ignorecase comparison rather than allocating new strings with ToUpperInvariant? - [x] ContentType.cs - 323 - Is this type used anywhere? It appears to be dead code. - [x] ContentType.cs - 294 - Is this type used anywhere? It appears to be dead code. - [x] PackUriHelper.cs - 737 - I don't know if allocations matter here, but you could trivially avoid this allocation by using IndexOf instead of Contains. - [x] ContentType.cs - 604 - Couldn't it use Array.IndexOf? " +2703 area-System.Threading Add a way to wait for a task without throwing `Task.Wait` throws an exception if the task is faulted or cancelled. Sometimes it is necessary to wait for completion but not be interrupted by an exception. Catching and swallowing the exception is a really bad workaround. Using exceptions for control flow is not a good thing. Also, exceptions are extremely slow. 1. The `Wait` method should have an overload that allows the caller to specify that he does not want an exception. 2. There should be a method `Task WhenCompleted(this Task task)` that returns a new task that becomes completed when the base task becomes completed. Cancellation and exceptions should not be propagated. That way we can write `await myTask.WhenCompleted()` to avoid exceptions. 3. In the same spirit as (2) there probably should be `WhenCompletedSuccessfully`, `WhenCancelled` and `WhenFaulted`. These tasks complete when the underlying task transitions to the respective state. They do not ever complete if the underlying task transitions to a different final state. They should _not_ become cancelled in that case because the idea of these methods is that you can avoid exceptions for control flow in a convenient manner. +2705 area-System.Net Fixing multi response header issue along with putting checks in http message parser. …message parser ``` modified: System/Net/Http/Unix/CurlCallbacks.cs ``` +2711 area-System.Reflection Merge master into dev/metadata @tmat @stephentoub @nguerrera +2715 area-System.Security System.Security.Cryptography.Hashing.Algorithms contract reference is forwarding Hi, It seems that in System.Security.Cryptography.Hashing.Algorithms v4.0.0-beta-23127 all types are being forwarded, even though they are implemented in corefx. Is there any reason for this change or is it a mistake? Thanks. +2717 area-System.Threading Four failures in new System.Threading.Timer tests in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release/946/console ``` TimerFiringTests.Timer_CanDisposeSelfInCallback [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release\src\System.Threading.Timer\tests\TimerFiringTests.cs(126,0): at TimerFiringTests.Timer_CanDisposeSelfInCallback() TimerFiringTests.NonRepeatingTimer_ThatHasAlreadyFired_CanChangeAndFireAgain [FAIL] Should have received a second timer event after changing it Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release\src\System.Threading.Timer\tests\TimerFiringTests.cs(150,0): at TimerFiringTests.NonRepeatingTimer_ThatHasAlreadyFired_CanChangeAndFireAgain() TimerFiringTests.Running_Timer_CanBeFinalizedAndStopsFiring [FAIL] Failed to get first timer fire Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release\src\System.Threading.Timer\tests\TimerFiringTests.cs(160,0): at TimerFiringTests.Running_Timer_CanBeFinalizedAndStopsFiring() TimerFiringTests.MultpleTimers_PeriodicTimerIsntBlockedByABlockedTimer [FAIL] Blocking callback prevented a second timer from firing Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release\src\System.Threading.Timer\tests\TimerFiringTests.cs(184,0): at TimerFiringTests.MultpleTimers_PeriodicTimerIsntBlockedByABlockedTimer() Unhandled Exception: Xunit.Sdk.TrueException: Should have received a second callback while blocked Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) at TimerFiringTests.<>c__DisplayClass22.b__20(Object o) at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.TimerQueueTimer.CallCallback() at System.Threading.TimerQueueTimer.Fire() at System.Threading.TimerQueue.FireNextTimers() at System.Threading.TimerQueue.AppDomainTimerCallback() Finished: System.Threading.Timer.Tests ``` +2720 area-System.Net HttpClient xplat: Optimize number of socket callbacks In earlier version, a curl_multi_socket_action was performed everytime the callback was invoked irrespective of whether there was activity on the socket. This in turn causes more callbacks when libcurl tries to read the socket but finds no data. This can be made more efficient by waiting for activity on the socket and informing libcurl accordingly - Also fixed a bug in the timer callback for <=0 timeout values - Fixed a bug in CheckForCompletedTransfers where a mismatch could occur between the easy handle specified in the DONE msg - Fixing a SEGV that can happen due to stack overflow caused by callback getting invoked recursively because curl_multi_socket_action was being called in the callback code cc: @stephentoub @davidsh @CIPop @SidharthNabar @pgavlin +2722 area-System.IO Remove USE_OVERLAPPED from FileSystem We now have a overlapped implementation that works on UWP so we should remove the USE_OVERLAPPED ifdefs. +2727 area-System.Collections IsPrime function unnecessary, GetPrime function inefficient. In System.Collections.HashHelpers and System.Collections.NonGeneric\src\System\Collections\Hashtable and System.Private.DataContractSerialization\src\System\Runtime\Serialization\ObjectToIdCache.cs there are copies of the same function: private static bool IsPrime(int candidate) It is used by: private static int GetPrime(int min) Which is called by: Initialize, ExpandPrime, and TrimExcess They all use a table in GetPrime: E.g. int[] primes = {3, 7, 17, 37, 89, 197, 431, 919, 1931,...7199369}. Notice that each successive prime is larger than twice the preceding one. This appears to be because hashtables are doubled in size when they need to be expanded. But they are only allowed to expand up to 2G. The GetPrime function calls IsPrime to find a prime when the search goes above the limit of the primes table. The ExpandPrime function is the most interesting as it more than doubles the size each time: public static int ExpandPrime(int oldSize) { int newSize = 2 \* oldSize; .... return GetPrime(newSize); Therefore it appears that we don't need the IsPrime function at all. Instead we simply need to expand the primes table up to 2146435069 (largest prime below 2G). {..., 7199369, 21598111, 64794337, 194383039, 583149179, 1749447569, 953375459, 2146435069}; Recommendation: 1) Use a common GetPrime(int min) function instead of having three copies 2) Expand the primes table as described above. 3) Remove the IsPrime function, modify GetPrime to only use the table. +2729 area-System.Numerics Fix very sporadically failing Complex test "I'd previously ""fixed"" this same test by incorporating infinity support, but I needed to do the comparisons based on IsNegative/PositiveInfinity rather than by comparing the values directly. cc: @mellinoe " +2730 area-System.IO Reworked the tests for System.IO.Pipes I made a number of changes to our current Pipes tests and added several hundred new tests for edge cases that were previously ignored, particularly with Named Pipes defined with an InOut PipeDirection - Refactored the great Throws tests currently in place to allow testing pipes with all in/out direction combinations for both Named pipes as well as Anonymous pipes - Replaced all relevant hardcoded pipe names with unique values - Reorganized the tests to use more inheritance and share more code for easy extensibility - All test classes are now in the same namespace: System.IO.Pipes.Tests - Expanded tests for InOut NamedPipes and made all existing In/Out tests also test all valid InOut combinations. - Split the Named and Anonymous tests into two separate folders: NamedPipeTest and AnonymousPipeTest - Increased code coverage across all test classes +2732 area-System.Numerics what set's Vector.IsHardwareAccelerated to true in System.Numerics.Vectors? I am writing a test app, 64 bit using System.Numerics.Vectors 4.1.0. I am trying to understand how `Vector.IsHardwareAccelerated` gets set to true. I’ve tried running this on three Haswell based systems. I get `Vector.IsHardwareAccelerated` as false during debugging. But when I run it from command prompt, I get true in one system and false in other two system. +2733 area-System.IO Cleaned up tests for closed issues Design review feedback brought about the closed issues #2537, #2403, #2402, #2369, #1728. This Commit cleaned up the tests around those decisions +2737 area-System.IO Removed USE_OVERLAPPED from FileSystem All ifdefs around USE_OVERLAPPED have been removed such that the new behavior mimics the old behavior when USE_OVERLAPPED = true. Resolves #2722 +2738 area-System.Reflection BlobReader.ReadBoolean: Interpret any non-zero byte as True @nguerrera @davkean +2743 area-System.Security PlatformNotSupportedException on Unix when exporting multiple private keys in a single PFX The beta7 PFX/PKCS12 export code will use OpenSSL's PKCS12_create function, which only supports one private key. OpenSSL doesn't have an inherent limitation against PKCS12 files containing multiple private keys, but the helper function can't handle it; and we're running out of time in beta7 to write it out longhand. +2745 area-System.Security Not all private keys are available when importing a PFX with multiple private keys on Unix The OpenSSL helper function `PKCS12_parse` only emits a single private key (and its associated certificate), the rest of the certificates appear, but as public-key only. Similar to #2743, the fix would be to not use the helper function, but to get into the nitty-gritty with PKCS12 primitives. +2746 area-System.Security CryptographicException on Unix when exporting an empty collection as a PFX This has the same underlying function as a cause as #2743, `PKCS12_create`. Since it never added anything to an authsafe it never created the authsafe stack, and then reports a data validation error because it didn't expect a `NULL` to make it through. When/if we switch to creating PFX files without the helper function's limitations this should go away (but it's a separate problem, and could accidentally not be fixed, so a separate issue). +2751 area-System.Diagnostics Trace.IndentLevel does not behave consistently when used from multiple threads "According to [the documentation](https://msdn.microsoft.com/en-us/library/system.diagnostics.trace.indentlevel), `Trace.IndentLevel` should be stored on a per-thread basis. And [it is](https://github.com/dotnet/corefx/blob/41e203011152581a6c65bb81ac44ec037140c1bb/src/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceInternal.cs#L16), but [a cached version is also kept in each `TraceListener`](https://github.com/dotnet/corefx/blob/41e203011152581a6c65bb81ac44ec037140c1bb/src/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceListener.cs#L18). And since listeners are shared among all threads and the listener-cached version of `IndentLevel` is updated only when `Trace.IndentLevel` changes on some thread, this means that the actual indent level that is printed is the indent level of the last thread that changed it, it doesn't matter what the indent level of the current thread is. Sample application to replicate the issue: ``` c# using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace TraceIndentLevel { static class Program { static void Main() { Trace.Listeners.Add(new ConsoleTraceListener()); Task.WaitAll(Task.Run((Action) T1), Task.Run((Action) T2)); } static readonly Barrier barrier = new Barrier(2); static void T1() { Trace.Indent(); Trace.Indent(); Trace.TraceInformation(""Thread 1, IndentLevel should be {0}."", Trace.IndentLevel); barrier.SignalAndWait(); barrier.SignalAndWait(); Trace.TraceInformation(""Thread 1, IndentLevel should be {0}."", Trace.IndentLevel); // this should be a noop, but isn't Trace.IndentLevel = Trace.IndentLevel; Trace.TraceInformation(""Thread 1, IndentLevel should be {0}."", Trace.IndentLevel); } static void T2() { barrier.SignalAndWait(); Trace.TraceInformation(""Thread 2, IndentLevel should be {0}."", Trace.IndentLevel); Trace.Indent(); Trace.TraceInformation(""Thread 2, IndentLevel should be {0}."", Trace.IndentLevel); barrier.SignalAndWait(); } } } ``` On my computer (using desktop .Net, but I believe core will behave the same), this prints: ``` TraceIndentLevel.exe Information: 0 : Thread 1, IndentLevel should be 2. TraceIndentLevel.exe Information: 0 : Thread 2, IndentLevel should be 0. TraceIndentLevel.exe Information: 0 : Thread 2, IndentLevel should be 1. TraceIndentLevel.exe Information: 0 : Thread 1, IndentLevel should be 2. TraceIndentLevel.exe Information: 0 : Thread 1, IndentLevel should be 2. ``` What I would expect is that the value returned by `Trace.IndentLevel` and the actual indent level matched: ``` TraceIndentLevel.exe Information: 0 : Thread 1, IndentLevel should be 2. TraceIndentLevel.exe Information: 0 : Thread 2, IndentLevel should be 0. TraceIndentLevel.exe Information: 0 : Thread 2, IndentLevel should be 1. TraceIndentLevel.exe Information: 0 : Thread 1, IndentLevel should be 2. TraceIndentLevel.exe Information: 0 : Thread 1, IndentLevel should be 2. ``` " +2755 area-System.Reflection Downgrade Reflection.Metadata to Immutable Collections 1.1.36 Can't use the latest version w/o updating VS. +2756 area-Microsoft.CSharp Need to find a way to run tests involving expression trees in interpreter mode "This involves: Linq.Expressions System.Dynamic.Runtime Microsoft.CSharp What complicates matters is that Linq.Expressions must be rebuilt with ""isInterpreting=true"" to switch from compiling to interpreting. " +2757 area-System.IO DirectoryInfo.GetFiles killed by privileged folders The seemingly useful DirectoryInfo.GetFiles method (with the SearchOption.AllDirectories parameter) is unreliable because any access control check failure causes it to bomb out with an exception rather than returning files that _are_ accessible to the user. For instance, call this on any drive root from a non-elevated process and you'll get: `Access to the path 'D:\$RECYCLE.BIN\S-1-5-18' is denied. Type: System.UnauthorizedAccessException Source: mscorlib at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileSystemEnumerableIterator``1.AddSearchableDirsToStack(SearchData localSearchData) at System.IO.FileSystemEnumerableIterator``1.MoveNext() at System.Collections.Generic.List``1..ctor(IEnumerable``1 collection) at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)` The API should be smart enough to skip enumerating folders to which it doesn't have permission, or it should offer some sort of callback or parameter to permit doing so. +2758 area-System.Net Enabling cookie container in HTTP xplat ``` modified: ../../Common/src/Interop/Unix/libcurl/Interop.libcurl_types.cs modified: System/Net/Http/Unix/CurlHandler.cs modified: System/Net/Http/Unix/HttpClientHandler.Unix.cs ``` Enabled cookie container & manual cookie support in HTTP. +2760 area-System.Net HttpClient response stream.Read/ReadAsync sporadically returns 0 for a non empty response We see it both in WCF streaming scenarios (receiving a stream from WCF service) and in simple repros like: ``` var c = (await client.PostAsync(url, new StreamContent(new MyStream()))).Content; var stream = await c.ReadAsStreamAsync(); byte[] buff = new byte[4096]; var bytesread = await stream.ReadAsync(buff, 0, 4096); // bytesread is sporadically 0 even though the response does contain data ``` About a half of WCF streaming scenarios fail because of this bug +2761 area-System.Net Unhandled System.Net.Http.WinHttpException in WCF streaming scenarios This blocks WCF streaming on Project K as it happens within first several seconds of single-threaded(!) stress run: ``` 0:020> !pe Exception object: 180d3de4 Exception type: System.Net.Http.WinHttpException Message: Unknown error (0x2ef2) InnerException: StackTrace (generated): SP IP Function 0EACED5C 0890E8FF System_Net_Http!System.Net.Http.WinHttpHandler.SetStatusCallback(SafeWinHttpHandle, WINHTTP_STATUS_CALLBACK)+0x57 0EACED70 0890D4C9 System_Net_Http!System.Net.Http.WinHttpHandler+d__1.MoveNext()+0x779 0EACEFE4 0781C695 mscorlib_ni!System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c__DisplayClass2.b__5(System.Object)+0x35 0EACEFEC 0781F4DB mscorlib_ni!System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object)+0x43 0EACEFF4 077C4FAD mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x9d 0EACF02C 0781F48B mscorlib_ni!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()+0x43 0EACF03C 0781FA25 mscorlib_ni!System.Threading.ThreadPoolWorkQueue.Dispatch()+0x1e9 0EACF08C 078DB3CA mscorlib_ni!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()+0xa ``` The exception results in the following second-chance exception in the process: ``` 0:020> kL # ChildEBP RetAddr 00 0eacee0c 0fb2c37f KERNELBASE!RaiseException+0x48 01 0eaceea8 0fbb6bb3 coreclr!RaiseTheExceptionInternalOnly+0x1d9 02 0eacef28 077c4fad coreclr!IL_Rethrow+0x6a 03 0eacf020 0781f48b mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x9d 04 0eacf034 0781fa25 mscorlib_ni!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()+0x43 05 0eacf084 078db3ca mscorlib_ni!System.Threading.ThreadPoolWorkQueue.Dispatch()+0x1e9 06 0eacf094 0fda302f mscorlib_ni!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()+0xa 07 0eacf094 0fb77a92 coreclr!CallDescrWorkerInternal+0x34 08 0eacf0c8 0fb77d01 coreclr!CallDescrWorkerWithHandler+0x60 09 0eacf134 0fc65182 coreclr!MethodDescCallSite::CallTargetWorker+0x158 0a (Inline) -------- coreclr!MethodDescCallSite::Call_RetBool+0xb 0b 0eacf1b4 0fb27f3e coreclr!QueueUserWorkItemManagedCallback+0x23 0c 0eacf1c8 0fb27f91 coreclr!ManagedThreadBase_DispatchInner+0x5c 0d 0eacf25c 0fb2828e coreclr!ManagedThreadBase_DispatchMiddle+0x4e 0e 0eacf2c0 0fb28340 coreclr!ManagedThreadBase_DispatchOuter+0x66 0f 0eacf2e4 0fc18912 coreclr!ManagedThreadBase_FullTransitionWithAD+0x2f 10 (Inline) -------- coreclr!ManagedThreadBase::ThreadPool+0x10 11 0eacf388 0fbfbaf7 coreclr!ManagedPerAppDomainTPCount::DispatchWorkItem+0x99 12 0eacf39c 0fbfc312 coreclr!ThreadpoolMgr::ExecuteWorkRequest+0x31 13 0eacf404 0fb23702 coreclr!ThreadpoolMgr::WorkerThreadStart+0x391 14 0eacf7a8 76f97c04 coreclr!Thread::intermediateThreadProc+0x4d 15 0eacf7bc 773ead1f KERNEL32!BaseThreadInitThunk+0x24 16 0eacf804 773eacea ntdll!__RtlUserThreadStart+0x2f 17 0eacf814 00000000 ntdll!_RtlUserThreadStart+0x1b ``` +2762 area-System.Net Fast native memory leak in WinHttpHandler on corefx The leak is super-fast - 1GB+/minute and completely blocks WCF streaming scenarios. Here are the top offending call stacks: ``` ntdll!RtlAllocateHeap+14D (d:\blue\minkernel\ntos\rtl\heap.c, 1872) msvcrt!malloc+90 (d:\9147\minkernel\crts\crtw32\heap\malloc.c, 285) webio!zcalloc+20 (d:\9147\inetcore\lib\zlib12\zutil.c, 314) webio!updatewindow+39 (d:\9147\inetcore\lib\zlib12\inflate.c, 337) webio!inflate+12D7 (d:\9147\inetcore\lib\zlib12\inflate.c, 1137) webio!Decompress+56 (d:\9147\inetcore\lib\zlib12\iel1_zlib12_wrapper\zlib_wrapper.c, 218) webio!WapDecompProcessCompressedData+33 (d:\9147\net\webio\util\decompression.c, 510) webio!WaDecompDataNeeded+1C (d:\9147\net\webio\util\decompression.c, 580) webio!WapHandleParsedHttpResponse+1D74A (d:\9147\net\webio\http\recvresp.c, 1656) webio!WapHttpConnectionReceiveCompletion+258 (d:\9147\net\webio\http\httpconn.c, 2974) webio!WapTcpReceiveCompletionRoutine+89 (d:\9147\net\webio\conn\tcpconn.c, 3538) webio!WapTcpThreadPoolCompletionRoutine+3F (d:\9147\net\webio\conn\tcpconn.c, 822) webio!WapTpIoCompletionRoutine+B2 (d:\9147\net\webio\util\thrdpool.c, 370) KERNELBASE!BasepTpIoCallback+3A (d:\9147\minkernel\threadpool\kernel32\threadpool.c, 213) ntdll!TppIopExecuteCallback+D6 (d:\blue\minkernel\threadpool\ntdll\io.c, 371) ntdll!TppWorkerThread+52A (d:\blue\minkernel\threadpool\ntdll\worker.c, 1023) KERNEL32!BaseThreadInitThunk+24 (d:\9147\base\win32\client\thread.c, 78) ntdll!__RtlUserThreadStart+2F (d:\blue\minkernel\ntdll\rtlstrt.c, 1029) ntdll!_RtlUserThreadStart+1B (d:\blue\minkernel\ntdll\rtlstrt.c, 944) --- ntdll!RtlAllocateHeap+14D (d:\blue\minkernel\ntos\rtl\heap.c, 1872) webio!WaDecompCreateContext+AB (d:\9147\net\webio\util\decompression.c, 219) webio!WapHandleParsedHttpResponse+1D61A (d:\9147\net\webio\http\recvresp.c, 1496) webio!WapHttpConnectionReceiveCompletion+258 (d:\9147\net\webio\http\httpconn.c, 2974) webio!WapTcpReceiveCompletionRoutine+89 (d:\9147\net\webio\conn\tcpconn.c, 3538) webio!WapTcpThreadPoolCompletionRoutine+3F (d:\9147\net\webio\conn\tcpconn.c, 822) webio!WapTpIoCompletionRoutine+B2 (d:\9147\net\webio\util\thrdpool.c, 370) KERNELBASE!BasepTpIoCallback+3A (d:\9147\minkernel\threadpool\kernel32\threadpool.c, 213) ntdll!TppIopExecuteCallback+D6 (d:\blue\minkernel\threadpool\ntdll\io.c, 371) ntdll!TppWorkerThread+52A (d:\blue\minkernel\threadpool\ntdll\worker.c, 1023) KERNEL32!BaseThreadInitThunk+24 (d:\9147\base\win32\client\thread.c, 78) ntdll!__RtlUserThreadStart+2F (d:\blue\minkernel\ntdll\rtlstrt.c, 1029) ntdll!_RtlUserThreadStart+1B (d:\blue\minkernel\ntdll\rtlstrt.c, 944) ----- ntdll!RtlAllocateHeap+14D (d:\blue\minkernel\ntos\rtl\heap.c, 1872) msvcrt!malloc+90 (d:\9147\minkernel\crts\crtw32\heap\malloc.c, 285) webio!zcalloc+20 (d:\9147\inetcore\lib\zlib12\zutil.c, 314) webio!inflateInit2_+4F (d:\9147\inetcore\lib\zlib12\inflate.c, 164) webio!CreateDecompression+61 (d:\9147\inetcore\lib\zlib12\iel1_zlib12_wrapper\zlib_wrapper.c, 175) webio!WapHandleParsedHttpResponse+1D61A (d:\9147\net\webio\http\recvresp.c, 1496) webio!WapHttpConnectionReceiveCompletion+258 (d:\9147\net\webio\http\httpconn.c, 2974) webio!WapTcpReceiveCompletionRoutine+89 (d:\9147\net\webio\conn\tcpconn.c, 3538) webio!WapTcpThreadPoolCompletionRoutine+3F (d:\9147\net\webio\conn\tcpconn.c, 822) webio!WapTpIoCompletionRoutine+B2 (d:\9147\net\webio\util\thrdpool.c, 370) KERNELBASE!BasepTpIoCallback+3A (d:\9147\minkernel\threadpool\kernel32\threadpool.c, 213) ---- ntdll!RtlAllocateHeap+14D (d:\blue\minkernel\ntos\rtl\heap.c, 1872) winhttp!WinHttpOpenRequestInternal+7C1 (d:\9147\net\winhttp\http\open.cxx, 717) winhttp!WinHttpOpenRequest+1F9 (d:\9147\net\winhttp\http\open.cxx, 881) ---- ntdll!RtlAllocateHeap+14D (d:\blue\minkernel\ntos\rtl\heap.c, 1872) webio!WapCreateHttpRequest+C1 (d:\9147\net\webio\http\httpreq.c, 1139) webio!WebCreateHttpRequest+183 (d:\9147\net\webio\http\httpreq.c, 3192) winhttp!HTTP_USER_REQUEST::_SysSendRequest+D32 (d:\9147\net\winhttp\httpcore\usrreq.cpp, 2347) winhttp!HTTP_USER_REQUEST::_SendRequestWithDrainComplete+1A0 (d:\9147\net\winhttp\httpcore\usrreq.cpp, 1199) winhttp!HTTP_USER_REQUEST::SendRequest+3F3 (d:\9147\net\winhttp\httpcore\usrreq.cpp, 1529) winhttp!WinHttpSendRequest+4B9 (d:\9147\net\winhttp\api\sendapi.cxx, 265) ``` +2763 area-System.Net The result of the arithmetic + operation in Write method could end up… … being less than zero if the sum of the operands combined is greater than int.MaxValue. As a consequence of this integer overflow the intended check might be bypassed leading to unexpected consequences. This change adds and aditional cast to long to avoid this overflow. +2764 area-System.IO NamedPipeServerStream constructor allows MaxNumberOfServerInstances > 1 The constructor for NamedPipeServerStream allows MaxNumberOfServerInstances > 1 and we even do the same validity checks (between 1-255) as we do on Windows. However, Unix Named pipes don't support more than one connection and an exception is thrown when more are attempted. +2765 area-System.Collections ExpandPrime will throw when near MaxPrimeArrayLength Call ExpandPrime in HashHelpers.cs and HashTable.cs with MaxPrimeArrayLength + 1. The function looks like this: public static int ExpandPrime(int oldSize) { int newSize = 2 \* oldSize; ``` if ((uint)newSize > MaxPrimeArrayLength && MaxPrimeArrayLength > oldSize) { return MaxPrimeArrayLength; } return GetPrime(newSize); ``` } MaxPrimeArrayLength + 1 become -2097156 which, when cast to uint becomes 4292870140 which passes the 'if' condition and GetPrime is then called with a negative value. This caused GetPrime to: throw new ArgumentException(SR.Arg_HTCapacityOverflow); proposed solution: public static int ExpandPrime(int oldSize) { int newSize = 2 \* oldSize; ``` // newSize will be negative if it overflows so we return the largest possible instead if (newSize < 0 || oldSize > MaxPrimeArrayLength) { return MaxPrimeArrayLength; } return GetPrime(newSize); ``` } +2768 area-System.Reflection CoreCLR: TryGetRawMetadata "# Scenario Roslyn Scripting API provides applications with the capability to evaluate C# and VB code snippets. For example, ``` C# using Microsoft.CodeAnalysis.Scripting.CSharp; public class Globals { public int x; public int y; } class Program { public static void Main() { var globals = new Globals() { x = 1, y = 2 }; var options = ScriptOptions.Default.WithReferences(typeof(MyMath).Assembly); var script = CSharpScript.Create(""MyMath.CalculateStuff(x, y)"", options); Console.WriteLine(script.RunAsync(globals).Result); } } ``` In the example above `MyMath` is a type defined in an assembly referenced by and deployed with the program. The script is compiled with the following metadata references: mscorlib, the assembly containing the `Globals` type and an assembly containing `MyMath` class. All these assemblies are implementation (runtime) assemblies, not contracts. Since we are compiling scripts at runtime contracts are not relevant. The application might also run on a machine that doesn’t have any SDK. It is natural for scripting to be able to execute virtually any (public) runtime method available in any loaded assembly. Just like Reflection invocation. On Desktop CLR we use Assembly.Location to find the metadata image for given assembly. On Core CLR this property is not available and there is no other way to get the metadata of a given runtime assembly. # Proposed API We propose that the metadata of a runtime assembly are exposed thru new APIs in a form that is efficiently readable using MetadataReader of System.Reflection.Metadata library. Since metadata might not be available for all assemblies (such as AssemblyBuilder, .NET Native images, etc.) the API is allowed to return false for such assemblies. Roslyn scripting API would then report an error that the script can’t reference specified assembly. ``` C# namespace System.Reflection.Metadata { public static class AssemblyExtensions { public unsafe static bool TryGetRawMetadata(this Assembly assembly, out byte* blob, out int length); } } ``` **Lifetime considerations** The pointer would stay valid as long as the `AssemblyLoadContext` with which is the assembly associated is alive. It is the responsibility of the caller to keep the Assembly object alive while accessing the metadata blob. # Considered alternatives It was suggested that Roslyn uses Reflection API to read the metadata. There are multiple issues with such approach. 1) Expected bad performance (both working set and time) Reflection is built on top of IMetadataImport. It was measured that using IMetadataImport to reader metadata from managed code is an order of magnitude slower than using S.R.M. MetadataReader, which was not an acceptable perf hit for the compilers. Reflection API implementation adds additional memory and time overhead. Although the number of referenced assemblies is relatively low in most scripting scenarios reducing the compile time of scripts to minimum is crucial for good user experience. 2) Using Reflection APIs to read namespaces and types To get a list of namespaces in given assembly one needs to load all types in the assembly. Loading a type may trigger additional assembly loads as well (those of the base types, interfaces). If a type can’t be loaded (perhaps a dependency is missing) we get a loader exception. We can extract the loaded types from the exception, but what if the app makes the dependency available just before it is about to actually start using the type? Our model is immutable, we can’t add a type/namespace into an existing assembly symbol. 3) Missing APIs Brief analysis identified missing APIs that the compiler depends on and that are not present in DNX contracts: for example, type forwarders, GetOptionalCustomModifiers, GetRequiredCustomModifiers, class layout. Besides missing APIs Reflection performs post-processing on the data it receives from IMetadataImport that might render the values useless to the compiler. 4) Roslyn-Reflection interop We have prototyped an abstraction of Reflection symbol model to incorporate interop with Reflection runtime types. The abstraction introduces quite a lot of complexity and indirections in already complex code, which significantly increases maintenance cost of that particular area of the compiler. Testing cost would also need to be considered. We would need to effectively run most of our compiler tests twice. # Updates 1) Decided to move this to `System.Reflection.Metadata` namespace. " +2769 area-System.Globalization System.Globalization: Collation Implement the [CompareInfo PAL](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/CompareInfo.Unix.cs) on top of ICU. This should give us real collation support instead of our ASCII only collation. +2770 area-System.Globalization System.Globalization: Locale Data Implement the PAL's from [CultureData](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/CultureData.Unix.cs) and [CultureInfo](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/CultureInfo.Unix.cs). +2772 area-System.Globalization System.Globalization: Casing Implement the [TextInfo](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/TextInfo.Unix.cs) PAL. +2773 area-System.Globalization System.Globalization: Calendars Fill out the PAL implementation of [CalendarData.cs](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/CalendarData.Unix.cs), [HijriCalendar.cs](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/HijriCalendar.Unix.cs) and [JapaneseCalendar.cs](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/corefx/System/Globalization/JapaneseCalendar.Unix.cs) +2774 area-System.Globalization System.Globalization: Encodings We have stubbed out [EncodingTable.cs](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Globalization/EncodingTable.Unix.cs) and [EncodingDataItem.cs](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Globalization/EncodingDataItem.Unix.cs) for cross platform, but it is not clear the implementation is correct or if we need to do more. I think the big issue here will be understanding if System.Text.Encoding.Codepages and the EncodingProvider model here reduces the scope of work that we need to. +2777 area-System.Globalization System.Globalization.Extensions: Normalization We need to implement [StringNormalizationExtensions.cs](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/StringNormalizationExtensions.Unix.cs) for Linux. The major difference between ICU and Win32 is that Win32 throws an exception when the input is not a valid UTF-16 encoded string (e.g. mismatched surrogates) whereas ICU does not. +2778 area-System.Security Add ECDsa to System.Security.Cryptography suite - `ECDsa` in System.Security.Cryptography.Algorithms - `ECDsaCng : ECDsa` in System.Security.Cryptography.Cng - `ECDsaOpenSsl : ECDsa` in System.Security.Cryptography.OpenSsl - Some tests (Common\test\Cryptography\AlgorithmImplementations\ECDsa) - Other artifacts required to pull this off. - Like the contract assembly changes +2779 area-System.Globalization System.Globalization.Extensions: IDNA We need to support [IdnMapping.cs](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Globalization/IdnMapping.Unix.cs) for IDNA2008 on Unix. This is straightforward on-top of ICU, but many of our existing ICU tests assume either ICU2003 or ICU2008 as implemented by Win32. There are some differences between 2008 and 2003 in ICU for compatibility, especially around how windows works when UseStd3Rules is false. In speaking with NLS, they think it may make sense for us to just follow the 2008 standard. +2782 area-System.Diagnostics Add a way to create a suspended Process It seems that there is no way to create a suspended `Process` and resume it later. Ability to create a suspended process is useful when you want to run the process and its children in a job object. If the process isn't created as suspended it may create child processes before it is assigned to the job object which means that these child processes won't be assigned to the job object. +2784 area-System.Net Enabled max redirection in HTTP xplat ``` modified: ../../Common/src/Interop/Unix/libcurl/Interop.libcurl_types.cs modified: System/Net/Http/Unix/CurlHandler.cs modified: System/Net/Http/Unix/HttpClientHandler.Unix.cs ``` Enabled max redirection support in HTTP xplat +2785 area-System.Net Server Credential Support for CurlHandler This check-in integrates curlHandler with the credential support of libcurl. +2787 area-System.Net Use common class to set property default in winHttp & xplatHttp > stephentoub :: There are a bunch of these default values that are being copied from the WinHttp handler implementation. It's great that we're using the same defaults, but it's error prone that we're doing so via copy-and-paste. I see a whole bunch of constants/defaults in WinHttp at https://github.com/dotnet/corefx/blob/master/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs#L93-L146 .could we somehow factor out these constants/default values into a shared source file that's included in both the Windows and Unix implementation, such that this then becomes: > > ``` C# > private int _maxAutomaticRedirections = HttpHandlerDefaults.MaxAutomaticRedirections; > ``` > > instead of: > > ``` C# > private int _maxAutomaticRedirections = 50; > ``` > > davidsh :: Yes, one could create a shared source file in src\Common\src\System\Net\Http... that defined an internal static class (HttpHandlerDefaults) with those constants defined as public fields. Then that file would be used in the multiple .CSPROJ files to bring in the values. +2791 area-System.Net Unsupported address family assert in System.Net.SocketAddressPal.SetPort on Linux in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/1767/console ``` 11:17:17 Discovering: System.Net.Primitives.Linux.Unit.Tests 11:17:17 Discovering: System.Net.Primitives.Functional.Tests 11:17:17 Discovering: System.Net.Primitives.Linux.Pal.Tests 11:17:18 Discovered: System.Net.Primitives.Functional.Tests 11:17:18 Discovered: System.Net.Primitives.Linux.Unit.Tests 11:17:18 Discovered: System.Net.Primitives.Linux.Pal.Tests 11:17:18 Starting: System.Net.Primitives.Functional.Tests 11:17:18 Starting: System.Net.Primitives.Linux.Unit.Tests 11:17:18 Starting: System.Net.Primitives.Linux.Pal.Tests 11:17:18 ---- DEBUG ASSERTION FAILED ---- 11:17:18 ---- Assert Short Message ---- 11:17:18 Unsupported address family 11:17:18 ---- Assert Long Message ---- 11:17:18 11:17:18 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 11:17:18 at System.Environment.get_StackTrace() 11:17:18 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 11:17:18 at System.Diagnostics.Debug.Fail(String message) 11:17:18 at System.Net.SocketAddressPal.SetPort(Byte[] buffer, UInt16 port) 11:17:18 at System.Net.Primitives.PalTests.SocketAddressPalTests.<>c__DisplayClass6.b__4() 11:17:18 at Xunit.Assert.RecordException(Action testCode) 11:17:18 at Xunit.Assert.ThrowsAny[T](Action testCode) 11:17:18 at System.Net.Primitives.PalTests.SocketAddressPalTests.Port_Get_Set_Throws() 11:17:18 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 11:17:18 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 11:17:18 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 11:17:18 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass45_1.<b__1>d.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass45_1.b__1() 11:17:18 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 11:17:18 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 11:17:18 at Xunit.Sdk.TestInvoker`1.d__45.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 11:17:18 at Xunit.Sdk.TestInvoker`1.<b__44_0>d.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestInvoker`1.b__44_0() 11:17:18 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 11:17:18 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 11:17:18 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 11:17:18 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 11:17:18 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 11:17:18 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestClassRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 11:17:18 at System.Threading.Tasks.Task`1.InnerInvoke() 11:17:18 at System.Threading.Tasks.Task.Execute() 11:17:18 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:17:18 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 11:17:18 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 11:17:18 at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass9_0.b__0(Object _) 11:17:18 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:17:18 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 11:17:18 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:17:18 ---- DEBUG ASSERTION FAILED ---- 11:17:18 ---- Assert Short Message ---- 11:17:18 Unsupported address family 11:17:18 ---- Assert Long Message ---- 11:17:18 11:17:18 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 11:17:18 at System.Environment.get_StackTrace() 11:17:18 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 11:17:18 at System.Diagnostics.Debug.Fail(String message) 11:17:18 at System.Net.SocketAddressPal.GetPort(Byte[] buffer) 11:17:18 at System.Net.Primitives.PalTests.SocketAddressPalTests.<>c__DisplayClass6.b__5() 11:17:18 at Xunit.Assert.RecordException(Func`1 testCode) 11:17:18 at Xunit.Assert.ThrowsAny[T](Func`1 testCode) 11:17:18 at System.Net.Primitives.PalTests.SocketAddressPalTests.Port_Get_Set_Throws() 11:17:18 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 11:17:18 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 11:17:18 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 11:17:18 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass45_1.<b__1>d.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass45_1.b__1() 11:17:18 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 11:17:18 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 11:17:18 at Xunit.Sdk.TestInvoker`1.d__45.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 11:17:18 at Xunit.Sdk.TestInvoker`1.<b__44_0>d.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestInvoker`1.b__44_0() 11:17:18 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 11:17:18 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 11:17:18 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 11:17:18 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 11:17:18 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 11:17:18 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestClassRunner`1.RunAsync() 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 11:17:18 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 11:17:18 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 11:17:18 at System.Threading.Tasks.Task`1.InnerInvoke() 11:17:18 at System.Threading.Tasks.Task.Execute() 11:17:18 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:17:18 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 11:17:18 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 11:17:18 at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass9_0.b__0(Object _) 11:17:18 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:17:18 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 11:17:18 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) ``` +2793 area-System.Net Massive and fast handle leak in WCF stress scenarios 0:102> !handle 0 0 Type Count Event 26762 Key 20745 Here are the characteristic call stacks: ``` Handle = 0x000000000002ea84 - OPEN Thread ID = 0x0000000000002d74, Process ID = 0x0000000000004528 0x00007ff8c74c225a: ntdll!ZwOpenKeyEx+0x000000000000000a 0x00007ff8c47c3799: KERNELBASE!LocalBaseRegOpenKey+0x00000000000001fa 0x00007ff8c47cf532: KERNELBASE!RegOpenKeyExInternalA+0x0000000000000132 0x00007ff8c47cf5e9: KERNELBASE!RegOpenKeyExA+0x0000000000000019 0x00007ff8c0b82b1c: winhttp!OpenIeKey+0x000000000000005c 0x00007ff8c0b82c08: winhttp!OpenProxySettingsKeysForRead+0x0000000000000080 0x00007ff8c0b998bb: winhttp!INTERNET_SESSION_HANDLE_OBJECT::LoadAutomaticProxyResolvers+0x000000000000019b 0x00007ff8c0b730e5: winhttp!INTERNET_SESSION_HANDLE_OBJECT::SetProxySettings+0x0000000000044ed5 0x00007ff8c0b2d95a: winhttp!WinHttpSetOptionInternal+0x0000000000000397 0x00007ff8c0b2e9e6: winhttp!WinHttpOpen+0x000000000000027a 0x00007ff841eeccbd: System_Net_Http!DomainBoundILStubClass.IL_STUB_PInvoke(IntPtr, UInt32, System.String, System.String, Int32)+0x000000000000010d 0x00007ff841eec8b3: System_Net_Http!System.Net.Http.WinHttpHandler.EnsureSessionHandleExists(RequestState)+0x00000000000000e3 0x00007ff841eebba1: System_Net_Http!System.Net.Http.WinHttpHandler+d__1.MoveNext()+0x00000000000001f1 -------------------------------------- Handle = 0x000000000002dd10 - OPEN Thread ID = 0x00000000000027b4, Process ID = 0x0000000000004528 0x00007ff8c74c165a: ntdll!ZwCreateEvent+0x000000000000000a 0x00007ff8c47c2ce8: KERNELBASE!CreateEventW+0x0000000000000084 0x00007ff8c0b2ed38: winhttp!INTERNET_SESSION_HANDLE_OBJECT::INTERNET_SESSION_HANDLE_OBJECT+0x00000000000002be 0x00007ff8c0b2e963: winhttp!WinHttpOpen+0x00000000000001f3 0x00007ff8c0bb9afb: winhttp!CreateWinHttpSession+0x0000000000000053 0x00007ff8c0bb2fd9: winhttp!WinHttpClientSession::AcquireSession+0x0000000000000049 0x00007ff8c0bb3e34: winhttp!WinHttpClientResolver::GetProxyForUrlImpl+0x00000000000001a8 0x00007ff8c0bb3a48: winhttp!WinHttpClientResolver::GetProxyForUrlEx+0x0000000000000054 0x00007ff8c0bb50d9: winhttp!WinHttpClientCompletion::StartProxyResolve+0x0000000000000049 0x00007ff8c0b6102d: winhttp!WxProxyManager::OnProcessGetProxyForUrl+0x000000000002668d 0x00007ff8c0bb665b: winhttp!WxProxyManager::GetProxyForUrlImpl+0x00000000000000ef 0x00007ff8c0bb6518: winhttp!WxProxyManager::GetProxyForUrlEx+0x0000000000000054 0x00007ff8c0bb7683: winhttp!WxGetProxyContext::StartProxyResolve+0x0000000000000043 0x00007ff8c0b711ed: winhttp!HTTP_USER_REQUEST::_CallGetProxyForUrl+0x000000000003478d -------------------------------------- -------------------------------------- Handle = 0x000000000000cfa0 - OPEN Thread ID = 0x0000000000002d74, Process ID = 0x0000000000004528 0x00007ff8c74c165a: ntdll!ZwCreateEvent+0x000000000000000a 0x00007ff8c47c2ce8: KERNELBASE!CreateEventW+0x0000000000000084 0x00007ff8c0b2ed38: winhttp!INTERNET_SESSION_HANDLE_OBJECT::INTERNET_SESSION_HANDLE_OBJECT+0x00000000000002be 0x00007ff8c0b2e963: winhttp!WinHttpOpen+0x00000000000001f3 0x00007ff8c0bb9afb: winhttp!CreateWinHttpSession+0x0000000000000053 0x00007ff8c0bb2fd9: winhttp!WinHttpClientSession::AcquireSession+0x0000000000000049 0x00007ff8c0bb3e34: winhttp!WinHttpClientResolver::GetProxyForUrlImpl+0x00000000000001a8 0x00007ff8c0bb3a48: winhttp!WinHttpClientResolver::GetProxyForUrlEx+0x0000000000000054 0x00007ff8c0bb50d9: winhttp!WinHttpClientCompletion::StartProxyResolve+0x0000000000000049 0x00007ff8c0b6102d: winhttp!WxProxyManager::OnProcessGetProxyForUrl+0x000000000002668d 0x00007ff8c0bb665b: winhttp!WxProxyManager::GetProxyForUrlImpl+0x00000000000000ef 0x00007ff8c0bb6518: winhttp!WxProxyManager::GetProxyForUrlEx+0x0000000000000054 0x00007ff8c0bb7683: winhttp!WxGetProxyContext::StartProxyResolve+0x0000000000000043 0x00007ff8c0b711ed: winhttp!HTTP_USER_REQUEST::_CallGetProxyForUrl+0x000000000003478d -------------------------------------- ``` +2794 area-System.IO Fixed test that was leaving temp directories in root folder One of the Extended Path FileSystem tests was leaving temporary test directories in the root folder of the running directory. This small change modified the tests to instead treat the user's temp directory as the root. +2799 area-System.Net SendAsync_SlowGetRequestWithTimedCancellation test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug/999/console 20:01:52 Discovering: System.Net.Http.Unit.Tests 20:01:53 System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTests.SendAsync_SlowGetRequestWithTimedCancellation_ExpectTaskCanceledException [FAIL] 20:01:53 Assert.Throws() Failure 20:01:53 Expected: typeof(System.Threading.Tasks.TaskCanceledException) 20:01:53 Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. 20:01:53 Stack Trace: 20:01:53 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Http.WinHttpHandler\tests\UnitTests\FakeInterop.cs(238,0): at Interop.WinHttp.WinHttpQueryHeaders(SafeWinHttpHandle requestHandle, UInt32 infoLevel, String name, StringBuilder buffer, UInt32& bufferLength, IntPtr index) 20:01:53 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1970,0): at System.Net.Http.WinHttpHandler.GetResponseHeaderStringInfo(SafeWinHttpHandle requestHandle, UInt32 infoLevel) 20:01:53 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(2014,0): at System.Net.Http.WinHttpHandler.ParseResponseHeaders(SafeWinHttpHandle requestHandle, HttpResponseMessage response, Boolean stripEncodingHeaders) 20:01:53 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1911,0): at System.Net.Http.WinHttpHandler.CreateResponseMessage(SafeWinHttpHandle connectHandle, SafeWinHttpHandle requestHandle, HttpRequestMessage request) 20:01:53 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1239,0): at System.Net.Http.WinHttpHandler.d__5.MoveNext() 20:01:53 --- End of stack trace from previous location where exception was thrown --- 20:01:53 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 20:01:53 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 20:01:53 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 20:01:53 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Http.WinHttpHandler\tests\UnitTests\WinHttpHandlerTest.cs(833,0): at System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTests.<>c__DisplayClassd7.<b__d6>d__d9.MoveNext() 20:01:53 --- End of stack trace from previous location where exception was thrown --- 20:01:53 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 20:01:53 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 20:01:53 Finished: System.Net.Http.WinHttpHandler.Unit.Tests 20:01:53 20:01:53 === TEST EXECUTION SUMMARY === 20:01:53 System.Net.Http.WinHttpHandler.Unit.Tests Total: 115, Errors: 0, Failed: 1, Skipped: 0, Time: 2.519s +2800 area-System.Reflection Assembly.ReflectionOnlyLoad replacement - TypeInfo and family implementation over System.Reflection.Metadata Sometimes you want to use the same reflection model without loading actual types (attributes of course are interesting), but this would be a better version of reflection only load. Roslyn does something similar and can go from PEReader -> ISymbol. /cc @pranavkm @nguerrera @tmat +2801 area-Infrastructure Nice to have: Bin and Packages folders should be placed outside of the git repo The huge `Bin` and `Packages` folders are placed in the root of the git repository at the moment. This makes tools like VSCode impossible to use due to the large quantity of files they need to index. A workaround to use VSCode is to load only the \src folder but that is breaking the Git extension which requires the root of the repo to be loaded. Another reason is using a different partition for binaries that can be quickly formatted when the binaries and packages are not wanted anymore or placing it on a faster disk. +2804 area-System.Globalization System.Globalization: Abbreviated genitive month names won't work on custom DateTimeFormat strings "As found out by @jskeet , abbreviated genitive month names don't seem to work when using the ""MMM"" token on custom datetime format strings The test, written by @jskeet (I'm just copying here from https://github.com/nodatime/nodatime/issues/377): ``` using System; using System.Globalization; using System.Linq; class Test { static void Main() { var culture = (CultureInfo) CultureInfo.InvariantCulture.Clone(); culture.DateTimeFormat.AbbreviatedMonthGenitiveNames = culture.DateTimeFormat.AbbreviatedMonthNames .Select(x => ""Gen"" + x) .ToArray(); culture.DateTimeFormat.MonthGenitiveNames = culture.DateTimeFormat.MonthNames .Select(x => ""Gen"" + x) .ToArray(); Console.WriteLine(new DateTime(1976, 6, 19).ToString(""d MMMM yy"", culture)); Console.WriteLine(new DateTime(1976, 6, 19).ToString(""MMMM yy"", culture)); Console.WriteLine(new DateTime(1976, 6, 19).ToString(""d MMM yy"", culture)); Console.WriteLine(new DateTime(1976, 6, 19).ToString(""MMM yy"", culture)); } } ``` Should output: ``` 19 GenJune 76 June 76 19 GenJun 76 Jun 76 ``` But outputs: ``` 19 GenJune 76 June 76 19 Jun 76 Jun 76 ``` Disregarding the abbreviated genitives (and resorting to regular ones when abbreviated). I haven't found the DateTimeFormat files on GitHub yet (just the tests, which don't cover this), so I can't issue a request or test it, but on the reference source: http://referencesource.microsoft.com/#mscorlib/system/globalization/datetimeformat.cs,578 We got this: ``` if ((dtfi.FormatFlags & DateTimeFormatFlags.UseGenitiveMonth) != 0 && tokenLen >= 4) { result.Append( dtfi.internalGetMonthName( month, IsUseGenitiveForm(format, i, tokenLen, 'd')? MonthNameStyles.Genitive : MonthNameStyles.Regular, false)); ``` Which doesn't take MMM into account (because of the `tokenLen >= 4` conditional). If I'm not mistaken, it should look like this: ``` if ((dtfi.FormatFlags & DateTimeFormatFlags.UseGenitiveMonth) != 0 && tokenLen >= 3 /* Work for MMM and MMMM */ ) { result.Append( dtfi.internalGetMonthName( month, IsUseGenitiveForm(format, i, tokenLen, 'd')? MonthNameStyles.Genitive : MonthNameStyles.Regular, tokenLen == 3 /* Abbreviated if MMM */)); ``` " +2805 area-System.Net Introducing checks for libcurl features Runtime and load-time checks to ensure that the features user is relying on are available in the libcurl library loaded +2810 area-System.Net Moving shared default between winHttp & Unix Handler to a seperate common file ``` new file: ../../Common/src/System/Net/Http/HttpHandlerDefaults.cs modified: ../../System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs modified: System.Net.Http.csproj modified: System/Net/Http/Unix/CurlHandler.cs ``` Moved shared default to common file. Addressing issue #2787 . +2813 area-Infrastructure Investigate a better way to handle * dependencies "We're inconsistent across the repo and buildtools. Some places we use -\* others we use -beta-_. It seems that both have the draw back of not permitting an upgrade to latest stable version, or moving past any changes in the major.minor.build version. In most places the semantics we want is either 4.0._: latest of a given API version or 4.*: latest API of a major release. In conjunction with this we need to experiment with how to use policy to impact the behavior of restore. In some cases we want ""minimum that satisfies the constraint"" in others we want ""latest that satisfies the constraint"". /cc @weshaggard " +2817 area-Infrastructure Investigate: Partial facades should build against stable packages Today partial facades are building against live dependencies via P2P reference for other contracts. This means that they always need to reference the latest version of their contract dependencies. We should see if we can break this to allow the partial facades to version more independently. +2833 area-System.Net Credential Support in Unix HTTP Handler This checkin integrates CurlHandler to the credential support available in libcurl +2836 area-System.IO Add method for calculating relative paths It would be great if this super common functionality could be added to the path class. Using URI feels hacky to do this anyways. Related https://github.com/dotnet/corefx/issues/1745 +2837 area-System.Threading SemaphoreSlim Dispose thread safety The documentation of SemaphoreSlim says 'Dispose should only be used when all other operations have completed'. In practice, for me, I don't bother to Dispose the SemaphoreSlim because I would need to add synchronization to Dispose of this synchronization class. See also, this [question on stackoverflow](http://stackoverflow.com/questions/32035891/dispose-a-semaphoreslim-while-waitasync). Can SemaphoreSlim be extended so pending operations on other threads throw ObjectDisposedException? Related to this, I noticed some of the other synchronization classes in System.Threading do not properly document the thread safety behavior of their Dispose method. Furthermore, the reference source of ReaderWriterLockSlim shows a check in the Dispose method which throws a SynchronizationLockException when the Dispose conditions are not met. SemaphoreSlim and other classes could do the same. +2840 area-System.Net Enabling POST method options +2844 area-System.Linq Implement IList in Linq responses when possible There is code throughout .NET that accepts arguments of `IEnumerable` and has an optimised path for `IList` and/or `ICollection`. Some methods of `System.Linq.Enumerable` would be examples, but also elsewhere such as some collections' constructors. The effect upon `.ToList()`, `.ToArray()` and any operation in `Enumerable` that requires buffering are perhaps particularly of note here. Some methods of `Enumerable` have results which are conceptually lists. E.g. `Repeat` returns a sequence of a specified size where all items are the same, which can be modelled as a read-only list. Some methods of `Enumerable` have results which can be conceptually lists in certain conditions. E.g. If `Select` is called on a source that is itself a list, then the result would be a read-only list of the same size as the source list, and a different type. Returning such list types when possible would increase the times that the existing fast-paths for list types are made use of. At the same time, some such changes would add further such cases, potentially allowing chains of operations that cannot currently hit such fast-paths to do so. +2849 area-System.Security Add support for importing PKCS7 files on Unix +2851 area-Meta Port legacy LINQ tests to Git/XUnit "Current active test coverage for LINQ is not very great. While sources were ported and published, many old legacy tests has been left behind. It is not an easy task to port them to Git/XUnit, but mostly just because of the test volume and because they are not XUnit tests. It would be nice to port them over. Also it would be preferable to port these tests over writing new ones, because the old tests are by definition ""correct"". I.E. any deviation from the behavior guarded by those tests could be a compatibility issue. I have collected and pushed a lot of old legacy tests for LINQ to https://github.com/VSadov/corefx/tree/UnportedLegacyTests branch. Actual tests are at: https://github.com/VSadov/corefx/tree/UnportedLegacyTests/src/System.Linq/LegacyTestsToPort/LINQ " +2857 area-System.Net HttpClient Timeout Confusion The HttpClient from the System.Net.Http package has Timeout property that defaults to a 100 seconds which as I read through the code just means how long till the task is cancelled. The underlying windows handler WinHttpHandler has the timeout properties ConnectionTimeout, SendTimeout, ReceiveHeadersTimeout and ReceiveDataTimeout which default to 30 seconds except for ConnectionTimeout which defaults to 60 seconds. If you have an operations that takes say 40 seconds before it return back any data it will always timeout after 30 seconds. Only way to get around this is to code against the platform specific WinHttpHandler and set the timeout properties. Am I missing something about how to set timeout in a platform agnositic approach? Here is the code I wrote that directly uses the WinHttpHandler but I want to code just against the HttpClientHandler. ``` private HttpClient CreateHttpClient() { var httpMessageHandler = new System.Net.Http.WinHttpHandler(); httpMessageHandler.SendTimeout = TimeSpan.FromSeconds(200); httpMessageHandler.ReceiveDataTimeout = TimeSpan.FromSeconds(200); httpMessageHandler.ReceiveHeadersTimeout = TimeSpan.FromSeconds(200); var httpClient = new HttpClient(httpMessageHandler); httpClient.Timeout = TimeSpan.FromSeconds(200); return httpClient; } ``` +2862 area-System.Collections Add HashSet ctors with capacity Replaces PR #2122. I squashed and fixed up @MarkusSintonen's commits from that PR. Fixes #382. New tests are not included due to System.Collections.dll being a partial facade, and the repo not currently having the infrastructure to enable adding tests for new surface area in partial facades. cc: @terrajobst, @KrzysztofCwalina +2865 area-System.Threading Leaky abstraction in ThreadPool.[Unsafe]RegisterWaitForSingleObject I just went into the pitfall of using a waithandle in two different registrations. The documentation states the following: > The wait thread uses the Win32 WaitForMultipleObjects function to monitor registered wait operations. Therefore, if you must use the same native operating system handle in multiple calls to RegisterWaitForSingleObject, you must duplicate the handle using the Win32 DuplicateHandle function. It seems quite bad when the documentation is encouraging you to write non-portable code, and P/Invoking to DuplicateHandle requires full trust. Would it be a big problem to detect that the same handle is there twice with two different registrations and correctly wait for it and queue both action on the thread pool when the waithandle becomes ready? +2869 area-Meta Merge future branch back into master This issue is just for tracking the changes we have merged into future so when we merge it back to master we know which API changes we need to modify contracts and ensure are supported on our other platforms like the desktop framework. At this point it isn't clear when this will happen but we want to keep track of this item. --- Merged PRs into future --- - [x] #1384 Regex group should provide a Name property. - [x] #1783 Add ConcurrentDictionary GetOrAdd/AddOrUpdate overloads with generic arg - [x] #1756 Implement generic interfaces on Regex collections - [x] #2436 Add async XLinq document/element loading and saving - [x] #2862 Add HashSet ctors with capacity +2873 area-System.IO Unix NamedServerPipeStream disposal no longer deletes the FIFO Per the discussion in #2764, the clean up of a Unix FIFO named pipe upon disposal of the NamedPipeServerStream that created it has been removed. - Resolves #2764 cc: @stephentoub +2875 area-System.IO Removed the Unix restriction on MaxNumberOfServerInstances There were previously checks to ensure that MaxNumberOfServerInstances was within the same boundaries as it was on Windows despite never actually being used in the Unix implementation. This commit removes those checks and adds platform specific tests for the new behavior. - Resolves #2764 +2877 area-System.Collections Propose Adding a GetOrAdd(TKey key, Func valueFactory) to Dictionary "On `ConcurrentDictionary` there is the very useful function `TValue GetOrAdd(TKey key, Func valueFactory)`. The pattern that the method represents is one that issued commonly on the ""normal"" `Dictionary` as well. I propose adding such a method for this common use case. Besides simplifying it will also make switching between the two dictionaries simpler. " +2882 area-System.Security Same naming classes appear in multiple nuget packages. I know you guys are busy building the .net core packages. At the moment, I face a challenge about the following errors when target dnxcore50 Error CS0433 The type 'HashAlgorithm' exists in both 'System.Security.Cryptography.Hashing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Security.Cryptography.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Error CS0433 The type 'HMACSHA1' exists in both 'System.Security.Cryptography.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Security.Cryptography.Hashing.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Error CS0433 The type 'RandomNumberGenerator' exists in both 'System.Security.Cryptography.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Security.Cryptography.RandomNumberGenerator, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Previously, we solve this kind of issues by add alias in project. Since we have new project file which is project.json. I have run out of idea how to add alias. Can one of masters give me some hints on this? +2883 area-System.Net Removed DumpHeaders dependency & coded to avoid unnecessary splitting ``` modified: ../../System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs ``` This fixed the useragent bug. The issue was DumpHeaders adding the same header twice in case of muti values header. +2885 area-System.Security X509 ExportMultiplePrivateKeys test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/3248/console ``` Discovering: System.Security.Cryptography.X509Certificates.Tests Discovered: System.Security.Cryptography.X509Certificates.Tests Starting: System.Security.Cryptography.X509Certificates.Tests System.Security.Cryptography.X509Certificates.Tests.CollectionTests.ExportMultiplePrivateKeys [FAIL] System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\StorePal.Export.cs(82,0): at Internal.Cryptography.Pal.StorePal.Export(X509ContentType contentType, String password) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Certificate2Collection.cs(123,0): at System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Export(X509ContentType contentType, String password) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Certificate2Collection.cs(116,0): at System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Export(X509ContentType contentType) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Security.Cryptography.X509Certificates\tests\CollectionTests.cs(482,0): at System.Security.Cryptography.X509Certificates.Tests.CollectionTests.ExportMultiplePrivateKeys() Finished: System.Security.Cryptography.X509Certificates.Tests ``` +2886 area-System.Reflection Reflection types should be made extensible "I'm creating a subclass of FieldInfo and there's an error in the constructor saying ""'ConstructorInfo' does not contain a constructor that takes 0 arguments"". The reason for this is that my constructor is calling the default constructor of FieldInfo, which seems to be unavailable. That's because FieldInfo's constructor was changed to internal. As there is no other constructor defined in FieldInfo it's now impossible to extend it. It's the same for ConstructorInfo, EventInfo, MethodInfo, PropertyInfo, TypeInfo and Type. Is this intended? " +2890 area-System.Net Porting System.Net.NameResolution. "Porting System.Net.NameResolution and tests. Adding a PAL layer for this contract together with x-plat implementations. Pending work is marked either as ""Shims"" or with TODO comments. Feature #893 " +2891 area-System.Net Tracking items for System.Net.NameResolution This issue is tracking TODOs and Shims removal for PR #2890 : 1. Contract changes to System.Net.Primitives: 1. [ ] Add public ctor for `SocketException(SocketError errorCode, int platformError)` 2. [ ] `IPAddress` - allow access to internal buffer via internal contract or new public API on `System.Net.Primitives`. 3. [ ] `SocketAddress[int]` - allow direct access to internal buffer via internal contract or new public API in `System.Net.Primitives`. 2. Add UnitTests required by changes made during refactoring: 1. [ ] `NameResolutionPal.GetHostByAddr(IPAddress)` : test with BIGENDIAN +2894 area-System.Net Tracking x-plat issues for System.Net.NameResolution Feature #2484 : X-Plat comments from PR #2890 related to System.Net.NameResolution: 1. Update errno helpers. 2. Add Unit/Pal test to validate potential indexing issues found in NameResolutionPal.Unix.cs CreateHostEntry(Interop.libc.hostent\* hostent); Given the design error, I suggest similar tests for the entire file. 3. `TryGetNameInfo`'s allocation of `hostname`: consider using stackalloc / StringBuilderCache. 4. Intermittent PAL test failure: `System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName_GetHostByAddr` MESSAGE: Assert.Equal() Failure Expected: 1XY.XYZ.XYZ Actual: 255.2.0.0 +++++++++++++++++++ STACK TRACE: at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName_GetHostByAddr() 1. Intermittent PAL test failure: `System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName_TryGetNameInfo` MESSAGE: Assert.Equal() Failure Expected: Success Actual: HostNotFound +++++++++++++++++++ STACK TRACE: at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName_TryGetNameInfo() +2895 area-System.IO 5 FileSystem tests are failing on OS X 5 test in System.IO.FileSystem are failing on OS X System.IO.FileSystem.Tests.FileInfo_GetSetTimes.SettingUpdatesProperties [FAIL] Assert.All() Failure: 2 out of 6 items in the collection did not pass. [1]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000Z Actual: 2015-08-19T23:25:34.0000000Z at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.FileInfo_GetSetTimes.<>c__DisplayClass3_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000-08:00 Actual: 2015-08-19T16:25:34.0000000-07:00 at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.FileInfo_GetSetTimes.<>c__DisplayClass3_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: at System.IO.FileSystem.Tests.FileInfo_GetSetTimes.SettingUpdatesProperties() System.IO.FileSystem.Tests.DirectoryInfo_GetSetTimes.SettingUpdatesProperties [FAIL] Assert.All() Failure: 2 out of 6 items in the collection did not pass. [1]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000Z Actual: 2015-08-19T23:25:34.0000000Z at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.DirectoryInfo_GetSetTimes.<>c__DisplayClass3_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000-08:00 Actual: 2015-08-19T16:25:34.0000000-07:00 at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.DirectoryInfo_GetSetTimes.<>c__DisplayClass3_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: at System.IO.FileSystem.Tests.DirectoryInfo_GetSetTimes.SettingUpdatesProperties() System.IO.FileSystem.Tests.DirectoryInfo_ToString.ParentDirectory [FAIL] Assert.Equal() Failure ↓ (pos 0) Expected: Actual: / ↑ (pos 0) Stack Trace: at System.IO.FileSystem.Tests.DirectoryInfo_ToString.ParentDirectory() System.IO.FileSystem.Tests.Directory_GetSetTimes.SettingUpdatesProperties [FAIL] Assert.All() Failure: 2 out of 6 items in the collection did not pass. [1]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000Z Actual: 2015-08-19T23:25:39.0000000Z at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.Directory_GetSetTimes.<>c__DisplayClass5_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000-08:00 Actual: 2015-08-19T16:25:39.0000000-07:00 at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.Directory_GetSetTimes.<>c__DisplayClass5_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: at System.IO.FileSystem.Tests.Directory_GetSetTimes.SettingUpdatesProperties() System.IO.FileSystem.Tests.File_GetSetTimes.SettingUpdatesProperties [FAIL] Assert.All() Failure: 2 out of 6 items in the collection did not pass. [1]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000Z Actual: 2015-08-19T23:25:40.0000000Z at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.File_GetSetTimes.<>c__DisplayClass5_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 2014-12-01T12:00:00.0000000-08:00 Actual: 2015-08-19T16:25:40.0000000-07:00 at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) at System.IO.FileSystem.Tests.File_GetSetTimes.<>c__DisplayClass5_0.b__0(Tuple`3 tuple) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: at System.IO.FileSystem.Tests.File_GetSetTimes.SettingUpdatesProperties() +2897 area-System.Net "WinHttpRequestStream.Flush Appends ""0\r\n\r\n"" in Chunked Mode" "WinHttpRequestStream.Flush writes ""0\r\n\r\n"" to the stream every time the method is called in when _chunkedMode is true. This behavior seems wrong. The _endChunk should only be added to the end. " +2898 area-Meta Change tests to use consistent namespaces "Namespace used in test projects are all over the place: - default (previous version of System.Text.Encoding.CodePages tests) - Test (PLINQ) - $packageNamespace.Tests - $packageNamespace.UnitTests .... and potentially more. Is there any guidance for what we should be using? The only potentially applicable guideline would be ""Follow the style of the current project"", which doesn't help much in the case of new work (or say what any canonicalization tool would change things to). " +2903 area-System.Net Removed DumpHeaders dependency & coded to avoid unnecessary splitting ``` modified: System/Net/Http/Unix/CurlHandler.cs ``` I messed up while updating the changes in remote branch. Tried to fix that but could not. Will figure out what caused the issue. Sending new PR with updated changes. Copying the comments here. Sorry for any inconvenience. +2904 area-System.IO Shims should use intptr_t for file descriptors Once we get all of the IO stuff shimmed, it would be better to use intptr_t instead of int32_t for file descriptors as then we can marshal SafeHandles to descriptors without the current workarounds. +2905 area-System.Net Merge changes from TFS +2906 area-System.IO Added ZLib decompression support to DeflateStream The DeflateStream class currently uses ZLib for compression (if available) but doesn't use ZLib for decompression. This commit adds support to use either ZLib or the Managed implementation for decompression (inflation). - Resolves #2024; Added ZLib support in InflaterZLib.cs - Inflater.cs the old managed implementation is renamed to InflaterManaged.cs - Extracted interface of necessary Inflater methods into the IInflater interface from which InflaterManaged and InflaterZLib inherit. - Roughly a 3X speedup for decompression when using the ZLib library instead of the Managed implementation! +2907 area-System.Net Merge changes from TFS +2910 area-System.Security new X509Certificate2(byte[]) should return the signing cert for PKCS#7 on Unix The Windows code supports reading a PKCS#7 signed or PKCS#7 signed-and-enveloped structure; but in single certificate mode it doesn't return certs[0], it returns the certificate which signed the structure. My test files (produced by Windows (certmgr.msc and X509Certificate2Collection::Export)) aren't signed, so Windows emits an exception (`new CryptographicException(ErrorCode.CRYPT_E_SIGNER_NOT_FOUND)`). Without a sample to see what's going on here, it's hard to make compatible behavior. So, for now, the Unix implementation will just throw, even if it could have worked. +2913 area-System.Security Add support for exporting PKCS7 files on Unix +2914 area-System.Threading System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTestCases.TaskCancelWait1 failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/1989/testReport/junit/System.Threading.Tasks.Tests.CancelWait/TaskCancelWaitTestCases/TaskCancelWait1/ MESSAGE: Expected Result to lie between 1.63 and 1.65 for completed task. Actual Result -42. Using n=Light IsCanceled=False Expected: True Actual: False +++++++++++++++++++ STACK TRACE: at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.VerifyResult(TaskInfo current) at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.b__3(TaskInfo current) at System.Threading.Tasks.Tests.CancelWait.TaskInfo.Traversal(Action`1 predicate) at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.Verify() at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.RealRun() at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTestCases.TaskCancelWait1() +2915 area-System.Net HttpClient xplat: Fix bugs in polling and callback logic - On OSX, the read end of the pipe sometimes wakes up the poll with a POLLOUT. Since we are interested in only reading on it, scoping down to POLLIN prevents this from happening. Else we attempt a read on it which fails - CheckForCompletedTransfers was being unnecessarily called from the socket callback. We are only interested in MSG_DONE after the socket callback indicates removal. This will anyway wake up PollFunction which calls CheckForCompletedTransfers. This race is also causing a seg fault sometimes because curl_multi_socket_action has been called on an fd that was getting cleaned up via curl_easy_cleanup (call sequence is CurlSocketCallback --> CheckForCompletedTransfers --> EndRequest) - Also removed some unnecessary CharSet attributes cc: @stephentoub @davidsh @CIPop @SidharthNabar @pgavlin +2916 area-System.Net Introducing a bunch of tests for http client handler This checkin tests the client handler in following scenarios: - Http and Https calls - Authentication - Redirection - Redirection + Authentication - custom headers - cookies +2928 area-System.Net Add ALPN support to System.Net.Security.SslStream Porting to newest bug tracker. https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6264363-add-support-for-alpn-to-system-net-security-sslstr https://connect.microsoft.com/VisualStudio/feedback/details/812003/system-net-security-sslstream-needs-support-for-alpn-to-negotiate-spdy-http2-connections Microsoft drove the HTTP/2 working group to adopt the ALPN TLS Extension for use in negotiating HTTP/2 connections. It succeeded. SChannel got ALPN support in the Windows 8 timeframe. .NET's SslStream class does not have ALPN support, preventing low-level socket clients (like Fiddler) from sending ALPN tokens to servers during TLS handshaking, in turn blocking support of the HTTP/2 protocol. The code change to SslStream is probably a dozen lines at worst. The current workaround for those blocked by this shortcoming is to take on a **massive** security risk and ship either BouncyCastle or OpenSSL (or re-wrap SChannel, I guess). +2930 area-System.Security Change Windows GetRSAPrivateKey to prefer CNG When GetRSAPrivateKey was added into the repository the CNG types weren't yet online. Now that they are, we should have GetRSAPrivateKey and GetRSAPublicKey use CNG when able, and fallback to CAPI for legacy support. +2934 area-System.Net Allow setting IP protection level on Socket - P2P is not possible without it It is not possible for peers to establish a connection with eachother behind NAT(s) using Windows sockets without setting the IP socket option IP_PROTECTION_LEVEL. Currently there is no way to do this on a `DatagramSocket` or .NET Core `System.Net.Socket.Socket`, thus there is _no way make Peer 2 Peer Windows Store Apps_. The issue on [Microsoft Connect](https://connect.microsoft.com/VisualStudio/feedback/details/1431526/nat-traversal-udp-hole-punching-not-possible-in-windows-store-apps-even-with-internet-client-server-capability). In .NET Framework one used [`System.Net.Sockets.IPProtectionLevel`](http://referencesource.microsoft.com/#System/net/System/Net/Sockets/Socket.cs,5eb8a772f197999a). We need to add this facility `Windows.Networking.Sockets.DatagramSocket` and/or `System.Net.Sockets.Socket` +2936 area-System.Net .NET Core's System.Net.Sockets.Socket Send and Receive methods use old async technique There is no documentation on the `System.Net.Sockets.Socket` provided in .NET Core (beyond the XML code documentation) but it seems to provide a subset of .NET Framework desktop [`Socket`s](https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendasync%28v=vs.110%29.aspx) members. The only methods to send and receive are [`SendAsync`](https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendasync%28v=vs.110%29.aspx) and [`RecieveAsync`](https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receiveasync%28v=vs.110%29.aspx). Despite the names they are not `async` methods but an old school variant to which one supplies the `SocketAsyncEvenArgs` parameter _shudder_. We need to bring .NET Core's `Socket` up-to-date and provide `async` variants. Also consider synchronous methods since `Socket`s are often used in in background processes with dedicated threads where that is wanted (applications tend to use higher application level type such as `HttpClient`). +2938 area-System.Runtime GC tests GetTotalMemoryTest_ForceCollection, GetGenerationTest test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release/1057/console ``` GCTests.GetTotalMemoryTest_ForceCollection [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release\src\System.Runtime\tests\System\GC.cs(295,0): at GCTests.GetTotalMemoryTest_ForceCollection() ``` We should probably just delete these tests. +2942 area-System.Threading Request to Add Timer.Dispose(WaitHandle) API in CoreCLR. We are working on porting our .Net 4.5 application to the .Net Core CLR platform. We have multiple services implemented in our application which need to do some work every so often. Currently this is implemented using System.Threading.Timer with a callback method that is responsible for scheduling the next callback. During cleanup, we want to wait until we are sure that the callback is no longer running and will not run in future. Currently we do this using Threading.Timer.Dispose(WaitHandle) with additional synchronization mechanism to avoid the ObjectDisposedException. Since CoreCLR doesn't have Timer.Dispose(WaitHandle) implemented, every application/service now has to implement Timer.Dispose(WaitHandle) logic using some synchronization mechanism in their code. This adds complexity at each place where this API is used currently. We would like to carry forward the same behavior and so would request to add this API [Timer.Dispose(WaitHandle)] back in CoreCLR. Thanks, Mehul. +2944 area-System.Net Fix an assert in CurlHandler multi handle release path - If a timeout happens, the socket fd is not removed from _fdSet. When SafeCurlMultiHandle is finalized, it checks if _fdSet is empty and this assertion was failing. So ensuring that all codepaths of EndRequest result in cleanup from _fdSet cc: @stephentoub @davidsh @CIPop @SidharthNabar @pgavlin +2953 area-System.Security Add RSA.Create() to utilize the correct platform-dependent RSA implementation +2958 area-System.IO Add coverage to DriveInfo tests FileSystem.DriveInfo.dll coverage raised to at or near testable maximum. Added several scenarios that weren't present before and also split up Volume Label setting/getting to several tests so that errors can be better diagnosed. +2961 area-System.IO Avoid unnecessary allocations when using FileStream "This was originally a PR (https://github.com/dotnet/coreclr/pull/1429), turned into an issue as a result of the comments there. The idea is to avoid 4KB allocation for buffer whenever we need to work with large number of files. Consider the following code: ``` foreach (var file in System.IO.Directory.GetFiles(dirToCheck, ""*.dat"")) { using (var fs = new FileStream(file, FileMode.Open)) { // do something to read from the stream } } ``` The problem is that each instance of FileStream will allocate an independent buffer. If we are reading 10,000 files, that will result in 40MB(!) being allocated, even if we are very careful about allocations in general. See also: https://github.com/dotnet/corefx/pull/2929 The major problem is that FileStream will allocate its own buffer(s) and provide no way to really manage that. Creating large number of FileStream, or doing a big writes using WriteAsync will allocate a lot of temporary buffers, and generate a _lot_ of GC pressure. As I see it, there are a few options here: - Add a constructor that will take an external buffer to use. This will be the sole buffer that will be used, and if a bigger buffer is required, it will throw, instead of allocating a new buffer. - Add a pool of buffers that will be used. Something like the following code: [ThreadStatic] private static Stack[] _buffersBySize; private static GetBuffer(int requestedSize) { if(_buffersBySize == null) _buffersBySize = new Stack[32]; ``` var actualSize = PowerOfTwo(requestedSize); var pos = MostSignificantBit(actualSize); if(_buffersBySize[pos] == null) _buffersBySize[pos] = new Stack(); if(_buffersBySize[pos].Count == 0) return new byte[actualSize]; return _buffersBySize[pos].Pop(); ``` } private static void ReturnBuffer(byte[] buffer) { var actualSize = PowerOfTwo(buffer.Length); if(actualSize != buffer.Length) return; // can't put a buffer of strange size here (prbably an error) ``` if(_buffersBySize == null) _buffersBySize = new Stack[32]; var pos = MostSignificantBit(actualSize); if(_buffersBySize[pos] == null) _buffersBySize[pos] = new Stack(); _buffersBySize[pos].Push(buffer); ``` } The idea here is that each thread has its own set of buffers, and we'll take the buffers from there. The Dispose method will return them to the thread buffer. Note that there is no requirement to use the same thread for creation / disposal. (Although to be fair, we'll probably need to handle a case where a disposal thread is used and all streams are disposed on it). The benefit here is that this isn't going to impact the external API, while adding the external buffer will result in external API being visible. " +2963 area-System.Net Handle leak with WinHttpHandler "The following test demonstrates an unbounded leak of both memory and handles: ``` C# [Fact] public void TestLeak() { while (true) { HttpClient client = new HttpClient(); client.GetStringAsync(""http://www.httpbin.org"").Wait(); // client.Dispose(); } } ``` At least one problem appears to be that without explicitly Dispose'ing of the HttpClient instance, the underlying session SafeHandle is never cleaned up. When the session handle is created, it's DangerousAddRef'd (https://github.com/dotnet/corefx/blob/master/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs#L992), and then DangerousRelease is only called if explicitly Dispose'ing (https://github.com/dotnet/corefx/blob/master/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs#L555). " +2965 area-System.Net Dns.GetHostAddressesAsync and HttpClient can't run on Linux System.AggregateException: One or more errors occurred. ---> System.ArgumentException: The AddressFamily Unspecified is not valid for the System.Net.IPEndPoint end point, use InterNetwork instead. Parameter name: socketAddress at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at ConsoleApp1.Program.d__2.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait() at ConsoleApp1.Program.Main(String[] args) +2967 area-System.Net Add System.Net.NameResolution to README.md Add System.Net.NameResolution to README.md. +2972 area-System.Net Add more tests for WebHeaderCollection Excluded from #2380 +2973 area-System.Net Fix HttpClientHandler timeouts Since HttpClientHandler doesn't expose all the timeout used by the underlying WinHttpHandler, we need to disable those timeouts in favor of the HttpClient.Timeout property. Addresses issue #2857. +2982 area-System.Net WebSocket extensions From using the WebSocket class, I think these extensions make sense: ``` C# Task ReceiveTextAsync(CancellationToken cancellationToken = default(CancellationToken)); Task> ReceiveBinaryAsync(CancellationToken cancellationToken = default(CancellationToken)); Task SendAsync(string message, CancellationToken cancellationToken = default(CancellationToken)) Task SendAsync(ArraySegment message, CancellationToken cancellationToken = default(CancellationToken)) ``` - All methods have a defaulted CancellationToken. - The Receive method implementations read until EndOfMessage. - The Receive methods send back a Close message when receiving one. The message sent back echos the status code which was received. - The Receive methods throw when the MessageType is different than that of the method signature. (For most protocols, the user will know what MessageType he expects to come next.) - The string overloads handle the encoding/decoding. +2984 area-System.Collections Installing System.Collections.Immutable on .NET 4.5 brings unnecessary packages "When System.Collections.Immutable nuget package is installed to project targeting .NET 4.5, some unnecessary dependencies are brought in: ``` ``` NuGet is apparently smart enough to not add those packages as references as they are only meant for .NET Core, but I still feel they should not even be added to packages.config and downloaded. [System.Collections.Immutable nuget package](https://www.nuget.org/packages/System.Collections.Immutable/) only specifies dependencies for .NET Core (DotNET 5.0). I believe that adding empty dependencies group for .NET 4.5 as can be seen in [AutoMapper nuget package](https://www.nuget.org/packages/AutoMapper/) (for example) would fix the issue and those dependencies would not be downloaded. Have not adding other dependency groups been done on purpose or is it an oversight? Thanks! " +2988 area-System.Net How to implement System.Net.NameResolution on FreeBSD? The assembly `System.Net.NameResolution` does not compile on FreeBSD. Looking at the sources it seems to have corresponding source files implementing it on Linux and OS X. Looks like a good candidate for a shim, to unify the implementation. Especially given that the sockets API is pretty consistent across POSIX systems. @nguerrera do you plan a `System.Net.Native` shim to cover this? \cc @josteink +2992 area-System.Net Merge changes from TFS +2996 area-System.Globalization System.Globalization: Expose DateTimeFormat GetShortestDayName to .NET Core contract I found what looks like a mistake in the .NET Core contracts for DateTimeFormat. This class exposes two sets of APIs: some methods, and their corresponding properties. For example, DateTimeFormat has a GetMonthName(int) method, that returns the name of the specified month. And then it has a corresponding property MonthNames, that is a string array of all the month names. This is true for Month Names, Abbreviated Month Names, Day Names, and Abbreviated Day Names. And in the full framework, this holds true for Shortest Day Names: string GetShortestDayName(DayOfWeek) & string[] ShortestDayNames. However, in the .NET Core contracts, the string[] property ShortestDayNames is public, but the method GetShortestDayName(DayOfWeek) is not exposed. I see this [is true for Silverlight](https://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo%28v=vs.95%29.aspx) as well. We should expose this method in the .NET Core. +3000 area-System.Net Switch to using async WinHTTP APIs in WinHttpHandler The current version of WinHttpHandler calls into WinHTTP using a synchronous pattern. We need to switch to using the async pattern instead, in order to provide the required performance and scalability for server scenarios of ASP.NET 5. +3002 area-System.Net Add System.Net.Http.Native shim and seed it with curl initialization cc @sokket @bartonjs @stephentoub +3007 area-System.Linq Calls with out enum arguments fail when expression tree is interpreted. "``` C# public enum MyEnum { Value } public class Foo { public static void Bar(out MyEnum o) { o = MyEnum.Value; } public void Test() { var x = Expression.Variable(typeof (MyEnum), ""x""); var expression = Expression.Lambda( Expression.Block( new [] { x }, Expression.Call(null, typeof(Foo).GetMethod(""Bar""), x))); expression.Compile()(); } } ``` Interpreter throws - $exception {""Object of type 'System.Int32' cannot be converted to type 'App1.MyEnum&'.""} System.ArgumentException " +3008 area-System.Xml Short-circuit key comparison on equal indexes in EnumerableSorter in System.Xml.XDocument System.Xml.XDocument has its own copy of EnumerableSorter and possibly can benefit from the same fix as in https://github.com/dotnet/corefx/pull/2977 +3009 area-System.IO PathHelper stackalloc version can't grow Will always fail with MAX_PATH if it goes beyond when resolving paths (relative, short names, etc.). Need to change to allow switching between stack and heap when needed. +3014 area-System.Reflection MSDN doc wrong about virtual CustomAttributeData.AttributeType property in .NET 4.5 According to MSDN, [System.Reflection.CustomAttributeData.AttributeType](https://msdn.microsoft.com/en-us/library/system.reflection.customattributedata.attributetype%28v=vs.110%29.aspx) is virtual on .NET4.5/4.6. It isn't however in reality. I suppose it's confused because in CoreFx the property _is_ indeed [virtual](https://github.com/dotnet/corefx-progress/blob/67c6fd93d8b24f5f82490e295950214a45769f4d/src-full/System.Reflection.cs#L54). Can we get this fixed? +3015 area-System.Net HttpClientHandler on unix (CurlHandler) hangs forever in case of negative scenarios "When curl handler encounters exception in its execution, it hangs forever. ``` using (var handler = new HttpClientHandler()) { handler.MaxAutomaticRedirections = 5; var client = new HttpClient(handler); await client.GetAsync(""http://httpbin.org/redirect/6""); } ``` " +3016 area-System.Net HttpClientHandler on unix (CurlHandler) Cookie Behavior different between Unix and Windows There are subtle differences in the way HttpClientHandler behaves w.r.t cookies. On windows if we set httpHandler.UseCookies = true but if the user does not provide a valid cookieContainer, we get InvalidOperationException. In case of CurlHandler, we are ignoring it. +3028 area-System.Security Add X509Chain tests for expiration boundary conditions The X509Chain object supports an explicit time for the override. Using a statically built chain, no revocation mode, and an explicit time, it should be possible to get a very deterministic test for the chain assessment. +3033 area-System.Net Fix error handling in WinHttpHandler StartRequest Addresses dnu restore exception 2547 https://github.com/aspnet/dnx/issues/2547/ - Fix a code path where `requestHandle` could be `null`. - Add unit test to simulate this error code path. +3034 area-System.Security Add support for OCSP on Unix OCSP = Online Certifciate Status Protocol +3035 area-Microsoft.CSharp System.Dynamic.Runtime tests should probably move to under Microsoft.CSharp What we have currently under System.Dynamic.Runtime\tests are mostly tests for C# dynamic. While they do provide coverage for System.Dynamic, they target various language features and only indirectly target DLR machinery. This is confusing. (see, for example, discussion in https://github.com/dotnet/corefx/pull/2941) Tests that target and require C# dynamic should go to under Microsoft.CSharp. If there are any tests that directly targets DLR and do not require C# dynamic, they can remain under System.Dynamic.Runtime. +3037 area-System.Diagnostics TestProcessStartTime test is failing on OS X The TestProcessStartTime test in System.Diagnostic.Process.ProcessTests class is failing with the following error: System.Diagnostics.ProcessTests.ProcessTests.TestProcessStartTime [FAIL] Assert+WrapperXunitException : File path: Y:\Repositories\personal\dotnet\corefx\src\System.Diagnostics.Process\tests\ProcessTests.cs. Line: 387 ---- Assert.InRange() Failure Range: (635766571991261530 - 635766571991772530) Actual: 635766571650984930 Stack Trace: at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) at System.Diagnostics.ProcessTests.ProcessTests.TestProcessStartTime() ----- Inner Stack Trace ----- at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) +3043 area-System.Linq Allow empty BlockExpression expressions Issue #1877 discusses having `SwitchExpression` objects with no cases. One might similarly have a case where `BlockExpression` elements were being created dynamically and one hit the case of their being no expressions within the block. Such a block would be essentially the same as `Expression.Empty`, but arrived at through happening to hit zero item in a dynamic construction. It would seem that the arguments [here](https://github.com/dotnet/corefx/pull/2803#issuecomment-136514021) about zero-case switches apply equally to zero-item blocks. +3045 area-System.Net WebException.Status on Unix returning wrong result for DNS failures ``` Discovering: System.Net.Requests.Tests Discovered: System.Net.Requests.Tests Starting: System.Net.Requests.Tests System.Net.Requests.Test.HttpWebRequestTest.GetResponseAsync_ServerNameNotInDns_ThrowsWebException [FAIL] Assert.Equal() Failure Expected: NameResolutionFailure Actual: UnknownError Stack Trace: at System.Net.Requests.Test.HttpWebRequestTest.GetResponseAsync_ServerNameNotInDns_ThrowsWebException() Finished: System.Net.Requests.Tests ``` +3046 area-System.Linq Use BlockExpression subclasses more widely. BlockExpression has several subclasses that cover various numbers of sub- expressions when the type is the same as the last expression, and there are no variables. These are only used in one or two of the possible paths under which they make sense. Use them more widely. +3048 area-System.Reflection Merge branch 'master' of https://github.com/dotnet/corefx into dev/metadata +3050 area-System.Net Refactor CurlHandler for threading and resource cleanup "@davidsh, @CIPop, @pgavlin: The first commit in this PR enables the System.Net.Requests tests to run on Unix in CI. Just a few minor tweaks. @kapilash: The second commit is your commit with new tests from #2916, which this PR replaces. @kapilash, @vijaykota: The third commit is the majority of the changes for this PR... CurlHandler is now split into three types: - CurlHandler, which represents the shell of the handler, contains some helper functions, and contains a ""MultiAgent"". It submits ""EasyRequest""s to the ""MultiAgent"". - CurlHandler.EasyRequest, which represents all of the state associated with a SendAsync request on the HttpClient. - CurlHandler.MultiAgent, which represents the owner of a libcurl multi handle and all of the processing associated with it. The MultiAgent is responsible for actually processing EasyRequests, which CurlHandler queues to it. MultiAgent is designed to not require any cleanup. When the first EasyRequest arrives, it spins up a worker that creates a multi handle to process the request. Any additional requests to arrive while that worker is active will be processed by that worker and multi handle. When no work remains, the multi handle and the worker goes away. If/when another request arrives, a new multi handle / worker are spun up. Etc. Almost all of the locking previously there was removed, as the worker thread is now solely responsible for doing all work on the multi handle; any requests for processing come in through the requests queue processed by that thread. This design avoids threading issues we faced with regards to accessing state managed by the multi handle without holding the lock (e.g. polling file descriptors) and avoids having multiple threads blocked waiting on the lock to do processing associated with the multi handle. It also makes resource cleanup much easier and more deterministic: all state associated with the easy handle is cleaned up when that thread is done processing the easy handle, and all state associated with the multi handle is cleaned up when the worker thread shuts down. The change also ensures that we always complete the response message, and that any exceptions that occur are propagated as needed to Read on the response stream (fixes #3015). Further, the design will make it trivial in the future to change the relationship between a CurlHandler and a MultiAgent: - If we want one MultiAgent shared across all CurlHandlers, we just change the _agent field to be static instead of instance. - If we want a pool of MultiAgents, we can simply create a collection of them and round-robin between them from one or more CurlHandlers. - Etc. All of the configuration code remains, e.g. what options are set on the easy and multi handles, but the code has been refactored. I also include CURLOPT_NOSIGNAL to avoid multithreading problems per the docs. Along the way, I cleaned up some stale interop that's gotten left behind through various iterations, and I fixed a few small issues related to behavioral differences from Windows, e.g. CookieContainer never returning null, UseCookies defaulting to true, etc. (Fixes #3016) " +3051 area-Meta Create a C++ coding standard for the PAL layer Create a C++ code style document describing coding standards and naming standards to use the PAL layer. Also, fix up the current PAL code to adhere to the coding standard +3054 area-System.Runtime Add AssemblyLoadContext.LoadUnmanagedDllFromPath helper API "## Scenario Overrides of `System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDll` that just wish to provide alternative paths are forced to write platform-specific code to call `LoadLibrary` or `dlopen` to load the library and return the library handle. For example: ``` c# internal class CustomAssemblyLoadContext : AssemblyLoadContext { [DllImport(""kernel32"")] private static extern IntPtr LoadLibrary(string path); [DllImport(""libdl"")] private static extern IntPtr dlopen(string path, int flags); protected override IntPtr LoadUnmanagedDll(String unmanagedDllName) { if (!ShouldLoadFromCurrentDirectory(unmanagedDllName)) { return IntPtr.Zero; // use the default loader } var libraryPath = Path.Combine(Environment.CurrentDirectory, unmanagedDllName); IntPtr libraryHandle = EnvironmentHelper.IsWindows ? LoadLibrary(libraryPath) : dlopen(libraryPath, 0); if (libraryHandle == IntPtr.Zero) { // ... (more error handling) throw new DllNotFoundException(unmanagedDllName); } return libraryHandle; } } ``` The proposal is to add an API to `AssemblyLoadContext` to provide a platform-independent way of loading an unmanaged library: ``` c# internal class CustomAssemblyLoadContext : AssemblyLoadContext { protected override IntPtr LoadUnmanagedDll(String unmanagedDllName) { if (!ShouldLoadFromCurrentDirectory(unmanagedDllName)) { return IntPtr.Zero; // use the default loader } var libraryPath = Path.Combine(Environment.CurrentDirectory, unmanagedDllName); return LoadUnmanagedDllFromPath(libraryPath); } } ``` ## Proposed API ``` c# namespace System.Runtime.Loader { public abstract class AssemblyLoadContext { // Relevant existing members protected abstract Assembly Load(AssemblyName assemblyName); protected Assembly LoadFromAssemblyPath(string assemblyPath); protected virtual IntPtr LoadUnmanagedDll(String unmanagedDllName); // Proposed members protected IntPtr LoadUnmanagedDllFromPath(String unmanagedDllPath); } } ``` ## Details ### Usage and behavior - `unmanagedDllPath` must be an absolute path to the library to load - No changes are made to the specified search path or library name in `unmanagedDllPath` before attempting the load. For example, no prepending ""lib"" and no appending "".so"". However, the system may make changes, for instance, LoadLibrary on Windows appends a "".dll"" if an extension is not specified. - `LoadUnmanagedDllFromPath` would try to load the library using default load flags, and upon success, would return the library handle (value returned by LoadLibrary/dlopen) - `LoadUnmanagedDllFromPath` would throw an exception upon failure to load the library - Upon a successful load, callers from LoadUnmanagedDll overrides are expected to return the library handle from LoadUnmanagedDll, since there is no equivalent of FreeLibrary/dlclose - Upon returning a nonzero value from LoadUnmanagedDll, the loader would attempt to load the entry point from the library ### Exceptions - `ArgumentNullException` - Self-explanatory - `ArgumentException` - `unmanagedDllPath` is an empty string or a relative path - The following exceptions are inherited by the default loader implementation: - `BadImageFormatException` - Windows only - Failed to load the library - `DllNotFoundException` - Did not find the library or failed to load the library - Note that the default loader may also throw `EntryPointNotFoundException`. Since the entry point is loaded upon returning from `LoadUnmanagedDll`, a successful return from `LoadUnmanagedDll` may still be followed by this exception. " +3055 area-System.Net System.Uri fails on long non ascii domains "This domain in russian: ``` csharp Console.WriteLine(new Uri(@""http://высококачественные-пиломатериалы.рф"", UriKind.Absolute)); output: http:/// ``` I start truncate domain from end: ``` csharp Console.WriteLine(new Uri(@""http://высококачественные-пиломатериал.рф"", UriKind.Absolute)); // still bad output: http:/// Console.WriteLine(new Uri(@""http://высококачественные-пиломатериа.рф"", UriKind.Absolute)); // remove one more char, ok output: http://высококачественные-пиломатериа.рф/ ``` `Uri.TryCreate` with schema `//` fails with `Index was outside the bounds of the array.`: ``` csharp Uri uri; Uri.TryCreate(@""//высококачественные-пиломатериалы.рф"", UriKind.Absolute, out uri); exception: Index was outside the bounds of the array. ``` " +3056 area-System.Security MD5.Create() fails on Linux/Mac (was: Windows interop getting called on Unix systems) When calling `Internal.NativeCrypto.Cng.Interop.BCryptOpenAlgorithmProvider` (e.g. when using `MD5.Create()`) on Unix systems the Windows Interop seems to be called. On both Ubuntu 14.04 and OSX I get `System.DllNotFoundException: Unable to load DLL 'BCrypt.dll'`. +3061 area-Serialization Clean up unused directives in serialization code +3062 area-System.Security CryptographicException(int hr) should assign Message based on the code Using Interop.mincore.GetMessage (or whatever the correct API is) on Windows, and the OpenSSL ERR_ APIs on Unix. +3063 area-System.Security Calls to X509_STORE_add_crl should check for unexpected errors `0x0B07D065` (X509_R_CERT_ALREADY_IN_HASH_TABLE) is expected, anything else should throw. Blocked on #3062, because currently we can either get the numeric code in the exception, or the string, but not both. +3065 area-Infrastructure Add coreclr<-> corefx repo integration build We should have an outerloop coreclr<->corefx integration build. +3066 area-System.Numerics Some Vector tests overflow their test values on AVX2 Some of the tests for Vector inadvertently overflow some of the array data they generate, because they do some arithmetic on the index of each element. For example: ``` CSharp T[] values2 = new T[Vector.Count]; for (int g = 0; g < Vector.Count; g++) { values2[g] = (T)(dynamic)(g * 5); } Vector vec2 = new Vector(values2); ``` On AVX2, there are 32 bytes in a Vector. 32 \* 5 = 160, which has far overflowed a signed byte. Anything over 25 elements here will overflow, which is breaking the tests, as they are doing GreaterThan/LessThan/etc. comparisons between the three arrays generated. Actually, the (unsigned) Byte versions of these tests will also break once they run on AVX512, since 64-byte vectors will easily overflow an unsigned byte with this calculation, as well. These should be rewritten to be more robust to this sort of issue. Note: this issue doesn't show up on the builds here; we don't run the tests in a configuration that would hit this (AVX2, x64, Release) +3067 area-System.Net Implement ReadAsync on CurlHandler's response stream +3068 area-System.Net Implement ReadAsync on CurlHandler response stream Today, CurlHandler provides a response content stream that doesn't override ReadAsync. As such, any consumers reading data using ReadAsync will actually end up blocking a thread pool thread doing a synchronous Read. This commit fixes that by implementing ReadAsync to be truly asynchronous with no additional threads blocked. If data is already available, a task is returned immediately. Otherwise, the reader asynchronously waits for the writer to publish data and then consumes that data. The overall design of the response stream remains the same as it was. However, there are some notable changes: - A SemaphoreSlim is now used instead of a ManualResetEventSlim for the _writerPublishedDataEvent. This was done because SemaphoreSlim supports both synchronous and asynchronous waiting. - The _readerRequestingDataEvent was removed, as it was no longer necessary. - We no longer allocate an UnmanagedMemoryStream per write operation, instead simply storing the IntPtr buffer and long length on the response stream. - Additional reorganization was done, primarily to share logic between Read and ReadAsync. - A bunch of comments and debug asserts were added. A second commit enables the asynchronous wait to be canceled by either the internal shutdown CancellationToken or by the CancellationToken provided by the caller to ReadAsync. Fixes #3067 cc: @vijaykota, @kapilash, @davidsh, @pgavlin, @CIPop +3069 area-System.Net Delete stale HttpClientHandler.Unix.cs file from repo There are currently two HttpClientHandler.Unix.cs files checked in: - One in System.Net.Http\src\System\Net\Http - One in System.Net.Http\src\System\Net\Http\Unix The former is the original stubbed out version, throws from every property, and isn't referenced by the .csproj, whereas the latter is where all of the recent development related to CurlHandler has happened. This PR simply deletes the former to avoid confusion, and then moves the latter up one level so that it continues to be next to its .Windows.cs counterpart. (The GitHub diff makes it looks like I actually changed .cs file content, which I didn't; I left it as two commits to make it more evident that I simply deleted a file, moved another, and then made a two-line change to the .csproj.) cc: @davidsh, @vijaykota, @kapilash +3071 area-System.Net Fix for #3045. Fixing WebException.Status on Unix This commit fixes #3045. WebExecption class currently looks at the value of underlying HResult to set the value of the Status. We need to set the value of HttpRequestMessage.HResult to appropriate CURLcode in case of errors. WebException maps this to the relevant WebExceptionStatus +3072 area-System.Security System.Security.Cryptography.Csp should support all runtimes "I want to use RSACryptoServiceProvider, but System.Cryptography.Csp seams to be not available when targeting ""dotnet"". I looked around and it doesn't look like it's moved to another assembly. Are there any plans about this? " +3077 area-System.Security WindowsPrincipalTests.WindowsPrincipalIsInRoleNeg test fails locally I get this failure when trying to run the System.Security.Principal.Windows tests locally: ``` Discovering: System.Security.Principal.Windows.Tests Discovered: System.Security.Principal.Windows.Tests Starting: System.Security.Principal.Windows.Tests WindowsPrincipalTests.WindowsPrincipalIsInRoleNeg [FAIL] System.Exception : The trust relationship between this workstation and the primary domain failed Stack Trace: \corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\NTAccount.cs(343,0): at System.Security.Princ ipal.NTAccount.TranslateToSids(IdentityReferenceCollection sourceAccounts, Boolean& someFailed) \corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\NTAccount.cs(204,0): at System.Security.Princ ipal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean& someFailed) \corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\NTAccount.cs(174,0): at System.Security.Princ ipal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) \corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\WindowsPrincipal.cs(69,0): at System.Security .Principal.WindowsPrincipal.IsInRole(String role) \corefx\src\System.Security.Principal.Windows\tests\WindowsPrincipalTests.cs(14,0): at WindowsPrincipalTests.WindowsPrinc ipalIsInRoleNeg() Finished: System.Security.Principal.Windows.Tests ``` cc: @pallavit +3085 area-System.Net Improve SafeWinHttpHandle reference counting logic to prevent leaks "This PR mainly addresses ""handle leaks"" #2963, #2762, #2793. In investigating the leaks, I discovered that our use of the SafeHandle pattern was not quite right. In addition, SafeHandle has some rather quirky lifetime management aspects with respect to the Dispose() and DangerousRelease() methods. After reviewing the source code for SafeHandle itself, I discovered a better pattern to using. Native Windows WinHTTP handles wrapped by SafeHandle need additional lifetime management protection. I also needed to add finalizers to the WinHttpHandler, WinHttpRequestStream and WinHttpResponseStream classes. Finally, I added unit tests to validate our behavior assumptions and to track leaks in the WinHttpHandler logic. This change does not affect the SafeWinHttpHandleWithCallback class that is used by System.Net.WebSocket.Client. But that class is incorrectly using the SafeHandle pattern w.r.t. Dispose() and I will be fixing that in a later PR. " +3089 area-System.Net CurlHandler blocking write callback can lead to deadlock With the current implementation of CurlHandler in HttpClient on Unix, when downloaded data is available, libcurl invokes a callback to provide that data to the application. Until a reader is available to consume all of that data, the callback blocks. I'd previously noted this as a performance problem to be fixed, but it's actually a much worse problem in that it can easily lead to deadlock. Here's a new test to demonstrate: ``` C# [Fact] public async Task GetAsync_ResponseHeadersRead_ReadFromEachIterativelyDoesntDeadlock() { using (var client = new HttpClient()) { const int NumGets = 5; Task[] responseTasks = Enumerable.Range(0, NumGets) .Select(_ => client.GetAsync(HttpTestServers.RemoteGetServer, HttpCompletionOption.ResponseHeadersRead)) .ToArray(); for (int i = responseTasks.Length - 1; i >= 0; i--) { using (HttpResponseMessage response = await responseTasks[i]) { await AssertSuccessfulGetResponse(response, HttpTestServers.RemoteGetServer, _output); } } } } ``` Here we kick off N downloads and then iteratively process each to completion before moving on to process the next. This means that we only try to read from a single download at a time, and if this doesn't happen to be the same download that has data available next, our reader will block waiting for data, which will never come because the libcurl callback is blocked waiting for a reader for a different download. We should fix this by employing libcurl's ability to pause connections. When the write callback is invoked, if there isn't currently a read pending on that download, the write callback should return to libcurl to inform it that the connection needs to be paused. When the reader later comes along, it needs to unpause that connection. Obviously there will be some synchronization required here, but it shouldn't be too bad. cc: @vijaykota, @kapilash +3091 area-System.Net Enabling Testcases for POST/PUT methods +3093 area-System.Linq Add static method to create an IEnumerable with one element I find that I need the following static method quite often: ``` csharp public static class MoreEnumerableMethods { // ... public static IEnumerable Singleton(TResult element) { return Repeat(element, 1); } } ``` This seems like a really good fit for `Enumerable` itself, where it would live alongside `Repeat`, `Empty`, and `Range`. I want to be able to say `Enumerable.Singleton(x)`, not `MoreEnumerableMethods.Singleton(x)`. Even Eric Lippert has [complained](http://ericlippert.com/2013/03/18/monads-part-eight/) about the lack of this method: > I wish there was a static method on Enumerable specifically for making a one-element sequence. I have the code (and tests) ready on [a branch in my fork](https://github.com/dotnet/corefx/compare/master...benjamin-hodgson:singleton#diff-95a14d3b4ae14339b623dd95c7537fd0R1497). I can open a pull request right away, subject to any required API reviews. I'm happy to discuss things like the method name (perhaps `One` or `Singular` would be a better choice?). +3096 area-System.Net Improve WinHttpHandler and SafeWinHttpHandle reference counting logic "This PR mainly addresses ""handle leaks"" #2963, #2762, #2793. In investigating the leaks, I discovered that our use of the SafeHandle pattern was not quite right. Native Windows WinHTTP handles wrapped by SafeHandle need additional lifetime management protection to preserve parent-child relationships. Closing the parent handle too early will invalidate the child handle. So, added a SetParentHandle() method to SafeWinHttpHandle to protect against this. This also simplified the passing of handles to the WinHttpResponseStream class. I added finalizers to the WinHttpHandler and WinHttpResponseStream classes. Note that the WinHttpRequestStream class doesn't need a finalizer because its lifetime is short within the processing of the SendAsync() method. Finally, I added unit tests to validate the behavior assumptions and to track leaks in the WinHttpHandler logic. This change does not affect the SafeWinHttpHandleWithCallback class that is used by System.Net.WebSocket.Client. But that class is incorrectly using the SafeHandle pattern w.r.t. Dispose() and I will be fixing that in a later PR. " +3098 area-System.Reflection Fix System.Reflection.Metadata.nuspec dependency +3103 area-System.Numerics System.Numerics.Vectors NuGet package does not work with F# "The [System.Numerics.Vectors](https://www.nuget.org/packages/System.Numerics.Vectors/) package (v4.1.0) doesn't seem to work correctly with F#: Whenever I try to use it, it installs correctly, but the compiler always refers to the corresponding .NET 4.6 reference assembly (""C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6\System.Numerics.Vectors.dll"", in my case) instead of the downloaded assembly in the packages directory. When installing the NuGet package into a C# project, it found that a `` item was added to the csproj file, redirecting the reference to the proper assembly (e.g. `..\packages\System.Numerics.Vectors.4.1.0\lib\net46\System.Numerics.Vectors.dll`). For F# projects however this `` is _not_ added to the fsproj file. Adding it manually fixes the problem. " +3105 area-System.Net Avoid blocking CurlHandler write callback When receiving the body of an HTTP response, libcurl provides the data received via a callback that's invoked synchronously from the thread pumping libcurl's processing. This callback can't return until it's handed off all of the available data, and thus the current implementation of CurlHandler blocks that thread until a reader has consumed the data. This is both expensive and dangerous. It's expensive because we end up blocking a thread until some reader comes along, and it's dangerous because this can easily lead to deadlock. A libcurl multi handle may be used by only one thread at a time, which means that if the handle is being used by a thread while blocked on the write callback, no other thread can access the multi handle, which means no other callbacks for other concurrent requests can be invoked. If multiple operations were queued, and then the data for them arrived in an order that didn't exactly match the order of readers consuming the data, deadlock would ensue. This change makes it so that we no longer block the callback, taking advantage of a pausing mechanism libcurl provides that allows one to pause a connection until it's needed. I rewrote the CurlResponseStream to manage this. Now when the callback has data to write, it attempts to transfer it to the stream. If there's a reader already waiting for the data (represented by a task stored on the stream), the callback simply transfers its data to the reader. If the callback has too much data than would fit in the reader, the remaining data is buffered on the stream. If instead the callback finds that either there isn't a waiting task or that there's already some remaining data buffered from a previous callback, it instead pauses the connection, such that no more callbacks will be invoked until we unpause. From the reader side, a reader who tries to read data from the stream can pull data from the remaining buffer if there is any, or can register a task with the stream that will be filled with data at some point when callback has data available. As part of debugging some issues with this change, I added a verbose tracing mechanism that's enabled by compiling the library with the CURLHANDLER_VERBOSE constant (the same that we use for enabling libcurl's verbose diagnostic output). I left the tracing in as I found it valuable in diagnosing issues with the library, but we can remove it later if desired. I also added a test that deadlocks before the change and that completes successfully after. cc: @vijaykota, @kapilash Fixes #3089 +3106 area-System.Linq Intersect not optimized for HashSet Hello, I found some old blog about an optimization of Intersect when the underlying collection is a HashSet. I have been caught of this issue in a contest and using the custom implementation made a huge performance difference. Here the blog by Patrick Smacchia with a full description of the issue : http://www.codebetter.com/patricksmacchia/2011/06/16/linq-intersect-2-7x-faster-with-hashset/ Patrice +3107 area-Meta [Feature] General purpose data binding support? "Please forgive me if this is the wrong place to post this; but it certainly seems like a good place :) I think that it would be extremely useful if there were a general-purpose data binding mechanism providing a consistent way to synchronize the properties of objects making it for developers to have consistent support for patterns that benefit from data binding such as the popular MVVM and MVPVM design patterns. Also including the `IValueConverter` interface and related functionality that is included in the `System.Windows.Data` namespace of the fully featured .NET framework but perhaps in a less platform-specific namespace like `System.Data`? Whilst not applicable in the following example; perhaps a general purpose XAML implementation would also be of benefit perhaps allowing a XAML representation of a custom selection of UI controls outside the scope of Windows or Xamarin forms? I see this being of particular use in .NET Core based game engines. # Example Use Case (User Code) For example, if the Unity game engine was using .NET Core with such a feature it would then be quite straightforward to add binding support to the Unity UI controls simply by having them implement `INotifyPropertyChanged`. ## Programmatic Bindings Continuing with the Unity example; some `MonoView`-derived component could be added to the root of each composition of UI controls allowing for manual binding similar to this: ``` // ExampleView.cs public class ExampleView : MonoView { [SerializeField] private InputField _firstNameInputField; ... protected override void OnBind() { Bindings.Add(new Binding(_firstNameInputField, ""text"", ViewModel, ""FirstName"", BindingMode.TwoWay)); } } ``` Where the base classes look like this: ``` // MonoView.cs public abstract class MonoView : MonoBehaviour { public MonoView() { Bindings = new BindingCollection(); } protected BindingCollection Bindings { get; private set; } ... protected virtual void OnBind() { } protected virtual void OnUnbind() { // Properly disposes all bindings (unsubscribes from source/target objects). foreach (var binding in Bindings) { binding.Dispose(); } Bindings.Clear(); } } // MonoView{T}.cs public abstract class MonoView : MonoView where TViewModel : class { ... } ``` ## Designer Specified Bindings In addition to programmatic binding (like above) it would also be fairly straightforward to create a custom ""PropertyBinder"" `MonoBehaviour` component which could be added to UI controls to allow designers to make similar associations using just the Unity ""Inspector"" window. ``` +---------------------------------------------------------------------------+ | Property Bindings Component: | | +-------------------------------------------------[ Remove Binding ]--+ | | | ___________________________________________ | | | | Control Property: | text | \/ | | | | | ------------------------------------------- | | | | ___________________________________________ | | | | Data Context Property: | FirstName | \/ | | | | | ------------------------------------------- | | | +---------------------------------------------------------------------+ | | _________________________ | | | Add Another Binding | | | ------------------------- | +---------------------------------------------------------------------------+ ``` ## Bindings properly disposed when removed/cleared from the `Bindings` collection When the view is unbound from the data context all `Bindings` would be properly disposed allowing the view to be reused and bound to another view model. # Closing Words I'm sure that you folks have probably already got something like this planned; but I wanted to post this feature request just in case it isn't on the roadmap :) " +3113 area-System.Net Porting System.Net.Security Missing issues for TODO comments. Will create the tracking issue and update the code, author (dotnetbot) and reference the tracking issue. @davidsh @bartonjs @pgavlin @stephentoub @SidharthNabar PTAL. +3114 area-System.Net Tracking items for System.Net.Security This issue is tracking TODOs and Shims removal for PR #3113: - [ ] Replace Interop.Secur32 names with OS names from the SDK (sspi.h and schannel.h) - [X] Replace the X509Certificate ctor shim as soon as it is available. - [X] Move _SSPIWrapper.cs OS specific classes to Interop.SSPI - [ ] Remove StreamAsyncHelper references and implement FixedSizeReader and SslState using TPL instead of APM. - [ ] _SslState.cs:1299: Within FinishWrite() the callback is called under `lock (this)`. We need to investigate if there is any chance of a deadlock. - [X] Remove SSLv2 support from SslStream. - [ ] Add new Cypher and Hashing algorithms to enums within the contract. - [ ] Split _SecuritySafeHandles.Windows.cs - [ ] In NativeSSPI: Unit/Functional test required to understand the intent and pin behavior between Desktop and CoreFX. > Decrypt checked qop != SECQOP_WRAP_NO_ENCRYPT. Sign used it. Verify just ignores it? - [ ] Replace all usage of ArrayList, Hashtable with appropriate modern collections. - [ ] Behavior impacting: check client certs for the client EKU within `private bool AcquireClientCredentials(ref byte[] thumbPrint)` - [ ] Replace the implementation of SpnDictionary with `Dictionary<>` or `ConcurrentDictionary<>`. - [X] Provide TPL Stream overrides for SslStream. (By #5541.) - [ ] Investigate ways to bring back the NetworkStream specific optimizations (`BeginMultipleWrite`, etc) - [ ] Move public parameter checks within their respective public methods. (See comments in #5541) - [ ] In `CompleteAuthToken` and `ApplyControlToken`: remove the extra allocation of a `CredHandle`; refactor the code to avoid duplication; remove the `AddRef` if the `refContext` was previously `null`. (See #11489) +3124 area-System.Net Content-Type getting set incorrectly in CurlHandler "This test passes on Windows but fails on Unix: ``` C# [Theory, MemberData(""PostServers"")] public async Task PostAsync_CallMethod_StreamContent(Uri remoteServer) { using (var handler = new HttpClientHandler()) using (var client = new HttpClient(handler)) { byte[] data = new byte[1234]; new Random(42).NextBytes(data); HttpContent content = new StreamContent(new MemoryStream(data)); HttpResponseMessage response = await client.PostAsync(remoteServer, content); Assert.Equal(HttpStatusCode.OK, response.StatusCode); string responseContent = await response.Content.ReadAsStringAsync(); Assert.Contains(Convert.ToBase64String(data), responseContent); } } ``` It looks like the Content-Type header is being set inappropriately. " +3126 area-System.Collections Circular buffer data structure As far as I know, there is no circular buffer implementation in .NET (https://en.wikipedia.org/wiki/Circular_buffer). Some simple implementations over an array or a Queue are discussed here, for instance: https://social.msdn.microsoft.com/forums/vstudio/en-US/416a2175-b05d-43b1-b99a-a01c56550dbe/circular-buffer-in-net +3128 area-Infrastructure Microsoft.CSharp fails to build when running MSBuild on Mono When using build.sh on Linux Microsoft.CSharp runs into some build issues. I am going to disable it for now and follow up with this issue. +3131 area-System.Net Fix for #3124. CurlHandler sets invalid content-type for POST requests libcurl defaults to a Content-Type:application/x-www-form-urlencoded for Post operations. This default behavior is inconsistent with dotnet API. Current PR fixes this issue by overriding the default value. +3133 area-System.Xml Investigate/Remove custom internal test frameworks There are a number of projects with their own internal test frameworks, that need to be investigated, and potentially removed in favor of xunit. To be clear, I'm not talking about projects with helper objects and methods (although some should be re-evaluated now that we're using xunit), I'm thinking of stuff like System.Xml.ReaderWriter.Tests (and its multiple constituent projects): ![image](https://cloud.githubusercontent.com/assets/5569508/9761804/e5ab2cb6-5739-11e5-8e2b-510d780c0e29.png) ...and if you'll notice, xunit isn't reporting the skipped tests, because it doesn't see them. Are those important? I really doubt reporting is turning those up. And hopefully fails percolate.... Some of these frameworks are pretty heavily entrenched in their host projects, and dismantling them would be a large-scale effort. The ones I'm aware of (can recall) at the moment are: - System.Collections - System.Threading.Tasks - System.Xml.ReaderWriter ...although there are undoubtedly more. +3134 area-Infrastructure System.ServiceProcess.ServiceController.Tests needs admin privleges... ...but the tests don't check for permission ahead of time/don't report that as a possible error. +3135 area-System.Diagnostics Support an optional exception handler in TelemetryListener/TelemetrySource "I've been playing around with the new `TelemetryListener`/`TelemetrySource` classes and have found them to be a great fit for a simple eventing pattern. However an unexpected impact on firing `WriteTelemetry` was that if a subscriber fails, no subsequent subscribers will have their `OnNext` method called. From reading the various comments - particularly @vancem's https://github.com/dotnet/corefx/pull/2932#issuecomment-134328582 - on the PR I understand that this stems from how RX approaches exceptions, yet in the case of telemetry and multi-cast events it seems like there will be many cases where one broken subscriber shouldn't bring the system down. Would it be possible to consider an overload to `WriteTelemetry` which looks like this: ``` c# public override void WriteTelemetry(string telemetryName, object arguments, Func exHandler) { for (TelemetrySubscription curSubscription = _subscriptions; curSubscription != null; curSubscription = curSubscription.Next) { try { curSubscription.Observer.OnNext(new KeyValuePair(telemetryName, arguments)); } catch (Exception ex) { if (!exHandler(ex)) { break; } } } } ``` This would then support calls that would allow the sender to pass a function that can evaluate for each exception if the calls should continue: ``` c# source.WriteTelemetry(""Send"", o, ex => !(ex is CatastrophicException) ); ``` Alternatively an approach could be considered that uses `AggregateException` that simply collects all exceptions and throws them collectively at the end. " +3136 area-System.Net TransferEncodingChunked not being set by CurlHandler for streams of unknown length "Exact same test as in #3124, but with a non-seekable stream instead of a seekable one, such that HttpClient can't access the stream's length: ``` C# [Theory, MemberData(""PostServers"")] public async Task PostAsync_CallMethod_UnknownLengthStreamContent(Uri remoteServer) { var handler = new HttpClientHandler(); using (var client = new HttpClient(handler)) { byte[] data = new byte[1234]; new Random(42).NextBytes(data); HttpContent content = new StreamContent(new NonSeekableMemoryStream(data)); HttpResponseMessage response = await client.PostAsync(remoteServer, content); Assert.Equal(HttpStatusCode.OK, response.StatusCode); string responseContent = await response.Content.ReadAsStringAsync(); Assert.Contains(Convert.ToBase64String(data), responseContent); } } private sealed class NonSeekableMemoryStream : MemoryStream { public NonSeekableMemoryStream(byte[] data) : base(data) { } public override bool CanSeek { get { return false; } } } ``` TransferEncodingChunked should be set to true in this case, but CurlHandler isn't doing so, such that the test passes on Windows but fails on Unix. " +3137 area-System.Net CurlHandler synchronously reads from request stream, blocking libcurl processing If the request message has a request content stream to send, libcurl retrieves that data via read callbacks done during its processing. These read callbacks are currently Read'ing from the content stream, which blocks the processing while the read is being completed. If the content stream is a memory stream, this is fine, as such reads will complete immediately. And even for some other stream types, like FileStream, the reads should complete quickly enough that there's no problem. But for streams that take a longer time, this can cause significant delays in CurlHandler's ability to process other pending HttpClient requests. It can also lead to deadlock if the request stream for one request is being fed by the response stream of another request being processed by the same handler. +3138 area-System.Net Avoid blocking CurlHandler read callback PR #3105 addressed the issue we were facing with libcurl and the write callback used when libcurl has response body data available. We were blocking libcurl's callback until a reader was available to consume the data, resulting in both significant scalability issues as well as the potential for easy deadlock. This was fixed by making the whole operation async via libcurl's ability to pause connections. The same issue exists for libcurl's read callback, used by libcurl to read data from the request stream to send as part of the request. The issue here isn't as impactful as on the write side, because a) a common case has no request stream or has a MemoryStream that serves up its data immediately, and b) other streams (e.g. FileStream) typically serve their data quickly even if blocking is involved and don't interact with the HttpClient in a way that could lead to deadlock. However, it's still an issue, and it's still possible to construct cases where deadlock is possible, e.g. if the output stream of one request is used as the input stream of another request associated with the same libcurl multi handle. This commit addresses the read callback case by relying on the same pause mechanism used for the write callback. When libcurl requests data, if the source is a memory stream, we just do the read and hand back the data. Otherwise, we issue a ReadAsync on the stream. If the operation completes immediately, we synchronously hand the data back to libcurl, storing any extra beyond what libcurl asked for. If the operation didn't complete immediately, we store it for later, and pause the connection, requesting an unpause when the read operation completes. Subsequent read requests from libcurl first try to be satisfied from any previous ReadAsync with data remaining. As part of this, I also removed the pause state tracking I'd previously added. In my previous PR as part of adding support for pausing, I added a field to EasyRequest to attempt to mirror the current paused state as known by libcurl. This was done to try to avoid requesting unpausing in cases where we'd like to be unpaused but have already requested it. However, this appears to have been premature optimization, as the case is relatively rare, the overheads relatively low for processing the extra request, and it causes additional headaches once we're able to pause sending/receiving individually. I added several tests for different kinds of streams. This required fixing #3136, which was preventing any data from being sent from non-seekable request streams. Fixes #3136 Fixes #3137 cc: @vijaykota, @kapilash, @davidsh, @pgavlin, @CIPop +3140 area-Meta Turn on CheckForOverflowUnderflow on all projects in Debug Right now, only System.Reflection.Metadata has CheckForOverflowUnderflow on in Debug. I think there's value in doing this across the board. Expressions that are allowed to overflow by design should be explicitly marked `unchecked`. cc @weshaggard @stephentoub +3141 area-System.Linq Expression interpreter - AddOvf does not throw OverflowException In AddInstruction.cs, the following code `(Int16)checked((Int16)l + (Int16)r)` seems to be wrong and should be `checked((Int16)((Int16)l + (Int16)r))` instead. Repro: `Expression.Lambda( Expression.AddChecked( Expression.Constant(Int16.MinValue), Expression.Constant(Int16.MinValue) ) ).Compile().DynamicInvoke()` throws TargetInvocationException with an OverflowException when using the compiler. When using the interpreter, it succeeds. +3144 area-System.Net Remove references to TaskAPMExtensions in System.Net tests Remove Common\tests\System.Net\TaskAPMExtensions.cs and rewrite tests using TPL instead. +3147 area-System.Linq Expression interpreter - NewArrayBounds does not throw OverflowException Consider the following fragment: `Expression.Lambda(Expression.NewArrayBounds(typeof(int), Expression.Constant(0), Expression.Constant(-1))).Compile().DynamicInvoke()` With the expression compiler, this throws OverflowException. With the expression interpreter, the call to Array.CreateInstance results in an ArgumentOutOfRangeException. +3149 area-System.Linq Expression compiler - Inconsistency with language specification Section 7.9 of the C# language specification describes the number of bits to shift. It looks like this rule is not honored by the expression compiler which omits the `and` instruction to perform the mask, prior to performing the `shl` or `shr` instruction. The following repros the discrepancy: Expression<Func<long?, int?, long?>> e = (x, y) => x << y; Func<long?, int?, long?> f = (x, y) => x << y; Func<long?, int?, long?> g = e.Compile(); var c = f(-9223372036854775808, -2147483648); var d = g(-9223372036854775808, -2147483648); Console.WriteLine(c); Console.WriteLine(d); Note that the implementation of the expression interpreter relies on C# compiled code fragments for << and >>, so this will cause a different result for .Compile() between frameworks that use the expression compiler versus those that use the interpreter. +3150 area-Infrastructure Cannot build System.Collections.Concurrent.Tests in Visual Studio 2015 I get the following error: ``` xunit.abstractions 2.0.0 is not compatible with DNXCore,Version=v5.0. ``` Any suggestions or work-around? +3151 area-System.Net CurlHandler supports only ClientCertificateOption.Manual Today CurlHandler supports only clientCertificateOption.Manual. Now with the availability of cross platform X509Store, CurlHandler must support ClientCertificateOption.Automatic as well. +3153 area-System.Net Could CurlHandler support UNIX sockets? There is support in `libcurl` for using UNIX sockets instead of TCP (http://curl.haxx.se/libcurl/c/CURLOPT_UNIX_SOCKET_PATH.html). In a microservice world, this capability is very useful for communication between discrete services on a single server, reducing the overhead of TCP sockets and improving performance. As a precedent, the Kestrel HTTP server now supports UNIX sockets, which Nginx can consume when reverse-proxying (see https://github.com/aspnet/KestrelHttpServer/pull/157). I took a quick look to see if I could implement this, but there doesn't seem to be a point where a socket file path could be added in, so I opted for starting a discussion instead. :open_mouth: +3156 area-System.IO Can we determine if a FileSystem is case sensitive or not through an API? I'm exploring the possibility of making our cross-platform file globbing to determine if it acts as case sensitive or not based on current file system. It can't be determined just by the current operating system since case insensitive file system can still be mounted on Linux/Unix/Darwin. Is there an API can help to determine if a file system at given path is case sensitive. +3163 area-System.Net Replace TRAVE to TRACE_VERBOSE throughout the code. **Workitem:** 1. Ensure that all instances of `TRAVE` are replaced by `TRACE_VERBOSE` throughout the code base. 2. Ensure that no other name is used to enable verbose tracing. (If others exist, they should be replaced by `TRACE_VERBOSE`.) --- **Initial Design Discussion**: In System.Net code we have debug-only verbose tracing guarded by a variable named `TRAVE` (TRAce VErbose). The following have been brought up during PRs for this code: 1. Standardize a single such name across corefx 2. Change the name (seems like a typo) Please add your suggestions and then convert this to a code issue to track changes across the entire repo. +3172 area-Meta Standardize flags declarations in native shims We have a mix of raw integers and casting scoped enums right now. See https://github.com/dotnet/corefx/pull/3142#issuecomment-139330591: A general comment on raw integers vs. enum's on C++ side for flags. I've been doing the latter based on my recollection that storing a value that is not any one of the enum members is unspecified or undefined in standard C++. However, I'm no longer sure after looking at recent edits on cppreference.com: http://en.cppreference.com/mwiki/index.php?title=cpp/language/static_cast&diff=78871&oldid=74481 My understanding was on the LHS of that diff. I don't know yet if the edits reflect errata on the site matching my own misunderstanding or just updates tracking the next version of the standard. Even if it is well defined, it requires a lot of ugly casting, which kind of eliminates the benefit of strong typing. It's not apparent in this change because your flags come in from C# with the right values, but once you have to twiddle the bits, e.g. ConvertOpenFlags, it gets messy. Assuming it is in fact well defined, we could have a macro to define bitwise operators on what we deem Flags enums. This would serve double-duty as documentation to C# caller to add [Flags]. I'm fine leaving this for a later change, but this is something we should standardize one way or the other. +3178 area-System.Net Redirect handling for cookies and creds This fix realigns CurlHandler with WinHttpHandler w.r.t Redirect handling. When redirect is detected, we clear the credentials if the credentials were originally provided as NetworkCredentials Otherwise we use the forwarding URI to get the new set of credentials. Like wise, in case of redirects, we get the cookies again from the cookieContainer In addition, this commit also collects the cookies from the response header +3179 area-System.Runtime Enhance Guid type with implicit type conversions to useful primitive types "Currently, Guid feels a little bit left out. While other built-in types have implicit type convertions, or support from Convert, Guid have it's own ""bastion"" of methods and converters, and is a source of confusion for new developers. Is there any particual reasons (except historical) that Guid should not be part of built-in types and have a implicit convertion (from bytes or string)? " +3180 area-Serialization XmlSerializationWriter not visible "I get the following error: DNXCore,Version=v5.0 error CS0234: The type or namespace name 'XmlSerializationWriter' does not exist in the namespace 'System.Xml.Serialization' (are you missing an assembly reference?) Program.cs: ``` using System; namespace XmlSerializationWriterTest { public class Program { public void Main(string[] args) { System.Xml.Serialization.XmlSerializationWriter writer = (System.Xml.Serialization.XmlSerializationWriter)(new Object()); } } } ``` project.json: ``` { ""dependencies"": { }, ""frameworks"": { ""dnxcore50"": { ""dependencies"": { ""System.Xml.XmlSerializer"": ""4.0.10"" } } } } ``` The code of XmlSerializationWriter is here: https://github.com/dotnet/corefx/blob/41e203011152581a6c65bb81ac44ec037140c1bb/src/System.Xml.XmlSerializer/src/System/Xml/Serialization/XmlSerializationWriter.cs " +3183 area-System.Data Use modern data structures and array APIs for SqlClient SqlClient in its current state has code that has been around since a long time. The usage of data structures like HashTable should be migrated to Dictionary There are some array operations which are being done manually and can be migrated to Array APIs +3184 area-System.Data Update Interop Code in SqlClient to follow guidelines Based on PR https://github.com/dotnet/corefx/pull/2986 address the interop related comments. +3185 area-System.Net Add System.Net.Http.CurlHandler HttpClient is implemented as a sort-of plug-in model, where you provide to it a “handler” that actually does the heavy lifting. There’s a default HttpClientHandler type, which on Windows is implemented around winhttp and on Unix is implemented around libcurl. HttpClientHandler only exposes core knobs that are expected to be common across all possible implementations, but the underlying implementations often provide more functionality. So on Windows, we also have System.Net.Http.WinHttpHandler (a class in its own separate assembly), which is the same handler used by default on Windows under HttpClientHandler, but which as a public type exposes additional knobs for developers to configure, e.g. timeouts on individual portions of a request/response rather than for the all-up operation. There are such knobs we’d like to be able to configure with libcurl, e.g. targeting a UNIX domain socket as a proxy, but for which we’d need to expose CurlHandler publically in order to provide the right additional surface area. +3186 area-System.IO Add System.IO.FileSystem.Unix There are a bunch of common Unix file system constructs that we have no public surface area in .NET to control or interact with. For example, Unix permissions are a very common need for users/devs to interact with, but we don’t provide any surface area for getting (stat) or setting (chmod) these. We don’t provide surface area for changing ownership (chown), for creating symlinks (symlink) or hard links (link), etc. Devs can P/Invoke to these, but it’d be nice to have surface area for it to avoid devs needing to do that, especially given that some of these are impractical to P/Invoke to in any common way across Unix systems, e.g. the struct used by stat changes in both layout and size based on which distro/version you’re targeting, which is one of the many reasons we’ve moved away from direct P/Invokes to libc and instead have a think native shim. As a comparison, Mono has a library called Mono.Posix that provides essentially 1:1 wrappers between directly callable C# functions and the underlying POSIX functions they wrap. +3187 area-System.Security Add System.Security.Principal.Unix We provide the Windows-only System.Security.Principal.Windows.dll on Windows, which brings with it WindowsIdentity and WindowsPrincipal. We don’t currently have corresponding types for UnixIdentity and UnixPrincipal. This would support getting the current user/group, setting the effective user/group (kind of like Windows impersonation), looking up information about the user, etc. +3188 area-System.IO Add System.IO.Signals.Unix Signals are a ubiquitous mechanism across Unix systems for interactions between processes and the kernel. The only API we currently have for sending any signal is Process.Kill(), which sends a SIGKILL signal, but to write robust Unix applications (and services) you likely want to be able to both send signals and handle specific signals. The former can be done by a dev using a P/Invoke, but the latter would really require libcoreclr support to do correctly, especially since the runtime itself already hooks certain signals (e.g. a SIGINT signal sent by ctrl-C, which we then subscribe to the runtime for in Console.CancelEventHandler). +3189 area-Meta Add System.Configuration.Unix There’s a lot of Unix configuration information that apps could benefit from being able to read (e.g. sysconf, pathconf, ulimit, etc.) and potentially modify. Potentially support for parsing/outputting Unix configuration files as well. +3190 area-System.Net RemoteCertificateValidationCallback for HttpWebRequest The current implementation of HttpWebRequest in .Net 4.6 lacks RemoteCertificateValidationCallback similar to that of SslStream class. This makes mutual authentication impossible, especially when client becomes aware of mutual authentication enforced by server only after SSL handshake has been initiated. Currently all certificate callbacks for HttpWebRequest is managed by ServicePointManager class, I request to include this feature in corefx releases. Please see [this question](http://stackoverflow.com/questions/9294433/how-to-detect-client-certificate-authentication-request-in-httpwebrequest) in SO. +3199 area-System.Net Reduce allocations when parsing response headers in WinHttpHandler "There are currently many unnecessary allocations when creating the response message in `WinHttpHandler`. The native `WinHttpQueryHeaders` function is called a few times to retrieve response information, such as the version string, reason phrase, and raw headers. Each call to `WinHttpQueryHeaders` currently results in 3 allocations (9 total for the 3 calls): 1. The `StringBuilder` buffer passed to the native function to be filled in. 2. The `char[]` inside the `StringBuilder`. 3. The `string` allocated when `StringBuilder.ToString()` is called. On platforms that need to do manual decompression (lower than Win 8.1), there's another 2-3 allocations to get the Content-Encoding header value. We can reduce the allocations by 1) modifying the p/invoke signature for `WinHttpQueryHeaders` to take a `char[]` instead of `StringBuilder` and 2) allocate a single `char[]` large enough to be reused across multiple calls to `WinHttpQueryHeaders`. With those changes, 9 allocations are down to 2: an allocation for the raw headers `char[]` and another for the reason phrase `string`. There are many common reason phrases, such as ""OK"" for a 200 status code, or ""Not Found"" for a 404 status code. There's already internal code in `HttpStatusDescription` for looking up a known reason phrase string based on the status code, and we can make use of this existing code to avoid the reason phrase string allocation if the reason phrase `char[]` array segment is equal to a known reason phrase. 9 allocations down to 1, for common reason phrases. When parsing the raw headers, the current code is using `string.Split` to split the raw headers by lines separated by `""\r\n""`. There are a bunch of unnecessary allocations associated with the use of `string.split`: internally `string.Split` allocates two arrays to keep track of the indexes and separator sizes, there's the overall array returned from `Split`, plus each string in the array representing each line. Each line then needs to be split further to get the header name and value for each line. The header value was also being trimmed with `string.Trim`, another potential allocation. Also, the first line of the raw headers is the status line, which is being allocated as a `string` even though this line is currently being skipped. All of these intermediate allocations can be avoided by parsing the `char[]` directly, and only allocating `string`s for the individual header names and values. And we can avoid `string` allocations for known header names and values, similar to the known reason phrase optimization. Notes: - `HttpKnownHeaderNames.TryGetHeaderName` is looking up all known header name constants, which include both request and response headers, while we only really care about response headers. My opinion is that this is OK. I think it's easier to maintain the lookup of known headers if it is just looking up all known headers, instead of trying to segregate which ones are only response headers. - `HttpKnownHeaderNames.TryGetHeaderName` is currently doing an ordinal lookup. Header names are case insensitive, so I'd be open to changing this to do an case insensitive lookup. I kept it ordinal so the string remains the exact same as the response string from WinHTTP. However, it looks like WinHTTP normalizes the casing of headers it knows about (e.g. WinHTTP returns `""Content-Length""` when the actual server response is `""content-length""`), so maybe switching to case insensitive lookup isn't a big deal. - The PR is broken up into multiple commits to make it easier to review. The earlier commits are mostly just adding helpers and tests, and moving some of the internal files to `Common` (e.g. `HttpStatusDescription`). I can squash some of the commits together, if desired. - There are still a bunch of allocations associated with how headers are enumerated and stored internally on each request/response in `HttpClient` that I'm looking into improving in a separate PR. " +3205 area-System.Net Corefx HttpClientHandler CookieContainer property deviates from Desktop During the PR for #3178 , it was discovered that the `HttpClientHandler` of corefx deviates from desktop .Net version w.r.t the setter for `CookieContainer` property. Setting a `null` value results in an exception in the desktop version. In case of corefx, it results in an error during `SendAsync`. +3206 area-Infrastructure How to run Unit tests on Windows run on 32-bit CoreCLR? Is it possible to run corefx tests on 32 bit CoreCLR? After building corefx, I opened a corefx solution and changed `platform target``to``x86`` but it doesn't work. +3207 area-System.Security PFX certificates are not well-ordered across implementations Similar to issues #2743 and #2745, the fix would be to not use the `PKCS12_parse` and `PKCS12_create` helper functions, but to get into the nitty-gritty with PKCS12 primitives. This manifests as both writing order and reading order, to be consistent across Windows, Linux, and OSX. +3213 area-System.Net IPAddressParsing.ParseIPv6_ScopeId_Success failing on OS X ``` Assert.Equal() Failure ↓ (pos 7) Expected: fe08::1%13542 Actual: fe08::1 ↑ (pos 7) +++++++++++++++++++ STACK TRACE: at System.Net.Primitives.Functional.Tests.IPAddressParsing.ParseIPv6_ScopeId_Success() ``` +3215 area-System.IO Two FileSystemWatcher tests failing on OS X ``` 09:22:39 CreatedTests.FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFile [FAIL] 09:22:39 Didn't observe a symlink created event within 30000ms 09:22:39 Expected: True 09:22:39 Actual: False 09:22:39 Stack Trace: 09:22:39 at Utility.ExpectEvent(WaitHandle eventOccured, String eventName, Int32 timeout) 09:22:39 at CreatedTests.FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFile() 09:22:44 MoveFileTests.Unix_File_Move_In_Nested_Directory_Triggers_Event(eventType: Changed, moveRaisesEvent: False) [FAIL] 09:22:44 Should not observe a Changed event within 500ms 09:22:44 Expected: False 09:22:44 Actual: True 09:22:44 Stack Trace: 09:22:44 at Utility.ExpectNoEvent(WaitHandle eventOccured, String eventName, Int32 timeout) 09:22:44 at MoveFileTests.<>c__DisplayClass1.b__0(AutoResetEvent eventOccured, TemporaryTestDirectory ttd) 09:22:44 at Utility.TestNestedDirectoriesHelper(WatcherChangeTypes change, Action`2 action, NotifyFilters changeFilers) 09:22:44 at MoveFileTests.MoveAndCheck_NestedDirectory(WatcherChangeTypes eventType, Boolean moveRaisesEvent) 09:22:44 at MoveFileTests.Unix_File_Move_In_Nested_Directory_Triggers_Event(WatcherChangeTypes eventType, Boolean moveRaisesEvent) ``` cc: @sokket +3218 area-System.Net NameResolutionPalTests.GetHostByName_HostName test failing on OS X in CI The failure didn't repro for me locally, but it's happening consistently in the CI build: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/25/console ``` System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName [FAIL] 22:46:36 System.ArgumentOutOfRangeException : Specified argument was out of the range of valid values. 22:46:36 Parameter name: newAddress 22:46:36 Stack Trace: 22:46:36 at System.Net.IPAddress..ctor(Int64 newAddress) 22:46:36 at System.Net.NameResolutionPal.CreateHostEntry(hostent* hostent) 22:46:36 at System.Net.NameResolutionPal.GetHostByName(String hostName) 22:46:36 at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName() ``` +3219 area-System.Net Disable GetHostByName_HostName test failing on OSX #3218 +3224 area-System.Linq Expression compiler - Y combinator issue "The following fails to compile correctly: Expression f = Expression.Lambda(Expression.Empty(), Expression.Parameter(typeof(X))); var a = Expression.Lambda(Expression.Invoke(f, f)); var m = typ.DefineMethod(""A"", MethodAttributes.Public | MethodAttributes.Static); a.CompileToMethod(m); where X is defined as: public delegate void X(X a); The object identity of 'f' used in the invocation expression seems the culprit due to some caching in the lambda compiler. " +3225 area-System.Security Investigate if Unix X509Chain.Build has the same truth table as Windows On Unix it seems to be returning false for any validation errors, and on Windows it might be more nuanced. +3226 area-System.Security Investigate if Unix and Windows X509Chains treat root certs in ExtraStore the same "Right now I think Unix says ""you told me about it, clearly it's trusted"" and Windows says ""it wasn't in one of the trust stores, it isn't trusted"". So the Unix version needs to be less trusting. But this behavior is currently unconfirmed. " +3232 area-System.Security Unix OpenSsl-based CryptographicExceptions should set both Message and HResult Currently only Message is set, making it hard to reason about the error (in cases where it makes sense to do so). This is the Unix half of #3062. +3233 area-System.Security Windows CNG/CAPI-based CryptographicExceptions should set both Message and HResult "In CoreFx the library that CryptographicException is in is platform agnostic, so it doesn't load a code for the int-only constructor. In debug builds the message should be of the form (`""(0x{0:X8}) {1}"", hr, Interop.mincore.GetMessage(hr))`; later that might change to all builds if we really like it. This is the Windows half of #3062. " +3239 area-System.IO Fixed OSX file creation time format FileInfo.CreationTime on OSX was returning a correctly timed but incorrectly formatted DateTime. This commit fixes this issue and adds coverage to a existing test to fill the test gap that let the issue through. +3243 area-System.Globalization Some tests failing due to changes in Globalization data We need to pay down some test debt here. There are a lot of places where we hard code expected values for tests which can change depending on the underlying OS which provides the data. We should figure out the right way to detect what OS we are on so we can provide the correct expected data. +3244 area-System.Linq Consider having expression interpreter available in all build flavors For some of our Bing service, we often run into the case where expression compilation is too expense, either because it's on a request/response path, or because it's statically known that the expression is small and will be evaluated only once. I can provide more details on such scenarios if needed. Unfortunately, expression interpretation is a property of the .NET build flavor, e.g. for .NET Native the Compile method uses the interpreter. It'd be nice to have an Interpret method alongside Compile to enable those scenarios. It'd also help a lot in writing parity tests for the expression compiler and interpreter because their outcomes can be cross-checked. +3245 area-System.Linq Add N-ary internal specializations for InvocationExpression "In Bing, we use an expression normal form whereby method call expressions etc. get erased for invocation expressions of an unbound parameter, e.g.: Expression.Call(where, xs, filter) becomes Expression.Invoke(Expression.Parameter(typeof(...), ""where""), xs, filter) This is done to decouple client libraries and service libraries through erasure of MemberInfo objects. The service uses a binder to bind the unbound parameter expression to a service-side definition and beta-reduces the invocation of the (lambda-based) definition. A lot of those invocation expressions have 0, 1, 2, 3 arguments. However, unlike MethodCallExpression, InvocationExpression has no N-ary specializations that help to reduce memory. The proposal is to add such specializations to conserve memory. " +3248 area-System.Net Setting HttpWebRequest.AutomaticDecompression When I look at the source of HttpWebRequest I see that the AutomaticDecompression property of the HttpClientHandler is forced to `DecompressionMethods.None` ([line 373](https://github.com/dotnet/corefx/blob/07f8c0fe64ac44bedced873181d6832bc2afcc50/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs)). How do I set it properly? In the past we could simply do this: `request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;` +3249 area-System.Runtime Add a monotonic clock to the framework "**Problem:** Many BCL components use `DateTime.UtcNow` to compute timeouts and time deltas. When you run a ""Find Usages"" on `DateTime.UtcNow` in .NET Framework assemblies a lot of usage sites come to light. For example, in ADO.NET, transactions, caches, WebRequest, remoting, WCF, SignalR, security. **All of these usages are bugs** because the current system time can change significantly forwards and backwards at any time. This means that in case the system clock is changed many .NET components will spuriously fail. Common symptoms would be timeouts firing to early or too late (possibly never). Perf counters also might show too high or negative values. Sample scenario: 1. The system clock spuriously jumps forward due to misconfiguration by years. 2. A cache item is added. 3. The clock is fixed. Then, the cache item will essentially stay around forever if eviction is based on `DateTime.UtcNow`. I believe this bug exists in the BCL. User code also has the same problems. **Solution:** Add some kind of monotonic clock to the BCL. The main property of such a clock would be that its time advances linearly. It should never jump when the system clock changes. It should not exhibit split second jumps. It should behave reasonably in case the system sleeps or hibernates or in case the VM is paused. This monotonic clock class should be fast and convenient to use so that it is a no-brainer to switch all `DateTime.UtcNow` usages over to the new model. Maybe we can add `Environment.TickCount64` as well. `Environment.TickCount64` alone would not be good enough because it is awkward to use. I'm not sure if `Stopwatch` would cover all these requirements. It is a reference type which might be too heavy for hot code path in the BCL. Maybe we can add a new value type that is made exactly for this purpose. A sketch: ``` struct MonotonicTime { long Ticks; MonotonicTime operator + (MonotonicTime, TimeSpan); TimeSpan operator - (MonotonicTime, MonotonicTime); bool IsNegative; static MonotonicTime Current; ... } ``` To summarize, I request: 1. The framework timeouts should be fixed. (The TPL bugs apparently are already fixed. I reported these a while ago.) 2. Add `Environment.TickCount64`. 3. Provide a convenient, high-performance monotonic clock. " +3253 area-System.IO Support for tar archives Right now corefx supports zip files as well as gz files. Would it be hard to get it to support tar files as well for compatibility with the other OS's who package files as tgz very often? A C# implementation already exists at https://code.google.com/p/tar-cs/ and could be used either as a guideline or directly imported. If this is something that is desired I could work on designing an API, but it shouldn't be hard to visualize how it might look like. +3256 area-System.Net WinHttpWebSocketState is leaking a GCHandle System.Net.WebSockets.Client.WinHttpWebSocketState allocates a GCHandle in the constructor with this code: ``` c# private GCHandle _operationHandle = new GCHandle(); public WinHttpWebSocketState() { _operationHandle = GCHandle.Alloc(this); } ``` But if never calls Free() on the GCHandle. Normally, you need code like this to free the handle: ``` c# if (_operationHandle.IsAllocated) { _operationHandle.Free(); } ``` +3260 area-System.Console System.Console.Is[Input|Output]Redirected is not available in CoreFX IsInputRedirected and IsOutputRedirected properties are not available in System.Console +3262 area-System.Numerics Vector tests failing on one of my machines "On my local machine I doing a default build.cmd which builds x64 debug I keep getting the below failures. If it helps these pass on my other machine and the machine they fail on has the following processor: ""Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz, 3601 Mhz, 4 Core(s), 8 Logical Processor(s)"" cc @mellinoe @CarolEidt System.Numerics.Tests.Vector3Tests.Vector3CopyToTest [FAIL](TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\Vector3Tests.cs(28,0): at System.Numerics.Tests.Vector3Tests.<>c__DisplayClass1_0.b__1() (TaskId:163) System.Numerics.Tests.Vector4Tests.Vector4CopyToTest [FAIL](TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\Vector4Tests.cs(28,0): at System.Numerics.Tests.Vector4Tests.<>c__DisplayClass1_0.b__1() (TaskId:163) System.Numerics.Tests.Vector2Tests.Vector2CopyToTest [FAIL](TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\Vector2Tests.cs(28,0): at System.Numerics.Tests.Vector2Tests.<>c__DisplayClass1_0.b__1() (TaskId:163) System.Numerics.Tests.GenericVectorTests.GreaterThanOrEqualAnySByte [FAIL](TaskId:163) Assert.False() Failure (TaskId:163) Expected: False (TaskId:163) Actual: True (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(1248,0): at System.Numerics.Tests.GenericVectorTests.TestVectorGreaterThanOrEqualAny[T]() (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(1204,0): at System.Numerics.Tests.GenericVectorTests.GreaterThanOrEqualAnySByte() (TaskId:163) System.Numerics.Tests.GenericVectorTests.GreaterThanOrEqualAllSByte [FAIL](TaskId:163) Assert.True() Failure (TaskId:163) Expected: True (TaskId:163) Actual: False (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(1300,0): at System.Numerics.Tests.GenericVectorTests.TestVectorGreaterThanOrEqualAll[T]() (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(1259,0): at System.Numerics.Tests.GenericVectorTests.GreaterThanOrEqualAllSByte() (TaskId:163) System.Numerics.Tests.GenericVectorTests.CopyToByte [FAIL](TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(311,0): at System.Numerics.Tests.GenericVectorTests.<>c__DisplayClass100_0`1.b__1() (TaskId:163) System.Numerics.Tests.GenericVectorTests.CopyToSByte [FAIL] (TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(311,0): at System.Numerics.Tests.GenericVectorTests.<>c__DisplayClass100_0`1.b__1() (TaskId:163) System.Numerics.Tests.GenericVectorTests.CopyToUInt16 [FAIL](TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. (TaskId:163) Stack Trace: (TaskId:163) D:\git\corefx\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(311,0): at System.Numerics.Tests.GenericVectorTests.<>c__DisplayClass100_0`1.b__1() (TaskId:163) System.Numerics.Tests.GenericVectorTests.CopyToInt16 [FAIL](TaskId:163) Assert.Throws() Failure (TaskId:163) Expected: typeof(System.ArgumentOutOfRangeException) (TaskId:163) " +3266 area-System.Linq Use optimized N-ary MethodCallExpression nodes from all Call factories "Unlike Expression.Block, the overloads of Expression.Call that take in an Expression[] or IEnumerable do not attempt to check the number of supplied arguments in order to instantiate more compact expression representations than the standard [Instance]MethodCallExpressionN nodes. The language binds to the Expression[] overload. Various tools on our end, such as expression deserializers, also dispatch through the IEnumerable overload. It'd be good for those factories to analyze the number of supplied arguments and use compact representations if available. Also, [Instance]MethodCallExpression0 nodes are missing, even though it's quite common to have such expressions (e.g. ToString). Those could be added as part of this. Note that - in addition to this - it may be possible for the language compilers to check for the N-ary factory method overloads and bind to more specialized overloads when it finds them in the corefx libraries it's compiling against (much like other places where the compiler uses ""feature detection""). This would avoid the Expression[] allocation when it's not needed, therefore reducing some allocation costs. " +3268 area-System.Net CurlHandler : Ensure SendAsync cannot be called twice for the same request Originally discovered during the PR, ensure that CurlHandler's SendAsync cannot be called on the same HttpRequestMessage more than once. HttpClient's `SendAsync` already ensures that. We may need similar guarantee in `CurlHandler` as well. +3269 area-System.Net CurlHandler statusCode parsing - Error cases CurlHandler does StatusCode parsing in the http response message. Verify that CurlHandler behavior is identical to WinHttpHandler in case of negative scenarios. CurlHandler throws parse exception if status code in the Http response is not a valid status code. +3275 area-System.Collections Add a way to start enumeration of SortedSet and SortedDictionary in the middle I'd like an efficient way to start enumeration of a sorted collection (in particular `SortedSet` and `SortedDictionary`) at a specified value. This should work even if the value is not part of the collection. **Why is it useful?** Such a feature would be useful for many things. For example: - Finding all elements in an interval. - Finding the closest element to an item in the set - With a properly chosen comparer prefixes sort immediately before their extensions. So this could be used to find the longest prefix that's in the collection. - Could be used to map from a continuous variable (e.g. time) to a value. For example if a system can either be `on` or `off` at a particular time, one could put the switching evens in a `SortedDictionary` and then query it to figure out if the system was `on` at a particular time. - You could save the current element, mutate the collection (invalidating existing enumerators) and then create a new iterator starting at that element. **Different approaches** One way to implement this feature is having a pair of functions that return an enumerable starting at a particular point in the collection. I'm not sure what the name should be, possible choices include `UpwardsFrom`/`DownwardsFrom`, `From`/`ReverseFrom`, `ForwardsFrom`/`BackwardsFrom`. An alternative approach would be extending `SortedSet.Enumerator` adding a public constructor that takes a start element and a flag for backward iteration, but I don't like that overly low level approach. **A concrete API suggestion** on `SortedSet` ``` public IEnumerable UpwardsFrom(T start); public IEnumerable DownwardsFrom(T start); ``` on `SortedDictionary` ``` public IEnumerable> UpwardsFrom(TKey start); public IEnumerable> DownwardsFrom(TKey start); ``` and optionally on `SortedDictionary.KeyCollection` ``` public IEnumerable UpwardsFrom(TKey start); public IEnumerable DownwardsFrom(TKey start); ``` **Test cases** ``` var sortedSet = new SortedSet{1, 3, 5}; sortedSet.UpwardsFrom(2) // [3, 5] sortedSet.UpwardsFrom(3) // [3, 5] sortedSet.UpwardsFrom(6) // [] sortedSet.DownwardsFrom(4) // [3, 1] sortedSet.DownwardsFrom(3) // [3, 1] sortedSet.DownwardsFrom(0) // [] ``` **Demo implementation** Their behaviour would match the following extension methods, but would avoid the linear scan for the first match: ``` public static IEnumerable UpwardsFrom(this SortedSet sortedSet, T start) { var comparer = sortedSet.Comparer; return sortedSet.SkipWhile(item => comparer.Compare(item, start) < 0); } public static IEnumerable DownwardsFrom(this SortedSet sortedSet, T start) { var comparer = sortedSet.Comparer; return sortedSet.Reverse().SkipWhile(item => comparer.Compare(item, start) > 0); } ``` +3278 area-System.IO Fixed test bug with FileInfo_GetSetTimes resolves #3272 +3281 area-System.Diagnostics ProcessTests.TestWorkingSet64 failed on OS X in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/31/console ``` 21:51:43 System.Diagnostics.ProcessTests.ProcessTests.TestWorkingSet64 [FAIL] 21:51:43 Assert+WrapperXunitException : File path: d:\j\workspace\dotnet_corefx_windows_debug\src\System.Diagnostics.Process\tests\ProcessTests.cs. Line: 339 21:51:43 ---- Assert.True() Failure 21:51:43 Expected: True 21:51:43 Actual: False 21:51:43 Stack Trace: 21:51:43 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 21:51:43 at Assert.True(Boolean condition, String userMessage, String path, Int32 line) 21:51:43 at System.Diagnostics.ProcessTests.ProcessTests.TestWorkingSet64() 21:51:43 ----- Inner Stack Trace ----- 21:51:43 at Assert.True(Boolean condition, String userMessage, String path, Int32 line) ``` +3282 area-System.Security CtorTests.InvalidCertificateBlob failed on OS X in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/31/console ``` 21:55:11 System.Security.Cryptography.X509Certificates.Tests.CtorTests.InvalidCertificateBlob [FAIL] 21:55:11 Assert.Equal() Failure 21:55:11 Expected: 218595386 21:55:11 Actual: -2146233088 21:55:11 Stack Trace: 21:55:11 at System.Security.Cryptography.X509Certificates.Tests.CtorTests.InvalidCertificateBlob() ``` +3290 area-System.Xml XmlWriterTestModule.TCCloseOutput failing in outer loop http://dotnet-ci.cloudapp.net/job/dotnet_corefx_outerloop_windows_release/703/console http://dotnet-ci.cloudapp.net/job/dotnet_corefx_outerloop_windows_debug/705/console ``` TestCase:XmlWriterSettings: CloseOutput - File Not Found: writer.out Check that underlying stream is NOT CLOSED when CloseOutput = FALSE and Create(TextWriter) unexpected exception happend:Object reference not set to an instance of an object. at XmlCoreTest.Common.FilePathUtil.getStream(String filename) in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\Common\tests\SystemXml\XmlCoreTest\FilePathUtil.cs:line 173 at XmlWriterAPI.Test.TCCloseOutput.CloseOutput_1() in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\System.Xml.ReaderWriter\tests\Writers\XmlWriterApi\XmlFactoryWriterTests.cs:line 2258 at OLEDB.Test.ModuleCore.CVariation.Execute() in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\Common\tests\SystemXml\ModuleCore\cvariation.cs:line 74 at OLEDB.Test.ModuleCore.CTestCase.Execute() in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\Common\tests\SystemXml\ModuleCore\ctestcase.cs:line 69 FAILED File Not Found: writer.out Check that underlying stream is NOT CLOSED when CloseOutput = FALSE and Create(Stream) unexpected exception happend:Object reference not set to an instance of an object. at XmlCoreTest.Common.FilePathUtil.getStream(String filename) in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\Common\tests\SystemXml\XmlCoreTest\FilePathUtil.cs:line 173 at XmlWriterAPI.Test.TCCloseOutput.CloseOutput_1() in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\System.Xml.ReaderWriter\tests\Writers\XmlWriterApi\XmlFactoryWriterTests.cs:line 2258 at OLEDB.Test.ModuleCore.CVariation.Execute() in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\Common\tests\SystemXml\ModuleCore\cvariation.cs:line 74 at OLEDB.Test.ModuleCore.CTestCase.Execute() in d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\Common\tests\SystemXml\ModuleCore\ctestcase.cs:line 69 FAILED ``` +3292 area-System.Net POST'ing empty content throws an error in System.Net.Http If I make a web request and get an HTTP 204 in return, `WinHttpRequestStream` throws an `IOException` with a success message as the inner exception. It looks like a bug in `WinHttpRequestStream.WriteData`. `Interop.WinHttp.WinHttpWriteData` returns false if the response is a 204 (I guess because there is no content). `Marshal.GetLastError` returns `0` though indicating that there was no error. Should it check if `GetLastError() == 0` rather than checking the result of `Interop.WinHttp.WinHttpWriteData`? I don't know if this is an issue with WinHttp or System.Net.Http, but I don't get this behavior on the version of the dll in Nuget. +3293 area-System.Collections System.Collections.Immutable assembly considered Security Critical I'm writing a program where some untrusted code is running in a separate app domain. I want this untrusted code to use various Immutables, but I get the following error: `Attempt by security transparent method 'MyMethod' to access security critical method 'System.Collections.Immutable.ImmutableList.CreateBuilder()' failed.` `Assembly 'MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=**** is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself. In order to access security critical code, this assembly must be fully trusted.` Why is the Immutable assembly considered security critical? I would imaging this is an oversight and it should be Security Transparent. +3294 area-System.Console Enabling System.Console.WindowWidth and System.Console.CursorVisible properties in CoreFx We are building a cross-platform command line tool which has support for displaying tables (using ascii chars) and showing progress. To render the table correctly we use WindowWidth and want to hide the cursor when we show progress. +3297 area-System.Linq Improve optimization strategy for BlockExpression The check for optimization to N-ary specialized nodes in the Block factories only happens for the Expression[] overload. With the addition of IReadOnlyList<T> to the framework, we can also optimize the IEnumerable<Expression> overloads, similar to the changes proposed in #3288. +3301 area-Serialization Reconcile XmlSerializerImplementation in XmlSerializer with desktop In NetCore: public abstract class XmlSerializerImplementation { public virtual XmlSerializationReader Reader { get { throw new NotSupportedException(); } } public virtual XmlSerializationWriter Writer { get { throw new NotSupportedException(); } } public virtual IDictionary ReadMethods { get { throw new NotSupportedException(); } } public virtual IDictionary WriteMethods { get { throw new NotSupportedException(); } } public virtual IDictionary TypedSerializers { get { throw new NotSupportedException(); } } public virtual bool CanSerialize(Type type) { throw new NotSupportedException(); } public virtual XmlSerializer GetSerializer(Type type) { throw new NotSupportedException(); } } Desktop: public abstract class XmlSerializerImplementation { public virtual XmlSerializationReader Reader { get { throw new NotSupportedException(); } } public virtual XmlSerializationWriter Writer { get { throw new NotSupportedException(); } } public virtual Hashtable ReadMethods { get { throw new NotSupportedException(); } } public virtual Hashtable WriteMethods { get { throw new NotSupportedException(); } } public virtual Hashtable TypedSerializers { get { throw new NotSupportedException(); } } public virtual bool CanSerialize(Type type) { throw new NotSupportedException(); } public virtual XmlSerializer GetSerializer(Type type) { throw new NotSupportedException(); } } +3302 area-Serialization Perf tests that deserialize large object graphs +3307 area-System.Net Allow UseDefaultCredentials property for HttpClientHandler on unix +3311 area-Infrastructure Need a standard convention to refer to bugs from corresponding regression tests. Roslyn uses WorkItemAttribute as a standardized way for regression tests to refer to bugs. It has been found very useful in the past, since bug descriptions and discussions can contain a lot of relevant information, that would be hard to make a part of a test. Being an attribute makes it easy to find in an automated way if so needed (bugs migrated to alternative store or something) Turns out Linq.Expression does not have any convention for regression tests. I suggested commented out attribute as a temporary measure to not lose the information about corresponding bug, but there seem to be a need for a better, more standard convention for this. +3312 area-System.Net WinHttpHandlerTest.SendAsync_SlowPostRequestWithTimedCancellation_ExpectTaskCanceledException failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release/1240/console http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release/1245/console ``` System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest.SendAsync_SlowPostRequestWithTimedCancellation_ExpectTaskCanceledException [FAIL] Assert.Equal() Failure Expected: 0 Actual: 3 Stack Trace: d:\j\workspace\dotnet_corefx_windows_release\src\System.Net.Http.WinHttpHandler\tests\UnitTests\WinHttpHandlerTest.cs(37,0): at System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest.Dispose() at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) ``` +3315 area-Serialization Fix performance issue when deserializing base64 content with linebreaks Porting Desktop fix to NetCore for performance issue when deserializing base64 content with linebreak characters. This changes improves the throughput to 50x for 1KB input and more than 130x for 10KB to 1MB inputs. Fix #3316 +3316 area-Serialization Fix performance issue when deserializing base64 content with linebreaks chars in DCS +3317 area-System.Reflection Merge master to dev/metadata Conflicts: src/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.cs src/System.Reflection.Metadata/src/project.lock.json +3318 area-System.Runtime Proposal: Base64/128 Variable Length Quantity (VLQ) in System.Convert "### Concept: `System.Convert` currently resides in CoreCLR repo: [https://github.com/dotnet/coreclr/../System/Convert.cs](https://github.com/dotnet/coreclr/blob/f665f226/src/mscorlib/src/System/Convert.cs). The class has number of methods `ToBase64*` and `FromBase64*` with various signatures. The base64 encoding has 8-bit fixed length. The are many applications of variable length base64 encoding; Variable Length Quantity (VLQ). IMO, one of the most popular application of B64 VLQ is in [V3 source maps](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#!); which is used by browsers, editors, trans-compilers etc. to obtain source-to-source mappings in trans-compilation scenarios. For instance; CoffeeScript, Less, Sass, Stylus, SweetJS and TypeScript are languages, that compile into CSS or JavaScript. Today, the developer tools in all major browsers are capable of mapping generated source to original by the virtue of source-maps. Additionally, Base128 VLQ has applications in media formats, such as MIDI, XMF etc. [[1](https://en.wikipedia.org/wiki/Variable-length_quantity)] ### Proposed API: ``` c# namespace System { public static class Convert { [...] public static byte[] FromBaseNVLQString( EncodingRadix radix; string s, BaseNVLQSetting setting); public static byte[] FromBaseNVLQCharArray( EncodingRadix radix; char[] inArray, Int32 offset, Int32 length, BaseNVLQSetting setting); public static string ToBaseNVLQString( EncodingRadix radix; byte[] inArray, BaseNVLQSetting setting); public static string ToBaseNVLQString( EncodingRadix radix; byte[] inArray, int offset, int length, BaseNVLQSetting setting); public static unsafe string ToBaseNVLQString( EncodingRadix radix; byte[] inArray, int offset, int length, BaseNVLQSetting setting); public static int ToBaseNVLQCharArray( EncodingRadix radix; byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, BaseNVLQSetting setting); public static unsafe int ToBaseNVLQCharArray( EncodingRadix radix; byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, BaseNVLQSetting setting); public static unsafe int ToBaseNVLQCharArray( EncodingRadix radix; byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, BaseNVLQSetting setting); } public enum EncodingRadix { Base64 = 64; Baase128 = 128; } public struct BaseNVLQSetting { private int _base, _baseShift, _baseMask. _continuationBit; private char[] separators; public BaseNVLQSetting( int base, int baseShift, int baseMask, int continuationBit, char[] separators); public enum Template { V3SourceMap, MIDI, XMF } public static BaseNVLQSetting FromTemplate(BaseNVLQSetting.Template template) { switch(template) { case Template.V3SourceMap: return new BaseNVLQSetting(1 << 5, 5, 4, 1 << 5, new char[] {',', ';'}); break; [...] default: throw new Exception(""Unknown template.""); } } } } ``` ### Working Example: We implemented sourcemap encoding and decoding in WE2013: [https://github.com/madskristensen/WebEssentials2013/../Base64VLQ.cs](https://github.com/madskristensen/WebEssentials2013/blob/96d37799/EditorExtensions/Shared/Helpers/Base64VLQ.cs), inspired by Mozilla's JavaScript implementation: https://github.com/mozilla/source-map. " +3319 area-System.Net CurlHandler asserting in WCF tests ``` ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- If disposed, the stream must also be completed. ---- Assert Long Message ---- at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition, String message) at System.Net.Http.CurlHandler.CurlResponseStream.VerifyInvariants() at System.Net.Http.CurlHandler.CurlResponseStream.SignalComplete(Exception error) at System.Net.Http.CurlHandler.EasyRequest.Cleanup() at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(EasyRequest completedOperation, Int32 messageResult) at System.Net.Http.CurlHandler.MultiAgent.WorkerLoop() at System.Net.Http.CurlHandler.MultiAgent.<>c.b__13_0(Object s) at System.Threading.Tasks.Task.Execute() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) ``` +3320 area-System.Net "CurlHandler throwing ""HTTP stack not implemented"" exception from SupportsRedirectConfiguration" https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs#L25 +3321 area-System.Net "CurlHandler throwing ""HTTP stack not implemented"" from MaxRequestContentBufferSize" https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs#L129-L133 +3322 area-System.Net CurlHandler throwing NotImplementedException for non-http/https schemes https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs#L276-L279 Even if we're supposed to throw here, it shouldn't be NotImplemented.ByDesignWithMessage, more likely PlatformNotSupportedException. That said, this might be dead code: it looks like checks for the sheme happen before we even get to this point: ``` Unhandled Exception: System.ArgumentException: Only 'http' and 'https' schemes are allowed. Parameter name: requestUri at System.Net.Http.HttpRequestMessage.InitializeValues(HttpMethod method, Uri requestUri) at System.Net.Http.HttpRequestMessage..ctor(HttpMethod method, Uri requestUri) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetContentAsync[T](Uri requestUri, HttpCompletionOption completionOption, T defaultValue, Func`2 readAs) at System.Net.Http.HttpClient.GetStringAsync(Uri requestUri) at System.Net.Http.HttpClient.GetStringAsync(String requestUri) ``` So potentially this might just need to be changed to an assert. +3323 area-System.Net Disable SafeHandle leak checking in WinHttpHandler Unit Tests Addresses issue #3312 I've discovered that the FakeSafeWinHttpHandle leak detection isn't stable. SafeHandles finalize via the CriticalFinalizer thread. This thread doesn't seem to run deterministically, so using code like this to wait for SafeHandles to be finalized (and then testing for leaks) doesn't work reliably. ``` c# public static void ForceGarbageCollection() { // Make several passes through the FReachable list. for (int i = 0; i < 10; i++) { GC.Collect(); GC.WaitForPendingFinalizers(); } } ``` For now, logging will be used to verify no leaks. +3324 area-Meta Hardware Details API - Hardware Fingerprint It would be great to add an api that we could use to get hardware specific information. Some of these may include 1. Mac Addresses 2. Processor Information 3. Graphic card Information 4. Base Board Information 5. Unique fingerprint based on hardware I think many applications out there implement features depending on what hardware is available. Furthermore like us, licensing applications in certain scenarios is a must, and I am sure that many applications out there currently, make use of hardware information to create a unique fingerprint which is calculated from hardware information. +3326 area-System.Net Remove delegate allocation from WinHttpHandler.SendAsync Each SendAsync call was allocating a new delegate for StartRequest. cc: @davidsh, @CIPop +3327 area-System.Net Implement HttpClientHandler.MaxRequestContentBufferSize on Unix Changed to match behavior on Windows (get returns 0, set throws PlatformNotSupportedException). Fixes #3321 cc: @kapilash, @davidsh, @CIPop +3328 area-System.Net Implement CurlHandler.SupportsRedirectConfiguration It does. Return true. Fixes #3320 cc: @kapilash +3329 area-System.Net Client Certificate Options for Client Handler When HttpClientHandler.ClientCertificateOption is set to ClientCertificateOptions.Automatic, curl handler passes on the X509 certificates from X509 store to libcurl Fixes #3151. +3333 area-System.Net Remove faulty assert from CurlHandler.CurlResponseStream CurlResponseStream.VerifyInvariants has an assert that assumes that if the stream has been disposed, it must have also completed. But since this stream is exposed publically, it's possible for consuming code to Dispose of the stream before the request has finished, violating the assert. In such a situation, a subsequent attempt to transfer data to the response stream will fail and cause the request to be aborted as desired, cleaning up resources (there are probably some opportunities here for some optimizations to handle this case, but that can be explored later.) This commit just removes the bad assert. Fixes #3319 cc: @kapilash, @roncain +3334 area-System.Security Linux & Mac Support for System.Security.Cryptography.Pkcs Is there any plan to support classes in System.Security.Cryptography.Pkcs namespace? Its essential to create p7s files and sign data. Thanks +3340 area-System.Net Port additional System.Net.Http tests to CoreFx Added more http tests to open source from the original internal ToF tests. Some of the tests should be refactored in the future to avoid Assert'ing multiple logical things. Fixed up test namespaces for System.Net.Http and System.Net.Http.WinHttpHandler. +3343 area-System.Net HttpContentTest.ReadAsStringAsync_SetInvalidCharset_ThrowsInvalidOperationException fails on Linux Part of PR #3340, this test fails on Linux. Disabling for now. System.Net.Http.Functional.Tests.HttpContentTest.ReadAsStringAsync_SetInvalidCharset_ThrowsInvalidOperationException Stacktrace MESSAGE: Assert.Throws() Failure Expected: typeof(System.InvalidOperationException) Actual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpContentTest.d__bd.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +3345 area-System.Net Net Secure Xplat Implementation 1. Abstracted the code as per design shared earlier. 2. Made SecureChannel & SSPIWrapper agnostic of os. 3. Created 1 class 1 file for each new classes & move them to windows specific folder. 4. Added new interfaces & modules related to Cert. 5. SSPINegoInterface & SSPIAuthType, currently are not part of csproj as suggested by cipop. Have included unix Interop & related code as well for completeness. You can choose to review Windows first as well. +3349 area-Infrastructure Declare requirements in the tests to run\skip based on runtime checks As of now a no. of tests have requirements which make them applicable only in certain situations. For example, ServiceProcess tests can only be run in admin mode, several PLINQ tests need to be run on multi-threaded machines. (We do have an option of marking these tests OpenLoop, but that seems like a broader classification). Currently, the only way to assert these requirements is to update the constructor to check for the requirements, causing each individual test to fail. It would be good to have a means to skip\run tests based on a runtime check. #3134 has more details +3356 area-System.Net Restrict the SSL handshake test to 3 seconds. When things don't go so well this test takes significantly longer than an acceptable waiting period. On success it's fractions of a second. +3360 area-System.Net Correct broken System.Net.Http solution file. When the folders were adjusted for test prep, the folder searched for the functional tests was adjusted, but the file name needed to be updated to match too. +3362 area-System.Net System.Net.Security related Pending PR coments/TODO 1. Interop.OpenSsl TODO - See if SSL_CTX_Set_quite_shutdown can be used +3364 area-System.Threading ReaderWriterLockSlim.AcquireWriterLock timing out does not wake up waiting readers The [documentation for `ReaderWriterLockSlim.TryEnterWriteLock`](https://msdn.microsoft.com/en-us/library/bb339812.aspx) states: > While threads are blocked waiting to enter write mode, additional threads that try to enter read mode or upgradeable mode **block until all the threads waiting to enter write mode have either timed out or** entered write mode and then exited from it. (emphasis mine). However, the implementation does not behave like the bolded part of the documentation states. Imagine the following scenario with three threads (_T1_, _T2_, _T3_): 1. _T1_ acquires a read lock. 2. _T2_ tries to acquire a write lock and blocks, waiting for a timeout (as _T1_ holds the lock). 3. _T3_ tries to acquire a read lock and blocks (because _T2_ is blocked waiting for the write lock, and per the documentation, this means all further readers are blocked until _T2_ times out). 4. _T2_’s timeout expires. Per the documentation, _T3_ should now wake up and acquire the read lock. However, this does not happen and _T3_ is blocked forever (or, until some other event, e.g. _T1_ releasing the read lock, causes the implementation to wake up waiting threads). [Reproducible code for this scenario is available on StackOverflow](http://stackoverflow.com/a/32656459/304138), with some discussion. AFAICT, this is a simple bug caused by the fact that `TryEnterWriteLock` blocks further attempts to acquire a read lock, but when leaving by timeout, it does not wake them up. Specifically, I’d guess the `ExitMyLock` call in [`ReaderWriterLockSlim’s WaitOnEvent`](https://github.com/dotnet/corefx/blob/master/src/System.Threading/src/System/Threading/ReaderWriterLockSlim.cs#L923) should have been `ExitAndWakeUpAppropriateWaiters`. The same bug seems to exist for the non-slim `ReaderWriterLock`. +3365 area-System.Net Dummy PR with xplat SslStream fixes Sharing some fixes found during unit testing. We will be sending these changes as part of official PRs. The idea is to unblock devs who may be hitting issues while testing. Note that the first 2 commits are from https://github.com/dotnet/corefx/pull/3345 +3369 area-System.Net Incorporated some comments - Net Secure Xplat Implementation Incorporated some of the comments. Sending it as a new PR as original PR will be closed, once we merge into dev_sslstream to unblock partners. Tracking all issues via #3362 . (I am yet to updated the issue with complete list). Updated all TODO's in the code to refer this issue. This also includes fixes from Vijay's dummy PR https://github.com/dotnet/corefx/pull/3365. +3374 area-System.Security Add OuterLoop tests for X509Store We currently don't have tests for adding and removing certificates to an X509Store on the file system on Unix. We should add some. +3375 area-System.Net Add System.Net.Security to README.md cc: @stephentoub @CIPop @SidharthNabar +3382 area-System.Security GetECDSAPrivateKey() methods not being tested. This requires building a PFX which then triggers other testing problems (race conditions due to the temporary key being stored on disk.) +3383 area-System.Security X509Certificate2.GetECDsaPublicKey() on Unix still unimplemented. (from Jeremy) As for GetECDsaPublicKey, I think that you can get there with EVP_PKEY\* X509_PUBKEY_get(X509_PUBKEY_). Probably want to just add it to the native interop library as EVP_PKEY_ GetX509EvpPublicKey(X509\* x509). Then you can just unpack the EC_KEY the same way you did for the private key here. +3384 area-System.Globalization Investigate casing performance We should write some performance tests for casing and then play around with breaking up the loops in the implementation of the native ChangeCase method use on cross platform to see if we can make things faster. See the conversation [on the PR](https://github.com/dotnet/coreclr/pull/1604#discussion-diff-40141703) for more details. +3386 area-System.Net Various fixes for Unix SslStream @vijaykota had put out a PR into the dev-sslstream branch which gets an SslStream acting as a client working enough to connect to https://www.microsoft.com/, send it a malformed request, and read the reply. This PR is just a integrated version of #3365's non-experimental commits. +3389 area-System.Globalization Decouple CultureData from tests. Test data differs across OSes and so we need a way to select the expected data for globalization tests depending what windows version we are on or what version of the CLDR we are using. +3390 area-System.Net Add support for ECDsa certificates on Unix SslStream The initial version is being added with RSA only, because you have to start somewhere. +3391 area-System.Globalization TestDateTimeParsingWithSpecialCultures failing on ICU for sr-Latn-XX As part of b1995378c63df05117c57505c50f46e256c32b3a Tarek added some additional cultures to TestDateTimeParsingWithSpecialCultures in System.Runtime. These additional tests don't pass when run with ICU. ``` MESSAGE: Assert.True() Failure Expected: True Actual: False +++++++++++++++++++ STACK TRACE: at DateTimeTests.TestDateTimeParsingWithSpecialCultures(String cultureName) ``` +3394 area-System.Net HttpClient error on dnx-coreclr-linux-x64.1.0.0-beta8-15653 System.TypeInitializationException: The type initializer for 'System.Net.Http.CurlHandler' threw an exception. ---> System.TypeInitializationException: The type initializer for 'libcurl' threw an exception. ---> System.TypeInitializationException: The type initializer for 'HttpInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Net.Http.Native': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.HttpInitializer.EnsureCurlIsInitialized() at Interop.HttpInitializer..cctor() --- End of inner exception stack trace --- at Interop.HttpInitializer.Initialize() at Interop.libcurl..cctor() --- End of inner exception stack trace --- at Interop.libcurl.curl_version_info(Int32 curlVersionStamp) at System.Net.Http.CurlHandler..cctor() --- End of inner exception stack trace --- at System.Net.Http.CurlHandler..ctor() at System.Net.Http.HttpClientHandler..ctor() at ConsoleApp1.Program.d__7.MoveNext() +3406 area-System.Globalization IDNA tests conform to windows behavior, not specs The windows implementation of IDNA2008 does not follow the relevant specs in some cases (by design, for compatibility purposes). Our tests assume this behavior and then fail when run with ICU's implementation of ToAscii and ToUnicode. We need to decouple the tests into a core of tests which have the same behavior on both Windows and XPlat and then an additional set of tests which have different results and are platform specific. +3418 area-System.Runtime (Discussion) Case insensitive strings as a type I have read #649, and it seems to be a special case of a generic problem. Consider system where some strings are case sensitive (e.g. hash), and some aren't (e.g. name). Currently .NET defaults to being case sensitive, so I have to remember which string is which in all use cases. And those cases are not only about `s1.Equals(s2)` -- it is also every call to `ToDictionary`, every creation of `HashSet` and various other cases and optimizations that are really hard to keep track of. It would be great if I could define string as being case-insensitive on type level, e.g. use `CaseInsensitiveString`. This would affect Comparer selection wherever this type is used as a key, and all comparisons. Not quite sure whether it makes general sense and what the API would be like, so just putting it here as a discussion point. +3419 area-System.Runtime StringBuilder.AppendJoin (appending lists to StringBuilder) "#### Background Let's say you want to build a string that contains a separated list (e.g. list of filenames, messages, or anything else). If it is the only thing you want, you can use `string.Join`. However what if you want to append something else? If you `Concat` with the result of `string.Join`, that means that you unnecessarily allocated an intermediate joined string, which can be rather large (depending on the original collection). On the other hand, `StringBuilder` would require something like: ``` csharp var builder = new StringBuilder(""Names: ""); for (var i = 0; i < names.Length; i++) { if (i > 0) { // this becomes even more involved if `names` is `IEnumerable` builder.Append("", ""); } builder.Append(names[i]); } ``` That can be abstracted into an extension method, however I believe that extension would be general and useful enough to benefit from being in NetFX. #### API Design (updated based on API review, second pass -- see https://github.com/dotnet/corefx/issues/3419#issuecomment-273254581) ``` csharp public class StringBuilder { public StringBuilder AppendJoin(string separator, params object[] values); public StringBuilder AppendJoin(string separator, IEnumerable values); public StringBuilder AppendJoin(string separator, params string[] value); public StringBuilder AppendJoin(chat separator, params object[] values); public StringBuilder AppendJoin(char separator, IEnumerable values); public StringBuilder AppendJoin(char separator, params string[] value); // string.Join overloads NOT taken: //public StringBuilder AppendJoin(string separator, IEnumerable values); //public StringBuilder AppendJoin(string separator, string[] values, int startIndex, int count); //public StringBuilder AppendJoin(char separator, IEnumerable values); //public StringBuilder AppendJoin(char separator, string[] values, int startIndex, int count); // REJECTED in the first API review round: //public StringBuilder AppendJoin(string separator, T[] values, int startIndex, int count); //public StringBuilder AppendJoin(string separator, params T[] values); //public StringBuilder AppendJoin(char separator, params T[] values); } ``` Note: Motivation for the API approval update is described in https://github.com/dotnet/corefx/issues/3419#issuecomment-273254581 -- adjusting to follow proven working form of 'string.Join', correctly working with most-used overload calls - see usage example in https://github.com/dotnet/corefx/issues/5552#issuecomment-268395367. #### Compatibility Potential source-level issue if someone is already using an extension method with the same name. " +3421 area-System.Globalization DateTimeFormatInfoGetInstance.PosTest2 failed on Linux in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/2662/console ``` 03:20:10 System.Globalization.Tests.DateTimeFormatInfoGetInstance.PosTest2 [FAIL] 03:20:10 Assert.Equal() Failure 03:20:10 Expected: DateTimeFormatInfo { AMDesignator = ""AM"", AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... } 03:20:10 Actual: DateTimeFormatInfo { AMDesignator = ""de."", AbbreviatedDayNames = [""V"", ""H"", ""K"", ""Sze"", ""Cs"", ...], AbbreviatedMonthGenitiveNames = [""jan."", ""febr."", ""m��rc."", ""��pr."", ""m��j."", ...], AbbreviatedMonthNames = [""jan."", ""febr."", ""m��rc."", ""��pr."", ""m��j."", ...], Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... } 03:20:10 Stack Trace: 03:20:11 at System.Globalization.Tests.DateTimeFormatInfoGetInstance.PosTest2() 03:20:11 Finished: System.Globalization.Tests ``` " +3423 area-System.Data API for retrieving Columns Schema from DbDataReader This is to unwrap the specific issue of resultset schemas from the many involved in #1039. [Back on May 5th](https://github.com/dotnet/corefx/issues/1039#issuecomment-99186515) @davkean noted: > We want GetSchemaTable in some form (we should get a separate bug filed on that, however, as you could imagine bringing that back with a different design that doesn't pull in DataSet/DataTable). While it doesn't seem that anyone cares _what method_ exists for of getting the schema of a resultset, we seem to agree on needing _a method_ of doing it in .Net Core. For example, if a user runs a simple query such as: ``` SQL SELECT 'bob' Name, 1 Id ``` Then there's no way to see what the types are. While getting the .Net type ([via `.GetFieldType()`](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getfieldtype%28v=vs.110%29.aspx), e.g. `DateTime`) is possible and getting _part_ the SQL type ([via `.GetDataTypeName()`](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getdatatypename%28v=vs.110%29.aspx), e.g. `NVARCHAR`) is possible, other vital attributes of the schema shape currently aren't possible. For example there's no way to distinguish a `varchar(20)` from a `varchar(max)`. There's also no way to tell if the column was nullable. Previously, this functionality was provided by [`.GetSchemaTable()`](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable%28v=vs.110%29.aspx) which returned a [`DataTable`](https://msdn.microsoft.com/en-us/library/system.data.datatable%28v=vs.110%29.aspx) class. Currently I have a very simple use case: query data here, create a table with that data elsewhere. The query can be something like: `SELECT * FROM sys.database_files`. I point this out to illustrate that `INFORMATION_SCHEMA` (as proposed by some in #1039 as an alternative) is not a viable option. The same issue presents on any stored procedure which can also return any result set shape depending on the code paths. We need a way to see the scheme _of a result set_, these database-query alternatives are both expensive and non-covering. This is a hard blocker for projects of myself and others. I have uses in both one-off projects as well as [Opserver](https://github.com/opserver/Opserver) (which monitors SQL) and [Dapper.Net](https://github.com/StackExchange/dapper-dot-net). I know from #1039 that I'm not alone on this block. The portability of .Net core is _extremely_ appealing for certain projects, especially those where we need to monitor the innards of SQL without depending on a .Net install (many if not most existing SQL servers only have .Net 3.5). Unfortunately though, this one missing piece of the puzzle may prevent using it altogether, forcing full CLR installs. While SqlClient specifically serves my blocking use case, it's important to point out as @FransBouma [notes in the other issue](https://github.com/dotnet/corefx/issues/1039#issuecomment-142202400): this needs to be in the base API, not specifically up in SqlClient. For example, I also need this for Dapper features and it works across many providers - it is not at all SQL Server specific. So how about it, can we please get an API for result set schemas added back? I'm happy to contribute to designing and provide feedback on a new API here if that's the best route. I know many others are as well. +3425 area-System.Net Testing SslStream Read/Write logic +3431 area-System.Net Unix SslStream needs to verify the remote cert is valid for the destination address +3432 area-System.Net Adjust the PAL separation for certificate verification The Windows version requires that there be a valid handle to the native chain representation; the Unix version never has a valid native handle. So move the PAL separation to a slightly higher abstraction level, and let each side party on it in their own way. +3439 area-Infrastructure Replace Microsoft.DotNet.CoreCLR dependency with Microsoft.NETCore.Runtime.CoreCLR Remove dotnet-coreclr feed from dir.props and NuGet.config once this is done as well. See https://github.com/dotnet/corefx/pull/3413#discussion_r40368451 cc @weshaggard +3441 area-System.Net Follow up on CR feedback for System.Net.Sockets. See #3422. +3444 area-System.Net [SslStream] CheckX509Hostname wildcard matching may be too restrictive "[RFC 2595](http://www.ietf.org/rfc/rfc2595.txt) says: ``` - A ""*"" wildcard character MAY be used as the left-most name component in the certificate. For example, *.example.com would match a.example.com, foo.example.com, etc. but would not match example.com. ``` [RFC 2818](http://www.ietf.org/rfc/rfc2818.txt) says: ``` Matching is performed using the matching rules specified by [RFC2459]. If more than one identity of a given type is present in the certificate (e.g., more than one dNSName name, a match in any one of the set is considered acceptable.) Names may contain the wildcard character * which is considered to match any single domain name component or component fragment. E.g., *.a.com matches foo.a.com but not bar.foo.a.com. f*.com matches foo.com but not bar.com. ``` Where did the `f*.com` => `foo.com` example come from? " +3446 area-System.Net [Feature] CheckX509Hostname does not match IDNA Internationalized domains are very likely going to confuse this function. +3447 area-System.Net UDPClientTest.BeginSend_AsyncOperationCompletes_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4229/console ``` Discovering: System.Net.Sockets.APMServer.Tests Discovered: System.Net.Sockets.APMServer.Tests Starting: System.Net.Sockets.APMServer.Tests System.Net.Sockets.Tests.UDPClientTest.BeginSend_AsyncOperationCompletes_Success [FAIL] System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3211,0): at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3156,0): at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\UDPClient.cs(598,0): at System.Net.Sockets.UdpClient.BeginSend(Byte[] datagram, Int32 bytes, IPEndPoint endPoint, AsyncCallback requestCallback, Object state) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\UdpClientTest.cs(51,0): at System.Net.Sockets.Tests.UDPClientTest.BeginSend_AsyncOperationCompletes_Success() Finished: System.Net.Sockets.APMServer.Tests ``` +3450 area-System.Net 516 system.net Removing custom error checking from System.Net.* (ignoring System.Net.Sockets for the moment) @stephentoub - I'm planning on doing a squash/overall comment like for #3020 . +3463 area-System.Net Enable SslStream for Unix "Merging the current status of dev-sslstream into master. - The Windows version should continue to work just fine. - The Unix version has received sanity testing, and has limited functionality, but is believed to be in a ""basic scenarios, for integration purposes"" state. - `stream.AuthenticateAsClient(string)` :white_check_mark: - `stream.AuthenticateAsClientAsync(string)` :white_check_mark: - `stream.AuthenticateAsServer(X509Certificate)` :ok: (requires the provided instance be X509Certificate2, and using RSA) - `stream.Write(byte[])` :white_check_mark: - `stream.Read(byte[], int, int)` :white_check_mark: - {Read|Write}Async :grey_question: (it's expected to work, but wasn't explicitly verified) - Off the golden path may be a bit rough; unexpected disconnects and the like may have different exception flows than their Windows counterparts (if encountered, please report!) - Mutual authentication / client authentication certificates :x: " +3464 area-System.Net HttpClient isn't always canceling in response to cancellation requests "We first found this issue with a WCF negative test that expected a TimeOutException when setting a ‘SendTimeout’ on our BasicHttpBinding and calling a service operation that took longer to return. Previously this test passed with the elapsed time being just a little longer than the ‘SendTimeout’ value. As of a couple weeks ago we still got the TimeOutException but the elapsed time seemed to correlate to however long it took for the call to return from the service operation. So if the ‘SendTimeout’ was set to 5 milliseconds and the service operation waited 30 milliseconds to return, the elapsed time would be something over 30 milliseconds. As best we could determine it has something to do with the CancellationTokenSource perhaps when it is creating the linked token source and passing it to the SetTimeout method. (HttpClient.cs SendAsync method) We isolated this issue using no WCF code with the following client side code… ``` csharp Stopwatch watch = new Stopwatch(); HttpClient client = new HttpClient(); HttpRequestMessage message = new HttpRequestMessage(); message.RequestUri = new Uri(""http://localhost:54464/Home/About""); var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10)); try { watch.Start(); var responseTask = client.SendAsync(message, cts.Token); responseTask.Wait(); } catch (Exception ex) { Debug.WriteLine(ex.Message + ""\n"" + ex.StackTrace); } finally{ watch.Stop(); } Assert.InRange(watch.ElapsedMilliseconds, 8000, 15000); ``` In this example we are just calling the ‘About’ page of an ASP.NET MVC application (default VS template) and just added the following in the HomeController.About() method… ``` csharp public ActionResult About() { ViewBag.Message = ""Your application description page.""; Thread.Sleep(30*1000); return View(); } ``` **NOTE: I have no idea why but it seems to work as expected when in debug mode, the issue reproduces when executed normally.** " +3467 area-System.Globalization Investigate ICU EndsWith when string has zero collation elements at the end In StartsWith we ignore zero collation elements at the start of the string, we probably need to do the same thing in EndsWith. +3468 area-System.Globalization Implement IndexOfOrdinal and LastIndexOfOrdinal in the ICU Shim The naive implementation of these methods in CompareInfo.Unix.cs is correct but allocates both to do a substring and to case the string when ignore case is true. We should just just implement these methods in the Shim itself. It can walk the string without allocating and do casing inline without having to round trip to managed code for each character. +3474 area-System.Security Add opt-in setting for ensuring strong random numbers There have been some reports that Linux and OpenSSL in particular may not use enough entropy in all scenarios https://www.blackhat.com/docs/us-15/materials/us-15-Potter-Understanding-And-Managing-Entropy-Usage-wp.pdf We need to ensure we are properly seeding OpenSSL's PRNG. There are some conflicting articles/sites that say using /dev/urandom is sufficient: http://www.2uo.de/myths-about-urandom/ http://security.stackexchange.com/questions/7718/openssl-rand-poll-good-enough http://security.stackexchange.com/questions/3259/howto-seed-the-prng-in-openssl-properly?rq=1 One idea is to use the new [getrandom()](http://man7.org/linux/man-pages/man2/getrandom.2.html) syscall, which will block if there isn't enough entropy in the system. When that isn't available, we need to decide whether we should: 1. block 2. fail 3. continue +3475 area-System.Security System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain failure on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/42/testReport/System.Security.Cryptography.X509Certificates.Tests/ChainTests/BuildChain/ +3476 area-System.Net Two OSX HttpClientHandlerTest Failures in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/42/testReport/System.Net.Http.Functional.Tests/HttpClientHandlerTest/GetAsync_ResponseHeadersRead_ReadFromEachIterativelyDoesntDeadlock/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/42/testReport/System.Net.Http.Functional.Tests/HttpClientHandlerTest/GetAsync_CredentialIsNetworkCredentialUriRedirect_StatusCodeUnauthorized/ +3477 area-System.Net Fixes #3464 where http requests don't honor cancellation Add a registration for the passed in cancellation token which cancels the CancellationTokenSource.Token that is returned to the caller. +3480 area-System.Data Make interfaces as the official ADO.NET Provider API instead of classes From what I can see currently on the [corefx-progress page for System.Data.Common](https://github.com/dotnet/corefx-progress/blob/master/src-diff/System.Data.Common.md), the interfaces (IDbCommand, IDbConnection, etc) were removed in favor of the usage of abstract classes. But in the new API, most of the main methods are not virtual or abstract. On DbCommand alone we can see this: ``` cs public DbConnection Connection { get; set; } public DbParameterCollection Parameters { get; } public DbTransaction Transaction { get; set; } public DbParameter CreateParameter(); public Task ExecuteNonQueryAsync(); public DbDataReader ExecuteReader(); public DbDataReader ExecuteReader(CommandBehavior behavior); public Task ExecuteReaderAsync(); public Task ExecuteReaderAsync(CommandBehavior behavior); public Task ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken); public Task ExecuteReaderAsync(CancellationToken cancellationToken); public Task ExecuteScalarAsync(); ``` While these methods can certainly be made virtual or abstract, it would be much more useful to have the real interfaces back, and make any public API depend on these interfaces instead of the abstract classes. This is mostly useful when developing libraries. Today it's very hard to mock a datareader to make it return a specific value for testing purposes. The same for ensuring that ExecuteReaderAsync was called, not ExecuteReader, etc. I propose the provider factory instead should be made as an interface: ``` cs public interface IDbProviderFactory { IDbCommand CreateCommand(); IDbConnection CreateConnection(); IDbConnectionStringBuilder CreateConnectionStringBuilder(); IDbParameter CreateParameter(); } ``` And then follow from there to the rest of the provider to things like `IDbDataReader`, `IDbTransaction`, etc. We know the interfaces became out of sync for some reason in the past and the abstract classes were made the official API, but this doesn't need to be the case anymore in corefx. Note that this doesn't mean removing the System.Data.Common in any way, but instead make the Common classes implement these interfaces, and you wouldn't use System.Data.Common unless you're implementing the provider. Applications would depend only on the interfaces instead. Please consider this to make the API more testable on corefx 1.0. Related to discussions on #1039 and #3423. +3481 area-System.Linq How best to implement Linq's iterators. The current approach with `System.Linq.Enumerator`'s enumerables and their enumerators copies the approach for compiler-generated iterators; the same instance that serves as the enumerable serves as the result for the first call to `GetEnumerator()`, so avoiding an extra allocation. There is a race inherent to this approach; if two threads called `GetEnumerator()` at the same time they could end up with the same object when they should have separate instances. This is resolved by capturing `Environment.CurrentManagedThreadId` on construction and only using `this` as the result of `GetEnumerator()` if it matches a second call. This relatively expensive call is of no value if: 1. `GetEnumerator()` is never called (many optimisations skip it in various ways). 2. `GetEnumerator()` is repeatedly called (after the first call). 3. `GetEnumerator()` is only called once, on another thread (e.g. if a query is constructed before an `await` and enumerated after it). #3313 changes the approach to changing the state with `Interlocked.CompareExchange()` to resolve the race in a different way. This means no call in case 1 and 3 above, but is more expensive in case 2. It's about even in the case of one `GetEnumerator()` at least as some tests with Win64 DNX suggest (`CompareExchange` being about twice the case of `CurrentManagedThreadId` and being called half as often). In the discussion on that pull request, @Vsadov points out that the optimisation of avoid an allocation may not be as valuable as it once was in any case. Some very limited experimentation suggests that indeed just creating a new object on every call to `GetEnumerator()` is a clear win. There are a few possible variants here. We can have the same classes that server as both enumerable and enumerator, or separate classes (some reduction in state held, some increase in jitted code). If separate classes are used, internal calls to `GetEnumerator()` can be moved to this object's construction, further reducing state held in some cases, but being an observable change if that call throws an exception. A completely different possibility is to use the current approach, but avoid calling CurrentManagedThreadId is some cases. Some experimentation is in order. Some possible approaches: 1. Leave things as they are. 2. Use the basic approach currently used, but avoiding the `CurrentManagedThreadId` call, https://github.com/JonHanna/corefx/tree/fewer_threadid_calls 3. Use `Interlocked.CompareExchange()`: https://github.com/JonHanna/corefx/tree/defer_obtaining_threadid 4. Use the same classes as currently, but always allocating for `GetEnumerator()`: https://github.com/JonHanna/corefx/tree/fresh_enumerators 5. Use separate enumerators https://github.com/JonHanna/corefx/tree/separate_enumerators_cautious 6. ~~Use separate enumerators, shifting `GetEnumerator()` calls (observable change) https://github.com/JonHanna/corefx/tree/separate_enumerators~~ I'm planning to do some comparisons with these variants, but I'm opening this issue ahead of that for suggestions as to situations the comparisons must cover. In particular: Is 6 (with the observable change) completely out of the question? What tests would one expect avoiding an allocation to do better than not avoiding it? (First brief experiments suggest it's always a lose, but I'm wary of removing what was clearly intended as an optimisation if I can't see where it succeeded in optimising, though maybe it's just a matter of older CLR versions). +3482 area-System.Collections Proposal: (I)Dictionary.GetValueOrDefault ## Scenario In almost every app or library I write I almost always end up needing to write code like this, in at least one place: ``` c# SomeClass returnValue; return DictionaryOfSomeClass.TryGetValue(someKey, out returnValue) ? returnValue : null; ``` The reason that the `IDictionary` contract throws from its indexer for a non-existent key are well-known: an alternative behavior of returning `null` is nonsensical if `TValue` is a value type. Returning `default(TValue)` would work, but would clearly be a misleading behavior. But with dictionaries of class-types it is often desirable and expected to return `null` for a non-existent key. ## Proposal ```c# namespace System.Collections.Generic { public class Dictionary { public TValue GetValueOrDefault(TKey key); public TValue GetValueOrDefault(TKey key, TValue defaultValue); } public static class CollectionExtensions { public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key); public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key, TValue defaultValue); public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key); public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key, TValue defaultValue); } } ``` **Notes:** - There will be source-compile problem with ambiguity in all projects that already have such custom extension method `GetValueOrDefault` on `IDictionary` or `IReadOnlyDictionary`. Which is general problem for any extension method we add into CoreFX. ### Original Proposal - replaced by the one above I propose the following extension method (I don't like the name `GetValueNoThrow`, so that can be ignored for now). Please note that it applies only when `TValue` is a class, so it does not violate any behavior for value types. ``` c# public static class ClassyDictionaryExtensions { public static TValue GetValueNoThrow_Ignore_The_Name(this IDictionary dictionary, TKey key) where TValue : class { if (dictionary == null) { throw new ArgumentNullException(nameof(dictionary)); } TValue value; dictionary.TryGetValue(key, out value); return value; } } ``` The new code would end up with one very-easy-to-read line of code: ``` c# return DictionaryOfSomeClass.GetValueNoThrow(someKey); ``` ## Discussion Would others find such an extension method useful? +3483 area-System.Console Add an API to execute a console program and capture its output in a simple way Clearly, we can use the `Process` class to run a program, redirect its output and capture the output. But doing so correctly is unfathomably complicated: 1. You need to read both StdOut and StdErr. Failing to do so can result in hangs. 2. Output events can arrive _after_ WaitForExit has returned. (Update: This concern does not exist.) 3. Output events signal their completing by sending one `null` string at the end. 4. `myProcess.StandardOutput.ReadAsync` throws an exception for the last read with a confusing message (http://stackoverflow.com/questions/32800802/unable-to-read-output-from-child-process-from-c-sharp-app-using-async-methods#32800802). 5. Reading binary output requires contortions (`myProcess.StandardOutput.BaseStream`) where it is not clear whether this is supported at all. We are reaching into the `BaseStream` property which might expose an internal object not meant for consumption. 6. Failing to quickly read the redirected streams stalls the child process. 7. Many more on this list: http://csharptest.net/321/how-to-use-systemdiagnosticsprocess-correctly/ 8. Probably, even more that are on nobodies list. This API is terrible! Please provide an easy and reliable way to capture output. Here's a strawman for a simple API `IEnumerable Process::StartWithOutputRedirected()` Now, this clearly is insufficient and probably not nice API design but you get the point. The following goals should be achieved: 1. Little potential for mistakes. 2. Streaming output for unbounded output size. 3. Text and binary output. 4. Differentiate between StdOut and StdErr. For example by returning an `IEnumerable` of a DTO like `struct ConsoleOutput { string Data; ConsoleOutputType Type; /*Output, Error*/ }`. 5. The output stream should end at exactly the same point in time that WaitForExit ends at. Delay both to only complete when the other also has completed. 6. The API should allow reading in a non-linewise fashion. 7. A simplified version that just captures all output on both channels into one `string`. This is probably what most consumers want anyway. +3484 area-System.Net Some asserts during X-Plat Sockets Tests See: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst/1021/console. The Debug.Assert here did not cause the test to fail. ``` ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- SafeCloseSocket::ReleaseHandle(handle:0) ---- Assert Long Message ---- ReleaseHandle failed. at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message, String detailMessage) at System.Net.GlobalLog.Assert(String message, String detailMessage) at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) at System.Net.Sockets.SafeCloseSocket.InnerSafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at System.Net.Sockets.SafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() at System.Net.DebugSafeHandleMinusOneIsInvalid.Finalize() ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- SafeCloseSocket::ReleaseHandle(handle:0) ---- Assert Long Message ---- ReleaseHandle failed. at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message, String detailMessage) at System.Net.GlobalLog.Assert(String message, String detailMessage) at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) at System.Net.Sockets.SafeCloseSocket.InnerSafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at System.Net.Sockets.SafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() at System.Net.DebugSafeHandleMinusOneIsInvalid.Finalize() ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- SafeCloseSocket::ReleaseHandle(handle:0) ---- Assert Long Message ---- ReleaseHandle failed. at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message, String detailMessage) at System.Net.GlobalLog.Assert(String message, String detailMessage) at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) at System.Net.Sockets.SafeCloseSocket.InnerSafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at System.Net.Sockets.SafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() at System.Net.DebugSafeHandleMinusOneIsInvalid.Finalize() Finished: System.Net.Sockets.APMServer.Tests === TEST EXECUTION SUMMARY === System.Net.Sockets.APMServer.Tests Total: 231, Errors: 0, Failed: 0, Skipped: 0, Time: 13.856s ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- SafeCloseSocket::ReleaseHandle(handle:0) ---- Assert Long Message ---- ReleaseHandle failed. at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message, String detailMessage) at System.Net.GlobalLog.Assert(String message, String detailMessage) at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) at System.Net.Sockets.SafeCloseSocket.InnerSafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at System.Net.Sockets.SafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() at System.Net.DebugSafeHandleMinusOneIsInvalid.Finalize() Finished: System.Net.Sockets.AsyncServer.Tests === TEST EXECUTION SUMMARY === System.Net.Sockets.AsyncServer.Tests Total: 231, Errors: 0, Failed: 0, Skipped: 0, Time: 13.955s ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- SafeCloseSocket::ReleaseHandle(handle:0) ---- Assert Long Message ---- ReleaseHandle failed. at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message, String detailMessage) at System.Net.GlobalLog.Assert(String message, String detailMessage) at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) at System.Net.Sockets.SafeCloseSocket.InnerSafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at System.Net.Sockets.SafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() at System.Net.DebugSafeHandleMinusOneIsInvalid.Finalize() ---- DEBUG ASSERTION FAILED ---- ---- Assert Short Message ---- SafeCloseSocket::ReleaseHandle(handle:0) ---- Assert Long Message ---- ReleaseHandle failed. at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message, String detailMessage) at System.Net.GlobalLog.Assert(String message, String detailMessage) at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) at System.Net.Sockets.SafeCloseSocket.InnerSafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at System.Net.Sockets.SafeCloseSocket.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() at System.Net.DebugSafeHandleMinusOneIsInvalid.Finalize() ``` +3490 area-System.Net Incorporated some comments - Net Secure Xplat Implementation This is same as https://github.com/dotnet/corefx/pull/3369 Comments have already been addressed/replied. Any new comments can be given here. Since it's pending for roughly ~6 days, would like a quick closure. Thanks. Creating a PR to dotnet/master as we will no longer be using dev-sslstream. I will squash the commits once,I get the sign off. +3494 area-System.Net ConnectV4MappedIPAddressToV4Host_Success failed in CI on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/2785/console ``` 09:31:53 System.Net.Sockets.Tests.DualMode.ConnectV4MappedIPAddressToV4Host_Success [FAIL] 09:31:53 System.Net.Sockets.SocketException : Unknown error 10054 09:31:53 Stack Trace: 09:31:54 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 09:31:54 at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 09:31:54 at System.Net.Sockets.Socket.Connect(IPAddress address, Int32 port) 09:31:54 at System.Net.Sockets.Tests.DualMode.DualModeConnect_IPAddressToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Int32 port) 09:31:54 at System.Net.Sockets.Tests.DualMode.ConnectV4MappedIPAddressToV4Host_Success() ``` +3495 area-System.Net SocketPerformance_SingleSocketClientAPM_LocalHostServerAPM failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug/1351/console ``` 11:22:58 System.Net.Sockets.Performance.Tests.SocketPerformanceAPMTests.SocketPerformance_SingleSocketClientAPM_LocalHostServerAPM [FAIL] 11:22:58 Test execution is expected to be shorter than 5000 but was 7543 11:22:58 Expected: True 11:22:58 Actual: False 11:22:58 Stack Trace: 11:22:58 d:\j\workspace\dotnet_corefx_windows_debug\src\Common\tests\System.Net\Sockets\Performance\SocketPerformanceTests.cs(53,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(Int32 port, SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socket_instances, Int64 expectedMilliseconds) 11:22:58 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Sockets.Legacy\tests\PerformanceTests\SocketPerformanceAPMTests.cs(38,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceAPMTests.SocketPerformance_SingleSocketClientAPM_LocalHostServerAPM() ``` cc: @davidsh, @cipop, @pgavlin +3497 area-System.Net SendPacketsElement_FilePart_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/4322/console ``` Starting: System.Net.Sockets.AsyncServer.Tests System.Net.Sockets.Tests.SendPacketsAsync.SendPacketsElement_FilePart_Success [FAIL] Timed out Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\SendPacketsAsync.cs(397,0): at System.Net.Sockets.Tests.SendPacketsAsync.SendPackets(SendPacketsElement[] elements, SocketError expectedResut, Int32 bytesExpected) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\SendPacketsAsync.cs(317,0): at System.Net.Sockets.Tests.SendPacketsAsync.SendPacketsElement_FilePart_Success() ``` cc: @davidsh, @cipop, @pgavlin +3498 area-System.Net System.Net changes for README.md - Update System.Net.Security description - Add System.Net.Sockets description +3499 area-System.Reflection Merge master to dev/metadata Straight PR from master -> dev/metadata (no conflicts) +3501 area-Infrastructure Add static and runtime verification tools against existing tests /cc: @stephentoub @vijaykota @pgavlin @davidsh We should augment our CI with static and runtime verification tools that can be enabled against our existing tests: Windows: - [ ] FXCop (edit: covered by https://github.com/dotnet/corefx/issues/14095) - [ ] PREfast for Native code - [ ] [AppVerifier](http://www.microsoft.com/en-us/download/details.aspx?id=20028) Linux: - [ ] [Valgrind](http://valgrind.org/) This should already be part of normal pre-commit procedures for all teams. Could we make this an automated part of CI/Weekly testing? +3502 area-System.Security Windows: new X509Certificate2(byte[]).GetRSAPrivateKey returns RSACSP instead of RSACng "The idea/thought was that we'd use CNG for everything except for hardware providers that were linked through CAPI. In particular, this would prevent the SHA256 lookup failure that occurs when using CAPI's PROV_RSA_FULL instead of PROV_RSA_AES. I'm pretty sure that we made the software keys be returned via RSACng on desktop (4.6). This was accomplished by calling CryptAcquireCertificatePrivateKey with the ""ncrypt only"" flag (see the code on [reference source](http://referencesource.microsoft.com/#System.Core/System/Security/Cryptography/X509Certificates/X509Native.cs,2e55137aa586849f)), since that can up-convert software based CAPI keys. " +3503 area-System.Reflection Merge master to dev/metadata Replacing #3499. Still no conflicts, but this time using an intermediate branch so that changes to master do not automatically become part of the PR and reset CI. +3504 area-System.Net ReceiveFromAsyncV4BoundToAnyV4_Success failure in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug/1361/console ``` System.Net.Sockets.Tests.DualMode.ReceiveFromAsyncV4BoundToAnyV4_Success [FAIL] 18:41:42 System.TimeoutException : The operation has timed out. 18:41:42 Stack Trace: 18:41:42 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DualModeSocketTest.cs(1836,0): at System.Net.Sockets.Tests.DualMode.ReceiveFromAsync_Helper(IPAddress listenOn, IPAddress connectTo, Int32 port) 18:41:42 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DualModeSocketTest.cs(1766,0): at System.Net.Sockets.Tests.DualMode.ReceiveFromAsyncV4BoundToAnyV4_Success() ``` cc: @davidsh, @CIPop, @pgavlin +3505 area-System.Diagnostics Process.GetProcessesByName significantly slower on Linux than Windows for nonexistent process "The performance test being run: ``` [Benchmark] [InlineData(1)] [InlineData(2)] [InlineData(3)] public void GetProcessesByName(int innerIterations) { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) { for (int i = 0; i < innerIterations; i++) { Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); Process.GetProcessesByName(""1""); } } } ``` Linux perf results (38.455 total seconds): ``` ``` Windows perf results (3.355 total seconds): ``` ``` Further increasing the number of calls to GetProcessesByName makes comparatively little difference on Windows. For example, with an `InnerIterations` of 5000 (45000 total function calls), the elapsed time on Windows is only 106 seconds. In that same time Linux can only complete ~20 InnerIterations (180 total function calls). This suggests the Linux implementation takes roughly 250 times as long as the Windows implementation. " +3506 area-Infrastructure Can't run [Outerloop] tests using msbuild of individual test project "I frequently go to a single test directory to run tests just for that project. I.e., this will run just innerloop tests: > cd src\System.Net.Http\tests\FunctionalTests > msbuild /t:clean;build;test Now, say, I want to run `[Outerloop]` tests: I tried using this from the directory of the individual csproj file: `msbuild /t:clean;build;test /p:RunTestsWithCategories=Outerloop` or this: `msbuild /t:clean;build;test ""/p:XunitOptions=-trait category=outerloop""` and neither works. I have a vague memory of this working before. So, has this changed lately? " +3508 area-System.Net Change S.N.Sockets/tests to use (mostly) anonymous ports. This change only touches tests in System.Net.Sockets/tests; those under S.N.Sockets.Legacy/tests will be taken care of in a follow-up commit. +3510 area-System.Net Disabling System.Net.Sockets tests intermittently failing in CI. Disabling intermittently failing Sockets tests in CI. Related #3497 #3447 +3512 area-System.IO Path.GetDirectoryName slower on Linux than Windows Core "The performance test being run: ``` [Benchmark] [InlineData(10000)] [InlineData(20000)] [InlineData(30000)] public void GetDirectoryName(int innerIterations) { string testPath = PerfUtils.GetTestFilePath(); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < innerIterations; i++) { Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); Path.GetDirectoryName(testPath); } } ``` Linux perf results (99.804 seconds): ``` ``` Windows Core perf results (4.147 seconds): ``` ``` " +3516 area-System.IO Modified PathInternal.Unix for great perf increase resolves #3515, #3515 +3517 area-System.Reflection Add TypeNameParser tests @davkean Adding tests for your type name parser. I marked you as author on the commit with your original VS unit tests, then followed it up with commits to port to xunit. The port is minimal, and I have not for example bothered to convert to [Theory] etc. yet. I've also separated out the part that uses desktop-only API to compare against reflection type name parsing in to the .Desktop test project. Mind you, that project is temporary until we get test explorer working with portable tests, so I'm not sure we can keep that long term. cc @tmat Fix #534 +3518 area-System.Collections Dictionary int constructor ~10 times faster on Windows than on Linux "Perf test being run: ``` [Benchmark] [InlineData(0)] [InlineData(1024)] [InlineData(4096)] [InlineData(16384)] public void ctor_int(int size) { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i <= 5000; i++) { new Dictionary(size); new Dictionary(size); new Dictionary(size); new Dictionary(size); new Dictionary(size); new Dictionary(size); new Dictionary(size); new Dictionary(size); new Dictionary(size); } } ``` Linux results: ``` ``` Windows results: ``` ``` Note that the because of the way the test is written, destructing of the dictionaries can be included in the measured portion. It would be worthwhile to store local copies of the dictionaries so that destruction doesn't happen within the iteration.StartMeasurement `using` so the exact problem can be narrowed down. " +3519 area-System.Net Use anonymous ports in S.N.Sockets.Legacy/test/FunctionalTests. This is a follow-up to #3508. With this change, all of the legacy functional tests use anonymous ports. This also includes a small change to `SocketPerformanceTests.cs` to address PR feedback from #3508. +3520 area-System.Threading System.Threading.Tasks.Dataflow.Tests.EtwTests.TestEtw failed in CI on OSX This is a deterministic failure as far as I can tell. ``` MESSAGE: Assert.Equal() Failure Expected: 0 Actual: 2 +++++++++++++++++++ STACK TRACE: at System.Threading.Tasks.Dataflow.Tests.EtwTests.<>c__DisplayClass7.b__1() at System.Diagnostics.Tracing.TestEventListener.RunWithCallback(Action`1 handler, Action body) at System.Threading.Tasks.Dataflow.Tests.EtwTests.TestEtw() ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/50/testReport/junit/System.Threading.Tasks.Dataflow.Tests/EtwTests/TestEtw/ +3524 area-System.Data Incorporate Misc code review comments for SqlClient Please refer PR https://github.com/dotnet/corefx/pull/2986 The items to be taken care of, 1. Use utility methods. 2. Remove unnecessary base class calls 3. There is Obsolete SMI code which can be removed. Followup on the SMI v1 support and clean this up. +3528 area-System.Net Using SafeHandles instead of IntPtrs in Interop.libssl Changed the Unix code to use SafeHandles cc: @stephentoub @bartonjs @rajansingh10 @shrutigarg +3532 area-System.Net SendPacketsAsync.BufferZeroCountThenNormal_ZeroCountIgnored failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4396/console ``` System.Net.Sockets.Tests.SendPacketsAsync.BufferZeroCountThenNormal_ZeroCountIgnored [FAIL] Timed out Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\SendPacketsAsync.cs(231,0): at ``` cc: @davidsh, @cipop, @pgavlin +3533 area-System.Threading Timer_Change_BeforeDueTime_ChangesWhenTimerWillFire failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug/1368/console ``` TimerChangeTests.Timer_Change_BeforeDueTime_ChangesWhenTimerWillFire [FAIL] 05:19:31 Should have received a timer event after this new duration 05:19:31 Expected: True 05:19:31 Actual: False 05:19:31 Stack Trace: 05:19:31 d:\j\workspace\dotnet_corefx_windows_debug\src\System.Threading.Timer\tests\TimerChangeTests.cs(94,0): at TimerChangeTests.Timer_Change_BeforeDueTime_ChangesWhenTimerWillFire() ``` +3534 area-Infrastructure $(CommonPath) in paths causing bad Visual Studio experience. "A bunch of our .csproj files have lines like <Compile Include ""$(CommonPath)\blah\blah""> where $(CommonPath) is defined in dir.prop. This has a really bad effect on VS experience as its navigation and Intellisense engine struggle to find these files. Defining $(CommonPath) inside the individual .csproj fixes the Intellisense and still gives us some measure of encapsulation, albeit imperfect. Is the encapsulation of ""Common"" really worth this? " +3535 area-System.Data Refactor and consolidate the AdapterUtil.cs Reuse the common functions from AdapterUtil.cs The AdapterUtil is present in both Data.Common and Data.SqlClient with common functions. Refactor the AdapterUtil.cs so that most of it can reside in Data.Common +3537 area-System.Text Investigate System.Text.Encodings.Web.Tests encoding failure using XUnit Theory "We currently have this TODO in our UnicodeHelpersTests: ``` C# // This loop should instead be implemented as a [Theory] with multiple [InlineData]s. // However, until globalization support is implemented on Unix, this causes failures when // the xunit runner is configured with -xml to trace out results. When it does so with // [InlineData], the parameters get written out to the results xml file, and with our // current temporary globalization implementation on Unix, this causes exceptions like // ""The surrogate pair (0xD800, 0x22) is invalid. A high surrogate character // (0xD800 - 0xDBFF) must always be paired with a low surrogate character (0xDC00 - 0xDFFF)."" ``` However, after implementing the Encoding table on Unix, and converting this test back to a Theory, we still get a similar error running the test: `error: Invalid high surrogate character (0xDFFF). A high surrogate character must have a value from range (0xD800 - 0xDBFF).` We should investigate why this error is happening and fix it. " +3538 area-Infrastructure Discussion regarding support of CoreFX builds on non-windows OSes. "Today, building CoreFX on non windows platforms uses Mono as the runtime for all the managed code we need to run (namely MSBuild and Roslyn). The long term goal is to instead run on-top of a stable CoreCLR build. However, making this change has the possibility to regress supported build platforms since CoreCLR may not run everywhere Mono does (e.g. FreeBSD, other linux Distros, etc.) As a concrete example, our tool runtime package (which we would use to run GenFacades) contains a CoreCLR which only supports Ubuntu 14.04[1](#fr1). With buildtools 97 we are at the point now where we can actually enable GenFacades and have it work on Ubuntu 14.04, but doing so will break the build on incompatible distros. The question is, do we care enough to spend engineering effort to allow the build to work on platforms that we don't have a supported CoreCLR package for? Do we expect that when MSBuild on .NET Core lands and we try to adopt it that we will remove our mono dependency entirely? What does that mean for folks like the FreeBSD port team (/cc @janhenke), who want to build our stack on FreeBSD while they bring things up if we don't have FreeBSD packages? I know that @pgavlin is chomping at the bit to get more of the build working on Linux. It would be helpful to me as well, but we need closure here before we start going making changes that might break folks. I see a few paths forward. 1. Say that building Managed CoreFX code cross platform requires your platform be supported by CoreCLR. Since today the supported platforms are Ubuntu 14.04 and OSX, update build.sh to pass the correct RID for ToolNugetRuntimeId when invoking MSBuild. If you are on a different distro and want to go out of your way to install the correct set of dependencies so an existing supported RID can run on your distro, you're free to do so and then use that RID. 2. Do platform detection and ""light up"" when we are running on a CoreCLR supported distro. In this mode, if we are able to run CoreCLR, we prefer that otherwise we fallback to Mono. For cases where we can't fallback (e.g GenFacades) we just no-op the relevant builds tasks. 3. Make the statement that managed code that runs during build time _must_ run on Mono and _may_ run on CoreCLR. This is like (2) expect it means we can always fallback. This is not true today. I'm interested in getting everyone's take on this. Maybe I'm freaking out over nothing and I can go ahead and just do (1) without anyone getting upset. 1 Technically, this could mean any OS that has a set of libraries which are binary compatible with the versions of our dependencies in Ubuntu 14.04. For some dependencies this is easy (i.e. the version of openssl that is in another distro's package manager is probably binary compatible with the version in Ubuntu 14.04, but the version of the ICU library is probably not, since they decorate their export names per version). " +3541 area-System.Net Remove Assert(asynchronous failure) from Sockets tests. In principle, any call that fails ansynchronously may also fail synchronously. +3542 area-System.Net Should sockets performance tests be inner loop? These tests have failed to meet the baseline a few times, but they pass on re-run. http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4407/testReport/junit/System.Net.Sockets.Performance.Tests/SocketPerformanceAPMTests/SocketPerformance_SingleSocketClientAsync_LocalHostServerAPM/ When the CI System runs jobs, it can run multiple jobs on the same machine at the same time, could that be causing problems or are there real problems here that we should be investigating? It seems like the long term plan is that we move to @ianhays's [Performance] stuff. Can we just adopt these changes for that instead of having yet another perf testing thing that also runs inner loop? /cc @CIPop @davidsh @pgavlin @bartonjs. +3543 area-Infrastructure Repo organization guidelines for Common\tests Currently, there's a free-for-all regarding how code is placed in `src/Common/tests` folders, unlike the `src/Common/src` folder tree which has clear guidelines. There are a few proposals: 1) Mirror the `src/Common/src` idea and have everything properly aligned to the namespace. So, the folder paths would look like this: `src/Common/tests/System/Net/Http/HelperClass.cs`. Note that each namespace path is one word only per part in the pathname. This seems to be the most logical choice although. It could create some confusion at first since, for example, Sockets tests will add to Threading, EventSource and Resources but in the end will allow for better organization, review and increase code reuse. 2) Organize `src/Common/tests` per namespace ownership: /System.Net; /System.Xml, etc. So, the folder paths would look like this: `src/Common/tests/System.Net.Http/HelperClass.cs` This is partially what's going on today although there are folders that aren't fully specifying the namespace such as Collections, Compression, etc. Please add your opinions. +3544 area-System.Globalization "[Linux] Default locale is ""Invariant Language (Invariant Country)""" "Odd default locale with Core CLR on Linux: It is the invariant locale rather than the expected ""English (United States)"". Test just examines `Culture.CurrentCulture.EnglishName` and `Culture.CurrentUICulture.EnglishName`. Mono gets this right on the system system. I'm using `System.Globalization/4.0.11-beta-23326`, `System.Globalization.Extensions/4.0.1-beta-23326` and `System.Runtime/4.0.21-beta-23326` for most-recent tests of this scenario. " +3546 area-System.Linq Stack overflow enumerating EnumerableQuery created from null enumerable `EnumerableQuery` can be created passing null a `Expression`, an inappropriately typed `Expression`, a null `IEnumerable`, or a null value of a derived type. Blocking this would be a breaking change, especially since such objects can be usefully used as query providers. Calling `GetEnumerator()` on most such cases result in an `ArgumentNullException` or `ArgumentException`, which could probably be improved (another exception might be more appropriate), but if the constructor was passed a null `IEnumerable` then `GetEnumerator()` hits two cases where it would go into infinite recursion. First when the expression is visited, it is then recursively visited again until stack overflow. Potentially there are other ways this path could be hit, and so other bugs it could cause. If this is fixed, then `GetEnumerator()` itself will then delegate to its own `GetEnumerator()` causing infinite recursion again. ``` C# [Fact] public void NullEnumerableConstantNullExpression() { IQueryable query = new EnumerableQuery((IEnumerable)null); var exp = (ConstantExpression)query.Expression; query.GetEnumerator(); // stack overflow. } ``` +3548 area-System.Net Move Sockets performance tests into [OuterLoop]. Fixes #3495, #3542. +3550 area-System.Net Why HttpClient can't run on linux(coreclr-1.0.0-beta8-15776) "It's not ready yet? ``` C# using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Net.Http; namespace ConsoleApp2 { public class Program { public void Main(string[] args) { using (HttpClient client = new HttpClient()) { Task task = client.GetStringAsync(""https://github.com/""); task.Wait(); Console.WriteLine(task.Result); } Console.WriteLine(""exit!!""); } } } ``` ``` System.IO.FileNotFoundException: Could not load file or assembly 'System.Net.Http, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. File name: 'System.Net.Http, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.IO.FileNotFoundException: Could not load the specified file. File name: 'System.Net.Http' at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.Resolve(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName) at ConsoleApp2.Program.Main(String[] args) at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Dnx.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args) at Microsoft.Dnx.ApplicationHost.Program.Main(String[] args) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Dnx.Host.Bootstrapper.RunAsync(List`1 args, IRuntimeEnvironment env, String appBase, FrameworkName targetFramework) at Microsoft.Dnx.Host.RuntimeBootstrapper.ExecuteAsync(String[] args, BootstrapperContext bootstrapperContext) at Microsoft.Dnx.Host.RuntimeBootstrapper.Execute(String[] args, BootstrapperContext bootstrapperContext) System.IO.FileNotFoundException: Could not load the specified file. File name: 'System.Net.Http' at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.Resolve(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName) ``` " +3554 area-System.Net Add more HTTP tests - Add more tests ported from the internal ToF tests. - Cleanup existing tests to be consistent in style and format as it has drifted due to many different people working on the tests. - Disposing the HttpClient object will dispose the handler as well so we don't need multiple 'using' statements unless we are explicitly testing dispose ordering semantics. +3555 area-System.Net System.Net.Http (Linux) allows insecure HTTPS -> HTTP redirect Discovered during PR #3554 Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RedirectFromHttpsToHttp_StatusCodeRedirect MESSAGE: Assert.Equal() Failure Expected: Redirect Actual: OK +++++++++++++++++++ STACK TRACE: at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +3556 area-System.Linq Interpreting dynamic expressions failed Hello, a really Q&D example for showing the issue. First the simple callsitebinder: ``` C# private class BinaryCallSiteBinder : BinaryOperationBinder { public BinaryCallSiteBinder() : base(ExpressionType.Add) { } public override DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg, DynamicMetaObject errorSuggestion) { return new DynamicMetaObject( Expression.Convert( Expression.Add( Expression.Convert(target.Expression, typeof(int)), Expression.Convert(arg.Expression, typeof(int)) ), typeof(object)), BindingRestrictions.GetTypeRestriction(target.Expression, typeof(int)).Merge( BindingRestrictions.GetTypeRestriction(arg.Expression, typeof(int)) )); } } ``` And the calling code: ``` C# var expr = DynamicExpression.Dynamic(new BinaryCallSiteBinder(), typeof(object), Expression.Constant(40, typeof(object)), Expression.Constant(2, typeof(object))); var f = Expression.Lambda>(expr); var f2 = f.Compile(); textbox1.Text = f2().ToString(); ``` If I run the code under Windows 8.1 Phone or the desktop .net framework, it works fine. But under Windows 10 UWP (it should .net core) I get the following exception: ``` System.ArgumentException wurde nicht von Benutzercode behandelt. HResult=-2147024809 Message=Expression of type 'System.Object' cannot be used for parameter of type 'System.Runtime.CompilerServices.CallSite' of method 'Boolean SetNotMatched(System.Runtime.CompilerServices.CallSite)' Source=System.Linq.Expressions StackTrace: at System.Dynamic.Utils.ExpressionUtils.ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arg, ParameterInfo pi) at System.Linq.Expressions.Expression.Call(MethodInfo method, Expression arg0) at System.Runtime.CompilerServices.CallSite`1.CreateCustomNoMatchDelegate(MethodInfo invoke) at System.Runtime.CompilerServices.CallSite`1.MakeUpdateDelegate() at System.Runtime.CompilerServices.CallSite`1.GetUpdateDelegate(T& addr) at System.Runtime.CompilerServices.CallSite`1.GetUpdateDelegate() at System.Runtime.CompilerServices.CallSite`1.Create(CallSiteBinder binder) at System.Runtime.CompilerServices.CallSite.Create(Type delegateType, CallSiteBinder binder) at System.Linq.Expressions.DynamicExpression.Reduce() at System.Linq.Expressions.Interpreter.LightCompiler.CompileNoLabelPush(Expression expr) at System.Linq.Expressions.Interpreter.LightCompiler.Compile(Expression expr) at System.Linq.Expressions.Interpreter.LightCompiler.CompileTop(LambdaExpression node) at System.Linq.Expressions.Expression`1.Compile() at TestLua.MainPage.btnClick_Click(Object sender, RoutedEventArgs e) ``` What is wrong? +3557 area-System.Net System.Net.Http (Linux) not passing credentials (in cache) during redirect Discovered during PR #3554 Test Failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_CredentialIsCredentialCacheUriRedirect_StatusCodeOK MESSAGE: Assert.Equal() Failure Expected: OK Actual: Unauthorized +++++++++++++++++++ STACK TRACE: at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__5c.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +3558 area-System.Console Expose System.Console.WindowWidth Azure CLI would like us to expose WindowWidth property +3559 area-System.Console Expose System.Console.CursorVisible Azure CLI would like us to expose this property +3562 area-System.Net Tracking issues for System.Net.NetworkInformation and System.Net.Utilities This issue is tracking TODOs and Shims removal for PR #: - [ ] Replace Interop.\* with OS names from the SDK (iphlpapi) - [ ] Unify error codes for Win32 (see Interop.ErrorCodes.cs in iphlpapi) - [ ] Investigate DangerousAddRef then Dispose within `SafeCloseSocketAndEvent::CompleteInitialization(...)` - [ ] In NetworkAddressChange.cs : > @stephentoub: We're invoking the user's callback while holding s_syncObject. There are trivial ways that could lead to deadlock (e.g. if the callback queued and waited on a work item that tried to add a handler), though maybe we don't care about such degenerate patterns? - [ ] In NetworkAddressChange.cs: StartHelper() > @ stephentoub: Is it not possible for both IPv4 and IPv6 to be supported and in the start options? If it is possible, we're overwriting statics that were just set in the previous section. > > > @CIPop Collaborator > > CIPop added a note just now > > Indeed, s_registeredWait is overwritten. There are other issues with this implementation: the RegisteredWaitHandle is never unregistered. https://msdn.microsoft.com/en-us/library/w9f75h7a(v=vs.110).aspx: > > > When you are finished using the RegisteredWaitHandle that is returned by this method, call its RegisteredWaitHandle.Unregister method to release references to the wait handle. We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce +3563 area-System.Collections Add System.Collections.Concurrent.ConcurrentHashSet "We already have classes in the `System.Collections.Concurrent` namespace that provide (mostly) equivalent APIs to most of those in the `System.Collections.Generic` namespace. However, one omission is a concurrent equivalent for `System.Collections.Generic.HashSet`. At the moment, if a thread-safe hash set is needed, we are left with one of three options: - Creating a thread-safe collection class from scratch. - Synchronizing `System.Collections.Generic.HashSet` in a wrapper class. - Using `System.Collections.Concurrent.ConcurrentDictionary` with ""dummy"" values such as `object` or `byte`, either directly or through a wrapper. None of these approaches is ideal. The first and second option are both error prone (concurrency is hard) and difficult to fully optimize. The third wastes memory and time spent allocating the dummy objects. It seems reasonable to expect such a class wouldn't be too challenging to create given that it would appear to mostly consist of reducing the functionality in the already-existing `ConcurrentDictionary` class (though that one is ~2,000 line long, so...). " +3564 area-System.Net Add unidirectional tests for Socket.{Send,Receive}. These tests send data in a loop from one socket to another and check that all data was correctly received. There are tests for each of: - {SendTo,ReceiveFrom} - {Begin,End}{SendTo,ReceiveFrom} - {SendTo,ReceiveFrom}Async - {Send,Receive} - {Begin,End}{Send,Receive} - {Send,Receive}Async The SendTo/ReceiveFrom tests use UDP sockets; the others use TCP sockets. All tests use either the IPv4 or IPv6 loopback interface. +3565 area-System.Net System.Net.Http (Linux) doesn't support ChannelBinding Test (HttpClientHandlerTest.cs) PostAsync_Post_ChannelBindingHasExpectedValue() fails because it returns a NULL value for ChannelBinding. +3566 area-System.Runtime Perf: Environment.ExpandEnvironmentVariables 4x slower on Linux "Perf test: ``` PerfUtils utils = new PerfUtils(); string env = utils.CreateString(15); string inputEnv = ""%"" + env + ""%""; try { // setup the environment variable so we can read it Environment.SetEnvironmentVariable(env, ""value""); // read the valid environment variable foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 40000; i++) { Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); Environment.ExpandEnvironmentVariables(inputEnv); } } finally { // clear the variable that we set Environment.SetEnvironmentVariable(env, null); } ``` Linux results: ``` ``` Windows results: ``` ``` " +3568 area-System.Runtime Perf: Environment.GetEnvironmentVariable 4x slower on Linux "Perf test: ``` [Benchmark] public void GetEnvironmentVariable() { PerfUtils utils = new PerfUtils(); string env = utils.CreateString(15); try { // setup the environment variable so we can read it Environment.SetEnvironmentVariable(env, ""value""); // read the valid environment variable for the test foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 40000; i++) { Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); Environment.GetEnvironmentVariable(env); } } finally { // clear the variable that we set Environment.SetEnvironmentVariable(env, null); } } ``` Linux results: ``` ``` Windows results: ``` ``` " +3569 area-System.Runtime System.Runtime.Loader.Tests.AssemblyLoadContextTest.InitializeDefaultContextTest failing on Linux in CI For example: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/2896/ +3570 area-System.Net Fix Net.NameResolutionPal.Unix when sockaddr shim'ing work comes in The System.Net.NameResolutionPal.Unix::TryGetAddrInfo function does a lot of copying a bit twiddling according to sockaddr sizes per-platform. This should be cleaned up when the sockaddr struct is shim'd +3571 area-System.Runtime Perf: DateTime.Now 3x slower on Linux "Perf test: ```c# [Benchmark] public void GetNow() { DateTime dt; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 10000; i++) { dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; dt = DateTime.Now; } } ``` Linux results: ```xml ``` Windows results: ```xml ``` " +3572 area-System.Runtime Perf: new Random() 2x slower on Linux "Perf test: ``` [Benchmark] public void ctor() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 40000; i++) { new Random(); new Random(); new Random(); new Random(); new Random(); new Random(); new Random(); new Random(); new Random(); } } ``` Linux results: ``` ``` Windows results: ``` ``` I expect this is due to the use of DateTime.Now as the seed for the default Random constructor, making this related to #3571 " +3573 area-System.Runtime Perf: Guid.NewGuid 200x slower on Linux "Perf test: ``` [Benchmark] public void NewGuid() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 10000; i++) { Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); Guid.NewGuid(); } } ``` Linux results: ``` ``` Windows results: ``` ``` " +3574 area-System.Runtime Perf: String.ToUpper and String.ToLower 3x slower on Linux "Perf test and relevant helper methods: ``` [Benchmark] [MemberData(""TestStringSizes"")] public void ToUpper(int size) { PerfUtils utils = new PerfUtils(); string testString = utils.CreateString(size); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 10000; i++) testString.ToUpper(); } public static IEnumerable TestStringSizes() { yield return new object[] { 10 }; yield return new object[] { 100 }; yield return new object[] { 1000 }; } /// /// Helper method to create a string containing a number of random /// characters equal to the specified length /// public string CreateString(int length) { byte[] bytes = new byte[length]; rand.NextBytes(bytes); return System.Convert.ToBase64String(bytes); } ``` Linux results (same for ToLower) for length=1000: ``` ``` Windows results (same for ToUpper) for length=1000: ``` ``` Results for other lengths are similar but less severe. I have excluded them for the conciseness but may post them if desired. " +3575 area-System.Net Fix a bug in Windows async sockets. Consider the following sequence of events for a SocketAsyncEventArgs `args` and a non-null `byte` buffer `buf`: 1. `args._buffer` is set to `buf` via `args.SetBuffer(buf, 0, buf.Length)` 2. Some asychronous call is made using `args` (e.g. `socket.SendAsync(args)`) 3. The asynchronous call completed 4. `args._buffer` is set to `null` via `args.SetBuffer(null, 0, 0)` 5. A GC occurs that relocates `buf`. 6. `args._buffer` is reset to `buf` via `args.SetBuffer(buf, 0, buf.Length)` 7. Another asynchronous call is made using `args` (e.g. `socket.SendAsync(args)`) - (2) will pin `buf` via a `PreAllocatedOverlapped` instance, store the instance in `args._preAllocatedOverlapped`, set `args._pinState` to `PinState.SingleBuffer`, set up a native overlapped object, and finally set `args._ptrNativeOverlapped` to a safe handle that wraps the overlapped object. - (3) will dispose the handle stored in `args._ptrNativeOverlapped` and set `args._ptrNativeOverlapped` to `null`. - (4) will call `args.FreeOverlapped`, which will dispose `args._preAllocatedOverlapped` (thus unpinning `buf`) and set `args._preAllocatedOverlapped` to `null`. `args._pinState` and related fields will not be updated: the code that does so is conditional upon `args._ptrNativeOverlapped` being non-`null`, and (3) already set the same to `null`. - (6) will call `args.CheckPinSingleBuffer`, which will observe that `args._pinState` is `PinState.SingleBuffer` and `_pinnedSingleBuffer` is the same as `_buffer` and consider the buffer already pinned. As a result, the call will not re-pin `buf`. - Because (6) did not re-pin `buf`, the asynchronous call made in (7) will reuse the address at which the buffer was located the last time it was pinned. At best, this address is no longer mapped and the call results in an AV; at worst, this address contains unknown (and potentially sensitive) data. The fix is to reset `_pinState` and related fields when `_preAllocatedOverlapped` is disposed. +3576 area-Infrastructure Is there a Resharper settings file for this coding style? I personally dislike the default R# C# coding style configuration. It would be nice to have R# configured for this coding style. Then I could use R#'s code reformatting functionality to bring code into line. :-) While the stand-alone CodeFormatter.exe is nice to have, for the rest of my team, if it isn't integrated into their VS workflow it might as well not exist. +3578 area-System.Net CURL Handler redirect fixes This commit fixes the following issues in CurlHandler w.r.t following URI redirection - Ensure that the credentials are nullified at the right place. We should not set username and/or password to null unnecessarily. - Ensure that libcurl follows only HTTPS uri if the original request was for a HTTPS URL. - Ensure that libcurl follows only a HTTPS or a HTTP uri if the original request was for a HTTP URL. +3580 area-System.Net NullReferenceException in System.Net.Sockets.Tests.Disconnect.Success on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4466/console ``` C# Discovering: System.Net.Sockets.AsyncServer.Tests Discovered: System.Net.Sockets.AsyncServer.Tests Starting: System.Net.Sockets.AsyncServer.Tests System.Net.Sockets.Tests.Disconnect.Success [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.Windows.cs(86,0): at System.Net.Sockets.Socket.DisconnectExBlocking(IntPtr socketHandle, IntPtr overlapped, Int32 flags, Int32 reserved) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\SocketPal.Windows.cs(156,0): at System.Net.Sockets.SocketPal.Disconnect(Socket socket, SafeCloseSocket handle, Boolean reuseSocket) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(2600,0): at System.Net.Sockets.Socket.Disconnect(Boolean reuseSocket) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\Disconnect.cs(42,0): at System.Net.Sockets.Tests.Disconnect.Success() Finished: System.Net.Sockets.AsyncServer.Tests ``` cc: @davidsh, @cipop, @pgavlin +3583 area-System.Threading Timer_Change_BeforeDueTime_ChangesWhenTimerWillFire test fails A timer test failed on PR here: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4494/testReport/junit/(root)/TimerChangeTests/Timer_Change_BeforeDueTime_ChangesWhenTimerWillFire/ MESSAGE: Should have received a timer event after this new duration Expected: True Actual: False +++++++++++++++++++ STACK TRACE: at TimerChangeTests.Timer_Change_BeforeDueTime_ChangesWhenTimerWillFire() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Threading.Timer\tests\TimerChangeTests.cs:line 94 +3588 area-System.Collections Perf: System.Collections List, Dictionary default constructors 2x slower on Linux "Perf Tests: ``` [Benchmark] public void ctor() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i <= 20000; i++) { new Dictionary(); new Dictionary(); new Dictionary(); new Dictionary(); new Dictionary(); new Dictionary(); new Dictionary(); new Dictionary(); new Dictionary(); } } [Benchmark] public void ctor() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) { for (int i = 0; i < 20000; i++) { new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); new List(); } } } ``` Linux perf results for Dictionary: ``` ``` Windows perf results for Dictionary: ``` ``` Linux perf results for List: ``` ``` Windows perf results for List ``` ``` Note that these results are only for the default constructors. Results for `new Dictionary(int size)`, `new List(int size)`, and `new List(IEnumerable enumerable)` are even across platforms. I suspect we would get similar results for other collections, but I have yet to add tests for any other generic collections Confirmed these results with the old-fashioned Stopwatch-around-the-iteration-loop method. " +3590 area-System.Collections Perf: NonGeneric.HashTable default constructor 4x slower on Linux "Perf test: ``` [Benchmark] public void ctor() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) { for (int i = 0; i < 40000; i++) { new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); new Hashtable(); } } } ``` Linux results: ``` ``` Windows results: ``` ``` Probably somehow related to #3588. Confirmed results with Stopwatch. " +3591 area-System.IO Perf: Directory.GetCurrentDirectory 20% slower on Linux "Low priority, could use more investigation: Perf test: ``` [Benchmark] public void GetCurrentDirectory() { foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 20000; i++) { Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); Directory.GetCurrentDirectory(); } } ``` Linux results: ``` ``` Windows results: ``` ``` " +3592 area-System.Linq System.Linq.Parallel test hanging in Linux CI The CTT_NonSorting_AsynchronousMergerEnumeratorDispose seems to hang sometime in CI with a callstack that looks like this: ``` System.Threading.ManualResetEventSlim.Wait() System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken) System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[[System.Int32, mscorlib]].MoveNext() System.Linq.Parallel.QueryOpeningEnumerator`1[[System.Int32, mscorlib]].MoveNext() System.Linq.Parallel.Tests.WithCancellationTests.CTT_NonSorting_AsynchronousMergerEnumeratorDispose ``` Don't really have more details. If you would like, next time see it in CI I can hold the machine for you. +3598 area-System.Reflection Make signature and attribute decoders instances This is a new take based on the discussion on closed PR #1068. There's also some small cleanup in the other two commits. I'm going to merge this if it passes CI since dev/metadata is effectively a dead-end now. I'll resurface the SignatureDecoder with these changes in a new PR to master. Having this work captured in dev/metadata will just make it easier to reconcile things after the portable PDB and SignatureDecoder are merged to master. That will leave only CustomAttributeDecoder and TypeNameParser as features in dev but not master and we should cherry-pick those over to a new branch for v1.2 dev. +3600 area-System.Net Porting System.Net.NetworkInformation and System.Net.Utilities Will squash commits and change the author prior to commit. Note to reviewers: `Initial file port` represents the action of copying files from the dev-branch. It's probably simpler to leave comments on individual commit steps. @mellinoe @davidsh @pgavlin @stephentoub PTAL /cc @vijaykota @SidharthNabar @sokket (heads-up as this might be breaking #3471) +3601 area-System.Reflection Merge master -> dev/metadata No conflicts +3607 area-System.Linq QueryEnumerable only accepts expression features prior to Framework version 4.0 "Any expression type introduced after 3.5 will fail with an `ArgumentException`: ``` C# [Fact] public void Block() { Expression block = Expression.Block( Expression.Empty(), Expression.Constant(Enumerable.Range(0, 2).AsQueryable()) ); IQueryable q = _prov.CreateQuery(block); Assert.Equal(Enumerable.Range(0, 2), q); // ""Unhandled Expression Type: Block"" } ``` Expressions that existed with 3.5, but using features from 4.0 will also fail with an `ArgumentException`: ``` C# [Fact] public void ExplicitlyTypedConditional() { Expression call = Expression.Call( typeof(Queryable), ""OfType"", new[] { typeof(long) }, Expression.Condition( Expression.Constant(true), Expression.Constant(new long?[] { 2, 3, null, 1 }.AsQueryable()), Expression.Constant(Enumerable.Range(0, 3).AsQueryable().Select(i => (long)i)), typeof(IQueryable) ) ); IQueryable q = _prov.CreateQuery(call); Assert.Equal(new long[] { 2, 3, 1 }, q); // ""Argument types do not match"" } ``` " +3609 area-System.Net GSS-API bindings Are there any plans to implement GSS-API bindings? So that services running on linux could do domain authentication. +3610 area-System.Net SendToRecvFromAsync_Single_Datagram_UDP_IPv6 failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_outerloop_windows_debug/721/console ``` Discovering: System.Net.Sockets.Tests Discovered: System.Net.Sockets.Tests Starting: System.Net.Sockets.Tests System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Single_Datagram_UDP_IPv6 [FAIL] Assert.Equal() Failure Expected: 0 Actual: 2037238909 Stack Trace: d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(124,0): at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) d:\j\workspace\dotnet_corefx_outerloop_windows_debug\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(315,0): at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Single_Datagram_UDP_IPv6() Finished: System.Net.Sockets.Tests === TEST EXECUTION SUMMARY === System.Net.Sockets.Tests Total: 6, Errors: 0, Failed: 1, Skipped: 0, Time: 2.399s ``` cc: @davidsh, @cipop, @pgavlin +3611 area-System.Net Disable SendToRecvFromAsync_Single_Datagram_UDP_IPv6 test cc: @davidsh, @cipop, @pgavlin #3610 +3614 area-System.Reflection Merge master to dev/metadata No literal conflict, but had to add bf192c7 to make buildtools happy. +3616 area-System.Globalization Fix Serbian date formats "In the following cultures sr-Cyrl-XK sr-Latn-ME sr-Latn-RS sr-Latn-XK it has wrong date pattern as ""d. M. yyyy."". the CLDR don't include spaces. the problem with that is parser get confused between the date and the time separator and fail parse these dates. these cultures has time pattern as hh.mm.ss. so we'll have date separator as "". "" and time separator as ""."". The fix is we need to remove the spaces in the date pattern to allow the parser detect such special cases and work. if we cannot fix the format then we'll need to work around this in the parser but this comes with the regression risk. " +3617 area-System.Net Fix a bug in the Socket constructor. Only the Windows constuctor was throwing the appropriate exceptions due to misplacement of the `throw` behind the PAL. The `throw` has been moved into the platform-independent code and tests have been added. +3620 area-System.Data Add Return Value for SendControlPacket in SNIMarsHandle +3621 area-System.Data Add SetBufferSize Methods To All SNIHandle Classes +3622 area-System.Data Add Async Overrides to SslOverTdsStream +3623 area-Infrastructure System.IO.Compression.Tests solution not building on Visual Studio 2015 "It does build with build.cmd, but if you open it and try to build it from the solution file with my current environment these are the errors. ``` Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.' System.Linq.Expressions 4.0.0 provides a compile-time reference assembly for System.Linq.Expressions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x86. System.Console 4.0.0-beta-23401 provides a compile-time reference assembly for System.Console on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x86. System.ObjectModel 4.0.0 provides a compile-time reference assembly for System.ObjectModel on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x86. System.Runtime.InteropServices.RuntimeInformation 4.0.0-beta-23401 provides a compile-time reference assembly for System.Runtime.InteropServices.RuntimeInformation on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x86. System.Security.Cryptography.Algorithms 4.0.0-beta-23401 provides a compile-time reference assembly for System.Security.Cryptography.Algorithms on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x86. System.Text.RegularExpressions 4.0.0 provides a compile-time reference assembly for System.Text.RegularExpressions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x86. Some packages are not compatible with DNXCore,Version=v5.0 (win7-x86). System.Linq.Expressions 4.0.0 provides a compile-time reference assembly for System.Linq.Expressions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x64. System.Console 4.0.0-beta-23401 provides a compile-time reference assembly for System.Console on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x64. System.ObjectModel 4.0.0 provides a compile-time reference assembly for System.ObjectModel on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x64. System.Runtime.InteropServices.RuntimeInformation 4.0.0-beta-23401 provides a compile-time reference assembly for System.Runtime.InteropServices.RuntimeInformation on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x64. System.Security.Cryptography.Algorithms 4.0.0-beta-23401 provides a compile-time reference assembly for System.Security.Cryptography.Algorithms on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x64. System.Text.RegularExpressions 4.0.0 provides a compile-time reference assembly for System.Text.RegularExpressions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with win7-x64. Some packages are not compatible with DNXCore,Version=v5.0 (win7-x64). NuGet package restore failed. 1>------ Build started: Project: System.IO.Compression, Configuration: Linux_Debug Any CPU ------ 1> System.IO.Compression -> G:\CoreCLR\corefx\bin\Linux.AnyCPU.Debug\System.IO.Compression\System.IO.Compression.dll 2>------ Build started: Project: System.IO.Compression.Tests, Configuration: Debug Any CPU ------ 2>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3274: The primary reference ""G:\CoreCLR\corefx\packages/Microsoft.DotNet.xunit.performance\1.0.0-alpha-build0022\lib\dotnet\xunit.performance.core.dll"" could not be resolved because it was built against the "".NETPortable,Version=v5.0"" framework. This is a higher version than the currently targeted framework "".NETPortable,Version=v4.5,Profile=Profile7"". 2>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3275: The primary reference ""G:\CoreCLR\corefx\packages/Microsoft.DotNet.xunit.performance\1.0.0-alpha-build0022\lib\dotnet\xunit.performance.execution.dotnet.dll"" could not be resolved because it has an indirect dependency on the assembly ""xunit.performance.core, Version=1.0.0.22, Culture=neutral, PublicKeyToken=67066efe964d3b03"" which was built against the "".NETPortable,Version=v5.0"" framework. This is a higher version than the currently targeted framework "".NETPortable,Version=v4.5,Profile=Profile7"". 2>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3274: The primary reference ""G:\CoreCLR\corefx\packages/Microsoft.DotNet.xunit.performance\1.0.0-alpha-build0022\lib\dotnet\xunit.performance.execution.dotnet.dll"" could not be resolved because it was built against the "".NETPortable,Version=v5.0"" framework. This is a higher version than the currently targeted framework "".NETPortable,Version=v4.5,Profile=Profile7"". 2> System.IO.Compression.Tests -> G:\CoreCLR\corefx\bin\Windows_NT.AnyCPU.Debug\System.IO.Compression.Tests\System.IO.Compression.Tests.dll ========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ``` From the error message it looks like there are issues with some of the dependencies. How build.cmd manages to work is a mystery at least to me (unless it is not building the Test projects). > dnvm list > > ``` > Active Version Runtime Architecture Location Alias > ------ ------- ------- ------------ -------- ----- > 1.0.0-beta7 clr x86 C:\Users\Federico\.dnx\runtimes default > 1.0.0-beta7 coreclr x64 C:\Users\Federico\.dnx\runtimes > * 1.0.0-rc1-15779 coreclr x64 C:\Users\Federico\.dnx\runtimes > ``` Any idea on how to solve this? " +3624 area-System.Data Improve Managed SNI Performance With Async Delegate Caching +3625 area-System.Net Beta 8 blocker: IPAddress.ToString and .Parse fails on OS X with DNX "Example program: ``` csharp using System; using System.Net; namespace Test { public class Program { public void Main(string[] args) { System.Console.WriteLine(""Test!""); IPAddress.Loopback.ToString(); // Parse also causes the process to crash var ipAddress = IPAddress.Parse(""1.1.1.1""); Console.WriteLine(""IP address: {0}"", ipAddress); } } } ``` Stack Trace: ``` System.Net.Sockets.SocketException: Input/output error at System.Net.IPAddressParser.IPv4AddressToString(Byte[] numbers) at System.Net.IPAddress.ToString() at Test.Program.Main(String[] args) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Dnx.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args) at Microsoft.Dnx.ApplicationHost.Program.Main(String[] args) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Dnx.Host.Bootstrapper.RunAsync(List`1 args, IRuntimeEnvironment env, String appBase, FrameworkName targetFramework) at Microsoft.Dnx.Host.RuntimeBootstrapper.ExecuteAsync(String[] args, BootstrapperContext bootstrapperContext) at Microsoft.Dnx.Host.RuntimeBootstrapper.Execute(String[] args, BootstrapperContext bootstrapperContext) ``` There is no exception or stack trace from “IPAddress.Parse(""1.1.1.1"")”. The process just crashes. Use the latest DNX (`dnx-coreclr-darwin-x64.1.0.0-beta8-15794`) from `aspnetrelease` feed. There's a reference issue that we're fixing that you'll need to workaround. Just copy `runtime.unix.Microsoft.Win32.Primitives/4.0.1-beta-23326/lib/dotnet/Microsoft.Win32.Primitives.dll` over to `~/.dnx/runtimes/dnx-coreclr-darwin-x64.1.0.0-beta8-15794/bin/` cc @halter73 @Eilon @davidfowl @brennanconroy " +3629 area-System.Data Fix the System.Net.Sockets version on SqlClient We have changed the version of the System.Data.SqlClient to use System.Net.Sockets 4.0.10-beta-\* from 4.0.10.0 This was happening due to a runtime error while resolving 4.0.10.0 This needs to be investigated. https://github.com/dotnet/corefx/pull/3567 +3630 area-System.IO RenamedTests.FileSystemWatcher_Moved_NestedDirectoryRoot failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/4559/console ``` RenamedTests.FileSystemWatcher_Moved_NestedDirectoryRoot [FAIL] System.UnauthorizedAccessException : Access to the path '\\?\d:\j\workspace\dotnet_corefx_windows_release_prtest\bin\tests\Windows_NT.AnyCPU.Release\System.IO.FileSystem.Watcher.Tests\dnxcore50\FileSystemWatcher_Moved_NestedDirectoryRoot\test_root' is denied. Stack Trace: at System.IO.Win32FileSystem.RemoveDirectoryHelper(String fullPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) at System.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.IO.FileSystem.Watcher\tests\Utility\TemporaryTestDirectory.cs(32,0): at TemporaryTestDirectory.Dispose() d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.Renamed.cs(122,0): at RenamedTests.FileSystemWatcher_Moved_NestedDirectoryRoot() ``` +3633 area-System.Xml XSD Validation Support - Missing? As I [posted earlier on StackOverflow](http://stackoverflow.com/questions/32872684/how-do-i-validate-xml-against-xsd-separate-documents-in-dnx-core-5-0-asp-net?noredirect=1#comment53665404_32872684), I am attempting to port some older code to DNX core 5.0, but it seems that XSD validation support is missing from the library. Or if I am wrong, could someone please provide a sample or point me to the correct document that shows how to validate XML against XSD (separate documents). +3634 area-System.Drawing Which is the System.Drawing replaement? Hi, guys. I have a question... which way is to create images in .net core? +3635 area-System.Net Enable the SocketPerformance tests ``` System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync [FAIL] 04:31:37 Test execution is expected to be shorter than 10000 but was 27753 04:31:37 Expected: True 04:31:37 Actual: False 04:31:37 Stack Trace: 04:31:37 d:\j\workspace\dotnet_corefx_outerloop_windows_win10_debug\src\Common\tests\System.Net\Sockets\Performance\SocketPerformanceTests.cs(63,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(Int32 port, SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) 04:31:37 d:\j\workspace\dotnet_corefx_outerloop_windows_win10_debug\src\Common\tests\System.Net\Sockets\Performance\SocketPerformanceTests.cs(77,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) 04:31:37 d:\j\workspace\dotnet_corefx_outerloop_windows_win10_debug\src\System.Net.Sockets\tests\PerformanceTests\SocketPerformanceAsyncTests.cs(60,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync() ``` cc: @davidsh, @cipop, @pgavlin +3636 area-System.ComponentModel Any chance to integrate functionality from System.ComponentModel.Composition? "A lot of `System.Composition` code has been [merged recently](https://github.com/dotnet/corefx/pull/1851), and lines up with the MEF 2 code from codeplex. Is any of the code from `System.ComponentModel.Composition` likely to be integrated? I have an old codebase that I've been refactoring and splitting out into separate components, and for some scenarios, I've had to use `System.ComponentModel.Composition` instead of the `System.Composition` package available from Nuget. The main justification behind our switch was that the `CompositionContainer` supports `ComposeExportedValue(T exportedValue)` while the `CompositionHost` doesn't. Being able to explicitly export an _existing_ object instance can be useful when the full architecture isn't adjustable. While it's not exactly the purest of approaches, in some scenarios a little flexibility goes a long way. `System.Composition` [""has been optimized for static composition scenarios and provides faster compositions""](http://mef.codeplex.com/). There are some scenarios where the alternative structure is a better fit, if less streamlined. We've also considered making this project cross-platform, which makes its presence in the OSS .NET Core desirable for us. I bring this up because `System.ComponentModel` is [marked as ""done"" on the progress chart](https://github.com/dotnet/corefx-progress/blob/master/src-diff/README.md), but `System.ComponentModel.Composition` isn't listed at all. With the integration of `System.Composition`, I'm concerned that this is something that's not even being considered and it might end up ignored by default. This also brings up the concern of whether merging namespaces would be feasible. Having multiple namespaces around isn't exactly ideal from a usability perspective, but changing them would be a compatibility issue. It's also possible that there's some code duplication between the two, at least as far as the attributes go. Discarding the old namespace for us is feasible - we want it for the functionality, but we're not attached to the namespace and are open to recompiling. If I've somehow missed the introduction of equivalent functionality, please enlighten me. " +3638 area-System.Net Fixed Renegotiate & sslV3 issue in System.Net.Security xplat. Made op… 1. Fixed xplat Renegotiate in both code path, as server & as client. 2. Fixed SSLv3 Decrypt. Now we understand Error_Want_Read & handle accordingly. 3. Various SSL method IntPtr are now being referenced once statically. +3641 area-System.Net UdpClientTest.BeginSend_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4595/console ``` System.Net.Sockets.Tests.UdpClientTest.BeginSend_Success [FAIL] System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3217,0): at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3162,0): at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\UDPClient.cs(598,0): at System.Net.Sockets.UdpClient.BeginSend(Byte[] datagram, Int32 bytes, IPEndPoint endPoint, AsyncCallback requestCallback, Object state) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\tests\FunctionalTests\UdpClientTest.cs(59,0): at System.Net.Sockets.Tests.UdpClientTest.BeginSend_Success() ``` cc: @cipop, @pgavlin, @davidsh +3642 area-System.Data Move strings to .Resx for managed SNi in Sql Client if needed Refer PR https://github.com/dotnet/corefx/pull/3567 Move the strings in Managed SNI to .resx if needed +3644 area-System.Net Remove dead code in S.N.Sockets.Socket. Just what it says on the tin. +3645 area-System.Net Add argument validation tests for S.N.Sockets. These tests cover the validation of input arguments for all public methods on the Socket class. +3646 area-System.Net UriBuilder.Query property setter is not idempotent "The `UriBuilder.Query` property setter prepends the supplied value with a `?` character, even if the supplied value already starts with `?`. https://github.com/dotnet/corefx/blob/41e203011152581a6c65bb81ac44ec037140c1bb/src/System.Private.Uri/src/System/UriBuilder.cs#L277 This means that code calling the `Query` setter has to check to ensure the value it's passing doesn't already have the question mark even when hoping to simply append to the end of the query. Here's example code that suffers from the issues this surfaces: ``` csharp var uri = new UriBuilder(""http://localhost/page?param1=foo""); if (someOption) { uri.Query += ""&someOption=true""; } ``` Expected value of uri.Query: `?param1=foo&someOption=true` Actual value of uri.Query: `??param1=foo&someOption=true` " +3647 area-System.Net Make UriBuilder.Query setter idempotent Fixes #3646 in a way that is hopefully determined to be backwards compatible. +3648 area-System.Net Add Tcp{Client,Listener} and UdpClient SendReceive tests. This exercises NetworkStream as well as the aforementioned types. +3654 area-System.Net Editing Socket References Some constructors that are doing complex operations (like interop or trying to connect over the network) are removed. APM methods are removed and replaced by TPL equivalent methods. +3655 area-System.Net Editing Socket References Some constructors that are doing time consuming operations for constructors (like interop or trying to connect over the network) are removed. APM methods are removed and replaced by TPL equivalent methods. +3656 area-Infrastructure Instructions for using custom CoreFX with CLI I have made some changes to the CoreFX for SqlClient and I want to test those changes with an application which is executed using DNX. How do I achieve this? I have found some Windows instructions for creating custom DNX by a custom CoreCLR build at https://github.com/dotnet/coreclr/blob/master/Documentation/building/custom-dnx-instructions.md I couldn't find anything about CoreFX. I tried to replace the dlls in the DNX runtime folder with the CoreFX build, but the application fails to run silently without any console output. +3660 area-System.Net Update test namespaces in System.Net.Requests Update test namespaces in System.Net.Requests per #2898. Clean up `using`s. +3661 area-System.IO Word spelling problem with “occurred” https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=occured +3664 area-System.Net Disable socket perf tests These are currently in outer loop, but they're sporadically failing due to lack of appropriate infrastructure to accurately run and measure them. cc: @pgavlin, @CIPop, @davidsh +3667 area-System.Security System.Security.Claims.Claim..ctor parameter checks are too restrictive in CoreCLR There is a behaviour difference in `System.Security.Claims.Claim...ctor` that got introduced in CoreCLR but this check does not exist in Desktop. As such, there are scenarios such as creating an anonymous identity (i.e., GenericIdentity with no subject name) that now breaks in CoreCLR. Sample Repro: ``` public static void Main() { System.Security.Principal.GenericIdentity identity = new System.Security.Principal.GenericIdentity(string.Empty); } ``` The difference is a change in the way the System.Security.Claims.Claim constructor works - the empty string (valid value in desktop) is now treated the same as null (an invalid value), and therefore the call fails with the exception below ``` System.ArgumentNullException : Value cannot be null. Parameter name: value Stack Trace: at System.Security.Claims.Claim..ctor(String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue) at System.Security.Principal.GenericIdentity.AddNameClaim() ``` This was discovered while testing basic WCF net.tcp scenarios and is considered a major blocker for WCF. dotnet/wcf#387 tracks fixing this issue in the WCF repo cc: @joshfree +3669 area-System.IO GZipStream & DeflateStream calling Flush after write or read is not equivalent to calling Dispose. `.Dispose()` will purge buffers and finish writing data while `.Flush()` will not force that to happen. While in other Streams the `.Flush()` call will ensure that all the data is written, it is not the case for `GZipStream` and `DefrateStream`. For example if we modify `RoundtripCompressDecompress` in the `System.IO.Compression.Tests` project in the following way, all tests using it will fail. ``` csharp private async Task RoundtripCompressDecompress(bool useAsync, bool useGzip, int chunkSize, int totalSize, CompressionLevel level) { byte[] data = new byte[totalSize]; new Random(42).NextBytes(data); var compressed = new MemoryStream(); var compressor = useGzip ? (Stream)new GZipStream(compressed, level, true) : new DeflateStream(compressed, level, true); { for (int i = 0; i < data.Length; i += chunkSize) // not using CopyTo{Async} due to optimizations in MemoryStream's implementation that avoid what we're trying to test { switch (useAsync) { case true: await compressor.WriteAsync(data, i, chunkSize); break; case false: compressor.Write(data, i, chunkSize); break; } } } compressor.Flush(); compressed.Position = 0; var decompressed = new MemoryStream(); var decompressor = useGzip ? (Stream)new GZipStream(compressed, CompressionMode.Decompress, true) : new DeflateStream(compressed, CompressionMode.Decompress, true); { if (useAsync) decompressor.CopyTo(decompressed, chunkSize); else await decompressor.CopyToAsync(decompressed, chunkSize, CancellationToken.None); } decompressor.Flush(); Assert.Equal(data, decompressed.ToArray()); compressor.Dispose(); decompressor.Dispose(); } ``` That means that `GZipStream` & `DefrateStream` will not finish writing until they are effectively disposed (which could take some time if `.Dispose()` is not called immediately) and may also fail if chained. This is particularly relevant for https://github.com/dotnet/corefx/issues/1991 (cc @stephentoub) +3671 area-System.Net Fix async abort behavior for *nix accept(). Aborted accept attempts are currently returning an accepted file descriptor of 0 instead of the proper -1. This change corrects this behavior. +3672 area-System.Runtime Perf: String.StartsWith Linux regression from 1x speed to 100x speed "The perf test and all applicable helper methods: ``` [Benchmark] [MemberData(""TestStringSizes"")] public void StartsWith(int size) { PerfUtils utils = new PerfUtils(); string testString = utils.CreateString(size); string subString = testString.Substring(0, testString.Length / 4); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 10000; i++) testString.StartsWith(subString); } public static IEnumerable TestStringSizes() { yield return new object[] { 10 }; yield return new object[] { 100 }; yield return new object[] { 1000 }; } /// /// Helper method to create a string containing a number of random /// characters equal to the specified length /// public string CreateString(int length) { byte[] bytes = new byte[length]; rand.NextBytes(bytes); return System.Convert.ToBase64String(bytes); } ``` Linux results after regression (today, 10/6/2015) ``` ``` Windows results: ``` ``` Linux results before Regression: (Unfortunately these are from before I was recording dates with my results, so I'm not sure when they're from or even how valid they are - the important thing is moreso the current Linux results vs Windows) ``` ``` I verified the results from today with a Console App and received the same results as with the xunit perf runner. My first guess is that this has something to do with https://github.com/dotnet/coreclr/pull/1632. " +3673 area-System.Net WinHttpHandler client SSL certificate fixes and tests "Fixed a couple of bugs discovered in WinHttpHandler where it was not sending out client SSL certificates. Changed the final parameter to the X509Certificate2Collection.Find() method to false. I had originally set this parameter to true. The parameter tells the .Find() API to only select ""valid"" certificates from the collection. The problem is that ""valid"" also means ""trusted by the client"". But a lot of client SSL certificates are not trusted by the client. They are only trusted by the server since many servers issue client certificates based on a different trust root. Added more tests for client SSL certificates. " +3674 area-System.Net WebSocket concurrent Send/ReceiveAsync semantics unclear As observed by @mkosieradzki different WebSocket implementations have different behaviour when it comes to concurrent Send/ReceiveAsync operations: see https://github.com/aspnet/WebSockets/issues/42 I am creating a matching issue here since the semantics should be specified at the WebSocket level, so a user of a 'WebSocket' doesn't need to know what library provided the implementation. \cc @davidfowl @Tratcher +3680 area-System.Net Add more tests for System.Net.Http library "Ported more HTTP related tests. These tests focus mostly on POST scenarios mixed with authentication, pre-authentication, and the ""rewind-ability"" of content if it needs to be re-POST'd due to AUTH challeges by the server. Added a new HttpTestServers2 class to Common/tests/System/Net. This is a point-in-time thing as we improve the test infrastructure capability. In particular, we are moving away from the use of the ""httpbin.org"" server. Our new networking test server that we are bringing up has more features than httpbin.org. It can support all the main HTTP verbs when doing ""echo"" of request headers. It includes a ""Content-MD5"" HTTP response header. This contains a hash of the response body. This makes it easier to validate the returned payloads. The ""httpbin.org"" server also has a bug where it does not properly echo chunked upload headers which was causing issues when trying to port these tests. I did not change other networking tests still using ""httpbin.org"" and the Common HttpTestServers class. I will be doing that later as we finalize the test infrastructure. " +3682 area-System.Net ConnectAsyncV4IPEndPointToDualHost_Succes failed in CI on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3091/console ``` System.Net.Sockets.Tests.DualMode.ConnectAsyncV4IPEndPointToDualHost_Success [FAIL] 16:16:16 System.Net.Sockets.SocketException : Unknown error 10054 16:16:16 Stack Trace: 16:16:16 at System.Net.Sockets.Tests.DualMode.DualModeConnectAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer) 16:16:16 at System.Net.Sockets.Tests.DualMode.ConnectAsyncV4IPEndPointToDualHost_Success() ``` cc: @cipop, @pgavlin, @davidsh +3688 area-System.Data Better API for ADO.NET command batching "ADO.NET currently supports batching several statements in one command by packing them into a single string as follows: ``` c# cmd.CommandText = ""UPDATE message SET text = $text1 WHERE id = 1;"" + ""UPDATE message SET text = $text2 WHERE id = 2""; ``` While workable, it's a problematic API. The PostgreSQL protocol, for example, needs to send each single SQL statement as a separate protocol message, forcing Npgsql to split CommandText by semicolon at the client side, a pretty complex task (need to understand when the semicolon is quoted, etc.). It would be much better to provide a list-based API, where the user provides, say, an array of strings. A specific provider can still choose to join by semicolon if needed, but this should be done at the provider level rather than by the user. For backwards compatibility, the CommandText property would still support the legacy semicolon batching mode. A boolean LegacyBatchingMode connection string parameter, true by default, could be turned off to disable it (thereby removing the client-side SQL parsing in Npgsql, etc.). " +3689 area-System.Threading RunThreadLocalTest8_Values failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/4721/console ``` System.Threading.Tests.ThreadLocalTests.RunThreadLocalTest8_Values [FAIL] RunThreadLocalTest8_Values: Expected values to contain both previous values and 1000 new values Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Threading\tests\ThreadLocalTests.cs(259,0): at System.Threading.Tests.ThreadLocalTests.RunThreadLocalTest8_Values() ``` +3690 area-System.Security Consider what a LocalMachine\My X509Store might be on Unix Largely there's a permissions problem. - File writes, without reaching into the PAL directly, are done as rwx------ - Windows has the flexible administrator concept, Unix has root. - There's sometimes the group wheel, but that's not universal. - Windows has different permissions for reading private keys and public keys There's a possibility of having someone create /etc/dotnet/corefx/cryptography/x509stores, setting the group to whatever they want, giving the group write permission, and then we could start making use of that... but it's not as obvious as how to do it on Windows. +3691 area-Infrastructure project.lock.json files are all out of date as of yesterday afternoon. - git checkout master (no local changes) - build.cmd - git status - Ponder the sea of red as the build process made local changes to every project.lock.json file in the project. I assume fixing this is just a matter of checking in those changes, but since I don't know what caused it, I'm not blindly sticking my head out either. +3693 area-System.Net PostNonRewindableContentUsingAuth_NoPreAuthenticate_ThrowsInvalidOperationException fails on Linux System.Net.Http.Functional.Tests: Reference PR: #3680 Reference build: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/4926/ PostNonRewindableContentUsingAuth_NoPreAuthenticate_ThrowsInvalidOperationException looks like it's failing because it's expecting an InvalidOperationException but is getting an HttpRequestException. The InvalidOperationException should not be wrapped within a HttpRequestException by CurlHandler. See WinHttpHandler. It only wraps WinHttpException and IOException. WinHttpHandler also matches .NET Desktop. +3695 area-System.Net PostNonRewindableContentUsingAuth_PreAuthenticate_Success fails on Linux "System.Net.Http.Functional.Tests: Reference PR: #3680 Reference build: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/4926/ PostNonRewindableContentUsingAuth_PreAuthenticate_Success is failing with a CurlException ""Send failed since rewinding of the data stream failed"". This is failing because it is trying to rewind a non-rewindable stream. BUT it shouldn't be attempting that. It shouldn't need to rewind the stream because the POST should succeed right away. This tells me that the .PreAuthenticate feature in the Linux version of the Handler (CurlHandler) is broken. The test is issuing a HEAD request first which should ""warm up"" the authentication for the .PreAuthenticate=true. But it looks like it is broken. Also, the CurlHandler should NOT be rewinding the stream on its own. Only the HttpContent class do that as part of the contract for SerializeToStreamAsync(). See StreamContent.cs in the Http Library. I see that the Linux code might be calling Seek to rewind the content to re-POST it. That itself shouldn't happen because only the StreamContent class is responsible for rewinding itself. The handlers are NOT supposed to rewind the content on their own. I suspect that the CurlHandler is doing this because one of the tests is failing with a CurlHandler specific message: ""Send failed since rewinding of the data stream failed"". That code probably needs to change in CurlHandler. There shouldn't be a separate string resource for this error since CurlHandler shouldn't be rewinding content. " +3696 area-System.Net Added exception messages to *.resx file. using Debug.Fail wherever ap… 1. Added exception messages to *.resx. Using the SR now. 2. using Debug.Fail/Assert wherever deemed fit. 3. Fixed GetException() method. +3697 area-System.Net Add retry pattern for tests that rely on TCP/UDP > As a design change, we should extract a common config for Sockets tests and consolidate all configuration parameters there. We should include a retry pattern/internal API for tests that rely on TCP stack defaults (in case we see those fail). See https://github.com/dotnet/corefx/issues/3504 for more details. +3698 area-System.Globalization "[Linux] Incorrect output for ""g"" custom `DateTimeOffset` format specifier" "The following statement behaves differently on Windows and Linux when `CultureInfo.CurrentCulture` is `new Culture(""en-GB"")`. See [full test application](https://github.com/dougbu/CultureInfo) for more context. ``` c# Console.WriteLine(""Formatted now '{0:dddd, yyyy/MM/dd/ g}'."", DateTimeOffset.Now); ``` On Windows using either `dnx451` or `dnxcore50` and on Linux using `dnx451` (i.e. Mono), the output is: ``` Formatted now 'Wednesday, 2015/10/07/ A.D.'. ``` However on Linux using `dnxcore50`: ``` Formatted now 'Wednesday, 2015/10/07/ AD'. ``` Note periods are missing in Linux / `dnxcore50` output. Not sure if other custom (or standard) format specifiers behave differently on Linux in some locales. --- OS: Ubuntu 14.04.3 LTS DNX: 1.0.0-rc1-15837 System.Globalization/4.0.11-beta-23405 System.Globalization.Extensions/4.0.1-beta-23405 System.Runtime/4.0.21-beta-23405 " +3699 area-System.Net PostRewindableContentUsingAuth_NoPreAuthenticate_Success is failing with a NotImplementedException on Linux "System.Net.Http.Functional.Tests: Reference PR: #3680 Reference build: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/4926/ PostRewindableContentUsingAuth_NoPreAuthenticate_Success is failing with a NotImplementedException. See original discuss on PR #3680. But CurlHandler should not be using `Seek` to rewind the HttpContent request body. Instead, it should use the HttpContent.CopyToAsync() API to have the content serialize itself. @stephentoub (GitHub seems to hiding your comment so I'm re-quoting it here) > Thanks for the explanation, David. > Yes, libcurl provides a CURLOPT_SEEKFUNC callback. According to the docs, ""this function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when data has already been sent to the server and needs to be sent again. This may happen when doing a HTTP PUT or POST with a multi-pass authentication method, or when an existing HTTP connection is reused too late and the server closes the connection."" We implement that callback by checking if the Stream's CanSeek is true, and if it is, calling Seek, otherwise we inform libcurl that the Stream isn't seekable: > https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs#L851-L859 > What would you recommend we do here instead? The CurlHandler is not supposed to be rewinding the HttpRequestMessage.Content streams. It should be simply using the HttpContent contract APIs to tell the HttpContent to ""serialize"" itself. The HttpContent object is responsible for determining how to do that. The CurlHandler should not be directly retrieving a stream from the HttpContent. Instead the HttpContent is told to serialize itself to a some ""Http Request Stream"". And it does that via the its `CopyToAsync` method. See code in WinHttpHandler for example: ``` c# // Send request body if present. if (state.RequestMessage.Content != null) { using (var requestStream = new WinHttpRequestStream(requestHandle, chunkedModeForSend)) { await state.RequestMessage.Content.CopyToAsync( requestStream, state.TransportContext).ConfigureAwait(false); requestStream.EndUpload(); } } ``` " +3700 area-System.Net Increasing timeout values for sockets tests. Increasing timeout values for sockets tests and attempting to fix protocol issue in UdpClientTests. #3504, #3641 @pgavlin @stephentoub @davidsh PTAL +3705 area-System.ComponentModel TypeDescriptor.GetConverter, what is the expected result if there is no converter? in https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.TypeConverter/tests/TypeDescriptorTests.cs I notice: `Assert.NotNull(converter);` on line 17. Based on my limited exploratory testing in .NET 4.5 I can't seem to get this method to ever return null. It always seems to at least return an instance of `System.ComponentModel.TypeConverter` (if a better converter cannot be found). Is this test over specified (and somewhere something is missing to ensure a contract on the method) or is there some way to make that method return null (a missing test case)? +3707 area-System.Net Bring x-plat work for System.Net.NetworkInformation into dev branch "I've merged all of my existing work against corefx/master, and moved into a dev/ni-xplat branch. Changes to the shared code were mainly limited to the project file (splitting things into separate sections), and introducing a few ""Pal"" files, which contain platform-specific redirections for the various global accessors we expose in this library. # Shimming I have shim'd out the implementation of interface address discovery and enumeration (getifaddrs), and have built on top of that in LinuxNetworkInterface and OsxNetworkInterface. I intend to introduce more shim'd methods for OSX's statistics querying, as I believe it can be used on BSD systems as well (sysctl). --- As of right now, most of the following types are implemented. Some may have some members which are not implemented, but the majority are unless I've noted otherwise. # Linux NetworkInterface - IPInterfaceStatistics - Address collections - NOTE: Most of the properties on these are not supported - IPInterfaceProperties IPGlobalProperties - All of the protocol statistics - DomainName, HostName, etc (instance properties) - Address collections # OSX NetworkInterface - Only enumerating interfaces and addresses (shared code with Linux) # Unimplemented NetworkChange is not at all implemented yet. I do not know of a good way to hook a notification for this yet. Everything is still stubbed out on OSX currently. I have some idea how to implement the majority of the statistics queries, which should be portable as well. " +3708 area-System.Diagnostics Debug.Assert(false) does not behave as expected compared to full CLR Redirecting issue https://github.com/aspnet/dnx/issues/2778 This is what we see in full CLR: ![image](https://cloud.githubusercontent.com/assets/924164/10353329/61ebdb1e-6d0a-11e5-8719-efbc0f723fb6.png) CoreCLR does not give the user the option to ignore the problem or to attach a debugger to the process. +3709 area-System.Net Beta 8 blocker: System.Net.Sockets nuget package authoring needs to be updated to support xplat We're not producing runtime packages for System.Net.Sockets. This means that whatever version you restore via DNX will be windows specific. /cc @chcosta @ericstj @saurabh500 +3710 area-System.Net Implement NetworkStream.ReadAsync/WriteAsync "NetworkStream currently implements its async functionality via the APM Begin/EndRead/Write methods. In the full Framework, the base Stream exposes these methods as well, as virtual, and NetworkStream's override the base ones. Then the base Stream's ReadAsync/WriteAsync implementations use these for their implementation, which means NetworkStream gets at least a basic async ReadAsync/WriteAsync implementation ""for free"". In corefx, however, Stream doesn't expose the Begin/End methods, which means NetworkStream's Begin/End methods don't override them, which means NetworkStream's ReadAsync/WriteAsync methods are currently just using the base implementation that queues a work item to call the synchronous Read/Write methods. That's far from ideal for a stream focused on I/O with high latency. This commit just adds basic implementations of NetworkStream.ReadAsync/WriteAsync that use TPL's FromAsync methods to delegate to the Begin/End methods, very similar to how the base class would have. There are currently no unit tests for NetworkStreamin the repo, so I haven't added any yet for these new methods. However, there is an existing functional test that does use ReadAsync/WriteAsync, so they're getting at least some coverage. cc: @cipop, @davidsh, @pgavlin " +3711 area-System.Net Beta 8 blocker: System.Net.Security nuget package authoring needs to be updated to support xplat Same issue as https://github.com/dotnet/corefx/issues/3709 only for System.Net.Security.dll /cc @bartonjs @chcosta @ericstj +3715 area-System.Net Pending features/comments in xplat NegotiateStream 1.1 Get the correct library to use on OSX and update Interop.Libraries.cs +3716 area-Meta Inconsistent versioning When you build the CoreFX assemblies and you put them altogether, you realize that there are some inconsistent version number. For example System.Console.dll requires System.Runtime version 4.0.20 but System.Runtime is version 4.0.21. Ideally it would be nice if all the generated assemblies were consistent with respect to the version. +3717 area-System.Net Investigate feasibility of supporting NTLM protocol on non-Windows platforms Ubuntu distribution ships with a libheimntlm. Need to see if something similar is available for OSX as well. There may be other pieces needed to make NTLM work meaningfully on non-Windows (maybe winbind etc.) +3718 area-System.Net Investigate feasibility of supporting NegotiateStream channel bindings on non-Windows platforms The gss_init_sec_context and gss_accept_sec_context APIs take channel binding as input. This support needs to be understood. This would be useful for NegotiateStream.Authenticate\* APIs +3720 area-System.Net Remove unnecessary scheme check in CurlHandler CurlHandler is explicitly checking to ensure that the request URI scheme is either http or https. HttpClient already does this check before getting to this point, WinHttpHandler doesn't do the duplicative check, and even if a bad scheme sneaks in, our subsequent usage of libcurl will enforce that only http/htps are used. Removing the check. Fixes #3322 cc: @kapilash +3722 area-System.Net Remove unnecessary TODO in CurlHandler This is handled by HttpClient. Fixes #3268 cc: @kapilash +3724 area-System.Net Renable some HttpWebResponse tests Modify tests checking for presence/absence of 'Content-Type' response headers. Switch to using the new HttpTestServers2 class which supports these kind of endpoints. Simplify the tests to be [Fact] and not [Theory]. These tests don't require to be run against both HTTP and HTTPS servers. I will be making these kinds of changes further in order to streamline the number of tests running in CI. This PR also fixes #2385. +3725 area-System.Net HttpRequestMessage multiple-send checking should be done in HttpMessageInvoker From https://github.com/dotnet/corefx/issues/3268#issuecomment-146564360 > it seems that we made a mistake when we did this. We should actually be checking for this in the HttpMessageInvoker base class SendAsync (which is public). Most people just use HttpClient to invoke the handlers. But simple scenarios can use the HttpMessageInvoker as well. That class was created as way to invoke the handler's SendAsync() method without a lot of overhead of HttpClient. The actual handler SendAsync() method is protected and can't be invoked directly. But HttpMessageInvoker is able to call that method being the handler's method is actually marked protected internal and not just protected. +3726 area-System.Net System.Net.Sockets tests will behave differently when running in an elevated (admin) context ``` Discovering: System.Net.Sockets.Tests (TaskId:239) Discovered: System.Net.Sockets.Tests (TaskId:239) Starting: System.Net.Sockets.Tests (TaskId:239) System.Net.Sockets.Tests.CreateSocket.Ctor_Failure(addressFamily: InterNetwork, socketType: Raw, protocolType: Tcp) [FAIL] (TaskId:239) Assert.Throws() Failure (TaskId:239) Expected: typeof(System.Net.Sockets.SocketException) (TaskId:239) Actual: (No exception was thrown) (TaskId:239) Stack Trace: (TaskId:239) D:\git\corefx\packages\Microsoft.DotNet ``` I'm hitting this failure consistently on my local machine any ideas of what is happening? +3727 area-System.Net Add more HTTP tests Ported some missing tests to GitHub. Cleaned up some of the existing tests. +3728 area-System.Net Merge changes from TFS +3729 area-System.Net WinHttpHandler MaxConnectionsPerServer default value Currently: ``` C# Assert.Equal(Int32.MaxValue, handler.MaxConnectionsPerServer); ``` Opening this issue to discuss if this is the correct behavior given the RFC recommendation of a max of 2 connections/server and browser current settings of about 6-10 connections/server. Throwing in a few articles about this: http://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/ My proposal is to switch this to a smaller number, maybe something that's similar to what most modern browsers do today. +3731 area-System.Net Add test to verify default values for HttpClientHandler "Ported this test to GitHub. Note that the change in default values between Desktop and CoreFx for two of the properties is an ""intentional, improving, change"". " +3732 area-System.Net Merge changes from TFS +3735 area-System.Net Shim socket addresses. The socket address shim adds native accessors for the various bits that managed code needs to access, namely: - Address families - Port numbers - IP addresses This change also updates the name resolution shim to use an iterator-based design for walking host entries. This interface trades chattiness (a P/Invoke per IP address) for memory footprint (various native and managed allocations per IP address). +3736 area-System.Net Read the allowed certificate issuers list on Unix SslStream The Unix PAL version of GetRequestCertificateAuthorities. Development: - Split out SafeInteriorHandle to facilitate creating two more SafeHandle types following that pattern. - Applied the new shim style for the two macro-functions that were needed for reading STACK_OF(X509_NAME) - Created two new internal SafeHandle types. While in the past these were in isolated files in Common\src\Microsoft\Win32\SafeHandles, I wanted to try something new: keeping them in the file with their create/free/primary-usage. Testing: I couldn't figure out how to cause the flow that results in the PAL method getting called, so I inserted an artificial call to it in CompleteHandshake, and saw that it was decoding as expected. This is yet another partial fix for issue #3362 (GetRequestCertificateAuthorities - populate issuers. (CertModule.cs)) cc: @stephentoub @vijaykota @rajansingh10 @shrutigarg @CIPop +3737 area-System.Linq Expression interpreter - Missing support for OnesComplement nodes Found when porting an exhaustive test suite for cross-checking interpretation and compilation. I'll have a look at adding the support. +3739 area-Infrastructure Get 8 build errors on Linux Get 8 errors when building latest corefx on ubuntu with dnx-coreclr-linux-x64.1.0.0-rc1-15838. ``` CSC : error CS7027: Error signing output with public key from file '/data/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104/lib/ECMA.snk' -- mscoree.dll [/data/git/corefx/src/System.IO.Compression.ZipFile/ref/System.IO.Compression.ZipFile.csproj] CSC : error CS7033: Delay signing was specified and requires a public key, but no public key was specified [/data/git/corefx/src/System.IO.Compression.ZipFile/ref/System.IO.Compression.ZipFile.csproj] CSC : error CS7027: Error signing output with public key from file '/data/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104/lib/ECMA.snk' -- mscoree.dll [/data/git/corefx/src/System.IO.Compression/ref/System.IO.Compression.csproj] CSC : error CS7033: Delay signing was specified and requires a public key, but no public key was specified [/data/git/corefx/src/System.IO.Compression/ref/System.IO.Compression.csproj] CSC : error CS7027: Error signing output with public key from file '/data/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104/lib/ECMA.snk' -- mscoree.dll [/data/git/corefx/src/System.Reflection.Context/ref/System.Reflection.Context.csproj] CSC : error CS7033: Delay signing was specified and requires a public key, but no public key was specified [/data/git/corefx/src/System.Reflection.Context/ref/System.Reflection.Context.csproj] CSC : error CS7027: Error signing output with public key from file '/data/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104/lib/ECMA.snk' -- mscoree.dll [/data/git/corefx/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/System.Runtime.WindowsRuntime.UI.Xaml.csproj] CSC : error CS7033: Delay signing was specified and requires a public key, but no public key was specified [/data/git/corefx/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/System.Runtime.WindowsRuntime.UI.Xaml.csproj] ``` +3740 area-System.Threading Can we lift the name length limitation on semaphores? "Now that we have more-or-less gotten rid of the path length limitation (#645), could we also get rid of the semaphore name length restriction? The documentation for [CreateSemaphore](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682438%28v=vs.85%29.aspx) claims that the name is limited to MAX_PATH characters, however testing this shows that the documentation is wrong (at least on Windows 10): ``` using Microsoft.Win32.SafeHandles; using System; using System.ComponentModel; using System.Runtime.InteropServices; namespace SemaphoreTest { class Program { [DllImport(""kernel32.dll"", BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = true)] private static extern SafeWaitHandle CreateSemaphore(IntPtr lpSecurityAttributes, int initialCount, int maximumCount, string name); [DllImport(""kernel32.dll"", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool CloseHandle(SafeHandle hObject); private static void TestCreateSemaphore(string longName) { var sem = CreateSemaphore(IntPtr.Zero, 0, 1, longName); if (sem.IsInvalid) { Console.WriteLine(""Failed: "" + new Win32Exception(Marshal.GetLastWin32Error())); } else { Console.WriteLine(""OK: "" + sem.DangerousGetHandle()); CloseHandle(sem); } } static void Main(string[] args) { var longName = ""!!!!!!!!!!012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"" + // 100 ""0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"" + // 200 ""012345678901234567890123456789012345678901234567890123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN""; // 260,300 TestCreateSemaphore(longName); } } } ``` Running this prints OK followed by the handle. Setting a breakpoint before CloseHandle and inspecting the handles shows that the semaphore is indeed created with the full name: ![Process Hacker showing that the path isn't truncated](http://i.imgur.com/MLHaKWQ.png) Edit: It would be a good idea if I posted the same code that I ran when I took the screenshot :) " +3741 area-System.Numerics Change System.Numerics.Vector's unsafe constructors' access level to public. Currently Vector's constructors that accept a pointer are marked as private, e.g: private unsafe Vector(void\* dataPointer, int offset) Please consider making them public. Because at some point we might have only the pointers themselves in our own code but rather than arrays. Recreating an array from these pointers is costly. So allow us to use this constructor directly as it is. +3742 area-System.Security Fixed second write issue, introduced by PR#3675 1. PR #3675 broke the scenario where there will be successive read/write calls on stream (>1). 2. older code in finally was like, where asyncRequest will always be null. finally { if (asyncRequest == null || failed) { _NestedWrite = 0; } } 3. After removing dead code i.e. asyncRequest in PR #3675 ,the flow will never set _NestedWrite==0 in positive scenario, causing failure when read/write is called next time by the user. 4. Added multi write testcase as well for this. +3744 area-System.Net ConnectV4MappedIPEndPointToV4Host_Success failed in CI on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3196/console ``` System.Net.Sockets.Tests.DualMode.ConnectV4MappedIPEndPointToV4Host_Success [FAIL] 16:14:57 System.Net.Sockets.SocketException : Unknown error 10054 16:14:57 Stack Trace: 16:14:57 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 16:14:57 at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 16:14:57 at System.Net.Sockets.Tests.DualMode.DualModeConnect_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer) 16:14:57 at System.Net.Sockets.Tests.DualMode.ConnectV4MappedIPEndPointToV4Host_Success() 16:14:57 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 16:14:57 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 16:14:57 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ``` +3748 area-System.Net ConnectAsyncV6IPEndPointToDualHost_Success failed in CI on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3215/console ``` 10:50:47 System.Net.Sockets.Tests.DualMode.ConnectAsyncV6IPEndPointToDualHost_Success [FAIL] 10:50:47 System.Net.Sockets.SocketException : Unknown error 10054 10:50:47 Stack Trace: 10:50:47 at System.Net.Sockets.Tests.DualMode.DualModeConnectAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer) 10:50:47 at System.Net.Sockets.Tests.DualMode.ConnectAsyncV6IPEndPointToDualHost_Success() 10:50:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 10:50:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 10:50:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ``` +3749 area-System.Net GetAsync_ResponseContentAfterClientAndHandlerDispose_Success failed in CI on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3215/console ``` 10:54:28 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ResponseContentAfterClientAndHandlerDispose_Success [FAIL] 10:54:28 Assert.True() Failure 10:54:28 Expected: True 10:54:28 Actual: False 10:54:28 Stack Trace: 10:54:28 Finished: System.Net.Http.Unit.Tests 10:54:28 10:54:28 === TEST EXECUTION SUMMARY === 10:54:28 System.Net.Http.Unit.Tests Total: 783, Errors: 0, Failed: 0, Skipped: 0, Time: 2.503s 10:54:28 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__0.MoveNext() 10:54:28 --- End of stack trace from previous location where exception was thrown --- 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 10:54:28 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__14.MoveNext() 10:54:28 --- End of stack trace from previous location where exception was thrown --- 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 10:54:28 --- End of stack trace from previous location where exception was thrown --- 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 10:54:28 --- End of stack trace from previous location where exception was thrown --- 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 10:54:28 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 10:54:44 Finished: System.Net.Http.Functional.Tests 10:54:44 10:54:44 === TEST EXECUTION SUMMARY === 10:54:44 System.Net.Http.Functional.Tests Total: 254, Errors: 0, Failed: 1, Skipped: 0, Time: 19.002s ``` +3750 area-System.Linq Expression interpreter - NegateChecked doesn't throw OverflowException Repro case: `Expression.NegateChecked(Expression.Constant(short.MinValue))` Issue seems to be that the checked(...) expression does not incorporate the conversion back after performing the negation. I'll have a look at fixing it. +3752 area-System.Net Add more WinHttpHandler client certificate tests Add a fake X509Store to the unit tests to simulate a real per-user certificate store on the machine. Add tests related to WinHttpHandler ClientCertificateOption.Automatic property setting. +3753 area-System.Diagnostics Switch OS X process information retrieval over to use sysctl Currently, OS X uses the platform-specific `proc_*` calls to retrieve process and thread information. By moving these calls over to use `sysctl`, we can support many more platforms (such as FreeBSD). +3755 area-System.Net Re-enable HttpClient encoding tests on Unix cc: @davidsh, @kapilash +3758 area-System.Linq Expression interpreter - Some issues with Increment and Decrement Three issues found with the interpreter code when cross-checking compiler and interpreter for Increment and Decrement nodes: - [De|In]crement(T) != T for T = UInt16 and UInt32 - Missing implementation for UInt64 - Nullable support is lacking I'll have a look. +3760 area-System.Data SqlClient for Windows: Native SNI depends on MSVCR110.dll Using SqlClient can cause a DllNotFoundException on sni.dll. This has been reported a few times by customers trying to use SqlClient on coreclr-x64/x86 on Windows (see aspnet/Home#904 for detailed symptoms). One of the possible causes is that you may need the Microsoft Visual C++ 2012 Redistributable installed to get SqlClient to work. Beta8 has not solved the problem, e.g. `link /dump /imports sni.dll` still shows MSVCR110.dll in the list of dependencies. From an email thread with @ericstj it seems that it should use msvcrt.dll instead. +3765 area-System.Net Switched Sockets perf tests to Benchmarks "Rough draft of what the sockets tests will look switched to use Benchmarks for the perf tests. Ideally there would only be one tests csproj as in this PR and tests would function as they do in other projects. These perf tests run on Windows and give reasonable results, but on Linux they throw an error that ""ws2_32.dll"" is missing. @pgavlin @stephentoub " +3766 area-Infrastructure Corefx build fails in dnu restore on windows "I am attempting to follow the instructions at: https://github.com/dotnet/coreclr/blob/master/Documentation/building/linux-instructions.md While building the corefx portion of the code in a windows enlistment I see this failure output: ``` C:\Users\noahfalk\Documents\GitHub\corefx [master]> .\build.cmd /p:OSGroup=Linux /p:SkipTests=true Restoring all packages... EXEC : warning : FindPackagesById: Microsoft.Win32.Registry [C:\Users\noahfalk\Documents\GitHub\corefx\build.proj] C:\Users\noahfalk\Documents\GitHub\corefx\build.proj(24,5): error MSB3073: The command """"C:\Users\noahfalk\Documents\Gi tHub\corefx\packages//dnx-coreclr-win-x86.1.0.0-beta7/\bin\dnu.cmd"" restore --packages ""C:\Users\noahfalk\Documents\Git Hub\corefx\packages"" --source https://www.myget.org/F/dotnet-core/ --source https://www.myget.org/F/dotnet-coreclr/ --s ource https://www.myget.org/F/dotnet-corefxtestdata/ --source https://www.myget.org/F/dotnet-buildtools/ --source https ://www.nuget.org/api/v2/ ""C:\Users\noahfalk\Documents\GitHub\corefx\src"" ""C:\Users\noahfalk\Documents\GitHub\corefx\pac kages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00097/lib/"""" exited with code 1. ``` Running a build with more diagnostics enabled reveals this: ``` C:\Users\noahfalk\Documents\GitHub\corefx [master +0 ~22 -0]> msbuild /v:detailed /p:OSGroup=Linux /p:SkipTests=true .\b uild.proj Microsoft (R) Build Engine version 12.0.40629.0 [Microsoft .NET Framework, version 4.0.30319.42000] ``` ... Omitting some hopefully irrelevant build ouput for brevity ... ``` Task ""Exec"" ""C:\Users\noahfalk\Documents\GitHub\corefx\packages//dnx-coreclr-win-x86.1.0.0-beta7/\bin\dnu.cmd"" restore --packages ""C:\Users\noahfalk\Documents\GitHub\corefx\packages"" --source https://www.myget.org/F/dotnet-core/ --source https:// www.myget.org/F/dotnet-coreclr/ --source https://www.myget.org/F/dotnet-corefxtestdata/ --source https://www.myget.or g/F/dotnet-buildtools/ --source https://www.nuget.org/api/v2/ ""C:\Users\noahfalk\Documents\GitHub\corefx\src"" ""C:\Use rs\noahfalk\Documents\GitHub\corefx\packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00097/lib/"" Microsoft .NET Development Utility CoreCLR-x86-1.0.0-beta7-15532 CACHE https://www.myget.org/F/dotnet-core/ CACHE https://www.myget.org/F/dotnet-coreclr/ CACHE https://www.myget.org/F/dotnet-corefxtestdata/ CACHE https://www.myget.org/F/dotnet-buildtools/ CACHE https://www.nuget.org/api/v2/ Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\project.lock.json Restore complete, 288ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\System\Diagnostics\RemoteExecutorCo nsoleApp\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\System\Diagnostics\RemoteExecutorConso leApp\project.lock.json Restore complete, 14ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\BaseLibManaged\project.js on Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\BaseLibManaged\project.lock. json Restore complete, 5ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\ModuleCore\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\ModuleCore\project.lock.json Restore complete, 32ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\XmlCoreTest\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\XmlCoreTest\project.lock.jso n Restore complete, 33ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\XmlDiff\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Common\tests\SystemXml\XmlDiff\project.lock.json Restore complete, 31ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.CSharp\ref\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.CSharp\ref\project.lock.json Restore complete, 16ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.CSharp\src\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.CSharp\src\project.lock.json Restore complete, 31ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.VisualBasic\ref\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.VisualBasic\ref\project.lock.json Restore complete, 2ms elapsed Restoring packages for C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.VisualBasic\src\project.json Following lock file C:\Users\noahfalk\Documents\GitHub\corefx\src\Microsoft.VisualBasic\src\project.lock.json ---------- System.IO.IOException: The supplied user buffer is not valid for the requested operation at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.Win32FileStream.ReadCore(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Win32FileStream.Read(Byte[] array, Int32 offset, Int32 count) at System.IO.FileStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Xml.XmlTextReaderImpl.ReadData() at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r) at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o) at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options) at NuGet.XmlUtility.LoadSafe(Stream input, Boolean ignoreWhiteSpace) at NuGet.Manifest.ReadFrom(Stream stream, IPropertyProvider propertyProvider, Boolean validateSchema) at NuGet.LocalPackage.ReadManifest(Stream manifestStream) at NuGet.UnzippedPackage.EnsureManifest() at NuGet.UnzippedPackage..ctor(IFileSystem fileSystem, String manifestPath) at NuGet.PackageInfo.get_Package() at Microsoft.Dnx.Runtime.NuGetDependencyResolver.d__14.MoveNext() at Microsoft.Dnx.Tooling.RestoreOperations.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Dnx.Tooling.RestoreCommand.d__62.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Microsoft.Dnx.Tooling.RestoreCommand.d__61.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Dnx.Tooling.RestoreCommand.<>c__DisplayClass60_0.<b__2>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Microsoft.Dnx.Tooling.RestoreCommand.d__60.MoveNext() ---------- Restore failed The supplied user buffer is not valid for the requested operation ``` " +3767 area-System.Net Update CurlHandler to use HttpContent.CopyToAsync "To get a request content stream, CurlHandler currently uses the HttpContent's ReadAsStreamAsync, and when libcurl needs to rewind the stream, CurlHandler seeks on the stream. Unfortunately, it turns out ReadAsStreamAsync isn't actually intended to be used by handlers in this manner, and as such there are some deficiencies that lead to correctness problems. For example, some of the WCF HttpContent-derived types return non-seekable streams from CreateContentReadStreamAsync and thus from ReadAsStreamAsync. This means that, using ReadAsStreamAsync, if we need to resend a request, we need to call ReadAsStreamAsync again. But ReadAsStreamAsync doesn't do the same _contentConsumed check that SerializeToStreamAsync does. That means if the content is actually a StreamContent, whose CreateContentReadStreamAsync just does `return Task.FromResult(new ReadOnlyStream(this._content));`, and if the stream is non-seekable, then we'll end up getting back the ""new"" stream but that's already had its content consumed, and we won't know. We can't even try to do an object reference comparison, because StreamContent is wrapping the returned stream in a new ReadOnlyStream instance each time. The recommended approach for handlers is to use HttpContent.CopyToAsync. CopyToAsync is a push-based model, letting the HttpContent write to a target stream. CurlHandler/libcurl have a pull-based model, with CurlHandler ReadAsync'ing from the request content based on callback from libcurl. To straddle this divide, this commit adds a specialized push/pull adapter stream that let's CurlHandler effectively read from the pushing source. If/when libcurl asks to rewind, the stream resets itself by doing a new CopyToAsync operation. This revised approach does incur more costs, however care has been taken to try to minimize those overheads as much as possible, and the change is necessary for correctness. This PR also fixes an issue with regards to which exception type CurlHandler wraps. Fixes #3699, #3693 cc: @kapilash, @vijaykota, @davidsh, @pgavlin, @CIPop " +3768 area-System.Net Refactoring System.Net.Security PAL Refactoring System.Net.Security PAL in preparation to add back the Schannel Interop multi-interface SSPI object model required by NegotiateStream. The PAL design is similar to the one @pgavlin designed for System.Net.Primitives, NameResolution and Sockets: partial static classes replaced the interface/class/factory pattern that was derived from the SSPI object model. Semantics should remain the same. 1. \CertModule.cs was renamed to CertificateValidationPal..cs. CertWrapper and CertInterface have been removed. 2. \SSPISecureChannelType.cs was renamed to SslStreamPal..cs. Modified GlobalSSPI, SSPIInterface have been removed temporarily. The plan is to add them back with the original semantics for NegotiateStream support via Win32 SSPI. - Small change in QueryContextChannelBinding to simplify the PAL. - Added a static readonly sync object in the Windows implementation to preserve interlocked behavior. - Removed Win32Exception from MapToSecurityStatus. (Still needs to be redesigned to avoid string parsing.) 3. Rest of * have been moved to Interop. I did my best to integrate with the latest sources in master. 4. Removed NegotiateStream / Auth code. This will be added back with NegotiateStream support. @bartonjs @vijaykota @rajansingh10 PTAL /cc: @davidsh @stephentoub @pgavlin +3769 area-System.Security ECDsa Sign and Verify expect different data forms between Windows and Unix ECDSA's Sign operation, algorithmically, emits two values, `r` and `s`. The values produced by Desktop, and CoreFX-Windows are equivalent to `r.Concat(s)`. CoreFX-Unix is emitting (and expecting) the signature block: ``` ECDSA-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } ``` These values will never be equal, differing by the ASN/DER structural information. Since Desktop is the de facto standard here, we need to make the Unix version match. +3771 area-System.Security Windows GetECDsaPrivateKey fails on ECDsa PFX files created with OpenSSL "When opening the private key NCrypt reports that the algorithm is ECDH_P384 instead of ECDSA_P384; then ECDsaCng rejects the key for being from the wrong algorithm group. Commenting out these lines showed the key to be functional in this role, so perhaps the checks need to be relaxed a bit. Taking a PFX generated from Windows which works and sending it through: ``` openssl pkcs12 -in working.pfx -info ``` supplying both the PFX decrypt password and a new private key encrypt password, then copying the .cer portion to `worked.cer`, and the key to `worked.encrypted.key` ``` openssl ec -in worked.encrypted.key -out worked.key openssl pkcs12 -export -in worked.cer -inkey worked.key -out worked.pfx -CSP ""Microsoft Software Key Storage Provider"" ``` Even when noticing that new keys had a parameters header, and including it in `worked.key` didn't help. Just an OID identifying the curve: secp384r1 ``` -----BEGIN EC PARAMETERS----- BgUrgQQAIg== -----END EC PARAMETERS----- ``` Clearly something is missing... " +3772 area-System.Security Unix ECDsa doesn't support P-256 Windows supports { 256, 384, 521 } Unix supports { 224, 384, 521 } I suspect the 224 was meant to be 256 (since 256 is a SuiteB curve). 256 should be added. +3777 area-System.Net Setting Socket.SendTimeOut throws SocketException on Linux "The following code runs fine on Windows dnxcore50 ``` csharp using System; using System.Net.Sockets; public class Program { public static void Main() { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { SendTimeout = 200, ReceiveTimeout = 200 }; } } ``` However on an Azure Linux VM it throws with Success! ``` System.Net.Sockets.SocketException: Success at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue, Boolean silent) at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue) at System.Net.Sockets.Socket.set_SendTimeout(Int32 value) at Program.Main() ``` Here's my project.json ``` javascript { ""commands"": { ""run"": ""test"" }, ""frameworks"": { ""dnxcore50"": { ""compilationOptions"": { ""define"": [ ""NETCORE"" ], ""allowUnsafe"": true, ""warningsAsErrors"": false }, ""dependencies"": { ""System.Console"": ""4.0.0-beta-*"", ""System.Net.Sockets"": ""4.1.0-beta-*"", ""System.Net.Security"": ""4.0.0-beta-*"", ""System.Net.NameResolution"": ""4.0.0-beta-*"", ""System.Net.Primitives"": ""4.0.11-beta-*"" } } }, ""dependencies"": { } } ``` " +3778 area-System.Drawing Current status of graphics library development. Hi all, I've been following the various conversations regarding graphics in corefx: #1563, #489, etc and also following the progress of the library in corefxlab https://github.com/dotnet/corefxlab/tree/master/src/System.Drawing.Graphics and I'm still left wondering what the overall plan is. Progress in the lab repo seems to have stopped and there seems to be no further discussion I can find anywhere on what is happening. I'm the primary author of the project [ImageProcessor](https://github.com/JimBobSquarePants/ImageProcessor/) which I wrote to make System.Drawing a little easier to work with. It's been fairly successful in adoption but as far as I can fathom my work (~3 years) will become obsolete very soon. Since corefx was announced I've started working on a library which can do basic stuff like encode/decode pngs, bmps, jpegs, and gifs (animated too), I've partially implemented some primitives for shapes and colors, and am experimenting with resampling algorithms now. All that work can be found [here](https://github.com/JimBobSquarePants/ImageSharp) I'm super uneasy about doing all this work though as I don't want it to be in vain, superseded immediately by something out of Microsoft. Should I continue? If so is it something that you would think the community could invest in and help me deliver (Graphics is tricky stuff and I'm no computer scientist). +3779 area-System.Runtime Collectible AssemblyLoadContext Collectible assemblies can be used for many different things but it usually comes down to some form of hot swapping code. Updating a plugin or compiling a new version of a Razor view, without restarting the process or leaking memory. .NET Core currently has no way to unload assemblies from memory if they are no longer required. In the full .NET Framework you could load the assemblies into a separate AppDomain so they can be unloaded later. ## Proposed API `AssemblyLoadContext` can be extended to enable developers to load normal assemblies, from the filesystem or any stream, as collectible assemblies. ``` csharp public abstract class AssemblyLoadContext { // ... protected AssemblyLoadContext(bool isCollectible) { } // ... } ``` Collectible assemblies loaded by `AssemblyLoadContext` would have the same [lifetime and limitations as those generated by `System.Reflection.Emit`](https://msdn.microsoft.com/en-us/library/vstudio/dd554932%28v=vs.100%29.aspx), except the lifetime extends to all assemblies loaded by the `AssemblyLoadContext`. This means the `AssemblyLoadContext` will not unload until there are no references to any of the assemblies it loaded. I am working on the implementation for this in CoreCLR: https://github.com/dotnet/coreclr/pull/1684 +3780 area-System.IO IOException on recursive Directory.Delete of path with trailing backslash I observed this after we took a recent beta System.IO over in MSBuild. Many of our tests create a directory and have a `finally` that deletes it, which suddenly started failing. After debugging, I think this is a regression caused by 0721434, which added a call in [`RemoveDirectory`](https://github.com/dotnet/corefx/blob/0721434e19e7f9ecf8bf6dba7485f6c86827388c/src/System.IO.FileSystem/src/System/IO/Win32FileSystem.cs#L491) to canonicalize the path to extended form. The following call then adds a backslash before calling `FindFirstFile`, but the extended path has different behavior in Win32: it no longer silently condenses double backslashes to a single path separator. While proving to myself that I understood the bug I wrote a fix; I'll send a PR shortly. +3783 area-System.Net Disable failing ConnectV4MappedIPEndPointToV4Host_Success test #3744 cc: @pgavlin, @davidsh, @CIPop +3784 area-Infrastructure ALINK : error AL1078: Error signing assembly -- Access is denied. "Getting build errors on Win10 + VS2015: `ALINK : error AL1078: Error signing assembly -- Access is denied. [s:\c1\src\Microsoft.CSharp\src\Microsoft.CSharp.csproj]` From the log: ``` 175>GenerateSatelliteAssemblies: Creating directory ""s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\it"". Creating directory ""s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\ja"". Creating directory ""s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\ko"". Creating directory ""s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\ru"". Creating directory ""s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\zh-Hans"". Creating directory ""s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\zh-Hant"". C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\AL.exe /culture:de /delaysign+ /keyfile:s:\c1\packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104/lib/MSFT.snk /out:s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\de\Microsoft.CSharp.resources.dll /template:s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\Microsoft.CSharp.dll /embed:s:\c1\bin/obj/Windows_NT.AnyCPU.Debug\Microsoft.CSharp\Microsoft.CSharp.Resources.Strings.de.resources 175>ALINK : error AL1078: Error signing assembly -- Access is denied. [s:\c1\src\Microsoft.CSharp\src\Microsoft.CSharp.csproj] 175>Done Building Project ""s:\c1\src\Microsoft.CSharp\src\Microsoft.CSharp.csproj"" (BuildAndTest target(s)) -- FAILED. ``` [msbuild.log.txt](https://github.com/dotnet/corefx/files/11943/msbuild.log.txt) " +3785 area-System.Net SendReceive.SendRecvAsync_Multiple_Stream_TCP_IPv4 failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/4952/console ``` System.Net.Sockets.Tests.SendReceive.SendRecvAsync_Multiple_Stream_TCP_IPv4 [FAIL] Assert.Equal() Failure Expected: 1430411494 Actual: 228538420 Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(381,0): at System.Net.Sockets.Tests.SendReceive.SendRecvAsync_Stream_TCP(IPAddress listenAt, Boolean useMultipleBuffers) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(501,0): at System.Net.Sockets.Tests.SendReceive.SendRecvAsync_Multiple_Stream_TCP_IPv4() ``` +3786 area-System.Net Merge changes from TFS +3787 area-System.Reflection Add unit test coverage for portable PDB There is test coverage in Roslyn for portable PDBs, but before we ship a stable System.Reflection.Metadata, we need sufficient unit tests in corefx. We'll merge #3560 with Roslyn's sign-off now so that we can get them a -rc build out of master in time. +3788 area-System.IO Complete Environmment.SpecialFolder Filed on behalf of [Joel Bennett](https://twitter.com/Jaykul). Many of [the locations](https://msdn.microsoft.com/en-us/library/dd378457) added since Vista are missing. +3789 area-Infrastructure Get automated process to enforce coding rules Currently, we have code styling and formatting rules for both native and managed code but there is no process to enforce these rules. We should enforce these rules in an automated, easy way to ensure code cleanliness and styling +3790 area-System.Net Sending http requests segfaults sometimes on Mac if the request fails I noticed this issue when trying dnx beta-8 bits on Mac. When I restore packages of my dnx app I frequently (~50% of the time) get a segfault if the request fails with an HTTP error (e.g. 404 or 400). I am not exactly sure if this is a bug in coreclr, libcurl or somewhere else. I was not able to repro this issue on Linux. I also don’t seem to be getting the segfault if the request succeeds. Exception details: ``` Process 51039 stopped * thread #7: tid = 0x51dec4, 0x00007fff8ddc7852 libsystem_coretls.dylib`tls_handshake_set_peer_trust + 4, stop reason = EXC_BAD_ACCESS (code=1, address=0x48) frame #0: 0x00007fff8ddc7852 libsystem_coretls.dylib`tls_handshake_set_peer_trust + 4 libsystem_coretls.dylib`tls_handshake_set_peer_trust: -> 0x7fff8ddc7852 <+4>: movl %esi, 0x48(%rdi) 0x7fff8ddc7855 <+7>: xorl %eax, %eax 0x7fff8ddc7857 <+9>: popq %rbp 0x7fff8ddc7858 <+10>: retq ``` Stack trace: ``` * thread #7: tid = 0x2d98, 0x00007fff8a53b852 libsystem_coretls.dylib`tls_handshake_set_peer_trust + 4, stop reason = EXC_BAD_ACCESS (code=1, address=0x48) * frame #0: 0x00007fff8a53b852 libsystem_coretls.dylib`tls_handshake_set_peer_trust + 4 frame #1: 0x00007fff898c510b Security`tls_verify_peer_cert + 537 frame #2: 0x00007fff8a537676 libsystem_coretls.dylib`SSLProcessHandshakeRecordInner + 234 frame #3: 0x00007fff8a537eff libsystem_coretls.dylib`SSLProcessHandshakeRecord + 1119 frame #4: 0x00007fff8a53b4f1 libsystem_coretls.dylib`tls_handshake_process + 116 frame #5: 0x00007fff8988efb6 Security`SSLHandshakeProceed + 126 frame #6: 0x00007fff8988ef21 Security`SSLHandshake + 148 frame #7: 0x00007fff8b864b32 libcurl.4.dylib`darwinssl_connect_step2 + 74 frame #8: 0x00007fff8b864612 libcurl.4.dylib`darwinssl_connect_common + 4013 frame #9: 0x00007fff8b862cca libcurl.4.dylib`Curl_ssl_connect_nonblocking + 77 frame #10: 0x00007fff8b82b61b libcurl.4.dylib`https_connecting + 22 frame #11: 0x00007fff8b84c6e9 libcurl.4.dylib`multi_runsingle + 1016 frame #12: 0x00007fff8b84c24f libcurl.4.dylib`curl_multi_perform + 159 frame #13: 0x000000011db0eb32 frame #14: 0x000000011db0cd7a frame #15: 0x000000011db0c9d3 frame #16: 0x000000011db4f879 frame #17: 0x000000011db4e16e frame #18: 0x000000011db4f58c frame #19: 0x000000011db4ea66 frame #20: 0x000000011db4e16e frame #21: 0x0000000101373bca libcoreclr.dylib`FastCallFinalizeWorker_End + 124 frame #22: 0x000000010128f165 libcoreclr.dylib`MethodDescCallSite::CallTargetWorker(unsigned long const*) + 917 frame #23: 0x00000001012a210c libcoreclr.dylib`ThreadNative::KickOffThread_Worker(void*) + 348 frame #24: 0x0000000101255b05 libcoreclr.dylib`ManagedThreadBase_DispatchOuter(ManagedThreadCallState*) + 277 frame #25: 0x00000001012560b9 libcoreclr.dylib`ManagedThreadBase::KickOff(ADID, void (*)(void*), void*) + 57 frame #26: 0x00000001012a2230 libcoreclr.dylib`ThreadNative::KickOffThread(void*) + 160 frame #27: 0x0000000101078c55 libcoreclr.dylib`CorUnix::CPalThread::ThreadEntry(void*) + 357 frame #28: 0x00007fff8e17305a libsystem_pthread.dylib`_pthread_body + 131 frame #29: 0x00007fff8e172fd7 libsystem_pthread.dylib`_pthread_start + 176 frame #30: 0x00007fff8e1703ed libsystem_pthread.dylib`thread_start + 13 ``` +3793 area-System.Diagnostics EventListener.DisposeOnShutdown crashing xunit processes Recently we've seen xunit failing due to a bug in EventListener.DisposeOnShutdown. Here is the stack of the failure: ``` System.InvalidOperationException: Collection was modified; enumeration operation may not execute. at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) at System.Collections.Generic.List`1.Enumerator.MoveNextRare() at System.Diagnostics.Tracing.EventListener.DisposeOnShutdown(Object sender, ``` Here is the relevant code: ``` csharp private static void DisposeOnShutdown(object sender, EventArgs e) { foreach (var esRef in s_EventSources) { EventSource es = esRef.Target as EventSource; if (es != null) es.Dispose(); } } ``` It appears this code is not accounting for the case that `s_EventSources` could be modified either by the `Dispose` call directly or indirectly via other methods in `EventListener`. All of the other methods which modify / enumerate `s_EventSources` take care to lock the appropriate guard. This method is the sole exception. Jenkins Job Link showing the failure in action: http://dotnet-ci.cloudapp.net/job/roslyn_master_win_rel_unit64/112/ +3796 area-Serialization Add perf test to deserialize large object graph Fix #3302 +3797 area-System.Net Socket.Connect(dnsname, port) throws System.ArgumentException on Linux "(Please see my project.json and a Program.cs template at https://github.com/dotnet/corefx/issues/3777) The following code runs fine on Windows dnxcore50 ``` csharp socket.Connect(""yu-ubt2.cloudapp.net"", 6379); ``` On Linux it throws ``` System.ArgumentException: The AddressFamily 117 is not valid for the System.Net.IPEndPoint end point, use InterNetwork instead. Parameter name: socketAddress at System.Net.IPEndPoint.Create(SocketAddress socketAddress) at System.Net.Dns.TryGetAddrInfo(String name, AddressInfoHints flags, IPHostEntry& hostinfo) at System.Net.Dns.TryGetAddrInfo(String name, IPHostEntry& hostinfo) at System.Net.Dns.GetAddrInfo(String name) at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) at System.Net.Dns.GetHostAddresses(String hostNameOrAddress) at System.Net.Sockets.Socket.Connect(String host, Int32 port) at Program.Main() ``` " +3799 area-System.Net Socket.Connect(ipaddress, port) throws System.Net.Sockets.SocketException on Linux "(Please see my `project.json` at https://github.com/dotnet/corefx/issues/3777) The following code runs fine on Windows dnxcore50 ``` csharp using System; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; public class Program { public static void Main() { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { }; try { var str = ""ping""; var data = new byte[str.Length * sizeof(char)]; System.Buffer.BlockCopy(str.ToCharArray(), 0, data, 0, data.Length); socket.Connect(""127.0.0.1"", 6379); socket.Send(data); Console.WriteLine(""data sent to server""); } catch (Exception ex) { System.Console.WriteLine(ex.ToString()); } } } ``` On Linux it throws ``` System.Net.Sockets.SocketException: Address family not supported by protocol 127.0.0.1:6379 at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) at System.Net.Sockets.Socket.Connect(String host, Int32 port) at Program.Main() ``` " +3802 area-System.Net Test - Fix FakeNetwrokStream(System.Net.Security.Tests) read method for successive network read In SslStreamStreamToStreamTest.cs, SslStream_StreamToStream_Successive_ClientWrite_Success need to rely on DoNetworkRead() of FakeNetwrokStream because of the limitation of FakeNetworkStream. The read method in FakeNetworkStream does do NetworkRead on some condition which itself is wrong. As a result, in successive read, data is never read from the network. So for now we have put a workaround method named DoNetworkRead(), which is being explicitly called from SslStream_StreamToStream_Successive_ClientWrite_Success. This issue is to remove DoNetworkRead() & find the real fix so that a NetworkStream encapsulation is maintained +3806 area-System.Net PreAuthenticate fix When CURLOPT_HTTPAUTH is set to any, libcurl will first query the server to figure out the right authentication scheme. This breaks the expectation when PreAuthenticate is set to true. We need to iterate over available schemes and set the auth-scheme flags to only those that are available. Also, while updating the CredentialCache, we ignore ArgumentException (raised when the cache contains the given url and scheme pair) +3807 area-System.Net Adding client cert validation logic and usage of EncryptionPolicy This includes: 1. Client Certificate validation logic at server side. Enabled the Verify_callback. Added the logic of updating CA list to be sent to client. 2. Added the usage of EncryptionPolicy flag passed during handshake. 3. Enabled the constructors of SafeX509Handle and X509StoeCTXHandle to generate the handle from an Intptr. 4. Added SafeX509NameStackHandle to be used by the stack related APIs. 5. Added a few X509_NAME stack related Macro-functions in *X509_name.cpp/.h Testing done locally using the existing security testcases for Encryption Policy variations. Client Cert validation logic is tested by directly calling AuthenticateAsServer method by enabling clientCertificateRequired flag. +3808 area-System.Net Disable another failing sockets test #3494 cc: @pgavlin, @davidsh +3809 area-System.Net Fix bugs in IPPacketInformation. - GetHashCode() and Equals() both stood the chance of dereferencing a null pointer when called on default values. - GetHashCode() was using a weak method of combining hash codes. This has been updated to use the same technique used by Roslyn. - The equality and inequality operators were unnecessarily boxing input parameters. +3810 area-System.Numerics Perf: Vector operations up to 200x slower on Linux Perf results for the individual iterations are available on my share, or I can post them here if requested. The tests that produced these results are currently in PR #3764. I included all Vector tests here (not just the slower ones) to simplify comparisons. | test name | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | | Perf_Vector2.Operation(operation: Add_Function) | 8.000289665 | 59.11430001 | 7.389019958 | | Perf_Vector2.Operation(operation: Add_Operator) | 0.288809858 | 52.2279 | 180.8383562 | | Perf_Vector2.Operation(operation: Distance_Squared) | 22.23037618 | 21.2417 | 0.955525891 | | Perf_Vector2.Operation(operation: Dot) | 0.351532631 | 18.29149999 | 52.03357636 | | Perf_Vector2.Operation(operation: Length_Squared) | 0.38232381 | 15.3581 | 40.17039899 | | Perf_Vector2.Operation(operation: Mul_Function) | 8.379477337 | 60.432 | 7.211905656 | | Perf_Vector2.Operation(operation: Mul_Operator) | 0.320741452 | 56.456 | 176.0171619 | | Perf_Vector2.Operation(operation: Normalize) | 60.02426801 | 67.0325 | 1.116756642 | | Perf_Vector2.Operation(operation: SquareRoot) | 0.321026555 | 73.6878 | 229.5380205 | | Perf_Vector2.Operation(operation: Sub_Function) | 8.074986785 | 60.292 | 7.466513767 | | Perf_Vector2.Operation(operation: Sub_Operator) | 0.266571784 | 56.0038 | 210.0890016 | | Perf_Vector3.Operation(operation: Add_Function) | 10.99273613 | 78.2232 | 7.115898995 | | Perf_Vector3.Operation(operation: Add_Operator) | 5.44148564 | 64.7522 | 11.89972818 | | Perf_Vector3.Operation(operation: Cross) | 37.46773341 | 70.217 | 1.874065859 | | Perf_Vector3.Operation(operation: Distance_Squared) | 23.74256521 | 20.9329 | 0.881661262 | | Perf_Vector3.Operation(operation: Dot) | 5.302070023 | 18.5697 | 3.502349068 | | Perf_Vector3.Operation(operation: Length_Squared) | 14.50720713 | 14.7616 | 1.01753562 | | Perf_Vector3.Operation(operation: Mul_Function) | 10.89209459 | 74.3459 | 6.825675206 | | Perf_Vector3.Operation(operation: Mul_Operator) | 5.499646757 | 64.2378 | 11.68035018 | | Perf_Vector3.Operation(operation: Normalize) | 69.1874949 | 90.3523 | 1.305905065 | | Perf_Vector3.Operation(operation: SquareRoot) | 2.665432739 | 117.7835 | 44.18925989 | | Perf_Vector3.Operation(operation: Sub_Function) | 10.91575818 | 75.24789999 | 6.89351108 | | Perf_Vector3.Operation(operation: Sub_Operator) | 5.528157108 | 65.3777 | 11.82631006 | | Perf_Vector4.Operation(operation: Add_Function) | 2.999859159 | 70.9498 | 23.65104368 | | Perf_Vector4.Operation(operation: Add_Operator) | 2.746117033 | 66.9818 | 24.39145863 | | Perf_Vector4.Operation(operation: Distance_Squared) | 19.94584174 | 20.5697 | 1.03127761 | | Perf_Vector4.Operation(operation: Dot) | 2.631220317 | 21.6594 | 8.231693811 | | Perf_Vector4.Operation(operation: Length_Squared) | 2.74754255 | 15.3553 | 5.588739654 | | Perf_Vector4.Operation(operation: Mul_Function) | 3.059730896 | 69.6198 | 22.75356963 | | Perf_Vector4.Operation(operation: Mul_Operator) | 2.709053576 | 68.6514 | 25.34147003 | | Perf_Vector4.Operation(operation: Normalize) | 69.79761642 | 82.259 | 1.178535947 | | Perf_Vector4.Operation(operation: SquareRoot) | 1.368781964 | 144.8611 | 105.8321222 | | Perf_Vector4.Operation(operation: Sub_Function) | 3.020101508 | 70.3999 | 23.31044165 | | Perf_Vector4.Operation(operation: Sub_Operator) | 2.664292325 | 69.3502 | 26.0295011 | Loop/testing overhead is equivalent to roughly .3 ms on both platforms. @mellinoe +3811 area-System.Globalization Perf: DateTime.Parse(string, CultureInfo) 90x slower on Linux "I can post or email the individual iteration results if desired; the values shown are the medians. | test name | date ran | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | --- | | System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: ""ja"") | 10/13/2015 | 3.926445575 | 269.9053 | 68.7403645 | | System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: """") | 10/13/2015 | 3.748826086 | 151.5521 | 40.42654861 | | System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: ""fr"") | 10/13/2015 | 3.861441974 | 135.64 | 35.12677412 | | System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: ""da"") | 10/13/2015 | 5.109054945 | 113.3454 | 22.18519887 | Perf test: ``` [Benchmark] [InlineData(""fr"")] [InlineData(""da"")] [InlineData(""ja"")] [InlineData("""")] public void Parse(string culturestring) { CultureInfo cultureInfo = new CultureInfo(culturestring); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) { for (int i = 0; i < innerIterations; i++) { DateTime.Parse(""10/10/2010 12:00:00 AM"", cultureInfo); DateTime.Parse(""10/10/2010 12:00:00 AM"", cultureInfo); DateTime.Parse(""10/10/2010 12:00:00 AM"", cultureInfo); DateTime.Parse(""10/10/2010 12:00:00 AM"", cultureInfo); } } } ``` " +3813 area-System.IO Perf: MemoryMappedFile.CreateFromFile ~20x slower on Linux | test name | date ran | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | --- | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateFromFile(capacity: 10000) | 10/13/2015 | 0.433927546 | 73.4239 | 169.2077414 | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateFromFile(capacity: 100000) | 10/13/2015 | 0.626372417 | 51.90790001 | 82.87066702 | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateFromFile(capacity: 1000000) | 10/13/2015 | 1.818675306 | 57.4766 | 31.60355221 | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateFromFile(capacity: 10000000) | 10/13/2015 | 12.5975838 | 211.0644 | 16.7543557 | Perf test: ``` [Benchmark] [InlineData(10000)] [InlineData(100000)] [InlineData(1000000)] [InlineData(10000000)] public void CreateFromFile(int capacity) { // Note that the test results will include the disposal overhead of both the MemoryMappedFile // as well as the Accessor for it foreach (var iteration in Benchmark.Iterations) using (TempFile file = new TempFile(GetTestFilePath(), capacity)) using (iteration.StartMeasurement()) using (MemoryMappedFile mmfile = MemoryMappedFile.CreateFromFile(file.Path)) using (mmfile.CreateViewAccessor(capacity / 4, capacity / 2)) { } } ``` +3814 area-System.IO Perf: MemoryMappedFiles.CreateNew ~5x slower on Linux Probably related to #3813; possible duplicate | test name | date ran | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | --- | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateNew(capacity: 10000) | 10/13/2015 | 1.420100596 | 25.587 | 18.01773767 | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateNew(capacity: 100000) | 10/13/2015 | 1.437777014 | 24.3962 | 16.96799974 | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateNew(capacity: 1000000) | 10/13/2015 | 1.6233794 | 24.3918 | 15.0253231 | | System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateNew(capacity: 10000000) | 10/13/2015 | 5.915327678 | 24.5068 | 4.142931944 | Perf Test: ``` [Benchmark] [InlineData(10000)] [InlineData(100000)] [InlineData(1000000)] [InlineData(10000000)] public void CreateNew(int capacity) { const int innerIterations = 1000; MemoryMappedFile[] files = new MemoryMappedFile[innerIterations]; foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) for (int i = 0; i < innerIterations; i++) files[i] = MemoryMappedFile.CreateNew(null, capacity); for (int i = 0; i < innerIterations; i++) files[i].Dispose(); } } ``` Note that unlike CreateFromFile, the CreateNew tests only construct the files - they do not create an accessor. Therefore, any comparison of the results between the two tests probably won't be valid. If desired, I can add a test (or modify this test) that enables a better comparison between the two. +3815 area-System.Globalization Perf: double.ToString(CultureInfo) 7x slower on Linux "| test name | date ran | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | --- | | System.Globalization.Tests.Perf_NumberCultureInfo.ToString(culturestring: ""fr"") | 10/13/2015 | 3.780472576 | 29.0264 | 7.677981896 | | System.Globalization.Tests.Perf_NumberCultureInfo.ToString(culturestring: ""da"") | 10/13/2015 | 3.757379192 | 28.05800001 | 7.467439025 | | System.Globalization.Tests.Perf_NumberCultureInfo.ToString(culturestring: ""ja"") | 10/13/2015 | 3.773344988 | 27.9326 | 7.402609643 | | System.Globalization.Tests.Perf_NumberCultureInfo.ToString(culturestring: """") | 10/13/2015 | 3.806987203 | 27.96 | 7.34439033 | Perf Test: ```c# [Benchmark] [InlineData(""fr"")] [InlineData(""da"")] [InlineData(""ja"")] [InlineData("""")] public void ToString(string culturestring) { double number = 104234.343; CultureInfo cultureInfo = new CultureInfo(culturestring); foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) { for (int i = 0; i < innerIterations; i++) { number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); number.ToString(cultureInfo); } } } ``` Although it's an admittedly poor comparative data point, the ToString(CultureInfo) method for DateTime was 1:1 between Linux:Windows so not all ToString methods are equally slow when using CultureInfo. As such, I am unsure of whom to to notify; @steveharter @stephentoub? I have not yet added equivalent ToString tests to other classes, but can if desired for more data points. " +3816 area-System.Security Enable TestECDsaPublicKey_ValidatesSignature after new packages are published Since the test pulls the OpenSsl DLL from a nuget package it doesn't have the fix from #3800; so there's a bit of a lag in re-enabling this test. +3818 area-System.Console Perf: Console Color setting 5x slower on Linux | test name | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | | Perf_Console.ForegroundColor | 11.91903744 | 49.60640001 | 4.161946822 | | Perf_Console.BackgroundColor | 12.05075527 | 62.62819999 | 5.197035257 | Perf Test (same for ForegroundColor): ``` [Benchmark] public void BackgroundColor() { const int innerIterations = 1000; foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < innerIterations; i++) { Console.BackgroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.Blue; Console.BackgroundColor = ConsoleColor.Cyan; Console.BackgroundColor = ConsoleColor.DarkBlue; Console.BackgroundColor = ConsoleColor.DarkGray; Console.BackgroundColor = ConsoleColor.Red; Console.BackgroundColor = ConsoleColor.DarkGreen; Console.BackgroundColor = ConsoleColor.White; } } } Console.ResetColor(); } ``` Can post individual iteration results if desired. +3819 area-System.Runtime Perf: Stringbuilder ctor 5x slower on Linux The constructor that takes a string is fine, but the default constructor is slow. | test name | date ran | Windows time | Linux time | linux/windows | | --- | --- | --- | --- | --- | | System.Runtime.Tests.Perf_StringBuilder.ctor | 10/13/2015 | 1.690948933 | 9.650000006 | 5.706854783 | | System.Runtime.Tests.Perf_StringBuilder.ctor_string(length: 100) | 10/13/2015 | 5.608841402 | 11.93529999 | 2.127943926 | | System.Runtime.Tests.Perf_StringBuilder.ctor_string(length: 1000) | 10/13/2015 | 32.82909926 | 36.8228 | 1.121651243 | Perf test: ``` [Benchmark] public void ctor() { StringBuilder builder; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 10000; i++) { builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); builder = new StringBuilder(); } } [Benchmark] [InlineData(100)] [InlineData(1000)] public void ctor_string(int length) { PerfUtils utils = new PerfUtils(); string input = utils.CreateString(length); StringBuilder builder; foreach (var iteration in Benchmark.Iterations) using (iteration.StartMeasurement()) for (int i = 0; i < 10000; i++) { builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); builder = new StringBuilder(input); } } ``` possibly related to #3588? @stephentoub @JeremyKuhne I think you have mentioned something like this? +3821 area-System.Net Shim in{,6}_pktinfo. This moves all of the processing for control messages--arguably some of the trickier interop in Sockets--into the native shims. +3825 area-System.Net Adding original SSPI object model back to the Windows SslStream implementation 1. In preparation for NegotiateStream I'm adding back the original SSPI object model. Code was brought in from c74b6f2 with cosmetic or no modifications (simplest way to review is to diff against that). SslStreamPal.Windows has been updated to match the original code in SecureChannel. 2. Updated both Windows and Unix PAL to match the interface (a few methods got moved, no substantial changes in non-Windows code). 3. Adding common test timeout configuration. @bartonjs @vijaykota @rajansingh10 PTAL /cc: @DavidSh, @josguil @SidharthNabar @pgavlin @stephentoub +3826 area-System.Security Unlist obsolete beta6/beta7 crypto packages from nuget.org "Many packages are marked ""obsolete"" and need to be removed by RTM. (It would be nice if we didn't have them for RC1) See packages marked obsolete here: https://www.nuget.org/packages?q=System.Security.Cryptography This is also throwing off corefx-progress results. cc @bartonjs @chcosta @terrajobst " +3827 area-System.Net Re-enable test on *Nix HttpContentTest.ReadAsStringAsync_SetInvalidCharset_ThrowsInvalidOperationException can be re-enabled due to fixes in the CoreCLR for System.Text.Encoding on *Nix. This fixes #3343. +3829 area-System.Net Unix SslStream: Implement RFC2812 IP Address matching for HTTP over TLS. If the hostname looks like an IP Address then do exact matches against GEN_IPADDR Subject Alternative Name entries. Unlike the GEN_DNS matching of text hostnames, the IP Address form always falls back to the CN text comparison if no other match has been found. Fixes #3445. cc: @vijaykota @stephentoub @rajansingh10 @shrutigarg @CIPop @davidsh +3830 area-System.Net Re-enable some WinHttpHandler unit tests Turned on tests: SendAsync_NoWinHttpDecompressionSupportAndResponseBodyIsDeflateCompressed_ExpectedResponse SendAsync_NoWinHttpDecompressionSupportAndResponseBodyIsGZipCompressed_ExpectedResponse since the issue with clrcompression.dll was resolved a while ago. Removed a *Nix annotation suppressing a unit test. This is not needed in the test sources since the WinHttpHandler library and tests are only supported on Windows and won't run anymore in CI (disabled in CSPROJ files) for non-Windows platforms. +3831 area-System.Net Intermittent System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success failure See http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5040/ for an instance when this failed. +3832 area-System.Net Test: Add the Cipher Related tests to verify cipher Algorithms not present in the enum. Add the Cipher Related tests to verify cipher Algorithms not present in the enum. +3834 area-System.Linq Expression interpreter - Some instructions lacking an InstructionName Makes it hard to debug the emitted code. E.g. AssignLocalInstruction lacks an override for InstructionName. +3836 area-System.Linq Expression interpreter - Remove dead code There's some unused code in a variety of places of the expression interpreter that can be removed to reduce code size. +3838 area-System.Linq Expression compiler - No support for TryFault and TryCatch with Filter See CoreCLR https://github.com/dotnet/coreclr/issues/1764 for the underlying issue that causes this limitation. Note that this does work in the .NET Framework when emitting to a MethodBuilder that's not backed by a DynamicMethod. We could either get the support for it in CoreCLR or consider an emulation strategy a la a try/catch/rethrow/finally with a Boolean flag to check whether an exception was observed. +3839 area-System.Security System.Security.Cryptography.Algorithms.dll appears multiple time in the reference assemblies When you build the reference assemblies, the assembly System.Security.Cryptography.Algorithms.dll appears 3 times: ./bin/ref/System.Security.Cryptography.Algorithms/4.0.0.0/System.Security.Cryptography.Algorithms.dll ./bin/ref/System.Security.Cryptography.Cng/4.0.0.0/System.Security.Cryptography.Algorithms.dll ./bin/ref/System.Security.Cryptography.X509Certificates/4.0.0.0/System.Security.Cryptography.Algorithms.dll when I think it should only appear in ./bin/ref/System.Security.Cryptography.Algorithms/4.0.0.0/System.Security.Cryptography.Algorithms.dll +3840 area-System.Linq Expression interpreter - No support for TryFault This is not implemented right now. It may be possible to get it to work if we could get a try...fault... region in the interpreter code (in particular in EnterTryCatchFinallyInstruction.Run) but the C# compiler does not have this construct. Some options are: - Get it into the compiled binary using some ILASM magic, possibly by using a helper TryFault method that's self-contained and is parameterized on interpreter instruction ranges (range of try, range of fault, etc.). May be tricky with build. - Piggyback on a C# language construct that emits fault blocks, e.g. using blocks in iterators. An example of this trick is pasted below, but it'd obviously be changed to be parameterized on instruction ranges rather than take in Action delegates. - Emulate try...fault in some lowering phase by rewriting it to try...finally with a Boolean flag check. This could also be the way to get TryFault to work on the compiler, see #3838. Will have to be double-checked to be conform the exception semantics of the CLR construct. ``` csharp static class ExceptionHelpers { public static void TryFault(Action body, Action fault) { TryFaultCore(body, fault).MoveNext(); } private static IEnumerator TryFaultCore(Action body, Action fault) { using (new Handler(fault)) { body(); yield return null; } } } struct Handler : IDisposable { private readonly Action _fault; public Handler(Action fault) { _fault = fault; } public void Dispose() { _fault(); } } ``` +3841 area-System.Linq Expression interpreter - No support for exception filters "The expression interpreter lacks support for TryCatch with a CatchBlock whose Filter property is non-null. This is properly supported in the expression compiler though. Support for this could be likely be added by unflattening the list of catch blocks that are processed by EnterTryCatchFinallyInstruction.Run and using C# 6.0's support for filters to run a region of interpreter instructions when an exception occurs (those would have an ""isinst"" check followed by the user-supplied filter code) which get skipped on regular code paths using a goto. The reason the list of catch blocks needs to be unflattened (just in this case, we can keep things compact in cases where no filters are used) is to ensure that the code in the filters runs prior to unwinding the stack, such that any side-effects are visible across filters and eventually when the handlers run. By piggybacking on the CLR support for filters, we don't have to worry about this stack walk to evaluate which handler to use by running filter expressions; we just have to keep the nesting of exception handlers consistent with the emitted expression. Rough idea: ``` csharp public override int Run(InterpretedFrame frame) { // ... try { // ... } catch (Exception ex) when (RunFilter(frame, _filter.StartIndex, _filter.EndIndex)) { // ... } // ... } ``` There may be some trickiness around keeping the stack balance in all cases, but should be doable. " +3843 area-System.Security Unix AsnEncodedData.Format does not match Windows AsnEncodedData.Format (Apparently I missed this when moving x-plat crypto bugs from TFS to github back in April. Ouch.) The biggest example that people will notice would have to do with Subject Alternative Names. The examples below are `sanExtension.Format(true)` Windows en-US: ``` DNS Name=dns1.subject.example.org DNS Name=dns2.subject.example.org RFC822 Name=sanemail1@example.org RFC822 Name=sanemail2@example.org Other Name: Principal Name=subjectupn1@example.org Other Name: Principal Name=subjectupn2@example.org URL=http://uri1.subject.example.org/ URL=http://uri2.subject.example.org/ ``` Unix (non-localized): ``` DNS:dns1.subject.example.org, DNS:dns2.subject.example.org, email:sanemail1@example.org, email:sanemail2@example.org, othername:, othername:, URI:http://uri1.subject.example.org/, URI:http://uri2.subject.example.org/ ``` And, for good measure, showing that Windows localizes this: Windows es-ES ``` Nombre DNS=dns1.subject.example.org Nombre DNS=dns2.subject.example.org Nombre RFC822=sanemail1@example.org Nombre RFC822=sanemail2@example.org Otro nombre: Nombre de entidad de seguridad=subjectupn1@example.org Otro nombre: Nombre de entidad de seguridad=subjectupn2@example.org Dirección URL=http://uri1.subject.example.org/ Dirección URL=http://uri2.subject.example.org/ ``` Windows ja-JP: ``` DNS Name=dns1.subject.example.org DNS Name=dns2.subject.example.org RFC822 Name=sanemail1@example.org RFC822 Name=sanemail2@example.org Other Name: プリンシパル名=subjectupn1@example.org Other Name: プリンシパル名=subjectupn2@example.org URL=http://uri1.subject.example.org/ URL=http://uri2.subject.example.org/ ``` +3844 area-System.Net Crash in System.Net.Sockets.AsyncServer.Tests in CI on Windows "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5061/consoleFull Not much to go on in the logs: ``` Discovering: System.Net.Sockets.AsyncServer.Tests Discovered: System.Net.Sockets.AsyncServer.Tests Starting: System.Net.Sockets.AsyncServer.Tests d:\j\workspace\dotnet_corefx_windows_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104\lib\tests.targets(129,5): warning MSB3073: The command ""CoreRun.exe xunit.console.netcore.exe System.Net.Sockets.AsyncServer.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing "" exited with code -2146232797. [d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\System.Net.Sockets.AsyncServer.Tests.csproj] d:\j\workspace\dotnet_corefx_windows_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00104\lib\tests.targets(136,5): error : One or more tests failed while running tests from 'System.Net.Sockets.AsyncServer.Tests' please check log for details! ``` " +3845 area-System.Net SslStream_StreamToStream_Authentication_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/5049/console ``` Discovering: System.Net.Security.Tests Discovered: System.Net.Security.Tests Starting: System.Net.Security.Tests System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success [FAIL] Handshake completed in the allotted time Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs(40,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success() ``` +3849 area-System.Globalization Investigate removing Homebrew dependency for ICU The experience when you don't have an ICU or have a mismatched ICU (anything other than version 55) today is not great. Let's improve this experience for rc1 http://userguide.icu-project.org/design#TOC-ICU-Data-Compatibility Starting in ICU 3.8 and later, the data library that comes with ICU is binary compatible and structurally compatible with versions of ICU with the same major and minor version, or a maintenance release. This allows multiple maintenance releases of ICU to share the same data, but generally the latest maintenance release of the data should be used. +3850 area-System.Globalization Modify misc tests to use Invariant culture instead of current culture Also see issue #3759 for background Some tests assume en-us or invariant and on a test machine which is not configured the tests will fail. These tests should not depend on a specific default locale. Below is a set of tests that fail when LANG variable is not set in Linux. These should be fixed to explicitly use Invariant. Note that some of these tests fail due to unrelated but known issue with case-insensitive string comparison that happens to fail with the default locale of en-US-POSIX (when LANG is not set) so these tests may have to be disabled temporary for Linux until that issue is fixed Int32Tests.TestTryParse UInt32Tests.TestTryParse UInt16Tests.TestTryParse UInt64Tests.TestTryParse StringTests.TestLastIndexOf StringTests.TestEndsWith StringTests.TestStartsWith StringTests.TestIndexOf Int16Tests.TestTryParse Int64Tests.TestTryParse TypeTests.TestGetTypeByName Tests.Expression_Tests.TestCallInstanceMethodsByName CaseInsensitiveComparer_ctor.ExecuteCaseInsensitiveComparer_ctor CaseInsensitiveComparer_Default.ExecuteCaseInsensitiveComparer_Default CaseInsensitiveComparer_Object.ExecuteCaseInsensitiveComparer_Object CollectionsUtilTests.ExecuteCollectionsUtilTests System.Reflection.Tests.ModuleTest.GetTypeTest System.Reflection.Tests.MethodInfoPropertyTests.TestReturnType2 System.Reflection.Tests.MethodInfoPropertyTests.TestReturnType4 System.Reflection.Tests.GetTypeReflectionTests.GetType1 System.Reflection.Tests.ParameterInfoNameTests.TestMethodParams1 +3856 area-System.Collections Fix exception documentation on System.Collections.Immutable I noticed in making another change that a bunch of incorrect xml docs describing exceptions existed. This fixes those up by removing the invalid ones and adding explanations for the valid ones. +3857 area-System.Net Shim ip_mreqn, ipv6_mreq, and linger. These types are used for getting and setting IP multicast options. +3858 area-System.Globalization Support all CompareOptions values For cross plat we don't currently support CompareOptions other than Ordinal, IgnoreCase, OrdinalIgnoreCase and None. We need to understand how to support the other options on top of ICU, which has a different collation model than Win32. +3860 area-System.Collections Fix ImmutableList IList implementation for incompatible element types Add 15 unit tests to cover the `ImmutableList` and `ImmutableList+Builder` class's implementation of `IList.Contains`, `IList.Remove`, and `IList.IndexOf` for cases where the `object` argument is not of a compatible type with the type argument for the collection. All 15 of the added unit tests fail. Until the final commit, which fixes all the issues the tests demonstrated. Fix #1414 +3862 area-Meta Investigate all Double-Check locked patterns and consider static or Lazy Investigate all Double-Check locked patterns and consider alternative singleton implementations such as the `static` or `Lazy` patterns. See: http://csharpindepth.com/Articles/General/Singleton.aspx +3863 area-System.Runtime Add System.Runtime.InteropServices.ICustomMarshaler to the contract c.f. [coreclr #1767](https://github.com/dotnet/coreclr/issues/1767) The ICustomMarshaler interface needs to be added to the contract so that people can use it. +3865 area-System.Diagnostics Enable System.Diagnostics.Process.HandleCount property +3866 area-System.Net Implement System.Net.Utilities on OSX and Linux This is the library containing various Ping utilities. +3867 area-System.Net WinHttpHandler uses async WinHTTP patterns This is a large PR and addresses work item #3000. I apologize for not being able to structure it in a series of smaller commits. The bulk of this PR is switching WinHttpHandler to use the async pattern of calling WinHTTP APIs. This involved a significant restructuring of the code. As part of that, I split up the large WinHttpHandler class into multiple, smaller, helper classes. While the intent of using async WinHTTP calls is better performance and cancel-ability, this PR has not been fully optimized yet. Due to the schedule of RC1 code complete next week, it's important that this PR get in and get mileage on it in the next few weeks. There are several TODO items that will be done in later PR's. There is still work being tracked in #2165 for various follow-up items. For example, re-conciling the best SafeHandle pattern to use for WinHTTP between WebSockets.Client and WinHttpHandler. I'm currently using a simple Debug.WriteLine for verbose debug logging which can be turned on/off via environment variable. I plan to switch this to System.Net ETW trace loggers in the next commit and/or PR. But the logging has proved very useful in diagnosing issues. Please provide feedback. Depending on the feedback, some of it will be marked as follow-up items for future PRs. +3872 area-System.Net What is roadmap for HttpListener "It's not regular issue - it's design and road map question about HTTP stack. Our company focused on multi-agent solutions that are installed into multi-node trusted environment. So for recent years we use HttpListener and develop some set of lightweight http-servers, tightly bound to our task. If we need some features as Internet access, SSL, advaced static file support we use NGINX as frontend. So we not require to use some of prepared ASP.NET Servers or IIS while they are not so close to our task. But HttpListener has http.sys implementation in .NET so we require use netsh in Windows, if we use Mono - on Windows we got troubles and bugs and on Linux - all works well. So from netcore(dnx)/corefx we expected that HttpListener class will be kept but rewritten on Mono-like style with own socket wrapping and managed HTTP protocol support. So it would be good base for lightweight HTTP-based solutions. Instead of this we see that (or it seems) that roadmap of netcore is focused on aspnet-related HOSTS and we lost valid HttpListener support, but we are turned to use ASP.NET+MS MVC or Kestrels model. It's not what we expected - all other modules (as Reflection, Xml and so on) moved to more atomic and know-what-you-exactly-want style and design. But in NET stack we still see tendention to using monstrous-like complex ""hosts"". In System.Net.Http we see some improvements for client HTTP but not for Server. May we are not right but we not see activity on HttpListener or it's analog so it's limitation that force as to keep using not unified .NET 4.5 + Mono 4.0.4 stack. What exactly planned in HTTP stack for netcore/dnx? " +3873 area-System.Linq Incorrect assertions on compiling unbox expression `EmitUnboxUnaryExpression(Expression expr)` and `AddressOf(UnaryExpression node, Type type)` (only ever called on an unboxing expression) both assert that the value of the node is not a nullable type. Unboxing to nullable types is valid, and indeed works in release builds where these assertions aren't tested. The assertions cause attempts to test this valid use of unboxing to crash. +3877 area-System.Net Shim various socket methods. This change adds shims for most of the remaining straightforward methods in sockets: - accept - bind - connect - getpeername - getsockname - getsockopt - listen - setsockopt - shutdown +3878 area-System.Collections Add Sort(Comparison) methods to ImmutableArray and Builder ImmutableList and Builder has these Sort overloads, as does Array itself. This makes this same functionality easily accessible from ImmutableArray. Fix #2167 +3880 area-System.Collections Do not throw from ImmutableArray.RemoveRange when index==length ImmutableArray.RemoveRange(int, int) would throw when the first argument equals the length of the array, whereas ImmutableList.RemoveRange(int, int) allows the first argument to equal the length of the list. This makes them consistent by slightly widening the allowed input to ImmutableArray. ImmutableList is changed slightly to simplify the logic (but keep the meaning equivalent). The test is enhanced and a bug in the test fixed. Fix #2028 +3881 area-System.Linq Block.Expressions sometimes throws incorrect exception on out-of-range Given: ``` BlockExpression block = Expression.Block(Expression.Empty(), Expression.Constant(3)); ``` One would expect `block.Expressions[-1]`, `block.Expressions[2]`, etc. to throw `ArgumentOutOfRangeException`. Instead they throw `InvalidOperationException`. This depends on the factory used, so some cases will throw the correct exception, which is perhaps worse as this is then inconsistent. +3882 area-System.Linq Exception on empty block expression inconsistent. `Expression.Block()` throws an `ArgumentException`. `Expression.Block(Enumerable.Repeat(Expression.Parameter(typeof(int)), 1))` throws `InvalidOperaitonException`. They should both throw `ArgumentException`. +3883 area-System.Linq Block.Update returns different expression for identical children in different collection. According to the documentation: > If all of the children are the same, it will return this expression. However, only the enumerables themselves are compared, so a different enumeration of the same children will incorrectly return a new expression. +3887 area-System.Net Merge master into the dev/ni-xplat branch Merging back the changes from dotnet/master into the dev/ni-xplat branch, with all of the code that flowed into master during the PR. I've resolved the few conflicts there were in the shared shim code, which were fairly minor after all. I am planning on separating out the NetworkInformation shim code, so that there's less chance for unrelated changes to result in merge conflicts. +3888 area-System.Xml XmlBaseReader removes significant whitespace when wrapping another reader. "This issue produces data corruption because element contents are modified. We were able to condense the repro to a few lines in LinqPad: var sourceXml = ""a\r\nb\r\nc""; XmlReaderSettings settings = new XmlReaderSettings() { IgnoreWhitespace = true }; var streamToValidate = new MemoryStream(Encoding.UTF8.GetBytes(sourceXml), false); XmlReader dictionaryReader = XmlDictionaryReader.CreateTextReader(streamToValidate, new XmlDictionaryReaderQuotas()); //// XmlReader dictionaryReader = XmlReader.Create(streamToValidate, settings); XmlReader validatingReader = XmlReader.Create(dictionaryReader, settings); XDocument.Load(validatingReader).Dump(); Uncommenting the second dictionaryReader instead of the XmlDictionaryReader doesn’t reproduce the bug. " +3889 area-System.Net Establishing TLS secure channel fails when NewSessionTicket message received **Overview** HttpWebRequest throws error a connection error when a TLS key on the server is changed. Specifically this is the implementation done by CloudFlare. Every hour, on the hour xx:00 a web service fronted by CloudFlare will throw the following exception on the first execution, but all subsequent ones succeed: _System.Net Error: 0 : [7328] Exception in HttpWebRequest#58000300::EndGetResponse - The request was aborted: Could not create SSL/TLS secure channel._ **Sample** Reproducible example here, but it needs to be running right before the hour (xx:59:59) through the following hour (xx:00:00) in order to observe the exception. We are using Fitbit.com as the example as this is fronted by the CloudFlaire service: https://github.com/aarondcoleman/FitbitProxyTest **Other Links** - More info on how CloudFlare works: https://blog.cloudflare.com/tls-session-resumption-full-speed-and-secure/ - Forum thread on this issue: https://social.msdn.microsoft.com/Forums/vstudio/en-US/eb999cd4-b43b-4779-b01b-4a04017714e3/httpwebrequest-ssl-caching-bug-cloudflare-the-request-was-aborted-could-not-create-ssltls?forum=netfxbcl - System.Net.Trace showing the occurence at the changeover of hour: https://github.com/aarondcoleman/FitbitProxyTest/blob/master/System.Net.Trace.Log This is of high importance as our integration with the Fitbit API is affected. Every first call of the hour to the API fails per server node of our infrastructure. +3890 area-System.Net Shim Interop.libc.socket(). +3891 area-System.Net WinHttpHandler: Support retrieving the Trusted Issuer List from WinHTTP Get the Trusted Issuers List from WinHTTP and use that to help narrow down the list of eligible client certificates used in the WinHttpCertificateHelper class. +3892 area-System.Security Unix X500DistinguishedName prints multicomponent RDNs different than Windows "Normal certificate subjects are similar to ``` Sequence( Set(Sequence(Oid(CN), PrintableString(""CommonName""))), Set(Sequence(Oid(O), PrintableString(""Organization"")))) ``` When presented with a multi-component RDN like ``` Sequence( Set( Sequence(Oid(CN), PrintableString(""CommonName"")), Sequence(Oid(O), PrintableString(""Organization"")))) ``` Windows prints `CN=CommonName + O=Organization`. The OpenSSL library seems to float the latter into the former, resulting in Unix builds printing `CN=CommonName, O=Organization`. This is not expected to be very common, and Windows has an explicit disrecommendation for this on MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/aa376556%28v=vs.85%29.aspx - under Remarks): > We recommend against using multicomponent RDNs (e.g., CN=James+O=Microsoft) to avoid possible ordering problems when decoding occurs. Instead, consider using single valued RDNs (e.g., CN=James, O=Microsoft). " +3893 area-System.Security Unix X509Certificate2.SerialNumber doesn't include leading zero-bytes When the serial number's most significant byte has the most significant bit set, Windows includes a leading `0x00` to prevent it from being interpreted as a negative value. Unix does not. +3894 area-System.Net Documentation for HttpClient methods should state which exceptions can be thrown by the returned task Not 100% sure this is the right place for it, but it looks like HttpClient is in this repository so I'm reporting this here. The documentation for HttpClient methods (and async methods in general) should state which exceptions can be thrown by the returned task instead of just the exceptions that can be thrown by the method that returns the task. As example of this is the documentation for [HttpClient.GetStringAsync](https://msdn.microsoft.com/en-us/library/hh551746%28v=vs.118%29.aspx). Without this documentation you either have to catch everything ([well-documented as a bad practice](https://msdn.microsoft.com/en-us/library/ms182137.aspx?f=255&MSPPError=-2147217396)) or make educated guesses based on experimentation and [digging](https://stackoverflow.com/questions/24689263/exception-handling-for-httpclient-getstringasyncurl-async-api-call) through [various](https://social.msdn.microsoft.com/Forums/en-US/d8d87789-0ac9-4294-84a0-91c9fa27e353/bug-in-httpclientgetasync-should-throw-webexception-not-taskcanceledexception?forum=netfxnetcom) posts online, and if you go that route it's easy to miss that it throws, e.g., InvalidOperationException if the charset of the content type of the requested page can't be parsed into an encoding. +3895 area-System.Net Revising System.Net.Sockets contract v4.1 This issue discusses the changes being proposed in the current API surface of `System.Net.Sockets` contract version 4.1 in .NET Core. Version 4.1 is currently at an experimental stage and this revision takes it closer to the shape we intend to release at ASP.NET 5 RTM. ## Rationale .NET Core as a platform is intended to be modern, performant and cross-plat, so we need to ensure that the API surface is streamlined and adapted accordingly. This revision omits some of the Windows-specific or legacy types and methods that were present in the earlier (beta8) version of 4.1, and now includes new methods that follow the recommended TPL (async/await) pattern. ## Proposed API and Usage Following are the new Task Parallel Library-compatible methods being added to the class `System.Net.Sockets.Socket`. These are being added as extension methods to `Socket` class so that they can be supported on .NET framework via an OOB package as well (since we cannot add instance methods to types that are already defined in the .NET framework) ``` c# public static partial class SocketTaskExtensions { public static System.Threading.Tasks.Task AcceptAsync(this System.Net.Sockets.Socket socket) public static System.Threading.Tasks.Task AcceptAsync(this System.Net.Sockets.Socket thisSocket, System.Net.Sockets.Socket acceptSocket) public static System.Threading.Tasks.Task ConnectAsync(this System.Net.Sockets.Socket socket, System.Net.EndPoint remoteEndPoint) public static System.Threading.Tasks.Task ConnectAsync(this System.Net.Sockets.Socket socket, System.Net.IPAddress address, int port) public static System.Threading.Tasks.Task ConnectAsync(this System.Net.Sockets.Socket socket, System.Net.IPAddress[] addresses, int port) public static System.Threading.Tasks.Task ConnectAsync(this System.Net.Sockets.Socket socket, string host, int port) public static System.Threading.Tasks.Task ReceiveAsync(this System.Net.Sockets.Socket socket, System.ArraySegment buffer, System.Net.Sockets.SocketFlags socketFlags) public static System.Threading.Tasks.Task ReceiveAsync(this System.Net.Sockets.Socket socket, System.Collections.Generic.IList> buffers, System.Net.Sockets.SocketFlags socketFlags) public static System.Threading.Tasks.Task ReceiveFromAsync(this System.Net.Sockets.Socket socket, System.ArraySegment buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint) public static System.Threading.Tasks.Task ReceiveMessageFromAsync(this System.Net.Sockets.Socket socket, System.ArraySegment buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint) public static System.Threading.Tasks.Task SendAsync(this System.Net.Sockets.Socket socket, System.ArraySegment buffer, System.Net.Sockets.SocketFlags socketFlags) public static System.Threading.Tasks.Task SendAsync(this System.Net.Sockets.Socket socket, System.Collections.Generic.IList> buffers, System.Net.Sockets.SocketFlags socketFlags) public static System.Threading.Tasks.Task SendToAsync(this System.Net.Sockets.Socket socket, System.ArraySegment buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndpoint) } public struct SocketReceiveFromResult { public int ReceivedBytes; public EndPoint RemoteEndPoint; } public struct SocketReceiveMessageFromResult { public int ReceivedBytes; public SocketFlags SocketFlags; public EndPoint RemoteEndPoint; public IPPacketInformation PacketInformation; } ``` The usage of these new methods is the same as other APIs in .NET that follow the async/await pattern. For example: ``` c# private async void ConnectToServerAsync () { var socket = new Socket(SocketType.Stream, ProtocolType.Tcp); await socket.ConnectAsync(serverAddress, serverPort); // Use connected socket. } ``` ## Pull Request The pull request for this API change is #3655. It shows the diff from the previous revision of this contract, so you can see the types and methods that are no longer included in the proposed revision. ## Updates from Discussion - Revised initial proposal based on API review feedback from @terrajobst - Revised the signatures of methods `ReceiveFromAsync` and `ReceiveMessageFromAsync` based on feedback from @CIPop and @stephentoub - these async methods were modifying multiple variables through `ref` and `out` parameters. In order to avoid this, we have now defined their return values as structs (`SocketReceiveFromResult` and `SocketReceiveMessageFromResult`) that contain all the variables returned by the respective async methods. These new structs will also be added to the contract. - Also revised `ReceiveAsync` and `SendAsync` methods to accept `ArraySegment` as input parameter, in order to match existing APIs. - Need to add overloads for methods such as ConnectAsync, SendAsync and ReceiveAsync that take CancellationTokens to support canceling the operations +3905 area-System.Net Disable failing socket tests running in elevated mode Some of the cases expected to fail don't actually fail when running elevated. See https://github.com/dotnet/corefx/issues/3726. This disables those test cases so the tests can run in elevated mode. +3906 area-System.Diagnostics PerformanceCounters - Read OS counters on .NET Core Currently CoreFX generates the reference assembly System.Diagnostics.PerformanceCounter.dll however, there doesn't seem to be any counter part implementation for it, nor can I see an entry for this in the progress page at https://github.com/dotnet/corefx-progress/blob/master/src-diff/README.md. Is this expected? Thanks +3908 area-System.Linq Incorrect exception in parameterised block's last child is null. Creating a block from a list of expressions which contains a null normally throws `ArgumentNullException`. However, if this null expression is the last expression, and if the block has variables and doesn't have an explicitly set type, then it throws `NullReferenceException` instead. +3909 area-System.Linq Wrong parameter name when creating block with erroneous element Creating a `BlockExpression` with a null or unreadable expression throws `ArgumentNullException` and `ArgumentException` respectively. However, if the call was made to one of the overloads that receives these expressions as `IEnumerable` or `params Expression[]` and there is no explicit type, no variables and the number of expressions is between 2 and 5, then the parameter name in the exception throw is incorrect. +3911 area-System.Net Finish most of the sockets shims. - Shim SocketFlags - Shim select() - Fix some issues with error propagation in socket creation and accepted sockets The only functions that have not been shimmed are those relied upon for event notification (epoll/kqueue). +3913 area-System.Net System.Net.Sockets 4.1. contract contains several Windows-specific APIs and APM pattern methods This issue tracks the removal of some APIs from the Sockets contract in order to align it better to the .NET Core platform. ## Rationale The current version of Sockets 4.1 contract in beta8 includes some types, properties and methods that are tied to Windows-specific concepts. Since .NET Core is intended to be cross-plat, these need to be excluded in order to provide similar behavior and API surface across platforms. Further, the Sockets contract also contains methods following the APM pattern (Begin/End), which is not supported for other APIs within .NET Core. Hence, these methods are being excluded and new methods are being added that follow the recommended pattern TPL-based pattern of async/await (See #3895). Lastly, there are some constructors that are performing expensive, blocking operations within the constructor - these need to be removed as well. This issue tracks the removal of these APIs - a related issue is #3895 , which tracks addition of the TPL-based methods. ## Proposed API Exclusions Following are the types, properties and methods being excluded by the proposed revision to the contract: ### Types: ``` c# public partial struct SocketInformation public enum SocketInformationOptions public enum TransmitFileOptions ``` ### Properties/Methods/Constructors: ``` c# Type: Socket public Socket(System.Net.Sockets.SocketInformation socketInformation) public System.IAsyncResult BeginAccept - all overloads public System.IAsyncResult BeginConnect - all overloads public System.IAsyncResult BeginDisconnect public System.IAsyncResult BeginReceive - all overloads public System.IAsyncResult BeginReceiveFrom public System.IAsyncResult BeginReceiveMessageFrom public System.IAsyncResult BeginSend - all overloads public System.IAsyncResult BeginSendTo public void Disconnect(bool reuseSocket) public bool DisconnectAsync(System.Net.Sockets.SocketAsyncEventArgs e) public System.Net.Sockets.SocketInformation DuplicateAndClose(int targetProcessId) public System.Net.Sockets.Socket EndAccept - all overloads public void EndConnect(System.IAsyncResult asyncResult) public void EndDisconnect(System.IAsyncResult asyncResult) public int EndReceive - all overloads public int EndReceiveFrom(System.IAsyncResult asyncResult, ref System.Net.EndPoint endPoint) public int EndReceiveMessageFrom(System.IAsyncResult asyncResult, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint endPoint, out System.Net.Sockets.IPPacketInformation ipPacketInformation) public int EndSend - all overloads public int EndSendTo(System.IAsyncResult asyncResult) public void SetIPProtectionLevel(System.Net.Sockets.IPProtectionLevel level) Type: SocketAsyncEventArgs public bool DisconnectReuseSocket public System.Net.Sockets.TransmitFileOptions SendPacketsFlags Type: SocketFlags MaxIOVectorLength Type: TcpClient public TcpClient(System.Net.IPEndPoint localEP) public TcpClient(string hostname, int port) public System.IAsyncResult BeginConnect - all overloads public void Connect - all overloads public void EndConnect(System.IAsyncResult asyncResult) Type:TcpListener public System.Net.Sockets.Socket AcceptSocket() public System.Net.Sockets.TcpClient AcceptTcpClient() public void AllowNatTraversal(bool allowed) { } public System.IAsyncResult BeginAcceptSocket(System.AsyncCallback callback, object state) public System.IAsyncResult BeginAcceptTcpClient(System.AsyncCallback callback, object state) public static System.Net.Sockets.TcpListener Create(int port) public System.Net.Sockets.Socket EndAcceptSocket(System.IAsyncResult asyncResult) public System.Net.Sockets.TcpClient EndAcceptTcpClient(System.IAsyncResult asyncResult) Type:UdpClient public UdpClient(string hostname, int port) public void AllowNatTraversal(bool allowed) public System.IAsyncResult BeginReceive(System.AsyncCallback requestCallback, object state) public System.IAsyncResult BeginSend - all overloads public void Connect - all overloads public byte[] EndReceive(System.IAsyncResult asyncResult, ref System.Net.IPEndPoint remoteEP) public int EndSend(System.IAsyncResult asyncResult) public byte[] Receive(ref System.Net.IPEndPoint remoteEP) public int Send - all overloads public Task SendAsync(byte[] datagram, int bytes) ``` ## Pull Request The pull request that implements the removal of the above APIs is #3655 ## Discussion We are looking for feedback on the removal of these APIs based on the rationale described above. Also, if your code uses any of these APIs, please look at the revised contract in the PR for alternatives to use instead. If you believe the alternatives are not sufficient to address specific scenarios, that would be good to raise here as well. +3915 area-System.Net ClientAsyncAuthenticate_EachProtocol_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/5187/console ``` System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachProtocol_Success [FAIL] Timed Out Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(196,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(90,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachProtocol_Success() ``` +3918 area-System.Net Create a placeholder stub for WebSockets.Client for non-Windows platforms WCF currently depends on WebSockets.Client API, but this API is not exposed on non-Windows platforms. There is a plan to add this in the future, but that will not happen in RC timeframe. However, we need to at least provide a placeholder stub so that WCF code will at least compile. @vijaykota - PTAL. +3920 area-System.Net Switched Sockets perf tests to Benchmarks "Rough draft of what the sockets tests will look switched to use Benchmarks for the perf tests. These perf tests run on Windows and give reasonable results, but on Linux they throw an error that ""ws2_32.dll"" is missing. replaces #3765 Results for Windows running on the core framework: ``` ``` Results for Windows running on the full framework: ``` ``` Times are in ms. @davidsh @pgavlin @cipop @stephentoub " +3922 area-System.Net Add a temporary PAL for ClientWebSocket. On Windows, the PAL delegates to WinHttpWebSocket; on *nix, all methods throw PlatformNotSupportedException. +3924 area-Infrastructure System.Security.Cryptography.Native fails to build on OSX El Capitan (10.11) It looks like that El Capitan may have removed the OpenSSL headers we depend on. @gkhanna79 is hitting some issues locally because `openssl/asn1.h` is not found. It would appear that the libraries we link against are still present in El Captian (so the .dylib we build should still run there) we just can't seem to build it out of the box. We need to figure out what the correct work around is (does installing the previous version of XCode or the command line compiler tools work, or maybe we need to get the headers via homebrew or something else)? The fact that Apple is on a 0.9.8 version of OpenSSL seems like it will also hurt us in obtaining the correct headers from a reasonably up to date package manager. +3926 area-System.Net Merge changes from TFS +3930 area-Meta Windows 7 build fails (update dev instructions about proxies and myget.org access) "I've been trying to build the latest good build for a couple of hours, I've updated dnvm and dnu build still cannot build: EXEC : error : FindPackagesById: Microsoft.NETCore.Platforms [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: coveralls.io [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: Microsoft.NETCore.Console [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: Microsoft.NETCore.TestHost [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: OpenCover [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: Microsoft.NETCore.Platforms [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: coveralls.io [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: Microsoft.NETCore.TestHost [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: Microsoft.NETCore.Console [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: OpenCover [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: xunit.runner.utility [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: Microsoft.NETCore.Platforms [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: ReportGenerator [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: Microsoft.NETCore.Platforms [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: xunit.runner.utility [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. EXEC : error : FindPackagesById: ReportGenerator [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: Microsoft.DotNet.xunit.performance.analysis [c:\git\dotnet\corefx\build.proj] HTTP request timed out. Exiting. EXEC : error : FindPackagesById: ReportGenerator [c:\git\dotnet\corefx\build.proj] An error occurred while sending the request. c:\git\dotnet\corefx\build.proj(24,5): error MSB3073: The command """"c:\git\dotnet\corefx\packages//dnx-coreclr-win-x86.1.0.0-beta7/ \bin\dnu.cmd"" restore --packages ""c:\git\dotnet\corefx\packages"" --source https://www.myget.org/F/dotnet-core/ --source https://www .myget.org/F/dotnet-coreclr/ --source https://www.myget.org/F/dotnet-corefxtestdata/ --source https://www.myget.org/F/dotnet-buildt ools/ --source https://www.nuget.org/api/v2/ ""c:\git\dotnet\corefx\src"" ""c:\git\dotnet\corefx\packages/Microsoft.DotNet.BuildTools. 1.0.25-prerelease-00104/lib/"""" exited with code 1. I'd think this should ""just work"", did I miss an install or setup step? " +3934 area-Meta Produce reference assembly packages for everything that exists today in `c:\Program Files(x86)\Reference Assemblies` It would be great to not require visual studio installs to compile for any of the framework defined in `c:\Program Files(x86)\Reference Assemblies`. We don't have to do all up front but we could start with the most popular ones (this includes all of the PCL profiles as well). It would make it possible to compile PCLs on mono without installing the `xbuild-frameworks` package. It would also make it possible to compile class libraries on linux targeting .NET Framework. I would allow us to delete this entire class that I hate so much :smile: https://github.com/aspnet/dnx/blob/dev/src/Microsoft.Dnx.Runtime/FrameworkReferenceResolver.cs +3935 area-System.Security Unix FindBySubjectKeyIdentifier does not do the same fallback as Windows It turns out that a lot of the test failing marked as #3099 aren't failing due to that problem. The test failures coming from a PFX was a red herring. In the case of the System.Security.Cryptography.X509Certificates.Tests.FindTests.TestBySubjectKeyIdentifier_MatchA test case, it was actually testing the fallback behavior of [CertGetCertificateContextProperty(CERT_KEY_IDENTIFIER_PROP_ID)](https://msdn.microsoft.com/en-us/library/windows/desktop/aa376079%28v=vs.85%29.aspx#_CERT_KEY_IDENTIFIER_PROP_ID): > If nonexistent, searches for the szOID_SUBJECT_KEY_IDENTIFIER extension. If that fails, a SHA1 hash is done on the certificate's SubjectPublicKeyInfo member to produce the identifier values. So, yeah, we should do that. +3936 area-System.Security X509Duplicate is used like X509UpRef, but may actually allocate new memory, investigate usages For the most part the callers of the function use it to turn cert.Handle (IntPtr) into a SafeX509Handle. There are probably good-and-less-expensive ways of doing that. +3942 area-Infrastructure Set AssemblyInfomationalVersion to package version It would make tracking down builds so much easier. /cc @ericstj +3948 area-System.Net Linux Sockets: Background thread NullReferenceException in APMServer Tests http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3552/ ``` Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Net.Sockets.SafeCloseSocket.get_AsyncContext() at System.Net.Sockets.SocketPal.AcceptAsync(Socket socket, SafeCloseSocket handle, SafeCloseSocket acceptHandle, Int32 receiveSize, Int32 socketAddressSize, AcceptOverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.DoBeginAccept(Socket acceptSocket, Int32 receiveSize, AcceptOverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginAccept(Socket acceptSocket, Int32 receiveSize, AsyncCallback callback, Object state) at System.Net.Sockets.Socket.BeginAccept(Int32 receiveSize, AsyncCallback callback, Object state) at System.Net.Sockets.Socket.BeginAccept(AsyncCallback callback, Object state) at System.Net.Sockets.Tests.SocketTestServerAPM.OnAccept(IAsyncResult result) at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Net.ContextAwareResult.CompleteCallback(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.ContextAwareResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.LazyAsyncResult.InvokeCallback(Object result) at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32 numBytes, SocketError errorCode) at System.Net.Sockets.AcceptOverlappedAsyncResult.CompletionCallback(Int32 acceptedFileDescriptor, Byte[] socketAddress, Int32 socketAddressLen, SocketError errorCode) at System.Net.Sockets.SocketAsyncContext.AcceptOperation.InvokeCallback() at System.Net.Sockets.SocketAsyncContext.AsyncOperation.b__26(Object o) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 6. ``` +3949 area-System.Net Merge changes from TFS +3951 area-System.Net Complete x-plat implementations of NetworkInformation This brings all of my pending changes into the corefx dev/ni-xplat branch. At this point, all of the members in this library are either implemented or throw a PlatformNotSupportedException. The only exception for this is NetworkChange.NetworkAddressChanged, which is implemented on Linux, but not yet on OSX. The implementation for that looks like it will be fairly complicated, so I am going to try to get everything else checked in before attempting it. Before moving all of this into corefx/master, I'll try to address any pending cleanup and refactoring that reviewers recomnmend. The goal is to get the code here into corefx/master by our Wednesday feature deadline. After that, and before RC1 releases, I will make do some additional code cleanup and add more test validation to the library; to the string parsing logic in particular. +3952 area-System.Security Unix AES in-place decryption returns incorrect answers There was a specific test, VerifyInPlaceEncryption, that passed. Another test, TransformStateSeparation, was marked as failing due to #1965. #1965 is fixed locally (it was a test bug), but TransformStateSeparation continues to fail. Investigation showed that the problem went away without using in-place decryption. So now TransformStateSeparation uses distinct buffers for input and output, and a new test, VerifyInPlaceDecryption, tracks this new failure. +3954 area-System.Net Support channel binding in xplat SslStream WCF uses the SslStream.TransportContext property from the client to the server. This requires support for the GetChannelBinding method +3956 area-Infrastructure Disk space for Mac CI tests "All CI tests are failing with ""There is not enough space on the disk."" on dotnet_corefx_mac_release_prtest " +3957 area-System.Linq CatchBlock with named exception variable should have space in before variable name on ToString() "The result of `Expression.Catch(Expression.Variable(typeof(Exception), ""ex""), Expression.Empty()).ToString()` is `catch (Exceptionex) { ... }`. It should be `catch (Exception ex) { ... }`. " +3958 area-System.Linq Many XxxExpression.Update returns different expression for identical children in different collection. According to the documentation: > If all of the children are the same, it will return this expression. However, only the enumerables themselves are compared, so a different enumeration of the same children will incorrectly return a new expression. In particular a `TryExpression` with no catch blocks (valid if the expression has a finally or fault block) must be `Update`d with the empty `Handlers` property it holds fed back to it, rather than `null` or another empty collection of handlers. +3962 area-System.Net Finish the shims for S.N.Sockets. - Unify the remaining platform-specific managed bits: Information on platform support for multiple connection attempts and dual-stack IPv4 packet info is now provided by a pair of shim functions rather than compile-time constants. - Change Interop.Sys.Socket() to be more restrictive in the address families, socket types, and protocol families it allows. The code now only recognizes values that we have mappings for and returns appropraite errors otherwise. - Delete some leftover files. +3963 area-Serialization Generalized serialization surrogate support Provide a solution for types that are serializable on desktop .NET but not on .NET Core +3966 area-Infrastructure Upgrade CoreFX to buildtools 106 Consumes some changes to perf testing from https://github.com/dotnet/buildtools/pull/308 @stephentoub @mellinoe +3967 area-Infrastructure Code coverage badge is out of date **Line coverage** Badge number: 56.8% Actual number: 57.8% **Branch coverage** Badge number: 45.5% Actual number: 47.0% +3968 area-System.Globalization [System.Globalization] TestLocaleAlternateSortOrder failed (local build) "``` Discovering: System.Globalization.Tests Discovered: System.Globalization.Tests Starting: System.Globalization.Tests System.Globalization.Tests.CompareInfoTest.TestLocaleAlternateSortOrder(locale: ""de-DE"", string1: ""њ"", string2: ""UE"", expected: -1) [FAIL] Assert.Equal() Failure Expected: -1 Actual: 1 Stack Trace: E:\Workspace\github\corefx\src\System.Globalization\tests\CompareInfo\compareinfo.cs(137,0): at System.Globalization.Tests.CompareInfoTest.TestLocaleAlternateSortOrder(String locale, String string1, String string2, Int32 expected) System.Globalization.Tests.CompareInfoTest.TestLocaleAlternateSortOrder(locale: ""de-DE_phoneb"", string1: ""њ"", string2: ""UE"", expected: 0) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: E:\Workspace\github\corefx\src\System.Globalization\tests\CompareInfo\compareinfo.cs(137,0): at System.Globalization.Tests.CompareInfoTest.TestLocaleAlternateSortOrder(String locale, String string1, String string2, Int32 expected) Finished: System.Globalization.Tests === TEST EXECUTION SUMMARY === System.Globalization.Tests Total: 1145, Errors: 0, Failed: 2, Skipped: 0, Time: 6,192s ``` " +3969 area-System.Net [System.Net.NetworkInformation] BasicTest_AccessInstanceProperties_NoExceptions test failed (local build) ``` System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.BasicTest_AccessInstanceProperties_NoExceptions [FAIL] Overflow Expected: True Actual: False Stack Trace: Discovered: System.Composition.Tests E:\Workspace\github\corefx\src\System.Net.NetworkInformation\tests\FunctionalTests\NetworkInterfaceBasicTest.cs(39,0): at System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.BasicTest_AccessInstanceProperties_NoExceptions() Finished: System.Net.NetworkInformation.Functional.Tests Starting: System.Composition.Tests === TEST EXECUTION SUMMARY === System.Net.NetworkInformation.Functional.Tests Total: 19, Errors: 0, Failed: 1, Skipped: 0, Time: 3,682s ``` +3970 area-System.Net Add System.Net.NetworkInformation to README.md @stephentoub @SidharthNabar @CIPop @pgavlin PTAL +3971 area-System.Net Add System.Net.NetworkInformation to README.md +3972 area-System.Globalization Hungarian double compression test failing on Linux "``` C# CultureInfo.CurrentCulture = new CultureInfo(""hu-HU""); Console.WriteLine(""dzsdzs"".IndexOf(""ddzs"")); ``` This prints out 0 on Windows but -1 on Linux. If StringComparison.CurrentCultureIgnoreCase is used instead of the CurrentCulture default, both Windows and Linux print out 0. " +3973 area-System.Globalization Diacritics test failing on Linux "``` C# CultureInfo.CurrentCulture = new CultureInfo(""en-US""); Console.WriteLine(""Exhibit a\u0300\u00C0"".IndexOf(""\u0300"")); ``` Using both StringComparison.CurrentCulture, CurrentCultureIgnoreCase, or OrdinalIgnoreCase, on Windows this prints out 9, but on Linux it prints out -1. " +3975 area-System.Net System.Net.Sockets.Tests failing ``` System.Net.Sockets.Tests -> E:\oss\corefx\bin\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\System.Net.Sockets.Tests.dll xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.Sockets.Tests Discovered: System.Net.Sockets.Tests Starting: System.Net.Sockets.Tests System.Net.Sockets.Tests.UdpClientTest.BeginSend_Success [FAIL] System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used Stack Trace: E:\oss\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3213,0): at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) E:\oss\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3158,0): at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, In t32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) E:\oss\corefx\src\System.Net.Sockets\src\System\Net\Sockets\UDPClient.cs(598,0): at System.Net.Sockets.UdpClient.BeginSend(Byte[] datagram, Int32 bytes , IPEndPoint endPoint, AsyncCallback requestCallback, Object state) E:\oss\corefx\src\System.Net.Sockets\tests\FunctionalTests\UdpClientTest.cs(59,0): at System.Net.Sockets.Tests.UdpClientTest.BeginSend_Success() Finished: System.Net.Sockets.Tests ``` I think it might be some kind of intermittent issue. +3978 area-System.Net Shim the last platform APIs used by S.N.NameResolution. gethostbyaddr and gethostbyname had not yet been shimmed. +3982 area-System.Data System.Data.SqlClient package regression: no DNXCore50 build in 4.0.0-beta-23409 "I can't find anywhere this is intentional - so assuming it's a bug. Between `4.0.0-beta-23225` and `4.0.0-beta-23409` (current) the DNXCore50 lib was dropped. This of course breaks anyone with `4.0.0-beta-*` doing a `dnxcore50` build. Here's a better illustration of the problem: Was this an intentional change I just can't find the documentation for, or does nuget.org just need an fixed build here? Or am I an idiot? All of these are valid options. " +3985 area-System.Net Implement HttpContentAsyncStream.Write in CurlHandler WCF ends up trying to use Stream.Write as part of HttpContent.CopyToAsync implementation. While that should be addressed separately to use WriteAsync, it's possible others are also using Write instead of WriteAsync, and today we throw NotSupportedException from Write. So as to let this at least work, I'm implementing Write to delegate to WriteAsync. I also noticed we were missing a FlushAsync implementation, so I've added one. cc: @davidsh, @roncain, @kapilash +3986 area-System.IO Use Optimized Zlib-Intel to Build clrcompression.dll **Summary** Intel has developed an optimized version of Zlib that includes architecture specific optimizations and algorithmic changes to improve the included deflate() and crc32() functions. Since System.IO.Compression calls out to these functions through clrcompression.dll, I suggest that Zlib-Intel to be used to build clrcompression.dll. **Test Results** I have compiled the library myself, and by renaming the .dll to clrcompression.dll and replacing the clrcompression included with .NET Core, I see an improvement of **20-30%** when doing compression using GZipStream on an Intel® 5th Generation Core (tm) i5 Processor based system, as well as on an Intel® Xeon® Processor E5 v2 Family based server system. The gain comes entirely from the optimized deflate() function. **Link** The developer of Zlib-Intel has provided support for VS Intrinsics here: https://github.com/jtkukunas/zlib/tree/win32_nmake +3993 area-System.IO "Overload of Directory.DeleteDirectory(""path"", true) that deletes what it can and leaves rest" Whenever we have clean up code to remove directories and files, we always end up with hacks to workaround issues with readonly files, handles being temporarily held. The is no reliable mechanism to delete the folders and files, and there is no mechanism to skip failures and report them at the end. Which leads to poor implementations that fail on long paths, sym and hard links, and random errors. See: https://github.com/NuGet/NuGet.Client/pull/13 http://stackoverflow.com/questions/329355/cannot-delete-directory-with-directory-deletepath-true And many more random suggestions pop up on the interwebs CC // @xavierdecoster +3995 area-System.Linq Add tests for expression interpreter Cross-check expression interpreter against expression compiler by using a catalog of expressions. +4001 area-System.Net Fix assert and leak of WinHttpRequestState object Discovered during testing with DEBUG version of CoreCLR running internal ToF tests. The design of the WinHttpRequestState is such that it stays alive due to a GCHandle.Alloc(this) in its constructor. This keeps the object alive during any of the native WinHTTP callbacks. However, the object was being prematurely disposed during the Dispose() of the WinHttpResponseStream. Instead, it should have been explicitly disposed during the final HANDLE_CLOSING callback from WinHTTP when the request handle was disposed. The early disposing of the WinHttpRequestState object was doing a GCHandle.Free() of the state object. This later caused an Assert() in the DEBUG version of the CoreCLR when doing GCHandle.FromIntPtr() indicating that the handle was already deallocated. +4002 area-System.Net "Sockets tests depend on ""localhost"" resolving to an IPv6 and an IPv4 address" This is not always the case on Linux: how the name resolves depends on the host's configuration. +4003 area-System.Net Socket_SendToAsyncV4IPEndPointToV4Host_Throws_Unix fails on OSX. +4004 area-System.Net OS X does not provide IPv4 packet info for dual-stack sockets. There is not likely to be a mitigation, so this will probably just need to be documented. +4005 area-System.Net AcceptV6BoundToSpecificV6_Success fails on *nix. +4006 area-System.Net Socket_SendToAsyncV4IPEndPointToV4Host_Throws fails on *nix. There is a mismatch in the error code returned by Socket.SendToAsync. +4007 area-System.Net Consider implementing Socket.SendPacketsAsync on *nix. +4008 area-System.Net Linger time is incorrect on OS X for boundary values. +4009 area-System.Net Sockets APM performance tests fail on OS X. This is possibly due to a large number of open sockets: IIRC the default limit for open file descriptors on OS X is 256; these tests may open many more when run in parallel. +4010 area-System.Net Address PR feedback for System.Net.Sockets. I've also replaced all of the dummy issues with the actual issue numbers. Fixes #3441. +4012 area-System.Net Merge master back into dev/ni-xplat I'm going to put this PR here to check that it passes CI. I'll merge once it completes then rebase my work against master and submit there. +4014 area-System.Linq IRuntimeVariables implementations inconsistent on out-of-range access "Some of the implementations of `IRuntimeVariables` that can be produced from `RuntimeVariablesExpression` will, when indexed with an out-of-range index, throw `ArgumentOutOfRangeException` with a `ParamName` value of `""index""` as one would expect. Some however will throw `IndexOutOfRangeException`. " +4018 area-System.Linq Expression interpreter - Issue with MemberInit "See disabled test ""CompileInterpretCrossCheck_MemberInit"" in PR for #3995. System.Exception : Error for expression 'new MI2() {MI1 = {X = 42, Y = ""qux""}, Bars = {Void Add(Int32)(2), Void Add(Int32)(3), Void Add(Int32)(5)}}': ``` System.NullReferenceException: Object reference not set to an instance of an object. at System.Linq.Expressions.Interpreter.LightCompiler.CompileMember(Expression from, MemberInfo member) in src\System\Linq\Expressions\Interpreter\LightCompiler.cs:line 2415 ``` " +4019 area-System.Linq Expression interpreter - Issue with Convert "See disabled test ""CompileInterpretCrossCheck_Convert"" in PR for #3995. System.Exception : Error for expression 'Convert(null)': ``` Xunit.Sdk.NotNullException: Assert.NotNull() Failure ``` " +4020 area-System.Linq Expression interpreter - Issue with Invoke "See disabled test ""CompileInterpretCrossCheck_Invoke"" in PR for #3995. System.Exception : Error for expression '{var Param_0;var Param_1;var Param_2; ... }': ``` Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: (null) Actual: 1 ``` " +4021 area-System.Linq Expression interpreter - Issue with Unbox "See disabled test ""CompileInterpretCrossCheck_Unbox"" in PR for #3995. System.Exception : Error for expression 'Unbox(null)': ``` Xunit.Sdk.NotNullException: Assert.NotNull() Failure at Xunit.Assert.NotNull(Object object) ``` " +4022 area-System.Linq Expression interpreter - Issue with ConvertChecked "See disabled test ""CompileInterpretCrossCheck_ConvertChecked"" in PR for #3995. System.Exception : Error for expression 'ConvertChecked(False)': ``` Xunit.Sdk.NotNullException: Assert.NotNull() Failure at Xunit.Assert.NotNull(Object object) ``` " +4030 area-System.Security Adding a dependency in one project.json breaks build very badly "Adding the following line in `src\System.Net.Http\src\project.json` is breaking build (on all platforms). ``` ""System.Security.Cryptography.OpenSsl"": ""4.0.0-beta-*"", ``` Firstly, running build in the root directory results in failure in the package restore step. This error is due to e945fa2b4e1d54ee68c92e8d027e99fc4b894448 Strangely, only on windows, we get to go past this just by running `build.cmd` again. Secondly, even if we revert the above commit, The build break is not just in System.Net.Http project but across the board. The following projects are broken because of one line change in one project.json : - `System.Net.Security` - `System.Net.Sockets` - `System.Security.AccessControl` - `System.Security.Cryptography.Algorithms` and a few more. I can see from the build logs that the System.Security.Cryptography etc are missing from the references. I am not able to figure out if this is an issue with dnu's resolution mechanism (coupled with the dependencies in corefx) or if this a problem with current version of this particular package. Please note that this was working till very recently in a PR. Am seeing this only when I tried to rebase it with master. " +4031 area-System.Net Fix System.Net's Interop.OpenSsl error handling There are 2 issues with OpenSsl's current error handling 1. In Interop.OpenSsl.Disconnect, we are ignoring the SSL_get_error error code, and just continuing even though there was an error from SSL_shutdown. 2. There are 2 sets of error codes in OpenSSL: 1. Those defined in err.h 2. Those defined in ssl.h These two sets overlap, for example ERR_R_SYS_LIB = 2 and SSL_ERROR_WANT_READ = 2. In Interop.OpenSsl.GetSslError, if the SslErrorCode returned from SSL_get_error (defined in ssl.h) is SSL_ERROR_SYSCALL, it calls ERR_get_error (defined in err.h), and casts that result to an SslErrorCode, which is incorrect since it will return a separate set of error codes. We need to treat these errors separately, since they are separate sets with conflicting values. +4033 area-System.Linq Unconditionally enable expression interpreter To ship in RC1, we can just enable it unconditionally in the .csproj files. +4037 area-System.Net System.Net.Sockets.APMServer.Tests crashed in CI on Windows "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5448/console ``` Discovering: System.Net.Sockets.APMServer.Tests Discovering: System.Net.NetworkInformation.Functional.Tests Discovered: System.Net.NetworkInformation.Functional.Tests Starting: System.Net.NetworkInformation.Functional.Tests Discovered: System.Net.Sockets.APMServer.Tests Starting: System.Net.Sockets.APMServer.Tests Finished: System.Net.NetworkInformation.Functional.Tests === TEST EXECUTION SUMMARY === System.Net.NetworkInformation.Functional.Tests Total: 19, Errors: 0, Failed: 0, Skipped: 0, Time: 0.547s System.Xml.RW.XmlSystemPathResolver.Tests -> d:\j\workspace\dotnet_corefx_windows_debug_prtest\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.XmlSystemPathResolver.Tests\System.Xml.RW.XmlSystemPathResolver.Tests.dll System.Xml.RW.XmlReader.Tests -> d:\j\workspace\dotnet_corefx_windows_debug_prtest\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.XmlReader.Tests\System.Xml.RW.XmlReader.Tests.dll xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Xml.RW.XmlSystemPathResolver.Tests Discovered: System.Xml.RW.XmlSystemPathResolver.Tests d:\j\workspace\dotnet_corefx_windows_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00107\lib\tests.targets(129,5): warning MSB3073: The command ""CoreRun.exe xunit.console.netcore.exe System.Net.Sockets.APMServer.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing "" exited with code -2146232797. [d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\System.Net.Sockets.APMServer.Tests.csproj] d:\j\workspace\dotnet_corefx_windows_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00107\lib\tests.targets(136,5): error : One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests' please check log for details! [d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\System.Net.Sockets.APMServer.Tests.csproj] ``` " +4039 area-System.Net Implement System.Net.NetworkInformation on OSX, Linux This brings the Linux and OSX implementations of System.Net.NetworkInformation into master. I've rebased my work from my dev branch (dev/ni-xplat) into a single commit, as the history of that branch was very very convoluted and messy, and wasn't easily rebaseable. On top of that, I've run CodeFormatter.exe, manually formatted the project file with some extra spacing, and resolved an additional merge conflict with the master branch. The code was reviewed prior to merging into the dev branch. For context for anyone wanting a brief overview, here's the description I put into the consolidated commit: This commit adds the Linux and OSX implementations for System.Net.NetworkInformation, a library for querying local system information regarding network interfaces, network capabilities, current network connection status, socket connections, various network protocol statistics, both global and per-network-interface, current network addresses, and various other configuration options and statistics. On Linux the information is primarily surfaced through: - /proc/net/*, various other in-memory files that expose network configuration and machine statistics - Getifaddrs() for querying the addresses for all network interfaces - Netlink sockets for detecting network address change events On OSX: - Sysctl: Exposes most of the network and protocol statistics, as well as routing information, configuration options, etc. - Getifaddrs(): Same as above, for enumerating addresses. - Some network configuration files are also parsed from disk, if available, similar to above. NOTE: Due to the fact that this API is closely tied to the information and statistics that are exposed through Win32 APIs (iphlpapi.dll), some individual pieces of information are not available on Linux and OSX. Depending on the range of information exposed through those operating systems, we are able to gather much of the same data, but it is often not identical to the set that is exposed from Windows. Members that cannot be retrieved instead throw a PlatformNotSupportedException. +4040 area-System.IO DriveInfo tests seeing / instead of \ after CoreCLR test-runtime upgrade ``` Discovered: System.IO.FileSystem.DriveInfo.Tests Starting: System.IO.FileSystem.DriveInfo.Tests System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.TestConstructor [FAIL] Assert.Equal() Failure Expected: C:\ Actual: C:/ Stack Trace: D:\Src\corefx\src\System.IO.FileSystem.DriveInfo\tests\DriveInfo.Windows.Tests.cs(39,0): at System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.TestConstructor() Finished: System.IO.FileSystem.DriveInfo.Tests === TEST EXECUTION SUMMARY === System.IO.FileSystem.DriveInfo.Tests Total: 8, Errors: 0, Failed: 1, Skipped: 0, Time: 0.313s ``` +4041 area-System.Net Unify the two definitions of WinHttpException. Fixes #2542. +4044 area-System.Net Current proposed version of System.Net.NetworkInformation 4.1 contains APM and synchronous pattern methods The `IPGlobalProperties` abstract class has the following APM pattern/synchronous methods: ``` c# public virtual System.IAsyncResult BeginGetUnicastAddresses(System.AsyncCallback callback, object state) public virtual System.Net.NetworkInformation.UnicastIPAddressInformationCollection EndGetUnicastAddresses(System.IAsyncResult asyncResult) public virtual System.Net.NetworkInformation.UnicastIPAddressInformationCollection GetUnicastAddresses() ``` These need to be removed in order for this contract to better align with the other APIs in .NET Core. Further, an equivalent method that follows the TPL pattern already exists in this class and should be the one that is used for this functionality: ``` c# public virtual System.Threading.Tasks.Task GetUnicastAddressesAsync() ``` +4045 area-System.Reflection Handle properties on types in System.Reflection.Metadata should be public "It appears that all types that wrap metadata rows (such as TypeDefinition) have a private Handle property. [Example](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeDefinition.cs#L36-L39): ``` csharp // from TypeDefinition.cs private TypeDefinitionHandle Handle { get { return TypeDefinitionHandle.FromRowId(RowId); } } ``` I find that I often use LINQ to search thru table results looking for specific information, but need the handle at the end. For example, this code searches thru the TypeReferences for System.Object - useful for finding all the class objects in an assembly. Note how I have to create an anonymous type to hold the handle separately from the type reference, even though the TypeReference can easily construct a handle internally. ``` csharp _reader.TypeReferences .Select(h => new { Handle = h, TypeRef = _reader.GetTypeReference(h) }) .Where(o => _reader.GetString(o.TypeRef.Name) == ""Object"" && _reader.GetString(o.TypeRef.Namespace) == ""System"") .Select(o => o.Handle) .Single(); ``` I'd much rather write this: ``` csharp _reader.TypeReferences .Select(h => _reader.GetTypeReference(h)) .Where(tr => _reader.GetString(tr.Name) == ""Object"" && _reader.GetString(tr.Namespace) == ""System"") .Select(tr => tr.Handle) .Single(); ``` " +4046 area-Meta Co-locate Reference Docs and Sample Code within the Repo on a Per-Library Basis "# Problem As .NET Core moves the platform towards being more modular, sample code and reference docs should move in that direction too. We should have a good story in place for reference docs and samples. **Note:** Samples here mean samples which _only_ call the API they are co-located with. These are not cross-cutting, they don't cover scenarios, and they don't involve other app models (ASP.NET, UWP, etc). They will be console apps which cover only the ""happy path"" of an API in a demonstrative way. # Solution Co-locate reference docs and samples with the code they describe and demonstrate usage of, on a per-library basis. The existing structure of libraries in corefx would be altered as such (using `System.Linq` as an example): Before: ``` /src |__System.Linq |__/ref |__/src |__/tests ``` After: ``` /src |__System.Linq |__/ref |__/doc (new! contains documentation, perhaps in markdown files) |__/src |__/samples (new! contains a buildable sample project) |__/tests ``` Sample code in `/samples` will be embedded directly into docs in the `/doc` folder so that any time sample code is changed, the documentation is automatically updated. See [an example of how this may look](https://github.com/cartermp/corefx/tree/samples/src/System.Linq) for some more detail. ## Building The proposed solution would affect the build process. I see two options here: a. Force `/samples` to build before a release b. Eventually have `/samples` build as ""full"" build, but do not require that to release Both have their benefits and drawbacks which are worth discussing. Finally, hooks will have to eventually be added to force other sample projects outside of corefx to build so their sample code can also stay up-to-date. # Justification This solution will form the ""core"" of an eventual samples system which will ultimately accomplish the following: - Easier to update reference docs and samples if they live with the code they describe - No code samples in reference docs will be out-of-date and fail to compile - No code samples in any .NET Core conceptual docs will be out-of-date and fail to compile - No .NET Core sample applications will be out-of-date and fail to compile We want to avoid a future scenario where developers have to turn to places like StackOverflow to learn how to use an API because the sample code in the documentation is outdated and/or won't compile. If all our .NET Core samples are tied into the build system, we can avoid that scenario. " +4047 area-System.Net HttpClientHandlerTest.PostAsync_CallMethod_StreamContent failed in Windows_Debug PR test ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5475/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandlerTest/PostAsync_CallMethod_StreamContent_remoteServer__http___httpbin_org_post__requestContentStream__MemoryStream___CanRead___True__CanSeek___True__CanTimeout___False__CanWrite___False__Capacity___1234_________expectedData___62__23__186__150__174_______/ ``` It seems the operation timed out in the test run. Here's the log: ``` Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The operation timed out +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__c5.MoveNext() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs:line 478 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__5.MoveNext() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 837 ``` +4048 area-System.Net HttpClientHandlerTest.PostAsync_CallMethod_FormUrlEncodedContent Failed in Windows_Debug PR Test ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5475/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandlerTest/PostAsync_CallMethod_FormUrlEncodedContent_remoteServer__http___httpbin_org_post_/ ``` Operation timed out. Log: ``` Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The operation timed out +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__9d.MoveNext() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs:line 380 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__5.MoveNext() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 837 ``` +4049 area-System.Net HttpClientHandlerTest.PostAsync_Post_ChannelBindingHasExpectedValue failed in Windows_Debug PR Test "``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5475/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandlerTest/PostAsync_Post_ChannelBindingHasExpectedValue/ ``` Another ""operation timed out"" error. Log: ``` Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The operation timed out +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__102.MoveNext() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs:line 584 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__5.MoveNext() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 837 ``` " +4052 area-System.Net System.Net.Sockets TPL tracking items - [x] Optimize delegate allocations. - [x] Investigate behavior difference from Desktop: Used to throw SocketException. - [x] Investigate behavior difference in tests in System.Net.Sockets.Legacy +4054 area-System.Xml Reevaluate a design decision - XDocument automatically connects text nodes next to each other XDocument automatically connects text nodes which are next to each other, and combines them in a single node. The expected behavior is to have a separate node for each. +4056 area-System.Net 3 Name Resolution Tests fail on OSX ``` System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName [FAIL] Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName() at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName [FAIL] System.Net.Internals.InternalSocketException : Unknown error: 11001 Stack Trace: at System.Net.NameResolutionPal.GetHostByName(String hostName) at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName() at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName_TryGetNameInfo [FAIL] Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName_TryGetNameInfo() at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ``` Seeing this on my local mac (which is connected to Corp-Net, so maybe that's an issue. Let me know if you need help getting a repo @pgavlin), +4057 area-System.Xml Reevaluate a design decision - XDocument allows double-hyphen within comment by adding a space in between "XDocument allows ""--"" within a comment by representing it with a space between the two hyphens (“- -“) in the outer Xml. However, when reading the document, the XmlReader will contain the invalid content “--“ which was forbidden in the outer Xml. According to the spec, double-hyphen MUST NOT occur within comments. This is not a regression issue. I tried writing some tests for Desktop. Tests are attached. The behavior was consistent among corefx and Desktop. [WriteCommentWithDoubleHyphensTests.txt](https://github.com/dotnet/corefx/files/18981/WriteCommentWithDoubleHyphensTests.txt) " +4058 area-System.Net [System.Net.NetworkInformation] Implement NetworkAddressChanged on OSX This is one of the leftovers that I did not have time to implement for today's deadline (10/21/15). A basic search came up with this, which seems to be the standard way to do this: http://stackoverflow.com/questions/11532144/how-to-detect-ip-address-change-on-osx-programmatically-in-c-or-c The approach mentioned there is using the SystemConfiguration framework. +4059 area-System.Net [System.Net.NetworkInformation] Pull out string parsing logic and test it Right now, the string parsing code is generally located in the class that uses it to parse some known network files. Instead, we should pull out all of the string parsing into a separate class, and separate it out from the file reading itself. Adding unit tests for all of the convoluted parsing logic would then be easy at that point. +4060 area-System.Net [System.Net.NetworkInformation] Follow up on miscellaneous perf / style issues - [x] There are a number of // PERF markers in the code - [x] @pgavlin suggested that, when collecting data using sysctl on OSX, we could try to use a stack-allocated buffer of some fixed size before falling back to heap allocation if the call fails. There are a number of instances of this in pal_networkstatistics.cpp. - [x] A number of properties on various types in the library can be lazily instantiated, assuming that doing so will not alter the resulting object that is created. I don't have an exhaustive list of all the properties that can be optimized this way. We should match the behavior of Windows here with regards to when the data is finalized for those properties. - [x] When parsing the Linux network files, we should probably use invariant string comparisons, rather than the default culture-aware. - [x] Address miscellaneous comments from the previous PR (https://github.com/dotnet/corefx/pull/4039) - [x] Move TcpState mapping from C# to native shim - [x] Consider bailing on sysctl calls if estimated buffer size isn't big enough. (Most code examples do this and I've never seen the estimated size be incorrect). +4062 area-Infrastructure build.sh on OS X has problems with package restore "When running build.sh on a Mac, I'm seeing a hang during package restore. I've built corefx successfully on this Mac before, but it's been at least a few weeks since I last tried. ``` ./build.sh clean Setting up directories for build WARNING: Mono 4.0.1.44 or later is required to build corefx. Unable to assess if current version is supported. Restoring NuGet.exe... Restoring MSBuild... Attempting to resolve dependency 'Microsoft.Tpl.Dataflow (≥ 4.5.24)'. Installing 'Microsoft.Tpl.Dataflow 4.5.24'. Successfully installed 'Microsoft.Tpl.Dataflow 4.5.24'. Installing 'Microsoft.Build.Mono.Debug 14.1.0.0-prerelease'. Successfully installed 'Microsoft.Build.Mono.Debug 14.1.0.0-prerelease'. Restoring build tools... Restoring all packages... ``` It was stuck on that part for a long time, and eventually, I got some timeout errors like the following (this is a small sampling of them): ``` Error: DownloadPackageAsync: https://www.myget.org/F/dotnet-core/api/v2/package/runtime.win7.System.IO.Pipes/4.0.0-beta-23328 Error getting response stream (InitRead): ReceiveFailure Error: DownloadPackageAsync: https://www.myget.org/F/dotnet-core/api/v2/package/runtime.win7.System.Net.Http/4.0.1-beta-23328 EXEC : error : SendFailure (Error writing headers) [/Users/adityam/code/corefx/build.proj] Error: DownloadPackageAsync: https://www.myget.org/F/dotnet-core/api/v2/package/runtime.win7.System.IO.FileSystem.Watcher/4.0.0-beta-23328 HTTP request timed out. Exiting. Error: DownloadPackageAsync: https://www.myget.org/F/dotnet-core/api/v2/package/runtime.win7.System.IO.MemoryMappedFiles/4.0.0-beta-23328 HTTP request timed out. Exiting. Error: DownloadPackageAsync: https://www.myget.org/F/dotnet-core/api/v2/package/runtime.win7.System.Net.Requests/4.0.11-beta-23328 HTTP request timed out. Exiting. Error: DownloadPackageAsync: https://www.myget.org/F/dotnet-core/api/v2/package/runtime.win7.System.Net.Primitives/4.0.11-beta-23328 HTTP request timed out. Exiting. ``` I then tried manually running the same dnu restore command that the script is trying to run. The first time I tried this, it seemed to download all the packages successfully, but then I ran into problems like the following when running build.sh: ``` Restoring all packages... /corefx/packages/Microsoft.Build.Mono.Debug.14.1.0.0-prerelease/lib/Microsoft.CSharp.CurrentVersion.targets(383,9): error MSB6006: ""csc2.exe"" exited with code 1. [/corefx/src/Microsoft.CSharp/ref/Microsoft.CSharp.csproj] /corefx/packages/Microsoft.Build.Mono.Debug.14.1.0.0-prerelease/lib/Microsoft.CSharp.CurrentVersion.targets(383,9): error MSB6006: ""csc2.exe"" exited with code 1. [/corefx/src/Microsoft.VisualBasic/ref/Microsoft.VisualBasic.csproj] ``` I've also tried deleting everything and starting from scratch and this time, I got some request timeouts when running the dnu command manually (and it still hangs on package restore when running build.sh). Is this a problem with myget or could there be something else going wrong? " +4063 area-System.Xml Reevaluate a design decision - bad PI within XDocument One of the tests prints error messages but does not fail. It checks for bad ProcessingInstruction within an XDocument. I'm not sure if the contents of the two XmlReaders are truly supposed to the equivalent or different. I have attached the simplified version of the test. [BadPITestExample.txt](https://github.com/dotnet/corefx/files/18179/BadPITestExample.txt) +4065 area-System.Net HttpClient.GetAsync() sends an empty Cookie header on Mac and Linux When running [this test](https://github.com/aspnet/KestrelHttpServer/blob/8d107b22aecc03785814643ef82b61233ff9196b/test/Microsoft.AspNet.Server.Kestrel.FunctionalTests/ResponseTests.cs#L52) (which just does a plain call to GetAsync without any special configuration), HttpClient sends the following request on Mac and Linux: ``` GET / HTTP/1.1\r\nHost: localhost:8792\r\nAccept: */*\r\nAccept-Encoding: gzip,deflate\r\nCookie: \r\n\r\n ``` This helped expose a header parsing bug in Ketrel :smile:, but I don't think the Cookie header should be sent in this case. +4066 area-System.Net CurlHandler sending empty cookie CurlHandler is sending an empty cookie unnecessarily. This commit fixes the behavior Fixes #4065 +4071 area-System.Net TCP/UDP: System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/5713/ ``` System.Net.Sockets.Tests.DualMode.BeginSendToV4IPEndPointToDualHost_Success [FAIL] System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3210,0): at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3161,0): at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DualModeSocketTest.cs(1364,0): at System.Net.Sockets.Tests.DualMode.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DualModeSocketTest.cs(1350,0): at System.Net.Sockets.Tests.DualMode.BeginSendToV4IPEndPointToDualHost_Success() ``` cc: @cipop, @pgavlin +4072 area-System.Collections Suggested API Addition: ConcurrentDictionary.TryUpdate(TKey key, Func updateFactory) The discussion on #4068 made me think of how it's possible to add to a `ConcurrentDictionary` based on a key, or to do an add-or-update based on the key and/or current value, but it's not possible to do an update based on current values that would not add a new value if there wasn't one already. This can be added externally easily enough: ``` C# public static bool TryUpdate(this ConcurrentDictionary dict, TKey key, Func updateFactory) { TValue curValue; while(dict.TryGetValue(key, out curValue)) { TValue value = updateFactory(key, curValue); if( (default(TValue) == null && ReferenceEqual(curValue, value)) || dict.TryUpdate(key, value, curValue) ) return true; } return false; } ``` But this is slower (and hence more likely to have to loop) than if the call was an instance method, and also prevents the factory from being called with the stored key rather than the passed key (should a difference be significant to the factory). That it's come up for at least someone else before is suggested by http://stackoverflow.com/q/12240219/400547 (they didn't need the key in their factory, but the above would have provided them with an answer too as their factory could simply ignore it). +4074 area-System.Security If possible, stop hard-coding magic values that aren't exposed in OpenSSL headers See discussion here: https://github.com/dotnet/corefx/pull/4026/files#r42687456 +4076 area-System.Collections [RC1 blocker] Access violation while running System.Collections.Tests in CI on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3747/consoleFull ``` 08:32:50 Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 08:32:50 at System.Collections.Generic.HashSet`1.System.Collections.Generic.IEnumerable.GetEnumerator() 08:32:50 at Xunit.Assert.Contains[T](T expected, IEnumerable`1 collection, IEqualityComparer`1 comparer) 08:32:50 at Tests.HashSet_HashSetTestSupport.HashSetTestSupport`1.<>c__DisplayClass2.b__1(T item) 08:32:50 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) 08:32:50 at Tests.HashSet_HashSetTestSupport.HashSetTestSupport`1.VerifyHashSet(HashSet`1 set, ICollection`1 contents, IEqualityComparer`1 comparerToUse) 08:32:50 at Tests.HashSet_TrimExcessTests.TrimExcess_Test6() 08:32:50 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 08:32:50 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 08:32:50 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 08:32:50 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 08:32:50 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 08:32:50 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 08:32:50 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 08:32:50 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 08:32:50 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestInvoker`1.b__45_0() 08:32:50 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 08:32:50 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 08:32:50 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 08:32:50 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 08:32:50 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 08:32:50 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestClassRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 08:32:50 at System.Threading.Tasks.Task`1.InnerInvoke() 08:32:50 at System.Threading.Tasks.Task.Execute() 08:32:50 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:32:50 --- End of inner exception stack trace --- 08:32:50 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 08:32:50 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 08:32:50 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 08:32:50 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 08:32:50 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 08:32:50 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 08:32:50 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 08:32:50 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 08:32:50 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestInvoker`1.b__45_0() 08:32:50 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 08:32:50 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 08:32:50 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 08:32:50 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 08:32:50 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 08:32:50 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestClassRunner`1.RunAsync() 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 08:32:50 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 08:32:50 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 08:32:50 at System.Threading.Tasks.Task`1.InnerInvoke() 08:32:50 at System.Threading.Tasks.Task.Execute() 08:32:50 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:32:50 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 08:32:50 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 08:32:50 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 08:32:50 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:32:50 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 08:32:50 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 08:32:50 at System.Threading.Tasks.Task.Execute() 08:32:50 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:32:50 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 08:32:50 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 08:32:50 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:32:50 ./run-test.sh: line 130: 32445 Aborted (core dumped) ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory 08:32:50 One or more tests failed while running tests from 'System.Collections.Tests'. Exit code 134. ``` +4077 area-System.Net HttpClient hangs when sending chunked encoded request When WCF uses HttpClient to send a chunked encoded request, the request never completes. There is a thread hung blocked on a Write call to the request stream. This was using build version 4.0.1-beta-23419. Here's the call stack. ``` mscorlib.ni.dll!System.Threading.ManualResetEventSlim.Wait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken) Line 651 C# mscorlib.ni.dll!System.Threading.Tasks.Task.SpinThenBlockingWait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken) Line 3308 C# mscorlib.ni.dll!System.Threading.Tasks.Task.InternalWait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken) Line 3240 C# mscorlib.ni.dll!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task) Line 149 C# mscorlib.ni.dll!System.Runtime.CompilerServices.TaskAwaiter.GetResult() Line 110 C# system.net.http.dll!System.Net.Http.WinHttpRequestStream.Write(byte[] buffer, int offset, int count) Line 136 C# system.private.datacontractserialization.dll!System.Xml.XmlStreamNodeWriter.FlushBuffer() Line 494 C# system.private.datacontractserialization.dll!System.Xml.XmlStreamNodeWriter.Flush() Line 513 C# system.private.datacontractserialization.dll!System.Xml.XmlBaseWriter.Flush() Line 67 C# system.private.datacontractserialization.dll!System.Xml.XmlDictionaryAsyncCheckWriter.Flush() Line 84 C# system.private.servicemodel.dll!System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessageAsync(System.ServiceModel.Channels.Message message, System.IO.Stream stream) Line 551 C# system.private.servicemodel.dll!System.ServiceModel.Channels.StreamedMessageContent.SerializeToStreamAsync(System.IO.Stream stream, System.Net.TransportContext context) Line 189 C# system.net.http.dll!System.Net.Http.HttpContent.CopyToAsync(System.IO.Stream stream, System.Net.TransportContext context) Line 323 C# system.net.http.dll!System.Net.Http.WinHttpHandler.InternalSendRequestBodyAsync(System.Net.Http.WinHttpRequestState state, bool chunkedModeForSend) Line 1317 C# system.net.http.dll!System.Net.Http.WinHttpHandler.StartRequest(object obj) Line 841 C# [Resuming Async Method] mscorlib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 92 C# mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run() Line 1070 C# mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0() Line 977 C# mscorlib.ni.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0() Line 284 C# mscorlib.ni.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask) Line 806 C# mscorlib.ni.dll!System.Threading.Tasks.Task.FinishContinuations() Line 3605 C# mscorlib.ni.dll!System.Threading.Tasks.Task.TrySetResult(bool result) Line 485 C# mscorlib.ni.dll!System.Threading.Tasks.TaskCompletionSource.TrySetResult(bool result) Line 294 C# system.net.http.dll!System.Net.Http.WinHttpRequestCallback.OnRequestSendRequestComplete(System.Net.Http.WinHttpRequestState state) Line 123 C# system.net.http.dll!System.Net.Http.WinHttpRequestCallback.RequestCallback(System.IntPtr handle, System.Net.Http.WinHttpRequestState state, uint internetStatus, System.IntPtr statusInformation, uint statusInformationLength) Line 72 C# system.net.http.dll!System.Net.Http.WinHttpRequestCallback.WinHttpCallback(System.IntPtr handle, System.IntPtr context, uint internetStatus, System.IntPtr statusInformation, uint statusInformationLength) Line 57 C# ``` +4078 area-System.Net Fix hang when writing request stream in WinHttpHandler WinHttpHandler was hanging due to blocking on the WinHTTP status callback thread. The blocking was coming from a task continuation resuming on the same thread and subsequently calling a blocking Stream.Write method in a custom HttpContent class being written onto the request stream. Blocking is not allowed on the WinHTTP callback thread. So any task continuations need to occur on a different thread. The fix is to create the TaskCompletionSources to use RunContinuationsAsynchronously. This allows them to unblock the WinHTTP thread. Additionally, I added some missing ConfigureAwait(false) settings to some await'd operations. Added a new test which uses a custom HttpContent class that uses a blocking Write() call when serializing onto the request stream. Fix #4077 +4080 area-System.Net Fix WinHttpHandler on Win7 When WinHttpHandler was recently switched to use async WinHTTP pattern, it started setting an option which improves performance. However, the WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS option is not available on downlevel Windows versions. This was causing an exception to be thrown when sending an HTTP request. The fix is to ignore the ERROR_WINHTTP_INVALID_OPTION error code when trying to set this option. +4081 area-System.Net Removing Nuget.Props file Nuget.Props file was added by mistake in a previous commit. +4082 area-System.Net Enable NetworkInformation tests on Linux, OSX "cc: @stephentoub , @CIPop This removes the ""Unsupported"" tag for OSX and Linux from the NetworkInformation tests. Some of the tests just attempt to enumerate all of the properties and statistics that the library exposes. I've disabled those test cases on Linux and OSX because many of those members are not supported. I encountered a couple small issues after running the tests and fixed the issues in subsequent commits: - In Linux's NetworkChange implementation, the field storing the netlink socket's file descriptor was not being set to 0 after it was closed. This means if you tried to close the socket, and then re-open or re-close it, you'd hit a debug assertion I had in place. I've set the field to 0 after it is closed, and clarified the debug assertion messages. - UnixIP(v4/v6)InterfaceProperties was caching the network interface's index too early, and was always storing 0. The network interface's index isn't initialized until the link-layer address is enumerated from the native shim call. To avoid timing issues like this, I might consider storing all of the information from the address enumeration in a separate object, and then constructing the UnixNetworkInterface object all at once. - OSX didn't implement OperationalStatus. I've added a very crude implementation which just determines whether an interface is ""Up"" or not by checking if it has any addresses assigned to it. I think the OS exposes a bit more information here, but I don't think that we can necessarily map that info to our enum values (except perhaps ""Dormant""). " +4083 area-System.Net Socket ArgumentValidation test failures See the discussion in https://github.com/dotnet/corefx/pull/4079#issuecomment-150347175. I am disabling the failing tests in order to get changes from TFS in. +4086 area-System.Net Validate linger time. Some platforms behave strangely when confronted with linger times that are out-of-range. In particular, OS X silently truncates `linger::l_linger` to 16 bits and interprets the results as a `short`. This change validates the linger time before calling `setsockopt` to ensure reliable behavior across platforms. On OS X, the maximum linger time is actually in units of ticks, so validation is a bit more involved than on other platforms (where the max time is defined by the size of the integer used to store the value): on the first call to `SetLingerOption`, the number of ticks per second is obtained via `sysconf()` and is then used to derive the maximum linger time by simple division. This does mean that the maximum linger time on OS X may vary with the number of ticks per second, and so may vary between machines. +4087 area-System.Net Merge changes from TFS +4089 area-System.Net Provisionally Ignoring tests to unblock the build Some tests that are having different behavior following the System.Net.Sockets API revision will be disabled temporally. +4091 area-Meta Question: Is .Net Remoting supported? Also WCF Interfacing We can hide .Net Remitting behind WCF and visa versa +4092 area-System.Net Fixing some of the tests throwing different expected exceptions A method CreateArraySegment for correctly throw ArgumentOutOfRangeException instead of ArgumentException is added to fix the Tests in ArgumentValidationTests. Fix #4083 +4093 area-System.Net [Linux] HttpClientHandler PostSyncBlockingContentUsingChunkedEncoding_Success test hangs Referencing PR #4078, the new test added hangs on Linux. System.Net.Http.Functional.Tests, PostScenarioTest.cs, PostSyncBlockingContentUsingChunkedEncoding_Success test does a blocking Stream.Write() call in a custom HttpContent class SerializeToStreamAsync() method. This test passes on Windows. +4095 area-System.Net Fix CurlHandler deadlock with synchronous CopyToAsync CurlHandler calls to HttpContext.CopyToAsync with a stream that CopyToAsync should write to asynchronously. If, however, the call to CopyToAsync blocks Write'ing to it synchronously as part of the synchronous call to CopyToAsync, CurlHandler will deadlock. As a precaution, we ensure that the CopyToAsync call is asynchronous from the perspective of CurlHandler. Fixes #4093 cc: @davidsh, @kapilash, @vijaykota +4097 area-System.Net Disable sporadically failing SslStream test The timeout may simply need to be increased. For now, disabling. as it's failed several times. #3845 cc: @davidsh +4100 area-System.Reflection Missing accessors on PropertyDefinition The implementation of System.Reflection.Metadata [PropertyDefinition](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeSystem/PropertyDefinition.cs#L91) and [EventDefinition](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeSystem/EventDefinition.cs#L84) swallows some accessors and doesn't make them available publically. This has been marked as _TODO_ in the source code. These _'other'_ accessors are not often encountered, but handling them is required for certain special case tooling. ## usage of _'other'_ property accessors * The .NET Framework exposes 'other' accessors through [PropertyInfo.GetAccessors](https://referencesource.microsoft.com/#mscorlib/system/reflection/propertyinfo.cs,496) * .NET assemblies generated by the 'tlbimp' tool can generate this metadata when a COM property has both a PUT and a PUTREF accessor. * They are valid metadata, even though rarely used, but if you build tools for processing or inspecting .NET assemblies (like tlbexp or ildasm do) you want to handle them. The last point is a real-world use case I have. The tlbexp functionality built into the .NET Framework requires loading an assembly into the AppDomain to generate a TLB. Loading the assembly can fail for various reasons, so generating a TLB by only inspecting metadata is desireable. The omission of 'other' accessors is a problem here. ## Proposed API ``` csharp namespace System.Reflection.Metadata { public struct PropertyAccessors { // Existing public MethodDefinitionHandle Getter { get; } public MethodDefinitionHandle Setter { get; } // New public ImmutableArray Others { get; } } public struct EventAccessors { // Existing public MethodDefinitionHandle Adder { get; } public MethodDefinitionHandle Remover { get; } public MethodDefinitionHandle Raiser { get; } // New public ImmutableArray Others { get; } } } ``` ## Details In the large majority of cases there will be no 'other' accessors in the metadata. It is trivially possible to implement this case without any additional allocations compared to the current implementation. For the purpose of the discussion I have provided an initial [implementation](https://github.com/weltkante/corefx/pull/3) of the suggested change. ## Updates - Expose other accessors directly on the `PropertyAccessors` and `EventAccessors` structs instead of returning them as an out-param +4101 area-System.Net Unix HttpClient does not use the same https server cert validation as Unix SslStream It seems that - If you start with a certificate that is not trusted by the OpenSSL default trust list - Then you add the root to the CurrentUser\My X509Store It still fails to validate on an https connection (but would succeed if connecting with SslStream). The two SSL consumers should use the same validation. +4104 area-System.Linq Re-evaluate various #define symbols in System.Linq.Expressions The following symbols are used in the code but are never set in corefx: - FEATURE_DLG_INVOKE - FEATURE_FAST_CREATE - FEATURE_MAKE_RUN_METHODS - FEATURE_THREAD_ABORT - FEATURE_STACK_TRACES - NO_FEATURE_STATIC_DELEGATE We should re-evaluate whether those are useful to enable in some build flavors e.g. to improve performance of the interpreter. +4108 area-Infrastructure Add validation that project.json's don't overspecify dependencies It would be really nice if we validated that no project.json specifies dependencies that aren't used. See https://github.com/dotnet/corefx/pull/4107#issuecomment-150646389 +4110 area-System.Data AccessViolationException in System.Data.SqlClient when a second copy is loaded at application shutdown We are seeing the following error [on one of the EF tests](https://github.com/aspnet/EntityFramework/blob/de4f73e9517ba75f69064e45ff30d2755a3981d3/test/EntityFramework.CrossStore.FunctionalTests/EndToEndTest.cs#L21). Not sure if it’s SqlClient or CoreCLR issue. ``` [12:16:22]Step 6/6: Run tests (Command Line) (3m:53s) [12:17:56][Step 6/6] xunit-test (2m:19s) [12:19:42][xunit-test] Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. [12:19:42][xunit-test] at System.Data.SqlClient.SNINativeMethodWrapper.SNITerminate() [12:19:42][xunit-test] at System.Data.SqlClient.SNILoadHandle.ReleaseHandle() [12:19:42][xunit-test] at System.Runtime.InteropServices.SafeHandle.InternalFinalize() [12:19:42][xunit-test] at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) [12:19:42][xunit-test] at System.Runtime.InteropServices.SafeHandle.Finalize() [12:20:15][xunit-test] Step Run tests (Command Line) failed ``` +4111 area-System.Net Change some dual-mode tests to accommodate platform differences. On *nix, the OS IP stack changes a dual-mode socket back to a normal IPv6 socket once the socket is bound to an IPv6-specific address. This can cause behavioral differences in code that checks the value of DualMode (e.g. the checks in CanTryAddressFamily). We've decided not to emulate the Winsock behavior (which does not change the value of `IPV6_V6ONLY` for dual-mode sockets bound to IPv6-specific addresses) due to the cost of caching the expected value on each socket instance; some tests needed changes as a consequence of this decision. Fixes #4005. +4112 area-System.Linq Expression interpreter - Bug when passing Type.Missing to Invoke calls Blocked by https://github.com/dotnet/coreclr/issues/7253 Found while enabling more tests (see #3995): ``` Tests.Compiler_Tests.CallCompiledLambdaWithTypeMissing [FAIL] Assert.Equal() Failure Expected: (null) Actual: System.ArgumentException: Missing parameter does not have a default value. Parameter name: parameters at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig) at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at System.Linq.Expressions.Interpreter.ByRefMethodInfoCallInstruction.Run(InterpretedFrame frame) in Interpreter\CallInstruction.cs:line 499 at System.Linq.Expressions.Interpreter.Interpreter.Run(InterpretedFrame frame) in \Interpreter\Interpreter.cs:line 106 at System.Linq.Expressions.Interpreter.LightLambda.Run(Object[] arguments) in Interpreter\LightLambda.cs:line 264 at Thunk(Func`2 , Object ) at lambda_method(Closure , Object ) Stack Trace: TestExtensions.cs(134,0): at TestExtensions.AssertVoid(Exception e1, Exception e2) TestExtensions.cs(145,0): at TestExtensions.AssertNonVoid(Object o1, Object o2, Exception e1, Exception e2) at lambda_method(Closure , Object ) SequenceTests\SequenceTests.cs(2914,0): at Tests.Compiler_Tests.CallCompiledLambdaWithTypeMissing() ``` +4114 area-System.Net Update a socket test to accommodate differences on *nix. On *nix, the SendTo APIs return ENETUNREACH instead of EFAULT when confronted with a socket address with an invalid address family: these platforms check the family of the provided socket address before checking its size (as long as the socket address is large enough to store an address family). Fixes #4003. +4117 area-System.Net WinHttpHandler: Fix POSTs with zero length content While researching #3292, I discovered that POST'ing zero length content throws an exception. This was because we were calling WinHttpWriteData() and passing in a zero length for the buffer size. This returns an error back from WinHTTP. We don't need to call WinHTTP APIs to write zero length data. We simply need to return a completed task back to the caller. Added tests to verify the fix. +4120 area-System.Net Unix HttpClient does not do CRL checking on the connection The libcurl+openssl default is to not check CRLs, since they have to be manually provided. The work done by #4101 isn't going to change the revocation check status, because currently the Unix X509Chain implementation doesn't support opportunistic revocation, and self-signed certs require opportunistic revocation. #2204 is the issue tracking opportunistic revocation. +4121 area-System.Net Make Unix HttpClient use X509Chain instead of the default chain validator "Opportunistically redirect the SSL validation logic. On OSX this is expected to return CURLE_NOT_BUILT_IN, and just use the DarwinSsl logic (unless the user has built libcurl+openssl themselves). This particular pull request enables the ability to use a self-signed certificate that is trusted only in the CurrentUser\Root store. Along the way I discovered that we weren't doing CRL validation either, and that's tracked in issue #4120. Enabling CRL validation in this change would mean self-signed test certs still don't work, because #2204 seems to be required for supporting ""opportunistic CRL"" (require it be valid if there's a CDP entry, but if there's no CDP don't consider that a failure). cc: @stephentoub @vijaykota @rajansingh10 @shrutigarg " +4123 area-System.Security Where's the TransformBlock functionality on SHA256? "Hi, I have this working code in good old .NET 4.5 console application: ``` c# var sha256 = System.Security.Cryptography.SHA256.Create(); var message = new byte[] {1, 2, 3}; var s = new byte[32]; var m = sha256.ComputeHash(message); sha256.TransformBlock(m, 0, m.Length, m, 0); sha256.TransformFinalBlock(s, 0, s.Length); var x = sha256.Hash; // x = {236, 196, 174, 128, 243....} ``` How do I achieve the same thing when targetting dnxcore50 or a Universal Windows 10 App? I get errormessages saying TransformBlock() / TransformFinalBlock() / Hash does not exist, but ComputeHash() seem to exist and work as before. I have added dependency to ""System.Security.Cryptography.Algorithms"": ""4.0.0-beta-23409"" " +4125 area-System.Linq Expression interpreter - Reflection calls could be made cheaper Blocked by https://github.com/dotnet/coreclr/issues/7253 Spotted while looking into #4112. The calls to MethodBase.Invoke in various places ultimately call into MethodBase.CheckArguments which performs a copy of the arguments array passed in. In cases such as the interpreter's where the caller is trusted to transfer ownership of the array, this copy is redundant. Both #4112 and this issue could possibly get resolved by controlling more of those behaviors (i.e. Type.Missing checks in #4112 and argument copying in this issue) through the Binder that's passed to the Invoke method. An (internal-only) specialized fast-path binder could be passed by the interpreter. +4128 area-System.Net Remove obsolete TODOs from xplat SslStream code In the code there are references to issue# 3362. These have been investigated and the existing code does not need changes. But there are TODO comments in the code which need to be removed. +4131 area-System.Net Handling Invalid http response This PR introduces changes in CurlHandler so that its behavior matches that of WinHttpHandler vis-a-vis invalid status line or invalid http headers in the response. Fix for #3269 +4132 area-Serialization Make S.Runtime.Serialization.Xml 4.1 be legal for WCF to reference "Currently, if WCF attempts to take a dependency on S.R.Serialization.Xml 4.1.0, it causes CrossGen to fail because the new contract does not exist in TestNet, Desktop, etc. This became a P0 blocker during RC1, and it forced WCF to revert to referencing 4.0.10. We need WCF to be able to refer to 4.1 (or later) versions of S.R.S.Xml without breaking TFS lab builds. To verify the fix, increase the dependency to 4.1.0 in WcfOpen\src\System.Private.ServiceModel\src\project.json, update the lock file and then do a full build of NDP. You need to run CrossGen manually. I did it like this from a Razzle window: msbuild /m /nologo %_NTROOT%\Binaries.niproj /p:TargetPlatform=x86 /p:TargetClrAssembly=core /p:ProductGroupsToBuild=""PK"" /l:%VsSDKToolsPath%\StatusLogger.exe;context=""Process Ship Binaries/Generate Native Images"" /flp:append;logfile=e:_scr\CrossGen-2015-10-23-05-07-08.log /flp1:append;errorsonly;logfile=e:_scr\CrossGen-2015-10-23-05-07-08.err"" " +4134 area-System.Net HttpClient SendAsync sending a GET instead of DELETE on Mac OS "When I make a DELETE request via SendAsync, a GET is sent instead of a DELETE. This happens only on Mac OS. The code produces a correct DELETE request on Windows. Code: ``` C# using System; using System.Net.Http; namespace Deltest { public class Program { public static void Main(string[] args) { HttpClient client = new HttpClient(new HttpClientHandler() { // redirect to Charles Proxy on Mac OS and Fiddler on Windows Proxy = new WebProxy(new Uri(""http://127.0.0.1:8888"")), UseProxy = true }); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Delete, ""http://localhost:8080/document""); // on Windows the host's IP is used instead HttpResponseMessage response = client.SendAsync(request).Result; Console.WriteLine(response); } } } ``` On Mac OS El Capitan, the following HTTP Request is send: ``` GET /document HTTP/1.1 Host: localhost:8080 Accept: */* Accept-Encoding: gzip,deflate Cookie: ``` Whereas on Windows 10, it is as follows: ``` DELETE http://192.168.1.8:8080/document HTTP/1.1 Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: 192.168.1.8:8080 ``` Mac OS is the host machine. The code was run from both the host machine and a Windows client VM, connecting to the same server running on the host. Is this a bug or am I missing something? Thank you for your time. " +4135 area-System.Linq Common Language Runtime detected an invalid program Using Csla 4.5.701, using remote data-portal in Window 8.1 Store app. Trying to create/instantiate new Object, generating following error (i can fetch existing object from DB successfully), System.AggregateException: One or more errors occurred. ---> Csla.Server.DataPortalException: DataPortal.Create failed on the server ---> System.InvalidProgramException: Common Language Runtime detected an invalid program. at System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(IRuntimeMethodInfo method) at System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType, Object target) at System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate() at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator) at System.Linq.Expressions.Expression`1.Compile() at Csla.Reflection.DynamicMethodHandlerFactory.CreateConstructor(ConstructorInfo constructor) at Csla.Reflection.MethodCaller.GetCachedConstructor(Type objectType) at Csla.Reflection.MethodCaller.CreateInstance(Type objectType) at Csla.Server.DefaultDataPortalActivator.CreateInstance(Type requestedType) at Csla.Server.SimpleDataPortal.d__0.MoveNext() --- End of inner exception stack trace --- at Csla.Server.DataPortal.NewDataPortalException(String message, Exception innerException, Object businessObject) at Csla.Server.SimpleDataPortal.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Csla.Server.DataPortalSelector.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Csla.Server.DataPortal.d__4.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result() at Csla.DataPortalClient.LocalProxy.<>c__DisplayClass1_0.b__0(Object s, DoWorkEventArgs o) at Csla.Threading.BackgroundWorker.InternalDoWork(Object sender, DoWorkEventArgs e) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Csla.DataPortalClient.LocalProxy.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Csla.DataPortal`1.d__8.MoveNext() ---> (Inner Exception #0) Csla.Server.DataPortalException: DataPortal.Create failed on the server ---> System.InvalidProgramException: Common Language Runtime detected an invalid program. at System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(IRuntimeMethodInfo method) at System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType, Object target) at System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate() at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator) at System.Linq.Expressions.Expression`1.Compile() at Csla.Reflection.DynamicMethodHandlerFactory.CreateConstructor(ConstructorInfo constructor) at Csla.Reflection.MethodCaller.GetCachedConstructor(Type objectType) at Csla.Reflection.MethodCaller.CreateInstance(Type objectType) at Csla.Server.DefaultDataPortalActivator.CreateInstance(Type requestedType) at Csla.Server.SimpleDataPortal.d__0.MoveNext() --- End of inner exception stack trace --- at Csla.Server.DataPortal.NewDataPortalException(String message, Exception innerException, Object businessObject) at Csla.Server.SimpleDataPortal.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Csla.Server.DataPortalSelector.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Csla.Server.DataPortal.d__4.MoveNext()<--- +4136 area-System.Net Remove dead code in S.N.Sockets. Now that the Disconnect\* APIs are gone, we can remove the remnants of the code that used to support these APIs. +4140 area-System.Net Readjust a Sockets test to accommodate OS X. OS X returns yet another different error code when an IPv4 socket address is passed to recvmsg on an IPv6-only socket. Fixes #4003. +4142 area-System.Globalization System.Globalization tests crashed on Windows "See http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5634/console for more details: ``` d:\j\workspace\dotnet_corefx_windows_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00110\lib\tests.targets(129,5): warning MSB3073: The command ""CoreRun.exe xunit.console.netcore.exe System.Globalization.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing "" exited with code -1073741819. [d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Globalization\tests\System.Globalization.Tests.csproj] d:\j\workspace\dotnet_corefx_windows_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00110\lib\tests.targets(136,5): error : One or more tests failed while running tests from 'System.Globalization.Tests' please check log for details! [d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Globalization\tests\System.Globalization.Tests.csproj] ``` " +4143 area-System.Net Fix TFS integration for WebSockets.Client In https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.WinRT.cs: ``` // TODO: ** TFS BUILD IS BROKEN ** // This doesn't compile right now due to missing types 'WebErrorStatus' and 'RTWebSocketError' // Commenting out for now to allow the build to resume. //WebErrorStatus status = RTWebSocketError.GetStatus(ex.HResult); //var inner = new Exception(status.ToString(), ex); ``` +4144 area-System.Net Adding TODO issue number to WebSockets.Client Adding TODO tracking issue number (#4143) to fix the NetNative WebSocket.Client contract implementation. +4147 area-System.IO Added explicit reference to Compression in test-runtime DNX is consuming the runtime.json for 4.0.0 and pulling in old versions of CLRCompression that went by a different name. Adding an explicit reference in the common test-runtime project.json to System.IO.Compression resolves this issue until the DNX issue https://github.com/aspnet/dnx/issues/3078 is resolved. This change is to update our CLRCompression to a more recent version that includes the CRC32 function export. @stephentoub @ericstj @bjjones +4148 area-System.Net Unix HttpClient doesn't throw exceptions consistent with Windows/NetNative WCF throws specific exceptions consistent across all transports and platforms that allows developers using WCF to have unified exception handling. For HttpClient, because of lack of an explicit mechanism to indicate the error condition, we have been using HttpRequestException.InnerException.HResult as a consistent way to know what the error was. This was after a discussion with @davidsh and @CIPop about how to achieve this. For the error condition of the specified hostname in the url not resolving, we are expecting the HResult to have a value of 0x80072ee7 (ERROR_INTERNET_NAME_NOT_RESOLVED). With the Unix version of HttpClient, the value being returned is 0x00000006 (ERROR_INVALID_HANDLE). This is causing WCF to not be able to tell what the error condition is and we can't throw the correct exception. Currently we have one other error condition mapped, which is the case where the server sends a reset on the socket while we're receiving data. In this case, we expect an HResult of 0x80072eff (ERROR_INTERNET_CONNECTION_RESET). +4149 area-System.Linq [RC1 blocker] AV in System.Linq.Expressions tests http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/3850/console ``` 15:34:41 Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 15:34:41 at Tests.Expressions.InterpreterTests.Verify(Expression expr) 15:34:41 at Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Divide() 15:34:41 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 15:34:41 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 15:34:41 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 15:34:41 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 15:34:41 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 15:34:41 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 15:34:41 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 15:34:41 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 15:34:41 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestInvoker`1.b__45_0() 15:34:41 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 15:34:41 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 15:34:41 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 15:34:41 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 15:34:41 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 15:34:41 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestClassRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 15:34:41 at System.Threading.Tasks.Task`1.InnerInvoke() 15:34:41 at System.Threading.Tasks.Task.Execute() 15:34:41 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 15:34:41 --- End of inner exception stack trace --- 15:34:41 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 15:34:41 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 15:34:41 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 15:34:41 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 15:34:41 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 15:34:41 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 15:34:41 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 15:34:41 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 15:34:41 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestInvoker`1.b__45_0() 15:34:41 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 15:34:41 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 15:34:41 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 15:34:41 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 15:34:41 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 15:34:41 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestClassRunner`1.RunAsync() 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 15:34:41 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 15:34:41 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 15:34:41 at System.Threading.Tasks.Task`1.InnerInvoke() 15:34:41 at System.Threading.Tasks.Task.Execute() 15:34:41 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 15:34:41 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 15:34:41 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 15:34:41 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 15:34:41 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 15:34:41 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 15:34:41 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 15:34:41 at System.Threading.Tasks.Task.Execute() 15:34:41 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 15:34:41 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 15:34:41 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 15:34:41 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 15:34:42 ./run-test.sh: line 130: 39009 Aborted (core dumped) ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory ``` +4150 area-System.Linq System.Linq.Expression.Invoke not thread safe on lambda argument. "This is a crazy bug that took me awhile to track down. System.Expression.Invoke will modify its lambda argument, making it unsafe if the lambda can be changed in a field updated by another thread. This simple test illustrates the problem: ``` using System; using System.Diagnostics; using System.Linq.Expressions; using System.Threading.Tasks; public class Indirect { public Func DoItA = () => 0; public Func DoItB = () => 0; private int Count = 1; public void Refresh() { { var valueA = DoItA(); var valueB = DoItB(); Debug.Assert(valueA == valueB); } var idx = Count; Count += 1; DoItA = () => idx; DoItB = DoItA; } public static Action Compile(Indirect ind) { var ind0 = Expression.Constant(ind); var fld = Expression.PropertyOrField(ind0, ""DoItA""); var block = Expression.Block(typeof(void), Expression.Invoke(fld)); return (Action)Expression.Lambda(block).Compile(); } public static void DoTest() { var ind = new Indirect(); Task.Run(() => { while (true) ind.Refresh(); }); var act = Compile(ind); Task.Run(() => { while (true) act(); }); } } ``` Note that DoItA and DoItB are apparently only modified by the Refresh call that occurs in the first task forked by DoTest. However, the assertion will eventually fail because the mere invocation of the lambda through a field can cause that field to retain its value even if it is modified by another thread during the invocation! The work around on the user side is to load the field into a temporary variable and invoke on that variable. Not a big deal, but the fact that Expression.Invoke is not thread safe on its lambda argument is not documented...either it should be thread safe (by not storing into its lambda operand argument, which is really unexpected behavior), or it should be documented that it could do this. " +4152 area-Infrastructure Collect EventSource logs in CI system In order to help with investigations related to native failures we should have a way to collect the following from the CI system when a test fails: 1. Full-memory dumps + symbols [edit: covered by #14093] 2. EventSource traces System.Net defines EventSource (ETW) tracing for both production and test code: `*Microsoft-System-Net-Debug` `*Microsoft-System-Net-TestLogging` To investigate issues such as #4037 I would need to enable collection for these two sources as well as memory dump collection. +4153 area-System.Net Increasing test timeout for System.Net.Security (SslStream). Increasing test timeout for System.Net.Security (SslStream). Fix #3845 +4154 area-System.Net [release/1.0.0-rc1] Cherry-pick two commits for System.Net.NetworkInformation for x-plat packaging work The two changes here to the System.Net.NetworkInformation project file are needed for our internal packaging build. This lets us build x-plat packages for System.Net.NetworkInformation that are properly divided up and packaged. I've just cherry-picked these two commits from the master branch. +4155 area-System.Net Removing APM and synchronous methods from System.Net.NetworkInformation Removing APM and synchronous methods from System.Net.NetworkInformation Fix #4044 +4158 area-System.Net Removing ActiveIssue since the test timeouts have been already increased Removing ActiveIssue since the test timeouts have been already increased Fix #3497 +4159 area-System.Net Stub out System.Net.Utilities on Unix This change introduces a Unix build of System.Net.Utilities, with an implementation that simply throws a PlatformNotSupportedException. We'll provide a functioning implementation later. Most of the Ping class can be shared between Windows and Unix. Since there's essentially just two instance methods (InternalSendAsync and InternalDisposeCore) that need differ between Windows and Unix, but which need access to the rest of the state on the Ping instance, I've made Ping a partial class and put those two methods into .Windows.cs and .Unix.cs files. The logic in the Windows implementation is unchanged, other than removing some dead code and cleaning up a few formatting issues. Some of the helper types, e.g. PingReply, had ctors with Windows-specific logic, so I moved those out of the helpers into Ping as platform-specific factories, leaving the helper types to be platform-agnostic. I've put the PR up with the commits that I had as I was going through the changes, but I'll squash them all (along with addressing any feedback) prior to merging. cc: @cipop, @pgavlin, @mellinoe +4161 area-System.Linq Expression compiler - VerificationException: Operation could destabilize the runtime. "Issue occurs when trying to evaluate the following using .Compile(): ``` var p = Expression.Parameter(typeof(TimeSpan).MakeArrayType(1)); var o = Expression.ArrayAccess(p, Expression.Constant(0)); var m = Expression.PropertyOrField(o, ""Ticks""); return Expression.Block(new[] { p }, m); ``` " +4166 area-System.Net Support for http delete method for CurlHandler Update CurlHandler to allow sending Http 'delete' method. Add two test cases for delete +4171 area-System.Net The server returned an invalid or unrecognized response http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/5650/console ``` System.Net.Http.Functional.Tests.PostScenarioTest.PostEmptyContentUsingChunkedEncoding_Success(serverUri: https://corefx-networking.azurewebsites.net/Echo.ashx) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.IO.IOException : The write operation failed, see inner exception. -------- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(152,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__2b.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(62,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestStream.cs(160,0): at System.Net.Http.WinHttpRequestStream.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1326,0): at System.Net.Http.WinHttpHandler.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(847,0): at System.Net.Http.WinHttpHandler.d__5.MoveNext() ----- Inner Stack Trace ----- ``` +4172 area-System.Net Sockets ReceiveMessageFrom.Success test failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/5657/console ``` System.Net.Sockets.Tests.ReceiveMessageFrom.Success [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.Windows.cs(100,0): at System.Net.Sockets.Socket.WSARecvMsgBlocking(IntPtr socketHandle, IntPtr msg, Int32& bytesTransferred, IntPtr overlapped, IntPtr completionRoutine) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\src\System\Net\Sockets\SocketPal.Windows.cs(315,0): at System.Net.Sockets.SocketPal.ReceiveMessageFrom(Socket socket, SafeCloseSocket handle, Byte[] buffer, Int32 offset, Int32 size, SocketFlags& socketFlags, SocketAddress socketAddress, SocketAddress& receiveAddress, IPPacketInformation& ipPacketInformation, Int32& bytesTransferred) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(1714,0): at System.Net.Sockets.Socket.ReceiveMessageFrom(Byte[] buffer, Int32 offset, Int32 size, SocketFlags& socketFlags, EndPoint& remoteEP, IPPacketInformation& ipPacketInformation) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\ReceiveMessageFrom.cs(29,0): at System.Net.Sockets.Tests.ReceiveMessageFrom.Success() ``` +4173 area-System.Net Add self-signed and untrusted root HTTPS tests for HttpClient Both the Windows and X-Plat codebases would benefit from these tests. Negative trust tests are good for verifying that the trust model is being respected, and validating the exceptions being thrown. Additionally, OuterLoop versions which then temporarily add trust for the untrusted root and verify it's then passes are virtuous. Other potential cases of increasing complexity - Target vs SubjectAltName/Subject mismatch - Expired - Revoked - Certificate is invalid for server role (has an EKU extension, but doesn't say ServerAuthentication) - Domain is outside of the issuance scope of the CA +4174 area-System.Linq Expression interpreter - Test some write-back edge cases Creating this issue as a coat hanger for tests related to write-back behavior. +4180 area-System.Net Enable some System.Net tests for OSX/*nix. - The NameResolution functional tests were disabled on all *nixes. - The NameResolution PAL tests have been switched to the more modern style. - The Sockets.Legacy tests were disabled for OS X when using run-test.sh. +4184 area-System.Net Add HttpClient tests to support all HTTP verbs Added tests for validating against all standard and custom HTTP verbs. These tests use the new networking test server. Cosolidated some existing tests that were duplicative. More test porting and reorganzing will be done in later PRs. +4186 area-System.Net Add shim for libcurl version info. Adding a native shim for curl_version_info and removing the managed constants that are no longer needed. @kapilash @nguerrera @sokket @stephentoub +4187 area-System.Net [Linux] SendAsync_SendRequestUsingMethodToEchoServerWithNoContent_MethodCorrectlySent tests fail New tests added in PR #4184 has tests failing on Linux: SendAsync_SendRequestUsingMethodToEchoServerWithNoContent_MethodCorrectlySent() SendAsync_SendRequestUsingMethodToEchoServerWithContent_Success http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/5931/ +4190 area-System.Runtime Add System.String constructors taking sbyte * If you have a lot of code that interops with C strings, chances are that you have used those constructors in the past. Not having them makes code a little bit more complicated to port to CoreCLR. So this would be a nice addition to have. +4191 area-System.Linq Update ref file for System.Linq.Expressions to add Compile overload Seems this was omitted. +4194 area-System.Net Trim response headers in CurlHandler Apply same header response trimming done by WinHttpHandler. Fixes #4187 cc: @kapilash, @davidsh (At some point I'd like to go through and replace all Substring(...).Trim() calls with a more efficient SubstringTrim(...) that doesn't allocate an intermediate string. But in the meantime, this addresses the problem.) +4196 area-System.Linq Lambdas with same signature always have same hash codes "In debugging my last issue (Expression.Invoke not being thread safe), I ran into a problem with code execution in being tell my lambdas apart since they had the same signature; consider: Since the hashcode of f and g is the same, the only way I can tell them apart in the debugger is by (a) executing them, (b) comparing them via equality, or (c) using the IDE's assign ID function. I realize unequal objects can have the same hash code by accident, but I think it is not very useful if unequal objects _always_ have the same hash code, if only for debugging purposes. In normal Windows, a work around is probably to use the hashcode of Method (e.g. f.Method.GetHashCode()), which seems to return a more diverse result. However, in universal Windows, that member isn't available. We could also use the string, but that isn't useful when the lambda is compiled via the DLR. " +4198 area-System.Data Support windows authentication for SqlClient on Xplat Currently Windows Authentication is not supported on Xplat. Explore supporting Windows Authentication using Kerberos on Xplat +4199 area-System.Net Port to RC1: Support for http delete and other methods for CurlHandler Update CurlHandler to allow sending Http 'delete', 'options' and etc Add two test cases for delete Add two test cases for options TRACE should not upload content. +4203 area-System.Net Replace Substring(...).Trim() with SubstringTrim(...) System.Net.WebHeaderCollection already had a SubstringTrim helper that's used instead of Substring(...).Trim() to avoid first creating the substring and then trimming it, instead just offsetting the startIndex and length appropriately to do the Substring and create only one string. I've factored this helper out into Common, cleaned it up a bit, added unit tests for it, and used it in a few more places in System.Net. cc: @ellismg, @davidsh, @cipop (@justinvp, I know you have an outstanding PR that touches one of these locations, though I think that's already needing updates based on other changes that have gone in. Sorry for any additional churn.) +4204 area-System.Net System.Net.Sockets tests crashed in CI on Windows "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/5725/console ``` Discovering: System.Net.Sockets.Tests Discovered: System.Net.Sockets.Tests Starting: System.Net.Sockets.Tests d:\j\workspace\dotnet_corefx_windows_release_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00111\lib\tests.targets(129,5): warning MSB3073: The command ""CoreRun.exe xunit.console.netcore.exe System.Net.Sockets.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing "" exited with code -1073741819. [d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\System.Net.Sockets.Tests.csproj] d:\j\workspace\dotnet_corefx_windows_release_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00111\lib\tests.targets(136,5): error : One or more tests failed while running tests from 'System.Net.Sockets.Tests' please check log for details! [d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\System.Net.Sockets.Tests.csproj] ``` " +4206 area-System.Net Port to RC1: Fix hang when writing request stream in WinHttpHandler Cherry-pick of #4078 for RC1 +4207 area-System.Net Port to RC1: WinHttpHandler Fix POSTs with zero length content Cherry-pick of #4117 for RC1 +4208 area-System.IO Make System.IO.Path.NormalizePath public Right now the only way to normalize a path is by calling `GetFullPath`, but this is not always desirable. This could be especially useful since .NET is cross platform now. Thoughts? +4209 area-System.Net Port to RC1: Fix CurlHandler deadlock with synchronous CopyToAsync CurlHandler calls to HttpContext.CopyToAsync with a stream that CopyToAsync should write to asynchronously. If, however, the call to CopyToAsync writes to it synchronously as part of the synchronous call to CopyToAsync, CurlHandler will deadlock. As a precaution, we ensure that the CopyToAsync call is asynchronous from the perspective of CurlHandler. +4213 area-Infrastructure Move non-Windows scripts over to Python To help normalize our helper scripts cross-platform while removing environment dependencies (such as shells), we should switch our non-Windows scripts over from bash scripts to Python scripts. This will remove the Bash dependency (which is a heavy one) and add a Python dependency, which is installed by-default on our supported, non-Windows platforms to date (OS X and Ubuntu). The scripts that need to be changed are: - [ ] build.sh - [ ] run-test.sh - [ ] src/Native/format-code.sh - [ ] src/Native/gen-buildsys-clang.sh /cc @ellismg @mmitche /fyi @janhenke @ghuntley @jasonwilliams200OK +4215 area-Serialization Add implementation and contract change for serialization surrogate Fix #1931 +4216 area-System.Net Shim libcurl slist and easy functions Add shims for Interop.libcurl_slist.cs functions. Add shims for libcurl curl_easy_\* functions. @kapilash @vijaykota @nguerrera @sokket @stephentoub @bartonjs +4217 area-System.Net System.Net.Security not found on Linux I installed the runtime version 1.0.0-rc1-16048 on Ubuntu 14.04 and tried to connect to Azure Sql database on Linux When I run the test I receive the error System.IO.FileNotFoundException: Could not load file or assembly 'System.Net.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. I checked the runtime folder coreCLR and I dont see System.Net.Security.dll in there. Is this a packaging issue? +4218 area-System.Net Add some missing using statements. The lack of these statements was breaking the TFS build. Fixes #4143. +4219 area-System.Console [System.Console] Behavior of piping into a bad/nonexistent program on Unix Right now, if you try to pipe a program's output into a non-existent program on Unix, you will get an IOException on the first call to Console.Write(Line) (and probably other paths): ``` Unhandled Exception: System.IO.IOException: Broken pipe at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter) at System.ConsolePal.Write(Int32 fd, Byte[] buffer, Int32 offset, Int32 count) at System.ConsolePal.UnixConsoleStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) at System.IO.SyncTextWriter.WriteLine(String value) at System.Console.WriteLine(String value) ``` I chatted with Stephen briefly and we thought that it might be sensible to just ignore this particular exception (in Interop.CheckIO) and allow the program to continue. That is, if we are able to easily detect such a case, and are still able to correctly throw if some other error occurs. How do others feel about this? This seems to be in line with what other programs do if piped into a bad program. +4222 area-System.Runtime Adding ApplicationException and other some other exception types I've been migrating quite a few projects to CoreCLR recently and the lack of ApplicationException is definitely problematic as a lot of existing code is using that type. Using just Exception doesn't sound quite right. Can we have it back in CoreFX? Other exceptions I've seen no present in CoreFX that would also be useful are: - AccessViolationException - EntryPointNotFoundException Thanks, Manu +4223 area-System.Net Update the Trailer Size with the correct value which vaires with the protocol used This is to track the changes needed to update the Trailer size value in StreamSizes with the correct value +4224 area-System.Diagnostics System.Diagnostics.Process missing environment variables. "/cc @Priya91, @pallavit, @joshfree, @stephentoub I am using Process to run a ""Build.cmd"", I have `echo %PATH%`, The result which run by C# is empty, at the same time, I tried add the system env vars again, it still not works. However, I double click the ""Build.cmd"", It can run the correct %PATH% ``` Process = new Process(); WorkingDirectory = FindDirectory(workingDirectory); var fileName = ""cmd.exe""; if (OS.Current != OSType.Windows) { fileName = ""bash""; } var arguments = ""/c build.cmd""; if (OS.Current != OSType.Windows) { arguments = ""./build.sh""; } Process.StartInfo = new ProcessStartInfo { FileName = fileName, Arguments = arguments, UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true, RedirectStandardInput = true, WorkingDirectory = WorkingDirectory }; ``` ... ``` var sysenv = Environment.GetEnvironmentVariables(); foreach(dynamic ev in sysenv) { #if DNXCORE50 if (Process.StartInfo.Environment[ev.Key] != null) Process.StartInfo.Environment[ev.Key] = Process.StartInfo.Environment[ev.Key].TrimEnd(' ').TrimEnd(';') + "";"" + ev.Value; else Process.StartInfo.Environment.Add(ev.Key, ev.Value); #else if (Process.StartInfo.EnvironmentVariables[ev.Key] != null) Process.StartInfo.EnvironmentVariables[ev.Key] = Process.StartInfo.EnvironmentVariables[ev.Key].TrimEnd(' ').TrimEnd(';') + "";"" + ev.Value; else Process.StartInfo.EnvironmentVariables.Add(ev.Key, ev.Value); #endif } ``` " +4227 area-Infrastructure Code coverage broken on Windows "It appears recent buildtools changes result in a corrupted path while trying to invoke OpenCover, causing code coverage to fail with a ""The filename, directory name, or volume label syntax is incorrect."" error. " +4231 area-Infrastructure Native code format checker failing in CI "All PRs are failing with errors like: ``` 06:10:33 [native_code_format_check_prtest] $ cmd /c call /tmp/hudson5140982484119790206.bat 06:10:33 FATAL: command execution failed 06:10:33 java.io.IOException: Cannot run program ""cmd"" (in directory ""/mnt/j/workspace/dotnet_corefx/native_code_format_check_prtest""): error=2, No such file or directory 06:10:33 at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) ``` " +4234 area-System.Data SqlClient cannot connect to server from Linux/OS X SqlConnection.Open() fails to establish a connection from Linux (Ubuntu 14.04) or OS X 10.11 to SQL Server. The error thrown on Linux is > System.Data.SqlClient.SqlException : A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - A call to SSPI failed, see inner exception.) The error thrown on OS X is > System.Data.SqlClient.SqlException : A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) Using SqlClient 4.0.0-beta-23428 and dnx-coreclr-1.0.0-rc1-16048. SqlConnection works just fine when using dnx-**mono**-1.0.0-rc1-16048 instead. Repro: https://github.com/natemcmaster/test-sqlclient/tree/b2e76a6bcbd3805d8f84696f6d0ec208647d33b2 (change config.json to include connection string). +4237 area-System.Net Added Support for GetChannelBinding() in xplat Added Support for GetChannelBinding() in xplat System.Net.Security - Added support for both EndPoint & Unique type of channel binding. - Validated cbt with what we get with Windows. - corresponding tests passed as well. There is no inbuilt openssl library which gives you channel binding token directly. It have to be framed using basic APIs. +4248 area-System.Net Fixing tests having different behavior We discovered some tests were having a different behavior due to the nondeterministic nature of calling a disposal of a socket that is doing an EndAccept operation in a different thread. Also, the test was incorrectly propagating the expected SocketException coming from the client socket, using the server as an intermediary. Now it's correctly done using a SocketError. Fix #4052 +4249 area-System.Reflection Merge master to dev/metadata Reconcile the portable-pdb work that went in to master with additional API review changes. dev/metadata is now a proper superset of master with decoders added. Bump dev S.R.M version to 1.2 Note that the decoders will also go through individual API review/PRs to master, but this puts dev/metadata back in a place where follow-up work on the decoders can be reviewed vs. what we had in dev/metadata so far. +4252 area-System.Net System.Net.NetworkInformation: Use List instead of Collection Avoids unnecessary `Collection` overhead. cc: @CIPop, @mellinoe +4253 area-System.Net Handle CURLE_UNKNOWN_OPTION when registering HTTPS callbacks on older… … versions of curl. Prior to curl 7.39 the case label for CURLOPT_SSL_CTX_FUNCTION was compiled out, resulting in CURLE_UNKNOWN_OPTION. In 7.39 they changed it to always present, but reporting CURLE_NOT_BUILT_IN when the backend SSL provider didn't support that callback. The code was written based on the behavior of curl 7.43, so didn't know about the legacy behavioral difference. Fixes #4233. cc: @stephentoub @eerhardt @kapilash +4254 area-System.Net WinHttpHandler WinHttpResponseStream reads should return back with partial data ".NET Stream.Read() semantics leave it to the implementation to decide how much data to return given a buffer of size N: https://msdn.microsoft.com/en-us/library/system.io.stream.read(v=vs.110).aspx ""An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached."" The behavior of System.Net HTTP APIs (i.e. .NET Framework) are such that stream reads are able to return as soon as data is available. They don't wait until the provided buffer is full. The current WinHttpHandler was not behaving that way because it didn't call WinHttpQueryDataAvailable before calling WinHttpReadData. WinHttpQueryDataAvailable would indicate how many bytes can be read immediately. This fix changes the WinHttpResponseStream.Read\* methods to use WinHttpQueryDataAvailable before calling WinHttpReadData. Added both WinHttpHandler unit tests (helps with simulating/testing network errors) and HttpClientHandler functional tests (which will test x-plat). Fixes #1825 " +4255 area-System.Net WinHttpHandler ResponseStream reads should return back with partial data ".NET Stream.Read() semantics leave it to the implementation to decide how much data to return given a buffer of size N: https://msdn.microsoft.com/en-us/library/system.io.stream.read(v=vs.110).aspx ""An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached."" The behavior of System.Net HTTP APIs (i.e. .NET Framework) are such that stream reads are able to return as soon as data is available. They don't wait until the provided buffer is full. The current WinHttpHandler was not behaving that way because it didn't call WinHttpQueryDataAvailable before calling WinHttpReadData. WinHttpQueryDataAvailable would indicate how many bytes can be read immediately. This fix changes the WinHttpResponseStream.Read\* methods to use WinHttpQueryDataAvailable before calling WinHttpReadData. Added both WinHttpHandler unit tests (helps with simulating/testing network errors) and HttpClientHandler functional tests (which will test x-plat). Fixes #1825 " +4256 area-System.Net [System.Net.NetworkInformation] Address performance to-do markers "Contains a few changes based on the perf markers I left in the code. - I made it optional to pass in callbacks to the Interop.Sys.EnumerateInterfaceAddresses function. In the new usages, I don't need to know about the link-layer addresses, so I don't pass a callback for them. - I pulled out two common methods into an IPAddressUtil class for use when dealing with Interop.SysEnumerateInterfaceAddresses. - The implemention for GetUnicastAddresses(Async) is the same for Linux and OSX, so I've created a ""UnixIPGlobalProperties"" base class that implements that method for both operating systems. - There was an additional marker regarding using sysctl to query the machine's address count. Looking at it again, I don't think it's actually worth bothering. All we are doing instead is adding up the number of addresses from the list of interfaces we already have. It's probably faster than PInvoking for a single number. Addresses the first part of #4060. " +4257 area-Serialization Port to RC1: Add implementation and contract change for serialization surrogate PR for serialization surrogate targeting 1.0.0.rc1 branch. Merge pull request #4215 from khdang/add_serialization_surrogate +4259 area-System.Net [Linux] HttpClient test SendAsync_ReadFromSlowStreamingServer_PartialDataReturned failed "Reference new PR #4255 Build: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/6065/ New test added: test failed on Linux: System.Net.Http.Functional.Tests.HttpClientHandlerTest.SendAsync_ReadFromSlowStreamingServer_PartialDataReturned ""bytesRead should be less than buffer.Length Expected: True Actual: False"" " +4261 area-Infrastructure Build failure on OSX "Building from root fails on OSX with 7 errors related to GenFacades. A sample is below > /Users/kapilash/src/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00112/lib/partialfacades.targets(180,5): error MSB3073: The command """"/Users/kapilash/src/corefx/bin/obj/OSX.AnyCPU.Debug/ToolRuntime/corerun"" ""/Users/kapilash/src/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00112/lib/GenFacades.exe"" -partialFacadeAssemblyPath:""/Users/kapilash/src/corefx/bin/obj/OSX.AnyCPU.Debug/System.Reflection.TypeExtensions.CoreCLR/PreGenFacades/System.Reflection.TypeExtensions.dll"" -contracts:""/Users/kapilash/src/corefx/packages/System.Reflection.TypeExtensions/4.1.0-beta-23429/ref/dotnet5.1/System.Reflection.TypeExtensions.dll"" -seeds:""/Users/kapilash/src/corefx/packages/Microsoft.DotNet.CoreCLR/1.0.5-prerelease/lib/dnxcore50/mscorlib.dll"" -facadePath:""/Users/kapilash/src/corefx/bin/obj/OSX.AnyCPU.Debug/System.Reflection.TypeExtensions.CoreCLR/"" -producePdb:false"" exited with code 255. [/Users/kapilash/src/corefx/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.CoreCLR.csproj] It seems the problem is the presence of the [file called mscorlib.ni.dll](https://github.com/dotnet/coreclr/issues/1419#issuecomment-134156283). Removing that from `$HOME/bin/obj/OSX.AnyCPU.Debug/ToolRuntime` fixes the build failure. " +4262 area-System.Net Remove obsolete TODOs from xplat SslStream code This includes removing TODOs from the places which are already investigated and fixed . There are few places where TODO was kept but after investigation no changes needed. At few places updated the TODO with new issue id where we have scope to further investigate and fix. +4263 area-System.Net Enabling System.Net.Security tests in Linux Enabled the tests to run on Linux . Marked all ssl2 related tests to run on windows only as Openssl doesn't allow ssl2 .. +4267 area-System.Net Add shims for libcurl multi_* functions. Adding shims for all of the libcurl multi_\* functions. I was able to remove all of the structs being used. There is only 1 place left to shim for libcurl, and it is a little tricky. Libcurl has some callback functions that use 'size_t' and 'long' in their signatures. To shim this, I will need to add some native 'thunk' functions that will do the marshalling between size_t and long to the managed stable signature. This will be my next task. @bartonjs @stephentoub @nguerrera @sokket @vijaykota @kapilash @shrutigarg +4268 area-System.Net Implement GetEnumerator for InternalIPAddressCollection "Right now, there's a bit of a mix-up with this type/method. Both the Windows and x-plat libraries use this type to return IPAddress collections. The base class (IPAddressCollection) throws a NotImplemented exception for the GetEnumerator method, which is not overridden here in System.Net.NetworkInformation. The Windows tests are not catching this issue because they are running against the ""System.Private.Networking"" version of System.Net.Primitives, which DOES implement the enumerator. This change just adds a very simple overload for GetEnumerator which defers to the wrapped List. " +4272 area-System.Net [NetworkInformation] Add basic API surface tests for Linux, OSX I've copied out the existing tests that Windows uses, which log all of the properties available on various types in the library, to separate versions for Linux and OSX. For those properties that aren't supported on Linux or OSX, I instead assert that a PlatformNotSupportedException is thrown. Although this doesn't give us guarantees about the results of those methods, it does let us know if they have stopped working altogether. One issue I discovered was that UnixUnicastIPAddressInformation was throwing a NotImplementedException (from the base class) rather than a PlatformNotSupportedException. I've fixed this as well. +4273 area-System.Data 28% of SqlClient connections on OSX/Linux break On Linux, calls to `SqlCommand.ExecuteReader` often die due to a broken connection. Ubuntu 14.04, CoreCLR rc1 System.Data.SqlClient build 23429 These failures are nondeterministic, and do not appear on Windows. ``` Microsoft.Data.Entity.SqlServer.FunctionalTests.DataAnnotationSqlServerTest.TimestampAttribute_throws_if_value_in_database_changed [FAIL] Microsoft.Data.Entity.DbUpdateException : An error occurred while updating the entries. See the inner exception for details. ---- System.Data.SqlClient.SqlException : The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection. ----- Inner Stack Trace ----- at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.SqlConnection.ValidateAndReconnect(Action beforeDisconnect, Int32 timeout) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) ``` Calls to `ExecuteNonQuery` often fail with this error: ``` System.Data.SqlClient.SqlException : A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - Connection was terminated) A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - Connection was terminated) Stack Trace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() ``` or with a similar variant that has this error: ``` (provider: TCP Provider, error: 0 - Unable to read data from the transport connection: Unknown error 10054.) ``` Repeated runs of one test do not always fail, but it does not take high load to produce the error. This error consistently reproduces at some point when running the all tests in EntityFramework ([code here](https://github.com/aspnet/EntityFramework/tree/release/test/EntityFramework.MicrosoftSqlServer.FunctionalTests)). I can create a simplified repro project if necessary. Full test log here: [sqlserver-functionaltests.log](https://gist.githubusercontent.com/natemcmaster/13532755aeeee6a53ccb/raw/259802c7a4e6fd182e0e0bf5a86d04392eba8dad/sqlserver-functionaltests.log) +4274 area-System.IO Path.GetDirectoryName removes necessary relative paths "`Path.GetDirectoryName(@""..\..\files.txt"")` returns an empty string instead of `..\..` This breaks stories such as ""write a new file in the same directory as another specific file"" " +4275 area-System.Net Merge changes from TFS +4276 area-System.Net Optimize delegate allocations in SocketTaskExtensions Fixes #4052 If you have plans to eliminate Begin/End in short terms feel free to close PR :smile: +4277 area-System.Net HttpWebRequest request stream WriteAsync, FlushAsync overrides This was a prior TODO from PR #2386. Added overrides for Stream's WriteAsync and FlushAync methods. As the request stream is a memory stream, it'll perform the operations synchronously anyways. Whereas if these methods remain not overridden, it'll default to the base stream's implementation which will queue work items that just call Write and Flush, respectively. So, this improves performance a little bit by not having to queue work items. Added tests for RequestStream class that is returned via the HttpWebRequest.GetRequstStream\* methods. +4278 area-System.Security Add System.Security.Cryptography.Xml.SignedXml class ## Execution plan **Goal:** Provide APIs fully compatible with full/Desktop .NET Framework (no changes as part of this work - straight port only) **Plan:** - [x] 1. Add the source code on GH sanitized, with licenses, etc. (it won't build) - [x] 2. Make the source code build (still excluded from overall repo build) - [x] 3. Remove Desktop registry-compat code paths - Remove methods that have [RegistryPermission] (Utils and SignedXml classes) along with any owned methods - Address any other registry-related compile errors such as those using Registry, RegistryPermission, RegistryKey, etc (delete code as necessary) - [x] 4. Add tests (We have to agree on expected code coverage and how much of the spec we have to cover) - Compare test results between Desktop and .NET Core implementations - [x] 5. Make it part of overall repo build & ship it! Code changes rules: **Only code changes absolutely necessary** to make it build and compatible with (full) .NET Framework are allowed, no additional bug fixes or changing architecture - such PRs will be rejected now. Changes like that can be considered after the initial port is done, when we have a good test bed and when we are able to validate such change. If larger code/architecture changes are needed from some reason, we should discuss them first here, before doing the work / submitting PR. If you work on some parts of the plan, please say so in the discussion to avoid duplicated work. We (@steveharter @karelz) will co-assign the issue to you. --------------------------------------------------------- ## Original The class to digitally sign XML needs to be added. +4279 area-System.Net Please provide inline authorization support for HttpClient Hi, The [`HttpClient`](https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Net.Http/src/System/Net/Http/HttpClient.cs) facility is amazing. However, it lacks OO support for authentication and authorization. There should be a way to set a few properties (like `ClientId`, `SecretId`, `AuthenticationType`, `UserName` and `Password` etc.), and once the `HttpClient` is initialized with authentication, it should internally keep track of its authentication state, token expiry, refresh tokens, and all that. +4282 area-System.Diagnostics On OSX, launching a non existent process looks for Windows specific DllImport ``` Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-errorhandling-l1-1-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.mincore.SetErrorMode(UInt32 newMode) at System.IO.Win32FileSystem.FillAttributeInfo(String path, WIN32_FILE_ATTRIBUTE_DATA& data, Boolean tryagain, Boolean returnErrorOnNotFound) at System.IO.Win32FileSystem.FileExists(String fullPath) at System.IO.File.Exists(String path) at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at Program.Main() ``` /cc @stephentoub +4283 area-System.Diagnostics [RC1] Avoid hang related to System.Diagnostics.Process and shutdown #4269 We need to port PR #4269 to RC1 +4284 area-Serialization Fix the header of DataContractSurrogateCaller.cs Update the header of file below to be under MIT license System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSurrogateCaller.cs +4285 area-System.Net [NetworkInformation] Address remaining code issues and general code cleanup @CIPop I went through and tried to address all of the feedback you left on the original PR to bring the code into corefx. I also did some general cleanup and formatting, and fixed up things like the XML doc comments, etc. Here's a list of the things I did: - Attempted to normalize the formatting of properties (single-line properties for trivial getters) - Added missing newlines - Normalized exception messages and exception throwing behavior in the library, particularly around string parsing errors, and PInvoke errors encountered when calling to System.Native. - Re-formatted existing comments into XML documentation comments in variety of shared files. I also removed some redundant comments from derived classes when the parent class already has the comment in place. - Deleted some dead code and some unused files from previous work-in-progress states +4286 area-System.Net Port to RC1: WinHttpHandler ResponseStream reads should return back with partial data Cherry-pick of #4255 for RC1 +4288 area-System.Net CoreFx builds failing with undeclared identifier - CURLM_ADDED_ALREADY "I've just started this failure in CoreFx builds on CentOS 7.1.1503 This is with libcurl version 7.29.0 See PR #4267 2015-11-02T18:00:27.683Z: [ 12%] Building C object System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/openssl.c.o 2015-11-02T18:00:27.772Z: error: use of undeclared identifier 'CURLM_ADDED_ALREADY'; did you mean 'PAL_CURLM_ADDED_ALREADY'? 2015-11-02T18:00:27.772Z: static_assert(PAL_CURLM_ADDED_ALREADY == CURLM_ADDED_ALREADY, """"); 2015-11-02T18:00:27.773Z: ^~~~~~~~~~~~~~~~~~~ 2015-11-02T18:00:27.773Z: PAL_CURLM_ADDED_ALREADY 2015-11-02T18:00:27.773Z: /root/corefx/src/Native/System.Net.Http.Native/pal_multi.h:19:5: note: 'PAL_CURLM_ADDED_ALREADY' declared here 2015-11-02T18:00:27.773Z: PAL_CURLM_ADDED_ALREADY = 7, 2015-11-02T18:00:27.773Z: ^ 2015-11-02T18:00:27.780Z: 1 error generated. 2015-11-02T18:00:27.782Z: make[2]: **\* [System.Net.Http.Native/CMakeFiles/System.Net.Http.Native.dir/pal_multi.cpp.o] Error 1 " +4289 area-System.Reflection The System.Reflection.Emit.ILGeneration contract contains APM-style async APIs Consider replacing Begin/End APM-style APIs with TPL Task-Async APIs: ``` C# public virtual void BeginCatchBlock(System.Type exceptionType) { } public virtual void BeginExceptFilterBlock() { } public virtual System.Reflection.Emit.Label BeginExceptionBlock() { return default(System.Reflection.Emit.Label); } public virtual void BeginFaultBlock() { } public virtual void BeginFinallyBlock() { } public virtual void BeginScope() { } public virtual void EndExceptionBlock() { } public virtual void EndScope() { } ``` +4290 area-System.Net Optimize Task Extension Methods Calling directly all begin methods to avoid delegate allocations which improves the performance overall. Fix #4052 +4291 area-Serialization Header and formatting changes for serialization Fix #4284 cc: @shmao @SGuyGe +4293 area-System.Net Fixing Debug code to do proper snapshot isolation of the ref-count variable Adding snapshot isolation to debugging ref-count code to avoid a race condition with SafeCloseSocket.Dispose() or .CloseAsIs(). Fix #4204 Validated that the original setup: VM with 2 CPUs and 8 instances of the same test. @josguil @davidsh @pgavlin PTAL +4295 area-System.Net Enabling ChannelBinding testcase in Unix Channel binding implementation has been added by Rajan , so enabling the testcase , +4297 area-System.Net Fix FakeNetworkStream to remove direct Fix DoNetworkRead() use fix for the issue #3802 +4298 area-System.Linq Expression.Loop doesn't check against reference equal break and continue labels Fails to compile with non-obvious error. Factory should likely check against this. +4299 area-System.IO BufferedStream should have a leaveOpen constructor [Migrated issue https://github.com/dotnet/coreclr/issues/1825 on behalf of @redknightlois] Currently the BufferedStream class doesnt have such a constructor, while there are many others that are intended to be chained like GZipStream do have it. +4301 area-System.Net 21 System.Net.Security tests failing on OS X ``` 03:30:45 Starting: System.Net.Security.Tests 03:30:46 ---- DEBUG ASSERTION FAILED ---- 03:30:46 ---- Assert Short Message ---- 03:30:46 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 03:30:46 --- End of inner exception stack trace --- 03:30:46 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:46 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:46 ---- Assert Long Message ---- 03:30:46 03:30:46 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:46 at System.Environment.get_StackTrace() 03:30:46 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:46 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:46 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:46 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:46 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:46 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:46 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:46 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:46 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:46 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:46 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:46 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:46 at System.Threading.Tasks.Task.Execute() 03:30:46 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:46 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:46 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:46 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:46 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:46 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:46 at System.Threading.Tasks.Task.FinishContinuations() 03:30:46 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:46 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:46 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:46 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:46 System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientAllowNoEncryption_ConnectWithNoEncryption [FAIL] 03:30:46 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:46 (Exception from HRESULT: 0x8007007E) 03:30:46 ---- DEBUG ASSERTION FAILED ---- 03:30:46 ---- Assert Short Message ---- 03:30:46 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 03:30:46 --- End of inner exception stack trace --- 03:30:46 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:46 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:46 ---- Assert Long Message ---- 03:30:46 03:30:46 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:46 at System.Environment.get_StackTrace() 03:30:46 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:46 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:46 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:46 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:46 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:46 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:46 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:46 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:46 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:46 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:46 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 Stack Trace: 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 03:30:47 --- End of inner exception stack trace --- 03:30:47 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 03:30:47 --- End of inner exception stack trace --- 03:30:47 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol 03:30:47 --- End of inner exception stack trace --- 03:30:47 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 03:30:47 --- End of inner exception stack trace --- 03:30:47 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_1_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol 03:30:47 --- End of inner exception stack trace --- 03:30:47 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 03:30:47 --- End of inner exception stack trace --- 03:30:47 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_1_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 03:30:47 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 03:30:47 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 03:30:47 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 03:30:47 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 03:30:47 at System.Threading.Tasks.Task.FinishContinuations() 03:30:47 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ThreadPoolWorkQueue.Dispatch() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_1_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_1_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_1_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_1_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientAllowNoEncryption_ConnectWithNoEncryption() 03:30:47 System.Net.Security.Tests.ServerRequireEncryptionTest.ServerRequireEncryption_ClientRequireEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 at Xunit.Assert.RecordException(Action testCode) 03:30:47 at Xunit.Assert.Throws(Type exceptionType, Action testCode) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(SslProtocols server, SslProtocols client, Type expected) 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrency at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 SyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerRequireEncryptionTest.ServerRequireEncryption_ClientRequireEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerAllowNoEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerAllowNoEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success [FAIL] 03:30:47 System.AggregateException : One or more errors occurred. 03:30:47 ---- System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 03:30:47 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 03:30:47 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, TimeSpan timeout) 03:30:47 at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success() 03:30:47 ----- Inner Stack Trace ----- 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 System.Net.Security.Tests.ServerRequireEncryptionTest.ServerRequireEncryption_ClientAllowNoEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerRequireEncryptionTest.ServerRequireEncryption_ClientAllowNoEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_IncorrectServerName_Fail [FAIL] 03:30:47 Assert.Throws() Failure 03:30:47 Expected: typeof(System.Security.Authentication.AuthenticationException) 03:30:47 Actual: typeof(System.DllNotFoundException): Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 --- End of stack trace from previous location where exception was thrown --- 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 03:30:47 at System.Net.Security.Tests.SslStreamStreamToStreamTest.<>c__DisplayClass1.b__0() 03:30:47 System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption() 03:30:47 System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Successive_ClientWrite_Success [FAIL] 03:30:47 System.AggregateException : One or more errors occurred. 03:30:47 ---- System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 03:30:47 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 03:30:47 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, TimeSpan timeout) 03:30:47 at System.Net.Security.Tests.SslStreamStreamToStreamTest.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) 03:30:47 at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Successive_ClientWrite_Success() 03:30:47 ----- Inner Stack Trace ----- 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientNoEncryption_ConnectWithNoEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientNoEncryption_ConnectWithNoEncryption() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachProtocol_Success [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 --- End of stack trace from previous location where exception was thrown --- 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 03:30:47 at System.Net.Security.SslStreamAPMExtensions.EndAuthenticateAsClient(SslStream s, IAsyncResult asyncResult) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachProtocol_Success() 03:30:47 System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientAllowNoEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientAllowNoEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at Interop.libcurl.curl_easy_init() 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadAsset(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.CertificateAssetDownloader.DownloadCertificate(String uri, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindIssuer(X509Certificate2 cert, X509Certificate2Collection[] stores, List`1 downloadedCerts, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, List`1 downloaded, List`1 systemTrusted, TimeSpan& remainingDownloadTime) 03:30:47 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 03:30:47 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) 03:30:47 at System.Net.CertificateValidationPal.VerifyCertificateProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) 03:30:47 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) 03:30:47 at System.Net.Security.SslState.CompleteHandshake() 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(server: Tls11, client: Ssl2, expected: typeof(System.IO.IOException)) [FAIL] 03:30:47 Assert.Throws() Failure 03:30:47 Expected: typeof(System.IO.IOException) 03:30:47 Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(server: Tls11, client: Tls12, expected: typeof(System.IO.IOException)) [FAIL] 03:30:47 Assert.Throws() Failure 03:30:47 Expected: typeof(System.IO.IOException) 03:30:47 Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(server: Tls12, client: Ssl2, expected: typeof(System.IO.IOException)) [FAIL] 03:30:47 Assert.Throws() Failure 03:30:47 Expected: typeof(System.IO.IOException) 03:30:47 Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_ServerRequireEncryption_ConnectWithEncryption [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 --- End of stack trace from previous location where exception was thrown --- 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 03:30:47 at System.Net.Security.SslStreamAPMExtensions.EndAuthenticateAsClient(SslStream s, IAsyncResult asyncResult) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_ServerRequireEncryption_ConnectWithEncryption() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_AllServerVsIndividualClientProtocols_Success [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 --- End of stack trace from previous location where exception was thrown --- 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 03:30:47 at System.Net.Security.SslStreamAPMExtensions.EndAuthenticateAsClient(SslStream s, IAsyncResult asyncResult) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_AllServerVsIndividualClientProtocols_Success() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_AllServerAllClient_Success [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 --- End of stack trace from previous location where exception was thrown --- 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 03:30:47 at System.Net.Security.SslStreamAPMExtensions.EndAuthenticateAsClient(SslStream s, IAsyncResult asyncResult) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_AllServerAllClient_Success() 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_IndividualServerVsAllClientProtocols_Success [FAIL] 03:30:47 System.DllNotFoundException : Unable to load DLL 'libcurl.so.4': The specified module could not be found. 03:30:47 (Exception from HRESULT: 0x8007007E) 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 03:30:47 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 03:30:47 --- End of stack trace from previous location where exception was thrown --- 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 03:30:47 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 03:30:47 at System.Net.Security.SslStreamAPMExtensions.EndAuthenticateAsClient(SslStream s, IAsyncResult asyncResult) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_IndividualServerVsAllClientProtocols_Success() 03:30:47 ---- DEBUG ASSERTION FAILED ---- 03:30:47 ---- Assert Short Message ---- 03:30:47 Exception Caught. - Interop+OpenSsl+SslException: Failed to get SSL method 'TLSv1_2_method'. Ensure the OpenSSL method exists on the current system. 03:30:47 at Interop.OpenSsl.GetSslMethod(SslProtocols protocols) 03:30:47 at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.Security.SafeDeleteContext..ctor(SafeFreeCredentials credential, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 ---- Assert Long Message ---- 03:30:47 03:30:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 03:30:47 at System.Environment.get_StackTrace() 03:30:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 03:30:47 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 03:30:47 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, String targetName, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer) 03:30:47 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 03:30:47 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_Tls12ServerSsl2Tls12Client_Success() 03:30:47 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 03:30:47 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 03:30:47 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 03:30:47 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 03:30:47 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 03:30:47 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 03:30:47 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestInvoker`1.b__45_0() 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 03:30:47 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 03:30:47 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 03:30:47 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 03:30:47 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestClassRunner`1.RunAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 03:30:47 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 03:30:47 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 03:30:47 at System.Threading.Tasks.Task`1.InnerInvoke() 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 03:30:47 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 03:30:47 at System.Threading.Tasks.Task.Execute() 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 03:30:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 03:30:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 03:30:47 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_Tls12ServerSsl2Tls12Client_Success [FAIL] 03:30:47 System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. 03:30:47 ---- Interop+OpenSsl+SslException : Operation failed with error - 12. 03:30:47 Stack Trace: 03:30:47 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 03:30:47 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 03:30:47 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 03:30:47 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.SslStream.<>c__DisplayClass1.b__0(AsyncCallback callback, Object state) 03:30:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 03:30:47 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 03:30:47 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 03:30:47 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsClient(SslStream s, String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 03:30:47 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_Tls12ServerSsl2Tls12Client_Success() 03:30:47 ----- Inner Stack Trace ----- 03:30:47 03:30:47 Finished: System.Net.Security.Tests 03:30:47 03:30:47 === TEST EXECUTION SUMMARY === 03:30:47 System.Net.Security.Tests Total: 39, Errors: 0, Failed: 21, Skipped: 0, Time: 2.173s ``` +4302 area-Serialization Cleanup an inactive directive in serialization Clean up MERGE_DCJS directive for data contract serializers. Fix #3061 cc: @SGuyGe @shmao +4303 area-System.Security "Windows: new Oid("""").Value is not """"" "On Desktop, `""""` is returned for the OID Value, and null for the OID name (http://referencesource.microsoft.com/#System/security/system/security/cryptography/x509/x509utils.cs,359) On Linux, `""""` is returned. But Windows CoreFX returns `1.2.840.113549.1.9.9`. One can only presume that this unexpected result is why that empty value check existed in Desktop. " +4307 area-System.Net Add shims for Seek, ReadWrite and SslCtx callbacks in libcurl. Since libcurl defines callbacks with varying signatures from platform to platform, we need to define a signature for the callbacks that doesn't change. Then we register our own native callbacks, which then converts the parameters from the varying signature to the unchanging signature and invokes the managed callback. @stephentoub @nguerrera @bartonjs @sokket @vijaykota @kapilash @shrutigarg +4308 area-System.Net CentOS CI build failing to compile System.Net.Http.Native "``` /mnt/resource/j/workspace/dotnet_corefx_linux_centos71_nativecomp_release/src/Native/System.Net.Http.Native/pal_multi.cpp:15:42: error: use of undeclared identifier 'CURLM_ADDED_ALREADY'; did you mean 'PAL_CURLM_ADDED_ALREADY'? static_assert(PAL_CURLM_ADDED_ALREADY == CURLM_ADDED_ALREADY, """"); ^~~~~~~~~~~~~~~~~~~ PAL_CURLM_ADDED_ALREADY /mnt/resource/j/workspace/dotnet_corefx_linux_centos71_nativecomp_release/src/Native/System.Net.Http.Native/pal_multi.h:19:5: note: 'PAL_CURLM_ADDED_ALREADY' declared here PAL_CURLM_ADDED_ALREADY = 7, ^ 1 error generated. make[2]: *** [System.Net.Http.Native/CMakeFiles/System.Net.Http.Native.dir/pal_multi.cpp.o] Error 1 ``` " +4309 area-System.Net Fix a race in DynamicWinsockMethods. There was a race between an initialization check and an initializer: in EnsureWSARecvMsg, the field used to check that multiple fields had been initialized was written to before the other field. The writes have been reordered and appropriate barriers have been added. Fixes #4172. +4316 area-System.Collections Add TryDequeue to Queue [`System.Collections.Generic.Queue`](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/Queue.cs) does not have a `TryDequeue` method, however its `Dequeue` is a throwing method so the following pattern always has to be used: ``` csharp T item ...; if (queue.Count > 0) { item = queue.Dequeue(); ... } ``` with extra boilerplate for for whatever no item handling; this would be better as: ``` csharp T item; if (queue.TryDequeue(out item) { ... } ``` As per `ConcurrentQueue` or `TryGet` of Dictionary +4317 area-System.Net System.Net.Security tests asserting and failing on Linux in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst/1373/consoleFull ``` 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher ---> Interop+Crypto+OpenSslCryptographicException: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 Finished: System.Threading.Timer.Tests 00:17:33 00:17:33 === TEST EXECUTION SUMMARY === 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol ---> Interop+Crypto+OpenSslCryptographicException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol ---> Interop+Crypto+OpenSslCryptographicException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol ---> Interop+Crypto+OpenSslCryptographicException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 System.Threading.Timer.Tests Total: 27, Errors: 0, Failed: 0, Skipped: 0, Time: 3.129s 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol ---> Interop+Crypto+OpenSslCryptographicException: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 00:17:33 at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 00:17:33 at System.Net.Security.SslStream.<>c__DisplayClass4.b__3(AsyncCallback callback, Object state) 00:17:33 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 00:17:33 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 00:17:33 at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 00:17:33 at System.Net.Security.SslStreamAPMExtensions.BeginAuthenticateAsServer(SslStream s, X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 00:17:33 at System.Net.Security.Tests.DummyTcpServer.OnAccept(IAsyncResult result) 00:17:33 at System.Net.LazyAsyncResult.Complete(IntPtr userToken) 00:17:33 at System.Net.ContextAwareResult.Complete(IntPtr userToken) 00:17:33 at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) 00:17:33 at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32 numBytes, SocketError errorCode) 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(server: Ssl3, client: Ssl2, expected: typeof(System.IO.IOException)) [FAIL] 00:17:33 Assert.Throws() Failure 00:17:33 Expected: typeof(System.IO.IOException) 00:17:33 Actual: typeof(System.InvalidOperationException): EndAuthenticate can only be called once for each asynchronous operation. 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 Stack Trace: 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.AcceptSecurityContext(SafeFreeCredentials& credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean remoteCertRequired) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:33 ---- DEBUG ASSERTION FAILED ---- 00:17:33 ---- Assert Short Message ---- 00:17:33 Exception Caught. - Interop+OpenSsl+SslException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ---> Interop+Crypto+OpenSslCryptographicException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 00:17:33 --- End of inner exception stack trace --- 00:17:33 at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 ---- Assert Long Message ---- 00:17:33 00:17:33 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 00:17:33 at System.Environment.get_StackTrace() 00:17:33 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 00:17:33 at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) 00:17:33 at System.Net.SslStreamPal.InitializeSecurityContext(SafeFreeCredentials credential, SafeDeleteContext& context, String targetName, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer) 00:17:33 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 00:17:33 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 00:17:33 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) 00:17:33 at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 00:17:33 at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) 00:17:33 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 00:17:33 at System.IO.StreamAsyncHelper.b__4(Task _, Object obj) 00:17:33 at System.Threading.Tasks.Task.Execute() 00:17:33 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) 00:17:33 at System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(Task task, Boolean needsProtection) 00:17:33 at System.Threading.Tasks.Task.FinishContinuations() 00:17:33 at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 00:17:33 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 00:17:33 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 00:17:33 at System.Threading.ThreadPoolWorkQueue.Dispatch() 00:17:34 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 00:17:34 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 00:17:34 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 00:17:34 --- End of stack trace from previous location where exception was thrown --- 00:17:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 00:17:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 00:17:34 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 00:17:34 at System.Net.Security.SslStreamAPMExtensions.EndAuthenticateAsClient(SslStream s, IAsyncResult asyncResult) 00:17:34 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(EncryptionPolicy encryptionPolicy, SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 00:17:34 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncSslHelper(SslProtocols clientSslProtocols, SslProtocols serverSslProtocols) 00:17:34 at System.Net.Security.Tests.ClientAsyncAuthenticateTest.<>c__DisplayClassb.b__a() 00:17:34 Finished: System.Net.Security.Tests 00:17:34 00:17:34 === TEST EXECUTION SUMMARY === 00:17:34 System.Net.Security.Tests Total: 44, Errors: 0, Failed: 1, Skipped: 0, Time: 4.134s ``` +4322 area-System.Net [NetworkInformation] Make last fixes tracked by issue #4060. This addresses the last two issues I have tracked in #4060. - When calling into System.Native for obtaining TCP and UDP socket connection information (current open/listening sockets), just bail if the first call fails, i.e. if the estimated buffer size is not big enough. This is what most code examples do that I have seen, and I have not personally seen the first call fail anyways. - Shim out MapTcpState for Linux. There was previously a function doing the same thing, but only for OSX, and only in the context of gather connection informations. I've pulled it out into a separate source file and made an implementation for both platforms. This replaces the hard-coded enum in the managed code. NOTE: I have kept the managed enum in the test project, because the static test files we are using are from a specific distribution, and we therefore need to account for that some way in the parsing logic in the test library. cc: @CIPop , @stephentoub . After this, the only remaining work item I have is implementing NetworkChange for OSX, which I've already started. +4323 area-System.Net NetworkStream doesn't retrieve all the data for the SqlClient Refer https://github.com/dotnet/corefx/issues/4273 While using stream.ReadAsync to retrieve data, the stream returns 0 bytes when data is expected from the server. This problem occurs on Windows, Linux and OSX while running the entity framework tests at https://github.com/aspnet/EntityFramework +4328 area-System.Net Disable System.Net.Security tests on Unix https://github.com/dotnet/corefx/issues/4317 https://github.com/dotnet/corefx/issues/4301 cc: @ellismg, @eerhardt, @shrutigarg +4329 area-System.Net Implement NetworkAddressChanged event on OSX This is the last work item I have for NetworkInformation. It addresses Issue #4058 . I'm using the OSX SystemConfiguration Framework to listen for notifications about network address changes. The implementation here works, but I'd like some feedback on the threading approach and the general style I've used for cleaning up the temporary OSX string objects that need to be created for the native calls. It's fairly messy right now. @sokket I followed your general example from FileSystemWatcher and adapted it a bit for this. Please take a look, @sokket, @stephentoub , @CIPop +4331 area-System.Net Fix 43 of the 44 failing System.Net.Security tests on Linux - System.Net.Sockets removed a bunch of APIs. They're somehow still in the contracts, so compilation succeeds, but they're not implementation, so the tests fail when trying to use methods like TcpClient.Connect and various Begin/End methods. I've changed these to use the appropriate Async methods. - SslStream has a Debug.Fail which has been failing regularly, but it wasn't being noticed. Now that Debug.Fail will throw an exception, the tests that were previously asserting are now failing. I've temporarily commented out the Debug.Fail with a TODO comment. One test is still failing: ``` System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Ssl2_Fails_Linux(server: Ssl2, client: Tls11, expected: typeof(System.Security.Authentication.AuthenticationException)) [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Authentication.AuthenticationException) Actual: typeof(System.InvalidOperationException): EndAuthenticate can only be called once for each asynchronous operation. Stack Trace: at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) ``` cc: @ellismg, @eerhardt, @bartonjs, @shrutigarg, @vijaykota, @CIPop, @josguil, @davidsh +4336 area-System.Security X509Certificates.Tests.ChainTests.BuildChain failing on CentOS http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_centos71_debug_tst/133/consoleFull ``` 18:57:46 System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain [FAIL] 18:57:46 Chain built validly 18:57:46 Expected: True 18:57:46 Actual: False 18:57:46 Stack Trace: 18:57:46 at System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain() 18:57:46 Finished: System.Security.Cryptography.X509Certificates.Tests ``` cc: @bartonjs, @ellismg +4337 area-System.Security ECDsaOpenSsl tests failing on CentOS http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_centos71_debug_tst/133/consoleFull ``` Interop+Crypto+OpenSslCryptographicException : error:100AE081:elliptic curve routines:EC_GROUP_new_by_curve_name:unknown group 19:01:48 Stack Trace: 19:01:48 at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey() 19:01:48 at System.Lazy`1.CreateValue() 19:01:48 at System.Lazy`1.LazyInitValue() 19:01:48 at System.Security.Cryptography.ECDsaOpenSsl.SignHash(Byte[] hash) 19:01:48 at System.Security.Cryptography.ECDsa.SignData(Byte[] data, Int32 offset, Int32 count, HashAlgorithmName hashAlgorithm) 19:01:48 at System.Security.Cryptography.EcDsaOpenSsl.Tests.EcDsaOpenSslTests.Exercise(ECDsaOpenSsl e) 19:01:48 at System.Security.Cryptography.EcDsaOpenSsl.Tests.EcDsaOpenSslTests.KeySizeProp() 19:01:48 System.Security.Cryptography.EcDsaOpenSsl.Tests.EcDsaOpenSslTests.Ctor224 [FAIL] 19:01:48 Interop+Crypto+OpenSslCryptographicException : error:100AE081:elliptic curve routines:EC_GROUP_new_by_curve_name:unknown group 19:01:48 Stack Trace: 19:01:48 at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey() 19:01:48 at System.Lazy`1.CreateValue() 19:01:48 at System.Lazy`1.LazyInitValue() 19:01:48 at System.Security.Cryptography.ECDsaOpenSsl.SignHash(Byte[] hash) 19:01:48 at System.Security.Cryptography.ECDsa.SignData(Byte[] data, Int32 offset, Int32 count, HashAlgorithmName hashAlgorithm) 19:01:48 at System.Security.Cryptography.EcDsaOpenSsl.Tests.EcDsaOpenSslTests.Exercise(ECDsaOpenSsl e) 19:01:48 at System.Security.Cryptography.EcDsaOpenSsl.Tests.EcDsaOpenSslTests.Ctor224() ``` Looks like this particular algorithm isn't available in the OpenSSL installed on the CentOS image. Can we install one that has them? cc: @bartonjs, @mmitche, @ellismg +4338 area-System.Globalization Several NumberFormatInfoCurrencyNegativePattern tests failing on CentOS "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_centos71_debug_tst/133/consoleFull ``` 19:01:41 System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(locale: ""fr-CD"", expectedWindows: 4, expectedIcu: 8) [FAIL] 19:01:41 Assert.Equal() Failure 19:01:41 Expected: 8 19:01:41 Actual: 15 19:01:41 Stack Trace: 19:01:42 Finished: System.Reflection.Tests 19:01:42 19:01:42 === TEST EXECUTION SUMMARY === 19:01:42 System.Reflection.Tests Total: 677, Errors: 0, Failed: 0, Skipped: 0, Time: 1.694s 19:01:42 at System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(String locale, Int32 expectedWindows, Int32 expectedIcu) 19:01:42 System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(locale: ""en-US"", expectedWindows: 0, expectedIcu: 1) [FAIL] 19:01:42 Assert.Equal() Failure 19:01:42 Expected: 1 19:01:42 Actual: 0 19:01:42 Stack Trace: 19:01:42 at System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(String locale, Int32 expectedWindows, Int32 expectedIcu) 19:01:42 System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(locale: ""fa-IR"", expectedWindows: 3, expectedIcu: 1) [FAIL] 19:01:42 Assert.Equal() Failure 19:01:42 Expected: 1 19:01:42 Actual: 0 19:01:42 Stack Trace: 19:01:42 at System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(String locale, Int32 expectedWindows, Int32 expectedIcu) 19:01:42 System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(locale: ""fr-CA"", expectedWindows: 15, expectedIcu: 8) [FAIL] 19:01:42 Assert.Equal() Failure 19:01:42 Expected: 8 19:01:42 Actual: 15 19:01:42 Stack Trace: 19:01:42 at System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(String locale, Int32 expectedWindows, Int32 expectedIcu) 19:01:42 System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale2(locale: ""en-CA"", expected: 1) [FAIL] 19:01:42 Assert.Equal() Failure 19:01:42 Expected: 1 19:01:42 Actual: 0 19:01:42 Stack Trace: 19:01:42 at System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale2(String locale, Int32 expected) ``` cc: @steveharter, @ellismg " +4339 area-System.Data SqlClient fails on Ubuntu with exception While trying to connect to a database using SqlClient on Ubuntu, the following exception is encountered. The version of DNX used is : 1.0.0-rc1-16108 System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - A call to SSPI failed, see inner exception.) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at SqlClientError.Program.Main(String[] args) The error originates from SslStream.AuthenticateAsClient where the authentication fails. This is a regression from 1.0.0-rc1-16048 build where the authentication was succeeding for PreLogin handshake of the SqlClient. +4343 area-Meta Generate API docs grouped by .NET Platform Standard version from packages The same way we generated this list: https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/standard-platform.md#list-of-net-corefx-apis-and-their-associated-net-standard-platform-version-tentative It would be cool if we could generate an MSDN style API doc experience for the .NET Standard Platform versions. /cc @ericstj @richlander @Petermarcu +4346 area-System.Data "SqlClient connection with ""instance""" "If I establish a connection with SqlClient using the ""server\instance"" data source syntax this works fine on windows. On Linux it fails with a host resolution error. If I monitor with Wireshark, I can see the DNS query being executed but it is searching for serverinstance - i.e. it concatenates the both the service and the instance into one host name - which then fails. Is anyone else seeing this ? " +4347 area-System.Net Merge changes from TFS +4351 area-System.Net Adjust System.Net.Sockets implementation to match contract The System.Net.Sockets 4.1 contract (refs folder) does NOT have public methods for Socket.Close() or NetworkStream.Close(). However, the implementional DLL was still having public methods for these. Changed the 'public' to 'internal' for the Close() methods and removed a test that isn't needed anymore. +4352 area-System.Net Avoid delegate and closure allocations in System.Net.Sockets +4355 area-Serialization Remove project reference to System.Runtime.Serialization.Primitives from System.Private.DataContractSerialization "The project reference should be removed from csproj and put into project.json. 151 152 {CDF0ACB5-1361-4E48-8ECB-22E8022F5F01} 153 System.Runtime.Serialization.Primitives 154 " +4357 area-System.Net TCPClient.ReceiveTimeout should be in Milliseconds ? Based on MSDN TCPCleint.ReceiveTimeout should be in Millisecond. https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.receivetimeout(v=vs.110).aspx But when I read the code it said in second. https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs#L328 Which one is correct ? +4360 area-System.Reflection Fixup previous merge from master -> dev/metadata - Dead files were left behind - Doc comment fix was merged incorrectly +4361 area-System.Data SqlCommand Timeout = 0 should behave as infinite timeout SqlCommand Timeout = 0 should behave as infinite timeout +4363 area-System.Net BeginSend_AsyncOperationCompletes_Success failure in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_prtest/6206/ ``` System.Net.Sockets.Tests.UdpClientTest.BeginSend_AsyncOperationCompletes_Success MESSAGE: System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs:line 2955 at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs:line 2900 at System.Net.Sockets.UdpClient.BeginSend(Byte[] datagram, Int32 bytes, IPEndPoint endPoint, AsyncCallback requestCallback, Object state) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\UDPClient.cs:line 297 at System.Net.Sockets.UdpClient.b__4(Byte[] targetDatagram, Int32 targetBytes, IPEndPoint targetEndpoint, AsyncCallback callback, Object state) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\UDPClient.cs:line 618 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory`1.FromAsync[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state) at System.Net.Sockets.UdpClient.SendAsync(Byte[] datagram, Int32 bytes, IPEndPoint endPoint) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\UDPClient.cs:line 617 at System.Net.Sockets.UdpClientAPMExtensions.BeginSend(UdpClient client, Byte[] datagram, Int32 bytes, IPEndPoint endPoint, AsyncCallback requestCallback, Object state) in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\Common\src\System\Net\Sockets\SocketAPMExtensions.cs:line 1184 at System.Net.Sockets.Tests.UdpClientTest.BeginSend_AsyncOperationCompletes_Success() in d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\UdpClientTest.cs:line 51 ``` +4364 area-System.Net GetAsync_AllowAutoRedirectFalse_RedirectFromHttpToHttp_StatusCodeRedirect failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/5997/console ``` System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectFalse_RedirectFromHttpToHttp_StatusCodeRedirect [FAIL] Assert.Equal() Failure Expected: Redirect Actual: NotFound Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs(217,0): at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__45.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +4365 area-System.Data System.Data Should surface the internal exceptions Currently all the internal exceptions received by System.Data are being wrapped around as SNI error codes. These exceptions should be surfaced in the exception stack trace so that the reason for exception is knows. This is needed in the managed SNI components of System.Data where we are relying on other .Net components for networking etc. +4366 area-System.Net Array Segment change in Global Log When length was equal to 0, bufferSegment was not correctly initialized and does not let logging work. Instead of copying from a loop, now we use the ArraySegment constructor for this, which has a better behavior when length is 0. +4368 area-System.Data Refactor SNIHandle.ReceivePacket to use out instead of ref "https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs#L269 I think we should refactor this to use ""out"" instead of ref. As it can lead to confusion whether that Packet is always null or there may have initialized object. Especially when the decision of releasing that packet. If it designed to always null, then we should use ""out"" instead. " +4369 area-System.Net Delete SslStreamAPMExtensions.cs from System.Net.Security tests After https://github.com/dotnet/corefx/pull/4331, it's now dead code. cc: @CIPop, @josguil, @davidsh +4370 area-System.Net Remove non-Windows clutter from WinHttpHandler sln/projs This project is and will always be Windows-specific. There's no need for all of the placeholders related to non-Windows targets. cc: @davidsh +4371 area-System.Reflection Why GetRuntimeFields return non public field vs GetRuntimeField return public only flags ? Why GetRuntimeFields return non public field vs GetRuntimeField return public only flags ? ``` public static IEnumerable GetRuntimeFields(this Type type) { return type.GetFields(defaultNonPublicFlags).AsNothingButIEnumerable(); } public static FieldInfo GetRuntimeField(this Type type, String name) { return type.GetField(name, defaultPublicFlags); } ``` +4373 area-Meta .NET Platform Standard Document - Some Ideas to improve it "I was reading the "".NET Platform Standard"" document. I liked it a lot, but there are some details where I would love some clarification in the document - It is about the Platform Standard. Nevertheless, many will use the netstandard TFMs for their libraries. So when speaking of ""Reference Assembly"" and ""Implementation Assembly"", I think we need a very clear separation between a library targeting a netstandard which is - distributed by an normal library developer which is portable (he delivers a nuget package with a ref and a implementation assembly (or only a impl?)) - distributed by an normal library developer which is not portable (bait and switch) - a library like System.IO which is 99% delivered as part of the platform which is not portable (which has a ref assembly and a implementation assembly per platform, in the platform), but nevertheless has a NuGet package. How does that work (only ref?). - a library like System.Xml.XDocument which is part of the CoreFx, which is portable which future platforms should just use via NuGet but some older platforms may still have as a implementation assembly in the platform. - I would add a line stating that targeting a lower platform standard is preferable. - In the CoreFx list a classification which library is portable, sometimes portable and always platform specific would be nice - A word about how the NuGet packages of the netstandard (e.g. System.IO) build only with their refs and their implementation assemblies as part of the platforms (they are build and shipped with them, e.g. in coreclr). I think it should be clarified that the public NuGet which reflect platform features only have refs. @davidfowl @AArnott ps: I am surely not 100% accurate here. I just think myself into nuget3, DNX, corefx, coreclr, etc. and jump on any documentation I get. " +4375 area-System.Linq Expression.Property should reject indexers - SecurityException "Generates invalid IL ``` csharp Expression.Lambda>( Expression.Property( Expression.Default(typeof(List)), typeof(List).GetProperty(""Item"") ) ).Compile()(); ``` with exception ``` System.Security.VerificationException: Operation could destabilize the runtime. ``` Simple fix in expression factories to reject indexers. " +4376 area-System.Xml DtdProcessing.Parse missing Not sure if I am doing something wrong, but how do I access DtdProcessing.Parse enum value in corefx? There seems to be a Parse static method as well now, so getting this compilation error: ``` DNXCore,Version=v5.0 error CS0428: Cannot convert method group 'Parse' to non-delegate type 'DtdProcessing'. Did you intend to invoke the method? ``` Any advice? +4379 area-System.Collections Implementation of IStructuralEquatable.GetHashCode in Array class consider just element with 0 index "This is the implementation: ``` int IStructuralEquatable.GetHashCode(IEqualityComparer comparer) { if (comparer == null) { throw new ArgumentNullException(""comparer""); } int num = 0; for (int i = (this.Length >= 8) ? (this.Length - 8) : 0; i < this.Length; i++) { num = CombineHashCodes(num, comparer.GetHashCode(this.GetValue(0))); } return num; } ``` As you can see the CombineHashCodes keeps combining the hashcode of element with 0 index. This makes array as new[]{""aa"",""bb""} and new[]{""aa"",""cc""} to have the same hashcode. And the probability that there are array with the first element equal is usually higher. " +4381 area-System.Net Change TCPClient.ReceiveTimeout comment into Milliseconds #4357 +4382 area-System.Net Update HttpStatusCode enum with updates # Latest Proposal We should update current [HttpStatusCode](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Net.Primitives/src/System/Net/HttpStatusCode.cs) to include more official status codes defined in recent RFCs. ## Proposed API ```diff public enum HttpStatusCode { // Informational 1xx Continue = 100, SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, // Successful 2xx OK = 200, Created = 201, Accepted = 202, NonAuthoritativeInformation = 203, NoContent = 204, ResetContent = 205, PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + IMUsed = 226, // Redirection 3xx MultipleChoices = 300, Ambiguous = 300, MovedPermanently = 301, Moved = 301, Found = 302, Redirect = 302, SeeOther = 303, RedirectMethod = 303, NotModified = 304, UseProxy = 305, Unused = 306, TemporaryRedirect = 307, RedirectKeepVerb = 307, + PermanentRedirect = 308, // Client Error 4xx BadRequest = 400, Unauthorized = 401, PaymentRequired = 402, Forbidden = 403, NotFound = 404, MethodNotAllowed = 405, NotAcceptable = 406, ProxyAuthenticationRequired = 407, RequestTimeout = 408, Conflict = 409, Gone = 410, LengthRequired = 411, PreconditionFailed = 412, RequestEntityTooLarge = 413, RequestUriTooLong = 414, UnsupportedMediaType = 415, RequestedRangeNotSatisfiable = 416, ExpectationFailed = 417, + // Removed status code: ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, // Server Error 5xx InternalServerError = 500, NotImplemented = 501, BadGateway = 502, ServiceUnavailable = 503, GatewayTimeout = 504, HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, } ``` ## Details Values added from WinRT: [Windows.Web.Http.HttpStatusCode](https://docs.microsoft.com/en-us/uwp/api/windows.web.http.httpstatuscode): ``` AlreadyReported FailedDependency IMUsed InsufficientStorage Locked LoopDetected MultiStatus NetworkAuthenticationRequired None (not sure what's this, not added) NotExtended PermanentRedirect PreconditionRequired Processing RequestHeaderFieldsTooLarge TooManyRequests UnprocessableEntity VariantAlsoNegotiates ``` * [RFC 2324](https://tools.ietf.org/html/rfc2324): `ImATeapot` * [RFC 7540](https://tools.ietf.org/html/rfc7540): `MisdirectedRequest` * [RFC 7725](https://tools.ietf.org/html/rfc7725): `UnavailableForLegalReasons` * [RFC 8297](https://tools.ietf.org/html/rfc8297): `EarlyHints` # Original Proposal Please update with codes from RFCs 2817, 5785, 6266, 6585. +4383 area-System.Collections Fix Culture bug around NameValueCollection tests Some tests for NameValueCollection were setting the DefaultThreadCurrentCulture to Turkish and not resetting it back to the default. This was causing failures in the HybridDictionary tests that were running concurrently with these tests. I refactored the code to instead use CurrentCulture and also added a try/finally to reset the CurrentCulture just to be safe. Resloves #1136 @stephentoub +4385 area-System.Runtime Replace windows RTLGetVersion with a better win32 version api that will work on all platforms. This change will affect the output of `RuntimeInformation.OSDecription` on windows. This API and several other documented version APIs for windows are not available on onecoreuwp and hence will fail WACK test for .NET Native. This work item tracks sync up with windows team to either expose these to onecoreuwp or for better alternatives. +4386 area-System.Net Cleanup System.Net.Requests tests Switch remaining tests to use the new test server. Fix up 'var' usage. Use 'async Task' pattern and 'await' instead of GetResult() for tests. +4388 area-Infrastructure Test baseline is wrong We need to investigate the bits that we use for testing in corefx and for CI. Today each test decides which dependencies are live (via ProjectReferences) or baseline (via packages). Additionally the baseline is only updated periodically. This can lead us to a place where folks commit bits that might work independently by not together. For TOF, internally, folks are solving this by always using a fixed set of packages after they are produced by the build. In CoreFx we don't yet build the packages in build, so we have the [TestWithLocalLibraries](https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.Build.Tasks/PackageFiles/publishtest.targets#L75) property, but I don't know if this is used in CI or local dev builds. Also I don't think this will currently work for linux/OS due to the assumed DLL pattern. Finally it looks to me like our RC builds are still pulling packages from the [master feed](https://github.com/dotnet/corefx/blob/release/1.0.0-rc1/dir.props#L77). /cc @joshfree @weshaggard +4389 area-System.Net Removing the X509Chain shim from System.Net.Security Adding code proposed by @bartonjs and remving the X509CertificateExtensions shim. Changing the test server and client certificates (pending https://github.com/dotnet/corefx-testdata/pull/3) and adding a few e2e tests. Related: #3114. +4391 area-System.Runtime Add version information to FrameworkDescription. What version string is expected for .NET Framework, .NET Core and .NET Native. +PM @terrajobst on providing insight with marketing names. cc @weshaggard cc @gkhanna79 To provide insight on runtime side. @davidfowl Please provide more data on how useful knowing version of framework is, and what you expect for the 3 different framework stacks. +4396 area-System.Net Called on completed result assert in Socket APM tests on Linux http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/4193/console ``` 16:36:36 Unhandled Exception: System.Diagnostics.Debug+DebugAssertException: LazyAsyncResult#1978366::set_Result() 16:36:36 Called on completed result. 16:36:36 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 16:36:36 at System.Environment.get_StackTrace() 16:36:36 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 16:36:36 at System.Net.GlobalLog.Assert(String message, String detailMessage) 16:36:36 at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) 16:36:36 at System.Net.LazyAsyncResult.set_Result(Object value) 16:36:36 at System.Net.Sockets.BaseOverlappedAsyncResult.CheckAsyncCallOverlappedResult(SocketError errorCode) 16:36:36 at System.Net.Sockets.Socket.DoBeginAccept(Socket acceptSocket, Int32 receiveSize, AcceptOverlappedAsyncResult asyncResult) 16:36:36 at System.Net.Sockets.Socket.BeginAccept(Socket acceptSocket, Int32 receiveSize, AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.Socket.BeginAccept(Int32 receiveSize, AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.Socket.BeginAccept(AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.SocketTaskExtensions.b__0(AsyncCallback callback, Object state) 16:36:36 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 16:36:36 at System.Net.Sockets.SocketTaskExtensions.AcceptAsync(Socket socket) 16:36:36 at System.Net.Sockets.SocketAPMExtensions.BeginAccept(Socket socket, AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.Tests.SocketTestServerAPM.OnAccept(IAsyncResult result) 16:36:36 at System.Threading.Tasks.TaskToApm.<>c__DisplayClass1.b__0() 16:36:36 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:36:36 at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(ContextCallback callback, Object state, Task& currentTask) 16:36:36 at System.Threading.Tasks.Task.FinishContinuations() 16:36:36 at System.Threading.Tasks.Task`1.TrySetResult(TResult result) 16:36:36 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 16:36:36 at System.Net.LazyAsyncResult.Complete(IntPtr userToken) 16:36:36 at System.Net.ContextAwareResult.CompleteCallback(Object state) 16:36:36 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:36:36 at System.Net.ContextAwareResult.Complete(IntPtr userToken) 16:36:36 at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) 16:36:36 at System.Net.LazyAsyncResult.InvokeCallback(Object result) 16:36:36 at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32 numBytes, SocketError errorCode) 16:36:36 at System.Net.Sockets.AcceptOverlappedAsyncResult.CompletionCallback(Int32 acceptedFileDescriptor, Byte[] socketAddress, Int32 socketAddressLen, SocketError errorCode) 16:36:36 at System.Net.Sockets.SocketAsyncContext.AcceptOperation.InvokeCallback() 16:36:36 at System.Net.Sockets.SocketAsyncContext.AsyncOperation.b__26(Object o) 16:36:36 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:36:36 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 16:36:36 at System.Threading.ThreadPoolWorkQueue.Dispatch() 16:36:36 at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) 16:36:36 at System.Net.GlobalLog.Assert(String message, String detailMessage) 16:36:36 at System.Net.GlobalLog.Assert(Boolean condition, String messageFormat, Object[] data) 16:36:36 at System.Net.LazyAsyncResult.set_Result(Object value) 16:36:36 at System.Net.Sockets.BaseOverlappedAsyncResult.CheckAsyncCallOverlappedResult(SocketError errorCode) 16:36:36 at System.Net.Sockets.Socket.DoBeginAccept(Socket acceptSocket, Int32 receiveSize, AcceptOverlappedAsyncResult asyncResult) 16:36:36 at System.Net.Sockets.Socket.BeginAccept(Socket acceptSocket, Int32 receiveSize, AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.Socket.BeginAccept(Int32 receiveSize, AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.Socket.BeginAccept(AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.SocketTaskExtensions.b__0(AsyncCallback callback, Object state) 16:36:36 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 16:36:36 at System.Net.Sockets.SocketTaskExtensions.AcceptAsync(Socket socket) 16:36:36 at System.Net.Sockets.SocketAPMExtensions.BeginAccept(Socket socket, AsyncCallback callback, Object state) 16:36:36 at System.Net.Sockets.Tests.SocketTestServerAPM.OnAccept(IAsyncResult result) 16:36:36 at System.Threading.Tasks.TaskToApm.<>c__DisplayClass1.b__0() 16:36:36 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:36:36 at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(ContextCallback callback, Object state, Task& currentTask) 16:36:36 --- End of stack trace from previous location where exception was thrown --- 16:36:36 at System.Threading.Tasks.AwaitTaskContinuation.<>c.b__18_0(Object s) 16:36:36 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:36:36 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 16:36:36 at System.Threading.ThreadPoolWorkQueue.Dispatch() 16:36:36 ./run-test.sh: line 130: 61302 Aborted (core dumped) ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory 16:36:36 One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 134. ``` cc: @pgavlin, @cipop, @davidsh +4397 area-System.Diagnostics Perf_Process.Kill test failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_debug_prtest/6046/console ``` System.InvalidOperationException : Cannot process request because the process (10824) has exited. Stack Trace: d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(810,0): at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(839,0): at System.Diagnostics.Process.GetProcessHandle(Int32 access) d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(71,0): at System.Diagnostics.Process.Kill() d:\j\workspace\dotnet_corefx_windows_debug_prtest\src\System.Diagnostics.Process\tests\Performance\Perf.Process.cs(30,0): at System.Diagnostics.Tests.Perf_Process.Kill() ``` +4400 area-System.Linq Expression.VisitBlock throws NullReferenceException if only variables change Repro: ``` csharp static void Repro() { new V().Visit(Expression.Block(new[] { Expression.Parameter(typeof(int)) }, Expression.Empty())); } class V : ExpressionVisitor { protected override Expression VisitParameter(ParameterExpression node) { return Expression.Parameter(node.Type, node.Name); } } ``` This came up when writing a variable substitution visitor to eliminate aliasing of variables. The issue is in the loop at the end of `VisitBlock` making the assumption that the array cannot be null. It will only be non-null if at least one expression in the block was rewritten. +4403 area-System.Net Consolidate some shared Linux/OSX code in NetworkInformation The same code was duplicated in both the Linux and OSX implementations, when it could instead be on the base Unix implementation. This also results in a better error message being used on OS X. cc: @mellinoe, @cipop +4405 area-Serialization Serializing a TimeSpan writes an empty element ``` using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; public class Program { public static void Main() { var dummy = new Dummy { Value = TimeSpan.FromSeconds(1) }; Console.WriteLine(dummy.Value); Console.WriteLine(XmlConvert.ToString(dummy.Value)); var stringBuilder = new StringBuilder(); var serializer = new XmlSerializer(dummy.GetType()); using (var writer = new StringWriter(stringBuilder)) { serializer.Serialize(writer, dummy); } var xml = stringBuilder.ToString(); Console.WriteLine(); Console.Write(xml); } public class Dummy { public TimeSpan Value { get; set; } } } ``` Outputs `` This is not pit of success. [Sample](https://dotnetfiddle.net/t6tE23) +4406 area-System.Runtime Additional coverage for GetEnvironmentVariable for empty variable We should add some more tests around GetEnvironmentVariable when the value of the environment variable is an empty string. This is not possible on Windows, but should be possible on other platforms. +4410 area-Infrastructure Performance testing I'm trying to write own performance test but get the following error. `msbuild /t:RebuildAndTest /p:Performance=true /p:Configuration=Release` ``` System.IO.FileLoadException : Could not load file or assembly 'xunit.pe rformance.core, Version=1.0.0.26, Culture=neutral, PublicKeyToken=67066efe964 d3b03' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Stack Trace: at Microsoft.Xunit.Performance.BenchmarkTestInvoker.CallTestMetho d(Object testClassInstance) --- End of stack trace from previous location where exception was th rown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAn dDebuggerNotification(Task task) --- End of stack trace from previous location where exception was th rown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAn dDebuggerNotification(Task task) ``` @ianhays +4411 area-System.Reflection There is no way to make a reflection call to a method with ref parameters while preserving aliasing nature of ref VSadov: while passing parameters byref can be modeled through passing mutable object[] + copybacks. It is not the same as truly passing arguments byref. Some methods, like ones from Interlocked family, rely on aliasing nature of ref and the difference is observable. Since all the calls in Interpreter are done via reflection, we cannot interpret certain calls correctly due to insufficient APIs. ============== Unlike the expression compiler where address-obtaining instructions are used to call by reference, the expression interpreter has to perform copy operations in and out of an arguments array upon calling the `Invoke` method. As a result, calls to constructs like `Interlocked` methods don't have the intended effect. An example repro is shown below: ``` csharp var inc = ReflectionUtils.MethodInfoOf((int x) => Interlocked.Increment(ref x)); var run = ReflectionUtils.MethodInfoOf(() => Task.Run(default(Action))); var all = ReflectionUtils.MethodInfoOf(() => Task.WaitAll(default(Task), default(Task))); var p = Expression.Parameter(typeof(int)); var n = Expression.Parameter(typeof(int)); var i = Expression.Parameter(typeof(int)); var b = Expression.Label(); var l = Expression.Block( new[] { i }, Expression.Loop( Expression.Block( Expression.IfThen( Expression.Equal(i, n), Expression.Break(b) ), Expression.Call(inc, p), Expression.PostIncrementAssign(i) ), b ) ); var a = Expression.Lambda(l); var t = Expression.Call(run, a); var e = Expression.Block( new[] { p }, Expression.Call(all, Expression.NewArrayInit(typeof(Task), t, t)), p ); var f = Expression.Lambda>(e, n).Compile(); ``` One would expect f(N) to return 2 \* N. This is the case for the compiler, but not for the interpreter. +4414 area-System.Net Cleanup System.Net.Http tests - Move more tests to the new test server - Cleanup 'var' coding patterns - Remove duplicate tests (*Content clas related) that are already covered with the *Content class tests - Utiilize the newer test server VerifyUpload endpoint which does 'Content-MD5' verification of transmitted payload to the server as well as payload from the server - Add GZip related tests in addition to Deflate compression schemes +4416 area-System.Net Cleanup System.Net.Http.WinHttpHandler tests - Move tests to the new test server - Fixup an SSL certificate test to handle wildcard certs - Remove HttpTestServers.cs file. The next PR will then rename HttpTestServers2.cs to HttpTestServers.cs +4417 area-System.Net Rename HttpTestServers2.cs to HttpTestServers.cs @CIPop @stephentoub PTAL +4420 area-System.Net Failed Debug.Assert in SendAsync_SendRequestUsingMethodToEchoServerWithContent_Success on Linux "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/4225/console ``` 14:05:57 System.Net.Http.Functional.Tests.HttpClientHandlerTest.SendAsync_SendRequestUsingMethodToEchoServerWithContent_Success(method: ""GET"", secureServer: True) [FAIL] 14:05:57 System.Diagnostics.Debug+DebugAssertException : The task must have completed if we're getting called back. 14:05:57 14:05:57 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 14:05:57 at System.Environment.get_StackTrace() 14:05:57 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 14:05:57 at System.Net.Http.CurlHandler.MultiAgent.TransferDataFromRequestStream(IntPtr buffer, Int32 length, EasyRequest easy) 14:05:57 at System.Net.Http.CurlHandler.MultiAgent.CurlSendCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) 14:05:57 at Interop.Http.MultiPerform(SafeCurlMultiHandle multiHandle) 14:05:57 at Interop.Http.MultiPerform(SafeCurlMultiHandle multiHandle) 14:05:57 at System.Net.Http.CurlHandler.MultiAgent.WorkerLoop() 14:05:57 at System.Net.Http.CurlHandler.MultiAgent.b__14(Object s) 14:05:57 at System.Threading.Tasks.Task.Execute() 14:05:57 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 14:05:57 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 14:05:57 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 14:05:57 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 14:05:57 Stack Trace: 14:05:57 at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) 14:05:57 at System.Net.Http.CurlHandler.MultiAgent.TransferDataFromRequestStream(IntPtr buffer, Int32 length, EasyRequest easy) 14:05:57 at System.Net.Http.CurlHandler.MultiAgent.CurlSendCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) 14:05:57 --- End of stack trace from previous location where exception was thrown --- 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:05:57 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 14:05:57 at System.Net.Http.StreamToStreamCopy.d__0.MoveNext() 14:05:57 --- End of stack trace from previous location where exception was thrown --- 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 14:05:57 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__12e.MoveNext() 14:05:57 --- End of stack trace from previous location where exception was thrown --- 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:05:57 --- End of stack trace from previous location where exception was thrown --- 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:05:57 --- End of stack trace from previous location where exception was thrown --- 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:05:57 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` " +4421 area-System.Net Some System.Net.Primitive Tests Covered: - IPAddress - IPEndPoint - DnsEndPoint - EndPoint - Cookie - CookieCollection - CookieContainer - NetworkCredential - SystemCredential - CredentialCache +4422 area-System.Net Disable test BeginSend_AsyncOperationCompletes_Success Issue #4363 +4423 area-System.Net ReceiveFromAsyncV4BoundToSpecificV4_Success timed out in CI on Windows ``` Discovering: System.Net.Sockets.Tests Discovered: System.Net.Sockets.Tests Starting: System.Net.Sockets.Tests System.Net.Sockets.Tests.DualMode.ReceiveFromAsyncV4BoundToSpecificV4_Success [FAIL] System.TimeoutException : The operation has timed out. Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs(596,0): at System.Net.Sockets.Tests.DualMode.ReceiveFromAsync_Helper(IPAddress listenOn, IPAddress connectTo) Finished: System.Net.Sockets.Tests ``` +4425 area-Meta A contributors team on the Stack Overflow Teams beta Stack Overflow just started a private beta of [Teams](http://meta.stackoverflow.com/questions/309716/the-teams-private-beta-is-starting) where you create a page around an OSS project, team, company, etc. I wondered whether people are interested in joining such a team page around corefx contributions? If so it can be done by clicking [here](http://stackoverflow.com/teams/98/corefx-contributors/join?auth=12806578-0500-4963-8821-399d75de5ee4) +4428 area-System.Data Refactor SNI 'ref' to use 'out' +4429 area-System.Net System.Net.WebSockets.Client hangs when blocking a callback thread The effective sequence of events (this isn't the actual code, it's a lot more convoluted and disjoint so it's a lot of work to change) is this: ``` csharp var result = await _webSocket.ReceiveAsync(new ArraySegment(buffer, 0, _receiveBufferSize), _ct); result = _webSocket.ReceiveAsync(new ArraySegment(buffer, 0, _receiveBufferSize), _ct).GetAwaiter().GetResult(); ``` The second ReceiveAsync never completes. Here is the bottom of the call stack. Further up won't help any, it eventually calls _webSocket.ReceiveAsync() and ends up blocking in TaskAwaiter<int>.GetResult(). ``` system.private.servicemodel.dll!System.ServiceModel.Channels.WebSocketTransportDuplexSessionChannel.WebSocketMessageSource.PrepareMessage(System.Net.WebSockets.WebSocketReceiveResult result, byte[] buffer, int count) Line 891 C# system.private.servicemodel.dll!System.ServiceModel.Channels.WebSocketTransportDuplexSessionChannel.WebSocketMessageSource.StartNextReceiveAsync() Line 815 C# [Resuming Async Method] mscorlib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run() Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0() Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0() Unknown mscorlib.ni.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask) Unknown mscorlib.ni.dll!System.Threading.Tasks.Task.FinishContinuations() Unknown mscorlib.ni.dll!System.Threading.Tasks.Task.TrySetResult(System.__Canon result) Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult(System.Net.WebSockets.WebSocketReceiveResult result) Unknown system.net.websockets.client.dll!System.Net.WebSockets.WinHttpWebSocket.ReceiveAsync(System.ArraySegment buffer, System.Threading.CancellationToken cancellationToken) Unknown mscorlib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run() Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0() Unknown mscorlib.ni.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0() Unknown mscorlib.ni.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask) Unknown mscorlib.ni.dll!System.Threading.Tasks.Task.FinishContinuations() Unknown mscorlib.ni.dll!System.Threading.Tasks.Task.TrySetResult(bool result) Unknown mscorlib.ni.dll!System.Threading.Tasks.TaskCompletionSource.TrySetResult(bool result) Unknown system.net.websockets.client.dll!System.Net.WebSockets.WinHttpWebSocketCallback.OnWebSocketReadComplete(System.Net.WebSockets.WinHttpWebSocketState state, Interop.WinHttp.WINHTTP_WEB_SOCKET_STATUS info) Unknown system.net.websockets.client.dll!System.Net.WebSockets.WinHttpWebSocketCallback.WebSocketCallback(System.IntPtr handle, System.Net.WebSockets.WinHttpWebSocketState state, uint internetStatus, System.IntPtr statusInformation, uint statusInformationLength) Unknown system.net.websockets.client.dll!System.Net.WebSockets.WinHttpWebSocketCallback.WinHttpCallback(System.IntPtr handle, System.IntPtr context, uint internetStatus, System.IntPtr statusInformation, uint statusInformationLength) Unknown ``` I tried removing the following code from WinHttpWebSocket.InitializeWinHttp but it made no difference: ``` uint optionAssuredNonBlockingTrue = 0; // TRUE if (!Interop.WinHttp.WinHttpSetOption( sessionHandle, Interop.WinHttp.WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS, ref optionAssuredNonBlockingTrue, (uint)Marshal.SizeOf())) { WinHttpException.ThrowExceptionUsingLastError(); } ``` As an experiment, I changed our call to PrepareMessage to use await Task.Run instead and everything started working. +4431 area-System.Net ReceiveFromAsyncV6BoundToAnyV6_Success failed due to timeouts in CI on Windows This has failed due to timeouts a few times recently. http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/6089/consoleFull ``` System.Net.Sockets.Tests.DualMode.ReceiveFromAsyncV6BoundToAnyV6_Success [FAIL] System.TimeoutException : The operation has timed out. Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs(596,0): at ``` +4434 area-Infrastructure Enable CMake sanitizers for coreclr This enables the CMake sanitizers for coreclr including all native code (clr and pal layers). The sanitizers include Address Sanitizer, Undefined Behavior Sanitizer, and Leak Sanitizer. See http://clang.llvm.org/docs/UsersManual.html (search for sanitize) http://clang.llvm.org/docs/AddressSanitizer.html http://clang.llvm.org/docs/LeakSanitizer.html It works in debug mode only and is enabled by running enablesanitizers.sh (a new shell script). Performance hit is approx. 50% slower to build and test (unknown since tests abort currently due to sanitizers failure). Size of libraries doubles. Enabling sanitizers including fixing cryptic linker errors where the header files includes methods that don't have a corresponding implementation. Normally those methods are dropped by the linker because they are unused\dead code but not with address sanitizer enabled. Current code: https://github.com/dotnet/coreclr/compare/master...steveharter:CMake +4438 area-System.Data Mars - Intermittently Failed - Causing Timeout "Repro ``` using (var conn = new SqlConnection(""Data Source=***; User ID=***; Password=***;Initial Catalog=***;MultipleActiveResultSets=true;"")) { conn.Open(); var cmdText = ""select 1""; var cmd1 = new SqlCommand(cmdText, conn); var cmd2 = new SqlCommand(cmdText, conn); Console.WriteLine(""{0:hh:mm:ss} - Execute Reader 1"", DateTime.Now); using (var reader1 = cmd1.ExecuteReader()) { Console.WriteLine(""{0:hh:mm:ss} - Execute Reader 2"", DateTime.Now); using (var reader2 = cmd2.ExecuteReader()) { Console.WriteLine(""{0:hh:mm:ss} - Start Read Reader 2"", DateTime.Now); reader2.Read(); Console.WriteLine(""{0:hh:mm:ss} - Finish Read Reader 2"", DateTime.Now); } Console.WriteLine(""{0:hh:mm:ss} - Start Read Reader 1"", DateTime.Now); reader1.Read(); Console.WriteLine(""{0:hh:mm:ss} - Finish Read Reader 1"", DateTime.Now); } } ``` results : 01:01:19 - Execute Reader 1 01:01:19 - Execute Reader 2 01:01:49 - ERROR : System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. " +4439 area-System.Data Managed SNI - Open connection to unsupported sql server (SQL2000) - get timeout based on connection string and spit different error "Repro ``` try { using (var conn = new SqlConnection(""Data Source = sql2000; User ID = ***; Password = ***;"") ) { Console.WriteLine(""{0:hh:mm:ss} - Start Opening Invalid connection"", DateTime.Now); conn.Open(); } } catch (Exception ex) { Console.WriteLine(""{0:hh:mm:ss} - ERROR : {1}"", DateTime.Now, ex.ToString()); } ``` Expected Error Message ``` 02:27:15 - Start Opening 02:27:36 - ERROR : System.InvalidOperationException: The SQL Server instance returned an invalid or unsupported protocol version during login negotiation. at System.Data.SqlClient.TdsParser.TryProcessLoginAck( ``` Actual Error Message ``` 02:16:47 - Start Opening Invalid connection 02:17:02 - ERROR : System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) ``` " +4441 area-System.Runtime Add Convert.ToHexString / FromHexString This would complement `Convert.ToBase64String` / `Convert.FromBase64String`. You all know you've written this API over and over again in your projects. :) +4442 area-System.IO LastAccessTime throws on Linux for non-existent files on CoreCLR "LastAccessTime for non-existent file must return 1/1/1601 12:00:00 AM. It does so on Windows. Throws on Linux. Below program assumes file ""haha"" does not exist. ``` using System; using System.IO; namespace nonExistent { public class Program { public void Main(string[] args) { FileInfo i = new FileInfo(""haha""); Console.WriteLine(i.LastAccessTimeUtc); } } } ``` " +4443 area-System.Globalization Update System.Text.Encodings.Web to Unicode 8 When HttpAbstractions issue https://github.com/aspnet/HttpAbstractions/issues/391 was resolved it switched to using the encoders in the CoreFX repo. The encoders in the aspnet org already had support for Unicode 8.0, which is not yet available in the CoreFX repo. +4449 area-System.Net Replace faulty assert in CurlHandler with proper handling CurlHandler's support for pausing the connection needs to be resilient against spurious unpausing. This commit just removes a faulty assert for a condition that is possible and replaces it with proper handling (repausing). Fixes #4187 cc: @kapilash, @davidsh +4451 area-System.IO Remove Managed Inflator and Deflator code in System.IO.Compression With #4440 we no longer need the managed compression code as we are always using a native compression implementation. The managed code is now dead and can't be hit by a user. We should remove this code. +4452 area-System.Net Changing S.N.NetworkInformation tests to allow NICs with Speed==-1 Certain WiFi NICs report `Speed` of -1 when the `OperationalStatus` is `Down`. This was discovered by @stephentoub by running the tests on his machine. @mellinoe @stephentoub @davidsh PTAL /cc @SidharthNabar +4453 area-System.Threading Linux System.Threading.Tasks.Dataflow.Tests failed http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/4273/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 13:34:51 === TEST EXECUTION SUMMARY === 13:34:51 System.Runtime.Extensions.Tests Total: 503, Errors: 0, Failed: 0, Skipped: 0, Time: 4.543s 13:34:53 System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests.TestDebuggerDisplaysAndTypeProxies [FAIL] 13:34:53 System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 13:34:53 Stack Trace: 13:34:53 at System.Collections.Generic.Queue`1.Enumerator.MoveNext() 13:34:53 at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 13:34:53 at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 13:34:53 at System.Threading.Tasks.Dataflow.BroadcastBlock`1.BroadcastingSourceCore`1.DebuggingInformation.get_InputQueue() 13:34:53 at System.Threading.Tasks.Dataflow.BroadcastBlock`1.DebugView.get_InputQueue() 13:34:59 Finished: System.Numerics.Vectors.Tests 13:34:59 13:34:59 === TEST EXECUTION SUMMARY === 13:34:59 System.Numerics.Vectors.Tests Total: 1058, Errors: 0, Failed: 0, Skipped: 0, Time: 12.685s 13:35:04 Finished: System.Threading.Tasks.Dataflow.Tests 13:35:04 13:35:04 === TEST EXECUTION SUMMARY === 13:35:04 System.Threading.Tasks.Dataflow.Tests Total: 282, Errors: 0, Failed: 1, Skipped: 0, Time: 17.754s 13:35:04 One or more tests failed while running tests from 'System.Threading.Tasks.Dataflow.Tests'. Exit code 1. +4454 area-System.Data _gcHandle usage ? https://github.com/dotnet/corefx/blob/1d9edc6f2da2c9cedf1e1c700fe88d3fe3299d91/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIProxy.cs It seems there is no one allocated this _gcHandle. This path will always false https://github.com/dotnet/corefx/blob/1d9edc6f2da2c9cedf1e1c700fe88d3fe3299d91/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs#L902 Can we remove this ? +4455 area-System.Text System.Text.Encodings.Web.TextEncoder.EncodeIntoBuffer throws ArgumentException on 32-bit Mono "Simple repro: ``` using System; using System.Text.Encodings.Web; namespace EncodeIssue { public class Program { public void Main(string[] args) { Console.WriteLine(UrlEncoder.Default.Encode(""na me"")); } } } ``` When run: ``` System.ArgumentException: Argument encoder does not implement MaxOutputCharsPerInputChar correctly. at System.Text.Encodings.Web.TextEncoder.EncodeIntoBuffer (System.Char* value, Int32 valueLength, Int32 firstCharacterToEncode, System.Char* buffer, Int32 bufferLength) [0x00000] in :0 at System.Text.Encodings.Web.TextEncoder.Encode (System.String value) [0x00000] in :0 at EncodeIssue.Program.Main (System.String[] args) [0x00000] in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in :0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in :0 at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute (System.Reflection.Assembly assembly, System.String[] args, IServiceProvider serviceProvider) [0x00000] in :0 at Microsoft.Dnx.ApplicationHost.Program+<>c__DisplayClass3_0.b__0 () [0x00000] in :0 at System.Threading.Tasks.Task`1[System.Threading.Tasks.Task`1[System.Int32]].InnerInvoke () [0x00000] in :0 at System.Threading.Tasks.Task.Execute () [0x00000] in :0 ``` Make sure you're using a 32-bit Mono to repro, since it doesn't happen on 64-bit. " +4456 area-System.IO Add BufferedStream to CoreFX Adds source and tests to CoreFX for System.IO.BufferedStream. Tests: I modified the existing System.IO tests that used MemoryStreams to instead be inheritable. I made a FakeStream that is an indirection around MemoryStream that enables BufferedStream(new FakeStream) to be used interchangeably with MemoryStream(). Though wrapping a MemoryStream with a BufferedStream isn't useful in the real world, it's an adequate method of ensuring the BufferedStream is calling the underlying stream functions correctly. Coverage is 89%/80% for BufferedStream with these additions. resolves #1793 The tests will fail CI as they will be compiled against the contract pulled in from nuget for System.IO version 4.0.10. For testing, I manually modified the reference assemblies to those produced by my System.IO/src build and all tests pass. I expect I need to do something on the TFS side of things to resolve this issue. The N custom implementation in \ndp\FxCore\src\System.Runtime.WindowsRuntime\System\IO can also be removed in favor of this one. @stephentoub @mellinoe @manu-silicon +4458 area-System.Runtime Ensure minimum GUID entropy on all platforms. GUIDs on Windows have, for years, provided 122 bits of entropy. This behavior needs to be enshrined and guaranteed on all platforms as people have taken dependencies upon it. +4459 area-System.Diagnostics Fix intermittent perf_process test failure. Perf_Process.Kill was trying to kill processes that could exit before it had the chance to get to them. I modified the ProcessTestBase helpers to make CreateProcessInfinite create an actually infinitely running process for the Kill test and renamed the old CreateProcessInfinite to the more accurate CreateProcessLong resolves #4397 @stephentoub @Priya91 +4460 area-Infrastructure Enabled Native Windows Build of System.IO.Compression.Native (zlib) "This commit adds scripts to enable building Windows-specific binaries in CoreFX. The code is mostly modeled off of CoreCLR with some elements taken from build.sh building for native Unix components. It uses CMake to produce the projects that are then passed to msbuild. The logic primarily resides within the ""build-native.cmd"" script that is called by ""build.cmd"" from the corefx root when ""__BuildNative"" is set. Some things to be aware of: - __BuildNative in build.cmd is currently always set. Either some logic should be added to actually evaluate it, or the variable should be removed. - Cross compilation isn't set up. build-native.cmd can only build for windows at this time. It can build for x64 or x86, however. The default is currently x64. AnyCPU also defaults to x64. - Since manual parsing of args is used, most of the msbuild targets that can be passed to build.cmd will be ignored by native compilation. Currently, only Configuration and Platform are acknowledged. I can imagine a system where the native project can be used with the same targets as the managed ones, but that capability isn't complete now. Those properties/targets are still used in the managed build, of course. - A TFS-side commit to the package definitions will need to follow this PR so that we can consume the publicly built System.IO.Compression.Native. - I minimized most of the compilation options for Windows cmake. Some will likely needed to be reenabled in the CMakeLists.txt in corefx/src/native/ - I tested the System.IO.Compression.Native.dll built by ""build.cmd /p:Configuration=Release"" by renaming it to ""clrcompression.dll"" and running the unit tests using it. - This PR will need to be modified pending the merging of https://github.com/dotnet/corefx/pull/4440. - The Zlib code included is unaltered 1.2.3 code. - This will unblock https://github.com/dotnet/corefx/issues/3986 @bjjones if we merge this and don't decide to instead consume a different zlib package (e.g. http://nuget.org/api/v2/package/zlib/1.2.8.8) resolves #826 @stephentoub @mellinoe @joshfree @richlander @eerhardt " +4462 area-System.Reflection Expose GetMethod and GetConstructor extensions with both BindingFlags and Type[] `System.Reflection.TypeExtensions` is good for porting existing .NET Framework code across, however it is missing an overload with a combination of `BindingFlags` and `Type[]` for both `GetMethod` and `GetConstructor`. My use case is getting a private constructor when there are multiple constructors: ``` type.GetConstructor( BindingFlags.Instance | BindingFlags.NonPublic, null, // binder new[] { typeof(object), ... }, null // modifiers ); ``` I assume these weren't exposed in corefx because you didn't want to provide the overloads with a `Binder` parameter, so something like these would be optimal however would be new overloads not available in .NET Framework: ``` public static MethodInfo GetMethod(this Type type, string name, BindingFlags bindingAttr, Type[] types) public static ConstructorInfo GetConstructor(this Type type, BindingFlags bindingAttr, Type[] types) ``` I've looked at using Linq over the `TypeInfo` but I'd have to check each property rather than use BindingFlags, and `TypeInfo` isn't available in .NET 3.5/4.0 so I can't just change to one or the other. For now I've emulated the old .NET Framework signature using `type.GetConstructors(bindingAttr).SingleOrDefault(...)`, it is ugly and likely heaps slower than the .NET Framework reflection call. I'm keen to hear if you have any intention of providing this API, otherwise I'll probably change all our code using the API to a shim extension method something like `type.GetPrivateConstructor(new[] { ... })` with conditionally compiled implementation. +4463 area-System.Reflection Expose System.Reflection.TargetException .NET Framework exposed both `TargetException` (fail on an invalid target, e.g, null) and `TargetInvocationException` (fail actually invoking the target). The runtime still throws a `TargetException` in coreclr and there is code in the corefx unit tests that check the exception is thrown using `Type.FullName` or `Assert.ThrowsAny`. Is there a reason this exception hasn't been exposed? I'm porting code checking for this exception. +4465 area-System.ComponentModel EnsureValidDataType should reject whitespaces in DataTypeAttribute.CustomDataType property "Method EnsureValidDataType() should not raise an exception when the property CustomDataType is a WhiteSpace? This code: ``` c# /// /// Throws an exception if this attribute is not correctly formed /// /// is thrown if the current attribute is ill-formed. private void EnsureValidDataType() { if (DataType == DataType.Custom && string.IsNullOrEmpty(CustomDataType)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, SR.DataTypeAttribute_EmptyDataTypeString)); } } ``` Should be? ``` c# /// /// Throws an exception if this attribute is not correctly formed /// /// is thrown if the current attribute is ill-formed. private void EnsureValidDataType() { if (DataType == DataType.Custom && string.IsNullOrWhiteSpace(CustomDataType)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, SR.DataTypeAttribute_EmptyDataTypeString)); } } ``` " +4466 area-System.Diagnostics TestUserCredentialsPropertiesOnWindows failed in CI in outer loop http://dotnet-ci.cloudapp.net/job/dotnet_corefx_outerloop_windows_win10_debug/88/console ``` 03:38:50 System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows [FAIL] 03:38:50 System.InvalidOperationException : No process is associated with this object. 03:38:50 Stack Trace: 03:38:50 d:\j\workspace\dotnet_corefx_outerloop_windows_win10_debug\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(753,0): at System.Diagnostics.Process.EnsureState(State state) 03:38:50 d:\j\workspace\dotnet_corefx_outerloop_windows_win10_debug\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(172,0): at System.Diagnostics.Process.get_HasExited() 03:38:50 d:\j\workspace\dotnet_corefx_outerloop_windows_win10_debug\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(325,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows() ``` +4467 area-System.Net SslStream tests: timeout http://dotnet-ci.cloudapp.net/job/dotnet_corefx_windows_release_prtest/6135/console ``` System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success [FAIL] Handshake completed in the allotted time Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs(36,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success() System.Net.Security.Tests.CertificateValidationClientServer.CertificateValidationClientServer_EndToEnd_Ok [FAIL] Client/Server Authentication timed out. Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\CertificateValidationClientServer.cs(80,0): at System.Net.Security.Tests.CertificateValidationClientServer.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachProtocol_Success [FAIL] Timed Out Expected: True Actual: False Stack Trace: d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(252,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__5c.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) d:\j\workspace\dotnet_corefx_windows_release_prtest\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(108,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +4468 area-Infrastructure Reenable Win7 in CI All of our Windows 7 testing is offline. +4473 area-System.Net WinHTTP certificate chain build algorithm is potentially not including certificates obtained from the TLS connection Similarly to how SslStream is including TLS certificates obtained from Schannel, WinHTTP should use the `PCERT_CONTEXT` obtained using `WINHTTP_OPTION_SERVER_CERT_CONTEXT` to extract certificates from the virtual store and use them during chain construction. See https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/Windows/SChannel/UnmanagedCertificateContext.cs for reference. +4474 area-System.Diagnostics Debug.Assert throws System.Diagnostics.Debug+DebugAssertException Is this by designed for corefx ? because in .net, this should open a debugger instead. Our code currently depends a lot on Debug.Assert. Unfortunately Debug.Assert now throws Debug+DebugAssertException which causing inconsistent from the release mode I remember previously it throws a special uncatchable exception (Environment.FailFast()) which i think can be better instead of causing different behavior. +4475 area-System.IO Change ZLib Optimal CompressionLevel on Unix We currently have this comment and code in System.IO.Compression: ``` C# // Note that ZLib currently exactly correspond to the optimal values. // However, we have determined the optimal values by intependent measurements across // a range of all possible ZLib parameters and over a set of different data. // We stress that by using explicitly the values obtained by the measurements rather than // ZLib defaults even if they happened to be the same. // For ZLib 1.2.3 we have (copied from ZLibNative.cs): // ZLibNative.CompressionLevel.DefaultCompression = 6; // ZLibNative.Deflate_DefaultWindowBits = -15; // ZLibNative.Deflate_DefaultMemLevel = 8; case CompressionLevel.Optimal: zlibCompressionLevel = (ZLibNative.CompressionLevel)6; windowBits = -15; memLevel = 8; strategy = ZLibNative.CompressionStrategy.DefaultStrategy; break; ``` Since we are now using the “current” ZLib version on Unix, and because we are planning on changing which version we use on Windows, I don’t think this is the best approach anymore. It was probably correct when we were hard-coding a version, but since we don’t know which version will actually be used, I think we should be letting the zlib library figure out which is the best compression level to use. I have 2 separate options on how to address this: 1. On Unix, create a new shim method DeflateInit that only takes in the ZStream. The shim code will use the default values from the ZLib headers. Windows remains unchanged. https://github.com/eerhardt/corefx/commit/c1be54d6dfaf64098b42c186c041344e4378f083 2. Change both Windows and Unix code to always use the default compression level (-1) and let the zlib version pick. https://github.com/eerhardt/corefx/commit/38883e3df53153a9434dfc16696667279b18dd82 @ianhays @stephentoub - Do you guys agree this should be fixed? If so, do you have a preferred option - or an even better option than the 2 I've listed? +4476 area-System.Net Add support for custom validation of server SSL Certificate to HttpClient API This issue tracks the addition of new functionality to the HttpClient API. In order to implement certificate pinning and self-signed SSL certificate scenarios, developers need access to the SSL cert presented by the server, and the ability to do their own validation and then accept/reject the connection accordingly. Today, this ability is provided in .NET Framework by ServicePointManager.ServerCertificateValidationCallback and in ASP.NET 5 by WinHttpHandler.ServerCertificateValidationCallback. However, ServicePointManager is not in .NET Core, and WinHttpHandler is not available x-plat and on all app models. Hence, there is a need to add this API to the top-level HttpClient or HttpClientHandler types. If you have specific requirements around this scenario, please enter those here - we will track this issue in our backlog. +4477 area-System.Security Add missing X509ChainStatusFlags net461 added some new X509ChainStatusFlags values. While these are present already in the implementation library, they aren't in the ref library. GetChainStatusInformation was rewritten as a loop for net461, that change should also be ported over to corefx. +4478 area-System.Net Add System.Net.WebSockets.Client tests - Port some of the ToF ClientWebSocket tests that talk to a real websocket server - Cleanup naming of existing tests to conform to System.Net test method naming - Skip tests if not supported on platform. Specifically, these tests were failing on Win7 since Win7 does not support WinHttp WebSockets. We haven't really noticed this failing since the CI doesn't yet run Win7 tests (issue #4468) I plan to port the remainder of the ToF websocket related tests in a subsequent PR. +4479 area-System.Net Add Client certificate support to HttpClient API "The `HttpClientHandler` API has a `ClientCertificateOptions` enum that lets you pick between `Automatic` and `Manual` client cert option. Choosing `Automatic` lets the system choose the ""best"" client certificate for the user from among the installed and accessible ones. `Manual` means that the developer can explicitly pass in a client cert. However, `HttpClientHandler` does not have a `ClientCertificate` property, so you can't assign a certificate for the `Manual` option to use. This issue tracks the fix to address this gap. (`WinHttpHandler` has a `ClientCertificates` property for this purpose, but it is not x-plat and is not supported for all app models (e.g. UWP)) If you have specific requirements around this feature, please enter them here. " +4480 area-System.Net Interop.Ssl.SslShutdown crashes process during GC finalization A WCF test that attempts to write to an SslStream(https://github.com/dotnet/wcf/blob/master/src/System.Private.ServiceModel/tests/Scenarios/Security/TransportSecurity/Tcp/ClientCredentialTypeTests.cs) leaves SafeSslHandle in a closed state (which is correct). But when the next GC happens its finalizer is called and tries to Dispose it, causing an ObjectDisposedException. On Linux, this crashes the process. Unhandled Exception: System.ObjectDisposedException: Safe handle has been closed at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Ssl.SslShutdown(SafeSslHandle ssl) at Interop.OpenSsl.Disconnect(SafeSslHandle context) at System.Net.Security.SafeDeleteContext.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() +4481 area-System.ComponentModel new DataAnnotations.EmailAddressAttribute() set customErrorMessageSet=true When create a `new EmailAddressAttribute()` the property Errormessage has the value of DefaultErrormessage and customErrorMessageSet=true. Now I can't detect if the user set this Errormessage. Look to CompareAttribute. This is the way it can be implemented. Create an extra overload in DataTypeAttribute. ```c# public EmailAddressAttribute() : base(DataType.EmailAddress) { // DevDiv 468241: set DefaultErrorMessage not ErrorMessage, allowing user to set // ErrorMessageResourceType and ErrorMessageResourceName to use localized messages. DefaultErrorMessage = DataAnnotationsResources.EmailAddressAttribute_Invalid; } ``` Should be ```c# public EmailAddressAttribute() : base(DataType.EmailAddress, DataAnnotationsResources.EmailAddressAttribute_Invalid) { } ``` This should also be done for all other Attributes that has the basetype `DataTypeAttribute` +4483 area-System.Net Removing SSLv2 and SSLv3 support from System.Net.Security APIs will throw NotSupportedException if SSLv2 or v3 is used. This behavior is different from .NET Desktop. There is _no_ way to re-enable SSL2 or 3 support via configuration in CoreFX. Tests have been changed to pin this new behavior. Increased passing-test timeouts to 15s. Fix #3114 (partial), #4467 @davidsh @josguil @bartonjs @vijaykota @rajansingh10 @shrutigarg PTAL /cc: @stephentoub @SidharthNabar +4484 area-System.Net Implement Ping on Unix. "This implements System.Net.Utilities on Unix. The implementation is shared between Unix platforms, and should work anywhere that either supports raw sockets or has a discoverable ""ping"" utility. There are two ""modes"" in which a Ping can be sent on Unix. If the user has privileges to create and use raw sockets, then the ""good"" path is taken. The good path uses raw sockets to send ICMP echo requests to the given host, and then listens for ICMP echo replies. If the user does not have privileges to do so, then the implementation simply launches a new process using the ping or ping6 utility program (depending on whether the destination address is an IPv4 or IPv6 address), parses the output, and returns the result. The information from the ""bad path"" is less reliable, and doesn't include things like the IPStatus property, which should be able to cover most of the possible ICMP response message types, not just ""Success"". Additionally, the ""bad path"" cannot send arbitrary buffers along with the echo request, although we can at least preserve the size of the data. This means you can't inspect the PingReply and see that the same data you sent in the echo request was returned unchanged. There are a couple of additions to the Sockets PAL and shim in order to accomodate the ICMP protocol which I'm using in the ""good path"" described above. @cipop, @stephentoub, @pgavlin " +4487 area-System.Data Mars - Intermittently Failed - because of race condition "Repro ``` using (var conn = new SqlConnection(""Data Source=***; User ID=***; Password=***;Initial Catalog=***;MultipleActiveResultSets=true;"")) { conn.Open(); var cmdText = ""select 1""; var cmd1 = new SqlCommand(cmdText, conn); var cmd2 = new SqlCommand(cmdText, conn); Console.WriteLine(""{0:hh:mm:ss} - Execute Reader 1"", DateTime.Now); using (var reader1 = cmd1.ExecuteReader()) { Console.WriteLine(""{0:hh:mm:ss} - Execute Reader 2"", DateTime.Now); using (var reader2 = cmd2.ExecuteReader()) { Console.WriteLine(""{0:hh:mm:ss} - Start Read Reader 2"", DateTime.Now); reader2.Read(); Console.WriteLine(""{0:hh:mm:ss} - Finish Read Reader 2"", DateTime.Now); } Console.WriteLine(""{0:hh:mm:ss} - Start Read Reader 1"", DateTime.Now); reader1.Read(); Console.WriteLine(""{0:hh:mm:ss} - Finish Read Reader 1"", DateTime.Now); } } ``` Sometimes this will error caused by syn packet was sent after the second data packet for second session sent. " +4488 area-System.Net Fix WebHeaderCollection test TODO Now that our xunit runner doesn't balk at some bad characters in theory arguments, fixing a few TODOs. Fixes #2370 cc: @davidsh, @pgavlin +4489 area-System.Data Mars cleanup - create session async constructor https://github.com/dotnet/corefx/pull/4486 I think this async constructor was carried over from native sni params. But it doesn't mean that it will create a session async. Create session async will be dangerous as it will potentially caused race condition where data packet get sent before SYN control packet / session created. +4491 area-System.Reflection System.Reflection.Emit.AssemblyBuilder.Save `AssemblyBuilder.Save` and `AssemblyBuilderAccess.RunAndSave` isn't available in .NET Core, however coreclr seems to have the code to implement it but I looks conditionally compiled out. https://github.com/dotnet/coreclr/blob/bc146608854d1db9cdbcc0b08029a87754e12b49/src/mscorlib/src/System/Reflection/Emit/AssemblyBuilder.cs#L1690-L1711 Our use case in Castle DynamicProxy is to write out dynamically created assemblies to disk so we can run peverify over the assembly in unit tests. It also greatly helps writing out the assembly and opening it in ildasm to manually verify IL. Is there any chance we can get this functionality that .NET Framework has introduced into .NET Core, or an alternative way of doing the same thing. This might not sound like a big deal if you aren't familiar with Castle DynamicProxy's internals, but it really is as it heavily reduces our confidence in both our code and the .NET runtime as well as reducing our ability to track down defects. +4492 area-System.Net Fixing Issue #4480, ReleaseHandle() getting called more than once due to probable race condition Fix for issue #4480. Looks like this is happening due to probable race condition which leads to ReleaseHandle() getting called more than once. ReleaseHandle was not setting holding object/pointer to null/Intptr. Setting it explicitly now. @roncain can you please validate this fix with your test which was crashing earlier. +4495 area-System.Net Support IDNA host matching on Unix SslStream - Split the Unix and Windows project.json files for System.Net.Security since they have different dependencies at the implementation level. - Use the managed IdnMapping to do the IDNA rules application - Update comments in the native half of the match logic This was verified against a private domain which uses a mix of ASCII and non-ASCII characters. - Lowercase punycode form: Success before, success after - Mixed-case punycode form: Failed before, success after - Unicode form: Failed before, success after. cc: @ellismg @stephentoub @vijaykota @rajansingh10 @shrutigarg @CIPop @davidsh +4497 area-System.Reflection Add support for calling a varargs constructor through IlGenerator.EmitCall "## Rationale Emitting code which calls vararg method is good, but emitting code to invoke **vararg constructor** is different tricky (via symbol lookup). ## Proposed API Goal: Unify emitting of vararg constructor calls with any other vararg method calls ```diff public partial class System.Reflection.Emit.ILGenerator { + public virtual void EmitCall(OpCode opcode, ConstructorInfo constructorInfo, Type[] optionalParameterTypes); public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[] optionalParameterTypes); } ``` Context: * [ILGenerator methods - apisof.net](https://apisof.net/catalog/System.Reflection.Emit.ILGenerator) * [EmitCall on msdn](https://msdn.microsoft.com/en-us/library/system.reflection.emit.ilgenerator.emitcall(v=vs.110).aspx) ## Usage ```c# public class V { public V(__arglist) { /* ... */ } public int MyMethod(__arglist) { /* ... */ } } // Emitting calls - code snippets { var il = mb.GetIlGenerator(); // Emitting call to static vararg method il.EmitCall(Opcodes.Call, typeof(V).GetMethod(""MyMethod"", BindingFlags.Public), new[] { typeof(string), typeof(string), typeof(int) } ); // Emitting call to vararg constructor - today requires MetaData token var token = mb.GetConstructorToken( typeof(V).GetConstructors()[0], // or other way to get to ConstructorInfo new[] { typeof(string),typeof(string), typeof(int) } ); il.Emit(Opcodes.Call, token.Token); // Emitting call to vararg constructor - with the newly proposed API il.EmitCall(Opcodes.Call, typeof(V).GetConstructors()[0], // or other way to get to ConstructorInfo new[] { typeof(string), typeof(string), typeof(int) } ); } ``` # Original Proposal Currently, the only way to call a varargs constructor through an `IlGenerator` is through the usage of a symbol, which is weird and poorly documented. I propose `EmitCall` which is the supported way to call varargs methods should have an overload to take `MethodBase` instead of a `MethodInfo`. see: http://stackoverflow.com/a/24041217/468672 edit: I propose adding the following method to the `IlGenerator` base type: ``` csharp public virtual void EmitCall(OpCode opcode, ConstructorInfo constructor, Type[] optionalParameterTypes); ``` This overload would allow support for calling a `vararg` constructor. Consider the following class `V` ``` csharp public class V { public int Count{get;} public V(__arglist) { this.Count = new ArgIterator(__arglist).GetRemainingCount(); } public static int F(__arglist) { return new ArgIterator(__arglist).GetRemainingCount(); } } ``` To generate a method that calls the static method F, we can do the following: ``` csharp public void BuildCallFMethod(TypeBuilder tb) { var mb = tb.DefineMethod(""CallFMethod"", MethodAttributes.Public | MethodAttributes.Static); var il = mb.GetIlGenerator(); il.Emit(OpCodes.Ldstr, ""one""); il.Emit(OpCodes.Ldstr, ""two""); il.Emit(OpCodes.Ldc_I4_3); il.EmitCall(Opcodes.Call, typeof(V).GetMethod(""F"", BindingFlags.Static | BindingFlags.Public), new[]{typeof(string), typeof(string), typeof(int)}); il.Emit(OpCodes.Ret); } ``` However, if we wanted to create a type that extended `V`, despite needing to emit a `call` opcode on the constructor, we cannot use `EmitCall` and instead need to look up a symbol. This is asymmetric and is bad api design. ``` csharp public void BuildCtorForExtenderOfV(TypeBuilder tb, ModuleBuilder mb) { var ctor = tb.DefineConstructor(MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, CallingConventions.HasThis, Type.EmptyTypes); var il = ctor.GetIlGenerator(); var token = mb.GetConstructorToken(typeof(V).GetConstructors()[0], new[]{typeof(string),typeof(string), typeof(int)}); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldstr, ""one""); il.Emit(OpCodes.Ldstr, ""two""); il.Emit(OpCodes.Ldc_I4_3); il.Emit(Opcodes.Call, token.Token); il.Emit(OpCodes.Ret); } ``` Instead, I propose we allow this overload, allowing the two calls to have the same IlGenerator code pattern. The benefit is that `EmitCall`, does some validation beforehand, where as the token variant basically only validates when you build the method/ctor. As an additional benefit, I also recommend we allow using the `OpCode.NewObj` for the first parameter of `EmitCall` as well." +4500 area-System.Net Investigate problematic Sockets assertion There is an assertion in the Socket constructor which I believe might be faulty. I've tried the same code on the desktop framework and didn't hit any issues. The assertion is on line 112 of Socket.cs: https://github.com/dotnet/corefx/blob/a22364202c6d6cabeeb662fde346941b7284a8da/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L112 ``` CSharp Debug.Assert(addressFamily != AddressFamily.InterNetworkV6 || !DualMode); ``` I hit this assertion on CoreCLR when instantiating a Socket with the following args: ``` CSharp new Socket(AddressFamily.InterNetworkV6, SocketType.Raw, ProtocolType.IcmpV6); ``` (NOTE: You have to run as admin or the above will throw some other exception.) cc: @CIPop , @pgavlin +4501 area-System.Net XPlat: System.Net.Socket.Poll(0, SelectMode.SelectError) provides incorrect results On Linux, the call to System.Net.Socket.Poll(0, SelectMode.SelectError) returns true for some cases when consumed in SqlClient. If the SqlClient ignores the Socket poll result and continues to use the socket, there is no problem reading from the socket. Based on the investigation @pgavlin figured out that this is a bug with linux Native implementation for Poll. +4502 area-System.Net Add support to HttpClient for mutual authentication On the desktop, WCF uses mutual authentication when using Kerberos authentication. We specify the servers SPN by adding the relevant SPN to `AuthenticationManager.CustomTargetNameDictionary`. We need a way to: 1. Enable mutual authentication 2. Override the SPN we expect the server to be using The second item is needed if mutual auth is enabled as on the service side only a system process is able to use the host/hostname SPN. When the remote service is using HTTP.SYS in a non-system process and not using Kernal mode authentication, a unique SPN must be created and used. If mutual auth is enabled, this would break without being able to specify the SPN for the server on the client side. +4503 area-System.Data sni.dll can't be loaded on Win 7/2008R2 This issue is not the same as [this one](https://github.com/dotnet/corefx/issues/3760) because I already have the C++ runtime installed. We're seeing the issue while running the ASP.NET MusicStore sample automation on Win 7 and Win 2008 R2 but we don't know what's the root cause. Worth mentioning that the same code works on Win 8 and Win 10. ``` System.Reflection.TargetInvocationException: Exception has been thr own by the target of an invocation. ---> System.AggregateException: One or more errors occurred. ---> System.DllNotFoundException: Unable to load DLL 'C:\Users\ victorhu\.dnx\packages\runtime.win7-x86.System.Data.SqlClient.sni\4.0.0-beta-235 09\runtimes\win7-x86\native\sni.dll': The specified module could not be found. ( Exception from HRESULT: 0x8007007E) at System.Runtime.Loader.AssemblyLoadContext.InternalLoadUnmanagedDllFromPath (String unmanagedDllPath) at System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDllFromPath(String unmanagedDllPath) at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadUnmanagedLibraryFromPath(Stri ng path) at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.LoadUnmanagedLibrary(St ring name) at Microsoft.Dnx.Host.LoaderContainer.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Host.DefaultLoadContext.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadUnmanagedDll(String unmanaged DllName) at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unman agedDllName, IntPtr gchManagedAssemblyLoadContext) at System.Data.SqlClient.SNINativeMethodWrapper.UnmanagedIsTokenRestricted(In tPtr token, Boolean& isRestricted) at System.Data.Win32NativeMethods.IsTokenRestrictedWrapper(IntPtr token) at System.Data.ProviderBase.DbConnectionPoolIdentity.GetCurrent() at System.Data.ProviderBase.DbConnectionPoolGroup.GetConnectionPool(DbConnect ionFactory connectionFactory) at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPool(DbConnectio n owningObject, DbConnectionPoolGroup connectionPoolGroup) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions , DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(Db Connection outerConnection, DbConnectionFactory connectionFactory, TaskCompletio nSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.OpenAsync(CancellationToken cancellati onToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Task task) at Microsoft.Data.Entity.Storage.RelationalConnection.d__32.MoveNe xt() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Task task) at Microsoft.Data.Entity.Storage.Internal.SqlServerDatabaseCreator.d__13.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Task task) at Microsoft.Data.Entity.Storage.RelationalDatabaseCreator.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at MusicStore.Models.SampleData.d__3.MoveN ext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceled Exceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationTo ken cancellationToken) at System.Threading.Tasks.Task.Wait() at MusicStore.Startup.Configure(IApplicationBuilder app) at MusicStore.Startup.ConfigureDevelopment(IApplicationBuilder app, ILoggerFa ctory loggerFactory) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Objec t[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invoke Attr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.AspNet.Hosting.Startup.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder) at Microsoft.AspNet.Hosting.Startup.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder) at Microsoft.AspNet.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__Di splayClass0_0.b__0(IApplicationBuilder builder) at Microsoft.AspNet.Hosting.Internal.HostingEngine.BuildApplication() ``` The investigation that we did so far involved looking at the dependencies of `sni.dll` but there's nothing obviously wrong. Maybe someone with more experience in this area can identify something: ``` Dump of file C:\Users\victorhu\.dnx\packages\runtime.win7-x86.System.Data.SqlClient.sni\4.0.0-beta-23509\runtimes\win7-x86\native\sni.dll File Type: DLL Image has the following dependencies: api-ms-win-core-processenvironment-l1-1-0.dll api-ms-win-core-file-l1-1-0.dll api-ms-win-core-debug-l1-1-0.dll api-ms-win-core-errorhandling-l1-1-0.dll api-ms-win-core-synch-l1-2-0.dll api-ms-win-core-interlocked-l1-1-0.dll api-ms-win-core-memory-l1-1-0.dll api-ms-win-core-libraryloader-l1-1-0.dll api-ms-win-core-string-obsolete-l1-1-0.dll api-ms-win-core-kernel32-legacy-l1-1-0.dll api-ms-win-core-registry-l1-1-0.dll api-ms-win-core-sysinfo-l1-2-0.dll api-ms-win-core-handle-l1-1-0.dll api-ms-win-core-io-l1-1-0.dll api-ms-win-core-synch-l1-1-0.dll api-ms-win-core-processthreads-l1-1-0.dll api-ms-win-core-sysinfo-l1-1-0.dll api-ms-win-core-timezone-l1-1-0.dll api-ms-win-core-stringansi-l1-1-0.dll api-ms-win-core-string-l1-1-0.dll api-ms-win-core-localization-obsolete-l1-2-0.dll api-ms-win-core-localization-l1-2-0.dll api-ms-win-security-base-l1-1-0.dll api-ms-win-core-namedpipe-l1-1-0.dll MSVCR110.dll KERNEL32.dll ADVAPI32.dll RPCRT4.dll WS2_32.dll CRYPT32.dll Summary 4000 .data 16000 .rdata 6000 .reloc 1000 .rsrc 3000 .sdbid 2C000 .text ``` To reproduce clone [MusicStore](https://github.com/aspnet/musicstore/tree/release) and run `build verify` cc @divega +4504 area-Serialization Data Contract overflow when reading objects concurrently Data contract serializers are prone to cache exception when used by multiple threads. This is an issue that are being fixed on Desktop which should be ported to CoreClr. +4507 area-System.Console Provide better x-plat Console/Terminal features The current implementation of System.Console doesn't provide good experience on Linux. For example, arrow keys (left/right for caret navigation, up/down for history) don't work. It is left to the developer to implement this basic functionality in their app if they want to provide consistent good experience across platforms. CoreFX should provide such implementation either as part of System.Console or as a separate library/nuget. On Linux the implementation can use existing native libraries such as curses or readline. Related Roslyn issue: https://github.com/dotnet/roslyn/issues/6751 +4508 area-System.Net Ensure that only API usage exceptions are thrown on the sync path from System.Net TPL APIs API usage and development-time errors should throw exceptions on the sync path of TPL (async) APIs. All other errors should be configured within the returned Task object. /cc: @davidsh @stephentoub +4510 area-System.Net X509Certificate2(X509Certificate) missing I am using SslStream with a userCertificateValidationCallback. The callback is passed a X509Certificate which I would like to convert to a X509Certificate2. The constructor to convert the certificate is missing/not yet implemented. Somewhat related: perhaps SslStream should pass a X509Certificate2 instead of a X509Certificate to the userCertificateValidationCallback? +4511 area-System.Data SqlClient - Mars Bug - FIN Packet handler after session is disposed **Repro:** ExecuteReaderAsyn couple times and wait until that reader is dispose / called dispose. **Root Cause:** When session is disposed it send FIN packet. https://github.com/dotnet/corefx/blob/5344db30650f331851f3232538616704d713d9e1/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIMarsHandle.cs#L60-L64 after server receive FIN packet, it will also send FIN Packet back to the client. Unfortunately, we don't handle this properly and causing to error as that session no longer exists. https://github.com/dotnet/corefx/blob/a3050bacc9b716f52f086751bfb4bf0384019f53/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIMarsConnection.cs#L247-L254 **More investigation:** - need to find out why FIN packet only sent on disposed - this can results another issue where all other sessions are not put back into the pool. **Possible solutions:** - check if it is FIN packet during HandleReceiveComplete and handle this gracefully. - we may need to send FIN packet outside dispose() as well. rather than wait dispose to happen. +4512 area-System.Net SslStream.AuthenticateAsServer with client certificates doesn't allow for ACCEPT I am connecting to a server which has an invalid certificate, using HttpClientHandler (desktop) and WinHttpHandler (CoreCLR). This works fine. ``` // Desktop Framework var handler = new HttpClientHandler(); ServicePointManager.ServerCertificateValidationCallback = // return true; // CoreCLR var handler = new WinHttpHandler(); handler.ServerCertificateValidationCallback += // return true ``` When I configure the server to accept client certificates (ssl handshake), but do not provide a client certificate. The HttpClientHandler works as before, but the WinHttpHandler throws a WinHttpException (ERROR_INTERNET_SECURE_FAILURE). +4513 area-System.Net Use new ConditionalFact in WebSockets tests Upgrade to new buildtools and try out ConditionalFact in the WebSockets tests. Other tests elsewhere in corefx can be moved over separately. cc: @davidsh, @CIPop Fixes #3349 +4518 area-System.Net Reduce the size of System.Net.IPAddress This change reduces the size of `IPAddress` from 40 bytes to 24 bytes (64 bit) and also avoids an unnecessary array allocation for IPv4 addresses. cc: @davidsh, @CIPop, @stephentoub These are the current fields on `IPAddress` that add up to 40 bytes (64 bit): ``` c# internal long Address; internal string StringRepresentation; private readonly AddressFamily _family = AddressFamily.InterNetwork; private readonly ushort[] _numbers = new ushort[NumberOfLabels]; private long _scopeId = 0; private int _hashCode = 0; ``` - `Address` is only used for IPv4 addresses. The size is actually `uint`, but it is typed as `long` because public APIs use `long` for CLS compliance. This field can be changed to `uint` to save 4 bytes. - `StringRepresentation` is a cache of the result of `ToString()` and can remain as-is. - `_family` indicates whether the `IPAddress` instance is an IPv4 address or an IPv6 address through the `AddressFamily.InterNetwork` (IPv4) and `AddressFamily.InterNetworkV6` (IPv6) enum values. We can eliminate this field and instead use the `_numbers` field, which is only used for IPv6 addresses, to indicate whether or not the address is IPv4 vs. IPv6. This saves 4 bytes. - `_numbers`, as mentioned in the previous bullet, is only used for IPv6 addresses. Note that currently the array is always being allocated, even for IPv4 addresses. We can change this to only allocate the array for IPv6 addresses. When the field is null, it indicates that the address is an IPv4 address, when the field is non-null it is an IPv6 address. - `_scopeId` is only used for IPv6 addresses. Similar to `Address`, the size is actually `uint`, but it is typed as `long` because public APIs use `long` for CLS compliance. We can eliminate this field and instead use the same `uint` field as `Address` for IPv4 addresses, reducing the size by another 8 bytes. - `_hashCode` is only used for IPv6 addresses (IPv4 just uses the `Address` for the hash code). We could consider getting rid of this field, to reduce the size by another 4 bytes, and instead always re-calculate the hash code when `GetHashCode` is called (all it's doing is calling `StringComparer.OrdinalIgnoreCase.GetHashCode()` on a cached `ToString()` result), but I assume it is here for performance reasons, so I've kept it for now. Here are the fields after the changes: ``` C# private uint _addressOrScopeId; private readonly ushort[] _numbers; private string _toString; private int _hashCode; ``` From 40 bytes to 24 bytes (64 bit). (Note: I renamed some of the fields and made them all private. The two renamed internal fields (`Address` and `StringRepresentation`) now have internal properties with the same type and name as the old fields, to avoid breaking any internal callers.) (There are other potential optimizations for `IPAddress` that could be handled in separate PRs. For example, `ToString()` could be optimized to avoid unnecessary intermediate allocations. Also, as noted in #2891, some means to access to the internal buffer to avoid unnecessary `byte[]` allocations could be added.) +4525 area-System.Net Address PR feedback for System.Net.Requests - Remove unnecessary string.Format in WebException - Replace several string.Compare calls with string.Equals - Improve FromAsync usage in WebRequest cc: @pgavlin, @CIPop, @davidsh Fixes https://github.com/dotnet/corefx/issues/2409 +4526 area-System.Net Disable three System.Net.Security tests that repeatedly timeout https://github.com/dotnet/corefx/issues/4467 cc: @CIPop, @davidsh +4528 area-System.Net Port more System.Net.WebSockets.Client tests Continued porting internal ToF tests to GitHub. Modified tests to use a good dev pattern of `using` around websocket use. +4530 area-System.Net Change System.Net.WebSockets contract for WebSocketReceiveResult "Follow up from ""Resuable WebSocketReceiveResult"" #4520 At the moment is `WebSocketReceiveResult` is a read only POCO type that as a class must be garbage collected on every single socket message; probably gen0; but still bad for high speed websockets. I can see two approaches to address this: 1. Change the setters to protected, which opens up a possibility for types derived from `System.Net.WebSockets.WebSocket` to reuse the result object using a derived `WebSocketReceiveResult` type. 2. Change type from `class` to `struct`. Either approach halves the number of allocations, second is safer but allocates more memory. (Though ValueTask returns could change this) " +4532 area-System.Net Update MultipartContent.cs Added a support for choosing a CRLF type during content creation. Check #4531. +4533 area-System.Net System.Net.Security doesn't support coreclr It targets .NETFramework 4.6 but not .NETPlatoform 5.4/netstandard 1.3 or dnxcore5.0 Myget feed ![myget](http://aoa.blob.core.windows.net/aspnet/myget.png) Libs installed ![installedlibs](http://aoa.blob.core.windows.net/aspnet/installedlibs.png) Error using ![errors](http://aoa.blob.core.windows.net/aspnet/errors.png) +4534 area-System.Net Fixed Issue #4480, Adding Addref for the handle & doing release in releaseHandle() Adding Addref for the parent handle & doing release before disposing in releaseHandle(). +4535 area-System.Runtime System.Runtime.Tests The tests contained in System.Runtime.Tests (probably as well as others) do not follow the testing naming and structure guidelines suggested by the corefx team. A good example for the suggested naming and structure guidelines are tests in the System.Net namespace. Examples include suffixing test classes with `Test` and naming test methods in the format `UnitOfWork_StateUnderTest_ExpectedBehaviour()`. Edit: I think that this is the book recommended by the corefx team for unit testing standards http://www.amazon.co.uk/The-Art-Unit-Testing-Examples/dp/1933988274 For example the `String` test class should be renamed to `StringTest`. A method named `TestContains` should be renamed to `Contains_String_MatchesExpected` and `TestContainsInvalid` to `Contains_InvalidInput_ThrowsException`. Why this could be good: - Matches suggested naming standards for .NET unit tests - Modernises the test suite - Consistency with other unit tests in the project - Easier to understand what tests do for debugging, test changes or future test additions - Reasons of perfectionism Why this could be undesirable: - Renaming existing tests or test classes could be a breaking change - Could break parity with the full .NET Framework - Could cause merge conflicts and extra hassle for the team If the good people of GitHub and the corefx team see this as desirable, then I shall submit a pull request to modernize this System.Runtime.Tests suite. Maybe in the future, other test namespaces could be updated too. +4537 area-Infrastructure Build should collect all errors and write a summary after build completed Example log contains a hidden error about 10 pages up in the command prompt. Developers shouldn't be required to scroll up or to search for keywords to find errors. These should be summarized at the end of the log. ``` [ . . . ] System.Globalization.Extensions -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.Globalization.Extensions\System.Globalization.Exte nsions.dll System.IO.FileSystem.Primitives -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.IO.FileSystem.Primitives\System.IO.FileSystem.Prim itives.dll ALINK : error AL1078: Error signing assembly -- Access is denied. [s:\c2\src\Microsoft.CSharp\src\Microsoft.CSharp.csproj] System.IO.Compression.ZipFile -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.IO.Compression.ZipFile\System.IO.Compression.ZipFile .dll System.IO.FileSystem.DriveInfo -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.IO.FileSystem.DriveInfo\System.IO.FileSystem.DriveI nfo.dll System.IO.Compression -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.IO.Compression\System.IO.Compression.dll System.Dynamic.Runtime -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.Dynamic.Runtime\System.Dynamic.Runtime.dll System.IO.FileSystem.Watcher -> s:\c2\bin\Windows_NT.AnyCPU.Debug\System.IO.FileSystem.Watcher\System.IO.FileSystem.Watcher.dl [ . . . ] === TEST EXECUTION SUMMARY === System.Runtime.Serialization.Xml.Tests Total: 127, Errors: 0, Failed: 0, Skipped: 0, Time: 1.594s 0 Warning(s) 1 Error(s) Time Elapsed 00:06:51.95 Build Exit Code = 1 ``` +4540 area-System.Net WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException (from (empty)) http://dotnet-ci.cloudapp.net/job/dotnet_corefx_outerloop_windows_win8_release/lastCompletedBuild/testReport/junit/System.Net.Http.WinHttpHandlerFunctional.Tests/WinHttpHandlerTest/SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException/ System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException (from (empty)) Failing for the past 1 build (Since Failed#786 ) Took 11 sec. Stacktrace MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.AggregateException)\r\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException() in d:\j\workspace\dotnet_corefx_outerloop_windows_win8_release\src\System.Net.Http.WinHttpHandler\tests\FunctionalTests\WinHttpHandlerTest.cs:line 68 +4543 area-System.Reflection Some specific meta-programming (metadata access) questions... "Blame @davidfowl - he told me to put them here ;p 1. the big one; is there an indirect equivalent to `GetMethodBody()` / `GetILAsByteArray()` (plus locals, params, exception clauses etc)? Basically, is there an API that exposes the raw underlying IL? If the answer to this one is ""nope"", then the rest is moot... 2. `[UnverifiableCodeAttribute]` - no longer exists; is there a way to determine if a member is unverifiable? 3. can `volatile` fields be detected? Sigil used to do this via `GetRequiredCustomModifiers()` 4. `TypedReference` - am I right in thinking this simply doesn't exist as a concept? 5. any mechanism to resolve string literal and fields from metadata tokens? (akin to `ResolveString()` / `ResolveField()`) Context: I'm converting Sigil/Jil; most stuff is working, but some low-level meta-programming stuff is missing. It would be nice to reinstate the original optimizations to Jil (and an entire chunk of Sigil). " +4544 area-Meta Presence of project.json breaks existing csproj tooling (and makes unexpected demands) "I'm trying to transition multiple libraries to CoreCLR, moving to the DNX build tools. Since the folder name defines the assembly/package name (not editable), and since `**/*.cs` is the default inclusion list, the natural thing to want to do is to add a project.json _alongside_ the pre-existing csproj. This is particularly valuable where not all parties are yet working with DNX. Things go south very quickly, though, with errors from nuget package restore including errors about ""runtimes"", having to add explicit version numbers to project references, and complains about projects targeting multiple frameworks (which gets generated into `{projectt}.nuget.targets`). Short term, `del project.json /s`, `del project.lock.json /s` (and `del *.nuget.targes /s` if you have already failed once) makes everything work - so it is the mere presence of those files that makes the csproj unhappy. And obviously you need to not push those deletions back to source control! This means that the only way to transition to DNX tooling alongside csproj is: - have the `project.json` in the `{ProjectName}` folder - have the csproj in a _different_ folder - edit the csproj to pick the files up from outside the tree, ideally using `""../{ProjectName}/**/*.cs""` so no more edits will be needed - (note you can do the same from `project.json`, but if you do that the IDE doesn't show them, where-as this at least does) - accept the fact that adding new files via the csproj is a ""no-no"" It is a bit of a faff. Am I doing something insanely wrong here? I know csproj alongside project.json isn't the ideal end goal, but we live in the real world where most people aren't using pre-RC software ;p " +4553 area-System.Net Ping is internally posting back to the original SynchronizationContext Several issues to be fixed: 1. The Ping contract doesn't expose the EAP methods, but they're still in the implementation. 2. The SendPingAsync methods are implemented on top of that EAP implementation, resulting in unnecessary additional costs. 3. As a result of that wrapping, completion of the task requires posting back to the original synchronization context. +4554 area-Serialization Fix XmlSerializer writes empty element when serializing TimeSpan XmlSerializer writes empty element when serializing TimeSpan because this type's properties and fields are get only. This change is to handle TimeSpan type by reading and writing it in string with XmlConvert. Fixes #4405 cc: @SGuyGe @shmao @zhenlan +4561 area-Serialization Pre-generated serializers using sgen.exe Hello, We currently use pre-generated XMLSerializers generated by sgen.exe to boost the startup time, but these serializers are not available in CoreCLR. Is there any plan to include these serializers into CoreCLR? Or is there any modified version of sgen.exe which generates the CoreCLR compliant assembly? Thanks, Mehul. +4562 area-System.Net Support TLS client certs in CurlHandler (for libcurl+openssl) Make curlHandler support Client Certificates when the linked libcurl's ssl backend is compatible with openssl. Fix for #3151 +4563 area-System.Net Unknown error 10058 caused crash in Sockets tests on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/128/console ``` Unhandled Exception: System.Net.Sockets.SocketException: Unknown error: 10058 11:40:37 at System.Net.Sockets.Socket.Receive(IList`1 buffers, SocketFlags socketFlags) 11:40:37 at System.Net.Sockets.Tests.SendReceive.<>c__DisplayClassa.b__9() 11:40:37 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:40:40 ./run-test.sh: line 130: 95631 Abort trap: 6 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 11:40:40 One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 134. ``` +4564 area-System.Net terminate called recursively in System.Net.Requests tests on Linux in CI "Not much to go on, but the System.Net.Requests tests failed with the error ""terminate called recursively"" here: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/4406/console ``` 00:11:29 Discovered: System.Net.Requests.Tests 00:11:29 Discovered: System.Reflection.DispatchProxy.Tests 00:11:29 Starting: System.Net.Requests.Tests 00:11:29 Starting: System.Reflection.DispatchProxy.Tests 00:11:29 Discovered: System.IO.Compression.ZipFile.Tests 00:11:29 Discovered: InterProcessCommunication.Tests 00:11:29 Starting: System.IO.Compression.ZipFile.Tests 00:11:29 Discovered: System.Reflection.Emit.Lightweight.Tests 00:11:30 Starting: InterProcessCommunication.Tests 00:11:30 Starting: System.Reflection.Emit.Lightweight.Tests 00:11:30 Finished: System.Reflection.DispatchProxy.Tests 00:11:30 00:11:30 === TEST EXECUTION SUMMARY === 00:11:30 System.Reflection.DispatchProxy.Tests Total: 22, Errors: 0, Failed: 0, Skipped: 0, Time: 1.323s 00:11:31 terminate called recursively 00:11:31 Finished: System.Reflection.Emit.Lightweight.Tests 00:11:31 00:11:31 === TEST EXECUTION SUMMARY === 00:11:31 ./run-test.sh: line 130: 11518 Aborted (core dumped) ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 00:11:31 One or more tests failed while running tests from 'System.Net.Requests.Tests'. Exit code 134. ``` " +4571 area-System.Data Port over DbProviderFactories class I have seen no info about this with respect to .NET Core, and it's a crucial element for (micro) ORMs and data-access libraries. The .NET full API for DbProviderFactory contains usage of DataTable, so I recon that's not going to be ported anytime soon, but there's a bigger problem: most provider factories are defined in machine.config, which with 'bcl per app' isn't going to fly anymore. Have there been any design thoughts on this? Will .NET core have DbProviderFactory machinery so an ORM can obtain the factory from a central API (I couldn't find the API of .NET full in corefx at the moment), and create ADO.NET elements using that factory? Or is this in limbo just like DataTable (https://github.com/dotnet/corefx/issues/1039) +4574 area-System.Security Desktop Compat: GetECDsa*Key doesn't check the KeyUsage values In Desktop GetECDsaPublicKey and GetECDsaPrivateKey will return null when KeyAgreement is the only KeyUsage value specified. This logic didn't get ported into corefx when ECDSA support was added. +4577 area-System.Diagnostics X-plat Performance Counters Hi all, is there any way I can get machine-specs with .NET Core that are cross-platform friendly? Like mono's PerformanceCounters? Specifically I'm trying to get the physical RAM available for a machine in .NET Core. I notice mono has a native function `mono_determine_physical_ram_size` that is cross-platform. Are there any plans to incorporate something similar with .NET Core PerformanceCounters? Thanks :) +4579 area-System.Data Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll' "This issue occurs in System.Data.SqlClient on Linux. Set the database collation to Chinese_PRC_CI_AS in SQL Server. The SQL Server will reponse ""Codepage: 2052"" to SqlClient. See the following tabular tata stream. This will cause System.Data.SqlClient to load api-ms-win-core-localization-obsolete-l1-2-0.dll. Changing database collation from Chinese_PRC_CI_AS to SQL_Latin1_General_CP1_CI_AS will fix. Error messages: ``` DllNotFoundException: Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) ``` ``` System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Data.LocaleInterop.LCIDToLocaleName(UInt32 Locale, StringBuilder lpName, Int32 cchName, Int32 dwFlags) at System.Data.LocaleInterop.LcidToLocaleNameInternal(Int32 lcid) at System.Data.LocaleInterop.GetDetailsInternal(Int32 lcid) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Data.SqlClient.TdsParser.GetCodePage(SqlCollation collation, TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.TryProcessEnvChange(Int32 tokenLength, TdsParserStateObject stateObj, SqlEnvChange[]& sqlEnvChange) ``` " +4581 area-System.Security Add DiffieHellman Dear all, It looks like we got ECDH in corefx now, but what about the old DH? Are these two interchangeable or any specific reason the old DH is not implemented. It is done in mono. I can try to port it here if it is allowed to merge. ( I mean if there is no policy saying we must NOT have DH anymore, things like that.) Best, Dong +4585 area-System.Net Port more System.Net.WebSockets.Client tests Add subprotocol tests Add unknown/incorrect websocket endpoint tests +4586 area-System.Data SQL Server connection fails via web app, but succeeds in all other tools "I'm running ASP.NET 5, RC1 and am trying to connect to a MSSQL server instance on the local network. There are no firewalls between here and there. _If I try the same code in the same environment under MVC 5, everything works fine._ I am able to connect to the server successfully with the VS2015 Server Explorer as well as SQL Management Studio. When I attempt to connect to the DB with the following connection string (which I got from the VS2015 Server Explorer), it fails with the given error: string cs = @""Data Source=DBSERVER\INSTANCE1;Initial Catalog=MyDb;User ID=ASPNET-Db-User;Password=thepassword""; The code is: System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(cs); con.Open(); The exception is: An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.SqlClient.dll but was not handled in user code Additional information: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) The stack is: at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Isengard.Startup.ConfigureServices(IServiceCollection services) in C:\TFS\Isengard\src\Isengard\Startup.cs:line 46 " +4587 area-System.Globalization String.EndsWith on CoreCLR \ Linux does not work correctly for line feeds "Here's the repro example: ``` C# using System; public class Program { public static void Main (string[] args) { var text = ""Hello\r\n""; Console.WriteLine(text.EndsWith(""\n"")); Console.WriteLine(text.LastIndexOf('\n') == text.Length - 1); } } ``` **Expected**: True True **Actual**: False True I used DNX v1.0.0-rc2-16216 to run this application. The version of `System.Console` I used was `4.0.0-beta-23516`. Running it with DNX Mono or running this on Windows produces the right results. " +4588 area-System.Net Enable Unix domain sockets to be used via System.Net.Sockets +4590 area-System.Globalization "Support locales ending with ""utf8"" (as compared to ""UTF-8"")" "Something changed on my CentOS machines that has switch my locale from ""en_US.UTF-8"" to ""en_US.utf8"". As a result I can no longer run .NET Core apps (see stack trace below). I don't know what caused this change but it seems like we should support both formats. Unhandled Exception: System.ArgumentException: 'utf8' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. Parameter name: name at System.Globalization.EncodingTable.GetCodePageFromName(String name) at System.Text.Encoding.GetEncoding(String name) at System.ConsolePal.GetConsoleEncoding() at System.Console.CreateOutputWriter(Stream outputStream) at System.Console.EnsureInitialized[T](T& field, Func`1 initializer) at System.Console.WriteLine(String format, Object arg0) at Xunit.ConsoleClient.Program.Main(String[] args) " +4593 area-System.Data RC1- A call to SSPI failed, see inner exception I am getting a similar issue to this too, @natemcmaster mentioned my issue was similar to this, I have managed to create a repro https://github.com/hahmed/TeamKudu my app is being developed on osx for dnx rc1. I cleaned out the cache too dnu clear-http-cache which did not resolve this issue for me. Hope you can help... ``` fail: Microsoft.Data.Entity.Query.Internal.QueryCompiler[1] An exception occurred in the database while iterating the results of a query. System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - A call to SSPI failed, see inner exception.) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.Data.Entity.Storage.RelationalConnection.Open() at Microsoft.Data.Entity.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source) at lambda_method(Closure , QueryContext ) at Microsoft.Data.Entity.Query.Internal.QueryCompiler.<>c__DisplayClass18_1`1.b__1(QueryContext qc) ClientConnectionId:197d6bf2-dc99-4209-a2f7-e4b8c8aad6e0 fail: Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware[0] An unhandled exception has occurred while executing the request System.IO.FileNotFoundException: Could not load the specified file. File name: 'EntityFramework.Core.resources' at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at Microsoft.Data.Entity.Query.Internal.QueryCompiler.<>c__DisplayClass18_1`1.b__1(QueryContext qc) at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source, Expression`1 predicate) at Team.Controllers.HomeController.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Controllers.ControllerActionExecutor.d__8`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__53.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Routing.RouteCollection.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Diagnostics.Entity.MigrationsEndPointMiddleware.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext() info: Microsoft.AspNet.Hosting.Internal.HostingEngine[2] Request finished in 0.1901ms 500 text/html; charset=utf-8 ``` +4595 area-Serialization Issue with serializing ReadOnlyCollection using DCS in NetCoreForCoreClr Error: ``` Exception thrown: 'System.InvalidOperationException' in mscorlib.ni.dll Additional information: The API 'System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]._syncRoot' cannot be used on the current platform. See http://go.microsoft.com/fwlink/?LinkId=248273 for more information. ``` Call stack: ``` mscorlib.ni.dll!System.Reflection.Emit.DynamicILGenerator.GetTokenFor(System.Reflection.RuntimeFieldInfo runtimeField, System.RuntimeType rtType) Unknown mscorlib.ni.dll!System.Reflection.Emit.DynamicILGenerator.Emit(System.Reflection.Emit.OpCode opcode, System.Reflection.FieldInfo field) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.CodeGenerator.LoadMember(System.Reflection.MemberInfo memberInfo) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlFormatWriterGenerator.CriticalHelper.LoadMemberValue(System.Runtime.Serialization.DataMember member) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlFormatWriterGenerator.CriticalHelper.WriteMembers(System.Runtime.Serialization.ClassDataContract classContract, System.Reflection.Emit.LocalBuilder extensionDataLocal, System.Runtime.Serialization.ClassDataContract derivedMostClassContract) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlFormatWriterGenerator.CriticalHelper.WriteClass(System.Runtime.Serialization.ClassDataContract classContract) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlFormatWriterGenerator.CriticalHelper.GenerateClassWriter(System.Runtime.Serialization.ClassDataContract classContract) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.ClassDataContract.XmlFormatWriterDelegate.get() Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.ClassDataContract.WriteXmlValue(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.Runtime.Serialization.XmlObjectSerializerWriteContext context) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(System.Runtime.Serialization.XmlWriterDelegator writer, object graph, System.Runtime.Serialization.DataContractResolver dataContractResolver) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(System.Runtime.Serialization.XmlWriterDelegator writer, object graph, System.Runtime.Serialization.DataContractResolver dataContractResolver) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(System.Runtime.Serialization.XmlWriterDelegator writer, object graph, System.Runtime.Serialization.DataContractResolver dataContractResolver) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlObjectSerializer.WriteObject(System.Xml.XmlDictionaryWriter writer, object graph) Unknown System.Private.DataContractSerialization.dll!System.Runtime.Serialization.XmlObjectSerializer.WriteObject(System.IO.Stream stream, object graph) Unknown > App1.exe!App1.App.TestReadOnlyCollection() Line 120 C# App1.exe!App1.App.OnLaunched(Windows.ApplicationModel.Activation.LaunchActivatedEventArgs e) Line 85 C# ``` +4596 area-System.IO "Add ""static"" BinaryReader-like APIs on Stream" In many scenarios, there is a need to read binary data from a stream without allocating BinaryReader. See System.Resources.Reader as an example. We should add such non-allocating static reader APIs, e.g. int ReadInt32(Stream stream). +4597 area-System.Net CurlHandler empty header values not being sent "You can use the following piece of code to test this: ``` var client = new HttpClient(); client.DefaultRequestHeaders.Add(""No-value"", """"); client.DefaultRequestHeaders.Add(""With-value"", ""value""); await client.GetAsync(""http://www.google.com""); ``` Then on linux, the header No-value is not sent. This breaks things such as the AWS SDK on linux due to the request's signature not matching, plus, it is different to the behaviour on windows " +4604 area-System.Net Ensure CurlHandler sends no-value headers "By default libcurl drops headers with empty values, as it uses an empty value as a sentinel to mean ""remove a previously added header with this key name."" If you actually want a header with an empty value, it needs to have a semicolon appended to the key name. cc: @vijaykota, @kapilash, @davidsh Fixes #4597 " +4605 area-System.IO A bunch of tests recently started failing on OS X These have been consistently failing for the last few days: ``` System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ReadOnlyFile(access: CopyOnWrite) System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ReadOnlyFile(access: ReadWrite) System.IO.Tests.FileInfo_AppendText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadWriteAllLines_Encoded.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_AppendAllLines.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_OpenText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadWriteAllLines.WriteToReadOnlyFile_UnauthException System.IO.Tests.FileInfo_CreateText.WriteToReadOnlyFile_UnauthException System.IO.Tests.FileInfo_OpenText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadLines_Encoded.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadWriteAllText_Encoded.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadWriteAllText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadLines.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_CreateText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_AppendAllText_Encoded.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_AppendAllText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_AppendText.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_ReadWriteAllBytes.WriteToReadOnlyFile_UnauthException System.IO.Tests.File_AppendAllLines_Encoded.WriteToReadOnlyFile_UnauthException ``` These are all tests that expected an UnauthorizedAccessException, and they're no longer getting one: ``` 11:29:49 Expected: typeof(System.UnauthorizedAccessException) 11:29:49 Actual: (No exception was thrown) ``` +4606 area-System.Net Re-enable System.Net.Security tests on Linux and OSX The tests were disabled in PR #4328 since there were multiple crashes in CI builds. They should be renabled after fixing foll. issues: #4317 #4301 Also regressions since then (eg. PR #4483) need to be resolved +4608 area-Meta Consistent ToString() implementations At the moment some classes override `ToString()` and some don't. So it means that if you call `ToString()` on an object for debugging/logging purposes you may get something useful or you may just get the default which is the fully qualified `Type` name. To see how widespread this is, I wrote a [simple app using Cecil](https://gist.github.com/mattwarren/33edc6d07ea087542ccb) (please let me know if [my logic is wrong](https://gist.github.com/mattwarren/33edc6d07ea087542ccb#file-clrtostringoverrides-cs-L91-L107)). Here's the lists of types that don't override ToString(): - [Value types](https://gist.github.com/mattwarren/1dc37901be49a18a7204) and a [shorter summary](https://gist.github.com/mattwarren/afba4b325f02e66db419) - [Reference types](https://gist.github.com/mattwarren/3bcecf5d2b9810c48b41) and a [shorter summary](https://gist.github.com/mattwarren/79cc5669e1e4ebae6a46) Is there any desire to be more consistent across types or is it not something that people worry about? Is it expected that `[DebuggerDisplayAttribute]` should be used instead? For instance in Java you can call ToString() on an object and you always gets something meaningful back. This even extends to collections, it calls ToString() on each item in the collection and appends those into a string, which might be going a bit too far. **Useful links**: - [Object.ToString Method ()](https://msdn.microsoft.com/en-us/library/system.object.tostring.aspx) - [Framework Design Guidelines: Overriding Object.ToString()](http://blogs.msdn.com/b/brada/archive/2009/02/02/framework-design-guidelines-overriding-object-tostring.aspx) - [Why override ToString()? Use DebuggerDisplayAttribute instead](http://blogs.msdn.com/b/soultech/archive/2011/04/05/whyoverridetostring_2d00_use_2d00_debuggerdisplayattribute_2d00_instead.aspx) +4609 area-System.Runtime FileNotFoundException issue "I can not compile a new lib I started with new VS 2015 Update 1 RC. ``` The type ""FileNotFoundException"" is in ""System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" and ""System.Runtime, Version=4.0.21.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" available. ``` It's only underlined in the corefx code view. Any ideas? " +4610 area-System.Numerics BigInteger helper methods like IsProbablePrime(), GenerateRandom(), etc. Dear all, Shall we implement those which exist in JAVA and Mono? If there is no objection from design point of view or other concerns then I will make a PR soon. (BTW, in general is it ok to copy code from Mono into Corefx? What about reference the JAVA source?) +4613 area-System.Net Remove EAP implementation from Ping When System.Net.NetworkInformation.Ping had async functionality added to it originally, it was done with the Event-based Async Pattern (EAP). Then when Task-based Async Pattern (TAP) was added to it, the Task-based implementation was done in a quick manner on top of the EAP implementation. And now that Ping is being exposed in corefx, it only has the TAP implementation. There are several ramifications of this and issues to be addressed: - The Task-based implementation is suffering from some of the behaviors of the EAP implementation, e.g. completing the Task requires posting back to the original synchronization context, which both is inefficient and can cause problems for a caller that blocks waiting for the result. - There's lots of unnecessary code now in Ping. - There are members being exposed as public and protected that aren't part of the contract. - When a host name is provided, an extra worker is being queued and then synchronously blocked waiting for the results of the DNS lookup. This PR fixes all of that. It also adds some more tests. cc: @mellinoe, @CIPop, @davidsh Fixes #4553 +4622 area-System.Data Investigate why InnerExceptions for SNI SqlExceptions only have top line in stack trace +4624 area-System.Net Add some validation/sanity tests for usage of the Unix ping command line tool I wrote a basic validation test for our usage of the ping command line utility in System.Net.Utilities. I am validating that we only send a single ping, and that we send the correct number of bytes in our packet. This will give us some basic assurance that, at the very least, the machine's ping utility is usable, supports the options we are using, and its output can be parsed as we expect. I also noticed this issue after writing the test: - It appears that ping6 on OSX does not allow you to specify a 0-length packet size for whatever reason, even though you can do so with ping (IPv4 version of the utility), as well as with ping6 on Ubuntu. Because of that, I just send a packet size of 1 instead. cc; @CIPop, @stephentoub +4628 area-System.Net System.Net.Sockets.Tests.ConnectExTest.Success failure on Linux "http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/4500/testReport/ Hit a failure in this test: [System.Net.Sockets.Tests.ConnectExTest.Success](http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_debug_tst_prtest/4500/testReport/System.Net.Sockets.Tests/ConnectExTest/Success/) Exception in question: `System.Net.Sockets.SocketException : Unknown error 10048` Seems to indicate a ""Address In Use"" error, so perhaps this is a timing issue from multiple tests trying to open the same socket, or something of the sort. I didn't see any other issues mentioning this so it may be very rare. " +4631 area-System.Net Socket.Select() method doesn't work correctly in linux. "I use linux mint mate 17.2 which is ubuntu and debian based. I cannot connect to Ngpsql database from Linux client. But I can connect from Windows client. Because: After the following line is called =>Socket.Select(null, write, error, perIpTimeout); In Linux: The list write doesn't have any elements. As a result it enters the if (!write.Any()) block and creates ""Timeout exception"" there. In Windows: The list write has the element. It works. Here is a sample code to produce it. It is a console application that works on CoreClr. ``` c# // Program.cs using System; // using Npgsql; using System.Net; using System.Net.Sockets; using System.Collections.Generic; using System.Linq; namespace Sample { public class Program { public void Main() { Console.WriteLine(""App started..""); string Host = ""192.168.1.72""; int Port = 5432; int perIpTimeout = -1; var ips = Dns.GetHostAddressesAsync(Host).Result; var ep = new IPEndPoint(ips[0], Port); var socket = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp) { Blocking = false }; try { try { socket.Connect(ep); } catch (SocketException e) { if (e.SocketErrorCode != SocketError.WouldBlock) { throw; } } var write = new List { socket }; var error = new List { socket }; Socket.Select(null, write, error, perIpTimeout); var errorCode = (int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error); if (errorCode != 0) { throw new SocketException((int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error)); } if (!write.Any()) { // When it is Linux, it will enter this block here! Console.WriteLine( $""Timeout after {new TimeSpan(perIpTimeout * 10).TotalSeconds} seconds when connecting to {ips[0]}""); try { socket.Dispose(); } catch { // ignored } // if i == 0 Console.WriteLine(""i==0 exception""); throw new TimeoutException(); // continue; } socket.Blocking = true; return; } catch (TimeoutException) { throw; } catch { try { socket.Dispose(); } catch { // ignored } Console.WriteLine(""Failed to connect to "" + ips[0]); // if (i == 0) Console.WriteLine(""i==0 exception 2""); throw; } } } // TODO: Remove. Will be fixed in the next release of EF. public class Startup { public void Configure() { } } } ``` " +4632 area-System.Runtime StringBuilder creates unnecessary strings with Append methods Append that takes a non-string value like int, double, etc, converts the value to a string then appends that string. StringBuilder should write the value's chars to the buffer without creating unnecessary strings. +4633 area-System.Net Cookies Added tests , especially for CookieContainer/Parser/Tokenizer Removed unused usings and simplified names Removed unecessary code +4634 area-System.Net Undo dependency on System.Net.Http #4562 introduced a temporary csproj dependency between System.Net.Requests.Tests and System.Net.Http.csproj as a work-around to a backward-incompatible change in System.Net.Http.Native library. This commit removes the dependency. +4635 area-System.Net Enable ChannelBinding Test for CurlHandler Enabling Channel Binding test for curlhandler. +4637 area-System.Threading System.Threading.Thread - Unable to run as foreground thread. Hi there, For `System.Threading.Thread : 4.0.0-beta-23516`, there appears to be a problem having the thread execute as a foreground thread on DNX (`1.0.0-beta6-12120`). The property `IsBackground` does not appear to have any bearing on how this thread is treated, with it seemingly behaving like a background thread with `IsBackground` reporting false. The end result is the caller must explicitly join on the thread to prevent a process exiting, which is not typical behavior. I am mindful that this may be related to DNX, or potentially functionality under review for corefx with consideration to varying platforms. MSDN: CLR Thread.IsBackground Property https://msdn.microsoft.com/en-us/library/system.threading.thread.isbackground%28v=vs.110%29.aspx Below, the expected behavior would be to have the process stay running until this thread exits. ``` csharp using System; namespace example { public class Program { public static void Main(string[] args) { // 4.0.0-beta-23516 var t = new System.Threading.Thread(() => { var running = true; while(running) { // we do not want this thread to exit. } }); t..Start(); // t.Join(); // this shouldn't be necessary for IsBackground = false } } } ``` Many Thanks +4638 area-System.Xml Wrong encoding when using XmlTextWriter Hi, does anyone know how to do the following with .NET core? ``` using (XmlTextWriter sw = new XmlTextWriter(this.FilePath, new UTF8Encoding(false))) { sw.Formatting = Formatting.Indented; sw.Indentation = 1; sw.IndentChar = '\t'; this.XmlDocument.WriteTo(sw); } ``` Kind regards +4641 area-Serialization Add support for surrogate for XmlSerializer +4642 area-Serialization Add support for surrogate in DataContractJsonSerializer +4646 area-System.Data Request for clarification on System.Data DbDataRecord / DbDataReader "`DbDataReader` has a `GetEnumerator()` API which is intended to return an `IEnumerable` that exposes `IDataRecord` (often: `DbDataRecord`) - this is often implemented via `DbEnumerator`. On core-clr at the current time, `DbDataReader` has an `abstract IEnumerator GetEnumerator()` method that must be overridden. However, without `DbDataRecord` or `DbEnumerator`, it is unclear how this is meant to be done in any way. I've checked the `SqlDataReader` code, and it currently refers to a local copy of a publicly declared `DbEnumerator` (et al), but these public declarations do not seem to be accessible on the currently published packages. So; can someone clarify this? a: is this `abstract` method an accidental inclusion that should have been dropped in the core-clr API? or b: is this meant to be there, but the required APIs to do it are in the wrong place and not yet available? Assuming ""b"", is there a timescale to get this into place so we can verify again the proposed API? " +4647 area-System.Security Missing CFB cipher mode Currently only three modes are supported by .NET Core, (CBC = 1, CTS = 5, ECB = 2). Is there any plan to add CFB support as it has been required by some network protocols (such as SNMP v3)? This mode is available on .NET Framework though. From where does the limitation of three modes come? The comment in `CipherMode` does not reveal enough background information. https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/CipherMode.cs +4650 area-Infrastructure ./build.sh doesn't work on CentOS "I set up a CentOS 7.1.1503 machine with the following steps: 1. Install a new VM using ""Gen 1"" in Hyper-V and using an .iso from http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso - I had this mounted as a DVD drive - When installing the OS, make sure you don't use the default ""minimal"" because you don't even get networking enabled. I used the ""developer"" option, which took a really long time. 2. Run software updates after installing the OS 3. sudo yum install -y libuuid-devel uuid-devel userspace-rcu-de bzip2 libicu-devel unzip openssl-devel libcurl-devel git clang libunwind-devel libxml2-devel python-devel libedit-devel libstdc++-static wget swig gcc cmake 4. Install Mono and Reference Assemblies: 1. sudo rpm --import ""http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"" 2. sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ 3. sudo yum upgrade -y 4. sudo yum install -y mono-complete referenceassemblies-pcl 5. add `fs.file-max = 100000` to /etc/sysctl.conf, and then run `sudo sysctl -p`. 6. Git clone corefx 7. `./build.sh` And during the build, I got errors like the following: ``` System.Private.Uri.CoreCLR -> /home/eerhardt/git/corefx/bin/Linux.AnyCPU.Debug/System.Private.Uri.CoreCLR/System.Private.Uri.dll EXEC : dlopen failed to open the libcoreclr.so with error libunwind-x86_64.so.8: cannot open shared object file: No such file or directory [/home/eerhardt/git/corefx/src/System.Runtime/src/System.Runtime.CoreCLR.csproj] /home/eerhardt/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00121/lib/partialfacades.targets(180,5): error MSB3073: The command """"/home/eerhardt/git/corefx/bin/obj/Linux.AnyCPU.Debug/ToolRuntime/corerun"" ""/home/eerhardt/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00121/lib/GenFacades.exe"" -partialFacadeAssemblyPath:""/home/eerhardt/git/corefx/bin/obj/Linux.AnyCPU.Debug/System.Runtime.CoreCLR/PreGenFacades/System.Runtime.dll"" -contracts:""/home/eerhardt/git/corefx/packages/System.Runtime/4.0.21-rc2-23523/ref/dotnet5.4/System.Runtime.dll"" -seeds:""/home/eerhardt/git/corefx/packages/Microsoft.DotNet.CoreCLR/1.0.5-prerelease/lib/dnxcore50/mscorlib.dll;/home/eerhardt/git/corefx/bin/Linux.AnyCPU.Debug/System.Private.Uri.CoreCLR/System.Private.Uri.dll"" -facadePath:""/home/eerhardt/git/corefx/bin/obj/Linux.AnyCPU.Debug/System.Runtime.CoreCLR/"" -producePdb:false"" exited with code 255. [/home/eerhardt/git/corefx/src/System.Runtime/src/System.Runtime.CoreCLR.csproj] EXEC : dlopen failed to open the libcoreclr.so with error libunwind-x86_64.so.8: cannot open shared object file: No such file or directory [/home/eerhardt/git/corefx/src/System.Diagnostics.Debug/src/System.Diagnostics.Debug.csproj] /home/eerhardt/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00121/lib/partialfacades.targets(180,5): error MSB3073: The command """"/home/eerhardt/git/corefx/bin/obj/Linux.AnyCPU.Debug/ToolRuntime/corerun"" ""/home/eerhardt/git/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00121/lib/GenFacades.exe"" -partialFacadeAssemblyPath:""/home/eerhardt/git/corefx/bin/obj/Linux.AnyCPU.Debug/System.Diagnostics.Debug/PreGenFacades/System.Diagnostics.Debug.dll"" -contracts:""/home/eerhardt/git/corefx/packages/System.Diagnostics.Debug/4.0.11-rc2-23523/ref/dotnet5.4/System.Diagnostics.Debug.dll"" -seeds:""/home/eerhardt/git/corefx/packages/Microsoft.DotNet.CoreCLR/1.0.5-prerelease/lib/dnxcore50/mscorlib.dll"" -facadePath:""/home/eerhardt/git/corefx/bin/obj/Linux.AnyCPU.Debug/System.Diagnostics.Debug/"" -producePdb:false"" exited with code 255. [/home/eerhardt/git/corefx/src/System.Diagnostics.Debug/src/System.Diagnostics.Debug.csproj] System.ComponentModel.Annotations -> /home/eerhardt/git/corefx/bin/Linux.AnyCPU.Debug/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll ``` Also, after those build errors, none of the tests pass during the build. This is because the CoreCLR fails to initialize when running `./corerun xunit.console.netcore.exe` with the same error: ``` [eerhardt@localhost dnxcore50]$ pwd /home/eerhardt/git/corefx/bin/tests/Linux.AnyCPU.Debug/System.Globalization.Tests/dnxcore50 [eerhardt@localhost dnxcore50]$ ./corerun xunit.console.netcore.exe dlopen failed to open the libcoreclr.so with error libunwind-x86_64.so.8: cannot open shared object file: No such file or directory ``` " +4651 area-Serialization XmlDictionaryReaderQuotas.MaxDepth \ MaxStringContentLength don't seem to be honored in dnxcore50 \ coreclr "Minimal repro from a failing test in Mvc: ``` C# using System; using System.IO; using System.Runtime.Serialization; using System.Text; using System.Xml; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { var input = ""10""; var content = new MemoryStream(Encoding.UTF8.GetBytes(input)); var quotas = new XmlDictionaryReaderQuotas { MaxDepth = 1, }; using (var reader = XmlDictionaryReader.CreateTextReader(content, Encoding.UTF8, quotas, onClose: null)) { var serializer = new DataContractSerializer(typeof(TestLevelTwo), new DataContractSerializerSettings()); // This throws a SerializerException in dnx451 but succeeds just fine in CoreCLR. var deserializedObject = (TestLevelTwo)serializer.ReadObject(reader); Console.WriteLine(deserializedObject.TestOne.SampleInt); } } } [DataContract(Name = ""TestLevelOne"", Namespace = """")] public class TestLevelOne { [DataMember] public int SampleInt { get; set; } } [DataContract(Name = ""TestLevelTwo"", Namespace = """")] public class TestLevelTwo { [DataMember] public TestLevelOne TestOne { get; set; } } } ``` We're seeing a similar issue with MaxStringContentLength. I'm using build 23509 of `System.Runtime.Serialization.Xml` " +4652 area-System.Net Fix a bug in Select() on *nix. The translations between PAL <-> platform file descriptor sets were inverted, causing incorrect behavior in the case that a Select() completed with any signalled file descriptors. +4653 area-Infrastructure "Add ""Windows Server 2008 R2 Enterprise (Server Core Installation)"" CI / Rolling Build" We're currently testing NT 6.1+ versions of full client and server windows. We need to also add an NT 6.1 Server Core installation to Jenkins outer loop. https://en.wikipedia.org/wiki/Server_Core https://msdn.microsoft.com/en-us/library/dd184075.aspx /cc @Chrisboh @mmitche @markwilkie @leecow +4654 area-Infrastructure Change minimum required Mac OS X version to 10.11.1 (El Capitan) We should be upgrading our Mac OS X test bed to 10.11.1. https://en.wikipedia.org/wiki/OS_X_El_Capitan /cc @Chrisboh @mmitche @markwilkie @leecow +4656 area-Infrastructure Add Debian 8.2 (Jessie) CI / Rolling Build We should have a DebianStable Jenkins outerloop build & test. The current stable version is 8.2 (Jessie) https://hub.docker.com/_/debian/. We'll need to upgrade this about once per year when newer Debian stable releases are available. https://wiki.debian.org/DebianReleases /cc @mmitche @leecow @dleeapho @ellismg @chcosta +4658 area-Serialization Add serialization performance tests for XmlSerializer and DCJS +4659 area-System.Data System.Data.Common from a PCL project Posting on behalf of a customer report via nuget.org > I would really like to be able to reference System.Data.Common from a PCL project - however the >current NuGet package doesn't support PCL. > Would you consider adding support for PCL? > Otherwise, I am planning on implementing it in a separate repository - I'm looking at using Type >Forwarding based on approach here: http://stackoverflow.com/questions/21357321/handling-missing->types-in-pcl-with-real-types-existing-on-some-of-the-platforms > Kind Regards Darrell /cc @saurabh500 @YoungGah +4661 area-System.Net Remove Secur32 dependencies from System.Net.Security Currently, I've replaced the `Secur32` string to point at the OneCore supported `sspicli.dll`. We need to properly replace the name and move Interop files under the `\sspicli` folder. +4663 area-System.Net CurlHandler empty header values not being sent in the event of a redirect occuring Thanks for your quick turnaround on https://github.com/dotnet/corefx/issues/4597. There is still an issue which seems related (although, I'm not personally affected by this one): The example I gave (http://www.google.com) actually causes a 302 redirect in Australia, and I happened to notice that the header is missing from the subsequent request on linux. This is different behaviour to windows Linux: ``` GET http://www.google.com/ HTTP/1.1 Host: www.google.com Accept: */* Accept-Encoding: gzip,deflate Connection: Keep-Alive No-value: With-value: value ``` ``` GET http://www.google.com.au/?gfe_rd=cr&ei=btBTVp6vCsTu8we45Kv4Dg HTTP/1.1 Host: www.google.com.au Accept: */* Accept-Encoding: gzip,deflate Connection: Keep-Alive With-value: value ``` Windows: ``` GET http://www.google.com/ HTTP/1.1 Accept-Encoding: gzip, deflate No-value: With-value: value Connection: Keep-Alive Host: www.google.com ``` ``` GET http://www.google.com.au/?gfe_rd=cr&ei=pdBTVqyuG8Tu8we45Kv4Dg HTTP/1.1 Accept-Encoding: gzip, deflate No-value: With-value: value Connection: Keep-Alive Host: www.google.com.au ``` +4665 area-System.Net New Socket select tests failing on OS X, CentOS, openSUSE CentOS: http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_centos71_debug_tst/157/console ``` 20:09:40 terminate called after throwing an instance of 'PAL_SEHException' 20:09:40 ./run-test.sh: line 130: 59310 Aborted ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 20:09:40 One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 134. 20:09:41 System.Net.Sockets.Tests.SelectAndPollTests.SelectWrite_Multiple_Mixed [FAIL] 20:09:41 Assert.Equal() Failure 20:09:41 Expected: 1 20:09:41 Actual: 0 20:09:41 terminate called after throwing an instance of 'PAL_SEHException' 20:09:41 ./run-test.sh: line 130: 59318 Aborted ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 20:09:41 One or more tests failed while running tests from 'System.Net.Sockets.AsyncServer.Tests'. Exit code 134. ``` openSUSE http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_opensuse132_debug_tst/188/console ``` 20:15:57 terminate called after throwing an instance of 'PAL_SEHException' 20:15:57 ./run-test.sh: line 130: 2689 Aborted ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 20:15:57 One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 134. 20:15:57 System.Net.Sockets.Tests.SelectAndPollTests.SelectWrite_Multiple_Mixed [FAIL] 20:15:57 System.Net.Sockets.SocketException : Unknown error -1 20:15:57 terminate called after throwing an instance of 'PAL_SEHException' 20:15:57 ./run-test.sh: line 130: 2688 Aborted ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 20:15:57 One or more tests failed while running tests from 'System.Net.Sockets.AsyncServer.Tests'. Exit code 134. ``` +4667 area-System.Globalization NumberFormatInfoNumberGroupSizes.TestNumberGroupSizesLocale failing on OS X "``` 20:31:33 System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.TestNumberGroupSizesLocale(locale: ""ur-IN"") [FAIL] 20:31:33 Assert.Equal() Failure 20:31:33 Expected: Int32[] [3] 20:31:33 Actual: Int32[] [3, 2] 20:31:33 Stack Trace: 20:31:33 at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.TestNumberGroupSizesLocale(String locale) ``` " +4668 area-Serialization XML parsing fails in dnx451 but passes in dnxcore50 "I'm the maintainer of a library that provides C# bindings for the MusicBrainz API in DNX (it's a fork of a previous project). It's open source an available there: https://github.com/ribandelle/MusicBrainz.DNX While I was porting and using the library I noticed that some of the XML responses would crash when the application was running from the dnx451 profile, but not when using the dnxcore50 profile. An example of an XML response that crashes is this one: http://musicbrainz.org/ws/2/artist/?query=Metallica But other responses don't crash at all, like this one: http://musicbrainz.org/ws/2/artist/?query=Lofofora According to the W3C XML Validator, both responses are valid XML (just a warning that there's no doctype): http://validator.w3.org/check?uri=http%3A%2F%2Fmusicbrainz.org%2Fws%2F2%2Fartist%2F%3Fquery%3DMetallica http://validator.w3.org/check?uri=http%3A%2F%2Fmusicbrainz.org%2Fws%2F2%2Fartist%2F%3Fquery%3DLofofora The error I get happens here: ``` public static T Find(string query, int limit, int offset, string part) { var serializer = new XmlSerializer(typeof(T)); try { var o = Get(""http://musicbrainz.org/ws/2/"" + part + ""/?query="" + query + LimitOffsetToString(limit, offset)); { return (T)serializer.Deserialize(o.CreateReader()); } } catch (Exception ex) { return default(T); } } ``` When the Deserialize part of the code is reached, the catch is triggered and the exception says `There is an error in XML document (0, 0)`. The stacktrace is the following: `at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) at MusicBrainz.Help.Find[T](String query, Int32 limit, Int32 offset, String part) in D:\GitHub\MusicBrainz.DNX\MusicBrainz.DNX\Help.cs:line 111` I have created a small console program that illustrates that issue. It's available here: https://github.com/acastaner/xmlparsing.git (make sure to use the ""debug"" branch). I haven't bundled the library in that program, you'll need to also clone the MusicBrainz.DNX repo. Also make sure to clone the debug branch as I have added an ""ex"" Exception object in the catch so you can see the details of the exception. If you run that console program with dnx451 it WILL crash when trying to parse the Metallica response, but it will NOT crash if you run it with a dnxcore50 profile. Note that I'm using Windows 10 build 10586 but I've also reproduced the issue on Linux (Ubuntu and CentOS). It _seems_ to me that only responses with a larger body will crash. Metallica triggers the crash, but so does ""Queen"" for instance. Artists with a shorter content response seem to never crash. Just a thought, maybe it's unrelated. " +4669 area-System.ComponentModel RequireAttribute ignored "I have a class with an integer property decorated with [Required] attribute. When I use it within an ASP.NET 5 application MVC controller as a parameter in a Post method accepting json, RequiredAttribute seemed to be ignored when property is not contained in JSON. Model deserialized in controller method contains UserId with default property value 0 for an Int32 and is therefore valid. If the RequiredAttribute was not ignored, model should not be deserialized and should be null, right? I am using ASP.NET 5 RC1 Here is my code: JSON: ``` { ""Token"" : ""abcd"" } ``` Model: ``` [DataContract] public class MyClass { [Required] [DataMember] public int UserId { get; set; } [DataMember] public string Token { get; set; } } ``` MVC Controller: ``` [HttpPost] public async Task MyMethod([FromBody][Required] MyClass model) { if (!ModelState.IsValid || model == null) throw new HttpResponseException(400); await ... } ``` Thanks for your help Alain " +4670 area-System.Reflection MemberTypes not found, yet the immediate window can find the type. "I'm not sure if this is a runtime mismatch of something Here is my method: ``` private static object ValueFor(object obj, MemberInfo member) { object value = null; if (member != null) { switch (member.MemberType) { case MemberTypes.Field: value = ((FieldInfo)member).GetValue(obj); break; case MemberTypes.Property: value = ((PropertyInfo)member).GetValue(obj, null); break; case MemberTypes.Method: break; default: throw new System.ArgumentOutOfRangeException(); } } return value; } ``` And then in my immediate window: ``` ?member.MemberType Property ?member.MemberType.GetType() {Name = ""MemberTypes"" FullName = ""System.Reflection.MemberTypes""} Assembly: {mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e} ``` My dependencies in project.json ``` { ""dependencies"": { ""EntityFramework.MicrosoftSqlServer"": ""(7.0.0-rc1-final,]"", ""EntityFramework.MicrosoftSqlServer.Design"": ""(7.0.0-rc1-final,]"", ""EntityFramework.Commands"": ""(7.0.0-rc1-final,]"", ""System.Reflection"": ""4.1.0-beta-*"", ""Microsoft.Extensions.PlatformAbstractions"": ""(1.0.0-rc1-final,]"" }, ... ``` So there looks to be a version mismatch of System.Reflection. What's up with that? I'm debugging in Visual Studio 2015. " +4671 area-System.Reflection SignatureDecoder.DecodeMethodSignature throws `BadImageFormatException` when decoding method with `int, __arglist` parameters "A BadImageFormatException is thrown when using System.Reflection.Metadata to get method signature for `public static void ArglistMethod(int i, __arglist)`. This behaviour worked in ""1.1.0-alpha-00008"". ## Version **Branch**: `dev/metadata` **Affected Package/Version**: ""System.Reflection.Metadata"": ""1.2.0-alpha-00016"" ## Repro Steps 1. Create library with the following code below. 2. Try to decode the method with: `SignatureDecoder.DecodeMethodSignature(memberReference.Signature, this)` ``` csharp public class TestClass { public static void ArglistMethod(int i, __arglist) { } public static void Main(string[] args) { ArglistMethod(5, __arglist(1, 2, 3)); } } ``` ## Expected ""M:TestClass.ArglistMethod(System.Int32,__arglist)"" ## Actual ``` System.BadImageFormatException occurred HResult=-2147024885 Message=Format of the executable (.exe) or library (.dll) is invalid. Source=System.Reflection.Metadata StackTrace: at System.Reflection.Metadata.Decoding.SignatureDecoder.DecodeType[TType](BlobReader& blobReader, Int32 typeCode, ISignatureTypeProvider`1 provider) at System.Reflection.Metadata.Decoding.SignatureDecoder.DecodeType[TType](BlobReader& blobReader, ISignatureTypeProvider`1 provider) at System.Reflection.Metadata.Decoding.SignatureDecoder.DecodeMethodSignature[TType](BlobReader& blobReader, ISignatureTypeProvider`1 provider) at System.Reflection.Metadata.Decoding.SignatureDecoder.DecodeMethodSignature[TType](BlobHandle handle, ISignatureTypeProvider`1 provider) at Microsoft.Fx.Portability.Analyzer.MemberMetadataInfoTypeProvider.GetMemberRefInfo(MemberReference memberReference) in E:\dotnet-apiport\src\Microsoft.Fx.Portability.MetadataReader\MemberMetadataInfoTypeProvider.cs:line 43 InnerException: ``` " +4672 area-Microsoft.CSharp DLR does not respect InternalsVisibleTo for anonymous types "In full .NET, anonymous types are accessible via DLR across assembly boundaries if an `InternalsVisibleTo` attribute is present. This behavior is not the same in CoreCLR. Instead, a `RuntimeBinderException` is thrown. ``` Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a definition for 'xxxx' ``` Consider the following scenario: In assembly ConsoleApp: ``` c# public class Program { public static void Main() { var list = new List(); list.AddGreeting(""Hello world""); dynamic item = list[0]; Console.WriteLine(item.Greeting); // throws in CoreCLR. Prints ""Hello world"" in full .NET } } ``` In assembly GreetingLibrary: ``` c# [assembly: InternalsVisibleTo(""ConsoleApp"")] public static class ListExtension { public static void AddGreeting(this List source, string greeting) { source.Add(new { Greeting = greeting }); } } ``` In .NET 4.5.1, this console application will print ""Hello world"" but in CoreCLR this application throws an exception. Full repro project: [test-dlr-bug-master.zip](https://github.com/dotnet/corefx/files/402776/test-dlr-bug-master.zip) " +4673 area-System.Runtime Add: BitConverter.SingleToInt32Bits and Int32BitsToSingle ### Migrated from https://github.com/dotnet/coreclr/issues/832 To match the existing `DoubleToInt64Bits` and `Int64BitsToDouble`. This is important for binary serialization tools to get hold of the underlying value without requiring unsafe themselves, which may not be accepted. Example usage: IO / sockets tools, raw protocol tools, network libraries, serialization tools. ## Existing 64-bit API ``` public static long BitConverter.DoubleToInt64Bits(double value); public static double BitConverter.Int64BitsToDouble(long value); ``` However, no 32-bit api exists ## Proposed 32-bit API To mimic existing API: ``` public static int BitConverter.SingleToInt32Bits(float value); public static float BitConverter.Int32BitsToSingle(int value); ``` ## Rationale and Usage Exactly the same as pre-existing 64-bit API: - caller can populate an `int` (perhaps via shift ops and network access / stream, perhaps via raw memory access), and force it to a `float`, for example during deserialization - caller can consume a `float` and force it to an `int` (perhaps for use on network access / stream via shift, perhaps via raw memory access), for example during serialization ## Details To follow same rules and conventions as the existing 64-bit api, which is to say: uses straight unsafe cast - does not explicitly consider machines where integer and floating-point endianness are different (integer big-endian, floating-point little-endian), but is fine on both big-endian and little-endian machines - in reality the endianness matches. To emphasise: there is nothing in here that is different from the expectations of the existing 64-bit api. It would be inconsistent to have the 32-bit API operate with different expectations to the 64-bit api, and it would be a breaking change to alter the expectations of the existing 64-bit api. ## Pull Request A pull request is available with the proposed implementation (comments etc based on the existing 64-bit API): https://github.com/dotnet/coreclr/pull/833 ## Issues None known; not a breaking change, and no overload resolution issue since uniquely named static non-extension methods. ## Discussion Point Possible doubt over relevancy of comments and assertion. This is addressed separately in https://github.com/dotnet/coreclr/issues/834 +4676 area-System.Data SqlDataReader throws invalid operation exception `System.Data.SqlDataReader` throws when it attempts to dispose Using System.Data.SqlClient 4.0.0-rc2-23525 on OSX and Linux. ``` System.InvalidOperationException : Internal connection fatal error. Stack Trace: at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryCloseInternal(Boolean closeReader) at System.Data.SqlClient.SqlDataReader.Close() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader() ``` Reproduces consistently when running [SqlServerDatabaseModelFactoryTest](https://github.com/aspnet/EntityFramework/blob/48e365d3433eef53b210a3f132676f1f1a1f1c4c/test/EntityFramework.MicrosoftSqlServer.Design.FunctionalTests/SqlServerDatabaseModelFactoryTest.cs#L16) from Entity Framework against SQL 2014. +4682 area-System.ComponentModel [DataAnnotations] resx localization not work on RC1 "### environment - Windows 10 Enterprize N + japanese lang pack - Visual Studio 2015 Enterprize (ja-jp localized) ### repro steps 1. create new ASP.NET Web Application project 2. add Resource.resx 3. define `Password` resource 4. edit `ViewModels/Account/LoginViewModel.cs` ``` [Required] [DataType(DataType.Password)] [Display( ResourceType = typeof(Resource), Name =""Password"")] public string Password { get; set; } ``` run application and go to login page ### expected result Login form field label shown as resource defined text. ### actual result ``` An unhandled exception occurred while processing the request. InvalidOperationException: ローカライズに失敗したため、プロパティ 'Name' を取得できません。型 'WebApplication1.Resource' がパブリックでないか、'Password' という名前のパブリックで静的な文字列プロパティが含まれていません。 場所 System.ComponentModel.DataAnnotations.LocalizableString.<>c__DisplayClass0.b__3() ``` error was reports WebApplication1.Resource is not `public` or 'Password' is not `public static`. in generated Resources.Designer.cs ``` internal class Resource { snip internal static string Password { get { return ResourceManager.GetString(""Password"", resourceCulture); } } } ``` - Resource class generated with `internal` - Password property generated with `internal static` " +4686 area-System.Net SelectRead_Multiple_Success failing in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_mac_debug_tst/140/console ``` 04:51:52 System.Net.Sockets.Tests.SelectAndPollTests.SelectRead_Multiple_Success [FAIL] 04:51:52 Assert.Equal() Failure 04:51:52 Expected: 2 04:51:52 Actual: 1 04:51:52 Stack Trace: 04:51:52 at System.Net.Sockets.Tests.SelectAndPollTests.SelectRead_Multiple_Success() ``` +4690 area-System.Collections Add bool TryGetValue(TKey, out TItem) method to a KeyedCollection<,> class "Suggested TryGetValue method allows to check a collection for an ""item"" with specific ""key"" and get item if it exists in the collection. Similar that occur in the [Dictionary<,>](https://msdn.microsoft.com/en-us/library/bb299639.aspx). ``` cs public bool TryGetValue(TKey key, out TItem item) { if (key == null) { throw new ArgumentNullException(""key""); } if (_dict != null) { return _dict.TryGetValue(key, out item); } foreach (TItem itemInItems in Items) { TKey keyInItems = GetKeyForItem(itemInItems); if (keyInItems != null && _comparer.Equals(key, keyInItems)) { item = itemInItems; return true; } } item = default(TItem); return false; } ``` If some existing derived type ""MyKeyedCollection<,>"" already contains the same method, only warning occurred in compilation: > warning CS0108: 'MyKeyedCollection. TryGetValue(TKey, out TItem)' hides inherited member 'KeyedCollection. TryGetValue(TKey, out TItem)'. Use the new keyword if hiding was intended. " +4691 area-System.Collections Redundant checks in KeyedCollection<,> classes "In methods [Contains](https://github.com/dotnet/corefx/blob/49b8925bcf2bd1bd742915fe2f673b153dc74942/src/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs#L91) and [Remove](https://github.com/dotnet/corefx/blob/49b8925bcf2bd1bd742915fe2f673b153dc74942/src/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs#L131) we have a checks ``` cs if (key == null) { throw new ArgumentNullException(""key""); } // … if (key != null) // <-- this ""if"" is redundant because we checked key == null above { // … } ``` Should this be fixed? " +4693 area-System.ComponentModel Proposal: CompareAttribute should apply to fields, too Currently the CompareAttribute can't be used with fields. Particularly with ViewModels, where property logic commonly isn't applicable, fields are a valid alternative, if not even a better choice to use. So I propose to extend all DataAnnotation attributes to be applicable to properties and fields as well. +4694 area-System.Linq Expression.Label with null LabelTarget has wrong parameter name in exception. We would expect the following: ``` C# try { Expression.Label(default(LabelTarget)); } catch(ArgumentNullException ane) { Console.WriteLine(ane.ParamName); } ``` To output `target` as that is the name of the parameter that is incorrectly null. Instead it outputs `label`. +4695 area-System.Collections Indexer for SortedSet ``` var set = new SortedSet(); set.Add(5.6); set.Add(2.1); set.Add(3.4); var x = set[1]; Assert.AreEqual(3.4, x); CS0021 Cannot apply indexing with [] to an expression of type 'SortedSet' ``` It would be useful if SortedSet had an indexer for random access. Would this be possible? Reading the code I see SortedSet is implemented using a red-black tree. Also useful would be an IndexOf method. https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/SortedSet.cs +4696 area-System.Collections Stable sort [As documented](https://msdn.microsoft.com/en-us/library/w56d4y5z%28v=vs.110%29.aspx), `List.Sort` does an unstable sort: > This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal. It would be useful to offer a stable sort method for when the stronger behaviour is required. The same applies to Array.Sort 1. C++ offers both sort and [stable_sort](http://www.cplusplus.com/reference/algorithm/stable_sort/) 2. Golang offers both Sort and Stable https://golang.org/pkg/sort/#Stable 3. Python's sort is stable https://docs.python.org/3/library/stdtypes.html#list.sort +4697 area-System.Collections Binary search for IList and IReadOnlyList > arguably the most important algorithm of all: binary search We have [List.BinarySearch](https://msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx) and [Array.Search](https://msdn.microsoft.com/en-us/library/system.array.binarysearch%28v=vs.110%29.aspx) for searching sorted lists and arrays. But what about other collections that implement `IList` or `IReadOnlyList`? It would be useful to have similar functions (extension methods) to search them. Binary search is a fundamental algorithm, so it's helpful to have a fast reliable well-documented implementation in the standard library. Otherwise developers waste time reinventing the wheel. A workaround is calling `.ToList()` or `.ToArray()` and then searching the new object, but that's not ideal because it copies the collection. +4698 area-System.Collections Strengthen binary search to return index of first matching element "[As documented](https://msdn.microsoft.com/en-us/library/w4e7fxsh%28v=vs.110%29.aspx) the behaviour of List.BinarySearch and Array.BinarySearch is undefined when the sorted list contains two elements with the same value: > If the List contains more than one element with the same value, the method returns only one of the occurrences, and it might return any one of the occurrences, not necessarily the first one. It would be useful to strengthen this to return the first matching element—for some problems this detail is important. This could be done without cost—the complexity would remain O(log n). The binary search methods in C++, Golang and Python all return the first matching element 1. http://www.cplusplus.com/reference/algorithm/lower_bound/ ""Returns an iterator pointing to the first element which ... "" 2. https://golang.org/pkg/sort/#Search ""find and return the smallest index ... "" 3. https://docs.python.org/3/library/bisect.html#bisect.bisect_left ""the insertion point will be before (to the left of) any existing entries ... "" " +4699 area-System.Net GetAllNetworkInterfaces throws FileNotFoundException on OS X "`System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()` throws an error when OS X (v 10.10.5) has no internet access (i.e after turning off Wi-Fi, removing the network cable etc.). .NET Version Manager: Version 1.0.0-rc2-15545 ``` Active Version Runtime Architecture OperatingSystem Alias ------ ------- ------- ------------ --------------- ----- 1.0.0-rc1-final clr x64 win 1.0.0-rc1-final clr x86 win * 1.0.0-rc1-final coreclr x64 darwin default 1.0.0-rc1-final coreclr x64 linux 1.0.0-rc1-final coreclr x64 win 1.0.0-rc1-final coreclr x86 win 1.0.0-rc1-final mono linux/osx ``` project.json ``` { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.Runtime"": ""1.0.1-beta-*"", ""System.IO"": ""4.0.10-beta-*"", ""System.Console"": ""4.0.0-beta-*"", ""System.Runtime"": ""4.0.21-beta-*"", ""System.Net.NetworkInformation"": ""4.1.0-beta-23516"" }, ""frameworks"": { ""dnxcore50"": { } } } ``` Exception ``` Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/etc/resolv.conf'. at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.Net.NetworkInformation.UnixIPInterfaceProperties.GetDnsSuffix() at System.Net.NetworkInformation.UnixIPInterfaceProperties..ctor(UnixNetworkInterface uni) at System.Net.NetworkInformation.OsxIpInterfaceProperties..ctor(OsxNetworkInterface oni, Int32 mtu) at System.Net.NetworkInformation.OsxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.OsxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.OsxNetworkInterface.<>c__DisplayClass3_0.b__2(String name, LinkLayerAddressInfo* llAddr) at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound) at System.Net.NetworkInformation.OsxNetworkInterface.GetOsxNetworkInterfaces() at System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces() at ConsoleApplication.Program.Main(String[] args) ``` " +4707 area-System.Net Fix corruption when FD_SETSIZE larger than expected The expected FD_SETSIZE for Select is currently hardcoded to be 1024. While common, this is not required, and many servers will have this limit increased. With the current hardcoded value, if a file descriptor comes in beyond the limit, we end up corrupting memory. This commit fixes it by making the limit in managed code dynamic, supplied via a call to the native shim to return the actual value of FD_SETSIZE so that the managed and native expectations match. cc: @pgavlin, @sergiy-k +4708 area-System.Threading Add ValueTask to corefx [ValueTask](https://github.com/dotnet/corefxlab/blob/master/src/System.Threading.Tasks.Channels/src/System/Threading/Tasks/ValueTask.cs) being developed for System.Threading.Tasks.Channels in corefxlab is very valuable on its own and should be included independently of Channels (and earlier). > `ReadAsync` is defined to return a `ValueTask`, a new struct type included in this library. `ValueTask` is a discriminated union of a `T` and a `Task`, making it allocation-free for `ReadAsync` to synchronously return a `T` value it has available (in contrast to using `Task.FromResult`, which needs to allocate a `Task` instance). `ValueTask` is awaitable, so most consumption of instances will be indistinguishable from with a `Task`. If a `Task` is needed, one can be retrieved using `ValueTask`'s `AsTask()` method, which will either return the `Task` it stores internally or will return an instance created from the `T` it stores. +4717 area-System.Reflection Fix decoding of varags method references We were peeking at the sentinel between required and variable arguments, but not consuming it. Fix #4671 FYI, @tmat, @conniey -- I'm going to merge this to the dev branch if CI succeeds. I have a bunch of more refactoring+tests for the signature decoder pending and it will all show up soon for full review in a PR to master. +4719 area-System.Reflection Merge master to dev/metadata +4720 area-System.Diagnostics Escaping quotes - portable way How do you escape quotes the portable way when using Process with UseShellExecute and Arguments? EDIT: UseShellExecute: ``` System.PlatformNotSupportedException: UseShellExecute must always be set to false. at System.Diagnostics.ProcessStartInfo.set_UseShellExecute(Boolean value) ``` Process could perhaps have an option of taking string[] to match Main and be able roundtrip +4721 area-System.Net Add ALPN support to System.Net.Security.SslStream API "## Rationale In order to initiate HTTP/2 connection over TLS, application protocol must be negotiated (References: [rfc7540 section-3.3](https://tools.ietf.org/html/rfc7540#section-3.3),[rfc7301](https://tools.ietf.org/html/rfc7301)). ALPN support [is available](https://technet.microsoft.com/en-us/library/hh831771.aspx) in SChannel for Windows Server 2012 R2, Windows 8.1 or later. Support in SslStream is a popular feature request: See [here](https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6264363-add-support-for-alpn-to-system-net-security-sslstr) and #2928. Client and server applications need a way to specify their supported application protocol list and be able to query the negotiated protocol. ## Proposed API change ``` C# public partial class SslStream : AuthenticatedStream { ... public virtual void AuthenticateAsClient(string targetHost, System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates, System.Security.Authentication.SslProtocols enabledSslProtocols, bool checkCertificateRevocation, string[] applicationProtocols); public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync(string targetHost, System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates, System.Security.Authentication.SslProtocols enabledSslProtocols, bool checkCertificateRevocation, string[] applicationProtocols); public virtual void AuthenticateAsServer(System.Security.Cryptography.X509Certificates.X509Certificate serverCertificate, bool clientCertificateRequired, System.Security.Authentication.SslProtocols enabledSslProtocols, bool checkCertificateRevocation, string[] applicationProtocols); public virtual System.Threading.Tasks.Task AuthenticateAsServerAsync(System.Security.Cryptography.X509Certificates.X509Certificate serverCertificate, bool clientCertificateRequired, System.Security.Authentication.SslProtocols enabledSslProtocols, bool checkCertificateRevocation, string[] applicationProtocols); public virtual string NegotiatedApplicationProtocol; } ``` (New method overloads of `AuthenticateAsClient`/`AuthenticateAsServer` (+their async versions) are being added having new parameter `string[] applicationProtocols`. New property `string NegotiatedApplicationProtocol` is added as well). Full view of SslStream API containing the proposed changes is in [PR](https://github.com/jubarat/corefx/blob/sslstream_alpn/src/System.Net.Security/ref/System.Net.Security.cs). ## Example usage Client: ``` C# SslStream sslStream = new SslStream(serverStream); string[] applicationProtocols = new[] { ""h2"", ""http/1.1"" }; sslStream.AuthenticateAsClient(certificate.Subject, new X509CertificateCollection(), SslProtocols.Tls12, false, applicationProtocols); string protocol = sslStream.NegotiatedApplicationProtocol; ``` Server: ``` C# SslStream sslStream = new SslStream(serverStream) string[] applicationProtocols = new[] { ""h2"", ""http/1.1"" }; sslStream.AuthenticateAsServer(certificate, false, SslProtocols.Tls12, false, applicationProtocols); string protocol = sslStream.NegotiatedApplicationProtocol; ``` ## Details Client advertises list of protocols in descending order of preference. After the TLS handshake is complete the client queries the TLS stack for negotiated application protocol. Similar way server side application provides its own list of supported protocols (again in descending order of preference). The TLS stack makes the application protocol match internally. After the handshake completes the server application queries the negotiated application protocol. Note: This behavior is supported by SChannel and is compatible with OpenSSL ALPN API. Unlike OpenSSL the SChannel does not expose possibility of querying client's advertised list of protocols therefore this API proposal does not contain server side protocol selecting based on callback. `AuthenticateAsClient`/`AuthenticateAsServer` methods - null value passed to `applicationProtocols` parameter means the caller is not requesting application protocol negotiation. This is also the behavior of existing method overloads. - If both client and server specified their application protocol list and there was no match then `AuthenticateAsServer` throws `AuthenticationException` with inner exception having OS native error code. At this point the TLS handshake is aborted so the client gets `IOException` due to server application closing the transport connection. - An alternative approach how to pass application protocol list instead of `AuthenticateAs…` methods could be as parameter of SslStream constructor. - In following cases `ArgumentException` is thrown: - Empty protocol list. - Any element of protocol list is null. - Any element has more than 255 characters. - The full protocol list serialized size is more than 32767 bytes. `NegotiatedApplicationProtocol` property - If successfully negotiated then it returns the negotiated application protocol string. - If peer did not advertise ALPN TLS extension or `applicationProtocols` was null then this property returns null. - Throws `InvalidOperationException` if calling before `AuthenticateAsClient` or `AuthenticateAsServer` completes. Examples of API behavior are in [functional tests](https://github.com/jubarat/corefx/blob/sslstream_alpn/src/System.Net.Security/tests/FunctionalTests/ApplicationProtocolNegotiationTest.cs) of PR. ## Pull request #4685 " +4722 area-System.Linq Public Surface of System.Linq.Expressions.Expression exposing too much? In the code base, the methods [`DebugView`](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L222), [`ReturnReadOnly`](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L245), [`ReturnReadOnly`](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L263), [`ReturnObject`](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L276), [`RequiresCanRead`](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L281), [`RequiresCanRead` (another overload)](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L286), are all public. They are not documented, nor public in any of the other .Net versions. I can't see any trace of a decision to make them public here, and the blame record suggests they were imported as such. With the possible exception of `DebugView`, they don't seem particularly useful to outside code or if they are they should perhaps be defined elsewhere. Also, `RequiresCanWrite` remains private and should surely be public if `RequiresCanRead` is. This looks like it was introduced by accident in a refactoring of some of these methods into `ExpressionUtils` that happened in between the release of .NET 4.6 and the code being brought into dotnet/corefx (or in a different branch, etc.). If I'm correct in deducing that their access is a mistake, removing the access to them would be a breaking change, but by the same token should perhaps be done as soon as possible before more dependencies on them appear. +4724 area-Serialization [.Net Native] XmlTextAttribute on a primitive type property in struct seems not to be supported "This problem only occur when the c# code was compiled by .Net Native tool. If there's a property in a class. This property is a struct. In this struct, there's a primitive type property, such as string. If there's an XmlTextAttribute on this property, the xml serialization and deserialization will go wrong. Here is the code: It is a piece of code from a UWP App. ``` [XmlRoot(""库"")] public class LibraryPropertyFile { [XmlElement(""库名称"")] public FieldWithDateTime Name { get; set; } } public struct FieldWithDateTime//struct, not class. { //Here: [XmlText] public T Field { get; set; } [XmlAttribute(""修改日期"")] public DateTime DateTime { get; set; } } ``` //Serialize: ``` StorageFile libraryFile = ...; XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(); xmlSerializerNamespaces.Add(string.Empty, string.Empty); XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { Encoding = new UTF8Encoding(false) }; Stream libraryFileStream = await libraryFile.OpenStreamForWriteAsync(); XmlSerializer serializer = new XmlSerializer(typeof(LibraryPropertyFile)); XmlWriter xmlWriter = XmlWriter.Create(libraryFileStream, xmlWriterSettings); serializer.Serialize(xmlWriter, libraryPropertyFile, xmlSerializerNamespaces); xmlWriter.Flush(); xmlWriter.Dispose(); libraryFileStream.Flush(); libraryFileStream.Dispose(); ``` //Deserialize: ``` StorageFile libraryFile = ...; Stream libraryFileStream = await libraryFile.OpenStreamForReadAsync(); XmlSerializer libraryXmlSerializer = new XmlSerializer(typeof(LibraryPropertyFile)); LibraryPropertyFile libraryPropertyFile = libraryXmlSerializer.Deserialize(libraryFileStream) as LibraryPropertyFile; libraryFileStream.Dispose(); ``` Pay attention! In the Debug mode, the code is run on CLR, it works perfectly. But in the release mode, the code is compiled into native code. When it is going to Serialize or Deserialize, it crashs. But I can modify my code: ``` public class FieldWithDateTime//change from struct to class ``` And then, Compile it, it works perfectly. So, if FieldWithDateTime is a class, the code can work both in Debug or Release mode, but if FieldWithDateTime is a struct, the code can only work in Debug mode. My develop platform: Windows 10 1511, Visual Studio 2015. " +4727 area-System.IO FileVersionInfo.GetVersionInfo(string fileName) fails on Unix with ArgumentException Calling FileVersionInfo.GetVersionInfo(string) on Unix (passing valid input) results in the following exception: ``` System.ArgumentException: Argument must be between 0 and 3. Parameter name: fieldCount at System.Version.ToString(Int32 fieldCount) at System.Diagnostics.FileVersionInfo.LoadManagedAssemblyMetadata(MetadataReader metadataReader) at System.Diagnostics.FileVersionInfo.TryLoadManagedAssemblyMetadata() at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) ``` The error seems to be in [FileVersionInfo.Unix.cs@131](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Unix.cs#L131) which explicitly calls Version.ToString with an argument '4' despite the exception message saying that the argument should fall in the range [0-3]. +4728 area-System.Net Switch Socket.Select to use poll rather than select in the implementation +4732 area-System.Net Incorporate API review feedback for System.Net.* APIs All networking APIs in .NET Core (System.Net, System.Net.Sockets, etc.) were recently reviewed by the API Review board. The detailed notes are here: https://github.com/dotnet/apireviews/pull/21 Filing this issue to track the following proposed changes based on API review feedback: - [x] In `WebException` in the System.Net.Requests contract: For the constructors, change parameter name `inner` to `innerException` to match that in .NET Framework - Done #4740 - [x] In `WinHttpHandler.ServerCertificateValidationCallback`: Document/add comments for the meaning of each parameter - Documentation bug referred to MSDN doc team. Update - Added this here: https://msdn.microsoft.com/en-US/library/mt345545(VS.105).aspx - [x] In types `NegotiateStream` and `SslStream`: Remove synchronous versions of `AuthenticateAsServer` and `AuthenticateAsClient` methods - Done #4868 - [x] In `System.Net.Utilities` contract: Consider if we want it to be a bag of multiple utilities OR more scoped down to just ICMP-related utilities. If scoped down, consider renaming the contract - Done #5232 renamed the contract to `System.Net.Ping` - [x] Cancellation support: Add CancellationToken overloads to appropriate async methods in all contracts – e.g. `System.Net.Sockets`, `System.Net.Security` - Deferred #5211 - [x] In `enum SocketFlags`: Remove value `MaxIOVectorLength`, but document that slot 16 should not be used since it will cause conflict with .NET Framework - Done #4888 - [x] In `enum SocketOptionName`: Add ReuseUnicastPort support. This is a new option added to .NET Framework 4.6 to improve server scalability and is currently missing from .NET Core. - Done #4888 - [x] In structs `SocketReceiveFromResult` and `SocketReceiveMessageFromResult`: Investigate if the individual fields be properties. - Investigated. Final decision is to leave it as-is with public fields. +4733 area-System.Net System.Net.Sockets.Socket.DoConnect() doesn't work as expected. "Here is an other application which makes the stack trace more clear: ``` C# try { try { socket.Connect(ep); } catch (SocketException e) { => The socket exception is catched here! Console.WriteLine(""Excpetion Message="" + e.Message); Console.WriteLine(""Excpetion Stack="" + e.StackTrace); Console.WriteLine(""Socket Error Code="" + e.SocketErrorCode.ToString()); if (e.SocketErrorCode != SocketError.WouldBlock) { throw; } } var write = new List { socket }; var error = new List { socket }; Socket.Select(null, write, error, perIpTimeout); var errorCode = (int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error); if (errorCode != 0) { Console.WriteLine(""error code is not zero!""); throw new SocketException((int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error)); } if (!write.Any()) { Console.WriteLine( $""Timeout after {new TimeSpan(perIpTimeout * 10).TotalSeconds} seconds when connecting to {ips[0]}""); try { socket.Dispose(); } catch { // ignored } // if i == 0 Console.WriteLine(""i==0 exception""); throw new TimeoutException(); // continue; } socket.Blocking = true; return; } catch (TimeoutException) { throw; } catch { try { socket.Dispose(); } catch { // ignored } Console.WriteLine(""Failed to connect to "" + ips[0]); // if (i == 0) Console.WriteLine(""i==0 exception 2""); throw; } ``` Here is my output from the above program: Excpetion Message=Unknown error 10035 Excpetion Stack= at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) at SirenTek.Program.Main(String[] args) Socket Error Code=WouldBlock Timeout after -1E-06 seconds when connecting to 192.168.1.72 i==0 exception System.TimeoutException: The operation has timed out. Socket.DoConnect method creates an exception. _This makes us unable to use npgsql with core50 runtime._ " +4734 area-Serialization Remove dependency from System.Xml.XmlSerializer on System.Runtime.WindowsRuntime 4.0.10 Fix #1761 cc: @ericstj @SGuyGe @shmao +4736 area-Serialization Fix DCS serialization tests compilation failures Fix compilations failures due to recent update of surrogate API in this PR #4735 cc: @stephentoub @SGuyGe +4737 area-System.Security Update libssl minimum required version for Mac OS X "We're currently using a deprecated and unsupported version of OpenSSL on Mac (0.9.8). We need to upgrade our minimum required version to a supported version 1.0.1/1.0.2. This issue is tracking this upgrade; including updating the build server definitions; updating dev instructions; and updating the Mac end-user binary installer (TBD either requiring homebrew again or possibly using another provided libssl installer). http://lists.apple.com/archives/macnetworkprog/2015/Jun/msg00025.html > Subject: Re: OpenSSL -> Secure Transport for libevent2 > From: ""Quinn \""The Eskimo!\"""" email@hidden > Date: Mon, 15 Jun 2015 12:28:41 -0700 > On 15 Jun 2015, at 11:11, John Pannell email@hidden wrote: > > Apple stopped shipping OpenSSL with OS X some time ago, citing lack of a stable API from version to version. > > It's a bit more subtle than that: > > o Apple deprecated its OpenSSL shared libraries a while back (with OS X 10.7). That's because OpenSSL doesn't offer release-to-release binary compatibility, so we can't update the shared libraries to the latest OpenSSL without breaking all the existing clients. > > o At the same time we marked the OpenSSL headers in the OS X SDK as deprecated so you'd get deprecation warnings if you build with a deployment target of 10.7 or later. > > o With the latest OS X SDK we've removed the headers entirely, making it much harder to use the long-since-deprecated shared libraries. > > o We recommend that developers who need OpenSSL build their own copy of it and include that copy in their app. Alternatively you can use native OS X APIs, like Secure Transport. > > Share and Enjoy > > Quinn ""The Eskimo!"" http://www.apple.com/developer/ > Apple Developer Relations, Developer Technical Support, Core OS/Hardware Related issue https://github.com/dotnet/corefx/issues/3924 " +4738 area-System.IO FileSystemWatcher.Dispose hangs on OSX It seems that the FileSystemWatcher doesn't trigger on OSX. This makes [dnx-watch](https://github.com/aspnet/dnx-watch) unusable on CoreCLR. Side note: it works on Mono. I will provide a simple repro soon but I wanted to open the bug so we can start tracking this because `dnx-watch` will need to become `dotnet-watch` for RC2 and we want it to work on OSX. For now you can repro by running `dnx-watch` cc @glennc +4739 area-System.Net Building System.Net.Security/tests/UnitTests clean causing project.lock.json to update Recent changes in GitHub are now causing the System.Net.Security/tests/UnitTests to update the project.lock.json file everything I build the enlistment clean. It causes my git working directory to show a the file as modified. +4740 area-System.Net Fix WebException constructor parameters to match Desktop naming As per the System.Net.\* API review dotnet/apireviews#21 fixing the parameter name used for the inner exception in the WebException constructor overloads to match the name used in .NET Framework (Desktop). Part of #4732 +4750 area-System.Linq Improve Enumerable.Reverse() performance for IList and LinkedList I would like to suggest and discuss a possible performance improvement of the Enumerable.Reverse() extension function in the System.Linq namespace. Currently a _Buffer_ struct is created that allocates a new array of elements in most cases, as can be seen here: ``` csharp internal struct Buffer { internal TElement[] items; internal int count; internal Buffer(IEnumerable source) { IArrayProvider iterator = source as IArrayProvider; if (iterator != null) { TElement[] array = iterator.ToArray(); items = array; count = array.Length; } else { items = EnumerableHelpers.ToArray(source, out count); } } internal TElement[] ToArray() { //... } } ``` For the ReverseIterator the _items_ array of the _Buffer_ struct is then iterated through from end to start. I would think that the array allocation is not always needed, so I suggest to handle the reverse iteration of _IList_ and _LinkedList_ differently. An _IList_ object could be directly used for reverse iteration like the buffer struct but without creating and allocating the in this case unneccesary buffer first. For _LinkedList_ sources the reverse iteration would be easily possible without a _Buffer_ too. So what do you think about this? Am I missing a good reason here why this has not been done already? I could imagine the argument that Enumerable cannot handle every special collection differently, but at least _IList_ is often treated special. Oh and btw: I think this ``` csharp TElement[] array = iterator.ToArray(); items = array; count = array.Length; ``` should be ``` csharp items = iterator.ToArray(); count = items.Length; ``` as I don't see a reason for introducing the variable _array_. +4754 area-System.Net HttpClient doesn't respect HttpRequestMessage.Version e.g. if it's set to 1.0, the request still gets sent with a version 1.1 +4756 area-System.Net Add HTTP/2 support to HttpClient on Unix The latest versions of libcurl have HTTP/2 support; this commit enables that to be used from HttpClient via setting the request Version. Setting the Version will now pass along that version preference to libcurl; if it's set to 2.0, libcurl will use HTTP/2 if supported, otherwise it'll fall back to its default (1.1). As part of this I also fixed CurlHandler to pass along v1.0 and v1.1 so libcurl can respect the developer's explicit wishes. (Note that the HTTP/2 light-up is only available if libcurl supports it. libcurl relies on nghttp2, which needs to be installed, and a version of libcurl needs to be used that's built against it. To test, I built these locally from source.) cc: @vijaykota, @kapilash, @davidsh, @cipop, @eerhardt +4757 area-System.Net Updating and locking project.lock.json for Security UnitTests. Updating and locking project.lock.json for Security UnitTests. Fix #4739 +4760 area-System.Net Method not found: 'System.Threading.Tasks.Task`1 System.Net.NetworkInformation.Ping.SendPingAsync(System.Net.IPAddress, Int32)'. I think I found a bug in System.Net.NetworkInformation where PingReply is missing. You can find my source code [here](https://github.com/00101010b/PingTest1/blob/master/Controllers/HomeController.cs) on GitHub. I get the following errors during build: ``` An unhandled exception has occurred: Method not found: 'System.Threading.Tasks.Task`1 System.Net.NetworkInformation.Ping.SendPingAsync(System.Net.IPAddress, Int32)'. System.MissingMethodException: Method not found: 'System.Threading.Tasks.Task`1 System.Net.NetworkInformation.Ping.SendPingAsync(System.Net.IPAddress, Int32)'. ``` +4767 area-System.Net System.Net.Http nuget package need depend on System.Security.Cryptography.X509Certificates dotnet publish System.Net.Http can not work, it need System.Security.Cryptography.X509Certificates. +4769 area-System.Reflection Change SignatureDecoder design in preparation for API review - Segregate type provider interfaces so that custom attribute decoding does not require unnecessary provider implementation. - Change SignatureDecoder from static class to struct, which captures the provider, metadata reader, and options. - Move the overloads that took (MetadataReader, Handle) to instead hang off of the corresponding entity struct. This follows the precedent of blob-decoding done for Portable PDBs, makes the API more discoverable, and eliminates questions around which API to call for which blobs, which was exacerbated by the weak typing of BlobHandle. SignatureDecoder.DecodeXxx now all take ref BlobReader alone. Convenience overloads to allow parsing byte sequences without forcing the caller to pin and use pointers should be added, but that is deferred until `Span` arrives. - Remove ISignatureTypeProvider.Reader and instead pass along the metadata reader to the provider whenever there is a handle. The reader is allowed to be null (to decode byte sequence that didn't come from a metadata reader, which our tests do). Many type providers will already capture the metadata reader so that they have enough context in other situations than resolving handles (e.g. interpreting generic parameters beyond their index.), but this duplication is harmless and it simplifies the API. - Change CustomModifier handling to happen one-at-a-time and give the provider the raw handle rather than a decoded TType so that modifiers are cheaper to skip, and so that we do not traverse in to typespec signatures on provider's behalf. - Make class/value-type differentiation optional and handle WinRT projections correctly when enabled. - Add considerably more doc comments. - Add significant test coverage. All blocks in the SignatureDecoder with the exception of WinRT class <-> value type projection (I'll write some tests for that shortly) are now covered. - Use ImmutableArray.Builder.MoveToImmutable throughout to eliminate unnecessary copying. - Move everything in the Decoding folder to the Decoding namespace. (Some types being in the root was unintentional.) - Add specific error messages to all BadImageFormatException throws. NOTE: - A change to make it possible for the context-carrying provider to be passed around as an unboxed struct (reducing allocation) was attempted and reverted. The API is complex enough and the extra type parameter that could not be inferred was quite cumbersome. The Decoding namespace is given more freedom than the rest of S.R.M to allocate. In typical scenarios, symbols are parsed once and cached. - The type name parser and custom attribute decoder still need more refactoring and testing and will not be submitted to master just yet. FYI: @tmat, @michaelcfanning -- I'm going to turn around and submit this (minus type name and custom attribute decoding) as a PR to master (along with API review materials), so I'll merge to the dev branch once CI is green. +4771 area-System.Net System.Net.Sockets Build Failure (VS2015/Win10) Steps to reproduce: 1. git clone https://github.com/dotnet/corefx (OK) 2. C:\git\corefx>build.cmd /t:rebuild (OK) 3. Install .NET Core via the official MSI installer (OK~ dotnet/cli #362 ) 4. C:\git\corefx\src\System.Net.Sockets\ref>dotnet restore (OK) 5. C:\git\corefx\src\System.Net.Sockets\src>dotnet restore (OK) 6. C:\git\corefx\src\System.Net.Sockets\tests\FunctionalTests>dotnet restore (OK) 7. C:\git\corefx\src\System.Net.Sockets\tests\PerformanceTests>dotnet restore (OK) 8. Opened C:\git\corefx\src\System.Net.Sockets\System.Net.Sockets.sln via in V2015 Community Ed. 9. Rebuild Solution Errors: Severity Code Description Project File Line Error xunit.abstractions 2.0.0 is not compatible with DNXCore,Version=v5.0. 0 Error Some packages are not compatible with DNXCore,Version=v5.0. 0 Error xunit.abstractions 2.0.0 is not compatible with DNXCore,Version=v5.0. 0 Error Some packages are not compatible with DNXCore,Version=v5.0. 0 Warnings: Severity Code Description Project File Line Warning The referenced component 'System.Net.NameResolution' could not be found. System.Net.Sockets.Async.Performance.Tests Warning The referenced component 'System.Net.NameResolution' could not be found. System.Net.Sockets.Tests Warning Failed to resolve all project references for 'tests\PerformanceTests\System.Net.Sockets.Async.Performance.Tests'. The package restore result for 'tests\PerformanceTests\System.Net.Sockets.Async.Performance.Tests' may be incomplete. 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading.Tasks.Parallel (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> xunit.netcore.extensions (≥ 1.0.0-prerelease-) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading.Tasks.Parallel (≥ 4.0.0) -> System.Collections.Concurrent (≥ 4.0.10) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> xunit.netcore.extensions (≥ 1.0.0-prerelease-) -> System.Linq (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> src\System.Net.Sockets -> System.IO.FileSystem (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> src\System.Net.Sockets -> System.IO.FileSystem (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> src\System.Net.Sockets -> System.Security.Principal.Windows (≥ 4.0.0-beta-) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> xunit (≥ 2.1.0) -> xunit.core (= 2.1.0) -> System.Linq (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> xunit (≥ 2.1.0) -> xunit.assert (= 2.1.0) -> System.Linq (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Async.Performance.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Failed to resolve all project references for 'tests\FunctionalTests\System.Net.Sockets.Tests'. The package restore result for 'tests\FunctionalTests\System.Net.Sockets.Tests' may be incomplete. 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading.Tasks.Parallel (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> xunit.netcore.extensions (≥ 1.0.0-prerelease-) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading.Tasks.Parallel (≥ 4.0.0) -> System.Collections.Concurrent (≥ 4.0.10) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> xunit.netcore.extensions (≥ 1.0.0-prerelease-) -> System.Linq (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> src\System.Net.Sockets -> System.IO.FileSystem (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> src\System.Net.Sockets -> System.IO.FileSystem (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> src\System.Net.Sockets -> System.Security.Principal.Windows (≥ 4.0.0-beta-) -> System.Threading (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> xunit (≥ 2.1.0) -> xunit.core (= 2.1.0) -> System.Linq (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets.Tests (≥ 1.0.0) -> xunit (≥ 2.1.0) -> xunit.assert (= 2.1.0) -> System.Linq (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets.Tests (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.IO.FileSystem (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.IO.FileSystem (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.Security.Principal.Windows (≥ 4.0.0-beta-) -> System.Threading (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Collections (≥ 4.0.0) 0 Warning Detected package downgrade: System.Threading from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Threading (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Threading (≥ 4.0.0) 0 Warning Detected package downgrade: System.Globalization from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Globalization (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Globalization (≥ 4.0.0) 0 +4777 area-System.Net System.Net.Socket EndPoint-extensibility broken in corefx The current corefx codebase appears to be closed off to any EndPoint customization. The Sockets codebase expects every EndPoint to be either a DnsEndPoint or an IPEndPoint, and anything that’s not built in to System.Net.Sockets will result in failures. This is a silly little quick example which obviously won’t do anything meaningful: ``` C# private class MyEndPoint : EndPoint { } [Fact] public void Socket_CustomEndPoint() { Socket s = new Socket(SocketType.Raw, ProtocolType.Raw); s.Connect(new MyEndPoint()); } ``` but it fails on corefx due to a cast exception that highlights the problem: ``` System.InvalidCastException : Unable to cast object of type 'MyEndPoint' to type 'System.Net.IPEndPoint'. Stack Trace: c:\Users\stoub\Source\repos\corefx\src\Common\src\System\Net\Internals\IPEndPointExtensions.cs(14,0): at System.Net.Sockets.IPEndPointExtensions.Serialize(EndPoint endpoint) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(4894,0): at System.Net.Sockets.Socket.CheckCacheRemote(EndPoint& remoteEP, Boolean isOverwrite) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(848,0): at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) ``` In contrast, on desktop it also fails but where and with the exception I’d expect: ``` Unhandled Exception: System.NotImplementedException: This method is not implemented by this class. at System.Net.EndPoint.Serialize() at System.Net.Sockets.Socket.CallSerializeCheckDnsEndPoint(EndPoint remoteEP) at System.Net.Sockets.Socket.CheckCacheRemote(EndPoint& remoteEP, Boolean isOverwrite) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) ``` cc: @cipop, @davidsh, @SidharthNabar +4779 area-Infrastructure "Add ""Windows Server 2016 TP4 (Nano Server Installation)"" CI / Rolling Build" Now that Nano Server TP4 is available in the Azure Gallery we should investigate adding it to our non-blocking outer-loop build and test system: http://blogs.technet.com/b/nanoserver/archive/2015/11/25/nano-server-iaas-image-in-the-azure-gallery.aspx https://en.wikipedia.org/wiki/Windows_Server_2016#Nano_Server +4782 area-System.Data Add basic test for System.Data.SqlClient Connection.Open to debug package issues +4784 area-System.Reflection System.Reflection.Metadata depends on Windows API's @nguerrera , I noticed that System.Reflection.Metadata has a dependency on Windows API's (api-ms-win-core-file-l1-2-0.dll). I understand that this is light-up code, but is there a reason that we have this requirement instead of using a different method that doesn't include this dependency? cc @ericstj +4786 area-System.IO Mechanism for reading directly from file to unmanaged memory System.Reflection.Metadata has an optimization where it reads files small enough to not warrant memory mapping directly into the unmanaged heap (without an intermediate copy on the managed heap). This optimization is done by lighting up on Windows to the native `ReadFile` API. For this to work cross-plat there should be a way to pass unmanaged memory to Stream and have FileStream override it to not involve intermediate copies to managed memory. This could possibly be accomplished via `Span` support in `Stream` overridden by `FileStream`. cc @KrzysztofCwalina +4792 area-System.IO Add Path.TryGetExtension Today Path.GetExtension throws if the value passed in has invalid chars. See https://github.com/aspnet/StaticFiles/commit/657a5ab26bea3f0b9293a216f28f7b37e004d707#diff-e0272e80448d0ed39c75613bfe35ee62R438. It would be great if there was a way to avoid that exception without reimplementing it. +4793 area-Serialization Make ISerializatonSurrogateProvider support OOB to desktop .NET Framework By making ISerializatonSurrogateProvider support OOB to desktop .NET Framework, the end user can have the same code that works on both .NET Core and full .NET Framework. +4794 area-System.Diagnostics Process.Start not working for HTTP links On windows (with .NET Core) calling: System.Diagnostics.Process.Start(SomeWebLinkHere); Results in: An exception of type 'System.ComponentModel.Win32Exception' occurred in System.Diagnostics.Process.dll but was not handled in user code. Additional information: The system cannot find the file specified. Works fine on the .NET Framework, is this intended? +4797 area-System.Xml How to use XmlWriter.Close(); in coreCLR +4798 area-Meta Evaluate the need to shim native calls on OSX We have a few OSX-specific native calls that don't use shims. From my understanding this was deemed acceptable because OSX already has a stable Application Binary Interface (ABI). However, looking through some of these calls, I'm not completely sure this is true. For example https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/OSX/Interop.CoreFoundation.cs#L72-L77 has : ``` C# private static extern SafeCreateHandle CFArrayCreate( IntPtr allocator, [MarshalAs(UnmanagedType.LPArray)] IntPtr[] values, ulong numValues, IntPtr callbacks); ``` Which on my Mac appears to be defined as: ``` C++ CFArrayRef CFArrayCreate( CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallbacks *callbacks); ``` And where `CFIndex` is defined as: ``` C++ #if __LLP64__ typedef signed long long CFIndex; #else typedef signed long CFIndex; #endif ``` Are we guaranteed that CFIndex will always be an 8-byte integer? What if we were on a 32-bit OSX? We should analyze all our non-shimmed native calls on OSX and be 100% sure we will always have ABI stability, no matter the OSX system we are running on. +4801 area-System.Net GetAsync_ResponseHeadersRead_ReadFromEachIterativelyDoesntDeadlock failed on CentOS in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx_linux_centos71_debug_tst/166/console ``` 07:38:26 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ResponseHeadersRead_ReadFromEachIterativelyDoesntDeadlock [FAIL] 07:38:26 System.Threading.Tasks.TaskCanceledException : A task was canceled. 07:38:26 Stack Trace: 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 07:38:27 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__94.MoveNext() 07:38:27 --- End of stack trace from previous location where exception was thrown --- 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:38:27 --- End of stack trace from previous location where exception was thrown --- 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:38:27 --- End of stack trace from previous location where exception was thrown --- 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:38:27 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +4802 area-System.Data Windows 8 support for System.Data.Common According to [this](https://github.com/aspnet/Microsoft.Data.Sqlite/issues/185#issuecomment-161726607) issue, `System.Data.Common` needs to support Windows 8 before `Microsoft.Data.Sqlite` can. Is it possible to add Windows 8 support to that package? cc @bricelam +4803 area-Infrastructure Enable Clang sanitizers for debug builds As part of #3501 enable the Clang sanitizers for corefx native code. It has already been enabled for coreclr native code. +4804 area-Meta Fix CLR startup issues provided by Clang sanitizer As part of #3501, attempt fix the clr startup issues so that test-specific sanitizer output can be determined and evaluated. Currently, when the sanitizers are enabled, several messages from the undefined behavior sanitizer are displayed when any program is run: /src/inc/clrhost.h:137:30: runtime error: call to function CExecutionEngine::GetTlsData() through pointer to incorrect function type 'void ()()' /src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp:336:22: runtime error: call to function coreclr_initialize through pointer to incorrect function type 'int ()(const char *, const char *, int, const char *, const char *, void *, unsigned int *)' /src/dlls/mscoree/unixinterface.cpp:187: note: coreclr_initialize defined here /src/inc/clrhost.h:137:30: runtime error: call to function ClrFlsGetBlockGeneric() through pointer to incorrect function type 'void *()()' /src/utilcode/clrhost_nodependencies.cpp:768: note: ClrFlsGetBlockGeneric() defined here /src/inc/clrhost.h:184:30: runtime error: call to function ClrFlsGetBlockGeneric() through pointer to incorrect function type 'void *()()' /src/vm/object.cpp:2633:5: runtime error: member call on null pointer of type 'Object' /src/vm/object.cpp:2712:5: runtime error: member call on null pointer of type 'Object' /src/gc/handletablecore.cpp:1987:42: runtime error: shift exponent 64 is too large for 32-bit type 'unsigned int' /src/debug/ee/debugger.cpp:2351:24: runtime error: reference binding to null pointer of type 'const InteropSafe' /src/debug/ee/controller.cpp:894:26: runtime error: reference binding to null pointer of type 'const InteropSafe' /src/inc/random.h:108:30: runtime error: signed integer overflow: 1855390761 - -1417746578 cannot be represented in type 'int' /src/gc/gc.cpp:9922:14: runtime error: member access within null pointer of type 'WKS::gc_heap' /src/inc/sstring.inl:2090:20: runtime error: left shift of negative value -1 /src/pal/src/map/map.cpp:1588:35: runtime error: member access within null pointer of type 'MAPPED_VIEW_LIST' (aka 'CorUnix::_MVL') There is also an address sanitizer error (these errors stop processing so it is blocking) ==51212==ERROR: AddressSanitizer: stack-buffer-underflow on address 0x7ffd252450df at pc 0x7fe3711c2a68 bp 0x7ffd25244f70 sp 0x7ffd25244f68 READ of size 1 at 0x7ffd252450df thread T0 #0 0x7fe3711c2a67 in CMiniMdBase::UsesAllocatedMemory(CMiniColDef*) /src/md/runtime/metamodel.cpp:1240:5 +4805 area-System.Runtime Add/Expose String.EndsWith(char) "Moved bug from https://github.com/dotnet/coreclr/issues/1463 to proper repo > ## davidfowl commented on Aug 31 > > So we don't have to rewrite it over and over :smile:. Seems like its already there just made internal for > some reason: > > https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/String.cs#L2210 > > People end up writing code like this: > > https://github.com/aspnet/dnx/blob/dev/ext/compiler/preprocess/Internalization.cs#L100 > > and this > > https://github.com/aspnet/dnx/blob/dev/src/Microsoft.Dnx.Runtime/NuGet/Utility/PathUtility.cs#L45 > ## bbowyersmyth commented on Sep 2 > > I had the same thought a while back and discovered it would be a breaking change for an edge case in VB. > > Against the current framework the following is valid VB: > Dim find As Char = ""a""c > Dim result = ""abc"".StartsWith(find) > > The compiler wraps find with a call to a string conversion and all is good. If EndsWith(char) was > made public and the code recompiled it would switch from using the CurrentCulture based EndsWith(string) to the Ordinal based EndsWith(char) . > > Whether any of the offending characters or the above scenario is deemed important I would love to hear. Especially a StartsWith(char) with direct access to String.m_firstChar > ## AlexGhiondea commented on Sep 8 > > It seems like the VB compiler is trying to help by picking an overload that will work. > > @VSadov -- do you know what the VB compile would do if we were to introduce the bool EndsWith(char value) overload on string? > > @davidfowl can you create an issue in the CoreFx repo (following the API review process)? " +4807 area-System.Security System.Security.Principal.Windows throws exceptions of type Exception Several code paths in System.Security.Principal.Windows throw a System.Exception, which is generally not a good practice. These are all code paths which threw a System.SystemException in desktop, which does not exist in .NET Core. They should probably be updated to Win32Exception since they all relate to Win32 failures. At the very least, they should be changed to a more specific exception type than 'Exception'. The APIs that throw a plain Exception are: - SecurityIdentifier.ctor(string) - SecurityIdentifier.ctor(WellKnownSidType, SecurityIdentifier) - SecurityIdentifier.GetAccountDomainSid - SecurityIdentifier.TranslateToNTAccounts - Win32.LsaOpenPolicy +4809 area-System.Reflection Add SignatureDecoder to System.Reflection.Metadata See #262 for API review and design information. For those who followed the evolution in the dev branch, #4769 shows just the last round of design changes. cc @tmat +4812 area-System.Reflection Bump dev/metadata version to 1.3 Master will move to 1.2 and acquire SignatureDecoder and MetadataWriter dev/metadata, still has CustomAttributeDecoder and TypeNameParser which need further refactoring and testing, so bump dev version to 1.3. +4813 area-System.Security Add DSA to CoreFX When added there should be adequate support for implementation hiding, and it should support FIPS 186-3's addition of SHA-2 algorithms. +4816 area-System.Net Fix pipelining in System.Net.Http on CentOS My previous change to add HTTP/2 multiplexing broke some System.Net.Http functionality on CentOS, or more specifically when using an old version of libcurl that's in our CentOS 7.1 image. That version of libcurl is from before HTTP/2 multiplexing was introduced. When multiplexing was added to libcurl, one of the existing libcurl functions (curl_multi_setopt) was changed such that if you were to pass in the HTTP/2 multiplexing option (which didn't exist at the time), due to the way the method was implemented, you'd end up opting in to HTTP 1.1 pipelining rather than having the option just be ignored. This is not the desired behavior and ends up breaking behaviors where we issue multiple HTTP 1.1 calls on the same multi handle concurrently. This fix exposes from the native shim whether we're using a version of libcurl that supports HTTP/2 and that knows about the multiplexing option, and only configures the multi handle for multiplexing in that case. Fixes #4801 cc: @kapilash, @ellismg, @eerhardt +4817 area-System.Net SendToRecvFrom_Single_Datagram_UDP_IPv6 failed in CI on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/3/console ``` 16:32:02 System.Net.Sockets.Tests.SendReceive.SendToRecvFrom_Single_Datagram_UDP_IPv6 [FAIL] 16:32:02 Assert.True() Failure 16:32:02 Expected: True 16:32:02 Actual: False 16:32:02 Stack Trace: 16:32:02 at System.Net.Sockets.Tests.SendReceive.SendToRecvFrom_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) ``` +4820 area-System.Security VerifyKnownTransform_CBC128_NoPadding failed on OS X in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/11/console ``` 20:30:37 System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding [FAIL] 20:30:37 Assert.Equal() Failure 20:30:37 Expected: Byte[] [216, 245, 50, 83, 130, ...] 20:30:37 Actual: Byte[] [0, 0, 0, 0, 0, ...] 20:30:37 Stack Trace: 20:30:38 at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) ``` +4821 area-System.Net Disabling intermittently failing tests (timeout) from System.Net.Security Disabling two of the tests to investigate the intermittent authentication timeouts. @stephentoub @bartonjs @davidsh PTAL +4822 area-System.Net SslStream: Authentication failed because the remote party has closed the transport stream @SidharthNabar Hey ... ran into an issue following the updates to `System.Net.Sockets`. Under `4.0.10-beta-*`, I was using this to hit up a GoDaddy (yuck!) mail server ... ``` using (var client = new TcpClient(server, port)) { using (var stream = new SslStream(client.GetStream(), false)) { stream.AuthenticateAsClient(server); ... USE THE STREAM ... ``` ... after the [revision](https://github.com/dotnet/corefx/issues/3913) to `System.Net.Sockets` using `4.1.0-beta-*`, I converted that over to ... ``` using (var client = new TcpClient()) { await client.ConnectAsync(server, port); using (var stream = new SslStream(client.GetStream(), true)) { stream.AuthenticateAsClient(server); ... USE THE STREAM ... ``` ... it runs locally (note that I had to change the `leaveInnerStreamOpen` to `true` to even get it to run on IIS Express), but it throws on the server ... ``` System.IO.IOException: Authentication failed because the remote party has closed the transport stream. at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost) at MyApp.ContactController.d__5.MoveNext() ``` If I immediately re-submit the form, it throws slightly differently ... ``` System.IO.IOException: Authentication failed because the remote party has closed the transport stream. at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost) at MyApp.ContactController.d__5.MoveNext() ``` Am I coding that change correctly? +4823 area-System.Security Seg fault in X509Certificates.Tests on Ubuntu in CI Unfortunately not much to go on in the log: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_release_tst_prtest/14/console ``` 23:38:13 Discovering: System.Security.Cryptography.X509Certificates.Tests 23:38:13 Discovering: System.Globalization.Tests 23:38:13 xUnit.net console test runner (64-bit .NET Core) 23:38:13 Copyright (C) 2014 Outercurve Foundation. 23:38:13 23:38:13 xUnit.net console test runner (64-bit .NET Core) 23:38:13 Copyright (C) 2014 Outercurve Foundation. 23:38:13 23:38:13 xUnit.net console test runner (64-bit .NET Core) 23:38:13 Copyright (C) 2014 Outercurve Foundation. 23:38:13 23:38:14 Discovering: System.Security.Cryptography.OpenSsl.Tests 23:38:14 Discovering: System.Resources.ResourceManager.Tests 23:38:14 Discovered: System.Security.Cryptography.X509Certificates.Tests 23:38:14 Discovering: System.Diagnostics.TraceSource.Tests 23:38:14 Starting: System.Security.Cryptography.X509Certificates.Tests 23:38:14 Discovered: System.Resources.ResourceManager.Tests 23:38:15 Discovered: System.Diagnostics.TraceSource.Tests 23:38:15 Discovered: System.Security.Cryptography.OpenSsl.Tests 23:38:15 Starting: System.Resources.ResourceManager.Tests 23:38:15 Discovered: System.Globalization.Tests 23:38:15 Starting: System.Diagnostics.TraceSource.Tests 23:38:15 Starting: System.Security.Cryptography.OpenSsl.Tests 23:38:15 Starting: System.Globalization.Tests 23:38:16 Finished: System.Resources.ResourceManager.Tests 23:38:16 23:38:16 === TEST EXECUTION SUMMARY === 23:38:16 terminate called after throwing an instance of 'PAL_SEHException' 23:38:16 System.Resources.ResourceManager.Tests Total: 22, Errors: 0, Failed: 0, Skipped: 0, Time: 1.036s 23:38:16 ./run-test.sh: line 130: 21770 Aborted (core dumped) ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 23:38:16 One or more tests failed while running tests from 'System.Security.Cryptography.X509Certificates.Tests'. Exit code 134. ``` +4824 area-System.Net NameResolutionPalTests.GetHostByName_HostName failed on OS X in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/10/console ``` 20:10:25 System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName [FAIL] 20:10:25 System.Net.Internals.InternalSocketException : Unknown error: 11001 20:10:25 Stack Trace: 20:10:25 at System.Net.NameResolutionPal.GetHostByName(String hostName) 20:10:25 at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName() ``` +4825 area-System.IO coreCLR no option for passing filepath as string inside constructors "I noticed there are several constructors for IO tasks that do not include the option for passing a string in .NET Core. ``` csharp //old way XmlDocument xdoc xdoc.Load(@""file\path""); //new way XmlDocument xdoc xdoc.Load(new FileStream(@""file\path"", FileMode.Open); //old string file = @""file\path""; var sw = new StreamWriter(file, false, new UTF8Encoding(false)) // new string file = @""file\path""; var sw = new StreamWriter(new FileStream(file, FileMode.OpenOrCreate), new UTF8Encoding(false)) ``` What is the reason behind this and is there a better way than using the FileStream constructor to pass the filepath as string? " +4829 area-System.Net AcceptAsyncV4BoundToAnyV6_Success failed on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/21/console ``` 09:22:19 System.Net.Sockets.Tests.DualMode.AcceptAsyncV4BoundToAnyV6_Success [FAIL] 09:22:19 Assert.Equal() Failure 09:22:19 Expected: ::ffff:127.0.0.1 09:22:19 Actual: ::127.0.0.1 09:22:19 Stack Trace: 09:22:19 at System.Net.Sockets.Tests.DualMode.DualModeConnect_AcceptAsync_Helper(IPAddress listenOn, IPAddress connectTo) 09:22:19 at System.Net.Sockets.Tests.DualMode.AcceptAsyncV4BoundToAnyV6_Success() ``` +4833 area-System.Numerics Intermittent Matrix4x4DecomposeTest01 failed in CI on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/19/console ``` 08:54:36 System.Numerics.Tests.Matrix4x4Tests.Matrix4x4DecomposeTest01 [FAIL] 08:54:36 Matrix4x4.Decompose did not return expected value. Expected:<10, 20, 30> actual:<10, 20.19675, 30>. 08:54:36 Expected: True 08:54:36 Actual: False 08:54:36 Stack Trace: 08:54:36 at System.Numerics.Tests.Matrix4x4Tests.DecomposeTest(Single yaw, Single pitch, Single roll, Vector3 expectedTranslation, Vector3 expectedScales) 08:54:36 at System.Numerics.Tests.Matrix4x4Tests.Matrix4x4DecomposeTest01() ``` +4834 area-System.Threading Allow to configure IO awaited Tasks to complete on the IOCP worker thread. "For background info see @stephentoub excellent post: http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx Key relevant quote: ""If the context comes back as null, then the continuation could run “anywhere”. I put anywhere in quotes because obviously the continuation can’t run “anywhere,” but logically you can think of it like that… it’ll either end up running on the same thread that completed the awaited task, or it’ll end up running in the ThreadPool."" What I noticed in .NET FW 4.6 is that HttpListener completions _sometimes_ get posted to the ThreadPool _Work Queue_ instead of being directly completed on the IOCP worker thread itself. The way I manage to avoid this unnecessarily context switch is by ""overriding"" the Task code policy on how to dispatch the completion: var currentContext = SynchronizationContext.Current; try { SynchronizationContext.SetSynchronizationContext(new NoOpSynchronizationContext()); ``` await listener.GetContextAsync() ``` } finally { SynchronizationContext.SetSynchronizationContext(currentContext); } public class NoOpSynchronizationContext : SynchronizationContext { public override void Post(SendOrPostCallback d, object state) { d(state); } } Needless to say this is boilerplate code one would want to avoid when awaiting tasks of libs using IOCP. " +4836 area-System.Net System.Net.Sockets.APMServer.Tests has a test that hangs, causes build timeout on OSX. ``` System.Net.Sockets.Tests.SendReceive.SendRecvAPM_Single_Stream_TCP_IPv4 [FAIL] 15:49:15 Assert.True() Failure 15:49:15 Expected: True 15:49:15 Actual: False 15:49:15 Stack Trace: 15:49:16 at System.Net.Sockets.Tests.SendReceive.SendRecvAPM_Stream_TCP(IPAddress listenAt, Boolean useMultipleBuffers) 15:49:16 at System.Net.Sockets.Tests.SendReceive.SendRecvAPM_Single_Stream_TCP_IPv4() 17:34:43 Build timed out (after 120 minutes). Marking the build as aborted. 17:34:44 ./run-test.sh: line 130: 9296 Terminated: 15 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 17:34:44 One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 143. ``` +4839 area-System.IO Determine the correct notification smoothing for all FileSystemWatchers Currently, each system's FileSystemWatcher generates different notifications based on different non-trivial events. For instance, OS X and Ubuntu generate Changed events on the root watch folder while Windows does not; or, on OS X, unlink and link (aka a FileSystem Move) causes a metadata change on the parent folder. Smoothing out some of the above scenarios (aka making them consistent across each platform) can get quite complicated due to the underlying non-deterministic basis of each FSW API. None of the supported OS kernels (Linux Kernel, Darwin, or NT) make a guarantee that callers will receive all notifications or notifications in a timely manor, due to internal buffers and system load. Theoretically, each underlying File System **could** also generate events differently (ie ext3 to ext4); it may not, but that would require more intensive testing. Consumers of the FSW, anecdotally from my past experience, will usually have state machines to determine what actually changed based on certain notifications or notification patterns. Trying to fit each platforms nuances into one single pattern would require a quite intricate state machine to handle some of the edge case situations that can occur, such as a delay between the unlink and the re-link notifications due to system load or a full buffer; therefore, I'd propose that we allow the FSW classes to be best-effort and acknowledge that minor differences will happen cross-platform (for example, an extra Change notification on OS X due to unlink and re-link behavior) as long as the differences do not cause dramatic functional differences to consumers. The action for this proposal would be changing the tests to be a little less strict about what is an expected and not-expected notification; for instance, allowing metadata change notifications to be sent to parent items when children items generate non-file-data changes. @stephentoub, thoughts? +4845 area-System.Security Symmetric encryption with TripleDES ... not implemented? "I get a ""not implemented"" exception if I try to use TripleDES. What's the preferred ""simple"" and ""not so secure but easy and fast"" way to symmetrically encrypt/decrypt a string with a key in a dnxcore50 project? ![capture](https://cloud.githubusercontent.com/assets/1622880/11606629/e7c81784-9adc-11e5-9d68-4978bedeac85.PNG) " +4851 area-System.Net System.Net.Primitives tests Added tests, especially for CookieContainer/Parser/Tokenizer/Collection Removed unecessary code +4854 area-System.Net AcceptAsyncV4BoundToSpecificV4_Success failed on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/55/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 ``` 17:00:48 System.Net.Sockets.Tests.DualMode.AcceptAsyncV4BoundToSpecificV4_Success [FAIL] 17:00:48 Assert.Equal() Failure 17:00:48 Expected: ::ffff:127.0.0.1 17:00:48 Actual: ::127.0.0.1 17:00:48 Stack Trace: 17:00:48 at System.Net.Sockets.Tests.DualMode.DualModeConnect_AcceptAsync_Helper(IPAddress listenOn, IPAddress connectTo) ``` +4856 area-System.IO WatcherDoesntFollowSymLinkToFolder failed on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/50/console ``` 11:48:22 CreatedTests.FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFolder [FAIL] 11:48:22 Didn't observe a symlink created event within 30000ms 11:48:22 Expected: True 11:48:22 Actual: False 11:48:22 Stack Trace: 11:48:22 at Utility.ExpectEvent(WaitHandle eventOccurred, String eventName, Int32 timeout) 11:48:22 at CreatedTests.FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFolder() ``` +4864 area-System.Diagnostics Vaildation of ETW events need TraceEvent EventSource needs TraceEvent to validate ETW events in the tests. +4865 area-System.Diagnostics EventListener tests for Events are not enabled because we haven't shipped that API yet We are in the process of putting a new API to consume EventSource events through EventListeners without having to subclass an EventListener. The tests for these changes are disabled until the feature ships. +4866 area-System.Security CURDLE and Cryptographic algorithm APIs / selection One of the major problem areas in .NET at present is the organization and algorithm selection for cryptography. In particular: - .NET 4.6 does not supply many of the preferred algorithms for IETF protocols - The organization of the APIs is haphazard and inconsistent. I know that there are several comments on this and an expectation that 'something' will be done. I would like to make some suggestions. First, for algorithm selection, note that IETF just started a call for comments on a new working group to choose a consistent set of algorithms for use in IETF protocols. So the idea is that S/MIME, TLS, SSH, OpenPGP, etc. all use the same set of algorithms. This is not a completely open ended process either as pretty much anyone involved in that process can tell you right now that you are not going to need anything outside: Encryption/Integrity: AES-CCM, AES-GSCM, AES-CBC in 128 and 256 bit strengths ChaCha20 and Poly1305 Digest: SHA2 and SHA3 Public Key: Key agreement (ECDH) and digital signatures (EdDSA) with Curve25519 and Curve448 as defined by CFRG RSA signature and encryption at 1024 and 2048 bit key strengths. It will take at least 18 months to get documents out that describe in detail how these are applied in all the application protocols. But that is the set of algorithms we are trying to establish as standard across the board. On the API side, there is a lot of inconsistency right now and the current classes are really not well suited for use with the encrypt-plus-authenticate modes we prefer in modern protocol design. The classes for encryption, authentication and public key ops expose different functionality at different layers in the inheritance hierarchy. They don't expose the identification info we need for interface with certificates, or S/MIME, JOSE, etc. So what I have done for my own code is to develop a set of classes that essentially wrap the .NET classes which in turn wrap either the Windows classes or OpenSSL. I also have a much simpler certificate parser/issuer library that is in native C#. Both of those will be released as open source under an MIT license in the next few days. Right now my project is built in .NET 4.6 because it is what existed. But the aim all along was to move to .NET Core, that was part of the reason for choosing .NET in the first place. +4867 area-System.Diagnostics EventSource dictionary events are broken on CoreCLR "Writing a dictionary to an EventSource like the following is broken. `EventSource logger = new EventSource();` `logger.Write(""EventWithStringDict_C"", new { myDict = dict, s = ""end"" });` This fails because Activator.CreateInstance fails because it can't find the constructor for one of the types we use in TraceLogging to parse the dictionary. The type is `KeyValuePairTypeInfo`. " +4868 area-System.Net Remove sync APIs from SslStream and NegotiateStream As per the System.Net.\* API review dotnet/apireviews#21 removing the sync versions of the AuthenticateAsClient, AuthenticateAsServer methods from the SslStream and NegotiateStream classes. Part of #4732 +4870 area-System.Net Adding HTTP 2.0 support to HttpClient It appears as though UWP has a new HttpClient in the Windows.Web.Http namespace which has HTTP 2.0 support: https://msdn.microsoft.com/en-us/library/windows/apps/mt187345.aspx Is porting this work to the coreclr HttpClient in the roadmap? +4871 area-System.Diagnostics EventSource tests fail on non-windows platforms The majority of the EventSource tests fail on non-windows platforms. Need to investigate further. +4872 area-System.Diagnostics Add Tests for Dataflow ETW events in EventSource The failing tests are tracked by issue #1000. It needs to be verified that this issue is fixed and tests added. +4873 area-System.Diagnostics Add tests for null/empty array issue in EventSource Add tests for https://github.com/dotnet/coreclr/pull/1988. +4874 area-System.IO Removed Managed Inflater/Deflater code in System.IO.Compression Now that we always use the zlib implementations for inflation/deflation, the managed ones may be removed. resolves #4451 @eerhardt @stephentoub @tarekgh +4879 area-System.IO Modify System.IO.Compression.DeflateStream.Flush to actually flush. The existing implementation of Flush and FlushAsync for System.IO.Compression.DeflateStream doesn't actually flush - it only checks that the stream isn't disposed. This commit modifies Flush to Flush and also adds unit tests around the new functionality. Some more detailed discussion is available at #3669 @stephentoub @redknightlois @ericstj +4880 area-System.Net Reconsider Socket Timeout Api Timeout settings for Socket Send/Recv operations only work for blocking API's. It's too easy to shoot yourself in the foot thinking these setting will come into effect for non-blocking network operations, especially nowadays given the simplicity of issuing async calls using async/await. I suggest either: - Implement timeout support for async send/recv operations into the Socket class (Preferred) - Why windows doesn't support timeouts for non-blocking socket calls is quite a mystery. - Remove blocking timeout properties (force explicit use of socket options) For reference, all these properties are no-up with respect to async calls Socket Class: ReceiveTimeout SendTimeout NetworkStream: CanTimeout (fixed to True) ReadTimeout WriteTimeout TcpClient: ReceiveTimeout SendTimeout +4882 area-System.Numerics Matrix4x4CreateFromYawPitchRollTest2 failed on OS X in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/79/console ``` 07:00:32 System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateFromYawPitchRollTest2 [FAIL] 07:00:32 Yaw:-265 Pitch:155 Roll:-405 07:00:32 Expected: True 07:00:32 Actual: False 07:00:32 Stack Trace: 07:00:33 at System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateFromYawPitchRollTest2() ``` +4883 area-Infrastructure Resource editing stopped working in VS on corefx projects Attempting to open a Strings.resx now fails with an error like this: ![capture](https://cloud.githubusercontent.com/assets/2642209/11661432/e1eb2c5a-9d9f-11e5-80f6-83f2bf18254e.PNG) Seems to have started happening in the last week or two. +4884 area-Infrastructure IntelliSense/coloring/etc. broken in corefx projects Within the last few weeks, something has changed to break IntelliSense, coloring, etc. within corefx projects. For example, open a test project: [Fact] attributes aren't colored, no IntelliSense is provided for the Assert class, etc. And IntelliSense within src assemblies appears to be pulling from the full framework rather than from the actually referenced corefx assemblies. +4887 area-System.Net Allow test infrastructure to work for specialized Windows 10 tests Some Windows CoreFx features like System.Net.Sockets socket option SocketOptionName.ReuseUnicastPort require a specific version of Windows (10) and customized networking configuration using Powershell scripts. And changing these settings requires a machine reboot. This is difficult to test in the current CI environment. Need to find a way to create 'disposable' test machines/VM's with these customized settings so that these kinds of specific tests can be automated. +4888 area-System.Net Add System.Net.Sockets, SocketOptionName.ReuseUnicastPort As per the System.Net.\* API review dotnet/apireviews#21 adding back the SocketOptionName.ReuseUnicastPort enum value. Also, reserving SocketFlags.MaxIOVectorLength=16 enum value to prevent future conflicts. Part of #4732 +4890 area-System.Net AcceptV6BoundToAnyV6_Success failed on OS X in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/66/console ``` 12:50:37 System.Net.Sockets.Tests.DualMode.AcceptV6BoundToAnyV6_Success [FAIL] 12:50:37 System.ArgumentException : The supplied System.Net.Internals.SocketAddress is an invalid size for the System.Net.IPEndPoint end point. 12:50:37 Parameter name: socketAddress 12:50:37 Stack Trace: 12:50:37 at System.Net.Sockets.IPEndPointExtensions.Create(EndPoint thisObj, SocketAddress socketAddress) 12:50:37 at System.Net.Sockets.Socket.Accept() 12:50:37 at System.Net.Sockets.Tests.DualMode.Accept_Helper(IPAddress listenOn, IPAddress connectTo) ``` +4891 area-System.IO "GZipStream always writes a header with the OS set to ""Windows"" even on Unix" "`GZipStream` [always](https://github.com/dotnet/corefx/blob/085865e6f375d11dd1d5dd815b251356b0f88d2b/src/System.IO.Compression/src/System/IO/Compression/GZipUtils.cs#L43) writes a header with the OS member set to ""Windows"" (0). When running on Unix, should it be set to ""Unix"" (3)? Or maybe even ""unknown"" (255) for all OSes? From the [RFC](http://www.zlib.org/rfc-gzip.html#header-trailer): ``` OS (Operating System) This identifies the type of file system on which compression took place. This may be useful in determining end-of-line convention for text files. The currently defined values are as follows: 0 - FAT filesystem (MS-DOS, OS/2, NT/Win32) 1 - Amiga 2 - VMS (or OpenVMS) 3 - Unix 4 - VM/CMS 5 - Atari TOS 6 - HPFS filesystem (OS/2, NT) 7 - Macintosh 8 - Z-System 9 - CP/M 10 - TOPS-20 11 - NTFS filesystem (NT) 12 - QDOS 13 - Acorn RISCOS 255 - unknown ``` Now that the managed inflater/deflater implementation has been removed in #4874, perhaps it'd be a good time to refactor the gzip implementation to have zlib handle it entirely (zlib can be configured to write the gzip header/footer itself). This should take care of the header OS issue (let zlib handle it) and would reduce the number of lines of code that needs to be maintained in CoreFX, allow zlib to handle the crc32 calculation on its own, and avoid unnecessary allocations associated with having to create instances of `GZipFormatter` and intermediate `byte[]` buffers for the header/footer. cc: @ianhays, @stephentoub " +4895 area-System.IO Remove custom header writing in System.IO.Compression in favor of Zlib Now that we removed the managed implementations for compression, we should consider removing the manual header writing/reading in favor of calling the zlib header setter/getter. Diverged from #4891 where the discussion started. +4897 area-System.Net Change System.Net.Sockets, SocketOptionName.ReuseUnicastPort behavior on *NIX See related PR #4888. Change *NIX to throw SocketException (instead of PlatformNotSupportedException) when doing a Set/Get SocketOption with SocketOptionName.ReuseUnicastPort. +4899 area-System.Net System.Net.Requests.Tests seg faulting on shutdown on Unix Most of our test runs recently started failing on Unix when the System.Net.Requests.Tests are shutting down. It appears to be due to an interaction between https://github.com/dotnet/coreclr/pull/2207 and something in our System.Net.Http implementation related to multi and easy handle cleanup. @kouvel and I are investigating. +4900 area-System.Net Implement SocketAsyncEventArgs FILE_SKIP_COMPLETION_PORT_ON_SUCCESS - TODO Tracking Issue While there is a TODO comment for this in SocketAsyncEventArgs, I think this is important enough to be tracked as an issue. +4906 area-System.Net Support HttpRequestMessage.Version in WinHttpHandler WinHttpHandler was currently ignoring the `HttpRequestMessage.Version` property and was always sending out requests using 'HTTP/1.1' which is the default for winhttp. This fix now will look at the request message `Version` property and send out the request using either 1.0 or 1.1. If neither of these versions are specified, then the request is sent out using the default winhttp version (which is currently 1.1 as of Windows 10). Note: The .NET Framework (Desktop) will throw an exception if neither 1.0 nor 1.1 version is specified. Currently CoreFx including NETNative, WinHttpHandler and CurlHandler will simply use a default instead of throwing. While this is different behavior than Desktop, it is more desirable in the long run. There is a separate issue #4870 to add HTTP/2.0 support to WinHttpHandler. Fixes #4754 +4907 area-System.Globalization CompareOptions.IgnoreSymbols only ignores punctuation on Unix, but not other symbols When using CompareOptions.IgnoreSymbols for string comparison on Unix, we are using the ICU option ALTERNATE_HANDLING = SHIFTED. This effectively ignores any punctuation characters: ! - . , etc. However by default, ICU only includes punctuation characters, and not other symbols, like currency and math symbols. We need to ignore these characters on Unix as well when IgnoreSymbols is set to true. +4909 area-System.Console Share GetCharset() for Unix We need to use this code as well in SQL Client for Unix. In Windows we use Windows API to get windows locale. I will be reusable if this code can be shared in CurrentCulture.CharSet() (CultureInfo). +4910 area-System.Net Optimize error handling around chain.Build in WinHttpHandler This was a TODO item from #2165 suggested by @bartonjs. The X509CertificateChain.Build() method returns a boolean indicating if there were errors building the chain. It's more performant to check that instead of inspecting the individual fields in the chain. +4913 area-System.Net Fix two issues in SelectAndPollTests "1. The timeout value used in the tests was written assuming the unit was milliseconds, but microseconds is actually used. This meant we were passing in a timeout of 5 milliseconds instead of 5 seconds. Changed to use the right value. 2. The SelectRead_Multiple_Success test attempts to use Select as a form of ""when all"", passing in two sockets and expecting that it'll find both have data available. But the data is available asynchronously from the send, and Select returns when at least one of the sockets is readable. As a result, there's a race condition that results in the test failing sporadically: on my machine, it fails ~15 out of every 1000 runs. I've fixed the test by looping until either the timeout is reached or we find both sockets available, whichever comes first. Fixes #4686 cc: @pgavlin, @CIPop, @davidsh " +4915 area-System.Net Remove dead code from System.Runtime Remove unused private fields, methods, nested types and resource strings. +4916 area-System.IO FileSystemWatcher_Changed_FileInNestedDirectory failed in CI on OpenSUSE http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/opensuse13.2_debug_tst_prtest/126/console ``` 15:21:12 ChangedTests.FileSystemWatcher_Changed_FileInNestedDirectory [FAIL] 15:21:12 Didn't observe a nested created event within 30000ms 15:21:12 Expected: True 15:21:12 Actual: False 15:21:12 Stack Trace: 15:21:13 at Utility.ExpectEvent(WaitHandle eventOccurred, String eventName, Int32 timeout) 15:21:13 at Utility.TestNestedDirectoriesHelper(WatcherChangeTypes change, Action`2 action, NotifyFilters changeFilers) 15:21:13 at ChangedTests.FileSystemWatcher_Changed_FileInNestedDirectory() ``` +4917 area-System.IO Remove custom header writers in System.IO.Compression Now that we removed the managed implementations for compression we can remove the manual header writing/reading in favor of calling the zlib header setter/getter. I also cleaned up the constructors a bit and removed some now dead code. resolves #4895. Also affects #4891: this PR uses zlib for gzip header generation without calling DeflateSetHeader. This means that the OS value in the Gzip header will be set based on the platform zlib was compiled to. This PR will therefore need to be updated if we decide to go a different route than using the default behavior. +4919 area-Infrastructure VS: Create tool to generate VS .sln from .builds files Continuing #4901 @weshaggard I suggest keeping this open just for a little bit longer. > We want to keep libraries isolated so they can ship independent of each other and in general we want the libraries to depend upon the lowest version of the package that contains the necessary dependencies, and not have project references to the live versions of their dependent libraries. This goal is completely orthogonal to the pain points I listed. Inter-project dependencies are a fact and attempting to solve the granularity problem (Packages or not) by trading in developer productivity is simply a mistake, and if you insist to compare apples to oranges than aiding to code comprehension is by far more important to correctness. Technically there is nothing that prohibits someone from directly referencing any other project (csprog) . (something which is already being done between existing projects in the corefx repo). What constitutes the right level of package isolation can only be determined by peer code-review not the build system. Suggesting that independent build scripts solve the problem is a misunderstanding of the problem because build scripts are also modified to create dependencies just in a less visible way. > For cases were folks have a desire to run tests against the live versions of all the dependencies built in the repo people can pass /p:TestWithLocalLibraries=true when building test projects Building unit tests is a minor problem and has nothing to do with this issue. The fundamental problem is Navigating the source (Goto To Definition) and Debugging (Step Into) _across different implementation projects and test projects using Visual Studio_ again, aiding to code comprehension should be a key requirement. (WinDbg - Forget it!) We need to automatically generate a solution that references projects (csproj) that live in parallel to the independent existing project csproj. What gets into final Nuget packages or specified in the project.json is a completely different issue. Failing to address this is a pushback to potential contributing (a.k.a volunteering) efforts - a financial lose for the project. +4925 area-System.Security Add PackageTargetRuntime to System.Security.Principal.Windows to name supported OSes Update the .csproj in System.Security.Principal.Windows to specify for only the runtimes it supports. Right now, the package believes a Linux implementation exists but inserts the Windows implementation, causing consumers to break at runtime if they attempt to use it. +4927 area-System.Net Specifying SSL3.0 throws an exception when trying to authenticate with SslStream In PR #4483 a change was made which causes an exception to be thrown when requesting SSL3.0. This is the wrong behavior for the following reasons: - Existing code written for the desktop may fail with an exception - There's no compile time error when writing code which is guaranteed to fail at runtime - An exception can be thrown even when SSL3.0 wouldn't be used even though specified - Inconsistent behavior with other mechanisms to disable SSL3.0 **Existing code written for the desktop may fail with an exception** Any code written for the desktop which specifies SSL3.0 will now throw an exception, but the developer may not discover this until after code has been released. If a third party library developer is able to port their code to core clr with minimal changes, they may not test every code path in their library on core clr. This is becoming more and more likely now that we support Linux and OSX as many developers won't have the capability to verify their code on those platforms. They should be able to expect that as long as the api surface is available, that their code will behave the same on all platforms that support the api. **There's no compile time error when writing code which is guaranteed to fail at runtime** If I create an SslStream and try to authenticate to a remote host specifying SSL3 | TLS | TLS11 | TLS12 in a call to AuthenticateAsClient, this method call is now guaranteed to fail at runtime 100% of the time. That code is deemed invalid and yet there's no compile time warning or error. This is a bad developer experience. **An exception can be thrown even when SSL3.0 wouldn't be used even though specified** On desktop and with the prior behavior, if I pass the list SSL3 | TLS | TLS11 | TLS12 to SslStream.AuthenticateAsXXXXX at both ends of a stream I'm attempting to secure, SSL3 won't get negotiated as a higher protocol will attempt to be established. This change causes an application/library which wouldn't have resulted in an insecure connection being negotiated now having a runtime failure despite still being secure. **Inconsistent behavior with other mechanisms to disable SSL3.0** Other mechanisms where SSL3.0 can't be used are the protocol being disabled at the OS level (registry change in Windows for example), or the remote end not supporting SSL3.0. In either of these cases, specifying SSL3.0 can't result in SSL3.0 being used as it's been made unavailable, and as long as other protocols have been specified the connection will be negotiated without any problem. If SSL3.0 was the only protocol specified, then an exception would be thrown stating that a secure connection wasn't able to be negotiated. Throwing a different exception because SSL3.0 has been disabled via a different mechanism (hard coded in .NET networking code) is an inconsistent response to the same basic reason (support for the protocol has been disabled for security reasons). Specifying the protocol to use is a negotiation and there's no guarantee that any one protocol that was specified can or will be used as there are other dependent factors (OS support, remote party protocol support etc). If SSL3.0 (or 2.0) is specified, simply removing it from the list passed down to lower layers (such as SCHANNEL) without any error or exception is compatible with the purpose of specifying which protocols to use in that it's a negotiation and there's no guarantee that everyone agrees to the same list. If only SSL3.0 or SSL2.0 are specified, then there are no alternatives so I could see failing fast and informing by exception that those protocols aren't supported. But in that situation you would be guaranteed a failure regardless of mechanism to disable the protocol and you wouldn't be breaking code which otherwise would continue working had a different mechanism been used to disable these protocols. When other more secure protocols have been specified, there's no need to fail the request, just don't use the insecure protocols. I would suggest having the following behavior(s): - Bitwise AND any specified protocols with the compliment of (SSL3 | SSL2) to disable their usage when applying the specified protocols (so as not to break round-tripping of property getter and setter values). - Optionally throw an exception if only unsupported protocols have been specified. - Optionally, if SSL3/SSL2 were specified along with other protocols but a secure connection was unable to be negotiated, have a special exception message noting that SSL3/SSL2 are no longer supported to give a hint to a possible cause +4928 area-System.Runtime Add StringBuilder append methods to StringBuilder. This is useful for more complicated string manipulation (interop in particular). See CoreCLR issue: https://github.com/dotnet/coreclr/issues/1843 And PR: https://github.com/dotnet/coreclr/pull/2287 @terrajobst; @vancem Per the discussion below the following is the *new* proposal: ### (NEW) APIs being added ``` diff namespace System.Text { public sealed class StringBuilder { + // Parameter handling to match existing string Append methods + public StringBuilder Append(StringBuilder value) + public StringBuilder Append(StringBuilder value, int startIndex, int count) } } ``` ### REJECTED Proposal: ``` diff namespace System.Text { public sealed class StringBuilder { + public StringBuilder(StringBuilder value) + public StringBuilder(StringBuilder value, int capacity) + public StringBuilder(StringBuilder value, int startIndex, int length, int capacity) } } ``` +4930 area-System.Net Remove dead code from System.Private.Uri Remove unused private fields, methods, nested types and resource strings. +4934 area-System.Net Got System.IO.Exception When Expecting a Not-Found Response "https://github.com/dotnet/wcf/issues/87 seems caused by an issue in System.Net. I have a repro for the issue. To repro the issue, you can add the following test in System.Net.Http.Functional.Tests and run the test. ``` csharp [Theory, MemberData(""VerifyUploadServersStreamsAndExpectedData"")] public async Task PostAsync_CallMethod_StreamContent_NotFound(Uri remoteServer, Stream requestContentStream, byte[] expectedData) { int contentLenght = 1000000; using (var client = new HttpClient()) { // Ensure the service start HttpContent content = content = new StringContent( """", Encoding.UTF8, ""application/json""); client.PutAsync(""http://localhost:44283/resource/WcfService.TestResources.BasicHttpResource"", content).GetAwaiter().GetResult(); content = new StringContent(new string('a', contentLenght)); content.Headers.ContentMD5 = TestHelper.ComputeMD5Hash(expectedData); using (HttpResponseMessage response = await client.PostAsync(new Uri(""http://localhost:8081/BridgeAppDomain0/Basicnot-an-endpoint""), content)) { Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } } } ``` Note that the test needs to use WCF's bridge service to repro the issue. The service is available on [One Drive](https://onedrive.live.com/redir?resid=CE2984E291F58617!3365&authkey=!ACO_zktAGj0aTZI&ithint=folder%2c). To start the service, download the 'bridge folder', and run the script SetupWCFTestService.cmd in bridge\tools. You need to start the service on your machine before running the test. Expect: the test passes. Actual: the test fails. Please feel free to contact me if you have any questions. Thanks. " +4935 area-System.Security Respond to PR code review comments for ported library System.Security.Claims @brentschmaltz as the owner of the System.Security.Claims library can you please have a look through the code review comments provided in https://github.com/dotnet/corefx/pull/4933 and address them appropriately. +4941 area-Infrastructure Consolidate facade projects With #4878 , we have a bunch of loose facade projects that can be consolidated into the other project for the library, and also a handful of facade projects in a subdirectory unnecessarily. We should go and consolidate those where we can. Here's a list from the tool I ran to detect such projects: - [ ] Microsoft.Win32.Primtives - [ ] Microsoft.Win32.Registry - [x] System.AppContext only has a 'facade' project - [x] System.Collections has a full facade and partial facade project that should be merged. - [x] System.Diagnostics.Contracts only has a 'facade' project - [x] System.Diagnostics.Debug has a full facade and partial facade project that should be merged. - [x] System.Diagnostics.Tools only has a 'facade' project - [x] System.Diagnostics.Tools has a full facade and partial facade project that should be merged. - [x] System.Diagnostics.Tracing only has a 'facade' project - [x] System.Globalization only has a 'facade' project - [x] System.Globalization.Calendars only has a 'facade' project - [ ] System.IO has a full facade and partial facade project that should be merged. - [x] System.Reflection only has a 'facade' project - [x] System.Reflection.Emit only has a 'facade' project - [x] System.Reflection.Emit.ILGeneration only has a 'facade' project - [x] System.Reflection.Emit.Lightweight only has a 'facade' project - [x] System.Reflection.Extensions only has a 'facade' project - [x] System.Reflection.Primitives only has a 'facade' project - [x] System.Resources.ResourceManager only has a 'facade' project - [x] System.Runtime only has a 'facade' project - [x] System.Runtime has a full facade and partial facade project that should be merged. - [x] System.Runtime.CompilerServices.VisualC only has a 'facade' project - [x] System.Runtime.Extensions only has a 'facade' project - [x] System.Runtime.Extensions has a full facade and partial facade project that should be merged. - [x] System.Runtime.Handles only has a 'facade' project - [x] System.Runtime.Handles has a full facade and partial facade project that should be merged. - [x] System.Runtime.InteropServices only has a 'facade' project - [x] System.Runtime.InteropServices has a full facade and partial facade project that should be merged. - [x] System.Runtime.InteropServices.WindowsRuntime only has a 'facade' project - [x] System.Runtime.Loader only has a 'facade' project - [x] System.Runtime.Serialization.Json only has a 'facade' project - [x] System.Runtime.Serialization.Xml only has a 'facade' project - [x] System.Security.AccessControl only has a 'facade' project - [ ] System.Security.Claims only has a 'facade' project - [x] System.Text.Encoding only has a 'facade' project - [x] System.Text.Encoding.Extensions only has a 'facade' project - [x] System.Threading only has a 'facade' project - [x] System.Threading has a full facade and partial facade project that should be merged. - [x] System.Threading.Tasks only has a 'facade' project - [x] System.Threading.Tasks has a full facade and partial facade project that should be merged. - [x] System.Threading.Thread only has a 'facade' project - [x] System.Threading.ThreadPool only has a 'facade' project - [x] System.Threading.Timer only has a 'facade' project +4942 area-System.ComponentModel Some ValidationAttributes are stateful. "CompareAttribute has the property OtherPropertyDisplayName, which is set to the otherProperty value you passed in until you call IsValid, at which point it becomes the other properties actual DisplayName. RangeAttribute has an overload which takes a type and lets you give it string for Min and Max, however those strings aren't converted until you call FormatErrorMessage. Both of these instances of statefulness make the attributes unpredictable and require gross hacks. If for example you call the Minimum property of RangeAttribute before and after calling FormatErrorMessage you might first get ""0"" then 0d (which is not a side effect one would expect without examining the source). Now you have to keep track of whether you've called that or not when looking at Minimum and Maximum so you know what to expect. I understand that throwing in setters and Attribute constructors is bad, but perhaps the work could be done in the getters so that it's never wrong and any exceptions don't break attribute construction. " +4945 area-System.Net Redirected request's absolute uri is missing the query string information on CoreClr and Linux "I have a http client which tries to communicate to a secure endpoint. This endpoint authorizes the request and redirects if the user is not authenticated. Some of tests are failing due to different api behavior when on windows and linux platforms. **CoreClr and Windows** http://localhost:5000/Account/Login?ReturnUrl=%2Fadmin%2Fstoremanager <--- **this is fine** --- http://localhost:5000/Admin/StoreManager StatusCode: 302, ReasonPhrase: 'Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Date: Fri, 11 Dec 2015 20:03:29 GMT Location: http://localhost:5000/Account/Login?ReturnUrl=%2FAdmin%2FStoreManager Server: Kestrel Content-Length: 0 } **CoreClr and Linux** http://localhost:5000/Admin/StoreManager <--- **note this** --- http://localhost:5000/Admin/StoreManager StatusCode: 302, ReasonPhrase: 'Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Date: Fri, 11 Dec 2015 20:00:46 GMT Location: http://localhost:5000/Account/Login?ReturnUrl=%2FAdmin%2FStoreManager Server: Kestrel Content-Length: 0 } **Repro** ``` using System; using System.Net.Http; namespace ConsoleApp24 { public class Program { public static void Main(string[] args) { WithAutoRedirect(); Console.WriteLine(""-------------""); NoAutoRedirect(); } private static void WithAutoRedirect() { var client = new HttpClient(); client.BaseAddress = new Uri(""http://localhost:5000/""); var response = client.GetAsync(""admin/storemanager"").Result; Console.WriteLine(response.RequestMessage.RequestUri); } private static void NoAutoRedirect() { var clientHandler = new HttpClientHandler() { AllowAutoRedirect = false }; var client = new HttpClient(clientHandler); client.BaseAddress = new Uri(""http://localhost:5000/""); var response = client.GetAsync(""Admin/StoreManager"").Result; Console.WriteLine(response.RequestMessage.RequestUri); Console.WriteLine(response); } } } ``` cc @Tratcher " +4950 area-Infrastructure tags don't correspond to nuget releases I tried to find the source for for https://www.nuget.org/packages/System.Reflection.Metadata/ v 1.1.0 and https://www.nuget.org/packages/System.Collections.Immutable/ v 1.1.37 Unfortunately, tags are out-of-sync with nuget releases. +4953 area-System.IO Increase Code Coverage for System.IO.FileSystem.AccessControl @GiriSr as the owner of the System.IO.FileSystem.AccessControl library can you please have a look through the code review comments provided in https://github.com/dotnet/corefx/pull/4946 and address them appropriately. +4955 area-System.Data Fix Localization Issues on Linux Due to Unsupported Windows DLLs "Bypasses Windows localization references on Linux/OSX by using hardcoded English-US locale constants. Using the Windows localization DLLs on Linux/OSX causes DLL load failure issues. Once actual localization support is added for Linux/OSX, these workarounds can be removed. Same DLL load issue as in: https://github.com/dotnet/corefx/issues/4579 This DLL load issue also caused the problems seen in: https://github.com/dotnet/corefx/issues/4676 ^ The Close() error in the issue 4676 is due to packet data processing issues in a graceful close that was caused by a caught load-DLL exception. Basically, the localization DLL load throws an Exception, and when we catch this exception we try to do some cleanup & close on a DataReader. This throws another exception due to invalid packet data caused by the original DLL exception. Thus the true cause was being masked by this new ""connection error"" exception in SqlDataReader.Close(). " +4960 area-System.Net HttpClient not sending cookies which were part of earlier redirect response in Core Clr I am using CoreClr version of HttpClient on my Windows 10 OS. **Scenario:** Successful login will redirect the user to a page where the logging in user info is displayed **Issue:** Since the necessary cookie is not present, the system thinks that the user is not logged in **Trace of calls for the above scenario(Note: all these messages were logged at the server side)** --- Request: _request for login page_ GET /account/login ||Connection: Keep-Alive||Accept-Encoding: gzip, deflate||Cookie: U58hr9PQBAQ=CfDJ8IcTvLBrmYtHm19jNmsLC62rbm_jC2LBGRmurk0fd2R9YeGdeOLdRpC-rEVSSK24hsMjOToMUnjgo_cZwFLrDge_a0sHVy5eJc9qYkjYvThiFcG7MA9MB-HYLsoxlQIzT6v8tmAUbTOZ-39AakEWLTI; .AspNet.Session=7e8cee49-8d6b-6ab5-357b-d29e964af60d||Host: localhost:5000 Response: _login page sent to client_ 200 GET /account/login ||Date: Sat, 12 Dec 2015 14:27:39 GMT||Transfer-Encoding: chunked||Content-Type: text/html; charset=utf-8||Server: Kestrel|| Request: _client request to login with details of username and password_ POST /Account/Login ||Connection: Keep-Alive||Content-Length: 69||Content-Type: application/x-www-form-urlencoded||Accept-Encoding: gzip, deflate||Cookie: U58hr9PQBAQ=CfDJ8IcTvLBrmYtHm19jNmsLC62rbm_jC2LBGRmurk0fd2R9YeGdeOLdRpC-rEVSSK24hsMjOToMUnjgo_cZwFLrDge_a0sHVy5eJc9qYkjYvThiFcG7MA9MB-HYLsoxlQIzT6v8tmAUbTOZ-39AakEWLTI; .AspNet.Session=7e8cee49-8d6b-6ab5-357b-d29e964af60d||Host: localhost:5000|| Response: _server successful login response with redirect to home page /_ 302 POST /Account/Login ||Cache-Control: no-cache||Date: Sat, 12 Dec 2015 14:27:39 GMT||Pragma: no-cache||Expires: -1||Location: /||Server: Kestrel||Set-Cookie: .AspNet.Microsoft.AspNet.Identity.Application=CfDJ8IcTvLBrmYtHm19jNmsLC60z9IhWh_D65HPs01cDjGLzpfs5B5SeoX4k5tem5BqxDavdDWtijmOSUKuWw_lkI3PEeWJjUHn_mk8ArChjrFgySrEuCSkQMZU4vGVL3R3F2_aNbpixFkI3Oh2_PN1VF9Peb1XUJJTZDCDLlUFP7QSreFC4qaiJWaWTpGdp-_nStQSr2OzP5qAvqbGn2ME4fICTfm7BqWas_h_WaZPWjOwRT68V9ewibMxR2odTbcQf3Bqie1IEx2kjwiYLdXrzaT2sc-TmzKnNSTELgWmCVBdV27dMM2YGlwUOIL_YTgyAqCNLSO_YjfG8_gTODvhjTCJ9ff8hc_xTx0PYiZMdah5oNZPmAyAC2FJh_hWCRQD1jzgDVVGp2le9TaEw6XPdvsa_2u1HbjH_vRBIdtd49i9ZJv9Z_rO5X3PDgTYkAahAlGx7ym_vDOTZA-VC3KvM-JMOyIfcjYjovU9QkhsXBg8UI5COArVxLPXHSyXADoltftMxOg8oKBdl-55I8bKe-0ep6haIAz6ozlSFR41fEQN_j9kyNCaSjZYGu6-A6Qu8YP6tGEb3EPGhicE15NtrkDj7YhnJruOGKip2ZMvv-V0xg1UfzmNgOvvpMZHElbFsL2jlPaP0nzPn4uffArK6hlxo_ExYOdp596omQjPCF4h-; path=/; httponly|| **NOTE:** This call is missing the `.AspNet.Microsoft.AspNet.Identity.Application` cookie Request: _client request to home page_ GET / ||Connection: Keep-Alive||Accept-Encoding: gzip, deflate||Cookie: U58hr9PQBAQ=CfDJ8IcTvLBrmYtHm19jNmsLC62rbm_jC2LBGRmurk0fd2R9YeGdeOLdRpC-rEVSSK24hsMjOToMUnjgo_cZwFLrDge_a0sHVy5eJc9qYkjYvThiFcG7MA9MB-HYLsoxlQIzT6v8tmAUbTOZ-39AakEWLTI; .AspNet.Session=7e8cee49-8d6b-6ab5-357b-d29e964af60d||Host: localhost:5000|| Response: 200 GET / ||Date: Sat, 12 Dec 2015 14:27:39 GMT||Transfer-Encoding: chunked||Content-Type: text/html; charset=utf-8||Server: Kestrel|| --- **NOTE** that this scenario works fine with regular desktop HttpClient. @Tratcher +4961 area-System.Collections Stack and Queue should allow for random access in constant time The `Stack` and `Queue` classes algorithmically could allow for random access in constant time. At the moment this is not represented in the API surface of those types. I propose to lift that restriction. In fact most members of `List` could be made available on `Stack` and `Queue` as well. Really, `Stack` and `Queue` are mostly different ways to index and interpret an underlying array. There is no reason a `Stack` could not have for example `Remove(T)` or a `RemoveAll(Func)` methods just like `List` has. I propose in priority order: 1. Add `get` indexers to `Stack` and `Queue` 2. Add the core read and write methods that are required for users to implement the remaining ones. I think that would be `Insert`, `RemoveAt` and a `set` indexer. 3. Add as many `List` methods as seems appropriate to `Stack` and `Queue`, copying them from `List`. I don't see a reason why the set of methods to copy should be limited. We could go for feature parity. This issue seems like a good candidate for a community contribution. +4963 area-Infrastructure Top-level dir.props claims Roslyn can't build PDBs on Unix In particular, this piece of (Unix-only) code: ``` xml false none ``` ... claims that it's necessary to disable PDBs when building on Unix because dotnet/roslyn#2449 wasn't yet ready. However, that's been implemented, so perhaps this doesn't need to stay disabled anymore? Also note this, just a bit further down in the same Unix-only block: ``` xml true ``` (And, um, while we're looking at this comment: Windows is the one that uses backslashes as directory separators, not Unix, and you don't seem to have any nuspec files in this repository, so I'm not sure where any unexpected backslashes could be creeping in from.) +4964 area-System.Collections CreateSetComparer methods for HashSet<> and SortedSet<> This methods exists in the .NET Framework: [here](https://msdn.microsoft.com/en-us/library/bb335475.aspx) and [here](https://msdn.microsoft.com/en-us/library/dd321103.aspx). I know, this methods has a some issues and I want report about it and, probably, try to fix it. Are these methods still supported? If not, class [SortedSetEqualityComparer](https://github.com/dotnet/corefx/blob/d43a8a92151b2af9073257bd3c40160dd7404927/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L2419) should be removed. +4967 area-System.Net Cookie Tests Added tests, especially for CookieContainer/Parser/Tokenizer/Collection +4968 area-System.Net "UDP Socket.ConnectAsync result in ""An invalid argument was supplied Error Code:10022""" "For version RC1 A very simple call failed and throw exception ""An invalid argument was supplied Error Code:10022"" Repro: ``` var c = new UdpClient(); c.Client.ConnectAsync(""114.114.114.114"", 53).Wait(); ``` It works with sync mode: ``` var c = new UdpClient(); c.Client.Connect(""114.114.114.114"", 53); ``` Let me know if it's not a bug " +4969 area-System.Data SqlParameter Scale and Precison properties should override DbParameter implementations # Background In the desktop framework, The System.Data namespace included a set of interfaces from the .net 1.1 era. DbParameter implemented the IDbParameter interface which included the Scale and Precision properties. When System.Data was added to corefx, the interfaces were dropped since the abstract classes had been preferred since .net 2.0 and forward. @mgravell noticed ( #1612 ) however, that when the interfaces were removed, the Scale and Precision properties were broken. For some reason they used the interface to call the child implementation instead of traditional class inheritance. You can see the old implementation here : http://referencesource.microsoft.com/#System.Data/System/Data/Common/DBParameter.cs,68 The net result is that calling Scale or Precision on a SqlParameter object **casted to a DbParameter** is a no-op. This is the problem. # Motivation The are 3 motivators for this change. 1. Maintaining perceived behavior from the desktop framework 2. Implementing the path of least surprise 3. Enabling DB agnostic code (very important) The first point being that the following 2 statements are equivalent in .net 4.5 ``` C# SqlParameter param = new SqlParameter(); param.Scale = 1; ``` and ``` C# DbParameter param = new SqlParameter(); param.Scale = 1; ``` Whereas they are not currently equivalent in corefx. The 2nd statement will **not** update the value of Scale. The same behavior applies to the Precision property. The second motivation is that this kind of behavior difference is very unexpected. Most developers would assume that the behavior of setting or reading a property would not change due to inheritance. Lastly if you wanted to write DB agnostic code that only used the Db\* classes, you would be unable to set these parameters without a test and cast special case down to SqlParameter. # Proposed Change Simply alter SqlParameter to make Scale and Precision override the DbParameter implementations. # Risks I can see two _possibly_ breaking changes here: 1. Calling Scale and Precision from DbParameter now returns the SqlParameter implementation 2. Scale and Precision on SqlParameter are now virtual and therefore overridable The first one, is actually the existing behavior under .net. The SqlParameter members implicitly implemented the interface and get called from the parent (DbParameter) by it casting itself to the interface. The net result was the child implementation getting called. The second is not actually observable since SqlParameter is sealed and therefore no child classes can break. Now lets say that a 3rd party library was inheriting from DbParameter. They would more than likely just override Scale and Precision directly in .net. In core they could only do that, so this should not present a breaking change to existing or ported libraries. So i think that this is a safe change to make unless someone wrote code against corefx that was counting on DbParameter.Scale always being zero regardless of what they assigned it. Therefore **I believe this change has minimal risk in breaking code.** # Pull Request The changes are implemented here #4902 +4970 area-System.Diagnostics An argument for dnx to set the process name _From @tuespetre on December 5, 2015 17:36_ Since ASP.NET 5 is aiming to provide a highly scalable, deployable, or otherwise 'cloud-friendly' approach to writing applications, I think it is important to discuss [the 'processes' components of the twelve-factor methodology:](http://12factor.net/processes) > ... a production deploy of a sophisticated app may use many process types, instantiated into zero or more running processes. In order to properly identify the running instances of a process, it can be useful for each process to have a distinct name. This allows processes to be easily identified through various user interfaces and command line utilities that provide information on a node's running process, and if set via command-line arguments, allows other utilities like Powershell DSC to distinguish the instances of the running processes that they are supposed to manage. I realize this can be implemented within each application with very little effort but I hadn't seen a discussion on this yet so I wanted to hear some other opinions. _Copied from original issue: aspnet/dnx#3235_ +4973 area-System.IO Re-enable DriveInfo VolumeLabel test resolves #1355 +4976 area-System.Diagnostics Address reviews for porting System.Diagnostics.StackTrace to open @noahfalk Please address the comments posted to PR related to porting System.Diagnostics.StackTrace here https://github.com/dotnet/corefx/pull/4972#issuecomment-164534670 +4980 area-System.Net SMTP Client does not use correct MediaType for Body when Alternate Views are Specified "Hi DotNet: I've found a bug in System.Net.Mail. First, here's how you replicate the issue: ``` var MessageTest = new System.Net.Mail.MailMessage(FromAddress, ToAddress); MessageTest.Body = ""This is HTML""; MessageTest.IsBodyHtml = true; MessageTest.AlternateViews.Add(System.Net.Mail.AlternateView.CreateAlternateViewFromString(""This is text"", Encoding.ASCII, ""text/plain"")); Server.Send(MessageTest); ``` You'll notice that I am sending an HTML email that has a plaintext alternate view. The problem that occurs is that the message gets generated like so: ``` ----boundary_0_f09cf3de-0b0f-45cf-960c-47ec45675f7e Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable This is HTML ----boundary_0_f09cf3de-0b0f-45cf-960c-47ec45675f7e Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable This is text ----boundary_0_f09cf3de-0b0f-45cf-960c-47ec45675f7e-- ``` If you look at that content above, you'll see that the HTML part has its content-type as text/plain. After digging through the System.Net.Mail.MailMessage class with JustDecompile, I have found the issue: in the lines following the elseif ``` else if (this.AlternateViews.Count != 0 || this.Attachments.Count <= 0) ``` there is this line: ``` this.bodyView = AlternateView.CreateAlternateViewFromString(this.body, this.bodyEncoding, null); ``` You'll notice that null is passed in as the last parameter. This is the error. ""text/html"" should be passed in if IsBodyHtml is set to true and, otherwise, ""text/plain"" should be passed in. Can you please fix this bug? Thanks! " +4981 area-System.Security Respond to PR code review comments for ported library System.Security.AccessControl @GiriSr as the owner of the System.Security.AcessControl library can you please have a look through the code review comments provided in https://github.com/dotnet/corefx/pull/4977 and address them appropriately. +4984 area-System.Linq Reduce methods in UnaryExpression and BinaryExpression don't honor mutable struct semantics "Found while working on extended expression tree support for C#: ``` csharp // Prints 5 { var s = new S(); s.X += 5; Console.WriteLine(s.X); } // Prints 0 { var s = Expression.Parameter(typeof(S), ""s""); var x = Expression.Field(s, ""X""); var e = Expression.Lambda( Expression.Block( new[] { s }, Expression.Assign(s, Expression.New(typeof(S))), Expression.AddAssign(x, Expression.Constant(5)), Expression.Call(typeof(Console).GetMethod(""WriteLine"", new[] { typeof(int) }), x) ) ); var f = e.Compile(); f(); } ``` where ``` csharp struct S { public int X; } ``` The culprit is in `ReduceMember` and `ReduceIndex` in `UnaryExpression` and `BinaryExpression` where the receiver of the LHS is copied to a temporary. Those should really capture a `ref` to the value rather than making a copy of the value. Unfortunately, blocks don't support `ByRef` variables (if they would escape the stack frame, things would go terribly wrong of course), so options are: - do nothing and consider this behavior to be expression-specific; extension nodes for languages like C# and VB need to deal with it themselves; - make the copying behavior for receivers less aggressive; if the target is classified as a variable, the copy can be avoided (also the case of accessing a field with a mutable struct); - use a write-back approach (not desirable knowing that there are perfectly suited IL instructions to deal with reference indirection for loads and stores); - support ByRef variables in blocks which would need escape analysis in the lambda compiler to ensure verifiable code gets emitted. Obviously, any change here would be considered a breaking change. Nonetheless, this is an interesting behavior that can cause issues when layering language-specific extension nodes on top of the existing API. " +4986 area-System.Security Investigate adding common Linux crypto algorithms Most of the crypto algorithms that .NET supports on Windows are now included in CoreFX. However, there are a number of algorithms in common use on Linux that .NET doesn't support. We should investigate if there are some from that set that we should support for better integration with other Linux components. That would include assessing the current security of the algorithms. This would likely also require finding a way to have them work on Windows (and other OSes). Some possibilities include: - BCrypt hash algorithm - Blowfish (possibly only for BCrypt) - TwoFish - ThreeFish - GPG +4988 area-System.Net CurlHandler Fix for request uri during redirect CurlHandler is fixed to set the Response.RequestMessage.RequestUri to the redirected uri. Fixes #4945 +4989 area-System.Net Provide a way for developers to self-instantiate a server for networking API tests Most of the tests for networking APIs (e.g. System.Net.Sockets, System.Net.Http, etc.) depend on a setup where the client machine exchanges data with a remote server (since loopback to same host introduces unsolicited optimizations). In order to allow developers to test their PR locally, it would be great to have a script that sets up a server on their machine with a consistent set of configurations, features and settings. The developer can then run the suite of tests against this server to validate their PR. Today, tests run the tests against an Azure server. This issue tracks the creation and publishing of a script for setting up a local server. +4991 area-System.IO System.IO.Compression: Path validation of zip entries is done based on current OS "When reading a Zip file, calls are made to Path validation that check invalid characters based on the current OS. This brings about ArgumentException errors with the message ""Illegal characters in path."" Example repro: - Linux commands: - touch ""ab"" - zip newzip.zip ""ab"" - copy newzip.zip to Windows - Windows console app: ``` using System; using System.Diagnostics; using System.IO; using System.IO.Compression; class Program { static void Main() { using (ZipArchive archive = new ZipArchive(new FileStream(""newzip.zip"", FileMode.Open), ZipArchiveMode.Read)) { foreach (var entry in archive.Entries) { } } } } ``` Result: ``` Unhandled Exception: System.ArgumentException: Illegal characters in path. arameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.IO.Path.GetFileName(String path) at System.IO.Compression.ZipHelper.EndsWithDirChar(String test) at System.IO.Compression.ZipArchiveEntry.set_FullName(String value) at System.IO.Compression.ZipArchiveEntry..ctor(ZipArchive archive, ZipCentralDirectoryFileHeader cd) at System.IO.Compression.ZipArchive.ReadCentralDirectory() at System.IO.Compression.ZipArchive.get_Entries() at Program.Main() ``` We should at least throw a more useful error message like ""Zip file contains files with invalid characters in the path names"". We should also consider modifying the checks to do path validation based on the zip's source OS instead of the current OS but will need to be careful to think about the ramifications of returning paths from Name and FullName that are invalid on the current system. @stephentoub @justinvp " +4992 area-System.IO System.IO.Compression: Add tests to ZipArchive for zips with invalid file names There are currently no tests for zip archives that contain files with invalid names. We should add these tests and the corresponding zips. The tests should cover zips that are created on Windows as well as those created on Unix since names that are valid on one will be invalid on the other. Should be done regardless of the outcome of #4991, though does depend on it. +4994 area-System.IO System.IO.Compression : Consider protection against zip bombs As folks tend to use the built in classes for random zipping and unzipping they are vulnerable to zip bombs. Consider adding a way to protect against this. Typically this involves decompressing in a separate process which is time limited, or examining the file entries looking for nested compressed files. +4997 area-System.Reflection System.Reflection.Assembly contract contains internal constructor causing friction for testing The contract for `System.Reflection.Assembly` contains a internal parameter-less constructor, although most implementations (all as far as I can see) have it protected. The internal constructor blocks compiling a type that derives from Assembly, which would be useful thing to create for testing purposes. This forces you to take different testing strategies depending on whether the tests targets .NET Core (you have to use Moq) or desktop .NET (then you can't use Moq because of `ISerializable` but you can easily create a test double that derives from Assembly). The internal constructor in the contract may very well be intentional and I think this is a very advanced scenario, but I wanted to raise it mainly because: 1. It would be nice if you could use a uniform and simple testing strategy for both .NET Core and desktop .NET. 2. The compilation error is very annoying and obscure: It is even hard to understand what is going on by looking at the source code of the implementation. As far I am aware you have to reverse engineer the ref assembly to see the internal constructor. 3. This might actually be a leftover. See https://github.com/aspnet/EntityFramework/pull/4084 where we hit this. +4998 area-System.Threading Address PR code review feedback for ported System.Threading.AccessControl @GiriSr as the owner of the System.Threading.AccessControl library can you please have a look through the code review comments provided in https://github.com/dotnet/corefx/pull/4996 and address them appropriately. +4999 area-System.IO Fixed OS tag in ZipArchive header When writing, the OS tag in the header of a ZipArchive CentralDirectoryHeader was being set to 0 (Windows) regardless of platform. When reading, the os tag was being ignored. I added logic to set/get this tag properly and also modified the ArchiveEntry Name getter to parse the path based on the source OS instead of on the running OS. This will break anyone that was uzing the Name property of ZipArchiveEntries that had paths containing the backslash character within a ZipArchive that was compressed on a Unix machine but decompressed on a Windows machine. resolves #1904. Related to #4991 @stephentoub @justinvp @mellinoe +5001 area-System.Net Fix WinHttpHandler response handling for manual cookie parsing WinHttpHandler was losing 'Set-Cookie' response headers during auto redirection handling when the handler was in 'manual cookie' mode. I.e. `CookieUsePolicy.UseSpecifiedCookieContainer`. This is the only mode that HttpClientHandler uses. The 'Set-Cookie' headers were currently only parsed out when a final HTTP response happened. This meant that 'Set-Cookie' headers present in interim 3xx redirection responses as well as interim 401, 407 auth responses would not be stored into the CookieContainer. Hence, those same cookies could not be sent back to the server when needed. The fix is to make sure we parse out the 'Set-Cookie' headers whenever we get an HTTP response back from WinHTTP. As part of this fix, I re-factored out the cookie handling code into a separate class. I also added specific WinHttpHandler tests for the two different cookie modes as well as a HttpClientHandler test to validate cross-platform (i.e. CurlHandler). Fixes #4960 +5002 area-System.Net Corefx test hang from System.Net.Utilities.Functional.Tests Configuration: Debug CoreCLR runtime: coreclr.dll, corerun.exe and mscorlib.dll CoreFX assemblies and CoreFX tests: release Linux environment: Ubuntu 14.04 LTS on Hyper-V The following test doesn't finish with **one virtual processor** on Hyper-V. ./corerun xunit.console.netcore.exe System.Net.Utilities.Functional.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=nonlinuxtests -notrait Benchmark=true **\* GDB stack traces for all threads *** [thread_backtrace.txt](https://github.com/dotnet/corefx/files/63367/thread_backtrace.txt) **\* SOS clr stack *** (lldb) sos ClrStack OS Thread Id: 0x1762 (1) Child SP IP Call Site 00007FFFFFFFD028 00007FFFF79C4414 [HelperMethodFrame_1OBJ: 00007fffffffd028] System.Threading.WaitHandle.WaitOneNative(System.Runtime.InteropServices.SafeHandle, UInt32, Boolean, Boolean) 00007FFFFFFFD160 00007FFF7C4F9F32 System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle, Int64, Boolean, Boolean) 00007FFFFFFFD180 00007FFF7C4F9DDE System.Threading.WaitHandle.WaitOne(Int32, Boolean) 00007FFFFFFFD1B0 00007FFF7C31C45E Xunit.ConsoleClient.Program.ExecuteAssembly(System.Object, System.String, Xunit.XunitProjectAssembly, Boolean, Boolean, Boolean, Boolean, System.Nullable`1, System.Nullable`1, Xunit.XunitFilters) 00007FFFFFFFD2B0 00007FFF7C31521F Xunit.ConsoleClient.Program.RunProject(System.String, Xunit.XunitProject, Boolean, Boolean, Boolean, System.Nullable`1, System.Nullable`1, System.Nullable`1) 00007FFFFFFFD420 00007FFF7C2FA889 Xunit.ConsoleClient.Program.Main(System.String[]) 00007FFFFFFFD8D0 00007FFFF5FB21DF [GCFrame: 00007fffffffd8d0] 00007FFFFFFFDF80 00007FFFF5FB21DF [GCFrame: 00007fffffffdf80] **\* SOS threads *** (lldb) sos Threads ThreadCount: 9 UnstartedThread: 0 BackgroundThread: 4 PendingThread: 0 DeadThread: 4 Hosted Runtime: no Lock ID OSID ThreadOBJ State GC Mode GC Alloc Context Domain Count Apt Exception 1 1 1762 00000000006648F0 2020020 Preemptive 00007FFF5C1C03A0:00007FFF5C1C1FD0 0000000000645A80 0 Ukn 7 2 176b 0000000000688D70 21220 Preemptive 0000000000000000:0000000000000000 0000000000645A80 0 Ukn (Finalizer) XXXX 3 0 0000000000864760 31820 Preemptive 0000000000000000:0000000000000000 0000000000645A80 0 Ukn XXXX 4 0 00007FFF5000EFC0 31820 Preemptive 0000000000000000:0000000000000000 0000000000645A80 0 Ukn 11 5 176f 0000000000890AF0 2021220 Preemptive 00007FFF5C1B5E68:00007FFF5C1B5FD0 0000000000645A80 0 Ukn 12 6 1770 0000000000943B50 2021220 Preemptive 00007FFF5C210200:00007FFF5C212040 0000000000645A80 0 Ukn XXXX 7 0 00007FFF5007D840 1031820 Preemptive 0000000000000000:0000000000000000 0000000000645A80 0 Ukn (Threadpool Worker) XXXX 8 0 00007FFF48015D20 1031820 Preemptive 0000000000000000:0000000000000000 0000000000645A80 0 Ukn (Threadpool Worker) 16 9 1775 00007FFF3C000F50 1020220 Preemptive 0000000000000000:0000000000000000 0000000000645A80 0 Ukn (Threadpool Worker) +5003 area-System.Security WindowsIdentity.Name is missing from the System.Security.Principal.Windows contract The test code at https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/tests/WindowsIdentityTests.cs References `WindowsIdentity.Name`: `Assert.Throws(() => identity.Name);` which is not present in the contract defined within the respective `ref` folder. This is currently working because the test code references the `src` project. It's unclear what the right fix is: add the `Name` property to the contract or remove the test reference. @AtsushiKan @ericstj @nguerrera @weshaggard @bartonjs PTAL (usernames determined based on GitHub history for src) +5008 area-System.Security Respond to PR code review comments for ported library System.Security.Crypto.Algorithms @bartonjs as the owner of the System.Security.Crypto.Algorithms library can you please have a look through the code review comments provided in https://github.com/dotnet/corefx/pull/5005 and address them appropriately. Edit: For clarity, the issues are - [ ] See if the TFS Desktop-targetting build can succeed when using Array.Empty(). - [ ] The desktop facade is facading against net46, but 4.6.1 is the minimum compatible version. +5009 area-System.Reflection Implements PE Debug Directory reader. @nguerrera Please review. +5014 area-System.Net Bug in HttpContent.ReadAsStringAsync() if the content-type charset is surrounded with quotes (which is allowed by http spec) "I have just found a small bug in System.Net.HttpContent.ReadAsStringAsync(). This method tries to get the encoding from the content-type HTTP header. Unfortunately the HTTP spec allows to surround the charset value with quotes as in the following example: application/json; charset=""utf-8"" You can find the spec here: https://tools.ietf.org/html/rfc2616#section-3.6 Of course Encoding.GetEncoding(""\""utf-8\"""") throws an ArgumentException because of the surrounding quotes which leads to an InvalidOperationException in System.Net.HttpContent.ReadAsStringAsync(). This is the corresponding line: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpContent.cs#L204 " +5015 area-System.IO File.GetFileAttributes doesn't get symbolic link data on Unix Directories which are symbolic links or junctions (made with mklink /d or /j) on Windows have the FileAttributes.ReparsePoint flag set in their attributes. On *nix platforms, though, symbolic links (made with ln -s) have no special attributes set. A better user experience would be to use the ReparsePoint flag on such file or, possibly, to add new Unix-specific flags if the ReparsePoint one is inapplicable for some reason. +5017 area-System.Diagnostics Respond to PR code review comments for ported library System.Diagnostics.StackTrace @noahfalk as the owner of the System.Diagnostics.StackTrace library can you please have a look through the code review comments provided in https://github.com/dotnet/corefx/pull/4972 and address them appropriately. +5018 area-System.Reflection A few small public API changes To be used by metadata/PE writer. +5019 area-System.Net Update Http and WebSocket test servers Switch to a different (more scalable) Azure-based test server for Http and WebSocket.tests. +5021 area-Infrastructure Use .NetCore MSBuild to build corefx repo in Linux We want to remove the dependency of using Mono MSBuild, so we want to use the .NetCore version of MSBuild instead. There is still some work that need to be done to actually be able to restore .NetCore MSBuild, so the idea is to use what we have now to try to build corefx repo and start calling out the issues we find to the MSBuild so that we can get those issues addressed. For now, we are only going to use this version of MSBuild in Linux builds, since it is still not yet in the scope to support building in parallel, so that would slow the windows builds by a lot. Once/If that is enabled, we can change to use .NetCore MSBuild in Windows as well. +5022 area-System.Globalization Compare string with IgnoreCase/Kana in ja-JP character failed in unix "There seems to be a bug when ignoring Kana Character in ja-JP locale. **Repro** ``` private static CultureInfo[] _cultureInfo = { new CultureInfo(""ar-SA""), // Arabic - Saudi Arabia new CultureInfo(""ja-JP""), // Japanese - Japan new CultureInfo(""de-DE""), // German - Germany new CultureInfo(""hi-IN""), // Hindi - India new CultureInfo(""tr-TR""), // Turkish - Turkey new CultureInfo(""th-TH""), // Thai - Thailand new CultureInfo(""el-GR""), // Greek - Greece new CultureInfo(""ru-RU""), // Russian - Russia new CultureInfo(""he-IL""), // Hebrew - Israel new CultureInfo(""cs-CZ""), // Czech - Czech Republic new CultureInfo(""fr-CH""), // French - Switzerland new CultureInfo(""en-US"") // English - United States }; private static string[,] _specialMatchingString = new string[4, 2] {{""Lorem ipsum dolor sit amet"", ""Lorem ipsum dolor sit amet""}, {""かたかな"", ""カタカナ""}, {""ファズ・ギター"", ""ファズ・ギター""}, {""engine"", ""eNGine""}}; [Fact] public void CultureComparisonTests() { foreach (var cultureInfo in _cultureInfo) { for (var testNo = 0; testNo < _specialMatchingString.GetLength(0); testNo++) { CultureComparisonTests(cultureInfo.Name, _specialMatchingString[testNo, 0], _specialMatchingString[testNo, 1]); } } } public void CultureComparisonTests(string localeName, string str1, string str2) { Console.WriteLine(""CultureComparisonTests for {0} : {1} : {2}"", localeName, str1, str2); var options = CompareOptions.IgnoreCase | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth; var comparisonInfo = new CultureInfo(localeName).CompareInfo; var result = comparisonInfo.Compare(str1, 0, str1.Length, str2, 0, str2.Length, options); Assert.True(result == 0, String.Format(""{0} : {1} comparison should ignore case, kana type and width"", str1, str2)); } ``` **Summary** Test this in UNIX ``` CultureComparisonTests(""ja-JP"", ""ファズ・ギター"" , ""ファズ・ギター""); ``` Expected to be true for comparison with ignore Kana and ignore case character This only failed in - Unix - ja-JP locale - Probably cause by Kana Case character ""ファズ・ギター"" VS ""ファズ・ギター"" " +5024 area-System.Data Define the Schema Objects for the DbConnection getSchema Ref issue https://github.com/dotnet/corefx/issues/3423 The Database schema being exposed by the DbConnection.GetSchema() needs to return the schema of the database. The API should expose strongly typed objects. Issue #3423 is an effort to design the DbColumn representing the Column schema which will be one of the items of the collection of Base types which the Database schema should expose. This issue is for the discussion of the Types for the schema and refining the types. I will add more details here as we come up with the design. The Base types will be added to System.Data.Common and an API will be added to the DbConnection exposing the top level schema object. +5034 area-System.Net Fix race condition in SslStream authentication This fixes the race condition we were seeing in test case execution .For which the issue is #4317 . the basic cause for it was - _nestedAuth was getting set at 2 places still at the later stage it was checking if its not already checked , but there can be cases where (due to the delay in the execution of another threads) at both the places it sets _nestedAuth to 0 and hence results into the unwanted exception. Refer issue #4317 for more details. +5036 area-System.Net Improve WinHttpHandler use of notification callbacks WinHttpHandler currently uses the WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS when setting up the status callback function. This isn't strictly necessary. However, some of the notification flags are required such as WINHTTP_CALLBACK_FLAG_REDIRECT, WINHTTP_CALLBACK_FLAG_READ_COMPLETE and others. This issue will track optimizing the set of notification required as well as providing a way to turn them all on for debugging/logging purposes. +5037 area-System.Net System.Net.Security.Unit.Tests: Test failures with System.NotImplementedException : The method or operation is not implemented. "**Configuration** Debug CoreCLR runtime: coreclr.dll, corerun.exe and mscorlib.dll CoreFX assemblies and CoreFX tests: release **Linux environment** Ubuntu 14.04 LTS on Hyper-V Run .run-test.sh **with sudo** to avoid a hang issue in #5025 **Test names** ``` ./bin/tests/Linux.AnyCPU.Release/System.Net.Security.Unit.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.Net.Security.Unit.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.Net.Security.Unit.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.Net.Security.Unit.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.Net.Security.Unit.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.Net.Security.Unit.Tests/dnxcore50/testResults.xml: ``` **Stack trace** ``` d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)]]> ``` " +5039 area-System.IO System.IO.FileSystem.Tests: Test failures with Assert.Throws() Failure\nExpected: typeof(System.UnauthorizedAccessException)\nActual: (No exception was thrown) "**Configuration** Debug CoreCLR runtime: coreclr.dll, corerun.exe and mscorlib.dll CoreFX assemblies and CoreFX tests: release **Linux environment** Ubuntu 14.04 LTS on Hyper-V Run .run-test.sh **with sudo** to avoid a hang issue in #5025 **Test names** ``` ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/testResults.xml: ``` **Stack trace** ``` ``` " +5040 area-Infrastructure String resources need to be configurable on a per-configuration basis "Right now, string resources are included by default in an assembly if there exists a ""Strings.resx"" file in a ""Resources"" subdirectory under the csproj. All of the string resources in that file are included in the assembly, even if they are not used at all, or if only a subset are used. You can ""opt-out"" in a sense by changing the directory that the resource targets look in for the ""Strings.resx"" file (the `ResourcesSourceOutputDirectory` Property). This has worked fine for our projects with a single configuration, or with only a few similar configurations. However, this can cause significant bloat in assemblies which don't need those resources. For example, full-facade projects are generally around 5-6 KB in total size. With unnecessary string resources included, they can easily bloat to 25-30 KB each. To a lesser extent, configurations which only need a subset of the resources are also bloated by having extra strings in them. In our internal build, I recall we used text files that allowed condition inclusion/exclusion of certain strings, based on the project's DefineConstants. We might want to look into something similar to that in order to accomodate this. " +5041 area-System.IO System.IO.MemoryMappedFiles.Tests: Test failures with Assert.Throws() Failure\nExpected: typeof(System.UnauthorizedAccessException)\nActual: (No exception was thrown "The error message is the same as #5039 but the failures are from a different test set. **Configuration** Debug CoreCLR runtime: coreclr.dll, corerun.exe and mscorlib.dll CoreFX assemblies and CoreFX tests: release **Linux environment** Ubuntu 14.04 LTS on Hyper-V Run run-test.sh **with sudo** to avoid a hang issue reported in #5025 **Test names** ``` ./bin/tests/Linux.AnyCPU.Release/System.IO.MemoryMappedFiles.Tests/dnxcore50/testResults.xml: ./bin/tests/Linux.AnyCPU.Release/System.IO.MemoryMappedFiles.Tests/dnxcore50/testResults.xml: ``` **Stack trace** ``` ``` " +5042 area-Infrastructure TargetingPackReference items show up in VS Solution Explorer This has no real negative effect, it's just kind of annoying. We should consider putting the `false` metadata on the includes, which hides them from the solution explorer. +5044 area-System.Net Discussion: advantage to using sync over async for I/O? "Continuation of discussion from #4868 > > Without AuthenticateAsClient(), Open() must resort to calling an async method internally, which means that it's no longer purely synchronous... > > The code above is as synchronous as the old implementation. When you call synchronous I/O on something like NetworkStream, internally, the thread will be waiting on an event for the operation to finish. Even more broadly: in reality there is no such thing as synchronous I/O in Windows. Thanks for this detail. I was aware that at least in some cases sync methods actually perform async operations under the hood. However, coming from the Unix universe, it doesn't seem to hold that there's ""no such thing as synchronous I/O"" at least at the kernel level: I would expect .NET I/O operations to map to simple sync I/O system calls such as write and read. Also, the implementation details underlying async operations across platforms may make sync I/O more attractive at least in some cases (i.e. is async I/O implemented efficiently on Linux with mono, or with coreclr for that matter?). I admit I'm just asking questions, I don't have enough solid knowledge here. Regardless of these questions, and I said back in #4868, there's something odd about removing such a specific sync API (SslStream.AuthenticateAsClient) for such a general ""sync I/O is bad"" argument, without touching any other sync API. In other words, I'd expect either all sync APIs to stay for backwards compatibility or for a more sweeping removal of sync I/O APIs. " +5045 area-System.Net HttpClientHandler is not honoring UseDefaultCredentials set to false We're trying to enable [WebListener](https://github.com/aspnet/WebListener) tests on CoreCLR, however we're running into some issues on authentication tests. We have tests that check that an anonymous request to a server requiring authentication gets a 401 status back along with challenges. The request is made using an `HttpClient` taking an `HttpClientHandler` with `UseDefaultCredentials` set to `false`. On desktop CLR, we only see one HTTP request/response pair in the network: ![image](https://cloud.githubusercontent.com/assets/924164/11881634/cc350af6-a4bc-11e5-83b4-9be7f4bc9861.png) Which is expected for the test to pass. On CoreCLR however, we're seeing the client trying to negotiate authentication even when `UseDefaultCredentials` is set to `false`: ![image](https://cloud.githubusercontent.com/assets/924164/11881643/e1365590-a4bc-11e5-9b72-805c7d629375.png) Here's what we see when setting `UseDefaultCredentials` to `true`: ![image](https://cloud.githubusercontent.com/assets/924164/11881665/f63bcd30-a4bc-11e5-9f83-617a440601fb.png) Which is essentially the same as when it's set to `false`, which means the `UseDefaultCredentials` is not being honored in requests. Our tests are failing because they don't expect authentication to be successful in those requests. cc @Tratcher +5048 area-System.Net Disabling tests failing on *NIX. Fix #5037 Temporarily disabling UTs from running on *NIX. Fix #5037 +5049 area-System.Net Enable custom socket end points and allow Unix Domain Sockets With code separation into System.Net.Primitives and System.Net.Sockets, EndPoint extensibility was broken because System.Net.Sockets started to use its own copy of SocketAddress and didn't respect SocketAddress that a custom EndPoint may provide. The fix is to allow conversion between SocketAddress from System.Net.Primitives and System.Net.Sockets. This way custom implementations of EndPoint will be able to provide their own SocketAddress and it'll be honored by the Socket APIs. The fix also allows sockets to use 'Unspecified' protocol type which is needed for Unix Domain Sockets. There are several changes in socket test server to allow tests pass protocol type. Add new unit tests that use end point extensibility to implement Unix Domain Sockets. Fix #4777 +5050 area-System.Runtime System.Runtime.Extensions should be 4.1.0.0 There were API changes since the last stable version so we need to update minor version. +5051 area-System.Net Enable custom socket end points and allow Unix Domain Sockets With code separation into System.Net.Primitives and System.Net.Sockets, EndPoint extensibility was broken because System.Net.Sockets started to use its own copy of SocketAddress and didn't respect SocketAddress that a custom EndPoint may provide. The fix is to allow conversion between SocketAddress from System.Net.Primitives and System.Net.Sockets. This way custom implementations of EndPoint will be able to provide their own SocketAddress and it'll be honored by the Socket APIs. The fix also allows sockets to use 'Unspecified' protocol type which is needed for Unix Domain Sockets. There are several changes in socket test server to allow tests pass protocol type. Add new unit tests that use end point extensibility to implement Unix Domain Sockets. Fix #4777 +5055 area-System.Collections Clean up and Format System.Collections There's quite a few things in this project that should be cleaned up, not limited to: - Remove/sort usings - Use C# alias over type name (`Object` -> `object`, `Int32` -> `int`, etc.) - Non-compliant field names - We need to be careful about renaming these, we've hit issues in the past where Debugger components were relying on the exact names of these fields to not change. - General block/braces formatting +5058 area-System.Data Timeout Error on Conn.Open() for TDS Version 7.3 and below Timeout Error on Conn.Open() for TDS Version 7.3 and below or SQL Server 2008 and below # Here error message ``` System.Data.SqlClient.SqlException : Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=33; handshake=433; [Login] initialization=0; authentication=0; [Post-Login] complete=29018; ---- System.ComponentModel.Win32Exception : Unknown error 258 Stack Trace: at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParserStateObject.ThrowExceptionAndWarning(Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Suites.Data.Test.ExceptionTest.TestConnectionString(String connstr) at Suites.Data.Test.ExceptionTest.TestConnectionString() ----- Inner Stack Trace ----- ``` +5060 area-System.Data Invalid Server Name Exception will return Name Piped error message in Windows VS TCP in UNIX "Repro : ``` static void Main(string[] args) { try { TestConnectionString(""Data Source=NotAServer;Initial Catalog=Northwind;User ID=xx;Password=xxx;Connect Timeout=30""); } catch (Exception ex) { Console.WriteLine(""Exception : "" + ex.Message); } } public void TestConnectionString(string connstr) { using (var conn = new SqlConnection(connstr)) { Console.WriteLine(""Conn Open..."" + connstr); conn.Open(); Console.WriteLine(""create command...""); var cmd = new SqlCommand(""select @@Version"", conn); Console.WriteLine(""Execute reader...""); using (var reader = cmd.ExecuteReader()) { Console.WriteLine(""read...""); while (reader.Read()) { Console.WriteLine(reader.GetString(0)); } } } } ``` **_EXCEPTION**_ A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: **Named Pipes**\* Provider, error: 40 - Could not open a connection to SQL Server) But in unix it will return **.....TCP Provider ...***, **_Expected**_ We just need to make consistent for this. whether we should return Named Pipes / TCP if there is invalid server name. Or **_This can be the expected behavior**_ as Unix only support TCP provider at this moment, but Windows try to connect this with TCP first and Namepipe, and since Name pipe was the last provider than Name pipe was picked up. " +5062 area-System.Net Fixing System.Net.Security.Unit.Tests failure Fxing issue #5037 Tested on both Windows and Linux. +5065 area-System.Net "System.Net.Http.HttpClient SendAsync throws ""The requested header was not found"" when parsing 307 HTTP response from server" "Hi I am actually having ta weird issue with System.Net.Http.HttpRequestMessage when trying to add a custom header. The header is added and yet SendAsync throws an exception about ""header was not found""! Here in the team, we have spent 4 days in vain to get this to work. Any help would be appreciated. private static async Task MakeRequestExample(string url) { try { HttpMethod httpMethod = HttpMethod.Get; ``` using (HttpClient httpClient = new HttpClient()) { using (HttpRequestMessage httpRequestMessage = new HttpRequestMessage(httpMethod, url)) { //httpRequestMessage.Headers.Accept.TryParseAdd(""text/plain""); <-- not sure about this bool added = httpRequestMessage.Headers.TryAddWithoutValidation(""Client-Id"", ""314""); // added will be true and when I debug this I actually find the header using (HttpResponseMessage httpResponse = await httpClient.SendAsync(httpRequestMessage)) { switch (httpResponse.StatusCode) { case HttpStatusCode.OK: // logic 1 break; case HttpStatusCode.RedirectKeepVerb: case HttpStatusCode.NotFound: case HttpStatusCode.Moved: case HttpStatusCode.BadRequest: case HttpStatusCode.InternalServerError: // logic 2 break; default: // logic 3 break; } } } } } catch (Exception e) { Debug.WriteLine(""MakeRequest - Exception message: "" + e.Message); Debug.WriteLine(""MakeRequest - Exception stack trace: "" + e.StackTrace); Debug.WriteLine(""MakeRequest - Exception HResult: "" + e.HResult); Debug.WriteLine(""MakeRequest - Exception inner ex: "" + e.InnerException); } } ``` The exception: Exception message: An error occurred while sending the request. Exception stack trace: at System.Net.Http.HttpClientHandler.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Proj.Api.d__7.MoveNext() Proj.Api=> Exception HResult: -2147012746 Proj.Api=> Exception inner ex: System.Runtime.InteropServices.COMException (0x80072F76): The text associated with this error code could not be found. The requested header was not found at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpHandlerToFilter.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClientHandler.d__1.MoveNext() " +5068 area-System.Runtime unsafe struct with fixed byte array runtime error If i create an unsafe struct with an explicit layout and add a fixed byte array to access the data in a lib targeting dotnet5.4, and then try to access that struct in a unit test it compiles ok, but I get a runtime error. The unit test lib target dnxcore50 as per the instructions on the xunit site. If i try and access via a method in a third lib also targeting dotnet5.4 it works fine. I have a small repo containing a reproduction of the issue here https://github.com/jageall/DNXRuntimeIssueWithFIxedByteArray if this behaviour is by design I would expect a compile time error, not a runtime error +5072 area-System.Diagnostics Code cleanup related to System.Diagnostics.Tracing porting @vancem @davmason please clean up, format and address reviews for code ported as a part of https://github.com/dotnet/corefx/pull/5071 +5073 area-System.Net HttpClient hangs on 206 Partial Content response until connection is closed by the server "Request: ``` GET / HTTP/1.1 Connection: Keep-Alive Accept-Encoding: gzip, deflate Range: bytes=0-10 Host: localhost:8080 ``` Response: ``` HTTP/1.1 206 Partial Content Content-Length: 100 Content-Length: 11 Content-Range: bytes 0-10/100 Accept-Ranges: bytes <...content...> ``` Code: ``` var request = new HttpRequestMessage(new HttpMethod(""GET""), ""http://localhost:8080""); request.Headers.Add(""Range"", ""bytes=0-10""); var response = await httpClient.SendAsync(request); ``` Expected: `response` should be available as soon as 11 bytes are read by `HttpClient`. **This is the behavior on desktop CLR**. Actual: Execution hangs on `SendAsync`. If I set `httpCompletionOption` to `ResponseHeadersRead`, it hangs later when I try to read `response.Content`. If the connection is closed by the server, `SendAsync` completes and I can read `response.Content`. I think it is waiting for the 100 bytes indicated by the first `Content-Length` header and ignoring the latter value (11). " +5077 area-System.Net SslStream ReadAsync and WriteAsync never continues. "Calling ""await ReadAsync"" then calling ""await WriteAsync"" (while ReadAsync is still waiting) results in neither continuing ever. I tested the exact same app with .NET Framework libraries and it works fine. Using Windows 10 PRO x64, with DNX RC1 runtime. " +5078 area-System.Linq Add instance factory overloads to Enumerable.Repeat "Hi, There are `Enumerable.Range` and `Enumerable.Repeat` which are awesome, however, when using `Repeat` with a reference type, it's the reference to the same object being repeated, hence, changing a property of the repeated object will reflect in that property being changed for all indexes. The solution would be to create another overload of `Enumerable.Repeat` that is either parameterless or ones that accepts `Func` or `Func` that uses as a factory of the generated element, where the latter overload (with the `int` argument provides the index of the current element to be generated. ``` //will initialize an array of 40 instantiated StringBuilder objects. var builders = Enumerable.Repeat(40).ToArray(); //will initialize an array of 40 instantiated StringBuilder objects using a custom constructor var builders = Enumerable.Repeat(i => new StringBuilder($""Line {i} says:"")); ``` Another overload I'd want to see is for `Enumberable.Range`, is omitting the `start` parameter so that it's set to `0`, and only the `count` is provided. Merely a syntactic sugar. " +5079 area-System.Text Proposal: System.Text.RegularExpressions.RegexRunner to become a public type Today the RegexRunner class is internal in CoreFX, because the Regex.CompileToAssembly functionality (the historically main entry point) that generates code inheriting from this class is not available in CoreFX. The CompileToAssembly API is not the only way to create such assemblies though, one could write code that inherits from this class and all the functionality required by RegexRunner to function properly is available in CoreFX and is used by other internal classes. The proposal is to make the RegexRunner class public, allowing scenarios where people are willing to generate code using a tool other than Regex.CompileToAssembly that targets CoreFX to be able to do so. In fact, it is also entirely possible that a developer could use Regex.CompileToAssembly in a build step (where they may have access to the full framework) and generate an assembly that initially (i.e. the output of CompileToAssembly) compiles against mscorlib, but further processing could result in the assembly being compiled against the System.Runtime contract assemblies. This brings a well-tested Regex interpreter implementation, the same one that is used in all other scenarios except precompilation to this scenario as well. The precompilation scenario is compelling (to us) for working set and startup performance reasons. +5080 area-System.Net CurlHandler fix for cookie handling CurlHandler has been handling cookies only from the final HTTP response. The cookies sent during the intermediate http responses (during 3XX redirection as well as interim 401, 407 responses) were getting ignored. This fix ensures that the cookies from all the responses are handled. +5085 area-System.IO Fixed System.IO.Compression FileData DST bug The FileData class for testing in System.IO.Compression was initializing DateTimes using Ticks and an unspecified DateTimeKind that resulted in some times being off by an hour when the time was during Daylight Savings Time. I've fixed these times and reformatted them to use UTC times so testing is timezone independent. I also reformatted some tests to use Theories. resolves #1326 @stephentoub @justinvp +5086 area-System.IO Add tests for System.IO.BufferedStream Once BufferedStream gets mirrored over from TFS, tests need to be added for it. Depends on #4456 +5087 area-System.Collections Specialized Collections Tests Improve code coverage to 100% for System.Collections.Specialized Remove dead code +5088 area-System.Linq System.Linq.Expression rd.xml file leads to spurious warnings Start a new UWP and add this to it: ``` System.Linq.Expressions.Expression> e = () => 1234; ``` When building with .NET Native you'll now get two build warnings because the rd.xml file in this assembly has some wonky bits. This keeps folks from being warning clean and is actually pretty distracting for folks as it provides a lovely red herring for their other investigations. :-) Here's the warnings I get with VS Update 1: Method 'CreateLambda' within 'System.Linq.Expressions.Expression' could not be found. Method 'ParameterIsAssignable' within 'System.Linq.Expressions.Expression' could not be found. @VSadov ? +5093 area-System.Net Avoid some array allocations in HttpContent Changes: - `CopyToAsync` avoids creating a huge intermediary array when copying to another stream. - `ReadAsStreamAsync` avoids allocating a new array in .NET 4.6 by using `TryGetBuffer`, which should be invisible to the caller since the returned `MemoryStream` isn't writable. - Fixed associated TODO in `GetDataBuffer`. - Removed an assert for `_bufferedContent.Length` being less than `int.MaxValue` (as the comments themselves say, .NET doesn't support arrays with lengths over that). +5096 area-System.IO System.IO.Compression: Tests for creating ZipArchive with unicode filename failing on Unix When trying to create a ZipArchive from a directory that contains a filename containing unicode characters a FileNotFoundException is thrown. CI failure from #5085: 12:22:45 System.IO.FileNotFoundException : Could not find file '/mnt/j/workspace/dotnet_corefx/ubuntu_debug_tst_prtest/bin/tests/Linux.AnyCPU.Debug/System.IO.Compression.Tests/dnxcore50/ZipTestData/refzipfolders/unicode/������.txt'. Unable to repro on my Ubuntu VM but is failing CI for CentOS and Ubuntu Debug&Release. +5099 area-System.Net System.Net EventSource Logging Adding EventSources to substitute the previous logging model using TraceSources. In this PR 4 event sources are added: -NetEventSource -SocketsEventSource -HttpEventSource -SecurityEventSource Only the event methods for NetEventSource and SocketsEventSource are fully added. HttpEventSource and SecurityEventSource have only a few of the new event methods implemented. Changes in production are done to match this new implementation. (Only changes for events in Sockets are mostly done). +5101 area-System.Net System.Net EventSource Logging Adding EventSources to substitute the previous logging model using TraceSources. In this PR 4 event sources are added: -NetEventSource -SocketsEventSource -HttpEventSource -SecurityEventSource Event methods for NetEventSource, SocketsEventSource and HttpEventSource are fully added. SecurityEventSource has only a few of the new event methods implemented. Changes in production code are done to match this new implementation. (Only changes for events in Sockets, Http are fully done in this iteration). +5102 area-System.Security Unix X500DistinguishedName.Decode throws with an empty RDN value "``` C# var dn = new X500DistinguishedName(""300B3109300706035504031300"".HexToByteArray()); string value = dn.Format(false); Assert.Equal(""CN="", value); ``` Throws on dn.Format(false); ``` System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests.EncodeSingleRdn(testCase: SimpleEncoderTestCase { Input = ""CN="" }) [FAIL] System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. Stack Trace: at Interop.Crypto.Asn1StringToManagedString[THandle](THandle asn1String, Func`4 asn1StringPrintEx) at Interop.Crypto.Asn1StringToManagedString(SafeSharedAsn1StringHandle asn1String) at Internal.Cryptography.Pal.X500NameEncoder.X500DistinguishedNameDecode(Byte[] encodedName, Boolean printOid, X500DistinguishedNameFlags flags, Boolean addTrailingDelimieter) at Internal.Cryptography.Pal.OpenSslX509Encoder.X500DistinguishedNameFormat(Byte[] encodedDistinguishedName, Boolean multiLine) at System.Security.Cryptography.X509Certificates.X500DistinguishedName.Format(Boolean multiLine) at System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests.ProcessTestCase(SimpleEncoderTestCase testCase, X500DistinguishedName dn) at System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests.EncodeSingleRdn(SimpleEncoderTestCase testCase) ``` " +5105 area-Infrastructure Cannot run tests from console if sln previusly was built with VS 2015 CE (log of error in task) "Clone and build coreclr and corefx according to guide, Windows 10, Visual Studio 15 CE. It succeed. When I start investigate code in VS Open System.Collections.sln, build from VS (many many errors in intellisense and so on but Output writes that build succed) Then go to console: ``` cd .\src\System.Collections\tests msbuild /t:Test ``` It fails with: ``` ""d:\net\corefx\src\System.Collections\tests\System.Collections.Tests.csproj"" (target object Build ) (1) -> ""d:\net\corefx\src\System.Collections\src\System.Collections.csproj"" (target object Build;DebugSymbolsProjectOutputGroup ) (2) -> (Целевой объект OpenSourceSign) -> d:\net\corefx\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00137\li b\sign.targets(39,5): error : d:\net\corefx\bin/obj/Windows_NT.AnyCPU.Debug\Sys tem.Collections\System.Collections.dll: PE file is already strong-name signed. [d:\net\corefx\src\System.Collections\src\System.Collections.csproj] ``` But if i build sln from cmd: ``` cd .\src\System.Collections msbuild /t:Clean;Build cd .\tests msbuild /t:Test ``` All is well. What is bad with visual studio and how to match it's behavior with what MSBuild does itself? " +5106 area-System.Numerics Add overload for Vector.CopyTo() that supports pointers At the moment we have only one signature that supports arrays only: ``` csharp public unsafe void CopyTo(T[] destination) ``` But sometimes we have only pointers in code when converting them back to arrays isn't an option. Please add the ability to pass pointers directly to `CopyTo()` method. Something like that would work: ``` csharp public unsafe void CopyTo(void* destination) ``` The issue is related to #3741 +5107 area-System.Net CurlHandler fix for cookie handling CurlHandler has been handling cookies only from the final HTTP response. The cookies sent during the intermediate http responses (during 3XX redirection as well as interim 401, 407 responses) were getting ignored. This fix ensures that the cookies from all the responses are handled. +5109 area-System.Console Console stops echoing typed keys after calling ReadKey from background thread and exiting process on Ubuntu Repro application is the ASP.NET benchmarks app at https://github.com/aspnet/benchmarks/tree/dev/src/Benchmarks I'm creating a background thread in order to do non-blocking reads of keys as `Console.KeyAvailable` isn't in .NET Core yet. Once the app exits however (after Ctrl+C) no keystrokes show up in the console. The keystrokes are still being sent to the shell as commands can be executed. Normality is restored after executing `reset`. I attempted to resolve it by changing the `while` loop in the bg thread to return once the `app.Run()` had returned and joining it with the main thread, and while it exits fine, the issue remained. The same app behaves as expected on Windows. Repro steps: 1. Clone https://github.com/aspnet/benchmarks 2. Ensure latest DNX for Core CLR: `dnvm install latest -r coreclr -arch x64 -u` 3. Switch to latest DNX: `dnvm use 1.0.0-rc2-[version installed above] -r coreclr` 4. Navigate to `~/src/Benchmarks` in repo 5. Restore packages: `dnu restore` 6. Run application: `dnx run` 7. Hit the spacebar to see console interaction and output from application background thread works 8. Hit Ctrl+C, application will shutdown 9. Try typing in the console now, no keystrokes are echoed +5114 area-System.Data SqlBulkCopy class lacks option to specify ORDER BY hint Bulk insert into a table with PK is significantly faster if input data is in order (no need to write to tempdb first and run a sort). Need to add the ORDER(...) hint to the tdscommand string. +5116 area-System.Net Can't disable KeepAlive for ClientWebSocket I ported a project from .net 4.5 to Core. Building worked fine, but execution with .net Core doesn't work. First of all setting KeepAliveInterval to -1 is no longer supported and throws an OutOfRangeException. Setting it to any other value (e.g. 0) keeps KeepAlive on. I looked at the ClientWebSocket-Code. I suspect KeepAliveInterval is never used. So currently there is no way to modify KeepAlive behavior. +5118 area-System.Runtime Christmas Analysis of .NET Core Libraries (CoreFX) To demonstrate the capabilities of our analyzer, we regularly perform analysis of open source projects. We had recently checked the CoreFX project. Here is the link to the article about it: http://www.viva64.com/en/b/0365/ Official page of the analyzer: http://www.viva64.com/en/pvs-studio/ If you have any questions, or if you are interested in the evaluation of our static analyzer or in any other source code quality control services that our company provides, please contact us at support@viva64.com. +5120 area-System.Net Fully implement ClientWebSocketOptions for .NET Core Currently, .NET Core has a placeholder implementation for ClientWebSocketOptions. Filing this issue to track the complete implementation. +5126 area-System.Diagnostics Keeping in sync Localization Resources name when using Event Sources. "Event Sources can be localized by specifying the name of the resources file. But that name needs to be hard coded in the attribute of the event source. So, if at some point in time, the name of the resources changes, the event source will not be in sync anymore and a message like: ""Could not find any resources appropriate for the specified culture or the neutral culture. Make sure ""NameOfMyResources.resources"" was correctly embedded or linked into assembly..."" will be the only log that appears in our event source recorder. If in the future, a better way to specify LocalizationResources that does not depend on a constant variable is available, changes to the EventSources code in System.Net should be made. " +5127 area-Serialization Some DateTime Serialization tests failed in Moscow time zone "### Description Some DateTime Serialization tests failed in Moscow time zone. Test output [placed](https://gist.github.com/speshuric/49c7e1b5072095cebe7b) in a gist. Here is reduced output: ``` XmlSerializerTests.Xml_DateTimeAsRoot [FAIL] Test failed for input: 02.01.2013 3:04:05 Expected: 2013-01-02T03:04:05.006+03:00 Actual: 2013-01-02T03:04:05.006+04:00 =================================================================== DataContractJsonSerializerTests.DCJS_DateTimeAsRoot [FAIL] [expected]:ate(1357084800000+0300)\/"" [actual ]:ate(1357081200000+0400)\/"" [Expected (with length=30)]: ""\/Date(1357084800000+0300)\/"" [Actual (with length=30)]: ""\/Date(1357081200000+0400)\/"" =================================================================== DataContractSerializerTests.DCS_TypeWithDatetimeOffsetTypeProperty [FAIL] Expected: 2013-01-02T03:04:05.006Z180 Actual: 2013-01-02T02:04:05.006Z240 DataContractSerializerTests.DCS_DateTimeOffsetAsRoot [FAIL] Expected: 2013-01-02T03:04:05.006Z180 Actual: 2013-01-02T02:04:05.006Z240 ``` ### Research All these tests failed by the similar reasons. In these tests used `TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes` which is not right. Offset _can_ change. For example: ``` cs TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(""Russian Standard Time""); DateTime d1Utc = new DateTime(2015, 1, 2, 3, 4, 5, 6, DateTimeKind.Utc); Console.WriteLine(""2015: Offset: {0}"", timeZone.GetUtcOffset(d1Utc)); DateTime d2Utc = new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Utc); Console.WriteLine(""2013: Offset: {0}"", timeZone.GetUtcOffset(d2Utc)); ``` Output is: ``` 2015: Offset: 03:00:00 2013: Offset: 04:00:00 ``` This issue was fixed in #2496 **Fix serialization test failure in Minsk timezone**, and #2541 **Serialization time zone fixes** but broken again in 3f91ae10 (it was rather big commit and it's no wonder that something was broken). ### Questions to discuss As @stephentoub mentioned in #2496, it would be better > to make this test not depend on the local timezoneinfo and instead have the test run for a variety of specific time zones, e.g. by making it a `[Theory]` and passing in via InlineData or MemberData a few different time zones to test I think this is right idea and I propose to discuss how to do it better: 1. Make 2 PR (the first - small roll back fix, the second - new tests with `[Theory]` attribute) 2. Make only full PR (but it will take some time for me) Small rollback PR I can do ASAP And how can we prevent accidental changes like https://github.com/dotnet/corefx/commit/3f91ae10 " +5130 area-System.Collections System.Collections.Generic: HashSet constructor throwing when passed another HashSet The constructor for HashSet that takes an IEnumerable is throwing an unexpected exception when passed another HashSet. repro test added to System.Collections test proj: ``` [Fact] public void CopyConstructor() { HashSet set = new HashSet(); HashSet set2 = new HashSet(set); // throws NullReferenceException } ``` Stack trace: ``` System.Collections.Tests.HashSet_Generic_Tests_int.CopyConstructor [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\git\corefx\src\system.collections\src\System\Collections\Generic\HashSet.cs(118,0): at System.Collections.Generic.HashSet`1..ctor(IEnumerable`1 collection, IEqualityComparer`1 comparer) D:\git\corefx\src\system.collections\src\System\Collections\Generic\HashSet.cs(96,0): at System.Collections.Generic.HashSet`1..ctor(IEnumerable`1 collection) D:\git\corefx\src\system.collections\tests\Generic\HashSet\HashSet.Generic.Tests.cs(39,0): at System.Collections.Tests.HashSet_Generic_Tests`1.CopyConstructor() ``` The throwing code was introduced in #4349 by Toni Petrina and is snippeted here: ``` ... var otherAsHashSet = collection as HashSet; if (otherAsHashSet != null && AreEqualityComparersEqual(this, otherAsHashSet)) { _buckets = (int[])otherAsHashSet._buckets.Clone(); // THROWS _slots = (Slot[])otherAsHashSet._slots.Clone(); ... ``` Note that it doesn't fail when using the System.Collections.dll in 4.0.11-rc2-23616. +5137 area-System.Net System.Net.CredentialKey and System.Net.CredentialHostKey should implement IEquatable These classes exist to be used as keys, and hence to be compared for equality. As such the faster path offered to `EqualityComparer.Default` by implementing `IEquatable` is worth obtaining. Doing so would also remove the logical error identified in #5118, and although the path with this error (throwing on comparison with other instance of another type) is unreachable, that's worth doing. +5138 area-System.Net Implement IEquatable in CredentialKey and CredentialHostKey Improve performance of these types uses as dictionary keys, which is their intended purpose. Fixes #5137 +5139 area-System.Net Make SslStream::RemoteCertificate return an X509Certificate2 object. This is the only place in all of corefx (outside of the X509Certificates tests) that instantiates an X509Certificate object (instead of an X509Certificate2). Since the property still return an X509Certificate(1), the callers would have to cast it to use the X509Certificate2-only properties, but now an `as` will suffice, whereas before it required an up-converting operation. This should alleviate the user concern from #4510. cc: @CIPop @davidsh +5141 area-System.Collections HashSet constructor perf optimization concern #4349 added an optimization to `HashSet`'s constructor when constructing from another `HashSet` with the same comparer, by cloning the other `HashSet`'s fields: ``` c# public HashSet(IEnumerable collection, IEqualityComparer comparer) : this(comparer) { ... var otherAsHashSet = collection as HashSet; if (otherAsHashSet != null && AreEqualityComparersEqual(this, otherAsHashSet)) { ... _buckets = (int[])otherAsHashSet._buckets.Clone(); _slots = (Slot[])otherAsHashSet._slots.Clone(); _count = otherAsHashSet._count; ... } .... } ``` The upside to this optimization is it's fast, but there's a downside that I haven't seen discussed: If the other set had a large number of items at one point, and was subsequently reduced in size, the new set is going to simply clone the `_buckets` and `_slots` arrays, which means the new set could be creating new arrays that are substantially larger than they need to be. For example: ``` c# var source = new HashSet(Enumerable.Range(1, 8950)); source.Clear(); source.UnionWith(Enumerable.Range(1, 20)); var destination = new HashSet(source); ``` Behavior before the #4349 optimization: - `source._buckets` and `source._slots` are of length 17,519. - `destination._buckets` and `destination._slots` are of length 23. Behavior after the #4349 optimization: - `source._buckets` and `source._slots` are of length 17,519. - `destination._buckets` and `destination._slots` are of length 17,519. A workaround would be to call `source.TrimExcess()` before using it to construct a new `HashSet`, or calling `destination.TrimExcess()` after constructing, but that won't help existing code and using `TrimExcess()` is going to result in more array allocations. It'd be nice if the optimized path didn't blindly clone potentially unnecessarily huge arrays for `_buckets` and `_slots` when smaller array sizes would be sufficient for the destination. Does anyone else share this concern? An alternative optimization might look something like: ``` c# var otherAsHashSet = collection as HashSet; if (otherAsHashSet != null && AreEqualityComparersEqual(this, otherAsHashSet)) { Initialize(otherAsHashSet.Count); int lastIndex = otherAsHashSet._lastIndex; Slot[] slots = otherAsHashSet._slots; for (int i = 0; i < lastIndex; i++) { if (slots[i].hashCode >= 0) { AddIfNotPresent(slots[i].hashCode, slots[i].value) } } } ``` Where `AddIfNotPresent` has a new overload that supports taking a pre-calculated hashcode. This entire alternative optimization could also be moved inside `UnionWith`, which would simplify the constructor and optimize `UnionWith`. cc: @tpetrina @stephentoub @ellismg @ianhays @JonHanna +5144 area-System.Net System.Net Logging Tracking Items Tracking Items for https://github.com/dotnet/corefx/pull/5101 Formatting in *EventSource classes: - [ ] Make constants have PascalCasing. - [ ] Correctly separate arguments of methods in different lines (when needed). - [ ] Add spaces needed in the attributes of the methods when not correctly aligned. - [ ] New lines after if/else blocks (mainly after the IsEnabled check). Dump Methods in SocketsEventSource: - [ ] Analyse if the method type is necessary.Change if possible to receive a Socket (hash). - [ ] Analyse if copying the buffer when it is received as an IntPtr to a byte [] is necessary. Update: After trying in different ways, I couldn't make the event method work without making a copy to a byte[]. When using the predefined WriteEvent it would only log the address and not the array. I could not make an override method work properly. Keywords: - [ ] Analyse if the right keywords are used for each event. Logging.cs class - [ ] Look for all the references done to this class in all projects and change calls to hash methods instead to LoggingHash. - [ ] Delete Logging.cs (in both S:\corefx\src\Common\src\System\Net\Logging AND S:\corefx\src\common\src\system\net) Keep in sync with Localization: - [ ] https://github.com/dotnet/corefx/issues/5126 Testing - [ ] Add some automated tests for the new EventSources created. Compatibility - [ ] Due to possible incompatibility between different versions of NetEventSource packaged inside distinct dlls, this class should not be changed in the future: > The minute you have multiple copies of an EventSource that claim to be the same identity, you have the problem of who to 'believe' at runtime (each will send out a manifest for the events). Sure if they are the same, you are OK, but if they are in different modules, there is a pretty good chance they will ship at different times, and thus you might have machines that have one copy that is older than another. This creates a bunch of subtle error modes (new events may not be recognized) that would be very difficult to diagnose. We are trying to avoid subtlety like this. Performance - [x] Update System.Net.Sockets to avoid allocations/work at call sites when logging is disabled - [x] Update System.Net.Security accordingly - [x] Update System.Net.Ping accordingly - [x] Update the rest of System.Net.\* accordingly - [x] Remove GlobalLog.Assert(bool, ...) as it leads to bad habits +5147 area-System.Collections Improve memory use of HashSet constructed from HashSet. If a `HashSet` is constructed from an existing `HashSet` then use the current approach if the count is above a particular ratio to the capacity, but if it is below that ratio (small enough that if created just from those items and then added to the next resize would still not reach that capacity) use an optimised version of `AddIfNotPresent` to add each item. Fixes #5141 @justinvp this combines your suggestion about an optimised version of `AddIfNotPresent` with mine of using the current approach above a certain threshold of count/capacity. I took that threshold as being `ExpandPrime(count + 1)` though there's no perfect value (the best value would depend on what additions where later done, and how long the produced set would be kept in memory, so it can't be perfectly deduced). Done on top of the two commits for #5131 rather than repeat things that need to be included in this. I pretty much ignored the idea of optimising `UnionWith`. That certainly could be done along the same lines, but the `AddValue` I have here couldn't be quite as tightly optimised, with the skip on tests for the item being present and the skips on incrementing the count and version having to be undone. At the very least this needs more tests before I take off the WIP tag. Contains the commits that were previously in #5131, so Fixes #5130. +5148 area-System.Net Port System.Private.Uri project configurations cc @tarekgh PTAL at the resource files when you get a chance. cc @davidsh @CIPop PTAL look at the project conversion when you get a chance. +5149 area-System.Collections System.Collections.Generic: SortedSet constructors not properly validating passed IComparer The SortedSet constructors: - `new SortedSet(IComparer< T> comparer)` - `new SortedSet(IEnumerable< T> collection, IComparer< T> comparer)` are not consistent with their behavior when `comparer` is null. The docs for [the comparer constructor](https://msdn.microsoft.com/en-us/library/dd395024%28v=vs.110%29.aspx) state that a null comparer should throw an ArgumentNullException. However, the code actually performs a check on the comparer if it is null and sets it to the default comparer if it is. The docs for [the enumerable and comparer constructor](https://msdn.microsoft.com/en-us/library/dd394885%28v=vs.110%29.aspx) neglect to mention any behavior for when the comparer is null. The code will throw a NullReferenceException on [line 148 of SortedSet.cs](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/SortedSet.cs) when it attempts to call `Compare` on the null Comparer that was passed as input. Suggested Solution: Behavior for null Comparers should be consistent across constructors. Modify the `SortedSet(IEnumerable< T> collection, IComparer< T> comparer)` constructor to use the default Comparer when the passed comparer is null. +5150 area-System.Collections Fix SortedSet constructors to use default Comparer tests coming in #754 resolves #5149 +5151 area-System.Net Deleting Logging.cs file and references Substituting Logging calls to EventSource calls, or calls to LoggingHash. Fix #5144 +5152 area-System.Numerics Should Vector.Count be readonly? ``` csharp [JitIntrinsic] public static int Count { get { return s_count; } } private static int s_count = InitializeCount(); ``` If hardware accelerated is false will `s_count` still be Jitted to a const even though its not `readonly`? Or should it be readonly? +5153 area-Infrastructure Use different strong name key for new projects Commit that key to source control and don't delay sign or oss sign those binaries. - System.Buffers - System.Text.Encodings.Web - System.Diagnostics.DiagnosticSource Anything that doesn't have the burden of assembly strong name backwards compatiblity +5156 area-System.Net Porting NegotiateStream Summary: - Porting NegotiateStream - Adding a simple Unix PAL that throws `PlatformNotSupportedException`. - Renaming Secur32 to SspiCli - Integrating with ETW Logging changes - Formatting Fix #1844, #4661 @davidsh @josguil @bartonjs @stephentoub @roncain PTAL @ericeil @vijaykota - PTAL, parts of this will need to be ported to x-plat as well. /cc: @SidharthNabar +5157 area-System.Security Unix: GetECDsaPublicKey from an unknown named curve throws ArgumentException ``` System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestECDsa224PublicKey [FAIL] System.ArgumentException : Cannot open an invalid handle. Parameter name: pkeyHandle Stack Trace: at System.Security.Cryptography.ECDsaOpenSsl..ctor(SafeEvpPKeyHandle pkeyHandle) at Internal.Cryptography.Pal.OpenSslX509CertificateReader.GetECDsaPublicKey() at Internal.Cryptography.Pal.OpenSslX509Encoder.DecodePublicKey(Oid oid, Byte[] encodedKeyValue, Byte[] encodedParameters, ICertificatePal certificatePal) at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) at System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.GetECDsaPublicKey(X509Certificate2 certificate) at System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestECDsa224PublicKey() ``` A more graceful exception seems warranted. On Windows (2008 R2): ``` Discovering: System.Security.Cryptography.X509Certificates.Tests Discovered: System.Security.Cryptography.X509Certificates.Tests Starting: System.Security.Cryptography.X509Certificates.Tests System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestECDsa224PublicKey [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown cryptographic algorithm Stack Trace: at Internal.Cryptography.Pal.X509Pal.ImportPublicKeyInfo(SafeCertContextHandle certContext) at Internal.Cryptography.Pal.X509Pal.DecodeECDsaPublicKey(CertificatePal certificatePal) at Internal.Cryptography.Pal.X509Pal.DecodePublicKey(Oid oid, Byte[] encodedKeyValue, Byte[] encodedParameters, ICertificatePal certificatePal) at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) at System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.GetECDsaPublicKey(X509Certificate2 certificate) at System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestECDsa224PublicKey() ``` +5159 area-System.IO FileStream opens in async mode by default "The following code: ``` var fs = new FileStream(""vogavoa"", FileMode.OpenOrCreate, FileAccess.Write); Console.WriteLine(fs.IsAsync); ``` Returns false for full .net and true for coreclr. shouldn't the behavior be the same? " +5162 area-System.Security Add ChaCha20-Poly1305 to CoreFX Add ChaCha20-Poly1305 to CoreFX's cipher suite. It is a very fast AEAD (significantly faster than AES-GCM except when the latter has hardware support) that is immune to side channel attacks and is relatively easy to implement. It is included in OpenSSL 1.1 or later, or in libSodium. +5165 area-System.Collections Documentation needed on System.Collections.Immutable (what exist is seriously lacking) The documentation for how to use System.Collections.Immutable is the worst I have seen of any general microsoft libraries. No general introduction and very few examples. + Most stuff that google can find on the net is outdated and may no longer work. I need quite some detective work just to find out how to instantiate an instance of an immutable list with specific values, how to convert a IEnumerable etc. +5167 area-System.Security Windows 10: x509 GetECDsa*Key fails on new keys (secp224r1, brainpool, etc) This likely applies to any curve which was added in Windows 10. The data that DecodeECDsaPublicKey (https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/X509Pal.PublicKey.cs#L64) passes into CngKey.Import ends up failing (and throwing) for curves that are not { secp256r1, secp384r1, secp521r1 }. +5168 area-Infrastructure Outerloop tests failing with packaging error System.IO.FileSystem.dll does not exist, ensure you have built libraries before building the package. ``` 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(460,5): error : File d:\j\workspace\dotnet_corefx\outerloop_win10_release\bin\Linux.AnyCPU.Release\System.IO.FileSystem\System.IO.FileSystem.dll does not exist, ensure you have built libraries before building the package. [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : Error when creating nuget package from d:\j\workspace\dotnet_corefx\outerloop_win10_release\bin\pkg\specs\runtime.unix.System.IO.FileSystem.nuspec. System.IO.DirectoryNotFoundException: Could not find a part of the path 'd:\j\workspace\dotnet_corefx\outerloop_win10_release\bin\Linux.AnyCPU.Release\System.IO.FileSystem'. [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at System.IO.FileSystemEnumerableIterator`1.CommonInit() [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at NuGet.PathResolver.PerformWildcardSearchInternal(String basePath, String searchPath, Boolean includeEmptyDirectories, String& normalizedBasePath) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at NuGet.PathResolver.ResolveSearchPattern(String basePath, String searchPath, String targetPath, Boolean includeEmptyDirectories) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at NuGet.PackageBuilder.AddFiles(String basePath, String source, String destination, String exclude) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at NuGet.PackageBuilder.PopulateFiles(String basePath, IEnumerable`1 files) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at NuGet.PackageBuilder.ReadManifest(Stream stream, String basePath, IPropertyProvider propertyProvider) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at NuGet.PackageBuilder..ctor(String path, String basePath, IPropertyProvider propertyProvider, Boolean includeEmptyDirectories) [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] 08:07:44 d:\j\workspace\dotnet_corefx\outerloop_win10_release\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00141\lib\Packaging.targets(886,5): error : at Microsoft.DotNet.Build.Tasks.Packaging.NuGetPack.Execute() [d:\j\workspace\dotnet_corefx\outerloop_win10_release\src\System.IO.FileSystem\pkg\unix\System.IO.FileSystem.pkgproj] ``` +5173 area-System.Data Certificate validation fails on osx 10.11 Moved from https://github.com/dotnet/corefx/issues/4593#issuecomment-166719300 --- I am not able to connect from OS X 10.11 to **SQL Azure** when using `Encrypt=true` in the connection string. ``` System.Data.SqlClient.SqlException : A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught) ---- System.Security.Authentication.AuthenticationException : The remote certificate is invalid according to the validation procedure. ``` [Full stack trace here](https://gist.github.com/natemcmaster/d4816c77789a08f78a41) dnx 1.0.0-rc2-16348 coreclr System.Data.SqlClient 4.0.0-rc2-23622 +5178 area-System.Net TLS Client Handshake seems to violate the protocol in unix I am currently having problem communicating with SQL Server (older version) with TLS 1.0 I do notice that the packet that was sent by SSLStream sent different versions In UNIX ![image](https://cloud.githubusercontent.com/assets/698547/12099774/6aafc6a0-b2df-11e5-8726-9f003ccd0f90.png) +5181 area-Serialization Fix serialization data contract overflow when reading object concurrently This change is to port the fix from Desktop (CS 1558305) which has been validated. @SGuyGe @shmao Fix #4504 +5183 area-System.Numerics Add support for floating point control register manipulation - esp denormal/subnormal flush-to-zero "The general request I'm making is to expose the floating point control register to managed code. I realize that could have a lot of implications, so the minimal request is exposing the denormal/subnormal flush mode, so that ""flush to zero"" can be enabled on IEEE float values. The scenario is that for certain real-time signal processing applications denormal numbers can pose performance problems. For a concrete scenario, consider the case of a real-time music synthesis program which provides various audio channels which have various audio processors operating on them. There is a class of audio processors, including delay/reverb type effects, which are implemented as IIR (infinite impulse response) filters. The character of these filters is that, when the input goes to silence, the internal state (and output) of the filter exponentially decays towards zero over time. The trouble arises if non-silent input occurs sporadically, which significant periods of silence between. In that case, it is possible for the internal state of the filter to decay to denormal float range. This usually causes a 1-2 order of magnitude cost increase in computation time, which often causes the synthesizer to glitch because it starts missing it's deadlines to provide buffers to the audio output device. The classic ""C"" solution is to enable ""flush-to-zero"" mode on the fpu, which solves the problem without code changes. The denormal threshhold is so far below audible that there is no loss of correctness for audio applications. In managed code, one could write code to detect the denormal bit pattern and flush to zero explicitly, but this comes at a performance cost, which is a pity especially since the hardware can do it for free. The reason it could be difficult is the question of how this would interoperate with other floating point consumers in the managed realm, such as WPF/winforms graphics libraries, as well as interop with unmanaged users of floating point. In general, modifying the fpu control register is very expensive (basically purges the entire processor pipeline), so it's to be done only infrequently. But correctness of other packages potentially could rely on IEEE denormal behavior. At minimum there could be a significant test impact. One mitigation could be that this option would be set on a per-thread basis, once, at thread initialization, much like the COM apartment model specification is done. That would fit well with the music synthesis world of this specific scenario, where dedicated threads are used to do the real-time work. " +5185 area-System.Net UDP tests fail with timeout sending/receiving data over loopback Hit a timeout in this test: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/565/testReport/junit/System.Net.Sockets.Tests/DualMode/ReceiveFromAsyncV6BoundToSpecificV6_Success/ ``` Stacktrace MESSAGE: System.TimeoutException : The operation has timed out. +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Tests.DualMode.ReceiveFromAsync_Helper(IPAddress listenOn, IPAddress connectTo) in d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs:line 599 at System.Net.Sockets.Tests.DualMode.ReceiveFromAsyncV6BoundToSpecificV6_Success() in d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs:line 536 ``` +5187 area-System.Net TLS 1.0 in Unix send additional 32 bytes of application data In Unix, TLS 1.0 via SSLStream send addition 32 bytes of application data. This may cause old communication server only pick the first application data. ***In Unix - TLS 1.0 - (send 2 application data - Additional 32 bytes of data) ![image](https://cloud.githubusercontent.com/assets/698547/12105337/a5388680-b308-11e5-81c0-310ccb78178a.png) ***In Windows - TLS 1.0 - (send 1 application data) ![image](https://cloud.githubusercontent.com/assets/698547/12105340/b42823d0-b308-11e5-88dd-22b7a314a410.png) ***In Unix - TLS 1.2 (send 1 application data) ![image](https://cloud.githubusercontent.com/assets/698547/12105357/e21128c8-b308-11e5-8e61-7c025082ef1d.png) +5188 area-System.Collections Add key value to KeyNotFoundException It would be great if, for example, when dictionary throws KeyNotFoundException, we can have the searched key in the exception for some traces +5189 area-System.Net Sockets.APMServer.Tests failed on OS X with unhandled SocketException 10004 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst/110/console ``` Unhandled Exception: System.Net.Sockets.SocketException: Unknown error: 10004 05:45:07 at System.Net.Sockets.Socket.Receive(IList`1 buffers, SocketFlags socketFlags) 05:45:07 at System.Net.Sockets.Tests.SendReceive.<>c__DisplayClass4_0.b__0() 05:45:07 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 05:45:10 ./run-test.sh: line 130: 62000 Abort trap: 6 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 05:45:10 error: One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 134. ``` +5190 area-Infrastructure CoreFx managed build doesn't distinguish by distro "We currently only distinguish between OSX, Linux, FreeBSD and Windows in the managed build. See https://github.com/dotnet/corefx/blob/13486efbd6619da273c6658fbf927cccd67fa27c/build.sh#L200-L220. This is sufficient for our managed implementations, but packages for the native shims require a specific OS. Today I'm ignoring this distinction and building all Linux packages on any linux distro and we need to ""know"" not to publish the centos shim packages produced from an unbuntu machine. We should clean this up. /cc @weshaggard @chcosta " +5193 area-Serialization Fix behavior difference when XmlSerializer deserializes out-of-range byte values Deserializing out-of-range byte value using XmlSerializer succeeds whereas it fails on Desktop. The reason was due to additional conditionals were used as workaround for issues on Silverlight. This change will make the behavior consistent with Desktop which is to throw InvalidOperationException when reading invalid value for byte data type. Fix #4668 @SGuyGe @shmao +5199 area-Infrastructure Build failure on master (Ubuntu Desktop 14.04.3) "Installed fresh copy of Ubuntu Desktop 14.04.3 LTS in VirtualBox 5.0.12 **Build CoreCLR on Linux (Instructs to build CoreFx as well)** https://github.com/dotnet/coreclr/blob/master/Documentation/building/linux-instructions.md installed git 1) clrjunkie@ubuntu-14-desktop:~$ cd ~ 2) clrjunkie@ubuntu-14-desktop:~$ mkdir git 3) clrjunkie@ubuntu-14-desktop:~$ cd git 4) clrjunkie@ubuntu-14-desktop:~/git$ git clone https://github.com/dotnet/coreclr.git //today 5) clrjunkie@ubuntu-14-desktop:~/git$ git clone https://github.com/dotnet/corefx.git //today 6) clrjunkie@ubuntu-14-desktop:~/git$ echo ""deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.6 main"" | sudo tee /etc/apt/sources.list.d/llvm.list 7) clrjunkie@ubuntu-14-desktop:~/git$ wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add - 8) clrjunkie@ubuntu-14-desktop:~/git$ sudo apt-get update 9) clrjunkie@ubuntu-14-desktop:~/git$ sudo apt-get install cmake llvm-3.5 clang-3.5 lldb-3.6 lldb-3.6-dev libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4-openssl-dev libssl-dev uuid-dev 10) clrjunkie@ubuntu-14-desktop:~/git$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF 11) clrjunkie@ubuntu-14-desktop:~/git$ echo ""deb http://download.mono-project.com/repo/debian wheezy main"" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list 12) clrjunkie@ubuntu-14-desktop:~/git$ sudo apt-get update 13) clrjunkie@ubuntu-14-desktop:~/git$ sudo apt-get install mono-devel 14) clrjunkie@ubuntu-14-desktop:~/git$ sudo nano /etc/security/limits.conf Add: clrjunkie soft nofile 50000 clrjunkie hard nofile 50000 15) clrjunkie@ubuntu-14-desktop:~/git$ sudo nano /etc/sysctl.conf Add: fs.file-max = 100000 16) clrjunkie@ubuntu-14-desktop:~/git$ sudo sysctl -p 17) logout & login 18) clrjunkie@ubuntu-14-desktop:~$ ulimit -Hn 50000 19) clrjunkie@ubuntu-14-desktop:~$ cd git/coreclr 20) clrjunkie@ubuntu-14-desktop:~/git/coreclr$ ./build.sh Repo successfully built. Product binaries are available at /home/clrjunkie/git/coreclr/bin/Product/Linux.x64.Debug 21) clrjunkie@ubuntu-14-desktop:~/git/coreclr$ cd ../corefx **Website doc error - Need to mention FX requires additional setup** 22) clrjunkie@ubuntu-14-desktop:~/git/corefx$ ./build.sh Setting up directories for build PCL reference assemblies not found. Please see https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md for more details. [fxbuild.txt](https://github.com/dotnet/corefx/files/80209/fxbuild.txt) **Building CoreFX on FreeBSD, Linux and OS X** https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md 23) clrjunkie@ubuntu-14-desktop:~/git/corefx$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF 24) clrjunkie@ubuntu-14-desktop:~/git/corefx$ echo ""deb http://download.mono-project.com/repo/debian wheezy main"" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list 25) clrjunkie@ubuntu-14-desktop:~/git/corefx$ echo ""deb http://jenkins.mono-project.com/repo/debian sid main"" | sudo tee /etc/apt/sources.list.d/mono-jenkins.list 26) clrjunkie@ubuntu-14-desktop:~/git/corefx$ sudo apt-get update 27) clrjunkie@ubuntu-14-desktop:~/git/corefx$ sudo apt-get install mono-snapshot-latest referenceassemblies-pcl 28) clrjunkie@ubuntu-14-desktop:~/git/corefx$ . mono-snapshot mono 29) [mono-2016.01.05+18.26.39]clrjunkie@ubuntu-14-desktop:~/git/corefx$ sudo ln -s /usr/lib/mono/xbuild-frameworks/.NETPortable/ $MONO_PREFIX/lib/mono/xbuild-frameworks/ 30) [mono-2016.01.05+18.26.39]clrjunkie@ubuntu-14-desktop:~/git/corefx$ ./build.sh 7 Warning(s) 73 Error(s) Time Elapsed 01:50:40.53 Build Exit Code = 1 (Attached full log) " +5200 area-System.Net ReceiveAsync cancellation throws WebSocketException and terminates the socket await Socket.ReceiveAsync( new ArraySegment( Buffer ), Ct ); cannot be cancelled on a ClientWebSocket when Ct is the CancellationToken. Instead of throwing a OperationCanceledException and keeping the socket alive, the following exception is thrown and the socket is aborted: System.Net.WebSockets.WebSocketException: The 'System.Net.WebSockets.InternalClientWebSocket' instance cannot be used for communication because it has been transitioned into the 'Aborted' state. ---> System.Net.Http.WinHttpException: The operation has been canceled This is true for both the ClientWebSocket and on a server socket when WebListener is used. When Kestrel is used, ReceiveAsync CAN be cancelled on the SERVER, the cancellation takes about 10 seconds though. Minimal solution with both the client and server part to reproduce on Stack Overflow: http://stackoverflow.com/questions/34634652/dnx-core-websocket-clientwebsocket-receiveasync-cancellation-is-not-working-p +5202 area-System.Numerics [API Proposal] Support for constructing and copying Vector from pointers # Summary Currently, the System.Numerics.Vectors library provides no way to construct `Vector` objects out of native pointers, or from anything other than an array or a single constant element. Although part of the draw of this library is access to high-performance vector math without resorting to native or unsafe code, there’s a lot of reasons you might have your data stored somewhere outside of a managed array. It’s not reasonable to copy all of your data into an array just to do vector operations on it, and then copy it back to its original location. Additionally, you might want to construct a one-off vector from the stack (perhaps using `stackalloc`), without having to make an entire array for the purpose of a single vector. Even if you have a safe `IntPtr` to your storage location, you cannot currently construct a `Vector` from it. We should expose better support for, at the very least, constructing `Vector`’s from arbitrary pointers, and storing them back into arbitrary locations. # Proposed API ``` CSharp public struct Vector { public Vector(void* dataPointer); public Vector(void* dataPointer, int offset); public Vector(IntPtr dataPointer); public Vector(IntPtr dataPointer, int offset); public void CopyTo(void* destination); public void CopyTo(void* destination, offset); public void CopyTo(IntPtr destination); public void CopyTo(IntPtr destination, offset); } ``` Because all pointer types can be implicitly converted to a `void*` pointer, you can use the first overloads above to load a `Vector` by passing a `float*` for example. It also allows you to load a `Vector` with any other pointer type, but in my opinion this is not a problem. Even with the alternate approach below (see “Alternative Approaches”), you can simply cast a pointer type to another and construct any kind of `Vector` you would like. This is desirable in some situations if you want to perform different calculations or reinterpret your data in some way. ## Constructor This behaves exactly the same way as the constructor taking an array, and allows an optional offset to be given in order to skip elements at the beginning of your storage. ## CopyTo This behaves exactly the same way as `CopyTo(T[])`, also with an optional offset to control the storage location. # JIT Recognition These new overloads must be recognized by the JIT. Functionally, they are pretty much identical to the existing overloads which operate on arrays. # Alternative Approach Instead of a “universal” pointer constructor, we could expose some “factory” methods which take a specifically-typed pointer and return a specifically typed `Vector`. ``` CSharp public static Vector Load(byte* dataPointer, int offset); public static Vector Load(int* dataPointer, int offset); public static Vector Load(float* dataPointer, int offset); ... ``` I don’t personally favor this approach as using static methods for construction doesn’t necessarily mesh with the existing usage patterns, and it also just adds a lot more methods than constructors (two per primitive type, so 20 in total). Also, It would still make sense to add the `IntPtr` constructor even if we went this route. Related to https://github.com/dotnet/corefx/issues/5106, https://github.com/dotnet/corefx/issues/3741 I have part of the additions (`void*` overloads) implemented in [this branch](https://github.com/mellinoe/corefx/commit/b7c5db276ac89dd599d9d088d0a467482ca340e8) with tests added. # Clarifications ### Q: Since `Vector` is a struct, why do we need special constructors for pointers pointers? Other BCL structures don't need special constructors for this, you can just cast, de-reference, etc. Because `Vector` is a generic struct, you can't directly take it's address, nor have a pointer to it. ``` error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type ('Vector') ``` Consider `Vector4`, which is sort of similar to `Vector`. If you want to get a `Vector4` from a `float*` or vice-versa, you can just do the following, and you don't need a specialized constructor for it: ``` CSharp float* data = stackalloc float[4]; Vector4 vec = *(Vector4*)data; Vector4* vectorData = stackalloc Vector4[100]; Vector4 first = vectorData[0]; float* xPtr = &first.X; // etc. ``` Because `Vector` is generic, the above mechanisms aren't applicable and you're much more limited in how you can constructor and store them with pointers. +5203 area-System.ComponentModel Fix CustomValidationAttribute to properly implement RequiresValidatonContext Squashed replacement for https://github.com/dotnet/corefx/pull/3794 +5204 area-Infrastructure corefx code coverage runs are consistently failing in CI "Some are failing with errors like this in the log: ``` 12:13:13 An exception occured: Failed to register(user:True,register:True,is64:False):5 the profiler assembly; you may want to look into permissions or using the -register:user option instead. C:\Windows\system32\regsvr32.exe /s /n /i:user ""d:\j\workspace\dotnet_corefx\code_coverage_windows\packages\OpenCover\4.6.166\tools\x86\OpenCover.Profiler.dll"" 12:13:13 stack: at OpenCover.Framework.ProfilerRegistration.ExecuteRegsvr32(Boolean userRegistration, Boolean register, Boolean is64) in c:\projects\opencover\main\OpenCover.Framework\ProfilerRegistration.cs:line 66 12:13:13 at OpenCover.Console.Program.RunWithContainer(CommandLineParser parser, Bootstrapper container, IPersistance persistance) in c:\projects\opencover\main\OpenCover.Console\Program.cs:line 114 12:13:13 at OpenCover.Console.Program.Main(String[] args) in c:\projects\opencover\main\OpenCover.Console\Program.cs:line 57 12:13:14 d:\j\workspace\dotnet_corefx\code_coverage_windows\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00142\lib\tests.targets(129,5): warning MSB3073: The command ""d:\j\workspace\dotnet_corefx\code_coverage_windows\packages/OpenCover\4.6.166\tools\OpenCover.Console.exe -filter:""+[*]* -[*.Tests]*"" -excludebyfile:""*\Common\src\System\SR.*"" -nodefaultfilters -excludebyattribute:*.ExcludeFromCodeCoverage* -skipautoprops -hideskipped:All -threshold:1 -returntargetcode -register:user -target:d:\j\workspace\dotnet_corefx\code_coverage_windows\bin/tests/Windows_NT.AnyCPU.Debug\System.Net.Primitives.Pal.Tests\dnxcore50/CoreRun.exe -output:d:\j\workspace\dotnet_corefx\code_coverage_windows\bin/tests/coverage\System.Net.Primitives.Pal.Tests.coverage.xml -targetargs:""xunit.console.netcore.exe System.Net.Primitives.Pal.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait Benchmark=true -notrait category=OuterLoop -notrait category=failing """" exited with code 1. [d:\j\workspace\dotnet_corefx\code_coverage_windows\src\System.Net.Primitives\tests\PalTests\System.Net.Primitives.Pal.Tests.csproj] ``` Others are failing with errors like this in the log: ``` 16:21:59 Unhandled Exception: System.OverflowException: Array dimensions exceeded supported range. 16:21:59 at OpenCover.Framework.Communication.CommunicationManager.HandleMemoryBlock(IManagedMemoryBlock mmb) in c:\projects\opencover\main\OpenCover.Framework\Communication\CommunicationManager.cs:line 82 16:22:00 at OpenCover.Framework.Manager.ProfilerManager.<>c__DisplayClass24.b__22(Object state) in c:\projects\opencover\main\OpenCover.Framework\Manager\ProfilerManager.cs:line 248 16:22:00 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 16:22:00 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 16:22:01 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 16:22:01 at System.Threading.ThreadPoolWorkQueue.Dispatch() ``` We haven't updated to a newer version of OpenCover since July, and these issues only just started happening in the last few days, implying to me this is somehow infrastructure related...? " +5205 area-System.Runtime API review: During shutdown, revisit finalization and provide a way to clean up resources "Running finalizers on reachable objects during shutdown is currently unreliable. This is a proposal to fix that and provide a way to clean up resources on shutdown in a reliable way. ## Issues observed on shutdown Currently, a best-effort attempt is made to run finalizers for all finalizable objects during shutdown, including reachable objects. Running finalizers for reachable objects is not reliable, as the objects are in an undefined state. - In order to finalize reachable objects, threads must be blocked, since objects that are still reachable cannot be used during or after finalization. Later, threads are terminated without running any more user code. - Running user code in finalizers after blocking other threads is unreliable, as those threads may be blocked at an inopportune point, and may cause finalizers to block indefinitely or result in undefined behavior due to the undefined state of the object - Example from a user code perspective. Consider an object that writes to a network stream using some stateful communication protocol. The finalizer would write a termination value to the stream and close the stream. Suppose that the termination value indicates to the receiving end that all data has been written, while abruptly closing the stream without writing the termination value would indicate incomplete transmission due to disconnection or some other reason. Writing the termination value in the finalizer assumes that there are no more references to the object, indicating that all data has been written. Suppose that a background thread is using the object, writing data to the pipe. During shutdown, the background thread is blocked at some arbitrary point, and the object is still referenced. Writing the termination value to the pipe in the finalizer at that point may be invalid according to the protocol. - Example from a runtime perspective. If a thread is blocked during GC, and a finalizer tries to allocate something, it may block waiting for GC to complete, which will never happen. The finalizer itself may not even allocate anything, but even just jitting the finalizer method will trigger allocation. While this particular issue can be fixed separately, it demonstrates the unreliability of the current design not just from a user code perspective but from a runtime perspective. - Effectively, the best-effort attempt to run finalizers for reachable finalizable objects is not reliable. ## Proposal - Don't run finalizers on shutdown (for reachable or unreachable objects) - Don't block threads on shutdown - Don't do a GC on shutdown (no change from current behavior) - Under this proposal, it is not guaranteed that all finalizable objects will be finalized before shutdown. - Doing a GC on shutdown and running finalizers for unreachable objects can guarantee that objects that are deterministically unreachable by the time of shutdown will be finalized. However, such objects should also be deterministically disposed before shutdown. For cases that require this, the user can trigger a GC explicitly and wait for finalizers before shutdown. - When there are background threads that are still running, there would be no guarantee on how many objects will be finalized anyway - Provide a public AssemblyLoadContext.Unloading event - An AssemblyLoadContext manages the lifetime of assemblies loaded under that context - Code should register for the event in the AssemblyLoadContext instance associated with the assembly - The event is raised when the GC determines that the AssemblyLoadContext instance is no longer referenced. For the default AssemblyLoadContext instance and for a custom instance installed as the default load context, the event will be raised before normal shutdown. - Abrupt shutdown due to unhandled exception, process kill, etc., will not raise any further Unloading events - As unloading an AssemblyLoadContext is not yet implemented, instances that have been used to load assemblies will currently live until the end of the process - No timeout. The timeout on waiting for finalizers to complete on shutdown was removed in CoreCLR some time back. In favor of treating blocking issues as program errors, no timeout will be used for this event either. - Event handler exceptions will crash the process. Any exception propagating out of an event handler will be treated as an unhandled exception. - Since other threads are not blocked before this, and may continue to run for a short period after the event is raised, event handlers may need to handle concurrency, and safeguard from using cleaned up resources from other threads ### Behavioral change ``` c# public static void Main() { var obj = new MyFinalizable(); } private class MyFinalizable { ~MyFinalizable() { Console.WriteLine(""~MyFinalizable""); } } ``` Previous output: ~MyFinalizable Typical output with the proposal above (running the finalizer is not guaranteed, but may run if a GC is triggered): (empty) ## Proposed API ``` c# namespace System.Runtime.Loader { public abstract class AssemblyLoadContext { public event Action Unloading; } } ``` ### Example ``` c# public class Logger { private static readonly object s_lock = new object(); private static bool s_isClosed = false; static Logger() { var currentAssembly = typeof(Loader).GetTypeInfo().Assembly; AssemblyLoadContext.GetLoadContext(currentAssembly).Unloading += OnAssemblyLoadContextUnloading; // Create log file based on configuration } private static void OnAssemblyLoadContextUnloading(AssemblyLoadContext sender) { // This may be called concurrently with WriteLine Close(); } private static void Close() { lock (s_lock) { if (s_isClosed) return; s_isClosed = true; // Write remaining in-memory log messages to log file and close log file } } public static void WriteLine(string message) { lock (s_lock) { if (s_isClosed) return; // Save log message in memory, if buffer is full, write messages to log file } } } ``` " +5206 area-Serialization XmlDictionaryReader removing significant whitespace "Using XmlDictionaryReader wrapped in a XmlReader to parse element with white spaces results in the white spaces being skipped. The MSDN suggests this is a by-design behavior. However XML specs indicates white spaces in content are significant and should not be ignored. The following is the test demonstrating the issue: ``` static Stream GetXmlStream() { //var sourceXml = ""a\r\nb\r\nc""; return new MemoryStream(Encoding.UTF8.GetBytes(sourceXml), false); } static XmlReaderSettings GetXmlSettings() { return new XmlReaderSettings() { IgnoreWhitespace = true }; } static string Escape(string s) { return s.Replace(""\r"", ""\\r"").Replace(""\n"", ""\\n""); } static string PrintNodes(string header, XmlReader r) { var sb = new StringBuilder(); //Console.WriteLine($""--== {header} ==--""); while (r.Read()) { //Console.Write(""{0}"", r.NodeType); sb.Append(string.Format(""{0}"", r.NodeType)); switch (r.NodeType) { case XmlNodeType.Element: { //Console.Write("" {0}="", r.Name); sb.Append(string.Format("" {0}="", r.Name)); goto case XmlNodeType.Text; } case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: { //Console.Write("" \""{0}\"""", Escape(r.Value)); sb.Append(string.Format("" \""{0}\"""", Escape(r.Value))); break; } } //Console.WriteLine(); } return sb.ToString(); } [Fact] public static void XmlReaderTest() { var s1 = PrintNodes(""XmlDictionaryReader"", XmlDictionaryReader.CreateTextReader(GetXmlStream(), new XmlDictionaryReaderQuotas())); var s2 = PrintNodes(""XmlReader"", XmlReader.Create(GetXmlStream(), GetXmlSettings())); var s3 = PrintNodes(""XmlReader(XmlDictionaryReader)"", XmlReader.Create(XmlDictionaryReader.CreateTextReader(GetXmlStream(), new XmlDictionaryReaderQuotas()), GetXmlSettings())); Assert.StrictEqual(@""XmlDeclarationElement Value= """"""""Text """"a""""SignificantWhitespace """"\n""""Text """"b""""SignificantWhitespace """"\n""""Text """"c""""EndElement"", s1); Assert.StrictEqual(@""XmlDeclarationElement Value= """"""""Text """"a\nb\nc""""EndElement"", s2); Assert.StrictEqual(@""XmlDeclarationElement Value= """"""""Text """"a""""SignificantWhitespace """"\n""""Text """"b""""SignificantWhitespace """"\n""""Text """"c""""EndElement"", s3); } ``` " +5207 area-System.Net Fix #3610 Fixes #3610. These tests were failing due to a problem with re-use of `SocketAsyncEventArgs` objects. `args.SetBuffer(null, 0, 0)` unpins the buffer, and other miscellaneous items. Subsequent re-use of the `SocketAsyncEventArgs` object is supposed to pin whatever buffers, etc., are current, but will only do so if the previous cached pointers appear to be invalid. 86241bd4e80971e803b1c7440888fee23afaa1d3 fixed this for the buffer itself; this change implements the same pattern for the other pinned items. @stoub, @pgavlin, @CIPop +5211 area-System.Net Add CancellationToken overloads to async methods in System.Net.Security Ref: #4732 +5212 area-System.Reflection API review: System.Reflection.Metadata debug directory reading + misc Tracking the pending API review for PRs #5009 and #5018 ## New types ``` C# namespace System.Reflection { public enum MethodSemanticsAttributes { Setter = 0x0001, Getter = 0x0002, Other = 0x0004, Adder = 0x0008, Remover = 0x0010, Raiser = 0x0020, } } namespace System.Reflection.PortableExecutable { public struct CodeViewDebugDirectoryData { public Guid Guid { get; } public int Age { get; } public string Path { get; } } public struct DebugDirectoryEntry { public uint Stamp { get; } public ushort MajorVersion { get; } public ushort MinorVersion { get; } public DebugDirectoryEntryType Type { get; } public int DataSize { get; } public int DataRelativeVirtualAddress { get; } public int DataPointer { get; private set; } public DebugDirectoryEntry( uint stamp, ushort majorVersion, ushort minorVersion, DebugDirectoryEntryType type, int dataSize, int dataRelativeVirtualAddress, int dataPointer) } public enum DebugDirectoryEntryType { Unknown = 0, Coff = 1, CodeView = 2, Deterministic = 16, } } ``` ## New members ``` C# namespace System.Reflection.PortableExecutable { public struct DirectoryEntry { + public DirectoryEntry(int relativeVirtualAddress, int size); } public sealed class PEReader { + public ImmutableArray ReadDebugDirectory(); + public CodeViewDebugDirectoryData ReadCodeViewDebugDirectoryData( DebugDirectoryEntry entry); } } namespace System.Reflection.Metadata { public struct BlobReader { + public Guid ReadGuid(); } } ``` +5217 area-System.Reflection Add signing support to System.Reflection.Metadata There is already work in progress to [add the capability](https://github.com/dotnet/cli/issues/720) to the `dotnet` tool However, compilers usually do strong naming as part of the compilation process. This requires having a library that can be used to perform the signing. It seems `System.Reflection.Metadata` is the right location said functionality, especially when we support writing metadata. Compiler integration is also most logical way to make these attributes work: - `AssemblyDelaySignAttribute` - `AssemblyKeyFileAttribute` - `AssemblyKeyNameAttribute` +5222 area-System.Numerics Vector2 precision I'm finding Vector2's precision to be completely unsuitable for my app (a sketching application with lots of trigonometry), and I'm wondering what the sanctioned Vector with double precision elements are? There was the one in WPF, of course, but for a universal app we can't use that. There is Point, but it doesn't provide much of the necessary math. Are people just rolling their own when they need it? +5223 area-System.Drawing Add System.Drawing.Primitives contract to .NET Core. +5228 area-System.IO Add tests for BufferedStream This PR has two commits: - The first commit adds tests for BufferedStream and consolidates some of the existing tests - The second commit modifies all System.IO tests to be in the System.IO.Tests namespace. It also simplifies all of the variable declarations. resolves #5086 @stephentoub +5230 area-Infrastructure VB projects cannot be built on non-Windows platforms "We only have one in the repo here, but I believe there is an issue in the x-plat version of MSBuild that is causing these to fail. I think the problem is that this Task (https://github.com/Microsoft/msbuild/blob/xplat/src/Utilities/ToolTask.cs) has a workaround to normalize all backslashes to forward-slashes, for file paths. Unfortunately it does that on the entire response file we generate to pass to vbc.exe. The define constants have quotation marks in them that need to be escaped, so we initially start with something like ``` -define: ""CONFIG=\""Debug\"" ``` which gets normalized to ``` -define: ""CONFIG=/""Debug/"" ``` which is no longer valid, and causes vbc.exe to error out. I've manually invoked vbc.exe with the same command line, but with the backslashes put back in, and it seems to work fine. @weshaggard " +5232 area-System.Net Merge changes from TFS +5233 area-Infrastructure NuGet packages cannot be built on Ubuntu (Probably other non-Windows platforms as well) There seems to be some path issue on Ubuntu when running the package build on Ubuntu. It seems like some paths are not being combined properly, or something of the sort. The inputs to the packaging task seem to be correct, though, so there may be an issue in the NuGet task itself. Here's a representative error: ``` /home/eric/projects/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00144/lib/Packaging.targets : error : Error when creating nuget package from /home/eric/projects/corefx/bin/pkg/specs/System.Reflection.Metadata.nuspec. System.IO.DirectoryNotFoundException: Directory '/home/eric/projects/corefx/bin/pkg/specs/home/eric/projects/corefx/bin/AnyOS.AnyCPU.Debug/System.Reflection.Metadata' not found. [/home/eric/projects/corefx/src/System.Reflection.Metadata/pkg/System.Reflection.Metadata.pkgproj] ``` Notice the path: **/home/eric/projects/corefx/bin/pkg/specs/home/eric/projects/corefx/bin/AnyOS.AnyCPU.Debug/System.Reflection.Metadata** is malformed and includes the whole project directory prefix twice. [Full build output with stacktrace](https://gist.github.com/mellinoe/053405a1187abb91abf3) @ericstj , @weshaggard +5234 area-System.Net UDP tests fail with invalid checksum ``` System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Single_Datagram_UDP_IPv4 [FAIL] 11:27:58 Assert.Equal() Failure 11:27:58 Expected: 0 11:27:58 Actual: 1161193313 11:27:58 Stack Trace: 11:27:58 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(121,0): at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/682/console +5235 area-Infrastructure Build.sh runs tests that should not be supported Running build.sh on Ubuntu (for example) will run the Microsoft.Win32.Registry tests, as well as a bunch of other inapplicable test projects. It seems that only runtests.sh is actually detecting which projects should be skipped. +5236 area-Infrastructure GenFacades failure in CI due to file in use "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/689/consoleFull#-37241274779494335-f7bd-47d0-8771-8661e00c2db2 cc @mellinoe @weshaggard ``` 11:29:16 Unhandled Exception: System.IO.IOException: The process cannot access the file 'd:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin\obj\AnyOS.AnyCPU.Debug\System.Runtime\System.Runtime.dll' because it is being used by another process. 11:29:16 at System.IO.Win32FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs) 11:29:16 at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 11:29:16 at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 11:29:16 at GenFacades.Program.OutputFacadeToFile(String facadePath, HostEnvironment seedHost, Assembly facade, IAssembly contract, String pdbLocation) 11:29:16 at GenFacades.Program.Main(String[] args) 11:29:16 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00144\lib\partialfacades.targets(101,5): error MSB3073: The command """"d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin/obj/AnyOS.AnyCPU.Debug\ToolRuntime\CoreRun.exe"" ""d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00144/lib/GenFacades.exe"" -partialFacadeAssemblyPath:""d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin/obj/AnyOS.AnyCPU.Debug\System.Runtime\PreGenFacades\System.Runtime.dll"" -contracts:""d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin\ref\System.Runtime\4.0.21.0\System.Runtime.dll"" -seeds:""d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\packages/Microsoft.TargetingPack.Private.CoreCLR\1.0.0-rc2-23520\ref\dnxcore50\mscorlib.dll;d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin\Windows_NT.AnyCPU.Debug\System.Private.Uri\System.Private.Uri.dll"" -facadePath:""d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin/obj/AnyOS.AnyCPU.Debug\System.Runtime"""" exited with code -532462766. [d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\src\System.Runtime.csproj] ``` " +5238 area-System.Net Significantly reduce release logging overhead in System.Net.Sockets Logging work that's happening in System.Net.Sockets in release builds and even when logging is disabled is resulting in significant impact on both memory allocated and on throughput. This set of commits adjusts how the logging is done so that work which happens at the call site only occurs if logging is enabled, if an assertion's condition fails, etc. This includes lots of string allocation, array allocation, array copies, hashing, etc. @pgavlin shared with me a simple set of tests that just have a client connect up to a server and receive a bunch of data. Prior to these changes, running this test with 4096 clients receiving 128 bytes each, the test client allocated ~45MB. After these changes, the client allocated only ~15MB. Throughput on the client also improved by ~20% on my machine. (This is on Windows with a release build of System.Net.Sockets.dll and with logging disabled.) cc: @pgavlin, @CIPop, @davidsh, @ericeil, @josguil Example before: ![image](https://cloud.githubusercontent.com/assets/2642209/12184632/620b0a1e-b564-11e5-9d48-b45e9884809b.png) Example after: ![image](https://cloud.githubusercontent.com/assets/2642209/12184576/0b3dce42-b564-11e5-9e3c-99871f89631c.png) +5241 area-System.Security WindowsIdentity ctor doesn't support WindowsAccountType and isAuthenticated The ctor was used by NegotiateStream to create an authenticated WindowsIdentity (in NegoState.Windows.cs:333). The lack of the ctor causes a difference in the behavior of NegotiateStream on .Net Desktop vs CoreFX. +5244 area-System.Linq Should Expression.TypeIs allow void as a type argument? "Currently any expression will compare with `void` with `TypeIs` as `false`: ``` C# Expression.Lambda>( Expression.TypeIs(Expression.Empty(), typeof(void)) ).Compile()() // false ``` This is at odds with `TypeEqual`: ``` C# Expression.Lambda>( Expression.TypeEqual(Expression.Empty(), typeof(void)) ).Compile()() // true ``` The decision happens at `AnalyzeTypeIs()` which is commented as saying: ``` C# // Oddly, we allow void operands // This is LinqV1 behavior of TypeIs ``` Arguably, its not that odd to allow void operands, considering that expressions of void type are allowed, or more reasonaly that dynamic use could mean passing something an expression of type `void` one time and a different type another. This also makes it a logical exception to the comment saying the result should match the result of `isinst` since there's no way to pass a void expression's value to in CIL (obviously enough as it doesn't have one). The differences between expression trees and CIL (and C#, VB.NET, etc.) are such that what is meaningless in CIL is meaningful, though constant, in trees. As such it seems to me that the value of `Expression.TypeIs(Expression.Empty(), typeof(void))` should be true, rather than false. In the other direction, we allow `Expression.TypeIs(Expression.Constant(""hello""), typeof(void))` but: ``` C# Expression.Lambda>(Expression.TypeIs(Expression.Constant(""hello""), typeof(void))).Compile()() ``` Throws `InvalidProgramException`. By the same reasoning as above it would make sense for this to return false. This would also make it match `IsInstanceOf()` (but not `isinst` but again that isn't as meaningful in CIL as it is in trees). " +5246 area-System.Net SendReceive.SendRecvAsync_TcpListener_TcpClient_IPv4 failed in CI on CentOS http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_debug_tst_prtest/608/console ``` 05:24:14 System.Net.Sockets.Tests.SendReceive.SendRecvAsync_TcpListener_TcpClient_IPv4 [FAIL] 05:24:14 Assert.True() Failure 05:24:14 Expected: True 05:24:14 Actual: False 05:24:14 Stack Trace: 05:24:14 at System.Net.Sockets.Tests.SendReceive.SendRecvAsync_TcpListener_TcpClient(IPAddress listenAt) 05:24:14 at System.Net.Sockets.Tests.SendReceive.SendRecvAsync_TcpListener_TcpClient_IPv4() 05:24:15 05:24:15 Unhandled Exception: Xunit.Sdk.TrueException: Assert.True() Failure 05:24:15 Expected: True 05:24:15 Actual: False 05:24:15 at Xunit.Assert.True(Nullable`1 condition, String userMessage) 05:24:15 at System.Net.Sockets.Tests.SendReceive.<>c__DisplayClass2_0.b__1(Int32 sent) 05:24:15 at System.Net.Sockets.Tests.SocketAsyncExtensions.<>c__DisplayClass7_0.b__0(Object _, SocketAsyncEventArgs args) 05:24:15 at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) 05:24:15 at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object ignored) 05:24:15 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 05:24:15 at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) 05:24:15 at System.Net.Sockets.SocketAsyncEventArgs.CompletionCallback(Int32 bytesTransferred, SocketError socketError) 05:24:15 at System.Net.Sockets.SocketAsyncEventArgs.TransferCompletionCallback(Int32 bytesTransferred, Byte[] socketAddress, Int32 socketAddressSize, SocketFlags receivedFlags, SocketError socketError) 05:24:15 at System.Net.Sockets.SocketAsyncContext.<>c.b__48_0(Object args) 05:24:15 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 05:24:15 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 05:24:15 at System.Threading.ThreadPoolWorkQueue.Dispatch() ``` cc: @pgavlin, @ericeil, @cipop +5247 area-System.Linq Expression.TypeEquals throws on void-typed operand in Interpreter These work fine with the compiler: ``` C# Expression.Lambda>( Expression.TypeEqual(Expression.Empty(), typeof(void)) ).Compile(false)(); // true Expression.Lambda>( Expression.TypeEqual(Expression.Empty(), typeof(int)) ).Compile(false)(); // false ``` These throw `IndexOutOfRangeException` (or hit an assert in debug): ``` C# Expression.Lambda>( Expression.TypeEqual(Expression.Empty(), typeof(void)) ).Compile(true)(); Expression.Lambda>( Expression.TypeEqual(Expression.Empty(), typeof(int)) ).Compile(true)(); ``` CC: @bartdesmet @VSadov +5248 area-System.IO Cross-platform way of getting HOME directory Right now there doesn't seem to be any simple cross-platform way of getting the current home directory. This would seem to be a common-enough need, especially as .NET Core begins to be used outside of web apps. One complication as to why this is non-trivial is that the environment variable to this location is different on different OS's. Developers should not need to be aware of this just to get a home directory. It seems like there is some code to do this internally and it's even more complicated than I initially thought: https://github.com/dotnet/corefx/blob/d8508b20caa5fe523f1552cde174cb9ba5c31730/src/Common/src/System/IO/PersistedFiles.Unix.cs#L100 I wouldn't expect anyone to get that right if they had to do that on their own. I don't have any specific proposals but something might fit into the Environment class to return that. +5250 area-System.Net Guard logging usage behind IsEnabled checks in the rest of System.Net.* Same treatment as in #5238, but for the rest of System.Net. I may have missed a call site here or there, but those can be fixed as one-offs. Contributes to #5144 cc: @ericeil, @pgavlin, @davidsh, @cipop, @josguil +5251 area-System.Net Unix SslStream may be reporting ECDH exchanges as ECDSA There may be no bug here. I merely saw some code that confused me while fixing another issue, and feel that it warrants investigation. If it's correct, it probably warrants a comment :smile:. https://github.com/dotnet/corefx/blob/71544a4ea55406740b1d3a00667b3ef0b816c9a2/src/Native/System.Security.Cryptography.Native/pal_ssl.cpp#L426-L433 ``` c++ case SSL_KeyExchangeAlgorithm::SSL_kECDHr: return ExchangeAlgorithmType::SSL_ECDH; case SSL_KeyExchangeAlgorithm::SSL_kECDHe: return ExchangeAlgorithmType::SSL_ECDSA; case SSL_KeyExchangeAlgorithm::SSL_kEECDH: return ExchangeAlgorithmType::SSL_ECDSA; ``` Note that ECDHr says ECDH, while ECDHe and EECDH say ECDSA. Based on comparison against what might be a trace helper in OpenSsl (https://github.com/openssl/openssl/blob/bc71f91064a3eec10310fa4cc14fe2a3fd9bc7bb/ssl/t1_trce.c#L909) I can understand why ECDHe and EECDH say ECDSA, but then I'd expect ECDHr to say RSA. Really these need to be validated against what we say in Windows for the same session types. +5252 area-System.Data SQL Client: Unable to load sni.dll (DllNotFoundException) Several customers have reported errors loading sni.dll. This is not the same as https://github.com/dotnet/corefx/issues/3760 because installing the Microsoft Visual C++ 2012 Redistributable does not resolve the issue. Examples of the customer reports are on https://github.com/aspnet/EntityFramework/issues/4162. Many of those are seeing the error when using EF7 but have confirmed that the error reproduces when using SQL Client directly. Several people have reported that the error occurs under the following environment > coreclr-x64-rc1-update1 with IIS 7.5 on Windows Server 2008 R2 with C++ redistributable installed (x64 & x86). Full details of the exception... ``` The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception.Exception caught: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception.Exception caught: Unable to load DLL 'C:\Users\ddragan\.dnx\packages\runtime.win7-x64.System.Data.SqlClient.sni\4.0.0-beta-23616\runtimes\win7-x64\native\sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)Exception thrown: 'System.TypeInitializationException' in Platform.Authentication Exception thrown: 'System.TypeInitializationException' in mscorlib.ni.dll Microsoft.AspNet.Diagnostics.ExceptionHandlerMiddleware:Error: An unhandled exception has occurred: The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'C:\Users\ddragan\.dnx\packages\runtime.win7-x64.System.Data.SqlClient.sni\4.0.0-beta-23616\runtimes\win7-x64\native\sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Runtime.Loader.AssemblyLoadContext.InternalLoadUnmanagedDllFromPath(String unmanagedDllPath) at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Host.LoaderContainer.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadUnmanagedDll(String unmanagedDllName) at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unmanagedDllName, IntPtr gchManagedAssemblyLoadContext) at System.Data.SqlClient.SNINativeMethodWrapper.SNIInitialize(IntPtr pmo) at System.Data.SqlClient.SNILoadHandle..ctor() at System.Data.SqlClient.SNILoadHandle..cctor() --- End of inner exception stack trace --- at System.Data.SqlClient.TdsParser..cctor() --- End of inner exception stack trace --- at ExternalDataAccessor.GetFirm(String firmName) ``` +5253 area-System.Net Unix SslStream: SSL_KeyExchangeAlgorithm values may no longer match OpenSSL "While looking into the background for #5251 I ran across a commit in OpenSSL that looks like it'll break assumptions made in `pal_ssl.cpp`. Namely https://github.com/openssl/openssl/commit/bc71f91064a3eec10310fa4cc14fe2a3fd9bc7bb: ``` diff /* tmp DH key no DH cert */ -# define SSL_kDHE 0x00000008U +# define SSL_kDHE 0x00000002U /* synonym */ # define SSL_kEDH SSL_kDHE /* ECDH cert, RSA CA cert */ -# define SSL_kECDHr 0x00000020U +# define SSL_kECDHr 0x00000004U /* ECDH cert, ECDSA CA cert */ -# define SSL_kECDHe 0x00000040U +# define SSL_kECDHe 0x00000008U /* ephemeral ECDH */ -# define SSL_kECDHE 0x00000080U +# define SSL_kECDHE 0x00000010U /* synonym */ # define SSL_kEECDH SSL_kECDHE ``` These values come from a non-public header (ssl_locl.h). We very likely need a new mechanism for determining these values. The most public way that I see is to use the `SSL_CIPHER->name` value, and compare it against the public identifiers (e.g. `SSL_TXT_kECDHr`); but that's not from in-depth investigation. ``` jbarton@jsb-ubuntu2:/usr/include/openssl$ grep -i ecdhr * ssl.h:#define SSL_TXT_kECDHr ""kECDHr"" jbarton@jsb-ubuntu2:/usr/include/openssl$ ``` " +5255 area-System.Drawing Implement IEquatable interface on System.Drawing structs This requires changes to the .NET Full Framework code as well, changes to .NET Core to be made after following up with the desktop release cycles to ensure no breaks happen. Follow up from PR #1563 # Motivation These structures all have equality operators, they should also implement the IEquatable interface. # Proposed API ``` C# namespace System.Drawing { public struct Color : IEquatable { public bool Equals(Color other); } public struct Point : IEquatable { public bool Equals(Point other); } public struct PointF : IEquatable { public bool Equals(PointF other); } public struct Rectangle : IEquatable { public bool Equals(Rectangle other); } public struct RectangleF : IEquatable { public bool Equals(RectangleF other); } public struct Size : IEquatable { public bool Equals(Size other); } public struct SizeF : IEquatable { public bool Equals(SizeF other); } } ``` +5256 area-System.Drawing Write alternate implementations for GetHashCode System.Drawing float types. PR: #5223, [comment](https://github.com/dotnet/corefx/pull/5223#discussion_r49156587) This also requires changes to .NET Full Framework desktop code. +5258 area-System.Net SendToRecvFromAsync_Single_Datagram_UDP_IPv4 failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/731/ ``` 13:26:44 System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Single_Datagram_UDP_IPv4 [FAIL] 13:26:44 Assert.Equal() Failure 13:26:44 Expected: 0 13:26:44 Actual: 2413092642 13:26:44 Stack Trace: 13:26:44 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(121,0): at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) ``` +5260 area-Infrastructure Find a way to Mock function calls for Unit Testing Some functions have branches that are dependent on conditions that cannot be hit during normal Unit Test conditions, such as relying on System.Diagnostics.Debugger.IsAttached. Being able to mock function calls / return values would benefit the testing framework +5262 area-System.IO System.IO.Compression: Modify path validation to be based on ZipArchive source OS This commit resolves #4991 by adding explicit path validation based on the OS that a ZipArchive was written on instead of just using CheckInvalidPathChars for all cases. This PR will fail until a new corefx-testdata package is published that contains the test assets for the new tests added. @stephentoub +5265 area-System.Net System.Net GlobalLog.Assert* must call Debug.Assert even if nothing is listening for the ETW events The original GlobalLog code was calling `Debug.Assert`: http://referencesource.microsoft.com/#System/net/System/Net/_LoggingObject.cs,978 We need to fix the `GlobalLog.Assert*` as well as ensuring that the Assert is not conditioned by `GlobalLog.IsEnabled` when being called. +5266 area-System.Net System.Net.Http.HttpRequestException does not have a deserialization constructor Nor it is marked with `Serializable` attribute. Is it by design? It seems that full .NET Framework has this type marked with `ISerializable` but a deserialization constructor is also missing there. +5267 area-System.Globalization EnUsPosixIsNotATurkishCasingLocale running on Windows sometimes EnUsPosixIsNotATurkishCasingLocale is marked with [PlatformSpecific(PlatformID.AnyUnix)] but as of #5242 seems to be getting picked up on Windows as well. I have added some code to the test to workaround this issue, but we need to fix it for real. One problematic issue is that you may not see the test fail on Windows 10, since it allows more cultures that 8.1 +5272 area-System.Linq Expression.TypeEquals throws on Nullable parameter. ``` C# Expression value = Expression.Constant(DateTime.MaxValue, typeof(DateTime?)); var param = Expression.Parameter(value.Type); Func func = Expression.Lambda>( Expression.Block( new[] { param }, Expression.Assign(param, value), Expression.TypeEqual(param, typeof(object)) ) ).Compile(); ``` The above throws `InvalidOperationException` on the `Compile()` with both compilation options. This happens for any type for the `type` parameter except for the actual nullable type of the parameter which correctly returns `false` if the value of `value` is null and `true` otherwise. This includes the related non-nullable type (should return the same as with the nullable type). +5281 area-System.Net Native assert failed in NetworkInformation on Ubuntu in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_debug_tst/213/console ``` 00:04:32 corerun: /mnt/j/workspace/dotnet_corefx/nativecomp_ubuntu_debug/src/Native/System.Native/pal_networkchange.cpp:66: NetworkChangeKind SystemNative_ReadSingleEvent(int32_t): Assertion `(hdr->nlmsg_flags & 2) == 0' failed. ``` +5283 area-System.Net NegotiateStream tests: timeout http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/770/consoleFull ``` 05:38:51 System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Successive_ClientWrite_Sync_Success [FAIL] 05:38:51 Starting: System.ObjectModel.Tests 05:38:51 Handshake completed in the allotted time 05:38:51 Expected: True 05:38:51 Actual: False 05:38:51 Stack Trace: 05:38:51 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs(207,0): at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Successive_ClientWrite_Sync_Success() ``` +5284 area-System.Net NegotiateStream tests: Unable to read data from the transport connection: Queue empty http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/772/consoleFull ``` 06:00:09 System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Successive_ClientWrite_Async_Success [FAIL] 06:00:09 System.AggregateException : One or more errors occurred. 06:00:09 ---- System.IO.IOException : Unable to read data from the transport connection: Queue empty.. 06:00:09 -------- System.InvalidOperationException : Queue empty. 06:00:09 Stack Trace: 06:00:09 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 06:00:09 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs(240,0): at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Successive_ClientWrite_Async_Success() 06:00:09 ----- Inner Stack Trace ----- 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\src\System\Net\SecureProtocols\NegoState.Windows.cs(447,0): at System.Net.Security.NegoState.EndProcessAuthentication(IAsyncResult result) 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\src\System\Net\SecureProtocols\NegotiateStream.cs(114,0): at System.Net.Security.NegotiateStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 06:00:09 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 06:00:09 ----- Inner Stack Trace ----- 06:00:09 at System.Collections.Generic.Queue`1.Dequeue() 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\MockNetwork.cs(34,0): at System.Net.Security.Tests.MockNetwork.ReadFrame(Boolean server, Byte[]& buffer) 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\FakeNetworkStream.cs(102,0): at System.Net.Security.Tests.FakeNetworkStream.UpdateReadStream() 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\FakeNetworkStream.cs(82,0): at System.Net.Security.Tests.FakeNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\Common\src\System\IO\StreamAsyncHelper.cs(74,0): at System.IO.StreamAsyncHelper.<>c.b__7_0(Object obj) 06:00:09 at System.Threading.Tasks.Task`1.InnerInvoke() 06:00:09 System.Numerics.Vectors.Tests -> d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\bin\Windows_NT.AnyCPU.Debug\System.Numerics.Vectors.Tests\System.Numerics.Vectors.Tests.dll 06:00:09 at System.Threading.Tasks.Task.Execute() 06:00:09 --- End of stack trace from previous location where exception was thrown --- 06:00:09 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 06:00:09 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 06:00:09 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\Common\src\System\IO\StreamAsyncHelper.cs(133,0): at System.IO.StreamAsyncHelper.EndRead(IAsyncResult asyncResult) 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\src\System\Net\StreamFramer.cs(205,0): at System.Net.StreamFramer.ReadFrameComplete(IAsyncResult transportResult) 06:00:09 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\src\System\Net\StreamFramer.cs(169,0): at System.Net.StreamFramer.ReadFrameCallback(IAsyncResult transportResult) ``` +5285 area-System.Net Mop up more System.Net logging guards Some more GlobalLog.IsEnabled guards. I noticed a few while doing some other profiling, and so did another set of searches across the whole codebase. Many of these came from the System.Net.Security PRs that were in-progress at the same time I was doing the previous logging changes. cc: @davidsh, @cipop, @ericeil, @pgavlin, @josguil (@cipop, there's no rush on merging this... if it's going to cause conflicts elsewhere, we can delay merging this until those other PRs are in and then I can handle fixing up any conflicts... just let me know.) +5286 area-System.Reflection Method exposing the Initblk opcode Hello! I'm looking at some optimizations in some unsafe code and i ran into an opcode called Initblk, http://stackoverflow.com/questions/1897555/what-is-the-equivalent-of-memset-in-c#_=_ and https://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.initblk(v=vs.110).aspx Is this now exposed somewhere in the core fx? if not, i'd love to help add it but i'm not sure what the best way to do it would be. The folks in the SO thread does it via emitting but i would be great to have built in, especially for --native down the line. Any thoughts on this are welcome! +5291 area-System.Net ConnectAsyncV6IPEndPointToV6Host_Success failed in CI on Ubuntu http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_release_tst_prtest/655/console ``` 13:35:12 System.Net.Sockets.Tests.DualMode.ConnectAsyncV6IPEndPointToV6Host_Success [FAIL] 13:35:12 System.Net.Sockets.SocketException : Unknown error 10054 13:35:12 Stack Trace: 13:35:13 at System.Net.Sockets.Tests.DualMode.DualModeConnectAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer) ``` Likely the same cause as: https://github.com/dotnet/corefx/issues/3748 https://github.com/dotnet/corefx/issues/3744 https://github.com/dotnet/corefx/issues/3682 https://github.com/dotnet/corefx/issues/3494 +5293 area-System.Collections Incorrect ArgumentNullException In List.ForEach "It looks like the `ArgumentNullException` in [System.Collections.Generic.List](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/List.cs#L603) is passing in ""match"" as the null param instead of ""action"". " +5296 area-System.Data Use the Azure Sql database benchmark infrastructure to stress test System.Data "While System.Net.Sockets provides the same ""completion port"" interface for both Windows and Linux The underlying implementation for Linux is radically different and is implemented using an epoll event loop. This is important to keep in mind since SqlClient or any other DB driver are the most important consumers of this Api. I suggest using Azure Sql database benchmark infrastructure to do the stress test, preferably inside azure first, so timeout handling behavior can be observed. https://azure.microsoft.com/en-us/documentation/articles/sql-database-benchmark-overview/#schema " +5297 area-System.Net CertificateValidationRemoteServer_EndToEnd_Ok failed in CI on Windows A bunch of occurrences of this over the past day: ``` 04:09:01 System.Net.Security.Tests.CertificateValidationRemoteServer.CertificateValidationRemoteServer_EndToEnd_Ok [FAIL] 04:09:01 System.Net.Internals.InternalSocketException : No such host is known 04:09:01 Stack Trace: 04:09:01 at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) 04:09:01 at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) 04:09:01 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 04:09:01 --- End of stack trace from previous location where exception was thrown --- 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 04:09:01 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\CertificateValidationRemoteServer.cs(19,0): at System.Net.Security.Tests.CertificateValidationRemoteServer.d__0.MoveNext() 04:09:01 --- End of stack trace from previous location where exception was thrown --- 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 04:09:01 --- End of stack trace from previous location where exception was thrown --- 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 04:09:01 --- End of stack trace from previous location where exception was thrown --- 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 04:09:01 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/791/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/787/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/790/consoleFull +5302 area-System.Net Fix URL used in System.Net.Security tests An incorrect URL was causing the CertificateValidationRemoteServer_EndToEnd_Ok test to fail. Fixes #5297 cc: @cipop, @davidsh, @ericeil, @weshaggard +5304 area-System.Net Switch System.Net.Security test to use shared HttpTestServers cc: @davidsh +5306 area-System.IO FileSystemWatcher_Moved_NestedDirectoryRootWithoutSubdirectoriesFlag failed with UnauthorizedAccessException on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release/222/consoleFull ``` 08:50:59 RenamedTests.FileSystemWatcher_Moved_NestedDirectoryRootWithoutSubdirectoriesFlag [FAIL] 08:50:59 System.UnauthorizedAccessException : Access to the path '\\?\d:\j\workspace\dotnet_corefx\windows_nt_release\bin\tests\Windows_NT.AnyCPU.Release\System.IO.FileSystem.Watcher.Tests\dnxcore50\FileSystemWatcher_Moved_NestedDirectoryRootWithoutSubdirectoriesFlag\test_root' is denied. 08:50:59 Stack Trace: 08:51:00 d:\j\workspace\dotnet_corefx\windows_nt_release\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs(627,0): at System.IO.Win32FileSystem.RemoveDirectoryHelper(String fullPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) 08:51:00 d:\j\workspace\dotnet_corefx\windows_nt_release\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs(493,0): at System.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) 08:51:00 d:\j\workspace\dotnet_corefx\windows_nt_release\src\System.IO.FileSystem.Watcher\tests\Utility\TemporaryTestDirectory.cs(32,0): at TemporaryTestDirectory.Dispose() 08:51:00 d:\j\workspace\dotnet_corefx\windows_nt_release\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.Renamed.cs(166,0): at RenamedTests.FileSystemWatcher_Moved_NestedDirectoryRootWithoutSubdirectoriesFlag() ``` +5311 area-Infrastructure Build.cmd: Add arg to enable/disable native Windows build "Currently the native Windows build will run whenever build.cmd is called. We should add an arg check to enable/disable it like in build.sh where ""build.sh native"" builds native code only, ""build.sh managed"" builds managed code only, and ""build.sh"" builds both. " +5312 area-System.Collections Cleanup and complete System.Collections.NonGeneric tests Completely revamped the System.Collections.NonGeneric test project - Rewrote every single test in the project - Converted tests to modern xunit testing - Split individual tests into multiple tests - Deobfuscate loads of tests - Remove unnecessary (already covered) tests - Test uncovered areas of the library - Removed dead code from the library itself +5314 area-System.Security Add ExportParameters/ImportParameters to ECDsa We have ExportParameters/ImportParameters for RSA (and DSA on Desktop), but don't have them for the EC types (ECDsa, ECDiffieHellman). While RSA and DSA parameters are always fixed (modulo the public/private distinction) ECParameters are polymorphic in the spec. Snippets from [SEC-1 v2 (2009)](http://www.secg.org/sec1-v2.pdf): ``` asn ECDomainParameters{ECDOMAIN:IOSet} ::= CHOICE { specified SpecifiedECDomain, named ECDOMAIN.&id({IOSet}), implicitCA NULL } SpecifiedECDomain ::= SEQUENCE { version SpecifiedECDomainVersion(ecdpVer1 | ecdpVer2 | ecdpVer3, ...), fieldID FieldID {{FieldTypes}}, curve Curve, base ECPoint, order INTEGER, cofactor INTEGER OPTIONAL, hash HashAlgorithm OPTIONAL, ... } FieldID { FIELD-ID:IOSet } ::= SEQUENCE { -- Finite field fieldType FIELD-ID.&id({IOSet}), parameters FIELD-ID.&Type({IOSet}{@fieldType}) } FieldTypes FIELD-ID ::= { { Prime-p IDENTIFIED BY prime-field } | { Characteristic-two IDENTIFIED BY characteristic-two-field } } BasisTypes CHARACTERISTIC-TWO ::= { { NULL IDENTIFIED BY gnBasis } | { Trinomial IDENTIFIED BY tpBasis } | { Pentanomial IDENTIFIED BY ppBasis }, ... } ``` This is probably something like ``` C# public abstract class ECParameters { public byte[] Qx { get; set; } public byte[] Qy { get; set; } public byte[] D { get; set; } } public class NamedCurveECParameters : ECParameters { public Oid CurveId { get; set; } } public abstract class ExplicitECParameters : ECParameters { public byte[] Order { get; set; } public byte[] Cofactor { get; set; } } ... ``` Do we want any of them to be BigInteger instead of byte[]? Etc. Should we have an API that accepts a NamedCurve and returns it as an explicit one? Or should that be a tuning parameter on Export? Do we need public API to describe the limitations of an implementation? (Windows doesn't do Char-2 curves, etc). Do we want to allow an explicit curve to be mapped back to a named one? Lots of questions to be answered :smile:. +5315 area-Meta Rename constant NET_NATIVE to netcore50 This is a tracking issue to rename this constant to follow our naming conventions. +5320 area-Infrastructure Corefxlab nuget package version scheme is broken "Currently, we use .dMMDDYY-N versioning scheme for packages. This does not work as nuget (and VS) use linguistic sort order of the "".d..."" part to determine which version order and so: .d010116 is considered to be older than .d123015 " +5322 area-System.Net Add net46 and netcore50 configurations for System.Net.NetworkInformation All of the source code is already here, just adding the project configurations and appropriate project.json entries. @davidsh , @CIPop , @weshaggard +5325 area-System.Threading AsyncInfoToTaskBridge may leak when in debug mode. In debug mode, AsyncInfoToTaskBridge is adding tasks to the Active Task list on it's constructor. However it is never removing them due to some line missing when ported from previous implementation. The solution would be to remove the task from the Active tasks list when completing. https://github.com/dotnet/corefx/blob/cf17ff1d110b9984e63a1825b3d012c8002a8a3b/src/System.Runtime.WindowsRuntime/src/System/Threading/Tasks/AsyncInfoToTaskBridge.cs#L128 I'm submitting the P.R. after creating the issue. +5326 area-System.Net NegotiateStream_StreamToStream_Authentication_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/854/consoleFull ``` 19:42:31 System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_Success [FAIL] 19:42:31 System.AggregateException : One or more errors occurred. 19:42:31 ---- System.IO.IOException : Unable to read data from the transport connection: Queue empty.. 19:42:31 -------- System.InvalidOperationException : Queue empty. 19:42:31 Stack Trace: 19:42:31 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs(36,0): at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_Success() 19:42:31 ----- Inner Stack Trace ----- 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\src\System\Net\SecureProtocols\NegoState.Windows.cs(445,0): at System.Net.Security.NegoState.EndProcessAuthentication(IAsyncResult result) 19:42:31 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 19:42:31 ----- Inner Stack Trace ----- 19:42:31 at System.Collections.Generic.Queue`1.Dequeue() 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\tests\FunctionalTests\MockNetwork.cs(34,0): at System.Net.Security.Tests.MockNetwork.ReadFrame(Boolean server, Byte[]& buffer) 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\tests\FunctionalTests\FakeNetworkStream.cs(103,0): at System.Net.Security.Tests.FakeNetworkStream.UpdateReadStream() 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\tests\FunctionalTests\FakeNetworkStream.cs(83,0): at System.Net.Security.Tests.FakeNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) 19:42:31 at System.Threading.Tasks.Task`1.InnerInvoke() 19:42:31 at System.Threading.Tasks.Task.Execute() 19:42:31 --- End of stack trace from previous location where exception was thrown --- 19:42:31 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 19:42:31 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\Common\src\System\IO\StreamAsyncHelper.cs(105,0): at System.IO.StreamAsyncHelper.EndRead(IAsyncResult asyncResult) 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\src\System\Net\StreamFramer.cs(205,0): at System.Net.StreamFramer.ReadFrameComplete(IAsyncResult transportResult) 19:42:31 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\src\System\Net\StreamFramer.cs(169,0): at System.Net.StreamFramer.ReadFrameCallback(IAsyncResult transportResult) ``` +5330 area-System.Threading Missing System.Threading.ExecutionContext.IsFlowSuppressed() Hello, I am currently looking at porting a library to .NET Core and I have noticed there is no ExecutionContext.IsFlowSuppressed() method. Are there are any plans to implement this on .NET Core or are there any alternatives? +5331 area-Infrastructure CI broken? The web-view at dotnet-ci.cloudapp.net is unreachable, and the trigger phrases don't seem to be triggering new builds. Is CI down? +5332 area-Infrastructure Building with MSBuild or Visual Studio on Windows failing "Multiple projects, attempt to run MSBuild receive: > d:\dotnet\corefxTemp\dir.props(67,3): error MSB4019: The imported project ""d:\dotnet\corefxTemp\Tools\Build.Common.prop s"" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk. [d:\d otnet\corefxTemp\src\System.Linq.Queryable\tests\System.Linq.Queryable.Tests.csproj] Attempt to build in Visual Studio receive: > The imported project ""D:\dotnet\corefx\packages\Microsoft.DotNet.BuildTools.1.0.25-prerelease-00144\lib\Build.Common.targets"" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk. The problem seems to have been introduced with 3cbbca94331bd78f881903a2fd21edf2ebea4e31, particularly https://github.com/dotnet/corefx/commit/3cbbca94331bd78f881903a2fd21edf2ebea4e31#diff-0b192804a6349e8c26d2b027afbd89a2L52 " +5334 area-Infrastructure 6 warnings during clean build ``` C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [corefx\src\System.Net.Sockets.Legacy\tests\FunctionalTests\System.Net.Sockets.APMServer.Tests.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [corefx\src\System.Net.Sockets.Legacy\tests\FunctionalTests\System.Net.Sockets.AsyncServer.Tests.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [corefx\src\System.Net.Sockets.Legacy\tests\PerformanceTests\System.Net.Sockets.APM.Performance.Tests.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [corefx\src\System.Net.Sockets\tests\FunctionalTests\System.Net.Sockets.Tests.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [corefx\src\System.Net.Sockets\tests\PerformanceTests\System.Net.Sockets.Async.Performance.Tests.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [corefx\src\System.Runtime.InteropServices.RuntimeInformation\tests\System.Runtime.InteropServices.RuntimeInformation.Tests.csproj] ``` +5335 area-Infrastructure Build fails with mulitple errors on Windows 10 (Jan-12) build /t:rebuild /property:Configuration=Debug /p:SkipTests=true System.Globalization -> C:\clrjunkie\corefx\bin\ref\System.Globalization\4.0.11.0\System.Globalization.dll C:\clrjunkie\corefx\src\Common\src\System\StringNormalizationExtensions.cs(17,20): error CS1501: No overload for method 'IsNormalized' takes 2 arguments [C:\clrjunkie\corefx\src\System.Globalization.Extensions\src\System.Globalization.Ext ensions.csproj] C:\clrjunkie\corefx\src\Common\src\System\StringNormalizationExtensions.cs(23,20): error CS1501: No overload for method 'Normalize' takes 2 arguments [C:\clrjunkie\corefx\src\System.Globalization.Extensions\src\System.Globalization.Extens ions.csproj] C:\clrjunkie\corefx\src\Common\src\System\IO\PathInternal.cs(24,30): error CS0117: 'PathInternal' does not contain a de finition for 'HasIllegalCharacters' [C:\clrjunkie\corefx\src\System.IO.Compression\src\System.IO.Compression.csproj] System\IO\Compression\ZipArchiveEntry.cs(115,38): error CS0103: The name 'CurrentZipPlatform' does not exist in the cur rent context [C:\clrjunkie\corefx\src\System.IO.Compression\src\System.IO.Compression.csproj] System\IO\Compression\ZipArchiveEntry.cs(256,24): error CS0103: The name 'ParseFileName' does not exist in the current context [C:\clrjunkie\corefx\src\System.IO.Compression\src\System.IO.Compression.csproj] System\IO\Compression\ZipArchiveEntry.cs(571,32): error CS0103: The name 'CurrentZipPlatform' does not exist in the cur rent context [C:\clrjunkie\corefx\src\System.IO.Compression\src\System.IO.Compression.csproj] C:\clrjunkie\corefx\src\Common\src\System\Diagnostics\Debug.cs(45,17): error CS0103: The name 's_logger' does not exist in the current context [C:\clrjunkie\corefx\src\System.Diagnostics.Debug\src\System.Diagnostics.Debug.csproj] C:\clrjunkie\corefx\src\Common\src\System\Diagnostics\Debug.cs(86,13): error CS0103: The name 's_logger' does not exist in the current context [C:\clrjunkie\corefx\src\System.Diagnostics.Debug\src\System.Diagnostics.Debug.csproj] C:\clrjunkie\corefx\Tools\Packaging.targets(460,5): error : File C:\clrjunkie\corefx\bin\Windows_NT.AnyCPU.Debug\System .Security.Cryptography.Algorithms\net46\System.Security.Cryptography.Algorithms.dll does not exist, ensure you have bui lt libraries before building the package. [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.S ecurity.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(460,5): error : File C:\clrjunkie\corefx\bin\Windows_NT.AnyCPU.Debug\System .Security.Cryptography.Algorithms\net46\System.Security.Cryptography.Algorithms.dll does not exist, ensure you have bui lt libraries before building the package. [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.S ecurity.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : Error when creating nuget package from C:\clrjunkie\corefx\ bin\pkg\specs\System.Security.Cryptography.Algorithms.nuspec. System.IO.DirectoryNotFoundException: Could not find a pa rt of the path 'C:\clrjunkie\corefx\bin\Windows_NT.AnyCPU.Debug\System.Security.Cryptography.Algorithms\net46'.\r [C:\c lrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)\r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography.Algo rithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at System.IO.FileSystemEnumerableIterator`1.CommonInit() \r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography.Algorithms.pkgproj ] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, B oolean checkHost)\r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography.A lgorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at System.IO.Directory.GetFiles(String path, String sear chPattern, SearchOption searchOption)\r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Sec urity.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at NuGet.PathResolver.PerformWildcardSearchInternal(Stri ng basePath, String searchPath, Boolean includeEmptyDirectories, String& normalizedBasePath)\r [C:\clrjunkie\corefx\src \System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at NuGet.PathResolver.ResolveSearchPattern(String basePa th, String searchPath, String targetPath, Boolean includeEmptyDirectories)\r [C:\clrjunkie\corefx\src\System.Security.C ryptography.Algorithms\pkg\System.Security.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at NuGet.PackageBuilder.AddFiles(String basePath, String source, String destination, String exclude)\r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\Sys tem.Security.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at NuGet.PackageBuilder.PopulateFiles(String basePath, I Enumerable`1 files)\r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography .Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at NuGet.PackageBuilder.ReadManifest(Stream stream, Stri ng basePath, IPropertyProvider propertyProvider)\r [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg \System.Security.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at NuGet.PackageBuilder..ctor(String path, String basePa th, IPropertyProvider propertyProvider, Boolean includeEmptyDirectories)\r [C:\clrjunkie\corefx\src\System.Security.Cry ptography.Algorithms\pkg\System.Security.Cryptography.Algorithms.pkgproj] C:\clrjunkie\corefx\Tools\Packaging.targets(897,5): error : at Microsoft.DotNet.Build.Tasks.Packaging.NuGetPack.Exec ute() [C:\clrjunkie\corefx\src\System.Security.Cryptography.Algorithms\pkg\System.Security.Cryptography.Algorithms.pkgp roj] ``` 6 Warning(s) 11 Error(s) ``` Time Elapsed 00:33:47.81 Build Exit Code = 1 +5336 area-System.Net Move failing DNS test to OuterLoop For a long time now I've been unable to get a clean local build because of this test. On the networks I'm usually on, the DNS server serves up a descriptive page for an invalid address, which causes this test to fail, as the test is expecting an error. I'm moving the test to OuterLoop so that at least normal builds/test runs can pass on such networks. cc: @davidsh, @cipop +5337 area-System.ComponentModel TypeConverter lookup does uncached reflection on CoreCLR We're making fairly frequent use of `TypeConverter` in ASP.NET MVC. Traditionally, it's been a point of extensibility in our system for enabling serialization of your types to and from strings in query string and form data. We also rely on the built in converters for commonly used built-in types like `DateTime`. On CoreCLR the lookup of a `TypeConverter` is doing a bunch of attribute work up and down the inheritance hierarchy before falling back to a lookup table. On Desktop CLR this is cached in the common case. The performance effect on MVC of all of this attribute lookup is quite large. This is sampling data from an app doing model binding on 3 fields and then displaying them in an HTML form. Two of these fields use `TypeConverter` as shown here in the profile. Percentages here reflect % of CPU time inside of routing/MVC: ![image](https://cloud.githubusercontent.com/assets/1430011/12270760/8902d09c-b90c-11e5-84f3-749c02cc57a6.png) **Is this something we could work to address inside CoreFx?** **Or should we implement our own cache?** This is caching we've never had a need to do on Desktop. +5339 area-System.Console CancelKeyPress not firing on coreclr on ubuntu "Code: ``` using System; using System.IO; namespace HelloMvc { public class Program { public static void Main(string[] args) { System.Console.CancelKeyPress += (s,e) => System.Console.WriteLine(""BBB""); Console.ReadLine(); } } } ``` project.json: ``` { ""version"": ""1.0.1-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"" : { ""NETStandard.Library"": ""1.0.0-*"" }, ""frameworks"": { ""dnxcore50"": { } } } ``` Steps: 1. Compile 2. Run 3. Press Ctrl+C Coreclr output: ``` ``` Mono output: ``` BBB ``` Environment: ``` > uname -a Linux pkrymets 3.19.0-31-generic #36-Ubuntu SMP Wed Oct 7 15:04:02 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux > cat /usr/local/share/dotnet/cli/.version ecda2a810615dda9f280fd8a87d23be2e2fcae45 1.0.0-dev-1452359345 ``` Packages: ``` Package references: Microsoft.NETCore.Platforms 1.0.1-rc2-23712 Microsoft.NETCore.Runtime 1.0.1-rc2-23712 Microsoft.NETCore.Runtime.CoreCLR 1.0.1-rc2-23712 Microsoft.NETCore.Runtime.Native 1.0.1-rc2-23712 Microsoft.NETCore.Targets 1.0.1-rc2-23712 Microsoft.NETCore.Targets.DNXCore 5.0.0-rc2-23712 Microsoft.NETCore.Windows.ApiSets 1.0.1-rc2-23712 Microsoft.Win32.Primitives 4.0.1-rc2-23712 * NETStandard.Library 1.0.0-rc2-23712 NETStandard.Platform 1.0.0-rc2-23712 System.AppContext 4.0.1-rc2-23712 System.Collections 4.0.11-rc2-23712 System.Collections.Concurrent 4.0.11-rc2-23712 System.Console 4.0.0-rc2-23712 System.Diagnostics.Debug 4.0.11-rc2-23712 System.Diagnostics.Process 4.1.0-rc2-23712 System.Diagnostics.Tools 4.0.1-rc2-23712 System.Diagnostics.Tracing 4.0.21-rc2-23712 System.Globalization 4.0.11-rc2-23712 System.Globalization.Calendars 4.0.1-rc2-23712 System.IO 4.1.0-rc2-23712 System.IO.FileSystem 4.0.1-rc2-23712 System.IO.FileSystem.Primitives 4.0.1-rc2-23712 System.Linq 4.0.1-rc2-23712 System.Net.Primitives 4.0.11-rc2-23712 System.Net.Sockets 4.1.0-rc2-23712 System.Private.Uri 4.0.1-rc2-23712 System.Reflection 4.1.0-rc2-23712 System.Reflection.Extensions 4.0.1-rc2-23712 System.Reflection.Primitives 4.0.1-rc2-23712 System.Reflection.TypeExtensions 4.1.0-rc2-23712 System.Resources.ResourceManager 4.0.0 System.Runtime 4.0.21-rc2-23712 System.Runtime.Extensions 4.0.11-rc2-23712 System.Runtime.Handles 4.0.1-rc2-23712 System.Runtime.InteropServices 4.0.21-rc2-23712 System.Runtime.InteropServices.RuntimeInformation 4.0.0-rc2-23712 System.Runtime.Numerics 4.0.1-rc2-23712 System.Text.Encoding 4.0.11-rc2-23712 System.Text.Encoding.Extensions 4.0.11-rc2-23712 System.Text.RegularExpressions 4.0.11-rc2-23712 System.Threading 4.0.11-rc2-23712 System.Threading.Tasks 4.0.11-rc2-23712 System.Threading.Timer 4.0.1-rc2-23712 ``` @muratg " +5343 area-Serialization Fix XmlDictionaryReaderQuotas so MaxDepth and MaxStringContentLength are honored MaxDepth and MaxStringContentLength settings in XmlDictionaryReaderQuotas are not effective due to missing the right handling in the implementation. This change adds the checks and throws exception when these two limit are exceeded. Fix #4651 @shmao @SGuyGe +5348 area-System.Diagnostics Process.Start isn't properly handling escape characters "e.g. the string `""\\"" ""\\\\""` is getting parsed as `\” \\\”` rather than as `\ \\` " +5349 area-Infrastructure Add Ubuntu 15.10 (Wily Werewolf) CI / Rolling Build In preparation for Ubuntu 16.04LTS shipping in April, we should start running on Ubuntu 15.10 as a temporary surrogate. We can then drop 15.10 when we add 16.04LTS later this year. https://wiki.ubuntu.com/Releases Related CI work items: https://github.com/dotnet/corefx/issues/4653 (2008 R2 ServerCore), https://github.com/dotnet/corefx/issues/4656 (Debian 8.2), https://github.com/dotnet/corefx/issues/4779 (2016 NanoServer) +5352 area-Serialization [Port] XmlReader.ReadValueChunk will throw ArgumentException when body contents contain double-wide chars encoded as UTF-8 This issue is to port a fix that was made on Desktop to corefx. Please see [Reference Source](http://referencesource.microsoft.com/#System.Runtime.Serialization/System/Xml/ValueHandle.cs,700) for the fix on Desktop. +5357 area-System.Net Port additional WebSocket tests "Port remaining websocket client tests dealing with close handshake semantics including ""server initiated"" close handshakes. Switch networking test servers to the newer Azure Cloud Service servers which work better with websocket close handshakes. " +5359 area-Infrastructure "System.Data.SqlClient tfms not aligned with ""runtime.unix.S.D.S""" "System.Data.SqlClient supports `dotnet5.4` but its `runtime.unix.System.Data.SqlClient` requires `dotnet5.5`. This leads to runtime errors due to missing dependencies on Linux/OSX. Example: ``` json { ""frameworks"": { ""dotnet5.4"": { ""dependencies"": { ""System.Data.SqlClient"": ""4.0.0-*"" } } } } ``` :white_check_mark: dotnet restore :x: dotnet run `Could not load file or assembly 'System.Net.Security'` Change to `dotnet5.5` :white_check_mark: dotnet restore :white_check_mark: dotnet run " +5360 area-System.Numerics Design initialization API for Vector that supports padding The size of `Vector` is hardware dependent. When constructing a vector, we either accept the value coming from an array or a raw pointer. However, the number of elements being read is always `Vector.Length`. In many cases, the number of inputs to be processed is extrinsically defined and might not be a multiplier of `Vector.Length`, i.e. it's likely that there is a remainder. It might be beneficial to support constructing a vector and if there are fewer values than `Vector.Length` we pad with, for instance, zeroes. @mellinoe @CarolEidt +5362 area-Serialization Add support for XmlElement for data contract serializers This change is porting the support for XmlElement from Desktop implementation to data contract serializers. @shmao @SGuyGe @zhenlan +5364 area-System.Threading AggregateException should report better error messages A common issue when not using await is the print out ex.Message or ex.ToString() In the case of `AggregateException` and perhaps also `TargetInvocationException` these messages are kinda useless: `One or more errors occurred.` it would be nice to print out a more detailed message by default: 1. Print out how many error where found. 2. Print out the actual inner exceptions +5373 area-System.Net Disable failing NegotiateStream test #5284, #5326 cc: @davidsh, @cipop +5374 area-System.Net Throw SocketException rather than PNSE for unsupported socket option on Unix Match Windows exception type when an unsupported socket option is provided. cc: @davidsh, @ericeil, @cipop, @pgavlin Fixes https://github.com/dotnet/corefx/issues/4897 +5377 area-System.Reflection Consider adding TypeDefinition.IsNested { get; } I'm testing https://github.com/dotnet/corefx/pull/4809/files. DisassemblingTypeProvider, the sample implementation used for tests, calls TypeDefinition.Attributes.IsNested in GetTypeFromDefinition, which can't be done outside Roslyn. I'm guessing we'll want everything the reference implementation does be possible for public consumers to do. +5378 area-System.Diagnostics Process.Start() sometimes returns wrong ProcessName "If executing following code with NETStandard.Library of 1.0.0-rc2-23712: using System; using System.Diagnostics; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { for (int i=0; i<100; i++) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = ""ping""; startInfo.Arguments = ""localhost -c 1""; ``` Process process = new Process(); process.StartInfo = startInfo; process.Start(); Console.WriteLine(""processName is: {0}"", process.ProcessName); } } } ``` } You will see that output ProcessName is usually correct (""ping"") the first time, but usually incorrect in subsequent iterations. If one extends the life of command (change argument to something like ""-c 3""), wait a second or so, and then do a ""GetProcessById"", you would see that the ProcessName has become correct. This indicates a race condition of some sort. " +5381 area-System.Reflection Add missing members for System.Reflection namespace This is a blanket issue to review gaps in System.Reflection namespace in .NetCore vs Desktop ### Proposed additions to .NET Core ``` diff ---.NET Core Currently +++.NET Core Proposed namespace System.Reflection { public sealed class AmbiguousMatchException : Exception { public AmbiguousMatchException(); public AmbiguousMatchException(string message); public AmbiguousMatchException(string message, Exception inner); } public abstract class Assembly { + public virtual string CodeBase { get; } public virtual IEnumerable CustomAttributes { get; } public abstract IEnumerable DefinedTypes { get; } public virtual MethodInfo EntryPoint { get; } + public virtual string EscapedCodeBase { get; } public virtual IEnumerable ExportedTypes { get; } public virtual string FullName { get; } public virtual bool IsDynamic { get; } public virtual string Location { get; } public virtual Module ManifestModule { get; } public abstract IEnumerable Modules { get; } public override bool Equals(object o); public static Assembly GetEntryAssembly(); public override int GetHashCode(); public virtual ManifestResourceInfo GetManifestResourceInfo(string resourceName); public virtual string[] GetManifestResourceNames(); public virtual Stream GetManifestResourceStream(string name); public virtual AssemblyName GetName(); public virtual Type GetType(string name); public virtual Type GetType(string name, bool throwOnError, bool ignoreCase); public static Assembly Load(AssemblyName assemblyRef); public override string ToString(); } public enum AssemblyContentType { Default = 0, WindowsRuntime = 1, } public sealed class AssemblyName { public AssemblyName(); public AssemblyName(string assemblyName); public AssemblyContentType ContentType { get; set; } public string CultureName { get; set; } public AssemblyNameFlags Flags { get; set; } public string FullName { get; } public string Name { get; set; } public ProcessorArchitecture ProcessorArchitecture { get; set; } public Version Version { get; set; } public byte[] GetPublicKey(); public byte[] GetPublicKeyToken(); public void SetPublicKey(byte[] publicKey); public void SetPublicKeyToken(byte[] publicKeyToken); public override string ToString(); } + public abstract class Binder { + protected Binder(); } + public enum BindingFlags { + CreateInstance = 512, + DeclaredOnly = 2, + Default = 0, + FlattenHierarchy = 64, + GetField = 1024, + GetProperty = 4096, + IgnoreCase = 1, + Instance = 4, + InvokeMethod = 256, + NonPublic = 32, + Public = 16, + SetField = 2048, + SetProperty = 8192, + Static = 8, } public abstract class ConstructorInfo : MethodBase { public static readonly string ConstructorName; public static readonly string TypeConstructorName; + public override MemberTypes MemberType { get; } public override bool Equals(object obj); public override int GetHashCode(); public virtual object Invoke(object[] parameters); } public class CustomAttributeData { public virtual Type AttributeType { get; } + public virtual ConstructorInfo Constructor { get; } public virtual IList ConstructorArguments { get; } public virtual IList NamedArguments { get; } + public static IList GetCustomAttributes(Assembly target); + public static IList GetCustomAttributes(MemberInfo target); + public static IList GetCustomAttributes(Module target); + public static IList GetCustomAttributes(ParameterInfo target); } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct CustomAttributeNamedArgument { public bool IsField { get; } + public MemberInfo MemberInfo { get; } public string MemberName { get; } public CustomAttributeTypedArgument TypedValue { get; } } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct CustomAttributeTypedArgument { public Type ArgumentType { get; } public object Value { get; } } public abstract class EventInfo : MemberInfo { public virtual MethodInfo AddMethod { get; } public abstract EventAttributes Attributes { get; } public virtual Type EventHandlerType { get; } + public virtual bool IsMulticast { get; } public bool IsSpecialName { get; } + public override MemberTypes MemberType { get; } public virtual MethodInfo RaiseMethod { get; } public virtual MethodInfo RemoveMethod { get; } public virtual void AddEventHandler(object target, Delegate handler); public override bool Equals(object obj); + public MethodInfo GetAddMethod(); + public virtual MethodInfo GetAddMethod(bool nonPublic); public override int GetHashCode(); + public MethodInfo GetRaiseMethod(); + public virtual MethodInfo GetRaiseMethod(bool nonPublic); + public MethodInfo GetRemoveMethod(); + public virtual MethodInfo GetRemoveMethod(bool nonPublic); public virtual void RemoveEventHandler(object target, Delegate handler); } public abstract class FieldInfo : MemberInfo { public abstract FieldAttributes Attributes { get; } + public virtual RuntimeFieldHandle FieldHandle { get; } public abstract Type FieldType { get; } public bool IsAssembly { get; } public bool IsFamily { get; } public bool IsFamilyAndAssembly { get; } public bool IsFamilyOrAssembly { get; } public bool IsInitOnly { get; } public bool IsLiteral { get; } public bool IsPrivate { get; } public bool IsPublic { get; } public bool IsSpecialName { get; } public bool IsStatic { get; } + public override MemberTypes MemberType { get; } public override bool Equals(object obj); public static FieldInfo GetFieldFromHandle(RuntimeFieldHandle handle); public static FieldInfo GetFieldFromHandle(RuntimeFieldHandle handle, RuntimeTypeHandle declaringType); public override int GetHashCode(); public abstract object GetValue(object obj); public virtual void SetValue(object obj, object value); } + [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct InterfaceMapping { + public MethodInfo[] InterfaceMethods; + public MethodInfo[] TargetMethods; + public Type InterfaceType; + public Type TargetType; } public static class IntrospectionExtensions { public static TypeInfo GetTypeInfo(this Type type); } + public class InvalidFilterCriteriaException : Exception { + public InvalidFilterCriteriaException(); + public InvalidFilterCriteriaException(string message); + public InvalidFilterCriteriaException(string message, Exception inner); } public interface IReflectableType { TypeInfo GetTypeInfo(); } public class LocalVariableInfo { protected LocalVariableInfo(); public virtual bool IsPinned { get; } public virtual int LocalIndex { get; } public virtual Type LocalType { get; } public override string ToString(); } public class ManifestResourceInfo { public ManifestResourceInfo(Assembly containingAssembly, string containingFileName, ResourceLocation resourceLocation); public virtual string FileName { get; } public virtual Assembly ReferencedAssembly { get; } public virtual ResourceLocation ResourceLocation { get; } } + public delegate bool MemberFilter(MemberInfo m, object filterCriteria); public abstract class MemberInfo { public virtual IEnumerable CustomAttributes { get; } public abstract Type DeclaringType { get; } + public virtual MemberTypes MemberType { get; } + public virtual int MetadataToken { get; } public virtual Module Module { get; } public abstract string Name { get; } + public virtual Type ReflectedType { get; } public override bool Equals(object obj); public override int GetHashCode(); } + public enum MemberTypes { + All = 191, + Constructor = 1, + Custom = 64, + Event = 2, + Field = 4, + Method = 8, + NestedType = 128, + Property = 16, + TypeInfo = 32, } public abstract class MethodBase : MemberInfo { public abstract MethodAttributes Attributes { get; } public virtual CallingConventions CallingConvention { get; } public virtual bool ContainsGenericParameters { get; } public bool IsAbstract { get; } public bool IsAssembly { get; } public bool IsConstructor { get; } public bool IsFamily { get; } public bool IsFamilyAndAssembly { get; } public bool IsFamilyOrAssembly { get; } public bool IsFinal { get; } public virtual bool IsGenericMethod { get; } public virtual bool IsGenericMethodDefinition { get; } public bool IsHideBySig { get; } public bool IsPrivate { get; } public bool IsPublic { get; } public bool IsSpecialName { get; } public bool IsStatic { get; } public bool IsVirtual { get; } + public virtual RuntimeMethodHandle MethodHandle { get; } public abstract MethodImplAttributes MethodImplementationFlags { get; } public override bool Equals(object obj); + public static MethodBase GetCurrentMethod(); public virtual Type[] GetGenericArguments(); public override int GetHashCode(); public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle); public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle, RuntimeTypeHandle declaringType); + public virtual MethodImplAttributes GetMethodImplementationFlags(); public abstract ParameterInfo[] GetParameters(); public virtual object Invoke(object obj, object[] parameters); } public abstract class MethodInfo : MethodBase { + public override MemberTypes MemberType { get; } public virtual ParameterInfo ReturnParameter { get; } public virtual Type ReturnType { get; } public virtual Delegate CreateDelegate(Type delegateType); public virtual Delegate CreateDelegate(Type delegateType, object target); public override bool Equals(object obj); + public virtual MethodInfo GetBaseDefinition(); public override Type[] GetGenericArguments(); public virtual MethodInfo GetGenericMethodDefinition(); public override int GetHashCode(); public virtual MethodInfo MakeGenericMethod(params Type[] typeArguments); } public abstract class Module { + public static readonly TypeFilter FilterTypeName; + public static readonly TypeFilter FilterTypeNameIgnoreCase; public virtual Assembly Assembly { get; } public virtual IEnumerable CustomAttributes { get; } public virtual string FullyQualifiedName { get; } + public virtual int MDStreamVersion { get; } + public virtual int MetadataToken { get; } + public virtual Guid ModuleVersionId { get; } public virtual string Name { get; } + public virtual string ScopeName { get; } public override bool Equals(object o); + public virtual Type[] FindTypes(TypeFilter filter, object filterCriteria); + public FieldInfo GetField(string name); + public virtual FieldInfo GetField(string name, BindingFlags bindingAttr); + public FieldInfo[] GetFields(); + public virtual FieldInfo[] GetFields(BindingFlags bindingFlags); public override int GetHashCode(); + public MethodInfo GetMethod(string name); + public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); + public MethodInfo GetMethod(string name, Type[] types); + public MethodInfo[] GetMethods(); + public virtual MethodInfo[] GetMethods(BindingFlags bindingFlags); + public virtual Type GetType(string className); + public virtual Type GetType(string className, bool ignoreCase); public virtual Type GetType(string className, bool throwOnError, bool ignoreCase); + public virtual Type[] GetTypes(); + public FieldInfo ResolveField(int metadataToken); + public virtual FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); + public MemberInfo ResolveMember(int metadataToken); + public virtual MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); + public MethodBase ResolveMethod(int metadataToken); + public virtual MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); + public virtual byte[] ResolveSignature(int metadataToken); + public virtual string ResolveString(int metadataToken); + public Type ResolveType(int metadataToken); + public virtual Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); public override string ToString(); } public class ParameterInfo { public virtual ParameterAttributes Attributes { get; } public virtual IEnumerable CustomAttributes { get; } public virtual object DefaultValue { get; } public virtual bool HasDefaultValue { get; } public bool IsIn { get; } public bool IsOptional { get; } public bool IsOut { get; } public bool IsRetval { get; } public virtual MemberInfo Member { get; } + public virtual int MetadataToken { get; } public virtual string Name { get; } public virtual Type ParameterType { get; } public virtual int Position { get; } + public virtual object RawDefaultValue { get; } } + [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct ParameterModifier { + public ParameterModifier(int parameterCount); + public bool this[int index] { get; set; } } public abstract class PropertyInfo : MemberInfo { public abstract PropertyAttributes Attributes { get; } public abstract bool CanRead { get; } public abstract bool CanWrite { get; } public virtual MethodInfo GetMethod { get; } public bool IsSpecialName { get; } + public override MemberTypes MemberType { get; } public abstract Type PropertyType { get; } public virtual MethodInfo SetMethod { get; } public override bool Equals(object obj); + public MethodInfo[] GetAccessors(); + public virtual MethodInfo[] GetAccessors(bool nonPublic); public virtual object GetConstantValue(); + public MethodInfo GetGetMethod(); + public virtual MethodInfo GetGetMethod(bool nonPublic); public override int GetHashCode(); public abstract ParameterInfo[] GetIndexParameters(); + public MethodInfo GetSetMethod(); + public virtual MethodInfo GetSetMethod(bool nonPublic); public object GetValue(object obj); public virtual object GetValue(object obj, object[] index); public void SetValue(object obj, object value); public virtual void SetValue(object obj, object value, object[] index); } public abstract class ReflectionContext { protected ReflectionContext(); public virtual TypeInfo GetTypeForObject(object value); public abstract Assembly MapAssembly(Assembly assembly); public abstract TypeInfo MapType(TypeInfo type); } public sealed class ReflectionTypeLoadException : Exception { public ReflectionTypeLoadException(Type[] classes, Exception[] exceptions); public ReflectionTypeLoadException(Type[] classes, Exception[] exceptions, string message); public Exception[] LoaderExceptions { get; } public Type[] Types { get; } } public enum ResourceLocation { ContainedInAnotherAssembly = 2, ContainedInManifestFile = 4, Embedded = 1, } + public class TargetException : Exception { + public TargetException(); + public TargetException(string message); + public TargetException(string message, Exception inner); } public sealed class TargetInvocationException : Exception { public TargetInvocationException(Exception inner); public TargetInvocationException(string message, Exception inner); } public sealed class TargetParameterCountException : Exception { public TargetParameterCountException(); public TargetParameterCountException(string message); public TargetParameterCountException(string message, Exception inner); } + public delegate bool TypeFilter(Type m, object filterCriteria); public abstract class TypeInfo : MemberInfo, IReflectableType { public abstract Assembly Assembly { get; } public abstract string AssemblyQualifiedName { get; } public abstract TypeAttributes Attributes { get; } public abstract Type BaseType { get; } public abstract bool ContainsGenericParameters { get; } public virtual IEnumerable DeclaredConstructors { get; } public virtual IEnumerable DeclaredEvents { get; } public virtual IEnumerable DeclaredFields { get; } public virtual IEnumerable DeclaredMembers { get; } public virtual IEnumerable DeclaredMethods { get; } public virtual IEnumerable DeclaredNestedTypes { get; } public virtual IEnumerable DeclaredProperties { get; } public abstract MethodBase DeclaringMethod { get; } public abstract string FullName { get; } public abstract GenericParameterAttributes GenericParameterAttributes { get; } public abstract int GenericParameterPosition { get; } public abstract Type[] GenericTypeArguments { get; } public virtual Type[] GenericTypeParameters { get; } public abstract Guid GUID { get; } public bool HasElementType { get; } public virtual IEnumerable ImplementedInterfaces { get; } public bool IsAbstract { get; } public bool IsAnsiClass { get; } public bool IsArray { get; } public bool IsAutoClass { get; } public bool IsAutoLayout { get; } public bool IsByRef { get; } public bool IsClass { get; } public virtual bool IsCOMObject { get; } public abstract bool IsEnum { get; } public bool IsExplicitLayout { get; } public abstract bool IsGenericParameter { get; } public abstract bool IsGenericType { get; } public abstract bool IsGenericTypeDefinition { get; } public bool IsImport { get; } public bool IsInterface { get; } public bool IsLayoutSequential { get; } public bool IsMarshalByRef { get; } public bool IsNested { get; } public bool IsNestedAssembly { get; } public bool IsNestedFamANDAssem { get; } public bool IsNestedFamily { get; } public bool IsNestedFamORAssem { get; } public bool IsNestedPrivate { get; } public bool IsNestedPublic { get; } public bool IsNotPublic { get; } public bool IsPointer { get; } public virtual bool IsPrimitive { get; } public bool IsPublic { get; } public bool IsSealed { get; } public abstract bool IsSerializable { get; } public bool IsSpecialName { get; } public bool IsUnicodeClass { get; } public virtual bool IsValueType { get; } public bool IsVisible { get; } public abstract string Namespace { get; } + public virtual StructLayoutAttribute StructLayoutAttribute { get; } + public ConstructorInfo TypeInitializer { get; } + public abstract Type UnderlyingSystemType { get; } public virtual Type AsType(); + public virtual Type[] FindInterfaces(TypeFilter filter, object filterCriteria); + public virtual MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria); public abstract int GetArrayRank(); + public ConstructorInfo GetConstructor(Type[] types); + public ConstructorInfo[] GetConstructors(); + public abstract ConstructorInfo[] GetConstructors(BindingFlags bindingAttr); public virtual EventInfo GetDeclaredEvent(string name); public virtual FieldInfo GetDeclaredField(string name); public virtual MethodInfo GetDeclaredMethod(string name); public virtual IEnumerable GetDeclaredMethods(string name); public virtual TypeInfo GetDeclaredNestedType(string name); public virtual PropertyInfo GetDeclaredProperty(string name); + public virtual MemberInfo[] GetDefaultMembers(); public abstract Type GetElementType(); + public virtual string GetEnumName(object value); + public virtual string[] GetEnumNames(); + public virtual Type GetEnumUnderlyingType(); + public virtual Array GetEnumValues(); + public EventInfo GetEvent(string name); + public abstract EventInfo GetEvent(string name, BindingFlags bindingAttr); + public virtual EventInfo[] GetEvents(); + public abstract EventInfo[] GetEvents(BindingFlags bindingAttr); + public FieldInfo GetField(string name); + public abstract FieldInfo GetField(string name, BindingFlags bindingAttr); + public FieldInfo[] GetFields(); + public abstract FieldInfo[] GetFields(BindingFlags bindingAttr); + public virtual Type[] GetGenericArguments(); public abstract Type[] GetGenericParameterConstraints(); public abstract Type GetGenericTypeDefinition(); + public Type GetInterface(string name); + public abstract Type GetInterface(string name, bool ignoreCase); + public virtual InterfaceMapping GetInterfaceMap(Type interfaceType); + public abstract Type[] GetInterfaces(); + public MemberInfo[] GetMember(string name); + public virtual MemberInfo[] GetMember(string name, BindingFlags bindingAttr); + public virtual MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr); + public MemberInfo[] GetMembers(); + public abstract MemberInfo[] GetMembers(BindingFlags bindingAttr); + public MethodInfo GetMethod(string name); + public MethodInfo GetMethod(string name, BindingFlags bindingAttr); + public MethodInfo GetMethod(string name, Type[] types); + public MethodInfo GetMethod(string name, Type[] types, ParameterModifier[] modifiers); + public MethodInfo[] GetMethods(); + public abstract MethodInfo[] GetMethods(BindingFlags bindingAttr); + public Type GetNestedType(string name); + public abstract Type GetNestedType(string name, BindingFlags bindingAttr); + public Type[] GetNestedTypes(); + public abstract Type[] GetNestedTypes(BindingFlags bindingAttr); + public PropertyInfo[] GetProperties(); + public abstract PropertyInfo[] GetProperties(BindingFlags bindingAttr); + public PropertyInfo GetProperty(string name); + public PropertyInfo GetProperty(string name, BindingFlags bindingAttr); + public PropertyInfo GetProperty(string name, Type returnType); + public PropertyInfo GetProperty(string name, Type returnType, Type[] types); + public PropertyInfo GetProperty(string name, Type returnType, Type[] types, ParameterModifier[] modifiers); + public PropertyInfo GetProperty(string name, Type[] types); public virtual bool IsAssignableFrom(TypeInfo typeInfo); + public virtual bool IsAssignableFrom(Type c); + public abstract bool IsDefined(Type attributeType, bool inherit); + public virtual bool IsEnumDefined(object value); public virtual bool IsEquivalentTo(Type other); + public virtual bool IsInstanceOfType(object o); public virtual bool IsSubclassOf(Type c); public abstract Type MakeArrayType(); public abstract Type MakeArrayType(int rank); public abstract Type MakeByRefType(); public abstract Type MakeGenericType(params Type[] typeArguments); public abstract Type MakePointerType(); TypeInfo System.Reflection.IReflectableType.GetTypeInfo(); } } ``` ### Notes ``` diff ---.NET Framework +++.NET Core namespace System { public abstract class Type : MemberInfo, _Type, IReflect { public static readonly char Delimiter; ^ Pallavi Taneja: Added on the Type. public static readonly object Missing; ^ Pallavi Taneja: Already present. - public static readonly MemberFilter FilterAttribute; ^ Pallavi Taneja: Filter* can't be added to TypeInfo in this contract revision. - public static readonly MemberFilter FilterName; - public static readonly MemberFilter FilterNameIgnoreCase; public static readonly Type[] EmptyTypes; ^ Pallavi Taneja: Already present. - protected Type(); - public abstract Assembly Assembly { get; } public abstract string AssemblyQualifiedName { get; } - public TypeAttributes Attributes { get; } - public abstract Type BaseType { get; } - public virtual bool ContainsGenericParameters { get; } - public virtual MethodBase DeclaringMethod { get; } public overrideabstract Type DeclaringType { get; } - public static Binder DefaultBinder { get; } ^ Pallavi Taneja: [Pending discussion] Whether Binder should be empty or exposed via a separate contract. public abstract string FullName { get; } - public virtual GenericParameterAttributes GenericParameterAttributes { get; } public virtualabstract int GenericParameterPosition { get; } public virtualabstract Type[] GenericTypeArguments { get; } - public abstract Guid GUID { get; } public bool HasElementType { get; } - public bool IsAbstract { get; } - public bool IsAnsiClass { get; } public virtual bool IsArray { get; } - public bool IsAutoClass { get; } - public bool IsAutoLayout { get; } public virtual bool IsByRef { get; } - public bool IsClass { get; } - public bool IsCOMObject { get; } public virtualabstract bool IsConstructedGenericType { get; } ^ Pallavi Taneja: Already exposed in Type. - public bool IsContextful { get; } ^ Pallavi Taneja: Used only in remoting. - public virtual bool IsEnum { get; } - public bool IsExplicitLayout { get; } public virtualabstract bool IsGenericParameter { get; } - public virtual bool IsGenericType { get; } - public virtual bool IsGenericTypeDefinition { get; } - public bool IsImport { get; } - public bool IsInterface { get; } - public bool IsLayoutSequential { get; } - public bool IsMarshalByRef { get; } public bool IsNested { get; } - public bool IsNestedAssembly { get; } - public bool IsNestedFamANDAssem { get; } - public bool IsNestedFamily { get; } - public bool IsNestedFamORAssem { get; } - public bool IsNestedPrivate { get; } - public bool IsNestedPublic { get; } - public bool IsNotPublic { get; } public virtual bool IsPointer { get; } - public bool IsPrimitive { get; } - public bool IsPublic { get; } - public bool IsSealed { get; } - public virtual bool IsSecurityCritical { get; } ^ Pallavi Taneja: Obsolete concept. - public virtual bool IsSecuritySafeCritical { get; } - public virtual bool IsSecurityTransparent { get; } - public virtual bool IsSerializable { get; } - public bool IsSpecialName { get; } - public bool IsUnicodeClass { get; } - public bool IsValueType { get; } - public bool IsVisible { get; } - public override MemberTypes MemberType { get; } - public abstract new Module Module { get; } + public abstract string Name { get; } public abstract string Namespace { get; } - public override Type ReflectedType { get; } - public virtual StructLayoutAttribute StructLayoutAttribute { get; } public virtual RuntimeTypeHandle TypeHandle { get; } ^ Pallavi Taneja: Already exposed in Type - public ConstructorInfo TypeInitializer { get; } - public abstract Type UnderlyingSystemType { get; } public override bool Equals(object o); public virtual bool Equals(Type o); - public virtual Type[] FindInterfaces(TypeFilter filter, object filterCriteria); - public virtual MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria); public virtualabstract int GetArrayRank(); - protected abstract TypeAttributes GetAttributeFlagsImpl(); - public ConstructorInfo GetConstructor(BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); ^ Pallavi Taneja: Binder decision pending. - public ConstructorInfo GetConstructor(BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers); - public ConstructorInfo GetConstructor(Type[] types); - protected abstract ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); - public ConstructorInfo[] GetConstructors(); - public abstract ConstructorInfo[] GetConstructors(BindingFlags bindingAttr); - public virtual MemberInfo[] GetDefaultMembers(); public abstract Type GetElementType(); - public virtual string GetEnumName(object value); - public virtual string[] GetEnumNames(); - public virtual Type GetEnumUnderlyingType(); - public virtual Array GetEnumValues(); - public EventInfo GetEvent(string name); - public abstract EventInfo GetEvent(string name, BindingFlags bindingAttr); - public virtual EventInfo[] GetEvents(); - public abstract EventInfo[] GetEvents(BindingFlags bindingAttr); - public FieldInfo GetField(string name); - public abstract FieldInfo GetField(string name, BindingFlags bindingAttr); - public FieldInfo[] GetFields(); - public abstract FieldInfo[] GetFields(BindingFlags bindingAttr); - public virtual Type[] GetGenericArguments(); - public virtual Type[] GetGenericParameterConstraints(); public virtualabstract Type GetGenericTypeDefinition(); public override int GetHashCode(); - public Type GetInterface(string name); - public abstract Type GetInterface(string name, bool ignoreCase); - public virtual InterfaceMapping GetInterfaceMap(Type interfaceType); - public abstract Type[] GetInterfaces(); - public MemberInfo[] GetMember(string name); - public virtual MemberInfo[] GetMember(string name, BindingFlags bindingAttr); - public virtual MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr); - public MemberInfo[] GetMembers(); - public abstract MemberInfo[] GetMembers(BindingFlags bindingAttr); - public MethodInfo GetMethod(string name); - public MethodInfo GetMethod(string name, BindingFlags bindingAttr); - public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); ^ Pallavi Taneja: Binder decision pending. - public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers); - public MethodInfo GetMethod(string name, Type[] types); - public MethodInfo GetMethod(string name, Type[] types, ParameterModifier[] modifiers); - protected abstract MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); - public MethodInfo[] GetMethods(); - public abstract MethodInfo[] GetMethods(BindingFlags bindingAttr); - public Type GetNestedType(string name); - public abstract Type GetNestedType(string name, BindingFlags bindingAttr); - public Type[] GetNestedTypes(); - public abstract Type[] GetNestedTypes(BindingFlags bindingAttr); - public PropertyInfo[] GetProperties(); - public abstract PropertyInfo[] GetProperties(BindingFlags bindingAttr); - public PropertyInfo GetProperty(string name); - public PropertyInfo GetProperty(string name, BindingFlags bindingAttr); - public PropertyInfo GetProperty(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers); ^ Pallavi Taneja: Binder decision pending. - public PropertyInfo GetProperty(string name, Type returnType); - public PropertyInfo GetProperty(string name, Type returnType, Type[] types); - public PropertyInfo GetProperty(string name, Type returnType, Type[] types, ParameterModifier[] modifiers); - public PropertyInfo GetProperty(string name, Type[] types); - protected abstract PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers); - public new Type GetType(); - [MethodImpl(NoInlining)]public static Type GetType(string typeName); ^ Pallavi Taneja: GetType* can't be added to TypeInfo in the current contract version. - [MethodImpl(NoInlining)]public static Type GetType(string typeName, bool throwOnError); - [MethodImpl(NoInlining)]public static Type GetType(string typeName, bool throwOnError, bool ignoreCase); - [MethodImpl(NoInlining)]public static Type GetType(string typeName, Func assemblyResolver, Func typeResolver); - [MethodImpl(NoInlining)]public static Type GetType(string typeName, Func assemblyResolver, Func typeResolver, bool throwOnError); - [MethodImpl(NoInlining)]public static Type GetType(string typeName, Func assemblyResolver, Func typeResolver, bool throwOnError, bool ignoreCase); - public static Type[] GetTypeArray(object[] args); ^ Pallavi Taneja: Can't be added to TypeInfo in the current contract version. public static TypeCode GetTypeCode(Type type); - protected virtual TypeCode GetTypeCodeImpl(); - public static Type GetTypeFromCLSID(Guid clsid); ^ Pallavi Taneja: Interop concept - public static Type GetTypeFromCLSID(Guid clsid, bool throwOnError); - public static Type GetTypeFromCLSID(Guid clsid, string server); - public static Type GetTypeFromCLSID(Guid clsid, string server, bool throwOnError); - [MethodImpl(InternalCall)]public static Type GetTypeFromHandle(RuntimeTypeHandle handle); ^ Pallavi Taneja: Already implemented. - public static Type GetTypeFromProgID(string progID); ^ Pallavi Taneja: Interop concept - public static Type GetTypeFromProgID(string progID, bool throwOnError); - public static Type GetTypeFromProgID(string progID, string server); - public static Type GetTypeFromProgID(string progID, string server, bool throwOnError); - public static RuntimeTypeHandle GetTypeHandle(object o); ^ Pallavi Taneja: Decision pending. - protected abstract bool HasElementTypeImpl(); - public object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args); ^ Pallavi Taneja: Binder decision pending. - public object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, CultureInfo culture); - public abstract object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters); - protected abstract bool IsArrayImpl(); - public virtual bool IsAssignableFrom(Type c); - protected abstract bool IsByRefImpl(); - protected abstract bool IsCOMObjectImpl(); - protected virtual bool IsContextfulImpl(); - public virtual bool IsEnumDefined(object value); - public virtual bool IsEquivalentTo(Type other); - public virtual bool IsInstanceOfType(object o); - protected virtual bool IsMarshalByRefImpl(); - protected abstract bool IsPointerImpl(); - protected abstract bool IsPrimitiveImpl(); - public virtual bool IsSubclassOf(Type c); - protected virtual bool IsValueTypeImpl(); public virtualabstract Type MakeArrayType(); public virtualabstract Type MakeArrayType(int rank); public virtualabstract Type MakeByRefType(); public virtualabstract Type MakeGenericType(params Type[] typeArguments); public virtualabstract Type MakePointerType(); - [MethodImpl(InternalCall)]public static bool operator ==(Type left, Type right); - [MethodImpl(InternalCall)]public static bool operator !=(Type left, Type right); - [MethodImpl(NoInlining)]public static Type ReflectionOnlyGetType(string typeName, bool throwIfNotFound, bool ignoreCase); - void System.Runtime.InteropServices._Type.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - void System.Runtime.InteropServices._Type.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._Type.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._Type.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); public override string ToString(); } namespace System.Reflection { public abstract class Binder { ^ Pallavi Taneja: Expose as Empty in System.Reflection. Options added separately. protected Binder(); - public abstract FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo[] match, object value, CultureInfo culture); - public abstract MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] names, out object state); - public abstract object ChangeType(object value, Type type, CultureInfo culture); - public abstract void ReorderArgumentArray(ref object[] args, object state); - public abstract MethodBase SelectMethod(BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers); - public abstract PropertyInfo SelectProperty(BindingFlags bindingAttr, PropertyInfo[] match, Type returnType, Type[] indexes, ParameterModifier[] modifiers); } public enum BindingFlags { CreateInstance = 512, DeclaredOnly = 2, Default = 0, - ExactBinding = 65536, ^ Pallavi Taneja: Used only in case Binder is extensible. FlattenHierarchy = 64, GetField = 1024, GetProperty = 4096, IgnoreCase = 1, - IgnoreReturn = 16777216, ^ Pallavi Taneja: Only used in Interop. Instance = 4, InvokeMethod = 256, NonPublic = 32, - OptionalParamBinding = 262144, ^ Pallavi Taneja: [Unsure] used most only in varArgs scenario. Public = 16, - PutDispProperty = 16384, ^ Pallavi Taneja: Interop scenario. - PutRefDispProperty = 32768, SetField = 2048, SetProperty = 8192, Static = 8, - SuppressChangeType = 131072, } public abstract class ConstructorInfo : MethodBase, _ConstructorInfo { public static readonly string ConstructorName; public static readonly string TypeConstructorName; - protected ConstructorInfo(); public override MemberTypes MemberType { get; } public override bool Equals(object obj); public override int GetHashCode(); public virtual object Invoke(object[] parameters); - public abstract object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture); ^ Pallavi Taneja: System.Globalization dependency. Usage < 2%. No reflection contract currently take glob dep not just S.R.dll - public static bool operator ==(ConstructorInfo left, ConstructorInfo right); - public static bool operator !=(ConstructorInfo left, ConstructorInfo right); - void System.Runtime.InteropServices._ConstructorInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._ConstructorInfo.GetType(); - void System.Runtime.InteropServices._ConstructorInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._ConstructorInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._ConstructorInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); - object System.Runtime.InteropServices._ConstructorInfo.Invoke_2(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture); - object System.Runtime.InteropServices._ConstructorInfo.Invoke_3(object obj, object[] parameters); - object System.Runtime.InteropServices._ConstructorInfo.Invoke_4(BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture); - object System.Runtime.InteropServices._ConstructorInfo.Invoke_5(object[] parameters); } - public class CustomAttributeFormatException : FormatException { ^ Pallavi Taneja: [Not sure] Used mainly in case a tool formatted a custom attribute incorrectly. - public CustomAttributeFormatException(); - protected CustomAttributeFormatException(SerializationInfo info, StreamingContext context); - public CustomAttributeFormatException(string message); - public CustomAttributeFormatException(string message, Exception inner); } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct CustomAttributeNamedArgument { - public CustomAttributeNamedArgument(MemberInfo memberInfo, object value); - public CustomAttributeNamedArgument(MemberInfo memberInfo, CustomAttributeTypedArgument typedArgument); public bool IsField { get; } public MemberInfo MemberInfo { get; } public string MemberName { get; } public CustomAttributeTypedArgument TypedValue { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public static bool operator ==(CustomAttributeNamedArgument left, CustomAttributeNamedArgument right); ^ Pallavi Taneja: I have left out equality operators across reflection since, there were concerns earlier that its behavior might not be consistent with .Equals - public static bool operator !=(CustomAttributeNamedArgument left, CustomAttributeNamedArgument right); - public override string ToString(); } public abstract class EventInfo : MemberInfo, _EventInfo { - protected EventInfo(); public virtual MethodInfo AddMethod { get; } public abstract EventAttributes Attributes { get; } public virtual Type EventHandlerType { get; } public virtual bool IsMulticast { get; } public bool IsSpecialName { get; } public override MemberTypes MemberType { get; } public virtual MethodInfo RaiseMethod { get; } public virtual MethodInfo RemoveMethod { get; } public virtual void AddEventHandler(object target, Delegate handler); public override bool Equals(object obj); public MethodInfo GetAddMethod(); ^ Pallavi Taneja: Get*Method are exposed via S.R.TE. Consider removing from there. public abstractvirtual MethodInfo GetAddMethod(bool nonPublic); public override int GetHashCode(); - public MethodInfo[] GetOtherMethods(); ^ Pallavi Taneja: .other directive in events is not exposed in any language semantics we care about AFAIK and currently can be leveraged using ilasm only. - public virtual MethodInfo[] GetOtherMethods(bool nonPublic); public MethodInfo GetRaiseMethod(); public abstractvirtual MethodInfo GetRaiseMethod(bool nonPublic); public MethodInfo GetRemoveMethod(); public abstractvirtual MethodInfo GetRemoveMethod(bool nonPublic); - public static bool operator ==(EventInfo left, EventInfo right); - public static bool operator !=(EventInfo left, EventInfo right); public virtual void RemoveEventHandler(object target, Delegate handler); - void System.Runtime.InteropServices._EventInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._EventInfo.GetType(); - void System.Runtime.InteropServices._EventInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._EventInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._EventInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); } - public class ExceptionHandlingClause { ^ Pallavi Taneja: Not sure if we would want to expose SEH inspection or IL inspection in general. - protected ExceptionHandlingClause(); - public virtual Type CatchType { get; } - public virtual int FilterOffset { get; } - public virtual ExceptionHandlingClauseOptions Flags { get; } - public virtual int HandlerLength { get; } - public virtual int HandlerOffset { get; } - public virtual int TryLength { get; } - public virtual int TryOffset { get; } - public override string ToString(); } - public enum ExceptionHandlingClauseOptions { ^ Pallavi Taneja: Same as above. - Clause = 0, - Fault = 4, - Filter = 1, - Finally = 2, } public abstract class FieldInfo : MemberInfo, _FieldInfo { - protected FieldInfo(); public abstract FieldAttributes Attributes { get; } public abstractvirtual RuntimeFieldHandle FieldHandle { get; } public abstract Type FieldType { get; } public bool IsAssembly { get; } public bool IsFamily { get; } public bool IsFamilyAndAssembly { get; } public bool IsFamilyOrAssembly { get; } public bool IsInitOnly { get; } public bool IsLiteral { get; } - public bool IsNotSerialized { get; } ^ Pallavi Taneja: We do not expose NotSerializedAttribute notion. - public bool IsPinvokeImpl { get; } public bool IsPrivate { get; } public bool IsPublic { get; } - public virtual bool IsSecurityCritical { get; } - public virtual bool IsSecuritySafeCritical { get; } - public virtual bool IsSecurityTransparent { get; } public bool IsSpecialName { get; } public bool IsStatic { get; } public override MemberTypes MemberType { get; } public override bool Equals(object obj); public static FieldInfo GetFieldFromHandle(RuntimeFieldHandle handle); public static FieldInfo GetFieldFromHandle(RuntimeFieldHandle handle, RuntimeTypeHandle declaringType); public override int GetHashCode(); - public virtual Type[] GetOptionalCustomModifiers(); ^ Pallavi Taneja: [Not sure] Used in Compiler only context. Usage < 1% except xamarin using GetRawConstantValue 10%. Should there not be an alternative in metadata instead? - public virtual object GetRawConstantValue(); - public virtual Type[] GetRequiredCustomModifiers(); public abstract object GetValue(object obj); - public virtual object GetValueDirect(TypedReference obj); ^ Pallavi Taneja: TypedReference is not exposed. - public static bool operator ==(FieldInfo left, FieldInfo right); - public static bool operator !=(FieldInfo left, FieldInfo right); public virtual void SetValue(object obj, object value); - public abstract void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture); - public virtual void SetValueDirect(TypedReference obj, object value); - void System.Runtime.InteropServices._FieldInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._FieldInfo.GetType(); - void System.Runtime.InteropServices._FieldInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._FieldInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._FieldInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); } - public interface ICustomAttributeProvider { ^ Pallavi Taneja: We do not expose ICustomAttributeProvider, however we expose the members via extension methods via S.R.E. Hence, exposing this correctly will be difficult. - object[] GetCustomAttributes(bool inherit); - object[] GetCustomAttributes(Type attributeType, bool inherit); - bool IsDefined(Type attributeType, bool inherit); } - public enum ImageFileMachine { ^ Pallavi Taneja: Use S.R.I.RuntimeInformation instead - AMD64 = 34404, - ARM = 452, - I386 = 332, - IA64 = 512, } public class InvalidFilterCriteriaException : ApplicationExceptionException { ^ Pallavi Taneja: Used my Module and TYpe. Although Type.Filter* can't be exposed yet, we can expose Module.Filter* members. public InvalidFilterCriteriaException(); - protected InvalidFilterCriteriaException(SerializationInfo info, StreamingContext context); public InvalidFilterCriteriaException(string message); public InvalidFilterCriteriaException(string message, Exception inner); } - public interface IReflect { ^ Pallavi Taneja: Exposed in S.R.IS as used with IDispatch. - Type UnderlyingSystemType { get; } - FieldInfo GetField(string name, BindingFlags bindingAttr); - FieldInfo[] GetFields(BindingFlags bindingAttr); - MemberInfo[] GetMember(string name, BindingFlags bindingAttr); - MemberInfo[] GetMembers(BindingFlags bindingAttr); - MethodInfo GetMethod(string name, BindingFlags bindingAttr); - MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers); - MethodInfo[] GetMethods(BindingFlags bindingAttr); - PropertyInfo[] GetProperties(BindingFlags bindingAttr); - PropertyInfo GetProperty(string name, BindingFlags bindingAttr); - PropertyInfo GetProperty(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers); - object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters); } public abstract class MemberInfo : _MemberInfo, ICustomAttributeProvider { - protected MemberInfo(); public virtual IEnumerable CustomAttributes { get; } public abstract Type DeclaringType { get; } public abstractvirtual MemberTypes MemberType { get; } public virtual int MetadataToken { get; } public virtual Module Module { get; } public abstract string Name { get; } public abstractvirtual Type ReflectedType { get; } ^ Pallavi Taneja: Some concerns around PN implementation. public override bool Equals(object obj); - public abstract object[] GetCustomAttributes(bool inherit); ^ Pallavi Taneja: Already exposed via extensions. - public abstract object[] GetCustomAttributes(Type attributeType, bool inherit); - public virtual IList GetCustomAttributesData(); public override int GetHashCode(); - public abstract bool IsDefined(Type attributeType, bool inherit); - public static bool operator ==(MemberInfo left, MemberInfo right); ^ Pallavi Taneja: Operator overloads behave different than .Equals(). - public static bool operator !=(MemberInfo left, MemberInfo right); - void System.Runtime.InteropServices._MemberInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._MemberInfo.GetType(); - void System.Runtime.InteropServices._MemberInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._MemberInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._MemberInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); } public abstract class MethodBase : MemberInfo, _MethodBase { - protected MethodBase(); public abstract MethodAttributes Attributes { get; } public virtual CallingConventions CallingConvention { get; } public virtual bool ContainsGenericParameters { get; } public bool IsAbstract { get; } public bool IsAssembly { get; } public bool IsConstructor { get; } public bool IsFamily { get; } public bool IsFamilyAndAssembly { get; } public bool IsFamilyOrAssembly { get; } public bool IsFinal { get; } public virtual bool IsGenericMethod { get; } public virtual bool IsGenericMethodDefinition { get; } public bool IsHideBySig { get; } public bool IsPrivate { get; } public bool IsPublic { get; } - public virtual bool IsSecurityCritical { get; } - public virtual bool IsSecuritySafeCritical { get; } - public virtual bool IsSecurityTransparent { get; } public bool IsSpecialName { get; } public bool IsStatic { get; } public bool IsVirtual { get; } public abstractvirtual RuntimeMethodHandle MethodHandle { get; } public virtualabstract MethodImplAttributes MethodImplementationFlags { get; } - bool System.Runtime.InteropServices._MethodBase.IsAbstract { get; } - bool System.Runtime.InteropServices._MethodBase.IsAssembly { get; } - bool System.Runtime.InteropServices._MethodBase.IsConstructor { get; } - bool System.Runtime.InteropServices._MethodBase.IsFamily { get; } - bool System.Runtime.InteropServices._MethodBase.IsFamilyAndAssembly { get; } - bool System.Runtime.InteropServices._MethodBase.IsFamilyOrAssembly { get; } - bool System.Runtime.InteropServices._MethodBase.IsFinal { get; } - bool System.Runtime.InteropServices._MethodBase.IsHideBySig { get; } - bool System.Runtime.InteropServices._MethodBase.IsPrivate { get; } - bool System.Runtime.InteropServices._MethodBase.IsPublic { get; } - bool System.Runtime.InteropServices._MethodBase.IsSpecialName { get; } - bool System.Runtime.InteropServices._MethodBase.IsStatic { get; } - bool System.Runtime.InteropServices._MethodBase.IsVirtual { get; } public override bool Equals(object obj); - [MethodImpl(NoInlining)]public static MethodBase GetCurrentMethod(); public virtual Type[] GetGenericArguments(); public override int GetHashCode(); - public virtual MethodBody GetMethodBody(); ^ Pallavi Taneja: [Not sure] Used for IL inspection. Usage ~ 1% public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle); public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle, RuntimeTypeHandle declaringType); public abstractvirtual MethodImplAttributes GetMethodImplementationFlags(); public abstract ParameterInfo[] GetParameters(); public virtual object Invoke(object obj, object[] parameters); - public abstract object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture); ^ Pallavi Taneja: Dependency on System.Glob - public static bool operator ==(MethodBase left, MethodBase right); - public static bool operator !=(MethodBase left, MethodBase right); - void System.Runtime.InteropServices._MethodBase.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._MethodBase.GetType(); - void System.Runtime.InteropServices._MethodBase.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._MethodBase.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._MethodBase.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); } - public class MethodBody { ^ Pallavi Taneja: [Not sure] IL inspection - protected MethodBody(); - public virtual IList ExceptionHandlingClauses { get; } - public virtual bool InitLocals { get; } - public virtual int LocalSignatureMetadataToken { get; } - public virtual IList LocalVariables { get; } - public virtual int MaxStackSize { get; } - public virtual byte[] GetILAsByteArray(); } public abstract class MethodInfo : MethodBase, _MethodInfo { - protected MethodInfo(); public override MemberTypes MemberType { get; } public virtual ParameterInfo ReturnParameter { get; } public virtual Type ReturnType { get; } - public abstract ICustomAttributeProvider ReturnTypeCustomAttributes { get; } ^ Pallavi Taneja: Issues with exposing ICustomAttributeProvider public virtual Delegate CreateDelegate(Type delegateType); public virtual Delegate CreateDelegate(Type delegateType, object target); public override bool Equals(object obj); public abstractvirtual MethodInfo GetBaseDefinition(); public override Type[] GetGenericArguments(); public virtual MethodInfo GetGenericMethodDefinition(); public override int GetHashCode(); public virtual MethodInfo MakeGenericMethod(params Type[] typeArguments); - public static bool operator ==(MethodInfo left, MethodInfo right); - public static bool operator !=(MethodInfo left, MethodInfo right); - void System.Runtime.InteropServices._MethodInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._MethodInfo.GetType(); - void System.Runtime.InteropServices._MethodInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._MethodInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._MethodInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); } - public sealed class Missing : ISerializable { ^ Pallavi Taneja: Interop sceanrio, used in IDispatch. - public static readonly Missing Value; - void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo info, StreamingContext context); } public abstract class Module : _Module, ICustomAttributeProvider, ISerializable { public static readonly TypeFilter FilterTypeName; public static readonly TypeFilter FilterTypeNameIgnoreCase; - protected Module(); public virtual Assembly Assembly { get; } public virtual IEnumerable CustomAttributes { get; } public virtual string FullyQualifiedName { get; } public virtual int MDStreamVersion { get; } public virtual int MetadataToken { get; } - public ModuleHandle ModuleHandle { get; } ^ Pallavi Taneja: ModuleHandle is not exposed. public virtual Guid ModuleVersionId { get; } public virtual string Name { get; } public virtual string ScopeName { get; } public override bool Equals(object o); public virtual Type[] FindTypes(TypeFilter filter, object filterCriteria); - public virtual object[] GetCustomAttributes(bool inherit); - public virtual object[] GetCustomAttributes(Type attributeType, bool inherit); - public virtual IList GetCustomAttributesData(); public FieldInfo GetField(string name); public virtual FieldInfo GetField(string name, BindingFlags bindingAttr); public FieldInfo[] GetFields(); public virtual FieldInfo[] GetFields(BindingFlags bindingFlags); public override int GetHashCode(); public MethodInfo GetMethod(string name); public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); public MethodInfo GetMethod(string name, Type[] types); - protected virtual MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); public MethodInfo[] GetMethods(); public virtual MethodInfo[] GetMethods(BindingFlags bindingFlags); - public virtual void GetObjectData(SerializationInfo info, StreamingContext context); - public virtual void GetPEKind(out PortableExecutableKinds peKind, out ImageFileMachine machine); - public virtual X509Certificate GetSignerCertificate(); public virtual Type GetType(string className); public virtual Type GetType(string className, bool ignoreCase); public virtual Type GetType(string className, bool throwOnError, bool ignoreCase); public virtual Type[] GetTypes(); - public virtual bool IsDefined(Type attributeType, bool inherit); - public virtual bool IsResource(); - public static bool operator ==(Module left, Module right); - public static bool operator !=(Module left, Module right); public FieldInfo ResolveField(int metadataToken); public virtual FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); public MemberInfo ResolveMember(int metadataToken); public virtual MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); public MethodBase ResolveMethod(int metadataToken); public virtual MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); public virtual byte[] ResolveSignature(int metadataToken); public virtual string ResolveString(int metadataToken); public Type ResolveType(int metadataToken); public virtual Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments); - void System.Runtime.InteropServices._Module.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - void System.Runtime.InteropServices._Module.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._Module.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._Module.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); public override string ToString(); } - public sealed class ObfuscateAssemblyAttribute : Attribute { ^ Pallavi Taneja: Not a reflection concept. - public ObfuscateAssemblyAttribute(bool assemblyIsPrivate); - public bool AssemblyIsPrivate { get; } - public bool StripAfterObfuscation { get; set; } } - public sealed class ObfuscationAttribute : Attribute { ^ Pallavi Taneja: Same as above.s - public ObfuscationAttribute(); - public bool ApplyToMembers { get; set; } - public bool Exclude { get; set; } - public string Feature { get; set; } - public bool StripAfterObfuscation { get; set; } } public class ParameterInfo : _ParameterInfo, ICustomAttributeProvider, IObjectReference { - protected int PositionImpl; - protected object DefaultValueImpl; - protected MemberInfo MemberImpl; - protected ParameterAttributes AttrsImpl; - protected string NameImpl; - protected Type ClassImpl; - protected ParameterInfo(); public virtual ParameterAttributes Attributes { get; } public virtual IEnumerable CustomAttributes { get; } public virtual object DefaultValue { get; } public virtual bool HasDefaultValue { get; } public bool IsIn { get; } - public bool IsLcid { get; } public bool IsOptional { get; } public bool IsOut { get; } public bool IsRetval { get; } public virtual MemberInfo Member { get; } public virtual int MetadataToken { get; } public virtual string Name { get; } public virtual Type ParameterType { get; } public virtual int Position { get; } public virtual object RawDefaultValue { get; } - public virtual object[] GetCustomAttributes(bool inherit); - public virtual object[] GetCustomAttributes(Type attributeType, bool inherit); - public virtual IList GetCustomAttributesData(); - public virtual Type[] GetOptionalCustomModifiers(); - public object GetRealObject(StreamingContext context); - public virtual Type[] GetRequiredCustomModifiers(); ^ Pallavi Taneja: [Not sure] Compiler only scenario. - public virtual bool IsDefined(Type attributeType, bool inherit); - void System.Runtime.InteropServices._ParameterInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - void System.Runtime.InteropServices._ParameterInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._ParameterInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._ParameterInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); - public override string ToString(); } - public sealed class Pointer : ISerializable { ^ Pallavi Taneja: Interop scenario. - public unsafe static object Box(void* ptr, Type type); - void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo info, StreamingContext context); - public unsafe static void* Unbox(object ptr); } public abstract class PropertyInfo : MemberInfo, _PropertyInfo { - protected PropertyInfo(); public abstract PropertyAttributes Attributes { get; } public abstract bool CanRead { get; } public abstract bool CanWrite { get; } public virtual MethodInfo GetMethod { get; } public bool IsSpecialName { get; } public override MemberTypes MemberType { get; } public abstract Type PropertyType { get; } public virtual MethodInfo SetMethod { get; } public override bool Equals(object obj); public MethodInfo[] GetAccessors(); ^ Pallavi Taneja: Get* APIs exposed via TypeExtensions public abstractvirtual MethodInfo[] GetAccessors(bool nonPublic); public virtual object GetConstantValue(); public MethodInfo GetGetMethod(); public abstractvirtual MethodInfo GetGetMethod(bool nonPublic); public override int GetHashCode(); public abstract ParameterInfo[] GetIndexParameters(); - public virtual Type[] GetOptionalCustomModifiers(); ^ Pallavi Taneja: Compiler only scenario. - public virtual object GetRawConstantValue(); - public virtual Type[] GetRequiredCustomModifiers(); public MethodInfo GetSetMethod(); public abstractvirtual MethodInfo GetSetMethod(bool nonPublic); public object GetValue(object obj); public virtual object GetValue(object obj, object[] index); - public abstract object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture); ^ Pallavi Taneja: CultureInfo dependency. - public static bool operator ==(PropertyInfo left, PropertyInfo right); - public static bool operator !=(PropertyInfo left, PropertyInfo right); public void SetValue(object obj, object value); public virtual void SetValue(object obj, object value, object[] index); - public abstract void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture); - void System.Runtime.InteropServices._PropertyInfo.GetIDsOfNames(ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId); - Type System.Runtime.InteropServices._PropertyInfo.GetType(); - void System.Runtime.InteropServices._PropertyInfo.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo); - void System.Runtime.InteropServices._PropertyInfo.GetTypeInfoCount(out uint pcTInfo); - void System.Runtime.InteropServices._PropertyInfo.Invoke(uint dispIdMember, ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr); } - public class StrongNameKeyPair : IDeserializationCallback, ISerializable { ^ Pallavi Taneja: Is System.Reflection the right place for this? - public StrongNameKeyPair(byte[] keyPairArray); - public StrongNameKeyPair(FileStream keyPairFile); - protected StrongNameKeyPair(SerializationInfo info, StreamingContext context); - public StrongNameKeyPair(string keyPairContainer); - public byte[] PublicKey { get; } - void System.Runtime.Serialization.IDeserializationCallback.OnDeserialization(object sender); - void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo info, StreamingContext context); } - public class TypeDelegator : TypeInfo { ^ Pallavi Taneja: Used in extension scenarios. - protected Type typeImpl; - protected TypeDelegator(); - public TypeDelegator(Type delegatingType); - public override Assembly Assembly { get; } - public override string AssemblyQualifiedName { get; } - public override Type BaseType { get; } - public override string FullName { get; } - public override Guid GUID { get; } - public override bool IsConstructedGenericType { get; } - public override int MetadataToken { get; } - public override Module Module { get; } - public override string Name { get; } - public override string Namespace { get; } - public override RuntimeTypeHandle TypeHandle { get; } - public override Type UnderlyingSystemType { get; } - protected override TypeAttributes GetAttributeFlagsImpl(); - protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); - public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr); - public override object[] GetCustomAttributes(bool inherit); - public override object[] GetCustomAttributes(Type attributeType, bool inherit); - public override Type GetElementType(); - public override EventInfo GetEvent(string name, BindingFlags bindingAttr); - public override EventInfo[] GetEvents(); - public override EventInfo[] GetEvents(BindingFlags bindingAttr); - public override FieldInfo GetField(string name, BindingFlags bindingAttr); - public override FieldInfo[] GetFields(BindingFlags bindingAttr); - public override Type GetInterface(string name, bool ignoreCase); - public override InterfaceMapping GetInterfaceMap(Type interfaceType); - public override Type[] GetInterfaces(); - public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr); - public override MemberInfo[] GetMembers(BindingFlags bindingAttr); - protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); - public override MethodInfo[] GetMethods(BindingFlags bindingAttr); - public override Type GetNestedType(string name, BindingFlags bindingAttr); - public override Type[] GetNestedTypes(BindingFlags bindingAttr); - public override PropertyInfo[] GetProperties(BindingFlags bindingAttr); - protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers); - protected override bool HasElementTypeImpl(); - public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters); - protected override bool IsArrayImpl(); - public override bool IsAssignableFrom(TypeInfo typeInfo); - protected override bool IsByRefImpl(); - protected override bool IsCOMObjectImpl(); - public override bool IsDefined(Type attributeType, bool inherit); - protected override bool IsPointerImpl(); - protected override bool IsPrimitiveImpl(); - protected override bool IsValueTypeImpl(); } } ``` +5386 area-System.Net Add netcore50 configuration to System.Net.Primitives Also consolidate the net46 project in the 'facade' directory down into the root project file. @davidsh , @CIPop , @weshaggard +5388 area-System.Net Disable two more NegotiateStream tests These have also been taking out multiple builds. I'm assuming it's the same cause as the other ones on this type and have as such associated it with the same issue. cc: @cipop, @davidsh +5389 area-Serialization Improve XmlSerializer.FromTypes Review comments in https://github.com/dotnet/corefx/pull/5384 and see if we need to make any changes. +5391 area-System.Net Add netcore50 and net46 configurations for System.Net.Sockets @davidsh , @CIPop , @weshaggard +5394 area-Serialization Fix serialization of _syncRoot field so behavior aligns with Desktop This is to revert back the change made a while ago regarding serializing of object property to make sure compatibility with Desktop for types with private _syncRoot field. Some types with private field _syncRoot of type object on Desktop prevent the serialization of this field by using [NonSerializable] attribute. Because this attribute doesn't exist in NetCore/NetNative, we skip the serialization of object type altogether to ensure consistent payload and serialization-deserialization among the platforms. Related issue #4595 @shmao @SGuyGe @zhenlan +5395 area-System.Net Add netcore50 support to System.Net.WebSockets.Client library cc @mellinoe @CIPop @davidsh +5396 area-System.Net Eliminate unnecessary GC handle allocations in Unix Sockets implementation Replaces GC handle allocation with a pinned local, in the cases where we are pinning a single buffer over a statically-scoped region. This should have significantly lower runtime overhead. @stephentoub, @pgavlin +5397 area-System.Net Test fails to verify client.ImpersonationLevel: System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails() MESSAGE: Assert.True() Failure\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails() in d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs:line 155 This is: Assert.Equal(TokenImpersonationLevel.Identification, client.ImpersonationLevel); +5398 area-Serialization Fix serialization of recursive collections in data contract serializers This is a port of a change-set from Desktop to fix the stack overflow issue when serializing recursive collections. The new behavior is to throw exception whenever they are recognized because serialization of them is not supported. @shmao @SGuyGe @zhenlan +5401 area-System.Net Test failure in NegotiateStream_StreamToStream_Authentication_TargetName_Success http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/924/testReport/junit/System.Net.Security.Tests/NegotiateStreamStreamToStreamTest/NegotiateStream_StreamToStream_Authentication_TargetName_Success/ Appears that there was a timeout during the handshake. ``` Stacktrace MESSAGE: Handshake completed in the allotted time\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_TargetName_Success() in d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs:line 92 ``` +5404 area-Serialization Fix serialization of get-only IEnumerable to throw exception Porting a fix from Desktop. Deserialization of get-only IEnumerable collection is not supported. This change fixes the NRE by throwing exception earlier in the deserialization process. @shmao @SGuyGe @zhenlan +5405 area-System.Net Add netcore50 configuration for System.Net.NameResolution Also consolidated the existing net46 facade configuration into the root-level project file, and deleted the facade folder. @davidsh, @cipop, @weshaggard +5406 area-System.IO IsoStore: Packaging for libraries that only support a single platform Today if a package only targets a single platform our packaging infrastructure still requires a `dotnetX.Y` reference assembly. We should relax this requirement since it doesn't make sense, packages should only use `dotnetX.Y` if they need to be portable to more than one platform. Sample packages: System.IO.IsolatedStorage System.Runtime.Loader An alternate solution here would be to tweak these implementations to work on more than one platform and package them as dotnet implementations. +5410 area-Serialization XML reading issue with Binary Reader: certain string content lengths can't be read The issue has been fixed on Desktop. We should port the fix to corefx. +5411 area-System.Net UDP tests fail with timeout sending/receiving data over loopback http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/956/consoleFull ``` 17:49:39 System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_UdpClient_Single_Datagram_UDP_IPv4 [FAIL] 17:49:39 Assert.True() Failure 17:49:39 Expected: True 17:49:39 Actual: False 17:49:39 Stack Trace: 17:49:39 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(192,0): at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAsync_UdpClient_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) ``` +5412 area-System.Net NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails failed on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/942/consoleFull ``` 15:42:24 System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails [FAIL] 15:42:24 Assert.True() Failure 15:42:24 Expected: True 15:42:24 Actual: False 15:42:24 Stack Trace: 15:42:24 d:\j\workspace\dotnet_corefx\windows_nt_release_prtest\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs(156,0): at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails() ``` +5414 area-System.Data System.Data.ProviderBase.DbConnectionFactory.s_pendingOpenNonPooledNext careless manipulation System.Data.ProviderBase.DbConnectionFactory.s_pendingOpenNonPooledNext is declared as `static int` which means it is signed and retains its value for very long. Here's the only place where it's manipulated: ``` idx = s_pendingOpenNonPooledNext++ % s_pendingOpenNonPooled.Length; ``` If `pendingOpenNonPooledNext == Int32.MaxValue` then one of the following will happen. If code runs in unchecked context then the variable overflows. Then depending on `s_pendingOpenNonPooled.Length` value `%` may yield a negative value and later array access results in exception. If code runs in checked context then an exception is thrown immediately. This variable should be unsigned (`uint` would do). The `++` operation should be wrapped in `unchecked {}` so that it surely causes an overflow, not an exception. +5415 area-System.Data as used instead of cast in System.Data.SqlClient.SqlConnection.TryOpen() "System.Data.SqlClient.SqlConnection.TryOpen() goes like this: ``` var tdsInnerConnection = (InnerConnection as SqlInternalConnectionTds); Debug.Assert(tdsInnerConnection.Parser != null, ""Where's the parser?""); if (!tdsInnerConnection.ConnectionOptions.Pooling) ``` If for any stupid reason `InnerConnection` cannot be cast to `SqlInternalConnectionTds` then `as` yields a null reference and later code yields a NullReferenceException. This causes error hiding. A cast would be better - an InvalidCastException would be thrown which would be much clearer. " +5416 area-System.Linq EnumerableQuery stack-overflow on Block or Conditional that is not of queryable type E.g. ``` C# Enumerable.Empty().AsQueryable().Provider.Execute( Expression.Condition( Expression.Constant(true), Expression.Return(target, Expression.Constant(3)), Expression.Return(target, Expression.Constant(1)) ) ); Enumerable.Empty().AsQueryable().Provider.Execute( Expression.Block( Expression.Return(target, Expression.Constant(2)), Expression.Label(target, Expression.Default(typeof(int))) ) ); ``` Both go into infinite recursion and overflow the stack. While non-queryable-type expressions aren't likely in this context, they could still be used and of course could be sub-expressions of a queryable-type expression. +5419 area-System.Net Augment GlobalLog.Assert* call sites in System.Net "The ""temporary"" part 1 of https://github.com/dotnet/corefx/issues/5265 until a better logging solution can be put in place. 1. Removed the ""bool globalLogEnabled = GlobalLog.IsEnabled"" that had been used previously. 2. Added Debug.Fail calls at all GlobalLog.Assert\* call sites. cc: @cipop, @davidsh, @josguil " +5420 area-Infrastructure Builds files don't handle 'unix' bins correctly IL libraries in corefx tend to take one of 3 shapes. 1. Single cross-platform library. 2. Windows/Unix library. 3. Windows/Linux/OSX library. Right now we don't handle 2 correctly in the builds files. Instead of treating them as OSGroup=Unix and building on both Linux and OSX they use OSGroup=linux and only build on Linux. /cc @weshaggard @stephentoub +5422 area-Infrastructure [Bug] Portable Class Library compilation gets broken when a target is _removed_ "Filing on behalf of @dsaf from https://github.com/dotnet/coreclr/issues/2651: Steps to reproduce: 1) Create a new PCL project targeting .NET 4.5, Win 8 and SL 5 (Profile47) 2) Change `Class1.cs` to following code (notice it compiles): ``` csharp public class Class1 { private void Test() { IConvertible test; } } ``` 3) Disable SL 5 target in project settings, notice a message _""The following will be automatically targeted because they support the same set of portable APIs: ASP.NET Core 5.0""_. Project changes to Profile7 4) Compilation is now broken: _""CS0246 The type or namespace name 'IConvertible' could not be found (are you missing a using directive or an assembly reference?)""_ The code could be relying on value types inheriting `IConvertible` as well, so it needs the interface. There are likely to be other similar breaking changes around Reflection APIs. Effectively there seems to be a bug in some piece of code that tells that a set of portable APIs is common when in fact it is not. I don't know where it is: in PCL profile configuration, Visual Studio or .NET Framework. Removing a target should not be a breaking change. " +5423 area-System.IO [Performance] System.IO.Compression: Increase range of test scenarios As part of resolving https://github.com/dotnet/corefx/issues/4475 and https://github.com/dotnet/corefx/issues/3986 we should add more reusable test assets that cover scenarios other than random or semi-random files. One option would be to look into including the Canterbury/Calgary corpus in the Compression.Testdata nuget package. +5424 area-Infrastructure Enable the stack-protector compiler option for all corefx native code on Unix We need to make this change for corefx: https://github.com/dotnet/coreclr/pull/2616/files +5426 area-System.Net Ensure error handling is properly checking the last error in Sockets See https://github.com/dotnet/corefx/pull/5419#issuecomment-171752102. +5428 area-System.Runtime Add Environment.MachineName to .NET Core. In reference to #4306 The implementation is not provided for .NET Native, and will be documented in `AppCompatBaseLine.txt`. The win32 api `GetComputerName` is not available for Store profile, will be implementing this for .NET Native when there are relevant win32 apis that can be used. cc @joshfree +5430 area-System.Diagnostics DirectoryNotFoundException from TestGetProcessesByName in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_debug_tst_prtest/814/console ``` 13:02:00 System.Diagnostics.Tests.ProcessTests.TestGetProcessesByName [FAIL] 13:02:00 System.IO.DirectoryNotFoundException : Could not find a part of the path '/proc/49303/task/'. 13:02:00 Stack Trace: 13:02:00 at System.IO.UnixFileSystem.FileSystemEnumerable`1.OpenDirectory(String fullPath) 13:02:00 at System.IO.UnixFileSystem.FileSystemEnumerable`1.Enumerate() 13:02:00 at System.IO.UnixFileSystem.FileSystemEnumerable`1..ctor(String userPath, String searchPattern, SearchOption searchOption, SearchTarget searchTarget, Func`3 translateResult) 13:02:00 at System.IO.UnixFileSystem.EnumeratePaths(String path, String searchPattern, SearchOption searchOption, SearchTarget searchTarget) 13:02:00 at System.IO.Directory.EnumerateDirectories(String path) 13:02:00 at System.Diagnostics.ProcessManager.CreateProcessInfo(ParsedStat procFsStat, ReusableTextReader reusableReader) 13:02:00 at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) 13:02:00 at System.Diagnostics.Process.GetProcessesByName(String processName) 13:02:00 at System.Diagnostics.Tests.ProcessTests.TestGetProcessesByName() ``` +5432 area-Infrastructure ./init-tools.sh fails on OSX I am getting an error on OSX ``` ./init-tools.sh: line 39: wget: command not found ``` We should be using curl instead, since it is installed by default and we already need libcurl to build the native components in corefx. +5434 area-Infrastructure Installing dotnet cli during the build shows Windows dialog (with files being copied) As in the subject +5436 area-System.Net TcpClient Has some issues on Mac with coreclr here is a test app: https://github.com/zhili1208/coreclrMacTcpTest Server side just listens and print incoming string, client side just connect to server and send string. On Mac, when I start client, it just hang or the string from server is null. only happens with coreclr 1.0.0-rc1-update1, works well on mono. +5440 area-Serialization Add serialization negative tests for different collections of same type as KnownTypes Add serialization negative tests for scenario when different collection types are provided through KnowType attribute but they're seen as the same type within serialization. @shmao @SGuyGe @zhenlan +5441 area-System.Net Clean up Unix Domain Sockets example - Separate the type out into its own file, to make it easier for others to consume - Fix a bug that prohbited it from being used with Accept (removed min length validation in ctor) - Added a test that does Connect/Accept and Send/Receive - A few other cleanups in the existing tests As a follow-on to https://github.com/dotnet/corefx/pull/5051, fixes #4588. cc: @IlyaBiryukov, @pgavlin, @ericeil +5443 area-Infrastructure Capture the log files in failed CI runs https://github.com/dotnet/dotnet-ci/blob/8e3c2c86f3b9f6edcd1a1e0aafe8cc8ea5a1cad4/jobs/generation/Utilities.groovy#L379 We currently only capture the log file for jobs when the pass but there are a lot of time we really need to full log for failed jobs. We should see if we can conditionally always archive the log file or find another way to capture the log, even perhaps dumping to the console as part of the CI. cc @mmitche +5444 area-Infrastructure Switch to users wide package cache Today we scope our packages to the repo which gives us isolation but it causes things like CI jobs to always have to download these package every time, which cost time and add extra unnecessary reliability issues. For local devs it also costs in disk space because ever instance of this repo or our sister repo's has their own cache which causes a lot of duplication. We should find a good user wide cache directory, perhaps just use the default location that nuget/dnu use. +5445 area-Serialization Remove unnecessary access checks in data contract serializers Internal private member access doesn't require InternalsVisibleTo attribute anymore. In addition to that, implementation of DataConractSerializer and DataContractJsonSerializer have been consolidated into one assembly so there is no need to check for access visibility to System.ServiceModel.Web which no longer exists. This is porting a change from full Desktop to clean up the unnecessary checks for assembly by name patterns. @shmao @SGuyGe @zhenlan +5449 area-System.Linq ForRef and MapRef extension method for array It is an easy implement to let foreach for reference in array I want it to be included in official System.Linq library ```c# public delegate void RefAction(ref T item); public static T[] ForRef(this T[] array,RefAction action) { int i = 0; while(i < array.Length) { action(ref array[i]); i++; } return array; /// return self to chain with Linq } public delegate void RefFunction(ref T item,out R obj); public static R[] MapRef(this T[] array,RefFunction func) { int i = 0; var res = new R[array.Length]; while(i < array.Length) { func(ref array[i],out res[i]); i++; } return res; } ``` Also it could be great if this pattern also allowed in Dictionary and List I want to discus first then I may create a fork and pull request by myself +5450 area-System.Data System.Data.SqlClient.SqlCommand.Prepare() calls SqlStatistics.StopTimer() outside finally block All methods of `System.Data.SqlClient.SqlCommand` which call `SqlStatistics.StartTimer()` go like this: ``` SqlStatistics statistics = null; try { statistics = SqlStatistics.StartTimer(Statistics); doSomethingUseful(); } finally { SqlStatistics.StopTimer(statistics); } ``` but `SqlCommand.Prepare()` does not follow that pattern - it contains `StopTimer()` call outside `finally` so `StopTimer()` is not guaranteed to run should useful code throw an exception. +5452 area-System.Data System.Data.SqlClient.SqlConnection.Open()/OpenAsync() code duplication "Both `System.Data.SqlClient.SqlConnection.Open()` and `System.Data.SqlClient.SqlConnection.OpenAsync()` contain this code ``` if (StatisticsEnabled) { if (null == _statistics) { _statistics = new SqlStatistics(); } else { _statistics.ContinueOnNewConnection(); } } ``` which performs something non-trivial which looks like preparing the ""statistics"" object for the new session. I assume the two pieces of code must be in sync at all times yet these eleven lines of code are duplicated without any explanation. This should either be documented or just extracted into a separate method. " +5453 area-Meta Create a versioning document to clarify how we version assemblies and packages We have a doc internally. I need to update it and publish it. +5458 area-System.IO System.IO.Compression: Make the ZLib BestCompression 6 CompressionLevel 6 is what we used to use and we changed it in #4589 because we didn't see any perf regressions in doing so. With more testing, it has become clear that moving from 6 to 9 severely hurt perf in some scenarios so it's being reverted back to 6. resolves #4475 @stephentoub @eerhardt @bjjones Perf results coming in subsequent comments. +5459 area-System.IO "Three ""unicode"" System.IO.Compression.ZipFile tests are failing on Unix" "We currently have the following tests not running on Unix: https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs#L17 https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs#L69 https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs#L165 with code like the following: ``` C# if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) // [ActiveIssue(846, PlatformID.AnyUnix)] { await TestCreateDirectory(zfolder(""unicode""), true); } ``` Since #846 has been closed, we need to investigate these tests and figure out why they aren't passing on Unix. " +5460 area-System.Collections Investigate and fix System.Collections tests marked with ActiveIssue #846 Currently there are 6 tests in System.Collections.Tests and System.Collections.NonGeneric.Tests that are marked with ActiveIssue #846, but #846 has been implemented and closed. We should investigate these tests and find out why they are failing. https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Collections/tests/Generic/SortedList/Constructor_IDictionary_ComparisonType.cs#L309 https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Collections/tests/Generic/SortedList/Constructor_IDictionary_IKeyComparer.cs#L204 https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Collections/tests/Generic/SortedList/Constructor_IKeyComparer.cs#L178 https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Collections/tests/Generic/SortedList/Constructor_int_ComparisonType.cs#L152 https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Collections/tests/Generic/SortedList/Constructor_int_IKeyComparer.cs#L196 https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Collections.NonGeneric/tests/Comparer/Comparer_CaseInsensitive.cs#L115 +5461 area-System.Net Disabling System.Net intermittently failing tests - Disabling failing tests based on reported bugs. - Adding new tests that repro reported issues. - Fixing System.Net.Security.Tests.csproj. @davidsh @stephentoub @ericeil PTAL +5462 area-System.Xml System.Xml.Tests.XmlConvertTests.ToTypeTests failing on Unix The XmlConvertTests.ToTypeTests is currently failing on Unix https://github.com/dotnet/corefx/blob/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Xml.ReaderWriter/tests/XmlConvert/XmlConvertTests.cs#L57 We should investigate this test and figure out why it is failing. +5463 area-System.Globalization Investigate failing System.Globalization.Tests on Unix There are a number of tests under https://github.com/dotnet/corefx/tree/c02d33b18398199f6acc17d375dab154e9a1df66/src/System.Globalization/tests that are disabled against #846. However, #846 has been implemented and closed. We should investigate these tests and figure out why they are still failing on Unix. +5468 area-Serialization Revert the removed lines to fix build break in NetNative These were removed as part of https://github.com/dotnet/corefx/pull/5404. However they are needed for NetNative. So revert this change to fix NetNative build break. @shmao @SGuyGe +5469 area-System.Globalization TimeZoneInfo FindById behaves differently before and after calling GetSystemTimeZones on Unix "See the third issue listed here: https://github.com/dotnet/coreclr/issues/2185 > Zones usually in the ""backward"" file behave inconsistently. If you call GetSystemTimeZones() before requesting them by ID, only zone.tab is loaded and the old zone ID can't be used. If you call FindSystemTimeZoneById before calling GetSystemTimeZones() , the zone is loaded from its file, and a later call to GetSystemTimeZones() will include the ID. Sample zone for this behaviour: America/Atka . I can understand the zone either never being available, or being available through FindSystemTimeZoneById but never advertized by GetSystemTimeZones() , but the current behaviour is really unpleasant. Here is the code to illustrate the problem: ``` C# // Uncomment these lines to show False and then an exception... // var atkaPresent = TimeZoneInfo.GetSystemTimeZones().Select(zone => zone.Id).Contains(""America/Atka""); // Console.WriteLine(atkaPresent); var atka = TimeZoneInfo.FindSystemTimeZoneById(""America/Atka""); Console.WriteLine(atka.Id); ``` " +5471 area-Infrastructure Remove workaround from System.Runtime.Loader package Related: https://github.com/dotnet/corefx/issues/5406 I updated the generation mapping for DNXCore50 to 5.6 in NuGet. When our validation task picked up this change it saw that the minimum generation supported by all platforms is now 5.6. As a result it produced an error saying that we should update the reference assembly to 5.6 as well. The problem is that not everyone consuming this package is using the latest nuget. For now we will workaround this by duplicating the reference in the dncore50 folder. This issue is tracking removal of that workaround. +5472 area-System.Net Improve Unix synchronous socket perf "Synchronous operations on sockets are currently always emulated in terms of async/non-blocking operations. This has quite a lot of run-time overhead, due to extra system calls, context switches, etc. With this change we keep the socket in ""blocking"" mode until the user requests non-blocking mode _or_ initiates an asynchronous operation. The result is that a socket that only ever experiences synchronous operations will not have the overhead of emulating sync over async. " +5473 area-System.Net Fix GetHostByName_HostName_GetHostByAddr test I couldn't repro the original failure mentioned, and instead got a deterministic failure on every execution. I've fixed that, and was able to run the test 10,000 times on both Windows and Linux without failure. Fixes https://github.com/dotnet/corefx/issues/2894 (the remainder of the mentioned issues were already addressed). cc: @cipop, @ericeil +5474 area-System.Runtime Provide a generic API to read from and write to a pointer C# doesn't support pointer operations on generic types. We can, however, express them in IL. A prototype could like this: ``` C# public static class Unsafe { [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T Read(void * p) { // Can't be expressed in C#, thus in IL: ldarg.0 ldobj !!T ret } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Write(void * p, T value) { // Can't be expressed in C#, thus in IL: ldarg.0 ldarg.1 stobj !!T ret } } ``` This would also solve issues like #5202 without any additional work. +5478 area-Serialization Fix serialization in NetNative to throw exception for get-only IEnumerable collection For IEnumerable get-only collection deserialization is not supported because there is no Add method to populate the collection. In this scenario, the NetNative sgen will not initialize the delegate to read them so we should throw meaningful exception when that happens. This change only affects NetNative. The fix for NetCore has been merged in https://github.com/dotnet/corefx/pull/5404 @shmao @SGuyGe @zhenlan +5479 area-System.IO GZipStream throws an exception on creation since 5.0.1-rc2-23614 "I cannot get any version past 5.0.1-rc2-23614 to work when calling the following code. ``` public Task CompressAsync(byte[] uncompressedData) { return Task.Run(() => { using (MemoryStream compressedMemoryStream = new MemoryStream()) { using (GZipStream zipStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress, true)) { zipStream.Write(uncompressedData, 0, uncompressedData.Length); } return compressedMemoryStream.ToArray(); } }); } ``` Receives the following exception: ``` System.IO.Compression.ZLibException was unhandled by user code HResult=-2146232800 Message=The underlying compression routine could not be loaded correctly. Source=System.IO.Compression ZLibContext="""" ZLibErrorCode=0 ZLibErrorMessage="""" StackTrace: at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater..ctor(CompressionLevel compressionLevel, Int32 windowBits) at System.IO.Compression.DeflateStream.InitializeDeflater(Stream stream, Boolean leaveOpen, Int32 windowBits, CompressionLevel compressionLevel) at System.IO.Compression.DeflateStream..ctor(Stream stream, CompressionMode mode, Boolean leaveOpen, Int32 windowBits) at System.IO.Compression.GZipStream..ctor(Stream stream, CompressionMode mode, Boolean leaveOpen) at CCC.Core.Framework.Compression.GZipCompressor.<>c__DisplayClass1_0.b__0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() InnerException: HResult=-2146233052 Message=Unable to load DLL 'clrcompression.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Source=System.IO.Compression TypeName="""" StackTrace: at Interop.zlib.deflateInit2_(Byte* stream, Int32 level, Int32 method, Int32 windowBits, Int32 memLevel, Int32 strategy, Byte* version, Int32 stream_size) at Interop.zlib.DeflateInit2_(ZStream& stream, CompressionLevel level, CompressionMethod method, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.ZLibNative.ZLibStreamHandle.DeflateInit2_(CompressionLevel level, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) InnerException: ``` " +5480 area-Meta Add documentation for porting, triage, and issue bar This also includes some boiler plate for the roadmap for post-RTM, but it's not fully done yet. However, I believe it's better to get the parts in we already have, then waiting for the complete set. @weshaggard @KrzysztofCwalina @richlander @bleroy +5481 area-System.IO Remove SecurityTransparentAttribute from the Open Compression [this TFS commit](https://github.com/dotnet/corefx/commit/15f47efe119b17032a661f752248ae1fcc172bf3) added an assembly tag to both the open and desktop builds that was previously only in the desktop build. The inclusion to the Open build is causing an upstream failure https://github.com/dotnet/corefx/issues/5380. This PR moves the Security tag inclusion to only be used on the net46 build. @weshaggard @stephentoub @troydai +5482 area-Serialization Port from desktop .NET: Performance improvement for XmlUTF8TextReader when reading invalid chars The desktop code can be found at: http://referencesource.microsoft.com/#System.Runtime.Serialization/System/Xml/XmlUTF8TextReader.cs,c4ce4aec957c3cd6 +5484 area-System.Net Detect Keep-Alive failures In desktop CLR, it is fairly straightforward to detect a keep-alive failure using `WebExceptionStatus.KeepAliveFailure`. I have yet to find any equivalent in CoreCLR. It seems that even the PAL in System.Net.Requests only detects name resolution failures. I have specific processing for keep-alive failures in an application that I am porting to CoreCLR and I am not seeing how I can do that on CoreCLR. Is there a way? Or will there be a way? +5485 area-System.Net PostEmptyContentUsingChunkedEncoding_Success failed on Windows The server returned an invalid or unrecognized response... I assume this is just some sort of intermittent infrastructure issue, but opening an issue just in case. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/1092/consoleFull ``` 09:59:40 System.Net.Http.Functional.Tests.PostScenarioTest.PostEmptyContentUsingChunkedEncoding_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx) [FAIL] 09:59:40 System.Net.Http.HttpRequestException : An error occurred while sending the request. 09:59:40 ---- System.IO.IOException : The write operation failed, see inner exception. 09:59:41 -------- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response 09:59:41 Stack Trace: 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 09:59:41 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(152,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__21.MoveNext() 09:59:41 --- End of stack trace from previous location where exception was thrown --- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 09:59:41 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(62,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__11.MoveNext() 09:59:41 --- End of stack trace from previous location where exception was thrown --- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 --- End of stack trace from previous location where exception was thrown --- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 --- End of stack trace from previous location where exception was thrown --- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 ----- Inner Stack Trace ----- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 09:59:41 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestStream.cs(160,0): at System.Net.Http.WinHttpRequestStream.d__25.MoveNext() 09:59:41 --- End of stack trace from previous location where exception was thrown --- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() 09:59:41 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1324,0): at System.Net.Http.WinHttpHandler.d__126.MoveNext() 09:59:41 --- End of stack trace from previous location where exception was thrown --- 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:59:41 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:59:41 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() 09:59:41 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(835,0): at System.Net.Http.WinHttpHandler.d__101.MoveNext() ``` +5487 area-System.Threading TestOutputAvailableAsyncAfterTryReceiveAll failed in CI ``` 18:53:36 System.Threading.Tasks.Dataflow.Tests.BufferBlockTests.TestOutputAvailableAsyncAfterTryReceiveAll [FAIL] 18:53:36 Assert.True() Failure 18:53:36 Expected: True 18:53:36 Actual: False 18:53:36 Stack Trace: 18:53:36 d:\j\workspace\dotnet_corefx\outerloop_windows_nt_debug\src\System.Threading.Tasks.Dataflow\tests\Dataflow\BufferBlockTests.cs(338,0): at System.Threading.Tasks.Dataflow.Tests.BufferBlockTests.d__14.MoveNext() 18:53:36 --- End of stack trace from previous location where exception was thrown --- 18:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 18:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 18:53:36 --- End of stack trace from previous location where exception was thrown --- 18:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 18:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 18:53:36 --- End of stack trace from previous location where exception was thrown --- 18:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 18:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +5488 area-System.Net SslStream ReadAsync/WriteAsync end up Sync Symptom: https://github.com/aspnet/KestrelHttpServer/issues/569 `SslStream` doesn't override `Stream`'s `ReadAsync`/`WriteAsync` methods which means they call the default implementation which is a wrapper on `Stream`'s `BeginRead` and `EndRead` etc. `BeginRead` eventually ends up calling the underlying stream's synchronous `Read` method. If the stream it wraps is completely async; then its sync read may wait on a `.GetAwaiter().GetResult()` of its async read/write. At which point you have Async->Sync->Async.Wait() and things go bad... First guess would be `SslStream` should additionally override ``` csharp public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) { return _sslState.SecureStream.ReadAsync(buffer, offset, count, cancellationToken); } public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken token) { return _sslState.SecureStream.WriteAsync(buffer, offset, count, token); } ``` but there may be more to it. +5491 area-System.Net SslStream override stream's async methods Rather than using Streams default implementation which end up calling the sync methods. Resolves #5488 +5495 area-Infrastructure AssemblyLoadContext broken in build 23714 "Hello again, While upgrading to build 23715 from 23712, I encountered this error when building our project that implements the `AssemblyLoadContext`: ``` error CS1069: The type name 'AssemblyLoadContext' could not be found in the namespace 'System.Runtime.Loader'. This type has been forwarded to assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' Consider adding a reference to that assembly. ``` 23712 and 23713 work, 23714 and 23715 do not. Relevant `project.json` excerpt: ``` json ""dependencies"": { ""NETStandard.Library"": ""1.0.0-rc2-23715"", ""System.Runtime.Loader"": ""4.0.0-rc2-23714"" }, ""frameworks"": { ""dnxcore50"": { } } ``` The code is implementing the abstract class `AssemblyLoadContext`, but I cannot provide it here due to the usual reasons, though I can give access now to MSFT employees if you ping me. Ubuntu 14.04 using `dotnet-cli`. Thanks, Andy " +5497 area-System.Data System.Data.SqlClient.SqlConnection.PermissionDemand() method name doesn't match what it does "There's `System.Data.SqlClient.SqlConnection.PermissionDemand()` method which actually checks whether the connection strings are proper set. That doesn't sound like ""permission demand"" at all. " +5498 area-System.Data "System.Data.SqlClient has code with variable name mistyped as ""outter""" `System.Data.SqlClient.SqlConnection.RegisterForConnectionCloseNotification()` has one parameter called `outter`. There're others which can be found with good old text search. +5500 area-System.Net Interop Layer for supporting xplat NegotiateStream Introducing native shims for libgssapi in order to support NegotiateStream +5501 area-System.Data Where is SqlCommandBuilder class ? Should be in System.Data.SqlClient assembly. If where no plans implementing it please give a hint how to retrieve stored procedure parameter information (SqlCommandBuilder.DeriveParameters) . Thanks +5502 area-System.Data System.Data.SqlClient.SqlInternalConnectionTds constructor purges original call stack when rethrowing an exception `System.Data.SqlClient.SqlInternalConnectionTds` currently goes like this: ``` try { OpenLoginEnlist(timeout, connectionOptions, redirectedUserInstance); break; } catch (SqlException sqlex) { if (something) { throw sqlex; } ``` `throw sqlex` causes original call stack of where the exception was thrown to be lost. If that's what it desired then it should be explained, otherwise just use `throw;` +5503 area-System.Data System.Data.SqlClient.SqlInternalConnectionTds.Login() unclear timeout manipulations "`System.Data.SqlClient.SqlInternalConnectionTds.Login()` goes like this: ``` if (!timeout.IsInfinite) { long t = timeout.MillisecondsRemaining / 1000; if ((long)Int32.MaxValue > t) { timeoutInSeconds = (int)t; } } ``` First, a better name could have been invented for `t`. Perhaps `secondsRemaining`? Second, why does it check `Max > t` instead of `t < Max`? Is that a yet another `5 == a` Yoda condition? Finally, if the value is ""too large"" the result is... zero, not ""maximum value"" and that's not explained. Is that desired behavior? That's not clear. I suspect this is a bug. " +5505 area-System.Net SslStream WriteAsync This is just the WriteAsync portion of https://github.com/dotnet/corefx/issues/5077 The ReadAsync looks a lot more complicated so I'm not even going to attempt (i.e. the Read wasn't immediately apparent to me) +5507 area-Infrastructure Restoring all packages is taking way too long Restoring all packages is taking a long time even when there is nothing to do when all the packages are in the cache and all the lock files already exist. @dagood I know you are looking into this but it is clear to me that we need a solution both internally and externally for this problem because it is currently killing productivity. It is also causing huge lang in our CI system. We are currently almost spawning 300 processes during this restore step. For reference on my machine this step is taking 20-30 minutes alone where the rest of the build is less then 10 minutes. From a recent CI run (http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/1117/consoleFull) you can see: ``` 12:27:35 Restoring all packages... 12:50:01 Microsoft.CSharp -> ``` It is took more then 20 minutes. +5508 area-Infrastructure AV from GenFacades on Windows outer loop http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_windows_nt_release/61/consoleFull ``` 11:32:56 Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 11:32:56 at Microsoft.Cci.ISymUnmanagedWriter2.Close() 11:32:56 at Microsoft.Cci.PdbWriter.Dispose() 11:32:56 at GenFacades.Program.OutputFacadeToFile(String facadePath, HostEnvironment seedHost, Assembly facade, IAssembly contract, String pdbLocation) 11:32:56 at GenFacades.Program.Main(String[] args) ``` +5511 area-System.Numerics Intermittent Numeric Tests Failures on OSX If you look a the history for the [OSX Release Test Job](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst/) some of the matrix tests have been failing intermittently. I'm not sure if the failures are machine specific (one of the Matrix 4x4 tests has failed twice on -1 mac but passes elsewhere). +5520 area-System.IO Fix FileSystem related permissions failures. A number of tests involving ReadOnly files were failing on Unix and Linux when run with elevated user permissions (e.g. sudo). This commit modifies those Unix tests to accommodate either set of permissions and verify the result accordingly. This unfortunately means we can't verify if the behavior is 'right', only that it is executed correctly. Windows is unchanged. resolves #5039, #5041, #4605 +5521 area-System.Data Opening SqlConnection results in DllNotFoundException (Unable to load sni.dll) in case of executing from Visual Studio "works fine from command line code ``` var connection = new SqlConnection(""valid connection string""); connection.Open(); ``` project.json: ``` { ""version"": ""1.0.0-*"", ""description"": ""ConsoleApp10 Console Application"", ""authors"": [ ""sady4850"" ], ""tags"": [ """" ], ""projectUrl"": """", ""licenseUrl"": """", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""System.Data.SqlClient"": ""4.0.0-beta-23516"" }, ""commands"": { ""ConsoleApp10"": ""ConsoleApp10"" }, ""frameworks"": { ""dnxcore50"": { ""dependencies"": { ""Microsoft.CSharp"": ""4.0.1-beta-23516"", ""System.Collections"": ""4.0.11-beta-23516"", ""System.Console"": ""4.0.0-beta-23516"", ""System.Linq"": ""4.0.1-beta-23516"", ""System.Threading"": ""4.0.11-beta-23516"" } } } } ``` exception: ``` at System.Runtime.Loader.AssemblyLoadContext.InternalLoadUnmanagedDllFromPath(String unmanagedDllPath) at System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDllFromPath(String unmanagedDllPath) at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadUnmanagedLibraryFromPath(String path) at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Host.LoaderContainer.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Host.DefaultLoadContext.LoadUnmanagedLibrary(String name) at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadUnmanagedDll(String unmanagedDllName) at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unmanagedDllName, IntPtr gchManagedAssemblyLoadContext) at System.Data.SqlClient.SNINativeMethodWrapper.SNIInitialize(IntPtr pmo) at System.Data.SqlClient.SNILoadHandle..ctor() at System.Data.SqlClient.SNILoadHandle..cctor() SQL Client: Unable to load sni.dll (DllNotFoundException) ``` " +5523 area-System.Net 'Content-Length' header not always returned when enumerating HttpContentHeaders Duplicated from internal bug 122111. Creating this tracking issue here so that we can trace these through the markers in the code back to the original internal bug tracker discussions if necessary. +5525 area-System.Net Clean up new netcore50 code in System.Net.Http, and reconcile with existing code "See the list of files in the System.Net.Http project file under the netcore50 TargetGroup: ``` XML Common\System\NotImplemented.cs Common\System\Net\HttpVersion.cs Common\System\StringExtensions.cs ``` Additionally, the code could use a bit of cleanup in general. Things like field names, brace usage, comment formatting, etc. " +5526 area-System.Net Add netcore50 configuration to System.Net.Http This includes a bit of new platform-specific code for System.Net.Http, as this library is built on top of WinRT for .NET Native / UWP. I opened #5525 and #5523 as trackers for existing issues in the code/project files. NOTE: We still need to do some major cleanup of the code to bring it in line with the style guidelines. I would like to leave that as a separate work item. I did some very minor cleanup before bringing the code out from our internal repository. @davidsh , @CIPop , @weshaggard +5531 area-System.Threading System.Threading.Tasks' RunStackGuardTests AV "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_debug_prtest/1120/ All I see is ""1 test(s) failed"" but I can't find which test failed. " +5535 area-Meta Add links to triage, road to RTM, and porting @weshaggard +5538 area-System.Net CurlHandler.EasyRequest.SetProxyOptions() throws ArgException when default credentials used "Issue moved from https://github.com/dotnet/coreclr/issues/2355 on behalf of @rtwede Data Point 1: When default credentials are used with the System.Net.Http.CurlHandler.Proxy as is the case in tools such as the DNX tools it results in ArgumentExceptions being thrown due to empty credentials/username. Data Point 2: System.Net.CredentialCache.DefaultCredentials is immutably set to a default SystemNetworkCredential (all empty strings for user, password, domain). Data Point 3: http://dotnet.github.io/getting-started/ Following the recommended steps to install .net core on Ubuntu Linux includes the step ""dotnet restore"" and exposes this failure whenever a simple proxy server is configured (e.g http_proxy=http://myserver.domain:8080/) DNX tools grab the default credendtials and the entire installation fails due to the exception in SetProxyOptions(). It's clear the intention is that the Curl library should detect the lack of credentials and not attempt to use them. Presently it only succeeds if creds are null, but not when username is an empty string as in the case of the default creds used by DNX tools. Conclusion: Fundamentally this is an incompatibility between the three implementations: DNX tools, the CurlHandler.SetproxyOptions() and DefaultCredentials. One of the three needs to be changed so that the three are compatible with one another. Arguably the DNX tools or the default credentials could be faulted, but SetProxyOptions seems the friendliest change to the contract between these three components because other clients might similarly use default empty credentials in the case where none are specified or present. " +5540 area-Meta CoreFx implementation assemblies contain duplicate definitions of public types "The public types listed below have multiple definitions in CoreFX assemblies. This causes issues when the assemblies are used in dynamic/runtime compilation scenarios such as C# scripting (see e.g. https://github.com/dotnet/cli/issues/320), dynamic languages, dynamic runtime binders, etc. and in VS Expression Evaluators. All these tools work with implementation assemblies since the reference assemblies are not available. These duplicate definitions should be made internal. Duplicate types in recent .NET Core build: ``` Microsoft.Win32.SafeHandles.SafeRegistryHandle: ""Microsoft.Win32.Registry, Version=4.0.0.0, PKT=b03f5f7f11d50a3a""; ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e"" Microsoft.Win32.SafeHandles.SafeFileHandle: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.BitConverter: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Runtime.Extensions, Version=4.0.11.0, PKT=b03f5f7f11d50a3a"" System.Console: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Console, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.IO.Directory: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.DirectoryInfo: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.SearchOption: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.File: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileAccess: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem.Primitives, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileInfo: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileMode: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem.Primitives, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileShare: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem.Primitives, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileStream: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileSystemInfo: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.FileAttributes: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.IO.FileSystem.Primitives, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.IO.Path: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Runtime.Extensions, Version=4.0.11.0, PKT=b03f5f7f11d50a3a"" System.Collections.CollectionBase: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Collections.NonGeneric, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.Collections.StructuralComparisons: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Collections, Version=4.0.11.0, PKT=b03f5f7f11d50a3a"" System.Collections.ObjectModel.ReadOnlyDictionary`2: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.ObjectModel, Version=4.0.11.0, PKT=b03f5f7f11d50a3a"" System.Collections.ObjectModel.KeyedCollection`2: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.ObjectModel, Version=4.0.11.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CipherMode: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.PaddingMode: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.KeySizes: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CryptographicException: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.ICryptoTransform: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.RandomNumberGenerator: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.Aes: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.AsymmetricAlgorithm: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CspProviderFlags: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Csp, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CspParameters: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Csp, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CryptoStreamMode: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CryptoStream: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.DeriveBytes: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.HMAC: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.HMACSHA1: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.HMACSHA256: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.HMACSHA384: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.HMACSHA512: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.HashAlgorithm: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.KeyNumber: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Csp, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.CspKeyContainerInfo: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Csp, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.ICspAsymmetricAlgorithm: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Csp, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.KeyedHashAlgorithm: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.MD5: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.Rfc2898DeriveBytes: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.RSAParameters: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.RSA: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.RSACryptoServiceProvider: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Csp, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.SHA1: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.SHA256: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.SHA384: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.SHA512: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Algorithms, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.SymmetricAlgorithm: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.Primitives, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.X509Certificates.X509ContentType: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.X509Certificates, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.X509Certificates.X509KeyStorageFlags: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.X509Certificates, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Cryptography.X509Certificates.X509Certificate: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Cryptography.X509Certificates, Version=4.0.0.0, PKT=b03f5f7f11d50a3a"" System.Security.Principal.IIdentity: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Principal, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.Security.Principal.IPrincipal: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Principal, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.Security.Principal.TokenImpersonationLevel: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Security.Principal, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.Threading.WaitHandleExtensions: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Runtime.Handles, Version=4.0.1.0, PKT=b03f5f7f11d50a3a"" System.Threading.CountdownEvent: ""mscorlib, Version=4.0.0.0, PKT=7cec85d7bea7798e""; ""System.Threading, Version=4.0.11.0, PKT=b03f5f7f11d50a3a"" ``` " +5541 area-System.Net Porting async implementation and adding TPL overrides for SslStream Read/WriteAsync - Porting APM functionality for SslStream's InnerStream - Adding TPL wrappers - Adding the test proposed by @xanather Fixes #5077 @stephentoub @davidsh @bartonjs @vijaykota PTAL /cc @xanather, @benaadams @leecow After review, I'll follow the internal process for RC2. +5545 area-Serialization System.Web.Script.Serialization.JavaScriptSerializer incompatible with ES6 (and V8) "A string with a quote (') is serialized as ""\'"" which departs from JSON.stringify() Number serialization is not aligned with ES6. Other reference: https://github.com/Microsoft/ChakraCore/issues/149 " +5546 area-System.Reflection Respond to PR code review comments for ported library System.Reflection.Extensions @weshaggard Who should this be assigned to? +5549 area-System.Linq Enumerable.Sum overloads that take selectors should perform the sum themselves "And should not `Select(selector).Sum()`. When summing large sequences, the overhead added by the extra iterator is noticeable. ``` csharp void Main() { int n = 10000; var origList = Enumerable.Range(0, n); var l = origList.Interleave(origList, origList, origList, origList).Select(i => new { k = i, val = i*i }).ToList().Take(n*4); Benchmark(() => { l.MySum(i => i.k); }, name: ""SumInline""); Benchmark(() => { l.MySum2(i => i.k); }, name: ""SumProjection""); } // Define other methods and classes here static class ext { public static int MySum(this IEnumerable src, Func val) { int sum = 0; checked { foreach(var d in src) { sum += val(d); } } return sum; } public static int MySum2(this IEnumerable src, Func val) { return MySum2(src.Select(val)); } public static int MySum2(this IEnumerable src) { int sum = 0; checked { foreach(var d in src) { sum += d; } } return sum; } } public static void Benchmark(Action block, int ntimes = 1000, string name = ""block"") { // Precompile method block(); var sw = new Stopwatch(); sw.Start(); for (int i=0; i < ntimes; i++) { block(); } sw.Stop(); var perLap = (double)sw.ElapsedMilliseconds/(double)ntimes; String.Format($""Time Taken: {sw.ElapsedMilliseconds:n}ms total, {perLap:0.000}ms p/i: {name}"", sw.ElapsedMilliseconds, name).Dump(); } ``` Output is: ``` Time Taken: 1,098.00ms total, 1.098ms p/i: SumInline Time Taken: 1,297.00ms total, 1.297ms p/i: SumProjection ``` Difference tends to move between 100 and 300 ms total (0.1-0.3ms per iteration). " +5551 area-System.Net Several System.Net.Security fixes "1. Windows and Unix. The ProcessAuthentication method sets a flag to indicate that an operation is in progress, then kicks off the operation, and then in a finally block potentially resets the flag. The intent of resetting it is to reset the flag iff the operation is no longer in progress, which would be the case if the operation was synchronous or if the initiation of the asynchronous operation resulted in an exception. As such, the finally block is checking whether the operation was synchronous or whether an exception has been captured. However, for the exceptional case, this leads to race conditions. The initiation of the asynchronous operaiton can lead to the operation running concurrently with the remainder of the ProcessAuthentication method, namely concurrently with the finally block. If the operation starts quickly and fails quickly, it'll store the exception, which will cause the finally block to see that an exception has been captured and mistakenly believe that the operation failed synchronously, thus resetting the flag. But the operation was actually asynchronous, and when EndAuthentication is called, it'll see that the flag has been reset and think that the EndAuthentication call is erroneous, thus throwing an exception. While it should throw an exception (the one that caused the operation to fail), it ends up throwing an InvalidOperationException instead to signal that EndAuthentication was used incorrectly. The fix is to move the check for the exceptional situation out of the finally and into a catch block. The catch block is then used to reset the flag only if an exception emerges synchronously, and the finally block is used to reset the flag only for synchronous operations. (It's possible that for synchronous operations that fail, the flag could be written as 0 twice... that's fine.) This fixes the failure on both Windows and Unix. The failure wasn't reproing on Windows but only because of differences in timing... adding a brief pause at the end of the try block would trigger the failure on Windows as well. 2. Unix. The design of AuthenticateAsServerAsync has a clientCertificatesRequired flag. On Unix we were mapping that to ""SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT"", which causes OpenSSL to fail the handshake if no cert is provided. But the Windows code actually still allows this through, instead setting a policy error to indicate that no certificate was required. I'm simply removing the SSL_VERIFY_FAIL_IF_NO_PEER_CERT flag to match that design. I've also updated the test to assert that the error is actually being set. 3. Unix. When SSL failures occur, there are multiple places to check for errors. One starts with SSL errors, then potentially examines general crypto errors, and then potentially examines errno values. Our code wasn't properly handling this, and even for situations where it was, it was potentially conflating all of the values together as the first category, making it more difficult to interpret and tell them apart. This updates the code to capture the appropriate exception information. There are still some issues around properly mapping and roundtripping error values between the Unix PAL implementation and the consuming shared code, but this at least makes it easier for a developer of the library to debug issues. 4. Linux. All of the System.Net.Security tests were disabled on Unix. I've re-enabled them on Linux now that the causes for the failures have been fixed. I've not yet verified the fixes on OS X, so I've left them disabled there for now. cc: @bartonjs, @ericeil, @cipop, @davidsh, @vijaykota Fixes https://github.com/dotnet/corefx/issues/4317, https://github.com/dotnet/corefx/issues/4606 " +5552 area-System.Runtime Add string.Join(char, ...) overloads "Moved from https://github.com/dotnet/coreclr/issues/2736#issuecomment-173295835 on behalf of @jasonwilliams200OK Current situation: ``` c# char separator = ':'; string joined = string.Join(separator.ToString(), ""one"", ""two"", ""three""); ``` With `char` overload, users will be able to join string without calling `ToString()` i.e. `string joined = string.Join(separator, ""one"", ""two"", ""three"");` This will reduce at least one string allocation per call: https://github.com/dotnet/coreclr/blob/80c2952/src/mscorlib/src/System/Char.cs#L145-L168. # Proposed API surface - @jasonwilliams200OK ``` csharp // in -> coreclr/src/mscorlib/src/System/String.cs public static string Join(char separator, params object[] value) public static string Join(char separator, IEnumerable values) public static string Join(char separator, params string[] value) public static string Join(char separator, string[] value, int startIndex, int count) // REJECTED: //public static string Join(char separator, IEnumerable values) // in -> coreclr/src/mscorlib/src/System/UnSafeCharBuffer.cs public void AppendString(char charToAppend) ``` " +5555 area-System.Net CertificateValidationRemoteServer_EndToEnd_Ok fails on OS X ``` 09:41:41 System.Net.Security.Tests.CertificateValidationRemoteServer.CertificateValidationRemoteServer_EndToEnd_Ok [FAIL] 09:41:41 Assert.Equal() Failure 09:41:41 Expected: None 09:41:41 Actual: RemoteCertificateChainErrors 09:41:41 Stack Trace: 09:41:42 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 09:41:42 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 09:41:42 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 09:41:42 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 09:41:42 --- End of stack trace from previous location where exception was thrown --- 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 09:41:42 at System.Net.Security.Tests.CertificateValidationRemoteServer.d__0.MoveNext() 09:41:42 --- End of stack trace from previous location where exception was thrown --- 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:41:42 --- End of stack trace from previous location where exception was thrown --- 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:41:42 --- End of stack trace from previous location where exception was thrown --- 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:41:42 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` It passes on Ubuntu. +5557 area-System.Net "System.Net.Security ""no encryption"" tests failing on OpenSUSE" ``` 09:37:45 System.Net.Security.Tests.ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientNoEncryption_ConnectWithNoEncryption [FAIL] 09:37:45 System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. 09:37:45 ---- Interop+OpenSsl+SslException : Operation failed with error - 12. 09:37:45 Stack Trace: 09:37:46 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 09:37:46 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 09:37:46 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 09:37:46 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 09:37:46 at System.Net.Security.SslStream.<>c__DisplayClass21_0.b__0(AsyncCallback callback, Object state) 09:37:46 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 09:37:46 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 09:37:46 at System.Net.Security.Tests.ServerAllowNoEncryptionTest.d__5.MoveNext() 09:37:46 --- End of stack trace from previous location where exception was thrown --- 09:37:46 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:46 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:46 --- End of stack trace from previous location where exception was thrown --- 09:37:46 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:46 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:46 --- End of stack trace from previous location where exception was thrown --- 09:37:46 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:46 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:46 ----- Inner Stack Trace ----- 09:37:46 09:37:47 System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientAllowNoEncryption_ConnectWithNoEncryption [FAIL] 09:37:47 System.IO.IOException : Authentication failed because the remote party has closed the transport stream. 09:37:47 Stack Trace: 09:37:47 at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 09:37:47 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 09:37:47 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 09:37:47 --- End of stack trace from previous location where exception was thrown --- 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:47 at System.Net.Security.Tests.ServerNoEncryptionTest.d__4.MoveNext() 09:37:47 --- End of stack trace from previous location where exception was thrown --- 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:47 --- End of stack trace from previous location where exception was thrown --- 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:47 --- End of stack trace from previous location where exception was thrown --- 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:47 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:48 Finished: System.Reflection.Metadata.Tests 09:37:48 09:37:48 === TEST EXECUTION SUMMARY === 09:37:48 System.Reflection.Metadata.Tests Total: 146, Errors: 0, Failed: 0, Skipped: 0, Time: 5.368s 09:37:48 System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption [FAIL] 09:37:48 System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. 09:37:48 ---- Interop+OpenSsl+SslException : Operation failed with error - 12. 09:37:48 Stack Trace: 09:37:48 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 09:37:48 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 09:37:48 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 09:37:48 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 09:37:48 at System.Net.Security.SslStream.<>c__DisplayClass21_0.b__0(AsyncCallback callback, Object state) 09:37:48 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 09:37:48 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 09:37:48 at System.Net.Security.Tests.ServerNoEncryptionTest.d__5.MoveNext() 09:37:48 --- End of stack trace from previous location where exception was thrown --- 09:37:48 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:48 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:48 --- End of stack trace from previous location where exception was thrown --- 09:37:48 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:48 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:48 --- End of stack trace from previous location where exception was thrown --- 09:37:48 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 09:37:48 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 09:37:48 ----- Inner Stack Trace ----- 09:37:48 09:37:48 System.Net.Security.Tests.ServerRequireEncryptionTest.ServerRequireEncryption_ClientNoEncryption_NoConnect [FAIL] 09:37:48 Assert.Throws() Failure 09:37:48 Expected: typeof(System.IO.IOException) 09:37:48 Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. 09:37:48 Stack Trace: 09:37:48 at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) 09:37:48 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 09:37:48 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 09:37:48 at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 09:37:48 at System.Net.Security.SslStream.<>c__DisplayClass21_0.b__0(AsyncCallback callback, Object state) 09:37:48 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 09:37:48 at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) ``` These pass on Windows, Ubuntu, and CentOS. +5558 area-System.Runtime EqualityComparerForDouble and EqualityComparerForSingle use the == operator but should use Equals The class should be calling the Equals(System.Double) method on System.Double because == has the wrong semantic for NaN. +5559 area-System.Net Add netcore50 configuration for System.Net.Http.Rtc This contract is only supported on .NET Native. NOTE: This contract type-forwards its only type to System.Net.Http, the implementation assembly. I have ported this as-is from our internal build, but we probably want to change this. The type, `RtcRequestFactory` is a static class with only one static method on it, so I don't see why it can't just be implemented in System.Net.Http.Rtc itself. At the very least, we can share the same source file with System.Net.Http if it still needs to live there. @davidsh Do you recall why these two assemblies were factored as such? @weshaggard , @CIPop +5560 area-System.Net WinHttpResponseStream.ReadAsync may never finish when canceled "This example code pattern can result in the awaited task never moving to a terminal state: ``` c# var tokenSource = new CancellationTokenSource(); CancellationToken token = tokenSource.Token; var client = new HttpClient(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, ""some uri""); HttpResponseMessage response = client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result; Stream stream = response.Content.ReadAsStreamAsync().Result; byte[] buffer = new byte[1000000]; Task task = stream.ReadAsync(buffer, 0, buffer.Length, token); tokenSource.Cancel(); task.Wait(); // BUG - the Wait() never returns ``` " +5565 area-System.Net HttpWebRequest ignores Content-Type in Universal Windows (UWP) App "Filing this on behalf of @AmadeusW from https://github.com/dotnet/coreclr/issues/2680: I'm working on a UWP app that connects to a third party server and accesses their data via API. By default, they serve XML responses, and JSON when requested using `Content-Type` header. Despite calling `request.ContentType = ""application/json"";` the UWP App incorrectly makes a request without the desired `Content-Type` header. The same code works fine in regular windows Console Application. Furthermore, running the culprit method from a regular Win32 process (by loading the assembly via AppDomain) correctly sets `Content-Type`, which makes me assume that the problem lies within the UWP runtime. Below are traces collected with Fiddler and minimal repro code. Let me know if there is a better place to file this bug than this repo. Method `Go()` invoked from Win32 AppDomain, or pasted into a Win32 application: ``` GET http://github.com/ HTTP/1.1 Content-Type: application/json Host: github.com Connection: Keep-Alive ``` Method `Go()` invoked as a UWP unit test, or pasted into UWP app (non-test) ``` GET http://github.com/ HTTP/1.1 Host: github.com Connection: Keep-Alive ``` Code to reproduce the issue: ``` csharp using System; using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; using System.Net; using System.IO; using System.Threading.Tasks; namespace UnitTestProject1 { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var x = Go().Result; } public static async Task Go() { var request = WebRequest.Create($""http://github.com/""); request.ContentType = ""application/json""; using (var response = await request.GetResponseAsync()) { using (var reader = new StreamReader(response.GetResponseStream())) { var test = request.Headers; var data = await reader.ReadToEndAsync(); return data; } // <- set breakpoint here } } } } ``` Observe that `test` contains the `Content-Type` header (so it didn't get ""lost"") Check in Fiddler that the request does _not_ have the `Content-Type` header My actual issue: I need to send & receive this: ``` GET http://api.translink.ca/RTTIAPI/V1/stops/61453/estimates?apiKey=XXX&routeNo=099 HTTP/1.1 Content-Type: application/json Host: api.translink.ca Connection: Keep-Alive HTTP/1.1 200 OK Cache-Control: private Content-Length: 1588 Content-Type: application/json; charset=utf-8 Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Fri, 15 Jan 2016 06:04:48 GMT [{""RouteNo"":""099"",""RouteName"":""COMMERCIAL-BROADWAY\/UBC (B-LINE) ... ``` but instead the UWP app sends & receives this: ``` GET http://api.translink.ca/RTTIAPI/V1/stops/59997/estimates?apiKey=XXX&routeNo=099 HTTP/1.1 Host: api.translink.ca Connection: Keep-Alive HTTP/1.1 200 OK Cache-Control: private Content-Length: 4123 Content-Type: application/xml; charset=utf-8 Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Fri, 15 Jan 2016 06:03:13 GMT 099COMMERCIAL-BROADWAY/UBC (B-LINE) ``` " +5566 area-Infrastructure Add Red Hat Enterprise Linux 7.2 CI / Rolling Build Add RHEL 7.2 to Jenkins outerloop build & test. https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.2/x86_64/product-software Related CI work items: https://github.com/dotnet/corefx/issues/4653 (2008 R2 ServerCore), https://github.com/dotnet/corefx/issues/4656 (Debian 8.2), https://github.com/dotnet/corefx/issues/4779 (2016 NanoServer), https://github.com/dotnet/corefx/issues/5349 (Ubuntu 15.10) +5567 area-System.Collections Add List constructor size to ConcurrentCollections ToList and other similiar functions Many of the ConcurrentCollections create Lists of all the items but do not initialize the list to the size of the number of items in the collection. Most of the time the list will end up containing the exact Count of the number of items in the collection. Rather than continuously resize the List it makes sense to initialize it to the expected size. +5569 area-System.Net Obsoleting SSL2, 3 Includes fixes for the sln (currently broken) and one of the csproj files for Primitives. These files were automatically generated by Visual Studio. The csproj GUID has been updated to an unique value: currently the PAL project shares the same with the UnitTests project. @SidharthNabar @leecow @ericstj PTAL /cc @davidsh Fixes #4927 +5572 area-Infrastructure GitHub build is unstable and takes longer than in RC1 timeframe "Build became unstable after the latest updates. Examples: 1. On clone 1: ``` git clean -xdf build Restoring BuildTools version 1.0.25-prerelease-00151... Initializing BuildTools ... Done initializing tools. [14:01:26.01] Building Native Libraries... [14:01:41.52] Building Managed Libraries... [14:01:44.30] Restoring all packages... [14:26:05.76] Restoring all packages...Done. <------------- note the 24 minute time to restore packages. S:\c1\Tools\publishtest.targets(116,5): error MSB3027: Could not copy ""S:\c1\bin\Windows_NT.AnyCPU.Debug\System.Threading.Overlap ped\System.Threading.Overlapped.dll"" to ""S:\c1\bin/tests/Windows_NT.AnyCPU.Debug\System.Threading.Overlapped.Tests\dnxcore50\Syst em.Threading.Overlapped.dll"". Exceeded retry count of 10. Failed. [S:\c1\src\System.Threading.Overlapped\tests\System.Threading.O verlapped.Tests.csproj] S:\c1\Tools\publishtest.targets(116,5): error MSB3021: Unable to copy file ""S:\c1\bin\Windows_NT.AnyCPU.Debug\System.Threading.Ov erlapped\System.Threading.Overlapped.dll"" to ""S:\c1\bin/tests/Windows_NT.AnyCPU.Debug\System.Threading.Overlapped.Tests\dnxcore50 \System.Threading.Overlapped.dll"". The process cannot access the file 'S:\c1\bin/tests/Windows_NT.AnyCPU.Debug\System.Threading.O verlapped.Tests\dnxcore50\System.Threading.Overlapped.dll' because it is being used by another process. [S:\c1\src\System.Threadi ng.Overlapped\tests\System.Threading.Overlapped.Tests.csproj] ``` 1. On clone 2 I didn't run clean: ``` build QueryOperators\OrderByThenByTests.cs(351,52): error CS0518: Predefined type 'System.Int32' is not defined or imported [S:\c2\src\ System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,65): error CS0518: Predefined type 'System.Int32' is not defined or imported [S:\c2\src\ System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,58): error CS0518: Predefined type 'System.Int32' is not defined or imported [S:\c2\src\ System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,40): error CS0518: Predefined type 'System.Int32' is not defined or imported [S:\c2\src\ System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,32): error CS0518: Predefined type 'System.Object' is not defined or imported [S:\c2\src \System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,72): error CS0246: The type or namespace name 'MemberType' could not be found (are you m issing a using directive or an assembly reference?) [S:\c2\src\System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,92): error CS0518: Predefined type 'System.Object' is not defined or imported [S:\c2\src \System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\OrderByThenByTests.cs(351,85): error CS0518: Predefined type 'System.Type' is not defined or imported [S:\c2\src\S ystem.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\SkipSkipWhileTests.cs(246,10): error CS0518: Predefined type 'System.Object' is not defined or imported [S:\c2\src \System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\SkipSkipWhileTests.cs(246,10): error CS0246: The type or namespace name 'Theory' could not be found (are you missi ng a using directive or an assembly reference?) [S:\c2\src\System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\SkipSkipWhileTests.cs(247,10): error CS0518: Predefined type 'System.Object' is not defined or imported [S:\c2\src \System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\SkipSkipWhileTests.cs(247,10): error CS0246: The type or namespace name 'OuterLoop' could not be found (are you mi ssing a using directive or an assembly reference?) [S:\c2\src\System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\SkipSkipWhileTests.cs(248,10): error CS0518: Predefined type 'System.Object' is not defined or imported [S:\c2\src \System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] QueryOperators\SkipSkipWhileTests.cs(248,10): error CS0246: The type or namespace name 'MemberData' could not be found (are you m issing a using directive or an assembly reference?) [S:\c2\src\System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] ^CTerminate batch job (Y/N)? y ``` This was scrolling for a while so I've aborted the build. Could this warning be the cause? If yes, shouldn't it be transformed to an error? ``` 1>S:\c2\build.proj(40,5): warning MSB3073: The command """"S:\c2\Tools/dotnetcli/bin/dotnet.exe"" restore --packages ""S:\c2\packages"" --source https://www.myget.org/F/dotnet-core/ --source https://www.myget.org/F/dotnet-coreclr/ --source https://www.myget.org/F/dotnet-corefxtestdata/ --source https://www.myget.org/F/dotnet-buildtools/ --source https://www.nuget.org/api/v2/ ""S:\c2\src\System.Collections\src\project.json"""" exited with code 1. ``` Attached the full msbuild.log [msbuild.log.txt](https://github.com/dotnet/corefx/files/98238/msbuild.log.txt) " +5574 area-Meta Framework Design Guidelines Updates to Consider This list represents some guidelines that we often run into and feel like they should be updated: - [ ] Event design guidelines (should we use Func/Action? do we need sender, etc.) - [ ] Async pattern (task based async, cancellations) - [ ] Default parameters - [ ] Exceptions - [ ] Nested types +5575 area-Infrastructure System.AppContext cannot be found I don't know if this is CoreFX or CoreCLR or dotnet-cli, but I tried updating to build rc3-23720, and can no longer load `System.AppContext` on Ubuntu 14.04. ``` Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. ``` I thought perhaps I needed to reference it as a dependency explicitly (though it is depended on by [NETStandard.Platform](https://www.myget.org/feed/dotnet-core/package/nuget/NETStandard.Platform)), but that does not seem to be the case. I build with `dotnet publish --framework dnxcore50` using the dotnet-nightly package. Sure enough, `System.AppContext.dll` is not included in the output, but it shouldn't be looking in there anyway, as the type is in `mscorlib.dll`, which exists. @stephentoub any ideas? +5581 area-System.Net Refactoring the Windows specific code in NegotiateStream summary Renaming NegoState.Windows.cs to InternalNegoState.cs as it had much common code applicable for Unix. (commit1) Separating out the common code and windows specific code in InternalNegoState and NegoState.Windows.cs respectiviely. Adding NegotiateInfoClass.cs to be used by Unix impl. Tested locally both AuthenticateAsServer/Client on Windows. /cc: @SidharthNabar @stephentoub @davidsh @CIPop @vijaykota +5582 area-System.Linq Implement IReadOnlyList<> in Grouping<,> class from System.Linq "Hello! I talk about [class Grouping](https://github.com/dotnet/corefx/blob/a58f490274e286d844d277f2658f2c074a4d5350/src/System.Linq/src/System/Linq/Enumerable.cs#L3544) from System.Linq. Now it declared as # Proposed API ``` c# public class Grouping : // Existing interfaces IGrouping, IList // Proposed interfaces IReadOnlyList, IReadOnlyCollection { … ``` # Workaround In many scenarios I want to have a group (an instance of IGrouping<,>) as an instance of IReadOnlyCollection<> or IReadOnlyList<>. Now I have to wrap the group in a ReadOnlyCollection<> or copy it to the new List<>. ``` c# public static IReadOnlyCollection AsReadOnlyCollection(this IGrouping group) { if(group == null) { throw new ArgumentNullException(""group""); } var readOnly = group as IReadOnlyCollection; if(readOnly != null) { return readOnly; } var list = group as IList; if(list != null) { return new ReadOnlyCollection(list); } return new List(group); } ``` I know, that not any IGrouping<,> should implement list interfaces, but in many cases I can use a fast path. All I need is add IReadOnlyList to a list of interfaces, that Group implements." +5584 area-System.Security X509CertificateCollection.Remove() weird error checking X509CertificateCollection.Remove() disallows removing null objects but allows removing objects which are not in the collection (because it just forwards to `List.Remove()` and never checks the result). MSDN https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificatecollection.remove%28v=vs.100%29.aspx says removing elements which are not in the collection is disallowed. If you want to allow removing elements that are not in the collection then you should also allow removing null objects - they are never in the collection. +5585 area-System.Runtime Indexing into a large stringbuilder is extremely innefficient "Run the following program (reverse a string in a string builder) Results: When i runs up to 100,000. About 1 : 13 elapsed time. When i runs up to 1,000,000: 1 : 5000 elapsed time. On 10,000,000 you give up. ``` c# using System; using System.Diagnostics; using System.Text; namespace ConsoleApplication32 { class Program { static void Main(string[] args) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < 1000000; i++) { builder.Append(""ABCDEF""); } var input = builder.ToString().ToCharArray(); var last = input.Length - 1; var mid = last / 2; Stopwatch sw1 = new Stopwatch(); sw1.Start(); char temp; for (int i = 0; i <= mid; i++) { temp = input[i]; input[i] = input[last - i]; input[last - i] = temp; } sw1.Stop(); Console.WriteLine(sw1.ElapsedMilliseconds); Stopwatch sw2 = new Stopwatch(); sw2.Start(); for (int i = 0; i <= mid; i++) { temp = builder[i]; builder[i] = builder[last - i]; builder[last - i] = temp; } sw2.Stop(); Console.WriteLine(sw2.ElapsedMilliseconds); } } } ``` " +5590 area-System.Net Fix hang when WinHttpHandler response stream reads are canceled "The task from ReadAsync was never moving to a terminal state (i.e. ""hanging"") if the token was marked for cancellation after starting the task. The problem was that our task continuation wasn't being called if the token was cancelled before the continuation was scheduled. The fix is to avoid passing in the token during the .ContinueWith call. Instead, the token is checked inside the continuation. This puts all the logic in the same place for checking the final status of the ReadAsync operation (which has multiple inner operations) including whether it should fault due to an error or have a successful completion. Fixes #5560. " +5591 area-System.Reflection Remove System.Reflection.Extensions dependency on System.Reflection.TypeExtensions This is an issue based on comments from @ericstj on PR #5542 . It is not OK to reference public surface area that is only available in the implementation assembly. Can we either 1) share this source or 2) create a public API? +5593 area-System.Xml Add System.Xml.Xsl .NET Core currently doesn't support running XML transforms (XSLT). +5600 area-System.Net Disable HttpClient test sometimes failing in CI Ref: Issue #5485 +5601 area-System.Data System.PlatformNotSupportedException being thrown in SQLClient on Windows machines When running ASP.NET tests on our CI machine (Windows), we are observing a System.PlatformNotSupportedException exception being thrown. The problem looks to be in: https://github.com/dotnet/corefx/blob/ceae1d38c93e3f53210ad91884dabc1bd6d30a90/src/System.Data.SqlClient/src/Interop/SNINativeMethodWrapper.cs#L420 ``` System.PlatformNotSupportedException The Win32NativeMethods.IsTokenRestrictedWrapper is not supported on non-Windows platform ``` +5606 area-System.Net "System.Net: Replace existing ""catch Exception / throw later"" patterns with ExceptionDispatchInfo " @stephentoub : > There are a bunch of places in the code where an Exception is caught and then later thrown. This kind of re-throwing ends up clobbering the original call stack and Watson bucket stored in the Exception, making it more difficult for someone looking at the exception to understand where it came from. To address this, ExceptionDispatchInfo was added in .NET 4.5, and is now used in places like Task that have this exact issue. I'd suggest we look at using ExceptionDispatchInfo in all of these places. Basically, instead of just storing an Exception, you'd store the result of ExceptionDispatchInfo.Capture(caughtException), and then instead of using throw _caughtException;, you'd do _caughtExceptionDispatchInfo.Throw();. ExceptionDispatchInfo will preserve the original information and append the new throw location's call stack rather than using it to overwrite the original. This was discussed in https://github.com/dotnet/corefx/pull/5541#discussion_r50399913. +5607 area-System.Data Fix INVALID_PROV references in Managed SNI Strings.resx in SqlClient doesn't have an entry for Invalid Provider (ID: SNI_PN10), which causes a Debug.Assert to be tripped in ProcessSniError when fetching that resource. So we should either add an Invalid Provider value in Strings.resx, or default to using another SniProvider value as the default provider in error messages. +5610 area-System.Linq dynamic usage causing live hangs after upgrading packages I'm trying to upgrade our packages to rc3-23721, and on Windows the System.Numerics.Vectors tests are hanging, pegging the CPU at the line doing the dynamic cast here: ``` C# public static T GenerateSingleValue(int min = 1, int max = 100) where T : struct { var randomRange = s_random.Next(min, max); T value = (T)(dynamic)randomRange; return value; } ``` +5611 area-System.Data Remove System.Data.Common.DbColumn's _customValues Per #5609 and @saurabh500, creating an issue here: I think the Dictionary on `DbColumn` should be protected so that implementers can access the structure more efficiently. Downstream people will want to iterate, bulk create, etc. The indexer being the only point of access internally will be a problem/bottleneck there. +5613 area-System.Net Port https://github.com/dotnet/corefx/pull/5590 to RC2 "The task from ReadAsync was never moving to a terminal state (i.e. ""hanging"") if the token was marked for cancellation after starting the task. The problem was that our task continuation wasn't being called if the token was cancelled before the continuation was scheduled. The fix is to avoid passing in the token during the .ContinueWith call. Instead, the token is checked inside the continuation. This puts all the logic in the same place for checking the final status of the ReadAsync operation (which has multiple inner operations) including whether it should fault due to an error or have a successful completion. " +5615 area-Serialization [Port to RC2] Fix serialization of recursive collections in data contract serializers Porting https://github.com/dotnet/corefx/pull/5398 to release/1.0.0-rc2 branch. +5617 area-System.Net Additional PR feedback for NegotiateStream porting "- [ ] End if / else if / else if /... waterfalls with one last ""if"" see detailed comment https://github.com/dotnet/corefx/pull/5581#discussion_r50420783 - [ ] https://github.com/dotnet/corefx/pull/5581#discussion_r50420982 - [ ] #5541 (comment) - [ ] https://github.com/dotnet/corefx/pull/5581#discussion_r50422362- [ ] fix comment ""// This is to not depend on GC&SafeHandle class if the context is not needed anymore"" - [ ] https://github.com/dotnet/corefx/pull/5581#discussion_r50426276 - [ ] use a variable instead of direct usage of number 4, 16 in the code. https://github.com/dotnet/corefx/pull/5581#discussion_r50431861 - [ ] https://github.com/dotnet/corefx/pull/5581#discussion-diff-50433441 https://github.com/dotnet/corefx/pull/5581#discussion_r50433347 - [ ] https://github.com/dotnet/corefx/pull/5581#discussion_r50423078 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51471912 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51472457 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51473319 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51472857 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51473345 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51472547 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r51473799 - [ ] https://github.com/dotnet/corefx/pull/5772#discussion_r52743275 Need to throw more accurate exception in syn with other exception in code. " +5625 area-System.ComponentModel Expose DescriptionAtttribute Splitting this out from https://github.com/dotnet/corefx/issues/2065 since it has scenarios outside of System.Data. See https://github.com/aspnet/Home/issues/1251 +5626 area-System.ComponentModel System.ComponentModel: Cache TypeConverter results Uses the IntrinsicTypes table and performs a check for existing entries in that table before doing anything else. Also adds performance tests for GetConverter. Works for types that declare a Converter through an attribute as well as built-in types. resolves #5337 @Tanya-Solyanik +5628 area-System.Net Assert from SystemNative_Accept on CentOS http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_debug_tst_prtest/1050/console ``` 08:44:21 corerun: /mnt/resource/j/workspace/dotnet_corefx/nativecomp_centos7.1_debug_prtest/src/Native/System.Native/pal_networking.cpp:1458: Error SystemNative_Accept(int32_t, uint8_t *, int32_t *, int32_t *): Assertion `addrLen <= static_cast(*socketAddressLen)' failed. 08:44:21 ./run-test.sh: line 130: 38134 Aborted ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait ``` +5630 area-System.IO DirectoryInfo.Exists on a symlink to a directory fails on Unix Due to https://github.com/dotnet/corefx/pull/5020, now a DirectoryInfo created for a symlink to a valid directory returns false for Exists. This is causing any HttpClient request to an https URL to fail on Ubuntu, as X509Certificates uses DirectoryInfo.Exists to determine whether it can enumerate the root store certs directory, and on Ubuntu, the default certs path is a symlink. cc: @mjrousos, @ianhays +5634 area-System.Data Add test to verify the correct bits for SqlClient SqlClient should have a test which verifies that the correct bits are being built for the respective platforms. +5639 area-System.IO Re-enable unicode zip tests for Unix I'm unable to repro any errors in the tests on my local Ubuntu machine. +5642 area-System.Net Fixing assert conditions for System.Net.Security. Fixing incorrectly converted Debug.Assert during NegotiateStream port (9a414b0af4230b59a06dd9e255a36400582f482e). These affect DBG builds, will render incorrect ETW in production builds and impact test execution. Tested locally by removing all ActiveIssues temporarily to ensure we get enough coverage. @davidsh @stephentoub @shrutigarg PTAL +5645 area-System.Runtime CharTests failing on Windows after upgrading to rc3-23722 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/1339/consoleFull ``` 17:59:44 Discovering: System.Runtime.Tests 17:59:45 Discovered: System.Runtime.Tests 17:59:45 Starting: System.Runtime.Tests 17:59:46 CharTests.TestIsLetterStrInt [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(294,0): at CharTests.TestIsLetterStrInt() 17:59:46 CharTests.TestIsLower [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(359,0): at CharTests.TestIsLower() 17:59:46 CharTests.TestIsNumber [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(389,0): at CharTests.TestIsNumber() 17:59:46 CharTests.TestIsLetter [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(275,0): at CharTests.TestIsLetter() 17:59:46 CharTests.TestIsDigit [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(239,0): at CharTests.TestIsDigit() 17:59:46 CharTests.TestIsNumberStrInt [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(402,0): at CharTests.TestIsNumberStrInt() 17:59:46 CharTests.TestIsLetterOrDigit [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(321,0): at CharTests.TestIsLetterOrDigit() 17:59:46 CharTests.TestIsDigitStrInt [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(250,0): at CharTests.TestIsDigitStrInt() 17:59:46 CharTests.TestIsLowerStrInt [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(370,0): at CharTests.TestIsLowerStrInt() 17:59:46 CharTests.TestIsLetterOrDigitStrInt [FAIL] 17:59:46 Assert.False() Failure 17:59:46 Expected: False 17:59:46 Actual: True 17:59:46 Stack Trace: 17:59:46 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Runtime\tests\System\Char.cs(342,0): at CharTests.TestIsLetterOrDigitStrInt() ``` +5647 area-Serialization DataContractJsonSerializer incompatible with ES6 (and V8) Bug report with code: https://github.com/cyberphone/jsondotnet +5653 area-Infrastructure Win7 outer loop debug build broken It ends up with tons of warnings of the form: ``` 01:43:43 EXEC : warning : FindPackagesById: System.Console [d:\j\workspace\dotnet_corefx\outerloop_win7_debug\build.proj] ``` and then times out. +5655 area-System.Net Remove spinning from event instances in Unix socket operations We use ManualResetEventSlims to enable blocking waiting for non-blocking socket operations to complete when making calls to Socket's synchronous methods. By default, if an MRES isn't yet Set when it's waited on, MRES.Wait() does a bit of spinning before falling back to a true blocking wait. But in this situation, we expect that either the socket operation will complete synchronously or will take some non-trivial amount of time to complete asynchronously, in which case the spinning is generally unnecessary overhead. This commit simply disables that extra spinning. cc: @pgavlin, @ericeil, @vancem (Assuming https://github.com/dotnet/corefx/pull/5472 gets checked in after the issues it's facing are fixed, this change will still matter but only in the situation where sync and async calls are mixed on the same Socket instance, such that the socket is put into non-blocking mode and we hit these code paths.) +5657 area-System.Data RC2 - A connection was successfully established with the server, but then an error occurred during the pre-login handshake "Platform : Linux Ubuntu Runtime : 1.0.0-rc2-16357,coreclr,x64,linux System.Data.SqlClient : 4.0.0-rc2-23623 ConnectionString : Data Source=XXXXXXXX,60606;Initial Catalog=XXXXXXXX;Integrated Security=False;User ID=sa;Password=XXXX;Connect Timeout=10;Encrypt=False;Application Name=""vNEXT"" Works perfectly on Windows using same runtime as above. Perform a dnu restore --no-cache before running console application. First SqlClient.Open connection results in below stack trace **A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> Interop+OpenSsl+SslException: Operation failed with error - 12** ``` fail: XXX.Ims.Common.Data.TenantDbConnectionStringBuilder[0] System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> Interop+OpenSsl+SslException: Operation failed with error - 12. --- End of inner exception stack trace --- at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost) at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at XXX.Ims.Common.Data.TenantDbConnectionStringBuilder.Build(Int32 tenantId) ClientConnectionId:c185aa23-7668-46f1-9a83-ad3018d65229 ``` " +5660 area-Infrastructure FileSystemWatcher tests fail intermittently on Unix due to too many open inotify instances http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_release_tst_prtest/1094/console ``` 19:32:38 FileSystemWatcherTests.FileSystemWatcher_EnableRaisingEvents [FAIL] 19:32:38 System.IO.IOException : The configured user limit (128) on the number of inotify instances has been reached. 19:32:38 Stack Trace: 19:32:38 at System.IO.FileSystemWatcher.StartRaisingEvents() 19:32:38 at FileSystemWatcherTests.FileSystemWatcher_EnableRaisingEvents() 19:32:38 Finished: System.IO.FileSystem.Watcher.Tests ``` +5662 area-System.Linq InterpreterTests.CompileInterpretCrossCheck_OrAssign failed in CI on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst/272/console ``` 18:30:18 System.Linq.Expressions.Tests.InterpreterTests.CompileInterpretCrossCheck_OrAssign [FAIL] 18:30:18 System.NullReferenceException : Object reference not set to an instance of an object. 18:30:18 Stack Trace: 18:30:18 at System.Linq.Expressions.Tests.InterpreterTests.Verify(Expression expr) 18:30:18 at System.Linq.Expressions.Tests.InterpreterTests.CompileInterpretCrossCheck_OrAssign() ``` cc: @bartdesmet, @VSadov +5663 area-System.Net Two System.Net.Security tests timing out on Windows I've seen this happen a couple of times now: ``` 05:07:44 System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_ServerNoEncryption_NoConnect [FAIL] 05:07:44 Assert.Throws() Failure 05:07:44 Expected: typeof(System.IO.IOException) 05:07:44 Actual: typeof(Xunit.Sdk.TrueException): Timed Out 05:07:44 Expected: True 05:07:44 Actual: False 05:07:45 Stack Trace: 05:07:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(172,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__18.MoveNext() 05:07:45 --- End of stack trace from previous location where exception was thrown --- 05:07:45 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 05:07:45 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` and ``` 05:07:45 System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Successive_ClientWrite_Sync_Success [FAIL] 05:07:45 Handshake completed. 05:07:45 Expected: True 05:07:45 Actual: False 05:07:45 Stack Trace: 05:07:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs(76,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Successive_ClientWrite_Sync_Success() ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/1381/consoleFull +5667 area-System.Net Linux - SslStream.AuthenticateAsClient is not presenting client certificates to server _This issue exists on Linux only_ When establishing a connection to a TCP server where a client certificate is required, the client certificate does not get passed to the server side. The connection then gets aborted by the server, resulting in an exception as below. Using NetMon, we can observe during that handshake that the server successfully sends its certificate to the client, but the client never presents the client certificate to the server. At this point, the server will send an RST and the connection is killed. I've isolated the repro to using just a TcpClient and TcpServer + SslStream - see https://gist.github.com/iamjasonp/27cd1ebce287f8b51d0e for the rudimentary repro. Platforms tested - .NET Desktop - :white_check_mark: - .NET Core - Windows: :white_check_mark: - .NET Core - Linux: :x: First chance exception caught: ``` 'System.Security.Authentication.AuthenticationException' in System.dll Additional information: The remote certificate is invalid according to the validation procedure. ``` Server call stack: ``` System.dll!System.Net.Security.SslState.ForceAuthentication(bool receiveFirst, byte[] buffer, System.Net.AsyncProtocolRequest asyncRequest) System.dll!System.Net.Security.SslState.ProcessAuthentication(System.Net.LazyAsyncResult lazyResult) System.dll!System.Net.Security.SslStream.AuthenticateAsServer(System.Security.Cryptography.X509Certificates.X509Certificate serverCertificate, bool clientCertificateRequired, System.Security.Authentication.SslProtocols enabledSslProtocols, bool checkCertificateRevocation) TcpRepro-Server.exe!Examples.System.Net.SslTcpServer.ProcessClient(System.Net.Sockets.TcpClient client) TcpRepro-Server.exe!Examples.System.Net.SslTcpServer.RunServer() TcpRepro-Server.exe!Examples.System.Net.SslTcpServer.Main(string[] args) ``` This also looks to be the root cause of the issue in https://github.com/dotnet/wcf/issues/619#issuecomment-173177433 +5671 area-System.IO Add Canterbury Corpus perf tests to Compression Our System.IO.Compression tests were using deterministically generated random data to test compression/decompression time. While the results were useful, they missed a scope of tests that is required for good compression testing. This commit adds perf tests for GZipStream that make use of the popular Canterbury Corpus testing suite. resolves #5423. Requires https://github.com/dotnet/corefx-testdata/pull/7 @stephentoub @bjjones +5678 area-System.Net Enable System.Net.Security tests on OS X +5681 area-System.IO Add async ZipFile APIs All ZipFile APIs are currently synchronous. This means manipulations to zip files will always block a thread. We should investigate using an async file and calling async IO APIs (ReadAsync/WriteAsync) to free up the thread while IO is happening. https://github.com/dotnet/corefx/pull/5680 +5683 area-System.Net Allow the remote cert validation test to pass for an UntrustedRoot SInce it's not practical to require particular trust on individual machines, allow the tests to pass when the root cert is untrusted. Fixes #5555. cc: @stephentoub @CIPop @eerhardt +5685 area-System.Security CentOS: X509Store(Root, LocalMachine) doesn't contain all the system certs "Ubuntu uses a hybrid model of ""one giant file"" and ""one cert per file"", which led to the initial implementation of X509Store being what it is. CentOS just uses the ""one giant file"" approach, so we only read the first cert out of it and call it a day. When reading the system cert files we should read until the file is drained. " +5688 area-System.Net Enable System.Net.Security tests on OS X Fixes #4606 cc: @bartonjs, @vijaykota, @cipop, @davidsh +5689 area-System.Data Will DbConnection be abstracted behind an interface? I've started building out a little ORM project for .Net Core and noticed that the DbConnection did not have any interfaces that I can wrap my providers behind. Is this something in the roadmap? If not, what is the expectation for unit testing, fakes by inheritance and what was the reasoning behind making this change from how .Net worked? Would this mean I have to build an abstraction layer over IDbConnection/DbConnection so I can support a .Net 4.5 implementation & a .Net Core implementation? I tried looking for some documentation or issues related to this to help understand the direction you are going with DbConnection; came up empty. +5690 area-System.Net RC2: Porting System.Net.Primitives contract change Porting the fix for #4927 (PR: #5569) The code changes also include small fixes for the sln and csproj files that will allow developers to run the tests in Visual Studio (mostly VS generated changes, ensuring that the GUIDs are unique and the SLN matches the csproj information). @leecow @ellismg PTAL /cc: @davidsh @stephentoub +5691 area-System.Net RC2: Porting SslStream Async overrides and regression fix Porting the fixes for #5077: #5541 #5642 The second commit is fixing a regression that was introduced during a merge/pattern change made concurrently with the initial port development. @leecow @ellismg PTAL /cc: @davidsh @stephentoub +5694 area-System.Net System.Security.Principal.Windows missing runtime assembly on Linux Or incorrectly referenced? Not sure, not directly referenced It restores fine `Installing System.Security.Principal.Windows.4.0.0-rc2-23722` Then errors in use ``` Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Security.Principal.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. ---> System.IO.FileNotFoundException: Could not load the specified file. at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.Resolve(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName) --- End of inner exception stack trace --- at System.Net.ContextAwareResult.Cleanup() at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.ContextAwareResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32 numBytes, SocketError errorCode) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() bash: line 1: 13883 Aborted (core dumped) dnx test fail: Exit code 134 from /usr/bin/env fail: Stack trace: ``` No issues on Windows +5700 area-System.IO "RC2 Test failed: DeletedTests.FileSystemWatcher_Deleted_Negative: ""Should not observe a deleted event within 500ms""" In #5690: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/151/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 @stephentoub @nguerrera PTAL ``` 00:16:53 === TEST EXECUTION SUMMARY === 00:16:53 System.IO.MemoryMappedFiles.Tests Total: 342, Errors: 0, Failed: 0, Skipped: 0, Time: 7.944s 00:16:56 DeletedTests.FileSystemWatcher_Deleted_Negative [FAIL] 00:16:56 Should not observe a deleted event within 500ms 00:16:56 Expected: False 00:16:56 Actual: True 00:16:56 Stack Trace: 00:16:57 at Utility.ExpectNoEvent(WaitHandle eventOccurred, String eventName, Int32 timeout) 00:16:57 at DeletedTests.FileSystemWatcher_Deleted_Negative() 00:16:59 Finished: System.IO.FileSystem.Tests 00:16:59 00:16:59 === TEST EXECUTION SUMMARY === 00:16:59 System.IO.FileSystem.Tests Total: 2029, Errors: 0, Failed: 0, Skipped: 0, Time: 7.687s 00:17:03 Finished: System.IO.FileSystem.Watcher.Tests 00:17:03 00:17:03 === TEST EXECUTION SUMMARY === 00:17:03 System.IO.FileSystem.Watcher.Tests Total: 58, Errors: 0, Failed: 1, Skipped: 0, Time: 17.725s 00:17:04 error: One or more tests failed while running tests from 'System.IO.FileSystem.Watcher.Tests'. Exit code 1. ``` +5701 area-System.Xml "Unix test: System.Xml.XDocument: ""Mismatch : expected: ?>""" Failed in #5690 Some Console.WriteLine race condition is hiding the test execution summary for the test that failed: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/146/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 @krwq, @sepidehMS PTAL ``` 23:53:19 === TEST EXECUTION SUMMARY === 23:53:19 System.Xml.XDocument.TreeManipulation.Tests Total: 2, Errors: 0, Failed: 0, Skipped: 0, Time: 0.988s 23:53:19 Mismatch : expected: test]]> 23:53:19 actual: test]]> 23:53:19 Mismatch : expected: 23:53:19 actual: 23:53:19 23:53:19 23:53:19 Mismatch : expected: ?> 23:53:19 actual: 23:53:19 ?> 23:53:19 23:53:19 Finished: System.Xml.XDocument.xNodeBuilder.Tests 23:53:19 23:53:19 === TEST EXECUTION SUMMARY === 23:53:20 System.Xml.XDocument.xNodeBuilder.Tests Total: 19, Errors: 0, Failed: 0, Skipped: 0, Time: 1.178s 23:53:20 Finished: System.Xml.XDocument.SDMSample.Tests ``` +5706 area-System.Diagnostics System.Diagnostics.Tracing should be updated to 4.1.0 https://github.com/dotnet/corefx/commit/aa42148a3ef85bf767a6a14124cfb0492d45bccc added surface area over the last stable version and should have updated the minor version of this assembly. /cc @cshung +5708 area-System.Net SslProtocols obsolete warnings-as-errors while trying to upgrade to newest packages e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/1441/ ``` d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\Common\tests\System\Net\SslProtocolSupport.cs(21,15): error CS0618: 'SslProtocols.Ssl3' is obsolete: 'This value has been deprecated. It is no longer supported. http://go.microsoft.com/fwlink/?linkid=14202' [d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Http.WinHttpHandler\tests\UnitTests\System.Net.Http.WinHttpHandler.Unit.Tests.csproj] ``` cc: @davidsh, @CIPop, @SidharthNabar +5710 area-System.Net TLS 1.0 in Windows Client may still vulnerable to Beast This is a followup issue raised on https://github.com/dotnet/corefx/issues/5187#issuecomment-175138937 Based on this security vulnerability. http://blogs.msdn.com/b/kaushal/archive/2012/01/21/fixing-the-beast.aspx **_The BEAST vulnerability is addressed by splitting (or fragmenting) the application data in to SSL records in the fashion 1/(n-1). This is explained in RFC2246 (section 6.2.1 Fragmentation).**_ In Unix, we get these split bytes which is the fix for Beast Vulnerability ![image](https://cloud.githubusercontent.com/assets/698547/12596701/0263bd3c-c436-11e5-9f02-c6c8661dedb2.png) But In Windows, we don't get this split bytes. ![image](https://cloud.githubusercontent.com/assets/698547/12596711/11c30742-c436-11e5-8f21-aaac7faad199.png) I just want to make sure that TLS 1.0 in Windows Client does not vulnerable to this BEAST Security issue. References : http://blogs.msdn.com/b/kaushal/archive/2012/01/21/fixing-the-beast.aspx http://blogs.msdn.com/b/kaushal/archive/2011/10/03/taming-the-beast-browser-exploit-against-ssl-tls.aspx http://vnhacker.blogspot.com/2011/09/beast.html Sql Server 2008 Patch - https://support.microsoft.com/en-us/kb/2653857 +5714 area-System.Net Allowing Ssl2,3 within tests. Fixes #5708. @Priya91 @stephentoub @davidsh PTAL We can either merge or just cherry-pick this from my private branch to the original PR (#5703). +5715 area-System.Net Reorganize System.Net.Http and remove the Internal folder. Reogranize System.Net.Http by removing the Internal folder and changing the csproj. +5716 area-System.Net Ensure that System.Net tests are executing against the checked-in implementations /cc: @davidsh Several System.Net test assemblies are referencing externally downloaded packages for System.Net dependencies.This makes it harder to discover issues early in development (see #5708 for an example). We should change the test csproj files to directly reference other System.Net implementations (see NameResolution, Sockets for examples). +5717 area-System.Net Removing/updating TODOs from System.Net CSProj files System.Private.Networking is now removed but we want to keep the tests executing against locally built binaries. Added a TODO tracking issue for System.Net.Http. @stephentoub @davidsh PTAL (related: #5708) +5726 area-System.Net Implementing NegoState.Unix.cs It includes the implementation on NegoState.Unix pal on top of the common refactoring changes( https://github.com/dotnet/corefx/pull/5581) Please refer to the Commit 4 of this PR for reviewing. Includes: Implementation of NegoState.Unix.cs Methods. Implementaion of SafeHandles to be used. Tested locally as Linux client with windows server. cc: @stephentoub , @bartonjs @vijaykota +5727 area-Infrastructure Ubuntu Debug Build and Test CI out of space E.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_debug_prtest/1464/console > fatal: cannot create directory at 'src/System.Text.RegularExpressions': No space left on device +5730 area-System.Numerics Add Matrix3x3 I am working on a project involving graphics & Win2D and I would welcome to have an invertible Matrix3x3 type, mainly for transformations between color spaces. Anyone else? +5733 area-Infrastructure Enable building and publishing of portable PDBs for x-plat libraries For our x-plat builds we need to start producing portable PDBs. Once we do that we need to also ensure they are getting published like our windows PDBs. +5737 area-System.Security RSACryptoServiceProvider throws System.DllNotFoundException: Unable to load DLL 'Advapi32.dll' on Linux Opened on behalf of @YEVHENO from https://github.com/dotnet/coreclr/issues/2876 Running ASP.NET 5 application on the coreclr on Linux fails when using the RSACryptoServiceProvider DNX version: 1.0.0-rc1-final ``` System.DllNotFoundException: Unable to load DLL 'Advapi32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Internal.NativeCrypto.CapiHelper.Interop.CryptGetDefaultProvider(Int32 dwProvType, IntPtr pdwReserved, Int32 dwFlags, StringBuilder pszProvName, Int32& IntPtrProvName) at Internal.NativeCrypto.CapiHelper.GetDefaultProvider(Int32 dwType) at Internal.NativeCrypto.CapiHelper.OpenCSP(CspParameters cspParameters, UInt32 flags, SafeProvHandle& safeProvHandle) at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) at System.Security.Cryptography.RSACryptoServiceProvider.ImportCspBlob(Byte[] keyBlob) ``` +5739 area-System.Net SendRecvAPM_Single_Stream_TCP_IPv4 failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/208/console ``` 12:33:50 System.Net.Sockets.Tests.SendReceive.SendRecvAPM_Single_Stream_TCP_IPv4 [FAIL] 12:33:50 Assert.True() Failure 12:33:50 Expected: True 12:33:50 Actual: False 12:33:50 Stack Trace: 12:33:50 at System.Net.Sockets.Tests.SendReceive.SendRecvAPM_Stream_TCP(IPAddress listenAt, Boolean useMultipleBuffers) 12:33:50 at System.Net.Sockets.Tests.SendReceive.SendRecvAPM_Single_Stream_TCP_IPv4() ``` +5740 area-System.IO Consider adding an EventSource for System.IO.FileSystem We should consider adding an EventSource to System.IO.FileSystem. Events could include files being opened/closed, interesting places where we fall off a fast-path (e.g. allocating extra buffers), etc. +5741 area-System.Runtime TimeZoneInfo DisplayName is always set to StandardName on Unix "In order to read the localized standard and daylight display names of time zones on Unix, we are using ICU. There doesn't appear to be a ""C"" api for the generic name. There is an ICU C++ api to get the 'generic' name. However, we can only use the ""C"" apis and not the C++ apis. See [Remove OSX Homebrew ICU dependency](https://github.com/dotnet/coreclr/pull/1851). I can think of 2 ways to fix this: 1. Use the C++ apis on platforms that allow it (not OSX) 2. Read the CLDR data directly. Some background from @mj1856, if we decide to take the second approach: part of the reason generic names are challenging is because there are three different patterns in the raw data. Examples of each: Pattern 1 – Generic name differs from both standard and daylight names: Generic Name: “Pacific Time” Standard Name: “Pacific Standard Time” Daylight Name: “Pacific Daylight Time” Pattern 2 – Generic name matches the standard name: Generic Name: “Central European Time” Standard Name: “Central European Time” Daylight Name: “Central European Summer Time” Pattern 3 – No generic name exists, so revert to the location based form: Generic Name: none, so use “UK Time” Standard Name: “Greenwich Mean Time” Daylight Name: “British Summer Time” I’m not sure exactly why, but I can confirm in these [docs](http://userguide.icu-project.org/datetime/timezone): > Generic name, such as ""Pacific Time"". Currently, this is not supported by ICU. Not sure why they chose not to implement, but might have something to do with the above. Also worth mentioning, CLDR Generic Name is not quite a one-to-one match with our idea of a Display Name. Consider that many build time zone pickers by iterating over all time zones given by TimeZoneInfo.GetSystemTimeZones, then putting them in a dropdown with Id for the value and DisplayName for the text shown to the user. This works because Display Names are unique within the results. It doesn’t quite work with Generic Name, as multiple different time zones will use the same Generic Name. For example, both Europe/Paris and Europe/Berlin will have “Central European Time” as their generic name, because they’re both in the same CLDR metazone. To build a picker for IANA zones that doesn’t actually show the Id to the user requires also asking the user for a country. If we use Generic Name as a Display Name, we might want to concatenate a country name or code, such as “Central European Time (France)” / “Central European Time (Germany)”. " +5743 area-Infrastructure Clean up build.sh and mono.targets Once we move to using .Net Core MSBuild for x-plat build, we should clean up build.sh script since it has a lot of code that downloaded msbuild plus it had some checks for prerequisites. We should also stop using mono.targets, since they shouldn't be required anymore. +5744 area-System.Reflection Allow reflection to identify substituted generic types "For overload resolution tie breakers Roslyn needs a way to differentiate between a substituted generic and actual type, e.g: ``` C# class Foo { void Bar(T v); void Bar(int v); } ``` Consider this code: ``` C# dynamic foo = new Foo(); foo.Bar(2); ``` Notice the use of `dynamic`. This forces the overload resolution to happen at runtime, with reflection being the provider for the type information the C# binder uses. The goal is to have overload resolution pick the second method, instead of failing. They currently use `MetadataToken` to compare the original definitions. Given this API throws in certain cases now (e.g. CoreRT), it would be better if we could introduce a new APIs. ### Repro ``` C# class Program { static void Main(string[] args) { dynamic foo = new Foo(); foo.Bar(2); } class Foo { public void Bar(T v) { System.Console.WriteLine(""generic""); } public void Bar(int v) { System.Console.WriteLine(""not generic""); } } } ``` - Works on .NET Framework and prints ""not generic"", - On .NET Core the behavior is not guaranteed. The late binder will try to get to `MetadataToken` through private reflection and use that, but if that fails - it is not there or throws -- it will will just pick one of the overloads at random. @VSadov @weshaggard @pallavit " +5745 area-System.Data Add Default Configuration Option in System.Data.Common.csproj The csproj should include a default Windows_Debug Configuration to prevent potential packaging issues on Windows +5749 area-System.Net Add a clean way to cancel a long-running Socket operation (e.g. accept or connect) The normal pattern to listen for incoming connections is: ```c# using (var s = new Socket(...)) { s.Bind(...); s.Listen(...); while (true) { var connectionSocket = s.Accept(); Task.Run(() => ProcessConnection(connectionSocket)); } } ``` The only way to reliably cancel that loop is to close the socket. This works, but it causes an `ObjectDisposedException` which is usually one of the reserved exception types that always indicate a bug such as `NRE` and `ArgumentNullException`. Catching that exception might hide real bugs. You might confuse the intended `ObjectDisposedException` with one that is not supposed to happen but did (bug). Also, this seems to be racy. What if the handle is closed right before `Accept` passes it to the native `accept` function? Is that even thread-safe?! Could be a use of an invalid/unintended handle. Note sure if the BCL has a way to prevent that scenario. Some people suggest to break the loop by connecting to that socket. That might not be possible depending on what interface you are listening on. There are no guarantees to be able to connect anywhere at all. Also, this feels like such a dirty hack. There are ideas of using `IAsyncResult.WaitHandle` with a timeout or in combination with another wait handle but that's quite nasty code and much slower than not using a wait handle. It's much faster to let the kernel wait as part of a synchronous call than to execute an asynchronous call, then create an event object, wait for it and then dispose of all of this. Also, in case you do a `WaitHandle.WaitAny(ioHandle, cancelHandle)` and you find yourself in the cancellation case you _still_ need to abort the IO using `Socket.Close` which is the same dirtiness. It does not matter for this issue whether you're using sync or async IO. Please add a way to cancel any long-running socket operation such as accept, connect, read, write, shutdown in a clean way. This could take the form of a `CancellationToken` or a method `Socket.AbortPendingOperations()`. A cancelled operation should throw an exception that allows to identify the situation so that it can be caught reliably. Cancelling is not just important for breaking the accept loop but it's useful for all other long-running operations as well. Sometimes you need to be able to shut down processing. +5750 area-System.Net SendRecvAsync_Stream_TCP test failed on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst/306/console ``` 09:48:08 Unhandled Exception: Xunit.Sdk.EqualException: Assert.Equal() Failure 09:48:08 Expected: Success 09:48:08 Actual: OperationAborted 09:48:08 at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) 09:48:08 at System.Net.Sockets.Tests.SocketAsyncExtensions.<>c__DisplayClass3_0.b__0(Object _, SocketAsyncEventArgs args) 09:48:08 at System.Net.Sockets.Tests.SocketAsyncExtensions.ReceiveAsync(Socket socket, SocketAsyncEventArgs eventArgs, IList`1 buffers, SocketFlags flags, Action`1 handler) 09:48:08 at System.Net.Sockets.Tests.SendReceive.<>c__DisplayClass4_3.b__2(Int32 received) 09:48:08 at System.Net.Sockets.Tests.SocketAsyncExtensions.<>c__DisplayClass3_0.b__0(Object _, SocketAsyncEventArgs args) 09:48:08 at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) 09:48:08 at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object state) 09:48:08 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 09:48:08 at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) 09:48:08 at System.Net.Sockets.SocketAsyncEventArgs.CompletionCallback(Int32 bytesTransferred, SocketError socketError) 09:48:08 at System.Net.Sockets.SocketAsyncEventArgs.TransferCompletionCallback(Int32 bytesTransferred, Byte[] socketAddress, Int32 socketAddressSize, SocketFlags receivedFlags, SocketError socketError) 09:48:08 at System.Net.Sockets.SocketAsyncContext.<>c.b__42_0(Object args) 09:48:08 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 09:48:08 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 09:48:08 at System.Threading.ThreadPoolWorkQueue.Dispatch() ``` +5754 area-System.Net Linux workaround for multiple connect attempts per socket does not work "On Linux, we attempt to re-use a socket for multiple connection attempts by ""connecting"" the socket to an invalid address between each ""real"" connect attempt. See [PrimeForNextConnectAttempt](https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs#L525). This does not work as intended. In the current implementation, the raw call to `connect()` cases any pending call to `epoll_wait()` to wake up and mark the socket as connected; any subsequent connect attempt on a non-blocking socket (or an Async connect attempt) then appears to succeed immediately, whether it did in fact or not. This is causing some tests (e.g., `System.Net.Sockets.Tests.DualMode.ConnectV4V6IPAddressListToV6Host_Success`) to appear to succeed, even though the connection is never successfully established. Once #5472 is merged, this test will hang, as the non-blocking connect will now be blocking, and this bug will no longer mask the underlying issue. I tried fixing this in the blocking case, by adding a call to `PrimeForNextConnectAttempt` after a blocking `connect` fails, and discovered that this also does not work. The subsequent connect attempt simply blocks until it times out. If I disable this feature entirely, forcing Socket methods that connect to address lists to use multiple sockets instead, then the test passes. " +5755 area-System.Net System.Net EventSources conflict, reducing total logging "Given: ``` C# internal class ConsoleEventListener : EventListener { private static string[] s_optOut = { ""System.Threading.Tasks.TplEventSource"", ""System.Diagnostics.Eventing.FrameworkEventSource"", }; public ConsoleEventListener() { foreach (EventSource source in EventSource.GetSources()) { if (Array.IndexOf(s_optOut, source.Name) == -1) { EnableEvents(source, EventLevel.LogAlways); } } } protected override void OnEventSourceCreated(EventSource eventSource) { base.OnEventSourceCreated(eventSource); if (Array.IndexOf(s_optOut, eventSource.Name) == -1) { EnableEvents(eventSource, EventLevel.LogAlways, EventKeywords.All); } } protected override void OnEventWritten(EventWrittenEventArgs eventData) { Console.Write(""Event ""); Console.Write(eventData.EventSource.Name); Console.Write('-'); Console.Write(eventData.EventId); Console.Write("" (""); if (eventData.Payload != null) { bool writeComma = false; foreach (object value in eventData.Payload) { if (writeComma) { Console.Write("", ""); } Console.Write(value); writeComma = true; } } Console.WriteLine("").""); } } ``` Open an instance of the logger, then proceed to open a TcpListener and a (client) SslStream. Notice that many of the logs appear to be missing, which is likely due to: ``` ... Event Microsoft-System-Net-Debug-1 (Dns.GetHostName). Event Microsoft-System-Net-Debug-0 (ERROR: Exception in Command Processing for EventSource Microsoft-System-Net-Debug: An instance of EventSource with Guid 99e4576b-9d7e-585f-8b32-0ac3082f2282 already exists.). ... Event Microsoft-System-Net-1 (System.Net.Sockets.Socket, 55915408, BeginConnect, localhost, 0, 0). Event Microsoft-System-Net-0 (ERROR: Exception in Command Processing for EventSource Microsoft-System-Net: An instance of EventSource with Guid 501a994a-eb63-5415-9af1-1b031260f16c already exists.). ... Event Microsoft-System-Net-2 (System.Net.Sockets.TcpClient, 43495525, GetStream, System.Net.Sockets.NetworkStream, 2606490, 0). Event Microsoft-System-Net-Debug-0 (ERROR: Exception in Command Processing for EventSource Microsoft-System-Net-Debug: An instance of EventSource with Guid 99e4576b-9d7e-585f-8b32-0ac3082f2282 already exists.). ... ``` Each of the event 0 events seems to be a place where the next System.Net library woke up and tried logging something, and then that event source never gets activated due to a duplicate registration. Looks to be true for both Windows and Linux. " +5756 area-Serialization Update serialization to use metadata writer to support persistence of generated code to disk Related issue: #4561 +5757 area-System.Net Sockets logging emits an argument/parameter count mismatch error Given the ConsoleEventLogger from #5755, lots of errors seem to be emitted from Sockets logging: ``` Event Microsoft-System-Net-2 (System.Net.Sockets.Socket, 55915408, Receive, System.Int32, 5, 0). Event Microsoft-System-Net-1 (System.Net.Sockets.Socket, 55915408, Receive, , 0, 0). Event Microsoft-System-Net-Sockets-0 (Event 5 was called with 3 argument(s), but it is defined with 2 parameter(s).). Event Microsoft-System-Net-Sockets-5 (System.Byte[], Receive). ``` +5758 area-System.Net Enable Client Auth Certs for Unix SslStream. 1) Pass the handle The Windows SslStream flow is to start a TLS session as server auth, then process a CredentialsRequired during the handshake, add credentials to the existing session, and continue. It's hard to maintain symmetry on that flow for the Unix pathway, due to the API differences in OpenSSL and SChannel. So, the Unix session will always pass down to native the provided client auth credentials, and OpenSSL can use them when it sees appropriate. 2) Untrusted certificates should still complete handshake The Unix SslStream implementation had two different places that a client authentication certificate was validated. The first one was from an OpenSSL callback, and reporting an error will interrupt the TLS handshake. The second was from after the handshake, and presents the results to the user validation callback to determine if data should be sent after the handshake. In the ideal case the first version is redundant, in a user-handled case it caused a failure when success was expected; so it should just be removed. 3) Enable the end-to-end client authentication cert test for Unix Also asserts that the IsMutuallyAuthenticated property gets set, the certificates used were the correct ones, and that both forward and callback versions of providing the certificate function. Fixes #5667. cc: @CIPop @davidsh +5760 area-Meta Add documentation around platform naming Given the widespread use of .NET, there is some room for confusion what certain platforms names mean, for instance here: https://github.com/dotnet/corefx/issues/2394#issuecomment-175933165 I've added this doc to help clarify a bit what we mean by X and that we sometimes say Y instead. Kudos to @mellinoe for providing me with a head start :smile: @richlander @blackdwarf @weshaggard +5763 area-System.Data ObjectDisposedException on OpenSSL when connecting to SQLAzure on Unix I notice SSLStream (OpenSSL) on Unix throws ObjectDisposedException after finish connecting on SqlAzure on Unix. (There is no exception on Prem). This may be related with issue on Mac as well. On Mac, it throws RemoteCertificateNameMismatch. https://github.com/dotnet/corefx/issues/5173 ![image](https://cloud.githubusercontent.com/assets/698547/12663551/fe2abc94-c5dd-11e5-9f22-be1775c8df01.png) ``` Unhandled Exception: System.ObjectDisposedException: Safe handle has been closed at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Ssl.SslShutdown(SafeSslHandle ssl) at Interop.OpenSsl.Disconnect(SafeSslHandle context) at System.Net.Security.SafeDeleteContext.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() [1] 24788 abort (core dumped) ./corerun xunit.console.netcore.exe System.Data.SqlClient.Tests.dll -class ``` +5764 area-System.Collections Simplify and Modernize System.Collections tests The tests for System.Collections were ported from an old framework and filled with Drivers and unnecessary obfuscations. I simplified them and consolidated code wherever possible. - refactored the tests to maximize code reuse and achieve a higher coverage rate. - Interface-specific tests were added for interface-specific behavior e.g. ICollection_Generic_tests. I added these tests to Common/tests alongside the existing IEnumerableTest, ICollectionTests, etc. - Note that these new classes encompass all of the coverage that the existing IEnumerableTest/IDictionaryTest/etc do. However, those classes are being used in System.ObjectModel and may not be deleted until that library is modified to use the new structures. I am going to do that at a later date. - removed some lines of code form System.Collections that weren't being hit. - Added generic scenarios for every collections for at least one value type (int) and one reference type (string). Some collections (e.g. HashSet) have many more test sets Improvements: 16547 additions, 44866 deletions => 28319 lines removed | | before | after | | --- | --- | --- | | line coverage | 74.5% | 96.2% | | branch coverage | 70.4% | 92.8% | | execution time | 49.388 s | 41.496 s | | number of tests | 1604 | 36140 | *coverage doesn't include Dictionary or List since those are in mscorlib. For those libraries (particularly Dictionary) I mostly just added new tests and didn't remove old ones. resolves #754, #4964 cc: people who have been active in the Collections space recently: @stephentoub @hughbe @Clockwork-Muse +5765 area-System.Net Reenable cert validation test on Linux cc: @bartonjs +5766 area-Meta Port System.Xaml to .NET Core Filed as a result of the discussion in #2394. **Note**: this doesn't represent a commitment from us to open source System.Xaml or to even port it to .NET Core -- it's simply capturing the community request to do so. ------------------------------------------------------------------------------------- ### Scenarios 1. WF (Workflow Foundation) - #2394 * However, note that [CoreWF](https://github.com/dmetzgar/corewf) is also trying to abstract serialization from Xaml (as it was originally intended). That said, all existing Desktop serialziations are in Xaml and we need it for transition path at minimum (having converters would be another option). 1. Prereq for WPF * Note: WPF / GUI frameworks are a big step for .NET Core (which targets server and console apps scenarios today) - it needs full end-to-end plan & commitment first. 1. Prereq for UI frameworks * https://github.com/AvaloniaUI/Avalonia - @grokys (see https://github.com/dotnet/corefx/issues/5766#issuecomment-275260663) * [Eto.Forms](https://github.com/picoe/Eto) - @cwensley (see https://github.com/dotnet/corefx/issues/5766#issuecomment-275282292) 1. ... more scenarios will be added based on the discussion * @Mike-EEE's [*devops* scenario](https://github.com/dotnet/corefx/issues/5766#issuecomment-275164640) - waiting on more details * @Kation's [non-UI framework scenarios](https://github.com/dotnet/corefx/issues/5766#issuecomment-275310753) - waiting on more details +5768 area-System.Data RemoteCertificateNameMismatch on OSX SSLStream.ClientAuthenticate to SQL Azure In Mac OS when using SSLStream to AuthenticateAsClient to SQL Azure, we get RemoteCertificateNameMismatch Policy error during validation. Here is how we init the stream https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs#L151 When we authenticate as Client https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs#L177 It give us policy error : RemoteCertificateNameMismatch https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs#L221 This issue is the root cause of https://github.com/dotnet/corefx/issues/5173 +5770 area-System.Net Adding fallback logic to NTLM This includes implementing the NTLM logic for OSX/Linux. fallback logic to ntlm if Kerberos fails. tested locally as linux client against windows server. ongoing testing with OSX client , will update here once testing is done. Please refer to commit 5 for the changes.. other commits are maintained and reviewed separately in separate PRs. cc @stephentoub @bartonjs @vijaykota +5772 area-System.Net Refactoring the Windows specific code in NegotiateStream summary Renaming NegoState.Windows.cs to InternalNegoState.cs as it had much common code applicable for Unix. (commit1) Separating out the common code and windows specific code in InternalNegoState and NegoState.Windows.cs respectiviely. Adding NegotiateInfoClass.cs to be used by Unix impl. Tested locally both AuthenticateAsServer/Client on Windows. /cc:@stephentoub @bartonjs @CIPop @vijaykota +5773 area-System.Net Implementing NegoState.Unix.cs It includes the implementation on NegoState.Unix pal on top of the common refactoring changes( #5581) Please refer to the Commit 4 of this PR for reviewing. Includes: Implementation of NegoState.Unix.cs Methods. Implementaion of SafeHandles to be used. Tested locally as Linux client with windows server. cc: @stephentoub , @bartonjs @vijaykota +5774 area-System.Net Introducing native shims for libgssapi in order to support NegotiateStream Introducing native shims for libgssapi in order to support NegotiateStream +5782 area-System.Data Where is DbProviderFactories??? Hi... in NET451 we have this class called DbProviderFactories that has a method called GetFactory that allows clients to obtain a DbProviderFactory given a connection... I am trying to port to NETCORE50 and I don't see DbProviderFactories although I do see DbProviderFactory... are there plans to include DbProviderFactories in NETCORE50? or is there another generic way in NETCORE50 to obtain a connection's DbProviderFactory? thank you // // Summary: // Returns an instance of a System.Data.Common.DbProviderFactory. // // Parameters: // connection: // The connection used. // // Returns: // An instance of a System.Data.Common.DbProviderFactory for a specified connection. public static DbProviderFactory GetFactory(DbConnection connection); +5788 area-Meta Update platform-names.md Clarifications and corrections +5789 area-Infrastructure Have dotnet-bot automatically submit PRs for package updates We should have @dotnet-bot automatically do https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/project-nuget-dependencies.md#upgrading-a-package-dependency when new packages are available and submit a PR. /cc @stephentoub @dagood @markwilkie +5790 area-System.Net Disable multiple connect attempts per socket on Linux. The Linux implementation of multiple connect attempts per socket does not work correctly, per #5754. This change disables multiple connect attempts on all Unix platforms (since Linux was the only one that claimed to support it). Fixes #5754 @pgavlin , @stephentoub +5792 area-Infrastructure Add build.cmd property to toggle native build "Currently the native Windows build will run whenever build.cmd is called. This commit adds a toggle through msbuild Property syntax to enable/disable the native or managed build. By default both are built. To build just the native components: ./build.cmd /p:buildspec=native To build just the managed components: ./build.cmd /p:buildspec=managed To build both: ./build.cmd or ./build.cmd /p:buildspec=both I opted to use syntax of the msbuild format so that the args can then be passed as %\* to msbuild without causing errors. I originally used ""native"" or ""managed"" but it felt jarring against the other args to build.cmd and required passing a cloned args array to msbuild. Using a property seemed cleaner. resolves #5311 @weshaggard @stephentoub " +5800 area-System.Xml System.Xml.XmlNodeReader is not Available in .Net Core This API is not available in .Net Core. https://github.com/dotnet/wcf/issues/702 is being blocked by this issue. +5811 area-System.Net What's the recommended approach for reusing/disposing new HttpClient handlers? It's been recommended to reuse the full framework's `HttpClientHandler` across multiple requests instead of disposing it every time (because disposing it means the performance hit of closing and re-opening the underlying connection). Does this advice stands true for the brand new world of `CurlHandler` and `WinHttpHandler`? +5814 area-System.Net Fix HttpWebRequest to allow content-related headers without content HttpWebRequest, part of the System.Net.Requests contract, has historically allowed any request header to be sent. However, in CoreFx it is built on top of System.Net.Http. And System.Net.Http has a stricter object model where it requires headers to be added only to specific collections. The bug was trying to add a content-related header without any content being sent. This worked in .NET Framework (Desktop). While we encourage developers to migrate to the newer System.Net.Http library, we try to maintain app-compat where possible for HttpWebRequest. The fix is to internally create an empty HttpContent object when calling into System.Net.Http and place the content-related headers into that collection. Fixes #5565. +5819 area-System.Net HttpClient doesnt expose the correct method as virtual I want to extend HttpClient class to create a wrapper over it. The problem is that it doesnt have the right method exposed as virtual. The following method should be virtual. ``` public Task SendAsync( HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) ``` Moreover, the following method should be new because it actually hides the implementation of the base method. ``` public override Task SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) ``` +5822 area-System.Text Use XML comments in System.Text.Encodings.Web As a new library in corefx, System.Text.Encodings.Web should use XML comments to document the APIs, and should have `$(OutputPath)$(AssemblyName).xml` in the .csproj so that the XML comments are validated by the compiler, a documentation XML file is produced, and that documentation file is included in the NuGet package. +5824 area-Meta Add table of terms The document uses many terms that aren't defined. In order to avoid breaking the flow of the document, it's best if those are defined at the top of the file. This addresses much of the feedback raised in #5760. +5826 area-System.Net Remove SystemNative_PlatformSupportsMultipleConnectAttempts #5790 removed the uses of this shim. We need to remove the shim itself, once we have a new build of System.Threading.Socket that no longer needs it. This should be a matter of reverting 7000023f729abe20337ed91816c019744b6a6a5c. +5828 area-System.Data Investigate if named pipe path parsing can use URI utilities +5829 area-System.Net Socket.Connect methods that connect to multiple endpoints are broken on Unix "Unlike Windows, the sockets API on Linux and OSX does not allow a single socket to attempt more than one connection. We had attempted to do this on Linux, but it did not work (see #5754). `Socket` has multiple methods that depend on being able to try connections to multiple endpoints on a single socket: ``` csharp public void Connect(IPAddress[] addresses, int port) ``` ...attempts to connect to each of `addresses`, returning when one of them is successful. ``` csharp public void Connect(string host, int port) ``` ...does a DNS lookup, which may return multiple addresses, then attempts to connect to each of them until successful. ``` csharp public void Connect(EndPoint remoteEP) ``` If this is passed a `DnsEndPoint`, then this behaves the same as `Connect(string, int)`, trying all resolved addresses. Additionally, we support async variants of all of these. On Unix we currently ""fake"" this by creating multiple temporary sockets behind the scenes, trying to connect each of them to a different address. If one succeeds, we immediately disconnect it and connect the ""real"" socket to that address. This workaround has some possibly unacceptable implications: 1) Whichever endpoint we finally choose, we will end up connecting to it _twice_, once for the ""probe"" connection, to see if it will work, and again for the ""real"" connection. This will cause issues for servers that do not expect more than one connection, for load balancers that try to distribute connections, etc. It's also a lot of undesired network overhead. 2) Even though the first connection attempt succeeded, the second will not necessarily succeed. This is especially true in scenarios like DNS-based load balancing. So we have a functional issue here, where we may fail to connect the ""real"" socket in cases where we would have succeeded. I do not think we should leave this as-is, as it will create too many unexpected strange behaviors in code that uses these, expecting them to behave the same way as they do on Windows. So I propose doing one of the following: a) Remove the `Connect` overloads that take multiple endpoints, and the `DnsEndpoint` type, from the public contracts. -- or -- b) Change these Connect overloads to throw `PlatformNotSupportedException` on Unix, Also, change `Connect(EndPoint, int)` to throw `PlatformNotSupportedException` if passed a `DnsEndPoint`. In either case, we should provide sample code for how to code equivalent behavior using the remaining APIs. @stephentoub, @pgavlin, @CIPop, @davidsh, @SidharthNabar, please provide feedback. " +5831 area-Serialization XmlElementAttributes.Remove doesn't throw on missing element On Desktop this method is provided by CollectionBase, which throws when it can't find the element to remove: http://referencesource.microsoft.com/#mscorlib/system/collections/collectionbase.cs,147. The implementation in CoreFx defers to ArrayList, which does not exhibit the same exception pattern on Remove. +5832 area-System.Net System.Net.Sockets.Tests.DualMode.AcceptV6BoundToSpecificV4_CantConnect hangs on Unix With PR #5472, System.Net.Sockets.Tests.DualMode.AcceptV6BoundToSpecificV4_CantConnect hangs because it expects `Socket.Dispose` to unblock a synchronous call to `Socket.Accept`. Closing a socket does not cancel a blocking operation on Unix OSs. +5835 area-System.Net Override ReadByte on SslStream In an application that's using the Redis client library, a significant portion of the allocations are coming from calls to ReadByte on an SslStream. Since SslStream doesn't override ReadByte, the base Stream.ReadByte is used, and it ends up allocating a temporary array to use in a call to Read. This commit adds an override of ReadByte on SslStream that returns data from the stream's internal buffer if any is available, otherwise falling back to the old behavior. On a test that repeatedly writes 1000 bytes and then reads each of those with ReadByte, allocations are reduced by 10x and throughput is doubled. (Note that removing the Interlocked.Exchange in ReadByte yields another 20% improvement in throughput, but I've left it in so as not to impact guarantees of the type.) cc: @cipop, @davidsh, @vancem +5840 area-System.Data System.Data.ProviderBase.DbConnectionFactory.TryGetConnection() has a misleading comment for use of Sleep() "`System.Data.ProviderBase.DbConnectionFactory.TryGetConnection()` has these lines: ``` // Yield time slice to allow shut down activities to complete and a new, running pool to be instantiated // before retrying. Threading.Thread.Sleep(timeBetweenRetriesMilliseconds); timeBetweenRetriesMilliseconds *= 2; // double the wait time for next iteration ``` `timeBetweenRetriesMilliseconds` starts with a value of `1` and is doubled on each iteration. ""yield time slice"" is the idiom for passing zero into `Sleep()` to mean ""I don't want to wait for long, but if there's anyone else wanting CPU time then I'll let them have that time"". When any other value is passed that actual wait, not ""yielding time slice"". " +5841 area-System.Data System.Data.SqlClient.SqlConnection.TryOpen() registers an object without finalizer for finalization System.Data.SqlClient.SqlConnection.TryOpen() has this code ``` if (!tdsInnerConnection.ConnectionOptions.Pooling) { // For non-pooled connections, we need to make sure that the finalizer does actually run to avoid leaking SNI handles GC.ReRegisterForFinalize(this); } ``` but `SqlConnection` has no finalizer and neither does its base class. This code does nothing useful. If some magic must be run then this won't help. +5844 area-System.Reflection Implement CustomReflectionContext I was just browsing through the source here and I noticed that `System.Reflection.Context.CustomReflectionContext` is not implemented. One of the projects I work on (RobotDotNet) uses this in our library for some additional nice features. +5846 area-System.Net Fix HttpClientHandler UseDefaultCredentials=false HttpClientHandler (on Windows) was attempting to use default credentials against a server that needed auth even when the property .UseDefaultCredentials was set to false. In order to map the different HttpClientHandler properties to the WinHttpHandler properties, the HttpClientHandler .UseDefaultCredentials. needs to turn on/off two credentials related properties of WinHttpHandler, .ServerCredentials and .DefaultProxyCredentials. However, it was only toggling the single .ServerCredentials property. The fix is to update both properties accordingly. Fixes #5045. +5847 area-System.Net Leaking System.Net.WebSockets.WinHttpWebSocketState in WCF stress We see a fast memory leak on WCF stress using web sockets binding for duplex streaming. The leaked objects are all rooted by strong GC handles: ``` 0:011> !gcroot 000000e90c1162b8 HandleTable: 000000e58bc85250 (strong handle) -> 000000e90c116170 System.Net.WebSockets.WinHttpWebSocketState -> 000000e90c1162b8 System.Threading.Tasks.TaskCompletionSource`1[[System.Boolean, mscorlib]] ``` And their state indicates that they were disposed: ``` !do 000000e90c116170 Name: System.Net.WebSockets.WinHttpWebSocketState MethodTable: 00007fff0fd7cd58 EEClass: 00007fff0fd83ed8 Size: 120(0x78) bytes File: C:\Users\kkhurin\.dnx\packages\runtime.win7.System.Net.WebSockets.Client\4.0.0-rc2-23617\runtimes\win7\lib\dotnet5.4\System.Net.WebSockets.Client.dll Fields: MT Field Offset Type VT Attr Value Name 00007fff678f15e8 400002e 8 System.Object 0 instance 000000e90c1161e8 _lock 00007fff0fd7d468 400002f 10 ...SafeWinHttpHandle 0 instance 0000000000000000 _sessionHandle 00007fff0fd7d468 4000030 18 ...SafeWinHttpHandle 0 instance 0000000000000000 _connectionHandle 00007fff0fd7d580 4000031 20 ...andleWithCallback 0 instance 0000000000000000 _requestHandle 00007fff0fd7d580 4000032 28 ...andleWithCallback 0 instance 0000000000000000 _webSocketHandle 00007fff678f3628 4000033 68 ...Services.GCHandle 1 instance 000000e90c1161d8 _operationHandle 00007fff0fd77078 4000034 58 System.Int32 1 instance 5 _state 00007fff678f5d90 4000035 64 System.Boolean 1 instance 0 _pendingReadOperation 00007fff678f5d90 4000036 65 System.Boolean 1 instance 0 _pendingWriteOperation 00007fff678f5d90 4000037 66 System.Boolean 1 instance 1 _disposed 00007fff0fb9d278 4000038 30 ...olean, mscorlib]] 0 instance 0000000000000000 k__BackingField 00007fff0fb9d278 4000039 38 ...olean, mscorlib]] 0 instance 000000e88c115ed8 k__BackingField 00007fff0fb9d278 400003a 40 ...olean, mscorlib]] 0 instance 000000e90c1162b8 k__BackingField 00007fff0fb9d278 400003b 48 ...olean, mscorlib]] 0 instance 000000e80c138b70 k__BackingField 00007fff0fb9d278 400003c 50 ...olean, mscorlib]] 0 instance 000000e90c116320 k__BackingField 00007fff0fd7cc00 400003d 5c System.Int32 1 instance 4 k__BackingField 00007fff67919930 400003e 60 System.UInt32 1 instance 0 k__BackingField ``` A repro app is available upon request. +5848 area-System.Data DbEnumerator is included in both System.Data.Common and System.Data.SqlClient SqlClient shares some code with System.Data.Common by including source files in https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj#L49-L59. Of all code shared at least `DbEnumerator` is a public type, so when you depend on both libraries the type is duplicated. I don't think this has a huge impact but I was wondering if it is just an oversight. cc @saurabh500 +5849 area-System.Net Sockets error messages are incorrect on non-Windows platforms. We need to map the SocketError values back to their native equivalents before using them to fetch descriptive error messages. +5852 area-System.Net Test fixes for System.Net.Security - Renaming/moving the `VirtualNetwork/Stream` classes. - A few concurrency fixes for the `VirtualNetwork/Stream` classes. - Adding VirtualNetwork/Stream tests. - Adding the TaskTimeoutExtensions and correcting the timeout pattern within one of the S.N.Security tests. - Moving all common test code within the System.Net.Test.Common namespace. @davidsh @stephentoub @shrutigarg PTAL +5853 area-System.Data Add default SQL path to NP path parsing if only server name is provided +5854 area-System.IO Native ClrCompression.dll for win7-x64 package depends on MSVCR110.dll @ianhays : Much like issue #3760 for SqlClient, the 64-bit specific version of clrcompression.dll takes a dependency on MSVCR110.dll. The issue appears to be specific to the x64 version currently. +5858 area-System.Net System.IO.FileNotFoundException: Could not load file or assembly 'System.Net.Security ...' ocurring in Windows using rc1-final and OSX using rc1-update1 ### TLDR; I'm getting a runtime error only when building in **OSX** with `dnx-coreclr-x64-1.0.0-rc1-update1` or building in **Windows** with `dnx-coreclr-win-x64.1.0.0-rc1-final` but if I build in **Windows** with `dnx-coreclr-win-x64.1.0.0-rc1-update1` the error doesn't happen. Isn't it supposed that if you use the same version number for both platforms is because both of them are the same and have the same features and fixes? If so, is it possible there was a build mistake and the **OSX** version released is not really `rc1-update1` **(CoreClr-x64-1.0.0-rc1-16231)** but `rc1-final` **(CoreClr-x64-1.0.0-rc1-16202)**. Here's is the error trace: ``` An unhandled exception has occurred: Could not load file or assembly 'System.Net.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. System.IO.FileNotFoundException: Could not load file or assembly 'System.Net.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. File name: 'System.Net.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.IO.FileNotFoundException: Could not load the specified file. File name: 'System.Net.Security' at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.Resolve(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName) at MailKit.Net.Smtp.SmtpClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) at MailKit.MailService.Connect(String host, Int32 port, Boolean useSsl, CancellationToken cancellationToken) at GReembolsos.Controllers.GastosController.EnviarEmail() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNet.Mvc.Controllers.ControllerActionExecutor.ExecuteAsync(MethodInfo actionMethodInfo, Object instance, Object[] orderedActionArguments) at Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__53.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Routing.RouteCollection.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.IISPlatformHandler.IISPlatformHandlerMiddleware.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Diagnostics.ExceptionHandlerMiddleware.d__6.MoveNext() ``` ### Update I've just found issue #2483 and certainly appears to be the reason of my error but I'm not an expert on the subject and if it is the case then my questions / doubts are still valid I think. Thank you in advance for any help. ### Long Story I'm working on a prototype using **Mac OSX** and **Visual Studio Code** with `dnxcore50` using `coreclr-rc1-update1` but I'm getting the runtime error when trying to send email using **MailKit** lib. @jstedfast, the lib developer said the lib was working perfectly fine when things ran on windows so the problem could be in **the CLR version** for non Windows environments. I setup a **Windows 10** VM to verify if the problem was indeed not present. The test was successful. No runtime error was thrown. I tried to deploy as an **Azure Web Site**, and after a few hours of troubleshooting trying to make **coreclr** and not **clr** the runtime target I finally got the app built. But the test failed with the same error I was getting in **Mac OSX** even though it was a Windows Environment! I made more research and found this: - In my local **Windows 10** when I built the project the **DNU** starting message was `Microsoft .NET Development Utility CoreClr-x64-1.0.0-rc1-16231` - In the **Azure** building log stream the **DNU** starting message was `Microsoft .NET Development Utility CoreClr-x64-1.0.0-rc1-16202` Looking at the `deploy.cmd` that I had previously modified to target **coreclr** and not **clr** I noticed that the targeted runtime was `dnx-coreclr-win-x64.1.0.0-rc1-final` In my **Windows 10** local the target runtime was `dnx-coreclr-win-x64.1.0.0-rc1-update1` So I changed the target runtime in `deploy.cmd` to `dnx-coreclr-win-x64.1.0.0-rc1-update1`, pushed to **Azure** and now in the building log stream the **DNU** starting message was `Microsoft .NET Development Utility CoreClr-x64-1.0.0-rc1-16231`, the same as my **Windows 10** local. I ran my test again and the error was gone!! After that I concluded that whatever the root cause of the exception I was getting, the problem appears to be fixed in `rc1-update1`, BUT... it turns out that in **OSX** the error is triggering even though the **DNU** starting message is `Microsoft .NET Development Utility CoreClr-x64-1.0.0-rc1-16231` when I build the project. So it makes me think it could be that the **OSX** version is not really `rc1-update1` **(CoreClr-x64-1.0.0-rc1-16231)** but `rc1-final` **(CoreClr-x64-1.0.0-rc1-16202)**. It's just a though as I don't know if it's possible or correct/normal that the same version on both platforms can have different features / fixes. That's why I'm submitting this issue. +5861 area-System.Data DbConnection and DbCommand should have a finaliser Originally `DbConnection` and `DbCommand` classes were derived from `System.ComponentModel.Component`. From that they inherited a finaliser that called `Dispose(false)`. Their descendants sometimes depend on this, in particular `SqlConnection` has finaliser-only code. They should have finalisers directly added. ~~`DbTransaction` and `DbDataReader` were never derived from `Component` but do both follow the `Dispose(bool)` pattern, as such suggesting that a finaliser exists which would call `Dispose(false)`. While not used within the corefx assemblies a third party derived class could erroneously depend on this.~~ ~~As such they should have finalisers added, and then suppressed in the existing derived classes.~~ (Moved this part to #5865) +5864 area-Infrastructure CI jobs failing with WS-CLEANUP errors Lots of legs failing with errors like this, e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_bld_prtest/495/console ``` ERROR: [WS-CLEANUP] Cannot delete workspace: remote file operation failed: d:\j\workspace\dotnet_corefx\osx_release_bld_prtest at hudson.remoting.Channel@270f3ae7:dci-win-tbld-6: java.nio.file.AccessDeniedException: d:\j\workspace\dotnet_corefx\osx_release_bld_prtest\Tools\dotnetcli\bin\coreclr.dll ``` +5868 area-System.Diagnostics Debugger.NotifyOfCrossThreadDependency missing from System.Diagnostics.Debug contract NotifyOfCrossThreadDependency is used in code any time a debugger accessing that property would potentially cause deadlocks, race conditions, or other behavior changes, e.g. if the debugger has frozen all threads in the process (which it does at a breakpoint), and a property getting evaluated blocks waiting for another thread to perform some operation. We should expose this in the contract. If the runtime is built for a platform that doesn't support it, it can simply be a nop. +5871 area-System.Net Throw PNSE from Socket.Connect on *nix iff a previous connect attempt has failed See https://github.com/dotnet/corefx/pull/5867 and https://github.com/dotnet/corefx/issues/5829 for details on the problems with multiple connection attempts using the same socket on platforms that follow BSD/POSIX semantics for sockets. +5873 area-System.Reflection DynamicILGenerator does not support BeginFaultBlock and BeginExceptFilterBlock #1764 dotnet/coreclr#1764 has more information on the issue. Based on the conversation with Jan, this is only an artificial limitation and can be removed from both Desktop and CoreCLR. +5874 area-System.Security Crypto contracts desktop support I believe the current version of the crypto contracts require desktop 4.6.1 but are representing themselves in the packages as requiring 4.6. We need to clean this up, but before we do we need to a) look upstack in CoreFx and b) reach out to partner teams to find out if anyone is expecting support on 4.6. If so, then we probably need to look into a pre-version of the contracts to support 4.6. +5875 area-System.Console Console support for NETCore Since Console was added to NETStandard.Library we need to suppoort it on netcore50. To do this and still pass the WACK we should either: 1. Get the APIs we call added to the modern SDK. 2. Build a version of the contract specific to netcore that only calls supported APIs. For example, by just using readfile/writefile on the console handles or directing the output to something more appropriate for UWP (EG: debug or etw). /cc @pallavit @weshaggard +5877 area-Meta [WIP] Frameworks Section "We talk about lots of frameworks, and I'm sure more come up, so I though it be a good idea to add a section on them. I've done a ""demo"" of what I was thinking with Windows Forms. I was thinking of including: WPF, ASP.NET, ASP.NET Core, ASP.NET MVC, Signalr, DirectX (and maybe some of the sub libraries), and WCF. @terrajobst " +5878 area-Infrastructure Modify the windows native build to be razzle friendly Internally we are using an existing vcproj to build the native windows binaries. This commit modifies the CMake build script in the open to allow more fine grained control of the build environment. The result of this is that we can specify the necessary environment args from the caller, enabling us to run the build-native script from fxcore/src in a Razzle environment via a wrapper project. resolves #5854 when accompanying TFS commit goes through @weshaggard @ericstj +5881 area-System.Net Http request/response DiagnosticSource logging. - Added logging to WinHttpHandler, CurlHandler, and HttpHandlerToFilter for HTTP request/response. - Added functional tests for HttpClient and WinHttpHandler. @davidsh @cipop @stephentoub +5884 area-System.Reflection Portable mechanism needed to determine if two MemberInfos are backed by the same metadata definition "Currently, there is a hole in reflection whereby there's no straight-forward way to determine if: ### 1. MemberInfos differ only by ReflectedType (i.e. they are the same member, but one of them was obtained from a derived type.) ``` C# public class C { public int F; } public class D : C {} static class Program { static void Main(string[] args) { var f1 = typeof(C).GetField(""F""); var f2 = typeof(D).GetField(""F""); System.Console.WriteLine(f1.Equals(f2)); // False } } ``` ### 2. One MemberInfo is a generic instantiation of another. ``` C# static class Program { static void Main(string[] args) { var m1 = typeof(List<>).GetMethod(""Add""); var m2 = typeof(List).GetMethod(""Add""); // how to determine that m2 is instantiated from m1? } } ``` On platforms that support the MetadataToken, this can be worked around by comparing the tokens, but without them, one has to resort to error-prone comparisons of the declaring type, name, and signature. There should be a first-class portable way to address both. ### Proposal for New API: HasSameMetadataDefinitionAs Add a new API that determines if a member is backed/instantiated from the same metadata definition. In ECMA-335 terms, this is a member/type from the same module that has the same metadata def token. Platforms like .NET Native that do not keep around metadata tokens should still preserve enough information to answer this query portably. ``` C# public class MemberInfo { public virtual bool HasSameMetadataDefinitionAs(MemberInfo other); ... } ``` A mostly correct implementation is: ``` C# return Module.Equals(other.Module) && MetadataToken == other.MetadataToken; ``` But that ignores edge cases such as TypeInfo instances for array, byref, pointer, and type parameters types, which we'd need to spec and test. " +5886 area-System.Net Process and Ping should have finaliser In the wake of #5861 I decided to examine other classes in CoreFX that were originally derived from `Component` to see if there was a risk that classes derived from them in turn could depend upon their having a finaliser. The following need no action, but I list them in case someone can spot one I missed or a flaw in my reasoning that they are okay as-is: `ProcessThread`. No longer disposable, functionally sealed (can't be derived as there are no public or protected constructors). `ProcessModule`. No longer disposable, functionally sealed. `FileSystemWatcher`. Already has a finaliser. `PerformanceCounter`. ref only. This leaves `Process` and `Ping` as two classes that can be derived from, would originally have had a finalizer calling `Dispose(false)` via `Component`, and which do not currently have this. For compatibility with 4.6 and earlier they should have a finalizer. Further, `ProcessModule` no longer needs one, but still calls `SuppressFinalize` which should be removed as unnecessary. +5887 area-System.Net Add finalizers to Process and Ping Have them call `Dispose(false)`. `SuppressFinalize(this)` in constructors if they are not a derived type to lessen the possible negative impact on collection. Remove unnecessary `SuppressFinalize(this)` from `ProcessModule`. Fixes #5886 +5888 area-System.Net WebUtility.UrlDecode to take StringBuilder `WebUtility.UrlDecode` could take a string builder; `UrlDecoder` could be a struct and use `System.Buffers` for its arrays for reduced allocations. +5889 area-System.Net Identify exceptions that should cause NTLM fallback in xplat NegotiateStream This is with reference to this [PR comment](https://github.com/dotnet/corefx/pull/5770#commitcomment-15854837). Currently, for any exceptions in the SPNEGO codepath, the xplat implementation falls back to NTLM. We need to check if there are specific exceptions we should target. +5890 area-System.Net Return more error information for SslStream and NegotiateStream from *Pal.Unix.cs Please see [PR comment](https://github.com/dotnet/corefx/pull/5773#commitcomment-15855088). We need to figure a way of passing the extended error information returned by the shim layer to the platform-agnostic code. Currently any exception is translated to SecurityStatusPal.InternalError +5892 area-System.Net Add a large write/read test for SslStream cc: @davidsh, @CIPop +5894 area-System.Net BeginSendToV4IPEndPointToDualHost_Success failed on Windows in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/1768/consoleFull ``` 05:13:45 System.Net.Sockets.Tests.DualMode.BeginSendToV4IPEndPointToDualHost_Success [FAIL] 05:13:45 System.Net.Sockets.SocketException : An address incompatible with the requested protocol was used 05:13:45 Stack Trace: 05:13:45 xUnit.net console test runner (64-bit .NET Core) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3077,0): at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(3015,0): at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.cs(235,0): at System.Net.Sockets.SocketTaskExtensions.<>c.b__12_0(ArraySegment`1 targetBuffer, SocketFlags flags, EndPoint endPoint, AsyncCallback callback, Object state) 05:13:45 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) 05:13:45 at System.Threading.Tasks.TaskFactory`1.FromAsync[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.cs(234,0): at System.Net.Sockets.SocketTaskExtensions.SendToAsync(Socket socket, ArraySegment`1 buffer, SocketFlags socketFlags, EndPoint remoteEndPoint) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\Common\src\System\Net\Sockets\SocketAPMExtensions.cs(565,0): at System.Net.Sockets.SocketAPMExtensions.BeginSendTo(Socket socket, Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DualModeSocketTest.cs(1393,0): at System.Net.Sockets.Tests.DualMode.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 05:13:45 d:\j\workspace\dotnet_corefx\windows_nt_debug_prtest\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DualModeSocketTest.cs(1378,0): at System.Net.Sockets.Tests.DualMode.BeginSendToV4IPEndPointToDualHost_Success() ``` +5896 area-System.Net Writing to SslStream fails on OS X when count is larger than SslStream's internal buffer size See SslStream_StreamToStream_Successive_ClientWrite_Sync_Success. This consistently passes on Windows and other Unix environments, but consistently fails on OS X. +5898 area-System.Linq Expression interpreter can neither catch nor throw non–Exception-derived exceptions Using the interpreter it is impossible to either throw or catch an exception that isn't derived from `Exception`. This differs from the compiler, which allows both. Possibly this should just be documented as a limitation. Possibly something could be done by manipulating `RuntimeWrappedException`. Possibly something could be done for catching, but not for throwing, which both seems easier on first blush, and may have more use (throwing such an object is a bad idea after all, catching one might be needed due to someone else's bad idea). cc: @VSadov @bartdesmet +5899 area-Meta Documentation Duplication Between .NET Projects As I'm working on #5877, I started thinking that between CoreCLR and CoreFX there's going to be lots of things that need to be explain in both contexts. The Terms section alone in [glossary](../Documentation/project-docs/glossary.md) would probably be useful for both projects. Would it make sense to move this kind of stuff to the [core-docs](https://github.com/dotnet/core-docs) repo? /CC: @terrajobst @jasonwilliams200OK +5902 area-System.Console echo TTY mode disabled for launched processes Similar to #5109, if `Console.ReadKey()` has been used by a .NET program, the `echo` TTY mode is disabled. To resolve the prior issues, dotnet/coreclr#2561 re-enabled the `echo` mode on program shutdown. However, we've run into a different scenario: launching a process from the .NET program inherits the TTY modes. So if you launch Bash from the .NET program, you can't type in it until you've explicitly re-enabled `echo`. +5907 area-System.Net Keep accepted sockets open until the tests are done with them. Prior to this change, a GC triggered at the wrong time could cause a newly-accepted Socket to be collected and finalized, closing the connection before the other end of the socket was done. To avoid this, we keep a reference to the new socket until the test is done with the connection. Fixes #5291, #3748, #3744, #3682, #3494. @stephentoub, @pgavlin, @CIPop +5908 area-System.Linq Interpretter incorrectly handles void TryExpression with non-void parts "It is not necessary for the body and/or catch blocks of a `TryExpression` to match the type of the expression if that type is void (or to look at it another way, all types can be ""assigned"" to void). As such the following is valid: ``` C# Expression.MakeTry( typeof(void), Expression.Throw(Expression.Constant(new InvalidOperationException()), typeof(int)), null, null, new[] { Expression.Catch(typeof(InvalidCastException), Expression.Constant(""hello"")), Expression.Catch(typeof(Exception), Expression.Constant(2.2)) } ) ``` This works fine with the compiler. With the interpreter it unbalances the stack, leaking a value and throwing several asserts in Debug. " +5910 area-Infrastructure TFS build should update BuildValues.props Now that we have packages in CoreFx it'd be great if those packages had consistent versions with the ones built in TFS. Can we have the TFS build update https://github.com/dotnet/corefx/blob/master/src/BuildValues.props? +5912 area-Serialization [Port Fix from Desktop] Stress issue in Serialization ObjectToIdCache There was a stress issue with System.Runtime.Serialization.ObjectToIdCache. The bug had been fixed on desktop. We should port the fix to .Net Core. +5915 area-System.Data API for retrieving Columns Metadata from DbDataReader # API for GetColumnSchema ## Problem DbDataReader on .Net Framework, provides an API called `DataTable GetSchemaTable()` which was returns the metadata of the columns being read using the DbDataReader object. Because of the removal of DataTable in .Net Core this API had to be removed. `DbDataReader.GetSchemaTable()` needs a replacement in .Net core. ## Progress The data structure DbColumn along with the necessary attributes which should be present for the various ADO.Net providers to effectively provide the metadata for the columns is provided in the issue. ``` C# namespace System.Data.Common { // DbColumn contains the base attributes that are common to most Database columns. An indexer // has been provided in case a property added by a provider needs to be accessed without a dependency on the provider implementation. public class DbColumn { public bool? AllowDBNull { get; protected set; } public string BaseCatalogName { get; protected set; } public string BaseColumnName { get; protected set; } public string BaseSchemaName { get; protected set; } public string BaseServerName { get; protected set; } public string BaseTableName { get; protected set; } public string ColumnName { get; protected set; } public int? ColumnOrdinal { get; protected set; } public int? ColumnSize { get; protected set; } public bool? IsAliased { get; protected set; } public bool? IsAutoIncrement { get; protected set; } public bool? IsExpression { get; protected set; } public bool? IsHidden { get; protected set; } public bool? IsIdentity { get; protected set; } public bool? IsKey { get; protected set; } public bool? IsLong { get; protected set; } public bool? IsReadOnly { get; protected set; } public bool? IsUnique { get; protected set; } public int? NumericPrecision { get; protected set; } public int? NumericScale { get; protected set; } public string UdtAssemblyQualifiedName { get; protected set; } public Type DataType { get; protected set; } public string DataTypeName { get; protected set; } public virtual object this[string property] { get; } } } ``` The next part of the API is to expose a ReadOnlyCollection from the DbDataReader The right way of exposing the API would be to add an API in the DbDataReader class called `ReadOnlyCollection DbDataReader.GetColumnSchema()` This is however not possible in .Net Core current version as it would hinder portability of apps created on .Net core with .Net framework. https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md Based on the contents of the link above, the following rule is allowed `Adding an abstract member to a public type when there are no accessible (public or protected) constructors, or the type is sealed` The restriction is due to type forwarding, which needs the calls to DbDataReader to be forwarded to the .Net framework's DbDataReader. ## Proposal We introduce an interface called IDbColumnSchemaGenerator, in .Net core which can be implemented by a type which can provide the Column Metadata. For DbDataReader, this interface needs to be implemented by the subclasses of the `DbDataReader` to provide the Column metadata provided by the `DbDataReader` ``` C# namespace System.Data.Common { public interface IDbColumnSchemaGenerator { System.Collections.ObjectModel.ReadOnlyCollection GetColumnSchema(); } } ``` The subclasses of DbDataReader in the ADO.Net providers implement this interface. ``` C# public class SqlDataReader : DbDataReader, IDbColumnSchemaGenerator { public ReadOnlyCollection GetColumnSchema(){ return ... ; } } ``` In .Net core, to allow the Column Metadata to be exposed from the DbDataReader, an extension to the DbDataReader will be provided. This extension has the same signature as the interface method. ``` C# using System.Collections.ObjectModel; namespace System.Data.Common { public static class DbDataReaderExtension { public static System.Collections.ObjectModel.ReadOnlyCollection GetColumnSchema(this DbDataReader reader) { if(reader is IDbColumnSchemaGenerator) { return ((IDbColumnSchemaGenerator)reader).GetColumnSchema(); } throw new NotImplementedException()); } } } ``` It is recommended that the extension be used by consumers, for compatibility with .Net Framework. The details are mentioned in the compatibility section below. ## Producer The ADO.Net providers are the producers of the Column Schema. The interface will be implemented by the sub-classes of `DbDataReader` in the ADO.Net providers. E.g. ``` C# class SqlDataReader : DbDataReader, IDbColumnSchemaGenerator { ... public ReadOnlyCollection GetDbColumnSchema() { ReadOnlyCollection metadata = ... ; // Build the list of columns metadata. Each columns metadata is represented by the DbColumn return metadata; // } ... } ``` ## Consumer The consumers can retrieve the column metadata using an extension method on the DbDataReader. This extension will be provided in System.Data.Common For a library consuming the `DbDataReader` the code will look like the following: ``` C# using System.Data.Common; namespace org.example.my { ... public void ProcessMetadata(DbDataReader reader) { ICollection columnMetadata = reader.GetColumnSchema(); } ... } ``` ## Compatibility of libraries written on .Net Core with .Net Framework The extension method will have a different implementation in the **_partial facade_** to get the Schema. The implementation will use the DbDataReader.GetSchemaTable() api which returns the schema as a Datatable. This Datatable will be mapped to a ReadOnlyCollection and returned by the implementation of the extension in the partial facade. # vNext In the next version of .Net we add a Interface to .Net desktop and the the consumers continue to access the schema using the Interface ## Reference Github issue https://github.com/dotnet/corefx/issues/3423 +5919 area-System.Net Native shims for libheimntlm inorder to support NTLM Introducing native shims for libheimntlm inorder to support NTLM This PR overwrites #5728 +5920 area-System.Threading Configure ThreadPool Hello, There is some way to configure the threadPool and the ConnectionLimit in DNX Core 50? We use this configure in dnx 451: ThreadPool.SetMinThreads(50, 50); ThreadPool.SetMaxThreads(10000, 10000); System.Net.ServicePointManager.DefaultConnectionLimit = int.MaxValue; How can I put this parameters in core? Thank you +5921 area-System.Drawing Proposal for minimalistic imaging platform ## Proposal for minimalistic imaging platform .NET does not provide a truly portable image format nor portable image IO operations. For example System.Drawing.Bitmap nor WPF's BitmapSource and does not provide generic interface which imposes compile-time constraints. EmguCV's generic image provides the generic interface but is heavily coupled with OpenCV. All mentioned image types do not provide a unified interoperability needed when mixing image-processing algorithms from different libraries. ### Goals: - [ ] to create a portable module for image reading/writing - [x] to create a portable, slim image format such as [DotImaging](https://github.com/dajuric/dot-imaging) has (native array Bgr<byte>[,]) - [x] to create system drawing primitives - such as in [DotImaging.Primitives2D](https://www.nuget.org/packages/DotImaging.Primitives2D/) - [ ] _optionally to create portable video reading and web-camera access module_ ### Proposal To leverage existing structure and components of [DotImaging](https://github.com/dajuric/dot-imaging) framework, but to replace the backing OpenCV part needed for image IO. The first step would be to create a portable image reading/writing module with the most simplistic API (e.g. ImageIO.LoadColor(), LoadGray()...). Options: - a wrapper arround LibGD (@ #2020) - trim down and reuse the existing platform specific module of: [Eto.Forms](https://github.com/picoe/Eto) - includes drawing capabilities as well, or [Splat](https://github.com/paulcbetts/splat). ### Related issues [Proposal for Cross-plat Server-side Image Manipulation Library](https://github.com/dotnet/corefx/issues/2020) - proposal of much broader scale - this proposal resolves the core issue and levaes out separates image processing part managed by other libraries [Accord.NET](http://accord-framework.net/), [Accord.NET Extensions](https://github.com/dajuric/accord-net-extensions), [EmguCV](http://www.emgu.com/wiki/index.php/Main_Page). [.NET core should have primitive drawing types](https://github.com/dotnet/corefx/issues/1563) - already done in [DotImaging.Primitives2D](https://www.nuget.org/packages/DotImaging.Primitives2D/) +5924 area-System.Net Use OpenSSL for cert chain verification in CurlHandler Our certificate chain verification includes the ability to check user store certificates in addition to the root store, but it's more expensive than the default verification provided by OpenSSL, which only includes the system store. This commit modifies our CurlHandler's VerifyCertChain implementation to first use the OpenSSL implementation, and only fall back to ours if it fails, resulting in much faster processing in https cases. (It'll be easiest to look at the whitespace-free diff view: https://github.com/dotnet/corefx/pull/5924/files?w=1 ) cc: @bartonjs +5925 area-Meta Add suggestions/samples for dealing with common missing desktop APIs Customers coming from a .NET desktop background are frequently running into issues with a few common feature areas that are missing/changed in .NET Core (in ways too general to be thoroughly covered by API catalog recommendations). It would be great to have a page (maybe linked from [here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/support-dotnet-core-instructions.md) that listed the commonly missed areas and how to deal with them in .NET Core. Some areas that should be covered include: - Serialization (moving to DCS from binary serialization) - Xml (some high level changes to which APIs are available, like XmlTextReader vs. XmlReader - Managed security.(CAS is gone; Transparency still exists, but usually isn't needed) +5927 area-System.Net Leaking System.Net.Http.WinHttpRequestState in WCF Streaming over Http This is really fast - ~1GB per 1minute. To repro: ``` dnx --configuration RETAIL run . Program2Run:Perf Binding:Http Async:true Test:Streaming ``` Here are some details: ``` 0:012> !gcroot 000000859f603ab8 HandleTable: 00000086a7c81668 (strong handle) -> 000000859e5f5780 System.Net.Http.WinHttpRequestState -> 000000859e5f5718 System.Threading.Tasks.TaskCompletionSource`1[[System.Net.Http.HttpResponseMessage, System.Net.Http]] -> 000000859e5f5730 System.Threading.Tasks.Task`1[[System.Net.Http.HttpResponseMessage, System.Net.Http]] -> 000000841e3aa2a8 System.Net.Http.HttpResponseMessage -> 000000859e5f4ab0 System.Net.Http.HttpRequestMessage -> 000000859e5f4af8 System.Net.Http.Headers.HttpRequestHeaders -> 000000859e5f4c30 System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo, System.Net.Http]] -> 000000859e5f4ca8 System.Collections.Generic.Dictionary`2+Entry[[System.String, mscorlib],[System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo, System.Net.Http]][] -> 000000859f603ab8 System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo Found 1 unique roots (run '!GCRoot -all' to see all roots). 0:012> !do 000000859e5f5780 Name: System.Net.Http.WinHttpRequestState MethodTable: 00007fff0f29a520 EEClass: 00007fff0f28fc98 Size: 184(0xb8) bytes File: C:\Users\kkhurin\.dnx\packages\System.Net.Http.WinHttpHandler\4.0.0-rc3-23720\lib\DNXCore50\System.Net.Http.WinHttpHandler.dll Fields: MT Field Offset Type VT Attr Value Name 00007fff696e15e8 4000044 8 System.Object 0 instance 000000859e5f5838 _lock 00007fff696e3628 4000045 a0 ...Services.GCHandle 1 instance 000000859e5f5820 _operationHandle 00007fff696e5d90 4000046 98 System.Boolean 1 instance 0 _disposed 00007fff6fbf5c58 4000047 10 ...System.Net.Http]] 0 instance 000000859e5f5718 k__BackingField 00007fff696ef250 4000048 a8 ...CancellationToken 1 instance 000000859e5f5828 k__BackingField 00007fff6fbf7f90 4000049 18 ...ttpRequestMessage 0 instance 000000859e5f4ab0 k__BackingField 00007fff0f292580 400004a 20 ...tp.WinHttpHandler 0 instance 000000839dd16e30 k__BackingField 00007fff0f29b288 400004b 28 ...SafeWinHttpHandle 0 instance 000000831e798458 k__BackingField 00007fff696e1330 400004c 30 System.Exception 0 instance 0000000000000000 k__BackingField 00007fff696e5d90 400004d 99 System.Boolean 1 instance 0 k__BackingField 00007fff6fbf3738 400004e 38 ...olean, mscorlib]] 0 instance 0000000000000000 k__BackingField 00007fff0f29a900 400004f 40 ...pTransportContext 0 instance 000000859e5f5850 k__BackingField 00007fff0f292428 4000050 90 System.Int32 1 instance 2 k__BackingField 00007fff69f7fd18 4000051 48 System.Net.IWebProxy 0 instance 0000000000000000 k__BackingField 00007fff69f7fc78 4000052 50 ....Net.ICredentials 0 instance 0000000000000000 k__BackingField 00007fff69f7fc78 4000053 58 ....Net.ICredentials 0 instance 000000839dcaed18 k__BackingField 00007fff696e5d90 4000054 9a System.Boolean 1 instance 1 k__BackingField 00007fff69f7fc18 4000055 94 System.Int32 1 instance 0 k__BackingField 00007fff696e5d90 4000056 9b System.Boolean 1 instance 0 k__BackingField 00007fff0f11cde8 4000057 60 ...olean, mscorlib]] 0 instance 000000831e79a068 k__BackingField 00007fff0f11cde8 4000058 68 ...olean, mscorlib]] 0 instance 0000000000000000 k__BackingField 00007fff0f11cde8 4000059 70 ...olean, mscorlib]] 0 instance 000000831e79a430 k__BackingField 00007fff0f11cde8 400005a 78 ...olean, mscorlib]] 0 instance 000000831e79a498 k__BackingField 00007fff0eda9d10 400005b 80 ...Int32, mscorlib]] 0 instance 000000859e5f8428 k__BackingField 00007fff0eda9d10 400005c 88 ...Int32, mscorlib]] 0 instance 000000859e5f83c0 k__BackingField 0:012> !do 000000841e3aa2a8 ; !do 000000859e5f4ab0 Name: System.Net.Http.HttpResponseMessage MethodTable: 00007fff6fbf8120 EEClass: 00007fff6fb5b240 Size: 64(0x40) bytes File: C:\Users\kkhurin\.dnx\runtimes\dnx-coreclr-win-x64.1.0.0-rc1-update1\bin\System.Net.Http.dll Fields: MT Field Offset Type VT Attr Value Name 00007fff69f7fc18 40000b6 30 System.Int32 1 instance 200 _statusCode 00007fff6fbf6f20 40000b7 8 ...tpResponseHeaders 0 instance 000000841e3aa3e8 _headers 00007fff696dfc28 40000b8 10 System.String 0 instance 000000841e3aa2e8 _reasonPhrase 00007fff6fbf7f90 40000b9 18 ...ttpRequestMessage 0 instance 000000859e5f4ab0 _requestMessage 00007fff696ec228 40000ba 20 System.Version 0 instance 000000831daf5a88 _version 00007fff6fbf6a60 40000bb 28 ....Http.HttpContent 0 instance 000000841e3aa340 _content 00007fff696e5d90 40000bc 34 System.Boolean 1 instance 0 _disposed Name: System.Net.Http.HttpRequestMessage MethodTable: 00007fff6fbf7f90 EEClass: 00007fff6fb5b138 Size: 72(0x48) bytes File: C:\Users\kkhurin\.dnx\runtimes\dnx-coreclr-win-x64.1.0.0-rc1-update1\bin\System.Net.Http.dll Fields: MT Field Offset Type VT Attr Value Name 00007fff696f7db8 40000ad 38 System.Int32 1 instance 1 _sendStatus 00007fff6fbf8cf8 40000ae 8 ...t.Http.HttpMethod 0 instance 000000839dcaf910 _method 00007fff7cf55c38 40000af 10 System.Uri 0 instance 000000839dd11a08 _requestUri 00007fff6fbf6e98 40000b0 18 ...ttpRequestHeaders 0 instance 000000859e5f4af8 _headers 00007fff696ec228 40000b1 20 System.Version 0 instance 000000839dcafa40 _version 00007fff6fbf6a60 40000b2 28 ....Http.HttpContent 0 instance 000000859e5f51f0 _content 00007fff696e5d90 40000b3 3c System.Boolean 1 instance 1 _disposed 00007fff68db3b78 40000b4 30 ...bject, mscorlib]] 0 instance 0000000000000000 _properties ``` +5928 area-System.Net Fix gchandle leak in WebSockets.Client The Windows implementation of WebSockets.Client leaks the WinHttpWebSocketState object. This object was being pinned by `GCHandle.Alloc(this)` in the contructor. And it was never freed. This object needs to be pinned during the WebSocket lifecycle because the address of the object is passed to native WinHTTP and used as the context value during callbacks. However, it needs to be manually freed at the proper time after all WinHTTP callbacks are done via closing down the handles. This fix adds Pin() and Unpin() methods to WinHttpWebSocketState and calls them at appropriate times. While fixing this I discovered other places where the object might be left as pinned. The current logic relies on WinHTTP calling the callback with HANDLE_CLOSING before the object would get unpinned. But since the object is pinned very early on, it's possible due to unexpected errors, that the wiring of the WinHTTP callback never gets done. And thus, the object would never have been unpinned. This fix delays the pinning of the object until the right time where it is assured that the WinHTTP callback wiring has been completed. This logic is now similar to the state handling in WinHttpHandler. There is still a work item #2501 to merge these design implementations and share code in the future. Fixes #3256. +5930 area-Infrastructure Generalize story for building multiple package versions See discussion on PR #5916. Right now, there's some custom path adjustment in metadata, but there should be a general way to cross-compile multiple versions as needed for all projects. +5939 area-System.Net Can't locate TcpClient and TcpListener from Socket.Net.Sockets Hi .NET Core, I like the direction of this project. It's fun to watch and see everything evolve.. Trying to upgrade an existing 4.5.1 project to .NET core on windows 10 and VS2015. It uses lots of TcpClient and TcpListener. From searching github repo, it appears like it's in the System.Web.Sockets package. However, these classes aren't visible to me on public nuget. Including the package: ![image](https://cloud.githubusercontent.com/assets/120773/12864092/a24c8eee-ccd5-11e5-8cbd-e453380e8a56.png) Checking object browser: ![image](https://cloud.githubusercontent.com/assets/120773/12864096/c54c5cc6-ccd5-11e5-9a29-c5a3a699cf08.png) What am I doing wrong? Where can I find TcpClient and TcpListener? Many thanks +5940 area-System.Runtime MulticastDelegate, BeginInvoke throws NotSupportedException Invoking the BeginInvoke method of a MulticastDelegate derived delegate compiles fine with .NET Core, but throws a NotSupportedException. Should this really be the case? Sample code is here, .NET 4.6 runs ok, but .NET Core fails with the mentioned exception: https://github.com/ProfessionalCSharp/ProfessionalCSharp6/tree/master/Synchronization/SynchronizationSamples/AsyncDelegate Thanks, Christian +5941 area-System.IO Using System.IO.Compression cannot resolve System.Buffers with .NET 4.6 "Using System.IO.Compression, 4.1.0-rc3-23805 cannot resolve System.Buffers compiling with .NET 4.6. It's ok with .NET Core. Compiling with ""dotnet build"". Sample code: https://github.com/ProfessionalCSharp/ProfessionalCSharp6/tree/master/FilesAndStreams/FilesAndStreamsSamples/CompressFileSample " +5942 area-Infrastructure System.Net.Http.Native.so in package linked to libcurl-gnutls.so.4 It should instead be linked to libcurl.so.4 (as is the one that gets built in Jenkins). cc: @bartonjs, @chcosta +5945 area-System.Linq ListInitExpression with non-void Add method fails with interpreter An expression of the form `() => new HashSet{ 1, 2, 3}` works fine with the compiler, but fails with the interpreter with a `TargetException` (or an assertion failure in debug), or possibly some other bad things with variants of this. The interpreter is assuming that `Add()` methods return void, so doesn't deal with the value pushed to the stack by a method like `HashSet.Add()` that returns `bool` cc @VSadov @bartdesmet . +5946 area-System.Linq ListInitExpression from Expression list fails with multiple expression types. "Consider: ``` C# private class MixedAddable : IEnumerable { private readonly List _strings = new List(); private readonly List _ints = new List(); public void Add(string value) { _strings.Add(value); } public void Add(int value) { _ints.Add(value); } public IEnumerator GetEnumerator() { return _strings.Concat(_ints.Select(i => i.ToString())).GetEnumerator(); } } ``` The likes of `() => new MixedAddable { 1, ""a"", 2, ""b"" }` works fine, but the following fails: ``` C# Expression.ListInit( Expression.New(typeof(MixedAddable)), Expression.Constant(0), Expression.Constant(""a"") ) ``` It's assumed that the correct `Add` method for the first expression is also correct for the rest, though this doesn't necessarily hold. " +5950 area-System.Xml System.Xml.XDocument.TreeManipulation.Tests failing for OSX Release in CI Looks like something whitespace or end-of-line related from the error message. +5951 area-System.Linq Incorrect argument name for null initializer to Expression.ListInit "If an initializer to `ListInit` is null the exception should give the argument name as ""initializers[0]"", etc. Instead it can be ""argument"", ""arguments"" or ""initializers"" depending on the overload used. " +5953 area-System.Net Remove Client property from TcpClient and UdpClient The property leaks through the abstraction. It's rarely used. And it complicates things on Unix due to exposing the underlying socket instance combined with difficulties with multiple connect calls on a single socket instance. Until we have good reason to expose it in the contract, we're removing it from the contract before it's stable. cc: @davidsh, @cipop, @SidharthNabar, @terrajobst, @weshaggard, @saurabh500 Closes #4968 Closes #5411 +5963 area-System.Linq MemberInit will write to readonly fields on interpreter "Given: ``` C# private class PropertyAndFields { public readonly string ReadonlyStringField; } ``` Then `Expression> exp = () => new PropertyAndFields{ReadonlyStringField = ""Hello Readonly Field""}` won't compile (CS0191). However, this is accepted: ``` C# Func func = Expression.Lambda>( Expression.MemberInit( Expression.New(typeof(PropertyAndFields)), Expression.Bind( typeof(PropertyAndFields).GetMember(""ReadonlyStringField"")[0], Expression.Constant(""Hello Readonly Field"") ) ) ).Compile(); ``` If compiled with the compiler then attempting to invoke the delegate throws a `VerificationException`. If compiled with the interpreter then invoking the delegate returns a `PropertyAndFields` object with the readonly field set as requested. With an attempt to initialise a constant, the compiler will throw `NotSupportedException`, the interpreter return a delegate that throws `FieldAccessException` (or hit an assert in debug). With an attempt to initialise a static property the compiler will return a delegate that throws a `VerificationException` on invocation, the interpreter one that writes to the property (or hit an assert in debug, it unbalances the stack). Attempts to write initialise static fields will work for either, but again unbalances the stack for the interpreted version. The ideal solution would be to throw on the call to `Expression.Bind` which could be easily done by adding more checks to `ValidateSettableFieldOrPropertyMember`. If the backwards compatibility impact was considered too great, the interpreter could be change to throw the same exceptions as the compiler, in those cases where it throws. cc @VSadov @bartdesmet " +5964 area-System.IO Expose existing FileStream.Lock() and FileStream.Unlock() APIs on MacOS/Unix Dear Team, As the subject line states we seek the consideration to add Lock() and Unlock() for FileStream in the contract. The implementation should be straight forward at least for Windows platform. Current .NET 4.61 calls Win32 LockFile underneath: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365202(v=vs.85).aspx Although we don't have access to LockFile for UWP, we do luckily have the brother of it LockFileEx, which also supports async, which is good news. I believe for Linux/BSD/Mac there should be easy equivalent to find as locking on file is very common in old days. Will find all the details if the team is willing to consider the proposal. We could do our own P/Invoke to call the LockFileEx, but it would be much elegant if corefx support that out of box, unless there is significant reason to reject it. +5965 area-System.Linq Expression.ListBind accepts non-addable properties if element list is empty. "`Expression.ListBind` will accept a property or field that is not of a type with an `Add` method, though it should require such. The validation only passes fully if the element list is empty, as otherwise an attempt to create an `ElementInit` for such a type will fail. Example: ``` C# public class TypeWithEnumerable { public IEnumerable Numbers; } Expression.ListBind(typeof(TypeWithEnumerable).GetProperty(""Numbers"")); // Should throw. ``` " +5966 area-System.Net Allow libcurl to use CURLAUTH_NTLM We already have Negotiate, Digest, and Basic... adding NTLM. @kapilash, @vijaykota, why wasn't this done initially? Is there something important I'm missing? I just tested it, and it appears to work fine (using libcurl4-openssl-dev), and the docs for CURLAUTH_NTLM state it should work with multiple backends. Seems like worst case is there's some platform where it's simply not available but the other auth protocols continue to work as they would...? cc: @kapilash, @vijaykota, @ericeil +5969 area-Infrastructure Ubuntu 14.04.3 Corefx Build Error "Following instructions here https://github.com/dotnet/coreclr/blob/master/Documentation/building/linux-instructions.md CoreCLR builds ok. Corefx gets following error ~/git/corefx$ ./build.sh Setting up directories for build MSBUILD : error MSB1025: An internal failure occurred while running MSBuild. System.EntryPointNotFoundException: Unable to find an entry point named 'SetConsoleCtrlHandler' in DLL 'libcoreclr'. at Interop.libcoreclr.SetConsoleCtrlHandler(ConsoleCtrlHandlerRoutine handler, Boolean addOrRemove) at System.ConsolePal.ControlCHandlerRegistrar.RegisterOrUnregister(Boolean register) at System.Console.add_CancelKeyPress(ConsoleCancelEventHandler value) at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine) Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point named 'SetConsoleCtrlHandler' in DLL 'libcoreclr'. at Interop.libcoreclr.SetConsoleCtrlHandler(ConsoleCtrlHandlerRoutine handler, Boolean addOrRemove) at System.ConsolePal.ControlCHandlerRegistrar.RegisterOrUnregister(Boolean register) at System.Console.add_CancelKeyPress(ConsoleCancelEventHandler value) at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine) at Microsoft.Build.CommandLine.MSBuildApp.Main(String[] args) ./build.sh: line 132: 31021 Aborted (core dumped) ReferenceAssemblyRoot=$__referenceassemblyroot $__scriptpath/Tools/corerun $__scriptpath/Tools/MSBuild.exe ""$__buildproj"" /nologo /verbosity:minimal ""/fileloggerparameters:Verbosity=normal;LogFile=$__buildlog"" /t:Build /p:OSGroup=$__BuildOS /p:COMPUTERNAME=$(hostname) /p:USERNAME=$(id -un) /p:TestNugetRuntimeId=$__TestNugetRuntimeId /p:ToolNugetRuntimeId=$__TestNugetRuntimeId $__UnprocessedBuildArgs tail: cannot open ‘/home/tonyh/git/corefx/msbuild.log’ for reading: No such file or directory Build Exit Code = 134 " +5971 area-System.Net Remove SystemNative_PlatformSupportsMultipleConnectAttempts #5790 removed the uses of this shim. Now we should be able to remove the shim itself. Fixes #5826. @stephentoub, @pgavlin +5972 area-Meta Add documentation around porting to .NET Framework @AlexGhiondea @weshaggard @leecow +5974 area-System.Numerics Cleanup Complex - Format the source file - Combine tests into one source file - Rewrite tests to make advantage of xunit +5975 area-System.Net Change socket test to stop sending data only when we've sent all the data, or an error occurs. If send returns zero, that does not necessarily mean we are done. Fixes #5739 Fixes #4817 @stephentoub, @pgavlin , @CIPop +5976 area-System.Data Change the DbColumn Indexer to use nameof(property) The issue https://github.com/dotnet/corefx/pull/5968 allows the access of attributes of DbColumn using the name of the properties. For better maintainability, the implementation of the indexer should use the nameof(property) instead of the names as strings. This can be done with upgrade of CoreFX repo to C# 6.0 being tracked by #1316 Refer pull request for further details https://github.com/dotnet/corefx/pull/5968 +5980 area-Meta Consider exposing the WinRT targeting pack on NuGet "Hi, I'm trying to write a DNX-based library that will compile on both WPF and Windows 10. This is what my project.json looks like: ``` json ""frameworks"": { ""net46"": { ""frameworkAssemblies"": { ""WindowsBase"": ""4.0.0.0"" } }, ""netcore50"": { ""dependencies"": { ""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.0.0"" } } } ``` And this is what my C# code looks like: ``` csharp #if NET46 using System.Windows; #elif NETCORE50 using Windows.UI.Xaml; #endif public class Dependency { public static DependencyProperty Register(/*...*/) where TOwner : DependencyObject { // ... } } ``` While I have no trouble compiling the code for WPF, the compiler isn't recognizing types like `DependencyProperty` for UWP. I eventually narrowed it down to the fact that it was missing the reference to `Windows.winmd` (or the universal API contract for Windows 10) that contained the types. So suddenly I remembered you guys had WinRT-specific libraries, and I looked into your `project.json` to see how you do it. I eventually figured out you're doing this using some kind of ['targeting pack'](https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.Runtime.WindowsRuntime/src/project.json#L12) package, hosted privately on MyGet. Would it be possible for you guys to upload the package officially to NuGet, so others could use WinRT-specific types in .NET Core libraries? I'm assuming it shouldn't be too much of a trouble, since it only contains the `.winmd` file, right? " +5981 area-System.Net Remove the stale ActiveIssue(5555) tag for OSX Since the default root store should have trust for this cert now, consider this scenario to be Generally Regarded As Safe, like it is for the other platforms. Fixes #5555 (well, it was fixed a while ago, but the test-runtimes lagged) +5982 area-System.Diagnostics TraceSource: Will support load setting from App.config file? The original System.Diagnostic.TraceSource support define tracesource/sourceswitch/tracelistener in app.config xml. Will that be support in the near future for dotnet core? Thanks, Ting +5987 area-System.Diagnostics Process start doesn't resolve environment variables in the executable path. "If you use Process.Start(ProcessStartInfo) method on OSX (or any Unix OS) and a path to executable contains environment variables in it (this environment variables are passed to ProcessStartInfo.Environment). This variables will not be resolved and ""System.ComponentModel.Win32Exception: No such file or directory"" exception will be thrown. This behavior is inconsistent with the Windows version. Note: path looks like ""%EnvVar%\test.exe " +5990 area-Infrastructure Add Fedora 23 to CI / RID Graph / Packages https://getfedora.org/en/cloud/download/docker.html https://fedoraproject.org/wiki/Releases +5991 area-System.Net Address issues in PR #5852 Address issues with Virtualnetwork found in PR#5852. Postponing the fixes for later given the CI system instabilities with *NIX in the last week. - VirtualNetworkStream.cs:112 Nit: I think you said this will never be canceled at this time, so this can wait until later, but if this does have cancellation requested, it'll end up throwing a cancellation exception that's then caught by the catch block, which will return a task in the Faulted state. Technically it'd be better for the task to be in the Canceled state. In reality, for your testing purposes, it's unlikely to matter, as if the operation is immediately awaited, the caller won't be able to tell the difference. If, however, a caller were to inspect the Status of the returned task once it completed (as they might if they were using ContinueWith), they could tell the difference. - VirtualNetworkStreamTest.cs:110 Random isn't thread-safe, so this call should be protected (or you should use RandomNumberGenerator, which is thread-safe). Random has a nasty habit when it's used concurrently of getting into a corrupted state where it then only ever produces zeros. +5993 area-Infrastructure init-tools.sh output should mimic the cmd equivalent where the output is logged out to a file. +5994 area-System.IO Cleanup and reformat System.IO.Packaging Fixes #2699 +5998 area-System.Net Eliminate CallbackHandle in CurlHandler For each request, we end up allocating a native CallbackHandle and wrapping it on the managed side with a SafeCallbackHandle. Then each P/Invoke to register a callback passes a delegate and a GCHandle, stores both in the CallbackHandle, and passes to libcurl a shim function and the CallbackHandle as the user pointer. The shim when invoked then pulls the relevant function out of the CallbackHandle and invokes it. But, we always use the same functions, for which delegates are cached in statics, both for perf and to keep them from being collected. If we instead had a single P/Invoke we called to store pointers to all of these delegates, then we would no longer need to store the delegates in the CallbackHandle, and we'd only have a single piece of state (the GCHandle) to pass for each invocation, which means we could just pass that as the user pointer and get rid of the CallbackHandle altogether. +5999 area-System.Net System.Net.Http.CurlHandler and Unix Sockets "I previously opened #3153 asking about exposing Unix Socket functionality in the CurlHandler, and @stephentoub closed the issue with [an excellent explanation](https://github.com/dotnet/corefx/issues/3153#issuecomment-139289555). However, as things in .NET Core Land have progressed, I'm wondering again about this. Basically, the **dotnet/corert** project is looking to enable native compilation, which means that C# can potentially be used to create useful, native cross-platform tools, much like Go. It's very common for these command-line applications or services on Linux to need to communicate over Unix Sockets; for example, `/var/run/docker.sock` is used to talk to the local Docker daemon. I had a quick look at the `HttpClient` and `HttpRequestMessage` APIs, and the internal handling of `HttpRequestMessage` by `CurlHandler`. There is a potential opportunity to introduce this functionality in an obscure but workable way without breaking or even changing the public API, by using the `Properties` dictionary on `HttpRequestMessage` (which is a `Dictionary`). One could set a property in here, perhaps like: ``` csharp var message = new HttpRequestMessage(HttpMethod.Get, ""http://localhost/api/list""); message.Properties[""Curl.UnixSocketPath""] = ""/var/run/docker.sock""; ``` `CurlHandler` could then check for this property and set `CURLOPT_UNIX_SOCKET_PATH` using `Interop.Http.EasySetOptionString`. An application or library developer using this feature could easily create extension methods on `HttpClient` to give themselves a nicer syntax. If that API would be acceptable, I'd be happy to have a go at implementing it. Thoughts? " +6001 area-System.Net Enable EventSource logging in CurlHandler We currently have a bunch of tracing in CurlHandler, but it's all guarded behind compile-time flags, making it difficult to use to diagnose issues. This converts that to all be EventSource-based logging. It also enables libcurl to provide its debug info via a callback, which is then routed to the EventSource as well, and mapped to the easy handles with which the info is associated. cc: @kapilash, @davidsh, @josguil, @eerhardt +6006 area-System.Net Failed assert in socket tests in ToFileDescriptor on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst/412/console ``` 23:16:04 Assertion failed: (0 <= fd && fd <= OPEN_MAX), function ToFileDescriptor, file /Users/dotnet-bot/j/workspace/dotnet_corefx/nativecomp_osx_debug/src/Native/Common/pal_utilities.h, line 127. 23:16:04 ./run-test.sh: line 130: 70671 Abort trap: 6 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 23:16:04 error: One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 134. ``` +6007 area-System.IO Win32FileStream turns async reads into sync reads When filling the internal buffer, Win32FileStream does this as part of ReadAsync: ``` C# Task readTask = ReadInternalCoreAsync(_buffer, 0, _bufferSize, 0, cancellationToken); _readLen = readTask.GetAwaiter().GetResult(); ``` Ugh! There's a large comment about how this is done to avoid concurrent use of the buffer when concurrent read operations are issued, but we should be able to work around that using something similar to what I previously did for WriteAsync and FlushAsync, with the HasActiveBufferOperation mechanism (https://github.com/dotnet/corefx/pull/2929). As it currently stands, it appears that when async reads are performed against a Win32FileStream and those reads are smaller than the file stream's buffer, all such reads will be made synchronous, either because they're pulling from the buffer or because they're blocking waiting for the buffer to be filled. cc: @ericstj, @ianhays, @JeremyKuhne +6008 area-System.Net System.Net.Cache whole namespace is not in corefx? Was porting something that is doing: ``` if (u) request.CachePolicy = new System.Net.Cache.RequestCachePolicy (System.Net.Cache.RequestCacheLevel.Default); else request.CachePolicy = new System.Net.Cache.RequestCachePolicy (System.Net.Cache.RequestCacheLevel.BypassCache); ``` Then discovered that this namespace doesn't exist in the corefx, not even asked or mentioned in issues/code. 1, Is there better practices cancelling the need of this? 2, Is the function absorbed into somewhere else? 3, Or simply missing? +6009 area-Infrastructure prerelease build Microsoft.NETCore.UniversalWindowsPlatform 5.2.0-rc3-23809 can't install in vs 2015 It gives this error msg: ``` All packages are compatible with UAP,Version=v10.0. System.AppContext 4.1.0-rc3-23809 provides a compile-time reference assembly for System.AppContext on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm. Some packages are not compatible with UAP,Version=v10.0 (win10-arm). System.AppContext 4.1.0-rc3-23809 provides a compile-time reference assembly for System.AppContext on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm-aot. Some packages are not compatible with UAP,Version=v10.0 (win10-arm-aot). System.AppContext 4.1.0-rc3-23809 provides a compile-time reference assembly for System.AppContext on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86. Some packages are not compatible with UAP,Version=v10.0 (win10-x86). System.AppContext 4.1.0-rc3-23809 provides a compile-time reference assembly for System.AppContext on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86-aot. Some packages are not compatible with UAP,Version=v10.0 (win10-x86-aot). System.AppContext 4.1.0-rc3-23809 provides a compile-time reference assembly for System.AppContext on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64. Some packages are not compatible with UAP,Version=v10.0 (win10-x64). System.AppContext 4.1.0-rc3-23809 provides a compile-time reference assembly for System.AppContext on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64-aot. Some packages are not compatible with UAP,Version=v10.0 (win10-x64-aot). Package restore failed for 'myproject'. Package restore failed. Rolling back package changes for 'myproject'. ``` I tried one earlier build 23808, same error. +6010 area-System.Security Investigate RSACng handle usage When splitting out a thinner RSA implementation from RSACng (https://github.com/dotnet/corefx/commit/58d7b85d3b8a9632d1614716b966381e6d6b4efb) it seemed that RSACng does a lot of accessing of the Key.Handle property. This property returns a distinct disposable/finalizable resource each call, and RSACng does not appear to dispose it when done. Perhaps a single handle can be extracted from the key and cached until the key gets changed. +6011 area-System.Net HttpClient does not support proxy PAC file with file:// scheme "I have a vanilla ASP.net vnext project, and when switching from `dnx451`to `dnxcore50`, `HttpClient`stops working assuming an URI with an invalid protocol. The code itself is trivial: ``` public IActionResult Get() { string baseUrl = ""http://someserver.com/foo/""; using (var client = new HttpClient() { BaseAddress = new Uri(baseUrl) }) { var result = client.GetAsync(""items"").Result; ... } } ``` I tried importing different versions of `System.Net.Http` (e.g. _""System.Net.Http"": ""4.0.1-beta-23409""_), including the latest stable and latest beta, but they are all the same when running under the CoreClr. I didn't find another implementation of HttpClient for the CoreClr, but then, I have a hard time believing that something as elementary would be missing or broken. Am I missing something or using the wrong library? Thanks, Philipp System.AggregateException: One or more errors occurred. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The URL does not use a recognized protocol at System.Net.Http.WinInetProxyHelper.GetProxyForUrl(SafeWinHttpHandle sessionHandle, Uri uri, WINHTTP_PROXY_INFO& proxyInfo) at System.Net.Http.WinHttpHandler.SetRequestHandleProxyOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__103.MoveNext() --- End of inner exception stack trace --- --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result() at OrderManager.Controllers.JobsController.Get() ---> (Inner Exception #0) System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The URL does not use a recognized protocol at System.Net.Http.WinInetProxyHelper.GetProxyForUrl(SafeWinHttpHandle sessionHandle, Uri uri, WINHTTP_PROXY_INFO& proxyInfo) at System.Net.Http.WinHttpHandler.SetRequestHandleProxyOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__103.MoveNext() --- End of inner exception stack trace -- " +6013 area-System.Linq Refactor System.Linq Move classes into separate files. Split Enumerable among several files. Remove redundant references to generic types or namespaces. Fixes #1149 @stephentoub since you suggested to @VSadov that splitting this file might be useful at https://github.com/dotnet/corefx/pull/5820#discussion_r52452253 +6017 area-System.Linq System.Linq needs to support 4.1.0.0 on desktop or increase the generation I've added a baseline for our internal build to permit the missing members for now, but you either need to add these APIs to desktop or create an API surface that is OOB-able to desktop. An example of an OOB-able design would be to put the new members on a new type. If you can OOB the new APIs then you can make 4.1.0 dotnet5.4/netstandard1.3. It will work on .NET 4.6 and later. If you cannot OOB the new APIs (or do not want to ) and you add the APIs to .NET 4.6.2/4.7 then you can make 4.0 dotnet5.6/netstandard1.5. If you cannot OOB the new APIs and you cannot add the APIs to .NET 4.6.2/4.7 then we must create a new generation and put the APIs there: dotnet5.7/netstandard1.6. Future versions of desktop must implement the new API in order to claim support for the new generation. /cc @weshaggard @stephentoub +6022 area-System.Numerics Inconsistent results for Math.Cos(double.MaxValue) on Windows and non-Windows platforms ## Problem - `Math.Cos(double.MaxValue)` has inconsistent results on Windows and non-Windows platforms. - Windows: returns `double.MaxValue` - Non-Windows: returns `-0.99998768942656` ## Symptom Whilst working on #5974, I noticed that I broke the Ubuntu, Mac OSX and CentOS builds by causing test failures. Interesting Windows did not break, and the tests ran as expected. Consider the following code: ``` var complex = new Complex(double.MaxValue, 0); Complex result = Complex.Exp(complex); ``` On Windows: `result == new Complex(double.PositiveInfinity, double.NaN)` On Ubuntu etc: `result == new Complex(double.NegativeInfinity, double.NaN)` In the [build logs](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_debug_tst_prtest/1595/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8), this test failure occurs at 8:39:16. The code for Complex.Exp(Complex) is as follows: ``` double expReal = Math.Exp(value._real); double cosImaginary = expReal * Math.Cos(value._imaginary); double sinImaginary = expReal * Math.Sin(value._imaginary); return new Complex(cosImaginary, sinImaginary); ``` This may be a bug, as there are inconsistent implementations of these `System.Math` functions, leading to unexpected/undefined behaviour. I've added a test for this behaviour marked with ActiveIssue in #5974. +6023 area-Serialization Remove System.ServiceModel.Dispatcher namespace to fix reflection block issue in Wcf Type 'System.ServiceModel.Dispatcher.FaultFormatter.OperationFault' is blocked from reflection in NetNative by the toolchain. Reflection on System.Xml.XmlSerializer is blocked which causes overzealous blocking for the System.ServiceModel.Dispatcher namespace as well. Since serialization doesn't use this namespace, this change removes it together with XmlSchema.cs. cc: @hongdai @morganbr @AlexGhiondea @SGuyGe @zhenlan @shmao +6026 area-System.Net HttpWebRequest.UserAgent is not available in corefx? any particular reason why? +6027 area-System.Net Throw PNSE from Socket.Connect on *nix iff a previous connect attempt has failed See #5867 and #5829 for details on the problems with multiple connection attempts using the same socket on platforms that follow BSD/POSIX semantics for sockets. Fixes #5871. @pgavlin, @stephentoub, @davidsh +6028 area-System.Net Modify Outerloop job in groovy to run on Ubuntu and Windows. cc @mmitche @joshfree @rahulkotecha @vijaykota +6035 area-Infrastructure Building and running tests with the latest pre-release packages I would like to enable the scenario for developers to build the tests against the latest packages to be restored from myget. At the moment the current test projects utilize the project.json which are static and have project references to the product being built with the tests. This new scenario would allow for the test project.json to have a reference to the latest version of the product dependency it is testing and the latest versions of their sub dependencies. Your thoughts on this scenario? @weshaggard @ericstj CC: @joshfree @ianhays +6037 area-Infrastructure OpenSUSE PR jobs passing all tests but then failing the job e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/opensuse13.2_debug_tst_prtest/1125/console ``` 02:58:37 All tests passed. 02:58:37 [xUnit] [INFO] - Starting to record. 02:58:37 [xUnit] [INFO] - Processing xUnit.Net-v2 (default) 02:58:38 [xUnit] [INFO] - [xUnit.Net-v2 (default)] - 143 test report file(s) were found with the pattern '**/testResults.xml' relative to '/mnt/resource/j/workspace/dotnet_corefx/opensuse13.2_debug_tst_prtest' for the testing framework 'xUnit.Net-v2 (default)'. 02:58:38 [xUnit] [ERROR] - Test reports were found but not all of them are new. Did all the tests run? ``` +6038 area-System.Net Allow CurlHandler to opt-in to NTLM via CredentialCache "libcurl supports four auth types (Negotiate, NTLM, Digest, and Basic), but today our CurlHandler implementation only enables three (Negotiate, Digest, and Basic), with NTLM explicitly disabled to match what was done in WinHttpHandler in corefx (the full framework enables it). However, there are a few key differences that need to be taken into account for CurlHandler. For example, popular implementations of gssapi and Negotiate on Unix do not include implementations for fallback to NTLM. So whereas including “Negotiate” in WinHttpHandler often allows code on Windows to use NTLM if Kerberos is not available, the current state of CurlHandler often does not. And although NTLM has some known issues, if it's the only option for a scenario where a Unix front-end needs to communicate with a Windows back-end (say because the front-end doesn't have Kerberos infrastructure available and the back-end only has Windows authentication enabled), we still want it to be possible for a developer to write an app that communicates with that back-end: the underlying platform supports it, so if the developer explicitly wants it, CurlHandler sitting in the middle shouldn't get in the way. As such, this commit enables NTLM to be used, essentially removing the blocking of it that was previously done. However, it's not enabled by default for arbitrary credentials; rather, it's only enabled when a credential added to a CredentialCache explicitly specifies ""NTLM"". That way, it's available for a dev to opt-in to if desired, but just providing a NetworkCredential to CurlHandler will not use NTLM. cc: @bartonjs, @davidsh, @cipop, @kapilash, @chrisrpatterson, @ericeil " +6039 area-System.IO Win32FileStream will issue a seek on every ReadAsync call Full description is here: https://ayende.com/blog/173345/the-cost-of-async-i-o?key=227b21e219594be48ca03bc8312b08b9 But the gist of it is that we are trying to call ReadAsync on a file that is located on a remote share. Using ReadAsync, we saw a really horrible performance degradation. We tracked it down to this issue: ![image](https://cloud.githubusercontent.com/assets/116915/12979633/159bc0ae-d0e1-11e5-85f8-ba055fa313fb.png) And here is the problematic code: https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/Win32FileStream.cs#L1201 Given that all async calls are always passing the position they use in the overlap, and how expensive this call is, it make for a very bad combination. +6041 area-System.Net Exception Format Bug A bug in the exception formatter results in format exception, there by giving wrong message in case of exceptions. This PR attempts to fix the issue. cc @stephentoub , @vijaykota @shrutigarg +6042 area-System.Net Native PkgProj for System.Net.Security Introducing package proj for gssapi native libraries. +6045 area-System.Reflection [SRM] Mark assembly as [CLSCompliant(true)] and mark individual APIs as [CLSCompliant(false)] Some APIs use pointers (e.g. MetadataReader constructor). Provide an alternative CLS compliant API. Such APIs could also improve usability in C# when the caller has byte[] or ImmutableArray and no interest in dealing with pointers. +6046 area-System.Security Restore the S.S.C.OpenSsl package to Unix-only PR #5880 made the OpenSsl package claim to be cross-platform to allow consumers of a particular form of lack-of-RSA.Create-workaround to continue having their code function after improved package validation came online. Now that RSA.Create exists, we should undo that workaround and go back to being honest that the package doesn't work on Windows. +6049 area-System.Net Allow IPv4 Loopback for DualModeConnect_AcceptAsync sockets tests Some sockets tests were connecting with the IPv4 loopback address and asserting that the connected IPv6 address was equivalent to the IPv4 loopback mapped to IPv6 (ffff:127.0.0.1). However, a non-mapped IPv4 loopback (127.0.01) is still supported on some platforms so the test needs to accommodate that case as it is still a valid loopback address. resolves #4829 @ericeil +6058 area-System.Net Modify NetworkInformation tests to search deeper for test files. "Helix builds for the Open tests for System.Net.NetworkInformation.FunctionalTests are failing because the testdata is being binplaced differently from in the open. The Helix build is placing the testdata into a ""NetworkFiles"" subdirectory like it is in the project structure, whereas it is binplaced to the dnxcore50 directory when running them normally. Rather than add complicated special-casing for Helix for this particular test project, I instead modified the only place we use that testdata to check both possible places before performing the file read. @CIPop @MattGal @joshfree @davidsh " +6059 area-Infrastructure Remove validation suppression from System.Runtime.Serialization.Primitives We're suppressing validation in System.Runtime.Serialization.Primitives until we can oob it to desktop. +6063 area-System.Net fixing comment check if we need to fix the comment https://github.com/shrutigarg/corefx/commit/f047a7d53ae699e51b8ee631e80d72cde4b6139b#commitcomment-16019127 +6064 area-System.Net Merge master to dev/negotiatestream +6070 area-System.Globalization OpenSUSE CI builds with lots of test failures "Most (all) of these look globalization related: ``` CaseInsensitiveComparer_ctor.ExecuteCaseInsensitiveComparer_ctor CaseInsensitiveComparer_Default.ExecuteCaseInsensitiveComparer_Default CaseInsensitiveComparer_Object.ExecuteCaseInsensitiveComparer_Object CollectionsUtilTests.ExecuteCollectionsUtilTests StringTests.TestEndsWith(comparisonType: CurrentCultureIgnoreCase, text: ""Hello"", value: ""LLO"", expected: True) StringTests.TestCompare(strA: ""HELLO"", strB: ""hello"", comparisonType: CurrentCultureIgnoreCase, expected: 0) StringTests.TestStartsWith(comparisonType: CurrentCultureIgnoreCase, text: ""Hello"", value: ""HEL"", expected: True) StringTests.TestCompareIndexed(strA: ""HELLO"", indexA: 2, strB: ""hello"", indexB: 2, length: 3, comparisonType: CurrentCultureIgnoreCase, expected: 0) StringTests.TestCompareIndexed(strA: ""HELLO"", indexA: 2, strB: ""hello"", indexB: 2, length: 3, comparisonType: CurrentCulture, expected: 1) StringTests.TestCompareIndexed(strA: ""hello"", indexA: 2, strB: ""HELLO"", indexB: 2, length: 3, comparisonType: CurrentCulture, expected: -1) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""abcde"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""abcd"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""abc"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""ab"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""a"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""bcde"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""bcd"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""bc"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""b"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""cde"", i: 2, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""cd"", i: 2, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""c"", i: 2, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""de"", i: 3, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""d"", i: 3, comparison: CurrentCultureIgnoreCase) StringTests.TestIndexOf_AllSubstrings(source: ""abcde"", substring: ""e"", i: 4, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""abcde"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""abcd"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""abc"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""ab"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""a"", i: 0, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""bcde"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""bcd"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""bc"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""b"", i: 1, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""cde"", i: 2, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""cd"", i: 2, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""c"", i: 2, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""de"", i: 3, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""d"", i: 3, comparison: CurrentCultureIgnoreCase) StringTests.TestLastIndexOf_AllSubstrings(source: ""abcde"", substring: ""e"", i: 4, comparison: CurrentCultureIgnoreCase) TupleTests.TestCompareTo System.Reflection.Tests.MethodInfoPropertyTests.TestReturnType2 System.Reflection.Tests.MethodInfoPropertyTests.TestReturnType4 System.Reflection.Tests.ParameterInfoNameTests.TestMethodParams1 System.Collections.Specialized.Tests.OrderedDictionaryTests.PassingEqualityComparers System.Linq.Expressions.Tests.Expression_Tests.TestCallInstanceMethodsByName StringComparerTests.TestCurrent RegexReplaceStringTests.RegexReplaceStringTestCase0 ``` " +6072 area-System.Net Disable Linux specific testcase for Plateform not supprted exception This testcase is no longer valid after the move of Platform specific content from NegoState.csl to NegoStreamPal. +6073 area-System.Linq Add TrySingle(IEnumerable, out TSource) "## Motivation In LINQ we have the `Single` and `SingleOrDefault` methods, but they don't tell you if it succeeded or not. The problem with these methods is that if there is more than one element in `source` (or more than one matching element in case of `predicate`) they all throw a `System.InvalidOperationException`. That is fine if more than one element is an error or very rare. If more than one element is common or expected then this will cause major slow downs. Additionaly, in cases of (example: int collections), default(int) is 0, which wouldn't tell the caller whether the operation succeeded (returning the item 0) or not (returning the default 0). ## Proposal ``` diff namespace System.Linq { public static class Enumerable { public static TSource Single(this IEnumerable source); public static TSource Single(this IEnumerable source, Func predicate); public static TSource SingleOrDefault(this IEnumerable source); public static TSource SingleOrDefault(this IEnumerable source, Func predicate); + public static bool TrySingle(this IEnumerable source, out TSource element); + public static bool TrySingle(this IEnumerable source, Func predicate, out TSource element); public static TSource First(this IEnumerable source); public static TSource First(this IEnumerable source, Func predicate); public static TSource FirstOrDefault(this IEnumerable source); public static TSource FirstOrDefault(this IEnumerable source, Func predicate); + public static bool TryFirst(this IEnumerable source, out TSource element); + public static bool TryFirst(this IEnumerable source, Func predicate, out TSource element); public static TSource Last(this IEnumerable source); public static TSource Last(this IEnumerable source, Func predicate); public static TSource LastOrDefault(this IEnumerable source); public static TSource LastOrDefault(this IEnumerable source, Func predicate); + public static bool TryLast(this IEnumerable source, out TSource element); + public static bool TryLast(this IEnumerable source, Func predicate, out TSource element); public static TSource ElementAt(this IEnumerable source, int index); public static TSource ElementAtOrDefault(this IEnumerable source, int index); + public static bool TryElementAt(this IEnumerable source, int index, out TSource element); } public static class Queryable { public static TSource Single(this IQueryable source); public static TSource Single(this IQueryable source, Expression> predicate); public static TSource SingleOrDefault(this IQueryable source); public static TSource SingleOrDefault(this IQueryable source, Expression> predicate); + public static (bool success, T value) TrySingle(this IQueryable source); + public static (bool success, T value) TrySingle(this IQueryable source, Expression> predicate); + public static bool TrySingle(this IQueryable source, out TSource element); + public static bool TrySingle(this IQueryable source, Expression> predicate, out TSource element); public static TSource First(this IQueryable source); public static TSource First(this IQueryable source, Expression> predicate); public static TSource FirstOrDefault(this IQueryable source); public static TSource FirstOrDefault(this IQueryable source, Expression> predicate); + public static (bool success, T value) TryFirst(this IQueryable source); + public static (bool success, T value) TryFirst(this IQueryable source, Expression> predicate); + public static bool TryFirst(this IQueryable source, out TSource element); + public static bool TryFirst(this IQueryable source, Expression> predicate, out TSource element); public static TSource Last(this IQueryable source); public static TSource Last(this IQueryable source, Expression> predicate); public static TSource LastOrDefault(this IQueryable source); public static TSource LastOrDefault(this IQueryable source, Expression> predicate); + public static (bool success, T value) TryLast(this IQueryable source); + public static (bool success, T value) TryLast(this IQueryable source, Expression> predicate); + public static bool TryLast(this IQueryable source, out TSource element); + public static bool TryLast(this IQueryable source, Expression> predicate, out TSource element); public static TSource ElementAt(this IQueryable source, int index); public static TSource ElementAtOrDefault(this IQueryable source, int index); + public static (bool success, T value) TryElementAt(this IQueryable source, int index); + public static bool TryElementAt(this IQueryable source, int index, out TSource element); } } ``` ## Original I'd like to propose a new LINQ method: `TrySingle`. The idea is pretty much the same as the existing `Single` method except it does not throw an exception when there is not only a single item in the sequence. To do this I made to modifications to the `Single` contract: 1. First the method returns `bool`. `true` if the sequence contains exactly one item, `false` otherwise. 2. I added an out parameter of type `TSource`. This will ""hold"" the single element on success. On failure it is filled with `default(TSource)`. I have found this method very useful in my own code and if accepted can quickly put together a pull request. " +6075 area-System.Net InnerSafeCloseSocket.SetNonBlocking should access the AsyncContext property InnerSafeCloseSocket.SetNonBlocking should access the AsyncContext property, rather than using _asyncContext directly. _asyncContext might not be initialized yet. This causes a NullReferenceException if setting the socket to non-blocking before some other operation has initialized the AsyncContext. +6076 area-Serialization [Port] System.Text.EncoderFallbackException: Unable to translate Unicode character We fixed the issue on desktop. We need to port the fix to .Net Core. ``` Discovering: System.Runtime.Serialization.Xml.Tests Discovered: System.Runtime.Serialization.Xml.Tests Starting: System.Runtime.Serialization.Xml.Tests XmlDictionaryWriterTest.XmlDictionaryWriter_InvalidUnicodeChar [FAIL] System.Text.EncoderFallbackException : Unable to translate Unicode character \uDB1B at index 0 to specified code page. Stack Trace: at System.Text.EncoderExceptionFallbackBuffer.Fallback(Char charUnknown, Int32 index) at System.Text.EncoderFallbackBuffer.InternalFallback(Char ch, Char*& chars) at System.Text.UTF8Encoding.GetByteCount(Char* chars, Int32 count, EncoderNLS baseEncoder) at System.Text.UTF8Encoding.GetByteCount(String chars) at System.Text.Encoding.GetBytes(String s) D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlStreamNodeWriter.cs(468,0): atSystem.Xml.XmlStreamNodeWriter.UnsafeGetUTF8Chars(Char* chars, Int32 charCount, Byte[] buffer, Int32 offset) D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlStreamNodeWriter.cs(354,0): atSystem.Xml.XmlStreamNodeWriter.UnsafeWriteUTF8Chars(Char* chars, Int32 charCount) D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlUTF8TextWriter.cs(480,0): at System.Xml.XmlUTF8NodeWriter.UnsafeWriteEscapedText(Char* chars, Int32 count) D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlUTF8TextWriter.cs(447,0): at System.Xml.XmlUTF8NodeWriter.WriteEscapedText(String s) D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlBaseWriter.cs(1019,0): at System.Xml.XmlBaseWriter.WriteString(String value) D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryAsyncCheckWriter.cs(381,0): at System.Xml.XmlDictionaryAsyncCheckWriter.WriteString(String text) D:\OSS\corefx\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs(127,0): at XmlDictionaryWriterTest.XmlDictionaryWriter_InvalidUnicodeChar() Finished: System.Runtime.Serialization.Xml.Tests ``` +6078 area-System.Reflection CustomAttributeExtensions.GetCustomAttribute does not return inherited attributes for indexer argument "System.Reflection.CustomAttributeExtensions.GetCustomAttribute(this ParameterInfo element, Type attributeType, bool inherit) - which is located in the **System.Reflection.Extensions** assembly - does not returned inherited attributes for indexer arguments. It does work fine for method arguments though (for example). To reproduce, compile and run the following code snippet: ``` c# using System; using System.Reflection; namespace ConsoleApp1 { public class Program { static void Main() { var indexerParam = typeof(Sub).GetProperty(""Item"").GetIndexParameters()[0]; var indexerParamAttr = indexerParam.GetCustomAttribute(typeof(MyAttribute), true); Console.WriteLine($""Indexer: {indexerParamAttr != null}""); var methodParam = typeof(Sub).GetMethod(""Run"").GetParameters()[0]; var methodParamAttr = methodParam.GetCustomAttribute(typeof(MyAttribute), true); Console.WriteLine($""Method: {methodParamAttr != null}""); } } [AttributeUsage(AttributeTargets.All)] public class MyAttribute : Attribute { } public abstract class Base { public abstract string Run([MyAttribute] int[] args); public abstract object this[[MyAttribute] int[] args] { get; set; } } public class Sub : Base { public override string Run(int[] args) { return null; } public override object this[int[] args] { get { return null; } set { } } } } ``` Expected result: ``` text Indexer: True Method: True ``` Actual result: ``` text Indexer: False Method: True ``` " +6079 area-System.Net CurlException during 'dotnet restore' in Ubuntu when redirected to certain CDN servers "Ubuntu 14.04 LTS. Reproduced in the Performance repository for ASP.NET. **The exact same scenario succeeds in Windows**. Repro code: ``` C# using System; using System.Diagnostics; using System.IO; using System.Net.Http; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { var url1 = @""https://dotnet.myget.org/F/dotnet-core/api/v3/flatcontainer/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography/1.0.1-rc2-23805/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.1.0.1-rc2-23805.nupkg""; var url2 = @""https://www.myget.org/F/aspnetcidev/api/v3/flatcontainer/microsoft.aspnetcore.server.kestrel/1.0.0-rc2-16391/microsoft.aspnetcore.server.kestrel.1.0.0-rc2-16391.nupkg""; //this one succeeds always Test(url1); //this one fails in Linux, succeeds in Windows Test(url2); } public static void Test(string url) { Console.WriteLine(url); var client = new HttpClient(); var webstask = client.GetAsync(url); var result = webstask.Result; if(result.IsSuccessStatusCode) { Console.WriteLine(""Success""); var readtask = result.Content.ReadAsByteArrayAsync(); var bytes = readtask.Result; Console.WriteLine(""Read {0} bytes"", bytes.Length); } else { Console.Write(""Failed with status code {0}"", result.StatusCode); } } } } ``` This program will succeed to run in Windows but fail in Linux with the following exception: ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (An error occurred while sending the request.) ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(EasyRequest completedOperation, CURLcode messageResult) --- End of inner exception stack trace --- --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at ConsoleApplication.Program.Test(String url) at ConsoleApplication.Program.Main(String[] args) ``` We found this by getting [HelloWorldMvc](https://github.com/aspnet/Performance/tree/dev/testapp/HelloWorldMvc) and trying to `dotnet restore -s https://myget.org/f/dotnet-core -s https://myget.org/f/aspnetcidev -s https://api.nuget.org/v3/index.json`. The result is a number of messages indicating `An error occurred while sending the request.` and failure to load one or multiple packages. Note however that some packages will actually succeed. We identified that when requesting for nuget packages we get 302 redirected to CDN nodes. In the repro code above, the first URL will 302 redirect to a blob file under a `windows.net` domain. The second URL 302 redirects to a `kxcdn.com`. The certificate for this CDN node was issued by COMODO RSA Domain Validation Secure Server CA. I took Fiddler traces on Windows to see if anything was suspicious about the requests or responses, but so far I haven't identified anything. Here's a copy of the response headers I saw. Success case: ``` GET https://dotnet.myget.org/F/dotnet-core/api/v3/flatcontainer/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography/1.0.1-rc2-23805/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.1.0.1-rc2-23805.nupkg HTTP/1.1 302 Found Cache-Control: private, s-maxage=0 Content-Type: text/html; charset=utf-8 Location: https://dotnetmyget.blob.core.windows.net/privatefeeddotnet0core/runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography-1.0.1-rc2-23805?sv=2014-02-14&sr=b&sig=hTjHAsbpKJ2DujU2qrQH%2FNYlRRV4suZQLwi4A6RFHXI%3D&st=2016-02-12T18:55:00Z&se=2016-02-12T20:05:00Z&sp=r&rscc=max-age%3D3600&rsct=binary%2Foctet-stream&rscd=filename%3Druntime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.1.0.1-rc2-23805.nupkg Server: Microsoft-IIS/8.5 X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Date: Fri, 12 Feb 2016 19:20:50 GMT Content-Length: 577 -----------> GET https://dotnetmyget.blob.core.windows.net/privatefeeddotnet0core/runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography-1.0.1-rc2-23805?sv=2014-02-14&sr=b&sig=hTjHAsbpKJ2DujU2qrQH%2FNYlRRV4suZQLwi4A6RFHXI%3D&st=2016-02-12T18:55:00Z&se=2016-02-12T20:05:00Z&sp=r&rscc=max-age%3D3600&rsct=binary%2Foctet-stream&rscd=filename%3Druntime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.1.0.1-rc2-23805.nupkg HTTP/1.1 200 OK Cache-Control: max-age=3600 Content-Length: 37506 Content-Type: binary/octet-stream Content-MD5: AqSICrowLpVQZrsGBsbipQ== Last-Modified: Fri, 05 Feb 2016 07:22:40 GMT Accept-Ranges: bytes ETag: ""0x8D32DFD220326C7"" Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: 065fa41c-0001-000a-37ca-657f0c000000 x-ms-version: 2014-02-14 x-ms-lease-status: unlocked x-ms-lease-state: available x-ms-blob-type: BlockBlob Content-Disposition: filename=runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.1.0.1-rc2-23805.nupkg Date: Fri, 12 Feb 2016 19:20:52 GMT ``` Fail case: ``` GET https://www.myget.org/F/aspnetcidev/api/v3/flatcontainer/microsoft.aspnetcore.server.kestrel/1.0.0-rc2-16391/microsoft.aspnetcore.server.kestrel.1.0.0-rc2-16391.nupkg HTTP/1.1 302 Found Cache-Control: private, s-maxage=0 Content-Type: text/html; charset=utf-8 Location: https://myget-2e16.kxcdn.com/privatefeedaspnetcidev/Microsoft.AspNetCore.Server.Kestrel-1.0.0-rc2-16391?sv=2014-02-14&sr=b&sig=OfWatRJb4qdl29OJDx9PmotBAeNZeyhx3nqHqqJ0260%3D&st=2016-02-12T18%3A55%3A00Z&se=2016-02-12T20%3A05%3A00Z&sp=r&rscc=max-age%3D3600&rsct=binary%2Foctet-stream&rscd=filename%3DMicrosoft.AspNetCore.Server.Kestrel.1.0.0-rc2-16391.nupkg Server: Microsoft-IIS/8.5 X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Date: Fri, 12 Feb 2016 19:21:01 GMT Content-Length: 504 -----------> GET https://myget-2e16.kxcdn.com/privatefeedaspnetcidev/Microsoft.AspNetCore.Server.Kestrel-1.0.0-rc2-16391?sv=2014-02-14&sr=b&sig=OfWatRJb4qdl29OJDx9PmotBAeNZeyhx3nqHqqJ0260%3D&st=2016-02-12T18%3A55%3A00Z&se=2016-02-12T20%3A05%3A00Z&sp=r&rscc=max-age%3D3600&rsct=binary%2Foctet-stream&rscd=filename%3DMicrosoft.AspNetCore.Server.Kestrel.1.0.0-rc2-16391.nupkg HTTP/1.1 200 OK Server: keycdn-engine Date: Fri, 12 Feb 2016 19:21:01 GMT Content-Type: binary/octet-stream Content-Length: 698348 Connection: keep-alive Cache-Control: max-age=3600 Content-MD5: IOWe07QD6QTPyvhA0dSGpQ== Last-Modified: Tue, 09 Feb 2016 07:00:20 GMT ETag: ""0x8D3311EACA7E862"" x-ms-request-id: f4df10d2-0001-0010-1cc9-65c4fc000000 x-ms-version: 2014-02-14 x-ms-lease-status: unlocked x-ms-lease-state: available x-ms-blob-type: BlockBlob Content-Disposition: filename=Microsoft.AspNetCore.Server.Kestrel.1.0.0-rc2-16391.nupkg X-Cache: HIT X-Edge-Location: usse Access-Control-Allow-Origin: * Accept-Ranges: bytes ``` **Note** we can still restore the packages by using `dnu restore` instead. For some reason `dnu` isn't affected by this issue. " +6083 area-System.IO [System.IO]: File.Copy does not retain the timestamp of the original file Copied file has the current timestamp instead of the source file's timestamp. +6085 area-Infrastructure Use Roslyn toolset package for Windows builds Currently we are only using new Roslyn toolset packages in our x-plat builds since we are using .NetCore MSBuild in those platforms. On Windows, we are still using the Full VS MSBuild which doesn't have those roslyn tools. Once we move Windows to use them as well, we will be able to start using C#6 features on our repo. Steps for this to work: - [x] In BuildTools repo: restore the full framework roslyn compilers as part of the tool initialization. (PR dotnet/buildtools#453) - [x] In CoreFx repo: Update corefx to depend on this new version of BuildTools and change the dir.props to use the new roslyn compilers. (PR #6181) cc: @weshaggard FYI: @jaredpar @NickCraver +6087 area-Serialization Remove unused legacy data contract json serializer code We have switched to share data contract json serializer with NetNative instead of the implementation based on JavaScriptSerializer in https://github.com/dotnet/corefx/commit/06d51d6f49eb41a71810833c26c3eb4a89a73df7. This change is to remove the remaining unused code. cc: @mellinoe @SGuyGe @shmao @zhenlan +6090 area-Infrastructure ./build broken for Debian As of 8ca8c48 the `build.sh` script errors out on Debian 8.2: ``` ~/projects/dotnet/corefx$ ./build.sh Setting up directories for build ./build.sh: line 106: /home/projects/dotnet/corefx/Tools/corerun: No such file or directory tail: cannot open ‘/home/projects/dotnet/corefx/msbuild.log’ for reading: No such file or directory Build Exit Code = 127 ``` I regret that I don't have time to dig into this but mention it because the new and improved build tooling will be very appreciated. BTW, I see that the CI builds are still passing, so I'm guessing that Jenkins is not using the same tooling? +6092 area-System.IO MemoryMappedFile.CreateFromFile not able to open file for read "@stephentoub, my changes for ILC integration with CLI https://github.com/dotnet/cli/pull/1363 failed in the CI. Is the below by design? I narrowed it down to this scenario: XUnit runner process and the ILC's input project both refer to the same version of the NETStandard.Library. XUnit runner loads System.Console.dll from the shared packages cache location. ILC wants to compile an user's app using the same System.Console.dll specified in the project.json file and opens a `MemoryMappedFile` on it which errors out with: ``` The process cannot access the file 'C:\Users\schellap\.nuget\packages\runtime.win7.System.Console\4.0.0-rc2 -23811\runtimes\win7\lib\dotnet5.4\System.Console.dll' because it is being used by another process. ``` To repro, 1. Download [CLI](https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-win-x64.latest.zip) and unzip into c:\cli 2. `set DOTNET=c:\cli` 3. Unzip this zip file [temp2.zip](https://github.com/dotnet/corefx/files/128969/temp2.zip) or use below code. 4. Run repro.bat from the zip file. 5. Unexpected result. ``` public static int Main(string[] args) { MemoryMappedFile mappedFile = null; while (true) try { mappedFile = MemoryMappedFile.CreateFromFile(args[0], FileMode.Open, null, 0, MemoryMappedFileAccess.Read); Console.WriteLine(""Expected""); return 100; } catch (IOException e) { Console.WriteLine(""Unexpected "" + e.Message); } finally { if (mappedFile != null) mappedFile.Dispose(); } return -1; } ``` ``` :: populate the shared location %DOTNET%\bin\dotnet.exe restore :: compile the app %DOTNET%\bin\dotnet.exe publish :: delete system.console so shared system.console will be used if exist ""bin\Debug\dnxcore50\win7-x64\System.Console.dll"" (del ""bin\Debug\dnxcore50\win7-x64\System.Console.dll"") :: run the process bin\Debug\dnxcore50\win7-x64\temp2.exe %USERPROFILE%\.nuget\packages\runtime.win7.System.Console\4.0.0-rc2-23811\runtimes\win7\lib\dotnet5.4\System.Console.dll ``` " +6104 area-System.Threading Expose cancellation due to exceptions and breaking with Parallel loops The `Parallel` loops break when an exception is thrown or when the loop is aborted using `ParallelLoopState` members. When that happens the existing work items that are still executing have no (built-in) way to find out. They cannot cancel themselves to speed up the failure/exit case. `ParallelLoopState` should expose a `CancellationToken` that becomes signaled when the loop aborts for any reason. There is a workaround for this available: Users can catch all exceptions, signal a custom token, then `throw;`. It would be nicer and possibly faster if this was built-in, though. +6107 area-System.Net Add LocalEndPoint and RemoteEndPoint properties to TcpClient Due to https://github.com/dotnet/corefx/pull/5953 it is not possible to get this information. This is a pretty important property and I think should be added to the contract before next RC release. Obtaining IP address information is essential for application-level IP blocking/banning etc among many other things... +6109 area-System.ComponentModel Remove sealed from Phone and EmailAddress data annotation attributes Can you remove sealed from [Phone], [EmailAddress] and [Url] data annotation attributes(classes). It would be great if developers can inherit their implementation and add their own improvements to the existing functionality. > ``` > public class PhoneAttribute : DataTypeAttribute > { > public PhoneAttribute(); > > public override bool IsValid(object value); > } > ``` **And I will use it as follows:** Example: > public class PhoneLocalized : PhoneAttribute > { > public PhoneLocalized() > { > base.ErrorMessageResourceType = typeof(WebPortalResource); > base.ErrorMessageResourceName = WebPortalResourceName.PhoneWrong; > } > } **How I use Phone attrbute now in my view model:** > public class RegViewModel > { > [Phone(ErrorMessageResourceType = typeof(WebPortalResource), ErrorMessageResourceName = WebPortalResourceName.PhoneWrong)] > public string Phone { get; set; } > } **How I would use it if I was able to inherit the [Phone] attribute** > public class RegViewModel > { > [PhoneLocalized] > public string Phone { get; set; } > } +6110 area-System.Data Suspicious, likely broken checks inside System.Data.SqlClient.SqlConnectionFactory.CreateConnection() `System.Data.SqlClient.SqlConnectionFactory.CreateConnection()` goes like this: ``` SqlConnection sqlOwningConnection = owningConnection as SqlConnection; // then later... else if (owningConnection != null) { userOpt = (SqlConnectionString)(((SqlConnection)owningConnection).UserConnectionOptions); } if (owningConnection != null) { recoverySessionData = ((SqlConnection)owningConnection)._recoverySessionData; } ``` why is `owningConnection` being cast to `SqlConnection` again and irrespective to what `as SqlConnection` returned? Technically it allows for cases when `owningConnection` is non-null but if of type other than `SqlConnection` - then casts will just fail with an exception. Is that intended? Should `sqlOwningConnection` be used instead? Maybe `as` should be replaced with a cast instead? +6111 area-System.Net Fix in SafeCredentialHandle when using default credentials This PR fixes the Null Reference Exception when default credentials are used. +6113 area-System.Net Merge master to dev/negotiatestream Some changes are necessary to pick up to unblock the build. +6114 area-System.Net Negotiate Stream on Unix does not fail with invalid target `NegotiateStream.AuthenticateAsClientAsync` does not fail for invalid target. +6115 area-System.Data Suspicious timeout computations in System.Data.SqlClient.SqlInternalConnectionTds `System.Data.SqlClient.SqlInternalConnectionTds` has `LoginNoFailover()` and `LoginWithFailover()` methods which differently compute `timeoutUnitInterval`. `LoginWithFailover()` does this: ``` if (timeout.IsInfinite) { timeoutUnitInterval = checked((long)ADP.FailoverTimeoutStep * ADP.TimerFromSeconds(ADP.DefaultConnectionTimeout)); } else { timeoutUnitInterval = checked((long)(ADP.FailoverTimeoutStep * timeout.MillisecondsRemaining)); } ``` and `LoginNoFailover()` does this: ``` if (timeout.IsInfinite) { timeoutUnitInterval = checked((long)(ADP.FailoverTimeoutStep * (1000L * ADP.DefaultConnectionTimeout))); } else { timeoutUnitInterval = checked((long)(ADP.FailoverTimeoutStep * timeout.MillisecondsRemaining)); } ``` `else`-branches are exactly the same. Yet one `if` branch uses `TimerFromSeconds()` which returns number of ticks for given number of seconds and another uses multiplication by one thousand. Why the difference? +6116 area-System.Data Suspicious comment on use of GC.KeepAlive() in System.Data.SqlClient.SqlConnection.TryOpen() `System.Data.SqlClient.SqlConnection.TryOpen()` has this comment ``` // does not require GC.KeepAlive(this) because of OnStateChange ``` I don't see an explicit call to `OnStateChange()` anywhere in that method. Even if there's a call chain which leads to `OnStateChange()` from that method it'd be more reliable to put `GC.KeepAlive()` call so that code isn't broken by later changes. It's worth remembering that failing to use `GC.KeepAlive()` can causes the subtlest race conditions. +6118 area-System.Data Suspicious comment about non-existing lock in System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() `System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()` has this warning: ``` // call OnError outside of _ErrorCollectionLock to avoid deadlock ``` there's nothing called `_ErrorCollectionLock` or similarly in the codebase. The comment is full of magic. +6119 area-System.Data System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() silently swallows error conditions `System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()` has a Debug.Assert check that the errors connection is not empty and also this excellent `if`: ``` SqlConnection exception = null; //later... if (temp != null && temp.Count > 0) //craft exception } //later ... if (exception != null ) { //do a lot of cool stuff } // else do nothing ``` which means that allowing to have this function called when there're no elements in `temp` leads to a logical error - no error indication is given and the connection is just silently closed. Those `Debug.Assert`s should instead throw something like `InvalidOperationException`. +6120 area-System.Data Suspicious error object creation in System.Data.SqlClient.TdsParserStateObject.OnTimeout() "`System.Data.SqlClient.TdsParserStateObject.OnTimeout()` goes like this: ``` _internalTimeout = true; // lock protects against Close and Cancel lock (this) { if (!_attentionSent) { AddError(new SqlError( WHATEVER )); ``` If you look through usage of `_internalTimeout` elsewhere in the same class you may notice that `ReadSniError()` also checks `_internalTimeout` and optionally sets `fail` local variable. It's unclear whether this may cause `ThrowExceptionAndWarning()` being called with empty ""errors"" collection which would cause https://github.com/dotnet/corefx/issues/6119 I guess that `OnTimeout()` should add a new `SqlError()` no matter if `_attentionSent` is set. " +6122 area-System.Net Cannot locate reference to type IPAddress "Hello, I've published a .NET Core library to nuget. Here is the project.json of this package: ``` ""frameworks"": { ""dnx451"": { ""frameworkAssemblies"": { ""System"": """", ""System.Net"": """" } }, ""dnxcore50"": { ""dependencies"": { ""System.Console"": ""4.0.0-beta-23516"", ""System.Collections"": ""4.0.11-beta-23516"", ""System.Linq"": ""4.0.1-beta-23516"", ""System.Net.Sockets"": ""4.1.0-beta-23516"", ""System.Runtime"": ""4.0.21-beta-23516"", ""System.Threading"": ""4.0.11-beta-23516"" } } ``` I've installed this package from nuget to the DNX451 console app and restored nuget packages. Unfortunately I have a problem with compiling. > Reference to type 'IPAddress' claims it is defined in 'System.Net.Primitives', but it could not be found ConsoleNet451Sample` What is wrong? In my .NET Core project i have no references to System.Net.Primitives " +6126 area-System.Net Use SafeHandles in *nix Sockets implementation "Most of the *nix Sockets code was dealing directly in file descriptors, without using SafeHandles to keep the file descriptors alive during pending operations. #5750 is an example of the kind of issue this can lead to; in that case, the Socket object was collected and finalized while a pending async I/O was in progress, effectively cancelling the I/O. On Windows, pending async I/O keeps the native socket alive (unless someone explicitly calls `Dispose` on the socket), so we need to have similar behavior on *nix. The ""meat"" of the change is to track the `SafeCloseSocket` instance in `SocketAsyncContext` (instead of the file descriptor), and to pass these as SafeHandles to the interop layer whenever possible. Unfortunately, System.Native.so's functions mostly take `int32_t` file descriptor arguments. Fixing this the ""pretty"" way would involve changing all of these to `intptr_t`, and then using the normal p/invoke `SafeHandle`->`IntPtr` marshaling. But updating all of the signatures in System.Native.so is quite a project, as we'd need to keep both the old _and_ new signatures for some time. For now, I've done manual `SafeHandle`->`int` marshaling, and will open an issue for cleaning this up further. We will need to think some more about how this interacts with `SocketAsyncEngine`; I believe there is a race there that will lead to problems, but I don't think this change makes it any worse. Fixes #5750 Probably fixes #4563 Might fix #4890, #5628. @stephentoub @pgavlin @CIPop " +6128 area-Infrastructure Cannot compile CoreFX on Linux anymore "There is a MSBuild failure when you build CoreFX on Ubuntu 14.04: ``` ./build.sh Setting up directories for build Restoring NuGet.exe... Installing dotnet cli... Restoring BuildTools version 1.0.25-prerelease-00167... Initializing BuildTools... Done initializing tools. MSBUILD : error MSB1025: An internal failure occurred while running MSBuild. System.EntryPointNotFoundException: Unable to find an entry point named 'Stat' in DLL 'System.Native'. at Interop.Sys.Stat(String path, FileStatus& output) at System.IO.UnixFileSystem.DirectoryExists(String fullPath) at System.IO.Directory.Exists(String path) at Microsoft.Build.Shared.FileUtilities.LooksLikeUnixFilePath(String value) at Microsoft.Build.CommandLine.MSBuildApp.GatherCommandLineSwitches(ArrayList commandLineArgs, CommandLineSwitches commandLineSwitches) at Microsoft.Build.CommandLine.MSBuildApp.GatherAllSwitches(String[] commandLine, CommandLineSwitches& switchesFromAutoResponseFile, CommandLineSwitches& switchesNotFromAutoResponseFile) at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine) Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point named 'Stat' in DLL 'System.Native'. at Interop.Sys.Stat(String path, FileStatus& output) at System.IO.UnixFileSystem.DirectoryExists(String fullPath) at System.IO.Directory.Exists(String path) at Microsoft.Build.Shared.FileUtilities.LooksLikeUnixFilePath(String value) at Microsoft.Build.CommandLine.MSBuildApp.GatherCommandLineSwitches(ArrayList commandLineArgs, CommandLineSwitches commandLineSwitches) at Microsoft.Build.CommandLine.MSBuildApp.GatherAllSwitches(String[] commandLine, CommandLineSwitches& switchesFromAutoResponseFile, CommandLineSwitches& switchesNotFromAutoResponseFile) at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine) at Microsoft.Build.CommandLine.MSBuildApp.Main(String[] args) ./build.sh: line 100: 12558 Aborted (core dumped) ReferenceAssemblyRoot=$__referenceassemblyroot $__scriptpath/Tools/corerun $__scriptpath/Tools/MSBuild.exe ""$__buildproj"" /nologo /verbosity:minimal ""/fileloggerparameters:Verbosity=normal;LogFile=$__buildlog"" ""/l:BinClashLogger,$__binclashloggerdll;LogFile=$__binclashlog"" /t:Build /p:OSGroup=$__BuildOS /p:COMPUTERNAME=$(hostname) /p:USERNAME=$(id -un) /p:TestNugetRuntimeId=$__TestNugetRuntimeId $__UnprocessedBuildArgs ``` " +6132 area-System.Linq System.Dynamic.Utils.CollectionExtensions.ToReadOnly modifies ReadOnlyCollectionBuilder "`System.Dynamic.Utils.CollectionExtensions.ToReadOnly` contains the lines: ``` C# var builder = enumerable as ReadOnlyCollectionBuilder; if (builder != null) { return builder.ToReadOnlyCollection(); } ``` `ReadOnlyCollectionBuilder.ToReadOnlyCollection` basically does this: ``` C# val old = this._items; this._items = Array.Empty(); return old; ``` Meaning `CollectionExtensions.ToReadOnly` clears the `ReadOnlyCollectionBuilder` object passed in. As an example of the weirdness that ensues: ``` C# using System.Runtime.CompilerServices; using System.Linq.Expressions; public static class Weird { public static void Run() { var parameters = new ReadOnlyCollectionBuilder { Expression.Parameter(typeof(int), ""a""), Expression.Parameter(typeof(int), ""b"") }; var blah = Expression.Lambda(Expression.Empty(), parameters); if (parameters.Count == 0) { System.Console.WriteLine(""This line gets printed, which is strange""); } } } ``` I don't mind the weirdness of random methods being treated as a sink for `ReadOnlyCollectionBuilder` objects but it's not really clear from the documentation that this behavior is intentional. " +6134 area-System.Data System.Data.SqlClient.TdsParser contains but fails to properly own an AutoResetEvent `System.Data.SqlClient.TdsParser` has this member: ``` internal AutoResetEvent _resetConnectionEvent = null; // Used to serialize executes and call reset on first execute only. ``` `AutoResetEvent` _is_ `IDisposable`, yet nothing is done to have `Dispose()` called. +6135 area-System.Net Include NetSecurityNative for Native Build cc @vijaykota @stephentoub +6136 area-System.Threading System.Threading.ReaderWriterLockSlim.LazyCreateEvent() fails to properly own the just created event `System.Threading.ReaderWriterLockSlim.LazyCreateEvent()` goes like this: ``` EventWaitHandle newEvent; if (makeAutoResetEvent) newEvent = new AutoResetEvent(false); else newEvent = new ManualResetEvent(false); EnterMyLock(); if (waitEvent == null) // maybe someone snuck in. waitEvent = newEvent; else newEvent.Dispose(); ``` There's quite a lot of code between a new event is created _and_ its ownership is passed to the caller. If there's an exception in between the newly created event gets leaked. +6139 area-System.Net NegotiateStream Tests on Unix Introducing CI tests for NegotiateStream on Unix. This PR is introduced as two commits - 1) where the infrastructure setup (related to installing and configuring kdc) is done as a part of external script (that is run by the jenkins job). 2)where the setup is done via a test fixture. In order for the tests to run successfully, #5773 needs to be merged. cc: @stephentoub @vijaykota @shrutigarg +6142 area-System.Net ClientWebSocket Dispose AV's while operations still in-flight WCF stress hits an AV while inside an async call to SendAsync on a web socket that is already disposed. ``` 0:023> k 00 coreclr!MarshalNative::GCHandleInternalGet [f:\dd\ndp\clr\src\vm\marshalnative.cpp @ 731] 01 mscorlib_ni!System.Runtime.InteropServices.GCHandle.get_Target()+0x1e 02 System_Net_WebSockets_Client!System.Net.WebSockets.WinHttpWebSocket.SendAsync 03 System_Net_WebSockets_Client!System.Net.WebSockets.ClientWebSocket.SendAsync 04 System_Private_ServiceModel!System.ServiceModel.Channels.WebSocketTransportDuplexSessionChannel+WebSocketStream+ 05 mscorlib_ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start 06 System_Private_ServiceModel!System.ServiceModel.Channels.WebSocketTransportDuplexSessionChannel+WebSocketStream.WriteAsync 07 System_Private_ServiceModel!System.ServiceModel.Channels.TimeoutStream+d__10.MoveNext() 08 mscorlib_ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start 09 System_Private_ServiceModel!System.ServiceModel.Channels.TimeoutStream.WriteAsync 0a System_Private_ServiceModel!System.ServiceModel.Channels.TimeoutStream+ 0b mscorlib_ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start 0c System_Private_ServiceModel!System.ServiceModel.Channels.TimeoutStream.WriteAsyncInternal 0d System_Private_ServiceModel!System.ServiceModel.Channels.TimeoutStream.Write 0e System_Private_DataContractSerialization_ni!System.Xml.XmlStreamNodeWriter.WriteBytes 0f System_Private_DataContractSerialization_ni!System.Xml.XmlBinaryNodeWriter.WriteBase64Text 10 System_Private_DataContractSerialization_ni!System.Xml.XmlBaseWriter.WriteBase64(Byte[], Int32, Int32)+0x18d 11 System_Private_ServiceModel!System.ServiceModel.Dispatcher.StreamFormatter+StreamFormatterHelper.WriteValue 12 System_Private_ServiceModel!System.ServiceModel.Dispatcher.StreamFormatter.Serialize 13 System_Private_ServiceModel!System.ServiceModel.Dispatcher.OperationFormatter.SerializeBodyContents 14 System_Private_ServiceModel!System.ServiceModel.Dispatcher.OperationFormatter+OperationFormatterMessage+OperationFormatterBodyWriter.OnWriteBodyContents 15 System_Private_ServiceModel!System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents 16 System_Private_ServiceModel!System.ServiceModel.Channels.Message.OnWriteMessage 17 System_Private_ServiceModel!System.ServiceModel.Channels.BinaryMessageEncoderFactory+BinaryMessageEncoder.WriteMessage 18 System_Private_ServiceModel!System.ServiceModel.Channels.WebSocketTransportDuplexSessionChannel.OnSendCore 19 System_Private_ServiceModel!System.ServiceModel.Channels.TransportDuplexSessionChannel.OnSend 1a System_Private_ServiceModel!System.ServiceModel.Channels.OutputChannel.Send 1b System_Private_ServiceModel!System.ServiceModel.Dispatcher.DuplexChannelBinder+DuplexRequestContext.OnReply 1c System_Private_ServiceModel!System.ServiceModel.Channels.RequestContextBase.Reply 1d System_Private_ServiceModel!System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Reply 1e System_Private_ServiceModel!System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage9 1f System_Private_ServiceModel!System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage8 20 System_Private_ServiceModel!System.ServiceModel.Dispatcher.MessageRpc.Process 21 System_Private_ServiceModel!System.ServiceModel.Dispatcher.MessageRpc+Wrapper.Resume 22 System_Private_ServiceModel!System.ServiceModel.Dispatcher.ThreadBehavior.CleanThreadCallback 23 mscorlib_ni!System.Threading.Tasks.Task.Execute() ``` +6145 area-Infrastructure Re-enable unicode zip tests for Unix "Consumes the new xunit Trait ""IgnoreForCI"" for the System.IO.Compression unicode tests that are failing on Jenkins. We'll need to pass `-notrait Category=IgnoreForCI` to build.cmd in Jenkins, though I do not know the process for that. resolves #5096, #5459 @stephentoub @ellismg " +6147 area-System.Net Fix HttpClient diagnostic logging PR https://github.com/dotnet/corefx/pull/5881 Pulls the commit from https://github.com/dotnet/corefx/pull/5881, then adds one to fix it up to pass the builds and tests. cc: @nbilling Replaces https://github.com/dotnet/corefx/pull/5881 +6149 area-System.Numerics Further work after #5974 Some remaining work needs to be done, brought up in #5974 - consolidate common test data - refactor test methods (I'm gonna need some more details on this one - it was mentioned but not very much expanded on in the PR) /cc @mellinoe +6150 area-System.Linq Make Linq, Dynamic and Expressions use the same coding style as the rest of corefx At least for consistency sake. It could be as simple as running the formatter tool, but could be a fairly big change. In particular for Linq. +6153 area-System.IO System.IO.Tests.FileStream_Dispose.DisposeVirtualBehavior failed on Ubuntu Release ``` System.IO.Tests.FileStream_Dispose.DisposeVirtualBehavior [FAIL] 17:42:30 Assert.True() Failure 17:42:30 Expected: True 17:42:30 Actual: False 17:42:30 Stack Trace: 17:42:31 at System.IO.Tests.FileStream_Dispose.DisposeVirtualBehavior() ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_release_tst_prtest/1916/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 +6154 area-System.Net System.Net.Sockets.Tests.ConnectExTest.ConnectEx_Success failed on CentOS Release ``` System.Net.Sockets.Tests.ConnectExTest.ConnectEx_Success [FAIL] 17:43:39 System.Net.Sockets.SocketException : Unknown error 10048 17:43:39 Stack Trace: 17:43:39 at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) 17:43:39 at System.Net.Sockets.Socket.Bind(EndPoint localEP) 17:43:39 at System.Net.Sockets.Tests.SocketTestServerAsync.Start(EndPoint localEndPoint) 17:43:39 at System.Net.Sockets.Tests.SocketTestServer.SocketTestServerFactory(SocketImplementationType type, Int32 numConnections, Int32 receiveBufferSize, EndPoint localEndPoint, ProtocolType protocolType) 17:43:39 at System.Net.Sockets.Tests.ConnectExTest.ConnectEx_Success() 17:43:39 Finished: System.Net.Sockets.Tests ``` +6156 area-System.IO Add System.IO.* tests missing from Open As part of disabling the ToF tests, we're raising coverage in Open where there are gaps that are covered by the ToF tests. This commit gets us to parity with ToF for: - System.IO.Compression - System.IO.Compression.ZipFile - System.IO.FileSystem.DriveInfo - System.IO.FileSystem.Watcher - System.IO.MemoryMappedFiles - System.IO.Pipes - System.IO.UnmanagedMemoryStream +6158 area-System.Net KDC setup for Linux cc: @stephentoub, @bartonjs, @Priya91 - Added KDC setup script and config files (tested on Ubuntu, Debian, CentOS and Red Hat) - Changes to System.Net.Security.Tests project file so as to copy the KDC setup script and related conf files to output directory +6161 area-System.Net Enable NegotiateStream tests on OSX The script used on Linux OSs (see #6158) does not work on OSX since the latter uses Heimdal KDC. So currently the tests are blocked on OSX. The script needs to be fixed and tests need to be enabled for OSX. +6162 area-System.Numerics New method to get permutations of items in 1D collections "Getting all the possible permutations (understood in its widest sense) of elements in a given 1D collection is a somehow common requirement. For example (C# version): ``` List items = new List() { 1, 2, 3 }; //All permutations of 2 //a) No repeated elements and order doesn't matter (1-2 = 2-1) //1-2, 1-3, 2-3 //b) No repeated elements and order matters (1-2 != 2-1) //1-2, 1-3, 2-1, 2-3, 3-1, 3-2 //c) Repeated elements and order doesn't matter //1-1, 1-2, 1-3, 2-3, 2-2, 3-3 //d) Repeated elements and order matters //1-1, 1-2, 1-3, 2-1, 2-3, 2-2, 3-1, 3-2, 3-3 //All permutations of 3, etc. ``` With a constant number of elements (e.g., 3, as proposed in the aforementioned example), implementing an algorithm to deliver this functionality is quite straightforward (i.e., as many nested loops as elements). On the other hand, with a variable number of elements (e.g., any number between 3 and 10), the complexity is notably increased. Even in the first simpler scenario, being able to just type `myPermutations = myCollection.Permutations(2);` would be certainly helpful. My proposal is to create a new method for 1D collections delivering all the possible permutations among its elements. It might be called ""Permutations"" and accept various arguments, like number of items per permutation or type of permutation (as shown in the example above). At least for the first version, I think that the best format for the output variable is a dictionary of integers (key) and collection of objects (value). By assuming that the first version will be included within the `System.Array` methods, I guess that the dictionary should be of type (C#) `Dictionary`. In case of deciding to go ahead with this proposal, I would like to implement it myself. " +6167 area-Meta Add a issue_template.md and pull_request_template.md Please see https://github.com/dear-github/dear-github/issues/125 and https://news.ycombinator.com/item?id=11119411 Maybe an idea for this repo? +6172 area-System.IO System.IO.Compression DeflateStream WriteAsync doesn't use underlying WriteAsync In DeflateStream WriteAsync and FlushAsync we're using the base Stream's async operations that wrap the underlying stream's Write/Flush in a Begin/End architecture to jury-rig an async operation. That doesn't make much sense imo when our underlying stream already implements Stream and possibly has its own specific asynchronous methods that it wants to be used. We should consider modifying the DeflateStream asynchronous Write and Flush methods to do like ReadAsync does and directly call the underlying stream's asynchronous methods. If the underlying stream doesn't override WriteAsync then there will be no change from the current behavior. @stephentoub +6173 area-System.Net Race conditions in SocketAsyncEngine "In [`SocketAsyncEngine.EventLoop`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEngine.Unix.cs#L80), there is a window where `WaitForSocketEvents` has returned an event for a socket, but we have not yet deferenced the event's `GCHandle` to obtain the socket's `SocketAsyncContext`. In that window, another thread may close the socket and free the `GCHandle`. This can lead to some problems, depending on what _else_ happens in this window. The most egregious of these is probably as follows: If another `GCHandle` is allocated for another `SocketAsyncContext`, when we will misattribute the events to the new socket. For the most part this won't matter, as it will simply mean that we have to retry some operation again. But if the new socket has a pending ""connect"" operation, and we receive a ""write"" event, we'll think the new socket is connected, and there is likely no way we can recover from this. We need to find a way to synchronize the freeing of these handles with any pending calls to `WaitForSocketEvents` _or_ switch to a handle allocation mechanism that does not re-use handles. " +6174 area-System.Net Cleanup WebUtility tests - Use xunit InlineData +6180 area-System.Net HttpClient.GetAsync is slow in dnxcore50 compared to dnx461 When using GetAsync on HttpClient the request is taking considerably longer to return when running the same code targeting dnxcore50 compared to dnx461. This is from an ASP.NET 5 project, and happens when running within IIS Express and Kestrel. As an aside was hoping to debug against the core code, but even after cloning the repo, and adding the source folder to my global.json file I couldn't get VS2015 to pick up the local reference, so any help on that would be great. +6182 area-System.IO System.IO.Compression: Delegate to underlying stream async methods This commit modifies our DeflateStream FlushAsync and WriteAsync methods to delegate to the underlying stream instead of the base stream. resolves #6172 @stephentoub @ericstj +6185 area-Meta Reference assemblies need to include private struct fields Today the reference assemblies for .NET assemblies strip private fields from structs. This has an observable, and potentially dangerous, impact on project that consume them: - Allows pointers to be created for structs with fields of a reference type. - Prevents the compiler from catching cyclic struct layout problems. - Breaks C# definite assignment checking. - Allows structs using `[FieldOffset]` to verify when they should not. - Prevents developers from correctly planning for interop scenarios. More details are available [here](http://blog.paranoidcoding.com/2016/02/15/are-private-members-api-surface.html) and an example of the problems this can produce is [here](https://github.com/dotnet/roslyn/issues/8410). I understand part of the motivation for removing these fields is to keep the reference assemblies small. Keeping the fields necessitates keeping the type definitions for the types of the fields and this can cascade into many more types / members being included thus increasing size. Cutting private fields for classes is fine as it's unobservable. Unfortunately for structs fields are observable irrespective of their accessibility and must be maintained in reference assemblies. The only action I think that can be done to curtail the number of types a struct brings in is the following: > A reference assembly can represent an inaccessible struct field which is a reference type as `object`. Essentially `class`, `interface`, `delegate` and generic type parameters constrained to `class` can be transformed to object. ``` csharp // Implementation assembly private interface IBigInterface { ... } public struct S { private IBigInterface _field; } // Reference assembly public struct S { private object _field; } ``` This is unobservable to the compiler and can help limit the number of types brought it. +6186 area-System.Net Fix race in SocketAsyncEngine "In `SocketAsyncEngine.EventLoop`, there is a window where `WaitForSocketEvents` has returned an event for a socket, but we have not yet dereferenced the event's 'GCHandle' to obtain the socket's `SocketAsyncContext`. In that window, another thread may close the socket and free the `GCHandle`. This can lead to some problems, depending on what else happens in this window. The most egregious of these is probably as follows: If another `GCHandle` with the same value is allocated for another `SocketAsyncContext`, then we will misattribute the events to the new socket. For the most part this won't matter, as it will simply mean that we have to retry some operation again. But if the new socket has a pending ""connect"" operation, and we receive a ""write"" event, we'll think the new socket is connected, and there is likely no way we can recover from this. This change switches to a new handle allocation strategy that does not permit re-use of a given handle with a given event port. Handle values increase monotonically until we reach the handle's maximum size; at that point, we allocate a new event port, and start allocating handle values from zero. The old port will be freed once all of the handles associated with that port have been freed. On 64-bit platforms, the maximum handle value is `long.MaxValue`, which effectively means that we will never need to allocate a new event port. On 32-bit platforms, we top out at `int.MaxValue`, and so a long-running process may occasionally need to allocate a new port. Since this limit is reachable on 32-bit, but is in any case hard to reach, we artificially impose a very low limit in ""debug"" builds, so we can be sure to exercise the rollover to the new event port. Fixes #6173. @pgavlin, @stephentoub " +6187 area-System.Net Socket_ConnectAsyncDnsEndPoint_HostNotFound test failed with TryAgain error http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/2364/consoleFull ``` 16:18:38 System.Net.Sockets.Tests.DnsEndPointTest.Socket_ConnectAsyncDnsEndPoint_HostNotFound [FAIL] 16:18:38 SocketError: TryAgain 16:18:38 Expected: True 16:18:38 Actual: False 16:18:38 Stack Trace: 16:18:38 d:\j\workspace\windows_nt_re---5067c899\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DnsEndPointTest.cs(348,0): at System.Net.Sockets.Tests.DnsEndPointTest.AssertHostNotFoundOrNoData(SocketAsyncEventArgs args) 16:18:38 d:\j\workspace\windows_nt_re---5067c899\src\System.Net.Sockets.Legacy\tests\FunctionalTests\DnsEndPointTest.cs(196,0): at System.Net.Sockets.Tests.DnsEndPointTest.Socket_ConnectAsyncDnsEndPoint_HostNotFound() ``` +6188 area-System.Xml ReadContentAsInt18 XML test failure on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/946/console ``` 16:45:15 System.Xml.Tests.IntegerTests.ReadContentAsInt18 [FAIL] 16:45:15 Assert.Equal() Failure 16:45:15 ↓ (pos 25) 16:45:15 Expected: ···1 12:00:00 AM +00:00 16:45:15 Actual: ···1 12:00:00 AM +00:00 +00:00 16:45:15 ↑ (pos 25) 16:45:15 Stack Trace: 16:45:15 at System.Xml.Tests.IntegerTests.ReadContentAsInt18() ``` +6191 area-System.IO Add Path.CreateRelativePath method to calculate a relative path between two others "### Background Currently, there's no built-in way to recalculate a path relative to another directory in .NET. The [most popular SO answer](http://stackoverflow.com/a/340454/4077294) on the topic is over 10 lines, which is less than ideal. Also, it's pretty allocation-heavy since it instantiates 3 `Uri` objects and 3 strings. ## Proposal ### Signature The method would look like this: ``` csharp public static string CreateRelativePath(string @from, string to) ``` - **from** would be the directory path for which the newly returned path would be relative to. It could be absolute or relative. - **to** would be the path for which the returned path would point to. It could also be absolute or relative. If either paths are relative, they are resolved in relation to the process' current directory (e.g. via `Path.GetFullPath`). ### Example inputs/outputs ``` csharp Path.CreateRelativePath(@""C:\Users"", @""C:\Users\James""); // returns James Path.CreateRelativePath(""/usr/local/bin"", ""/usr/bin""); // returns ../../bin Path.CreateRelativePath(""lib"", ""../test""); // returns ../../test ``` What do you guys think? " +6195 area-Infrastructure Native code does not compile under arm64 I'm looking into it. +6196 area-System.Diagnostics Unable to register Trace Listener in CORE CLR I want to capture logs in Core CLR and want to register a trace listener for same. But I am unable to find a way to do so. This can be achieved in Full CLR in this way: ``` TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out); Debug.Listeners.Add(writer); ``` I want to achieve same thing in Core CLR but TextWriterTraceListner is not available in core CLR. How can this be achieved? +6200 area-System.Net Implementing BidirectionDictionary and using it for statusCode mapping - Added BidirectionalDictionary implementation in Collections/Generic. - Updated the logic of mapping native status code to common status codeby using BidirectionalDictionary Tested locally. cc: @stephentoub @bartonjs @vijaykota +6201 area-System.Net Remove an aggressive assert Fix for #6199 cc @stephentoub @vijaykota +6204 area-Meta Add support for SystemMessaging and SOAP Web Services Is there planned support for Queueing through the System.Messaging namespace and Soap WebServices through some other namespace? Will there be support for MSMQ, AMQP, SOAP, etc? +6205 area-System.Security S.S.C.Csp SafeHandle types have an allocating+finalizing InvalidHandle property SafeProvHandle, SafeKeyHandle, SafeHashHandle all have allocating InvalidHandle properties, but all the usages assume a static object (at least, none of them dispose the value they get back) +6210 area-System.Security Investigate handle usage in S.S.C.Csp's CapiHelper class A lot of CapiHelper was a transliteration of the crypto VM QCall functions from C++ to C#. Unfortunately, some handle management got lost in transliteration: The VM held these handles in stack-allocated classes similar to SafeHandle, which means that the dtor fired on block exit. Since the VM never visibly called CryptDestroyKey (or the appropriate function for the handle type) this caused a lot of Disposes to be converted to Finalizes. And that exposed a handle-order-free problem. (The SafeKeyHandle has an underlying relationship with the SafeProvHandle that allocated it, if the SafeProvHandle is freed first, the SafeKeyHandle free returns false. And largely they're both being finalized). +6211 area-System.Security SafeKeyHandle depends on SafeProvHandle, and should track that A SafeKeyHandle is allocated from a SafeProvHandle. The SafeKeyHandle needs the SafeProvHandle to not be freed first. So the SafeKeyHandle should track its parent/child relationship similar to how SafeInteriorHandle does. +6218 area-System.Net Lots of timeouts on Unix in DualMode connect tests Some of the tests are hanging in EndConnect, e.g. ``` 00007F6A6C94B150 00007F6A6D897DF0 System.Net.Sockets.SocketAPMExtensions.EndConnect(System.Net.Sockets.Socket, System.IAsyncResult) 00007F6A6C94B170 00007F6A6D89784B System.Net.Sockets.Tests.DualMode.DualModeBeginConnect_IPEndPointToHost_Helper(System.Net.IPAddress, System.Net.IPAddress, Boolean) 00007F6A6C94B200 00007F6A6D897718 System.Net.Sockets.Tests.DualMode.b__45_0() 00007F6A6C94B220 00007F6A6D79D36E Xunit.Assert.RecordException(System.Action) 00007F6A6C94B250 00007F6A6D79D2FB Xunit.Assert.Throws[[System.__Canon, mscorlib]](System.Action) 00007F6A6C94B280 00007F6A6D8976AA System.Net.Sockets.Tests.DualMode.BeginConnectV6IPEndPointToV4Host_Fails() ``` Others are timing out, e.g. ``` 10:32:46 System.Net.Sockets.Tests.DualMode.ConnectAsyncV4IPEndPointToV4Host_Success [FAIL] 10:32:46 Timed out while waiting for connection 10:32:46 Expected: True 10:32:46 Actual: False 10:32:46 Stack Trace: 10:32:46 at System.Net.Sockets.Tests.DualMode.DualModeConnectAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer) 10:32:46 at System.Net.Sockets.Tests.DualMode.ConnectAsyncV4IPEndPointToV4Host_Success() ``` +6220 area-Infrastructure Incremental build does not work outside Windows RIght now if you build a project twice in a row, the second build re-runs some targets that should be up-to-date already. When I build System.Private.Uri twice on Windows, almost all of the targets are skipped on the second try. On Linux, some targets are re-run. Namely, the CoreResGen and CoreCompile targets are both run again, and those are probably two of the most expensive targets, relatively speaking. This may be due to some difference in the x-plat MSBuild we are using. I have tried to use the CoreCLR version of MSBuild on Windows to see if this would reproduce, but there seems to be an issue with csc in that case (something about a COM interface cast failing). Notably, though, it DOES try to rerun the CoreResGen and CoreCompile steps like it does on Linux, and skips the same targets that it does on Linux. So I strongly suspect this is a bug in the CoreCLR-MSBuild we are using. @joperezr +6222 area-System.Net Make setup-kdc.sh executable. cc @kapilash @rahku @vijaykota Refer this [comment](https://github.com/dotnet/corefx/pull/6139#issuecomment-185936932) +6223 area-System.Console WindowAndCursorProps.Title_Set failed on Windows 10 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/91/consoleFull ``` 10:33:10 WindowAndCursorProps.Title_Set [FAIL] 10:33:10 System.IO.IOException : No process is on the other end of the pipe 10:33:10 Stack Trace: 10:33:10 d:\j\workspace\outerloop_win---0cba2915\src\System.Console\src\System\ConsolePal.Windows.cs(539,0): at System.ConsolePal.set_Title(String value) 10:33:10 d:\j\workspace\outerloop_win---0cba2915\src\System.Console\src\System\Console.cs(265,0): at System.Console.set_Title(String value) 10:33:10 d:\j\workspace\outerloop_win---0cba2915\src\System.Console\tests\WindowAndCursorProps.cs(107,0): at WindowAndCursorProps.Title_Set() ``` +6224 area-Infrastructure Windows 7 outer loop test runs failing finding vcvarsall.bat "``` 05:45:09 d:\j\workspace\outerloop_win---627ab81b>call ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" x86 && Build.cmd /p:ConfigurationGroup=Release /p:WithCategories=""InnerLoop;OuterLoop"" /p:TestWithLocalLibraries=true 05:45:09 '""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat""' is not recognized as an internal or external command, 05:45:09 operable program or batch file. ``` " +6226 area-System.IO DeletedTests.FileSystemWatcher_Deleted_Negative failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/1011/console ``` 13:40:44 DeletedTests.FileSystemWatcher_Deleted_Negative [FAIL] 13:40:44 Should not observe a deleted event within 500ms 13:40:44 Expected: False 13:40:44 Actual: True 13:40:44 Stack Trace: 13:40:44 at Utility.ExpectNoEvent(WaitHandle eventOccurred, String eventName, Int32 timeout) 13:40:44 at DeletedTests.FileSystemWatcher_Deleted_Negative() ``` +6230 area-System.Runtime Add Arm64 support in RuntimeInformation Currently there is no Arm64 support in CoreFX. I've added support in the native part (see PR #6229), but the managed part needs to go through a review process which I'm opening here. The simple change requested is to add the Arm64 enum entry to the various enum types listing all the supported platforms. However this is not sufficient, the various platform/OS implementation of RuntimeInformation needs to be updated to take into account this new value. Here is the list of C# classes that will be most likely need to be updated (list is not exhaustive): ``` src/System.Runtime.InteropServices.RuntimeInformation/ref/System.Runtime.InteropServices.RuntimeInformation.cs src/System.Runtime.InteropServices.RuntimeInformation/src/System/Runtime/InteropServices/RuntimeInformation/Architecture.cs src/System.Runtime.InteropServices.RuntimeInformation/src/System/Runtime/InteropServices/RuntimeInformation/RuntimeInformation.Windows.cs src/System.Runtime.InteropServices.RuntimeInformation/src/System/Runtime/InteropServices/RuntimeInformation/RuntimeInformation.Unix.cs src/Common/src/Interop/Windows/mincore/Interop.SYSTEM_INFO.cs src/Common/src/Interop/Unix/System.Native/Interop.GetUnixArchitecture.cs src/System.Runtime/ref/System.Runtime.cs ``` +6231 area-System.Net HTTP response Stream.ReadAsync acts differently from .NET Framework When an HTTP server closes the connection before sending all of the content, `HttpClient` in the .NET Framework throws a `System.IO.IOException`. .NET Core treats this as an acceptable end of content and throws no exception. This occurs when the server sends `Content-Length`. When using `Transfer-Encoding: chunked`, both .NET Framework and .NET Core throw a `System.IO.IOException` but the inner exceptions seem like the error is being handled differently. Oddly, when using HTTP response `Stream.Read` (not `async`), `Content-Length` works just fine in both .NET Core and .NET Framework and `Transfer-Encoding: chunked` throws in both cases. I tested .NET Core with `dnx run` and `dotnet run` and tested .NET Framework with Visual Studio 2015's F5 experience in a .csproj as well as `dnx run`. I have not tested this on any other operating system. Library versions and a minimal repro are available in this project. [CloseTooEarly.zip](https://github.com/dotnet/corefx/files/137222/CloseTooEarly.zip) This is concerning because it seems that the .NET Core HTTP client is less strict about the `Content-Length` header, which is (as far as I know) is strong assertion by the server of how much it will sent and should therefore throw to not risk data corruption. Also, there seems to be inconsistency between the `async` and non-`async` cases. +6232 area-Serialization Move CoreCLR-only serialization tests to a separate file We have internal lab run of serialization tests on corefx for NetNative which involve these tests affecting other tests because of compilation failure so this is to move them out to a separate file until that issue is fixed. @SGuyGe @shmao @zhenlan +6235 area-System.Net On Ubuntu 14.04 CoreFX build hangs while Test Execution I have been trying to build CoreFX on Ubuntu but every time the build hangs while performing Test Execution for System.Net.Security.Unit.Tests with System.TimeOutException. Only way to come out of it is to kill the process. Any idea what could be the reason? System.Net.Sockets.APMServer.Tests-> /home/clrtestbld1/git/corefx/bin/Linux.AnyCPU.Debug/System.Net.Sockets.APMServer.Tests/System.Net.Sockets.APMServer.Tests.dll xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.Sockets.APMServer.Tests Discovered: System.Net.Sockets.APMServer.Tests Starting: System.Net.Sockets.APMServer.Tests System.Net.Sockets.Tests.DualMode.ReceiveMessageFromAsyncV6BoundToSpecificV6_Success [FAIL] **System.TimeoutException : The operation has timed out.** Stack Trace: at System.Net.Sockets.Tests.DualMode.ReceiveMessageFromAsync_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) at System.Net.Sockets.Tests.DualMode.ReceiveMessageFromAsyncV6BoundToSpecificV6_Success() System.Net.Sockets.Tests.DualMode.ConnectAsyncV4IPEndPointToV6Host_Fails [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: typeof(Xunit.Sdk.TrueException): Timed out while waiting for connection Expected: True Actual: False Stack Trace: at System.Net.Sockets.Tests.DualMode.DualModeConnectAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer) at System.Net.Sockets.Tests.DualMode.b__55_0() +6239 area-System.Net Commit edbd7ba / PR 6147 is causing test failures in internal TFS builds Regarding: https://github.com/dotnet/corefx/commit/edbd7ba720699bbe20753872ac430f0b3fdaf3a9 (PR #6147) This commit seems to be causing a lot of failures in the internal TFS runs with the exception of this sort: CoreCLR: ``` Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified. File name: 'System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) ``` Net Native: ``` but encountered exception net_http_client_execution_error ---> System.Net.Http.HttpRequestException: net_http_client_execution_error ---> System.TypeInitializationException: TypeInitialization_Type_NoTypeAvailable ---> System.Exception: Method 'DiagnosticListener..ctor(string)' was not included in compilation, but was referenced in HttpHandlerToFilter..cctor(). There may have been a missing assembly. at System.Net.Http.HttpHandlerToFilter..cctor() at System.Runtime.CompilerServices.ClassConstructorRunner.Call(IntPtr pfn) at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun(Void* returnValue, StaticClassConstructionContext* pContext, IntPtr pfnCctor) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 72 Exception_EndOfInnerExceptionStack ``` These are failing from run numbers 23818.00 (ProjectK branch), and private runs (N from K) Exception in more detail: https://gist.github.com/iamjasonp/4f47c687c0a62ff16261 /cc: @davidsh @stephentoub +6240 area-Infrastructure CentOS PR jobs failing with TraceSource FileNotFoundExceptions http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_debug_tst_prtest/2057/consoleFull ``` 01:37:32 System.Diagnostics.TextWriterTraceListenerTests.CtorsDelimiterTests.TestDelimiterProperty [FAIL] 01:37:32 System.IO.FileNotFoundException : Could not load file or assembly 'System.Diagnostics.TraceSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. ``` Some kind of packaging issue? Machine configuration? We're only seeing this I believe on CentOS, and it seems to be happening on every run. cc: @chcosta, @mmitche +6241 area-System.IO FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFolder failed on OS X and Win10 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/1052/console ``` 23:01:41 CreatedTests.FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFolder [FAIL] 23:01:41 Didn't observe a symlink created event within 30000ms 23:01:41 Expected: True 23:01:41 Actual: False 23:01:41 Stack Trace: 23:01:42 at Utility.ExpectEvent(WaitHandle eventOccurred, String eventName, Int32 timeout) 23:01:42 at CreatedTests.FileSystemWatcher_Created_WatcherDoesntFollowSymLinkToFolder() ``` +6242 area-Infrastructure Ubuntu builds failing in CI (lack of diskspace?) e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/nativecomp_ubuntu_debug/628/console ``` 04:24:23 Building remotely on Azure0216060553 (auto-ubuntu1404-20160211) in workspace /mnt/j/workspace/dotnet_corefx/nativecomp_ubuntu_debug 04:24:23 [WS-CLEANUP] Deleting project workspace... 04:24:23 java.io.IOException: Failed to mkdirs: /mnt/j/workspace/dotnet_corefx/nativecomp_ubuntu_debug 04:24:23 at hudson.FilePath.mkdirs(FilePath.java:1163) 04:24:23 at hudson.model.AbstractProject.checkout(AbstractProject.java:1269) 04:24:23 at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:607) 04:24:23 at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) 04:24:23 at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529) 04:24:23 at hudson.model.Run.execute(Run.java:1738) 04:24:23 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 04:24:23 at hudson.model.ResourceController.execute(ResourceController.java:98) 04:24:23 at hudson.model.Executor.run(Executor.java:410) ``` cc: @mmitche, @Priya91 +6247 area-System.Net Use nameof for a couple MemberData tests that were missed #3199 added two new `MemberData` tests and was merged after #6209 was opened. This PR simply switches the two new `MemberData` tests over to using `nameof`. +6250 area-System.Net Change CurlHandler to use IOExceptions for Stream failures As with WinHttpHandler, CurlHandler wraps exceptions in HttpRequestException. But WinHttpHandler switches to using IOException when sending exceptions out via Stream.Read/WriteAsync. This change does the same for CurlHandler. This also adds a test for #6231, which was correctly failing on Unix but with the wrong exception type (which is now the correct type with the previous commit). cc: @davidsh, @joelverhagen, @ericeil, @kapilash +6255 area-System.Net SendReceive_PartialMessage_Success failed on Windows in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/2534/consoleFull ``` 13:13:19 System.Net.WebSockets.Client.Tests.ClientWebSocketTest.SendReceive_PartialMessage_Success(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] 13:13:19 System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response 13:13:19 Stack Trace: 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:13:19 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 13:13:19 d:\j\workspace\windows_nt_de---06b7984d\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinHttpWebSocket.cs(475,0): at System.Net.WebSockets.WinHttpWebSocket.d__32.MoveNext() 13:13:19 --- End of stack trace from previous location where exception was thrown --- 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 13:13:19 d:\j\workspace\windows_nt_de---06b7984d\src\System.Net.WebSockets.Client\tests\ClientWebSocketTest.cs(195,0): at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__16.MoveNext() 13:13:19 --- End of stack trace from previous location where exception was thrown --- 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:13:19 --- End of stack trace from previous location where exception was thrown --- 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:13:19 --- End of stack trace from previous location where exception was thrown --- 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:13:19 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:13:19 Finished: System.Net.WebSockets.Client.Tests ``` +6258 area-System.Linq Infinite loop in dynamic dispatch code when calling through contravariant delegate When upgrading from 23803 to 23818 of System.Linq.Expression.dll we are now seeing an infinite loop in the dynamic dispatch code. I have not been able to come up with a minimal repro that I can attach to this bug, but I have a trivial one that I can email anyone who wants it. In the bug we are calling into a delegate of type Action<... my-class>, and the target of the delegate uses an interface for the last argument. If I change the delegate to also use an interface, the issue goes away. The infinite loop is in code labeled as 'Lightweight Function' by the managed debugger: `System.Dynamic.Runtime.dll!System.Runtime.CompilerServices.CallSiteBinder.BindCore, string, object, OpenDebug.DispatchResponder>>(System.Runtime.CompilerServices.CallSite, string, object, OpenDebug.DispatchResponder>> site, object[] args) Line 133` <-- This function is called infinately `[Lightweight Function]` **<-- Hang here** `OpenDebugAD7.dll!OpenDebug.DispatcherProtocol.Dispatch(string req)` <-- My code calling delegate.Invoke Looking at the stack in Windbg, I think Windbg gives the method this name: `26 00000027`ac5fec80 0000019d`bcc88cc8 DynamicClass.CallSite.Target(System.Runtime.CompilerServices.Closure, System.Runtime.CompilerServices.CallSite, System.Action'3, System.String, System.Object, OpenDebug.DispatchResponder)+0x2c2` This looks similar to #5610, but I should have the fix for that and I am still seeing the problem. +6262 area-System.Net Simplify locking / extend scope of _queueLock While investigating the test failures due to #6126, we noticed that there are accesses to the operation queues outside of _queueLock. This creates a race with TryBeginOperation, such that beginning a new operation while completing an existing one can corrupt the queue. After extending the scope of _queueLock in HandleEvents, I noticed that it became largely redundant with _closeLock. So we also remove _closeLock, and just use _queueLock for everything. As far as I can tell, the only scenario this will impact is when beginning operations while simultaneously closing the socket, which will have other problems anyway. @stephentoub @pgavlin +6268 area-System.Net PostNonRewindableContentUsingAuth_NoPreAuthenticate_ThrowsInvalidOperationException failed in CI See the failure [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_debug_tst_prtest/2123/testReport/junit/System.Net.Http.Functional.Tests/PostScenarioTest/PostNonRewindableContentUsingAuth_NoPreAuthenticate_ThrowsInvalidOperationException_serverUri__http___corefx_net_cloudapp_net_Echo_ashx_auth_basic_user_user1_password_password1_/). Maybe this is due to a network hiccup? +6269 area-System.Net Improve several areas of CurlHandler error handling While tracking down an issue related to exception handling in CurlHandler, I fixed up a few issues: - On older libcurl's curl_multi_perform can return an error code that means to retry curl_multi_perform, but we were treating it as an actual error. - Several places we were creating an HttpRequestException with a null inner exception, even if we had additional information about the cause. I've fixed those call sites to include an appropriate inner exception. - Cleaned up a few error messages. - Fixed one place where I was overzealous in mapping exceptions to IOException cc: @ericeil, @kapilash Fixes https://github.com/dotnet/corefx/issues/6268 +6277 area-System.Net Add more Http response stream tests Building on PR #6250, added more response stream tests dealing with invalid response body transfer semantics. I still plan to move the localhost server (recently added to these Http tests) to be Azure based.in the near future. +6281 area-System.Net Rewrite WebUtility.HtmlEntities to minimize array/substring allocations I was browsing the `WebUtility` source code recently and noticed there a huge static array allocation that was never actually used. In addition to that, all of the strings in the array were being `Substring`'d in a loop to initialize a dictionary, which added even more unnecessary allocations. I [rewrote](https://gist.github.com/jamesqo/dda32f6e7a4154053862) the code so it straight-up initializes the dictionary as a literal, using C# 6's new dictionary initializers feature. The new code also passes in a predefined capacity to the dictionary, so there's no resizing taking place when elements are added. +6285 area-System.Net Fix WinHttpHandler memory leaks The WinHttpHandler was leaking a lot of objects in cases where an explicit Dispose was not done for the various HttpResponseMessage related objects. It was leaking because there was a cycle between the strong GCHandle of WinHttpRequestState and the objects contained within it. To break the cycle, we now clear out object references within WinHttpRequestState that are no longer needed once the SendRequest phase is completed. There was also a leak of a pinned GCHandle and related memory in WinHttpResponseStream. The free'ing of that allocated GCHandle was done in the Dispose(bool disposing) method. However, it wasn't being called when disposing=false (i.e. a finalizer). Since it is a pinned GCHandle, it needed to be freed in all cases. Fixes #5927. +6291 area-System.Net Response stream reads should return error for insufficient data "WinHttpResponseStream was not tracking the amount of data read when the response used 'Content-Length' semantics. So, if the amount of bytes read from the server was less than expected, we did not return an error. This was different behavior than .NET Framework. Fixed WinHttpResponseStream so that it will track the total number of bytes read and compare it to the expected number of bytes if using 'Content-Length' semantics. Note that we don't do this checking if the HTTP request is a HEAD request. That is because the definition of that HTTP verb is to return headers ""as-if"" it was returning a real response body. So, the 'Content-Length' might be set but there is no response body for a HEAD request. For cases of using 'Transfer-Encoding: chunked' semantics for the response body, there is already error checking at the lower HTTP layer in WinHTTP. Fixes #6231. " +6302 area-System.Security PublicKeyTests.TestKey_RSA failure on Unix in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_release_tst_prtest/1959/console ``` 17:10:15 System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestKey_RSA [FAIL] 17:10:15 Assert.Equal() Failure 17:10:15 Expected: Byte[] [232, 175, 92, 162, 32, ...] 17:10:15 Actual: Byte[] [0, 0, 0, 0, 0, ...] 17:10:15 Stack Trace: 17:10:16 at System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestKey_RSA() ``` +6306 area-System.Net System.Net.Sockets.APMServer.Tests Hang on OSX in CI The [test run hung](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/1251/console) and the job was aborted. > Build timed out (after 120 minutes). Marking the build as aborted. > 22:43:45 ./run-test.sh: line 131: 529 Terminated: 15 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true > 22:43:45 error: One or more tests failed while running tests from 'System.Net.Sockets.APMServer.Tests'. Exit code 143. +6308 area-System.Numerics Additional overloads in some System.Math methods to support more types NOTE: I wrote a first ticket in CoreCLR (https://github.com/dotnet/coreclr/issues/3204), even did a PR for `int.Round` (https://github.com/dotnet/coreclr/pull/3232); but I have been suggested to move it here. For the time being, I will keep some additional comments in that CoreCLR issue, so you might want to take a look there. `Math.Round` can only deal with `decimal` and `double` arguments, what is quite arbitrary as far as these functionalities might also be used with integer types (e.g., `int` or `long`). There is no difference between removing all the digits after 6 in 1.5658 and in 15658, but .NET treats both situations differently. In the first case, it is possible to use `Math.Round` right away; in the second case, two additional steps would be required: either converting to a decimal type or to string and use `Substring`; and then back to the original integer type. Other function with restricted input types is `Math.Pow` which only accepts `double` type inputs. I have been in quite a few scenarios where I had to convert `decimal` variables to `double` (and then back to `decimal`) just to use this function. Equivalent ideas are applicable to other `System.Math` methods which only work with `double` variables. In case of deciding to go ahead and by assuming that such an option is possible, I would like to take care of the actual (in-principle-C#) implementation myself. +6309 area-System.Threading RunAsyncTaskAwaiterTests failed in OuterLoop CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/97/consoleFull ``` 22:53:45 System.Threading.Tasks.Tests.TaskAwaiterTests.RunAsyncTaskAwaiterTests [FAIL] 22:53:45 After completion, excepted all GetResult calls to completed successfully 22:53:45 Expected: True 22:53:45 Actual: False 22:53:45 Stack Trace: 22:53:52 d:\j\workspace\outerloop_win---0cba2915\src\System.Threading.Tasks\tests\System.Runtime.CompilerServices\TaskAwaiterTests.cs(204,0): at System.Threading.Tasks.Tests.TaskAwaiterTests.RunAsyncTaskAwaiterTests() ``` +6311 area-System.Net DnsEndPointTest.Socket_StaticConnectAsync_HostNotFound timed out in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/rhel7.2_debug_tst/38/console ``` 08:17:47 System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_HostNotFound [FAIL] 08:17:47 Timed out while waiting for connection 08:17:47 Expected: True 08:17:47 Actual: False 08:17:47 Stack Trace: 08:17:47 at System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_HostNotFound() ``` +6312 area-System.Net [Apline] Need a better approach to fix CMSG_NXTHDR on Alpine Linux (musl-libc) The current master ([`5b793bc`](https://github.com/dotnet/corefx/tree/5b793bc735d6a63b7f4be466df3351008b27a426)) breaks the native build (`corefx/build.sh native`) at 70% on Alpine Linux with the following error: ``` ash /root/corefx/src/Native/System.Native/pal_networking.cpp:1311:31: error: cast from 'unsigned char *' to 'struct cmsghdr *' increases required alignment from 1 to 4 [-Werror,-Wcast-align] controlMessage = CMSG_NXTHDR(&header, controlMessage)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/sys/socket.h:267:10: note: expanded from macro 'CMSG_NXTHDR' ((struct cmsghdr *)__CMSG_NEXT(cmsg)))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` Code comparison between glibc and musl-libc: - musl-libc: https://fossies.org/dox/musl-1.1.14/include_2sys_2socket_8h.html#a4f70853d9633fb80428189cd7bb292d0 (click on `__CMSG_NEXT` in that macro to see `unsigned char*` cast) - glibc: http://lxr.free-electrons.com/source/include/linux/socket.h#L89 (click on `__cmsg_nxthdr` in the called macro to notice that it returns `cmsghdr *`) https://github.com/dotnet/corefx/pull/6263 provides a workaround to turn that warning off inline for this particular call to macro and then restores it using Clang's `pragma`tic directives. The warning disabling only affects the musl-libc systems (enclosed by `#ifndef __GLIBC__`). This probably needs to be fixed upstream. cc @pgavlin, @benpye, @ncopa +6313 area-System.Globalization Is DateTimeFormatInfo.ReadOnly(readonlyDtfi) sameness guaranteed? "In reviewing the test refactoring for DateTimeFormatInfo, I was about to ask if the test for ReadOnly should be asserting NotSame, Same, or a contextual-version thereof. MSDN doesn't describe; I can certainly see what the implementation does; but the question is: ""is the sameness guaranteed?"" If so, we should test it. If we guarantee it's a copy when !IsReadOnly then we should assert NotSame, and then mutuate the original and see that it's not preserved. NotSame on !IsReadOnly => IsReadOnly seems like a pretty obvious guarantee to me (and that it's not receptive to mutation on the original), but since I wasn't sure about the already-is-read-only case I decided that a standalone issue was probably best. " +6315 area-System.Runtime new Guid(byte[]) should explicitly test byte ordering The only tests for the byte array ctor for Guid use Guid.ToByteArray and round-trip the value. While this is good (proving we read what we write), there is an order to that input byte array, and we should verify it against a static array / static GUID. +6316 area-System.Runtime Guid.TryParseExact throws FormatException for certain inputs "## TryParseExact with hex specifier ""X"" or TryParse - `Guid.TryParseExact(input, ""X"")` - `Guid.TryParse(input)` The following values of `input` throw a FormatException: - `{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}}` - `{0xdddddddd, 0xdddd, 0xdddd,{0xdd0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}}` - `{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd0xdd,0xdd,0xdd,0xdd,0xdd}}` - `{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd0xdd,0xdd,0xdd,0xdd}}` - `{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd0xdd,0xdd,0xdd}}` - `{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd0xdd,0xdd}}` Interestingly, `{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd0xdd}}` does NOT throw This seems to be due to incorrect parsing of `0xdd0xdd` These do not throw for any other specifiers " +6318 area-System.Collections What about adding a ConcurrentSet? The need for it comes up every now and then. To me it would make sense next to `ConcurrentDictionary` +6321 area-System.Runtime TaskAwaiterTests.OnCompleted_CompletesInAnotherTaskScheduler failed in CI It looks like a few of these new test cases hit some issue on an OSX release run: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/1222/ Four of the six test cases failed, but the other two passed. It looks like it's intermittent as other recent runs have succeeded. The assertion hit is on line 114, and indicates that the task wasn't run on the other scheduler, when it should have been. @stephentoub +6322 area-System.Net Reduce CurlHandler header parse allocations Use existing known header and reason phrase instances instead of always allocating new strings (similar to #3199 for WinHttpHandler) and avoid unnecessary intermediate string allocations. cc: @stephentoub, @kapilash, @davidsh (@stephentoub, is there a good way to profile the allocations for a before/after comparison on Unix?) Note: I only tested this on OS X as I didn't have a Linux environment readily available; relying on CI for the other *nixes. +6329 area-System.Net Use a random password for NegotiateStream Kerberos tests This is with reference to https://github.com/dotnet/corefx/pull/6158#discussion_r53619572 Instead of hardcoding the password in setup-kdc.sh a random password can be generated which can be shared with the test code. This would improve the security of a dev machine where the script is run +6331 area-System.Xml XmlWriterApi TCEOFHandling test failing on Unix It's not handling new lines properly. +6333 area-Infrastructure GenerateRuntimeDependencies failed in CI due to runtime.json file "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/99/consoleFull ``` d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: The ""GenerateRuntimeDependencies"" task failed unexpectedly. [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: System.IO.IOException: The process cannot access the file 'd:\j\workspace\outerloop_win---0cba2915\bin\pkg\specs\System.Net.Primitives\runtime.json' because it is being used by another process. [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at System.IO.FileStream..ctor(String path, FileMode mode) [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.Packaging.RuntimeFileFormatter.WriteRuntimeFile(String filePath, RuntimeFile runtimeFile) [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.Packaging.GenerateRuntimeDependencies.Execute() [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] 07:11:23 d:\j\workspace\outerloop_win---0cba2915\Tools\Packaging.targets(707,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Primitives\pkg\System.Net.Primitives.pkgproj] ``` " +6338 area-System.Numerics Complex.Equals(object) and Complex.Equals(Complex) do not always return the same result ## Context Complex provides 3 main ways of testing equality of a complex: - `Complex.Equals(Complex)` - `Complex.Equals(object)` - `==(Complex, Complex)` ## Problem ``` public override bool Equals(object obj) { if (!(obj is Complex)) return false; return this == ((Complex)obj); // Problem is here. } public bool Equals(Complex value) { return _real.Equals(value._real) && _imaginary.Equals(value._imaginary); } public static bool operator ==(Complex left, Complex right) { return left._real == right._real && left._imaginary == right._imaginary; } ``` The problem is that `Equals(object)` calls the `==` operator instead of the `Equals(Complex)` method. Note that the `==` operator and `Equals(Complex)` method have different code, and this causes discrepancies. The problem mainly occurs with complex numbers containing `double.NaN`, as `double.NaN == double.NaN` returns `false`, but `double.NaN.Equals(double.NaN)` returns `true`. ## Example As such, we get a strange example where the following code doesn't work as expected: ``` Complex complex1 = new Complex(double.NaN, double.NaN); Complex complex2 = new Complex(double.NaN, double.NaN); complex1.Equals(complex2); // True as expected complex1.Equals((object)complex2); // False as unexpected complex1 == complex2; // False as expected ``` ## Solution Fix the implementation of `Equals(object)` to the following: ``` public override bool Equals(object obj) { if (!(obj is Complex)) return false; return Equals((Complex)obj); } ``` This may have breaking change implications, but IMO should be fixed. I would be happy to send in a PR fixing this. +6345 area-System.Net Stability improvements for *nix Sockets This PR contains the changes from #6126 and #6186, plus fixes for issues with both of those PRs. #6126 had to be reverted, so this undoes the revert and fixes the issues that were leading to tests crashing/hanging. #6186 turns out to fix one reason tests were crashing/hanging, so it needs to be folded into this PR prior to merging. @pgavlin @stephentoub Fixes #5750 Fixes #6173 Fixes #4563 Fixes #4890 Fixes #5628 Fixes #6311 Fixes #6306 Fixes #6154 +6347 area-Meta Add template for issues and pull requests Fixes #6167. @weshaggard @stephentoub @GerjanOnline Follows GitHub's suggestion documented here: - [Issue Templates](https://help.github.com/articles/creating-an-issue-template-for-your-repository/) - [Pull Request Templates](https://help.github.com/articles/creating-a-pull-request-template-for-your-repository/) +6351 area-System.Net Bug setting host to partial IPV6 address in UriBuilder "## Problem This is the code for the setter of a host in UriBuilder: ```c# public string Host { get { return _host; } set { if (value == null) value = string.Empty; _host = value; //probable ipv6 address - Note: this is only supported for cases where the authority is inet-based. if (_host.IndexOf(':') >= 0) { //set brackets if (_host[0] != '[') _host = ""["" + _host + ""]""; } _changed = true; } } ``` The setter for `UriBuilder.Host` checks to see if an IPV6 address has been provided. It follows the following alogrithm - If the host is an IPV6 address and has does not start with a square bracket, add square brackets around the host. The problem occurs when the host already has a square bracket at the end, but not at the start. ## Example ``` UriBuilder uriBuilder = new UriBuilder(); uriBuilder.Host = ""::1]""; uriBuilder.Host; // Expects ""[::1]"" but gets: ""[::1]]"" ``` ## Solution Change the code to: ``` if (_host[0] != '[') _host = ""["" + _host; if (_host[host.Length - 1] != ']') _host = _host + ""]"" ``` This does have breaking change implications, and may be considered an unnecessary change, as the input host string is invalid, so strange behavior could be expected. If fixing this seems like a good idea, I will submit a PR fixing it." +6352 area-System.Net Fix binclash in System.Net.Primitives cc @ericstj, @stephentoub +6353 area-System.Net UriBuilder needs some tests ## Problem UriBuilder currently does not have any tests in corefx. This means that changes to the class cannot be tested (especially if issues like #6351 and #3646 are fixed). Furthermore, it reduces the coverage report for System.Private.Uri. ## Solution I have sent a PR with a complete set of tests covering 100% of UriBuilder. This is PR #6354 +6354 area-System.Net Add Uri Builder tests - Cleans up some dead code from UriBuilder. - Adds tests for all members of UriBuilder, bringing code coverage up to 100%. Fixes #6353 /cc @davidsh @stephentoub +6355 area-System.Data NullReferenceException in SmiMetaData.cs when running DataStreamTest System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\CoreFX\src\System.Data.SqlClient\src\Microsoft\SqlServer\Server\SmiMetaData.cs(294,0): at Microsoft.SqlServer.Server.SmiMetaData..ctor(SqlDbType dbType, Int64 maxLength, Byte precision, Byte scale, Int64 localeId, SqlCompareOptions compareOptions, String udtAssemblyQualifiedName, Boolean isMultiValued, IList`1 fieldTypes, SmiMetaDataPropertyCollection extendedProperties) D:\CoreFX\src\System.Data.SqlClient\src\Microsoft\SqlServer\Server\SmiMetaData.cs(568,0): at Microsoft.SqlServer.Server.SmiExtendedMetaData..ctor(SqlDbType dbType, Int64 maxLength, Byte precision, Byte scale, Int64 localeId, SqlCompareOptions compareOptions, String udtAssemblyQualifiedName, Boolean isMultiValued, IList`1 fieldMetaData, SmiMetaDataPropertyCollection extendedProperties, String name, String typeSpecificNamePart1, String typeSpecificNamePart2, String typeSpecificNamePart3) D:\CoreFX\src\System.Data.SqlClient\src\Microsoft\SqlServer\Server\SmiMetaData.cs(535,0): at Microsoft.SqlServer.Server.SmiExtendedMetaData..ctor(SqlDbType dbType, Int64 maxLength, Byte precision, Byte scale, Int64 localeId, SqlCompareOptions compareOptions, Boolean isMultiValued, IList`1 fieldMetaData, SmiMetaDataPropertyCollection extendedProperties, String name, String typeSpecificNamePart1, String typeSpecificNamePart2, String typeSpecificNamePart3) D:\CoreFX\src\System.Data.SqlClient\src\Microsoft\SqlServer\Server\SmiMetaData.cs(743,0): at Microsoft.SqlServer.Server.SmiStorageMetaData..ctor(SqlDbType dbType, Int64 maxLength, Byte precision, Byte scale, Int64 localeId, SqlCompareOptions compareOptions, Boolean isMultiValued, IList`1 fieldMetaData, SmiMetaDataPropertyCollection extendedProperties, String name, String typeSpecificNamePart1, String typeSpecificNamePart2, String typeSpecificNamePart3, SqlBoolean isKey) D:\CoreFX\src\System.Data.SqlClient\src\Microsoft\SqlServer\Server\SmiMetaData.cs(793,0): at Microsoft.SqlServer.Server.SmiQueryMetaData..ctor(SqlDbType dbType, Int64 maxLength, Byte precision, Byte scale, Int64 localeId, SqlCompareOptions compareOptions, Boolean isMultiValued, IList`1 fieldMetaData, SmiMetaDataPropertyCollection extendedProperties, String name, String typeSpecificNamePart1, String typeSpecificNamePart2, String typeSpecificNamePart3, SqlBoolean isKey) D:\CoreFX\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlDataReader.cs(301,0): at System.Data.SqlClient.SqlDataReader.GetInternalSmiMetaData() D:\CoreFX\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlCommand.cs(1259,0): at System.Data.SqlClient.SqlCommand.CompleteXmlReader(SqlDataReader ds, Boolean async) D:\CoreFX\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlCommand.cs(1122,0): at System.Data.SqlClient.SqlCommand.ExecuteXmlReader() D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(555,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.ExecuteXmlReaderTest(String connectionString) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(60,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer(String connectionString, Boolean usingNamePipes) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(44,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient() +6361 area-Infrastructure BinClash logger doesn't detect clash if PkgProj doesn't set TargetPath BinClash logger doesn't catch a clash if PkgProj's don't set TargetPath. See https://github.com/dotnet/corefx/pull/6352 +6370 area-System.Net Add Uri tests The tests for Uri were previously pretty poor, but I am aware that the internal tests are more comprehensive. Therefore, there is no harm in improving the tests in the open. This PR overhauls the existing test framework for System.Uri. Existing tests, albeit far and few between, were combined into the new, and should be easy to find. Old Coverage: 41% line, 35% branch New Coverge: 72.8% line, 67.3% branch **Increase: 77% line, 92% branch** This lets us achieve the following improvements: - Easier to add new tests, especially for the constructors and methods following the template I provided - Split between test data and test code - New tests across the board: creating both valid and invalid IPV4, IPV6, UNC, File, Relative, URN and Unknown uris was the main focus. This PR has no functional changes /cc @stephentoub @davidsh +6371 area-System.Threading Reset certain thread-local state after thread pool work item execution "It can sometimes happen by accident that a thread pool work item sets some thread-local state such as: - SynchronizationContext.Current - HostContext (used for HttpContext.Current) - Thread priority - Thread name - Thread culture - Thread principal - Others? Failing to reset that state causes non-deterministic ""leaks"" that are very hard to diagnose. This is especially relevant in ASP.NET and in unit testing scenarios. The thread pool is a global process resource. Generally, code should play nice with such resources but bugs should not be catastrophic. The .NET thread pool should reset all of these items (where practical) after the execution of each work item. I see no valid scenario why someone might want to set these values and have them persist because there is no way to make that deterministic. Regarding the above items I could not find documentation that specifies which one of them are reset or are not reset. This behavior should be documented and contractually guaranteed. Ideally, setting `Thread` properties should fail outright but that might not be possible for compatibility reasons. The behavior changes proposed here should work for the legacy thread pool API as well as for the TPL. I have not added the execution context and logical call context to the list because I lack the technical understanding to recommend anything about them. Maybe they should be reset as well. I have not added `ThreadStatic` and other forms of thread-static variables because those are often useful for caching scenarios. Resetting them would be a bad idea. " +6373 area-System.Security Followup on imported TODOs in CapiHelper CapiHelper.cs was migrated in with several TODOs. Many of them are being removed right now, but there are three that are going to survive immediate pending changes: CapiHelper.GetKeyParameter: > //ToDO : Check if we should use silent flag here as this might not run > //downlevel so we might want to use silent flag CapiHelper.ValidateCspFlags: > //TODO : I don't think we need following commented code. Leaving it now for confirming the same > // during code review. Reviewers please let me kn know? CapiHelper.DecryptKey: > Array.Reverse(dataTobeDecrypted); //ToDO: Check is this is really needed? To be confirmed with tests - [ ] GetKeyParameter - [ ] ValidateCspFlags - [ ] DecryptKey +6374 area-System.Globalization When does core clr throw CultureNotSupported exception? "On windows, `new CultureInfo(""zh-CHS"")` or `new CultureInfo(""Shared"")` (bogus name) throw a CultureNotFoundException. On OSX they don't. However, ""zh-CHS"" was obtained by calling `CultureInfo.GetCultures(CultureTypes.AllCultures)` on full framework. reading #1669 I get the understanding that any string is now fair game and should be supported. In light of this, when can one expect CultureNotFoundException and why is zh-CHS not recognized on windows, when the full framework API returns it as supported? " +6375 area-System.Data Failing test with Japanese characters in SqlTypeTest.SqlStringValidComparisonTest on Linux System.Data.SqlClient.ManualTesting.Tests.SqlTypeTest.SqlStringValidComparisonTest [FAIL] Error (Default Comparison Option with Operator): ファズ・ギター and ファズ・ギター should be equal Expected: True Actual: False Stack Trace: at System.Data.SqlClient.ManualTesting.Tests.SqlTypeTest.SqlStringDefaultCompareOptionTest(Int32 localeID) at System.Data.SqlClient.ManualTesting.Tests.SqlTypeTest.SqlStringValidComparisonTest() +6377 area-System.Console Delete key on OS X not interpreted as `Backspace` "> `Key` is a `ConsoleKey`, `^X` is a key code, 'key' is an `stty` special character, and ""key"" is a physical keyboard key On OS X, with `TERM=xterm256color` when the system Terminal is left to its defaults, the ""delete"" key (used as ""backspace"") sends `^?`, which according to `stty -a` ought to be interpreted as 'erase' (as in the backspace action, or `Backspace`), but instead gets interpreted by `Console.ReadKey()` as `Delete` (as in the forward delete action). Note that ""fn-delete"" is interpreted the same way (but _should_ be the only one interpreted this way). On Linux (over SSH and RDP), with the same `TERM`, the key code being sent by my MacBook's ""delete"" key still ends up as `^?`, but it is interpreted correctly as `Backspace`. `System.Console` is not the only place where I've seen OS X's Terminal defaults cause funny things with the ""delete"" key. In fact, it seems to be so much an issue that Terminal has a setting to have ""delete"" send `^H`, which is then interpreted as `Backspace`. However, it would be nice not to have to do this :smile: and I sure would like to know how to fix it. " +6381 area-System.Data Incorrect number of pools in ConnectionPool.ClearAllPoolsTest System.Data.SqlClient.ManualTesting.Tests.ConnectionPool.ConnectionPool_Nwnd9Mars [FAIL] Incorrect number of pools exist Expected: True Actual: False Stack Trace: at System.Data.SqlClient.ManualTesting.Tests.ConnectionPool.ClearAllPoolsTest(String connectionString) at System.Data.SqlClient.ManualTesting.Tests.ConnectionPool.RunDataTestForSingleConnString(String tcpConnectionString, String npConnectionString, Boolean serverIsKatmaiOrLater) at System.Data.SqlClient.ManualTesting.Tests.ConnectionPool.ConnectionPool_Nwnd9Mars() +6382 area-System.Data Exception caused by connection closed in DDAsyncTest on Linux System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.ExecuteCommand_WithSharedConnection_ShouldPerformAsyncByDefault [FAIL] System.AggregateException : One or more errors occurred. (Invalid operation. The connection is closed.) ---- System.InvalidOperationException : Invalid operation. The connection is closed. Stack Trace: at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Threading.Tasks.Task.WaitAll(Task[] tasks) at System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.ExecuteCommand_WithSharedConnection_ShouldPerformAsyncByDefault() ----- Inner Stack Trace ----- at System.Data.SqlClient.SqlConnection.GetOpenTdsConnection() at System.Data.SqlClient.SqlCommand.WaitForAsyncResults(IAsyncResult asyncResult) at System.Data.SqlClient.SqlCommand.InternalEndExecuteReader(IAsyncResult asyncResult, String endMethod) at System.Data.SqlClient.SqlCommand.EndExecuteReaderInternal(IAsyncResult asyncResult) at System.Data.SqlClient.SqlCommand.EndExecuteReaderAsync(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) +6383 area-System.Data StateObj still has outstanding writes in AsyncTest.FailureTest System.Data.SqlClient.ManualTesting.Tests.AsyncTest.FailureTest [FAIL] FAILED: Thrown exception for ExecuteReaderAsync was not an InvalidOperationException: System.Diagnostics.Debug+DebugAssertException: StateObj still has outstanding async writes ``` at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Data.SqlClient.TdsParserStateObject.AssertStateIsClean() at System.Data.SqlClient.TdsParser.PutSession(TdsParserStateObject session) at System.Data.SqlClient.TdsParserStateObject.CloseSession() at System.Data.SqlClient.SqlCommand.PutStateObject() at System.Data.SqlClient.SqlCommand.ReliablePutStateObject() at System.Data.SqlClient.SqlCommand.BeginExecuteReaderInternal(CommandBehavior behavior, AsyncCallback callback, Object stateObject, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.BeginExecuteReaderAsync(CommandBehavior behavior, AsyncCallback callback, Object stateObject) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory`1.FromAsync[TArg1](Func`4 beginMethod, Func`2 endMethod, TArg1 arg1, Object state) at System.Data.SqlClient.SqlCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at System.Data.SqlClient.SqlCommand.ExecuteReaderAsync() at System.Data.SqlClient.ManualTesting.Tests.AsyncTest.FailureTest() ``` +6384 area-Infrastructure Lots of restore errors in various corefx builds "e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/2746/consoleFull ``` 17:26:53 [01:26:53.91] Restoring all packages... 17:52:45 EXEC : error : Unable to resolve runtime.win7.System.Net.Requests (>= 4.0.11-rc3-23818) for DNXCore,Version=v5.0 (win7-x64). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] 17:52:45 EXEC : error : Unable to resolve runtime.win7.System.Net.Requests (>= 4.0.11-rc3-23818) for DNXCore,Version=v5.0 (win7-x86). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] 18:10:00 d:\j\workspace\windows_nt_de---06b7984d\build.proj(54,5): error MSB3073: The command """"d:\j\workspace\windows_nt_de---06b7984d\Tools/dotnetcli/bin/dotnet.exe"" restore --packages ""d:\j\workspace\windows_nt_de---06b7984d\packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-corefxtestdata/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://www.nuget.org/api/v2/ ""d:\j\workspace\windows_nt_de---06b7984d\/src"" ""d:\j\workspace\windows_nt_de---06b7984d\/pkg"""" exited with code 1. 18:10:00 [02:10:01.03] Restoring all packages...Done. 18:10:08 Microsoft.CSharp -> d:\j\workspace\windows_nt_de ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_debug_bld/654/consoleFull ``` 17:33:13 [01:33:12.87] Restoring all packages... 18:01:04 EXEC : error : Unable to resolve runtime.unix.System.Diagnostics.Debug (>= 4.0.11-rc3-23818) for DNXCore,Version=v5.0 (osx.10.10-x64). [d:\j\workspace\ubuntu_debug_bld736a750a\build.proj] 18:01:04 EXEC : error : Unable to resolve runtime.unix.System.Diagnostics.Debug (>= 4.0.11-rc3-23818) for DNXCore,Version=v5.0 (ubuntu.14.04-x64). [d:\j\workspace\ubuntu_debug_bld736a750a\build.proj] 18:06:29 d:\j\workspace\ubuntu_debug_bld736a750a\build.proj(54,5): error MSB3073: The command """"d:\j\workspace\ubuntu_debug_bld736a750a\Tools/dotnetcli/bin/dotnet.exe"" restore --packages ""d:\j\workspace\ubuntu_debug_bld736a750a\packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-corefxtestdata/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://www.nuget.org/api/v2/ ""d:\j\workspace\ubuntu_debug_bld736a750a\/src"" ""d:\j\workspace\ubuntu_debug_bld736a750a\/pkg"""" exited with code 1. 18:06:29 [02:06:28.82] Restoring all packages...Done. ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_debug_bld/654/consoleFull ``` 16:00:21 [00:00:20.19] Restoring all packages... 16:04:57 EXEC : error : Unable to resolve runtime.unix.System.IO.Pipes (>= 4.0.0-rc3-23818) for DNXCore,Version=v5.0 (centos.7-x64). [d:\j\workspace\outerloop_win---9c9e7d59\build.proj] 16:04:57 EXEC : error : Unable to resolve runtime.unix.System.IO.Pipes (>= 4.0.0-rc3-23818) for DNXCore,Version=v5.0 (debian.8.2-x64). [d:\j\workspace\outerloop_win---9c9e7d59\build.proj] 16:04:57 EXEC : error : Unable to resolve runtime.unix.System.IO.Pipes (>= 4.0.0-rc3-23818) for DNXCore,Version=v5.0 (osx.10.10-x64). [d:\j\workspace\outerloop_win---9c9e7d59\build.proj] 16:04:57 EXEC : error : Unable to resolve runtime.unix.System.IO.Pipes (>= 4.0.0-rc3-23818) for DNXCore,Version=v5.0 (rhel.7-x64). [d:\j\workspace\outerloop_win---9c9e7d59\build.proj] 16:04:57 EXEC : error : Unable to resolve runtime.unix.System.IO.Pipes (>= 4.0.0-rc3-23818) for DNXCore,Version=v5.0 (ubuntu.14.04-x64). [d:\j\workspace\outerloop_win---9c9e7d59\build.proj] 16:18:49 d:\j\workspace\outerloop_win---9c9e7d59\build.proj(54,5): error MSB3073: The command """"d:\j\workspace\outerloop_win---9c9e7d59\Tools/dotnetcli/bin/dotnet.exe"" restore --packages ""d:\j\workspace\outerloop_win---9c9e7d59\packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-corefxtestdata/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://www.nuget.org/api/v2/ ""d:\j\workspace\outerloop_win---9c9e7d59\/src"" ""d:\j\workspace\outerloop_win---9c9e7d59\/pkg"""" exited with code 1. 16:18:49 [00:18:48.65] Restoring all packages...Done. ``` These are happening frequently but randomly and taking out a lot of runs. cc: @weshaggard, @chcosta, @ericstj " +6388 area-System.Runtime TickCountTest failed on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/2762/consoleFull ``` 05:28:29 System.Tests.EnvironmentTickCount.TickCountTest [FAIL] 05:28:29 Assert+WrapperXunitException : File path: d:\j\workspace\windows_nt_re---5067c899\src\System.Runtime.Extensions\tests\System\Environment.TickCount.cs. Line: 16 05:28:29 ---- Assert.True() Failure 05:28:29 Expected: True 05:28:29 Actual: False 05:28:29 Stack Trace: 05:28:29 d:\j\workspace\windows_nt_re---5067c899\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(583,0): at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 05:28:29 d:\j\workspace\windows_nt_re---5067c899\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(578,0): at Assert.True(Boolean condition, String userMessage, String path, Int32 line) 05:28:29 ----- Inner Stack Trace ----- 05:28:29 d:\j\workspace\windows_nt_re---5067c899\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(571,0): at Assert.True(Boolean condition, String userMessage, String path, Int32 line) ``` +6392 area-System.Net Fix memory leak caused by cycle reference in WinHttpRequestState The fix made in PR #6285 for this memory leak turned out to be insufficient. The request handle object for the stream (SafeWinHttpHandle) was part of the strong root chain in WinHttpRequestState. And even when the WinHttpResponseStream object was finalized (implicit Dispose), the request handle was not finalized and thus leaks were happening. To address this, the request handle object reference is now cleared from the WinHttpRequestState object (along with other object references) once the WinHttpResponseStream is created. WinHttpResponseStream then gets passed the request handle reference. Then normal finalizer rules can apply to both WinHttpResponseStream and the request handle. Once the request handle gets disposed (via finalizing), native WinHTTP will send a final status callback (HANDLE_CLOSING) and that is how the state object will then get unrooted and freed. Tested this fix with WCF streaming scenarios and used WinDBG to verify the heaps. There are future plans to improve this code via refactoring as part of #2501. Fixes #5927. +6393 area-Infrastructure Reduce the number of feeds we use for restoring our repo "Currently have 4 feeds in our feed source list: https://github.com/dotnet/corefx/blob/master/dir.props#L101 ``` ``` We should eliminate corefxtestdata and buildtools from our normal source list to reduce the amount of network traffic we are doing when restoring. Note we should still keep the build-tools feed in our init-tools.cmd (https://github.com/dotnet/corefx/blob/master/init-tools.cmd#L12) but it shouildn't be needed for anything outside of the tool set initialization. " +6394 area-System.Net Increase linger time in SendRecvAsync tests These tests are failing with an OperationAborted status code on OSX, very rarely. I can't reproduce the problem locally, even if I try to artifically induce the failure. I'm guessing that the timing works out differently on the CI machines, making this (somewhat) more likely, and the only legitimate case I can see where this would happen is if the client closes the TCP connection before the server has finished reading all bytes. Increasing the linger time should help with that, so let's give it a try. Fixes #5750. @pgavlin, @stephentoub, @CIPop +6397 area-Infrastructure Consider making helper script flag syntax uniform "Just throwing this out there because it's a minor annoyance for me, nothing high priority or workflow-breaking. This is referring to the difference between `clean.cmd /b` and `clean.sh -b`. I know these were done to match the usual ""OS standard"" flag syntax, but I think it would be simpler if these were just the same across platforms (i.e. `clean -b` everywhere). I'm often typing the wrong flag after I've been working on one system for a while and then move to another. Additionally, `dotnet` has just made all systems use the ""hypen-flag"" syntax instead of allowing ""slash-syntax"" on Windows, and it seems to work fine there. Anyone else feel the same way? I'm happy to adjust to this if nobody else is having the same troubles :smile: . " +6398 area-System.Runtime Support global unhandled exception handler As outlined in https://github.com/dotnet/coreclr/issues/2999, we need a replacement for `AppDomain.UnhandledException`. Couple of requirements: - Should be a low-level API that isn't depending on other orthogonal features such as `AssemblyLoadContext`, `Task`, or `Thread` - Can't be on a type that is already exposed in .NET Framework (such as `Environment`) - Should be raised for all threads Thoughts? /cc @weshaggard @KrzysztofCwalina @stephentoub +6399 area-System.Threading RunSemaphoreSlimCurrentTests failed in Win10 outer loop http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/101/consoleFull ``` 07:07:24 System.Threading.Tests.SemaphoreSlimTests.RunSemaphoreSlimCurrentTests [FAIL] 07:07:24 Assert.Equal() Failure 07:07:24 Expected: 50 07:07:24 Actual: 46 07:07:24 Stack Trace: 07:07:24 d:\j\workspace\outerloop_win---0cba2915\src\System.Threading\tests\SemaphoreSlimTests.cs(586,0): at System.Threading.Tests.SemaphoreSlimTests.RunSemaphoreSlimTest8_ConcWaitAsyncAndRelease(Int32 initial, Int32 maximum, Int32 waitThreads, Int32 releaseThreads, Int32 succeededWait, Int32 failedWait, Int32 finalCount, Int32 timeout) 07:07:24 d:\j\workspace\outerloop_win---0cba2915\src\System.Threading\tests\SemaphoreSlimTests.cs(173,0): at System.Threading.Tests.SemaphoreSlimTests.RunSemaphoreSlimCurrentTests() 07:07:26 System.Xml.RW.CharCheckingReader.Tests -> d:\j\workspace\outerloop_win---0cba2915\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.CharCheckingReader.Tests\System.Xml.RW.CharCheckingReader.Tests.dll ``` +6402 area-System.Reflection CustomAttributeExtensions.GetCustomAttributes returns null when called on a DynamicMethod "It should return an empty collection. Repro: Create a desktop console app: ``` C# static void Main(string[] args) { var dm = new DynamicMethod(""M"", typeof(void), Type.EmptyTypes); var il = dm.GetILGenerator(); il.Emit(OpCodes.Ret); var z = dm.GetCustomAttributes(); Console.WriteLine(z?.ToString() ?? ""null""); } ``` " +6405 area-System.Runtime To Add an ES6 Compatible Way to ToString double "DataContractJsonSerializer converts a double value to a string by calling, ``` csharp value.ToString(""R"", NumberFormatInfo.InvariantInfo) ``` The string is not compatible with ECMAScript 6 (see the [specs](http://www.ecma-international.org/ecma-262/6.0/#sec-tostring-applied-to-the-number-type)). For example, > 5E-06 should be converted as 0.000005 > -3.3333333333333338E-28 should be converted as -3.3333333333333338e-28 > 4.94065645841247E-324 should be converted as 5e-324 An ES6 compatible way to ToString double and floats would be useful. " +6406 area-System.Data Remove System.Collection.NonGeneric from SqlClient contracts Based on a PR review comment https://github.com/dotnet/corefx/pull/6396#discussion_r54168394 we should try to remove the SqlClient's dependency on System.Collection.NonGeneric System.Collections.CollectionBase is being used in SqlBulkCopyColumnMappingCollection inheritance. +6414 area-System.Collections IntersectWithEnumerable function SortedSet does unnecessary rotations ![sortedset](https://cloud.githubusercontent.com/assets/4521425/13342870/d3f94fe8-dbfa-11e5-8402-99d70c58ac06.PNG) I believe the following change would cause the tree to perform fewer rotations and therefore should be faster. This also handles the case where the set contains all the elements and does not need to be cleared and rebuilt. +6415 area-System.Collections In SortedSet replace log2 function with Math.Log(x, 2) "I did a test and 1 + (int) Math.Log(x, 2) was slightly faster than the implementation of the private static int log2(int value) function. 1. Replaces all occurrences of log2 with Math.Log(x,2). 2. Remove the log2 function. Note: it's odd that to get the same results as log2 I had to use, ""1 + (int)Math.Log(value, 2)"". So after this change the way log2 is used might want to be looked over. " +6423 area-System.Data [ToFDisable] Port tests for: System.Data.SqlClient "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Data.SqlClient, we're missing 7486 lines of coverage. Our total line coverage for Open vs. ToF is 78.1%. However, this includes some data points that might not be relevant to the library being tested so the real coverage is likely lower. To fulfill the uncovered lines we would need to either create new tests for them or port 1 ToF tests to the open. Those tests are: - [ ] System.Data.SqlClient\4.0.0.0\SystemDataSqlClientTest_FullRun.XML Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6445 area-System.Net [ToFDisable] Port tests for: System.Runtime.Extensions, "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Runtime.Extensions, we're missing 37 lines of coverage. Our total line coverage for Open vs. ToF is 98.5%. However, this includes some data points that might not be relevant to the library being tested so the real coverage is likely lower. To fulfill the uncovered lines we would need to either create new tests for them or port 5 ToF tests to the open. Those tests are: - [ ] System.Runtime.Extensions\4.0.10.0\System.Runtime.Extensions.Tests\System.Runtime.Extensions.Tests\FrameworkNameTests.FrameworkNameCtor_Id.xml - [ ] System.Runtime.Extensions\4.0.10.0\System.Runtime.Extensions.Tests\System.Runtime.Extensions.Tests\HttpWebUtilityTests.WebUtilityTests.HtmlDecodeWithoutTextWriter.xml - [ ] System.Runtime.Extensions\4.0.10.0\System.Runtime.Extensions.Tests\System.Runtime.Extensions.Tests\HttpWebUtilityTests.WebUtilityTests.HtmlDefaultStrictSettingEncode.xml - [ ] System.Runtime.Extensions\4.0.10.0\System.Runtime.Extensions.Tests\System.Runtime.Extensions.Tests\HttpWebUtilityTests.WebUtilityTests.UrlEncodeFromStringNoEncoding.xml - [ ] System.Runtime.Extensions\4.0.10.0\System.Runtime.Extensions.Tests\System.Runtime.Extensions.Tests\PathCombineTests.ContainsInvalidCharWithoutRootedAfterArgumentNull.xml Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6448 area-System.Security [ToFDisable] Port tests for: System.Security.Claims "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Security.Claims, we're missing 691 lines of coverage. To fulfill the uncovered lines we would need to either create new tests for them or port 15 ToF tests to the open. Those tests are: - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsIdentityTests.AddRemoveClaims.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsIdentityTests.Serialization.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimTests.Serialization.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsPrincipalTests.IsInRole.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimTests.Claim_Constructor_NullTypeOrValue.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimTests.Clone.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests_FullRun.XML - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.CommonQueryTests.Query.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsIdentityTests.SetGet.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsIdentityTests.Clone.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsIdentityTests.Constructors.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsPrincipalTests.Serialization.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsPrincipalTests.AddIdentities.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsPrincipalTests.Clone.xml - [ ] System.Security.Claims\4.0.0.0\SystemSecurityClaimsTests\System.Security.Claims.Tests.ClaimsPrincipalTests.Constructors.xml Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6459 area-System.Threading [ToFDisable] Port Monitor tests for: System.Threading "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Threading, we're missing the entire test suite for the [Monitor class](https://msdn.microsoft.com/en-us/library/system.threading.monitor%28v=vs.110%29.aspx) under QA/ToF/tests/FX/Threading/. " +6463 area-Serialization [ToFDisable] Port tests for: System.Xml.XmlSerializer "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Xml.XmlSerializer, we're missing 1 lines of coverage. To fulfill the uncovered lines we would need to either create new tests for them or port 1 ToF tests to the open. Those tests are: - [ ] System.Xml.XmlSerializer\4.0.0.0\XmlSerializerTestsForWinMD_FullRun.XML Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6464 area-System.Xml [ToFDisable] Port tests for: System.Xml.XPath "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Xml.XPath, we're missing 7 lines of coverage. To fulfill the uncovered lines we would need to either create new tests for them or port 1 ToF tests to the open. Those tests are: - [ ] System.Xml.XPath\4.0.0.0\XDocument\System.Xml.XPath.XDocument.Tests_FullRun.XML Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6465 area-System.Net "[System.Net .Security Tests for NTLM] Allow Unix Implementation to take ""Domain\User"" format as a user." Currently if we pass the credential having user in format Domain/User.. It fails ,, We should fix this to accept this. +6466 area-System.Net [System.Net .Security Tests for NTLM] Figure out a way to validate if ntlm is initialized or not. +6467 area-System.Data A connection was successfully established with the server, but then an error occurred during the login process dotnet 1.0.0-beta-001528 Runtime Environment: OS Name: ubuntu OS Version: 15.04 OS Platform: Linux Runtime Id: ubuntu.15.04-x64 System.Data.SqlClient 4.0.0-rc3-23823 ConnectionString : data source=server,port;Initial Catalog=XXXXXXXX;Integrated Security=False;User ID=sa;Password=XXXX;Connect Timeout=150;Encrypt=False The same console app works on Windows. Opening SqlConnection results in the following SqlException: **A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.IO.IOException: Unable to read data from the transport connection: Unknown error 10054. ---> System.Net.Sockets.SocketException: Unknown error 10054** ``` at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Data.SqlClient.SNI.SNITCPHandle.Receive(SNIPacket& packet, Int32 timeoutInMilliseconds) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at ConsoleApplication.Program.Main(String[] args) ``` +6468 area-Infrastructure Unable to upgrade packages due to Debian errors "cc: @dagood, @chcosta, @weshaggard https://github.com/dotnet/corefx/pull/6386 is still failing due to errors like the following. What else is necessary to let this work? There are some changes blocked on being able to upgrade to the newer packages. Do we need to wait for newer packages to be published to myget and upgrade to those instead? ``` [12:02:41.84] Building Managed Libraries... [12:02:43.73] Restoring all packages... EXEC : error : System.IO.Compression 4.1.0-rc3-23823 provides a compile-time reference assembly for System.IO.Compression on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Microsoft.Win32.Primitives 4.0.1-rc3-23823 provides a compile-time reference assembly for Microsoft.Win32.Primitives on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Console 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Console on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Data.SqlClient 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Data.SqlClient on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Diagnostics.FileVersionInfo 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Diagnostics.FileVersionInfo on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Diagnostics.Process 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Diagnostics.Process on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.IO.FileSystem.DriveInfo 4.0.0-rc3-23823 provides a compile-time reference assembly for System.IO.FileSystem.DriveInfo on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.IO.FileSystem.Watcher 4.0.0-rc3-23823 provides a compile-time reference assembly for System.IO.FileSystem.Watcher on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.IO.MemoryMappedFiles 4.0.0-rc3-23823 provides a compile-time reference assembly for System.IO.MemoryMappedFiles on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.IO.Pipes 4.0.0-rc3-23823 provides a compile-time reference assembly for System.IO.Pipes on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.NameResolution 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Net.NameResolution on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.NetworkInformation 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Net.NetworkInformation on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.Ping 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Net.Ping on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.Requests 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Net.Requests on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.Security 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Net.Security on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.Sockets 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Net.Sockets on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.WebSockets.Client 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Net.WebSockets.Client on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Runtime.InteropServices.RuntimeInformation 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Runtime.InteropServices.RuntimeInformation on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Runtime.Serialization.Primitives 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Runtime.Serialization.Primitives on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Security.Cryptography.Algorithms 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Security.Cryptography.Algorithms on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Security.Cryptography.Encoding 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Security.Cryptography.Encoding on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Security.Cryptography.X509Certificates 4.0.0-rc3-23823 provides a compile-time reference assembly for System.Security.Cryptography.X509Certificates on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Xml.XmlSerializer 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Xml.XmlSerializer on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.AppContext 4.1.0-rc3-23823 provides a compile-time reference assembly for System.AppContext on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Collections 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Collections on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Diagnostics.Debug 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Diagnostics.Debug on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Diagnostics.Tools 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Diagnostics.Tools on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Diagnostics.Tracing 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Diagnostics.Tracing on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Globalization 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Globalization on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Globalization.Calendars 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Globalization.Calendars on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Globalization.Extensions 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Globalization.Extensions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.IO 4.1.0-rc3-23823 provides a compile-time reference assembly for System.IO on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.IO.FileSystem 4.0.1-rc3-23823 provides a compile-time reference assembly for System.IO.FileSystem on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Linq.Expressions 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Linq.Expressions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.Http 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Net.Http on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Net.Primitives 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Net.Primitives on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Reflection 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Reflection on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Reflection.DispatchProxy 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Reflection.DispatchProxy on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Reflection.Extensions 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Reflection.Extensions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Reflection.Primitives 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Reflection.Primitives on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Reflection.TypeExtensions 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Reflection.TypeExtensions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Resources.ResourceManager 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Resources.ResourceManager on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Runtime 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Runtime on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Runtime.Extensions 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Runtime.Extensions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Runtime.Handles 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Runtime.Handles on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Runtime.InteropServices 4.1.0-rc3-23823 provides a compile-time reference assembly for System.Runtime.InteropServices on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Text.Encoding 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Text.Encoding on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Text.Encoding.Extensions 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Text.Encoding.Extensions on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Threading.Tasks 4.0.11-rc3-23823 provides a compile-time reference assembly for System.Threading.Tasks on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : System.Threading.Timer 4.0.1-rc3-23823 provides a compile-time reference assembly for System.Threading.Timer on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (debian.8.2-x64). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Failed to retrieve information from remote source 'https://dotnet.myget.org/F/dotnet-buildtools/api/v3/flatcontainer/system.linq.expressions/index.json'. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Response status code does not indicate success: 503 (Service Unavailable). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Failed to retrieve information from remote source 'https://dotnet.myget.org/F/dotnet-corefxtestdata/api/v3/flatcontainer/system.runtime/index.json'. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Response status code does not indicate success: 503 (Service Unavailable). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Failed to retrieve information from remote source 'https://dotnet.myget.org/F/dotnet-buildtools/api/v3/flatcontainer/system.runtime.interopservices.runtimeinformation/index.json'. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Response status code does not indicate success: 503 (Service Unavailable). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Failed to retrieve information from remote source 'https://dotnet.myget.org/F/dotnet-buildtools/api/v3/flatcontainer/system.runtime.interopservices.runtimeinformation/index.json'. [d:\j\workspace\windows_nt_de---06b7984d\build.proj] EXEC : error : Response status code does not indicate success: 503 (Service Unavailable). [d:\j\workspace\windows_nt_de---06b7984d\build.proj] d:\j\workspace\windows_nt_de---06b7984d\build.proj(54,5): error MSB3073: The command """"d:\j\workspace\windows_nt_de---06b7984d\Tools/dotnetcli/bin/dotnet.exe"" restore --packages ""d:\j\workspace\windows_nt_de---06b7984d\packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-corefxtestdata/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://www.nuget.org/api/v2/ ""d:\j\workspace\windows_nt_de---06b7984d\/src"" ""d:\j\workspace\windows_nt_de---06b7984d\/pkg"""" exited with code 1. [12:23:26.92] Restoring all packages...Done. ``` (Note as well there are some 503s at the end.) " +6469 area-System.Net Enable NegotiateStream For Unix # Problem Enabling `System.Net.Security.NegotiateStream` for Unix. # Solution This PR introduces the implementation of `NegotiateStream` based on native implementations of [gssapi](https://tools.ietf.org/html/rfc2743) The native implementations used are mit-krb5 on linux and the built-in GSS.Framework for OSX. Also included are scripts to configure and deploy KDC on the host machine so as to run the associated tests. cc: @stephentoub @bartonjs @CIPop @davidsh @vijaykota @shrutigarg +6471 area-Infrastructure Remove Issue and PR templates I know we just added them, but I'm already finding them to be problematic. There's a ton of text in them, so much that I end up just ignoring them, deleting everything, and writing my own message. Plus, for PRs with a single commit, it appears the template text takes precedence over the normal behavior on GitHub of using the commit's description, which means extra work to get the contents of the commit message into the PR description. My vote is to delete these, at least for now. +6476 area-System.Data API for Code based configuration for DBProviderFactories "# Problem DbProviderFactories in .NET Framework provides an API to manage DbProviderFactory which configured in machine.config and load that assembly from GAC via reflection In Corefx, there is no more GAC and machine.config. Community are asking to have a standard way to manage DbProviderFactory to write provider agnostic code in libraries. https://github.com/dotnet/corefx/issues/4571 https://github.com/dotnet/corefx/issues/5782 https://msdn.microsoft.com/en-us/library/ms971499.aspx # Proposal We will bring back DbProviderFactories in CoreFx. But instead of register/read the configuration from machine.config, we will provide a code based configuration. This will allow application writer to hook this with any configuration mechanism. ## Contract Changes We will bring back DbProviderFactories.GetFactory functions in V1 contract which will support .Net 4.6.2. And add ""RegisterFactory"" functions in V2 contract to support .Net vNext. (version after 4.6.2) For portability, we will bring ""RegisterFactory"" into .Net vNext and should work side by side with file config behavior. e.g code based config will override file based config). Portable library (such as ORM), can start using GetFactory and target it for .Net 4.6.2. If this library used in .NET 4.6.2 , GetFactory will return factory which defined in machine/app configs. Corefx application which used this portable library can register their factory using ""RegisterFactory"". Once we release ""RegisterFactory"" into .Net vNext, The behavior will be work seamless in both frameworks. ``` C# namespace System.Data.Common { public static class DbProviderFactories { // V1 -- Supported by .NET Framework 4.6.2 (the upcoming version) public static DbProviderFactory GetFactory(string providerInvariantName); public static DbProviderFactory GetFactory(DbConnection connection); // V2 -- Supported by .NET Core 1.0 and by .NET Framework vNext (version after 4.6.2) public static void RegisterFactory(string providerInvariantName, DbProviderFactory factory); public static IEnumerable GetFactoryProviderNames(); } } ``` ## DbProviderFactories CoreFx Implementation ``` C# public abstract class DbProviderFactories { internal static readonly Dictionary> _configs = new Dictionary>(); public static DbProviderFactory GetFactory(string providerInvariantName) { ADP.CheckArgumentLength(providerInvariantName, nameof(providerInvariantName)); if (_configs.ContainsKey(providerInvariantName)) { return _configs[providerInvariantName](); } throw ADP.ConfigProviderNotFound(); } public static DbProviderFactory GetFactory(DbConnection connection) { ADP.CheckArgumentNull(connection, nameof(connection)); return connection.ProviderFactory; } public static void RegisterFactory(string providerInvariantName, DbProviderFactory factory) { ADP.CheckArgumentNull(providerInvariantName, nameof(providerInvariantName)); ADP.CheckArgumentNull(constructorDelegate, nameof(constructorDelegate)); _configs[providerInvariantName] = factory; } public static IEnumerable GetFactoryProviderNames() { return _configs.Keys.toArray(); } } ``` ## Usage For CoreFX application, You need to register your provider factory during startup of your application. ``` C# public static void Startup() { //SqlClientFactory is a singleton factory DbProviderFactories.Add(""System.Data.SqlClient"", SqlClientFactory.Instance); //You can use other factory which not singleton. DbProviderFactories.Add(""System.Data.OtherProvider"", new OtherProviderFactory()); } ``` # Progress I have created initial commit on my branch to inspect what are the changes needed. https://github.com/kkurni/corefx/commit/68380b3451d3ba0ce9646119101e9b4309f09d68 " +6477 area-System.Linq Order of execution for Enumerable.Join differs between coreclr and net451 "Order of execution for Enumerable.Join differs between coreclr and net451. End results are correct for both cases, but if customers are depending on order of execution (should they?) they might run into trouble. Repro: ``` public class Program { public static void Main(string[] args) { var query = Enumerable.Join(new CustomerEnumerable(), new OrderEnumerable(), c => c.Id, o => o.Id, (c, o) => new { c, o }); var result = query.ToList(); } } public class Customer { public int Id { get; set; } public string Name { get; set; } } public class Order { public int Id { get; set; } public string OrderName { get; set; } } public class CustomerEnumerable : IEnumerable { public IEnumerator GetEnumerator() { return new CustomerEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return new CustomerEnumerator(); } private class CustomerEnumerator : IEnumerator { private int state = 0; public Customer Current { get { Console.WriteLine(""CustomerEnumerator Current""); return new Customer { Id = 1, Name = ""1"" }; } } object IEnumerator.Current { get { Console.WriteLine(""CustomerEnumerator Current""); return new Customer { Id = 1, Name = ""1"" }; } } public void Dispose() { } public bool MoveNext() { Console.WriteLine(""CustomerEnumerator MoveNext""); if (state == 0) { state = 1; return true; } return false; } public void Reset() { } } } public class OrderEnumerable : IEnumerable { public IEnumerator GetEnumerator() { return new OrderEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return new OrderEnumerator(); } private class OrderEnumerator : IEnumerator { private int state = 0; public Order Current { get { Console.WriteLine(""OrderEnumerator Current""); return new Order { Id = 1, OrderName = ""1"" }; } } object IEnumerator.Current { get { Console.WriteLine(""OrderEnumerator Current""); return new Order { Id = 1, OrderName = ""1"" }; } } public void Dispose() { } public bool MoveNext() { Console.WriteLine(""OrderEnumerator MoveNext""); if (state == 0) { state = 1; return true; } return false; } public void Reset() { } } } ``` Result on net451: OrderEnumerator MoveNext OrderEnumerator Current OrderEnumerator MoveNext CustomerEnumerator MoveNext CustomerEnumerator Current CustomerEnumerator MoveNext Result on coreclr: CustomerEnumerator MoveNext OrderEnumerator MoveNext OrderEnumerator Current OrderEnumerator MoveNext CustomerEnumerator Current CustomerEnumerator MoveNext " +6479 area-System.Net System.ObjectDisposedException thrown while trying to compose very large multipart form "I'm not sure if this is by-design, an actual issue, or something else. I'm trying to upload a **very large** file (or set of files) using a multipart form via a POST message, up to 4 GB total message size. The client that's going to send this very large message is not able to finish creating the data stream before I get a `System.ObjectDisposedException` indicating: `""Safe handle has been closed""`. The exception is thrown during the execution of the line that reads `stream.Write(buffer, 0, length);` in the repro below. It appears as if the safe handle to the stream has been disposed but I'm still writing to it. # Affected platforms I don't have access to OSX. I've repro'ed it under both Windows 10 and Ubuntu 14.04. # Repro steps Use this project.json ``` JSON { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.AspNetCore.Mvc"": ""1.0.0-*"", ""NETStandard.Library"": ""1.0.0-*"", ""System.Net.Http"": ""4.0.1-*"", ""System.Console"": ""4.0.0-*"" }, ""frameworks"": { ""dnxcore50"": { ""imports"": ""portable-net451+win8"" } }, ""commands"": { ""run"": ""LargeFileUpload"" } } ``` Use this Program.cs ``` C# using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; namespace ConsoleApplication { public class RandomDataStreamContent : HttpContent { private const int DefaultBufferSize = 4096; private readonly int _bufferSize; private readonly long _desiredLength; private readonly Random _random = new Random(DateTime.UtcNow.Millisecond); private static long _globalWrittenBytes = 0; public RandomDataStreamContent(long desiredLength) : this(desiredLength, DefaultBufferSize) { } public RandomDataStreamContent(long desiredLength, int bufferSize) { if (bufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(bufferSize)); } _bufferSize = bufferSize; _desiredLength = desiredLength; } protected override Task SerializeToStreamAsync(Stream stream, TransportContext context) { return Task.Run(() => { var buffer = new byte[_bufferSize]; var uploaded = 0; while (uploaded < _desiredLength) { _random.NextBytes(buffer); var length = buffer.Length; uploaded += length; if (uploaded > _desiredLength) { var delta = (int)(uploaded - _desiredLength); uploaded -= delta; length -= delta; } try { _globalWrittenBytes += length; stream.Write(buffer, 0, length); } catch (Exception e) { Console.WriteLine($""Bytes written to buffer before exception: { _globalWrittenBytes }""); Console.WriteLine($""Exception thrown: { e.Message }""); throw; } } }); } protected override bool TryComputeLength(out long length) { length = _desiredLength; return true; } } public class Program { // this endpoint doesn't matter as we'll not make it to hit the actual endpoint with the payload, // we just need a URI that's valid so we can establish a connection private const string ApiEndpoint = ""http://www.httpbin.org/""; public static void Main(string[] args) { const long oneGigabyte = 1024 * 1024 * 1024; const int filesToAdd = 4; using (var client = new HttpClient()) { using (var form = new MultipartFormDataContent()) { form.Add(new StringContent(""{\""section\"" : \""This is a simple JSON content fragment\""}""), ""metadata""); for (var iter = 0; iter < filesToAdd; ++iter) { var fileName = Guid.NewGuid().ToString().ToLower(); var fileContent = GenerateFileContent(fileName, oneGigabyte); form.Add(fileContent, ""file"", fileName); } var response = client.PostAsync(ApiEndpoint + ""api/upload"", form).Result; if (!response.IsSuccessStatusCode) { var errorMessage = ""Upload failed: "" + (int)response.StatusCode + "" "" + response.ReasonPhrase; throw new Exception(errorMessage + Environment.NewLine + response.Content.ReadAsStringAsync().Result); } } } } private static RandomDataStreamContent GenerateFileContent(string fileName, long fileSize) { var fileContent = new RandomDataStreamContent(fileSize); fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue(""form-data"") { Name = ""\""files\"""", FileName = ""\"""" + fileName + ""\"""" }; fileContent.Headers.ContentType = new MediaTypeHeaderValue(""application/octet-stream""); return fileContent; } } } ``` # Expected behavior The code as it stands should 404 (Not Found) since we're trying to hit an endpoint that doesn't exist. In case you have a WebAPI endpoint where you can upload the large file, it should 200 (OK). # Actual behavior The console prints: ``` Bytes written to buffer before exception: 22691840 Exception thrown: A task was canceled. Unhandled Exception: System.AggregateException: One or more errors occurred. (A task was canceled.) ---> System.Threading.Tasks.TaskCanceledException: A task was canceled. --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at ConsoleApplication.Program.Main(String[] args) ``` And crashes. " +6485 area-System.Runtime Add parameterless overloads of TrimStart/TrimEnd I propose we add parameterless overloads of `TrimStart`/`TrimEnd` for the String class. # Rationale - We have a parameterless `Trim` [method](https://msdn.microsoft.com/en-us/library/t97s7bs3%28v=vs.110%29.aspx), so it's best to do this for symmetry. - We can avoid array allocations every time the method is called, e.g. `TrimStart()` would no longer transparently allocate an array. We can avoid this with `TrimStart(Array.Empty())`, but that's besides the point. - With the [current implmementation](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/String.cs#L1366) in CoreCLR, it would be relatively trivial to implement. Just add this to the class: ``` csharp public string TrimStart() => TrimHelper(TrimHead); public string TrimEnd() => TrimHelper(TrimTail); ``` - Perhaps this is just me, but when I first came across the `TrimStart(params char[])` overload (as a beginner to C#), I wasn't even aware that you could leave a `params` method empty. I just assumed that the functionality I was looking for wasn't available, and ended up making my own helper method. # Proposed API ``` csharp namespace System { public class String { // New methods public string TrimStart(); public string TrimEnd(); } } ``` +6486 area-System.Net Support setting outgoing interface for multicast on Socket The desktop framework and mono support setting the interface used for outgoing multicast traffic by passing the interface index as a value for the MulticastInterface SocketOption. ``` socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, IPAddress.HostToNetworkOrder(interfaceIndex)) ``` On Windows this is an acceptable value for IP_MULTICAST_IF, see [msdn IPPROTO_IP](https://msdn.microsoft.com/en-us/library/windows/desktop/ms738586%28v=vs.85%29.aspx). On non-Windows platforms the request should be translated to pass an ip_mreqn as the IP_MULTICAST_IF value, see [man ip](http://man7.org/linux/man-pages/man7/ip.7.html). The mono implementation for translating the value on non-Windows platforms can be found here: https://github.com/mono/mono/blob/master/mono/metadata/socket-io.c#L2333-L2345 +6487 area-System.Net HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException(remoteServer NullReferenceException http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/1405/console ``` 19:07:17 System.Net.Tests.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException(remoteServer: http://corefx-net.cloudapp.net/Echo.ashx) [FAIL] 19:07:17 System.NullReferenceException : Object reference not set to an instance of an object. 19:07:17 Stack Trace: 19:07:18 at System.Net.Tests.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException(Uri remoteServer) ``` +6489 area-System.Net Missing ObjectContent class in System.Net.Http "It appears `ObjectContent` didn't make it among the various subclasses of `HttpContent` (`StreamContent`, `StringContent`, etc.). Is this a bug or is there another way to use `HttpClient` to POST json somewhere? e.g. ``` cs var value = new MyType(); client.PostAsync(""http://example.com/"", new ObjectContent(value, new JsonMediaTypeFormatter())) ``` " +6493 area-Infrastructure Outer loop Win7 and Win10 builds failing consistently with various errors Outer loop builds are repeatedly failing with a variety of errors: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_debug/98/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/104/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/94/consoleText ``` 09:17:15 Installing dotnet cli... 09:17:16 Add-Type : Cannot add type. The assembly 'System.IO.Compression.FileSystem' cou 09:17:16 ld not be found. 09:17:16 At line:1 char:250 09:17:16 + (New-Object Net.WebClient).DownloadFile('https://dotnetcli.blob.core.windows. 09:17:16 net/dotnet/beta/Binaries/1.0.0.001504/dotnet-win-x64.1.0.0.001504.zip', 'd:\j\w 09:17:16 orkspace\outerloop_win---9c9e7d59\Tools\dotnetcli\dotnet-win-x64.1.0.0.001504.z 09:17:16 ip'); Add-Type <<<< -Assembly 'System.IO.Compression.FileSystem' -ErrorVariabl 09:17:16 e AddTypeErrors; if ($AddTypeErrors.Count -eq 0) { [System.IO.Compression.ZipFi 09:17:16 le]::ExtractToDirectory('d:\j\workspace\outerloop_win---9c9e7d59\Tools\dotnetcl 09:17:16 i\dotnet-win-x64.1.0.0.001504.zip', 'd:\j\workspace\outerloop_win---9c9e7d59\To 09:17:16 ols\dotnetcli\') } else { (New-Object -com shell.application).namespace('d:\j\w 09:17:16 orkspace\outerloop_win---9c9e7d59\Tools\dotnetcli\').CopyHere((new-object -com 09:17:16 shell.application).namespace('d:\j\workspace\outerloop_win---9c9e7d59\Tools\dot 09:17:16 netcli\dotnet-win-x64.1.0.0.001504.zip').Items(),16) } 09:17:16 + CategoryInfo : ObjectNotFound: (System.IO.Compression.FileSyste 09:17:16 m:String) [Add-Type], Exception 09:17:16 + FullyQualifiedErrorId : ASSEMBLY_NOT_FOUND,Microsoft.PowerShell.Commands 09:17:16 .AddTypeCommand 09:17:16 09:17:17 Add-Type : Cannot add type. One or more required assemblies are missing. 09:17:17 At line:1 char:250 09:17:17 + (New-Object Net.WebClient).DownloadFile('https://dotnetcli.blob.core.windows. 09:17:17 net/dotnet/beta/Binaries/1.0.0.001504/dotnet-win-x64.1.0.0.001504.zip', 'd:\j\w 09:17:17 orkspace\outerloop_win---9c9e7d59\Tools\dotnetcli\dotnet-win-x64.1.0.0.001504.z 09:17:17 ip'); Add-Type <<<< -Assembly 'System.IO.Compression.FileSystem' -ErrorVariabl 09:17:17 e AddTypeErrors; if ($AddTypeErrors.Count -eq 0) { [System.IO.Compression.ZipFi 09:17:17 le]::ExtractToDirectory('d:\j\workspace\outerloop_win---9c9e7d59\Tools\dotnetcl 09:17:17 i\dotnet-win-x64.1.0.0.001504.zip', 'd:\j\workspace\outerloop_win---9c9e7d59\To 09:17:17 ols\dotnetcli\') } else { (New-Object -com shell.application).namespace('d:\j\w 09:17:17 orkspace\outerloop_win---9c9e7d59\Tools\dotnetcli\').CopyHere((new-object -com 09:17:17 shell.application).namespace('d:\j\workspace\outerloop_win---9c9e7d59\Tools\dot 09:17:17 netcli\dotnet-win-x64.1.0.0.001504.zip').Items(),16) } 09:17:17 + CategoryInfo : InvalidData: (:) [Add-Type], InvalidOperationExc 09:17:17 eption 09:17:17 + FullyQualifiedErrorId : ASSEMBLY_LOAD_ERRORS,Microsoft.PowerShell.Comman 09:17:17 ds.AddTypeCommand 09:17:17 09:17:19 Restoring BuildTools version 1.0.25-prerelease-00177... 09:17:24 Initializing BuildTools ... 09:17:37 Done initializing tools. 09:17:37 [17:17:45.06] Building Native Libraries... 09:17:38 CMake is a pre-requisite to build this repository but it was not found on the path. Please install CMake from http://www.cmake.org/download/ and ensure it is on your path. 09:17:38 Native component build failed see nativebuild.log for more details. 09:17:38 [17:17:45.81] Building Managed Libraries... 09:17:39 [17:17:46.59] Restoring all packages... 09:21:19 [17:21:26.71] Restoring all packages...Done. 09:21:20 C:\Program Files (x86)\MSBuild\Microsoft\Portable\Microsoft.Portable.Core.targets(22,9): error : The TargetFrameworkProfile property is not set for project 'Microsoft.CSharp.csproj'. Portable projects must specify a profile. [d:\j\workspace\outerloop_win---9c9e7d59\src\Microsoft.CSharp\ref\Microsoft.CSharp.csproj] 09:21:21 C:\Program Files (x86)\MSBuild\Microsoft\Portable\Microsoft.Portable.Core.targets(22,9): error : The TargetFrameworkProfile property is not set for project 'Microsoft.VisualBasic.csproj'. Portable projects must specify a profile. [d:\j\workspace\outerloop_win---9c9e7d59\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] ``` +6494 area-Infrastructure Outer loop Ubuntu legs pass all tests but then fail with IOException http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_release/8/consoleFull ``` [xUnit] [ERROR] - IO error scanning directory '/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/bin/tests' ERROR: Step ‘Publish xUnit test result report’ aborted due to exception: java.io.IOException: remote file operation failed: /mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug at hudson.remoting.Channel@79976537:Azure0227030641: hudson.util.IOException2: There are some problems during the conversion into JUnit reports: at hudson.FilePath.act(FilePath.java:986) at hudson.FilePath.act(FilePath.java:968) at org.jenkinsci.plugins.xunit.XUnitProcessor.performTests(XUnitProcessor.java:145) at org.jenkinsci.plugins.xunit.XUnitProcessor.performXUnit(XUnitProcessor.java:88) at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:142) at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:134) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723) at hudson.model.Build$BuildExecution.post2(Build.java:185) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668) at hudson.model.Run.execute(Run.java:1763) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:410) Caused by: hudson.util.IOException2: There are some problems during the conversion into JUnit reports: at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:183) at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:44) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2719) at hudson.remoting.UserRequest.perform(UserRequest.java:120) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) at ......remote call to Azure0227030641(Native Method) at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416) at hudson.remoting.UserResponse.retrieve(UserRequest.java:220) at hudson.remoting.Channel.call(Channel.java:781) at hudson.FilePath.act(FilePath.java:979) ... 14 more Caused by: IO error scanning directory '/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/bin/tests' at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1207) at org.apache.tools.ant.DirectoryScanner.checkIncludePatterns(DirectoryScanner.java:1030) at org.apache.tools.ant.DirectoryScanner.scan(DirectoryScanner.java:909) at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:499) at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:460) at org.jenkinsci.plugins.xunit.service.XUnitReportProcessorService.findReports(XUnitReportProcessorService.java:73) at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:92) at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:44) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2719) at hudson.remoting.UserRequest.perform(UserRequest.java:120) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) [BFA] Scanning build for known causes... ..[BFA] Found failure cause(s): [BFA] Hung processs on target machine from category Infrastructure ``` Also, why after the tests are run is it then doing a native build? +6495 area-Infrastructure Outer loop runs aren't running inner loop tests! "`/p:WithCategories=""InnerLoop;OuterLoop""` is being passed to msbuild, causing `-trait category=InnerLoop -trait category=OuterLoop` to be passed to the xunit command line, but ""inner loop"" tests aren't attributed with an [InnerLoop] attribute, there is no ""InnerLoop"" trait, etc., and so the only tests that are getting run are the few outer loop ones. " +6500 area-System.Net Release pinned buffers correctly for WinHttpHandler, WinHttpWebSocket Both WinHttpHandler and WinHttpWebSocket use pinned buffers for receiving and sending data. The pinned GCHandle was being freed during the dispose of the WinHttpHandler or WinHttpWebSocket objects. The problem is that the buffer should not be unpinned until the async operation is done. It's possible for any async operation to be in flight (and where native code uses the buffer) when the object is explicitly or implicitly disposed. This fix moves the ownership of the pinned GCHandle to their respective state objects (WinHttRequestState, WinHttpWebSocketState). These objects are strongly rooted and are not released until all async operations are completed and the WinHTTP handles are fully closed. That makes these state objects a safe place to own and free the pinned buffers. Fixes #2508 and #6142 +6503 area-System.Net System.Net.Primitives: Remove dependency on non-generic collections `System.Net.Primitives` depends on `System.Collections.NonGeneric` only for the non-generic `SortedList`. We can instead use the generic `SortedList` in `System.Collections`, allowing us to remove the dependency on the legacy collections. cc: @stephentoub, @davidsh +6506 area-System.Net SocketAsyncEngine event loop FailFast on OSX "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/1447/console ``` 16:35:47 CLR: Managed code called FailFast, saying ""Exception thrown from SocketAsyncEngine event loop: System.Diagnostics.Debug+DebugAssertException: 16:35:47 16:35:47 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 16:35:47 at System.Environment.get_StackTrace() 16:35:47 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 16:35:47 at System.Net.Sockets.SocketAsyncContext.UnregisterRead() 16:35:47 at System.Net.Sockets.SocketAsyncContext.HandleEvents(SocketEvents events) 16:35:47 at System.Net.Sockets.SocketAsyncEngine.EventLoop() 16:35:47 at System.Threading.Tasks.Task.Execute() 16:35:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:35:47 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 16:35:47 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 16:35:47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 16:35:47 at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) 16:35:47 at System.Net.Sockets.SocketAsyncContext.UnregisterRead() 16:35:47 at System.Net.Sockets.SocketAsyncContext.HandleEvents(SocketEvents events) 16:35:47 at System.Net.Sockets.SocketAsyncEngine.EventLoop()"" 16:35:47 ./run-test.sh: line 135: 55204 Abort trap: 6 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing -notrait category=OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true 16:35:47 error: One or more tests failed while running tests from 'System.Net.Sockets.Tests'. Exit code 134. ``` cc: @ericeil, @pgavlin " +6513 area-System.Net NullReferenceException when calling Socket.SetMulticastOption on ubuntu 14.04 "Calling Socket.SetMulticastOption throws a NullReferenceException on ubuntu 14.04. Example program: ``` using System; using System.Net; using System.Net.Sockets; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { int interfaceIndex = 0; IPAddress ip = IPAddress.Parse(""239.1.2.3""); int port = 54321; Console.WriteLine(""Creating socket""); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Console.WriteLine(""Binding socket""); socket.Bind(new IPEndPoint(IPAddress.Any, 54321)); Console.WriteLine(""Adding membership""); socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, interfaceIndex)); Console.WriteLine(""Done!""); Console.Read(); } } } ``` ``` { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""NETStandard.Library"": ""1.0.0-rc2-23728"" }, ""frameworks"": { ""dnxcore50"": { } } } ``` Output: ``` Creating socket Binding socket Adding membership Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Net.Sockets.SocketPal.SetMulticastOption(SafeCloseSocket handle, SocketOptionName optionName, MulticastOption optionValue) at System.Net.Sockets.Socket.SetMulticastOption(SocketOptionName optionName, MulticastOption MR) at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Object optionValue) at ConsoleApplication.Program.Main(String[] args) ``` " +6514 area-System.Net Fix a NullReferenceException on Unix in SetMulticastOption The implementation was assuming that MulticastOption.LocalAddress is always set, but it'll be null if an interface index was provided. cc: @ericeil, @pgavlin, @davidsh, @tmds Fixes #6513 +6516 area-System.Net SendToV4IPEndPointToDualHost_Success timeout on OS X http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/1458/console ``` 05:22:47 System.Net.Sockets.Tests.DualMode.SendToV4IPEndPointToDualHost_Success [FAIL] 05:22:47 System.TimeoutException : The operation has timed out. 05:22:47 Stack Trace: 05:22:47 at System.Net.Sockets.Tests.DualMode.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 05:22:47 at System.Net.Sockets.Tests.DualMode.SendToV4IPEndPointToDualHost_Success() ``` +6517 area-System.IO Feature request: Better low-level support for making use of streaming algorithms There is a class of algorithms that works against a sequential stream of data. Typically, the algorithm is initialized with some starting state. It's then presented with a sequential stream of identically-typed elements. For each arbitrarily-chosed block of elements, the algorithm may either modify the starting state or produce an incremental block as part of an output stream, or both, depending on the algorithm in question. Algorithms which follow this pattern include compression/decompression, encryption/decryption and hashing. In the BCL, these algorithms are typically modeled as wrappers of System.IO.Stream. For instance, you write normally to a file by using a FileStream. But if you wrap this FileStream with a GZipStream, then writing to the wrapper will cause the file to be compressed. This is incredibly convenient when your use case exactly matches the functionality in the BCL. Where it falls apart, though, is for non-matching use cases. For instance, let's say you want to compress a Stream while reading it. This simply isn't supported directly today. The only way to make use of GZipStream in this scenario is by creating two adapters -- one that reads from the original stream and writes to the GZipStream, and one that intercepts the writes out of the GZipStream and puts a pull interface back on top of it. If the GZip functionality in the BCL were also exposed in a more primitive form -- for instance, something like the [Compressor interface in Hadoop](http://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/compress/Compressor.html), it would be much easier to implement custom scenarios on top of the base functionality. Given a sufficiently general abstraction for the initialize/process next block/finish set of operations, it might even be possible to reduce the amount of per-algorithm code that exists simply to interface with Stream. Unfortunately, the CoreCLR footprint appears to be going backwards in this regard. As an example, the HashAlgorithm class previously had methods for TransformBlock and TransformFinalBlock, but these have removed. The only way to make use of HashAlgorithm in a streaming fashion is to go through the pain of exposing the data as a (blocking) Stream, which can be extremely inconvenient. +6519 area-System.Net Fix SocketException error codes and messages on Unix "SocketException's public ctor takes an int, which it treats as both a SocketError and the native error code, passing it down to the base Win32Exception to get the platform-specific message for the error. However, SocketError is only the same as the native error code on Windows; on Unix, a translation is required, but that translation is missing. As a result, every SocketException thrown from System.Net.Sockets on Unix comes out with an unhelpful message ""Unknown error 12345"", where 12345 is the value for the SocketError, and the base native error code is set inappropriately as the SocketError's value rather than as the real errno value. This change puts a reverse mapping in place, such that the SocketError provided to SocketException is then translated back (as best as possible) into the underlying platform's native error code, which is then both stored on the base exception and used to get the appropriate platform-specific error message. So, for example, rather than getting an error like: ``` System.Net.Sockets.SocketException: Unknown error 10047 ``` you now get an error like: ``` System.Net.Sockets.SocketException: Address family not supported by protocol ``` Additionally, several SocketErrors map to errno values that weren't included in our Interop.Errors enum. I've added them. And, SocketException had dead code in the form of an ""internal SocketException(EndPoint endPoint)"" ctor that was never used. As a result, the private _endPoint field was always null, and the Message property would always just return base.Message. I've removed the constructor, the field, and the Message property override. SocketException also had an ErrorCode property in the implementation that wasn't in the ref contract; I've removed it from the implementation, too. cc: @davidsh, @pgavlin, @ericeil Fixes https://github.com/dotnet/corefx/issues/5849 " +6522 area-Infrastructure Update netci and run-test to use the IgnoreForCI trait in Jenkins Updates the netci.groovy and runtest.sh files to pass `-notrait Category=IgnoreForCI` to `build.cmd` and `run-test.sh` in Jenkins so that we can disable tests from running when they're being run in Jenkins. @dotnet-bot test ci please @Priya91 would you mind checking (or showing me how to check) that the generated jobs are correctly passing the -notrait / WithoutCategories? replaces part of #6145 +6523 area-System.Net Support setting outgoing interface for multicast on Socket Fix https://github.com/dotnet/corefx/issues/6486 pal_networking: support specifying the network interface for outgoing multicast traffic via SocketOptionName.MulticastInterface on non-Windows platforms The interface for outgoing multicast traffic can be set as follows: socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, IPAddress.HostToNetworkOrder(interfaceIndex)) +6533 area-System.Reflection CustomAttributeDecoder should cache and reuse common arguments to avoid boxing Currently, in CustomAttributeDecoder.DecodeArgument, we'll re-box small integers, true and false every time they're encountered. The boxed values can be reused. +6534 area-System.Reflection Improve custom attribute decoding tests Currently, due to lack of time, some tests just check that we don't throw. A better approach would probably be to generically compare reflection CustomAttributeData to S.R.M CustomAttributeValue for every test attribute applied. Also, there needs to be test cases for malformed custom attributes. Test coverage is at ~70% now with only positive cases. +6535 area-System.Net HttpClient.GetAsync does not call virtual SendAsync can you confirm that this is NOT by design? All [Verb]Async methods except GetAsync end up in one particular SendAsync method ``` public override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) ``` I think GetAsync should not be en exception. +6538 area-System.Net Reduce some allocations in WebUtility.UrlDecode This partially addresses issue #5888. It makes `UrlDecoder` a struct (and fixes the associated comments), and adds a dependency on `System.Buffers` so it can pool arrays. I'll go again and submit the `StringBuilder` changes in another PR, since from my understanding they seem to be an API change. +6541 area-System.Data SqlClient Tests: TdsParser::ThrowExceptionAndWarning called with no exceptions or warnings! Happens intermittently in various test cases. +6542 area-System.Net WebUtility.UrlEncode/Decode methods allocate even when unneeded "As it stands, the [current implementation](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Net/WebUtility.cs#L360-L362) of `WebUtility`'s `UrlEncode`/`Decode` methods allocate even when there is nothing to change in the original string, e.g. `UrlDecode(""Foo"")`. We should probably change this (I may submit a PR) so that it just returns the original string if no changes are needed. " +6543 area-System.Net Short-circuit in UrlEncode/Decode for WebUtility Partially fixes #6542 by short-circuiting in `UrlEncode` if no encoding is required. It uses the already-existing `IsUrlSafeChar` helper method to do this. I think this may break in the case where a UTF-8 encoded string doesn't pass as 'safe' (and needs to be encoded), but its UTF-16 counterpart does. I'm not sure such a case could exist though, since all of the chars validated by `IsUrlSafeChar` should have the same representation when converted to UTF-8 and cast back to `char`. cc @stephentoub @davidsh **edit:** Added commits to deal with this for `UrlDecode` as well. +6544 area-System.Net Avoid a string allocation when parsing numeric HTML entities This change avoids an allocation by `Substring` when decoding numeric HTML entities, like `` for example. cc @stephentoub @davidsh +6546 area-Meta Tests failing on NetBSD I will track here progress on running managed code tests with CoreCLR/CoreFX on NetBSD. For now: 1. I disabled locally all tests failing on FreeBSD or Linux or OSX. 2. I added locally 'timeout 15m' call before each `corerun` execution to address hanging tests. Command: `./run-test.sh --coreclr-bins /usr/pkg/CoreCLR/ --mscorlib-bins /usr/pkg/CoreCLR/ --corefx-tests /public/bin/tests/FreeBSD.AnyCPU.Debug/ --corefx-native-bins ./bin/NetBSD.x64.Debug/Native/` +6550 area-System.Security System.Security.Cryptography.X509Certificates.X509Store hides errors when cert collection is obtained from a closed store "`System.Security.Cryptography.X509Certificates.X509Store` has ``` public X509Certificate2Collection Certificates { get { ``` which silently returns an empty collection if the store is not opened. The code to traverse a store looks something like this: ``` using( var store = new X509Store() ) { store.Open( OpenFlags.ReadOnly ); var allCerts = store.Certificates; //traverse allCerts } ``` if `Open()` call is omitted for any reason - ""no problem"", the code works, just looks at empty collection. This is error hiding. `Add()` and `Remove()` don't allow the store to be not opened in advanced. There's no way to check the store is opened. Something like this: ``` void traverseCerts( X509Store store ) { var allCerts = store.Certificates; //traverse allCerts } ``` cannot even check the store is opened - it gets a collection anyway, maybe empty and it's empty maybe because the store is not opened or because the store is indeed empty. The same behavior is on desktop. This is extremely inconvenient. A `IsOpened` property is surely needed. Also `Certificates` getter likely needs to throw an exception if the store is not opened in advance. " +6554 area-System.Net Disable failing networking tests on OS X These tests have been failing fairly regularly on OS X. I'm disabling them until we can figure out why. https://github.com/dotnet/corefx/issues/5750 cc: @eirceil +6555 area-System.Net cannot compile system.net.sockets "Hi all, trying to compile System.Net.Sockets. It fails with errors: ""System.Net.NameResolution 4.0.0-rc3-23829 is not compatible with DNXCore,Version=v5.0. System.Security.Principal.Windows 4.0.0-rc3-23829 is not compatible with DNXCore,Version=v5.0."" ..build output... Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.' Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.IO.FileSystem (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Collections (≥ 4.0.0) Detected package downgrade: System.Collections from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Collections (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Collections (≥ 4.0.0) Detected package downgrade: System.Globalization from 4.0.10 to 4.0.0 System.Net.Sockets (≥ 1.0.0) -> System.Net.Primitives (≥ 4.0.10) -> System.Private.Networking (≥ 4.0.0) -> System.Globalization (≥ 4.0.10) System.Net.Sockets (≥ 1.0.0) -> System.Globalization (≥ 4.0.0) System.Net.NameResolution 4.0.0-rc3-23829 is not compatible with DNXCore,Version=v5.0. System.Security.Principal.Windows 4.0.0-rc3-23829 is not compatible with DNXCore,Version=v5.0. Some packages are not compatible with DNXCore,Version=v5.0. The project 'System.Net.Sockets' does not specify any target frameworks in 'C:\tfs\git\corefx\src\System.Net.Sockets\ref\project.json'. NuGet package restore failed. 1>------ Rebuild All started: Project: System.Net.Sockets (src\System.Net.Sockets), Configuration: Windows_Debug Any CPU ------ 1> System.Net.Sockets -> C:\tfs\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Net.Sockets\System.Net.Sockets.dll Thanks Damir " +6559 area-System.Net Remove special EOF handling in SocketAsyncContext event loop This code makes the assumption that if the other end of a socket is closed, all reads that will ever be issued on this end are already pending, so it's ok to shut down the read queue. This is not necessarily true; we need to allow other threads to continue to issue reads until they've actually read all data. This is resulting in assert failures (#6506) and is a likely cause of erroneous OperationAborted failures (#5750). It's not clear to me what value the EOF handling is providing currently; currently, aside from erroneously shutting down the queue, the only difference from the normal read event logic is that we also unregister from read events. Since we no longer are able to free handles, etc., on unregistration, it's not clear that we get any benefit from unregistering an event we'll probably never receive again. This change therefore simply removes this logic. Fixes #6506. Fixes #5750. @stephentoub @pgavlin +6563 area-Serialization Improve test coverage xmlserializer Remove unused code and add some test cases. Test coverage gets from 66.2% to 67.7% cc @shmao @SGuyGe @zhenlan +6564 area-Serialization Question: Serialization support going forward from .Net Core 1.0 Hi all, I have heard about support for serialization being discontinued in .Net Core 1.0 as it is not viable for cross-platform. (Paraphrasing from memory) What does this mean in practical terms? Are my code-bases that use BinaryFormatter's Serialize and Deserialize methods going to be completely deprecated, and I'll have to convert my codebase over to say, protobuf-net? Or have I misunderstood? Thanks, -Sam +6570 area-System.Net Fix race in several Sockets tests "These tests were comparing against some checksum values without waiting until those values were actually generated/stored. This change adds synchronization to ensure that the ""sender"" side of the test is done before validating the received data. A nice side benefit of this is that any assertions and cleanup in the sender will also complete before we return from the test case, keeping it better isolated from other tests. Fixes #5234 @CIPop " +6571 area-System.Data Null Argument Exception in AsyncTest.FailureTest on Linux System.Data.SqlClient.ManualTesting.Tests.AsyncTest.FailureTest [FAIL] System.AggregateException : One or more errors occurred. (Value cannot be null.) ---- System.ArgumentNullException : Value cannot be null. Stack Trace: at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout) at System.Data.SqlClient.ManualTesting.Tests.AsyncTest.FailureTest() +6573 area-System.ComponentModel Add missing members of System.ComponentModel namespace `System.ComponentModel` is a common dependency of applications developed for the .NET Framework. Porting these would be easier if more of the namespace were available in .NET Core. This issue proposes to add `System.ComponentModel` members with no designer, UI, or other unavailable dependencies. ## Proposed additions ``` diff --- .NET Core current +++ .NET Core proposed namespace System.ComponentModel { public class ArrayConverter : CollectionConverter { public ArrayConverter(); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); + public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); + public override bool GetPropertiesSupported(ITypeDescriptorContext context); } public class AsyncCompletedEventArgs : EventArgs { public AsyncCompletedEventArgs(Exception error, bool cancelled, object userState); public bool Cancelled { get; } public Exception Error { get; } public object UserState { get; } protected void RaiseExceptionIfNecessary(); } public delegate void AsyncCompletedEventHandler(object sender, AsyncCompletedEventArgs e); public sealed class AsyncOperation { public SynchronizationContext SynchronizationContext { get; } public object UserSuppliedState { get; } ~AsyncOperation(); public void OperationCompleted(); public void Post(SendOrPostCallback d, object arg); public void PostOperationCompleted(SendOrPostCallback d, object arg); } public static class AsyncOperationManager { public static SynchronizationContext SynchronizationContext { get; set; } public static AsyncOperation CreateOperation(object userSuppliedState); } + public class AttributeCollection : ICollection, IEnumerable { + public static readonly AttributeCollection Empty; + protected AttributeCollection(); + public AttributeCollection(params Attribute[] attributes); + protected virtual Attribute[] Attributes { get; } + public int Count { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + public virtual Attribute this[int index] { get; } + public virtual Attribute this[Type attributeType] { get; } + public bool Contains(Attribute attribute); + public bool Contains(Attribute[] attributes); + public void CopyTo(Array array, int index); + public static AttributeCollection FromExisting(AttributeCollection existing, params Attribute[] newAttributes); + protected Attribute GetDefaultAttribute(Type attributeType); + public IEnumerator GetEnumerator(); + public bool Matches(Attribute attribute); + public bool Matches(Attribute[] attributes); } + public class AttributeProviderAttribute : Attribute { + public AttributeProviderAttribute(string typeName); + public AttributeProviderAttribute(string typeName, string propertyName); + public AttributeProviderAttribute(Type type); + public string PropertyName { get; } + public string TypeName { get; } } public class BackgroundWorker : IDisposable { public BackgroundWorker(); public bool CancellationPending { get; } public bool IsBusy { get; } public bool WorkerReportsProgress { get; set; } public bool WorkerSupportsCancellation { get; set; } public event DoWorkEventHandler DoWork; public event ProgressChangedEventHandler ProgressChanged; public event RunWorkerCompletedEventHandler RunWorkerCompleted; public void CancelAsync(); public void Dispose(); protected virtual void Dispose(bool disposing); protected virtual void OnDoWork(DoWorkEventArgs e); protected virtual void OnProgressChanged(ProgressChangedEventArgs e); protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs e); public void ReportProgress(int percentProgress); public void ReportProgress(int percentProgress, object userState); public void RunWorkerAsync(); public void RunWorkerAsync(object argument); } public abstract class BaseNumberConverter : TypeConverter { protected BaseNumberConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type tdestinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class BooleanConverter : TypeConverter { public BooleanConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); + public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); + public override bool GetStandardValuesSupported(ITypeDescriptorContext context); } + public sealed class BrowsableAttribute : Attribute { + public static readonly BrowsableAttribute Default; + public static readonly BrowsableAttribute No; + public static readonly BrowsableAttribute Yes; + public BrowsableAttribute(bool browsable); + public bool Browsable { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } public class ByteConverter : BaseNumberConverter { public ByteConverter(); } public class CancelEventArgs : EventArgs { public CancelEventArgs(); public CancelEventArgs(bool cancel); public bool Cancel { get; set; } } + public delegate void CancelEventHandler(object sender, CancelEventArgs e); + public class CategoryAttribute : Attribute { + public CategoryAttribute(); + public CategoryAttribute(string category); + public static CategoryAttribute Action { get; } + public static CategoryAttribute Appearance { get; } + public static CategoryAttribute Asynchronous { get; } + public static CategoryAttribute Behavior { get; } + public string Category { get; } + public static CategoryAttribute Data { get; } + public static CategoryAttribute Default { get; } + public static CategoryAttribute Design { get; } + public static CategoryAttribute DragDrop { get; } + public static CategoryAttribute Focus { get; } + public static CategoryAttribute Format { get; } + public static CategoryAttribute Key { get; } + public static CategoryAttribute Layout { get; } + public static CategoryAttribute Mouse { get; } + public static CategoryAttribute WindowStyle { get; } + public override bool Equals(object obj); + public override int GetHashCode(); + protected virtual string GetLocalizedString(string value); } public class CharConverter : TypeConverter { public CharConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } + public enum CollectionChangeAction { + Add = 1, + Refresh = 3, + Remove = 2, } + public class CollectionChangeEventArgs : EventArgs { + public CollectionChangeEventArgs(CollectionChangeAction action, object element); + public virtual CollectionChangeAction Action { get; } + public virtual object Element { get; } } + public delegate void CollectionChangeEventHandler(object sender, CollectionChangeEventArgs e); public class CollectionConverter : TypeConverter { public CollectionConverter(); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); + public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); + public override bool GetPropertiesSupported(ITypeDescriptorContext context); } public class ComponentCollection { } + public abstract class CustomTypeDescriptor : ICustomTypeDescriptor { + protected CustomTypeDescriptor(); + protected CustomTypeDescriptor(ICustomTypeDescriptor parent); + public virtual AttributeCollection GetAttributes(); + public virtual string GetClassName(); + public virtual string GetComponentName(); + public virtual TypeConverter GetConverter(); + public virtual EventDescriptor GetDefaultEvent(); + public virtual PropertyDescriptor GetDefaultProperty(); + public virtual object GetEditor(Type editorBaseType); + public virtual EventDescriptorCollection GetEvents(); + public virtual EventDescriptorCollection GetEvents(Attribute[] attributes); + public virtual PropertyDescriptorCollection GetProperties(); + public virtual PropertyDescriptorCollection GetProperties(Attribute[] attributes); + public virtual object GetPropertyOwner(PropertyDescriptor pd); } public class DataErrorsChangedEventArgs : EventArgs { public DataErrorsChangedEventArgs(string propertyName); public virtual string PropertyName { get; } } public class DateTimeConverter : TypeConverter { public DateTimeConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class DateTimeOffsetConverter : TypeConverter { public DateTimeOffsetConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class DecimalConverter : BaseNumberConverter { public DecimalConverter(); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } + public sealed class DefaultEventAttribute : Attribute { + public static readonly DefaultEventAttribute Default; + public DefaultEventAttribute(string name); + public string Name { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public sealed class DefaultPropertyAttribute : Attribute { + public static readonly DefaultPropertyAttribute Default; + public DefaultPropertyAttribute(string name); + public string Name { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } public class DefaultValueAttribute : Attribute { public DefaultValueAttribute(bool value); public DefaultValueAttribute(byte value); public DefaultValueAttribute(char value); public DefaultValueAttribute(double value); public DefaultValueAttribute(short value); public DefaultValueAttribute(int value); public DefaultValueAttribute(long value); public DefaultValueAttribute(object value); public DefaultValueAttribute(float value); public DefaultValueAttribute(string value); public DefaultValueAttribute(Type type, string value); public virtual object Value { get; } public override bool Equals(object obj); public override int GetHashCode(); } + public class DescriptionAttribute : Attribute { + public static readonly DescriptionAttribute Default; + public DescriptionAttribute(); + public DescriptionAttribute(string description); + public virtual string Description { get; } + protected string DescriptionValue { get; set; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public sealed class DesignerCategoryAttribute : Attribute { + public static readonly DesignerCategoryAttribute Component; + public static readonly DesignerCategoryAttribute Default; + public static readonly DesignerCategoryAttribute Form; + public static readonly DesignerCategoryAttribute Generic; + public DesignerCategoryAttribute(); + public DesignerCategoryAttribute(string category); + public string Category { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public enum DesignerSerializationVisibility { + Content = 2, + Hidden = 0, + Visible = 1, } + public sealed class DesignerSerializationVisibilityAttribute : Attribute { + public static readonly DesignerSerializationVisibilityAttribute Content; + public static readonly DesignerSerializationVisibilityAttribute Default; + public static readonly DesignerSerializationVisibilityAttribute Hidden; + public static readonly DesignerSerializationVisibilityAttribute Visible; + public DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility visibility); + public DesignerSerializationVisibility Visibility { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public class DesignOnlyAttribute : Attribute { + public static readonly DesignOnlyAttribute Default; + public static readonly DesignOnlyAttribute No; + public static readonly DesignOnlyAttribute Yes; + public DesignOnlyAttribute(bool isDesignOnly); + public bool IsDesignOnly { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public class DisplayNameAttribute : Attribute { + public static readonly DisplayNameAttribute Default; + public DisplayNameAttribute(); + public DisplayNameAttribute(string displayName); + public virtual string DisplayName { get; } + protected string DisplayNameValue { get; set; } + public override bool Equals(object obj); + public override int GetHashCode(); } public class DoubleConverter : BaseNumberConverter { public DoubleConverter(); } public class DoWorkEventArgs : EventArgs { public DoWorkEventArgs(object argument); public object Argument { get; } public bool Cancel { get; set; } public object Result { get; set; } } public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e); public sealed class EditorBrowsableAttribute : Attribute { public EditorBrowsableAttribute(EditorBrowsableState state); public EditorBrowsableState State { get; } public override bool Equals(object obj); public override int GetHashCode(); } public enum EditorBrowsableState { Advanced = 2, Always = 0, Never = 1, } public class EnumConverter : TypeConverter { public EnumConverter(Type type); + protected virtual IComparer Comparer { get; } protected Type EnumType { get; } + protected TypeConverter.StandardValuesCollection Values { get; set; } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); + public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); + public override bool GetStandardValuesSupported(ITypeDescriptorContext context); + public override bool IsValid(ITypeDescriptorContext context, object value); } + public abstract class EventDescriptor : MemberDescriptor { + protected EventDescriptor(MemberDescriptor descr); + protected EventDescriptor(MemberDescriptor descr, Attribute[] attrs); + protected EventDescriptor(string name, Attribute[] attrs); + public abstract Type ComponentType { get; } + public abstract Type EventType { get; } + public abstract bool IsMulticast { get; } + public abstract void AddEventHandler(object component, Delegate value); + public abstract void RemoveEventHandler(object component, Delegate value); } + public class EventDescriptorCollection : ICollection, IEnumerable, IList { + public static readonly EventDescriptorCollection Empty; + public EventDescriptorCollection(EventDescriptor[] events); + public EventDescriptorCollection(EventDescriptor[] events, bool readOnly); + public int Count { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IList.IsFixedSize { get; } + bool System.Collections.IList.IsReadOnly { get; } + object System.Collections.IList.this[int index] { get; set; } + public virtual EventDescriptor this[int index] { get; } + public virtual EventDescriptor this[string name] { get; } + public int Add(EventDescriptor value); + public void Clear(); + public bool Contains(EventDescriptor value); + public virtual EventDescriptor Find(string name, bool ignoreCase); + public IEnumerator GetEnumerator(); + public int IndexOf(EventDescriptor value); + public void Insert(int index, EventDescriptor value); + protected void InternalSort(IComparer sorter); + protected void InternalSort(string[] names); + public void Remove(EventDescriptor value); + public void RemoveAt(int index); + public virtual EventDescriptorCollection Sort(); + public virtual EventDescriptorCollection Sort(IComparer comparer); + public virtual EventDescriptorCollection Sort(string[] names); + public virtual EventDescriptorCollection Sort(string[] names, IComparer comparer); + void System.Collections.ICollection.CopyTo(Array array, int index); + int System.Collections.IList.Add(object value); + bool System.Collections.IList.Contains(object value); + int System.Collections.IList.IndexOf(object value); + void System.Collections.IList.Insert(int index, object value); + void System.Collections.IList.Remove(object value); } + public sealed class EventHandlerList : IDisposable { + public EventHandlerList(); + public Delegate this[object key] { get; set; } + public void AddHandler(object key, Delegate value); + public void AddHandlers(EventHandlerList listToAddFrom); + public void Dispose(); + public void RemoveHandler(object key, Delegate value); } + public sealed class ExtenderProvidedPropertyAttribute : Attribute { + public ExtenderProvidedPropertyAttribute(); + public PropertyDescriptor ExtenderProperty { get; } + public IExtenderProvider Provider { get; } + public Type ReceiverType { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } public class GuidConverter : TypeConverter { public GuidConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } + public class HandledEventArgs : EventArgs { + public HandledEventArgs(); + public HandledEventArgs(bool defaultHandledValue); + public bool Handled { get; set; } } + public delegate void HandledEventHandler(object sender, HandledEventArgs e); public interface IChangeTracking { bool IsChanged { get; } void AcceptChanges(); } public interface IComponent : IDisposable { ISite Site { get; set; } event EventHandler Disposed; } public interface IContainer : IDisposable { ComponentCollection Components { get; } void Add(IComponent component); void Add(IComponent component, string name); void Remove(IComponent component); } + public interface ICustomTypeDescriptor { + AttributeCollection GetAttributes(); + string GetClassName(); + string GetComponentName(); + TypeConverter GetConverter(); + EventDescriptor GetDefaultEvent(); + PropertyDescriptor GetDefaultProperty(); + object GetEditor(Type editorBaseType); + EventDescriptorCollection GetEvents(); + EventDescriptorCollection GetEvents(Attribute[] attributes); + PropertyDescriptorCollection GetProperties(); + PropertyDescriptorCollection GetProperties(Attribute[] attributes); + object GetPropertyOwner(PropertyDescriptor pd); } public interface IEditableObject { void BeginEdit(); void CancelEdit(); void EndEdit(); } + public interface IExtenderProvider { + bool CanExtend(object extendee); } + public interface IListSource { + bool ContainsListCollection { get; } + IList GetList(); } + public sealed class ImmutableObjectAttribute : Attribute { + public static readonly ImmutableObjectAttribute Default; + public static readonly ImmutableObjectAttribute No; + public static readonly ImmutableObjectAttribute Yes; + public ImmutableObjectAttribute(bool immutable); + public bool Immutable { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public sealed class InitializationEventAttribute : Attribute { + public InitializationEventAttribute(string eventName); + public string EventName { get; } } public interface INotifyDataErrorInfo { bool HasErrors { get; } event EventHandler ErrorsChanged; IEnumerable GetErrors(string propertyName); } public interface INotifyPropertyChanged { event PropertyChangedEventHandler PropertyChanged; } public interface INotifyPropertyChanging { event PropertyChangingEventHandler PropertyChanging; } public class Int16Converter : BaseNumberConverter { public Int16Converter(); } public class Int32Converter : BaseNumberConverter { public Int32Converter(); } public class Int64Converter : BaseNumberConverter { public Int64Converter(); } + public class InvalidAsynchronousStateException : ArgumentException { + public InvalidAsynchronousStateException(); + public InvalidAsynchronousStateException(string message); + public InvalidAsynchronousStateException(string message, Exception innerException); } public interface IRevertibleChangeTracking : IChangeTracking { void RejectChanges(); } public interface ISite : IServiceProvider { IComponent Component { get; } IContainer Container { get; } bool DesignMode { get; } string Name { get; set; } } public interface ITypeDescriptorContext : IServiceProvider { IContainer Container { get; } object Instance { get; } PropertyDescriptor PropertyDescriptor { get; } void OnComponentChanged(); bool OnComponentChanging(); } + public interface ITypedList { + PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors); + string GetListName(PropertyDescriptor[] listAccessors); } + public sealed class LocalizableAttribute : Attribute { + public static readonly LocalizableAttribute Default; + public static readonly LocalizableAttribute No; + public static readonly LocalizableAttribute Yes; + public LocalizableAttribute(bool isLocalizable); + public bool IsLocalizable { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public abstract class MemberDescriptor { + protected MemberDescriptor(MemberDescriptor descr); + protected MemberDescriptor(MemberDescriptor oldMemberDescriptor, Attribute[] newAttributes); + protected MemberDescriptor(string name); + protected MemberDescriptor(string name, Attribute[] attributes); + protected virtual Attribute[] AttributeArray { get; set; } + public virtual AttributeCollection Attributes { get; } + public virtual string Category { get; } + public virtual string Description { get; } + public virtual bool DesignTimeOnly { get; } + public virtual string DisplayName { get; } + public virtual bool IsBrowsable { get; } + public virtual string Name { get; } + protected virtual int NameHashCode { get; } + protected virtual AttributeCollection CreateAttributeCollection(); + public override bool Equals(object obj); + protected virtual void FillAttributes(IList attributeList); + protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType); + protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType, bool publicOnly); + public override int GetHashCode(); + protected virtual object GetInvocationTarget(Type type, object instance); + protected static ISite GetSite(object component); } + public sealed class MergablePropertyAttribute : Attribute { + public static readonly MergablePropertyAttribute Default; + public static readonly MergablePropertyAttribute No; + public static readonly MergablePropertyAttribute Yes; + public MergablePropertyAttribute(bool allowMerge); + public bool AllowMerge { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } public class MultilineStringConverter : TypeConverter { public MultilineStringConverter(); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); + public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); + public override bool GetPropertiesSupported(ITypeDescriptorContext context); } + public sealed class NotifyParentPropertyAttribute : Attribute { + public static readonly NotifyParentPropertyAttribute Default; + public static readonly NotifyParentPropertyAttribute No; + public static readonly NotifyParentPropertyAttribute Yes; + public NotifyParentPropertyAttribute(bool notifyParent); + public bool NotifyParent { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } public class NullableConverter : TypeConverter { public NullableConverter(Type type); public Type NullableType { get; } public Type UnderlyingType { get; } public TypeConverter UnderlyingTypeConverter { get; } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); + public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues); + public override bool GetCreateInstanceSupported(ITypeDescriptorContext context); + public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); + public override bool GetPropertiesSupported(ITypeDescriptorContext context); + public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); + public override bool GetStandardValuesSupported(ITypeDescriptorContext context); + public override bool IsValid(ITypeDescriptorContext context, object value); } + public sealed class ParenthesizePropertyNameAttribute : Attribute { + public static readonly ParenthesizePropertyNameAttribute Default; + public ParenthesizePropertyNameAttribute(); + public ParenthesizePropertyNameAttribute(bool needParenthesis); + public bool NeedParenthesis { get; } + public override bool Equals(object o); + public override int GetHashCode(); } public class ProgressChangedEventArgs : EventArgs { public ProgressChangedEventArgs(int progressPercentage, object userState); public int ProgressPercentage { get; } public object UserState { get; } } public delegate void ProgressChangedEventHandler(object sender, ProgressChangedEventArgs e); public class PropertyChangedEventArgs : EventArgs { public PropertyChangedEventArgs(string propertyName); public virtual string PropertyName { get; } } public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e); public class PropertyChangingEventArgs : EventArgs { public PropertyChangingEventArgs(string propertyName); public virtual string PropertyName { get; } } public delegate void PropertyChangingEventHandler(object sender, PropertyChangingEventArgs e); public abstract class PropertyDescriptor : MemberDescriptor { + protected PropertyDescriptor(MemberDescriptor descr); + protected PropertyDescriptor(MemberDescriptor descr, Attribute[] attrs); + protected PropertyDescriptor(string name, Attribute[] attrs); + public abstract Type ComponentType { get; } + public virtual TypeConverter Converter { get; } + public virtual bool IsLocalizable { get; } + public abstract bool IsReadOnly { get; } + public abstract Type PropertyType { get; } + public DesignerSerializationVisibility SerializationVisibility { get; } + public virtual bool SupportsChangeEvents { get; } + public virtual void AddValueChanged(object component, EventHandler handler); + public abstract bool CanResetValue(object component); + protected object CreateInstance(Type type); + public override bool Equals(object obj); + protected override void FillAttributes(IList attributeList); + public PropertyDescriptorCollection GetChildProperties(); + public PropertyDescriptorCollection GetChildProperties(Attribute[] filter); + public PropertyDescriptorCollection GetChildProperties(object instance); + public virtual PropertyDescriptorCollection GetChildProperties(object instance, Attribute[] filter); + public virtual object GetEditor(Type editorBaseType); + public override int GetHashCode(); + protected override object GetInvocationTarget(Type type, object instance); + protected Type GetTypeFromName(string typeName); + public abstract object GetValue(object component); + protected internal EventHandler GetValueChangedHandler(object component); + protected virtual void OnValueChanged(object component, EventArgs e); + public virtual void RemoveValueChanged(object component, EventHandler handler); + public abstract void ResetValue(object component); + public abstract void SetValue(object component, object value); + public abstract bool ShouldSerializeValue(object component); } + public class PropertyDescriptorCollection : ICollection, IDictionary, IEnumerable, IList { + public static readonly PropertyDescriptorCollection Empty; + public PropertyDescriptorCollection(PropertyDescriptor[] properties); + public PropertyDescriptorCollection(PropertyDescriptor[] properties, bool readOnly); + public int Count { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IDictionary.IsFixedSize { get; } + bool System.Collections.IDictionary.IsReadOnly { get; } + object System.Collections.IDictionary.this[object key] { get; set; } + ICollection System.Collections.IDictionary.Keys { get; } + ICollection System.Collections.IDictionary.Values { get; } + bool System.Collections.IList.IsFixedSize { get; } + bool System.Collections.IList.IsReadOnly { get; } + object System.Collections.IList.this[int index] { get; set; } + public virtual PropertyDescriptor this[int index] { get; } + public virtual PropertyDescriptor this[string name] { get; } + public int Add(PropertyDescriptor value); + public void Clear(); + public bool Contains(PropertyDescriptor value); + public void CopyTo(Array array, int index); + public virtual PropertyDescriptor Find(string name, bool ignoreCase); + public virtual IEnumerator GetEnumerator(); + public int IndexOf(PropertyDescriptor value); + public void Insert(int index, PropertyDescriptor value); + protected void InternalSort(IComparer sorter); + protected void InternalSort(string[] names); + public void Remove(PropertyDescriptor value); + public void RemoveAt(int index); + public virtual PropertyDescriptorCollection Sort(); + public virtual PropertyDescriptorCollection Sort(IComparer comparer); + public virtual PropertyDescriptorCollection Sort(string[] names); + public virtual PropertyDescriptorCollection Sort(string[] names, IComparer comparer); + void System.Collections.IDictionary.Add(object key, object value); + bool System.Collections.IDictionary.Contains(object key); + IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator(); + void System.Collections.IDictionary.Remove(object key); + int System.Collections.IList.Add(object value); + bool System.Collections.IList.Contains(object value); + int System.Collections.IList.IndexOf(object value); + void System.Collections.IList.Insert(int index, object value); + void System.Collections.IList.Remove(object value); } + public sealed class ProvidePropertyAttribute : Attribute { + public ProvidePropertyAttribute(string propertyName, string receiverTypeName); + public ProvidePropertyAttribute(string propertyName, Type receiverType); + public string PropertyName { get; } + public string ReceiverTypeName { get; } + public override bool Equals(object obj); + public override int GetHashCode(); } + public sealed class ReadOnlyAttribute : Attribute { + public static readonly ReadOnlyAttribute Default; + public static readonly ReadOnlyAttribute No; + public static readonly ReadOnlyAttribute Yes; + public ReadOnlyAttribute(bool isReadOnly); + public bool IsReadOnly { get; } + public override bool Equals(object value); + public override int GetHashCode(); } + public class RefreshEventArgs : EventArgs { + public RefreshEventArgs(object componentChanged); + public RefreshEventArgs(Type typeChanged); + public object ComponentChanged { get; } + public Type TypeChanged { get; } } + public delegate void RefreshEventHandler(RefreshEventArgs e); + public enum RefreshProperties { + All = 1, + None = 0, + Repaint = 2, } + public sealed class RefreshPropertiesAttribute : Attribute { + public static readonly RefreshPropertiesAttribute All; + public static readonly RefreshPropertiesAttribute Default; + public static readonly RefreshPropertiesAttribute Repaint; + public RefreshPropertiesAttribute(RefreshProperties refresh); + public RefreshProperties RefreshProperties { get; } + public override bool Equals(object value); + public override int GetHashCode(); } public class RunWorkerCompletedEventArgs : AsyncCompletedEventArgs { public RunWorkerCompletedEventArgs(object result, Exception error, bool cancelled); public object Result { get; } public new object UserState { get; } } public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs e); public class SByteConverter : BaseNumberConverter { public SByteConverter(); } public class SingleConverter : BaseNumberConverter { public SingleConverter(); } public class StringConverter : TypeConverter { public StringConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); } public class TimeSpanConverter : TypeConverter { public TimeSpanConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class TypeConverter { public TypeConverter(); public virtual bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public bool CanConvertFrom(Type sourceType); public virtual bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public bool CanConvertTo(Type destinationType); public virtual object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public object ConvertFrom(object value); + public object ConvertFromInvariantString(ITypeDescriptorContext context, string text); public object ConvertFromInvariantString(string text); public object ConvertFromString(ITypeDescriptorContext context, CultureInfo culture, string text); + public object ConvertFromString(ITypeDescriptorContext context, string text); public object ConvertFromString(string text); public virtual object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public object ConvertTo(object value, Type destinationType); + public string ConvertToInvariantString(ITypeDescriptorContext context, object value); public string ConvertToInvariantString(object value); public string ConvertToString(ITypeDescriptorContext context, CultureInfo culture, object value); + public string ConvertToString(ITypeDescriptorContext context, object value); public string ConvertToString(object value); + public object CreateInstance(IDictionary propertyValues); + public virtual object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues); protected Exception GetConvertFromException(object value); protected Exception GetConvertToException(object value, Type destinationType); + public bool GetCreateInstanceSupported(); + public virtual bool GetCreateInstanceSupported(ITypeDescriptorContext context); + public PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value); + public virtual PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); + public PropertyDescriptorCollection GetProperties(object value); + public bool GetPropertiesSupported(); + public virtual bool GetPropertiesSupported(ITypeDescriptorContext context); + public ICollection GetStandardValues(); + public virtual TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); + public bool GetStandardValuesExclusive(); + public virtual bool GetStandardValuesExclusive(ITypeDescriptorContext context); + public bool GetStandardValuesSupported(); + public virtual bool GetStandardValuesSupported(ITypeDescriptorContext context); + public virtual bool IsValid(ITypeDescriptorContext context, object value); + public bool IsValid(object value); + protected PropertyDescriptorCollection SortProperties(PropertyDescriptorCollection props, string[] names); + protected abstract class SimplePropertyDescriptor : PropertyDescriptor { + protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType); + protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType, Attribute[] attributes); + public override Type ComponentType { get; } + public override bool IsReadOnly { get; } + public override Type PropertyType { get; } + public override bool CanResetValue(object component); + public override void ResetValue(object component); + public override bool ShouldSerializeValue(object component); } + public class StandardValuesCollection : ICollection, IEnumerable { + public StandardValuesCollection(ICollection values); + public int Count { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + public object this[int index] { get; } + public void CopyTo(Array array, int index); + public IEnumerator GetEnumerator(); } } public sealed class TypeConverterAttribute : Attribute { + public static readonly TypeConverterAttribute Default; + public TypeConverterAttribute(); public TypeConverterAttribute(string typeName); public TypeConverterAttribute(Type type); public string ConverterTypeName { get; } public override bool Equals(object obj); public override int GetHashCode(); } + public abstract class TypeDescriptionProvider { + protected TypeDescriptionProvider(); + protected TypeDescriptionProvider(TypeDescriptionProvider parent); + public virtual object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args); + public virtual IDictionary GetCache(object instance); + public virtual ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance); + protected internal virtual IExtenderProvider[] GetExtenderProviders(object instance); + public virtual string GetFullComponentName(object component); + public Type GetReflectionType(object instance); + public Type GetReflectionType(Type objectType); + public virtual Type GetReflectionType(Type objectType, object instance); + public virtual Type GetRuntimeType(Type reflectionType); + public ICustomTypeDescriptor GetTypeDescriptor(object instance); + public ICustomTypeDescriptor GetTypeDescriptor(Type objectType); + public virtual ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance); + public virtual bool IsSupportedType(Type type); } + public sealed class TypeDescriptionProviderAttribute : Attribute { + public TypeDescriptionProviderAttribute(string typeName); + public TypeDescriptionProviderAttribute(Type type); + public string TypeName { get; } } public sealed class TypeDescriptor { + public static Type InterfaceType { get; } + public static event RefreshEventHandler Refreshed; + public static TypeDescriptionProvider AddAttributes(object instance, params Attribute[] attributes); + public static TypeDescriptionProvider AddAttributes(Type type, params Attribute[] attributes); + public static void AddEditorTable(Type editorBaseType, Hashtable table); + public static void AddProvider(TypeDescriptionProvider provider, object instance); + public static void AddProvider(TypeDescriptionProvider provider, Type type); + public static void AddProviderTransparent(TypeDescriptionProvider provider, object instance); + public static void AddProviderTransparent(TypeDescriptionProvider provider, Type type); + public static void CreateAssociation(object primary, object secondary); + public static EventDescriptor CreateEvent(Type componentType, EventDescriptor oldEventDescriptor, params Attribute[] attributes); + public static EventDescriptor CreateEvent(Type componentType, string name, Type type, params Attribute[] attributes); + public static object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args); + public static PropertyDescriptor CreateProperty(Type componentType, PropertyDescriptor oldPropertyDescriptor, params Attribute[] attributes); + public static PropertyDescriptor CreateProperty(Type componentType, string name, Type type, params Attribute[] attributes); + public static object GetAssociation(Type type, object primary); + public static AttributeCollection GetAttributes(object component); + public static AttributeCollection GetAttributes(object component, bool noCustomTypeDesc); + public static AttributeCollection GetAttributes(Type componentType); + public static string GetClassName(object component); + public static string GetClassName(object component, bool noCustomTypeDesc); + public static string GetClassName(Type componentType); + public static string GetComponentName(object component); + public static string GetComponentName(object component, bool noCustomTypeDesc); + public static TypeConverter GetConverter(object component); + public static TypeConverter GetConverter(object component, bool noCustomTypeDesc); public static TypeConverter GetConverter(Type type); + public static EventDescriptor GetDefaultEvent(object component); + public static EventDescriptor GetDefaultEvent(object component, bool noCustomTypeDesc); + public static EventDescriptor GetDefaultEvent(Type componentType); + public static PropertyDescriptor GetDefaultProperty(object component); + public static PropertyDescriptor GetDefaultProperty(object component, bool noCustomTypeDesc); + public static PropertyDescriptor GetDefaultProperty(Type componentType); + public static object GetEditor(object component, Type editorBaseType); + public static object GetEditor(object component, Type editorBaseType, bool noCustomTypeDesc); + public static object GetEditor(Type type, Type editorBaseType); + public static EventDescriptorCollection GetEvents(object component); + public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes); + public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes, bool noCustomTypeDesc); + public static EventDescriptorCollection GetEvents(object component, bool noCustomTypeDesc); + public static EventDescriptorCollection GetEvents(Type componentType); + public static EventDescriptorCollection GetEvents(Type componentType, Attribute[] attributes); + public static string GetFullComponentName(object component); + public static PropertyDescriptorCollection GetProperties(object component); + public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes); + public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes, bool noCustomTypeDesc); + public static PropertyDescriptorCollection GetProperties(object component, bool noCustomTypeDesc); + public static PropertyDescriptorCollection GetProperties(Type componentType); + public static PropertyDescriptorCollection GetProperties(Type componentType, Attribute[] attributes); + public static TypeDescriptionProvider GetProvider(object instance); + public static TypeDescriptionProvider GetProvider(Type type); + public static Type GetReflectionType(object instance); + public static Type GetReflectionType(Type type); + public static void Refresh(object component); + public static void Refresh(Assembly assembly); + public static void Refresh(Module module); + public static void Refresh(Type type); + public static void RemoveAssociation(object primary, object secondary); + public static void RemoveAssociations(object primary); + public static void RemoveProvider(TypeDescriptionProvider provider, object instance); + public static void RemoveProvider(TypeDescriptionProvider provider, Type type); + public static void RemoveProviderTransparent(TypeDescriptionProvider provider, object instance); + public static void RemoveProviderTransparent(TypeDescriptionProvider provider, Type type); + public static void SortDescriptorArray(IList infos); } public abstract class TypeListConverter : TypeConverter { protected TypeListConverter(Type[] types); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); + public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); + public override bool GetStandardValuesSupported(ITypeDescriptorContext context); } public class UInt16Converter : BaseNumberConverter { public UInt16Converter(); } public class UInt32Converter : BaseNumberConverter { public UInt32Converter(); } public class UInt64Converter : BaseNumberConverter { public UInt64Converter(); } public class Win32Exception : Exception { public Win32Exception(); public Win32Exception(int error); public Win32Exception(int error, string message); public Win32Exception(string message); public Win32Exception(string message, Exception innerException); public int NativeErrorCode { get; } } } ``` ## .NET Framework vs .NET Core proposed ``` diff --- .NET Framework 4.6.1 +++ .NET Core proposed namespace System.ComponentModel { - public class AddingNewEventArgs : EventArgs { - public AddingNewEventArgs(); - public AddingNewEventArgs(object newObject); - public object NewObject { get; set; } } - public delegate void AddingNewEventHandler(object sender, AddingNewEventArgs e); - public sealed class AmbientValueAttribute : Attribute { - public AmbientValueAttribute(bool value); - public AmbientValueAttribute(byte value); - public AmbientValueAttribute(char value); - public AmbientValueAttribute(double value); - public AmbientValueAttribute(short value); - public AmbientValueAttribute(int value); - public AmbientValueAttribute(long value); - public AmbientValueAttribute(object value); - public AmbientValueAttribute(float value); - public AmbientValueAttribute(string value); - public AmbientValueAttribute(Type type, string value); - public object Value { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } public class ArrayConverter : CollectionConverter { public ArrayConverter(); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); public override bool GetPropertiesSupported(ITypeDescriptorContext context); } public class AsyncCompletedEventArgs : EventArgs { - public AsyncCompletedEventArgs(); public AsyncCompletedEventArgs(Exception error, bool cancelled, object userState); public bool Cancelled { get; } public Exception Error { get; } public object UserState { get; } protected void RaiseExceptionIfNecessary(); } public delegate void AsyncCompletedEventHandler(object sender, AsyncCompletedEventArgs e); public sealed class AsyncOperation { public SynchronizationContext SynchronizationContext { get; } public object UserSuppliedState { get; } ~AsyncOperation(); public void OperationCompleted(); public void Post(SendOrPostCallback d, object arg); public void PostOperationCompleted(SendOrPostCallback d, object arg); } public static class AsyncOperationManager { public static SynchronizationContext SynchronizationContext { get; set; } public static AsyncOperation CreateOperation(object userSuppliedState); } public class AttributeCollection : ICollection, IEnumerable { public static readonly AttributeCollection Empty; protected AttributeCollection(); public AttributeCollection(params Attribute[] attributes); protected virtual Attribute[] Attributes { get; } public int Count { get; } - int System.Collections.ICollection.Count { get; } bool System.Collections.ICollection.IsSynchronized { get; } object System.Collections.ICollection.SyncRoot { get; } public virtual Attribute this[int index] { get; } public virtual Attribute this[Type attributeType] { get; } public bool Contains(Attribute attribute); public bool Contains(Attribute[] attributes); public void CopyTo(Array array, int index); public static AttributeCollection FromExisting(AttributeCollection existing, params Attribute[] newAttributes); protected Attribute GetDefaultAttribute(Type attributeType); public IEnumerator GetEnumerator(); public bool Matches(Attribute attribute); public bool Matches(Attribute[] attributes); - IEnumerator System.Collections.IEnumerable.GetEnumerator(); } public class AttributeProviderAttribute : Attribute { public AttributeProviderAttribute(string typeName); public AttributeProviderAttribute(string typeName, string propertyName); public AttributeProviderAttribute(Type type); public string PropertyName { get; } public string TypeName { get; } } public class BackgroundWorker : ComponentIDisposable { public BackgroundWorker(); public bool CancellationPending { get; } public bool IsBusy { get; } public bool WorkerReportsProgress { get; set; } public bool WorkerSupportsCancellation { get; set; } public event DoWorkEventHandler DoWork; public event ProgressChangedEventHandler ProgressChanged; public event RunWorkerCompletedEventHandler RunWorkerCompleted; public void CancelAsync(); + public void Dispose(); + protected virtual void Dispose(bool disposing); protected virtual void OnDoWork(DoWorkEventArgs e); protected virtual void OnProgressChanged(ProgressChangedEventArgs e); protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs e); public void ReportProgress(int percentProgress); public void ReportProgress(int percentProgress, object userState); public void RunWorkerAsync(); public void RunWorkerAsync(object argument); } public abstract class BaseNumberConverter : TypeConverter { protected BaseNumberConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type tdestinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } - public sealed class BindableAttribute : Attribute { - public static readonly BindableAttribute Default; - public static readonly BindableAttribute No; - public static readonly BindableAttribute Yes; - public BindableAttribute(bool bindable); - public BindableAttribute(bool bindable, BindingDirection direction); - public BindableAttribute(BindableSupport flags); - public BindableAttribute(BindableSupport flags, BindingDirection direction); - public bool Bindable { get; } - public BindingDirection Direction { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public enum BindableSupport { - Default = 2, - No = 0, - Yes = 1, } - public enum BindingDirection { - OneWay = 0, - TwoWay = 1, } - public class BindingList : Collection, IBindingList, ICancelAddNew, ICollection, IEnumerable, IList, IRaiseItemChangedEvents { - public BindingList(); - public BindingList(IList list); - public bool AllowEdit { get; set; } - public bool AllowNew { get; set; } - public bool AllowRemove { get; set; } - protected virtual bool IsSortedCore { get; } - public bool RaiseListChangedEvents { get; set; } - protected virtual ListSortDirection SortDirectionCore { get; } - protected virtual PropertyDescriptor SortPropertyCore { get; } - protected virtual bool SupportsChangeNotificationCore { get; } - protected virtual bool SupportsSearchingCore { get; } - protected virtual bool SupportsSortingCore { get; } - bool System.ComponentModel.IBindingList.AllowEdit { get; } - bool System.ComponentModel.IBindingList.AllowNew { get; } - bool System.ComponentModel.IBindingList.AllowRemove { get; } - bool System.ComponentModel.IBindingList.IsSorted { get; } - ListSortDirection System.ComponentModel.IBindingList.SortDirection { get; } - PropertyDescriptor System.ComponentModel.IBindingList.SortProperty { get; } - bool System.ComponentModel.IBindingList.SupportsChangeNotification { get; } - bool System.ComponentModel.IBindingList.SupportsSearching { get; } - bool System.ComponentModel.IBindingList.SupportsSorting { get; } - bool System.ComponentModel.IRaiseItemChangedEvents.RaisesItemChangedEvents { get; } - public event AddingNewEventHandler AddingNew; - public event ListChangedEventHandler ListChanged; - public T AddNew(); - protected virtual object AddNewCore(); - protected virtual void ApplySortCore(PropertyDescriptor prop, ListSortDirection direction); - public virtual void CancelNew(int itemIndex); - protected override void ClearItems(); - public virtual void EndNew(int itemIndex); - protected virtual int FindCore(PropertyDescriptor prop, object key); - protected override void InsertItem(int index, T item); - protected virtual void OnAddingNew(AddingNewEventArgs e); - protected virtual void OnListChanged(ListChangedEventArgs e); - protected override void RemoveItem(int index); - protected virtual void RemoveSortCore(); - public void ResetBindings(); - public void ResetItem(int position); - protected override void SetItem(int index, T item); - void System.ComponentModel.IBindingList.AddIndex(PropertyDescriptor prop); - object System.ComponentModel.IBindingList.AddNew(); - void System.ComponentModel.IBindingList.ApplySort(PropertyDescriptor prop, ListSortDirection direction); - int System.ComponentModel.IBindingList.Find(PropertyDescriptor prop, object key); - void System.ComponentModel.IBindingList.RemoveIndex(PropertyDescriptor prop); - void System.ComponentModel.IBindingList.RemoveSort(); } public class BooleanConverter : TypeConverter { public BooleanConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); public override bool GetStandardValuesSupported(ITypeDescriptorContext context); } public sealed class BrowsableAttribute : Attribute { public static readonly BrowsableAttribute Default; public static readonly BrowsableAttribute No; public static readonly BrowsableAttribute Yes; public BrowsableAttribute(bool browsable); public bool Browsable { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class ByteConverter : BaseNumberConverter { public ByteConverter(); } public class CancelEventArgs : EventArgs { public CancelEventArgs(); public CancelEventArgs(bool cancel); public bool Cancel { get; set; } } public delegate void CancelEventHandler(object sender, CancelEventArgs e); public class CategoryAttribute : Attribute { public CategoryAttribute(); public CategoryAttribute(string category); public static CategoryAttribute Action { get; } public static CategoryAttribute Appearance { get; } public static CategoryAttribute Asynchronous { get; } public static CategoryAttribute Behavior { get; } public string Category { get; } public static CategoryAttribute Data { get; } public static CategoryAttribute Default { get; } public static CategoryAttribute Design { get; } public static CategoryAttribute DragDrop { get; } public static CategoryAttribute Focus { get; } public static CategoryAttribute Format { get; } public static CategoryAttribute Key { get; } public static CategoryAttribute Layout { get; } public static CategoryAttribute Mouse { get; } public static CategoryAttribute WindowStyle { get; } public override bool Equals(object obj); public override int GetHashCode(); protected virtual string GetLocalizedString(string value); - public override bool IsDefaultAttribute(); } public class CharConverter : TypeConverter { public CharConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public enum CollectionChangeAction { Add = 1, Refresh = 3, Remove = 2, } public class CollectionChangeEventArgs : EventArgs { public CollectionChangeEventArgs(CollectionChangeAction action, object element); public virtual CollectionChangeAction Action { get; } public virtual object Element { get; } } public delegate void CollectionChangeEventHandler(object sender, CollectionChangeEventArgs e); public class CollectionConverter : TypeConverter { public CollectionConverter(); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); public override bool GetPropertiesSupported(ITypeDescriptorContext context); } - public sealed class ComplexBindingPropertiesAttribute : Attribute { - public static readonly ComplexBindingPropertiesAttribute Default; - public ComplexBindingPropertiesAttribute(); - public ComplexBindingPropertiesAttribute(string dataSource); - public ComplexBindingPropertiesAttribute(string dataSource, string dataMember); - public string DataMember { get; } - public string DataSource { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } - public class Component : MarshalByRefObject, IComponent, IDisposable { - public Component(); - protected virtual bool CanRaiseEvents { get; } - public IContainer Container { get; } - protected bool DesignMode { get; } - protected EventHandlerList Events { get; } - public virtual ISite Site { get; set; } - public event EventHandler Disposed; - public void Dispose(); - protected virtual void Dispose(bool disposing); - ~Component(); - protected virtual object GetService(Type service); - public override string ToString(); } public class ComponentCollection : ReadOnlyCollectionBase { - public ComponentCollection(IComponent[] components); - public virtual IComponent this[int index] { get; } - public virtual IComponent this[string name] { get; } - public void CopyTo(IComponent[] array, int index); } - public class ComponentConverter : ReferenceConverter { - public ComponentConverter(Type type); - public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); - public override bool GetPropertiesSupported(ITypeDescriptorContext context); } - public abstract class ComponentEditor { - protected ComponentEditor(); - public abstract bool EditComponent(ITypeDescriptorContext context, object component); - public bool EditComponent(object component); } - public class ComponentResourceManager : ResourceManager { - public ComponentResourceManager(); - public ComponentResourceManager(Type t); - public void ApplyResources(object value, string objectName); - public virtual void ApplyResources(object value, string objectName, CultureInfo culture); } - public class Container : IContainer, IDisposable { - public Container(); - public virtual ComponentCollection Components { get; } - public virtual void Add(IComponent component); - public virtual void Add(IComponent component, string name); - protected virtual ISite CreateSite(IComponent component, string name); - public void Dispose(); - protected virtual void Dispose(bool disposing); - ~Container(); - protected virtual object GetService(Type service); - public virtual void Remove(IComponent component); - protected void RemoveWithoutUnsiting(IComponent component); - protected virtual void ValidateName(IComponent component, string name); } - public abstract class ContainerFilterService { - protected ContainerFilterService(); - public virtual ComponentCollection FilterComponents(ComponentCollection components); } - public class CultureInfoConverter : TypeConverter { - public CultureInfoConverter(); - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); - public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); - protected virtual string GetCultureName(CultureInfo culture); - public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); - public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); - public override bool GetStandardValuesSupported(ITypeDescriptorContext context); } public abstract class CustomTypeDescriptor : ICustomTypeDescriptor { protected CustomTypeDescriptor(); protected CustomTypeDescriptor(ICustomTypeDescriptor parent); public virtual AttributeCollection GetAttributes(); public virtual string GetClassName(); public virtual string GetComponentName(); public virtual TypeConverter GetConverter(); public virtual EventDescriptor GetDefaultEvent(); public virtual PropertyDescriptor GetDefaultProperty(); public virtual object GetEditor(Type editorBaseType); public virtual EventDescriptorCollection GetEvents(); public virtual EventDescriptorCollection GetEvents(Attribute[] attributes); public virtual PropertyDescriptorCollection GetProperties(); public virtual PropertyDescriptorCollection GetProperties(Attribute[] attributes); public virtual object GetPropertyOwner(PropertyDescriptor pd); } public class DataErrorsChangedEventArgs : EventArgs { public DataErrorsChangedEventArgs(string propertyName); public virtual string PropertyName { get; } } - public sealed class DataObjectAttribute : Attribute { - public static readonly DataObjectAttribute DataObject; - public static readonly DataObjectAttribute Default; - public static readonly DataObjectAttribute NonDataObject; - public DataObjectAttribute(); - public DataObjectAttribute(bool isDataObject); - public bool IsDataObject { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public sealed class DataObjectFieldAttribute : Attribute { - public DataObjectFieldAttribute(bool primaryKey); - public DataObjectFieldAttribute(bool primaryKey, bool isIdentity); - public DataObjectFieldAttribute(bool primaryKey, bool isIdentity, bool isNullable); - public DataObjectFieldAttribute(bool primaryKey, bool isIdentity, bool isNullable, int length); - public bool IsIdentity { get; } - public bool IsNullable { get; } - public int Length { get; } - public bool PrimaryKey { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } - public sealed class DataObjectMethodAttribute : Attribute { - public DataObjectMethodAttribute(DataObjectMethodType methodType); - public DataObjectMethodAttribute(DataObjectMethodType methodType, bool isDefault); - public bool IsDefault { get; } - public DataObjectMethodType MethodType { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool Match(object obj); } - public enum DataObjectMethodType { - Delete = 4, - Fill = 0, - Insert = 3, - Select = 1, - Update = 2, } public class DateTimeConverter : TypeConverter { public DateTimeConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class DateTimeOffsetConverter : TypeConverter { public DateTimeOffsetConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class DecimalConverter : BaseNumberConverter { public DecimalConverter(); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } - public sealed class DefaultBindingPropertyAttribute : Attribute { - public static readonly DefaultBindingPropertyAttribute Default; - public DefaultBindingPropertyAttribute(); - public DefaultBindingPropertyAttribute(string name); - public string Name { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } public sealed class DefaultEventAttribute : Attribute { public static readonly DefaultEventAttribute Default; public DefaultEventAttribute(string name); public string Name { get; } public override bool Equals(object obj); public override int GetHashCode(); } public sealed class DefaultPropertyAttribute : Attribute { public static readonly DefaultPropertyAttribute Default; public DefaultPropertyAttribute(string name); public string Name { get; } public override bool Equals(object obj); public override int GetHashCode(); } public class DefaultValueAttribute : Attribute { public DefaultValueAttribute(bool value); public DefaultValueAttribute(byte value); public DefaultValueAttribute(char value); public DefaultValueAttribute(double value); public DefaultValueAttribute(short value); public DefaultValueAttribute(int value); public DefaultValueAttribute(long value); public DefaultValueAttribute(object value); public DefaultValueAttribute(float value); public DefaultValueAttribute(string value); public DefaultValueAttribute(Type type, string value); public virtual object Value { get; } public override bool Equals(object obj); public override int GetHashCode(); - protected void SetValue(object value); } public class DescriptionAttribute : Attribute { public static readonly DescriptionAttribute Default; public DescriptionAttribute(); public DescriptionAttribute(string description); public virtual string Description { get; } protected string DescriptionValue { get; set; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public sealed class DesignerAttribute : Attribute { - public DesignerAttribute(string designerTypeName); - public DesignerAttribute(string designerTypeName, string designerBaseTypeName); - public DesignerAttribute(string designerTypeName, Type designerBaseType); - public DesignerAttribute(Type designerType); - public DesignerAttribute(Type designerType, Type designerBaseType); - public string DesignerBaseTypeName { get; } - public string DesignerTypeName { get; } - public override object TypeId { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } public sealed class DesignerCategoryAttribute : Attribute { public static readonly DesignerCategoryAttribute Component; public static readonly DesignerCategoryAttribute Default; public static readonly DesignerCategoryAttribute Form; public static readonly DesignerCategoryAttribute Generic; public DesignerCategoryAttribute(); public DesignerCategoryAttribute(string category); public string Category { get; } - public override object TypeId { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public enum DesignerSerializationVisibility { Content = 2, Hidden = 0, Visible = 1, } public sealed class DesignerSerializationVisibilityAttribute : Attribute { public static readonly DesignerSerializationVisibilityAttribute Content; public static readonly DesignerSerializationVisibilityAttribute Default; public static readonly DesignerSerializationVisibilityAttribute Hidden; public static readonly DesignerSerializationVisibilityAttribute Visible; public DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility visibility); public DesignerSerializationVisibility Visibility { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public sealed class DesignOnlyAttribute : Attribute { public static readonly DesignOnlyAttribute Default; public static readonly DesignOnlyAttribute No; public static readonly DesignOnlyAttribute Yes; public DesignOnlyAttribute(bool isDesignOnly); public bool IsDesignOnly { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public sealed class DesignTimeVisibleAttribute : Attribute { - public static readonly DesignTimeVisibleAttribute Default; - public static readonly DesignTimeVisibleAttribute No; - public static readonly DesignTimeVisibleAttribute Yes; - public DesignTimeVisibleAttribute(); - public DesignTimeVisibleAttribute(bool visible); - public bool Visible { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class DisplayNameAttribute : Attribute { public static readonly DisplayNameAttribute Default; public DisplayNameAttribute(); public DisplayNameAttribute(string displayName); public virtual string DisplayName { get; } protected string DisplayNameValue { get; set; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class DoubleConverter : BaseNumberConverter { public DoubleConverter(); } public class DoWorkEventArgs : CancelEventArgsEventArgs { public DoWorkEventArgs(object argument); public object Argument { get; } + public bool Cancel { get; set; } public object Result { get; set; } } public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e); - public sealed class EditorAttribute : Attribute { - public EditorAttribute(); - public EditorAttribute(string typeName, string baseTypeName); - public EditorAttribute(string typeName, Type baseType); - public EditorAttribute(Type type, Type baseType); - public string EditorBaseTypeName { get; } - public string EditorTypeName { get; } - public override object TypeId { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } public sealed class EditorBrowsableAttribute : Attribute { - public EditorBrowsableAttribute(); public EditorBrowsableAttribute(EditorBrowsableState state); public EditorBrowsableState State { get; } public override bool Equals(object obj); public override int GetHashCode(); } public enum EditorBrowsableState { Advanced = 2, Always = 0, Never = 1, } public class EnumConverter : TypeConverter { public EnumConverter(Type type); protected virtual IComparer Comparer { get; } protected Type EnumType { get; } protected TypeConverter.StandardValuesCollection Values { get; set; } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); public override bool GetStandardValuesSupported(ITypeDescriptorContext context); public override bool IsValid(ITypeDescriptorContext context, object value); } public abstract class EventDescriptor : MemberDescriptor { protected EventDescriptor(MemberDescriptor descr); protected EventDescriptor(MemberDescriptor descr, Attribute[] attrs); protected EventDescriptor(string name, Attribute[] attrs); public abstract Type ComponentType { get; } public abstract Type EventType { get; } public abstract bool IsMulticast { get; } public abstract void AddEventHandler(object component, Delegate value); public abstract void RemoveEventHandler(object component, Delegate value); } public class EventDescriptorCollection : ICollection, IEnumerable, IList { public static readonly EventDescriptorCollection Empty; public EventDescriptorCollection(EventDescriptor[] events); public EventDescriptorCollection(EventDescriptor[] events, bool readOnly); public int Count { get; } - int System.Collections.ICollection.Count { get; } bool System.Collections.ICollection.IsSynchronized { get; } object System.Collections.ICollection.SyncRoot { get; } bool System.Collections.IList.IsFixedSize { get; } bool System.Collections.IList.IsReadOnly { get; } object System.Collections.IList.this[int index] { get; set; } public virtual EventDescriptor this[int index] { get; } public virtual EventDescriptor this[string name] { get; } public int Add(EventDescriptor value); public void Clear(); public bool Contains(EventDescriptor value); public virtual EventDescriptor Find(string name, bool ignoreCase); public IEnumerator GetEnumerator(); public int IndexOf(EventDescriptor value); public void Insert(int index, EventDescriptor value); protected void InternalSort(IComparer sorter); protected void InternalSort(string[] names); public void Remove(EventDescriptor value); public void RemoveAt(int index); public virtual EventDescriptorCollection Sort(); public virtual EventDescriptorCollection Sort(IComparer comparer); public virtual EventDescriptorCollection Sort(string[] names); public virtual EventDescriptorCollection Sort(string[] names, IComparer comparer); void System.Collections.ICollection.CopyTo(Array array, int index); - IEnumerator System.Collections.IEnumerable.GetEnumerator(); int System.Collections.IList.Add(object value); - void System.Collections.IList.Clear(); bool System.Collections.IList.Contains(object value); int System.Collections.IList.IndexOf(object value); void System.Collections.IList.Insert(int index, object value); void System.Collections.IList.Remove(object value); - void System.Collections.IList.RemoveAt(int index); } public sealed class EventHandlerList : IDisposable { public EventHandlerList(); public Delegate this[object key] { get; set; } public void AddHandler(object key, Delegate value); public void AddHandlers(EventHandlerList listToAddFrom); public void Dispose(); public void RemoveHandler(object key, Delegate value); } - public class ExpandableObjectConverter : TypeConverter { - public ExpandableObjectConverter(); - public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); - public override bool GetPropertiesSupported(ITypeDescriptorContext context); } public sealed class ExtenderProvidedPropertyAttribute : Attribute { public ExtenderProvidedPropertyAttribute(); public PropertyDescriptor ExtenderProperty { get; } public IExtenderProvider Provider { get; } public Type ReceiverType { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class GuidConverter : TypeConverter { public GuidConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } public class HandledEventArgs : EventArgs { public HandledEventArgs(); public HandledEventArgs(bool defaultHandledValue); public bool Handled { get; set; } } public delegate void HandledEventHandler(object sender, HandledEventArgs e); - public interface IBindingList : ICollection, IEnumerable, IList { - bool AllowEdit { get; } - bool AllowNew { get; } - bool AllowRemove { get; } - bool IsSorted { get; } - ListSortDirection SortDirection { get; } - PropertyDescriptor SortProperty { get; } - bool SupportsChangeNotification { get; } - bool SupportsSearching { get; } - bool SupportsSorting { get; } - event ListChangedEventHandler ListChanged; - void AddIndex(PropertyDescriptor property); - object AddNew(); - void ApplySort(PropertyDescriptor property, ListSortDirection direction); - int Find(PropertyDescriptor property, object key); - void RemoveIndex(PropertyDescriptor property); - void RemoveSort(); } - public interface IBindingListView : IBindingList, ICollection, IEnumerable, IList { - string Filter { get; set; } - ListSortDescriptionCollection SortDescriptions { get; } - bool SupportsAdvancedSorting { get; } - bool SupportsFiltering { get; } - void ApplySort(ListSortDescriptionCollection sorts); - void RemoveFilter(); } - public interface ICancelAddNew { - void CancelNew(int itemIndex); - void EndNew(int itemIndex); } public interface IChangeTracking { bool IsChanged { get; } void AcceptChanges(); } - public interface IComNativeDescriptorHandler { - AttributeCollection GetAttributes(object component); - string GetClassName(object component); - TypeConverter GetConverter(object component); - EventDescriptor GetDefaultEvent(object component); - PropertyDescriptor GetDefaultProperty(object component); - object GetEditor(object component, Type baseEditorType); - EventDescriptorCollection GetEvents(object component); - EventDescriptorCollection GetEvents(object component, Attribute[] attributes); - string GetName(object component); - PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes); - object GetPropertyValue(object component, int dispid, ref bool success); - object GetPropertyValue(object component, string propertyName, ref bool success); } public interface IComponent : IDisposable { ISite Site { get; set; } event EventHandler Disposed; } public interface IContainer : IDisposable { ComponentCollection Components { get; } void Add(IComponent component); void Add(IComponent component, string name); void Remove(IComponent component); } public interface ICustomTypeDescriptor { AttributeCollection GetAttributes(); string GetClassName(); string GetComponentName(); TypeConverter GetConverter(); EventDescriptor GetDefaultEvent(); PropertyDescriptor GetDefaultProperty(); object GetEditor(Type editorBaseType); EventDescriptorCollection GetEvents(); EventDescriptorCollection GetEvents(Attribute[] attributes); PropertyDescriptorCollection GetProperties(); PropertyDescriptorCollection GetProperties(Attribute[] attributes); object GetPropertyOwner(PropertyDescriptor pd); } - public interface IDataErrorInfo { - string Error { get; } - string this[string columnName] { get; } } public interface IEditableObject { void BeginEdit(); void CancelEdit(); void EndEdit(); } public interface IExtenderProvider { bool CanExtend(object extendee); } - public interface IIntellisenseBuilder { - string Name { get; } - bool Show(string language, string value, ref string newValue); } public interface IListSource { bool ContainsListCollection { get; } IList GetList(); } public sealed class ImmutableObjectAttribute : Attribute { public static readonly ImmutableObjectAttribute Default; public static readonly ImmutableObjectAttribute No; public static readonly ImmutableObjectAttribute Yes; public ImmutableObjectAttribute(bool immutable); public bool Immutable { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public interface INestedContainer : IContainer, IDisposable { - IComponent Owner { get; } } - public interface INestedSite : IServiceProvider, ISite { - string FullName { get; } } - public sealed class InheritanceAttribute : Attribute { - public static readonly InheritanceAttribute Default; - public static readonly InheritanceAttribute Inherited; - public static readonly InheritanceAttribute InheritedReadOnly; - public static readonly InheritanceAttribute NotInherited; - public InheritanceAttribute(); - public InheritanceAttribute(InheritanceLevel inheritanceLevel); - public InheritanceLevel InheritanceLevel { get; } - public override bool Equals(object value); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); - public override string ToString(); } - public enum InheritanceLevel { - Inherited = 1, - InheritedReadOnly = 2, - NotInherited = 3, } public sealed class InitializationEventAttribute : Attribute { public InitializationEventAttribute(string eventName); public string EventName { get; } } public interface INotifyDataErrorInfo { bool HasErrors { get; } event EventHandler ErrorsChanged; IEnumerable GetErrors(string propertyName); } public interface INotifyPropertyChanged { event PropertyChangedEventHandler PropertyChanged; } public interface INotifyPropertyChanging { event PropertyChangingEventHandler PropertyChanging; } - public class InstallerTypeAttribute : Attribute { - public InstallerTypeAttribute(string typeName); - public InstallerTypeAttribute(Type installerType); - public virtual Type InstallerType { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } - public abstract class InstanceCreationEditor { - protected InstanceCreationEditor(); - public virtual string Text { get; } - public abstract object CreateInstance(ITypeDescriptorContext context, Type instanceType); } public class Int16Converter : BaseNumberConverter { public Int16Converter(); } public class Int32Converter : BaseNumberConverter { public Int32Converter(); } public class Int64Converter : BaseNumberConverter { public Int64Converter(); } public class InvalidAsynchronousStateException : ArgumentException { public InvalidAsynchronousStateException(); - protected InvalidAsynchronousStateException(SerializationInfo info, StreamingContext context); public InvalidAsynchronousStateException(string message); public InvalidAsynchronousStateException(string message, Exception innerException); } - public class InvalidEnumArgumentException : ArgumentException { - public InvalidEnumArgumentException(); - protected InvalidEnumArgumentException(SerializationInfo info, StreamingContext context); - public InvalidEnumArgumentException(string message); - public InvalidEnumArgumentException(string message, Exception innerException); - public InvalidEnumArgumentException(string argumentName, int invalidValue, Type enumClass); } - public interface IRaiseItemChangedEvents { - bool RaisesItemChangedEvents { get; } } public interface IRevertibleChangeTracking : IChangeTracking { void RejectChanges(); } public interface ISite : IServiceProvider { IComponent Component { get; } IContainer Container { get; } bool DesignMode { get; } string Name { get; set; } } - public interface ISupportInitialize { - void BeginInit(); - void EndInit(); } - public interface ISupportInitializeNotification : ISupportInitialize { - bool IsInitialized { get; } - event EventHandler Initialized; } - public interface ISynchronizeInvoke { - bool InvokeRequired { get; } - IAsyncResult BeginInvoke(Delegate method, object[] args); - object EndInvoke(IAsyncResult result); - object Invoke(Delegate method, object[] args); } public interface ITypeDescriptorContext : IServiceProvider { IContainer Container { get; } object Instance { get; } PropertyDescriptor PropertyDescriptor { get; } void OnComponentChanged(); bool OnComponentChanging(); } public interface ITypedList { PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors); string GetListName(PropertyDescriptor[] listAccessors); } - public abstract class License : IDisposable { - protected License(); - public abstract string LicenseKey { get; } - public abstract void Dispose(); } - public class LicenseContext : IServiceProvider { - public LicenseContext(); - public virtual LicenseUsageMode UsageMode { get; } - public virtual string GetSavedLicenseKey(Type type, Assembly resourceAssembly); - public virtual object GetService(Type type); - public virtual void SetSavedLicenseKey(Type type, string key); } - public class LicenseException : SystemException { - protected LicenseException(SerializationInfo info, StreamingContext context); - public LicenseException(Type type); - public LicenseException(Type type, object instance); - public LicenseException(Type type, object instance, string message); - public LicenseException(Type type, object instance, string message, Exception innerException); - public Type LicensedType { get; } - public override void GetObjectData(SerializationInfo info, StreamingContext context); } - public sealed class LicenseManager { - public static LicenseContext CurrentContext { get; set; } - public static LicenseUsageMode UsageMode { get; } - public static object CreateWithContext(Type type, LicenseContext creationContext); - public static object CreateWithContext(Type type, LicenseContext creationContext, object[] args); - public static bool IsLicensed(Type type); - public static bool IsValid(Type type); - public static bool IsValid(Type type, object instance, out License license); - public static void LockContext(object contextUser); - public static void UnlockContext(object contextUser); - public static void Validate(Type type); - public static License Validate(Type type, object instance); } - public abstract class LicenseProvider { - protected LicenseProvider(); - public abstract License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions); } - public sealed class LicenseProviderAttribute : Attribute { - public static readonly LicenseProviderAttribute Default; - public LicenseProviderAttribute(); - public LicenseProviderAttribute(string typeName); - public LicenseProviderAttribute(Type type); - public Type LicenseProvider { get; } - public override object TypeId { get; } - public override bool Equals(object value); - public override int GetHashCode(); } - public enum LicenseUsageMode { - Designtime = 1, - Runtime = 0, } - public class LicFileLicenseProvider : LicenseProvider { - public LicFileLicenseProvider(); - protected virtual string GetKey(Type type); - public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions); - protected virtual bool IsKeyValid(string key, Type type); } - public sealed class ListBindableAttribute : Attribute { - public static readonly ListBindableAttribute Default; - public static readonly ListBindableAttribute No; - public static readonly ListBindableAttribute Yes; - public ListBindableAttribute(bool listBindable); - public ListBindableAttribute(BindableSupport flags); - public bool ListBindable { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public class ListChangedEventArgs : EventArgs { - public ListChangedEventArgs(ListChangedType listChangedType, PropertyDescriptor propDesc); - public ListChangedEventArgs(ListChangedType listChangedType, int newIndex); - public ListChangedEventArgs(ListChangedType listChangedType, int newIndex, PropertyDescriptor propDesc); - public ListChangedEventArgs(ListChangedType listChangedType, int newIndex, int oldIndex); - public ListChangedType ListChangedType { get; } - public int NewIndex { get; } - public int OldIndex { get; } - public PropertyDescriptor PropertyDescriptor { get; } } - public delegate void ListChangedEventHandler(object sender, ListChangedEventArgs e); - public enum ListChangedType { - ItemAdded = 1, - ItemChanged = 4, - ItemDeleted = 2, - ItemMoved = 3, - PropertyDescriptorAdded = 5, - PropertyDescriptorChanged = 7, - PropertyDescriptorDeleted = 6, - Reset = 0, } - public class ListSortDescription { - public ListSortDescription(PropertyDescriptor property, ListSortDirection direction); - public PropertyDescriptor PropertyDescriptor { get; set; } - public ListSortDirection SortDirection { get; set; } } - public class ListSortDescriptionCollection : ICollection, IEnumerable, IList { - public ListSortDescriptionCollection(); - public ListSortDescriptionCollection(ListSortDescription[] sorts); - public int Count { get; } - bool System.Collections.ICollection.IsSynchronized { get; } - object System.Collections.ICollection.SyncRoot { get; } - bool System.Collections.IList.IsFixedSize { get; } - bool System.Collections.IList.IsReadOnly { get; } - object System.Collections.IList.this[int index] { get; set; } - public ListSortDescription this[int index] { get; set; } - public bool Contains(object value); - public void CopyTo(Array array, int index); - public int IndexOf(object value); - IEnumerator System.Collections.IEnumerable.GetEnumerator(); - int System.Collections.IList.Add(object value); - void System.Collections.IList.Clear(); - void System.Collections.IList.Insert(int index, object value); - void System.Collections.IList.Remove(object value); - void System.Collections.IList.RemoveAt(int index); } - public enum ListSortDirection { - Ascending = 0, - Descending = 1, } public sealed class LocalizableAttribute : Attribute { public static readonly LocalizableAttribute Default; public static readonly LocalizableAttribute No; public static readonly LocalizableAttribute Yes; public LocalizableAttribute(bool isLocalizable); public bool IsLocalizable { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public sealed class LookupBindingPropertiesAttribute : Attribute { - public static readonly LookupBindingPropertiesAttribute Default; - public LookupBindingPropertiesAttribute(); - public LookupBindingPropertiesAttribute(string dataSource, string displayMember, string valueMember, string lookupMember); - public string DataSource { get; } - public string DisplayMember { get; } - public string LookupMember { get; } - public string ValueMember { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } - public class MarshalByValueComponent : IComponent, IDisposable, IServiceProvider { - public MarshalByValueComponent(); - public virtual IContainer Container { get; } - public virtual bool DesignMode { get; } - protected EventHandlerList Events { get; } - public virtual ISite Site { get; set; } - public event EventHandler Disposed; - public void Dispose(); - protected virtual void Dispose(bool disposing); - ~MarshalByValueComponent(); - public virtual object GetService(Type service); - public override string ToString(); } - public class MaskedTextProvider : ICloneable { - public MaskedTextProvider(string mask); - public MaskedTextProvider(string mask, bool restrictToAscii); - public MaskedTextProvider(string mask, char passwordChar, bool allowPromptAsInput); - public MaskedTextProvider(string mask, CultureInfo culture); - public MaskedTextProvider(string mask, CultureInfo culture, bool restrictToAscii); - public MaskedTextProvider(string mask, CultureInfo culture, bool allowPromptAsInput, char promptChar, char passwordChar, bool restrictToAscii); - public MaskedTextProvider(string mask, CultureInfo culture, char passwordChar, bool allowPromptAsInput); - public bool AllowPromptAsInput { get; } - public bool AsciiOnly { get; } - public int AssignedEditPositionCount { get; } - public int AvailableEditPositionCount { get; } - public CultureInfo Culture { get; } - public static char DefaultPasswordChar { get; } - public int EditPositionCount { get; } - public IEnumerator EditPositions { get; } - public bool IncludeLiterals { get; set; } - public bool IncludePrompt { get; set; } - public static int InvalidIndex { get; } - public bool IsPassword { get; set; } - public int LastAssignedPosition { get; } - public int Length { get; } - public string Mask { get; } - public bool MaskCompleted { get; } - public bool MaskFull { get; } - public char PasswordChar { get; set; } - public char PromptChar { get; set; } - public bool ResetOnPrompt { get; set; } - public bool ResetOnSpace { get; set; } - public bool SkipLiterals { get; set; } - public char this[int index] { get; } - public bool Add(char input); - public bool Add(char input, out int testPosition, out MaskedTextResultHint resultHint); - public bool Add(string input); - public bool Add(string input, out int testPosition, out MaskedTextResultHint resultHint); - public void Clear(); - public void Clear(out MaskedTextResultHint resultHint); - public object Clone(); - public int FindAssignedEditPositionFrom(int position, bool direction); - public int FindAssignedEditPositionInRange(int startPosition, int endPosition, bool direction); - public int FindEditPositionFrom(int position, bool direction); - public int FindEditPositionInRange(int startPosition, int endPosition, bool direction); - public int FindNonEditPositionFrom(int position, bool direction); - public int FindNonEditPositionInRange(int startPosition, int endPosition, bool direction); - public int FindUnassignedEditPositionFrom(int position, bool direction); - public int FindUnassignedEditPositionInRange(int startPosition, int endPosition, bool direction); - public static bool GetOperationResultFromHint(MaskedTextResultHint hint); - public bool InsertAt(char input, int position); - public bool InsertAt(char input, int position, out int testPosition, out MaskedTextResultHint resultHint); - public bool InsertAt(string input, int position); - public bool InsertAt(string input, int position, out int testPosition, out MaskedTextResultHint resultHint); - public bool IsAvailablePosition(int position); - public bool IsEditPosition(int position); - public static bool IsValidInputChar(char c); - public static bool IsValidMaskChar(char c); - public static bool IsValidPasswordChar(char c); - public bool Remove(); - public bool Remove(out int testPosition, out MaskedTextResultHint resultHint); - public bool RemoveAt(int position); - public bool RemoveAt(int startPosition, int endPosition); - public bool RemoveAt(int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint); - public bool Replace(char input, int position); - public bool Replace(char input, int position, out int testPosition, out MaskedTextResultHint resultHint); - public bool Replace(char input, int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint); - public bool Replace(string input, int position); - public bool Replace(string input, int position, out int testPosition, out MaskedTextResultHint resultHint); - public bool Replace(string input, int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint); - public bool Set(string input); - public bool Set(string input, out int testPosition, out MaskedTextResultHint resultHint); - public string ToDisplayString(); - public override string ToString(); - public string ToString(bool ignorePasswordChar); - public string ToString(bool includePrompt, bool includeLiterals); - public string ToString(bool ignorePasswordChar, bool includePrompt, bool includeLiterals, int startPosition, int length); - public string ToString(bool includePrompt, bool includeLiterals, int startPosition, int length); - public string ToString(bool ignorePasswordChar, int startPosition, int length); - public string ToString(int startPosition, int length); - public bool VerifyChar(char input, int position, out MaskedTextResultHint hint); - public bool VerifyEscapeChar(char input, int position); - public bool VerifyString(string input); - public bool VerifyString(string input, out int testPosition, out MaskedTextResultHint resultHint); } - public enum MaskedTextResultHint { - AlphanumericCharacterExpected = -2, - AsciiCharacterExpected = -1, - CharacterEscaped = 1, - DigitExpected = -3, - InvalidInput = -51, - LetterExpected = -4, - NoEffect = 2, - NonEditPosition = -54, - PositionOutOfRange = -55, - PromptCharNotAllowed = -52, - SideEffect = 3, - SignedDigitExpected = -5, - Success = 4, - UnavailableEditPosition = -53, - Unknown = 0, } public abstract class MemberDescriptor { protected MemberDescriptor(MemberDescriptor descr); protected MemberDescriptor(MemberDescriptor oldMemberDescriptor, Attribute[] newAttributes); protected MemberDescriptor(string name); protected MemberDescriptor(string name, Attribute[] attributes); protected virtual Attribute[] AttributeArray { get; set; } public virtual AttributeCollection Attributes { get; } public virtual string Category { get; } public virtual string Description { get; } public virtual bool DesignTimeOnly { get; } public virtual string DisplayName { get; } public virtual bool IsBrowsable { get; } public virtual string Name { get; } protected virtual int NameHashCode { get; } protected virtual AttributeCollection CreateAttributeCollection(); public override bool Equals(object obj); protected virtual void FillAttributes(IList attributeList); protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType); protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType, bool publicOnly); public override int GetHashCode(); protected virtual object GetInvocationTarget(Type type, object instance); - protected static object GetInvokee(Type componentClass, object component); protected static ISite GetSite(object component); } public sealed class MergablePropertyAttribute : Attribute { public static readonly MergablePropertyAttribute Default; public static readonly MergablePropertyAttribute No; public static readonly MergablePropertyAttribute Yes; public MergablePropertyAttribute(bool allowMerge); public bool AllowMerge { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class MultilineStringConverter : TypeConverter { public MultilineStringConverter(); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); public override bool GetPropertiesSupported(ITypeDescriptorContext context); } - public class NestedContainer : Container, IContainer, IDisposable, INestedContainer { - public NestedContainer(IComponent owner); - public IComponent Owner { get; } - protected virtual string OwnerName { get; } - protected override ISite CreateSite(IComponent component, string name); - protected override void Dispose(bool disposing); - protected override object GetService(Type service); } public sealed class NotifyParentPropertyAttribute : Attribute { public static readonly NotifyParentPropertyAttribute Default; public static readonly NotifyParentPropertyAttribute No; public static readonly NotifyParentPropertyAttribute Yes; public NotifyParentPropertyAttribute(bool notifyParent); public bool NotifyParent { get; } public override bool Equals(object obj); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class NullableConverter : TypeConverter { public NullableConverter(Type type); public Type NullableType { get; } public Type UnderlyingType { get; } public TypeConverter UnderlyingTypeConverter { get; } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues); public override bool GetCreateInstanceSupported(ITypeDescriptorContext context); public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); public override bool GetPropertiesSupported(ITypeDescriptorContext context); public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); public override bool GetStandardValuesSupported(ITypeDescriptorContext context); public override bool IsValid(ITypeDescriptorContext context, object value); } public sealed class ParenthesizePropertyNameAttribute : Attribute { public static readonly ParenthesizePropertyNameAttribute Default; public ParenthesizePropertyNameAttribute(); public ParenthesizePropertyNameAttribute(bool needParenthesis); public bool NeedParenthesis { get; } public override bool Equals(object o); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public sealed class PasswordPropertyTextAttribute : Attribute { - public static readonly PasswordPropertyTextAttribute Default; - public static readonly PasswordPropertyTextAttribute No; - public static readonly PasswordPropertyTextAttribute Yes; - public PasswordPropertyTextAttribute(); - public PasswordPropertyTextAttribute(bool password); - public bool Password { get; } - public override bool Equals(object o); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class ProgressChangedEventArgs : EventArgs { public ProgressChangedEventArgs(int progressPercentage, object userState); public int ProgressPercentage { get; } public object UserState { get; } } public delegate void ProgressChangedEventHandler(object sender, ProgressChangedEventArgs e); public class PropertyChangedEventArgs : EventArgs { public PropertyChangedEventArgs(string propertyName); public virtual string PropertyName { get; } } public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e); public class PropertyChangingEventArgs : EventArgs { public PropertyChangingEventArgs(string propertyName); public virtual string PropertyName { get; } } public delegate void PropertyChangingEventHandler(object sender, PropertyChangingEventArgs e); public abstract class PropertyDescriptor : MemberDescriptor { protected PropertyDescriptor(MemberDescriptor descr); protected PropertyDescriptor(MemberDescriptor descr, Attribute[] attrs); protected PropertyDescriptor(string name, Attribute[] attrs); public abstract Type ComponentType { get; } public virtual TypeConverter Converter { get; } public virtual bool IsLocalizable { get; } public abstract bool IsReadOnly { get; } public abstract Type PropertyType { get; } public DesignerSerializationVisibility SerializationVisibility { get; } public virtual bool SupportsChangeEvents { get; } public virtual void AddValueChanged(object component, EventHandler handler); public abstract bool CanResetValue(object component); protected object CreateInstance(Type type); public override bool Equals(object obj); protected override void FillAttributes(IList attributeList); public PropertyDescriptorCollection GetChildProperties(); public PropertyDescriptorCollection GetChildProperties(Attribute[] filter); public PropertyDescriptorCollection GetChildProperties(object instance); public virtual PropertyDescriptorCollection GetChildProperties(object instance, Attribute[] filter); public virtual object GetEditor(Type editorBaseType); public override int GetHashCode(); protected override object GetInvocationTarget(Type type, object instance); protected Type GetTypeFromName(string typeName); public abstract object GetValue(object component); protected internal EventHandler GetValueChangedHandler(object component); protected virtual void OnValueChanged(object component, EventArgs e); public virtual void RemoveValueChanged(object component, EventHandler handler); public abstract void ResetValue(object component); public abstract void SetValue(object component, object value); public abstract bool ShouldSerializeValue(object component); } public class PropertyDescriptorCollection : ICollection, IDictionary, IEnumerable, IList { public static readonly PropertyDescriptorCollection Empty; public PropertyDescriptorCollection(PropertyDescriptor[] properties); public PropertyDescriptorCollection(PropertyDescriptor[] properties, bool readOnly); public int Count { get; } - int System.Collections.ICollection.Count { get; } bool System.Collections.ICollection.IsSynchronized { get; } object System.Collections.ICollection.SyncRoot { get; } bool System.Collections.IDictionary.IsFixedSize { get; } bool System.Collections.IDictionary.IsReadOnly { get; } object System.Collections.IDictionary.this[object key] { get; set; } ICollection System.Collections.IDictionary.Keys { get; } ICollection System.Collections.IDictionary.Values { get; } bool System.Collections.IList.IsFixedSize { get; } bool System.Collections.IList.IsReadOnly { get; } object System.Collections.IList.this[int index] { get; set; } public virtual PropertyDescriptor this[int index] { get; } public virtual PropertyDescriptor this[string name] { get; } public int Add(PropertyDescriptor value); public void Clear(); public bool Contains(PropertyDescriptor value); public void CopyTo(Array array, int index); public virtual PropertyDescriptor Find(string name, bool ignoreCase); public virtual IEnumerator GetEnumerator(); public int IndexOf(PropertyDescriptor value); public void Insert(int index, PropertyDescriptor value); protected void InternalSort(IComparer sorter); protected void InternalSort(string[] names); public void Remove(PropertyDescriptor value); public void RemoveAt(int index); public virtual PropertyDescriptorCollection Sort(); public virtual PropertyDescriptorCollection Sort(IComparer comparer); public virtual PropertyDescriptorCollection Sort(string[] names); public virtual PropertyDescriptorCollection Sort(string[] names, IComparer comparer); void System.Collections.IDictionary.Add(object key, object value); - void System.Collections.IDictionary.Clear(); bool System.Collections.IDictionary.Contains(object key); IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator(); void System.Collections.IDictionary.Remove(object key); - IEnumerator System.Collections.IEnumerable.GetEnumerator(); int System.Collections.IList.Add(object value); - void System.Collections.IList.Clear(); bool System.Collections.IList.Contains(object value); int System.Collections.IList.IndexOf(object value); void System.Collections.IList.Insert(int index, object value); void System.Collections.IList.Remove(object value); - void System.Collections.IList.RemoveAt(int index); } - public class PropertyTabAttribute : Attribute { - public PropertyTabAttribute(); - public PropertyTabAttribute(string tabClassName); - public PropertyTabAttribute(string tabClassName, PropertyTabScope tabScope); - public PropertyTabAttribute(Type tabClass); - public PropertyTabAttribute(Type tabClass, PropertyTabScope tabScope); - public Type[] TabClasses { get; } - protected string[] TabClassNames { get; } - public PropertyTabScope[] TabScopes { get; } - public bool Equals(PropertyTabAttribute other); - public override bool Equals(object other); - public override int GetHashCode(); - protected void InitializeArrays(string[] tabClassNames, PropertyTabScope[] tabScopes); - protected void InitializeArrays(Type[] tabClasses, PropertyTabScope[] tabScopes); } - public enum PropertyTabScope { - Component = 3, - Document = 2, - Global = 1, - Static = 0, } public sealed class ProvidePropertyAttribute : Attribute { public ProvidePropertyAttribute(string propertyName, string receiverTypeName); public ProvidePropertyAttribute(string propertyName, Type receiverType); public string PropertyName { get; } public string ReceiverTypeName { get; } - public override object TypeId { get; } public override bool Equals(object obj); public override int GetHashCode(); } public sealed class ReadOnlyAttribute : Attribute { public static readonly ReadOnlyAttribute Default; public static readonly ReadOnlyAttribute No; public static readonly ReadOnlyAttribute Yes; public ReadOnlyAttribute(bool isReadOnly); public bool IsReadOnly { get; } public override bool Equals(object value); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public class RecommendedAsConfigurableAttribute : Attribute { - public static readonly RecommendedAsConfigurableAttribute Default; - public static readonly RecommendedAsConfigurableAttribute No; - public static readonly RecommendedAsConfigurableAttribute Yes; - public RecommendedAsConfigurableAttribute(bool recommendedAsConfigurable); - public bool RecommendedAsConfigurable { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public class ReferenceConverter : TypeConverter { - public ReferenceConverter(Type type); - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); - public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); - public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); - public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); - public override bool GetStandardValuesSupported(ITypeDescriptorContext context); - protected virtual bool IsValueAllowed(ITypeDescriptorContext context, object value); } public class RefreshEventArgs : EventArgs { public RefreshEventArgs(object componentChanged); public RefreshEventArgs(Type typeChanged); public object ComponentChanged { get; } public Type TypeChanged { get; } } public delegate void RefreshEventHandler(RefreshEventArgs e); public enum RefreshProperties { All = 1, None = 0, Repaint = 2, } public sealed class RefreshPropertiesAttribute : Attribute { public static readonly RefreshPropertiesAttribute All; public static readonly RefreshPropertiesAttribute Default; public static readonly RefreshPropertiesAttribute Repaint; public RefreshPropertiesAttribute(RefreshProperties refresh); public RefreshProperties RefreshProperties { get; } public override bool Equals(object value); public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public class RunInstallerAttribute : Attribute { - public static readonly RunInstallerAttribute Default; - public static readonly RunInstallerAttribute No; - public static readonly RunInstallerAttribute Yes; - public RunInstallerAttribute(bool runInstaller); - public bool RunInstaller { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } public class RunWorkerCompletedEventArgs : AsyncCompletedEventArgs { public RunWorkerCompletedEventArgs(object result, Exception error, bool cancelled); public object Result { get; } public new object UserState { get; } } public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs e); public class SByteConverter : BaseNumberConverter { public SByteConverter(); } - public sealed class SettingsBindableAttribute : Attribute { - public static readonly SettingsBindableAttribute No; - public static readonly SettingsBindableAttribute Yes; - public SettingsBindableAttribute(bool bindable); - public bool Bindable { get; } - public override bool Equals(object obj); - public override int GetHashCode(); } public class SingleConverter : BaseNumberConverter { public SingleConverter(); } public class StringConverter : TypeConverter { public StringConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); } - public static class SyntaxCheck { - public static bool CheckMachineName(string value); - public static bool CheckPath(string value); - public static bool CheckRootedPath(string value); } public class TimeSpanConverter : TypeConverter { public TimeSpanConverter(); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } - public class ToolboxItemAttribute : Attribute { - public static readonly ToolboxItemAttribute Default; - public static readonly ToolboxItemAttribute None; - public ToolboxItemAttribute(bool defaultType); - public ToolboxItemAttribute(string toolboxItemTypeName); - public ToolboxItemAttribute(Type toolboxItemType); - public Type ToolboxItemType { get; } - public string ToolboxItemTypeName { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool IsDefaultAttribute(); } - public sealed class ToolboxItemFilterAttribute : Attribute { - public ToolboxItemFilterAttribute(string filterString); - public ToolboxItemFilterAttribute(string filterString, ToolboxItemFilterType filterType); - public string FilterString { get; } - public ToolboxItemFilterType FilterType { get; } - public override object TypeId { get; } - public override bool Equals(object obj); - public override int GetHashCode(); - public override bool Match(object obj); - public override string ToString(); } - public enum ToolboxItemFilterType { - Allow = 0, - Custom = 1, - Prevent = 2, - Require = 3, } public class TypeConverter { public TypeConverter(); public virtual bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public bool CanConvertFrom(Type sourceType); public virtual bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public bool CanConvertTo(Type destinationType); public virtual object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public object ConvertFrom(object value); public object ConvertFromInvariantString(ITypeDescriptorContext context, string text); public object ConvertFromInvariantString(string text); public object ConvertFromString(ITypeDescriptorContext context, CultureInfo culture, string text); public object ConvertFromString(ITypeDescriptorContext context, string text); public object ConvertFromString(string text); public virtual object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public object ConvertTo(object value, Type destinationType); public string ConvertToInvariantString(ITypeDescriptorContext context, object value); public string ConvertToInvariantString(object value); public string ConvertToString(ITypeDescriptorContext context, CultureInfo culture, object value); public string ConvertToString(ITypeDescriptorContext context, object value); public string ConvertToString(object value); public object CreateInstance(IDictionary propertyValues); public virtual object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues); protected Exception GetConvertFromException(object value); protected Exception GetConvertToException(object value, Type destinationType); public bool GetCreateInstanceSupported(); public virtual bool GetCreateInstanceSupported(ITypeDescriptorContext context); public PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value); public virtual PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes); public PropertyDescriptorCollection GetProperties(object value); public bool GetPropertiesSupported(); public virtual bool GetPropertiesSupported(ITypeDescriptorContext context); public ICollection GetStandardValues(); public virtual TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); public bool GetStandardValuesExclusive(); public virtual bool GetStandardValuesExclusive(ITypeDescriptorContext context); public bool GetStandardValuesSupported(); public virtual bool GetStandardValuesSupported(ITypeDescriptorContext context); public virtual bool IsValid(ITypeDescriptorContext context, object value); public bool IsValid(object value); protected PropertyDescriptorCollection SortProperties(PropertyDescriptorCollection props, string[] names); protected abstract class SimplePropertyDescriptor : PropertyDescriptor { protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType); protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType, Attribute[] attributes); public override Type ComponentType { get; } public override bool IsReadOnly { get; } public override Type PropertyType { get; } public override bool CanResetValue(object component); public override void ResetValue(object component); public override bool ShouldSerializeValue(object component); } public class StandardValuesCollection : ICollection, IEnumerable { public StandardValuesCollection(ICollection values); public int Count { get; } - int System.Collections.ICollection.Count { get; } bool System.Collections.ICollection.IsSynchronized { get; } object System.Collections.ICollection.SyncRoot { get; } public object this[int index] { get; } public void CopyTo(Array array, int index); public IEnumerator GetEnumerator(); - void System.Collections.ICollection.CopyTo(Array array, int index); - IEnumerator System.Collections.IEnumerable.GetEnumerator(); } } public sealed class TypeConverterAttribute : Attribute { public static readonly TypeConverterAttribute Default; public TypeConverterAttribute(); public TypeConverterAttribute(string typeName); public TypeConverterAttribute(Type type); public string ConverterTypeName { get; } public override bool Equals(object obj); public override int GetHashCode(); } public abstract class TypeDescriptionProvider { protected TypeDescriptionProvider(); protected TypeDescriptionProvider(TypeDescriptionProvider parent); public virtual object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args); public virtual IDictionary GetCache(object instance); public virtual ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance); protected internal virtual IExtenderProvider[] GetExtenderProviders(object instance); public virtual string GetFullComponentName(object component); public Type GetReflectionType(object instance); public Type GetReflectionType(Type objectType); public virtual Type GetReflectionType(Type objectType, object instance); public virtual Type GetRuntimeType(Type reflectionType); public ICustomTypeDescriptor GetTypeDescriptor(object instance); public ICustomTypeDescriptor GetTypeDescriptor(Type objectType); public virtual ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance); public virtual bool IsSupportedType(Type type); } public sealed class TypeDescriptionProviderAttribute : Attribute { public TypeDescriptionProviderAttribute(string typeName); public TypeDescriptionProviderAttribute(Type type); public string TypeName { get; } } public sealed class TypeDescriptor { - public static IComNativeDescriptorHandler ComNativeDescriptorHandler { get; set; } - public static Type ComObjectType { get; } public static Type InterfaceType { get; } public static event RefreshEventHandler Refreshed; public static TypeDescriptionProvider AddAttributes(object instance, params Attribute[] attributes); public static TypeDescriptionProvider AddAttributes(Type type, params Attribute[] attributes); public static void AddEditorTable(Type editorBaseType, Hashtable table); public static void AddProvider(TypeDescriptionProvider provider, object instance); public static void AddProvider(TypeDescriptionProvider provider, Type type); public static void AddProviderTransparent(TypeDescriptionProvider provider, object instance); public static void AddProviderTransparent(TypeDescriptionProvider provider, Type type); public static void CreateAssociation(object primary, object secondary); - public static IDesigner CreateDesigner(IComponent component, Type designerBaseType); public static EventDescriptor CreateEvent(Type componentType, EventDescriptor oldEventDescriptor, params Attribute[] attributes); public static EventDescriptor CreateEvent(Type componentType, string name, Type type, params Attribute[] attributes); public static object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args); public static PropertyDescriptor CreateProperty(Type componentType, PropertyDescriptor oldPropertyDescriptor, params Attribute[] attributes); public static PropertyDescriptor CreateProperty(Type componentType, string name, Type type, params Attribute[] attributes); public static object GetAssociation(Type type, object primary); public static AttributeCollection GetAttributes(object component); public static AttributeCollection GetAttributes(object component, bool noCustomTypeDesc); public static AttributeCollection GetAttributes(Type componentType); public static string GetClassName(object component); public static string GetClassName(object component, bool noCustomTypeDesc); public static string GetClassName(Type componentType); public static string GetComponentName(object component); public static string GetComponentName(object component, bool noCustomTypeDesc); public static TypeConverter GetConverter(object component); public static TypeConverter GetConverter(object component, bool noCustomTypeDesc); public static TypeConverter GetConverter(Type type); public static EventDescriptor GetDefaultEvent(object component); public static EventDescriptor GetDefaultEvent(object component, bool noCustomTypeDesc); public static EventDescriptor GetDefaultEvent(Type componentType); public static PropertyDescriptor GetDefaultProperty(object component); public static PropertyDescriptor GetDefaultProperty(object component, bool noCustomTypeDesc); public static PropertyDescriptor GetDefaultProperty(Type componentType); public static object GetEditor(object component, Type editorBaseType); public static object GetEditor(object component, Type editorBaseType, bool noCustomTypeDesc); public static object GetEditor(Type type, Type editorBaseType); public static EventDescriptorCollection GetEvents(object component); public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes); public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes, bool noCustomTypeDesc); public static EventDescriptorCollection GetEvents(object component, bool noCustomTypeDesc); public static EventDescriptorCollection GetEvents(Type componentType); public static EventDescriptorCollection GetEvents(Type componentType, Attribute[] attributes); public static string GetFullComponentName(object component); public static PropertyDescriptorCollection GetProperties(object component); public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes); public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes, bool noCustomTypeDesc); public static PropertyDescriptorCollection GetProperties(object component, bool noCustomTypeDesc); public static PropertyDescriptorCollection GetProperties(Type componentType); public static PropertyDescriptorCollection GetProperties(Type componentType, Attribute[] attributes); public static TypeDescriptionProvider GetProvider(object instance); public static TypeDescriptionProvider GetProvider(Type type); public static Type GetReflectionType(object instance); public static Type GetReflectionType(Type type); public static void Refresh(object component); public static void Refresh(Assembly assembly); public static void Refresh(Module module); public static void Refresh(Type type); public static void RemoveAssociation(object primary, object secondary); public static void RemoveAssociations(object primary); public static void RemoveProvider(TypeDescriptionProvider provider, object instance); public static void RemoveProvider(TypeDescriptionProvider provider, Type type); public static void RemoveProviderTransparent(TypeDescriptionProvider provider, object instance); public static void RemoveProviderTransparent(TypeDescriptionProvider provider, Type type); public static void SortDescriptorArray(IList infos); } public abstract class TypeListConverter : TypeConverter { protected TypeListConverter(Type[] types); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context); public override bool GetStandardValuesExclusive(ITypeDescriptorContext context); public override bool GetStandardValuesSupported(ITypeDescriptorContext context); } public class UInt16Converter : BaseNumberConverter { public UInt16Converter(); } public class UInt32Converter : BaseNumberConverter { public UInt32Converter(); } public class UInt64Converter : BaseNumberConverter { public UInt64Converter(); } - public class WarningException : SystemException { - public WarningException(); - protected WarningException(SerializationInfo info, StreamingContext context); - public WarningException(string message); - public WarningException(string message, Exception innerException); - public WarningException(string message, string helpUrl); - public WarningException(string message, string helpUrl, string helpTopic); - public string HelpTopic { get; } - public string HelpUrl { get; } - public override void GetObjectData(SerializationInfo info, StreamingContext context); } public class Win32Exception : ExternalExceptionException, ISerializable { public Win32Exception(); public Win32Exception(int error); public Win32Exception(int error, string message); - protected Win32Exception(SerializationInfo info, StreamingContext context); public Win32Exception(string message); public Win32Exception(string message, Exception innerException); public int NativeErrorCode { get; } - public override void GetObjectData(SerializationInfo info, StreamingContext context); } } ``` +6580 area-System.Net [ToFDisable] Port URI tests "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Runtime, we're missing 2020 lines of coverage. Our total line coverage for Open vs. ToF is 69.7%. However, this includes some data points that might not be relevant to the library being tested so the real coverage is likely lower. To fulfill the uncovered lines we would need to either create new tests for them or port 56 ToF tests to the open. Those tests are: - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnDnsSafeHostTest.IdnDnsSafeHost_IdnOffWithBuiltInScheme_Success.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_IncompleteSurrogate.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriEscapingTest.UriFile_ImplicitUncFile_FragmentNotAllowed.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_ReservedCharacters.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.AppxUriValues.SupportStringsOfForm_MsApp.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriMailToTest.UriMailTo_SchemeUserAt_Throws.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareImplcitAndExplicitUncForwardSlashesWithNoUnicode_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareRelativeAndOriginalHttpWithNoUnicodeAndReservedChar_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_EscapedAscii.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriGetComponentsTest.GetComponents_ASCIIHost_LowerCaseResult.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriGetComponentsTest.GetComponents_UnknownScheme_ComponentsUnaffected.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnHostNameValidationTest.IdnHost_FileFqdn_Success.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriGetComponentsTest.GetComponents_UnknownScheme_LocalHostAndPort_Success.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnDnsSafeHostTest.IdnDnsSafeHost_IPv6Host_ScopeIdButNoBrackets.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriEscapingTest.UriAbsoluteEscaping_FullIPv6Uri_NothingEscaped.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareRelativeAndOriginalHttpWithUnicodeAndReservedCharIriOff_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_804110_TryCreateUri_ShouldNotThrowIndexOutOfRange.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests_FullRun.XML - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnDnsSafeHostTest.IdnDnsSafeHost_SingleLabelAllExceptIntranet_Unicode.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareImplcitAndExplicitFileWithNoUnicode_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseVsAbsolute_ReturnsFullAbsolute.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriEscapingTest.UriAbsoluteEscaping_EscapeBufferRealloc.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriIsWellFormed_NewRelativeWithKnownSchemeAndQuery_SuccessButNotWellFormed.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_UnicodePlane0.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseVsFileLikeUri_MissingRootSlash_ThrowsUriFormatException.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriIsWellFormed_NewAbsoluteUnregisteredAsRelative_Throws.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareImplcitAndExplicitFileWithReservedChar_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareImplcitAndExplicitUncWithUnicodeIriOn_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareImplcitAndExplicitFileWithUnicodeAndReservedCharIriOn_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriMakeRelative_DifferentHost_ReturnsSecondUri.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriIsWellFormed_AbsoluteWithColonToRelative_AppendsDotSlash.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriIsWellFormed_NewRelativeWithUnknownSchemeAndQuery_Throws.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseVsDoubleCharColinChar_ReturnsCharColinChar.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriMailToTest.UriMailTo_SchemeAndBackslash_Throws.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriMakeRelative_ExplicitDosFileVsUncFile_ReturnsSecondUri.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriMailToTest.UriMailTo_EAI_SomeEscaping.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnHostNameValidationTest.IdnHost_GopherFqdn_Success.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseMadeRelativeToLastSlash_ReturnsDotSlash.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnHostNameValidationTest.IdnHost_Internal_Call_ThrowsException.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriIsWellFormed_RelativeWithPercentAndColon_Failure.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriEscapingTest.UriFile_ImplicitDosFile_QueryNotAllowed.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriEscapingTest.UriFile_ImplicitDosFile_FragmentNotAllowed.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_EscapedReservedCharacters.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriRelativeFileResolutionTest.IriRelativeResolution_CompareImplcitAndOriginalFileWithNoUnicode_AllPropertiesTheSame.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseVsAuthority_ReturnsBaseSchemePlusAuthority.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriIsWellFormed_AbsoluteWellFormed_Success.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriEscapingTest.UriUnescapeInvalid_AsciiIncompleteUtf8AsciiIriOn_InvalidUtf8LeftAlone.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_ValidateVeryLongInputString_EscapeUriString.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_ValidateVeryLongInputString_EscapeDataString.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseVsFragment_ReturnsBasePlusFragment.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriRelativeResolutionTest.Uri_Relative_BaseVsQueryAndFragment_ReturnsBaseAuthorityAndPathPlusQueryAndFragment.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriMakeRelative_ImplicitFileDifferentBaseWithColon_ReturnsSecondUri.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.UriIsWellFormedUriStringTest.UriMakeRelative_DifferentPort_ReturnsSecondUri.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_829158_IncorrectNormalization.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IriTest.Iri_IncompleteEscapedCharacter.xml - [ ] System.Runtime\4.0.0.0\Uri\UriTests\NCLFunctional.UriTest.IdnHostNameValidationTest.IdnHost_UnknownFqdn_Success.xml Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6584 area-System.Net Make WebUtility.UrlDecoder a struct Follow-up from #6538: basically the same changes except for the `System.Buffers`-related ones, since we wanted to avoid a dependency on that for the package `WebUtility` lives in. cc @stephentoub +6589 area-System.Diagnostics Add a production assert facility It is possible to use `Debug.Assert` in `DEBUG` builds to assert runtime conditions. The Base Class Library currently has no way to assert something in non-debug builds. That's a pity because in many applications it is a prudent choice to leave (cheap) assertions enabled in production. Many projects do not wish to make use of Code Contracts. It seems heavy-weight to pull in Code Contracts just to have an assert method. Please add a release build assert to the BCL. Here are some naming proposals: ``` Debug.ReleaseAssert(...) Assert.Debug.IsTrue(...); Assert.Release.IsTrue(...); ``` Another thing that makes `Debug.Assert` unusable in production is that it pops up a dialog box or crashes the process. This is inappropriate with ASP.NET where you normally want to simply abort the current HTTP request and let the process live. It's also inappropriate in any form of client-side GUI app. Frankly, the Abort-Retry-Cancel dialog that pops up is ... not very nice. Most apps are not overly concerned with state corruption. A `FailFast`-like approach is not desirable. Therefore, the new assert functions should merely throw an `AssertFailedException`. If the developer chooses to add a catch-all top-level handler to his request processing then so be it. The assertion failure exception will contain the stack trace pointing to the location of the error. It will be fairly easy to debug the assertion failure from logging output. The new assertion facility should _not_ be configurable to do something else (e.g. log and `FailFast`). Developers should be able to rely on the exact exception throwing behavior outlined above. When I see a production assert in foreign code I want to know what it does. I don't want the possibility that some developer-provided hook is called. Another benefit is that the whole ecosystem can standardize on this `AssertFailedException` class. All tools and testing frameworks can learn to understand it. The `AssertFailedException` is useful by itself, for example to signify unreachable code: ``` switch (...) { case: return 1; default: throw new AssertFailedException(); } ``` This would _not_ be possible with `Assert(false)` because the compiler must know that all paths return a value or throw. To help with this scenario, we could as a `class UnreachableException : AssertFailedException`. Now, tools can standardize on that one as well. When Resharper generates a `switch` it can use this exception type, for example. In this issue I have outlined the approach that I have used over 5 years in a 100 kLOC codebase. I found it to work very well. +6591 area-System.IO Fix System.IO.FileSystem handling of symlinks "We've visited this topic a few times... hopefully this is the last. We previously misunderstood some of how Windows handles symlinks, leading us to make some invalid choices on Unix. This addresses those issues. For the most part with this commit, we now match Windows behavior on Unix wherever possible, while also trying to do something sensible on the Unix side. The only notable difference now comes into play for broken symlinks, due to a fundamental difference between symlinks on Windows and Unix: on Windows, a symlink is created as either a file or directory symlink and thus .NET can tell which it is even if it's broken... on Unix, a symlink only stores a path to its target, so when it's broken, there's no information about whether it's intended to be a file or a directory. As a result, we fall back to always treating it as a file. To help highlight the behavior, consider this set up: - TargetDir - normal directory - LinkDir - a symlink to TargetDir - BrokenLinkDir - a symlink for a directory that's been deleted - TargetFile.txt - normal file - LinkFile.txt - a symlink to TargetFile.txt - BrokenLinkFile.txt - a symlink to a file that's been deleted - ReadonlyTargetFile.txt - a file attributed as readonly - LinkReadonlyFile.txt - a link to ReadonlyTargetFile With that, this program: ``` C# using System; using System.IO; using System.Linq; using static System.Console; class Program { static void Main() { WritePathDetails( ""TargetDir"", ""LinkDir"", ""BrokenLinkDir"", ""TargetFile.txt"", ""LinkFile.txt"", ""BrokenLinkFile.txt"", ""ReadonlyTargetFile.txt"", ""LinkReadonlyFile.txt""); } static void WritePathDetails(params string[] paths) { foreach (string path in paths) { WriteLine($""Path : {Try(() => Path.GetFileName(path))}""); WriteLine($""File.Exists : {Try(() => File.Exists(path))}""); WriteLine($""FileInfo.Exists : {Try(() => new FileInfo(path).Exists)}""); WriteLine($""Dir.Exists : {Try(() => Directory.Exists(path))}""); WriteLine($""DirInfo.Exists : {Try(() => new DirectoryInfo(path).Exists)}""); WriteLine($""FileInfo.Length : {Try(() => new FileInfo(path).Length)}""); WriteLine($""FileStream.Length : {Try(() => { using (var fs = File.OpenRead(path)) return fs.Length; })}""); WriteLine($""FileInfo.Attributes : {Try(() => new FileInfo(path).Attributes)}""); WriteLine($""DirInfo.Attributes : {Try(() => new DirectoryInfo(path).Attributes)}""); WriteLine($""Dir.Enumerate : {Try(() => Directory.EnumerateFiles(path).Count())}""); WriteLine($""DirInfo.Enumerate : {Try(() => new DirectoryInfo(path).EnumerateFiles().Count())}""); WriteLine(); } } static object Try(Func func) { try { return func(); } catch (Exception e) { return $""{e.GetType().Name}: {e.Message}""; } } } ``` now outputs the following:
WindowsUnix
Path                : TargetDir File.Exists         : False FileInfo.Exists     : False Dir.Exists          : True DirInfo.Exists      : True FileInfo.Length     : FileNotFoundException FileStream.Length   : UnauthorizedAccessException FileInfo.Attributes : Directory DirInfo.Attributes  : Directory Dir.Enumerate       : 18 DirInfo.Enumerate   : 18  Path                : LinkDir File.Exists         : False FileInfo.Exists     : False Dir.Exists          : True DirInfo.Exists      : True FileInfo.Length     : FileNotFoundException FileStream.Length   : UnauthorizedAccessException FileInfo.Attributes : Directory, ReparsePoint DirInfo.Attributes  : Directory, ReparsePoint Dir.Enumerate       : 18 DirInfo.Enumerate   : 18  Path                : BrokenLinkDir File.Exists         : False FileInfo.Exists     : False Dir.Exists          : True DirInfo.Exists      : True FileInfo.Length     : FileNotFoundException FileStream.Length   : UnauthorizedAccessException FileInfo.Attributes : Directory, ReparsePoint DirInfo.Attributes  : Directory, ReparsePoint Dir.Enumerate       : DirectoryNotFoundException DirInfo.Enumerate   : DirectoryNotFoundException  Path                : TargetFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 70 FileStream.Length   : 70 FileInfo.Attributes : Archive DirInfo.Attributes  : Archive Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : LinkFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 0 FileStream.Length   : 70 FileInfo.Attributes : Archive, ReparsePoint DirInfo.Attributes  : Archive, ReparsePoint Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : BrokenLinkFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 0 FileStream.Length   : FileNotFoundException FileInfo.Attributes : Archive, ReparsePoint DirInfo.Attributes  : Archive, ReparsePoint Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : ReadonlyTargetFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 70 FileStream.Length   : 70 FileInfo.Attributes : ReadOnly, Archive DirInfo.Attributes  : ReadOnly, Archive Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : LinkReadonlyFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 0 FileStream.Length   : 70 FileInfo.Attributes : Archive, ReparsePoint DirInfo.Attributes  : Archive, ReparsePoint Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException
Path                : TargetDir File.Exists         : False FileInfo.Exists     : False Dir.Exists          : True DirInfo.Exists      : True FileInfo.Length     : FileNotFoundException FileStream.Length   : UnauthorizedAccessException FileInfo.Attributes : Directory DirInfo.Attributes  : Directory Dir.Enumerate       : 18 DirInfo.Enumerate   : 18  Path                : LinkDir File.Exists         : False FileInfo.Exists     : False Dir.Exists          : True DirInfo.Exists      : True FileInfo.Length     : FileNotFoundException FileStream.Length   : UnauthorizedAccessException FileInfo.Attributes : Directory, ReparsePoint DirInfo.Attributes  : Directory, ReparsePoint Dir.Enumerate       : 18 DirInfo.Enumerate   : 18  Path                : BrokenLinkDir File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 6 FileStream.Length   : FileNotFoundException FileInfo.Attributes : ReparsePoint DirInfo.Attributes  : ReparsePoint Dir.Enumerate       : DirectoryNotFoundException DirInfo.Enumerate   : DirectoryNotFoundException  Path                : TargetFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 70 FileStream.Length   : 70 FileInfo.Attributes : Normal DirInfo.Attributes  : Normal Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : LinkFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 14 FileStream.Length   : 70 FileInfo.Attributes : ReparsePoint DirInfo.Attributes  : ReparsePoint Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : BrokenLinkFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 7 FileStream.Length   : FileNotFoundException FileInfo.Attributes : ReparsePoint DirInfo.Attributes  : ReparsePoint Dir.Enumerate       : DirectoryNotFoundException DirInfo.Enumerate   : DirectoryNotFoundException  Path                : ReadonlyTargetFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 70 FileStream.Length   : 70 FileInfo.Attributes : ReadOnly DirInfo.Attributes  : ReadOnly Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException  Path                : LinkReadonlyFile.txt File.Exists         : True FileInfo.Exists     : True Dir.Exists          : False DirInfo.Exists      : False FileInfo.Length     : 22 FileStream.Length   : 70 FileInfo.Attributes : ReparsePoint DirInfo.Attributes  : ReparsePoint Dir.Enumerate       : IOException DirInfo.Enumerate   : IOException
Interesting things to notice: - The only meaningful differences are for the ""Broken"" cases. - On Windows, symlinks are empty files and thus have 0 length. On Unix, they contain a path and thus have a length proportional to that path. - On Windows, files sometimes include an Archive attribute. This is Windows-specific and we don't include that attribute on Unix. Fixes #6556 cc: @ianhays, @bartonjs, @joshfree, @palladia, @andschwa " +6592 area-System.Net HttpClient ctor failed on Mac due to Unable to load DLL 'System.Security.Cryptography.Native' Call stack: Unhandled exception of type 'System.TypeInitializationException': System.TypeInitializationException : The type initializer for 'System.Net.Http.CurlHandler' threw an exception.\n---- System.TypeInitializationException : The type initializer for 'Http' threw an exception.\n-------- System.TypeInitializationException : The type initializer for 'HttpInitializer' threw an exception.\n------------ System.TypeInitializationException : The type initializer for 'CryptoInitializer' threw an exception.\n---------------- System.DllNotFoundException : Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found.\n (Exception from HRESULT: 0x8007007E) at System.Net.Http.CurlHandler..ctor() at System.Net.Http.HttpClient..ctor() +6598 area-Infrastructure System.Composition.* libraries do not produce a NuGet package "On top of this, the assemblies do not list an AssemblyVersion. These were ""special"" libraries in that they were already previously shipped as a [NuGet package](https://www.nuget.org/packages/Microsoft.Composition/1.0.30) before we moved them into corefx. We should come up with a story for them going forward. The previous version used was 1.0.30, so we should bump up from that at the very least. There is also the question of whether we want to use the old name (""Microsoft.Composition"") or switch to matching the assembly names (which might be difficult since there's 5 of them). " +6600 area-System.Net System.Net.CredentialCache: Avoid dictionary enumerator allocations Use `Dictionary`'s struct enumerator with `foreach` instead of using the enumerator as `IDictionaryEnumerator`, which boxes the struct. Test line & branch coverage over the changed lines is 100%. cc: @stephentoub @davidsh +6602 area-System.IO Add back managed implementation of System.IO.Compression We want to put System.IO.Compression into NetStandard.Library (not NetStandard.Platform) but in order to do that we need to have a fallback implementation that is pure IL that can be used on new platforms that may not have the native dependency supported. cc @ericstj @KrzysztofCwalina +6606 area-System.Net Kerberos ticket is not fetched when target is a user The xplat NegotiateStream implementation is able to successfully use Kerberos auth when the target of `AuthenticateAsClientAsync` is a service principal eg. HOST/machine, HTTP@machine etc. However, if the target is a user like foo@domainfqdn, the auth is failing. Perhaps in this case, the `gss_import_name` needs to be called with some OID other than `GSS_KRB5_NT_PRINCIPAL_NAME` +6607 area-System.Net Add HttpClientHandler test for proxies We don't currently have any functional tests in the repo for using HTTP proxies. This commit adds a very simple loopback GET request proxy server, just enough to verify that HttpClient does go through the specified proxy and pass credentials if requested. (When we get better infrastructure in place for this kind of thing, we can remove the proxy implementation and replace the test, but for now, this at least provides some automated verification cross-platform.) cc: @davidsh, @Petermarcu, @kapilash +6614 area-Infrastructure Produce package for System.Composition We currently don't produce packages for System.Composition.*. We should do so that we've a single tree for shipping fixes and features (it's currently only producing packages in our old internal Roxel tree). It's also worth pointing out that the Roslyn workspace layer has a dependency on the `Microsoft.Composition` package. +6615 area-Infrastructure Update clean.cmd to kill Roslyn compiler long running task. "@joperezr I synced your changes to dir.props for adding the Roslyn compiler to the build process. With that change we get a long running task (VBCSCompiler.exe) after we finish building that prevents us from then running ""git clean -xdf"" without first manually killing that task. (can't delete the tools dir) I'd like to request a change perhaps in the clean.cmd script to kill that task if it is still running. Making this change in the corefx repo would be ideal since we try to keep the scripts in the Wcf repo in sync with corefx. " +6617 area-Infrastructure OSX runs are run with elevated permissions by default on innerloop and outerloop OSX runs are launched by lauchdaemon, which runs as root, and runs all tests elevated. This might cause bugs in innerloop to be missed. cc @joshfree +6618 area-System.Security Break X509Certificates dependency on FileSystemWatcher I'm looking at our dependencies and noticed that the unix implementation of X509Certificates depends on FileSystemWatcher which we should try to break the dependency on. https://github.com/dotnet/corefx/commit/0522e19dc6c06bd80c1f80232fd9600862cdb70c#diff-9c28d44206dff30cadeb4ac3e316aabaR32 I don't know the reliability of FileSystemWatcher on unix but it is notoriously bad on windows and we shouldn't have a dependency on it from a low level library. +6621 area-System.Globalization System.Globalization.Tests.NormalizationAll.NormalizeTest fails with OOM on Windows Nano ``` Discovering: System.Globalization.Extensions.Tests 14:12:40 Discovered: System.Globalization.Extensions.Tests 14:12:40 Starting: System.Globalization.Extensions.Tests 14:12:40 System.Globalization.Tests.NormalizationAll.NormalizeTest [FAIL] 14:12:40 System.TypeInitializationException : The type initializer for 'System.Globalization.Tests.NormalizationAll' threw an exception. 14:12:40 ---- System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:12:40 Stack Trace: 14:12:40 at System.Globalization.Tests.NormalizationAll.NormalizeTest() 14:12:40 ----- Inner Stack Trace ----- 14:12:40 at System.Globalization.Tests.NormalizationAll..cctor() 14:12:40 Finished: System.Globalization.Extensions.Tests ``` Test result [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_winnano_debug_tst/6/console) +6622 area-System.Diagnostics System.Diagnostics.Process failures on Windows Nano ``` Discovering: System.Diagnostics.Process.Tests 14:11:45 Discovered: System.Diagnostics.Process.Tests 14:11:45 Starting: System.Diagnostics.Process.Tests 14:11:46 **System.Diagnostics.Tests.ProcessStandardConsoleTests.TestChangesInConsoleEncoding** [FAIL] 14:11:46 Assert+WrapperXunitException : File path: d:\j\workspace\outerloop_win---ce410c48\src\System.Diagnostics.Process\tests\ProcessStandardConsoleTests.cs. Line: 26 14:11:46 ---- Assert.Equal() Failure 14:11:46 Expected: 65001 14:11:46 Actual: 437 14:11:46 Stack Trace: 14:11:46 TestUserCredentialsPropertiesOnWindows: NetUserAdd failed: The account already exists 14:11:46 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 14:11:46 at Assert.Equal[T](T expected, T actual, String path, Int32 line) 14:11:46 at System.Diagnostics.Tests.ProcessStandardConsoleTests.b__1_0(Int32 expectedCodePage) 14:11:46 at System.Diagnostics.Tests.ProcessStandardConsoleTests.TestChangesInConsoleEncoding() 14:11:46 ----- Inner Stack Trace ----- 14:11:46 at Assert.Equal[T](T expected, T actual, String path, Int32 line) 14:11:48 ** System.Diagnostics.Tests.ProcessThreadTests.TestStartAddressProperty** [FAIL] 14:11:48 Assert+WrapperXunitException : File path: d:\j\workspace\outerloop_win---ce410c48\src\System.Diagnostics.Process\tests\ProcessThreadTests.cs. Line: 113 14:11:48 ---- Assert.Equal() Failure 14:11:48 Expected: False 14:11:48 Actual: True 14:11:48 Stack Trace: 14:11:48 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 14:11:48 at Assert.Equal[T](T expected, T actual, String path, Int32 line) 14:11:48 at System.Diagnostics.Tests.ProcessThreadTests.TestStartAddressProperty() 14:11:48 ----- Inner Stack Trace ----- 14:11:48 at Assert.Equal[T](T expected, T actual, String path, Int32 line) 14:11:49 **System.Diagnostics.Tests.ProcessWaitingTests.MultipleProcesses_StartAllKillAllWaitAll **[FAIL] 14:11:49 System.ComponentModel.Win32Exception : Not enough quota is available to process this command 14:11:49 Stack Trace: 14:11:49 at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) 14:11:49 at System.Diagnostics.Process.Start() 14:11:49 at System.Diagnostics.Tests.ProcessWaitingTests.MultipleProcesses_StartAllKillAllWaitAll() ``` Test result [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_winnano_debug_tst/6/console) +6623 area-System.Data System.Data.SqlClient.ManualTesting tests failing on Windows Nano ``` 14:11:38 Discovering: System.Data.SqlClient.ManualTesting.Tests 14:11:38 Discovered: System.Data.SqlClient.ManualTesting.Tests 14:11:38 Starting: System.Data.SqlClient.ManualTesting.Tests 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ReaderTest.TestMain [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Pubs 14:11:38 Stack Trace: 14:11:38 Test Failed! 14:11:38 Please compare baseline : F:\j\workspace\outerloop_win---75965e55\bin\tests\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.ManualTesting.Tests\dnxcore50\MultipleResultsTest.bsl with output :F:\j\workspace\outerloop_win---75965e55\bin\tests\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.ManualTesting.Tests\dnxcore50\MultipleResultsTest.out 14:11:38 Comparison Results : 14:11:38 ** DIFF at line 0 14:11:38 A : System.Exception: Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 E : MultipleErrorHandling SqlConnection 14:11:38 ** DIFF at line 1 14:11:38 A : at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 E : **** ExecuteNonQuery ***** 14:11:38 ** DIFF at line 2 14:11:38 A : at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 E : SqlException: Error 1 14:11:38 ** DIFF at line 3 14:11:38 A : at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 E : Error 2 14:11:38 ** DIFF at line 4 14:11:38 A : at System.Data.SqlClient.ManualTesting.Tests.MultipleResultsTest.RunDataTest() 14:11:38 E : Error 3 14:11:38 ** DIFF at line 5 14:11:38 A : at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.RunTest() 14:11:38 E : Error 4 14:11:38 ** MISSING 14:11:38 5 : Error 46 : Error 57 : 08 : 19 : 310 : 411 : 512 : 613 : 714 : 815 : 916 : 1017 : 1118 : **** ExecuteScalar ****19 : *** SQL CONNECTION INFO MESSAGE : 0 ****20 : **** ExecuteReader ****21 : *** SQL CONNECTION INFO MESSAGE : 0 ****22 : NextResult23 : *** SQL CONNECTION INFO MESSAGE : 1 ****24 : SqlException: Error 125 : NextResult26 : *** SQL CONNECTION INFO MESSAGE : 3 ****27 : NextResult28 : *** SQL CONNECTION INFO MESSAGE : 4 ****29 : SqlException: Error 230 : NextResult31 : *** SQL CONNECTION INFO MESSAGE : 5 ****32 : NextResult33 : *** SQL CONNECTION INFO MESSAGE : 6 ****34 : SqlException: Error 335 : NextResult36 : *** SQL CONNECTION INFO MESSAGE : 7 ****37 : NextResult38 : *** SQL CONNECTION INFO MESSAGE : 8 ****39 : SqlException: Error 440 : NextResult41 : *** SQL CONNECTION INFO MESSAGE : 9 ****42 : NextResult43 : *** SQL CONNECTION INFO MESSAGE : 10 ****44 : SqlException: Error 545 : NextResult46 : *** SQL CONNECTION INFO MESSAGE : 11 **** 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Pubs() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ReaderTest.TestMain() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.VariousExceptionTests [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.VariousExceptionTests() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.MultipleExecutesInSameTransactionTest_ShouldThrowsUnsupported_Katmai [FAIL] 14:11:38 System.NullReferenceException : Object reference not set to an instance of an object. 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.PopulateConnectionStrings() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.MultipleExecutesInSameTransactionTest_ShouldThrowsUnsupported_Katmai() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.ExceptionTests [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.ExceptionTests() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.WarningsBeforeRowsTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.WarningsBeforeRowsTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.IndependentConnectionExceptionTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.IndependentConnectionExceptionTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.WarningTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ExceptionTest.WarningTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.ExecuteCommand_WithNewConnection_ShouldPerformAsyncByDefault [FAIL] 14:11:38 System.AggregateException : One or more errors occurred. (Could not find a valid connection string for the key: SQL2005_Northwind) (Could not find a valid connection string for the key: SQL2005_Northwind) 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 14:11:38 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 14:11:38 at System.Threading.Tasks.Task.WaitAll(Task[] tasks) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.ExecuteCommand_WithNewConnection_ShouldPerformAsyncByDefault() 14:11:38 ----- Inner Stack Trace #1 (System.Exception) ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.d__3.MoveNext() 14:11:38 ----- Inner Stack Trace #2 (System.Exception) ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.d__3.MoveNext() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.ExecuteCommand_WithSharedConnection_ShouldPerformAsyncByDefault [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.ExecuteCommand_WithSharedConnection_ShouldPerformAsyncByDefault() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.OpenConnection_WithAsyncTrue_ThrowsNotSupportedException [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DDAsyncTest.OpenConnection_WithAsyncTrue_ThrowsNotSupportedException() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DateTimeTest.TypeVersionKnobTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DateTimeTest.TypeVersionKnobTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.TransactionTest.TestKatmai [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.TransactionTest.TestKatmai() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.TransactionTest.TestYukon [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.TransactionTest.TestYukon() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest.ConnectionPool_Nwnd9 [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest..ctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest.ConnectionPool_Nwnd9Mars [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest..ctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest.ConnectionPool_Nwnd10Mars [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest..ctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest.ConnectionPool_Nwnd10 [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ConnectionPoolTest..ctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MultipleResultsTest.TestMain [FAIL] 14:11:38 Assert.True() Failure 14:11:38 Expected: True 14:11:38 Actual: False 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MultipleResultsTest.TestMain() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncTimeoutTest [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncTimeoutTest() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest4 [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest4() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.AsyncTest.FailureTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.AsyncTest.FailureTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.AsyncTest.ExecuteTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.AsyncTest.ExecuteTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DateTimeTest.ReaderParameterTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DateTimeTest.ReaderParameterTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest3 [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest3() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.WeakRefTest.TestReaderNonMars [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Pubs 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Pubs() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.WeakRefTest.TestReaderNonMars() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.WeakRefTest.TestTransactionSingle [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Pubs 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Pubs() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.WeakRefTest.TestTransactionSingle() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteNonQueryTest [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteNonQueryTest() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DateTimeTest.SQLBU503290Test [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DateTimeTest.SQLBU503290Test() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteNonQuery_AllFlavors [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteNonQuery_AllFlavors() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSAsyncTimeoutTest [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSAsyncTimeoutTest() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteScalar_AllFlavors [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteScalar_AllFlavors() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_RPC_NoGC [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_RPC_NoGC() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_StoredProcedure_WithGC [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_StoredProcedure_WithGC() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncBusyReaderTest [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncBusyReaderTest() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_Text_WithGC [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_Text_WithGC() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_Text_NoGC [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest.MarsExecuteReader_Text_NoGC() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSSessionPoolingTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest1 [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest1() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest2 [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.MARSTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest.MARSSyncExecuteReaderTest2() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.MARSTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient_NP [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind_NamedPipes 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind_NamedPipes() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient_NP() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd11SqlClient_NP [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2012_Northwind_NamedPipes 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2012_Northwind_NamedPipes() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd11SqlClient_NP() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient_NP [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind_NamedPipes 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind_NamedPipes() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient_NP() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.SqlNamedPipesTest.InvalidConnStringTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind_NamedPipes 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind_NamedPipes() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.SqlNamedPipesTest.InvalidConnStringTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.SqlNamedPipesTest.ValidConnStringTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind_NamedPipes 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind_NamedPipes() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.SqlNamedPipesTest.ValidConnStringTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DDMARSTest.TestMain [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DDMARSTest.TestMain() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataTypes.XmlTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTypes.XmlTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.BasicParallelTest_ShouldThrowsUnsupported_Yukon [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Pubs 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Pubs() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.BasicParallelTest_ShouldThrowsUnsupported_Yukon() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.MultipleExecutesInSameTransactionTest_ShouldThrowsUnsupported_Yukon [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Pubs 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Pubs() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.MultipleExecutesInSameTransactionTest_ShouldThrowsUnsupported_Yukon() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.BasicParallelTest_ShouldThrowsUnsupported_Katmai [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2008_Pubs 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Pubs() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.ParallelTransactionsTest.BasicParallelTest_ShouldThrowsUnsupported_Katmai() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.WeakRefTestYukonSpecific.TestReaderMars [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.WeakRefTestYukonSpecific.TestReaderMars() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.DataTypes.MaxTypesTest [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Master 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Master() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTypes.MaxTypesTest() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.WeakRefTestYukonSpecific.TestTransactionSingle [FAIL] 14:11:38 System.Exception : Could not find a valid connection string for the key: SQL2005_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2005_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.WeakRefTestYukonSpecific.TestTransactionSingle() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.TimeoutCancel [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.TimeoutCancel() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.CancelAndDisposePreparedCommand [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.CancelAndDisposePreparedCommand() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.MultiThreadedCancel_NonAsync [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.MultiThreadedCancel_NonAsync() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest..cctor() 14:11:38 System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.TimeOutDuringRead [FAIL] 14:11:38 System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest' threw an exception. 14:11:38 ---- System.Exception : Could not find a valid connection string for the key: SQL2008_Northwind 14:11:38 Stack Trace: 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.TimeOutDuringRead() 14:11:38 ----- Inner Stack Trace ----- 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Northwind() 14:11:38 at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest..cctor() 14:11:39 System.Data.SqlClient.ManualTesting.Tests.SqlRandomStress.TestMain [FAIL] 14:11:39 System.Exception : Could not find a valid connection string for the key: SQL2008_Master 14:11:39 Stack Trace: 14:11:39 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionStringFromXml(String key) 14:11:39 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.GetConnectionString(String connectionStringName) 14:11:39 at System.Data.SqlClient.ManualTesting.Tests.DataTestClass.get_SQL2008_Master() 14:11:39 at System.Data.SqlClient.ManualTesting.Tests.SqlRandomStress.TestMain() 14:11:39 Finished: System.Data.SqlClient.ManualTesting.Tests 14:11:39 14:11:39 === TEST EXECUTION SUMMARY === ``` **System.Data.SqlClient.ManualTesting.Tests Total: 66, Errors: 0, Failed: 58, Skipped: 0, Time: 0.947s** Test result [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_winnano_debug_tst/6/console) +6624 area-System.Collections OOM exceptions from System.Collections Tests on Windows Nano ``` 14:10:54 Discovering: System.Collections.Tests 14:10:54 Discovered: System.Collections.Tests 14:10:55 Starting: System.Collections.Tests 14:10:58 System.Collections.Tests.InternalHashCodeTests.OutOfBoundsRegression [FAIL] 14:10:58 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:10:58 Stack Trace: 14:10:58 at System.Collections.Tests.TestData.d__0.MoveNext() 14:10:58 at System.Collections.Tests.InternalHashCodeTests.OutOfBoundsRegression() 14:11:30 System.Collections.Tests.Perf_List.Clear(size: 10000) [FAIL] 14:11:30 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:11:30 Stack Trace: 14:11:30 at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 14:11:30 at System.Collections.Tests.Perf_List.Clear(Int32 size) 14:11:30 System.Collections.Tests.Perf_List.Clear(size: 100000) [FAIL] 14:11:30 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:11:30 Stack Trace: 14:11:30 at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 14:11:30 at System.Collections.Tests.Perf_List.Clear(Int32 size) 14:11:30 Finished: System.Collections.Tests 14:11:30 14:11:30 === TEST EXECUTION SUMMARY === ``` **System.Collections.Tests Total: 36399, Errors: 0, Failed: 3, Skipped: 0, Time: 34.902s** +6625 area-System.Console System.Console test failure on Windows Nano ``` 14:11:37 WindowAndCursorProps.Title [FAIL] 14:11:37 Assert+WrapperXunitException : File path: d:\j\workspace\outerloop_win---ce410c48\src\System.Console\tests\WindowAndCursorProps.cs. Line: 124 14:11:37 ---- Assert.Equal() Failure 14:11:37 ↓ (pos 0) 14:11:37 Expected: Title set by unit test 14:11:37 Actual: 14:11:37 ↑ (pos 0) 14:11:37 Stack Trace: 14:11:37 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 14:11:37 at Assert.Equal(String expected, String actual, String path, Int32 line) 14:11:37 at WindowAndCursorProps.Title() 14:11:37 ----- Inner Stack Trace ----- 14:11:37 at Assert.Equal(String expected, String actual, String path, Int32 line) 14:11:37 Finished: System.Console.Tests 14:11:37 14:11:37 === TEST EXECUTION SUMMARY === 14:11:37 System.Console.Tests Total: 80, Errors: 0, Failed: 1, Skipped: 0, Time: 0.892s ``` Test result [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_winnano_debug_tst/6/console) +6626 area-System.IO System.IO.FileSystem.Tests throw OOM on windows nano ``` 14:13:21 Discovered: System.IO.FileSystem.Tests 14:13:22 Starting: System.IO.FileSystem.Tests 14:13:22 symbolic link created for C:\Users\dotnet-bot\AppData\Local\Temp\Directory_Exists_n14uv1wg.rru\SymlinkToNewDirectory_327 <<===>> C:\Users\dotnet-bot\AppData\Local\Temp\Directory_Exists_n14uv1wg.rru\SymlinkToNewDirectory_324 14:13:23 symbolic link created for C:\Users\dotnet-bot\AppData\Local\Temp\FileInfo_Exists_xtqquk01.5qz\SymLinksMayExistIndependentlyOfTarget_92 <<===>> C:\Users\dotnet-bot\AppData\Local\Temp\FileInfo_Exists_xtqquk01.5qz\SymLinksMayExistIndependentlyOfTarget_91 14:13:23 symbolic link created for C:\Users\dotnet-bot\AppData\Local\Temp\File_GetSetAttributes_pdlxjhto.k5i\SymLinksAreReparsePoints_114 <<===>> C:\Users\dotnet-bot\AppData\Local\Temp\File_GetSetAttributes_pdlxjhto.k5i\SymLinksAreReparsePoints_113 14:13:23 symbolic link created for C:\Users\dotnet-bot\AppData\Local\Temp\File_GetSetAttributes_tgxbi3ng.xuy\SymLinksReflectTargetAttributes_127 <<===>> C:\Users\dotnet-bot\AppData\Local\Temp\File_GetSetAttributes_tgxbi3ng.xuy\SymLinksReflectTargetAttributes_126 14:13:24 System.IO.Tests.Perf_FileStream.Read(useAsync: True, bufferSize: 512, totalSize: 10000000) [FAIL] 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 [FATAL] System.OutOfMemoryException 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 System.IO.Tests.Perf_FileStream.Read(useAsync: False, bufferSize: 512, totalSize: 10000000) [FAIL] 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 [FATAL] System.OutOfMemoryException 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 System.IO.Tests.File_ReadWriteAllBytes.ReadFileOver2GB [FAIL] 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 [FATAL] System.OutOfMemoryException 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 System.IO.Tests.File_Copy_str_str_b.CopyFileWithData_MemberData(data: ['ó', 'b', '´', 0x0011, 'L', ...], readOnly: True) [FAIL] 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 [FATAL] System.OutOfMemoryException 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 System.IO.Tests.FileInfo_CopyTo_str_b.CopyFileWithData_MemberData(data: ['Y', 0x0003, 0x0001, 'á', 'g', ...], readOnly: True) [FAIL] 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 [FATAL] System.OutOfMemoryException 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 System.IO.Tests.FileInfo_CopyTo_str.CopyFileWithData_MemberData(data: [0x0097, 'Ã�', 'Z', 0x0008, 0x0011, ...], readOnly: True) [FAIL] 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:24 [FATAL] System.OutOfMemoryException 14:13:24 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:24 Stack Trace: 14:13:25 System.IO.Tests.FileInfo_CopyTo_str_b.CopyFileWithData_MemberData(data: [0x0080, 'ø', '[', 'ú', 'ô', ...], readOnly: False) [FAIL] 14:13:25 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:25 Stack Trace: 14:13:26 [FATAL] System.OutOfMemoryException 14:13:26 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:26 Stack Trace: 14:13:26 System.IO.Tests.File_Copy_str_str_b.CopyFileWithData_MemberData(data: ['Q', ';', 'û', 'r', 0x008f, ...], readOnly: False) [FAIL] 14:13:26 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:26 Stack Trace: 14:13:26 [FATAL] System.OutOfMemoryException 14:13:26 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:26 Stack Trace: 14:13:26 System.IO.Tests.FileInfo_Length.SymLinkLength [FAIL] 14:13:26 System.ComponentModel.Win32Exception : The paging file is too small for this operation to complete 14:13:26 Stack Trace: 14:13:26 [FATAL] System.OutOfMemoryException 14:13:26 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:26 Stack Trace: 14:13:27 System.IO.Tests.File_Copy_str_str.CopyFileWithData_MemberData(data: [0x008b, '#', 'î', 'H', 'ì', ...], readOnly: True) [FAIL] 14:13:27 System.IO.IOException : Not enough storage is available to process this command 14:13:27 Stack Trace: 14:13:27 [FATAL] System.OutOfMemoryException 14:13:27 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:27 Stack Trace: 14:13:27 System.IO.Tests.File_Copy_str_str.CopyFileWithData_MemberData(data: ['s', 'j', '!', 'þ', '¿', ...], readOnly: False) [FAIL] 14:13:27 System.IO.IOException : Not enough storage is available to process this command 14:13:27 Stack Trace: 14:13:27 [FATAL] System.OutOfMemoryException 14:13:27 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:27 Stack Trace: 14:13:27 System.IO.Tests.FileStream_SafeFileHandle.ThrowWhenHandlePositionIsChanged [FAIL] 14:13:27 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:27 Stack Trace: 14:13:27 [FATAL] System.OutOfMemoryException 14:13:27 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:27 Stack Trace: 14:13:28 System.IO.Tests.FileStream_Position.PositionPastEnd [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.DirectoryInfo_Exists.SymlinkToNewDirectoryInfo [FAIL] 14:13:28 System.ComponentModel.Win32Exception : The paging file is too small for this operation to complete 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.Directory_GetSetTimes.NullPath_ThrowsArgumentNullException [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.Directory_GetSetTimes.Windows_DirectoryDoesntExist_ReturnDefaultValues [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.Directory_GetSetTimes.EmptyPath_ThrowsArgumentException [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.Directory_GetSetTimes.SettingUpdatesProperties [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.Directory_GetSetTimes.CreationSetsAllTimes [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.DirectoryInfo_GetSetTimes.SettingUpdatesProperties [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 System.IO.Tests.DirectoryInfo_GetSetTimes.CreationSetsAllTimes [FAIL] 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:28 [FATAL] System.OutOfMemoryException 14:13:28 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:28 Stack Trace: 14:13:29 System.IO.Tests.File_GetSetTimes.EmptyPath_ThrowsArgumentException [FAIL] 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 [FATAL] System.OutOfMemoryException 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 System.IO.Tests.File_GetSetTimes.SettingUpdatesProperties [FAIL] 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 [FATAL] System.OutOfMemoryException 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 System.IO.Tests.File_GetSetTimes.Windows_FileDoesntExist_ReturnDefaultValues [FAIL] 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 [FATAL] System.OutOfMemoryException 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 System.IO.Tests.File_GetSetTimes.NullPath_ThrowsArgumentNullException [FAIL] 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 [FATAL] System.OutOfMemoryException 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 System.IO.Tests.File_GetSetTimes.CreationSetsAllTimes [FAIL] 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:29 [FATAL] System.OutOfMemoryException 14:13:29 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 14:13:29 Stack Trace: 14:13:31 14:13:31 Unhandled Exception: OutOfMemoryException. ``` Test result [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_winnano_debug_tst/6/console) +6632 area-System.Net CredentialCache.Remove compat: Don't throw when key not found This PR changes `CredentialCache.Remove` to not throw in .NET Core to match the behavior of the full framework. In the full framework, `CredentialCache.Remove` does not throw when the key isn't found, which is consistent with the behavior described in the MSDN [documentation](https://msdn.microsoft.com/en-us/library/4zaz5c95%28v=vs.110%29.aspx): > If authType is null or uriPrefix is null, or no matching credential is found in the cache, this method does nothing. cc: @stephentoub @davidsh +6644 area-System.IO Add FileSystem.Watcher support for NetBSD There is need to make use of the libinotify port. +6645 area-System.Reflection Expose System.Reflection APIs on .Net Native #5381 has the list of the APIs that need to be exposed. +6659 area-System.Net remove assert on gss_buffer members Fix for #6199 Testing in downstream components revealed that the earlier fix #6201, is not sufficient. There are cases where the instance of `gss_buffer_t` returned from the api is not null and has a zero length, but its data field may point to a non-null pointer. This PR attempts removes assertions about relation between the length and the data pointer. cc: @stephentoub @vijaykota +6663 area-System.IO Provide a version of Stream.Read that reads as much as possible I believe one of the most common mistakes when using `Stream.Read()` is that the programmer doesn't realize that `Read()` may return less data than what is available in the `Stream`. And even for programmers who are aware of this, having to write the same loop every single time they want to read from a `Stream` is annoying. So, my proposal is to add the following methods to `Stream` (mirroring the existing `Read` methods): ``` c# public int ReadAll(byte[] buffer, int offset, int count) public Task ReadAllAsync(byte[] buffer, int offset, int count) public Task ReadAllAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) ``` Each `ReadAll` method would call the corresponding `Read` method in a loop, until the `buffer` was filled or until `Read` returned 0. Questions: - Is there a better name than `ReadAll`? - These methods would work as well if they were extension methods. Should they be? - Very similar functionality is already exposed through `BinaryReader.ReadBytes()`. Why doesn't it have `async` version? +6666 area-System.Net On OSX, throw PlatformNotSupportedException from Socket.ReceiveFrom, … …ReceiveMessageFrom, etc., if called on a dual-mode socket. OSX does not provide IPv4 packet information for dual-mode sockets, so these APIs cannot be made to behave consistently when used on dual-mode sockets. Rather than behave inconsistently, we will throw PlatformNotSupportedException with suggestions for getting consistent behavior. Fixes #4004. @pgavlin, @CIPop, @stephentoub +6668 area-System.Net SSLv3.0 is not supported on Windows but is supported on Linux This very well may be an environment issue (I am vaguely aware that curl is used on non-Windows platforms), but I wanted to report it just in case. I made a test app to demonstrate this: [SslProtocols.zip](https://github.com/dotnet/corefx/files/159292/SslProtocols.zip). Just use `dotnet restore` and `dotnet run` to try it. My CI test results indicated that Mac does not support SSLv3.0 just like Windows, but I was not able to log in and try my test app there. ### Test app output: #### Windows ``` SSLv2.0: not supported (exception: A connection with the server could not be established) SSLv3.0: not supported (exception: A security error occurred) TLSv1.0: supported (response: HTTP/1.1 200 OK) TLSv1.1: supported (response: HTTP/1.1 200 OK) TLSv1.2: supported (response: HTTP/1.1 200 OK) ``` #### Linux ``` SSLv2.0: not supported (exception: SSL connect error) SSLv3.0: supported (response: HTTP/1.1 200 OK) TLSv1.0: supported (response: HTTP/1.1 200 OK) TLSv1.1: supported (response: HTTP/1.1 200 OK) TLSv1.2: supported (response: HTTP/1.1 200 OK) ``` _(note that the inner exception message is different from Windows and Linux, not sure if that is an issue)_ ### `dotnet --version` output: #### Windows [Version 1.0.0.001598](https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/1.0.0.001598/dotnet-win-x64.1.0.0.001598.zip) ``` .NET Command Line Tools (1.0.0) Runtime Environment: OS Name: Windows OS Version: 10.0.10586 OS Platform: Windows Runtime Id: win10-x64 ``` #### Linux ``` .NET Command Line Tools (1.0.0-beta-001598) Product Information: Version: 1.0.0-beta-001598 Commit Sha: N/A Runtime Environment: OS Name: ubuntu OS Version: 14.04 OS Platform: Linux Runtime Id: ubuntu.14.04-x64 ``` +6671 area-System.Net Delete unused OSXIPv6GlobalStatistics file This file was not being included in compilation, so it should be deleted. @stephentoub +6672 area-System.Net Disable SSLv2 and SSLv3 in CurlHandler Forces CurlHandler to not use SSLv2 or SSLv3 even if they're available. SSLv2 has been disabled by default in libcurl since 7.18.1, and SSLv3 since 7.39.0, but this ensures they're disabled even before those versions. Fixes https://github.com/dotnet/corefx/issues/6668 cc: @bartonjs, @cipop, @davidsh, @kapilash, @joelverhagen +6673 area-System.Security Verify the behavior of GetRSAPrivateKey with a 384-bit key "384 is chosen only as a ""value that RSACSP supports that RSACng doesn't"" representative sample. Early testing suggests that the key may load validly into a CngKey and then fail when loading it into the RSACng object. If it works (returns any valid RSA instance), great; add a test. If not, fix it and add a test :smile:. " +6675 area-System.IO FileSystemWatcher doesn't trigger in the temp folder on OSX "I found a very peculiar bug that happens only under certain conditions. So, you need: - To be running on OSX (ElCapitain in my case) - The watched folder must be in the temp folder returned by `Path.GetTempPath()` Here's the code to reproduce: ``` csharp // This works (update the username): // var folder = Path.Combine(""/Users/victorhurdugaci/temp"", Guid.NewGuid().ToString()); // This fails: var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Console.WriteLine(folder); Directory.CreateDirectory(folder); using (var watcher = new FileSystemWatcher(folder)) { watcher.Created += (s, e) => { Console.WriteLine(""### Triggered""); }; watcher.EnableRaisingEvents = true; File.WriteAllText(folder + ""/f2"", """"); Console.WriteLine(""waiting...""); System.Threading.Thread.Sleep(10000); } ``` With the temp folder, it only prints ``` waiting... ``` With the user folder, it prints: ``` ### Triggered waiting... ``` Not sure if it's something special about the path characters or length. On my machine, the generated temp folder looks like `/var/folders/x4/h490d6xs4mndqfg5sk231_mw0000gn/T/1cc8944d-b218-4f95-8dd0-ea208fb9b9b7` `System.IO.FileSystem.Watcher` version is `4.0.0-rc2-23826` " +6676 area-System.Net Need more tests for non-DualMode socket usage There is a lot of coverage of DualMode socket send/receive operations that does not have corresponding coverage for non-DualMode sockets. We should add that, particularly since #6666 renders the DualMode tests mostly useless on OSX. +6677 area-System.Diagnostics Process.Modules tests are hanging in CI on OS X Locally then run fine, and they made it through a couple of CI runs. But something about shelling out to vmmap is causing them to hang in CI. +6681 area-System.Net BeginAcceptV4BoundToAnyV6_Success failed in CI ``` 18:18:24 System.Net.Sockets.Tests.DualMode.BeginAcceptV4BoundToAnyV6_Success [FAIL] 18:18:24 Assert.Equal() Failure 18:18:24 Expected: ::ffff:127.0.0.1 18:18:24 Actual: ::127.0.0.1 18:18:24 Stack Trace: 18:18:24 at System.Net.Sockets.Tests.DualMode.DualModeConnect_BeginAccept_Helper(IPAddress listenOn, IPAddress connectTo) 18:18:24 at System.Net.Sockets.Tests.DualMode.BeginAcceptV4BoundToAnyV6_Success() ``` cc: @ericeil , @ianhays +6684 area-System.Runtime Bug in System.Runtime.InteropServices.WindowsRuntime packaging I noticed that the System.Runtime.InteropServices.WindowsRuntime package only has a runtime output for `win8`. Unfortunately that breaks code on CoreCLR that uses reflection. The issue is that a netstandard library can reference types in that assembly even if it’s not used at runtime. It’s part of PCL 259 as well. So if I have an app (or unit test in this case) that runs on CoreCLR and uses reflection against a type in that library, I get a FileNotFoundException and it cannot load the types. Here's an example from Rx.NET ``` ReactiveTests.Tests.ObservableEventsTest.FromEventPattern_Reflection_Instance_InvalidVariance [FAIL] Expected InvalidOperationException threw FileNotFoundException. Stack trace: at System.Reactive.ReflectionUtils.GetEventMethods[TSender,TEventArgs](Type targetType, Object target, String eventName, MethodInfo& addMethod, MethodInfo& removeMethod, Type& delegateType, Boolean& isWinRT) at System.Reactive.Linq.QueryLanguage.FromEventPattern_[TSender,TEventArgs,TResult](Type targetType, Object target, String eventName, Func`3 getResult, IScheduler scheduler) at System.Reactive.Linq.QueryLanguage.FromEventPattern_[TEventArgs](Object target, String eventName, IScheduler scheduler) at System.Reactive.Linq.QueryLanguage.FromEventPattern[TEventArgs](Object target, String eventName) at System.Reactive.Linq.Observable.FromEventPattern[TEventArgs](Object target, String eventName) at ReactiveTests.Tests.ObservableEventsTest.<>c.b__9_0() in C:\Users\oren\source\git\reactive-extensions-private\Rx.NET\Source\Tests.System.Reactive\Tests\Linq\ObservableEventsTest.cs:line 280 at Microsoft.Reactive.Testing.ReactiveAssert.Throws[TException](Action action) Expected: True Actual: False ``` The unit test is a `netstandardapp1.5` and the library under test is a `netstandard1.0` lib. It just so happens that the code references types in that `System.Runtime.InteropServices.WindowsRuntime` package. This worked (and the tests passed) in dnx. Note that I don't necessarily expect WinRT functionality to work, but it seems critical that the file exists and is copied to all runtimes. Xamarin had this issue at one point too as they didn't generate this façade assembly. They finally did even if it was mostly no-ops. +6685 area-System.Text Proposal: Regex Repetition Syntax Enhancement "# The Issue If we want to match a list of any kind in regex, we currently have to make certain compromises. For example, say we wanted to match a list of names, such as: `Anna,Bob,Charlie` (a more complex example would be a list of phone numbers, or url's, so imagine the regex is potentially long and complex). We could try: ``` ((Anna|Bob|Charlie),)+ ``` However that doesn't match our original text as it requires a final `,` to match. | Text | Should match | Matches | | --- | --- | --- | | `""Anna,Bob,Charlie""` | yes | no **(wrong)** | | `""AnnaBob,Charlie""` | no | no | We could try: ``` ((Anna|Bob|Charlie),?)+ ``` But this will wrongly match items without the separator, which is probably not what the user wants: | Text | Should match | Matches | | --- | --- | --- | | `""Anna,Bob,Charlie""` | yes | yes | | `""AnnaBob,Charlie""` | no | yes **(wrong)** | Currently the only way to achieve this is through the duplication of the list-item regex group: ``` (Anna|Bob|Charlie)(,(Anna|Bob|Charlie))* ``` Which is a pain when the match is long like a phone number or a url, and if you update one part you have to remember to copy the changes to the other one. It also gets tricky if say you wanted it to match from 0 to 20 items, you'd have to do it like this: ``` ((Anna|Bob|Charlie)(,(Anna|Bob|Charlie)){0,19})? ``` The only way to somewhat avoid this is to put that regex part into a variable and use the variable twice to construct the regex, but this relies on the host language, still creates a longer than necessary regex, and matches an extra redundant matching group which the user then has to manually group with the first in the host language. # Proposal A more useful approach could be to use some repetition separator syntax. Regex already has repetition quantifiers like `+`, `*`, `?` and also `{m,n}`. The last one could be enhanced to specify an optional third parameter as a repetition-separator group: ``` (Anna|Bob|Charlie){0,20,(,)} ``` Since it can contain any valid regex syntax, it should always be enclosed inside a group, and it behaves like any normal group. Just like in normal usage, the quantifier limit values can be missing entirely: ``` (Anna|Bob|Charlie){,,(,)} ``` And if we only wanted to specify the separator: ``` (Anna|Bob|Charlie){(,)} ``` This would allow infinite repetition, equivalent to using the `*` or `{,}` quantifiers. | Text | Should match | Matches | | --- | --- | --- | | `""Anna,Bob,Charlie""` | yes | yes | | `""AnnaBob,Charlie""` | no | no | We could then easily enhance it to, for example, allow spaces after each comma: ``` (Anna|Bob|Charlie){(, *)} ``` This is much shorter and more readable than any existing alternatives, and produces a match result with all the correct values in the same matching group. The flow would look like this: ![regex separator flow](https://cloud.githubusercontent.com/assets/785247/13548375/98ba6ba2-e2f7-11e5-8396-38e6d0a68265.png) # Other examples These examples have been kept short for readability reasons and could need fine-tuning to work in all cases. | Description | Regex | | --- | --- | | Phone number lists | `(\(?\d{3}\)?-? *\d{3}-? *-?\d{4}){(, *)}` | | Versions names (""3.7.15"") | `(\d){(\.)}` | | Html class attribute | `class=""\s*(?\S+){(\s+)}\s*""` | | Html class attribute (alternative) | `class=""(\s*){(?\S+)}""` | | Mathematical calculations (""7.5 \* 2 + 10"") | `(\d+(\.\d)?([Ee]\d)?){( *[+-*/] *)}` | | Name parts (""Johann Wolfgang von Goethe"") | `^(?\S+){( )}$` | | Natural language (notice the nested repetitions) | `winners are (?(?\S+){1,,( )}){( then )}` | | Time matching (""03:15"", ""23:59:59"") | `(\d\d):(\d\d){1,2,(:)}` | | Javascript object notation | `[{] *(?[a-zA-Z_]\w*) *: *(?""[^""]*""|\d+(\.\d*)?([Ee]\d*)?|...other.types..){( *, *)} *[}]` | # Special Case In certain use cases a final optional separator match is also desirable. For example, in C# the collection initializer syntax allows for an optional final `,`: ``` C# var names = new List { ""Anna Alyson"", ""Bob Borton"", ""Charlie Cob"", }; ``` For this we could further enhance the syntax so that if the separator-group has a `+` after it, it can have an optional final match (the separator-group would not allowed to have any other quantifiers, however sub-groups can). The regex would look like this: ``` [{]\s*(?""[^""]*""){(\s*,\s*)+}\s*[}] ``` The new flow would then look like this: ![regex separator flow 2](https://cloud.githubusercontent.com/assets/785247/13548546/8badb2b2-e2fb-11e5-9d74-3860cc64ec2a.png) " +6689 area-System.Reflection Type conflict with BindingFlags "Type/namespace conflict with BindingFlags and `System.Reflection.TypeExtensions` renders code unable to compile. Same issue discussed here: https://github.com/dotnet/corefx/pull/6636#issuecomment-192417128 ## Steps to reproduce **program.cs:** ``` using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { var bf = System.Reflection.BindingFlags.CreateInstance; } } } ``` **project.json:** ``` { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""System.Reflection.TypeExtensions"": ""4.1.0-rc3-23904"" }, ""frameworks"": { ""netstandardapp1.5"": { ""dependencies"": { ""NETStandard.Library"": ""1.0.0-rc3-23904"" }, ""imports"": [ ""dnxcore50"", ""portable-net451+win8"" ] } } } ``` **Nuget.config:** ``` ``` Full code to reproduce is also available here: https://github.com/joshcomley/BugSamples/tree/master/DotNetCore/BindingFlagsBug ## Expected behavior It should compile ## Actual behavior `error CS0433: The type 'BindingFlags' exists in both 'System.Reflection.TypeExtensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Reflection, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'` ## Environment data `dotnet --version` output: .NET Command Line Tools (1.0.0-beta-001494) Product Information: Version: 1.0.0-beta-001494 Commit Sha: c7a9d1d63a Runtime Environment: OS Name: Windows OS Version: 10.0.10586 OS Platform: Windows Runtime Id: win10-x64 " +6691 area-Infrastructure Outer loop Unix runs failing with package restore errors "e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_osx_debug/25/consoleFull ``` 20:25:17 [20:29:24.72] Restoring all packages... 20:25:31 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23901 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:31 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:33 EXEC : error : System.Security.AccessControl 4.0.0-rc3-23901 provides a compile-time reference assembly for System.Security.AccessControl on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:33 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:35 EXEC : error : Microsoft.Win32.Registry 4.0.0-rc3-23901 provides a compile-time reference assembly for Microsoft.Win32.Registry on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:35 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:35 EXEC : error : System.Security.Cryptography.Csp 4.0.0-rc3-23901 provides a compile-time reference assembly for System.Security.Cryptography.Csp on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:35 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:49 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23901 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:49 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:58 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23901 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:58 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:58 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23901 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:58 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:59 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23901 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:25:59 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:00 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23901 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:00 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:00 EXEC : error : System.Security.AccessControl 4.0.0-rc3-23901 provides a compile-time reference assembly for System.Security.AccessControl on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:00 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:04 EXEC : error : Microsoft.Win32.Registry 4.0.0-rc3-23901 provides a compile-time reference assembly for Microsoft.Win32.Registry on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:04 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:13 EXEC : error : Microsoft.Win32.Registry 4.0.0-rc3-23901 provides a compile-time reference assembly for Microsoft.Win32.Registry on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:13 EXEC : error : System.Security.AccessControl 4.0.0-rc3-23901 provides a compile-time reference assembly for System.Security.AccessControl on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:13 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:13 EXEC : error : Microsoft.Win32.Registry 4.0.0-rc3-23901 provides a compile-time reference assembly for Microsoft.Win32.Registry on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:13 EXEC : error : System.Security.AccessControl 4.0.0-rc3-23901 provides a compile-time reference assembly for System.Security.AccessControl on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:13 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:14 EXEC : error : Microsoft.Win32.Registry 4.0.0-rc3-23901 provides a compile-time reference assembly for Microsoft.Win32.Registry on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:14 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:15 EXEC : error : System.Runtime 4.0.0 provides a compile-time reference assembly for System.Runtime on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:15 EXEC : error : System.Reflection 4.0.0 provides a compile-time reference assembly for System.Reflection on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:15 EXEC : error : System.IO 4.0.0 provides a compile-time reference assembly for System.IO on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:15 EXEC : error : System.Text.Encoding 4.0.0 provides a compile-time reference assembly for System.Text.Encoding on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:15 EXEC : error : System.Threading.Tasks 4.0.0 provides a compile-time reference assembly for System.Threading.Tasks on DNXCore,Version=v5.0, but there is no run-time assembly compatible with osx.10.11-x64. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:15 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (osx.10.11-x64). [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:26:26 /Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj(54,5): error MSB3073: The command """"/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/Tools/dotnetcli/bin/dotnet"" restore --packages ""/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ ""/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/src"" ""/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/pkg"""" exited with code -1. ``` " +6693 area-System.Xml XDocument writer DateTime serialization difference between full framework and CoreCLR "Repro ``` using System; using System.Xml.Linq; public class Program { public static void Main() { var doc = new XDocument(); using (var w = doc.CreateWriter()) { w.WriteStartElement(""Root""); w.WriteValue(new DateTime(2002, 4, 3, 0, 0, 0)); w.WriteEndElement(); } Console.WriteLine(doc.ToString()); } } ``` Output on .NET 4.6.1: ``` 2002-04-03T00:00:00 ``` Output on .NET Core: ``` 2002-04-03T00:00:00-05:00 ``` Note the difference regarding the inclusion of the timezone offset. " +6695 area-System.Runtime Adding an Array.Fill method ## Background At the moment, there's no built-in way to fill an array with a particular value in .NET. You'd have to hand-roll your own extension method, like this: ``` csharp public static void Fill(this T[] array, T value) { for (int i = 0; i < array.Length; i++) array[i] = value; } ``` While this may be the most obvious way, it is not necessarily the most efficient. For example, we could specialize to `memset` if the array was a byte array, or use an algorithm where we fill the beginning of the array and [double the number of elements copied each time](http://stackoverflow.com/a/13806014/4077294). To increase the efficiency of code doing this and prevent people from reinventing the wheel, I propose we add a static `Fill` method to the `Array` class that does this. ## Proposed API ``` csharp public class Array { public static void Fill(T[] array, T value); public static void Fill(T[] array, int offset, int count, T value); } ``` +6698 area-System.Net Short-circuit for strings in WebUtility.UrlEncode This is a follow-up on #6543 for `UrlEncode`. It has separate implementations for making passes over the strings/byte arrays, so (I haven't tested this yet) there should be no performance loss. cc @stephentoub +6700 area-System.Net Add performance tests for WebUtility You asked for perf tests in #6698, so here they are. cc @davidsh **note:** I'm having trouble compiling the tests locally because of some error with `SafeProcessHandle` (probably unrelated), so I'll fix any errors if they pop up in CI. +6701 area-System.Reflection Propose, API change: DispatchProxy instantiation The current API for instancing the DispatchProxy is counter intuitive name- and usage-wise. Especially when injecting dependencies into the proxy. ``` cs public static T Create() where TProxy : DispatchProxy ``` Currently `Create` will return the proxied instance of T, which then oddly needs to be cast to the TProxy type in order to inject any dependencies into the proxy instance itself: ``` cs ISomeServiceInterface proxiedInstance = DispatchProxy.Create(); var actualProxy = proxiedInstance as MyProxy; actualProxy.MyDependency = dependency; ``` Instead consider returning the proxy instance itself, and add a property in order to retrieve the proxied instance to allow following usage: ``` cs MyProxy proxy = DispatchProxy.Create(); proxy.MyDependency = dependency; IServiceInterface proxiedInstance = actualProxy.ProxiedInstance; ``` +6702 area-Infrastructure Errors during cross-building NetBSD assemblies Crossbuilding on Ubuntu: ftp://ftp.netbsd.org/pub/NetBSD/misc/kamil/corefx-crossbuild-netbsd-assemblies-1.txt Summary: ``` 24 Warning(s) 66 Error(s) ``` ``` System/Diagnostics/ProcessManager.Unix.cs(40,20): error CS0103: The name 'CreateProcessInfo' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ProcessThread.cs(92,38): error CS0103: The name 'PriorityLevelCore' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ProcessThread.cs(98,17): error CS0103: The name 'PriorityLevelCore' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ProcessManager.Unix.cs(49,20): error CS7036: There is no argument given that corresponds to the required formal parameter 'machineName' of 'ProcessManager.GetProcessIds(string)' [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(293,63): error CS0117: 'ProcessManager' does not contain a definition for 'GetModuleInfos' [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(452,42): error CS0103: The name 'ProcessorAffinityCore' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(459,17): error CS0103: The name 'ProcessorAffinityCore' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(856,17): error CS0103: The name 'GetWorkingSetLimits' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(867,13): error CS0103: The name 'SetWorkingSetLimitsCore' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(908,20): error CS1501: No overload for method 'GetProcessesByName' takes 2 arguments [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.cs(932,57): error CS0117: 'ProcessManager' does not contain a definition for 'GetProcessInfos' [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/Process.Unix.cs(337,27): error CS0103: The name 'GetExePath' does not exist in the current context [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(16,24): error CS0649: Field 'ThreadInfo._threadId' is never assigned to, and will always have its default value 0 [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(22,35): error CS0649: Field 'ThreadInfo._threadWaitReason' is never assigned to, and will always have its default value [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(18,22): error CS0649: Field 'ThreadInfo._basePriority' is never assigned to, and will always have its default value 0 [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(21,30): error CS0649: Field 'ThreadInfo._threadState' is never assigned to, and will always have its default value [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(20,25): error CS0649: Field 'ThreadInfo._startAddress' is never assigned to, and will always have its default value [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(17,22): error CS0649: Field 'ThreadInfo._processId' is never assigned to, and will always have its default value 0 [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/Diagnostics/ThreadInfo.cs(19,22): error CS0649: Field 'ThreadInfo._currentPriority' is never assigned to, and will always have its default value 0 [/home/kamil/corefx/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj] System/IO/FileSystemWatcher.cs(158,21): error CS0103: The name 'StopRaisingEvents' does not exist in the current context [/home/kamil/corefx/src/System.IO.FileSystem.Watcher/src/System.IO.FileSystem.Watcher.csproj] System/IO/FileSystemWatcher.cs(370,21): error CS0103: The name 'StopRaisingEvents' does not exist in the current context [/home/kamil/corefx/src/System.IO.FileSystem.Watcher/src/System.IO.FileSystem.Watcher.csproj] System/IO/FileSystemWatcher.cs(381,21): error CS0103: The name 'FinalizeDispose' does not exist in the current context [/home/kamil/corefx/src/System.IO.FileSystem.Watcher/src/System.IO.FileSystem.Watcher.csproj] System/IO/FileSystemWatcher.cs(533,17): error CS0103: The name 'StopRaisingEvents' does not exist in the current context [/home/kamil/corefx/src/System.IO.FileSystem.Watcher/src/System.IO.FileSystem.Watcher.csproj] System/IO/FileSystemWatcher.cs(543,13): error CS0103: The name 'StartRaisingEvents' does not exist in the current context [/home/kamil/corefx/src/System.IO.FileSystem.Watcher/src/System.IO.FileSystem.Watcher.csproj] System/Net/NetworkInformation/IPGlobalProperties.cs(17,20): error CS0103: The name 'IPGlobalPropertiesPal' does not exist in the current context [/home/kamil/corefx/src/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj] System/Net/NetworkInformation/NetworkInterface.cs(15,20): error CS0103: The name 'NetworkInterfacePal' does not exist in the current context [/home/kamil/corefx/src/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj] System/Net/NetworkInformation/NetworkInterface.cs(20,20): error CS0103: The name 'NetworkInterfacePal' does not exist in the current context [/home/kamil/corefx/src/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj] System/Net/NetworkInformation/NetworkInterface.cs(27,24): error CS0103: The name 'NetworkInterfacePal' does not exist in the current context [/home/kamil/corefx/src/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj] System/Net/NetworkInformation/NetworkInterface.cs(35,24): error CS0103: The name 'NetworkInterfacePal' does not exist in the current context [/home/kamil/corefx/src/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj ``` +6705 area-System.Net PostAsync coreclr send different request compare to PostAsync clr "When I send a PostAsync request in clr using (`GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll`) the request is accepted. But sending the same request in coreclr using (`System.Net.Http\4.0.1-beta-23516\ref\dotnet5.2\System.Net.Http.dll`) the request is not accepted Code used ``` var x = new HttpClient(); x.BaseAddress = new Uri(""https://leerlingen.trinitascollege.nl""); var content = new FormUrlEncodedContent(new[] { new KeyValuePair(""wu_loginname"",""name""), new KeyValuePair(""wu_password"",""password""), new KeyValuePair(""path"",""/"") }); var result = await x.PostAsync(""/login?passAction=login"", content); ``` Fiddler raw request coreclr request ``` POST https://leerlingen.trinitascollege.nl/login?passAction=login HTTP/1.1 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Host: leerlingen.trinitascollege.nl Content-Length: 49 Accept-Encoding: gzip, deflate wu_loginname=name&wu_password=password&path=%2F ``` coreclr response ``` HTTP/1.1 302 Moved Temporarily Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=B25FE445133AF103021C6B9FD731FEC2; Path=/; Secure; HttpOnly Cache-control: no-cache Expires: Thu, 01 Dec 1994 16:00:00 GMT Pragma: no-cache Connection: close location: / Content-Type: text/html;charset=UTF-8 Content-Language: nl-NL Content-Length: 117 Date: Sun, 06 Mar 2016 16:02:23 GMT Document Moved

Object Moved

here ``` clr request ``` POST https://leerlingen.trinitascollege.nl/login?passAction=login HTTP/1.1 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Host: leerlingen.trinitascollege.nl Content-Length: 49 Expect: 100-continue wu_loginname=name&wu_password=password&path=%2F ``` clr response ``` HTTP/1.1 302 Moved Temporarily Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=6CFCD4313BB8B24B1BC65F246C4346F1; Path=/; Secure; HttpOnly Cache-control: no-cache Expires: Thu, 01 Dec 1994 16:00:00 GMT Pragma: no-cache Connection: close location: / Content-Type: text/html;charset=UTF-8 Content-Language: nl-NL Content-Length: 117 Date: Sun, 06 Mar 2016 16:05:55 GMT Document Moved

Object Moved

here ``` " +6706 area-Meta Create Silverlight 5 targeting pack Please publish a targeting pack for building Silverlight 5 projects with CLI. Essentially something like this: https://gist.github.com/onovotny/93ecd8021c0f0cf7b4f4 There may be limitations for item types that require custom tasks/targets, but this handles the bulk of non-GUI libs useful in an xproj. The scenario is porting/maintaining projects that need to cross-compile to existing full frameworks. +6707 area-Meta Create Xamarin targeting packs "Similar to #6706, it would be extremely useful to have the Xamarin reference assemblies packaged into targeting packs for cross-compiling in xproj/CLI. There may be limitations in that certain item types that need custom tasks may not work, but this still opens up significant functionality in ""regular"" class libraries that are x-plat. I understand that this will likely need to wait until the acquisition closes and some dust settling, but wanted to file an issue to track it. " +6708 area-System.Net CookieContainer: Make internal PathList a struct Avoid the unnecessary wrapper object and lock object allocations. Test line & branch coverage of the changes is 100%. cc: @davidsh @stephentoub +6709 area-System.Data Should DataTable be sealed in the contract and implementation? `DataTable` is currently an empty class in .NET Core, included only to complete the `IDataReader` interface. As such, the constructor is `internal` ([ref](https://github.com/dotnet/corefx/blob/e2f0f429788f611b3d7ac35f0154c975011fd191/src/System.Data.Common/ref/System.Data.Common.cs#L52-L55), [src](https://github.com/dotnet/corefx/blob/e2f0f429788f611b3d7ac35f0154c975011fd191/src/System.Data.Common/src/System/Data/DataTable.cs)), preventing external callers from subclassing or creating an instance. Any reason why it shouldn't also be `sealed` in both the contract and implementation? cc: @saurabh500 +6710 area-System.Runtime Proposal: Adding a Buffer.MemoryFill method equivalent to memset Separated out from #6695 since I made a false assumption that `initblk` could be used to fill non-byte arrays with a particular value; apparently not. ## Rationale There's no fast, convenient way at the moment to fill a byte array with a particular value; the fastest method on [StackOverflow](http://stackoverflow.com/a/13806014/4077294) currently involves filling the first few bytes with a for-loop, and then iteratively copying those over to the next few bytes via calls to `BlockCopy`. It would be nice if we could just provide a `MemoryFill` method that was equivalent to memset/the initblk opcode. ## Proposed API ``` csharp public static class Buffer { public unsafe static void MemoryFill(void* pointer, byte value, long count); public unsafe static void MemoryFill(void* pointer, byte value, ulong count); } ``` (revision: Changed the wording from `MemorySet` to `MemoryFill` since that sounds less awkward) +6718 area-System.Security Remove X509Certificates workaround after updating packages After we update to package version 23908 or later we need to remove the project reference workaround I added to address lack of support for netstandard1.3. See https://github.com/dotnet/corefx/pull/6717 & https://github.com/dotnet/corefx/pull/6713. I added a workaround to System.Net.Http.WinHttpHandler, System.Net.Security, and System.Net.WebSockets.Client. All of these assemblies were targeting NETStandard1.3 and using X509Certificates. I had to replace the package reference with a project reference to the reference assembly temporarily because the assembly was missing from the package. I temporarily added dependencies on other crypto contracts (required to make package validation see a full closure). Once we update packages, replace these with a single reference to the X509Certificates package and remove the project reference from the csprojs. +6720 area-System.IO Add better failure messages when trying to create a named pipe on non-Windows "Trying to create a cross-machine named pipe or a named pipe with a name that includes characters that aren't valid as a filename throws a `PlatformNotSupportedException`. Currently the default constructor for the exception is used, so there's no information about what specifically wasn't supported. The exception message should describe what wasn't supported (ie ""Cross-machine pipes are not supported on this operating system"" or ""The specified pipe name contained characters which are not supported in pipe names on this operating system""). Otherwise when people hit this issue they may conclude that named pipes aren't supported at all on non-Windows operating systems. Relevant code: https://github.com/dotnet/corefx/blob/61ff821f213cf323bd52aad3623f9204901311e7/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.Unix.cs#L24-L42 cc @stephentoub " +6721 area-System.Net System.Net.Http.HttpResponseMessage.ReasonPhrase can return null on core There was a recent regression with WinHttpHandler where HttpResponseMessage.ReasonPhrase now returns `null` rather than `string.Empty` if no reason phrase was specified in the response message. This diverges from the HttpClientHandler/HttpWebRequest behavior in the full framework that always return `string.Emtpy`. @davidsh +6725 area-System.Net Break dependency on older collections in System.Net.Security ReadOnlyCollectionBase https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ServiceNameCollection.cs#L12 In the contract it is only ICollection and IEnumerable so we should try to make the implementation more closely match. ArrayList https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ServiceNameCollection.cs#L30 Hashtable https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/src/System/Net/SslSessionsCache.cs#L15 cc @davidsh @CIPop @justinvp you broke some similar dependencies in other networking APIs are you interested in tackling this one? +6726 area-System.Net Break dependency on older collections in System.Net.WebHeaderCollection System.Net.WebHeaderCollection pulls in System.Collections.Specialized which pulls in System.Collections.NonGeneric which we are trying to break dependencies on. We should see if we can break the below dependency in a reasonable way. NameValueCollection https://github.com/dotnet/corefx/blob/master/src/System.Net.WebHeaderCollection/src/System/Net/WebHeaderCollection.cs#L33 cc @davidsh @CIPop +6727 area-System.Net HttpResponseMessage.ReasonPhrase should not be null Recent changes due to PR #3199 caused the `HttpResponseMessage.ReasonPhrase` property to be a null string if the HTTP server response only contained a statuscode but no description on the status line. The existing .NET Framwork behavior is to have empty string as the property value in that case. Added a new test to validate this change. Fixes #6721. +6728 area-System.Net HttpClientHandler does not store HttpOnly cookies by default In testing for ASP.NET, we found a curious behavior in System.Net.HttpClientHandler. This handler is not storing HttpOnly cookies in the cookie collection it creates. Should it store HttpOnly cookies by default as well? It appears this issue has a history. The comment in code (see [HttpClientHandler.cs 462-473)](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpClientHandler.cs#L462-L473) explains the history of this quirk. Before you could turn off lower-level cookie handling in WinRT (before [HttpBaseProtocolFilter.CookieUsageBehavior](https://msdn.microsoft.com/en-us/library/windows/apps/windows.web.http.filters.httpbaseprotocolfilter.cookieusagebehavior.aspx)), storing httponly cookies could cause issues. But this clearly does not apply to all platforms (e.g. Linux). To play with the issue, see this example app: https://gist.github.com/natemcmaster/e51aa33cf77416772afc This creates a simple server that response with 2 cookies, on HttpOnly and the other not. HttpClientHandler only stores the HttpOnly=false cookie. +6729 area-System.Net Http/WebSocket stacks: Support further limiting of SSL protocols As noted in https://github.com/dotnet/corefx/issues/6668 & https://github.com/NuGet/Home/issues/390 The framwork is currently limiting SSL protocols, but customers might choose to be more restrictive, there is currently no way to specify it in code, and perhaps alternatively in an external configuration (local or machine level). +6732 area-System.IO ChangedTests.FileSystemWatcher_Changed_PreSeededNestedStructure(includeSubdirectories: False) fails on windows The ChangedTests.FileSystemWatcher_Changed_PreSeededNestedStructure(includeSubdirectories: False) test failed on Windows with System.UnauthorizedAccessException. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_release_prtest/3194/testReport/junit/(root)/ChangedTests/FileSystemWatcher_Changed_PreSeededNestedStructure_includeSubdirectories__False_/ +6734 area-System.Data System.Data.SqlClient reference assembly surface area doesn't match impl "When compiling our tests against the System.Data.SqlClient reference assembly, instead of the Windows implementation assembly, there are compilation issues... ``` ""E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj"" (BuildAndTest target) (78) -> (CoreCompile target) -> SqlBulkCopyColumnMappingCollectionTest.cs(78,62): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(79,62): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(102,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(105,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(232,56): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(325,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(326,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(327,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(372,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(373,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(374,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(390,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(391,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(392,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(400,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(401,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(405,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(406,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(407,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(450,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(487,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(488,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] SqlBulkCopyColumnMappingCollectionTest.cs(492,32): error CS0021: Cannot apply indexing with [] to an expression of type 'SqlBulkCopyColumnMappingCollection' [E:\gh\chcosta\corefx\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] ``` You can repro this by compiling System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj and exchanging the reference to System.Data.SqlClient.dll, with a reference to the reference assembly. This blocks our ability to compile our tests against current packages. /cc @ericstj @karajas " +6735 area-System.Net Return correct SslStream.KeyExchangeValue when algorithm is ECDH "We needed to add another constant for the ECDH key exchange algorithm, to match the behavior on Windows. Also, the string comparisons used when parsing out the results for `CryptoNative_GetSslConnectionInfo` were not doing the right thing; they needed to compare the _lengths_ of the strings as well, to avoid, for example, ""ECDH"" matching ""ECDH/RSA"". Fixes #5251. @bartonjs, @eerhardt please have a look. " +6737 area-System.Net HttpClient is not sending cookies to server in some scenarios **Repro code solution:** https://github.com/kichalla/httpclientnotsendingcookie **Steps to run the repro code** - `dotnet restore` and `dotnet build` the `WebApplication1` app. This is a simple ASP.NET Core web app which has couple of middleware. - Now do `dotnet run` the web app and it should listen at the default address `http://localhost:5000` - Now for the client `dotnet restore`, `dotnet run` the project `coreclrhttpclient`. **Expected:** Postdata action received the following cookies: .AspNetCore.Session : RAExEmXpoCbueP_QYM, .AspNetCore.Antiforgery.Xam7_OeLcN4 : CfDJ8NGNxAt7CbdClq3UJ8_6w_4661wRQZT1aDtUOIUKshbcV4P0NdS8klCL5qGSN-PNBBV7w23G6MYpQ81t0PMmzIN4O04fqhZ0u1YPv66mixtkX3iTi291DgwT3o5kozfQhe08-RAExEmXpoCbueP_QYM **Actual:** Postdata action received the following cookies: .AspNetCore.Session : RAExEmXpoCbueP_QYM @natemcmaster @Tratcher @muratg +6740 area-System.IO API Proposal: Adding ArraySegment-based methods to the System.IO namespace ## Background To avoid unnecessary allocations, lots of code that works with Streams and I/O passes around a 'portion' of an array containing the relevant data instead of copying it to a new one. Since .NET does not yet support multiple return values, this is commonly represented as an `ArraySegment`, where T is the type of the element contained in the array. Unfortunately, the System.IO namespace does not have overly sophisticated support for `ArraySegments` (aside from the recently-added `TryGetBuffer` for `MemoryStream`), forcing people who use them to 'unravel' them like this: ``` csharp stream.Write(segment.Array, segment.Offset, segment.Count); ``` I propose adding convenience methods to the existing System.IO APIs that will make this less verbose, and prevent accidents like e.g. the programmer mixing up `Offset` and `Count`. ## Proposed API ``` csharp namespace System.IO { public class BinaryReader : IDisposable { public int Read(ArraySegment buffer); public int Read(ArraySegment buffer); } public class BinaryWriter : IDisposable { public void Write(ArraySegment buffer); public void Write(ArraySegment buffer); } public class MemoryStream : Stream { public MemoryStream(ArraySegment buffer); public MemoryStream(ArraySegment buffer, bool writable); public MemoryStream(ArraySegment buffer, bool writable, bool publiclyVisible); } public class Stream : IDisposable { public int Read(ArraySegment buffer); public Task ReadAsync(ArraySegment buffer); public Task ReadAsync(ArraySegment buffer, CancellationToken cancellationToken); public void Write(ArraySegment buffer); public Task WriteAsync(ArraySegment buffer); public Task WriteAsync(ArraySegment buffer, CancellationToken cancellationToken); } public abstract class TextReader : IDisposable { public int Read(ArraySegment buffer); public int ReadBlock(ArraySegment buffer); public Task ReadBlockAsync(ArraySegment buffer); } public abstract class TextWriter : IDisposable { public void Write(ArraySegment buffer); public Task WriteAsync(ArraySegment buffer); public void WriteLine(ArraySegment buffer); public Task WriteLineAsync(ArraySegment buffer); } } ``` +6742 area-Infrastructure Arch Linux: Build.sh Managed Is Broken With Wrong Paths "``` $ ./build.sh x64 release Unsupported Linux distribution 'arch' detected. Configuring as if for Ubuntu. Setting up directories for build Restoring NuGet.exe... Unsupported Linux distribution 'arch' detected. Downloading ubuntu-x64 tools. Installing dotnet cli... Restoring BuildTools version 1.0.25-prerelease-00190... Failed to initialize CoreCLR, HRESULT: 0x80131500 ERROR: Could not restore build tools correctly. See '/init-tools.log' for more details. Initializing BuildTools... /init-tools.sh: line 83: /packages/Microsoft.DotNet.BuildTools/1.0.25-prerelease-00190/lib/init-tools.sh: No such file or directory Done initializing tools. ./build.sh: line 108: /Tools/corerun: No such file or directory tail: cannot open '/msbuild.log' for reading: No such file or directory Build Exit Code = 127 ``` ""dotnet-ubuntu-x64.1.0.0.001504.tar.gz"" does not contain ANY .sh Files are extracted to ""./Tools/dotnetcli/bin/"", so corerun will not be found in ./Tools. " +6746 area-System.Security ProtectedData usage How can I use ProtectedData from https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.ProtectedData/ref/System.Security.Cryptography.ProtectedData.cs? I see no nuget package available or is it? Thank You +6750 area-System.Net Two error handling changes to SslStream "Commit (1). Pass Exception through SecurityStatusPal in SslStream. There isn't a good mapping between OpenSSL errors and most of the errors in SecurityStatusPal. As a result, with the current set up, important information about errors that occurred is getting lost and translated into meaningless information by the time it makes it out to the developer, making it difficult to diagnose the cause of a failure. This commit allows the original exception behind a failure to be passed through the PAL layer, such that when an exception is eventually thrown, the Unix implementation can choose to use the original exception rather than translating the error code. For example, instead of: ``` System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- Interop+OpenSsl+SslException : Operation failed with error - 12. ``` (where ""12"" is the number that ends up getting used for all failures, as the numerical value of SecurityStatusPal.InternalError), we now get: ``` System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- Interop+OpenSsl+SslException : SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. -------- Interop+Crypto+OpenSslCryptographicException : error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available ``` Commit (2). Use ExceptionDispatchInfo in SslStream. Currently in SslStream, exceptions get captured and then later thrown with ""throw exception;"". This causes their stack traces to get overwritten, losing information about where the exception actually came from. This commit changes these locations to use ExceptionDispatchInfo instead, enabling the stacks and Watson bucket information to be preserved. For example, instead of: ``` System.IO.IOException: Authentication failed because the remote party has closed the transport stream. at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 752 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 722 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslStream.cs:line 125 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Xunit.Assert.d__61.MoveNext() ``` we now get: ``` System.IO.IOException: Authentication failed because the remote party has closed the transport stream. at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 882 at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 1110 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 752 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 722 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) in corefx\src\System.Net.Security\src\System\Net\SecureProtocols\SslStream.cs:line 125 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Xunit.Assert.d__61.MoveNext() ``` Contributes to https://github.com/dotnet/corefx/issues/5606 and https://github.com/dotnet/corefx/issues/5890. For both this doesn't completely fix the issue: I've stayed away from touching NegotiateStream to avoid conflicts with the incoming PR from the NegotiateStream work on Unix. Commit (3). Fixes some warnings during the build for the System.Net.Security.Tests project when building for Unix. cc: @davidsh, @cipop, @ericeil, @bartonjs, @vijaykota, @kapilash " +6751 area-System.Data Will EF7 support UWP with SQL server when released? I originally posted this question to the entity framework github repo and they said it should work, but was dependent on the SqlClient (the ADO.NET provider for SQL Server). Can you tell me if there are plans to have SqlClient compatible with UWP? If so what is the estimated timeline. @YoungGah @saurabh500 Original question with EF team's answers https://github.com/aspnet/EntityFramework/issues/4692 Thanks, Jason +6752 area-System.Collections ImmutableArray should come with a Count property "When refactoring code it is not uncommon that you need to change types, e.g. ImmutableArray to IReadOnlyList due to its covariance. While it is common that certain members are not available in a supertype it certainly feels very strange that a property just get's renamed without any semantic change. You argued: ""We’ve decided to go with having a Length property instead of Count because we see ImmutableArray as a replacement for regular arrays. This makes it easier to port existing code. It also makes the design a bit more self-contained."" But since most other collections besides the array come with a Count property, the chances are very hight that with using the Length property you keep on switching between those properties on every larger refactoring. It would be nice if you could just add the Count property if possible. By that users that more likely switch between covariant access and direct access to the immutable array (instead of switching between mutable and immutable) can just stick with a property that doesn't break code. " +6753 area-Infrastructure Enable Ready2Run version of Microsoft.NETCore.App packages Packages comprising NEtCore.App meta package must have their assemblies compiled as R2R images prior to packaging. CC @davidfowl @weshaggard @piotrpMSFT @JohnChen0 @jkotas +6755 area-System.Diagnostics TraceListenerCollection is not thread-safe "Both CoreFx and the desktop implementations claim that TraceListenerCollection is thread-safe. But two threads executing **System.Diagnostics.Trace.Listeners.Remove(""Default"")** at the same time can run into each other. The problem is that several operations (like Remove(string)) are built on top of enumerating the collection, and enumerating the collection will neither lock it nor make a copy of it. It's possible to squint and say ""but it is thread-safe in that its internal state can't be corrupted via multiple simultaneous mutation"", but I don't think that's consistent with the way that most people think of thread-safety. If nothing else, the documentation should be updated. " +6757 area-System.Net "Re-enable System.Net.Security ""no encryption"" tests on Linux" We'd disabled these tests on Linux because they were failing on OpenSUSE. The reason turned out to be that the OpenSSL installed on OpenSUSE was built explicitly without null cipher support. This commit re-enables the tests, but as ConditionalFacts that check whether we're either on Windows or on a Unix with an OpenSSL that sports null ciphers. cc: @ericeil, @bartonjs, @davidsh, @CIPop, @vijaykota Fixes #5557 +6759 area-Infrastructure Remove OpenSourceSign from Microsoft.DotNet.Build.Tasks Csc now supports OSS signing via /publicsign switch. The build task is not needed anymore and can be removed and CoreFX build simplified. +6760 area-Infrastructure Fork project.jsons for windows-only dependencies @Priya91 pointed out some restore errors to me on Ubuntu that seem to be because of auto-RID: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_debug/23/consoleText ``` EXEC : error : Microsoft.Win32.Registry 4.0.0-rc3-23908 provides a compile-time reference assembly for Microsoft.Win32.Registry on DNXCore,Version=v5.0, but there is no run-time assembly compatible with ubuntu.14.04-x64. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (ubuntu.14.04-x64). [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] EXEC : error : System.Security.AccessControl 4.0.0-rc3-23908 provides a compile-time reference assembly for System.Security.AccessControl on DNXCore,Version=v5.0, but there is no run-time assembly compatible with ubuntu.14.04-x64. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (ubuntu.14.04-x64). [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23908 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with ubuntu.14.04-x64. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (ubuntu.14.04-x64). [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] ... ``` It looks like these stopped working after upgrading from `23829` because no `dnxcore50` implementation is provided anymore. It seems to me that the right temporary fix is to fork any `project.json` using these dependencies. I can do this if it sounds right. I'm not sure how to see which configurations a project uses a dependency in except by compiling it. The long-term fix is to take up a version of CLI/nuget that got rid of auto-RID. (We can get rid of our RID-specific forks then too.) @ericstj Thoughts? Should this be happening? /cc @weshaggard +6761 area-Serialization "[Port] XmlSerializer incorrectly serializing Fields with [XmlText(DataType = ""time"")]" "XmlSerializer incorrectly serializes DateTime fields/properties marked with [XmlText(DataType = ""time"")] if the DateTime value is of UTC kind. " +6764 area-System.Net HttpClient should not miss Set-Cookie response headers Recent changes due to PR #3199 caused `HttpClient` on Windows to miss `Set-Cookie` response headers when one of the header values was large enough to cause `WinHttpQueryHeaders` to fail with `ERROR_INSUFFICIENT_BUFFER`. This commit addresses the regression. Added a new test to validate this change. Fixes #6737. cc: @davidsh @stephentoub @kichalla, FYI. +6770 area-Meta Add support for running dotnet core on Banana linux There are some pull requests on supporting specific well known distributions in this repository. I created this issue to improve documentation (and perhaps tooling) for the general issue. Banana Unix is the term used by @jasonwilliams200OK in https://github.com/dotnet/cli/issues/1532 for some platform that doesn't support coreclr yet. This could be the next version of Debian or it may just as well be a custom built linux system for an embedded device. Some concrete questions: What are the minimal parts that need to be built for supporting a new platform? In what repos are they? And with which commands can they be built? Can these bits be built on an existing supported platform? Or does the build have to be done on the new platform? If the latter, is there any bootstrapping needed (e.g. get a first-stage core runtime to build the one for the new platform)? How is this done? \cc @jasonwilliams200OK @ellismg @stephentoub +6771 area-System.Net .NET Core Http Support So I wrote some test apps in C against LibUV and Libcurl api to get a feel of what’s powering Kestrel and HttpClient and while I can say that both libraries provide a very elegant and straightforward callback API I can’t help but raise the question: Why do we need these in .NET Core? Sure, LibUV makes perfect sense for NodeJS as a cross-platform abstraction layer for sockets, files, timers, thread pool, mutex.. but in .NET Core all these services are already inherently offered cross-platform by CoreFX. Simply put what does uv_accept / uv_read_start provide that the Socket.AcceptAsync/Socket.ReceiveAsync lack? As for Libcurl, again great library for Native developers but what’s in it for Managed developers? Furthermore, from what I see we are not using the high performance event driven curl_multi_socket_action interface with timeout callback and in any case why not just port the full .NET HttpWebRequest to use .NET Core cross-platform async socket interface and have a consistent implementation across both Windows / *Unix down to the socket level? There is also a potential problem if someone wants to use a third-party native library (PInvoke) that depends on some version specific build of one of these; I mean how can you load multiple versions of LibUV or Libcurl in the same .NET process and why does the FW need to take part of any potential conflict that might occur? Lastly, I think it's very important to include an equivalent of HttpListener for both Windows and *inux in CoreFX Because: 1. There are probably existing applications that use HttpListener interface that now can’t be ported to .NET Core and run on both Windows and *inux as is. 2. Experience shows that web application framework’s (including ASP.NET) are highly opinionated. Some people need/like the “Application model” some just want access to an Http interface. In my opinion it would be a mistake not include a low-level http server in CoreFX as part of the standard library as the case in Go and NodeJS. Kestrel is great but it’s an ASP.NET server subsystem not a .NET CoreFX library. +6772 area-System.Net Fix IAsyncResult.AsyncState cast to ExceptionDispatchInfo I had this change locally but neglected to include it as part of my SslStream errors fix-up PR yesterday. In one place we were storing an exception into an AsyncState typed as object, and then were pulling it out and checking whether it was an exception... when I changed the storing location to use ExceptionDispatchInfo (https://github.com/stephentoub/corefx/blob/fix_edi_asyncstate/src/System.Net.Security/src/System/Net/SecureProtocols/SslState.cs#L989), the cast on the way out also needed to change. cc: @ericeil, @bartonjs, @davidsh +6774 area-System.Globalization Creating an UmAlQuraCalendar fails on Linux ## Problem In PR #6733 the following error occured when constructing an UmAlQuaraCalendar on Linux. The Windows build and test did not fail or throw any exceptions. They passed as expected. > 15:52:30 ---- System.NullReferenceException : Object reference not set to an instance of an object. > 15:52:30 Stack Trace: > 15:52:30 at System.Globalization.UmAlQuraCalendar.get_MaxSupportedDateTime() > 15:52:30 at System.Globalization.Tests.CalendarHelpers.MaxCalendarYearInEra(Calendar calendar, Int32 era) > 15:52:30 at System.Globalization.Tests.CalendarHelpers.ToDateTime_Invalid(Calendar calendar) > 15:52:30 ----- Inner Stack Trace ----- > 15:52:30 at System.Globalization.UmAlQuraCalendar.InitDateMapping() > 15:52:30 at System.Globalization.UmAlQuraCalendar..cctor() > 15:52:30 System.Globalization.Tests.CalendarHelpers.GetMonth_Invalid [FAIL] > 15:52:30 System.TypeInitializationException : The type initializer for 'System.Globalization.UmAlQuraCalendar' threw an exception. > 15:52:30 ---- System.NullReferenceException : Object reference not set to an instance of an object. > 15:52:30 Stack Trace: > 15:52:30 at System.Globalization.UmAlQuraCalendar.get_MinSupportedDateTime() > 15:52:30 at System.Globalization.Tests.CalendarHelpers.d__10.MoveNext() > 15:52:30 at System.Linq.Enumerable.SelectEnumerableIterator2.MoveNext() 15:52:30 ----- Inner Stack Trace ----- 15:52:30 at System.Globalization.UmAlQuraCalendar.InitDateMapping() 15:52:30 at System.Globalization.UmAlQuraCalendar..cctor() 15:52:30 System.Globalization.Tests.CalendarHelpers.IsLeapMonth_Invalid [FAIL] 15:52:30 System.TypeInitializationException : The type initializer for 'System.Globalization.UmAlQuraCalendar' threw an exception. 15:52:30 ---- System.NullReferenceException : Object reference not set to an instance of an object. 15:52:30 Stack Trace: 15:52:30 at System.Globalization.UmAlQuraCalendar.get_MaxSupportedDateTime() 15:52:30 at System.Globalization.Tests.CalendarHelpers.MaxCalendarYearInEra(Calendar calendar, Int32 era) 15:52:30 at System.Globalization.Tests.CalendarHelpers.d__9.MoveNext() 15:52:30 at System.Linq.Enumerable.SelectEnumerableIterator2.MoveNext() > 15:52:30 ----- Inner Stack Trace ----- > 15:52:30 at System.Globalization.UmAlQuraCalendar.InitDateMapping() > 15:52:30 at System.Globalization.UmAlQuraCalendar..cctor() > 15:52:30 Finished: System.Globalization.Calendars.Tests ## Investigation It seems like this exception is thrown in [this](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Globalization/UmAlQuraCalendar.cs#L42) method (`InitDateMapping`) There is a comment in the code: ``` //Direct inline initialization of DateMapping array would produce a lot of code bloat. // We take advantage of C# compiler compiles inline initialization of primitive type array into very compact code. // So we start with raw data stored in primitive type array, and initialize the DateMapping out of it ``` Maybe this behaviour cannot be guaranteed on roslyn on Linux? /cc @stephentoub @tarekgh +6775 area-System.Globalization Improve negative tests in System.Globalization.Calendars ### Context I have done work in #6733 for consolidating common negative tests for Calendars exposed in corefx. The implementation is generic, and should support all calendars. ### Todo There are some issues to be investigated: - [x] JapenseLunisolarCalendar is not supported. This is because the implementation calculates that the `MaximumCalendarYearInEra(new JapaneseLunisolarCalendar(), 3)` is 1, not as 64 (IIRC) expected. This can be fixed by changing the code from `return calendar.GetYear(calendar.ToDateTime(1, 1, 1, 0, 0, 0, 0, era + 1).AddDays(-1)) + 1;` to `return calendar.GetYear(calendar.ToDateTime(1, 1, 1, 0, 0, 0, 0, era + 1).AddMonths(-1)) + 1;`, but this reduces the versatility of existing tests. - [ ] `GetDayOfWeek_Invalid` should not be tested for Lunar and lunarsolar calendars, as the method doesn't throw on these calendars. There is no way in corefx to check if a calendar is lunarsolar - [ ] `GetEra_Invalid` throws an exception for most calendars, but not HebrewCalendar, TaiwanLunisolarCalendar and JapaneseLunisolarCalendar. Maybe this is a similar cause from the previous point ### Further ideas Some further ideas that are nice but not so important - Test each year, and invalid months outside the max and min month in each year - Test each month, and invalid days outside the max and min day in each month /cc @tarekgh +6778 area-System.Runtime [corert] Define and implement Marshal.GetLastWin32Error for Linux systems System.Private.Uri is using Marshal.GetLastWin32Error, when compiling it as aot (corert netstandard13aot) for Linux it complain about Marshal.GetLastWin32Error is not implemented. Temporary we are providing empty stub to work around the issue but we need a permanent solution either get it implemented in Linux or kill the dependency on that API in Linux code +6781 area-System.Security System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestKey_RSA failed on CentOS http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_release_tst_prtest/2479/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 ``` 11:16:56 System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestKey_RSA [FAIL] 11:16:56 Assert.Equal() Failure 11:16:56 Expected: Byte[] [232, 175, 92, 162, 32, ...] 11:16:56 Actual: Byte[] [0, 0, 0, 0, 0, ...] 11:16:56 Stack Trace: 11:16:57 at System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestKey_RSA() ``` +6782 area-System.Security Unable to find an entry point named 'GetMaxMdSize' on Linux "I'm getting this error trying to use the AWS Dotnet SDKv3. This is on Ubuntu 14.04 with openssl 1.0.1f ``` sh $ openssl version OpenSSL 1.0.1f 6 Jan 2014 ``` ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (The type initializer for 'Crypto' threw an exception.) ---> System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.EntryPointNotFoundException: Unable to find an entry point named 'GetMaxMdSize' in DLL 'System.Security.Cryptography.Native'. at Interop.Crypto.GetMaxMdSize() at Interop.Crypto..cctor() --- End of inner exception stack trace --- at Interop.Crypto.EvpSha256() ``` ``` ""dependencies"": { ""NETStandard.Library"": ""1.0.0-rc2-23901"", ``` " +6783 area-System.IO System.IO.File.Close() missing; prevents writing idiomatic F# code "Although I realize that .NET Core is intentionally stripped down relative to the full .NET platform, this method is necessary for idiomatic (i.e. single-assignment) programming with F# on Windows. Without it, the only way to close a file is to delete the `File` object which requires coping with nulls, a thing F# tries very hard to avoid. Explicitly closing a file is often necessary on Windows due to its mandatory file locking semantics. For example, you cannot typically move or a file to another directory while a `File` object is open for writing on that file. Lacking a `Close()` method, single-assignment code such as this: ``` open System.IO let file = File.Create(""myfile"", ...) ... do stuff with file file.Close() ... do something with myfile on disk ``` must be rewritten to use a mutable `file` object: ``` open System.IO let mutable file = File.Create(""myfile"", ...) ... do stuff with file file <- null ... do something with myfile on disk ``` Although that looks like a simple fix, now all the F# code dealing with `file` has to check for `null` before using the value, a very un-F# style of coding. (Moved from [https://github.com/dotnet/cli/issues/1776]) " +6796 area-System.Net Different Behavior for Content-Encoding response header on HttpClient running on windows and Linux Hello, I'm experiencing different behavior on linux and windows for the response header Content-Encoding when AutomaticDecompression is enabled. On windows when the response has the header Content-Encoding:gzip the body is automatically decompressed and the header is stripped out. https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Windows.cs#L219 https://github.com/dotnet/corefx/blob/2ba2083ec3da237ad2beabc2a361a2d9b1e1777b/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs#L865 https://github.com/dotnet/corefx/blob/2ba2083ec3da237ad2beabc2a361a2d9b1e1777b/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpResponseParser.cs#L81 On Linux the response body is automatically decompressed but the Content-Encoding header is NOT stripped out. https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs#L162 +6798 area-Infrastructure "Clean-up: Is ""PortableNuGetMode"" required in dir.targets" https://github.com/dotnet/corefx/blob/master/dir.targets#L30 The question was raised in PR #6785, is PortableNuGetMode still required in dir.targets? Investigate whether this has been added to buildtools (perhaps add it), and clean up this code. +6799 area-System.Net Remove content headers in CurlHandler when automatically decompressed WinHttpHandler removes the Content-Length and Content-Encoding headers when the content was automatically decompressed. Do the same in CurlHandler. cc: @davidsh, @kapilash, @ericeil Fixes #6796 +6802 area-System.Data System.Data.SqlClient FileNotFoundException (1.0.0-rc1-update1) "I run into the following error on Windows Server 2012, when running dnx or within Visual Studio 2015 (having all latest updates): dnx -p . web `Hosting environment: Production Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down. info: Microsoft.AspNet.Hosting.Internal.HostingEngine[1] Request starting HTTP/1.1 GET http://localhost:5000/api/comm info: Microsoft.AspNet.Hosting.Internal.HostingEngine[3] Request finished in 0.0312ms 500 fail: Microsoft.AspNet.Server.Kestrel[13] An unhandled exception was thrown by the application. System.IO.FileNotFoundException: Could not load file or assembly 'System.Data.SqlClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. File name: 'System.Data.SqlClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' at WebAPI.Service.DbSscaService..ctor() at WebAPI.Controllers.CommController..ctor() in D:\Data\Projects\WebApplication5\src\WebApplication5\Controllers\CommController.cs:line 20 at lambda_method(Closure , IServiceProvider , Object[] ) at Microsoft.AspNet.Mvc.Infrastructure.DefaultTypeActivatorCache.CreateInstance[TInstance](IServiceProvider serviceProvider, Type implementationType) at Microsoft.AspNet.Mvc.Controllers.DefaultControllerActivator.Create(ActionContext actionContext, Type controllerType) at Microsoft.AspNet.Mvc.Controllers.DefaultControllerFactory.CreateController(ActionContext actionContext) at Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.CreateInstance() at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__52.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__51.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Routing.RouteCollection.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.IISPlatformHandler.IISPlatformHandlerMiddleware.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Hosting.Internal.HostingEngine.<>c__DisplayClass32_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Server.Kestrel.Http.Frame.d__79.MoveNext() ``` = Pre-bind state information = LOG: DisplayName = System.Data.SqlClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ``` (Fully-specified) LOG: Appbase = file:///C:/Users/ps2-v000997/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/ LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: This bind starts in default load context. LOG: No application configuration file found. LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Post-policy reference: System.Data.SqlClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a LOG: Fusion is hosted. Check host about this assembly. LOG: Try host assembly store with assembly system.data.sqlclient, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=x86. LOG: Try host assembly store with assembly system.data.sqlclient, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a, processorarchitecture=msil. LOG: Try host assembly store with assembly system.data.sqlclient, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a. WRN: Host assembly store does not contain this assembly. LOG: Attempting download of new URL file:///C:/Users/ps2-v000997/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/System.Data.SqlClient.DLL. LOG: Attempting download of new URL file:///C:/Users/ps2-v000997/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/System.Data.SqlClient/System.Data.SqlClient.DLL. LOG: Attempting download of new URL file:///C:/Users/ps2-v000997/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/System.Data.SqlClient.EXE. LOG: Attempting download of new URL file:///C:/Users/ps2-v000997/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/System.Data.SqlClient/System.Data.SqlClient.EXE.` project.json: `{ ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.AspNet.IISPlatformHandler"": ""1.0.0-rc1-final"", ""Microsoft.AspNet.Mvc"": ""6.0.0-rc1-final"", ""Microsoft.AspNet.Server.Kestrel"": ""1.0.0-rc1-final"", ""Microsoft.AspNet.StaticFiles"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Configuration.FileProviderExtensions"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Logging"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0-rc1-final"", ""System.Data.Common"": ""4.0.1-beta-23516"", ""System.Data.SqlClient"": ""4.0.0-beta-23516"" }, ""commands"": { ""web"": ""Microsoft.AspNet.Server.Kestrel"" }, ""frameworks"": { ""dnx451"": { } }, ""exclude"": [ ""wwwroot"", ""node_modules"" ], ""publishExclude"": [ ""**.user"", ""**.vspscc"" ] }` `Active Version Runtime Architecture OperatingSystem Alias 1.0.0-rc1-update1 clr x64 win - 1.0.0-rc1-update1 clr x86 win default 1.0.0-rc1-update1 coreclr x64 win 1.0.0-rc1-update1 coreclr x86 win ` Any fixes available? Any beta version eventually working? " +6803 area-System.Net Need more testing of multiple pending async Socket operations We don't have much coverage of scenarios involving multiple pending operations on a single Socket. For example, do operations maintain correct ordering? Do we deal correctly with a socket closing with multiple pending operations? Etc. +6804 area-System.Net Let the system allocate ports for the IPv6 sockets in ConnectExTest "This avoids an ""address in use"" error when running concurrently with other tests. Fixes #4628. @CIPop @stephentoub " +6806 area-System.Net Assert in TryCompleteOrAbortAsync with Unix domain sockets "The following assert: ``` Unexpected oldState: Complete at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition, String message) at System.Net.Sockets.SocketAsyncContext.AsyncOperation.TryCompleteOrAbortAsync(SocketAsyncContext context, Boolean abort) at System.Net.Sockets.SocketAsyncContext.AsyncOperation.TryCompleteAsync(SocketAsyncContext context) at System.Net.Sockets.SocketAsyncContext.OperationQueue`1.Complete(SocketAsyncContext context) at System.Net.Sockets.SocketAsyncContext.HandleEvents(SocketEvents events) at System.Net.Sockets.SocketAsyncEngine.EventLoop() at System.Threading.Tasks.Task.Execute() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)Aborted (core dumped) ``` gets triggers by this repro: ``` C# using System; using System.IO; using System.IO.Pipes; using System.Net.Http; using System.Diagnostics; using System.Threading.Tasks; using System.Text; using System.Net; using System.Net.Sockets; public class Program { public static void Main() { using (Socket server = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.Unspecified)) using (Socket client = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.Unspecified)) { const int Iters = 100; // Increase this value const int Chunk = 1024; byte[] sendData = new byte[Chunk * Iters]; byte[] receiveData = new byte[sendData.Length]; new Random().NextBytes(sendData); string path = ""./example.sock""; File.Delete(path); server.Bind(new UnixDomainSocketEndPoint(path)); server.Listen(1); Task acceptTask = server.AcceptAsync(); client.Connect(new UnixDomainSocketEndPoint(path)); acceptTask.Wait(); Socket accepted = acceptTask.Result; Task[] writes = new Task[Iters]; Task[] reads = new Task[Iters]; for (int i = 0; i < Iters; i++) writes[i] = client.SendAsync(new ArraySegment(sendData, i * Chunk, Chunk), SocketFlags.None); for (int i = 0; i < Iters; i++) reads[i] = accepted.ReceiveAsync(new ArraySegment(receiveData, i * Chunk, Chunk), SocketFlags.None); Task.WaitAll(writes); Task.WaitAll(reads); for (int i = 0; i < sendData.Length; i++) if (receiveData[i] != sendData[i]) throw new Exception($""Different at {i}""); Console.WriteLine(""Done""); } } } // Copied verbatim from https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs namespace System.Net.Sockets { /// Represents a Unix Domain Socket endpoint as a path. public sealed class UnixDomainSocketEndPoint : EndPoint { private const int MaxPathLength = 92; // sockaddr_un.sun_path at http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_un.h.html private const int PathOffset = 2; // = offsetof(struct sockaddr_un, sun_path). It's the same on Linux and OSX private const int MaxSocketAddressSize = PathOffset + MaxPathLength; private const int MinSocketAddressSize = PathOffset + 2; // +1 for one character and +1 for \0 ending private const AddressFamily EndPointAddressFamily = AddressFamily.Unix; private static readonly Encoding s_pathEncoding = Encoding.UTF8; private readonly string _path; private readonly byte[] _encodedPath; public UnixDomainSocketEndPoint(string path) { if (path == null) { throw new ArgumentNullException(nameof(path)); } if (path.Length == 0 || s_pathEncoding.GetByteCount(path) >= MaxPathLength) { throw new ArgumentOutOfRangeException(nameof(path)); } _path = path; _encodedPath = s_pathEncoding.GetBytes(_path); } internal UnixDomainSocketEndPoint(SocketAddress socketAddress) { if (socketAddress == null) { throw new ArgumentNullException(nameof(socketAddress)); } if (socketAddress.Family != EndPointAddressFamily || socketAddress.Size > MaxSocketAddressSize) { throw new ArgumentOutOfRangeException(nameof(socketAddress)); } if (socketAddress.Size >= MinSocketAddressSize) { _encodedPath = new byte[socketAddress.Size - PathOffset]; for (int index = 0; index < socketAddress.Size - PathOffset; index++) { _encodedPath[index] = socketAddress[PathOffset + index]; } _path = s_pathEncoding.GetString(_encodedPath, 0, _encodedPath.Length); } else { // Empty path may be used by System.Net.Socket logging. _encodedPath = Array.Empty(); _path = string.Empty; } } public string Path { get { return _path; } } public override AddressFamily AddressFamily { get { return EndPointAddressFamily; } } public override SocketAddress Serialize() { var result = new SocketAddress(AddressFamily.Unix, MaxSocketAddressSize); // Ctor has already checked that PathOffset + _encodedPath.Length < MaxSocketAddressSize for (int index = 0; index < _encodedPath.Length; index++) { result[PathOffset + index] = _encodedPath[index]; } result[PathOffset + _encodedPath.Length] = 0; // The path must be ending with \0 return result; } public override EndPoint Create(SocketAddress socketAddress) { return new UnixDomainSocketEndPoint(socketAddress); } public override string ToString() { return Path; } } } ``` As you increase Iters to increase the number of concurrent operations, the change of hitting the assert gets much larger. " +6807 area-System.Net Consider exposing Socket.Handle / Socket.SafeHandle In the full framework, Socket provides an `IntPtr Handle { get; }` property that returns a representation of the underlying OS' socket. This enables using functionality not exposed via the Socket object model. In corefx, this property isn't available, and there's no IntPtr-based or SafeHandle-based replacement for it, preventing such use. +6812 area-System.ComponentModel Expose additional APIs in System.ComponentModel contracts This exposes the APIs tracked by #6573 in the contracts. Tests to come alongside implementation. cc: @terrajobst @twsouthwick @weshaggard +6814 area-System.Net "Fix SocketAsyncContext's ""requeue"" operation" `Requeue` is supposed to add an item back to the head of the queue. It was not implemented correctly, resulting in a corrupt queue in cases where an operation needed to be retried after an attempt to complete it on the event handler thread. This addresses part of #6806 (the assert). The test code in that issue still fails with a different problem, which I'll look into next. @stephentoub, @pgavlin +6819 area-System.Linq OrderBy-Take-Skip combination gives incorrect result "`OrderBy` followed by `Take(2).Skip(1)` gives empty list instead of list of size 1. Repro code: ``` c# using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { var cs = new List { new Customer { CustomerID = ""ANATR"" }, new Customer { CustomerID = ""ANTON"" }, new Customer { CustomerID = ""AROUT"" }, new Customer { CustomerID = ""BERGS"" }, new Customer { CustomerID = ""BONAP"" }, new Customer { CustomerID = ""ALFKI"" }, }; // Only Skip Console.WriteLine(cs.Count()); Console.WriteLine(cs.Skip(1).Count()); // OrderBy & Skip Console.WriteLine(cs.OrderBy(c => c.CustomerID).Count()); Console.WriteLine(cs.OrderBy(c => c.CustomerID).Skip(1).Count()); // Take & Skip Console.WriteLine(cs.Take(2).Count()); Console.WriteLine(cs.Take(2).Skip(1).Count()); // OrderBy, Take & Skip Console.WriteLine(cs.OrderBy(c => c.CustomerID).Take(2).Count()); Console.WriteLine(cs.OrderBy(c => c.CustomerID).Take(2).Skip(1).Count()); Console.WriteLine(""Hello World!""); } } public class Customer { public string CustomerID {get; set;} } } ``` project.json ``` json { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""NETStandard.Library"": ""1.0.0-rc2-23811"" }, ""frameworks"": { ""dnxcore50"": { } } } ``` Console Output: ``` D:\issue> dotnet run Project issue (DNXCore,Version=v5.0) was previously compiled. Skipping compilation. 6 5 6 5 2 1 2 0 // Should have been 1 Hello World! ``` " +6822 area-System.Net Fix WinHttpHandler when no proxy creds after 407 response We were getting an assert if we had an authenticating proxy but didn't have any credentials to send. After the initial 407 was received from the proxy, we then tried to set credentials for a retry. But since we didn't have any, we triggered an assert in SetWinHttpCredential. The fix is to check for null credentials after getting the 407 response. If there are no credentials, then we end the retry loop with the final 407 status code. +6826 area-Meta await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(emailMessage); launches Outlook email composer with incomplete content I have been having issues with launching the Windows Phone 10 Outlook email composer with a pre-populated body from a UWP app. On both emulator and device, I experience inconsistent results with the same piece of code. The core of the code is provided below: `public static async Task ComposeEmail()` `{` ` `var emailMessage = new Windows.ApplicationModel.Email.EmailMessage();` ``emailMessage.Body = GenerateMessageBody();` ` ``await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(emailMessage);` `}` `await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(emailMessage);` **_renders the body with incomplete content_** whose length before truncation is not consistent. I have crosschecked that `emailMessage.Body` contains the full content of the string passed to it. In the case of a string containing HTML tags, Outlook sometimes renders the body as processed html (just like a web browser should) or plaintext html. In either of these cases, it stops printing the string passed to the body at different points irrespective of whether it outputs it as processed html or plain text html. Please be aware that this has been tested with strings with different character length but the issue still persists irrespective. **I have attached a complete standalone troubleshooting zip containing:** • sample app which tries to launch the Outlook email composer whose body is prepopulated at the click of a button on the home screen. I’ll be pleased if you can look into this. [EmailComposer.zip](https://github.com/dotnet/corefx/files/168905/EmailComposer.zip) +6827 area-System.Data SqlClient hangs when loading in Docker "A simple client is create to talk to a remote Sql database - this works in all cases on Linux) A docker image is created based on aspnet/1.0.0-rc1-update1 but with 1.0.0-rc2-16595 installed A docker image is created based on the above with the test client inside it. DNX_TRACE=1 is enabled in the container When run, all is well until the runtime tries to load the SqlClient. The process then hangs indefinitely requiring it to be killed as in below image. Is this known and/or is there a workaround - can anyone suggest more diagnostics ? - thanks in advance.... ![image](https://cloud.githubusercontent.com/assets/4983720/13703128/7bbd432e-e78b-11e5-9151-c3524f21db0e.png) I've tried this on : 1.0.0-rc2-16357, 1.0.0-rc2-16551, 1.0.0-rc2-16595 and the result is the same Docker file for runtime base is created like this ``` FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr ENV DNX_TRACE 1 RUN bash -c ""source $DNX_USER_HOME/dnvm/dnvm.sh \ && dnvm install 1.0.0-rc2-16595 -alias default -u -r coreclr \ && dnvm alias default | xargs -i ln -s $DNX_USER_HOME/runtimes/{} $DNX_USER_HOME/runtimes/default"" ``` Docker file for test client is create like this (FROM refers to the above) ``` FROM coreclr:1.0.0-rc2-16595 COPY ""./approot"" ""/approot"" WORKDIR /approot EXPOSE 5004 ENTRYPOINT [""./run""] ``` " +6828 area-System.Net SocketPal.Ioctl isn't implemented on Unix "There's currently a TODO in the code (""TODO: can this be supported in some reasonable fashion?""). We should either figure out the right design for this and implement it or remove the TODO. " +6830 area-System.ComponentModel ValidationAttribute _errorMessageResourceAccessor does not support UWP style Resw resources "The ValidationAttribute needs to be updated to include support for UWP style Resw resource files that do not generate a C# code file with static properties to represent the resources in the Resw file. It might need a new property to allow the developer to specify the `Windows.ApplicationModel.Resources.ResourceLoader` instance to use and then specify the ResourceKey. Then just add an if block in the ""private void SetupResourceAccessor(){...}"" method to setup the ""_errorMessageResourceAccessor"" delegate to use the new ResourceLoader class to get the resource using the specified ResourceKey. Something like: ``` _errorMessageResourceAccessor = delegate { return _theResourceLoaderToUse.GetString(_theResourceKey); }; ``` Where ""_theResourceLoaderToUse"" and ""_theResourceKey"" are internal properties set by the developer. And, instead of code like this: ``` [Required(ErrorMessageResourceType = typeof(Resources.Strings), ErrorMessageResourceName = ""EmailInvalidMessage"")] ``` We use code like this: ``` [Required(ErrorMessageResourceLoaderDelegate = delegate { return Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView(); }, ErrorMessageResourceName = ""EmailInvalidMessage"")] ``` " +6831 area-System.Numerics New Magnitude class for System.Numerics "Supporting magnitudes (values + units) might be a good complement for the current vector functionalities of `System.Numerics`. It would allow .NET to deal with any Physics-based situation in an intuitive and easy way. What I am proposing here might also be adapted to other not-related-to-Physics requirements, like angles or computing units (e.g., bit/byte). The new `Magnitude` class is expected to be defined in such a way that all the operations and unit conversions might be easily performed. The idea is allowing programmers to interact with values+units as intuitively as they currently do with just values. For example: having 5 m/s and wanting to convert it to in/s or to add it to 3 ft/h. Rough sketch of what I have in mind: ``` C# public class Magnitude { public static Magnitude operator +(Magnitude first, Magnitude second) { //It is necessary to confirm whether ""type"" & ""measurement"" are compatible and eventually perform all the required conversions. return new Magnitude((decimal)first.value + (decimal)second.value, first.measurement.unit.ToString()); } //Further basic operator overloads. //Other methods performing basic operations among Magnitude instances. public readonly MagnitudeType type; //The type of the instance has to remain unaltered. public object value { get; set; } //The getter will be defined on account of the ""measurement"" properties. public Measurement measurement { get; set; } public Magnitude(decimal value, string unit) { this.value = value; //The ""unit"" value will be adequately parsed and analysed. //The version below is a simplistic version to show the idea. if (unit == ""m"") { this.type = MagnitudeType.Length; this.measurement = new Measurement(UnitSystem.InternationalSystem, LengthInternational.Meter); } else if (unit == ""ft"") { this.type = MagnitudeType.Length; this.measurement = new Measurement(UnitSystem.ImperialSystem, LengthImperial.Foot); } } //Other overloads accepting different arguments. } public class Measurement { public UnitSystem system { get; set; } public object unit { get; set; } public Measurement(UnitSystem system, object unit) { this.system = system; this.unit = unit; } } //Very simplified versions showing how the enums are expected to look like. public enum MagnitudeType { Length, Weight } public enum UnitSystem { InternationalSystem, ImperialSystem }; public enum LengthInternational { Millimeter, Centimeter, Meter }; public enum LengthImperial { Inch, Foot }; ``` Simple example showing how the aforementioned code is expected to be used: ``` C# Magnitude var1 = new Magnitude(1.234m, ""m""); Magnitude var2 = new Magnitude(5.678m, ""ft""); Magnitude var3 = var1 + var2; ``` I can only think of one drawback for the proposed approach: relying on enums in a situation like this (i.e., with many alternatives and classifications) implies hardcoding a relevant amount of different scenarios. In any case, I think that it would be worthy anyway. CLARIFICATION (from my previous contributions, I understand that this issue should be evident, but just in case...): I am expecting to take care of the proposed implementation completely by my own and also to deliver a comprehensive-enough first version. The initial lack of detail is exclusively motivated by the fact that I prefer to not spend too much time on this before confirming that the .NET community/team likes it. " +6832 area-System.Net Sockets on Unix don't maintain ordering of async operations "If the user initiates multiple concurrent async operations, the expectation (and guarantee, on Windows) is that these will operate on the underlying data stream in the order in which they were submitted. For example, if two asynchronous reads are started, the first read must be satisfied from the first bytes received from the remote peer, and the second read must receive the next bytes, etc. Without this guarantee, it is impossible to reconstruct a data stream received via concurrent read operations. The same ordering requirements apply to writes, for the same reasons. In the current Unix implementation of Sockets, we maintain ordering of operations enqueued to the `SocketAsyncContext`, but we do not actually enqueue operations there before first trying to complete the operation. This allows later operations to ""jump ahead"" of prior operations, in cases where the later operation is started just as data becomes available, but before the `SocketAsyncContext` event loop has had a chance to consume the data. It is important to have this initial attempt to complete the operation before waiting for the asynchronous event, because typically data _is_ available when the operation is initiated, and we don't want to pay the cost of multiple allocations, context switches, etc., for an operation that can complete synchronously. However, if prior operations are already enqueued, waiting for their turn, subsequent operations need to forego the initial attempt to complete synchronously, and wait in line behind the prior operations. See #6806 for an example of a test that fails due to this problem. " +6833 area-System.Net Implement NamedPipe*Stream on Unix domain sockets Today, NamedPipeServer/ClientStream on Unix are implemented on top of FIFOs, aka named pipes. There are some unfortunate limitations to this that are causing problems for typical usage of NamedPipeServer/ClientStream: - FIFOs can be constructed as both read and write (i.e. InOut), but a writer can then immediately read what was written. In other words, whereas one might expect there two be two data channels, one in each direction, there's only one that everyone can read and write from. - FIFOs can be connected to by any number of readers and writers, which has the effect of meaning a reader doesn't unblock when a writer disconnects, because there may be another writer in the future. To address these significant limitations, this commit moves NamedPipeServer/ClientStream to be built instead on top of Unix domain sockets. Unix domain sockets are an IPC mechanism for local communication using the sockets model, and we have support for it via System.Net.Sockets, thanks to #5051. Both of the aforementioned problems are addressed by this change. A few other positive outcomes: - The participants on each side of the connection can get the credentials of the other side, so GetImpersonatedUserName is now implemented. - Our Socket implementation has a good async implementation, so we can use it for all of the async operations exposed rather than queueing a work item that then blocks doing the synchronous operation. There are a few downsides, but they're worth the tradeoff: - FIFOs have the same general blocking behavior as anonymous pipes and as named pipes on Windows: a call to Write doesn't complete until an associated Read comes along. That's not the case with Unix domain sockets, where a Write typically just deposits the data into a buffer. Writes on a socket only block when the buffer is full. - Unix domain sockets are considered to be a bit slower than FIFOs. - Changing the buffer size of a FIFO impacts the whole FIFO, whereas changing the buffer size for a socket impacts just that end of the socket. - There's also a small hack that uses reflection to work around #6807, the lack of an exposed handle property on Socket. Hopefully that'll be fixed soon and then we can remove the hack. There continue to be several features that we don't support on Unix, e.g. message transmission, max number of servers, etc. (One oddity here is that this makes the Unix implementation of System.IO.Pipes.dll have a dependency on System.Net.Sockets.dll, but I spoke with @weshaggard and, other than it being odd, we couldn't come up with any strong reason not to. In the layering, Sockets is already considered lower-level.) cc: @ericeil, @ianhays, @bartonjs, @jaredpar, @AArnott, @cipop, @ericstj, @dsplaisted, @IlyaBiryukov, @bpschoch Fixes https://github.com/dotnet/corefx/issues/1849 +6835 area-System.Net Don't get available bytes for the socket unless we actually need the result While reading through the code I noticed that we're making unnecessary `ioctl` calls in Receive calls, to get the count of available bytes. This turns out to only be used if the caller supplied a list of buffers, which is not the typical case. This change moves the `ioctl` call so that it happens only if needed, which should help with throughput in most scenarios. @stephentoub +6838 area-System.Net Ensure ordering of async Socket send/receive operations If the send/receive queue is not empty, don't attempt to synchronously send/receive. Instead, wait our turn behind prior pending operations. This has the unfortunate consequence of making `_queueLock` cover more code. This is solvable, but is a much larger change, which will have to wait for later. It's worth noting that this lock will only experience contention if there are actually concurrent operations, in which case we need _something_ to synchronize/serialize those operations in any case. For mainstream scenarios, I would not expect any noticeable perf impact due to this change. Fixes #6832. @stephentoub @pgavlin +6846 area-System.Net Implement SocketPal.Poll on Unix with poll instead of select SocketPal.Poll on Unix is currently implemented with select. This is causing problems due to limitations of select, which fails with file descriptors >= FD_SETSIZE. I've changed the implementation to use poll instead, which both fixes the problem and results in simpler code. I've also added a few tests, and in the process of doing so cleaned up some related tests to use theories. This is blocking #6833, which in CI is frequently getting file descriptors for sockets larger than FD_SETSIZE. cc: @ericeil, @pgavlin, @davidsh, @CIPop Contributes to #4728. +6847 area-System.Net HttpClient: Add comment to Set-Cookie test Add a comment explaining the header value lengths being tested per #6764 PR feedback ([comment](https://github.com/dotnet/corefx/pull/6764#discussion_r55526369)). cc: @stephentoub @davidsh +6849 area-System.Net Progress while downloading a large file with HttpClient Hi All, Googling around I found that Windows.Web.Http.HttpClient provides a way to get progress of a download. Is there an way to get some kind of progress information when downloading a large file using ASP.NET Core's HttpClient? Thanks, -Brian +6850 area-System.Reflection Unable to use Reflection to get StructLayoutAttribute for a type In .NET CoreCLR it is not possible to get the `System.Runtime.InteropServices.StructLayoutAttribute` for a given type via reflection. In usual .NET CLR the `System.Type` and `System.Reflection.TypeInfo` declare the `StructLayoutAttribute` member as the StructLayout cannot be retrieved by calls to `GetCustomAttribute()` or through the `CustomAttributes` property. The consequence of this is that it is impossible to use reflection to get the packing size, or the constant size of a StructLayout marked type. Ironically, The `LayoutKind` and `CharSet` values can be infrerred from the `TypeAttributes` of a type info. +6854 area-System.Net Merge master into dev/negotiatestream cc @stephentoub @vijaykota +6856 area-System.Net Implement SocketPal.Select on Unix with poll instead of with select (Ignore the first commit. It's copied from #6846 as it builds on some changes made there.) The second commit adds tests for Socket.Select, which didn't have any other than some tests for argument validation. The third commit changes Unix's SocketPal.Select to be implemented with poll instead of with select. select suffers from the limitation that it only works with file descriptors less than FD_SETSIZE; if the system assigns a file descriptor >= FD_SETSIZE, Socket.Select will fail. This commit changes the implementation to use poll instead of select. (I considered keeping the current Select implementation and falling back to the new one only if a file descriptor >= FD_SETSIZE was found, but after coding it and trying both, it didn't seem worth keeping all of the select code around.) Fixes #4728 cc: @ericeil, @pgavlin, @davidsh, @cipop +6858 area-System.Net Fix WinHttpHandler proxy discovery behavior "In order to support WindowsProxyUsePolicy.UseWinInetProxy, WinHTTP provides the WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY option. This allows for reading the per-user registry settings to determine how to find a proxy for a given url. This includes using WPAD protocol to find and execute a Javascript PAC file. The WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY only works on Windows 8.1 and above. For Windows 7 and Windows 8, we have to manually do the work and the WinInetProxyHelper class provides for that by calling various WinHTTP APIs. This fix is about having the AUTOMATIC_PROXY behaviors work the same whether done automatically by WinHTTP or manually using the WinInetProxyHelper class. In general, errors processing the auto discovery logic should be ignored and the proxy settings should fallback to manual settings if present in the registry. This is difficult to test in an Xunit test since registry settings need to be changed as well as recycling the ""WinHTTP Web Proxy Autodiscover Discovery Service"" since it caches PAC file processing. So, this was tested manually for now and additional traces were added to the WinInetProxyHelper class. Fixes #6011 " +6863 area-System.Net WebUtility.UrlDecode Not decoding %b6 "I am seeing an issue with %b6 being left as ""%b6"" instead of being converted to 0xb6. I don't know if there is any way I can debug it, but if you take the string ""%b6"" and pass it through the WebUtility.UrlDecode, and you will see that doing an Encoding.UTF8.GetBytes, you will see 0xef, 0xbf, 0xbd, instead of the expected 0xb6. Any help debugging this would be appreciated. " +6866 area-System.IO FileSystemWatcher.Rename clips FullPath and Name "- on OSX run the snippet below with a path to watch - in that path run `mv existing.file newName.file` - the rename event clips the first character of the new name ![screen shot 2016-03-14 at 16 07 39](https://cloud.githubusercontent.com/assets/1794099/13748859/ff9a6f1c-e9fe-11e5-9874-49194b4d05cd.png) ``` c# using System; using System.IO; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Watch(args[0]).Wait(); Console.WriteLine(""done""); } private static async Task Watch(string path) { FileSystemWatcher watcher = new FileSystemWatcher(path); var tcs = new TaskCompletionSource(); watcher.Renamed += (sender, arg) => { Console.WriteLine(arg.ChangeType); Console.WriteLine(arg.OldFullPath); Console.WriteLine(arg.FullPath); Console.WriteLine(arg.Name); }; watcher.EnableRaisingEvents = true; watcher.IncludeSubdirectories = true; Console.WriteLine(""Waiting for a file to change...""); var result = await tcs.Task; return result; } } } ``` " +6869 area-System.Runtime Add StringBuilder.AppendLine(char) StringBuilder.AppendLine does not have an overload that takes a char. It might be useful to add one. +6872 area-System.Diagnostics Investigate failures when DiagnosticSource tests are run concurrently Currently there are failures when we run allow the DiagnosticSource tests to run concurrently with one another. This suggests there may be bugs in the implementation. To repro remove the assembly directive in DiagnosticSourceEventSourceTests.cs Also see the TODO in the AllSubscriberStress test case. +6874 area-System.ComponentModel Add System.ComponentModel types to support TypeDescriptors This is an initial push that includes the original source of TypeDescriptors and necessary files to facillitate porting to core. The source has been formatted according to the repo standards, but the files have not been added into the projects beyond a placeholder comment for when the file is ready to build. This will make it easier to see what changes were done to enable support on .NET Core. +6877 area-System.Data NullRef Exceptions in Release DataStreamTest Starting: System.Data.SqlClient.ManualTesting.Tests System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient_NP [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(1162,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.GetStream(String connectionString) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(88,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer(String connectionString, Boolean usingNamePipes) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(29,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient_NP() System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd11SqlClient_NP [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(1162,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.GetStream(String connectionString) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(88,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer(String connectionString, Boolean usingNamePipes) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(55,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd11SqlClient_NP() System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(1162,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.GetStream(String connectionString) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(88,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer(String connectionString, Boolean usingNamePipes) System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient_NP [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(1162,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.GetStream(String connectionString) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(88,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer(String connectionString, Boolean usingNamePipes) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(42,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd10SqlClient_NP() System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer_nwnd9SqlClient [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(1162,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.GetStream(String connectionString) D:\CoreFX\src\System.Data.SqlClient\tests\ManualTests\SQL\DataStreamTest\DataStreamTest.cs(88,0): at System.Data.SqlClient.ManualTesting.Tests.DataStreamTest.RunAllTestsForSingleServer(String connectionString, Boolean usingNamePipes) Finished: System.Data.SqlClient.ManualTesting.Tests === TEST EXECUTION SUMMARY === System.Data.SqlClient.ManualTesting.Tests Total: 5, Errors: 0, Failed: 5, Skipped: 0, Time: 7.038s +6880 area-System.Net Break dependency on older collections in System.Net.Security Removes `System.Net.Security`'s dependency on `System.Collections.NonGeneric` and `System.Collections.Specialized`. This PR is broken up into 3 commits: 1. Adds tests for `ServiceNameCollection`. 100% line and branch coverage, other than the `NormalizeServiceName` method. The tests pass on both the full framework and before/after these changes on .NET Core ~~(other than one behavior difference in `CopyTo` noted below)~~. 2. Removes the dependency on `System.Collections.NonGeneric` and `System.Collections.Specialized`. - `SpnDictionary`: Removed. It's the only thing that depends on the Specialized collections and isn't currently being used anywhere in CoreFX. In the full framework, it's only used in [a few places](http://referencesource.microsoft.com/#System/net/System/Net/_SpnDictionary.cs,3c13c3eec03ce802,references) related to `HttpWebRequest`'s implementation that I don't think is relevant in CoreFX. I also verified it isn't currently used in dev/negotiatestream branch. - `ServiceNameCollection`: No longer inherits from `ReadOnlyCollectionBase` and uses `List` instead of `ArrayList`. - `SslSessionsCache`: Uses of `Hashtable` replaced with `ConcurrentDictionary`. - `SecureChannel`: Uses of `ArrayList` replaced with `List`. 3. `ServiceNameCollection`: Minor perf optimizations and cleanup, while making changes here. ~~Behavior change: In the full framework, `ServiceNameCollection.CopyTo(Array, int)` throws `InvalidCastException` when the destination array is not of a compatible type, but now it throws `ArgumentException` because we now use `List`'s implementation of the non-generic `CopyTo`. Do we need to match the full framework and throw `InvalidCastException` here? (This could have implications for other collections in .NET Core that are now backed by `List` instead of `ArrayList`).~~ **Update**: I added a commit that makes the behavior of `CopyTo` match the full framework. Note: `SslSessionsCache` could use some test coverage around shrinking the cache, but I didn't have a chance to work on it. Not sure if I will anytime soon. Fixes #6725. cc: @weshaggard @davidsh +6881 area-System.Net Remove unused internal Socket.IOControl overload While investigating #6828, I noticed that one `Socket.IOControl` overload does not appear to be used by anything on Windows _or_ Unix, and is not exposed to the public. I assume this is a vestige of the port from the full CLR codebase. @davidsh @CIPop @stephentoub +6884 area-System.Net Fix generation of Net.Security This was regressed by https://github.com/dotnet/corefx/commit/be08afd9701053f5f9369762db58b87c8ca9559f /cc @chcosta +6892 area-Meta Define .NETCoreApp SharedFramework redist +6893 area-System.Runtime (API proposal) Adding a StringBuffer class with a MoveToString method (Sorry for all the proposals I've been posting here lately, I promise this will be my last one for a while :smile:) ## Background It's a common scenario to have code where you want to perform a bunch of operations on a string, like replacing a character or overwriting part of the string, but don't want to allocate a bunch of substrings. What most developers end up doing is copying the string into a temporary `char[]` or `StringBuilder`, calling the mutable counterparts of the methods in question, and then calling `ToString` on the result. This is wasteful, since two allocations are required: one to copy the data into the mutable buffer, and one to construct a new immutable string. Each of these operations takes O(n) time. `ImmutableArray` solves this problem by having a `MoveToImmutable` method in its 'builder' class, which simply [transfers the array reference](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray%601+Builder.cs#L198-L201) to a new `ImmutableArray` and sets its own to an empty one. This takes O(1) constant time and does not require copying any data. ## Proposal I propose adding a `StringBuffer` class that represents a fixed-length, mutable string. Its closest counterpart would be a `char[]`, except that it would use a string as its backing store and thus could be 'moved' directly to a string. Here is a rough sketch of how it would look like: ``` csharp public class StringBuffer { private string value; public StringBuffer(int capacity) { this.value = string.FastAllocateString(capacity); } public StringBuffer(char[] value) { this.value = new string(value); } public StringBuffer(string value) { this.value = string.Copy(value); } public int Length => value.Length; public unsafe void Replace(char from, char to) { if (Length == 0) return; // Modify the string in-place fixed (char* pch = value) { for (int i = 0; i < value.Length; i++) { if (pch[i] == from) pch[i] = to; } } } // Other methods, like CopyTo or ToCharArray // No length-changing methods like Append, // since this is supposed to be a fixed-size buffer public string MoveToString() { // Just do a pointer swap and empty out our reference // No copying needed, so this takes constant time var result = this.value; this.value = string.Empty; return result; } } ``` ## Usage Existing code that looks like this: ``` csharp // Replace non-ASCII chars with question marks char[] buffer = input.ToCharArray(); for (int i = 0; i < buffer.Length; i++) { if (buffer[i] >= 128) buffer[i] = '?'; } var output = new string(buffer); ``` could be converted to look like this: ``` csharp var buffer = new StringBuffer(input); for (int i = 0; i < buffer.Length; i++) { if (buffer[i] >= 128) buffer[i] = '?'; } var output = buffer.MoveToString(); ``` ## Why not add MoveToString on top of StringBuilder? - At the moment, `StringBuilder` is implemented internally on top of a `char` array. If we wanted to add a `MoveToString` method, we would have to refactor it to use a string as its backing store instead. - The move would only be valid if the builder's capacity was equal to its count (see [here](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray%601+Builder.cs#L193-L196) for how `ImmutableArray` handles this); if not, the data would need to be copied to a new string anyway, since there would be trailing nulls left off the end of the string. What are your thoughts on this? +6897 area-System.Net [ToFDisable] Port tests for: System.Net* "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Net.Requests, we're missing 0 lines of coverage. For System.Net.Security, we're missing 0 lines of coverage. For System.Net.Sockets, we're missing 1246 lines of coverage. For System.Net.WebHeaderCollection, we're missing 0 lines of coverage. For System.Net.WebSockets.Client, we're missing 19 lines of coverage. To fulfill the uncovered lines we would need to either create new tests for them or port 6 ToF tests to the open. Those tests are: - [ ] System.Net.Sockets\4.0.10.0\NetSocketsTestAsyncServer_FullRun.XML - [ ] System.Net.Sockets\4.0.10.0\NetSocketsPerformanceTest_FullRun.XML - [ ] System.Net.Sockets\4.0.10.0\NetSocketsTest_FullRun.XML - [ ] System.Net.Sockets\4.0.0.0\NetSocketsTest_FullRun.XML - [ ] System.Net.Sockets\4.0.0.0\NetSocketsPerformanceTest_FullRun.XML - [ ] System.Net.WebSockets.Client\4.0.0.0\NetWebSocketsClient_FullRun.XML Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +6901 area-Infrastructure Integrate Arm64 test runs in Helix +6905 area-System.Net NTLM Implementation This includes the changes done for supporting NTLM by using gssntlmssp plugin. Tests are also included for the same. cc: @stephentoub @bartonjs @vijaykota +6907 area-System.Console System.Console: Add OutputStream empty write test resolves #6422 @stephentoub +6910 area-System.Net Optimize WinHTTP notification callbacks Modify WinHttpHandler and WinHttpWebSocket notification callbacks to only receive those notifications that are actually being used in the status callback. This will improve performance. Fixes #5036 +6911 area-System.IO MemoryMappedFileTests_CreateOrOpen.ValidArgumentCombinations_NonExecute failed in CI on Windows "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/3493/testReport/junit/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateOrOpen/ValidArgumentCombinations_NonExecute_mapName___8fdc2f7d02eb4cd283e0400af5ffa06b___capacity__1__access__Read__options__DelayAllocatePages__inheritability__Inheritable_/ ``` System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateOrOpen.ValidArgumentCombinations_NonExecute(mapName: ""8fdc2f7d02eb4cd283e0400af5ffa06b"", capacity: 1, access: Read, options: DelayAllocatePages, inheritability: Inheritable) (from (empty)) System.IO.IOException : Cannot create a file when that file already exists +++++++++++++++++++ STACK TRACE: at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(FileStream fileStream, String mapName, HandleInheritability inheritability, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity) in d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedFile.Windows.cs:line 46 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(String mapName, Int64 capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability) in d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedFile.cs:line 314 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(String mapName, Int64 capacity) in d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedFile.cs:line 263 at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateOrOpen.ValidArgumentCombinations_NonExecute(String mapName, Int64 capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability) in d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateOrOpen.Tests.cs:line 134 ``` " +6912 area-System.Net Restructure async operation queues in Unix Socket implementation "Currently we maintain the queue of pending operations chained off of the ""event port"" (epoll/kqueue). This has some unfortunate implications: 1) We maintain ordering only for the processing of these events. The actual I/O is still unordered, without some extra mechanism. #6838 is a stop-gap fix for this, using the queue lock to maintain ordering of the I/O, but this means that we may block some threads unnecessarily, waiting for other pending I/O to complete. 2) In the current implementation, once we receive the notification, we end up doing the actual I/O operation on the event handler thread itself. This effectively serializes all of the kernel calls involved in the I/O (which includes all of the actual buffer-copies to and from the socket stream data). This impacts scalability significantly, relative to the Windows implementation _and_ Mono on Linux/OSX. 3) Doing the queueing at this level leads to synchronization complexity, which has lead to numerous reliability issues over the last couple of months. I have some ideas for simplifying and improving this, which I'll write up shortly. " +6913 area-System.Diagnostics Port EventLog to .NET Core This includes `System.Diagnostics.EventLog` and friends. +6915 area-System.Reflection System.Reflection.Metadata: Review all exceptions thrown by new code in 1.3 - [x] Localize all messages. - [x] Move all Throw methods to a single place. - [x] Check arguments in new public APIs. - [x] Include exception info in doc comments. +6918 area-System.IO ArgumentOutOfRangeException when creating named pipes on OSX When I run `System.IO.NamedPipes.Tests` on my OSX machine, most tests fail with an `ArgumentOutOfRangeException` in `UnixDomainSocketEndPoint(string)`. It seems the socket path is too long. I am seeing path strings like this: ``` /var/folders/c7/vc_7ks111wqg4svm2dwq81yw0000gn/T/.dotnet/corefx/pipes/42900fc4-3df4-4a0f-bc93-85b9432ce8b3 ``` It looks like this is derived from `Environment.GetTempPath`. I haven't done anything to customize my temp path, so I assume others with stock configurations will hit this as well. +6920 area-Meta Port and update System.Addin Though not used massively there is a real use for it, and as far as I know nothing to replace it. UWP environment as it grows will want this functionality to support business apps. +6926 area-System.Net Make UriBuilder.Query setter idempotent This is a PR meant to replace dotnet/corefx#3647. That pull request should be closed. This fixes #3646. +6927 area-System.Net Remove the SocketPal.Ioctl TODO comment Remove the `SocketPal.Ioctl` TODO comment, rename the PAL methods to make it clear that they are for Windows-specific IOCTLs, and add a comment to that effect. For compat, I can imagine that we'll support some Windows-specific IOCTLs on Linux/OSX in the future (translating them to the appropriate platform-specific call). We should do this only if/when there is demand for specific control code support. Fixes #6828. @stephentoub @CIPop @davidsh +6928 area-System.Net Remove manual SafeHandle marshaling in Unix Socket interop code "#6345 plumbed SafeHandle usage throughout the Unix Socket interop layer, but had to do manual marshaling from SafeHandles to file descriptors in the native interop layer because most of the Socket-related methods in System.Native take ""int""-type file descriptor arguments, rather than IntPtr. If these are changed to IntPtr, we can remove the manual marshaling code. " +6929 area-System.IO Opening a fifo stream fails on OSX Attempting to create a FileStream with a fifo created via mkfifo fails on OSX in the UnixFileStream constructor. The failure is in the attempt to flock the file. Flock fails with ENOTSUP (operation not supported). Example call stack: LocalOsxTransport exited with exception: Operation not supported Stack: at System.IO.UnixFileStream.CheckFileCall(Int64 result, Boolean ignoreNotSupported) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode) at MICore.LocalOsxTransport.InitStreams(LaunchOptions options, StreamReader& reader, StreamWriter& writer) +6930 area-System.Data System.Data.SqlClient.Tests.ExceptionTest fails with updated package On updating to latest package rc3-23915 this test fails ``` System.Data.SqlClient.Tests.ExceptionTest.IndependentConnectionExceptionTestOpenConnection [FAIL] Assert.Throws() Failure Expected: typeof(System.Data.SqlClient.SqlException) Actual: typeof(System.TypeInitializationException): The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. Stack Trace: E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs(54,0): at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(1100,0): at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) ``` ``` System.Data.SqlClient.Tests.ExceptionTest.ExceptionTests [FAIL] Assert.Throws() Failure Expected: typeof(System.Data.SqlClient.SqlException) Actual: typeof(System.TypeInitializationException): The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. Stack Trace: E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs(54,0): at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(1100,0): at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance , SqlConnectionString connectionOptions, TimeoutTimer timeout) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(1014,0): at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionO ptions, Boolean redirectedUserInstance) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(358,0): at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectio nOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnectionFactory.cs(133,0): at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Obj ect poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs(114,0): at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, D bConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(476,0): at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConne ctionInternal oldConnection) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(1187,0): at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, D bConnectionInternal oldConnection) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(792,0): at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout , Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(712,0): at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConn ectionOptions userOptions, DbConnectionInternal& connection) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs(287,0): at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 ret ry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs(452,0): at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFact ory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) E:\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionClosed.cs(64,0): at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectio nFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs(911,0): at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) E:\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs(541,0): at System.Data.SqlClient.SqlConnection.Open() E:\corefx\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs(81,0): at System.Data.SqlClient.Tests.ExceptionTest.GenerateConnectionException(String connectionString) E:\corefx\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs(28,0): at System.Data.SqlClient.Tests.ExceptionTest.<>c__DisplayClass5_0.b__0() ``` +6931 area-System.IO System.IO.Filesystem.Tests fail with package update to rc3-23915 ``` **System.IO.Tests.FileInfo_MoveTo.PathWithIllegalCharacters** [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The specified path is invalid at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.FileInfo.MoveTo(String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\FileInfo.cs:line 284 at System.IO.Tests.FileInfo_MoveTo.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\FileInfo\MoveTo.cs:line 13 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) ``` ``` **System.IO.Tests.Directory_CreateDirectory.PathWithInvalidCharactersAsPath_ThrowsArgumentException** [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '\\?\UNC\LOCALHOST'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 147 at System.IO.Directory.CreateDirectory(String path) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 50 at System.IO.Tests.Directory_CreateDirectory.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) ``` ``` **System.IO.Tests.File_Move.PathWithIllegalCharacters** [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The specified path is invalid at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.File.Move(String sourceFileName, String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\File.cs:line 698 at System.IO.Tests.File_Move.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 15 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) ``` ``` **System.IO.Tests.DirectoryInfo_Create.PathWithInvalidCharactersAsPath_ThrowsArgumentException** [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '\\?\UNC\LOCALHOST'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 147 at System.IO.DirectoryInfo.Create() in E:\corefx\src\System.IO.FileSystem\src\System\IO\DirectoryInfo.cs:line 102 at System.IO.Tests.DirectoryInfo_Create.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\DirectoryInfo\Create.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) ``` +6932 area-System.Reflection System.Reflection.TypeExtensions test fails with package upgrade to rc3-23915 ``` System.Reflection.Tests.PropertyInfoGetAccessor1.NegTest1 [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentNullException) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. Stack Trace: E:\corefx\src\System.Reflection.TypeExtensions\tests\PropertyInfo\PropertyInfoGetAccessors1.cs(77,0): at System.Reflection.Tests.PropertyInfoGetAccessor1.<>c__DisplayClass5_0.b__0() Finished: System.Reflection.TypeExtensions.Tests ``` +6937 area-System.Data Fix ApiCompat issues for System.Data.Common Remove ApiCompatBaseline.net45.txt once errors mentioned in it are resolved. +6939 area-System.Linq Fix ApiCompat issues for System.Linq.Expressions Remove ApiCompatBaseline.net46.txt once errors mentioned in it are resolved. +6942 area-System.Reflection System.Reflection.Metadata: Avoid allocations in custom attribute parser The custom attribute parser allocates an ImmutableArray for FixedArguments and NamedArguments. We should explore options to parse these lazily and avoid the array allocation. +6945 area-Infrastructure Need to remove Framework-specific assembly attributes from test assemblies "The test DLLs for CoreFX are getting created using the values from https://github.com/dotnet/corefx/blob/master/dir.props This leads to assembly metadata like this: [assembly: AssemblyVersion(""999.999.999.999"")] [assembly: OptimizeForBenchmarks] [assembly: AssemblyCompany(""Microsoft Corporation"")] [assembly: AssemblyCopyright(""© Microsoft Corporation. All rights reserved."")] [assembly: AssemblyDefaultAlias(""System.Collections.Tests"")] [assembly: AssemblyDescription(""System.Collections.Tests"")] [assembly: AssemblyFileVersion(""1.0.00001.0"")] [assembly: AssemblyInformationalVersion(""1.0.00001.0 built by: NETCORETSTBLD19-CORBVT"")] **[assembly: AssemblyMetadata("".NETFrameworkAssembly"", """")]** **[assembly: AssemblyMetadata(""Serviceable"", ""True"")]** **[assembly: AssemblyProduct(""Microsoft® .NET Framework"")]** [assembly: AssemblyTitle(""System.Collections.Tests"")] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] As well as having the same public key token as the actual product dlls. This becomes a much bigger deal when trying to compile these tests for .NET Native, as .NET Native considers these DLLs to be part of the platform and doesn't include them as part of the test ""application"" to be compiled as native. Fixing this will entail either signing with a different key (perhaps just using the OpenKey ) or no key, and removing these attributes. " +6946 area-System.Net Uri percent-encoding inconsistency between .NET Framework and UWP "I am not sure this is the best place to notify Microsoft about the following problem but here we go : I have noticed an inconsistency of HttpClient.SendAsync between ""Console"" and W10 Universal App. The inconsistency can be detected via Fiddler when executing a query with special characters. Please note that I am using the `HttpClient` from a Portable Class Library. If I user `HttpClient.SendAsync` the following query : https://api.twitter.com/1.1/search/tweets.json?q=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%21&result_type=mixed&count=100, the query executed by .NET is different if it is run in UAP and if it is run in a Console application. (query = **Привет!**) I have been able to identify this via Fiddler: **Console Application :** > GET https://api.twitter.com/1.1/search/tweets.json?q=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82!&result_type=mixed&count=100 HTTP/1.1 > > User-Agent: Tweetinvi/0.9.11.1 > > Cache-Control: no-cache > > Authorization: OAuth oauth_consumer_key=""jjMV4k3n9EswD9hlhRZqQCZrm"",oauth_nonce=""222222"",oauth_signature_method=""HMAC-SHA1"",oauth_timestamp=""1458086400"",oauth_token=""1693649419-BlEivyWIiOVrb22JjdzRipXWp4ltVdo4VLye1VW"",oauth_version=""1.0"",oauth_signature=""ODaUZNfxMbM7l0gtZ1GEFsjr%2BAA%3D"" > > Host: api.twitter.com > > Connection: Keep-Alive **Windows 10 Universal App :** > GET https://api.twitter.com/1.1/search/tweets.json?q=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%21&result_type=mixed&count=100 HTTP/1.1 > > Cache-Control: no-cache > > User-Agent: Tweetinvi/0.9.11.1 > > Authorization: OAuth oauth_consumer_key=""jjMV4k3n9EswD9hlhRZqQCZrm"",oauth_nonce=""222222"",oauth_signature_method=""HMAC-SHA1"",oauth_timestamp=""1458086400"",oauth_token=""1693649419-BlEivyWIiOVrb22JjdzRipXWp4ltVdo4VLye1VW"",oauth_version=""1.0"",oauth_signature=""ODaUZNfxMbM7l0gtZ1GEFsjr%2BAA%3D"" > > Host: api.twitter.com > > Connection: Keep-Alive > > Cookie: guest_id=v1%3A145704170375190067 If you take attention, you will notice that on the console, the end of the query parameter is **%82!** (with a question mark). On the other side the W10 query parameter finishes by **%82%21**. Here the question mark has kept its HTML escaping. You can also notice that W10 is adding a cookie. Is it a bug of the .NET Framework/HttpClient library? I can assure that the query entered is the SAME in the `HttpClient.SendAsync` as both application uses the same binaries to create and execute the query (and I verified). Here is my code for reference: ``` c# public class HttpClientWebHelper : IHttpClientWebHelper { public async Task GetHttpResponse(ITwitterQuery twitterQuery, HttpContent httpContent = null, ITwitterClientHandler handler = null) { using (var client = GetHttpClient(twitterQuery, handler)) { client.Timeout = twitterQuery.Timeout; var httpMethod = new HttpMethod(twitterQuery.HttpMethod.ToString()); if (httpContent == null) { return await client.SendAsync(new HttpRequestMessage(httpMethod, twitterQuery.QueryURL)).ConfigureAwait(false); } else { if (httpMethod != HttpMethod.Post) { throw new ArgumentException(""Cannot send HttpContent in a WebRequest that is not POST.""); } return await client.PostAsync(twitterQuery.QueryURL, httpContent).ConfigureAwait(false); } } } public HttpClient GetHttpClient(ITwitterQuery twitterQuery, ITwitterClientHandler twitterHandler = null) { var handler = (twitterHandler as TwitterClientHandler) ?? new TwitterClientHandler(); handler.TwitterQuery = twitterQuery; var client = new HttpClient(handler) { Timeout = twitterQuery.Timeout, }; return client; } } ``` This post is a ""duplicate"" of this [StackOverflow question](http://stackoverflow.com/questions/36025004/httpclient-does-not-send-same-request-in-w10-uap). " +6947 area-System.Net WebUtility.UrlEncodeToBytes erroneously returns the full array if no encoding is needed This code prints `1 2 3`, when it should print `2 3`: ``` csharp byte[] input = { 49, 50, 51 }; byte[] output = WebUtility.UrlEncodeToBytes(input, offset: 1, count: 2); foreach (var item in output) Console.WriteLine((char)item); ``` The problem seems to be coming from [this](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Net/WebUtility.cs#L319) line in the internal `UrlEncode` implementation, which returns the whole byte array disregarding the offset and the count. Luckily I've found out that I accidentally fixed this with #6698, so this can be closed soon enough when that is merged. cc @stephentoub @davidsh +6952 area-System.Net WebHeaderCollection: Remove dependency on older collections `System.Net.WebHeaderCollection` pulls in `System.Collections.Specialized` which pulls in `System.Collections.NonGeneric` which we are trying to break dependencies on. This PR removes the dependency, paring down `WebHeaderCollection`'s implementation to only what's needed to support the contract's public surface area ([ref](https://github.com/dotnet/corefx/blob/50c11108d65ed6b110ea125a6d072206ca227f4a/src/System.Net.WebHeaderCollection/ref/System.Net.WebHeaderCollection.cs#L88-L96), [manual](https://github.com/dotnet/corefx/blob/50c11108d65ed6b110ea125a6d072206ca227f4a/src/System.Net.WebHeaderCollection/ref/System.Net.WebHeaderCollection.Manual.cs#L10-L15)). Updated tests pass before/after these changes (100% line and branch coverage of the changes), and on the full framework. Fixes #6726. cc: @weshaggard @davidsh +6956 area-System.IO Unix_BufferSizeRoundtripping failing sporadically on OS X ``` 05:05:15 System.IO.Pipes.Tests.NamedPipeTest_Specific.Unix_BufferSizeRoundtripping(direction: Out) [FAIL] 05:05:15 Assert+WrapperXunitException : File path: d:\j\workspace\osx_debug_bld---2f4069d6\src\System.IO.Pipes\tests\NamedPipeTests\NamedPipeTest.Specific.cs. Line: 271 05:05:15 ---- Assert.InRange() Failure 05:05:15 Range: (16384 - 2147483647) 05:05:15 Actual: 0 05:05:15 Stack Trace: 05:05:15 Starting: System.Linq.Parallel.Tests 05:05:15 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 05:05:15 at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) 05:05:15 at System.IO.Pipes.Tests.NamedPipeTest_Specific.Unix_BufferSizeRoundtripping(PipeDirection direction) 05:05:15 ----- Inner Stack Trace ----- 05:05:15 at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) ``` +6960 area-Infrastructure HttpClient and WinHttpHandler tests failing on Windows due to FileLoadException "e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/123/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_windows_nt_debug/117/console http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_debug/120/consoleFull ``` 06:41:51 System.IO.FileLoadException: Could not load file or assembly 'System.Net.Primitives, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 06:41:51 d:\j\workspace\outerloop_win---0cba2915\Tools\tests.targets(130,5): warning MSB3073: The command ""d:\j\workspace\outerloop_win---0cba2915\bin/tests/Windows_NT.AnyCPU.Debug/System.Net.Http.WinHttpHandler.Functional.Tests/dnxcore50/CoreRun.exe xunit.console.netcore.exe System.Net.Http.WinHttpHandler.Functional.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait Benchmark=true -trait category=InnerLoop -trait category=OuterLoop -notrait category=failing "" exited with code 1. [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Http.WinHttpHandler\tests\FunctionalTests\System.Net.Http.WinHttpHandler.Functional.Tests.csproj] 06:41:51 d:\j\workspace\outerloop_win---0cba2915\Tools\tests.targets(137,5): error : One or more tests failed while running tests from 'System.Net.Http.WinHttpHandler.Functional.Tests' please check log for details! [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Http.WinHttpHandler\tests\FunctionalTests\System.Net.Http.WinHttpHandler.Functional.Tests.csproj] 06:41:53 System.Net.Http.WinHttpHandler.Unit.Tests -> d:\j\workspace\outerloop_win---0cba2915\bin\Windows_NT.AnyCPU.Debug\System.Net.Http.WinHttpHandler.Unit.Tests\System.Net.Http.WinHttpHandler.Unit.Tests.dll 06:41:54 xUnit.net console test runner (64-bit .NET Core) 06:41:54 Copyright (C) 2014 Outercurve Foundation. 06:41:54 06:41:54 Discovering: System.Net.Http.WinHttpHandler.Unit.Tests 06:41:54 System.IO.FileLoadException: Could not load file or assembly 'System.Net.Primitives, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 06:41:55 d:\j\workspace\outerloop_win---0cba2915\Tools\tests.targets(130,5): warning MSB3073: The command ""d:\j\workspace\outerloop_win---0cba2915\bin/tests/Windows_NT.AnyCPU.Debug/System.Net.Http.WinHttpHandler.Unit.Tests/dnxcore50/CoreRun.exe xunit.console.netcore.exe System.Net.Http.WinHttpHandler.Unit.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait Benchmark=true -trait category=InnerLoop -trait category=OuterLoop -notrait category=failing "" exited with code 1. [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Http.WinHttpHandler\tests\UnitTests\System.Net.Http.WinHttpHandler.Unit.Tests.csproj] 06:41:56 d:\j\workspace\outerloop_win---0cba2915\Tools\tests.targets(137,5): error : One or more tests failed while running tests from 'System.Net.Http.WinHttpHandler.Unit.Tests' please check log for details! [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Http.WinHttpHandler\tests\UnitTests\System.Net.Http.WinHttpHandler.Unit.Tests.csproj] 06:42:13 Finished: System.IO.FileSystem.Tests 06:42:13 06:42:13 === TEST EXECUTION SUMMARY === 06:42:13 System.IO.FileSystem.Tests Total: 89, Errors: 0, Failed: 0, Skipped: 0, Time: 61.993s 06:42:13 System.Net.Http -> d:\j\workspace\outerloop_win---0cba2915\bin\Windows_NT.AnyCPU.Debug\System.Net.Http\System.Net.Http.dll 06:42:15 xUnit.net console test runner (64-bit .NET Core) 06:42:15 Copyright (C) 2014 Outercurve Foundation. 06:42:15 06:42:15 Discovering: System.Composition.Tests 06:42:16 Discovered: System.Composition.Tests 06:42:16 Info: System.Composition.Tests has no tests to run 06:42:16 System.Net.Http.Functional.Tests -> d:\j\workspace\outerloop_win---0cba2915\bin\Windows_NT.AnyCPU.Debug\System.Net.Http.Functional.Tests\System.Net.Http.Functional.Tests.dll 06:42:16 xUnit.net console test runner (64-bit .NET Core) 06:42:16 Copyright (C) 2014 Outercurve Foundation. 06:42:16 06:42:16 Discovering: System.Net.Http.Functional.Tests 06:42:17 System.IO.FileLoadException: Could not load file or assembly 'System.Net.Primitives, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 06:42:17 d:\j\workspace\outerloop_win---0cba2915\Tools\tests.targets(130,5): warning MSB3073: The command ""d:\j\workspace\outerloop_win---0cba2915\bin/tests/Windows_NT.AnyCPU.Debug/System.Net.Http.Functional.Tests/dnxcore50/CoreRun.exe xunit.console.netcore.exe System.Net.Http.Functional.Tests.dll -xml testResults.xml -notrait category=nonwindowstests -notrait Benchmark=true -trait category=InnerLoop -trait category=OuterLoop -notrait category=failing "" exited with code 1. [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] 06:42:18 d:\j\workspace\outerloop_win---0cba2915\Tools\tests.targets(137,5): error : One or more tests failed while running tests from 'System.Net.Http.Functional.Tests' please check log for details! [d:\j\workspace\outerloop_win---0cba2915\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] ``` cc: @ericstj, @davidsh " +6962 area-System.ComponentModel Add custom collections used for TypeDescriptors This adds the AttributeCollection, PropertyDescriptorCollection, and EventDescriptorCollection that are needed in the TypeDescriptor methods. +6965 area-System.IO Add missing tests for System.IO Ports some ToF tests for System.IO and adds some new tests to cover gaps. resolves #6431 @stephentoub +6966 area-System.Collections Add missing tests for System.Collections Ports some ToF tests for System.Collections and adds some new tests to cover gaps. resolves #6809 @stephentoub +6973 area-Infrastructure "After correcting errors, clean.cmd still reports ""An error occured while cleaning""" "I had a file open in ildasm when I ran clean. After closing this, subsequent calls to clean worked but showed the same error. Console output: C:\GIT\CoreFX>clean.cmd Running init-tools.cmd Tools are already initialized. Running msbuild clean targets ""Clean"" ... C:\GIT\CoreFX\build.proj(98,5): error MSB3231: Unable to remove directory ""C:\GIT\CoreFX\bin/"". The process cannot access the file 'System.Xml.XDocument.Streaming.Tests.dll' because it is b eing used by another process. An error occured while cleaning; see C:\GIT\CoreFX\clean.log for more details. C:\GIT\CoreFX>clean.cmd Running init-tools.cmd Tools are already initialized. Running msbuild clean targets ""Clean"" ... An error occured while cleaning; see C:\GIT\CoreFX\clean.log for more details. " +6978 area-System.ComponentModel Add attribute types to System.ComponentModel This adds the types deriving from Attribute proposed in #6573. This also addresses #1053 and #5625. +6983 area-System.Net Make Unix domain socket path handling in Pipes more robust - Rather than hardcoding offsets and lengths related to the size of the native struct sockaddr_un's, get it from the native shim. This will help with future platform support. - With that info, allow the path to be as long as the platform will support, rather than capping it at a hardcoded value. - Throw a meaningful exception when too long a length is specified cc: @ianhays, @ericeil Related to https://github.com/dotnet/corefx/issues/6918 +6989 area-System.Net Kerberos sign only interop issue When kerberos is negotiated with Sign Only protection level from *nix client against a windows server, *nix client interprets the session flags as supported and hence always set CONFIDENTIALITY flag irrespective of the requested flags/protection level. This, in windows server which interprets the flags as required, causes the windows server to expect all further communication to be encrypted, which is not the case and hence server side processing fails. To override this behavior, starting MIT Kerberos 1.14 and heimdal implementation, we need to call gss_set_cred_option with GSS_KRB5_CRED_NO_CI_FLAGS_X. When not available, the windows server should fail in negotiating Sign Only. @stephentoub @bartonjs @vijaykota @kapilash @shrutigarg +6991 area-System.Net fixing bug in contextflag mapping Since ContextFlagsPal enum has AcceptIntegrity flag and InitIdentify flag with same value.. mapping of that to Native flag returns some invalid flag for a context. Values being same is not an issue as these flags are used in independent contexts. we will have to limit the mapping by reading whether it is server or client context. +6992 area-System.Net Query for the right proxy creds in HttpClient Both the WinHttp and libcurl implementations are using the target Uri to lookup the right proxy credentials rather than using the proxy's Uri. cc: @davidsh, @alpaix, @ericeil, @cipop, @kapilash +6994 area-Infrastructure All Unix test legs are stalling They appear to be hanging while in the Discovering phase of looking for xunit tests. +6997 area-System.Net WinHttpHandler needs to better handle proxy url when DefaultProxyCredentials used See discussion here: https://github.com/dotnet/corefx/pull/6992/files#r56524599 +6998 area-Meta Q: The legacy .NET System.Configuration.Provider namespace & system I'm not familiar with the new configuration system, but can it be used to perform the same functions that this legacy system does? I've been heavily using this system for 14 years now, and it works really well, but most people don't even know it exists, or how to use it. I have created several provider systems, with abstracted interfaces, creating a plug-n-play system for consumers. I've mostly used it for persistence where one consumer may use SQL Server, another may use Oracle, and another may use web services, etc., but it can be used for anything. It also works great for versioning support, where you may be required to support clients that require new data using an old data format. If the new configuration system doesn't support something like this, is there a way to do this in .NET Core? +6999 area-System.Net Where is httplistener? Is it renamed? Hi, I was checking dotnet and didn't find System.net.httplistener. Is it implemented? Is it renamed? Is it going to be implemented? -XDVarpunen +7002 area-System.IO FileSystemWatcher_Changed_PreSeededNestedStructure failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/3639/consoleFull ``` 13:15:04 ChangedTests.FileSystemWatcher_Changed_PreSeededNestedStructure(includeSubdirectories: False) [FAIL] 13:15:05 System.UnauthorizedAccessException : Access to the path '\\?\d:\j\workspace\windows_nt_de---06b7984d\bin\tests\Windows_NT.AnyCPU.Debug\System.IO.FileSystem.Watcher.Tests\dnxcore50\FileSystemWatcher_Changed_PreSeededNestedStructure' is denied. 13:15:05 Stack Trace: 13:15:05 at System.IO.Win32FileSystem.RemoveDirectoryHelper(String fullPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) 13:15:05 at System.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) 13:15:05 d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.FileSystem.Watcher\tests\Utility\Utility.cs(60,0): at Utility.EnsureDelete(String path) 13:15:05 d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.FileSystem.Watcher\tests\Utility\TemporaryTestDirectory.cs(40,0): at TemporaryTestDirectory.Dispose(Boolean disposing) 13:15:05 d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.FileSystem.Watcher\tests\Utility\TemporaryTestDirectory.cs(32,0): at TemporaryTestDirectory.Dispose() 13:15:05 d:\j\workspace\windows_nt_de---06b7984d\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.Changed.cs(192,0): at ChangedTests.FileSystemWatcher_Changed_PreSeededNestedStructure(Boolean includeSubdirectories) ``` +7010 area-Infrastructure Update tool-runtime project.json to reflect debian.8 RID When we are ready to update the tool-runtime, ensure the project.json RID is updated debian.8.2 => debian.8 +7011 area-Infrastructure Build packages outside of build.cmd/sh - [x] Build packages as a separate task of build.cmd with an build-packages.cmd script - [x] Build packages as a separate task of build.sh with an build-packages.sh script +7012 area-System.Runtime DateTimeOffset.ToString Returns Different Value between Desktop and CoreFx "Please see the following example, ``` csharp string format = ""HH:mm:ss.fffffffzzzzzz""; DateTime time = new DateTime(549269870000L, DateTimeKind.Local); DateTimeOffset offset = DateTime.MinValue + time.TimeOfDay; string offsetString = offset.ToString(format, DateTimeFormatInfo.InvariantInfo); string timeString = time.ToString(format); Assert.Equal(timeString, offsetString); ``` On desktop, timeString equals offsetString; but on CoreFx, they are not equal. Note that this issue seems related to Daylight Save Time change. The assert succeeded last week before the DST change. The issue is blocking https://github.com/dotnet/corefx/pull/6762. " +7021 area-System.IO AnonymousPipeTest_Specific.ClonedServer_ActsAsOriginalServer sporadically failing in CI ``` 06:02:14 System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ClonedServer_ActsAsOriginalServer [FAIL] 06:02:14 Assert+WrapperXunitException : File path: d:\j\workspace\debian8.2_deb---3bf9911c\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Specific.cs. Line: 54 06:02:14 ---- Assert.Throws() Failure 06:02:14 Expected: typeof(System.IO.IOException) 06:02:14 Actual: (No exception was thrown) 06:02:14 Stack Trace: 06:02:15 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 06:02:15 at Assert.Throws[T](Action testCode, String path, Int32 line) 06:02:15 at System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ClonedServer_ActsAsOriginalServer() 06:02:15 ----- Inner Stack Trace ----- 06:02:15 at Assert.Throws[T](Action testCode, String path, Int32 line) ``` +7023 area-System.Security Support AES-GCM Currently I am using AuthenticatedAesCng in [Security.Cryptography.dll](https://clrsecurity.codeplex.com/) for AES-GCM encryption and decryption in a .NET application. I would like to have it added to CoreFX. +7026 area-System.Security Easier CngKey extraction from X509Certificate/X509Certificate2 Please provide methods in X509Certificate/X509Certificate2 or extension methods for easier CngKey extraction from X509Certificate/X509Certificate2.There should be at least 2 methods -- one for public key and another for private key. +7027 area-System.Net Make UriBuilder.Fragment setter idempotent Similar to #6926, but for UriBuilder.Fragment. This is a breaking change, but I noticed that if the PR above was merged, this made sense /cc @stephentoub +7031 area-System.Net Incorporate PR Feedback - Code Cleanup in NegotiateStream "The following comments were made in #6469 and need to be incorporated into negotiatestream ~~_1_. [One to one mapping with native calls and Interop.*.cs files](https://github.com/dotnet/corefx/pull/6469#discussion_r56656680)~~ This is a lot of code being added to the Interop.*.cs files. Typically we've kept these as close to 1:1 with the underlying operation being wrapped as possible, typiclaly just the P/Invoke signature or maybe a 1-2 line wrapper if necessary, and then all of this additional logic ends up living in the consuming code. ~~_2_. [Split up safefreecredentials](https://github.com/dotnet/corefx/pull/6469#discussion_r56659315) As post-merge cleanup this file should probably be split up (now that this base class applies to two different libraries' interop). And since libssl is the last lib\* directory left in Interop, that could be cleaned up at the same time.~~ ~~_3_. [Fix up boiler plate code in KerberosTest.cs](https://github.com/dotnet/corefx/pull/6469#discussion_r56673383) I honestly can't figure out how each of these tests is different... it'd be great to factor out boilerplate and leave each test showing the kernel of what it's testing.~~ (fixed in #7317) ~~_4_. [Non-SafeHandle SafeHandles to be refactored out](https://github.com/dotnet/corefx/pull/6469#discussion_r56658414) Some of the safehandles in PAL are not really safe handles. These need to reworked.~~ > Not today, but one day it would give me a warm and fuzzy feeling if the PAL was reworked to not require non-SafeHandle SafeHandles be created. ~~_5_. [A compile time constant for the size of OID lengths](https://github.com/dotnet/corefx/pull/6469#discussion_r56660671)~~ The following code has /magic/ value of 6. ``` gss_OID_desc gss_mech_spnego_OID_desc = {.length = 6, .elements = static_cast(gss_spnego_oid_value)}; ``` ~~_6_. [Debug only constructor with an assert for size](https://github.com/dotnet/corefx/pull/6469#discussion_r56661993)~~ (fixed in #7317) ``` private const int StatusDictionarySize = 39; #if DEBUG static SecurityStatusAdapterPal() { Debug.Assert(s_statusDictionary.Count == StatusDictionarySize, $""Expected size {StatusDictionarySize}, got size {s_statusDictionary.Count}""); } #endif private static readonly ... = new BidirectionDictionary<...>(StatusDictionarySize); ``` " +7034 area-System.ComponentModel Expose MemberDescriptor in ComponentModel This exposes all the members in MemberDescriptor and updates PropertyDescriptor and EventDescriptor to derive from it. This also exposes a few methods in TypeDescriptor that are necessary for these types, but leaves the implementation empty (or throw NotImplementedException). @chlowell +7035 area-Infrastructure Outerloop Ubuntu build failing with GenAPI errors "``` /mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/Tools/notsupported.targets(50,5): error MSB3073: The command """"/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/Tools/corerun"" ""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/Tools/GenAPI.exe"" ""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/bin/ref/Microsoft.Win32.Registry.AccessControl/4.0.0.0/Microsoft.Win32.Registry.AccessControl.dll"" -libPath:""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/Microsoft.Win32.Registry/4.0.0-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Globalization/4.0.11-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.IO/4.0.10/ref/dotnet/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Reflection/4.1.0-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Reflection.Primitives/4.0.1-rc3-23910/ref/netstandard1.0/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Resources.ResourceManager/4.0.0/ref/dotnet/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Runtime/4.0.20/ref/dotnet/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Runtime.Handles/4.0.0/ref/dotnet/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Runtime.InteropServices/4.0.20/ref/dotnet/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Security.AccessControl/4.0.0-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Security.Claims/4.0.1-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Security.Principal/4.0.1-rc3-23910/ref/netstandard1.0/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Security.Principal.Windows/4.0.0-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Text.Encoding/4.0.11-rc3-23910/ref/netstandard1.3/;/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages/System.Threading.Tasks/4.0.11-rc3-23910/ref/netstandard1.3/"" -out:""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/bin/obj/Unix.AnyCPU.Debug/Microsoft.Win32.Registry.AccessControl/Microsoft.Win32.Registry.AccessControl.notsupported.cs"" -throw"" exited with code -1. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj] ``` " +7036 area-System.Net WebUtility.UrlDecode fails to make a round-trip for surrogate characters "Discovered this while adding some tests for `WebUtility`. This prints `False`: ``` csharp string value = ""\uD800""; string input = WebUtility.UrlEncode(value); string output = WebUtility.UrlDecode(input); Console.WriteLine(output == value); ``` Here's a console program on [.NET Fiddle](https://dotnetfiddle.net/DRBu6a) to demonstrate this so you can see it for yourself. cc @davidsh @stephentoub " +7037 area-System.Net WebRequest.DefaultWebProxy not compatible with HttpClient "If I have the following HttpClient: ``` var handler = new HttpClientHandler(); handler.UseDefaultCredentials = true; handler.Proxy = WebRequest.DefaultWebProxy; var client = new HttpClient(handler); client.DefaultRequestHeaders.TryAddWithoutValidation(""User-Agent"", ""Mozilla/5.0 Bla"") ``` The first time I use this client (with `client.GetAsync(""http://www.nuget.org/api/v2"")`), I will get back the correct result. However, if I reuse the client, I will get an exception: ``` System.PlatformNotSupportedException: Operation is not supported on this platform. at System.Net.SystemWebProxy.IsBypassed(Uri host) at System.Net.Http.WinHttpHandler.SetRequestHandleProxyOptions(RequestState state) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(RequestState state) at System.Net.Http.WinHttpHandler.d__1.MoveNext() ``` Is this a bug on CoreClr? Do I have to create new instance of HttpClient everytime? " +7038 area-Infrastructure System.IO.FileLoadException: Could not load file or assembly 'System.Collections.Concurrent, Version=4.0.12.0 Trying to use the rc2-23918 libraries, when I try to run `dotnet test`, I get the following: ``` C:\users\oren\source\git\reactive-extensions-private\Rx.NET\Source\Tests.System.Reactive [dotnet-cli ≡ +0 ~9 -0 !]> dotnet test Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Collections.Concurrent, Version=4.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Xunit.Runner.DotNet.Program..ctor() at Xunit.Runner.DotNet.Program.Main(String[] args) ``` Here's the project.lock.json for it: https://gist.github.com/onovotny/8fe9a08ed4d8d7f7f0fb +7042 area-System.Net Cleanup and add extensive WebUtility tests This follows up on #6698 by adding extensive testing based on the failures encountered in that PR. Primarily, it adds tests for surrogate characters, and makes sure spaces are properly en/decoded in the `ToBytes` methods. Additional changes: - Test data sharing between regular `UrlEncode`/`Decode` and the `byte[]`-based methods - Replace magic string usage in `MemberData` with `nameof` - Added comments to the code to separate it into different regions - Added tests to make sure the `ToBytes` methods always return a new array - Added, but commented out regression tests for #6947 (uncomment once that issue is resolved) cc @davidsh @stephentoub @JonHanna +7043 area-Serialization System.Runtime.Serialization.Xml broken "I can't seem to use System.Runtime.Serialization.Xml and NETStandard.Library. (This was really hard to track down.) When combined with NETStandard.Library 1.5.0-rc3-23918 like so: ``` json { ""name"": ""repro"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""frameworks"": { ""netstandardapp1.5"": { ""dependencies"": { ""System.Runtime.Serialization.Xml"": ""4.1.1-rc3-23918"", ""NETStandard.Library"": ""1.5.0-rc3-23918"" } } }, ""runtimes"": { ""ubuntu.14.04-x64"": { }, ""centos.7.1-x64"": { }, ""win7-x64"": { }, ""win10-x64"": { }, ""osx.10.10-x64"": { }, ""osx.10.11-x64"": { } } } ``` A very confusing error about System.Reflection.TypeExtensions occurs: ``` sh $ dotnet restore log : Restoring packages for /home/andrew/src/scratch/project.json... error: System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run$ error: Some packages are not compatible with .NETStandardApp,Version=v1.5 (centos.7.1-x64). error: System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run$ error: Some packages are not compatible with .NETStandardApp,Version=v1.5 (osx.10.10-x64). error: System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run$ error: Some packages are not compatible with .NETStandardApp,Version=v1.5 (osx.10.11-x64). error: System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run$ error: Some packages are not compatible with .NETStandardApp,Version=v1.5 (ubuntu.14.04-x64). error: System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run$ error: Some packages are not compatible with .NETStandardApp,Version=v1.5 (win10-x64). error: System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run$ error: Some packages are not compatible with .NETStandardApp,Version=v1.5 (win7-x64). info : Committing restore... log : /home/andrew/src/scratch/project.json log : Restore failed in 767ms. Errors in /home/andrew/src/scratch/project.json System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run-ti$ Some packages are not compatible with .NETStandardApp,Version=v1.5 (centos.7.1-x64). System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run-ti$ Some packages are not compatible with .NETStandardApp,Version=v1.5 (osx.10.10-x64). System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run-ti$ Some packages are not compatible with .NETStandardApp,Version=v1.5 (osx.10.11-x64). System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run-ti$ Some packages are not compatible with .NETStandardApp,Version=v1.5 (ubuntu.14.04-x64). System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run-ti$ Some packages are not compatible with .NETStandardApp,Version=v1.5 (win10-x64). System.Reflection.TypeExtensions 4.1.0-rc3-23918 provides a compile-time reference assembly for System.Reflection.TypeExtensions on .NETStandardApp,Version=v1.5, but there is no run-ti$ Some packages are not compatible with .NETStandardApp,Version=v1.5 (win7-x64). NuGet Config files used: /home/andrew/src/scratch/nuget.config /home/andrew/.nuget/NuGet/NuGet.Config Feeds used: https://www.myget.org/F/dotnet-core/api/v3/index.json https://dotnet.myget.org/F/cli-deps/api/v3/index.json https://api.nuget.org/v3/index.json /home/andrew/src/scratch/./src/windows-build/nuget-feed ``` " +7047 area-System.Security Cannot build System.Cryptography.(Cng|Csp).Tests projects I can't build projects System.Security.Cryptography.Cng.Tests and System.Security.Cryptography.Csp.Tests in msbuild or VS. In System.Security.Cryptography.Cng.Tests, I get these errors: > TestData.cs(35,32): error CS0246: The type or namespace name 'CngKey' could not be found (are you missing a using directive or an assembly reference?) > TestData.cs(41,32): error CS0246: The type or namespace name 'CngKey' could not be found (are you missing a using directive or an assembly reference?) > TestData.cs(55,32): error CS0246: The type or namespace name 'CngKey' could not be found (are you missing a using directive or an assembly reference?) In System.Security.Cryptography.Csp.Tests, the errors are similar: > RSACryptoServiceProviderTests.cs(275,30): error CS0246: The type or namespace name 'CspParameters' could not be found (are you missing a using directive or an assembly reference?) > RSACryptoServiceProviderTests.cs(277,37): error CS0246: The type or namespace name 'CspParameters' could not be found (are you missing a using directive or an assembly reference?) In both cases, it looks like some issue with referencing the tested project. +7058 area-System.IO FileSystem tests broken with recent Path changes /cc @JeremyKuhne your change https://github.com/dotnet/corefx/commit/b37b8035c1d693f491545a53b701fe7a01df312e has caused a number of failures in the FileSystem tests. I hit these when upgrading the packages and was able to isolate it to System.Runtime.Extensions.dll by patching the assembly back to the old version to fix the errors: ``` System.IO.Tests.DirectoryInfo_Create.PathWithInvalidCharactersAsPath_ThrowsArgumentException [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '\\?\UNC\LOCALHOST'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 147 at System.IO.DirectoryInfo.Create() in E:\corefx\src\System.IO.FileSystem\src\System\IO\DirectoryInfo.cs:line 102 at System.IO.Tests.DirectoryInfo_Create.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\DirectoryInfo\Create.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) [4]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '\\?\UNC\'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 147 at System.IO.DirectoryInfo.Create() in E:\corefx\src\System.IO.FileSystem\src\System\IO\DirectoryInfo.cs:line 102 at System.IO.Tests.DirectoryInfo_Create.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\DirectoryInfo\Create.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) [3]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The specified path is invalid at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 154 at System.IO.DirectoryInfo.Create() in E:\corefx\src\System.IO.FileSystem\src\System\IO\DirectoryInfo.cs:line 102 at System.IO.Tests.DirectoryInfo_Create.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\DirectoryInfo\Create.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) Stack Trace: E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs(39,0): at System.IO.Tests.Directory_CreateDirectory.PathWithInvalidCharactersAsPath_ThrowsArgumentException() System.IO.Tests.FileInfo_MoveTo.PathWithIllegalCharacters [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The specified path is invalid at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.FileInfo.MoveTo(String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\FileInfo.cs:line 284 at System.IO.Tests.FileInfo_MoveTo.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\FileInfo\MoveTo.cs:line 13 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) [4]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The filename, directory name, or volume label syntax is incorrect at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.FileInfo.MoveTo(String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\FileInfo.cs:line 284 at System.IO.Tests.FileInfo_MoveTo.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\FileInfo\MoveTo.cs:line 13 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) [3]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The filename, directory name, or volume label syntax is incorrect at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.FileInfo.MoveTo(String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\FileInfo.cs:line 284 at System.IO.Tests.FileInfo_MoveTo.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\FileInfo\MoveTo.cs:line 13 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) Stack Trace: E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs(51,0): at System.IO.Tests.File_Move.PathWithIllegalCharacters() System.IO.Tests.File_Move.PathWithIllegalCharacters [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The specified path is invalid at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.File.Move(String sourceFileName, String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\File.cs:line 698 at System.IO.Tests.File_Move.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 15 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) [4]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The filename, directory name, or volume label syntax is incorrect at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.File.Move(String sourceFileName, String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\File.cs:line 698 at System.IO.Tests.File_Move.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 15 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) [3]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The filename, directory name, or volume label syntax is incorrect at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 430 at System.IO.File.Move(String sourceFileName, String destFileName) in E:\corefx\src\System.IO.FileSystem\src\System\IO\File.cs:line 698 at System.IO.Tests.File_Move.Move(String sourceFile, String destFile) in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 15 at System.IO.Tests.File_Move.<>c__DisplayClass4_1.b__1() in E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs:line 53 at Xunit.Assert.RecordException(Action testCode) Stack Trace: E:\corefx\src\System.IO.FileSystem\tests\File\Move.cs(51,0): at System.IO.Tests.File_Move.PathWithIllegalCharacters() System.IO.Tests.Directory_CreateDirectory.PathWithInvalidCharactersAsPath_ThrowsArgumentException [FAIL] Assert.All() Failure: 3 out of 44 items in the collection did not pass. [5]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '\\?\UNC\LOCALHOST'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 147 at System.IO.Directory.CreateDirectory(String path) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 50 at System.IO.Tests.Directory_CreateDirectory.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) [4]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '\\?\UNC\'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 147 at System.IO.Directory.CreateDirectory(String path) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 50 at System.IO.Tests.Directory_CreateDirectory.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) [3]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.IOException): The specified path is invalid at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 154 at System.IO.Directory.CreateDirectory(String path) in E:\corefx\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 50 at System.IO.Tests.Directory_CreateDirectory.Create(String path) in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 16 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass3_0.b__1() in E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 41 at Xunit.Assert.RecordException(Func`1 testCode) Stack Trace: E:\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs(39,0): at System.IO.Tests.Directory_CreateDirectory.PathWithInvalidCharactersAsPath_ThrowsArgumentException() ``` +7060 area-System.Net Implement several certificate properties on CurlHandler Adds implementations to CurlHandler for: - ClientCertificates - ServerCertificateValidationCallback - CheckCertificateRevocationList I've explicitly not added these to the contract, as we're not ready for that yet on other platforms, and I've not added tests (though I've done some testing manually, such as verifying that I could run tweaked versions of the WinHttp server callback tests against this successfully). This is about being able to easy expose them in the contract for HttpClientHandler, hopefully in the near future. cc: @bartonjs, @ericeil, @davidsh, @SidharthNabar, @joshfree, @kapilash Related to https://github.com/dotnet/corefx/issues/4476, https://github.com/dotnet/corefx/issues/4120, and https://github.com/dotnet/corefx/issues/4479 +7061 area-Infrastructure LoadInDefaultContext failing in CI on Windows outerloop http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win10_debug/128/consoleFull ``` 12:24:22 System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext [FAIL] 12:24:22 System.IO.FileNotFoundException : Could not load file or assembly 'System.Runtime.Loader.Noop.Assembly, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. 12:24:22 Stack Trace: 12:24:22 at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 12:24:22 at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 12:24:22 at System.Reflection.Assembly.Load(AssemblyName assemblyRef) 12:24:22 d:\j\workspace\outerloop_win---0cba2915\src\System.Runtime.Loader\tests\DefaultContext\DefaultLoadContextTest.cs(73,0): at System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext() 12:24:22 Finished: System.Runtime.Loader.DefaultContext.Tests 12:24:22 12:24:22 === TEST EXECUTION SUMMARY === 12:24:22 System.Runtime.Loader.DefaultContext.Tests Total: 2, Errors: 0, Failed: 1, Skipped: 0, Time: 0.439s ``` +7062 area-Infrastructure Package restore failures in outerloop on Ubuntu "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_debug/38/consoleFull ``` 11:03:57 [18:04:10.16] Restoring all packages... 11:04:39 EXEC : error : System.Threading.Overlapped 4.0.1-rc3-23918 provides a compile-time reference assembly for System.Threading.Overlapped on DNXCore,Version=v5.0, but there is no run-time assembly compatible with ubuntu.14.04-x64. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] 11:04:39 EXEC : error : Some packages are not compatible with DNXCore,Version=v5.0 (ubuntu.14.04-x64). [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] 11:04:48 EXEC : error : System.Runtime.Extensions 4.0.0 provides a compile-time reference assembly for System.Runtime.Extensions on .NETCore,Version=v5.0, but there is no run-time assembly compatible with ubuntu.14.04-x64. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] 11:04:48 EXEC : error : Some packages are not compatible with .NETCore,Version=v5.0 (ubuntu.14.04-x64). [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] 11:05:01 EXEC : error : System.Runtime.Extensions 4.0.0 provides a compile-time reference assembly for System.Runtime.Extensions on .NETCore,Version=v5.0, but there is no run-time assembly compatible with ubuntu.14.04-x64. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] 11:05:01 EXEC : error : Some packages are not compatible with .NETCore,Version=v5.0 (ubuntu.14.04-x64). [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj] 11:05:38 /mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/build.proj(60,5): error MSB3073: The command """"/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/Tools/dotnetcli/bin/dotnet"" restore --packages ""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ ""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/src"" ""/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/pkg"""" exited with code -1. 11:05:38 [18:05:51.34] Restoring all packages...Done. ``` " +7063 area-System.Net NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_rhel7.2_debug_tst/19/consoleFull ``` 11:42:15 System.Net.Security.Tests.KerberosTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success [FAIL] 11:42:15 The second message received is as expected 11:42:15 Expected: True 11:42:15 Actual: False 11:42:15 Stack Trace: 11:42:15 at System.Net.Security.Tests.KerberosTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success() 11:42:19 Finished: System.Net.Security.Tests 11:42:19 11:42:19 === TEST EXECUTION SUMMARY === 11:42:19 System.Net.Security.Tests Total: 106, Errors: 0, Failed: 1, Skipped: 0, Time: 9.625s ``` +7064 area-System.Net Ping tests failing in outerloop on Unix In several outer loop runs, e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_rhel7.2_release_tst/19/console many of the ping tests are failing with errors like: ``` 11:53:26 System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix [FAIL] 11:53:26 System.Net.Sockets.SocketException : Invalid argument 11:53:26 Stack Trace: 11:53:26 at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) 11:53:26 at System.Net.NetworkInformation.Ping.d__34.MoveNext() 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 11:53:26 at System.Net.NetworkInformation.Ping.d__33.MoveNext() 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 11:53:26 at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 11:53:26 at System.Net.NetworkInformation.Tests.PingTest.d__8.MoveNext() 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 System.Net.NetworkInformation.Tests.PingTest.Ping_DisposeAfterSend_Success [FAIL] 11:53:26 System.Diagnostics.Debug+DebugAssertException : Invalid status: 0 11:53:26 11:53:26 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 11:53:26 at System.Environment.get_StackTrace() 11:53:26 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 11:53:26 at System.Net.NetworkInformation.Ping.Finish() 11:53:26 at System.Net.NetworkInformation.Ping.d__25.MoveNext() 11:53:26 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:53:26 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run() 11:53:26 at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(Action action, Boolean allowInlining, Task& currentTask) 11:53:26 at System.Threading.Tasks.Task.FinishContinuations() 11:53:26 at System.Threading.Tasks.Task`1.TrySetResult(TResult result) 11:53:26 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 11:53:26 at System.Net.LazyAsyncResult.Complete(IntPtr userToken) 11:53:26 at System.Net.ContextAwareResult.CompleteCallback() 11:53:26 at System.Net.ContextAwareResult.<>c.b__17_0(Object s) 11:53:26 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:53:26 at System.Net.ContextAwareResult.Complete(IntPtr userToken) 11:53:26 at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) 11:53:26 at System.Net.LazyAsyncResult.InvokeCallback(Object result) 11:53:26 at System.Net.Dns.ResolveCallback(Object context) 11:53:26 at System.Net.Dns.<>c.b__6_0(Object s) 11:53:26 at System.Threading.Tasks.Task.Execute() 11:53:26 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 11:53:26 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 11:53:26 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 11:53:26 at System.Threading.ThreadPoolWorkQueue.Dispatch() 11:53:26 Stack Trace: 11:53:26 at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) 11:53:26 at System.Net.NetworkInformation.Ping.Finish() 11:53:26 at System.Net.NetworkInformation.Ping.d__25.MoveNext() 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 11:53:26 at System.Net.NetworkInformation.Tests.PingTest.d__16.MoveNext() 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 11:53:26 --- End of stack trace from previous location where exception was thrown --- 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 11:53:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +7072 area-System.Collections Add performance tests for all collections I see performance tests for only List and SortedDictionary at the moment in the System.Collections solution.. Given that the collections are probably one of the most exercised body of code in the entire .Net Framework I expect that it be treated as a performance critical body of code and therefore have a complete suite of performance tests. +7077 area-System.IO Remove work around from pipes tests Once we upgrade packages we can remove the workaround from https://github.com/dotnet/corefx/pull/7074 +7079 area-Infrastructure Dependency conflict warning from buildtools on clean build ``` corefx>git clean -xdf corefx>build.cmd Installing dotnet cli... Restoring BuildTools version 1.0.25-prerelease-00208... Initializing BuildTools ... c:\Users\stoub\Source\repos\corefx\packages\Microsoft.DotNet.BuildTools\1.0.25-prerelease-00208\lib\tool-runtime\project.json(37,37): warning NU1012: Dependency conflict. Microsoft.Build 0.1.0-preview-00017 expected System.Diagnostics.Contracts >= 4.0.1-rc2-23712 but got 4.0.0 c:\Users\stoub\Source\repos\corefx\packages\Microsoft.DotNet.BuildTools\1.0.25-prerelease-00208\lib\tool-runtime\project.json(37,37): warning NU1012: Dependency conflict. Microsoft.NETCore.Console 1.0.0-rc2-23907 expected System.Diagnostics.Contracts >= 4.0.1-rc2-23907 but got 4.0.0 ``` cc: @weshaggard, @ericstj +7080 area-Infrastructure Lots of packaging build warnings on clean build Clean build on Windows produces the following warnings: ``` c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.rhel.7-x64.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.IO.C ompression.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\rhel\runtime.native.System.IO.Compression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.debian.8-x64.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.IO .Compression.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\debian\runtime.native.System.IO.Compression.pkgp roj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.ubuntu.14.04-x64.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\Syste m.IO.Compression.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\ubuntu\runtime.native.System.IO.Compression. pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.osx.10.10-x64.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.I O.Compression.Native.dylib [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\osx\runtime.native.System.IO.Compression.pkg proj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win7-x86.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\clrcompressi on.dll [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\win7\runtime.native.System.IO.Compression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win7-x64.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\clrcompressi on.dll [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\win7\runtime.native.System.IO.Compression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win7-arm.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\clrcompressi on.dll [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\win7\runtime.native.System.IO.Compression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win10-x86.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\..\..\NetCor eForCoreCLR\native\clrcompression.dll [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\win10\runtime.native.System.IO.Co mpression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win10-x64.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\..\..\NetCor eForCoreCLR\native\clrcompression.dll [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\win10\runtime.native.System.IO.Co mpression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win10-arm.runtime.native.System.IO.Compression.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\..\..\NetCor eForCoreCLR\native\clrcompression.dll [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.IO.Compression\win10\runtime.native.System.IO.Co mpression.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.rhel.7-x64.runtime.native.System.Net.Http.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Net.Http.N ative.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Http\rhel\runtime.native.System.Net.Http.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.debian.8-x64.runtime.native.System.Net.Http.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Net.Http .Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Http\debian\runtime.native.System.Net.Http.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.ubuntu.14.04-x64.runtime.native.System.Net.Http.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Net. Http.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Http\ubuntu\runtime.native.System.Net.Http.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.osx.10.10-x64.runtime.native.System.Net.Http.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Net.Htt p.Native.dylib [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Http\osx\runtime.native.System.Net.Http.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.rhel.7-x64.runtime.native.System.Net.Security.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\System.Net.S ecurity.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Security\rhel\runtime.native.System.Net.Security.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.win7-x64.runtime.native.System.Data.SqlClient.sni.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\sni.dll [ c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Data.SqlClient.sni\win\runtime.native.System.Data.SqlClient.sni.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.debian.8-x64.runtime.native.System.Net.Security.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\System.Net .Security.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Security\debian\runtime.native.System.Net.Security.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.ubuntu.14.04-x64.runtime.native.System.Net.Security.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\System .Net.Security.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Security\ubuntu\runtime.native.System.Net.Security.pkgproj ] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.osx.10.10-x64.runtime.native.System.Net.Security.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\\System.Ne t.Security.Native.dylib [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Net.Security\osx\runtime.native.System.Net.Security.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.rhel.7-x64.runtime.native.System.Security.Cryptography.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\Syst em.Security.Cryptography.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Security.Cryptography\rhel\runtime.native.System.Se curity.Cryptography.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.debian.8-x64.runtime.native.System.Security.Cryptography.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\Sy stem.Security.Cryptography.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Security.Cryptography\debian\runtime.native.Syste m.Security.Cryptography.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/nativ e\System.Security.Cryptography.Native.so [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Security.Cryptography\ubuntu\runtime.native.S ystem.Security.Cryptography.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.osx.10.10-x64.runtime.native.System.Security.Cryptography.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\S ystem.Security.Cryptography.Native.dylib [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System.Security.Cryptography\osx\runtime.native.Syst em.Security.Cryptography.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.rhel.7-x64.runtime.native.System.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Native.so;c:\Users\ stoub\Source\repos\corefx\bin/native\System.Native.a [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System\rhel\runtime.native.System.pkgpro j] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.ubuntu.14.04-x64.runtime.native.System.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Native.so;c:\ Users\stoub\Source\repos\corefx\bin/native\System.Native.a [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System\ubuntu\runtime.native.Syste m.pkgproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.debian.8-x64.runtime.native.System.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Native.so;c:\User s\stoub\Source\repos\corefx\bin/native\System.Native.a [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System\debian\runtime.native.System.pk gproj] c:\Users\stoub\Source\repos\corefx\Tools\Packaging.targets(893,5): warning : Skipping package creation for c:\Users\stoub\Source\repos\corefx\bin/pkg/specs/run time.osx.10.10-x64.runtime.native.System.nuspec because the following files do not exist: c:\Users\stoub\Source\repos\corefx\bin/native\System.Native.dylib;c:\ Users\stoub\Source\repos\corefx\bin/native\System.Native.a [c:\Users\stoub\Source\repos\corefx\src\Native\pkg\runtime.native.System\osx\runtime.native.System.p kgproj] ``` cc: @chcosta, @ericstj, @weshaggard +7081 area-Infrastructure Outerloop Unix runs using stale native shims Outerloop runs are currently failing on Unix with hundreds of failures due to System.Native.so missing some entrypoints that were added at the same time consumers of those entrypoints were added to the managed assemblies, e.g. System.IO.Pipes.dll consuming SystemNative_GetDomainSocketSizes. +7082 area-System.Console WindowAndCursorProps.Title test fails on Win7 ``` 14:19:45 WindowAndCursorProps.Title [FAIL] 14:19:45 Assert+WrapperXunitException : File path: d:\j\workspace\outerloop_win---9c9e7d59\src\System.Console\tests\WindowAndCursorProps.cs. Line: 121 14:19:45 ---- Assert.Equal() Failure 14:19:45  (pos 511) 14:19:45 Expected: úúúaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaúúú 14:19:45 Actual: úúúaaaaaaaaaaaaaaaaaaaa 14:19:45  (pos 511) 14:19:45 Stack Trace: 14:19:45 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 14:19:45 at Assert.Equal(String expected, String actual, String path, Int32 line) 14:19:45 at WindowAndCursorProps.Title() 14:19:45 ----- Inner Stack Trace ----- 14:19:45 at Assert.Equal(String expected, String actual, String path, Int32 line) ``` +7083 area-System.Diagnostics ProcessTests.TestSessionId fails on Win 7 ``` 14:19:57 System.Diagnostics.Tests.ProcessTests.TestSessionId [FAIL] 14:19:57 System.EntryPointNotFoundException : Unable to find an entry point named 'ProcessIdToSessionId' in DLL 'api-ms-win-core-processthreads-l1-1-2.dll'. 14:19:57 Stack Trace: 14:19:57 at System.Diagnostics.Tests.Interop.ProcessIdToSessionId(UInt32 dwProcessId, UInt32& pSessionId) 14:19:57 at System.Diagnostics.Tests.ProcessTests.TestSessionId() ``` +7084 area-System.Globalization 11 globalization tests failing on Win 7 "``` 14:20:11 Starting: System.Globalization.Tests 14:20:12 System.Globalization.Tests.DateTimeFormatInfoCalendarWeekRule.CalendarWeekRuleTest(format: DateTimeFormatInfo { AbbreviatedDayNames = [""Sul"", ""Lun"", ""Meu."", ""Mer."", ""Yaou"", ...], AbbreviatedMonthGenitiveNames = [""Gen."", ""C'hwe."", ""Meur."", ""Ebr."", ""Mae"", ...], AbbreviatedMonthNames = [""Gen."", ""C'hwe."", ""Meur."", ""Ebr."", ""Mae"", ...], AMDesignator = """", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... }, expected: FirstFullWeek) [FAIL] 14:20:13 Assert.Equal() Failure 14:20:13 Expected: FirstFullWeek 14:20:13 Actual: FirstDay 14:20:13 Stack Trace: 14:20:13 at System.Globalization.Tests.DateTimeFormatInfoCalendarWeekRule.CalendarWeekRuleTest(DateTimeFormatInfo format, CalendarWeekRule expected) 14:20:13 TextInfoTests.ToUpper(localeName: """") [FAIL] 14:20:14 System.Globalization.Extensions.Tests -> d:\j\workspace\outerloop_win---9c9e7d59\bin\Windows_NT.AnyCPU.Debug\System.Globalization.Extensions.Tests\System.Globalization.Extensions.Tests.dll 14:20:14 Assert.Equal() Failure 14:20:14  (pos 1) 14:20:14 Expected: ?? 14:20:14 Actual: ?? 14:20:14  (pos 1) 14:20:14 Stack Trace: 14:20:14 at TextInfoTests.ToUpper(String localeName) 14:20:14 TextInfoTests.ToUpper(localeName: ""en-US"") [FAIL] 14:20:14 Assert.Equal() Failure 14:20:14  (pos 1) 14:20:14 Expected: ?? 14:20:14 Actual: ?? 14:20:14  (pos 1) 14:20:14 Stack Trace: 14:20:14 at TextInfoTests.ToUpper(String localeName) 14:20:14 TextInfoTests.ToUpper(localeName: ""fr"") [FAIL] 14:20:14 Assert.Equal() Failure 14:20:14  (pos 1) 14:20:14 Expected: ?? 14:20:14 Actual: ?? 14:20:14  (pos 1) 14:20:14 Stack Trace: 14:20:14 at TextInfoTests.ToUpper(String localeName) 14:20:14 TextInfoTests.ToLower(localeName: """") [FAIL] 14:20:14 Assert.Equal() Failure 14:20:14  (pos 1) 14:20:14 Expected: ?? 14:20:14 Actual: ?? 14:20:14  (pos 1) 14:20:14 Stack Trace: 14:20:14 at TextInfoTests.ToLower(String localeName) 14:20:14 TextInfoTests.ToLower(localeName: ""en-US"") [FAIL] 14:20:14 Assert.Equal() Failure 14:20:14  (pos 1) 14:20:14 Expected: ?? 14:20:14 Actual: ?? 14:20:14  (pos 1) 14:20:14 Stack Trace: 14:20:14 at TextInfoTests.ToLower(String localeName) 14:20:14 TextInfoTests.ToLower(localeName: ""fr"") [FAIL] 14:20:14 Assert.Equal() Failure 14:20:14  (pos 1) 14:20:14 Expected: ?? 14:20:14 Actual: ?? 14:20:14  (pos 1) 14:20:14 Stack Trace: 14:20:14 at TextInfoTests.ToLower(String localeName) 14:20:14 System.Globalization.Tests.NumberFormatInfoCurrencyGroupSizes.TestCurrencyGroupSizesLocale(locale: ""ur-IN"", primaryGroupSize: 3, secondaryGroupSize: 2) [FAIL] 14:20:14 System.Globalization.CultureNotFoundException : Culture is not supported. 14:20:14 Parameter name: name 14:20:14 ur-IN is an invalid culture identifier. 14:20:14 Stack Trace: 14:20:14 at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride) 14:20:14 at System.Globalization.Tests.NumberFormatInfoCurrencyGroupSizes.TestCurrencyGroupSizesLocale(String locale, Int32 primaryGroupSize, Int32 secondaryGroupSize) 14:20:14 System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.TestNumberGroupSizesLocale(locale: ""ur-IN"") [FAIL] 14:20:14 System.Globalization.CultureNotFoundException : Culture is not supported. 14:20:14 Parameter name: name 14:20:14 ur-IN is an invalid culture identifier. 14:20:14 Stack Trace: 14:20:14 at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride) 14:20:14 at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.TestNumberGroupSizesLocale(String locale) 14:20:14 System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(locale: ""fr-CD"") [FAIL] 14:20:14 System.Globalization.CultureNotFoundException : Culture is not supported. 14:20:14 Parameter name: name 14:20:14 fr-CD is an invalid culture identifier. 14:20:14 Stack Trace: 14:20:14 at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride) 14:20:14 at System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern.TestCurrencyNegativePatternLocale(String locale) 14:20:14 CompareInfoTests.Compare(localeName: """", left: ""ABCDE"", right: ""aBCDE"", expected: -1, options: None) [FAIL] 14:20:14 Assert.Equal() Failure 14:20:14 Expected: -1 14:20:14 Actual: 1 14:20:14 Stack Trace: 14:20:14 at CompareInfoTests.Compare(String localeName, String left, String right, Int32 expected, CompareOptions options) 14:20:14 Finished: System.Globalization.Tests 14:20:14 14:20:14 === TEST EXECUTION SUMMARY === 14:20:14 System.Globalization.Tests Total: 5520, Errors: 0, Failed: 11, Skipped: 0, Time: 2.953s ``` " +7085 area-System.Net GetAsync_ResponseHeadersRead_ReadFromEachIterativelyDoesntDeadlock HTTP test failed on Win 7 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_debug/127/consoleFull ``` 14:23:38 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ResponseHeadersRead_ReadFromEachIterativelyDoesntDeadlock [FAIL] 14:23:38 System.Net.Http.HttpRequestException : An error occurred while sending the request. 14:23:38 ---- System.Net.Http.WinHttpException : The supplied handle is the wrong type for the requested operation 14:23:38 Stack Trace: 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 14:23:38 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__41.MoveNext() 14:23:38 --- End of stack trace from previous location where exception was thrown --- 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:23:38 --- End of stack trace from previous location where exception was thrown --- 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:23:38 --- End of stack trace from previous location where exception was thrown --- 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:23:38 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:23:38 ----- Inner Stack Trace ----- 14:23:38 at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() 14:23:38 at System.Net.Http.WinHttpHandler.SetWinHttpOption(SafeWinHttpHandle handle, UInt32 option, UInt32& optionData) 14:23:38 at System.Net.Http.WinHttpHandler.SetSessionHandleConnectionOptions() 14:23:38 at System.Net.Http.WinHttpHandler.SetSessionHandleOptions() 14:23:38 at System.Net.Http.WinHttpHandler.d__102.MoveNext() ``` +7086 area-System.Security CNG tests failing on Win 7 Lots of failures, and then it looks like they hang until killed by Jenkins. ``` Discovering: System.Security.Cryptography.Cng.Tests Discovered: System.Security.Cryptography.Cng.Tests Starting: System.Security.Cryptography.Cng.Tests System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsECB [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsMode(CipherMode mode) System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsCBC [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsMode(CipherMode mode) System.Security.Cryptography.Encryption.Aes.Tests.DecryptorReusabilty.TestDecryptorReusability [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.DecryptorReusabilty.TestDecryptorReusability() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESReusabilityTests.TripleDESReuseEncryptorDecryptor [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESReusabilityTests.TripleDESReuseEncryptorDecryptor() System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateEncryptorProperties [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateEncryptorProperties() System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.CreateTransformExceptions [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.CreateTransformExceptions() System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateOffsetAndCount [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateOffsetAndCount() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.StableEncryptDecrypt [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.StableEncryptDecrypt() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_128 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_128() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding_3 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding_3() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB192_NoPadding [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB192_NoPadding() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding_2 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding_2() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownCBC256 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesDecrypt(CipherMode mode, Byte[] key, Byte[] iv, Byte[] encryptedBytes, Byte[] expectedAnswer) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownCBC256() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesZeroPad [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesZeroPad() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB128_NoPadding [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB128_NoPadding() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB192_NoPadding_2 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB192_NoPadding_2() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyInPlaceEncryption [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyInPlaceEncryption() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_192 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_192() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC256_NoPadding [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC256_NoPadding() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt_2 [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException): The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.<>c__DisplayClass28_1.b__0() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB128_NoPadding_2 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB128_NoPadding_2() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB128_NoPadding_3 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB128_NoPadding_3() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding_2 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding_2() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException): The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.<>c__DisplayClass27_1.b__0() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_256 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_256() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB256_NoPadding [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_ECB256_NoPadding() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownECB192 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesDecrypt(CipherMode mode, Byte[] key, Byte[] iv, Byte[] encryptedBytes, Byte[] expectedAnswer) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownECB192() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_Default [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_Default() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC128_NoPadding() System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateDecryptorProperties [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.AesCng.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateDecryptorProperties() System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize_384 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize(Int32 expectedKeySize, Byte[] keyBlob, RSAParameters expectedParameters) at System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize_384() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsPKCS7CBC [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsPKCS7CBC() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsNoneCBC [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsNoneCBC() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsZerosCBC [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsZerosCBC() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsPKCS7ECB [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsPKCS7ECB() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsZerosECB [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsZerosECB() System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsNoneECB [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at Internal.Cryptography.SymmetricImportExportExtensions.ToCngKey(Byte[] key, String algorithm) at Internal.Cryptography.BasicSymmetricCipherCng..ctor(Func`1 cngKeyFactory, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] iv, Boolean encrypting) at Internal.Cryptography.CngSymmetricAlgorithmCore.CreateCryptoTransformCore(Func`1 cngKeyFactory, Byte[] iv, Boolean encrypting) at System.Security.Cryptography.TripleDESCng.CreateEncryptor() at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCipherTests.TripleDESRoundTrip192BitsNoneECB() System.Security.Cryptography.Rsa.Tests.SignVerify.ExpectedSignature_SHA1_384 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider) at System.Security.Cryptography.RSACng.ImportKeyBlob(Byte[] rsaBlob, Boolean includePrivate) at System.Security.Cryptography.RSACng.ImportParameters(RSAParameters parameters) at System.Security.Cryptography.Rsa.Tests.SignVerify.ExpectSignature(Byte[] expectedSignature, Byte[] data, String hashAlgorithmName, RSAParameters rsaParameters) at System.Security.Cryptography.Rsa.Tests.SignVerify.ExpectedSignature_SHA1_384() ``` +7087 area-System.Globalization Four System.Globalization.Extensions tests failing on Win 7 "``` 14:20:15 System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Success [FAIL] 14:20:15 System.ArgumentException : Decoded string is not a valid IDN name. 14:20:15 Parameter name: unicode 14:20:15 Stack Trace: 14:20:15 at System.Globalization.IdnMapping.ThrowForZeroLength(String paramName, String invalidNameString, String otherString) 14:20:15 at System.Globalization.IdnMapping.GetAsciiCore(String unicode) 14:20:15 at System.Globalization.IdnMapping.GetAscii(String unicode, Int32 index, Int32 count) 14:20:15 at System.Globalization.IdnMapping.GetAscii(String unicode, Int32 index) 14:20:15 at System.Globalization.IdnMapping.GetAscii(String unicode) 14:20:15 at System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Success() 14:20:15 System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetUnicode_Succes [FAIL] 14:20:15 Assert.Equal() Failure 14:20:15 Expected: ….?"" 14:20:15 Actual: xn--0ca.xn--ssa73l 14:20:15 Stack Trace: 14:20:15 at System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetUnicode_Succes() 14:20:15 System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Invalid [FAIL] 14:20:15 Assert.Throws() Failure 14:20:15 Expected: typeof(System.ArgumentException) 14:20:15 Actual: (No exception was thrown) 14:20:15 Stack Trace: 14:20:15 at System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Invalid() 14:20:18 System.Globalization.Tests.StringNormalizationAllTests.Normalize [FAIL] 14:20:18 '\x0068' is not matched with the normalized form '\x2095 with ? normalization 14:20:18 Expected: True 14:20:18 Actual: False 14:20:18 Stack Trace: 14:20:18 at System.Globalization.Tests.StringNormalizationAllTests.AssertEqualsForm(String c, String cForm) 14:20:18 at System.Globalization.Tests.StringNormalizationAllTests.VerifyConformanceInvariant(NormalizationForm normForm, String c1, String c2, String c3, String c4, String c5) 14:20:18 at System.Globalization.Tests.StringNormalizationAllTests.Normalize() ``` " +7089 area-System.Net Distinguish raw IPv4 from IPv6 in unix Ping implementation Some systems enable raw sockets to be opened for ICMP but not ICMPv6, but our current test in Ping for whether to open a raw socket directly is based only on ICMP, which then causes run-time failures when an IPv6 address is used. This commit augments the current check to distinguish between the two. cc: @mellinoe, @ericeil Fixes #7064 +7091 area-System.IO System.IO.UnixFileSystem.MoveFile throwing `Access to the path is denied.` in Docker on Mac I created a docker image, so this should be easy to create, but the docker host needs to be OS X. When the docker host is Linux, this error does not occur, which leads me to believe it is something wrong with [System.IO.UnixFileSystem.MoveFile](https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs). It is being called from the latest `dotnet` 1.0.0-dev-001806 executable [from here I believe](https://github.com/dotnet/cli/blob/rel/1.0.0/src/dotnet/commands/dotnet-compile-fsc/Program.cs). cc @enricosada Steps to reproduce on Mac OS X: ``` git clone https://github.com/ctaggart/visualfsharp-docker.git cd visualfsharp-docker docker run --rm -ti -v $PWD/template:/root/template ctaggart/visualfsharp:1.0.0-alpha-160318 cd template ./build.sh ``` It will fail with: ``` Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied. at System.IO.UnixFileSystem.MoveFile(String sourceFullPath, String destFullPath) at Microsoft.DotNet.Tools.Compiler.Fsc.CompileFscCommand.Run(Stringrgs) at Microsoft.DotNet.Cli.Program.ProcessArgs(Stringrgs) at Microsoft.DotNet.Cli.Program.Main(Stringrgs) /usr/share/dotnet/bin/dotnet compile-fsc @/root/template/obj/Debug/dnxcore50/dotnet-compile.rsp returned Exit Code 134 Compilation failed. ``` The compilation actually succeeds and then `dotnet` tries to move the files because `fsc` didn't used to support compiling executables with a `dll` extension like `dotnet` wants. That hack can probably be removed, but I think there is still a bug dealing with `MoveFile`. +7095 area-System.Net Dispose of X509Certificate used in WinHttpHandler server callback cc: @davidsh, @bartonjs +7096 area-Infrastructure The plugin hasn't been performed correctly: Problem on deletion failures in CI tests "@mmitche, I've seen this error now several times in the last 24 hours. All tests pass, but then at the very end of processing the xunit results, we get an error ""The plugin hasn't been performed correctly: Problem on deletion"", e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/2140/console ``` 06:33:54 All tests passed. 06:34:11 [xUnit] [INFO] - Starting to record. 06:34:11 [xUnit] [INFO] - Processing xUnit.Net-v2 (default) 06:34:16 [xUnit] [INFO] - [xUnit.Net-v2 (default)] - 143 test report file(s) were found with the pattern '**/testResults.xml' relative to '/Users/dotnet-bot/j/workspace/dotnet_corefx/osx_release_tst_prtest' for the testing framework 'xUnit.Net-v2 (default)'. 06:34:16 [xUnit] [INFO] - Converting '/Users/dotnet-bot/j/workspace/dotnet_corefx/osx_release_tst_prtest/bin/tests/OSX.AnyCPU.Release/Common.Tests/dnxcore50/testResults.xml' . ... 06:44:24 [xUnit] [ERROR] - The plugin hasn't been performed correctly: Problem on deletion 06:44:24 Build step 'Publish xUnit test result report' changed build result to FAILURE 06:44:24 [BFA] Scanning build for known causes... 06:44:25 .[BFA] Found failure cause(s): 06:44:26 [BFA] There are errors when processing test results from category Test 06:44:26 [BFA] Done. 1s 06:44:26 [WS-CLEANUP] Deleting project workspace...[WS-CLEANUP] done 06:44:26 Finished: FAILURE ``` " +7097 area-System.Net Fix NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success test Two issues: 1. It's calling ReadAsync and expecting that all bytes requested will be read, even though it's valid for ReadAsync to return fewer than the number requested. 2. It's expecting ContinueWith to automatically unwrap the inner task, and as a result it's not actually waiting for the second write or the second read to complete. This is causing many of our outer loop Unix runs to fail. Fixes https://github.com/dotnet/corefx/issues/7063 cc: @kapilash, @ericeil +7103 area-System.Net Port to RC2: Fix NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success test #7097 +7104 area-Infrastructure Outerloop OSX fails with nuget package restore "``` 20:27:39 [20:32:06.64] Restoring all packages... 20:27:58 EXEC : error : Could not find file '/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/tempHome/.local/share/NuGet/v3-cache/0b99e17097bea891c4215989667b88d90c9f7540$_F_dotnet-core_api_v3_index.json/nupkg_runtime.any.System.IO.4.1.0-rc3-23918.dat'. [/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj] 20:27:58 /Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/build.proj(60,5): error MSB3073: The command """"/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/Tools/dotnetcli/bin/dotnet"" restore --packages ""/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ ""/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/src"" ""/Users/dotnet-bot/j/workspace/dotnet_corefx/outerloop_osx_debug/pkg"""" exited with code -1. 20:27:58 [20:32:19.04] Restoring all packages...Done. ``` " +7105 area-System.Diagnostics ProcessTests.TestExitTime failed on OSX http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/2237/console ``` 11:35:29 System.Diagnostics.Tests.ProcessTests.TestExitTime [FAIL] 11:35:29 Assert+WrapperXunitException : File path: d:\j\workspace\osx_debug_bld---2f4069d6\src\System.Diagnostics.Process\tests\ProcessTests.cs. Line: 164 11:35:29 ---- Assert.True() Failure 11:35:29 Expected: True 11:35:29 Actual: False 11:35:29 Stack Trace: 11:35:29 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 11:35:29 at Assert.True(Boolean condition, String userMessage, String path, Int32 line) 11:35:29 at System.Diagnostics.Tests.ProcessTests.TestExitTime() 11:35:29 ----- Inner Stack Trace ----- 11:35:29 at Assert.True(Boolean condition, String userMessage, String path, Int32 line) ``` +7112 area-System.Net Improve UDP test reliability Harden the UDP Sockets tests against packet loss. Whenever we expect to receive a UDP packet, we'll send 10 packets; hopefully this will reduce the failure rate in these tests. There are three remaining tests that are a little trickier to harden; I've marked these with TODOs, and will address them separately. Fixes most of #5185 @stephentoub @cipop @davidsh +7115 area-System.ComponentModel Enable attributes in Member/PropertyDescriptor This exposes method implementations that use the new attributes in System.ComponentModel.Primitives. Once the reference assemblies for that are created, commit c4f2db0 can be reverted, but for now, project-to-project reference will allow the TypeDescriptor assembly to access the new attributes. +7119 area-Serialization Improve serialization performance tests - Refactor all serialization performance tests to remove duplicated code. Adding more perf tests for all serializers is also more straightforward. Update namespace so the tests show up properly in reports. - Add a flag in test project to enable running tests without project references, which helps us run against Desktop facades for comparison purpose - Add performance tests for Json.Net for comparison purpose cc: @SGuyGe @shmao @zhenlan +7121 area-System.Xml Create all emitted types at once after emit phase finishes This change is a prerequisite to moving Xml serialization over to metadata/pe writer from System.Reflection.Metadata. Types being emitted can't be loaded until the entire assembly is emitted. +7123 area-System.Xml Xml serializer: Custom Reflection, Reflection.Emit [Work in progress] An experimental PR. +7125 area-System.Reflection Several MetadataReaderTests failing with NullReferenceException on OSX http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_osx_debug/49/consoleFull ``` 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateMethodImplTable [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateMethodImplTable() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateSignature [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateSignature() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateInterfaceImplTable [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateInterfaceImplTable() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateFieldLayoutTable [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateFieldLayoutTable() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateCustomAttribute [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateCustomAttribute() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateFieldMarshal [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateFieldMarshal() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateClassLayoutTable [FAIL] 12:42:12 System.TypeInitializationException : The type initializer for 'System.Reflection.Metadata.Tests.Interop' threw an exception. 12:42:12 ---- System.NullReferenceException : Object reference not set to an instance of an object. 12:42:12 Stack Trace: 12:42:12 at System.Reflection.Metadata.Tests.MetadataReaderTests.ValidateClassLayoutTable() 12:42:12 ----- Inner Stack Trace ----- 12:42:12 at System.Reflection.Metadata.Tests.ResourceHelper.GetResource(String name) 12:42:12 at System.Reflection.Metadata.Tests.Interop..cctor() 12:42:12 Finished: System.Reflection.Metadata.Tests 12:42:12 12:42:12 === TEST EXECUTION SUMMARY === 12:42:12 System.Reflection.Metadata.Tests Total: 153, Errors: 0, Failed: 7, Skipped: 0, Time: 0.512s ``` +7126 area-System.Text 96 System.Text.Encodings.Web.Tests failing in outerloop on OSX and Ubuntu14.04 e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_osx_release/46/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_osx_debug/49/consoleText Mostly due to NullReferenceExceptions, e.g. ``` Microsoft.Framework.WebEncoders.UnicodeEncoderBaseTests.Encode_NullInput_ReturnsNull [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Text.Unicode.UnicodeHelpers.CreateDefinedCharacterBitmap() at System.Text.Internal.AllowedCharactersBitmap.ForbidUndefinedCharacters() at Microsoft.Framework.WebEncoders.UnicodeEncoderBaseTests.Encode_NullInput_ReturnsNull() ``` The pages take a while to load, in part due to one of the tests incurring 65K NullReferenceExceptions, each of which is output in the log. +7127 area-System.Security New crypto API "The current cryptography APIs are badly designed. They provide neither authenticated encryption nor the current best-practice algorithms. According to ""Cryptography in the Web: The Case of Cryptographic Design Flaws in ASP.NET"", > Unauthenticated encryption should be considered harmful. > This is not just a theoretical problem; rather, unauthenti- > cated encryption has repeatedly led to devastating attacks > against real systems. Any cryptographic API should use > authenticated encryption whenever its users want to encrypt > data. The development and popularization of high-level > cryptographic toolkits that include authenticated encryption > such as Keyczar [25], Cryptlib [26], and NaCl [27] is > the first step to providing secure cryptographic software > libraries to the general public. The next step might be the > integration of these cryptographic toolkits into mainstream > web development frameworks. To solve this problem, two steps are required: 1. The existing API should be obsoleted. It uses CBC mode, which is unnecessarily slow, and does not provide authenticated encryption. 2. New, high-level APIs should be provided. A good choice would start with bindings to [libsodium](https://download.libsodium.org/doc/), which provides a high-level C API. Alternatively, similar high-level APIs should be provided. Here is my personal list of algorithms by category. It is based on various sources ([libsodium](https://download.libsodium.org/doc/), CAESAR, TLS), but I am not a cryptographer, so it needs review before it is actually used as the basis for implementation. - Authenticated encryption with associated data: - ChaCha20-Poly1305 - XChaCha20-Poly1305 or XSalsa20-Poly1305 - AES-GCM but possibly only on platforms that have hardware acceleration – it is vulnerable to side channel attacks otherwise. - The CAESAR winner, once that is decided - Nonce-misuse-resistant authenticated encryption - HS1-SIV - Public key cryptography - Ed25519 signatures - Curve25519 key exchange - Deterministic ECDSA signatures and ECDH key exchange, for backwards compatibility. Must use an implementation that is resistant to side-channel attacks. - Possibly RSA but only for backwards compatibility. Should use best known padding: RSA-PSS and RSA-OAEP - Hashing - Blake2b is preferred: very fast & immune to length extension. All options should be exposed, including key and personalization. - SHA2 (both standalone and HMAC) in 256- and 512- bit versions for backwards compatibility - Password hashing and password-based key derivation: - Argon2 - Non-password-based key derivation - Blake2b " +7129 area-System.Security API for manipulating certificates Will you plan to add the ability to create self-signed certificates, create a certificate signing requests - CSR, sign that CSR, and so on? +7131 area-System.Net Merge with master +7134 area-System.Net Fix UrlEncodeToBytes returning entire rather than partial array Port fix from .NET Framework. Fixes #6947 cc: @davidsh, @jamesqo +7140 area-System.Net Merge System.Net.Sockets.Legacy.Tests into System.Net.Sockets.Tests There is a lot of duplication between these two test collections, resulting in needing to make fixes in both places quite often. We should just merge these and eliminate any duplicate testing. +7141 area-Infrastructure Need to copy xunit.runner.utility.desktop.dll in order to run performance tests For some reasons, l have to copy xunit.runner.utility.desktop.dll to run the perf test on CoreClr. I have tried getting a new clone of corefx, do build.cmd and then run serialization performance tests, but I still see the complain that xunit.runner.utility.desktop.dll cannot be loaded. e.g. I ran: ``` msbuild src\System.Runtime.Serialization.Xml\tests\System.Runtime.Serialization.Xml.Tests.csproj /t:rebuildandtest /p:Performance=true /p:Configuration=Windows_Release ``` I saw this error: ``` Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'xunit.runner.utility.desktop, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' or one of its dependencies. The system cannot f ind the file specified. at Microsoft.Xunit.Performance.ProgramCore.Run(String[] args) at Microsoft.Xunit.Performance.Program.Main(String[] args) ``` If I copy corefx\packages\Microsoft.DotNet.xunit.performance.runner.Windows\1.0.0-alpha-build0029\tools\xunit.runner.utility.desktop.dll to dnxcore50 directory and run the msbuild command again it works fine. I'm wondering if I'm missing anything here. +7146 area-Meta Allow a way to specify native shim dependencies for libs in build targets. **Repro:** Using build.sh without `TestWithLocalLibraries=true` will cause builds to fail, if the correct package version with the shim update is not used. Currently, we are copying all the native shim libs built locally to be used while running tests (when setting `TestWithLocalLibraries=true`). We need a way to just copy over just the required shims, so that, there is no need to keep updating the packages for every shim update. +7150 area-System.Net SendRecvPollSync_TcpListener_Socket failed on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/3854/consoleFull ``` 12:13:24 System.Net.Sockets.Tests.SendReceive.SendRecvPollSync_TcpListener_Socket(listenAt: 127.0.0.1, pollBeforeOperation: False) [FAIL] 12:13:24 System.AggregateException : One or more errors occurred. (Read poll after completion should have succeeded 12:13:24 Expected: True 12:13:24 Actual: False) 12:13:24 ---- Read poll after completion should have succeeded 12:13:24 Expected: True 12:13:24 Actual: False 12:13:24 Stack Trace: 12:13:24 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 12:13:24 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 12:13:24 d:\j\workspace\windows_nt_de---06b7984d\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(506,0): at System.Net.Sockets.Tests.SendReceive.SendRecvPollSync_TcpListener_Socket(IPAddress listenAt, Boolean pollBeforeOperation) ``` +7151 area-System.ComponentModel NullableConverterTests failed in CI due to enumerating modified collection http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_tst_prtest/2190/consoleFull ``` 12:30:09 System.ComponentModel.Tests.NullableConverterTests.CanConvertTo_WithContext [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.CanConvertTo_WithContext() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() 12:30:09 System.ComponentModel.Tests.NullableConverterTests.ConvertTo_WithContext [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.ConvertTo_WithContext() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() 12:30:09 System.ComponentModel.Tests.NullableConverterTests.Get_UnderlyingTypeConverter [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.Get_UnderlyingTypeConverter() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() 12:30:09 System.ComponentModel.Tests.NullableConverterTests.Get_NullableType [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.Get_NullableType() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() 12:30:09 System.ComponentModel.Tests.NullableConverterTests.ConvertFrom_WithContext [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.ConvertFrom_WithContext() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() 12:30:09 System.ComponentModel.Tests.NullableConverterTests.CanConvertFrom_WithContext [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.CanConvertFrom_WithContext() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() 12:30:09 System.ComponentModel.Tests.NullableConverterTests.Get_UnderlyingType [FAIL] 12:30:09 System.TypeInitializationException : The type initializer for 'System.ComponentModel.Tests.NullableConverterTests' threw an exception. 12:30:09 ---- System.InvalidOperationException : Collection was modified; enumeration operation may not execute. 12:30:09 Stack Trace: 12:30:09 at System.ComponentModel.Tests.NullableConverterTests.Get_UnderlyingType() 12:30:09 ----- Inner Stack Trace ----- 12:30:09 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 12:30:09 at System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.MoveNext() 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.SearchIntrinsicTable(Type callingType) 12:30:09 at System.ComponentModel.ReflectTypeDescriptionProvider.GetConverter(Type type) 12:30:09 at System.ComponentModel.NullableConverter..ctor(Type type) 12:30:09 at System.ComponentModel.Tests.NullableConverterTests..cctor() ``` +7154 area-System.Net Implicit windows or UNC uris doesn't parse query or fragment "## Reproduce ### Implicit windows file ``` Uri uri = new Uri(""C:/path?query#fragment""); uri.AbsolutePath; // ""C:/path%3Fquery%23fragment"" uri.Query; // """" Uri.Fragment; // """" ``` ### Explicit windows file ``` Uri uri = new Uri(""file:///C:/path?query#fragment""); uri.AbsolutePath; // ""C:/path"" uri.Query; // ""?query"" Uri.Fragment; // ""#fragment"" ``` ### Implicit UNC file ``` Uri uri = new Uri(@""\\host\path?query#fragment""); uri.AbsolutePath; // ""/path%3Fquery%23fragment"" uri.Query; // """" Uri.Fragment; // """" ``` ## Explicit UNC file ``` Uri uri = new Uri(@""file://\\host/path?query#fragment""); uri.AbsolutePath; // ""/path"" uri.Query; // ""?query"" Uri.Fragment; // ""#fragment"" ``` ## Problem description - Clearly, there is an inconsistency between parsing of implicit and explicit windows files. - The query and fragment are escaped in an implicit file, so are not parsed, unlike in explicit files ## Solution - This may be by design, but I don't see any mention of this in the MSDN docs. - Furthermore, it seems that this is a bug, as there certainly are many use cases for creating implicit Uris. This may actually deter the impetus for fixing, as this breaking change affects many consumers. - The solution, a breaking change, would be to correctly the query and fragment of implicit files in the same manner as explicit files. /cc @davidsh (sorry that I found another breaking change bug!) " +7155 area-System.Runtime TestCtor_CharPtr failing on Unix sporadically "This test has started failing randomly in the past day. I've seen it now on both CentOS and OpenSUSE. e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_debug_tst/999/console ``` 12:19:35 StringTests.TestCtor_CharPtr(valueArray: ['a', 'b', 'c', 'd', 'e', ...], expected: ""abcdefgh"") [FAIL] 12:19:35 Assert.Equal() Failure 12:19:35 ↓ (pos 8) 12:19:35 Expected: abcdefgh 12:19:35 Actual: abcdefgh 12:19:35 ↑ (pos 8) 12:19:35 Stack Trace: 12:19:35 at StringTests.TestCtor_CharPtr(Char[] valueArray, String expected) ``` https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/System/String.cs#L24 " +7165 area-Serialization Improve DataContractJsonSerializer performance for dictionary In DCJS code path to serialize/de-serialize dictionary, there is one place where we always create new data contract for key-value type, while we can leverage on the data contract cache instead. This results in significant performance differences between CoreClr and Desktop. This change resolves that issue by getting data contract for key-value type with a method which utilizes the cache. With this change we'll see 10-20x perf improvement for dictionary scenarios. I'm confirming with NetNative to ensure no regression and will update. cc: @SGuyGe @zhenlan @shmao +7166 area-Infrastructure xUnit console runner crashes when writing invalid characters to the XML file "Separating this out from #7042 (where the bug was discovered) so we have a separate issue to keep track of it. Currently, the xUnit console runner will crash if certain invalid characters, like standalone surrogates, U+FFFE or U+FFFF are written to the XML file. For example, this would fail: ``` csharp public static IEnumerable Equal_TestData() { yield return new object[] { ""\uD800"", ""\uD800"" }; } [Theory] [MemberData(nameof(Equal_TestData))] public void Equal(string expected, string actual) { Assert.Equal(expected, actual); } ``` The fix is to alter [this](https://github.com/dotnet/buildtools/blob/37d1d57167d2d112b26f94135f3281fe2601ab65/src/common/XmlTestExecutionVisitor.cs#L269) method of `XmlTestExecutionVisitor` in the buildtools repo to handle these invalid chars, in addition to C0 controls. See the fix I've made upstream here: xunit/xunit#804 I'll be submitting a PR shortly to buildtools to fix this. " +7169 area-System.Linq Expression.Convert() incorrect in interpreter with enum types. "Given an enum type `E`, a long-backed enumtype `El` and a value of type `E` called `e` then `Expression.Convert()` will be treated differently in the compiler and the interpreter. ``` C# // comparable numerical value to e on all Expression.Convert(Expression.Constant(e, typeof(E)), typeof(El)) // InvalidCastException in compiler. // comparable numerical value to e in interpreter Expression.Convert(Expression.Constant(e, typeof(object)), typeof(El)) Expression.Convert(Expression.Constant(e, typeof(Enum)), typeof(El)) // InvalidCastException in compiler. // ArgumentException in interpreter. Expression.Convert(Expression.Constant(""hello""), typeof(El)) ``` Aside from the compiler winning on the grounds of precedence, it would appear to be correct on each count here, with the `ArgumentException` being plainly wrong. There is a bit of a risk to fixing the second case, as it could cause a throw in working code, though it's perhaps better to nip it in the bud. " +7171 area-System.Net Add HttpClientHandler tests for server certificates Based in part on the ones for WinHttpHandler. Right now these tests are only included for Unix. cc: @davidsh, @bartonjs +7172 area-System.Xml XElement Namespace Handling "I found a problem with the way XElement handles namespaces. If You look at the following code (executed with .Net Core 1.0.0-rc2-23811): ``` C# var x1 = new XElement(""{http://example.com}root""); Console.WriteLine(x1); var x2 = XElement.Parse(x1.ToString()); Console.WriteLine(x2); Console.WriteLine($""Attributes of x1: '{string.Join("", "", x1.Attributes())}'""); Console.WriteLine($""Attributes of x2: '{string.Join("", "", x2.Attributes())}'""); ``` The output is as follows: ``` xml Attributes of x1: '' Attributes of x2: 'xmlns=""http://example.com""' ``` To me this behaviour seems strange / **inconsistent**, as one **cannot rely** that the xmnls attribute is represented as **xmlns attribute in the memory model**. Some Frameworks (e.g. Json.NET) however require the xmlns attribute to exist in the memory model, which leads to strange results. My suggestion is: - Either always add the xmlns attribute when using the syntax I wrote above automatically. - Or never add the xmnls attribute (disallow adding it in the api) - also not during parsing xml, but make it implicit (accessible via Name.Namespace) So basically keep the Name.NamespaceName and the xmnls attribute in sync. " +7175 area-System.Runtime API Proposal: Support operators * / etc on type TimeSpan "## Background TimeSpan represents a time interval, which makes it a common candidate for ""mathematical"" processing, such as taking a 1-hour interval, and divide it by 2, resulting a 0.5-hour interval. Currently, the TimeSpan type support only a limited subset of operators (+ and -), and only with a TimeSpan operand. ## Proposed API - Approved Approved in * https://github.com/dotnet/corefx/issues/7175#issuecomment-262323805 * https://github.com/dotnet/corefx/issues/7175#issuecomment-274889934 ```C# namespace System { public struct TimeSpan { public static System.TimeSpan operator *(TimeSpan timeSpan, double factor); public static System.TimeSpan operator /(TimeSpan timeSpan, double divisor); public static TimeSpan operator *(double factor, TimeSpan timeSpan); public static double operator /(TimeSpan t1, TimeSpan t2); } } ``` **Motivation:** The extra 2 APIs proposal are mainly for supporting the commutative * and / operation (basically adding the same operation with flipped parameters order) and support / with time span. ## Naïve implementation ``` csharp namespace System { public struct TimeSpan { public static System.TimeSpan operator *(TimeSpan timeSpan, double factor) { return TimeSpan.FromTicks(timeSpan.Ticks * factor); } public static System.TimeSpan operator /(TimeSpan timeSpan, double divisor); { return TimeSpan.FromTicks(timeSpan.Ticks / divisor); } } } ``` " +7184 area-System.Net Split _queueLock into multiple locks #6838 introduced a new issue; with a single lock, it was impossible to have a Send proceed concurrently with a Receive, which should work. This caused a [hang in the .NET CLI tests](https://github.com/dotnet/cli/pull/1990#issuecomment-200500819). This change splits the lock into two, plus adds a third lock to cover event registration. (This used to be covered by _queueLock as well, but cannot be covered by the two new locks without lock ordering issues). This is admittedly a bit of a mess; I'll clean this up as part of #6912. Will add additional testing for this case separately, but we need to get this in ASAP to unblock the CLI. @stephentoub @eerhardt +7185 area-System.Net Fix WinHttpHandler session handle initialization "A test running on Windows 7 was doing multiple parallel requests using the same HttpClient but throwing an unexpected winHTTP error. The problem only occurred on Windows 7 because the proxy initialization code in WinHttpHandler is different for that platform. In general, there is only one session handle created per handler and it is shared with multiple requests. The ""init once"" logic was faulty because it was setting the `_sessionHandle` field too early before everything was init'd. In addition, this exposed another bug where the session handle options were repeatedly set for each request even though they should only have been set once. Fixed up the EnsureSessionHandleExists method to do the proper initialization. Also added more tracing. Fixes #7085 " +7187 area-System.IO FileInfo.Length on symbolic links should return the size of the target of the link. "FileInfo.Length on a symbolic link in Windows returns 0, not the length of the file referred to by the link. For a symbolic link, Windows’ FindFirstFile returns 0 bytes as the length. This may also be true with GetFileAttributesEx. So a pattern like this prints out 0 for the length of a file that happens to be a symbolic link: ``` DirectoryInfo dir = new DirectoryInfo("".""); foreach(var file in dir.GetFiles()) { Console.WriteLine(""File: {0} Size: {1}"", file.Name, file.Length); } ``` Fixing this will require opening the file then getting the length, which you can do with FileStream. Jeremy Kuhne points out it's best if we open then handle without requesting read or write permission (ie calling CreateFile with the right parameters). If you look at GetFileSizeEx, it's clear you need to specify FILE_READ_ATTRIBUTES when calling CreateFile (and we should use some appropriate sharing mode, like allowing reading and deleting. Maybe writing too - yes there's a race but for monotonically increasing log files the answer is not useless). https://msdn.microsoft.com/en-us/library/windows/desktop/aa364957(v=vs.85).aspx Repro by creating file.txt, then running ""mklink link.txt file.txt"" from an admin command prompt. Then use FileInfo.Length on link.txt. " +7189 area-System.ComponentModel Initial TypeDescriptor implementation This is an initial buildable implementation of TypeDescriptor. Some code remains behind feature flags. Several tests must be skipped because ReflectTypeDescriptionProvider is implemented with stubs. cc @twsouthwick +7191 area-Infrastructure [April 21, 2016] Add Ubuntu 16.04 LTS (Xenial Xerusis) to CI and the RID graph Ubuntu 16.04 LTS, codenamed Xenial Xerusis is set for release on April 21, 2016. Add 16.04LTS to the RID graph and replace 15.10 in Jenkins with 16.04LTS. https://wiki.ubuntu.com/Releases Related item tracking Fedora 23: https://github.com/dotnet/corefx/issues/5990 +7193 area-System.Security WIF API is confusing when implementing CustomIdentity "I found implementing a CustomIdentity to be very confusing, and there's alot of things about the API that feel very ""spin in your chair three times and clap your hands and it'll work"". - IsAuthenticated used to be the premier way to signal to the framework that the user is successfully authenticated. This not sufficient, and is fact ignored by the framework which instead checks to see if AuthenticationType is set. - IIdentity has only three properties, one of which being IsAuthenticated. Even if you are unfamiliar with old approaches of implementing CustomIdentities, the first thing you would do is look at the default ClaimsIdentity and see what interfaces does it implement. IIdentity is the only one. So naturally you would conclude that your custom identity must simply implement this interface. This is not sufficient. - No interface describes the additional requirements needed to be a successfully functioning custom identity. - You must magically know that you must inherit from ClaimsIdentity - When using only a ClaimsIdentity directly, you can successfully authenticate the user. The framework automatically creates the necessary token so long as AuthenticationType is set. However, a custom identity implementing ClaimsIdentity for some reason does not get the same benefit from the framework. Having IsAuthenticated==true and AuthenticationType set means nothing to the framework if you are instead inheriting from ClaimsIdentity. As soon as you derive from ClaimsIdentity, you then have to set the token yourself. - Returning a principal from the ClaimsAuthenticationManager leads one to the think the framework will then pick that up and use that as the principal if IsAuthenticated==true. In fact, as demonstrate in the below, many other steps are needed to get the principal and identity to ""stick"". Why doesn't this method just have a void return type if it isn't going to respect the return? - If an Identity with IsAuthenticated==true and no AuthenticationType==null means the user is interpreted as not authenticated, then this should be an exception. Clearly if an identity is returning true for IsAuthenticated, the indication is the user should be authenticated. If you are going to have an obscure nuance that AuthenticationType must also be set, then an exception should be thrown so developers are not dealing with what is essentially a silent error as result of them failing to set the AuthenticationType. Really this type of lock step should be avoided when trying to represent a single concept in multiple properties. You're trying to represent the fact that a user is successfully authenticated, and if some other required information is missing to satisfy that discrete value, then throw an exception. - If IsAuthenticated==true is ignored for types which implement IIDentity, but are not a ClaimsIdentity then this should again be an exception. If you're going to let my IIdentity interface return an AuthenticationType and IsAuthenticated==true, and then completely ignore the information I've exposed through the one and only interface that is used by the Identity class hierarchy, then throw an exception that makes it clear that identities not inheriting ClaimsIdentity are not supported. -Other aspects of the framework require specific claims be present. There's no compile/design time safety or other measures to verify my implementation is correct until I stumble upon them later. AntiForgeryToken is an example that you will not reallize requires a specific claim until you stumble onto a page with it on there. I do not know what other things I will stumble upon that will bite me because it is a dirty stringly type dependency on a specifically named claim. Ideally these requirements should be represented as properties on an interface. If you so choose not to support the feature, you can opt not to implement the interface and suffer a lack of support for the feature. This allows you to compose interfaces into an identity that supports your needs. - Will I run into problems because my CustomIdentity does not implement all the many and varied signatures of the ClaimsIdentity construct? One would usually think no, but the fact that we're now doing things like requiring a specific concrete class, stringly typed claim values, and not communicating API requirements through interfaces means that I have to wonder if specific constructor signatures may be required by certain parts of the framework, and I will painfully discover later through a bug which is unlikely to throw an exception. - Will I run into problems that basically invalidate my entire approach down the road? - Now that I'm setting the token myself, is there potential for problems with stepping on the framework's own code for handling the token? - Do I need to do all the stuff to manage the sliding expiration of the token and all other related stuff? Will the framework still handle this for me? Not really looking for an answer, as much to point out the strangeness that I must take on setting the token when I'm still returning a derived ClaimsIdentity, which calls into question what else I must take on that was automatically handled by the framework. - This is one of those things where the combination of things to get it working doesn't really make any sense. One of my other developers figured out that the token needed to be set, and I was very doubtful of that. What is so different between returning a ClaimsIdentity and a derived custom ClaimsIdentity? That with the obscure nuances of what can break it, and the fact that I may find certain scenarios in the future that do not work with this crazy combination of settings. I am setting my expectation to have users complain of edge case scenarios where they have problems with authentication, and no amount of exception logging will help me identify the problem because clearly there's several scenarios where we are just silently failing to authenticate due to a failure to meet obscure requirements to set a certain property a certain way. So I can look forward to encountering these in the future and hunting through the reference source to try and guess at what obscure requirement I am missing that is causing certain users to have problems. Hopefully this doesn't sound to ranty. Here's the path I took. Actually the final combination of inheriting from a ClaimsIdentity AND setting the token was found by another developer. It actually involved a ~week of each of 3 developer's time before we found the right combination. Between all the identity factories, ApplicatonUser factories, UserStore's, and UserManager's(conceptually similar names that seem to represent the same purpose, but really server different role) we had alot to investigate. ``` public class KentorAuthenticationManager : ClaimsAuthenticationManager { public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal) { // create our custom identity var customIdentity = new CustomIdentity(); customIdentity.IsAuthenticated = true; customIdentity.AuthenticationType = ""testtype""; customIdentity.Name = ""John Doe""; var newPrincipal = new ClaimsPrincipal(customIdentity); base.Authenticate("""", newPrincipal); HttpContext.Current.User = newPrincipal; System.Threading.Thread.CurrentPrincipal = newPrincipal; return newPrincipal; } } [Serializable] public class CustomIdentity : //System.Security.Claims.ClaimsIdentity, IIdentity, IIdentityContext { public CustomIdentity()//:base(""UnifiedEngagement"") { } public int UserId { get; set; } public string Name { get; set; } public string AuthenticationType { get; set; } public bool IsAuthenticated { get; set; } // other custom properties... } ``` The problem is the custom identity gets converted to a claims identity: [![enter image description here](http://i.stack.imgur.com/IFTzM.png)](http://i.stack.imgur.com/IFTzM.png) ## Generic Principal w/CustomIdentity If we use a GenericPrincipal, then within the CustomAuthenticationManager, the newPrincipal.Identity is my custom type: `var newPrincipal = new GenericPrincipal(customIdentity);` [![enter image description here](http://i.stack.imgur.com/h1VRa.png)](http://i.stack.imgur.com/h1VRa.png) [![enter image description here](http://i.stack.imgur.com/u3gCL.png)](http://i.stack.imgur.com/u3gCL.png) Looking good, until the roundtrip completes and accessing the current principal from anywhere else, it then shows a GenericIdentity with `IsAuthenticated==false`, which loses all the extra properties that were in my CustomIdentity: [![enter image description here](http://i.stack.imgur.com/igbYB.png)](http://i.stack.imgur.com/igbYB.png) Essentially it ignored the IsAuthenticated==true I set(I also set AuthenticationType since WIF depends on that to determine authentication). If I use a ClaimsIdentity, all I have to do is make sure it is instantiated with a AuthenticationType and it authenticates properly. ## GenericPrincipal w/CustomIdentity and setting SessionSecurityToken I shouldn't need to do this, because based on setting IsAuthenticated and the AuthenticationType, it should authenticate automatically and generate the token. So to force it to authenticate successfully, I explicitly set the session token. But my CustomIdentity is gone and is instead a ClaimsIdentity after the roundtrip, and so loses my custom properties(It does create claims representing the IIdentity properties for name, nameid, etc. but all other custom properties are lost): ``` var sessionSecurityToken = new SessionSecurityToken(newPrincipal, TimeSpan.FromHours(8)); FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken); ``` After roundtrip CustomIdentity is now a ClaimsIdentity: [![enter image description here](http://i.stack.imgur.com/GImlL.png)](http://i.stack.imgur.com/GImlL.png) ## Inheriting ClaimsIdentity If my CustomIdentity inherits from ClaimsIdentity: ``` [Serializable] public class CustomIdentity : System.Security.Claims.ClaimsIdentity, IIdentityContext { public CustomIdentity(IIdentity claimsIdentity) : base(claimsIdentity, null, ""TestAuthType"", null,null) { } //... ``` But I do **not** explicitly set SessionSecurityToken(no call to WriteSessionTokenToCookie), then it fails to authenticate and leaves me with a GenericIdentity with IsAuthenticated==false. ## Inheriting ClaimsIdentity w/setting SessionSecurityToken If I use the above identity that inherits from ClaimsIdentity **and** set SessionSecurityToken, then everything works fine. It was a long road to get here. 2 senior and 1 midlevel developer spent roughly a week each trying different variations. [![enter image description here](http://i.stack.imgur.com/FHavZ.png)](http://i.stack.imgur.com/FHavZ.png) ## Why do I not put custom info in claims? Note I have enough custom properties that I am not looking to stuff them in as claims. The recommendation I've seen on more than one occasion is that putting too much into claims is a poor design and can cause poor performance because they end up in the token. Additionally, some data is much easier to represent in a C# object model than within a flat list of claims. It is data specific to the user, minimal enough that the memory footprint in session is acceptable, and large enough that I wouldn't want it encrypted/decrypted and pushed across the wire: https://msdn.microsoft.com/en-us/library/azure/hh531494.aspx " +7196 area-System.Net Merge System.Net.Sockets.Legacy tests into System.Net.Sockets This reduces duplication in the Sockets tests, and reduces the innermost development loop for Sockets changes to a single test assembly. Fixes #7140. @CIPop, please have a look. +7198 area-System.Net Deadlock in ClientWebSocket when CancellationToken is cancelled during a call to ConnectAsync() In WinHttpWebSocket.ConnectAsync, there is a using block around the main implementation of the function which looks like this: ``` csharp using (CancellationTokenRegistration ctr = ThrowOrRegisterCancellation(cancellationToken)) ``` ThrowOrRegisterCancellation registers a callback which calls Abort() on the WinHttpWebSocket. The Abort() method immediately attempts to take a lock on `_operation.Lock`. Inside the using block of ConnectAsync, there are two inner blocks which take a lock on `_operation.Lock`. While in the second lock, if the CancellationToken is cancelled, a deadlock occurs. What happens is the callback is fired, which calls Abort() which then blocks waiting to obtain a lock on `_operation.Lock`. This lock can't be taken because ConnectAsync is holding the lock. At the end of the second lock block in ConnectAsync, a call to ctr.Dispose() is made. When calling Dispose() on a CancellationTokenRegistration, if the cancellation callback is currently in progress, it blocks waiting for the callback to complete. The callback won't complete because it's waiting for the lock to be released by ConnectAsync. ConnectAsync won't release the lock until the Dispose() call completes, which won't complete until the callback is complete. Here are the two deadlocked call stacks: ``` [HelperMethodFrame: 0000001d84e5e6b8] System.Threading.Thread.SleepInternal(Int32) System.Threading.Thread.Sleep(Int32) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\Thread.cs @ 708] System.Threading.SpinWait.SpinOnce() [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\SpinWait.cs @ 147] System.Threading.CancellationTokenSource.WaitForCallbackToComplete(System.Threading.CancellationCallbackInfo) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\CancellationTokenSource.cs @ 890] System.Net.WebSockets.WinHttpWebSocket+d__18.MoveNext() ``` ``` [HelperMethodFrame_1OBJ: 0000001d8384e8d8] System.Threading.Monitor.Enter(System.Object) System.Net.WebSockets.WinHttpWebSocket.Abort() System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\ExecutionContext.cs @ 93] System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\CancellationTokenSource.cs @ 785] System.Threading.CancellationTokenSource.TimerCallbackLogic(System.Object) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\CancellationTokenSource.cs @ 513] ``` This will use a lot of CPU as the code for waiting for the callback to complete looks like this: ``` csharp SpinWait sw = new SpinWait(); while (ExecutingCallback == callbackInfo) { sw.SpinOnce(); //spin as we assume callback execution is fast and that this situation is rare. } ``` +7201 area-System.Security Use BCrypt.dll for ephemeral symmetric operations The majority of tests failing in https://github.com/dotnet/corefx/issues/7086 are due to Windows 7 not having support for symmetric encryption through the Microsoft KSP (using NCrypt.dll). The guidance from the Windows Cryptography team is to use BCrypt when an ephemeral key is used, and only use NCrypt when a persisted key was explicitly requested. And that'll make Windows 7 have exactly the right support. +7203 area-System.Net Port to RC2: Fix WinHttpHandler session handle initialization #7185 +7204 area-System.Net How can I add System.Net.Sockets 4.1.0 to my project's reference? "Hello, I'm trying to port my project using System.Net.Sockets.TcpClient class. So I tried to add latest System.Net.Sockets using NuGet. However it fails. Please help. ### PROBLEM Adding System.Net.Sockets 4.1.0 fails with incompatible errors like this: ``` System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0. Some packages are not compatible with UAP,Version=v10.0. System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0 (win10-arm). Some packages are not compatible with UAP,Version=v10.0 (win10-arm). System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0 (win10-arm-aot). Some packages are not compatible with UAP,Version=v10.0 (win10-arm-aot). System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0 (win10-x86). Some packages are not compatible with UAP,Version=v10.0 (win10-x86). System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0 (win10-x86-aot). Some packages are not compatible with UAP,Version=v10.0 (win10-x86-aot). System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0 (win10-x64). Some packages are not compatible with UAP,Version=v10.0 (win10-x64). System.Net.Sockets 4.1.0-rc3-23923 is not compatible with UAP,Version=v10.0 (win10-x64-aot). Some packages are not compatible with UAP,Version=v10.0 (win10-x64-aot). ``` ### NOTES I could add System.Net.Sockets 4.0.0 successfully. But it doesn't include TcpClient class so I need 4.1.0. I guess it would be solved by tweaking project.json but I don't know where/how to tweak. Adding System.Net.Sockets still fails for a newly-created Universal Windows (10) Blank App. ### STEPS - Create new Blank App (Universal Windows) with Visual Studio 2015 Update 1 - Locate Tools->Options->NuGet Package Manager->Package Sources and add .NET Core package source (*1). - Right click References in Solution Explorer and select Manage NuGet Packages... - Select newly-added Package Source and find latest System.Net.Sockets(*2). Don't forget to check ""Include prerelease"" - Install latest System.Net.Sockets. It fails. Errors are logged in Output window. - Double-click project.json in Solution Explorer. Original project.json is as follows: ``` { ""dependencies"": { ""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.0.0"" }, ""frameworks"": { ""uap10.0"": {} }, ""runtimes"": { ""win10-arm"": {}, ""win10-arm-aot"": {}, ""win10-x86"": {}, ""win10-x86-aot"": {}, ""win10-x64"": {}, ""win10-x64-aot"": {} } } ``` **Tweak a.** Change ""dependencies"": {""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.0.0""} -> ""5.4.0"" => Try to add System.Net.Sockets again. Fails. **Tweak b.** Add ""dotnet5.4"": {}, into ""frameworks"": { ""uap10.0"": {} }, => Try to add System.Net.Sockets again. Fails. **Tweak c.** Delete ""uap10.0"": {} after adding ""dotnet5.4"": {} into ""frameworks"". => Try to add System.Net.Sockets again. Fails. ### REFERENCE Can't locate TcpClient and TcpListener from Socket.Net.Sockets #5939 *) This page says you have to switch platform to ""dotnet5.4"". (*1) https://dotnet.myget.org/F/dotnet-core/api/v3/index.json (*2) Currently the latest is 4.1.0-rc3-23923 " +7206 area-System.Diagnostics Install fails for Microsoft.Diagnostics.Tracing.EventSource Trying to use this with my PCL, nit sure what's wrong. It's not a beta version of event source. Restoring packages for 'Symbiotic.Core'. Restoring packages for F:\Dev\FrozenElephant\SymbioticORM\Symbiotic\Symbiotic.Core\project.json... Installing Microsoft.Diagnostics.Tracing.EventSource.Redist 1.1.28. Installing Microsoft.Diagnostics.Tracing.EventSource 1.1.28. Installing Microsoft.Diagnostics.Tracing.EventRegister 1.1.28. Microsoft.Diagnostics.Tracing.EventSource.Redist 1.1.28 is not compatible with .NETPlatform,Version=v5.0. Some packages are not compatible with .NETPlatform,Version=v5.0. All packages are compatible with .NETFramework,Version=v4.6. All packages are compatible with UAP,Version=v10.0. Microsoft.Diagnostics.Tracing.EventSource 1.1.28 is not compatible with DNXCore,Version=v5.0. Microsoft.Diagnostics.Tracing.EventSource.Redist 1.1.28 is not compatible with DNXCore,Version=v5.0. Some packages are not compatible with DNXCore,Version=v5.0. All packages are compatible with .NETFramework,Version=v4.6 (win-x86). All packages are compatible with .NETFramework,Version=v4.6 (win-x64). All packages are compatible with UAP,Version=v10.0 (win10-x86). All packages are compatible with UAP,Version=v10.0 (win10-x86-aot). All packages are compatible with UAP,Version=v10.0 (win10-x64). All packages are compatible with UAP,Version=v10.0 (win10-x64-aot). All packages are compatible with UAP,Version=v10.0 (win10-arm). All packages are compatible with UAP,Version=v10.0 (win10-arm-aot). Microsoft.Diagnostics.Tracing.EventSource 1.1.28 is not compatible with DNXCore,Version=v5.0 (win7-x86). Microsoft.Diagnostics.Tracing.EventSource.Redist 1.1.28 is not compatible with DNXCore,Version=v5.0 (win7-x86). Some packages are not compatible with DNXCore,Version=v5.0 (win7-x86). Microsoft.Diagnostics.Tracing.EventSource 1.1.28 is not compatible with DNXCore,Version=v5.0 (win7-x64). Microsoft.Diagnostics.Tracing.EventSource.Redist 1.1.28 is not compatible with DNXCore,Version=v5.0 (win7-x64). Some packages are not compatible with DNXCore,Version=v5.0 (win7-x64). Package restore failed for 'Symbiotic.Core'. Package restore failed. Rolling back package changes for 'Symbiotic.Core'. ========== Finished ========== +7208 area-System.Runtime string.Join as Concat(separator) extension method on IEnumerable "I find myself reverting string.Join into an extension method in every project I write. Like so: ``` C# public static string Concat(this IEnumerable values, string separator = """") => string.Join(separator, values); ``` it's considerably more flexible and enjoyable to use especially when chaining together with Linq to objects queries: ``` C# intList.Where(n => n > 50).OrderBy(n => n).Concat("", "") ``` as oppose to: ``` C# string.Join("", "", intList.Where(n => n > 50).OrderBy(n => n)) ``` So if I'm not the only one using this method this way, maybe we can add it to the corefx. **Note:** I named it `Concat` because there already exists a standard query operator called `Join`. The name is as much up for discussion as the feature itself. " +7209 area-System.Data Extract duplicated code This resolves https://github.com/dotnet/corefx/issues/5452 +7214 area-System.Net Need tests for full-duplex Sockets behavior #7184 fixes a problem we missed in the Sockets tests because we do not have tests which do concurrent sends _and_ receives on a single socket. This is a very common usage, and we should have test coverage for it. +7216 area-System.ComponentModel Use ReflectTypeDescriptor in TypeDescriptor @chlowell +7224 area-System.IO Seg faults on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_release_prtest/2884/ ``` ./run-test.sh: line 135: 85272 Segmentation fault: 11 ./corerun xunit.console.netcore.exe $testDllName -xml testResults.xml -notrait category=failing $OuterLoop -notrait category=$xunitOSCategory -notrait Benchmark=true error: One or more tests failed while running tests from 'System.IO.FileSystem.Watcher.Tests'. Exit code 139. ``` +7234 area-Infrastructure GetAsync_ResponseWithSetCookieHeaders_AllCookiesRead failed in CI See http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_release_tst_prtest/3294/consoleFull ``` 14:06:32 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ResponseWithSetCookieHeaders_AllCookiesRead(cookie1: [foo, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]) [FAIL] 14:06:32 Assert.Equal() Failure 14:06:32 Expected: 3 14:06:32 Actual: 0 14:06:32 Stack Trace: 14:06:33 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__40.MoveNext() 14:06:33 --- End of stack trace from previous location where exception was thrown --- 14:06:33 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:33 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:33 --- End of stack trace from previous location where exception was thrown --- 14:06:33 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:33 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:33 --- End of stack trace from previous location where exception was thrown --- 14:06:33 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:33 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:43 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ResponseWithSetCookieHeaders_AllCookiesRead(cookie1: [foo, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]) [FAIL] 14:06:43 Assert.Equal() Failure 14:06:43 Expected: 3 14:06:43 Actual: 0 14:06:43 Stack Trace: 14:06:43 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__40.MoveNext() 14:06:43 --- End of stack trace from previous location where exception was thrown --- 14:06:43 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:43 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:43 --- End of stack trace from previous location where exception was thrown --- 14:06:43 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:43 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:43 --- End of stack trace from previous location where exception was thrown --- 14:06:43 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:43 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:51 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ResponseWithSetCookieHeaders_AllCookiesRead(cookie1: [foo, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]) [FAIL] 14:06:51 Assert.Equal() Failure 14:06:51 Expected: 3 14:06:51 Actual: 0 14:06:51 Stack Trace: 14:06:51 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__40.MoveNext() 14:06:51 --- End of stack trace from previous location where exception was thrown --- 14:06:51 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:51 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:51 --- End of stack trace from previous location where exception was thrown --- 14:06:51 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:51 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:06:51 --- End of stack trace from previous location where exception was thrown --- 14:06:51 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:06:51 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +7235 area-System.Net Add assert for status code to cookies test This test failed once, and I expect it was just due to a network blip that caused the request to fail, but since we're not currently checking the http status code, I can't be sure. As such, I'm just adding another assert for the expected status code, and if this repros again, we'll know whether that's the issue. Closes https://github.com/dotnet/corefx/issues/7234 +7244 area-System.Threading TestSendAsync_DelayedConsume test failed in CI ``` 06:21:05 System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests.TestSendAsync_DelayedConsume [FAIL] 06:21:05 Assert.False() Failure 06:21:05 Expected: False 06:21:05 Actual: True 06:21:05 Stack Trace: 06:21:05 at System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests.d__28.MoveNext() 06:21:05 --- End of stack trace from previous location where exception was thrown --- 06:21:05 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 06:21:05 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 06:21:05 --- End of stack trace from previous location where exception was thrown --- 06:21:05 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 06:21:05 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 06:21:05 --- End of stack trace from previous location where exception was thrown --- 06:21:05 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 06:21:05 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +7248 area-System.Net System.Net.Http is missing RID for Unix build "Looks like this was regressed with https://github.com/dotnet/corefx/commit/be08afd9701053f5f9369762db58b87c8ca9559f which changed the library to build as ""Unix"" instead of ""Linux"" but didn't update the PackageTargetRuntime conditions in the CSProj. " +7249 area-System.Net Update PTR to Unix for System.Net.HTTP Addresses https://github.com/dotnet/corefx/issues/7248 Validated updated nuspec has runtimes/unix target path [System.Net.Http.nuspec.txt](https://github.com/dotnet/corefx/files/189789/System.Net.Http.nuspec.txt) /cc @ericstj +7252 area-System.Runtime AssemblyLoadContextTest tests failing on Unix in outerloop I assume this is the same problem as with https://github.com/dotnet/corefx/issues/7125 and is due to https://github.com/Microsoft/msbuild/issues/541, but unless we're going to pick up a new msbuild imminently, we should temporarily change this to avoid breaking the outerloop runs. cc: @mellinoe, @gkhanna79 ``` 03:17:12 System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByPath_ValidUserAssembly [FAIL] 03:17:12 System.IO.FileNotFoundException : Could not load the specified file. 03:17:12 Stack Trace: 03:17:12 at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) 03:17:12 at System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByPath_ValidUserAssembly() 03:17:12 Finished: System.Runtime.Loader.Tests 03:17:12 03:17:12 === TEST EXECUTION SUMMARY === 03:17:12 System.Runtime.Loader.Tests Total: 10, Errors: 0, Failed: 3, Skipped: 0, Time: 0.265s 03:17:12 System.Runtime.Loader.Tests.AssemblyLoadContextTest.GetLoadContextTest_ValidUserAssembly [FAIL] 03:17:12 System.IO.FileNotFoundException : Could not load the specified file. 03:17:12 Stack Trace: 03:17:12 at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) 03:17:12 at System.Runtime.Loader.Tests.AssemblyLoadContextTest.GetLoadContextTest_ValidUserAssembly() 03:17:12 System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByStream_ValidUserAssembly [FAIL] 03:17:12 System.IO.FileNotFoundException : Could not load the specified file. 03:17:12 Stack Trace: 03:17:12 at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) 03:17:12 at System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByStream_ValidUserAssembly() ``` +7254 area-System.Net Shutting down a Socket should not set it to disconnected [Calling `Shutdown` on a `Socket` will cause it to become disconnected](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L4212) which is incorrect. This can cause, for example, `TcpClient.GetStream` to fail on a half-open socket. +7261 area-Infrastructure Make builds deterministic We need to enable `/deterministic` flag for the compiler and work through any other tools that cause the builds to not be deterministic. See https://github.com/dotnet/roslyn/blob/master/build/scripts/test-determinism.ps1 for how Roslyn tests this. +7266 area-System.Net Lazily allocate ChannelBinding in CurlHandler This SafeHandle is only used by HttpContent-derived types that care about TransportContext, which is not a common case, and it's only used by the implementation when doing something custom with certificates and when there is request content. Lazily allocate it. Just as an example, before this change, it was being allocated during ~50 tests. After this change, it's allocated just once, in the test explicitly verifying the binding. cc: @ericeil, @kapilash, @davidsh +7268 area-System.Net Avoid creating CurlChannelBinding.ToString() description until needed Today CurlChannelBinding creates the result of ToString when the token is set into it. Getting the description of the binding is rare compared to setting a token into the binding, so just create the string when it's requested. Also a bit of miscellaneous cleanup in related code. cc: @bartonjs, @ericeil, @davidsh, @kapilash +7270 area-Meta Archlinux 7 Failed Test Results "``` Running tests in ./bin/tests/Linux.AnyCPU.Release//System.Reflection.Metadata.Tests/dnxcore50 ./corerun xunit.console.netcore.exe System.Reflection.Metadata.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=outerloop -notrait category=nonlinuxtests -notrait Benchmark=true xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Xml.RW.RwFactory.Tests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.IO.FileSystem.DriveInfo.Tests Discovered: System.Xml.RW.RwFactory.Tests Info: System.Xml.RW.RwFactory.Tests has no tests to run Discovering: System.Reflection.Metadata.Tests Discovered: System.IO.FileSystem.DriveInfo.Tests Starting: System.IO.FileSystem.DriveInfo.Tests Discovered: System.Reflection.Metadata.Tests Starting: System.Reflection.Metadata.Tests System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests.PropertiesOfValidDrive [FAIL] Assert.Equal() Failure Expected: Fixed Actual: Unknown Stack Trace: at System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests.PropertiesOfValidDrive() Finished: System.IO.FileSystem.DriveInfo.Tests === TEST EXECUTION SUMMARY === System.IO.FileSystem.DriveInfo.Tests Total: 5, Errors: 0, Failed: 1, Skipped: 0, Time: 1.927s Finished: System.Reflection.Metadata.Tests === TEST EXECUTION SUMMARY === System.Reflection.Metadata.Tests Total: 153, Errors: 0, Failed: 0, Skipped: 0, Time: 1.704s error: One or more tests failed while running tests from 'System.IO.FileSystem.DriveInfo.Tests'. Exit code 1. ``` ``` Running tests in ./bin/tests/Linux.AnyCPU.Release//System.Runtime.Serialization.Json.Tests/dnxcore50 ./corerun xunit.console.netcore.exe System.Runtime.Serialization.Json.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=outerloop -notrait category=nonlinuxtests -notrait Benchmark=true Starting: System.Runtime.Tests CharTests.TestToUpper [FAIL] Assert.Equal() Failure Expected: 0xabbd Actual: 'Ꮽ' Stack Trace: xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Serialization.Json.Tests at CharTests.TestToUpper() CharTests.TestToUpperInvariant [FAIL] Assert.Equal() Failure Expected: 0xabbd Actual: 'Ꮽ' Stack Trace: at CharTests.TestToUpperInvariant() Discovered: System.Runtime.Serialization.Json.Tests Starting: System.Runtime.Serialization.Json.Tests Finished: System.Runtime.Tests === TEST EXECUTION SUMMARY === System.Runtime.Tests Total: 3786, Errors: 0, Failed: 2, Skipped: 0, Time: 8.102s error: One or more tests failed while running tests from 'System.Runtime.Tests'. Exit code 2. Finished: System.Runtime.Serialization.Json.Tests === TEST EXECUTION SUMMARY === System.Runtime.Serialization.Json.Tests Total: 110, Errors: 0, Failed: 0, Skipped: 0, Time: 6.415s System.Diagnostics.Tests.ProcessTests.TestGetProcesses [FAIL] System.IO.InvalidDataException : Found invalid data while decoding. Stack Trace: at System.IO.StringParser.ParseNextChar() at Interop.procfs.TryParseStatFile(String statFilePath, ParsedStat& result, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(ParsedStat procFsStat, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(Int32 pid, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Tests.ProcessTests.TestGetProcesses() Finished: System.Diagnostics.Process.Tests === TEST EXECUTION SUMMARY === System.Diagnostics.Process.Tests Total: 87, Errors: 0, Failed: 1, Skipped: 0, Time: 31.505s error: One or more tests failed while running tests from 'System.Diagnostics.Process.Tests'. Exit code 1. ``` ``` Running tests in ./bin/tests/Linux.AnyCPU.Release//System.Runtime.Serialization.Json.Tests/dnxcore50 ./corerun xunit.console.netcore.exe System.Runtime.Serialization.Json.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=outerloop -notrait category=nonlinuxtests -notrait Benchmark=true Starting: System.Runtime.Tests CharTests.TestToUpper [FAIL] Assert.Equal() Failure Expected: 0xabbd Actual: 'Ꮽ' Stack Trace: xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Serialization.Json.Tests at CharTests.TestToUpper() CharTests.TestToUpperInvariant [FAIL] Assert.Equal() Failure Expected: 0xabbd Actual: 'Ꮽ' Stack Trace: at CharTests.TestToUpperInvariant() Discovered: System.Runtime.Serialization.Json.Tests Starting: System.Runtime.Serialization.Json.Tests Finished: System.Runtime.Tests === TEST EXECUTION SUMMARY === System.Runtime.Tests Total: 3786, Errors: 0, Failed: 2, Skipped: 0, Time: 8.102s error: One or more tests failed while running tests from 'System.Runtime.Tests'. Exit code 2. Finished: System.Runtime.Serialization.Json.Tests === TEST EXECUTION SUMMARY === System.Runtime.Serialization.Json.Tests Total: 110, Errors: 0, Failed: 0, Skipped: 0, Time: 6.415s System.Diagnostics.Tests.ProcessTests.TestGetProcesses [FAIL] System.IO.InvalidDataException : Found invalid data while decoding. Stack Trace: at System.IO.StringParser.ParseNextChar() at Interop.procfs.TryParseStatFile(String statFilePath, ParsedStat& result, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(ParsedStat procFsStat, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(Int32 pid, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Tests.ProcessTests.TestGetProcesses() Finished: System.Diagnostics.Process.Tests === TEST EXECUTION SUMMARY === System.Diagnostics.Process.Tests Total: 87, Errors: 0, Failed: 1, Skipped: 0, Time: 31.505s error: One or more tests failed while running tests from 'System.Diagnostics.Process.Tests'. Exit code 1. ``` ``` Running tests in ./bin/tests/Linux.AnyCPU.Release//System.Globalization.Calendars.Tests/dnxcore50 ./corerun xunit.console.netcore.exe System.Globalization.Calendars.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=outerloop -notrait category=nonlinuxtests -notrait Benchmark=true xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Globalization.Tests Discovered: System.Diagnostics.Tracing.Tests Starting: System.Diagnostics.Tracing.Tests Discovered: System.Globalization.Tests EventSource Error: ERROR: Exception in Command Processing for EventSource BadEventSource_Bad_Type_UserClass: Unsupported type UserClass in event source. Starting: System.Globalization.Tests Finished: System.Diagnostics.Tracing.Tests === TEST EXECUTION SUMMARY === System.Diagnostics.Tracing.Tests Total: 4, Errors: 0, Failed: 0, Skipped: 0, Time: 0.473s xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Globalization.Calendars.Tests System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3, 2], CurrencyNegativePattern = 9, ... }, expected: [3, 2]) [FAIL] Assert.Equal() Failure Expected: Int32[] [3, 2] Actual: Int32[] [3] Stack Trace: at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(NumberFormatInfo format, Int32[] expected) Finished: System.Globalization.Tests === TEST EXECUTION SUMMARY === Discovered: System.Globalization.Calendars.Tests System.Globalization.Tests Total: 984, Errors: 0, Failed: 1, Skipped: 0, Time: 1.548s Starting: System.Globalization.Calendars.Tests error: One or more tests failed while running tests from 'System.Globalization.Tests'. Exit code 1. Finished: System.Globalization.Calendars.Tests === TEST EXECUTION SUMMARY === System.Globalization.Calendars.Tests Total: 1850, Errors: 0, Failed: 0, Skipped: 0, Time: 1.065s ``` ``` Running tests in ./bin/tests/Linux.AnyCPU.Release//System.Net.NetworkInformation.WinRT.Unit.Tests/dnxcore50 ./corerun xunit.console.netcore.exe System.Net.NetworkInformation.WinRT.Unit.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=outerloop -notrait category=nonlinuxtests -notrait Benchmark=true Discovering: System.Net.Ping.Functional.Tests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovered: System.Net.Ping.Functional.Tests Starting: System.Net.Ping.Functional.Tests Discovering: System.Net.NetworkInformation.WinRT.Unit.Tests Discovered: System.Net.NetworkInformation.WinRT.Unit.Tests Starting: System.Net.NetworkInformation.WinRT.Unit.Tests System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 0) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 1) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHostAndTimeout [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__25.MoveNext() System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 50) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 1000) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHostAndTimeoutAndBufferAndPingOptions_Unix [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__25.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeout [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHostAndTimeoutAndBuffer_Unix [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__25.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHost [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__25.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPings_ReuseInstance_Hostname [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__25.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddress_AddressAsString [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.Ping_DisposeAfterSend_Success [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__25.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeoutAndBuffer_Unix [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddress [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: at System.Net.NetworkInformation.Ping.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Finished: System.Net.Ping.Functional.Tests === TEST EXECUTION SUMMARY === System.Net.Ping.Functional.Tests Total: 28, Errors: 0, Failed: 15, Skipped: 0, Time: 1.257s error: One or more tests failed while running tests from 'System.Net.Ping.Functional.Tests'. Exit code 15. Finished: System.Net.NetworkInformation.WinRT.Unit.Tests === TEST EXECUTION SUMMARY === System.Net.NetworkInformation.WinRT.Unit.Tests Total: 5, Errors: 0, Failed: 0, Skipped: 0, Time: 0.693s ``` ``` Running tests in ./bin/tests/Linux.AnyCPU.Release//System.Runtime.Loader.DefaultContext.Tests/dnxcore50 ./corerun xunit.console.netcore.exe System.Runtime.Loader.DefaultContext.Tests.dll -xml testResults.xml -notrait category=failing -notrait category=outerloop -notrait category=nonlinuxtests -notrait Benchmark=true Discovering: System.Runtime.Loader.Tests Discovered: System.Runtime.Loader.Tests Starting: System.Runtime.Loader.Tests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Loader.DefaultContext.Tests System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByPath_ValidUserAssembly [FAIL] System.IO.FileNotFoundException : Could not load the specified file. Stack Trace: at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByPath_ValidUserAssembly() System.Runtime.Loader.Tests.AssemblyLoadContextTest.GetLoadContextTest_ValidUserAssembly [FAIL] System.IO.FileNotFoundException : Could not load the specified file. Stack Trace: at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.Tests.AssemblyLoadContextTest.GetLoadContextTest_ValidUserAssembly() System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByStream_ValidUserAssembly [FAIL] System.IO.FileNotFoundException : Could not load the specified file. Stack Trace: at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByStream_ValidUserAssembly() Finished: System.Runtime.Loader.Tests === TEST EXECUTION SUMMARY === Discovered: System.Runtime.Loader.DefaultContext.Tests System.Runtime.Loader.Tests Total: 10, Errors: 0, Failed: 3, Skipped: 0, Time: 1.025s Starting: System.Runtime.Loader.DefaultContext.Tests error: One or more tests failed while running tests from 'System.Runtime.Loader.Tests'. Exit code 3. Finished: System.Runtime.Loader.DefaultContext.Tests === TEST EXECUTION SUMMARY === System.Runtime.Loader.DefaultContext.Tests Total: 2, Errors: 0, Failed: 0, Skipped: 0, Time: 1.039s Finished: System.Security.Cryptography.Algorithms.Tests === TEST EXECUTION SUMMARY === System.Security.Cryptography.Algorithms.Tests Total: 253, Errors: 0, Failed: 0, Skipped: 0, Time: 12.283s Test project file ./src/System.Security.Cryptography.ProtectedData/tests/System.Security.Cryptography.ProtectedData.Tests.csproj indicates this test is not supported on Linux, skipping Test project file ./src/System.Security.Cryptography.Csp/tests/System.Security.Cryptography.Csp.Tests.csproj indicates this test is not supported on Linux, skipping ``` ``` 7 test(s) failed ``` I only counted 6? Basically only grepping the sections between ""Running tests in"". " +7272 area-System.Net Remove unnecessary branches in UrlDecoder FlushBytes already checks for if _numBytes > 0 so we can remove this check at the call site I renamed FlushBytes to FlushBytesIfNeeded to convey this semantic at the call site /cc @stephentoub @jamesqo +7274 area-System.Runtime Type forwarding for same type defined in both System.Runtime.Interop and *.PInvoke assembly "Currently, type forwarding is defined for (for example, but not limited to) the **System.Runtime.InteropServices.GuidAttribute** type in both the **System.Runtime.InteropServices.PInvoke** and the **System.Runtime.InteropServices** assembly. The nuget packages for these assemblies are listed as dependencies of the **Microsoft.NETCore** package in the latest build (5.0.1-rc3-23925-00): ``` json ""Microsoft.NETCore/5.0.1-rc3-23925-00"": { ""type"": ""package"", ""dependencies"": { ""System.Runtime.InteropServices"": ""4.1.0-rc3-23925-00"", ""System.Runtime.InteropServices.PInvoke"": ""4.0.0-rc3-23925-00"", } ``` This means that if you reference the latest build of **Microsoft.NETCore.UniversalWindowsPlatform** (5.2.0-rc3-23925-00), you'll get the following compile error whenever you use one of the types that are forwarded in these two assemblies: _error CS0433: The type 'GuidAttribute' exists in both 'System.Runtime.InteropServices.PInvoke, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Runtime.InteropServices, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'_ Sorry if I'm missing the obvious here ... " +7277 area-System.Net #7276 Fix Socket.SendAsync calling NetEventSource.Enter twice +7280 area-System.Collections Inconsistent bounds checking for CopyTo operations (Standard collections, Generics and Specialized) "Consider the following example (trying to copy an empty dictionary to 1-sized buffer starting from index 1, 1 is out of bounds, no exceptions been thrown) ``` C# using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace TestX { class Program { static void Main(string[] args) { var dictionary = new Dictionary(); var dictionaryAsCollection = dictionary as ICollection; var buffer = new KeyValuePair[1]; dictionaryAsCollection.CopyTo(buffer, 1); // 1 is out of bounds for buffer Console.WriteLine(buffer.First()); } } } ``` Now we change CopyTo arguments (1 -> 2), this code will throw an exception (ArgumentOutOfRangeException) ``` C# using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace TestX { class Program { static void Main(string[] args) { var dictionary = new Dictionary(); var dictionaryAsCollection = dictionary as ICollection; var buffer = new KeyValuePair[1]; dictionaryAsCollection.CopyTo(buffer, 2); // 2 is out of bounds for buffer Console.WriteLine(buffer.First()); } } } ``` Now, instead of changing CopyTo arguments, add an element to the dictionary. We will receive an exception of type ArgumentException ``` C# using System.Collections; using System.Collections.Generic; using System.Linq; namespace TestX { class Program { static void Main(string[] args) { var dictionary = new Dictionary(); dictionary.Add(""Test"", ""Ok""); // new dictionary element var dictionaryAsCollection = dictionary as ICollection; var buffer = new KeyValuePair[1]; dictionaryAsCollection.CopyTo(buffer, 1); // 1 is out of bounds for buffer Console.WriteLine(buffer.First()); } } } ``` For (almost) all the standard collections there are an issue: when CopyTo starting index is equal to destination buffer length, no ArgumentOutOfRangeException is thrown. For me it seems inconsistent: CopyTo(buffer, 1) should throw ArgumentOutOfRangeException in all cases except CopyTo(buffer, 0), because this time it is only valid argument value. I've created a small project in order to demonstrate this issue: https://github.com/nettsundere/CollectionsCopyTo And the output is: ``` Trying to copy to buffer having size of 1 starting with index=1 -------------------------------------------------- Array No exceptions -------------------------------------------------- ArrayList No exceptions -------------------------------------------------- BitArray No exceptions -------------------------------------------------- ConcurrentBag No exceptions -------------------------------------------------- ConcurrentDictionary No exceptions -------------------------------------------------- ConcurrentQueue No exceptions -------------------------------------------------- ConcurrentStack No exceptions -------------------------------------------------- Dictionary No exceptions -------------------------------------------------- HashSet No exceptions -------------------------------------------------- Hashtable No exceptions -------------------------------------------------- HybridDictionary No exceptions -------------------------------------------------- List No exceptions -------------------------------------------------- LinkedList No exceptions -------------------------------------------------- ListDictionary No exceptions -------------------------------------------------- NameValueCollection No exceptions -------------------------------------------------- Queue No exceptions -------------------------------------------------- Queue (Generic) No exceptions -------------------------------------------------- Readonly collection No exceptions -------------------------------------------------- SortedDictionary No exceptions -------------------------------------------------- SortedList No exceptions -------------------------------------------------- SortedList (Generic) No exceptions -------------------------------------------------- Sorted set No exceptions -------------------------------------------------- Stack No exceptions -------------------------------------------------- Stack (Generic) No exceptions -------------------------------------------------- StringDictionary No exceptions - - - Trying to copy to buffer having size of 1 starting with index=2 -------------------------------------------------- Array System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Array.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.ArrayCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 16 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__0() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 22 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- ArrayList System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Collections.ArrayList.CopyTo(Array array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.ArrayListCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 28 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__1() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 23 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- BitArray System.ArgumentException: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. at System.Collections.BitArray.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.BitArrayCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 42 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__2() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 24 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- ConcurrentBag No exceptions -------------------------------------------------- ConcurrentDictionary System.ArgumentException: The index is equal to or greater than the length of the array, or the number of elements in the dictionary is greater than the available space from index to the end ination array. at System.Collections.Concurrent.ConcurrentDictionary`2.System.Collections.ICollection.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.ConcurrentDictionaryCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 71 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__4() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 26 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- ConcurrentQueue System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Collections.Concurrent.ConcurrentQueue`1.CopyTo(T[] array, Int32 index) at CollectionsCopyTo.CopyToExample.ConcurrentQueueCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 99 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__5() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 27 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- ConcurrentStack System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Collections.Concurrent.ConcurrentStack`1.CopyTo(T[] array, Int32 index) at CollectionsCopyTo.CopyToExample.ConcurrentStackCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 85 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__6() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 28 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Dictionary System.ArgumentOutOfRangeException: Non-negative number required. Parameter name: index at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) at System.Collections.Generic.Dictionary`2.System.Collections.ICollection.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.DictionaryCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 114 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__7() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 29 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- HashSet System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.Collections.Generic.HashSet`1.CopyTo(T[] array, Int32 arrayIndex, Int32 count) at CollectionsCopyTo.CopyToExample.HashSetCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 128 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__8() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 30 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Hashtable System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.Collections.Hashtable.CopyTo(Array array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.HashtableCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 143 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__9() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 31 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- HybridDictionary System.ArgumentException: Insufficient space in the target location to copy the information. at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.HybridDictionaryCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 158 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__10() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 32 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- List System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Collections.Generic.List`1.CopyTo(T[] array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.ListCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 172 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__11() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 33 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- LinkedList System.ArgumentOutOfRangeException: Must be less than or equal to the size of the collection. Parameter name: index Actual value was 2. at System.Collections.Generic.LinkedList`1.CopyTo(T[] array, Int32 index) at CollectionsCopyTo.CopyToExample.LinkedListCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 186 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__12() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 34 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- ListDictionary System.ArgumentException: Insufficient space in the target location to copy the information. at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.ListDictionaryCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 200 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__13() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 35 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- NameValueCollection System.ArgumentException: Insufficient space in the target location to copy the information. at System.Collections.Specialized.NameValueCollection.CopyTo(Array dest, Int32 index) at CollectionsCopyTo.CopyToExample.NameValueCollectionCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 214 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__14() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 36 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Queue System.ArgumentException: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. at System.Collections.Queue.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.QueueCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 242 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__15() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 37 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Queue (Generic) System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: arrayIndex Actual value was 2. at System.Collections.Generic.Queue`1.CopyTo(T[] array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.QueueGenericCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 228 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__16() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 38 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Readonly collection System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) at System.Collections.Generic.List`1.CopyTo(T[] array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.ReadOnlyCollectionCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 256 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__17() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 39 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- SortedDictionary System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.Collections.Generic.SortedSet`1.System.Collections.ICollection.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.SortedDictionaryCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 271 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__18() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 40 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- SortedList System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.Collections.SortedList.CopyTo(Array array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.SortedListCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 301 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__19() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 41 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- SortedList (Generic) System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index Actual value was 2. at System.Collections.Generic.SortedList`2.System.Collections.ICollection.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.SortedListGenericCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 286 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__20() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 42 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Sorted set System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.Collections.Generic.SortedSet`1.CopyTo(T[] array, Int32 index, Int32 count) at CollectionsCopyTo.CopyToExample.SortedSetCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 315 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__21() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 43 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Stack System.ArgumentException: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. at System.Collections.Stack.CopyTo(Array array, Int32 index) at CollectionsCopyTo.CopyToExample.StackCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 343 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__22() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 44 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- Stack (Generic) System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: arrayIndex Actual value was 2. at System.Collections.Generic.Stack`1.CopyTo(T[] array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.StackGenericCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 329 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__23() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 45 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 -------------------------------------------------- StringDictionary System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.Collections.Hashtable.CopyTo(Array array, Int32 arrayIndex) at CollectionsCopyTo.CopyToExample.StringDictionaryCopyTo(Boolean greaterIndex) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\CopyToExample.cs:line 357 at CollectionsCopyTo.Program.<>c__DisplayClass1_0.b__24() in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 46 at CollectionsCopyTo.Program.FormatExceptionDetails(String header, Action exampleAction) in C:\Users\nettsundere\Documents\Visual Studio 2015\Projects\collectionsCopyTo\Program.cs:line 55 ``` upd: Fixed BitArray result upd2: Updated dependencies, new output This is obviously a breaking change, so I'm not changing anything, just trying to report / discuss an issue. " +7282 area-System.Net Ensure CurlHandler sets CBT even on fast verification path When we get called back by libcurl to verify the server's certificate, we try to take a fast path where we use OpenSSL's certificate verification rather than doing our own, which is more comprehensive but also slower. However, when we added that fast path, we inadvertently ended up not setting the Channel Binding Token in that case, only doing so in the fallback path. This fixes that, moving the configuring of the CBT up to before we ask OpenSSL to verify the cert. (I'd recommend reviewing the src changes with the whitespace-ignored view: https://github.com/dotnet/corefx/pull/7282/files?w=1) cc: @bartonjs, @kapilash, @davidsh +7284 area-System.Data Misleading ADP_OpenReaderExists exception message on MARS-disabled Sql Connection when incorrectly doing parallel requests "I've discovered the issue using ordinary .net4.5 on Windows but further investigating shows that it is related to code that now is in the .net Core While simultaneousely (incrorrcetly) using single SqlConnection with Multiple Active Result Sets (MARS) disabled an exception with text ``` There is already an open DataReader associated with this Command which must be closed first. ``` Note that text mentions same ""Command"" but in reality the resource taht is wrongly shared is not command but connection. The exception is raised from https://github.com/dotnet/corefx/blob/cf19c22be88b5ea31b5e2ea69ab3632f930b1e26/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs#L587 The comment ``` // if MARS is on, then a datareader associated with the command exists // or if MARS is off, then a datareader exists ``` above raising the exception is absolutely correct - if MARS is on the exception text is correct - problem is in using multiple readers with single command. But if mars is off the checks above checking for any active datareaders for the same connection, not only for datareaders for the same command. So the problem is that information about what scope (Connection or Command) was checked is not passed to exception cinstructor and it incorrectly always says that there is another reader associated with the _command_ " +7285 area-System.Net Reduce allocations in CookieContainer.GetCookieHeader "HttpClient defaults to UseCookies=true, which means by default every request ends up asking the CookieContainer to get the cookie header that should be used. Today, even if there aren't any cookies for the given Uri, this ends up doing a lot of allocation. And if there are cookies for the Uri, the serialization of each cookie results in a handful of strings, char[]s, and string[] allocations. This commit tweaks the implementation to avoid a bunch of these, including taking advantage of StringBuilderCache. (There are still some more that could be cleaned up with further work, but it becomes much more invasive.) For this sample program: ``` C# CookieContainer cc = new CookieContainer(); Uri exists = new Uri(""http://example.com/exists""); Uri notExists = new Uri(""http://example.com/notExists""); cc.Add(exists, new Cookie(""test1"", ""value1"")); cc.Add(exists, new Cookie(""test2"", ""value2"")); for (int i = 0; i < 1000; i++) { cc.GetCookieHeader(exists); } ``` before these changes, I see the following allocations: ![image](https://cloud.githubusercontent.com/assets/2642209/14066895/e68b9854-f424-11e5-910e-a65caff8f4ce.png) and after thes changes: ![image](https://cloud.githubusercontent.com/assets/2642209/14066898/14d278ae-f425-11e5-8f07-82bb29139f59.png) If I then change the GetCookieHeader line to be: ``` C# cc.GetCookieHeader(notExists); ``` before these changes, I see the following allocations: ![image](https://cloud.githubusercontent.com/assets/2642209/14066925/ad052856-f425-11e5-9049-1e38d8432687.png) and after these changes: ![image](https://cloud.githubusercontent.com/assets/2642209/14066930/c066e6c8-f425-11e5-82ce-989b6692d0a8.png) cc: @davidsh, @cipop, @ericeil " +7289 area-System.Net WebHeaderCollection: Specify ArgumentException paramName Split `CheckBadChars` into separate `CheckBadHeaderValueChars` and `CheckBadHeaderNameChars` methods and use `nameof` to include the `paramName` when throwing `ArgumentException`. +7292 area-System.Net Remove unnecessary string allocations in MultipartContent "More low-hanging fruit. When building up its output, MultipartContent is already using a StringBuilder, but it's creating temporary intermediate strings which it then writes to the StringBuilder, rather than just adding the constituent pieces to the StringBuilder directly. And when computing the length of the output, it's again generating lots of intermediate strings, when it could instead just measure the size of each of the constituent pieces. For a little perf test: ``` C# var subContent = new ByteArrayContent(Encoding.UTF8.GetBytes(""This is a ByteArrayContent"")); subContent.Headers.Add(""header1"", ""value1""); subContent.Headers.Add(""header2"", new[] { ""value2"", ""value3"", ""value4"" }); for (int i = 0; i < 1000; i++) { var mc = new MultipartContent(); mc.Add(subContent); mc.ReadAsStringAsync().GetAwaiter().GetResult(); } ``` Before: ![image](https://cloud.githubusercontent.com/assets/2642209/14069816/ba661554-f46c-11e5-8e26-b9616922b493.png) After: ![image](https://cloud.githubusercontent.com/assets/2642209/14069820/c8400bf8-f46c-11e5-8540-8c2a5d942340.png) cc: @davidsh, @cipop, @ericeil " +7293 area-System.Net Replace HttpContent.CreateCompletedTask with Task.CompletedTask We can just use Task.CompletedTask, rather than creating a new TCS and its Task each time. cc: @davidsh, @cipop, @ericeil +7294 area-Infrastructure "Win7 builds failing with """"GetTargetMachineInfo"" task failed unexpectedly""" "e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_debug/141/console ``` d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: The ""GetTargetMachineInfo"" task failed unexpectedly. [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] 18:12:03 d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-sysinfo-l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] 18:12:03 d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo) [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] 18:12:03 d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture() [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] 18:12:03 d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.GetTargetMachineInfo.Execute() [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] 18:12:03 d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] 18:12:03 d:\j\workspace\outerloop_win---9c9e7d59\Tools\publishtest.targets(77,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() [d:\j\workspace\outerloop_win---9c9e7d59\src\Common\tests\Common.Tests.csproj] ``` " +7295 area-System.Net [System.Net.Security]Disable direct Use of NTLM This is to track the changes to disable NTLM usage directly, +7298 area-Infrastructure "All builds failing with error ""Cannot delete workspace: remote file operation failed""" e.g. ``` 03:50:35 GitHub pull request #7297 of commit 8fcc99132a7a6f7781304fdb1321e4ad5ffb8ec7, no merge conflicts. 03:50:35 Setting status of 8fcc99132a7a6f7781304fdb1321e4ad5ffb8ec7 to PENDING with url http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/4085/ and message: 'Build started sha1 is merged.' 03:50:35 Using context: Innerloop Windows_NT Debug Build and Test 03:50:35 Building remotely on dci-win-bld-15 (windows-roslyn windows) in workspace d:\j\workspace\windows_nt_de---06b7984d 03:50:35 [WS-CLEANUP] Deleting project workspace... 03:50:41 ERROR: [WS-CLEANUP] Cannot delete workspace: remote file operation failed: d:\j\workspace\windows_nt_de---06b7984d at hudson.remoting.Channel@728b6416:dci-win-bld-15: hudson.remoting.ChannelClosedException: channel is already closed 03:50:41 ERROR: Cannot delete workspace: remote file operation failed: d:\j\workspace\windows_nt_de---06b7984d at hudson.remoting.Channel@728b6416:dci-win-bld-15: hudson.remoting.ChannelClosedException: channel is already closed ``` +7299 area-Infrastructure System.Globalization.Tests.CompareInfoTests.GetHashCode_EmptyString failed on Ubuntu 14.04 outerloop http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_debug/58/consoleFull ``` 02:40:21 Discovering: System.Globalization.Tests 02:40:21 Discovered: System.Globalization.Tests 02:40:21 Starting: System.Globalization.Tests 02:40:21 System.Globalization.Tests.CompareInfoTests.GetHashCode_EmptyString [FAIL] 02:40:22 Assert.Equal() Failure 02:40:22 Expected: 0 02:40:22 Actual: -482897332 02:40:22 Stack Trace: 02:40:22 at System.Globalization.Tests.CompareInfoTests.GetHashCode_EmptyString() 02:40:22 Finished: System.Globalization.Tests 02:40:22 ``` +7302 area-System.Net Improve memory usage of HttpClient's StreamToStreamCopy "Copying between streams represents one of the larger sources of memory allocations and copying in HttpClient. HttpClient has its own stream-to-stream copy implementation, but there are ways we can significantly improve it based on typical usage within HttpClient. This commit does the following: - Previously it would special case when both the source and destination stream were MemoryStreams, but even in that case it would allocate a temporary buffer and do a Read/Write loop to copy between them, and even then it's relatively rare to copy from a MemoryStream to a MemoryStream. Instead, if the source stream is a MemoryStream and we can get its buffer, we can do a single write to the destination (regardless of what kind of stream it is), avoiding the need for multiple read/writes and for the temporary buffer. If we can't get its buffer but its length is known to be less than or equal to the requested buffer size and it's positioned at the beginning, we can simply ToArray the source and still do a single write to the target. - If the destination is the special LimitMemoryStream, used for buffering output, and if that LimitMemoryStream was pre-sized based on the response having a Content-Length, then rather than allocating a temporary buffer and repeatedly copying from the source stream into that buffer and copying from the buffer into the memory stream, we can instead give the destination's buffer directly to be read into by the source, avoiding the temporary buffer and the extra copies. This is a very common case. - If the source does not need to be disposed after the copy, rather than doing our own copy loop, we can instead ask the source to use its CopyToAsync implementation to copy to the destination stream. Worst case this will be exactly what we were previously doing, but best case the source has its own CopyToAsync override that's more efficient. - When constructing a LimitMemoryStream, if the Content-Length isn't known, we were explicitly passing a 0 capacity to the base, which causes it to allocate a new zero-length array; I've added a ctor to avoid that. As a small example, with this short test: ``` C# var uri = new Uri(""http://httpbin.org/get""); var c = new HttpClient(); for (int i = 0; i < 100; i++) c.GetAsync(uri).GetAwaiter().GetResult().Dispose(); ``` before the change it allocated 1,411,714 bytes, and after the change, it allocated 1,003,702, for an ~30% reduction. That drop is almost entirely in avoiding needing byte[]s: I'd appreciate some extra scrutiny on this. cc: @davidsh, @cipop, @ericeil, @kapilash, @bartonjs, @ianhays " +7304 area-System.Numerics Vector while debugging incorrectly reports size of register The `Vector` type on a machine which supports 256 bit registers will return 8, however the debug/non-accelerated version of the register only will act as a 128bit register. This means that algorithms that look like so:: ``` csharp for(var offset= 0;count >= Vector.Count; count-= Vector.Count, offset+= Vector.Count) ``` Will go out of bounds or skip elements potentially while debugging giving an incorrect test. +7306 area-System.ComponentModel Small changes to unblock test scenario cc @twsouthwick +7311 area-System.ComponentModel Add support for IsDefaultAttribute on TypeDescriptor attributes This adds a layer between `System.Attribute` and the TypeDescriptor attributes that expose `IsDefaultAttribute`, `Matches`, and `TypeId` as these are used extensively in the TypeDescriptor implementation. @chlowell +7315 area-System.Net Refactor HttpClient with async/await "When HttpClient was initially written, async/await didn't exist, and it was written to use ContinueWith. By switching to async/await, we can both improve the readability and maintainability of the code and improve performance. This commit addresses just the HttpClient class and not the rest of the library, but those can follow. From a readability/maintainability perspective, the code is now more concise and linear, which should hopefully be evident from the diff. From a performance perspective, here's a little test using GetStringAsync: ``` C# var c = new HttpClient(); var url = new Uri(""http://httpbin.org/get""); for (int i = 0; i < 100; i++) { c.GetStringAsync(url).GetAwaiter().GetResult(); } ``` and here's an allocation comparison showing the number of allocations that change due to this switch: ![image](https://cloud.githubusercontent.com/assets/2642209/14107936/d5d5f738-f588-11e5-97c5-80fb22aac69f.png) and showing the amount of memory allocated: ![image](https://cloud.githubusercontent.com/assets/2642209/14107972/05ef2f0c-f589-11e5-949d-13a5e935a210.png) cc: @davidsh, @cipop, @ericeil " +7317 area-System.Net Unix NegotiateStream: Addressing PR feedback #7031 listed out the places in NegotiateStream that needed fix. This PR addresses those of the comments where the scope is limited to NegotiateStream functionality. Specifically, - the tests are cleaned up to remove boilerplate code. - `SecurityStatusAdapterPal` is changed to include a static constructor in the Debug mode. - Constants in pal_gssapi.cpp are defined at a single location. - CMakeLists.txt is modified to give proper, OS-specific error message +7318 area-System.Net Improve serial throughput of HttpClient on Unix "HttpClient on Unix has a thread dedicated to multiplexing the processing of any number of concurrent requests on that client. When a request comes in and that worker thread isn't running, a worker is spun up, and that worker will service any number of requests that come in while it's up. Then, when requests quiesce and there's no more processing to be done, the worker goes away. If more work later arrives, a new worker is spun up. This is done to avoid burning a thread per HttpClient when there's no work to be done on that client. It works well for bursts of activity as well as for sustained concurrent usage. However, if the client is used for a sequence of requests, one after the other, there's a good chance that the worker will go away between requests, requiring a new worker to be spun up for each. This has non-trivial costs, both in terms of CPU processing and in terms of managed and native resource allocation/deallocation. This commit enables a worker to briefly pause before exiting, blocking for a short period of time for new work to arrive rather than simply exiting. With a simple serial workload like: ``` C# using System; using System.Diagnostics; using System.Net.Http; using System.Threading.Tasks; public class Program { public static void Main() { MainAsync().GetAwaiter().GetResult(); } private static async Task MainAsync() { var c = new HttpClient(); var url = new Uri(""http://httpbin.org/ip""); while (true) { var sw = Stopwatch.StartNew(); for (int i = 0; i < 100; i++) { await c.GetStringAsync(url); } Console.WriteLine(sw.Elapsed.TotalSeconds); Task.Delay(500).Wait(); } } } ``` Prior to this change, each run of 100 requests would end up spinning up anywhere between 20 and 40 workers, whereas after the change it typically only spins up 1. This has a significant impact on throughput, typically doubling throughput of this test on my machine, e.g. before: ``` 4.1502928 3.8951023 4.7506992 4.0254529 ``` and after: ``` 2.2819518 1.9307756 1.9129248 1.8165896 ``` cc: @ericeil, @kapilash, @davidsh, @cipop " +7323 area-System.Globalization Add a few culture tests to System.Globalization Ports missing ToF tests to Open. resolves #6429 +7325 area-System.Security Open System.Security.Principal.WindowsIdentity As a developer I need access to the current logged in active directory user to check if the user has a specific role. Normally I do this with: ``` csharp WindowsIdentity currentUser = WindowsIdentity.GetCurrent(); var groups = currentUser.Groups; //or groups.Claims ``` So I can get the SID or the groups of the user. Most companies want to control the access of the user with active directory. The enterprise application uses this information to determine whether a user got access or not. If there is no api to access this information, enterprise application development with uwp becomes uninteresting. Please help us out! +7326 area-System.Text Fix System.Text.Encoding test helper. A test helper in System.Text.Encoding had a typo that was causing the GetBytes(char[],...) methods to not be tested for positive validation. resolves #6924 +7328 area-System.Text Add tests for CodePages with duplicate names. There are two names that have duplicate associated CodePages. For those two names, we have to test with the expectation that querying the name will always return the same codepage. resolves #6456 +7329 area-Infrastructure Pass additional arguments to the dev workflow scripts Right now the dev workflow scripts only admits certain parameters and we want the developer to be able to pass additional parameters to them and propagate those parameters to the msbuild call +7330 area-System.Diagnostics Add Tracing test to filter an event with a higher EventLevel We didn't have any tests that filtered events with a higher event level than being listened to. This adds one (adapted from a ToF test) and resolves #6428. +7332 area-System.Collections Fill coverage gaps for Collections.Concurrent One test supplied most of the missing coverage but simply wasn't decorated as a fact. Most other missing coverage bits were the result of the same test taking different code paths from execution to execution (e.g. race conditions) resolves #6417 +7335 area-System.Diagnostics Calling EventSource.WriteEvent(int eventId, string arg1, string arg2) throws an ArgumentNullException "I'm calling the method EventSource.WriteEvent(int eventId, string arg1, string arg2) and arg2 is a string with 90947 characters. It throws the following exception: Exception thrown: 'System.ArgumentNullException' in mscorlib.ni.dll Additional information: Value cannot be null. {""Value cannot be null.\r\nParameter name: format""} ``` at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(IFormatProvider provider, String format, Object[] args) at System.Environment.GetResourceString(String key, Object[] values) at System.Diagnostics.Tracing.EventSource.ThrowEventSourceException(String eventName, Exception innerEx) at System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(Int32 eventId, Guid* relatedActivityId, Int32 eventDataCount, EventData* data) at System.Diagnostics.Tracing.EventSource.WriteEvent(Int32 eventId, String arg1, String arg2) ``` " +7337 area-System.Net Add more tests for HttpClient To have more confidence while refactoring (https://github.com/dotnet/corefx/pull/7315), added more HttpClient coverage, in particular of error paths. Brings HttpClient line coverage from 64.7% to 98.3%, and branch coverage from 42.3% to 78.7%. cc: @davidsh, @cipop, @ericeil, @kapilash +7340 area-System.Net DnsTests.GetHostEntryAsyncWithAddress failed on outerloop ubuntu14.04, ipaddress is null. ``` Discovering: System.Net.NameResolution.Functional.Tests 02:06:51 Discovered: System.Net.NameResolution.Functional.Tests 02:06:51 Starting: System.Net.NameResolution.Functional.Tests 02:06:51 System.Net.NameResolution.Tests.DnsTests.GetHostEntryAsyncWithAddress [FAIL] 02:06:51 System.ArgumentNullException : Value cannot be null. 02:06:51 Parameter name: address 02:06:51 Stack Trace: 02:06:51 at System.Net.Dns.HostResolutionBeginHelper(IPAddress address, Boolean flowContext, Boolean includeIPv6, AsyncCallback requestCallback, Object state) 02:06:51 at System.Net.Dns.BeginGetHostEntry(IPAddress address, AsyncCallback requestCallback, Object stateObject) 02:06:51 at System.Net.Dns.<>c.b__15_0(IPAddress arg, AsyncCallback requestCallback, Object stateObject) 02:06:51 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) 02:06:51 at System.Threading.Tasks.TaskFactory`1.FromAsync[TArg1](Func`4 beginMethod, Func`2 endMethod, TArg1 arg1, Object state) 02:06:51 at System.Net.Dns.GetHostEntryAsync(IPAddress address) 02:06:51 at System.Net.NameResolution.Tests.DnsTests.<>c__DisplayClass1_0.b__0() 02:06:51 at System.Net.NameResolution.Tests.DnsTests.GetHostEntryAsync(Func`1 getHostEntryFunc) 02:06:51 at System.Net.NameResolution.Tests.DnsTests.d__1.MoveNext() 02:06:51 --- End of stack trace from previous location where exception was thrown --- 02:06:51 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 02:06:51 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 02:06:51 --- End of stack trace from previous location where exception was thrown --- 02:06:51 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 02:06:51 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 02:06:51 --- End of stack trace from previous location where exception was thrown --- 02:06:51 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 02:06:51 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 02:06:51 Finished: System.Net.NameResolution.Functional.Tests ``` +7342 area-System.Net ARM build failing due to padding warning in System.Net.Security.Native I encounter a `-Wpadded` warning when building corefx for Linux arm32 environment (using the `arm cross` option in the build script). The build fails due to the presence of `-Werror` flag. ``` In file included from /home/prajwal/dotnet/corefx/src/Native/System.Net.Security.Native/pal_gssapi.cpp:7: /home/prajwal/dotnet/corefx/src/Native/System.Net.Security.Native/pal_gssapi.h:42:8: error: padding size of 'PAL_GssBuffer' with 4 bytes to alignment boundary [-Werror,-Wpadded] struct PAL_GssBuffer ^ 1 error generated. ``` This occurs due to the size of uint8_t pointer being 4 bytes on Linux arm32. I am able to suppress this warning using the `-Wno-padded` warning in the CMakeLists file. Is this a valid fix (suppressing all future padding warnings)? +7343 area-System.Diagnostics "System.Diagnostics.Process doesn't allow to ""wait and kill"" without a race" "Suppose I have a `System.Diagnostics.Process` bound to some running process. I want to wait until that process exits and if it fails to exit in five seconds I want that process terminated. Here's a piece of pseudocode: ``` if( !process.WaitForExit( 5000 ) ) { process.Kill(); } process.Dispose(); ``` The problem is the process might exit between `WaitForExit()` and `Kill()` and then this code gets a rather generic exception. There's no way to write the code above such that there's no potential for the race condition between the other process exiting and this process making the decision of whether to terminate the other process or not. Same problem on desktop. There're three approaches to how this can be resolved. The first one is that `Kill()` does nothing if the process has exited. This would violate the contract stated in the documentation but it's actually the right thing to do. The purpose of `Kill()` is ""get rid of the process"" and if it so happens the process has exited - okay, nothing to do. I cannot imagine a reasonable case where someone would blindly call `Kill()` and then catch the possible exception and make any decisions on what to do based on whether there was an exception. The second one is that a parameter with a default value is added to `Kill()` - such that it turns into `Kill( bool throwIfExited = true )`. This prevents violating the current contract but honestly it's stupid. The third one is crafting some special exception exactly for this case - such that the caller can reliably detect that the process has exited by programmatically inspecting the exception. This would break the contract and it's also stupid. " +7348 area-System.Net Fix NullReferenceException in HttpClient.BaseAddress when logging enabled cc: @davidsh, @cipop, @josguil +7351 area-System.Globalization CharUnicodeInfo has incorrect results on Unix CharUnicodeInfo is expected to return consistent (identical) results across platforms, according to the latest Unicode Standard - 8.0.0 In PR #7279 I added tests for CharUnicodeInfo: the test data comes from the [publicly available Unicode dataset](http://www.unicode.org/Public/UNIDATA/UnicodeData.txt). The Windows tests pass, but Unix builds don't. Unfortunately, owing to a bug in xunit, we can't use [MemberData], so the first assertion failure stops all the tests from running. I presume there are more failures that therefore aren't being reported Here are some examples of the failures. These are not the only ones - there are many more - CodeValue: 00A7; Expected `GetUnicodeCategory`: OtherPunctuation; actual: OtherSymbol - CodeValue: 09F4; Expected `GetNumericValue`: 0.0625; actual: 1 /cc @tarekgh +7357 area-Infrastructure Win7 run failed with coreclr bind error ``` 10:08:22 Installing dotnet cli... 10:08:26 Restoring BuildTools version 1.0.25-prerelease-00228-02... 10:08:26 Failed to load the dll from d:\j\workspace\outerloop_win---9c9e7d59\Tools\dotnetcli\shared\Microsoft.NETCore.App\1.0.0-rc2-23928\coreclr.dll, HRESULT: 0x8007007E 10:08:26 Failed to bind to coreclr 10:08:26 ERROR: Could not restore build tools correctly. See 'd:\j\workspace\outerloop_win---9c9e7d59\init-tools.log' for more details. ``` This may be from dotnetcli update? cc @dagood +7358 area-System.IO System.IO.FileSystem: Unix SetCurrentDirectory follows symlinks "Using `Directory.SetCurrentDirectory` on a symlink in Unix follows the symlink and sets the directory to what the symlink links to. This differs from the Windows behavior as well as the behavior one would see on the command line using similar utilities. Unit test: ``` [ConditionalFact(nameof(CanCreateSymbolicLinks))] public void SetToPathContainingSymLink() { var path = GetTestFilePath(); var linkPath = GetTestFilePath(); Directory.CreateDirectory(path); Assert.True(MountHelper.CreateSymbolicLink(linkPath, path, isDirectory: true)); // Both the symlink and the target exist Assert.True(Directory.Exists(path), ""path should exist""); Assert.True(Directory.Exists(linkPath), ""linkPath should exist""); // Set Current Directory to symlink string currentDir = Directory.GetCurrentDirectory(); try { Console.WriteLine(""LINKPATH : "" + linkPath); Console.WriteLine(""PATH : "" + path); Directory.SetCurrentDirectory(linkPath); Assert.Equal(path, Directory.GetCurrentDirectory()); } finally { Directory.SetCurrentDirectory(currentDir); } Assert.Equal(currentDir, Directory.GetCurrentDirectory()); } ``` On Windows the current directory is set to LinkPath; on Unix it is path. Ubuntu command line behavior using `cd` and `pwd`: ``` mkdir cat touch cat/fluffy sudo ln -s cat fat cd fat pwd ``` prints `/home/ianha/test/fat`. Ubuntu c program behavior using `getcwd` and `chdir` (what we interop to in System.IO.FileSystem) follows the link as expected: ``` #include #include #include int main(char args[]) { char* currentPath = malloc(300); char linkPath[] = ""fat""; chdir(linkPath); getcwd(currentPath, 299); printf(""%s\n"", currentPath); free(currentPath); } ``` Though the current behavior aligns with the c behavior on Unix, it is different from Windows so I decided to open this issue for Future visibility. @stephentoub " +7360 area-System.Collections System.Collections.Concurrent.Tests.BlockingCollectionTests.TestBugFix914998 failed in Windows outerloop See http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_windows_nt_debug/141/consoleFull ``` 08:57:28 System.Collections.Concurrent.Tests.BlockingCollectionTests.TestBugFix914998 [FAIL] 08:57:28 Assert.Equal() Failure 08:57:28 Expected: 1 08:57:28 Actual: -1 08:57:28 Stack Trace: 08:57:28 d:\j\workspace\outerloop_win---069ccc6f\src\System.Collections.Concurrent\tests\BlockingCollectionTests.cs(169,0): at System.Collections.Concurrent.Tests.BlockingCollectionTests.TestBugFix914998() ``` +7362 area-Infrastructure build.sh throws no errors even though there are test failures Build.sh will build and run the tests as part of its workflow, but if a test fails, the build will still succeed. This is wrong since CI will eventually just run build.sh so we specifically want that build.sh should fail if a test fails. +7363 area-System.Runtime Add tests for System.Runtime. Add tests to cover all coverage gaps in System.Runtime and System.Runtime.Extensions with the exception of the URI tests which still need to be ported. resolves #6445. +7364 area-System.Net 2 HttpClientHandler_ServerCertificates_Test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/debian8.2_debug_tst/763/console ``` 14:24:52 System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.NoCallback_RevokedCertificate_RevocationChecking_Fails [FAIL] 14:24:52 Assert.Throws() Failure 14:24:52 Expected: typeof(System.Net.Http.HttpRequestException) 14:24:52 Actual: typeof(System.Threading.Tasks.TaskCanceledException): A task was canceled. 14:24:52 Stack Trace: 14:24:52 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:24:52 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:24:52 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 14:24:52 at System.Net.Http.HttpClient.d__59.MoveNext() 14:24:52 --- End of stack trace from previous location where exception was thrown --- 14:24:52 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:24:52 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` ``` 14:26:32 System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds [FAIL] 14:26:32 System.Threading.Tasks.TaskCanceledException : A task was canceled. 14:26:32 Stack Trace: 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:26:32 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 14:26:32 at System.Net.Http.HttpClient.d__59.MoveNext() 14:26:32 --- End of stack trace from previous location where exception was thrown --- 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 14:26:32 at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__7.MoveNext() 14:26:32 --- End of stack trace from previous location where exception was thrown --- 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:26:32 --- End of stack trace from previous location where exception was thrown --- 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:26:32 --- End of stack trace from previous location where exception was thrown --- 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:26:32 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Both tests failed because a TaskCanceledException was thrown. These do not seem to be recurring failures. @davidsh , @CIPop +7367 area-System.Globalization DateTimeFormatInfoGetInstance.GetInstance failed on Unix in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/debian8.2_debug_tst/764/console ``` 15:21:57 System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance(provider: TestIFormatProviderClass { }, expected: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... }) [FAIL] 15:21:57 Assert.Equal() Failure 15:21:57 Expected: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... } 15:21:57 Actual: DateTimeFormatInfo { AbbreviatedDayNames = [""���"", ""���"", ""���"", ""���"", ""���"", ...], AbbreviatedMonthGenitiveNames = [""1���"", ""2���"", ""3���"", ""4���"", ""5���"", ...], AbbreviatedMonthNames = [""1���"", ""2���"", ""3���"", ""4���"", ""5���"", ...], AMDesignator = ""������"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... } 15:21:57 Stack Trace: 15:21:57 at System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance(IFormatProvider provider, DateTimeFormatInfo expected) ``` cc: @tarekgh, @hughbe " +7368 area-Infrastructure Modify netci.groovy to include outerloop for coverage resolves #1742 consumes https://github.com/dotnet/buildtools/pull/546 @mmitche @Priya91 @stephentoub +7372 area-System.Numerics Add missing tests to BigInteger resolves #6579 +7375 area-Infrastructure Building individual test projects on OSX has issues Right now, if you run `msbuild /t:RebuildAndTest /p:OSGroup=OSX` on some test projects on OSX, the run fails for a few reasons. In general, it seems that we are restoring some Windows binaries which fails early on, usually before any test runs. It seems that certain tests are not fully specifying their dependencies, which results in old versions of packages being pulled in. For example, System.Globalization.Tests.csproj, if run with the above command, fails when calling `Directory.GetCurrentDirectory()` in the Xunit console runner, because the System.IO.FileSystem.dll that is deployed next to the test is the Windows version. If you explicitly add a new version of this package to the tests dependencies, it is successfully restored and the test project gets further. Then it fails because the version of System.Runtime.InteropServices.RuntimeInformation.dll is the Windows version. If you add THAT to the project.json, then the tests finally pass. Easy repro: ``` cd src/System.Globalization/tests /t:RebuildAndTest /p:OSGroup=OSX ``` Interestingly, this issue does not occur if you ALSO pass `/p:TestWithLocalLibraries=true`. I haven't figured out what is happening in this case, but the correct DLL's seem to be copied in if this flag is set. It also shouldn't be necessary to pass `/p:OSGroup=OSX`, either. If this is omitted, no tests are run, though. We should auto-detect this and run tests anyways. We should have the information to make this possible. It's likely that this is also affecting the other non-Windows builds. @Priya91, @joperezr +7377 area-System.Reflection Consider adding PureAttribute to IntrospectionExtensions.GetTypeInfo Porting some code to .NET Core, I encountered the following code: ``` C# public static Type FindImplementationType(Type type, ObjectLiteral objLit, Func getResolverKind) { Contract.Requires(type.IsInterface); // ... } ``` So I added the call to GetTypeInfo(): ``` C# Contract.Requires(type.GetTypeInfo().IsInterface); ``` However, when code contracts actually runs, I get the following error: > error CC1036: Detected call to method 'System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type)' without [Pure] in contracts of method 'Util.ConfigurationConverter.FindImplementationType(System.Type,ObjectLiteral,System.Func`1)' Is it possible to add a PureAttribute to the GetTypeInfo() method? That seems like it might be a dependency we don't want to add to the contract, is there another way of specifying that a method is pure for code contracts? Should the attribute at least be added to the .NET Framework version of this method? +7379 area-System.Net Refactor MultipartContent to use async/await "Currently serialization of MultipartContent is split across multiple Task-based methods that each ContinueWith to each other. We can instead just write the code naturally in an async method. In addition to being simpler, it also helps with performance, especially when serializing to a memory stream and the whole operation can actually run synchronously. For example, with this little snippet: ``` C# var c = new HttpClient(); var url = new Uri(""http://httpbin.org/post""); for (int i = 0; i < 100; i++) { var mc = new MultipartContent(""someSubtype"", ""theBoundary""); mc.Add(new ByteArrayContent(Encoding.UTF8.GetBytes(""This is a ByteArrayContent""))); mc.Add(new StringContent(""This is a StringContent"")); await c.PostAsync(url, mc); } ``` the number of allocations drops nicely: ![image](https://cloud.githubusercontent.com/assets/2642209/14164603/e51fe004-f6ce-11e5-893e-9c1d10480102.png) cc: @davidsh, @cipop, @ericeil, @kapilash " +7380 area-Infrastructure Code coverage builds failing due to bin clashes "The last few code coverage builds in CI have failed, with lots of errors like this: ``` 16:19:59 Error : Multiple projects built twice with the same target path d:\j\workspace\code_coverage---7bd9c464\bin\ref\System.Threading\4.0.10.0\System.Threading.dll. 16:19:59 d:\j\workspace\code_coverage---7bd9c464\build.proj --> 16:19:59 Global Properties: 16:19:59 Coverage = true 16:19:59 d:\j\workspace\code_coverage---7bd9c464\src\tests.builds --> 16:19:59 Global Properties: 16:19:59 Coverage = true 16:19:59 DefaultBuildAllTarget = BuildAndTest 16:19:59 BuildAllProjects = true 16:19:59 d:\j\workspace\code_coverage---7bd9c464\src\System.Threading\tests\System.Threading.Tests.csproj --> 16:19:59 Global Properties: 16:19:59 Coverage = true 16:19:59 BuildAllProjects = true 16:19:59 OSGroup = Windows_NT 16:19:59 d:\j\workspace\code_coverage---7bd9c464\src\System.Threading\src\System.Threading.csproj --> 16:19:59 Global Properties: 16:19:59 Coverage = true 16:19:59 BuildAllProjects = true 16:19:59 OSGroup = Windows_NT 16:19:59 d:\j\workspace\code_coverage---7bd9c464\src\System.Threading\ref\System.Threading.csproj 16:19:59 Global Properties: 16:19:59 Coverage = true 16:19:59 BuildAllProjects = true ``` and then a note at the end: ``` 16:19:59 MSBUILD : error MSB4015: The build stopped unexpectedly because the ""ReusableLogger"" logger failed unexpectedly during shutdown. 16:19:59 System.Exception: 66 bin clashes were detected during the build. 16:19:59 at Microsoft.DotNet.Build.Tasks.BinClashLogger.Shutdown() 16:19:59 at Microsoft.Build.Evaluation.ProjectCollection.ReusableLogger.Shutdown() 16:19:59 at Microsoft.Build.BackEnd.Logging.LoggingService.ShutdownLogger(ILogger logger) ``` @ericstj, does this look familiar? http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/code_coverage_windows/204/consoleFull " +7383 area-Infrastructure Unix builds fail when trying to sign a project Calling `./build.sh /p:ConfigurationGroup=Release` throws the following error: ``` CSC : error CS7027: Error signing output with public key from file '/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_release/Tools/Test.snk' -- Cannot marshal 'return value': Unknown error. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_release/src/System.Globalization/tests/System.Globalization.Tests.csproj] ``` [Here is a sample](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_release/58/consoleFull) of a build that is running into the issue. +7390 area-Infrastructure Outerloop Unix runs failing with signing error ``` CSC : error CS7027: Error signing output with public key from file '/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_release/Tools/Test.snk' -- Cannot marshal 'return value': Unknown error. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_release/src/System.Globalization/tests/System.Globalization.Tests.csproj] ``` e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_release/58/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_debug/64/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_osx_release/61/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_centos7.1_release_bld/42/consoleFull +7391 area-System.Console Boolean System.Console.get_KeyAvailable() "Following issue: #2936 I made a small project referencing the dev nuget feed. When using `SystemConsole.KeyAvailable`, I'm getting an error: System.MissingMethodException: Method not found: 'Boolean System.Console.get_Key Available()'. at SharpSyslogServer.Console.Program.Main(String[] args) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Dnx.ApplicationHost.Program.<>c__DisplayClass3_0.b_ _0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() The version I'm using is: ""System.Console"": ""4.0.0-rc2-23826"", And the branch with the code to reproduce it: https://github.com/bruno-garcia/SharpSyslogServer/tree/system-console-issue " +7397 area-System.Linq Explicitly void switch expressions imbalance stack on interpreter. "Explicitly void-typed `SwitchExpression`s are allowed to have typed default body and cases, which may even be heterogeneous: ``` C# Expression.Switch( typeof(void), Expression.Constant(0), Expression.Constant(1), null, Expression.SwitchCase(Expression.Constant(""Foo""), Expression.Constant(2)), Expression.SwitchCase(Expression.Constant(DateTime.MinValue), Expression.Constant(3)) ) ``` However for integral and string value types with the default comparison, the interpreter will put the value from the case (or default body) that ran on the stack, upsetting subsequent operations. " +7400 area-System.Data System.Data.SqlClient.SqlException: The connection is broken and recovery is not possible _From @robbpriestley on March 23, 2016 19:27_ Hello, I'm pretty new to EF and .NET Core, but I just thought I'd report an issue I had today and have been able to diagnose somewhat. It has to do with the runtime and applying a migration. In my ASP.NET Core project, when I removed the **dnx451** framework from project.json (intending instead to rely entirely on the **dnxcore50** framework) and I perform the following actions: ``` dnvm use default -r coreclr dnx ef database update ``` I consistently get the below exception. To resolve, I need to restore the **dnx451** framework in the project.json and use the **mono** runtime. Then, it works. My database is SQL Server running on Amazon RDS. Exception message: ``` Applying migration '20160323185819_Update1'. System.Data.SqlClient.SqlException: The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.SqlConnection.ValidateAndReconnect(Action beforeDisconnect, Int32 timeout) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.Data.Entity.Storage.Internal.RelationalCommand.<>c.b__13_0(DbCommand cmd, IRelationalConnection con) at Microsoft.Data.Entity.Storage.Internal.RelationalCommand.Execute[T](IRelationalConnection connection, Func`3 action, String executeMethod, Boolean openConnection, Boolean closeConnection) at Microsoft.Data.Entity.Storage.RelationalCommandExtensions.ExecuteNonQuery(IEnumerable`1 commands, IRelationalConnection connection) at Microsoft.Data.Entity.Migrations.Internal.Migrator.Execute(IEnumerable`1 relationalCommands) at Microsoft.Data.Entity.Migrations.Internal.Migrator.Migrate(String targetMigration) at Microsoft.Data.Entity.Design.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType) at Microsoft.Data.Entity.Commands.Program.Executor.Execute(Action action) ClientConnectionId:7f7dac22-d9a0-49cc-950b-5a532b754754 The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection. ``` _Copied from original issue: aspnet/EntityFramework#4891_ +7402 area-System.Globalization Add Globalization tests Adds new globalization tests and modified existing tests where the CultureInfo of the process is modified. All tests that modify the process state were moved to execute in their own process. replaces #7323. resolves #6429 +7403 area-System.Net System.Net.Sockets.Socket.SetLingerOption() throws exception on OS X 16 WCF OuterLoop tests fail in nightly Helix runs on OS X, all with the same stack trace. These tests pass on Ubuntu. It looks like SetLingerOption() is not properly hooked up in OS X. Here is the Helix log for one such test: ``` Path FunctionalTest.Client.ClientBase.Tests#DuplexClientBaseTests.DuplexClientBaseOfT_OverNetTcp_Synchronous_Call Run On Wednesday, March 30, 2016 12:57 PM Architecture AnyCpu Configuration CHK OperatingSystem OSX.1011 Test Output Test Failed Unhandled exception of type 'System.Net.Sockets.SocketException': System.Net.Sockets.SocketException : Invalid argument at System.Net.Sockets.Socket.SetLingerOption(LingerOption lref) at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Object optionValue) at System.ServiceModel.Channels.CoreClrSocketConnection.Abort(Int32 traceEventType, String timeoutErrorString, TransferOperation transferOperation) at System.ServiceModel.Channels.SocketConnection.Abort(String timeoutErrorString, TransferOperation transferOperation) at System.ServiceModel.Channels.SocketConnection.Abort() at System.ServiceModel.Channels.DelegatingConnection.Abort() at System.ServiceModel.Channels.ConnectionPool.AbortItem(IConnection item) at System.ServiceModel.Channels.CommunicationPool`2.EndpointConnectionPool.AbortItem(TItem item) at System.ServiceModel.Channels.IdlingCommunicationPool`2.IdleTimeoutEndpointConnectionPool.AbortItem(TItem item) at System.ServiceModel.Channels.CommunicationPool`2.EndpointConnectionPool.AbortConnections(List`1 idleItemsToClose) at System.ServiceModel.Channels.CommunicationPool`2.EndpointConnectionPool.Close(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationPool`2.OnClose(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationPool`2.Close(TimeSpan timeout) at System.ServiceModel.Channels.ConnectionPoolRegistry.Release(ConnectionPool pool, TimeSpan timeout) at System.ServiceModel.Channels.TcpChannelFactory`1.ReleaseConnectionPool(ConnectionPool pool, TimeSpan timeout) at System.ServiceModel.Channels.ConnectionOrientedTransportChannelFactory`1.d__52.MoveNext() . . . at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.ClientBase`1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.ClientBase`1.Close() at DuplexClientBaseTests.DuplexClientBaseOfT_OverNetTcp_Synchronous_Call() ``` See WCF issue https://github.com/dotnet/wcf/issues/951 +7405 area-System.Net Further reduce Task allocations in GetString/ByteArrayAsync The HttpContent ReadAsStringAsync and ReadAsByteArrayAsync methods ensure that the data is loaded into the buffer, via an async operation, and then process that buffer synchronously. This refactors that synchronous processing into its own method, and changes ReadAs methods to use a simple async method that does the await on LoadIntoBufferAsync and then calls these methods. This avoids any task-related allocations if the data is already buffered. It also makes those synchronous methods callable from the GetString/ByteArrayAsync directly, such that these methods can avoid an extra layer of continuations, as they already do their own buffering. I will separately follow-up on converting the rest of HttpContent to use async/await where it makes sense. cc: @davidsh, @cipop, @ericeil, @kapilash +7407 area-System.Runtime Add Byte, Int16, Int32, Int64, SByte, UInt16, UInt32 and UInt64 tests - Take advantage of xunit - Refactor and add tests for Parse and ToString Contributes to #6286 Cherry picked from #5490 Helps test dotnet/coreclr#3995 +7408 area-System.IO Add SetCurrentDirectory test for a symlink path resolves #7358 @stephentoub +7409 area-System.Runtime Regression in StringBuilder.AppendLine and Console.Write and Console.WriteLine "This code: ``` csharp static void Main() { var sb = new StringBuilder(); sb.Append(""hello""); sb.AppendLine(); sb.AppendLine(); sb.Append(""world""); sb.AppendLine(); var s = sb.ToString(); Console.WriteLine(s); } ``` In .NET Framework 4.6, it prints this output (with a completely empty line between the two words): ``` hello world ``` But when I write it in a dotnet-cli console app (generated using ""dotnet new"", and targeting `""frameworks"": {""netstandard1.5""}` and dependency `""Microsoft.NETCore.App"": { ""version"": ""1.0.0-rc2-23930""}`, then it omits the blank line: ``` hello world ``` " +7416 area-Serialization DataConstractJsonSerializer should Escape '<', '>', and '& "@cyberphone submitted the following suggestion in #5647 > Having looked around a bit it seems that the JSON world is rather divided and needs to consider supporting two different serializations, one which is ES6-compatible and another which is ES6-compatible but properly escaped to be declared in browser as a JavaScript object. The latter means that '<', '>', and '&' must be expressed as \unnnn. Preferably quotes around identifier-compatible property names are also dropped in the JavaScript mode. > > Well, ""on the wire"" only real JSON encoding makes sense, but if you express JSON as a JavaScript object embedded in an HTML page like this > > ``` javascript > var jsonData = { > myprop: """" > }; > ``` > > it will break in a browser so I made (in my Java tools...), JavaScript a serializer option that: > •escapes '<', '>', and '&' > •removes """" around properties that adhere to JavaScript identifier syntax (excluding for example ""my-prop"") > •prints data in a pretty (readable) way > > The cool thing is that JSON.stringify() is unaffected by this change since it using ES6 restores data to its true JSON format! " +7417 area-System.Data Only throw NotSupportedException if Integrated Security is set to True on non-Windows platforms Currently an exception is thrown if the keyword is set at all: https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionString.cs#L198 But we shouldn't expected any failures if Integrated Security is set to false on non-Windows platforms. +7421 area-System.Runtime Add null test for Nullable GetUnderlyingType +7424 area-System.Linq Expression.Convert() fails in the face of an explicitly named `op_implicit` that doesn't have correct arity Consider: ``` C# private class PerverselyNamedMembers { public readonly uint Field; public PerverselyNamedMembers(uint value) { Field = value; } public static uint op_Implicit() { return 0x8BADF00D; } } ``` Then while `Expression.Convert(Expression.Constant(new PerverselyNamedMembers(0)), typeof(uint)))` should fail with an `InvalidOperationException` it fails with an `IndexOutOfRangeException`. Worse is if there also really is an appropriate `implicit` or `explicit` operator (either on the target or the source type) as then it fails when it should succeed. It _is_ admittedly a perverse case, but perhaps worth guarding against all the same. The case of a multary method with such a name is even worse, as it would then be picked as a match. +7425 area-System.Threading Enable SpinWait tests in System.Threading. SpinWait tests in System.Threading were present but the file wasn't added to the csproj. resolves #6459 +7426 area-System.Threading Add test for CancellationTokenSource exceptions resolves #6578 +7433 area-System.Runtime GetFullPath_Windows_83Paths failed on Windows Nano ``` 19:42:53 Discovering: System.Runtime.Extensions.Tests 19:42:53 Discovered: System.Runtime.Extensions.Tests 19:42:54 Starting: System.Runtime.Extensions.Tests 19:42:54 System.IO.Tests.PathTests.GetFullPath_Windows_83Paths [FAIL] 19:42:54 Assert+WrapperXunitException : File path: d:\j\workspace\outerloop_win---ce410c48\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs. Line: 650 19:42:54 ---- Assert.Equal() Failure 19:42:54 ↓ (pos 12) 19:42:54 Expected: C:\Windows\TEMP\2516432d47634334a66fb171ea9af088.txt 19:42:54 Actual: C:\Windows\Temp\2516432d47634334a66fb171ea9af088.txt 19:42:54 ↑ (pos 12) 19:42:54 Stack Trace: 19:42:54 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 19:42:54 at Assert.Equal(String expected, String actual, String path, Int32 line) 19:42:54 at System.IO.Tests.PathTests.GetFullPath_Windows_83Paths() 19:42:54 ----- Inner Stack Trace ----- 19:42:54 at Assert.Equal(String expected, String actual, String path, Int32 line) 19:42:55 Finished: System.Runtime.Extensions.Tests ``` `GetTempPath` and `GetFullPath` returning temp path with different casing? cc @JeremyKuhne +7434 area-System.IO Filestream with FileOptions.Encrypted | FileOptions.WriteThrough fails to write on Nano ``` 19:39:16 System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions(option: Encrypted) [FAIL] 19:39:16 System.UnauthorizedAccessException : Access to the path 'C:\Windows\TEMP\FileStream_ctor_str_fm_fa_fs_buffer_fo_3qffgkdi.mfj\ValidFileOptions_50' is denied. 19:39:16 Stack Trace: 19:39:17 at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 19:39:17 at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 19:39:17 at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:17 at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:17 at System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.CreateFileStream(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:17 at System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions(FileOptions option) 19:39:37 System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions(option: Encrypted, Asynchronous) [FAIL] 19:39:37 System.UnauthorizedAccessException : Access to the path 'C:\Windows\TEMP\FileStream_ctor_str_fm_fa_fs_buffer_fo_ts5rrahw.xkr\ValidFileOptions_50' is denied. 19:39:37 Stack Trace: 19:39:37 at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 19:39:37 at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 19:39:37 at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:37 at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:37 at System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.CreateFileStream(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:37 at System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions(FileOptions option) 19:39:57 System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions(option: Encrypted, DeleteOnClose, SequentialScan, RandomAccess, Asynchronous, WriteThrough) [FAIL] 19:39:57 System.UnauthorizedAccessException : Access to the path 'C:\Windows\TEMP\FileStream_ctor_str_fm_fa_fs_buffer_fo_1doetiwe.nbk\ValidFileOptions_50' is denied. 19:39:57 Stack Trace: 19:39:57 at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 19:39:57 at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 19:39:57 at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:57 at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:57 at System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.CreateFileStream(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 19:39:57 at System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions(FileOptions option) 19:39:57 Finished: System.IO.FileSystem.Tests ``` +7436 area-System.IO clrcompression package issues Currently there is a Win7 and Win10, the one in Win10 has the appcontainer which causes some issues issues for folks outside of UWP. To help eliminate potential conflicts we should put the Win10 access in the netcore50 folder as that is the only one that is used for UWP. https://github.com/dotnet/corefx/blob/master/src/Native/pkg/runtime.native.System.IO.Compression/win10/runtime.native.System.IO.Compression.pkgproj#L13 `runtimes/lib/netcore50/` On top of that the ARM version of this package has a win7-arm asset which isn't even a valid RID. It would need to be a win8-arm or higher. We should do some validation on the various scenarios for this package. cc @mellinoe @ericstj +7437 area-System.Runtime LoadAssemblyByPath_ValidUserAssembly test failure in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/osx_debug_tst_prtest/2650/console ``` 19:00:04 System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadAssemblyByPath_ValidUserAssembly [FAIL] 19:00:04 System.IO.IOException : The process cannot access the file '/tmp/System.Runtime.Loader.Test.Assembly.dll' because it is being used by another ``` +7439 area-System.Net ASP.NET Core 1.0 - FTP upload files Hi, I'm trying to upload files to a FTP server. I've tried using old piece of code I've used ASP.NET MVC 5 but DNX Core does not see to provide FtpWebRequest class for FTP manipulation. One workaround has come to my mind to use HttpClient with external Web service (WebAPI 2) which will upload my files, but I would have to maintain two applications and I don't like this approach... So is there any other approach I could use and I'm apparently missing? Thanks! ![ftp](https://cloud.githubusercontent.com/assets/5251112/14212399/56cff172-f83b-11e5-9eb9-36905de58c6f.png) +7440 area-System.Net HttpClient not stripping Content-Length header after redirect on non-Windows systems Scenario: 1) Client sends POST to server with some content. 2) Server sends 302 response. 3) Client sends GET to redirect location **with Content-Length from original POST request but no content**. Example: Client: ``` POST / HTTP/1.1 Host: 10.135.34.146:5000 Accept: */* Accept-Encoding: gzip,deflate Content-Type: text/plain; charset=utf-8 Content-Length: 7 Expect: 100-continue content ``` Server: ``` HTTP/1.1 302 Found Date: Fri, 01 Apr 2016 17:48:58 GMT Content-Length: 0 Location: /Somewhere Server: Kestrel ``` Client: ``` GET /Somewhere HTTP/1.1 Host: 10.135.34.146:5000 Accept: */* Accept-Encoding: gzip,deflate Content-Type: text/plain; charset=utf-8 Content-Length: 7 <----------------------- wrong ``` This is breaking one of our functional tests: https://github.com/aspnet/MusicStore/blob/dev/test/E2ETests/OpenIdConnectTests.cs Reproes on Linux and Mac. +7441 area-Serialization Improve serialization perf tests - Refactor all serialization performance tests to remove duplicated code. Adding more perf tests for all serializers is also more straightforward. Update namespace so the tests show up properly in reports. - Add a flag in test project to enable running tests without project references, which helps us run against Desktop facades for comparison purpose - Add performance tests for Json.Net for comparison purpose Previous PR: https://github.com/dotnet/corefx/pull/7119 @zhenlan @SGuyGe @shmao @brianrob +7447 area-System.Xml [ToFDisable] Port tests for: System.Xml.ReaderWriter "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Xml.ReaderWriter, we're missing 13883 lines of coverage. To fulfill the uncovered lines we would need to either create new tests for them or port 6 ToF tests to the open. Those tests are: - [ ] System.Xml.ReaderWriter\4.0.0.0\Writers\XmlWriterApi\System.Xml.RW.XmlWriterApi.Tests_FullRun.XML - [ ] System.Xml.ReaderWriter\4.0.0.0\XmlConvert\System.Xml.RW.XmlConvert.Tests_FullRun.XML - [ ] System.Xml.ReaderWriter\4.0.0.0\Readers\CharCheckingReader\System.Xml.RW.CharCheckingReader.Tests_FullRun.XML - [ ] System.Xml.ReaderWriter\4.0.0.0\Readers\FactoryReader\System.Xml.RW.FactoryReader.Tests_FullRun.XML - [ ] System.Xml.ReaderWriter\4.0.0.0\Readers\CustomReader\System.Xml.RW.CustomReader.Tests_FullRun.XML - [ ] System.Xml.ReaderWriter\4.0.0.0\Readers\SubtreeReader\System.Xml.RW.SubtreeReader.Tests_FullRun.XML Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +7448 area-System.Xml [ToFDisable] Port tests for: System.Xml.XDocument "As part of moving out of ToF and into the open, I've been going through the ""Tree of the future"" tests and calculating which of those tests provide coverage that we're missing in the open tests. The goal of this is to get the open tests universally better than the ToF tests so that we can turn the ToF tests off for ProjectK runs and save us all a lot of headache diagnosing test failures from potentially outdated tests. For System.Xml.XDocument, we're missing 945 lines of coverage. To fulfill the uncovered lines we would need to either create new tests for them or port 5 ToF tests to the open. Those tests are: - [ ] System.Xml.XDocument\4.0.0.0\TreeManipulation\TreeManipulation.Tests_FullRun.XML - [ ] System.Xml.XDocument\4.0.0.0\Properties\Properties.Tests_FullRun.XML - [ ] System.Xml.XDocument\4.0.0.0\xNodeBuilder\xNodeBuilder.Tests_FullRun.XML - [ ] System.Xml.XDocument\4.0.0.0\misc\Misc.Tests_FullRun.XML - [ ] System.Xml.XDocument\4.0.0.0\xNodeReader\xNodeReader.Tests_FullRun.XML Coverage reports, coverage xml files, and detailed json lists of each piece of missing coverage and the corresponding ToF test that fills it are available on request. " +7449 area-System.IO Port AccessControl for System.IO.Pipes Port PipeSecurity to Open and expose it in a new windows specific library `System.IO.Pipes.AccessControl` +7454 area-System.ComponentModel Implement more System.ComponentModel.TypeConverter surface This implements the remaining surface, removing `CultureInfoConverter` and `ReferenceConverter` due to their problematic purposes and implementations. @twsouthwick +7457 area-System.Globalization IdnMapping unnecessarily allocates substrings Discovered this while going through the code in #7291. It looks like `IdnMapping` is allocating a substring where it shouldn't need to, specifically [here](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Globalization/IdnMapping.cs#L85) and [here](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Globalization/IdnMapping.cs#L132). I'm going to open up a PR in a couple of days for this when I have time, but I'm raising an issue here first as a self-reminder. +7458 area-Microsoft.CSharp Microsoft.CSharp code could use some refactoring/optimization This program: ``` cs public static void Main() { for (int i = 0; i < 1000000000; i++) { dynamic thing = new object(); thing.Equals(null); } } ``` causes _many_ GC marks when run from the Visual Studio profiler within a short period of time. Here's a snapshot from my machine: ![](http://i.imgur.com/NVxqwfk.png) Here's the data from the memory profiler about which objects are being allocated the most: ![](http://i.imgur.com/smsN2px.png) Of course, obviously perf is not the first consideration when using `dynamic` objects, but it looks like a lot of these could be avoided. I looked a bit further into the `Microsoft.CSharp` package where this code is coming from, and it looks like the code is [somewhat of a mess.](https://github.com/dotnet/corefx/blob/59f4427b223dc944fb189a6fc9ee6186d690974b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeArray.cs#L16) It uses a lot of [Hungarian notation](https://github.com/dotnet/corefx/blob/59f4427b223dc944fb189a6fc9ee6186d690974b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolManagerBase.cs#L325) and classes with [COM-style all-caps names.](https://github.com/dotnet/corefx/blob/59f4427b223dc944fb189a6fc9ee6186d690974b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolManagerBase.cs#L32-L34) As for perf, [here's](https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Syntax/KnownName.cs#L60) a random example of where it could be optimized, and also [here](https://github.com/dotnet/corefx/blob/59f4427b223dc944fb189a6fc9ee6186d690974b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolManagerBase.cs#L378-L381). As another example, [this](https://github.com/dotnet/corefx/blob/59f4427b223dc944fb189a6fc9ee6186d690974b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeArray.cs#L14) looks like it could be a struct. Posting this here as a self-note, since I'm planning to submit a couple of PRs to remedy this in the next couple of weeks. +7459 area-System.Net Cookie class does not abide by the MSDN docs ## Cookie Constructor (String, String) A `CookieException` is thrown in the following circumstances, according to MSDN: - The `name` parameter is null. - The `name` parameter is of zero length. - The `name` parameter contains an invalid character. - **The `value` parameter is null.** - **The `value` parameter contains a string not enclosed in quotes that contains an invalid character.** The circumstances in bold are currently not followed by the Cookie class - no exception is thrown, but MSDN tells us one should be. ## Cookie.Value Property This field has the following remark: **The Value of a Cookie must not be null. The following characters are reserved and cannot be used for this property: semicolon, comma.** - MSDN does not make it clear if an exception is thrown or not in the above circumstances. - However, in corefx, the second condition is not checked. If a value is null, it is converted to an empty string. ## Solutions - Fix the documentation according to the current behaviour - Adapt the documentation for Cookie.Value Property and change some current behaviour - Change all the behaviours to that described in the MSDN docs ## Notes - Corefx currently aligns with the behaviour of .NET desktop (no exceptions are thrown there) - I reckon its quite important to ensure that Cookie.Value can never be null, as this is documented in MSDN and therefore can lead to NREs. The solutions to this are throwing an exception or setting Cookie.Value to string.Empty /cc @davidsh +7462 area-System.Net Fix CurlHandler Content-Length handling on redirects CurlHandler was explicitly setting the Content-Length header, which overrides libcurl's default handling of Content-Length. This means that Content-Length was being sent even when it shouldn't have been, such as when redirecting a POST to a GET. This commit changes how we handle Content-Length. Rather than explicitly setting the header ourselves, we let libcurl do it, and we tell it the length of the input via the INFILESIZE and POSTFIELDSIZE options. A few other issues addressed as well in the act of fixing this: - A SafeHandle wasn't being disposed of in the case of a redirect. - 301 wasn't being considered a redirect status code for the purposes of credential handling. - Some code could have been a bit cleaner. Fixes https://github.com/dotnet/corefx/issues/7440 cc: @kapilash, @ericeil, @davidsh, @cesarbs +7464 area-System.Net Refactor HttpContent with async/await cc: @davidsh, @cipop, @ericeil, @kapilash +7465 area-System.Security Two CNG tests failing on Win8 outerloop http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_windows_nt_debug/146/consoleFull ``` 14:10:20 System.Security.Cryptography.Cng.Tests.TripleDESCngTests.VerifyMachineKey [FAIL] 14:10:20 Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Access denied 14:10:20 Stack Trace: 14:10:20 D:\j\workspace\outerloop_win---069ccc6f\src\System.Security.Cryptography.Cng\src\System\Security\Cryptography\CngKey.Create.cs(53,0): at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters) 14:10:20 D:\j\workspace\outerloop_win---069ccc6f\src\System.Security.Cryptography.Cng\tests\SymmetricCngTestHelpers.cs(240,0): at System.Security.Cryptography.Cng.Tests.SymmetricCngTestHelpers.VerifyMachineKey(CngAlgorithm algorithm, Int32 plainBytesCount, Func`2 persistedFunc, Func`1 ephemeralFunc) 14:10:20 D:\j\workspace\outerloop_win---069ccc6f\src\System.Security.Cryptography.Cng\tests\TripleDESCngTests.cs(79,0): at System.Security.Cryptography.Cng.Tests.TripleDESCngTests.VerifyMachineKey() 14:10:20 System.Security.Cryptography.Cng.Tests.AesCngTests.VerifyMachineKey [FAIL] 14:10:20 Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Access denied 14:10:20 Stack Trace: 14:10:20 D:\j\workspace\outerloop_win---069ccc6f\src\System.Security.Cryptography.Cng\src\System\Security\Cryptography\CngKey.Create.cs(53,0): at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters) 14:10:20 D:\j\workspace\outerloop_win---069ccc6f\src\System.Security.Cryptography.Cng\tests\SymmetricCngTestHelpers.cs(240,0): at System.Security.Cryptography.Cng.Tests.SymmetricCngTestHelpers.VerifyMachineKey(CngAlgorithm algorithm, Int32 plainBytesCount, Func`2 persistedFunc, Func`1 ephemeralFunc) 14:10:20 D:\j\workspace\outerloop_win---069ccc6f\src\System.Security.Cryptography.Cng\tests\AesCngTests.cs(82,0): at System.Security.Cryptography.Cng.Tests.AesCngTests.VerifyMachineKey() ``` +7468 area-System.Net Avoid string.Split allocations in System.Net.Http Similar changes that were made in the `FrameworkName` PR in #7288, except for System.Net.Http. Also switched a couple of places to use `nameof`. @stephentoub and @davidsh, I found another place that could be optimized similarly to not use `string.Split` [here](https://github.com/dotnet/corefx/compare/master...jamesqo:string-split?expand=1#diff-7cb88d670b5606422fd0cabab628f90cR505). Do you think it's worth it? It would lead to a lot of boilerplate code since this is a 5-element array, but would also help us avoid a couple of `Substring` allocations in addition to the `Split` ones, since `parts[0]`, `parts[4]`, and `parts[2]` wouldn't actually have to be used. +7469 area-System.Net Use `using static` in CurlHandler Saw [this](https://github.com/dotnet/corefx/compare/master...jamesqo:curl-todo?expand=1#diff-e5ffb568f6f994c4243d35ef1b6830ceL14) TODO suggesting to replace all of the `using Foo = Interop.Http.Foo` with `using static` once C# 6 was being used. Now that it is, I took the liberty of adding the directives and running `sed` on all the files in the directory to replace all of the explicit references. Do you guys think I should just remove the `using` directives at the top of the file and limit it to that, or should the changes I've made with `sed` be kept? cc @davidsh @stephentoub +7473 area-System.Net Problem installing System.Net.NetworkInformation in a project targeting dnxcore50 "Hi I'm trying to run a simple code to print Hostname using static class Dns.(using System.Net) /_string HostName = Dns.GetHostName(); Console.WriteLine(""Host Name of machine ="" + HostName);_/ This runs fine on VS 2015 and moreover **assembly portability analyser claims that it's 100% portable to dot NetCore 5.0.** However, DNX on Ubuntu 14.04 fails to run it with following error. **error CS0103: The name 'Dns' does not exist in the current context** Note: Its the same code as ran on VS2015. I just ported it to ubuntu. It's not a programming error. Is the location of Dns changed or its just not supported in latest DNX? I've noticed a **similar behaviour for class NetworkInterface** which also **depends on system.dll** assembly. Again, the **porting tool reported that code is 100% portable**, but it actually failed in compilation with following error. **error CS0246: The type or namespace name 'NetworkInterface' could not be found (are you missing a using directive or an assembly reference?)** I've checked the project.lock.json file for the linux project and there was no mention of System.dll in it. However the same was present as References in VS 2015. Please let me know if I'm missing something. Regards " +7474 area-System.Net Avoid array allocations in HttpStatusDescription Currently, `HttpStatusDescription` in `Common` allocates a static array to map status codes to messages. I've replaced it with a giant switch-case statement that both 1) takes less lines of code and 2) is self explanatory (doesn't need comments explaining what code the message represents). Script used to generate the output: https://gist.github.com/jamesqo/78121659bb7b555ac63ecc05f0e7b4de cc @davidsh @stephentoub +7475 area-System.Net Use nameof in WinRT's HttpClientHandler Found a couple of places in the netcore50 `HttpClientHandler` that look like they could use `nameof`, so I changed them accordingly. cc @stephentoub +7483 area-System.Net Tweak SSL context callback in CurlHandler - Perf. We were creating a SafeHandle for the SSL context, but it didn't own the underlying handle, and we were then just passing it back to two native functions. We can skip the SafeHandle altogether, saving on the allocation and marshaling costs for all SSL connections. - Error handling. For robustness, we should be ensuring that any problems related to getting the state from the GCHandle result in returning an error code rather than propagating an exception, which will likely crash. - Naming. The name of the callback method is no longer correct, as it's used for more than just cert verification. cc: @bartonjs, @ericeil, @kapilash +7484 area-System.IO CurrentDirectory test failed in CI on Ubuntu http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/ubuntu_release_tst_prtest/3614/console ``` 05:32:47 System.IO.Tests.Directory_GetFileSystemEntries_str_str_so_alldirs.CurrentDirectory [FAIL] 05:32:47 System.IO.DirectoryNotFoundException : Could not find a part of the path '/mnt/j/workspace/dotnet_corefx/ubuntu_release_tst_prtest/bin/tests/Linux.AnyCPU.Release/System.IO.FileSystem.Tests/dnxcore50/slteu4ll.311'. 05:32:47 Stack Trace: 05:32:47 at System.IO.UnixFileSystem.FileSystemEnumerable`1.OpenDirectory(String fullPath) 05:32:47 at System.IO.UnixFileSystem.FileSystemEnumerable`1.d__11.MoveNext() 05:32:47 at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source, Int32& length) 05:32:47 at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) 05:32:47 at System.IO.Directory.GetFileSystemEntries(String path, String searchPattern, SearchOption searchOption) 05:32:47 at System.IO.Tests.Directory_GetFileSystemEntries_str.CurrentDirectory() ``` +7485 area-System.Net Add CurlHandlers.SslProtocols option (Ignore the first commit for review purposes; it's a dup of #7483.) Implements the SslProtocols option on CurlHandler, enabling a developer to further constraint which SSL protocols are used. With libcurl on the OpenSSL backend (the recommended configuration), we can provide full-fidelity for this option. With libcurl on another SSL backend, we can allow choosing all three TLS protocols or just one TLS protocol, but we can't support selecting two of the three. Note that, as with the previous certificate properties, I'm not adding this to the contract. We can customize the entrypoint based on how we ultimately decide to expose this, but this commit provides the implementation and testing for it, regardless of how we choose to expose it. cc: @davidsh, @bartonjs, @ericeil, @kapilash, @joshfree +7487 area-System.ComponentModel Add tests for MemberDescriptor and CustomTypeDescriptor @chlowell +7488 area-System.IO Make Unix EnumerateFileSystemEntries not throw on missing middle dir UnixFileSystem fileentry enumeration will throw an DirectoryNotFoundException when it yields a directory that is then deleted before enumeration of that directory's contents can be completed. This commit modifies the behavior to ignore the exception throw and continue iterating through the other entries instead. It also adds a Unix-Specific test to ensure the new behavior functions as expected. resolves #7484 @stephentoub +7490 area-System.Net Add CurlHandler.MaxConnectionsPerServer option Adds MaxConnectionsPerServer to CurlHandler. cc; @davidsh, @cipop, @ericeil, @kapilash, @bartonjs, @joshfree +7492 area-System.Net Add CurlHandler.ConnectTimeout Adds a timeout to the connection phase of CurlHandler. cc: @davidsh, @cipop, @ericeil, @kapilash, @bartonjs, @joshfree +7494 area-System.Net Fix encoding of proxy credentials in CurlHandler We need to URL encode the username/password for a proxy. Otherwise, for example, a colon in the name could mess up how the concatenated username and password are parsed. libcurl URL decodes them. cc: @ericeil, @kapilash +7496 area-Infrastructure Trouble finding includes for OpenSSL on OS X 10.10/10.11 On OS X 10.10 & 10.11, System.Security.Cryptograhpy.Native is having problems finding the copy of OpenSSL found by homebrew on my system. I originally get the error: ``` /corefx/src/Native/System.Security.Cryptography.Native/openssl.c:14:10: fatal error: 'openssl/asn1.h' file not found #include ``` If I work around this issue by adding OPENSSL_INCLUDE_DIR to the target header search path, I then have errors with warnings in the headers. For example: ``` /usr/local/include/openssl/ecdsa.h:295:14: error: parameter 'flags' not found in the function declaration [-Werror,-Wdocumentation] /usr/local/include/openssl/objects.h:1025:10: error: macro name is a reserved identifier [-Werror,-Wreserved-id-macro] /Sources/dotnet/corefx/src/Native/System.Security.Cryptography.Native/pal_err.cpp:25:27: error: use of old-style cast [-Werror,-Wold-style-cast] *isAllocFailure = ERR_GET_REASON(err) == ERR_R_MALLOC_FAILURE; ^~~~~~~~~~~~~~~~~~~ /usr/local/include/openssl/err.h:246:34: note: expanded from macro 'ERR_GET_REASON' # define ERR_GET_REASON(l) (int)((l)&0xfffL) ``` Is this user error or a problem with the build? If it's a problem with the build, any suggestions on what kind of fix is most likely to be accepted back? Tested on OS X 10.11 Apple LLVM version 7.3.0 (clang-703.0.29) Target: x86_64-apple-darwin15.4.0 Thread model: posix Homebrew 0.9.9 (git revision ac80; last commit 2016-04-03) Homebrew/homebrew-core (git revision 0db2; last commit 2016-04-03) openssl: stable 1.0.2g +7497 area-System.Security Add missing coverage for Crypto CSP One of the VerifyHash methods in RSACryptoServiceProvider wasn't being tested. I modified the existing VerifyHashSignature test to use this VerifyHash method in addition to the one already in place (RSA.VerifyHash). resolves #6450 +7499 area-System.Net Add Sockets performance tests We currently have no formal performance testing of Sockets. We have a couple of tests checked in, but they are disabled, haven't been adapted to the xunit.performance infrastructure, and test only a couple of particular end-to-end scenarios. We should add new tests to cover individual operations, as well as a couple of larger scenarios. +7501 area-System.ComponentModel TypeConverter cannot convert from String to Uri on Core "``` TypeDescriptor.GetConverter(typeof(Uri)).ConvertFromInvariantString(""http://www.bing.com""); ``` Results in: ``` System.InvalidOperationException : Failed to convert 'http://www.bing.com' to type 'System.Uri'. ---- System.NotSupportedException : TypeConverter cannot convert from System.String. ``` Works fine on netstandard " +7503 area-System.Net Add CurlHandler.DefaultProxyCredentials cc: @davidsh, @cipop, @ericeil, @kapilash, @bartonjs, @joshfree +7505 area-System.Net Add HttpClientHandler redirect tests Right now we only have redirect tests for 302. It'd be good to have tests for other redirects (301, 303, 307), and to do that, ideally we'd modify our existing Redirect.ashx endpoint to support returning other redirect status codes. +7506 area-System.Net Ignore EINVAL from SO_LINGER on OSX "On OSX, `SO_LINGER` can return `EINVAL` if the other end of the socket is already closed. In that case, there is nothing for this end of the socket to do, so there's no reason to ""linger."" Windows and Linux do not return errors in this case, so we'll simulate success on OSX as well. @stephentoub Fixes #7403 " +7513 area-System.ComponentModel Add TypeId extension to mimic .NET Framework implementation @chlowell +7514 area-Infrastructure Consider running code coverage builds in Release mode Currently code coverage runs (in the CI) run in debug mode by default. I propose considering changing the build to be a release build for the following reasons: 1. Some debug code will always be uncovered (e.g. numerous `internal void Dump()` methods in System.Net or System.Text.RegularExpressions) 2. Release mode tends to run quicker than debug (I don't have empirical evidence to prove this, and this is definitely a smaller reason than 1.) 3. Tests (typically) test code that the API consumer calls publically to a .dll file built in release mode. If any behaviour is considerably different in release mode then it may not be covered in debug CC runs. This could cause problems. 4. A more accurate coverage report I'd be interested in hearing the arguments for keeping the CC runs in debug mode. +7515 area-System.Net Add CurlHandler.MaxResponseHeadersLength Adds the MaxResponseHeadersLength property to CurlHandler. I also changed the ConnectTimeout default to Infinite until the property is exposed; otherwise, we're enforcing a 60 second timeout on connects without providing any way to override it. cc: @davidsh, @cipop, @ericeil, @kapilash +7517 area-System.Net SslStream test failure in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug_prtest/4495/console ``` 07:32:12 System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_LargeWrites_Sync_Success(randomizedData: False) [FAIL] 07:32:12 Handshake complete 07:32:12 Expected: True 07:32:12 Actual: False 07:32:12 Stack Trace: 07:32:12 d:\j\workspace\windows_nt_de---06b7984d\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs(105,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_LargeWrites_Sync_Success(Boolean randomizedData) ``` +7518 area-System.Data SqlClient: Unable to load DLL 'sni.dll' We are seeing a number of folks hitting the `Unable to load DLL 'sni.dll'` issue with the latest RC2 builds. Folks are hitting this when using EF Core but have confirmed that the issue exists when working directly with SQL Client too. See https://github.com/aspnet/EntityFramework/issues/4953 for a good description from someone hitting the issue. cc @mrmeek who filed the above issue +7520 area-System.Reflection How to use Reflection over .net core libraries? "It is not clear how to properly use reflection over .net core libraries. When trying to use T4 template to reflect over a class library (we do this to generate Typescript definition files of our Dto's. The way we have always done this and expected it to work is the following a simple template: ``` <#@ template debug=""false"" language=""C#"" #> <#@ assembly name=""System.Core"" #> <#@ assembly name=""System.Collections"" #> <#@ assembly name=""System.Linq"" #> <#@ assembly name=""$(SolutionDir)\srcCore\CM.Dtos\bin\Debug\dnx451\CM.Dtos.dll"" #> <#@ import namespace=""System"" #> <#@ import namespace=""System.Linq"" #> <#@ import namespace=""System.Reflection"" #> <#@ import namespace=""System.Collections.Generic"" #> <#@ output extension="".d.ts"" #> <# var assembly = Assembly.GetAssembly(typeof(CM.Dtos.PagedRequest)); var allTypes = assembly.GetTypes().ToList(); ``` this does not seem to work with dnx/core libraries as we expected. How would one crack open library the correct way to reflect over it's classes? " +7522 area-System.Net HttpResponseMessage.Dispose does not cancel an ongoing call to ReadAsync "The ""netcore50"" but not the ""dnxcore50"" version of System.Net.Http 4.0.1-beta-23516 has a bug where calling HttpResponseMessage.Dispose() does not cancel an ongoing call to responseStream.ReadAsync(). This breaks the SignalR client in Universal Windows Platform apps. Here is an example of code that will hang indefinitely if HttpResponseMessage.Dispose() is called before the response body is completed. ``` c# using (var client = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Get, ""http://localhost:5000/""); HttpResponseMessage response = null; var ignore = Task.Delay(5000).ContinueWith(_ => { mLogger.WriteLine(""Canceling request""); response.Dispose(); }); mLogger.WriteLine(""Making request""); response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, CancellationToken.None); mLogger.WriteLine(""Got headers""); var buffer = new byte[1024]; int count = -1; var responseStream = await response.Content.ReadAsStreamAsync(); while (count != 0) { mLogger.WriteLine(""ReadAsync""); count = await responseStream.ReadAsync(buffer, 0, 1024); mLogger.WriteLine(""Finished ReadAsync""); } mLogger.WriteLine(""Request complete""); } ``` **Expected behavior (which happens with the dnxcore50 assembly):** When HttpResponseMessage.Dispose() is called, the ongoing call to responseStream.ReadAsync throws a TaskedCanceledException. **Actual behavior (which happens only with dotnetcore50 assembly):** stream.ReadAsync never completes after HttpResponseMessage.Dispose() is called. To make matters even worse, when/if the response body actually does complete, responseStream.ReadAsync _still_ never finishes. **Note:** If the CancellationToken that is passed to Send is canceled before client.SendAsync completes, SendAsync will throw a TaskedCanceledException with both the dnxcore50 and netcore50 versions of System.Net.Http. That is not what this bug is about. " +7527 area-Microsoft.CSharp Dynamic type resolution goes into infinite recursion "Under certain circumstances dynamic type resolution goes into infinite recursion (causing program to terminate with StackOverflowException) alternating between these methods: ``` Microsoft.CSharp.dll!Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager.SubstTypeCore(Microsoft.CSharp.RuntimeBinder.Semantics.CType type, Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext pctx) Microsoft.CSharp.dll!Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager.SubstTypeArray(Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray taSrc, Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext pctx) ``` This happens only when an argument of type ""dynamic"" is passed, of course. Static typing works fine. Repro: ```c# using System; class Program { static void Main(string[] args) { // vvv--- changing ""dynamic"" to ""var"" or ""string"" here fixes the issue dynamic parsedDocument = """"; var mystery = new FailingClass(); Console.WriteLine(""Entering...""); mystery.FailingMethod(parsedDocument); Console.WriteLine(""... and we are back!""); Console.ReadLine(); } } public abstract class CommonBase {} // Technically, this class does nothing and deriving from it should be identical to deriving from CommonBase public abstract class FailingClassBase : CommonBase {} // However, deriving from CommonBase instead of FailingClassBase here also fixes the issue // ----------------------------vvvvvvvvvvvvvvvv public class FailingClass : FailingClassBase> { public void FailingMethod(T src) {} } ``` [EDIT] Fixed callstack formatting by @karelz [EDIT] Inlined source code from original attachment [repro.txt](https://github.com/dotnet/corefx/files/205290/repro.txt), with minor formatting changes by @karelz" +7528 area-Meta Add not supported assemblies for more packages Some packages are only supported starting with a particular RID (EG: System.Runtime.WinRT packages) For these we should add a dummy impl so that folks can compile, JIT, then light up on win8. +7538 area-Infrastructure Building is slow on Linux On Linux, it takes quite a bit of time to build CoreFX from scratch even if skipping tests (about 52 minutes). However, I was surprised to see that if you just do a change in one of the C# file, the recompilation time (it should really be just recompiling an assembly) is quite long (about 31 minutes). This is on a relatively fast machine with a SSD drive. Is this expected? If not, what am I doing wrong? If so, should we have a fast mode that only compiles the assemblies for which their C# code has changed? Note that on Windows, the behavior is the same but it doesn't take the same amount of time (5 minutes for a rebuild with no changes). +7545 area-System.Security ConvertStringSidToSid() result compared against TRUE "`System.Security.Principal.CreateSidFromString()` has this code: ``` if (TRUE != Interop.mincore.ConvertStringSidToSid(stringSid, out ByteArray)) ``` It looks like this causes `ConvertStringSidToSid()` WinAPI function call and `ConvertStringSidToSid()` is documented to return either ""zero"" or ""non-zero"". So this check should compare the result against `FALSE`, not `TRUE`. " +7546 area-System.Net Improve performance of WebUtility "## Summary No escaping needed: - x5 performance improvement - 0 allocations Basic escaping needed (single char): - 20% performance improvement - Allocations cut by a third Advanced escaping needed (surrogate pair): - 15% performance improvement - Allocations cut by a third ## Benchmark Results - No breaking change in behaviour in these validation tests - Times measured in seconds ![benchmark](https://cloud.githubusercontent.com/assets/1275900/14318468/e4ba70d0-fc04-11e5-8a42-3604666dbab3.png) ## Benchmark Code and !!Validation Tests!! - **To ensure there were no breaking changes** I ran the new output against the old output for every single char and surrogate pair in the UTF16 plane. ``` c# static unsafe void Main(string[] args) { PerformanceTests(); VerificationTests(); Console.ReadLine(); } private static void PerformanceTests() { Console.WriteLine(""**** MEASURE NO ESCAPING ****""); TimeAction(""Old: "", () => Old.UrlEncode(""abcxyz"")); TimeAction(""New: "", () => New.UrlEncode(""abcxyz"")); Console.WriteLine(""**** MEASURE SPACES ****""); TimeAction(""Old: "", () => Old.UrlEncode(""abc xyz"")); TimeAction(""New: "", () => New.UrlEncode(""abc xyz"")); Console.WriteLine(""**** MEASURE ESCAPING 1 TIMES ****""); TimeAction(""Old: "", () => Old.UrlEncode(""\u007F"")); TimeAction(""New: "", () => New.UrlEncode(""\u007F"")); Console.WriteLine(""**** MEASURE ESCAPING 2 TIMES ****""); TimeAction(""Old: "", () => Old.UrlEncode(""\u07FF"")); TimeAction(""New: "", () => New.UrlEncode(""\u07FF"")); Console.WriteLine(""**** MEASURE ESCAPING 3 TIMES ****""); TimeAction(""Old: "", () => Old.UrlEncode(""\u1234"")); TimeAction(""New: "", () => New.UrlEncode(""\u1234"")); Console.WriteLine(""**** MEASURE ESCAPING SURROGATE PAIR ****""); TimeAction(""Old: "", () => Old.UrlEncode(""\uD801\uDC37"")); TimeAction(""New: "", () => New.UrlEncode(""\uD801\uDC37"")); } public static void TimeAction(string prefix, Action action) { action(); GC.Collect(); var sw = new Stopwatch(); for (int iter = 0; iter < 5; iter++) { int gen0 = GC.CollectionCount(0); sw.Restart(); for (int i = 0; i < 100000000; i++) { action(); } sw.Stop(); Console.WriteLine($""{prefix}Time: {sw.Elapsed.TotalSeconds}\tGC0: {GC.CollectionCount(0) - gen0}""); } } private static void VerificationTests() { for (int i = 0; i < char.MaxValue; i++) { char c = (char)i; string oldString = Old.UrlEncode(c.ToString()); string newString = New.UrlEncode(c.ToString()); if (!oldString.Equals(newString)) { Console.WriteLine($""FAIL for char {i}. Expected: {oldString}. Actual: {newString}""); } } for (int i = 0x10000; i < 0x10FFFF; i++) { string utf32 = char.ConvertFromUtf32(i); string oldString = Old.UrlEncode(utf32); string newString = New.UrlEncode(utf32); if (!oldString.Equals(newString)) { Console.WriteLine($""FAIL for char {i}. Expected: {oldString}. Actual: {newString}""); } } Console.WriteLine(""Passes Validation Tests""); } ``` /cc @davidsh, @stephentoub, @jamesqo " +7547 area-System.Security ConvertStringSdToSd()/ConvertSdToStringSd() result compared against TRUE "`System.Security.AccessControl.RawSecurityDescriptor.BinaryFormFromSddlForm()` has this code: ``` if (TRUE != Interop.mincore.ConvertStringSdToSd( ``` and `System.Security.AccessControl.Win32.ConvertSdToSddl()` has this code: ``` if (TRUE != Interop.mincore.ConvertSdToStringSd(binaryForm, //WHATEVER ``` `ConvertStringSdToSd()/ConvertSdToStringSd()` are some barely documented functions which looks very similar to `ConvertStringSidToSid()/ConvertSidToStringSid()` and the latter return either ""zero"" or ""non-zero"". Most likely `ConvertStringSdToSd()/ConvertSdToStringSd()` behave the same way and so those checks should compare the result against `FALSE`, not against `TRUE`. " +7548 area-System.Net Exception thrown in Constructor of CookieContainer "I've got an issue with the CookieContainer in my UWP application. ### Expected behaviour The constructors of `CookieContainer`, `HttpClient` and `HttpClientHandler` should not thow an exception when invoked without a parameter. ### Actual behavior - Creating a new instance of `CookieContainer` throws an exception. - Creating a new `HttpClient` or `HttpClientHandler` throws an exception because they create a new `CookieContainer` internally. - It is not possible to use any of these classes. Stack trace/message of the exception: ``` System.ArgumentException: The parameter is incorrect. hostName at Windows.Networking.Connectivity.NetworkInformation.GetHostNames() at System.Net.NetworkInformation.HostInformation.GetFixedInfo() at System.Net.NetworkInformation.HostInformation.get_FixedInfo() at System.Net.NetworkInformation.HostInformation.get_DomainName() at System.Net.CookieContainer..ctor() at System.Net.Http.HttpClientHandler..ctor() ``` The last function in the call stack: [`NetworkInformation.GetHostNames`](https://msdn.microsoft.com/library/windows/apps/windows.networking.connectivity.networkinformation.gethostnames), which doesn't take any parameters. Therefore, I don't which parameter `hostName` could be wrong that I am passing causing the exception. ### Steps to fix/reproduce I figured out how to work around the problem: - Goto `Control Panel\All Control Panel Items\System` -> `Advanced System Settings` -> `Computer Name` -> `Change` -> `More` - Clear what's in the text box of ""Primary DNS suffix of this computer"" (it was `42` before, since this is my local dns suffix, so the FQDN of my host is `hostname.42`). - This is reproducible on my machine. Didn't test this on other machines. - It works using a DNS suffix which is not a number (tested with `foo`). If this behaviour is intended, the possibility of an exception when calling `NetworkInformation.GetHostNames` should be documented. Windows Build: Version 1511 (10586.164) Edit: What I think is that NetworkInformation.GetHostNames() calls `GetAllHostNames()` from `Windows.Networking.HostName.dll` (listed as import of the dll of NetworkInformation). The `HostName` constructor is then used to create the instances of `HostName`. I think the call to the function `HostNameImpl::CanonicalizeHostName` fails, since it raises an exception when it fails. Maybe it's [`DnsValidateName`](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682032%28v=vs.85%29.aspx) that classifies the host name `host.42` as invalid (which seems correct to me). " +7550 area-System.Security Remove Pinvoke exceptions in System.Security.Cryptography.Csp PinvokeAnalyzerExceptionList.analyzerdata in System.Security.Cryptography.Csp implementation contains non api-set pinvokes. Corefx repro is following apiset model and so these Pinvokes should be changed to use the APISet counter parts. If you remove exception list. Pinvoke analyzer will suggest in its error message the correct Apiset to use for this. Advapi32.dll!CryptAcquireContextW Advapi32.dll!CryptGetProvParam Advapi32.dll!CryptGetUserKey Advapi32.dll!CryptGetKeyParam Advapi32.dll!CryptGenKey Advapi32.dll!CryptReleaseContext Advapi32.dll!CryptDecrypt Advapi32.dll!CryptEncrypt Advapi32.dll!CryptExportKey Advapi32.dll!CryptImportKey Advapi32.dll!CryptCreateHash Advapi32.dll!CryptGetHashParam Advapi32.dll!CryptSetHashParam Advapi32.dll!CryptSignHashW Advapi32.dll!CryptVerifySignatureW Advapi32.dll!CryptDestroyKey Advapi32.dll!CryptDestroyHash +7551 area-System.Security Remove Pinvoke exceptions in System.Security.Cryptography.X509Certificates PinvokeAnalyzerExceptionList.analyzerdata in System.Security.Cryptography.X509Certificates implementation contains non api-set pinvoke. Corefx repro is following apiset model and so these Pinvokes should be changed to use the APISet counter part. If you remove exception list, Pinvoke analyzer will suggest in its error message the correct Apiset to use for this. advapi32.dll!CryptAcquireContextW bcrypt.dll!BCryptDestroyKey --> I believe this was ok, I think we discussed this and it was fixed by windows (@bartonjs might know more about this :)). +7552 area-System.Runtime TimeZoneInfo.FindSystemTimeZoneById throws TimeZoneNotFoundException ".NET Core exposes `TimeZoneInfo.FindSystemTimeZoneById(string)` [(MSDN)](https://msdn.microsoft.com/en-us/library/system.timezoneinfo.findsystemtimezonebyid%28v=vs.110%29.aspx) which throws a `TimeZoneNotFoundException`. But the exception can't be caught because `TimeZoneNotFoundException` isn't exposed in .NET Core. We should include the exception type in the System.Runtime contract alongside the API that throws it. Repro: ``` C# using System; public class Program { public static void Main(string[] args) { Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById(""DoesNotExist"").ToString()); } } ``` " +7561 area-System.Net Strange HttpClient behavior with many concurrent requests on OS X and Linux "When a lot of concurrent requests are thrown at `HttpClient`, I see varying behavior on the different platforms: **Mac OS X**: lots of ""Couldn't connect to server"" and ""Couldn't resolve host name"" errors. **Linux**: works a lot of the time but sometimes hangs due and throws a `TaskCancelledException` due to `HttpClient.Timeout`. **Windows**: works fine. Here is a small `dotnet` application that reproduces the problem: [lotsofhttp.zip](https://github.com/dotnet/corefx/files/207394/lotsofhttp.zip) The input I give to my program is: ``` dotnet run 500 10 500 https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json ``` That is, 500 concurrent tasks, 10 iterations per tasks, and a throttling semaphore of 500. The URL `https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json` is downloaded for each iteration. My suspicion is there is some kind of handle limiting going on OS X that prevents so many concurrent requests. Are these failures expected? Am I voiding a warranty :smile:? The workaround is certainly to apply throttling above `HttpClient` in the application, correct? I am using System.Net.Http 4.0.1-rc2-23931. " +7562 area-System.Runtime Add missing System.Runtime tests Porting missing tests that are present in SystemRuntimeBringup internally. +7563 area-System.Runtime Add a few GCSettings tests Tests round-tripping for GCSettings properties. Taken from the tests in `QA\ToF\tests\FX\GC`, though there are a number of tests present there that are far more in depth than these. I won't be disabling those tests without the go-ahead from someone more familiar with the GC. +7564 area-System.Net Improvements to CurlHandler perf and reliability 1. **Extend SafeCurlMultiHandle lifetime to that of its MultiAgent.** Today each time we spin up a worker in CurlHandler, we create a new SafeCurlMultiHandle, use it for the lifetime of that worker, and then when the worker goes away, the multi handle is torn down. This was done for simplicity of resource management, but it also leads to significant overheads due to everything that libcurl caches associated with the multi handle, e.g. when the multi handle goes away, so does it connection cache, its DNS cache, etc. This commit addresses that by extending the lifetime of the multi handle to match that of the CurlHandler. We still lazily create the handle when the first worker is spun up, but then we keep it alive until the CurlHandler is disposed. As before, we ensure that as long as a worker is running, the multi handle will be kept alive, even if the handler is disposed. 2. **Extend DNS cache timeout in CurlHandler.** Now that we're allowing the multi handle to live for as long as the CurlHandler, the DNS cache timeout starts to matter much more. libcurl will cache the results of DNS lookups, and by default will timeout entries after 1 minute. Our Windows implementation defaults to 10 minutes, so I'm extending our Unix implementation to match that. 3. **Only call curl_multi_wait if there are active operations.** The CurlHandler work is sometimes hitting pauses unnecessarily, where it finishes processing the last active request and then calls curl_multi_wait to wait for more work to do. This is purely wasteful and can be skipped when we know there aren't any more active operations. 4. **Improve reliability of CurlHandler MultiAgent worker.** If something unexpectedly goes wrong in our worker loop, and in particular when queuing a replacement worker, we may end up leaving a request sitting in the request queue with no one to process it. This commit ensures that if something does go horribly wrong, the agent is left in a state where subsequent incoming requests can still kick off another worker, and in the meantime any pending requests in the queue are failed, so that code blocking on them doesn't simply hang. As I was looking at this and some of our dispose usage, I also cleaned up a few places that could be simplified using the C# 6 ?. syntax. cc: @ericeil, @bartonjs +7569 area-System.Text Regex incorrectly identify surrogate pair unicode category "This defect makes regex useless when you need to match string using unicode categories and string could contain surrogate pairs: ``` c# [Test] public void ClassifySurrogates_Test() { var value = ""𦕒""; var regexLetters = new Regex(@""^\p{Lo}$""); var regexSurrogates = new Regex(@""^\p{Cs}{2}$""); Assert.AreEqual(UnicodeCategory.OtherLetter, char.GetUnicodeCategory(value, 0)); Assert.AreEqual(UnicodeCategory.OtherLetter, CharUnicodeInfo.GetUnicodeCategory(value, 0)); Assert.True(regexSurrogates.IsMatch(value)); // Fails here Assert.True(regexLetters.IsMatch(value)); } ``` " +7570 area-System.IO System.IO.Compression to support zlib thin wrapper over DEFLATE? Currently we have access to this: https://msdn.microsoft.com/en-us/library/system.io.compression.deflatestream(v=vs.110).aspx The _DeflateStream_ type can be used to compress/decompress DEFLATE data. Yet in the wild world people normally wrap that with zlib (i.e. RFC1950), e.g. in the Git pack file, there are multiple zlib streams embedded within. Given underneath we are calling zlib Native, any chance we could provide types that can handle zlib streams? As in: https://github.com/icsharpcode/SharpZipLib/blob/master/src/Zip/Compression/Inflater.cs https://docs.python.org/2/library/zlib.html (zlib.compress(string[, level])) +7575 area-System.IO Filesystem enumeratenonexistent When enumerating over the entries in the current directory there is the potential for a DirectoryNotFoundException if one of the directories in the current directory is deleted. Since we can't easily ensure no corefx tests are modifying the files in the current directory, I opted to instead run the test in its own process with its own current directory (set to a test path). resolves #7484 @stephentoub +7576 area-System.IO FileSystemWatcher and network shares This is related to this bug: https://github.com/aspnet/dotnet-watch/issues/55 The scenario is that you are running your application inside a container using dotnet-watch. Dotnet-watch will watch your files and restart your app whenever you change your code. The issue is that when using Docker your source is typically mounted using something like Samba or VirtualBox shares which means you don't get watcher events fired. What should dotnet-watch do in this case? My current plan is to use a polling file watcher and have a way to launch dotnet-watch in a mode that uses polling when needed. Is there something we can do in corefx to make this better or is this completely up to dotnet-watch to implement? +7577 area-Serialization DataContractSerializer in CoreCLR underperforms Desktop in dictionary scenarios In CoreClr simple dictionary is serialized/deserialized slower up to 2x compared to Desktop +7578 area-Serialization DataContractJsonSerializer in CoreClr is slower than Desktop in simple dictionary scenarios +7579 area-Serialization DataContractJsonSerializer in CoreClr is slower than Desktop in string scenarios +7580 area-System.Linq Linq (Enumerable.cs) should provide overloads for functions that can benefit heavily from knowing the static type of the receiver. Methods like Enumerable.Last work terribly if you pass in something that implements IReadOnlyList but not IList. We could provide additional overloads like: `public static T Last(this IReadOnlyList list) { ... }` so that we now had optimized implementations for these types. This would also be beneficial so we can have codepaths that avoid having to dynamically check the type of the receiver at runtime when the compiler already knows statically what it can dispatch to. +7584 area-Serialization Perf test failures in corefx / src / System.Xml.XmlSerializer / tests / System.Xml.XmlSerializer.Tests.csproj @khdang there seem to be some failures in tests related to corefx / src / System.Xml.XmlSerializer / tests / System.Xml.XmlSerializer.Tests.csproj (Can be repro-ed by >msbuild src\System.Xml.XmlSerializer\tests\System.Xml.XmlSerializer.Tests.csproj /t:BuildAndTest /p:Performance=true /p:Configuration=Release) Please take a look and fix these +7585 area-Infrastructure PInvokeAnalyzer throws NullReferenceException on x-plat builds See http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_ubuntu14.04_debug/76/consoleFull ``` 02:12:18 CSC : error AD0001: Analyzer 'Microsoft.DotNet.CodeAnalysis.Analyzers.PinvokeAnalyzer' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/mnt/j/workspace/dotnet_corefx/outerloop_ubuntu14.04_debug/src/System.IO.FileSystem/src/System.IO.FileSystem.csproj] ``` +7587 area-System.Net Use IntPtr-based file descriptors exclusively, in native calls from Sockets code. This is step 1 of the fix for #6928. This change introduces new native methods that take `IntPtr` file descriptor arguments instead of `int`, and moves all callers to use the new methods, eliminating custom SafeHandle marshaling. Once this new `System.Native` propagates everywhere, we can remove the old methods and eliminate the `_IntPtr` suffix on the names. @stephentoub +7593 area-System.Runtime Parse integers in a string based on an index ## Summary Currently parsing integers takes a string, and parses the entirety of the string. I propose adding APIs to parse a string from an index, with an additional overload specifying the length. ## Rationale In order to parse part of a string, we need to perform a `string.Substring(...)` method on the string. This results in allocations, affecting performance. ## Proposed APIs - with slices ``` csharp public int Parse(ReadOnlySlice s) public int Parse(ReadOnlySlice s, IFormatProvider format); public bool TryParse(ReadOnlySlice s, out int i); public bool TryParse(ReadOnlySlice s, IFormatProvider format, out int i); ``` ## Proposed APIs - without slices ``` csharp public class Int32 { // Proposed new APIs public int Parse(string s, int index); // Either public int Parse(string s, int index, int count); // or Public int Parse(string s, int index, int length); // or public int Parse(string s, int startIndex, int endIndex); // Existing parsing APIs public int Parse(string); ... } ``` ## Discussion - These overloads should be intelligent and not allocate any substrings - I assume TryParse overloads would also have to be added - Would we need to add overloads taking an IFormatProvider too - How common is this use case? - Is this worth adding 4 public methods to each integer type? - Should we bother with the `Parse(string, int)` overload? I think most people calling his API would know the required length. ## Example I added some custom parsing code in a PR in coreclr (dotnet/coreclr#3992). This is basically the code that these proposed methods would use. Parsing performance of ints in Version increased by up to 4x due to reduced substring allocations. Another example is Guid (dotnet/coreclr#3965) where performance of parsing Guid strings increased by up to 3x with the allocation count reducing to 0. ## Alternatives - Add a `Parse(char* s, int count)` method instead but this is rare +7594 area-System.Runtime BitConverter: Write bytes to exisiting array "I moved this here from dotnet/coreclr#4142 because I was told this is the right place. Hello, are there any ambitions to provide an API to BitConverter that takes an exisiting `byte[]` and position to include the bytes of a primitive? Right now I have an additional converter based on BitConverter that has methods like this: ``` c# /// /// Includes an int into an array of bytes /// public unsafe static void InsertBytes(int value, byte[] bytes, int index) { // Error handling and parameter validation if (bytes == null) throw new ArgumentNullException(nameof(bytes)); if (index + 4 > bytes.Length) throw new ArgumentOutOfRangeException(nameof(index)); fixed (byte* b = bytes) *((int*)(b + index)) = value; } /// /// Includes a long into an array of bytes /// [System.Security.SecuritySafeCritical] // auto-generated public unsafe static void InsertBytes(long value, byte[] bytes, int index) { // Error handling and parameter validation if (bytes == null) throw new ArgumentNullException(""bytes""); if (index + 8 > bytes.Length) throw new ArgumentOutOfRangeException(""index""); fixed (byte* b = bytes) *((long*)(b + index)) = value; } ``` I think it would be great to have those methods as well whenever we try to serialize values into an array without having to use `Array.Copy` all the time. To avoid redundant code the `GetBytes` methods should then just call the new methods. ``` c# // Converts an int into an array of bytes with length // four. [System.Security.SecuritySafeCritical] // auto-generated public unsafe static byte[] GetBytes(int value) { Contract.Ensures(Contract.Result() != null); Contract.Ensures(Contract.Result().Length == 4); byte[] bytes = new byte[4]; InsertBytes(value, bytes, 0); return bytes; } // Converts a long into an array of bytes with length // eight. [System.Security.SecuritySafeCritical] // auto-generated public unsafe static byte[] GetBytes(long value) { Contract.Ensures(Contract.Result() != null); Contract.Ensures(Contract.Result().Length == 8); byte[] bytes = new byte[8]; InsertBytes(value, bytes, 0); return bytes; } ``` I would be happy to submit a PR once this was reviewed and approved. " +7595 area-System.Threading Add some Threading tests Adds threading tests to cover all gaps from ToF/tests/FX/Threading with the exception of the tests for the Monitor class which will have their own issue now: #6459 +7596 area-Microsoft.CSharp SymbolTable.DoesMethodHaveParameterArray throws exception when accessing a dynamic created property "--> Tested with **dnxcore50**: The following helper code to create a dynamic type with certain properties: ``` c# public static dynamic Create(IDictionary properties) { AssemblyName name = new AssemblyName(""Test.DynamicClasses, Version=1.0.0.0""); AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndCollect); var module = assembly.DefineDynamicModule(""Test.DynamicClasses""); string typeName = ""DynamicClass1""; TypeBuilder tb = module.DefineType(typeName, TypeAttributes.Class | TypeAttributes.Public, typeof(DynamicClass)); GenerateProperties(tb, properties); Type result = tb.CreateTypeInfo().AsType(); return Activator.CreateInstance(result); } ``` And the method which uses IL to create the backing fields, get/set methods and the properties: ``` c# private static FieldInfo[] GenerateProperties(TypeBuilder tb, IDictionary properties) { const MethodAttributes getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig; FieldInfo[] fields = new FieldBuilder[properties.Count]; int i = 0; foreach (string key in properties.Keys) { string name = key; Type type = properties[key]; FieldBuilder fb = tb.DefineField(""_"" + key, type, FieldAttributes.Public); PropertyBuilder pb = tb.DefineProperty(key, PropertyAttributes.HasDefault, type, null); MethodBuilder mbGet = tb.DefineMethod(""get_"" + name, getSetAttr, type, Type.EmptyTypes); ILGenerator genGet = mbGet.GetILGenerator(8); genGet.Emit(OpCodes.Ldarg_0); genGet.Emit(OpCodes.Ldfld, fb); genGet.Emit(OpCodes.Ret); pb.SetGetMethod(mbGet); MethodBuilder mbSet = tb.DefineMethod(""set_"" + name, getSetAttr, null, new Type[] { type }); ILGenerator genSet = mbSet.GetILGenerator(8); genSet.Emit(OpCodes.Ldarg_0); genSet.Emit(OpCodes.Ldarg_1); genSet.Emit(OpCodes.Stfld, fb); genSet.Emit(OpCodes.Ret); pb.SetSetMethod(mbSet); fields[i] = fb; } return fields; } ``` And the test code is like: ``` c# var list = new Dictionary(); list.Add(""x"", typeof(string)); var obj = Fact.Create(list); obj._x = ""ddd""; // accessing backing field directly works string x_ = obj._x; // works Console.WriteLine(""x_=[{0}]"", x_); obj.x = ""err""; // does not work --> throws exception like below string x = obj.x; // does not work --> throws exception like below Console.WriteLine(x); ``` ``` System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.CSharp.RuntimeBinder.SymbolTable.DoesMethodHaveParameterArray(ParameterInfo[] parameters) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddMethodToSymbolTable(MemberInfo member, AggregateSymbol callingAggregate, MethodKindEnum kind) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddPropertyToSymbolTable(PropertyInfo property, AggregateSymbol aggregate) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddNamesInInheritanceHierarchy(String name, List`1 inheritance) at Microsoft.CSharp.RuntimeBinder.SymbolTable.PopulateSymbolTableWithName(String name, IEnumerable`1 typeArguments, Type callingType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.PopulateSymbolTableWithPayloadInformation(DynamicMetaObjectBinder payload, Type callingType, ArgumentObject[] arguments) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, IEnumerable`1 args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpSetMemberBinder.FallbackSetMember(DynamicMetaObject target, DynamicMetaObject value, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindSetMember(SetMemberBinder binder, DynamicMetaObject value) at System.Dynamic.SetMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) ``` " +7597 area-Infrastructure .NET Core test coverage for Bash on Windows https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ We should add a .NET Core test run for Bash on Windows. @Chrisboh could you add this to Helix initially? +7599 area-System.Net Linux: ArgumentOutOfRangeException on multi-row insert on SQL Azure I get: ``` ---- System.Data.SqlClient.SqlException : A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 35 - An internal exception was caught) -------- System.IO.IOException : The write operation failed, see inner exception. ------------ System.ArgumentOutOfRangeException : Specified argument was out of the range of valid values. Parameter name: size at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean openConnection, Boolean closeConnection) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues, Boolean manageConnection) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection) ----- Inner Stack Trace ----- at System.Net.Security.SslStreamInternal.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.Data.SqlClient.SNI.SNITCPHandle.Send(SNIPacket packet) ----- Inner Stack Trace ----- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Data.SqlClient.SNI.SslOverTdsStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Security.SslStreamInternal.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) ``` When running ``` SQL SET NOCOUNT ON; DECLARE @toInsert2 TABLE ([Color] nvarchar(15), [DiscontinuedDate] datetime, [ListPrice] money, [Name] nvarchar(450), [ProductCategoryID] int, [ProductModelID] int, [ProductNumber] nvarchar(25), [SellEndDate] datetime, [SellStartDate] datetime, [Size] nvarchar(5), [StandardCost] money, [ThumbNailPhoto] varbinary(max), [ThumbnailPhotoFileName] nvarchar(50), [Weight] decimal, [_Position] [int]); INSERT INTO @toInsert2 VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, 0), (@p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25, @p26, @p27, 1); DECLARE @inserted2 TABLE ([ProductID] int, [Color] nvarchar(15), [DiscontinuedDate] datetime, [ListPrice] money, [ModifiedDate] datetime, [Name] nvarchar(450), [ProductCategoryID] int, [ProductModelID] int, [ProductNumber] nvarchar(25), [SellEndDate] datetime, [SellStartDate] datetime, [Size] nvarchar(5), [StandardCost] money, [ThumbNailPhoto] varbinary(max), [ThumbnailPhotoFileName] nvarchar(50), [Weight] decimal, [rowguid] uniqueidentifier, [_Position] [int]); MERGE [SalesLT].[Product] USING @toInsert2 AS i ON 1=0 WHEN NOT MATCHED THEN INSERT ([Color], [DiscontinuedDate], [ListPrice], [Name], [ProductCategoryID], [ProductModelID], [ProductNumber], [SellEndDate], [SellStartDate], [Size], [StandardCost], [ThumbNailPhoto], [ThumbnailPhotoFileName], [Weight]) VALUES (i.[Color], i.[DiscontinuedDate], i.[ListPrice], i.[Name], i.[ProductCategoryID], i.[ProductModelID], i.[ProductNumber], i.[SellEndDate], i.[SellStartDate], i.[Size], i.[StandardCost], i.[ThumbNailPhoto], i.[ThumbnailPhotoFileName], i.[Weight]) OUTPUT INSERTED.[ProductID], INSERTED.[Color], INSERTED.[DiscontinuedDate], INSERTED.[ListPrice], INSERTED.[ModifiedDate], INSERTED.[Name], INSERTED.[ProductCategoryID], INSERTED.[ProductModelID], INSERTED.[ProductNumber], INSERTED.[SellEndDate], INSERTED.[SellStartDate], INSERTED.[Size], INSERTED.[StandardCost], INSERTED.[ThumbNailPhoto], INSERTED.[ThumbnailPhotoFileName], INSERTED.[Weight], INSERTED.[rowguid], i._Position INTO @inserted2; SELECT [ProductID], [ModifiedDate], [rowguid] FROM @inserted2 ORDER BY _Position; ``` with ``` SQL `@p0 nvarchar(max) ,@p1 datetime2(7),@p2 decimal(1,0),@p3 nvarchar(4000),@p4 int,@p5 int,@p6 nvarchar(4000),@p7 datetime2(7),@p8 datetime2(7),@p9 nvarchar(max) ,@p10 decimal(1,0),@p11 varbinary(max) ,@p12 nvarchar(max) ,@p13 decimal(4,0),@p14 nvarchar(max) ,@p15 datetime2(7),@p16 decimal(1,0),@p17 nvarchar(4000),@p18 int,@p19 int,@p20 nvarchar(4000),@p21 datetime2(7),@p22 datetime2(7),@p23 nvarchar(max) ,@p24 decimal(1,0),@p25 varbinary(max) ,@p26 nvarchar(max) ,@p27 decimal(4,0)', @p0=NULL,@p1=NULL,@p2=0,@p3=N'1705deb0-2dff-40d1-a40e-f3ff1c42e36d',@p4=NULL,@p5=NULL,@p6=N'1705deb0-2dff-40d1-a40e-f',@p7=NULL,@p8='2016-04-08 13:03:35.3168817',@p9=NULL,@p10=0,@p11=NULL,@p12=NULL,@p13=1000,@p14=NULL,@p15=NULL,@p16=0,@p17=N'5c6dc402-ab8c-4f7f-a40d-945c0491c8b8',@p18=NULL,@p19=NULL,@p20=N'5c6dc402-ab8c-4f7f-a40d-9',@p21=NULL,@p22='2016-04-08 13:03:35.8103840',@p23=NULL,@p24=0,@p25=NULL,@p26=NULL,@p27=1000 ``` On Linux CoreCLR against [adventureworks.zip](https://github.com/dotnet/corefx/files/210782/adventureworks.zip) See aspnet/EntityFramework#4228 +7600 area-System.Net Use IntPtr-based file descriptors exclusively, in native calls from Sockets code, part 2 "Part 2 of the fix for #6928. Change signatures of the ""permanent"" native networking methods to take IntPtr arguments, and switch back to using those methods. Once this change propagates everywhere, we can remove the *_IntPtr methods introduced in #7587. @stephentoub " +7605 area-Infrastructure Add /a option to clean.cmd clean.cmd supports /all, clean.sh supports -a and --all, for parity consider adding /a option to clean.cmd +7608 area-Serialization Improve data contract serializers performance in dictionary scenario - Improve data contract serializers performance in dictionary scenario by 2x. - Instead of the current way to get encoded string which involves string creation and buffer copy, use the encoding.GetBytes API - When creating a new instance of a type without a default constructor we use reflection to invoke a method that is not from the serialization assembly. Since that is significantly slower, we should use Activator.CreateInstance whenever we can. The Activator.CreateInstance throws exception so we need to check to know if a type has default constructor or not and use the appropriate method. As this check is also slow, so I've added a cache to make sure we only do this once for each type. - ~~Internally dictionaries are handled as collection of KeyValues. I've updated this type to have default constructor so we can use Activator.CreateInstance to create new instance of it.~~ Update: - Instead of converting KeyValue type to class, which potentially causes GC long pauses, use Activator.CreateInstance for value type cc: @shmao @SGuyGe @zhenlan @mconnew Fix #7578 and #7577 +7622 area-System.Net WinHttpResponseStream: Cannot access a disposed object. @davidsh Looks like this might be for you based on other issues. This just started cropping up with my use of both `WindowsAzure.Storage` versions `6.2.2-preview` and `7.0.1-preview` when calling `.ExecuteQuerySegmentedAsync(...)`. The resolved version of the `System.Net.Http` package is `4.0.1-rc3-24008-00`. If you would like a repro of the issue, let me know, and I'll put one up. If this is just due to current churn, no prob, I can wait (a few days anyway). ``` xml 501 NotImplemented Primary 128c10da-0002-001a-0982-920393000000 Sat, 09 Apr 2016 17:07:40 GMT Sat, 09 Apr 2016 17:07:38 GMT Sat, 09 Apr 2016 17:07:41 GMT NotImplemented The requested operation is not implemented on the specified resource. RequestId:128c10da-0002-001a-0982-920393000000 Time:2016-04-09T17:07:40.7566462Z StorageException -2146233088 Cannot access a disposed object. Object name: 'System.Net.Http.WinHttpResponseStream'. ObjectDisposedException -2146232798 Cannot access a disposed object. Object name: 'System.Net.Http.WinHttpResponseStream'. System.Net.Http at System.Net.Http.WinHttpResponseStream.CheckDisposed() at System.Net.Http.WinHttpResponseStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken token) at System.Net.Http.DelegatingStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at Microsoft.WindowsAzure.Storage.Core.Util.StreamExtensions.<WriteToAsync>d__1`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.<ExecuteAsyncInternal>d__4`1.MoveNext() ``` +7623 area-System.Net System.Net.Http 4.1 Contract Revisions ## Background To support important customer scenarios for CoreFx RTM, we want to update the System.Net.Http contract from 4.0 to 4.1. The System.Net.Http API surface consists of several classes. All of the implementation also lives in the .NET Framework as mostly a standalone implementation DLL (System.Net.Http.dll). Some functionality depends on low level APIs (such as HttpWebRequest) that lives in System.dll As part of updating the contract to 4.1, we are also OOB'ing the Desktop (net46 Windows) implementation so that the package won't be a facade over Desktop but rather a full implementation. As part of this, we are changing the implementation used for Desktop from the legacy HttpWebRequest sockets stack to the WinHttpHandler stack based on native WinHTTP. This will give us a good path forward as WinHttpHandler stack will be getting HTTP/2.0 support with newer versions of Windows 10. Since we are OOB'ing the DLL, we are able to add surface area as regular properties and not be forced to use extension methods (which wouldn't work in this case anyways). .NET Framework (Desktop) developers will only get this new implementation and expanded API set when they consume the NuGet package. Otherwise .NET Framework (Desktop) developers will get the existing inbox implementation. ## Proposed API ``` c# namespace System.Net.Http { // Other classes already part of System.Net.Http 4.0 contract ... public partial class HttpClientHandler : System.Net.Http.HttpMessageHandler { // // Existing methods and properties. // public HttpClientHandler() { } public bool AllowAutoRedirect { get; set; } public System.Net.DecompressionMethods AutomaticDecompression { get; set; } public System.Net.Http.ClientCertificateOption ClientCertificateOptions { get; set; } public System.Net.CookieContainer CookieContainer { get; set; } public System.Net.ICredentials Credentials { get; set; } public int MaxAutomaticRedirections { get; set; } public long MaxRequestContentBufferSize { get; set; } public bool PreAuthenticate { get; set; } public System.Net.IWebProxy Proxy { get; set; } public virtual bool SupportsAutomaticDecompression { get; } public virtual bool SupportsProxy { get; } public virtual bool SupportsRedirectConfiguration { get; } public bool UseCookies { get; set; } public bool UseDefaultCredentials { get; set; } public bool UseProxy { get; set; } protected override void Dispose(bool disposing); protected internal override System.Threading.Tasks.Task SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken); // // New properties. // public bool CheckCertificateRevocationList { get; set; } // Wanted to have this property be on type 'X509Certificate2Collection' but conflicts // with derived class WebRequestHandler in .NET Framework of the same property name. public System.Security.Cryptography.X509Certificates.X509CertificateCollection ClientCertificates { get; set; } // Wanted to have this property be called 'ServerCertificateValidationCallback` but // that name would conflict the derived class WebRequestHandler in .NET Framework // where the property is of a different type. public System.Func ServerCertificateCustomValidationCallback { get; set; } public System.Net.ICredentials DefaultProxyCredentials { get; set; } public int MaxConnectionsPerServer { get; set; } public int MaxResponseHeadersLength { get; set; } public System.Security.Authentication.SslProtocols SslProtocols { get; set; } // Generic property bag to that would allow for additional properties to be set and recognized by particular implementations (i.e. Windows vs. Unix, Unix-only connection socket options, etc.) public System.Collections.Generic.IDictionary Properties { get; } } } ``` ## Open Questions / Issues - There is an existing .NET Framework type, `System.Net.Http.WebRequestHandler` that lives in `System.Net.Http.WebRequest.dll`. `WebRequestHandler` derives from `HttpClientHandler`. And `WebRequestHandler` already has these properties on the type: ``` c# public System.Security.Cryptography.X509Certificates.X509CertificateCollection ClientCertificates { get; set; } public RemoteCertificateValidationCallback ServerCertificateValidationCallback { get; set; } ``` ## Usage The new HttpClientHandler properties being considered are currently already in the System.Net.Http.WinHttpHandler contract, as properties of the WinHttpHandler class. That contract is only implemented on Windows. For reference, all the System.Net.\* APIs were previously reviewed including WinHttpHandler: https://github.com/dotnet/apireviews/pull/21 Pending the 4.1 System.Net.Http review, the WinHttpHandler contract is being considered for removal from CoreFx final RTM contracts since it will be duplicative to the revised System.Net.Http 4.1 contract. +7626 area-System.Net Initial System.Net.Http 4.1 contract To support important customer scenarios for CoreFx RTM, we will be updating the System.Net.Http contract from 4.0 to 4.1. We are focusing on HttpClientHandler enhancements. We will be submitting the final proposed list of additions as part of issue #7623. As part of updating the contract to 4.1, we are also OOB'ing the Desktop (net46 Windows) implementation so that the package won't be a facade over Desktop but rather a full implementation. This is possible since System.Net.Http has always been a standalone dll in the .NET Framework. As part of this, we are changing the implementation for Desktop from the legacy HttpWebRequest sockets stack to the WinHttpHandler stack based on native WinHTTP. This will give us a good path forward as WinHttpHandler stack will be getting HTTP/2.0 support with newer versions of Windows 10. This initial PR has a few API additions that we are definitely going to be adding. It's important to get these changes into the builds so that we can fully bake the OOB Http.dll assembly on all the platforms and continue package testing. There is an existing System.Net.Http.WebRequestHandler class in the .NET Framework located in System.Net.Http.WebRequest.dll. This class is a subclass of HttpClientHandler. Due to this, we are being careful not to cause collisions with some of these added properties. WebRequestHandler has a 'ClientCertificates' property and a 'ServerCertificateValidationCallback' property. So, we are aligning/renaming the properties as we add them to HttpClientHandler OOB assembly. This may get altered slightly as we finalize the 4.1 System.Net.Http API. +7630 area-System.Diagnostics EventListener.DisposeOnShutdown crash due to collection modified during enumeration "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/windows_nt_debug/1206/consoleFull ``` 10:51:06 System.InvalidOperationException: Collection was modified; enumeration operation may not execute. 10:51:06 at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 10:51:06 at System.Collections.Generic.List`1.Enumerator.MoveNextRare() 10:51:06 at System.Diagnostics.Tracing.EventListener.DisposeOnShutdown(Object sender, EventArgs e) 10:51:06 d:\j\workspace\windows_nt_debuge57bf35e\Tools\tests.targets(147,5): warning MSB3073: The command ""xunit.console.exe System.Globalization.Calendars.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests "" exited with code 1. ``` " +7633 area-System.Net Use exception filters in StreamFramer Contributes to #7632. cc @stephentoub @bartonjs +7634 area-System.Linq Would it be possible to remove some of the LowLevel* classes? As I understand it, the purpose of the `LowLevel*` classes in `Common` (such as [`LowLevelEnumerable`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Linq/LowLevelEnumerable.cs)) is to avoid a dependency on `System.Linq` or `System.Collections`, while still being able to use features from the collection classes. Unfortunately, they have to be maintained in tandem with their counterparts and as a result are more poorly optimized (e.g. [this](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Linq/LowLevelEnumerable.cs#L33) naïve implementation of `Select`, vs. [this](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Select.cs#L12) one). Would it be possible to move the actual sources for the collection classes into `Common`, and a partial class that simply pointed people looking for the code to the `Common` folder? For example, we do this with `Debug` today; the actual source is [here](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Diagnostics/Debug.cs) in `Common`, while the file in `System.Diagnostics` is just there to [define public visibility](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Debug/src/System/Diagnostics/Debug.Public.cs). cc @stephentoub @JonHanna +7635 area-System.IO NamedPipeClientStream poorly handles the case where the pipe does not exist NamedPipeClientStream waits when the pipe does not exist, and it waits by spinning: ``` // Some platforms may return immediately from TryConnect if the connection could not be made, // e.g. WaitNamedPipe on Win32 will return immediately if the pipe hasn't yet been created, // and open on Unix will fail if the file isn't yet available. Rather than just immediately // looping around again, do slightly smarter busy waiting. sw.SpinOnce(); ``` This is problematic for two reasons. 1. I typically do not want to wait if the pipe does not exist; I only want to wait if the pipe is busy. This is because if the pipe doesn't exist, the server is probably not running, so waiting is unlikely to resolve anything. 2. Spinning on file not found consumes an entire CPU waiting for a service to start. Not a good choice. This combination of problems basically makes timeouts larger than a few milliseconds useless if there is any risk that the pipe will not exist. To fix this, I would propose two things: 1. Stop spinning. Sleep for a short time if you must poll. 2. Provide an option to fail if the pipe does not yet exist. Frankly I think this should be the default, but there are probably compatibility implications of this. +7636 area-System.Net Convert BidirectionalDictionary to be a struct Similarly to #7559, since `BidirectionalDictionary` is a type with all-readonly fields (and is always <= 16 bytes, even on 64-bit platforms), it's optimal for being converted to a struct. This PR includes the following changes: - Change definition from `sealed class` to `struct` - Removed `IEnumerable` interface implementation, as `foreach` is duck-typed and we don't want to encourage boxing - If future consumers of the class need to use it with LINQ, they can define their own reference-type wrapper around the struct - Converted call sites of the type to use C# 6 dictionary initializers rather than collection initializers - Dictionary initializers are duck-typed, so we don't need to implement `IEnumerable` - Added indexer property to satisfy the dictionary initializer cc @stephentoub @bartonjs @davidsh @CIPop +7637 area-System.Data System.Data.SqlClient still uses the non-generic collections A quick [GitHub search](https://github.com/dotnet/corefx/search?l=json&q=NonGeneric&utf8=%E2%9C%93) shows that `System.Collections.Specialized` and `System.Data.SqlClient` are the only non-test assemblies still dependent on the non-generic collections. While it's kind of inevitable for the specialized collections since it contains a lot of legacy code, it appears from [this](https://github.com/dotnet/corefx/pull/6527) PR that we can remove `System.Collections.NonGeneric` from the `SqlClient` implementation, since it's not exposed to callers. This is a tracking issue I'm opening up to remove the dependency from `SqlClient`. +7640 area-Infrastructure Command files (*.cmd) can't use directories with spaces "When creating or evaluating an environment variable, quotes are not required: ``` batchfile set INIT_TOOLS_LOG=%~dp0init-tools.log if [%PACKAGES_DIR%]==[] set PACKAGES_DIR=%~dp0packages\ ``` However, when turning that environment variable into a file to be used, quotes are required. Instead of: ``` batchfile set /P BUILDTOOLS_VERSION=< %~dp0BuildToolsVersion.txt echo %PROJECT_JSON_CONTENTS% > %PROJECT_JSON_FILE% echo Running %0 > %INIT_TOOLS_LOG% ``` The correct syntax is: ``` batchfile set /P BUILDTOOLS_VERSION=< ""%~dp0BuildToolsVersion.txt"" echo %PROJECT_JSON_CONTENTS% > ""%PROJECT_JSON_FILE%"" echo Running %0 > ""%INIT_TOOLS_LOG%"" ``` Because of the lack of quotes, any attempt to use these command files in a directory with spaces will fail. -Neil " +7647 area-System.Net NegotiateStream NTLM implementation on Unix Cherry Picked the reviewed commit from dev/NegotiateStream and resending against master. cc: @stephentoub +7652 area-Infrastructure Encapsulate dev workflow common logic Add a script that encapsulates the common logic used in the dev workflow (i.e. OSGroup selection, common logging, init-tools, etc) and have all other dev workflow scripts (sync, clean, build-test, etc) simply call it with extra arguments unique to each dev workflow script. As mentioned by @weshaggard in PR #7566 +7654 area-System.ComponentModel Expand System.ComponentModel.TypeConverter test coverage This brings `System.ComponentModel.TypeConverter` line coverage to 47% via some straightforward unit tests of `EventDescriptor`, `PropertyDescriptor`, and `TypeDescriptor` APIs. @twsouthwick +7656 area-System.Runtime Add Split string extension that returns IEnumberable instead of an array. "It's common when parsing strings to need a specific element from a parsed string. Currently, String.Split returns a fully parsed array of all the values, whether the developer needs them all or not. It would very useful to return a IEnumerable that can be used in a Linq expression. Then this can be done: string csv = ""Bill, Gates, One Microsoft Way, Redmond, WA, 98052""; var lastName = csv.EnumerateString(',').Take(2).Last(); The function would not need to fully parse the string if it is done after the second item, in this example. I wrote something like this many years ago and have found it to be very helpful, easier to read, and in many cases, faster than using Split. " +7657 area-System.Security Perform manual verification for Crypto on UWP Automated tests are all well and good, but at some point one really does need to try using a thing to make sure that the tests aren't being unreasonable. - [x] Hash some data using MD5, SHA-1, SHA-2 (SHA256, SHA384, SHA512) - [x] HMAC some data - [x] Encrypt/Decrypt something using AES - [x] Sign/Verify with ECDSA - [x] Encrypt/Decrypt something using RSA-PKCS#1 - [x] Encrypt/Decrypt something using RSA-OAEP (SHA-1, SHA-2) - [x] Sign/Verify with RSA-PKCS#1 - [x] Sign/Verify with RSA-PSS - [x] Encrypt/Decrypt something using 3DES - [x] Get an RSA Public Key from a cert - [x] Get an RSA Private Key from a PFX - [x] Get an ECDSA Public Key from a cert - [x] Get an ECDSA Private Key from a PFX - [x] Play with X509Store All of these are expected to work. Any unusual responses should be turned into issues. +7658 area-System.Diagnostics On Mac/Linux, Process.ExitCode always returns 0 when Process.Exited is used "When `Process.WaitForExit()` is called on a `Process` that was configured to do something with its `Exited` event, it always returns `0`, regardless of the actual exit code of the process. If `WaitForExit()` immediately follows `Start()`, things work as I expect. Sample program: ``` C# using System; using System.Diagnostics; using System.Threading; class ExitedEventExitCodeDemo { public static void Main() { ManualResetEvent toolExited = new ManualResetEvent(false); var proc = new Process(); proc.StartInfo = new ProcessStartInfo(""/bin/sh""); proc.StartInfo.Arguments = ""-c \""exit 1\""""; // turn on the Process.Exited event proc.EnableRaisingEvents = true; // sign up for the exit notification proc.Exited += (object sender, EventArgs e) => toolExited.Set(); proc.Start(); // Waiting for this event after Start gives a 0 ExitCode. toolExited.WaitOne(); // Just sleeping for a while also gives 0. //Thread.Sleep(1000); // But if this is the next line after Start(), ExitCode is 1 as expected. proc.WaitForExit(); Console.WriteLine(""Exit code (should be 1): "" + proc.ExitCode); } } ``` Here's evidence that the child process really fails, but `ExitCode` is `0`: ``` ShellSession $ strace -f -e trace=process ./corerun exec.exe execve(""./corerun"", [""./corerun"", ""exec.exe""], [/* 20 vars */]) = 0 arch_prctl(ARCH_SET_FS, 0x7fac47a52780) = 0 clone(child_stack=0x7fac453def70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac453df9d0, tls=0x7fac453df700, child_tidptr=0x7fac453df9d0) = 10383 Process 10383 attached [pid 10382] clone(child_stack=0x7fac44bddf70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac44bde9d0, tls=0x7fac44bde700, child_tidptr=0x7fac44bde9d0) = 10384 Process 10384 attached [pid 10382] clone(child_stack=0x7fac443dcf70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac443dd9d0, tls=0x7fac443dd700, child_tidptr=0x7fac443dd9d0) = 10385 Process 10385 attached [pid 10382] clone(child_stack=0x7fac43bdbf70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac43bdc9d0, tls=0x7fac43bdc700, child_tidptr=0x7fac43bdc9d0) = 10386 Process 10386 attached [pid 10382] clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fac47a52a50) = 10387 Process 10387 attached [pid 10387] execve(""/bin/sh"", [""/bin/sh"", ""-c"", ""exit 1""], [/* 20 vars */]) = 0 [pid 10387] arch_prctl(ARCH_SET_FS, 0x7f80adbdb740) = 0 [pid 10387] exit_group(1) = ? [pid 10387] +++ exited with 1 +++ [pid 10382] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=10387, si_status=1, si_utime=0, si_stime=0} --- [pid 10382] clone(child_stack=0x7fac40eb5f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac40eb69d0, tls=0x7fac40eb6700, child_tidptr=0x7fac40eb69d0) = 10388 Process 10388 attached [pid 10382] clone(child_stack=0x7fac406b4f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac406b59d0, tls=0x7fac406b5700, child_tidptr=0x7fac406b59d0) = 10389 Process 10389 attached [pid 10382] clone(child_stack=0x7fac3fe73f70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fac3fe749d0, tls=0x7fac3fe74700, child_tidptr=0x7fac3fe749d0) = 10390 [pid 10388] wait4(10387, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG, NULL) = 10387 Process 10390 attached [pid 10388] wait4(10387, 0x7fac40eb55e4, WNOHANG, NULL) = -1 ECHILD (No child processes) Exit code (should be 1): 0 [pid 10385] _exit(0) = ? [pid 10385] +++ exited with 0 +++ [pid 10382] exit_group(0) = ? [pid 10390] +++ exited with 0 +++ [pid 10389] +++ exited with 0 +++ [pid 10388] +++ exited with 0 +++ [pid 10386] +++ exited with 0 +++ [pid 10384] +++ exited with 0 +++ [pid 10383] +++ exited with 0 +++ +++ exited with 0 +++ ``` Note that pid 10387 exited with 1 according to strace, but `proc.ExitCode` was 0. This is the root cause of Microsoft/MSBuild#566. " +7660 area-System.ComponentModel ComponentModel attributes that assist in altering data for integrity "It's been asked, [how data annotations can change data](http://stackoverflow.com/questions/51269), and [replace](http://stackoverflow.com/questions/15541199) or [trim](http://stackoverflow.com/questions/2864343/) property values. I don't feel annotations should be used in this way, but there could be benefit in attributes that would preform common and simple tasks that do alter data. These attributes might appropriately be called mutation attributes, which could include: Trim, Replace, RegexReplace, EnsureCase, etc. ### Simple Example It's common that models will trim whitespace form string properties and change empty strings to null. ``` csharp public class User { private string _firstName; public string FirstName { get { return _firstName; } set { value = value.Trim(); _firstName = String.IsNullOrEmpty(value) ? null : value; } } } ``` This could be the business requirement for all string properties of the user class. With mutation attributes this could be shortened drastically. ``` csharp public class User { [Trim, ToDefaultValue("""")] public string FirstName { get; set; } } ``` ### Advanced Example Let's assume we have sign up screen that accepts a username and password, and a model that annotates `User.UserName` as accepting any alphanumeric string including underscores as valid characters. Should the end-user enter `m@x_speed.01` as their desired username, validation would cause exceptions. Then the program should give an appropriate error message: ""Username must contain only alphanumeric character and underscores"". However if the designer would provide mutation attributes, the program could try to determine a valid value from the input. We could then provide a better message to the user: ""That username is invalid. Would you like to use 'mx_speed01' instead?"" ### Proposed API ``` csharp namespace System.ComponentModel.DataMutations { // Describes the context in which mutation is performed. // It supports IServiceProvider so that custom mutation code can acquire additional services to help it perform its mutation. public interface IMutationContext : IServiceProvider { object ObjectInstance { get; } IDictionary Items { get; } IEnumerable Attributes { get; } } // Describes the context in which mutation is performed. // T: The type to consult during mutation. public sealed class MutationContext : IMutationContext { // Constructors public MutationContext(T instance, IDictionary items) : this(instance, items, null); public MutationContext(T instance, IServiceProvider serviceProvider) : this(instance, null, serviceProvider); public MutationContext(T instance, IDictionary items, IServiceProvider serviceProvider) : this(instance); public MutationContext(T instance); // Properties public T ObjectInstance { get; } object IMutationContext.ObjectInstance { get; } public IDictionary Items { get; } public IEnumerable Attributes { get; } // Methods public void InitializeServiceProvider(Func serviceProvider); public object GetService(Type serviceType); } // Helper class to validate objects, properties, and other values using their associated MutationAttributes and custom mutation as implemented through the IMutableObject interface. public static class Mutator { // Mutate Value public static T Mutate(this MutationContext context, IEnumerable attributes) => typeof(T).GetTypeInfo().IsValueType ? // Mutate as value : // Mutate as object; public static T Mutate(this MutationContext context, IEnumerable attributes, T value) where T : struct; // Mutate Object public static T Mutate(this MutationContext context) where T : class; public static T Mutate(this MutationContext context, T instance) where T : class; public static T Mutate(this MutationContext context, T instance, IEnumerable attributes) where T : class; // Mutate Property public static object MutateProperty(this MutationContext context, PropertyInfo property) where T : class; public static P MutateProperty(this MutationContext context, PropertyInfo property, P value) where T : class; public static P MutateProperty(this MutationContext context, Expression> property) where T : class; public static P MutateProperty(this MutationContext context, Expression> property, P value) where T : class; } // Describes custom mutation logic that should be preformed on an object during mutation. public interface IMutableObject { void Mutate(IMutationContext context); } // Base class for all mutation attributes. public abstract class MutationAttribute : Attribute { // Properties public virtual bool RequiresContext { get; } public virtual int Priority { get; set; } // Methods public object Mutate(object value, IMutationContext context = null); protected abstract object MutateValue(object value, IMutationContext context); } // Trim Provides as sample implementation of MutationAttribute [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)] public class TrimAttribute : MutationAttribute { // Constructors public TrimAttribute(params char[] characters); // Properties public char[] Characters { get; private set; } public TrimOptions Direction { get; set; } // Methods protected override object MutateValue(object value, IMutationContext context); } } ``` #### Implemented as Proposed Time has been spent on an implementation as it was needed for a project. Further documentation is provided on the repo. I will continue to update the repo according to this issue. **Source:** [roydukkey/Dado.ComponentModel.Mutations](https://github.com/roydukkey/Dado.ComponentModel.Mutations) **MyGet:** http://www.myget.org/gallery/roydukkey #### Updates 1. Add Attributes property to IMutationContext 2. Add Priority property to MutationAttribute - Without a priority `[DefaultValue(""~/data/""), Trim, ToDefaultValue("""")] string path { get; set; } = "" "";` will have a different result than `[DefaultValue(""~/data/""), ToDefaultValue(""""), Trim] string path { get; set; } = "" "";`. - This will get even messier when inheritance is introduced. " +7661 area-System.Security Add tests for System.Security.AccessControl ACE classes There doesn't seem to be any tests for System.Security.AccessControl in open. I decided to port these tests in chunks instead of all at once to ease reviewing and get feedback on structure before it was difficult to modify. The tests in ToF are very incompatible with Xunit so after wasting a bunch of time trying to get them running in Open, I opted to rewrite them instead. The structure of the tests is different than it was, but the MemberData we're testing with is the same. Progress towards #6922. @stephentoub +7664 area-System.Net Implement send/receive timeouts on CurlHandler This adds SendTimeout, ReceiveHeadersTimeout, and ReceiveDataTimeout to CurlHandler. It's implemented by mapping the timeouts to libcurl's notion of a low speed limit, which lets libcurl automatically cancel a request if an average rate of sending/receiving bytes isn't maintained over a specified period of time. cc: @davidsh, @ericeil, @kapilash, @bartonjs @davidsh, as with the previous additions, this can be tweaked based on what surface area we decide to expose. For now I've matched the APIs exposed from WinHttpHandler, albeit using Timeout.Infinite as the default to make it pay-for-play and to avoid changing from current HttpClientHandler behaviors. +7666 area-System.Security CspParameters.ParentWindowHandle is not respected +7669 area-System.Net Fix HttpContent.CopyToAsync to return rather than throw exception I broke this as part of my async/await refactorings. It was supposed to return a Task.FromException but instead was throwing. And the tests didn't catch it, as they were too loose in what they were checking, so also tightening the tests. cc: @davidsh +7671 area-System.Net Improve performance of WebUtility.Decode for non-escaped strings "- Cuts allocations down to 1/3 of the original - Doubles performance (in time) - We still allocate a little bit, as removing all allocations would harm the performance of strings that actually need escaping ## Benchmark - escaping needed - No performance regressions ![benchmark escaping](https://cloud.githubusercontent.com/assets/1275900/14454716/c85fc7bc-0093-11e6-8c65-3eba5ce34729.png) ## Benchmark - no escaping needed ![benchmark no escaping](https://cloud.githubusercontent.com/assets/1275900/14454713/c5124e54-0093-11e6-983b-ad3ae9e654ff.png) ## Benchmark Code
Click here ``` static void Main(string[] args) { // Escaping TimeAction(""Old: "", () => Old.UrlDecode(""%ABabc"")); TimeAction(""New: "", () => New.UrlDecode(""%ABabc"")); // No escaping TimeAction(""Old: "", () => Old.UrlDecode(""abc"")); TimeAction(""New: "", () => New.UrlDecode(""abc"")); Console.ReadLine(); } public static void TimeAction(string prefix, Action action) { var sw = new Stopwatch(); for (int iter = 0; iter < 5; iter++) { int gen0 = GC.CollectionCount(0); sw.Restart(); for (int i = 0; i < 10000000; i++) { action(); } sw.Stop(); Console.WriteLine($""{prefix}Time: {sw.Elapsed.TotalSeconds}\tGC0: {GC.CollectionCount(0) - gen0}""); } } ```
/cc @stephentoub @jamesqo @davidsh Fixes #6542 together with #7546 " +7681 area-System.Net Fix ConnectTimeout_TimesOut_Throws test This test wasn't actually running because it was incorrectly annotated as a [Theory] but without any data. When changed to be a [Fact], it failed because the test depends on the Socket's listening backlog being filled so that a subsequent connect will time out, but Listen(1) doesn't actually force the OS to use a queue of max size of 1, it's just advisory. The fix is to flood the server with requests that don't get accepted, filling the listen queue. cc: @davidsh, @bartonjs +7683 area-System.Runtime Document how unmanaged libraries are loaded with AssemblyLoadContext "On Windows, System.Data.SqlClient currently p/invokes to a native component sni.dll via DllImport `[DllImport(""sni.dll"")]`. This is inconsistent with other Dllimport calls in corefx that do not include the "".dll"" extension in the native dll name. This causes inconsistent behavior in other parts of the stack. e.g. `AssemblyLoadContext.LoadUnmanagedDll(string unmanagedDllName)` is called with `unmanagedDllName == ""sni.dll""`, but for other libraries the extension is left off. This means AssemblyLoadContext is usually implemented to look for `""sni""`, not `""sni.dll""`. cref https://github.com/dotnet/cli/issues/2289#issuecomment-208655706 **Update** Decided the behavior is fine, but we should document it as it's non-obvious. " +7685 area-System.IO Path.Combine on Unix thinks the filename /foo is rooted "Uncovered via #7680, calling `Path.Combine` with the following parameters yields unexpected results: ``` string fullDirectory = ""/foo/bar.txt""; string dirName = ""/foo/""; string fileName = ""/bar.txt""; string result = Path.Combine(dirName, fileName); Assert.Equal(fullDirectory, result); ``` This fails because `fileName` is thought to be rooted since it begins with a '/' character. " +7688 area-System.Security Add support for import\export and named Crypto Elliptic Curves (API review) "Currently, both .NET 4.6 and .NET Core support only three Elliptic Curves (nistP256, nistP384 and nistP521). There have been requests to add additional curves and to add the ability to import and export parameters similar to how RSA and DSA already have. The proposed API additions are intended for both .NET 4.6.3 and for .NET Core rtm. For .NET Core, both Windows (via [Cryptograph Next Generation or CNG](https://msdn.microsoft.com/en-us/library/windows/desktop/mt632245%28v=vs.85%29.aspx)) and Linux\OSX (via [OpenSsl](https://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography)) are to be supported. ## Rationale and Usage The current implementation has three curves selected by providing their key size (as an integer). However, this is no longer tenable as there are many curves (of different algorithms) that have the same keysize. Instead, a curve should be represented by a well-known Oid. Using named curves enables direct access to the curves supported by the underlying platform and thus does not require additional .NET framework code or public APIs to be added or changed in order to accommodate new curves (in most cases), although adding helper methods to pre-define the Oids may be desired. Using named curves in this way is consistent with both CNG and OpenSsl. In some cases, however, a curve name may not be known by the underlying platform, or a custom curve is desired. In that case, 'explicit' curves are desired which means all domain parameters are explicitly specified instead of being implied by the curve name. An explicit curve is abstract, contains common domain parameters, and is derived from by Prime and Characteristic-2 where each adds an additional domain parameter. The logical hierarchy:            Curve (abstract)             /      \ Named       Explicit (abstract)                    /        \               Prime   Characteristic-2 Note that this logical hierarchy is collapsed into a single struct called ECCurve. This was based on previous API review where class minimization was desired. ## Pull Request Current code is located [here](https://github.com/steveharter/dotnet_corefx/tree/Crypto) with pull request for code review [here](https://github.com/dotnet/corefx/pull/6789). ## High Level Programming Model (platform independent) The most common scenario is to instantiate an instance of [ECDsa](https://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdsa%28v=vs.110%29.aspx) by passing in the name of the curve, and then sign some data or perform other action such as import, export and generate key. ECDsa is abstract, and the concrete dervived class depends upon the platform. For Windows, that is ECDsaCng and for Linux\OSX that class is ECDsaOpenSsl. Work is in progress to allow static Create factory methods to be directly on ECDsa in order to better support platform independent code by removing the need to instantiate the ECDsaCng or ECDsaOpenSsl directly. With that additional work, the programming model is: ``` c# using (ECDsa ec = ECDsa.Create(ECCurve.NamedCurves.nistP256)) { // sign some data, etc. ``` NamedCurves is a nested class under ECCurve, and nistP256 is a static factory method. Other Create() overloads include using the ECParameters class which contains the public and private key as well as a curve: ``` c# ECParameters parameters = ... using (ECDsa ec = ECDsa.Create(parameters)) { // sign some data, etc. ``` and the empty constructor: ``` c# using (ECDsa ec = ECDsa.Create()) { ec.GenerateKey(ECCurve.NamedCurves.brainpoolP256r1); // sign some data, etc. ``` The empty constructor will lazily-create a 521-bit nist curve when the key is first accessed (for backwards compatibility as that it what the constructor on derived classes do). This Create() is useful when the curve is not known at the time of creation and instead can be passed in later during GenerateKey() as shown in the example above. ## High Level Programming Model (platform dependent) The previous programming model examples include the static Create() methods on the abstract ECDsa base class. The examples below show usage of ECDsaCng directly which means the code is tied to a particular platform. ECDsaOpenSsl is not shown however it has the same examples as below, although the Cng and OpenSsl classes do differ in other public members not shown below. The current (but now considered obsolete) programming model using key size as integer: ``` c# // Use nistP256 (one of three supported curves) using (var ec = new ECDsaCng(256)) { // sign some data, etc. ``` The proposed programming model (using NamedCurves factory helper methods): ``` c# using (var ec = new ECDsaCng(ECCurve.NamedCurves.nistP256)) { // sign some data, etc. ``` The curve name can also be provided directly through using an Oid FriendlyName: ``` c# using (var ec = new ECDsaCng(ECCurve.CreateFromFriendlyName(""nistP256""))) { // sign some data, etc. ``` or by using an Oid Value: ``` c# using (var ec = new ECDsaCng(ECCurve.CreateFromValue(""1.2.840.10045.3.1.7""))) { // sign some data, etc. ``` or by using an instance of the Oid class directly: ``` c# using (var ec = new ECDsaCng(ECCurve.CreateFromOid(new Oid(""1.2.840.10045.3.1.7"", ""nistP256"")))) { // sign some data, etc. ``` ## ECCurve Namespace: System.Security.Cryptography.Algorithms Assembly: System.Security.Cryptography.Algorithms.dll This type serves several purposes: 1) Creation. Expose strongly-typed static helper methods to create an instance. 2) Domain Parameters. Contains the domain parameters for a named or explicit curve. For a named curve it uses an [Oid](https://msdn.microsoft.com/en-us/library/system.security.cryptography.oid%28v=vs.110%29.aspx)). For explicit curves it contains several domain parameters. 3) ECCurveType. It nests this class in order to hide it from the root of the namespace. ## ECCurve - Creation ``` c# /// /// An elliptic curve. /// /// /// The CurveType property determines whether the curve is a named curve or an explicit curve /// which is either a prime curve or a characteristic-2 curve. /// public struct ECCurve { /// Create a curve from the given cref=""Oid"". /// /// The Oid to use. /// An ECCurve representing a named curve. public static ECCurve CreateFromOid(Oid curveOid); /// /// Create a curve from the given cref=""Oid"" friendly name. /// /// The Oid friendly name to use. /// An ECCurve representing a named curve. public static ECCurve CreateFromFriendlyName(string oidFriendlyName); /// /// Create a curve from the given cref=""Oid"" value. /// /// The Oid value to use. /// An ECCurve representing a named curve. public static ECCurve CreateFromValue(string oidValue); /// /// Factory class for creating named curves. /// public static class NamedCurves { public static ECCurve brainpoolP160r1 {get;} public static ECCurve brainpoolP160t1 {get;} public static ECCurve brainpoolP192r1 {get;} public static ECCurve brainpoolP192t1 {get;} public static ECCurve brainpoolP224r1 {get;} public static ECCurve brainpoolP224t1 {get;} public static ECCurve brainpoolP256r1 {get;} public static ECCurve brainpoolP256t1 {get;} public static ECCurve brainpoolP320r1 {get;} public static ECCurve brainpoolP320t1 {get;} public static ECCurve brainpoolP384r1 {get;} public static ECCurve brainpoolP384t1 {get;} public static ECCurve brainpoolP512r1 {get;} public static ECCurve brainpoolP512t1 {get;} public static ECCurve nistP256 {get;} public static ECCurve nistP384 {get;} public static ECCurve nistP521 {get;} } ``` For named curves, only the friendly name or the value is required, not both, provided that the platform recognizes it, or if the other value can be determined. For CNG, the FriendlyName is eventually required. For OpenSsl, either will work however the FriendlyName values are not necessarily compatible or the same between Cng and FriendlyName for some curves. Using the Oid Value is preferred as it is stable across platforms although there are a handful of curves that only have the FriendlyName. Discussion topic: the set of static factory methods on NamedCurves are a subset of those from [Windows 10](https://msdn.microsoft.com/en-us/library/windows/desktop/mt632245%28v=vs.85%29.aspx). OpenSsl supports the nist curves, but not the brainpool, plus supports several additional (varies depending on OpenSsl version). RESOLUTION: this list was chosen because the nist and brainpool curves are likely to be the normally recommended curves. ## ECCurve - Domain parameters Elliptical curves contain [domain parameters](http://www.secg.org/sec1-v2.pdf) which are factored to support named curves and two types of explicit curves (Prime and Characteristic-2), to interop with CNG and OpenSsl. These types are used in cases where the parameters need to be provided to import\export and to generatekey. Currently CNG does not support Characteristic-2 curves. The ECCharacteristic2 class is present in the shared Algorithms assembly however -- i.e. it wasn't place in the OpenSsl-only assembly. Note: most of the parameter types are opaque and represented by byte[], even though they could be better represented by BigInteger or a standard integer in some cases. The rationale is because RSA also does this and because we do not expose all of the functionality that CNG or OpenSsl does regarding these types. In addition byte[] preserves the big-endian byte ordering of CNG and OpenSsl, unlike BigInteger. Discussion Topic Fields with public getter and setters are used as that is consistent with other types like RSAParameters. The alternative is to use properties with private setters and to provide additional Create() methods to specify all domain parameters for explicit curves. ``` c# public struct ECCurve { /// /// Coefficient A. Applies only to Explicit curves. /// public byte[] A; /// /// Coefficient B. Applies only to Explicit curves. /// public byte[] B; /// /// Base Point. Applies only to Explicit curves. /// public ECPoint G; /// /// Order of the group generated by G = (x,y). Applies only to Explicit curves. /// public byte[] Order; /// /// Cofactor (optional). Applies only to Explicit curves. /// public byte[] Cofactor; /// /// Seed of the curve (optional). Applies only to Explicit curves. /// public byte[] Seed; /// /// Curve Type. /// public ECCurveType CurveType; /// /// The hash algorithm used to generate A and B from the Seed. Applies only to Explicit curves. /// public HashAlgorithmName? Hash; /// /// The binary polynomial. Applies only to Characteristic2 curves. /// public byte[] Polynomial; /// /// The prime specifying the base field. Applies only to Prime curves. /// public byte[] Prime; /// /// The Oid representing the named curve. Applies only to Named curves. /// /// A clone is returned, not the current instance. public Oid Oid {get; private set} /// /// Validate the current curve. /// /// /// if the curve parameters are not valid for the current CurveType. /// public void Validate(); public bool IsPrime {get;} public bool IsCharacteristic2 {get;} public bool IsExplicit {get;} public bool IsNamed {get;} ``` ECCurve.Oid is immutable, even though the underlying Oid object is not (the Value and FriendlyName properties are settable). This is achieved by making a clone of the Oid during creation of the curve and making a clone of the Oid when the property getter is called. This simplifies usage of the classes that use ECCurve as they don't have to concern themselves with making their own copies of the Oid because the immutability prevents the Value or FriendlyName properties from changing afterwards by someone holding a reference to the Oid. ## ECCurve - nested ECCurveType This enum is used to identify the curve type, and during execution pass to CNG or OpenSsl to identify which explicit algorithm to use. The Prime\* values match a CNG native enum. Characteristic2 is only supported by OpenSsl. ``` c# public struct ECCurve { /// /// Represents the type of an elliptic curve. /// public enum ECCurveType : int { Implicit = 0, PrimeShortWeierstrass = 1, PrimeTwistedEdwards = 2, PrimeMontgomery = 3, Characteristic2 = 4, Named = 5, } ``` ## ECPoint ECPoint is used in ECParameters and ECCurve to represent a point on a curve. ``` c# /// /// Represents a point on an elliptic curve. /// public struct ECPoint { public byte[] X; public byte[] Y; } ``` ## Compatibility Windows 10 added support for named curves, so on versions of Windows before 10, when attempting to use curves except for the 3 that were supported previously, a PlatformNotSupportedException is raised during execution. For versions of Windows <10, extra work has been peformed to ensure that the *named* curve APIs on ECCurve and import\export of named curves work with the 3 curves. Even though named curves were not added until Windows 10, this was accomplished by mapping the names of the 3 curves to individual integer-based curve identifiers used in the older versions of CNG that work Discussion topic Note that _explicit_ curve import\export does not work on these 3 curves in < Windows 10 because that requires Windows 10 features. However it is possible that we hard-code the explicit curve values for the 3 curve values and get that to work if we decided that was worth the effort; this would mean that we hard-code the ECPrimeCurve values for those 3 curves. It is probably not worth the effort because the main scenario for using explicit import\export is to import a custom curve that does not have a name, or does not have a name known by the current platform, so it does not apply to the 3 curves. Windows does not support any Characteristic-2 curves, unlike OpenSsl. None of the Characteristic-2 curves (or in general OpenSsl-only curves) were added as helper factory methods to ECCurve. OpenSsl curve support varies by version, so some curves may work one version of OpenSsl but not another. PlatformNotSupportedException is thrown in such cases. Discussion topic: no [obsolete] keywords have been added in cases where the three existing curves are currently exposed on CngAlgorithm, or when keysize is used in the ECDsaCng and ECDsaOpenSsl constructors. RESOLUTION: obsolete is no longer used Discussion topic: no API has been added to determine if a curve is valid for a platform. Users must use try\catch. It is possible to add such as API. Also, the Oid class cannot be relied upon for determining such status as internally we maintain a global hard-coded mapping between Oid values and friendly names, and because some curves have an friendly name but no value and the Oid class cannot help resolve or verify the friendly name in such cases. RESOLUTION: address later, if at all. Additional work has also been done to ensure that values exported from Windows and OpenSsl have the same validation requirements. When importing, CNG requires the byte[] values of some properties to match, however OpenSsl doesn't. So there has been additional padding and max() calculations added to the OpenSsl side to match the Windows side. This enables better interop in cross-plat user code, at the expense however of those who may use OpenSsl APIs directly and are not constrained by those additional validation checks otherwise. ## ECParameters. This type is used during import\export to specify the public key, optional private key, and curve parameters. ``` c# /// /// Represents the public and private key of the specified elliptical curve. /// public struct ECParameters { /// /// Public point. /// public ECPoint Q; /// /// Private Key. Not always present. /// public byte[] D; /// /// The Curve. /// public ECCurve Curve; } ``` ## Import \ Export \ GenerateKey Namespace: System.Security.Cryptography.Algorithms Assembly: System.Security.Cryptography.Algorithms.dll These methods are overridden in ECDsaCng and ECDsaOpenSsl classes and for .NET 4.6.3 also the ECDiffieHellman class. ``` c# public abstract class ECDsa : AsymmetricAlgorithm { public static ECDsa Create(); public static ECDsa Create(ECCurve curve); public static ECDsa Create(ECParameters parameters); /// /// When overridden in a derived class, exports the named or explicit ECParameters for an ECCurve. /// If the curve has a name, the Curve property will contain named curve parameters otherwise it will contain explicit parameters. /// /// true to include private parameters, otherwise, false. /// public virtual ECParameters ExportParameters(bool includePrivateParameters); /// /// When overridden in a derived class, exports the explicit ECParameters for an ECCurve. /// /// true to include private parameters, otherwise, false. /// public virtual ECParameters ExportExplicitParameters(bool includePrivateParameters); /// /// When overridden in a derived class, imports the specified ECParameters. /// /// The curve parameters. public virtual void ImportParameters(ECParameters parameters); /// /// Generates the public and private key. /// /// The curve to use. /// public virtual void GenerateKey(ECCurve curve); ``` Note: not shown here, but ECDH, RSA and DSA are to add matching Create factory support to better support platform independent code. ECDSA/ECDH: Create(), Create(ECCurve), Create(ECParameters) RSA: Create(), Create(int), Create(RSAParameters) DSA: Create(), Create(int), Create(DSAParameters) ## CNG Specific APIs Namespace: System.Security.Cryptography Assembly: System.Security.Cryptography.Cng.dll A constructor was added to accept the named curve, and overrides for import, export and generatekey. ``` c# public sealed partial class ECDsaCng : ECDsa { /// /// Create an ECDsaCng algorithm with a named curve. /// /// The representing the curve. /// if is null. /// if does not contain an Oid with a FriendlyName. public ECDsaCng(ECCurve curve); /// /// ImportParameters will replace the existing key that ECDsaOpenSsl is working with by creating a /// new CngKey. If the parameters contains only Q, then only a public key will be imported. /// If the parameters also contains D, then a full key pair will be imported. /// The parameters Curve value specifies the type of the curve to import. /// /// /// if does not contain valid values. /// /// /// if references a curve that cannot be imported. /// /// /// if references a curve that is not supported by this platform. /// public override void ImportParameters(ECParameters parameters); /// /// Exports the key and explicit curve parameters used by the ECC object into an object. /// /// /// if there was an issue obtaining the curve values. /// /// /// if explicit export is not supported by this platform. Windows 10 or higher is required. /// /// The key and explicit curve parameters used by the ECC object. public override ECParameters ExportExplicitCurveParameters(bool includePrivateParameters); /// /// Exports the key used by the ECC object into an object. /// If the curve has a name, the Curve property will contain named curve parameters otherwise it will contain explicit parameters. /// /// /// if there was an issue obtaining the curve values. /// /// The key and named curve parameters used by the ECC object. public override ECParameters ExportCurveParameters(bool includePrivateParameters); public override void GenerateKey(ECCurve curve); ``` Misc changes to extend the list of known blob formats (used by import) ``` c# public sealed class CngKeyBlobFormat : IEquatable ... public static CngKeyBlobFormat EccPrivateBlob; public static CngKeyBlobFormat EccPublicBlob; ... ``` Misc changes to extend the list of algorithms. Also includes the previously existing 3 nist curves for backwards compatibility-- i.e. they weren't removed, even though named curves should be used instead going forward. ``` c# public sealed class CngAlgorithm : IEquatable ... public static CngAlgorithm ECDiffieHellman {get;} public static CngAlgorithm ECDsa {get;} ... ``` ## OpenSsl Specific APIs Namespace: System.Security.Cryptography Assembly: System.Security.Cryptography.OpenSsl.dll A constructor was added to accept the named curve and overrides for import, export and generatekey. ``` c# public sealed partial class ECDsaOpenSsl : ECDsa { /// /// Create an ECDsaCng algorithm with a named curve. /// /// The representing the curve. public ECDsaOpenSsl(ECCurve curve); /// /// ImportParameters will replace the existing key that ECDsaOpenSsl is working with by creating a /// new CngKey. If the parameters contains only Q, then only a public key will be imported. /// If the parameters also contains D, then a full key pair will be imported. /// The parameters Curve value specifies the type of the curve to import. /// /// /// if does not contain valid values. /// /// /// if references a curve that cannot be imported. /// /// /// if references a curve that is not supported by this platform. /// public override void ImportParameters(ECParameters parameters); /// /// Exports the key and explicit curve parameters used by the ECC object into an object. /// /// /// if there was an issue obtaining the curve values. /// /// /// if explicit export is not supported by this platform. Windows 10 or higher is required. /// /// The key and explicit curve parameters used by the ECC object. public override ECParameters ExportExplicitCurveParameters(bool includePrivateParameters); /// /// Exports the key used by the ECC object into an object. /// If the curve has a name, the Curve property will contain named curve parameters otherwise it will contain explicit parameters. /// /// /// if there was an issue obtaining the curve values. /// /// The key and named curve parameters used by the ECC object. public override ECParameters ExportCurveParameters(bool includePrivateParameters); public override void GenerateKey(ECCurve curve); ``` ## .NET 4.6.3 Specific APIs The [ECDiffieHellman](https://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellman%28v=vs.110%29.aspx) class will have the same members added as ECDsaCng and ECDsaOpenSsl including import, export, and generate key. " +7696 area-System.Net [Part 1] Use nameof in Socket This PR refactors the following places to use `nameof`: - `TraceLoggingTypeInfo` - `UnixFileSystem` - `NegoState` - `SslState` - `Socket` (split up into 2 commits, as the file is massive) cc @stephentoub +7697 area-System.Reflection Test dlls and pdbs containing large tables We don't have much test coverage of PE files (and Portable PDBs) with large numbers of rows. The correctness of size calculation of cross table reference (2B vs 4B) is thus not validated. The problem with testing is that it requires somewhat large files. Having them checked into the repo is not ideal. Instead they should be generated in-memory using the metadata writer once it's ready. See bug https://github.com/dotnet/roslyn/issues/10401 for an example of an issue encountered recently. +7698 area-System.Reflection Fix CustomDebugInfo table row size calculation Fixes issue discovered when testing scenario https://github.com/dotnet/roslyn/issues/10401. Filed https://github.com/dotnet/corefx/issues/7697 to follow up with appropriate unit tests (require metadata writer). +7699 area-Serialization System.Xml.XmlSerializer uses non-generic shim collections It appears from [here](https://github.com/dotnet/corefx/tree/master/src/System.Xml.XmlSerializer/src/System/Collections) that, although it doesn't depend on `System.Collections.NonGeneric`, the `XmlSerializer` assembly has a few shim non-generic collection classes since it hasn't been refactored yet from its port to .NET Core. Indeed, hitting Shift + F12 in Visual Studio shows that `InternalHashtable` is being used in at least 32 different places, and `ArrayList` at least 20. It would be better to eliminate usages of these classes, so less code + avoiding things like boxing/casting. +7700 area-System.Globalization Win7 Outer Loop Test Failures in System.Globalization.Tests.TextInfoToLower.ToLower (and TextInfoToUpper.ToUpper) https://github.com/dotnet/corefx/blob/d725f9f6a7232118f9179dc74f56af8ae54dc269/src/System.Globalization/tests/TextInfo/TextInfoToLower.cs#L78 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Globalization.Tests/TextInfoToLower/ToLower_name___en_US___str___34__34____34______34________34__________34____________34______________34___________________expected___34__34____34______34________34__________34____________34______________34________________34____________________/ MESSAGE: Assert.Equal() Failure\r\n ↓ (pos 1)\r\nExpected: 𐐀\r\nActual: 𐐨\r\n ↑ (pos 1) +++++++++++++++++++ STACK TRACE: at System.Globalization.Tests.TextInfoToLower.ToLower(String name, String str, String expected) in d:\j\workspace\outerloop_win---627ab81b\src\System.Globalization\tests\TextInfo\TextInfoToLower.cs:line 81 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Globalization.Tests/TextInfoToLower/ToLower_name___fr___str___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34___________________________expected___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34____________________________/ MESSAGE: Assert.Equal() Failure\r\n ↓ (pos 1)\r\nExpected: 𐐀\r\nActual: 𐐨\r\n ↑ (pos 1) +++++++++++++++++++ STACK TRACE: at System.Globalization.Tests.TextInfoToLower.ToLower(String name, String str, String expected) in d:\j\workspace\outerloop_win---627ab81b\src\System.Globalization\tests\TextInfo\TextInfoToLower.cs:line 81 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Globalization.Tests/TextInfoToLower/ToLower_name___fr_FR___str___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34___________________________________expected___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34____________________________________/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Globalization.Tests/TextInfoToUpper/ToUpper_name___en_US___str___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34__________________________________34____________________________________34______________________________________34________________________________________34__________________________________________34____________________________________________34______________________________________________34___________________________________________________expected___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34__________________________________34____________________________________34______________________________________34________________________________________34__________________________________________34____________________________________________34______________________________________________34________________________________________________34____________________________________________________/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Globalization.Tests/TextInfoToUpper/ToUpper_name___fr___str___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34__________________________________34____________________________________34______________________________________34________________________________________34__________________________________________34____________________________________________34______________________________________________34________________________________________________34__________________________________________________34____________________________________________________34______________________________________________________34___________________________________________________________expected___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34__________________________________34____________________________________34______________________________________34________________________________________34__________________________________________34____________________________________________34______________________________________________34________________________________________________34__________________________________________________34____________________________________________________34______________________________________________________34________________________________________________________34____________________________________________________________/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Globalization.Tests/TextInfoToUpper/ToUpper_name___fr_FR___str___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34__________________________________34____________________________________34______________________________________34________________________________________34__________________________________________34____________________________________________34______________________________________________34________________________________________________34__________________________________________________34____________________________________________________34______________________________________________________34________________________________________________________34__________________________________________________________34____________________________________________________________34______________________________________________________________34___________________________________________________________________expected___34__34____34______34________34__________34____________34______________34________________34__________________34____________________34______________________34________________________34__________________________34____________________________34______________________________34________________________________34__________________________________34____________________________________34______________________________________34________________________________________34__________________________________________34____________________________________________34______________________________________________34________________________________________________34__________________________________________________34____________________________________________________34______________________________________________________34________________________________________________________34__________________________________________________________34____________________________________________________________34______________________________________________________________34________________________________________________________________34____________________________________________________________________/ +7702 area-System.IO System.IO.Compression.ZipFile missing classes for net46 Hi there! Trying to use `System.IO.Compression.ZipFile` with `net46` platform from nuget version `4.0.1-rc3-24013-00` (from `myget/dotnet-core` feed), and it seems that ZipFile is missing from the assembly for this TFM. Note that the only valid assembly that contains the class is for `dotnet5.4` TFM Is this a known issue? +7705 area-Infrastructure InputOSGroup not correctly set when building individual test projects for x-plat `c:\Users\stoub\Source\repos\corefx\src\System.Diagnostics.Process\tests>msbuild /t:rebuild /p:OSGroup=Linux /v:m` With that command line it ends up building the Linux version of the tests but the Windows version of the product libraries: ``` System.Diagnostics.Process -> c:\Users\stoub\Source\repos\corefx\bin\Windows_NT.AnyCPU.Debug\System.Diagnostics.Process\System.Diagnostics.Process.dll RemoteExecutorConsoleApp -> c:\Users\stoub\Source\repos\corefx\bin\Windows_NT.AnyCPU.Debug\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.exe System.Diagnostics.Process.Tests -> c:\Users\stoub\Source\repos\corefx\bin\Linux.AnyCPU.Debug\System.Diagnostics.Process.Tests\System.Diagnostics.Process.Tests.dll ``` That is because the InputOSGroup isn't set correctly and defaults to OSEnvironment windows is Windows_NT when building this on Windows. As a temporary workaround you can do: `c:\Users\stoub\Source\repos\corefx\src\System.Diagnostics.Process\tests>msbuild /t:rebuild /p:OSGroup=Linux /p:InputOSGroup=Linux /v:m` We should do some more testing of the test infrastructure to make sure basic scenarios like this work, in our dev workflow. cc @maririos @stephentoub @sokket +7706 area-System.Net Unified HTTP API for client and server scenarios I have been looking at the potential use of HTTP in IoT scenarios, and I have been wondering and thinking about the current stack that seems incomplete. Historically, in .NET Framework, there has been two distinct set of HTTP API:s: one for handling client scenarios (HttpClient), and another for server scenarios (HttpListener). Both are residing in the System.Net.Http namespace. Presently, there is no HttpListener in the .NET Core stack. It made me to build my own: https://github.com/robertsundstrom/HttpListener I wonder if there are any plans to implement the HttpListener API further down the road. In any case, I have a suggestion for that: Merge the two API:s so that they share a common base and common constructs like: HttpRequestMessage, HttpResponseMessage, etc. This would mean that the HttpClient sends an HttpRequestMessage, and the HttpListener should give a HttpRequestMessage. The content should be virtually the same in each end. Correspondingly, the HttpListener would send a HttpResponseMessage back, and the client would receive a HttpResponseMessage. In this way we get a more flexible API that is also easier to use, because the developers do not have to handle two sets of what actually could be the same thing. +7707 area-System.Net NegotiateStream_StreamToStream_AuthToHttpTarget_Success test failing on RHEL http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_rhel7.2_release_tst/47/consoleFull ``` 08:18:40 System.Net.Security.Tests.KerberosTest.NegotiateStream_StreamToStream_AuthToHttpTarget_Success [FAIL] 08:18:40 System.AggregateException : One or more errors occurred. (A call to SSPI failed, see inner exception.) 08:18:40 ---- System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. 08:18:40 -------- System.ComponentModel.Win32Exception : ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - An invalid status code was supplied (Server not found in Kerberos database). 08:18:40 at Interop.GssApi.EstablishSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags) 08:18:40 at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, Boolean isNtlm, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) 08:18:40 Stack Trace: 08:18:40 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 08:18:40 at System.Net.Security.Tests.KerberosTest.NegotiateStream_StreamToStream_AuthToHttpTarget_Success() 08:18:40 ----- Inner Stack Trace ----- 08:18:40 at System.Net.Security.NegoState.EndProcessAuthentication(IAsyncResult result) 08:18:40 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 08:18:40 ----- Inner Stack Trace ----- ``` +7713 area-System.Net System.Net.Security.Tests.KerberosTest.NegotiateStream_StreamToStream_AuthToHttpTarget_Success [FAIL] http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/outerloop_rhel7.2_release_tst/47/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 08:18:33 === TEST EXECUTION SUMMARY === 08:18:33 System.Net.Primitives.Functional.Tests Total: 260, Errors: 0, Failed: 0, Skipped: 0, Time: 5.249s 08:18:40 System.Net.Security.Tests.KerberosTest.NegotiateStream_StreamToStream_AuthToHttpTarget_Success [FAIL] 08:18:40 System.AggregateException : One or more errors occurred. (A call to SSPI failed, see inner exception.) 08:18:40 ---- System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. 08:18:40 -------- System.ComponentModel.Win32Exception : ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - An invalid status code was supplied (Server not found in Kerberos database). 08:18:40 at Interop.GssApi.EstablishSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags) 08:18:40 at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, Boolean isNtlm, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) 08:18:40 Stack Trace: 08:18:40 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 08:18:40 at System.Net.Security.Tests.KerberosTest.NegotiateStream_StreamToStream_AuthToHttpTarget_Success() 08:18:40 ----- Inner Stack Trace ----- 08:18:40 at System.Net.Security.NegoState.EndProcessAuthentication(IAsyncResult result) 08:18:40 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 08:18:40 ----- Inner Stack Trace ----- 08:18:40 08:18:40 Finished: System.Net.Security.Tests 08:18:40 08:18:40 === TEST EXECUTION SUMMARY === 08:18:40 System.Net.Security.Tests Total: 106, Errors: 0, Failed: 1, Skipped: 0, Time: 11.159s 08:18:40 error: One or more tests failed while running tests from ''. Exit code 1. +7714 area-System.Net Fix HttpClient dependencies on desktop The latest changes to make HttpClient an OOB implementation on desktop were not getting the correct dependency set. This has to do with the the way that EnsureOOBFrameworks evaluates assets to duplicate. It does so by seeing if any placeholders are obscuring the netstandard asset and copying the netstandard asset if that is the case. This worked fine for the reference assembly, but not the implementation since it wasn't actually obscured. The result was that NuGet selects the correct assets, but is missing implementation dependencies. For now I'm fixing this by changing the package structure to explicitly break out the net46 implementations into their own folders. This is essentially what we were trying to make happen automatically with EnsureOOBFrameworks. Longer term we might want to refactor how we generate dependencies to do an actual nuget-asset selection in order to harvest from the actual assemblies that NuGet will choose. For now I'm also working around the problem that the unix shims are being referenced everywhere even though they're only needed for Unix. There's still a problem with this package in that we have two different netstandard dependency groups (one meant for Windows and one meant for Unix) but because we can't express that in a fat package the Unix one will win, even on a windows machine, if the target framework supports NETStandard1.4 or higher. This doesn't cause a problem at the moment because the unix implementation is using a superset of the Windows dependencies but we need to see about how to better handle in lieu of the NuGet feature for RID-specific dependencies. /cc @davidsh @weshaggard @chcosta +7719 area-System.Linq LINQ: Append/Prepend/Cast could probably be optimized Currently, the implementation for `Append` looks like this: ``` cs public static IEnumerable Append(this IEnumerable source, T value) { foreach (var item in source) yield return item; yield return value; } ``` This looks like it's missing out on chances for optimization. For example, this code could probably be optimized if `items` was an array/list: ``` cs items.Append(foo).ToArray(); ``` since we'd know that the result would have a length of exactly `items.Length + 1`. Same for this: ``` cs items.Append(foo).Count(); ``` cc @JonHanna --- **edit:** Also `Cast` too, since the number of elements in the resulting enumerable is guaranteed to have the same number of items as the source. Today we still naively use an iterator block like this: ``` cs public static IEnumerable Cast(this IEnumerable source) { foreach (object obj in source) yield return (T)obj; } ``` +7720 area-System.Threading Add some basic Monitor tests. We don't currently have any tests for argument validation of the Monitor class. I added those as well as some basic functionality tests (ported from ToF). @stephentoub resolves #6459 +7725 area-System.Net Allow SslStreamPal.EncryptMessage to resize the output buffer SecureChannel tried precalculating the size of the ouput buffer, because that's how you interact with the Windows SChannel provider. Since OpenSSL has the BIO type to handle payload buffering it isn't set up to report the header and footer sizes the same way SChannel is. So, let the PAL implementation change the output buffer if it wants it to be bigger. The Windows implementation is largely unchanged, the only difference being that the Buffer.BlockCopy that aligns the data for SChannel interpretation has moved into the PAL. The Unix implementation doesn't need that extra copy to happen, so there's even a mild perf gain here. Fixes #7599. CC: @davidsh @CIPop @shrutigarg @stephentoub +7732 area-System.Xml System.Xml.RW.XmlSystemPathResolver.Tests failing ``` System.Xml.Tests.XmlSystemPathResolverTests.TestResolveInvalidPaths [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Xml.Tests.XmlSystemPathResolverTests.AssertInvalidPath(String path) at System.Xml.Tests.XmlSystemPathResolverTests.TestResolveInvalidPaths() ``` +7733 area-System.Runtime ARM64: System.Runtime.InteropServices.RuntimeInformation.Tests failing "``` c__DisplayClass46_1.<b__1>d.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1()\r\n at Xunit.Sdk.ExecutionTimer.d__4.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction)\r\n at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__0()\r\n at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code)\r\n at Xunit.Sdk.TestInvoker`1.d__46.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance)\r\n at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestInvoker`1.b__45_0()\r\n at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code)\r\n at Xunit.Sdk.TestInvoker`1.RunAsync()\r\n at Xunit.Sdk.XunitTestRunner.InvokeTestMethodAsync(ExceptionAggregator aggregator)\r\n at Xunit.Sdk.XunitTestRunner.d__4.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator)\r\n at Xunit.Sdk.TestRunner`1.<>c__DisplayClass43_0.b__0()\r\n at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code)\r\n at Xunit.Sdk.TestRunner`1.d__43.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestCaseRunner.RunTestAsync()\r\n at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestCaseRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestCase.RunAsync(IMessageSink diagnosticMessageSink, IMessageBus messageBus, Object[] constructorArguments, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource)\r\n at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase)\r\n at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync()\r\n at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestMethodRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(ITestMethod testMethod, IReflectionMethodInfo method, IEnumerable`1 testCases, Object[] constructorArguments)\r\n at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync()\r\n at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestClassRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestCollectionRunner.RunTestClassAsync(ITestClass testClass, IReflectionTypeInfo class, IEnumerable`1 testCases)\r\n at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync()\r\n at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext()\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestCollectionRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync(IMessageBus messageBus, ITestCollection testCollection, IEnumerable`1 testCases, CancellationTokenSource cancellationTokenSource)\r\n at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3()\r\n at System.Threading.Tasks.Task`1.InnerInvoke()\r\n at System.Threading.Tasks.Task.Execute()\r\n at System.Threading.Tasks.Task.ExecutionContextCallback(Object obj)\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\r\n at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)\r\n at System.Threading.Tasks.SynchronizationContextTaskScheduler.PostCallback(Object obj)\r\n at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state)\r\n at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass11_0.b__0(Object _)\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at lambda_method(Closure , Object , Object )\r\n at Xunit.Sdk.ExecutionContextHelper.Run(Object context, Action`1 action)\r\n at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc()\r\n at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _)\r\n at System.Threading.Tasks.Task.InnerInvoke()\r\n at System.Threading.Tasks.Task.Execute()\r\n at System.Threading.Tasks.Task.ExecutionContextCallback(Object obj)\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\r\n at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)\r\n at System.Threading.Tasks.ThreadPoolTaskScheduler.LongRunningThreadWork(Object obj)\r\n at System.Threading.ThreadHelper.ThreadStart_Context(Object state)\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at System.Threading.ThreadHelper.ThreadStart(Object obj)]]> ``` " +7735 area-Infrastructure ARM64: System.Net.WebSockets.Client.Tests failing "``` d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.ClientWebSocket.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.WebSocketHelper.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__41.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.WinHttpWebSocket.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.WebSocketHandle.d__21.MoveNext() ----- Inner Stack Trace ----- ]]> ``` " +7736 area-System.IO ARM64: System.Net.Http.WinHttpHandler.Unit.Tests fails "``` c__DisplayClass55_0.b__0() at System.Net.Http.WinHttpHandlerUnitTests.SendRequestHelper.Send(WinHttpHandler handler, Action setup, String fakeServerEndpoint) at System.Net.Http.WinHttpHandlerUnitTests.SendRequestHelper.Send(WinHttpHandler handler, Action setup) at System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest.d__55.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Interop.zlib.deflateInit2_(Byte* stream, Int32 level, Int32 method, Int32 windowBits, Int32 memLevel, Int32 strategy, Byte* version, Int32 stream_size) at Interop.zlib.DeflateInit2_(ZStream& stream, CompressionLevel level, CompressionMethod method, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.ZLibNative.ZLibStreamHandle.DeflateInit2_(CompressionLevel level, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy)]]> c__DisplayClass54_0.b__0() at System.Net.Http.WinHttpHandlerUnitTests.SendRequestHelper.Send(WinHttpHandler handler, Action setup, String fakeServerEndpoint) at System.Net.Http.WinHttpHandlerUnitTests.SendRequestHelper.Send(WinHttpHandler handler, Action setup) at System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest.d__54.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Interop.zlib.deflateInit2_(Byte* stream, Int32 level, Int32 method, Int32 windowBits, Int32 memLevel, Int32 strategy, Byte* version, Int32 stream_size) at Interop.zlib.DeflateInit2_(ZStream& stream, CompressionLevel level, CompressionMethod method, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.ZLibNative.ZLibStreamHandle.DeflateInit2_(CompressionLevel level, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy)]]> ``` " +7737 area-System.IO ARM64: Tests failing due to missing native components Need to investigate failures, most of them might be fixed when the native dependency is built for arm64. But do verify they pass after that System.Data.SqlClient.Tests Total: 25, Errors: 0, Failed: 2, Skipped: 0, Time: 12.869s System.IO.Compression.Tests Total: 143, Errors: 0, Failed: 113, Skipped: 0, Time: 61.830s System.IO.Compression.ZipFile.Tests Total: 24, Errors: 0, Failed: 12, Skipped: 0, Time: 19.632s System.IO.FileSystem.DriveInfo.Tests Total: 9, Errors: 0, Failed: 1, Skipped: 0, Time: 9.713s System.IO.FileSystem.Tests Total: 2227, Errors: 0, Failed: 18, Skipped: 25, Time: 4181.445s System.IO.Packaging.Tests Total: 131, Errors: 0, Failed: 112, Skipped: 0, Time: 67.804s +7742 area-System.Net AcceptAsyncV4BoundToSpecificV6_CantConnect wrong exception on CentOS http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/centos7.1_release_tst/1272/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 ``` 23:24:01 System.Net.Sockets.Tests.DualMode.AcceptAsyncV4BoundToSpecificV6_CantConnect [FAIL] 23:24:01 Assert.Throws() Failure 23:24:01 Expected: typeof(System.Net.Sockets.SocketException) 23:24:01 Actual: typeof(System.TimeoutException): Timed out while waiting for the server accept... 23:24:01 Stack Trace: 23:24:02 at System.Net.Sockets.Tests.DualMode.DualModeConnect_AcceptAsync_Helper(IPAddress listenOn, IPAddress connectTo) 23:24:21 Finished: System.Net.Sockets.Tests 23:24:21 23:24:21 === TEST EXECUTION SUMMARY === 23:24:21 System.Net.Sockets.Tests Total: 587, Errors: 0, Failed: 1, Skipped: 2, Time: 44.837s 23:24:21 error: One or more tests failed while running tests from ''. Exit code 1. ``` +7745 area-System.IO Crc32Helper set to internal within System.IO.Compression Currently we have this: https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression/src/System/IO/Compression/Crc32Helper.cs Yet we can't use it for our own checksum calculation. Why it can't be exposed? Best +7750 area-System.Net HttpClient and Cookies not working with redirects under netcore50 "I have a test project that uses an HTTP-Client to connect to a service, which in term uses cookies to store user information. Once done, it performs a redirect. Here's the service API: ``` [HttpGet] [Authorize(ActiveAuthenticationSchemes = ""Cookies"")] [Authorize(ActiveAuthenticationSchemes = ""Bearer"")] public async Task SelectTenant([FromQuery]string tenant) { ... var identity = (ClaimsIdentity) User.Identity; identity.AddClaim(new Claim(""foo"", bar)); // sign in again to persist the new claim in the cookie await HttpContext.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, User); // redirect to the index (which won't realize we just logged in on DNX Core) return Redirect(""/""); } ``` Now, when on dnx451, the code works just fine. The index page is invoked, recognizes the cookie and the caller (HttpClient) also gets the cookie information. However, as soon as I switch to netcore50, the redirect isn't working properly anymore, as authentication data (in the cookie) seems to be lost. This is happening **before** `GetAsync` returns control to me. Here is the console output when running on DNX Core as of the redirect. Note that server-side authorization failed after the redirect: ``` info: Microsoft.AspNet.Authentication.Cookies.CookieAuthenticationMiddleware[3] AuthenticationScheme: Cookies signed in. 2016-04-14 18:43:15 [Information] Executing RedirectResult, redirecting to ""/"". info: Microsoft.AspNet.Mvc.RedirectResult[1] Executing RedirectResult, redirecting to /. 2016-04-14 18:43:15 [Information] Executed action ""OrderManager.Controllers.AccountController.SelectTenant"" in 0.0016ms info: Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler[2] Executed action OrderManager.Controllers.AccountController.SelectTenant in 0.0016ms 2016-04-14 18:43:15 [Information] Request finished in 0.0016ms 302 info: Microsoft.AspNet.Hosting.Internal.HostingEngine[2] Request finished in 0.0016ms 302 2016-04-14 18:43:15 [Information] Protocol: HTTP/1.1 Method: GET ContentType: ContentLength: Scheme: http Host: localhost:5000 PathBase: Path: / Quer yString: info: Microsoft.AspNet.Hosting.Internal.HostingEngine[1] Request starting HTTP/1.1 GET http://localhost:5000/ 2016-04-14 18:43:15 [Warning] Authorization failed for the request at filter '""Microsoft.AspNet.Mvc.Filters.AuthorizeFilter""'. warn: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker[0] Authorization failed for the request at filter 'Microsoft.AspNet.Mvc.Filters.AuthorizeFilter'. 2016-04-14 18:43:15 [Information] AuthenticationScheme: ""Cookies"" was challenged. info: Microsoft.AspNet.Authentication.Cookies.CookieAuthenticationMiddleware[5] AuthenticationScheme: Cookies was challenged. 2016-04-14 18:43:15 [Information] Executing ChallengeResult with authentication schemes ([""Cookies""]). info: Microsoft.AspNet.Mvc.ChallengeResult[1] Executing ChallengeResult with authentication schemes (Cookies). 2016-04-14 18:43:15 [Information] Executed action ""OrderManager.Controllers.HomeController.Index"" in 0.0015ms ``` It's worth noting that once control is returned to my code, HttpClient actually does get Cookies returned (just the wrong ones, since the Index page does another redirect to the logon because it doesn't realize I already logged in). So I guess that after `HttpContext.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, User);` is executed, and the redirect happens, `HttpClient`on Core50 doesn't resubmit the cookie to the Index page or something. Here's the client call btw: ``` internal static async Task GetAuthCookie() { var c = new AuthenticationApiClient(new Uri(""https://foo.auth0.com"")); AuthenticationRequest request = new AuthenticationRequest { ... }; // authenticate with auth0 var authToken = await c.AuthenticateAsync(request); // set the authorization header var authHeader = new AuthenticationHeaderValue(""Bearer"", authToken.IdToken); var httpHandler = new HttpClientHandler(); using (var client = new HttpClient(httpHandler) { BaseAddress = new Uri(Settings.Uri) }) { client.DefaultRequestHeaders.Authorization = authHeader; string selectTenantUrl = ""Account/SelectTenant?tenant=bar""; //THIS IS THE CALL THAT DOESN'T WORK THE SAME ON CORE50 var result = await client.GetAsync(selectTenantUrl); Cookies = httpHandler.CookieContainer; } } ``` " +7751 area-System.Numerics Consider SIMD acceleration for Matrix and Quaternion operations similar to Vector ones Currently only Vector operations seem to benefit from SIMD acceleration. Matrix and Quaternion operations still use scalar operations instead. For instance, adding two Vector4 instances would emit a single instruction for packed addition, while transforming a Vector4 with a Matrix4x4 would result in 16 scalar multiplications and 12 scalar additions, instead of 4 packed multiplications and 3 packet additions. Since one of the main usage scenarios of System.Numerics.Vectors is in graphically intensive 2D and 3D applications, there are many cases where such applications can greatly benefit from accelerating Matrix and Quaternion operations. The theoretical speedup of a factor of 4 simply cannot be ignored. Some operations can be emulated by using Vector instead (e.g. Matrix4x4 can be represented with 4 Vector4 instances, so we can emulate the Matrix4x4 x Vector4 transformation by inlining the necessary code by hand), but other operations are hard or impossible to emulate efficiently. +7757 area-System.Globalization TimeZoneInfo should expose FromSerializedString and ToSerializedString `TimeZoneInfo` cannot be serialized with the data contract serializer (which is a recommended serialization API for .NET Core) - serializing it results in an `InvalidDataContractException`. An easy workaround would be to use `ToSerializedString` and `FromSerializedString` to convert the TimeZoneInfo into a string, but those APIs are also not available in .NET Core. This combination makes attempting to serialize a type containing a `TimeZoneInfo` a poor experience (the user needs to add a lot of `[KnownType]` attributes as per [this guidance](https://social.msdn.microsoft.com/Forums/en-US/f164f185-ae18-4775-a2ff-a814813d262d/unable-to-serialze-member-of-type-timezoneinfo?forum=wcf)) which results in messy code. +7758 area-System.ComponentModel Improve code coverage for System.ComponentModel.TypeConverter (24%) The code coverage report shows us at 47% for the next version of the package (currently in `dev/typedescriptor`). Improving this will mostly require work around `TypeDescriptor`. The largest gaps in its coverage are in private code requiring more elaborate scenarios to reach than what we have in unit tests. +7760 area-System.Net Add Http redirect tests Now that the Azure test endpoint has been updated, we can add more redirect tests that use different redirect status codes. It isn't necessary to modify every existing test to use different codes. But I modified the important ones especially those using credentials. Fixes #7505 +7763 area-System.Net Convert static readonly fields in Uri to const Right now `Uri` has a bunch of `static readonly` string fields that represent different scheme names, e.g. `UriSchemeFile`. Presumably they correspond to [these](https://msdn.microsoft.com/en-us/library/system.uri_fields%28v=vs.110%29.aspx) fields on MSDN, but since they don't appear to be exposed in the contract (and thus aren't visible publicly), I've converted them to be `const` strings. Summary of full changes in this PR: - Converted `static readonly` fields -> `const` strings - Refactored `UriParser` to reference these constants during intialization of built-in URI parsers - Since a few of them were schemes that were not previously exposed as a field (e.g. `vsmacros`), I've added a few extra `const` strings (such as `UriSchemeVsMacros`) and moved the definitions to `UriParser` - Added a `using static` to `Uri` and `UriBuilder`, which previously referenced those constants cc @justinvp @hughbe @stephentoub +7765 area-Serialization Remove nongeneric collections shim from serialization Remove non-generic collections `ArrayList` and `InternalHashtable` and use ArrayList and generic dictionary instead. There should be no change in behavior. cc: @shmao @zhenlan @SGuyGe Fix #7699 +7776 area-System.Net Remove SslStreamPal.PresizeEncryptBuffer - Move the Windows buffer (p)resizing code into the Windows PAL - Remove the consts from the PAL interface - Harden an assert in the Unix PAL TLS Encrypt method Addresses feedback from #7725. cc: @CIPop @stephentoub +7777 area-System.Net Fix build problem in WinHttpHandler tests PR #7760 broke the compilation of these tests but wasn't discovered in CI since WinHttpHandler tests weren't building properly. This PR will fix the compiler error while PR #7747 will make sure that these tests get built/run again in CI. +7778 area-Serialization XmlSerializer internal cache could have issue with concurrent reading and writing operations https://github.com/dotnet/corefx/pull/7765#discussion_r59859405 +7779 area-System.Security System.Security.Cryptography.CryptoStream.Dispose throws an exception "Moved from https://github.com/dotnet/coreclr/issues/4329 on behalf of @kosta-arnorsky If Dispose method of System.Security.Cryptography.CryptoStream class which uses AES/Rijndael algorithm with padding is called before the ends of decryption a target data stream it throws the exception: System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed. It's especially unpleasant when decryption is interrupted by an uncaught exception: ``` using (var transform = new System.Security.Cryptography.AesManaged().CreateDecryptor(key, iv)) using (var cryptoStream = new System.Security.Cryptography.CryptoStream(encryptedDataStream, transform, System.Security.Cryptography.CryptoStreamMode.Read)) using (var decryptedStream = new System.IO.MemoryStream()) { var buffer = new byte[5000]; var readed = cryptoStream.Read(buffer, 0, buffer.Length); decryptedStream.Write(buffer, 0, readed); throw new Exception(""Something bad has happend.""); } ``` Actual Result: Dispose throws the exception: ``` System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed. at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.IO.Stream.Dispose() ``` I've created a [small example](https://github.com/kosta-arnorsky/CryptoStream-Dispose-Exception-Sample) to demonstrate this behavior. " +7781 area-Serialization Serialization: iterate with KeyValuePair instead of keys collections for dictionary https://github.com/dotnet/corefx/pull/7765#discussion-diff-59931593 +7785 area-System.Net Remove a closure allocation from WinHttpResponseStream Pass in the current `WinHttpResponseStream` as a state parameter to the continuation, so we avoid a closure. Also unindented the code. cc @davidsh @stephentoub --- **edit:** Just updated it to pass in the method parameters as state, as well. +7787 area-System.Data [perf] System.Data.SqlClient allocates lots of closures with ContinueWith Ran this grep query: ``` bash grep --include='*.cs' --exclude-dir=tests --exclude-dir=ref -r 'ContinueWith[^(]*(([^,]*)' . ``` It printed out the following results: https://gist.github.com/anonymous/7afb47c97f2f632c7ddf963111ad3136 The closure in `WinHttpHandler` is fixed by #7785, but there appear to be a bunch of them in `System.Data.SqlClient` that could be removed. Opening up a tracking issue to remove them (which I'll do myself). --- **edit:** Just realized I wasn't picking up on some of them, because most are written in the form: ``` cs task.ContinueWith(t => ...) ``` rather than ``` cs task.ContinueWith((t) => ...) ``` so I ran a new query, which seems to pick up more matches. See: https://gist.github.com/anonymous/14aa1dea4fe3a26e42e338c5b30b09b4 +7788 area-System.Net Avoid a closure allocation in MessageProcessingHandler Contributes to #7787 by removing a closure allocation from `MessageProcessingHandler.SendAsync`. cc @davidsh @stephentoub +7790 area-System.Net Improve performance of decoding only '+' in WebUtility "- x4-x5 performance increase (benchmark) - 2x allocations decrease - I think that this is quite a common use case, as a lot of the time our inputs are normal text/phrases/sentences which typically contain ASCII and spaces (e.g. in Google) - Existing tests cover the new branches ## Benchmark ![benchmark](https://cloud.githubusercontent.com/assets/1275900/14580100/b936386e-03ba-11e6-849b-16cf7c8d1ea4.png) ## Benchmark Code
Click here ``` c# static unsafe void Main(string[] args) { TimeAction(""Old: "", () => Old.UrlDecode(""abc+def"")); TimeAction(""New: "", () => New.UrlDecode(""abc+def"")); Console.ReadLine(); } public static void TimeAction(string prefix, Action action) { var sw = new Stopwatch(); for (int iter = 0; iter < 5; iter++) { int gen0 = GC.CollectionCount(0); sw.Restart(); for (int i = 0; i < 10000000; i++) { action(); } sw.Stop(); Console.WriteLine($""{prefix}Time: {sw.Elapsed.TotalSeconds}\tGC0: {GC.CollectionCount(0) - gen0}""); } } ```
/cc @davidsh @stephentoub @jamesqo " +7792 area-Microsoft.CSharp "The method ""GetCustomAttributes(this ParameterInfo element, bool inherit)"" in CustomAttributeExtensions returns wrong value in case of generated property+method.." "The method `var attributes = p.GetCustomAttributes(false);` returns **null** in case the property and get/set-methods are generated using the ILGenerator. However according to the specifications, it should return: `A collection of the custom attributes that are applied to , or an empty collection if no such attributes exist. `. For details s this issue #7596. " +7793 area-System.Xml [xml] Code duplication of some XML decoder types The following types look like they have 2-3 different files, one in `Common` and one in the `System.Xml` assemblies. - `Base64Decoder` and `Base64Encoder`: present in both `Common` and `ReaderWriter` - `BinHexDecoder` and `BinHexEncoder`: present in `Common`, `ReaderWriter`, and `XmlSerializer` - `IncrementalReadDecoder`: present in both `Common` and `ReaderWriter` cc @khdang @zhenlan +7798 area-System.Threading [API Proposal] Task.Default for returning a cached Task with a result of default(T) Basically as the title says. It's a common scenario to want to return a cached `Task` if there's no async work that needs to be done in a method; .NET 4.6 offers `Task.CompletedTask` which helps with this, but for methods that actually return a result through the task there is no such alternative. Examples of where this would be useful: - `Stream.ReadAsync`: Classes that override `ReadAsync` can return `Task.Default()` instead of `Task.FromResult(0)` when there's no more work to do. - For any method returning `Task` where T is a reference type, if the return value is null then they can use `Task.Default()`. - Any method returning `Task.FromResult(false)` can use `Task.Default()` instead, which is likely a common scenario since there's only two boolean values. ## Proposed API ``` cs namespace System.Threading.Tasks { public class Task : IAsyncResult { public static Task Default(); } public class Task : Task { public static Task Default { get; } } } ``` +7800 area-System.Net Replace StreamAsyncHelper with StreamApmExtensions in System.Net.Security System.Net.Security was originally written to use Stream.Begin/EndRead/Write. When it was ported to .NET Core, it took a dependency on a helper that provided such Begin/End methods, but this helper was originally written for a different purpose: providing async Begin/End wrappers for the synchronous Read/Write methods. As a result of this mismatch, the async calls in System.Net.Security are queueing work items that then do work synchronously, blocking thread pool threads unnecessarily. This commit changes those helpers to sit on top of ReadAsync/WriteAsync instead. Eventually System.Net.Security should have its async I/O redone to sit natively on ReadAsync/WriteAsync using async/await, as it'll result in less overhead, but for now with minimal changes this improves the scalability of the library. cc: @davidsh, @cipop, @ericeil, @mikeharder +7804 area-System.Runtime Add UTF8 to CharSet The CharSet enumeration is used to specify how strings should be marshaled: https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs#L3019-L3023 ``` C# public enum CharSet { Ansi = 2, Unicode = 3, } ``` `Unicode` specifies that UTF16 should be used, regardless of platform, but `Ansi` is interpreted differently based on platform: on Windows it's interpreted to mean the ANSI format, whereas on Unix it's interpreted to mean UTF8. This means that on Windows we lack the ability to specify UTF8 as the marshaling, and more generally we lack the ability to specify UTF8 marshaling regardless of platform, making writing cross-platform managed components more difficult. We should add a new UTF8 enum value: ``` C# public enum CharSet { Ansi = 2, Unicode = 3, UTF8 = 5, } ``` that when used will cause the runtime's marshaling to be done with UTF8, which is the standard for modern services. [Added-by-Yi] We should also add a new corresponding UnmanagedType enum in UnmanagedType for UTF8 as well, for finer control and parity (between UnmanagedType and CharSet): https://github.com/dotnet/corefx/blob/master/src/System.Runtime.InteropServices.PInvoke/ref/System.Runtime.InteropServices.PInvoke.cs ``` C# public enum UnmanagedType { LPUTF8Str = 0x30 } ``` And new Marshal helpers while we are at it: ``` C# public class PInvokeMarshal { public static string PtrToStringUTF8(System.IntPtr ptr); public static string PtrToStringUTF8(System.IntPtr ptr, int len); public static System.IntPtr StringToAllocatedMemoryUTF8(string s); public static System.IntPtr ZeroFreeMemoryUTF8(System.IntPtr s); } ``` +7805 area-System.Runtime LoadInDefaultContext failed in CI with permissions error http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu15.10_release_tst/15/console ``` 04:16:23 System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext [FAIL] 04:16:23 System.UnauthorizedAccessException : Access to the path '/tmp/System.Runtime.Loader.Noop.Assembly.dll' is denied. 04:16:23 ---- System.IO.IOException : Operation not permitted 04:16:23 Stack Trace: 04:16:23 Starting: System.Runtime.Loader.Tests 04:16:23 at System.IO.UnixFileSystem.DeleteFile(String fullPath) 04:16:23 at System.Runtime.Loader.Tests.DefaultLoadContextTests.Init() 04:16:23 at System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext() ``` +7806 area-System.Numerics Intermittent System.Numerics.Tests.divremTest.RunDivRemTests failed in CI on CentOS, Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_debug_tst/3/consoleFull ``` 00:29:07 System.Numerics.Tests.divremTest.RunDivRemTests [FAIL] 00:29:07 Assert.Throws() Failure 00:29:07 Expected: typeof(System.DivideByZeroException) 00:29:07 Actual: typeof(Xunit.Sdk.TrueException): Out parameters not matching 00:29:07 Expected: True 00:29:07 Actual: False 00:29:07 Stack Trace: 00:29:07 at System.Numerics.Tests.StackCalc.VerifyOutParameter() 00:29:07 at System.Numerics.Tests.divremTest.VerifyDivRemString(String opstring) 00:29:07 at System.Numerics.Tests.divremTest.<>c__DisplayClass8_0.b__0() ``` +7807 area-System.Threading 14 System.Threading.Tasks.Parallel tests failing in outerloop They all look similar to: ``` 00:32:12 System.Threading.Tasks.Test.ParallelState.ParallelState73 [FAIL] 00:32:12 Assert.IsType() Failure 00:32:12 Expected: System.InvalidOperationException 00:32:12 Actual: Xunit.Sdk.TrueException 00:32:12 Stack Trace: 00:32:12 at System.Threading.Tasks.Test.ParallelStateTest.RealRun() 00:32:12 at System.Threading.Tasks.Test.ParallelState.ParallelState73() ``` +7809 area-System.Collections Cleanup StringDictionary tests - Use xunit - Remove duplicate tests already covered - Remove unecessary tests +7810 area-System.Data Provider test suite for ADO.NET To promote standard behavior across ADO.NET providers, it would be great if a test suite existed. Ideally all provider-independent tests would be extracted from SqlClient and made available via a nuget. This would be similar to what the EF Core team has done. +7812 area-System.Net WinHttp buffer supplied to the function was too small error should not be exposed "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/80/consoleFull ``` 07:27:26 System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.UseCallback_BadCertificate_ExpectedPolicyErrors(url: ""https://wrong.host.badssl.com/"", expectedErrors: RemoteCertificateNameMismatch) [FAIL] 07:27:26 System.Net.Http.HttpRequestException : An error occurred while sending the request. 07:27:26 ---- System.Net.Http.WinHttpException : A security error occurred 07:27:26 Stack Trace: 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:27:26 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(392,0): at System.Net.Http.HttpClient.d__58.MoveNext() 07:27:26 --- End of stack trace from previous location where exception was thrown --- 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:27:26 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ServerCertificates.cs(174,0): at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__9.MoveNext() 07:27:26 --- End of stack trace from previous location where exception was thrown --- 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:27:26 --- End of stack trace from previous location where exception was thrown --- 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:27:26 --- End of stack trace from previous location where exception was thrown --- 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:27:26 ----- Inner Stack Trace ----- 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 07:27:26 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 07:27:26 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(843,0): at System.Net.Http.WinHttpHandler.d__102.MoveNext() ``` " +7814 area-System.Linq Remove expression catalog tests from expressions tests There are currently many tests run from src\System.Linq.Expressions\tests\Interpreter* that invoke expressions via both the compiler and interpreter to ensure they give the same results. The same set of expressions is also used in testing a no-op visitor. These are very time-consuming; removing them reduces run time from around 2m 50s on my machine to around 30s. They also give a false sense of coverage; a flaw within the expression itself would lead a correctly implemented compiler and interpreter to give the same incorrect result, so the coverage the tests lead to give a false impression of what branches are actually checked by tests. The drop in coverage makes it not a no-brainer clear win, but I think ultimately more of a boon toward the purpose of #1198 than the decrease in running time, even if it does take a step back in the metric. +7818 area-System.Diagnostics TestProcessStartTime failing on certain machines in CI This just started acting up again. I've seen it fail several times today. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_tst_prtest/68/console ``` 14:50:03 System.Diagnostics.Tests.ProcessTests.TestProcessStartTime [FAIL] 14:50:03 Assert+WrapperXunitException : File path: D:\j\workspace\osx_debug_bld---9c844ccb\src\System.Diagnostics.Process\tests\ProcessTests.cs. Line: 411 14:50:03 ---- Assert.InRange() Failure 14:50:03 Range: (4/17/16 9:56:53 PM - 4/17/16 9:56:59 PM) 14:50:03 Actual: 6/6/16 2:59:43 PM 14:50:03 Stack Trace: 14:50:03 at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) 14:50:03 at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) 14:50:03 at System.Diagnostics.Tests.ProcessTests.TestProcessStartTime() 14:50:03 ----- Inner Stack Trace ----- 14:50:03 at Assert.InRange[T](T actual, T low, T high, String path, Int32 line) ``` +7819 area-System.Net Port to RC2: Replace StreamAsyncHelper with StreamApmExtensions in System.Net.Security https://github.com/dotnet/corefx/pull/7800 System.Net.Security was originally written to use Stream.Begin/EndRead/Write. When it was ported to .NET Core, it took a dependency on a helper that provided such Begin/End methods, but this helper was originally written for a different purpose: providing async Begin/End wrappers for the synchronous Read/Write methods. As a result of this mismatch, the async calls in System.Net.Security are queueing work items that then do work synchronously, blocking thread pool threads unnecessarily. This commit changes those helpers to sit on top of ReadAsync/WriteAsync instead. Eventually System.Net.Security should have its async I/O redone to sit natively on ReadAsync/WriteAsync using async/await, as it'll result in less overhead, but for now with minimal changes this improves the scalability of the library. +7820 area-System.Linq Public members of ExpressionVisitor throw NullReferenceException rather than ArgumentNullException. Calling `Visit(ReadOnlyCollection)` with a null collection, `Visit(ReadOnlyCollection, Func)` with a null collection or function or `VisitAndConvert(ReadOnlyCollection, String)` with a null collection will result in `NullReferenceException` rather than `NullArgumentException` which would be more appropriate. In the case of `Visit(ReadOnlyCollection, Func)` if the collection is empty and the function is null, no exception is thrown. +7824 area-System.Net SendToRecvFromAPM_Single_Datagram_UDP_IPv4 failed on Windows in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/4/consoleFull ``` 03:23:09 System.Net.Sockets.Tests.SendReceive.SendToRecvFromAPM_Single_Datagram_UDP_IPv4 [FAIL] 03:23:09 Assert.True() Failure 03:23:09 Expected: True 03:23:09 Actual: False 03:23:09 Stack Trace: 03:23:09 D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(211,0): at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAPM_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) ``` +7825 area-System.Net Kerberos to ntlm fallback is not happening with the ntlmssp plugin when passed valid ntlm creds. There is a bug in ntlmssp package .If we try spnego with valid ntlm creds, it first tries Kerberos and since the creds are not present in Kerberos database it should fallback to ntlm. Which is not happening in the current verison. The issue is discussed with ntlmssp plugin developer (simo sorce) .He will look into this. +7826 area-System.Net Ensure WinHttpHandler exceptions have good stack traces WinHttpHandler often creates an exception in response to some native error code and then stores that exception into a Task. As the exception isn't actually thrown until it's propagated out at the eventual await site, the these exceptions often lack a good stack trace to help highlight where the error came from. This commit ensures that such exceptions have a stack trace by throwing and catching them before storing them into either another exception as an inner exception or directly into a Task. I've not touched cases where the exception was already being thrown or where an exception was wrapping another exception that has a stack trace. cc: @davidsh Inspired by https://github.com/dotnet/corefx/issues/7812 +7830 area-System.Security Add Support for EnvelopedCms (API Review) "There have been requests to support EnvelopedCms on UWP and .NET Core. We will start with a Windows-only package (for time/cost reasons) but the package will be structured so that platform dependencies are isolated into a PAL layer and OpenSSL support can be added later. **Usage** The proposed api is designed to be source-compatible with the existing .NET feature (System.Security.Cryptography.Pkcs.EnvelopeCms) https://msdn.microsoft.com/en-us/library/system.security.cryptography.pkcs.envelopedcms(v=vs.110).aspx This is not intended to be an endorsement of that feature’s API design, rather an acknowledgement that easy source migratability remains a compelling feature. In addition to the EnvelopedCms type, we will migrate over the exchange types it needs. This represents the minimal set (despite its size.) ``` namespace System.Security.Cryptography { public sealed class CryptographicAttributeObject {} public sealed class CryptographicAttributeObjectCollection : ICollection, IEnumerable {} public sealed class CryptographicAttributeObjectEnumerator : IEnumerator {} } namespace System.Security.Cryptography.Pkcs { public sealed class AlgorithmIdentifier {} public sealed class CmsRecipient {} public sealed class CmsRecipientCollection : ICollection, IEnumerable {} public sealed class CmsRecipientEnumerator : IEnumerator {} public sealed class ContentInfo {} public sealed class EnvelopedCms {} public sealed class KeyAgreeRecipientInfo : RecipientInfo {} public sealed class KeyTransRecipientInfo : RecipientInfo {} public class Pkcs9AttributeObject : AsnEncodedData {} public sealed class Pkcs9ContentType : Pkcs9AttributeObject {} public sealed class Pkcs9DocumentDescription : Pkcs9AttributeObject {} public sealed class Pkcs9DocumentName : Pkcs9AttributeObject {} public sealed class Pkcs9MessageDigest : Pkcs9AttributeObject {} public sealed class Pkcs9SigningTime : Pkcs9AttributeObject {} public sealed class PublicKeyInfo {} public abstract class RecipientInfo {} public sealed class RecipientInfoCollection : ICollection, IEnumerable {} public sealed class RecipientInfoEnumerator : IEnumerator {} public enum RecipientInfoType {} public sealed class SubjectIdentifier {} public sealed class SubjectIdentifierOrKey {} public enum SubjectIdentifierOrKeyType {} public enum SubjectIdentifierType {} } namespace System.Security.Cryptography.Xml { public struct X509IssuerSerial {} } ``` **Compatibility** Nevertheless, we do propose to remove some of the harder-to-implement/troublesome surface area. **Senders must pass at least one CmsRecipient programmatically.** Unlike the full framework, we will not put up a dialog box for the user to select a certificate interactively. Passing an empty “recipients” argument to EnvelopedCms.Encrypt() will throw a PlatformNotSupportedException. Rationale: The dialog box is a disproportionally costly item to implement and may be irrelevant on Unix platforms (where we probably won’t automatically search a “MY store”) Our current asks have confirmed they do not require this feature. As part of this, we would remove the following method and constructor overloads: ``` EnvelopedCms.Encrypt() EnvelopedCms..ctor(SubjectIdentifierType recipientIdentifierType, ContentInfo contentInfo) EnvelopedCms..ctor(SubjectIdentifierType recipientIdentifierType, ContentInfo contentInfo, AlgorithmIdentifier encryptionAlgorithm) ``` The nullary Encrypt() message will always throw a PlatformNotSupportedException – making it useless. Passing a SubjectIdentifierType to the constructor is useless if the dialog box is unavailable, as that’s the only scenario in which this parameter’s value is used. Its very existence is confusing as the recipientIdentifierType is a per-recipient value, not a per-CMS value. **Remove the Parameter property from the AlgorithmIdentifier class.** Rationale: This property has two purposes: Extract the IV from a decoded CMS and to extract the key encryption algorithm parameters from the CMS. Unfortunately, the “IV” part has been plagued with problems from the start. For DES and 3DES, it returns a bogus value entirely. It only decodes the IV for mostly obsolete algorithms (RC2, RC4, DES and 3DES). For newer algorithms such as AES, it returns you an undefined encoded value. Since the result is a simple byte[] array, there is no way for the caller to know what he got back other than to know these idiosyncracies – nor can we easily fix them in a way that the caller can distinguish good returns from bad. The existence of the Parameters property also tricks one into thinking he can use it as an input to the EnvelopedCms constructor. But that assumption is wrong. EnvelopedCms’s constructor immediately zeroes out the Parameter property of the passed in AlgorithmIdentifier. (This is also rude API behavior as the mutation is visible to the caller.) Given all these historical problems, its vaguely defined nature and the fact that none of our asks need this information, we’d prefer to amputate this problem now. If a need for this information comes up in the future, we can take the opportunity to design the api better. Having said that, the philosophy for this iteration of the package is that we enable the basic encrypt/decrypt/decode scenarios. Supporting the writing of a full-fledged “CMS dumper” utility or attempting to decrypt the content yourself is a non-goal. **Turn IsSynchronized and SyncRoot on the Collection classes into methodimpls.** This has been an ongoing pattern as we port Collection classes. **Remove the finalizer from ContentInfo.** ContentInfo is nothing more than a tuple class that bundles an Oid and a byte array. There is no legitimate reason for it to hold native resources or contain any OS-specific code at all. The original desktop code threw an internal ""pin the byte array and give us a pointer to it"" helper method into it to solely to avoid three lines of ""pin the byte array and call the P/Invoke"" somewhere else. " +7833 area-System.Net Consider implementing perf counters in System.Net.Sockets The Sockets pert counter code is [currently disabled](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/SocketPerfCounters.cs#L45). The comments reference #2500, which covers tracing, not perf counters, and has already been closed. We should sort out what to do about pert counters in Sockets. +7836 area-System.Net Receive bytes on accepted socket if requested See TODO here: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/AcceptOverlappedAsyncResult.Unix.cs#L31 and here: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs#L55 +7837 area-Serialization Consider XmlAnyElementAttributes to implement typed list instead of IList https://github.com/dotnet/corefx/pull/7765/files#r59948232 +7839 area-System.Data System.Data.Common target framework changes Change the System.Data.Common so that it can target portable-net451 and the contracts can reference wp8 . The comments from Eric in https://github.com/dotnet/corefx/pull/7767 can be used as a guideline. +7840 area-System.IO Fix clrcompression windows build The Open Windows native build of clrcompression was inferior to the one in TFS for a few reasons: - The Open clrcompression imported vcruntime140.dll - It did not produce a pdb for either build config - The linker/compiler flags being used were incorrect or inadequate Those problems have been resolved. The clrcompression.dll produced in the open is now the same as the one produced internally with the exception that it is linked against the UCRT instead of a fixed msvcrt from TFS. I also took this opportunity to fix the appx package and add the /guard:cf flag which is missing from the TFS clrcompression. resolves #7436 resolves #7748 related to #7756 @dagood @ellismg @gkhanna79 +7841 area-System.IO Better documentation of asynchronous I/O implementation per OS Hey all, I'm trying to dive into the sources for async sockets on Posix/Linux.. And I just want to make sure that I'm not imagining... In posix based systems the async sockets actually queue work items into the ThreadPool, and the actual IO is performed in a synchronous (maybe non-blocking) manner? Is this right? I assume that this is a very big split from how things are done on a native win32 system... I would appreciate any sort of clarification on this matter from someone well aware of the actual implementation I also think the documentation could benefit from a more detailed explanation of how async I/O works in different scenarios (OS)... I would be more than happy to submit a PR for the documentation, but I just want to make sure I'm reading the situation the right way Basically people doing async IO need to be aware of how the .NET idioms map to the actual OS... Better documentation for Windows/Linux/OSX should be very useful +7848 area-Serialization Remove unused files in serialization Follow up from https://github.com/dotnet/corefx/commit/c2babe77ed4af3066ebc3bade23ea5b7eb277d19, removing unused files from serialization folder. cc: @SGuyGe @shmao @zhenlan +7849 area-System.Net Eliminate unnecessary Dns.GetHostName call on Unix in Socket.InitializeSockets See https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L5073 This call can be eliminated on Linux/OSX, which should have some effect on startup perf on those platforms. +7850 area-System.Net Deal with failure in SocketAsyncContext.Register on Unix See TODO here: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncContext.Unix.cs#L472 We should either throw a different exception, or possibly FailFast. +7851 area-System.Net Consider implementing SocketAsyncEventArgs.LogBuffer on Unix See TODO: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs#L234 +7852 area-System.Net Add validation of Socket.Connect and Socket.Accept on disconnected socket From [the TODO in ArgumentValidationTests](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/ArgumentValidationTests.cs#L15): ``` csharp // TODO: // // - Connect(EndPoint): // - disconnected socket // - Accept(EndPoint): // - disconnected socket ``` +7853 area-System.Net Decide whether InternalSocketException from Socket.Connect is an acceptable behavioral difference "From the TODO in DnsEndPointTest.cs: ``` // TODO: Behavior difference from .Net Desktop. This will actually throw InternalSocketException. SocketException ex = Assert.ThrowsAny(() => { sock.Connect(new DnsEndPoint(""notahostname.invalid.corp.microsoft.com"", UnusedPort)); }); ``` " +7854 area-System.Net Resolve TODO: Move to NetworkInformation tests. From the [TODO in DualModeSocketTest.cs](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs#L2059): ``` // TODO: Move to NetworkInformation tests. // Assert.Equal(NetworkInterface.IPv6LoopbackInterfaceIndex, ipPacketInformation.Interface); ``` (There are three of these in this file) +7855 area-System.Net Figure out how to get interface index with in_addr. From [pal_networking.cpp](https://github.com/dotnet/corefx/blob/master/src/Native/System.Native/pal_networking.cpp#L1254): ``` // TODO: Figure out how to get interface index with in_addr. // One option is http://www.unix.com/man-page/freebsd/3/if_nametoindex // which requires interface name to be known. // Meanwhile: packetInfo->InterfaceIndex = 0; ``` +7856 area-System.Net Add logging to calls to WinHttp based code Tracking EventSource logging for all WinHttp code. This applies to both WinHttpHandler as well as the WinHttp WebSockets implementation. One example from Interop.SafeWinHttpHandle.cs: ``` // TODO(Issue 2500): Add logging so we know when the handle gets closed. return Interop.WinHttp.WinHttpCloseHandle(handle); ``` #2500 was already closed; this issue will cover the specific potential log usage. +7857 area-System.Net Update System.Net TODO comments Update some `TODO` comments with issue numbers. Also, removed a few out-of-date or non-actionable `TODO` comments. See individual commits for specifics on each change. This PR covers all TODOs in `System.Net.Sockets`; I am working through the rest of `System.Net` now. +7858 area-System.Console Console.WindowWidth fails with IOException "Try the following: Program.cs: ``` csharp using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine($""Width: {Console.WindowWidth}""); } } } ``` project.json: ``` json { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002424"" } }, ""frameworks"": { ""netcoreapp1.0"": {} } } ``` The fails with the following exception: ``` Unhandled Exception: System.IO.IOException: The handle is invalid at System.ConsolePal.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded) at System.ConsolePal.get_WindowWidth() at System.Console.get_WindowWidth() at ConsoleApplication.Program.Main(String[] args) ``` " +7859 area-System.Console Empty Console.WriteLine call does not write blank line "`Console.WriteLine()` should output an empty line: ``` csharp using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine(""Should have empty line below""); Console.WriteLine(); Console.WriteLine(""Should have empty line above""); } } } ``` **Expected** ``` Should have empty line below Should have empty line above ``` **Observed (1.0.0-rc2-3002424)** ``` Should have empty line below Should have empty line above ``` " +7862 area-System.Net System.Net.Http.WebRequest works as a Microsoft.NETCore.App but not as a NETStandard.Library "The following code snippet and project.json combo restore, build and run: program.cs ... HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); project.json { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002394"" } }, ""frameworks"": { ""netcoreapp1.0"": {} } } Using the same code and creating a library does not [http.tar.gz](https://github.com/dotnet/corefx/files/226190/http.tar.gz) build (note the original library code did not have an entry point, but this was just for simplicity). project.json { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""NETStandard.Library"" : ""1.5.0-rc2-23931"" }, ""frameworks"": { ""netstandard1.5"": {} } } /Users/xyz/Documents/Projects/bug/http/Program.cs(17,9): error CS0246: The type or namespace name 'HttpWebRequest' could not be found (are you missing a using directive or an assembly reference?) /Users/xyz/Documents/Projects/bug/http/Program.cs(17,50): error CS0103: The name 'WebRequest' does not exist in the current context /Users/xyz/Documents/Projects/bug/http/Program.cs(17,35): error CS0246: The type or namespace name 'HttpWebRequest' could not be found (are you missing a using directive or an assembly reference?) /Users/xyz/Documents/Projects/bug/http/Program.cs(21,20): error CS0246: The type or namespace name 'HttpWebResponse' could not be found (are you missing a using directive or an assembly reference?) /Users/xyz/Documents/Projects/bug/http/Program.cs(21,48): error CS0246: The type or namespace name 'HttpWebResponse' could not be found (are you missing a using directive or an assembly reference?) dotnet --info .NET Command Line Tools (1.0.0-rc2-002394) Product Information: Version: 1.0.0-rc2-002394 Commit Sha: 3a423b1080 Runtime Environment: OS Name: Mac OS X OS Version: 10.11 OS Platform: Darwin RID: osx.10.11-x64 " +7864 area-System.Net Is the Content-Type header produced by StringContent() correct? "Consider the following code ... ``` c# string contentType = ""application/atom+xml""; string requestPayload = ""some data""; var stringContent = new StringContent(requestPayload, Encoding.UTF8, contentType); ``` According to Wireshark, I'm seeing a POST using `HttpClient` with this ... ``` Content-Type: application/atom+xml; charset=utf-8 ``` ![capture](https://cloud.githubusercontent.com/assets/1622880/14647964/a1396782-0625-11e6-9c7a-3cdc1b92e4a2.PNG) Shouldn't that `Content-Type` value just be ... ``` Content-Type: application/atom+xml ``` ?? Confused, because something is choking my Azure Table Storage requests with ... ``` string stringToSign = $""{requestMethod}\n\n{contentType}\n{dateInRfc1123Format}\n{canonicalizedResource}""; ``` ... and since `SharedKeyLite`, which only requires the date and resource, **works** with my `dateInRfc1123Format` and `canonicalizedResource`, I've sort of narrowed it down to the `contentType` of the request (shown above) not matching what I'm putting into the signature sting, namely just `application/atom+xml`. " +7866 area-System.ComponentModel Port UriTypeConverter source and add tests. The first commit ports the sources from TFS by dotnet-bot. The second commit clean ups and changes the sources to work in CoreFX. It also adds some tests. I couldn't find the existing tests so I just wrote some new ones in the style of the other tests in the project. The unusual comment style of the sources (devdoc) is to match the other sources in the TypeConverter namespace for consistency. resolves #7501 @Tanya-Solyanik @stephentoub +7870 area-System.Security The type initializer for 'Crypto' threw an exception - Unix "When starting my coreclr web application on a docker image, I receive the following exception: The type initializer for 'Crypto' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object. Full stack trace: http://textuploader.com/5yccn I think this is the line throwing the exception: https://github.com/dotnet/corefx/blob/release/1.0.0-rc1/src/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.EVP.cs#L50 I have tried both update1 and update2 of coreclr. I am utilizing the docker image: microsoft/aspnet:1.0.0-rc1-update1-coreclr I can find the library here and openssl dev is installed: root@475b687:/# find -name ""libcrypto.so"" ./usr/lib/x86_64-linux-gnu/libcrypto.so My project.json looks like: ""dependencies"": { ""Microsoft.AspNet.Authentication.JwtBearer"": ""1.0.0-rc1-final"", ""Microsoft.AspNet.IISPlatformHandler"": ""1.0.0-rc1-final"", ""Microsoft.AspNet.Mvc"": ""6.0.0-rc1-final"", ""Microsoft.AspNet.Server.Kestrel"": ""1.0.0-rc1-final"", ""Microsoft.AspNet.StaticFiles"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Configuration.FileProviderExtensions"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Logging"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0-rc1-final"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0-rc1-final"", ""System.IdentityModel.Tokens.Jwt"": ""5.0.0-rc1-211161024"" }, " +7871 area-System.Security Port and Fix remaining AccessControl tests "Fixes the ports for the rest of the AccessControl tests to open. Tests are kept mostly intact with a few exceptions: - TestCaseStore data was programatically turned into XUnit MemberData providers. - Test classes were broken up into their own classes and files - Most validation checks were scripted into Assert calls. - Replaced most try/catch blocks with Assert.Throws calls. - Removed all of the ""testCasesPassed++"" calls. - Removed failing tests where the failures were due to bad tests and not bad source. - Tried to clean up the logic where it was easy to do so (e.g. Assert.True(!condition); should be Assert.False(condition);) though there are some of these remaining. Despite the above, there are still gaps and inconsistencies in these tests. The goal of this PR is only to port the tests from ToF and fix the low-hanging errors, but a future clean-up would be beneficial. resolves #6922 @bartonjs @stephentoub " +7873 area-System.Net Expose SocketException(int, EndPoint) to maintain exception Message compatibility. From the TODO in SocketExceptionFactory.cs: ``` csharp public static SocketException CreateSocketException(int socketError, EndPoint endPoint) { // TODO: expose SocketException(int, EndPoint) to maintain exception Message compatibility. return new SocketException(socketError); } ``` +7874 area-System.Data Stub System.Data with type redirections to System.Data.Common ODP.NET is complied against System.Data and now cannot be used under CoreCLR +7875 area-System.Diagnostics Make System.Diagnostics.FileVersionInfo non-RID specific Today we use PInvokes on Windows to implement System.Diagnostics.FileVersionInfo and we use MetadataReader for Unix. If we can do it compatibly we should make this a pure portable library and use the MetadataReader for all platforms and eliminate the need for the RID fork. +7876 area-Infrastructure Update netci and run-test to use the IgnoreForCI trait in Jenkins Updates the netci.groovy and runtest.sh files to pass -notrait Category=IgnoreForCI to build.cmd and run-test.sh in Jenkins so that we can disable tests from running when they're being run in Jenkins. @dotnet-bot test ci please replaces #6522 which replaced part of #6145 (I will merge this someday, you know ) @Priya91 +7877 area-System.Net Use HttpCacheReadBehavior.NoCache on Windows 10 From HttpClientHandler.cs: ``` csharp // The .NET Desktop System.Net Http APIs (based on HttpWebRequest/HttpClient) uses no caching by default. // To preserve app-compat, we turn off caching (as much as possible) in the WinRT HttpClient APIs. // TODO: use RTHttpCacheReadBehavior.NoCache when available in the next version of WinRT HttpClient API. this.rtFilter.CacheControl.ReadBehavior = RTHttpCacheReadBehavior.MostRecent; this.rtFilter.CacheControl.WriteBehavior = RTHttpCacheWriteBehavior.NoCache; ``` It looks like `RTHttpCacheReadBehavior.NoCache` is supported on Windows 10; we should consider using it. +7878 area-System.Net Behavior difference from NETFX when unknown HttpRequestMessage.Version is used "From HttpHandlerToFilter.cs: ``` csharp else { // TODO: We need to throw an exception here similar to .NET Desktop // throw new ArgumentException(SR.GetString(SR.net_wrongversion), ""value""); // // But we need to do that checking in the HttpClientHandler object itself. // and we have that bug as well for the WinHttpHandler version also. maxVersion = RTHttpVersion.Http11; } ``` ...but maybe this would be a breaking change at this point? " +7879 area-System.Net Add exception message explaining the PlatformNotSupportedException on MaxRequestContentBufferSize From HttpClientHandler.Windows.cs: ``` csharp public long MaxRequestContentBufferSize { // This property has been deprecated. In the .NET Desktop it was only used when the handler needed to // automatically buffer the request content. That only happened if neither 'Content-Length' nor // 'Transfer-Encoding: chunked' request headers were specified. So, the handler thus needed to buffer // in the request content to determine its length and then would choose 'Content-Length' semantics when // POST'ing. In CoreCLR and .NETNative, the handler will resolve the ambiguity by always choosing // 'Transfer-Encoding: chunked'. The handler will never automatically buffer in the request content. get { return 0; } // TODO: Add message/link to exception explaining the deprecation. // Update corresponding exception in HttpClientHandler.Unix.cs if/when this is updated. set { throw new PlatformNotSupportedException(); } } ``` +7882 area-System.IO Re-Enable Unicode Compression tests Some Compression tests were using unicode files that were failing specifically in CI runs. I've modified those tests to use the IgnoreForCI tag so we can avoid those failures. resolves #5459, #5096 +7883 area-System.Net In CurlHandler, use WinHttp's default connect timeout From CurlHandler.cs: ``` csharp private TimeSpan _connectTimeout = Timeout.InfiniteTimeSpan; // TODO: Use the WinHttp default once we determine how to expose this. HttpHandlerDefaults.DefaultConnectTimeout; ``` +7884 area-System.Net Determine if CurlHandler request buffer size should be optimized to start smaller and grow From CurlHandler.EasyRequest.cs: ``` csharp internal readonly byte[] _buffer = new byte[RequestBufferSize]; // PERF TODO: Determine if this should be optimized to start smaller and grow ``` +7885 area-System.Net Consider enhancing HTTP test server endpoint to provide a custom response header with a SHA1 hash of the expected response body From ResponseStreamTest.cs: ``` csharp // TODO: This validation will be improved in the future once the test server endpoint // is able to provide a custom response header with a SHA1 hash of the expected response body. ``` +7889 area-System.Net Figure out the possible values that Linux might return from /sys/class/net//operstate "From LinuxNetworkInterface.cs: ``` csharp // Maps values from /sys/class/net//operstate to OperationStatus values. private static OperationalStatus MapState(string state) { // TODO: Figure out the possible values that Linux might return. switch (state) { case ""up"": return OperationalStatus.Up; case ""down"": return OperationalStatus.Down; default: return OperationalStatus.Unknown; } } ``` " +7890 area-System.Net Better error handling in RequestStream.GetBuffer From RequestStream.cs: ``` csharp public ArraySegment GetBuffer() { ArraySegment bytes; bool success = _buffer.TryGetBuffer(out bytes); if (!success) { // TODO: Need to figure out how to log this and throw a good exception. throw new Exception(); } return bytes; } ``` +7893 area-System.Net Share code between WinHttpWebSocket and WinHttpClientHandler "From WinHttpWebSocket.cs: ``` csharp internal class WinHttpWebSocket : WebSocket { #region Constants // TODO: This code needs to be shared with WinHttpClientHandler private const string HeaderNameCookie = ""Cookie""; private const string HeaderNameWebSocketProtocol = ""Sec-WebSocket-Protocol""; #endregion ``` " +7895 area-System.Net Better error handling in WinHttpWebSocketCallback.cs From WinHttpWebSocketCallback.cs: ``` csharp // TODO: handle SSL related exceptions. state.UpdateState(WebSocketState.Closed); // TODO: Create exception from WINHTTP_CALLBACK_STATUS_SECURE_FAILURE flags. state.TcsUpgrade.TrySetException(exception); ``` +7896 area-System.Net Refactor WinRTWebSocket state into encapsulated class From WinRTWebSocket.cs: ``` csharp #region State // Code related to state management // TODO: Refactor state into encapsulated class ``` +7898 area-System.Net Associate issues with more TODO comments in System.Net This covers all TODO comments I found in the System.Net code. We should now have an open issue for every TODO, and every TODO should reference each issue by ID. There were a couple of comments suggesting that we change some iterative `[Fact]` cases into `[Theory]` cases; rather than file issues on these, I just went ahead and did it. @stephentoub, @CIPop, @davidsh +7899 area-System.Net Failing network tests in the CI "Of the past dozen or so PRs I've done I've noticed the following tests failing repeatedly. This one at least 4 times: System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.UseCallback_BadCertificate_ExpectedPolicyErrors(url: ""https://expired.badssl.com/"", expectedErrors: RemoteCertificateChainErrors) ``` MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : A security error occurred +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 392 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__9.MoveNext() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ServerCertificates.cs:line 174 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Diagnostics.ExceptionHelpers.InitializeStackTrace[TException](TException e) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Diagnostics\ExceptionExtensions.cs:line 15 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__102.MoveNext() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 843 ``` This one twice: System.Net.Sockets.Tests.SendReceive.SendToRecvFromAPM_Single_Datagram_UDP_IPv4 ``` MESSAGE: Assert.True() Failure\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Tests.SendReceive.SendToRecvFromAPM_Datagram_UDP(IPAddress leftAddress, IPAddress rightAddress) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs:line 211 ``` " +7901 area-System.Linq Interpreter fails to throw when compiling redefined labels. A label re-defined in the same scope should throw upon compilation, but this does not happen in the interpreter. This bug was introduced by me at https://github.com/dotnet/corefx/pull/6993/files#diff-e009724c302721a6062e8980279534feR71 +7904 area-System.Linq Some tests in Linq.Expressions should be in Linq or Linq.Queryable In particular `MatchSequencePattern` tests for consistency between `Enumerable` and `Queryable` and so should be in the tests for each to catch any regressions in either. (Consider how #5947 changing the `Enumerable` API didn't trigger it in CI). There are some further tests that are really testing `Enumerable` or `Queryable` and should be tested along with the relevant assembly, though most are already well covered by the existing tests. And exception is `QueryableOfQueryable` which hits features of both `Queryable` and of `Expressions` but those features of `Expressions` it touches on are already well covered in parameter an lambda tests. +7906 area-System.Net Building System.Net.Primitives.FunctionalTests against packages fails Building the FunctionalTests with /p:BuildTestsAgainstPackages=true throws errors. Currently true has been added to keep the project reference. We should be able to remove this project reference (just reference the nupkg) and build the test project without errors. +7908 area-System.Security Building System.Sec.Crypto.Cng.Tests against packages fails Building the Tests with /p:BuildTestsAgainstPackages=true throws errors. Currently true has been added to keep the project reference. We should be able to remove this project reference (just reference the nupkg) and build the test project without errors. @bartonjs @weshaggard +7910 area-System.Security Building System.Sec.Crypto.X509Cert.Tests against packages fails Building the Tests with /p:BuildTestsAgainstPackages=true throws errors. Currently true has been added to keep the project reference. We should be able to remove this project reference (just reference the nupkg) and build the test project without errors. @bartonjs @weshaggard +7912 area-Serialization Building System.Xml.XmlSerializer.Tests against packages fails Building the Tests with /p:BuildTestsAgainstPackages=true throws errors. Currently true has been added to keep the project reference. We should be able to remove this project reference (just reference the nupkg) and build the test project without errors. @weshaggard +7913 area-System.Xml Building System.Xml.XDocument.TreeManipulation.Tests against packages fails Building the Tests with /p:BuildTestsAgainstPackages=true throws errors. Currently true has been added to keep the project reference. We should be able to remove this project reference (just reference the nupkg) and build the test project without errors. @weshaggard +7917 area-System.Collections ConcurrentBag allocations ConcurrentBag is potentially the best of the concurrent data structures when it comes to object pooling for high throughput as it has the lowest contention. However, it allocates a lot of `Node`s which means in practice its generally better to use a ConcurrentQueue which is based on array chunks since if you are pooling you are trying to avoid the allocations. It allocates a [new Node for every Add](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs#L905). If for example it used a lockless `ThreadStatic` stack or queue for the `Node`s and recycled them this would reduce its allocation weight; while still having the low contention. (Might be better approaches, just a suggestion) The following code allocates 32M Nodes and 1,278,983,840 bytes ``` csharp var o = new object(); var bag = new ConcurrentBag(); for (var ii = 0; ii < 1000000; ii++) { for (var i = 0; i < 32; i++) { bag.Add(o); } for (var i = 0; i < 32; i++) { bag.TryTake(out o); } } ``` ![Node allocations](http://aoa.blob.core.windows.net/aspnet/concurrentbag1.png) /cc @stephentoub +7920 area-System.Reflection TypeExtensions does not contain GetConstructor, GetMethod which accepts both BindingFlags and a Type[] "For example: in the full framework you could obtain a protected constructor with a specific signature by using the ""Type.GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])"" method. TypeExtensions provides a method which accepts BindingFlags and one that accepts a Type[]. But there is no method that accepts both. " +7921 area-System.Net Uri GetComponents test fails with invalid punycode on Unix "``` System.Tests.UriMethodTests.GetComponents(uri: http://xn--ሴpck.com/, components: NormalizedHost, expected: ""xn--ሴpck.com"") [FAIL] Assert.Equal() Failure ↓ (pos 0) Expected: xn--ሴpck.com Actual: ఽూ.com ↑ (pos 0) Stack Trace: at System.Tests.UriMethodTests.GetComponents(Uri uri, UriComponents components, UriFormat format, String expected) at System.Tests.UriMethodTests.GetComponents(Uri uri, UriComponents components, String expected) ``` " +7923 area-System.Net Simplify CurlHandler auth type handling After further discussions, it's been decided we don't need to remove NTLM from the auth type list and do lots of gyrations to only allow it in specific circumstances. This commit simplifies the auth type handling as a result, putting NTLM back into the ordered list of auth types. A similar change will be made separately for Windows. cc: @ericeil, @bartonjs, @davidsh +7927 area-Meta ProjectReference -> Package Dependency: No packages available for System.Composition.* project references "In our test builds, we'd like to be able to compile our libraries with project references converted to packages. System.Composition and System.Composition.Convention have project references to these libraries which we do not publish packaging for... > ""System.Composition.AttributedModel"" > ""System.Composition.Convention"" > ""System.Composition.Hosting"" > ""System.Composition.Runtime"" > ""System.Composition.TypedParts"" > ""TestLibrary"" > ""Microsoft.Composition.Demos.ExtendedCollectionImports"" The System.Composition.Convention test library was opted out of the project reference to package dependency conversion with https://github.com/dotnet/corefx/commit/c1ec94b74183f598513199cde0d799a514c0a0fb You can repro the issue by removing the ""KeepAllProjectReferences"" property from System.Composition.Convention.Tests.csproj and running ""sync /p /t"". " +7929 area-System.Net Fix HttpClient package for NETCore50 Recent refactoring broke asset selection for HttpClient on NETCore50. I had removed PackageTargetRuntime in order to use PackageDestination instead but this caused the RID-specific implementation to be chosen for NETCore50: https://github.com/ericstj/corefx/commit/0a8c4fb115246f80bcc86ddb88797bfd1c7271f7#diff-d6c266b4814b075db300e51936fdf722L17 Instead we need to make sure that we package the NETCore50 build as RID-specific as well so that it can take precedence of the RID- specific NETStandard implementation. /cc @davidsh @shmao +7930 area-System.Reflection ProjectReference -> Package Dependency: System.Reflection.Context does not restore against packages In our test builds, we'd like to be able to compile our libraries with project references converted to packages. System.Reflection.Context test project does not build when its project references are converted to package dependencies. EXEC : error : System.Reflection.Context 4.0.1-rc3-24018-00 provides a compile-time reference assembly for System.Reflection.Context on DNXCore,Version=v5.0, but there is no run-time assembly compatible with centos.7-x64. [E:\gh\chcosta\corefx\build.proj] EXEC : error : One or more packages are incompatible with DNXCore,Version=v5.0 (centos.7-x64). [E:\gh\chcosta\corefx\build.proj] EXEC : error : System.Reflection.Context 4.0.1-rc3-24018-00 provides a compile-time reference assembly for System.Reflection.Context on DNXCore,Version=v5.0, but there is no run-time assembly compatible with debian.8.2-x64. [E:\gh\chcosta\corefx\build.proj] EXEC : error : One or more packages are incompatible with DNXCore,Version=v5.0 (debian.8.2-x64). [E:\gh\chcosta\corefx\build.proj] Perhaps the right thing to do here is to remove the System.Reflection.Context test build as I hear it provides very little value... Alternatively, we could switch the target framework to netcore50, but then we'd need to create a netcore50 test-runtime. +7932 area-System.Net HttpResponseMessage dispose doesn't close when the body is not read When using `HttpClient.SendAsync` with `HttpCompletionOption.ResponseHeadersRead`, `HttpResponseMessage.Dispose` on the resulting response does not close the connection if none of the content has been read. If you even read a single byte of the content, `Dispose` works just fine. `HttpCompletionOption.ResponseContentRead` is the default so this is perhaps a less common scenario. I have tested Mac OS X and Linux, which have the same results. Windows acts differently. ``` > dotnet --version 1.0.0-rc2-002345 ``` ### Use Case This is important because sometimes it's not necessary for a client application to read the response body (e.g. if the status code is `500 Internal Server Error` then perhaps the client does not care to download the response). ### Workaround The client can just read a single byte from the response. However this seems like a hack and could break in the future for all I know. ### Test procedure 1. Extract the following .NET CLI test app: [closehttp.zip](https://github.com/dotnet/corefx/files/228633/closehttp.zip) 2. Open a connection but don't read any content (`dotnet run` on the test app). 3. Use some other tool to see open TCP connections on the test app process and verify one exists. - `lsof` on OS X and Linux. - [Process Explorer](https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx) on Windows. 4. Dispose the connection by following the tool's prompts. (`HttpResponseMessage.Dispose`) 5. Expect the connection to be closed in the tool and verify in the tool used in step 3. 6. Repeat steps 2-5 with `dotnet run read` (or any command line argument) to read a byte of the content body. ### Mac OS X and Linux results Checking a process's TCP connections: ``` > lsof -p PID | grep TCP dotnet 49733 46u IPv4 0t0 TCP :50657->ec2-54-175-222-246.compute-1.amazonaws.com:http (ESTABLISHED) ``` `HttpResponseMessage.Dispose` only closes the connection if an attempt has been made to read from the content stream. Calling `Dispose` on the network stream (from `HttpResponseMessage.Content.ReadAsStreamAsync`) does not help. `HttpClient.Dispose` _does_ close the connections. ### Windows results Checking a process's TCP connections: Screenshot for Process Explorer. ![capture](https://cloud.githubusercontent.com/assets/94054/14687430/572239e4-06f2-11e6-8bfb-5b20dcf13d4d.PNG) `HttpResponseMessage.Dispose` never seems to close the connection. Calling `Dispose` on the network stream (from `HttpResponseMessage.Content.ReadAsStreamAsync`) does not help. `HttpClient.Dispose` _does_ close the connections. I am thinking this may be due to the fact that the underlying layer is doing some connection pooling or `Keep-Alive` stuff. Not sure. +7933 area-Infrastructure Publish a package list with each build We change the set of packages / versions produced quite often. It would be good to produce a build artifact dropped to a public server that lists what packages make up a particular build. +7934 area-System.IO Modify FileSystemWatcher tests to use temp paths. This is a pretty general clean-up of the FSW tests to be more in line with the other FileSystem tests. - Add Common TempDirectory class for short-term temporary directories that are easy to create and destroy - Put all FSW tests into the System.IO.Tests namespace - Modify all FSW tests to use the common TempFile/TempDirectory classes instead of their own custom one - Modify all FSW tests to watch for events in a temporary directory. There shouldn't be any more new items being created or watched in the runtime folder. - Fix the SymLink tests to use the ConditionalFact attribute similar to how the FileSystem tests function. - Remove the symlink print statements being outputted by the FileSystem CreateSymbolicLink function. @stephentoub +7937 area-System.Net System.Net.Security test stabilization - Adding generic parallel test execution script. - Address several System.Net.Security test issues found using the script. The following tests have been used: - 100 parallel test processes on a 12CPU/16GB machine for 1hr - 20 parallel test processes on a 8CPU/3GB machine (leaving this to run overnight) - 20 parallel test processes on a 2CPU/2GB machine (leaving this to run overnight) Most of below bugs were potentially fixed by #7800 at least in part. Other test-code fixes to issues discovered during stress tests have been added to this PR. Fixes #4467 #5283 #5284 #5991. @davidsh @stephentoub @ericeil PTAL /cc @himadrisarkar +7938 area-Serialization `FormatterServices.GetUninitializedObject` replacement? I'm author of [FsPickler](http://nessos.github.io/FsPickler/), a multi-format message serialization library intended as a replacement to BinaryFormatter. The focus of the library is _serialization of closures_, which means that I need to support things like subtyping and internal, compiler-generated classes that often have no accessible constructors or serialization attribute annotations. I would be interested in porting FsPickler (and its father project, [mbrace](http://mbrace.io/)) to CoreCLR, however there are many obstacles, mostly related to deprecated APIs. The component I'm more concerned about is the `FormatterServices.GetUninitializedObject` method which is used for instantiating objects without relying on a parameterless constructor. This is crucial for us since many closure types (particularly F# lambdas) do not come with such constructors. Do you have any plans for replacing this with equivalent functionality? /cc https://github.com/dotnet/corefx/issues/6564#issuecomment-212620200 https://github.com/dotnet/coreclr/issues/2715 +7939 area-Infrastructure Update Windows Nano Server image used in CI cc @joshfree +7941 area-System.Net Fail more gracefully if the user specifies a receive buffer for AcceptAsync On Windows, `AcceptAsync` can optionally receive an initial buffer-full of data from the newly connected socket, via the magic of [`AcceptEx`](https://msdn.microsoft.com/en-us/library/windows/desktop/ms737524%28v=vs.85%29.aspx). We currently have no emulation of this feature on Unix. Instead, we fail an assert in Debug builds, or report erroneous results in Release builds. This change causes `AcceptAsync` to throw `PlatformNotSupportedException` if the user has supplied a buffer to receive data. In the future, we can consider implementing this feature, but for now it's better to fail correctly rather than succeed erroneously. I've also added a couple of new test cases (to check that this works on Windows, and does _not_ work on Unix), and some new asserts to make sure this doesn't come up elsewhere. Addresses #7836 @stephentoub, @CIPop +7942 area-Serialization XmlDictionaryWriterTest.XmlBaseWriter_CheckAsync_ThrowInvalidOperationException Fails in Net Native The test asserts the exception message. But in Net Native the exception contains the resource name only instead of the error message, thus the test fails in Net Native. +7944 area-System.Reflection Implements MetadataReaderProvider MetadataReaderProvider can be created from array, stream or a memory block, manages the specified resource and provides MetadataReader. +7946 area-System.Net Fix CurlResponseStream.Dispose to cancel the request We weren't canceling the request when prematurely Dispose'ing the response stream. Because of how asynchronous transfers work, where we need to pause the connection until a reader has requested data, if no reader ever requested data (e.g. the stream was disposed without reading anything) then the connection could remain paused indefinitely, and it would sit around until the HttpClient timeout kicked in and canceled it. This could lead to unbounded growth of the number of sockets being used, as sockets couldn't be pooled or cleaned up due to still being associated with an active download. The fix is simply to cancel the request in Dispose if the request isn't already completed. cc: @ericeil, @kapilash, @davidsh, @joelverhagen +7947 area-System.Net Force CurlHandler active operations to shutdown when handler disposed If the CurlHandler is disposed of while active operations are in progress, fail them. This was generally already happening, but not reliably, and not with the right exception type (a cancellation exception). cc: @ericeil, @kapilash, @davidsh +7948 area-System.Linq CanCatchExceptionAsObject failed in CI on unix http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/138/consoleText ``` System.Linq.Expressions.Tests.ExceptionHandlingExpressions.CanCatchExceptionAsObject(useInterpreter: True) [FAIL] System.Exception : Exception of type 'System.Exception' was thrown. Stack Trace: at System.Linq.Expressions.Interpreter.ThrowInstruction.Run(InterpretedFrame frame) at System.Linq.Expressions.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Linq.Expressions.Interpreter.Interpreter.Run(InterpretedFrame frame) at System.Linq.Expressions.Interpreter.LightLambda.Run(Object[] arguments) at Thunk(Func`2 ) at System.Linq.Expressions.Tests.ExceptionHandlingExpressions.CanCatchExceptionAsObject(Boolean useInterpreter) ``` +7952 area-Infrastructure CoreFX's version of CLI should be updated automatically when a new LKG of CLI is available "For more info on the plan, skip to this comment: https://github.com/dotnet/corefx/issues/7952#issuecomment-213072085 This issue was originally about the following bug that we're fairly sure was because we had an out of date CLI: --- Error during restore in [this OSX Release build](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_release_prtest/28/): ``` Tools are already initialized [14:24:51.24] Restoring all packages... /tmp/tmp62f36ecd1afa49f8a8396d696921c22e.exec.cmd: line 3: 4667 Segmentation fault: 11 ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/Tools/dotnetcli/dotnet"" restore --packages ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ --infer-runtimes ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src"" ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/pkg"" [14:28:23.61] Restoring all packages...Done. ``` So far this has only been observed in that one linked build, so I don't know if it's a one-off issue or not. Summary of ideas on this (thanks @ericstj @mellinoe) This was found in https://github.com/dotnet/corefx/pull/7931. However, https://github.com/dotnet/corefx/issues/7902 indicated that there was a corrupted package in the NuGet cache, which suggests that some sort of interruption earlier caused a package to be corrupted during restore. It may have been this same kind of segfault during a package install that caused the corrupt package, but we don't have a good way of tracking this down. A simple `./build.sh managed release` doesn't repro the segfault on my OSX box. One thing to try is to update CLI to take any fixes to the runtime that might have happened. (Side effect: NuGet may also want to be resilient to corrupted cache files, in case segfaults or even just build cancellations happen when the cache is being written.) " +7953 area-System.Linq Lambda compilation causes a stackoverflow when selecting a large number of columns from an EF entity. "This has been moved from https://github.com/aspnet/EntityFramework/issues/5131 We have a bit of an odd use-case and I think I may have uncovered a bug. I am going to be as clear as I can, but please ask any questions you need for clarification. I know this bug (if it is a bug) isn't going to be fixed today, so if someone can point me to the location in source this might originating from, I can take a look and 1) see if I can fix it or 2) if it isn't a bug in EF adjust my code accordingly. #### Problem System.Stackoverflow exception originating from EntityFramework.dll is causing W3WP to crash. #### What we are trying to do We have an entity defined in a DB context - nothing out of the ordinary here. The entity is exposed over a WebAPI Odata endpoint. The web client is able to query the data just fine and exports it to CSV for customers to download. The view backing the entity in question is approaching 1 millions records. We have an SLA to meet when being able to export the CSV, and when you have to export 1million records this SLA is broken. We originally tried a multi-threaded approach by have X number of threads getting N number of records per page and each doing a specific number of pages. So, 5 threads running at a time, each responsible for 200,000 records paging through them at 100 each. This helped, but it would still take ~20 minutes for a full export. So we moved to a streaming approach - this is where the fun starts :) #### Repro steps 1) Create a view in a database with more than 100 columns. 2) Bind that to an entity using the designer and expose it over a WebAPI Odata endpoint 3) Using the Odata framework, construct a query that selects all 100 rows from the entity. Note, you have to **explicitly** select the rows. Allowing the default select (which returns all rows) or doing a ""Select=*"" will not reproduce the problem. EX: `http://localhost/odata/entity?$select=col1,col2,...col99,col100` 4) W3WP crashes with an unhandled exception. You can see this in the Application Log. ``` Faulting application name: w3wp.exe, version: 8.0.9200.16384, time stamp: 0x50108835 Faulting module name: clrjit.dll, version: 4.6.96.0, time stamp: 0x55b96549 Exception code: 0xc00000fd Fault offset: 0x00000000000778ac Faulting process id: 0x2f4c Faulting application start time: 0x01d19b20a1c244cf Faulting application path: c:\windows\system32\inetsrv\w3wp.exe Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clrjit.dll Report Id: 7678dc0b-071e-11e6-945c-000d3a900c63 Faulting package full name: Faulting package-relative application ID: ``` 5) Attach a debugger and make the request again. Make sure your IDE is set to stop on all exceptions and you will see this exception is caught. (The line is annotated in the Example code code blow). Dig into the error and you will see it being thrown from EntityFramework.dll. ``` System.StackOverflowException was unhandled HResult=-2147023895 Message=Exception of type 'System.StackOverflowException' was thrown. InnerException: ``` #### Notes - I did some testing, and as soon as we select more than 96 columns the stackoverflow is thrown. Select 96 or less and it works - Notice we are not using a strongly typed entity. As far as PushStreamContent is concerned, it is just an IQueryable. I think this is important because a few years ago [this non-public patch](https://support.microsoft.com/en-us/kb/2384016) was put put for something very similar. I know it isn't the same, but there are similarities. I assume this would have been included in subsequent versions though. > - If I change the endpoint to _not_ use the PushStreamContent and instead just return the data like you see in most applications (i.e. `return Request.CreateResponse(view );`) it actually works. This leads me to believe it has something to do with the enumeration over the IQueryable. _Edit: The above point is wrong. It will fail either way_ - I mention it in passing, but I want to call out that if the client does a `$select=*`, then everything works. Even if there are more than the 96 columns. I wonder if it has to do with the size of the expression tree being built? - I have traced the bug down to the System.Linq.Expressions.Compiler.LambdaCompiler specifically this: ``` private void EmitLambdaBody() { // The lambda body is the ""last"" expression of the lambda CompilationFlags tailCallFlag = _lambda.TailCall ? CompilationFlags.EmitAsTail : CompilationFlags.EmitAsNoTail; EmitLambdaBody(null, false, tailCallFlag); } ``` #### Example code _you can see here that we are not using the @Queryable annotation, but instead calling options.ApplyTo our self_ ``` public HttpResponseMessage GetEntity(ODataQueryOptions options) { //the IsPublic isn't important here. I am just showing the we do additional query filtering on top of what the client asks for IQueryable view = options.ApplyTo(DbContext.vwEntity.where(row => row.IsPublic)); return new ResponseStreamer(Request).StreamAsync(view); } ``` _ResponseStreamer takes the current HttpWebRequests, and flushes rows out to a `PushStreamContent` as we get read them from the database. This, in essence, allows us to send rows to the client as fast as we are able to get them from SQL_ ``` public HttpResponseMessage StreamAsync(IQueryable data) { HttpResponseMessage response = request.CreateResponse(); response.Content = new PushStreamContent( async (outputStream, httpContent, transportContext) => { try { using (TextWriter tw = new StreamWriter(outputStream)) { using (JsonWriter writer = new JsonTextWriter(tw)) { writer.WriteStartArray(); // The exception is throw while enumerating over ""data"" foreach (var item in data) { string json = JsonConvert.SerializeObject(item)+"",""+Environment.NewLine; writer.WriteRaw(json); await outputStream.FlushAsync(); } writer.WriteEndArray(); } } } catch (Exception ex) { var errorBuffer = Encoding.Default.GetBytes(""an error for the client to see""); outputStream.Write(errorBuffer, 0, errorBuffer.Length); outputStream.Flush(); } finally { outputStream.Close(); } }); return response; } ``` #### Stacktrace ``` [Managed to Native Transition] mscorlib.dll!System.Reflection.Emit.DynamicMethod.CreateDelegate(System.Type delegateType = {Name = Inspecting the state of an object in the debuggee of type System.Type is not supported in this context. FullName = Inspecting the state of an object in the debuggee of type System.Type is not supported in this context.}, object target = {System.Runtime.CompilerServices.Closure}) Unknown System.Core.dll!System.Linq.Expressions.Compiler.LambdaCompiler.Compile(System.Linq.Expressions.LambdaExpression lambda, System.Runtime.CompilerServices.DebugInfoGenerator debugInfoGenerator) Line 210 C# System.Core.dll!System.Linq.Expressions.Expression>>.Compile() Line 190 C# EntityFramework.dll!System.Data.Entity.Core.Common.Internal.Materialization.CoordinatorFactory>.CoordinatorFactory(int depth, int stateSlot, System.Linq.Expressions.Expression> hasData = null, System.Linq.Expressions.Expression> setKeys = null, System.Linq.Expressions.Expression> checkKeys = null, System.Data.Entity.Core.Common.Internal.Materialization.CoordinatorFactory[] nestedCoordinators, System.Linq.Expressions.Expression>> element = {System.Linq.Expressions.Expression>>}, System.Linq.Expressions.Expression> wrappedElement, System.Linq.Expressions.Expression>> elementWithErrorHandling, System.Linq.Expressions.Expression>>> initializeCollection = null, System.Data.Entity.Core.Common.Internal.Materialization.RecordStateFactory[] recordStateFactories) Unknown EntityFramework.dll!System.Data.Entity.Core.Common.Internal.Materialization.CoordinatorFactory>.CoordinatorFactory(int depth, int stateSlot, System.Linq.Expressions.Expression hasData, System.Linq.Expressions.Expression setKeys, System.Linq.Expressions.Expression checkKeys, System.Data.Entity.Core.Common.Internal.Materialization.CoordinatorFactory[] nestedCoordinators, System.Linq.Expressions.Expression element, System.Linq.Expressions.Expression elementWithErrorHandling, System.Linq.Expressions.Expression initializeCollection, System.Data.Entity.Core.Common.Internal.Materialization.RecordStateFactory[] recordStateFactories) Unknown [Native to Managed Transition] [Managed to Native Transition] mscorlib.dll!System.RuntimeType.CreateInstanceImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder = {System.DefaultBinder}, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes = null, ref System.Threading.StackCrawlMark stackMark) Unknown mscorlib.dll!System.Activator.CreateInstance(System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes) Unknown mscorlib.dll!System.Activator.CreateInstance(System.Type type, object[] args) Unknown EntityFramework.dll!System.Data.Entity.Core.Common.Internal.Materialization.CoordinatorScratchpad.Compile() Unknown EntityFramework.dll!System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslateColumnMap>(System.Data.Entity.Core.Query.InternalTrees.ColumnMap columnMap, System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace workspace, System.Data.Entity.Core.Objects.Internal.SpanIndex spanIndex, System.Data.Entity.Core.Objects.MergeOption mergeOption = NoTracking, bool streaming = true, bool valueLayer) Unknown [Native to Managed Transition] [Managed to Native Transition] EntityFramework.dll!System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslateColumnMap(System.Data.Entity.Core.Common.Internal.Materialization.Translator translator, System.Type elementType, System.Data.Entity.Core.Query.InternalTrees.ColumnMap columnMap, System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace workspace, System.Data.Entity.Core.Objects.Internal.SpanIndex spanIndex, System.Data.Entity.Core.Objects.MergeOption mergeOption, bool streaming, bool valueLayer) Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.Prepare(System.Data.Entity.Core.Objects.ObjectContext context, System.Data.Entity.Core.Common.CommandTrees.DbQueryCommandTree tree, System.Type elementType, System.Data.Entity.Core.Objects.MergeOption mergeOption = NoTracking, bool streaming = true, System.Data.Entity.Core.Objects.Span span, System.Collections.Generic.IEnumerable> compiledQueryParameters = null, System.Data.Entity.Core.Common.Utils.AliasGenerator aliasGenerator) Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(System.Data.Entity.Core.Objects.MergeOption? forMergeOption) Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery>.GetResults.AnonymousMethod__6() Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(System.Func func, System.Data.Entity.Infrastructure.IDbExecutionStrategy executionStrategy, bool startLocalTransaction, bool releaseConnectionOnSuccess = false) Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery>.GetResults.AnonymousMethod__5() Unknown EntityFramework.SqlServer.dll!System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute>>(System.Func>> operation) Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery>.GetResults(System.Data.Entity.Core.Objects.MergeOption? forMergeOption) Unknown EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery.System.Collections.Generic.IEnumerable.GetEnumerator.AnonymousMethod__0() Unknown EntityFramework.dll!System.Data.Entity.Internal.LazyEnumerator>.MoveNext() Unknown > MyAssembly.dll!MyAssembly.ResponseStreamer.StreamAsync.AnonymousMethod__0(System.IO.Stream outputStream = {System.Net.Http.PushStreamContent.CompleteTaskOnCloseStream}, System.Net.Http.HttpContent httpContent = {System.Net.Http.PushStreamContent}, System.Net.TransportContext transportContext = null) Line 37 C# ``` " +7959 area-Infrastructure Collection modified during package restore "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/72/consoleFull#205152537279494335-f7bd-47d0-8771-8661e00c2db2 > 08:47:54 [08:53:09.86] Restoring all packages... > 08:51:58 EXEC : error : Collection was modified; enumeration operation may not execute. [/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/build.proj] > > 08:51:58 > /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/build.proj(80,5): error MSB3073: The command """"/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/Tools/dotnetcli/dotnet"" restore --packages ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/packages"" --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ --infer-runtimes ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src"" ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/pkg"""" exited with code -1. " +7962 area-System.Net Ensure CurlHandler properly cleans up resources when finalized Right now resources get cleaned up when a request completes, regardless of whether it's disposed or not. But a) that might artificially delay when the resources are cleaned up, e.g. if a response is dropped without disposing it while there's still lots of data to be downloaded, and b) there are some cases where it might leak until the request times out (default is 60 seconds), e.g. if a response message gets dropped without having read any of its data and without being disposed. +7964 area-System.Net Port to RC2: Fix CurlResponseStream.Dispose to cancel the request We weren't canceling the request when prematurely Dispose'ing the response stream. Because of how asynchronous transfers work, where we need to pause the connection until a reader has requested data, if no reader ever requested data (e.g. the stream was disposed without reading anything) then the connection could remain paused indefinitely, and it would sit around until the HttpClient timeout kicked in and canceled it. This could lead to unbounded growth of the number of sockets being used, as sockets couldn't be pooled or cleaned up due to still being associated with an active download. The fix is simply to cancel the request in Dispose if the request isn't already completed. Port of #7946 +7973 area-Infrastructure A small suggestion for making the VS experience in corefx more idiot-proof. "Know all these lines that show up in various .csproj files? ``` ``` Well heck, these are just NOP's - might as well get rid of them, right? Or at least, not worry if they don't line up with the Configurations actually supported by the project (is this library ""Debug"" or ""Windows_Debug""?) **Wrong**. I just found out, the hard way, that the VS IDE looks for these conditionals as a sign that a .csproj ""supports"" a certain configuration. And if the .sln file specifies a certain configuration for your .csproj file and your .csproj file doesn't have this magic line, VS ""helpfully"" ""fixes"" your .sln to use a configuration that the .csproj appears to support (how does it know it picked a good one? Beats me.) And unless you're like me and keep files read-only as long as possible, you'll get no notice that ""Hey! We just applied a fix to _your_ file without knowing what we're doing. But I guess you didn't need to know that."" In the mean time, hitting F6 now yields broken or misleading results and you wonder why you have to commit an .sln file change that you have no understanding of. This seems like boilerplate that could go into dir.props so everyone doesn't have to deal with this. It's fine by me if the boilerplate includes every $(Configuration) name we use repo-wide - I see no value in the VS IDE insisting that the $(Configuration)/Project pairup be approved on both sides like that. " +7975 area-System.Net Change handling of NTLM in WinHttpHandler +7976 area-System.Net Implement SocketAsyncEventArgs.LogBuffer Fixes #7851. +7980 area-System.Linq Interpreter throws wrong exception on irreducible extension expression. Given the likes of: ``` private class IrreducibleWithTypeAndNodeType : Expression { public override Type Type => typeof(void); public override ExpressionType NodeType => ExpressionType.Extension; } ``` The compiler throws `ArgumentException` if compilation is attempted. The interpreter throws `PlatformNotSupportedException`. It should be made to correspond with the compiler. +7983 area-System.Net Add UriTemplate from WCF to .NET Core? The [UriTemplate](https://msdn.microsoft.com/en-us/library/system.uritemplate%28v=vs.110%29.aspx) class looks useful for scenarios with calling HTTP clients, however it is part of System.ServiceModel.dll. Could this type (or a similar one) be moved into the core framework along the `Uri` class to allow it to be used more widely and in .NET Core scenarios? +7987 area-System.ComponentModel Fix System.ComponentModel.TypeConverter package generation Due to implementation requirements for TypeDescriptors, the .NET Standard generation needs to be bumped to 1.5. The packages then broke, and this gives the NET Standard 1.0 surface area to wp8/win8 for S.CM.TypeDescriptor 4.1.0. The generation bump is due to new Reflection surface area (such as UnderlyingType and BindingFlags among others). There are also a many places where non-generic and specialized collections are used (which require 1.3) and in an attempt to get the implementation functional, those have not been replaced with generic versions. @chlowell @ericstj @weshaggard +7991 area-Serialization Certain XmlSerializer constructors are not supported in NetNative The following tests fail in NetNative due the corresponding constructors are not supported on NetNative. ``` XmlSerializerTests.Xml_ConstructorWithXmlRootAttr XmlSerializerTests.Xml_ConstructorWithXmlAttributeOverrides ``` +7992 area-System.IO WIP: Re-enable previously failing FileSystemWatcher tests There are a bunch of FileSystemWatcher tests that are ActiveIssue'd out that aren't failing anymore on my local box (Ubuntu or Windows). It's highly probable some of these are intermittent issues but some of them were also failing from concurrency issues that were resolved in https://github.com/dotnet/corefx/pull/7934. It's not immediately clear which are which, so I'm re-enabling them all and updating this as I determine which are which. progress towards: #1165, #7002, #6732, #6241, #6226, #5306, #4916, #3630, #3215, #2011, #1657 +7996 area-System.Reflection Unify decoding PE headers and reading other PE sections PEHeaders are currently decoded using (customized) BinaryReader while the rest of the PE file is read using blob readers. We should use blob readers everywhere to avoid doing things in two different ways. As a by-product reading PE headers from non-zero position in the stream would just work. Currently it's broken. +7999 area-System.Net Remove dead code form WebUtility - We no longer need to check `alwaysCreateNewReturnValue`, as now only `true` is ever passed into the method - We are guaranteed to have a non-empty `_charBuffer`, as the string is never empty, so the `if (_numChars > 0)` is always guaranteed to be true We have tests for `UrlEncodeToBytes_NewArray` already /cc @davidsh @stephentoub @jamesqo +8000 area-System.Net Lots of first chance exception System.ObjectDisposedException on SafeHandle in middleware scenario when request is cancelled We were running some middleware scenario where our ASP.NET site would make outgoing request via HttpClient. The request would be cancelled at any time. In the stress run I saw many first chance C++ exception and then accompanying CLR System.ObjectDisposedException on SafeHandle. Actually the WinHttpRequestState already shows it’s disposed. Although the exception would be populated and handled, it sounds more perf/debug-friendly to avoid it by checking the state object before making the PInvoke calls to native code and throw exception. 0:019> !mk Thread 19: SP IP 00:U 000000ac8b21e590 00007ffcc8398a5c KERNELBASE!RaiseException+0x68 [d:\blue\minkernel\kernelbase\xcpt.c @ 828] 01:U 000000ac8b21e670 00007ffca297670c coreclr!RaiseTheExceptionInternalOnly+0x3a4 [f:\dd\ndp\clr\src\vm\excep.cpp @ 3113] 02:U 000000ac8b21e7a0 00007ffca297a8f6 coreclr!UnwindAndContinueRethrowHelperAfterCatch+0x76 [f:\dd\ndp\clr\src\vm\excep.cpp @ 8747] 03:U 000000ac8b21e7f0 00007ffca2a196a2 coreclr!SafeHandle::DangerousAddRef+0xce [f:\dd\ndp\clr\src\vm\safehandle.cpp @ 415] 04:M 000000ac8b21e970 00007ffca2500ad0 System.StubHelpers.StubHelpers.SafeHandleAddRef(System.Runtime.InteropServices.SafeHandle, Boolean ByRef)(+0x1a IL,+0x20 Native) [f:\dd\ndp\clr\src\mscorlib\src\System\StubHelpers.cs @ 1679,13] 05:M 000000ac8b21e9b0 00007ffc44a1a6bd DomainBoundILStubClass.IL_STUB_PInvoke(SafeWinHttpHandle, IntPtr) 06:U 000000ac8b21e9b8 000000ab6417dff0 CLRStub@000000ab6417dff0 07:M 000000ac8b21e9c0 00007ffca2499efe System.Threading.TimerQueueTimer.Close()(+0x6e Native) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\Timer.cs @ 599,9] 08:M 000000ac8b21ea80 00007ffc44a1a5d2 System.Net.Http.WinHttpHandler.InternalReceiveResponseHeadersAsync(System.Net.Http.WinHttpRequestState)(+0xe2 Native) [f:\dd\ndp\fxcore\Open\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs @ 1361,13] 09:M 000000ac8b21eae0 00007ffc44a07ca0 System.Net.Http.WinHttpHandler+d__102.MoveNext()(+0x40a IL,+0x7d0 Native) [f:\dd\ndp\fxcore\Open\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs @ 849,25] 0a:M 000000ac8b21ebf0 00007ffca2431903 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)(+0x15 IL,+0x83 Native) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\ExecutionContext.cs @ 93,17] 0b:M 000000ac8b21ec60 00007ffca249a5c1 System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run()(+0x24 IL,+0x91 Native) [f:\dd\ndp\clr\src\mscorlib\src\System\Runtime\CompilerServices\AsyncMethodBuilder.cs @ 1071,25] 0c:M 000000ac8b21ecb0 00007ffca2497627 System.Threading.ThreadPoolWorkQueue.Dispatch()(+0xa4 IL,+0x1c7 Native) [f:\dd\ndp\clr\src\mscorlib\src\System\Threading\ThreadPool.cs @ 815,29] 0d:U 000000ac8b21ed50 00007ffca2cf2503 coreclr!CallDescrWorkerInternal+0x83 [f:\dd\ndp\clr\src\vm\amd64\CallDescrWorkerAMD64.asm @ 101] 0e:U 000000ac8b21ed90 00007ffca299b907 coreclr!MethodDescCallSite::CallTargetWorker+0x20f [f:\dd\ndp\clr\src\vm\callhelpers.cpp @ 653] 0f:U 000000ac8b21eea0 00007ffca2aebc96 coreclr!QueueUserWorkItemManagedCallback+0x2a [f:\dd\ndp\clr\src\vm\comthreadpool.cpp @ 510] 10:U 000000ac8b21ef90 00007ffca2957921 coreclr!ManagedThreadBase_DispatchMiddle+0x89 [f:\dd\ndp\clr\src\vm\threads.cpp @ 10144] 11:U 000000ac8b21f0f0 00007ffca2957c6c coreclr!ManagedThreadBase_DispatchOuter+0xb4 [f:\dd\ndp\clr\src\vm\threads.cpp @ 10399] 12:U 000000ac8b21f1a0 00007ffca2957d06 coreclr!ManagedThreadBase::ThreadPool+0x32 [f:\dd\ndp\clr\src\vm\threads.cpp @ 10505] 13:U 000000ac8b21f200 00007ffca2a7be50 coreclr!ManagedPerAppDomainTPCount::DispatchWorkItem+0xe4 [f:\dd\ndp\clr\src\vm\threadpoolrequest.cpp @ 760] 14:U 000000ac8b21f350 00007ffca2a7523a coreclr!ThreadpoolMgr::ExecuteWorkRequest+0x13a [f:\dd\ndp\clr\src\vm\win32threadpool.cpp @ 1891] 15:U 000000ac8b21f3a0 00007ffca2a75d25 coreclr!ThreadpoolMgr::WorkerThreadStart+0x4cd [f:\dd\ndp\clr\src\vm\win32threadpool.cpp @ 2361] 16:U 000000ac8b21f440 00007ffca295243c coreclr!Thread::intermediateThreadProc+0x80 [f:\dd\ndp\clr\src\vm\threads.cpp @ 2859] 17:U 000000ac8b21fe80 00007ffcca3413d2 kernel32!BaseThreadInitThunk+0x22 [d:\9147\base\win32\client\thread.c @ 78] 18:U 000000ac8b21feb0 00007ffccafa54e4 ntdll!RtlUserThreadStart+0x34 [d:\blue\minkernel\ntdll\rtlstrt.c @ 1026] 0:019> !mdt 000000ab630f2738 000000ab630f2738 (System.Net.Http.WinHttpRequestState) _lock:000000ab630f2810 (System.Object) _operationHandle:(System.Runtime.InteropServices.GCHandle) VALTYPE (MT=00007ffca2748ef0, ADDR=000000ab630f27e0) _disposed:true (System.Boolean) k__BackingField:000000ab630f26d0 (System.Threading.Tasks.TaskCompletionSource`1[[System.Net.Http.HttpResponseMessage, System.Net.Http]]) k__BackingField:(System.Threading.CancellationToken) VALTYPE (MT=00007ffca2754758, ADDR=000000ab630f27e8) k__BackingField:000000ab630f22d0 (System.Net.Http.HttpRequestMessage) k__BackingField:000000ab630f19e0 (System.Net.Http.WinHttpHandler) k__BackingField:000000ab6417d920 (Interop+WinHttp+SafeWinHttpHandle) k__BackingField:NULL (System.Exception) k__BackingField:false (System.Boolean) … 000000ac8b21f120 0:019> !mdt 000000ab6417d920 000000ab6417d920 (Interop+WinHttp+SafeWinHttpHandle) handle:000000ac8a3f7200 (System.IntPtr) _state:0x3 (System.Int32) _ownsHandle:true (System.Boolean) _fullyInitialized:true (System.Boolean) _parentHandle:NULL (Interop+WinHttp+SafeWinHttpHandle) +8001 area-System.Linq Missing exception type on xml docs for SingleOrDefault(src, predicate) `public static TSource SingleOrDefault(this IEnumerable source);` has the doc for all exceptions. `public static TSource SingleOrDefault(this IEnumerable source, Func predicate);` looks like it's missing the invalid operation one. ```c# // ..... // Exceptions: // T:System.ArgumentNullException: // source is null. // // T:System.InvalidOperationException: // The input sequence contains more than one element. public static TSource SingleOrDefault(this IEnumerable source); // ..... // Exceptions: // T:System.ArgumentNullException: // source or predicate is null. public static TSource SingleOrDefault(this IEnumerable source, Func predicate); ``` +8003 area-System.Net Add support for all OperationStatus values on Linux I found some documentation on this (now linked from the source). Also, this appears to be how Mono does it. Fixes #7889. @stephentoub @CIPop +8004 area-System.Reflection BlobReader should expose Pointer, Seek, Skip, Align. I was working on pushing down forward-only IL decoding out of IL -> IOperation prototype (but still in separate assembly from SRM for now) and found that BlobReader hides some things (kept internal) that are of general use. Given a BlobReader, I should be able to drop down to pointers/unsafe myself and I should also be able to skip around without resorting to copying a previous BlobReader instance at a previous position which has a bunch of fields (I think we can cut those down, but still, seek should be as cheap as possible). +8005 area-System.Net Add tests for HtmlDecode and HtmlEncode to WebUtility - Valid encoding - Invalid encoding - Unecessary encoding - No encoding needed - High BMP chars - Surrogate pairs - Chars in range 160-255 /cc @davidsh @stephentoub @jamesqo +8006 area-System.Net Add several HttpClient mini-stress tests Several outerloop tests that verify HttpClient doesn't completely fall over under some load: - Use one HttpClient instance to make many requests serially and in parallel - Use multiple HttpClient instances to make many requests serially and in parallel - Ensure that HttpResponseMessages can be GCd even if the associated response hasn't been fully drained. This one fails right now on unix due to an open issue. cc: @davidsh, @ericeil +8012 area-System.IO [CoreRT] Behavior mismatch between CoreCLR and CoreRT Streams in async methods **TL;DR** This will throw a `TaskCanceledException` in CoreCLR, while it will throw a `OperationCanceledException` in CoreRT: ``` cs await Stream.Null.FlushAsync(new CancellationToken(true)); ``` --- Recently noticed that several async methods in `Stream` and `MemoryStream` have differing implementations when it comes to cancellation tokens in the CoreCLR/CoreFX repos. For example, [here](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/IO/Stream.cs#L894) is the source code of `NullStream.FlushAsync` in CoreCLR, and [here](https://github.com/dotnet/corefx/blob/master/src/System.IO/src/System/IO/Stream.cs#L412) it is in CoreFX. Attempting to await the previous results in a `TaskCanceledException`, and the latter an `OperationCanceledException`. The fix would be to remove the `ThrowIfCancellationRequested` calls (along with all of the `pragmas`) and replace them with an `IsCancellationRequested` - `Task.FromCanceled` pattern. @stephentoub, do you know of any reason why the behaviors should differ? If not then I can submit a PR (along with tests) to fix this. +8013 area-System.Net SocketException improvements - Move all instantiation of InternalSocketException into SocketExceptionFactory. Rename InternalSocketException to ExtendedSocketException, and encapsulate it in SocketExceptionFactory to prevent a proliferation of dependencies on this type. - Add support for adding an EndPoint to the exception message in ExtendedSocketException (fixes #7873). - Remove the TODOs around #7853. I don't believe it's worth complicating the public contracts just in case someone does an exact type equality comparison on a SocketException. (Fixes #7853) +8023 area-System.IO FileSystemWatcher_Deleted_FileDeletedInNestedDirectory failed on Ubuntu in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/279/consoleText ``` System.IO.Tests.DeletedTests.FileSystemWatcher_Deleted_FileDeletedInNestedDirectory [FAIL] Didn't observe a deleted event within 30000ms Expected: True Actual: False Stack Trace: Discovering: System.Net.Ping.Functional.Tests at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(WaitHandle eventOccurred, String eventName, Int32 timeout) at System.IO.Tests.DeletedTests.FileSystemWatcher_Deleted_FileDeletedInNestedDirectory() ``` +8024 area-System.IO Two MoveFileTests failing on Windows OuterLoop > System.IO.Tests.MoveFileTests.Windows_File_Move_To_Different_Directory_Triggers_Event(eventType: Deleted, moveRaisesEvent: False) > System.IO.Tests.MoveFileTests.Windows_File_Move_To_Different_Directory_Triggers_Event(eventType: Renamed, moveRaisesEvent: True) http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release_prtest/1/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/3/ +8028 area-System.Globalization System.Globalization.Tests fails on NetBSD "``` System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3, 2], CurrencyNegativePattern = 9, ... }, expected: [3, 2]) [FAIL] Assert.Equal() Failure Expected: Int32[] [3, 2] Actual: Int32[] [3] Stack Trace: at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(NumberFormatInfo format, Int32[] expected) ``` " +8031 area-System.IO Disable failing FSW tests Disables a few failing tests that are dirtying up the CI. Tests will be permanently fixed as a part of #7992. related to #8023, #8024. @stephentoub +8032 area-System.Console "TermInfo.cs test fail for TERM=""xterm""" "There are entries for ""xterm-256color"", but not for ""xterm"". I don't understand offhand these magic values: ``` [Theory] [PlatformSpecific(PlatformID.AnyUnix)] [InlineData(""xterm-256color"", ""\u001B\u005B\u00330m"", ""\u001B\u005B\u00340m"", 0)] [InlineData(""xterm-256color"", ""\u001B\u005B\u00331m"", ""\u001B\u005B\u00341m"", 1)] [InlineData(""xterm-256color"", ""\u001B\u005B90m"", ""\u001B\u005B100m"", 8)] [InlineData(""screen"", ""\u001B\u005B\u00330m"", ""\u001B\u005B\u00340m"", 0)] [InlineData(""screen"", ""\u001B\u005B\u00332m"", ""\u001B\u005B\u00342m"", 2)] [InlineData(""screen"", ""\u001B\u005B\u00339m"", ""\u001B\u005B\u00349m"", 9)] [InlineData(""Eterm"", ""\u001B\u005B\u00330m"", ""\u001B\u005B\u00340m"", 0)] [InlineData(""Eterm"", ""\u001B\u005B\u00333m"", ""\u001B\u005B\u00343m"", 3)] [InlineData(""Eterm"", ""\u001B\u005B\u003310m"", ""\u001B\u005B\u003410m"", 10)] [InlineData(""wsvt25"", ""\u001B\u005B\u00330m"", ""\u001B\u005B\u00340m"", 0)] [InlineData(""wsvt25"", ""\u001B\u005B\u00334m"", ""\u001B\u005B\u00344m"", 4)] [InlineData(""wsvt25"", ""\u001B\u005B\u003311m"", ""\u001B\u005B\u003411m"", 11)] [InlineData(""mach-color"", ""\u001B\u005B\u00330m"", ""\u001B\u005B\u00340m"", 0)] [InlineData(""mach-color"", ""\u001B\u005B\u00335m"", ""\u001B\u005B\u00345m"", 5)] [InlineData(""mach-color"", ""\u001B\u005B\u003312m"", ""\u001B\u005B\u003412m"", 12)] public void TermInfoVerification(string termToTest, string expectedForeground, string expectedBackground, int colorValue) { ``` I was told that they differ between implementations.. NetBSD (I think) keeps the original curses(3) library still maintained, but I think I can try to use ncurses database for now. Do you know what values would be added for ""xterm""? " +8034 area-System.Numerics Adding a HashCode type to help with combining hash codes Replacing the long discussion with 200+ comments with **new issue #14354** This issue is **CLOSED!!!** ------------------------------------------------------ ### Motivation Java has `Objects.hash` for quickly combining the hash codes of constituent fields to return in `Object.hashCode()`. Unfortunately, .NET has no such equivalent and developers are forced to roll their own hashes like [this](http://stackoverflow.com/a/263416/4077294): ``` cs public override int GetHashCode() { unchecked { int result = 17; result = result * 23 + field1.GetHashCode(); result = result * 23 + field2.GetHashCode(); return result; } } ``` [Sometimes](https://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx) people even resort to using `Tuple.Create(field1, field2, ...).GetHashCode()` for this, which is bad (obviously) since it allocates. ### Proposal - List of changes in current proposal (against last approved version https://github.com/dotnet/corefx/issues/8034#issuecomment-262331783): - `Empty` property added (as natural starting point analogous to `ImmutableArray`) - Argument names updated: `hash`->`hashCode`, `obj` -> `item` ```cs namespace System { public struct HashCode : IEquatable { public HashCode(); public static HashCode Empty { get; } public static HashCode Create(int hashCode); public static HashCode Create(T item); public static HashCode Create(T item, IEqualityComparer comparer); public HashCode Combine(int hashCode); public HashCode Combine(T item); public HashCode Combine(T item, IEqualityComparer comparer); public int Value { get; } public static implicit operator int(HashCode hashCode); public static bool operator ==(HashCode left, HashCode right); public static bool operator !=(HashCode left, HashCode right); public bool Equals(HashCode other); public override bool Equals(object obj); public override int GetHashCode(); public override string ToString(); } } ``` Usage: ```c# int hashCode1 = HashCode.Create(f1).Combine(f2).Value; int hashCode2 = hashes.Aggregate(HashCode.Empty, (seed, hash) => seed.Combine(hash)); var hashCode3 = HashCode.Empty; foreach (int hash in hashes) { hashCode3 = hashCode3.Combine(hash); } (int)hashCode3; ``` ### Notes Implementation should use algorithm in [`HashHelpers`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Numerics/Hashing/HashHelpers.cs#L9). +8036 area-System.Linq Allow ListInitExpression to have zero initializers Akin to #1877 allowing zero case blocks in a `SwitchExpression` and #3043 allowing empty `BlockExpression`s, it seems reasonable to allow `ListInitExpression`s to have zero elements. All the more so considering that `MemberListBinding`s allow them, and it requires no action beyond removing the explicit prohibition. +8043 area-System.Runtime Is Marshal.SizeOf(Type) supposed to be obsolete? "When using Marshal.SizeOf(Type), this gives a warning: ""'Marshal.SizeOf(Type)' is obsolete"" Does this make sense? What's the rationale? What is the alternative? cc @mellinoe " +8048 area-Infrastructure The default debug action for *.Tests projects should disable xunit parallelism. "I see no advantage to having multiple tests running in multiple threads firing off breakpoints when I'm trying to debug a test. tools\test.targets already nicely adds the ""-wait"" argument by default so the console doesn't disappear on you. `$(TestArguments) -wait ` The argument ""-parallel none"" would be a great companion to the ""-wait"" argument. xunit.console.netcore.exe doesn't care if you specify ""-parallel"" multiple times so this should be safe. " +8050 area-System.ComponentModel Remove explicit reference to System.ComponentModel.Primitives project when dev/typedescriptor is merged to master The updated System.ComponentModel.TypeConverter utilizes new attributes in the S.CM.Primitives assembly, but the reference assembly has not been updated with that surface area. For now, there is an explicit reference. Once the branch gets merged and built, the reference assembly will be available and can be referenced instead of explicitly referencing the project file. +8053 area-Infrastructure Build fails on Ubuntu with missing corerun error I was successfully able to do a native build on Ubuntu Linux, but when attempting to do a `./build.sh managed` I received the following error: > `./build.sh: line 129: /var/lib/corefx/Tools/corerun: No such file or directory` And looking at the Tools dir, I don't see `corerun` there. Below are the contents of this directory: ``` drwxr-x--- 4 root root 4096 Apr 25 11:48 . drwxr-xr-x 10 root root 4096 Apr 25 12:05 .. drwxr-xr-x 2 root root 4096 Apr 25 11:48 1.0.25-prerelease-00321-01 drwxr-xr-x 4 1001 sudo 4096 Apr 21 13:47 dotnetcli ``` Here is my build of Ubuntu: ``` Distributor ID: Ubuntu Description: Ubuntu 14.04.4 LTS Release: 14.04 Codename: trusty ``` Is there something I'm missing or should have done? I have followed the *nix build instructions line by line! Thank you in advance! +8054 area-System.Linq Misleading error message on exception for expression delegate type. The error message for a lamda expression of an invalid type is: > Lambda type parameter must be derived from System.Delegate In fact it must be derived from `System.MulticastDelegate`, `System.MulticastDelegate` itself is not allowed, though it is derived from `System.Delegate`. +8059 area-System.IO FileSystem Watcher: Consider polling API There is a prototype for a [Polling FileSystem Watcher in CoreFXLab](https://github.com/dotnet/corefxlab/tree/master/src/System.IO.FileSystem.Watcher.Polling) that we should look into bringing to CoreFX as an alternative to our current implementation. ### Some benefits of polling: - Works on all systems for network drives - Completely reliable - no event buffer overflow causing dropped/failed events - Avoids system resource limitations e.g. inotify max user instances - Consistency is generally achieved (or attempted) with the existing FSW by greatly increasing the size of internal event buffer. The downside of this is that it is using memory that won't be paged out and the max size is 64kb. Polling avoids this issue. ### Some downsides: - Doesn't scale well to very large directories e.g. an entire drive. - Generally considered to be less performant than the OS's watching APIs (though there are some factors that affect this like buffer size, watched directory size, and polling frequency). #### Bringing it to CoreFX There would be a few ways to bring the Polling FSW into CoreFX that we can consider: 1. Bring it in its own library System.IO.FileSystem.Watcher.Polling that is completely separate from the existing FSW 2. Put it into System.IO.FileSystem.Watcher but have it be its own separate class 3. Merge the implementation into the existing FSW and provide a bool constructor overload (e.g. `bool poll = false`) that allows specification of which implementation to use 4. Merge the implementation into the existing FSW and try to programatically determine which implementation to use. We could base our decision on the initial number of entries in the watched directory, for example. 5. Merge the implementation into the existing FSW and use both in unison. Use the OS's API's but also poll every now and then to catch things that the OS's FSW may have missed. 6. Replace our existing implementation with a polling implementation ### Examples of demand for a polling FSW: - https://github.com/dotnet/corefx/issues/7576 - http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-file-changes/240008#240008 - http://stackoverflow.com/questions/3612311/monitoring-a-directory-for-new-file-creation-without-filesystemwatcher/3612432#3612432 @KrzysztofCwalina @stephentoub @sokket @joshfree @chcosta +8061 area-System.Net Timeout_SetTo60AndGetResponseFromServerWhichTakes40_Success failed on Windows The handle is invalid http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_win10_debug/12/consoleText ``` System.Net.Http.Functional.Tests.HttpClientTest.Timeout_SetTo60AndGetResponseFromServerWhichTakes40_Success [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() d:\j\workspace\outerloop_win---097a300f\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(392,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() d:\j\workspace\outerloop_win---097a300f\src\System.Net.Http\tests\FunctionalTests\HttpClientTest.cs(389,0): at System.Net.Http.Functional.Tests.HttpClientTest.Timeout_SetTo60AndGetResponseFromServerWhichTakes40_Success() ----- Inner Stack Trace ----- d:\j\workspace\outerloop_win---097a300f\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1360,0): at System.Net.Http.WinHttpHandler.InternalReceiveResponseHeadersAsync(WinHttpRequestState state) d:\j\workspace\outerloop_win---097a300f\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(850,0): at System.Net.Http.WinHttpHandler.d__102.MoveNext() ``` +8063 area-System.Net Fixed typo in GetHostAddressesAsync test for Dns class Fixed typo in GetHostAddressesAsync() test. +8064 area-Serialization System.Xml.XmlSerializer Perf tests failing @khdang when I run `msbuild /t:BuildAndTest src\System.Xml.XmlSerializer\tests\System.Xml.XmlSerializer.Tests.csproj /p:Performance=true` there seem to be some exceptions being thrown `System.Xml.XmlSerializer.Tests.Performance.XsPerformanceTest.XsSerializationTest(numberOfRuns: 1000, testType: Dictionary, testSize: 128) [FAIL] System.NotSupportedException : The type System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, mscorlib, Version=4.0.0.0, Culture=neutr al, PublicKeyToken=7cec85d7bea7798e]] is not supported because it implements IDictionary.` Could you take a look and fix this +8065 area-System.Collections Fix ListDictionary.CopyTo throwing IndexOutOfRangeException - Now works as expected according to MSDN docs - Found in #7997, and caused inconsistencies in HybridDictionary behaviour at different lengths I got the impression that we should not throw an exception if count == 0, let me know if this is incorrect. /cc @ianhays +8066 area-System.Net OSX System.Net.NetworkInformation.Functional.Tests timeout in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/263/console > 08:53:21 Discovering: System.Net.NetworkInformation.Functional.Tests > 08:53:21 Discovered: System.Net.NetworkInformation.Functional.Tests > 08:53:21 Starting: System.Net.NetworkInformation.Functional.Tests > 08:53:21 System.Xml.XDocument.xNodeBuilder.Tests -> /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/bin/AnyOS.AnyCPU.Debug/System.Xml.XDocument.xNodeBuilder.Tests/System.Xml.XDocument.xNodeBuilder.Tests.dll > 10:22:33 > Build timed out (after 120 minutes). Marking the build as aborted. > 10:22:39 > Build was aborted > 10:22:39 [xUnit] [INFO] - Starting to record. > 10:22:39 [xUnit] [INFO] - Processing xUnit.Net-v2 (default) > 10:22:39 > MSBUILD : error MSB4166: Child node ""3"" exited prematurely. Shutting down. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt. > 10:22:39 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/Tools/tests.targets(145,5): warning MSB5021: ""sh"" and its child processes are being terminated in order to cancel the build. [/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Net.NetworkInformation/tests/FunctionalTests/System.Net.NetworkInformation.Functional.Tests.csproj] " +8067 area-System.Linq ProjectReference -> Package Dependency: Disabled System.Linq.Expressions from package dependency build System.Linq.Expressions does not build when project references are converted to package dependencies due to > Catalog\ExpressionCatalog.RuntimeVariables.cs(34,39): error CS0246: The type or namespace name 'IRuntimeVariables' could not be found (are you missing a using directive or an assembly reference?) [D:\A_work\8\s\src\System.Linq.Expressions\tests See PR #7998 +8070 area-Infrastructure Can't open VS project due to missing files "corefx-master\corefx-master\src\System.IO.FileSystem.DriveInfo\src\System.IO.FileSystem.DriveInfo.csproj : error : The imported project ""\corefx-master\corefx-master\Tools\BuildVersion.targets"" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk. \corefx-master\corefx-master\dir.props Where are these files? " +8074 area-System.Linq Lamda expressions can have pointer types with high arity but not with low. The following works: ``` C# Expression.Lambda( Expression.Constant(3L), Enumerable.Range(0, 20).Select(_ => Expression.Variable(typeof(int).MakePointerType())) ); ``` However, the following does not: ``` C# Expression.Lambda( Expression.Constant(3L), Enumerable.Range(0, 2).Select(_ => Expression.Variable(typeof(int).MakePointerType())) ); ``` The difference being whether the arity is higher than the highest-arity `Func<>` delegate or not. Neither are likely to be useful, as pointer types hit snags elsewhere, but if the former is allowed, then so should be the latter. +8077 area-System.Text How do i get an spesified encoding like this. "Encoding enc = Encoding.GetEncoding(""gbk""); ↓↓↓↓↓↓↓↓↓↓ Exception: 'gbk' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. Parameter name: name can anyone give a solution,please. " +8081 area-System.Linq Expressions can be typed as open generic types The likes of `Expression.Default(typeof(List<>))`, `Expression.Constant(null, typeof(Dictionary<,>))` and some other expressions (though often other rules will get in the way) are allowed. Since these represent a value of an open generic type, they aren't really meaningful. They can have a value of null which can be used as long as it is converted to `object` and both compilation types accept `Expression.Lambda>(Expression.Default(typeof(List<>)))` as an expression that can be compiled into a delegate that returns null. While they can be pressed into service, it seems more appropriate to prohibit them. Factory methods that have at least one overload that takes `Type` arguments directly. Will check these off when they're either found to already prohibit such types, or fixed to do so (PRs just adding tests of already-correct behaviour marked immediately, PRs fixing behaviour upon acceptance): - [x] `Block` (entailed in check that type is reference-assignable from type of last child expression). - [x] `Break` - [x] `Call` #17333 - [x] `Catch` - [x] `Condition` - [x] `Constant` - [x] `Continue` - [x] `Convert` - [x] `ConvertChecked` - [x] `Default` - [x] `Dynamic` (Entailed in check that arguments match delegate method). - [x] `Field` #16231 - [x] `GetActionType` (Exception: Has practical use here) - [x] `GetDelegateType` (Exception: Has practical use here) - [x] `GetFuncType` (Exception: Has practical use here) - [x] `Goto` - [x] `Label` #16140 - [x] `Lambda` #16233 - [x] `MakeCatchBlock` - [x] `MakeDynamic` (Entailed in check that arguments match delegate method). - [x] `MakeGoto` - [x] `MakeTry` (entailed by check that type is void or that body and catch types are reference-assignable) - [x] `MakeUnary` Waiting on #16141 - [x] `New` - [x] `NewArrayBounds` - [x] `NewArrayInit` - [x] `Parameter` (byref types allowed) - [x] `Property` #16231 - [x] `Rethrow` #16141 - [x] `Return` - [x] `Switch` (Entailed by check that type is void or default and case types are reference-assignable) - [x] `Throw` #16141 - [x] `TryGetActionType` (Exception: Has practical use here) - [x] `TryGetFuncType` (Exception: Has practical use here) - [x] `TypeAs` - [x] `TypeEqual` #16150 (pointer types allowed; always results in `false`) - [x] `TypeIs` #16150 (pointer types allowed; always results in `false`) - [x] `Unbox` #16186 - [x] `Variable` Also the following have overrides that take `MemberInfo`, which could be generic and/or be related to an open generic type. Most will block this with restrictions they place on those `MemberInfo` arguments relating to other types, but they need to be checked. - [x] `Add` #16142 - [x] `AddAsign` #16142 - [x] `AddAsignChecked` #16142 - [x] `AddChecked` #16142 - [x] `And` #16142 - [x] `AndAlso` #16142 - [x] `AndAssign` #16142 - [ ] `Bind` #18610 - [x] `Call` - [x] `Convert` #16437 - [x] `ConvertChecked` #16437 - [x] `Decrement` #16437 - [x] `Divide` #16142 - [x] `DivideAssign` #16142 - [x] `ElementInit` - [x] `Equal` #16142 - [x] `ExclusiveOr` #16142 - [x] `ExclusiveOrAssign` #16142 - [x] `Field` #16231 - [x] `GreaterThan` #16142 - [x] `GreaterThanOrEqual` #16142 - [x] `Increment` #16437 - [x] `IsFalse` #16437 - [x] `IsTrue` #16437 - [x] `LeftShift` #16142 - [x] `LeftShiftAssign` #16142 - [x] `LessThan` #16142 - [x] `LessThanOrEqual` #16142 - [x] `ListBind` #18011 - [x] `ListInit` #16624 - [x] `MakeBinary` #16142 - [x] `MakeIndex` - [x] `MakeMemberAccess` - [x] `MakeUnary` #16437 - [x] `MemberBind` (Covered by validation added in #18011 but also entailed by need of type to match). - [x] `Modulo` #16142 - [x] `ModuloAssign` #16142 - [x] `Multiply` #16142 - [x] `MultiplyAssign` #16142 - [x] `MultiplyAssignChecked` #16142 - [x] `MultiplyChecked` #16142 - [x] `Negate` #16437 - [x] `NegateChecked` #16437 - [x] `New` - [x] `Not` #16437 - [x] `NotEqual` #16142 - [x] `OnesComplement` #16437 - [x] `Or` #16142 - [x] `OrAssign` #16142 - [x] `OrElse` #16142 - [x] `PostDecrementAssign` #16437 - [x] `PostIncrementAssign` #16437 - [x] `Power` #16142 - [x] `PowerAssign` #16142 - [x] `PreDecrementAssign` #16437 - [x] `PreIncrementAssign` #16437 - [x] `Property` #16231 - [x] `RightShift` #16142 - [x] `RightShiftAssign` #16142 - [x] `Subtract` #16142 - [x] `SubtractAssign` #16142 - [x] `SubtractAssignChecked` #16142 - [x] `SubtractChecked` #16142 - [x] `Switch` #16344 - [x] `UnaryPlus` #16437 +8082 area-System.Net Enable finalization of resources in CurlHandler This change is primarily about enabling abandoned requests to be cleaned up. Today, if you make a ResponseHeadersRead request on an HttpClient and then drop it without disposing it, the associated state will end up being leaked into the HttpClient until either the HttpClient is disposed or until the request times out, which by default is 60 seconds but could have been extended to never. This change enables such requests to be finalized. See the detailed comment in CurlHandler.cs for a description of the approach taken. Fixes #7962 cc: @ericeil, @bartonjs, @davidsh, @kapilash +8084 area-System.Linq Extension expressions with custom node types throws unreachable exception. "Considering the likes of: ``` C# private class ReducesFromStrangeNodeType : Expression { public override Type Type => typeof(int); public override ExpressionType NodeType => (ExpressionType)(-1); public override bool CanReduce => true; public override Expression Reduce() => Constant(3); } ``` Attempting to compile will throw a reasonable `PlatformNotSupportedException` on the interpreter, but an unreachable error (assertion failure in debug, IOE with the text ""Code supposed to be unreachable"" in release) on the interpreter. At the very least the code clearly isn't unreachable when it's just been reached. Having the compiler match the interpreter would be reasonable enough, but having both call `ReduceAndCheck()` and acting on the results is probably better still; in the worse case there's a better exception than saying the code isn't reachable, and if the node is reducible, we can compile it. " +8086 area-System.Data System.Net.Internals.InternalSocketException on OSX/Linux (Debian) "Hi guys, I have been struggling with this error for a few days, on an asp.net core application. I've created a simpler application that just does a select query, and while it works fine in Windows, it doesn't work on both OS X and Linux (under docker with a debian image). Although the Exception is the same on both environments, the message is slightly different: OS X: Environment details:
 Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateException: One or more errors occurred. (Device not configured) --->  System.Net.Internals.InternalSocketException: Device not configured    at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)    at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult)    at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at System.Data.SqlClient.SNI.SNITCPHandle.d__22.MoveNext()    --- End of inner exception stack trace ---    at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)    at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)    at System.Threading.Tasks.Task.Wait(TimeSpan timeout)    at System.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, Int64 timerExpire, Object callbackObject, Boolean parallel)    --- End of inner exception stack trace ---    at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)    at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)    at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)    at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)    at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)    at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)    at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)    at System.Data.SqlClient.SqlConnection.Open()    at SqlClientTest.Program.Main(String[] args) 
The message on Linux:
 Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or in stance-specific error occurred while establishing a connection to SQL Server. Th e server was not found or was not accessible. Verify that the instance name is c orrect and that SQL Server is configured to allow remote connections. (provider:  TCP Provider, error: 35 - An internal exception was caught) ---> System.Aggrega teException: One or more errors occurred. (No such device or address) --->  Syste m.Net.Internals.InternalSocketException: No such device or address    at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)    at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult)    at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchron ization) --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Task task)    at System.Data.SqlClient.SNI.SNITCPHandle.d__22.MoveNext()    --- End of inner exception stack trace ---    at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceled Exceptions)    at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationTo ken cancellationToken)    at System.Threading.Tasks.Task.Wait(TimeSpan timeout)    at System.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port , Int64 timerExpire, Object callbackObject, Boolean parallel)    --- End of inner exception stack trace ---    at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdent ity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolea n redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData  reconnectSessionData, Boolean applyTransientFaultHandling)    at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOp tions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConn ectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)    at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConn ectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConne ctionPoolKey poolKey, DbConnectionOptions userOptions)    at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owning Object, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)    at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection o wningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection )    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection ow ningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean o nlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& co nnection)    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection ow ningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbCon nectionInternal& connection)    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection  owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions , DbConnectionInternal oldConnection, DbConnectionInternal& connection)    at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(Db Connection outerConnection, DbConnectionFactory connectionFactory, TaskCompletio nSource`1 retry, DbConnectionOptions userOptions)    at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)    at System.Data.SqlClient.SqlConnection.Open()    at SqlClientTest.Program.Main(String[] args) 
Environment settings: - dotnet cli version : 1.0.0-rc2-002422 - nuget feed: https://www.myget.org/F/aspnetvnext - database version: Sql Server 2012 SP1 (11.00.3412) The application is just this Program.cs ``` using System; using System.Data.SqlClient; using System.Collections.Generic; namespace SqlClientTest { public static class Program { public static void Main(string[] args) { string connectionString = ""Data Source=[OUR_DB_SERVER_IP]\\MASTER;Initial Catalog=[OUR_DB_NAME];MultipleActiveResultSets=False;User Id=[USER_ID]; Password=[OUR_PASSWORD];""; string sql = ""select TOP 10 id, vestigingNummer, kantoorNaam1 from NVM_Vestiging where idIsActive = 1""; List makelaars = new List(); using (var conn = new SqlConnection(connectionString)) { conn.Open(); using (var command = new SqlCommand(sql, conn)) { var reader = command.ExecuteReader(); while (reader.Read()) { int id = reader.GetInt32(0); int vestigingNummer = reader.GetInt32(1); string kantoorNaam = reader.GetString(2); makelaars.Add(new Makelaar(id, vestigingNummer, kantoorNaam)); } } } foreach (var makelaar in makelaars) { Console.WriteLine($""{makelaar.VestigingNummer}: {makelaar.KantoorNaam}""); } } } public class Makelaar { public Makelaar(int id, int vestigingNummer, string kantoorNaam) { Id = id; VestigingNummer = vestigingNummer; KantoorNaam = kantoorNaam; } public int Id { get; set; } public int VestigingNummer { get; set; } public string KantoorNaam { get; set; } } } ``` and the project.json: ``` { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-*"" }, ""System.Runtime"": ""4.0.0-rc2-24018"", ""System.Data.SqlClient"": ""4.1.0-rc2-24018"", ""System.Collections"":""4.0.0-rc2-24018"", ""System.Console"": ""4.0.0-rc2-24018"" }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""dnxcore50"" } } } ``` Running a python client using the FreeTDS driver works fine, so this seems specific to System.Data.SqlClient, and not to our database. " +8093 area-System.ComponentModel Add TypeDescriptor to System.ComponentModel.TypeConverter This change is to get the main functional parts of the TypeDescriptor infrastructure into System.ComponentModel.TypeConverter. There is still some clean up that should be done, but we can track those with some other issues. Fixes #6573 +8095 area-System.Net Add WinHttpHandler NTLM auth type handling After further discussions and feedback regarding app-compat with legacy servers, it's been decided we don't need to remove NTLM from the auth type list. This commit puts NTLM back into the ordered list of auth types. A similar change was made to CurlHandler in PR #7923. Due to current limitations with the Azure test server endpoints regarding integrated auth, this change was tested manually. cc: @stephentoub @joshfree @Petermarcu @CIPop @himadrisarkar +8099 area-System.Runtime OSInformation not querying the underlying OS runtime is simply not good enough. Here is a real example of use why build time OS Information without the real runtime is not a good idea. See discussions here: - https://github.com/dotnet/corefx/issues/3032 - https://github.com/dotnet/corefx/issues/6105 - https://github.com/dotnet/corefx/issues/1017 I code for a managed NoSQL database and for us performance is a must; therefore in some cases we have to do some platform specific stuff like calling PrefetchVirtualMemory. The problem is that the function is not supported on any OS, it is only supported in Windows 8+. While this may look like an isolated example, not even in windows (which is very stable) the runtime is changing and underlying APIs are not set in stone. Knowing that, think about newer platforms like Android where versions numbers would mean something is viable or not. Not having a cross-platform way to query the runtime is a no-no for performance and support OS that are not mature enough to absolutely not require having specific dedicated codepath depending on the runtime. EDIT: I know I can still get it with a Win32 call now I know that I am on windows, but that is not the point. +8100 area-Serialization Fix serialization perf test failures XmlSerializer doesn't support dictionary scenarios so skipping them in perf tests cc: @shmao @SGuyGe @zhenlan Fix #7584 +8104 area-System.Data ProjectReference -> Package Dependency: Disable SqlClient tests from package dependency build System.Data.SqlClient.Tests.csproj and System.Data.SqlClient.ManualTesting.Tests.csproj have a dependency on sni.dll which we do not currently build in the open. If we build packages in the open (producing new package versions), and then we attempt to restore packages against the new versions, we hit an error because the sni packages were not produced... Errors in E:\gh\chcosta\corefx\bin/obj/generated\System.Data.SqlClient.ManualTesting.Tests\AnyOS\project.json Unable to resolve 'runtime.win7-x86.runtime.native.System.Data.SqlClient.sni (>= 4.0.1-rc3-24026-01)' for 'DNXCore,Version=v5.0'. Unable to resolve 'runtime.win7-x64.runtime.native.System.Data.SqlClient.sni (>= 4.0.1-rc3-24026-01)' for 'DNXCore,Version=v5.0'. Errors in E:\gh\chcosta\corefx\bin/obj/generated\System.Data.SqlClient.Tests\AnyOS\project.json Unable to resolve 'runtime.win7-x64.runtime.native.System.Data.SqlClient.sni (>= 4.0.1-rc3-24026-01)' for 'DNXCore,Version=v5.0'. Unable to resolve 'runtime.win7-x86.runtime.native.System.Data.SqlClient.sni (>= 4.0.1-rc3-24026-01)' for 'DNXCore,Version=v5.0'. I'm going to submit a PR to disable these projects from the Project Reference to package dependency conversion for test builds so that I can unblock some build pipeline work while investigating how we want to resolve this problem. This issue is tracking disabling the System.Data.SqlClient test projects from the project reference to package dependency conversion process so that we can re-enable it once the underlying problem is resolved. +8108 area-System.IO Implement File enumeration over WinRT "We are missing an implementation of FileSystem.EnumeratePaths and FileSystem.EnumerateFileSystemInfos on WinRTFileSystem. https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/WinRTFileSystem.cs#L231 This should be implemented by grabbing a StorageFolder for the path, then constructing a query and calling CreateFileQueryWithOptions. - Translate SearchOption into [FolderDepth](https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.search.queryoptions.folderdepth). - Split the searchPattern into `name` and `extension` - Set [ApplicationSearchFilter](https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.search.queryoptions.applicationsearchfilter.aspx) as `$""System.FileName:~\""{name}\""""` using [AQS](https://msdn.microsoft.com/en-us/library/windows/apps/bb266512.aspx) - Set [FileTypeFilter](https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.search.queryoptions.filetypefilter.aspx) as `extension`, if it exists. " +8110 area-System.Runtime Remove temporary project references in ref/System.Runtime.InteropServices.csproj The System.Runtime.InteropServices reference assembly contains temporary project references to the System.Runtime and System.Runtime.InteropServices.PInvoke reference assemblies. This is necessary because of the GCHandle move (see https://github.com/dotnet/corefx/pull/7900). +8113 area-System.Net SendAsync - System.Net.Http.HttpRequestException: Error while copying content to a stream "I have a quite critical issue with HttpContent disposing _just_ on linux. (under IIS 8.5 it's working fine) Tried with: coreclr 1.0.0-rc1-update1 and 1.0.0-rc1-update2 I made an action in an asp.net web api, and in that: ``` var uri = ""http://....""; content = new ByteArrayContent(new byte[0]); var requestMsg = new HttpRequestMessage(System.Net.Http.HttpMethod.Post, uri); requestMsg.Content = content; var client = new HttpClient(); var response = client.SendAsync(requestMsg, HttpCompletionOption.ResponseContentRead, System.Threading.CancellationToken.None).GetAwaiter().GetResult(); return Json(string.Empty); ``` If I start a load test on thin, then randomly get this error message: ``` Microsoft.AspNet.Server.Kestrel[13] An unhandled exception was thrown by the application. System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Http.ByteArrayContent'. at System.Net.Http.HttpContent.CheckDisposed() at System.Net.Http.HttpContent.CopyToAsync(Stream stream, TransportContext context) at System.Net.Http.CurlHandler.HttpContentAsyncStream.b__26_0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.CurlHandler.MultiAgent.TransferDataFromRequestStream(IntPtr buffer, Int32 length, EasyRequest easy) at System.Net.Http.CurlHandler.MultiAgent.CurlSendCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.Http.StreamToStreamCopy.d__0.MoveNext() --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at httptest.Controllers.ValuesController.Get() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNet.Mvc.Controllers.ControllerActionExecutor.ExecuteAsync(MethodInfo actionMethodInfo, Object instance, Object[] orderedActionArguments) at Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__53.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Routing.RouteCollection.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.IISPlatformHandler.IISPlatformHandlerMiddleware.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Hosting.Internal.HostingEngine.<>c__DisplayClass32_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Microsoft.AspNet.Server.Kestrel.Http.Frame.d__79.MoveNext() ``` I investigated it for several days. Finally I make a wrapper class for the ByteArrayContent: ``` public class SlambyByteArrayContent : ByteArrayContent { public SlambyByteArrayContent(byte[] content):base(content) { } protected override void Dispose(bool disposing) { //do nothing } public void DisposeManually(bool disposing) { base.Dispose(disposing); } } ``` And change my code to: ``` SlambyByteArrayContent content = null; try { var uri = ""http://....""; content = new SlambyByteArrayContent(new byte[0]); var requestMsg = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, uri + ""_stats""); requestMsg.Content = content; var client = new HttpClient(); var response = client.SendAsync(requestMsg, HttpCompletionOption.ResponseContentRead, System.Threading.CancellationToken.None).GetAwaiter().GetResult(); return Json(string.Empty); }finally { if (content != null) content.DisposeManually(true); } ``` Now it's working for my case but I think there must be some evil around the HttpContent disposing. " +8114 area-System.Text System.Text.Encoding and System.Text.Encoding.Extensions test duplication Currently, the System.Text.Encoding and System.Text.Encoding.Extensions test projects test the same things for the same classes - I.e. ASCIIEncoding, UT7Encoding, UTF32Encoding, UTD8Encoding and UnicodeEncoding. For Latin1Encoding, System.Text.Encoding.Extensions is the only one testing this class This means that there is lots of duplication between the test projects. Ideally, this should be fixed. There are some solutions: - Remove/combine the tests in System.Text.Encoding.Extensions to the new more modern System.Text.Encoding.Tests - Extract the current tests in System.Text.Encoding.Tests and System.Text.Encoding.Extensions to src/common/tests and reference the files in both projects - keep as is, and duplicate tests (not an ideal solution IMO) My preferred solution is to migrate the existing non-duplicated tests to System.Text.Encoding.Tests as that project is more modern. In terms of coverage loss, there wouldn't really be any, as the code is in mscorlib anyway. In fact, this could consolidate coverage even more by having he tests in one place. @tarekgh let me know what approach you think is the best and I'll work on it +8115 area-System.Net Refactor SafeFreeCredentials class Tracking issue to fix the following code smells [``SafeFreeCredentials`](https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/Unix/libssl/SecuritySafeHandles.cs#L62) class: ~~\* As pointed out in [the PR comments of #6469](https://github.com/dotnet/corefx/pull/6469#discussion_r56659315), this class needs to be split up into two separate classes~~ (via #8452) - Rework PAL to remove non- SafeHandle SafeHandles. (Source of this observation was [the PR Comments of #6469](https://github.com/dotnet/corefx/pull/6469#discussion_r56658414) ) +8117 area-System.Net NegotiateStreamTest For Unix relies on ManualSkip The current situation with running functional tests on Linux for `NegotiateStream` is suboptimal. Instead of using a `ConditionalFlag`, each test [checks if the installation is successful or not](https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs#L155) and bails out if it wasn't. This means that we cannot rely on the output of xunit to know if the test was successful or if it was skipped. This was written this way due to following orthogonal constraints: 1. Unlike other tests, the NegotiateStreamTests were expected to download and install the prereqs (This constraint is related to the infra team). 2. When the tests are run on a dev machine, the installation should be done only if the developer chooses to do so. 3. If the developer does not choose to download, install and configure KDC (presumably because he/she is not testing negotiatestream) the outerloop should not fail. 4. If the tests install anything, we need to uninstall them as well. In order to achieve 1 and 4, we need to use the XUnit's disposable fixture mechanism. But XUnit can only guarantee that the fixture instance is created before the any of the test is run. There are no documented relative ordering of - fixture instance creation - filtering of test cases Thus making it really tricky to achieve all the four requirements. +8119 area-System.Linq TryGetActionType and TryGetFuncType throw on some failures instead of returning false/null. If there are too many types, too few, or if one of the types is `ByRef` then these return false (with `null` to the `out` parameter) as expected. However, if the type list is null, contains null, contains a pointer type, or contains `typeof(void)`, they throw an exception, contrary to the `TryXXX` semantics. Throwing on null or containing null is perhaps defensible, but probably still incorrect. Throwing on pointer types and void less so. +8120 area-System.Linq Are types VBCallSiteDelegate0…7 missing? There's code in src/Common/src/System/Linq/Expressions/Compiler/DelegateHelpers.Generated.cs defining and using public types `VBCallSiteDelegate0` through `VBCallSiteDelegate7`. Because these are wrapped in `#if !FEATURE_COMPILE` they aren't active. Since however the compiler and interpreter used to be mutually exclusive, `!FEATURE_COMPILER` used to entail `FEATURE_INTERPRET` perhaps this should in fact be wrapped with `#if FEATURE_INTERPRET` and hence lit up? Has a type that was public in some contexts been removed due to this? CC @VSadov @bartdesmet +8121 area-System.Linq Expression.GetDelegateType works with pointer types for high arity but not for low. The following works: ``` C# Expression.GetDelegateType(Enumerable.Repeat(typeof(int).MakePointerType(), 18).ToArray()) ``` But the following throws `ArgumentException`: ``` C# Expression.GetDelegateType(Enumerable.Repeat(typeof(int).MakePointerType(), 17).ToArray()) ``` This is similar to (indeed, a variant of) #8074, but differs as while there the usefulness of lambda expressions that take pointer arguments is questionable, here the delegate could be used in a variety of ways that don't meet the same issues, so there's more value in making both work, rather than in making both throw. +8123 area-System.ComponentModel Allow DisplayAttribute on Class declarations Hello, I'd like you to consider allowing `DisplayAttribute` on class declarations. Forgive me if this is a duplicate, I haven't found anything related. Some use cases for it: - Auto-generate form captions - Auto-generate report captions - Use this information to extend nested property captions (like `Person.Details.Address` could get a label as `Personal info / Address`) - Auto-generate documentation (consuming `Description` and `Order` for example) - etc. +8124 area-System.Security Make System.Security.Cryptography.Native.dylib reference libcrypto/libssl via rpath The brew installed openssl has a library id of /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib, which doesn't seem to interact well with the macports installed version. For all the same reasons we make our libraries use an id with rpath we should use `install_name_tool –change` to rewrite these references post-link. +8126 area-System.Runtime Allow custom format strings for boolean values "This is moved from User Voice https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/5748267-allow-custom-format-strings-for-boolean-values?tracking_code=59376d71f1665e5476be1026a8c3318e I would like to be able to specify how string.Format displays the True and False values of Boolean variables. For example I would like the following C# snippet to output ""Boiler: On"" rather than ""Boiler: True"": bool boilerIsOn = true; Console.WriteLine(""Boiler: {0:On:Off}"", boilerIsOn ); " +8128 area-System.Net More HttpClient test fixes and additions - The GetAsync_ResponseWithSetCookieHeaders_AllCookiesRead test has been failing with some regularity in CI, with strange GatewayTimeout errors. I don't know why this particular test is so much more susceptible to that, but I've changed the test to use a local loopback server rather than an external site. - The SendAsync_ReadFromSlowStreamingServer_PartialDataReturned test was relying on timings from the server that might not always be correct, and due to internal differences between curl and WinHttp were very frequently wrong on Unix such that the test was disabled there. I reimplemented it with a local loopback server, too. - I've added another mini-stress test, with posts instead of gets. Fixes https://github.com/dotnet/corefx/issues/7234 Fixes https://github.com/dotnet/corefx/issues/4259 cc: @davidsh, @ericeil +8130 area-System.Reflection Comparing Reflection objects. We either need a story or decide we don't have a story. "This came up as an underlying issue in Issue #6857. Opening this as a Future issue to track. What's a developer to do if you need to compare two Reflection objects such as ParameterInfo for ""semantic equality""? On .NET Native, we actually did override Equals/GetHashCode on these objects and they perform semantic equality. However, .NET Native uses a completely different implementation of Reflection. On CoreClr, Reflection objects inherit the Object Equals() method, so those checks are just reference equality checks. They don't check semantic equality, but they often fool people into thinking they do because the CLR often caches Reflection objects for reuse. We probably don't want to make the caching 100% (unnecessary memory usage) but overriding Equals/GetHashCode may also have its costs (surface area compat? What about user-extended Reflection types if we ever support that?) " +8133 area-System.Runtime Add FormatterServices.GetUninitializedObject The current plan is to not support binary serialization **natively** in .NET Core, but we would like to enable the community and partners (e.g. distributed computing framework providers), and possibly our own out-of-band libraries (BinaryFromatter in a compatibility pack published to nuget) to implement something similar to what binary serialization is doing on top of .NET Core. So far, we identified a couple of enabler features that we do need to add to the core to make such out-of-band serializers possible: 1. FormatterServices.GetUninitializedObject 2. Exception.set_StackTrace This issue/request is to add these two asap. They are absolutely blocking and required. We might need more as we work with partners and community on enabling their scenarios. See the following issues for more context: #7938, #6564, +8135 area-System.Net Removed unsupported schemes from WebRequest.Create CoreFx doesn't support file: or ftp: schemes for WebRequest classes. However, those schemes were left in the source code when it was ported from .NET Framework. Removed the file: and ftp: schemes. Added tests. Fixes #7439. +8139 area-System.Reflection Handle projections for TypeSpecs in ResolveSignatureTypeKind Also add tests for all inputs to ResolveSignatureTypeKind Tracking TODO in code: https://source.dot.net/#System.Reflection.Metadata/System/Reflection/Metadata/Ecma335/MetadataReaderExtensions.cs,420 +8141 area-System.Diagnostics Missing DebuggingFlags on DebuggableAttribute Are there plan to add `DebuggingFlags` to System.Diagnostics.DebuggableAttribute? Especially since the constructor takes them as arguments, it seems natural that one could query it? +8142 area-System.Threading Add a way to wait for a Task without throwing and without allocating At the moment there does not seem to be ay direct API that you can use to wait for a task to complete without throwing in case the task completes cancelled or faulted. This forces using exceptions for control flow: ``` try { task.Wait(); } catch (AggEx) { } //Do nothing. ``` This is ugly and _very_ slow. Exceptions seem to cost ~0.1ms of CPU time to process. So if you are writing a port scanner using async IO you will find that you cannot scan more that 10k ports per second because the CPU is pegged from exception processing(!). Also, I don't know if exceptions scale across CPUs. I know that `ExceptionDispatchInfo` uses a global lock internally. So at least some of the processing does not scale at all. It might not be too common to have many faulted tasks. But it is more likely to rely on a greater number of cancelled tasks. I know of two workarounds: ``` Task.WhenAny(task); //params overload task.CW(() => { }, ExecuteSynchronously).Wait(); ``` Both allocate, add overhead and both make it unclear what you want to achieve. Please add a simpler and faster way to wait for a task to complete regardless of the terminal state it ends up in. The same problem exists with `await`. There is no direct way to wait for completion without throwing. Maybe `ConfigureAwait` can be extended with an `AwaitOptions` enum that has the values `IgnoreContext, NoThrow`. +8144 area-System.Net System.Net.Requests: Specify the capacity when creating the PrefixList Minor improvement: Specify the capacity when creating `WebRequest`'s `PrefixList` and reuse the same `HttpRequestCreator` instance for both http and https. As part of that, I added an explicit dependency on `System.Diagnostics.Debug`, so I could add a `Debug.Assert` (it was already being pulled in by other dependencies). While I was at it, I removed the dependency on `System.Diagnostics.Contracts` because it was only being used in one place and code contracts are not being maintained in .NET Core. I also made a few fields readonly, along with fixing the naming/capitalization of a couple parameters in the same class. cc: @davidsh, @stephentoub +8146 area-System.IO System.IO.Compression: Create ExtractToDirectory overload that accepts 'overwrite' boolean "Currently `ExtractToDirectory` is only useful if the target directory is virginal (eg clean or contains files which are not in the zip being extracted). If you're performing an extraction over an existing directory however, then the functionality is extremely limited because you will encounter the following example exception: > Exception calling ""ExtractToDirectory"" with ""2"" argument(s): ""The file 'D:\foo\bar.txt' already exists."" I would like to ask the developers to consider writing a new overload for the `ExtractToDirectory` method that includes an 'overwrite existing files' parameter. Many thanks. " +8150 area-System.Net Fix HttpRequestMessage.Version tests The current tests validating HTTP request message version were depending on a server behavior that is not guaranteed. In particular, HTTP RFC 7230 states that servers are NOT required to respond back with the same minor version if they support a higher minor version. In fact, the RFC states that servers SHOULD send back the highest minor version they support. So, testing the response version to see if the client sent a particular request version only works for some servers. In particular the 'Http2Servers' used in these tests seemed to echo the minor version of the request. However, depending on network configuration, intermediate proxies can change the HTTP version that ends up getting sent to the destination server. And as a result, we can have unpredictable behavior in these tests. To fix this, the tests were switched to use a loopback server that has deterministic behavior. +8153 area-System.Net Disable hanging OSX NetworkInformation test Based on my very basic investigation, it looks like the thread running CFRunLoopRun is not being terminated properly, which should happen after the only listener unsubscribes on the third line of the test case. I'll have to do more in-depth investigation with a local machine. +8154 area-System.IO System.IO.Tests.CreatedTests.FileSystemWatcher_Created_Negative is failing on OSX This has been failing periodically in some runs that I have looked at. For example: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/463/consoleFull http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/457/testReport/junit/System.IO.Tests/CreatedTests/FileSystemWatcher_Created_Negative/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/455/testReport/junit/System.IO.Tests/CreatedTests/FileSystemWatcher_Created_Negative/ +8158 area-System.Security Port S.S.C.ECDiffieHellman +8162 area-System.Console Console.Readline throws null reference exception following is the stack trace System.NullReferenceException: Object reference not set to an instance of an object. at System.ConsolePal.TryGetSpecialConsoleKey(Char[] givenChars, Int32 startIndex, Int32 endIndex, ConsoleKeyInfo& key, Int32& keyLength) at System.IO.StdInStreamReader.MapBufferToConsoleKey(ConsoleKey& key, Char& ch, Boolean& isShift, Boolean& isAlt, Boolean& isCtrl) at System.IO.StdInStreamReader.ReadKey(Boolean& previouslyProcessed) at System.IO.StdInStreamReader.ReadLine(Boolean consumeKeys) at System.IO.SyncTextReader.ReadLine() at System.Console.ReadLine() My scenario is following My command takes inputs from user interactively. When I give inputs interactively it works fine. But when I used expect,send to give inputs remotely, I got a null ref exception. from the diag logs of expect, I can see that send sends the input properly. Yet I got this exception. Can someone throw light what can be wrong? +8163 area-System.Net Avoid string allocations in Cookie.GetHashCode Previously, `Cookie.GetHashCode` implicitly allocated a new string (from `string.Concat`) every time it was called, in addition to a `params object[]` array and boxing the version. This PR changes its override of `GetHashCode` to match the one used by `Tuple` ([here](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Tuple.cs#L57)), and adds tests for the change. (Note that this could be considered a breaking change.) This leads to an about 8x speedup in the method. cc @stephentoub @davidsh +8165 area-System.Net HttpWebRequest/HttpClient with self-signed client certificate Is there a way to do a HttpWebRequest/HttpClient request with a self signed client certificate that is _not_ trusted by the OS (i.e. not stored as trusted root)? +8171 area-System.Net Cookies should use the Value property as opposed to field in constructor "This behavior seems somewhat unintuitive: ``` cs public static void Main() { var cookie = new Cookie(""name"", null); Console.WriteLine(cookie.Value == null); // -> True cookie.Value = null; Console.WriteLine(cookie.Value.Length == 0); // -> True } ``` The fix would be to change [this](https://github.com/dotnet/corefx/blob/master/src/System.Net.Primitives/src/System/Net/Cookie.cs#L106) line of `Cookie` to use the value property instead of field to set the value, since the property defaults to `string.Empty` if the parameter is null. cc @davidsh " +8173 area-System.IO Simpler way to specify leaveOpen in StreamWriter constructor Currently, the `StreamWriter` constructor has the following overloads: ``` c# public StreamWriter(Stream stream) public StreamWriter(Stream stream, Encoding encoding) public StreamWriter(Stream stream, Encoding encoding, int bufferSize) public StreamWriter(Stream stream, Encoding encoding, int bufferSize, bool leaveOpen) ``` I believe a relatively common need is to set `leaveOpen` to `true`, while keeping both `encoding` and `bufferSize` at their default values. But the process of doing that goes something like this: - Figure out there is no way to specify just `leaveOpen`. - From the documentation of `StreamWriter(Stream stream)`, figure out that the default encoding is UTF-8. (Though it doesn't mention it's actually UTF-8 _without BOM_.) - Either make a guess about what a good buffer size is, or look at the source code of `StreamWriter`. - Finally write `new StreamWriter(stream, Encoding.UTF8, 1024, true)`. I don't think that's acceptable, so I'm proposing to make `new StreamWriter(stream, leaveOpen: true)` work. I can see few options on how to do this: 1. Assuming optional arguments are okay (they probably aren't, see dotnet/corefx#470), make use of them by changing the full overload to: ``` c# public StreamWriter( Stream stream, Encoding encoding = null, int bufferSize = -1, bool leaveOpen = false) ``` This would require relaxing `encoding` and `bufferSize` to accept `null` and `-1`, respectively, but I think that's okay. I think this is the most convenient option, since it allows one to easily specify any combination of options. 2. Add a new constructor overload: ``` c# public StreamWriter(Stream stream, bool leaveOpen) ``` Adding some other overloads might make sense too. 3. Don't add anything, just relax `encoding` and `bufferSize` as in option 1. I think this is the most conservative option, but also least convenient, since it would require writing `new StreamWriter(stream, null, -1, true)`. +8175 area-System.Net Clean up ResponseStreamTest Used the MD5 hash verification when verifying correct response body dowload. Fixes #7885. +8176 area-System.Net Default credentials behavior different from .NET Framework "The following code doesn't work on .NET Core (CoreFx) but does work in .NET Framework: ``` c# string url = """"; var handler = new HttpClientHandler(); handler.UseDefaultCredentials = false; //this works on regular .net, does not work on .Net Core handler.Credentials = new CredentialWrapper { InnerCredentials = CredentialCache.DefaultCredentials }; var client = new HttpClient(handler); HttpResponseMessage response = await client.GetAsync(url); Assert.Equal(HttpStatusCode.OK, response.StatusCode); class CredentialWrapper : ICredentials { public ICredentials InnerCredentials { get; set; } public NetworkCredential GetCredential( Uri uri, String authType) { if (InnerCredentials != null) { return InnerCredentials.GetCredential(uri, authType); } else { return null; } } } ``` " +8177 area-System.Net Avoid race condition between queued HttpContent.CopyToAsync and request completion HttpContentAsyncStream is used by CurlHandler as the request content stream, with writes to it done via HttpContent.CopyToAsync. We expect the writes to all be asynchronous via WriteAsync. However, it's possible for an override of CopyToAsync to use Write, and if it does, and if we just delegated from Write(...) to WriteAsync(...).GetAwaiter().GetResult(), we would likely deadlock, as the CopyToAsync call is invoked from the single thread responsible for processing libcurl interactions, including supplying the reader that would unblock the writer. To handle this, we have two options: schedule the CopyToAsync to be invoked asynchronously just in case it does a synchronous write, or implement the write to buffer the data. The former is what was done in https://github.com/dotnet/corefx/pull/4095. It adds some cost to the expected / common case, but more importantly and worse it can also lead to concurrency problems and spurious exceptions, as for example if the request is faulted/canceled between the time that a task to invoke CopyToAsync is scheduled and the time that it actually executes, we could be invoking CopyToAsync on a disposed HttpContent; worse, we could end up invoking CopyToAsync while it's being disposed, which could lead to arbitrary state corruption, and which means we can't guard against this with checks to see if the task has already completed. The only way to fully guard against that is via a lock, but such a lock would itself lead to deadlocks, as the reader that would unblock the writer would have to take the same lock. In comparison, buffering has the downside of taking up more and arbitrary amounts of memory to store all of the input. But, we expect synchronous Writes to be rare, and code shouldn't be doing it anyway; if it does, the fix should really be to switch to asynchronous writes. This commit changes from the first approach to the second, using buffering in synchronous Write calls in order to ensure correctness and to optimize for the expected case. @mconnew, @roncain, this all originally started from https://github.com/dotnet/corefx/issues/4077. Is WCF still doing such synchronous writes as part of HttpContent.CopyToAsync? If so, is this change going to cause a problem for that? We're between a rock and a hard place given the design of HttpClient. Fixes https://github.com/dotnet/corefx/issues/8113 (I think; I couldn't actually reproduce it in the successful case mentioned) cc: @davidsh, @ericeil, @kapilash +8180 area-System.Globalization System.Globalization.Tests failed on Ubuntu16.04 "``` 12:19:16 System.Globalization.Tests.DateTimeFormatInfoGetDayName.GetDayName(format: DateTimeFormatInfo { AbbreviatedDayNames = [""Dim."", ""Lun."", ""Mar."", ""Mer."", ""Jeu."", ...], AbbreviatedMonthGenitiveNames = [""janv."", ""févr."", ""mars"", ""avr."", ""mai"", ...], AbbreviatedMonthNames = [""Janv."", ""Févr."", ""Mars"", ""Avr."", ""Mai"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... }, expected: [""dimanche"", ""lundi"", ""mardi"", ""mercredi"", ""jeudi"", ...]) [FAIL] 12:19:16 Assert.Equal() Failure 12:19:16 ↓ (pos 0) 12:19:16 Expected: dimanche 12:19:16 Actual: Dimanche 12:19:16 ↑ (pos 0) 12:19:16 Stack Trace: 12:19:16 at System.Globalization.Tests.DateTimeFormatInfoGetDayName.GetDayName(DateTimeFormatInfo format, String[] expected) 12:19:16 System.Globalization.Tests.DateTimeFormatInfoGetMonthName.GetMonthName(format: DateTimeFormatInfo { AbbreviatedDayNames = [""Dim."", ""Lun."", ""Mar."", ""Mer."", ""Jeu."", ...], AbbreviatedMonthGenitiveNames = [""janv."", ""févr."", ""mars"", ""avr."", ""mai"", ...], AbbreviatedMonthNames = [""Janv."", ""Févr."", ""Mars"", ""Avr."", ""Mai"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... }, expected: ["""", ""janvier"", ""février"", ""mars"", ""avril"", ...]) [FAIL] 12:19:16 Assert.Equal() Failure 12:19:16 ↓ (pos 0) 12:19:16 Expected: janvier 12:19:16 Actual: Janvier 12:19:16 ↑ (pos 0) 12:19:16 Stack Trace: 12:19:16 at System.Globalization.Tests.DateTimeFormatInfoGetMonthName.GetMonthName(DateTimeFormatInfo format, String[] expected) 12:19:16 System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3, 2], CurrencyNegativePattern = 9, ... }, expected: [3, 2]) [FAIL] 12:19:16 Assert.Equal() Failure 12:19:16 Expected: Int32[] [3, 2] 12:19:16 Actual: Int32[] [3] 12:19:16 Stack Trace: 12:19:16 at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(NumberFormatInfo format, Int32[] expected) 12:19:17 Finished: System.IO.Compression.ZipFile.Tests 12:19:17 12:19:17 === TEST EXECUTION SUMMARY === 12:19:17 System.IO.Compression.ZipFile.Tests Total: 24, Errors: 0, Failed: 0, Skipped: 0, Time: 2.360s 12:19:17 Finished: System.Globalization.Calendars.Tests 12:19:17 12:19:17 === TEST EXECUTION SUMMARY === 12:19:17 System.Globalization.Calendars.Tests Total: 2086, Errors: 0, Failed: 0, Skipped: 0, Time: 2.121s 12:19:17 System.Globalization.Tests.DateTimeFormatInfoGetAbbreviatedDayName.GetAbbreviatedDayName(info: DateTimeFormatInfo { AbbreviatedDayNames = [""Dim."", ""Lun."", ""Mar."", ""Mer."", ""Jeu."", ...], AbbreviatedMonthGenitiveNames = [""janv."", ""févr."", ""mars"", ""avr."", ""mai"", ...], AbbreviatedMonthNames = [""Janv."", ""Févr."", ""Mars"", ""Avr."", ""Mai"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... }, expected: [""dim."", ""lun."", ""mar."", ""mer."", ""jeu."", ...]) [FAIL] 12:19:17 Assert.Equal() Failure 12:19:17 ↓ (pos 0) 12:19:17 Expected: dim. 12:19:17 Actual: Dim. 12:19:17 ↑ (pos 0) 12:19:17 Stack Trace: 12:19:17 at System.Globalization.Tests.DateTimeFormatInfoGetAbbreviatedDayName.GetAbbreviatedDayName(DateTimeFormatInfo info, String[] expected) 12:19:17 System.Globalization.Tests.DateTimeFormatInfoGetAbbreviatedMonthName.GetAbbreviatedMonthName(info: DateTimeFormatInfo { AbbreviatedDayNames = [""Dim."", ""Lun."", ""Mar."", ""Mer."", ""Jeu."", ...], AbbreviatedMonthGenitiveNames = [""janv."", ""févr."", ""mars"", ""avr."", ""mai"", ...], AbbreviatedMonthNames = [""Janv."", ""Févr."", ""Mars"", ""Avr."", ""Mai"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { CalendarType = Localized, Eras = [...], IsReadOnly = False, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, MinSupportedDateTime = 0001-01-01T00:00:00.0000000, ... }, ... }, expected: ["""", ""janv."", ""févr."", ""mars"", ""avr."", ...]) [FAIL] 12:19:17 Assert.Equal() Failure 12:19:17 ↓ (pos 0) 12:19:17 Expected: janv. 12:19:17 Actual: Janv. 12:19:17 ↑ (pos 0) 12:19:17 Stack Trace: 12:19:17 at System.Globalization.Tests.DateTimeFormatInfoGetAbbreviatedMonthName.GetAbbreviatedMonthName(DateTimeFormatInfo info, String[] expected) 12:19:19 Discovered: System.Dynamic.Runtime.Tests 12:19:19 Starting: System.Dynamic.Runtime.Tests 12:19:20 Finished: System.Globalization.Tests ``` " +8181 area-System.Net System.Net.Http.Functional.Tests.HttpClientHandler test failed on Ubuntu16.04 ``` 12:38:02 System.Net.Http.Functional.Tests.HttpClientHandler_Timeouts_Test.ConnectTimeout_TimesOut_Throws [FAIL] 12:38:02 Assert.InRange() Failure 12:38:02 Range: (1 - 10000) 12:38:02 Actual: 100003 12:38:02 Stack Trace: 12:38:02 at System.Net.Http.Functional.Tests.HttpClientHandler_Timeouts_Test.<>c.<b__4_0>d.MoveNext() 12:38:02 --- End of stack trace from previous location where exception was thrown --- 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 12:38:02 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() 12:38:02 at System.Net.Http.Functional.Tests.LoopbackServer.<>c__DisplayClass0_0.<b__0>d.MoveNext() 12:38:02 --- End of stack trace from previous location where exception was thrown --- 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 12:38:02 at System.Net.Http.Functional.Tests.LoopbackServer.<>c__DisplayClass2_0.b__0(Task t) 12:38:02 at System.Threading.Tasks.Task.Execute() 12:38:02 --- End of stack trace from previous location where exception was thrown --- 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 12:38:02 at System.Net.Http.Functional.Tests.HttpClientHandler_Timeouts_Test.d__4.MoveNext() 12:38:02 --- End of stack trace from previous location where exception was thrown --- 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 12:38:02 --- End of stack trace from previous location where exception was thrown --- 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 12:38:02 --- End of stack trace from previous location where exception was thrown --- 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 12:38:02 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 12:38:02 Finished: System.Net.Http.Functional.Tests ``` +8182 area-System.Diagnostics System.Diagnostics.Tracing package version 4.1.0 contains version 4.0.20 reference assembly "I am trying to reference System.Diagnostics.Tracing version 4.1.0 from System.Net.Sockets, so I can use the new EventCounter type. I changed the project.json in src\System.Net.Sockets\src\win to include: ``` ""System.Diagnostics.Tracing"": ""4.1.0-rc3-24026-00"", ``` However, the build complains that EventCounter doesn't exist in any referenced assembly. If I open up the reference assembly: ``` packages/System.Diagnostics.Tracing\4.1.0-rc3-24026-00\ref\netstandard1.3\System.Diagnostics.Tracing.dll ``` ...in ILSpy, I see that the assembly version is *4.0.20.00,"" and that indeed it does not contain the EventCounter type. Why does the 4.1.0 package contain the 4.0.20 reference assembly? @ericstj, @vancem " +8183 area-System.Console Console.Write() doesn't show output until a newline "On RHEL 7, `Console.Write()`'s output does not get displayed until a newline is used (or the program exits). If you run the following application, you don't see anything as the output until 10 seconds have passed. Then all of ""HelloWorld!"" appears at once. ``` public static void Main(string[] args) { Console.Write(""Hello World""); Console.Out.Flush(); Task.Delay(10000).Wait(); Console.WriteLine(""!""); } ``` Console applications that do input/output may use a style like the following: ``` public static void Main(string[] args) { Console.Write(""Name: ""); var name = Console.ReadLine(); Console.WriteLine(""Your name is '"" + name + ""'.""); } ``` This doesn't work for me. You get no output at all at first. If you type in something (say ""Foo"") and hit ENTER, then you see all of the output at once: ``` Name: Foo Your name is 'Foo'. ``` If you don't hit enter, then it seems like the application has hung. A `Console.Out.Flush()` doesn't fix this, as in the following: ``` public static void Main(string[] args) { Console.Write(""Name: ""); Console.Out.Flush(); var name = Console.ReadLine(); Console.WriteLine(""Your name is '"" + name + ""'.""); } ``` I ran all the test cases while ssh'ed into the RHEL 7 VM. ``` $ dotnet --version 1.0.0-rc2-002538 ``` " +8186 area-System.Security Add support for opening a PFX with an ephemeral key Currently opening a PFX on Windows creates a temporary keyfile on disk which is deleted if the cert is disposed/finalized without being added to a cert store. While it might not be feasible to change the default to ephemeral, we should add the option to allow better guarantees against key-leak. (PKCS12_NO_PERSIST_KEY, Vista+) ## Rationale Currently .NET supports loading a PFX in two different key-persistence modes. The default mode, which I call perphemeral (a portmanteau of persistent and ephemeral), is to let the key file be created on disk, and then delete that file when the certificate is disposed. Alternatively, the PFX can be loaded with X509KeyStorageFlags.PersistKeySet, and then the key files will not be deleted upon certificate disposal. Both current modes have some pros and some cons: ### Persisted - Pro: You can add it to a persisted X509Store meaningfully. - Pro: new X509Certificate2(cert.Handle) has no surprises - Con: If you open a PFX persisted to add it to an X509Store, and detect the duplicate, you still have emitted the key. (Cleanup is possible, but hard to do correctly) - Con: If you meant to use the key ephemerally this leaks a file on disk every time you use it. ### Perphemeral (default) - Pro: If your application terminates normally, no net key material was leaked to disk. - Con: If you add a perphemeral cert to an X509Store the key file is still deleted, so while it is temporarily a public/private pair in the store it finishes as a public-only import. - Con: new X509Certificate2(cert.Handle) makes the cleanup hard to assess from a user perspective (it's stable, but hard to describe). - Con: If your application does not terminate normally (or it was held outside of the scope of finalization), the keyfile leaks as if you had opened it with PersistKeySet. - Con: Under parallel loads of the same PFX there's a if-available-use race condition (out of our reach) where two different objects were given the same backing keyfile; disposing one copy eliminates the keyfile of the other. When seeking ephemeral behavior (load from a PFX, do some signing/decrypting, dispose) it seems significantly better to just load it ephemerally. ### Ephemeral (new proposal) - Pro: No key material is ever written to disk (modulo the pagefile) so it can't create a persisted file under any circumstance. - Pro: Immune to parallel load race conditions - Pro: new X509Certificate2(cert.Handle) behaves just fine. - Con: Adding the cert to an X509Store may behave as adding the public key only. - Con: Existing interop code expecting to load the key name structure will fail. ## Proposed API: ``` diff public enum X509KeyStorageFlags { DefaultKeySet = 0, + EphemeralKeys = 32, Exportable = 4, MachineKeySet = 2, PersistKeySet = 16, UserKeySet = 1, UserProtected = 8, } ``` Opening an X509Certificate2 (or Importing into a collection) with both PersistKeySet and EphemeralKeySet defined will be an error. On Windows EphemeralKeySet will also force loading into CNG. On Unix this flag has no effect. Since the key handle is now actually owned by the native object, we need to track that dependency like an interior pointer. To that end, new public members have to be added into the CNG contract: ``` diff public abstract partial class SafeNCryptHandle : System.Runtime.InteropServices.SafeHandle { protected SafeNCryptHandle() : base (default(System.IntPtr), default(bool)) { } + protected SafeNCryptHandle(System.IntPtr handle, System.Runtime.InteropServices.SafeHandle parentHandle) : base (default(System.IntPtr), default(bool)) { } public override bool IsInvalid { get { return default(bool); } } protected override bool ReleaseHandle() { return default(bool); } protected abstract bool ReleaseNativeHandle(); } public sealed partial class SafeNCryptKeyHandle : Microsoft.Win32.SafeHandles.SafeNCryptHandle { public SafeNCryptKeyHandle() { } + public SafeNCryptKeyHandle(System.IntPtr handle, System.Runtime.InteropServices.SafeHandle parentHandle) : base (default(System.IntPtr), default(System.Runtime.InteropServices.SafeHandle)) { } protected override bool ReleaseNativeHandle() { return default(bool); } } ``` The parentHandle constructors of these SafeHandles will require that parentHandle be - Not null (ArgumentNullException) - Not IsClosed (ArgumentException) - Not IsInvalid (ArgumentException) otherwise, it will AddRef in the constructor and Release in ReleaseHandle. +8187 area-System.Security Add support for getting a private key handle with no UI prompting "Equivalently ""pass CRYPT_SILENT when opening the key handle"". While some apps may want to use that key and get the PIN/unprotect prompt, other contexts are headless and would rather opening the key just fail. We should add an overload to Get[Algorithm]PrivateKey which lets the caller suppress UI. " +8188 area-System.Data Are Query Notifications on the roadmap? It seems the System.Data.SqlClient does not include any of the query notification (SqlNotification or SqlDependency) classes. is this on the roadmap to be added? +8190 area-System.Linq Expression.Default() accepts null type. Attempting to use the expression (particularly, in compiling) will then result in NRE when that null type is used. Is there a back-compat issue in blocking this? (Anything one could reasonably have been using such an expression for?) Since fixing would involve an arg check, and fixing how #8081 applies to the same method, may be worth fixing together. +8194 area-System.Net Correctly annotate a stress test with HttpStressEnabled It's failed a few times in outerloop; we only want it enabled when we're doing a stress test and nothing else is running, as the time it takes can fluctuate if lots of other things are running. +8195 area-System.Net BeginConnectV6IPEndPointToV4Host_Fails failed in CI on Ubuntu http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/580/consoleText ``` System.Net.Sockets.Tests.DualMode.BeginConnectV6IPEndPointToV4Host_Fails [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: (No exception was thrown) Stack Trace: at System.Net.Sockets.Tests.DualMode.BeginConnectV6IPEndPointToV4Host_Fails() ``` +8196 area-System.Net Move Windows-specific Sockets initialization into SocketPal Fixes https://github.com/dotnet/corefx/issues/7849 cc: @ericeil, @cipop +8201 area-System.ComponentModel Reference Source repo: Resource string files missing The resource file [/src/System.ComponentModel.Annotations/src/Resources/Strings.resx](https://github.com/dotnet/corefx/blob/7965a9020fef095e2d2e3f5a6c543e455ce97c11/src/System.ComponentModel.Annotations/src/Resources/Strings.resx) is not part of [Microsoft/referencesource](https://github.com/Microsoft/referencesource) which [mono is using](https://github.com/mono/referencesource/tree/mono/System.ComponentModel.DataAnnotations/Resources). As a result validation results on mono have the resource names being returned instead of the actual validation message. Running the same code on Windows returns proper validation messages. +8203 area-System.Net Add DefaultCredentials scenario tests These tests require the client and server to be on a Windows Active Directory domain. These tests are Windows specific. Currently this cannot be done in the CI system. So, these tests are only enabled when an environment variable is set which points to the test server. There is a separate todo item #4989 to provide more automated scripts for setting up the test server. For now, there is a readme file with some details. These tests will help support fixes for #8176 and related bugs. +8206 area-System.Net Cookie: Set value to an empty string when null is passed in Addresses #8171 cc @davidsh @hughbe +8208 area-System.Net Fix System.Net.Primitives tests Clean up System.Net.Primitives unit and functional tests. Moved some functional tests to the unit tests projects since they are testing non-public methods. Change the `public` attribute on some of the CookieContainer` methods to match the public ref contract. This wasn't done properly when this code was first ported from .NET Framework to .NET Core. Some of the public methods are only public in Desktop and not Core. With these changes, the System.Net.Primitives tests can now build and run with `/p:BuildTestsAgainstPackages=true`. Fixes #7906. +8213 area-System.Reflection MethodBodyEncoderTests.FatBody test failed on OSX http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/604/consoleText ``` System.Reflection.Metadata.Ecma335.Tests.MethodBodyEncoderTests.FatBody [FAIL] Expected: 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2B, 0xFE Actual: 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xBD, 0xD2, 0x0B, 0x01, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x82, 0x71, 0xF1, 0x7F, 0x00, 0x00, 0xDB, 0x10, 0x28, 0x0C Differences: ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0xF8, ++> 0xBD, ++> 0xD2, ++> 0x0B, 0x01, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0xC0, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x05, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0x00, ++> 0xD8, ++> 0x82, ++> 0x71, ++> 0xF1, ++> 0x7F, ++> 0x00, ++> 0x00, ++> 0xDB, ++> 0x10, ++> 0x28, ++> 0x0C, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x01, --> 0x2B, --> 0xFE Expected: True Actual: False Stack Trace: at System.Reflection.Metadata.Tests.AssertEx.Equal[T](IEnumerable`1 expected, IEnumerable`1 actual, IEqualityComparer`1 comparer, String message, String itemSeparator, Func`2 itemInspector) at System.Reflection.Metadata.Ecma335.Tests.MethodBodyEncoderTests.FatBody() ``` +8214 area-Infrastructure Some csproj files still use DNXCore,Version=5.0 as the moniker The document for .NET Platform Standard says that `dnxcore` is deprecated, however it's still being used in a couple of `.csproj` files: https://github.com/dotnet/corefx/search?l=xml&q=DNXCore&utf8=%E2%9C%93 Not sure if this is intentional or not. cc @ericstj +8215 area-System.Net Remove TODO in HttpWebRequest RequestStream Changed the TODO to an Assert(). TryGetBuffer() should always succeed since the default MemoryStream() constructor is used and thus the buffer is always visible. Fixes #7890. +8219 area-System.Net Enable Channel Binding in Negotiate Stream for Unix. This is to track the Channel Binding support for NegotiateStream . +8220 area-System.Reflection Attribute.GetCustomAttributes does not resepct 'inherit' flag for non-RuntimeTypes. "The method `GetCustomAttributes` on `PropertyInfo` and `EventInfo` ignores the `inherit` parameter, which is mentioned in the documentation. Instead one is supposed to use the `Attribute.GetCustomAttributes` method to get attributes in the inheritance chain. The problem is that this method only walks the inheritance chain if the type of the `PropertyInfo` (or rather the `MethodInfo` returned from `GetAccessors()` in the case of a property) is an instance of `RuntimePropertyInfo` (or `RuntimeMethodInfo`). This means that for any custom implementation of a `MemberInfo`, such as those provided from `CustomReflectionContext`, there is no way to get the attributes in the inheritance chain in a transparent way, regardless of the implementation of the `MemberInfo` in question. Suggest that the implementation of `Attribute.GetCustomAttributes()` is changed so that it works regardless of the underlying implementation of the `MemberInfo` provided. A sample program illustrating the issue: ```c# [AttributeUsage(AttributeTargets.All, Inherited = true)] public sealed class TestAttribute : Attribute { } class A { [Test] public virtual object MyProp { get; set; } } class B : A { public override object MyProp { get; set; } } class MyReflectionContext : CustomReflectionContext { } class Program { static void Main(string[] args) { PropertyInfo propertyInfo = typeof(B).GetProperty(""MyProp""); var attrs1 = propertyInfo.GetCustomAttributes(true); var attrs2 = Attribute.GetCustomAttributes(propertyInfo, true); MyReflectionContext ctx = new MyReflectionContext(); propertyInfo = ctx.MapType(typeof(B).GetTypeInfo()).GetProperty(""MyProp""); var attrs3 = propertyInfo.GetCustomAttributes(true); var attrs4 = Attribute.GetCustomAttributes(propertyInfo, true); Console.WriteLine(attrs1.Length); // Returns 0 - As expected Console.WriteLine(attrs2.Length); // Returns 1 - As expected Console.WriteLine(attrs3.Length); // Returns 0 - As epected Console.WriteLine(attrs4.Length); // Returns 0 - We want 1 here! } } ``` " +8221 area-System.Net Implement server-side of NegotiateStream on Unix We currently only support the client side. +8223 area-System.Diagnostics Can we make EventCounter work in NetStandard 1.3? Currently EventCounter is only available in NetStandard 1.5. This makes it unavailable to many (most?) CoreFx implementation assemblies. We'd like to use EventCounter in System.Net.Sockets, but it must remain on NetStandard 1.3 (see #7833). We should consider making EventCounter available on 1.3, if possible. +8226 area-System.Runtime StringBuilder.AppendFormat additional pre-checks. Split from #1514 [AppendFormatHelper](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Text/StringBuilder.cs/#L1285) It maybe beneficial to do extra checks before actually generating the output. [Approximation Routine](https://gist.github.com/AdamSpeight2008/ef6834483148afcac59234eef36ef36f) _Note: this is rough coding._ This gets us - the number of argholes (`{0}`) - If this is zero, we could just return the original format string. - the approximate length of the output. - we can pre-size the output, reducing the number of resizes and copying - Is the format string structurally sound. (Excluding `IFormatable` errors) - If it is likely to throw an error. Don't generate the output. +8228 area-Infrastructure Update CI to Debian 8.4 1. We should update CI infra to Debian 8.4 (https://www.debian.org/News/2016/20160402) 2. Also please review the RID graph entries for Debian 8.2+ (8.3, 8.4) so there are no issues for users on newer Debian 8 patch levels +8230 area-Meta CoreRun of Xunit.Console.Netcore causes terminal to stop responding to certain inputs on OSX "When running individual CoreFX test cases on OSX (using vanilla corefx fetched this morning), every time I run Xunit.Console.Netcore.exe using corerun my terminal is never the same after. Observations: - You have to actually run tests to get the repro (just running ./corerun xunit.console.netcore.exe doesn't repro) - Running ""reset"" solves this temporarily. Some keys this takes away (not exhaustive list) - Period - Num keys - dash and + (but not _ and =) " +8231 area-System.IO FileSystemWatcher fixes and test changes Fixes to FileSystemWatcher tests to increase their reliability. - Filtering on the OSX FileSystemWatcher was letting through events that should have been filtered out due to the passed NotifyFilters. The first commit fixes this. - Reworks the FSW tests to be 100% passing. - Adds path validation to most tests. - Adds a Retry mechanism to handle expected intermittent failures due to untrustworthy underlying API calls. The tests pass without it but it's a good fallback in case the CI gets bogged down and our tests start failing due to expired wait times. - Adds more test cases to NotifyFilter and splits existing tests into separate dir/file tests to cover either behavior. resolves #1165 resolves #1657 resolves #2011 resolves #2684 resolves #3215 resolves #3630 resolves #4916 resolves #5306 resolves #6226 resolves #6241 resolves #6732 resolves #7002 resolves #8023 resolves #8024 resolves #8154 +8234 area-Meta Ubuntu support needs to be better "I'm sure this seems like a nuisance ticket, but it's hard to gauge the level of interest in solving concerns I've seen brought up by others over the .NET experience on Ubuntu. There are a few top-level issues at the moment, immediately apparent by the current install instructions: ![image](https://cloud.githubusercontent.com/assets/115199/14971129/198149e8-1095-11e6-913f-3d58e3e6011a.png) 1. The current instructions to install .NET on Ubuntu are second-rate. The big issue here is that you are requiring additional steps when they could be avoided. If you examine Chrome and other debian packages, they are able to provide a PPA configuration without making you drop to the command line. You can consider this on par with an MSI installer: ![image](https://cloud.githubusercontent.com/assets/115199/14971157/597c511e-1095-11e6-819f-f40a604cf269.png) This entry, as viewed in the ""Software Sources"" app in Ubuntu did not require me to do anything except add the `.deb` found [here](https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb). It's also worth noting that using a PPA also avoids the need to make people do things with keys. 2. Only supporting 14.04. We're coming up to a month with 16.04. If the current build system cannot even support getting 14.10, 15.04 and 15.10 over the last 2 years, something has been seriously overlooked. At the very least, this is a problem you shouldn't be carrying into a 1.0 release. 3. ""Feeds"". Really, you can just package all the versions you want in a single feed and have a metapackage that points to the most current version. As you can see, there are a few things that can be done to reduce the number of touchpoints for an Ubuntu developer as well as increasing the likelihood that they can run this wonderful new platform with confidence. Having a first-rate install experience on Windows is great, but always allowing Linux to lag risks sending a message of what to expect in the future. " +8235 area-System.Net HttpClient does not support IPv6 with scope ID on Mac or Linux **Repro Steps** 1. Start an HTTP server on an IPv6 address with a scope ID. An example is the link-local address provided by running `ifconfig`. 2. Run `curl` to verify the server is working. 2a. On Mac, I needed to wrap the IPv6 address with brackets, and escape the `%` as `%25`. For example: `curl http://[fe80::blah%25en0]:1234/`. 2b. On Linux, I needed to _not_ wrap with brackets, and _not_ escape the `%`. For example: `curl http://fe80::blah%eth0:1234/`. 3. Call `new HttpClient().GetAsync()` using the same URL you passed to curl. **Expected** HttpClient works the same as curl itself. **Actual** HttpClient fails with an error like `System.Net.Http.CurlException: Couldn't connect to server` or `System.UriFormatException: Invalid URI`. **Notes** I tested many combinations of with/without brackets and with/without `%` encoded as `%25`, but none of them worked. HttpClient on Windows does work correctly with IPv6 scope ID (tested with brackets and without encoding `%`). Documentation for IPv6 scope ID support in Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/aa385325(v=vs.85).aspx **Curl Versions** Mac ``` curl 7.37.1 (x86_64-apple-darwin14.0) libcurl/7.37.1 SecureTransport zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz ``` Linux ``` curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP ``` +8236 area-System.Net Better perf/readability improvements for UrlEncode and UrlEncodeToBytes Changes: - `UrlEncode` - Instead of maintaining two separate counters for spaces and safe chars, combine them into one variable, `unexpandedCount`. Keep a `foundSpaces` bool around so we can short-circuit. - Removed the Hungarian notation-style prefix. - Assigned the result of `GetByteCount` directly into a variable, so we don't have to subtract from it and then add to it `unexpandedCount` again while getting the length of the array. - `UrlEncodeToBytes` - Removed Hungarian notation, unnecessary counter variable again. - Removed unnecessary branch in the case where there's nothing to encode; `Buffer.BlockCopy` works just fine, and is faster than `Array.Clone`. - [Benchmark to back this up](https://gist.github.com/jamesqo/25a4d0878fc24c2a7a6ae47a670628b5) - [Results](https://gist.github.com/jamesqo/ca74b20d0992b46c1772d35fc7a22f17) cc @hughbe @davidsh @stephentoub +8237 area-System.Net Incorporating SSH client lib in corefx? Given .Net is cross platform now, and in the *nix world SSH (server and client) is used everywhere, should we add basic SSH functionalities into corefx? For managed implementation we can reference: https://github.com/sshnet/SSH.NET For native maybe we can borrow something from PowerShell team? https://github.com/PowerShell/Win32-OpenSSH Thoughts? +8238 area-Serialization `System.Xml.XmlSerializer` cannot serialize `System.Nullable` as attribute ``` System.InvalidOperationException occurred HResult=-2146233079 Message=Cannot serialize member 'ResX' of type System.Nullable`1[System.Double]. XmlAttribute/XmlText cannot be used to encode complex types. Source=System.Xml.XmlSerializer StackTrace: at System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String ns, Type choiceIdentifierType, Boolean rpc, Boolean openModel, RecursionLimiter limiter) InnerException: ``` +8242 area-System.Globalization Inconsistencies in IdnMapping on Unix and Windows Originally, some of these were found in #7921 and I found more inconsistencies in #8224 so its worth creating a new issue and closing the old one that diagnosed the problems as with Uri.GetComponents. ## GetAscii - uppercase ASCII chars (e.g. `A, B, C`) - Windows behaviour: returns the uppercase chars - Unix behaviour: returns the lowercase chars ## GetAscii - single dash (e.g. `-`) - Windows behaviour: returns the original string - Unix behaviour: throws an `ArgumentException` ## GetAscii - single full stop (e.g. `.`) - Windows behaviour: throws an `ArgumentException` - Mac OSX behaviour: throws an `ArgumentException` - Unix behaviour: returns the original string ## GetUnicode - invalid punycode (e.g. `xn--\u1234pck`) - Windows behaviour: returns the original string - Unix behaviour: returns `ఽూ` /cc @ellismg @tarekgh +8249 area-System.Net Ensure CurlHandler includes IPv6 scope IDs in Urls when applicable Uri.AbsoluteUri omits the scope ID if present. Switch to using GetComponents with SerializationInfoString. (I'll add a test as a follow-up; I need to figure out how to use NetworkInformation to get a link-local address with a scope ID.) Fixes #8235 cc: @davidsh, @ericeil, @mikeharder +8262 area-System.ComponentModel TypeDescriptor APIs Hi there, I was wondering what the status of the `TypeDescriptor` API is. Currently I am using `TypeDescriptor.AddAttributes()` but unfortunately this is not available on .NET Core. Is there any equivalent available or a timeline when this API will be ported? Thanks in advance. +8264 area-System.Security Remove bcrypt exceptions from Algorithms.dll once buildtools is updated Remove the bcrypt exceptions once we get a version of buildtools with dotnet/buildtools#691. +8274 area-System.Net System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingChunkedEncoding_Success failed in CI Happened in a Windows Debug PR test. See: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/796/ +8280 area-Infrastructure Install cmake on Win10 images in CI We started building native libs on windows with clrcompression.dll. +8288 area-System.Console [.NET Framework] Console.CancelKeyPress fails to hook Ctrl+C on subsequent registrations "Moved from https://github.com/dotnet/coreclr/issues/892 The Console.CancelKeyPress event handler code doesn't call ControlCHooker.Hook in the follow sequence of events: ``` csharp Console.CancelKeyPress += SomeHandler; Console.CancelKeyPress -= SomeHandler; Console.CancelKeyPress += SomeHandler; // doesn't call _hooker.Hook(); ``` It looks like a fairly trivial issue in the event registration/unregistration implementation: ``` csharp public static event ConsoleCancelEventHandler CancelKeyPress { [System.Security.SecuritySafeCritical] // auto-generated add { new UIPermission(UIPermissionWindow.SafeTopLevelWindows).Demand(); lock(InternalSyncObject) { // Add this delegate to the pile. _cancelCallbacks += value; // If we haven't registered our control-C handler, do it. // NOTE: _hooker will be instantiated but unhooked on the second registration. if (_hooker == null) { _hooker = new ControlCHooker(); _hooker.Hook(); } } } [System.Security.SecuritySafeCritical] // auto-generated remove { new UIPermission(UIPermissionWindow.SafeTopLevelWindows).Demand(); lock(InternalSyncObject) { // If count was 0, call SetConsoleCtrlEvent to remove cb. _cancelCallbacks -= value; Contract.Assert(_cancelCallbacks == null || _cancelCallbacks.GetInvocationList().Length > 0, ""Teach Console::CancelKeyPress to handle a non-null but empty list of callbacks""); if (_hooker != null && _cancelCallbacks == null) _hooker.Unhook(); } } } ``` " +8291 area-Infrastructure "Win7 CoreFX build/testing failing: ""Unable to load DLL""" "I've followed the instructions at https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md on a Windows 7 machine. I'm getting the following error when running the `.\build` command: ``` ""C:\corefx\build.proj"" (default target) (1) -> ""C:\corefx\src\tests.builds"" (BuildAndTest target) (494) -> ""C:\corefx\src\System.Xml.XDocument\tests\System.Xml.XDocument.Tests.builds"" (BuildAndTest target) (750) -> ""C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj"" (BuildAndTest target) (769) -> C:\corefx\Tools\tests.targets(190,5): error MSB4018: The ""GetTargetMachineInfo"" task failed unexpectedly.\r [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-sysinfo-l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)\r [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo)\r [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture()\r [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.GetTargetMachineInfo.Execute()\r [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()\r [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() [C:\corefx\src\System.Xml.XDocument\tests\TreeManipulation\System.Xml.XDocument.TreeManipulation.Tests.csproj] ""C:\corefx\build.proj"" (default target) (1) -> ""C:\corefx\src\tests.builds"" (BuildAndTest target) (494) -> ""C:\corefx\src\System.Xml.XDocument\tests\System.Xml.XDocument.Tests.builds"" (BuildAndTest target) (750) -> ""C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj"" (BuildAndTest target) (768) -> C:\corefx\Tools\tests.targets(190,5): error MSB4018: The ""GetTargetMachineInfo"" task failed unexpectedly.\r [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-sysinfo-l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)\r [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo)\r [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture()\r [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.GetTargetMachineInfo.Execute()\r [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()\r [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] C:\corefx\Tools\tests.targets(190,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() [C:\corefx\src\System.Xml.XDocument\tests\Streaming\System.Xml.XDocument.Streaming.Tests.csproj] 15 Warning(s) 160 Error(s) ``` [msbuild.log.txt](https://github.com/dotnet/corefx/files/249606/msbuild.log.txt) " +8297 area-System.Net LinuxNetworkInterface Id and Description implementation Currently NetworkInterface Id and Description throw PlatformNotSupportedException on Linux. I'd like to propose the following: Id returns _name Description returns _name The linux kernel does not grantee a network interface will have the same name after reboot but it can be done by using [udev](http://www.debianhelp.co.uk/udev.htm) or [systemd](https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/). +8307 area-Infrastructure Cross building much slower with new universal runner infrastructure. "As part of adopting the universal runners, we need to copy the entire packages folder from the builder machines to the test executor machines when we have to build managed code on Linux but test it on windows. Previously, the amount of data we needed to copy was on the order of 130 MB (this was the entire ""bin"" folder, de-duplicated in a zip file, via Packer). After the changes to also include the packages folder, we've grown to about 630 MB. We should figure out how to shrink this amount of data. I expect there is low-hanging fruit here (e.g. we are archiving all the nupkg's we downloaded, which we don't need? This removes about 300 MB from the compressed archive if we stop that). " +8311 area-System.Net Any plans to include NetworkAvailabilityChanged We use this event off `NetworkChange`, Portability Analyzer says NetworkChange is available but not that event. Any plans to bring this in for 1.0.0? +8315 area-System.Linq Consider adding System.Linq.Expressions into Standard Library Currently System.Linq.Expressions is not included in the .NETStandard.Library. While it's true that some cases might fallback to interpretation, there does seem to be an implementation that works everywhere. Even Xamarin.iOS had a solution to this (might be interpretation as well). +8319 area-System.IO Modify Path.Combine to not treat slashes as roots Path.Combine on all systems treats directory separators as the root. This is somewhat unexpected behavior on Windows and unhelpful on Unix. This commit changes the behaviors of all systems for path.Combine with path segments that begin with a DirectorySeparator and adds tests for the new behavior. No changes were made to invalid char checking. This is a breaking change. We should either merge this to resolve #7685 or close both by the RTM deadline. @JeremyKuhne @stephentoub @sokket +8320 area-System.Net Every time System.Net.Security\tests\FunctionalTests runs, some disk space gets eaten up permanently. "Every time System.Net.Security\tests\FunctionalTests runs, some disk space gets eaten up permanently. (That means every time people type ""build"" at the root.) To observe: ``` cd %APPDATA%\Roaming\Microsoft\Crypto\RSA cd S-1-5-21-2127521184-1604012920-1887927527-47149 // except yours will have different numbers: it's your user SID dir /A // Remember the number of files here. msbuild -t:clean;build;test System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj dir /A // Note now that a dozen or so around new files have appeared. This is happening every time // people type ""build"" at the root as our nice documentation says. ``` This is because the test loads up and imports certificates from PFX files. https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/tests/FunctionalTests/TestConfiguration.cs#L58 Each time you call ""new X509Certificate2()"" or ""X509Certificate2Collection.Import()"" on a PFX file, a new key container is created on disk. To get rid of it, you need to call Dispose() on the X509Certificate2 you instantiated and/or the members of the X509Certificate2Collection you imported into. You cannot rely on the finalizer because process shutdown doesn't always wait for the finalizers to run. It would be preferable if each test created a new certificate instance and disposed it manually rather than caching these in the test class instance. See this commit (https://github.com/dotnet/corefx/commit/c0afa93132e2f13f403b26ea742c292e55e888c1) for how we fixed this in the X509 tests. If you can't get to this for a while, as a min-bar, please mark the tests that trigger PFX loads with the ""[Outerloop]"" attribute so they don't run on individual dev machines by default. " +8324 area-System.Linq Two PLINQ tests consistently fail on 6 core HT Xeon machine "I have a particular machine with a 6 core (Hyperthreaded to 12) CPU Xeon processor. On this machine both in Windows and an ubuntu VM, I see the following two tests always fail in System.Linq.Parallel tests: ``` ``` As this is the only machine like this I have like this, internal folks can stop by my office to investigate if needed. " +8328 area-Serialization Fix XmlAttributes.Remove behavior difference - The issue is due to implementation difference XmlAttributes.Remove throws on Desktop if item is not found whereas there is no exception on CoreCLR. - Since we don't want to update XmlAttributes back to legacy type CollectionBase, I'm changing these XmlAttributes type to derive from generic List<> and override Remove() method to throw on missing item. - Fix #5831 and also #7837 cc: @SGuyGe @zhenlan @shmao +8330 area-System.Net Uri known issues - [ ] Uri should not throw ArgumentOutOfRangeException for unknown schemes. - [ ] Normalization should produce the same result for escaped/unescaped URIs - [ ] Canonical IPv6 is still performed for unknown schemes. - [ ] IPAddrees doesn't accept bad scopes, Uri does. +8331 area-System.Net Porting System.Private.Uri tests Porting existing internal tests to GitHub. Porting new Unit Tests to GitHub. Fixing a production-code bug discovered by the UnitTests. Code format + sanitize Fixes #6580. @davidsh @ianhays @stephentoub @weshaggard PTAL +8337 area-Infrastructure "Centos tests are failing with ""Permission denied"":" "*NIX tests are failing with ""Permission denied"": http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/932/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/929/ ``` 17:06:35 Finished running tests. End time=00:08:09. Return value was 126 17:06:35 ./RunTests.sh: line 199: ./corerun: Permission denied 17:06:35 error: One or more tests failed while running tests from ''. Exit code 126. 17:06:35 Running tests... Start time: 00:08:09 17:06:35 Commands: 17:06:35 ./corerun xunit.console.netcore.exe System.Net.Security.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 17:06:35 ./RunTests.sh: line 199: ./corerun: Permission denied 17:06:35 Finished running tests. End time=00:08:09. Return value was 126 17:06:35 error: One or more tests failed while running tests from ''. Exit code 126. 17:06:35 Finished running tests. End time=00:08:09. Return value was 126 17:06:35 error: One or more tests failed while running tests from ''. Exit code 126. 17:06:35 145 test(s) failed ``` " +8353 area-System.Runtime Consider adding UnixTime support to DateTime and DateTimeOffset "One of the big reasons to use dotnetcore is to be able to run on Linux. Please consider adding functions to output datetime to epoch format which is the standard on Linux environments. These suggestions may be a little off but they seem to make sense to me. Add a UnixTime DateTimeKind enum value https://msdn.microsoft.com/en-us/library/shx7s921(v=vs.110).aspx DateTimeOffset can output in unix time using a special function already https://msdn.microsoft.com/en-us/library/system.datetimeoffset.tounixtimeseconds(v=vs.110).aspx But it has no constructor allowing you to initialize a DateTimeOffset from an int64 and DateTimeKind enum. Consider adding this https://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=vs.110).aspx DateTime has a constuctor taking int64 and DateTimeKind, but the int64 represents ticks instead of seconds. Consider setting the behavior for DateTime(int64, DateTimeKind (of UnixTime)) to initialize a DateTime using int64 as seconds instead of ticks, or add a FromUnixTime(int64 seconds) method if you don't want to confuse the payload of the int64 parameter. https://msdn.microsoft.com/en-us/library/w0d47c9c(v=vs.110).aspx. Consider adding a ToUnixTime method to the DateTime structure. Consider adding support for an ""e"" string in ToString, for epoch format, https://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=vs.110).aspx " +8355 area-System.IO Unix Pipes temp directory creation has ACL issues for multi users. When the pipes code creates the temporary directory (/tmp/.dotnet/corefx) it will create the directories with 700 permissions if they are missing. Once this is done, no other user can use this name. This breaks cases where you run dotnet apps as two different users (a common case would be you run one app as root and then another as your local user. If the root one runs first, you can no longer use pipes). Perhaps we need to scope stuff in /tmp based on the current UID? +8356 area-System.Net Assertion in TryPreprocessIPv6Address within the *NIX IPAddressPAL Repro test: System.PrivateUri.Tests.UriIpHostTest.UriIPv6Host_BadAddresses_AllFail() From http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/823/testReport/junit/System.PrivateUri.Tests/UriIpHostTest/UriIPv6Host_BadAddresses_AllFail/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/823/ ``` MESSAGE: System.Diagnostics.Debug+DebugAssertException : at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition) at System.Net.IPAddressPal.TryPreprocessIPv6Address(String input, String& host, String& port) at System.Net.IPAddressPal.Ipv6StringToAddress(String ipString, Byte[] bytes, UInt32& scope) at System.Net.IPAddressParser.Parse(String ipString, Boolean tryParse) at System.Net.IPAddress.TryParse(String ipString, IPAddress& address) at System.PrivateUri.Tests.UriIpHostTest.ParseBadIPv6Address(String badIpv6String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv6Host_BadAddresses_AllFail() at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.b__45_0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestRunner`1.d__43.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestRunner`1.RunAsync() at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCaseRunner`1.RunAsync() at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunAsync() at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunAsync() at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunAsync() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) at System.Threading.Tasks.Task.Execute() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition) at System.Net.IPAddressPal.TryPreprocessIPv6Address(String input, String& host, String& port) at System.Net.IPAddressPal.Ipv6StringToAddress(String ipString, Byte[] bytes, UInt32& scope) at System.Net.IPAddressParser.Parse(String ipString, Boolean tryParse) at System.Net.IPAddress.TryParse(String ipString, IPAddress& address) at System.PrivateUri.Tests.UriIpHostTest.ParseBadIPv6Address(String badIpv6String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv6Host_BadAddresses_AllFail() ``` +8357 area-System.IO Make win8 ARM clrcompression pkg win7-arm is not a valid RID. This commit removes that package and replaces it with an equivalent win8-arm package. resolves #7436 @weshaggard @ericstj +8358 area-System.IO Expose Stream.Begin/EndRead/Write in System.IO contract We really want devs to use Stream.Read/WriteAsync, but not having these Begin/End methods exposed breaks portability scenarios, e.g. where a stream in the full framework wraps another stream (e.g. SslStream) and the wrapper's async implementation wraps the Begin/End methods on the underlying Stream. Without these Begin/End members in the contract, it's impossible for a portable Stream implementation to plug in to that wrapper correctly. The core work here (for RTM) is to: - Expose the Begin/EndRead/Write virtual methods in the contract - Fix all of our Stream implementations in corefx to override these. In some cases, the methods already exist and we just need to change them from internal methods to public overrides. In other cases, we need to implement them and can do so easily on top of the Read/WriteAsync implementations. After that, we can optionally consider: - Changing the base Stream.Begin/EndRead/Write implementation to check if ReadAsync/WriteAsync are overridden, and if they are, delegating to those instead of queueing a work item that invokes the synchronous Read/Write. There are potential issues here, though, e.g. if a Stream overrides ReadAsync/WriteAsync to delegate to Begin/End which it doesn't override, at which point they'll end up in an infinite redirection loop. There may be ways to mitigate that. If we added that, we need a similar change (under a quirk) in the full framework. cc: @weshaggard, @terrajobst, @KrzysztofCwalina, @davidfowl, @benaadams +8359 area-System.ComponentModel Use generic collections in System.ComponentModel.TypeConverter implementation instead of non-generic +8360 area-System.Net IPAddress.ToString behavior difference: IPv6-mapped addresses format as regular IPv6 addresses From http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/823/testReport/junit/System.PrivateUri.Tests/UriIpHostTest/UriIPv6Host_EmbeddedIPv4_Success/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/823/ ``` MESSAGE: Assert.Equal() Failure ↓ (pos 10) Expected: [::ffff:0:c0a8:1] Actual: [::ffff:0:192.168.0.1] ↑ (pos 10) +++++++++++++++++++ STACK TRACE: at System.PrivateUri.Tests.UriIpHostTest.ParseIPv6Address(String ipv6String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv6Host_EmbeddedIPv4_Success() ``` +8361 area-System.Net IPAddress.Parse behavior difference: failure to reject many bad IP address strings. System.PrivateUri.Tests.UriIpHostTest.UriIPv4Host_BadAddresses_AllFail From: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/823/testReport/junit/System.PrivateUri.Tests/UriIpHostTest/UriIPv4Host_BadAddresses_AllFail/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/823/ ``` MESSAGE: 127.0.0.1 \nExpected: False\nActual: True +++++++++++++++++++ STACK TRACE: at System.PrivateUri.Tests.UriIpHostTest.ParseBadIPv4Address(String badIpv4String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv4Host_BadAddresses_AllFail() ``` +8362 area-System.Net IPAddress.TryParse behavior difference: dotted octal In OSX _only_ there are 3 tests failing for the dotted octal IP format: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/867/ - [ ] UriIPv4Host_DottedOctalExtraLeadingZeros_Success ``` Assert.Equal() Failure\n ↓ (pos 0)\nExpected: 235.73.31.33\nActual: 157.59.25.27\n ↑ (pos 0) +++++++++++++++++++ STACK TRACE: at System.PrivateUri.Tests.UriIpHostTest.ParseIPv4Address(String ipv4String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv4Host_DottedOctalExtraLeadingZeros_Success() ``` - [ ] UriIPv4Host_PartialOctal_Success ``` MESSAGE: Assert.Equal() Failure\n ↓ (pos 10)\nExpected: 157.59.25.33\nActual: 157.59.25.27\n ↑ (pos 10) +++++++++++++++++++ STACK TRACE: at System.PrivateUri.Tests.UriIpHostTest.ParseIPv4Address(String ipv4String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv4Host_PartialOctal_Success() ``` - [ ] UriIPv4Host_DottedOctal_Success ``` MESSAGE: Assert.Equal() Failure\n ↓ (pos 0)\nExpected: 235.73.31.33\nActual: 157.59.25.27\n ↑ (pos 0) +++++++++++++++++++ STACK TRACE: at System.PrivateUri.Tests.UriIpHostTest.ParseIPv4Address(String ipv4String) at System.PrivateUri.Tests.UriIpHostTest.UriIPv4Host_DottedOctal_Success() ``` +8366 area-System.Net System.Net.Http.Functional.Tests RevokedCertificate 2 tests fail Failures on Ubuntu: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/854/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/854/ Failures on Centos: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_tst_prtest/861/consoleFull#6262143651f1a4601-6aec-4fd5-b678-78d4389fd5e8 ``` MESSAGE: Assert.Throws() Failure Expected: typeof(System.Net.Http.HttpRequestException) Actual: typeof(System.Threading.Tasks.TaskCanceledException): A task was canceled. +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` ``` MESSAGE: System.Threading.Tasks.TaskCanceledException : A task was canceled. +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +8367 area-Infrastructure "Several tests ""Aborted"" on CentOS" From : http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_debug_tst_prtest/858/consoleFull#6262143651f1a4601-6aec-4fd5-b678-78d4389fd5e8 ``` 15:26:50 ./RunTests.sh: line 198: 33206 Aborted ./corerun xunit.console.netcore.exe System.Reflection.TypeExtensions.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 15:26:50 Finished running tests. End time=22:28:27. Return value was 134 15:26:50 error: One or more tests failed while running tests from ''. Exit code 134. 15:26:50 Finished running tests. End time=22:28:27. Return value was 0 15:26:50 ./RunTests.sh: line 198: 33345 Segmentation fault ./corerun xunit.console.netcore.exe System.Reflection.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 15:26:50 Finished running tests. End time=22:28:27. Return value was 139 15:26:50 error: One or more tests failed while running tests from ''. Exit code 139. 15:27:06 ./RunTests.sh: line 201: 40586 Aborted ./corerun xunit.console.netcore.exe System.Runtime.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 15:27:06 Finished running tests. End time=22:28:43. Return value was 134 ``` +8369 area-Infrastructure Building CoreFx on Windows requires both MsBuild 12.0 and 14.0 tools installed The instructions for setting up a machine to build CoreFx are not precise and can lead to problems building. The instructions right now say: https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md “Visual Studio 2015 is required.” However, that is not sufficient using the default settings of Visual Studio 2015 install. The default settings will only install MsBuild 14.0. But the CoreFx CSPROJ and other scripts seem to want MsBuild 12.0 (you will see warning messages when doing “build” from the CoreFx root directory). In addition, it ends up using the C# 5 compiler: ![image](https://cloud.githubusercontent.com/assets/7684835/15089388/f19df56e-13b6-11e6-8b32-1ca1c936e675.png) This will cause compilation errors in System.Net.Http/src for example due to C# 6 features being used in the source files. The fix is to install these additional things from Visual Studio 2015. This will install MsBuild 12.0 tools. ![image](https://cloud.githubusercontent.com/assets/7684835/15089391/f85c2a2e-13b6-11e6-89b7-bb5cd0faf2fb.png) Which then results in the C# 6 compiler being used: ![image](https://cloud.githubusercontent.com/assets/7684835/15089394/ff56d630-13b6-11e6-9f7a-43d438f5ca89.png) Why does our build system require both MsBuild 12.0 and MsBuild 14.0 tools? +8371 area-System.Net Dns.GetHostAddressesAsync is blocking a ThreadPool thread The implementation of Dns.GetHostAddressesAsync is just a wrapper around the blocking implementation and is queued on the ThreadPool. https://github.com/dotnet/corefx/blob/1baa9ad06a466a5d6399e1e0a7a7a02564ab51b0/src/System.Net.NameResolution/src/System/Net/DNS.cs#L274 This can lead to a ThreadPool starvation when there are many concurrent calls of GetHostAddressAsync in an environment where the DNS is slow. The code in .Net 4.6 is slightly different but suffers from the same issue: http://referencesource.microsoft.com/#System/net/System/Net/DNS.cs,744 Windows and Linux both provides real asynchronous calls to resolve a DNS. The asynchronous implementation could use these. +8372 area-System.Security Add System.Security.SecureString to corefx We'd previously removed it due to not believing in the type, but it's used by enough apps that it's important to provide simply to aid in porting. This reverts the previous removal, and then does a bunch of work to fix it up to build and run again successfully. cc: @bartonjs, @weshaggard, @ellismg +8373 area-System.Net Add InvalidCredentialException to System.Net.Security contract It looks like this exception type was inadvertently left out of the contract file. It's a public type in the implementation and it's thrown in several places. cc: @davidsh, @cipop +8376 area-System.IO Reduce the minimum buffer size required by the StreamWriter class `StreamWriter` forces its `bufferSize` constructor parameter to be at least `128`. There is no workaround. This seems unnecessarily limiting. `bufferSize = 128` actually consumes about `256+(128*3)` bytes of memory with UTF8 (I checked this using the debugger). This is a significant amount of memory per instance. If the user really wants a smaller size, maybe knowing something about the data distribution, the user-specified value should take effect. For example, I might know that I will be writing only a few dozen bytes when serializing a cookie or an HTTP header. Simply lowering this minimum value would be a compatibility concern. So I propose this: The user-specified `bufferSize` value should be used with a minimum of `1`. Each time the buffer is actually exhausted, grow the internal buffers by doubling them each time until a size of `128` is reached. This way the user can specify a smaller buffer size if they know that not much data will be coming. But if a small size was mistakenly specified `StreamWriter` will quickly adapt to a bigger, more efficient buffer. This mitigates the compatibility concern. An alternative scheme would be to always start with a size of `16` and double until `max(bufferSize, 128)` is reached. That way the user-provided value is taken as a maximum instead of a precise value. I'm not convinced this scheme should be implemented. Just mentioning it. +8377 area-System.Net Add SSL support to LoopbackServer in HTTP tests We currently make a lot of calls off-box in our unit tests. By adding SSL support to the loopback server, we should be able to convert many more tests to avoid needing to actually hit the network. This adds such basic support, and converts a few tests to use it. Per previous PR feedback, I also moved the client-related code out of the loopback server, moving it to the call sites. Those call sites will be more easily reviewed with whitespace-diffing disabled, as the majority of the changes are indentation due to adding using blocks. Also, since I was moving the certificate configuration code to a central location, I fixed an issue related to cleanup. Fixes https://github.com/dotnet/corefx/issues/8320 cc: @davidsh, @cipop, @bartonjs +8378 area-System.IO Add Stream.Begin/EndRead and Stream.Begin/EndWrite While we want developers to implement and consume the ReadAsync/WriteAsync methods on Stream, not having the older Begin/End\* methods causes portability problems for libraries (it also makes porting harder). This commit adds back the virtual methods in the contract and provides an implementation for Stream in corert (coreclr already has implementations in mscorlib). It also provides overrides on the streams defined in System.IO.dll. Once a new package is published with this updated contract, I'll add overrides to the rest of our stream implementations in corefx as well as tests. cc: @ianhays, @weshaggard, @danmosemsft, @KrzysztofCwalina, @jkotas +8379 area-System.Security Evaluate the impact of changing to CryptProtectData in SecureString https://github.com/dotnet/corefx/pull/8372 is resurrecting a CoreFx implementation of SecureString. The desktop version uses CryptProtectMemory at the SAME_PROCESS scope. The current corefx version uses CryptProtectData, which is a SAME_USER scope. There are two compatibility changes to consider: 1) CoreFx effectively allows a SecureString to now be marshalled into another process (though there are complicated things making that hard still) 2) The desktop and CoreFx versions might not have the same behavior under impersonation. At minimum a test should be done for behavioral differences across an impersonation boundary; and the SAME_PROCESS v SAME_USER impact should be considered. One solution may be to build UWP as CryptProtectData, but the full-Windows version as CryptProtectMemory. +8380 area-System.Net Add way to receive RemoteEndPoint from TcpClient I'm working on porting one of my networking libraries to .NET Core, and some of the changes made to sockets and TcpClient have made some information impossible to get. I was using a derived version of NetworkStream, however with the removal of the Client property, I could not create that anymore. I can work without that, but with neither NetworkStream or TcpClient providing the RemoteEndPoint of the socket, I cannot receive the remote address or remote port of the client. In addition, because of the removal of Async methods from Socket, I can't use raw sockets either. Any chance a way to get RemoteEndPoint data from a TcpClient or NetworkStream, a way to get the raw Socket again from TcpClient, or Task based async methods on raw Sockets? +8382 area-System.IO Add async overloads to BinaryReader/Writer Because I'd love to use it to read/write things, asynchronously from the network. +8385 area-Infrastructure "Skipping build of test assemblies when ""skiptests"" is specified" On Unix, one can specify the `skiptests` command line option to `build.sh`. However, it still compiles all the test assemblies and increases the overall compile time. Shouldn't the build of test assemblies be actually skipped too? +8386 area-Infrastructure chmod errors when building on Linux When building on Linux, I'm getting a lot of those messages. Luckily they do not cause the build to break. It would be nice however to not have those: ``` Common.Tests -> /home/local/Microsoft/corefx/bin/Unix.AnyCPU.Debug/Common.Tests/Common.Tests.dll chmod: cannot access ‘/home/local/Microsoft/corefx/bin/tests/Unix.AnyCPU.Debug/Common.Tests/dnxcore50/corerun’: No such file or directory ``` +8389 area-System.Net PostSyncBlockingContentUsingChunkedEncoding_Success failed on Windows in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug/247/consoleText ``` System.Net.Http.Functional.Tests.PostScenarioTest.PostSyncBlockingContentUsingChunkedEncoding_Success(serverUri: https://corefx-net.cloudapp.net/Echo.ashx) [FAIL] System.Threading.Tasks.TaskCanceledException : A task was canceled. Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(850,0): at System.Net.Http.WinHttpHandler.d__102.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(392,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(171,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(85,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +8390 area-System.Numerics divremTest.RunDivRemTests failed on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_debug/29/consoleText ``` System.Numerics.Tests.divremTest.RunDivRemTests [FAIL] Out parameters not matching Expected: True Actual: False Stack Trace: System.Threading -> /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/bin/OSX.AnyCPU.Debug/System.Threading/System.Threading.dll at System.Numerics.Tests.StackCalc.VerifyOutParameter() at System.Numerics.Tests.divremTest.VerifyDivRemString(String opstring) at System.Numerics.Tests.divremTest.RunDivRemTests() ``` +8392 area-Infrastructure Clean.cmd and .sh should offer an option to prevent user prompt on failures "When Clean.cmd or .sh fail to unlink a file during the 'git clean -xdf' phase, they prompt ""Should I try again?"" This is fatal for an automated environment like CI and will require manual intervention. Clean should offer an option that prevents prompts. Possible solution is: - Optionally 'set GIT_ASK_YESNO=false' in clean.cmd I would prefer this prompt suppression should be the default. Interactive users can see the failures and try again, but lab machines cannot. Any netci.groovy scripts using clean.cmd/sh or doing manual 'git clean -xdf' should also be aware of whichever option is chosen and use it. " +8393 area-System.Security Several EnvelopedCms test failures on Windows 7 and Windows 8.1 **Windows 7** http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests/StateTests/PostDecrypt_Encode/ Stacktrace MESSAGE: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Cannot find the certificate and private key for decryption +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.StateTests.PostDecrypt_Encode() http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/lastCompletedBuild/testReport/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests/EdgeCasesTests/ImportEdgeCaseSki/ Stacktrace MESSAGE: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Cannot find the certificate and private key for decryption +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ImportEdgeCaseSki() http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/lastCompletedBuild/testReport/System.Net.Security.Tests/CertificateValidationClientServer/CertificateValidationClientServer_EndToEnd_Ok_useClientSelectionCallback__False_/ System.Net.Security.Tests.CertificateValidationClientServer.CertificateValidationClientServer_EndToEnd_Ok(useClientSelectionCallback: False) (from (empty)) MESSAGE: System.AggregateException : One or more errors occurred. (Assert.Equal() Failure\r\nExpected: RemoteCertificateChainErrors\r\nActual: RemoteCertificateNotAvailable)\r\n---- Assert.Equal() Failure\r\nExpected: RemoteCertificateChainErrors\r\nActual: RemoteCertificateNotAvailable +++++++++++++++++++ STACK TRACE: at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Net.Security.Tests.CertificateValidationClientServer.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Security.Tests.CertificateValidationClientServer.ServerSideRemoteClientCertificateValidation(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) at System.Net.Security.SslStream.UserCertValidationCallbackWrapper(String hostName, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) at System.Net.Security.SslState.CompleteHandshake() at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.WriteCallback(IAsyncResult transportResult) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) **Windows 8.1** http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/lastCompletedBuild/testReport/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests/DecryptTests/Decrypt_IssuerAndSerial/ Stacktrace MESSAGE: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Keyset does not exist +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\EnvelopedCms.cs:line 240 at System.Security.Cryptography.Pkcs.EnvelopedCms.Decrypt(X509Certificate2Collection extraStore) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\EnvelopedCms.cs:line 188 at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTests.VerifySimpleDecrypt(Byte[] encodedMessage, CertLoader certLoader, ContentInfo expectedContent) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\DecryptTests.cs:line 210 at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTests.TestSimpleDecrypt_RoundTrip(CertLoader certLoader, ContentInfo contentInfo, String algorithmOidValue, SubjectIdentifierType type) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\DecryptTests.cs:line 196 at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.DecryptTests.Decrypt_IssuerAndSerial() in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\DecryptTests.cs:line 30 +8396 area-System.Diagnostics Windows 8.1 outerloop release - System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/lastCompletedBuild/testReport/System.Diagnostics.Tests/ProcessStartInfoTests/TestUserCredentialsPropertiesOnWindows/ Stacktrace MESSAGE: System.InvalidOperationException : No process is associated with this object. +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Process.EnsureState(State state) in D:\j\workspace\outerloop_win---65ef7d78\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs:line 779 at System.Diagnostics.Process.get_HasExited() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs:line 189 at System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs:line 393 +8398 area-System.Reflection Alternative for Assembly.Location / bring back Assembly.Location Getting the location of a loaded assembly is a core feature of the Assembly class. Now that the Assembly.Location property is only available in .net standard 1.5, how can code targeting lower platform versions retrieve the path where an assembly got loaded from? Alternatively, can Assembly.Location be brought back? According to msdn it was there since 1.1: https://msdn.microsoft.com/en-us/library/system.reflection.assembly.location(v=vs.110).aspx +8399 area-System.Net Disable BadCertificate test failing on Windows "This has recently been failing on Windows (inconsistently), with errors like ""A security error occurred"" and ""The buffers supplied to a function was too small"". https://github.com/dotnet/corefx/issues/7812 cc: @davidsh " +8410 area-System.IO FileSystemWatcher Test failure: FileSystemWatcher_File_Create_DeepDirectoryStructure Creating a file in a nested directory does not always send a Created event on some Linux distros. This results in the `FileSystemWatcher_File_Create_DeepDirectoryStructure` test failing intermittently. +8413 area-System.Net Fix PhysicalAddress.Equals() PhysicalAddress.Equals() returned false for 2 PhysicalAddress instances with byte array contents that are equal but not reference equals. +8414 area-System.Net SslStream/NegotiateStream should throw InvalidCredentialException when the authentication fails and cannot be retried According to MSDN: https://msdn.microsoft.com/en-us/library/system.security.authentication.invalidcredentialexception(v=vs.110).aspx > The exception that is thrown when authentication fails for an authentication stream and cannot be retried. At the moment SslStream is throwing only `AuthenticationException`. +8415 area-System.IO FileSystem: Implement WinRT File Enumeration "The enumeration in WinRTFileSystem is currently stubbed out to return an empty array. This commit adds an implementation with behavior matching the Win32FileSystem as much as possbible. There are still a few differences: - Search paths that contain a file with an extension containing a wildcard will have those extensions ignored when filtering results. - Double dot ("".."") search patterns do not throw an ArgumentException like they do on Win32. resolves #8108 @ericstj " +8418 area-Serialization ReflectionBasedDCS: Fix 5 test failures, MemberInfo, DateTimeOffset, KeyValuePair Fix the following 5 tests: DCS_DateTimeOffsetAsRoot DCS_DataMemberAttribute DCS_DuplicatedKnownTypesWithAdapterThroughConstructor DCS_DuplicatedKeyDateTimeOffset DCS_MyPersonSurrogate cc: @SGuyGe @shmao @zhenlan +8422 area-Serialization Nullref while deserializing on many threads with DataContractJsonSerializer "Updating the packages used for serialization seems to have introduced a crash. Repro: 1) dotnet new 2) replace program.cs with [this](https://gist.github.com/billwert/183050efed9a3ff9856dda9cd58be86c#file-program-cs) 3) Add these to your project.json: ""System.Runtime.Serialization.Json"": ""4.0.2-rc3-24109-00"", ""System.Runtime.Serialization.Primitives"": ""4.1.1-rc3-24109-00"" 4) dotnet restore 5) dotnet build 6) dotnet run It should crash with something like this at the top of the stack: Unhandled Exception: System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.) ---> System.NullReferenceException: Object reference not set to an instance of an object. at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at System.Runtime.Serialization.XmlFormatReaderGenerator.UnsafeGetUninitializedObject(Type type) at ReadPersonFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] ) Rolling the packages back to these will make the bug go away. ""System.Runtime.Serialization.Json"": ""4.0.2-rc3-23924"", ""System.Runtime.Serialization.Primitives"": ""4.1.1-rc3-23924"" " +8423 area-System.Security PublicKeyTests.TestKey_RSA failed in CI on Ubuntu 14.04 http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release/254/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestKey_RSA [FAIL] Assert.Equal() Failure Expected: Byte[] [1, 0, 1] Actual: Byte[] [] ``` +8424 area-System.Net Disable ConnectTimeoout test on Linux It's failing on Ubuntu 16.04. Something about the curl used in CI is likely wrong. https://github.com/dotnet/corefx/issues/8181 +8425 area-System.Security System.Security.SecureString.Tests fails using Ubuntu 14.04.3 LTS I noticed one error when building the corefx repository. The repository was freshly cloned to ensure it wasn't fixed in the meantime. An extract of the `msbuild.log` file (hopefully) indicating the issue. [https://gist.github.com/TorbenJ/40e4fe407d18976bb0d881a606f4a048](url) I tried to build using `./build.sh` and another time using `./build.sh Linux` with the same results. +8426 area-System.Net PostNonRewindableContentUsingAuth_PreAuthenticate_Success failed on Windows in CI The handle is invalid error. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1074/consoleText ``` System.Net.Http.Functional.Tests.PostScenarioTest.PostNonRewindableContentUsingAuth_PreAuthenticate_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx?auth=basic&user=user1&password=password1) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(392,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(207,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(149,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1331,0): at System.Net.Http.WinHttpHandler.InternalSendRequestAsync(WinHttpRequestState state) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(843,0): at System.Net.Http.WinHttpHandler.d__102.MoveNext() ``` +8429 area-System.Runtime Addition ConditionalWeakTable.AddOrUpdate From https://github.com/dotnet/coreclr/issues/4545 Or indexer setter? At the moment you need to do ``` csharp lock (cwt) { cwt.Remove(key); cwt.Add(key, newValue); } ``` Would be nicer if you could just do ``` csharp cwt[key] = newValue; ``` or ``` csharp cwt.AddOrUpdate(key, newValue); ``` +8430 area-Infrastructure Enable ApiCompat for CoreFX builds @venkat-raman251 setup ApiCompat and did some initial clean runs but ever enabled it in the corefx builds. We need to enable by adding RunApiCompat=true (see https://github.com/weshaggard/corefx/commit/f208510f7720116c139f7fedbb89bbf31ebcc184), but before turning it on we have to clean-up the existing issues that have occurred since then. +8434 area-System.Net Improve WinHttpHandler logic regarding default credentials In some cases, WinHttpHandler was not sending default credentials that were specified inside a custom ICredentials object. In other cases, default credentials would be sent even though CredentialCache.DefaultCredentials was not specified. The code was incorrectly comparing the proxy and server credential (ICredential interface) values against the DefaultCredentials object. Instead, the ICredentials.GetCredential() method should be called to compute the final NetworkCredential object. This takes into account the given uri and auth scheme. This PR fixes the logic by delay the setting in WinHTTP for releasing default credentials. This ensures that default crdentials are released when requested. Fixes #8176. +8435 area-System.Net System.Net.Sockets\tests\PerformanceTests is not building on Windows "Running `msbuild /t:rebuild,test` on Windows will result in: ``` ""S:\c2\src\System.Net.Sockets\tests\PerformanceTests\System.Net.Sockets.Async.Performance.Tests.csproj"" (rebuild;test target) (1) -> (CoreCompile target) -> S:\c2\src\Common\tests\System\Net\Sockets\Performance\SocketTestClient.cs(209,18): error CS0103: The name 'SocketTestMemcmp' does not exist in the c urrent context [S:\c2\src\System.Net.Sockets\tests\PerformanceTests\System.Net.Sockets.Async.Performance.Tests.csproj] 0 Warning(s) 1 Error(s) ``` Specifying `/property:Configuration=Windows_Debug` (or `Linux_*`/`OSX_` works as expected). /cc @davidsh @himadrisarkar @ericeil " +8437 area-System.Net CertificateValidationClientServer_EndToEnd_Ok if failing on Windows7 ``` System.AggregateException : One or more errors occurred. (Assert.Equal() Failure\r\nExpected: RemoteCertificateChainErrors\r\nActual: RemoteCertificateNotAvailable)\r\n---- Assert.Equal() Failure\r\nExpected: RemoteCertificateChainErrors\r\nActual: RemoteCertificateNotAvailable +++++++++++++++++++ STACK TRACE: at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Net.Security.Tests.CertificateValidationClientServer.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Security.Tests.CertificateValidationClientServer.ServerSideRemoteClientCertificateValidation(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) at System.Net.Security.SslStream.UserCertValidationCallbackWrapper(String hostName, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) at System.Net.Security.SslState.CompleteHandshake() at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.WriteCallback(IAsyncResult transportResult) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) ``` Has been failing consistently in past 3 builds. +8439 area-System.IO System.IO.Tests.WaitForChangedTests.Created_Success(changeType: Created) [FAIL] From: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_debug_tst_prtest/965/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 Failed on Innerloop CentOS7.1 Debug Build and Test: ``` 14:05:40 System.IO.Tests.WaitForChangedTests.Created_Success(changeType: Created) [FAIL] 14:05:40 WaitForChanged didn't complete 14:05:40 Expected: True 14:05:40 Actual: False 14:05:40 Stack Trace: 14:05:40 at System.IO.Tests.WaitForChangedTests.Created_Success(WatcherChangeTypes changeType) 14:05:40 Finished: System.IO.FileSystem.Watcher.Tests 14:05:40 14:05:40 === TEST EXECUTION SUMMARY === 14:05:40 System.IO.FileSystem.Watcher.Tests Total: 185, Errors: 0, Failed: 1, Skipped: 0, Time: 11.844s 14:05:41 Finished running tests. End time=21:07:28. Return value was 1 14:05:41 error: One or more tests failed while running tests from ''. Exit code 1. ``` +8440 area-System.Net HttpClient Unstable on CoreCLR "I've been using HttpClient in my ASP.NET Core application, running on the (full) `clr` runtime. It works great. However, when I `dnvm use` to switch to `coreclr` runtime, then I've found that HttpClient invocations fail. At first this seems like this is a Kestrel issue, but please read my post through to learn my workaround. The workaround suggests this is an issue with HttpClient itself. To create this problem: - Run under `1.0.0-rc1-update2 coreclr`. I use `x86` for architecture, but I don't think that matters. - Execute an HttpClient request **in an async / await construct**. This part is necessary! - Perform back-to-back HttpClient POST requests that serialize payload (I have been using `Microsoft.AspNet.WebApi.Client v5.2.3` extensions, such as `PostAsJsonAsync`). I launch the test by typing `dnx test`, which launches xUnit. The first HttpClient request will work correctly. The next request will mysteriously receive a 404. When I insert fiddler to spy on traffic, it interferes by ""post-poning"" the problem; it allows two or three HttpClient requests to be processed before finally failing with a 404. Furthermore, Fiddler will only capture half or less of the traffic(!!!!) being received by Kestrel (even though all requests are coming from the same HttpClient object instance!). One of the 404 requests that was captured by both Fiddler and Kestrel looked like this: ``` PATCH http://localhost:60996/evt/Subscribers/bcf8edb0-dbae-4e83-bb8d-b5d966b2736b/AddNumbers HTTP/1.1 Content-Type: application/json; charset=utf-8 Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: localhost:60996 Content-Length: 15 [""303 2968199""] ``` Looks normal. On the Kestrel side, it looks like this: ``` info: Microsoft.AspNet.Hosting.Internal.HostingEngine[1] Request starting HTTP/1.1 PATCH http://localhost:60996/evt/Subscribers/bcf8edb0-dbae-4e83-bb8d-b5d966b2736b/AddNumbers application/json; charset=utf-8 verb: Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute[0] Request successfully matched the route with name '' and template 'evt/Subscribers/{id}/AddNumbers'. verb: Microsoft.AspNet.Mvc.Infrastructure.DefaultActionSelector[0] Action 'ApiBasics.Controllers.SubscribersController.AddNumbers' with id 'b482e6ad-649c-4885-9b7d-12a25e3b422a' did not match the constraint 'Microsoft.AspNet.Mvc.ActionConstraints.HttpMethodConstraint' verb: Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler[3] No actions matched the current request verb: Microsoft.AspNet.Builder.RouterMiddleware[0] Request did not match any routes. ``` It would seem this is a Kestrel problem, but consider the workaround. If I simply Dispose() the HttpClient after every request, and re-create it fresh for each subsequent request - then I can successfully run this code on coreclr. Furthermore, if I don't use async/await constructs with HttpClient, then this problem also does not appear. Evidently, there is some sort of state that HttpClient is retaining between calls. Again, this work-around is not necessary and the problem does not occur **if I use dnvm to switch to `1.0.0-rc1-update2 clr`** and then run my test again. I'm launching my test via xUnit. I have an xUnit `IClassFixture` which launches Kestrel. In other words, I am performing in-memory fast integration tests. The versions I am using for these two tools are: ``` ""xunit.runner.dnx"": ""2.1.0-rc1-build204"", ""xunit"": ""2.2.0-beta1-build3239"", ""Microsoft.AspNet.Server.Kestrel"": ""1.0.0-rc1-final"", ``` ## Work-around Test Code To simplify my ability to test the ""restart HttpClient"" work-around, I have been using this code: ``` public class AsyncClient { Uri address; HttpClient client; public AsyncClient(Uri baseAddress) { address = baseAddress; client = new HttpClient(); client.BaseAddress = baseAddress; } public async Task Request(Func> call) { HttpResponseMessage response = null; using (var client = new HttpClient()) { client.BaseAddress = address; response = await call(client); } return response; } } ``` The above `AsyncClient` is registered as a singleton in my IOC container. By simply commenting the ""using"" line in the `Request` method, I can toggle between a singleton `HttpClient` or a ""per invocation"" `HttpClient`. ## Further Anomaly Using the `AsyncClient` code shown above, I can ensure the `HttpClient` is fresh for every request - and this allows the `coreclr` execution to be successful. However, when I change the address of the server so that Fiddler can intercept traffic, then this 404 problem occurs all over again!!!! So if the `HttpClient` base address normally points here: ``` http://localhost:60996 ``` And I change that address (for Fiddler's sake) to this address: ``` http://localhost.fiddler:60996 ``` Then the same 404 appears after the third or fourth request! And this time, my ""workaround"" can't save me...the `coreclr` execution simply will not work...due to these 404 issues. No Fiddler for `coreclr` !!! Incidentally, if I switch back to the full `clr` runtime...my errors might be gone, but Fiddler still only captures half the traffic that Kestrel is successfully receiving. Queue twilight zone music. :sweat: " +8443 area-System.Net Allow CurlHandler to work with link-local Uris on older libcurls "In https://github.com/dotnet/corefx/pull/8249 I modified CurlHandler to work with Uris that included scope/zone IDs. This was based on libcurl's parsing support for IPv6 uris with scope/zone IDs, but that support was added in libcurl v7.37, and some systems we target have an earlier version (e.g. Ubuntu 14.04 uses v7.35 by default). Rather than just saying ""use a newer libcurl"", we can use libcurl's CURLOPT_ADDRESS_SCOPE feature (which has been around for a very long time) to explicitly set the link-local scope ID when it's set, and allow such Uris to be used on older libcurls. cc: @ericeil, @davidsh, @cipop, @mikeharder " +8444 area-System.Net System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls) failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/994/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds_acceptedProtocol__Tls_/ ``` MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : Failure when receiving data from the peer +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` This was talking to the loopback server. +8445 area-System.Net Disable two recently added tests These were both added in the last few days and have both failed in CI at least once. cc: @ellismg +8449 area-System.Collections Why ImmutableList throws ArgumentOutOfRange instead of IndexOutOfRange on insertion Why `ImmutableList` throws `ArgumentOutOfRangeException` instead of `IndexOutOfRangeException` when index out of allowed range is passed to `Insert` method? +8450 area-System.Security X509Certificate2.GetECDsaPublicKey fails on UWP https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/X509Pal.PublicKey.cs ``` C# private static ECDsa DecodeECDsaPublicKey(CertificatePal certificatePal) { using (SafeBCryptKeyHandle bCryptKeyHandle = ImportPublicKeyInfo(certificatePal.CertContext)) { ... } } private static SafeBCryptKeyHandle ImportPublicKeyInfo(SafeCertContextHandle certContext) { #if NETNATIVE // CryptImportPublicKeyInfoEx2() not in the UWP api list. throw new PlatformNotSupportedException(); #else ... #endif } ``` +8452 area-System.Net Moving SafeDeleteContext and SafeFreeCredentials to common location SafeFreeCredentials and SafeDeleteContext are used across two native libraries - libssl and System.Net.Security.Native. Moving these two classes a common location. +8453 area-System.Runtime System.Runtime.Loader depends on Net462 "Of all the Microsoft.NETCore.App dependencies only 1 requires something higher than Net46 and that package is System.Runtime.Loader. Why? The reason I ran into this was trying to cross compile a .NET console app between core and net46. To do this I need to target at least 4.6.2, but only for 1 package. It would be nice to know if that is a hard dependency, a nice to have, or a dependency that could be avoided. Repo: dotnet new vi project.json ``` { ""version"": ""1.0.0-*"", ""compilationOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002426"" } }, ""frameworks"": { ""netcoreapp1.0"": {}, ""net46"": {} } } ``` dotnet restore dotnet build Expected: dotnet build for .NETFramework,Version=v4.6 succeeds Actual: project.json(7,31): error NU1002: The dependency System.Runtime.Loader 4.0.0-rc2-24018 does not support framework .NETFramework,Version=v4.6. " +8454 area-System.Reflection API difference between ref assembly and actuall assembly `System.Reflection.ParameterInfo` defines a protected constructor in mscorlib, but in the ref assembly `System.Reflection` it does not. This prevents me from inheriting from it. While I suspect this is the very reason this is done... 1. Why change the API contract? 2. Why block me from inheriting (even more so only by ref assembly)? +8455 area-System.Security RSACertificateExtensions.GetRSAPrivateKey() fails on UWP Since 4.2.0-rc3-24105-00, in UWP, calling RSACertificateExtensions.GetRSAPrivateKey() results in: System.TypeLoadException occurred Message=Could not load type 'System.Security.Cryptography.ECDsa' from assembly 'System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Source=System.Security.Cryptography.X509Certificates I see in the package that the runtime changed from netstandard1.4 to 1.6. 4.1.0-rc3-24104 works fine. +8456 area-System.Net Fix HttpClient test hanging on machines with a single core One of the HttpClient client tests hangs on a machine with a single core. xunit by default uses a SynchronizationContext that has N threads to do work, where N defaults to Environment.ProcessorCount. Thus on a single core machine, there's only one thread available to run tests, and if that thread blocks waiting for an async operation that'll schedule work back to that context, it'll deadlock. cc: @davidsh, @bartonjs +8458 area-System.Net IPAddresses returned from System.Net.NetworkInformation are missing ScopeID on OSX and Linux "**Repro Steps** 1. Run the following code, and compare the results to ipconfig/ifconfig: ``` CSharp NetworkInterface.GetAllNetworkInterfaces() .SelectMany(i => i.GetIPProperties().UnicastAddresses) .Select(a => a.Address) .Where(a => a.IsIPv6LinkLocal) .ToList() .ForEach(ip => Console.WriteLine($""IP: {ip}, ScopeId: {ip.ScopeId}"")); ``` **Windows** .NET Core ``` IP: fe80::1234:5678:90ab:cdef%18, ScopeId: 18 IP: fe80::1234:5.6.7.8%15, ScopeId: 15 ``` ipconfig /all ``` Link-local IPv6 Address . . . . . : fe80::1234:5678:90ab:cdef%18(Preferred) ``` **OS X** .NET Core ``` IP: fe80::1, ScopeId: 0 IP: fe80::1234:5678:90ab:cdef, ScopeId: 0 ``` ifconfig ``` inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet6 fe80::1234:5678:90ab:cdef%en0 prefixlen 64 scopeid 0x4 ``` **Linux** .NET Core ``` IP: fe80::1234:5468:90ab:cdef, ScopeId: 0 ``` ifconfig ``` eth0 inet6 addr: fe80::1234:5678:90ab:cdef/64 Scope:Link ``` " +8462 area-System.Net Fix handling of ScopeIDs with IPAddresses in NetworkInformation We had the scopeId, we just weren't storing it into the IPAddress. (As with other aspects of NetworkInformation, this is hard to add a test for, but I'm going to add a test to the HttpClient suite that tries to use a link-local Uri with a loopback server, and that will implicitly provide some verification here, as that will only succeed if the scope ID is correct.) Fixes https://github.com/dotnet/corefx/issues/8458 cc: @mellinoe, @ericeil, @mikeharder +8464 area-System.Net Issues with Socket.GetSocketOption for errors on Linux "It seems I've stumbled on some behavior issues with Socket.GetSocketOption. In Npgsql I use a pretty standard pattern for non-blocking socket connect: ``` c# var ep = new IPEndPoint(IPAddress.Parse(""127.0.0.1""), 44444); var socket = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp) { Blocking = false }; try { socket.Connect(ep); } catch (SocketException e) { if (e.SocketErrorCode != SocketError.WouldBlock) throw; } var write = new List { socket }; var error = new List { socket }; Socket.Select(null, write, error, -1); var errorCode = (int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error); Console.WriteLine(""First getsockopt: "" + (SocketError)errorCode); if (errorCode != 0) { var second = (int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error); Console.WriteLine(""Second getsockopt: "" + (SocketError)second); throw new SocketException(errorCode); } ``` The code above is supposed to fail with a ConnectionRefused since nobody's listening at 44444. On Linux/mono, as well as on Windows/coreclr and Windows/net451 the output of this code is ConnectionRefused from both GetSocketOption invocations. However, on Linux/coreclr I curiously get 111 from the first GetSocketOption, and Success from the second. " +8467 area-System.Net Add HttpClient test with IPv6 Uris Adds support to the loopback server for binding to IPv6 local addresses, then adds a test that uses both ::1 and a link-local address for the current machine. cc: @davidsh, @ericeil, @mellinoe, @mikeharder (Relies on https://github.com/dotnet/corefx/pull/8462; won't pass on Unix until that's merged.) +8468 area-Serialization Fix race condition issue in data contract serializers Use ConcurrentDictionary instead of Dictionary. I ran perf tests a few times to get the comparison before and after the change. Although there are noises in the results no consistent trend of regression is identified. Fix https://github.com/dotnet/corefx/issues/8422 cc: @shmao @SGuyGe @zhenlan +8470 area-System.Net Dispose of the inner HttpClient in HttpWebRequest While browsing through the code recently, I noticed that `HttpWebRequest` uses an `HttpClient` internally, which it does not dispose of afterwards. I made a quick fix to use `using` where the variables were initialized; since they're not saved to fields or anything I'm assuming I don't have to touch the finalizer/Dispose methods of this class. (Also assuming that since `client.SendAsync` is awaited immediately after it is invoked, we don't have to worry about the client being disposed before it finishes sending or anything.) Changes: - Added `using` statements - Indented the code (hence why the diff is so big, try adding ?w=1 to the end of the GitHub URL to unsee whitespace changes) cc @davidsh @stephentoub +8471 area-System.Net Fix translation in GetSocketOption with SocketOptionName.Error On Unix we're currently handing back the underlying errno value from the platform. We need to instead translate that to a SocketError value. Also added a test. Fixes https://github.com/dotnet/corefx/issues/8464 cc: @ericeil, @davidsh, @cipop, @roji +8472 area-System.Net Unhandled exception from SslStream in CI I'm not sure what test this is from, but it's from something in System.Net.Security.Tests http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_tst_prtest/1004/consoleText ``` Unhandled Exception: System.InvalidOperationException: This operation is only allowed using a successfully authenticated context. at System.Net.Security.SslState.CheckThrow(Boolean authSucessCheck) at System.Net.Security.SslState.get_SecureStream() at System.Net.Security.SslStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.<>c.b__38_0(Object ) at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.Stream.EndRead(IAsyncResult asyncResult) at System.Net.Security.Tests.DummyTcpServer.OnReceive(IAsyncResult result) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.IO.Stream.ReadWriteTask.System.Threading.Tasks.ITaskCompletionAction.Invoke(Task completingTask) at System.Threading.Tasks.Task.FinishContinuations() at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at System.Threading.ThreadPoolWorkQueue.Dispatch() ./RunTests.sh: line 198: 61827 Aborted ./corerun xunit.console.netcore.exe System.Net.Security.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests ``` +8479 area-Infrastructure Enable checksumalgorithm:SHA256 for managed code. see https://github.com/dotnet/roslyn/issues/10451 We will need to generate an rsp file for this for now because it isn't exposed in the csc build task. +8480 area-System.Net Add configurable test settings for Http and WebSocket tests Building on the current use of environment variables for passing in test settings, added a common test helper class to allow the http and websocket tests to access alternate test servers. This will help with load balancing and network latency issues which are causing occasional timeouts in CI tests. This will also allow developers to run their own version of the Azure test endpoints. Consolidated the current environment variables used and standardized on a naming format. Fixes #2383. +8482 area-System.Net System.Net.Http surface area on Linux "When compiling the System.Net.Http.Functional tests with projectreferences converted to package dependencies, the build breaks due to differing surface area. I'm testing a temporary fix to opt system.net.http.functional tests out of the projectreference-> package dependency conversion, but these failures should be investigated so that we can reimplement to compile against packages instead of implementation assemblies if desired. This issue is tracking the failures. I'll provide better repro instructions soon. ``` ""D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj"" (Build target) (172) -> (CoreCompile target) -> HttpClientHandlerTest.Timeouts.cs(22,64): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(34,74): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(47,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(48,69): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(58,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(60,79): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(61,72): error CS1061: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' and no extension method 'ConnectTimeout' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.Timeouts.cs(71,64): error CS0117: 'HttpClientHandler' does not contain a definition for 'ConnectTimeout' [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(23,55): error CS1061: 'HttpClientHandler' does not contain a definition for 'SslProtocols' and no extension method 'SslProtocols' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(39,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'SslProtocols' and no extension method 'SslProtocols' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(40,49): error CS1061: 'HttpClientHandler' does not contain a definition for 'SslProtocols' and no extension method 'SslProtocols' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(56,72): error CS1061: 'HttpClientHandler' does not contain a definition for 'SslProtocols' and no extension method 'SslProtocols' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(73,68): error CS1061: 'HttpClientHandler' does not contain a definition for 'SslProtocols' and no extension method 'SslProtocols' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(84,60): error CS0117: 'HttpClientHandler' does not contain a definition for 'SslProtocols' [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(104,60): error CS0117: 'HttpClientHandler' does not contain a definition for 'SslProtocols' [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.SslProtocols.cs(120,60): error CS0117: 'HttpClientHandler' does not contain a definition for 'SslProtocols' [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(22,49): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' and no extension method 'MaxResponseHeadersLength' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(33,83): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' and no extension method 'MaxResponseHeadersLength' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(45,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' and no extension method 'MaxResponseHeadersLength' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(46,50): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' and no extension method 'MaxResponseHeadersLength' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(56,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' and no extension method 'MaxResponseHeadersLength' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(58,72): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' and no extension method 'MaxResponseHeadersLength' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxResponseHeadersLength.cs(70,64): error CS0117: 'HttpClientHandler' does not contain a definition for 'MaxResponseHeadersLength' [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxConnectionsPerServer.cs(21,52): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxConnectionsPerServer' and no extension method 'MaxConnectionsPerServer' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxConnectionsPerServer.cs(32,74): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxConnectionsPerServer' and no extension method 'MaxConnectionsPerServer' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxConnectionsPerServer.cs(47,29): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxConnectionsPerServer' and no extension method 'MaxConnectionsPerServer' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.MaxConnectionsPerServer.cs(65,29): error CS1061: 'HttpClientHandler' does not contain a definition for 'MaxConnectionsPerServer' and no extension method 'MaxConnectionsPerServer' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(20,73): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(30,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(31,44): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(33,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(34,73): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(52,25): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] HttpClientHandlerTest.DefaultProxyCredentials.cs(87,29): error CS1061: 'HttpClientHandler' does not contain a definition for 'DefaultProxyCredentials' and no extension method 'DefaultProxyCredentials' accepting a first argument of type 'HttpClientHandler' could be found (are you missing a using directive or an assembly reference?) [D:\A\_work\9\s\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] ""D:\A\_work\9\s\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj"" (Build target) (190) -> NegotiateStreamTestForUnix.cs(35,34): error CS0103: The name 'File' does not exist in the current context [D:\A\_work\9\s\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] NegotiateStreamTestForUnix.cs(36,17): error CS0103: The name 'File' does not exist in the current context [D:\A\_work\9\s\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] NegotiateStreamTestForUnix.cs(89,17): error CS0103: The name 'File' does not exist in the current context [D:\A\_work\9\s\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] ``` " +8484 area-System.Net Don't cancel all requests when HttpClient disposed on Unix On Unix when an HttpClientHandler is disposed, we cancel all outstanding operations associated with that handler. It turns out this isn't the desired behavior (aka the behavior of WinHttpHandler), which is that we should cancel all outstanding operations that haven't yet published its HttpResponseMessage, but for requests where the HttpResponseMessage has been published, it should remain valid. This commit tweaks the behavior accordingly and adds a test for it. cc: @ericeil, @davidsh, @cipop +8488 area-System.Net If we fail to register a socket file descriptor with kqueue/epoll, throw a more appropriate exception As it turns out, the only circumstance under which these should fail is resource exhaustion, so we can just throw OutOfMemoryException, with InternalException as a fallback in case something unexpected happens. Fixes #7850 @stephentoub +8489 area-System.Security Bring back protected fields for SymmetricAlgorithm ``` C# protected int BlockSizeValue; protected byte[] IVValue; protected byte[] KeyValue; protected KeySizes[] LegalBlockSizesValue; protected KeySizes[] LegalKeySizesValue; protected int KeySizeValue; protected CipherMode ModeValue; protected PaddingMode PaddingValue; ``` There's also `protected int FeedbackSizeValue`; but right now FeedbackSize is out-of-contract; so I'm not sure what the best plan is there. This would be merged back into the existing contract and implementation before RTM, no package version bump. +8490 area-System.Security Bring back protected fields for AsymmetricAlgorithm ``` C# protected int KeySizeValue; protected KeySizes[] LegalKeySizesValue; ``` This would be merged back into the existing contract and implementation before RTM, no package version bump. +8491 area-System.Security Consider adding algorithm-agnostic X509Certificate2.GetPublicKey() and X509Certificate2.GetPrivateKey() A while ago, it was decided to remove these properties from the public contract to encourage people to use the strongly typed extensions: https://github.com/dotnet/corefx/issues/2449#issuecomment-129042445. Though the motivation seems legitimate, this approach leads to very weird code in practice, specially in framework classes that don't need to deal with the concrete algorithm instance, as it ties them to algorithm-specific extensions: - https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/KDev/src/Microsoft.IdentityModel.Tokens/X509SecurityKey.cs#L78 - https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/KDev/src/Microsoft.IdentityModel.Tokens/X509SecurityKey.cs#L102 Is there a chance to bring these properties back? /cc @bartonjs @brentschmaltz +8495 area-Infrastructure Test crashes cross plat don't trigger CI failures in MSBuild While investigating https://github.com/dotnet/corefx/issues/8425, I noticed a case where a test project was failing in CI, but the build was not being marked as an error. The best way to reproduce it may be to just revert the change I'm going to merge to fix this issue and run a CI job or local build. I'm not yet sure where the problems lies. Is the universal runner not flowing the correct exit code back in this case or is MSBuild just dropping it for some reason? +8496 area-System.Net PostLongerContentLengths_UsesChunkedSemantics failed in CI on Windows The handle is invalid http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug/304/consoleText ``` System.Net.Http.Functional.Tests.PostScenarioTest.PostLongerContentLengths_UsesChunkedSemantics(contentLength: 64512) [FAIL] System.Net.Http.HttpRequestException : Error while copying content to a stream. ---- System.IO.IOException : The read operation failed, see inner exception. -------- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\src\System\Net\Http\HttpContent.cs(365,0): at System.Net.Http.HttpContent.d__50.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(392,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(171,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs(123,0): at System.Net.Http.Functional.Tests.PostScenarioTest.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\src\System\Net\Http\StreamToStreamCopy.cs(171,0): at System.Net.Http.StreamToStreamCopy.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\src\System\Net\Http\HttpContent.cs(358,0): at System.Net.Http.HttpContent.d__50.MoveNext() ----- Inner Stack Trace ----- ``` +8497 area-System.Net Remove CurlHandler.ConnectTimeout property I'd added this when bringing properties from WinHttpHandler to CurlHandler in bulk, with the expectation that we might expose them. Since we're not planning on exposing this particular property from HttpClientHandler (turns out it's not very useful in practice), I'm removing it. Related to https://github.com/dotnet/corefx/issues/7623 Closes https://github.com/dotnet/corefx/issues/8181 cc: @davidsh, @ericeil +8498 area-System.Data SqlClient diagnostics Before event should record timestamp The following [logging of the before event for SqlClient diagnostics](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlClientDiagnosticListenerExtensions.cs#L27-L32) should include a timestamp member. This would be as simple as adding `Timestamp = Stopwatch.GetTimestamp()` to the anonymous type passed into `DiagnosticListener.Write()`. Please assign this issue to me, as I will be making the code change and submitting the pull request (I am the author of the code in question). +8502 area-System.Net Remove WinHttpHandler.ConnectTimeout property It turns out that setting the WinHTTP 'Connect' timeout does nothing. We discovered this because we still got ERROR_WINHTTP_TIMEOUT errors after about 20 seconds even after setting the 'Connect' timeout to INFINITE. We discussed this with the WinHTTP team and they told us that this timeout is essentially deprecated due to performance enhancements in the TCP stack. For the technically curious, here is the explanation. Underneath the 'Connect' timeout is really a set of TCP timeouts related to setting up the socket via the 3-leg SYN/ACK exchange. The TCP timeout is about retransmits with backoff and how many is tried by the winsock stack. The default of these initial packet exchanges is 21 seconds with 2 retransmits (3 overall SYNs) and initial RTO of 3 (3 + 6 + 12). So that explained the timeouts we saw during periods of high network congestion. There is no API exposed in WinHTTP to control those low-level TCP timeouts. And thus it doesn't make any sense to have a 'ConnectTimeout' on the WinHttpHandler class. +8504 area-System.Security Delete CryptoNative_GetStreamSizes Delaying the function removal until 1.1 to allow for a smooth RC2 to RTM upgrade path. +8505 area-System.Net Disable parts of the test build from projectreference->package dependency conversion. Disables System.net.http.functional.tests and system.net.security.functional.tests from the projectreference -> package dependency conversion during the test build. These test libraries have build breaks when targeting Linux using packages due to differing surface area. Further investigation will be required to understand the failures and produce a fix. Opting out of conversion for now unblock our build pipeline. Tracking issue - https://github.com/dotnet/corefx/issues/8482 I'll flesh out the tracking issue with more info soon... /cc @weshaggard @jhendrixMSFT +8507 area-Serialization ReflectionBasedDCS: refactor to avoid concrete adapters in ReflectionXmlFormatReader/Writer https://github.com/dotnet/corefx/pull/8418#discussion_r62722072 +8509 area-System.Net System.Net.IPAddress and IPv6 zone indices "I already reported this issue on mono's bugzilla but since it's mainly a .NET issue, I was redirected here. Here's my original bug entry: https://bugzilla.xamarin.com/show_bug.cgi?id=37724 As per this article (https://en.wikipedia.org/wiki/IPv6_address#Link-local_addresses_and_zone_indices) the syntax of specifying IPv6 zone indices and link-local addresses depends on the platform. On MS Windows the index is determined by the interface number while on Unix-like OS's (including OS X) the interface name (ie. en0) is used. System.Net.IPAddress only has support for specifying the interface the MS Windows way in the form of it's ""ScopeId"" property which is a ""long"". So this causes issues on non-Windows systems and in some cases, specifically where the MS Windows notation is not supported as an alternate way of specifying the interface it renders this class completely useless. Even worse, IPAddress.Parse succeeds in parsing an IP Address with a zone index specified as name (ie. %en0"") but totally ignores/scraps the zone index resulting in a false positive. At least on OS X (can't speak for other Unix or BSD based platforms) one can alternatively specify the zone index using the index of the interface. This is not well known or widely used though and requires finding an interface's index instead of just using it's name. So on platforms where the number-based notation is available but not the default, IPAddress.Parse could be extended to look up the interface index using the System.Net.NetworkInformation.NetworkInterface class. On systems where this ""fallback"" isn't available this wouldn't work though and apart from introducing a new property and adjusting the parsing code I have no suggestion for this scenario. " +8510 area-System.Diagnostics Cleanup dependencies on System.Diagnostics.Contracts Code Contracts are not being maintained in .NET Core and `Debug.Assert` is being used in favor of `Contract.Assert`, yet many CoreFX components still depend on `System.Diagnostics.Contracts` in their implementation. https://github.com/dotnet/corefx/search?l=json&p=1&q=%22System.Diagnostics.Contracts%22&type=Code Could we start removing dependencies on `System.Diagnostics.Contracts` (similar to how most dependencies on `System.Collections.NonGeneric` have been removed) or is there a reason to keep the dependencies the way they are? cc: @weshaggard +8511 area-System.Diagnostics Add the notion of metadata to DiagnosticsSource DiagnosticsSource has been around for a while now and as more sites are instrumented and more listeners come online, it is becoming evident that there is a need for metadata to be provided as part of the system - specifically, the notion of collecting `timestamps`, `duration`, `correlationid` and possibly `stack`, `processid` and `threadid`. These concerns are currently being tracked in an inconsistent manner across the publisher and subscriber code bases and has lead to several problems (i.e. different listeners coming up with different durations or timestamps, correlations not being determined correctly, listening to more events than are needed just to calculate duration, etc). Hence, after seeing issues like #8498 arise, it has been determined that the correct place isn't in the publisher or the subscriber, but most likely in the underlying subsystem - DiagnosticsSource. This issue is to track this discussion and determine the best way to start including this data into the system. Considerations that need to be had are as follows: - Can we get these updates in place before RTM/RTW lockdowns? - Can we make these changes in a non breaking way, given the fact that people are already taking a dependency on DS today? - A possible solution here is to have two subscription methods which listeners can use, listen without metadata (what they would be using today) and listening with metadata. Other solutions are also possible. - Is there the need for the subscribers to dictate which metadata they would like collected (i.e. if no listeners want the stack, then the stack wouldn't be collected)? - Can the system be optimized so that to calculate durations, listener don't have to listen to both the `begin`/`end` events? - To do this work, do we need to take any extra dependencies, and if so does it matter? - Can correlations between `begin`/`end` events be provided in a deterministic way? Obviously given where things are at timing wise with release schedules, we need to see what we think is the right solution and what we can get done in the time we have. Assuming this work is done, we can also go through and cleanup some of the publishers code and simply things greatly. // @vancem @stephentoub (note this should be assigned to @vancem for the time being). +8515 area-Meta Cleanup ApiCompat baseline for 4.6.3+ TargetingPack Also includes APIs from #6936. While enabling ApiCompat for our builds by default https://github.com/dotnet/corefx/pull/8513 we are hitting the following compat errors: netcore50 ``` TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. ``` net463 - I suspect these are planned to go into net463 so it there might not be anything needed except the baseline before the actually exist there. ``` TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportExplicitParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.GenerateKey(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ImportParameters(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. ``` @bartonjs @steveharter +8516 area-System.Runtime ApiCompat issues with System.Runtime.Extensions While enabling ApiCompat by default in our builds https://github.com/dotnet/corefx/pull/8513 we discovered the following compat errors: netstandard15aot ``` MembersMustExist : Member 'System.Environment.Exit(System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Environment.GetCommandLineArgs()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Environment.MachineName.get()' does not exist in the implementation but it does exist in the contract. ``` @tarekgh you added that configuration what are the plans for getting correct support for these APIs? +8517 area-System.Net System.Net.InternalException should include more diagnostic info "We throw `System.Net.InternalException` as a kind of ""soft assert"" in the networking code; In DEBUG builds, this will stop the process immediately, while in RELEASE builds this is just an exception, albeit an unexpected one. In DEBUG builds, because we crash immediately, we should be able to reconstruct the state that lead to the exception, in a debugger; but in RELEASE builds this information may be long gone before we get a chance to debug. We should consider enhancing `InternalException` to carry some state info to aid in debugging. " +8518 area-System.Net WinHttpHandler.SslProtocols initially will use OS defaults To support future security improvements, the default value for WinHttpHandler.SslProtocols will use the enum value of .None. This means that no preferred list of protocols is being expressed. And that means to use the best OS defaults. Currently this translates into using: ``` c# Tls10 | Tls11 | Tls12 ``` This list will change over time as platforms adopt newer Tls versions and phase out older versions. +8519 area-System.Net System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingUsingConflictingSemantics_UsesChunkedSemantics failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1179/testReport/junit/System.Net.Http.Functional.Tests/PostScenarioTest/PostUsingUsingConflictingSemantics_UsesChunkedSemantics_serverUri__https___corefx_net_cloudapp_net_Echo_ashx_/ > MESSAGE: > System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The operation has been canceled > +++++++++++++++++++ > STACK TRACE: > at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 392 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs:line 171 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.PostScenarioTest.d__16.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http\tests\FunctionalTests\PostScenarioTest.cs:line 99 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.WinHttpHandler.d__102.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 843 +8521 area-System.Net Change CurlHandler.SslProtocols default Same change as https://github.com/dotnet/corefx/pull/8518, but for CurlHandler. cc: @davidsh, @ericeil +8522 area-System.Net Fail gracefully if IPAddress.Parse is given an IPv6 address beginning with ':' Fixes #8356. @stephentoub, @CIPop +8523 area-System.Net Add HttpClient e2e test validating SslProtocols.None behavior "See: https://github.com/dotnet/corefx/pull/8518 > useful to have an e2e test validating that if ""None"" is set, Tls12 (at least at this time) is going to be negotiated. The test can check SslStream.SslStream on the new LocalhostServer. " +8526 area-System.Runtime Proposal: Introduce System.Runtime.Loader as a Desktop contract System.Runtime.Loader is the only difference between NET462 and NETCoreApp today, this means that code that is targeting both Desktop and NETCoreApp need to have different code paths. Adding a simple emulator of the APIs on Desktop would suffice a lot of scenarios, certainly those that want to run on NETCoreApp. Previous discussion: #8453 +8530 area-System.Net Fail gracefully if IPAddress.Parse is given an IPv6 address beginning with a single ':' "(This is one of the commits from #8522. I will have to submit the test changes separately, after this change to System.Net.Primitives propagates such that it can be used from the System.Private.Uri tests.) This is to match the Unix behavior with the existing Windows behavior. On Windows (both CLR and CoreFx), `IPAddress.Parse("":1"")` throws `FormatException`. On Unix, we were failing an assert (or throwing `IndexOutOfRangeException`, in release builds). Fixes #8356. @stephentoub, @CIPop " +8531 area-System.Net Remove ActiveIssue for #8356 Removes the ActiveIssue tag for #8356, and reorganizes the tests into [Theory]- based cases. Won't pass CI until #8530 is merged. @stephentoub @CIPop +8535 area-System.Net Use stackalloc in WebUtility + avoid some branching Changes: - Refactor `UrlEncode` to use `stackalloc` if the UTF-8 representation of the input is <= 1024 bytes - Refactored the core of `GetEncodedBytes` to use pointers - Refactored the array-based overload of `GetEncodedBytes` to forward everything to the new pointer-based one - Added plenty of debug asserts to prevent buffer overflows/UB by `fixed` when the input array is null or empty - Avoided branches in `HexToInt` and `IsUrlSafeChar` methods - Added `IsIntBetween` helper method to check whether a given int is between 2 others, without branching - Used it in `IsUrlSafeChar`, `HexToInt`, and some of the `Html*` methods - Another trick: since the difference between `a` (97) and `A` (65) is 32, which is a power of 2, you can use this fact to avoid a branch when checking if a char is a letter (recently found this out in dotnet/coreclr#4881) - [Related StackOverflow question](http://stackoverflow.com/q/37179678/4077294) - Renamed `safeSpecialCharMask` to use Pascal casing as it is const Will post perf measurements as soon as I get the chance, but I wanted to submit a PR for code review/feedback first. cc @hughbe @stephentoub +8537 area-System.Net Add NetworkInterface.LoopbackInterfaceIndex test Fixes https://github.com/dotnet/corefx/issues/7854 cc: @ericeil, @davidsh, @cipop +8538 area-System.Net WinHttpHandler not updating response state with error from server when client supports multiple TLS protocols Might be a test bug. Noticed this while adding HttpClientHandler.SslProtocols property to Windows. System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_DisallowTls10_AllowTls11_AllowTls12 ``` Assert.Throws() Failure Expected: typeof(System.Net.Http.HttpRequestException) Actual: typeof(System.Threading.Tasks.TaskCanceledException): A task was canceled. Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() s:\GitHub\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(392,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +8539 area-System.Net System.Net.Http 4.1 contract implementation "As per approved #7623, add remaining properties to HttpClientHandler for all platforms. Move pre-existing Unix-only Http tests to run for all platforms. Ensure that ""credentials"" related properties are secure by default and have an initial (default) value of null. " +8540 area-System.Runtime S.R.CS.Unsafe: Adding a Copy(ref T, ref U) overload Right now we support copying from a pointer to a reference, and a reference to a pointer via `Unsafe.Copy`, but not between two references. We should add an overload with the following signature: ``` cs public static class Unsafe { public static void Copy(ref U destination, ref T source); } ``` that copies `sizeof(T)` bytes from `source` to `destination`. Example usages: ``` cs // Reinterpret binary data byte[] array = { 0x01, 0x02, 0x03, 0x04 }; int asInt = 0; Unsafe.Copy(ref asInt, ref array[0]); Assert.Equal(0x04030201, asInt); // Object-to-pointer public unsafe static void* GetCurrentAddress(this object obj) { var result = default(IntPtr); Unsafe.Copy(ref result, ref obj); return result.ToPointer(); } // As-style functionality extended to structs public static ImmutableArray FakeAsImmutable(this T[] array) { var result = default(ImmutableArray); Unsafe.Copy(ref result, ref array); return result; } ``` cc @mellinoe @nietras @jkotas +8541 area-System.Net Determine default value for netcore50 HttpClientHandler.MaxResponseHeadersLength Ref: PR #8539 Determine the proper value to return as the default value of 'MaxResponseHeaderLength'. Unlike WinHTTP which has WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE, there is no known default value for WinINet used in WinRT Windows.Web.Http. +8546 area-System.Net Add test verifying HttpClient negotiates Tls12 when None specified Fixes https://github.com/dotnet/corefx/issues/8523 cc: @davidsh, @cipop +8547 area-System.IO FileSystemWatcher Test failure (OSX): WaitForChangedTests.CreatedDeleted_Success http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/1149/consoleText ``` System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(changeType: Deleted) [FAIL] Assert.Equal() Failure Expected: Deleted Actual: 0 Stack Trace: at System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(WatcherChangeTypes changeType) ``` +8552 area-System.Net Impossible to create UdpClient on shared port As per the discussion here: https://github.com/dotnet/corefx/pull/5953#issuecomment-219304032 With the removal of `Client` from `UdpClient`, it's now impossible to create a `UdpClient` instance that can listen on a shared port if the port is already in use. The core issue is that the ctor of `UdpClient` creates the socket. The `ExclusiveAddressUse` is a property that evaluates after the ctor, so it's too late. Today, this is accomplished by using the default `UdpClient` ctor, then setting a bunch of options on the socket/client and then calling `udpClient.Client.Bind(localEndpoint)`. This allows for the socket to be setup as a shared socket before binding. We need a way to create a `UdpClient` while specifying exclusive address use is false. One suggestion could be to add another ctor parameter with that flag. Another might be to add a collection of socket options. +8553 area-System.Net Fix WinHttpHandler default cred auth when server offers multiple schemes When a server offers multiple auth schemes, WinHttpHandler is supposed to select the more secure scheme regardless of the order of the authentication headers. So, despite a server offering Basic and Negotitate (in that order), Negotiate would be selected. When using default credentials, however, it was not calling WinHttpSetCredentials(null, null). This resulted in the first scheme offered by the server (Basic) to be attempted. But there were no credentials set and so a 401 resulted. Fix WinHttpHandler so that it will always call WinHttpSetCredentials even with default credentials. This ensures that the selected auth scheme (in this case Negotiate) is used correctly. Revised test configuration instructions. An IHttpModule is used for the test server endpoint to ensure that IIS will put 'Basic' first in the response headers. +8555 area-System.Net Change some System.Net.Requests tests to use LoopbackServer Moved LoopbackServer.cs to Common/tests path. Changed HttpWebResponse test to use LoopbackServer. More tests will be changed to use this server as part of increasing test reliability and simplifying the requirements for the Azure test server. +8556 area-System.Net Change some System.Net.Requests tests to use LoopbackServer Changed HttpWebResponse test to use LoopbackServer. More tests will be changed to use this server as part of increasing test reliability and simplifying the requirements for the Azure test server. +8557 area-Infrastructure [ARM/Linux] Build Failure on ARM Recent commit (9c2f1fe) breaks ARM build. The (len) variable need explicit type conversion to unsigned value. ``` /home/jyoung/git/dotnet/corefx/src/Native/System.Native/pal_networkchange.cpp:63:63: error: comparison of integers of different signs: '__u32' (aka 'unsigned int') and 'ssize_t' (aka 'int') [-Werror,-Wsign-compare] for (nlmsghdr* hdr = reinterpret_cast(buffer); NLMSG_OK(hdr, len); NLMSG_NEXT(hdr, len)) ^~~~~~~~~~~~~~~~~~ /home/jyoung/git/dotnet/rootfs-corefx/arm/usr/include/linux/netlink.h:89:24: note: expanded from macro 'NLMSG_OK' (nlh)->nlmsg_len <= (len)) ~~~~~~~~~~~~~~~~ ^ 1 error generated. ``` ``` 55 ssize_t len; ... SKIP ... 63 for (nlmsghdr* hdr = reinterpret_cast(buffer); NLMSG_OK(hdr, len); NLMSG_NEXT(hdr, len)) ``` ``` 87 #define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \ 88 (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \ 89 (nlh)->nlmsg_len <= (len)) ``` I will post a PR soon. +8560 area-System.Threading missing System.Threading.Thread VolatileRead/VolatileWrite/MemoryBarrier methods or porting documentation Recently I started porting some concurrent data structure to coreclr and I ran into this issue. Maybe I missed some api / documentation / deprecation notices, but the VolatileRead(_), VolatileWrite(_), MemoryBarrier() methods seems missing from System.Threading.Thread class [1]. However the coreclr repo has an implementation [2], and also has some documentation reference [3]. Please note, I am perfectly fine to left out these methods from the api in order to simplify it (in this case could somebody please give me a pointer about these decisions?). [1] https://github.com/dotnet/corefx/blob/master/src/System.Threading.Thread/ref/System.Threading.Thread.cs#L13 [2] https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/Thread.cs#L1477 [3] https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/Volatile.cs#L20 +8567 area-System.Numerics BigInteger.Parse returns bogus value for exponents above 1000 "When parsing a `BigInteger` in exponential form, the FX code artificially limits the exponent to 1000. If a larger exponent than that is found, an exponent of 9999 (!!) is substituted instead. See [FormatProvider.Number.cs, from line 495](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Globalization/FormatProvider.Number.cs#L495) or test it yourself: ``` Console.WriteLine(BigInteger.Parse(""1e+1000"", NumberStyles.AllowExponent).ToString(""E"", CultureInfo.InvariantCulture)); Console.WriteLine(BigInteger.Parse(""1e+1001"", NumberStyles.AllowExponent).ToString(""E"", CultureInfo.InvariantCulture)); ``` > 1.000000E+1000 > > 1.000000E+9999 The explicit coding seems like this was intentional, but it is hard to accept. The behavior is surprising and inconsistent; also, this exponent is not in any way a limit of BigInteger itself, only in the parsing: ``` Console.WriteLine((BigInteger.Parse(""1e+1000"", NumberStyles.AllowExponent) * 10).ToString(""E"", CultureInfo.InvariantCulture)); ``` > 1.000000E+1001 If `BigInteger.Parse` needs to have a limitation (e.g. currently it uses an `int` to store the exponent, so it might need to have a limit around `Int32.MaxValue` until this gets reimplemented), it should probably rather die with a `FormatException` or `NotSupportedException` or somesuch when the limit is reached instead of delivering a completely bogus value. (This was discovered [in a question on StackOverflow](http://stackoverflow.com/a/37195411/304138).) " +8575 area-System.Net Update netcore50 MaxResponseHeadersLength property Windows.Web.Http is built on WinINet. There is no maximum limit (except for out of memory) for received response headers. So, returning 0 (indicating no limit) is appropriate. Fixes #8541. +8576 area-System.Linq Restore the use of reflection methods with binding flags in Linq.Expressions "Reflection used to expose APIs like ``` C# // allocates nothing in steady state return type.GetMethod(name, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, ...); ``` In CoreFX the surface was reduced to minimum ""GetMethods() forcing the following solution: ``` C# // allocates array with all methods each time MethodInfo[] methods = type.GetMethods(); foreach (var method in methods) { if (method.IsStatic && method.Name == name) return methods; } ``` The second is wore performance-wise and we should be getting the original API with binding flags back. Make sure that Linq.Expression is switched back to using that API " +8577 area-Microsoft.CSharp Restore the use of reflection methods with binding flags in Microsoft.CSharp "Reflection used to expose APIs like ``` C# // allocates nothing in steady state return type.GetMethod(name, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, ...); ``` In CoreFX the surface was reduced to minimum ""GetMethods() forcing the following solution: ``` C# // allocates array with all methods each time MethodInfo[] methods = type.GetMethods(); foreach (var method in methods) { if (method.IsStatic && method.Name == name) return methods; } ``` The second is worse performance-wise and we should be getting the original API with binding flags back. Make sure that Microsoft.CSharp is switched back to using that API " +8581 area-System.Net System.Net.WebSockets.Client.Tests.ClientWebSocketTest.SendAsync__MultipleOutstandingSendOperations_Throws failed in CI On Windows NT Release: System.Net.WebSockets.WebSocketException : Unable to connect to the remote server\r\n---- System.Net.WebSockets.WebSocketException : Unable to connect to the remote server\r\n-------- System.Net.Http.WinHttpException : The operation has been canceled [Details](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1316/testReport/junit/System.Net.WebSockets.Client.Tests/ClientWebSocketTest/SendAsync__MultipleOutstandingSendOperations_Throws_server__wss___corefx_net_cloudapp_net_WebSocket_EchoWebSocket_ashx_/) +8585 area-Infrastructure Add openSUSE Leap 42.1 Add openSUSE Leap 42.1 to Jenkins CI and release infrastructure +8586 area-System.Net Implement NetworkInterface.Id and .Description on Linux and OSX "These now return the same value as ""Name"" on these platforms, but this value is more useful than simply throwing a `PlatformNotSupportedException`. Previously, `OSXNetworkInterface.Id` was returning the system index of the network interface. This was not particularly useful. Technically, these are implemented via `UnixNetworkInterface`, so future subclasses will also inherit the behavior. @tmds , @CIPop Fixes https://github.com/dotnet/corefx/issues/8297 " +8592 area-System.Runtime IntPtr and UIntPtr should implement the IEquatable interface Both are structs, overload ==, and even have [specialized implementations](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/EqualityComparer.cs#L64-L67) for the default `EqualityComparer`, yet they don't implement `IEquatable` (or override `Equals`). Should we consider making them implement the interface? If there's no particular reason why they shouldn't, then here is the API proposal: ``` cs public struct IntPtr : IEquatable { public bool Equals(IntPtr other); } public struct UIntPtr : IEquatable { public bool Equals(UIntPtr other); } ``` +8593 area-Serialization Perf Improvements on ReflectionReadCollectionCore(). The perf improvements speed up the following performance tests: ``` DeSerializationTest(numberOfRuns: 1000, testType: ListOfInt, testSize: 128) Baseline: 563.00 Fix: 153.00 Diff: -72.82% DeSerializationTest(numberOfRuns: 1000, testType: ListOfInt, testSize: 1024) Baseline: 4610.00 Fix: 1200.00 Diff: -73.97% DeSerializationTest(numberOfRuns: 1, testType: ListOfInt, testSize: 1048576) Baseline:4660.00 Fix: 1270.00 Diff: -72.75% ``` The numbers for baseline/fix indicate the time taken by the tests with/without the fix. +8597 area-System.Data DataTable future? Hi, there is a newly introduced (empty) type System.Data.DataTable in RC2, is this some sort of workaround that will be removed in final, or do you plan to extend it and keep DataTable and related classes as part of the core framework? I am asking because our code similarly to lot of others relies on DataSet / DataTable structures and we need to outline some strategy how to address this or wait. +8598 area-Meta .NET Core compatibility change list Provide a table highlighting all major changes in technology (api, specification etc.) between .NET Framework and .NET Core. Something like: | Change No. | Technology | Change | Public Reference | | --- | --- | --- | --- | | 1 | System.Net.Sockets | API Surface, Async Only | None | | 2 | AppDomains | Removed | Blog - http:// | | 3 | Shutdown | Specification | GitHub #5205 | +8601 area-System.Security Set KeySizeValue directly, rather than doing gymnastics "In the RSA and ECDSA types we do gymnastics to ensure that we can make get_KeySize return ""the correct answer"", even if it isn't ""a legal answer"" per LegalKeySizes. In full .NET Framework this is easily solvable by setting the protected field instead of the property. Since #8571 brought the fields back, we can simplify the code now (once the new packages are introduced... so, tomorrow-ish). " +8603 area-System.Net Add back TcpClient/UdpClient.Client properties to System.Net.Sockets Mainly a cleaned-up revert of https://github.com/dotnet/corefx/pull/5953. cc: @ericeil, @davidsh, @CIPop +8606 area-System.ComponentModel System.ComponentModel.Tests.MemberDescriptorTests.CopiedMemberDescriptorEqualsItsSource test failure http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/1257/testReport/junit/System.ComponentModel.Tests/MemberDescriptorTests/CopiedMemberDescriptorEqualsItsSource/ > Stacktrace > > MESSAGE: > Assert.True() Failure > Expected: True > Actual: False > +++++++++++++++++++ > STACK TRACE: > at System.ComponentModel.Tests.MemberDescriptorTests.CopiedMemberDescriptorEqualsItsSource() +8608 area-System.Collections System.Collections.Immutable should not use ` and + in its file names so source lookup works. Currently in System.Collections.Immutable\src\System\Collections\Immutable there are a number of files that have names like ``` ImmutableHashSet`1+MutationResult.cs ``` which have unusal characters like ` and +. It turns out that these characters cause problem with the Nuget Symbol packages we generate in that they need to be escaped. See the package bin\symbolpkg\System.Collections.*.symbols.nupkg You will see that the special characters are escaped, in the nuget package archive. This in turn confuses the nuget source server. (basically source lookup for these files simply fail). While we could try to push nuget and all downstream components to support ` and + as normal characters, this seems like more trouble than it is worth. System.Collections.Immutable is the only assembly in CoreFX that does this. Thus my recommendation is to simply avoid the problem and reaname the source files to avoid ` and + (very easy). This will have no effect on the assembly, but it will make source code lookup work properly. Thus low cost, useful value. +8610 area-System.IO ZipArchive doesn't verify checksums when decompressing. The Zip specification includes a crc32 for each individual file entry header. When writing a ZipArchive, we calculate this crc32 and include it for each file. When reading/decompressing a ZipArchive, we read this crc32 from the file header but don't ever validate it. We pass the data block to the underlying DeflateStream to decompress then return that deflatestream to the caller. The end result of this is that you can successfully unzip an archive that has potentially invalid data. Changing this behavior would introduce a large number of new errors and breaking changes. This issue is copied from an internal bug report. +8617 area-Infrastructure Desktop System.Globalization test need strong name skip verification entries to run All failing tests Log [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/38/) ``` System.IO.FileLoadException : Could not load file or assembly 'System.Globalization.Extensions, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)\r\n---- System.Security.SecurityException : Strong name validation failed. (Exception from HRESULT: 0x8013141A) +++++++++++++++++++ STACK TRACE: at System.Globalization.Tests.GetStringComparerTests.Compare(String x, String y, String cultureName, CompareOptions options, Int32 expectedWindows, Int32 expectedICU) ----- Inner Stack Trace ----- ``` +8618 area-System.ComponentModel Create lookup table for IsDefault and TypeId System.ComponentModel.TypeDescriptor expects certain attributes(defined in System.ComponentModel.Primitives) to override IsDesfaultAttribute and TypeId from System.Attribute. This is not available on .NET Core, so an interface had been supplied for it instead. This design required the projects to depend on each other rather than the ref assemblies, so this removes that dependency by creating a lookup table that should cover the majority of the cases. Fixes #8050 +8622 area-System.Data DataTable like API in .Net Core `System.Data.DataTable` is present in .Net core as an empty class to complete the interfaces implementation. This issue is to track the work needed to bring in an API to provide DataTable like API in .Net Core. +8623 area-Serialization Fix serialization issue for type with XmlNode[] property XmlSerializer fails to serialize type with XmlNode[] property due to the implementation is not complete yet. This change ports the code path from Desktop to enable the scenario. cc: @shmao @SGuyGe @zhenlan +8624 area-System.ComponentModel Skip failing System.ComponentModel.TypeConverter test This works around #8606 to unblock CI, pending a permanent fix. +8627 area-System.Net HttpClient/WinHttpHandler can't cancel slow response stream reads "Was part of #2165 list items > Register callback on cancellation token to cancel WinHTTP operation for WinHttpRequestStream, WinHttpResponseStream Creating separate issue for this. Cancelling an http request where the response headers arrive slowly works correctly. However, if the response headers arrive fast but the reads from the response body are slow, then the cancellation doesn't really work and still takes a long time. Both HttpClient.Timeout or cancellation token Cancel() doesn't work correctly against the WinHttpResponseStream.ReadAsync() method. ``` c# [Fact] public async Task GetIncludesReadingResponseBody_CancelUsingTimeout_TaskCanceledInShortTime() { var stopwatch = new Stopwatch(); stopwatch.Start(); using (var client = new HttpClient()) { client.Timeout = new TimeSpan(0, 0, 1); Task getResponse = client.GetAsync(s_fastHeadersSlowBodyServer, HttpCompletionOption.ResponseContentRead); try { await getResponse; _output.WriteLine(""GetAsync() success""); } catch (TaskCanceledException) { _output.WriteLine(""TaskCanceledException""); } finally { stopwatch.Stop(); _output.WriteLine(""Time to complete GetAsync(): {0}"", stopwatch.Elapsed.ToString()); } } } [Fact] public async Task GetIncludesReadingResponseBody_CancelUsingToken_TaskCanceledInShortTime() { var stopwatch = new Stopwatch(); stopwatch.Start(); var cts = new CancellationTokenSource(); using (var client = new HttpClient()) { Task getResponse = client.GetAsync(s_fastHeadersSlowBodyServer, HttpCompletionOption.ResponseContentRead, cts.Token); Task ignore = Task.Delay(1000).ContinueWith(_ => { _output.WriteLine(""Calling cts.Cancel() at: {0}"", stopwatch.Elapsed.ToString()); cts.Cancel(); }); try { await getResponse; _output.WriteLine(""GetAsync() success""); } catch (TaskCanceledException) { _output.WriteLine(""TaskCanceledException""); } finally { stopwatch.Stop(); _output.WriteLine(""Time to complete GetAsync(): {0}"", stopwatch.Elapsed.ToString()); } } } [Fact] public async Task ResponseStreamRead_CancelUsingToken_TaskCanceledInShortTime() { var stopwatch = new Stopwatch(); stopwatch.Start(); using (var client = new HttpClient()) using (HttpResponseMessage response = await client.GetAsync(s_fastHeadersSlowBodyServer, HttpCompletionOption.ResponseHeadersRead)) { stopwatch.Stop(); _output.WriteLine(""Time to get headers: {0}"", stopwatch.Elapsed.ToString()); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var cts = new CancellationTokenSource(); Stream stream = await response.Content.ReadAsStreamAsync(); byte[] buffer = new byte[ResponseBodyLength]; Task ignore = Task.Delay(1000).ContinueWith(_ => { _output.WriteLine(""Calling cts.Cancel() at: {0}"", stopwatch.Elapsed.ToString()); cts.Cancel(); }); stopwatch.Restart(); try { await stream.ReadAsync(buffer, 0, buffer.Length, cts.Token); _output.WriteLine(""ReadAsync() success""); } catch (TaskCanceledException) { _output.WriteLine(""TaskCanceledException""); } finally { stopwatch.Stop(); _output.WriteLine(""Time to complete response stream read: {0}"", stopwatch.Elapsed.ToString()); } } } ``` " +8628 area-System.Net Fix hang in OSX NetworkAddressChange implementation Fixes #8066 If the NetworkAddressChanged event is quickly subscribed and unsubscribed, there is a chance we experience a deadlock in the threaded CFRunLoop implementation. It seems that if CFRunLoopStop is called too quickly after CFRunLoopStart is called, we may end up successfully calling CFRunLoopStop without actually terminating the CFRunLoopRun call which has, or is just about to, start. To work around this, I have added a call to CFRunLoopIsWaiting in order to ensure that the call to CFRunLoopRun has happened, and that thread is waiting for messages. This means that, when we finally call CFRunLoopStop, the call to CFRunLoopRun has definitely already begun and we can successfully terminate it. This seems to be entirely a timing issue. With a debug runtime, the tests run a lot slower, and the behavior is never encountered (no hangs). With an optimized runtime, it is much more likely to occur. Without this change, around 1 in 10 test runs would hang on my test laptop. With the change, I am not seeing any hangs, and I have run the tests >1000 times in a row. +8629 area-Serialization 1. Updating for .NET Native; 2. Adding SerializationOption. @shmao @khdang @zhenlan +8630 area-System.ComponentModel Remove dependencies on project references for TypeConverter library This tests are depending on project references instead of the package references. This is fine in CI builds and local builds, but breaks the lab builds. This unblocks the lab builds by disabling all the tests. Once the reference assemblies are updated, the tests can be reenabled. +8631 area-System.Net Fixing ClientCertificate functional tests for Windows 7. Starting with Windows 8, Schannel is not sending the Distinguished Name within the Server Hello record. This list was based on certificates present in the Trusted Root Authorities in Win7 and below: https://technet.microsoft.com/en-us/library/hh831771.aspx#BKMK_Changes2012R2 Adding OS and TRA certificate detection to the test. In order to run all aspects of this test on a Win7 machine, we need the client certificate issuer installed on the test machine in TRA. With this fix, the test will skip validating all aspects on machines without the issuer installed in TRA. Fixing the csproj to be able to build, test and debug from VS. @Priya91 @davidsh PTAL /cc @stephentoub @bartonjs Fixes #8437 +8634 area-Infrastructure Symlinks are causing tests to fail when building on mapped drive "OS: Win10 Repro: - Map network drive to any drive on your PC - clone repo in the mapped drive - build example output: (I'm seeing dozens of similar errors) ``` E:\oss\xml\Tools\tests.targets(180,5): warning MSB3073: The command ""E:\oss\xml\bin/tests/AnyOS.AnyCPU.Debug/System.Run time.Serialization.Json.Tests/dnxcore50/RunTests.cmd E:\oss\xml\packages/"" exited with code -1. [E:\oss\xml\src\System. Runtime.Serialization.Json\tests\System.Runtime.Serialization.Json.Tests.csproj] E:\oss\xml\Tools\tests.targets(189,5): error : One or more tests failed while running tests from 'System.Runtime.Serial ization.Json.Tests' please check log for details! [E:\oss\xml\src\System.Runtime.Serialization.Json\tests\System.Runtim e.Serialization.Json.Tests.csproj] System.Security.Cryptography.Csp.Tests -> E:\oss\xml\bin\Windows_NT.AnyCPU.Debug\System.Security.Cryptography.Csp.Tes ts\System.Security.Cryptography.Csp.Tests.dll Using E:\oss\xml\packages/ as folder for resolving package dependencies. Executing in E:\oss\xml\bin\tests\AnyOS.AnyCPU.Debug\System.Runtime.Serialization.Xml.Tests\dnxcore50\ Hard linking dependent files... Local NTFS volumes are required to complete the operation. ``` " +8636 area-System.Net SendToV4IPEndPointToV6Host_NotReceived failed in CI on OSX http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_release_prtest/1297/consoleText ``` System.Net.Sockets.Tests.DualMode.SendToV4IPEndPointToV6Host_NotReceived [FAIL] Assert.Throws() Failure Expected: typeof(System.TimeoutException) Actual: typeof(System.Net.Sockets.SocketException): Connection refused Stack Trace: at System.Net.Sockets.Socket.SendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP) at System.Net.Sockets.Tests.DualMode.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) ``` +8638 area-Infrastructure Warning when running sync.cmd "When I run sync.cmd now, I get this warning: ``` corefx\dir.traversal.targets(235,3): warning MSB4011: ""corefx\Tools\versioning.targets"" cannot be impor ted again. It was already imported at ""corefx\Tools\Build.Common.targets (96,3)"". This is most likely a build authoring error. This subsequent import will be ignored. [corefx\build.proj] ``` " +8641 area-System.Data IsKey is always null in SqlDataReader.GetColumnSchema() "``` c# using (var cmd = new SqlCommand(""CREATE TABLE data (id INTEGER PRIMARY KEY)"", conn)) cmd.ExecuteNonQuery(); using (var cmd = new SqlCommand(""SELECT id FROM data"", conn)) using (var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly)) { var columns = reader.GetColumnSchema(); Console.WriteLine(columns[0].IsKey); } ``` " +8643 area-System.Runtime LoadFromAssemblyName_ValidTrustedPlatformAssembly failing in all CentOS runs I assume we're only seeing this on CentOS because we're pulling the latest CoreCLR artifacts on CentOS and not in the other PR legs. e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_debug_tst_prtest/1247/consoleText ``` System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadFromAssemblyName_ValidTrustedPlatformAssembly [FAIL] System.IO.FileLoadException : Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: Discovered: System.Runtime.Serialization.Json.Tests at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly) at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath) at System.Runtime.Loader.Tests.CustomTPALoadContext.Load(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName) at System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadFromAssemblyName_ValidTrustedPlatformAssembly() ``` +8645 area-System.Data [SQL Server 2005] System.Data.SqlClient: pre-login fails with SSL error even with Encryption=false "Platform : Debian 8 ""Jessie"" Runtime : 1.0.0-preview1-002702,coreclr,x64,linux System.Data.SqlClient : 4.1.0-rc2-24027 ConnectionString : Server=tcp:server.domain.lan,1433;User ID=XXXX;Password=XXXX;Encrypt=False"" An attempt to connect to a Microsoft SQL Server 2005 instance results in the following exception: ``` Project foo (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. Unhandled Exception: System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed) ---> System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: size at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Data.SqlClient.SNI.SslOverTdsStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.<>c.b__39_0(Object ) at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskToApm.End[TResult](IAsyncResult asyncResult) at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) --- End of stack trace from previous location where exception was thrown --- at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options) at System.Data.SqlClient.SNI.SNIProxy.EnableSsl(SNIHandle handle, UInt32 options) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at ConsoleApplication.Program.Main(String[] args) ``` To me, the error looks as if the `Encrypt=false` just does not get communicated properly in the [`PRELOGIN` packet](https://msdn.microsoft.com/en-us/library/dd357559.aspx) because the exception is the same no matter if I set `Encrypt` to `true` (the default) or `false`. Adding `TrustServerCertificate=true` with the `Encrypt` setting enabled or disabled has no effect. The `Encrypt` setting is parsed as if I specify an invalid value for it, I get an error about it. " +8647 area-System.Xml Port xsd.exe to .NET Core We use xsd.exe to generate C# classes for based on xml schema. At present there is no xsd.exe tool to generate CoreCLR compliant code and hence code generation can not be fully automated as part of the build at the moment. Please let us know plan/timelines around availability of the same. +8652 area-System.ComponentModel Skip failing S.CM.TypeConverter test #8606 can also affect Windows builds, so with this change the test is skipped on all platforms. @stephentoub +8655 area-System.IO .NET should no longer preemptively check for paths being too long "EDIT: See latest list of work items: https://github.com/dotnet/corefx/issues/8655#issuecomment-314969840 We've never been able to get this correct. Historically we've blocked using legitimate paths by trying to guess up front. Across all of the platforms we don't have a rock solid way to know that a path will go over a particular API's limit. On Windows the historical ""limit"" has been MAX_PATH, but not all of the APIs enforce it. In addition, there is an ability to circumvent it for _some_ APIs with extended DOS device syntax (`\\?\`). Even if we did have a list of every API we called and what it supported: 1. That API's support could (and likely will) change 2. The real limits are based on complicated internal details that are difficult, if not impossible, to replicate (see [DOS to NT: A Path's Journey](https://blogs.msdn.microsoft.com/jeremykuhne/2016/05/02/dos-to-nt-a-paths-journey/)) 3. Lower level file systems (CDFS, UDF, NTFS, FAT16, ReFS, etc., etc.) impose their own limits which are nearly impossible to check with reparse points 4. Related to above we already get it wrong with path segments- not all file systems have a max of 255 characters It is particularly problematic with normalization methods that we provide (Path.GetFullPath). Checking there can block legitimate uses with other API's that don't have the limits we are claiming are system wide. PathTooLong should only throw from the actual platform invokes, which we already do. " +8657 area-System.Security Seg fault in System.Security.Cryptography.X509Certificates.Tests.dll on CentOS in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_tst_prtest/1252/consoleText ``` ./RunTests.sh: line 208: 41177 Segmentation fault ./corerun xunit.console.netcore.exe System.Security.Cryptography.X509Certificates.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests Finished running tests. End time=18:46:58. Return value was 139 error: One or more tests failed while running tests from ''. Exit code 139. ``` I don't know if this is the same issue @janvorli is already chasing down... +8661 area-System.Collections None of the System.Collections.Generic collections have a ToString override. "It would be very useful to have `ToString` overrides on our generic collections, to make it easier for a user in the debugger to see at a glance what's inside of them. This could probably be mostly implemented in terms of a simple helper method for `IEnumerable` that goes something like this: ``` return string.Join(enumerable.Select(obj => obj == null ? ""null"" : obj.ToString()), "", ""); ``` Any thoughts on this? Good idea? Bad idea? (Please forgive me if the LINQ syntax isn't perfect; I don't do much work with lambdas in C#.) " +8662 area-System.Net WinHttpResponseStream.ReadAsync() ignores cancellation token "(Split from #8627 which contained multiple related bugs) The following code demonstrates the problem. This test server will return response headers quickly. But will take 15 seconds to return response body. We cancel the ReadAsync() after 1 second. But the ReadAsync() task doesn't cancel until the 15 seconds has elapsed. ``` c# [Fact] public async Task ResponseStreamRead_CancelUsingToken_TaskCanceledQuickly() { var stopwatch = new Stopwatch(); stopwatch.Start(); using (var client = new HttpClient()) using (HttpResponseMessage response = await client.GetAsync(s_fastHeadersSlowBodyServer, HttpCompletionOption.ResponseHeadersRead)) { stopwatch.Stop(); _output.WriteLine(""Time to get headers: {0}"", stopwatch.Elapsed.ToString()); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var cts = new CancellationTokenSource(); Stream stream = await response.Content.ReadAsStreamAsync(); byte[] buffer = new byte[ResponseBodyLength]; Task ignore = Task.Delay(new TimeSpan(0,0,1)).ContinueWith(_ => { _output.WriteLine(""Calling cts.Cancel() at: {0}"", stopwatch.Elapsed.ToString()); cts.Cancel(); }); stopwatch.Restart(); await Assert.ThrowsAsync( () => stream.ReadAsync(buffer, 0, buffer.Length, cts.Token)); stopwatch.Stop(); _output.WriteLine(""ReadAsync() completed at: {0}"", stopwatch.Elapsed.ToString()); Assert.True(stopwatch.Elapsed < new TimeSpan(0,0,3), ""Elapsed time should be short""); } } ``` " +8663 area-System.Net HttpClient ignores Timeout and cancellation token for slow response body reads on Windows "(Split from #8627 which contained multiple related bugs) This bug is in the core logic for HttpClient, HttpContent classes and will affect both Windows and *Nix. The following code demonstrates the problem with all of the HttpClient *Async() methods when set to buffer in the response body. This test server will return response headers quickly. But will take 15 seconds to return response body. In these examples, we call GetAsync() and include the option (default) to read in (buffer into memory) the response body as well as response headers. Each test uses a different method to cancel the operation after 1 second. Either the .Timeout property or a cancellation token. In both case, we request cancellation after 1 second. But the GetAsync() task doesn't cancel until the 15 seconds has elapsed. This pattern works on .NET Framework (Desktop). Looking at the Desktop code, it is surprising that it works because the cancellation token passed into `HttpClient.GetAsync` is not actually propagated down thru the stack. The cancellation logic only works on Desktop because of a special internal method used by Desktop HTTP stack (HttpWebRequest). Since we have a different HTTP stack for CoreFx, this doesn't work. ``` c# [ActiveIssue(8663)] [Fact] public async Task GetIncludesReadingResponseBody_CancelUsingTimeout_TaskCanceledInShortTime() { var stopwatch = new Stopwatch(); stopwatch.Start(); using (var client = new HttpClient()) { client.Timeout = new TimeSpan(0, 0, 1); Task getResponse = client.GetAsync(s_fastHeadersSlowBodyServer, HttpCompletionOption.ResponseContentRead); stopwatch.Restart(); await Assert.ThrowsAsync( () => getResponse); stopwatch.Stop(); _output.WriteLine(""GetAsync() completed at: {0}"", stopwatch.Elapsed.ToString()); Assert.True(stopwatch.Elapsed < new TimeSpan(0,0,3), ""Elapsed time should be short""); } } [ActiveIssue(8663)] [Fact] public async Task GetIncludesReadingResponseBody_CancelUsingToken_TaskCanceledInShortTime() { var stopwatch = new Stopwatch(); stopwatch.Start(); var cts = new CancellationTokenSource(); using (var client = new HttpClient()) { Task getResponse = client.GetAsync(s_fastHeadersSlowBodyServer, HttpCompletionOption.ResponseContentRead, cts.Token); Task ignore = Task.Delay(new TimeSpan(0, 0, 1)).ContinueWith(_ => { _output.WriteLine(""Calling cts.Cancel() at: {0}"", stopwatch.Elapsed.ToString()); cts.Cancel(); }); stopwatch.Restart(); await Assert.ThrowsAsync( () => getResponse); stopwatch.Stop(); _output.WriteLine(""GetAsync() completed at: {0}"", stopwatch.Elapsed.ToString()); Assert.True(stopwatch.Elapsed < new TimeSpan(0,0,3), ""Elapsed time should be short""); } } ``` " +8664 area-System.IO Allow other file handle types If using `\\?\` allow handle types via the path constructor that we allow in handle constructors. #187 @zippy1981, @davkean, @ericstj, @ianhays +8665 area-Infrastructure Change dnxcore50 to netcoreapp10 Most existing projects assume dnxcore50 in various ways including the json and csproj. These should all be changed to netcoreapp10 per @ericstj Note that the test scripts for unix (including runtest.sh) assume dnxcore50 being the last folder in the test's bin directory. An attempt was made to use netcoreapp10 for the folder test name for System.Security.Cryptography.OpenSll and .Cng but resulted in various hacks in its respective .csproj. +8668 area-System.Reflection System.Reflection.TargetException.ctor() has different message between Core and Framework While refactoring tests for System.Reflection.TargetException, I found that the [.NET documentation](https://msdn.microsoft.com/en-us/library/system.reflection.targetexception%28v=vs.110%29.aspx) states that the default constructor: > Initializes a new instance of the TargetException class with an empty message and the root cause of the exception. However I'm getting different messages in the exception on the [.NET framework](http://referencesource.microsoft.com/#mscorlib/system/reflection/targetexception.cs,8aea524b98ba77d4) where I get: > Error in the application. and .NET Core, where I get: > Exception of type 'System.Reflection.TargetException' was thrown. What should be the behavior I should test for? +8671 area-Infrastructure Slave went offline (OSX Release Build and Test) ``` Slave went offline during the build 14:40:45 ERROR: Connection was broken: java.io.IOException: Connection aborted: org.jenkinsci.remoting.nio.NioChannelHub$MonoNioTransport@6cd7293e[name=dci-macpro-04] 14:40:45 at org.jenkinsci.remoting.nio.NioChannelHub$NioTransport.abort(NioChannelHub.java:208) 14:40:45 at org.jenkinsci.remoting.nio.NioChannelHub.run(NioChannelHub.java:628) 14:40:45 at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 14:40:45 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 14:40:45 at java.util.concurrent.FutureTask.run(FutureTask.java:262) 14:40:45 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 14:40:45 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 14:40:45 at java.lang.Thread.run(Thread.java:745) 14:40:45 Caused by: java.io.IOException: Connection reset by peer 14:40:45 at sun.nio.ch.FileDispatcherImpl.read0(Native Method) 14:40:45 at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 14:40:45 at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 14:40:45 at sun.nio.ch.IOUtil.read(IOUtil.java:197) 14:40:45 at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) 14:40:45 at org.jenkinsci.remoting.nio.FifoBuffer$Pointer.receive(FifoBuffer.java:136) 14:40:45 at org.jenkinsci.remoting.nio.FifoBuffer.receive(FifoBuffer.java:306) 14:40:45 at org.jenkinsci.remoting.nio.NioChannelHub.run(NioChannelHub.java:561) 14:40:45 ... 6 more ``` Found in #8631: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_release_prtest/1337/consoleFull#-1250096032a6fc86e9-18e8-40d3-a876-f39e33df2c41 +8673 area-System.Net HttpClientHandler needs Expect: 100-Continue support to use client certificates fully "Without support for this header, some scenarios are completely broken with no workaround. If you are sending a request to a server over HTTPS which doesn't immediately require a client certificate on the initial handshake and the request entity body is non-trivial in size then the request will always fail. This is because when the server sends the SSL renegotiation request the client has already sent too much data for the server to buffer before it can receive the SSL renegotiation response. If you support HTTP and HTTPS on the same site in IIS, then you can't set certificates to be required, only accepted. When communicating with IIS/HTTP.SYS, 16KB is the amount of data that the client needs to send so that the connection can't be established. The `Expect: 100-Continue` header works around this issue by causing the client to hold off sending the entity body until the server sends a ""100 Continue"" status response. This allows the server to do the SSL renegotiation before it sends the ""100 Continue"" response and the connection/request succeeds. Without full support for this header, client certificates with an entity body > 16KB are going to be a fragile use case depending on server config and client/server latency. " +8675 area-Infrastructure Enabling ARM based builds in corefx CI The current CI code in corefx does not build (cross/native) for ARM architecture. Some commits could break the native part of corefx for Linux ARM (as can be seen here #8557 ). I want to add the code to cross build the native part of corefx for Ubuntu-ARM to prevent such build breaks. I would like to do the same in 2 steps. 1. Add code to enable cross build for Ubuntu ARM to the CI (supporting manual trigger of the CI check). 2. Once this is confirmed to work correctly, change the code to make this check automatically triggered for every PR. I saw the CI script, and have a question regarding where in the script could this change be best accommodated. 1. Adding code to build native corefx (no testing) under the outerloop testing part of the script (lines 319 to 375). 2. Adding code to build native corefx (again, no testing) under the innerloop part of the script (lines 467 to 590). What is the best choice for this change? @mmitche @Priya91 +8677 area-System.Linq ParallelQueryCombinationTests.GetEnumerator_AggregateException test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_release/40/consoleText ``` System.Linq.Parallel.Tests.ParallelQueryCombinationTests.GetEnumerator_AggregateException(source: ThrowOnFirstEnumeration, operation: Union-Left:Default) [FAIL] Assert.Throws() Failure Expected: typeof(System.AggregateException) Actual: (No exception was thrown) Stack Trace: at System.Linq.Parallel.Tests.AssertThrows.Wrapped[T](Action action) at System.Linq.Parallel.Tests.ParallelQueryCombinationTests.GetEnumerator_AggregateException(Labeled`1 source, Labeled`1 operation) ``` +8679 area-System.ComponentModel Custom Type Converters in Core "Custom Type converters as detailed here: https://msdn.microsoft.com/en-us/library/ayybcxe5.aspx are not working in core. The ConvertFrom() and ConvertTo() methods never get hit but they do work when targetting full CLR. This is how my project.json looks like: `""dependencies"": { ""Newtonsoft.Json"": ""8.0.3"", ""System.ComponentModel.TypeConverter"": ""4.0.1-rc2-24027"" }, ""runtimes"": { ""win7-x64"": { }, ""win7-x86"": { } }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""dnxcore50"", ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002702"" }, ""System.Dynamic.Runtime"": ""4.0.11-rc2-24027"", ""System.Runtime.Serialization.Primitives"": ""4.1.1-rc2-24027"" } } }` " +8681 area-System.Threading AsyncLocal is behaving differently after upgraging from DNX "## Steps to reproduce I have the following class: ``` c# namespace MyTested.Mvc.Internal.Caching { using System.Linq; using System.Collections.Generic; #if NET451 using System.Runtime.Remoting.Messaging; using System.Runtime.Remoting; #elif NETSTANDARD1_5 using System.Threading; #endif using Contracts; using Microsoft.Extensions.Caching.Memory; public class MockedMemoryCache : IMockedMemoryCache { #if NET451 private const string DataKey = ""__MemoryCache_Current__""; #elif NETSTANDARD1_5 private static readonly AsyncLocal> МemoryCacheCurrent = new AsyncLocal>(); #endif private readonly IDictionary cache; public MockedMemoryCache() { this.cache = this.GetCurrentCache(); } public int Count => this.cache.Count; public void Dispose() { this.cache.Clear(); } public void Remove(object key) { if (this.cache.ContainsKey(key)) { this.cache.Remove(key); } } public ICacheEntry CreateEntry(object key) { var value = new MockedCacheEntry(key); this.cache[key] = value; return value; } public bool TryGetValue(object key, out object value) { ICacheEntry cacheEntry; if (this.TryGetCacheEntry(key, out cacheEntry)) { value = cacheEntry.Value; return true; } value = null; return false; } public bool TryGetCacheEntry(object key, out ICacheEntry value) { if (this.cache.ContainsKey(key)) { value = this.cache[key]; return true; } else { value = null; return false; } } public IDictionary GetCacheAsDictionary() { return this.cache.ToDictionary(c => c.Key, c => c.Value.Value); } private IDictionary GetCurrentCache() { #if NET451 var handle = CallContext.GetData(DataKey) as ObjectHandle; var result = handle?.Unwrap() as IDictionary; if (result == null) { result = new Dictionary(); CallContext.SetData(DataKey, new ObjectHandle(result)); } return result; #elif NETSTANDARD1_5 var result = МemoryCacheCurrent.Value; if (result == null) { result = new Dictionary(); МemoryCacheCurrent.Value = result; } return result; #endif } } } ``` The following test runs successfully on DNX. Assume that TestServiceProvider always returns the same instanve of MockedMemoryCache and TestHelper just call Dispose, which clears the dictionary. ``` c# [Fact] public void MockedMemoryCacheShouldBeDifferentForEveryCallAsynchronously() { Task .Run(async () => { TestHelper.ClearMemoryCache(); string firstValue = null; string secondValue = null; string thirdValue = null; string fourthValue = null; string fifthValue = null; var tasks = new List { Task.Run(() => { var memoryCache = TestServiceProvider.GetService(); memoryCache.Set(""test"", ""first""); firstValue = TestServiceProvider.GetService().Get(""test""); TestHelper.ClearMemoryCache(); }), Task.Run(() => { var memoryCache = TestServiceProvider.GetService(); memoryCache.Set(""test"", ""second""); secondValue = TestServiceProvider.GetService().Get(""test""); TestHelper.ClearMemoryCache(); }), Task.Run(() => { var memoryCache = TestServiceProvider.GetService(); memoryCache.Set(""test"", ""third""); thirdValue = TestServiceProvider.GetService().Get(""test""); TestHelper.ClearMemoryCache(); }), Task.Run(() => { var memoryCache = TestServiceProvider.GetService(); memoryCache.Set(""test"", ""fourth""); fourthValue = TestServiceProvider.GetService().Get(""test""); TestHelper.ClearMemoryCache(); }), Task.Run(() => { var memoryCache = TestServiceProvider.GetService(); memoryCache.Set(""test"", ""fifth""); fifthValue = TestServiceProvider.GetService().Get(""test""); TestHelper.ClearMemoryCache(); }) }; await Task.WhenAll(tasks); Assert.Equal(""first"", firstValue); Assert.Equal(""second"", secondValue); Assert.Equal(""third"", thirdValue); Assert.Equal(""fourth"", fourthValue); Assert.Equal(""fifth"", fifthValue); }) .GetAwaiter() .GetResult(); } ``` ## Expected behavior The test to pass like it did on DNX. ## Actual behavior After moving to CLI the test started failing with unexpected values like `first` equals `third` and so on. It seems that the internal dictionary is shared between the tasks and it should not be. Maybe I am missing something? Is this expected behavior? If you need more minimalistic example, I can provide one. NOTE: After changing AsyncLocal to ThreadLocal the test passed right away. " +8683 area-System.Threading Thread.Yield not available on CoreClr It is used for example in `SpinWait` etc however it is not exposed publicly in the api - although it is public https://github.com/dotnet/coreclr/issues/5094 +8684 area-System.Security Improve crypto error handling for ECDSA Misc low-priority issues found post code review (elliptic curve support): - Clear native errors in cases where validating oid, and other failure cases where a native crypto exception will not occur (ERR_clear_error) to avoid false exception information - Add [DebuggerDisplay] ECCurve to return the curve oid so we get useful debugger information instead of the default type name semantics (via ToString) - Remove any unused resource strings (one known: Cryptography_UnsupportedEcKeyAlgorithm) +8686 area-System.Security S.S.C.OpenSsl contract does not include ECDSA import/export The contract stayed at netstandard1.4, it needs to be bumped to 1.6 and the new override methods declared. We should do a search across github to find out how prevalent references to this package directly are, but the quick consensus is we should just bump it to 1.6 and not carry around the 1.4 compat version. +8688 area-System.Security Enhance RSA.Create During the API review of #7688 it was decided that to enable better cross-plat authoring we should have Create() methods on the following crypto base classes: ECDsa: Create(), Create(ECCurve), Create(ECParameters) _RSA: Create(), Create(int), Create(RSAParameters)_ ECDiffieHellman: Create(), Create(ECCurve), Create(ECParameters) DSA: Create(), Create(int), Create(DSAParameters) Hopefully all of these make it for net463, and we should have them in .NET Core as well. This specific issue tracks adding the int and RSAParameters create overloads for RSA, and is an offshoot of #8487. +8692 area-System.Net "Add ""FastHeadersSlowBody"" capability to CI-accessible test server" "Ref: Issue #8662 ``` c# // TODO: Issue #X. Move this internal test server capability to Azure test server or Loopback server. private const string FastHeadersSlowBodyHost = ""winrtnet.corp.microsoft.com""; private const int FastHeadersSlowBodyPort = 1337; private const int ResponseBodyReadDelayInMilliseconds = 15000; // 15 seconds. private const int ResponseBodyLength = 1024; private static Uri s_fastHeadersSlowBodyServer = new Uri(string.Format( ""http://{0}:{1}/?slow={2}&length={3}"", FastHeadersSlowBodyHost, FastHeadersSlowBodyPort, ResponseBodyReadDelayInMilliseconds, ResponseBodyLength)); ``` " +8693 area-System.Net Fix cancellation of WinHttpHandler response stream reads Reading from the response stream using ReadAsync() was ignoring the cancellation token passed in. To fix this, registered a delegate that will be called to dispose the WinHTTP request handle during pending I/O. This will cause the WinHTTP operation to cancel. Added tests. For now, left them disabled to be resolved in issue #8692 next week. But wanted to get this fix in asap since it blocks partners for RTM. Fixes #8662. +8695 area-System.ComponentModel Preserve ordering in MemberDescriptor.FilterAttributesIfNeeded Prior code used `Hashtable` to remove duplicates in the `_attributes` array, then reassigned that array with `Hashtable.Values`, sometimes changing the ordering of elements and causing `Equals` to erroneously return false. With this change, duplicates are removed without affecting the order of elements. This fixes #8606. @stephentoub @Tanya-Solyanik @twsouthwick +8700 area-System.Net Restructure IP address parsing tests "- The System.Uri tests were relying on IPAddress.Parse to validate their results. Changed these to hard-code known good results, so we're no longer dependent on IPAddress.Parse to validate System.Uri. - The IPAddress.Parse tests were missing many cases that were covered in the System.Uri tests. Added these cases to the IPAddress tests. - Restructured all of these as ""theories."" - Marked known differences between platforms for various IPAddress.Parse cases. This represents the ""fix"" for most of the platform differences in IPAddress.Parse, which we have decided should simply behave as the underlying platform does. One exception is #8362, which we can still fix by switching from `getaddrinfo` to `inet_aton` on OSX. Closes #8361. Closes #8360. @stephentoub @CIPop " +8701 area-System.Data SqlClient: async command to fetch sequence values hangs connection on Linux "Executing a DbCommand asynchronously with SqlClient can cause the connection to hang on Linux. ### Setup Minimal repro here: [Archive.zip](https://github.com/dotnet/corefx/files/402773/Archive.zip) What this test app does: Create 50 tasks. Each task tries to select a value from a sequence using ExecuteScalarAsync. The important part of this repro: ``` c# using (var conn = new SqlConnection(connStr)) { var command = conn.CreateCommand(); command.CommandText = ""SELECT NEXT VALUE FOR TestSequence""; conn.Open(); await command.ExecuteScalarAsync(); } ``` ### Expected behavior Can retrieve 50 values in parallel for all platforms. It works on Windows 10-x64. ### Actual behavior On Linux, command execution hangs on executescalarasync. Subsequent attempts to open a connection will overwhelm the server until to refuses more connections. A few of the first calls to ExecuteScalarAsync may pass, but with in a few seconds, this simple app crashes as subsequent connections are rejected: ``` System.Data.SqlClient.SqlException : A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) ``` ### Setup SQL 2014 and SQL 2016 Ubuntu 14.04-x64 System.Data.SqlClient/4.1.0-rc2-24027 Exact same app works on Windows against the exact same database using an identical connection string: `Server=mymachine.com;User ID=user;Password=password;Connect Timeout=30` " +8703 area-System.Data System.Data.SqlClient: System.OverflowException during Prelogin Handshake "During the Sql Client prelogin handshake, it appears the Sql Client does not respect the stream nature of TCP and will fail with _System.OverflowException: Arithmetic operation resulted in an overflow_ if the underlying socket read call returns less bytes than expected. Sample app that repro's the issue: ``` csharp class Program { static void Main(string[] args) { string sqlHost = ""[YourDBHost]""; Task.Factory.StartNew(() => { SetupProxy(sqlHost); }); // Using sleeps to avoid any races... Thread.Sleep(1000); using (SqlConnection conn = new SqlConnection(""Server=localhost,9999;Database=[YourDBName];User ID=sa;Password=[password];Encrypt=False"")) { conn.Open(); Console.WriteLine(""Open succeeds""); } } static void SetupProxy(string actualHost) { // Create listener, wait for client TcpListener listener = new TcpListener(9999); listener.Start(); var client = listener.AcceptTcpClient(); var sqlClient = new TcpClient(actualHost, 1433); // Setup reading and writing proxy Task.Factory.StartNew(() => { ForwardToSql(client, sqlClient); }); Task.Factory.StartNew(() => { ForwardToClient(client, sqlClient); }); } static void ForwardToSql(TcpClient ourClient, TcpClient sqlClient) { while(true) { byte[] buffer = new byte[1024]; int bytesRead = ourClient.GetStream().Read(buffer, 0, 1024); sqlClient.GetStream().Write(buffer, 0, bytesRead); } } static void ForwardToClient(TcpClient ourClient, TcpClient sqlClient) { byte[] buffer; int bytesRead; // Read one byte first to show the issue. // Comment this out to see things work as expected. buffer = new byte[1]; bytesRead = sqlClient.GetStream().Read(buffer, 0, 1); if(bytesRead != 1) { Console.WriteLine(""Failed reading a single byte...""); return; } ourClient.GetStream().Write(buffer, 0, bytesRead); // Now proxy normally. We will sleep for 500ms to make sure that nagling doesn't cause further data to be bundled with this. Thread.Sleep(500); while (true) { buffer = new byte[1024]; bytesRead = sqlClient.GetStream().Read(buffer, 0, 1024); ourClient.GetStream().Write(buffer, 0, bytesRead); } } } ``` " +8704 area-Serialization Setting ReflectionAsBackup as default. @shmao @khdang @zhenlan +8708 area-System.Globalization System.Tests.StringTests.{Starts|Ends}With_NullInStrings failures on CentOS ``` 18:23:43 System.Tests.StringTests.StartsWith_NullInStrings(comparison: CurrentCulture) [FAIL] 18:23:43 Assert.False() Failure 18:23:43 Expected: False 18:23:43 Actual: True 18:23:43 Stack Trace: 18:23:43 at System.Tests.StringTests.StartsWith_NullInStrings(StringComparison comparison) 18:23:43 System.Tests.StringTests.StartsWith_NullInStrings(comparison: CurrentCultureIgnoreCase) [FAIL] 18:23:43 Assert.False() Failure 18:23:43 Expected: False 18:23:43 Actual: True 18:23:43 Stack Trace: 18:23:43 at System.Tests.StringTests.StartsWith_NullInStrings(StringComparison comparison) 18:23:43 System.Tests.StringTests.EndsWith_NullInStrings(comparison: CurrentCulture) [FAIL] 18:23:43 Assert.False() Failure 18:23:43 Expected: False 18:23:43 Actual: True 18:23:43 Stack Trace: 18:23:43 at System.Tests.StringTests.EndsWith_NullInStrings(StringComparison comparison) 18:23:43 System.Tests.StringTests.EndsWith_NullInStrings(comparison: CurrentCultureIgnoreCase) [FAIL] 18:23:43 Assert.False() Failure 18:23:43 Expected: False 18:23:43 Actual: True 18:23:43 Stack Trace: 18:23:43 at System.Tests.StringTests.EndsWith_NullInStrings(StringComparison comparison) 18:23:43 Finished: System.Runtime.Tests 18:23:43 18:23:43 === TEST EXECUTION SUMMARY === 18:23:43 System.Runtime.Tests Total: 5781, Errors: 0, Failed: 4, Skipped: 0, Time: 3.193s ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_tst_prtest/1303/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 +8712 area-System.Security JwtBearer validation failes on osx but works on windows "_From @hsorbo on May 20, 2016 14:16_ Been struggeling with exceptions porting from rc1 to rc2 on os x. On windows it seems to work, but failes with this on os x. Im using RS256. Am i missing something? ``` info: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware[7] auth0 was not authenticated. Failure message: IDX10503: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.X509SecurityKey , KeyId: RkUxNDU0QTg0RTNCRTNEQjk5ODg5MDBGRjIxQTJFQkM0NThBODgwQg '. Exceptions caught: 'System.ArgumentNullException: Value cannot be null. Parameter name: SafeHandle cannot be null. at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Crypto.RsaVerify(Int32 type, Byte[] m, Int32 m_len, Byte[] sigbuf, Int32 siglen, SafeRsaHandle rsa) at System.Security.Cryptography.RSAOpenSsl.VerifyHash(Byte[] hash, Byte[] signature, HashAlgorithmName hashAlgorithmName) at System.Security.Cryptography.RSAOpenSsl.VerifyHash(Byte[] hash, Byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) at System.Security.Cryptography.RSA.VerifyData(Byte[] data, Int32 offset, Int32 count, Byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) at System.Security.Cryptography.RSA.VerifyData(Byte[] data, Byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) at Microsoft.IdentityModel.Tokens.AsymmetricSignatureProvider.Verify(Byte[] input, Byte[] signature) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(Byte[] encodedBytes, Byte[] signature, SecurityKey key, String algorithm) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters) ``` The setup code is fairly trivial: ``` app.UseJwtBearerAuthentication(new JwtBearerOptions { AuthenticationScheme = ""auth0"", Audience = Configuration[""Auth0:Audience""], Authority = Configuration[""Auth0:Authority""], AutomaticAuthenticate = true, AutomaticChallenge = true, }); ``` ``` brew info openssl openssl: stable 1.0.2h (bottled) [keg-only] ``` ``` dotnet --version 1.0.0-preview1-002702` ``` ``` uname -a Darwin Macarena.local 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64` ``` _Copied from original issue: aspnet/Security#826_ " +8713 area-System.Net HttpMessageContent - Is this a part of .NET Core? Can I use `HttpMessageContent` with .NET Core. I can't seem to find this class here or anywhere else. Any pointer will be appreciated. +8714 area-System.Net MailMessage and SmtpClient libraries in CoreFx Greetings, I'm using RC1 in production for my web application and it uses .NET Mail Service assemblies for sending mails using MailMessage and SmtpClient. These are only available on .NET Framework, when I'll get these libraries as a part of CoreFx so that I can port my application on .NET Core and avoid using 3rd party libraries. Regards, +8715 area-System.Net HttpRequestHeaders Date header Hello, Proposal: I think Date header in HttpRequestHeaders (and maybe other headers of DateTimeOffset type) must be of new DateTimeHeaderValue type which will be convertible to/from DateTimeOffset and string. Rationale: Many token based authentication schemes require client to send some hash/HMAC of request data. Value of Date header is almost always part of data to be hashed/HMACed. While values of other types of headers (like StringWithQualityHeaderValue) can be get by simply calling ToString() this is not the case for Date. So you'll have to read documentation on how dates are represented in HTTP headers and convert value exactly the same way. Or probably dig into source code of CoreFX to see how it's done. Abstraction leaked the bad way. As a side note, maybe it's good idea to provide type conversion operators for header value types, which will call ToString/Parse internally and ease one's life. +8716 area-System.Security System.Security.Cryptography.Native OSX build errors. My native build on OSX is failing from some compilation errors in the native crypto library. The failures look to be introduced by https://github.com/dotnet/corefx/pull/8600. ``` Scanning dependencies of target System.Security.Cryptography.Native [ 66%] [ 67%] [ 69%] [ 70%] [ 72%] Building CXX object System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_ecc_import_export.cpp.o Building CXX object System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_hmac.cpp.o Building CXX object System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_ssl.cpp.o Building CXX object System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_x509ext.cpp.o Building CXX object System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_x509_root.cpp.o /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_ecc_import_export.cpp:351:14: error: use of undeclared identifier 'EC_KEY_set_public_key_affine_coordinates' if (!EC_KEY_set_public_key_affine_coordinates(*key, qxBn, qyBn)) ^ /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_ecc_import_export.cpp:493:14: error: use of undeclared identifier 'EC_KEY_set_public_key_affine_coordinates' if (!EC_KEY_set_public_key_affine_coordinates(key, qxBn, qyBn)) ^ 2 errors generated. make[2]: *** [System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_ecc_import_export.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_ssl.cpp:80:34: error: use of undeclared identifier 'SSL_OP_NO_COMPRESSION' SSL_CTX_set_options(ctx, SSL_OP_NO_COMPRESSION); ^ /usr/include/openssl/ssl.h:582:39: note: expanded from macro 'SSL_CTX_set_options' SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) ^ 1 error generated. make[2]: *** [System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_ssl.cpp.o] Error 1 /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_hmac.cpp:33:9: error: cannot initialize a variable of type 'int' with an rvalue of type 'void' int ret = HMAC_Init_ex(ctx.get(), key, keyLen, md, nullptr); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_hmac.cpp:56:12: error: cannot initialize return object of type 'int32_t' (aka 'int') with an rvalue of type 'void' return HMAC_Init_ex(ctx, nullptr, 0, nullptr, nullptr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_hmac.cpp:70:12: error: cannot initialize return object of type 'int32_t' (aka 'int') with an rvalue of type 'void' return HMAC_Update(ctx, data, UnsignedCast(len)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/bryan/git/corefx/src/Native/System.Security.Cryptography.Native/pal_hmac.cpp:86:9: error: cannot initialize a variable of type 'int' with an rvalue of type 'void' int ret = HMAC_Final(ctx, md, &unsignedLen); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 errors generated. make[2]: *** [System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/pal_hmac.cpp.o] Error 1 make[1]: *** [System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.dir/all] Error 2 ``` This is on a fresh clone of the CoreFX repo. @steveharter @bartonjs +8718 area-Infrastructure NuGet packages for releases should have more memorable versions "Currently, the package versions for the RC2 release look something like this: | Package | Version | | --- | --- | | Microsoft.NETCore.App | 1.0.0-rc2-3002702 | | NETStandard.Library | 1.5.0-rc2-24027 | | System.Collections | 4.0.11-rc2-24027 | | Microsoft.AspNetCore.Server.Kestrel | 1.0.0-rc2-final | There seem to be three groups: - Microsoft.NETCore.App: rc2-3002702 - CoreFX: rc2-24027 - ASP.NET Core: rc2-final I like the ASP.NET Core approach of marking the release version by ""-final"", while CoreFX and NETCore.App just use a seemingly meaningless number. Would it be possible to use the ""-final"" approach for future releases of CoreFX, NETCore.App and any other .Net Core packages? I think this is especially important since hand-editing project.json seems to be a relatively common practice. " +8719 area-System.Collections BitArray should include shift operators As far as I can tell, BitArray does not currently support shift operators. These would be really useful if they could be implemented efficiently. ### API Proposal For details see https://github.com/dotnet/corefx/issues/8719#issuecomment-221659151 and https://github.com/dotnet/corefx/issues/8719#issuecomment-245046251 ```diff public sealed partial class BitArray : System.Collections.ICollection, System.Collections.IEnumerable { ... + public System.Collections.BitArray RightShift(int count); + public System.Collections.BitArray LeftShift(int count); ... } ``` +8721 area-System.Security ProjectReference -> Package Dependency: cannot convert from 'System.Security.Cryptography.ECCurve' to 'int' A recent change to System.Security.Cryptography.OpenSsl changed the surface area of the library. The result is that if you try to build tests against packages (convert projectrefrence’s into package dependencies), you get a build break. ``` 2016-05-20T07:00:03.3568246Z EcDsaOpenSslProvider.cs(21,37): error CS1503: Argument 1: cannot convert from 'System.Security.Cryptography.ECCurve' to 'int' [D:\A\_work\1\s\src\System.Security.Cryptography.OpenSsl\tests\System.Security.Cryptography.OpenSsl.Tests.csproj] 2016-05-20T07:00:03.3568246Z EcDsaOpenSslTests.cs(250,35): error CS1503: Argument 1: cannot convert from 'System.Security.Cryptography.ECCurve' to 'int' [D:\A\_work\1\s\src\System.Security.Cryptography.OpenSsl\tests\System.Security.Cryptography.OpenSsl.Tests.csproj] 2016-05-20T07:00:03.3568246Z EcDsaOpenSslTests.cs(265,35): error CS1503: Argument 1: cannot convert from 'System.Security.Cryptography.ECCurve' to 'int' [D:\A\_work\1\s\src\System.Security.Cryptography.OpenSsl\tests\System.Security.Cryptography.OpenSsl.Tests.csproj] 2016-05-20T07:00:03.3568246Z EcDsaOpenSslTests.cs(274,35): error CS1503: Argument 1: cannot convert from 'System.Security.Cryptography.ECCurve' to 'int' [D:\A\_work\1\s\src\System.Security.Cryptography.OpenSsl\tests\System.Security.Cryptography.OpenSsl.Tests.csproj] ``` I am creating a PR to disable this library from the conversion until this issue has been resolved. This issue is tracking the problem, and the temporary work-around. /cc @steveharter , @bartonjs +8723 area-Meta Port WCF message security to Core For full WCF support, and compatibility with Mono, WCF needs to bring in Message Security and the myriad of supporting classes around it. Message security enables confidentially, integrity and authentication within the message, rather than relying on the transport, thus enabling end-to-end security through message routers and a wider set of authentication mechanisms which are not limited by transport capabilities. +8724 area-System.IO Disable event filtering on OSX FSW The OSX FileSystemWatcher coalesces past events of a file into new events. Previously we did some special work to try to filter out those extraneous events to better match the FSW inotify/win32 behavior. However, this had the consequence that we filtered out some valid events. This commit modifies the behavior to raise an event for exactly every flag that the OS API sets. It also modifies the OSX tests to no longer assert that an event _didn't_ occur, but to only assert that an event _did_ occur. resolves #8547 +8725 area-System.IO Increase FSW InternalBufferSize test values Seems we're intermittently not hitting the InternalBufferSize capacity in one of our FSW tests. Upping the expected capacity should resolve the issue. @stephentoub resolves #8569 +8726 area-System.IO Special-case FSW tests for Win7 A few of the FSW tests are failing from differences between the win7 FSW behavior and the win8+ FSW behavior. resolves #8436 @stephentoub @Priya91 +8727 area-System.Net UnixDomainSocketEndPoint should set length instead of null-terminating I've used (a copy of) UnixDomainSocketEndPoint to connect to a unix socket with an abstract address (path starts with a zero-byte). The connect call failed with ECONNREFUSED. When I changed the implementation to pass `2 + _encodedPath.Length` instead of `s_nativeAddressSize` in Serialize the connect works. \cc @stephentoub +8731 area-System.Net Remove dead code from System.Net.CredentialCache Remove an internal property on `CredentialCache` that is not used anywhere in CoreFX. In the full framework, the internal property is only used in [two places](http://referencesource.microsoft.com/#System/net/System/Net/CredentialCache.cs,7f6f0db537998048,references), inside `HttpWebRequest` and `SmtpClient`. cc: @davidsh, @CIPop +8735 area-System.Globalization Question: How to get RegionInfo from CultureInfo "In net45 I was using the following code to get the correct region info. ``` var ci = new System.Globalization.CultureInfo(""sv-SE""); var ri = new System.Globalization.RegionInfo(ci.LCID); ``` Is there any way that I can do more or less the same in dotnet-core? The reason is that the Swedish region info (if created from `SE`) is returned the following; that not is the main region information, and need to find correct main region. ``` PS> New-Object system.globalization.regioninfo(""SE"") Name : SE EnglishName : Sweden DisplayName : Sweden NativeName : Ruoŧŧa TwoLetterISORegionName : SE ThreeLetterISORegionName : SWE ThreeLetterWindowsRegionName : SWE IsMetric : True GeoId : 221 CurrencyEnglishName : Swedish Krona CurrencyNativeName : ruvdnu CurrencySymbol : kr ISOCurrencySymbol : SEK ``` If I go with the LCID instead from `CultureInfo(""sv-SE"")` I got the correct main region out. ``` PS> New-Object system.globalization.regioninfo((New-Object system.globalization.cultureinfo(""sv-se"")).LCID) Name : SE EnglishName : Sweden DisplayName : Sweden NativeName : Sverige TwoLetterISORegionName : SE ThreeLetterISORegionName : SWE ThreeLetterWindowsRegionName : SWE IsMetric : True GeoId : 221 CurrencyEnglishName : Swedish Krona CurrencyNativeName : Svensk krona CurrencySymbol : kr ISOCurrencySymbol : SEK ``` " +8736 area-Serialization DCS/DCJS: CultureInfo is not serializable Today, if you try to serialize CultureInfo, you'll get the following error: System.Runtime.Serialization.InvalidDataContractException : Type 'System.Globalization.CompareInfo' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. Alternatively, you can ensure that the type is public and has a parameterless constructor - all public members of the type will then be serialized, and no attributes will be required. +8742 area-Serialization Reflection Based DCS Bug Fixes: Fixed All Test Failures in NetCore. This PR includes 7 commits fixing 22 failed tests. One commit addressed one issue/bug. It might be easier to review the PR by reviewing each commit separately. /cc: @SGuyGe @khdang @zhenlan +8744 area-System.Net failure in ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success Details in http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1552/console on a [PR](https://github.com/dotnet/corefx/pull/8707) that could not possibly cause the issue System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success(serverProtocol: Tls11) [FAIL] System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs(232,0): at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SecureCredential scc) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SslStreamPal.Windows.cs(330,0): at System.Net.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential secureCredential) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SslStreamPal.Windows.cs(126,0): at System.Net.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureChannel.cs(769,0): at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureChannel.cs(901,0): at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureChannel.cs(805,0): at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs(749,0): at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs(955,0): at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs(1131,0): at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs(742,0): at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs(710,0): at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- +8749 area-Infrastructure CoreRun.exe not being copied to test directory when the script is run "Hi, I've recently rebased against the latest changes you guys have made to the repo. When I do a clean build of the repo via ``` cmd build /p:ConfigurationGroup=Release /p:SkipTests=true ``` and then cd to an individual `bin/tests/OS.CPU.Release/Assembly.Tests`, then run the `RunTests` script with `path\to\corefx\packages` as the argument, I get the following output: ``` Using C:\Users\James\Code\git\corefx\packages as folder for resolving package dependencies. Executing in C:\Users\James\Code\git\corefx\bin\tests\AnyOS.AnyCPU.Release\System.Reflection.Tests\dnxcore50\ Hard linking dependent files... Finished linking needed files, moving to running tests. Running tests... Start time: 23:42:38.95 Command(s): CoreRun.exe xunit.console.netcore.exe System.Reflection.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests 'CoreRun.exe' is not recognized as an internal or external command, operable program or batch file. Finished running tests. End time=23:42:38.97, Exit code = 1 ``` Looking into the code of the script, it appears the `CoreRun` executable isn't being copied into the test directory, even though it's still being used. [Here's](https://gist.github.com/jamesqo/66617b7ae005de8e6019cc9de146691e) a gist I made of the script (this particular one is for `System.Runtime.Tests`); if you do a Ctrl + F and search for ""corerun"", you'll notice it's not in one of the dependent files linked in. " +8761 area-System.IO Pipes tests failing on CentOS innerloop - UnauthorizedAccessException : Access to the path '/tmp/.dotnet/corefx' is denied http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/centos7.1_release_tst_prtest/4/testReport/ MESSAGE: System.UnauthorizedAccessException : Access to the path '/tmp/.dotnet/corefx' is denied.\n---- System.IO.IOException : Permission denied +++++++++++++++++++ STACK TRACE: at System.IO.Pipes.PipeStream.CreateDirectory(String directoryPath) at System.IO.Pipes.PipeStream.EnsurePipeDirectoryPath() at System.IO.Pipes.PipeStream.GetPipePath(String serverName, String pipeName) at System.IO.Pipes.NamedPipeServerStream.Create(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.Tests.NamedPipeTest_CreateServer.Unix_GetHandleOfNewServerStream_Throws_InvalidOperationException() ----- Inner Stack Trace ----- +8763 area-System.Runtime 300+ test failures with TypeLoadException: Could not load type 'System.Runtime.InteropServices.GCHandle' from assembly 'System.Runtime' "- OS X http://dotnet-ci.cloudapp.net/job/dotnet_coreclr/job/master/job/checked_osx_tst_prtest/1821/testReport/ - Ubuntu http://dotnet-ci.cloudapp.net/job/dotnet_coreclr/job/master/job/checked_ubuntu_tst_prtest/1954/testReport/ Stacktrace MESSAGE: BEGIN EXECUTION /Users/dotnet-bot/j/workspace/dotnet_coreclr/master/checked_osx_tst_prtest/bin/tests/Windows_NT.x64.Checked/Tests/coreoverlay/corerun Pinned.exe Unhandled Exception: System.TypeLoadException: Could not load type 'System.Runtime.InteropServices.GCHandle' from assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. ./Pinned.sh: line 106: 61574 Abort trap: 6 $_DebuggerFullPath ""$CORE_ROOT/corerun"" Pinned.exe $CLRTestExecutionArguments Expected: 100 Actual: 134 END EXECUTION - FAILED +++++++++++++++++++ STACK TRACE: " +8768 area-System.Net Restore Socket.ConnectAsync via hostname on *nix platforms. There's a bit of history to this, but due to https://github.com/dotnet/corefx/issues/5829 which was resolved by https://github.com/dotnet/corefx/commit/30bd4b79185d83f269f6a6e432881998a0158178, we are no longer able to use hostnames in socket connections for some platforms. Currently, it's a runtime `PlatformNotSupportedException`. This breaks [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) on at least OS X and Linux, you can see the issue filed here: https://github.com/StackExchange/StackExchange.Redis/issues/410 The best notes for this are in the https://github.com/dotnet/corefx/commit/30bd4b79185d83f269f6a6e432881998a0158178 commit, copied here for ease of consumption: > On unix, once connect fails on a socket, that socket becomes unusable for further operations, including additional connect attempts. This is at direct odds with Socket's instance Connect methods, some of which allow for multiple connect attempts, either due to multiple IPAddresses being provided or due to a string hostname / DnsEndPoint being provided that could then result in multiple IPAddresses to be tried. > > We've explored multiple workarounds for this, all of which have problems. The workaround still in the code involves creating a temporary socket for each address, connecting to it, and if that's successful then immediately disconnecting and connecting with the actual socket. But that causes mayhem for a server not expecting that pattern, e.g. that fails if the client disconnects and attempts a reconnect. > > This leaves us with a few choices, none of which are great: > 1. Remove the offending Connect instance methods. Ideally they'd be replaced with static methods, which can be implemented with POSIX-compliant behavior. But these methods are heavily used and work on Windows. > 2. Always throw from the instance Connect methods when there's a possibility that multiple addresses will be tried, e.g. from Connect(IPAddress[], ...) but also from Connect(EndPoint) if a DnsEndPoint is specified. This will break a lot of existing code, but it's also predictable, and developers will know quickly when using a problematic API and move away from it to supported patterns. > 3. Throw from the Connect methods if multiple addresses are actually supplied, e.g. calling Connect(IPAddress[]) with an array of length 1 would work but an array of length 2 will fail. This will allow a lot more existing code to work, but it's also very unpredictable, e.g. if a string host is provided and gets mapped by DNS to a single IPAddress in the test environment but then multiple IPAddresses in the production environment, everything will work fine locally but then fail in production. > 4. When presented with multiple addresses, try the first one, and if it fails, then throw a PlatformNotSupportedException. This may be slightly more predictable than (3), but is still unpredictable, e.g. if a DNS server returns addresses in a different quantity or order from another server. Currently option 2 is implemented, which breaks this codepath: [`SocketTaskExtensions.ConnectAsync(this Socket socket, string host, int port)`](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Net.Sockets/src/System/Net/Sockets/SocketTaskExtensions.cs#L60) [`Socket.BeginConnect(string host, int port, AsyncCallback requestCallback, object state)`](https://github.com/dotnet/corefx/blob/c2a6a128a6d2cdbad3a8be663d027152ca9d63bc/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L2304) This hits [line 2334](https://github.com/dotnet/corefx/blob/c2a6a128a6d2cdbad3a8be663d027152ca9d63bc/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L2334): `ThrowIfNotSupportsMultipleConnectAttempts();` The _exact_ codepath doesn't matter, because several more feed into this one. In fact even if you call [`BeginConnect(EndPoint remoteEP, AsyncCallback callback, object state)`](https://github.com/dotnet/corefx/blob/c2a6a128a6d2cdbad3a8be663d027152ca9d63bc/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L2262), it's still calling [`BeginConnect(dnsEP.Host, dnsEP.Port, callback, state);`](https://github.com/dotnet/corefx/blob/c2a6a128a6d2cdbad3a8be663d027152ca9d63bc/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L2293) in the host case anyway. So even using the explicit overload of a single endpoint, it still breaks. I would like us to change to option 3 in the comments above, only throwing **for the case that breaks**. The current state needlessly breaks existing code for no real reason. The comments in option 3 about deployments being a surprise break is perfectly valid, but it's no worse than option 2 and we're seeing that break in actual runtime usage already out in the wild. If we can't prevent the issue in general (it looks like all practical options have been exhausted there), I would argue for 2 changes: 1. Only break when multiple endpoints are _actually_ passed in. 2. Provide a much clearer exception message on why we're throwing, [here's a link to the current one](https://github.com/dotnet/corefx/blob/183f7fb0136d8b25f7e0194df4f18930d4199939/src/System.Net.Sockets/src/Resources/Strings.resx#L277). +8771 area-System.Reflection Downgrade S.R.Metadata to v1.2.1 and internalize public surface for NET Core 1.0.0 RTM "The changes under development for S.R.Metadata 1.3 are aligned to the VS ""15"" schedule and there are insufficient resources to lock them down now. We should set the .NET Core 1.0.0 RTM version of System.Reflection.Metadata to 1.2.1 and internalize the features under development for 1.3. We still need a new 1.2.1 package to support the new netstandard scheme for packages. cc @ericstj @tmat I have the change ready. Creating a tracking issue to follow the v1.0.0 change process. " +8773 area-System.IO ReadLinesReader.CreateIterator might not dispose a stream I just discovered [this](https://github.com/dotnet/corefx/blob/538a35ee2e7fe09ea5024ad464cb99331fec0b05/src/System.IO.FileSystem/src/System/IO/ReadLinesIterator.cs#L100) dubious line in the ReadLineIterator. If the StreamReader reader is not null the method still opens a stream but never disposes it or returns it in any way to the caller. This looks wrong to me. This might happen if Clone() is called. I think this should be fixed or a comment should be added explaining why this is the correct behavior. +8779 area-Serialization NetDatacontractSerializer functionality on linux Hi, We are trying to port our codebase to Linux. Right now, we are using NetDatacontractSerializer to send exception over wire as the client doesn't know the type of exception beforehand. Since NetDatacontractSerializer is no longer present in coreclr, we tried using DataContractResolver . However, since type information is not embedded in the serialized object, it throws an exception when we are trying to deserialize. In full CLR, DataContractResolver with dataContractSerializer would've solved the problem. Though DataContractResolver is available in coreCLR, there is no constructor of DataContractResolver using DataContractResolver. Is this the intended behavior. Can you help me out? +8783 area-System.Runtime Interop.mincore.IdnToAscii/IdnToUnicode fails on UWP there are two pinvoke definitions in Interop.Idna.cs which isn't compatible with UWP app. https://github.com/dotnet/corefx/blob/d7d2f7a83269b9540cd9a966338149dcc014171b/src/Common/src/Interop/Windows/mincore/Interop.Idna.cs 1> Compiling interop code 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2132,21): error : The best overloaded method match for 'McgInterop.api_ms_win_core_localization_l1_2_0_dll_PInvokes.IdnToUnicode(uint, ushort_, int, ushort_, int)' has some invalid arguments 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2136,9): error : Argument 4: cannot convert from 'char_' to 'ushort_' 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2231,21): error : The best overloaded method match for 'McgInterop.api_ms_win_core_localization_l1_2_0_dll_PInvokes.IdnToAscii(uint, ushort_, int, ushort_, int)' has some invalid arguments 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2235,9): error : Argument 4: cannot convert from 'char_' to 'ushort_' 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2289,21): error : The best overloaded method match for 'McgInterop.api_ms_win_core_localization_l1_2_0_dll_PInvokes.IdnToAscii__0(uint, ushort_, int, ushort_, int)' has some invalid arguments 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2293,9): error : Argument 4: cannot convert from 'char_' to 'ushort_' 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2317,21): error : The best overloaded method match for 'McgInterop.api_ms_win_core_localization_l1_2_0_dll_PInvokes.IdnToUnicode__0(uint, ushort_, int, ushort_, int)' has some invalid arguments 1>c:\users\namc\documents\visual studio 2015\Projects\App2\App2\obj\x86\Release\ilc\intermediate\App2.McgInterop\PInvoke.g.cs(2321,9): error : Argument 4: cannot convert from 'char_' to 'ushort_' +8787 area-Infrastructure OuterLoop: Release builds test with previous build native binaries, causing upgrade failures ``` MESSAGE: System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_EcKeyCreateByOid' in DLL 'System.Security.Cryptography.Native'. +++++++++++++++++++ STACK TRACE: at Interop.Crypto.EcKeyCreateByOid(String oid) at System.Security.Cryptography.ECDsaOpenSsl.GenerateKeyLazy() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.ECDsaOpenSsl.DuplicateKeyHandle() at System.Security.Cryptography.OpenSsl.Tests.RsaOpenSslTests.VerifyDuplicateKey_ECDsaHandle() ``` To see full test log [here](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_release/47/#showFailuresLink) +8797 area-System.IO FileStream to fully support externally open files # Proposal Add ``` FileStream(string path, SafeFileHandle handle, FileAccess fileAccess, int bufferSize, bool isAsync) ``` platform independent constructor for externally opened files, when both handle and path are known. # Rationale My case is good support for Transactioned NTFS file stream https://bitbucket.org/triflesoft/nabu/src/c52a39909bab429e4a7ce61fa1432e1d48b09ca9/Sources/Modules/Nabu.Platform.Vista/FileSystem/Streams/TxFileStream.cs where I open file by calling CreateFileTransactedW native API function and know both path and handle, but cannot supply both to constructor and forced to use dirty hack. Maybe there are other similar cases I do not know about. Anyway this is just a few lines of code which will break nothing. So effort is small and risk is absent. +8806 area-System.Runtime Provide API to enumerate assemblies that constitute the application "This has shown up a couple times as a limitation in the Win8-aot .NET profile - .NET Core doesn't provide a way to enumerate assemblies that constitute the ""running application"". Frameworks such as Xamarin Forms need to use [workarounds](https://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/#troubleshooting) to build such lists. It can be up to a debate whether: - We define a new API, or reuse an existing one (`AppDomain.GetAssemblies` with a well defined behavior) - The API returns Assemblies, or string names. - We treat System.Private assemblies specially or not. - Etc. " +8807 area-System.Data AAD Auth (Federated Authenticaion) Support for Azure SQL Database "Please add AAD auth support for Azure SQL Database the way how that' s supported in .NET framework 4.6. We should be able to use Authentication modes like ""Active Directory Integrated"" and ""Active Directory Password"" in the connecting string. Currently, including aforementioned authentication modes result into following error: “Keyword not supported: ‘authentication’ . " +8809 area-System.Net Huge performance issue with HttpClient.PostAsync after upgrade from RC1 to RC2 "This issue related to (_https://github.com/aspnet/JavaScriptServices/issues/92_) We faced some strange issue with `await client.PostAsync` I created sample repository to show what we have here, you can find it [here](https://github.com/laskoviymishka/HttpIssue) To run sample do following steps: 1. Clone repository 2. Run `cd src\WebApplication1 & dotnet restore & dotnet run` 3. Run `cd ..\ConsoleApp1\ & dotnet restore & dotnet run` 4. Check how long it takes to make 20 post api requests To see how it works in classic .net open solution There is 2 console project with really same code, but .netcore version take significant longer. Please notice that stop watch show incorrect amount of time, or may be i log it incorect. Please notice that in RC1 version of _https://github.com/aspnet/JavaScriptServices_ the really same code perform usually for ~50-60 ms. Right not it executed ~1.2-1.5 second. Here is version of dotnet which i use: `.NET Command Line Tools (1.0.0-preview1-002702)` ConsoleApp run for following framework: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""dnxcore50"" } } ``` JavaScriptServices for following: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""dnxcore50"", ""portable-net45+win8"" ] } }, ``` This is major issue IMHO. Can anyone advise? May be i miss something? " +8810 area-System.IO Path Too Long Exception Raising here as per: https://github.com/aspnet/FileSystem/issues/193 I'm listing files from an `IFileProvider` by enumerating the files, and filtering based on the file extension. However when accessing `IFileInfo.PhysicalPath` I'm getting a `PathTooLongException` ![image](https://cloud.githubusercontent.com/assets/3176632/15479635/f963432a-2118-11e6-8fb8-5a801bfb7e06.png) I'm using build `1.0.0-rc2-15922` in an ASP.NET 5 RC1 based application. Given that the file exists (on Windows), why should it error when accessing it's path? +8811 area-System.Net SslStream should handle handshake and close_notify alerts At least until 2014, there was a problem with SslStream, where it didn't terminate the connection properly. There is a solution for the problem described on [Stack Overflow: .NET SslStream doesn't close TLS connection properly](http://stackoverflow.com/questions/237807/net-sslstream-doesnt-close-tls-connection-properly). This solution (obviously) doesn't work any more with .NET Core. Is this problem fixed, or do we still need some kind of workaround? +8813 area-System.Data SqlConnection with a blank password leads to NRE The repro code is below `SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder(); bldr.Password = string.Empty; SqlConnection conn = new SqlConnection(bldr.ConnectionString); ` The above code throws a NullReferenceException when an empty password is set. +8815 area-Infrastructure "Lots of ""CoreRun.exe"" not found issues during CI" I noticed when looking at a test results lots of errors like ``` 14:16:22 System.AppContext -> /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/bin/ref/System.AppContext/4.1.0.0/System.AppContext.dll 14:16:25 /bin/sh: 3: /tmp/tmpe981cd0cc1d24e4dbb12e5d80b2be7eb.exec.cmd: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/Tools/CoreRun.exe: not found ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/1490/consoleFull This one, for example, has 319 of these messages. I can't quite tell if this means that the tests aren't running or if it is innocuous. @MattGal is this related to your test runner work? I'm guessing this is coming from https://github.com/dotnet/buildtools/commit/6a824644b18126db086065175226f3f5dd6b4ed8 /cc @weshaggard @joperezr in case they have any ideas. I see Joe previously made a change to tool-runtime to copy corerun to corerun.exe. +8819 area-System.Net WinHttpRequestState memory leak when cancelling requests (reported by ASP.NET team). cc: @DavidObando There is a memory leak of WinHttpRequestState (and related objects) when the outstanding http request is canceled prior to it completing with an HttpResponseMessage. +8821 area-System.Threading Non value returning TaskCompletionSource `TaskCompletionSource` is an easy to use class to use for deferred result returning Tasks controlled via user code; with coverage for exception and cancellation handling. However it would be good to have a non-result returning, non-generic version also e.g. `TaskCompletionSource` with `TrySetResult` => `TrySetCompleted` I often see `TaskCompletionSource` with `TrySetResult(null)` used for this purpose, however that is not very clean. +8835 area-Infrastructure Updating versions of externalpackages in pkg\ExternalPackages\versions.props This PR, https://github.com/dotnet/corefx/pull/8824, is introducing pkg\ExternalPackages\versions.props which we are using to determine version numbers for external packages (System.IO.Compression for example). We need some method (similar to UpdatePackageDependencyVersion), so that we can keep this file up to date w.r.t. the latest stable package version for these packages (perhaps making use of the versions repo). Until that is done, we'll have to be diligent about manually updating this file. :( /cc @jhendrixMSFT @weshaggard @jhendrixMSFT , assigning to you for tracking at the moment... +8839 area-System.Data Unable to load DLL 'sni.dll' I have seen several threads and applied all the solutions but unable to resolve my issue. I am building a simple console application which uses SQL Client for connecting to a database and execute the query in VS 2015 and i am getting this error. I installed visual c++ also for VS 2015 but it didn't solve my issue. What else i can do to resolve this ? P.S I am using .NET core 1.0.0. version +8841 area-Infrastructure Stop pulling live CoreCLR We've been hitting issues left and right recently because some of our jobs pull live CoreCLR bits and that breaks us. We've hit issues due to the mscorlib rename, changes that expose test issues, and the inability to get a consistent mscorlib/coreclr pair because of how we pull from jobs. Windows, OSX and Ubuntu 14.04 consume CoreCLR from packages. It's time that we do the same for the other distros. If we are concerned about trying to get an early read on if CoreCLR changes are going to break CoreFX, there should be tests in CoreCLR that use a LKG test drop and run with a live CoreCLR. +8848 area-System.Linq LinQ GroupBy fails with TResult I have the following Linq Expression (after loading elements from the database): ``` C# var result = memberships.GroupBy( m => m.Role, (role, ms) => new RoleUsage { Role = role, MemberCount = ms.Count(m => m.StructuralUnitId == query.StructuralUnitId), InheritedMemberCount = ms.Count(m => m.StructuralUnitId != query.StructuralUnitId) }).ToList(); ``` Where `memberships` is a `List` of _non null_ `Membership` instances. `Role` and `Membership` are simple classes. Running that Linq will fail with a NullReferenceException in the inner `Count(m => m..)` Expression, since `m` is `null`. We first thought, it would have to do with EF, which loads the `Memberships`, but it's not the case. Appearantly somewhere in Linqs GroupBy something goes wrong, since pointing with the Debugger on `ms` states Powers of 2 in elemt Count, with lots of empty entries. Further Investigation leads to `corefx / src / System.Linq / src / System / Linq / Lookup.cs` and especially `ApplyResultSelector` (Line 240), which applies the result selector to the Elemtents of a Grouping. Unfortunately that `_elements` (Line 253) appearantly contains null entries, which should not be present. +8853 area-System.Console Implement Console support for netcore50 The Windows implementation currently used for netcore50 will fail the WACK check as it calls a number of APIs unsupported by UWP. This commit adds a separate netcore50 build that stubs out the API calls and replaces them with PlatformNotSupportedExceptions or no-ops where appropriate. The result is a platform-agnostic version of System.Console that can be used anywhere but is severely stripped of functionality. - Where possible the behavior of a redirected Console operation will attempt to mimic that of a Unix redirected Console operation. Otherwise it will throw. - Encoding is fixed to UTF8. Attempting to set the Console encoding will no-op. - Added a section in the packaging build for the new netcore50 specific binary - Input/Output redirection and subsequent reads/writes work as expected. Discussion points: - This does not add System.Console to the UWP meta-package. That is mostly because I do not know where the UWP meta-package lives. - This does not redirect Console.WriteLine to Debug or ETW. Those functions currently throw PlatformSupportedException on a non-redirected stdout. I'm going to push an update that special-cases them to call Debug.WriteLine if the Console isn't redirected if we're sure that is the most useful alternative. @ericstj @weshaggard resolves #5875. +8855 area-System.Reflection Any reason System.Reflection.TypeExtensions can also target Profile151 I see no reason why it can't profile 151 when it already targets a lot of similar profiles. +8856 area-System.Data SqlClient high memory consumption when there is disk IO saturation ### Repro environment - Windows 10 - LocalDb - [npm](https://nodejs.org/en/) - loadtest: `npm install -g loadtest` - dotnet 1.0.0-preview2-002823 ### Scenario description Stress test for ASP.NET and Entity Framework. The code is [here](https://github.com/aspnet/Performance/tree/dev/testapp/BasicApi). There's a server side and a client side to the test. For the server side, execute the app with `dotnet run -c Release`. For the client side, execute `.\loadtest.ps1 -iterations 50000 -rps 500` The `-rps 500` part is important, as the issue only manifests itself when disk IO is saturated. ### Observed results Once the test starts running we're reaching disk IO saturation almost immediately. The memory increases dramatically, up to 1 GB in private bytes when loadtest is run with the parameters stated above. After the test is up, we force GC collection once and take some measurements of the managed heap: - Gen 0: 49,440 bytes - Gen 1: 384,344 bytes - Gen 2: 5,178,176 bytes - LOH: 6,375,520 bytes Totalling roughly 12 MB. That said, the application is currently taking 959 MB in total committed memory. I'm assuming then that there's native memory being held. A profile trace of the execution shows that most of the time is being spent in `ReadSniSyncOverAsync`. ### Expected results We expect the memory to not grow as much as it's doing now. ### Notes After forcing GC collection a number of times, we end up bringing the committed memory down to 515 MB and it stabilizes there. The managed heap shrinks from 12 MB to 10 MB. +8857 area-System.Threading Regression threading.NamedMutex.test1 (from (empty)) http://dotnet-ci.cloudapp.net/job/dotnet_coreclr/job/release_1.0.0/job/debug_centos7.1_prtest/11/testReport/junit/threading/NamedMutex/test1/ Stacktrace MESSAGE: 'paltest_namedmutex_test1' failed at line 355. Expression: m != nullptr 'paltest_namedmutex_test1' failed at line 421. Expression: WriteHeaderInfo(BuildGlobalShmFilePath(name, NamePrefix), -1, 0, &fd) 'paltest_namedmutex_test1' failed at line 502. Expression: m != nullptr 'paltest_namedmutex_test1' failed at line 607. Expression: m != nullptr 'paltest_namedmutex_test1' failed at line 248. Expression: parentEvents[i] != nullptr 'paltest_namedmutex_test1' failed at line 629. Expression: InitializeParent(parentEvents, childEvents) 'paltest_namedmutex_test1' failed at line 761. Expression: AbandonTests_Parent() 'paltest_namedmutex_test1' failed at line 234. Expression: WaitForSingleObject(childRunningEvent, FailTimeoutMilliseconds) == WAIT_OBJECT_0 'paltest_namedmutex_test1' failed at line 280. Expression: AcquireChildRunningEvent(childRunningEvent) 'paltest_namedmutex_test1' failed at line 675. Expression: InitializeChild(childRunningEvent, parentEvents, childEvents) +++++++++++++++++++ STACK TRACE: +8860 area-Infrastructure Update CI to use dotnet cli to build Ubuntu16.04 This is a tracking bug, to ensure using dotnet cli packages once available. dotnet/cli#2957 cc @joshfree +8864 area-Infrastructure Improve reliability of official builds. Official builds have been failing for the following reasons in order of severity. 1. Race in the build when building tests with one or more TargetGroups defined. 2. Missing retries when making Azure REST API calls. 3. Missing retries when downloading the CLI. These fixes have been tested and made in master, we need to port them to the release/1.0.0 branch as they are the only known issues causing those builds to fail. +8868 area-System.Net Regression System.Net.Sockets.Tests.DualMode.SendToV4IPEndPointToV6Host_NotReceived (from (empty)) http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/osx_release_prtest/24/testReport/junit/System.Net.Sockets.Tests/DualMode/SendToV4IPEndPointToV6Host_NotReceived/ Stacktrace MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.TimeoutException)\nActual: typeof(System.Net.Sockets.SocketException): Connection refused +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Socket.SendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP) at System.Net.Sockets.Tests.DualMode.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) Test failure in PR https://github.com/dotnet/corefx/pull/8863 +8869 area-System.Globalization Regression - 10 CharTests failures in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_tst/490/consoleFull#-21371504001f1a4601-6aec-4fd5-b678-78d4389fd5e8 16:33:59 System.Tests.CharTests.IsNumber_String_Int [FAIL] 16:33:59 Assert.False() Failure 16:33:59 Expected: False 16:33:59 Actual: True 16:33:59 Stack Trace: 16:34:00 at System.Tests.CharTests.IsNumber_String_Int() 16:34:00 System.Tests.CharTests.IsLower_String_Int [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsLower_String_Int() 16:34:00 System.Tests.CharTests.IsLower_Char [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsLower_Char() 16:34:00 System.Tests.CharTests.IsNumber_Char [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsNumber_Char() 16:34:00 System.Tests.CharTests.IsDigit_Char [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsDigit_Char() 16:34:00 System.Tests.CharTests.IsLetter_String_Int [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsLetter_String_Int() 16:34:00 System.Tests.CharTests.IsLetterOrDigit_Char [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsLetterOrDigit_Char() 16:34:00 System.Tests.CharTests.IsLetterOrDigit_String_Int [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsLetterOrDigit_String_Int() 16:34:00 System.Tests.CharTests.IsDigit_String_Int [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsDigit_String_Int() 16:34:00 System.Tests.CharTests.IsLetter_Char [FAIL] 16:34:00 Assert.False() Failure 16:34:00 Expected: False 16:34:00 Actual: True 16:34:00 Stack Trace: 16:34:00 at System.Tests.CharTests.IsLetter_Char() 16:34:01 Finished: System.Runtime.Tests 16:34:01 16:34:01 === TEST EXECUTION SUMMARY === 16:34:01 System.Runtime.Tests Total: 5757, Errors: 0, Failed: 10, Skipped: 0, Time: 2.846s 16:34:01 Finished running tests. End time=23:34:38. Return value was 10 +8872 area-Serialization Fixed an Issue in NetNative. Fixed bugs with using GetDataContractFromGeneratedAssembly in NetNative. This unblocked many failed tests in NetNative. +8874 area-Serialization Migrate xmlserializer metadatawriter This is work in progress as part of an attempt to add shim types for Reflection namespace so that we can use MetadataWriter in XmlSerializer. This PR is just for record. +8877 area-System.Net SendToAsyncV4IPEndPointToDualHost_Success timeout on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/1605/consoleText ``` System.Net.Sockets.Tests.DualMode.SendToAsyncV4IPEndPointToDualHost_Success [FAIL] System.TimeoutException : The operation has timed out. Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest@2/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1372,0): at System.Net.Sockets.Tests.DualMode.DualModeSendToAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest@2/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1327,0): at System.Net.Sockets.Tests.DualMode.SendToAsyncV4IPEndPointToDualHost_Success() ``` +8880 area-Infrastructure Code coverage broken recently Code coverage doesn't seem to be working anymore (I think after dnxcore50 -> netcoreapp1.0). ## Steps to reproduce - Clone the repo - Initialize build tools - Navigate to a test project (e.g. System.Collections.NonGeneric) - Run `msbuild /T:BuildAndTest /P:Coverage=true` ## Expected - ~100% code coverage ## Actual - 0% code coverage reported ![untitled](https://cloud.githubusercontent.com/assets/1275900/15567682/8c1a36a8-231f-11e6-836f-fc9f79f85cfd.png) /cc @ericstj +8883 area-System.Console Console Title test should run in separate process. Modifying the Title of the test process in Outerloop is prone to failure. Moving it to its own process is a bit safer. probably resolves #6223. I'll have to keep an eye on the win10 outerloop runs to verify this. They pass without issue locally. +8884 area-System.Net Delay HttpResponseMessage publishing in CurlHandler until all request data sent "libcurl uses a callback model, where it asks for request data when it wants to send it and passes back response information as it's received. It doesn't enforce any significant constraints on top of this, such that if a server sends response headers and even body before all of the request information has been received, libcurl will dutifully pass that data back to the application as it's received. CurlHandler responses to receiving response body data by completing the SendAsync with the HttpResponseMessage, which means it can complete this task after receiving all response headers but in some cases before all of the request data has been sent. This can actually be beneficial for some scenarios, however with the current HttpClient implementation, it can cause a problem: the request message is Dispose'd of as soon as the SendAsync Task completes, which means HttpClient might dispose of the request message while we're still trying to send data from it. There are two high-level solutions here: 1. Stop always disposing of the request message when SendAsync completes, leaving such disposal up to the consumer (or moving the responsibility to the handler), and state that it's allowed for a handler to complete the SendAsync task when all response headers have been received even if all request data has not yet been sent. 2. Force CurlHandler to not complete the SendAsync task until all request data has been sent, even if the response headers were completed before then. While in the future I would like to see us go with (1), as it opens up additional scenarios and simplifies this implementation, a decision was made to go with (2) for now. This PR implements that. There are two commits: - The first commit adds a bunch of additional tracing. This was beneficial in tracking down the cause of the original problem as seen in some WCF workloads, and it's useful to check it in to help with future investigations. - The second commit adds the completion delay to SendAsync. This is done primarily in the routine that's used to complete the SendAsync task and publish the response message: it now keeps track of whether it was previously invoked, and if it wasn't, it proceeds to do the publishing... but if a copy operation is still in progress, rather than doing the publishing directly, it hooks up a continuation to the copy task so that the publishing will be done when the copy completes. It also disables the ""Expect: 100-continue"" header that libcurl uses with posts by default, as otherwise libcurl may decide in certain situations not to send the payload, and if we've already kicked off the copy operation, we could end up hanging until the operation times out (such hanging is the biggest risk with this change). I also added several additional tests. cc: @davidsh, @ericeil, @mconnew, @KKhurin, @bartonjs Fixes https://github.com/dotnet/wcf/issues/1211 " +8887 area-Serialization Fixed issues in NetNative. Fixes all the places where we use GetDataContractFromGeneratedAssembly. +8890 area-System.Net Parsing /etc/resolv.conf throws exception when iterating network interfaces The default generated /etc/resolve.conf for a docker container causes enumeration of network interfaces to throw because the file does not end with a newline. ``` hexdump -C /etc/resolv.conf 00000000 0a 6e 61 6d 65 73 65 72 76 65 72 20 38 2e 38 2e |.nameserver 8.8.| 00000010 38 2e 38 0a 6e 61 6d 65 73 65 72 76 65 72 20 38 |8.8.nameserver 8| 00000020 2e 38 2e 34 2e 34 |.8.4.4| 00000026 ``` stacktrace ``` Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: startIndex at System.String.LastIndexOf(Char value, Int32 startIndex, Int32 count) at System.IO.RowConfigReader.TryGetNextValue(String key, String& value) at System.Net.NetworkInformation.StringParsingHelpers.ParseDnsAddressesFromResolvConfFile(String filePath) at System.Net.NetworkInformation.UnixIPInterfaceProperties.GetDnsAddresses() at System.Net.NetworkInformation.UnixIPInterfaceProperties..ctor(UnixNetworkInterface uni) at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__2(String name, LinkLayerAddressInfo* llAddr) at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound) at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() ``` /cc @mellinoe +8894 area-System.Net Move HTTP request content disposal responsibility to handlers Alternate to https://github.com/dotnet/corefx/pull/8884. Same core problem, but rather than addressing it by making CurlHandler artificially delay the SendAsync task's completion until all request data has been sent, it allows for that case and instead moves the responsibility for disposing of the request content from HttpClient to the handler. The first commit here is the same as in the other PR and simply adds a bunch of tracing (a small amount of that made it into the second PR as well). cc: @davidsh, @ericeil, @mconnew, @KKhurin, @bartonjs Partially addresses dotnet/wcf#1211. +8895 area-System.IO System.IO.Stream.Close() behavior issues "So normally you would think Dispose() does the same job including writing out the file to disk. It turns out there is one extra case. Space for the file is not guaranteed to have been allocated until calling close() or CloseHandle() and may not in fact exist. This means that writing a file swallows knowledge of certain errors that should be thrown. Close() must throw to catch write errors Dispose() must _not_ throw to avoid problems with using() {} blocks. In effect Dispose() is { try { Cose(); } catch (IOException){}} (omitting certain details of the dispose pattern for clarity) The code to replace a file safely was: using (f = new System.IO.FileStream(""name~"", ...) { /\* write contents */ f.Close(); } System.IO.Move(""name~"", ""name""); But now that doesn't work because Close() can't be there to error out. Adding it to just FileStream() doesn't help all that much. I have many occasions to do new MyStream1(new MyStream2(new GzipOutputStream(new FileStream(...)))); " +8899 area-Infrastructure Enable ApiCompat on Linux I am disabling this because it is broken presently and the breaks will cause problems when MSBuild actually starts to catch them. We need to fix up the problems (there are some file casing issues that need to be tracked down). +8908 area-Infrastructure Improve the CoreFX test runner Print out the detail information about discovered, passed or failed test case counts. And catch a ctrl-c event and stop the execution and print the results. I will post PR soon. +8910 area-System.Runtime Question: Is there any way to get all types from all loaded assemblies? Hi. In our solution we are during startup scanning all loaded assemblies (AppDomain.CurrentDomain.GetAssemblies()) and fetching all types and depend on custom attributes register the classes in different factories and/or ServiceProvider. When I tried to use netstandard as TFM I didn't find a way to get the assembly. I was trying with the DependencyContext that I found in some other issue that was possible to use to find all dependencies. Does it exists any simplier way to get the loaded assemblies then check all dependencies from DependencyContext and manually load them? +8912 area-System.Console Console.ReadKey returns escape sequence instead of expected key on Ubuntu 14.04 Code snippit: ``` while (true) { var key = Console.ReadKey(true).Key; Console.WriteLine(key); } ``` Pressing the right and left arrow outputs: ``` Escape C Escape D ``` Expected output: ``` RightArrow LeftArrow ``` +8913 area-System.ComponentModel FileExtensionsAttribute always says invalid "Hello, i have a property that the model always says is invalid, i have tried to not put any extensions only with `[FileExtensions]` but doesnt work, only works if i dont put the attribute, what i have is this. ``` [FileExtensions(Extensions = ""png"")] public IFormFile Property { get; set; } ``` " +8916 area-System.IO WaitForChangedTests.Changed_Success failed on Unix in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/1619/consoleText ``` System.IO.Tests.WaitForChangedTests.Changed_Success [FAIL] Assert.Equal() Failure Expected: Changed Actual: 0 Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.WaitForChanged.cs(173,0): at System.IO.Tests.WaitForChangedTests.Changed_Success() ``` +8919 area-System.Net Improve tracing in CurlHandler While debugging some HttpClient issues, I needed more tracing in CurlHandler. It's useful to check this in to help with future investigations. This is the same changes as from: https://github.com/dotnet/corefx/pull/8894 https://github.com/dotnet/corefx/pull/8884 as I'd like to get these tracing changes merged without first resolving what to do with those changes. cc: @bartonjs, @ericeil (you guys already reviewed these changes as part of that other commit) +8920 area-System.Runtime Add mono detection to RuntimeInformation Currently the RuntimeInformation class has a FrameworkDescription which will display `.NET Framework 4.0.0.0` on Mono. There should be a different value for Mono so that is easier to tell if you are running on Mono +8921 area-Serialization Fixing regression of KeyValuePair test in CodeGenOnly mode. @shmao @zhenlan @khdang +8923 area-System.Net Port to release/1.0.0: Improve tracing in CurlHandler Porting #8919 to release/1.0.0 branch +8924 area-System.IO IsolatedStorageFileStream no longer derives from FileStream... The base implementation was changed and the class name wasn't updated. https://github.com/dotnet/corefx/blob/master/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFileStream.cs +8926 area-System.Net System.Net.Http.Functional.Tests randomly hanging on Windows in CI e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1753/consoleText +8928 area-System.Net GetAsync_AllowedSSLVersion_Succeeds failure on Windows in CI The handle is invalid http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1778/consoleText ``` System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: Discovering: System.Security.Claims.Tests at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(391,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() System.Security.AccessControl.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Security.AccessControl.Tests\System.Security.AccessControl.Tests.dll D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.SslProtocols.cs(90,0): at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Net\Http\LoopbackServer.cs(57,0): at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.SslProtocols.cs(88,0): at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(1356,0): at System.Net.Http.WinHttpHandler.InternalReceiveResponseHeadersAsync(WinHttpRequestState state) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(853,0): at System.Net.Http.WinHttpHandler.d__102.MoveNext() ``` +8930 area-System.IO Port System.IO.Pipes AccessControl to CoreFX This commit ports the Pipes AccessControl source from the full framework and adds infrastructure to fit it into CoreFX as part of the regular build. - The PipeStream GetAccessControl and SetAccessControl functions are implemented as Extension methods similar to what was done for FileSystem AccessControl. - A few basic tests for behavior were added. - A net46 implementation of the extension methods is available as well. - This commit includes packaging - Behavior is the same as the .NET 4.6 version of PipeSecurity/PipeAuditRule/etc. with the exception that the SetAccessControl extension method does not retain the same exception throwing behavior for NamedPipeClientStream. Since it's an extension method, we don't have access to the internal PipeStream State that is used in the full version to decide which error to throw. The original will throw an InvalidOperation for a WaitingToConnect stream or a IOException for a Broken stream. We just throw an InvalidOperation for either. resolves https://github.com/dotnet/corefx/issues/7449 +8931 area-System.Threading Obsolete Task.Result, Introduce Task.TryGetResult "Related https://github.com/dotnet/corefx/pull/8902 ""Remove ""Result"" property of ValueTask"" - `Task.Result` has can have implicit blocking. If you invoke an async method in a UI app, and try to fetch the .Result of the returned task before it is completed, you’ll get a deadlock. - `.GetAwaiter().GetResult()` will force a blocking value return if required - An expected test to see if the result is ready without exceptions may be `task.IsCompleted`, however it should really be `task.Status == TaskStatus.RanToCompletion` An alternative `bool TryGetResult(out T value)` would be a safer option increasing the chance of writing correct code. It would return `true` if the task has `RanToCompletion` with the result in the out param. It would return `false` if the task hadn't completed (or was cancelled/faulted, maybe throw exception then) " +8935 area-System.Net Dispose of request HttpContent after buffering response Related to: https://github.com/dotnet/corefx/pull/8884 and https://github.com/dotnet/corefx/pull/8894 Both of those PRs attempt to fix the issue described in https://github.com/dotnet/corefx/pull/8884. The first does it by delaying the completion of the HttpClientHandler's SendAsync task until all request data has been sent. The second does it by moving the responsibility for Dispose into the HttpClientHandler, which can then do it when it knows it's done with the request content. Both of those changes carry some risk. In contrast, this PR is a very low-risk change, which just moves the request content Dispose done by HttpClient to be a bit later, though it's only a partial mitigation rather than an actual fix. For several of the methods on HttpClient, e.g. GetAsync, PostAsync, etc., the default mode is to buffer all of the response data (HttpCompletionOption.ResponseContentRead), and in the rare situations where a server does start sending a response body before it's received all of the request body, it will still likely not send all of the response body until it's received all of the request body. As such, if we delay the disposal of the request content until after we've finished buffering the response, the chances of hitting an issue here are further reduced. (This doesn't solve the issue for WCF; WCF would still need to take a separate fix to workaround the issue, but it would hopefully mitigate an already rare case to the point where it's unlikely to be impactful.) cc: @davidsh, @cipop, @ericeil, @mconnew, @KKhurin +8941 area-System.Net HttpClient not overwriting RequestURI after server redirect on non-Windows Scenario: 1) Client sends GET to server, server sends 302 response. 2) Client sends GET to redirect location and completes the request but the RequestURI is not updated Example: ``` 1): Request URL:http://localhost:5000/ Request Method:GET Status Code:302 Found Remote Address:127.0.0.1:5000 2): Request URL:http://localhost:5000/hello Request Method:GET Status Code:200 OK Remote Address:127.0.0.1:5000 ``` The expected content of the `HttpResponseMessage` is: ``` Response.RequestMessage: Method: GET, RequestUri: 'http://localhost:5000/hello', Version: 1.1, Content: , Headers: { } Response: Hello world StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Date: Sat, 28 May 2016 02:18:13 GMT Transfer-Encoding: chunked Server: Kestrel } ``` This is correct and what I see on Windows. But on Mac, (and most likely Linux too) I'm seeing: ``` Response.RequestMessage: Method: GET, RequestUri: 'http://localhost:5000/', Version: 1.1, Content: , Headers: { } Response: Hello world StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Date: Sat, 28 May 2016 01:48:35 GMT Transfer-Encoding: chunked Server: Kestrel } ``` I have a simple repro on https://github.com/JunTaoLuo/ServerRedirect. You can repro by running `dotnet restore` at the solution root, then running `dotnet run` in the ServerRedirect project followed by `dotnet run` in the Client project. This is breaking one of some of our functional tests when I re-enabled them while trying to verify the fix for https://github.com/dotnet/corefx/issues/7440: https://github.com/aspnet/MusicStore/blob/dev/test/E2ETests/SmokeTests.cs#L103 https://github.com/aspnet/MusicStore/blob/dev/test/E2ETests/OpenIdConnectTests.cs#L41 I have been able to repro this on Mac and I suspect this will also affect Linux (I'll follow up when I try that on a Ubuntu machine). cc @Tratcher @muratg @Eilon +8944 area-System.Net NameResolution TryGetAddrInfo_HostName test failed then seg faulted in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/opensuse13.2_release_tst/483/consoleText ``` System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName [FAIL] Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: ./RunTests.sh: line 208: 8433 Segmentation fault ./corerun xunit.console.netcore.exe System.Net.NameResolution.Pal.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests ``` +8945 area-System.Net WinHttpHandler off-by-1 in MaxAutomaticRedirections It appears that WinHttpHandler has an off-by-1 error in its handling of MaxAutomaticRedirections. When MaxAutomaticRedirections is set to N, it successfully follows N-1 redirects, but fails on the Nth, rather than successfully following N redirects and failing on the N+1th. +8946 area-System.Net Fix CurlHandler handling of redirects - Relative urls in Location headers were not being handled correctly. We now allow any url that TryCreate will parse using the current url as a base. - We were only handling a subset of redirect status codes as redirects, trying to second-guess which status codes libcurl would redirect for, e.g. 300 wasn't being treated as a redirect with regards to our processing of it (it would redirect but we wouldn't reconfigure some of our state). We now let libcurl do all the work. - We should have been playing it safer with regards to clearing out credentials if we weren't sure a Uri redirect location was valid. Now we do. - We were tracking state unnecessarily that we should have instead been asking libcurl for, e.g. the last url used in a redirect. This also caused us to store the wrong RequestMessage.Uri in some cases where a location header came in but we didn't actually follow it. cc: @davidsh, @ericeil, @JunTaoLuo, @bartonjs Fixes https://github.com/dotnet/corefx/issues/8941 +8947 area-System.Net MaxAutomaticRedirections behavior difference between .NET Framework and .NET Core "Repro: ``` C# using System; using System.Net.Http; class Program { static void Main() { var c = new HttpClient(new HttpClientHandler { MaxAutomaticRedirections = 3 }); Console.WriteLine(c.GetAsync(""http://corefx-net.cloudapp.net/Redirect.ashx?statuscode=302&uri=%2FEcho.ashx&hops=4"").GetAwaiter().GetResult().StatusCode); } } ``` With the .NET Framework, this prints out ""Redirect"". With .NET Core (both on Windows and on Unix), this throws an HttpRequestException due to exceeding the number of allowed redirects. Is this behavioral change by design? cc: @davidsh, @cipop " +8948 area-Meta Add an announcements repo for dotnet Hey there, The aspnet GitHub org has a special repo for announcements, it would be really useful to have that for the dotnet org as well, especially with the changes coming to the api surface and the fact that there is a very large amount of activity in the corefx repo, so its easy for announcements/calls for feedback to get lost. An announcement repo where you link to issues for discussion would be a great way to alleviate that +8949 area-System.Threading Sync-blocking on threadpool threads If there is a sync block on a threadpool thread `task.Wait()` etc; could it increment the threadpool min thread count by one? Then decrement by one on complete? May or may not help with threadpool starvation in async-over-sync situations which seem to keep popping up. +8950 area-System.Console Console not echoing input on Mac OS X until enter is pressed There appears to be a difference in behaviour with respect to echoing console input on at least .NET Core RC 2 on Mac OS X vs. .NET 4.6 on Windows. ### Environment - OS X El Capitan 10.11.4 - Bash config and inputrc (in case they matter): https://github.com/nguerrera/.dot - .NET Core RC 2 installed following https://www.microsoft.com/net/core#macosx ### Repro steps - Create project ``` $ mkdir repro $ cd repro $ dotnet new $ dotnet restore ``` - Edit Program.cs to match: ``` C# class Program { static void Main(string[] args) { System.Console.ReadLine(); } } ``` - Run: ``` $ dotnet run ``` - Wait for compilation to succeed and app to start up - Start typing ### Expected result Characters I type are echoed back to me as I type. ### Actual result Characters are not shown to me until I hit enter. @stephentoub @pallavit +8951 area-Meta dotnet restore segfaults on Debian 9.0/stretch Testing The standard, default project.json files cause 'dotnet restore' to segfault on Debian Testing. ``` barnett@barnett-debian:~/csharp_proj$ dotnet new Created new C# project in /home/barnett/csharp_proj. barnett@barnett-debian:~/csharp_proj$ dotnet restore log : Restoring packages for /home/barnett/csharp_proj/project.json... Segmentation fault ``` ``` .NET Command Line Tools (1.0.0-preview2-002900) Product Information: Version: 1.0.0-preview2-002900 Commit SHA-1 hash: f4ceb1f213 Runtime Environment: OS Name: debian OS Version: OS Platform: Linux RID: debian.-x64 ``` ``` barnett@barnett-debian:~$ uname -a Linux barnett-debian 4.5.0-2-amd64 #1 SMP Debian 4.5.4-1 (2016-05-16) x86_64 GNU/Linux ``` [csharp_proj.zip](https://github.com/dotnet/corefx/files/288127/csharp_proj.zip) +8954 area-System.Data Retrieving records affected by statement DbDataRecord has a RecordsAffected property, which allows users to know how many rows were inserted/updated/deleted. However, when executing a multi-statement command (e.g. `UPDATE xxx; UPDATE xxx`), this property provides an aggregation of all rows across statements. There's no programmatic way to get records affected per statement. For an example of why this might be useful, see [EFCore's modification command batch](https://github.com/aspnet/EntityFramework/blob/dev/src/Microsoft.EntityFrameworkCore.Relational/Update/AffectedCountModificationCommandBatch.cs). One of EFCore's major new features are command batching (i.e. the use of multi-statement commands), but in order to implement optimistic concurrency it needs to know, _for each command_, how many records were affected. For SqlServer this is implemented by sending `SELECT @@ROWCOUNT` after each update, and parsing the results. PostgreSQL has no equivalent SQL query, so in Npgsql I actually developed a statement-by-statement RecordsAffected mechanism to support this. In a nutshell, a collection of NpgsqlStatements is exposed by NpgsqlDataReader, and each object has its own RecordsAffected. Let me know if you want more detail. Note that this is somewhat related to #3688, where the possibility of a better API for command batching is discussed (the latter may/could also depend on multiple DbStatement instances being managed within a single DbCommand). +8955 area-System.Data API for writing parameters without boxing In the current ADO.NET API, writing a parameter to the database involves passing it through an object. This implies a boxing operation, which can create lots of garbage in a scenario where lots of value types (e.g. ints) are written to the database. A generic subclass of DbParameter could solve this, if properly implemented by providers. +8956 area-System.Net Fix client certificates-related seg fault in HttpClientHandler Using HttpClient with client certificates on Unix would crash when making a request, waiting for several minutes, and making another one. The issue was that our client certificate code was disposing of SafeHandles for resources we'd logically transferred ownership of to OpenSSL. The underlying connection cache would keep the connection open for any requests made within a few minutes, but once the connection's timeout expired, it would be culled from the cache, and the resources associated with these handles would then be re-freed, resulting in a seg fault (either immediately when closing or when we next tried to use an SSL connection). The fix is simply to not dispose of the resources we no longer own. cc: @bartonjs, @billwert, @ericeil Fixes https://github.com/dotnet/corefx/issues/8958 +8960 area-Infrastructure Building System.Data.SqlClient.sln in parallel often fails "When I build System.Data.SqlClient.sln without parallelization, it works fine (but notice the same file is built twice): ``` >msbuild /v:m /t:rebuild System.Data.SqlClient.sln Microsoft (R) Build Engine version 14.0.25123.0 Copyright (C) Microsoft Corporation. All rights reserved. System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\ref\System.Data.SqlClient\4.1.0.0\System.Data.SqlClient.dll System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient\System.Data.SqlClient.dll System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient\System.Data.SqlClient.dll System.Data.SqlClient.Tests -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.Tests\System.Data.SqlClient.Tests.dll System.Data.SqlClient.ManualTesting.Tests -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.ManualTesting.Tests\System.Data.SqlClient.ManualTesting.Tests.dll ``` But when I build it in parallel, it often (but not always) fails: ``` >msbuild /v:m /m /t:rebuild System.Data.SqlClient.sln Microsoft (R) Build Engine version 14.0.25123.0 Copyright (C) Microsoft Corporation. All rights reserved. System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\ref\System.Data.SqlClient\4.1.0.0\System.Data.SqlClient.dll E:\Users\Svick\git\corefx\Tools\sign.targets(70,5): error : E:\Users\Svick\git\corefx\bin/obj/Windows_NT.AnyCPU.Debug/System.Data.SqlClient/System.Data.SqlClient.dll: I/O error reading or writing PE file: The process cannot access the f ile 'E:\Users\Svick\git\corefx\bin\obj\Windows_NT.AnyCPU.Debug\System.Data.SqlClient\System.Data.SqlClient.dll' because it is being used by another process. [E:\Users\Svick\git\corefx\src\System.Data.SqlClient\src\System.Data.SqlClient. csproj] System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient\System.Data.SqlClient.dll System.Data.SqlClient.ManualTesting.Tests -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.ManualTesting.Tests\System.Data.SqlClient.ManualTesting.Tests.dll System.Data.SqlClient.Tests -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.Tests\System.Data.SqlClient.Tests.dll ``` Sometimes it just produces warnings: ``` >msbuild /v:m /m /t:rebuild System.Data.SqlClient.sln Microsoft (R) Build Engine version 14.0.25123.0 Copyright (C) Microsoft Corporation. All rights reserved. System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\ref\System.Data.SqlClient\4.1.0.0\System.Data.SqlClient.dll C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3088: Could not read state file ""E:\Users\Svick\git\corefx\bin/obj/Windows_NT.AnyCPU.De bug/System.Data.SqlClient/System.Data.SqlClient.csprojResolveAssemblyReference.cache"". The process cannot access the file 'E:\Users\Svick\git\corefx\bin\obj\Windows_NT.AnyCPU.Debug\System .Data.SqlClient\System.Data.SqlClient.csprojResolveAssemblyReference.cache' because it is being used by another process. [E:\Users\Svick\git\corefx\src\System.Data.SqlClient\src\System.Da ta.SqlClient.csproj] System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient\System.Data.SqlClient.dll System.Data.SqlClient -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient\System.Data.SqlClient.dll C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(3863,5): warning MSB3026: Could not copy ""E:\Users\Svick\git\corefx\bin/obj/Windows_NT.AnyCPU.Debug/System. Data.SqlClient/System.Data.SqlClient.pdb"" to ""E:\Users\Svick\git\corefx\bin/Windows_NT.AnyCPU.Debug/System.Data.SqlClient/System.Data.SqlClient.pdb"". Beginning retry 1 in 1000ms. The proc ess cannot access the file 'E:\Users\Svick\git\corefx\bin/Windows_NT.AnyCPU.Debug/System.Data.SqlClient/System.Data.SqlClient.pdb' because it is being used by another process. [E:\Users\S vick\git\corefx\src\System.Data.SqlClient\src\System.Data.SqlClient.csproj] System.Data.SqlClient.ManualTesting.Tests -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.ManualTesting.Tests\System.Data.SqlClient.ManualTesting.Tests.dll System.Data.SqlClient.Tests -> E:\Users\Svick\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.SqlClient.Tests\System.Data.SqlClient.Tests.dll ``` I believe those issues are because the same project is built twice in parallel, causing a race condition. Other solutions have the same issue too, for example, System.Net.Http.sln. This looks similar to #5292. CC: @weshaggard " +8962 area-Infrastructure Set up and run tests on BigEndian platforms. At the moment, it appears that all tests are being run on LittleEndian platforms. Given there are a number of packages and protocols that actually care about the endianness of the system, we should make sure our tests pass on these systems. In theory only those packages that deal with endian-handline code would need this, but I'm not sure how easy that would be to check for... +8963 area-Infrastructure 1.Nuget package restore failed for project tests\System.Data/Sqlclient.Manualtesting.Tests for 'test-runtime' 2.Unable to resolve test-runtime for .NETCoreApp, Version=v1.0 I am trying to build sqlclient (System.Data.SqlClient) from the source available from github. But i get these issues when i trying to build it. I tried uninstalled and re-installed nuget packet manager, still it doesn't solve the issue. What else i am missing ? +8965 area-System.Runtime System.Runtime.Loader not working in webapp targeting 4.6.2 ? "I am using System.Runtime.Loader in .NET Core app (net462) it doesn't give error at compile time but gives exception at run time ""Could not load assembly System.Runtime.Loader"". I want to know System.Runtime.Loader is not working in 4.6.2 webapp? " +8967 area-System.Numerics "Optimize BigInteger ""DataTip"" speed" "For very big BigIntegers the Visual Studio DataTip (the thing that appears when hovering over a variable with the mouse) takes a long time to load. I assume that's because the ToString processing takes too long. The result is not visible anyway because it is aborted by a timeout as it seems. Can the DataTip be made faster for super long BigIntegers? Maybe it could just show the first and last 20 digits instead of all digits. It's still possible to see all digits by calling ToString using the debugger. Maybe the output could be `$""{firstDigits} ... {lastDigits} ({totalDigits} digits in total, {byteCount} bytes}""`. That would be useful to both see the data and to get a feel for memory consumption. The ToString output would stay unchanged. " +8968 area-Serialization DataContractSerializer exception when deserializing exceptions with async stack traces "This used to work on RC1, and also works when targeting `net46`. Repro (only happens if `Run` is an `async` method): ``` csharp using System; using System.IO; using System.Runtime.Serialization; using System.Threading.Tasks; namespace ConsoleApp5 { public class Program { public static void Main(string[] args) { Run().GetAwaiter().GetResult(); } public static async Task Run() { try { throw new Exception(""Foo""); } catch (Exception e) { SerializeAndDeserializeException(e); } } private static void SerializeAndDeserializeException(Exception e) { using (var stream = new MemoryStream()) { var serializer = new DataContractSerializer(e.GetType()); serializer.WriteObject(stream, e); Console.WriteLine(""Serialized!""); stream.Position = 0; var ex = (Exception)serializer.ReadObject(stream); Console.WriteLine(""Deserialized! Message = "" + ex.Message); } } } } ``` `ReadObject` throws the following exception: ``` Unhandled Exception: System.Runtime.Serialization.SerializationException: There was an error deserializing the object of type System.Exception. End element '_stackTraceString' from namespace 'http://schemas.datacontract.org/2004/07/System' expected. Found element 'Run' from namespace 'http://schemas.datacontract.org/2004/07/System'. Line 1, position 259. ---> System.Xml.XmlException: End element '_stackTraceString' from namespace 'http://schemas.datacontract.org/2004/07/System' expected. Found element 'Run' from namespace 'http://schemas.datacontract.org/2004/07/System'. Line 1, position 259. at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3) at System.Xml.XmlBaseReader.ReadEndElement() at System.Xml.XmlBaseReader.ReadElementContentAsString() at ReadExceptionFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] ) at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) at System.Runtime.Serialization.ExceptionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) --- End of inner exception stack trace --- at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlDictionaryReader reader) at ConsoleApp5.Program.SerializeAndDeserializeException(Exception e) at ConsoleApp5.Program.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at ConsoleApp5.Program.Main(String[] args) ``` " +8973 area-System.Runtime Proposal: Enums should implement generic IEquatable/IComparable interfaces Every enum should implement its own version of `IEquatable` and `IComparable`, to avoid boxing when being compared/tested for equality (as they are really just ints underneath). The API would be similar to how each delegate class has its own version of `Invoke`/each `T[]` implements `IList`, although there is no strongly-typed base class that actually declares this. (Note: I'm aware that `EqualityComparer.Default` already specializes for enums, however I still think this would be an API addition worth pursuing. Additionally, `Comparer.Default` [does not](https://dotnetfiddle.net/vlr0UV) specialize for enums and falls back to boxing.) Enums already implement the non-generic `IComparable` interface (there is no non-generic `IEquatable`), so I think this would be a welcome change right? +8979 area-Infrastructure Clean build produces lots of warnings "12 on Windows: ``` D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\ref\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\ref\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\ref\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\ref\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\src\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\src\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\src\System.AppContext.csproj] D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.AppContext\src\System.AppContext.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Http\src\System.Net.Http.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [D:\j\workspace\windows_nt_debug88592b53\src\System.Security.Cryptography.OpenSsl\ref\System.Security.Cryptography.OpenSsl.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [D:\j\workspace\windows_nt_debug88592b53\src\System.Security.Cryptography.X509Certificates\src\System.Security.Cryptography.X509Certificates.csproj] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [D:\j\workspace\windows_nt_debug88592b53\src\System.Security.Cryptography.X509Certificates\src\System.Security.Cryptography.X509Certificates.csproj] 12 Warning(s) 0 Error(s) ``` 27 on Ubuntu: ``` /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/ref/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/ref/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/ref/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/ref/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/src/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/src/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/src/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.6"" framework. Add a reference to "".NETStandard,Version=v1.6"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.AppContext/src/System.AppContext.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorProviderError"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorUnsupportedRemoteObject"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorProviderError"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorUnsupportedRemoteObject"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorProviderError"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorUnsupportedRemoteObject"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorProviderError"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""TypeDescriptorUnsupportedRemoteObject"" is not allowed, ignored. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Net.Http/src/System.Net.Http.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Security.Cryptography.OpenSsl/ref/System.Security.Cryptography.OpenSsl.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Security.Cryptography.X509Certificates/src/System.Security.Cryptography.X509Certificates.csproj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/Tools/Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Security.Cryptography.X509Certificates/src/System.Security.Cryptography.X509Certificates.csproj] libust[33786/33786] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] libust[33796/33796] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] libust[33823/33823] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] libust[33833/33833] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] libust[33839/33839] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] libust[33862/33862] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] libust[33869/33869] : warning : HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization/tests/System.Globalization.Tests.csproj] 27 Warning(s) 0 Error(s) ``` " +8983 area-System.IO Seg fault running FileSystemWatcher tests on OSX "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_debug/52/consoleText ``` /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/bin/tests/OSX.AnyCPU.Debug/System.IO.FileSystem.Watcher.Tests/netcoreapp1.0/RunTests.sh: line 285: 70576 Segmentation fault: 11 ./corerun xunit.console.netcore.exe System.IO.FileSystem.Watcher.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=failing -notrait category=nonosxtests Finished running tests. End time=23:20:31. Return value was 139 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/Tools/tests.targets(202,5): warning MSB3073: The command ""/Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/bin/tests/OSX.AnyCPU.Debug/System.IO.FileSystem.Watcher.Tests/netcoreapp1.0/RunTests.sh /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/packages/"" exited with code 139. [/Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/src/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj] /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/Tools/tests.targets(211,5): error : One or more tests failed while running tests from 'System.IO.FileSystem.Watcher.Tests' please check log for details! [/Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/src/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj] ``` cc: @janvorli, @ianhays " +8984 area-System.Diagnostics TestUserCredentialsPropertiesOnWindows failed on Win10 in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/51/consoleText ``` System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows [FAIL] System.ComponentModel.Win32Exception : The user name or password is incorrect Stack Trace: d:\j\workspace\outerloop_win---6835b088\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(619,0): at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) d:\j\workspace\outerloop_win---6835b088\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(375,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows() ``` +8986 area-System.IO Increase the min supported version of the Zip spec Zips created by ZipArchive right now say that they will support any version of the ZIP format. However, they will actually only support versions 2.0 and up. This would mean that zips created by the core version of ziparchive will be improperly unzipped by unzippers from versions 0.0 to 2.0 (1989 to 1993). This commit fixes a regression from the full framework that sets the min to 2.0. The windows zip utility also sets the version to 2.0. @ericstj +8987 area-System.Console Port to release/1.0.0: Implement Console support for netcore50 port https://github.com/dotnet/corefx/pull/8853: The Windows implementation currently used for netcore50 will fail the WACK check as it calls a number of APIs unsupported by UWP. This commit adds a separate netcore50 build that stubs out the API calls and replaces them with PlatformNotSupportedExceptions or no-ops where appropriate. The result is a platform-agnostic version of System.Console that can be used anywhere but is severely stripped of functionality. - Where possible the behavior of a redirected Console operation will attempt to mimic that of a Unix redirected Console operation. Otherwise it will throw. - Encoding is fixed to UTF8. Attempting to set the Console encoding will no-op. - Added a section in the packaging build for the new netcore50 specific binary - Input/Output redirection and subsequent reads/writes work as expected. @weshaggard @ericstj +8990 area-System.Net Remove innerloop dependencies on www.ssllabs.com We have several tests that make HTTP calls during System.Net.Http.Functional.Tests out to www.ssllabs.com, which has SSL endpoints for different SSL protocols. This commit avoids using that server during innerloop tests. Some of the dependencies are removed entirely, by using a localhost SSL server instead. The remainder are made outerloop. cc: @bartonjs, @davidsh, @cipop, @ericeil +8995 area-System.IO ZipArchiveEntry always writes Unicode bit for entries Initial discussion here: https://github.com/dotnet/corefx/pull/8986#issuecomment-222739144 Previously we would only write the Unicode bit if 1. The system default was UTF8. 2. Any characters in the string were greater than 127. It turns out that neither of these were very common so before the bit was rarely set, now it is always set. /cc @ianhays +8996 area-System.Net Fix some memory leaks in WinHttpRequestState When HTTP requests are canceled, we are leaking WinHttpRequestState objects and some child objects. Since WInHttpRequestState is strongly pinned, it's important to release things as soon as possible. This fix addresses part of the leaks involved in #8819 by removing references to some fields in the state object related to the request/response phase (CancellationToken). In addition, this fix addresses some cases where the state object is created and pinned but the request is canceled before we hook up the state object to the WInHTTP status callback. Because of not being hooked up yet, the state object won't get HANDLE_CLOSING notifications and remains pinned forever. We now pin the state object later when we're sure that we've hooked up the status callback. I also added some DEBUG tracking to help diagnose the rest of the leaks of #8819. +9002 area-System.Net If we don't expect UDP packets to be received, don't send redundant packets. "Fixes #8636. On OSX, if a UDP packet is actively rejected, a subsequent send on the same socket can result in a ""connection refused"" error. This change avoids that error for the cases where we're intentionally sending packets that might be rejected. @stephentoub " +9003 area-System.Net System.Net.Http.HttpClientHandler.CookieContainer is empty in a UWP app when cookies are set on 302 redirect response When the System.Net.Http.HttpClient class - with a HttpClientHandler is used from a UWP, the response cookie collection returned is empty. **This happens when the cookies are being set on a 302 redirect response.** When you collect a network trace, you should notice the below request/response pattern: # Request: GET _location_ HTTP/1.1 Host: _host_ Connection: Keep-Alive ..._other request headers_ # Response: HTTP/1.1 302 Object moved Set-Cookie: name=value; Location: _redirect location_ ..._other response headers_ The problem happens because the default behavior of the HttpClientHandler is to perform auto-redirection. With this setting, the .NET layer does not get to see the cookies in the redirect response leading to the buggy behavior. +9004 area-System.IO Allow writing an ASCII ZipArchive ZipArchive currently always sets the Zip header Unicode bit. This is a regression from the net46 version that set the bit based on the current default encoding page set. This commit modifies the behavior to default write ASCII whenever possible and only write/set Unicode when it is necessary or explicitly asked for. - When encoding an entry name, we check if it contains any characters outside 32-126. If it does, we encode it as UTF8. If it doesn't, we encode it as ASCII. - Decoding is unchanged. If the encoding isn't set, then we assume UTF8. This is so we have the widest range of effective readability and because we cannot represent values outside of the ASCII 32-126 range from CP437 @ericstj resolves #8995 +9006 area-System.Net CurlHandler completes SendAsync task even if request content not fully sent This is a feature or a bug depending on who you talk to. CurlHandler completes the Task returned from SendAsync when all of the response headers have been received. That's by design. However, it does this regardless of whether all of the request content has been received. While rare, it's possible a server might send the response headers and even some or all of the body before the request content has been sent/received, e.g. in a streaming scenario where it was echoing/transforming/etc. the request content out as response content. WinHttpHandler and the implementation on desktop complete the SendAsync task only once all of the request content has been sent and all of the response headers have been received. The CurlHandler design is potentially problematic, however, as HttpClient explicitly disposes of the request content once the SendAsync task completes. If that task completes and the request content is still being sent, obvious problems can result. Several potential solutions: - Modify HttpClient to stop Dispose'ing of the request content, e.g. https://github.com/dotnet/corefx/issues/1794 - Moving the responsibility for Dispose'ing of the HttpContent to the HttpClientHandler, which can know when it's safe to dispose, e.g. https://github.com/dotnet/corefx/pull/8894 - Modifying CurlHandler to only complete the SendAsync task once the request content has all been sent, e.g. https://github.com/dotnet/corefx/pull/8884 +9008 area-System.Net Socket.Handle isn't public *and* no access to SIO_KEEPALIVE_VALS / SIOCKEEPALIVE via Socket Got here looking for how to call ioctl(SIOCKEEPALVIE) / WSAIOCTL(SIO_KEEPALIVE_VALS). No access via public Socket API layer and no access to the handle either. I could P/Invoke it if I had the handle, but I don't oops. +9009 area-System.IO Filesystem tests for symlinks failing in Helix for OSX These tests are all failing with a similar error and there don't seem to be any recent changes to the tests themselves. System.IO.Tests.FileInfo_Exists.SymLinksMayExistIndependentlyOfTarget System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory System.IO.Tests.Directory_Delete_str_bool.DeletingSymLinkDoesntDeleteTarget System.IO.Tests.Directory_Delete_Tests.FileSystemWatcher_Directory_Delete_SymLink System.IO.Tests.Directory_Create_Tests.FileSystemWatcher_Directory_Create_SymLink Log: ``` System.ComponentModel.Win32Exception : No such file or directory ``` @dsgouda can you please take a look, you had the most recent changes to this directory (https://github.com/dotnet/corefx/tree/master/src/System.IO.FileSystem/tests) @weshaggard @ericstj Any ideas on the cause? +9010 area-System.Net Adding image example for PerfView collection. Fixes #4325 @saurabh500 @davidsh PTAL +9011 area-System.Runtime Consider exposing more APIs via RuntimeInformation The CLI and AspNet Core have a bunch of APIs that p/invoke to read runtime information that's not readily available via `RuntimeInformation`. This includes operating system version and Unix distro name. Scanning through the code, there're internal APIs to read both these pieces of information, but they aren't surfaced in a way that can be consumed. Could the API surface for `RuntimeInformation` be enhanced to include this information? +9012 area-System.Runtime Dependency on System.Runtime.InteropServices.RuntimeInformation causes runtime error for apps targeting net451 on *nix systems (i.e. running on Mono) ## Scenario 1) Running a `net451` app depending on `System.Runtime.InteropServices.RuntimeInformation` on OSX/Ubuntu will produce the following exception at runtime: ``` dotnet -v run -f net451 1 ↵ Telemetry is: Enabled Project RuntimeServiceOnMono (.NETFramework,Version=v4.5.1) was previously compiled. Skipping compilation. Running /usr/local/bin/mono --debug /Users/jtluo/Documents/workspace/juntaoluo/tp/RuntimeServiceOnMono/bin/Debug/net451/osx.10.11-x64/RuntimeServiceOnMono.exe Process ID: 29130 Unhandled Exception: System.DllNotFoundException: System.Native at (wrapper managed-to-native) Interop/Sys:GetUnixNamePrivate () at Interop+Sys.GetUnixName () [0x00000] in :0 at System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform (OSPlatform osPlatform) [0x00000] in :0 at ConsoleApplication.Program.Main (System.String[] args) [0x00000] in :0 [ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: System.Native at (wrapper managed-to-native) Interop/Sys:GetUnixNamePrivate () at Interop+Sys.GetUnixName () [0x00000] in :0 at System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform (OSPlatform osPlatform) [0x00000] in :0 at ConsoleApplication.Program.Main (System.String[] args) [0x00000] in :0 ``` ## Example See repro at https://github.com/JunTaoLuo/RuntimeServiceOnMono. To run the sample, run `dotnet restore` and `dotnet run -f net451` I understand Mono is not a scenario that's actively being developed for but we should not be causing a exception like this especially since we intend to use the `InteropServices` APIs in often used ASP.NET packages like Logging. Currently this means that most of our samples and apps cannot run on Mono (full CLR on *nix). ## Environment `dotnet --version`: ``` Microsoft .NET Core Shared Framework Host Version : 1.0.1-rc3-004312-00 Build : 1db6c07638a70a621b312e78d4dc9fb31a530f2f ``` `mono -V`: ``` Mono JIT compiler version 4.0.5 ((detached/1d8d582 Tue Oct 20 15:15:33 EDT 2015) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: normal SIGSEGV: altstack Notification: kqueue Architecture: x86 Disabled: none Misc: softdebug LLVM: yes(3.6.0svn-mono-(detached/a173357) GC: sgen ``` cc @BrennanConroy @muratg @Eilon +9015 area-System.Net Fixing PerformanceTests command line build. Fixes #8435 @davidsh @ericeil @stephentoub PTAL +9017 area-System.Net Sockets test failures SendToAsyncV4IPEndPointToV6Host_NotReceived & BeginSendToV4IPEndPointToV6Host_NotReceived ``` Test Result (2 failures / +2) ``` System.Net.Sockets.Tests.DualMode.SendToAsyncV4IPEndPointToV6Host_NotReceived System.Net.Sockets.Tests.DualMode.BeginSendToV4IPEndPointToV6Host_NotReceived http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/osx_debug_prtest/58/testReport/ Regression System.Net.Sockets.Tests.DualMode.SendToAsyncV4IPEndPointToV6Host_NotReceived (from (empty)) Failing for the past 1 build (Since Failed#58 ) Took 0.31 sec. Stacktrace MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.TimeoutException)\nActual: typeof(Xunit.Sdk.EqualException): Assert.Equal() Failure\nExpected: 1\nActual: 0 +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Tests.DualMode.DualModeSendToAsync_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1359 at System.Net.Sockets.Tests.DualMode.b__119_0() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1311 Regression System.Net.Sockets.Tests.DualMode.BeginSendToV4IPEndPointToV6Host_NotReceived (from (empty)) Failing for the past 1 build (Since Failed#58 ) Took 7 ms. Stacktrace MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.TimeoutException)\nActual: typeof(System.Net.Sockets.SocketException): Connection refused +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 3004 at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2942 at System.Net.Sockets.SocketTaskExtensions.<>c.b__12_0(ArraySegment`1 targetBuffer, SocketFlags flags, EndPoint endPoint, AsyncCallback callback, Object state) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/SocketTaskExtensions.cs:line 235 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory`1.FromAsync[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state) at System.Net.Sockets.SocketTaskExtensions.SendToAsync(Socket socket, ArraySegment`1 buffer, SocketFlags socketFlags, EndPoint remoteEndPoint) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/SocketTaskExtensions.cs:line 234 at System.Net.Sockets.SocketAPMExtensions.BeginSendTo(Socket socket, Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/Common/src/System/Net/Sockets/SocketAPMExtensions.cs:line 565 at System.Net.Sockets.Tests.DualMode.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1234 at System.Net.Sockets.Tests.DualMode.b__110_0() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_1.0.0/osx_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1200 +9018 area-Infrastructure Jenkins CI OS X slave went offline during the build http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/osx_debug_prtest/60/consoleFull#-1250096032a6fc86e9-18e8-40d3-a876-f39e33df2c41 Slave went offline during the build 18:42:55 ERROR: Connection was broken: java.io.IOException: Connection aborted: org.jenkinsci.remoting.nio.NioChannelHub$MonoNioTransport@3b61e371[name=dci-macpro-12] 18:42:55 at org.jenkinsci.remoting.nio.NioChannelHub$NioTransport.abort(NioChannelHub.java:208) 18:42:55 at org.jenkinsci.remoting.nio.NioChannelHub.run(NioChannelHub.java:628) 18:42:55 at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 18:42:55 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 18:42:55 at java.util.concurrent.FutureTask.run(FutureTask.java:262) 18:42:55 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 18:42:55 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 18:42:55 at java.lang.Thread.run(Thread.java:745) 18:42:55 Caused by: java.io.IOException: Connection reset by peer 18:42:55 at sun.nio.ch.FileDispatcherImpl.read0(Native Method) 18:42:55 at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 18:42:55 at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 18:42:55 at sun.nio.ch.IOUtil.read(IOUtil.java:197) 18:42:55 at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) 18:42:55 at org.jenkinsci.remoting.nio.FifoBuffer$Pointer.receive(FifoBuffer.java:136) 18:42:55 at org.jenkinsci.remoting.nio.FifoBuffer.receive(FifoBuffer.java:306) 18:42:55 at org.jenkinsci.remoting.nio.NioChannelHub.run(NioChannelHub.java:561) 18:42:55 ... 6 more +9023 area-System.Net HttpClient.SendAsync with HttpMethod.Trace and request content sends a body "https://tools.ietf.org/html/rfc7231 states for TRACE ""A client MUST NOT send a message body in a TRACE request,"" but WinHttpHandler does: ``` C# using (var client = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Trace, ""http://corefx-net.cloudapp.net/Echo.ashx"") { Content = new StringContent(""some body"") }; using (HttpResponseMessage response = client.SendAsync(request).GetAwaiter().GetResult()) { Console.WriteLine(response.StatusCode); } } ``` This outputs BadRequest. " +9024 area-System.Net Add several HttpClientHandler tests related to content - Verify that request content isn't disposed until after response content is buffered (https://github.com/dotnet/corefx/pull/8935) - Verify that request content isn't disposed until after request content is sent and response headers are received (https://github.com/dotnet/corefx/issues/9006) - Verify that verbs which shouldn't send request content don't (https://github.com/dotnet/corefx/issues/9023) cc: @davidsh, @ericeil +9025 area-System.Net Port to release/1.0.0: Fix CurlHandler handling of redirects Port #8946 to release/1.0.0 +9027 area-System.Net SendAsync_ExpectedDiagnosticSourceLogging tests failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1863/consoleText ``` System.Net.Http.Functional.Tests.HttpClientTest.SendAsync_ExpectedDiagnosticSourceNoLogging [FAIL] Request was logged while logging disabled. Expected: False Actual: True Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientTest.cs(476,0): at System.Net.Http.Functional.Tests.HttpClientTest.SendAsync_ExpectedDiagnosticSourceNoLogging() ``` and ``` System.Net.Http.Functional.Tests.HttpClientTest.SendAsync_ExpectedDiagnosticSourceLogging [FAIL] System.AggregateException : One or more errors occurred. (An error occurred while sending the request.) Finished: System.Resources.Writer.Tests ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientTest.cs(435,0): at System.Net.Http.Functional.Tests.HttpClientTest.SendAsync_ExpectedDiagnosticSourceLogging() ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(381,0): at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(838,0): at System.Net.Http.WinHttpHandler.d__101.MoveNext() ``` +9031 area-System.Net Port to release/1.0.0: Fix some memory leaks in WinHttpRequestState Port #8996 to release/1.0.0 +9033 area-System.IO Add Compression binary compat tests We don't currently test binary equality of outputted test zips, so tested compatibility is limited to the parts of the header we expose via a ZipArchive API. This commit adds some tests that compare normal and unicode zips between the current version and .NET 4.5 and .NET 4.6. depends on https://github.com/dotnet/corefx-testdata/pull/10. Tests will fail without https://github.com/dotnet/corefx/pull/9004. +9039 area-Meta Strategy for targetting safe subsets of mscorlib This blog post describes plans to support more API on .NET core: https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to-port-to-net-core/ Good news, but it does raise some questions. Let's say that in six months it's possible to link against the BCL reference assemblies; you compile a dll, which can now be used on the various platforms and appmodels of the core CLR. So: what happens to code which calls System.DoesntWorkOnLinux? Or in the case of UWP, System.IO? As a library author, I won't have the capability to test every current and future platform. How should I go about building packages which do not throw PlatformNotSupportedException in an unexpected new environment? Can netstandard help here? It's not yet clear how it will relate to mscorlib - and some problems would still exist, like the one with System.IO in Store apps. +9041 area-System.Net Flow HttpClient timeouts and cancellation to the response stream When using a timeout and/or a cancellation token with a buffered HttpClient operation, the cancellation/timeout doesn't flow through to the actual read/write operations on the underlying streams. This fixes that. cc: @davidsh, @cipop, @ericeil, @bartonjs Fixes #8663 +9043 area-System.Net Reduce System.Net.CredentialCache allocations This PR is broken up into multiple commits to make it easier to review... - The first two commits add some more tests and modifies an `ArgumentException` to include the param name using `nameof`. The tests in the first commit pass before and after the rest of the changes. - The next commit changes `CredentialCache`'s dictionaries to be lazily allocated. `CredentialCache` has two backing dictionaries: one is for Uri-based protocols like HTTP/HTTPS used by `HttpClient`, the other for Host/Port-based protocols like SMTP, used by `SmtpClient` in the full framework (but not in CoreFX as `SmtpClient` hasn't been ported yet). While it's possible that both types of protocols could be used at the same time with the same `CredentialCache` instance, it's more likely that only one dictionary will be used per instance. Instead of always allocating both dictionaries up-front, lazily allocate the dictionaries only when needed. - The next commit avoids the array allocation/copying in `CredentialCache`'s enumerator, using the dictionary enumerator(s) instead. - The next commit reduces allocations in `CredentialHostKey`. `CredentialHostKey` can be a struct instead of a class. Unlike with the Uri-based dictionary, there's no need to enumerate all items in the Host/Port-based dictionary to find the greatest prefix length. Instead, we can look up the item in the dictionary directly. There's also no need to cache the hash code. Allocations associated with `ToUpperInvariant().GetHashCode()` can be avoided by using `StringComparer.OrdinalIgnoreCase.GetHashCode()`. - The next commit reduces allocations in `CredentialKey`. Unlike `CredentialHostKey`, I've left `CredentialKey` as a class for now, as the dictionary needs to be enumerated to find the longest matching prefix, and I was concerned about potential perf degradation due to copying a large struct. However, there is still room for improvement. The `AuthenticationType.ToUpperInvariant().GetHashCode()` allocation can be avoided in `GetHashCode` by using `StringComparer.OrdinalIgnoreCase.GetHashCode(AuthenticationType)`. There's no need to include the length in the hash code, as the hash code for the Uri is sufficient. And, there's no need to cache the hash code, which allows us to at least reduce the size of `CredentialKey`. - The last commit contains some minor cleanup while making changes in this file. cc: @stephentoub, @davidsh +9044 area-System.Net Port System.Net.Http UWP tests /cc @davidsh Requires NetNative test execution support. +9045 area-System.Net Enable System.Net tests to run against NetFX /cc @tarekgh @davidsh An example is already available in `System.Globalization.Calendars`. To run the tests against .Net 4.6 Desktop: `msbuild /t:rebuild,test /property:Configuration=net46`. +9048 area-System.Net Add multi-machine and Enterprise scenario support for System.Net tests /cc @himadrisarkar @davidsh @vijaykota @shrutigarg @markwilkie @MattGal System.Net.\* testing requires multiple machines to exercise real-world networking scenarios. These include both the outer-loop tests as well as tests requiring more complicated setup and fixed SKUs such as perf. Here is a list of requirements that our team brainstormed a while back: ## Network Scenarios - Internet scenarios - Use a set of publicly available, always available Azure servers. - Allow `localhost`, local network or private Azure servers. - Enterprise scenarios (auth, IPSec) - Use `localhost` servers - Use local network servers - Use an Azure closed test environment - Performance/stress scenarios ## Test Server Requirements - Scripts should allow deployment on `localhost` as well as a specific on-prem machine or an Azure account. An example of such deployment is available at https://github.com/davidsh/corefx-net-testservers. - Server configuration scripts (both for local and remote deployments) - Use Bash/Powershell - Scripts should be able to both install and uninstall the server. - Ensure a clear state of the machine after uninstall. ## Test Client Requirements - Standardized script naming and location will allow for automatic prerequisite installation/cleanup. - Client prerequisite scripts: install and cleanup - Use Powershell/Bash - Will run as `Administrator` / `root`. ## Test Execution - Endpoint configuration will be made through Environment variables (see #2383). - A single script will be used to: - set the environment variables (a `.gitignore`d override file could allow developers to set up their own custom environment) - detect and install prerequisites - run selected tests - uninstall prerequisites - Proposed prerequisite script location and naming: - contract_name\tests\scripts\client - setupclient.ps1(.sh) [-u(ninstall)] - contract_name\tests\scripts\server - setupserver.ps1(.sh) [-u(ninstall)] +9049 area-System.Net Port System.Net.WebSockets.Client tests /cc @davidsh The following tests need to be ported: - [ ] Performance tests - [ ] NetNative tests - will be part of 2.1 work - [x] Server code and scripts +9053 area-System.Runtime MathTests.Pow test failing after recent coreclr change e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_debug_tst/558/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/fedora23_debug_tst/167/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu16.04_debug_tst/347/consoleText ``` System.Tests.MathTests.Pow [FAIL] Assert+WrapperXunitException : File path: D:\j\workspace\fedora23_debu---1725fa63\src\System.Runtime.Extensions\tests\System\Math.cs. Line: 266 ---- Assert.Equal() Failure Expected: 1 Actual: NaN Stack Trace: at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) at Assert.Equal[T](T expected, T actual, String path, Int32 line) at System.Tests.MathTests.Pow() ----- Inner Stack Trace ----- at Assert.Equal[T](T expected, T actual, String path, Int32 line) ``` I believe this was caused by https://github.com/dotnet/coreclr/pull/4847 cc: @tannergooding, @janvorli, @jkotas https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Runtime.Extensions/tests/System/Math.cs#L266 +9058 area-System.Security Port ProtectedMemory I found the class ProtectedData in System.Security.Cryptography, but did not find the class ProtectedMemory. +9063 area-System.Threading Thread.IsThreadPoolThread not exposed in coreclr https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/Thread.cs#L645-L649 Some times we want to queue things on the threadpool; but if we are already on the threadpool continue executing rather than queue - however the thread can't be checked if is threadpool thread currently. Coreclr issue https://github.com/dotnet/coreclr/issues/5407 +9064 area-System.Data System.Data.SqlClient | UWP ARM Build ## Win 10 IoT ARM Build The .NET Core Foundation Libraries already got Builds for most common platforms and architectures. Since the release of Windows 10 IoT Preview Version and announced support for Raspberry Pi Products many developers want to use it in a commercial way but the current build does not inherit the full core. The main issue with the current IoT-Build is the missing ability to connect to MS SQL Server and pass your requests. Using an additional WCF Service and communicate over REST-API is not the proper way to transfer Data in a company. So my request is to add a build of the .NET CORE on ARM for Windows 10 IoT usage on the github list or at least adding the ability to handle SQL for MS SQL Server. **tl;dr** No possibility to connect to MS SQL Server via UWP Should be implemented since Raspberry Pi 3 got Win 10 IoT and is rising interest for companies Please consider: According to the porting documentation and a missing branch for IoT ARM I am leaving this request/issue on the master page. There is no other project handling my request +9066 area-Infrastructure CI tests pass, but plugin fails to report results, failing leg ``` [xUnit] [ERROR] - The plugin hasn't been performed correctly: Problem on deletion ``` e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_release_prtest/1749/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/1790/consoleText +9068 area-Infrastructure "Two outerloop Process tests failing on OSX with ""Permission denied""" "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_debug/55/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_release/58/consoleText ``` System.Diagnostics.Tests.ProcessTests.TestBasePriorityOnUnix [FAIL] System.ComponentModel.Win32Exception : Permission denied Stack Trace: at System.Diagnostics.Process.set_PriorityClassCore(ProcessPriorityClass value) at System.Diagnostics.Process.set_PriorityClass(ProcessPriorityClass value) at System.Diagnostics.Tests.ProcessTests.SetAndCheckBasePriority(ProcessPriorityClass exPriorityClass, Int32 priority) at System.Diagnostics.Tests.ProcessTests.TestBasePriorityOnUnix() ``` and ``` System.Diagnostics.Tests.ProcessTests.TestPriorityClassUnix [FAIL] System.ComponentModel.Win32Exception : Permission denied Stack Trace: at System.Diagnostics.Process.set_PriorityClassCore(ProcessPriorityClass value) at System.Diagnostics.Process.set_PriorityClass(ProcessPriorityClass value) at System.Diagnostics.Tests.ProcessTests.TestPriorityClassUnix() ``` Both of these tests have a comment next to them ""// This test requires admin elevation on Unix ""... maybe the runs where these fail isn't being done elevated? " +9070 area-System.Security X509Certificate2.GetECDsaPrivateKey fails "I have a certificate in the certificate store that `GetECDsaPrivateKey` fails on in Windows Server 2012 R2. It fails with the exception: > Keys used with the ECDsaCng algorithm must have an algorithm group of ECDsa. > Parameter name: key First, some details on the certificate. It is a self signed (for now) certificate with a 256-bit ECC key, the public key parameters are ECDSA_P256. The keyUsage extension is Critical:digitalSignature (80) and the EKU is codeSigning. The certificate was added to the certificate store using the import wizard when opening a PKCS12 file. When I platform invoke CNG myself with `CryptAcquireCertificatePrivateKey` and pass the key handle to `CngKey.Open` the same way the CertificatePal does it [here](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs#L66), I see that the CngKey is believed to be ECDH and has a key usage of ""AllUsage"". Regardless, I need an ECDsa instance for this certificate. What is the trick to getting CNG / GetECDsaPrivateKey is a ECDSA key, not an ECDH? There really isn't a difference between an ECDSA key or an ECDH key, as long as you don't use the same key for both purposes, so I would think this should work. /cc @bartonjs " +9071 area-System.Net Add CancellationToken-accepting overloads to HttpContent members We should consider adding overloads for methods like SerializeToStreamAsync, so that cancellation can be passed in and threaded through to the underlying ReadAsync/WriteAsync operations performed. +9075 area-System.Net HttpClientHandler.SendAsync on Unix completes at start-of-body, not end-of-headers The implementation currently looks for the first byte of the body (or no more processing to be done) as an indication that the response message should be published, but it should really be when the last byte of the headers are received. Ideally we'd find some mechanism to be notified by libcurl of end-of-headers (including end-of-headers for the final request when doing automatic redirection) so we can publish then, in case there's a delay between the last byte of the headers and the first byte of the body. We may need to switch to not using libcurl's automatic redirection mechanism and instead handle automatic redirections manually, using https://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html. +9085 area-System.Linq Enumerable Append and Prepend should be ported to the netfx Enumerable.Append and Enumerable.Prepend are new public API added in CoreFX +9087 area-System.Linq NETFX: Port Compile(System.Boolean) overloads in Linq.Expressions to netfx Preferrable with full interpreter support. It would be acceptable just to port the API and fallback to compiling since API does not strictly require interpretation. +9088 area-Infrastructure The build.cmd script should accept more common options Currently to build the repo as release you have to do this: ``` cmd build /p:ConfigurationGroup=Release ``` This is very error-prone to typos, since you can write something like `/p:ConfigurationGrouo=Release` and go away from your computer for 40 minutes only to realize you built on Debug configuration. We should provide `--debug` and `--release` shortcuts like is done in [the `build.sh` script](https://github.com/dotnet/corefx/blob/master/build.sh#L10), as well as update the documentation/`--help` output. Then, we could call the script like this: ``` cmd build --release ``` Other things we might want to consider: `--skiptests[ bool]` (default false), `--buildtests[ bool]` (default true), `--buildpackages[ bool]` (default true) cc: @mellinoe Note: I have knowledge of batch/shell scripting, so I can submit a PR to fix this myself if this is OK. **edit:** Additionally we should echo the arguments that are being passed to MSBuild to the user, so they know right away if they made a typo. +9091 area-System.Net Sometimes Socket.Dispose() doesn’t trigger ws2_32!closesocket() in NanoServer I have a full SKU physical machine on which I created a Nanoserver virtual machine (i.e., VM). If I run below PowerShell command on physical machine twice, the second command sometimes will either hang or fail. This is due to the fact that Socket.Dispose() sometimes doesn’t trigger ws2_32!closesocket() in Nanoserver. Statistically the repro rate is about 50%, but for the same physical machine-VM pair, the repro rate seems to be either 0 or 100%. New-PSSession -vmname -credential +9094 area-Infrastructure Port build fixes to unblock official builds Need to port the following commits from master to unblock building on new Linux distros. 3e3ab10bc37fb4379b7e38366ca0978ce8efa4b0 1d8bac52febbaf4f1cc626cc8ef4c030054e92ef 02f40870f59eda6dae5c55550670dc4b433cb59e 217289492a53b9972a9c0f9d0ce3503c422fe601 +9102 area-System.Net Flow HttpClient timeouts and cancellation to the response stream (This is the same PR as #9041, which was already signed-off on; Jenkins wasn't responding to requests on it.) When using a timeout and/or a cancellation token with a buffered HttpClient operation, the cancellation/timeout doesn't flow through to the actual read/write operations on the underlying streams. This means that on Windows, doing a basic operation like GetStringAsync with a server that pauses for arbitrarily long periods of time while sending the response body won't cancel or timeout until it sends more data. (We don't need to do this on Unix, as on Unix we already handle this case differently, with a single registration for the duration of the SendAsync operation.) +9108 area-System.IO System.IO.Compression ZipArchive improvements I've been spending some time with zips and found our APIs lacking in a few places: 1. Cannot rename an entry, have to remove it and re-add-it 2. Cannot open multiple entries at once since they seem share the same underlying stream. 3. Cannot control the order/re-order entries in the zip +9109 area-System.Net Add some HttpClientHandler client certificate tests We didn't previously have any. And fix a small bug discovered from this, lack of argument validation when setting the enum value. cc: @davidsh, @cipop, @bartonjs, @ericeil +9110 area-System.Net Port to release/1.0.0: Flow HttpClient timeouts and cancellation to the response stream Port https://github.com/dotnet/corefx/pull/9102 to release/1.0.0 +9114 area-System.Security "VerifyCrlCache test failed in release branch: ""Chain should not build validly""" http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_ubuntu14.04_debug_prtest/1/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.VerifyCrlCache [FAIL] Chain should not build validly Expected: False Actual: True Stack Trace: /mnt/j/workspace/dotnet_corefx/release_1.0.0/outerloop_ubuntu14.04_debug_prtest/src/System.Security.Cryptography.X509Certificates/tests/X509FilesystemTests.Unix.cs(58,0): at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.VerifyCrlCache() ``` +9116 area-System.IO System.IO.Compression perf tests failing on linux machines When running the System.IO.Compression perf tests locally on a linux machine, a bunch for FileNotFoundExceptions show up Eg.: System.IO.Compression.Tests/netcoreapp1.0/GZTestData/Canterbury/GZCompressed/grammar.lsp.gz not found To repro the error: On a linux machine, build the CoreFX repro and run the following command ``` Tools/corerun Tools/MSBuild.exe src/System.IO.Compression/tests/System.IO.Compression.tests.csproj /t:BuildAndTest /p:Performance=true /p:OSGroup=Linux ``` +9118 area-System.IO System.IO.Pipes perf tests never finish exection on linux machine When running System.IO.Pipes perf tests on a linux machine, the tests seem to run infinitely and need to be killed/timed out To repro the error: On a linux machine, build the CoreFX repo and run the following command `Tools/corerun Tools/MSBuild.exe src/System.IO.Pipes/tests/System.IO.Pipes.tests.csproj /t:BuildAndTest /p:Performance=true /p:OSGroup=Linux` +9119 area-System.Net Fix HttpClientMiniStressTests tests These were broken at some point (almost all of the tests fail, complaining about invalid responses from the server), but we didn't notice because they're not enabled by default. cc: @davidsh +9124 area-System.Net "HttpClient.GetAsync throws an exception, if server response has more than one""WWW-Authenticate: Basic"" header with different realm" "HttpClient.GetAsync throws an exception, if server response has more than one ""WWW-Authenticate: Basic"" header with different realms. The sample client code is: ` ``` var handler = new HttpClientHandler(); handler.UseDefaultCredentials = false; handler.Credentials = System.Net.CredentialCache.DefaultCredentials; handler.AllowAutoRedirect = true; using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri(""type you server URI here""); HttpResponseMessage response = await client.GetAsync(""api/values""); } ``` ` Same code works fine under desktop .Net framework. The exception call stack is: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The operation identifier is not valid at System.Net.Http.WinHttpAuthHelper.CheckResponseForAuthentication(WinHttpRequestState state, UInt32& proxyAuthScheme, UInt32& serverAuthScheme) at System.Net.Http.WinHttpHandler.d__101.MoveNext() --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at ConsoleApplication.Program.d__1.MoveNext() in D:\prj\repro_ntlm_integrated\Client\Program.cs:line 42 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at ConsoleApplication.Program.d__0.MoveNext() in D:\prj\repro_ntlm_integrated\Client\Program.cs:line 28 Below is fiddler trace: > GET http://stiliev-dev/WebApplication2/api/values HTTP/1.1 > Accept: application/json > Accept-Encoding: gzip, deflate, peerdist > Connection: Keep-Alive > X-P2P-PeerDist: Version=1.1 > X-P2P-PeerDistEx: MinContentInformation=1.0, MaxContentInformation=2.0 > Host: stiliev-dev > > HTTP/1.1 401 Unauthorized > Cache-Control: no-cache > Pragma: no-cache > Content-Type: application/json; charset=utf-8 > Expires: -1 > Server: Microsoft-IIS/10.0 > X-AspNet-Version: 4.0.30319 > WWW-Authenticate: Basic realm=""http://stiliev-dev:8080/tfs"" > WWW-Authenticate: Basic realm=""http://stiliev-dev:8080"" > WWW-Authenticate: Negotiate > WWW-Authenticate: NTLM > X-Powered-By: ASP.NET > Date: Fri, 03 Jun 2016 14:50:44 GMT > Content-Length: 61 > {""Message"":""Authorization has been denied for this request.""} " +9127 area-System.Net Add greater validation to HttpClient SSL cerificate validation Add more checks in addition to the host name, validity periods and chaining to trusted roots. +9130 area-System.Net System.Net.Security: Authentication failed because the remote party has closed the transport stream. In #9115: On a `Standard_D3_v2` Azure machine: Windows_NT Debug Build and Test failed because: ``` System.Net.Security.Tests.ServerNoEncryptionTest.ServerNoEncryption_ClientAllowNoEncryption_ConnectWithNoEncryption [FAIL] failed. MESSAGE: System.IO.IOException : Authentication failed because the remote party has closed the transport stream. +++++++++++++++++++ STACK TRACE: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---494cfe0d\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 870 at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---494cfe0d\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 1098 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) in D:\j\workspace\windows_nt_de---494cfe0d\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 740 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in D:\j\workspace\windows_nt_de---494cfe0d\src\System.Net.Security\src\System\Net\SecureProtocols\SslState.cs:line 710 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) in D:\j\workspace\windows_nt_de---494cfe0d\src\System.Net.Security\src\System\Net\SecureProtocols\SslStream.cs:line 125 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Security.Tests.ServerNoEncryptionTest.d__4.MoveNext() in D:\j\workspace\windows_nt_de---494cfe0d\src\System.Net.Security\tests\FunctionalTests\ServerNoEncryptionTest.cs:line 63 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9131 area-System.Net Fix crash in HttpClient on Unix when using client certificates In HttpClient on Unix when a client certificate is used, we add the intermediate certificates for the client authentication cert's chain so that the server can chain-verify. When we add the extra chain certificate to the SSL handle, we're transferring ownership to that handle, which we subequently dispose... but we don't mark the original SafeHandle as invalid, so it eventually gets finalized and we end up double-free'ing, leading to seg faults and other badness. This commit simply cleans up the handle appropriately. cc: @bartonjs, @billwert +9137 area-System.Net Fixing Socket async connect for connection-less protocols; Fixing and enabling Socket perf tests. Simulating an asynchronous Connect (APM/TPL) for connection-less protocols. Moving SocketPerformance to Outerloop and enabling the tests without an execution time expectation. Fixes #4968, #3635 +9140 area-System.Net "Revert ""Flow HttpClient timeouts and cancellation to the response stream""" This reverts the product changes from commit cc8b48c8ea41b9cee888055483d16072f3f3a1c5. The test changes remain. cc: @davidsh, @cipop +9142 area-System.Net Unix SslStream may not be sending intermediate CA certs when required "As a followup to #9109 I was looking for the equivalent code in SslStream, and there doesn't seem to be any. This issue is currently ""determine if there really is a problem"", with the implicit ""if there was, fix it"". This is somewhat hard to test, since the only way to get the intermediate certs on the request given the current API (I think) is to have them in a CA store; but if they're in a CA store we'll already find them when we chain walk on the receiver side. If the client API made guarantees about when the chain was walked then it could be [OuterLoop] managed by adding intermediates to the store, setting up the client, removing the certs from the store, and letting the request initiate. " +9143 area-System.Security Dispose unneeded certs in chain walk Followup to #8978. OpenSslChainProcessor.FindCandidates causes a lot of X509Certificate2 objects to be spawned (https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslX509ChainProcessor.cs#L495-L498). When the toProcess queue is empty it should find all certificates not referenced in `candidates` and Dispose() them, to be a much better citizen with the underlying SafeX509Handles. +9145 area-System.Console Interruptable read on a pipe "Challenge: Try reading from System.Console.StandardInput.BaseStream without blocking a thread such that another thread can interrupt the read without resorting to P/Invoke. ReadAsync does indeed return immediately, but the Task's cancellation token isn't bound to the task thanks to ""Tuple.Create(this, buffer, offset, count), CancellationToken.None, "" in Stream.cs and no descendant path to WindowsConsoleStream attempts to fix this. This means that attempting to gather the completion result wedges the thread. Both the Windows and the Unix APIs are capable of solving this, but each do so completely differently. I've got thousands upon thousands of lines of code written attempting this problem and still more to go before it works at all. " +9155 area-System.Net HttpClient and PreAuthenticate I am just curious why PreAuthenticate has never worked as expected. On several occasions when I am using Server to Server auth the nounce needs to stay the same on consecutive request but with the way HttpClient behaves I cannot implement that. +9156 area-Infrastructure Official Build Frequency? Today, in the new build pipeline, we have triggers set to build CoreFX 4 times a day, every day, and CoreCLR 3 times a day, every day. This leads to tons on version updates everyday and it's generating a lot of noise, IMHO. I think we should consider doing some (all?) of the following: - Reduce the frequency of triggered builds. As we can launch these on demand and have results in an hour, there's less need to be doing them proactively. - Don't build over the weekend. - Have automation which auto merges green dependency updates. - Have automation which closes old dependency updates with no comments/additional commits. I'm interested in hearing everyone else's thoughts. /cc @dotnet/corefx-contrib @jhendrixMSFT @eerhardt @wtgodbe +9158 area-System.Text 'Cyrillic' is not a supported encoding name. "When I run this: ``` Encoding.GetEncoding(""Cyrillic""); ``` I am now getting this: ``` Unhandled Exception: System.ArgumentException: 'Cyrillic' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. Parameter name: name at System.Globalization.EncodingTable.GetCodePageFromName(String name) at System.Text.Encoding.GetEncoding(String name) at ConsoleApplication.Program.Main(String[] args) ``` which wasn't the case before, it started happening in RC2. dotnet CLI: ``` .NET Command Line Tools (1.0.0-preview1-002702) Product Information: Version: 1.0.0-preview1-002702 Commit Sha: 6cde21225e Runtime Environment: OS Name: ubuntu OS Version: 14.04 OS Platform: Linux RID: ubuntu.14.04-x64 ``` project.json ``` { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""dependencies"": { ""Microsoft.Extensions.DependencyModel"": ""1.0.0-rc2-final"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0-rc2-final"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0-rc2-final"", ""Microsoft.Extensions.Options"": ""1.0.0-rc2-final"", ""Microsoft.Extensions.Configuration.Binder"": ""1.0.0-rc2-final"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0-rc2-final"", ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002702"" } }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""portable-net45+wp80+win8+wpa81+dnxcore50"" } } } ``` " +9160 area-System.Net NegotiateStream AuthenticateAsClientAsync does not work for non default credential NegotiateStream AuthenticateAsClientAsync works for default credential, but not non default credential. I have a repro app similar to the sample in https://msdn.microsoft.com/en-us/library/system.net.security.negotiatestream(v=vs.110).aspx The repro app is passing in desktop, but failing in .net core. I have observed that the client has got a NTLM credential instead of kerberos and failed to log on to the server. [Repro.zip](https://github.com/dotnet/corefx/files/299179/Repro.zip) with below exception from client. > System.Net.Security.dll!System.Net.Security.NegoState.ThrowCredentialException(long error) Line 842 C# > System.Net.Security.dll!System.Net.Security.NegoState.ProcessReceivedBlob(byte[] message, System.Net.LazyAsyncResult lazyResult) Line 608 C# > System.Net.Security.dll!System.Net.Security.NegoState.ReadCallback(System.IAsyncResult transportResult) Line 758 C# > System.Net.Security.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken) Line 481 C# > System.Net.Security.dll!System.Net.LazyAsyncResult.ProtectedInvokeCallback(object result, System.IntPtr userToken) Line 431 C# > System.Net.Security.dll!System.Net.StreamFramer.ReadFrameComplete(System.IAsyncResult transportResult) Line 292 C# > System.Net.Security.dll!System.Net.StreamFramer.ReadFrameCallback(System.IAsyncResult transportResult) Line 171 C# > System.Net.Security.dll!System.Threading.Tasks.TaskToApm.InvokeCallbackWhenTaskCompletes.AnonymousMethod__0() Line 137 C# > System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0() Unknown > System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown > System.Private.CoreLib.ni.dll!System.Threading.Tasks.AwaitTaskContinuation.RunCallback(System.Threading.ContextCallback callback, object state, ref System.Threading.Tasks.Task currentTask) Unknown > System.Private.CoreLib.ni.dll!System.Threading.Tasks.Task.FinishContinuations() Unknown > System.Private.CoreLib.ni.dll!System.Threading.Tasks.Task.TrySetResult(int result) Unknown > System.Private.CoreLib.ni.dll!System.Threading.Tasks.TaskFactory.FromAsyncCoreLogic(System.IAsyncResult iar, System.Func endFunction, System.Action endAction, System.Threading.Tasks.Task promise, bool requiresSynchronization) Unknown > System.Private.CoreLib.ni.dll!System.Threading.Tasks.TaskFactory.FromAsyncImpl.AnonymousMethod__1(System.IAsyncResult iar) Unknown > System.Net.Sockets.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken) Line 481 C# > System.Net.Sockets.dll!System.Net.ContextAwareResult.CompleteCallback() Line 461 C# > System.Net.Sockets.dll!System.Net.ContextAwareResult.Complete.AnonymousMethod__15_0(object s) Line 450 C# > System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown > System.Net.Sockets.dll!System.Net.ContextAwareResult.Complete(System.IntPtr userToken) Line 451 C# > System.Net.Sockets.dll!System.Net.LazyAsyncResult.ProtectedInvokeCallback(object result, System.IntPtr userToken) Line 431 C# > System.Net.Sockets.dll!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped\* nativeOverlapped) Line 181 C# > System.Threading.Overlapped.dll!System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped\* nativeOverlapped) Line 48 C# +9162 area-Meta Introduce System.Json as a Json.Net-compatible foundational library "JSON has entered the global software ecosystem with a force that is as strong, arguably stronger, than XML was in its time. In the .NET ecosystem, for years, it has been striking that the framework was not supporting JSON in a built-in way. As a result, `Newtonsoft.Json` is now the No1 package on Nugget. I suggest that the foundational libraries should include a `System.Json` library with an API compatible with `Newtonsoft.Json`. Indeed, as it stands Json.NET represents a tax that every .NET developer need to pay: you have to discover first _why_ there is no built-in way to deal with JSON, then you have to discover that this one specific third party package is worthy to be trusted. I am not dismissing the quality of this excellent package, but this massive hit primarily demonstrates that JSON should be part of the foundational libraries of .NET. Then, taking the longer view, I am worried - and I believe others should be - about the long term implications of having such a _narrow_ yet _mission-critical_ library developed and maintained separately. .NET Core can be a viable economic product to maintain over time even without the backing of Microsoft. However, Json.NET _alone_ is not economically viable, not even through commercial support, not only 10 years time scale anyway. The project might or might no go the way ServiceStack went (another great project by the way). Also, the commit profile of this project, with the _first contributor having literally over 100x more commits than the second_, a scenario ala NDoc is not to be ruled out either. Presently, Newtonsoft is taking the path of building complementary products on top of Json.NET, which again is very good, yet should not be relied upon for the future of .NET. Opening .NET to the community is great. However, the fundational libraries should cover the _very basic_ use cases. XML is covered, JSON should be as well. In particular, ""outsourcing"" narrow yet critical components is paving the way for upcoming messes ala left-pad. Ideally, `System.Json` would be API-compatible with `Newtonsoft.Json`. There are multiple ways to achieve that. Starting a discussion on this precise matter between corefx representants and James Newton-King would be a start. " +9179 area-System.Net Make the internal CookieComparer class static `CookieComparer` is never used as an `IComparer`, so there's no need for a singleton instance to be created on-demand and cached. Instead, a simple static `Compare` method is sufficient. cc: @stephentoub, @davidsh, @CIPop +9180 area-System.Diagnostics SIGABRT_ASSERT_System.Native.so!SystemNative_ForkAndExecProcess "**The notes in this bug refer to the Ubuntu.14.04 dump [rc3-24202-00_004C](https://rapreqs.blob.core.windows.net/sschaab/BodyPart_669c030d-366e-481c-8f12-0e82c88679f2?sv=2015-04-05&sr=b&sig=yodf0SNKqzeSzh2ZReKVeGouiJC8UhD%2B504JC9qrI1s%3D&st=2016-06-03T22%3A16%3A16Z&se=2017-06-03T22%3A16%3A16Z&sp=r). Other dumps are available if needed.** ``` STOP_REASON: SIGABRT FAULT_SYMBOL: System.Native.so!SystemNative_ForkAndExecProcess FAILURE_HASH: SIGABRT_System.Native.so!SystemNative_ForkAndExecProcess FAULT_STACK: libc.so.6!__GI_raise libc.so.6!__GI_abort libc.so.6!__assert_fail_base libc.so.6!UNKNOWN System.Native.so!SystemNative_ForkAndExecProcess System.Runtime.Extensions.dll!DomainBoundILStubClass.IL_STUB_PInvoke(System.String, Byte**, Byte**, System.String, Int32, Int32, Int32, Int32 ByRef, Int32 ByRef, Int32 ByRef, Int32 ByRef) System.Diagnostics.Process.dll!Interop+Sys.ForkAndExecProcess(System.String, System.String[], System.String[], System.String, Boolean, Boolean, Boolean, Int32 ByRef, Int32 ByRef, Int32 ByRef, Int32 ByRef) System.Diagnostics.Process.dll!System.Diagnostics.Process.StartCore(System.Diagnostics.ProcessStartInfo) System.Diagnostics.Process.dll!System.Diagnostics.Process.Start() System.Diagnostics.Process.Tests.dll!System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_TryWaitMultipleTimesBeforeCompleting() rc3-24202-00_004C.exe!stress.generated.UnitTests.UT0() stress.execution.dll!stress.execution.UnitTest.Execute() stress.execution.dll!stress.execution.DedicatedThreadWorkerStrategy.RunWorker(stress.execution.ITestPattern, System.Threading.CancellationToken) stress.execution.dll!stress.execution.DedicatedThreadWorkerStrategy+<>c__DisplayClass1_0.b__0() System.Private.CoreLib.ni.dll!System.Threading.Tasks.Task.Execute() System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) System.Private.CoreLib.ni.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) System.Private.CoreLib.ni.dll!System.Threading.Tasks.Task.ExecuteEntry(Boolean) System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) libcoreclr.so!CallDescrWorkerInternal libcoreclr.so!CallDescrWorkerWithHandler(CallDescrData*, int) libcoreclr.so!MethodDescCallSite::CallTargetWorker(unsigned long const*) libcoreclr.so!MethodDescCallSite::Call(unsigned long const*) libcoreclr.so!ThreadNative::KickOffThread_Worker(void*) libcoreclr.so!ManagedThreadBase_DispatchInner(ManagedThreadCallState*) libcoreclr.so!ManagedThreadBase_DispatchMiddle(ManagedThreadCallState*) libcoreclr.so!ManagedThreadBase_DispatchOuter(ManagedThreadCallState*)::$_6::operator()(ManagedThreadBase_DispatchOuter(ManagedThreadCallState*)::TryArgs*) const::{lambda(Param*)#1}::operator()(Param*) const libcoreclr.so!ManagedThreadBase_DispatchOuter(ManagedThreadCallState*)::$_6::operator()(ManagedThreadBase_DispatchOuter(ManagedThreadCallState*)::TryArgs*) const libcoreclr.so!ManagedThreadBase_DispatchOuter(ManagedThreadCallState*) libcoreclr.so!ManagedThreadBase_FullTransitionWithAD(ADID, void (*)(void*), void*, UnhandledExceptionLocation) libcoreclr.so!ManagedThreadBase::KickOff(ADID, void (*)(void*), void*) libcoreclr.so!ThreadNative::KickOffThread(void*) libcoreclr.so!Thread::intermediateThreadProc(void*) libcoreclr.so!CorUnix::CPalThread::ThreadEntry(void*) libpthread.so.0!start_thread libc.so.6!__clone FAULT_THREAD: thread #1: tid = 53100, 0x00007f00ab935cc9 libc.so.6`__GI_raise(sig=6) + 57 at raise.c:56, name = 'corerun', stop reason = signal SIGABRT ``` **Looking at the code for frame 4 (pal_process.cpp line 151) it looks like the call to fork() returns -1 so it asserts with the message ""fork() failed.""** ``` (lldb) fr s 4 frame #4: 0x00007effd1df2cb5 System.Native.so`::SystemNative_ForkAndExecProcess(filename=""/home/DotNetBot/dotnetbuild/work/b36360ef-8151-4402-8438-48a63dd3588d/Work/d643c218-6748-4941-8172-9696a99dcf7b/Exec/execution/corerun"", argv=0x00007eff87d5ebc0, envp=0x00007eff87d61380, cwd=0x0000000000000000, redirectStdin=0, redirectStdout=0, redirectStderr=0, childPid=0x00007f000aff9d30, stdinFd=0x00007f000aff9d28, stdoutFd=0x00007f000aff9d20, stderrFd=0x00007f000aff9d18) + 645 at pal_process.cpp:151 (lldb) fr v -D1 (const char *) filename = 0x00007eff87d62220 ""/home/DotNetBot/dotnetbuild/work/b36360ef-8151-4402-8438-48a63dd3588d/Work/d643c218-6748-4941-8172-9696a99dcf7b/Exec/execution/corerun"" (char *const *) argv = 0x00007eff87d5ebc0 (char *const *) envp = 0x00007eff87d61380 (const char *) cwd = 0x0000000000000000 (int32_t) redirectStdin = 0 (int32_t) redirectStdout = 0 (int32_t) redirectStderr = 0 (int32_t *) childPid = 0x00007f000aff9d30 (int32_t *) stdinFd = 0x00007f000aff9d28 (int32_t *) stdoutFd = 0x00007f000aff9d20 (int32_t *) stderrFd = 0x00007f000aff9d18 (int) success = 1 (int [2]) stdinFds = ([0] = -1, [1] = -1) (int [2]) stdoutFds = ([0] = -1, [1] = -1) (int [2]) stderrFds = ([0] = -1, [1] = -1) (int [2]) waitForChildToExecPipe = ([0] = 162, [1] = 164) (int) processId = -1 // Fork the child process if ((processId = fork()) == -1) { assert(false && ""fork() failed.""); success = false; goto done; } ``` " +9181 area-Serialization Addressed Feedback for PR #9125. The change is to avoid the intermediate `StringBuilder` and `string` allocations. Thanks for @justinvp 's suggestions. +9184 area-System.Net Allow CookieContainer to be Serialized/Deserialized "Currently, serialization and deserialization of the CookieContainer doesn't work. The documentation says to use the CookieContainer if one needs to save off HttpOnly cookies. It seems that saving the CookieContainer isn't possible. ""If the server sends HTTPOnly cookies, you should create a System.Net.CookieContainer on the request to hold the cookies, although you will not see or be able to access the cookies that are stored in the container."" We should look at providing support for CookieContainer class to have XML serialization. " +9187 area-Infrastructure Introduce Gentoo Linux RID and a job in CI matrix The current master branches of CoreCLR and CoreFX native builds on Gentoo Linux. I have compiled the steps to create a Gentoo LXC container on Ubuntu 14 with list of dependencies required for the said repos: https://gist.github.com/jasonwilliams200OK/1a2e2c0e904ffa95faf6333fcd88d9b8. Please assign an RID for Gentoo Linux and add CI job to continuously monitor its build status. Thanks! :) +9189 area-System.Net Socket.Connect fails for connection-less and single IP-address remote endpoints on Unix Ref: #9137, #4968 [System.Net.Sockets.Tests.UdpClientTest.Connect_Success (from (empty))](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/1814/testReport/junit/System.Net.Sockets.Tests/UdpClientTest/Connect_Success/) ``` Stacktrace MESSAGE: System.PlatformNotSupportedException : Sockets on this platform are invalid for use after a failed connection attempt, and as a result do not support attempts to connect to multiple endpoints. +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Socket.ThrowIfNotSupportsMultipleConnectAttempts() at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) at System.Net.Sockets.Socket.Connect(String host, Int32 port) at System.Net.Sockets.Tests.UdpClientTest.Connect_Success() ``` [System.Net.Sockets.Tests.UdpClientTest.ConnectAsync_Success (from (empty))](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/1814/testReport/junit/System.Net.Sockets.Tests/UdpClientTest/ConnectAsync_Success/) ``` Stacktrace MESSAGE: System.PlatformNotSupportedException : Sockets on this platform are invalid for use after a failed connection attempt, and as a result do not support attempts to connect to multiple endpoints. +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Socket.ThrowIfNotSupportsMultipleConnectAttempts() at System.Net.Sockets.Socket.BeginConnect(String host, Int32 port, AsyncCallback requestCallback, Object state) at System.Net.Sockets.SocketTaskExtensions.<>c.b__5_0(String targetHost, Int32 targetPort, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state) at System.Net.Sockets.SocketTaskExtensions.ConnectAsync(Socket socket, String host, Int32 port) at System.Net.Sockets.Tests.UdpClientTest.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9191 area-System.IO Fix Filesystem tests failing from path changes Changes in path validation disabled some of the FileSystem tests. Re-enable them with the new path logic in place. resolves #6931 +9201 area-System.Net HttpClient PostAsync - The server returned an invalid or unrecognized response "EDITED: If I run this application on a Windows computer everything works out fine. When I run this application on a Linux (CentOS) computer I get the following exception: > System.Net.Http.HttpRequestException: The server returned an invalid or unrecognized response. at System.Net.Http.CurlResponseHeaderReader.ReadHeader(String& headerName, String& headerValue) at System.Net.Http.CurlHandler.MultiAgent.CurlReceiveHeadersCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) I've tried this code on a Windows machine and it is working perfectly. I've also tried to make a SOAP call on CentOS console trough curl and it also works fine (I get the response). In the web application I keep getting the exception saying that the server returned an invalid or unrecognized response. This is the code - Exception thrown right on the hc.PostAsync(). ``` Uri uri = new Uri(ServiceConfiguration.SERVICE_URL); string sSOAPResponse = String.Empty; HttpClient hc = new HttpClient(); hc.DefaultRequestHeaders.Add(""SOAPAction"", oRequest.Action); var content = new StringContent(oRequest.RequestMessage, Encoding.UTF8, ""text/xml""); try { using (HttpResponseMessage response = await hc.PostAsync(uri, content)) { sSOAPResponse = await response.Content.ReadAsStringAsync(); (...) } ``` ` ## Steps to reproduce Call post async method with HttpClient on a Linux Server (CentOS 7.1 My case) ## Expected behavior Get the SOAP response (Works perfectly on Windows). ## Actual behavior The server returned an invalid or unrecognized response thrown. ## Environment data Product Information: Version: 1.0.0-preview1-002702 Commit Sha: 6cde21225e Runtime Environment: OS Name: centos OS Version: 7 OS Platform: Linux RID: centos.7-x64 Moved from https://github.com/dotnet/cli/issues/3344 on behalf of @RicardoRazz as this seems to be an HttpClient issue in the RC2 release of Shared Framework. " +9202 area-System.Globalization string.IndexOf not giving correct index "## Repro Steps 1. Copy code below 2. Run code ``` csharp namespace TestApp { class Program { static void Main(string[] args) { var sentence = ""\uDAD1²\uDF8F 㽜|""; var index = sentence.IndexOf(sentence); Console.WriteLine(""index: {0}"", index); if (index == 0) { Console.WriteLine(""It works!""); } else { throw new InvalidOperationException(""Expected that it is 0""); } } } } ``` ## Expected `index` is equal to 0. ## Actual An InvalidOperationException is thrown because `index` is equal to 1. " +9204 area-Infrastructure CentOS 7 outerloop runs failing [cmake is not found] After upgrading to build everything on the target machines the CentOS outerloop runs are failing with an error saying cmake is not found. Looking at how the labels are set up in Jenkins, it looks like the outerloop runs use a different base image id than the inner loop ones. I suppose CMake is not present on this newer image? +9208 area-System.Net Allow whitespace after HTTP response header name Be a bit more lenient in what we allow in the formatting of response headers. Fixes https://github.com/dotnet/corefx/issues/9201 cc: @davidsh, @ericeil, @RicardoRazz +9212 area-System.Net Manual_CertificateSentMatchesCertificateReceived_Success failed on Windows CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2007/consoleFull#-4102119967b4762c-faac-47f0-8268-9f6835e4535e ``` System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.Manual_CertificateSentMatchesCertificateReceived_Success(numberOfRequests: 3, reuseClient: True) [FAIL] 16:28:34 System.Net.Http.HttpRequestException : An error occurred while sending the request. 16:28:34 ---- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response 16:28:34 Stack Trace: 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 Starting: System.Threading.Tasks.Tests 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(381,0): at System.Net.Http.HttpClient.d__58.MoveNext() 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(172,0): at System.Net.Http.HttpClient.d__32`1.MoveNext() 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ClientCertificates.cs(88,0): at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_0.<b__2>d.MoveNext() 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ClientCertificates.cs(106,0): at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_2.<b__4>d.MoveNext() 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Net\Http\LoopbackServer.cs(57,0): at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) 16:28:34 at System.Threading.Tasks.Task.Execute() 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ClientCertificates.cs(98,0): at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.d__5.MoveNext() 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 --- End of stack trace from previous location where exception was thrown --- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 ----- Inner Stack Trace ----- 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 16:28:34 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 16:28:34 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 16:28:34 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(845,0): at System.Net.Http.WinHttpHandler.d__101.MoveNext() ``` +9213 area-System.Net Sample Application on HttpClient with .NET core I want to send a Http request to some website(URL) and get a response(Basically i need to use GetAsync and PutAsync methods for this) and i need to do with **.NET Core** in vs2015. Since i am new to .NET Core, i am unable to do it on my own and i didn't find good useful links that address my need. Can anyone set me on the path by providing sample applications or useful links ?Thanks in advance. P.S. I tried randomly some console application(Not sure if it is correct) but when i am adding Microsoft.Net.Http dependency to the project.json, i am getting an error like This dependency cannot be supported on .NET Core framework. +9218 area-System.Net Allow Socket.Connect{Async} to be used with a string-based IP addresses "As outlined in https://github.com/dotnet/corefx/issues/8768, on Unix we don't currently support using the instance Connect/ConnectAsync methods that take a string host or a DnsEndPoint, because they could map to multiple addresses, which means we might need to try reconnecting on the same socket after a failed attempt, and that's not supported with BSD sockets. They are potential workarounds we can explore as outlined in that issue, but they're non-trivial and/or have undesirable ramifications. However, one simple thing we can do is allow a string/DnsEndPoint version of an IPAddress, e.g. just as someone can provide an IPAddress, they can provide a string version of that IPAddress, such as ""127.0.0.1"". This is a common thing to do, and we can make it work just by attempting to parse the address. Fixes https://github.com/dotnet/corefx/issues/9189 Related to https://github.com/dotnet/corefx/issues/8768 cc: @ericeil, @cipop, @davidsh, @joshfree " +9220 area-System.Reflection DispatchProxy should emit interface properties and events metadata "Currently, `DispatchProxyGenerator` only emits accessor methods of the interface type, does not emit any properties and/or events. Thus, getting properties and/or events via reflection fails as following: ``` csharp interface IFoo { string Bar { get; set; } }; IFoo proxy = DispatchProxy.Create(); PropertyInfo[] props = proxy.GetType().GetProperties(); ``` In this point, it is natural to think that `props` has 1 property (string Bar), but it is actually an empty array even though `var bar = proxy.Bar` and `proxy.Bar = ""something""` can be compiled. It looks unnatural. In addition, it limits effectiveness of `DispatchProxy`. For example, when we generate a wrapper which implements `INotifyPropertyChanged` around underlying model object using `DispatchProxy`, we cannot do that because the data binding engine fails to retrieve `PropertyInfo` and then fails to bind object. Other AOP scenario may also be restricted by this issue. So, `DispatchProxyGenerator` should also emit properties and events of specified interface type as well as their accessor methods. " +9222 area-System.IO Consider File.WriteAll(Stream) method I frequently find myself wanting to dump all of the data from a stream to a new file. Currently, the best way to do that is: ``` using (var fs = new FileStream(pathForNewFile, FileMode.Create)) { streamIWantToDump.CopyTo(fs); } // OR using (var fs = File.OpenWrite(pathForNewFile)) { streamIWantToDump.CopyTo(fs); } // or async CopyTo equivalents. ``` while these are fine, I'd really like to be able to do: ``` File.WriteAllFromStream(pathForNewFile, streamIWantToDump); ``` where `WriteAllFromStream` reads from `streamIWantToDump` until its end is reached. +9224 area-System.Net Port to release/1.0.0: Allow whitespace after HTTP response header name Port https://github.com/dotnet/corefx/pull/9208 to release/1.0.0 +9225 area-System.Security System.Security.AccessControl Unix implementation It may be worth looking into providing an implementation of AccessControl on Unix. It would at least be nice to have some control over basic RWX permissions for user/group/all, or we could go deeper with getfacl and setfacl. Most of the things on Windows would likely have to be left out as it would be too far a stretch to map them to anything on Unix, but it's worth considering regardless. discussion started in https://github.com/dotnet/corefx/pull/8930. +9227 area-System.Net HttpRequestException StatusCode property Is it possible to add HttpStatusCode to the `HttpRequestException` class? It seems like we have the ability to add the status code [here](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs#L161), but it's added to the exception message instead of an extra property on the exception. +9228 area-System.Net "Cancelling Http requests can result in ""The handle is invalid"" or other WinHTTP state errors" Http requests can be cancelled in various ways using a cancellation token or even a timeout. Sometimes the CI tests timeout contacting the Azure test server due to network congestion, so this results in the requests getting cancelled as well by the HttpClient.Timeout property. When Http requests are cancelled in WinHttpHandler, the WinHTTP handle is closed. This cancels any outstanding async operations in WinHTTP. However, the current CancellationTokenRegistration code is closing the handle without first seeing if there is an active operation in flight. ``` c# private async void StartRequest(object obj) { // ... using (state.CancellationToken.Register(s => ((WinHttpRequestState)s).RequestHandle.Dispose(), state)) { do { // ... } while (state.RetryRequest); } ``` Since this cancellation is happening on a different thread from the main StartRequest() logic, it results in in-deterministic behavior. PR #8693 (Fix cancellation of WinHttpHandler response stream reads) has a similar CancellationToken.Register logic but it correctly checks for an active operation. This same logic needs to apply to the StartRequest() operation. This is the root cause of the following issues: #8928 #8496 #8426 #8061 #8000 ## History of failures ``` System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The handle is invalid ``` Day | Build | OS | Test -- | -- | -- | -- 5/9 | 20170509.01 | Win7 | Timeout_SetTo30AndGetResponseFromLoopbackQuickly_Success 5/10 | 20170510.01 | Win7 | GetAsync_AllowedSSLVersion_Succeeds 5/11 | 20170511.01 | Win7 | GetAsync_AllowedSSLVersion_Succeeds 5/19 | 20170519.04 | Win7 | PostAsync_CallMethod_StreamContent 5/26 | 20170526.01 | Win7 | PostLongerContentLengths_UsesChunkedSemantics 5/30 | 20170530.06 | Win7 | SetDelegate_ConnectionSucceeds 6/4 | 20170604.02 | Win7 | NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds 6/7 | 20170607.01 | Win7 | PostSyncBlockingContentUsingChunkedEncoding_Success 6/13 | 20170613.02 | Win7 | SetDelegate_ConnectionSucceeds 6/14 | 20170614.01 | Win7 | PostAsync_CallMethod_StreamContent 6/15 | 20170615.03 | Win7 | NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds 6/15 | 20170615.03 | Win8.1 | GetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized 6/16 | 20170616.01 | Win7 | PostAsync_CallMethod_EmptyContent 9/26 | 20170926.06 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success 10/10 | 20171010.03 | Win7 | GetStreamAsync_ReadToEnd_Success 10/11 | 20171011.02 | Win7 | PostAsync_CallMethod_StreamContent 10/20 | 20171020.01 | Win7 | SetDelegate_ConnectionSucceeds 10/22 | 20171022.01 | Win7 | MaxResponseContentBufferSize_ThrowsIfTooSmallForContent 10/22 | 20171022.02 | Win7 | MaxResponseContentBufferSize_ThrowsIfTooSmallForContent 10/23 | 20171023.02 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success 10/25 | 20171025.04 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 10/25 | 20171025.08 | Win7 | PostRewindableContentUsingAuth_NoPreAuthenticate_Success 10/25 | 20171025.08 | Win7 | PostAsync_CallMethod_StreamContent 10/27 | 20171027.03 | Win7 | PostUsingContentLengthSemantics_Success 10/30 | 20171030.01 | Win7 | PostRewindableContentUsingAuth_NoPreAuthenticate_Success 10/30 | 20171030.02 | Win7 | GetAsync_SupportedSSLVersion_Succeeds 10/31 | 20171030.05 | Win7 | SetDelegate_ConnectionSucceeds 11/3 | 20171103.07 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 11/6 | 20171106.03 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 11/6 | 20171106.01 | Win7 | PostRewindableContentUsingAuth_NoPreAuthenticate_Success 11/7 | 20171107.02 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 11/9 | 20171109.04 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success 11/15 | 20171115.02 | Win7 | PostAsync_EmptyContent_ContentTypeHeaderNotSent 11/15 | 20171115.03 | Win7 | GetAsync_TrailingHeaders_Ignored 11/18 | 20171118.04 | Win7 | GetStreamAsync_ReadZeroBytes_Success 11/20 | 20171120.01 | Win7 | GetAsync_TrailingHeaders_Ignored 11/20 | 20171120.02 | Win7 | GetAsync_AllowedSSLVersion_Succeeds 11/22 | 20171122.02 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 11/23 | 20171123.02 | Win7 | GetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized 11/24 | 20171124.01 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 11/27 | 20171127.06 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 11/28 | 20171128.01 | Win7 | SetDelegate_ConnectionSucceeds 11/28 | 20171128.07 | Win10 | UseCallback_NotSecureConnection_CallbackNotCalled 12/5 | 20171205.05 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 12/5 | 20171205.06 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 12/8 | 20171208.01 | Win7 | PostAsync_EmptyContent_ContentTypeHeaderNotSent 12/12 | 20171212.02 | Win7 | GetStreamAsync_ReadToEnd_Success 12/23 | 20171223.01 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed - [link](https://mc.dot.net/#/product/netcore/master/source/official%7E2Fcorefx%7E2Fmaster%7E2F/type/test%7E2Ffunctional%7E2Fcli%7E2F/build/20171223.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test%7E2FGetAsync_MaxLimited_ConcurrentCallsStillSucceed(maxConnections:%203,%20numRequests:%202,%20secure:%20True)) 12/24 | 20171224.02 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed - [link](https://mc.dot.net/#/product/netcore/master/source/official%7E2Fcorefx%7E2Fmaster%7E2F/type/test%7E2Ffunctional%7E2Fcli%7E2F/build/20171224.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test%7E2FGetAsync_MaxLimited_ConcurrentCallsStillSucceed(maxConnections:%203,%20numRequests:%202,%20secure:%20True)) 12/31 | 20171231.01 | Win7 | GetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171231.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FGetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized(authHeaders:%20%5C%22WWW-Authenticate:%20CustomAuth%5C%5Cr%5C%5Cn%5C%22)) 1/5 | 20180105.01 | Win7 | SetDelegate_ConnectionSucceeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180105.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20Tls11,%20Tls12,%20requestOnlyThisProtocol:%20True)) 1/10 | 20180110.03 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180110.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests_Dribble~2FGetAsync_ExpectedStatusCodeAndReason_Success(statusLine:%20%5C%22HTTP~2F1.1%20201%20Created%5C%22,%20expectedStatusCode:%20201,%20expectedReason:%20%5C%22Created%5C%22)) 1/11 | 20180111.02 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180111.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests_Dribble~2FGetAsync_ExpectedStatusCodeAndReason_Success(statusLine:%20%5C%22HTTP~2F1.1%20500%20Internal%20Server%20Error%5C%22,%20expectedStatusCode:%20500,%20expectedReason:%20%5C%22Inter)) 1/14 | 20180114.01 | Win7 | PostAsync_EmptyContent_ContentTypeHeaderNotSent - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180114.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostAsync_EmptyContent_ContentTypeHeaderNotSent(serverUri:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) 1/16 | 20180116.01 | Win7 | SetDelegate_ConnectionSucceeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180116.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20True)) 1/18 | 20180118.04 | Win7 | MaxResponseContentBufferSize_ThrowsIfTooSmallForContent - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180118.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests~2FMaxResponseContentBufferSize_ThrowsIfTooSmallForContent(maxSize:%202,%20contentLength:%201,%20exceptionExpected:%20False)) 1/19 | 20180119.02 | Win7 | GetAsync_AllowedSSLVersion_Succeeds - [link](https://mc.dot.net/#/product/netcore/master/source/official%7E2Fcorefx%7E2Fmaster%7E2F/type/test%7E2Ffunctional%7E2Fcli%7E2F/build/20180119.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test%7E2FGetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol:%20Tls11,%20requestOnlyThisProtocol:%20False)) 1/19 | 20180119.04 | Win7 | PostUsingContentLengthSemantics_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180119.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostUsingContentLengthSemantics_Success(serverUri:%20http:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) 1/21 | 20180121.01 | Win7 | MaxResponseContentBufferSize_ThrowsIfTooSmallForContent - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180121.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests~2FMaxResponseContentBufferSize_ThrowsIfTooSmallForContent(maxSize:%202,%20contentLength:%201,%20exceptionExpected:%20False)) 1/22 | 20180122.02 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180122.02/workItem/System.Net.Http.Functional.Tests/wilogs) 1/23 | 20180123.01 | Win7 | PostRewindableContentUsingAuth_NoPreAuthenticate_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180123.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostRewindableContentUsingAuth_NoPreAuthenticate_Success(serverUri:%20http:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx%3Fauth=basic&user=user1&password=password1)) 1/23 | 20180123.01 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180123.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests~2FGetAsync_ExpectedStatusCodeAndReason_Success(statusLine:%20%5C%22HTTP~2F1.1%20200%20OK%C2%80%5C%22,%20expectedStatusCode:%20200,%20expectedReason:%20%5C%22OK%3F%5C%22)) 1/23 | 20180123.01 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180123.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test~2FGetAsync_MaxLimited_ConcurrentCallsStillSucceed(maxConnections:%203,%20numRequests:%205,%20secure:%20False)) 1/25 | 20180125.01 | Win7 | PostAsync_ReuseRequestContent_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180125.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FPostAsync_ReuseRequestContent_Success(remoteServer:%20http:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) 1/27 | 20180127.01 | Win7 | GetAsync_TrailingHeaders_Ignored - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180127.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FGetAsync_TrailingHeaders_Ignored(includeTrailerHeader:%20True)) 1/27 | 20180127.04 | Win10 | PostRepeatedFlushContentUsingChunkedEncoding_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180127.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostRepeatedFlushContentUsingChunkedEncoding_Success(serverUri:%20http:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) 1/27 | 20180127.04 | Win7 | GetAsync_RedirectResponseHasCookie_CookieSentToFinalUri - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180127.04/workItem/System.Net.Http.Functional.Tests/wilogs) 1/29 | 20180129.05 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180129.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test~2FGetAsync_MaxLimited_ConcurrentCallsStillSucceed(maxConnections:%203,%20numRequests:%202,%20secure:%20True)) 1/30 | 20180130.05 | Win7 | PostEmptyContentUsingConflictingSemantics_Success - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180130.05/workItem/System.Net.Http.Functional.Tests/wilogs) 1/31 | 20180131.05 | Win7 | SetDelegate_ConnectionSucceeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180131.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20Tls11,%20Tls12,%20requestOnlyThisProtocol:%20True)) 2/1 | 20180201.01 | Win7 | PostUsingChunkedEncoding_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180201.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostUsingChunkedEncoding_Success(serverUri:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) 2/1 | 20180201.01 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180201.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test~2FGetAsync_MaxLimited_ConcurrentCallsStillSucceed(maxConnections:%203,%20numRequests:%205,%20secure:%20False)) 2/1 | 20180201.05 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180201.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests~2FGetAsync_ExpectedStatusCodeAndReason_Success(statusLine:%20%5C%22HTTP~2F1.1%20200%20OK%C2%80%5C%22,%20expectedStatusCode:%20200,%20expectedReason:%20%5C%22OK%3F%5C%22)) 2/5 | 20180205.01 | Win7 | SetDelegate_ConnectionSucceeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180205.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False)) 2/6 | 20180206.04 | Win7 | SetDelegate_ConnectionSucceeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180206.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False)) 2/6 | 20180206.05 | Win7 | UseCallback_NotSecureConnection_CallbackNotCalled - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180206.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FUseCallback_NotSecureConnection_CallbackNotCalled) 2/8 | 20180208.01 | Win7 | 2x GetAsync_ExpectedStatusCodeAndReason_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180208.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests~2FGetAsync_ExpectedStatusCodeAndReason_Success(statusLine:%20%5C%22HTTP~2F1.1%20200%20O%20K%5C%22,%20expectedStatusCode:%20200,%20expectedReason:%20%5C%22O%20K%5C%22)) and [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180208.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpProtocolTests~2FGetAsync_ExpectedStatusCodeAndReason_Success(statusLine:%20%5C%22HTTP~2F1.1%20600%20still%20valid%5C%22,%20expectedStatusCode:%20600,%20expectedReason:%20%5C%22still%20valid%5C%22)) 2/9 | 20180209.05 | Win7 | ThresholdExceeded_ThrowsException - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180209.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test~2FThresholdExceeded_ThrowsException(responseHeaders:%20%5C%22HTTP~2F1.1%20200%20OK%5C%5Cr%5C%5CnContent-Length:%200%5C%5Cr%5C%5CnCustom-000%5C%22...,%20maxResponseHeadersLe)) 2/10 | 20180210.01 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180210.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test~2FGetAsync_MaxLimited_ConcurrentCallsStillSucceed(maxConnections:%203,%20numRequests:%205,%20secure:%20False)) 2/10 | 20180210.01 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180210.01/workItem/System.Net.Http.Functional.Tests/wilogs) 2/13 | 20180213.01 | Win7 | ThresholdExceeded_ThrowsException 2/20 | 20180220.08 | Win7 | The handle is invalid | GetAsync_ExpectedStatusCodeAndReason_Success 2/21 | 20180221.01 | Win7 | The handle is invalid | GetAsync_ExpectedStatusCodeAndReason_Success 2/25 | 20180225.01 | Win7 | HttpClientHandler_IncorrectCredentials_Fails - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180225.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_Authentication_Test~2FHttpClientHandler_IncorrectCredentials_Fails(authenticateHeader:%20%5C%22WWW-Authenticate:%20Digest%20realm=%5C%5C%5C%22hello%5C%5C%5C%22,%20nonce=%5C%5C%5C%22%5C%22...)) 2/25 | 20180225.02 | Win10 | HttpClientHandler_Authentication_Succeeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180225.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_Authentication_Test~2FHttpClientHandler_Authentication_Succeeds(authenticateHeader:%20%5C%22Basic%20something,%20Digest%20something%5C%22,%20result:%20False)) 2/26 | 20180226.04 | Win7 | GetAsync_AllowedSSLVersion_Succeeds - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180226.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol:%20Tls11,%20requestOnlyThisProtocol:%20True)) 2/28 | 20180228.07 | Win7 | ThresholdExceeded_ThrowsException 3/1 | 20180301.01 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 3/2 | 20180302.06 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success 3/4 | 20180304.01 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success 3/7 | 20180307.03 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed 3/7 | 20180307.03 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 3/7 | 20180307.04 | Win7 | ReadAsStreamAsync_ValidServerResponse_Success 3/8 | 20180308.01 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 3/8 | 20180308.09 | Win7 | GetAsync_SetCookieContainer_CookieSent 3/10 | 20180310.02 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 3/14 | 20180314.01 | Win7 | GetAsync_ExpectedStatusCodeAndReason_Success 3/17 | 20180317.03 | Win7 | GetAsync_MaxLimited_ConcurrentCallsStillSucceed 3/22 | 20180322.06 | Win7 | ThresholdExceeded_ThrowsException #### Similar failure with IOException wrapped in the middle ``` System.Net.Http.HttpRequestException : Error while copying content to a stream. ---- System.IO.IOException : The write operation failed, see inner exception. -------- System.Net.Http.WinHttpException : The handle is invalid ``` Day | Build | OS | Test -- | -- | -- | -- 11/17 | 20171117.04 | Win7 | PostUsingContentLengthSemantics_Success 12/2 | 20171202.01 | Win7 | PostAsync_ReuseRequestContent_Success +9233 area-System.Net Remove keepallprojectreferences from system.net.http and system.net.security tests Private testing has shown that the surface area discrepancy between Windows / Linux has been resolved, per @stephentoub 's suspicion. This changes removes the property which keeps tests from compiling against packages for these test libraries. Fixes issue https://github.com/dotnet/corefx/issues/8482 /cc @stephentoub @weshaggard +9234 area-System.Net NTLM credentials not sent by client when there are multiple WWW-Authenticate headers "We have a strange case after migrating from RC1 to RC2. We use HttpClient with default windows credentials authentication. The code works fine with one server, but does not work with another server. In the second case client just receives 401 error and does not start NTLM handshake. The only difference that I spotted was that second server sends two WWW-Authenticate headers (one with basic, another with HTML). When I intercepted the response with Fiddler, and removed ""WWW-Authenticate"" header with basic authorization, everything worked fine, client started NTLM handshake, and finally authorized. ```c# var handler = new HttpClientHandler(); handler.UseDefaultCredentials = true; var client = new HttpClient(handler); HttpResponseMessage response = await client.GetAsync(url); ``` Request/response from second server: ``` GET https://my-server:8081/tfs/DefaultCollection/_apis/projects?api-version=1.0 HTTP/1.1 Connection: Keep-Alive Accept-Encoding: gzip, deflate Host: my-server:8081 HTTP/1.1 401 Unauthorized Content-Type: text/html Server: Microsoft-IIS/8.5 Access-Control-Allow-Origin: * Access-Control-Max-Age: 3600 Access-Control-Allow-Methods: OPTIONS,GET,POST,PATCH,PUT,DELETE Access-Control-Expose-Headers: ActivityId,X-TFS-Session,X-MS-ContinuationToken Access-Control-Allow-Headers: authorization X-FRAME-OPTIONS: SAMEORIGIN Set-Cookie: Tfs-SessionId=XXX; path=/; secure Set-Cookie: Tfs-SessionActive=2016-06-07 20:44:23Z; path=/; secure WWW-Authenticate: Basic realm=""my-server"" WWW-Authenticate: NTLM P3P: CP=""CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT"" X-Content-Type-Options: nosniff Date: Tue, 07 Jun 2016 20:44:22 GMT Content-Length: 1293 ``` OS: windows 10 x64, app running on coreclr RC2 " +9237 area-System.IO Discuss adding System.IO.Compression static shortcuts "# Problem I'd like to see some better support for compressing data in different forms quickly. Say you have a string right now - to compress it you have to do something like this: ``` string iWantToCompress = ""thisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokaythisisalongstringokay?""; byte[] bytesToCompress = Encoding.UTF8.GetBytes(iWantToCompress); using (var streamWithCompressed = new MemoryStream()) { using (var compressor = new DeflateStream(streamWithCompressed, CompressionMode.Compress, true)) { compressor.Write(bytesToCompress, 0, bytesToCompress.Length); } byte[] compressed = streamWithCompressed.ToArray(); } ``` # Proposal It would be nice if we could compress or decompress a string more intuitively, like so: ``` byte[] compressed = Deflate.Compress(iWantToCompress); ``` This would be somewhat similar to what we did in FileSystem by having`File.WriteAll*` operations to circumvent the need for a `FileStream`. # Design ### Deflate / Zlib / GZIP Deflate, Zlib, and GZip are all variants of the DEFLATE algorithm. The difference between them is that Deflate does not have a header, while ZLib and GZip have their own distinct headers. We currently support Deflate and GZip via DeflateStream and GZipStream, though there is [an issue for adding Zlib header support](https://github.com/dotnet/corefx/issues/7570). Do we add string support for all three types? If so, how? Some options: - Have one `Compression` static class with methods `Compress` and `Decompress` that take in an optional `HeaderType` enum with values `None`, `ZLib`, and `GZip`. The default would be None. ``` string compressed, decompressed; compressed = Compression.Compress(""stringToCompress"", HeaderType.GZip); compressed = Compression.Compress(""stringToCompress""); // uses Deflate i.e. no header is written decompressed = Compression.Decompress(compressed); // decompression can detect and interpret the header for any of the three DEFLATE types, so specifying it explicitly would override that behavior and force the header to conform to the given type ``` - Have 2-3 static classes `Deflate`, `GZip`, and `ZLib` that contain their own `Compress` and `Decompress` methods. ``` string compressed, decompressed; compressed = GZip.Compress(""stringToCompress""); compressed = Deflate.Compress(""stringToCompress""); decompressed = Deflate.Decompress(compressed); ``` - Add static `Compress` and `Decompress` methods to the existing `DeflateStream` and `GZipStream` classes: ``` string compressed, decompressed; compressed = GZipStream.Compress(""stringToCompress""); compressed = DeflateStream.Compress(""stringToCompress""); decompressed = DeflateStream.Decompress(compressed); ``` ### Parameters There should be three versions of Compress + three versions of Decompress: ``` Compress(string stringToCompress); Compress(string stringToCompress, Encoding encoding); Compress(byte[] bytesToCompress); Decompress(string stringToDecompress); Decompress(string stringToDecompress, Encoding encoding); Decompress(byte[] bytesToDecompress); ``` though I could see the value for `stream` equivalents (similar to https://github.com/dotnet/corefx/issues/9222) as well: ``` Compress(Stream streamToCompress); Decompress(Stream streamToCompress); ``` ### Return value Three sensible options: - Return a string with the results of the operation. :-1: - Return a byte[] with the results of the operation - Return a stream that can be read for the results of the operation. - The return type varies based on the parameter type e.g. `Compress(string)` returns a string, `Compress(byte[])` returns a byte[], etc. :-1: # Perf Using these shortcuts would circumvent the need for: - an Underlying stream (e.g. a MemoryStream) to hold the results of the (de)compression. - a DeflateStream/GZipStream object - A Deflater/Inflater object since we would be able to directly hit the ZLibStream SetInput/GetOutput methods because we know the entirety of the item being compressed/decompressed. The downside to this is that the thing being (de)compressed would have to first be entirely in memory, but for a string or byte[] array that isn't an issue. There would be a net memory savings of an object already in memory since we wouldn't need to allocate the internal arrays of a DeflateStream object. # Downsides - Every compress/decompress opens its own ZLibStreamHandle. For a lot of repeated operations this would be a performance hit. - Adding fine-grained Compression support (e.g. CompressionLevel) would be too clunky to be worthwhile - Adds a potentially large amount of new API " +9240 area-System.Net Add note about Unix HTTP header handling to release notes "To add to release notes: ### HttpClient handler header parsing strictness on Linux and OS X HttpClient response header parsing logic on Linux and on OS X fairly strictly follows the RFC. Certain ""invalid"" headers, such as with spaces between the header name and the colon, might be accepted by other browsers or even by HttpClient on Windows, but could be rejected when run on Linux or on OS X. " +9244 area-System.Net [release/1.0.0] HttpClientHandler tests failed with SSL Connect error on Debian and OSX In both master and release, hence tagging this issue for RTM, pending investigation. ``` MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : SSL connect error +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__69.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` Test runs here http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/debian8.4_debug/1/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/debian8.4_release/1/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/osx_debug/78/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/debian8.4_release/24/testReport/ +9245 area-System.Data Cancelling an async SqlClient operation throws SqlException, not TaskCanceledException When using a cancellation token to cancel an SqlClient async operation, an SqlException is thrown rather than TaskCanceledException. This seems like problematic behavior, here's some analysis. On the problematic side, standard async APIs generally throw TaskCanceledException, and SqlClient is doing something different and therefore unexpected. Also, as a result, canceled SqlClient tasks don't have status Canceled, they're Faulted instead. This makes differentiating cancellations from real exceptions more difficult, and the problem is compounded if the SqlClient call is just part of a larger async operation (which again, will be faulted instead of canceled unless some manual specific handling is involved). The argument for the current behavior seems to be that all of SqlClient's server and network errors are raised as SqlException, making it easy to catch all database errors under a single exception type. On the other hand, it seems that cancellation isn't really an error condition as it's been requested by the user and is expected to occur. The TaskCanceledException is simply a mechanism for conveying the cancellation up the stack. For the record, this was originally reported by @mikkeljohnsen for Npgsql in https://github.com/npgsql/npgsql/issues/1146. Whatever is decided here for SqlClient will also be adopted for Npgsql (which currently behaves like SqlClient in this respect). +9248 area-System.Security X509Certificates.Tests.X509FilesystemTests.X509Store_AddAfterDispose This appears to be a test issue. Please investigate and confirm. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/fedora23_release/lastCompletedBuild/testReport/System.Security.Cryptography.X509Certificates.Tests/X509FilesystemTests/X509Store_AddAfterDispose/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/fedora23_debug/lastCompletedBuild/testReport/System.Security.Cryptography.X509Certificates.Tests/X509FilesystemTests/X509Store_AddAfterDispose/ ``` MESSAGE: System.Security.Cryptography.CryptographicException : The owner of '/mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/fedora23_release/tempHome/.dotnet/corefx/cryptography/x509stores/teststorea5d8b5c4bda94ae2bdb99f5cc6afdcdd' is not the current user. +++++++++++++++++++ STACK TRACE: at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.EnsureDirectoryPermissions(String path, UInt32 userId) at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.Add(ICertificatePal certPal) at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.<>c.b__7_0(X509Store store, String storeDirectory) at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.RunX509StoreTest(Action`2 testAction) ``` ``` MESSAGE: System.Security.Cryptography.CryptographicException : The owner of '/mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/fedora23_debug/tempHome/.dotnet/corefx/cryptography/x509stores/teststore99ac8254ea77466ebf1bf59151bb561d' is not the current user. +++++++++++++++++++ STACK TRACE: at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.EnsureDirectoryPermissions(String path, UInt32 userId) at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.Add(ICertificatePal certPal) at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.<>c.b__7_0(X509Store store, String storeDirectory) at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.RunX509StoreTest(Action`2 testAction) at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.X509Store_AddAfterDispose() ``` +9249 area-Infrastructure VSO build should fail if package upload also fails "Currently all the new build pipeline results are ""green"" even though all builds have failed to publish since MyGet.org is returning HTTP 500. The pipeline should actually catch this and not report success. " +9252 area-System.Security [dev/cms_unix] EnvelopedCms Decode different behavior between Framework and Core Decode on Framework returns a CryptographicAttributeObjectCollection for unprotected attributes that has a CryptographicAttributeObject for every Oid listed in the encoding, even if it holds no attributes (if it's given an empty set for that oid). However Core won't create an object for the oid if the set is empty. Thus EnvelopedCms.UnprotectedAttributes.Count will return different things on framework and core. +9253 area-System.Globalization InvalidOperationException: Unknown error '3' from string.Normalize CentOS 7 https://github.com/aspnet/Home/issues/1536 ``` Unhandled Exception: System.InvalidOperationException: Unknown error '3'. at System.StringNormalizationExtensions.IsNormalized(String value, NormalizationForm normalizationForm) at Microsoft.AspNetCore.Server.Kestrel.Http.PathNormalizer.NormalizeToNFC(String path) ``` Windows Docker: ``` System.InvalidOperationException: Unknown error '3'. at System.StringNormalizationExtensions.Normalize(String value, NormalizationForm normalizationForm) at Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer.Normalize(String key) ``` +9257 area-Meta Instructions to run perf tests need to be updated The instructions provided to run perf tests here https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md need to be modified now that we have enabled execution of perf tests using dotnet cli. We also need to remove dependencies mentioned there that are no longer applicable. +9258 area-System.Net Initial System.Net.WebSockets.Client implementation on Unix This PR provides an initial implementation of the client WebSockets library for Unix. It's actually not Unix-specific, and rather is a managed implementation on top of System.Net.Sockets and System.Net.Security. I opted to start with a managed implementation as there does not appear to be a universally-adopted native implementation we can utilize. I looked to see if we could just adopt the Mono implementation, but it's based on HttpWebRequest, which in corefx is built on top of HttpClient, which isn't particularly amenable to being used for websockets (and libcurl does not have websockets support). This is passing all of the unit/functional tests, including a few more I added, though I'm fairly confident that there are additional bugs lurking (i.e. I assume there's going to be a bug tail here). I'm opting to check this in as an initial implementation now in hopes that others will be able to help with finding and fixing issues. Along with that, I've spent close to zero time looking at performance; I'm sure there are opportunities to make meaningful improvements, but for now I've opted for simplicity and functionality. There are also two features I didn't implement: proxies and credentials... but it doesn't look like either the WinHttp or WinRT implementations pay attention to those either. cc: @ericeil, @cipop, @davidsh, @bartonjs Fix https://github.com/dotnet/corefx/issues/2486 +9260 area-System.Net Update PlatformNotSupportedException message for Socket.Connect on Unix Just the exception message improvement from https://github.com/dotnet/corefx/pull/9218. +9261 area-System.Net Port to release/1.0.0: Update PlatformNotSupportedException message for Socket.Connect on Unix Port https://github.com/dotnet/corefx/pull/9260 to release/1.0.0 +9265 area-System.IO AccessViolationException in zlib on CLI Windows build ## Repro steps: - step 1: get a CLI repo - step 1.a: add a remote for github.com/dotnet/cli - step 2: git checkout -b preview2 upstream/rel/1.0.0-preview2 - In case the cli repo moves forward, and somehow that causes the AV to no longer occur: use this sha1: 3c9f8dd99be5918a504f34260f4d6016a086ea99 - step 3: build.cmd -Targets Prepare,Compile - that should succeed - step 4: build.cmd -Targets Prepare,InitPackage,GenerateVersionBadge,GenerateZip,GenerateMsis,GenerateNugetPackages - that will hit the AV ## Notes I’ve uploaded a mini dump with heap: `\\scratch2\scratch\eerhardt\dotnet.dmp` I was able to find clrcompression symbols on the MyGet symbol server: https://dotnet.myget.org/F/dotnet-core/symbols/ Unfortunately, talking with @dagood we are not able to locate the coreclr.pdb file matching the build from yesterday’s CoreCLR build: 1.0.24207.2. I still have the process broken on my machine with an attached debugger, here is the callstack: ``` > clrcompression.dll!fizzle_matches(internal_state * s, match * current, match * next) Line 121 C clrcompression.dll!deflate_medium(internal_state * s, int flush) Line 265 C clrcompression.dll!deflate(z_stream_s * strm, int flush) Line 982 C 00007ff7c22e8403() Unknown 0000020f85a48610() Unknown 00000016a837cb40() Unknown 0000020f876fd5b8() Unknown 0000020f876ff710() Unknown 0000be2449de0620() Unknown coreclr.dll!00007ff8220276b0() Unknown ``` line 121 is: ``` C static void fizzle_matches(deflate_state *s, struct match *current, struct match *next) { IPos limit; unsigned char *match, *orig; int changed = 0; struct match c,n; /* step zero: sanity checks */ if (current->match_length <= 1) return; match = s->window - current->match_length + 1 + next->match_start ; orig = s->window - current->match_length + 1 + next->strstart ; /* quick exit check.. if this fails then don't bother with anything else */ if (zlikely(*match != *orig)) <<<<< HERE return; ``` /cc @ianhays @stephentoub @Petermarcu +9268 area-System.Data Query: options for connecting to Oracle databases Hi I am considering using the cross platform dot net framework for building a major new application. But I have hit an issue - I am unsure whether the current corefx supports connecting to Oracle databases or not. I need to be able to support multiple database backends, including Oracle and SQL Server. Thanks +9270 area-System.Net [Release/1.0.0]HttpClientHandlerTest.PostAsync_CallMethod_StreamContent failed on fedora debug This test is failing intermittently between builds, filing it under RTM for investigation. ``` MESSAGE: System.Threading.Tasks.TaskCanceledException : A task was canceled. +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__55.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/fedora23_debug/3/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/fedora23_debug/5/ +9272 area-System.Net [Release/1.0.0]System.Net.Security.Tests failing on Opensuse "``` 15:50:21 Copyright (C) 2014 Outercurve Foundation. 15:50:21 15:50:21 Discovering: System.Net.Security.Unit.Tests 15:50:21 Discovered: System.Net.Security.Unit.Tests 15:50:21 Starting: System.Net.Security.Unit.Tests 15:50:22 Finished: System.Net.Security.Tests 15:50:22 15:50:22 === TEST EXECUTION SUMMARY === 15:50:22 System.Net.Security.Tests Total: 97, Errors: 0, Failed: 0, Skipped: 3, Time: 3.204s 15:50:22 Finished running tests. End time=22:51:38. Return value was 0 15:50:22 /mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/opensuse13.2_debug/Tools/tests.targets(202,5): warning MSB3073: The command ""/mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/opensuse13.2_debug/bin/tests/Linux.AnyCPU.Debug/System.Net.Security.Tests/netcoreapp1.0/RunTests.sh /mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/opensuse13.2_debug/packages/"" exited with code -1. [/mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/opensuse13.2_debug/src/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj] 15:50:22 /mnt/resource/j/workspace/dotnet_corefx/release_1.0.0/opensuse13.2_debug/Tools/tests.targets(211,5): error : One or more tests failed while running tests from 'System.Net.Security.Tests' please check log for details! ``` " +9274 area-System.Runtime "OS X is now branded as ""macOS""" "**Update (6/13):** Apple has officially announced that ""OS X"" is now ""macOS"". --- It appears highly likely that ""OS X"" will be rebranded as ""macOS"" next week at WWDC. - http://9to5mac.com/2016/06/08/latest-hint-at-macos-rebranding-of-os-x-appears-in-new-app-store-guidelines/ - https://daringfireball.net/linked/2016/03/30/macos Is it too late to tweak the naming of new .NET Core APIs with `OSX`, or will the first version of .NET Core RTM with obsolete naming? e.g. [`RuntimeInformation.IsOSPlatform(OSPlatform.OSX)`](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Runtime.InteropServices.RuntimeInformation/src/System/Runtime/InteropServices/RuntimeInformation/OSPlatform.cs#L13) -> `OSPlatform.Mac` or `OSPlatform.MacOS` or `OSPlatform.Darwin` or ? " +9276 area-System.Net Race condition in HttpClient on Unix when redirecting a post request https://github.com/aspnet/MusicStore/pull/683 +9278 area-Infrastructure We should archive msbuild.* even on failed CI jobs Today we only archive msbuild log files if the job completes successfully, but the logs have value in cases where the job fails as well. +9282 area-System.Net Change how request content is read in libcurl libcurl wants to be able to call back to CurlHandler at arbitrary times to ask it to seek in the request content stream. This can happen for redirects, for auth challenges, etc. Handling this has been a challenge due to the way HttpContent is designed. HttpContent provides two modes for accessing the data via Streams: - Push: You call CopyToAsync(Stream, TransportContext) to have the data from the HttpContent copied into the target stream. - Pull: You call ReadAsStreamAsync to get a stream that represents the data in the HttpContent, and you can read from that. The pull model is ideal for libcurl. It allows us to get a stream which we can jump around in if it's seekable, and we can request a new stream if it's not seekable. The push model is challenging, as we're forced to put in plcae an intermediary, a push-pull adapter that let's us effectively read from a type that's trying to write to us. There is however an issue with the pull model. With the push model, StreamContent's CopyToAsync tracks whether the stream has already been accessed, and if it has and if it's non-seekable, trying to call CopyToAsync again throws to alert you that rewinding simply isn't possible. The pull StreamContent's ReadAsStreamAsync, however, does not. This means that if you get a non-seekable stream and you call ReadAsStreamAsync again, you get back the same stream (or, rather, a read-only wrapper around the same stream) that is at the existing position rather than the original position. Then resending that content will end up sending less data than it should have, resulting in failure, just not abruptly. That issue caused us to go down the path of the more challenging push model and trying to use CopyToAsync. However, recently that's been shown to have even worse effects. We don't have the ability to cancel CopyToAsync, which means that if the first copy is still in-flight when we try to seek, we have no choice but to fail, even if the stream is actually seekable, as most are (e.g. memory streams, file streams, etc.) This can happen deterministically in cases where libcurl decides to redirect before it's fully sent the request content, but it's also prone to race conditions even for cases where the request content is fully sent but the copy hasn't been officially marked as complete by the time libcurl tries to redirect. ASP.NET recently began hitting this frequently on some machines in their lab runs. While there's no perfect solution, the best solution is to go with the one that's the simplest code, the fastest code, and the deterministic outcome: the pull model. This commit deletes a whole bunch of code that was there in support of the push model, adds just a bit of code to enable the pull model, and fixes up a couple of tests that were written to expect the push model. Fixes https://github.com/dotnet/corefx/issues/9276 cc: @davidsh, @cipop, @ericeil, @bartonjs, @mconnew, @JunTaoLuo @mconnew, is this going to cause any issues for WCF? @JunTaoLuo, can you help verify that this makes the MusicStore issue go away and that it doesn't introduce any other such issues? @davidsh, I know this isn't the model that was intended for an HttpClientHandler consuming HttpContent, but I don't see any way to do so correctly/without race conditions given the APIs available. +9293 area-Infrastructure Fedora /mnt/resource is an NTFS mount, making permissions checks fail ``` $ mount | grep resource /dev/sdb1 on /mnt/resource type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) ``` fuseblk is NTFS, which doesn't support Unix mode-based permissions; and leads to things like the X509Store permissions set/checks failing. +9294 area-System.Runtime Allow setting the stack trace on deserialized exception object ## Proposal Provide a setter property for SourceExceptionStackTrace in ExceptionDispatchInfo class ```C# namespace System.Runtime.ExceptionServices { public sealed class ExceptionDispatchInfo { public string SourceExceptionStackTrace { get; set; } } } ``` ## Details Exception serialization scenario is challenging as there is no easy way can deserialize an exception object and include the stack trace in the de-serialized object. The reason is Exception lack supporting a StackTrace setter property or providing a constructor that can take stack trace as a paramter. The net core supports binary serialization which can serialize and de-serialize the exception objects including the stack trace but this approach is not helping much for the following reasons: - Net core is not promising supporting binary serialization across different net core versions (or with other targets like full framework). - Other serialization engines (e.g. DateContractSerialization) will not benefit from the binary serialization and need to have a way to fully deserialize exception objects. - When binary deserialize exception object which include a stack trace and then throw this de-serialized object, the stack trace after throwing is the one reflect the place where we threw this exception but the original de-serialized stack trace will be lost. The original stack trace will be preserved only in case re-throw previously thrown exception. The following code demonstrate this issue ```C# try { throw new Exception(); } catch (Exception e) { using (MemoryStream ms = new MemoryStream(100)) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, e); // reset the stream ms.Position = 0; var excp = (Exception)formatter.Deserialize(ms); Console.WriteLine(excp.StackTrace); // this will show the right original serialized stack try { throw excp; } catch (Exception excp1) { Console.WriteLine(excp1.StackTrace); } // this will show the new stack but the old de-serialized stack will be lost. throw; // the thrown exception will include the original exception stack in “e” object } } ``` To support the scenario, we need to add SourceExceptionStackTrace property to ExceptionDispatchInfo class. The following code demonstrate how ExceptionDispatchInfo can be used to get the exception with the original serialized stack trace and also how to throw the exception with the new stack trace. ```C# ExceptionDispatchInfo edi = ExceptionDispatchInfo.Capture(deserializedException); edi.SourceExceptionStackTrace = originalStackTrace; Exception deserializedExceptionWithOriginalStackTrace = edi.SourceException; edi.Throw(); ``` ## Behavior ExceptionDispatchInfo.SourceExceptionStackTrace The setter of this property will overwrite the current source trace on the source exception. the setter will not affect any other properties in the source exception object. The getter will return the stack trace from the source exception. this can be empty string if there is no stack trace in the source #exception ## Alternative Design We can think in adding a setter for Exception.StackTrace property or expose a method like Exception AddPreservedStack(string stackTrace)) ```C# namespace System { public class Exception : ISerializable, _Exception { public virtual String StackTrace { get; set; } } } ``` I got some feedback from different people that they don't like this option as in the main scenarios nobody should set the stack trace on the exception objects and this option can cause confusion and people misuse it. +9296 area-System.Net Test failure: WebSockets.Client.Tests.SendReceiveTest.SendReceive_PartialMessage_Success (server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_windows_nt_debug/lastCompletedBuild/testReport/System.Net.WebSockets.Client.Tests/ClientWebSocketTest/SendReceive_PartialMessage_Success_server__wss___corefx_net_cloudapp_net_WebSocket_EchoWebSocket_ashx_/ ``` MESSAGE: System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.WinHttpWebSocket.d__30.MoveNext() in d:\j\workspace\outerloop_win---b9d0e81a\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinHttpWebSocket.cs:line 458 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__16.MoveNext() in d:\j\workspace\outerloop_win---b9d0e81a\src\System.Net.WebSockets.Client\tests\ClientWebSocketTest.cs:line 195 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9304 area-System.Net "UDP Socket.ConnectAsync(IPAddress, int) fails with ""An invalid argument was supplied""" "Related to https://github.com/dotnet/corefx/issues/4968... This code works fine on desktop: ``` C# var c = new UdpClient(); c.Client.EndConnect(c.Client.BeginConnect(IPAddress.Parse(""114.114.114.114""), 53, null, null)); ``` but this fails in corefx: ``` [Fact] public async Task ConnectAsync_IPAddress_Success() { using (var c = new UdpClient()) { await c.Client.ConnectAsync(IPAddress.Parse(""114.114.114.114""), 53); } } ``` with the error: ``` System.Net.Sockets.Tests.UdpClientTest.ConnectAsync_IPAddress_Success [FAIL] System.Net.Sockets.SocketException : An invalid argument was supplied Stack Trace: c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(5774,0): at System.Net.Sockets.Socket.BeginConnectEx(EndP oint remoteEP, Boolean flowContext, AsyncCallback callback, Object state) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(2296,0): at System.Net.Sockets.Socket.BeginConnect(EndPoi nt remoteEP, AsyncCallback callback, Object state) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(2411,0): at System.Net.Sockets.Socket.BeginConnect(IPAddr ess address, Int32 port, AsyncCallback requestCallback, Object state) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.cs(43,0): at System.Net.Sockets.SocketTaskExte nsions.<>c.b__3_0(IPAddress targetAddress, Int32 targetPort, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.cs(42,0): at System.Net.Sockets.SocketTaskExte nsions.ConnectAsync(Socket socket, IPAddress address, Int32 port) c:\Users\stoub\Source\repos\corefx\src\System.Net.Sockets\tests\FunctionalTests\UdpClientTest.cs(93,0): at System.Net.Sockets.Tests.UdpClientTest.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` " +9320 area-System.Net Expected !isStopped assert in sockets on Fedora http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug_prtest/1/consoleText ``` Expected !IsStopped at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition, String message) at System.Net.Sockets.SocketAsyncContext.OperationQueue`1.Enqueue(TOperation operation) at System.Net.Sockets.SocketAsyncContext.TryBeginOperation[TOperation](OperationQueue`1& queue, TOperation operation, SocketEvents events, Boolean maintainOrder, Boolean& isStopped) at System.Net.Sockets.SocketAsyncContext.ReceiveFromAsync(Byte[] buffer, Int32 offset, Int32 count, SocketFlags flags, Byte[] socketAddress, Int32 socketAddressLen, Action`5 callback) at System.Net.Sockets.SocketAsyncContext.ReceiveAsync(Byte[] buffer, Int32 offset, Int32 count, SocketFlags flags, Action`5 callback) at System.Net.Sockets.SocketPal.ReceiveAsync(SafeCloseSocket handle, Byte[] buffer, Int32 offset, Int32 count, SocketFlags socketFlags, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.DoBeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, SocketError& errorCode, AsyncCallback callback, Object state) at System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state) at System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state) at System.Net.Sockets.NetworkStream.<>c.b__58_0(Byte[] bufferArg, Int32 offsetArg, Int32 sizeArg, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2,TArg3,TResult](Func`6 beginMethod, Func`2 endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state) at System.Net.Sockets.NetworkStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 size, CancellationToken cancellationToken) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.StreamApmExtensions.BeginRead(Stream stream, Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state) at System.Net.FixedSizeReader.StartReading() at System.Net.FixedSizeReader.AsyncReadPacket(AsyncProtocolRequest request) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.WriteCallback(IAsyncResult transportResult) at System.Threading.Tasks.TaskToApm.<>c__DisplayClass3_0.b__0() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(ContextCallback callback, Object state, Task& currentTask) at System.Threading.Tasks.Task.FinishContinuations() at System.Threading.Tasks.Task`1.TrySetResult(TResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Net.ContextAwareResult.CompleteCallback() at System.Net.ContextAwareResult.<>c.b__17_0(Object s) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.ContextAwareResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.LazyAsyncResult.InvokeCallback(Object result) at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32 numBytes, SocketError errorCode) at System.Net.Sockets.OverlappedAsyncResult.CompletionCallback(Int32 numBytes, Byte[] socketAddress, Int32 socketAddressSize, SocketFlags receivedFlags, SocketError errorCode) at System.Net.Sockets.SocketAsyncContext.<>c.b__46_0(Object args) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.QueueUserWorkItemCallbackDefaultContext.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() ``` +9324 area-System.Net Fix hanging System.Net.Http test We've been plagued for the last few weeks by CI jobs on Windows that hang in System.Net.Http.Functional.Tests, causing the whole job to fail after it eventually times out after two hours. I managed to find a CI server that had a process still alive after having experienced the hang and was able to debug it. The Dispose_DisposingHandlerCancelsActiveOperationsWithoutResponses test is creating three loopback servers and using HttpClient.GetAsync to access each of them. It's then Disposing of the HttpClient to verify that requests which should have been canceled are canceled. The problem is that there's a race condition. We may end up canceling one of the requests before it even gets a chance to connect to the server. As a result, the server remains stuck in an asynchronous accept on it socket, and at the end of the test, we're waiting for all of the servers to shutdown... deadlock. The fix is simple: don't wait for the servers... we don't care about their results, and they'll all be torn down when we exit the inner delegate. Fixes #8926 cc: @davidsh, @ericeil +9325 area-System.Reflection The NetNative implementation of System.Reflection.TypeExtensions does not properly handle generic method overriding. "Consider this class: ``` public abstract class Base { public abstract TResult Foo(Func f); } public sealed class Derived { public override TResult Foo Func f) { return null; } } ``` Calling typeof(Derived).GetMethods() on this is expected to return only Derived.Foo. However, on .NET Native, it returns Base.Foo as well. The bug is in the helper method: AreNamesAndSignaturesEqual(MethodInfo method1, MethodInfo method2) https://github.com/AtsushiKan/corefx/blob/master/src/System.Reflection.TypeExtensions/src/Internal/Reflection/Extensions/NonPortable/MemberPolicies.cs#L63 This method detects overrides by comparing the method name and parameter types. The simple comparison of parameter types is insufficent to detect the override here because the TResult of Base.Foo is considered to be a different type from the TResult of Derived.Foo. We need to do something different here. Probably we'll have to manually compare the types using recursion and define the comparison of generic method parameters as ""compare the position only."" " +9327 area-System.Runtime Fill out AppDomain There are several buckets here, which likely should be broken out. We know .UnhandledException, .CurrentDomain, .GetAssemblies, .GetCurrentThreadId are heavily used in Xamarin/Unity and should be straightforward to add. DefineDynamicAssembly is in the next bucket. True AppDomain support would be a larger challenge. We may distinguish design time support (eg for Unity IDE) vs. bulletproof runtime level support. +9329 area-System.Runtime Fill out GC class Below is what's in Xamarin Android but not in Core. If these are all still in the implementation, we should expose them. ``` public static class GC { public static void CancelFullGCNotification(); public static int GetGeneration(WeakReference wo); public static void RegisterForFullGCNotification(int maxGenerationThreshold, int largeObjectHeapThreshold); public static GCNotificationStatus WaitForFullGCApproach(); public static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout); public static GCNotificationStatus WaitForFullGCComplete(); public static GCNotificationStatus WaitForFullGCComplete(int millisecondsTimeout); } public enum GCNotificationStatus { Canceled = 2, Failed = 1, NotApplicable = 4, Succeeded = 0, Timeout = 3, } ``` +9331 area-Serialization Refactor Exception Messages New Added in ReflectionBasedDCS Branch +9333 area-Serialization Fixes for Reflection Based DCS in NetNative This PR include several bug fixes for reflection based DCS in Net Native. Each commit addressed one issue. @roncain @mconnew @zhenlan Can you please help review the PR? Before reviewing this, it might be worth to take a look at three PRs that enabled reflection based DCS in Net Native: https://github.com/dotnet/corefx/pull/8629 https://github.com/dotnet/corefx/pull/8704 https://github.com/dotnet/corefx/pull/8887 Please feel free to comment on parts that had been checked in. +9337 area-System.Net [release/1.0.0] Many networking tests fail with ---- System.ComponentModel.Win32Exception : Unable to load DLL 'System.Net.Security.Native': The specified module could not be found. One example failure: ``` Starting KDC.. System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success [FAIL] System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- System.ComponentModel.Win32Exception : Unable to load DLL 'System.Net.Security.Native': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.Net.Security.NegoState.ValidateCreateContext(String package, Boolean isServer, NetworkCredential credential, String servicePrincipalName, ChannelBinding channelBinding, ProtectionLevel protectionLevel, TokenImpersonationLevel impersonationLevel) at System.Net.Security.NegotiateStream.BeginAuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.NegotiateStream.BeginAuthenticateAsClient(NetworkCredential credential, String targetName, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state) at System.Net.Security.NegotiateStream.AuthenticateAsClientAsync(NetworkCredential credential, String targetName) at System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success() ----- Inner Stack Trace ----- at System.Net.Security.NegotiateStreamPal.AcquireCredentialsHandle(String package, Boolean isServer, NetworkCredential credential) at System.Net.NTAuthentication.Initialize(Boolean isServer, String package, NetworkCredential credential, String spn, ContextFlagsPal requestedContextFlags, ChannelBinding channelBinding) at System.Net.NTAuthentication..ctor(Boolean isServer, String package, NetworkCredential credential, String spn, ContextFlagsPal requestedContextFlags, ChannelBinding channelBinding) at System.Net.Security.NegoState.ValidateCreateContext(String package, Boolean isServer, NetworkCredential credential, String servicePrincipalName, ChannelBinding channelBinding, ProtectionLevel protectionLevel, TokenImpersonationLevel impersonationLevel) ``` +9342 area-Serialization Speed up JsonWriterDelegator.WriteDateTimeInDefaultFormat. "While investigating https://github.com/dotnet/coreclr/issues/5558 it was noted that JsonWriterDelegator.WriteDateTimeInDefaultFormat can be sped up considerably for some cases. @mconnew had the following comments: Looking at that code, my guess would be fetching the timezone info from Linux is the expensive operation. This can be easily avoided in the first if-block and this code sped up considerably. This is purely to check an edge case where the regular code won’t catch it and is unlikely to happen but is there for correctness. We can do a cheaper pre-check to reduce the chance of hitting this code. The result from TimeZoneInfo.Local.GetUtcOffset(value) is bounded to +/- 24 hours so we can have some constants which allow us to check if (DateTime.MinValue + 24 hours) < value < (DateTime.MaxValue – 24 hours). If this is true, then we don’t need to do the more expensive check. If it’s false, then we do the full more expensive check. It could be something like this: ``` if (value.Kind != DateTimeKind.Utc) { // lowBound and highBound should be cached statics DateTime lowBound = DateTime.MinValue.AddDays(1.0); DateTime highBound = DateTime.MaxValue.AddDays(-1.0); if(lowBound.CompareTo(value)>0 || highBound.CompareTo(value)<0) { long tickCount = value.Ticks - TimeZoneInfo.Local.GetUtcOffset(value).Ticks; if ((tickCount > DateTime.MaxValue.Ticks) || (tickCount < DateTime.MinValue.Ticks)) { throw XmlObjectSerializer.CreateSerializationException(SR.JsonDateTimeOutOfRange, new ArgumentOutOfRangeException(nameof(value))); } } } ``` In the Local/Unspecified switch block, the code can be rewritten like this: ``` // +""zzzz""; //TimeSpan ts = TimeZone.CurrentTimeZone.GetUtcOffset(value.ToLocalTime()); TimeSpan ts = TimeZoneInfo.Local.GetUtcOffset(value.ToLocalTime()); writer.WriteString(string.Format(CultureInfo.InvariantCulture, ""{0:+00;-00}{1:00;00}"", ts.Hours, ts.Minutes)); break; ``` This results in only one call to writer.WriteString and removes some string concatenations and a bunch of comparisons. " +9343 area-System.Net Use stackalloc for UrlEncode in WebUtility This contains basically the same changes as #8535, except without the branching-related stuff. I've refactored `WebUtility.UrlEncode` to use `stackalloc` instead of allocating on the heap under a certain threshold (<= 1024 bytes). I also did a bit of refactoring/made sure to comment a lot of the added code for clarity. ### Perf impact The changes made here seem to make the method 2x faster for inputs that meet the `stackalloc` criteria. (Disclaimer: I tested against the RC2 packages, as opposed to a build of the master branch of the repo.) - [Test code](https://gist.github.com/jamesqo/a002901c2925967d21052a0945ed54ba) - [Old results](https://gist.github.com/jamesqo/9a95188d52609d778a7deeab9897772e) - [New results](https://gist.github.com/jamesqo/79331f536eefd66cd8bd7361aa7247d4) cc @davidsh, @ellismg, @hughbe, @stephentoub +9347 area-System.Reflection Stress: Investigate re-adding Reflection.Emit tests to runs The Reflection.Emit tests are causing daily dumps to be generated because of their high heap allocations causing OutOfMemoryExceptions everywhere. Turn them off with `[Trait(“Stress”, “Excluded”)]`. +9350 area-System.Net System.Net.Ping ignores PingOptions on unix [Relevant code](https://github.com/dotnet/corefx/blob/master/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs#L59) Ignoring DontFragment or TTL produces different behaviour between linux and windows builds when implementing a simple ICMP trace. Is this the intended/by-design behaviour? Wouldn't a NotImplementedException if PingOptions are given/non default be a nicer signal to the developer? +9353 area-System.Net Come up with a plan for the NegotiateStream tests on Linux The tests have both prerequisites and modify machine state during execution. It would be great if we could eliminate the machine state modifications. +9357 area-System.Net System.Net.Http.CurlException HttpClient PostAsync "### **Environment** > DISTRIB_ID=Ubuntu > DISTRIB_RELEASE=16.04 > DISTRIB_CODENAME=xenial > DISTRIB_DESCRIPTION=""Ubuntu 16.04 LTS"" ### **Curl version** > curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3 > Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp > Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets ### **Code** ``` C# var client = new HttpClient() { BaseAddress = new Uri(""http://example.com/"") }; var formContent = new FormUrlEncodedContent(new[] { new KeyValuePair(""key"", ""val"") }); var response = await client.PostAsync(""/some.php"", formContent, CancellationToken.None); ``` ### **Target** > dotnet 1.0.0-preview1-002702 > ""System.Net.Http"": ""4.0.1-rc2-24027"" ### **Exception** > Unhandled Exception: System.AggregateException: One or more errors occurred. (An error occurred while sending the request.) ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: _**Failure when receiving data from the peer**_ > at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) > at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(EasyRequest completedOperation, CURLcode messageResult) ### **Run Curl directly is working** `curl -c cookies.txt -b cookies.txt -X POST --form ""key=val"" http://example.com/some.php -L ` ~~Can't get it working with dotnet, everything else just fine, except when I post **FormUrlEncodedContent**. I tried different setup with HttpClientHandler, same exception.~~ #### **Update!** Running with **1.0.0-preview2-003119** works fine. " +9369 area-System.Security Add static hash helper methods "Computing a hash code currently requires this code: ``` byte[] hashBytes; using (var hashAlgo = SHA256.Create()) hashBytes = hashAlgo.ComputeHash(bytes); ``` Or the more awkward `HashAlgorithm.Create(""SHA256"")`. This code is alright. It's not the end of the world. But I think it should be slimmer than that: ``` var hashBytes = SHA256.ComputeHash(bytes); ``` Benefits: 1. This is more terse. 2. It's an expression as opposed to a statement. That makes it more composable. It can be a subexpression for example in a LINQ query. 3. No way to forget resource cleanup or mess up code quality otherwise. 4. `SHA256.ComputeHash` can look at it's input size and dynamically pick the fastest implementation. I found the following to be optimal through testing on Windows x64: `estimatedDataLength <= 512 ? new SHA1Managed() : HashAlgorithm.Create(""SHA1"")`. Apparently, using the Windows crypto API has quite some per-hash cost. I request that static helper method be added to the framework. This seems like an attractive case for a community contribution. " +9370 area-System.Net MultipartContent should override CreateContentReadStreamAsync "This program: ``` C# using System; using System.Net.Http; class Program { static void Main() { var form = new MultipartFormDataContent(); var bytes = new byte[1024 * 1024]; for (int i = 0; i < 2048; i++) { form.Add(new ByteArrayContent(bytes), ""file"", Guid.NewGuid().ToString()); } form.ReadAsStreamAsync().GetAwaiter().GetResult(); } } ``` throws an exception: ``` System.Net.Http.HttpRequestException: Cannot write more bytes to the buffer than the configured maximum buffer size: 2147483647 ``` This is because MultipartContent doesn't override CreateContentReadStreamAsync, which means it's trying to serialize all of the parts to a MemoryStream which it can then return. It should instead return a custom stream that reads from each part in turn, just as its override of SerializeToStreamAsync doesn't try to store the whole thing into a byte[]/MemoryStream which it could write out but rather writes out each part individually. " +9371 area-System.Net Remove some allocations from unix WebSocket client Some low-hanging fruit. (I have another change that gets rid of many more allocations coming from the networking stack, but I'm seeing an odd behavior I wasn't expecting and am following up on that before submitting it.) - Change how we read message headers. Rather than using a `Task ReadMessageHeaderAsync` method, we now separate the buffering and the reading of the header, saving several allocations. - Removing the WithAbortAsync method. I'd initially added this when it wasn't clear to me that any operation getting canceled is meant to trigger the whole websocket getting aborted. Since that is the behavior, this method is no longer needed and we can do something much simpler, resulting in many fewer allocations per operation. This change modifies indentation in several places, so it's most easily reviewed ignoring whitespace changes: https://github.com/dotnet/corefx/pull/9371/files?w=1 cc: @ericeil, @bartonjs, @davidsh, @cipop +9376 area-System.Diagnostics System.Diagnostics.PerformanceCounter is missing in .Net Core missing Performance counter in .Net Core +9377 area-System.Net Override HttpContent.CreateContentReadStreamAsync in MultipartContent MultipartContent doesn't override CreateContentReadStreamAsync. This means that a ReadAsStreamAsync operation will end up serializing all of the content to a MemoryStream, which can be problematic for very large content, preventing such content from being uploaded with some HttpClientHandlers. This change overrides CreateContentReadStreamAsync to use a custom stream that delegates to all of the inner streams from each content. Fixes https://github.com/dotnet/corefx/issues/9370 cc: @davidsh, @cipop, @ericeil +9379 area-System.Runtime Improve test coverage for Comparer/EqualityComparer of enums The runtime has special logic to create Comparer/EqualityComparer of enums, but we do not seem to have any tests to exercise these special paths. +9383 area-Infrastructure Hello. Is it possible to install CoreFX to a custom folder? Is it possible to install CoreFX to a custom folder after the building from sources? Command to build: `./build.sh x64 debug` But in this case CoreFX installs to a current folder. What command I must enter to onfigure sources and instal to a custom folder? PS: OS Ubuntu 16.04 LTS. Problem with building are missing. +9384 area-System.Net Avoid send/receive delegate allocations with SocketAsyncEventArgs on Unix Every send/receive operation on a Socket on Unix when using SocketAsyncEventArgs is allocating a new delegate. Since the whole point of SocketAsyncEventArgs is to cache state and ammortize the costs of things across multiple operations, it's better to create the delegate once and reuse it for all operations. cc: @ericeil +9394 area-System.Security [macOS] Move standard cryptographic operations from OpenSSL to Apple's libraries "Today when you install openssl via brew, it may print a message saying ""Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries"". We should add to the release notes that this is expected and lay out our plan on moving off OpenSLL and onto Apple stuff (maybe it happens for 1.1?, I think right know it's in the ""we will do this in the future"" bucket, but it would be good for us to start thinking about what the actual timeline is). **Edit:** Since this issue is already known to people as the tracking item for the move, it has been repurposed from ""make a roadmap"" to ""go, baby, go!"". " +9395 area-System.Net Fix build break cc: @wtgodbe +9397 area-Serialization DCS Deserialization Failure with PreserveObjectReferences Set to true "DCS failed during deserialization when PreserveObjectReferences is set to true. See below for an example of the error message: ``` DataContractSerializerTests.DCS_CircularTypes_PreserveObjectReferences_True [FAIL] System.Runtime.Serialization.SerializationException : Deserialized object with reference id 'i3' not found in stream. Stack Trace: D:\OSS\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs(442,0): at System.Runtime.Serialization.XmlObjectSerializerReadContext.GetExistingObject(String id, Type type, String name, String ns) ... ``` Serializing and de-serializing the following root object would repro the issue. ``` csharp var root = new Root(); root.Children = new List { new Child { Root = root, Name = ""A"" }, new Child { Root = root, Name = ""B"" } }; [DataContract] public class Root { [DataMember] public List Children { get; set; } } [DataContract(IsReference = true)] public class Child { [DataMember] public Root Root { get; set; } [DataMember] public string Name { get; set; } } ``` " +9402 area-System.Security X509Certificates cannot be used in Mac? I can `dotnet build` my Asp.Net Core RC2 code in OS X, but `dotnet run` throw following exception (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle) at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password) at mycode.Startup.ConfigureServices(IServiceCollection services) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.AspNetCore.Hosting.Startup.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection exportServices) at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() +9407 area-System.Net ClientWebSocket_Abort_CloseOutputAsync failed in CI on Unix http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/2082/consoleText ``` System.Net.WebSockets.Client.Tests.ClientWebSocketTest.ClientWebSocket_Abort_CloseOutputAsync(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] System.InvalidOperationException : This operation is only allowed using a successfully authenticated context. Stack Trace: Using /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest@2/packages/ as folder for resolving package dependencies. Executing in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest@2/bin/tests/AnyOS.AnyCPU.Debug/System.Composition.Tests/netcoreapp1.0 Executing in unpack directory, do not have to copy files Hard linking dependent files... at System.Net.Security.SslState.CheckThrow(Boolean authSucessCheck) at System.Net.Security.SslState.get_SecureStream() at System.Net.Security.SslStream.EndWrite(IAsyncResult asyncResult) at System.Net.Security.SslStream.<>c.b__86_1(IAsyncResult iar) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.WebSocketHandle.ManagedClientWebSocket.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.WebSocketHandle.ManagedClientWebSocket.d__69.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.<>c.<b__37_0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__37.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9408 area-System.Net CloseAsync_CloseDescriptionIsMaxLengthPlusOne_ThrowsArgumentException periodically throwing wrong exception on Unix ``` System.Net.WebSockets.Client.Tests.ClientWebSocketTest.CloseAsync_CloseDescriptionIsMaxLengthPlusOne_ThrowsArgumentException(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] System.Net.WebSockets.WebSocketException : Unable to connect to the remote server ---- System.ObjectDisposedException : Cannot access a disposed object. Object name: 'System.Net.Sockets.TcpClient'. Stack Trace: at System.Net.WebSockets.WebSocketHandle.ManagedClientWebSocket.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.ClientWebSocket.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.WebSocketHelper.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Sockets.TcpClient.GetStream() at System.Net.WebSockets.WebSocketHandle.ManagedClientWebSocket.d__48.MoveNext() ``` +9409 area-System.Numerics QuaternionCreateFromYawPitchRollTest2 failed in CI on OSX http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_osx_release/72/consoleText ``` System.Numerics.Tests.QuaternionTests.QuaternionCreateFromYawPitchRollTest2 [FAIL] Yaw:-545 Pitch:155 Roll:365 Expected: True Actual: False ``` cc: @mellinoe, @RussKeldorph +9410 area-Infrastructure build.sh script hammering proxy When trying to build corefx via the build.sh script, at some point it fetches some data from https://dotnetmyget.blob.core.windows.net This is hammering our proxy with 5-10 requests per second, which in turn causes the proxy to rate-limit and stall/disconnect the client, which in turn leads to failures during the build stage: ``` darkstar@kubuntu:/usr/src/corefx$ ./build.sh managed x64 debug Setting up directories for build Installing dotnet cli... Restoring BuildTools version 1.0.25-prerelease-00512-01... Initializing BuildTools... ERROR: An error occured when trying to initialize the tools. Please check '/usr/src/corefx/init-tools.log' for more details. ./build.sh: line 107: /usr/src/corefx/Tools/corerun: No such file or directory tail: cannot open '/usr/src/corefx/msbuild.log' for reading: No such file or directory Build Exit Code = 127 darkstar@kubuntu:/usr/src/corefx$ ``` the problem is that there is no way of recovering from such a failed build as subsequent builds will fail quite early in the process: ``` darkstar@kubuntu:/usr/src/corefx$ ./build.sh managed x64 debug Setting up directories for build Tools are already initialized ./build.sh: line 107: /usr/src/corefx/Tools/corerun: No such file or directory tail: cannot open '/usr/src/corefx/msbuild.log' for reading: No such file or directory Build Exit Code = 127 darkstar@kubuntu:/usr/src/corefx$ ``` There should be an option for build.sh to not hammer the proxy with hundreds of parallel requests, or instead of requesting each and every file individually maybe something like a ZIP archive could be downloaded instead? another idea could be that the `build.sh` script checks which files are downloaded already and only downloads those that are missing/incomplete, instead of nothing (if re-running `build.sh` without cleaning) or everything (if running `clean.sh` before retrying `build.sh`) right now I'm unable to build corefx and coreclr because of this issue. Any ideas for workarounds will be appreciated :) +9412 area-System.Net More perf improvements for managed WebSocket client on Unix Primary changes: - NetworkStream's Read/WriteAsync simply uses the underlying Socket's Begin/EndReceive/Send methods, wrapped in tasks. While that could be optimized further, we have a more constrained scenario in WebSockets, in that we only support a single read at a time and a single write at a time. As a result, we can create, cache, and reuse a single SocketAsyncEventArgs instance for reading and another for writing, using the socket's Send/ReceiveAsync methods with that cached args instance. This avoids a bunch of per operation allocation. - Due to #4900 (and the behavior that was made to match on Unix), successful socket operations never complete synchronously. This means that code which awaits them typically ends up needing to yield, due to the callbacks being invoked asynchronously, even if the socket operation completed synchronously, which is very likely in the case of a send. Our SendFrameAsync method suffers from this, as it really just delegates to the socket's send method, albeit with a tiny amount of pre- and post-work. The real solution is to make it so that Socket.SendAsync can complete synchronously, after which SendFrameAsync will also typically complete synchronously and generally be allocation-free. Until then, though, since this is a hot path, we can optimize it for the common case to reduce the amount of allocation and general work involved when the socket operation does complete asynchronously. - For chatty cases where each send expects a receive, it's likely that each receive needs to read from the network. This means we end up going through several layers of async methods (ReceiveAsyncPrivate, EnsureBufferContainsHeaderAsync, EnsureBufferContainsAsync), which will all end up yielding and allocating when the read on the network doesn't complete synchronously. Since EnsureBufferContainsHeaderAsync is small and only used from one place, we can avoid all of the allocations associated with it by simply inlining it into its caller (ReceiveAsyncPrivate). Other miscellaneous: - Removed the base class from the internal ManagedWebSocket. It's unnecessary and leads to virtual methods on the instance. More importantly, though, we end up potentially handing out this instance via a Task's AsyncState, and we don't want folks to be able to cast to the base class and call methods without going through the thin ClientWebSocket wrapper. - A bunch of resources weren't being used. I deleted them. - WebSocketReceiveResult had non-readonly backing fields for each of its properties, which had private setters purely to be able to set the properties in the constructor. Now that we're using C# 6, we can simply make these get-only properties, eliminating the setters and allowing the compiler to make the backing fields readonly. - Used nameof in a few more places. Results: I ran a simple test with a local echo server, where I'd repeatedly send a message and receive its echo. As a baseline, with the Windows WinHTTP implementation sending and receiving 20,000 messages, I get the following. Each line is a run of the 20,000 messages, with the first number being the elapsed time and the second number being the number of gen 0 GCs. ``` > corerun WSPerf.exe 28745 20000 1 2.6906097, 5 2.7209642, 5 2.6802832, 5 2.7098154, 5 2.7061351, 6 2.6964876, 5 2.7943476, 5 2.7638309, 5 2.7918148, 5 2.744804, 6 ``` Instead using the managed implementation on Windows, before these changes, I got: ``` > corerun WSPerf.exe 28745 20000 1 3.1177403, 22 3.2149994, 22 2.6798198, 23 2.8078613, 23 2.6670316, 24 2.6744515, 23 2.6619906, 24 2.7596847, 23 2.6485313, 24 2.6559615, 23 ``` After these changes, using the managed implementation on Windows, I get: ``` > corerun WSPerf.exe 28745 20000 1 2.576682, 9 2.6461474, 9 2.5376302, 9 2.5192637, 9 2.5189807, 10 2.5227088, 9 2.5305238, 9 2.5696738, 9 2.5766855, 9 2.5433629, 9 ``` On Linux, I'm using a different local echo server, so the timing numbers aren't directly comparable to the ones on Windows, however before the changes I got: ``` $ ./corerun WSPerf.exe 7681 20000 1 1.6772411, 16 1.2316513, 11 1.1890394, 10 1.7308767, 19 1.1968002, 11 1.5696637, 19 1.5461821, 18 1.2686805, 12 1.1765528, 10 1.124586, 11 ``` and after the changes I got: ``` $ ./corerun WSPerf.exe 7681 20000 1 1.2716779, 5 1.0913687, 5 1.0198689, 5 1.1038351, 4 1.0823826, 4 1.0074977, 4 1.0132344, 5 1.0704005, 4 1.1775556, 6 1.0341026, 6 1.0462667, 4 ``` At this point I'm not planning to do any more proactive work on improving the send/receive performance, as the performance after these changes on Linux looks to be on par with the Windows implementation. There are likely more opportunities which can be addressed individually and reactively, including once #4900 is addressed. There may also be opportunities to improve scenarios other than lots of sending/receiving with the same websocket, e.g. minimizing the overhead associated with creating lots of websockets that each do relatively little work. cc: @ericeil, @bartonjs, @davidsh, @cipop Also fixes #9408 and fixes #9407 +9413 area-System.IO System.IO.FileSystem.DriveInfo is missing from .Net Core System.IO.FileSystem.DriveInfo is missing https://github.com/dotnet/corefx/tree/master/src/System.IO.FileSystem/src/System/IO https://dotnet.github.io/api/System.IO.DriveInfo.html +9414 area-System.Net Add test for posting FormUrlEncodedContent with HttpClient https://github.com/dotnet/corefx/issues/9357 cc: @ericeil +9416 area-System.Runtime System.Dynamic.Runtime and System.Runtime tests hanging in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/2040/consoleText Both the System.Dynamic.Runtime.Tests and the System.Runtime.Tests are hanging. Note that we just picked up a new CoreCLR: rc4-24214-02. I don't know if this is related, but to my knowledge we haven't seen these hang like this before. cc: @jkotas, @sergiy-k +9417 area-Infrastructure [PostRTM] Introduce .depproj references for newly stable packages The stable versions of contracts are embedded via a .depproj; rather than continuing to rebuild them (and potentially rewriting history). As part of our Post-RTM tasks we should change .csproj to .depproj as appropriate, holistically. +9418 area-Infrastructure [PostRTM] Change project.json references to stable packages Part of the problem with the build frequency (#9156) is that the project.json updates frequently end up with merge conflicts (not only between the bots, but between the bots and humans). If all of the existing references are snapped to the stable versions the updates won't be editing any files, and will continue to not need to edit any files until live dependencies on new contract API starts to creep in; making for significantly less noise than we have today. +9420 area-System.Runtime System.Runtime.Serialization.Formatters takes dependency on xunit.performance but has no perf tests The perf tests are currently detected by figuring out which tests take a dependency on xunit.performance and running those test dlls with xunit performance runner. System.Runtime.Serialization.Formatters seems to take a dependency on xunit.performance but does not have a perf test to execute To repro: `msbuild .\src\System.Runtime.Serialization.Formatters\tests\System.Runtime.Serialization.Formatters.Tests.csproj /t:buildAndtest /p:performance=true /p:OSGroup=Windows_NT` Is this intended? +9423 area-System.Net TcpClient.Dispose used concurrently with ConnectAsync may not Dispose of the Socket TcpClient is not documented to have thread-safe members, and in general Dispose implementations should not be used concurrently with other members on the containing types. However, as TcpClient is a thin wrapper for a Socket, code may end up calling Dispose on the TcpClient in order to cancel in-progress async operations, such as ConnectAsync. However, on Unix, ConnectAsync is implemented by creating a new Socket for each address it attempts to connect to, and that Socket isn't stored into the TcpClient until after a connection has been successfully established. As a result, Dispose can't be used to cancel the connect operation, as the Socket won't have been stored yet, and in such cases the Socket won't get disposed of. +9427 area-System.Runtime Several DateTimeOffset tests fail in certain timezones on Linux "e.g. ``` stoub@stoublinux2:~/netcore$ echo ""Europe/Prague"" | sudo tee /etc/timezone Europe/Prague stoub@stoublinux2:~/netcore$ sudo dpkg-reconfigure --frontend noninteractive tzdata Current default time zone: 'Europe/Prague' Local time is now: Tue Jun 14 23:58:46 CEST 2016. Universal Time is now: Tue Jun 14 21:58:46 UTC 2016. stoub@stoublinux2:~/netcore$ ./corerun xunit.console.netcore.exe System.Runtime.Tests.dll -notrait category=nonlinuxtests -notrait category=failing -notrait category=outerloop xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Tests Discovered: System.Runtime.Tests Starting: System.Runtime.Tests System.Tests.DateTimeOffsetTests.AddYears(dateTimeOffset: 1986-08-15T10:20:05.0700000+02:00, years: -10, expected: 1976-08-15T10:20:05.0700000+01:00) [FAIL] Assert.Equal() Failure Expected: 1976-08-15T10:20:05.0700000+01:00 Actual: 1976-08-15T10:20:05.0700000+02:00 Stack Trace: at System.Tests.DateTimeOffsetTests.AddYears(DateTimeOffset dateTimeOffset, Int32 years, DateTimeOffset expected) System.Tests.DateTimeOffsetTests.AddMonths(dateTimeOffset: 1986-08-15T10:20:05.0700000+02:00, months: 2, expected: 1986-10-15T10:20:05.0700000+01:00) [FAIL] Assert.Equal() Failure Expected: 1986-10-15T10:20:05.0700000+01:00 Actual: 1986-10-15T10:20:05.0700000+02:00 Stack Trace: at System.Tests.DateTimeOffsetTests.AddMonths(DateTimeOffset dateTimeOffset, Int32 months, DateTimeOffset expected) Finished: System.Runtime.Tests === TEST EXECUTION SUMMARY === System.Runtime.Tests Total: 6871, Errors: 0, Failed: 2, Skipped: 0, Time: 6.537s ``` " +9428 area-Infrastructure Move TestSuite package to dotnet-core feed To improve perf of restore and avoiding hitting multiple feeds, move the new sets of packages to the dotnet-core feed and not the dotnet-buildtools feed. +9433 area-System.Net HttpWebResponse.ContentType returns empty string when response has malformed headers "Copied from https://github.com/dotnet/coreclr/issues/5806 /cc @erezvani1529 The content-type property is being stripped off of response if it is not in ""type/subtype"" format. Information on the project and target frameworks: - .NetCore Console App - project.json ``` JSON { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002702"" }, ""WindowsAzure.Storage"": ""7.0.2-preview"" }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dnxcore50"", ""portable-net451+win8"" ] } } } ``` Sample fiddler trace using WindowsAzure.Storage client library(CoreCLR RC2 release): ``` User-Agent: Azure-Storage/7.0.2-preview (.NET Core 5.0) x-ms-content-language: languagevalue x-ms-content-type: contenttypevalue---> Content type header is sent successfully x-ms-client-request-id: 271c0518-3f42-4a05-89f0-27fcdf082d25 x-ms-version: 2015-07-08 x-ms-date: Wed, 08 Jun 2016 21:12:46 GMT ---------------------- Content-Type: contenttypevalue --> the stored content type returned from server Content-Language: languagevalue Last-Modified: Wed, 08 Jun 2016 21:12:45 GMT ETag: ""0x8D38FE1A3263418"" Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: cf262393-001a-0014-27ca-c18fe2000000 x-ms-version: 2015-07-08 x-ms-type: File Date: Wed, 08 Jun 2016 21:14:23 GMT ``` result: ContentType doesn't have the specified value (null value is retuned in the application). Note: I have tried the same scenario with a content-type with ""type/subtype"" format such as: ""contenttypeva/lue"" and it works fine. Please let me know if there are any more information required to investigate this issue. Thanks! " +9434 area-System.Net Fixing NegotiateStream Windows Interop. Adding NTLM and Kerberos remote tests. Fixing Windows SSPI Interop. Adding a common Configuration and Capabilities infrastructure for System.Net in preparation for multi-machine testing. Fixes #9160. @davidsh @stephentoub PTAL +9436 area-System.Net Significantly reduce running time of WebSocket.Client tests Two commits: - The first one essentially just replaces the regions used in the single ClientWebSocketTest.cs file with classes. - The second one moves those classes to their own files. No test logic/code was changed at all. This split helps to keep things a bit tidier, but more importantly, it enables xunit's default parallelization to run tests (from different test classes) concurrently. On my quad-core (which translates into xunit allowing four tests to run concurrently), it reduces the running time of the tests from ~40s to ~10s. Subsequently we might want to move the WebSocketHelper and WebSocketData functions into the new ClientWebSocketTestBase class, but that's orthogonal to this change. The ClientWebSocketTestBase just contains all of the helpers that were in ClientWebSocketTest.cs and that were shared by the various tests. cc: @davidsh, @cipop, @ericeil, @weshaggard +9438 area-System.Security Parameterize System.Security.Cryptography.Rfc2898DeriveBytes for HMAC Currently [System.Security.Cryptography.Rfc2898DeriveBytes](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/Rfc2898DeriveBytes.cs) is hardcoded to use HMACSHA1, it would be nice if HMAC could be parameterized. (More specifically, so that developers can use HMACSHA256 for more security.) Eg : public Rfc2898DeriveBytes(HMAC hmac, string password, byte[] salt, int iterations). +9439 area-System.Data RC2: Connecting to SQL Server from Linux Docker Container throws OpenSSL exception When connecting to SQL Server from .NET Core 1.0 RC2 running within a Linux container, the System.Data.SqlClient library throws an exception citing issues with the OpenSSL handshake. Code/steps to reproduce can be found here: https://github.com/iSynaptic/LinuxSqlServer +9445 area-System.Xml Add TryParse to XDocument Hi, this is a RFC issues to request support for a adding a `bool TryParse(string text, out XDocument document)` method to the `XDocument` class. I've searched around the repo but cannot find anything related, so if this is a dupe feel free to close. ## Problem: Sometimes happens that you have to work with XML files that comes from _untrusted_ sources, and you have to ensure that the file is actually well formed XML. Currently there are [some](http://stackoverflow.com/questions/25791738/determine-whether-a-given-string-is-xml-or-not) not so nice [ways](http://stackoverflow.com/questions/117007/how-best-to-test-the-validity-of-xml-from-a-method) to verify a string is a well formed XML that involves exception handling. None of the suggested ways looks like a clean solution to a quite common problem (at least IMO). Please note also that other [BCL classes](http://referencesource.microsoft.com/#q=Parse) that exposes a `Parse(string source)` method usually also exposes a `bool TryParse(string source, out...)` thus adding a `TryParse` method will make `XDocument` class somewhat more consistent with other BCL classes. ## Suggestion: add the following method `bool TryParse(string text, out XDocument document)` to `XDocument` and `XElement` classes ## Question: Do we need feature parity with `XmlDocument` classes? Actually `XmlDocument` exposes a `LoadXml(string xml)` so we could add a `bool TryLoadXml(string xml, out XmlDocument document)` but I really don't like the name and thus if feature parity isn't a must, I would prefer not adding it. +9446 area-System.Net Flow HttpClient timeouts and cancellation to the response stream Basically this is the same as PR #9102. We reverted that PR when the internal ToF tests started failing. But it was determined that the failure was due to infrastructure which is now fixed via https://github.com/dotnet/coreclr/pull/5695 +9448 area-System.IO Add UWP clrcompression build "The AOT netcore50 clrcompression (formerly represented by win10) is currently the only one that still needs to be built in TFS. This commit resolves that requirement by adding AppContainer support to the Open Windows native build. It also ports some custom CRT code to circumvent undefined API errors and make it WACK-friendly. - The result of this is that a clrcompression built with /p:TargetGroup=netcore50 will have the APPCONTAINER bit set. - When building in netcore50 Release, the imports of the clrcompression will be a limited set of the usual (i.e. non-UWP) imports - this makes the dll pass the WACK supported API check. - The import methods of the Release netcore50 clrcompression are identical to the corresponding clrcompression shipped out of TFS, though the latter imports ""api-ms-win-core*"" whereas the former imports ""kernel32"" and ""ole32"". - This commit will need to be merged alongside a TFS commit to remove clrcompression entirely from the ""PackagesToPublish"" group. - We will also need a commit to the build pipeline to add netcore50 configs to the ""pipelines.corefx.json"" file for the ""CoreFx-Windows-Product-Native-Trusted"" builds. imports of this dll: ``` KERNEL32.dll 180009000 Import Address Table 18000CF30 Import Name Table 0 time date stamp 0 Index of first forwarder reference 214 GetCurrentThreadId 2FA GetTickCount64 117 DisableThreadLibraryCalls 2DD GetSystemTimeAsFileTime 430 QueryPerformanceCounter ole32.dll 180009030 Import Address Table 18000CF60 Import Name Table 0 time date stamp 0 Index of first forwarder reference 7F CoTaskMemFree 7E CoTaskMemAlloc ``` imports of the dll from TFS: ``` api-ms-win-core-profile-l1-1-0.dll 180008038 Import Address Table 18000C188 Import Name Table 0 time date stamp 0 Index of first forwarder reference 0 QueryPerformanceCounter api-ms-win-core-processthreads-l1-1-0.dll 180008028 Import Address Table 18000C178 Import Name Table 0 time date stamp 0 Index of first forwarder reference D GetCurrentThreadId api-ms-win-core-sysinfo-l1-1-0.dll 180008048 Import Address Table 18000C198 Import Name Table 0 time date stamp 0 Index of first forwarder reference A GetSystemTimeAsFileTime E GetTickCount64 api-ms-win-core-libraryloader-l1-1-0.dll 180008018 Import Address Table 18000C168 Import Name Table 0 time date stamp 0 Index of first forwarder reference 0 DisableThreadLibraryCalls api-ms-win-core-com-l1-1-0.dll 180008000 Import Address Table 18000C150 Import Name Table 0 time date stamp 0 Index of first forwarder reference 3E CoTaskMemFree 3D CoTaskMemAlloc ``` This also has the added benefit of upgrading the version of ZLib used in UWP to Zlib-Intel. " +9449 area-System.Net CentOS: System.Net.WebSockets.WebSocketException : Unable to connect to the remote server http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/221/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/221/testReport/junit/System.Net.WebSockets.Client.Tests/ClientWebSocketTest/SendReceive_Concurrent_Success_server__ws___corefx_net_cloudapp_net_WebSocket_EchoWebSocket_ashx_/ ``` MESSAGE: System.Net.WebSockets.WebSocketException : Unable to connect to the remote server\n---- System.ObjectDisposedException : Cannot access a disposed object.\nObject name: 'System.Net.Sockets.TcpClient'. +++++++++++++++++++ STACK TRACE: at System.Net.WebSockets.WebSocketHandle.ManagedClientWebSocket.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ClientWebSocket.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.WebSocketHelper.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.ClientWebSocketTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Sockets.TcpClient.GetStream() at System.Net.WebSockets.WebSocketHandle.ManagedClientWebSocket.d__48.MoveNext() ``` +9451 area-System.Runtime Issue, Proposal: Decimal, Double (Negative 0) ToString "I am having a hard time believing I never caught this before but none the less; I must be missing something and if I am not then this should probably be corrected... `System.BitConverter.ToDouble(System.BitConverter.GetBytes(-0.0), 0)` Evaluates to : '0.0' `System.BitConverter.Int64BitsToDouble(System.BitConverter.ToInt64(System.BitConverter.GetBytes(-0.0), 0))` Evaluates to : '0.0' But ... `System.BitConverter.DoubleToInt64Bits(-0.0)` Evaluates to '-9223372036854775808', e.g. long.MaxValue + 1. I guess my issue / question is how to round trip negative zero in the CLR using the BitConverter.. It gets the Bytes correctly as can be seen here: `System.BitConverter.GetBytes(-0.0)` > {byte[8]} > [0]: 0 > [1]: 0 > [2]: 0 > [3]: 0 > [4]: 0 > [5]: 0 > [6]: 0 > [7]: 128 `System.BitConverter.GetBytes(0.0)` > {byte[8]} > [0]: 0 > [1]: 0 > [2]: 0 > [3]: 0 > [4]: 0 > [5]: 0 > [6]: 0 > [7]: 0 And I believe that it actually does parse to `-0.0`. However as can be seen by the following statement(s): `-unchecked(-System.BitConverter.Int64BitsToDouble(long.MaxValue + 1))` `unchecked(-System.BitConverter.Int64BitsToDouble(long.MaxValue + 1))` `unchecked(-0.0)` `(0.0 + -0.0)` `System.BitConverter.GetBytes((-1.0 * 0.0))` > {byte[8]} > [0]: 0 > [1]: 0 > [2]: 0 > [3]: 0 > [4]: 0 > [5]: 0 > [6]: 0 > [7]: 128 `System.BitConverter.ToDouble(System.BitConverter.GetBytes((-1.0 * 0.0)), 0)`, Evaluates to 0 but as can be seen using the following code: `System.BitConverter.GetBytes(System.BitConverter.ToDouble(System.BitConverter.GetBytes((-1.0 * 0.0)), 0))` You get the same bytes... Yes I am aware there is IEEE 754, which also says that both are equal except in terms of divisions with negative numbers... It also says `−1.0*0.0` == `-0.0` [Wikipedia Signed Zero](https://en.wikipedia.org/wiki/Signed_zero) You cannot evaluate an expression to negative zero because the interpreter always replaces it with absolute 0, however in memory the bytes are actually as they are given by the BitConverter or otherwise which can also be verified as follows: `double d = -0.0;` `*((byte*)(&d) + 7)` Evaluates to `0x80` e.g. `128`. The following code can detect the anomaly: ``` [System.CLSCompliant(false)] public unsafe static bool IsNegativeZero(double* d) { //Check for -0.0 return (*((long*)(d))).Equals(Common.Binary.NegativeZeroBits); } public unsafe static bool IsNegativeZero(ref double d) { //Make a pointer to the pointer, which when dereferenced can access the result. System.IntPtr value = Unsafe.AddressOf(ref d); //Check for -0.0 return (*((long*)((int*)&value))).Equals(Common.Binary.NegativeZeroBits); } ``` This gets even more confusing with Decimals as `new Decimal(0, 0, 0, true, 0).Equals(-0.0m)` evaluates to true. However > System.Decimal.GetBits(new Decimal(0, 0, 0, true, 0)) > {int[4]} > [0]: 0 > [1]: 0 > [2]: 0 > [3]: -2147483648 > > System.Decimal.GetBits(-0.0m) > {int[4]} > [0]: 0 > [1]: 0 > [2]: 0 > [3]: -2147418112 Since the Decimal type itself is documented this way I find it less intrusive to deal with, however the issue still remains that the value I pass is interpreted as a different but equal value in the cases of Double and Decimal where I do not believe they should be, neither mathematically typing nor obviously with respect to their binary representation. I guess I will go as far as to even propose that '-0.0' Should not be equal to `0.0`, furthermore that the same should also apply to Decimal with respect to the variations of Zero which are possible although I am sure that proposal can be taken elsewhere besides the corefx issues. For instance... `(1 / -0.0) + Double.PositiveInfinity` == `NaN` This indicates the value is actually preserved and calculated as expected to the standard but there is no way to indicate the display of such a value without testing specifically for such and augmenting the results thereof. The only source of information I can find in relation to this topic was from the BCL Team Blog back in 2006: [Here](https://blogs.msdn.microsoft.com/bclteam/2006/10/12/decimal-negative-zero-representation-lakshan-fernando/). It obviates the differences between the decimal representations of negative zero but doesn't touch on the subject for the double type; although I am fairly sure after seeing this the same obviously applies there as well. A more reasonable approach or proposal which would still be compliant to the IEEE standard would be to allow the 'sign' to be given as '+' or '-' via the ToString and not omit it; and also to return the value parsed and not an equivalent representation. Finally, here is a good example of a 'buggy' or weird case in my humble opinion: `System.BitConverter.GetBytes(double.Parse(""-0.0""))` > {byte[8]} > [0]: 0 > [1]: 0 > [2]: 0 > [3]: 0 > [4]: 0 > [5]: 0 > [6]: 0 > [7]: 0 Thanks in advance! " +9453 area-System.Data Refactor SqlClient ManualTests to fetch connection strings from environment variables. This change also allows ManualTests to be built and run automatically, but no actual tests will be run if the connection strings aren't present. CC @saurabh500 +9463 area-System.Net SendReceive_PartialMessage_Success websockets test failed on Windows in CI The server returned an invalid or unrecognized response http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug/655/consoleText ``` System.Net.WebSockets.Client.Tests.SendReceiveTest.SendReceive_PartialMessage_Success(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.WinHttpWebSocket.d__30.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\windows_nt_debug88592b53\src\System.Net.WebSockets.Client\tests\SendReceiveTest.cs(49,0): at System.Net.WebSockets.Client.Tests.SendReceiveTest.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9464 area-Infrastructure Clean build in master yields 32 warnings "``` c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Diagnostics.FileVersionInfo\tests\System.Diagnostics.FileVersionInfo.TestAssembly\System.Diagnostics.FileVersionInfo.TestAssembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Diagnostics.FileVersionInfo\tests\System.Diagnostics.FileVersionInfo.TestAssembly\System.Diagnostics.FileVersionInfo.TestAssembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Diagnostics.FileVersionInfo\tests\System.Diagnostics.FileVersionInfo.TestAssembly\System.Diagnostics.FileVersionInfo.TestAssembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Diagnostics.FileVersionInfo\tests\System.Diagnostics.FileVersionInfo.TestAssembly\System.Diagnostics.FileVersionInfo.TestAssembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\System.Reflection\tests\TestExe\System.Reflection.Tests.TestExe.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\System.Reflection\tests\TestExe\System.Reflection.Tests.TestExe.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\System.Reflection\tests\TestExe\System.Reflection.Tests.TestExe.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\System.Reflection\tests\TestExe\System.Reflection.Tests.TestExe.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Runtime.Loader\tests\System.Runtime.Loader.Noop.Assembly\System.Runtime.Loader.Noop.Assembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Runtime.Loader\tests\System.Runtime.Loader.Noop.Assembly\System.Runtime.Loader.Noop.Assembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Runtime.Loader\tests\System.Runtime.Loader.Noop.Assembly\System.Runtime.Loader.Noop.Assembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETStandard,Version=v1.0"" framework. Add a reference to "".NETStandard,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\coref x\src\System.Runtime.Loader\tests\System.Runtime.Loader.Noop.Assembly\System.Runtime.Loader.Noop.Assembly.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\ModuleCore\ModuleCore.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\ModuleCore\ModuleCore.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\ModuleCore\ModuleCore.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\ModuleCore\ModuleCore.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlDiff\XmlDiff.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlDiff\XmlDiff.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlDiff\XmlDiff.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlDiff\XmlDiff.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlCoreTest\XmlCoreTest.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlCoreTest\XmlCoreTest.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlCoreTest\XmlCoreTest.csproj] c:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(73,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [c:\Users\stoub\Source\repos\corefx\ src\Common\tests\System\Xml\XmlCoreTest\XmlCoreTest.csproj] ``` " +9465 area-System.IO Compat work for IO category Break out as needed, tagging with the dev/api-xxx tags. +9471 area-System.Net Fix MulticastInterface_Set_ValidIndex_Success failures on non-Windows platforms. "This test assumed that the ""loopback"" interface was always at index 1, which is not true on Linux/OSX/etc. This change makes that assumption explicitly Windows-only, while allowing the ""any interface"" case to run on all platforms. I also added a retry loop around the UDP send to harden this a little against the loopback packet loss we've seen on Unix platforms in other tests. Fixes #8971. @CIPop @stephentoub " +9472 area-System.Net CloseAsync_Cancel_Success failed in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/2252/consoleText ``` System.Net.WebSockets.Client.Tests.CancelTest.CloseAsync_Cancel_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] Assert.Equal() Failure  (pos 4) Expected: The 'System.Net.WebSockets.InternalClientWebS��� Actual: The WebSocket is in an invalid state ('Aborte���  (pos 4) Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.WebSockets.Client\tests\ClientWebSocketTestBase.cs(81,0): at System.Net.WebSockets.Client.Tests.ClientWebSocketTestBase.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.WebSockets.Client\tests\CancelTest.cs(77,0): at System.Net.WebSockets.Client.Tests.CancelTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9474 area-System.ComponentModel Adding Facade for System.ComponentModel.Composition cc: @weshaggard @danmosemsft FYI: @JeremyKuhne +9477 area-System.Net Fix octal IP address string parsing on OSX "On OSX and Linux, IPAddress.Parse uses getaddrinfo to parse the string. This is spec'd to only work for decimal, but seems to do more than that on both platforms. On Linux, I guess it works well for both hex and octal. On OSX, hex seems to work, but octal only sometimes works. After some experimentation, I think what's going on is that getaddrinfo on OSX tries to parse the address as decimal first, and only if that fails does it try to parse it as octal. So an address like ""010.010.010.010"" will parse as ""10.10.10.10,"" but ""0300.0300.0300.0300,"" since it's not a valid address in decimal, will correctly parse as ""192.192.192.192."" With this change, we use inet_aton to parse IPv4 addresses, instead of getaddrinfo. inet_aton seems to handle octal strings correctly, and is officially documented to do so. Fixes #8362 " +9478 area-Meta Document building against packages We need to document the various aspects of building against packages. Including but not necessary limited to: - How to build with it. (i.e. /p:BuildTestAgainstsPckages=true) - What does KeepProjectReference property mean - What does KeepAllProjectReferences property mean - When is it OK for people to use those properties or not. (i.e. They should be exceptional cases and we need to always make sure we have test projects that work against the packages to ensure the packages are correct). +9480 area-System.Security Compat work for ACL +9481 area-System.Net ContentEncoding header stripped out of response.header.content.contentEncoding "When getting a response with ""gzip"" as the content encoding, this value is not populated into the response.Header.Content.contentEncoding object. If the value is ""foo"" this value is properly propagated from the response to the header object. However, setting the AutomaticDecompression to DecompressionMethods.None on the HttpClientHandler instance is a workaround for us at the moment. Note: this issue was originally opened in Coreclr repo ([Closed](https://github.com/dotnet/coreclr/issues/4114#issuecomment-226612226) and opened here as it is related to HttpClient) " +9483 area-System.Security Compat work Claims based security System.Security.Claims.* +9484 area-System.IO System.IO.Compression.ZipFile tests leak folders into temp directory The ZipFile tests create paths like this in the /tmp or %TEMP% folders: ./ZipTestsRoot_ef3dc45b504d4ff58e009af435fb4ccc ./ZipTestsRoot_ef3dc45b504d4ff58e009af435fb4ccc/ZipTests1 On a long-running test VM, these random folders build up, and on Linux can eventually fill /tmp so hard that execution of pretty much anything is blocked. I'm working to prevent this from mattering in infrastructure, but if the tests could either use their current directory (which gets automatic cleanup on .NET Helix) or be more aggressive in cleaning up leaked ZipTest folders that would prevent this in the future. +9487 area-System.Runtime Compat work for System.*.Compiler* System.Runtime.CompilerServices System.CodeDom.Compiler +9489 area-System.ComponentModel Compat work for Component Model non/MEF System.ComponentModel excepting System.ComponentModel.Composition +9491 area-System.IO Compat work for Compression System.IO.Compression. Looks like there's almost nothing missing here just APM +9492 area-Meta Compat work for Configuration We do not plan to bring System.Configuration.*. Xamarin does not include it, and the usage in mobile apps that we have seems to be essentially zero. It is also problematic in terms of layering. +9500 area-Infrastructure Enable (optionally) statically linking native dependencies on Linux Related: dotnet/coreclr#5853 +9503 area-System.Net Use managed WebSockets implementation on all Windows (not UWP) Now that we have a managed implementation of Websockets that we use on Unix, should we also use it on Windows pre-Windows 8, since the current Windows implementation requires OS support only available Windows 8 and later? I'm assuming this should mostly be an issue of package authoring? cc: @davidsh, @cipop, @ericstj, @davidfowl +9511 area-System.Net Speed up System.Net.Sockets.Tests execution - Split `System.Net.Sockets.Tests.DualMode` into multiple classes, to allow more tests to run in parallel. - Tweak the timeout values in some of these tests, so that operations that are expected to time out do so faster. - Removed the `TestFinalizers` case, which was of questionable value in the first place. The assumptions made here before this change were probably not valid (xunit doesn't run tests in any particular order), and they certainly aren't valid after this change. We run enough tests in this suite that finalizers are going to end up running, with or without this test case. On my Windows machine, this brings System.Net.Sockets.Tests execution time from ~76 seconds to ~15 seconds. On my Ubuntu 14.04 VM, execution time goes from ~40 seconds to ~6 seconds. @CIPop @stephentoub +9514 area-Meta Compat work for ClickOnce (stub it) Without CAS, this would not work anyway. Issue tracks stubbing it. +9516 area-System.Console Compat work for Console Not much here to match Xamarin mobile, as much of it isn't there. We do miss these: ``` public static Stream OpenStandardError(int bufferSize); public static Stream OpenStandardInput(int bufferSize); public static Stream OpenStandardOutput(int bufferSize); public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist); public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist); ``` also `enum ConsoleKey` +9521 area-System.Console System.Console implementations with limitations such as Color should not throw All NetCore50 implementations of System.Console I've found so far throw if any color settings are used (i.e. ForegroundColor) due to limitations of where they run. This means that I can't use Xunit.Console.NetCore.exe against these versions because the first thing XUnit DOES is to set the console color. I favor turning these NotSupportedExceptions into noops... ideally with some kind of debug output that indicates to the user this happened, in case the behavior is desired so much that they're checking it out under a debugger. Either way, I need some way to run executables that expect to set these colors on such a runtime. +9527 area-System.Net Convert CredentialCache perf tests to xunit.performance These tests were running for a long time, and then ignoring the result. These tests run for ~2 minutes in our functional test passes, even though we're not getting useful data out of them. This change converts the tests to use xunit.performance. This will greatly reduce their runtime when not running as performance tests (we just run one iteration in that case). It will also enable them to produce useful results in our perf lab, where we _do_ have the infrastructure to find regressions in both throughput and GC counts for xunit.performance-based tests. @stephentoub @davidsh @CIPop @justinvp @brianrob +9533 area-System.Net HttpClient on non-Windows does not support Windows authentication "The following code snippet works fine on Windows (.NET Framework), and can authenticate against an IIS web service configured with Windows authentication only. Status code is 200. ``` using (var client = new HttpClient ( new HttpClientHandler { PreAuthenticate = true, UseDefaultCredentials = false, UseProxy = false, Credentials = new NetworkCredential (""user"", ""pass"", ""domain"") })) { client.BaseAddress = new Uri (""http://test.com""); client.DefaultRequestHeaders.Accept.Clear (); client.DefaultRequestHeaders.Accept.Add (new MediaTypeWithQualityHeaderValue (""application/json"")); HttpResponseMessage response = await client.GetAsync (""test/values""); if (response.IsSuccessStatusCode) { Console.WriteLine (await response.Content.ReadAsStringAsync ()); } else { Console.WriteLine (response.StatusCode); } } ``` However, when it runs in a .NET Core RC2 app on Mac, the response status code is always 401. By capturing packets via Wireshark, no user credentials are sent. (if disable Windows authentication and enable Basic authentication, then it works with 200 status code and user credentials in packets.) So I think the cross platform Windows authentication support is not yet fully implemented. Is there a plan to address this? " +9534 area-System.Net Several managed WebSockets tweaks - When we fail to connect due to an abort/cancellation, ensure the inner exception of the WebSocketException is an OperationCanceledException rather than an ObjectDisposedException. - When sending a keep-alive ping, if the send lock is already held, that means we're actively sending something, so there's no value in also sending a keep-alive; we can simply make it a nop. - Only create the keep-alive timer if asked for. - Make a field readonly. cc: @ericeil +9535 area-System.ComponentModel TryValidateObject not returning localized text after migration from RC1 to RC2 "I have MVC project that uses some model validation outside of MVC pipe by calling directly System.ComponentModel.DataAnnotations.Validator.TryValidateObject(...) The project is for French market, so CurrentCulture and CurrentUICulture are both set to ""fr"" In RC1, this setup was returning correctly validation error messages in French. After migration to RC2, all messages are now in english, regardless of current culture that is set. Do I miss something (localization package or different runtime), or is this a bug ? " +9536 area-System.Net Add retry to GetConnectedWebSocket To hopefully avoid spurious failures when connecting to the remote endpoint. cc: @cipop, @davidsh, @ericeil +9537 area-System.Net Allow default xunit parallelization for System.Net.Http.Functional.Tests The System.Net.Http functional tests currently run serially, but the stated reasons for disabling xunit's parallelism no longer exist. The only remaining reason I see for them to not run concurrently is that some of the tests exercise EventSources/DiagnosticSources, which affect the entire process. This PR: - Makes each of those tests run in its own process, so that they don't affect and are unaffected by other tests in the same process - Enables the default xunit parallelism No test logic was changed in this PR, other than moving some tests to their own file and wrapping the body of those tests with RemoveInvoke. As a result, the innerloop execution time drops on my machine from ~60s to ~40s. The majority of the remaining time is spent in the HttpClientHandlerTest class, and simply by splitting up that class, the execution time can easily be dropped to ~15s on a quad core, resulting in xunit's default parallelism level being 4. (I've not done that in this PR, however.) cc: @davidsh, @cipop, @ericeil, @Priya91 +9538 area-System.Net MulticastInterface_Set_AnyInterface_Succeeds failing on Fedora in CI Since https://github.com/dotnet/corefx/pull/9471 was merged, all Fedora runs appear to be failing in this test with this error: ``` System.Net.Sockets.Tests.SocketOptionNameTest.MulticastInterface_Set_AnyInterface_Succeeds [FAIL] System.Net.Sockets.SocketException : Connection timed out Stack Trace: at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.Tests.SocketOptionNameTest.MulticastInterface_Set_Helper(Int32 interfaceIndex) ``` +9539 area-System.Runtime Why System.Runtime.Loader isn't available on UWP? Load assembly at runtime is very useful for app extension purpose. UWP apps can have the codeGeneration capability. And there is VirtualProtectFromApp function. Why System.Runtime.Loader isn't available on UWP? +9541 area-System.Net Uri.TryCreate method throws NullReferenceException "NullReferenceException is thrown at the line https://github.com/dotnet/corefx/blob/master/src/System.Private.Uri/src/System/Uri.cs#L2042 (_syntax is null) for the following call: ``` System.Uri url; System.Uri.TryCreate(""http:Ç"", System.UriKind.RelativeOrAbsolute, out url); ``` with the stack trace ``` at System.Uri.CreateUriInfo(Flags cF) at System.Uri.EnsureUriInfo() at System.Uri.ParseRemaining() at System.Uri.EnsureParseRemaining() at System.Uri.InitializeUri(ParsingError err, UriKind uriKind, UriFormatException& e) at System.Uri.CreateHelper(String uriString, Boolean dontEscape, UriKind uriKind, UriFormatException& e) at System.Uri.TryCreate(String uriString, UriKind uriKind, Uri& result) at ConsoleApplication36.Program.Main(String[] args) at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() ``` https://connect.microsoft.com/VisualStudio/feedback/details/2826777/uri-trycreate-method-throws-nullreferenceexception " +9542 area-System.Net Uri parser supports paths wrt. RFC3986-5.4.2 "Unicode relative paths with known schemes that have without ""//"" characters are parsed correctly. Fix #9541 " +9543 area-System.Net Test failure: Manual_CertificateSentMatchesCertificateReceived_Success "The test as currently written fails sporadically on Windows. If, however, `GC.Collect(); GC.WaitForPendingFinalizers();` is added inside the loop here: https://github.com/dotnet/corefx/blob/483aa5a3012fe78ea001ece1b0404b18c0b90a29/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs#L117 the `reuseClient==false` test fails deterministically for me with the error ""The client certificate credentials were not recognized"". It appears something is getting finalized and preventing the same certificate instance from being used with subsequent HttpClientHandler instances. " +9544 area-System.Net Tweak HTTP client certificates test and add ActiveIssue With GC/finalization at the right moment, the test currently fails on Windows. https://github.com/dotnet/corefx/issues/9543 cc: @davidsh, @cipop, @ericeil +9545 area-System.Security Make KeyDerivationAlgorithm a primitive @bartonjs I think this would allow for more flexibility than simply parameterizing Rfc2898DeriveBytes, UWP already has concepts of KeyDerivationAlgorithm, HashAlgorithm, MacAlgorithm, AsymmetricAlgorithm and SymmetricAlgorithm defined. +9547 area-Serialization Performance Improvments on Reflection Based De-serialization The fix improves the performance of reflection based de-serialization. The basic idea was to cache useful information acquired via reflection when de-serializing collections and create delegates for reflection invokes. The table below shows the results of the perf test runs, | DeSerializationTest | numberOfRuns | testSize | Baseline | Fix | Diff | | --- | --- | --- | --- | --- | --- | | ByteArray | 100 | 1024 | 0.563 | 0.597 | 6.04% | | ByteArray | 5 | 1048576 | 21.4 | 21.8 | 1.87% | | String | 10000 | 128 | 23.7 | 24.6 | 3.80% | | String | 10000 | 1024 | 48.6 | 47.9 | -1.44% | | ListOfInt | 1000 | 128 | 611 | 64.9 | -89.38% | | ListOfInt | 100 | 1024 | 494 | 46.8 | -90.53% | | ListOfInt | 1 | 1048576 | 5.07E+03 | 474 | -90.65% | | Dictionary | 1000 | 128 | 694 | 497 | -28.39% | | Dictionary | 100 | 1024 | 539 | 368 | -31.73% | | SimpleType | 10 | 1 | 0.616 | 0.31 | -49.68% | | SimpleType | 1 | 15 | 2.21E+03 | 1.07E+03 | -51.58% | | ISerializable | 10000 | -1 | 73.2 | 76.2 | 4.10% | | XmlElement | 10000 | -1 | 34.6 | 35.2 | 1.73% | | ArrayOfSimpleType | 1000 | 128 | 1.90E+03 | 394 | -79.26% | | ArrayOfSimpleType | 100 | 1024 | 1.53E+03 | 294 | -80.78% | | ListOfSimpleType | 1000 | 128 | 1.77E+03 | 371 | -79.04% | | ListOfSimpleType | 100 | 1024 | 1.43E+03 | 290 | -79.72% | | DictionaryOfSimpleType | 1000 | 128 | 1.81E+03 | 934 | -48.40% | | DictionaryOfSimpleType | 100 | 1024 | 1.44E+03 | 721 | -49.93% | +9548 area-System.Net Allow the HTTP2 protocol test to pass with untrusted chains on Debian. "The TLS context is set up to make this chain: CN=http2.akamai.com, O=Akamai Technologies Inc., L=Santa Clara, S=CA, C=US CN=Verizon Akamai SureServer CA G14-SHA2, OU=Cybertrust, O=Verizon Enterprise Solutions, L=Amsterdam, C=NL CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE CN=GTE CyberTrust Global Root, OU=""GTE CyberTrust Solutions, Inc."", O=GTE Corporation, C=US making use of the cross-signed Baltimore CyberTrust Root certificate. Unfortunately, that chain is not trusted on Debian 8.4 (GTE CyberTrust Global Root was removed), and a combination of data and installed software results in the valid chain using the self-signed Baltimore root is never built. To prevent this situation from making the tests show as a failure, selectively allow Debian 8 to succeed on an incomplete chain. " +9550 area-System.Xml [dev/xml] Port XslCompiledTransform tests This needs to be done as a part of dev/xml branch work. Workload size: large +9555 area-System.IO FileSystem: Expand CanCreateSymlinks test Make it harder to pass the CanCreateSymbolicLinks check so that tests don't fail on some systems where a file symlink can be created but a directory symlink can't be. Also adds a File.Exists/Directory.Exists check to provide a bit more strengthening to the CanCreateSymbolicLinks check. likely resolves #9009 +9556 area-Meta Update new API's to netstandard1.7 Once we have a nuget client that support NS1.7 (https://github.com/NuGet/Home/issues/2998) then we need to update a number of our contracts, particularly in the dev/api branch, to target NS1.7 +9559 area-System.Security Compat work for Crypto Need to define how much we want to do here. +9562 area-System.IO Update System.IO target version to NS1.7 When #9556 is available we need to update System.IO. +9565 area-System.Net Several more WebSocket tweaks "- Refactor out of the ReceiveAsyncPrivate method the portions responsibility for handling the close, ping, and pong messages; this slightly increases allocations for handling those, but helps with the send/receive cases. - Ensure we capture an exception into the task returned from SendAsync rather than throwing it out synchronously - Properly handle a few more ""bad message"" cases. We're now passing 100% of the autobahn WebSockets tests (other than the ""unimplemented"" compression ones). cc: @ericeil " +9570 area-System.Diagnostics Proposal: support for local variables in SymbolReader for Portable PDB, Linux To support getting names of local variables from Portable PDB (see dotnet/coreclr#5809) the following method should be added to System.Diagnostics.Debug.SymbolReader (#8981): ``` c# public static bool GetLocalVariableName(string assemblyFileName, int methodToken, int localIndex, out IntPtr localVarName) { } ``` The output parameter `localVarName` is supposed to be marshaled as BSTR to native code. @lucenticus @mikem8361 @seanshpark @chunseoklee +9576 area-System.Net Removed redundant calls to SetFieldsFromUri() in UriBuilder SetFieldsFromUri() is more or less identical to Init() (which for some reason calls SetFieldsFromUri() resulting in UriBuilder being initialized twice). The only other place it's called is in the Uri property after the new Uri object has been constructed. It doesn't make sense for a UriBuilder to re-initialize itself with the information it just used to construct a new Uri object. +9577 area-System.Net Fix MulticastInterface_Set_Helper in Fedora Outerloop runs Attempt to work around routing issues in the test environment by manually sending from the same interface we'll receive on. Fixes #9538. +9578 area-System.Net "System.ArgumentNullException: ""SafeHandle cannot be null"" on every http request" Looks like we missed this in WCF HelloWorld perf/stress :( There is a System.ArgumentNullException per WCF request which gets handled and the request proceeds successfully, but the exception isn't the most performant way to control the execution flow ... I didn't dig into the details on why it happens (whether it needs a multi-threaded access to http client or not), I only have the call stack for now: ``` System.StubHelpers.StubHelpers.SafeHandleAddRef(System.Runtime.InteropServices.SafeHandle, Boolean ByRef) Interop+WinHttp.WinHttpSetOption(SafeWinHttpHandle, UInt32, UInt32 ByRef, UInt32) DomainBoundILStubClass.IL_STUB_PInvoke(SafeWinHttpHandle, UInt32, UInt32 ByRef, UInt32) System.Net.Http.WinHttpHandler+d__101.MoveNext() System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.RunWithDefaultContext() System.Threading.ThreadPoolWorkQueue.Dispatch() ``` +9580 area-System.Net Disable SocketOptionNameTest.MulticastInterface_Set_AnyInterface_Succeeds on Fedora 23 Disable `SocketOptionNameTest.MulticastInterface_Set_AnyInterface_Succeeds` on Fedora, while we investigate why this test has been failing (#9538). +9581 area-System.Collections System.Collections.BitArray tests fail for netcore50aot "There's a slight difference in the implementations of `System.Collections.BitArray` in mscorlib and for netcore50aot (which is in the corefx repository): netcore50aot includes a parameter name for an exception, while mscorlib does not. [coreclr/mscorlib](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Collections/BitArray.cs#L390): ``` if (array is int[]) { // .... } else if (array is byte[]) { // .... } else if (array is bool[]) { // .... } else throw new ArgumentException(Environment.GetResourceString(""Arg_BitArrayTypeUnsupported"")); // No argument name in this message. ``` [corefx/netcore50aot](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/BitArray.cs#L422) ``` if (array is int[]) { // ..... } else if (array is byte[]) { // .... } else if (array is bool[]) { // .... } else throw new ArgumentException(SR.Arg_BitArrayTypeUnsupported, nameof(array)); // Uses name of argument ``` ...this is causing tests to fail, because the tests verify the non-existence of the parameter name. What should be done in this case? Remove the parameter name from the version in corefx? Add them to mscorlib (perhaps in future)? (more classes' tests may fail, these are just the one I've been investigating) " +9582 area-Serialization Compat work for Serialization Devise our plan for increasing compatibility with serialization, and break out the work. +9583 area-System.Text Compat work for Encoding (for Windows) ~70 types and members on the types, among these types: ``` System.Text.Decoder System.Text.DecoderExceptionFallbackBuffer System.Text.DecoderReplacementFallbackBuffer System.Text.Encoder System.Text.EncoderExceptionFallbackBuffer System.Text.EncoderReplacementFallbackBuffer System.Text.Encoding System.Text.EncodingInfo System.Text.UnicodeEncoding ``` +9596 area-System.Net Uri.TryCreate creates wrong Uri "Uri class duplicates everytrhing after the colon when scheme is unknown and there are unicode characters in the uri. `Uri.TryCreate(""scheme:Ç"", System.UriKind.RelativeOrAbsolute, out url);` creates `""scheme:ÇÇ""`, `Uri.TryCreate(""scheme:Ç/Ğ/İ?a=b"", System.UriKind.RelativeOrAbsolute, out url);` creates `""scheme:Ç/Ğ/İ?a=bÇ/Ğ/İ?a=b""`. https://connect.microsoft.com/VisualStudio/feedback/details/2844324 " +9597 area-System.Net Uri supports unknown schemes wrt. RFC3986-5.4.2 "Unicode relative paths with unknown schemes without ""//"" characters are parsed correctly. Fix #9596 " +9600 area-Infrastructure [ARM/Linux] Fix build break: /usr/bin/objcopy: Unable to recognise the format of the input file ... ARM cross build on Ubuntu 14.04LTS is stop with following message. ``` /home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native/System.IO.Compression.Native/System.IO.Compression.Native.so.dbg Reaping winning child 0x01168930 PID 6432 cd /home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native/System.IO.Compression.Native && /usr/bin/objcopy --only-keep-debug /home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native/System.IO.Compression.Native/System.IO.Compression.Native.so /home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native/System.IO.Compression.Native/System.IO.Compression.Native.so.dbg Live child 0x01168930 (System.IO.Compression.Native/System.IO.Compression.Native.so) PID 6433 /usr/bin/objcopy: Unable to recognise the format of the input file `/home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native/System.IO.Compression.Native/System.IO.Compression.Native.so' Reaping losing child 0x01168930 PID 6433 make[2]: *** [System.IO.Compression.Native/System.IO.Compression.Native.so] Error 1 Removing child 0x01168930 PID 6433 from chain. make[2]: Leaving directory `/home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native' Reaping losing child 0x008abc00 PID 6413 make[1]: *** [System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/all] Error 2 Removing child 0x008abc00 PID 6413 from chain. make[1]: Leaving directory `/home/sjlee/git/corefx/bin/obj/Linux.arm.Release/Native' Reaping losing child 0x01a8c5c0 PID 6409 make: *** [all] Error 2 Removing child 0x01a8c5c0 PID 6409 from chain. Failed to build corefx native components. Command exited with non-zero status 1 1.76user 1.17system 0:02.91elapsed 101%CPU (0avgtext+0avgdata 39456maxresident)k 0inputs+17168outputs (0major+428797minor)pagefaults 0swaps ``` It was caused by wrong reference of toolchain `/usr/bin/objcopy` instead `/usr/bin/arm-linux-gnueabihf-objcopy` during cross build. +9605 area-System.Runtime Port the new UTF8 API and contract to 4.6.3 and remove APICompact exception +9608 area-System.Net Add server-side SslStream support for SNI and multiple server certificates https://tools.ietf.org/html/rfc6066#section-3 This is needed for servers servicing multiple host names. https://github.com/aspnet/KestrelHttpServer/issues/241 +9623 area-Infrastructure Code coverage broken, again, due to missing .pdbs "The RunTests.cmd isn't copying the .pdb file for the target assembly to the execution directory. As a result, code coverage doesn't produce any results. For example: ``` c:\Users\stoub\Source\repos\corefx\src\System.Linq.Parallel\tests>msbuild /v:m /t:rebuildandtest /p:Coverage=true Microsoft (R) Build Engine version 14.0.25123.0 Copyright (C) Microsoft Corporation. All rights reserved. System.Linq.Parallel -> c:\Users\stoub\Source\repos\corefx\bin\ref\System.Linq.Parallel\4.0.0.0\System.Linq.Parallel.dll System.Linq.Parallel -> c:\Users\stoub\Source\repos\corefx\bin\ref\System.Linq.Parallel\4.0.0.0\System.Linq.Parallel.dll System.Linq.Parallel -> c:\Users\stoub\Source\repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Linq.Parallel\System.Linq.Parallel.dll System.Linq.Parallel -> c:\Users\stoub\Source\repos\corefx\bin/packages/Debug/specs/System.Linq.Parallel.nuspec System.Linq.Parallel.Tests -> c:\Users\stoub\Source\repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Linq.Parallel.Tests\System.Linq.Parallel.Tests.dll Using c:\Users\stoub\Source\repos\corefx\packages/ as folder for resolving package dependencies. Executing in c:\Users\stoub\Source\repos\corefx\bin\tests\AnyOS.AnyCPU.Debug\System.Linq.Parallel.Tests\netcoreapp1.0\ Hard linking dependent files... Finished linking needed files, moving to running tests. Running tests... Start time: 9:37:20.24 Command(s): c:\Users\stoub\Source\repos\corefx\packages/OpenCover\4.6.519\tools\OpenCover.Console.exe -oldStyle -filter:""+[*]* -[*.Tests]* -[xunit.*]*"" -excludebyfile:""* \Common\src\System\SR.*"" -nodefaultfilters -excludebyattribute:*.ExcludeFromCodeCoverage* -skipautoprops -hideskipped:All -threshold:1 -returntargetcode -reg ister:user -target:CoreRun.exe -output:c:\Users\stoub\Source\repos\corefx\bin/tests/coverage\System.Linq.Parallel.Tests.coverage.xml -targetargs:""xunit.conso le.netcore.exe System.Linq.Parallel.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=OuterLoop -notrait category=failing -notrait c ategory=nonwindowstests "" Executing: c:\Users\stoub\Source\repos\corefx\bin\tests\AnyOS.AnyCPU.Debug\System.Linq.Parallel.Tests\netcoreapp1.0\CoreRun.exe xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Linq.Parallel.Tests Discovered: System.Linq.Parallel.Tests Starting: System.Linq.Parallel.Tests Finished: System.Linq.Parallel.Tests === TEST EXECUTION SUMMARY === System.Linq.Parallel.Tests Total: 21007, Errors: 0, Failed: 0, Skipped: 0, Time: 9.131s Committing... No results, this could be for a number of reasons. The most common reasons are: 1) missing PDBs for the assemblies that match the filter please review the output file and refer to the Usage guide (Usage.rtf) about filters. 2) the profiler may not be registered correctly, please refer to the Usage guide and the -register switch. Finished running tests. End time= 9:37:31.92, Exit code = 0 Loading report 'c:\Users\stoub\Source\repos\corefx\bin\tests\coverage\System.Linq.Parallel.Tests.coverage.xml' Preprocessing report Initiating parser for OpenCover Initializing report builders for report types: Html, Badges Analyzing 0 classes Creating summary Report generation took 0.2 seconds c:\Users\stoub\Source\repos\corefx\src\System.Linq.Parallel\tests> ``` Note the ""No results"" part. The RunTests.cmd shows that the .dll is being copied but not the .pdb: ``` call :copyandcheck ""%PACKAGE_DIR%\c:\Users\stoub\Source\repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Linq.Parallel\System.Linq.Parallel.dll"" ""%EXECUTION_DIR%\System.Linq.Parallel.dll"" || exit /b -1 ``` If I manually copy over the .pdb to the execution directory, then it works. " +9624 area-System.Net Fix logic with setting response body receive timeout Due to code moving around with PR #8996, the `state.RequestHandle` was already null when trying to set the receive timeout for the response body. This generated an exception which was caught internally. This fix moves the setting of the receive timeout so that it has a valid `state.RequestHandle` to use. Fixes #9578 +9626 area-System.Console ARM64: System.Console.Tests ``` WindowAndCursorProps.SetWindowSize [FAIL] System.ArgumentOutOfRangeException : The new console window size would force the console buffer size to be too large. Parameter name: width Actual value was 241. Stack Trace: at System.ConsolePal.SetWindowSize(Int32 width, Int32 height) at System.Console.set_WindowWidth(Int32 value) at WindowAndCursorProps.SetWindowSize() Finished: System.Console.Tests === TEST EXECUTION SUMMARY === System.Console.Tests Total: 75, Errors: 0, Failed: 1, Skipped: 0, Time: 15.235s Finished running tests. End time= 8:33:55.37, Exit code = 1 ``` +9627 area-System.Data ARM64: System.Data.SqlClient.Tests ``` System.Data.SqlClient.Tests.SqlErrorCollectionTest.Indexer_Success [FAIL] System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. ---- System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. -------- System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B (COR_E_BADIMAGEFORMAT)) Stack Trace: at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.Tests.SqlErrorCollectionTest.Indexer_Success() at System.Data.SqlClient.SqlConnection.Open() at System.Data.SqlClient.Tests.ExceptionTest.GenerateConnectionException(String connectionString) at System.Data.SqlClient.Tests.ExceptionTest.<>c__DisplayClass5_0.b__0() ----- Inner Stack Trace ----- at System.Data.SqlClient.TdsParser..cctor() ----- Inner Stack Trace ----- at System.Data.SqlClient.SNINativeMethodWrapper.SNIInitialize(IntPtr pmo) at System.Data.SqlClient.SNILoadHandle..ctor() at System.Data.SqlClient.SNILoadHandle..cctor() System.Data.SqlClient.Tests.ExceptionTest.ExceptionTests [FAIL] System.Data.SqlClient.Tests.ExceptionTest.IndependentConnectionExceptionTestOpenConnection [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.CopyTo_NonGeneric_Success [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.CopyTo_Throws [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.IsSynchronized_Success [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.SyncRoot_Success [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.CopyTo_Success [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.CopyTo_NonGeneric_Throws [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.GetEnumerator_Success [FAIL] System.Data.SqlClient.Tests.SqlErrorCollectionTest.Indexer_Throws [FAIL] ... Finished: System.Data.SqlClient.Tests === TEST EXECUTION SUMMARY === System.Data.SqlClient.Tests Total: 82, Errors: 0, Failed: 11, Skipped: 0, Time: 8.406s ``` +9628 area-System.Diagnostics ARM64: System.Diagnostics.Process.Tests ``` System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Couldn't get process information from performance counter. -------- System.InvalidOperationException : Cannot load Counter Name data because an invalid index '' was read from the registry. Stack Trace: at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.NtProcessManager.GetProcessIds(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessIds(String machineName) at System.Diagnostics.Process.GetProcessById(Int32 processId, String machineName) at System.Diagnostics.Tests.ProcessTests.d__39.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ----- Inner Stack Trace ----- at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) ----- Inner Stack Trace ----- at System.Diagnostics.PerformanceCounterLib.GetStringTable(Boolean isHelp) at System.Diagnostics.PerformanceCounterLib.get_NameTable() at System.Diagnostics.PerformanceCounterLib.GetCounterName(Int32 index) at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library, Int32 processIndex, Int32 threadIndex, Byte[] data) at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) Finished: System.Diagnostics.Process.Tests === TEST EXECUTION SUMMARY === System.Diagnostics.Process.Tests Total: 88, Errors: 0, Failed: 1, Skipped: 0, Time: 42.874s ``` +9629 area-System.IO ARM64: System.IO.Compression.ZipFile.Tests ``` System.IO.Compression.Tests.ZipTest.InvalidDates [FAIL] System.IO.Compression.ZLibException : The underlying compression routine could not be loaded correctly. ---- System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B (COR_E_BADIMAGEFORMAT)) Stack Trace: at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater..ctor(CompressionLevel compressionLevel, Int32 windowBits) at System.IO.Compression.DeflateStream.InitializeDeflater(Stream stream, Boolean leaveOpen, Int32 windowBits, CompressionLevel compressionLevel) at System.IO.Compression.DeflateStream..ctor(Stream stream, CompressionMode mode, Boolean leaveOpen, Int32 windowBits) at System.IO.Compression.ZipArchiveEntry.GetDataCompressor(Stream backingStream, Boolean leaveBackingStreamOpen, EventHandler onClose) at System.IO.Compression.ZipArchiveEntry.OpenInWriteMode() at System.IO.Compression.ZipArchiveEntry.Open() at System.IO.Compression.ZipFileExtensions.DoCreateEntryFromFile(ZipArchive destination, String sourceFileName, String entryName, Nullable`1 compressionLevel) at System.IO.Compression.Tests.ZipTest.InvalidDates() ----- Inner Stack Trace ----- at Interop.zlib.deflateInit2_(Byte* stream, Int32 level, Int32 method, Int32 windowBits, Int32 memLevel, Int32 strategy, Byte* version, Int32 stream_size) at Interop.zlib.DeflateInit2_(ZStream& stream, CompressionLevel level, CompressionMethod method, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.ZLibNative.ZLibStreamHandle.DeflateInit2_(CompressionLevel level, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) System.IO.Compression.Tests.ZipTest.CreateEntryFromFileTest(withCompressionLevel: True) [FAIL] System.IO.Compression.Tests.ZipTest.CreateEntryFromFileTest(withCompressionLevel: False) [FAIL] System.IO.Compression.Tests.ZipTest.FilesOutsideDirectory [FAIL] System.IO.Compression.Tests.ZipTest.DirectoryEntryWithData [FAIL] System.IO.Compression.Tests.ZipTest.CreateFromDirectoryNormal [FAIL] System.IO.Compression.Tests.ZipTest.ReadStreamOps [FAIL] System.IO.Compression.Tests.ZipTest.UpdateAddFile [FAIL] System.IO.Compression.Tests.ZipTest.ExtractToDirectoryNormal [FAIL] System.IO.Compression.Tests.ZipTest.UpdateReadTwice [FAIL] System.IO.Compression.Tests.ZipTest.UnsupportedCompression [FAIL] System.IO.Compression.Tests.ZipTest.ExtractToDirectoryTest [FAIL] === TEST EXECUTION SUMMARY === System.IO.Compression.ZipFile.Tests Total: 24, Errors: 0, Failed: 12, Skipped: 0, Time: 11.467s ``` +9630 area-System.IO ARM64: System.IO.Packaging.Tests ``` System.IO.Packaging.Tests.Tests.T168_InvalidRelationshipId [FAIL] System.IO.Compression.ZLibException : The underlying compression routine could not be loaded correctly. ---- System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B (COR_E_BADIMAGEFORMAT)) Stack Trace: at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater..ctor(CompressionLevel compressionLevel, Int32 windowBits) at System.IO.Compression.DeflateStream.InitializeDeflater(Stream stream, Boolean leaveOpen, Int32 windowBits, CompressionLevel compressionLevel) at System.IO.Compression.DeflateStream..ctor(Stream stream, CompressionLevel compressionLevel, Boolean leaveOpen, Int32 windowBits) at System.IO.Compression.ZipArchiveEntry.GetDataCompressor(Stream backingStream, Boolean leaveBackingStreamOpen, EventHandler onClose) at System.IO.Compression.ZipArchiveEntry.WriteLocalFileHeaderAndDataIfNeeded() at System.IO.Compression.ZipArchive.WriteFile() at System.IO.Compression.ZipArchive.Dispose(Boolean disposing) at System.IO.Packaging.ZipPackage.Dispose(Boolean disposing) at System.IO.Packaging.Package.System.IDisposable.Dispose() at System.IO.Packaging.Tests.Tests.T168_InvalidRelationshipId() ----- Inner Stack Trace ----- at Interop.zlib.deflateInit2_(Byte* stream, Int32 level, Int32 method, Int32 windowBits, Int32 memLevel, Int32 strategy, Byte* version, Int32 stream_size) at Interop.zlib.DeflateInit2_(ZStream& stream, CompressionLevel level, CompressionMethod method, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.ZLibNative.ZLibStreamHandle.DeflateInit2_(CompressionLevel level, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) ... === TEST EXECUTION SUMMARY === System.IO.Packaging.Tests Total: 131, Errors: 0, Failed: 112, Skipped: 0, Time: 26.291s ``` +9631 area-System.Linq ARM64: System.Linq.Expressions.Tests ``` System.Linq.Expressions.Tests.BinaryModuloTests.CheckLongModuloTest(useInterpreter: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: -1 Stack Trace: at System.Linq.Expressions.Tests.BinaryModuloTests.VerifyLongModulo(Int64 a, Int64 b, Boolean useInterpreter) at System.Linq.Expressions.Tests.BinaryModuloTests.CheckLongModuloTest(Boolean useInterpreter) System.Linq.Expressions.Tests.BinaryModuloTests.CheckUShortModuloTest(useInterpreter: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 65535 Stack Trace: at System.Linq.Expressions.Tests.BinaryModuloTests.VerifyUShortModulo(UInt16 a, UInt16 b, Boolean useInterpreter) at System.Linq.Expressions.Tests.BinaryModuloTests.CheckUShortModuloTest(Boolean useInterpreter) System.Linq.Expressions.Tests.BinaryModuloTests.CheckULongModuloTest(useInterpreter: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 18446744073709551615 Stack Trace: at System.Linq.Expressions.Tests.BinaryModuloTests.VerifyULongModulo(UInt64 a, UInt64 b, Boolean useInterpreter) at System.Linq.Expressions.Tests.BinaryModuloTests.CheckULongModuloTest(Boolean useInterpreter) System.Linq.Expressions.Tests.BinaryModuloTests.CheckUIntModuloTest(useInterpreter: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 4294967295 Stack Trace: at System.Linq.Expressions.Tests.BinaryModuloTests.VerifyUIntModulo(UInt32 a, UInt32 b, Boolean useInterpreter) at System.Linq.Expressions.Tests.BinaryModuloTests.CheckUIntModuloTest(Boolean useInterpreter) System.Linq.Expressions.Tests.BinaryModuloTests.CheckShortModuloTest(useInterpreter: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: -1 Stack Trace: at System.Linq.Expressions.Tests.BinaryModuloTests.VerifyShortModulo(Int16 a, Int16 b, Boolean useInterpreter) at System.Linq.Expressions.Tests.BinaryModuloTests.CheckShortModuloTest(Boolean useInterpreter) System.Linq.Expressions.Tests.OpAssign.AssignmentEquivalentsWithIndexAccess(nonAssign: System.Linq.Expressions.BinaryExpression Modulo(System.Linq.Expressions.Expression, System.Linq.Expressions.Expression), assign: System.Linq.Expressions.BinaryExpression ModuloAssign(System.Linq.Expressions.Expression, System.Linq.Expressions.Expression), type: typeof(int), useInterpreter: False) [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Linq.Expressions.Tests.OpAssign.AssignmentEquivalentsWithIndexAccess(MethodInfo nonAssign, MethodInfo assign, Type type, Boolean useInterpreter) System.Linq.Expressions.Tests.OpAssign.AssignmentEquivalentsWithMemberAccess(nonAssign: System.Linq.Expressions.BinaryExpression Modulo(System.Linq.Expressions.Expression, System.Linq.Expressions.Expression), assign: System.Linq.Expressions.BinaryExpression ModuloAssign(System.Linq.Expressions.Expression, System.Linq.Expressions.Expression), type: typeof(int), useInterpreter: False) [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Linq.Expressions.Tests.OpAssign.AssignmentEquivalentsWithMemberAccess(MethodInfo nonAssign, MethodInfo assign, Type type, Boolean useInterpreter) Finished: System.Linq.Expressions.Tests === TEST EXECUTION SUMMARY === System.Linq.Expressions.Tests Total: 25919, Errors: 0, Failed: 7, Skipped: 5, Time: 813.119s ``` +9632 area-System.IO ARM64: System.IO.Compression.Tests ``` System.IO.Compression.Tests.DeflateStreamTests.DoubleDispose [FAIL] System.IO.Compression.ZLibException : The underlying compression routine could not be loaded correctly. ---- System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B (COR_E_BADIMAGEFORMAT)) Stack Trace: at System.IO.Compression.Deflater.DeflateInit(CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.Deflater..ctor(CompressionLevel compressionLevel, Int32 windowBits) at System.IO.Compression.DeflateStream.InitializeDeflater(Stream stream, Boolean leaveOpen, Int32 windowBits, CompressionLevel compressionLevel) at System.IO.Compression.DeflateStream..ctor(Stream stream, CompressionMode mode, Boolean leaveOpen, Int32 windowBits) at System.IO.Compression.Tests.DeflateStreamTests.DoubleDispose() ----- Inner Stack Trace ----- at Interop.zlib.deflateInit2_(Byte* stream, Int32 level, Int32 method, Int32 windowBits, Int32 memLevel, Int32 strategy, Byte* version, Int32 stream_size) at Interop.zlib.DeflateInit2_(ZStream& stream, CompressionLevel level, CompressionMethod method, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) at System.IO.Compression.ZLibNative.ZLibStreamHandle.DeflateInit2_(CompressionLevel level, Int32 windowBits, Int32 memLevel, CompressionStrategy strategy) ... === TEST EXECUTION SUMMARY === System.IO.Compression.Tests Total: 151, Errors: 0, Failed: 112, Skipped: 0, Time: 24.877s ``` +9634 area-System.IO ARM64: System.IO.FileSystem.Tests fail ``` You do not have sufficient privilege to perform this operation. Discovered: System.IO.FileSystem.Tests Starting: System.IO.FileSystem.Tests ... System.IO.Tests.Directory_EnumFiles_str_str.WindowsSearchPatternInvalid [FAIL] Assert.Throws() Failure Expected: typeof(System.IO.IOException) Actual: (No exception was thrown) Stack Trace: at System.IO.Tests.Directory_GetFileSystemEntries_str_str.WindowsSearchPatternInvalid() ... System.IO.Tests.File_Create_str_i_fo.CreateCurrentDirectory [FAIL] Assert.Throws() Failure Expected: typeof(System.UnauthorizedAccessException) Actual: typeof(System.IO.IOException): The process cannot access the file 'E:\Github\corefx\bin\tests\Windows_NT.AnyCPU.Release\System.IO.FileSystem.Tests\netcoreapp1.0' because it is being used by another process. Stack Trace: at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.Tests.File_Create_str_i_fo.Create(String path) at System.IO.Tests.File_Create_str.b__4_0() ... System.IO.Tests.Directory_CreateDirectory.PathWithReservedDeviceNameAsExtendedPath [FAIL] Assert.All() Failure: 22 out of 22 items in the collection did not pass. [21]: System.UnauthorizedAccessException: Access to the path '\\?\E:\Github\corefx\bin\tests\Windows_NT.AnyCPU.Release\System.IO.FileSystem.Tests\netcoreapp1.0\ei4v2v0y.ww1\LPT9' is denied. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Directory.CreateDirectory(String path) at System.IO.Tests.Directory_CreateDirectory.Create(String path) at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass33_0.b__0(String path) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 act ... === TEST EXECUTION SUMMARY === System.IO.FileSystem.Tests Total: 2276, Errors: 0, Failed: 32, Skipped: 26, Time: 3924.654s ``` +9641 area-System.Security Add System.Security.Permissions.PrincipalPermission "We see this being used in apps. It does have effect in Desktop in the default configuration (unlike CAS). We could reasonably implement it cross platform. So we should add it. ``` class Program { static void Main() { new System.Security.Permissions.PrincipalPermission(""foo"", ""bar"").Demand(); } } Unhandled Exception: System.Security.SecurityException: Request for principal permission failed. at System.Security.Permissions.PrincipalPermission.ThrowSecurityException() at System.Security.Permissions.PrincipalPermission.Demand() at Program.Main() in C:\Users\stoub\Documents\Visual Studio 2015\Projects\ConsoleApplication27\ConsoleApplication27\Program.cs:line 5 ``` " +9643 area-System.Globalization Compat work for Globalization Most interesting from usage point of view are: ``` M:System.Globalization.TextInfo.get_OEMCodePage M:System.Globalization.CultureInfo.CreateSpecificCulture(System.String) M:System.Globalization.TextInfo.ToTitleCase(System.String) M:System.Globalization.CultureInfo.GetCultureInfo(System.String) M:System.Globalization.CultureInfo.get_InstalledUICulture M:System.Globalization.CultureInfo.#ctor(System.String,System.Boolean) M:System.Globalization.CompareInfo.GetSortKey(System.String) ``` Fuller list, including many with little usage in our corpora: ``` types removed T:System.Globalization.CalendarAlgorithmType T:System.Globalization.CultureTypes T:System.Globalization.DaylightTime T:System.Globalization.DigitShapes T:System.Globalization.SortKey T:System.Globalization.SortVersion ``` ``` types with changes to members System.Globalization.Calendar System.Globalization.CalendarAlgorithmType System.Globalization.CharUnicodeInfo System.Globalization.ChineseLunisolarCalendar System.Globalization.CompareInfo System.Globalization.CultureInfo System.Globalization.CultureNotFoundException System.Globalization.CultureTypes System.Globalization.DateTimeFormatInfo System.Globalization.DaylightTime System.Globalization.DigitShapes System.Globalization.EastAsianLunisolarCalendar System.Globalization.GregorianCalendar System.Globalization.HebrewCalendar System.Globalization.HijriCalendar System.Globalization.JapaneseCalendar System.Globalization.JapaneseLunisolarCalendar System.Globalization.JulianCalendar System.Globalization.KoreanCalendar System.Globalization.KoreanLunisolarCalendar System.Globalization.NumberFormatInfo System.Globalization.PersianCalendar System.Globalization.RegionInfo System.Globalization.SortKey System.Globalization.SortVersion System.Globalization.StringInfo System.Globalization.TaiwanCalendar System.Globalization.TaiwanLunisolarCalendar System.Globalization.TextInfo System.Globalization.ThaiBuddhistCalendar System.Globalization.UmAlQuraCalendar ``` +9644 area-System.Net HttpClient stripping Content-Length header after redirect on non-Windows systems "Scenario: 1) Client sends PATCH to server with some content. 2) Server sends 401 response. 3) Client add a new auth-header then re-sends PATCH to server with same content sent before. Example: Client: ``` PATCH /_apis/distributedtask/pools/1/jobrequests/34?lockToken=00000000-0000-0000-0000-000000000000 HTTP/1.1 Host: ting.tfsbuildhost3.tfsallin.net Accept-Encoding: gzip Content-Type: application/json; charset=utf-8; api-version=3.0-preview.1 Accept: application/json; api-version=3.0-preview.1 User-Agent: VSServices/15.255.65000.0 (NetStandard) VstsAgentCore-osx.10.11-x64/2.102.0 (Darwin 15.0.0 Darwin Kernel Version 15.0.0: Wed Aug 26 16:57:32 PDT 2015; root:xnu-3247.1.106~1/RELEASE_X86_64) Accept-Language: en-US X-TFS-FedAuthRedirect: Suppress X-TFS-Session: a458e637-3514-4103-9713-61bb2b32140f Content-Length: 16 Expect: 100-continue {""requestId"":34} <------ this is the content object ``` Server: ``` HTTP/1.1 401 Unauthorized Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.5 X-TFS-ProcessId: 8ec18195-7fd1-4116-8397-3b6fd8a2cdd6 Strict-Transport-Security: max-age=31536000; includeSubDomains Access-Control-Allow-Origin: * Access-Control-Max-Age: 3600 Access-Control-Allow-Methods: OPTIONS,GET,POST,PATCH,PUT,DELETE Access-Control-Expose-Headers: ActivityId,X-TFS-Session,X-MS-ContinuationToken Access-Control-Allow-Headers: authorization X-FRAME-OPTIONS: SAMEORIGIN X-TFS-FedAuthRealm: https://app.tfsbuildhost3.tfsallin.net/ X-TFS-FedAuthIssuer: https://tfstest.accesscontrol.windows.net/v2/wsfederation X-VSS-ResourceTenant: 00000000-0000-0000-0000-000000000000 X-TFS-SoapException: %3c%3fxml+version%3d%221.0%22+encoding%3d%22utf-8%22%3f%3e%3csoap%3aEnvelope+xmlns%3asoap%3d%22http%3a%2f%2fwww.w3.org%2f2003%2f05%2fsoap-envelope%22%3e%3csoap%3aBody%3e%3csoap%3aFault%3e%3csoap%3aCode%3e%3csoap%3aValue%3esoap%3aReceiver%3c%2fsoap%3aValue%3e%3csoap%3aSubcode%3e%3csoap%3aValue%3eUnauthorizedRequestException%3c%2fsoap%3aValue%3e%3c%2fsoap%3aSubcode%3e%3c%2fsoap%3aCode%3e%3csoap%3aReason%3e%3csoap%3aText+xml%3alang%3d%22en%22%3eTF400813%3a+Resource+not+available+for+anonymous+access.+Client+authentication+required.%3c%2fsoap%3aText%3e%3c%2fsoap%3aReason%3e%3c%2fsoap%3aFault%3e%3c%2fsoap%3aBody%3e%3c%2fsoap%3aEnvelope%3e X-TFS-ServiceError: TF400813%3a+Resource+not+available+for+anonymous+access.+Client+authentication+required. WWW-Authenticate: TFS-Federated X-TFS-FedAuthRedirect: https://app.tfsbuildhost3sps.tfsallin.net/_signin?realm=ting.tfsbuildhost3.tfsallin.net&reply_to=https%3A%2F%2Fting.tfsbuildhost3.tfsallin.net%2F_apis%2Fdistributedtask%2Fpools%2F1%2Fjobrequests%2F34%3FlockToken%3D00000000-0000-0000-0000-000000000000&redirect=1&context=eyJodCI6MiwiaGlkIjoiNDk2YThiNTgtZmFjZi00NDAzLWJkZWQtZjBiMDU5ZDBhMGY2IiwicXMiOnt9LCJyciI6Imh0dHBzOi8vYXBwLnRmc2J1aWxkaG9zdDNzcHMudGZzYWxsaW4ubmV0LyIsInZoIjoiMTluSVNfZ0VfSU9Hb2NqeGg2NEViZ21rSTBKQzBoY1N2R0pWblpVMVc4YzEiLCJjdiI6IiIsImNzIjoiIn01#ctx=eyJTaWduSW5Db29raWVEb21haW5zIjpbImh0dHBzOi8vbG9naW4ud2luZG93cy1wcGUubmV0IiwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tIl190 WWW-Authenticate: Basic realm=""https://app.tfsbuildhost3.tfsallin.net/"" X-VSS-S2STargetService: 00000002-0000-8888-8000-000000000000/visualstudio.com WWW-Authenticate: Bearer X-Powered-By: ASP.NET P3P: CP=""CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT"" X-Content-Type-Options: nosniff Date: Thu, 23 Jun 2016 18:49:42 GMT Content-Length: 9867 ... ``` Client: ``` PATCH /_apis/distributedtask/pools/1/jobrequests/34?lockToken=00000000-0000-0000-0000-000000000000 HTTP/1.1 Host: ting.tfsbuildhost3.tfsallin.net Accept-Encoding: gzip Content-Type: application/json; charset=utf-8; api-version=3.0-preview.1 Accept: application/json; api-version=3.0-preview.1 User-Agent: VSServices/15.255.65000.0 (NetStandard) VstsAgentCore-osx.10.11-x64/2.102.0 (Darwin 15.0.0 Darwin Kernel Version 15.0.0: Wed Aug 26 16:57:32 PDT 2015; root:xnu-3247.1.106~1/RELEASE_X86_64) Accept-Language: en-US X-TFS-FedAuthRedirect: Suppress X-TFS-Session: a458e637-3514-4103-9713-61bb2b32140f X-VSS-UserData: Authorization: Bearer <-- since we got 401 from server, we add an auth header. eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InotVUk5MW1ZR2cyRE9oVC1kSUw4a3JGX1o3RSJ9.eyJuYW1laWQiOiJlNzViYzIxYi1hNDc0LTQzM2QtOTM5OS04Y2UzYTkyZWY1MjUiLCJzY3AiOiJ2c28uYWdlbnRwb29sc19saXN0ZW4iLCJpc3MiOiJhcHAudGZzYnVpbGRob3N0M3Nwcy50ZnNhbGxpbi5uZXQiLCJhdWQiOiJhcHAudGZzYnVpbGRob3N0M3Nwcy50ZnNhbGxpbi5uZXR8dnNvOjQ5NmE4YjU4LWZhY2YtNDQwMy1iZGVkLWYwYjA1OWQwYTBmNiIsIm5iZiI6MTQ2NjcwNzc4MywiZXhwIjoxNDY2NzExMzgzfQ.bImbtAmuTlGAVtyogb4sb5yO2AODMEpPa7sQFcyUPCxgZBD99qXEzNefSdJeup_4HT5T-SiUlZy6hUSEDf6SxKrpJhj8boRSLshwP8QYbjo_lSH-hV_NsnVHMLlGN8LE9dXV6y9PCLXuv3P8GI3S_H8OkEDqy_mE4PgcM4Nl5qUudw2zObfXQwKIXrt2M1fb1dnv5_qZTZxmiPDzG6UQrgSLcY-qtlO_fSpKqoQEpaDismFKgSBSJprHjGqalGSa3Pz9NoPJWd6gO_XyT4u5NLNwx0Kfk3HxGg6yaSCCONGuPu7oSy9qXbtrfKHAvb2UAwAzm1NeqHJQaoRVsV7aHA Transfer-Encoding: chunked <----- Content-Length is missing here, as a result, server will get null for the patch object -----> Expect: 100-continue {""requestId"":34} ``` The problem only repros on Linux or OSX, windows client works fine, seems like opposite situation to #7440 " +9650 area-System.Globalization String.Normalize() throws SEHException on Windows Server 2016 TP5 "# Repro Steps 1. Install CLI 1.0.0-preview2-003121 2. `dotnet new& dotnet restore& dotnet run` 3. Edit `Program.cs`, and change the code to `Console.WriteLine(""Hello World!"".Normalize());` 4. `dotnet run` # Expected Prints `Hello World!` # Actual On Windows Server 2012 R2, it works fine. On Windows Server 2016 TP5, it fails with the following exception: ``` Unhandled Exception: System.Runtime.InteropServices.SEHException: External component has thrown an exception. at Interop.mincore.NormalizeString(Int32 normForm, String source, Int32 sourceLength, Char[] destenation, Int32 destenationLength) at System.StringNormalizationExtensions.Normalize(String strInput, NormalizationForm normalizationForm) at System.StringNormalizationExtensions.Normalize(String strInput) at ConsoleApplication.Program.Main(String[] args) ``` I'm not sure if this is a bug in CoreFx or Windows Server 2016 TP5. " +9651 area-System.Globalization Typo in parameter names for method Interop.mincore.NormalizeString() There is a typo in the parameter names for method `Interop.mincore.NormalizeString()`. The parameters use the word `destenation` instead of `destination`. https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/Common/src/Interop/Windows/mincore/Interop.Normalization.cs#L37-L38 +9652 area-System.Net Consider options for supporting Socket.DontFragment on Unix sockets Right now, setting `Socket.DontFragment` outside of windows results in an exception being thrown. We do not have a mapping for this option in `Interop.Sys.SetSockOpt`. It would be nice for this to work, especially if we can get the same behavior as Windows. It looks like there are a couple of options. Supposedly, there exists `IP_DONTFRAG` on some systems (https://www.ibm.com/support/knowledgecenter/ssw_i5_54/apis/ssocko.htm). I'm not sure if any of the systems we support actually have this. Ubuntu/CentOS don't seem to. There is another option, `IP_MTU_DISCOVER` (http://man7.org/linux/man-pages/man7/ip.7.html), which seems to control what we want: ``` Set or receive the Path MTU Discovery setting for a socket. When enabled, Linux will perform Path MTU Discovery as defined in RFC 1191 on SOCK_STREAM sockets. For non-SOCK_STREAM sockets, IP_PMTUDISC_DO forces the don't-fragment flag to be set on all outgoing packets. ``` I'm not familiar with the difference between SOCK_STREAM and non-SOCK_STREAM sockets is, or which we use in our implementation. If we use non-SOCK_STREAM sockets, this seems like a good option. For reference, it looks like [mono](https://github.com/mono/mono/blob/91734968b83a0971c041254286cdc903b26564e2/mono/metadata/socket-io.c#L445) uses `IP_DONTFRAGMENT` or `IP_MTU_DISCOVER`, based on which is available. Presumably, `IP_DONTFRAGMENT` is only available on Windows. If we use `IP_MTU_DISCOVER`, we need to set the value to `IP_PMTUDISC_DO`, according to the above manpage. @ericeil , @pgavlin +9657 area-System.IO Add support for 7z/LZMA1/LZMA2 to System.IO.Compression http://7-zip.org/sdk.html +9664 area-System.Globalization Missing creation of StringComparer for other languages "I'm trying to retarget a portable C# library for .Net core 1.0. I used to do something like this to get a string comparer for a different language, once I obtained a CultureInfo object for the language (via a delegate set by the caller): IComparer comparer = (IComparer)StringComparer.Create(cultureInfo, caseInsensitive); .Net Core currently seems to only support it for the current culture via properties like StringComparer.CurrentCulture. Is there a way to get a string comparer for a given language or culture? This is important for an app that uses multiple languages simultaneously, such as an app for language-learning. From a StackOverflow post I made (http://stackoverflow.com/questions/37801425/how-to-create-stringcomparer-for-different-languages-in-net-core?s=1|2.5892) I got this: ""So, you could set Thread.CurrentThread.CurrentCulture to the desired culture, then grab the StringComparer for that culture using StringComparer.CurrentCulture, then set the Thread.CurrentThread.CurrentCulture to the next desired culture, then grab another StringComparer ... etc."" But it seems it could be better. If it's going to be different from the old .Net, how about something even simpler like: public static StringComparer Create(string languageCode) where language code is a language code such as ""en"" or ""en-us"". Thanks. -John " +9665 area-System.Net Fix HttpRequestMessage reuse handling in HttpClientHandler on Unix HttpRequestMessages are meant to be used for a single request. However, that checking is done by HttpClient rather than by HttpClientHandler. As a result, if code bypasses HttpClient, e.g. by using HttpMessageInvoker or by using a custom HttpMessageHandler sitting between the HttpClient and the HttpClientHandler, the same HttpRequestMessage can be used multiple times without an exception being thrown warning of the invalid usage. And on Windows, things happen to work, but with our Unix implementation was never expecting this scenario and doesn't work well with it: - The handler is explicitly disposing of the request content stream rather than leaving that up to the request content's disposal to handle. - The handler is removing the Content-Length header from the request message content, as a simple way to avoid overriding the Content-Length header that libcurl itself may send based on previous configuration. - The handler is using ReadAsStreamAsync to get the request stream to send, but ReadAsStreamAsync caches the returned stream, so if the same request message is reused with the same Content, the stream will have already advanced to the end of the stream, and when the message gets reused, we won't have content to send. This commit fixes that: - We now don't dispose the request content stream. That'll be left up to the request content's disposal. - We now don't remove the ContentLength header from the request message. We instead just check as we're writing out the headers whether the header is Content-Length, skipping it if it is. - We now store the original position of a seekable stream that's provided to us, and at the end of the request, rather than disposing of the stream, we rewind to the original position if it exists. (If the stream isn't seekable, reusing the request message wouldn't be possible anyway.) This last point also fixes another theoretical issue. When libcurl wants to go back to the beginning of the stream (e.g. in a redirect scenario where it needs to rewind), it asks us to seek back to the beginning. We're currently seeking back to the exact position asked for. But the stream may have come in to us already advanced beyond 0, in which case we need to seek back to the requested offset plus that original position rather than just the requested offset. And in doing this, I noticed that we were inadvertently allowing a set of closure/delegate allocations due to inadvertently using some captured state in a place where we were trying to avoid that. I fixed that as well. We were also marking everything complete before we'd cleaned up all resources, which meant that any failures from such cleanup would go unnoticed. I've fixed that to ensure we clean up all state before we officially declare the async operation done. Fixes #9644 cc: @ericeil, @davidsh +9669 area-System.Diagnostics Trace uses the string DEFAULT_APPNAME unconditionally in logged messages "This looks like a temporary workaround that was never fully resolved, and got lost in an old bug tracker. https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceInternal.cs#L52 ``` CSharp // This needs to be updated once we have the correct property implemented in the Environment class. // Bug:895000 is tracking this. s_appName = ""DEFAULT_APPNAME""; ``` Desktop uses the code below, which may not be a good idea in today's world where the first command-line arg is often the CLR host. ``` CSharp appName = Path.GetFileName(Environment.GetCommandLineArgs()[0]); ``` I propose we use `Assembly.GetEntryAssembly()`, but it would require us to bump the support up to `netstandard1.5`: ``` CSharp s_appName = Assembly.GetEntryAssembly().GetName().Name; ``` " +9670 area-System.Diagnostics Line number is incorrect in the stack trace of the exception thrown in middleware on x64 machines "I have created a repro for this issue at https://github.com/JunTaoLuo/TestHost/tree/johluo/stack-trace-zip for incorrect line numbers in the stack trace of exceptions thrown. Run the sample at `/samples/TestMiddlewareSample` with `dotnet run` after restoring packages. Then navigate to `http://localhost:5000/MiddlewareException` to trigger an exception at https://github.com/JunTaoLuo/TestHost/blob/johluo/stack-trace-zip/src/TestMiddleware/TestMiddleware.cs#L24. In the console of a x64 machine (Windows, Linux and Mac), however, I see the following stack trace report that the exception is thrown on line 27 instead: ``` == Test Middleware == Request Path: /MiddlewareException fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HKSSBS4L43JJ"": An unhandled exception was thrown by the application. System.Exception: Middleware Exception at TestHost.TestMiddleware.d__2.MoveNext() in C:\gh\tp\TestHost\src\TestMiddleware\TestMiddleware.cs:line 27 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() ``` The incorrect line number doesn't affect all exceptions though. In the repro, navigating to `http://localhost:5000` will trigger an exception at https://github.com/JunTaoLuo/TestHost/blob/johluo/stack-trace-zip/sample/TestMiddlewareSample/Startup.cs#L16. This exception is reported correctly: ``` == Test Middleware == Request Path: / fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HKSSBS4L43JJ"": An unhandled exception was thrown by the application. System.Exception: Application Exception at TestHost.Sample.Startup.<>c.b__0_0(HttpContext context) in C:\gh\tp\TestHost\sample\TestMiddlewareSample\Startup.cs:line 16 at TestHost.TestMiddleware.d__2.MoveNext() in C:\gh\tp\TestHost\src\TestMiddleware\TestMiddleware.cs:line 27 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() ``` I also see that this problem seems to only affect x64 machines. On a Windows x86 machine I see that the exceptions contain the correct line numbers: ``` == Test Middleware == Request Path: / fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HKSSB81Q7FVP"": An unhandled exception was thrown by the application. System.Exception: Application Exception at TestHost.Sample.Startup.<>c.b__0_0(HttpContext context) in C:\gh\tp\TestHost\sample\TestMiddlewareSample\Startup.cs:line 16 at TestHost.TestMiddleware.d__2.MoveNext() in C:\gh\tp\TestHost\src\TestMiddleware\TestMiddleware.cs:line 27 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() == Test Middleware == Request Path: /MiddlewareException fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HKSSB81Q7FVP"": An unhandled exception was thrown by the application. System.Exception: Middleware Exception at TestHost.TestMiddleware.d__2.MoveNext() in C:\gh\tp\TestHost\src\TestMiddleware\TestMiddleware.cs:line 24 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() C:\gh\tp\TestHost\sample\TestMiddlewareSamplePS> ``` I have attached the zip files of the repro project and its build outputs (`.dll`s, `.pdb`s, ...) in the root of the repro as `.zip` files. cc @pakrym @davidfowl " +9672 area-System.Net HttpClientHandler on Linux/OSX doesn't correctly implement Digest authentication "When making a request to a server requiring Digest authentication, the username is incorrectly specified as `realm\\username` in the challenge response. WCF has an implementation of the digest authentication algorithm in our tests which the following is from. The details of the authentication handshake that we're seeing uses the following credential information. ``` Username: be70abb0 Password: c84613c28bee44e5 Realm: bfd3c ``` A request is first made to the server with no authorization header. The server responds with a 401 Access Denied response and provides the following response header, `WWWAuthenticate: Digest realm=""bfd3c"", nonce=""Ni8yNC8yMDE2IDEyOjMyOjI0IFBN"", opaque=""0000000000000000"", stale=false, algorithm=MD5, qop=""auth""` The client then sends the following response headers. `Authorization: Digest username=""bfd3c\\be70abb0"", realm=""bfd3c"", nonce=""Ni8yNC8yMDE2IDEyOjMyOjI0IFBN"", uri=""//HttpDigestNoDomain.svc/http-digest-nodomain"", cnonce=""MTliMzMyYmFlNmZiZWZiMTAwMTE2NDQ4MDAwMDFjNjc="", nc=00000001, qop=auth, response=""d632601dd17ae997ec1fd065da22cf7f"", opaque=""0000000000000000"", algorithm=""MD5""` The digest username sent is `bfd3c\\be70abb0` which is `realm\\username`. This is incorrect as the username should be sent without the realm. " +9673 area-System.IO System.IO.Compression should support *tar files Now that we have x-plat implementation it'd be great to be able to work with .tar & .tar.gz. +9675 area-System.Net NetworkInterface.GetAllNetworkInterfaces throws on UWP I’m using the “final” .NET Core bits off of the MyGet feed and ran into an issue trying to use System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(). The method throws on UWP with a NotImplementedException. ``` System.Net.NetworkInformation.dll!System.Net.NetworkInformation.NetNativeNetworkInterface.GetNetworkInterfaces() Unknown System.Net.NetworkInformation.dll!System.Net.NetworkInformation.NetworkInterfacePal.GetAllNetworkInterfaces() Unknown System.Net.NetworkInformation.dll!System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces() Unknown > Zeroconf.dll!Zeroconf.NetworkInterface.NetworkRequestAsync(byte[] requestBytes, System.TimeSpan scanTime, int retries, int retryDelayMilliseconds, System.Action onResponse, System.Threading.CancellationToken cancellationToken) Line 28 C# Zeroconf.dll!Zeroconf.ZeroconfResolver.ResolveInternal(System.Collections.Generic.IEnumerable protocols, byte[] requestBytes, System.TimeSpan scanTime, int retries, int retryDelayMilliseconds, System.Action callback, System.Threading.CancellationToken cancellationToken) Line 75 C# Zeroconf.dll!Zeroconf.ZeroconfResolver.BrowseDomainsAsync(System.TimeSpan scanTime, int retries, int retryDelayMilliseconds, System.Action callback, System.Threading.CancellationToken cancellationToken) Line 113 C# ZeroconfTest.UWP.exe!ZeroconfTest.UWP.MainPage.ResolveClick(object sender, Windows.UI.Xaml.RoutedEventArgs e) Line 25 C# ``` Why isn’t this working on UWP? The library has explicit support for netcore50 in the 4.1.0 nuget package. I would not expect arbitrary methods to simply not work. It sort of undermines trust that WYSIWYG when it comes to available surface area. +9678 area-System.Diagnostics TestUserCredentialsPropertiesOnWindows failing on Windows outer loop e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/79/consoleText/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/78/consoleText/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/76/consoleText/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/79/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/78/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/77/consoleText ``` System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows [FAIL] System.ComponentModel.Win32Exception : The user name or password is incorrect Stack Trace: D:\j\workspace\outerloop_win---65ef7d78\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(619,0): at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) D:\j\workspace\outerloop_win---65ef7d78\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(375,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows() ``` +9680 area-System.Net Add a Socket.Listen() overload "[`Socket.Listen`](https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.listen%28v=vs.110%29.aspx) requires an `int backlog` parameter. Please add an overload that chooses a good default value. 1. Almost nobody seems to know what's a good value to pass here. Nobody takes the time to test this. 2. So far I have never seen a practical case where the value mattered. 3. I'm not even sure to what extent the different operating systems use that value. I know for sure that some do not allow certain ranges of values and override. Quoting [MSDN `listen` documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/ms739168%28v=vs.85%29.aspx): > The maximum length of the queue of pending connections. If set to SOMAXCONN, the underlying service provider responsible for socket s will set the backlog to a maximum reasonable value. If set to SOMAXCONN_HINT(N) (where N is a number), the backlog value will be N, adjusted to be within the range (200, 65535). Note that SOMAXCONN_HINT can be used to set the backlog to a larger value than possible with SOMAXCONN. > SOMAXCONN_HINT is only supported by the Microsoft TCP/IP service provider. There is no standard provision to obtain the actual backlog value. I suggest this: ``` void Listen() => Listen(int.MaxValue); ``` Because this is what `TcpListener.Start()` does. Probably, every interesting OS replaces that with ""a maximum reasonable value"". `SOMAXCONN` is `int.MaxValue` anyway. This seems to trigger the dynamic backlog feature of Windows server OS'es. Note, that `TcpListener.Start(int backlog)` does different argument validation than `Socket.Listen(int backlog)` does. Might be worth investigating and unifying. But that's not what this ticket is about. Surveying what .NET internal code passes: 1. FTP uses `1` for it's active channel. Seems unsafe since a spurious connect (port scan) could kill the connection. 2. WCF uses `if (OSEnvironmentHelper.IsApplicationTargeting45) return (12 * OSEnvironmentHelper.ProcessorCount); else return 10;`. Seems like they made a mistake here and fixed it. `10` clearly is not an appropriate value for a webservice with unknown load profile. I think the new computation is not good, either. They should just pass `int.MaxValue`. I suggest marking this issue as available for community contribution. " +9688 area-System.Text Compat work for Regex As far as I can tell, after commit 4d40e9e there is nothing left to do here. We have the same surface area as Desktop/Xamarin. Please reactivate if this is not the case. +9697 area-System.Net Add Task-based async methods to Socket The Socket class is fully capable of async IO but `Task`-returning methods are missing. I find myself pulling in the same set of helper extensions each time I use async sockets. Since sockets are a primary use case for async IO I'd find this API addition extremely useful. Note, that the async methods on `NetworkStream` are not enough because we need async support for things like `Connect` as well. +9698 area-System.Net Add reliable timeouts to socket operations Socket operations do not support timeouts sufficiently in the following cases: 1. All async operations do not respect the configured timeout. 2. `Connect` cannot be made to observe a timeout. I think there is no timeout for `Accept` either but that's usually an operation that is never supposed to time out. The workarounds usually are quite nasty. For (1) people build their own (tedious and often flawed) timeouts. For (2) people often use an event plus an async IO. In case the timeout fires they close the socket. (This actually triggers [this unavoidable race condition resulting in an access violation!](https://github.com/dotnet/corefx/issues/5749#issuecomment-215597396)) Note the amount of confusion that these problems cause: https://www.google.com/webhp?complete=1&hl=en&gws_rd=cr,ssl&ei=#complete=1&hl=en&q=socket+beginreceive+timeout (I sometimes like to point to Google and Stack Overflow to show a nice sample of real-world user complaints. I have opened this ticket because I'm repeatedly facing this issue as well.) I understand that the underlying Winsock (and now Linux) APIs make some of this hard. Since these issues are so widespread I believe it's worth the work to fix this at the managed code level (by implementing the timeouts and aborts in .NET code as opposed to making the native APIs do that). As an open concern for (1) I see the question what happens to an IO that is cancelled at the managed level due to timeout or cancellation but still running at the native level. This can cause data to be discarded. The only clean way to solve this that I could find is to terminate the connection when a read or write ends up being cancelled. In my experience this matches perfectly with real world requirements. In case of a timeout usually the calling code backs out and just wants to shut everything down. To summarize the ticket: Please add timeouts to all possibly blocking socket operations. Related ticket: [Allow the user to cancel anything at will (this is needed in addition to the timeout).](https://github.com/dotnet/corefx/issues/5749). Also related: [Add Task-based async methods which should take a `CancellationToken` _and_ observe the configured timeout.](https://github.com/dotnet/corefx/issues/9697) +9699 area-System.Runtime Remove System.Runtime\src\ApiCompatBaseline.uap101aot.txt DebuggableAttribute members. Right now, these baseline entries are needed because the new members aren't present in System.Private.CoreLib, and it's logistically inefficient to address that right now. Once we have the means to port those members to .Net Native, we can get rid of these entries. +9702 area-Serialization Performance Improvments on Reflection Based Serialization The PR includes several performance optimizations on reflection based serialization (~60% improvement). Some optimizations also improved de-serialization (~20% improvement). @mconnew @roncain @zhenlan , can you please review the PR? Thanks. +9703 area-System.Runtime Delist System.Runtime.InteropServices.PInvoke package Seems like this package has been removed as the source is no longer in this repo: https://www.nuget.org/packages/System.Runtime.InteropServices.PInvoke/ +9704 area-System.IO Add support for LZ4 to System.Compression As per requested in https://github.com/dotnet/corefx/issues/9657 I am adding a new one. LZ4 is by far the fastest compression algorithm out there (at the expense of compression ratio that-is). It makes sense to have such an algorithm available on the baseline release. We can also provide our port of our managed LZ4 implementation of the r131 (which includes acceleration) if that makes the official inclusion of an algorithm we heavily rely upon easier. We are still working on the perf front but it is currently faster than the one that we had https://github.com/Corvalius/ravendb/blob/lz4-131/src/Sparrow/Compression/LZ4.cs +9706 area-System.Net Socket.SendFile leaks FileStream in case of error Here's a sketch of the method: ```c# public void SendFile(string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags) { ... FileStream fileStream = null; ... fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); ... if (fileStream != null) { ExceptionHelper.UnmanagedPermission.Assert(); ... } ... } ``` 1. The `fileStream` can leak if there's an exception. Actually, I can't find the place where the stream is ever closed but this might be an oversight on my part. This is a resource leak and therefore a bug. 2. `new TransmitFileOverlappedAsyncResult(this)` can leak in case anything throws. This class has a finalizer. Probably a minor issue. 3. Another issue is that if `ReuseSocket` is set but not `Disconnect` we in fact disconnect. Is this really intended? The whole design of the enum stinks as well but we're stuck with that. Also, the enum is not validated and directly passed into unmanaged code. Hope this is alright. Disclaimer: I have not tested this. This is from code review only. +9709 area-System.IO Investigate high-level CompressionStream with header detection "## Problem There have been a number of requests coming up lately to add new compression algorithms to System.IO.Compression. This is a great way to expand the usefulness of the library and be more friendly to other platforms that frequently use compression algorithms other than Deflate/GZip/Zip. However, adding those algorithms will likely introduce lots of new, in-depth API that may add too much complexity to the scenarios where the user just wants to compress/decompress something using the defaults. ## Suggestion We should consider whether we want to provide a high-level way of compression without the need for fine-grained construction and setup, possibly by adding API that allow easy choosing of a Compression algorithm . A **major** part of this would be to add header detection to the default decompression stream. This way we can add detailed compression algorithms in their individual classes (e.g. LZMAStream, BZ2Stream, GZipStream) while still providing a simple Compression/Decompression vehicle with plenty of Algorithm choices. ## API 1 - CompressionStream type ``` public enum Compressiontype { Deflate = 0, GZip = 1, ZLib = 2, LZMA = 3 ... } public partial class CompressionStream : System.IO.Stream { public CompressionStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode) { } // default Deflate for CompressionMode.Compress. CompressionMode.Decompress attempts to detect type from header and defaults to Deflate if it can not be determined. public CompressionStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, System.IO.Compression.CompressionType type) { } // no auto-header detection for Decompression. public CompressionStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, bool leaveOpen) { } public CompressionStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, System.IO.Compression.CompressionType type, bool leaveOpen) { } ... } ``` ### Examples ``` using (FileStream fs = File.OpenRead(""existinggzipfile.gz"")) using (CompressionStream compStream = new CompressionStream(fs, CompressionMode.Decompress)) { // compStream defers entirely to GZipStream } using (FileStream fs = File.OpenWrite(""newgzipfile.gz"")) using (CompressionStream compStream = new CompressionStream(fs, CompressionMode.Compress, CompressionType.GZip)) { // compStream defers entirely to GZipStream } ``` ## API 2 - Compression static class ``` public enum Compressiontype { Deflate = 0, GZip = 1, ZLib = 2, LZMA = 3 ... } public partial static class Compression { public static Stream CreateStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode) { } // default Deflate for CompressionMode.Compress. CompressionMode.Decompress attempts to detect type from header and defaults to Deflate if it can not be determined. public static Stream CreateStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, System.IO.Compression.CompressionType type) { } // no auto-header detection for Decompression. public static Stream CreateStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, bool leaveOpen) { } public static Stream CreateStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, System.IO.Compression.CompressionType type, bool leaveOpen) { } ... } ``` ### Examples ``` using (FileStream fs = File.OpenRead(""existinggzipfile.gz"")) using (Stream compStream = Compression.CreateStream(fs, CompressionMode.Decompress)) // stream is a GZipStream { ... } using (FileStream fs = File.OpenWrite(""newgzipfile.gz"")) using (Stream compStream = Compression.CreateStream(fs, CompressionMode.Compress, CompressionType.GZip)) // stream is a GZipStream { ... } ``` Somewhat related to https://github.com/dotnet/corefx/issues/9237. Discussion forked from https://github.com/dotnet/corefx/issues/9657. Issues for adding new compression algorithms: - ZLib https://github.com/dotnet/corefx/issues/7570 - 7z/LZMA1/LZMA2 https://github.com/dotnet/corefx/issues/9657 - LZ4 https://github.com/dotnet/corefx/issues/9704 - Bz2 https://github.com/dotnet/corefx/issues/3253 " +9710 area-System.IO Move UWP-AOT clrcompression build to the Open The AOT netcore50 clrcompression (formerly represented by win10) is currently the only one that still needs to be built in TFS. Until we can build against the API sets in the open, we'll have to continue building it internally. https://github.com/dotnet/corefx/pull/9448 is a closed PR and https://github.com/ianhays/corefx/tree/clrcompression_arm is the corresponding branch that contains the changes required to make the build work for UWP whenever we resolve the API set issue. More info copied from #9448: - OneCore based platforms need api-set imports as opposed to kernel32 imports. The binaries produced by CMake use the kernel32 imports. - The kernel32 import issue is present in the non-appcontainer build as well but it is less of an issue there - Until we solve the API sets import issue, we'll need to keep building the UWP-aot native binaries internally - This means that the aot clrcompression is the old zlib that does not contain the zlib-intel changes. - Since it is only the aot clrcompression that still imports the API sets, debug will use the newer clrcompression that imports kernel32. +9715 area-System.Net Adding multi-machine installation scripts and unifying test configuration. - Powershell scripts to create a 3-machine environment with a client, IIS server and Active Directory Domain Controller. - Changing all test projects to use the `Configuration.*.cs` pattern. This is WIP for #9048. The ASP.Net applications are not working as expected at this point (disabled + TODO). Additional work is required to convert them to ASP.Net Core and have a single way to deploy on both a private environment or Azure. @davidsh @stephentoub @ericeil @himadrisarkar PTAL +9719 area-System.Data SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase. "**dotnet 1.0.0-rc2-3002702 Microsoft.EntityFrameworkCore.SqlServer 1.0.0-rc2-final Ubuntu 14.04 LTS** **Microsoft SQL Server 2008 R2 (SP1)** 10.50.2550.0 (X64) Jun 11 2012 16:41:53 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) Connection string: Data Source=192.168.1.x;Initial Catalog=DBName;Persist Security Info=False;User ID=username;Password=pass This issue may be related to #6467. Unfortunately, we cannot upgrade our SQL server service pack. The same application works fine on Windows. This also impacts Entity Framework . Code: ``` using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); try { while (reader.Read()) { Console.WriteLine(String.Format(""{0}, {1}"", reader[""Id""], reader[""Email""])); } } catch(Exception ex) { Console.WriteLine(ex.ToString()); } } ``` **Full error:** Executing action method Dashboard.Controllers.HomeController.Index (Dashboard) with arguments () - ModelState is Valid' Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware An unhandled exception has occurred while executing the request System.Data.SqlClient.SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=159; handshake=578; [Login] initialization=9; authentication=40; [Post-Login] complete=14062; ---> System.ComponentModel.Win32Exception: Unknown error 258 --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Dashboard.Controllers.HomeController.Index() at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.FilterActionInvoker.d__41.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.FilterActionInvoker.d__32.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.MvcRouteHandler.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.ExceptionTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext() ClientConnectionId:1f658ddc-13f8-43e8-85a3-fdd8cc853eff Error Number:-2,State:0,Class:11 " +9724 area-System.Collections ICollection.CopyTo argument validation is inconsistent or non-existent Posting now after RTM, as suggested once upon a time. The method `ICollection.CopyTo(Array array, int index)` has a multitude of invalid inputs. Here are some examples ### `array.GetLowerBound(0) != 0` Suggested throw type: `ArgumentException` Problem if not checked: `IndexOutOfRangeException` (bug) Compatability impact: minimal (lower bound is very rarely not 0) ### `array.Rank != 1` Suggested throw type: `ArgumentException` Problem if not checked: `IndexOutOfRangeException` (bug) Compatability impact: slight (array could be multidimensional but this is unlikely to be caught) ### `array == null` Suggested throw type: `ArgumentNullException` Problem if not checked: `NullReferenceException` (bug) Compatability impact: medium (null is a common argument passed incorrectly) ### `index < 0` Suggested throw type: `ArgumentOutOfRangeException` Problem if not checked: `IndexOutOfRangeException` (bug) Compatability impact: medium (e.g. letting user type in a custom index and catching IORE) ### `array.Count - index < collection.Count` Suggested throw type: `ArgumentException` Problem if not checked: `IndexOutOfRangeException` (bug) Compatability impact: medium (e.g. letting user type in a custom index and catching IORE) These are all I can think of at the moment. ## Examples Here are some examples that I've encountered in the past. I haven't gone searching but I'm certain there are some more - Regex ICollections only check if `array == null` and perform no other checks - System.Security.Cryptography ICollections do not check the lower bound - Hashtable, Hashtable.Keys and Hashtable.Values does not check the lower bound ## Proposition Many ICollections do not perform all of these checks. The majority check for `array == null` and `index < 0`. The builtin `System.Collections.Generic` types have these checks, but many ICollections offer custom `CopyTo` implementations We should discuss the following: - Do the benefits of validating arguments (fixing a buggy implementation) outweigh the potential compat effects? - Should we allow a non-zero lower bound (e.g. like SortedList)? - Should we establish a consistent ordering for argument validation? Should existing argument validation checks be reordered? /cc @stephentoub and @bartonjs who suggested creating a discussion +9728 area-System.Net HttpClientHandler.ServerCertificateCustomValidationCallback blows up on OSX "I just updated my Project to RTM and did testing on Windows and everything worked. I then went to test on OSX 10.11.5 (latest stable everything, dotnet, openssl) and ran into issues very quickly.. I'm getting `The libcurl library in use (7.43.0) and its SSL backend (\""SecureTransport\"") do not support custom handling of certificates. A libcurl built with OpenSSL is required.` in stable latest everything on macOS... ``` "" at System.Net.Http.CurlHandler.SslProvider.SetSslOptions(EasyRequest easy, ClientCertificateOption clientCertOption)\n at System.Net.Http.CurlHandler.EasyRequest.InitializeCurl()\n at System.Net.Http.CurlHandler.MultiAgent.ActivateNewRequest(EasyRequest easy)\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()\n at System.Net.Http.HttpClient.d__58.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()\n at Exceptionless.Submission.DefaultSubmissionClient.GetSettings(ExceptionlessConfiguration config, Int32 version, IJsonSerializer serializer) in /Users/blake/Code/Exceptionless.Net/src/Exceptionless/Submission/DefaultSubmissionClient.cs:line 89"" [string] ``` ``` 5] blake@:~/Code/Exceptionless.Net$ brew info openssl openssl: stable 1.0.2h (bottled) [keg-only] SSL/TLS cryptography library [2:16] lake@:~/Code/Exceptionless.Net$ brew install openssl Warning: openssl-1.0.2h_1 already installed blake@:~/Code/Exceptionless.Net$ brew link --force openssl Warning: Already linked: /usr/local/Cellar/openssl/1.0.2h_1 To relink: brew unlink openssl && brew link openssl blake@:~/Code/Exceptionless.Net$ ``` I narrowed it down to defining a custom validation callback breaks the http client.. I can't even do a `GET`. ``` cs var handler = new HttpClientHandler { UseDefaultCredentials = true }; handler.ServerCertificateCustomValidationCallback = delegate { return true; }; var client = new HttpClient(handler, true); client.GetAsync(url).GetAwaiter().GetResult(); ``` All the code can be found here: http://github.com/exceptionless/Exceptionless.Net " +9734 area-System.Net Routing all BeginConnect calls through UnsafeBeginConnect This allows all calls to `BeginConnect(...)` overloads to be used with connection-less protocols such as UDP. Fixes #9304. Note that non-task based `ConnectAsync` APIs will still throw SocketException if used with a non-`Stream` Socket (similar to .Net Desktop). +9735 area-Infrastructure Assemblies in NETFramework TargetingPack do not compile on non-Windows platforms "The targeting packs for full desktop .NET on dotnet.myget.org/F/dotnet-core do not currently work when attempting to compile on OSX or Linux. **Repro** ``` json { ""dependencies"": { ""Microsoft.TargetingPack.NETFramework.v4.5.1"": { ""type"": ""build"", ""version"": ""1.0.1"" } }, ""frameworks"": { ""net451"": {} } } ``` `dotnet build` > /private/tmp/targeting/error CS1509: The referenced file '/Users/namc/.nuget/packages/Microsoft.TargetingPack.NETFramework.v4.5.1/1.0.1/lib/net451/System.EnterpriseServices.Wrapper.dll' is not an assembly > /private/tmp/targeting/error CS0009: Metadata file '/Users/namc/.nuget/packages/Microsoft.TargetingPack.NETFramework.v4.5.1/1.0.1/lib/net451/System.EnterpriseServices.Thunk.dll' could not be opened -- PE image doesn't contain managed metadata. " +9747 area-System.Diagnostics Microsoft.Diagnostics.Tracing.EventSource package does not play nicely with .NET Framework 4.5 projects using project.json "1) Create a new csproj-based project targeting .NET Framework 4.5 2) Add a project.json with: ``` { ""supports"": { }, ""dependencies"": { ""Microsoft.Diagnostics.Trace.EventSource"": { ""version"": ""1.1.16-beta"", } }, ""frameworks"": { "".NETFramework,Version=v4.5"": { } } } ``` 3) Close project, reopen 4) Build Expected: No errors or warnings Actual: ``` Warning The referenced component 'Microsoft.Diagnostics.Tracing.EventSource' could not be found. VisualStudio Warning Failed to resolve all project references for 'VisualStudio'. The package restore result for 'C:\Users\frsilb\Documents\git\roslyn-project-system\src\Dependencies\VisualStudio\VisualStudio.csproj' may be incomplete. 0 ``` Reason described in this PR: https://github.com/dotnet/roslyn-project-system/pull/278. " +9748 area-Serialization DataContractSerializer Fails to deserialize if any part contain '<' and '>'. Espically when u serialize exceptions stacktrace "Run the Program.cs file. I have reproduced the issue in simple format. The issue happens when i serialize any exception , espically stacktrace as it contains tempelate reference i.e. containing '<' and '>'. **Program.cs** using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace SampleNetCore { using System.IO; using System.Runtime.Serialization; public class Program { public static void Main(String[] srgs) { Exception e = new ArgumentException(""Hello <> World""); byte[] d = FromException1(e); Exception e1 = null; if (ToException1(d, out e1)) { Console.WriteLine(""After Deserializing Exception {0}"", e1); } else { Console.WriteLine(""Deserialiing Failed""); } Console.ReadLine(); ``` } public static byte[] FromException1(Exception exception) { var serializer = new DataContractSerializer(typeof(AggregateException)); using (var stream = new MemoryStream()) { AggregateException e1 = new AggregateException(new Exception[] { exception }); serializer.WriteObject(stream, e1); stream.Flush(); return stream.ToArray(); } } public static bool ToException1(byte[] remoteExceptionInformation, out Exception result) { var serializer = new DataContractSerializer(typeof(AggregateException)); try { using (var stream = new MemoryStream(remoteExceptionInformation)) { AggregateException result12 = (AggregateException)serializer.ReadObject(stream); result = result12.InnerException; return true; } } catch (Exception e) { System.Console.WriteLine(""Exception Occured while Deserializing {0} "", e); } result = null; return false; } ``` } } **project.json** { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0"" }, ""System.Runtime.Serialization.Xml"": ""4.1.1"" }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""dnxcore50"" } } } Expected behavior Any kind of exception should be serialize and deserialize, even if the content like ""Message"" / ""StackTrace"" contains '<' and '>'. Actual behavior The deserializing failed for above scenario. **Environment data** dotnet --info output: .NET Command Line Tools (1.0.0-preview3-003161) **Product Information:** Version: 1.0.0-preview3-003161 Commit SHA-1 hash: 63846c5 **Runtime Environment:** OS Name: ubuntu OS Version: 16.04 OS Platform: Linux RID: ubuntu.16.04-x64 " +9750 area-System.ComponentModel ForeignKeyAttribute add cascadeDelete cascadeUpdate param ForeignKeyAttribute add cascadeDelete cascadeUpdate param +9751 area-System.Net HttpContent Stream Read() and ReadAsync() consume 100% CPU on Scientific Linux 7.2 Running 1.0.0-preview2-003121 on Scientific Linux release 7.2 (Nitrogen), which `dotnet --info` identifies as (OS Name: rhel, OS Version: 7.2, OS Platform: Linux, RID: rhel.7.2-x64). In order to read from a SSE EventSource (which is basically just a HTTP GET that doesn't close immediately), my code currently: 1. Creates a `HttpClient` 2. Sets up a `HttpRequestMessage` and uses it in a `SendAsync()` on the `HttpClient` to get a `HttpResponseMessage` 3. awaits `HttpResponseMessage.Content.ReadAsStreamAsync()` 4. Enters into a loop calling `ReadAsync()` on the `Stream`, which is then fed into a decoder. The issue is that on RHEL 7.2, `await ReadAsync()` blocks (as expected), but with 100% CPU used by the `dotnet` process. This also occurs if the `ReadAsync()` is replaced by the standard blocking `Read()`. To my untrained eye, it appears to be spin waiting or spin locking, or something in that vain. I have tested and confirmed that the issue does not manifest itself on Windows 10 (build 14372) or Ubuntu 14.04. I have attached a small example project that reproduces the issue. It is unfortunately slightly cumbersome to run, since an event source must be hosted for it to read, and I can't find an existing example event source server to point it to. [RHELBugTest.zip](https://github.com/dotnet/corefx/files/338889/RHELBugTest.zip) +9756 area-Meta mscorlib reference assembly shouldn't need to expose internal types with FriendAccessAllowed Attribute. per @jkotas: > The desired state should be: > - System.Private.CoreLib exposes two kinds of types/methods: types/methods for public consumption, and types/methods for internal consumption by other framework libraries. > - mscorlib facade has forwarders for the types for public consumption only. Today framework libraries still reference mscorlib, so our mscorlib reference assembly still needs to add type forwards for internal types to S.P.Corelib. We should figure out a plan to remove this without breaking backward compat with developing a framework library that we need to run in UWP against an older version of coreclr which doesn't contain S.P.CoreLib Related: #9712 +9759 area-System.IO Add Retain to OSX FileSystemWatcher runloop The OSX FileSystemWatcher uses the CoreFoundation RunLoop API to watch for events. There is a rule that CF objects received from getter functions are not guaranteed to exist unless explicitly retained. We were not doing this, so there was a very infrequent potential race condition wherein cancellation raced with completion of the thread that owned the runloop. When completion happened first, OSX disposed the unmanaged CoreFoundation RunLoop object that was unique to the thread, and cancellation attempted to call API on that now-invalid object. This commit adds explicit retain/release logic to prevent that race condition. resolves #8983 +9760 area-System.Console Make UWP Console Color operations not throw Removes the PlatformNotSupportedExceptions thrown in the Console Color operations and adds some very basic logic to allow roundtripping. resolves #9521 @mattgal @danmosemsft @weshaggard +9761 area-System.Net NetworkInterface.GetAllNetworkInterfaces() on Ubuntu 14.04 unhandled exception FileNotFoundException "I get the following exception when calling GetAllNetworkInterfaces on Ubuntu: ``` Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/sys/class/net/em1:avahi/operstate'. at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOperationalStatus(String name) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__0(String name, IpAddressInfo* ipAddr, IpAddressInfo* maskAddr) at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound) at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() at System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces() ``` I’m using package: ""System.Net.NetworkInformation"": ""4.1.0-rc3-24210-09"" This isn’t reproducible on all Ubuntu machines, since on some it works while on others it throws the above exception Thanks, Alon " +9762 area-System.Net TcpClient.Connected throws NullReferenceException on Windows when there is no Socket The following code throws `NullReferenceException` on .Net Core on Windows and on .Net Framework: ``` c# var client = new TcpClient(); client.Dispose(); Console.WriteLine(client.Connected); ``` On Unix, it writes `False`, as expected. This is because `Connected` on Windows [just returns `Connected` of the underlying socket](https://github.com/dotnet/corefx/blob/v1.0.0/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.Windows.cs#L25), while [on Unix it checks for `null`](https://github.com/dotnet/corefx/blob/v1.0.0/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.Unix.cs#L164-L172). This happens when accessing `Connected` while the underlying socket is `null`. That can happen after calling `Dispose()` and also after explicitly assigning `null` to `Client` (the underlying socket). This also affects `Available` and `ExclusiveAddressUse`. +9764 area-System.Net Dns.GetHostAddressesAsync Unexpected Result on Ubuntu 14.04 "running the following in Ubuntu 14.04: Dns.GetHostAddressesAsync(Dns.GetHostName()).Result returns: Three entries where the AddressFamily is InterNetwork and the ip is 127.0.1.1 using the following package: ""Microsoft.NETCore.App"": ""1.0.0-rc3-004432-00"" Thanks, Alon " +9765 area-System.IO Cleanup ZipFile tests using temp files Some ZipFile tests aren't cleaning up after themselves like good little tests are supposed to. This commit makes them use the FileCleanupTestBase/TempFile/TempDirectory common files to resolve that. resolves #9484 +9767 area-System.Console Peek and Read do not work well together on Console.In on OSX "Consider this program: ``` csharp using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.Out.WriteLine(""preparing to read some text""); Console.Out.Write("">> ""); Console.Out.Flush(); char peeked = (char)Console.In.Peek(); char c = (char)Console.In.Read(); char d = (char)Console.In.Read(); Console.Out.WriteLine($""peeked: {peeked}""); Console.Out.WriteLine($""read: {c} and {d}""); } } } ``` The expected behavior is that, when faced with two input characters such as ""54"", we will peek at the ""5"", then read the ""5"", and then read the ""4"". On Windows, this is what happens when this program is run: ``` preparing to read some text >> 54 peeked: 5 read: 5 and 4 ``` On OSX, this doesn't happen: ``` preparing to read some text >> 54 peeked: 5 read: and ``` It would appear that Peek and Read are not on the same page about the state of the input stream. No matter how may characters I enter on OSX, the ""peeked"" character is the first char that I entered and the ""read"" chars are both newlines. This readily repros with the RTM .NET CLI and the project.json that is generated by `dotnet new`. " +9768 area-System.Net Support for Socks4/5 proxy in HttpClient/WebRequests Any chances of this happening? +9769 area-System.ComponentModel UrlAttribute.IsValid too naive ? When looking at https://github.com/dotnet/corefx/blob/6df5eb18807fa42e27a20e41257dcd8cc83d96d9/src/System.Private.Uri/src/System/UriExt.cs and https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/UrlAttribute.cs I think the `UrlAttribute` is way too naive to be any useful for url validation. Is this missing implementation or is the idea to only check if string starts with http(s) or ftp ? +9777 area-System.Console Console tests don't verify actual In/Out "The tests in System.Console for the TextReader and TextWriter returned from Console.In and Console.Out don't verify anything about the non-redirected streams. Each test first calls `SetIn` or `SetOut` on a StreamWriter/Reader wrapped around a MemoryStream. This leads to issues like #9767 where basic operations have bugs that are supposedly tested against. For example, we have this test: ``` [Fact] public void Peek() { const string expected = ""ABC""; Test(expected, () => { foreach (char expectedChar in expected) { Assert.Equal(expectedChar, Console.In.Peek()); Assert.Equal(expectedChar, Console.In.Read()); } }); } ``` that _seems_ to be testing exactly what #9767 proved broken. However, in the `Test` helper we call `Console.SetIn(sr)` - where `sr` is a StreamReader around a MemoryStream - before performing the test action. So this test is actually only verifying that `Console.In` roundtrips with `Console.SetIn` and further that a StreamWriter's Peek and Read functions work. TL;DR: We should look for a better way to test the Writer/Reader returned from a non-redirected Console.Out/Console.In. " +9778 area-System.Net Guard file reads in /sys/class/net/ directories "Some systems may not have the expected files present in these directories. If such a situation is encountered, try still to return a reasonable value, or throw a PlatformNotSupportedException instead of a FileNotFoundException if we shouldn't ""guess"" a value. @stephentoub , @davidsh I think I will take a look at all of the file access in the library and consider guarding additional places. As long as there are obscure cases where some systems do not have the information we expect, we should try to throw a `PlatformNotSupportedException` instead of a less-obvious `FileNotFoundException`. For this PR, I've only guarded accesses made to files in the /sys/class/net directory, as it seems avahi-daemon maintains files there that do not conform to what we expect. Addresses #9761 " +9780 area-System.Net TcpListener fails to re-bind under Unix for 2 minutes after Stop. Have created a gist to reproduce the behaviour: https://gist.github.com/sichbo/77615b5c0a6ef7f0fab367862bffb1bd Basically what's happening is I have a console app which when re-started will always crash on second run because a socket re-bind fails with: > Unhandled Exception: System.Net.Sockets.SocketException: Address already in use > at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) > at System.Net.Sockets.Socket.Bind(EndPoint localEP) > at System.Net.Sockets.TcpListener.Start(Int32 backlog) > at System.Net.Sockets.TcpListener.Start() > at TcpListenerTest.Program. d__1.MoveNext() After about 2 minutes, the application starts normally. It's as if there's a clean-up taking place at OS level some time after the dotnet process quits. Under Windows there is no such issue and you can `Start/AcceptTcpClient/Stop` and repeat the procedure without any problem. +9785 area-System.Net Manual_CertificateSentMatchesCertificateReceived_Success failed on Ubuntu.14.04 Sample error: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/2465/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandler_ClientCertificates_Test/Manual_CertificateSentMatchesCertificateReceived_Success_numberOfRequests__3__reuseClient__True_/ Another: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/2303/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandler_ClientCertificates_Test/Manual_CertificateSentMatchesCertificateReceived_Success_numberOfRequests__3__reuseClient__True_/ ``` MESSAGE: System.Threading.Tasks.TaskCanceledException : A task was canceled. +++++++++++++++++++ STACK TRACE: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_0.<b__2>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_2.<b__4>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +9789 area-System.IO CLRCompression ARM package is not built in the open https://github.com/dotnet/corefx/blob/master/src/Native/pkg/runtime.native.System.IO.Compression/runtime.native.System.IO.Compression.pkgproj#L56 expects the open build to produce the ARM binary for clrcompression, but as far as I can tell, this doesn't happen. If we plan to still ship this from TFS please update the package to use ExternalExpectedPrerelease just like the AOT build. One making the change, please **test** the locally built packages in a UWP app. +9792 area-System.Security ArgumentNullException when calling RSACertificateExtensions.GetRSAPrivateKey Hi, after migrating project to .NET Core 1.0.0 I had to change ``` RSACryptoServiceProvider cryptoProvider = (RSACryptoServiceProvider)_qzOptions.Certificate.PrivateKey; ``` to ``` RSA cryptoProvider = _qzOptions.Certificate.GetRSAPrivateKey(); ``` Unfortunately this call throws following exception: ``` {System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Runtime.InteropServices.Marshal.CopyToManaged(IntPtr source, Object destination, Int32 startIndex, Int32 length) at Internal.Cryptography.Pal.Native.CRYPTOAPI_BLOB.ToByteArray() at Internal.Cryptography.Pal.CertificatePal.get_KeyAlgorithmParameters() at System.Security.Cryptography.X509Certificates.X509Certificate.GetKeyAlgorithmParameters() at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PublicKey() at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) at System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2 certificate)} ``` This code is for signing requests for printing using QZ Tray (https://qz.io/wiki/2.0-signing-messages). C# example on which my code is based is provided at https://github.com/qzind/tray/blob/2.0/assets/signing/sign-message.cs. Thanks! +9793 area-System.Net Use string.Replace for UriBuilder.set_Path There seems to be no point in creating a new StringBuilder and appending each char (replacing \s with /s) individually, when we could just do a `string.Replace` and get rid of the helper method. cc @davidsh @stephentoub +9795 area-System.Data System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the login process. `System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 0 - Unable to write data to the transport connection: Unknown error 10054.) ` I'm getting this error when trying to run our .net core dockerized app against our production sql server. `select @@VERSION`: `Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor)` Here is the connection string we are using: ``` Server=172.x.x.x;Database=xxx;User Id=xxx;Password=abcd; ``` I saw one issue that seemed similar that referred to some TLS settings, but those all seem good for us. Any help is appreciated. +9796 area-System.Net "System.Net.Http.WinHttpException (""The option is invalid"") in System.Net.Http when ClientCertificates are used." "I am trying to call a soap based webservice that requires client certs for authentication and the following exception occurs: ``` Exception: Exception thrown: 'System.Net.Http.WinHttpException' in System.Net.Http.dll (""The option is invalid""). Exception thrown: 'System.Net.Http.WinHttpException' in System.Net.Http.dll (""The option is invalid"") ``` I've tried making these calls using the HttpClientHandler class directly as well as WCF client libraries, and the outcome is the same for both. Here is the code I am using the make these calls. ```c# using (var httpHandler = new HttpClientHandler()) { string certFilePath = @""C:\share\Certificates\mytestcert.cer""; X509Certificate2 cert2 = new X509Certificate2(certFilePath); httpHandler.ClientCertificateOptions = ClientCertificateOption.Manual; httpHandler.ClientCertificates.Add(cert2); using (var client = new HttpClient(httpHandler)) { client.DefaultRequestHeaders.Add(""SOAPAction"", soapAction); client.DefaultRequestHeaders.Add(""Expect"", ""100-continue""); client.DefaultRequestHeaders.Add(""Accept-Encoding"", ""gzip, deflate""); client.DefaultRequestHeaders.Add(""Connection"", ""Keep-Alive""); StringContent stringContent = new StringContent(soapTemplate, null, ""text/xml""); using (HttpResponseMessage response = await client.PostAsync(sUrl, stringContent)) using (HttpContent content = response.Content) { result = await content.ReadAsStringAsync(); } } ``` If there is additional information I can provide, please let me know. " +9797 area-Serialization Add Reflection Based (De-)Serialization Support for DCJS The PR is enable DataContractJsonSerializer to do reflection based serialization/de-serialization. All tests passed when running on CoreCLR. Most of the tests passed in NetNative. Failed test cases are the same as those failed for DCS in NetNative. @mconnew @roncain @huanwu @zhenlan Can you please review the PR? Thanks! +9798 area-System.IO Create a new portable library for IO "There are a lot of IO utility APIs that we'd like to add to .NET. While adding methods to the existing classes (say, System.IO.Path) is a big usability plus, it is a deployment headache. Example: If we add Path.CreateRelativePath() it would create a dependency on some future version of the various runtimes (say 4.6.3 for desktop) which inhibits writing portable libraries that consume this API that has no lower level runtime dependencies. We could easily create a library that supports standard 1.0 or 1.3 that contains the pieces people are asking for and not need to force them to a newer set of runtimes to consume the functionality. It would also facilitate getting the desired functionality to users faster as we wouldn't have nearly the same level of plumbing overhead. (For Path in particular there are a _lot_ of pending functionality requests.) Initial name ideas: - System.IO.Portable - System.IO.Utility - System.IO.PathExtended If we go with a more generic name we'd have the ability to add other functionality that we are looking to do without exploding the library count too much. (One example is adding a set of interfaces for basic IO access, say IFileSystem.) For existing static classes we could do something like Path -> PathExtended (thinking of PathEx). The other pattern that is commonly used is ""Path2"". @weshaggard, @ericstj, @terrajobst, @stephentoub " +9800 area-System.Reflection CallingConvention gap in ILGenerator.EmitCalli Based on [this stackoverflow submission](http://stackoverflow.com/questions/38129594/emitcalli-net-core-alternative/38134706#38134706). It seems like there is a bit of a feature gap in the current interface for `ILGenerator`. .NET Core has a `EmitCalli` method, but the calling conventions it supports do not line up exactly with the ones exposed from the .NET Framework: https://msdn.microsoft.com/en-us/library/d81ee808(v=vs.110).aspx We should understand if this is a meaningful gap, or if the use cases for the .NET Framework version can still be covered by the new version. We may already be considering adding this functionality back as part of our bigger API compat push. cc: @AtsushiKan +9805 area-System.Reflection Restore Reflection API (.NET Native) +9807 area-System.Numerics Assigning VectorX right to VectorX left CopyTo allows copying of value to arrays but not another Vector of the same length. +9809 area-System.Data Exception occur when Registraing a new User in .NetCoreApp ### The issue Exception occur while Registring a new user in .NetCoreApp v1.0.0-rc2-3002702 ### STACK **OverflowException: Arithmetic operation resulted in an overflow.** System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) AggregateException: One or more errors occurred. (Arithmetic operation resulted in an overflow.) System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) AggregateException: One or more errors occurred. (Arithmetic operation resulted in an overflow.) ``` System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Microsoft.AspNetCore.Identity.UserValidator`1.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Microsoft.AspNetCore.Identity.UserValidator`1.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Microsoft.AspNetCore.Identity.UserManager`1.d__157.MoveNext() --- End of stack trace from previous location where exception was thrown --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Microsoft.AspNetCore.Identity.UserManager`1.d__68.MoveNext() --- End of stack trace from previous location where exception was thrown --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Microsoft.AspNetCore.Identity.UserManager`1.d__73.MoveNext() --- End of stack trace from previous location where exception was thrown --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() SoundBoard.Controllers.AccountController.d__9.MoveNext() in AccountController.cs var result = await _userManager.CreateAsync(user, model.Password); --- End of stack trace from previous location where exception was thrown --- ``` ``` EF Core version: EF 7 / EF Core Operating system: Windows 8.1 Visual Studio version: VS 2015 ``` +9812 area-System.Console Custom Console Colours I'm working on .NET Core support in [Colorful.Console](http://colorfulconsole.com/). I've added nestandard1.3 support but it uses interop to set custom colours in the console, so I'm now looking at how to add this support for Windows, Mac and Linux to support every platform. Currently I'm using `RuntimeInformation.IsOSPlatform` to only use interop on Windows (See code [here](https://github.com/tomakita/Colorful.Console/blob/master/src/Colorful.Console/ColorMapper.cs#L93-L109)). Example of what the library can currently do using Figlet fonts: ![ascii_x1](https://cloud.githubusercontent.com/assets/2270364/16540939/3ee3d972-406e-11e6-8e71-e6918241db2d.png) First of all, is there anything stopping built in support for this in `System.Console`? Perhaps using `System.Drawing.Color` and adding a `Background` and `Foreground` property to `System.Console`. My understanding is that `System.Drawing.Color` is coming to .NET Core soon. Alternatively, I've been looking at the internal [ConsolePal](https://github.com/dotnet/corefx/tree/56600ecc3738940219f3c5a886c6bb0afe1f6a75/src/System.Console/src/System) classes in trying to understand how I can add this support to [Colorful.Console](http://colorfulconsole.com/). Could someone explain: 1. Why there are only Windows, WinRT and Unix versions (I guess Mac uses the same Console API as Unix but I didn't realize WinRT is totally separate too). 2. Are there any tutorials about how to compile for each platform? [System.Console.csproj](https://github.com/dotnet/corefx/blob/56600ecc3738940219f3c5a886c6bb0afe1f6a75/src/System.Console/src/System.Console.csproj) seems to contain some complicated rules around this. Also it's not an xproj, which is what I was expecting but it does have a project.json file. 3. Any guidance on understanding how ConsolePal is setting colours would help. +9814 area-System.Net Less crap-tastic fix for Unix intermediate certificates. Per @bartonjs comments regarding #9810. +9817 area-System.Runtime Project with .NET Standard won't compile on Xamarin.iOS - missing type in facade "When trying to compile the ZeroconfTest.Xam.iOS test project from here: https://github.com/onovotny/Zeroconf/tree/netstandard I get a compile time error: ``` Severity Code Description Project File Line Suppression State Error Failed to resolve ""System.Runtime.CompilerServices.ConditionalWeakTable`2"" reference from ""System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" ZeroconfTest.Xam.iOS C:\Program Files (x86)\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets 681 ``` Digging into it, the facades that Xamarin ships do not have a type forwarder for `System.Runtime.CompilerServices.ConditionalWeakTable`2`. I suspect the fix has to come from Xamarin, but it's these packages that's causing the compiler error. /cc @mhutch @ericstj " +9824 area-System.IO DevicePathsDontThrowForInvalidChars_Windows test fails with all inputs "e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2673/consoleText ``` System.IO.Tests.PathTests.DevicePathsDontThrowForInvalidChars_Windows(prefix: ""\\?\"") [FAIL] Assert+WrapperXunitException : File path: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs. Line: 274 ---- Assert.All() Failure: 36 out of 36 items in the collection did not pass. [35]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [34]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [33]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [32]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [31]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [30]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [29]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [28]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [27]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [26]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [25]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [24]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [23]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [22]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [21]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [20]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [19]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [18]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [17]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [16]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [15]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [14]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [13]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [12]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [11]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [10]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [9]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [8]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [7]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [6]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [5]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [4]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [3]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [2]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [1]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(583,0): at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(39,0): at Assert.All[T](IEnumerable`1 collection, Action`1 action, String path, Int32 line) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs(274,0): at System.IO.Tests.PathTests.DevicePathsDontThrowForInvalidChars_Windows(String prefix) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(38,0): at Assert.All[T](IEnumerable`1 collection, Action`1 action, String path, Int32 line) System.IO.Tests.PathTests.DevicePathsDontThrowForInvalidChars_Windows(prefix: ""\\.\"") [FAIL] Assert+WrapperXunitException : File path: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs. Line: 274 ---- Assert.All() Failure: 36 out of 36 items in the collection did not pass. [35]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [34]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [33]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [32]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [31]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [30]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [29]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [28]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [27]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [26]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [25]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [24]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [23]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [22]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [21]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [20]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [19]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [18]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [17]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [16]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [15]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [14]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [13]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [12]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [11]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [10]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [9]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [8]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [7]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [6]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [5]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [4]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [3]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [2]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [1]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(583,0): at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(39,0): at Assert.All[T](IEnumerable`1 collection, Action`1 action, String path, Int32 line) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs(274,0): at System.IO.Tests.PathTests.DevicePathsDontThrowForInvalidChars_Windows(String prefix) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(38,0): at Assert.All[T](IEnumerable`1 collection, Action`1 action, String path, Int32 line) System.IO.Tests.PathTests.DevicePathsDontThrowForInvalidChars_Windows(prefix: ""\??\"") [FAIL] Assert+WrapperXunitException : File path: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs. Line: 274 ---- Assert.All() Failure: 36 out of 36 items in the collection did not pass. [35]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [34]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [33]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [32]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [31]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [30]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [29]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [28]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [27]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [26]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [25]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [24]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [23]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [22]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [21]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [20]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [19]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [18]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [17]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [16]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [15]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [14]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [13]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [12]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [11]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [10]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [9]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [8]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [7]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [6]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [5]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [4]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [3]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [2]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [1]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\IO\PathInternal.cs:line 26 at System.IO.Path.ChangeExtension(String path, String extension) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\src\System\IO\Path.cs:line 36 at System.IO.Tests.PathTests.<>c__DisplayClass19_0.b__0(Char c) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 278 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(583,0): at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(39,0): at Assert.All[T](IEnumerable`1 collection, Action`1 action, String path, Int32 line) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs(274,0): at System.IO.Tests.PathTests.DevicePathsDontThrowForInvalidChars_Windows(String prefix) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs(38,0): at Assert.All[T](IEnumerable`1 collection, Action`1 action, String path, Int32 line) ``` " +9826 area-System.Runtime Move Environment from coreclr to corefx Some of the Environment class needs to access runtime functionality, e.g. HasShutdownStarted, but a lot of it can be implemented in corefx, and doing so helps to avoid a) duplicating functionality/code with elsewhere in corefx, and b) duplicating implementations between CoreCLR and CoreRT. We can reimplement the bulk of Environment, including the remainder of the surface area that's missing, in corefx, calling into a special class exposed from the runtime(s) just for the core pieces we need. +9833 area-System.Net Investigate using buffer pooling for StringContent "Currently `StringContent` calls `Encoding.GetBytes` to get the underlying bytes of the string, so it can pass it in to the base constructor: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/StringContent.cs#L51 This method always allocates a new byte array. Since `StringContent` is an `IDisposable`, we should investigate renting a buffer from `ArrayPool.Shared` when initializing the content, and returning it when we dispose. I've made a prototype here: https://github.com/anonpenguin/PooledStringContent/blob/master/src/Pooling.Net.Http/PooledStringContent.cs (Note however, we may want to come up with a scheme for existing code that assumes `StringContent`'s `Dispose` doesn't do any important work and neglects to dispose it, e.g. ``` cs var content = new StringContent(""...""); // no using return await _httpClient.PutAsync(_uri, content).ConfigureAwait(false); ``` In those cases we may want to stop after renting a certain amount of ArrayPools without disposing, and fallback to allocating like we originally did.) cc @benaadams @davidsh " +9834 area-System.Net Avoid a boxing allocation in UriBuilder.ToString `_port` is an int, so adding it to a string means the `string.Conat(object, object)` overload gets called, which in turn means it gets boxed. Call `ToString` to avoid this. cc @stephentoub @davidsh +9838 area-System.Collections "BitArray.CopyTo copies also unused bits (""leaks data"")" `BitArray.CopyTo(...)` leaks internal data, if the data copied is shorter than the destination type. For instance, if set via `new BitArray(16, true)` (16 bits long, all on), then copy to an int array, all bits in the int are set (as if the `BitArray` is actually 32 bits long). [Demonstration tests](https://github.com/Clockwork-Muse/corefx/commit/19a67977e876aaa80eb42f7e04feae1fed1a815c) (although would need to be switched for regression tests). At the moment I had to verify the tests in a separate project - Something about the System.Collections is borked up when trying to run tests. I'm assuming that this is _not_ the desired behavior, given the data is automatically cleared when the length is increased. Granted, it's somewhat on the programmer for this, using a type shorter than there's officially data for... +9839 area-System.IO Can't use Path.GetFullPath in netstandard1.2 Hi, _Same issue/question as https://github.com/aspnet/Home/issues/1551 by @Sebosek_ How to get the full path of a given relative path in _netstandard1.2_? `Path.GetFullPath` seems to be available only for _netstandard1.3_ and above. Out of curiosity, why is that? Thanks +9842 area-System.IO Add IsolatedStorage types Bring back System.IO.IsolatedStorage, comprising these types ``` T:System.IO.IsolatedStorage.INormalizeForIsolatedStorage T:System.IO.IsolatedStorage.IsolatedStorage T:System.IO.IsolatedStorage.IsolatedStorageException T:System.IO.IsolatedStorage.IsolatedStorageFile T:System.IO.IsolatedStorage.IsolatedStorageFileStream T:System.IO.IsolatedStorage.IsolatedStorageScope T:System.IO.IsolatedStorage.IsolatedStorageSecurityOptions T:System.IO.IsolatedStorage.IsolatedStorageSecurityState ``` The most used types are ``` T:System.IO.IsolatedStorage.IsolatedStorageFile T:System.IO.IsolatedStorage.IsolatedStorageFileStream ``` and members in descending order ``` M:System.IO.IsolatedStorage.IsolatedStorageFile.FileExists(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication M:System.IO.IsolatedStorage.IsolatedStorageFile.DirectoryExists(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.CreateDirectory(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) M:System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess)M:System.IO.IsolatedStorage.IsolatedStorageFile.GetLastWriteTime(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFileStream.#ctor(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.IsolatedStorage.IsolatedStorageFile) M:System.IO.IsolatedStorage.IsolatedStorageFile.DeleteFile(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.DeleteDirectory(System.String)M:System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly ``` +9846 area-System.Net .Net Plaform Standard implementation on .Net 4.6.1 has version inconsistency for System.Net.Http "I created a netstandard1.4 library (csproj) which uses System.Net.Http, and the highest available netstandard1.3 listed in NETStandard.Library meta package references System.Net.Http **v4.1.0**. I reference this library from a .Net Core console app which targets net461, and the latter has System.Net.Http **v4.0.0.0** in GAC. During build I get a warning regarding library versions conflict, and at run time get a FileNoFoundException: ""Could not load file or assembly 'System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies."" Also, in project references (in solution explorer) System.Net.Http **v4.0.0** is shown. This looks pretty confusing, since I expect that once I referenced NETStandard.Library and target netstandard, I should not care about such versions consistency, since .NET Platform Standard docs claim that netstandard 1.4 is supported by net461 and higher, and netstandard 1.3 is supported by net46 and higher. UPDATE: I was also able to reproduce this problem when the library is xproj-based. [Here is the link to the sample project which reproduces the bug](https://1drv.ms/u/s!AuaAKPMkiTEAtvIeZ_3nHyiA2dUsqA) " +9848 area-System.Net UdpClient: Cancellation support for Async methods "In the current UdpClient methods, the `SendAsync` and `ReceiveAsync` method have no support for cancellation. A method could be in an `await RecieveAsync()`, which effectively never returns in a ""clean"" way. Instead, you have to call `Dispose()`/`Close()` on the `UdpClient` instance and catch `ObjectDisposedException` and `NullReferenceException`'s coming from that await. There's a race condition here: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs#L397 That that triggers the NRE -- the `FreeResources()` call could be called as part of a dispose while another thread hit's that `EndRecieve()` Rather than handling exceptions to end things, having a `CancellationToken` available in the async calls would enable a clean shutdown. " +9849 area-System.Net Make sure TcpClient properties do not throw when the underlying Socket is null Fixes #9762 +9852 area-System.Net Fixing CookieCollection interface methods The Core version of CookieCollection modified the visibility of some interface methods. This PR updates our Reference Assembly to mimic that. cc: @weshaggard @danmosemsft +9855 area-System.Security Support System.Security.Cryptography.Native OpenSSL 1.1 release OpenSSL 1.1 has a new model of opaque structures with more accessor functions. Anything previously obtained by an accessor function will likely be fine, but direct field accesses won't work. For example, UpRefEvpPkey will need to change to EVP_PKEY_up_ref, but needs to do the current behavior on 1.0.x builds. +9857 area-System.Net [TODO] Avoid boxing in IPv4AddressHelper.ParseCanonicalName cc: @stephentoub @davidsh +9859 area-System.Runtime CS0019: Comparing a Nullable enum type with null results in compiler error "The StackOverflow user ""Warren P."" posted this issue on StackOverflow, which sounds like a bug or oversight to me. You can find the original issue [here](http://stackoverflow.com/questions/38191166/c-sharp-optional-enum-type-property-setter-compiles-in-classic-net-but-not-in). Comparing an optional/Nullable Enum type property to null results in CS0019 compiler error. ```c# /// This uses the native .NET datatype, rather than the FHIR equivalent [NotMapped] [IgnoreDataMemberAttribute] public Hl7.Fhir.Model.RemittanceOutcome? Outcome { get { return OutcomeElement != null ? OutcomeElement.Value : null; } set { if(value == null) // CS00019 OutcomeElement = null; else OutcomeElement = new Code(value); OnPropertyChanged(""Outcome""); } } ``` The resulting compiler error: ``` CS0019 Operator '==' cannot be applied to operands of type 'RemittanceOutcome?' and '' ``` `if(value.HasValue)` works however. Seems like the == operator override is missing in .NET Core implementation of `Nullable`. Is th is by design or a bug/oversight? " +9860 area-System.Net Avoid repeated char[] allocations in CheckForColonInFirstPathSegment There's no reason to allocate a `char[]` every time the method is called and call `IndexOfAny`, when we can replace it with our own manual for-loop. cc @stephentoub @davidsh +9861 area-System.Net Remove unused static field from Uri The field says it's used by `DigestClient`, but there is no such class in corefx. cc @davidsh @stephentoub +9864 area-System.Net [TODO] Remove some boxing from IPv6AddressHelper.CreateCanonicalName Don't use `StringBuilder.AppendFormat` which converts the rest of the arguments to objects, instead call the `ToString` overload accepting a format/format provider ourselves and `Append` it to the builder. cc @stephentoub @davidsh +9865 area-Infrastructure [ARM/Linux] Workaround for running unit-test on Linux ARM32 In default, runtimes environments for CoreFX unit-test uses `*.ni.dll`s (mscorlib.ni.dll, System.Private.CoreLib.ni.dll) which extracted from NuGet packages. It's good for performance, but as of now, we don't have proper packages for Linux/ARM32. I want to work around this situation by using `*.dll`s instead of `*.ni.dll`s, with `--ignore-native-dlls` option, in spite of performance degradation in test. #9862 is patch for this. In addition, to improve the readability of test log, add `--sequential` option to run tests one by one. #9863 is patch for this. +9867 area-System.IO Compression.ZipFile Unicode tests failing on OSX in Helix Failing tests: ``` System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods CreateFromDirectoryUnicodel ExtractToDirectoryTest_Unicode ExtractToDirectoryUnicode ``` Error: ``` Unhandled Exception of type System.NullReferenceException Message: System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.IO.Compression.Tests.ZipFileTestBase.ItemEqual(String[] actualList, List`1 expectedList, Boolean isFile) at System.IO.Compression.Tests.ZipFileTestBase.DirsEqual(String actual, String expected) at System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods.ExtractToDirectoryTest_Unicode() ``` +9869 area-System.Net Use try/finally in DelegatingStream.Dispose cc @davidsh +9872 area-System.IO AccessControl related methods from IO ``` M:System.IO.Directory.SetAccessControl(System.String,System.Security.AccessControl.DirectorySecurity) M:System.IO.DirectoryInfo.Create(System.Security.AccessControl.DirectorySecurity) M:System.IO.DirectoryInfo.CreateSubdirectory(System.String,System.Security.AccessControl.DirectorySecurity) M:System.IO.DirectoryInfo.GetAccessControl M:System.IO.DirectoryInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections) M:System.IO.DirectoryInfo.SetAccessControl(System.Security.AccessControl.DirectorySecurity) M:System.IO.Directory.CreateDirectory(System.String,System.Security.AccessControl.DirectorySecurity) M:System.IO.Directory.GetAccessControl(System.String) M:System.IO.Directory.GetAccessControl(System.String,System.Security.AccessControl.AccessControlSections) M:System.IO.FileStream.#ctor(System.IntPtr,System.IO.FileAccess) M:System.IO.FileStream.#ctor(System.IntPtr,System.IO.FileAccess,System.Boolean) M:System.IO.FileStream.#ctor(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32) M:System.IO.FileStream.#ctor(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32,System.Boolean) ``` from #9465 +9873 area-System.Xml [dev/xml] Fix XSL scripts compilation in XmlCompiledTransform If XSL contains scripts (C#, VB, JScript), the script is currently not being compiled from a dll correctly. Either need to bring back CodeDom or find a workaround. The tests related to this scenario should be re-enabled. (Look for ActiveIssue(9873)) This needs to be done as a part of dev/xml branch work +9875 area-Meta Consistency of partial class filenames There are multiple different axes along which we customize the implementation via partial classes. From https://github.com/dotnet/corefx/pull/9851/files/282ad11461c480a282a529c38d8fc353bc03663b#r69807075: 1. Classic win32 vs. UWP apps (vs. non-Windows OSes). The two Windows appmodels are very much like different OSes because of there are different APIs available and things have to be generally done differently in number of places. I believe that the most common pattern has been to use `.Win32.cs` vs. `.WinRT.cs` to provide different implementations. `System.IO.FileSystem` or `System.Console` are good examples. 2. JIT vs. full AOT. I do not actually see any good examples. `System.Linq.Expressions` or data contract serialization where this difference is most prelevant are configured via ifdefs, not via alternative file includes. 3. Different surface of System.Private.CoreLib between CoreCLR and CoreRT/.NET Native. The common pattern for this is `.CoreCLR.cs` vs. `.netcore50.cs` or `.netcore50aot.cs`. Hopefully, most of these will go away over time as we work on filling in the missing APIs and converging the implementations. +9876 area-System.Xml Re-enable tests with XSL resolving external URIs These tests are marked with ActiveIssue. This needs to be done as a part of dev/xml branch work +9877 area-System.Xml Re-enable and fix failing 60-70 Xsl checksum based tests These tests are marked with ActiveIssue This needs to be done as a part of dev/xml branch work +9878 area-System.Net Fix HttpWebResponse.ContentType when response has invalid headers The HttpWebResponse.ContentType property is supposed to return a string value with the response's `Content-Type` header value. Even if the response header is considered non-conformant with RFC7231, the value is returned as-is as received on the wire. In .NET Core, HttpWebRequest/HttpWebResponse is implemented as a wrapper around HttpClient. HttpClient has a strongly-typed model for headers. The current implementation of HttpWebResponse.ContentType was trying to use the strongly typed header from HttpClient. In cases where the header was malformed, it was returning empty string. This was a difference in behavior from .NET Framework. The fix is to use TryGetValues() to retrieve the raw response header value for the 'Content-Type' header. This will result in compatible behavior with .NET Framework. Fixes #9433. +9884 area-System.Net System.Net.Http does not behave as an OOB package when used with System.Net.Http.Formatting This issue has been created to separate it from the conversation in issue #9846. As explained there, when using `System.Net.Http v4.0.0.0` as distributed by the .NET Framework 4.6.1, everything works correctly. When updating the reference to the NuGet-distributed package for `System.Net.Http v4.1.0.0` (here: https://www.nuget.org/packages/System.Net.Http/) the code fails at runtime whith the below exception: ``` [VerificationException: Method System.Net.Http.CloneableExtensions.Clone: type argument 'System.Net.Http.Headers.MediaTypeHeaderValue' violates the constraint of type parameter 'T'.] System.Net.Http.Formatting.MediaTypeConstants.get_ApplicationJsonMediaType() +0 System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() +79 System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() +49 System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes) ... ``` When reverting to the out-of-the box v.4.0.0.0 version it works as expected without problems. Therefore, version 4.1.0.0 is not an OOB package as it breaks the functionality of other packages that relate to this one. +9889 area-System.Runtime Complete Environment.GetFolderPath on Unix #9826 added back the full surface area of Environment. However, GetFolderPath on Unix doesn't support the vast majority of the SpecialFolder values. We should look at fleshing this out. +9890 area-System.IO Environment.GetFolderPath on Windows can't use SHGetFolderPath #9826 added back the full surface area of Environment. However, GetFolderPath on Windows in the desktop framework uses SHGetFolderPath to implement this method, but that Win32 function isn't available: https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.CodeAnalysis/PackageFiles/PinvokeAnalyzer_OneCoreApis.txt As a result, the method is mostly unusable. +9892 area-Meta Running tests for a single project on Linux I am trying to run tests for a single project on Ubuntu 16.04. I figured out that the command I need to run (assuming corefx is in `~/corefx`) is: `~/corefx/Tools/dotnetcli/dotnet ~/corefx/Tools/MSBuild.exe /t:BuildAndTest /p:TestNugetRuntimeId=ubuntu.16.04-x64 /p:OSGroup=Linux /p:TargetOS=Linux` As far as I can tell, this is not documented anywhere and I think it should be, probably in [unix-instructions.md](https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md). Also, I think it's confusing that [the default for `TestNugetRuntimeId` is `win7-x64`](https://github.com/dotnet/buildtools/blob/acf2600/src/Microsoft.DotNet.Build.Tasks/PackageFiles/publishtest.targets#L18), even on Linux. Should it be changed to detect the OS? The same applies to `OSGroup` and `TargetOS`. +9893 area-System.Net SSLStream does not clear InternalBuffer after read SSLStream is vulnerable to memory dump attacks. When working with sensitive data, a programmer has no way to clear the internal buffer of SslStreamInternal after data has been read. And as long as a new packet does not arrive the data will be there indefinitely. SslStream should provide a mechanism to clear the internal buffer or SslStreamInternal should clear InternalBuffer either during every call to DecrementInternalBufferCount or after data is BlockCopy-ed from InternalBuffer to buffer in ProcessRead. +9894 area-System.Xml [dev/xml] Intermittent failures in random System.Xml.XmlDocument tests related to attributes Some threading issue in XmlDoc tests. I'm leaving them not marked as Active issue so it's easier to track it down by finding some common traits. (+ not really sure which ones to disable) Not sure if this is test or product issue. This might be already fixed - need to be re-verified after merging corefx changes to System.Xml. Failures catched so far: ``` Discovering: System.Xml.XmlDocument.Tests System.Xml.XPath.Tests -> E:\src\oss\xml\bin\AnyOS.AnyCPU.Debug\System.Xml.XPath.Tests\System.Xml.XPath.Tests.dll Using E:\src\oss\xml\packages/ as folder for resolving package dependencies. Executing in E:\src\oss\xml\bin\tests\AnyOS.AnyCPU.Debug\System.Xml.XPath.Tests\netcoreapp1.0\ Hard linking dependent files... Discovered: System.Xml.XmlDocument.Tests Starting: System.Xml.XmlDocument.Tests System.Xml.Tests.CopyToTests.CopyToCopiesClonedAttributesAtSpecifiedLocation [FAIL] System.Xml.XmlException : The 'r' character, hexadecimal value 0x72, cannot be included in a name. Stack Trace: E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(135,0): at System.Xml.XmlDocument.CheckName(String name) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlElement.cs(28,0): at System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(1014,0): at System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(599,0): at System.Xml.XmlDocument.CreateElement(String name) E:\src\oss\xml\src\System.Xml\tests\XmlDocument\XmlAttributeCollectionTests\CopyToTests.cs(14,0): at System.Xml.Tests.CopyToTests.CreateDocumentWithElement() E:\src\oss\xml\src\System.Xml\tests\XmlDocument\XmlAttributeCollectionTests\CopyToTests.cs(44,0): at System.Xml.Tests.CopyToTests.CopyToCopiesClonedAttributesAtSpecifiedLocation() Finished: System.Xml.XmlDocument.Tests (this might be related to Globalization tests too so leaving these here) Discovering: System.Globalization.Extensions.Tests Discovered: System.Globalization.Extensions.Tests Discovered: System.Xml.XmlDocument.Tests Starting: System.Globalization.Extensions.Tests Starting: System.Xml.XmlDocument.Tests System.Xml.Tests.LocalNameTests.ElementWithPrefix [FAIL] System.Xml.XmlException : The 'e' character, hexadecimal value 0x65, cannot be included in a name. Stack Trace: E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(135,0): at System.Xml.XmlDocument.CheckName(String name) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlElement.cs(28,0): at System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(1014,0): at System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(599,0): at System.Xml.XmlDocument.CreateElement(String name) E:\src\oss\xml\src\System.Xml\tests\XmlDocument\XmlNodeTests\LocalNameTests.cs(30,0): at System.Xml.Tests.LocalNameTests.ElementWithPrefix() System.Xml.Tests.CreateAttributeTests.CreateBasicAttributeTest [FAIL] System.Xml.XmlException : The 'a' character, hexadecimal value 0x61, cannot be included in a name. Stack Trace: E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(135,0): at System.Xml.XmlDocument.CheckName(String name) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlAttribute.cs(27,0): at System.Xml.XmlAttribute..ctor(XmlName name, XmlDocument doc) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(1004,0): at System.Xml.XmlDocument.CreateAttribute(String prefix, String localName, String namespaceURI) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(553,0): at System.Xml.XmlDocument.CreateAttribute(String name) E:\src\oss\xml\src\System.Xml\tests\XmlDocument\XmlDocumentTests\CreateAttributeTests.cs(15,0): at System.Xml.Tests.CreateAttributeTests.CreateBasicAttributeTest() System.Xml.Tests.AppendTests.AppendRemovesExistingAttribute [FAIL] System.Xml.XmlException : The 'r' character, hexadecimal value 0x72, cannot be included in a name. Stack Trace: E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(135,0): at System.Xml.XmlDocument.CheckName(String name) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlElement.cs(21,0): at System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(1014,0): at System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) E:\src\oss\xml\src\System.Xml\src\System\Xml\Dom\XmlDocument.cs(595,0): at System.Xml.XmlDocument.CreateElement(String name) E:\src\oss\xml\src\System.Xml\tests\XmlDocument\XmlAttributeCollectionTests\AppendTests.cs(14,0): at System.Xml.Tests.AppendTests.CreateDocumentWithElement() E:\src\oss\xml\src\System.Xml\tests\XmlDocument\XmlAttributeCollectionTests\AppendTests.cs(48,0): at System.Xml.Tests.AppendTests.AppendRemovesExistingAttribute() Finished: System.Xml.XmlDocument.Tests ``` +9895 area-System.Net Make sure TcpClient.ExclusiveAddressUse throws on Unix This is related to the failure that happened in #9849. cc: @stephentoub @ericeil +9905 area-System.Net Do a Debug.Assert in HttpContent.TryGetBuffer if we can't get it This will cause debug builds that start going down this path to fail, so we're notified if we start copying the data. cc @davidsh @stephentoub @CIPop +9911 area-System.Xml [dev/xml] Fix packaging for System.Xml and System.Xml.Linq +9913 area-System.Xml Fix or remove all BINCOMPAT TODO in System.Private.Xml +9915 area-System.Xml [dev/xml] Check if System.Text.StringBuilder should be used instead of System.Xml.BufferBuilder +9917 area-Infrastructure Enable CoreFX test runs on OneCoreUAP images for x86 and x64 CC @weshaggard @joshfree +9920 area-System.Text Expose XmlTextReaderImpl.DetectEncoding as more general API (also for text files) Seems pretty useful. cc: @tarekgh +9924 area-System.IO ZipArchive: Throw specific error messages for unsupported data ZipArchive decompression should throw a better error message when an entry is compressed using an unsupported method. Right now it says `The archive entry was compressed using an unsupported compression method.` It should say something like `The archive entry was compressed using [type] and is not supported` +9925 area-System.IO Compression: Add support for Deflate64 We allow decompression of Zip64 zips but not if they contain entries compressed with Deflate64. This is somewhat problematic, as zips created by the Windows explorer utility that are >2gb are compressed using Deflate64. ZLib doesn't support deflate64, so it would need to be our own implementation. +9928 area-Infrastructure build.sh fails on Arch Linux because Blob missing "init-tools.log: ``` Running: /home/paul/code/paulcbetts/corefx/init-tools.sh Installing 'https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/1.0.0-preview2-002733/dotnet-dev-arch.-x64.1.0.0-preview2-002733.tar.gz' to '/home/paul/code/paulcbetts/corefx/Tools/dotnetcli/dotnet.tar' Running: /home/paul/code/paulcbetts/corefx/Tools/dotnetcli/dotnet restore ""/home/paul/code/paulcbetts/corefx/Tools/1.0.25-prerelease-00517-05/project.json"" --packages /home/paul/code/paulcbetts/corefx/packages --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json Running: /home/paul/code/paulcbetts/corefx/packages/Microsoft.DotNet.BuildTools/1.0.25-prerelease-00517-05/lib/init-tools.sh /home/paul/code/paulcbetts/corefx /home/paul/code/paulcbetts/corefx/Tools/dotnetcli/dotnet /home/paul/code/paulcbetts/corefx/Tools ``` ``` paul@io:~/code/paulcbetts/corefx/Tools/dotnetcli% cat dotnet.tar BlobNotFoundThe specified blob does not exist. RequestId:ccf4fbc2-0001-0128-1f9c-d9576f000000 Time:2016-07-09T04:47:08.2585465Z ``` " +9932 area-System.IO Inconsistent default access mode for Package.Open(Stream) between .Net Core and .Net Framework The default access mode for `Package.Open(Stream)` is `ReadWrite` on .Net Core, while it's `Read` on .Net Framework. This means that a program that runs on one can fail on the other, in both directions. In my case, I have code like: ``` c# Package.Open(File.OpenRead(path)); ``` [This code](https://gist.github.com/svick/0dfbcef372c72127df791de8f4d1b471) runs successfully with `dotnet run -f net46`, but throws with `dotnet run -f netcoreap1.0`: ``` Unhandled Exception: System.ArgumentException: Update mode requires a stream with read, write, and seek capabilities. at System.IO.Compression.ZipArchive.Init(Stream stream, ZipArchiveMode mode, Boolean leaveOpen) at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode, Boolean leaveOpen, Encoding entryNameEncoding) at System.IO.Packaging.ZipPackage..ctor(Stream s, FileMode packageFileMode, FileAccess packageFileAccess) at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess) at System.IO.Packaging.Package.Open(Stream stream) at ConsoleApplication.Program.Main(String[] args) ``` The cause seems to be that on .Net Framework [`Package.Open(Stream)` calls `Open(stream, _defaultStreamMode, _defaultStreamAccess)`](http://referencesource.microsoft.com/#WindowsBase/Base/System/IO/Packaging/Package.cs,226), where `_defaultStreamAccess` is `FileAccess.Read`, while on .Net Core, [`Package.Open(Stream)` calls `Open(stream, s_defaultStreamMode)`](https://github.com/dotnet/corefx/blob/83432af/src/System.IO.Packaging/src/System/IO/Packaging/Package.cs#L149), which in turn calls `Open(stream, packageMode, s_defaultFileAccess)`, where `s_defaultFileAccess` is `FileAccess.ReadWrite`. I'm not sure how could this be fixed without breaking compatibility on .Net Core or .Net Framework. +9933 area-Meta All Linux ARM Emulator Cross Build legs in PRs are failing @Priya91 +9938 area-Serialization Change System.Json version number to match Mono? From @ericstj here: https://github.com/dotnet/corefx/pull/9897/files/391dae1d0f3789e0c11190f357e02fbcc03570db#r70150707 > I think this version needs to match the version xamarin has inbox (2.0.5.0). We should test that. +9946 area-System.ComponentModel Investigate return of System.ComponentModel.Composition.* Core has System.Composition.dll Core does not have S.ComponentModel.Composition and System.ComponentModel.Composition.DataAnnotations. These are in Xamarin for Android (unlike System.ComponentModel.Composition.Registration) These two need to get into Core. They are reflection heavy so that work has to happen first. I see a bit of ref.emit also, which hopefully isn't essential. +9949 area-Meta UWP-EF-SQlite (Not compatible with Prism Framework) "For some strange reason on a Blank App(UWP) with suggested (temporary)fixes solved the issues in 5.2. with SQLite on closely following the docs. However the fixes break the xaml designer when the Prism framework i.e. prism 6.1.0, unity 4.0.1 and on VS update 3 is applied. ""GridView, Stackpanel ... Etc cannot be children of the Grid"" is the error message. It's not just the grid but most layout controls seems to broken. And this might not be just prism but it seems also on Template 10 according to this..https://github.com/Windows-XAML/Template10/issues/1109 " +9952 area-Infrastructure 450+ warnings on a build! "They're all currently of the form: ``` C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. ``` or: ``` D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(74,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. ``` but it makes it really hard to spot important warnings. Replaces https://github.com/dotnet/corefx/issues/9464 cc: @weshaggard, @ericstj, @joperezr, @karajas " +9956 area-System.Net Improve behavior of TcpClient Dispose concurrent with ConnectAsync TcpClient.Dispose is not meant to be used concurrently with other operations on the instance, but some code does do so as a way to provide a cancellation mechanism. There are two easily hit issues with this: 1. On Unix, the ConnectAsync operation doesn't publish the actual Socket on which a connection was made until after the connection is established, as it needs to use temporary sockets to try each potential target address, and publishing it before connecting could end up publishing a Socket that won't end up being the actual one used. As such, if a Dispose occurs during the ConnectAsync operation, it won't end up disposing the socket being used to make the connection, such that the connection won't be canceled. 2. On all platforms, Dispose nulls out the client socket field. When the connection then subsequently completes, it hits a NullReferenceException while trying to dereference that field. This commit addresses both issues: a. When the client is disposed, on Unix we cancel a CancellationTokenSource, and each Socket we create is registered with that source to dispose the socket. That way, we dispose of each socket even if it hasn't been published onto the instance yet. b. We grab the Socket from the field and check for null prior to dereferencing it. cc: @cipop, @ericeil, @davidsh Fixes #9423 +9958 area-Infrastructure Support to run selected tests in run-test.sh Add --test-dir option to run selected tests only. To run given tests only, add '--test-dir' option to run-test.sh. The existing '--restrict-proj' option compares all test list to jugde if it runs or not. And it runs only matched tests with regex. If there is no matched rule among tests, this option will be useful. I will post PR soon. +9966 area-System.Security TripleDES is not allowing 16 byte keys "This works on full framework, but not core. This is a simple alteration of the dotnet new to isolate the problem (only other change is to add net452 to project.json). ``` csharp using System; using System.Security.Cryptography; using System.Text; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { var d = TripleDES.Create(); d.Key = ASCIIEncoding.ASCII.GetBytes(""1234567890123456""); Console.WriteLine(""Hello World!""); } } } ``` Running the above under net452 works fine, but under netcoreapp10 results in: ``` Unhandled Exception: System.Security.Cryptography.CryptographicException: Specified key is not a valid size for this alg orithm. at System.Security.Cryptography.SymmetricAlgorithm.set_Key(Byte[] value) at System.Security.Cryptography.TripleDES.set_Key(Byte[] value) at ConsoleApplication.Program.Main(String[] args) ``` " +9973 area-Infrastructure Build on specific Platform restores current Platform's binaries e.g. ``` PS D:\git\corefx\src\System.IO.Compression\tests [master]> msbuild /t:rebuildandtest /P:Platform=arm PS D:\git\corefx\src\System.IO.Compression\tests [master]> cd D:\git\corefx\bin/tests/Windows_NT.arm.Debug/System.IO.Compression.Tests/netcoreapp1.0/ PS D:\git\corefx\bin\tests\Windows_NT.arm.Debug\System.IO.Compression.Tests\netcoreapp1.0 [master]> dumpbin .\clrcompression.dll /headers Dump of file .\clrcompression.dll PE signature found File Type: DLL FILE HEADER VALUES 8664 machine (x64) ``` +9975 area-Infrastructure Windows Nano runs are not working on Jenkins Recently (after Jul 7 buildtools update) on build.cmd /p:OSGroup=Windows_NT is dropping assemblies that build for AnyOS to both tests/AnyOS.AnyCPU.Configuration/lib/netcoreapp1.0 and tests/Windows_NT.AnyCPU.Configuration/lib/netcoreapp1.0. These libs mostly have the builds file authored for AnyOS on netcoreapp1.0 and Windows_NT for net46 and netcore50, for ex, [System.AppContext.Tests.builds](https://github.com/dotnet/corefx/blob/master/src/System.AppContext/tests/System.AppContext.Tests.builds). This change is causing Windows Nano builds to fail, as there is no RunTests.cmd generated for the net46 and netcore50 sku in tests\Windows_NT.AnyCPU.Configuration\lib\netcoreapp1.0. The test TFM folder name is also wrong (netcoreapp1.0) for the net46 and netcore50 sku. cc @karajas +9979 area-System.Reflection Seg fault on CentOS in System.Reflection.Metadata.Tests "``` /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/bin/tests/AnyOS.AnyCPU.Release/System.Reflection.Metadata.Tests/netcoreapp1.0/RunTests.sh: line 297: 27365 Segmentation fault (core dumped) ./corerun xunit.console.netcore.exe System.Reflection.Metadata.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 13:51:22 Finished running tests. End time=20:51:36. Return value was 139 13:51:22 GDB was not found. Unable to print core file. 13:51:23 /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/Tools/tests.targets(253,5): warning MSB3073: The command ""/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/bin/tests/AnyOS.AnyCPU.Release/System.Reflection.Metadata.Tests/netcoreapp1.0/RunTests.sh /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/packages/"" exited with code 139. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/src/System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj] 13:51:23 /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/Tools/tests.targets(262,5): error : One or more tests failed while running tests from 'System.Reflection.Metadata.Tests' please check log for details! [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/src/System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj] ``` Log here: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/822/consoleFull#-17798639014b7730ef-150b-4be7-a00f-82ba6c50792b " +9981 area-System.Security Add Crypto provider wrappers Breakout of some Crypto types that are in Xamarin but not in Core. These are public types which suggest an implementation, but they should now defer to the standard impl. Similarly-prefixed things can/should be done as a single work item. (e.g. Aes\* is one small task). Ideally everything is [EditorBrowsable(Never)] ``` Type or Member Notes T:System.Security.Cryptography.AesManaged Cover over the instance returned by Aes.Create() T:System.Security.Cryptography.AesCryptoServiceProvider Cover over the instance returned by Aes.Create() T:System.Security.Cryptography.MD5CryptoServiceProvider Cover over the instance returned by MD5.Create() T:System.Security.Cryptography.RNGCryptoServiceProvider Cover over the instance returned by RandomNumberGenerator.Create() T:System.Security.Cryptography.SHA1CryptoServiceProvider Cover over the instance returned by SHA1.Create() T:System.Security.Cryptography.SHA1Managed Cover over the instance returned by SHA1.Create() T:System.Security.Cryptography.SHA256Managed Cover over the instance returned by SHA256.Create() T:System.Security.Cryptography.SHA384Managed Cover over the instance returned by SHA384.Create() T:System.Security.Cryptography.SHA512Managed Cover over the instance returned by SHA512.Create() T:System.Security.Cryptography.TripleDESCryptoServiceProvider Cover over the instance returned by TripleDES.Create() ``` +9982 area-System.Security Port System.Security.Cryptography.DSA ``` T:System.Security.Cryptography.DSA ``` Contract is System.Security.Cryptography.Algorithms. Windows: Port DSACng. Unix: All new code. Tests: Some tests exist in RedZone Desktop suite, needs a whole lot of tests. +9983 area-System.Security Port System.Security.Cryptography.HashAlgorithm ``` T:System.Security.Cryptography.HashAlgorithm (ICryptoTransform / incremental hashing) F:System.Security.Cryptography.HashAlgorithm.HashValue F:System.Security.Cryptography.HashAlgorithm.State ``` The incremental hashing methods and ComputeHash together can produce unexpected data and break the incremental hash state machine. In .NET Core 1.0 the incremental part was moved to a new type and the ICryptoTransform declaration was removed. Presumably requires bug-for-bug compat with Framework, and lots of bug-verifying tests. The other two are required for incremental hash mainly. Or derived types as a secondary thing. +9984 area-System.Security Port System.Security.Cryptography.RijndaelManaged, limited to AES This type is getting significant use. `T:System.Security.Cryptography.RijndaelManaged` We should bring it back as functional, but to make it just wrap Aes.Create(), and fail for any Rijndael settings which are not AES settings (since it looks like our Rijndael implementation restricted it to 128/192/256-bit keys already that really just means use a fixed block size). And make it be [EditorBrowsable(Never)] so IntelliSense never suggests it to someone (and we’ll hide it in a different contract/implementation assembly so it only gets picked up by the mscorlib forwarder anyways). Existing code may be copying extraordinarily stale samples which are merely recommending Rijndael-as-AES over DES/3DES. But, since no one used the Rijndael type directly, and it defines no new members, the compat shim RijndaelManaged should directly extend SymmetricAlgorithm. So pretty much every member just defers to the Aes.Create() object, with the possible exception of BlockSize: ``` public int BlockSize { get { return _aes.BlockSize; } set { // Values which were legal in .NET Framework RijndaelManaged but not .NET Core’s shim type if (value == 192 || value == 256) throw new PlatformNotSupportedException(some resource string saying raw Rijndael is not supported); // Any other invalid block size will get the normal “invalid block size” exception. _aes.BlockSize = value; } } ``` (Or, don’t special case it, and let it just throw the invalid block size exception; but that might be bad form) +9985 area-System.Net WebSocket.CloseAsync can throw when WebSocket.CloseOutputAsync has been previously called on Unix If a client calls WebSocket.CloseOutputAsync on an open WebSocket, a Close frame is sent and the WebSocket transitions into the CloseSent state. If it's then desired to wait until the response Close frame is received, for example to check the response status code that the server sends, a call to WebSocket.CloseAsync can then be made. This is necessary as otherwise the alternative is to poll the WebSocket status property until the state changes. This is also codified as CloseAsync is valid to call when the state is CloseSent. If the Close frame sent by the server is received and processed before the state check in WebSocket.CloseAsync is executed, the state will be Closed and CloseAsync will throw (only allowed states when calling CloseAsync are Open, CloseSent and CloseReceived). This is blocking WCF enabling the WebSockets transport for Unix platforms. +9986 area-System.Security Port missing X509Certificate members In System.Security.Cryptography.X509Certificates.X509Certificate -- Easy impl, just needs a couple tests (real cert, and new X509Certificate2() -- default ctor). ``` X509Certificate.GetCertHashString X509Certificate.GetEffectiveDateString X509Certificate.GetExpirationDateString X509Certificate.GetIssuerName X509Certificate.GetName X509Certificate.GetPublicKeyString X509Certificate.GetRawCertData X509Certificate.GetRawCertDataString X509Certificate.GetSerialNumberString ``` Should probably defer to the new PAL ctor instead of copying the Handle ctor. ``` X509Certificate.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate) X509Certificate2.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate) ``` Needed by SignedCms; can be deferred until that is ready. ``` T:System.Security.Cryptography.X509Certificates.X509IncludeOption ``` +9988 area-System.Xml Re-enable and fix Xsl tests loading xsl from dll Re-write these tests so that they don't load xsl from the dll These tests are marked with ActiveIssue This needs to be done as a part of dev/xml branch work +9989 area-System.Collections Lots of code duplication/type unsafety/messiness in System.Collections tests At the moment there appears to be a lot of messiness in the `System.Collections.*` tests. For example the tests [for each collection type](https://github.com/dotnet/corefx/blob/master/src/System.Collections/tests/Generic/HashSet/HashSet.Generic.cs) contains code related to generating the seed/explicitly saying what kinds of type parameters to test. This makes it very hard to add tests for new kinds of types. There is also a lot of `protected abstract` / `override` which makes the code hard to read without jumping back and forth between files, and things like [this](https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/Collections/IGenericSharedAPI.Tests.cs#L50-L55) are not typesafe and reduce readability, since the collection is passed as an argument to the method instead of the method being called on it (e.g. `Count(collection)` vs `collection.Count()`). I'm going to attempt to clean a lot of this code up, as part of #9379 and #9947. +9990 area-System.Security Port System.Security.Cryptography.*Formatters ``` Type or Member Estimate Contract Notes T:System.Security.Cryptography.AsymmetricKeyExchangeDeformatter XS System.Security.Cryptography.Primitives Essentially an interface, no tests. T:System.Security.Cryptography.AsymmetricKeyExchangeFormatter XS System.Security.Cryptography.Primitives Essentially an interface, no tests. (CreateKeyExchange(byte[], Type) could be omitted, or made virtual to ignore the 2nd argument, or leave as-is) T:System.Security.Cryptography.RSAOAEPKeyExchangeFormatter S- System.Security.Cryptography.Algorithms Omit the Rng member. It is never used externally or internally. Should just call new Encrypt(byte[], RSAEncryptionPadding) method, no fallback to Encrypt(byte[]) T:System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter S- System.Security.Cryptography.Algorithms Should just call new Decrypt(byte[], RSAEncryptionPadding) method. No fallback to Decrypt(byte[]) T:System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter S- System.Security.Cryptography.Algorithms Omit the RNG member. It is never used externally or internally. Should just call new Decrypt(byte[], RSAEncryptionPadding) method. No fallback to Decrypt(byte[]) T:System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter S- System.Security.Cryptography.Algorithms Omit the Rng member. It is never used externally and should not have been internally. Should just call new Encrypt(byte[], RSAEncryptionPadding) method, no fallback to Encrypt(byte[]) T:System.Security.Cryptography.AsymmetricSignatureDeformatter XS System.Security.Cryptography.Primitives Essentially an interface, no tests. (VerifySignature(HashAlgorithm) should be omitted) T:System.Security.Cryptography.AsymmetricSignatureFormatter XS System.Security.Cryptography.Primitives Essentially an interface, no tests. (CreateSignature(HashAlgorithm) should be omitted) T:System.Security.Cryptography.DSASignatureDeformatter S- System.Security.Cryptography.Algorithms Blocked behind DSA. Technically should be updated to allow newer hash algorithms (FIPS-186-3). T:System.Security.Cryptography.DSASignatureFormatter S- System.Security.Cryptography.Algorithms Blocked behind DSA. Technically should be updated to allow newer hash algorithms (FIPS-186-3). T:System.Security.Cryptography.RSAPKCS1SignatureDeformatter S- System.Security.Cryptography.Algorithms Just use the new VerifyHash(byte[], byte[], HashAlgorithmName, RSASignaturePadding) method, no other paths. T:System.Security.Cryptography.RSAPKCS1SignatureFormatter S- System.Security.Cryptography.Algorithms Just use the new SignHash(byte[], byte[], HashAlgorithmName, RSASignaturePadding) method, no other paths. ``` +9991 area-System.Security Port KeyedHashAlgorithm.KeyValue `F:System.Security.Cryptography.KeyedHashAlgorithm.KeyValue` Change an auto-prop to have a protected backing field. XS +9992 area-System.Security Port System.Security.Cryptography.xxTransform ``` T:System.Security.Cryptography.ToBase64Transform T:System.Security.Cryptography.FromBase64Transform ``` Need tests: the latter needs lots of whitespace tests. +9996 area-System.Net WindowsIdentity impersonation does not achieve delegation Setup: Client: IE or Chrome Server: Asp.Net Core 1.0 via IIS or WebListener, with Windows Auth enabled. Scenario: A client logs into a web app using windows credentials. The web app in turn impersonates that user to make outgoing HttpClient requests also using windows credentials. Expected: The outgoing HttpClient request should made using the impersonated user's credentials. Actual: The outgoing HttpClient request is made using the web apps default credentials. The scenario works fine when running Asp.Net Core 1.0 on .NET 4.6, it only fails on .NET Core. In both the IIS and WebListener scenarios the WindowsIdentity is constructed from an existing handle from a native API: https://github.com/aspnet/IISIntegration/blob/ed85f504d8da633202b3fec5fdf11e8d6153d447/src/Microsoft.AspNetCore.Server.IISIntegration/IISMiddleware.cs#L112. Since this works with .NET 4.6 apps we assume the original handle is valid and something is wrong inside WindowsIdentity or HttpClient. HttpClient does work with impersonated WindowsIdentities created locally (http://stackoverflow.com/questions/7710538/impersonate-with-username-and-password). Only the delegation scenario appears to be broken. @brentschmaltz @CIPop Ping me directly for repro code, there are a lot of different parts. +9997 area-System.Xml [dev/xml] Re-enable test when System.Globalization.SortKey is back XmlStringSortKey class is missing from XmlSortKey right now. Bring this back if System.Globalization.SortKey is available. The test (marked with ActiveIssue) should be re-enabled as well. This needs to be done as part of dev/xml branch work. +10000 area-System.Runtime Port S.Timers.* ``` T:System.Timers.Timer P:System.Timers.ElapsedEventArgs.SignalTime M:System.Timers.ElapsedEventArgs.get_SignalTime T:System.Timers.ElapsedEventHandler M:System.Timers.ElapsedEventHandler.#ctor(System.Object,System.IntPtr) M:System.Timers.ElapsedEventHandler.BeginInvoke(System.Object,System.Timers.ElapsedEventArgs,System.AsyncCallback,System.Object) M:System.Timers.ElapsedEventHandler.EndInvoke(System.IAsyncResult) M:System.Timers.ElapsedEventHandler.Invoke(System.Object,System.Timers.ElapsedEventArgs) M:System.Timers.Timer.#ctor M:System.Timers.Timer.#ctor(System.Double) P:System.Timers.Timer.AutoReset M:System.Timers.Timer.get_AutoReset M:System.Timers.Timer.set_AutoReset(System.Boolean) P:System.Timers.Timer.Enabled M:System.Timers.Timer.get_Enabled M:System.Timers.Timer.set_Enabled(System.Boolean) P:System.Timers.Timer.Interval M:System.Timers.Timer.get_Interval M:System.Timers.Timer.set_Interval(System.Double) P:System.Timers.Timer.Site M:System.Timers.Timer.get_Site M:System.Timers.Timer.set_Site(System.ComponentModel.ISite) P:System.Timers.Timer.SynchronizingObject M:System.Timers.Timer.get_SynchronizingObject M:System.Timers.Timer.set_SynchronizingObject(System.ComponentModel.ISynchronizeInvoke) M:System.Timers.Timer.BeginInit M:System.Timers.Timer.Close M:System.Timers.Timer.Dispose(System.Boolean) M:System.Timers.Timer.EndInit M:System.Timers.Timer.Start M:System.Timers.Timer.Stop E:System.Timers.Timer.Elapsed M:System.Timers.Timer.add_Elapsed(System.Timers.ElapsedEventHandler) M:System.Timers.Timer.remove_Elapsed(System.Timers.ElapsedEventHandler) M:System.Timers.TimersDescriptionAttribute.#ctor(System.String) P:System.Timers.TimersDescriptionAttribute.Description M:System.Timers.TimersDescriptionAttribute.get_Description T:System.Timers.ElapsedEventArgs T:System.Timers.TimersDescriptionAttribute ``` +10002 area-System.IO System.IO.IsolatedStorage can be referenced by netstandard1.4, but has no associated impl The [reference assembly](https://github.com/dotnet/corefx/blob/afa634708deb4b921dd1e0e6dc5f26ddd0e143b2/src/System.IO.IsolatedStorage/ref/project.json) for System.IO.IsolatedStorage targets netstandard1.4, but the [implementation](https://github.com/dotnet/corefx/blob/afa634708deb4b921dd1e0e6dc5f26ddd0e143b2/src/System.IO.IsolatedStorage/src/project.json) only targets netcore50. Therefore, you can build an app targeting netcoreapp1.0 (+ imports dnxcore50) that'll throw a FileNotFoundException since it can't load System.IO.IsolatedStorage. There is discussion to implement IsolatedStorage in other platforms in #9842, but until that's done, you shouldn't be able to reference IsolatedStorage from platforms where it isn't implemented. +10010 area-System.Net AcceptAsync(SocketAsyncEventArgs e) return true and never call the method of SocketAsyncEventArgs.Completed Im currently developing an window app. I would like to use AcceptAsync method. At the moment there appears to be a lot of messiness in the System.Net.Sockets . AcceptAsync(SocketAsyncEventArgs e) always return true and the method of Accept_Completed never be called.If there any come up with this problem and got the solution to it? `private void ProcessAccept(SocketAsyncEventArgs e)` `{` ``` e.Completed +=new EventHandler(Accept_Completed); e.AcceptSocket = null; //acceptEvtArgs.AcceptSocket = null; bool waitFlag = listeningSocket.AcceptAsync(e); if (!waitFlag) { // operation completed synchronously Accept_Completed(null, e); } ``` `}` +10011 area-System.Xml [dev/xml] Add System.Xml.XmlSerializer APIs to System.Xml +10012 area-System.Runtime How to hook into AppDomain.ProcessExit ? In regular .NETFramework console apps, I can hook into `AppDomain.CurrentDomain.ProcessExit` event to be notified when the console app terminates. This doesn't seem to be present in .NETCore. How else can my library get notified when the calling .NETCore console app terminates? +10013 area-System.Runtime Add methods to convert between hexadecimal strings and bytes "It is quite common to need to convert bytes to hex strings and back. The .NET Framework does not have an API to do that. Look at what lengths people have gone to to solve this problem for them: [How do you convert Byte Array to Hexadecimal String, and vice versa?](http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa) Many of those solutions are somehow bad (e.g. slow or broken or not validating). `BitConverter.ToString(byte[])` generates strings of a practically useless format: `BitConverter.ToString(new byte[] { 0x00, 0x01, 0xAA, 0xFF })` => `00-01-AA-FF`. I don't understand how this decision was made. This seems to be a special solution for some specific purpose (debug output?). Using this API requires `Replace(str, ""-"", """")` which is ugly and slow. Also, this API is not discoverable because it does not have ""hex"" in it's name. I propose adding an API that does the following: - Supports char[] and string - Supports specifying the output buffer to support zero-allocation scenarios - Supports upper- and lowercase - Fast (probably, this means working in-place using unsafe code) - Validates input - _No_ support for any kind of hex prefix (such as ""0x""), whitespace or digit separator (such as ""-"" or ""\n""). This is out of scope. The use case for char[] in- and outputs is low-allocation scenarios. The API could look like this: ```c# static class HexConvert { byte[] ToBytes(string input, int start, int count, HexFormat hexFormat); void ToBytes(string input, int start, int count, ArraySegment outputBuffer, HexFormat hexFormat); //Repeat the same for ArraySegment as input string ToString(ArraySegment bytes); char[] ToChars(ArraySegment bytes); void ToChars(ArraySegment bytes, ArraySegment outputBuffer); //Plus obvious convenience overloads int HexDigitToInteger(char val); //0-9A-F => 0-15. char IntegerToHexDigit(int value, HexFormat hexFormat); //0-15 => 0-9A-F } [Flags] enum HexFormat { UseDefaults = 0, Lowercase = 1 } //extensible ``` A possible extension would be to support `Stream` and `IEnumerable` as sources and destinations. I would consider this out of scope. I feel that converting hexadecimal strings is an important and frequent enough thing that this should be supported well. Of course, a ""light"" version of this proposal is also feasible (just support for string and byte[] with no user-provided output buffer). Not sure if anyone wants/needs lowercase hex, I don't but others might. This seems cheap enough to implement. Testing should be easily automatable. I don't see any particular usability problems. This is suitable for community contribution. " +10021 area-System.Security Possible unnecessary Padding Oracle problems with UniversalCryptoDecryptor.cs I noticed a manual padding implementation in here while I was helping someone debug some code. I'm no crypto expert, but I noticed variable timing on the padding verification, and possibly on the BlockCopy (depending on implementation) is it just a memcpy? Does this open you up to a padding oracle attack? You mention that the platform (I'm assuming BCrypt, doesn't support padding in CBC mode for you), but it does. All you have to do is turn padding on on your last call to BCryptEncrypt and BCryptDecrypt. I recently had to deal with this and I've linked it. https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-core/source/utils/crypto/bcrypt/CryptoImpl.cpp#L654 +10023 area-System.Xml [dev/xml] Fix debug enabled option in XslCompiledTransform Fix commented-out code (Marked with `//BinCompat TODO`) in XmlILModule supposed to run when XslCompiledTransform has enabled debug. When debug=true is passed to XslCompiledTransform, in the CompileQilToMsil step of the xsl transform the dynamic method is not being baked correctly (either due to the dynamic assembly not being generated correctly, or the dynamic module) and we get Object null reference error when the dynamic method Execute is being called. Also, re-enable tests tracking this issue. +10024 area-System.Net Dns.GetHostEntryAsync() throws SocketException if called before any other Socket APIs "# Repro Steps - dotnet new - Replace the contents of `Main()` with the following: ``` csharp Console.WriteLine(System.Net.Dns.GetHostEntryAsync(""127.0.0.1"").Result.AddressList.Length); ``` - dotnet run - App throws following exception: ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (Either the application has not called WSAStartup, or WSAStartup failed) ---> System.Net.Sockets.SocketException: Either the application has not called WSAStartup, or WSAStartup failed at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) at System.Net.Dns.<>c.b__16_1(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at ConsoleApplication.Program.Main(String[] args) ``` - Add the following before the call to `Dns.GetHostEntryAsync()`: ``` csharp new System.Net.Sockets.Socket(System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); ``` - App works correctly. CC: @stephentoub " +10028 area-System.Diagnostics EventSource for .Net Native does not consider properties for derived types of EventData In StubEnvironment.cs, type.GetProperties is defined as type.GetTypeInfo().DeclaredProperties, which doesn't return the properties of any derived types. It should be type.GetRuntimeProperties which does. +10031 area-System.Data System.Data.SqlClient connection issue on OS X "Attempting to open a connection to a SQL Server 2008R2 database from OS X results in a timeout during the login process: ``` System.Data.SqlClient.SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=1232; handshake=2559; [Login] initialization=5; authentication=18; [Post-Login] complete=56058; ---> System.ComponentModel.Win32Exception: Unknown error: 258 --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) ``` Initially found in an ASP.NET Core MVC Controller, I have recreated the issue with the following console program: ``` c# using System; using System.Data.SqlClient; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine(""Attempting to open connection...""); try { SqlConnection conn = new SqlConnection(""Data Source=server;Initial Catalog=database;User ID=user;Password=password;Connection Timeout=60;Application Name=dotnetcore""); conn.Open(); Console.WriteLine(""...Success""); conn.Close(); } catch (Exception ex) { Console.WriteLine(string.Format(""...{0}"",ex)); } } } } ``` Both the original ASP.NET MVC Controller and the console program work on Windows. I have not been able to test on Linux as I currently don't have an environment available. The OS X machine that the issue was found on can connect to the database using SQLPro for MSSQL. " +10040 area-System.Net Deadlock in WinHttpResponseStream While investigating #9785, I saw one System.Net.Http test run deadlock in some cancellation token registration management code. One thread was unregistering from a cancellation token: ``` 00 ntdll!ZwDelayExecution 01 KERNELBASE!SleepEx 02 CoreCLR!Thread::UserSleep 03 CoreCLR!ThreadNative::Sleep 04 System_Private_CoreLib_ni!System.Threading.Thread.Sleep(Int32) 05 System_Private_CoreLib_ni!System.Threading.SpinWait.SpinOnce() 06 System_Private_CoreLib_ni!System.Threading.CancellationTokenSource.WaitForCallbackToComplete(System.Threading.CancellationCallbackInfo) 07 system_net_http!System.Net.Http.WinHttpRequestState.DisposeCtrReadFromResponseStream() 08 system_net_http!System.Net.Http.WinHttpRequestCallback.OnRequestReadComplete(System.Net.Http.WinHttpRequestState, UInt32) 09 system_net_http!System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr, System.Net.Http.WinHttpRequestState, UInt32, IntPtr, UInt32) 0a system_net_http!System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr, IntPtr, UInt32, IntPtr, UInt32) 0b system_console!DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int32, Int64, Int32) 0c CoreCLR!UMThunkStub 0d winhttp!HTTP_REQUEST_HANDLE_OBJECT::_SafeAppCallback 0e winhttp!HTTP_REQUEST_HANDLE_OBJECT::_ControlledAppCallback 0f winhttp!HTTP_REQUEST_HANDLE_OBJECT::IndicateCompletionStatusCommon 10 winhttp!HTTP_REQUEST_HANDLE_OBJECT::IndicateCompletionStatusInline 11 winhttp!WinHttpReadData 12 system_console!DomainBoundILStubClass.IL_STUB_PInvoke(SafeWinHttpHandle, IntPtr, UInt32, IntPtr) 13 system_net_http!System.Net.Http.WinHttpResponseStream+<>c__DisplayClass17_0.b__0(System.Threading.Tasks.Task`1) 14 System_Private_CoreLib_ni!System.Threading.Tasks.Task.Execute() 15 System_Private_CoreLib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 16 System_Private_CoreLib_ni!System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 17 System_Private_CoreLib_ni!System.Threading.Tasks.Task.ExecuteEntry(Boolean) 18 System_Private_CoreLib_ni!System.Threading.ThreadPoolWorkQueue.Dispatch() 19 CoreCLR!CallDescrWorkerInternal 1a CoreCLR!MethodDescCallSite::CallTargetWorker 1b CoreCLR!MethodDescCallSite::Call_RetBool 1c CoreCLR!QueueUserWorkItemManagedCallback 1d CoreCLR!ManagedThreadBase_DispatchInner 1e CoreCLR!ManagedThreadBase_DispatchMiddle 1f CoreCLR!ManagedThreadBase_DispatchOuter 20 CoreCLR!ManagedThreadBase_FullTransitionWithAD 21 CoreCLR!ManagedThreadBase::ThreadPool 22 CoreCLR!ManagedPerAppDomainTPCount::DispatchWorkItem 23 CoreCLR!ThreadpoolMgr::ExecuteWorkRequest 24 CoreCLR!ThreadpoolMgr::WorkerThreadStart 25 CoreCLR!Thread::intermediateThreadProc 26 KERNEL32!BaseThreadInitThunk 27 ntdll!RtlUserThreadStart ``` So, `CancellationTokenSource.WaitForCallbackToComplete` is waiting for an already-executing registered callback. This appears to be running on the following stack: ``` 00 ntdll!ZwWaitForMultipleObjects 01 KERNELBASE!WaitForMultipleObjectsEx 02 CoreCLR!WaitForMultipleObjectsEx_SO_TOLERANT 03 CoreCLR!Thread::DoAppropriateAptStateWait 04 CoreCLR!Thread::DoAppropriateWaitWorker 05 CoreCLR!Thread::DoAppropriateWait 06 CoreCLR!CLREventBase::WaitEx 07 CoreCLR!CLREventBase::Wait 08 CoreCLR!AwareLock::EnterEpilogHelper 09 CoreCLR!AwareLock::EnterEpilog 0a CoreCLR!SyncBlock::EnterMonitor 0b CoreCLR!ObjHeader::EnterObjMonitor 0c CoreCLR!Object::EnterObjMonitor 0d CoreCLR!JITutil_MonEnterWorker 0e system_net_http!System.Net.Http.WinHttpResponseStream.CancelPendingResponseStreamReadOperation() 0f system_net_http!System.Net.Http.WinHttpResponseStream+<>c.b__17_1(System.Object) 10 System_Private_CoreLib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 11 System_Private_CoreLib_ni!System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean) 12 System_Private_CoreLib_ni!System.Threading.CancellationTokenSource.Cancel() 13 system_net_http_functional_tests!System.Net.Http.Functional.Tests.ResponseStreamTest+d__5.MoveNext() 14 System_Private_CoreLib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 15 System_Private_CoreLib_ni!System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.RunWithDefaultContext() 16 xunit_execution_dotnet!Xunit.Sdk.AsyncTestSyncContext+<>c__DisplayClass7_0.b__1(System.Object) 17 xunit_execution_dotnet!Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(System.Threading.SendOrPostCallback, System.Object) 18 System_Private_CoreLib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 19 xunit_execution_dotnet!Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 1a xunit_execution_dotnet!Xunit.Sdk.XunitWorkerThread+<>c.b__5_0(System.Object) 1b System_Private_CoreLib_ni!System.Threading.Tasks.Task.Execute() 1c System_Private_CoreLib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 1d System_Private_CoreLib_ni!System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 1e System_Private_CoreLib_ni!System.Threading.Tasks.Task.ExecuteEntry(Boolean) 1f System_Private_CoreLib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 20 CoreCLR!CallDescrWorkerInternal 21 CoreCLR!MethodDescCallSite::CallTargetWorker 22 CoreCLR!MethodDescCallSite::Call 23 CoreCLR!ThreadNative::KickOffThread_Worker 24 CoreCLR!ManagedThreadBase_DispatchInner 25 CoreCLR!ManagedThreadBase_DispatchMiddle 26 CoreCLR!ManagedThreadBase_DispatchOuter 27 CoreCLR!ManagedThreadBase_FullTransitionWithAD 28 CoreCLR!ManagedThreadBase::KickOff 29 CoreCLR!ThreadNative::KickOffThread 2a CoreCLR!Thread::intermediateThreadProc 2b KERNEL32!BaseThreadInitThunk 2c ntdll!RtlUserThreadStart ``` `WinHttpResponseStream.CancelPendingResponseStreamReadOperation` is trying to acquire a lock, which is already held by the first thread - the one waiting for the cancellation callback to complete. So, classic deadlock. I can't reproduce this reliably, but I found it while running System.Net.Http.Functional.Tests under WinDBG, which may alter timing enough to make this more likely to repro. +10041 area-System.Net Add Negotiate and MultipleSchemes code to the System.net test Prerequisites "Add the missing `showidentity.ashx` file required by [DefaultCredentialsTest.cs](https://github.com/dotnet/corefx/blob/32b96925efce0dde416103862d0f37877918ec94/src/System.Net.Http/tests/FunctionalTests/DefaultCredentialsTest.cs#L25) ``` C# // This test endpoint offers multiple schemes, Basic and NTLM, in that specific order. This endpoint // helps test that the client will use the stronger of the server proposed auth schemes and // not the first auth scheme. private static Uri MultipleSchemesAuthenticatedServer = new Uri($""http://{DomainJoinedTestServer}/test/auth/multipleschemes/showidentity.ashx""); ``` " +10044 area-System.Net Avoid wrapping async I/O in synchronous methods in the HTTP tests "One theory I had about a potential cause of #9785 and #9270 was that it might be due to ThreadPool starvation; if not enough threads are available in the ThreadPool for long enough that a timeout fires, we might see the dreaded ""a task was canceled"" exception. To test this, I ran the System.Net.Http tests with the CoreCLR ThreadPool configured to limit itself to a single thread, and to trigger a breakpoint whenever that thread was tied up for a long time: ``` set COMPlus_ThreadPool_ForceMinWorkerThreads=1 set COMPlus_ThreadPool_ForceMaxWorkerThreads=1 set COMPlus_ThreadPool_DebugBreakOnWorkerStarvation=1 ``` The breakpoint was triggered pretty consistently for the tests which use `DelegateStream`, due to that type's default of providing synchronous `Read` and `Write` methods in terms of the caller-supplied async methods; by blocking the current thread until the async I/O completes, we potentially require _another_ ThreadPool thread, which may not be available soon, if ever. This change forces callers to prove synchronous implementations if they've provided async methods, and updates the callers to do so. After this, I have been unable to find any additional ThreadPool starvation issues in these tests. Unfortunately this does not appear to have fixed the problem I was looking at, as I still saw occasional ""a task was canceled"" errors. But maybe it's a good change to make anyway. :smile: @stephentoub @CIPop @davidsh " +10045 area-System.Net Adding server code. Fixing IIS application deployment. - Adding the server code used for the Azure deployment and the internal IIS-based test infrastructure. The code was adapted from @davidsh's private repository. - Instructions and scripts to build the ASP.Net scripts before deployment. - Changed the powershell scripts to deploy the binaries. - Verified that the tests are passing. Disabled some of the HttpClient tests as we need to re-design them to use actual Kerberos/NTLM authentication and add the missing server-side files to the repository (#10041). - Moved the prerequisites within common\test\System\Net since they are specific to the networking contracts. We can move them back if other teams want to onboard their e2e tests within this infrastructure. Fixes #9048 @davidsh @stephentoub @vijaykota @shrutigarg @himadrisarkar PTAL +10046 area-System.Data System.Data.SqlClient.SqlDataReader has no close method? Do we have to worry about closing the SqlDataReader? I get the feeling that it's handled upon closing the connection. thanks for your attention. +10051 area-System.Net HttpClient ignores ExpectContinue setting when using curl "When running on a platform that requires the curl library to back HttpClient, the curl library will automatically add an ""Expect: 100-continue"" header to any POST request which is greater than 1kB. This action is ignoring any potential setting where the headers passed into the client explicitly requested the header to be disabled. For example, something like: ``` c# var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.ExpectContinue = false; var response = await httpClient.PostAsync(""http://www.example.com"", new ByteArrayContent(new byte[16384])); ``` will result in an Expect header despite the default header setting. This issue could likely be resolved by adding a block of code almost identical to the TransferEncodingChunked header handling in CurlHandler.EasyRequest.cs, line 618 or so. Sending an ""Expect:"" header to curl will instruct the library to omit the header even if it would have added it otherwise. " +10052 area-System.Net Remove automatic curl Expect header if the request disabled it Attempts to fix #10051, but having issues with the full build on my machine. Cannot verify it passes all tests but we are running it in production and it seems to work. +10054 area-System.Console Console encoding defaults to UTF-8 "With .NET Core, the default encoding on my W10 box is now UTF-8. In the full .NET Framework, this was IBM437. Running the code fragment below gives the following results: **.NET Core:** Speed 24┬á116,00 KB/s Encoding: Unicode (UTF-8) | utf-8 **.NET Framework:** Speed 24 116,82 KB/s Encoding: OEM United States | IBM437 I could of course change the code page that the command prompt uses, but I'm not sure everyone is willing to do this. ``` cs using System; using System.Globalization; namespace ConsoleApp2 { public class Program2 { public static void Main2(string[] args) { var culture = new CultureInfo(""nl-BE""); var speed = 24116m; var formatted = string.Format(culture, ""Speed {0:N2} KB/s"", speed); Console.WriteLine(formatted); Console.WriteLine(""Encoding: {0} | {1}"", Console.OutputEncoding.EncodingName, Console.OutputEncoding.ToString()); } } } ``` " +10057 area-System.Numerics Propose additions to System.Numerics.Vectors Originally posted in https://github.com/dotnet/corefx/issues/157 as this is also features which would benefit from ref passing into and out-of matrix... unfortunatly I though I could be clever and give an interface to a struct and get just a reference of that struct, but it ends up being a separate entity entirely. Especially in a full suite, the same vector(s) might be easily reference by multiple consumers without having to keep a reference of the object they are in generically. can we have additional matrix methods, that are rotate( axis1, axis2, angle) where axis1 and 2 are enumerations for 'forward', 'right' and 'up' or whatever native direction your matrices are? enum { forward, right, left, back[ward], up, down }; where you can specify a direction normal from the matrix and rotate that towards another vector, with a given angle. ( Another solution would be to propose the rules of the JIT and allow adding/extending classes in System.Numerics.Vectors from 3rd party places instead of also requiring optimizations only get considered if the code is in a specifically named DLL; since this does seem to be a 1-off ) In real physics you rarely would apply exactly on a singular axis. It's only convenient in navigating virtual spaces from current input devices... --- More specifically I have a RotateRelative( x, y, z ) method that internally has a tick counter that goes from 0 to 5 for the 6 combinations of roll, pitch and yaw... or rotation about primary axis... This calls a more general function that does `rotate( x_axis, /*to*/ y_axis, angle )` to roll left(or right depending on direction of your axis I guess, or -angle which is just a float) rotate pitch up (pulling back on a airplane yoke)... `rotate( y_axis, z_axis, angle )` /\* rotates pitch down in a positive direction. */ These are simply sin(angle),cos(angle) applied to 2 lines of the matrix. (unfortunately I think your matrix is column major, so the rows can't be treated as the direction numbers for the matrix... to apply forward/backward translation as scale(forward, x ) to move in space that much? getting too abstract again? --- a third method I think already exists to rotate a axis around an arbitrary axis by an angle? can build a quaternion for that and reduce to a matrix? --- Experimentation has shown that in small increments ( < 90 degrees/sec in 60th of that intervals for 90 degress/60 frames) it's not too inaccurate to just use the same order (roll, pitch, yaw) to get a resulting transformation. But I do prefer to just keep my matrix as the orientation representation with an offset that works as the origin of that matrix... which an inverse application of that can work as a camera, which is a rare computation compared to other relative motion calculations.... https://docs.google.com/document/d/1_6JdZ0VplMFpBeR3QOcV5vhlOGYyn52T4-fITgI6lbc I jotted that down a bit ago. https://d3x0r.org:444/javascript/test3d/ (self signed certificate, beware, I'm spreading knowledge, please login and save the sources yourself) ... I did update my fork of three.js to have to above mentioned methods. There's a few buttons at the top, Mode 1, Mode 2 and Mode 3; and Controls 1 and Controls 2. Mode 1 and Controls 1 is the default. Controls1 click and drag moves like first person camera, controls 2 , click and move is an obit camera (not really important; no motion really required) Mode 1 - top left cube is reference relative rotation cube stepping through each of the variations... The bottom 6 cubes have their relative rotation always applied in the same order (the order specified by the text over them) ... The 3 cubes above the bottom 6 are single rotation references for directionality... It turns 90 degress and then pauses. Mode 2 is the same as Mode 1 really except slightly faster; so the divergences appear sooner... Mode 1 - the lower 6 are slow motion, as if rotated sequentailly 90 degrees in each of it's directions; in the various combinartions. THe three rotations happen then a pause showing completed doing 90 degrees each way. Mode2 - always applies the rotations in the same order but in smaller steps; some of these are faster than the ideal (top left) and some are slower.... I'm not sure what the reason exactly is for the combinations of three that are the same. Mode 3 the lower 6 cubes are based on building a quaternion using roll pitch yaw... multiplying in order (if text is yaw, pitch, roll... the multiplication is ( ( yaw \* pitch ) \* roll ) . This is saved as a target vector, and then a slerp is used between initial position and the computed target... so especially with larger angles applied; the resulting computation is not the same... demonstrating quaternions to have similar problems... and ideally should also be muxed though an iteration of applied ordering. +10061 area-System.Data SqlConnection's BeginTransaction is slow in .net core 1.0 (up to 250ms) This code is very slow compared to the full .Net Framework (under 1ms), is this expected behavior? _con is SqlConnection and _con_trans is SqlTransaction ``` try { _con.Open(); _con_trans = _con.BeginTransaction(IsolationLevel.ReadCommitted); } catch { _con_trans = null; _con.Close(); throw; } ``` +10062 area-System.Globalization Compat work for Cultures (Globalization) (for Windows) "This work to port the missing APIs from the classes: CultureInfo DateTimeFormatInfo NumberFormatInfo RegionInfo DigitShapes CharUnicodeInfo StringInfo TextInfo You can get the list of the APIs we need to expose from @danmosemsft list https://microsoft.sharepoint.com/teams/netfx/corefx/_layouts/15/WopiFrame.aspx?sourcedoc=%7b79FEE733-9D22-44F8-9BD9-536FF8DF621E%7d&file=android.to.core.component2.xlsx&action=default Please double check the list to make sure we covered all missing APIs. Here is some important notes - Please don't expose any API deals with the LCID (locale ids). these are Windows specific and not recommended to use even on Windows. people always should use culture names instead of LCIDs. here is list of such APIs: - M:System.Globalization.CultureInfo.get_LCID - P:System.Globalization.CultureInfo.LCID - P:System.Globalization.TextInfo.LCID - M:System.Globalization.TextInfo.get_LCID - M:System.Globalization.CultureInfo.#ctor(System.Int32) - M:System.Globalization.CultureInfo.#ctor(System.Int32,System.Boolean) - M:System.Globalization.RegionInfo.#ctor(System.Int32) - M:System.Globalization.CultureInfo.GetCultureInfo(System.Int32) - Please don't expose CultureType, CultureInfo.GetCultures. these are Windows specific and not useful even on Windows. - There are some properties which make sense for Windows only and not to other OS's like CultureInfo.InstalledUICulture, CultureInfo.ThreeLetterWinodwsLanguageName and RegionInfo.ThreeLettersWindowsRegionName. we need to decide if we need to expose them. if we decide to expose them we'll have to initialize those with some fake values on non-Windows OS's. in my opinion these are not really useful properties. - There are some APIs depends on the OS and we need to figure a way to do it on non-Windows OS's. ICU is your way to do it. http://site.icu-project.org/ here is some examples of such APIs - M:System.Globalization.CultureInfo.get_ThreeLetterISOLanguageName - M:System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag(System.String) - M:System.Globalization.CultureInfo.CreateSpecificCulture(System.String) - M:System.Globalization.DateTimeFormatInfo.get_NativeCalendarName - M:System.Globalization.DateTimeFormatInfo.GetAllDateTimePatterns - M:System.Globalization.DateTimeFormatInfo.GetAllDateTimePatterns(System.Char) - M:System.Globalization.DateTimeFormatInfo.GetShortestDayName(System.DayOfWeek) - P:System.Globalization.DateTimeFormatInfo.NativeCalendarName - M:System.Globalization.NumberFormatInfo.get_DigitSubstitution - M:System.Globalization.NumberFormatInfo.get_NativeDigits - M:System.Globalization.NumberFormatInfo.set_DigitSubstitution(System.Globalization.DigitShapes) - P:System.Globalization.NumberFormatInfo.DigitSubstitution - P:System.Globalization.NumberFormatInfo.NativeDigits - M:System.Globalization.RegionInfo.get_CurrencyEnglishName - M:System.Globalization.RegionInfo.get_CurrencyNativeName - M:System.Globalization.RegionInfo.get_GeoId - M:System.Globalization.RegionInfo.get_ThreeLetterISORegionName - M:System.Globalization.RegionInfo.get_CurrencyEnglishName - M:System.Globalization.RegionInfo.get_CurrencyNativeName - M:System.Globalization.RegionInfo.get_GeoId - M:System.Globalization.RegionInfo.get_ThreeLetterISORegionName - M:System.Globalization.TextInfo.get_ANSICodePage - M:System.Globalization.TextInfo.get_EBCDICCodePage - M:System.Globalization.TextInfo.get_LCID - M:System.Globalization.TextInfo.get_MacCodePage - M:System.Globalization.TextInfo.get_OEMCodePage - P:System.Globalization.TextInfo.ANSICodePage - P:System.Globalization.TextInfo.EBCDICCodePage - P:System.Globalization.TextInfo.MacCodePage - P:System.Globalization.TextInfo.OEMCodePage - We need to decide if we are going to expose the the Serialization ""System.Runtime.Serialization"" so we can know if we need to port the serialization support in the globalization types. @danmosemsft can help with this. - CultureInfo uses user override bool flag in the constructors we are going to expose. I think this flag will not have any effect on non-Windows OS's. " +10063 area-System.Globalization Compat work for Calendars (for Windows) We need to port all missing APIs in the calendar APIs. you can look at System.Globalization.Calendar class and all types which subclass it. for the complete list please look at @danmosemsft list https://microsoft.sharepoint.com/teams/netfx/corefx/_layouts/15/WopiFrame.aspx?sourcedoc=%7b79FEE733-9D22-44F8-9BD9-536FF8DF621E%7d&file=android.to.core.component2.xlsx&action=default This should be straight forward porting as I am not expecting there is any dependency on the OS +10065 area-System.Globalization Compat work for collations/Sorting (for Windows) "This issue mainly to port all missing APIs in the classes CompareInfo, SortKey and SortVersion You can get the list of the APIs we need to expose from @danmosemsft list https://microsoft.sharepoint.com/teams/netfx/corefx/_layouts/15/WopiFrame.aspx?sourcedoc=%7b79FEE733-9D22-44F8-9BD9-536FF8DF621E%7d&file=android.to.core.component2.xlsx&action=default We already have some native PAL implementation which can be used to enable these types implementation on Linux. you can look at https://github.com/dotnet/coreclr/blob/7d1cd169944306ee25c847c77104722a60c2247c/src/corefx/System.Globalization.Native/collation.cpp especially GlobalizationNative_GetSortKey method. Here is some important notes: - Please don't expose any API deals with the LCID (locale ids). these are Windows specific and not recommended to use even on Windows. people always should use culture names instead of LCIDs. here is list of such APIs: - M:System.Globalization.CompareInfo.get_LCID - M:System.Globalization.CompareInfo.GetCompareInfo(System.Int32) - M:System.Globalization.CompareInfo.GetCompareInfo(System.Int32,System.Reflection.Assembly) - for SortVersion, I think we can use the ICU library version to implment this one as Windows implmentation is really depends on Windows APIs - We need to decide if we are going to expose the the Serialization ""System.Runtime.Serialization"" so we can know if we need to port the serialization support in the globalization types. @danmosemsft can help with this. " +10066 area-System.Globalization Compat work for String class globalization APIs (for Windows) We need to look at the string class for all APIs we need to port which uses CultureInfo object. ``` public static int Compare(string strA, int indexA, string strB, int indexB, int length, bool ignoreCase, CultureInfo culture); public static int Compare(string strA, int indexA, string strB, int indexB, int length, CultureInfo culture, CompareOptions options); public static int Compare(string strA, string strB, bool ignoreCase, CultureInfo culture); public static int Compare(string strA, string strB, CultureInfo culture, CompareOptions options); public bool EndsWith(string value, bool ignoreCase, CultureInfo culture); public bool StartsWith(string value, bool ignoreCase, CultureInfo culture); public string ToLower(CultureInfo culture); public string ToUpper(CultureInfo culture); ``` Note that we need to expose these from System.Globalization.Extensions contract as we don't want System.Runtime depends on Globalization at all. so I guess we can implement these as extension methods in the System.Globalization.Extensions library as we did with some similar APIs before. +10073 area-Meta Add members that were added in Core to types of classic assemblies to the Compat surface area. There are at least a couple of Compat surface areas that I have to update since we added some members to old types in Core. +10076 area-Infrastructure Add Ubuntu and CentOS Outerloop test coverage for Linux kernel 4.6.2 We're seeing some CLI / .NET Core bug reports where users have upgraded to 4.x kernels. We should add some outerloop runs to test this configuration: 1) Ubuntu 16.04 + kernel 4.6.2 2) CentOS 7.1 + 4.6.2 https://github.com/dotnet/coreclr/issues/6016 https://github.com/dotnet/cli/issues/3681 http://www.techrepublic.com/article/pro-tip-upgrade-ubuntu-to-the-4-x-kernel/ +10085 area-System.Reflection Missing method .IsValueType() Why don't we have IsValueType() method anymore? Workaround is easy typeof(xy).GetTypeInfo().IsValueType, but migration of existing code is painful. +10090 area-Infrastructure Enable coverage for test code (required for Unit and PAL testing) "Currently `/p:Coverage=true` excludes Test code. This leaves production code within all Unit and PAL tests without code coverage. A workaround is to to manually write a script to remove the `-filter:"" -[*.Tests]*""` portion from OpenCover: ``` batchfile call S:\c2\packages/OpenCover\4.6.519\tools\OpenCover.Console.exe -oldStyle -filter:""+[*]* -[xunit.*]*"" -excludebyfile:""*\Common\src\System\SR.*"" -nodefaultfilters -excludebyattribute:*.ExcludeFromCodeCoverage* -skipautoprops -hideskipped:All -threshold:1 -returntargetcode -register:user -target:CoreRun.exe -output:S:\c2\bin/tests/coverage\System.Net.NameResolution.Pal.Tests.coverage.xml -targetargs:""xunit.console.netcore.exe System.Net.NameResolution.Pal.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=failing -notrait category=nonwindowstests "" S:\c2\packages/ReportGenerator\2.4.3\tools\ReportGenerator.exe -targetdir:S:\c2\bin/tests/coverage\ -reporttypes:Html;Badges -reports:S:\c2\bin/tests/coverage\System.Net.NameResolution.Pal.Tests.coverage.xml ``` It would be great if we could have /p:CoverageAll to remove the Test code filter which in these cases is actually the production code directly referenced by the test project. " +10093 area-System.Runtime Proposal: LegacyAttribute "# The Problem A good thing about the .NET Core 1.0 surface area is that it made it clear what classes/methods were considered obsolete because for the most part, they just didn't exist. With the larger surface area planned for v2 a lot of this missing functionality is being brought back purely for compatibility reasons. How does a developer get informed that a given API is no longer recommended for use? `ObsoleteAttribute` is the heavy handed version of this which says ""You should stop using this immediately, it will be removed in a future version"". There needs to be an ""Info"" level version of this for things that are _considered_ to be obsolete but it's not appropriate to mark it is such. `[EditorBrowsable(EditorBrowsableState.Never)]` assists when writing new code but doesn't help someone identify usages in existing code. If I am using something that is no longer recommended I want to know about, and I would like my IDE to be able to tell me. Marking up libraries with a `LegacyAttribute` would be the first step to having that metadata. # Solution ``` c# [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Delegate, Inherited = false)] public sealed class LegacyAttribute : Attribute { public LegacyAttribute() public LegacyAttribute(string message) public string Message { get; } } ``` **Semantic Meanings** ""This exists for backwards compatibility. Nothing to see here. Move along"" ""This will work for as long as you need it but we recommend you use something else"" # Examples TimeZone can't be marked obsolete https://github.com/dotnet/corefx/issues/10074 Analyzers need metadata https://github.com/DotNetAnalyzers/Proposals/issues/37 Legacy collections can't be marked obsolete https://github.com/dotnet/corefx/issues/370 (It's common for Java developers to use ArrayList on .net, how do we educate that's not recommended anymore?) CharSet.Unicode inappropriate to mark obsolete https://github.com/dotnet/corefx/issues/7804 BitVector32 https://github.com/dotnet/corefx/issues/373 # Summary Compatibility has been one of the full .NET frameworks great strengths. There needs to be a way to deal with the downside of that which is education of APIs that still exist only for that compatibility story. " +10096 area-System.Net Fixing NameResolution initialization Fixing NameResolution initialization for Windows, adding more FunctionalTest coverage, adding a new UnitTest project. (Ran out of time but I plan to add more Unit Tests to validate complicated scenarios such as no IPv6 available.) Fixing the ParallelTestExecution script. Fixes #10024 @davidsh @stephentoub @ericeil @himadrisarkar PTAL +10099 area-Meta It would be best if there is a .NET Platform Standard API references. "And readers could choose the specific standard version, just like the old MSDN library does, switching between different .Net Framework versions. I guess cross-platform class library developers are tend to target ""netstandard1.x"", but the only API references availabe now is the .Net Core API docs. This might bring confusion and inconvenience. " +10103 area-System.Net Fix two WebSocket issues on Unix This fixes two issues in our managed ClientWebSocket implementation, both of which stemmed from a misunderstanding on my part of how things were supposed to work (or not work): - I thought that if the WebSocket was already in a CloseSent state and then received a close frame that it should transition to Closed. Instead, it's supposed to transition to CloseReceived. Similarly, I thought a WebSocket that was already in a CloseReceived state and then sent a close frame was supposed to transition to Closed. Instead, it's supposed to transition to CloseSent. The WebSocket is only supposed to transition to Closed when the connection is closed, e.g. as part of CloseAsync after a close frame has been both sent and received. - I thought that ReceiveAsync could only be used concurrently with a SendAsync. Turns out we need to support it being used concurrently with a Close{Output}Async. This commit fixes both. Fixes https://github.com/dotnet/corefx/issues/9985 cc: @mconnew, @davidsh, @cipop, @ericeil +10113 area-Infrastructure arm: build error for arm (wily) cross build "cross build for Ubuntu 15.10 ARM rootfs option: arm wily build option: cross arm native debug ``` -- Check for working C compiler: /usr/bin/clang-3.5 -- broken CMake Error at /usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message): The C compiler ""/usr/bin/clang-3.5"" is not able to compile a simple test program. It fails with the following output: Change Dir: /home/hseok82/rbp3/corefx/bin/obj/Linux.arm.Debug/Native/CMakeFiles/CMakeTmp Run Build Command:/usr/bin/make ""cmTryCompileExec1892218345/fast"" /usr/bin/make -f CMakeFiles/cmTryCompileExec1892218345.dir/build.make CMakeFiles/cmTryCompileExec1892218345.dir/build make[1]: Entering directory `/home/hseok82/rbp3/corefx/bin/obj/Linux.arm.Debug/Native/CMakeFiles/CMakeTmp' /usr/bin/cmake -E cmake_progress_report /home/hseok82/rbp3/corefx/bin/obj/Linux.arm.Debug/Native/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec1892218345.dir/testCCompiler.c.o /usr/bin/clang-3.5 -target armv7-linux-gnueabihf -mthumb -mfpu=vfpv3 --sysroot=/home/hseok82/rbp3/corefx/cross/rootfs/arm -o CMakeFiles/cmTryCompileExec1892218345.dir/testCCompiler.c.o -c /home/hseok82/rbp3/corefx/bin/obj/Linux.arm.Debug/Native/CMakeFiles/CMakeTmp/testCCompiler.c Linking C executable cmTryCompileExec1892218345 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1892218345.dir/link.txt --verbose=1 /usr/bin/clang-3.5 -target arm-linux-gnueabihf -B/home/hseok82/rbp3/corefx/cross/rootfs/arm/usr/lib/gcc/arm-linux-gnueabihf -L/home/hseok82/rbp3/corefx/cross/rootfs/arm/lib/arm-linux-gnueabihf --sysroot=/home/hseok82/rbp3/corefx/cross/rootfs/arm CMakeFiles/cmTryCompileExec1892218345.dir/testCCompiler.c.o -o cmTryCompileExec1892218345 -rdynamic /usr/bin/arm-linux-gnueabihf-ld: cannot find crt1.o: No such file or directory /usr/bin/arm-linux-gnueabihf-ld: cannot find crti.o: No such file or directory /usr/bin/arm-linux-gnueabihf-ld: cannot find crtbegin.o: No such file or directory /usr/bin/arm-linux-gnueabihf-ld: cannot find -lgcc /usr/bin/arm-linux-gnueabihf-ld: cannot find -lgcc_s /usr/bin/arm-linux-gnueabihf-ld: cannot find -lc /usr/bin/arm-linux-gnueabihf-ld: cannot find -lgcc /usr/bin/arm-linux-gnueabihf-ld: cannot find -lgcc_s /usr/bin/arm-linux-gnueabihf-ld: cannot find crtend.o: No such file or directory /usr/bin/arm-linux-gnueabihf-ld: cannot find crtn.o: No such file or directory clang: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: *** [cmTryCompileExec1892218345] Error 1 make[1]: Leaving directory `/home/hseok82/rbp3/corefx/bin/obj/Linux.arm.Debug/Native/CMakeFiles/CMakeTmp' make: *** [cmTryCompileExec1892218345/fast] Error 2 ``` " +10116 area-Serialization Serialization Support Does the Core 1.0 currently supports System.Runtime.Serialization like Serializable,SerializationFormatter attribute etc. We are in the process of upgrading 4.5.x to Core 1.0. +10117 area-System.Security Self-contained application not working on Mac because of openssl The docs state that it is possible to deploy a self-contained application via xcopy because there are no external dependencies but on Mac OS X this is not true. The Mac version requires a non-standard version of openssl that Apple does not support to be installed globally. This openssl version should be a part of dot net core files if needed. +10120 area-System.IO Request: a way to tell if two filepaths point to the same file On unix, the recommended way to tell whether two filepaths point to the same file is to use `stat` and compare `st_dev, st_ino`. http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/reference.html#equivalent On Windows, the recommended way is to use the win32 API `GetFileInformationByHandle` and compare `nFileIndexLow, nFileIndexHigh, dwVolumeSerialNumber`. You have to do this via p/invoke because there's no .NET wrapper for it. P/invoke was tolerable to me because it was all self-contained and easy. But as I port my code over to corefx, I honestly can't be bothered to go the whole nuget platform-specific native binary route. It's far too much work. I'd love it you could add an API to corefx to judge whether two filenames point to the same file. Judging by the huge number of requests for this on stackoverflow, it seems like a common bread-and-butter scenario. +10123 area-System.Net Refactor ClientWebSocket on Unix into ManagedWebSocket shareable by ASP.NET We want to avoid having two separate implementations of the core websocket protocol. We're going to refactor the corefx managed implementation into a file that's shareable by both corefx and ASP.NET. +10127 area-System.Runtime Add new Lazy(T value) ctor to System.Runtime contract and add tests Now that the implementation of #2578 has been merged for CoreCLR (https://github.com/dotnet/coreclr/pull/6304) and CoreRT (https://github.com/dotnet/corert/pull/1538), the new API needs to be exposed in the [`System.Runtime`](https://github.com/dotnet/corefx/blob/4fccde2c42f7670ebd098513c09b30772f833e84/src/System.Runtime/ref/System.Runtime.cs#L1202) contract (and versioned as appropriate) and tests added. +10133 area-System.Collections System.Collections.NonGeneric failed to bind I'm developing an application UWP for Windows 10 Mobile, everything works fine in debug mode, but when I generate the application packages in release mode, the resources to globalization do not work and the visual studio reports the following warning attached below. I'm using the Microsoft.NETCore.UniversalWindowsPlataform in version 5.2.2. Is there any way to solve this problem? Regards > ILTransform_0027: Assembly name 'System.Collections.NonGeneric' failed to bind. +10146 area-System.Net Documentation: Update docs on supported libcurl features on Linux and OSX. "This is a cross post from dotnet/KestrelHttpServer and WCF. I've closed that issue as it is not Kestrel related, but I apologize for the cross-posting, I'm still learning about the different repositories and what functions are where. I have some functionality that is working on windows, but fails on all of the unix droplets I've spun up. I'm seeing one type of failure message on ubuntu 14.04 and debian 8.5 and another type on fedora 23 and centos 7 when using BasicHttpsbinding and the connection factory. I've tried using the svcutil to generate the interface and I've also used the new WCF Connected Services utility and I've even crafted the entire message by hand and used SendAsync and PostAsync. All scenarios exhibit the same behavior. Here's the code: ```c# private string invokeSsoSoapRequest(string xmlRequest) { ChannelFactory factory = null; SingleSignOnSoap serviceProxy = null; var binding = new BasicHttpsBinding(); binding.Security.Mode = BasicHttpsSecurityMode.Transport; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; var baseAddress = new Uri(mySettings.ClientUrl); var endpointAddress = new EndpointAddress(baseAddress); X509Certificate2Collection collection = new X509Certificate2Collection(); if (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) { //windows file location collection.Import(mySettings.ClientPrivateKeyWindowsPath, mySettings.ClientPfxPass, X509KeyStorageFlags.PersistKeySet); }else { collection.Import(mySettings.ClientPrivateKeyUnixPath, mySettings.ClientPfxPass, X509KeyStorageFlags.PersistKeySet); } //parse pfx for client auth key factory = new ChannelFactory(binding, new EndpointAddress(baseAddress)); foreach (X509Certificate2 cert in collection) { if (cert.HasPrivateKey) { factory.Credentials.ClientCertificate.Certificate = cert; } } serviceProxy = factory.CreateChannel(); RequestTicketRequest request = new RequestTicketRequest(); RequestTicketRequestBody body = new RequestTicketRequestBody(); request.Body = body; request.Body.sRequestXML = xmlRequest; return serviceProxy.RequestTicket(request).Body.RequestTicketResult; } } ``` ` **Here are the errors I'm getting on Ubuntu and Debian:** > TimeoutException: The HTTP request to 'https://services.**********SingleSignOn.asmx' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. The above dotnet error claims the service timed out while waiting for a response (00:01:00), but a tshark trace shows the SOAP response negotiation failed when the client sent [RST, ACK] back the the remote webservice. See image below. The same trace in windows environment shows no errors and the transaction works and as you can see a few lines above, the server hello, certificate, and key exchanges appear to be successful, so I don't think I'm dealing with a cert issue. ![image](https://cloud.githubusercontent.com/assets/596849/16950334/60888112-4d85-11e6-8d29-66a2a8badd9b.png) I've also tried this in docker just to rule out any host config issues with the following docker config and see the same error: > FROM microsoft/dotnet:1.0.0-preview2-sdk > RUN mkdir -p /dotnetapp > WORKDIR /dotnetapp > EXPOSE 5000 > COPY . /dotnetapp > RUN dotnet restore > ENTRYPOINT [""dotnet"", ""run""]` I've tried this on Fedora and Centos, but get a different error related to the curl version that ships with those distros. I'm not entirely sure how to fix it, but I suspect I'd have the same issue if I got past it. **Here is the error I received on Fedora and Centos:** > System.PlatformNotSupportedException: The libcurl library in use (7.43.0) and its SSL backend (""NSS/3.24 Basic ECC"") do not support custom handling of certificates. A libcurl built with OpenSSL is required. *As a note, I compiled 7.50 curl against openssl and still received the above error. I'm a little bit of a linux noob, so I'm not sure if there's a way to force dotnet core to use the 7.5 installation, but as of now, dotnet core is still using 7.4.3. Here is my project.json ` { ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""System.ServiceModel.Http"": ""4.1.0"", ""System.Xml.XmlSerializer"": ""4.0.11"", ""Microsoft.Extensions.Options"": ""1.0.0"", ""System.Runtime.Extensions"": ""4.1.0"", ""System.Text.Encoding"": ""4.0.11"", ""System.Xml.XmlDocument"": ""4.0.1"", ""System.Xml.XDocument"": ""4.0.11"", ""System.Security.Cryptography.X509Certificates"": ""4.1.0"", ""System.Security.Cryptography.Csp"": ""4.0.0"", ""system.xml.xpath.xmldocument"": ""4.0.0"", ""JsonWebTokens"": ""1.2.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.0.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"" }, ""tools"": { }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"" ] } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true, ""debugType"": ""portable"" }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""Areas/**/Views"", ""appsettings.json"", ""web.config"", ""Dockerfile"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } }` As I said on my other post, I would appreciate any help and know that it's more than plausible I've done something wrong here. This is the only piece of this API stack that we haven't been able to port. Lastly, if I can provide any other information, please let me know! Thank you! " +10148 area-System.Runtime On `Array.Version` "The `InvalidOperation` exception is not thrown in cases where the underlying enumerable (in this case an `Array) is not enumerated using a`foreach` construct. The foreach construct is useful because of the optimizations which are allowed by such as well as the ability to be notified of new changes when they occur. This requires using a `try` and `catch` paradigm which can require more stack space inter alia. I propose that the private member which indicates the version of the `Array` be exposed such that caller would be allowed to observe this property without the use of reflection and without the use of stack preservation. This is for several reasons which I have outlined below in an example which originally arose out of a question I answered on Stack Overflow related to the use of `async` which is linked in the example. Thank you for your time and consideration. ``` #region http://stackoverflow.com/questions/37077434/async-version-of-generic-extensions?noredirect=1#comment61700684_37077434 static void _TestLogicForBeginInvoke(byte[] i) { int local; System.Console.WriteLine(""Delegate0=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(1); System.Console.WriteLine(""Tested0""); System.Threading.Thread.Sleep(3); System.Console.WriteLine(""Delegate0=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(1); System.Console.WriteLine(""Delegate0=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(5); System.Console.WriteLine(""Delegate0=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(10); System.Console.WriteLine(""Delegate0=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); } static void _TestLogicForBeginInvoke(ref byte[] i) { _TestOtherLogicForBeginInvoke(i); System.Console.WriteLine(""Tested1""); System.Threading.Thread.Sleep(3); int local; System.Console.WriteLine(""Delegate1=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(1); System.Console.WriteLine(""Delegate1=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(5); System.Console.WriteLine(""Delegate1=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(10); System.Console.WriteLine(""Delegate1=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); } static void _TestOtherLogicForBeginInvoke(byte[] i) { int local; System.Console.WriteLine(""Delegate2=>"" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(i, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(1); System.Console.WriteLine(""Tested2""); } static void _Callback(IAsyncResult iar) { System.Console.WriteLine(""Callback.CompletedSynchronously "" + iar.CompletedSynchronously); System.Console.WriteLine(""Callback.IsCompleted "" + iar.IsCompleted); int local; System.Console.WriteLine(""Callback.local "" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(iar.AsyncState as System.Array, out local) ? ""0"" : local.ToString())); System.Threading.Thread.Sleep(10); System.Console.WriteLine(""Callback IsCompleted "" + iar.CompletedSynchronously); System.Console.WriteLine(""Callback.local "" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(iar.AsyncState as System.Array, out local) ? ""0"" : local.ToString())); } /// /// on `State` [dhpfr] /// /// Observe the results of the use of BeingInvoke, in this case using arrays. /// [it seems(through repeated testing)] The behavior observed varies based on the use of the local but the orders of the invocations do not. /// None of these invocations result in a `block`. /// Thus it can probably be concluded from the results that the version can give precedent to the call based on the fact that /// 'Delegate2' / _TestOtherLogicForBeginInvoke ALWAYS is the first to output outside of this call and this is due to the version of the `Array` the call received. /// Thus it can also be concluded that `_version` member of the array is very important and should be exposed if not to observe this behavior then to allow for calls to /// be able to reject data based on that property if desired. /// This is especially important after a pause or otherwise where the state of the receieved may change and would possibly indicate to callers that they don't have to do the work they were originally called to do.. /// * /// The other way to handle this apparently is to use a or otherwise which can signal the work is abandoned in that version; /// and optionally observe newer versions of the data available by using a which contains token and it's source and thus /// can obtain a new token from the source if allowed and continue to do more work. /// This is because the call and it's stack were already prepared and is possibly more efficient then using the cleanup and restore just to do the same logic which would be able /// to be performed by retaining the state. /// static void TestInvocations() { TestInvocations(false); TestInvocations(true); //TestInvocations(false); //TestInvocations(true); } /// /// Arrays can only communicate data to or from the caller within the version of the array given to a call without the `ref` annotation. /// /// static void TestInvocations(bool useLocal = false) { //Callback is written after Tested and NotDone. System.Action call = new System.Action(_TestLogicForBeginInvoke); //This variable can be used in either the invocation or the callback but you must access it by reference. byte[] data = new byte[0]; int times = 0, register = -1; //Write output System.Console.WriteLine("".Output.useLocal="" + useLocal); //Start the call, show what call was made to the callback. IAsyncResult callInvocation = call.BeginInvoke(data, _Callback, data); System.Console.WriteLine("".IsCompleted "" + callInvocation.IsCompleted); System.Console.WriteLine("".Resize0""); System.Array.Resize(ref data, 1); byte[] local = null; using (callInvocation.AsyncWaitHandle) { //Wait for the call to be completed a few times while (callInvocation.IsCompleted.Equals(false)) { System.Console.WriteLine("".Resize1""); //When the local is used the call semantic is totally different as the version is maintained through the local. if (useLocal) { if (times <= 1) { System.Array.Resize(ref data, 1); local = data; data = null; System.Array.Resize(ref local, 2); } else { data = local; local = null; System.Array.Resize(ref data, 1); } } else System.Array.Resize(ref data, 1); System.Console.WriteLine(""._TestOtherLogicForBeginInvoke""); _TestOtherLogicForBeginInvoke(data); System.Console.WriteLine(""._TestLogicForBeginInvoke""); _TestLogicForBeginInvoke(ref data); System.Console.WriteLine("".NotDone1=>"" + times + "", "" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(data, out register) ? ""0"" : register.ToString())); System.Console.WriteLine("".Resize2""); /*if (times <= 1) System.Array.Resize(ref data, 1); else*/ System.Array.Resize(ref data, ++times); } } //Probably still not completed. System.Console.WriteLine("".IsCompleted "" + callInvocation.IsCompleted); //Can only be called once, should be called to free the thread assigned to calling the logic assoicated with BeginInvoke and the callback. call.EndInvoke(callInvocation); System.Console.WriteLine("".EndInvoke "" + callInvocation.IsCompleted + "","" + times); List calls = new List(); //Call again up to 5 times while (++times < 5) { if (times <= 1) System.Array.Resize(ref data, 1); else System.Array.Resize(ref data, ++register); callInvocation = call.BeginInvoke(data, _Callback, data); calls.Add(callInvocation); _TestOtherLogicForBeginInvoke(data); _TestLogicForBeginInvoke(ref data); System.Console.WriteLine("".NotDone2=>"" + times + "", "" + (Media.Common.Extensions.Array.ArrayExtensions.IsNullOrEmpty(data, out register) ? ""0"" : register.ToString())); } foreach (IAsyncResult storedCallInvocation in calls) { System.Console.WriteLine("".EndInvoke "" + storedCallInvocation.IsCompleted); call.EndInvoke(storedCallInvocation); } }//_Callback ``` " +10149 area-System.ComponentModel No DataAnnotation for integer A thing like [DataType(DataType.number)] could be valuable for managing validation directly in the model. Look at the #4995 issue for best understanding why I ask for it. Best regards. +10154 area-System.Net Accept HttpContent on any request method Overloads are needed to support HttpContent on methods like GetAsync. The HTTP specification does not prohibit body-level content on any of the method types. They may not be commonly used but I am aware of REST services that require complex body content in GET requests (in one case, it describes a variety of search parameters). +10155 area-Serialization Mismatched behavior for verify the KnownType with Desktop version When serialize a object with unknown type, if the serializer contains a DataContractResolver, it will end up with SerializationException. However, no exception thrown from Desktop Version. This is because, in core version, it always verify knowtype if there's resolver. In the code: System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs Core Version, which always return true when there's resolver : ``` c# protected virtual bool WriteTypeInfo(XmlWriterDelegator writer, DataContract contract, DataContract declaredContract) { if (XmlObjectSerializer.IsContractDeclared(contract, declaredContract)) { return false; } bool hasResolver = DataContractResolver != null; if (hasResolver) { WriteResolvedTypeInfo(writer, contract.UnderlyingType, declaredContract.UnderlyingType); } else { WriteTypeInfo(writer, contract.Name, contract.Namespace); } return hasResolver; } ``` Desktop Version, which always return false. ``` c# protected virtual bool WriteTypeInfo(XmlWriterDelegator writer, DataContract contract, DataContract declaredContract) { if (!XmlObjectSerializer.IsContractDeclared(contract, declaredContract)) { if (DataContractResolver == null) { WriteTypeInfo(writer, contract.Name, contract.Namespace); return true; } else { WriteResolvedTypeInfo(writer, contract.OriginalUnderlyingType, declaredContract.OriginalUnderlyingType); return false; } } return false; } ``` +10156 area-System.Net Use Loopback server for HttpClient testing. Today, we use http://corefx-net.cloudapp.net/ as an endpoint for much of the HttpClient testing. We've slowly been moving towards using a loopback server that gives back fixed HTTP responses to remove this dependency, (since it's one of the main places we see intermittent network issues that cause spurious test failures) but the set of testing we do against this is currently limited because the loopback server doesn't really understand HTTP so it can't do sophisticated actions based on requests. It should be possible to take the existing implementation of http://corefx-net.cloudapp.net/ and port it to run on ASP.NET Core 1.0. Once we've done that, we could use Kestrel locally to host a loop-back server that binds to a random port as part of setting up the HttpClient tests. This server could live for the lifetime of the dependent tests and then be shut down. There are a few steps to take here: - [ ] Port existing server to ASP.NET Core 1.0 (In progress, @ellismg is working on this) - [ ] Move server from above to be hosted within the tests themselves. - [ ] Figure out how to handle HTTPS HTTPS is interesting, because we need need a valid certificate for the server or we need to configure how we validate the remote certificate, which we only support on Windows and Unix when using an openssl based libcurl (not the case on CentOS, OSX and perhaps others). +10157 area-System.Threading Provide API to understand how many allocations have happened "As discussed in https://github.com/dotnet/coreclr/issues/6275 we would like an API to expose how many bytes were allocated since the beginning of a thread's life time. What about an API like this: ``` C# namespace System { public static class GC { public long GetAllocatedBytesForCurrentThread(); } } ``` The usage could like this: ``` C# [Fact] public void EnsureAllocations() { var allocationsBefore = GC.GetAllocatedBytesForCurrentThread(); var str = ""{'Items':["" + string.Join("","", Enumerable.Range(0, 3000).Select(i => ""{}"")) + ""]}""; var jObject = JObject.Parse(str); var allocationsAfter = Thread.GetAllocatedBytesForCurrentThread(); var allocations = allocationsAfter - allocationsBefore; const long MaximumBytesAllowed = 200 * 1024; Assert.LowerOrEqual(allocations, MaximumBytesAllowed); } ``` Questions: - Can/should this method track bytes per native OS thread or for the logical call context? - Does this track memory across async boundaries? Should it? @Maoni0 ### Updates - Based on @vancem's [concerns](https://github.com/dotnet/corefx/issues/10157#issuecomment-236678904) we've decided not to add `GetAllocatedBytesForThread(int managedThreadId)`. " +10165 area-System.Net Refactor ManagedWebSocket out of ClientWebSocket on Unix On Unix we use a managed implementation of WebSocket as the backing for ClientWebSocket. We'd like to be able to share this same implementation with ASP.NET so that we have a single implementation of the protocol across client and server. This change refactors out that support to make it more shareable. I made a few tweaks to the ClientWebSocket code shared across platforms. While we typically like to have argument validation be in the shared code, I moved the (minimal) argument validation into each of the Windows and managed-specific implementations of the PAL, so that the ManagedWebSocket implementation would perform that validation. I also added support for masking on the server (the current implementation assumed that all sent messages should be masked and all received messages should not be, but a server needs the opposite), though that isn't tested, so we may have some issues to fix there subsequently. I believe ASP.NET should be able to share just the ManagedWebSocket.cs and WebSocketValidate.cs files, plus define a handful of members on an SR type. If this is too complicated to manage well, I can try to simplify it further. cc: @anurse, @Tratcher, @ericeil, @davidsh, @cipop, @davidfowl +10172 area-Meta Question: Multi-Target for NetStandard 2.0 and .NET 4.5 ? Hello! A couple of weeks ago, there was an announcement that most of the BCL will get ported to .NET Core, which is plain awesome. E.g. I should then be able to enable most of my extensive framework library (> 100 projects) for .NET Core. Now, for the question: These features will be delivered when targeting NetStandard 2.0, but I will still have a requirement to support .NET 4.5 in several of my libraries (granted, just 10-15 libraries, but still). Will it be possible to target .NET 4.5 and NetStandard 2.0 with the same build artifact, i.e. without needing to build twice? Before NetStandard, I could do this by adding multiple platform identifiers in my nuget path. Best regards, Michael +10177 area-Infrastructure Win 10 outerloop machines need to be upgraded to Server 2016 TP5 The current image we are using for the outer loop runs has expired and so the machines will reboot often. We should move to TP5 (the latest Windows Server 2016 release) and also cut the Win10 machines over to the auto infrastructure stuff instead of having fixed machines. +10194 area-System.Threading Implement System.Threading.AsyncFlowControl From #10049 These methods rely on System.Threading.AsyncFlowControl and they should be added to the CAS stubs ``` M:System.Security.SecurityContext.SuppressFlow M:System.Security.SecurityContext.SuppressFlowWindowsIdentity ``` @stephentoub @danmosemsft @ellismg @bartonjs +10195 area-System.Security Implement System.Security.SecurityElement From #10049 These methods rely on System.Security.SecurityElement and should be added to the CAS stubs ``` M:System.Security.CodeAccessPermission.FromXml(System.Security.SecurityElement) M:System.Security.CodeAccessPermission.ToXml M:System.Security.ISecurityEncodable.FromXml(System.Security.SecurityElement) M:System.Security.ISecurityEncodable.ToXml M:System.Security.ISecurityPolicyEncodable.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.ISecurityPolicyEncodable.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.NamedPermissionSet.FromXml(System.Security.SecurityElement) M:System.Security.NamedPermissionSet.ToXml M:System.Security.PermissionSet.FromXml(System.Security.SecurityElement) M:System.Security.PermissionSet.ToXml M:System.Security.Permissions.EnvironmentPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.EnvironmentPermission.ToXml M:System.Security.Permissions.FileDialogPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.FileDialogPermission.ToXml M:System.Security.Permissions.FileIOPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.FileIOPermission.ToXml M:System.Security.Permissions.GacIdentityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.GacIdentityPermission.ToXml M:System.Security.Permissions.PrincipalPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.PrincipalPermission.ToXml M:System.Security.Permissions.PublisherIdentityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.PublisherIdentityPermission.ToXml M:System.Security.Permissions.ReflectionPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.ReflectionPermission.ToXml M:System.Security.Permissions.RegistryPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.RegistryPermission.ToXml M:System.Security.Permissions.SecurityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.SecurityPermission.ToXml M:System.Security.Permissions.SiteIdentityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.SiteIdentityPermission.ToXml M:System.Security.Permissions.StrongNameIdentityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.StrongNameIdentityPermission.ToXml M:System.Security.Permissions.TypeDescriptorPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.TypeDescriptorPermission.ToXml M:System.Security.Permissions.UIPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.UIPermission.ToXml M:System.Security.Permissions.UrlIdentityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.UrlIdentityPermission.ToXml M:System.Security.Permissions.ZoneIdentityPermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.ZoneIdentityPermission.ToXml M:System.Security.Policy.AllMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.AllMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.AllMembershipCondition.ToXml M:System.Security.Policy.AllMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.ApplicationDirectoryMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.ApplicationDirectoryMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.ApplicationDirectoryMembershipCondition.ToXml M:System.Security.Policy.ApplicationDirectoryMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.AllMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.AllMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.AllMembershipCondition.ToXml M:System.Security.Policy.AllMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.ApplicationDirectoryMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.ApplicationDirectoryMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.ApplicationDirectoryMembershipCondition.ToXml M:System.Security.Policy.ApplicationDirectoryMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.ApplicationTrust.FromXml(System.Security.SecurityElement) M:System.Security.Policy.ApplicationTrust.ToXml M:System.Security.Policy.CodeGroup.CreateXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.CodeGroup.FromXml(System.Security.SecurityElement) M:System.Security.Policy.CodeGroup.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.CodeGroup.ParseXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.CodeGroup.ToXml M:System.Security.Policy.CodeGroup.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.GacMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.GacMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.GacMembershipCondition.ToXml M:System.Security.Policy.GacMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.GacMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.GacMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.GacMembershipCondition.ToXml M:System.Security.Policy.GacMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.HashMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.HashMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.HashMembershipCondition.ToXml M:System.Security.Policy.HashMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.PolicyLevel.FromXml(System.Security.SecurityElement) M:System.Security.Policy.PolicyLevel.ToXml M:System.Security.Policy.PolicyStatement.FromXml(System.Security.SecurityElement) M:System.Security.Policy.PolicyStatement.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.PolicyStatement.ToXml M:System.Security.Policy.PolicyStatement.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.PublisherMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.PublisherMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.PublisherMembershipCondition.ToXml M:System.Security.Policy.PublisherMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.SiteMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.SiteMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.SiteMembershipCondition.ToXml M:System.Security.Policy.SiteMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.StrongNameMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.StrongNameMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.StrongNameMembershipCondition.ToXml M:System.Security.Policy.StrongNameMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.UrlMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.UrlMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.UrlMembershipCondition.ToXml M:System.Security.Policy.UrlMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) M:System.Security.Policy.ZoneMembershipCondition.FromXml(System.Security.SecurityElement) M:System.Security.Policy.ZoneMembershipCondition.FromXml(System.Security.SecurityElement,System.Security.Policy.PolicyLevel) M:System.Security.Policy.ZoneMembershipCondition.ToXml M:System.Security.Policy.ZoneMembershipCondition.ToXml(System.Security.Policy.PolicyLevel) ``` @stephentoub @danmosemsft @ellismg @bartonjs +10196 area-System.Runtime Implement System.ApplicationIdentity From #10049 These rely on System.ApplicationIdentity and should be added to the CAS stubs ``` M:System.Security.Policy.ApplicationTrust.#ctor(System.ApplicationIdentity) P:System.Security.Policy.ApplicationTrust.ApplicationIdentity M:System.Security.Policy.ApplicationTrust.get_ApplicationIdentity M:System.Security.Policy.ApplicationTrust.set_ApplicationIdentity(System.ApplicationIdentity) M:System.Security.Policy.ApplicationTrustCollection.Find(System.ApplicationIdentity,System.Security.Policy.ApplicationVersionMatch) M:System.Security.Policy.ApplicationTrustCollection.Remove(System.ApplicationIdentity,System.Security.Policy.ApplicationVersionMatch) P:System.Security.Policy.TrustManagerContext.PreviousApplicationIdentity M:System.Security.Policy.TrustManagerContext.get_PreviousApplicationIdentity M:System.Security.Policy.TrustManagerContext.set_PreviousApplicationIdentity(System.ApplicationIdentity) ``` @stephentoub @danmosemsft @ellismg @bartonjs +10197 area-Serialization Implement System.Runtime.Serialization The types are SerializationInfo, StreamingContext, IDeserializationCallback, ISerializable. From #10049 These methods rely on System.Runtime.Serialization.\* and should be added to the CAS stubs ``` M:System.Security.HostProtectionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Security.HostProtectionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Security.PermissionSet.System#Runtime#Serialization#IDeserializationCallback#OnDeserialization(System.Object) M:System.Security.Policy.Hash.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Security.Policy.HashMembershipCondition.System#Runtime#Serialization#IDeserializationCallback#OnDeserialization(System.Object) M:System.Security.Policy.HashMembershipCondition.System#Runtime#Serialization#ISerializable#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Security.Policy.PolicyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) ``` @stephentoub @danmosemsft @ellismg @bartonjs +10198 area-System.Data SqlClient cannot connect to Azure SQL db from a Nano Server machine I have a small web app which works fine from Windows 10 or Ubuntu hosts. When I run it on a Nano Server (2016 TP5) machine, though, connecting to an Azure SQL database (via EF.Core) fails with this exception: ``` An exception occurred in the database while iterating the results of a query. System.Data.SqlClient.SqlException: The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it. at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Bo olean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.GetResult[TResult](IEnumerable`1 valueBuffers) at lambda_method(Closure , QueryContext ) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass19_1`1.b__1(QueryContext qc) ClientConnectionId:ca7143d2-0c75-4a31-a770-a46d781c9d57 Error Number:20,State:0,Class:20 System.Data.SqlClient.SqlException: The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it. at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.GetResult[TResult](IEnumerable`1 valueBuffers) at lambda_method(Closure , QueryContext ) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass19_1`1.b__1(QueryContext qc) ``` The connection string I'm using is: ``` Server=tcp:iasveotbxa.database.windows.net,1433;Database=mikerou-widgets;User ID=ReproAdmin@iasveotbxa;Password=*****;Connection Timeout=300 ``` I've tried explicitly adding both `Encrypt=false` and `Encrypt=true` to the connection string, but neither helps. Is this perhaps just a nano server limitation or is there something that can be done either in my code or in System.Data.SqlClient to make this work? +10200 area-Infrastructure Cannot open resource editor in VS on corefx projects Opening src\System.Reflection.Metadata\src\Resources\Strings.resx in VS, I get the following: ``` Could not resolve mscorlib for target framework '.NETPortable,Version=v4.5,Profile=Profile7'. Thiscan happen if the target framework is not installed or if the framework moniker is incorrectly formatted. ``` C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.5\Profile\Profile7 is installed so I assume this has something to do with the build customization in corefx. Not necessarily related, but should we even be referencing portable profiles anywhere anymore? +10202 area-System.Reflection Cleanup post Reflection Api Restoration debt. Just a reminder to myself about some opportunistic cleanup and perf tasks once we've gotten the big Reflection type hierarchy done. - Remove all remaining AsType() calls. They're useless. - IntrospectionExtensions.GetType(this Type) This no longer require any special knowledge of Reflection.Core so there's no need for it to pipe through that ReflectionAugments interface. Just implement it inline. - Consider merging the rest of the ReflectionAugments callbacks into ReflectionExecutionDomainCallback. Now that they all live happily in System.Private.CoreLib, there's no need for so many confusing channels. - There's code (looking at you, Assignability.cs) that's probably doing Type/TypeInfo conversions that are no longer necessary. Tighten some screws there. +10206 area-System.Security Many ECCurve tests failing in CI on Unix I'm disabling these until we can get to the bottom of why they're failing in dev/api. ``` System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = PrimeShortWeierstrass, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 256, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: /mnt/j/workspace/dotnet_corefx/dev_api/ubuntu14.04_release_prtest/bin/tests/AnyOS.AnyCPU.Release/System.Reflection.Tests/netcoreapp1.0/System.Reflection.dll already exists, not copying. at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = PrimeMontgomery, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 384, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = PrimeShortWeierstrass, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 521, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 193, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 163, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 283, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 283, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = PrimeMontgomery, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 160, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNamed(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 193, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve '1481013368' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 163, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve '1481027824' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 283, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve '1481042400' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 283, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve '1481056944' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = PrimeMontgomery, IncludePrivate = False, IsCurveValidOnPlatform = True, KeySize = 160, ... }) [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyExplicit(CurveDef curveDef) System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNistP256 [FAIL] System.Security.Cryptography.CryptographicException : The specified curve 'Implicit' or its parameters are not valid for this platform. Stack Trace: at System.Security.Cryptography.ECCurve.Validate() at System.Security.Cryptography.ECDsaOpenSsl.GenerateKey(ECCurve curve) at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.TestRegenKeyNistP256() ``` +10207 area-System.Runtime Two ValueTuple tests started failing on Unix when updating to new CoreCLR ``` ValueTupleTests.TestEquals_GetHashCode [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: at ValueTupleTests.ValueTupleTestDriver`10.TestEquals_GetHashCode(ValueTupleTestDriver`10 other, Boolean expectEqual, Boolean expectStructuallyEqual) at ValueTupleTests.TestEquals_GetHashCode() ValueTupleTests.TestCompareTo [FAIL] Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: at ValueTupleTests.ValueTupleTestDriver`10.TestCompareTo(ValueTupleTestDriver`10 other, Int32 expectedResult, Int32 expectedStructuralResult) at ValueTupleTests.TestCompareTo() ``` e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/ubuntu14.04_release_prtest/113/consoleText cc: @jkotas, @jcouv +10211 area-System.Security SslStream fails validating CRL on Linux I am using the `MailKit` NuGet package to send emails on .NET Core 1.0. I am connecting to an Amazon SES endpoint (`email-smtp.eu-west-1.amazonaws.com:587`) using TLS. On Windows, it works fine, however on Linux, I get an error: ``` System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MailKit.Net.Smtp.SmtpClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) at MailKit.MailService.<>c__DisplayClass41_0.b__0() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MyApp.Web.Models.MailClient.d__7.MoveNext() ``` Drilling down into why the certificate validation fails, I found that the chain has `RevocationStatusUnknown` errors (`unable to get certificate CRL`). It looks like `SslStream` is not able to access CRL on Linux. +10215 area-System.Net Port Uri missing members ``` F:System.Uri.SchemeDelimiter F:System.Uri.UriSchemeFile F:System.Uri.UriSchemeFtp F:System.Uri.UriSchemeGopher F:System.Uri.UriSchemeHttp F:System.Uri.UriSchemeHttps F:System.Uri.UriSchemeMailto F:System.Uri.UriSchemeNetPipe F:System.Uri.UriSchemeNetTcp F:System.Uri.UriSchemeNews F:System.Uri.UriSchemeNntp M:System.Uri.#ctor(System.String,System.Boolean) M:System.Uri.#ctor(System.Uri,System.String,System.Boolean) M:System.Uri.Escape M:System.Uri.EscapeString(System.String) M:System.Uri.FromHex(System.Char) M:System.Uri.GetLeftPart(System.UriPartial) M:System.Uri.HexEscape(System.Char) M:System.Uri.HexUnescape(System.String,System.Int32@) M:System.Uri.IsBadFileSystemCharacter(System.Char) M:System.Uri.IsExcludedCharacter(System.Char) M:System.Uri.IsHexDigit(System.Char) M:System.Uri.IsHexEncoding(System.String,System.Int32) M:System.Uri.IsReservedCharacter(System.Char) M:System.Uri.MakeRelative(System.Uri) M:System.Uri.Parse M:System.Uri.Unescape(System.String) T:System.UriPartial F:System.UriPartial.Authority F:System.UriPartial.Path F:System.UriPartial.Query F:System.UriPartial.Scheme F:System.UriPartial.value__ ``` +10216 area-System.Runtime Fill out missing String members ``` M:System.String.#ctor(System.SByte*) M:System.String.#ctor(System.SByte*,System.Int32,System.Int32) M:System.String.Clone M:System.String.CompareTo(System.Object) M:System.String.Concat(System.Object,System.Object,System.Object,System.Object,__arglist) M:System.String.Copy(System.String) M:System.String.GetEnumerator M:System.String.GetTypeCode M:System.String.Intern(System.String) M:System.String.IsInterned(System.String) M:System.String.IsNormalized M:System.String.IsNormalized(System.Text.NormalizationForm) M:System.String.Normalize M:System.String.Normalize(System.Text.NormalizationForm) M:System.String.ToString(System.IFormatProvider) M:System.StringComparer.Create(System.Globalization.CultureInfo,System.Boolean) M:System.StringComparer.Equals(System.Object,System.Object) M:System.StringComparer.GetHashCode(System.Object) M:System.StringComparer.get_InvariantCulture M:System.StringComparer.get_InvariantCultureIgnoreCase ``` Some others are tracked in https://github.com/dotnet/corefx/issues/10066 +10217 area-Serialization Missing GetDataContractOriginalType method When serialize a object with DateTimeOffset property, the OriginalUnderlyType of DataContract is always DateTimeOffsetAgent type, which should be DateTimeOffset based on Desktop version. This is because it is missing following methods in DataContractCriticalHelper. ``` c# Type originalUnderlyingType; internal Type OriginalUnderlyingType { get { if (this.originalUnderlyingType == null) { this.originalUnderlyingType = GetDataContractOriginalType(this.underlyingType); } return this.originalUnderlyingType; } } // Maps adapted types back to the original type // Any change to this method should be reflected in GetDataContractAdapterType internal static Type GetDataContractOriginalType(Type type) { if (type == Globals.TypeOfDateTimeOffsetAdapter) { return Globals.TypeOfDateTimeOffset; } return type; } ``` +10218 area-System.Security Consider exposing the underlying error message when a CryptographicException is thrown On .NET Core, the error message returned when a cryptographic exception is thrown only includes the error code, [but not the description](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography/CapiHelper.cs#L156). Though not always super useful, having the error description helps understand what's happening when something goes wrong. For instance, here's the exception message you get when you don't have the permission to access the private key associated with a certificate stored in the machine store: System.Security.Cryptography.CryptographicException: OpenCSP failed with error code 2148073494. at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeProvHandle() at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeKeyHandle() at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize) at System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters parameters) at Internal.Cryptography.Pal.CertificatePal.<>c.b__59_0(CspParameters csp) at Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng) at Internal.Cryptography.Pal.CertificatePal.GetRSAPrivateKey() at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) at Microsoft.IdentityModel.Tokens.X509SecurityKey.get_PrivateKey() at Microsoft.IdentityModel.Tokens.X509SecurityKey.get_HasPrivateKey() On .NET Desktop, the exception message is `Keyset does not exist`. Related ticket: https://github.com/openiddict/openiddict-core/issues/169 /cc @bartonjs +10223 area-System.IO ZipArchive permissions on linux "ZipArchive doesn't currently allow manipulation permissions within. I ran into this when creating file in memory, dropping it into a zip and handing off to another system. With this code deployed on Linux, I'm not seeing a way to give the receiving system read access to contents of zip. **Example:** ``` c# using (var memoryStream = new MemoryStream()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { var lambdaFile = archive.CreateEntry(""index.js""); using (var entryStream = lambdaFile.Open()) using (var streamWriter = new StreamWriter(entryStream)) { streamWriter.Write(functionContent); } } memoryStream.Seek(0, SeekOrigin.Begin); svcFile.UploadFile(bucketName, s3Key, memoryStream); } ``` " +10224 area-System.Net Remove two Sockets tests "These tests try to connect to an endpoint that is not supposed to have an active listener, and expect to fail. However, there's no guarantee that some other test (or other process) is not listening on that endpoint. This leads to occasional failures in these tests (and may trigger failure in the _other_ test that happens to have been allocated the port in question). I don't know of a way to reliably force the failure these test cases are looking for, and I don't believe these tests provide enough value to justify ""heroic"" effor here. So I'm simply removing them. Fixes #8195. @CIPop @stephentoub " +10226 area-System.Security [dev/cms_unix] EnvelopedCms.Decrypt and EnvelopedCms.Encrypt don't support use of KeyAgreement certificates on Unix Due to lack of support of OpenSSL to use certificates using DH or ECDH for encryption and decryption of enveloped messages, the current implementation doesn't support decrypting for recipients holding only KeyAgreement certificates or encrypting using one. As of now performing any of these operations throws a PlatformNotSupported exception. The only way to work around this seems to be to manually parse the message to extract the encrypted content encryption key and use the appropriate API for the corresponding algorithm (DH or ECDH) to decrypt it and then use the key to decrypt the content blob. +10230 area-System.Net HttpClientHandler.AutomaticDecompression defaults to GZip|Deflate but not on documentation `HttpClientHandler.AutomaticDecompression`'s [documentation](https://docs.microsoft.com/en-us/dotnet/core/api/system.net.http.httpclienthandler#System_Net_Http_HttpClientHandler_AutomaticDecompression) states that default value is `None` when [implementation](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs#L15) says otherwise. Which one is correct? +10273 area-System.Security Signing an XML file in .NET Core **Signing an XML file in .NET Core, I can not use more SignatureXML.** +10277 area-System.Security Signature XML file with dotnet ".Net Framework 4.0, 4.5.2, 4.6 to use signing of XML use the dependencies: using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography; using System.Security.Cryptography.Xml; My sign function was as follows: ``` public void Assinar(string strArqXMLAssinar, string strUri, X509Certificate2 x509Certificado, string strArqXMLAssinado) { //Atualizar atributos de retorno com conteúdo padrão this.intResultado = 0; this.strResultadoAss = ""XML Assinado Com Sucesso!""; StreamReader SR = null; try { //Abrir o arquivo XML a ser assinado e ler o seu conteúdo SR = File.OpenText(strArqXMLAssinar); string vXMLString = SR.ReadToEnd(); SR.Close(); try { // Verifica o certificado a ser utilizado na assinatura string _xnome = """"; if (x509Certificado != null) { _xnome = x509Certificado.Subject.ToString(); } X509Certificate2 _X509Cert = new X509Certificate2(); X509Store store = new X509Store(""MY"", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; X509Certificate2Collection collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindBySubjectDistinguishedName, _xnome, false); if (collection1.Count == 0) { this.strResultadoAss = ""Detectou problemas com o certificado digital. (Código do Erro: 2)""; this.intResultado = 2; return; } else { // certificado ok _X509Cert = collection1[0]; string x; x = _X509Cert.GetKeyAlgorithm().ToString(); XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = false; try { doc.LoadXml(vXMLString); // Verifica se a tag a ser assinada existe é única int qtdeRefUri = doc.GetElementsByTagName(strUri).Count; if (qtdeRefUri == 0) { // a URI indicada não existe this.strResultadoAss = ""A tag de assinatura "" + strUri.Trim() + "" não existe no XML. (Código do Erro: 4)""; this.intResultado = 4; return; } // Exsiste mais de uma tag a ser assinada else { if (qtdeRefUri > 1) { // existe mais de uma URI indicada this.strResultadoAss = ""A tag de assinatura "" + strUri.Trim() + "" não é unica. (Código do Erro: 5)""; this.intResultado = 5; return; } else { if (doc.GetElementsByTagName(""Signature"").Count == 0) { try { SignedXml signedXml = new SignedXml(doc); signedXml.SigningKey = _X509Cert.PrivateKey; Reference reference = new Reference(); // pega o uri que deve ser assinada XmlAttributeCollection _Uri = doc.GetElementsByTagName(strUri).Item(0).Attributes; foreach (XmlAttribute _atributo in _Uri) { if (_atributo.Name == ""Id"") { reference.Uri = ""#"" + _atributo.InnerText; } } XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); reference.AddTransform(env); XmlDsigC14NTransform c14 = new XmlDsigC14NTransform(); reference.AddTransform(c14); signedXml.AddReference(reference); KeyInfo keyInfo = new KeyInfo(); keyInfo.AddClause(new KeyInfoX509Data(_X509Cert)); signedXml.KeyInfo = keyInfo; signedXml.ComputeSignature(); XmlElement xmlDigitalSignature = signedXml.GetXml(); // Gravar o elemento no documento XML doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true)); XMLDoc = new XmlDocument(); XMLDoc.PreserveWhitespace = false; XMLDoc = doc; // Atualizar a string do XML já assinada this.vXMLStringAssinado = XMLDoc.OuterXml; // Gravar o XML Assinado no HD StreamWriter SW_2 = File.CreateText(strArqXMLAssinado); SW_2.Write(this.vXMLStringAssinado); SW_2.Close(); } catch (Exception caught) { if (intResultado == 0) { this.intResultado = 3; this.strResultadoAss = caught.Message; return; } } } } } } catch (Exception caught) { if (intResultado == 0) { this.intResultado = 6; this.strResultadoAss = caught.Message; return; } } } } catch (Exception caught) { if (intResultado == 0) { this.intResultado = 1; this.strResultadoAss = caught.Message; return; } } } catch (Exception ex) { if (intResultado == 0) { this.intResultado = 6; this.strResultadoAss = ex.Message; return; } } finally { SR.Close(); } } ``` Does anyone know how this is now done in dotnet core? Cross-post from dotnet/core#234 /cc @ralmsdeveloper " +10299 area-Infrastructure Add ARM64 private jobs to Jenkins Adds ARM64 build and test job definition to the Jenkins netci.groovy file. For now only private job initiations are allowed by a small set of users, though both per-push and daily triggers are coming. depends on: https://github.com/dotnet/corefx/pull/10043, https://github.com/dotnet/buildtools/pull/906, SNI ARM64 Codeflow, https://github.com/dotnet/corefx/pull/10429 remaining ARM64 work: - Merge the above PRs. - Push a commit to dotnet-buildpipeline to add an ARM64 invocation to the pipelines.corefx.json file. - Add 'arm64' labeled x64 machines to Jenkins. - Bump the CoreFX buildtools version to consume the above changes as a part of this PR. - Merge this PR - Kick off some private test jobs on Jenkins to ensure the targets and scripts function as expected. Make changes where necessary. - Push a(nother) PR to CoreFX to enable per-push and daily builds (currently commented out). resolves https://github.com/dotnet/corefx/issues/6899 @mmitche @stephentoub @gkhanna79 @ericstj @weshaggard @kyulee1 @Priya91 +10302 area-System.Net Remove duplicate addresses from the result returned from getaddrinfo. `getaddrinfo` returns one entry per socket type (raw, datagram, stream), for each address. We don't currently take this into account, resulting in duplicate IP addresses returned from all DNS lookups on Linux. This change filters the list to include only unique IP addresses. It also consolidates the handling of these results in one place (we previously had two separate copies of essentially the same code). Fixes #9764. @CIPop @stephentoub +10303 area-System.Net Fix failure in MulticastInterface_Set_AnyInterface_Succeeds Before sending data to the multicast address, initiate the receive asynchronously. Otherwise, the packets might all be thrown away before we get a chance to receive one. Fixes #9538. +10304 area-Infrastructure Add a new perf job to Jenkins I am adding in a new job that will run our performance tests in Jenkins. Just starting with Windows for now, and will add Linux later. +10305 area-System.Xml Some Xsl tests don't work on non-coreclr platforms Projects affected: - XsltCompiler - System.Xml.Xsl.XslCompiledTransformApi.Tests - System.Xml.Xsl.XslTransformApi.Tests (partially) - XsltScenarios.Tests (partially) - check all xml projects + Serialization.Xml + Serialization.Json test projects Two issues: - System.Runtime.Loader should not be used by project (it's making the project need to use netstandard1.5 instead of 1.3) - few of the libraries won't work on UAP: System.Diagnostics.Process Basically: fix project.json to do what other test projects do and fix the compile/restore errors. +10307 area-System.Net Remove TODO comment from Socket ArgumentValidation tests "The Accept/Connect suggestions in this comment don't make much sense in the current API, as there is no ""disconnect"" API in CoreFx. The End\* suggestions would be great, except that the public Begin_/End_ methods are implemented using generic wrappers over Task-based async methods, and so are not likely to ever pass such tests. It doesn't seem worth complicating the implementation for this. Fixes #7852 " +10308 area-System.Net Change ActiveIssue to PlatformSpecific for closed issue #5832. +10309 area-System.Net Change ActiveIssue to PlatformSpecific for issue 4002. "There's no guarantee on non-Windows platforms that ""localhost"" will resolve to v4 and v6 addresses. Fixes #4002. " +10310 area-System.Security [dev/cms_unix] Encryption with variable keylength ciphers in EnvelopedCms for Linux not supported Ciphers that support variable keylengths with the same OID currently only support encrypting with the default keylength as OpenSSL only allows to change these in the CTX, but the APIs for CMS_ContentInfo of type EnvelopedData for encryption only take the EVP_CIPHER pointer. There's a EVP_CIPHER_CTX_getcipher macro wich returns a pointer to its cipher, but that cipher still retains the default keylength regardless of the changes made to the CTX. As of now the documented cases are RC2 and RC4 which when given a key length other than 0 or the default one will throw a PlatformNotSupportedException. +10311 area-System.Security [dev/cms_unix] Wrong key length when decoding EnvelopedCms in Linux encrypted with RC4 When decoding an DER blob that represents envelopedData using EnvelopedCms.Decrypt incorrectly reports the encryption algorithm's key length to be 0 always instead of the one used to encrypt the message. This currently happens as there is a bug when setting the asn1 parameters in the call to OpenSSL to retrieve the key length. +10314 area-System.Diagnostics EventSource - need to integrate sources from CoreCLR to .Net Native The sources for .Net Native are behind CoreCLR, they need to be updated to receive the latest bug fixes. +10322 area-System.Xml XmlResolver not public I spent a little while trying to port XmlPrime (XQuery 3.0, XSLT 2.0) to .NET Core. The change to make XmlResolver internal and the consequent removal of passing an XmlResolver via XmlReaderSettings is a blocking issue for us. If I have understood the code correctly, XmlReader is now limited to resolving files on the local file system. +10325 area-System.Xml XPathItem constructor not public I have spent a little while attempting to port XmlPrime (XQuery 3.0, XSLT 2.0) library to .NET core. XPathItem's constructor is now internal. This means we cannot derive new XPathItem types. We rely on this to add XPathAtomicValue, XPathFunctionItem, XPathMap and XPathArray which are part of the XQuery 3.1 data model. This would essentially mean we would have to entirely abandon use of System.Xml.XPath. ``` // Constructor is internal because abstract member was removed and it might be back in some time. // If someone would have created derived class without that member and we would add it back // it would break his code. internal XPathItem() { } ``` +10330 area-Infrastructure Windows native arm64 toolset arm64 builds currently use a private toolset which has not been released publicly yet. There are a few spots in the Windows Native build that require a toolset directory be passed in manually. When the toolset is publicly released, we should modify the build to use that instead. arm64 workaround added in https://github.com/dotnet/corefx/pull/10043 +10334 area-System.IO Add tests for newly added APM wrapper methods on System.IO and System.IO.Compression In dev/api branch we added some APM methods to System.IO and System.IO.Compression but we didn't add tests for them. This issue is to track the debt we have for them. related: #10181 +10335 area-Meta Remove boilerplate from test projects We should create some larger supports clauses to help reduce boiler-plate in our test projects. EG: `coreFx.Test.net46` should include tuples not just for net46, but also for net461, net462, etc. This is always the correct thing to do. We should also create some convenience supports clauses that allow tests to say they should apply to all the frameworks that support a particular netstandard version. EG: coreFx.Test.netstandard1.3 should include TFM/RID tuples for net46, netcore50, and netcoreap1.0 (as well as the future versions as stated above). This allows a test that can run everywhere to have minimal boilerplate in the project.json. Only if a test needs to hand-select frameworks does it need to use the more framework-granular clauses as mentioned above. We should also have some simple docs that explain the purpose of frameworks and supports in our test project.json's. /cc @ianhays +10338 area-Meta "Microsoft.NETCore.UniversalWindowsPlatform is missing some packages after ""exclude"": ""compile"" updates" "We updated all packages to hide their implementation dependencies with ""exclude"": ""compile"". We did this because implementation dependencies change regularly and aren't seen as part of the compatibility contract of a package. To ensure that folks don't rely on our packages for their implementation dependencies we use `""exclude"": ""compile""` in the packages. This transition caused at some package to be excluded entirely from the UWP meta-package since they were only referenced transitively. We should consider adding these back unless we specifically want to keep them out of the default reference set. /cc @weshaggard @terrajobst The dropped references are: - System.Collections.NonGeneric - System.Collections.Specialized - System.Threading.Overlapped - System.Xml.XmlDocument ## Workaround For folks that hit missing types from one of these packages after upgrading to Microsoft.NETCore.UniversalWindowsPlatform they can reference the packages directly as follows. ``` json ""System.Collections.NonGeneric"": ""4.0.1"", ""System.Collections.Specialized"": ""4.0.1"", ""System.Threading.Overlapped"": ""4.0.1"", ""System.Xml.XmlDocument"": ""4.0.1"" ``` " +10344 area-System.Net Hang in System.Net.Security.Tests (Windows debug) in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3118/ Looking through the log, System.Net.Security.Tests is the only test that seems to have started, but not finished. This failed while testing PR #10309, which just changed an attribute on some Sockets tests, so isn't likely to have caused these tests to hang. +10345 area-System.Net Dns.GetHostEntryAsync(IPAddress.None) succeeds on macOS `await Dns.GetHostEntryAsync(IPAddress.None)` throws a SocketException on Windows, but doesn't on Unix. I don't know if the right answer here is that the failing test should be made platform-specific for Windows (i.e. this is expected behavior on Unix) or whether there's a bug in the Unix implementation we need to fix so that this case also fails. +10361 area-System.Diagnostics How to start the system default browser. "The following line doesn't work: Process.Start(""http://localhost:5000""); Microsoft said that that was the official way to start a new browser, a long time ago, at: https://support.microsoft.com/en-us/kb/305703 Is there any multiplatform way to do this now? Will it ever be? " +10365 area-System.Runtime Using AssemblyLoadContext.Default.Resolving event quits with ExecutionEngineException If the `Default.Resolving` event is used to resolve an assembly, the process quits with a `System.ExecutionEngineException`. Here is a repro project (run as console app or xUnit test): [System.Runtime.Loader.Tests.zip](https://github.com/dotnet/corefx/files/385861/System.Runtime.Loader.Tests.zip) ![assemblyloadcontext_resolving](https://cloud.githubusercontent.com/assets/11719160/17173083/8dc5f846-53f0-11e6-8c24-ca71964507e0.png) I'm stuck on this issue here: https://github.com/jcansdale/TestDriven.Net-Issues/issues/7 +10373 area-Infrastructure Update versioning documentation With the distinction between `build-native` and `build-managed`, now the documentation is not reflecting the process to custom a version number. For example, provide explanation about why using OfficialBuildID only affects build-managed and how the native binaries are generating their version according to it. +10374 area-Serialization DataContractJsonSerializer failing in Microsoft.NetCore.UniversalWindowsPlatform 5.2.2 Our library is failing to deserialize blob of data when using Microsoft.NetCore.UniversalWindowsPlatform 5.2.2 in Visual Studio 2015. The deserialization works as expected for 5.1.0 and 5.0.0. No parameterless constructor defined for this object. at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at System.Runtime.Serialization.XmlFormatReaderGenerator.UnsafeGetUninitializedObject(Type type) at ReadAuthenticationResultFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] ) at System.Runtime.Serialization.Json.JsonClassDataContract.ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.JsonDataContract.ReadJsonValue(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadJsonValue(DataContract contract, XmlReaderDelegator reader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns) at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, String name, String ns) at ReadAuthenticationResultExFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] ) at System.Runtime.Serialization.Json.JsonClassDataContract.ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.JsonDataContract.ReadJsonValue(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadJsonValue(DataContract contract, XmlReaderDelegator reader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName) at System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadObject(XmlDictionaryReader reader) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadObject(Stream stream) at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(Stream stream) at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResultEx.Deserialize(String serializedObject) at Microsoft.IdentityModel.Clients.ActiveDirectory.TokenCache.Deserialize(Byte[] state) at AdalCacheIssue.MainPage.d__1.MoveNext() +10375 area-System.Runtime Segmentation fault while running System.Runtime.Tests on CI ``` /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/bin/tests/AnyOS.AnyCPU.Release/System.Runtime.Tests/netcoreapp1.0/RunTests.sh: line 290: 57218 Segmentation fault (core dumped) ./corerun xunit.console.netcore.exe System.Runtime.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/1162/consoleFull +10382 area-Infrastructure BUILDTOOLS_OVERRIDE_RUNTIME should copy the PDB files from the CoreCLR output directory if available When performing a build of CoreCLR, the PDBs are outputted in `bin/Product/OS.Arch.Configuration/PDB`, which is one subdirectory lower than where the binaries are placed (`bin/Product/OS.Arch.Configuration`). Unfortunately, these PDBs aren't automatically copied over like the binaries when settings `BUILDTOOLS_OVERRIDE_RUNTIME`, meaning you have to manually them over to get a better stack trace. It would be nice if [this](https://github.com/dotnet/buildtools/blob/acf2600c88c93efd7ead8ba5365405dd417fc2a7/src/Microsoft.DotNet.Build.Tasks/PackageFiles/publishtest.targets#L109) had some additional logic to check for the existence of a `PDB/` directory beforehand and copy that over as well, since it would make things easier for people running tests on mscorlib. cc @mellinoe @ellismg +10392 area-System.Net Fix the flags passed to getnameinfo We were trying to pass `NI_NAMEREQD` to getnameinfo so that it would fail if the address could not be resolved. However, the PAL->Native translation was backward, resulting in the wrong flags getting passed. Fixes #10345. @stephentoub @CIPop +10395 area-System.Security [dev/cms_unix] Missing static tests in EnvelopedCms generated in a Unix system Now that there is an implementation of EnvelopedCms for Unix platforms, the test suite is missing tests where a message is encrypted in a Unix platform and stored statically in a decryption test to make sure that cross platform decryption is possible (static Windows tests are already present in the suite). Tests should include using the following symmetric algorithms: - AES-128, AES-192, AES-256 - RC2 and RC4 (the only key length supported currently is 128 bits) - DES - 3DES And should be encrypted using KeyTransfer certificates. There should be a test using each IssuerAndSerialNumer and SubjectKeyIdentifier as the identifiers for the recipient. +10396 area-System.Security EnvelopedCms missing KeyAgreement tests The test suite is missing tests that perform decryption on a message that uses KeyAgreement certificates for encryption. Currently there's only one test for Encryption using a Diffie-Hellman certificate and the only check that's performed is if after decoding the RecipientInfo is as expected, but there's no check on the contents of the encrypted message currently. Round trip tests and static tests should be added to the suite to ensure not only the metadata is correct but also the contents of the message. +10397 area-System.IO Test failures for System.IO.Compression.ZipFile on OSX In our official builds the following tests are consistently failing on Mac, can you please investigate? CreateFromDirectoryUnicodel ExtractToDirectoryTest_Unicode ExtractToDirectoryUnicode More information can be found on Mission Control. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160728.04/workItem/System.IO.Compression.ZipFile.Tests/details/b2e0e5b4-668a-43d3-8fa9-00a352c10b35 +10398 area-System.IO Test failures for FileSystemWatcher on Ubuntu and OSX In our official builds the following tests are failing, can you please investigate? FileSystemWatcher_Directory_Changed_SymLink FileSystemWatcher_Directory_Delete_SymLink FileSystemWatcher_Directory_NotifyFilter_DirectoryName FileSystemWatcher_File_Changed_SymLink More information can be found in Mission Control. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160728.04/workItem/System.IO.FileSystem.Watcher.Tests +10399 area-System.Net Test failures for System.Net.Http In our official builds the following tests are failing, can you please investigate? GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly ReadAsStreamAsync_ReadAsync_Cancel_TaskCanceledQuickly NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds More information can be found in Mission Control. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160728.04/workItem/System.Net.Http.Functional.Tests +10400 area-System.Text Test failures for System.Text.RegularExpressions on OSX In our official builds the following tests are failing, can you please investigate? RegexGroupTests.Groups More information can be found on Mission Control. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160728.04/workItem/System.Text.RegularExpressions.Tests +10409 area-System.Security [dev/cms_unix] EnvelopedCms doesn't support adding originator certificates in the encryption process EnvelopedCms currently throws a platform not supported exception when trying to add originator certificates. Currently OpenSSL doesn't support adding certificates to a newly instantiated CMS_ContentInfo structure, only to one that's read from raw data. It's unviable to do it this way as we'd need a byte blob for each possible symmetric cipher or a parser that would do this. +10421 area-Infrastructure Clean properties and documentation in config.json file - Go through all the options in our config.json file and get them properly documented. For example the difference between `OSGroup`, `TargetOS` and `FilterToOsGroup`. - Update documentation to use the proper properties according to the desire behavior +10422 area-Infrastructure Self-discovery documentation in Build -? Add documentation to the build command when using the argument `-?` on how to interact with the repo and not only providing information about the command per se. +10426 area-Meta New netstandard APIs The below APIs have been added to netstandard1.6 reference assemblies post 1.0 release and they don't exist on the full .NET Framework yet. We either need to remove them temporarily or make them specific to netcoreapp before we ship 1.1. - Regex.Group.Name: https://github.com/dotnet/corefx/pull/9526 cc @Priya91 - UTF8 marshaling: https://github.com/dotnet/corefx/pull/8607 cc @tijoytom @yizhang82 - ~~StreamContext: https://github.com/dotnet/corefx/pull/10036 cc @stephentoub~~ +10428 area-System.Console Using Console.SetOut doesn't affect IsOutputRedirected ... similarly for Input and Error. See : https://github.com/dotnet/corefx/blob/5e36ca02d2594f715da829aafaf7af2b554dfcdf/src/System.Console/src/System/ConsolePal.Unix.cs#L461-L467 The summary describes the behavior I expect which is checking `Console.Out` but the actual behavior is checking `STDOUT` @stephentoub @ianhays +10429 area-Infrastructure Allow netcoreapp1.1 as a valid TestTFM Updates buildtools and BuildTest versions to consume some changes that allow netcoreapp1.1 as a TestTFM. I also modified the CoreFX targets to use netcoreapp1.1 as the new default. to be merged after https://github.com/dotnet/corefx/pull/10423/files @ericstj @weshaggard @karajas +10430 area-Infrastructure New Dev Workflow doesn't detect test failures and still succeeds the build By just running build.cmd with the new workflow, if one or more test fails the build will still be marked as succeeded. When we first saw this we thought it only reproed on non-Windows, but I just got a repro on Windows as well. ![image](https://cloud.githubusercontent.com/assets/13854455/17259606/30d3ab1e-5581-11e6-8823-e8d1e73fe855.png) @maririos +10431 area-System.Diagnostics Add diagnostic tracker API As [discussed](https://github.com/dotnet/corefx/issues/10157#issuecomment-236264347) in issue #10157, we would like a higher-level tracking API for measuring allocations. The goal is to make an API that is similar to Stopwatch: ``` C# namespace System.Diagnostics { public class ManagedAllocationTracker { public static ManagedAllocationTracker StartNew(); public long AllocatedBytes { get; } } } ``` This API will also allow tracking bytes across execution contexts. @KrzysztofCwalina suggested to make it even more general purpose and allow the tracker to track more diagnostic information. +10439 area-Infrastructure Update documentation to build individual csproj for different OSs Update documentation on how to build an individual csproj for the different targets and OS's without needing to rebuild all configurations via the builds file. +10441 area-System.Linq Unverifable code generated by LambdaExpression.Compile for writebacks to structs "Repro: ``` csharp using System; using static System.Linq.Expressions.Expression; struct S { static void Main() { var e = Lambda(Call(typeof(S).GetMethod(""M""), Property(Constant(new S()), ""X""))); var f = e.Compile(); f(); } public static void M(ref bool b) {} public bool X { get; set; } } ``` Emitted IL code: ``` .method private hidebysig static void lambda_method(class [System.Core]System.Runtime.CompilerServices.Closure c) cil managed { .maxstack 2 .locals init (valuetype S V_0, valuetype S V_1, bool V_2) IL_0000: ldarg.0 IL_0001: ldfld object[] [System.Core]System.Runtime.CompilerServices.Closure::Constants IL_0006: ldc.i4.0 IL_0007: ldelem.ref IL_0008: unbox.any S IL_000d: stloc.0 IL_000e: ldloca.s V_0 IL_0010: dup IL_0011: stloc.1 IL_0012: call instance bool S::get_X() IL_0017: stloc.2 IL_0018: ldloca.s V_2 IL_001a: call void C::M(bool&) IL_001f: ldloc.1 IL_0020: ldloc.2 IL_0021: call instance void S::set_X(bool) IL_0026: ret } ``` The issue is in local `V_1` which should be declared as a `valuetype S&` rather than `valuetype S`, causing verification errors on `IL_0011` (S& being stored into S) and on `IL_0012` (instance of the call S instead of S&). It looks the bug is in `AddressOfWriteBack` where the `dup` the address of the struct (left on the stack by `EmitInstance`) is stored in a local declared to the be the value type: ``` csharp private WriteBack AddressOfWriteBack(MemberExpression node) { ... LocalBuilder instanceLocal = null; Type instanceType = null; if (node.Expression != null) { EmitInstance(node.Expression, instanceType = node.Expression.Type); _ilg.Emit(OpCodes.Dup); _ilg.Emit(OpCodes.Stloc, instanceLocal = GetLocal(instanceType)); ``` " +10443 area-System.Security Missing test that tests decryption failure with a certificate with false SKID Missing a test that encrypts a message and then tries to decrypt it using using a certificate that has the same subject key identifier as the recipient but represents a different key pair. This should throw a CryptographicException as the message should be unable to decrypt. +10445 area-System.Runtime System.Runtime.InteropServices.RuntimeInformation fails to install in Classic PCL with NuGet 2.x The `System.Runtime.InteropServices.RuntimeInformation` package will fail to install on NuGet 2.x because there is no `lib\netstandard1.1` version. There is only a `runtimes\win\lib\netstandard1.1` version, but as NuGet 2.x doesn't understand `runtimes`, it'll fail. This affects installing .NET Standard Libraries into a PCL Profile 111 as it's included by `NETStandard.Library` when evaluating dependencies for pcl profiles. To repro: With VS 2013 and NuGet 2.12 - Create a new PCL targeting .NET 4.5, Windows 8 and Windows Phone 8.1 (Profile 111). - In the NuGet package manager, try to install the `S2Geometry` library Actual results ``` Could not install package 'System.Runtime.InteropServices.RuntimeInformation 4.0.0'. You are trying to install this package into a project that targets 'portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. ``` The `S2Geometry` library is a `netstandard1.0` library and follows the advice of having a dependency on `netstandard.library 1.6.0`. /cc @ericstj +10449 area-Infrastructure CI test crashes not being reported correctly While investigating why a potential codegen bug wasn't discovered in CoreFX Jenkins runs, I discovered that these tests were indeed crashing in outerloop runs, but the crashes were not being reported as failures. For instance, [this job](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu14.04_release/105/) reports that there were no test failures, but if you go to the console output, you'll see that the System.Linq.Parallel.Tests actually segfaulted: ``` /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu14.04_release/bin/tests/AnyOS.AnyCPU.Release/System.Linq.Parallel.Tests/netcoreapp1.0/RunTests.sh: line 288: 14092 Segmentation fault (core dumped) ./corerun xunit.console.netcore.exe System.Linq.Parallel.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=failing -notrait category=nonlinuxtests 11:06:24 Finished running tests. End time=18:07:25. Return value was 139 ``` Furthermore, based on [this table](http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu14.04_release/105/testReport/), there's no record that these tests were even attempted. +10454 area-System.Collections Virtualizing Observable Collection In .NET Standard 2.0, I would like to see an Virtualizing Observable Collection. Since Windows 8 (WinRT) a new design principle of Microsoft is “fast and fluid”. But in the full .NET Framework no class is available to virtualize the loading of data. There should be for all UI technologies from Microsoft (WPF, UWA, Xamarin.Forms, ASP.NET) a simple built-in way to load data by page (paging). There are some community projects that have addressed this issue, but I think that Microsoft should provide a uniform solution. - [Virtualizing Observable Collection (Andrew Whiddett, Alpha Chi Technology)](https://alphachitech.wordpress.com/2015/01/31/virtualizing-observable-collection/), [NuGet](https://www.nuget.org/packages/VirtualizingObservableCollection), [GitHub](https://github.com/anagram4wander/VirtualizingObservableCollection) - [WPF: Data Virtualization (Paul McClean)](http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization) - [WPF Data Virtualization (DevZest)](https://datavirtualization.codeplex.com/) - [AsyncVirtualizingCollection (Bea Stollnitz)](http://web.archive.org/web/20111201001632/http://bea.stollnitz.com/blog/?p=378) +10455 area-System.Runtime Add an additional overload to `Marshal.Copy` **Issue:** When writing interop code, it may be desirable to copy memory from one location to another. However, there is currently no managed API for doing so. As such, the user must manually implement such a function, which can be error prone and cannot take advantage of certain optimization techniques (such as using SIMD registers to copy aligned 16-byte blocks). **Workaround:** Use `Buffer.MemoryCopy` which is non-optimal for a few reasons (see https://github.com/dotnet/corefx/issues/10455#issuecomment-236372132), manually implement an API for marshalling memory, or `DllImport` the `memcpy` function from the C Runtime (this is non optimal as it does not necessarily exist in the same library on each platform). **Request:** An additional overload to `Marshal.Copy` should be provided in the form of `public static void Copy(IntPtr source, IntPtr destination, int length)`. This would ideally end up as a call to `memcpy` behind the scenes. +10457 area-System.Runtime Operators should be exposed for `System.IntPtr` and `System.UIntPtr` **Issue:** The CLR supports a set of operators for the `System.IntPtr` and `System.UIntPtr` types (`native int`). These operators can be seen in `III.1.5` of the Command Language Infrastructure specification. However, these operators are not supported by some languages (such as C#). **Workaround:** Either directly emit IL or write non-optimal code that does not directly translate to the appropriate IL instructions. **Request::** A set of 'friendly operators' should be provided for languages that do not support the full set of operators for `System.IntPtr` and `System.UIntPtr`. These operators are: `Add`, `Divide`, `Multiply`, `Remainder`, `Subtract`, `Negate`, `Equals`, `Compare`, `And`, `Not`, `Or`, `XOr`, `ShiftLeft`, `ShiftRight`. +10466 area-System.Linq Avoid triggering lazy allocations of argument collections in LambdaCompiler In various places, the `LambdaCompiler` does access properties like `IndexerExpression.Arguments`, potentially causing the nodes to self-mutate to produce a lazily allocated `ReadOnlyCollection`. We can likely avoid this in many places. In addition, various code paths allocate dynamically growing `List` objects, even though the number of elements can be known upfront. We can reduce this. +10470 area-System.Linq Compiled Lambda Expressions and UWP Is it correct that compiled lambda expressions on UWP aren't really compiled and are instead interpreted? If so does that mean that on UWP and other AOT platforms like Xamarin/Unity with no support for IL emit it is faster to use MemberInfo and ConstructorInfo? Related: https://github.com/JamesNK/Newtonsoft.Json/issues/968 --- If normal reflection is faster on AOT platforms I would like to know is if there is a way at runtime to discover that IL emit isn't supported? A way to discover this capability at runtime will allow libraries to use compiled lambda expressions to boost on platforms it is available, and to fallback to traditional reflection on platforms where it isn't, while still using a single netstandard assembly. +10478 area-System.Threading Add x64 LOCK CMPXCHG16b (coreclr) ## 128 bit/16 byte Interlocked.CompareExchange with structs ### Use cases - Lock free algorithms using tagged state reference rather than GC (for ABA problem) - Atomic update for 16 byte structs on heap (e.g. `Span`, `Vector4`) ### Availability - Always - Windows 8.1 x64 (Required) - Always - Windows 10 x64 (Required) - Always - OSX/MacOS (Intel) - Usually - Linux x64 - Usually - Windows 7 x64 ### Performance - Not fast, but generally less than double a 8 byte LOCK CMPXCHG ### Issues - No 32 bit available (I believe?) - Not available on some early AMD x64 (pre-2006) - Alternative may not be available for ARM and other CPUs - Data needs to be 16 byte aligned ### Questions Seems a bit heavyweight for general case of 16 byte struct copy (e.g. `Vector4`) Would prevent tearing when coherence is required, though slow (e.g. [heap based `Span`](https://github.com/dotnet/coreclr/issues/5851#issuecomment-228599829)) But both tagged state reference and `Span` would have a similar data format, so also contain references. | 64 bits | 64 bits | | --- | --- | | Reference | Data | Would require the heap struct to have an alignment (16 bytes), would need to be [first class structs](https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/first-class-structs.md) for passing. Attribute? Compile time enforcement? ### Api ``` csharp namespace System.Threading { public interface IAlignedAnd16Bytes { } public static class Interlocked { public static T CompareExchange(ref T location1, T value, T comparand) where T : struct, IAlignedAnd16Bytes; } } ``` Struct would need to be TYP_STRUCT16? InterlockedCompareExchange128 https://msdn.microsoft.com/en-us/library/windows/desktop/hh972640%28v=vs.85%29.aspx /cc @CarolEidt @mikedn @jaredpar @jkotas @stephentoub +10481 area-System.Threading Proposal: Atomic (corefx) ## Atomic ### Background x64 has been able to do 128bit/16 byte Interlocked CompareExchanges for a while and its a cpu requirement to be able install Window 8.1 x64 and Windows 10 x64. Its also available on MacOS/OSX and Linux. Its availability would allow for more interesting lock-less algorithms. Was trying to think if there was an easy fallback for https://github.com/dotnet/corefx/issues/10478 but since its struct-based there is nothing to lock. So additionally it would be good to have a type Atomic which mirrors the C++ 11 atomic type, adds some .NET magic and can fallback to locks when the data width is not supported on the platform. ### Proposed Api Interface, struct, class, extenstions (and some reference manipulation types) ``` csharp namespace System.Threading.Atomics { public interface IAtomic where T : IEquatable { T Read(); T Read(MemoryOrder order); void Write(T value); void Write(T value, MemoryOrder order); T Exchange(T value); T Exchange(T value, MemoryOrder order); bool CompareExchangeWeak(T value, T comperand); bool CompareExchangeWeak(T value, T comperand, MemoryOrder order); bool CompareExchangeStrong(T value, T comperand); bool CompareExchangeStrong(T value, T comperand, MemoryOrder order); // MemoryOrder variants skipped for brevity // Unsafe transformations, bypass the atomicity T UnsafeTransform(AtomicTransform transformation); T UnsafeTransform(AtomicTransformParam transformation, T val); // Atomic transformations, Func should be pure and repeatable in case of retry // Pure transform T Transform(Func transformation); T Transform(Func transformation, TState state); // Conditional transforms e.g. Increment but only while < N T Transform(Func transformation, Func condition); T Transform(Func transformation, Func condition, TState state); // Same data transform, apply if value is what is expected T Transform(Func transformation, T comperand); T Transform(Func transformation, TState state, T comperand); } public delegate T AtomicTransform(ref T input); public delegate T AtomicTransformParam(ref T input, T val); public enum MemoryOrder { Relaxed, Consume, Acquire, Release, AcquireRelease, SequentiallyConsistent } } ``` #### Atomic struct ``` csharp [Disallow(Stack,Boxing)] public struct ValueAtomic : IAtomic where T : IEquatable { private T _data; // allocated if not supported lock-free natively private object _lock; [JitIntrinsic] public static bool IsLockFree { get; } public ValueAtomic(T value) { _data = value; _lock = IsLockFree ? null : new object(); } public T Read(); public T Read(MemoryOrder order); public void Write(T value); public void Write(T value, MemoryOrder order); public T Exchange(T value); public T Exchange(T value, MemoryOrder order); public bool CompareExchangeWeak(T value, T comperand); public bool CompareExchangeWeak(T value, T comperand, MemoryOrder order); public bool CompareExchangeStrong(T value, T comperand); public bool CompareExchangeStrong(T value, T comperand, MemoryOrder order); public unsafe T UnsafeTransform(AtomicTransform transformation) => transformation(ref _data); public unsafe T UnsafeTransform(AtomicTransformParam transformation, T val) => transformation(ref _data, val); public T Transform(Func transformation); public T Transform(Func transformation, TState state); public T Transform(Func transformation, Func condition); public T Transform(Func transformation, Func condition, TState state) { //T current = Read(); //while (condition(current, state)) //{ // T next = transformation(current); // T prev = Interlocked.CompareExchange(ref _data, next, current); // if (prev.Equals(current)) // { // return next; // } // current = prev; //} } public T Transform(Func transformation, T comperand); public T Transform(Func transformation, TState state, T comperand); public static implicit operator T(ValueAtomic atom) => atom.Read(); } ``` #### Atomic class (struct wrapper) ``` csharp public class Atomic : IAtomic where T : IEquatable { private ValueAtomic _atom; public static bool IsLockFree => ValueAtomic.IsLockFree; Atomic(T value) { _atom = new ValueAtomic(value); } public T Read() => _atom.Read(); public T Read(MemoryOrder order) => _atom.Read(order); public void Write(T value) => _atom.Write(value); public void Write(T value, MemoryOrder order) => _atom.Write(value, order); public T Exchange(T value) => _atom.Exchange(value); public T Exchange(T value, MemoryOrder order) => _atom.Exchange(value, order); public bool CompareExchangeWeak(T value, T comperand) => _atom.CompareExchangeWeak(value, comperand); public bool CompareExchangeWeak(T value, T comperand, MemoryOrder order) => _atom.CompareExchangeWeak(value, comperand, order); public bool CompareExchangeStrong(T value, T comperand) => _atom.CompareExchangeStrong(value, comperand); public bool CompareExchangeStrong(T value, T comperand, MemoryOrder order) => _atom.CompareExchangeStrong(value, comperand, order); public unsafe T UnsafeTransform(AtomicTransform transformation) => _atom.UnsafeTransform(transformation); public unsafe T UnsafeTransform(AtomicTransformParam transformation, T val) => _atom.UnsafeTransform(transformation, val); public T Transform(Func transformation) => _atom.Transform(transformation); public T Transform(Func transformation, TState state) => _atom.Transform(transformation, state); public T Transform(Func transformation, Func condition) => _atom.Transform(transformation, condition); public T Transform(Func transformation, Func condition, TState state) => _atom.Transform(transformation, condition, state); public T Transform(Func transformation, T comperand) => _atom.Transform(transformation, comperand); public T Transform(Func transformation, TState state, T comperand) => _atom.Transform(transformation, state, comperand); public static implicit operator T(Atomic atom) => atom.Read(); } ``` #### Numeric Extensions ``` csharp public static class AtomicNumericExtensions { // For byte, short, ushort, uint, int, long, ulong, single, double public static int Add(this Atomic atom, int value); public static int Subtract(this Atomic atom, int value); public static int Multiply(this Atomic atom, int value); public static int Divide(this Atomic atom, int value); // For byte, short, ushort, uint, int, long, ulong public static int Increment(this Atomic atom); public static int Increment(this Atomic atom, int max); public static int Decrement(this Atomic atom); public static int Decrement(this Atomic atom, int min); public static int And(this Atomic atom, int value); public static int Or(this Atomic atom, int value); public static int Xor(this Atomic atom, int value); public static int Not(this Atomic atom); } ``` #### Bool Extensions ``` csharp public static class AtomicBoolExtensions { public static bool TestAndSet(this Atomic atom); public static bool Clear(this Atomic atom); } ``` #### Atomic Flagged References ``` csharp public struct FlaggedReference where TRef : class { TRef Reference { get; set; } bool Flag { get; set; } } public static class AtomicFlaggedReferenceExtensions { public static bool TestAndSet(this Atomic> atom); public static bool TestAndSet( this Atomic> atom, TRef expectedReference); public static bool Clear(this Atomic> atom); public static bool Clear( this Atomic> atom, TRef expectedReference); } ``` #### Atomic Versioned References ``` csharp public struct VersionedReference : IEquatable> where TRef : class { TRef Reference { get; set; } long Version { get; set; } public bool Equals(VersionedReference other) => ReferenceEquals(Reference, other.Reference) && Version == other.Version; public static implicit operator TRef(VersionedReference atom) => atom.Reference; } public static class AtomicVersionedReferenceExtensions { public static VersionedReference Increment( this Atomic> atom) where TRef : class; public static VersionedReference Increment( this Atomic> atom, TRef expectedReference) where TRef : class; public static VersionedReference UpdateIncrement( this Atomic> atom, VersionedReference newRefExpectedVersion) where TRef : class; } ``` #### Atomic Tagged References ``` csharp public struct TaggedReference where TRef : class where TTag : struct { TRef Reference { get; set; } TTag Tag { get; set; } } public static class AtomicTaggedReferenceExtensions { public static TaggedReference Update( this TaggedReference atom, TaggedReference newTaggedReference, TRef expectedReference); public static TaggedReference Update( this TaggedReference atom, TRef newReference, TRef expectedReference); public static TaggedReference Update( this TaggedReference atom, TTag newTag, TRef expectedReference); public static TaggedReference Update( this TaggedReference atom, TaggedReference newTaggedReference, TTag expectedTag); public static TaggedReference Update( this TaggedReference atom, TRef newReference, TTag expectedTag); public static TaggedReference Update( this TaggedReference atom, TTag newTag, TTag expectedTag); public static TaggedReference Update( this TaggedReference atom, TRef newReference, TaggedReference expectedTaggedReference); public static TaggedReference Update( this TaggedReference atom, TTag newTag, TaggedReference expectedTaggedReference); // essentially CompareExchange public static TaggedReference Update( this TaggedReference atom, TaggedReference newTaggedReference, TaggedReference expectedTaggedReference); } ``` #### Atomic Double Reference ``` csharp public struct DoubleReference : IEquatable> where TRef : class { TRef ReferenceLeft { get; set; } TRef ReferenceRight { get; set; } public bool Equals(DoubleReference other) => ReferenceEquals(ReferenceLeft, other.ReferenceLeft) && ReferenceEquals(ReferenceRight, other.ReferenceRight); } public static class DoubleReferenceExtensions { public static DoubleReference ExchangeLeft( this Atomic> atom, TRef expectedRight) where TRef : class; public static DoubleReference ExchangeRight( this Atomic> atom, TRef expectedLeft) where TRef : class; } ``` #### Transforms The transforms give the flexibility to compose more complex atomic data structures; for example the `int` `Add`, `Increment` and `Increment` to limit can be implemented as ``` csharp public static int Add(this TAtomic atom, int value) where TAtomic : IAtomic { return atom.UnsafeTransform( (ref int current, int inc) => Interlocked.Add(ref current, inc), value); } public static int Increment(this TAtomic atom) where TAtomic : IAtomic { return atom.UnsafeTransform((ref int v) => Interlocked.Increment(ref v)); } public static int Increment(this TAtomic atom, int value, int max) where TAtomic : IAtomic { return atom.Transform((current) => current + 1, (c, m) => c <= m, max); } ``` Or an entirely new type that hadn't previously supported atomic updates, with new operations ``` csharp public static Decimal Multiply(this TAtomic atom, Decimal value) where TAtomic : IAtomic { return atom.Transform((current, m) => current * m, value); } ``` When the struct was 16 bytes `_data` would need to be 16 byte aligned to allow lock free use with `LOCK CMPXCHG16b` where available. Might be easier to enforce alignment than with https://github.com/dotnet/corefx/issues/10478? `VersionedReference` and `FlaggedReference` should be 16 byte aligned in `Atomic` (don't need to be outside), as should `TaggedReference` when the struct is <= 16 bytes. +10487 area-System.ComponentModel GuidConverter.ConvertTo throwing exception to convert valid guid string to Guid object. "If using the API `GuidConverter.ConvertTo(null, CultureInfo.CurrentCulture, guidStr, typeof(Guid));` we are getting an exception saying. Error Message: {""'GuidConverter' is unable to convert 'System.String' to 'System.Guid'.""} Stack Strace : ``` at System.ComponentModel.TypeConverter.GetConvertToException(Object value, Type destinationType) at System.ComponentModel.TypeConverter.ConvertTo(ITypeDescriptorContext context, CultureInfo culture, Object value, Type destinationType) at System.ComponentModel.GuidConverter.ConvertTo(ITypeDescriptorContext context, CultureInfo culture, Object value, Type destinationType) at GuidConverterRepoClassic.Program.Main(String[] args) ``` It's a consistent repro with valid Guid Strings. " +10488 area-System.Reflection System.Reflection.PortableExecutable.PEReader throws BadImageFormatException "I am trying to read the .PDB file path from an executable with System.Reflection.PortableExecutable.PEReader and it works fine in most cases - but now I have discovered that ReadCodeViewDebugDirectoryData throws a BadImageFormatException when I specify winword.exe as executable because the PDB path in winword.exe is padded with bytes different to '0'. DBH.exe and dumpbin.exe have no problem with that. So, wouldn't it be better to remove that ""throw"", to broaden the usability of PEReader? " +10490 area-System.Net ManagedWebSocket doesn't send payloads if `_isServer` is true Looks like [`System.Net.WebSockets.ManagedWebSocket.WriteFrameToSendBuffer`](https://github.com/dotnet/corefx/blob/b835f230039c4f44944b7fb3f8ce670ebf578ea4/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ManagedWebSocket.cs#L448) fails to actually write the payload if `_isServer` is set. It copies the payload into the send buffer in the same if-branch that handles masking (which is client-only :smile:). Discovered and fixed this while porting code to ASP.NET, so I'm going to port the fix over to corefx and open a PR. /cc @stephentoub @Tratcher +10491 area-System.Net Server not resolving DNS, only accepts web service URL with IP We have an Ubuntu server set up for our .Net Core application and running Nginx. Our web services URL works when we pass the IP address, but we get an error stating the DNS cannot be found or does not exist when passing the name of the server rather than the IP. Can anyone provide insight on this issue please? +10493 area-System.Globalization Remove P2P pkgproj dependencies to System.Globalization In order to be able to update prerelease packages, we needed to add pkgproj references with #10492 so this issue is to track the work to remove that which should happen on our next prerelease dependency update. +10500 area-System.IO Test failure: System.IO.Tests.DirectoryInfo_Delete/DeletingSymLinkDoesntDeleteTarget Opened on behalf of @sokket The test `System.IO.Tests.DirectoryInfo_Delete/DeletingSymLinkDoesntDeleteTarget` has failed. ``` System.ComponentModel.Win32Exception : No such file or directory ``` Stack Trace: ``` at Interop.libproc.proc_pidpath(Int32 pid) at System.Diagnostics.Process.GetExePath() at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at MountHelper.CreateSymbolicLink(String linkPath, String targetPath, Boolean isDirectory) at System.IO.Tests.Directory_Delete_str.DeletingSymLinkDoesntDeleteTarget() ``` Failing configurations: - OSX.1011.Amd64 - AnyCPU-Debug +10501 area-System.IO Test failure: System.IO.Tests.DirectoryInfo_EnumerateFiles_Str/EnumerateWithSymLinkToFile Opened on behalf of @sokket The test `System.IO.Tests.DirectoryInfo_EnumerateFiles_Str/EnumerateWithSymLinkToFile` has failed. ``` System.ComponentModel.Win32Exception : No such file or directory ``` Stack Trace: ``` at Interop.libproc.proc_pidpath(Int32 pid) at System.Diagnostics.Process.GetExePath() at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at MountHelper.CreateSymbolicLink(String linkPath, String targetPath, Boolean isDirectory) at System.IO.Tests.Directory_GetFiles_str.EnumerateWithSymLinkToFile() ``` Failing configurations: - OSX.1011.Amd64 - AnyCPU-Debug +10504 area-System.Net Test failure: System.Net.Http.Functional.Tests.CancellationTest/GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly Opened on behalf of @sokket The test `System.Net.Http.Functional.Tests.CancellationTest/GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly` has failed. ``` Elapsed time should be short\r Expected: True\r Actual: False ``` Stack Trace: ``` at System.Net.Http.Functional.Tests.CancellationTest.<>c__DisplayClass2_1.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.CancellationTest.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.81.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Core.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Amd64 - AnyCPU-Debug +10511 area-System.Runtime Marshal.ZeroFreeMemoryUTF8 doesn't exist Looks like we didn't fully rename ZeroFreeMemoryUTF8 to ZeroFreeCoTaskMemUTF8. ZeroFreeMemoryUTF8 exists in the reference assembly but not the implementation. Reference assemblies: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.InteropServices/ref/System.Runtime.InteropServices.cs#L662 https://github.com/dotnet/coreclr/blob/99c0410601955552920079a7465c64e725814c2c/src/mscorlib/ref/mscorlib.cs Change to rename in implementation: https://github.com/dotnet/coreclr/commit/42929098cb110c62a2605cdf789239950e85dadf +10513 area-System.Globalization CultureInfo's Payloads on CoreCLR and Desktop Not Compatible PR #9014 attempted to make `System.Globalization.CultureInfo` serializable on CoreCLR. The issue is that the serialization payload generated on CoreCLR is not compatible with the one on Desktop, which caused a `CultureInfo` object cannot make a roundtrip between CoreCLR and full framework. This is due to the fact that `CultureInfo` uses different names for its fields across different platforms. `CultureInfo` should have consistent names for fields, which are being serialized on Desktop, across platforms, including full framework, CoreCLR, and NetNative. https://github.com/dotnet/corefx/issues/8736 is blocked by this issue. +10515 area-System.Security Missing tests veryfing decryption contents of messages in EnvelopedCms The current test suite doesn't have verifying that the contents of the decrypted message is the expected one for the following algorithms: - Round Trips: 1. DES 2. AES-128, AES-192 3. RC2 4. RC4 - Windows generated static tests: 1. DES 2. RC2 3. RC4 +10516 area-System.Diagnostics StandardOutput and StandardError receive an extra line On Linux, compared to other languages, say Python, .NET is appending (somehow) an extra line on redirected StandardOutput and StandardError. For example, if I execute the following script: ``` bash #!/bin/sh exit 42 ``` In Python (e.g., subprocess.check_output) I receive, as I would expect, an empty string. In .NET, however, if I redirect through ProcessStartInfo, I receive an event in my OutputDataReceived handler with an empty string (and the my code cannot reject empty string out-of-hand since it may be a legal part of output). +10519 area-Infrastructure How to skip build Windows_NT OS Group while building inside Linux. It seems that Windows_NT binaries are built even with `-BuildAllOSGroups:False -FilterToOSGroup:Linux`: ``` $ ./build-managed.sh -binaries -SkipTests -OSGroup:Linux -TargetOS:Linux -BuildAllOSGroups:False -FilterToOSGroup:Linux ... $ ls bin/ AnyOS.AnyCPU.Debug/ Linux.AnyCPU.Debug/ obj/ ref/ Unix.AnyCPU.Debug/ Windows_NT.AnyCPU.Debug/ ``` Is there any other option to skip Windows_NT binaries? +10520 area-System.Linq Expression interpreter can avoid allocating (empty) arrays Did a little performance tracing session for simple expressions evaluated using the interpreter. Not surprising, a big source of allocations is for `object[]` instances passed to `Invoke` methods in reflection. I'm opening this issue to track some possible improvements in this area. Instructions for `Call`, `New`, etc. seem to allocate an empty `object[]` in case there are no arguments, in order to call the `Invoke` method through reflection. We should be able to avoid these allocations here and pass `Array.Empty()` instead. ~~In addition, we may be able to reduce `object[]` allocations in general, given that reflection also copies the argument array in `CheckArguments`, by caching a limited set of reusable `object[]` buffers for small lengths. I don't think `System.Buffers` fits the bill unfortunately, because it will hand out buffers of a minimum size or larger. Unless reflection would be able to operate on `ArraySegment` to 'trim' the view over a rented array, we'd have to keep our own cache. An obvious question is the trade-off between allocating arrays and the (synchronization) cost of renting them from a pool.~~ +10523 area-System.Data Question about database connection I know MS Sql Server is only running in Windows platform. But if it's possible to run my web app in Linux and connect to my database in Windows? I got an error message when I tried to use **SqlClient** in my application: > Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NotSupportedException: The keyword 'integrated security' is not supported on this platform. +10524 area-Meta Debugging native/ c code in vs2015 .Net core RC2 . "Hi, I am using a .Net Core Console App using Visual Studio 2015 update 2 on windows machine. I am using a package ""pack1""(managed code) in this console application which in turn calls native / c code dll. I am able to step into pack1 code, but i am not able to step into my native code. Tried giving symbol path to native code pdb file , enabled native and managed code compatibility option,tried putting breakpoint into the native c source code directly, also tried to step into c code from managed code, but none of them seem to work. Can some one please help me with this / point to any documentation ? sample Project.json file : { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""defines"": [ ""DEBUG"" ] }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-rc2-3002702"" }, ""pack1"": ""1.0.0.0"" }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""dnxcore50"" } }, ""configurations"": { ""debug"": { } } } Thanks and Regards, Prashanth " +10525 area-System.Net Consider adding a LinkHeaderValue/Parser Lots of APIs are now using Link headers. They are kind of an annoyance to parse manually (and do it properly.) It would be great if the System.Net.Http library offered built-ins for these. +10526 area-System.ComponentModel Consider merging DisplayFormatAttribute into DisplayAttribute We use `DisplayFormatAttribute` heavily to provide annotations which can be consumed by several kind of controls like grids, text contents, etc. The issue with this attribute is that it's not localizable. In one of .NET's earlier versions the _legacy_ `DisplayName`, `Description`, and `Category` attributes have been merged into the new `DisplayAttribute`, so that they can be nicely localized. However, at that point for some reason, the `DisplayFormatAttribute` had been kept separately. It would be important to merge it into `DisplayAttribute` too, because it has at least two fields which are important to localize: ``` public string DataFormatString { get; set; } public string NullDisplayText { get; set; } ``` These should definitely be part of `DisplayAttribute` I think. +10527 area-System.ComponentModel Allow EditableAttribute for classes I have a scenario where I need to specify `EditableAttribute` on a class, instead of applying it separately to every property. Is there any drawback of allowing this attribute for classes too? +10528 area-System.Collections "Add ""slicing"" APIs to ArraySegment" ArraySegment could be much more useful if it had the following additional APIs. I propose that we add these members to ArraySegment: ``` csharp namespace System { partial struct ArraySegment { public T this[int index] { get; set; } public static implicit operator ArraySegment(T[] array); public static explicit operator T[](ArraySegment segment); public T[] ToArray(); public int Length { get; } public ArraySegment Slice(int index, int count); public ArraySegment Slice(int index); public void CopyTo(T[] destination); public void CopyTo(T[] destination, int destinationIndex); public void CopyTo(ArraySegment destination); public static ArraySegment Empty { get; } } } ``` +10530 area-System.Reflection Restore Reflection API (.NET Core) Expose all the reflection APIs S.P.CoreLib for CoreCLR. For the exact API list refer to the tracking spreadsheet. We need to essentially expose all the APIs in S.P.CoreLib and then revise the contracts (i.e. move S.Reflection APIs into System.Runtime). cc @AtsushiKan +10533 area-Infrastructure CoreFx Build Native On Free BSD 10.1 Fails "Hi, I could build coreclr successfully, then tried to build corefx, but I had the following : root@:~/dotnet/corefx # **uname -a** FreeBSD 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 root@:~/dotnet/corefx # **./build-native.sh** Unsupported OS 'FreeBSD' detected. Downloading ubuntu-x64 tools. Installing dotnet cli... Restoring BuildTools version 1.0.26-prerelease-00629-09... ELF binary type ""0"" not known. /root/dotnet/corefx/init-tools.sh: line 78: /root/dotnet/corefx/Tools/dotnetcli/dotnet: cannot execute binary file: Exec format error ERROR: Could not restore build tools correctly. See '/root/dotnet/corefx/init-tools.log' for more details. Initializing BuildTools... /root/dotnet/corefx/init-tools.sh: line 84: /root/dotnet/corefx/packages/Microsoft.DotNet.BuildTools/1.0.26-prerelease-00629-09/lib/init-tools.sh: No such file or directory ERROR: An error occured when trying to initialize the tools. Please check '/root/dotnet/corefx/init-tools.log' for more details. root@:~/dotnet/corefx # **cat init-tools.log** Running: /root/dotnet/corefx/init-tools.sh Installing 'https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/1.0.0-preview2-002733/dotnet-dev-ubuntu-x64.1.0.0-preview2-002733.tar.gz' to '/root/dotnet/corefx/Tools/dotnetcli/dotnet.tar' Running: /root/dotnet/corefx/Tools/dotnetcli/dotnet restore ""/root/dotnet/corefx/Tools/1.0.26-prerelease-00629-09/project.json"" --no-cache --packages /root/dotnet/corefx/packages --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json Running: /root/dotnet/corefx/packages/Microsoft.DotNet.BuildTools/1.0.26-prerelease-00629-09/lib/init-tools.sh /root/dotnet/corefx /root/dotnet/corefx/Tools/dotnetcli/dotnet /root/dotnet/corefx/Tools " +10534 area-System.Security Certificate validation when using cURLHandler should look at trusted user store Currently, observation is that when using CurlHandler, we look only at the system's root certificate store for trusted CA certificates We should also have the ability to look at the certs that are stored in ~/.dotnet/corefx/cryptography/x509certificates/*\* (i.e., the user certificate store) to determine whether an endpoint is trusted Scenario: - Install a self-signed root certificate into the corefx user root store - Hit a https endpoint using the HttpClient which uses a server certificate signed by the self-signed root certificate - Observe that the request fails - Install the self-signed root certificate into the root store - Observe that the request passes now +10544 area-System.Security AesCng much slower than AesCryptoServiceProvider I get the following timings on Windows 2012R2 with freshly-installed .NET 4.6.2 final and running in 64bit release mode (via 64bit LinqPad): ``` CNG 00:00:02.3278742 CSP 00:00:00.0392550 CNG 00:00:02.3332983 CSP 00:00:00.0408160 CNG 00:00:02.2949133 CSP 00:00:00.0398848 CNG 00:00:02.2959543 CSP 00:00:00.0392522 ``` The quick & crude benchmark code: https://gist.github.com/anonymous/39929346722e641027b313a45a4f44ab Is this perf difference intentional/expected? +10547 area-Infrastructure ExternalPackages versions.props lists incorrect versions "https://github.com/dotnet/corefx/blob/master/pkg/ExternalPackages/versions.props lists the win10 non-aot packages as External, when it should list the aot packages. We do not ship the non-aot packages from TFS, so this file should be updated for correctness to: ``` 4.0.1-$(ExternalExpectedPrerelease) 4.0.1-$(ExternalExpectedPrerelease) 4.0.1-$(ExternalExpectedPrerelease) ``` This does raise the question of how it's currently functioning without errors, since it's looking for a package that does not exist. @jhendrixMSFT @chcosta " +10549 area-System.Reflection System.Reflection.Metadata should expose a way to get the containing assembly for a given type. Given a type handle you should be able to easily get a handle to the containing assembly. This is required to compute the AssemblyQualifiedName of a type when you only have a type handle. +10550 area-System.Diagnostics Missing stdout line while redirect process stdout I make a console app that using Diagnostic.Process to call `/usr/bin/git` with argument `version`, then redirect STDOUT and STDERR to get the git version info. However, i got empty string from STDOUT/STDERR of git version sometime. In order to investigate, i made a console app that siting in a loop invoke `git version` until it get empty output from `git version`. I also made a bash script that also invoke `git version` in a loop till it hit empty then exit, so i can figure out this is a git issue or dotnet core issue. So far, the test bash script is able to run for hours without find `git version` return empty. However my dotnet core app sometime will get empty string on STDOUR redirect, which make me feel this is more like a dotnet core issue. here is the code of my console app that using Diagnostic.Process to invoke process and redirect STDOUT, [gitversion.txt](https://github.com/dotnet/corefx/files/400242/gitversion.txt) Can someone help me take a look, did i do something wrong in the code or it's a real issue with dotnet core? I am able to repro on Ubuntu 14 and 16, not repro on windows, haven't try OSX since i don't have a Mac. Thanks, +10555 area-System.Collections ARM64: System.Collections.Concurrent tests hanging I've had this happen twice now. The full test run is getting stuck at System.Collections.Concurrent and not proceeding any further. We should try to repro this with better logging and see if we can diagnose the issue outside of a limited-logging scenario. +10556 area-Meta Netstandard contract list needs to be updated to be correct. https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md needs to be updated to represent what is actually shipped. There are some things in there that are not correct like the PInvoke contract that never shipped and was removed. +10561 area-System.Linq Add benchmark suite for System.Linq.Expressions I'm starting to look into some performance aspects of the expression tree interpreter and will need a `Performance` test project for it. An attempt to create it using a carbon copy from other projects with such a `Performance` project ran into some issues on referencing the `pkg`, so I'm adding an issue to track progress on this. If anyone with more awareness of the benchmark infrastructure could help out here, that'd be useful too. +10563 area-Infrastructure Needs to refactor code for option 'restrict-proj' in run-test.sh "run-test.sh accepts a parameter, regex for an option restrict-proj. The regex is used as $TestSelection in run_test(). ``` bash # $1 is the path to the test folder run_test() { testProject=`basename $1` # Check for project restrictions if [[ ! $testProject =~ $TestSelection ]]; then echo ""Skipping $testProject"" exit 0 fi // ... } ``` Above function, run_test() executes after run_all_tests(). ``` bash # $1 is the name of the platform folder (e.g Unix.AnyCPU.Debug) run_all_tests() { for testFolder in ""$CoreFxTests/$1/""* do run_test $testFolder & pids=""$pids $!"" numberOfProcesses=$(($numberOfProcesses+1)) if [ ""$numberOfProcesses"" -ge $maxProcesses ]; then wait_on_pids ""$pids"" numberOfProcesses=0 pids="""" fi done # Wait on the last processes wait_on_pids ""$pids"" pids="""" } ``` I think it's better that moving $TestSelection in run_test() into run_all_tests() and then using it with command 'find'. I'd like to know your opinion. " +10566 area-System.Net Dotnet core's sockets don't seem to have access to the SocketAPMExtensions I've made [a github repo](https://github.com/johnnymo87/socket-apm-extensions) to demo my issue. Copying the readme here ... According to my understanding of the conversation in [this issue](https://github.com/dotnet/corefx/issues/2936), dotnet core supports APM methods for sockets, such as `BeginConnect` and `EndConnect`. I believe the support for it appears [here](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Net/Sockets/SocketAPMExtensions.cs) in the source code. I must be doing something wrong, however, because I am unable to access those methods in my code. This repo has the necessary code to reproduce the issue. ``` bash docker-compose build ``` I get the following: ``` bash Building app Step 1 : FROM microsoft/dotnet:latest ---> 3502ab7a3654 Step 2 : COPY . /app ---> d129994eb685 Removing intermediate container a6ad53b0061f Step 3 : RUN dotnet restore /app ---> Running in a04726ff78a2 log : Restoring packages for /app/project.json... log : Writing lock file to disk. Path: /app/project.lock.json log : /app/project.json log : Restore completed in 608ms. ---> b3934c2e0aeb Removing intermediate container a04726ff78a2 Step 4 : RUN dotnet build /app ---> Running in 38dfed6ca88a Project app (.NETStandard,Version=v1.6) will be compiled because expected outputs are missing Compiling app for .NETStandard,Version=v1.6 /usr/share/dotnet/dotnet compile-csc @/app/obj/Debug/netstandard1.6/dotnet-compile.rsp returned Exit Code 1 /app/Program.cs(15,35): error CS1061: 'Socket' does not contain a definition for 'BeginConnect' and no extension method 'BeginConnect' accepting a first argument of type 'Socket' could be found (are you missing a using directive or an assembly reference?) /app/Program.cs(16,56): error CS1061: 'Socket' does not contain a definition for 'EndConnect' and no extension method 'EndConnect' accepting a first argument of type 'Socket' could be found (are you missing a using directive or an assembly reference?) Compilation failed. 0 Warning(s) 2 Error(s) Time elapsed 00:00:01.2293181 ``` +10567 area-Infrastructure Running performance tests requires specifying the OS "

UPDATE

Go further down the chain for the changes to the issue.
Attempting to run performance tests on my machine results in ""error: Xunit performance package was not found"", even though I have the required options installed in VS: ![image](https://cloud.githubusercontent.com/assets/5569508/17409563/aa21d390-5a24-11e6-9b91-0d48a67e96a9.png) I've attempted uninstalling/reinstalling the feature, VisualStudio itself, and onto a new machine too. Are the instructions incomplete or something? Or what might I be doing wrong? I do have VS2013 Community installed... " +10570 area-Serialization [Add Test] T:System.Xml.Serialization.XmlSerializerFactory +10572 area-Serialization [Add Test] T:System.Xml.Serialization.XmlReflectionImporter T:System.Xml.Serialization.XmlMapping T:System.Xml.Serialization.XmlMemberMapping T:System.Xml.Serialization.XmlMembersMapping T:System.Xml.Serialization.XmlReflectionImporter T:System.Xml.Serialization.XmlReflectionMember T:System.Xml.Serialization.XmlTypeMapping +10573 area-Serialization [Add Test] T:System.Xml.Serialization.XmlSchemaImporter T:System.Xml.Serialization.ImportContext T:System.Xml.Serialization.XmlSchemaEnumerator T:System.Xml.Serialization.XmlSchemaExporter T:System.Xml.Serialization.XmlSchemaImporter T:System.Xml.Serialization.SoapSchemaMember T:System.Xml.Serialization.XmlSchemas +10574 area-Serialization [Add Test] T:System.Xml.Serialization.XmlSerializerAssemblyAttribute +10575 area-Serialization [Add Test] T:System.Xml.Serialization.XmlSerializerVersionAttribute +10576 area-Serialization Add API T:System.Xml.Serialization.XmlSerializationGeneratedCode T:System.Xml.Serialization.XmlSerializationGeneratedCode T:System.Xml.Serialization.XmlSerializerImplementation +10577 area-Serialization [Add Test] T:System.Xml.Serialization.XmlSerializationWriter T:System.Xml.Serialization.XmlSerializationWriter T:System.Xml.Serialization.XmlSerializationReader T:System.Xml.Serialization.XmlSerializationGeneratedCode T:System.Xml.Serialization.XmlSerializerImplementation +10578 area-Serialization [Add Test] EventArgs Types T:System.Xml.Serialization.XmlDeserializationEvents T:System.Xml.Serialization.UnreferencedObjectEventArgs T:System.Xml.Serialization.XmlAttributeEventArgs T:System.Xml.Serialization.XmlElementEventArgs T:System.Xml.Serialization.XmlNodeEventArgs +10579 area-Serialization [Add Test] T:System.Xml.Serialization.SoapReflectionImporter T:System.Xml.Serialization.SoapAttributeAttribute T:System.Xml.Serialization.SoapAttributeOverrides T:System.Xml.Serialization.SoapAttributes T:System.Xml.Serialization.SoapElementAttribute T:System.Xml.Serialization.SoapEnumAttribute T:System.Xml.Serialization.SoapIgnoreAttribute T:System.Xml.Serialization.SoapIncludeAttribute T:System.Xml.Serialization.SoapReflectionImporter T:System.Xml.Serialization.SoapTypeAttribute +10580 area-Serialization [Add Test] T:System.Xml.Serialization.IXmlTextParser +10581 area-Serialization [Add Test] T:System.Xml.Serialization.CodeIdentifier T:System.Xml.Serialization.CodeIdentifier T:System.Xml.Serialization.CodeIdentifiers +10583 area-System.IO Implement File.Replace() as a documented safe atomic API See the real framework. ``` namespace System.IO { public static class File { public static void Replace(string source, string destination, string backup); public static void Replace(string source, string destination, string backup, bool ignoreMetadataErrors); } } ``` ## Implementation On Windows this should directly delegate to the `ReplaceFile()` API which is [guaranteed atomic wrt `source` and `destination` by this wording of the win32 API](https://msdn.microsoft.com/en-us/library/windows/desktop/hh802690%28v=vs.85%29.aspx#applications_updating_a_single_file_with_document-like_data). On POSIX (which, really, Windows should hurry up and start implementing… grr…), it should: 1. If `backup` is not `null`: 1. `unlink(backup)`, ignoring `ENOENT` error but for other failures throw `IOException`. 2. `link(destination, backup)` and if that fails throw `IOException`. 2. If `backup` is `null` 1. `stat(destination)`, if `ENOENT` throw `IOException`. 3. `rename(source, destination)` and if that fails throw `IOException`. This guarantees that the file at `destination` never ceases to exist even with program termination or power failure. The `backup` feature is best effort on POSIX any existing file is not guaranteed to be restored if the later steps fail. However, if `backup` is specified but does not exist, failure at a later step will not cause any data loss—it will just leave behind a second link to `destination` at the path `backup`. And a future call/retry would just wipe away and recreate this `backup`. Example C for all but step 2 which I should fix: https://gist.github.com/binki/e40182e4098d9714a609918908c623b8 , see [related mono bug #43062 I also opened](https://bugzilla.xamarin.com/show_bug.cgi?id=43062). +10586 area-Serialization [ReflectionBasedXmlSerializer] To Support Types with IsSequence == true Currently the reflection based method treat this kind of type as normal types. But potentially we can do some optimization for types that have ordered properties. Searching `#10586` in https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs#L1181 would show the places to be fixed. +10587 area-Serialization [ReflectionBasedXmlSerializer] To Support SpecialMapping Types Having DerivedMappings See https://github.com/dotnet/corefx/blob/32c4013a5d750c1c6a5b240d37a689991a479097/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs#L990 +10588 area-Serialization [ReflectionBasedXmlSerializer] To Support ArrayMapping Types Having ChoiceIdentifier see https://github.com/dotnet/corefx/blob/32c4013a5d750c1c6a5b240d37a689991a479097/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs#L1132 +10589 area-Serialization [ReflectionBasedXmlSerializer] To Support Serializing XmlSchemaObject XmlSchemaObject is currently not in the contract. If we add it into the contract, we need to work on this issue. +10590 area-Serialization [ReflectionBasedXmlSerializer] To Support special.TypeDesc.CanBeAttributeValue == true Searching `#10590` in https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs would show the code path to be implemented. +10591 area-Serialization [ReflectionBasedXmlSerializer] Add Tests for member.CheckSpecified == SpecifiedAccessor.ReadWrite Please have a look at the comment at https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs#L1212. We'd like to add tests for that code path. +10592 area-Serialization [ReflectionBasedXmlSerializer] To Support text.Mapping being SpecialMapping +10593 area-Serialization Add Test project for Running XmlSeriazlier Tests in ReflectionOnly Mode We added test projects for running DataContractSerializer and DataContractJsonSerializer's tests in reflection mode, see https://github.com/dotnet/corefx/pull/11480. We should do the same thing for XmlSerizlier. +10594 area-Serialization Add Reflection Based (De-)Serialization Support for XmlSerializer The changes are to enable XmlSerializer to do (de-)serialization via reflection. /cc: @mconnew @roncain @zhenlan @huanwu +10595 area-Serialization [ReflectionBasedXmlSerializer] Enable Reflection Serialization in Net Native. +10596 area-Infrastructure Update SNI package used for testing SqlClient The sqlclient src package uses the last stable version of the runtime sni package, so I updated the hard-coded SNI versions used in testing to be the latest prerelease version. This way we're actually testing the latest SNI version that we're publishing. I also updated the ExternalPackages props to be correct for clrcompression and updated them for the new SNI package. @jhendrixMSFT @chcosta +10597 area-System.Data System.Data.SqlClient depends on the stable SNI package The beta meta SNI package (runtime.native.system.data.sqlclient.sni) depends directly on the stable RID specific SNI packages, when it should depend on Microsoft.Net.Core.Targets like runtime.native.system.io.compression does. This is an issue because System.Data.SqlClient depends on the stable version of the SNI package which is fixed to depend on the stable SNI package: ``` System.Data.SqlClient/latest => runtime.native.system.data.sqlclient.sni/stable => runtime.win7-x86.system.data.sqlclient.sni/stable System.Data.SqlClient/latest => runtime.native.system.data.sqlclient.sni/stable => runtime.win7-x64.system.data.sqlclient.sni/stable ``` So this means we're not testing the latest/prerelease/beta versions of SNI anywhere. This has the potential to cause some confusion or late-testing errors when we snap to the next stable version and we're all of a sudden testing any changes made to SNI since the previous stable version. It'd be nice to have SNI follow the native asset pattern set by the other packages (HTTP, compression, Security) to avoid potential confusion, so it would look like this instead: ``` System.Data.SqlClient/latest => runtime.native.system.data.sqlclient.sni/stable => Microsoft.Netcore.Targets/stable => (restoration uses the latest targets package) => runtime.win7-x86.system.data.sqlclient.sni/latest System.Data.SqlClient/latest => runtime.native.system.data.sqlclient.sni/stable => Microsoft.Netcore.Targets/stable => (restoration ues the latest targets package) => runtime.win7-x64.system.data.sqlclient.sni/latest System.Data.SqlClient/latest => runtime.native.system.data.sqlclient.sni/stable => Microsoft.Netcore.Targets/stable => (restoration uses the latest targets package) => runtime.win10-arm64.system.data.sqlclient.sni/latest ``` I've worked around this for now by explicitly adding the latest SNI version to the project.json for the SqlClient tests: https://github.com/dotnet/corefx/pull/10596, but that's not an ideal solution since the product is still using the stable SNI and we're just overwriting it when testing. @ericstj @weshaggard @mellinoe +10600 area-System.Net System.Net.* Tests require special compilation rules because of System.Net.Internals System.Net.\* Tests utilizes an internal namespace, System.Net.Internals. Certain NETStandard.Library dependencies like System.Net.Sockets need to be excluded from compile (they are a dependency of xunit rtm). +10603 area-System.Reflection Test failure for System.Reflection.Metadata on ARM. Three tests fail. ``` Starting: System.Reflection.Metadata.Tests System.Reflection.Metadata.Ecma335.Tests.InstructionEncoderTests.LoadConstantR8 [FAIL] System.DataMisalignedException : A datatype misalignment was detected in a load or store instruction. Stack Trace: at System.Reflection.BlobUtilities.WriteDouble(Byte[] buffer, Int32 start, Double value) at System.Reflection.Metadata.Ecma335.Tests.InstructionEncoderTests.LoadConstantR8() System.Reflection.Metadata.Ecma335.Tests.InstructionEncoderTests.LoadConstantR4 [FAIL] System.DataMisalignedException : A datatype misalignment was detected in a load or store instruction. Stack Trace: at System.Reflection.BlobUtilities.WriteSingle(Byte[] buffer, Int32 start, Single value) at System.Reflection.Metadata.Ecma335.Tests.InstructionEncoderTests.LoadConstantR4() System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests.TestCustomAttributeDecoder [FAIL] System.DataMisalignedException : A datatype misalignment was detected in a load or store instruction. Stack Trace: at System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1.DecodeArgument(BlobReader& valueReader, ArgumentTypeInfo info) at System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1.DecodeFixedArguments(BlobReader& signatureReader, BlobReader& valueReader, Int32 count) at System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1.DecodeValue(EntityHandle constructor, BlobHandle value) at System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests.TestCustomAttributeDecoder() Finished: System.Reflection.Metadata.Tests === TEST EXECUTION SUMMARY === System.Reflection.Metadata.Tests Total: 421, Errors: 0, Failed: 3, Skipped: 0, Time: 14.782s Finished running tests. End time=13:54:35. Return value was 3 ``` Target: RASP3, Ubuntu Mate 16.04, ARM CoreCLR - Debug & Release - Commit: 2b191fa038802f22451640b3eac13cf87355e643 CoreFx - Debug & Release - Commit: 79a924855514877f5b8e8379e553e8b98293a30f +10606 area-System.ComponentModel Potential issue with RegularExpressionAttribute and differing regex flavors client vs. server side "The System.ComponentModel.DataAnnotations.RegularExpressionAttribute is used for client side runtime value checking in ASP.NET Core websites.\* The client side validation is run via jquery.validation.* JavaScript and .Net (Core) use different RegEx engines with different flavors, though, and for example named capturing groups, working as ""`(?regex)`"" in C# code, will _not_ work on the javascript side. This leads to validation silently not taking place on client-side, there's neither an error during compilation of the C# code nor during execution in browser (took me some minutes to figure out what was going on…). It would be nice if there was either some kind of warning, or—even nicer but a lot harder to manage—an automatic transformation step that makes C# side regexes work even when they're used in the definition for the client side validation, so you don't have to keep the regex around in 2 flavors (for client and server side validation). *as per https://docs.asp.net/en/latest/tutorials/first-mvc-app/validation.html " +10610 area-Infrastructure Cannot Build For FreeBSD "While trying to follow the directions here: https://github.com/dotnet/coreclr/blob/master/Documentation/building/freebsd-instructions.md I keep getting the same error Building .NET Core on FreeBSD 10.1 and this is the second install of FreeBSD I've seen this with so far. Here is the console output I am getting: root@sawzall:/usr/home/jbennett/git/corefx # ./build-packages.sh Unsupported OS 'FreeBSD' detected. Downloading ubuntu-x64 tools. Installing dotnet cli... Restoring BuildTools version 1.0.26-prerelease-00704-01... ELF binary type ""0"" not known. /usr/home/jbennett/git/corefx/init-tools.sh: line 78: /usr/home/jbennett/git/corefx/Tools/dotnetcli/dotnet: cannot execute binary file: Exec format error ERROR: Could not restore build tools correctly. See '/usr/home/jbennett/git/corefx/init-tools.log' for more details. Initializing BuildTools... /usr/home/jbennett/git/corefx/init-tools.sh: line 84: /usr/home/jbennett/git/corefx/packages/Microsoft.DotNet.BuildTools/1.0.26-prerelease-00704-01/lib/init-tools.sh: No such file or directory ERROR: An error occured when trying to initialize the tools. Please check '/usr/home/jbennett/git/corefx/init-tools.log' for more details. Obviously, my FreeBSD 10.1 install can't run Linux 64-bit binaries here so I am wondering how would I get this to build without the tools? " +10621 area-System.Security [dev/cms_unix] Data corruption bug on round trip in EnvelopedCms for Unix Currently test DecryptTests.Decrypt_EnvelopedWithinEnveloped fails in the round trip with a data corruption. When the message gets encrypted and decrypted, the output message is the same with the exception of one byte that gets inserted. Behaviors observed - The inserted byte is always the same and in the same position if the test is run several times. It seems that the introduced is a 0x0D in place of the 154th byte. (The inserted byte could also be 0xD0, but it's unlikely as it wouldn't be byte aligned, but given that the insertion looks like ...760A9AE94... to ...760D0A9AE94... it is hard to determine which of the two was inserted and as I haven't been able to reproduce the error with any other message there's no easy way of determining it). This hints it could be a padding error. - If trailing bytes are deleted from the message, the insertion is kept consistent, both the byte inserted and the offset. - If bytes are deleted from the start of the sequence, the inserted byte is consistent but it shifts back by the number of bytes deleted from the message. - It seems like it has nothing to do with block or length as a random message of the same length could be encrypted and decrypted correctly. - There are tests trying to encrypt longer and shorted messages so it continues to seem unlikely to be a length/alignment problem. Still have to try: - Changing certificate used - Changing cipher +10629 area-System.Net HttpClient: Use string.Concat over string.Format `Concat` is cheaper than `Format` (~2x faster in 1,000,000 iteration microbenchmark on x64). +10631 area-System.Net HttpClient: Faster whitespace detection and remove internal dead code Two commits (preferably merged as separate commits): 1. **Faster whitespace detection**: Instead of allocating a List with the four allowed whitespace chars and searching the list, just check if the char is one of the four values. ~6-7x improvement in 1,000,000 iteration microbenchmark. 2. **Remove internal dead code**: Remove dead code and namespace import cleanup. +10632 area-System.Net Make HttpKnownHeaderNames public Any reason why it's internal? Perhaps it's all the unsafe stuff going on at _HttpKnownHeaderNames.TryGetHeaderName.cs_ but at least the constants could be factored out and exposed - they can be very useful. See for example: http://stackoverflow.com/questions/11037004/asp-mvc-are-there-any-constants-for-the-default-http-headers. +10633 area-System.Data Instrument ADO.NET/System.Data with EventCounters (replacement for PerformanceCounters) In .NET Framework ADO.NET publishes performance counters; these have been removed in .NET Core because they're not cross-platform. There are several conversations about bringing back some form of cross-platform performance counters, see #4577, #7833, probably based on EventCounter. This also needs to happen for ADO.NET. +10649 area-System.Net WebProxy implementaion I was making use of the WebProxy contructor- WebProxy(String, Int32). Could you tell me how to substitute for this? @davidsh Thanks +10651 area-Infrastructure Updating CoreClr dependencies to servicing-24408-03 /cc @dotnet/corefx-contrib +10654 area-Infrastructure Typo NodoReuse introduced with new build workflow "See build-\* cmd files in CoreFX and Config.json. There is a property defined named ""MsBuildNodoReuse"" and the build scripts are hard coding nodoReuse parameters as well. @maririos " +10656 area-System.Xml Support System.Xml.Schema.XmlSchema and Related APIs In CoreCLR currently there is only a place-holder for XmlSchema type. https://github.com/dotnet/corefx/issues/10573 is being blocked by the issue. +10663 area-Infrastructure Updating External dependencies to servicing-24409-00 /cc @dotnet/corefx-contrib +10666 area-Infrastructure Modifying corefx projects in Visual Studio is slow and hangs Whenever I move, rename, delete or create a new file in any project in corefx (e.g. src/System.Reflection/tests/System.Reflection.Tests.csproj) VS, updated to the latest Community version, hangs on PC for about 30 seconds to a minute the second I complete that action. During this time, I can't click, type or use VS. Its the sort of weird issue that doesn't bother you very much the first couple of times, but after months of VS hanging every time I modify the csproj file, things can get annoying. I think the issue may be that VS is running `dotnet restore` every time, as I noticed in Task Manager that a `dotnet.exe` process spawns during the hang, and when VS stops hanging, the process is gone. +10668 area-System.Numerics Fix poor hash function in System.Numerics #1509 Replace hash function for Vector (Inspired by OpenJDK). Add functional and performance tests, that show improvements. Fixes #1509 +10673 area-Infrastructure Updating CoreClr dependencies to servicing-24409-01 /cc @dotnet/corefx-contrib +10675 area-Serialization [ReflectionBasedXmlSerializer] GenerateMembersElement is not Impelmented `ReflectionXmlSerializationReader.GenerateMembersElement` and `ReflectionXmlSerializationWriter.WriteMembersElement` throw NotImplementedException. We should implement these two methods. WCF is the major customer of the methods as WCF uses XmlReflectionImporter.ImportMembersMapping and generates special serializers for OperationContracts. +10676 area-Serialization [ReflectionBasedXmlSerializer] To Support SOAP Serialization As all SOAP relates APIs are not in CoreCLR yet, the reflection based method currently throws PlatformNotSupportedException when types require SOAP serialization. +10677 area-Infrastructure Enable daily builds for arm64 @gkhanna79 @Priya91 +10681 area-Infrastructure Updating CoreClr dependencies to stable /cc @dotnet/corefx-contrib +10685 area-System.Diagnostics [ExcludeFromCodeCoverage] is marked as internal The ExcludeFromCodeCoverage attribute is marked as internal. This is more than likely intended (It's also internal in the PCL) but it's public in all other versions of the .Net framework. This attribute is as useful for user code as I'm sure it is in the framework's codebase. Is there a particular design reason this was marked as internal? Is there an alternative I'm not aware of? If not, can it be made public? +10686 area-Microsoft.CSharp Use dynamic function call with .NET core 1.0 RTM "Hi, I tried to do the following with .NET Core RTM: this.AsDynamic().Apply(@event); ((dynamic)this).Apply(@event); <-- Or this syntax (Same meaning?!) This didn't compile by default. I found out how to solve it, with adding the dependency: ""Microsoft.CSharp"": ""4.0.1"" The project compiles, but if I look at the dependency list of it, it's huge! It has 17 dependencies just for using dynamic (Just used once in the project at all) that's a high price. Is there a ""cheaper"" dependency which I can add to use dynamic? Maybe one or two of the 17? Kind regards Christian " +10688 area-System.Xml Remove unnecessary P2P references relating to xml contracts when merging #10672 , we introduced a lot of P2P references, since it was required for some libraries that depended on un-published packages. This issue is to track the work to remove all those. +10692 area-System.Runtime [Proposal] Add Enum.IsDefined() method So rather than doing this: ``` csharp string DoTheThing(MyEnum argument) { if (!Enum.IsDefined(typeof(MyEnum), argument)) { Log.Warn(...); return String.Empty; } return argument.ToString(); } ``` You can do this: ``` csharp string DoTheThing(MyEnum argument) { if (!argument.IsDefined()) { Log.Warn(...); return String.Empty; } return argument.ToString(); } ``` `Enum.IsDefined(typeof(MyEnum), argument)` is also quite slow as it needs to do lots of conversion checks etc; whereas if you already have the enum these don't need to be done. e.g. https://github.com/dotnet/corefx/blob/master/src/System.Private.Uri/src/System/UriExt.cs#L19-L24 Suggested change https://github.com/dotnet/coreclr/pull/6687 /cc @terrajobst +10694 area-System.Security Recommended way to determine when code is running on a FIPS compliant machine (desktop & coreclr)? I'm currently working on a `SHA256.Create()` implementation that works on CoreCLR and net451 FIPS compliant machines. I'm currently using try catch statements to work around net451's invalid `SHA256.Create` behavior to determine FIPS compliance but was wondering if there was a better route that worked on both desktop and coreclr? +10695 area-System.Globalization How to get DateTimeFormatInfo Time and Date separators? In .NET there are `DateSeparator` and `TimeSeparator` properties, but I can't find them in .NET Core. Were they removed or moved to a different class? I need to make ``` C# string.Join(info.TimeSeparator, array); ``` +10698 area-System.IO Add positive tests for FileStream begin/end +10702 area-System.Net System.Net test intermittent failures few test cases are marked with `[ActiveIssue(10702)]` (pending work - i need to have an issue number to mark it :smile:) http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/windows_nt_release_prtest/324/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/windows_nt_debug_prtest/329/ Happened in here: https://github.com/dotnet/corefx/pull/10693 +10706 area-System.Data Missing SqlDataAdapter I noticed today that the DataTable class exists in System.Data in .NET Core, but it also seems that there is no SqlDataAdapter, so there is no way to read the data in to the DataTable +10709 area-System.Security System.Security.Cryptography.Csp error on UWP Hi A user of my library is getting an error when installing the library on NuGet. My library is netstandard1.3. He is the error: ``` System.Security.Cryptography.Csp 4.0.0 provides a compile-time reference assembly for System.Security.Cryptography.Csp on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm. ``` https://github.com/JamesNK/Newtonsoft.Json.Schema/issues/43 +10712 area-System.IO `readdir_r` is deprecated in glibc 2.24 Hello, The `pal_io.cpp` file in `System.Native` is using a newly deprecated function `readdir_r` which makes the sources not compile for me, with the following error message: ``` ==> Starting build()... Detected Linux x86_64 /home/jaen/.cache/pacaur/dotnet-cli/src/corefx-1.0.0/src/Native/System.Native/pal_io.cpp:344:17: error: 'readdir_r' is deprecated [-Werror,-Wdeprecated-declarations] int error = readdir_r(dir, entry, &result); ^ /usr/include/dirent.h:183:12: note: 'readdir_r' has been explicitly marked deprecated here extern int readdir_r (DIR *__restrict __dirp, ^ 1 error generated. make[2]: *** [System.Native/CMakeFiles/System.Native-Static.dir/build.make:135: System.Native/CMakeFiles/System.Native-Static.dir/pal_io.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /home/jaen/.cache/pacaur/dotnet-cli/src/corefx-1.0.0/src/Native/System.Native/pal_io.cpp:344:17: error: 'readdir_r' is deprecated [-Werror,-Wdeprecated-declarations] int error = readdir_r(dir, entry, &result); ^ /usr/include/dirent.h:183:12: note: 'readdir_r' has been explicitly marked deprecated here extern int readdir_r (DIR *__restrict __dirp, ^ 1 error generated. make[2]: *** [System.Native/CMakeFiles/System.Native.dir/build.make:135: System.Native/CMakeFiles/System.Native.dir/pal_io.cpp.o] Error 1 ``` Are there any plans to update this file for it to build with new glibc? +10713 area-System.Runtime DateTime.Parse throws TypeInitializationException, depends on System.Runtime.InteropServices.PInvoke "The following code: ``` using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Globalization; namespace DateTimeError { [TestClass] public class Class1 { [TestMethod] public void Test() { DateTime.Parse(""2015-11-20T10:08:01Z"", CultureInfo.CurrentCulture, DateTimeStyles.None); } } } ``` results in this error ``` Test method DateTimeError.Class1.Test threw exception: System.TypeInitializationException: The type initializer for 'System.Runtime.Versioning.BinaryCompatibility' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.InteropServices.PInvoke, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Stack Trace: at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType) at System.Attribute.GetCustomAttributes(Assembly element, Type attributeType, Boolean inherit) at System.AppDomain.GetTargetFrameworkName() at System.Runtime.Versioning.BinaryCompatibility.ReadTargetFrameworkId() at System.Runtime.Versioning.BinaryCompatibility.get_AppWasBuiltForFramework() at System.Runtime.Versioning.BinaryCompatibility.BinaryCompatibilityMap..ctor() at System.Runtime.Versioning.BinaryCompatibility..cctor() --- End of inner exception stack trace --- at System.Globalization.DateTimeFormatInfo.InsertHash(TokenHashValue[] hashTable, String str, TokenType tokenType, Int32 tokenValue) at System.Globalization.DateTimeFormatInfo.AddMonthNames(TokenHashValue[] temp, String monthPostfix) at System.Globalization.DateTimeFormatInfo.CreateTokenHashTable() at System.Globalization.DateTimeFormatInfo.Tokenize(TokenType TokenMask, TokenType& tokenType, Int32& tokenValue, __DTString& str) at System.__DTString.GetSeparatorToken(DateTimeFormatInfo dtfi, Int32& indexBeforeSeparator, Char& charBeforeSeparator) at System.DateTimeParse.Lex(DS dps, __DTString& str, DateTimeToken& dtok, DateTimeRawInfo& raw, DateTimeResult& result, DateTimeFormatInfo& dtfi, DateTimeStyles styles) at System.DateTimeParse.TryParse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles, DateTimeResult& result) at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at DateTimeError.Class1.Test() in C:\Users\FrederikCarlier\Documents\Visual Studio 2015\Projects\DateTimeError\Class1.cs:line 22 ``` when running in the context of mstest. The attached .zip file includes the full source code. You can find sporadic mentions of other hitting this issue, e.g. https://connect.microsoft.com/VisualStudio/feedback/details/2952488/unable-to-call-datetime-parse-from-within-a-net-core-app-1-0-test-project . You also hit this issue when deserializing JSON that contains a DateTime value. [DateTimeError.zip](https://github.com/dotnet/corefx/files/413418/DateTimeError.zip) " +10714 area-System.Runtime System.Runtime.Serialization.Formatters: Cleanup after merging Serialization PR in dev/api PR #10667 added Serialization back to Core. It came with a lot of ToDo's so this issue is to track those and make sure they get done.They are: - [x] Use SR instead of hard-coded strings once it is available in System.Runtime. - [x] Uncomment Debug.Asserts once it is available in System.Runtime - SerializationInfo was moved to coreclr - [x] Remove P2P references once corefx versions are updated. - [ ] Remove [temporary workaround](https://github.com/dotnet/corefx/pull/10667/files#diff-340897543d74ba6c30ea455b13aace92R1628) in ObjectManager.cs +10716 area-System.Net Cross compile System.Net.Http for Desktop "This is the first part at fixing #9846 and #9884. This PR changes the compilation of System.Net.Http for NET46 target so that it builds as a ""normal"" .NET Framework assembly by using assembly references for mscorlib.dll, system.dll, etc. " +10719 area-Infrastructure Building a corefx source or test project restores packages every time "Whenever I build a corefx source or test project that I've built before, the majority of the build time is spent in the ""RestorePackages"" target. It seems that the build system doesn't recognise that I have already restored all the packages. This increases build times significantly, and is unecessary. Is this by design and unavoidable? " +10720 area-System.Globalization System/Globalization IdnMapping, check if string is ASCII first before calling Interop? Hello, my name is Justin, current intern on the ASP.NET team. I noticed that calls to IdnMapping.GetAscii always called Interop.mincore.IdnToAscii, which can be a bit pricey because you are pinvoking. I was wondering if we could have a quick ASCII check (iterate through all characters and check the highest order bit) and only convert to puny code if it isn't ASCII? I currently implemented something similar in ASP.NET to avoid calling GetAscii, but it is more appropriate to be here. Specifically: https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Globalization/IdnMapping.cs#L72 +10727 area-System.Net [Question] Configure HTTP connections in CoreCLR (ServicePoint/ServicePointManager Properties) Hi, Would you please provide some information on the .NetCore's suggested approach to configure the connection properties which used to be provided through ServicePoint/ServicePointManager in .Net Framework, such as > UseNagleAlgorithm? Thanks! cc: @davidsh +10732 area-System.Net Add TLS system default SslStream overloads and hashing algorithm enum values This is tracking the addition of new API surface to SslStream: 1. Support for TLS system defaults (new overloads) 2. SHA256, SHA384 and SHA512 enum values +10739 area-System.Net Why doesn't HttpResponseMessage.Headers contain the values within HttpResponseMessage.Content.Headers? Whilst using HttpClient today it took me 45 minutes to realise the Content headers are not in the HttpResponseMessage.Headers but exist elsewhere. I have no clue why it's designed like this but if I look at response.Headers I expect to see ALL headers. +10744 area-Serialization [dev/api] Fix XmlSerializer tests for netcore50aot Make sure the XmlSerializer tests compile and pass for `/p:TargetGroup=netcore50aot` **EDIT**: Also make sure that we re-add the cross compilation for the implementation of XmlSerializer that was removed on 4833cbf3df34f63dddc2c0b9d254a62887964abe +10747 area-Meta SharedLibrary libs on netcore50 don't use the latest code I'm writing an UWP app which depends on a Profile111 PCL that uses `System.Linq.Expressions`, particularly the `Expression.IsTrue/IsFalse` methods, which means I need the fix from #3227 to avoid a crash. I'm new to .NET Core stuff, but from what I've read it seems like I should only need to reference the newest possible `System.Linq.Expressions` package, e.g. `4.1.1-beta-24412-03`, which should contain the fix. But doing that changes nothing; my app still crashes. So I looked at the contents of the package with ildasm, and it appears that the `netcore50` version doesn't contain the fix (looking at the contents of `System.Linq.Expressions.Interpreter.LightCompiler::CompileUnaryExpression`), while the `netstandard1.6` version does, and UWP is using the former. Is this expected, and if so, how can I get a fixed version of that package in an UWP app? +10749 area-System.Security Add time-constant equals and other utility methods to System.Security In applications sensitive to side-channel timing attacks, a constant time equality check can be used instead of a normal short-circuiting String.Equals (or similar for byte[], etc.). This is functionality often duplicated by application developers, copied and pasted from StackOverflow and what not. This is easy to subtly get wrong, and probably belongs somewhere in System.Security. We can see an example of this already implemented in an internal .NET class: [Microsoft.AspNetCore.Cryptography.Internal](https://github.com/aspnet/DataProtection/blob/dev/src/Microsoft.AspNetCore.Cryptography.Internal/CryptoUtil.cs#L90), but this isn't really the best place for it 😃 --- Edited by @bartonjs to match what was approved: ```csharp namespace System.Security.Cryptography { // new type in System.Security.Cryptography.Primitives.dll public static class CryptographicOperations { public static bool FixedTimeEquals(ReadOnlySpan left, ReadOnlySpan right); public static void ZeroMemory(Span span); } // Existing type in System.Security.Cryptography.Algorithms.dll public abstract class RandomNumberGenerator { public static void Fill(Span data); } } ``` +10752 area-System.Collections Collection and ObservableCollection do not support ranges "Let's keep the final speclet at the top for easier search # Speclet (Updated 9/23/2016) ## Scope Modernize `Collection` and `ObservableCollection` by allowing them to handle operations against multiple items simultaneously. ## Rationale The `ObservableCollection` is a critical collection when it comes to XAML-based development, though it can also be useful when building API client libraries as well. Because it implements `INotifyPropertyChanged` and `INotifyCollectionChanged`, nearly every XAML app in existence uses some form of this collection to bind a set of objects against UI. However, this class has some shortcomings. Namely, it cannot currently handle adding or removing multiple objects in a single call. Because of that, it also cannot manipulate the collection in such a way that the `PropertyChanged` events are raised at the very end of the operation. Consider the following situation: - You have a XAML app that accesses an API. - That API call returns 25 objects that need to be bound to the UI. - In order to get the data displayed into the UI, you likely have to cycle through the results, and add them one at a time to the ObservableCollection. - This has the side-effect of firing the `CollectionChanged` event 25 times. If you are also using that event to do other processing on incoming items, then those events are firing 25 times too. This can get very expensive, very quickly. - Additionally, that event will have `ChangedItems` Lists that will only ever have 0 or 1 objects in them. That is... not ideal. This behavior is unnecessary, especially considering that `NotifyCollectionChangedEventArgs` already has the components necessary to handle firing the event once for multiple items, but that capability is presently not being used at all. Implementing this properly would allow for better performance in these types of apps, and would negate the need for the plethora of replacements out there ([here](http://blog.ddeysel.com/technicals/introducing-the-awesome-observable-collection/), [here](http://tliangnet.blogspot.com/2013/04/observablecollection-performance-issue.html), and [here](https://github.com/Windows-XAML/Template10/blob/master/Template10%20%28Library%29/Utils/IEnumerableUtils.cs#L34-L45), for example). ## Usage Given the above scenario as an example, usage would look like this pseudocode: ``` cs var observable = new ObservableCollection(); var client = new HttpClient(); var result = client.GetStringAsync(""http://someapi.com/someobject""); var results = JsonConvert.DeserializeObject(result); observable.AddRange(results); ``` ## Implementation This is not the complete implementation, because other `*Range` functionality would need to be implemented as well. You can see the start of this work in PR #10751 ``` cs // Adds a range to the end of the collection. // Raises CollectionChanged (NotifyCollectionChangedAction.Add) public void AddRange(IEnumerable collection) // Inserts a range // Raises CollectionChanged (NotifyCollectionChangedAction.Add) public void InsertRange(int index, IEnumerable collection); // Removes a range. // Raises CollectionChanged (NotifyCollectionChangedAction.Remove) public void RemoveRange(int index, int count); // Will allow to replace a range with fewer, equal, or more items. // Raises CollectionChanged (NotifyCollectionChangedAction.Replace) public void ReplaceRange(int index, int count, IEnumerable collection); // Removes any item that matches the search criteria. // Raises CollectionChanged (NotifyCollectionChangedAction.Remove) // RWM: Excluded for now, will see if possible to add back in after implementation and testing. // public int RemoveAll(Predicate match); ``` ## Obstacles Doing this properly, and having the methods intuitively named, could potentially have the side effect of breaking existing classes that inherit from `ObservableCollection` to solve this problem. A good way to test this would be to make the change, compile something like Template10 against this new assembly, and see if it breaks. --- So the `ObservableCollection` is one of the cornerstones of software development, not just in Windows, but on the web. One issue that comes up constantly is that, while the `OnCollectionChanged` event has a structure and constructors that support signaling the change for multiple items being added, the `ObservableCollection` does not have a method to support this. If you look at the web as an example, Knockout has a way to be able to add multiple items to the collection, but not signal the change until the very end. The `ObservableCollection` needs the same functionality, but does not have it. If you look at other extension methods to solve this problem, like the one in [Template10](https://github.com/Windows-XAML/Template10/blob/master/Template10%20%28Library%29/Utils/IEnumerableUtils.cs#L34-L45), they let you add multiple items, but do not solve the signaling problem. That's because the `ObservableCollection.InsertItem()` method overrides `Collection.InsertItem()`, and all of the other methods are private. So the only way to fix this properly is in the `ObservableCollection` itself. I'm proposing an ""AddRange"" function that accepts an existing collection as input, optionally clears the collection before adding, and then throws the `OnCollectionChanging` event AFTER all the objects have been added. I have already implemented this in a PR #10751 so you can see what the implementation would look like. I look forward to your feedback. Thanks! " +10760 area-System.Security Exception thrown when trying to encrypt an EnvelopedCms with a Diffie-Hellman certificate if it uses AES as the symmetric cipher Currently, the only test that there is using a Diffie-Hellman certificate for encryption is using the default cipher, Triple DES CBC. However, if the cipher used is changed to any of the AES variants, the Windows implementation throws Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The parameter is incorrect. within method Internal.Cryptography.Pal.Windows.PkcsPalWindows.EncodeHelpers.CreateCryptMsgHandleToEncode +10764 area-System.Net TryGetAddrInfo_HostName_TryGetNameInfo test failing on Linux ``` System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName_TryGetNameInfo [FAIL] Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName_TryGetNameInfo() ``` ``` +10769 area-System.Net Test failure: System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest/BasicTest_AccessInstanceProperties_NoExceptions_Linux Opened on behalf of @jiangzeng The test `System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest/BasicTest_AccessInstanceProperties_NoExceptions_Linux` has failed. ``` Assert.InRange() Failure\r Range: (0 - 9223372036854775807)\r Actual: -1 ``` Stack Trace: ``` at System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.BasicTest_AccessInstanceProperties_NoExceptions_Linux() ``` Failing configurations: - Fedora.23.Amd64 - AnyCPU-Debug - AnyCPU-Release +10772 area-System.Numerics "Should add a ""Scale"" property to System.Numerics.Matrix4x4" (From #10758) ``` /// /// Gets or sets the scale component of this matrix. /// public Vector3 Scale { get { return new Vector3(M11, M22, M33); } set { M11 = value.X; M22 = value.Y; M33 = value.Z; } } ``` Thanks! +10773 area-System.Collections Test failure: System.Collections.Concurrent.Tests.BlockingCollectionTests/TestDebuggerAttributes Opened on behalf of @jiangzeng The test `System.Collections.Concurrent.Tests.BlockingCollectionTests/TestDebuggerAttributes` has failed. ``` System.InvalidOperationException : The API 'System.Collections.Concurrent.BlockingCollection`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].m_collection' cannot be used on the current platform. See http://go.microsoft.com/fwlink/?LinkId=248273 for more information. ``` Stack Trace: ``` at System.Reflection.RtFieldInfo.InternalGetValue(Object obj, StackCrawlMark& stackMark) at System.Reflection.RtFieldInfo.GetValue(Object obj) at System.Diagnostics.DebuggerAttributes.ValidateDebuggerDisplayReferences(Object obj) in D:\A\_work\1\s\src\Common\tests\System\Diagnostics\DebuggerAttributes.cs:line 122 at System.Collections.Concurrent.Tests.BlockingCollectionTests.TestDebuggerAttributes() in D:\A\_work\1\s\src\System.Collections.Concurrent\tests\BlockingCollectionTests.cs:line 176 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10775 area-System.Collections Test failure: System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests/CantAcceptDuplicateKeysFromSourceDictionary Opened on behalf of @jiangzeng The test `System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests/CantAcceptDuplicateKeysFromSourceDictionary` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: (No exception was thrown) ``` Stack Trace: Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Note: `System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests/IDictionary_NonGeneric_ItemSet_KeyOfWrongType` has failed with the same issue. +10776 area-System.Collections Test failure: System.Collections.Tests.BitArray_GetSetTests/CopyTo_Type_Invalid Opened on behalf of @jiangzeng The test `System.Collections.Tests.BitArray_GetSetTests/CopyTo_Type_Invalid` has failed. ``` Assert.Equal() Failure\r Expected: array\r Actual: (null) ``` Stack Trace: ``` at System.Collections.Tests.BitArray_GetSetTests.CopyTo_Type_Invalid() in D:\A\_work\1\s\src\System.Collections\tests\BitArray\BitArray_GetSetTests.cs:line 277 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10777 area-System.ComponentModel Test failure: System.ComponentModel.Primitives.Tests.CategoryAttributeTests/CategoryNames Opened on behalf of @jiangzeng The test `System.ComponentModel.Primitives.Tests.CategoryAttributeTests/CategoryNames` has failed. ``` Assert.Equal() Failure\r ? (pos 0)\r Expected: Misc\r Actual: Default\r ? (pos 0) ``` Stack Trace: ``` at System.ComponentModel.Primitives.Tests.CategoryAttributeTests.CategoryNames(CategoryAttribute attribute, String name) in D:\A\_work\1\s\src\System.ComponentModel.Primitives\tests\CategoryAttributeTests.cs:line 38 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10780 area-System.Data Test failure: System.Data.SqlClient.Tests.ExceptionTest/IndependentConnectionExceptionTestExecuteReader Opened on behalf of @jiangzeng The test `System.Data.SqlClient.Tests.ExceptionTest/IndependentConnectionExceptionTestExecuteReader` has failed. `System.Data.SqlClient.Tests.ExceptionTest/VariousExceptionTests` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format ``` Stack Trace: ``` at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object[] args) at System.Data.Common.ADP.OpenConnectionRequired(String method, ConnectionState state) in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\Common\AdapterUtil.cs:line 517 at System.Data.SqlClient.SqlCommand.ValidateCommand(Boolean async, String method) in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlCommand.cs:line 2329 at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method) in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlCommand.cs:line 1959 at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlCommand.cs:line 1358 at System.Data.SqlClient.SqlCommand.ExecuteReader() in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlCommand.cs:line 1331 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10781 area-System.Data "Test failure: System.Data.SqlClient.Tests with ""System.IO.FileNotFoundException""" Opened on behalf of @jiangzeng The test `System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Data.SqlClient.SqlException)\r Actual: typeof(System.IO.FileNotFoundException): Could not load file or assembly 'System.Threading.Thread, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. ``` Stack Trace: ``` at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs:line 452 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 1020 at System.Data.SqlClient.SqlConnection.Open() in D:\A\_work\1\s\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 585 at System.Data.SqlClient.Tests.ExceptionTest.GenerateConnectionException(String connectionString) in D:\A\_work\1\s\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs:line 84 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Also fail with the following tests: ExceptionTests IndependentConnectionExceptionTestOpenConnection CopyTo_NonGeneric_Success CopyTo_NonGeneric_Throws CopyTo_Success CopyTo_Throws GetEnumerator_Success Indexer_Success Indexer_Throws IsSynchronized_Success SyncRoot_Success +10783 area-System.Diagnostics Test failure: System.Diagnostics.Tests.FileVersionInfoTest/FileVersionInfo_Chinese Opened on behalf of @jiangzeng The test `System.Diagnostics.Tests.FileVersionInfoTest/FileVersionInfo_Chinese` has failed. ``` Assert.Equal() Failure\r Expected: \r Actual: (null) ``` Stack Trace: ``` at System.Diagnostics.Tests.FileVersionInfoTest.VerifyVersionInfo(String filePath, MyFVI expected) in D:\A\_work\1\s\src\System.Diagnostics.FileVersionInfo\tests\System.Diagnostics.FileVersionInfo.Tests\FileVersionInfoTest.cs:line 224 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Also fail for the following tests: FileVersionInfo_Chinese FileVersionInfo_DifferentFileVersionAndProductVersion FileVersionInfo_Normal +10784 area-System.Diagnostics "Test failure: System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests with ""System.UnauthorizedAccessException""" Opened on behalf of @jiangzeng The test `System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceData_ObjectArray_Test` has failed. ``` System.UnauthorizedAccessException : Access to the path 'C:\Users\DotNetTestRunner\AppData\Local\Temp\4e5tqjd2.tg4\DelimiterWriteMethodTests.xml' is denied. ``` Stack Trace: ``` at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) at System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests..ctor() in D:\A\_work\1\s\src\System.Diagnostics.TextWriterTraceListener\tests\DelimiterWriteMethodTests.cs:line 20 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Tests following also failed: TraceData_ObjectArray_Test TraceData_Object_Test TraceEvent_FormatString_Test TraceEvent_String_Test TestFlush TestWrite TestWriteAfterDisposeShouldNotThrow TestWriteLine TestWriterPropery +10785 area-System.Globalization Test failure: System.Globalization.Tests.CalendarHelpers/GetDaysInMonth_Invalid Opened on behalf of @jiangzeng The test `System.Globalization.Tests.CalendarHelpers/GetDaysInMonth_Invalid` has failed. ``` System.ArgumentOutOfRangeException : Non-negative number required.\r Parameter name: year ``` Stack Trace: ``` at System.Globalization.GregorianCalendarHelper.GetGregorianYear(Int32 year, Int32 era) at System.Globalization.EastAsianLunisolarCalendar.CheckYearRange(Int32 year, Int32 era) at System.Globalization.EastAsianLunisolarCalendar.GetMonthsInYear(Int32 year, Int32 era) at System.Globalization.Tests.CalendarHelpers.d__9.MoveNext() in D:\A\_work\1\s\src\System.Globalization.Calendars\tests\CalendarHelpers.cs:line 126 at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Test following also failed: GetDaysInMonth_Invalid IsLeapDay_Invalid IsLeapMonth_Invalid +10786 area-System.Globalization Test failure: System.Globalization.Tests.CalendarHelpers/GetEra_Invalid Opened on behalf of @jiangzeng The test `System.Globalization.Tests.CalendarHelpers/GetEra_Invalid` has failed. ``` System.TypeInitializationException : The type initializer for 'System.PlatformDetection' threw an exception.\r ---- System.ArgumentNullException : Value cannot be null.\r Parameter name: path1 ``` Stack Trace: ``` at System.Globalization.Tests.CalendarHelpers.GetEra_Invalid(Calendar calendar, DateTime dt) in D:\A\_work\1\s\src\System.Globalization.Calendars\tests\CalendarHelpers.cs:line 382 ----- Inner Stack Trace ----- at System.IO.Path.Combine(String path1, String path2) at System.PlatformDetection..cctor() in D:\A\_work\1\s\src\Common\tests\System\PlatformDetection.cs:line 19 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10787 area-System.IO "Test failure: System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods with ""System.MissingMethodException""" Opened on behalf of @jiangzeng The test `System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods/CreateEntryFromFileTest` has failed. ``` System.MissingMethodException : Method not found: 'System.IO.Compression.ZipArchive System.IO.Compression.ZipFile.Open(System.String, System.IO.Compression.ZipArchiveMode)'. ``` Stack Trace: ``` at System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods.d__7.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods.CreateEntryFromFileTest(Boolean withCompressionLevel) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug The following tests also failed: CreateEntryFromFileTest CreateFromDirectoryNormal CreateFromDirectoryUnicodel CreatedEmptyDirectoriesRoundtrip CreatedEmptyRootDirectoryRoundtrips ExtractToDirectoryTest ExtractToDirectoryTest_Unicode ExtractToFileTest DirectoryEntryWithData FilesOutsideDirectory InvalidConstructors InvalidDates InvalidFiles InvalidInstanceMethods UnsupportedCompressionRoutine ReadStreamOps UpdateAddFile UpdateReadTwice +10796 area-System.Runtime [.NET 4.6.3] Return parameters not considered in Attribute.GetParentDefinition(ParameterInfo) Opening this to track integration into Netfx6.3 (the tags only work on corefx repo bugs.) Besides, I need a reminder to remove the ActiveIssue from the corefx regression test once the fix has wandered itself over into the packages. Original issue: https://github.com/dotnet/coreclr/issues/6600 The commit that fixed it: https://github.com/dotnet/coreclr/pull/6745 +10797 area-Serialization DCS_ArrayOfSimpleType_PreserveObjectReferences_True Failed The following two tests throw `System.NotImplementedException` when using `SerializationOption.ReflectionOnly`, DCS_ArrayOfSimpleType_PreserveObjectReferences_True DCS_CircularTypes_PreserveObjectReferences_True +10799 area-System.Diagnostics Difficult (not possible?) to redirect binary output between Linux processes A common pattern in Linux is to pipe output between commands. And such output is not always text (e.g., imagine a series of openssl commands). Unfortunately, the System.Diagnostic.Process class _assumes_ that output and input is textual. Such an assumption violates Linux conventions. +10800 area-System.Data Use ConditionalFact in Manual tests of SqlClient Based on the comment at https://github.com/dotnet/corefx/pull/10742#issuecomment-239888047 `ConditionalFact` can be used to conditionally execute the Xunit This issue is being opened to track the change. +10804 area-Infrastructure Enable full test runs for netcoreapp1.1 Enable full test runs for netcoreapp1.1 in master. Currently we can only run them locally. Then we can merge this into dev/api and enable for that branch also. assigning to @joperezr for now. +10813 area-Serialization Test failure: DataContractJsonSerializerTests/DCJS_ArrayOfDateTime "Opened on behalf of @jiangzeng The test `DataContractJsonSerializerTests/DCJS_ArrayOfDateTime` has failed. ``` strings differ at index 12 ? [expected]:\/Date(946811045000-0800)\/"","" [actual ]:\/Date(946782245000+0000)\/"","" ? [Expected (with length=62)]: [""\/Date(946811045000-0800)\/"",""\/Date(1296734706000-0800)\/""] [Actual (with length=62)]: [""\/Date(946782245000+0000)\/"",""\/Date(1296705906000+0000)\/""] Test failed for input: System.DateTime[] Expected: [""\/Date(946811045000-0800)\/"",""\/Date(1296734706000-0800)\/""] Actual: [""\/Date(946782245000+0000)\/"",""\/Date(1296705906000+0000)\/""] Expected: True Actual: False ``` Stack Trace: ``` at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) at DataContractJsonSerializerTests.DCJS_ArrayOfDateTime() ``` Failing configurations: - Ubuntu.1604.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.10.Core.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Debian.82.Amd64 - AnyCPU-Debug - AnyCPU-Release - Suse.132.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.81.Amd64 - AnyCPU-Debug - AnyCPU-Release - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug The following test also failed: DataContractJsonSerializerTests/DCJS_ArrayOfDateTime DataContractJsonSerializerTests/DCJS_TypeWithAllPrimitiveProperties link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160816.02/workItem/System.Runtime.Serialization.Json.Tests " +10814 area-System.Net Test failure: System.Net.Primitives.Functional.Tests.CookieCollectionTest/Enumerator_Version_Invalid Opened on behalf of @jiangzeng The test `System.Net.Primitives.Functional.Tests.CookieCollectionTest/Enumerator_Version_Invalid` has failed. ``` System.InvalidOperationException : Collection was modified after the enumerator was instantiated. ``` Stack Trace: ``` at System.Net.CookieCollection.CookieCollectionEnumerator.System.Collections.IEnumerator.get_Current() at System.Net.Primitives.Functional.Tests.CookieCollectionTest.Enumerator_Version_Invalid() in D:\A\_work\2\s\src\System.Net.Primitives\tests\FunctionalTests\CookieCollectionTest.cs:line 159 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Net.Primitives.Functional.Tests/analysis/xunit/System.Net.Primitives.Functional.Tests.CookieCollectionTest~2FEnumerator_Version_Invalid +10815 area-System.Net Test failure: System.Net.Primitives.Functional.Tests.CookieTest/Value_PassNullToCtor_GetReturnsEmptyString Opened on behalf of @jiangzeng The test `System.Net.Primitives.Functional.Tests.CookieTest/Value_PassNullToCtor_GetReturnsEmptyString` has failed. ``` Assert.Equal() Failure\r Expected: \r Actual: (null) ``` Stack Trace: ``` at System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString() in D:\A\_work\2\s\src\System.Net.Primitives\tests\FunctionalTests\CookieTest.cs:line 249 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Net.Primitives.Functional.Tests/analysis/xunit/System.Net.Primitives.Functional.Tests.CookieTest~2FValue_PassNullToCtor_GetReturnsEmptyString +10816 area-System.Net Test failure: System.Net.Primitives.Functional.Tests.CredentialCacheTest/AddRemove_HostPortAuthenticationTypeDefaultCredentials_Success Opened on behalf of @jiangzeng The test `System.Net.Primitives.Functional.Tests.CredentialCacheTest/AddRemove_HostPortAuthenticationTypeDefaultCredentials_Success` has failed. ``` System.ArgumentException : Default credentials cannot be supplied for the authenticationType1 authentication scheme.\r Parameter name: authenticationType ``` Stack Trace: ``` at System.Net.CredentialCache.Add(String host, Int32 port, String authenticationType, NetworkCredential credential) at System.Net.Primitives.Functional.Tests.CredentialCacheTest.AddRemove_HostPortAuthenticationTypeDefaultCredentials_Success() in D:\A\_work\2\s\src\System.Net.Primitives\tests\FunctionalTests\CredentialCacheTest.cs:line 405 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Net.Primitives.Functional.Tests/analysis/xunit/System.Net.Primitives.Functional.Tests.CredentialCacheTest~2FAddRemove_HostPortAuthenticationTypeDefaultCredentials_Success +10817 area-System.Net Test failure: System.Net.Primitives.Functional.Tests.CredentialCacheTest/Add_HostPortAuthenticationTypeCredential_Invalid Opened on behalf of @jiangzeng The test `System.Net.Primitives.Functional.Tests.CredentialCacheTest/Add_HostPortAuthenticationTypeCredential_Invalid` has failed. ``` Assert.Equal() Failure\r Expected: host\r Actual: (null) ``` Stack Trace: ``` at System.Net.Primitives.Functional.Tests.CredentialCacheTest.Add_HostPortAuthenticationTypeCredential_Invalid() in D:\A\_work\2\s\src\System.Net.Primitives\tests\FunctionalTests\CredentialCacheTest.cs:line 165 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Net.Primitives.Functional.Tests/analysis/xunit/System.Net.Primitives.Functional.Tests.CredentialCacheTest~2FAdd_HostPortAuthenticationTypeCredential_Invalid Same issue for test: System.Net.Primitives.Functional.Tests.CredentialCacheTest/GetCredential_HostPortAuthenticationType_Invalid +10818 area-System.Net Test failure: System.Net.Primitives.Functional.Tests.CredentialCacheTest/Add_UriAuthenticationTypeCredential_Invalid Opened on behalf of @jiangzeng The test `System.Net.Primitives.Functional.Tests.CredentialCacheTest/Add_UriAuthenticationTypeCredential_Invalid` has failed. ``` Assert.Equal() Failure\r ? (pos 4)\r Expected: authenticationType\r Actual: authType\r ? (pos 4) ``` Stack Trace: ``` at System.Net.Primitives.Functional.Tests.CredentialCacheTest.Add_UriAuthenticationTypeCredential_Invalid() in D:\A\_work\2\s\src\System.Net.Primitives\tests\FunctionalTests\CredentialCacheTest.cs:line 125 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Net.Primitives.Functional.Tests/analysis/xunit/System.Net.Primitives.Functional.Tests.CredentialCacheTest~2FAdd_UriAuthenticationTypeCredential_Invalid Same issue for test: System.Net.Primitives.Functional.Tests.CredentialCacheTest/GetCredential_UriAuthenticationType_Invalid +10819 area-System.Net Test failure: System.Net.WebSockets.Tests.WebSocketExceptionTests/ConstructorTests_WebSocketError_Exception_Success Opened on behalf of @jiangzeng The test `System.Net.WebSockets.Tests.WebSocketExceptionTests/ConstructorTests_WebSocketError_Exception_Success` has failed. ``` System.ArgumentNullException : Value cannot be null.\r Parameter name: format ``` Stack Trace: ``` at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1) at System.SR.Format(String resourceFormat, Object p1, Object p2) at System.Net.WebSockets.WebSocketException.GetErrorMessage(WebSocketError error) at System.Net.WebSockets.WebSocketException..ctor(WebSocketError error, Exception innerException) at System.Net.WebSockets.Tests.WebSocketExceptionTests.ConstructorTests_WebSocketError_Exception_Success(WebSocketError error) in D:\A\_work\2\s\src\System.Net.WebSockets\tests\WebSocketExceptionTests.cs:line 57 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Net.WebSockets.Tests/analysis/xunit/System.Net.WebSockets.Tests.WebSocketExceptionTests~2FConstructorTests_WebSocketError_Exception_Success Same issue for test: System.Net.WebSockets.Tests.WebSocketExceptionTests/ConstructorTests_WebSocketError_Success +10820 area-System.Collections Test failure: System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntInt/Clear Opened on behalf of @jiangzeng The test `System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntInt/Clear` has failed. ``` System.MethodAccessException : Attempt by method 'System.Collections.ObjectModel.Tests.Helper.GetDictionary(System.Collections.ObjectModel.KeyedCollection`2)' to access method 'System.Collections.ObjectModel.KeyedCollection`2.get_Dictionary()' failed. ``` Stack Trace: ``` at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, RuntimeMethodHandleInternal method, RuntimeType parent, UInt32 invocationFlags) at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, IRuntimeMethodInfo method, RuntimeType parent, UInt32 invocationFlags) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at System.Collections.ObjectModel.Tests.Helper.GetDictionary[TKey,TValue](KeyedCollection`2 collection) in D:\A\_work\2\s\src\System.ObjectModel\tests\KeyedCollection\Utils.cs:line 183 at System.Collections.ObjectModel.Tests.KeyedCollectionTests`2.Clear(Int32 collectionSize) in D:\A\_work\2\s\src\System.ObjectModel\tests\KeyedCollection\TestMethods.cs:line 1525 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.ObjectModel.Tests/analysis/xunit/System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntInt~2FClear Same issue for the following tests: System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntInt/Clear System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntInt/Threshold System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntString/Clear System.Collections.ObjectModel.Tests.KeyedCollectionTestsIntString/Threshold System.Collections.ObjectModel.Tests.KeyedCollectionTestsStringInt/Clear System.Collections.ObjectModel.Tests.KeyedCollectionTestsStringInt/Threshold System.Collections.ObjectModel.Tests.KeyedCollectionTestsStringString/Clear System.Collections.ObjectModel.Tests.KeyedCollectionTestsStringString/Threshold +10821 area-System.Net "Tests under ""System.Private.Uri.Functional.Tests"" fail with Assert Exception: ""Xunit.Sdk.EqualException"" & ""Xunit.Sdk.FalseException""" Opened on behalf of @jiangzeng The test `System.PrivateUri.Tests.IdnDnsSafeHostTest/IdnDnsSafeHost_IPv6Host_ScopeIdButNoBrackets` has failed. ``` Assert.Equal() Failure\r ? (pos 0)\r Expected: ::1%23\r Actual: 0000:0000:0000:0000:0000:0000:0000:0001%2···\r ? (pos 0) ``` Stack Trace: ``` at System.PrivateUri.Tests.IdnDnsSafeHostTest.IdnDnsSafeHost_IPv6Host_ScopeIdButNoBrackets() in D:\A\_work\2\s\src\System.Private.Uri\tests\FunctionalTests\IdnDnsSafeHostTest.cs:line 43 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Private.Uri.Functional.Tests Failed tests: System.PrivateUri.Tests.IdnDnsSafeHostTest/IdnDnsSafeHost_IPv6Host_ScopeIdButNoBrackets System.PrivateUri.Tests.IriTest/Iri_804110_TryCreateUri_ShouldNotThrowIndexOutOfRange System.PrivateUri.Tests.IriTest/Iri_IncorrectNormalization System.PrivateUri.Tests.IriTest/Iri_Uri_SchemaParsing_ShouldNotThrowArgumentOutOfRange System.PrivateUri.Tests.UriBuilderTests/TestQuery System.PrivateUri.Tests.UriEscapingTest/UriAbsoluteEscaping_FullIPv6Uri_NothingEscaped System.PrivateUri.Tests.UriEscapingTest/UriAbsoluteEscaping_RFC3986Reserved_NothingEscaped System.PrivateUri.Tests.UriEscapingTest/UriAbsoluteUnEscaping_AlphaNumericEscapedIriOn_UnEscaping System.PrivateUri.Tests.UriEscapingTest/UriAbsoluteUnEscaping_RFC2396ReservedEscaped_NoUnEscaping System.PrivateUri.Tests.UriEscapingTest/UriAbsoluteUnEscaping_RFC2396UnreservedEscaped_AllUnescaped System.PrivateUri.Tests.UriEscapingTest/UriAbsoluteUnEscaping_RFC3986ReservedEscaped_NothingUnescaped System.PrivateUri.Tests.UriEscapingTest/UriEscapingDataString_RFC3986ReservedWithIRI_Escaped System.PrivateUri.Tests.UriEscapingTest/UriEscapingDataString_RFC3986Reserved_Escaped System.PrivateUri.Tests.UriEscapingTest/UriEscapingDataString_Unicode_SurrogatePair System.PrivateUri.Tests.UriEscapingTest/UriEscapingUriString_FullIPv6Uri_NothingEscaped System.PrivateUri.Tests.UriEscapingTest/UriEscapingUriString_RFC3986ReservedWithIRI_NothingEscaped System.PrivateUri.Tests.UriEscapingTest/UriEscapingUriString_RFC3986Reserved_NothingEscaped System.PrivateUri.Tests.UriEscapingTest/UriFile_ExplicitDosFile_QueryAllowed System.PrivateUri.Tests.UriEscapingTest/UriFile_ExplicitFile_QueryAllowed System.PrivateUri.Tests.UriEscapingTest/UriUnescapeInvalid_AsciiIncompleteUtf8AsciiIriOn_InvalidUtf8LeftAlone System.PrivateUri.Tests.UriEscapingTest/UriUnescapeInvalid_IncompleteUtf8AfterValidUtf8IriOn_InvalidUtf8LeftAlone System.PrivateUri.Tests.UriEscapingTest/UriUnescapeInvalid_ValidUtf8IncompleteUtf8AsciiIriOn_InvalidUtf8LeftAlone System.PrivateUri.Tests.UriEscapingTest/UriUnescape_AsciiUtf8AsciiIriOn_ValidUnescaped System.PrivateUri.Tests.UriEscapingTest/UriUnescape_EscapedAsciiIriOn_Unescaped System.PrivateUri.Tests.UriGetComponentsTest/GetComponents_UnknownScheme_ComponentsUnaffected System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_Any_Success System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_CanonicalCollonHex_Success System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_CompressionRangeSelection_Success System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_EmbeddedIPv4_Success System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_LeadingValue_Success System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_MaxValue_Success System.PrivateUri.Tests.UriIpHostTest/UriIPv6Host_ScopeId_Success System.PrivateUri.Tests.UriIsWellFormedUriStringTest/UriIsWellFormed_NewRelativeWithKnownSchemeAndQuery_SuccessButNotWellFormed System.PrivateUri.Tests.UriIsWellFormedUriStringTest/UriIsWellFormed_RelativeWithPercentAndColon_Failure System.PrivateUri.Tests.UriIsWellFormedUriStringTest/UriIsWellFormed_TryCreateNewRelativeWithPercentAndColon_Success System.PrivateUri.Tests.UriMailToTest/UriMailTo_SchemeAndBackslash_Throws System.PrivateUri.Tests.UriMailToTest/UriMailTo_SchemeUserAtQuery_Throws System.PrivateUri.Tests.UriMailToTest/UriMailTo_SchemeUserAt_Throws System.PrivateUri.Tests.UriMailToTest/UriMailTo_TwoCommaSepratedAddresses_Success System.PrivateUri.Tests.UriMailToTest/UriMailTo_TwoSemiColonSepratedAddresses_Success System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_BaseVsCharDotSlash_ReturnsCharDotSlash System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_BaseVsCharDot_ReturnsBasePathPlusCharDot System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_BaseVsCharDoubleDotSlash_ReturnsCharDoubleDotSlash System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_BaseVsCharDoubleDot_ReturnsBasePathPlusCharDoubleDot System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_BaseVsSlashTrippleDotSlash_ReturnsSlashTrippleDotSlash System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_BaseVsTrippleDot_ReturnsBasePathPlusTrippleDot +10822 area-Serialization Serializable attribute exists in both System.Runtime.Serialization.Formatters and nunit.framework "Hi I have issue with Serializable attribute ``` The type 'SerializableAttribute' exists in both 'System.Runtime.Serialization.Formatters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'nunit.framework, Version=3.4.1.0. ``` How can I specify the package to use? My project.json : ``` { ""version"": ""1.0.0-*"", ""testRunner"": ""nunit"", ""buildOptions"": { ""debugType"": ""portable"", ""allowUnsafe"": true, ""define"": [ ""WIN64"" ] }, ""frameworks"": { ""netcoreapp1.0"": { ""buildOptions"": { ""compile"": { ""exclude"": [ ""Tests/**/*.cs"", ""Examples/**/**/AssemblyInfo.cs"" ] }, ""define"": [ ""NETSTANDARD1_6"" ] }, ""dependencies"": { ""NETStandard.Library"": ""1.6.0"", ""System.Runtime"": ""4.1.0"", ""System.Runtime.Serialization.Formatters"": ""4.0.0-rc3-24212-01"", ""System.Dynamic.Runtime"": ""4.0.11"", ""System.Threading.ThreadPool"": ""4.0.10"", ""System.Reflection.TypeExtensions"": ""4.1.0"", ""System.Diagnostics.StackTrace"": ""4.0.1"", ""System.Diagnostics.Process"": ""4.1.0"", ""System.Threading.Thread"": ""4.0.0"", ""dotnet-test-nunit"": ""3.4.0-beta-1"", ""NUnit"": ""3.4.1"" }, ""imports"": ""dnxcore50"" }, ""net451"": { ""dependencies"": { ""NUnit"": ""3.4.1"", ""dotnet-test-nunit"": ""3.4.0-alpha-2"" }, ""buildOptions"": { ""compile"": { ""exclude"": [ ""Tests/**/*.cs"", ""Tests/service-bus-tests-net4/Properties/AssemblyInfo.cs"", ""Examples/service-example-csharp-dispatcher/Properties/AssemblyInfo.cs"", ""Examples/service-example-csharp/Properties/AssemblyInfo.cs"" ] } } } }, ""runtimes"": { ""ubuntu.14.04-x64"": {}, ""win10-x64"": {}, ""win7-x64"": {} } } ``` " +10823 area-System.Reflection Test failure: System.Reflection.Context.CustomReflectionContextTests/InstantiateContext_Throws Opened on behalf of @jiangzeng The test `System.Reflection.Context.CustomReflectionContextTests/InstantiateContext_Throws` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.PlatformNotSupportedException)\r Actual: (No exception was thrown) ``` Stack Trace: ``` at System.Reflection.Context.CustomReflectionContextTests.InstantiateContext_Throws() in D:\A\_work\2\s\src\System.Reflection.Context\tests\CustomReflectionContextTests.cs:line 14 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Reflection.Context.Tests/analysis/xunit/System.Reflection.Context.CustomReflectionContextTests~2FInstantiateContext_Throws +10825 area-System.Runtime Test failure: System.Runtime.InteropServices.HandleCollectorTests/CountOverflow Opened on behalf of @jiangzeng The test `System.Runtime.InteropServices.HandleCollectorTests/CountOverflow` has failed. ``` Assert.NotNull() Failure ``` Stack Trace: ``` at System.Runtime.InteropServices.HandleCollectorTests.CountOverflow() in D:\A\_work\2\s\src\System.Runtime.InteropServices\tests\System\Runtime\InteropServices\HandleCollectorTests.cs:line 79 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release +10826 area-System.Numerics Test failure: System.Numerics.Tests.multiplyTest/RunMultiply_TwoLargeBigIntegers_Threshold Opened on behalf of @jiangzeng The test `System.Numerics.Tests.multiplyTest/RunMultiply_TwoLargeBigIntegers_Threshold` has failed. ``` System.TypeInitializationException : The type initializer for 'BigIntTools.Utils' threw an exception.\r ---- System.ArgumentNullException : Value cannot be null.\r Parameter name: type ``` Stack Trace: ``` at BigIntTools.Utils.RunWithFakeThreshold(String name, Int32 value, Action action) in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\BigIntTools.cs:line 46 at System.Numerics.Tests.multiplyTest.RunMultiply_TwoLargeBigIntegers_Threshold() in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\multiply.cs:line 41 ----- Inner Stack Trace ----- at System.Reflection.IntrospectionExtensions.GetTypeInfo(Type type) at BigIntTools.Utils..cctor() in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\BigIntTools.cs:line 38 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.multiplyTest~2FRunMultiply_TwoLargeBigIntegers_Threshold Same issue for the tests: System.Numerics.Tests.modpowTest/ModPow1Large2SmallInt_Threshold System.Numerics.Tests.modpowTest/ModPow2Large1SmallInt_Threshold System.Numerics.Tests.modpowTest/ModPow3LargeInt +10827 area-System.Numerics Test failure: System.Numerics.Tests.powTest/RunOverflow Opened on behalf of @jiangzeng The test `System.Numerics.Tests.powTest/RunOverflow` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.OverflowException)\r Actual: typeof(System.OutOfMemoryException): Array dimensions exceeded supported range. ``` Stack Trace: ``` at System.Numerics.BigIntegerBuilder.SetSizeClear(Int32 cu) at System.Numerics.BigIntegerBuilder.Mul(BigIntegerBuilder& reg1, BigIntegerBuilder& reg2) at System.Numerics.BigInteger.Pow(BigInteger value, Int32 exponent) at System.Numerics.Tests.powTest.<>c__DisplayClass9_0.b__0() in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\pow.cs:line 178 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.powTest~2FRunOverflow +10828 area-System.Numerics Test failure: System.Numerics.Tests.ComparisonTest/IComparable_Invalid Opened on behalf of @jiangzeng The test `System.Numerics.Tests.ComparisonTest/IComparable_Invalid` has failed. ``` Assert.Equal() Failure\r Expected: obj\r Actual: (null) ``` Stack Trace: ``` at System.Numerics.Tests.ComparisonTest.IComparable_Invalid() in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\Comparison.cs:line 367 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.ComparisonTest~2FIComparable_Invalid +10829 area-System.Numerics Test failure: System.Numerics.Tests.ComplexTests/ACos_Advanced Opened on behalf of @jiangzeng The test `System.Numerics.Tests.ComplexTests/ACos_Advanced` has failed. ``` Failure at line 298. Expected real: 0. Actual real: 1.5707963267949\r Expected: True\r Actual: False ``` Stack Trace: ``` at System.Numerics.Tests.ComplexTests.VerifyRealImaginaryProperties(Complex complex, Double real, Double imaginary, Int32 lineNumber) in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\ComplexTests.cs:line 1583 at System.Numerics.Tests.ComplexTests.ACos_Advanced(Double real, Double imaginary, Double expectedReal, Double expectedImaginary) in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\ComplexTests.cs:line 298 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.ComplexTests~2FACos_Advanced Same issue for the tests: System.Numerics.Tests.ComplexTests/ACos_Advanced System.Numerics.Tests.ComplexTests/ASin_Advanced System.Numerics.Tests.ComplexTests/Equals +10830 area-System.Numerics Test failure: System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromBigIntegerTests Opened on behalf of @jiangzeng The test `System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromBigIntegerTests` has failed. ``` Assert.Equal() Failure\r Expected: 8\r Actual: 0 ``` Stack Trace: ``` at System.Numerics.Tests.cast_fromTest.VerifyDoubleExplicitCastFromBigInteger(Double value, BigInteger bigInteger) in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\cast_from.cs:line 896 at System.Numerics.Tests.cast_fromTest.DoubleExplicitCastFromLargeBigIntegerTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\cast_from.cs:line 727 at System.Numerics.Tests.cast_fromTest.RunDoubleExplicitCastFromBigIntegerTests() in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\cast_from.cs:line 567 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.cast_fromTest~2FRunDoubleExplicitCastFromBigIntegerTests Same issue for the tests: System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromBigIntegerTests System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests +10832 area-System.Numerics Test failure: System.Numerics.Tests.logTest/RunLargeValueLogTests Opened on behalf of @jiangzeng The test `System.Numerics.Tests.logTest/RunLargeValueLogTests` has failed. ``` Assert.True() Failure\r Expected: True\r Actual: False ``` Stack Trace: ``` at System.Numerics.Tests.logTest.LargeValueLogTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\log.cs:line 166 at System.Numerics.Tests.logTest.RunLargeValueLogTests() in D:\A\_work\2\s\src\System.Runtime.Numerics\tests\BigInteger\log.cs:line 139 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.logTest~2FRunLargeValueLogTests Same issue for the tests: System.Numerics.Tests.logTest/RunLargeValueLogTests System.Numerics.Tests.logTest/RunLogTests +10833 area-System.Collections "Desktop test failure: System.Collections.Concurrent.Tests.ConcurrentDictionaryTests/IDicionary_Remove_NullKeyInKeyValuePair_ThrowsArgumentNullException fail with ""Xunit.Sdk.EqualEqualException""" Opened on behalf of @Jiayili1 The test `System.Collections.Concurrent.Tests.ConcurrentDictionaryTests/IDicionary_Remove_NullKeyInKeyValuePair_ThrowsArgumentNullException` has failed. ``` Assert.Equal() Failure\r ? (pos 0)\r Expected: keyValuePair\r Actual: TKey is a reference type and item.Key is ···\r ? (pos 0) ``` Stack Trace: ``` at System.Collections.Concurrent.Tests.ConcurrentDictionaryTests.IDicionary_Remove_NullKeyInKeyValuePair_ThrowsArgumentNullException() in D:\A\_work\2\s\src\System.Collections.Concurrent\tests\ConcurrentDicionary\ConcurrentDictionaryTests.cs:line 742 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.02/workItem/System.Collections.Concurrent.Tests +10838 area-Meta UWP F5 tests use reflection block -- DataContractJsonSerializerTests fail with System.TypeInitializationException Opened on behalf of @jiangzeng The test `DataContractJsonSerializerTests/DCJS_ClassWithDatetimeOffsetTypeProperty` has failed. ``` System.TypeInitializationException : The type initializer for 'System.Runtime.Serialization.XmlFormatReaderGenerator' threw an exception.\r ---- System.InvalidOperationException : The API 'System.Runtime.Serialization.FormatterServices.GetUninitializedObject(System.Type)' cannot be used on the current platform. See http://go.microsoft.com/fwlink/?LinkId=248273 for more information. ``` Stack Trace: ``` at System.Runtime.Serialization.XmlFormatReaderGenerator.UnsafeGetUninitializedObject(Type type) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlFormatReaderGenerator.cs:line 929 at ReadTypeWithDateTimeOffsetTypePropertyFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] ) at System.Runtime.Serialization.Json.JsonClassDataContract.ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\JsonClassDataContract.cs:line 138 at System.Runtime.Serialization.Json.JsonDataContract.ReadJsonValue(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\JsonDataContract.cs:line 101 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadJsonValue(DataContract contract, XmlReaderDelegator reader, XmlObjectSerializerReadContextComplexJson context) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 718 at System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\XmlObjectSerializerReadContextComplexJson.cs:line 54 at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs:line 189 at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs:line 126 at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContextComplex.cs:line 72 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 777 at System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 261 at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 280 at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 272 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadObject(XmlDictionaryReader reader) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 600 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.ReadObject(Stream stream) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 585 at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(Stream stream) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 161 at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) in D:\A\_work\2\s\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 2217 at DataContractJsonSerializerTests.DCJS_ClassWithDatetimeOffsetTypeProperty() in D:\A\_work\2\s\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 1335 ----- Inner Stack Trace ----- at System.Delegate.CreateDelegateInternal(RuntimeType rtType, RuntimeMethodInfo rtMethod, Object firstArgument, DelegateBindingFlags flags, StackCrawlMark& stackMark) at System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(Type delegateType, Object firstArgument, DelegateBindingFlags bindingFlags, StackCrawlMark& stackMark) at System.Reflection.RuntimeMethodInfo.CreateDelegate(Type delegateType) at System.Runtime.Serialization.XmlFormatReaderGenerator..cctor() in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlFormatReaderGenerator.cs:line 34 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Serialization.Json.Tests/analysis/xunit/DataContractJsonSerializerTests~2FDCJS_ClassWithDatetimeOffsetTypeProperty Same issue for the following tests: DCJS_ClassWithDatetimeOffsetTypeProperty DCJS_CollectionInterfaceGetOnlyCollection DCJS_ContainsLinkedList DCJS_DCClassWithEnumAndStruct DCJS_DataContractAttribute DCJS_DataContractWithDotInName DCJS_DataContractWithMinusSignInName DCJS_DataContractWithOperatorsInName DCJS_DataContractWithOtherSymbolsInName DCJS_DataMemberAttribute DCJS_DataMemberNames DCJS_EnumerableInterfaceGetOnlyCollection DCJS_GenericTypeWithPrivateSetter DCJS_IgnoreDataMemberAttribute DCJS_InternalTypeSerialization DCJS_KeyValuePair DCJS_KeyValuePairOfStringObject DCJS_PrivateTypeSerialization DCJS_Queue DCJS_Stack DCJS_SuspensionManager DCJS_TypeWithEmitDefaultValueFalse DCJS_TypeWithInternalDefaultConstructor DCJS_TypeWithKnownTypeAttributeAndInterfaceMember DCJS_TypeWithKnownTypeAttributeAndListOfInterfaceMember +10840 area-Serialization Test failure: DataContractJsonSerializerTests/DCJS_RecursiveCollection Opened on behalf of @jiangzeng The test `DataContractJsonSerializerTests/DCJS_RecursiveCollection` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Runtime.Serialization.InvalidDataContractException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format ``` Stack Trace: ``` at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) in D:\A\_work\2\s\src\Common\src\System\SR.cs:line 71 at System.Runtime.Serialization.DataContract.ValidatePreviousCollectionTypes(Type collectionType, Type itemType, HashSet`1 previousCollectionTypes) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1276 at System.Runtime.Serialization.DataContract.IsTypeSerializable(Type type, HashSet`1 previousCollectionTypes) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1257 at System.Runtime.Serialization.DataContract.IsTypeSerializable(Type type, HashSet`1 previousCollectionTypes) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1258 at System.Runtime.Serialization.DataContract.IsTypeSerializable(Type type, HashSet`1 previousCollectionTypes) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1258 at System.Runtime.Serialization.DataContract.IsTypeSerializable(Type type) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1237 at System.Runtime.Serialization.DataContract.ImportKnownTypeAttributes(Type type, Dictionary`2 typesChecked, Dictionary`2& knownDataContracts) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1967 at System.Runtime.Serialization.DataContract.ImportKnownTypeAttributes(Type type) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 1961 at System.Runtime.Serialization.CollectionDataContract.CollectionDataContractCriticalHelper.get_KnownDataContracts() in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\CollectionDataContract.cs:line 898 at System.Runtime.Serialization.CollectionDataContract.get_KnownDataContracts() in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\CollectionDataContract.cs:line 462 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 146 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 820 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObject(XmlWriterDelegator writer, Object graph) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 788 at System.Runtime.Serialization.XmlObjectSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 101 at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 71 at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 62 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject(XmlDictionaryWriter writer, Object graph) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 636 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject(Stream stream, Object graph) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 625 at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(Stream stream, Object graph) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 156 at DataContractJsonSerializerTests.<>c.b__120_0() in D:\A\_work\2\s\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 1851 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Serialization.Json.Tests/analysis/xunit/DataContractJsonSerializerTests~2FDCJS_RecursiveCollection +10842 area-System.Console "Test failure: ReadAndWrite/OutputEncoding fail with ""Assert+WrapperXunitException""" Opened on behalf of @Jiayili1 The test `ReadAndWrite/OutputEncoding` has failed. ``` Assert+WrapperXunitException : File path: D:\A\_work\2\s\src\System.Console\tests\ReadAndWrite.cs. Line: 202\r ---- Assert.Equal() Failure\r Expected: Byte[] []\r Actual: Byte[] [239, 187, 191] ``` Stack Trace: ``` at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 583 at Assert.Equal[T](T expected, T actual, String path, Int32 line) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 172 at ReadAndWrite.ValidateConsoleEncoding(Encoding encoding) in D:\A\_work\2\s\src\System.Console\tests\ReadAndWrite.cs:line 202 at ReadAndWrite.OutputEncoding() in D:\A\_work\2\s\src\System.Console\tests\ReadAndWrite.cs:line 275 ----- Inner Stack Trace ----- at Assert.Equal[T](T expected, T actual, String path, Int32 line) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 171 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.02/workItem/System.Console.Tests/analysis/xunit/ReadAndWrite~2FOutputEncoding +10843 area-Serialization Test failure: DataContractSerializerTests/DCS_DeserializeEmptyString Opened on behalf of @jiangzeng The test `DataContractSerializerTests/DCS_DeserializeEmptyString` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.Xml.XmlException): Unexpected end of file. ``` Stack Trace: ``` at System.Xml.EncodingStreamWrapper.ReadBOMEncoding(Boolean notOutOfBand) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\EncodingStreamWrapper.cs:line 228 at System.Xml.EncodingStreamWrapper..ctor(Stream stream, Encoding encoding) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\EncodingStreamWrapper.cs:line 66 at System.Xml.XmlUTF8TextReader.SetInput(Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlUTF8TextReader.cs:line 580 at System.Xml.XmlDictionaryReader.CreateTextReader(Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryReader.cs:line 104 at System.Xml.XmlDictionaryReader.CreateTextReader(Stream stream, XmlDictionaryReaderQuotas quotas) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryReader.cs:line 96 at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(Stream stream) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 224 at DataContractSerializerTests.<>c__DisplayClass136_0.b__0() in D:\A\_work\2\s\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 1936 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160915.01/workItem/System.Runtime.Serialization.Xml.Tests/analysis/xunit/DataContractSerializerTests~2FDCS_DeserializeEmptyString +10844 area-System.Console "Test failure: WindowAndCursorProps/WindowWidth_WindowHeight_InvalidSize fail with ""Assert+WrapperXunitException""" Opened on behalf of @Jiayili1 The test `WindowAndCursorProps/WindowWidth_WindowHeight_InvalidSize` has failed. ``` Assert+WrapperXunitException : File path: D:\A\_work\2\s\src\System.Console\tests\WindowAndCursorProps.cs. Line: 36\r ---- Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: typeof(System.IO.IOException): The handle is invalid.\r ``` Stack Trace: ``` at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 583 at Assert.Throws[T](String paramName, Func`1 testCode, String path, Int32 line) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 512 at WindowAndCursorProps.WindowWidth_WindowHeight_InvalidSize() in D:\A\_work\2\s\src\System.Console\tests\WindowAndCursorProps.cs:line 36 ----- Inner Stack Trace ----- at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded) at System.Console.get_WindowHeight() at System.Console.set_WindowWidth(Int32 value) at WindowAndCursorProps.<>c.b__2_0() in D:\A\_work\2\s\src\System.Console\tests\WindowAndCursorProps.cs:line 36 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.02/workItem/System.Console.Tests/analysis/xunit/WindowAndCursorProps~2FWindowWidth_WindowHeight_InvalidSize +10845 area-System.Console "Tests under ""System.Console.Tests"" fail with ""Assert+WrapperXunitException""" Opened on behalf of @Jiayili1 The test `CancelKeyPressTests/CanAddAndRemoveHandler_Remote` has failed. ``` Assert+WrapperXunitException : File path: D:\A\_work\2\s\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs. Line: 169\r ---- Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 ``` Stack Trace: ``` at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 583 at Assert.Equal[T](T expected, T actual, String path, Int32 line) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 172 at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 169 at CancelKeyPressTests.CanAddAndRemoveHandler_Remote() in D:\A\_work\2\s\src\System.Console\tests\CancelKeyPress.cs:line 33 ----- Inner Stack Trace ----- at Assert.Equal[T](T expected, T actual, String path, Int32 line) in D:\A\_work\2\s\src\Common\tests\System\Diagnostics\AssertWithCallerAttributes.cs:line 171 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.02/workItem/System.Console.Tests Failed tests: CancelKeyPressTests/CanAddAndRemoveHandler_Remote ReadKey/RedirectedConsole_ReadKey RedirectedStream/ErrorRedirect RedirectedStream/InputRedirect RedirectedStream/OutputRedirect WindowAndCursorProps/Title_Set_Windows WindowAndCursorProps/Title_Set_Windows_longlength +10846 area-Serialization Test failure: System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests/ReadElementContentAsStringDataExceedsMaxBytesPerReadQuota Opened on behalf of @jiangzeng The test `System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests/ReadElementContentAsStringDataExceedsMaxBytesPerReadQuota` has failed. ``` System.ArgumentOutOfRangeException : Only Element nodes have attributes.\r Parameter name: index ``` Stack Trace: ``` at System.Xml.XmlBaseReader.GetAttributeNode(Int32 index) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlBaseReader.cs:line 525 at System.Xml.XmlBaseReader.MoveToAttribute(Int32 index) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlBaseReader.cs:line 809 at System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests.ReadElementContentAsStringDataExceedsMaxBytesPerReadQuota() in D:\A\_work\2\s\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryReaderTests.cs:line 86 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Serialization.Xml.Tests/analysis/xunit/System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests~2FReadElementContentAsStringDataExceedsMaxBytesPerReadQuota Same issue for the following tests: System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests/ReadElementContentAsStringDataExceedsMaxBytesPerReadQuota System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests/ReadValueChunkReadEncodedDoubleWideChars +10847 area-Serialization Test failure: XmlDictionaryWriterTest/XmlBaseWriter_CheckAsync_ThrowInvalidOperationException Opened on behalf of @jiangzeng The test `XmlDictionaryWriterTest/XmlBaseWriter_CheckAsync_ThrowInvalidOperationException` has failed. ``` System.NotImplementedException : The method or operation is not implemented. ``` Stack Trace: ``` at System.Xml.XmlWriter.WriteRawAsync(Char[] buffer, Int32 index, Int32 count) at System.Xml.XmlDictionaryAsyncCheckWriter.WriteRawAsync(Char[] buffer, Int32 index, Int32 count) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryAsyncCheckWriter.cs:line 333 at XmlDictionaryWriterTest.XmlBaseWriter_CheckAsync_ThrowInvalidOperationException() in D:\A\_work\2\s\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs:line 106 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Serialization.Xml.Tests/analysis/xunit/XmlDictionaryWriterTest~2FXmlBaseWriter_CheckAsync_ThrowInvalidOperationException Same issue for the tests: XmlDictionaryWriterTest/XmlBaseWriter_CheckAsync_ThrowInvalidOperationException XmlDictionaryWriterTest/XmlBaseWriter_WriteBase64Async XmlDictionaryWriterTest/XmlBaseWriter_WriteStartEndElementAsync +10848 area-Serialization Test failure: XmlDictionaryWriterTest/XmlBaseWriter_FlushAsync Opened on behalf of @jiangzeng The test `XmlDictionaryWriterTest/XmlBaseWriter_FlushAsync` has failed. ``` System.ArgumentNullException : Value cannot be null.\r Parameter name: buffer ``` Stack Trace: ``` at System.Xml.XmlBaseWriter.WriteBase64Async(Byte[] buffer, Int32 offset, Int32 count) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlBaseWriter.cs:line 1550 at System.Xml.XmlDictionaryAsyncCheckWriter.WriteBase64Async(Byte[] buffer, Int32 index, Int32 count) in D:\A\_work\2\s\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryAsyncCheckWriter.cs:line 123 at XmlDictionaryWriterTest.XmlBaseWriter_FlushAsync() in D:\A\_work\2\s\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs:line 57 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.02/workItem/System.Runtime.Serialization.Xml.Tests/analysis/xunit/XmlDictionaryWriterTest~2FXmlBaseWriter_FlushAsync +10849 area-System.Data "Tests under ""System.Data.SqlClient.Tests"" fail with ""System.IO.FileLoadException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests` has failed. ``` System.IO.FileLoadException : Could not load file or assembly 'System.Data.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ``` Stack Trace: ``` at System.Data.SqlClient.Tests.ExceptionTest.ExceptionTests() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.02/workItem/System.Data.SqlClient.Tests Failed tests: System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests System.Data.SqlClient.Tests.ExceptionTest/IndependentConnectionExceptionTestExecuteReader System.Data.SqlClient.Tests.ExceptionTest/IndependentConnectionExceptionTestOpenConnection System.Data.SqlClient.Tests.ExceptionTest/VariousExceptionTests System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Add_AddItems_ItemsAddedAsEpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Add_HelperOverloads_ItemsAddedAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Add_InvalidItems_ThrowsInvalidOperationException System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Contains_ItemsAdded_MatchesExpectation System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/CopyTo_InvalidArrayType_Throws System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/CopyTo_ItemsAdded_ItemsCopiedToArray System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/GetEnumerator_ItemsAdded_AllItemsReturnedAndEnumeratorBehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/GetEnumerator_ItemsAdded_ItemsFromEnumeratorMatchesItemsFromIndexer System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/GetEnumerator_ModifiedCollectionDuringEnumeration_ThrowsInvalidOperationException System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/GetEnumerator_NoItems_EmptyEnumerator System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/IListAddInsert_InsertNonSqlBulkCopyColumnMappingItems_DoNotThrow System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/IndexOf_BehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Indexer_BehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/InsertAndClear_BehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Insert_BehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Members_InvalidRange_ThrowsArgumentOutOfRangeException System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Methods_NullParameterPassed_ThrowsArgumentNullException System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Properties_ReturnFalse System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/RemoveAt_BehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/Remove_BehavesAsExpected System.Data.SqlClient.Tests.SqlBulkCopyColumnMappingCollectionTest/SyncRoot_NotNullAndSameObject System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Add_ExistingKey_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Add_NullKey_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Add_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Clear_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Contains_NullKey_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_CopyTo_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_CopyTo_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_ExpectedKeysInDictionary_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_GetEnumerator_ModifyCollection_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_GetEnumerator_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_IsFixedSize_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_IsReadOnly_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_IsSynchronized_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_CopyTo_ObjectArray_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_CopyTo_StringArray_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_CopyTo_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_GetEnumerator_ModifyCollection_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_GetEnumerator_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_IsSynchronized_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Keys_SyncRoot_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Remove_ExistingKey_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Remove_NonExistentKey_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Remove_NullKey_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Setter_ExistingKey_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Setter_NullKey_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Setter_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_SyncRoot_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_UnexpectedKeysNotInDictionary_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_CopyTo_Int64Array_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_CopyTo_ObjectArray_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_CopyTo_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_GetEnumerator_ModifyCollection_Throws System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_GetEnumerator_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_IsSynchronized_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_Success System.Data.SqlClient.Tests.SqlConnectionTest/RetrieveStatistics_Values_SyncRoot_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_NonGeneric_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_NonGeneric_Throws System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_Throws System.Data.SqlClient.Tests.SqlErrorCollectionTest/GetEnumerator_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/Indexer_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/Indexer_Throws System.Data.SqlClient.Tests.SqlErrorCollectionTest/IsSynchronized_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/SyncRoot_Success +10850 area-System.Data "Test failure: System.Data.SqlClient.Tests.SqlStringTest/CultureInfo_InvalidLcid_Throws fail with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.SqlStringTest/CultureInfo_InvalidLcid_Throws` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: typeof(System.TypeInitializationException): The type initializer for 'System.Data.Locale' threw an exception. ``` Stack Trace: ``` at System.Data.Locale.GetLocaleNameForLcid(Int32 lcid) at System.Data.SqlTypes.SqlString.get_CultureInfo() in D:\A\_work\2\s\src\System.Data.SqlClient\src\System\Data\SqlTypes\SQLString.cs:line 281 at System.Data.SqlClient.Tests.SqlStringTest.<>c.b__4_0() in D:\A\_work\2\s\src\System.Data.SqlClient\tests\FunctionalTests\SqlStringTest.cs:line 47 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.02/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.SqlStringTest~2FCultureInfo_InvalidLcid_Throws +10851 area-System.Data "Test failure: System.Data.SqlClient.Tests.SqlStringTest/Constructor_ValueLcid_Success fail with ""System.TypeInitializationException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.SqlStringTest/Constructor_ValueLcid_Success` has failed. ``` System.TypeInitializationException : The type initializer for 'System.Data.Locale' threw an exception.\r ---- System.IO.FileLoadException : Could not load file or assembly 'System.Text.Encoding.CodePages, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ``` Stack Trace: ``` at System.Data.Locale.GetLocaleNameForLcid(Int32 lcid) at System.Data.SqlTypes.SqlString.get_CultureInfo() in D:\A\_work\2\s\src\System.Data.SqlClient\src\System\Data\SqlTypes\SQLString.cs:line 281 at System.Data.SqlClient.Tests.SqlStringTest.ValidateProperties(String value, CultureInfo culture, SqlString sqlString) in D:\A\_work\2\s\src\System.Data.SqlClient\tests\FunctionalTests\SqlStringTest.cs:line 38 at System.Data.SqlClient.Tests.SqlStringTest.Constructor_ValueLcid_Success(Int32 lcid, String name) in D:\A\_work\2\s\src\System.Data.SqlClient\tests\FunctionalTests\SqlStringTest.cs:line 30 ----- Inner Stack Trace ----- at System.Data.Locale..cctor() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Data.SqlClient.Tests.SqlStringTest/Constructor_ValueLcid_Success System.Data.SqlClient.Tests.SqlStringTest/Constructor_Value_Success +10852 area-Serialization Three JSON serialization tests failing on Linux "``` DataContractJsonSerializerTests.DCJS_ArrayOfDateTime [FAIL] strings differ at index 12 ↓ [expected]:\/Date(946811045000-0800)\/"","" [actual ]:\/Date(946782245000+0000)\/"","" ↑ [Expected (with length=62)]: [""\/Date(946811045000-0800)\/"",""\/Date(1296734706000-0800)\/""] [Actual (with length=62)]: [""\/Date(946782245000+0000)\/"",""\/Date(1296705906000+0000)\/""] Test failed for input: System.DateTime[] Expected: [""\/Date(946811045000-0800)\/"",""\/Date(1296734706000-0800)\/""] Actual: [""\/Date(946782245000+0000)\/"",""\/Date(1296705906000+0000)\/""] Expected: True Actual: False Stack Trace: at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) at DataContractJsonSerializerTests.DCJS_ArrayOfDateTime() DataContractJsonSerializerTests.DCJS_TypeWithAllPrimitiveProperties [FAIL] strings differ at index 69 ↓ [expected]:Date(1467994211000-0700)\/"",""D [actual ]:Date(1467969011000+0000)\/"",""D ↑ [Expected (with length=262)]: {""BooleanMember"":true,""CharMember"":""C"",""DateTimeMember"":""\/Date(1467994211000-0700)\/"",""DecimalMember"":-14554481076115341312123,""DoubleMember"":123.456,""FloatMember"":456.789,""GuidMember"":""2054fd3e-e118-476a-9962-1a882be51860"",""IntMember"":123,""StringMember"":""abc""} [Actual (with length=262)]: {""BooleanMember"":true,""CharMember"":""C"",""DateTimeMember"":""\/Date(1467969011000+0000)\/"",""DecimalMember"":-14554481076115341312123,""DoubleMember"":123.456,""FloatMember"":456.789,""GuidMember"":""2054fd3e-e118-476a-9962-1a882be51860"",""IntMember"":123,""StringMember"":""abc""} Test failed for input: SerializationTypes.TypeWithAllPrimitiveProperties Expected: {""BooleanMember"":true,""CharMember"":""C"",""DateTimeMember"":""\/Date(1467994211000-0700)\/"",""DecimalMember"":-14554481076115341312123,""DoubleMember"":123.456,""FloatMember"":456.789,""GuidMember"":""2054fd3e-e118-476a-9962-1a882be51860"",""IntMember"":123,""StringMember"":""abc""} Actual: {""BooleanMember"":true,""CharMember"":""C"",""DateTimeMember"":""\/Date(1467969011000+0000)\/"",""DecimalMember"":-14554481076115341312123,""DoubleMember"":123.456,""FloatMember"":456.789,""GuidMember"":""2054fd3e-e118-476a-9962-1a882be51860"",""IntMember"":123,""StringMember"":""abc""} Expected: True Actual: False Stack Trace: at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) at DataContractJsonSerializerTests.DCJS_TypeWithAllPrimitiveProperties() DataContractSerializerTests.DCS_ArrayOfDateTime [FAIL] XML comparison is also failing Test failed for input: System.DateTime[] Expected: 2000-01-02T03:04:05-08:002011-02-03T04:05:06-08:00 Actual: 2000-01-02T03:04:05Z2011-02-03T04:05:06Z Expected: True Actual: False Stack Trace: at DataContractSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) at DataContractSerializerTests.DCS_ArrayOfDateTime() ``` " +10854 area-System.Collections Queue.Enumerator still uses the modulo operator during MoveNext Queue.Enqueue/Dequeue were changed a while ago not to use `div` since it's pretty slow (takes many cycles): #2515 We should do the same for [this method](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/Queue.cs#L290) which is currently still using modulo. +10856 area-Infrastructure Use same compiler in all corefx builds "In corefx, on windows, the default is still too use the shared compiler, you have to opt into using this Roslyn compiler via ""UseSharedCompilation=false"". On Linux, the default is to use this Rosslyn compiler. All corefx builds should be using the same compiler so that available features across builds are identical. https://github.com/dotnet/buildtools/pull/947 " +10858 area-System.Net Interop+OpenSsl+SslException: SSL Read BIO failed with OpenSSL error "I have an ASP.Net Core app running on OSX using Kestrel and HTTPS. ``` private void MyListener(CancellationToken token) { var certificate = new X509Certificate2(Path.Combine(Path.GetDirectoryName(typeof(MyClass).GetTypeInfo().Assembly.Location),""cert.pfx""),""""); var urlPrefix = ""https://*:""; var url = urlPrefix + this.ListenerPort + ""/""; var host = new WebHostBuilder() .UseKestrel(options => { options.UseHttps(certificate); options.NoDelay = true; options.UseConnectionLogging(); }) .UseUrls(url) .UseStartup() .Build(); host.Run(token); } ``` The server starts fine but when a request is processed I get an exception logged. ``` warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.IO.IOException: The encryption operation failed, see inner exception. ---> Interop+OpenSsl+SslException: SSL Read BIO failed with OpenSSL error - . at Interop.OpenSsl.BioRead(SafeBioHandle bio, Byte[] buffer, Int32 count) at Interop.OpenSsl.Encrypt(SafeSslHandle context, Byte[] input, Int32 offset, Int32 count, Byte[]& output, SslErrorCode& errorCode) at System.Net.SslStreamPal.EncryptDecryptHelper(SafeDeleteContext securityContext, Byte[] input, Int32 offset, Int32 size, Boolean encrypt, Byte[]& output, Int32& resultSize) --- End of inner exception stack trace --- at System.Net.Security.SslStreamInternal.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStreamInternal.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStreamInternal.BeginWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.<>c.b__86_0(Byte[] bufferArg, Int32 offsetArg, Int32 sizeArg, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) at System.Net.Security.SslStream.WriteAsync(Byte[] buffer, Int32 offset, Int32 size, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Filter.Internal.LoggingStream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Filter.Internal.StreamSocketOutput.WriteAsync(ArraySegment`1 buffer, Boolean chunk, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.d__153.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() ``` This is also an issue on Linux I believe after finding an issue on SO http://stackoverflow.com/questions/38960081/asp-net-core-linux-ssl-ssl-read-bio-failed-with-openssl-error " +10859 area-System.Data Implement DbProviderFactories DbProviderFactories is not currently implemented in the CoreFx but was in the full framework since version 2.0. Doc : https://msdn.microsoft.com/fr-fr/library/system.data.common.dbproviderfactories(v=vs.110).aspx Source code : http://referencesource.microsoft.com/#System.Data/System/Data/Common/DbProviderFactories.cs Any advise on porting the code? +10860 area-System.Reflection System.Reflection.Emit incorrectly lists NETCore50 as supported This problem has existed since the first release of the package. You could never actually use this package on netcore50 because it depended on System.Reflection.Emit.ILGeneration which correctly **did not** support netcore50. I need to add some additional knobs on package harvesting to clean this up. +10867 area-Infrastructure Enable per-commit arm64 build and test runs @gkhanna79 @Priya91 +10872 area-Infrastructure Wrong calculated values for FilterOSGroup with run.exe When calling `build-packages.cmd/sh` the values calculated for the property `FilterToOSGroup` are: - Windows: `FilterToOSGroup=win7` and it should be `FilterToOSGroup=Windows_NT` - Mac: `FilterToOSGroup=osx.10.10` and it should be `FilterToOSGroup=osx.10` +10873 area-System.IO Test failure: System.IO.Tests.File_Delete_Tests/FileSystemWatcher_File_Delete_DeepDirectoryStructure Opened on behalf of @jiangzeng The test `System.IO.Tests.File_Delete_Tests/FileSystemWatcher_File_Delete_DeepDirectoryStructure` has failed. ``` System.IO.DirectoryNotFoundException : Could not find a part of the path '/tmp/File_Delete_Tests_qzhewplr.ib5/FileSystemWatcher_File_Delete_DeepDirectoryStructure_78/dir/dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dir10/dir11/dir12/dir13/dir14/dir15/dir16/dir17/dir18/dir19/file'. ``` Stack Trace: ``` at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.Tests.File_Delete_Tests.<>c__DisplayClass3_0.b__1() at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(FileSystemWatcher watcher, WatcherChangeTypes expectedEvents, Action action, Action cleanup, String[] expectedPaths, Int32 attempts) at System.IO.Tests.File_Delete_Tests.FileSystemWatcher_File_Delete_DeepDirectoryStructure() ``` Failing configurations: - OSX.1011.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160816.08/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.File_Delete_Tests~2FFileSystemWatcher_File_Delete_DeepDirectoryStructure +10875 area-System.IO Test failure: System.IO.Packaging.Tests.Tests/T018_GetMainDocPartAndStyleDefPart Opened on behalf of @jiangzeng The test `System.IO.Packaging.Tests.Tests/T018_GetMainDocPartAndStyleDefPart` has failed. ``` System.MissingMethodException : Method not found: 'System.Xml.Linq.XDocument System.Xml.Linq.XDocument.Load(System.Xml.XmlReader)'. ``` Stack Trace: ``` at System.IO.Packaging.Tests.Tests.T018_GetMainDocPartAndStyleDefPart() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.IO.Packaging.Tests/analysis/xunit/System.IO.Packaging.Tests.Tests~2FT018_GetMainDocPartAndStyleDefPart Same issue for the test: System.IO.Packaging.Tests.Tests/T019_GetPartFromRelativeUri +10877 area-System.Collections Test failure: System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests/IDictionary_NonGeneric_ItemSet_KeyOfWrongType Opened on behalf of @jiangzeng The test `System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests/IDictionary_NonGeneric_ItemSet_KeyOfWrongType` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: key ``` Stack Trace: ``` at System.Collections.Generic.SortedList`2.System.Collections.IDictionary.set_Item(Object key, Object value) at System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests.<>c__DisplayClass6_0.b__0() in D:\A\_work\2\s\src\System.Collections\tests\Generic\SortedList\SortedList.Tests.cs:line 51 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Tests.SortedList_IDictionary_NonGeneric_Tests~2FIDictionary_NonGeneric_ItemSet_KeyOfWrongType +10878 area-System.Security Test failure: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/Rc4AndCngWrappersDontMixTest Opened on behalf of @jiangzeng The test `System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/Rc4AndCngWrappersDontMixTest` has failed. ``` Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The request is not supported ``` Stack Trace: ``` at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.Rc4AndCngWrappersDontMixTest() in D:\A\_work\2\s\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 158 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Security.Cryptography.Pkcs.Tests/analysis/xunit/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests~2FRc4AndCngWrappersDontMixTest +10879 area-System.Security Test failure: System.Security.Cryptography.X509Certificates.Tests.PfxTests/ReadECDsaPrivateKey_BrainpoolP160r1_Pfx Opened on behalf of @jiangzeng The test `System.Security.Cryptography.X509Certificates.Tests.PfxTests/ReadECDsaPrivateKey_BrainpoolP160r1_Pfx` has failed. ``` System.NullReferenceException : Object reference not set to an instance of an object. ``` Stack Trace: ``` at System.Security.Cryptography.X509Certificates.Tests.PfxTests.AssertEccAlgorithm(ECDsa ecdsa, String algorithmId) in D:\A\_work\2\s\src\System.Security.Cryptography.X509Certificates\tests\PfxTests.cs:line 196 at System.Security.Cryptography.X509Certificates.Tests.PfxTests.ReadECDsaPrivateKey_BrainpoolP160r1_Pfx(Byte[] pfxData) in D:\A\_work\2\s\src\System.Security.Cryptography.X509Certificates\tests\PfxTests.cs:line 148 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.PfxTests~2FReadECDsaPrivateKey_BrainpoolP160r1_Pfx +10880 area-System.Diagnostics "Tests under ""System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests"" fail with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceData_ObjectArray_Test` has failed. ``` Assert.Equal() Failure\r ? (pos 32)\r Expected: ···;Verbose;12;;;73032;""9"";""2016-08-17T00:26:12.8975461Z"";264819···\r Actual: ···;Verbose;12;;;73032;;""9"";""2016-08-17T00:26:12.8975461Z"";26481···\r ? (pos 32) ``` Stack Trace: ``` at System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests.TraceData_ObjectArray_Test(String delimiter, TraceFilter filter, TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, Object[] data) in D:\A\_work\4\s\src\System.Diagnostics.TextWriterTraceListener\tests\DelimiterWriteMethodTests.cs:line 147 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Diagnostics.TextWriterTraceListener.Tests Failed tests: System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceData_ObjectArray_Test System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceData_Object_Test System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceEvent_FormatString_Test System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceEvent_String_Test " +10881 area-System.Security "Tests fail with ""System.PlatformNotSupportedException : Operation is not supported on this platform""" Opened on behalf of @jiangzeng The test `System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestECDsa224PublicKey` has failed. ``` System.PlatformNotSupportedException : Operation is not supported on this platform. ``` Stack Trace: ``` at Internal.Cryptography.Pal.X509Pal.ImportPublicKeyInfo(SafeCertContextHandle certContext) at Internal.Cryptography.Pal.X509Pal.DecodeECDsaPublicKey(CertificatePal certificatePal) at Internal.Cryptography.Pal.X509Pal.DecodePublicKey(Oid oid, Byte[] encodedKeyValue, Byte[] encodedParameters, ICertificatePal certificatePal) at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) at System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestECDsa224PublicKey() in D:\A\_work\2\s\src\System.Security.Cryptography.X509Certificates\tests\PublicKeyTests.cs:line 315 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests~2FTestECDsa224PublicKey Same issue for the following tests: System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestECDsa224PublicKey System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestECDsaPublicKey System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestECDsaPublicKey_BrainpoolP160r1_ValidatesSignature System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestECDsaPublicKey_ValidatesSignature System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestKey_ECDsaCng256 System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestKey_ECDsaCng384 System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestKey_ECDsaCng521 System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests/TestKey_ECDsabrainpool_PublicKey +10883 area-System.Security Test failure: WindowsIdentityTests/CloneAndProperties Opened on behalf of @jiangzeng The test `WindowsIdentityTests/CloneAndProperties` has failed. ``` System.UnauthorizedAccessException : Attempted to perform an unauthorized operation. ``` Stack Trace: ``` at System.Security.Principal.WindowsIdentity.get_AuthenticationType() at System.Security.Claims.ClaimsIdentity..ctor(IIdentity identity, IEnumerable`1 claims, String authenticationType, String nameType, String roleType) at System.Security.Principal.WindowsIdentity..ctor(WindowsIdentity identity) at System.Security.Principal.WindowsIdentity.Clone() at WindowsIdentityTests.CloneAndProperties() in D:\A\_work\2\s\src\System.Security.Principal.Windows\tests\WindowsIdentityTests.cs:line 45 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Security.Principal.Windows.Tests/analysis/xunit/WindowsIdentityTests~2FCloneAndProperties +10884 area-System.Security Test failure: WindowsIdentityTests/ConstructorsAndProperties Opened on behalf of @jiangzeng The test `WindowsIdentityTests/ConstructorsAndProperties` has failed. ``` Assert.True() Failure\r Expected: True\r Actual: False ``` Stack Trace: ``` at WindowsIdentityTests.ConstructorsAndProperties() in D:\A\_work\2\s\src\System.Security.Principal.Windows\tests\WindowsIdentityTests.cs:line 36 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Security.Principal.Windows.Tests/analysis/xunit/WindowsIdentityTests~2FConstructorsAndProperties +10885 area-System.Globalization "Tests under ""System.Globalization.Tests"" fail with ""System.AggregateException""" Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.CultureInfoAsync/TestCurrentCulturesAsync` has failed. ``` System.AggregateException : One or more errors occurred.\r ---- Assert.Equal() Failure\r Expected: en-US\r Actual: ja-JP ``` Stack Trace: ``` at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Globalization.Tests.CultureInfoAsync.TestCurrentCulturesAsync() in D:\A\_work\4\s\src\System.Globalization\tests\CultureInfo\CultureInfoAsync.cs:line 32 ----- Inner Stack Trace ----- at System.Globalization.Tests.CultureInfoAsync.<>c__DisplayClass0_0.b__0() in D:\A\_work\4\s\src\System.Globalization\tests\CultureInfo\CultureInfoAsync.cs:line 27 at System.Threading.Tasks.Task.Execute() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Globalization.Tests Failed Tests: System.Globalization.Tests.CultureInfoAsync/TestCurrentCulturesAsync System.Globalization.Tests.CultureInfoAsync/TestCurrentCulturesWithAwait +10886 area-System.Text Test failure: System.Text.Tests.EncodingTest/TestDefaultEncodings Opened on behalf of @jiangzeng The test `System.Text.Tests.EncodingTest/TestDefaultEncodings` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: (No exception was thrown) ``` Stack Trace: ``` at System.Text.Tests.EncodingTest.TestDefaultEncodings() in D:\A\_work\2\s\src\System.Text.Encoding.CodePages\tests\EncodingCodePages.cs:line 464 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Text.Encoding.CodePages.Tests/analysis/xunit/System.Text.Tests.EncodingTest~2FTestDefaultEncodings +10887 area-System.IO "Tests under ""System.IO.Compression.Tests"" fail with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.DeflateStreamTests/FlushBeforeFirstWrites` has failed. ``` Assert.Equal() Failure\r Expected: Byte[] [62, 23, 186, 150, 174]\r Actual: Byte[] [] ``` Stack Trace: ``` at System.IO.Compression.Tests.DeflateStreamTests.d__48.MoveNext() in D:\A\_work\4\s\src\System.IO.Compression\tests\DeflateStreamTests.cs:line 822 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.Compression.Tests.DeflateStreamTests.d__47.MoveNext() in D:\A\_work\4\s\src\System.IO.Compression\tests\DeflateStreamTests.cs:line 805 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.IO.Compression.Tests Failed Tests: System.IO.Compression.Tests.DeflateStreamTests/FlushBeforeFirstWrites System.IO.Compression.Tests.DeflateStreamTests/RoundTripWithFlush +10888 area-System.IO Test failure: System.IO.Compression.Tests.DeflateStreamTests/WrapNullReturningTasksStream Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.DeflateStreamTests/WrapNullReturningTasksStream` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) ``` Stack Trace: ``` --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.Compression.Tests.DeflateStreamTests.d__51.MoveNext() in D:\A\_work\4\s\src\System.IO.Compression\tests\DeflateStreamTests.cs:line 884 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.IO.Compression.Tests +10889 area-System.IO Test failure: System.IO.Compression.Tests.DeflateStreamTests/WrapStreamReturningBadReadValues Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.DeflateStreamTests/WrapStreamReturningBadReadValues` has failed. ``` System.IO.InvalidDataException : Block length does not match with its complement. ``` Stack Trace: ``` at System.IO.Compression.Inflater.DecodeUncompressedBlock(Boolean& end_of_block) at System.IO.Compression.Inflater.Decode() at System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length) at System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count) at System.IO.Compression.Tests.DeflateStreamTests.d__52.MoveNext() in D:\A\_work\4\s\src\System.IO.Compression\tests\DeflateStreamTests.cs:line 896 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.DeflateStreamTests~2FWrapStreamReturningBadReadValues +10890 area-System.IO "Tests under ""System.IO.Compression.Tests.DeflateStreamTests"" fail with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.DeflateStreamTests/OverlappingFlushAsync_DuringFlushAsync` has failed. ``` Assert.True() Failure\r Expected: True\r Actual: False ``` Stack Trace: ``` at System.IO.Compression.Tests.DeflateStreamTests.d__2.MoveNext() in D:\A\_work\4\s\src\System.IO.Compression\tests\DeflateStreamTests.cs:line 64 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.IO.Compression.Tests Failed tests: System.IO.Compression.Tests.DeflateStreamTests/OverlappingFlushAsync_DuringFlushAsync System.IO.Compression.Tests.DeflateStreamTests/OverlappingFlushAsync_DuringReadAsync System.IO.Compression.Tests.DeflateStreamTests/OverlappingFlushAsync_DuringWriteAsync System.IO.Compression.Tests.DeflateStreamTests/OverlappingReadAsync System.IO.Compression.Tests.DeflateStreamTests/OverlappingWriteAsync System.IO.Compression.Tests.DeflateStreamTests/Precancellation +10891 area-System.Threading "Tests under ""ThreadPoolBoundHandleTests"" fail with ""System.ArgumentException : 'handle' has been disposed or is an invalid handle""" Opened on behalf of @jiangzeng The test `ThreadPoolBoundHandleTests/AllocateNativeOverlapped_BlittableTypeAsPinData_DoesNotThrow` has failed. ``` System.ArgumentException : 'handle' has been disposed or is an invalid handle.\r Parameter name: handle ``` Stack Trace: ``` at System.Threading.ThreadPoolBoundHandle.BindHandle(SafeHandle handle) at ThreadPoolBoundHandleTests.AllocateNativeOverlapped_BlittableTypeAsPinData_DoesNotThrow() in D:\A\_work\2\s\src\System.Threading.Overlapped\tests\ThreadPoolBoundHandle_AllocateNativeOverlappedTests.cs:line 87 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Threading.Overlapped.Tests Same issue for the following tests: ThreadPoolBoundHandleTests/AllocateNativeOverlapped_BlittableTypeAsPinData_DoesNotThrow ThreadPoolBoundHandleTests/AllocateNativeOverlapped_EmptyArrayAsPinData_DoesNotThrow ThreadPoolBoundHandleTests/AllocateNativeOverlapped_NonBlittableTypeAsPinData_Throws ThreadPoolBoundHandleTests/AllocateNativeOverlapped_NullAsCallback_ThrowsArgumentNullException ThreadPoolBoundHandleTests/AllocateNativeOverlapped_NullAsContext_DoesNotThrow ThreadPoolBoundHandleTests/AllocateNativeOverlapped_NullAsPinData_DoesNotThrow ThreadPoolBoundHandleTests/AllocateNativeOverlapped_ObjectArrayAsPinData_DoesNotThrow ThreadPoolBoundHandleTests/AllocateNativeOverlapped_ObjectArrayWithNonBlittableTypeAsPinData_Throws ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PossibleReusedReturnedNativeOverlapped_OffsetLowAndOffsetHighSetToZero ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PreAllocated_ReturnedNativeOverlapped_AllFieldsZero ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PreAllocated_ReusedReturnedNativeOverlapped_OffsetLowAndOffsetHighSetToZero ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PreAllocated_ThrowsArgumentNullException ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PreAllocated_WhenAlreadyAllocated_ThrowsArgumentException ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PreAllocated_WhenDisposed_ThrowsObjectDisposedException ThreadPoolBoundHandleTests/AllocateNativeOverlapped_PreAllocated_WhenHandleDisposed_ThrowsObjectDisposedException ThreadPoolBoundHandleTests/AllocateNativeOverlapped_ReturnedNativeOverlapped_AllFieldsZero ThreadPoolBoundHandleTests/AllocateNativeOverlapped_WhenDisposed_ThrowsObjectDisposedException ThreadPoolBoundHandleTests/BindHandle_AlreadyBoundHandleAsHandle_ThrowsArgumentException ThreadPoolBoundHandleTests/Dispose_CalledMultipleTimes_DoesNotThrow ThreadPoolBoundHandleTests/Dispose_DoesNotDisposeHandle ThreadPoolBoundHandleTests/Dispose_WithoutFreeingNativeOverlapped_DoesNotThrow ThreadPoolBoundHandleTests/FlowsAsyncLocalsToCallback ThreadPoolBoundHandleTests/FreeNativeOverlapped_NullAsNativeOverlapped_ThrowsArgumentNullException ThreadPoolBoundHandleTests/FreeNativeOverlapped_WhenDisposed_DoesNotThrow ThreadPoolBoundHandleTests/FreeNativeOverlapped_WithWrongHandle_ThrowsArgumentException ThreadPoolBoundHandleTests/GetNativeOverlappedState_WhenUnderlyingStateIsIAsyncResult_ReturnsIAsyncResult ThreadPoolBoundHandleTests/GetNativeOverlappedState_WhenUnderlyingStateIsNull_ReturnsNull ThreadPoolBoundHandleTests/GetNativeOverlappedState_WhenUnderlyingStateIsObject_ReturnsObject ThreadPoolBoundHandleTests/Handle_AfterDisposed_DoesNotThrow Handle_ReturnsHandle ThreadPoolBoundHandleTests/MultipleOperationsOverMultipleHandles ThreadPoolBoundHandleTests/MultipleOperationsOverSingleHandle ThreadPoolBoundHandleTests/SingleOperationOverSingleHandle +10892 area-System.Xml Test failure: System.Xml.Linq.Tests.XAttributeAxesWithXName/InvalidXNameTest Opened on behalf of @jiangzeng The test `System.Xml.Linq.Tests.XAttributeAxesWithXName/InvalidXNameTest` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.Xml.XmlException): Name cannot begin with the '*' character, hexadecimal value 0x2A. ``` Stack Trace: ``` at System.Xml.XmlConvert.VerifyNCName(String name, ExceptionType exceptionType) at System.Xml.Linq.XName..ctor(XNamespace ns, String localName) at System.Xml.Linq.XNamespace.GetName(String localName) at System.Xml.Linq.Tests.XAttributeAxesWithXName.<>c.b__2_0() in D:\A\_work\2\s\src\System.Xml.XDocument\tests\axes\InvalidParamValidation.cs:line 53 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XDocument.Axes.Tests/analysis/xunit/System.Xml.Linq.Tests.XAttributeAxesWithXName~2FInvalidXNameTest +10893 area-System.IO Test failure: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileDoesNotExist Opened on behalf of @Jiayili1 The test `System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileDoesNotExist` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.IO.FileNotFoundException)\r Actual: typeof(System.ArgumentException): Combining FileMode: Truncate with FileSystemRights: ReadData, CreateFiles is invalid. FileMode.Truncate is valid only when used with FileSystemRights.Write. ``` Stack Trace: ``` at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileSystemRights rights, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.<>c__DisplayClass18_0.b__1() in D:\A\_work\4\s\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 552 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10894 area-System.IO Test failure: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileInUse_CreateFromFile_SucceedsWithReadOnly Opened on behalf of @Jiayili1 The test `System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileInUse_CreateFromFile_SucceedsWithReadOnly` has failed. ``` System.IO.IOException : The process cannot access the file 'C:\Users\DotNetTestRunner\AppData\Local\Temp\MemoryMappedFileTests_CreateFromFile_sjo1vehh.5sv\FileInUse_CreateFromFile_SucceedsWithReadOnly_626' because it is being used by another process. ``` Stack Trace: ``` at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileSystemRights rights, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileInUse_CreateFromFile_SucceedsWithReadOnly() in D:\A\_work\4\s\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 626 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10895 area-System.IO Test failure: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileNotOpenedForExecute Few dupes: - Test failure: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileNotOpenedForExecute - Test failure: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileInUse_CreateFromFile_SucceedsWithReadOnly - Test failure: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileDoesNotExist Opened on behalf of @Jiayili1 The test `System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile/FileNotOpenedForExecute` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.UnauthorizedAccessException)\r Actual: (No exception was thrown) ``` Stack Trace: ``` at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileNotOpenedForExecute(MemoryMappedFileAccess access) in D:\A\_work\4\s\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 648 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Failed tests: FileNotOpenedForExecute WriteToReadOnlyFile +10896 area-System.Xml "Tests fail with ""System.MissingMethodException : Method not found: 'System.Xml.XmlNodeType System.Xml.Linq.XObject.get_NodeType()'.""" Opened on behalf of @jiangzeng The test `CoreXml.Test.XLinq.FunctionalTests.EventsTests.EvensReplaceAttributes/ExecuteXAttributeVariation` has failed. ``` System.MissingMethodException : Method not found: 'System.Xml.XmlNodeType System.Xml.Linq.XObject.get_NodeType()'. ``` Stack Trace: ``` at CoreXml.Test.XLinq.UndoManager.Changing(Object sender, XObjectChangeEventArgs e) at System.EventHandler`1.Invoke(Object sender, TEventArgs e) at System.Xml.Linq.XObject.NotifyChanging(Object sender, XObjectChangeEventArgs e) at System.Xml.Linq.XElement.RemoveAttributes() at System.Xml.Linq.XElement.ReplaceAttributes(Object content) at CoreXml.Test.XLinq.FunctionalTests.EventsTests.EvensReplaceAttributes.ExecuteXAttributeVariation(XAttribute[] content) in D:\A\_work\2\s\src\System.Xml.XDocument\tests\events\EventsReplace.cs:line 201 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XDocument.Events.Tests +10897 area-System.IO "Test failure: System.IO.Packaging.Tests.Tests/T018_GetMainDocPartAndStyleDefPart with ""Xunit.Sdk.NotNullException""" Opened on behalf of @Jiayili1 The test `System.IO.Packaging.Tests.Tests/T018_GetMainDocPartAndStyleDefPart` has failed. ``` Assert.NotNull() Failure ``` Stack Trace: ``` at System.IO.Packaging.Tests.Tests.T018_GetMainDocPartAndStyleDefPart() in D:\A\_work\4\s\src\System.IO.Packaging\tests\Tests.cs:line 1787 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.IO.Packaging.Tests Failed tests: System.IO.Packaging.Tests.Tests/T018_GetMainDocPartAndStyleDefPart System.IO.Packaging.Tests.Tests/T019_GetPartFromRelativeUri System.IO.Packaging.Tests.Tests/T020_GetNonExistentPart +10898 area-System.IO Test failure: System.IO.Packaging.Tests.Tests/T151_InvalidDocProps Opened on behalf of @Jiayili1 The test `System.IO.Packaging.Tests.Tests/T151_InvalidDocProps` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.IO.FileFormatException)\r Actual: (No exception was thrown) ``` Stack Trace: ``` at System.IO.Packaging.Tests.Tests.T151_InvalidDocProps() in D:\A\_work\4\s\src\System.IO.Packaging\tests\Tests.cs:line 588 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.IO.Packaging.Tests Failed tests: System.IO.Packaging.Tests.Tests/T151_InvalidDocProps System.IO.Packaging.Tests.Tests/T152_InvalidDocProps System.IO.Packaging.Tests.Tests/T155_BadDateTimeDocProps +10899 area-System.IO "Test failure: System.IO.Pipes.Tests.NamedPipeTest_AclExtensions/GetAccessControl_NamedPipeClientStream_Broken with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.NamedPipeTest_AclExtensions/GetAccessControl_NamedPipeClientStream_Broken` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: typeof(System.IO.IOException): Pipe is broken. ``` Stack Trace: ``` at System.IO.Pipes.NamedPipeClientStream.CheckPipePropertyOperations() at System.IO.Pipes.PipeStream.SetAccessControl(PipeSecurity pipeSecurity) at System.IO.Pipes.Tests.NamedPipeTest_AclExtensions.<>c__DisplayClass2_0.b__1() in D:\A\_work\4\s\src\System.IO.Pipes.AccessControl\tests\NamedPipeTests\NamedPipeTest.AclExtensions.cs:line 64 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10900 area-System.Xml Test failure: XDocumentTests.SDMSample.SDM_Element/ElementWithXmlnsAttribute Opened on behalf of @jiangzeng The test `XDocumentTests.SDMSample.SDM_Element/ElementWithXmlnsAttribute` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.Xml.XmlException): The prefix '' cannot be redefined from '' to 'http://tempuri/test' within the same start element tag. ``` Stack Trace: ``` at System.Xml.XmlWellFormedWriter.PushNamespaceExplicit(String prefix, String ns) at System.Xml.XmlWellFormedWriter.WriteEndAttribute() at System.Xml.Linq.ElementWriter.WriteStartElement(XElement e) at System.Xml.Linq.ElementWriter.WriteElement(XElement e) at System.Xml.Linq.XElement.WriteTo(XmlWriter writer) at System.Xml.Linq.XNode.GetXmlString(SaveOptions o) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XDocument.SDMSample.Tests/analysis/xunit/XDocumentTests.SDMSample.SDM_Element~2FElementWithXmlnsAttribute +10901 area-System.Net Test failure: System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/NoCallback_ValidCertificate_CallbackNotCalled with System.IO.FileLoadException : Could not load file or assembly 'System.Diagnostics.DiagnosticSource' Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/NoCallback_ValidCertificate_CallbackNotCalled` has failed. ``` System.IO.FileLoadException : Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ``` Stack Trace: ``` at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest.d__3.MoveNext() in D:\A\_work\4\s\src\System.Net.Http.WinHttpHandler\tests\FunctionalTests\ServerCertificateTest.cs:line 37 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10902 area-System.Net "Test failure: System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_CallbackReturnsFailure_ThrowsInnerSecurityFailureException with ""System.MissingMethodException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_CallbackReturnsFailure_ThrowsInnerSecurityFailureException` has failed. ``` System.MissingMethodException : Method not found: 'Void System.Net.Http.WinHttpHandler.set_ServerCertificateValidationCallback(System.Func`5)'. ``` Stack Trace: ``` at System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest.d__7.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest.UseCallback_CallbackReturnsFailure_ThrowsInnerSecurityFailureException() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Net.Http.WinHttpHandler.Functional.Tests Failed tests: System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_CallbackReturnsFailure_ThrowsInnerSecurityFailureException System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_CallbackThrowsSpecificException_ThrowsInnerSpecificException System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_NotSecureConnection_CallbackNotCalled System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_RedirectandValidCertificate_ExpectedValuesDuringCallback System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_ValidCertificate_ExpectedValuesDuringCallback +10903 area-System.Xml "Tests under ""XLinqTests.TreeManipulationTests"" fail with Assert fail exception ""Xunit.Sdk.EqualException""" "Opened on behalf of @jiangzeng The test `XLinqTests.TreeManipulationTests/AddFirstAddFirstIntoDocument` has failed. ``` Assert.Equal() Failure\r Expected: 0\r Actual: 16 ``` Stack Trace: ``` at XLinqTests.TreeManipulationTests.RunTestCase(TestItem testCase) in D:\A\_work\2\s\src\System.Xml.XDocument\tests\TreeManipulation\TreeManipulationTests.cs:line 434 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XDocument.TreeManipulation.Tests Same issue for the following tests under ""XLinqTests.TreeManipulationTests"": AddFirstAddFirstIntoDocument AddFirstAddFirstIntoDocumentWithEvents ConstructorXDocument ConstructorXElementArray ConstructorXElementIEnumerable ConstructorXElementNodeArray IEnumerableOfXAttributeRemove IEnumerableOfXAttributeRemoveWithRemove IEnumerableOfXNodeRemove IEnumerableOfXNodeRemoveWithEvents LoadFromReader LoadFromStreamSanity SaveWithWriter SimpleConstructors XAttributeRemove XAttributeRemoveWithEvents XContainerAddIntoDocument XContainerAddIntoDocumentWithEvents XContainerNextPreviousNode XContainerReplaceNodesOnXElement XContainerReplaceNodesOnXElementWithEvents XElementSetAttributeValue XElementSetAttributeValueWithEvents XElementSetElementValue XElementSetElementValueWithEvents XNodeRemoveNodeMisc XNodeRemoveNodeMiscWithEvents XNodeRemoveOnDocument XNodeRemoveOnDocumentWithEvents XNodeRemoveOnElement XNodeRemoveOnElementWithEvents " +10904 area-System.Xml Test failure: XLinqTests.XObjectTests+SkipNotifyTests/NoXObjectChangeAnnotation Opened on behalf of @jiangzeng The test `XLinqTests.XObjectTests+SkipNotifyTests/NoXObjectChangeAnnotation` has failed. ``` System.TypeLoadException : Method 'get_NodeType' in type 'FakeXObject' from assembly 'System.Xml.XDocument.TreeManipulation.Tests, Version=999.999.999.999, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb' does not have an implementation. ``` Stack Trace: ``` at XLinqTests.XObjectTests.SkipNotifyTests.NoXObjectChangeAnnotation() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XDocument.TreeManipulation.Tests/analysis/xunit/XLinqTests.XObjectTests+SkipNotifyTests~2FNoXObjectChangeAnnotation Same issue for the test: XLinqTests.XObjectTests+SkipNotifyTests/XObjectChangeAnnotation +10905 area-System.Net "Test failure: System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest/SslProtocols_SetUsingSupported_Success with ""System.NotSupportedException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest/SslProtocols_SetUsingSupported_Success` has failed. ``` System.NotSupportedException : The requested security protocol is not supported. ``` Stack Trace: ``` at System.Net.SecurityProtocol.ThrowOnNotAllowed(SslProtocols protocols, Boolean allowNone) in D:\A\_work\4\s\src\Common\src\System\Net\SecurityProtocol.cs:line 22 at System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest.SslProtocols_SetUsingSupported_Success(SslProtocols protocol) in D:\A\_work\4\s\src\System.Net.Http.WinHttpHandler\tests\UnitTests\WinHttpHandlerTest.cs:line 449 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Net.Http.WinHttpHandler.Unit.Tests/analysis/xunit/System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest~2FSslProtocols_SetUsingSupported_Success +10906 area-System.Xml Test failure: CoreXml.Test.XLinq.FunctionalTests/RunTests Opened on behalf of @jiangzeng The test `CoreXml.Test.XLinq.FunctionalTests/RunTests` has failed. ``` Assert.Equal() Failure\r Expected: 0\r Actual: 633 ``` Stack Trace: ``` at CoreXml.Test.XLinq.FunctionalTests.RunTests() in D:\A\_work\2\s\src\System.Xml.XDocument\tests\xNodeBuilder\FunctionalTests.cs:line 34 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XDocument.xNodeBuilder.Tests/analysis/xunit/CoreXml.Test.XLinq.FunctionalTests~2FRunTests +10908 area-System.Runtime Add Enum method to remove not defined flags. Suppose I have an enum type defined by `FlagsAttribute`and has an enum value that is outside the limit of the enum type. I would then have a way to easily remove the flags that are not defined. This can be useful if I eg get an enum value from an external API, and all the flags are not defined in the internal enum type. I would then want clear the unsupported flags. Alternative solution proposals: **Alternative 1** ``` C# [ComVisibleAttribute(true)] public static object ToObject( Type, int, bool=false ) ``` If you set the the new boolena value to `true`, unknown flags is removed. This should only be valid for enum types that are defined with `FlagsAttribute`, or else the function throw a exception. (By the way, why are not `ToObject`generic to avoid having to cast like #692 ?) **Alternative 2** ``` C# public int BitMask { get; } ``` It returns a bit mask that can be used like this: `var cleanedEnumValue = myEnumValue & myEnumValue.BitMask;` **Alternative 3** ``` C# public object RemoveUndefinedFlags { get; } ``` It returns a enum where the undefined flags have been masked away. Or if the enum is not defined with `FlagsAttribute`, it throw a exception. +10909 area-System.Net "Test failure: System.Net.Security.Tests.ClientAsyncAuthenticateTest/ClientAsyncAuthenticate_EachClientUnsupportedProtocol_Fail with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.ClientAsyncAuthenticateTest/ClientAsyncAuthenticate_EachClientUnsupportedProtocol_Fail` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: typeof(System.IO.IOException): Authentication failed because the remote party has closed the transport stream. ``` Stack Trace: ``` at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in D:\A\_work\4\s\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs:line 19 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__14.MoveNext() in D:\A\_work\4\s\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs:line 142 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ClientAsyncAuthenticateTest~2FClientAsyncAuthenticate_EachClientUnsupportedProtocol_Fail Failed tests: ClientAsyncAuthenticate_EachClientUnsupportedProtocol_Fail ClientAsyncAuthenticate_UnsuportedAllClient_Fail +10910 area-System.Net "Test failure: System.Net.Security.Tests.ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail with ""System.Security.Authentication.AuthenticationException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. ``` Stack Trace: ``` at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in D:\A\_work\4\s\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs:line 19 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() in D:\A\_work\4\s\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs:line 167 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +10911 area-System.Net "Test failure: System.Net.Security.Tests.ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_UnsuportedAllServer_Fail with ""System.TimeoutException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_UnsuportedAllServer_Fail` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: typeof(System.TimeoutException): The operation has timed out. ``` Stack Trace: ``` at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in D:\A\_work\4\s\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs:line 23 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() in D:\A\_work\4\s\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs:line 167 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ServerAsyncAuthenticateTest~2FServerAsyncAuthenticate_UnsuportedAllServer_Fail +10912 area-System.Net Test failure: System.Net.Security.Tests.NegotiateStreamStreamToStreamTest/NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.NegotiateStreamStreamToStreamTest/NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails` has failed. ``` Assert.Equal() Failure\r Expected: False\r Actual: True ``` Stack Trace: ``` at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails() in D:\A\_work\4\s\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs:line 184 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20160816.08/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.NegotiateStreamStreamToStreamTest~2FNegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails Failed tests: System.Net.Security.Tests.NegotiateStreamStreamToStreamTest/NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails System.Net.Security.Tests.SslStreamStreamToStreamTest/SslStream_StreamToStream_Successive_ClientWrite_Async_Success System.Net.Security.Tests.SslStreamStreamToStreamTest/SslStream_StreamToStream_Successive_ClientWrite_Sync_Success +10914 area-Serialization Test failure: XmlSerializerTests/XML_TypeWithTypeNameInXmlTypeAttribute Opened on behalf of @jiangzeng The test `XmlSerializerTests/XML_TypeWithTypeNameInXmlTypeAttribute` has failed. ``` System.InvalidOperationException : There was an error reflecting type 'SerializationTypes.TypeWithTypeNameInXmlTypeAttribute'.\r ---- System.Reflection.CustomAttributeFormatException : 'Form' property specified was not found.\r -------- System.Reflection.CustomAttributeFormatException : 'Form' property specified was not found. ``` Stack Trace: ``` at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) at XmlSerializerTests.SerializeAndDeserialize[T](T value, String baseline, Func`1 serializerFactory, Boolean skipStringCompare, XmlSerializerNamespaces xns) in D:\A\_work\2\s\src\System.Xml.XmlSerializer\tests\XmlSerializerTests.cs:line 1844 at XmlSerializerTests.XML_TypeWithTypeNameInXmlTypeAttribute() in D:\A\_work\2\s\src\System.Xml.XmlSerializer\tests\XmlSerializerTests.cs:line 1183 ----- Inner Stack Trace ----- at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeFieldInfo field, RuntimeType caType) at System.Xml.Serialization.XmlAttributes..ctor(ICustomAttributeProvider provider) at System.Xml.Serialization.XmlReflectionImporter.GetAttributes(MemberInfo memberInfo) at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter) ----- Inner Stack Trace ----- at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XmlSerializer.Tests/analysis/xunit/XmlSerializerTests~2FXML_TypeWithTypeNameInXmlTypeAttribute Same issue for the following tests: XmlSerializerTests/XML_TypeWithTypeNameInXmlTypeAttribute XmlSerializerTests/XML_TypeWithXmlSchemaFormAttribute XmlSerializerTests/Xml_TypeWithSchemaFormInXmlAttribute +10915 area-Serialization Test failure: XmlSerializerTests/Xml_ClassImplementingIXmlSerialiable "Opened on behalf of @jiangzeng The test `XmlSerializerTests/Xml_ClassImplementingIXmlSerialiable` has failed. ``` XML comparison is also failing\r Test failed for input: SerializationTypes.ClassImplementingIXmlSerialiable\r Expected: \r \r Actual: \r \r Hello world\r \r Expected: True\r Actual: False ``` Stack Trace: ``` at XmlSerializerTests.SerializeAndDeserialize[T](T value, String baseline, Func`1 serializerFactory, Boolean skipStringCompare, XmlSerializerNamespaces xns) in D:\A\_work\2\s\src\System.Xml.XmlSerializer\tests\XmlSerializerTests.cs:line 1873 at XmlSerializerTests.Xml_ClassImplementingIXmlSerialiable() in D:\A\_work\2\s\src\System.Xml.XmlSerializer\tests\XmlSerializerTests.cs:line 1142 ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XmlSerializer.Tests/analysis/xunit/XmlSerializerTests~2FXml_ClassImplementingIXmlSerialiable Same issue for the following tests: XmlSerializerTests/Xml_TimeSpanAsRoot XmlSerializerTests/Xml_TypeWithDateTimePropertyAsXmlTime XmlSerializerTests/Xml_TypeWithTimeSpanProperty XmlSerializerTests/Xml_XmlQualifiedNameAsRoot " +10916 area-Serialization Test failure: XmlSerializerTests/Xml_ConstructorWithTypeMapping Opened on behalf of @jiangzeng The test `XmlSerializerTests/Xml_ConstructorWithTypeMapping` has failed. ``` System.TypeLoadException : Could not load type 'System.Xml.Serialization.XmlTypeMapping' from assembly 'System.Xml.XmlSerializer, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. ``` Stack Trace: ``` at XmlSerializerTests.Xml_ConstructorWithTypeMapping() ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XmlSerializer.Tests/analysis/xunit/XmlSerializerTests~2FXml_ConstructorWithTypeMapping Same issue for the test: XmlSerializerTests/Xml_FromMappings +10917 area-System.Xml Test failure: System.Xml.Tests.CreateElementTests/NameWithWhitespace Opened on behalf of @jiangzeng The test `System.Xml.Tests.CreateElementTests/NameWithWhitespace` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.Xml.XmlException): The ' ' character, hexadecimal value 0x20, cannot be included in a name. ``` Stack Trace: ``` at System.Xml.XmlDocument.CheckName(String name) at System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) at System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) at System.Xml.XmlDocument.CreateElement(String name) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fuwp~2F/build/20160816.08/workItem/System.Xml.XmlDocument.Tests/analysis/xunit/System.Xml.Tests.CreateElementTests~2FNameWithWhitespace Same issue for the tests: System.Xml.Tests.CreateElementTests/NameWithWhitespace System.Xml.Tests.CreateElementTests/NamespaceAndLocalNameWithColon System.Xml.Tests.CreateElementTests/NamespaceWithNoLocalName +10918 area-System.Linq Increase coverage of BinaryExpression (Equals and NotEquals) Also cleans up Expression.Equal and Expression.NotEqual tests to make it easier to add new tests Contributes to #1198 /cc @stephentoub @VSadov +10919 area-System.Security Implement TripleDES 128 bit key size The current TripleDES implementation only has 192 bit valid key size. Use case : old crypting method uses a TripleDES of a MD5 of a string. The MD5 always returns a 16 byte value. +10920 area-System.Data Application running on Ubuntu fails to connect to remote MSSQL (instance name) "I am trying to run a .NET Core application that works well on Windows, and it seems like it cannot connect to remote MSSQL server when running on Linux machine. I ran the application using the `dotnet run` command The connection string is valid, and the MSSQL server accepts remote connections Stack trace: ``` Hosting environment: Development Content root path: /home/sysadmin/billing-app/src/WebApp Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down. info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 GET http://localhost:5000/rest/v1/accounts info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1] Executing action method WebApp.API.Controllers.AccountsController.Get (WebApp) with arguments () - ModelState is Valid info: WebApp.Filters.ContextActionFilter[0] Saving changes for unit of work info: Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor[1] Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext. fail: Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory[1] An exception occurred in the database while iterating the results of a query. System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext() ClientConnectionId:00000000-0000-0000-0000-000000000000 System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext() ClientConnectionId:00000000-0000-0000-0000-000000000000 fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0] An unhandled exception has occurred while executing the request System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext() at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteObject(TextWriter writer, Object value) at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__32.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__29.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.ExceptionTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.RequestTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__6.MoveNext() ClientConnectionId:00000000-0000-0000-0000-000000000000 warn: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0] The response has already started, the error page middleware will not be executed. fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HKU6KJQ04DBP"": An unhandled exception was thrown by the application. System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext() at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteObject(TextWriter writer, Object value) at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__32.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__29.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.ExceptionTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.RequestTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() ClientConnectionId:00000000-0000-0000-0000-000000000000 info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 16642.3424ms 200 application/json; charset=utf-8 ``` " +10923 area-System.IO ExtractToFile() max. extract size throws wrong error "Im trying to extract multiple .bak files in .zip archives. It all works fine If the files are under 2GB but when my .bak file is above 2GB it throws a > ""The archive entry was compressed using an unsupported compression method."" This is not right, I compressed them with the same methode of the 2GB< files " +10924 area-System.Net Fix WebSocketException.SetErrorCodeOnError to only set on error - Fix WebSocketException.SetErrorCodeOnError... it was setting it always rather than only on error, resulting in different behavior from desktop (http://referencesource.microsoft.com/#System/net/System/Net/WebSockets/WebSocketException.cs,197) - As long as I was fixing that, I fixed the order of the arguments to Assert.Equal in the tests, as well as changing a few Equal calls to Same calls, and marking a few tests as [Fact]s so that they actually ran. Fixes https://github.com/dotnet/corefx/issues/10913 cc: @cipop, @davidsh, @ericeil, @anurse +10925 area-Infrastructure Clean the scripts build-managed and build-native using run.exe Clean build-native.cmd/sh and build-managed.cmd/sh by adding properties to config.json file following the [dev workflow](https://github.com/dotnet/buildtools/blob/master/Documentation/Dev-workflow.md) guidelines. +10931 area-System.Numerics Matrix4x4 Changes - Remove/Move Matrix4x4.CreateWorld, CreateBillboard, etc. There are a few things that we would like to see changed in Matrix4x4 that might make us and others more likely to adopt them in the near future. There seem to be several methods inside System.Numerics.Vectors.Matrix4x4 that should be removed or placed in a utility library as extension methods. Many `Matrix4x4.Create*` methods impose conventions on the users that they may not be able to accept. For example, Matrix4x4.CreateWorld() seems to negate the passed in forward axis and store it that way. For those using a right-handed x-right, y-forward, z-up coordinate system, this is very annoying for debugging purposes (and incorrect). Similar issues apply to other Create functions and there are several that would never be used (CreateShadow, etc.). This API would be much easier for us to adopt if it was considerably trimmed down to a minimum (required) number of functions and then other methods added as extensions that can _not_ be included so that those that do things differently or don't need them can still get some SIMD benefits under C#. Also in regards to SIMD benefits, Matrix4x4 does not seem to have any. I'm not clear as to why this was not designed to contain 4 Vector4 values, but if it was, it is considerably more likely that _required_ operations such as Vector \* Matrix would see SIMD benefits without having to add more/unneeded intrinsics to the JIT compiler. +10932 area-System.IO Throw specific error messages for unsupported zip Appends the common unsupported compression type to the end of the exception message for an unsupported compression type. This should make it easier to diagnose the issues that arise from https://github.com/dotnet/corefx/issues/9925. resolves https://github.com/dotnet/corefx/issues/9924 +10933 area-System.Threading Port some missing threading types/members (Task, WaitHandle, etc.) ``` M:System.Threading.Tasks.Task.Dispose M:System.Threading.Tasks.Task.Dispose(System.Boolean) M:System.Threading.Tasks.TaskCanceledException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.Tasks.TaskSchedulerException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.WaitHandle.Close M:System.Threading.WaitHandle.get_Handle M:System.Threading.WaitHandle.get_SafeWaitHandle M:System.Threading.WaitHandle.set_Handle(System.IntPtr) M:System.Threading.WaitHandle.set_SafeWaitHandle(Microsoft.Win32.SafeHandles.SafeWaitHandle) M:System.Threading.WaitHandle.SignalAndWait(System.Threading.WaitHandle,System.Threading.WaitHandle) M:System.Threading.WaitHandle.SignalAndWait(System.Threading.WaitHandle,System.Threading.WaitHandle,System.Int32,System.Boolean) M:System.Threading.WaitHandle.SignalAndWait(System.Threading.WaitHandle,System.Threading.WaitHandle,System.TimeSpan,System.Boolean) M:System.Threading.WaitHandle.WaitAll(System.Threading.WaitHandle[],System.Int32,System.Boolean) M:System.Threading.WaitHandle.WaitAll(System.Threading.WaitHandle[],System.TimeSpan,System.Boolean) M:System.Threading.WaitHandle.WaitAny(System.Threading.WaitHandle[],System.Int32,System.Boolean) M:System.Threading.WaitHandle.WaitAny(System.Threading.WaitHandle[],System.TimeSpan,System.Boolean) M:System.Threading.WaitHandle.WaitOne(System.Int32,System.Boolean) M:System.Threading.WaitHandle.WaitOne(System.TimeSpan,System.Boolean) M:System.TimeoutException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) ``` +10934 area-System.IO Add zero argument IsolatedStorageFile static factory methods Need to add `IsolatedStorageFile` `Get*StoreFor*()` static factory methods. This includes: `GetUserStoreForDomain()` `GetUserStoreForAssembly()` `GetUserStoreForApplication()` <- Need to update implementation `GetUserStoreForSite()` `GetMachineStoreForDomain()` `GetMachineStoreForAssembly()` `GetMachineStoreForApplication()` Other factory methods will be broken out into separate work items as there are more direct dependencies on `System.Security.Policy.Evidence`. +10935 area-System.IO Add IsolatedStorageFile factory methods with Evidence dependencies Need to implement the various `GetStore()` methods have direct or indirect dependencies on `System.Security.Policy.Evidence`. This includes: `GetStore(IsolatedStorageScope, Type, Type)` `GetStore(IsolatedStorageScope, Object, Object)` `GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type)` `GetStore(IsolatedStorageScope, Type)` `GetStore(IsolatedStorageScope, Object)` These may not be possible without `System.Security.Policy.Evidence`. See #10934 for the other factory methods. +10936 area-System.IO Add IsolatedStorageFile.GetEnumerator() `IsolatedStorageFile.GetEnumerator()` allows you to enumerate all stores for the current user. [How to: Enumerate Stores for Isolated Storage](https://msdn.microsoft.com/en-us/library/c3dy613a%28v=vs.110%29.aspx) +10943 area-System.Reflection Access denied errors running PortableExecutable tests http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3539/ ``` System.Reflection.PortableExecutable.Tests.DebugDirectoryTests.CodeView_Loaded [FAIL] System.UnauthorizedAccessException : Access to the path 'C:\Users\dotnet-bot\AppData\Local\Temp\tmp7490.tmp' is denied. Stack Trace: at System.IO.Win32FileSystem.DeleteFile(String fullPath) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Reflection.Metadata\tests\TestUtilities\LoaderUtilities.cs(36,0): at System.Reflection.Metadata.Tests.LoaderUtilities.LoadPEAndValidate(Byte[] peImage, Action`1 validator, Boolean useStream) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Reflection.Metadata\tests\PortableExecutable\DebugDirectoryTests.cs(39,0): at System.Reflection.PortableExecutable.Tests.DebugDirectoryTests.CodeView_Loaded() System.Reflection.PortableExecutable.Tests.PEReaderTests.GetSectionData_Loaded [FAIL] System.UnauthorizedAccessException : Access to the path 'C:\Users\dotnet-bot\AppData\Local\Temp\tmp7491.tmp' is denied. Stack Trace: at System.IO.Win32FileSystem.DeleteFile(String fullPath) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Reflection.Metadata\tests\TestUtilities\LoaderUtilities.cs(36,0): at System.Reflection.Metadata.Tests.LoaderUtilities.LoadPEAndValidate(Byte[] peImage, Action`1 validator, Boolean useStream) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Reflection.Metadata\tests\PortableExecutable\PEReaderTests.cs(239,0): at System.Reflection.PortableExecutable.Tests.PEReaderTests.GetSectionData_Loaded() ``` +10944 area-System.IO Stream.ReadAsync initializes Task with improper TaskCreationOptions "This is a regression introduced by https://github.com/dotnet/corefx/commit/71bb8fec20016b10d1b29615682fa7ced90b8996. What's happening is: on https://github.com/dotnet/corefx/blob/dev/api/src/System.IO/src/System/IO/Stream.cs#L252 the new Task is being created with TaskCreationOptions DenyChildAttach and HideScheduler. However it's eventually reach to https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs#L320 where it expects to see either AttachedToParent or RunContinuationsAsynchronously in the TaskCreationOptions. so it throws an ArgumentOutOfRangeException(""creationOptions"") I hit this issue when I tried to consume the new System.IO on .Net Native toolchain. One of the tests failed with the ArgumentOutOfRangeException on the following call stack: Running Test: StreamTests.ReadAndWriteAsync Caught Unexpected exception:System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: creationOptions at System.Threading.Tasks.Task..ctor(Object state, TaskCreationOptions creationOptions, Boolean promiseStyle) at System.Threading.Tasks.Task$1..ctor(Object state, TaskCreationOptions options) at System.Threading.Tasks.TaskFactory$1.FromAsyncImpl(Func$6<__Canon,Int32,Int32,__Canon,__Canon,__Canon> beginMethod, Func$2 endFunction, Action$1 endAction, __Canon arg1, Int32 arg2, Int32 arg3, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync(Func$6<__Canon,Int32,Int32,__Canon,__Canon,__Canon> beginMethod, Func$2 endMethod, __Canon arg1, Int32 arg2, Int32 arg3, Object state, TaskCreationOptions creationOptions) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count) at UnitTests!+0x30f64c at UnitTests!+0x30f49d at System.Action.Invoke() at UnitTests!+0x30d6b1 at UnitTests!+0x30cca7 /cc @joperezr, this is related with his change " +10947 area-System.Net Supported versions of libcurl for HttpClient I’m doing some performance analysis for the AWS SDK for .NET which relies on the HttpClient. Performance and reliability seems to differ widely depending on the version of libcurl. My test consist of 10 tasks repeatedly making http calls using the same HttpClient. For Mac OSX using libcurl 7.43 and Ubuntu 16.04 using libcurl 7.47 performance seems fine. Ubuntu 14.04 using libcurl 7.35 request per second is in the ball park but I frequently get errors with the response stream being closed as I’m reading the response back. RHEL 7.2 using libcurl 7.29 I don’t get any errors but the performance is an order magnitude slower than the other platforms. Is there a minimum version of libcurl that you are recommending to have when using HttpClient on Linux? +10948 area-System.Net Add HTTP/2 support to WinHttpHandler Windows 10 Anniversary release a.k.a Windows 10 Version 1607 added support to native WinHTTP for HTTP/2 protocol support. Added code to use this when sending request messages with HTTP/2. This change affects both the System.Net.Http and System.Net.Http.WinHttpHandler library packages. Added new tests that validate the functionality and verify the test client is running on the proper version of Windows 10. Switched the HTTP/2 test server endpoint to www.microsoft.com since it supports HTTP/2. Fixes #4870 +10949 area-System.Reflection System.Collections.Immutable and System.Reflection.Metadata cause some dependency weirdness I have a library targeting `netstandard1.5` which brings in these two libraries as dependencies (directly or indirectly, doesn't seem to make a difference.) When I reference this library from another project targeting `net462`, I can see in the Visual Studio dependency tree that several references sort of 'drop out' of 'package dependency' mode and into 'framework assembly' mode: - System.Runtime (4.1.0, drops to 4.0.20) - System.Runtime.Extensions (4.1.0, drops to 4.0.10) - System.Reflection (4.1.0, drops to 4.0.10) Now, there is another somewhat similar issue with the current 4.1.0 package for System.Net.Http, where it drops to 4.0.0 and causes problems, but I have been able to work around that by locking the project.json file and deleting the portion that specifies it as a framework assembly. I see no such analog for these other libraries and I can't find anything of note in their .nuspec files. Changing the test library to target as low as `netstandard1.1` yields no desirable effect. Although I would prefer not to mention this sort of thing, a current project I am working on is blocked by this because at runtime it is causing a failure to load the System.Runtime library. I mention this because I want to be clear that it is not a nitpicking issue but rather an actual impediment. Please let me know what else I can do to help. +10950 area-System.Console Console.ReadKey does not wait "After verifying the .NET Framework documentation that the ReadKey method is supposed to wait, I observed .NET Core does not wait on Console.ReadKey but just run over it. https://msdn.microsoft.com/en-us/library/x3h8xffw(v=vs.110).aspx ""The ReadKey method waits, that is, blocks on the thread issuing the ReadKey method, until a character or function key is pressed. A character or function key can be pressed in combination with one or more Alt, Ctrl, or Shift modifier keys. However, pressing a modifier key by itself will not cause the ReadKey method to return."" " +10951 area-System.Runtime DEC64 Type (Decimal Floating Point) As proposed by Douglas Crockford https://github.com/douglascrockford/DEC64 Presentation on it: https://youtu.be/PSGEjv3Tqo0?t=27m5s +10954 area-System.Linq Expression.New has inconsistent argument checking for the declaring type of the ctor "There is an inconsistency between the checking of the `constructor` parameter in various `Expression.New()` overloads. This is when the constructor has a GenericTypeDefinition This was discovered in #10952, and this is demonstrated below. ## Problem ``` [Fact] public static void ConstructorDeclaringType_GenericTypeDefinition_ThrowsArgumentException() { ConstructorInfo constructor = typeof(GenericClass<>).GetConstructor(new Type[0]); Assert.Throws(""constructor"", () => Expression.New(constructor)); Assert.Throws(""constructor"", () => Expression.New(constructor, new Expression[0])); Assert.Throws(""constructor"", () => Expression.New(constructor, (IEnumerable)new Expression[0])); } [Fact] public static void ConstructorDeclaringType_GenericTypeDefintion_Works() { // Should probably throw an ArgumentException, similar to other overloads ConstructorInfo constructor = typeof(GenericClass<>).GetConstructor(new Type[0]); Expression.New(constructor, new Expression[0], new MemberInfo[0]); Expression.New(constructor, new Expression[0], new MemberInfo[0]); } ``` ## Solution The fix is to add the following code to `New(ConstructorInfo, IEnumerable, IEnumerable)` so that it is consistent with `New(ConstructorInfo)` and `New(ConstructorInfo, IEnumerable)` ``` ContractUtils.RequiresNotNull(constructor.DeclaringType, nameof(constructor) + ""."" + nameof(constructor.Decl TypeUtils.ValidateType(constructor.DeclaringType, nameof(constructor)); ``` This would be a breaking change, but is a bug, as an `InvalidOperationException` is thrown when compiling a lambda expression containing the New expression. /cc @stephentoub @JonHanna @VSadov " +10958 area-System.Net WinHttpHandler using HTTP/2 returns error with servers using push promise While implementing PR #10948, we discovered that Windows winHTTP has some issues with HTTP/2 servers that use server push functionality (push promise). Reference internal bug 8523801. +10961 area-System.Globalization Compat work to implement missing Globalization API for .NET Native and Unix Tarek, please split as needed +10967 area-Serialization Create Test Projects for Testing Reflection Based DCS/DCJS +10969 area-System.IO Add missing member on ZipArchiveEntry There is only one thing left missing in System.IO.Compression namespace. `M:System.IO.Compression.ZipArchiveEntry.set_Archive(System.IO.Compression.ZipArchive)` +10973 area-System.IO Potential optimizations for System.IO.Path - [`CheckInvalidPathChars`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/IO/PathInternal.cs#L19) is called as much as 1-3 times in most Path chars, however due to all of the exception-throwing code it doesn't look as if it's going to be inlined. SInce dotnet/coreclr#6103 was merged, it may be beneficial to separate the throwing logic out to encourage inlining, for example: ``` cs internal static void CheckInvalidPathChars(string path) { if (path == null) ThrowArgumentNullPath(); if (PathInternal.HasIllegalCharacters(path)) ThrowArgumentInvalidPathChars(); } ``` - StringBuilder's indexer is not inlined, so [this](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/IO/PathInternal.cs#L40) is very slow, although it does avoid allocations. It may be worth seeing how all of the method calls stack up against using `ToString` and indexing into that instead. - [This](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/IO/PathInternal.Unix.cs#L78-L92) is definitely suboptimal; I don't think `StringBuilder.Append(char)` is inlined, and we could use a `char[]` instead since we know the max length of the buffer in advance. - [Same here](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/IO/PathInternal.Windows.cs#L409-L437) - [Same here](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/IO/Path.cs#L260-L285) - Maybe this could make use of `ArrayPool.Shared.Rent`, instead of using `StringBuilder`? - [Same here](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/IO/Path.Unix.cs#L110) cc @JeremyKuhne +10974 area-System.Net WinHTTP allocates HttpVersion20 for every http/2 request On 4.6.x `WinHttpResponseParser`.`CreateResponseMessage` allocates HttpVersion20 setting the version `WinHttpHandler`.`SetRequestHandleHttp2Options` allocates HttpVersion20 for every equality check This is caused by properties being .ctor get functions ``` csharp internal static Version HttpVersion20 => new Version(2,0); internal static Version HttpVersionUnknown => new Version(0,0); ``` Should probably be? ``` csharp internal readonly static Version HttpVersion20 = new Version(2,0); internal readonly static Version HttpVersionUnknown = new Version(0,0); ``` @davidsh @justinvp +10975 area-System.Data System.Data.Common and SqlClient: Async variants for remaining blocking APIs The following potentially blocking APIs currently don't have async variants: 1. `DbTransaction.Commit()` 2. `DbConnection.Close()` 3. `DbConnection.BeginTransaction()` 4. `DbTransaction.Rollback()` Ideally default implementations should be added to the base classes of the ADO.NET provider model which fallback to the sync implementations (following the same pattern we have for the other async methods) and proper async implementations should be added to SqlClient. Related to #8856. +10981 area-System.Net Expose UnixDomainSocket #6833 made the UnixDomainSocketEndPoint internal, which of course prevents clients from using it to have direct access to Unix sockets in their own code. Docker.DotNet had to introduce a copy of UnixDomainSocketEndPoint in order to access sockets when running on Ubuntu (see https://github.com/Microsoft/Docker.DotNet/pull/113). Ideally, the language would provide a way for this access to happen, without needing each client to make a copy of the class for their use. It's possible I missed a better way to do this, so advice would be appreciated... ## Proposal ```C# // in System.Net.Sockets assembly namespace System.Net.Sockets { public sealed class UnixDomainSocketEndPoint : EndPoint { public UnixDomainSocketEndPoint(string path); } } ``` It'll work on Unix and result in PlatformNotSupportedExceptions on Windows. Example usage: ```C# var socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.Unspecified); socket.Bind(new UnixDomainSocketEndPoint(path)); socket.Listen(5); ``` +10982 area-System.Net WinHttpHandler: Avoid repeated Version allocations For NET46, use static readonly fields that always return the same cached instances, instead of properties that always allocate and return new `Version` instances. Fixes #10974. cc: @davidsh @benaadams +10985 area-System.Console Console.Readline() doesn't respect disable console echo by 'stty -echo' on Ubuntu I want my Console.Readline() doesn't print out what been read. (I am reading password from user input.) On Windows, i can achieve by PInvoke SetConsoleMode() before calling Console.Readline() to disable console echo. I try to do same thing on Ubuntu PInvoke tcsetattr() before Console.Readline(), however it seems like Console.Readline() doesn't respect Ubuntu console echo disable at all. Here is what i verified On Ubuntu 16. 1. Dotnet new a helloworld console app, add `String read = Console.Readline();` after console.writeline(...) 2. In terminal type 'stty -echo' to disable console echo. 3. type 'Dotnet restore', 'dotnet run', as you can see, since we disable console echo, the dotnet restore and dotnet run you typed will not shows up. 4. When dotnet run start the helloworld app, it will print out HelloWorld! then wait for user input, however what you type now will shows on console. +10989 area-System.Reflection ModuleBuilder.GetType does not work with ignore case with certain unicode chars on Unix "The following test passes on Windows, but fails on non-Windows platforms, discovered in #10532 ```c# [Fact] public void Test() { AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(""AssemblyName""), AssemblyBuilderAccess.Run); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(""ModuleName""); TypeBuilder type = moduleBuilder.DefineType(""\uD800\uDC00""); TypeInfo createdType = type.CreateTypeInfo(); moduleBuilder.GetType(""\uD800\uDC00"", false, false); // Works on all platforms moduleBuilder.GetType(""\uD800\uDC00"", true, false); // Works on all platforms moduleBuilder.GetType(""\uD800\uDC00"", true, true); // Throws TypeLoadException on Unix moduleBuilder.GetType(""\uD800\uDC00"".ToLowerInvariant(), true, true); // Throws TypeLoadException on Unix moduleBuilder.GetType(""\uD800\uDC00"".ToUpperInvariant(), true, true); // Throws TypeLoadException on Unix} ``` /cc @stephentoub @AtsushiKan " +10990 area-Meta How to install corefx libraries/assemblies alongside the coreclr? I am trying to debug a simple hello world app using `lldb` on Ubuntu 15.10 (arm hf) target. I have successfully cross compiled coreclr/corefx/llvm+lldb and I am able to run `corerun` and `lldb` binaries. However, a can not find any useful information about how to properly install `corefx` build results alongside the `coreclr`. `<...>/corefx/bin` directory contains folders for different OSes/archs: ``` drwxrwxr-x 236 i.kulaychuk i.kulaychuk 20480 авг 17 21:39 AnyOS.AnyCPU.Release drwxrwxr-x 12 i.kulaychuk i.kulaychuk 4096 авг 17 21:33 Linux.AnyCPU.Release drwxrwxr-x 3 i.kulaychuk i.kulaychuk 4096 авг 18 13:35 Linux.arm.Release drwxrwxr-x 3 i.kulaychuk i.kulaychuk 4096 авг 17 20:57 Linux.x64.Release drwxrwxr-x 10 i.kulaychuk i.kulaychuk 4096 авг 18 13:35 obj drwxrwxr-x 6 i.kulaychuk i.kulaychuk 4096 авг 17 21:27 OSX.AnyCPU.Release drwxrwxr-x 3 i.kulaychuk i.kulaychuk 4096 авг 17 21:43 packages drwxrwxr-x 131 i.kulaychuk i.kulaychuk 12288 авг 17 21:30 ref drwxrwxr-x 2 i.kulaychuk i.kulaychuk 28672 авг 17 21:43 TestDependencies drwxrwxr-x 6 i.kulaychuk i.kulaychuk 4096 авг 17 21:33 tests drwxrwxr-x 83 i.kulaychuk i.kulaychuk 4096 авг 17 21:36 Unix.AnyCPU.Release drwxrwxr-x 63 i.kulaychuk i.kulaychuk 4096 авг 17 21:35 Windows_NT.AnyCPU.Release ``` What directories/dlls/so files should be copied to target `coreclr` folder in order for `lldb` (and `libsosplugin.so`) to work? There are dlls with the same name (`bin/Unix.AnyCPU.Release/System.IO.FileSystem/System.IO.FileSystem.dll` and `bin/AnyOS.AnyCPU.Release/System.IO.FileSystem/net46/System.IO.FileSystem.dll`) so I am a little confused. +10994 area-System.Runtime Add Quarters to DateTime formats "I suggest that you add support for quarters when formatting a `DateTime`. `q` would display the date quarter (1..4). Example: `new DateTime(2016, 8, 19).ToString(""Qq yyyy"") == ""Q3 2016""` This is quite common in financial applications and the lack of it can sometimes require convoluted workarounds. " +11002 area-System.Reflection FreeLibrary sometimes doesn't unlock the underlying file Consider the following test code: ``` C# string tempFile = Path.GetTempFileName(); File.WriteAllBytes(tempFile, peImage); using (SafeLibraryHandle libHandle = Interop.mincore.LoadLibraryExW(tempFile, IntPtr.Zero, 0)) { ... } File.Delete(tempFile); ``` Although `SafeLibraryHandle.Dispose` calls `FreeLibrary` the deletion of the file sometimes fails as the file is still locked. See https://github.com/dotnet/corefx/issues/10943. +11005 area-System.ComponentModel DataTypeAttribute.GetDataTypeName() throws IndexOutOfRangeException "The following test demonstrates the bug, found in #11004 ``` [Theory] [InlineData((DataType)(-1))] [InlineData(DataType.Upload + 1)] public static void GetDataTypeName_InvalidDataType_ThrowsIndexOutOfRangeException(DataType dataType) { DataTypeAttribute attribute = new DataTypeAttribute(dataType); Assert.Throws(() => attribute.GetDataTypeName()); } ``` This is because the method `EnsureValidDataType` should be changed to: ``` private void EnsureValidDataType() { if (DataType < DataType.Custom || DataType > DataType.Upload) { throw new InvalidOperationException(""DataType is Invalid""); } if (DataType == DataType.Custom && string.IsNullOrEmpty(CustomDataType)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, SR.DataTypeAttribute_EmptyDataTypeString)); } } ``` /cc @stephentoub (not sure who the code owner for this class is, or whether this code is legacy and shouldn't be touched) " +11009 area-Meta Infer PackageTargetFramework from NuGetTargetMoniker "Remove specification of PackageTargetFramework, derive it from NuGetTargetMoniker. Make sure all of our library projects don't use imports, so that we can ""trust"" that NuGetTargetMoniker is correct and the dependencies are supported by that NuGetTargetMoniker. Eliminate generation validation in the libraries since it is no longer needed due to above. Also reduce boilerplate in projects by supporting a lightweight definition of a list of package destinations. " +11016 area-System.Security A duplicate X509 certificate can be added to the user certificates store when using the X509Store API This is an edge case race that happens when a certificate is stored using the X509Store.Add API When adding a previously-unknown certificate to a certificate store in *nix, it is possible that the same certificate can be added twice. The certificate filename will look something like C7979286A20741AE49436142E9D9CD72BA2F59F4.pfx, and C7979286A20741AE49436142E9D9CD72BA2F59F4.1.pfx in ~/.dotnet/corefx/cryptography/x509/_storeName_ This is not known to happen in .NET Core or .NET Desktop in Windows (probably since certs are not stored on the filesystem) Note that I think this will happen only in very rare cases where we're adding the same cert on multiple threads/processes simultaneously - hence it may be a uniqueness in the way we work with our tests. I will look separately into preventing this from happening in our test bed cc: @bartonjs +11021 area-System.Net Fix incorrect AssemblyName in System.Net.Primitives/PerformanceTests Fixes what was presumably a typo/accident, introduced by #10192 cc @dsgouda, @stephentoub +11023 area-System.Runtime System.Runtime.Loader should be netcoreapp1.0, not netstandard1.5 It's actually a coreclr-specific API and doesn't work on other .net standard 1.5 platforms like net462 and xamarin. +11025 area-System.ComponentModel CompareAttribute throws TargetParameterCountException and ArgumentException "The following tests demonstrate the bugs, discovered in #10992 ``` [Fact] public static void Property_HasIndexParameters_ThrowsParameterCountException() { ValidationContext context = new ValidationContext(new CompareObject(""a"")) { DisplayName = ""CurrentProperty"" }; CompareAttribute = new CompareAttribute(""Item""); Assert.Throws(() => attribute.Validate(""b"", context)); } [Fact] public static void Property_SetOnly_ThrowsArgumentException() { ValidationContext context = new ValidationContext(new CompareObject(""a"")) { DisplayName = ""CurrentProperty"" }; CompareAttribute = new CompareAttribute(""SetOnlyProperty""); Assert.Throws(() => attribute.Validate(""b"", context)); } private class CompareObject { public string this[int index] { get { return ""abc""; } set { } } public string SetOnlyProperty { set { } } } ``` This is because the check [here](https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/CompareAttribute.cs#L70) for index parameters occurs **after** we call `PropertyInfo.GetValue` [here](https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/CompareAttribute.cs#L51) We should also add a check to make sure we can read the property before calling `GetValue`. In both these cases, we should instead return `false` for `IsValid` /cc @stephentoub " +11029 area-System.Linq Improve SelectMany behavior when the selector returns null "[In the current version](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/SelectMany.cs#L62) `Enumerable.SelectMany` experiences a `NullReferenceException` when `selector` returns `null`. This is undesirable because it's a confusing crash with a ""forbidden"" exception type in BCL code. This should be changed. Example: `foreach(var item in new int[][] { new int[1], null }.SelectMany(x => x)) { }` The safest approach would be to throw an exception that explains that the user has provided an invalid `selector` that does not obey the contract. Additionally, the [documentation](https://msdn.microsoft.com/en-us/library/bb534336%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396) should state the requirement to not return `null`. An alternative approach would be to treat `null` as an empty sequence. I'm not sure which solution is better. Sometimes, an empty sequence would be very convenient. Sometimes this would hide a bug. Also it's unclear that this can be done due to compatibility concerns. I think throwing a different exception type would be safe enough to take the change. " +11030 area-System.Numerics Add generic Math methods for numeric types "## Overview With the addition of System.Numerics.Vector it suddenly became possible to write some generic algorithms that worked for most primitive numeric datatypes. However as soon as you need to work with single elements you are out of luck. I propose a new generic API for scalar datatypes based upon the ideas behind System.Numerics.Vector. Just as for vectors many of the genereic methods could be generated using .tt files such as in https://github.com/dotnet/corefx/blob/master/src/System.Numerics.Vectors/src/System/Numerics/Vector.tt ## API This is an example of how the API could look like. All methods below are taken from the Vector class (https://msdn.microsoft.com/en-us/library/system.numerics.vector(v=vs.111).aspx). **Additional methods** such as those found in System.Math (https://msdn.microsoft.com/en-us/library/system.math.aspx) would be interesting as well. It could also be interesting to add non-generic methods such as `float Round(float x, int digits);` as well All functionlity could be provided in a new nuget package in order to allow out of band releases without conflicts with the current Math type. ```c# public static class Scalar { public static T Abs(T left, T right) where T : struct public static T Add(T left, T right) where T : struct public static T AndNot(T left, T right) where T : struct public static T BitwiseAnd(T left, T right) where T : struct public static T BitwiseOr(T left, T right) where T : struct public static T Divide(T left, T right) where T : struct public static T Max(T left, T right) where T : struct public static T Min(T left, T right) where T : struct public static T Multiply(T left, T right) where T : struct public static T Negate(T left, T right) where T : struct public static T OnesComplement(T left, T right) where T : struct public static T SquareRoot(T left, T right) where T : struct public static T Subtract(T left, T right) where T : struct public static T Xor(T left, T right) where T : struct // Useful methods part of Vector public static T Zero() where T : struct public static T One() where T : struct } ``` The generic requirements for some methods might be changed a bit to allow additional types, such as using providing extra overload such as those suggested in https://github.com/dotnet/corefx/issues/1583. Comparison and equality checking was not included since IComparable<> and IEquatable<> are implemented for the types already, but if it is considered a good idea to be as similar as possible to Vector then the following methods should also be considered ```c# public static bool GreaterThan(T left, T right) where T : struct public static bool GreaterThanOrEqual(T left, T right) where T : struct public static bool LessThan(T left, T right) where T : struct public static bool LessThanOrEqual(T left, T right) where T : struct ``` ### Types to support I propose that all the primitive numeric types including decimal are supported (the same types as Vector<> support but with the addition of decimal). Invoking any method with any other type should result in an NotSupportedException() - Byte - SByte - UInt16 - Int16 - UInt32 - Int32 - UInt64 - Int64 - Single - Double - Decimal (The only difference from Vector) ### Related issues: I found a few issues regarding similar ideas - #1151 is about adding new Math functionality which could be added to the ""Scalar"" type - With corresponding PR in https://github.com/dotnet/coreclr/pull/5492 - #1583 - Add generic overloads to Math.Min and Math.Max - #467 - add Clamp method " +11033 area-System.IO Release these reserved names: COM1-COM9, LPT1-LPT9, CON, AUX, PRN, and NUL Use the `\\?\` prefix to access them internally. +11035 area-System.Runtime Expose serialization primitives on .NET Native Remove ApiCompatBaseline.netcore50aot.txt / ApiCompatBaseline.uap101aot.txt baselined errors once resolved, e.g. that CultureNotFoundException doesn't implement ISerializable in the implementation. - src\System.Globalization\src\ApiCompatBaseline.uap101aot.txt - src\System.Threading.Tasks\src\ApiCompatBaseline.uap101aot.txt - etc. +11036 area-System.Net .NET Core crashes when using HttpClient with HTTP/2 and Client Certificates "**Scenario** We have built an ASP.NET Core service which connects to Apple's HTTP/2-based APNS servers (in order to send push notifications from our ASP.NET Core-based platform to Apple devices). Unfortunately, .NET Core 1.0.0-rtm crashes hard in release mode when opening an HTTP/2 connection using a client certificate. In debug mode, it sometimes behaves better. **Result when running code in release mode (.NET Core 1.0.0-rtm, Ubuntu 16.04 Server)** Hard crash. After about 8 seconds of executing HttpClient.SendAsync(...), .NET Core 1.0.0-rtm crashes hard. Exception handlers do not execute. **Result when running code in debug mode (.NET Core 1.0.0-rtm, Ubuntu 16.04 Desktop, VSCode 1.4.0)** Inconsistent behavior, ranging from long delays to hard crashes. Sometimes .NET Core crashes, and sometimes the HttpClient.SendAsync(...) call times out and throws a catchable exception. And sometimes after a few debug cycles it mostly works, with a delay of around 8 seconds and then a successful response to the initial HTTP/2 request. In the last case, where the HttpClient request does succeed (in debug mode): once the HTTP/2 connection is open, sending additional messages in real-time to APNS servers (re-using the same HttpClient connection) works quickly and seemingly consistently. In our tests to date, the failure only occurs during the initial ""HTTP/2 client using client certificate"" connection attempt. As additional info: if we remove the client certificate from the request, the HTTP/2 secure connection goes through immediately (although APNS of course returns an ""unauthorized...missing certificate (sic)"" text reply). **Repro** 1. Install .NET Core 1.0 on Ubuntu 16.04 LTS 2. Compile libcurl from source to include HTTP/2 support (see next post in thread) 3. Save your APNS development certificate to disk, and fill in its path and password in the sample code. Also fill in your APNS bundle/deviceToken IDs in the sample code. 4. Drop the sample code inside Program.cs Main() and run the sample. 4a. In release mode, the HttpClient.SendAsync(...) line of code will run for about 8 seconds and then .NET Core will crash hard without raising an exception. 4b. In debug mode from VSCode, the HttpClient.SendAsync(...) line of code will exhibit intermittent hard crashes, intermittent exceptions, and/or ~8 second delays with successful connection. REPRO CODE FOLLOWS (sending a sample push notification through Apple's APNS servers) ``` // create our HTTP Client Handler (which will be reused across HTTP/2 requests) var clientHandler = new HttpClientHandler() { ClientCertificateOptions = ClientCertificateOption.Manual }; X509Certificate2 clientCertificate = new X509Certificate2(""/home/ubuntu/apns_devcert.pfx"", ""password""); // INFO: comment out the following line to see that HTTPS/2 is succeeding without a client certificate...APNS will simply return a ""please provide a client certificate"" message clientHandler.ClientCertificates.Add(clientCertificate); // var myClient = new System.Net.Http.HttpClient(clientHandler); // we will attempt to send five requests, 60 seconds apart, to ensure that HTTP/2 is working properly. for (int i = 1; i <= 5; i++) { Console.WriteLine(""Starting request #"" + i.ToString()); // create the push notification request string deviceToken = ""{device token from mac/ios device goes here}""; string appBundleId = ""{app bundle id goes here}""; string messageUuid = Guid.NewGuid().ToString(""D""); var myRequest = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, ""https://api.development.push.apple.com:443/3/device/"" + deviceToken); // upgrade the HTTP request to HTTP/2 (required for .NET Core on Linux) myRequest.Version = new System.Version(2, 0); myRequest.Headers.Add(""apns-id"", messageUuid); myRequest.Headers.Add(""apns-expiration"", ""0""); myRequest.Headers.Add(""apns-priority"", ""10""); myRequest.Headers.Add(""apns-topic"", appBundleId); StringContent content = new StringContent(""{ \""aps\"" : { \""alert\"" : \"".NET Core (request #"" + i.ToString() + "") -- test message -- \"" } }""); myRequest.Content = content; try { // INFO: .NET Core crashes on the following line var response = myClient.SendAsync(myRequest).GetAwaiter().GetResult(); // print out response to console var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); Console.WriteLine(""Response: "" + responseString); // optionally, verify that the response is using HTTP/2 //Console.WriteLine(""Response protocol: HTTP/"" + response.Version.ToString()); } catch (System.Net.Http.HttpRequestException ex) { Console.Write(""HttpRequestException: "" + ex.Message); } catch (Exception ex) { Console.Write(""Exception: "" + ex.Message); } // wait 60 seconds between test requests Task.Delay(60000).GetAwaiter().GetResult(); } Console.WriteLine(""Done""); ``` " +11037 area-System.Runtime Add SuppressIldasmAttribute Add this, it's used in a few apps. It has no implementation. ``` T:System.Runtime.CompilerServices.SuppressIldasmAttribute M:System.Runtime.CompilerServices.SuppressIldasmAttribute.#ctor ``` +11038 area-System.Net HttpClient Exception on GetAsync method "Hi all, since I updated from RC1 to 1.0 I'm getting an exception using HttpClient.GetAsync method. Here the exception: Exception type System.TypeLoadException Exception message: Could not load type 'System.Collections.Concurrent.ConcurrentDictionary`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Stack trace: at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() at System.Net.Http.HttpContentExtensions.get_DefaultMediaTypeFormatterCollection() at WebApi.Controllers.MyController.Get(String word) in C:\MyController.cs:line 30 at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext() It seems a conflict between .Net4.0 and .Net4.5, my project reference ""net461"", IIS tries to get the method from mscorlib (net45) and it fails because it's getting actually mscorlib (net40). This method doesnt exists in mscorlib(net40) but in mscorlib(net45). See: http://stackoverflow.com/questions/38375857/system-typeloadexception-could-not-load-type-system-reflection-runtimereflecti Here my project.json: { ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""Microsoft.EntityFrameworkCore"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Relational"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.0.0-preview2-final"", ""Microsoft.Extensions.WebEncoders.Core"": ""1.0.0-rc1-final"", ""SapientGuardian.MySql.Data"": ""6.9.812"", ""Microsoft.AspNetCore.Mvc.Formatters.Xml"": ""1.0.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.0.0"", ""MimeKit"": ""1.4.1"", ""MailKit"": ""1.4.1"", ""System.Xml.XmlDocument"": ""4.0.1"", ""AspNet.Security.OAuth.Validation"": ""1.0.0-alpha2-final"", ""OpenIddict"": ""1.0.0-*"", ""Microsoft.AspNetCore.Authentication.JwtBearer"": ""1.0.0"", ""Serilog"": ""2.1.0"", ""Serilog.Sinks.File"": ""2.1.0"", ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"" }, ""tools"": { ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": ""1.0.0-preview2-final"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.0.0-preview2-final"" }, ""frameworks"": { ``` ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""net461"" ] } ``` }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""Areas/**/Views"", ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } " +11042 area-System.Security X509Certificate2: Unclear error message when file does not exist "This issue is similar to #9402 An exception with an obscure error message is thrown when creating a `X509Certificate2` using a path to a file which does not exist. Consider the following code: ``` using System; using System.Security.Cryptography.X509Certificates; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { new X509Certificate2(fileName: ""invalid.cer""); } } } ``` on Windows, the following exception is thrown: ``` Unhandled Exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The system cannot find the file specified at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) at ConsoleApplication.Program.Main(String[] args) ``` whereas the following exception is thrown on Linux and OS X: ``` nhandled Exception: Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle) at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) at ConsoleApplication.Program.Main(String[] args) ``` As such, this confirms to the MSDN specifications of the `X509Certificate2` constructor because all it says is that a `CryptographicException` should be thrown - which is the case. It seems that the error message contains too much information - I'd argue it should only read ""no such file"" or a user-friendly string, and the underlying OpenSSL error code (2006D080) could go on a different property of the OpenSslCryptographicException class. " +11044 area-System.ComponentModel Cannot reset DisplayName on ValidationContext "I do a lot of work with console applications and I like to use validation attributes and `IValidatableObject` to take advantage of framework-supplied validations rather than reinventing the wheel or using a third-party library. When looping through an object's properties to validate them, I can set the context's `MemberName` property appropriately each run through, but any non-successful validation results may return a nonsensical message since the validators use the `DisplayName` property to format the message, and the `DisplayName` property getter caches its return value the first time it is used. In addition to this, the `DisplayName` property cannot be reset as the setter will throw an `ArgumentNullException`. I could envision any of the following approaches to resolve this: - Allow setting `DisplayName` to `null` or `""""` - Set the `_displayName` field to `null` whenever `MemberName`/`_memberName` are changed - Offer a method like `Reset(bool clearItems = true)` to be a bit more explicit " +11045 area-System.Xml XML .Save() method missing option to use filename It seems that System.IO.Stream, System.IO.TextWriter, and System.Xml.XmlWriter are still options, but using string filename has been removed. +11046 area-System.Security X509Certificate2/OpenSSL: Unable to open PKCS#12 files with no password and no MAC "If you have a PKCS#12 file which is not protected with a password, and which does not have a MAC entry, opening the file will work on Windows but fails on Linux and Mac (which use OpenSSL). The following program reproduces the behavior: ``` using System; using System.IO; using System.Security.Cryptography.X509Certificates; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { byte[] rawData = Convert.FromBase64String( ""MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCA+gwgDCABgkqhkiG9w0BBwGggCSABIID6DCCBRUwggURBgsqhkiG9w0BDAoBAaCCBMAwggS8AgEAMA0GCSqGSIb3DQEBAQUABIIEpjCCBKICAQACggEBAJ9Iw1KuIXuQBnQA3GvlPu2yvXZU8BbM6yBwuypsUdOk4isb8S2+CI/p3Ez8yWMb+HZLQ1QBXDvk2VzZUIJH+xY1oWqu7Hvo9iADkltKbfZ1yjfG5Dy7FatNnVHlGoq7HTK9WlxEVZutrHdpBKHNdHWoXr0xqxS4YtcXnnBZMLlDpVhxUJ6L/X0WRHY52QcLp6ZYfAObU1+l+Ihh7OVP1r8c0HmIH+qL3FaQplhrNjFr6qrCarA42DZjcgShuNOfuvhEJejmgOL7QS0j8h2sT/Fa5oDNwRNJV5vrni8GPbjd4Sbch+90+Oz39tyO8ecvIsKKak67oUbR80EyXNjb0eMCAwEAAQKCAQA8C/AmQSK6NAdav+BYhGl+rj0iWM7RqZqR9i14xrDqOmRQoA4Bknwj1KOKGlnJFQhLf//3sTOWGKWgjQP+uSf8rWcWkq7v31i5pN8NrzdZC/qZoE72XgjDNVUzRE0HM5bERAHGerRTJdu4gEyQuqVGnZxpcknuW7xXHb5K2DS4AiIDfkU9iqkUxa/hEG4HpueBgXv14oRa5z4hPzTbiIcej18f1n3IJA1SsATZ3RjU5B52ni/lYALufdnAJeBycLDU9m7UbqTfXSpb2uWM9yJKCOALHQZzE50/pW3DRQpdfbkoaMucoHqUSsLSbTLkYduHoxb9Bi7A6tgRTQFtOvfhAoGBANC639cEiE4xScrD3s9A/5/8pRoN8ojLEVDk44igGMHz+usHfxxp8YQvmYd5US1P6qPAX1scHKqHDbokd7aDh/5L7TKlwxo+iv7aOPQWJbpEmtsXASsMYfKneifUUxA47GtEYLHQ9Yy3kAratTaHH9K3a6x3wbsk815p77hlRygbAoGB"" + ""AMNbRSmmx/53b1YV6LxOuxzRSyCP5qYswlG2i7H6A+MLmUnxYurFvSptk+vEngmbOJW9rd49bHrK6PUtKBNYLxRWjRUtkgK2Z9PQguc8GD0W7SjHZafpFPETVdKxIVP6a18RB5jNvIuOPA8Z09/Kh80dw9dEPXs1EFQubxEFQ6nZAoGAOZsJgcb/c00JB4vNJzfSFK5eRnWI9RXOHpw864z7qDOUkV7NRuM6Q3f7kDb8H1xJ7o1+A6AbjTieojvESju8wYLk4LB8yvZt1+4T/9FI8kJS1ppfuSi+s4BjJzDjB7weC3CgmxKHYiGbAFPh5T2fm8EBV2Tps6N8AxeLkEFrBIID6ET3AoGAWmveYV7+5rtlXxUY+j/+v2HoBIIBMUIUGRAFW5PyyEoCjNYEQllFTyGXkO0YdwUDppqPq+szNkzNZW6YiKci1Y/Om0vwm7CXvSNgRkJ2GoDpAdcUy4S6dkT3z2eeKXUx41k5aYVBHqENaR23IfljXPwShDTeeA0lWseyUfKE44efRihRAoGAYn+PAVLDWmSKMm6rJDbJne12NYviqOa6n3ZJg0N9I8o0C/xFX1o/IzJF0EPdyVlCj/laIYoUX3O1P5I8YeubcR/JvY/LnCMutgsWlkdbz5c9gfbFVaEXXQPFyKuSaMea6pn+kv9EYtVfgiQ4rZ4aZwe0CWkzfDvIE6AGYgMICMIxPjAXBgkqhkiG9w0BCRQxCh4IAGMAZQByAHQwIwYJKoZIhvcNAQkVMRYEFO3z0SLPYjzwz8nNImJh6EFag+YwAAAAAAAAMIAGCSqGSIb3DQEHAaCAJIAEggPoMIIGETCCBg0GCyqGSIb3DQEMCgEDoIIFvDCCBbgGCiqGSIb3DQEJFgGgggWoBIIFpDCCBaAwggSIoAMCAQICCBulrjADvm1lMA0GCSqGSIb3DQEBBQUAMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECgwKQXBwbGUgSW5jLjEsMCoGA1UECwwjQXBwbGUgV29ybGR3a"" + ""WRlIERldmVsb3BlciBSZWxhdGlvbnMxRDBCBgNVBAMMO0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDExMjEyMTIxMFoXDTE2MDExMjEyMTIxMFowgZMxGjAYBgoJkiaJk/IsZAEBDApSSlhWVEU4NjUzMTgwNgYDVQQDDC9pUGhvbmUgRGV2ZWxvcGVyOiBGcmVkZXJpayBDYXJsaWVyICg4VDlVS1VCR1k5KTETMBEGA1UECwwKVENESzVFTEFINzEZMBcGA1UECgwQRnJlZGVyaWsgQ2FybGllcjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfSMNSriF7kAZ0ANxr5T7tsr12VPAWzOsgcLsqbFHTpOIrG/EtvgiP6dxM/MljG/h2S0NUAVw75Nlc2VCCR/sWNaFqrux76PYgA5JbSm32dco3xuQ8uxWrTZ1R5RqKux0yvVpcRFWbrax3aQShzXR1qF69MasUuGLXF55wWTC5Q6VYcVCei/19FkR2OdkHC6emWHwDm1NfpfiIYezlT9a/HNB5iB/qi9xWkKZYazYxa+qqwmqwONg2Y3IEggOgBKG405+6+EQl6OaA4vtBLSPyHaxP8VrmgM3BE0lXm+ueLwY9uN3hJtyH73T47Pf23I7x5y8iwopqTruhRtHzQTJc2NvR4wIDAQABo4IB8TCCAe0wHQYDVR0OBBYEFO3z0SLPYjzwz8nNImJh6EFag+YwMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUiCcXCam2GGCL7Ou69kdZxVJUo7cwggEPBgNVHSAEggEGMIIBAjCB/wYJKoZIhvdjZAUBMIHxMIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW"" + ""5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCAEggItY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjApBggrBgEFBQcCARYdaHR0cDovL3d3dy5hcHBsZS5jb20vYXBwbGVjYS8wTQYDVR0fBEYwRDBCoECgPoY8aHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vY2VydGlmaWNhdGlvbmF1dGhvcml0eS93d2RyY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzATBgoqhkiG92NkBgECAQH/BAIFADANBgkqhkiG9w0BAQUFAAOCAQEAaIuMydHST4l1fMsaXr51Ejqa00fB3PNY9Rw6oG1cWkSS6RgxAz7AJ7dJCO0tZdqPCX6VKnTHhgMlQrI8tIfU2WcG+sV3tvnAysqRtDPqhHWiR4judlp0ETzoLHJFDbbnEph3NpOYVfUwyCthYL/xv3cF9ohcHvfS02O4MsQl1QKhUzLXEOnjUGgPIb7xmGIP54+TNePhEdOi05ijKr1AO4BgCKjeu7tHYvIuyY9HGOfGyuXsoDrP6F+Jj3VRvYCCZuKIvDnocGHsi9AgaxuOSdp5GQOD6OQvXaOPeJNLf8+1Z1S4h/9lS6VubqH+tp9nvgUuq+zbmHv5iqRadMmz4TE+MBcGCSqGSIb3DQEJFDEKHggAYwBlAHIAdDAjBgkqhkiG9w0BCRUxFgQU7fPRIs9iPPDPyc0iYmHoQVqD5jAAAAAAAAAAAAAAAAAAAAAA""); File.WriteAllBytes(@""rawData.bin"", rawData); var certificate = new X509Certificate2( rawData: rawData, password: null, keyStorageFlags: X509KeyStorageFlags.Exportable); Console.WriteLine(certificate.SerialNumber); } } } ``` The output on Windows: ``` 1BA5AE3003BE6D65 ``` and on Linux: ``` Unhandled Exception: Interop+Crypto+OpenSslCryptographicException: error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure at Internal.Cryptography.Pal.OpenSslPkcs12Reader.Decrypt(String password) at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(OpenSslPkcs12Reader pfx, String password, Boolean single, ICertificatePal& readPal, List`1& readCerts) at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(Byte[] rawData, String password, Boolean single, ICertificatePal& readPal, List`1& readCerts) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) at ConsoleApplication.Program.Main(String[] args) ``` You can get the same error message by running OpenSSL directly on the `rawData.bin` file (don't provide a password): ``` openssl.exe pkcs12 -info -in rawData.bin WARNING: can't open config file: /usr/local/ssl/openssl.cnf Enter Import Password: Mac verify error: invalid password? 20876:error:2307E06C:PKCS12 routines:PKCS12_verify_mac:mac absent:.\crypto\pkcs12\p12_mutl.c:119: 20876:error:2307E06C:PKCS12 routines:PKCS12_verify_mac:mac absent:.\crypto\pkcs12\p12_mutl.c:119: ``` However, OpenSSL will correctly inspect the file if you pass the `-nomacver` option: ``` openssl.exe pkcs12 -info -in rawData.bin -nomacver WARNING: can't open config file: /usr/local/ssl/openssl.cnf Enter Import Password: PKCS7 Data Key bag Bag Attributes friendlyName: cert localKeyID: ED F3 D1 22 CF 62 3C F0 CF C9 CD 22 62 61 E8 41 5A 83 E6 30 Key Attributes: Enter PEM pass phrase: PKCS7 Data Certificate bag Bag Attributes friendlyName: cert (...) -----END CERTIFICATE----- ``` The issue seems to be caused by the absence of a MAC entry in the file. Based on [RFC7292](https://tools.ietf.org/html/rfc7292#section-5.1), I believe that's valid, and BouncyCastle [creates PKCS#12 files without MAC entries if no password is provided](https://github.com/bcgit/bc-csharp/blob/master/crypto/src/pkcs/Pkcs12Store.cs#L959). So net, because - This file was created by Bouncy Castle, which emits the MAC entry if it is not password protected - That seems to be compliant with the RFC - The file loads correctly on Windows - The file loads correctly using OpenSSL if you specify the `-nomacver` flag I would expect .NET Core on Linux & Mac to also be able to read this file. " +11048 area-System.Reflection Exception message for AmbiguousMatchException should include the name Fundamentally, this is an indication of a bad argument, without telling you what the bad value is, which usually demands that you fire up the debugger to figure it out. It would be helpful to know what the ambiguous name actually was. ``` System.Reflection.AmbiguousMatchException : Ambiguous match found. Stack Trace: at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers) at System.Type.GetMethod(String name) ``` +11050 area-System.Security X509Certificate2/OpenSSL: Subject includes incorrectly-encoded UID attribute "If the Subject of a certificate includes a UID (OID 0.9.2342.19200300.100.1.1) attribute, this attribute is encoded incorrectly in the string representation of the Subject DN as `userId` instead of `UID`. ``` dotnet run Project certificates (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. C=US, O=Quamotion sprl, OU=PWWS5TKNBM, CN=iPhone Distribution: Quamotion sprl (PWWS5TKNBM), userId=PWWS5TKNBM ``` Valid representations are those returned by `X509Certificate2.Subject` on full .NET: ``` dotnet run Project certificates (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. C=US, O=Quamotion sprl, OU=PWWS5TKNBM, CN=iPhone Distribution: Quamotion sprl (PWWS5TKNBM), OID.0.9.2342.19200300.100.1.1=PWWS5TKNBM ``` and by `openssl.exe`: ``` openssl x509 -inform der -in rawdata.bin -subject subject= /UID=PWWS5TKNBM/CN=iPhone Distribution: Quamotion sprl (PWWS5TKNBM)/OU=PWWS5TKNBM/O=Quamotion sprl/C=US ``` I believe that [RFC4514 String Representation of Distinguished Names](https://www.ietf.org/rfc/rfc4514.txt) describes how the subject of a certificate should be represented, and it states the following: > _2.3. Converting AttributeTypeAndValue_ > If the AttributeType is defined to have a short name (descriptor) > [RFC4512] and that short name is known to be registered [REGISTRY] > [RFC4520] as identifying the AttributeType, that short name, a > , is used. Otherwise the AttributeType is encoded as the > dotted-decimal encoding, a , of its OBJECT IDENTIFIER. > The and are defined in [RFC4512]. and section 3 contains the following: > Implementations MUST recognize AttributeType name strings > (descriptors) listed in the following table, but MAY recognize other > name strings. > > | String | X.500 AttributeType | > | --- | --- | > | UID | userId (0.9.2342.19200300.100.1.1) | and [RFC4519](https://www.ietf.org/rfc/rfc4519.txt) finally defines the `UID` attribute: > 0.9.2342.19200300.100.1.1 NAME 'uid' > EQUALITY caseIgnoreMatch > SUBSTR caseIgnoreSubstringsMatch > SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) (`userId` was used in RFC 1274 which RFC 4519 supersedes). This program can be used to reproduce the behavior: ``` using System; using System.IO; using System.Security.Cryptography.X509Certificates; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { byte[] rawData = Convert.FromBase64String(""MIIFnzCCBIegAwIBAgIIdo+s3oP49T8wDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwMjA4MTU0MzQwWhcNMTcwMjA3MTU0MzQwWjCBkjEaMBgGCgmSJomT8ixk"" + ""AQEMClBXV1M1VEtOQk0xOTA3BgNVBAMMMGlQaG9uZSBEaXN0cmlidXRpb246IFF1YW1vdGlvbiBzcHJsIChQV1dTNVRLTkJNKTETMBEGA1UECwwKUFdXUzVUS05CTTEXMBUGA1UECgwOUXVhbW90aW9uIHNwcmwxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsZRJE85+iTE/tODPi98Xn82C/oCtB97dTHToWoaQRA4kNCNmreedVnTFLGHa5JnKIBtMao+0qPkWxn/o76PuzlRa0r1oXcwwkgAYUE6S8Okzd9PmOGeXhunpuwPNRmyBJ0+oeo0UTg"" + ""UY97YUvypvrg6z8ZJpcXGICP6bCaHm8XjPaNPJRH8HCL56HPULtq+9Vt+xMCcCgt4joRFtvzEA8m3vItenUQvVrHI6kyjYcfQh/ANvSXWZyAkDQ1T1AqrljZ1SK/BTH4uIENWu32GglLFJj3UVed3FWO2uy6GYjarhcRkwmYbztJcMc5vLHyBesPPDqpWPmTjk5CvY8qYxTwIDAQABo4IB8TCCAe0wHQYDVR0OBBYEFMXm/a/Rf5kzjcap9LxSO7aYNzVdMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUiCcXCam2GGCL7Ou69kdZxVJUo7cwggEPBgNVHSAEggEGMIIBAjCB/wYJKoZI"" + ""hvdjZAUBMIHxMIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3LmFwcGxlLmNvbS9hcHBsZWNhLzBNBgNVHR8ERjBEMEKgQKA+hj"" + ""xodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9jZXJ0aWZpY2F0aW9uYXV0aG9yaXR5L3d3ZHJjYS5jcmwwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMBMGCiqGSIb3Y2QGAQQBAf8EAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQCPqzl6lemCu/TUdag7qnCP81c++y6E29gFy+dWJ1sYx/heytn5TX+Byd3OdEz2/DoSkhbNswLwuZ1SLfjJs1L/1FC5y8D9W5oaMTnbToqIcYY6jLLIkV3ALvBf08ReKdh+875yvE9vsPC0Uzfljh/nrZ/1104POJiTYLHrbIAa"" + ""5sEOxrn/lGhH6hGPkmMKHRqMh7v++Z12tat63Ul0mZNCqrShBQi+mH7jV7nik/gZVZW+knxtfcGuDsSZZHLRSGpa6JUe7qCJQ8Y8r5QZqXJGdue11VFGq7/H+L/bQ4X0QxYq9IweD12DoTGWu/UXaL62w868wec808VNOKynDFBS""); File.WriteAllBytes(""rawdata.bin"", rawData); var certificate = new X509Certificate2( rawData: rawData, password: null, keyStorageFlags: X509KeyStorageFlags.Exportable); Console.WriteLine(certificate.Subject); } } } ``` " +11055 area-Serialization Investigate if type KeyValuePairAdapter need a different type. Refer #10598 and see if we need do the same thing for KeyValuePairAdapter. +11056 area-Serialization Add test coverage for issue#10598 Need add test coverage for #10598 +11057 area-Meta build/test issues on Ubuntu on Windows "Tracking current issues blocking CoreFx testing on Ubuntu on Windows: (Note that basically nothing works prior to rs_preview build 14905, which introduced ""restartable syscall"" support.) rs_preview build 14936 has a [known bug](https://msdn.microsoft.com/en-us/commandline/wsl/release_notes#build-14936) that causes a BSOD when running our networking tests. - [x] Need to update the dotnet cli to a more recent version with the ""execstack"" bit set correctly on native modules (https://github.com/dotnet/corefx/issues/11058). - [x] System.Diagnostics.Process: https://github.com/Microsoft/BashOnWindows/issues/967. - [x] System.Diagnostics.Process: https://github.com/Microsoft/BashOnWindows/issues/968. - [x] System.Diagnostics.Process: https://github.com/Microsoft/BashOnWindows/issues/974 - [x] System.Diagnostics.Process: https://github.com/dotnet/corefx/issues/11072. - [x] System.IO.Pipes: _hangs_ due to https://github.com/Microsoft/BashOnWindows/issues/975. - [x] System.IO.Pipes: https://github.com/Microsoft/BashOnWindows/issues/1011 - [ ] System.IO.Pipes: https://github.com/Microsoft/BashOnWindows/issues/1012 - [x] System.Net.Sockets: https://github.com/Microsoft/BashOnWindows/issues/982. - [x] System.Net.Sockets: https://github.com/Microsoft/BashOnWindows/issues/987 - [ ] System.Net.Sockets: https://github.com/Microsoft/BashOnWindows/issues/989 - [x] System.Net.Sockets: https://github.com/Microsoft/BashOnWindows/issues/990 - [ ] System.Linq.Tests crashes due to https://github.com/Microsoft/BashOnWindows/issues/513 - [ ] System.Linq.Expressions.Tests crashes due to https://github.com/Microsoft/BashOnWindows/issues/513 - [ ] System.Numerics.Vectors.Tests crashes due to https://github.com/Microsoft/BashOnWindows/issues/513 - [ ] System.Runtime.Numerics.Tests crashes due to https://github.com/Microsoft/BashOnWindows/issues/513 - [ ] System.Dynamic.Runtime.Tests crashes due to https://github.com/Microsoft/BashOnWindows/issues/513 - [x] System.IO.FileSystem.Tests: https://github.com/Microsoft/BashOnWindows/issues/1008 - [x] System.IO.FileSystem.Watcher.Tests: https://github.com/Microsoft/BashOnWindows/issues/216 (fixed in Windows build 14926) - [x] System.IO.FileSystem.DriveInfo.Tests: https://github.com/dotnet/corefx/issues/11570 - [x] System.Net.Ping.Functional.Tests: https://github.com/Microsoft/BashOnWindows/issues/561 (fixed in Windows build 14926) - [x] System.Net.NetworkInformation.Functional.Tests: https://github.com/Microsoft/BashOnWindows/issues/308 - [x] Intermittent failures in System.Net.Http tests: https://github.com/Microsoft/BashOnWindows/issues/1068. ## Still need investigation: - [ ] NuGet package restore occasionally hangs. Killing it and retrying usually gets past this. - [ ] Intermittent hangs in System.Net.Http tests. " +11063 area-System.Net HttpClient.SendAsync null exception "I am building an ASP.NET core web api which is using HttpClient from some custom middleware to call a service endpoint using SendAsync. If the endpoint is available it works perfectly. If the endpoint is unavailable for any reason (wrong url for example) then I get back a null exception within my catch, ``` try { var request = new HttpRequestMessage(HttpMethod.Get, ""http://someurl.com""); request.Headers.Authorization = new AuthenticationHeaderValue(""Bearer"", token); var response = await _httpClient.SendAsync(request).ConfigureAwait(false); if (response.IsSuccessStatusCode) { var payload = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var responseModel = JsonConvert.DeserializeObject(payload); if (!string.IsNullOrEmpty(responseModel?.Result)) { // do stuff } } } catch (Exception ex) { // ex is null } ``` " +11067 area-System.Net System.Net.Security: add SslStream overloads without SslProtocols, new HashAlgorithmType enums Add the following new APIs that allow applications to rely on the underlying OS TLS protocol version defaults: - [ ] AuthenticateAsClientAsync(String, X509CertificateCollection, Boolean) - [ ] AuthenticateAsServerAsync(X509Certificate, Boolean, Boolean) Add HashAlgorithmType: - [ ] Sha256 - [ ] Sha384 - [ ] Sha512 +11071 area-Infrastructure Files in use warning Running in Posh-Git `.\build` I'm getting the following: ``` S:\c2\Tools\net45\roslyn\tools\Microsoft.CodeAnalysis.CSharp.dll - Access is denied. S:\c2\Tools\net45\roslyn\tools\Microsoft.CodeAnalysis.dll - Access is denied. S:\c2\Tools\net45\roslyn\tools\Microsoft.CodeAnalysis.VisualBasic.dll - Access is denied. S:\c2\Tools\net45\roslyn\tools\Microsoft.DiaSymReader.Native.amd64.dll - Access is denied. S:\c2\Tools\net45\roslyn\tools\System.Reflection.Metadata.dll - Access is denied. S:\c2\Tools\net45\roslyn\tools\VBCSCompiler.exe - Access is denied. S:\c2\Tools\net45\roslyn\tools - The process cannot access the file because it is being used by another process. ``` Did some investigation and found that the VBCSCompiler.exe is holding these: ``` S:\c2 [ssl ≡]> C:\sysint\handle.exe S:\c2\Tools\net45\roslyn\tools\Microsoft.CodeAnalysis.CSharp.dll Handle v4.0 Copyright (C) 1997-2014 Mark Russinovich Sysinternals - www.sysinternals.com VBCSCompiler.exe pid: 776 type: File 510: S:\c2\Tools\net45\roslyn\tools\Microsoft.CodeAnalysis.CSharp.dll ``` Killing the process makes everything work. I may have stopped a build using Ctrl+C at some time prior to getting this. @weshaggard @ellismg PTAL +11072 area-System.Diagnostics System.Diagnostics.ProcessThread.StartAddress reports incorrect address on Linux "We get the value of `ProcessThread.StartAddress` by looking at `/proc/[pid]/task/[tid]/stat`, parsing out the `startstack` field from that file. However, this gives the address of the _stack_, not the [""...address of the function that the operating system called that started this thread.""](https://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.startaddress%28v=vs.110%29.aspx) It doesn't look to me like the value we need here is actually available on Linux or OSX. From the test code, it looks like we already expect `null` on OSX. Maybe we should change the Linux implementation to return `null` as well, or change both to throw `PlatformNotSupportedException`. " +11073 area-Serialization Optimize Code using Enum.Parse ReflectionXmlSerializationReader uses Enum.Parse when deserializing enum values. Enum.Parse is VERY VERY slow. We will need to replace this with something better in the long run. +11075 area-System.Globalization Port Remainder of TimeZoneInfo There are some members in TimeZoneInfo that still need to be implemented, for they require a Linux implementation: ``` M:System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId(System.DateTime,System.String) M:System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId(System.DateTime,System.String,System.String) M:System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId(System.DateTimeOffset,System.String) ``` +11079 area-System.Diagnostics Fix ProcessThread.StartAddress on Linux "On Linux, we were reporting the starting _stack_ address for a thread via `ProcessThread.StartAddress`. This property is supposed to return the _code_ address of the start of the thread. We have no way of getting that info on Linux, so we'll just report it as `IntPtr.Zero`, as we already do on OSX (and apparently sometimes on Windows). This change also reworks the test for this property to be more permissive of address values. We already accepted `IntPtr.Zero` on Windows/OSX, and now on Linux. We previously failed on ""negative"" address values, but this doesn't make sense, as addresses are really unsigned. We really just need to allow any value here. Fixes #11072 @stephentoub " +11082 area-System.Security System.Security.Claims.Claim value type incorrect The type of [`System.Security.Claims.Claim.Value`](https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/Claim.cs#L301) is to `string` which is contrary to the [spec](https://tools.ietf.org/html/rfc7519#section-2): > Claim Value > The value portion of a claim representation. A Claim Value can be > **any JSON value**. This is big problem for us while creating a .NET Core app for a large established ecosystem where JWTs have object claims. The problem is exacerbated by the fact that now System.IdentityModel.Tokens.Jwt library is dependent on this implementation in the way it deserialises JWTs into `ClaimsIdentity` and then into `ClaimsPrincipal`... (e.g. [here](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/src/System.IdentityModel.Tokens.Jwt/JwtSecurityTokenHandler.cs#L866) or [here](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/src/System.IdentityModel.Tokens.Jwt/JwtSecurityTokenHandler.cs#L893)) +11087 area-System.IO Cannot debug System.IO.Compression under Visual Studio I'm trying to pinpoint what appears to be a bug in .NET Core, where the `Stream` returned for a `ZipEntry` is truncted by a couple of bytes in a very rare scenario. The behavior is different from NetFX and the NetFX behavior seems to be the correct one. I've done the following - `git clone corefx` - `init-tools.cmd` - `build.cmd` That builds the repo & the tests pass, so I'm pretty sure the checkout I have is in a consistent state. Next, I - Open `src\System.IO.Compression\System.IO.Compression.sln` with Visual Studio 2015 Update 3 which also has the Windows 10 tools installed. - Set the configuration to `Debug_Windows` - Set `System.IO.Compression.Tests` as the Startup project - Hit F5 to start debugging At this point, the tests load correctly and I can set breakpoints and step through the test project. However, for the `System.IO.Compression.dll` assembly itself, it seems that the test project takes the assembly from a NuGet package rather than the version which was just built by Visual Studio: - In the Modules window, the timestamp for the `System.IO.Comrpession.dll` indicates it was built to days ago - The symobls are not loaded, and when trying to load the symbols, the original path is set to `D:\A\_work\4\s\bin\obj\Windows_NT.AnyCPU.Release\System.IO.Compression\System.IO.Compression.pdb`, which looks like a build server path So, I'm sure I've missed something that caused the test to run against a NuGet package instead of the `System.IO.Compression.dll` which I built locally, but I can't figure out what. Any guidance? I read through the Developer Guide but couldn't find much +11088 area-System.Net ReuseUnicastPort_CreateSocketSetOption_NoSocketsReuseUnicastPortSupport_Throws failing in CI Appears to be failing all Windows builds, e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug/1115/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3747/consoleText http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release/1113/ ``` System.Net.Sockets.Tests.SocketOptionNameTest.ReuseUnicastPort_CreateSocketSetOption_NoSocketsReuseUnicastPortSupport_Throws [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: (No exception was thrown) Stack Trace: D:\j\workspace\windows_nt_debug88592b53\src\System.Net.Sockets\tests\FunctionalTests\SocketOptionNameTest.cs(56,0): at System.Net.Sockets.Tests.SocketOptionNameTest.ReuseUnicastPort_CreateSocketSetOption_NoSocketsReuseUnicastPortSupport_Throws() ``` cc: @davidsh, @cipop, @ericeil +11090 area-System.Runtime Make RuntimeHelpers.TryEnsureSufficientExecutionStack public This method is very handy to detect upcoming stack overflows in recursive algorithms without the need for exception handling logic. Note that `TrySetFromTask` in https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Threading.Tasks/src/System/Threading/Tasks/TaskExtensions.CoreCLR.cs has a remark on the possibility for this method to become public. Another place where this would have been useful is in the suggested fix for #7953 . +11091 area-System.Linq Probe for sufficient stack during expression tree compilation recursion When compiling deep expression trees, we run into `StackOverflowException` which terminates the process. There are four recursive algorithms used for compilation/interpretation: - Stack spilling, a custom visitor with recursive method `RewriteExpression` - Variable binding, a classic expression visitor with recursive method `Visit` - Lambda compiler, a custom tree traversal with recursive method `EmitExpression` - Light compiler, a custom tree traversal with recursive methods `CompileExpression[AsVoid]` A repro is compiling a deep expression tree, such as a binary expression: ``` csharp var e = (Expression)Expression.Constant(0); var n = 10000; for (var i = 0; i < n; i++) e = Expression.Add(e, Expression.Constant(1)); var f = Expression.Lambda>(e).Compile(useInterpreter); ``` This fails regardless of the `useInterpreter` flag. There are three possible approaches: - Don't do anything; these trees could be considered rare enough to warrant a change. However, it seems EF has run into this (see #7953 for more info) and the outcome is process termination triggered by a carefully crafted web request (DoS attack potential). It'd still be interesting to see whether the generated EF tree can be flattened. - Trade the `StackOverflowException` for another exception type that can be caught by users, so it doesn't terminate the process. This is similar to what WPF does in e.g. `Control.FindControl` by using `RuntimeHelpers.EnsureSufficientExecutionStack`, or what Roslyn does when it raises compilation error `ERR_InsufficientStack`. - Use the mechanism used to detect an upcoming stack overflow (e.g. by counting levels of recursion or by using `RuntimeHelpers.EnsureSufficientExecutionStack`) and mitigate the issue by borrowing the stack of another thread. This is similar to `TrySetFromResult` in https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Threading.Tasks/src/System/Threading/Tasks/TaskExtensions.CoreCLR.cs This PR uses the latter approach and hardens the four places where unbounded recursion can lead to stack overflow conditions by using `RuntimeHelpers.EnsureSufficientExecutionStack` and jumping to another thread to continue the computation when this condition is met. Ideally, we'd see the `TryEnsureSufficientExecutionStack` method become public so we can do away with the exception handling logic (see #11090). +11093 area-Infrastructure Remove System.Runtime dependency in System.Runtime.Extensions Use the System.Runtime package once published instead. https://github.com/dotnet/corefx/blob/dev/api/src/System.Runtime.Extensions/ref/System.Runtime.Extensions.csproj#L17 +11094 area-Infrastructure Remove reference to live package of System.Runtime.Extensions in System.Runtime.Tests Remove once prerelease gets updated again https://github.com/dotnet/corefx/blob/dev/api/src/System.Runtime/tests/System.Runtime.Tests.csproj#L119 +11095 area-System.Net Disable NoSocketsReuseUnicastPortSupport tests Fixes #11088 +11096 area-System.Linq ConstantCheck.IsNull can check for DefaultExpression as well Noticed when analyzing some generated IL code for binary expressions performing comparisons against `Expression.Default(type)` where `type` is a reference type or a nullable value type. The `ConstantCheck.IsNull` method does only consider `ConstantExpression` to check for a `null` constant value, though `DefaultExpression` would be worth checking for as well. We have an `IsNullableOrReferenceType` helper method that can be used for this purpose. Note that `ConstantCheck` appears in both the compiler and the interpreter. For platforms that support both, we can reduce code size by moving these utilities into common files (see https://github.com/dotnet/corefx/issues/11097). +11097 area-System.Linq Reduce code duplication in expression compiler and interpreter A good example is the `ConstantCheck` class which seems to occur twice. For platforms that support both compilation and interpretation, we can reduce code size by sharing the code. +11098 area-Meta "Add ""CurrentBranch"" to dependency verification to make dev/api merge cleaner" This tracks picking up the feature merged into buildtools with https://github.com/dotnet/buildtools/pull/978 that adds an auto-updated `CurrentBranch` property for each build info. It would make a merge from dev/api back into master cleaner. The idea behind it is described here: https://github.com/dotnet/corefx/pull/10970#discussion_r75404356. I have to look into how this will practically affect the merge and how the change needs to flow in git for the best effect. It would be possible to do this as part of https://github.com/dotnet/corefx/pull/10970 but I'd rather not block on it. /cc @weshaggard +11100 area-System.Net Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible. "Using the latest System.Net.Http 4.1.1 as per https://github.com/dotnet/corefx/issues/9846#issuecomment-242131706, results in an exception when starting a web app that's .NET 4.6.1: Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible. I've emailed a repro to @davidsh ----------------------------------------------------------------------------- ## Execution plan & status [UPDATED by karelz] **High-level plan:** A. Revert HttpClientHandler implementation in net46 build of CoreFX back to using original .NET Framework HTTP stack instead of WinHTTP (WinHttpHandler) based stack. B. Revise implementation of the 8 new APIs on HttpClientHandler we introduced in 4.1.0.0 OOB package so that it works accordingly for the net46 build. **Execution plan:** 1. Validate feasibility of [A] - [x] a. Port HttpClientHandler from NetFX (remove WinHttpHandler build dependency for net46 build). - [x] b. Add APTCA (on assembly only, no security attributes should be necessary for types or methods - same as in Desktop source code). - [x] Run the SecAnnotate tool to verify the claim above - Result: Passed - [x] c. Manually test the 2 scenarios (simplified and @onovotny’s) - Result: Verified 2. Validate feasibility of [B] - [x] a. Investigate the 2 remaining APIs (DefaultProxyCredentials, MaxConnectionsPerServer) which we do not know if we can implement. - Result: They are in the bucket 4.a below. 3. Full testing of [A] implementation (cost: 1d) - [x] a. Make changes in master - [x] b. Test all ~7 end-to-end scenarios reported by community (ask for help from community, provide steps to consume master packages on myget) - [x] Self hosting ASP.NET Core from Windows Service - validated by @annemartijn0 ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-275090982)) - [x] Azure Storage API - validated by @karelkrivanek ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-275933182)) - [x] Raven.Database package + usage of new HttpClientHandler - validated by @jahmai ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-275960251)) - [x] Direct dependency on System.Net.Http - validated by @pollax ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-276047076)) - [x] 4.6 console app depending on System.Net.Http - validated by @MikeGoldsmith ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-276066197)) - [x] 4.6 Azure webjob (console app) with ServiceBus - validated by @chadwackerman ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-276247013)) - [x] 4.6 Azure Batch app - validated by @chadwackerman ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-276247013)) - [ ] Not-yet-described scenario by @dluxfordhpf 4. Full implementation and testing of [B] - [x] a. Decide on design of 4 APIs (CheckCertificateRevocationList, SslProtocols, DefaultProxyCredentials, MaxConnectionsPerServer) which we can’t implement “correctly” - we have 3 choices - either throw PlatformNotSupportedException, or do nothing, or set the properties domain-wide instead of per-HttpClient-instance - [x] i. Implement the decision (cost: 2d) - [x] ii. List all libraries on NuGet (e.g. WCF?) which use the APIs we will be technically breaking, contact them * 4 NuGet libraries potentially affected - owners contacted - see [details and tracking progress](https://github.com/dotnet/corefx/issues/11100#issuecomment-276293185) - [x] b. Implement 5 APIs which we know how to implement (cost: 3d) - [x] c. Final testing on master branch package - covered by [3.b] 5. Ship final packages - [x] a. Port changes into release/1.1.0 branch - [x] b. Produce new package - 4.3.1 - [ ] c. Test most of ~7 end-to-end scenarios reported by community (ask for help from community, provide steps to consume 4.3.1 stable package from myget feed - see [here](https://github.com/dotnet/corefx/issues/11100#issuecomment-279129949)) - [ ] Self hosting ASP.NET Core from Windows Service - @annemartijn0 - [x] Azure Storage API - @karelkrivanek - [ ] Raven.Database package + usage of new HttpClientHandler - @jahmai - [x] Direct dependency on System.Net.Http - @pollax ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-279242162)) - [ ] 4.6 console app depending on System.Net.Http - @MikeGoldsmith - [ ] 4.6 Azure webjob (console app) with ServiceBus - [ ] 4.6 Azure Batch app - [ ] Not-yet-described scenario by @dluxfordhpf - [x] KeyVault - @Vhab ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-280832439)) - [x] SignalR - @tofutim ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-280874924)) - [x] OwlMQ - @JoeGordonMVP ([here](https://github.com/dotnet/corefx/issues/11100#issuecomment-280973308)) - [x] d. Publish package on nuget.org - https://www.nuget.org/packages/System.Net.Http/4.3.1 ----------------------------------------------------------- ## Impact of the change - Breaking changes Here's list of technical breaking changes caused by the proposed solution. It includes workarounds for each. Note that these new behaviors are specific when running on net46 / Desktop. When you run on .NET Core, the behavior is intact. 1. `HttpClientHandler.CheckCertificateRevocationList` (introduced in System.Net.Http 4.1) * New behavior: Throws `PlatformNotSupportedException` * Workaround: Use `ServicePointManager.CheckCertificateRevocationList` instead (impacts the whole AppDomain, not just single `HttpClientHandler` as it did in System.Net.Http 4.1-4.3) 2. `HttpClientHandler.SslProtocols` (introduced in System.Net.Http 4.1) * New behavior: Throws `PlatformNotSupportedException` * Workaround: Use `ServicePointManager.SecurityProtocol` instead (impacts the whole AppDomain, not just single `HttpClientHandler` as it did in System.Net.Http 4.1-4.3) 3. `HttpClientHandler.ServerCertificateCustomValidationCallback` (introduced in System.Net.Http 4.1) * New behavior: Works fine, except that the first parameter of type `HttpRequestMessage` is always `null` * Workaround: Use `ServicePointManager.ServerCertificateValidationCallback` 4. HTTP/2.0 support (introduced in System.Net.Http 4.1) * New behavior: System.Net.Http (for net46 = Desktop) no longer supports HTTP/2.0 protocol on Windows 10. * Workaround: Target System.Net.Http.WinHttpHandler NuGet package instead. * Details: * HTTP/2.0 support is part of the new CoreFx HTTP stack which on Windows is based on WinHTTP. The original HTTP stack in .NET Framework 4.6 did not support HTTP/2.0 protocol. If HTTP/2.0 protocol is needed, there is a separate NuGet package, System.Net.Http.WinHttpHandler which provides a new HttpClient handler. This handler is similar in features to `HttpClientHandler` (the normal default handler for HttpClient) but will support HTTP/2.0 protocol. When using HttpClient on .NET Core runtime, the WinHttpHandler is actually built-in to HttpClientHandler. But on .NET Framework, you need to explicitly use WinHttpHandler. * Regardless of whether you are running using .NET Framework runtime (with WinHttpHandler) or .NET Core runtime using HttpClientHandler (or WinHttpHandler), there are additional requirements in order to get HTTP/2.0 protocol working on Windows: * The client must be running on Windows 10 Anniversary Build (build 14393 or later). * The `HttpRequestMessage.Version` must be explicitly set to 2.0 (the default is normally 1.1). Sample code: ```c# var handler = new WinHttpHandler(); var client = new HttpClient(handler); var request = new HttpRequestMessage(HttpMethod.Get, ""http://www.example.com""); request.Version = new Version(2, 0); HttpResponseMessage response = await client.SendAsync(request); ```" +11105 area-System.Linq Some locals in the expression compiler and interpreter could be avoided See https://github.com/dotnet/corefx/pull/11091 for the full discussion. We have a bunch of places where we have a pattern like: ``` csharp private void CompileBinaryExpression(Expression expr) { var node = (BinaryExpression)expr; ``` We could perform the cast higher up and save a local. +11107 area-System.Security Coreclr crash due to double freeing Openssl handles Coreclr crashes due to a double Dispose of an openssl handle if the openssl function PKCS12_parse (called by Corefx's CryptoNative_Pkcs12Parse) returns false. When Openssl's PKCS12_parse fails, it frees the handles that it allocated into *pkey and *cert. But those output parameters do not get nulled by either Openssl or the corefx PAL shim and so the freed handles become valid managed handles. When those managed handles get disposed it leads to a second call to free on them, crashing coreclr. Repro: In theory it should be possible to write a test that exercises this, but you would need to come up with binary data that passes the initial call to d2i_PKCS12 but then fails in PKCS12_parse. This is beyond my meager time, understanding, and abilities. I encountered this issue when accidentally using a (crippled) version of Openssl that had rc2 support removed (./Configure no-rc2); in that case, PKCS12_parse would fail for all inputs, exposing the issue. Proposed Solution: Add an else block to the success check in CryptoNative_Pkcs12Parse that pushes nullptr into both *pkey and *cert. +11112 area-System.Security Port IsolatedStorage CAS members ``` T:System.Security.Permissions.IsolatedStorageContainment F:System.Security.Permissions.IsolatedStorageContainment.AdministerIsolatedStorageByUser F:System.Security.Permissions.IsolatedStorageContainment.ApplicationIsolationByMachine F:System.Security.Permissions.IsolatedStorageContainment.ApplicationIsolationByRoamingUser F:System.Security.Permissions.IsolatedStorageContainment.ApplicationIsolationByUser F:System.Security.Permissions.IsolatedStorageContainment.AssemblyIsolationByMachine F:System.Security.Permissions.IsolatedStorageContainment.AssemblyIsolationByRoamingUser F:System.Security.Permissions.IsolatedStorageContainment.AssemblyIsolationByUser F:System.Security.Permissions.IsolatedStorageContainment.DomainIsolationByMachine F:System.Security.Permissions.IsolatedStorageContainment.DomainIsolationByRoamingUser F:System.Security.Permissions.IsolatedStorageContainment.DomainIsolationByUser F:System.Security.Permissions.IsolatedStorageContainment.None F:System.Security.Permissions.IsolatedStorageContainment.UnrestrictedIsolatedStorage F:System.Security.Permissions.IsolatedStorageContainment.value__ ``` ``` T:System.Security.Permissions.IsolatedStorageFilePermission M:System.Security.Permissions.IsolatedStorageFilePermission.#ctor(System.Security.Permissions.PermissionState) M:System.Security.Permissions.IsolatedStorageFilePermission.Copy M:System.Security.Permissions.IsolatedStorageFilePermission.Intersect(System.Security.IPermission) M:System.Security.Permissions.IsolatedStorageFilePermission.IsSubsetOf(System.Security.IPermission) M:System.Security.Permissions.IsolatedStorageFilePermission.ToXml M:System.Security.Permissions.IsolatedStorageFilePermission.Union(System.Security.IPermission) ``` ``` T:System.Security.Permissions.IsolatedStorageFilePermissionAttribute M:System.Security.Permissions.IsolatedStorageFilePermissionAttribute.#ctor(System.Security.Permissions.SecurityAction) M:System.Security.Permissions.IsolatedStorageFilePermissionAttribute.CreatePermission ``` ``` T:System.Security.Permissions.IsolatedStoragePermission M:System.Security.Permissions.IsolatedStoragePermission.#ctor(System.Security.Permissions.PermissionState) P:System.Security.Permissions.IsolatedStoragePermission.UsageAllowed M:System.Security.Permissions.IsolatedStoragePermission.get_UsageAllowed M:System.Security.Permissions.IsolatedStoragePermission.set_UsageAllowed(System.Security.Permissions.IsolatedStorageContainment) P:System.Security.Permissions.IsolatedStoragePermission.UserQuota M:System.Security.Permissions.IsolatedStoragePermission.get_UserQuota M:System.Security.Permissions.IsolatedStoragePermission.set_UserQuota(System.Int64) M:System.Security.Permissions.IsolatedStoragePermission.FromXml(System.Security.SecurityElement) M:System.Security.Permissions.IsolatedStoragePermission.IsUnrestricted M:System.Security.Permissions.IsolatedStoragePermission.ToXml ``` ``` T:System.Security.Permissions.IsolatedStoragePermissionAttribute M:System.Security.Permissions.IsolatedStoragePermissionAttribute.#ctor(System.Security.Permissions.SecurityAction) P:System.Security.Permissions.IsolatedStoragePermissionAttribute.UsageAllowed M:System.Security.Permissions.IsolatedStoragePermissionAttribute.get_UsageAllowed M:System.Security.Permissions.IsolatedStoragePermissionAttribute.set_UsageAllowed(System.Security.Permissions.IsolatedStorageContainment) P:System.Security.Permissions.IsolatedStoragePermissionAttribute.UserQuota M:System.Security.Permissions.IsolatedStoragePermissionAttribute.get_UserQuota M:System.Security.Permissions.IsolatedStoragePermissionAttribute.set_UserQuota(System.Int64) ``` +11115 area-System.Security Port various CAS types ``` T:System.Security.SuppressUnmanagedCodeSecurityAttribute M:System.Security.SuppressUnmanagedCodeSecurityAttribute.#ctor ``` ``` T:System.Security.SecurityTreatAsSafeAttribute M:System.Security.SecurityTreatAsSafeAttribute.#ctor ``` The above two have usage and should be ported. ``` P:System.Security.AllowPartiallyTrustedCallersAttribute.PartialTrustVisibilityLevel M:System.Security.AllowPartiallyTrustedCallersAttribute.get_PartialTrustVisibilityLevel M:System.Security.AllowPartiallyTrustedCallersAttribute.set_PartialTrustVisibilityLevel(System.Security.PartialTrustVisibilityLevel) ``` ``` T:System.Security.PartialTrustVisibilityLevel F:System.Security.PartialTrustVisibilityLevel.NotVisibleByDefault F:System.Security.PartialTrustVisibilityLevel.value__ F:System.Security.PartialTrustVisibilityLevel.VisibleToAllHosts ``` ``` T:System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter M:System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter.#ctor ``` ``` T:System.Security.SecurityRulesAttribute M:System.Security.SecurityRulesAttribute.#ctor(System.Security.SecurityRuleSet) P:System.Security.SecurityRulesAttribute.RuleSet M:System.Security.SecurityRulesAttribute.get_RuleSet P:System.Security.SecurityRulesAttribute.SkipVerificationInFullTrust M:System.Security.SecurityRulesAttribute.get_SkipVerificationInFullTrust M:System.Security.SecurityRulesAttribute.set_SkipVerificationInFullTrust(System.Boolean) ``` ``` T:System.Security.SecurityRuleSet F:System.Security.SecurityRuleSet.Level1 F:System.Security.SecurityRuleSet.Level2 F:System.Security.SecurityRuleSet.None F:System.Security.SecurityRuleSet.value__ ``` +11116 area-System.Security Port T:System.Security.Cryptography.DESxx Okayed by the crypto board as it's so heavily used but it must be [EditorBrowsable(Never)] to strongly discourage its use. ``` T:System.Security.Cryptography.DES T:System.Security.Cryptography.DESCryptoServiceProvider ``` Usage is up to 6% of the tier 1. +11117 area-System.Security Port T:System.Security.Cryptography.RC2xx Port these as they're significantly used but apply [EditorBrowsable(Never)] to discourage new use. ``` T:System.Security.Cryptography.RC2 T:System.Security.Cryptography.RC2CryptoServiceProvider ``` Usage is ~1% of tier 1. +11118 area-System.Security Port T:System.Security.Cryptography.PasswordDeriveBytes PasswordDeriveBytes should be brought back, but as [EditorBrowsable(Never)] `T:System.Security.Cryptography.PasswordDeriveBytes` Usage is up to 5% of the top tier. +11121 area-System.Security M:System.Security.Cryptography.HMACSHA1.#ctor(System.Byte[],System.Boolean) Ignore boolean. Instructs implementation to use SHA1Managed, but we use a native HMAC implementation. Mark browseable.never. ''' M:System.Security.Cryptography.HMACSHA1.#ctor(System.Byte[],System.Boolean) ''' @bartonjs This is in 4% of the tier 1. Okay with bringing it? +11122 area-System.Security Port remainder of SecurityException ``` M:System.Security.SecurityException.#ctor(System.String,System.Object,System.Object,System.Reflection.MethodInfo,System.Object,System.Security.IPermission) M:System.Security.SecurityException.#ctor(System.String,System.Type) M:System.Security.SecurityException.#ctor(System.String,System.Type,System.String) P:System.Security.SecurityException.Action M:System.Security.SecurityException.get_Action M:System.Security.SecurityException.set_Action(System.Security.Permissions.SecurityAction) P:System.Security.SecurityException.Demanded M:System.Security.SecurityException.get_Demanded M:System.Security.SecurityException.set_Demanded(System.Object) P:System.Security.SecurityException.DenySetInstance M:System.Security.SecurityException.get_DenySetInstance M:System.Security.SecurityException.set_DenySetInstance(System.Object) P:System.Security.SecurityException.FailedAssemblyInfo M:System.Security.SecurityException.get_FailedAssemblyInfo M:System.Security.SecurityException.set_FailedAssemblyInfo(System.Reflection.AssemblyName) P:System.Security.SecurityException.FirstPermissionThatFailed M:System.Security.SecurityException.get_FirstPermissionThatFailed M:System.Security.SecurityException.set_FirstPermissionThatFailed(System.Security.IPermission) P:System.Security.SecurityException.GrantedSet M:System.Security.SecurityException.get_GrantedSet M:System.Security.SecurityException.set_GrantedSet(System.String) P:System.Security.SecurityException.Method M:System.Security.SecurityException.get_Method M:System.Security.SecurityException.set_Method(System.Reflection.MethodInfo) P:System.Security.SecurityException.PermissionState M:System.Security.SecurityException.get_PermissionState M:System.Security.SecurityException.set_PermissionState(System.String) P:System.Security.SecurityException.PermissionType M:System.Security.SecurityException.get_PermissionType M:System.Security.SecurityException.set_PermissionType(System.Type) P:System.Security.SecurityException.PermitOnlySetInstance M:System.Security.SecurityException.get_PermitOnlySetInstance M:System.Security.SecurityException.set_PermitOnlySetInstance(System.Object) P:System.Security.SecurityException.RefusedSet M:System.Security.SecurityException.get_RefusedSet M:System.Security.SecurityException.set_RefusedSet(System.String) P:System.Security.SecurityException.Url M:System.Security.SecurityException.get_Url M:System.Security.SecurityException.set_Url(System.String) P:System.Security.SecurityException.Zone M:System.Security.SecurityException.get_Zone M:System.Security.SecurityException.set_Zone(System.Security.SecurityZone) ``` +11123 area-System.IO Update IsolatedStorage WinRT Identity when GetEntryAssembly is available +11124 area-System.IO Implement ACLing for IsolatedStorage machine scope +11125 area-System.IO Add IsolatedStorage Remove() methods +11126 area-System.IO Add Begin/End methods for IsolatedStorageFileStream Once the change goes through for FileStream need to expose in the ref assembly +11127 area-System.IO Add ObsoleteAttribute to Handle on FileStream and derived classes +11128 area-System.IO Add Lock/Unlock methods to IsolatedStorage/FileStream +11129 area-Serialization Add API: XmlReflectionImporter.IncludeTypes(System.Reflection.ICustomAttributeProvider) +11130 area-System.Linq Compacting switch tables in expression compiler This fixes #11105 by changing dispatch methods in `LambdaCompiler`, `LightCompiler`, and `StackSpiller` to perform the necessary cast prior to calling the specialized `Emit`, `Compile`, or `Rewrite` method. By doing so, we eliminate the need for these methods to have a weakly typed parameter and a strongly typed local, thus reducing the stack usage. A nice side-effect of this change is that the dispatch methods got a bit more compact because the different `ExpressionType` cases that correspond to a particular subtype of `Expression` have been put together. +11132 area-System.Security Replace Clear() on some crypto types These see usage in tier 1 and are just more instances where we removed a synonym for Dispose(). ``` M:System.Security.Cryptography.SymmetricAlgorithm.Clear M:System.Security.Cryptography.CryptoStream.Clear M:System.Security.Cryptography.HashAlgorithm.Clear ``` +11135 area-Serialization Fix System.Xml.XmlSerializer.Tests's ProjectReference System.Xml.XmlSerializer.Tests does not reference System.Xml.XmlSerializer as a project reference. This caused the test project not building against the latest contract assembly built by the repo. +11136 area-System.Linq Improving ConstantCheck with support for Default This addresses issue #11096 by adding a case for `ExpressionType.Default` to `ConstantCheck.IsNull`. Also adding some tests to cover these cases. Note that this branch builds on top of the PR for #11097; if we decide to take these changes, we could do that one first. +11142 area-System.ComponentModel DataAnnotations/EmailAddressAttribute should not fail on when string is empty [EmailAddress] fails when the string value is empty, which is annoying as [Required] should handle this case instead. [RegularExpression] does this correctly, see https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RegularExpressionAttribute.cs/#L58 for an example of how to fix +11144 area-System.Runtime Marshal.GetHRForException() always returns 0 on non-Windows platforms "Take this example program: ``` using System; using System.IO; using System.Runtime.InteropServices; class Program { public static void Main(string[] args) { Console.WriteLine(""Value: "" + Marshal.GetHRForException(new IOException(""test message"", 123456))); } } ``` When run on Windows, it prints ""Value: 123456"". On OSX/Linux it prints ""Value: 0"". 0 seems like the wrong return value here since it'd indicate success. Mono currently returns -1 on platforms that don't support COM interop, but we're debating what to do on e.g. iOS since we need to add this method there for netstandard compliance: https://bugzilla.xamarin.com/show_bug.cgi?id=43646. The problem is that some code like serilog is using this method (see [Xamarin Forum post](https://forums.xamarin.com/discussion/73925/targeting-netstandard-1-6-on-xamarin-ios-no-marshal-gethrforexception) and [GitHub](https://github.com/search?q=org%3Aserilog+GetHRForException&type=Code)) so throwing PlatformNotSupportedException (which we added for all these Marshal APIs right now on iOS) won't make that code work either which is why I'm thinking about just changing it to -1 as well there. But ideally we'd be consistent with .NET Core :) Any reason why you're returning 0 instead of -1 or some other generic error code? /cc @stephentoub Version: ``` $ dotnet --info .NET Command Line Tools (1.0.0-preview2-003121) Product Information: Version: 1.0.0-preview2-003121 Commit SHA-1 hash: 1e9d529bc5 Runtime Environment: OS Name: Mac OS X OS Version: 10.11 OS Platform: Darwin RID: osx.10.11-x64 ``` " +11151 area-Meta Track implementation assemblies that should be merged At the lowest levels of CoreFx, our implementation assemblies are very fine-grained, making it difficult to do certain implementations. For example, Environment lives in System.Runtime.Extensions.dll, which is at a lower-level than System.IO and System.IO.FileSystem. That means on Unix when we need to read a configuration file in support of Environment.GetFolderPath, we have to do very strange contortions to make it work, e.g. including lots of duplicated code or writing custom I/O implementations, using reflection to find the relevant I/O types in another assembly, etc. This leads to bloat, is fragile, etc. We should look at recombining some of these implementation assemblies. This issue is to help track such dependencies. cc: @weshaggard, @danmosemsft, @ericstj, @KrzysztofCwalina - [ ] System.Runtime.Extensions needs access to file I/O to implement Environment.GetFolderPath on Unix (Directory.CreateDirectory and File.ReadAllLines are used) - [ ] System.Runtime.Extensions needs access to Process to implement Environment.WorkingSet (Process.GetCurrentProcess().WorkingSet64 is used) - [ ] ... +11154 area-System.Runtime Proposal: Support comparisons of IntPtr and UIntPtr ## Rationale Now that #8592 has been approved meaning both of `IntPtr` and `UIntPtr` will implement `IEquatable<>`, it would also make sense for them to implement `IComparable<>` and the comparison operators as well. This will amend this [rather unintuitive situation](http://tryroslyn.azurewebsites.net/#b:master/f:>il/K4Zwlgdg5gBAygTxAFwKYFsDcAoADsAIwBswBjGYCEAQwDNUZSjqQQYBhbAb2xj5nzEyMAG4B7MABMYAWQAUASl78e/NTACSEZAAVkAJxhFUtZDAC8m7Xv0A6AFqp9YnOv5bdBmPrBQAFmaWHjYOTi7KbhHqYLQwcsamMAA83r4BCjBcAL5ROWpRgiTk4lIwAHKKUapuMAQIaABURiaBMBDARESuNXWNqf6t7Z3dkTUwMXEJZik+AxnZudhZQA==), where it is possible to compare 2 raw pointers with `<`, but not 2 IntPtrs. It will also add better support for native math since it will allow two words to be compared without manually calling `ToPointer()` on each of them (and therefore resorting to unsafe code). Finally, implementing `IComparable` means `Array.Sort` on an array of IntPtrs will just work as expected, without having to write your own comparer. ## Proposed API ``` cs namespace System { public struct IntPtr : IEquatable, IComparable { public static bool operator <(IntPtr left, IntPtr right); public static bool operator <=(IntPtr left, IntPtr right); public static bool operator >(IntPtr left, IntPtr right); public static bool operator >=(IntPtr left, IntPtr right); public int CompareTo(IntPtr other); } public struct UIntPtr : IEquatable, IComparable { public static bool operator <(UIntPtr left, UIntPtr right); public static bool operator <=(UIntPtr left, UIntPtr right); public static bool operator >(UIntPtr left, UIntPtr right); public static bool operator >=(UIntPtr left, UIntPtr right); public int CompareTo(UIntPtr other); } } ``` ## Open Questions - Should `IntPtr` have the same semantics as int/long (signed) or `void*` (treated as unsigned?) for comparisons? For example: ``` cs var ptr = new IntPtr(-1); Console.WriteLine(ptr.ToInt64() < IntPtr.Zero.ToInt64()); // True Console.WriteLine(ptr.ToPointer() < IntPtr.Zero.ToPointer()); // False Console.WriteLine(ptr < IntPtr.Zero); // What should this be? ``` After dotnet/coreclr#6855 I'm guessing the better answer is the first one. ## Related issues - #10457 - dotnet/coreclr#963 +11155 area-Meta .NET Standard Library vs. .NET Platform Standard vs. NETStandard.Library "There are some [references ](https://docs.microsoft.com/en-us/dotnet/articles/standard/library) that the "".NET Standard Library"" is covered in the `NETStandard.Library` package. However, there are libraries (especially agnostic libraries) like `System.Xml.XPath` or `System.Collcetions.Immutable` which seem to be [part](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) of the "".NET Standard Library"" and/or "".NET Platform Standard"" but are not added as a dependency to `NETStandard.Library`. Do I misunderstand something here, or is the naming/documentation of the meta package `NETStandard.Library` just a bit odd? " +11156 area-System.Net Difference between Desktop and CoreFx with transmitted URIs containing reserved chars Create a URI with the following: > AbsoluteUri: “http://example.com/foo/abc[]123” Doing an HTTP request with .NET Framework sends the following on the wire to the server: > GET http://example.com/foo/abc[] HTTP/1.1 However, CoreFx (Windows) sends something different: > GET http://example.com/foo/abc%5B%5D123 HTTP/1.1 This causes app-compat problems especially for components such as Azure Storage that sign the URI being used and expect the formats to match. +11157 area-System.Runtime Loading assemblies Hi, I have tried in many ways to load an assembly at runtime from a console app, there are many responses to my problem : https://www.google.com.mx/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=dotnet%20core%20load%20assembly%20from%20file But none works for me, it seems like the responses use an old version of .Net Core, I am using version 1.0.1 build cee57bf6c981237d80aa1631cfe83cb9ba329f12, many suggested solutions throw a file not found exception, I even tried coping the dll in many locations, I am not sure how to properly load them, can you please point me in the right direction? I need to load a dll(a valid .net core dll) that is not part of my project at runtime, I need to do that so I am able to read the types defined in the assembly so I can generate some XML files based on the properties and attributes for that type, in .Net 4.x it's pretty straight forward. Thanks. +11159 area-System.Net Fix WinHttpHandler uri escaping for HTTP requests There is a behavior difference between .NET Framework (Desktop) and CoreFx. Desktop will send some reserved characters (such as square brackets) on the wire as-is without any percent-encoding. CoreFx using WinHttpHandler is doing additional percent-encoding on those characters. This fix changes WinHttpHandler behavior so that it won't do any additional percent-encoding. Whatever encoding System.Uri has done will be transmitted as-is. There is a separate problem where System.Uri itself doesn't percent-encode these characters during normalization. That is due to changes in the .NET Framework 4.5 timeframe (2012) where System.Uri was changed to follow more IRI (RFC 3987) rules. One could argue that was the real problem. But since this behavior is already baked into .NET Framework, the right fix for the below issue is to match Desktop behavior. We will be having a separate discussion/issue to analyze/debate whether System.Uri needs to be changed (or not) in the future. The various URI and HTTP RFCs have ambiguous language in these areas. Fixes #11156 +11160 area-System.Reflection No way to get the simple name parts of a TypeRef Namespace without many allocations. "Currently, if you are using MetadataReader and you have a handle to a TypeReference, then the only data exposed is: ``` c# public StringHandle Name { get; } public StringHandle Namespace { get; } public EntityHandle ResolutionScope { get; } ``` If the typeref is for a type in a namespace called ""A.B.C"" This means that if you want the constituent namespace parts (like ""A"", ""B"", ""C""), you first need to allocate the full string and then split it into smaller strings. Contrast this to the TypeDefinition where you can get handles to the NamespaceDefinition and can get just the Name off of it and it's parents. This is an issue in Roslyn because it causes allocations we don't want when we just want to get the namespace pieces (like we do for TypeDefs). A api to expose the individual pieces would be appreciated. " +11163 area-System.Diagnostics Non-Windows FileVersionInfo does not handle InformationalVersion -> Product Version "See https://github.com/dotnet/corefx/blob/4f4bb03474d93760bf312ddd1678cc1c9b04d422/src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Metadata.cs#L138 The comment and code there doesn't account for the fact that `AssemblyInformationalVersion` specifies the ""product version"" when present. ``` C# using System.Reflection; [assembly: AssemblyInformationalVersion(""1.2.3-beta"")] [assembly: AssemblyFileVersion(""1.2.3.0"")] ``` ![image](https://cloud.githubusercontent.com/assets/75470/17987753/a1003eb0-6ad6-11e6-877c-bfa1002820f4.png) The most robust fix would be to fix https://github.com/dotnet/corefx/issues/7875 by actually reading the win32 resource everywhere. However, if the approach of consuming managed attributes is kept, then `AssemblyInformationalVersion` needs to be taken into account as it is during compilation of the resource. @weshaggard @stephentoub " +11165 area-System.Net Multiple firewall prompts on Windows appear when running the build During the testing phase of the build, multiple firewall prompts pop up. This should not happen during the build. +11169 area-System.Globalization Port TimeZone TimeZone is already added into CoreCLR; however due to certain required Linux implementations and required dependencies (i.e. System.Globalization.DaylightTime), it was left out of CoreFx when completing #10074. ``` T:System.TimeZone M:System.TimeZone.#ctor P:System.TimeZone.CurrentTimeZone M:System.TimeZone.get_CurrentTimeZone P:System.TimeZone.DaylightName M:System.TimeZone.get_DaylightName P:System.TimeZone.StandardName M:System.TimeZone.get_StandardName M:System.TimeZone.GetDaylightChanges(System.Int32) M:System.TimeZone.GetUtcOffset(System.DateTime) M:System.TimeZone.IsDaylightSavingTime(System.DateTime) M:System.TimeZone.IsDaylightSavingTime(System.DateTime,System.Globalization.DaylightTime) M:System.TimeZone.ToLocalTime(System.DateTime) M:System.TimeZone.ToUniversalTime(System.DateTime) ``` +11170 area-System.Net ServerAsyncAuthenticate_MismatchProtocols_Fails failing in CI ``` System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol: Tls, clientProtocol: Tls11, expectedException: typeof(System.Security.Authentication.AuthenticationException)) [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Authentication.AuthenticationException) Actual: typeof(System.TimeoutException): The operation has timed out. Stack Trace: at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +11174 area-System.Net Socket Poll during non-blocking connect broken on linux I am writing a library that requires a timeout on a socket connection from a client to a server. I tried implementing this using async methods, however this library needs to support net451 and netstandard, which both do not support the same async methods. In C previously, I've seen programs that do a non blocking connect() call, and the a poll() call to detect if the socket has finally connected, and timing out after enough poll failures have passed. The code below is a simplified version of what I have ported, and it works perfectly on windows, both with .net 4.5.1 and .net core RTM. The poll call returns false and loops until timeout. However, on linux and mac, the poll call always returns true, even when I can verify there is no socket listening on that port. If I try to call connect after the poll call returns true, I end up getting a ConnectionRefused error code. Is there a specific setting that would need to be called additionally on unix systems to make this work properly, or is this an internal library issue? ``` Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Blocking=false; try { socket.Connect(IPAddress.Loopback, 2222); } catch (SocketException ex) { if (ex.SocketErrorCode == SocketError.WouldBlock || ex.SocketErrorCode == SocketError.InProgress) { while (true) { if (socket.Poll(1000, SelectMode.SelectWrite) { // Socket connected (or should be anyway) return; } else { // Check if timed out here } } } } ``` +11177 area-System.Security Failed assert in pal_symmetric.cpp http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/3686/consoleText ``` Assertion failed: (algorithm == PAL_AlgorithmAES || operation == PAL_Algorithm3DES), function AppleCryptoNative_CryptorCreate, file /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_symmetric.cpp, line 54. ``` +11189 area-Infrastructure build.cmd -UpdateInvalidPackageVersions no longer working "Trying to run this command now produces the error: ``` error MSB4057: The target ""UpdateInvalidPackageVersions"" does not exist in the project ``` " +11192 area-System.Net Enhance LoopbackServer to return received data Modified the test LoopbackServer so that it can return the received data in the helper methods. This allows more use of the simple ReadRequestAndSendResponseAsync() method instead of having to use the more complex methods. Modified a few HttpClient tests to take advantage of this. More tests will be simplified in future PRs. +11195 area-System.IO File watcher doesn't trigger all the time on Win 2008 R2 Sorry for the very vague repro but I don't have a consistent one. We're seeing in some of our tests that rely on the file watcher that the watcher doesn't trigger all the times. It happens pretty rare but, especially on Win 2008 R2, it happens that the file change even doesn't trigger when we write to a file. Because of that the test fails from time to time and we have to retry the write. Is this a known issue? +11196 area-System.Xml XmlTextReader and XmlTextWriter not exposed I just had to do some work to port `Microsoft.Web.Xdt` to .NET Core, and one of the big pain points was that [XmlTextReader](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Xml.ReaderWriter/src/System/Xml/Core/XmlTextReaderImpl.cs#L24) and [XmlTextWriter](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/Common/src/System/Xml/XmlTextWriter.cs#L31) are marked internal and not exposed. I ended up having to copy 40+ files from `corefx` into my [project](https://github.com/OctopusDeploy/Octopus.Web.Xdt) (awesome that that was possible though!). The second pain point was related to the CRLF/LF normalisation - the desktop version allows you to disable it, but the CoreCLR does not. However, the CoreCLR implementation is according to [spec](https://github.com/dotnet/corefx/pull/2154). I see that XmlTextReader is [considered legacy](https://github.com/dotnet/corefx/issues/1595), but it is odd that the class is in corefx but not exposed. Would you consider a PR to expose XmlTextReader and XmlTextWriter, and expose a new setting to enable or disable line ending normalisation? +11202 area-System.Net [WIP - do not merge] SSL Alerts This is a prototype, not fully tested for the implementation of TLS Alerts. The prototype requires that a new API is added to System.Net.Security (currently 4.0.0.0, netstandard1.3): ``` public virtual System.Threading.Tasks.Task ShutdownAsync(); ``` There are other APIs planned to be added to this contract. @ericstj @weshaggard is there documentation other contract examples in this situation? I believe that I need to switch the version to 4.1.0 first but I'm not entirely sure what changes are required for the builds and .pkgproj for this to build. /cc: @davidsh @stephentoub +11203 area-System.IO System.IO tests aborting in dev/api This is happening frequently, e.g. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/ubuntu14.04_release_prtest/504/ http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/ubuntu14.04_release_prtest/511/ ``` ./corerun xunit.console.netcore.exe System.IO.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.IO, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) /mnt/j/workspace/dotnet_corefx/dev_api/ubuntu14.04_release_prtest/bin/tests/AnyOS.AnyCPU.Release/System.IO.Tests/netcoreapp1.0/RunTests.sh: line 293: 45732 Aborted (core dumped) ./corerun xunit.console.netcore.exe System.IO.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests ``` +11205 area-System.Net Reduce compiled size of HttpKnownHeaderNames.TryGetHeaderName This reduces the compiled IL size of `TryGetHeaderName` from 916 lines to 515 lines, and the jitted x64 code from 7,520 bytes to 2,031 bytes. Minor speed improvement as a result (10,000,000 iteration microbenchmark on Windows 10 x64): ``` Looking for: Last-Modified Old: Time: 0.2407542 GC0: 0 Old: Time: 0.2318401 GC0: 0 Old: Time: 0.2312379 GC0: 0 Old: Time: 0.2317734 GC0: 0 Old: Time: 0.2326793 GC0: 0 New: Time: 0.2151386 GC0: 0 New: Time: 0.2152126 GC0: 0 New: Time: 0.2141634 GC0: 0 New: Time: 0.2165665 GC0: 0 New: Time: 0.2144604 GC0: 0 Looking for: Should-Not-Be-Found Old: Time: 0.1017941 GC0: 0 Old: Time: 0.0980346 GC0: 0 Old: Time: 0.0976804 GC0: 0 Old: Time: 0.0974459 GC0: 0 Old: Time: 0.0981378 GC0: 0 New: Time: 0.0785356 GC0: 0 New: Time: 0.0800044 GC0: 0 New: Time: 0.0804539 GC0: 0 New: Time: 0.0792069 GC0: 0 New: Time: 0.080225 GC0: 0 ``` Also updated/improved some comments while making changes here. cc: @stephentoub, @davidsh +11207 area-System.Net HttpClient on UWP does not parse all cookies **Code**: https://1drv.ms/u/s!AhFj09QCPE9Yhsohgs1Hn3_coKtb2g **Steps to run**: Run the project; breakpoints are already set. You'll need Fiddler to look at the HTTP request it's making. **Expected**: Both cookies the server sends should be in `HttpResponseMessage`'s `Set-Cookie` headers. **Actual**: Only one cookie is parsed, the other one is an empty value. This does _not_ appear to be #6737, I can't get it to repro. I've included its test case in the repro code just in case, there's one line to uncomment. +11208 area-System.Linq Improve Enumerable.ToArray to avoid excessive copying for lazy enumerables The idea that instead of resizing the array (aka throwing it out and allocating a new one) and re-copying the data every time the sequence doesn't fit, we can instead keep the old array around, allocate a new one of size \* 2, and just continue reading into the new array at index 0. This will require keeping around a list of arrays we've filled up so far, however the overhead of this list will be substantially less than the size of the data itself. A visualization of what I'm talking about for a 300-length enumerable: ``` First array: [items 0-31] List of arrays: [0]: [items 32-63] [1]: [items 64-127] [2]: [items 128-255] Current array: [items 256-299] ``` (I also put this in the comments to help future readers understand.) Then when we need the final array to return from the method, we just calculate `first.Length + list.Sum(a => a.Length) + indexWeFinishedReadingIntoInCurrentArray`, pre-allocate an array of that size, and then copy each of the arrays into that array. I opted to only use this algorithm for enumerables of > length 32, since for smaller sizes it will lead to increased fragmentation, and the overhead of the list allocation will probably be noticeable in comparison to, say, 20 elements. ~32 is also the threshold at around which `Array.Copy` starts getting faster than a for-loop. ## Benchmark results https://gist.github.com/jamesqo/399b72bf5de8e2cbd83d044836cbefa4 (includes results/source code) You can see that the new implementation consistently has about 2/3 the gen0 collections as the old one. The timings are somewhat inconsistent (disclaimer: I only did 100,000 iterations since the tests were taking way too long to run), but you can see that the new implementation is generally faster/the same speed as the old one. (I suspect it may be hard to measure the differences due to all of the interface invocations that are going on, in addition to the covariant array type checks if T is a reference type.) cc @stephentoub @VSadov @JonHanna +11211 area-System.Net HttpWebRequest.GetRequestStream not allowing payload on GET requests Issue initially reported on PowerShell/PowerShell#2054 Making a HTTP GET requests from PowerShell using either Invoke-WebRequest or Invoke-RestMethod with a content-body throws an exception. [HTTP RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) describes that a content-body is allowed but some webservers might reject the request. > A payload within a GET request message has no defined semantics; > sending a payload body on a GET request might cause some existing > implementations to reject the request. This is making it difficult to interface with various RESTful API's like InfoBlox and ElasticSearch that rely on JSON payloads for retrieving data. The Invoke-WebMethod uses the .NET method [HttpWebRequest.GetRequestStream](https://msdn.microsoft.com/en-us/library/d4cek6cc%28v=vs.110%29.aspx) and raises a ProtocolViolationException. ## Steps to reproduce $uri = 'http://www.microsoft.com' $payload = @{Microsoft='loves linux'} $result = Invoke-WebRequest -Uri $uri -Body ($payload | ConvertTo-Json) -ContentType 'application/json' -Method Get ## Expected behavior HTTP OK ## Actual behavior Invoke-WebRequest : Cannot send a content-body with this verb-type. +11212 area-System.Reflection Is GetCallingAssembly not coming to .NET Core ever? This API was discussed and rejected last year in multiple issues. In the new compat work, is GetCallingAssembly coming back? It seems like there are some security concerns on Unix platform for this API, can they be worked out in a way to provide the consumer a limited and safe implementation? log4net (https://github.com/apache/log4net, used in abundance in Azure service projects for example) for one heavily rely on this API, using compiler's [Caller Information](https://msdn.microsoft.com/en-us/library/hh534540.aspx) suggested at https://github.com/dotnet/corefx/issues/1784#issuecomment-115805990, is not a very straight-forward alternative in practice and requires a significant change in consumer land. Please reconsider adding this API. Many thanks! :) +11213 area-System.Net Add HttpClient support for IDNA on systems where libcurl does not support IDNA itself "Im trying to fetch data from a norwegian idn-domain. It works fine on windows but failes on os x ``` using System.Net.Http; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { using(var c = new HttpClient()) { c.GetStringAsync(@""http://allehjørnet.no"").Wait(); } } } } ``` ``` dotnet --version 1.0.0-preview2-003121 ``` ``` uname -a Darwin Macarena.local 15.6.0 Darwin Kernel Version 15.6.0: Thu Jun 23 18:25:34 PDT 2016; root:xnu-3248.60.10~1/RELEASE_X86_64 x86_64 ``` Ive tried saving the document in UTF8/UTF16LE/Windows1252 with the same result Exception details output from `dotnet run` ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (An error occurred while sending the request.) ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: Couldn't resolve host name at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__32`1.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait() at ConsoleApplication.Program.Main(String[] args) ``` " +11216 area-System.Collections ConcurrentBag.Steal ConcurrentBag.Steal [says](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs#L327) > It enumerate all other threads in two passes first pass acquire the lock with TryEnter if succeeded However, `TrySteal` doesn't use `TryEnter` but uses `lock` although `Steal` does make two passes. This would either suggest it was meant to be different or was changed. Any reason why? +11217 area-System.Net NetworkInterface.GetAllNetworkInterfaces() on Ubuntu 14.04 raises unhandled exception FileNotFoundException in the presence of network interface alias. "The following example raises an unhandled exception on ubuntu 14.04 if there is an alias on any network interface: ``` using System.Net.Sockets; namespace Sample { public class Runner { public static void Main() { try { System.Console.WriteLine(""Before""); System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(); System.Console.WriteLine(""After""); } catch (System.Exception ex) { System.Console.WriteLine(""Caught""); System.Console.WriteLine(ex); } } } } ``` The crash can be reproduced via the following step: ``` $ sudo ifconfig lo:virtual 192.168.222.1 $ corerun workspace-host/Failing.System.Net.NetworkInformation.Functional.Tests.dll Before Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/proc/sys/net/ipv4/conf/lo:virtual/forwarding'. at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync) at System.IO.FileStream.InternalOpen(String path, Int32 bufferSize, Boolean useAsync) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.IO.File.ReadAllText(String path) at System.Net.NetworkInformation.StringParsingHelpers.ParseRawIntFile(String filePath) at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties.GetIsForwardingEnabled() at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties..ctor(LinuxNetworkInterface linuxNetworkInterface) at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__0(String name, IpAddressInfo* ipAddr, IpAddressInfo* maskAddr) at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound) at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() at System.Net.NetworkInformation.NetworkInterfacePal.GetAllNetworkInterfaces() at System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces() at Sample.Runner.Main() Aborted (core dumped) ``` " +11218 area-System.Net System.Net.Http test failures "A few Http tests unrelated to the change failed on Windows: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/3850/ System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingContentLengthSemantics_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx) System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingContentLengthSemantics_Success(serverUri: https://corefx-net.cloudapp.net/Echo.ashx) System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.ProxyExplicitlyProvided_DefaultCredentials_Ignored System.Net.Http.Functional.Tests.HttpClientHandlerTest.PostAsync_CallMethod_StreamContent(remoteServer: https://corefx-net.cloudapp.net/VerifyUpload.ashx, content: [ByteArrayContent { Headers = [...] }], expectedData: [45, 45, 57, 56, 51, ...]) System.Net.Http.Functional.Tests.HttpClientHandlerTest.PostAsync_CallMethod_StreamContent(remoteServer: https://corefx-net.cloudapp.net/VerifyUpload.ashx, content: StreamContentWithSyncAsyncCopy { Headers = [] }, expectedData: [62, 23, 186, 150, 174, ...]) System.Net.Http.Functional.Tests.HttpClientHandlerTest.SendAsync_SendRequestUsingMethodToEchoServerWithContent_Success(method: ""PUT"", secureServer: False) System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_HttpTracingEnabled_Succeeds System.Net.Tests.HttpWebRequestTest.GetResponseAsync_GetResponseStream_ExpectNotNull(remoteServer: https://corefx-net.cloudapp.net/Echo.ashx) " +11220 area-System.IO Add async alternatives to File.ReadAll*, File.AppendAll* and File.WriteAll* Is there a reason why there's no `ReadAll*Async`, `AppendAll*Async` and `WriteAll*Async` methods on `File`? The existing methods are very convenient and I think it makes sense to have async versions available. I propose the following additions: ``` diff public static partial class File { public static void AppendAllLines(string path, IEnumerable contents) { } public static void AppendAllLines(string path, IEnumerable contents, Encoding encoding) { } + public static Task AppendAllLinesAsync(string path, IEnumerable contents, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } + public static Task AppendAllLinesAsync(string path, IEnumerable contents, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static void AppendAllText(string path, string contents) { } public static void AppendAllText(string path, string contents, Encoding encoding) { } + public static Task AppendAllTextAsync(string path, string contents, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } + public static Task AppendAllTextAsync(string path, string contents, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static byte[] ReadAllBytes(string path) { return default(byte[]); } + public static Task ReadAllBytesAsync(string path, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static string[] ReadAllLines(string path) { return default(string[]); } public static string[] ReadAllLines(string path, System.Text.Encoding encoding) { return default(string[]); } + public static Task ReadAllLinesAsync(string path, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } + public static Task ReadAllLinesAsync(string path, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static string ReadAllText(string path) { return default(string); } public static string ReadAllText(string path, System.Text.Encoding encoding) { return default(string); } + public static Task ReadAllTextAsync(string path, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } + public static Task ReadAllTextAsync(string path, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static void WriteAllBytes(string path, byte[] bytes) { } + public static Task WriteAllBytesAsync(string path, byte[] bytes, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static void WriteAllLines(string path, IEnumerable contents) { } public static void WriteAllLines(string path, IEnumerable contents, Encoding encoding) { } + public static Task WriteAllLinesAsync(string path, IEnumerable contents, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } + public static Task WriteAllLinesAsync(string path, IEnumerable contents, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } public static void WriteAllText(string path, string contents) { } public static void WriteAllText(string path, string contents, Encoding encoding) { } + public static Task WriteAllTextAsync(string path, string contents, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } + public static Task WriteAllTextAsync(string path, string contents, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { return default(Task); } } ``` I guess the `ReadLines` methods are candidates for this as well, but I don't know how you'd handle the async enumeration part yet. +11221 area-System.Globalization Difference output between Linux and Windows platforms "Hello. This line ` string.Format(""{0:G}"", new DateTime(2015, 9, 14, 8, 30, 0)) ` On Linux return ` 9/14/15 8:30:00 AM ` On Windows ` 9/14/2015 8:30:00 AM ` I my case it is cause a problem because the tests are not passed between platform. " +11222 area-System.Reflection Unify the CoreClr and aot System.Reflection.Extensions.dll partial facade. "Steps: - In the CoreRt repo, rename CustomAttributeExtensionsSoonToBe to CustomAttributeExtensions. You'll also need to update references to it (here and here) Do not commit the rename itself at this step (tests will start failing with MissingMetadataExceptions because ILC doesn't expect to see two CustomAttributeExtension classes.) - Build a new version of the .Net Native targeting pack and publish to myget. - Wait for new targeting pack to appear on myget. - Change the aot version of System.Runtime.dll to - consume the new targeting pack. - TypeForward CustomAttributeExtensions to System.Private.Corelib - TypeForward BindingFlags to System.Private.Corelib. - TypeForward InterfaceMapping to System.Private.Corelib. - Implement the ReflectionRuntimeExtensions class at a thin layer (just copy over the CoreClr source code verbatim.) - Change the aot version of S.R.Extensions.dll to a pure facade that typeforwards everything (ReflectionRuntimeExtensions, CustomAttributeExtensions and InterfaceMapping) to System.Runtime. Note that this is the exact same construction we want for CoreClr so this should get rid of the distinction between ""aot"" and ""not-aot."" All the internal machinery (CustomAttributeSearcher, CustomAttributeInheritanceRules should be mothballed.) - Publish the new System.Runtime.dll and new S.Reflection.Extensions.dll to myget. - Back to corert - consume the new S.Reflection.Extensions.dll and the new System.Runtime.dll and commit this and the CustomAttributeExtensionsSoonToBe rename in one delta. " +11223 area-System.Reflection Unify the CoreClr and aot System.Reflection.TypeExtensions.dll partial facade. "Issue https://github.com/dotnet/corefx/issues/11222 must be done prior to or simultaneously with this. That's because the existing S.R.Reflection.Extensions.dll references a private class (MemberEnumerator) inside S.R.TypeExtensions.dll. Steps: - In the CoreFx repo: Get rid of the aot-specific S.R.TypeExtensions.dll. Both aot and not-aot should use the existing non-aot version, namely the one that: - Typeforwards BindingFlags to System.Runtime.dll. - Implements AssemblyExtensions EventInfoExtensions MemberInfoExtensions MethodInfoExtensions ModuleExtensions PropertyInfoExtensions TypeExtensions as thin wrappers over their namesake apis. No more MemberEnumerator and stuff. - In the CoreRt repro, make ILC consume the ""new"" (i.e. the existing non-aot version) of S.R.TypeExtensions.dll. " +11224 area-System.Net Singleton HttpClient doesn't respect DNS changes "As described in the following post: http://byterot.blogspot.co.uk/2016/07/singleton-httpclient-dns.html, once you start keeping a shared `HttpClient` instance to improve performance, you'll hit an issue where the client won't respect DNS record updates in case of failover scenarios. The underlying issue is that the default value of `ConnectionLeaseTimeout` is set to `-1`, infinite. It'll only close on dispose of the client, which is very inefficient. The fix is to update the value on the service point like this: ``` csharp var sp = ServicePointManager.FindServicePoint(new Uri(""http://foo.bar/baz/123?a=ab"")); sp.ConnectionLeaseTimeout = 60*1000; // 1 minute ``` Unfortunately, there's no way to do this with .NET Core today. Either ServicePointManager should be brought over to .NET Core or similar equivalent functionality should be enabled some other way. " +11225 area-System.Reflection Port S.Ref.StrongNameKeyPair This type is used by MSBuild and disabled for xplat. Now that Microsoft.Build.Framework is available as an official NuGet package, some libs depending on MSBuild are being ported to .NET Core; lack of this type is a show-stopper in some cases. :( cc @weshaggard, @AtsushiKan, https://github.com/dotnet/coreclr/pull/6614#issuecomment-243018075 +11227 area-Serialization Enable Reflection Based Serialization on Net Native. The changes are to enable XmlSerializer's reflection based serialization on Net Native. The changes would also fix #https://github.com/dotnet/corefx/issues/7991, some constructors of XmlSerializer's don't work on Net Native. @mconnew @roncain @huanwu @zhenlan can you please review the PR? Thanks. +11231 area-System.Threading Revert base class of some types to newly exposed types Now that SafeHandleZeroOrMinusOneIsInvalid is exposed, revert the base class for some public types deriving directly from SafeHandle, to match the original contract. - SafeFileHandle - SafeMemoryMappedFileHandle - SafeNCryptHandle - SafePipeHandle - SafeProcessHandle - SafeRegistryHandle - SafeX509ChainHandle - SafeBuffer - ChannelBinding These should all derive from SafeHandleZeroOrMinusOneIsInvalid instead of SafeHandle. Similarly, the following types should derive from CriticalFinalizerObject, now that is exposed: - CriticalHandle - Thread +11235 area-System.IO DeflateStream: Allow inflation without input Our implementation of DeflateStream only allows inflation when there is input to pass to the inflater. Because of how the stream was coded, this would raise the potential issue where we would be out of input but there could still be inflated bytes cached ready to read. This commit removes the checks for valid input and allows inflation regardless of input. - This does have the downside of reducing efficiency in the scenario where we are actually out of bytes to read. We were previously operating under the incorrect assumption that no input implies no output, but that isn't strictly true. resolves #11161 @stephentoub @qmfrederik +11241 area-System.Globalization Enable CompareInfo APIs in contracts which takes System.Reflection.Assembly in System.Runtime contract we are commenting 2 APIs in CompareInfo which takes System.Reflection.Assembly because System.Reflection.Assembly is not moved to System.Runtime contract yet. This issue to track enabling these APIs after System.Reflection.Assembly move to System.Runtime. +11244 area-Infrastructure Please publish new file naming convention for generic types Are backticks to be replaced with underscores now? https://github.com/dotnet/corefx/commit/eef844ecd30ff2aff2f82d4b73baee356e7b0d08 https://github.com/dotnet/corefx/tree/master/src/System.Collections.Immutable/src/System/Collections/Immutable The compiler and also Entity Framework still follow the current convention: https://github.com/aspnet/EntityFramework/blob/dev/src/Microsoft.EntityFrameworkCore/DbSet%60.cs https://github.com/dotnet/roslyn/blob/master/src/Compilers/Core/Portable/Syntax/SyntaxList%601.cs Thank you. +11254 area-Serialization Add API T:System.Runtime.Serialization.Json.JsonReaderWriterFactory ``` T:System.Runtime.Serialization.Json.JsonReaderWriterFactory M:System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas) M:System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonWriter(System.IO.Stream,System.Text.Encoding) T:System.Runtime.Serialization.Json.IXmlJsonReaderInitializer T:System.Runtime.Serialization.Json.IXmlJsonWriterInitializer T:System.Runtime.Serialization.ExtensionDataObject T:System.Runtime.Serialization.IExtensibleDataObject T:System.Runtime.Serialization.XmlSerializableServices T:System.Runtime.Serialization.XPathQueryGenerator T:System.Runtime.Serialization.ExportOptions T:System.Runtime.Serialization.XsdDataContractExporter T:System.Runtime.Serialization.Json.DataContractJsonSerializer's missing Members. T:System.Xml.IFragmentCapableXmlDictionaryWriter P:System.Xml.IFragmentCapableXmlDictionaryWriter.CanFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.get_CanFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.EndFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.StartFragment(System.IO.Stream,System.Boolean) M:System.Xml.IFragmentCapableXmlDictionaryWriter.WriteFragment(System.Byte[],System.Int32,System.Int32) T:System.Xml.IStreamProvider M:System.Xml.IStreamProvider.GetStream M:System.Xml.IStreamProvider.ReleaseStream(System.IO.Stream) T:System.Xml.IXmlBinaryReaderInitializer M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlBinaryWriterInitializer M:System.Xml.IXmlBinaryWriterInitializer.SetOutput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean) T:System.Xml.IXmlMtomReaderInitializer M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlMtomWriterInitializer M:System.Xml.IXmlMtomWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) T:System.Xml.IXmlTextReaderInitializer M:System.Xml.IXmlTextReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlTextReaderInitializer.SetInput(System.IO.Stream,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlTextWriterInitializer M:System.Xml.IXmlTextWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Boolean) M:System.Xml.XmlDictionaryReader.CreateBinaryReader(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateBinaryReader(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding[],System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateTextReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.GetNonAtomizedNames(System.String@,System.String@) M:System.Xml.XmlDictionaryReader.ReadElementContentAsDateTime M:System.Xml.XmlDictionaryReader.ReadString M:System.Xml.XmlDictionaryReader.ReadString(System.Int32) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) M:System.Xml.XmlDictionaryWriter.WriteBase64Async(System.Byte[],System.Int32,System.Int32) M:System.Xml.XmlDictionaryWriter.WriteValue(System.Xml.IStreamProvider) M:System.Xml.XmlDictionaryWriter.WriteValueAsync(System.Xml.IStreamProvider) ``` +11255 area-Serialization Add API T:System.Runtime.Serialization.IDataContractSurrogate ``` T:System.Runtime.Serialization.IDataContractSurrogate T:System.Runtime.Serialization.ExtensionDataObject T:System.Runtime.Serialization.IExtensibleDataObject M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate) M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean) ``` +11257 area-Infrastructure Use .pkgproj references when using TestWithLocalLibraries Today the `TestWithLocalLibraries` parameter has a faulty logic on how to pick the assets that are used to run tests on assemblies when the property is passed. Instead, we should use .pkgproj references to let nuget do the logic of selecting the right asset in every case. related comment: https://github.com/dotnet/buildtools/pull/995#issuecomment-243517434 +11262 area-System.Net Port S.Web.HttpUtility This is really separate to the rest of S.Web.dll, and it packaged into S.Web.Services.dll on Android. Here's the members: ``` T:System.Web.HttpUtility M:System.Web.HttpUtility.ParseQueryString(System.String) M:System.Web.HttpUtility.UrlEncode(System.String) M:System.Web.HttpUtility.HtmlDecode(System.String) M:System.Web.HttpUtility.UrlDecode(System.String) M:System.Web.HttpUtility.HtmlAttributeEncode(System.String) M:System.Web.HttpUtility.JavaScriptStringEncode(System.String) M:System.Web.HttpUtility.HtmlEncode(System.String) M:System.Web.HttpUtility.HtmlEncode(System.Object) M:System.Web.HttpUtility.UrlEncode(System.String,System.Text.Encoding) M:System.Web.HttpUtility.#ctor M:System.Web.HttpUtility.HtmlAttributeEncode(System.String,System.IO.TextWriter) M:System.Web.HttpUtility.HtmlDecode(System.String,System.IO.TextWriter) M:System.Web.HttpUtility.HtmlEncode(System.String,System.IO.TextWriter) M:System.Web.HttpUtility.JavaScriptStringEncode(System.String,System.Boolean) M:System.Web.HttpUtility.ParseQueryString(System.String,System.Text.Encoding) M:System.Web.HttpUtility.UrlDecode(System.Byte[],System.Int32,System.Int32,System.Text.Encoding) M:System.Web.HttpUtility.UrlDecode(System.Byte[],System.Text.Encoding) M:System.Web.HttpUtility.UrlDecode(System.String,System.Text.Encoding) M:System.Web.HttpUtility.UrlDecodeToBytes(System.Byte[]) M:System.Web.HttpUtility.UrlDecodeToBytes(System.Byte[],System.Int32,System.Int32) M:System.Web.HttpUtility.UrlDecodeToBytes(System.String) M:System.Web.HttpUtility.UrlDecodeToBytes(System.String,System.Text.Encoding) M:System.Web.HttpUtility.UrlEncode(System.Byte[]) M:System.Web.HttpUtility.UrlEncode(System.Byte[],System.Int32,System.Int32) M:System.Web.HttpUtility.UrlEncodeToBytes(System.Byte[]) M:System.Web.HttpUtility.UrlEncodeToBytes(System.Byte[],System.Int32,System.Int32) M:System.Web.HttpUtility.UrlEncodeToBytes(System.String) M:System.Web.HttpUtility.UrlEncodeToBytes(System.String,System.Text.Encoding) M:System.Web.HttpUtility.UrlEncodeUnicode(System.String) M:System.Web.HttpUtility.UrlEncodeUnicodeToBytes(System.String) M:System.Web.HttpUtility.UrlPathEncode(System.String) ``` Only the first 10 or so show up with usage in our corpus, but they get up to 20% usage in Xamarin apps. @weshaggard Which contract should we put these on? +11264 area-System.IO Add managed Deflate64 support to ZipArchive This PR adds back the old managed Deflate implementation and makes it compatible with the Deflate64 algorithm. ZipArchive is modified to use this managed Deflate64 stream whenever it detects an entry compressed using it. This doesn't add any compression support, only decompression, and an archive entry opened in Update mode will be written back using Deflate, not Deflate64. This resolves the errors we've been seeing lately around windows zips >2gb throwing exceptions. resolves https://github.com/dotnet/corefx/issues/9925. Progress towards https://github.com/dotnet/corefx/issues/6602. Tests coming in another PR where I'll also update the TestData version. I'll be waiting to merge this PR until that one is complete, but this one is big enough already. @stephentoub +11265 area-System.Net WIP: Adding new SslStream API "@ericstj @weshaggard @davidsh @bartonjs PTAL Creating a new, simplified PR only for the API addition based on master. The current error is: ``` ""S:\c1\src\System.Net.Security\ref\System.Net.Security.csproj"" (rebuild target) (1) -> (ValidatePackageTargetFramework target) -> S:\c1\Tools\PackageLibs.targets(213,5): error : Expected version 4.1.0.0 for referenced assembly S:\c1\packages\System.Security .Cryptography.Algorithms\4.2.0\ref\netstandard1.6\System.Security.Cryptography.Algorithms.dll but found 4.2.0.0 [S:\c1\src\System .Net.Security\ref\System.Net.Security.csproj] ``` The error is probably because of the switch to netstandard1.6 which includes UWP. What are the strings (I couldn't find documentation) to make System.Net.Security 4.1.0.0 a net463 contract _only_ (no netstandard) while keeping 4.0.0.0 part of netstandard1.3? " +11266 area-System.Net WinHttpException: The parameter is incorrect when server return 401 "I have a customized HttpMessageHandler that handle 401 from http response and throw a particular exception to provide better error message for end user. The code works fine with full desktop .net 4.5, however after ported to dotnet core i am getting the ""WinHttpException: The parameter is incorrect"" error when server return 401. Here is the full call stack when 401 happen for both dotnet core app and .net 4.5 app: ``` dotnet core: [2016-08-30 17:28:45Z ERR Terminal] System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The parameter is incorrect at System.Net.Http.WinHttpAuthHelper.SetWinHttpCredential(SafeWinHttpHandle requestHandle, ICredentials credentials, Uri uri, UInt32 authScheme, UInt32 authTarget) at System.Net.Http.WinHttpAuthHelper.CheckResponseForAuthentication(WinHttpRequestState state, UInt32& proxyAuthScheme, UInt32& serverAuthScheme) at System.Net.Http.WinHttpHandler.d__101.MoveNext() --- End of inner exception stack trace --- at Microsoft.VisualStudio.Services.Common.VssHttpRetryMessageHandler.d__3.MoveNext() in C:\VSO\src\Vssf\Client\Common\VssHttpRetryMessageHandler.cs:line 150 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__45.MoveNext() in C:\VSO\src\Vssf\Client\WebApi\VssHttpClientBase.cs:line 762 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__42`1.MoveNext() in C:\VSO\src\Vssf\Client\WebApi\VssHttpClientBase.cs:line 663 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__27`1.MoveNext() in C:\VSO\src\Vssf\Client\WebApi\VssHttpClientBase.cs:line 383 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__26`1.MoveNext() in C:\VSO\src\Vssf\Client\WebApi\VssHttpClientBase.cs:line 366 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.VisualStudio.Services.Agent.Listener.Configuration.ConfigurationManager.d__11.MoveNext() in C:\vsts-agent\src\Agent.Listener\Configuration\ConfigurationManager.cs:line 461 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.VisualStudio.Services.Agent.Listener.Configuration.ConfigurationManager.d__7.MoveNext() in C:\vsts-agent\src\Agent.Listener\Configuration\ConfigurationManager.cs:line 152 .net 4.5: Microsoft.VisualStudio.Services.Common.VssUnauthorizedException: VS30063: You are not authorized to access https://ting.tfsbuildhost8.tfsallin.net. at Microsoft.VisualStudio.Services.Common.VssHttpMessageHandler.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Services.Common.VssHttpRetryMessageHandler.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__45.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__42`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__27`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.d__26`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Services.WebApi.TaskExtensions.SyncResult[T](Task`1 task) at ConsoleApplication9.Program.Main(String[] args) in C:\Users\tihuang\Documents\Visual Studio 2015\Projects\ConsoleApplication9\ConsoleApplication9\Program.cs:line 105 ``` The Fiddler trace for both cases: ``` dotnet core: GET https://ting.tfsbuildhost8.tfsallin.net/_apis/distributedtask/pools?poolName=default HTTP/1.1 Connection: Keep-Alive Accept: application/json; api-version=3.0-preview.1 Accept-Encoding: gzip, peerdist Accept-Language: en-US Authorization: Basic VnN0c0FnZW50OmxscGQzb2djY2twdnJyNHh6NGtmeXpjeGdjN252cTNpYWVucHpqeXk0ZXk3emlqeXVmcmE= User-Agent: VSServices/15.255.65000.0 (NetStandard) VstsAgentCore-win7-x64/2.106.0 (Microsoft Windows 10.0.14393) X-TFS-FedAuthRedirect: Suppress X-TFS-Session: 43b8fed2-d9d7-4582-9c91-6538cdd26e79 X-P2P-PeerDist: Version=1.1 X-P2P-PeerDistEx: MinContentInformation=1.0, MaxContentInformation=2.0 Host: ting.tfsbuildhost8.tfsallin.net HTTP/1.1 401 Unauthorized Server: Microsoft-IIS/8.5 X-TFS-ProcessId: a3f879d3-c2d2-4c93-a872-671dd4b52407 Strict-Transport-Security: max-age=31536000; includeSubDomains Access-Control-Allow-Origin: * Access-Control-Max-Age: 3600 Access-Control-Allow-Methods: OPTIONS,GET,POST,PATCH,PUT,DELETE Access-Control-Expose-Headers: ActivityId,X-TFS-Session,X-MS-ContinuationToken Access-Control-Allow-Headers: authorization X-FRAME-OPTIONS: SAMEORIGIN WWW-Authenticate: Basic realm=""https://app.tfsbuildhost8.tfsallin.net/"" X-Powered-By: ASP.NET P3P: CP=""CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT"" X-Content-Type-Options: nosniff Date: Tue, 30 Aug 2016 17:17:37 GMT Content-Length: 0 .net 4.5: GET https://ting.tfsbuildhost8.tfsallin.net/_apis/distributedtask/pools HTTP/1.1 Accept: application/json; api-version=3.0-preview.1 User-Agent: VSServices/15.104.25627.0 (ConsoleApplication9.exe) Accept-Language: en-US X-TFS-FedAuthRedirect: Suppress X-TFS-Session: 7b7a5d6a-e30f-4511-bf16-6396c91317b2 X-VSS-Agent: VSS: fe82a6ab-72ed-4ce2-8e28-d626d07f5d24 Authorization: Basic VnN0c0FnZW50OmxscGQzb2djY2twdnJyNHh6NGtmeXpjeGdjN252cTNpYWVucHpqeXk0ZXk3emlqeXVmcmE= Host: ting.tfsbuildhost8.tfsallin.net Accept-Encoding: gzip HTTP/1.1 401 Unauthorized Server: Microsoft-IIS/8.5 X-TFS-ProcessId: a3f879d3-c2d2-4c93-a872-671dd4b52407 Strict-Transport-Security: max-age=31536000; includeSubDomains Access-Control-Allow-Origin: * Access-Control-Max-Age: 3600 Access-Control-Allow-Methods: OPTIONS,GET,POST,PATCH,PUT,DELETE Access-Control-Expose-Headers: ActivityId,X-TFS-Session,X-MS-ContinuationToken Access-Control-Allow-Headers: authorization X-FRAME-OPTIONS: SAMEORIGIN WWW-Authenticate: Basic realm=""https://app.tfsbuildhost8.tfsallin.net/"" X-Powered-By: ASP.NET P3P: CP=""CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT"" X-Content-Type-Options: nosniff Date: Tue, 30 Aug 2016 17:17:11 GMT Content-Length: 0 ``` Also, the ""WinHttpException: The parameter is incorrect"" doesn't tell me which parameter is incorrect which cause the exception message a little bit useless. I can provide repro environment if needed. " +11270 area-System.Text ArgumentOutOfRangeException when combining Enumeration Flags in RegexOptions "There seems to be a problem with combining RegexOptions in .NET Core. Run the following 2-line console program: ``` var wordRegex = new Regex(@""[\w\#@]+"", RegexOptions.Compiled | RegexOptions.ECMAScript); System.Console.WriteLine(wordRegex.IsMatch(""asdf"")); ``` Produces the following run-time error: ``` Unhandled Exception: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: options at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, TimeSpan matchTimeout, Boolean useCache) at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options) at FlagsAttrBug.Program.Main(String[] args) ``` [Documentation](https://docs.microsoft.com/en-us/dotnet/core/api/system.text.regularexpressions.regexoptions#System_Text_RegularExpressions_RegexOptions_ECMAScript) explicitly states that these two flags can be used together: > Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the IgnoreCase, Multiline, and Compiled values. The use of this value with any other values results in an exception. This works fine in other versions of .NET Framework, for example it works fine in .NET Framework 3.5. Version info: ``` .NET Command Line Tools (1.0.0-preview2-003121) Product Information: Version: 1.0.0-preview2-003121 Commit SHA-1 hash: 1e9d529bc5 Runtime Environment: OS Name: ubuntu OS Version: 16.04 OS Platform: Linux RID: ubuntu.16.04-x64 ``` " +11271 area-System.ComponentModel Port S.ComponentModel.* selectively The following members are missing and show up in the usage of the top 100 apps. ``` T:System.ComponentModel.Component M:System.ComponentModel.Component.Dispose M:System.ComponentModel.Win32Exception.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) T:System.ComponentModel.ReferenceConverter T:System.ComponentModel.ComponentConverter T:System.ComponentModel.InvalidEnumArgumentException T:System.ComponentModel.ISynchronizeInvoke M:System.ComponentModel.ISynchronizeInvoke.Invoke(System.Delegate,System.Object[]) T:System.ComponentModel.ListChangedEventArgs T:System.ComponentModel.ListChangedEventHandler M:System.ComponentModel.ListChangedEventArgs.#ctor(System.ComponentModel.ListChangedType,System.Int32) T:System.ComponentModel.IBindingList M:System.ComponentModel.ListChangedEventHandler.Invoke(System.Object,System.ComponentModel.ListChangedEventArgs) M:System.ComponentModel.ToolboxItemAttribute.#ctor(System.Boolean) T:System.ComponentModel.ToolboxItemAttribute M:System.ComponentModel.InvalidEnumArgumentException.#ctor(System.String) M:System.ComponentModel.InvalidEnumArgumentException.#ctor(System.String,System.Int32,System.Type) ``` Investigate and bring back as appropriate. Note that in general we only bring back types with all their members or not at all. The list seems like a grab-bag: may need to investigate what the apps are actually doing and perhaps just bring back the attributes and exceptions only. +11274 area-System.Xml Building System.Private.Xml with TargetGroup=netcore50aot Failed src\System.Private.Xml\src\System.Private.Xml.csproj does not build with /p:TargetGroup=netcore50aot. The following command fails, ``` D:\OSS\corefx-1\corefx\src\System.Private.Xml\src>msbuild System.Private.Xml.csproj /p:TargetGroup=netcore50aot ``` +11275 area-System.Runtime Add System.AppDomain apis currently build fails as System.Reflection.Assembly should be present in system.runtime.dll. So waiting for PR#11099 +11277 area-System.Reflection Add missing reflection apis M:System.Reflection.Assembly.LoadFrom(System.String) M:System.Reflection.Assembly.add_ModuleResolve(System.Reflection.ModuleResolveEventHandler) M:System.Reflection.Assembly.get_GlobalAssemblyCache M:System.Reflection.Assembly.get_HostContext M:System.Reflection.Assembly.get_IsFullyTrusted M:System.Reflection.Assembly.Load(System.Byte[]) M:System.Reflection.Assembly.Load(System.Byte[],System.Byte[]) M:System.Reflection.Assembly.LoadFile(System.String) M:System.Reflection.Assembly.LoadWithPartialName(System.String) M:System.Reflection.Assembly.remove_ModuleResolve(System.Reflection.ModuleResolveEventHandler) M:System.Reflection.ModuleResolveEventHandler.#ctor(System.Object,System.IntPtr) M:System.Reflection.ModuleResolveEventHandler.BeginInvoke(System.Object,System.ResolveEventArgs,System.AsyncCallback,System.Object) M:System.Reflection.ModuleResolveEventHandler.EndInvoke(System.IAsyncResult) M:System.Reflection.ModuleResolveEventHandler.Invoke(System.Object,System.ResolveEventArgs) M:System.ResolveEventArgs.#ctor(System.String) M:System.ResolveEventArgs.#ctor(System.String,System.Reflection.Assembly) M:System.ResolveEventArgs.get_Name M:System.ResolveEventArgs.get_RequestingAssembly M:System.ResolveEventHandler.#ctor(System.Object,System.IntPtr) M:System.ResolveEventHandler.BeginInvoke(System.Object,System.ResolveEventArgs,System.AsyncCallback,System.Object) M:System.ResolveEventHandler.EndInvoke(System.IAsyncResult) M:System.ResolveEventHandler.Invoke(System.Object,System.ResolveEventArgs) T:System.Reflection.ModuleResolveEventHandler T:System.ResolveEventArgs T:System.ResolveEventHandler +11278 area-Infrastructure Publish build-info to projectk-tfs/release/1.1.0 when building 1.1.0 on TFS Currently the versions repo structure is based on github branches, with [`projectk-tfs/master` and `projectk-tfs/release/1.0.0`](https://github.com/dotnet/versions/tree/master/build-info/dotnet/projectk-tfs). In reality these build-infos come from ProjectK and ProjectKRel. Assumption: we will build any remaining TFS-side part of 1.1.0 using ProjectKRel. If that's true, when it starts building 1.1.0 we should change where it posts its build info to `projectk-tfs/release/1.1.0`. We'll also need to change the CoreFX build-info dependency. This will also apply to ProjectNRel. (Producing the NETNative targeting pack.) Does this sound accurate to the branching plan, @weshaggard? /cc @SedarG +11279 area-System.IO Followup on BufferedStream.cs L439 per TODO on https://github.com/dotnet/corefx/blob/dev/api/src/System.IO/src/System/IO/BufferedStream.cs#L439 +11282 area-System.Runtime Proposal: Add support for 'precompiled' inputs to String.IndexOfAny/LastIndexOfAny "## Background `IndexOfAny` has to go through a string and see if any of the characters match one in a specified character array. Here is an example of how it could be implemented: ``` cs public static int IndexOfAny(this string s, char[] anyOf) { for (int i = 0; i < s.Length; i++) { for (int j = 0; j < anyOf.Length; j++) { if (s[i] == anyOf[j]) return i; } } return -1; // not found } ``` This implementation can be extremely inefficient for larger arrays, however, since it requires making a pass over the array for every char in the string. So, the [current implementation](https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/String.Searching.cs#L98-L99) does a trick to speed this up. What it does is, before actually going through the string, it 'compiles' the char array down to a 256-bit long ""probabilistic map."" It takes each char and splits it into 2 bytes M and N, and sets the Mth and Nth bits of the map to indicate that those bytes are present in the array. When it wants to see if a char is in the array, it first checks if the 2 bytes corresponding to the char are set. Assuming there are no ""collisions,"" (one char that steals bytes from 2 different chars, which will not happen for ASCII data), checking if the array contains a char is now O(1). ## Problem This probabilistic map has to be re-compiled for every input array. Even if the exact same array is passed multiple times to `IndexOfAny`, which means the exact same bitmap will be generated, it will still have to re-initialize and fill out the same map every time. This can particularly hurt with large arrays; for example, I posted findings in [this issue](https://github.com/dotnet/corefx/issues/10973#issuecomment-243640020) that initializing this map was consuming **as much as 60% of CPU time** in `Path.Combine`, in spite of all of the other allocations going on in the method. ## Proposal: Pre-compiled Probabilistic Maps I propose adding an API that would allow end-users to ""precompile"" the map before passing it in to `IndexOfAny` / `LastIndexOfAny`. If this is a frequently used function in their code, then this will undoubtedly result in performance gains since there is no ""initialization"" work to be done prior to processing the string. (Of course, people will still be free to use the `char[]`-based overload.) Here is a prototype of what this API could look like: ``` cs namespace System { public class String { // Existing API public int IndexOfAny(char[] anyOf); public int IndexOfAny(char[] anyOf, int startIndex); public int IndexOfAny(char[] anyOf, int startIndex, int count); public int LastIndexOfAny(char[] anyOf); public int LastIndexOfAny(char[] anyOf, int startIndex); public int LastIndexOfAny(char[] anyOf, int startIndex, int count); // New API public int IndexOfAny(ProbabilisticMap anyOf); public int IndexOfAny(ProbabilisticMap anyOf, int startIndex); public int IndexOfAny(ProbabilisticMap anyOf, int startIndex, int count); public int LastIndexOfAny(ProbabilisticMap anyOf); public int LastIndexOfAny(ProbabilisticMap anyOf, int startIndex); public int LastIndexOfAny(ProbabilisticMap anyOf, int startIndex, int count); } } namespace System.Text { public class ProbabilisticMap { public ProbabilisticMap(char[] anyOf); // All of the ""compilation"" work is done here } } ``` `ProbabilisticMap` would internally hold references to the char array and the bitmap. These members would be accessible from the String functions, but not from end-user code. We would make a defensive copy of the `anyOf` array to prevent the map from changing if the user mutated the array after passing it to the constructor. ## Usage Typical usage would involve caching the `ProbabilisticMap` in a static field and then passing it to `IndexOfAny` from a function. For example, here is how [this snippet](https://github.com/jamesqo/corefx/blob/1962d3f68e4d547cd1904f435e939c63b137cf1d/src/System.Private.Uri/src/System/Uri.cs#L1710-L1717) from `Uri.CheckForColonInFirstPathSegment` could be rewritten: ``` cs private static readonly ProbabilisticMap s_pathDelimsMap = new ProbabilisticMap(new char[] { ':', '\\', '/', '?', '#' }); private static bool CheckForColonInFirstPathSegment(string uriString) { int index = uriString.IndexOfAny(s_pathDelimsMap); return (index >= 0 && uriString[index] == ':'); } ``` What are your thoughts on this? /cc @benaadams, @GSPP, @omariom " +11283 area-System.Linq Some small expression visitor optimizations Noticed a few places where `ExpressionVisitor` and derived types can save some memory allocations: - `VisitNew` reads `Arguments`, possibly causing allocation of a `ReadOnlyCollection`; it can use `IArgumentProvider` - `VisitBlock` - in `ExpressionVisitor` mimics `VisitArguments` but in a more convoluted way with no clear benefit; it can be simplified a bit - in `ExpressionQuoter` reads `Expressions`, possibly causing allocation of `ReadOnlyCollection`; it can use the same logic as the base class - the logic used in both of these can be centralized in `ExpressionVisitorUtils` to reduce code copies - `VisitLambda` in `ExpressionQuoter` can avoid a `Push` into the scope stack when `Parameters` is empty +11284 area-System.Runtime Move `List` and `EqualityComparer/Comparer` to CoreLib +11285 area-System.Linq Some memory optimizations in expression visitors This fixes issue #11283. CC @VSadov +11286 area-System.Linq Review nameof / string interpolation usages in expression tree library - Noticed an unconditional use of string interpolation causing allocations only relevant for error cases - Some places where string literals could be replaced by `nameof` +11287 area-System.Linq Adding some nameof uses and removing some string interpolation This addresses issue #11286. CC @VSadov +11288 area-System.Diagnostics Revisit System.Diagnostics.Tests.DebugTests to test Full framework implementation. The tests under System.Diagnostics.Tests.DebugTests in System.Diagnostics.Debug.Tests.dll are skipped for Net46 runs, as they use an internal field from System.Diagnostics.Debug implementation from .NET Core that's not available in Desktop implementation. Desktop implementation source code is [here](https://referencesource.microsoft.com/#System/compmod/system/diagnostics/Debug.cs,632c6da37ce825df). +11291 area-System.Collections Proposal: Dictionary with key and value in same object "Sometime when you create a Dictionary, the key is already in the value. It is redundant to specify the key twice, like this: ``` C# var dictionary = new Dictionary { {123, new Foo(123, ""hello"")}, {987, new Foo(987, ""world"")} }; ``` One solution is to use the abstract class [`KeyedCollection`](https://msdn.microsoft.com/en-us/library/ms132438%28v=vs.110%29.aspx) like this ``` C# class MyKeyedCollection : KeyedCollection { protected override int GetKeyForItem(Foo item) { return item.Id; } } var collection = new MyKeyedCollection { new Foo(123, ""hello""), new Foo(987, ""world"") }; ``` The problem with that is that you have to create a custom class each time you use it. My suggestion is to create a Dictionary that take a Func in the construction to be used to get the key from the value. ``` C# var directory = new KeyedDictionary(x => x.Id) { new Foo(123, ""hello""), new Foo(987, ""world"") }; Debug.WriteLine(directory[123]); Debug.WriteLine(directory[987]); public class KeyedDictionary : IDictionary { private readonly Func _keyGetter; private readonly IDictionary _dictionary = new Dictionary(); public KeyedDictionary(Func keyGetter) { _keyGetter = keyGetter; } public void Add(TValue value) { var key = _keyGetter(value); _dictionary.Add(key, value); } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); public IEnumerator> GetEnumerator() => _dictionary.GetEnumerator(); public void Clear() => _dictionary.Clear(); public bool Contains(KeyValuePair item) => _dictionary.Contains(item); public void CopyTo(KeyValuePair[] array, int arrayIndex) => _dictionary.CopyTo(array, arrayIndex); public bool Remove(KeyValuePair item) => _dictionary.Remove(item); public int Count => _dictionary.Count; public bool IsReadOnly => _dictionary.IsReadOnly; public bool ContainsKey(TKey key) => _dictionary.ContainsKey(key); public bool Remove(TKey key) => _dictionary.Remove(key); public bool TryGetValue(TKey key, out TValue value) => _dictionary.TryGetValue(key, out value); public ICollection Keys => _dictionary.Keys; public ICollection Values => _dictionary.Values; public TValue this[TKey key] { get { return _dictionary[key]; } set { throw new NotSupportedException(); } } void ICollection>.Add(KeyValuePair item) { throw new NotSupportedException(); } void IDictionary.Add(TKey key, TValue value) { throw new NotSupportedException(); } } ``` " +11292 area-System.Net Cannot set udpClient.ExclusiveAddressUse = false in macOS and Linux "I originally posted this as a comment to this closed issue: https://github.com/dotnet/corefx/issues/8552#issuecomment-243579967 Since the issue is somewhat different, I decided to open a new one. I am implementing a Multicast application, which requires me to allow to bind multiple sockets to the same port on a machine. While working fine on windows 10 setting `udpClient.ExclusiveAddressUse = false` fails for me on Linux and macOS with a SocketErrorCode 45 (Operation Not Supported) and an HResult of 0x80004005, which translates to ""E_FAIL"" or ""Unspecified Error"" as per this listing: https://msdn.microsoft.com/en-us/library/cc704587.aspx I am testing on Windows 10 and macOS using the latest version of everything. On Windows 10 I have to use: `udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);` for it to work. Using only `udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ExclusiveAddressUse, false);` doesn't do a thing on windows and I receive an error. On macOS I receive an error as follows, when using: `udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ExclusiveAddressUse, false);` Error: > System.Net.Sockets.SocketException : Operation not supported > at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue, Boolean silent) > at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue) > at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Boolean optionValue) While using: `udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);` on macOS does not throw and exception, but does not work for me either. The property udpClient.ExclusiveAddressUse behaves accordingly, in that it is working on Windows 10 and fails on macOS. Is there anything I am missing or doing wrong here? " +11295 area-System.Net NetworkStream.Write does not send all bytes to the socket I'm not (yet :-) running .NET Core on my ARM platform, but I have been running into an issue with Mono in the NetworkStream class that's part of their implementation from the shared source. I have created https://bugzilla.xamarin.com/show_bug.cgi?id=43902 and try to create awareness of an assumption in a comment that's not true. For convenience, here is a copy of the issue: My setup is a program that saturates a network link by `Write`ing `byte[]` buffers of length 16384 until exactly 10 MiB are written. Those are transported via an IPv6 based `TcpClient` from a Linux kernel 3.14.58 USB RNDIS interface to a connected Windows machine. On the Windows machine, I use ncat to write the transported data to a file and verify that exactly 10485760 bytes have been received. The latter sometimes fails for Mono 4.4.1. I have changed the code around the [`chkStreamSocket.Send`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/NetworkStream.cs#L505) call in the `NetworkStream.Write` method to actually check the return value. I can see that the returned number of bytes written is not the length of the buffer (I've seen 4512 or 12736 instead of 16384). The comment above the Send call seems to assume that this doesn't happen for blocking sockets, however this isn't true for this `Blocking==true` socket. The amount of failures seems to be directly correlated to the speed of the network connection. On my main development machine, the USB network connection saturates above 100Mbit and the issues are very seldom. On another computer, the saturation is already at 35Mbit and there are multiple occurrences in each 10 MiB blob, so this looks like the socket's internal buffer might not have enough room for all data and only accepts less than the full buffer. +11296 area-System.Net NetworkStream.Write does not send all bytes to the socket I'm not (yet :-) running .NET Core on my embedded ARM platform, but I have been running into an issue with mono where a comment in the shared source isn't true. Since the same code is used here, I thought it might be a good idea to raise awareness early. The following is a copy of https://bugzilla.xamarin.com/show_bug.cgi?id=43902 for convenience. The `NetworkStream.Write()` function doesn't transmit the entire buffer since I updated from 4.0.4 to 4.4.1. My setup is a program that saturates a network link by `Write`ing `byte[]` buffers of length 16384 until exactly 10 MiB are written. Those are transported via an IPv6 based `TcpClient` from a Linux kernel 3.14.58 USB RNDIS interface to a connected Windows machine. On the Windows machine, I use ncat to write the transported data to a file and verify that exactly 10485760 bytes have been received. The latter sometimes fails for Mono 4.4.1. I have changed the code around the [`chkStreamSocket.Send`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/NetworkStream.cs#L505) call in the `NetworkStream.Write` method to actually check the return value. I can see that the returned number of bytes written is not the length of the buffer (I've seen 4512 or 12736 instead of 16384). The comment above the `Send` call seems to assume that this doesn't happen for blocking sockets, however this isn't true for this `Blocking==true` socket. The amount of failures seems to be directly correlated to the speed of the network connection. On my main development machine, the USB network connection saturates above 100Mbit and the issues are very seldom. On another computer, the saturation is already at 35Mbit and there are multiple occurrences in each 10 MiB blob, so this looks like the socket's internal buffer might not have enough room for all data and only accepts less than the full buffer. +11297 area-System.Security S.S.P missing Token property As per http://referencesource.microsoft.com/#mscorlib/system/security/principal/windowsidentity.cs,ec5619fe4ea57a04, `WindowsIdentity.Token` can be defined in CoreFX as: ``` c# public virtual IntPtr Token => m_safeTokenHandle.DangerousGetHandle(); ``` The current workaround for consumers is: `AccessToken.DangerousGetHandle()`. +11299 area-System.Runtime Remove redundant internal type definitions that are now publically exposed elsewhere There are some internal type definitions under the Common directory, which are included into multiple projects. Those types are now publically exposed from System.Runtime or elsewhere. Remove the internal type definitions in favor of the public types. This would involve retargeting any projects that were including the internal types to netstandard1.7, so that they can reference the public type. - SafeHandleMinusOneIsInvalid - SafeHandleZeroOrMinusOneIsInvalid - SafeFileHandle +11301 area-System.Linq Address some oddities in IndexExpression.FindProperty and MethodCallExpression.FindMethod - It uses the current culture for a string comparison - Use of some reflection APIs could be restored +11303 area-System.IO [dev/api] System.IO.Tests.FileStream_WriteAsync.ManyConcurrentWriteAsyncs failing in netcoreapp1.1 non-Windows runs "cc: @stephentoub Test run output: ``` ./corerun xunit.console.netcore.exe System.IO.FileSystem.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.IO.FileSystem.Tests Discovered: System.IO.FileSystem.Tests Starting: System.IO.FileSystem.Tests System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions [SKIP] Condition(s) not met: ""IsNotWindowsNanoServer"" System.IO.Tests.FileStream_WriteAsync.ManyConcurrentWriteAsyncs [FAIL] Assert.Equal() Failure Expected: 10240 Actual: 8192 Stack Trace: at System.IO.Tests.FileStream_WriteAsync.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Finished: System.IO.FileSystem.Tests === TEST EXECUTION SUMMARY === System.IO.FileSystem.Tests Total: 2131, Errors: 0, Failed: 1, Skipped: 1, Time: 11.415s Finished running tests. End time=17:11:08. Return value was 1 ``` " +11305 area-System.IO Add new compression tests Adds tests to cover deflate64 zips and zips with sparse files that currently fail with some buffer sizes related to: #11264, #11235 requires: https://github.com/dotnet/corefx-testdata/pull/11 and a manual publish of the new testdata package to myget @stephentoub +11306 area-System.Runtime [dev/api] Some EnvironmentTests fail in non-Windows netcoreapp1.1 runs cc: @stephentoub ``` ./corerun xunit.console.netcore.exe System.Runtime.Extensions.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Extensions.Tests Discovered: System.Runtime.Extensions.Tests Starting: System.Runtime.Extensions.Tests System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(folder: CommonTemplates) [FAIL] Assert+WrapperXunitException : File path: /Users/joperezr/Desktop/git/corefx/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs. Line: 224 ---- Assert.NotEmpty() Failure Stack Trace: at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) at System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(SpecialFolder folder) ----- Inner Stack Trace ----- at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(folder: Templates) [FAIL] Assert+WrapperXunitException : File path: /Users/joperezr/Desktop/git/corefx/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs. Line: 224 ---- Assert.NotEmpty() Failure Stack Trace: at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) at System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(SpecialFolder folder) ----- Inner Stack Trace ----- at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(folder: MyVideos) [FAIL] Assert+WrapperXunitException : File path: /Users/joperezr/Desktop/git/corefx/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs. Line: 224 ---- Assert.NotEmpty() Failure Stack Trace: at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) at System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(SpecialFolder folder) ----- Inner Stack Trace ----- at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) Finished: System.Runtime.Extensions.Tests === TEST EXECUTION SUMMARY === System.Runtime.Extensions.Tests Total: 922, Errors: 0, Failed: 3, Skipped: 0, Time: 3.107s Finished running tests. End time=17:17:34. Return value was 3 ``` +11307 area-System.Runtime [dev/api] Some new TimeZoneInfo tests are failing in non-Windows netcoreapp1.1 runs cc: @hann013 @stephentoub @danmosemsft ``` ./corerun xunit.console.netcore.exe System.Runtime.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Tests Discovered: System.Runtime.Tests Starting: System.Runtime.Tests System.Tests.TimeZoneInfoTests.ConvertTime_DateTimeOffset_Invalid_TimeZoneNotFoundException [FAIL] Assert.Throws() Failure Expected: typeof(System.TimeZoneNotFoundException) Actual: typeof(System.Security.SecurityException): The time zone ID 'Pacific' was found on the local computer, but the application does not have permission to read the file. Stack Trace: at System.TimeZoneInfo.FindSystemTimeZoneById(String id) at System.Tests.TimeZoneInfoTests.<>c__DisplayClass70_0`1.b__0() System.Tests.TimeZoneInfoTests.ClearCachedData [FAIL] System.TimeZoneNotFoundException : The time zone ID 'Central Standard Time' was not found on the local computer. ---- System.IO.FileNotFoundException : Could not find file '/usr/share/zoneinfo/Central Standard Time'. Stack Trace: at System.TimeZoneInfo.FindSystemTimeZoneById(String id) at System.Tests.TimeZoneInfoTests.ClearCachedData() ----- Inner Stack Trace ----- at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.File.InternalReadAllBytes(String path, Boolean checkHost) at System.TimeZoneInfo.TryGetTimeZoneByFile(String id, TimeZoneInfo& value, Exception& e) Finished: System.Runtime.Tests === TEST EXECUTION SUMMARY === System.Runtime.Tests Total: 6185, Errors: 0, Failed: 2, Skipped: 0, Time: 1.136s Finished running tests. End time=17:19:51. Return value was 2 ``` +11308 area-System.Linq Simplify IndexExpression.FindProperty and MethodCallExpression.FindMethod This addresses issue #11301. CC @VSadov, @stephentoub, @justinvp +11309 area-System.Net [WebSockets] If TCP connection closed without WebSocket close, ManagedWebSocket keeps returning 0-byte frames **Overview:** In some browsers and clients, it is possible to terminate the underlying TCP connection without a proper close handshake. In these cases, `ManagedWebSocket` begins interminably returning 0-byte frames from `ReceiveAsync`. This can be observed using a Safari browser, and running a SignalR sample as described here: https://github.com/aspnet/SignalR-Server/issues/202, but I've produced a candidate fix and a simpler repro (detailed below). **Repro steps** (sorry they are a bit rough, but I needed to use the Node WebSocket client to simulate the things I'm seeing). The repro requires VS+.NET Core tools and Node JS (again, it was the easiest client I could use to exhibit the behavior reliably) 1. Clone https://github.com/aspnet/WebSockets, check out `anurse/websocket-repro` and open the SLN up in VS 2. Run `dotnet restore` in the repo root 3. Run `dotnet run` from the `samples\EchoApp` directory in the repo. 4. Check the output to verify the port number (it should be `5000`, but if not, just adjust the final step as necessary) 5. In another console window, clone https://gist.github.com/anurse/fe87ecf8aa01832a99dd247c64cb4595 (clone URL: https://gist.github.com/fe87ecf8aa01832a99dd247c64cb4595.git) somewhere and `cd` to it 6. Run `node main.js ws://localhost:5000` **Expected results:** ``` ps1 # node main.js ws://localhost:5000 WebSocket Client Connected Received: 'Hello, World' echo-protocol Connection Closed ``` And the log output from the server shows an exception because the underlying stream was closed without a close handshake. This is OK, since the client intentionally terminates the connection abruptly. Though maybe an exception isn't the best way to communicate that, who knows :). **Actual results:** Non-stop output until Ctrl-C is pressed (a few times ;P): ``` Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' Received: '' ``` Same on the server log ``` dbug: Echo[0] Received Frame Text: Len=0, Fin=True: dbug: Echo[0] Sent Frame Text: Len=0, Fin=True: dbug: Echo[0] Received Frame Text: Len=0, Fin=True: dbug: Echo[0] Sent Frame Text: Len=0, Fin=True: dbug: Echo[0] Received Frame Text: Len=0, Fin=True: dbug: Echo[0] Sent Frame Text: Len=0, Fin=True: dbug: Echo[0] Received Frame Text: Len=0, Fin=True: dbug: Echo[0] Sent Frame Text: Len=0, Fin=True: dbug: Echo[0] Received Frame Text: Len=0, Fin=True: dbug: Echo[0] Sent Frame Text: Len=0, Fin=True: ``` What's happening is that the call to EnsureBufferContainsAsync at https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ManagedWebSocket.cs#L618 is reading zero bytes from the underlying stream (because it has closed, and is thus reporting end-of-stream as per the Stream contract). However, `throwOnPrematureClosure` is `false`, which causes an empty frame to be returned. This repeats indefinitely as the caller keeps trying to read new frames. Changing `throwOnPrematureClosure` to `true` on this line **fixes the issue**, but I wasn't sure if this was safe to do since it seems intentional. I can send a PR to fix this if that sounds like the right fix. It doesn't seem too unsafe though, since if the stream closes, we should be returning some indication of that rather than an empty text frame. /cc @stephentoub @Tratcher @moozzyk +11310 area-System.Net Remove unnecessary null check in DomainNameHelper Found by a coverity scan cc: @cipop, @davidsh +11313 area-System.Collections [dev/api] Some Serialization tests are failing for System.Collections.Specialized netcoreapp1.1 runs cc: @stephentoub ``` call CoreRun.exe xunit.console.netcore.exe System.Collections.Specialized.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Collections.Specialized.Tests Discovered: System.Collections.Specialized.Tests Starting: System.Collections.Specialized.Tests System.Collections.Specialized.Tests.ListDictionaryKeysTests.IGenericSharedAPI_SerializeDeserialize(count: 0) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(19,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.IGenericSharedAPI_SerializeDeserialize(count: 1) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseSensitive_Tests.IGenericSharedAPI_SerializeDeserialize(count: 0) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.IGenericSharedAPI_SerializeDeserialize(count: 75) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryKeysTests.IGenericSharedAPI_SerializeDeserialize(count: 0) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryKeysTests.IGenericSharedAPI_SerializeDeserialize(count: 1) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseSensitive_Tests.IGenericSharedAPI_SerializeDeserialize(count: 1) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryKeysTests.IGenericSharedAPI_SerializeDeserialize(count: 75) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable+KeyCollection' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseSensitive_Tests.IGenericSharedAPI_SerializeDeserialize(count: 75) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseInsensitive_Tests.IGenericSharedAPI_SerializeDeserialize(count: 0) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseInsensitive_Tests.IGenericSharedAPI_SerializeDeserialize(count: 1) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseInsensitive_Tests.IGenericSharedAPI_SerializeDeserialize(count: 75) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryValuesTests.IGenericSharedAPI_SerializeDeserialize(count: 0) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryValuesTests.IGenericSharedAPI_SerializeDeserialize(count: 1) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryValuesTests.IGenericSharedAPI_SerializeDeserialize(count: 75) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Hashtable+ValueCollection' in Assembly 'System.Collections.NonGeneric, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.IGenericSharedAPI_SerializeDeserialize(count: 0) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.IGenericSharedAPI_SerializeDeserialize(count: 1) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.IGenericSharedAPI_SerializeDeserialize(count: 75) [FAIL] System.Runtime.Serialization.SerializationException : Type 'System.Collections.Specialized.ListDictionary+NodeKeyValueCollection' in Assembly 'System.Collections.Specialized, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.GetSerializableFields(Type type) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) F:\git\corefx\src\Common\tests\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs(25,0): at System.Collections.Tests.IEnumerable_NonGeneric_Tests.IGenericSharedAPI_SerializeDeserialize(Int32 count) Finished: System.Collections.Specialized.Tests === TEST EXECUTION SUMMARY === System.Collections.Specialized.Tests Total: 2106, Errors: 0, Failed: 18, Skipped: 0, Time: 0.453s Finished running tests. End time=15:57:56.05, Exit code = 18 ``` +11314 area-System.Linq Reducing code duplication in ExpressionQuoter and converging the copies. This contributes to #11097 by sharing `RuntimeVariables` and `MergedRuntimeVariables` types across interpreter and compiler. In addition, I'm simplifying some of the logic in the quoter used by the interpreter such that it converges with the one used by the compiler. In a separate step, I can work on sharing the common pieces through some base class (see comments in the PR). +11315 area-System.Security [dev/api] New System.Security.Cryptography.Algorithms tests are failing in netcoreapp1.1 runs cc: @steveharter Looks like some new tests that you added are broken in netcoreapp1.1. I'll comment them out for now, but this issue is to track the work of readding them back when fixed. This are the errors that I'm seeing: ``` ./corerun xunit.console.netcore.exe System.Security.Cryptography.Algorithms.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Security.Cryptography.Algorithms.Tests Discovered: System.Security.Cryptography.Algorithms.Tests Starting: System.Security.Cryptography.Algorithms.Tests System.Security.Cryptography.Dsa.Tests.DSAImportExport.MultiExport [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaKeyCreateByExplicitParameters' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaKeyCreateByExplicitParameters(SafeDsaHandle& dsa, Byte[] p, Int32 pLength, Byte[] q, Int32 qLength, Byte[] g, Int32 gLength, Byte[] y, Int32 yLength, Byte[] x, Int32 xLength) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ImportParameters(DSAParameters parameters) at System.Security.Cryptography.Dsa.Tests.DSAImportExport.MultiExport() System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaGenerateKey' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaGenerateKey(SafeDsaHandle& dsa, Int32 bits) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.GenerateKey() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey() System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateKey_1024 [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaGenerateKey' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaGenerateKey(SafeDsaHandle& dsa, Int32 bits) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.GenerateKey() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateKey(Func`2 getSize) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateKey(Int32 size) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateKey_1024() System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateSecondMinKey [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaGenerateKey' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaGenerateKey(SafeDsaHandle& dsa, Int32 bits) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.GenerateKey() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateKey(Func`2 getSize) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateSecondMinKey() System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateMinKey [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaGenerateKey' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaGenerateKey(SafeDsaHandle& dsa, Int32 bits) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.GenerateKey() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateKey(Func`2 getSize) at System.Security.Cryptography.Dsa.Tests.DSAKeyGeneration.GenerateMinKey() System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataNew1024 [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaGenerateKey' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaGenerateKey(SafeDsaHandle& dsa, Int32 bits) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.GenerateKey() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.CreateSignature(Byte[] hash) at System.Security.Cryptography.DSA.SignData(Byte[] data, Int32 offset, Int32 count, HashAlgorithmName hashAlgorithm) at System.Security.Cryptography.DSA.SignData(Byte[] data, HashAlgorithmName hashAlgorithm) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataNew1024() System.Security.Cryptography.Dsa.Tests.DSASignVerify.InvalidKeySize_DoesNotInvalidateKey [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaGenerateKey' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaGenerateKey(SafeDsaHandle& dsa, Int32 bits) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.GenerateKey() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.CreateSignature(Byte[] hash) at System.Security.Cryptography.DSA.SignData(Byte[] data, Int32 offset, Int32 count, HashAlgorithmName hashAlgorithm) at System.Security.Cryptography.DSA.SignData(Byte[] data, HashAlgorithmName hashAlgorithm) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.InvalidKeySize_DoesNotInvalidateKey() System.Security.Cryptography.Dsa.Tests.DSASignVerify.VerifyKnownSignature [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaKeyCreateByExplicitParameters' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaKeyCreateByExplicitParameters(SafeDsaHandle& dsa, Byte[] p, Int32 pLength, Byte[] q, Int32 qLength, Byte[] g, Int32 gLength, Byte[] y, Int32 yLength, Byte[] x, Int32 xLength) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ImportParameters(DSAParameters parameters) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.VerifyKnownSignature() System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataExplicit2048 [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaKeyCreateByExplicitParameters' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaKeyCreateByExplicitParameters(SafeDsaHandle& dsa, Byte[] p, Int32 pLength, Byte[] q, Int32 qLength, Byte[] g, Int32 gLength, Byte[] y, Int32 yLength, Byte[] x, Int32 xLength) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ImportParameters(DSAParameters parameters) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerify(Byte[] data, String hashAlgorithmName, DSAParameters dsaParameters) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataExplicit2048() System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataExplicit1024 [FAIL] System.EntryPointNotFoundException : Unable to find an entry point named 'CryptoNative_DsaKeyCreateByExplicitParameters' in DLL 'System.Security.Cryptography.Native'. Stack Trace: at Interop.Crypto.DsaKeyCreateByExplicitParameters(SafeDsaHandle& dsa, Byte[] p, Int32 pLength, Byte[] q, Int32 qLength, Byte[] g, Int32 gLength, Byte[] y, Int32 yLength, Byte[] x, Int32 xLength) at System.Security.Cryptography.DSAImplementation.DSAOpenSsl.ImportParameters(DSAParameters parameters) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerify(Byte[] data, String hashAlgorithmName, DSAParameters dsaParameters) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataExplicit1024() Finished: System.Security.Cryptography.Algorithms.Tests === TEST EXECUTION SUMMARY === System.Security.Cryptography.Algorithms.Tests Total: 395, Errors: 0, Failed: 10, Skipped: 0, Time: 1.138s Finished running tests. End time=16:43:47. Return value was 10 ``` +11319 area-Serialization Bump System.Xml.XmlSerializer Version before 1.2.0 We need to bump System.Xml.XmlSerializer's version before 1.2.0 release if the version hasn't been bumped yet. +11320 area-System.Reflection Restore remaining Reflection APIs (.NET Core) Here's a list of APIs that are still not exposed, either due to depending on a missing runtime implementation or requiring to expose types from other namespaces: ``` M:System.Reflection.Assembly.get_EscapedCodeBase M:System.Reflection.Assembly.get_Evidence M:System.Reflection.Assembly.get_GlobalAssemblyCache M:System.Reflection.Assembly.get_HostContext M:System.Reflection.Assembly.get_IsFullyTrusted M:System.Reflection.Assembly.Load(byte[],byte[],System.Security.Policy.Evidence) M:System.Reflection.Assembly.Load(byte[],byte[],System.Security.SecurityContextSource) M:System.Reflection.Assembly.Load(System.Reflection.AssemblyName,System.Security.Policy.Evidence) M:System.Reflection.Assembly.Load(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadFrom(System.String) M:System.Reflection.Assembly.LoadFrom(System.String,byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) M:System.Reflection.Assembly.LoadFrom(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadFrom(System.String,System.Security.Policy.Evidence,byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) M:System.Reflection.Assembly.LoadFile(System.String) M:System.Reflection.Assembly.LoadFile(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadModule(System.String,byte[]) M:System.Reflection.Assembly.LoadModule(System.String,byte[],byte[]) M:System.Reflection.Assembly.LoadWithPartialName(System.String) M:System.Reflection.Assembly.LoadWithPartialName(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.UnsafeLoadFrom(System.String) M:System.Reflection.AssemblyName.get_EscapedCodeBase M:System.Reflection.AssemblyName.get_KeyPair M:System.Reflection.AssemblyName.GetAssemblyName(System.String) M:System.Reflection.AssemblyName.ReferenceMatchesDefinition(System.Reflection.AssemblyName,System.Reflection.AssemblyName) M:System.Reflection.AssemblyName.set_KeyPair(System.Reflection.StrongNameKeyPair) M:System.Reflection.AssemblyNameProxy.GetAssemblyName(System.String) M:System.Reflection.FieldInfo.GetValueDirect(System.TypedReference) M:System.Reflection.FieldInfo.SetValueDirect(System.TypedReference,System.Object) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetIDsOfNames(System.GUID,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetType M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetTypeInfo(System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetTypeInfo(System.UInt32) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.Invoke(System.UInt32,System.GUID,System.UInt32,System.Int16,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) M:System.Reflection.MethodBase.get_IsSecurityCritical M:System.Reflection.MethodBase.get_IsSecuritySafeCritical M:System.Reflection.MethodBase.get_IsSecurityTransparent M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsAbstract M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsAssembly M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsConstructor M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFamily M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFamilyAndAssembly M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFamilyOrAssembly M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFinal M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsHideBySig M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsPrivate M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsPublic M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsSpecialName M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsStatic M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsVirtual M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetIDsOfNames(System.GUID,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetType M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetTypeInfo(System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetTypeInfoCount(System.UInt32) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.Invoke(System.UInt32,System.GUID,System.UInt32,System.UInt16,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) M:System.Reflection.Module.GetSignerCertificate M:System.Reflection.Pointer.ctor() M:System.Reflection.Emit.GenericTypeParameterBuilder.IsInstanceOfType(System.Object) ``` Plus `System.Reflection.StrongNameKeyPair` type and the following from `System.Type`: ``` M:System.Type.get_IsContextful M:System.Type.IsContextfulImpl M:System.Type.get_IsSecurityCritical M:System.Type.get_IsSecuritySafeCritical M:System.Type.get_IsSecurityTransparent M:System.Type.GetType(string,Func,Func) M:System.Type.GetType(string,Func,Func,bool) M:System.Type.GetType(string,Func,Func,bool,bool) ``` The following will also need to be restored: ``` M:System.Type.get_IsSecurityCritical M:System.Type.get_IsSecuritySafeCritical M:System.Type.get_IsSecurityTransparent ``` +11323 area-System.Linq Reduce some closures and allocations in LambdaCompiler Especially around the code dealing with `WriteBack` objects, we tend to allocate `List` objects when we may not need them. +11324 area-System.Collections SortedList indexer implementation of IDictionary throws ArgumentNullException in Desktop `SortedList`, `IDictionary.this[object key]` throws ArgumentException when the key is not compatible with `TKey` On Desktop ArgumentNullException is thrown. ArgumentNullException is incorrect, as key is not null, ArgumentException is more suited. This is a behavior change, filing issue to track on what we want to do with these differences. cc @terrajobst @weshaggard @stephentoub @danmosemsft +11325 area-System.Linq ILGen can use Debug.Assert in lieu of ContractUtils These methods are used internally; argument validation should be done much higher up. We don't need the redundant calls to `ContractUtils` methods in `Release` builds. +11326 area-System.Linq Reducing closure and list allocations in LambdaCompiler This addresses issue #11323 by: - Changing `WriteBack` delegate to take in `LambdaCompiler` so the closure doesn't have to include `this` - Splitting `AddressOfWriteBack` methods by adding a `Core` method to avoid closure allocation - Reducing closure size by reduce the number of locals needed in the write-back - Removing cleverness in `EmitArray` where a callback was used by inlining the logic in its single call site - Lazily allocating `List` at the point it's needed, using `null` to represent no write-backs - Using `List` instead of `IList` for `foreach` so it binds to struct-based `GetEnumerator` CC @VSadov +11327 area-System.Linq Consider caching some MemberInfo object that are frequently obtained "Most notably in `LambdaCompiler` and `ILGen`, we have a bunch of places where we call reflection repeatedly and allocate `Type[]` arrays to do so, e.g. ``` csharp _ilg.Emit(OpCodes.Callvirt, typeof(MethodInfo).GetMethod(""CreateDelegate"", new Type[] { typeof(Type), typeof(object) })); ``` We can use a lazy initialization pattern much like we do in the interpreter to cache instruction type instances upon first use: ``` csharp _ilg.Emit(OpCodes.Callvirt, s_createDelegate ?? (s_createDelegate = typeof(MethodInfo).GetMethod(""CreateDelegate"", new Type[] { typeof(Type), typeof(object) }))); ``` " +11328 area-System.Linq Reintroduce the use of Type.GetTypeCode in lieu of a custom implementation It seems this member was reintroduced in https://github.com/dotnet/corefx/pull/6815. Can we take a dependency on it again for e.g. `TypeCode System.Dynamic.Utils.TypeExtensions.GetTypeCode(this Type)` instead of using `if` checks? +11329 area-System.Linq Changing some runtime checks into asserts in ILGen These invariants are guaranteed higher up, all the way in expression factories or in the `LambdaCompiler`, so we can simply use asserts. CC @VSadov +11331 area-System.Net HttpClient Returns Successful Status Code for HEAD or GET Request When the Resource Does Not Exist "**Issue** When issuing a HEAD or GET request using HttpClient to a Request-URI (resource) which does not exist, the client returns an OK (200) response. This leads to edge cases where one may be trying to retrieve data from an external API and typed the resource incorrectly leading to an OK response, but no data. It also makes testing difficult due to unexpected behaviors. **Expected Behavior** HTTP Protocol specifies the following: > 9.3 GET > > **The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI**. If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process. > ... > > 9.4 HEAD > > **The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response**. > ... Thus, when running a HEAD or GET request to a non-existent resource, you should NOT receive an OK (200) response, but rather, a NotFound (404) as the resource does not exist (i.e. you cannot retrieve whatever information is available at a resource which does not exist). **How to Reproduce** Create a .NET Core Console App Run the following code in Program.cs and notice that success is true and the response's status code is OK (200). Repeat using GET instead of HEAD and notice the same result. ``` using System.Net.Http; namespace ApiTester { public class Program { public static void Main(string[] args) { using (var client = new HttpClient()) { using (var request = new HttpRequestMessage(new HttpMethod(""HEAD""), ""http://www.this.resource.does/not/exit"")) { using (var response = client.SendAsync(request).Result) { var success = response.IsSuccessStatusCode; } } } } } } ``` " +11333 area-System.Net HttpClient Throws An Exception for Requests When the Resource Does Not Exist "**Issue** When issuing a request using HttpClient to a Request-URI (resource) which does not exist, HttpClient throws an exception and does not handle gracefully. The exception is as follows: ``` {System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__101.MoveNext() --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext()} ``` This leads to confusing behavior making it hard to test specific edge cases. _NOTE_: This does NOT affect GET or HEAD as GET/HEAD requests return an OK (200) response which is documented in [Issue #11331](https://github.com/dotnet/corefx/issues/11331). **Expected Behavior** When running a request to a non-existent resource, HttpClient should NOT throw an exception, but rather, return a NotFound (404) response as the resource is not found. **How to Reproduce** Create a .NET Core Console App Run the following code in Program.cs and notice that the above exception is thrown. Repeat using different request types other than HEAD or GET. ``` using System.Net.Http; namespace ApiTester { public class Program { public static void Main(string[] args) { using (var client = new HttpClient()) { using (var request = new HttpRequestMessage(new HttpMethod(""OPTIONS""), ""http://www.this.resource.does/not/exit"")) { using (var response = client.SendAsync(request).Result) { var success = response.IsSuccessStatusCode; } } } } } } ``` " +11334 area-System.Linq Caching some reflection calls "This addresses issue #11327 by introducing a centralized place where we perform reflection calls to obtain commonly used members referenced by compiled code emitted for expression trees. We get savings in terms of memory churn due to `Type[]` allocations and avoid calling into reflection each time. A micro-benchmark shows good results: ``` csharp Test( ""C decimal..ctor(int)"", () => typeof(Decimal).GetConstructor(new[] { typeof(int) }), () => CachedReflectionInfo.Decimal_Ctor_Int32 ); Test( ""F Closure.Constants"", () => typeof(Closure).GetField(nameof(Closure.Constants)), () => CachedReflectionInfo.Closure_Constants ); Test( ""M RuntimeOps.Quote()"", () => typeof(RuntimeOps).GetMethod(nameof(RuntimeOps.Quote)), () => CachedReflectionInfo.RuntimeOps_Quote ); Test( ""M MethodInfo.CreateDelegate(Type, object)"", () => typeof(MethodInfo).GetMethod(nameof(MethodInfo.CreateDelegate), new[] { typeof(Type), typeof(object) }), () => CachedReflectionInfo.MethodInfo_CreateDelegate_Type_Object ); ``` produces (`/o+` on Windows 10 with Release bits) ``` C decimal..ctor(int) 00.86479 00.00034 F Closure.Constants 00.04973 00.00033 M RuntimeOps.Quote() 00.06998 00.00038 M MethodInfo.CreateDelegate(Type, object) 00.32893 00.00032 ``` The number of members (lazily) cached is quite low and most of them are like to be looked up multiple times if they're used at least once (e.g. ""if you got one X, you likely have many"" where X could be a `Quote` node, a nested lambda, a `decimal` literal). CC @VSadov " +11335 area-System.Text Test failure in Microsoft.Framework.WebEncoders.TextEncoderSettingsTests.Clear PR https://github.com/dotnet/corefx/pull/11329 failed with the following stack trace: ``` 20:27:25 Microsoft.Framework.WebEncoders.TextEncoderSettingsTests.Clear [FAIL] 20:27:25 System.IndexOutOfRangeException : Index was outside the bounds of the array. 20:27:25 Stack Trace: 20:27:25 at System.Text.Internal.AllowedCharactersBitmap.IsCharacterAllowed(Char character) 20:27:25 at Microsoft.Framework.WebEncoders.TextEncoderSettingsExtensions.IsCharacterAllowed(TextEncoderSettings settings, Char character) 20:27:25 at Microsoft.Framework.WebEncoders.TextEncoderSettingsTests.Clear() ``` See http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/3793. +11339 area-System.Net SendReceiveTest.SendReceive_VaryingLengthBuffers_Success failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/ubuntu14.04_debug_prtest/596/consoleText ``` System.Net.WebSockets.Client.Tests.SendReceiveTest.SendReceive_VaryingLengthBuffers_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] System.Net.WebSockets.WebSocketException : The 'System.Net.WebSockets.InternalClientWebSocket' instance cannot be used for communication because it has been transitioned into the 'Aborted' state. ---- System.ObjectDisposedException : Cannot access a disposed object. Object name: 'ClientWebSocket'. Stack Trace: at System.Net.WebSockets.ManagedWebSocket.d__60.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.WebSockets.Client.Tests.SendReceiveTest.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.WebSockets.ManagedWebSocket.d__69.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.ManagedWebSocket.d__60.MoveNext() ``` +11341 area-System.Net Disable most networking tests for default CI runs "Lately, the CI system and test server infrastructure has been overloaded with many PRs. This is causing many networking tests to randomly fail due to resource exhaustion caused by so many simultaneous PR runs on the same CI machines. This occurrs not only when using an external test server endpoint (corefx-net.cloudapp.net) but also loopback servers. To improve engineering efficiency for the team, we are moving most of the tests in the networking libraries from the default CI runs (innerloop). For developers working on networking libraries, the networking tests can be run by invoking the ""outerloop"" tests. We will not be allowing any merges of PRs in the networking libraries unless the outerloop tests are also run by the developer. This affects tests in the following libraries right now: - System.Net.Http - System.Net.Http.WinHttpHandler - System.Net.Sockets - System.Net.Security - System.Net.WebSockets.Client I will be working on fine tuning these exclusions (issue #11345) to try to bring back tests into the innerloop runs when we have begun to address the infrastructure issues. " +11342 area-System.IO Make Stream.CopyTo virtual ## Background Currently for non-seekable streams, the overload of [`Stream.CopyTo`](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/IO/Stream.cs#L191) that does not accept a buffer size defaults to using a 81920-length byte buffer between reads/writes. Although this is under the LOH threshold which is ~85K, it still generates substantial garbage for the GC to clean up, especially for people who are using small streams and aren't expecting such a gigantic buffer to be used. ## Proposal We should make `Stream.CopyTo(Stream, int)` virtual. This would allow `byte[]`-based Streams, such as `MemoryStream`, to avoid using an intermediary buffer altogether, resulting in substantial memory savings. The corresponding async version, `CopyToAsync(Stream, int, CancellationToken)`, is already virtual, so IMO there's no reason it shouldn't be done for this overload as well. ## Proposed API ``` cs namespace System.IO { public abstract class Stream { public void CopyTo(Stream destination, int bufferSize); // existing public virtual void CopyTo(Stream destination, int bufferSize); // new } public class MemoryStream : Stream { public override void CopyTo(Stream destination, int bufferSize); } } ``` +11343 area-System.Linq A few System.Linq.Queryable.Tests issues on AOT Four test failures: ``` System.Linq.Tests.QueryFromExpressionTests.ConditionalNotNotEqualAddPlusConstantNegateConstant System.PlatformNotSupportedException : UnsupportedExpressionType, UnaryPlus System.Linq.Tests.QueryFromExpressionTests.ConditionalNotNotEqualAddCheckedPlusConstantNegateCheckedConstant System.PlatformNotSupportedException : UnsupportedExpressionType, UnaryPlus System.Linq.Tests.ElementAtTests.IndexEqualsCount Assert.Equal() Failure Expected: index Actual: ArgumentOutOfRange_Index System.Linq.Tests.ElementAtTests.EmptyIndexZero Assert.Equal() Failure Expected: index Actual: ArgumentOutOfRange_Index ``` +11345 area-System.Net Re-enable more networking tests for innerloop PR #11341 moved the majority of networking tests to outerloop due to infrastructure issues. This issue will track putting back tests as we strengthen the test infrastructure to allow more networking tests to run as innerloop. +11348 area-System.Net fix #11309 in WebSockets by throwing when the underlying connection is closed /cc @stephentoub @Tratcher @moozzyk Fixes #11309 The `if` clause is also no longer needed because the only way it could be triggered is if `EnsureBufferContainsAsync` completed successfully but hadn't read enough data (which only occurs when `throwOnPrematureClosure` is `true`). +11349 area-System.IO Use rooted path for symlink creation in IO tests calling `ln` was causing System.Diagnostics.Process to do some unnecessary work to determine the path to the function. Along the way, it was failing a proc_pidpath call on the current pid which has been causing intermittent failures in the FSW tests. We circumvent that failure by using the direct binpath to `ln`. related to: https://github.com/dotnet/corefx/pull/9555 Likely resolves https://github.com/dotnet/corefx/issues/9009, https://github.com/dotnet/corefx/issues/10398, though since I cannot repro the error and it is intermittent, we'll have to wait to see for sure. +11350 area-Infrastructure [Do not merge] Add RepoData.json and consumes api output I've generated RepoData.json for CoreFx. Below is the RepoData.json file I created, and the output in the form of a consumes.json file. Does any of this look unexpected? I don't intend to check this in until RepoUtil is available in CoreFx. /cc @weshaggard @dagood @jhendrixMSFT @markwilkie I have a simple (read 2-sentence) design doc [here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/consumes-api.md) It seems that there is redundancy between the data I'm including in RepoData.json and that which @ericstj has catalogued in https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.Private.PackageBaseline/packageIndex.json. We need to consider some way to consolidate this. +11357 area-System.IO Move some flaky FSW tests to Outerloop All of the FSW tests are potentially subject to intermittent failures because of the inherent flakiness of the underlying OS file system watching APIs. Although we do some manual stuff to get around that flakiness (e.g. retries, long timeouts), some scenarios aren't reliable enough to make it through. This commit moves those to Outerloop so they don't get in the way of our gated check in tests. resolves https://github.com/dotnet/corefx/issues/8916, https://github.com/dotnet/corefx/issues/10873 +11360 area-System.Linq Reintroduce the use of reflection methods in DynamicObject It's using `GetMember` with `OfType` to filter the members in `IsOverridden`. Also noticed that the `Bind*` methods create a closure that's only needed in a conditional branch that typically won't be taken, but that may not be a big deal because these should only be called once per dynamic call site. +11364 area-System.Collections [dev/api] After doing the merge from master to dev/api, 74 System.Collections.Specialized tests fail in netcoreapp1.0 cc: @stephentoub They all fail with the same message, so I'm thinking that fixing them _should_ be easy. I just commented out the run of these tests to unblock the merge from master. These are the errors that I see for netcoreapp1.0 (they run fine in netcoreapp1.1) ``` call CoreRun.exe xunit.console.netcore.exe System.Collections.Specialized.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.0tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Collections.Specialized.Tests Discovered: System.Collections.Specialized.Tests Starting: System.Collections.Specialized.Tests System.Collections.Specialized.Tests.ListDictionary_CustomComparer_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.IDictionary.Tests.cs(59,0): at System.Collections.Specialized.Tests.ListDictionaryTestBase.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(71,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass17_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.ListDictionary_CustomComparer_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.IDictionary.Tests.cs(64,0): at System.Collections.Specialized.Tests.ListDictionaryTestBase.<>c__DisplayClass11_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(84,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass18_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(71,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass17_0.b__0() System.Collections.Specialized.Tests.ListDictionary_CustomComparer_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.IDictionary.Tests.cs(64,0): at System.Collections.Specialized.Tests.ListDictionaryTestBase.<>c__DisplayClass11_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(84,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass18_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(68,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass21_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(99,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(84,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass18_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NotEnoughSpaceInOffsettedArray_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(84,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass18_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(99,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(80,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(99,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(96,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(101,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass19_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(99,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(80,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(96,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(56,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(101,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass19_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(61,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass16_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(104,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass23_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(56,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(61,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass16_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(56,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(80,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(61,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass16_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(56,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(96,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(80,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(101,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass19_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryKeysTests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.KeysTests.cs(61,0): at System.Collections.Specialized.Tests.HybridDictionaryKeysTests.<>c__DisplayClass16_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 0) [FAIL] System.ArgumentException : Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(96,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(Int32 count) System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(85,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass22_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_ThrowsAnyArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(101,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass19_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryKeysTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Keys.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryKeysTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.ListDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.Values.Tests.cs(55,0): at System.Collections.Specialized.Tests.ListDictionaryValuesTests.<>c__DisplayClass20_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(71,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass17_0.b__0() System.Collections.Specialized.Tests.HybridDictionaryValuesTests.ICollection_NonGeneric_CopyTo_IndexEqualToArrayCount_ThrowsArgumentException(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): Insufficient space in the target location to copy the information. Stack Trace: at System.Collections.Specialized.ListDictionary.NodeKeyValueCollection.System.Collections.ICollection.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionary.ValuesTests.cs(71,0): at System.Collections.Specialized.Tests.HybridDictionaryValuesTests.<>c__DisplayClass17_0.b__0() System.Collections.Specialized.Tests.HybridDictionary_CaseSensitive_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionaryTests.cs(49,0): at System.Collections.Specialized.Tests.HybridDictionaryTestBase.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseSensitive_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionaryTests.cs(54,0): at System.Collections.Specialized.Tests.HybridDictionaryTestBase.<>c__DisplayClass10_0.b__0() System.Collections.Specialized.Tests.HybridDictionary_CaseInsensitive_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionaryTests.cs(49,0): at System.Collections.Specialized.Tests.HybridDictionaryTestBase.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.HybridDictionary_CaseInsensitive_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\HybridDictionary\HybridDictionaryTests.cs(54,0): at System.Collections.Specialized.Tests.HybridDictionaryTestBase.<>c__DisplayClass10_0.b__0() System.Collections.Specialized.Tests.ListDictionary_NoComparer_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 0) [FAIL] System.ArgumentException : The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.IDictionary.Tests.cs(59,0): at System.Collections.Specialized.Tests.ListDictionaryTestBase.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(Int32 count) System.Collections.Specialized.Tests.ListDictionary_NoComparer_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 1) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.IDictionary.Tests.cs(64,0): at System.Collections.Specialized.Tests.ListDictionaryTestBase.<>c__DisplayClass11_0.b__0() System.Collections.Specialized.Tests.ListDictionary_NoComparer_Tests.ICollection_NonGeneric_CopyTo_NonZeroLowerBound(count: 75) [FAIL] Assert.Throws() Failure Expected: typeof(System.IndexOutOfRangeException) Actual: typeof(System.ArgumentException): The lower bound of target array must be zero. Parameter name: array Stack Trace: at System.Collections.Specialized.ListDictionary.CopyTo(Array array, Int32 index) F:\git\corefx\src\System.Collections.Specialized\tests\ListDictionary\ListDictionary.IDictionary.Tests.cs(64,0): at System.Collections.Specialized.Tests.ListDictionaryTestBase.<>c__DisplayClass11_0.b__0() Finished: System.Collections.Specialized.Tests === TEST EXECUTION SUMMARY === System.Collections.Specialized.Tests Total: 2124, Errors: 0, Failed: 74, Skipped: 0, Time: 0.445s Finished running tests. End time=16:41:10.16, Exit code = 74 ``` +11367 area-Serialization XmlSerializer to Support Xml_ArrayOfXmlNodeProperty in ReflectionOnly Mode ``` XmlSerializerTests.Xml_ArrayOfXmlNodeProperty [FAIL] System.InvalidOperationException : There is an error in XML document (2, 139). ---- System.NotImplementedException : text.Mapping is SpecialMapping ``` +11368 area-System.IO 'System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateNew.TooLargeCapacity_Unix' Test Failured in ARM/Linux I got the following test failure report while running unittests: ``` System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateNew.TooLargeCapacity_Unix [FAIL] Assert.Throws() Failure Expected: typeof(System.IO.IOException) Actual: typeof(System.ArgumentOutOfRangeException): The capacity cannot be greater than the size of the system's logical address space. Parameter name: capacity ``` It seems that the test is appropriate only for 64bit architecture: ``` Assert.Throws(() => { using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew(null, long.MaxValue)) { mmf.CreateViewAccessor().Dispose(); } }); ``` +11371 area-System.Runtime Implement AssemblyLoadContext.GetAllAssemblies +11373 area-System.IO FileStream needs overrides of Begin/EndXx @JeremyKuhne, I just noticed that #10697 didn't actually add Begin/End overrides to FileStream... it added them to FileStreamBase. FileStreamBase isn't the base type of FileStream, but rather the base for the inner per-platform streams it wraps. That means that if someone calls FileStream.Begin/EndXx now, they're getting the base Stream's implementation, not FileStream's, and that's going to do the wrong thing in the case where the FileStream was constructed in async mode. +11374 area-Meta Update (delete?) rtm.md "The [rtm.md](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/rtm.md) document explains what is ""Road to RTM of .NET Core"". It has been last updated in January. .Net Core has been in RTM for some time now, but [some](http://stackoverflow.com/a/39283043/41071)\* are interpreting that documented to mean that it's not. I think the document should be either updated (with what?) or deleted altogether. cc: @terrajobst --- \* That question is now deleted. The first revision of the answer I linked to (from 2 September) said: > It's not yet ""stable"". Microsoft uses the term ""RTM"" to mean ""release quality"". RTM stands for ""release to manufacturing"". > > Here, as of this writing, they specify their roadmap to reach that status: > > https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/rtm.md " +11379 area-System.Net Fix CookieContainer dead code masquerading as a race condition A coverity scan suggested that _domainTable might be unsafe to be locked on, as it's replaced. But closer inspection shows that it's only re-assigned to in code that's actually dead, as the condition guarding the if block containing the assignment will never be true. This commit just replaces the dead code with some asserts and makes the lockable field readonly so as to highlight that it won't change. cc: @davidsh, @cipop, @ericeil +11381 area-System.Globalization Some Globalization Tests failing on Unix based platforms ``` ./corerun xunit.console.netcore.exe System.Globalization.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.0tests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 10:41:53 xUnit.net console test runner (64-bit .NET Core) 10:41:53 Copyright (C) 2014 Outercurve Foundation. 10:41:53 10:41:53 Discovering: System.Globalization.Tests 10:41:54 Discovered: System.Globalization.Tests 10:41:54 Starting: System.Globalization.Tests 10:41:55 RemoteExecutorConsoleApp -> /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/Unix.AnyCPU.Debug/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.exe 10:41:56 System.Globalization.Performance.Tests -> /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/AnyOS.AnyCPU.Debug/System.Globalization.Performance.Tests/System.Globalization.Performance.Tests.dll 10:41:56 Exception from RemoteExecutorConsoleApp(System.Globalization.Tests, Version=4.0.12.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.Globalization.Tests.CurrentCultureTests+<>c, b__2_0): 10:41:56 Assembly: System.Globalization.Tests, Version=4.0.12.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb 10:41:56 Type: System.Globalization.Tests.CurrentCultureTests+<>c 10:41:56 Method: Int32 b__2_0() 10:41:56 Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.EqualException: Assert.Equal() Failure 10:41:56 ↓ (pos 5) 10:41:56 Expected: de-DE_phoneb 10:41:56 Actual: de-DE@collation=phoneb 10:41:56 ↑ (pos 5) 10:41:56 at Xunit.Assert.Equal(String expected, String actual, Boolean ignoreCase, Boolean ignoreLineEndingDifferences, Boolean ignoreWhiteSpaceDifferences) 10:41:56 at System.Globalization.Tests.CurrentCultureTests.<>c.b__2_0() 10:41:56 --- End of inner exception stack trace --- 10:41:56 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 10:41:56 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 10:41:56 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 10:41:56 at RemoteExecutorConsoleApp.Program.Main(String[] args) 10:41:56 System.Globalization.Tests.CurrentCultureTests.CurrentUICulture [FAIL] 10:41:56 Assert.Equal() Failure 10:41:56 Expected: 42 10:41:56 Actual: 254 10:41:56 Stack Trace: 10:41:57 Using /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/packages/ as folder for resolving package dependencies. 10:41:57 Executing in /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/tests/AnyOS.AnyCPU.Debug/System.Globalization.Performance.Tests/netcoreapp1.0 10:41:57 Hard linking dependent files... 10:41:57 Exception from RemoteExecutorConsoleApp(System.Globalization.Tests, Version=4.0.12.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.Globalization.Tests.CurrentCultureTests+<>c, b__0_0): 10:41:57 Assembly: System.Globalization.Tests, Version=4.0.12.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb 10:41:57 Type: System.Globalization.Tests.CurrentCultureTests+<>c 10:41:57 Method: Int32 b__0_0() 10:41:57 Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.EqualException: Assert.Equal() Failure 10:41:57 ↓ (pos 5) 10:41:57 Expected: de-DE_phoneb 10:41:57 Actual: de-DE@collation=phoneb 10:41:57 ↑ (pos 5) 10:41:57 at Xunit.Assert.Equal(String expected, String actual, Boolean ignoreCase, Boolean ignoreLineEndingDifferences, Boolean ignoreWhiteSpaceDifferences) 10:41:57 at System.Globalization.Tests.CurrentCultureTests.<>c.b__0_0() 10:41:57 --- End of inner exception stack trace --- 10:41:57 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 10:41:57 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 10:41:57 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 10:41:57 at RemoteExecutorConsoleApp.Program.Main(String[] args) 10:41:57 at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() 10:41:57 at System.Globalization.Tests.CurrentCultureTests.CurrentUICulture() 10:41:57 System.Globalization.Tests.CurrentCultureTests.CurrentCulture [FAIL] 10:41:57 Assert.Equal() Failure 10:41:57 Expected: 42 10:41:57 Actual: 254 10:41:57 Stack Trace: 10:41:57 at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() 10:41:57 at System.Globalization.Tests.CurrentCultureTests.CurrentCulture() 10:41:57 Finished linking needed files, moving to running tests. 10:41:57 Running tests... Start time: 17:42:41 10:41:57 Commands: 10:41:57 ./corerun xunit.console.netcore.exe System.Globalization.Performance.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.0tests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 10:41:57 xUnit.net console test runner (64-bit .NET Core) 10:41:57 Copyright (C) 2014 Outercurve Foundation. 10:41:57 ``` http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/1989/consoleFull#-43753631679fe3b83-f408-404c-b9e7-9207d232e5fc +11383 area-System.Net Fix WinHttpHandler for Basic auth with default credentials "We were getting an error ""The parameter is incorrect"" from WinHTTP when we tried to invoke default credential handling even for cases where the server doesn't use Negotiate or NTLM. Negotiate and NTLM are the only schemes that can use default credentials since they need to be transmitted via a challenge-response mechanism. The fix here is to only set WinHTTP default credentials handling for Negotiate or NTLM schemes. Otherwise, it should behave as-if there were no credentials set. Fixes #11266 " +11388 area-System.Threading System.Threading.Tasks.Dataflow more targets needed Currently the dataflow nuget package only targets netstandard1.1. This causes downstream challenges for those still targeting net46 for example because now the only option is to download the world which may or may not even succeed after doing so. It would be preferable if it was similar to several of the other projects and target net452, etc. and allow for typical framework references to be used when not running on the coreclr. +11390 area-System.Runtime StringBuilder should have all functionality of String `StringBuilder` is, essentially, just a mutable version of `String`. Consequently, it would make sense for it to have all the functionality that `String` has, with in-place mutating versions where appropriate. Right now it has a subset that doesn't seem particularly coherent - e.g. there's indexing, but no `Substring`. Some other missing members include `IndexOf`, `Contains`, `Find`, `Pad...`, `ToLower` and `ToUpper` etc. Basically, it should be possible to do anything you could do with a `String` without actually creating a string (to avoid unnecessary copies). There is also a matter of consistency - the same pattern with an immutable value class and a mutable builder version is also repeated with `Uri` and `UriBuilder`, but there the builder does actually reproduce the API surface of the immutable class much closer. +11391 area-System.Runtime A generic API for string-like objects ".NET is missing a convenient way to define a method that can take something ""string-like"" with minimal overhead. Most existing APIs just take `String`, meaning that callers need to call `ToString`, often creating full copies that are then used only to look at a few characters at the beginning. Some types that are commonly affected by this are `StringBuilder` and `Uri`. This could be solved by adopting a common interface like `IString` for all these types, which could offer the same operations that `String` does; and implementing that interface on all standard types that have string as a public representation of any valid value. The closest existing equivalent is Java `CharSequence`. " +11392 area-System.Net HttpClient performance issue compare to the full framework "I'm trying to wrapper a backend REST API to Frontend. The backend API RPS can archive about 50K (using AB), I use the HttpClient to invoke the API , get the result and return to then client. I can only get 1k RPS. (AB is on the same frontend machine ) Code is very simple ``` [Route(""api/[controller]"")] public class ValuesController : Controller { private static HttpClient client;// = new HttpClient(); static ValuesController() { client = new HttpClient(new HttpClientHandler { UseProxy = false, UseCookies= false, UseDefaultCredentials=false }); client.DefaultRequestHeaders.Add(""Connection"", ""Keep-Alive""); client.BaseAddress = new Uri(""http://backendserver/""); } [HttpGet] public async Task Wrapper() { var response = await client.GetAsync(""API""); var result = await response.Content.ReadAsStringAsync(); response.Dispose(); return result; } [HttpGet] public string Baseline() { return ""value""; } ``` | Test | RPS Result | | --- | --- | | Direct to Backend API | 50K | | Baseline (.net core) | 5K | | Baseline (.net full framework) | 5K | | Wrapper (.net core ) | 1K | | Wrapper (.net full framework) | 2.3K | " +11399 area-System.Linq Expression has a public constructor Unlike the .NET Framework, the constructor is public. I'm unclear why it was made public, and I can only find references from within the `System.Linq.Expressions` assembly. Should it be made `internal` again? Note that the constructor does not perform argument validation; this is assumed to be done by the factory that calls it. As such, if one would be able to call this constructor, one could construct an expression that does not type check or has `null` components. +11400 area-System.Linq Expression could have a compact subtype "In particular, when `TailCall` is set to `false` and `Name` is set to `null` (which are both common), we don't need the fields for them. Specialized subtypes are commonly used across the code base. AFAIK, the `Name` and `TailCall` options were added in the 4.0 wave, and the existing `LambdaExpression` type was maybe not considered for this type of specialization despite the addition being made to it. Some other cases could be considered but need to be weighed: - No custom `_delegateType` is set - Common, given the language binding to `Expression` - The `Type` property would have to perform `typeof(TDelegate)` upon each access - An empty `Parameters` collection - Sometimes used in `Expression.Lambda>(e).Compile()()` to eval an expression - We'd only save the reference; a singleton instance of `ReadOnlyCollection` is already used I did a quick analysis for a workload here in Bing, where we keep a ton of user-supplied lambda expressions alive (for a variety of reasons, we can't just compile them and throw away the expression as well; we need them around for persistence, runtime analysis, and more). These also have a bunch of inner lambdas (they're effectively Rx/LINQ queries), and none of them have a non-default `Name`, `TailCall`, and `Type`, so savings would pay off. In terms of frequency of parameter count: - 1 is the leader by far (due to the large number of LINQ-style methods a la `Where` and `Select`) - 2 comes next (mostly due to `SelectMany`'s `resultSelector` argument) - 0 comes next but these tend to be short-lived for us (due to use for expression eval) - 3 and above shows a long tail with blips here and there (due to us hoisting constants into parameters to reuse ""templates"") When used with LINQ, the first two cases are extremely common: ``` csharp var res = from m in typeof(Queryable).GetMethods() from p in m.GetParameters() let t = p.ParameterType where t.IsGenericType let d = t.GetGenericTypeDefinition() where d == typeof(Expression<>) let f = t.GetGenericArguments()[0] let i = f.GetMethod(""Invoke"") group p by i.GetParameters().Length into g orderby g.Count() descending select new { g.Key, Count = g.Count() }; ``` yields ``` { Key = 1, Count = 67 } { Key = 2, Count = 20 } ``` Across `mscorlib`, `System`, and `System.Core`, sorting occurrences of delegate-typed parameters in methods by parameter count yields: ``` { Key = 1, Count = 1184 } { Key = 2, Count = 807 } { Key = 0, Count = 62 } { Key = 3, Count = 26 } { Key = 4, Count = 14 } { Key = 5, Count = 6 } ``` If these methods are used within an expression tree using lambda arguments, this would directly lead to the allocation of these expression nodes. From this, it seems that specialized subtypes based on the number of parameters (likely not beyond a count of 2) are worth considering as well, much like `BlockExpression` has specializations based on the number of expressions, with a lazy allocation pattern for the `ReadOnlyCollection` when `Parameters` is accessed. However, it's rather common for expression visitors to step on this property e.g. for scope tracking purposes. Without a publicly exposed `IParameterProvider` analog to `IArgumentProvider`, it'd likely be of limited use though `LambdaCompiler`, `VariableBinder`, `StackSpiller`, `LightCompiler`, and `ExpressionQuoter` could avoid accessing the property directly, thus preventing growth of these nodes when fed into the compiler. Both the factories and the stack spiller call the constructor of `Expression` today, so these would have to use a `Make` and `Update`/`Rewrite` pattern to construct the specialized subtype. " +11401 area-System.Linq Avoid some allocations in LambdaCompiler Mostly minor things that caught my attention while working in this code, e.g. the use of `Map` and `AddFirst` helpers for allocating arrays and copying them when it can be avoided. +11402 area-System.Linq Removing some unncessary allocations in LambdaCompiler This addresses issue #11401. +11406 area-System.Diagnostics System.Diagnostics.StackTrace: Use loaded PE image in TryGetPEReader if possible "> During my recent SOS portable PDB work, I found that there are times when the ""loadedPeAddress"" actually points to a file based layout. This is when the PE is in-memory loaded from a stream (or byte[] but that isn't exposed in .NET Core anymore). Normally there is a in-memory PDB too, but there doesn't have to be. The loader is kind of a black box and the layout can depend on the platform (Windows may be different that Linux) and how the PE is loaded. So for the SOS PDB support I had to plumb through a isFileLayout flag with the loadedPeAddress (which is the opposite sense of isLoadedImage). > > There is some work that still needs to be done on the coreclr and mscorlib StackTraceHelper side to plumb this same flag though to this code. I just haven't had a chance to do this yet. " +11407 area-System.Linq Using TypeCode for ldind and stind emit This is part of issue #11328 on re-introducing `Type.GetTypeCode()`. However, it doesn't seem that member is already exposed for use on our side (need to confirm whether that's the plan). In the meantime, this PR simplified the code to emit `Ldind` and `Stind` instructions by using a `switch` over `TypeCode` values. It also adds a bunch of tests; only the `Int32` case was covered before. +11409 area-System.Linq Fill some code coverage gaps in LambdaCompiler There are some notable gaps for non-trivial pieces of code. A few are listed below: - `EmitMethodAndAlso` and `EmitMethodOrElse` - `EmitBranchNot`, `EmitBranchLogical`, `EmitBranchAnd`, `EmitBranchOr` - Some branching with statically determined `null` values - Emit for hashtable switches and other code paths around emit for `Switch` expressions - Constrained virtual calls - Emit for `Dynamic` expressions - Emit for `Goto` expressions - Emit for `Extension` expressions (doesn't seem like reachable code; `StackSpiller` will expand these) - Various cases with nullables and value types +11410 area-System.Linq Conditional compilation of MethodBuilder support in LambdaCompiler This addresses issue #11408 and conditionally compiles the code that supported `CompileToMethod` using an `#if`. All the types to support this method seem to be present, and most of the code is still there, so I decided to keep the code and include it conditionally. We can also remove it if we decide this functionality is deprecated altogether, though in my opinion and from my experience it has value in some service scenarios where computational expressions are constructed at runtime and need to be persisted in order to be reloaded at a later time (*). Also removing some other things that were found to be dead code, and reducing some `using` directives. (*) Some restrictions are bothersome though, in particular the restriction to emit to `static` methods and the lack of support for `Quote` nodes (though we worked around that by translating `Quote` nodes into a series of `Call` nodes to call the expression factory methods at runtime, effectively quoting the data as code). +11414 area-System.Linq ReadOnlyCollectionBuilder included in System.Linq.Expressions but not used "Shows up as dead code when analyzing code coverage as part of #11409. It's included from the `Common` folder and shared with `System.Dynamic.Runtime`. The only reference occurs in `ToReadOnly` in `CollectionExtensions` for a type check. If this type is not shared in / referenced from a single assembly and two copies exist, the type check will never pass if the object is passed across assembly boundaries, thus breaking the no-cloning optimization for the collection. This is done in e.g. `ReferenceArgAssign` in `System.Dynamic.Runtime`: ``` csharp private static Expression ReferenceArgAssign(Expression callArgs, Expression[] args) { ReadOnlyCollectionBuilder block = null; // omitted a bunch of code that will assign `block` if (block != null) return Expression.Block(block); else return Expression.Empty(); } ``` The `Block` factory method calls into `ToReadOnly` but the `as` check for `ReadOnlyCollectionBuilder` won't pass due to the copy of the type existing in the two assemblies. Passing the result of calling `ToReadOnly` to the factory method here won't help either, because the same cloning of code applies to `TrueReadOnlyCollection`, which is also checked for in `ToReadOnly` to avoid copying of the collection. It seems that the right thing to do here is to keep one copy of the code in one assembly. Given that `System.Dynamic.Runtime` has a strong (by design) dependency on `System.Linq.Expressions`, the latter would be the best place to store these types. We'd need to have access to these types across assembly boundaries and likely don't want to make them public (though they may provide value to others, *) so `InternalsVisibleTo` is lurking around the corner. There's very little precedent for this on the `corefx` repo though, with the exception of some stuff in `System.Reflection` assemblies (besides for testing purposes). If we decide that `InternalsVisibleTo` is appropriate here (@stephentoub, @VSadov), we can also de-duplicate the code for `ExpressionUtils` etc. (*) The types that need to be accessed across assembly boundaries are: - `System.Runtime.CompilerServices.ReadOnlyCollectionBuilder` which implements `IList` - `System.Dynamic.Utils.CollectionExtensions` for its `ToReadOnly` extension method Note that we _shouldn't_ expose `TrueReadOnlyCollection` publicly because only `ToReadOnly` should be able to instantiate it and type check for it (in order to guarantee the ""True"" part). Luckily, most occurrences of this type occur in`System.Linq.Expressions`, with the exception of a shared `ExpressionUtils.ValidateArgumentTypes` method which is used across boundaries (but the chance of hitting the code path that instantiates the collection here is extremely unlikely; it requires a delegate whose `Invoke` method has an `Expression<>` type that requires quoting, causing a rewrite of the argument expression to introduce a `Quote` around it). Still, it'd likely be better not to expose these types, and consider `InternalsVisibleTo` or keep the code duplication (and the adverse effects such as unnecessary cloning of collections). " +11417 area-System.Linq Make complex Expression.New overload behave the same as the simple overload Fixes #10954 /cc @bartdesmet @VSAdov @stephentoub +11418 area-System.Net Fix minor precedence error in SafeCloseSocket "The expression ``` C# ""somestring"" + obj == null ? ""null"" : Method(obj) ``` involves operator precedence that leads to: ``` C# (""somestring"" + obj) == null ? ""null"" : Method(obj) ``` rather than the intended: ``` C# ""somestring"" + (obj == null ? ""null"" : Method(obj)) ``` Found by a coverity scan cc: @davidsh, @cipop " +11422 area-System.Linq Fixing unbalanced parentheses in ToString for Post*Assign nodes This fixes issue #11421 which was found during code coverage improvement work. +11424 area-System.Linq Fixing compilation of Coalesce nodes with implicit numeric conversions "This fixes issues #11411 and #11412 for the compilation / interpretation of `Coalesce` nodes with implicit numeric conversions. There are a few issues in this area, as discussed below. First, handling of the `decimal` type was broken in both the compiler and the interpreter. All misery comes from the promise made by `TypeUtils.IsImplicitNumericConversion` that `decimal` is a valid target for an implicit numeric conversion (which is in agreement with C# specification section 6.1.2), while the back-ends of the expression compilers do not expect this type to come up. This holds true for the compiler's `ILGen.EmitNumericConversion` method (which expects only conversions involving built-in opcodes rather than a call to an `op_Implicit` method on `System.Decimal`) and for the interpreter's `NumericConvertInstruction` types that don't check for `TypeCode.Decimal` as a valid target type. Second, `TypeUtils.ImplicitNumericConversion` contains a quirk for conversion from `UInt32` to `Int64` (which is valid according to C# specification section 6.1.2). This entry is omitted and an entry for the (unreachable) identity conversion to `UInt32` is in its spot. This causes a `Coalesce` on a `uint?` with a right-hand side of type `long` to fail. Note that `TypeUtils.ImplicitNumericConversion` is only used for `Coalesce` expressions. For things like `Convert` expressions involving e.g. `decimal`, the implicit conversion method will be populated on the node. `Coalesce` doesn't automatically build a lambda expression for its `Conversion` property to represent such a conversion. It'd be a valid option to construct such a lambda during compilation (but no earlier - i.e. in factories or in a `Reduce` call - to avoid breaking changes), but code emitted for a `Coalesce` node with a conversion is suboptimal and involves calling the compiled lambda's delegate, so it makes more sense to fix the emitted IL and interpreter instructions instead. Third, the `LightCompiler.CompileCoalesceBinaryExpression` method omits logic for the implicit numeric conversion case altogether, so any `Coalesce` hitting this code path caused an `InvalidCastException` in the generated `Thunk` method. Note that the third case would correspond to a verification error in case IL instructions were emitted and compiled. We lack a verifier in the interpreter, so errors with invalid (box) types tend to come out as runtime exceptions. We could look separately into a debug-mode switch that adds a ""verification instruction"" after the instructions emitted for a non-void expression, effectively checking whether the object on top of the interpreted frame's evaluation stack has a type that's assignment compatible with the static type of the compiled expression node. This may catch some issues earlier. " +11427 area-System.Linq Fixing some oddities in ExpressionStringBuilder This addresses the oddities reported in #11426. A case could be made for not changing the typo or the spacing for `Goto` and `Label` due to backwards compatibility reasons. +11428 area-System.Linq Add Add tests for invalid inputs for Expression.AndAlso Contributes to #1198 /cc @stephentoub @VSadov @bartdesmet +11429 area-Infrastructure Migrate from Portable Class Libraries to .NetStandard "I am the author of the LightInject DI framework and I have a question regarding the .Net Platform Standard and how this is supposed to work with regards to different runtimes. LightInject is basically cross compiled into 4 different binaries. - Full Net 45 - Full Net 46 - .NetCore (.NetStandard1.3) - Portable Class Library, Profile 111 LightInject uses Reflection.Emit on all platforms except for in the PCL version where we use expression tree's to dynamically build code which works great. I am fully aware of the restrictions that applies to AOT (Ahead of time) platforms and that Reflection.Emit is a ""no-go"" on platforms such as iOS and so on. What I don't understand is how the .Net Platform Standard manages these platform/runtime specific restrictions. Taken from the Observations section ""If a library targets .NET Platform Standard version 1.3, it can only run on .NET Framework 4.6 or later, .NET Core, Universal Windows Platform 10 (UWP), and Mono/Xamarin platforms."" Okay, so as long as I compile for .NetStandard 1.3 it will be able to run on UWP? The thing is that you can't since there is no support for Reflection.Emit on UWP although having my assembly compiled for .NetStandard 1.3 suggests that it should work. What piece of the puzzle am I missing here? " +11437 area-System.Data SNIMarsHandle.HandleReceiveError passes null to ReadAsyncCallback as packet ReadAsyncCallback then dereferences that null value. Found by a coverity scan +11438 area-System.Data Fix several minor issues in SqlClient Found by a coverity scan cc: @saurabh500 @saurabh500, if you're interested in taking this PR, can you run your suite of tests when you get a chance? +11440 area-System.IO warnings in zlib I'm building on Windows with CL 19.00.24213.1 in branch dev/api (although surely the same in master) ``` c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\match.c(48): warning C4018: '>=': signed/unsigned mismatch [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\match.c(167): warning C4018: '>=': signed/unsigned mismatch [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\match.c(312): warning C4018: '<=': signed/unsigned mismatch [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\crc_folding.c(287): warning C4311: 'type cast': pointer truncation from 'unsigned char *' to 'unsigned long' [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\crc_folding.c(420): warning C4101: 'x_tmp3': unreferenced local variable [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\match.c(48): warning C4018: '>=': signed/unsigned mismatch (compiling source file C:\git\corefx.dan\src\Native\Windows\clrcompression\zlib-intel\deflate.c) [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\match.c(167): warning C4018: '>=': signed/unsigned mismatch (compiling source file C:\git\corefx.dan\src\Native\Windows\clrcompression\zlib-intel\deflate.c) [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] c:\git\corefx.dan\src\native\windows\clrcompression\zlib-intel\match.c(312): warning C4018: '<=': signed/unsigned mismatch (compiling source file C:\git\corefx.dan\src\Native\Windows\clrcompression\zlib-intel\deflate.c) [C:\git\corefx.dan\bin\obj\Windows_NT.x64.Debug\Native\clrcompression\clrcompression.vcxproj] ``` +11441 area-System.Collections ConcurrentQueue has Math.Min non-inlines `[FAILED: argument has side effect] Math:Min(int,int):int` Looks to be because one of the arguments is volatile (the other is a const). Could be solved by taking a local copy in `Segment:Low` and `Segment:High` before passing to `Math.Min`? ``` Inlines into 060000E7 ConcurrentQueue`1:get_IsEmpty():bool:this [1 IL=0010 TR=000007 06000151] [below ALWAYS_INLINE size] Segment:get_IsEmpty():bool:this [2 IL=0001 TR=000076 06000159] [below ALWAYS_INLINE size] Segment:get_Low():int:this [0 IL=0010 TR=000095 06003842] [FAILED: argument has side effect] Math:Min(int,int):int [3 IL=0007 TR=000080 0600015A] [below ALWAYS_INLINE size] Segment:get_High():int:this [0 IL=0010 TR=000105 06003842] [FAILED: argument has side effect] Math:Min(int,int):int [4 IL=0020 TR=000016 06000150] [below ALWAYS_INLINE size] Segment:get_Next():ref:this [5 IL=0040 TR=000042 06000150] [below ALWAYS_INLINE size] Segment:get_Next():ref:this [0 IL=0051 TR=000052 06002394] [FAILED: noinline per IL/cached result] SpinWait:SpinOnce():this [6 IL=0066 TR=000033 06000151] [below ALWAYS_INLINE size] Segment:get_IsEmpty():bool:this [7 IL=0001 TR=000119 06000159] [below ALWAYS_INLINE size] Segment:get_Low():int:this [0 IL=0010 TR=000138 06003842] [FAILED: argument has side effect] Math:Min(int,int):int [8 IL=0007 TR=000123 0600015A] [below ALWAYS_INLINE size] Segment:get_High():int:this [0 IL=0010 TR=000148 06003842] [FAILED: argument has side effect] Math:Min(int,int):int Budget: initialTime=285, finalTime=397, initialBudget=2850, currentBudget=2850 Budget: initialSize=1841, finalSize=1841 ``` ``` Inlines into 06000156 Segment:TryRemove(byref):bool:this [1 IL=0009 TR=000009 06000159] [below ALWAYS_INLINE size] Segment:get_Low():int:this [0 IL=0010 TR=000174 06003842] [FAILED: argument has side effect] Math:Min(int,int):int [2 IL=0016 TR=000016 0600015A] [below ALWAYS_INLINE size] Segment:get_High():int:this [0 IL=0010 TR=000184 06003842] [FAILED: argument has side effect] Math:Min(int,int):int [0 IL=0060 TR=000082 06002394] [FAILED: noinline per IL/cached result] SpinWait:SpinOnce():this [0 IL=0169 TR=000130 06002394] [FAILED: noinline per IL/cached result] SpinWait:SpinOnce():this [0 IL=0211 TR=000044 06002394] [FAILED: noinline per IL/cached result] SpinWait:SpinOnce():this [3 IL=0217 TR=000047 06000159] [below ALWAYS_INLINE size] Segment:get_Low():int:this [0 IL=0010 TR=000194 06003842] [FAILED: argument has side effect] Math:Min(int,int):int [4 IL=0224 TR=000054 0600015A] [below ALWAYS_INLINE size] Segment:get_High():int:this [0 IL=0010 TR=000204 06003842] [FAILED: argument has side effect] Math:Min(int,int):int Budget: initialTime=798, finalTime=870, initialBudget=7980, currentBudget=7980 Budget: initialSize=5740, finalSize=5740 ``` Related https://github.com/dotnet/coreclr/issues/7054 /cc @stephentoub +11446 area-System.Linq Adding tests for ExpressionStringBuilder This addresses issue #11444. It excludes tests for `Label`, `Goto`, and the unary assignment nodes, which were also subject to some code fixes in https://github.com/dotnet/corefx/issues/11426 and https://github.com/dotnet/corefx/issues/11421, so tests are included there. This PR doesn't make any changes to `ExpressionStringBuilder` and purely consists of tests. +11447 area-System.Linq Some perf improvements for ExpressionStringBuilder This addresses issue #11445. +11450 area-System.Memory Proposal: Adding a way to convert Span to ReadOnlySpan Pardon me if this is implemented and I simply overlooked it, but it appears to me there is no API yet to convert from a `Span` to a `ReadOnlySpan` in either coreclr/corefxlab, which means that people who have one of the former and want to pass it to a function accepting the latter will have to create a copy. We should add an API (either an instance method `AsReadOnly`, or an implicit operator) for converting a Span to a ReadOnlySpan so people don't have to copy any data. cc @jkotas, @KrzysztofCwalina +11451 area-System.Linq Select, Where, etc. should return a cached result if the input enumerable is empty We may want to consider returning a cached result, like `Array.Empty`, if the input enumerable is empty for certain LINQ methods. This would apply to any method that is guaranteed to have a 1:1 mapping with the input (like `Select`) or anything that needs to be smaller than the input (`Distinct`, `Where`). +11452 area-System.Net HttpClient throws WinHttpException if the WWW-Authenticate header contains an unknown scheme "If a webserver returns a `401` status code and a `WWW-Authenticate` header with an unknown scheme, an exception is thrown. For example this code: ``` csharp var handler = new HttpClientHandler() { Credentials = new NetworkCredential(""foo"",""bar"") }; using (var client = new HttpClient(handler)) client.GetAsync(""http://greenbytes.de/tech/tc/httpauth/unknown.asis"") .GetAwaiter().GetResult(); ``` returns a header `WWW-Authenticate: Newauth realm=""newauth""` which causes the following exception: ``` System.Net.Http.WinHttpException: The operation identifier is not valid at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpAuthHelper.CheckResponseForAuthentication(WinHttpRequestState state, UInt32& proxyAuthScheme, UInt32& serverAuthScheme) at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` This exception is thrown before the `ICredential.GetCredential(Uri, string)` method is called, so the end user cannot specify their own credentials for that scheme. " +11454 area-System.Linq Reduction of assignment expressions yields suboptimal code "Consider the following piece of code: ``` csharp var i = Expression.Parameter(typeof(int)); var e = Expression.Block(typeof(void), new[] { i }, Expression.PostIncrementAssign(i)); var f = Expression.Lambda(e).Compile(); ``` When compiled, the resulting IL looks like: ``` ldloc.0 stloc.1 ldloc.1 ldc.i4.1 add stloc.0 ret ``` The storing into and loading from a temporary is not needed here, because the expression's result is thrown away. Although `LambdaCompiler` has tracking of `void` types during expression compilation (cf. `EmitExpressionAsVoid`) its effectiveness is restricted to plain old `Assign` nodes because other forms of assignment don't reach this far. In fact, `StackSpiller` performs reduction of reducible nodes including the unary and binary (compound) assignment forms. For the case shown above, the `PostIncrementAssign` expression gets reduced to: ``` .Block(System.Int32 $var1) { $var1 = $var2; $var2 = .Increment($var1); $var1 } ``` Note that the load from the temporary in `$var1` does not show in the generated IL. This is because `EmitExpressionAsVoid` can do a bit of damage control when it emits the block's last expression as void and notices it's a side-effect free load from a `Parameter` node. If it wouldn't do that, we'd end up with the even more convoluted code of: ``` stloc.1 ldloc.1 ldc.i4.1 add stloc.0 ldloc.1 // damage has been controlled here pop // by EmitExpressionAsVoid ret ``` Compound assignments and unary prefix assignments don't suffer as much from this because they don't need to allocate a local to hold the initial value prior to executing the functional operation. However, the unary postfix assignments are often used in loop constructs (for better or worse), and we can't optimize that here as most ""offline"" compilers would do. It begs the question whether this is really a job for an expression rewriter that runs prior to compilation, the lambda compiler itself, or an optimizing backend (a la `/o+` in C#). With the first option, an optimizer would perform similar `void` site analysis and when it encounters a postfix unary assignment turn it into the equivalent prefix unary assignment. The second option involves keeping our compiler from emitting suboptimal code but it'd need to avoid eager reduction for this information to trickle down to the right place. For the last option of an optimizing backend (which could take away `stloc`, `ldloc` pairs to the same variable provided the `ldloc` instruction is not a branch target; the C# compiler does this as well) we don't have a spot in the compilation chain today. Note there are some other suboptimal patterns generated by the reduction of assignment operations. In particular, `ReduceIndex` methods store all indexing operands into temporaries, even if they're constants such as `Constant` or `Default`. The constant case is not unlikely to occur when dealing with collection elements. Unfortunately, the tree rewrite taking place here is publicly exposed through the `Reduce` method on these unary and binary nodes, so if we want to do something about this we'd end up with the `StackSpiller` having to call an internal reduction mechanism in order to avoid exposing a breaking change. Finally, #4984 should not be forgotten if we decide to do something here; we don't want to regress the behavior reported there. " +11455 area-System.Linq IIListProvider potential optimizations + refactoring "1. `IIListProvider` currently has a `GetCount(bool)` method, the bool parameter indicating whether we only want to get the count if it's ""cheap"" O(1). I just did a `grep -r 'GetCount(.*false) .` of System.Linq, and it looks like the only place it is ever called with false is [here](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Count.cs#L28). Since the additional bool parameter may hamper readability/performance and forces us to maintain additional logic for `!onlyIfCheap`, we may want to consider changing it to just `int Count { get; }`. The existing usage could become ``` cs if (listProv != null) { int count = listProv.Count; if (count != -1) return count; } ``` 2. `ICollection` has the method `CopyTo` which lets you trade off N interface calls (either the indexer if you are using `IList`, or MoveNext/Current on `IEnumerable`) for 1, the `CopyTo` method itself. This can result in quite substantial perf gains if the collection is large. We should consider adding another interface method to `IIListProvider`: ``` cs bool TryCopyTo(T[] array, int arrayIndex); ``` This can be used whenever the iterator wraps an `ICollection` and it needs to copy some items to an array. One concrete case where it might benefit: ``` cs return array // Take an ICollection .Select(i => i + 10) // Wrap it in an IIListProvider .Append(222) // Call something that uses CopyTo in ToArray .ToArray(); // Call ToArray ``` cc @JonHanna, @VSadov " +11456 area-System.Net HttpClient throws an exception if the WWW-Authenticate header is missing If the server returns a 401 response but does not supply a `WWW-Authenticate` header (in contravention to the RFC requirement), and exception is thrown just as in #11452, and this could be a special case of an unknown scheme. HttpClient on .NET Framework does handle this scenario but returning the 401 to the caller, so I suggest the .NET Core implementation also handles it despite the server doing the wrong thing. +11457 area-System.Linq Enumerable.Average should avoid divisions for length 1 collections Floating point divisions, which occur whenever the / or % operators are used, have a very high latency compared to other instructions. For example in the instruction tables [here](http://www.agner.org/optimize/instruction_tables.pdf) you can see `fdiv(r)(p)` consistently have above-average latencies, reaching as much as 71 cycles for Atom processors (though they're more toned down for newer Intel processors). In [`Enumerable.Average`](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Average.cs#L36) it's used even when the collection's length is 1; instead of doing that, we could just return the first item to avoid the expensive operation. +11458 area-System.Reflection Implements PE checksum calculation Work in progress: needs testing +11460 area-System.Linq Inspection / interception of IL generated by LambdaCompiler "IL generated by `LambdaCompiler` and `ILGen` turns out to be quite tricky to inspect. On desktop CLR, I used to emit IL to an assembly using `CompileToMethod` for offline inspection, or use SOS to `!dumpil`. While the latter still works, it's not an option at runtime, e.g. for testing purposes. In particular, when testing code emit optimizations, we don't have a good option to assert the output. One option is to perform private reflection on `DynamicMethod` to obtain the `byte[] m_iLStream` and use one of the decoders to print it as textual IL. Some code is around to do that on the MSDN blogs, so it's one option worth looking into. In fact, I've been using this over at https://github.com/bartdesmet/ExpressionFutures and it works ok-ish. There are some issues with visualizing some metadata tokens but it may be possible to work around that. It may suffice for testing purposes. An alternative which I've put in place in my https://github.com/bartdesmet/corefx/tree/CheaperClosures branch is an indirection of `ILGenerator` calls through an interface, currently only when a conditional compilation symbol is set. Unfortunately, one can't derive from `ILGenerator` because it only has `internal` constructors (and one of its `Emit` overloads is not `virtual` either), so an additional interface has to be put in place. My implementation logs all the calls made, so a `ToString` can be obtained. Note that the last option offers some benefits because one could implement e.g. an optimizing back-end by capturing the emitted instructions and run a post-process step on it (assuming we add one additional method call to ""bake"" the emitted IL, which could flush to the underlying emitter target after running post-process steps): ``` csharp interface IILGenerator { void Emit(OpCode opcode); // quite a lot more methods, see ILGenerator void Bake(); } ``` An interceptor for logging would implement `IILGenerator` and get passed an `IILGenerator` that's the target to emit to. Its `Bake` method can simply forward to the underlying generator; every other method forwards and logs to populate data structures that allow for pretty printing. An optimizer would implement `IILGenerator` but won't forward the `Emit` methods directly; it'd build up internal data structures that are used upon a call to `Bake` to run optimizations prior to making `Emit` calls to the underlying generator, followed by a `Bake` call. Of course, this would add a level of indirection with virtual calls, unless `ILGenerator` would implement such an interface (and make the `Emit(OpCode, sbyte)` overload `virtual`) so there's no additional cost if no wrapper is installed around the `ILGenerator` obtained from `DynamicMethod`. See https://github.com/dotnet/corefx/issues/11454 for a case where such a back-end could provide value. I got the last thing implemented (including an inspector and a basic optimizer) in an offline copy here in Bing, which is based on a fork of the expression API a few years back. I'll to port it to CoreFX as a proof of concept so the merits can be debated with some concrete piece of code to back it up. " +11462 area-System.Threading File version of DataFlow assembly changed from 4.6 to 1.0 in latest release on NuGet DataFlow 4.5.25 on NuGet has file version 4.6.23123.0 and DataFlow 4.6.0 has file version 1.0.24212.1. This breaks deployment using Windows Installer. Only files with a higher file version are replaced during upgrades. https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/ +11463 area-System.Threading Blocking Task.Result design flaw leads to deadlock when called from ThreadPool thread "Run this application: https://gist.github.com/AqlaSolutions/f8c993bfad32dc9be11703fea4e01422 It simulates network engine receiving requests and calling synchronously `IConnection.OnRequestReceived`. This method calls async method and then synchronously processes the result retrieved with Task.Result. The async method may take up to 700 ms. Assume I can't use await, because external network engine provides synchronous interface and I need to check async call result before returning. During run the simulation will decrease time between requests until deadlock occurs - after that point currently awaiting requests will never be completed. I set TP to low threads number to show the problem. It will also happen on 200 and 1000 threads but it will just take more time and will require modifying the simulation code for more requests. In a real app you will never want to set max threads to big numbers because it will make your app very slow (context switching thing) and also each thread takes 1 MB RAM. This example proves that absolutely any blocking call to `Task.Result` or `Task.Wait` from `ThreadPool` thread will work for some time but will eventually deadlock your application in truly high load scenario. Using these methods from `ThreadPool` thread for waiting is always a mistake and should be disallowed (but I understand that it will not happen for compatibility reasons). Yes, we all know from docs that mixing async and blocking ""may cause deadlocks"" but previously I thought about this only in a way ""do not block with `.Result` thread which synchronization context may be required to complete the waited task itself"". TP deadlock is not obvious and many people will ""just use `.Result`"" without ever encountering it during testing. What do you think? May be some workarounds inside .NET TP? Prioritize continuations over new tasks? " +11464 area-System.Net CookieContainer.Add(Cookie cookie) CookieContainer.Add(Cookie cookie) method is no longer accessible because it's accessibility was downgraded which causes incompatibility between other .net versions. Is this intended or a mistake? Other definitions (net461): public void Add(Cookie cookie) Existing definition (netstandard1.6): internal void Add(Cookie cookie) +11465 area-System.Runtime DefaultValueAttribute missing unsigned int / unsigned long constructor ## Latest proposal ### Rationale and Usage As has already been explained, using `DefaultValueAttribute` with one of the problematic types (unsigned integer types and `sbyte`) in C# ends up using a widening conversion and so the boxed `Value` ends up with an unexpected type. The proposal is to add constructor overloads so that the conversions don't happen and `Value` gets the expected type. The usage stays the same as before, e.g. `[DefaultValue(UInt64.MaxValue)]`. Doing this would be technically a source breaking change, since recompiling existing code would end up with a different type for the boxed `Value`. (Arguably, it would be a better type, but that doesn't change the fact that someone could rely on the old behavior.) ### Proposed API ```c# public class DefaultValueAttribute : Attribute { // existing constructor overloads: public DefaultValueAttribute(Type type, string value); public DefaultValueAttribute(char value); public DefaultValueAttribute(byte value); public DefaultValueAttribute(short value); public DefaultValueAttribute(int value); public DefaultValueAttribute(long value); public DefaultValueAttribute(float value); public DefaultValueAttribute(double value); public DefaultValueAttribute(bool value); public DefaultValueAttribute(string value); public DefaultValueAttribute(object value); // added constructor overloads: public DefaultValueAttribute(sbyte value); public DefaultValueAttribute(ushort value); public DefaultValueAttribute(uint value); public DefaultValueAttribute(ulong value); } ``` ## Original proposal Most numeric types have their constructor but not the unsigned ones. As a result, if you write that code: `new DefaultValueAttribute(UInt64.MaxValue);` The float constructor will be called as the compiler seems to avoid the constructor that needs boxing. Removing all explicit constructor that takes numeric types solve the issue. They all points to the same code that will box the value anyway: ``` /// /// Initializes a new instance of the class using a Unicode /// character. /// public DefaultValueAttribute(char value) { this.value = value; } ``` +11467 area-System.Linq More optimizations for LINQ methods I've been raising a lot of issues about LINQ recently, so this is sort of an umbrella issue for all of the optimizations I think could be applied. - `Enumerable.Cast` is one of those functions that has a 1:1 mapping, so it should forego `yield` and instead implement a custom iterator class. Things like `x.Cast().ToArray()` are very common. - In `OfType`, if `TResult` is object or the source enumerable is of type `IEnumerable` *, we know that each is check will return true and therefore we will have a 1:1 mapping. We can forward to `CastIterator` for those cases and get special treatment for `ToArray`, `ToList`, etc. \* I don't know how often this optimization will happen. Though it will incur no runtime cost since `typeof(T) == typeof(U)` is jitted away, it's not very common for someone to call `OfType()` on something they _know_ is an `IEnumerable`. The only places where I think it can happen are if they accept an `IEnumerable` and use `OfType` to convert it to a generic one, or their method has multiple type parameters and they want to convert an `IEnumerable` to an `IEnumerable` and someone calls their method with `Method()`. # - `Enumerable.Concat(...).ToArray()` is wasteful since it does not attempt to specialize if the underlying enumerables are `ICollections`. It should instead call `GetEnumerable` on everything, and then specialize for `ICollection`. (potentially `IIListProvider` as well if #11455 is implemented) - It may be possible for the `Concat` iterators to implement certain `IPartition` methods as well. If the first/last collections are ILists/IPartitions, then `TryGetFirst` and `TryGetLast` could be implemented with relatively minimal overhead. (actually not in the case where you have a very long linked list of `Concat` iterators and you try to get the first item, but in that case calling `First()` would still be very slow anyway.) # - [`LongCount`](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Count.cs#L79) is not optimized for ICollection/IIListProvider? # - `DefaultIfEmpty` should just return a cached iterator if the enumerable is empty. We should also introduce something like a `WrapperIterator` class that just provides a view over an enumerable, and use that for the other case. I'm sure it could be useful in many other LINQ methods (for example, possibly `Skip(0)`). +11468 area-Meta Move master to netcoreapp1.2 move everything in master from netcoreapp1.1 to netcoreapp1.2, because netcoreap1.1 is shipping earlier +11469 area-Meta Merge dev/api into master Check this first - are there any tests disabled in dev/api that are not disabled in master. re-enable these or open an issue. - check packages don't have broken dependencies, - check packages where the contract exists but the implementation is not complete yet because we are either using stubs or even worse we just have a apicompat baseline but the members don’t even exist in the implementation. +11471 area-System.Net Uri.CreateUriInfo is locking on a string https://github.com/dotnet/corefx/blob/ca9e2b068e75898a3b35860632b1fec01cc5af93/src/System.Private.Uri/src/System/Uri.cs#L2199-L2206 ``` C# lock (_string) { if ((_flags & Flags.MinimalUriInfoSet) == 0) { _info = info; _flags = (_flags & ~Flags.IndexMask) | cF; } } ``` This is a scalability concern, e.g. this Uri could end up sharing the same lock as another that's locking on the same string instance, such as if the string is interned. Now, given the rarity of this, this might be the best option, as unless there's another object available on which to lock, this is likely the better option than allocating a new object per Uri just for the purposes of this lock. If there's another existing object that could be used that's not shared, that would be better. Even better would be getting rid of this lock entirely... since Uri to my knowledge is not deemed to be thread-safe, the purpose of this lock is unclear to me... maybe it could just be removed entirely? +11473 area-Meta Rewrite benchmarksgame samples to optimize performance I realize this not just .NET Core issue. Or perhaps not perceived as an issue at all. But since a lot of work is done to improve performance... The Java binary-trees program in the computer language benchmark game is almost 4 times faster than the C# .NET Core one. Even worst for the regex-dna test, though perhaps this is more of a regex library test. I'm not taking the benchmark game for something more than it is, but the difference gap is quite large here, perhaps something can be done... [http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=binarytrees](http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=binarytrees) [http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=regexdna](http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=regexdna) -- fixed bad links +11476 area-System.Net Remove unnecessarily Volatile.Reads in EnsureStoreOpened The fields being read are already volatile, so the relevant read operations already have fences. And these Volatile.Reads are on a local that's not shared with any other thread, making them unnecessary. Found by a coverity scan cc: @cipop, @davidsh, @bartonjs +11477 area-Serialization [Impl] DCS/DCJS to Support new Serialization APIs Added in System.Runtime (e.g. ISerializable) https://github.com/dotnet/corefx/commit/90be35920b48820536b8740f64d565ded55d811e added some serialization APIs in System.Runtime. DCS/DCJS should support these APIs. - [x] System.NonSerializedAttribute (tracked by https://github.com/dotnet/corefx/issues/13367) - [x] System.SerializableAttribute - [x] System.Runtime.Serialization.OptionalFieldAttribute (tracked by https://github.com/dotnet/corefx/issues/13367) - [x] System.Runtime.Serialization.IDeserializationCallback (tracked by https://github.com/dotnet/corefx/issues/13368) - [x] System.Runtime.Serialization.IFormatterConverter - [x] System.Runtime.Serialization.ISerializable - [x] System.Runtime.Serialization.SerializationEntry - [x] System.Runtime.Serialization.SerializationInfo - [x] System.Runtime.Serialization.SerializationInfoEnumerator +11481 area-System.Net Fix WinHttpHandler to deal with nonstandard HTTP auth responses WinHTTP returns an error from WinHttpQueryAuthSchemes if a server sends back a response with a scheme that isn't handled by WinHTTP. Many servers use custom auth schemes. A few don't even send a `WWW-Authenticate` header in the response at all (technically against RFC7235). To handle these cases and to match Desktop behavior, we ignore the error from WinHttpQueryAuthSchemes. Fixes #11452 and #11456. +11489 area-System.Net Adding TLS Alerts Adding TLS handshake and close_notify SslStream alert support. New API needs review and is pending the investigation in #11265. Fixes #8811 Addresses part of #3114. @davidsh @bartonjs @stephentoub PTAL /cc @weshaggard +11492 area-System.Linq Specialize Enumerable.Concat when all items are ICollections. If all of the inputs to `Enumerable.Concat` are ICollections, (which is common, at least in code I've written) then we can optimize much better if it is called `ToArray` or `Count` on. This change introduces 2 new iterators for Concat, `Concat2CollectionIterator` and `ConcatNCollectionIterator`, and renames the existing ones to `Concat{2,N}EnumerableIterator`. The main difference with these iterators is: - It has a better implementation for `ToArray`. Previously we just called `EnumerableHelpers.ToArray` if a `Concat` iterator was returned `ToArray` on. However, if we know that all of the enumerables are ICollections, we can sum their counts to allocate an array of exactly the right size, and then call `CopyTo` on each of them to fill the array. (This is a bit tricky in `ConcatNCollectionIterator` since we hold a reference to the most recently `Concat`'d collection, so we have to `CopyTo` the collections in reverse order.) - We no longer pessimize `GetCount(true)`, since we assuming that accessing the `Count` property of the collections will be cheap (at least, cheaper than manually enumerating them), and we just sum the count of all of them. Any input that implements `ICollection` will use these iterators. However, as soon as we see a non-ICollection, we fallback to using a regular `ConcatNIterator`. ## Benchmarks Results/test are [here](https://gist.github.com/jamesqo/0164d1d8229a010e07d225d2d4d8af34). Quite amazingly, there is a 5x reduction in gen0 collections and 40x speedup with the new implementation, at least for length 100 collections. Even for length 3 ones, it's still 4x faster and the # of collections go from 89 => 15 (presumably since we're no longer allocating enumerators). /cc: @JonHanna, @stephentoub, @VSadov +11494 area-System.Reflection Access is denied when use the System.Reflection.DispathProxy HI I used the System.Reflection.DispatchProxy to dynamic a Interface,when use the DispatchProxy.Create();get the Access is denied:'MyProxy',MyProxy is extend the DispatchProxy. +11495 area-System.Linq Add tests for DebugView on Expression This is the next biggest black spot for code coverage in `System.Linq.Expressions`. +11497 area-System.IO ZipArchive CreateMode tries to read Position on non-seekable Stream "Looking at https://msdn.microsoft.com/en-us/library/hh158263(v=vs.110).aspx i find this remark: > If the mode parameter is set to Read, the stream must support reading. If the mode parameter is set to Create, the stream must support writing. If the mode parameter is set to Update, the stream must support reading, writing, and seeking. Based on that i would conclude that using CreateMode, i should be able to write to a non-seekable stream. The [corefx tests](https://github.com/dotnet/corefx/blob/master/src/System.IO.Compression/tests/ZipArchive/zip_CreateTests.cs#L64) for Create also seems to indicate that this is the intention at first glance. However, even in CreateMode, the code attempts to read the Position from the stream it is writing to, unless i am mistaken that is typically not supported on a non-seekable stream? In the abovementioned test a test WrappedStream class is used that can be configured as non-seekable. However, it does support getting a Position which i find a bit strange. I can see that there is also a closed issue on Connect: https://connect.microsoft.com/VisualStudio/feedback/details/816411/ziparchive-shouldnt-read-the-position-of-non-seekable-streams Below is an example that will throw NotSupportedException: ``` using System; using System.IO; using System.IO.Compression; namespace SeekeableStreamBug { public class NonSeekableMemoryStream: MemoryStream { public override bool CanSeek => false; public override long Position { get { throw new NotSupportedException(); } set { throw new NotSupportedException(); } } } public class Program { public static void Main( string[] args ) { using ( ZipArchive archive = new ZipArchive( new NonSeekableMemoryStream(), ZipArchiveMode.Create, false ) ) { var entry = archive.CreateEntry( ""foo"" ); using ( var es = entry.Open() ) { es.Write( new byte[] { 4, 2 }, 0, 2 ); } } } } } ``` " +11499 area-Meta Could not load file or assembly using Microsoft.Extensions.Configuration.Json "Hi everybody, I'm working on a windows 10 IoT project where I want to use Microsoft.Extensions.Configuration.Json so I added it in my project.json in the dependencies: > ""dependencies"": { > ""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.2.2"", > ""System.Xml.XmlDocument"": ""4.0.1"", > ""System.Xml.XPath.XDocument"": ""4.0.1"", > ""Serilog"": ""2.2.1"", > ""Serilog.Sinks.RollingFile"": ""2.2.0"", > ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"" > }, I can deploy my solution but I have this exception: > {""Could not load file or assembly 'System.IO.FileSystem.Watcher, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its > dependencies. > The system cannot find the file specified."":""System.IO.FileSystem.Watcher, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a""} I tried adding System.IO.FileSystem.Watcher to my dependencies in project.json but it didn't solve the problem... It looks like this person has a similar problem: http://stackoverflow.com/questions/37365216/uwp-application-and-net-core-rc2-cannot-reference-netstandard1-4-packages Somebody has an idea? Thank you " +11503 area-System.Diagnostics OSX Process.Start failing on non-rooted file name I've been seeing this issue where executing a process with a non-rooted file name causes a `System.ComponentModel.Win32Exception : No such file or directory` failure. Trace: ``` at Interop.libproc.proc_pidpath(Int32 pid) at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) ``` The failures don't seem to have anything to do with what I'm trying to execute, since we never get further than calling proc_pidpath on the current process (`Interop.libproc.proc_pidpath(Interop.Sys.GetPid())`) in the `GetExePath` function called by `ResolvePath`. For context though, the error has been arising during [mc.dotnet](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160907.03/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.Directory_Changed_Tests~2FFileSystemWatcher_Directory_Changed_SymLink/log/0cdde726-02ae-403e-96ae-feb25609e83d) runs of symlink filesystemwatcher tests where `ln` is being called. The failures have been occurring intermittently, +11504 area-Meta Lots of unused resource strings across corefx This isn't exact (there are likely both false positives and false negatives here), but a quick search across corefx shows over a thousand resource strings that are unused and could be deleted: ``` corefx\src\Microsoft.Win32.Registry\src\Resources\Strings.resx : Argument_InvalidRegistryKeyPermissionCheck corefx\src\Microsoft.Win32.Registry.AccessControl\src\Resources\Strings.resx : UnauthorizedAccess_RegistryNoWrite corefx\src\System.Collections.Specialized\src\Resources\Strings.resx : Arg_NonZeroLowerBound corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : AssociatedMetadataTypeTypeDescriptor_MetadataTypeContainsUnknownProperties corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : AttributeStore_Type_Must_Be_Public corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : AttributeStore_Unknown_Method corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : Common_NullOrEmpty corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : MetadataTypeAttribute_TypeCannotBeNull corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : ValidationContext_Must_Be_Method corefx\src\System.ComponentModel.Annotations\src\Resources\Strings.resx : ValidationContextServiceContainer_ItemAlreadyExists corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryAction corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryAppearance corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryAsynchronous corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryBehavior corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryConfig corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryData corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryDDE corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryDefault corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryDesign corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryDragDrop corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryFocus corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryFont corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryFormat corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryKey corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryLayout corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryList corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryMouse corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryPosition corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryScale corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryText corefx\src\System.ComponentModel.Primitives\src\Resources\Strings.resx : PropertyCategoryWindowStyle corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_1 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_2 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_3 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_5 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_6 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_7 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_8 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_9 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_11 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_12 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_13 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_14 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_15 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_16 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_17 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_18 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_19 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_20 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_21 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_22 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_23 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_24 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_25 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_26 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_27 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_28 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_29 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_30 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_31 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_32 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_33 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_34 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_35 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_36 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_37 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_38 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_39 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_40 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_41 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_42 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_43 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_44 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_47 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_48 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_49 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_50 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_51 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_52 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_53 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_54 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_55 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_56 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_ERROR_57 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : Snix_AutoEnlist corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : LocalDB_FailedGetDLLHandle corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : LocalDB_MethodNotFound corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : LocalDB_UnobtainableMessage corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN0 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN1 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN2 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN3 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN4 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN5 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN6 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN7 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN8 corefx\src\System.Data.SqlClient\src\Resources\Strings.resx : SNI_PN9 corefx\src\System.Diagnostics.Debug\src\Resources\Strings.resx : DebugAssertTitle corefx\src\System.Diagnostics.Debug\src\Resources\Strings.resx : DebugAssertTitleShort corefx\src\System.Diagnostics.Debug\src\Resources\Strings.resx : RTL corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : PriorityClassNotSupported corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : ProcessNotFound corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : InputIdleUnkownError corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : CantUseEnvVars corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : EnvironmentBlockTooLong corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : CantFindProcessExecutablePath corefx\src\System.Diagnostics.Process\src\Resources\Strings.resx : ResourceLimitQueryFailure corefx\src\System.Diagnostics.TraceSource\src\Resources\Strings.resx : ExceptionOccurred corefx\src\System.Diagnostics.TraceSource\src\Resources\Strings.resx : DebugAssertTitle corefx\src\System.Diagnostics.TraceSource\src\Resources\Strings.resx : RTL corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : ArgumentOutOfRange_MaxArgExceeded corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : ArgumentOutOfRange_MaxStringsExceeded corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : ArgumentOutOfRange_NeedValidId corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : ArgumentOutOfRange_NeedPosNum corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_ListenerNotFound corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_ToString corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_ImplementGetMetadata corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_NeedGuid corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_NeedName corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_NeedDescriptors corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_NeedManifest corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_EventSourceGuidInUse corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_ListenerWriteFailure corefx\src\System.Diagnostics.Tracing\src\Resources\Strings.resx : EventSource_NoManifest corefx\src\System.IO.Compression\src\Resources\Strings.resx : ArgumentOutOfRange_NeedPosNum corefx\src\System.IO.Compression\src\Resources\Strings.resx : CorruptedGZipHeader corefx\src\System.IO.Compression\src\Resources\Strings.resx : UnknownCompressionMode corefx\src\System.IO.Compression\src\Resources\Strings.resx : InvalidCRC corefx\src\System.IO.Compression\src\Resources\Strings.resx : InvalidStreamSize corefx\src\System.IO.Compression\src\Resources\Strings.resx : FileNameContainsInvalidCharacters corefx\src\System.IO.FileSystem\src\Resources\Strings.resx : ArgumentOutOfRange_NeedNonNegInt32Range corefx\src\System.IO.FileSystem\src\Resources\Strings.resx : Argument_PathFormatNotSupported corefx\src\System.IO.FileSystem.Watcher\src\Resources\Strings.resx : ObjectDisposed_FileClosed corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : IsolatedStorage_OldQuotaLarger corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : IsolatedStorage_Operation_ISFS corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : IsolatedStorage_SeekOrigin corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : IsolatedStorage_Init corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : ArgumentNull_Path corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : Argument_AbsolutePathRequired corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : Argument_PathFormatNotSupported corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : PathNotFound_NoPathName corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : PathTooLong corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : FileNotFound corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : FileNotFound_FileName corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : IO_NoPermissionToDirectoryName corefx\src\System.IO.IsolatedStorage\src\Resources\Strings.resx : DriveNotFound_Drive corefx\src\System.IO.Packaging\src\Resources\Strings.resx : FragmentMustStartWithHash corefx\src\System.IO.Packaging\src\Resources\Strings.resx : IncompatibleModeOrAccess corefx\src\System.IO.Packaging\src\Resources\Strings.resx : InnerPackageUriHasFragment corefx\src\System.IO.Packaging\src\Resources\Strings.resx : InvariantFailure corefx\src\System.IO.Packaging\src\Resources\Strings.resx : OffsetNegative corefx\src\System.IO.Packaging\src\Resources\Strings.resx : ReadBufferTooSmall corefx\src\System.IO.Packaging\src\Resources\Strings.resx : ReadCountNegative corefx\src\System.IO.Packaging\src\Resources\Strings.resx : ReadNotSupported corefx\src\System.IO.Packaging\src\Resources\Strings.resx : ReadOnlyStream corefx\src\System.IO.Packaging\src\Resources\Strings.resx : UriShouldBeAbsolute corefx\src\System.IO.Packaging\src\Resources\Strings.resx : UriShouldBePackScheme corefx\src\System.IO.Packaging\src\Resources\Strings.resx : WriteBufferTooSmall corefx\src\System.IO.Packaging\src\Resources\Strings.resx : WriteCountNegative corefx\src\System.IO.Packaging\src\Resources\Strings.resx : WriteNotSupported corefx\src\System.IO.Packaging\src\Resources\Strings.resx : WriteOnlyStream corefx\src\System.IO.Pipes\src\Resources\Strings.resx : ArgumentOutOfRange_AdditionalAccessLimited corefx\src\System.IO.Pipes\src\Resources\Strings.resx : ArgumentOutOfRange_InvalidPipeAccessRights corefx\src\System.IO.Pipes\src\Resources\Strings.resx : ArgumentOutOfRange_NeedPosNum corefx\src\System.IO.Pipes\src\Resources\Strings.resx : IO_BindHandleFailed corefx\src\System.IO.Pipes\src\Resources\Strings.resx : IO_NoPermissionToDirectoryName corefx\src\System.IO.UnmanagedMemoryStream\src\Resources\Strings.resx : ArgumentOutOfRange_NeedPosNum corefx\src\System.Linq.Parallel\src\Resources\Strings.resx : MoreThanOneElement corefx\src\System.Linq.Parallel\src\Resources\Strings.resx : NoMatch corefx\src\System.Linq.Parallel\src\Resources\Strings.resx : ParallelEnumerable_WithCancellation_TokenSourceDisposed corefx\src\System.Net.Http\src\Resources\Strings.resx : event_ClientSendCompleted corefx\src\System.Net.Http\src\Resources\Strings.resx : event_HeadersInvalidValue corefx\src\System.Net.Http\src\Resources\Strings.resx : event_ContentNull corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_io_read_incomplete corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_chunked_not_allowed_with_content_length corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_invalid_proxyusepolicy corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_invalid_proxy corefx\src\System.Net.Http\src\Resources\Strings.resx : MailHeaderFieldMalformedHeader corefx\src\System.Net.Http\src\Resources\Strings.resx : InvalidHeaderName corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_invalid_cookiecontainer_unix corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_username_empty_string corefx\src\System.Net.Http\src\Resources\Strings.resx : net_http_no_concurrent_io_allowed corefx\src\System.Net.Http.WinHttpHandler\src\Resources\Strings.resx : net_http_content_buffersize_limit corefx\src\System.Net.NameResolution\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.NetworkInformation\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.Ping\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nonClsCompliantException corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_illegalConfigWith corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_illegalConfigWithout corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_baddate corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_writestarted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_clsmall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_reqsubmitted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_rspsubmitted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_no_http_cmd corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_invalid_method_name corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_invalid_renameto corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_no_defaultcreds corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpnoresponse corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_response_invalid_format corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_no_offsetforhttp corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_invalid_uri corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_invalid_status_response corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_server_failed_passive corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_active_address_different corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_proxy_does_not_support_ssl corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_invalid_response_filename corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftp_unsupported_method corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_resubmitcanceled corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_redirect_perm corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_resubmitprotofailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_needchunked corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nochunked corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nochunkuploadonhttp10 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_connarg corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_no100 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_fromto corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_rangetoosmall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_entitytoobig corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalidversion corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalidstatus corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_toolong corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_connclosed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_noseek corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_servererror corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nouploadonget corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_mutualauthfailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invasync corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_inasync corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_mustbeuri corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_format_shexp corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cannot_load_proxy_helper corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalid_host corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_repcall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_wrongversion corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_badmethod corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_notenoughbyteswritten corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_timeout_use_ge_zero corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_timeout_use_gt_zero corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_no_0timeouts corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_requestaborted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_tooManyRedirections corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_authmodulenotregistered corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_authschemenotregistered corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_proxyschemenotsupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_maxsrvpoints corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_unknown_prefix corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_notconnected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_notstream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_timeout corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nocontentlengthonget corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_contentlengthmissing corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nonhttpproxynotallowed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nottoken corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_rangetype corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_need_writebuffering corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_nodefaultcreds corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_stopped corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_udpconnected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_readonlystream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_writeonlystream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_no_concurrent_io_allowed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_needmorethreads corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_MethodNotSupportedException corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_PropertyNotSupportedException corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ProtocolNotSupportedException corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_SelectModeNotSupportedException corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_InvalidSocketHandle corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_InvalidEndPointAddressFamily corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalidAddressList corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalidPingBufferSize corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cant_perform_during_shutdown corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cant_create_environment corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_protocol_invalid_family corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_protocol_invalid_multicast_family corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_empty_osinstalltype corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_unknown_osinstalltype corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cant_determine_osinstalltype corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_osinstalltype corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_entire_body_not_written corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_must_provide_request_body corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssp_dont_support_cbt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_zerolist corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_blocking corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_useblocking corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_select corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_toolarge_select corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_empty_select corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_mustbind corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_mustlisten corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_mustnotlisten corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_mustnotbebound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_namedmustnotbebound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_invalid_socketinformation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_invalid_ipaddress_length corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_invalid_dnsendpoint corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_disconnectedConnect corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_disconnectedAccept corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_tcplistener_mustbestopped corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_no_duplicate_async corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_socketopinprogress corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_buffercounttoosmall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_multibuffernotsupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ambiguousbuffers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_sockets_ipv6only corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perfcounter_initialized_success corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perfcounter_initialized_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perfcounter_nocategory corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perfcounter_initialization_started corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perfcounter_cant_queue_workitem corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_proxy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_proxy_module_not_public corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_authenticationmodules corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_webrequestmodules corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_requestcaching corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_section_permission corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_element_permission corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_config_property_permission corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebResponseParseError_InvalidHeaderName corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebResponseParseError_InvalidContentLength corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebResponseParseError_IncompleteHeaderLine corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebResponseParseError_CrLfError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebResponseParseError_InvalidChunkFormat corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebResponseParseError_UnexpectedServerResponse corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_Success corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_NameResolutionFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_ConnectFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_ReceiveFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_SendFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_PipelineFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_RequestCanceled corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_ConnectionClosed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_TrustFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_SecureChannelFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_ServerProtocolViolation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_KeepAliveFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_ProxyNameResolutionFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_MessageLengthLimitExceeded corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_CacheEntryNotFound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_RequestProhibitedByCachePolicy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_Timeout corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webstatus_RequestProhibitedByProxy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_InvalidStatusCode corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ServiceNotAvailable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_CantOpenData corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ConnectionClosed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ActionNotTakenFileUnavailableOrBusy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ActionAbortedLocalProcessingError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ActionNotTakenInsufficentSpace corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_CommandSyntaxError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ArgumentSyntaxError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_CommandNotImplemented corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_BadCommandSequence corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_NotLoggedIn corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_AccountNeeded corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ActionNotTakenFileUnavailable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ActionAbortedUnknownPageType corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_FileActionAborted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ftpstatuscode_ActionNotTakenFilenameNotAllowed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_NoContent corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_NonAuthoritativeInformation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_ResetContent corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_PartialContent corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_MultipleChoices corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Ambiguous corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_MovedPermanently corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Moved corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Found corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Redirect corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_SeeOther corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_RedirectMethod corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_NotModified corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_UseProxy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_TemporaryRedirect corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_RedirectKeepVerb corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_BadRequest corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Unauthorized corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_PaymentRequired corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Forbidden corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_NotFound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_MethodNotAllowed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_NotAcceptable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_ProxyAuthenticationRequired corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_RequestTimeout corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Conflict corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_Gone corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_LengthRequired corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_InternalServerError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_NotImplemented corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_BadGateway corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_ServiceUnavailable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_GatewayTimeout corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_httpstatuscode_HttpVersionNotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadScheme corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadFormat corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadUserPassword corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadHostName corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadAuthority corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadAuthorityTerminator corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_EmptyUri corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadString corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_MustRootedPath corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadPort corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_SizeLimit corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_SchemeLimit corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_NotAbsolute corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_PortOutOfRange corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_UserDrivenParsing corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_AlreadyRegistered corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_NeedFreshParser corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_CannotCreateRelative corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_InvalidUriKind corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_BadUnicodeHostForIdn corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_GenericAuthorityNotDnsSafe corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_uri_NotJustSerialization corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_emptystringset corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_headers_req corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_headers_rsp corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_headers_toolong corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebHeaderInvalidControlChars corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebHeaderInvalidCRLFChars corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebHeaderInvalidHeaderChars corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebHeaderInvalidNonAsciiChars corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebHeaderMissingColon corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_headerrestrict corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_completionportwasbound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_writefailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_readfailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_connectionclosed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_transportfailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_internal_bind corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_invalidasyncresult corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_invalidnestedcall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_invalidendcall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_must_be_rw_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_header_id corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_out_range corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_encrypt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_decrypt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_read corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_write corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_eof corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_io_async_result corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_mustcall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_mustcompletecall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_callinprogress corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_scheme corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_host corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_slash corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_repcall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_invalid_cbt_type corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_no_spns corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_cannot_set_custom_cbt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_cbt_not_supported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_detach_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_close_urlgroup_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_tls_version corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_target corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_both_regex corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_none corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_attrib_count corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_invalid_val corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_attrib_multi corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_epname corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_perm_invalid_val_in_element corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalid_ip_addr corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_bad_mac_address corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ping corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_bad_ip_address_prefix corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_max_ip_address_list_length_exceeded corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ipv4_not_installed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ipv6_not_installed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webclient corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webclient_ContentType corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webclient_Multipart corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webclient_no_concurrent_io_allowed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_webclient_invalid_baseaddress corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cookie_invalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cookie_exists corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_set_token corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_revert_token corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_async_context corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_encrypt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_decrypt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_context_expired corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_handshake_start corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_handshake corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_frame corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_corrupted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_cert_validation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_invalid_end_call corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_ssl_io_invalid_begin_call corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_bad_client_creds corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_bad_client_creds_or_target_mismatch corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_context_expectation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_context_expectation_remote corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_supported_impl_levels corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_no_anonymous_support corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_reauth corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_noauth corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_client_server corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_noencryption corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_SSPI corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_failure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_eof corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_alert corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_ignored_reauth corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_empty_read corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_auth_must_specify_extended_protection_scheme corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_frame_size corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_frame_read_io corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_frame_read_size corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_frame_max_size corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_jscript_load corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_proxy_not_gmt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_proxy_invalid_dayofweek corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_proxy_invalid_url_format corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_param_not_string corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_value_cannot_be_negative corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalid_offset corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_offset_plus_count corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cannot_be_false corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_listener_already corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_shadowstream_not_writable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_validator_fail corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_access_denied corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_validator_result corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_retrieve_failure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_not_supported_body corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_not_supported_command corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_not_accept_response corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_method_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_key_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_no_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_unsupported_partial_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_not_configured corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_cache_non_seekable_stream_not_supported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_invalid_cast corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_not_ipermission corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_no_classname corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_no_typename corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_array_too_small corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_servicePointAddressNotSupportedInHostMode corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_Websockets_AlreadyOneOutstandingOperation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_Websockets_WebSocketBaseFaulted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_NativeSendResponseHeaders corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_NotAWebSocket_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_UnsupportedWebSocketVersion_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_HeaderError_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_UnsupportedProtocol_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_AcceptNotAWebSocket corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_AcceptUnsupportedWebSocketVersion corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_AcceptHeaderNotFound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_AcceptUnsupportedProtocol corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ClientAcceptingNoProtocols corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ClientSecWebSocketProtocolsBlank corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ArgumentOutOfRange_TooSmall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ArgumentOutOfRange_InternalBuffer corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ArgumentOutOfRange_TooBig corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidState_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidState_ClosedOrAborted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ReceiveAsyncDisallowedAfterCloseAsync corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidMessageType corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidBufferType corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidMessageType_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_Argument_InvalidMessageType corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_ConnectionClosedPrematurely_Generic corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_Scheme corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_AlreadyStarted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_Connect101Expected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidResponseHeader corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_NotConnected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_InvalidRegistration corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_WebSockets_NoDuplicateProtocol corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_delegate_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_unsupported_authentication_scheme corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_unmatched_authentication_scheme corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_create_valid_identity_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_httpsys_registry_null corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_httpsys_registry_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_cant_convert_raw_path corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_cant_convert_percent_value corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_cant_convert_bytes corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_cant_convert_to_utf8 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_cant_create_uri corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_cbt_disabled corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_cbt_http corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_cbt_platform corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_cbt_trustedproxy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_cbt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_spn_kerberos corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_spn_disabled corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_spn_cbt corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_spn_platform corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_spn_whensupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_no_spn_loopback corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_passed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_failed_always corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_failed_empty corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_failed_dump corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_add corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_not_add corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_remove corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_listener_spn_not_remove corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sspi_enumerating_security_packages corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sspi_security_package_not_found corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sspi_security_context_input_buffer corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sspi_security_context_input_buffers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sspi_selected_cipher_suite corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_certificate corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_locating_private_key_for_certificate corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cert_is_of_type_2 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_found_cert_in_store corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_did_not_find_cert_in_store corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_open_store_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_got_certificate_from_delegate corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_no_delegate_and_have_no_client_cert corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_no_delegate_but_have_client_cert corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_attempting_restart_using_cert corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_no_issuers_try_all_certs corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_server_issuers_look_for_matching_certs corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_selected_cert corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_n_certs_after_filtering corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_finding_matching_certs corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_using_cached_credential corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_cert_user_declared_valid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_cert_user_declared_invalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_cert_has_no_errors corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_cert_has_errors corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_cert_not_available corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_remote_cert_name_mismatch corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_autodetect_script_location_parse_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_autodetect_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_script_execution_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_script_download_compile_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_system_setting_update corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_update_due_to_ip_config_change corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_called_with_null_parameter corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_called_with_invalid_parameter corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_ras_supported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_ras_notsupported_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_winhttp_cant_open_session corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_winhttp_getproxy_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_proxy_winhttp_timeout_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_validation_failed_resubmit corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_refused_server_response corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_ftp_proxy_doesnt_support_partial corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_ftp_method corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_ftp_supports_bin_only corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_replacing_entry_with_HTTP_200 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_now_time corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_max_age_absolute corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_age1 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_age1_date_header corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_age1_last_synchronized corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_age1_last_synchronized_age_header corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_age2 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_max_age_cache_s_max_age corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_max_age_expires_date corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_max_age_cache_max_age corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_max_age_use_10_percent corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_max_age_use_default corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_validator_invalid_for_policy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_response_last_modified corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cache_last_modified corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_partial_and_non_zero_content_offset corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_response_valid_based_on_policy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_null_response_failure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_ftp_response_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_valid_based_on_retry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_update_based_on_method corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_removed_existing_invalid_entry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_not_updated_based_on_policy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_not_updated_because_no_response corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_removed_existing_based_on_method corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_existing_not_removed_because_unexpected_response_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_removed_existing_based_on_policy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_not_updated_based_on_ftp_response_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_update_not_supported_for_ftp_restart corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_removed_entry_because_ftp_restart_response_changed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_last_synchronized corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_suppress_update_because_synched_last_minute corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_updating_last_synchronized corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cannot_remove corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_key_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_key_remove_failed_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_usecount_file corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_filename corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_lookup_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_expected_length corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_last_modified corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_expires corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_max_stale corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_dumping_metadata corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_create_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_set_expires corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_set_last_modified corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_set_last_synchronized corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_enable_max_stale corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_disable_max_stale corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_set_new_metadata corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_dumping corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_key corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_commit corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_error_deleting_filename corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_update_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_delete_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_commit_failed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_committed_as_partial corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_max_stale_and_update_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_failing_request_with_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_request_method corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_http_status_parse_failure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_http_status_line corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cache_control corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_invalid_http_version corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_http_response_header corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_http_header_parse_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_metadata_name_value_parse_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_content_range_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cache_control_error corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_unexpected_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_object_and_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_revalidation_not_needed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_not_updated_based_on_cache_protocol_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_closing_cache_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_exception_ignored corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_cache_entry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_null_cached_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_requested_combined_but_null_cached_stream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_returned_range_cache corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_entry_not_found_freshness_undefined corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_dumping_cache_context corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_result corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_uri_with_query_has_no_expiration corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_uri_with_query_and_cached_resp_from_http_10 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_valid_as_fresh_or_because_policy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_accept_based_on_retry_count corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_date_header_older_than_cache_entry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_server_didnt_satisfy_range corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_304_received_on_unconditional_request corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_304_received_on_unconditional_request_expected_200_206 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_last_modified_header_older_than_cache_entry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_freshness_outside_policy_limits corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_need_to_remove_invalid_cache_entry_304 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_status corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_304_or_request_head corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_dont_update_cached_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_update_cached_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_partial_resp_not_combined_with_existing_entry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_request_contains_conditional_header corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_not_a_get_head_post corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cannot_update_cache_if_304 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cannot_update_cache_with_head_resp corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_http_resp_is_null corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_cache_control_is_no_store corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_cache_control_is_public corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_cache_control_is_private corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_cache_control_is_private_plus_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_older_than_cache corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_revalidation_required corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_needs_revalidation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_allows_caching corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_auth_header_and_no_s_max_age corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_post_resp_without_cache_control_or_expires corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_valid_based_on_status_code corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_no_cache_control corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_age corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_policy_min_fresh corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_policy_max_age corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_policy_cache_sync_date corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_policy_max_stale corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_control_no_cache corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_control_no_cache_removing_some_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_control_must_revalidate corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cached_auth_header corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cached_auth_header_no_control_directive corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_after_validation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_resp_status_304 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_head_resp_has_different_content_length corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_head_resp_has_different_content_md5 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_head_resp_has_different_etag corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_304_head_resp_has_different_last_modified corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_existing_entry_has_to_be_discarded corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_existing_entry_should_be_discarded corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_206_resp_non_matching_entry corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_206_resp_starting_position_not_adjusted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_combined_resp_requested corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_updating_headers_on_304 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_suppressing_headers_update_on_304 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_status_code_not_304_206 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_sxx_resp_cache_only corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_sxx_resp_can_be_replaced corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_vary_header_empty corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_vary_header_contains_asterisks corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_no_headers_in_metadata corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_vary_header_mismatched_count corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_vary_header_mismatched_field corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_vary_header_match corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_range corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_range_invalid_format corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_range_not_in_cache corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_range_in_cache corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_partial_resp corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_range_request_range corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_could_be_partial corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_condition_if_none_match corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_condition_if_modified_since corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cannot_construct_conditional_request corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_cannot_construct_conditional_range_request corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_entry_size_too_big corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_condition_if_range corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_conditional_range_not_implemented_on_http_10 corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_saving_request_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_only_byte_range_implemented corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_cache_multiple_complex_range_not_implemented corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_digest_hash_algorithm_not_supported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_digest_qop_not_supported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_digest_requires_nonce corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_auth_invalid_challenge corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_unknown corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_operation_returned_something corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_buffered_n_bytes corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_method_equal corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_releasing_connection corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_unexpected_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_server_response_error_code corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_resubmitting_request corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_retrieving_localhost_exception corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_resolved_servicepoint_may_not_be_remote_server corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_closed_idle corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_received_status_line corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sending_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_received_headers corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_shell_expression_pattern_format_warning corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_exception_in_callback corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_sending_command corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_received_response corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_socket_connected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_socket_accepted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_socket_not_logged_file corefx\src\System.Net.Primitives\src\Resources\Strings.resx : net_log_socket_connect_dnsendpoint corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailAddressInvalidFormat corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailSubjectInvalidFormat corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailBase64InvalidCharacter corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailCollectionIsReadOnly corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailDateInvalidFormat corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderFieldAlreadyExists corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderFieldInvalidCharacter corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderFieldMalformedHeader corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderFieldMismatchedName corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderIndexOutOfBounds corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderItemAccessorOnlySingleton corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderListHasChanged corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderResetCalledBeforeEOF corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderTargetArrayTooSmall corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHeaderInvalidCID corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailHostNotFound corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailReaderGetContentStreamAlreadyCalled corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailReaderTruncated corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailWriterIsInContent corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailServerDoesNotSupportStartTls corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MailServerResponse corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SSPIAuthenticationOrSPNNull corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SSPIPInvokeError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpAlreadyConnected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpAuthenticationFailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpAuthenticationFailedNoCreds corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpDataStreamOpen corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpDefaultMimePreamble corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpDefaultSubject corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpInvalidResponse corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpNotConnected corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpSystemStatus corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpHelpMessage corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpServiceReady corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpServiceClosingTransmissionChannel corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpOK corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpUserNotLocalWillForward corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpStartMailInput corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpServiceNotAvailable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpMailboxBusy corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpLocalErrorInProcessing corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpInsufficientStorage corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpPermissionDenied corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpCommandUnrecognized corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpSyntaxError corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpCommandNotImplemented corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpBadCommandSequence corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpCommandParameterNotImplemented corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpMailboxUnavailable corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpUserNotLocalTryAlternatePath corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpExceededStorageAllocation corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpMailboxNameNotAllowed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpTransactionFailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpSendMailFailure corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpRecipientFailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpRecipientRequired corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpFromRequired corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpAllRecipientsFailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpClientNotPermitted corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpMustIssueStartTlsFirst corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpNeedAbsolutePickupDirectory corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpGetIisPickupDirectoryFailed corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpPickupDirectoryDoesnotSupportSsl corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpOperationInProgress corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpAuthResponseInvalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpEhloResponseInvalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpNonAsciiUserNotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpInvalidHostName corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MimeTransferEncodingNotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SeekNotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : WriteNotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidHexDigit corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidSSPIContext corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidSSPIContextKey corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidSSPINegotiationElement corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidHeaderName corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidHeaderValue corefx\src\System.Net.Primitives\src\Resources\Strings.resx : CannotGetEffectiveTimeOfSSPIContext corefx\src\System.Net.Primitives\src\Resources\Strings.resx : CannotGetExpiryTimeOfSSPIContext corefx\src\System.Net.Primitives\src\Resources\Strings.resx : ReadNotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidAsyncResult corefx\src\System.Net.Primitives\src\Resources\Strings.resx : UnspecifiedHost corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidPort corefx\src\System.Net.Primitives\src\Resources\Strings.resx : SmtpInvalidOperationDuringSend corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MimePartCantResetStream corefx\src\System.Net.Primitives\src\Resources\Strings.resx : MediaTypeInvalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : ContentTypeInvalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : ContentDispositionInvalid corefx\src\System.Net.Primitives\src\Resources\Strings.resx : ArgumentOutOfRange_Bounds_Lower_Upper corefx\src\System.Net.Primitives\src\Resources\Strings.resx : security_ExtendedProtectionPolicy_UseDifferentConstructorForNever corefx\src\System.Net.Primitives\src\Resources\Strings.resx : security_ExtendedProtectionPolicy_NoEmptyServiceNameCollection corefx\src\System.Net.Primitives\src\Resources\Strings.resx : security_ServiceNameCollection_EmptyServiceName corefx\src\System.Net.Primitives\src\Resources\Strings.resx : security_X509Certificate_NotSupported corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidOperation_WrongAsyncResultOrEndReadCalledMultiple corefx\src\System.Net.Primitives\src\Resources\Strings.resx : InvalidOperation_WrongAsyncResultOrEndWriteCalledMultiple corefx\src\System.Net.Requests\src\Resources\Strings.resx : net_headers_toolong corefx\src\System.Net.Requests\src\Resources\Strings.resx : net_emptystringcall corefx\src\System.Net.Requests\src\Resources\Strings.resx : net_headers_req corefx\src\System.Net.Security\src\Resources\Strings.resx : Arg_RankMultiDimNotSupported corefx\src\System.Net.Security\src\Resources\Strings.resx : Arg_ArrayPlusOffTooSmall corefx\src\System.Net.Security\src\Resources\Strings.resx : net_mustbeuri corefx\src\System.Net.Security\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.Security\src\Resources\Strings.resx : event_EnumerateSecurityPackages corefx\src\System.Net.Security\src\Resources\Strings.resx : event_SspiPackageNotFound corefx\src\System.Net.Security\src\Resources\Strings.resx : event_SecurityContextInputBuffer corefx\src\System.Net.Security\src\Resources\Strings.resx : event_SecurityContextInputBuffers corefx\src\System.Net.Security\src\Resources\Strings.resx : event_SspiSelectedCipherSuite corefx\src\System.Net.Security\src\Resources\Strings.resx : event_RemoteCertificate corefx\src\System.Net.Security\src\Resources\Strings.resx : event_LocatingPrivateKey corefx\src\System.Net.Security\src\Resources\Strings.resx : event_CertIsType2 corefx\src\System.Net.Security\src\Resources\Strings.resx : event_FoundCertInStore corefx\src\System.Net.Security\src\Resources\Strings.resx : event_NotFoundCertInStore corefx\src\System.Net.Security\src\Resources\Strings.resx : event_CertificateFromDelegate corefx\src\System.Net.Security\src\Resources\Strings.resx : event_NoDelegateNoClientCert corefx\src\System.Net.Security\src\Resources\Strings.resx : event_NoDelegateButClientCert corefx\src\System.Net.Security\src\Resources\Strings.resx : event_AttemptingRestartUsingCert corefx\src\System.Net.Security\src\Resources\Strings.resx : event_NoIssuersTryAllCerts corefx\src\System.Net.Security\src\Resources\Strings.resx : event_LookForMatchingCerts corefx\src\System.Net.Security\src\Resources\Strings.resx : event_SelectedCert corefx\src\System.Net.Security\src\Resources\Strings.resx : event_CertsAfterFiltering corefx\src\System.Net.Security\src\Resources\Strings.resx : event_FindingMatchingCerts corefx\src\System.Net.Security\src\Resources\Strings.resx : event_UsingCachedCredential corefx\src\System.Net.Security\src\Resources\Strings.resx : event_RemoteCertDeclaredValid corefx\src\System.Net.Security\src\Resources\Strings.resx : event_RemoteCertUserDeclaredInvalid corefx\src\System.Net.Security\src\Resources\Strings.resx : event_RemoteCertHasNoErrors corefx\src\System.Net.Security\src\Resources\Strings.resx : net_context_establishment_failed corefx\src\System.Net.Security\src\Resources\Strings.resx : net_context_wrap_failed corefx\src\System.Net.Security\src\Resources\Strings.resx : net_context_unwrap_failed corefx\src\System.Net.Sockets\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.Sockets\src\Resources\Strings.resx : net_log_socket_connected corefx\src\System.Net.Sockets\src\Resources\Strings.resx : event_Accepted corefx\src\System.Net.Sockets\src\Resources\Strings.resx : event_NotLoggedFile corefx\src\System.Net.Sockets\src\Resources\Strings.resx : event_ConnectedAsyncDns corefx\src\System.Net.WebSockets.Client\src\Resources\Strings.resx : net_log_exception corefx\src\System.Net.WebSockets.Client\src\Resources\Strings.resx : net_WebSockets_InvalidMessageType corefx\src\System.Numerics.Vectors\src\Resources\Strings.resx : Arg_MultiDimArrayNotSupported corefx\src\System.Numerics.Vectors\src\Resources\Strings.resx : Arg_RegisterLengthOfRangeException corefx\src\System.Numerics.Vectors\src\Resources\Strings.resx : Reflection_MethodNotSupported corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectSerializer_DictionaryNotSupported corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_BadEscape corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_IllegalPrimitive corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_InvalidArrayExtraComma corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_InvalidMemberName corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_StringNotQuoted corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_UnexpectedToken corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : ObjectDeserializer_UnterminatedString corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : JsonCircularReferenceDetected corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : PartialTrustDataContractMemberGetNotPublic corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : PartialTrustDataContractMemberSetNotPublic corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : UnknownDataContract corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : InvalidDataNode corefx\src\System.Private.DataContractSerialization\src\Resources\Strings.resx : TypeNotSerializableViaReflection corefx\src\System.Private.Uri\src\Resources\Strings.resx : AssertionFailed corefx\src\System.Private.Uri\src\Resources\Strings.resx : Debug_Fail corefx\src\System.Reflection.Metadata\src\Resources\Strings.resx : AssemblyTableInvalidNumberOfRows corefx\src\System.Reflection.Metadata\src\Resources\Strings.resx : UnableToReadMetadataFile corefx\src\System.Reflection.Metadata\src\Resources\Strings.resx : InvalidSectionName corefx\src\System.Reflection.Metadata\src\Resources\Strings.resx : NegativeByteCountOrOffset corefx\src\System.Resources.Reader\src\Resources\Strings.resx : InvalidOperation_ResourceWriterSaved corefx\src\System.Resources.Reader\src\Resources\Strings.resx : NotSupported_WrongResourceReader_Type corefx\src\System.Resources.Writer\src\Resources\Strings.resx : Arg_ResourceFileUnsupportedVersion corefx\src\System.Resources.Writer\src\Resources\Strings.resx : Resources_StreamNotValid corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_ResourcesHeaderCorrupted corefx\src\System.Resources.Writer\src\Resources\Strings.resx : Argument_StreamNotReadable corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_NegativeStringLength corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_ResourcesNameInvalidOffset corefx\src\System.Resources.Writer\src\Resources\Strings.resx : NotSupported_WrongResourceReader_Type corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_TypeMismatch corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_ResourceNameCorrupted_NameIndex corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_ResourcesDataInvalidOffset corefx\src\System.Resources.Writer\src\Resources\Strings.resx : Format_Bad7BitInt32 corefx\src\System.Resources.Writer\src\Resources\Strings.resx : BadImageFormat_InvalidType corefx\src\System.Resources.Writer\src\Resources\Strings.resx : InvalidOperation_EnumNotStarted corefx\src\System.Resources.Writer\src\Resources\Strings.resx : InvalidOperation_EnumEnded corefx\src\System.Resources.Writer\src\Resources\Strings.resx : ResourceReaderIsClosed corefx\src\System.Runtime.Extensions\src\Resources\Strings.resx : ArgumentOutOfRange_StartIndex corefx\src\System.Runtime.Extensions\src\Resources\Strings.resx : Arg_InvalidSearchPattern corefx\src\System.Runtime.Extensions\src\Resources\Strings.resx : Arg_PathGlobalRoot corefx\src\System.Runtime.Extensions\src\Resources\Strings.resx : Arg_Path2IsRooted corefx\src\System.Runtime.Extensions\src\Resources\Strings.resx : Argument_PathEmpty corefx\src\System.Runtime.Extensions\src\Resources\Strings.resx : Argument_PathUriFormatNotSupported corefx\src\System.Runtime.InteropServices\src\Resources\Strings.resx : ArgumentOutOfRange_NeedNonNegNumRequired corefx\src\System.Runtime.InteropServices\src\Resources\Strings.resx : Argument_InvalidThreshold corefx\src\System.Runtime.Serialization.Formatters\src\Resources\Strings.resx : Serialization_OptionalFieldVersionValue corefx\src\System.Runtime.WindowsRuntime\src\Resources\Strings.resx : Argument_InvalidSafeBufferOffLen corefx\src\System.Runtime.WindowsRuntime\src\Resources\Strings.resx : NotSupported_UmsSafeBuffer corefx\src\System.Runtime.WindowsRuntime\src\Resources\Strings.resx : Arg_BufferTooSmall corefx\src\System.Security.Claims\src\Resources\Strings.resx : InvalidOperation_ClaimCannotBeRemoved corefx\src\System.Security.Claims\src\Resources\Strings.resx : InvalidOperationException_ActorGraphCircular corefx\src\System.Security.Cryptography.Algorithms\src\Resources\Strings.resx : Cryptography_InvalidKey_SemiWeak corefx\src\System.Security.Cryptography.Algorithms\src\Resources\Strings.resx : Cryptography_PasswordDerivedBytes_InvalidAlgorithm corefx\src\System.Security.Cryptography.Algorithms\src\Resources\Strings.resx : Cryptography_PasswordDerivedBytes_InvalidIV corefx\src\System.Security.Cryptography.Algorithms\src\Resources\Strings.resx : Cryptography_RC2_EKS40 corefx\src\System.Security.Cryptography.Algorithms\src\Resources\Strings.resx : Cryptography_RC2_EKSKS corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_ArgECDHKeySizeMismatch corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_ArgECDHRequiresECDHKey corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_ArgExpectedECDiffieHellmanCngPublicKey corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_ECXmlSerializationFormatRequired corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_InvalidSignatureAlgorithm corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : NotSupported_Method corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_NonCompliantFIPSAlgorithm corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_RC2_EKSKS2 corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_TlsRequiresLabelAndSeed corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : Cryptography_PlatformNotSupported corefx\src\System.Security.Cryptography.Cng\src\Resources\Strings.resx : WorkInProgress_UnsupportedHash corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Argument_StreamNotReadable corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Argument_StreamNotWritable corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Cryptography_CryptoStream_FlushFinalBlockTwice corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Cryptography_InvalidBlockSize corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Cryptography_InvalidCipherMode corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Cryptography_InvalidFeedbackSize corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : Cryptography_InvalidIVSize corefx\src\System.Security.Cryptography.Csp\src\Resources\Strings.resx : NotSupported_UnseekableStream corefx\src\System.Security.Cryptography.OpenSsl\src\Resources\Strings.resx : Cryptography_UnsupportedEcKeyAlgorithm corefx\src\System.Security.Cryptography.Pkcs\src\Resources\Strings.resx : Cryptography_Cms_Envelope_Empty_Content corefx\src\System.Security.Cryptography.Pkcs\src\Resources\Strings.resx : WorkInProgress corefx\src\System.Security.Cryptography.X509Certificates\src\Resources\Strings.resx : Cryptography_InvalidOID corefx\src\System.Security.Cryptography.X509Certificates\src\Resources\Strings.resx : Cryptography_InvalidStoreHandle corefx\src\System.Security.Cryptography.X509Certificates\src\Resources\Strings.resx : Cryptography_X509_ExportFailed corefx\src\System.Security.Cryptography.X509Certificates\src\Resources\Strings.resx : Cryptography_X509_KeyMismatch corefx\src\System.Security.Cryptography.X509Certificates\src\Resources\Strings.resx : InvalidPublicKeyInX509 corefx\src\System.Security.Cryptography.X509Certificates\src\Resources\Strings.resx : NotSupported_InvalidKeyImpl corefx\src\System.Security.Principal.Windows\src\Resources\Strings.resx : ExecutionEngine_MissingSecurityDescriptor corefx\src\System.Security.Principal.Windows\src\Resources\Strings.resx : InvalidOperation_AnonymousCannotImpersonate corefx\src\System.Security.Principal.Windows\src\Resources\Strings.resx : PlatformNotSupported_RequiresW2kSP3 corefx\src\System.ServiceProcess.ServiceController\src\Resources\Strings.resx : DisplayName corefx\src\System.ServiceProcess.ServiceController\src\Resources\Strings.resx : NoDisplayName corefx\src\System.ServiceProcess.ServiceController\src\Resources\Strings.resx : ServiceName corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : ArrayInitializedStateNotEqual corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : ArrayLengthsNotEqual corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : CannotFindOldValue corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : CapacityMustBeGreaterThanOrEqualToCount corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : CapacityMustEqualCountOnMove corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : CollectionModifiedDuringEnumeration corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : InvalidEmptyOperation corefx\src\System.Text.Encodings.Web\src\Resources\Strings.resx : InvalidOperationOnDefaultArray corefx\src\System.Threading.Tasks.Dataflow\src\Resources\Strings.resx : Argument_InvalidSourceForFilteredLink corefx\src\System.Threading.Tasks.Dataflow\src\Resources\Strings.resx : event_DataflowBlockCompleted corefx\src\System.Threading.Tasks.Dataflow\src\Resources\Strings.resx : event_DataflowBlockCreated corefx\src\System.Threading.Tasks.Dataflow\src\Resources\Strings.resx : event_DataflowBlockLinking corefx\src\System.Threading.Tasks.Dataflow\src\Resources\Strings.resx : event_DataflowBlockUnlinking corefx\src\System.Threading.Tasks.Dataflow\src\Resources\Strings.resx : event_TaskLaunchedForMessageHandling corefx\src\System.Xml.ReaderWriter\src\Resources\Strings.resx : Argument_InvalidCodePageConversionIndex corefx\src\System.Xml.ReaderWriter\src\Resources\Strings.resx : ArgumentOutOfRange_Range corefx\src\System.Xml.ReaderWriter\src\Resources\Strings.resx : ArgumentNull_Array corefx\src\System.Xml.ReaderWriter\src\Resources\Strings.resx : Argument_ConversionOverflow corefx\src\System.Xml.ReaderWriter\src\Resources\Strings.resx : Argument_EncodingConversionOverflowBytes corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xdom_NoRootEle corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xdom_Ele_Prefix corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Arg_ExpectingXmlTextReader corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Arg_IncompatibleParamType corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : XmlNonCLSCompliantException corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xml_UnsupportedClass corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xml_NullResolver corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xml_RelativeUriNotSupported corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xml_UntrustedCodeSettingResolver corefx\src\System.Xml.XmlDocument\src\Resources\Strings.resx : Xml_InvalidNameCharsDetail corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : Xml_InvalidNmToken corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxErrorDeserializingRequestBody corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxErrorDeserializingReplyBody corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxInvalidXmlAttributeInWrapped corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxInvalidXmlAttributeInBare corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxXmlArrayNotAllowedForMultiple corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxErrorSerializingBody corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxRpcMessageMustHaveASingleBody corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxBodyObjectTypeCannotBeInherited corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxBodyObjectTypeCannotBeInterface corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxKnownTypeNull corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : SFxFaultTypeAnonymous corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlInvalidEncodingNotEncoded1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlInvalidEncoding3 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlUnexpectedType corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlMultipleAttributeOverrides corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlIllegalSoapAttribute corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlInvalidArrayLength corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlUnsupportedSoapTypeKind corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_UnknownID_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_IllegalAttrType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_XmlInvalidCast_2 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_IllegalTextType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_TwoXmlAny_2 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_MissingEnum_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_UnknownEnum_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_UnknownAccessor_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_TwoMappings_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_TwoDefaultXmlAny corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_IllegalChoiceDirection corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_ElementAsAttribute_2 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_AttributeAsElement_2 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_CircularRef_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_IllegalSequenceType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_NoRepeatingAccessor_2 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_NoArrayEltAcc_2 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_WrongXAEAType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_WrongXAAAType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_XNDANotXSN_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_InvalidHref_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_IllegalDataType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_DataTypeNotValid_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_UnknownPrefix_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_CollNoAdd_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_IEnumNoAdd_3 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_BadArrayType_1 corefx\src\System.Xml.XmlSerializer\src\Resources\Strings.resx : XmlS_RepeatedIdentifier_1 corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Xdom_Empty_LocalName corefx\src\System.Xml.XPath\src\Resources\Strings.resx : XmlBadName corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Xml_InvalidPIName corefx\src\System.Xml.XPath\src\Resources\Strings.resx : XmlNoNameAllowed corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Xml_XmlPrefix corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Xml_XmlnsPrefix corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Xml_NamespaceDeclXmlXmlns corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Xml_InvalidBinHexValueOddCount corefx\src\System.Xml.XPath\src\Resources\Strings.resx : Sch_XsdDateTimeCompare corefx\src\System.Xml.XPath\src\Resources\Strings.resx : XmlConvert_TypeListBadMapping corefx\src\System.Xml.XPath\src\Resources\Strings.resx : XmlConvert_TypeListBadMapping2 corefx\src\System.Xml.XPath.XmlDocument\src\Resources\Strings.resx : XmlConvert_BadUri corefx\src\System.Xml.XPath.XmlDocument\src\Resources\Strings.resx : XmlConvert_TypeBadMapping corefx\src\System.Xml.XPath.XmlDocument\src\Resources\Strings.resx : XmlConvert_TypeBadMapping2 corefx\src\System.Xml.XPath.XmlDocument\src\Resources\Strings.resx : XmlConvert_TypeListBadMapping corefx\src\System.Xml.XPath.XmlDocument\src\Resources\Strings.resx : XmlConvert_TypeListBadMapping2 corefx\src\System.Xml.XPath.XmlDocument\src\Resources\Strings.resx : XmlConvert_NotOneCharString ``` +11509 area-System.Net Rework ExclusiveAddressUse and ReuseAddress on non-Windows platforms "The ExclusiveAddressUse socket option is a Windows-specific option that, when set to ""true,"" tells Windows not to allow another socket to use the same local address as this socket. This is only needed on Windows because it otherwise (at least in some versions/configurations) allows any socket with the ReuseAddress option set to ""steal"" the address from a socket that did not have _any_ options set. On Unix, we previously treated this as an ""unsupported"" option. However, it is recommended to set this option to ""true"" on Windows, to avoid malicious theft of a service's address, so we need to support the option, in some fashion, on Unix, so that it's possible to write portable code that works reliably everywhere. Since the _only_ behavior on Linux/OSX is equivalent to ""ExclusiveAddressUse=true"" on Windows, we implement this option as a no-op if it's set to ""true,"" and as an unsupported option if set to ""false."" (It's possible that we could come up with a better failure for the ""false"" case, but I'm treating it as ""unsupported"" for compatiblity with the 1.0 release). Another related option is ReuseAddress. On Windows, this option allows a socket's address _and_ port to be reused. It's equivalent to _two_ native options on Unix: SO_REUSEADDR and SO_REUSEPORT. Again, for portability, we need an option that will work roughly the same way on all platforms. We could introduce a new option (ReuseAddressAndPort?) but existing code is already using the current ReuseAddress option. So this change makes ReuseAddress set both SO_REUSEADDR and SO_REUSEPORT on Unix. If we need to support these options individually, on Unix only, in the future, we'll need to introduce two new options (maybe ReuseAddressOnly and ReusePort) which will likely need to be treated as ""unsupported"" options on Windows. For now, no need for managed support for more fine-grained options has been demonstrated. For more information on the underlying native options on Windows, Linux, OSX, etc., see this great writeup [on stackoverflow](http://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they-mean-t). Also, the Windows docs [discuss the SO_EXCLUSIVEADDR option](https://msdn.microsoft.com/en-us/library/windows/desktop/cc150667%28v=vs.85%29.aspx) in depth. Closes #11292. @stephentoub @CIPop " +11516 area-System.ComponentModel System.ComponentModel.TypeConverter package is resolving to wrong asset for netcore50aot and uap101aot) TargetFrameworks supported by https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.ComponentModel.TypeConverter are: - .NETFramework 4.5 - .NETFramework 4.6.2 - .NETStandard 1.0 - .NETStandard 1.5 - MonoAndroid 1.0 - MonoTouch 1.0 - Xamarin.iOS 1.0 - Xamarin.Mac 2.0 - Xamarin.TVOS 1.0 - Xamarin.WatchOS 1.0 Restoring this package for netcore50aot or uap101aot will result in NetStandard1.0 to be picked up, which is the wrong asset (it's missing embedded RD.xml). We need to explicitly target netcore50aot with the correct binary asset. This issue exists on live package as well as 4.1.0 stable package which is being included in the closure of UWP MP 5.2.2 /cc @weshaggard +11518 area-System.IO Fix some broken ZipFile unicode tests These tests rely on the use of the FileData class to verify zips are created/extracted with the correct files. However, FileData and the accompanying helper methods do not take unicode normalization into account, so unicode zip tests are failing on OSX. I modified these tests to verify based on the actual files being zipped/unzipped instead of using the expectations set in the FileData class. resolves https://github.com/dotnet/corefx/issues/10397, https://github.com/dotnet/corefx/issues/9867 @stephentoub +11521 area-System.Reflection Update System.Runtime for uap10.1 to expose AssemblyNameProxy This issue depends on https://github.com/dotnet/corert/issues/1811. Once the CoreRT change is in, we can update https://github.com/dotnet/corefx/blob/dev/api/src/System.Runtime/src/System.Runtime.csproj#L37 and include AssemblyNameProxy.cs back in. +11531 area-Meta Can`t add reference to System.XML I`ve created new solution for .net core (asp.net + class library) i need to add reference to System.XML but it fails with error, same time references to other libraries works well (for example System.Xml.Linq). I checked it on 3 different computers and got this error. ![image](https://cloud.githubusercontent.com/assets/6726130/18344350/187d0fa8-75e1-11e6-8164-bb65c6c40ffc.png) +11537 area-System.Reflection Add tests for new System.Reflection APIs Look at https://github.com/dotnet/corefx/issues/10530 as reference for newly exposed APIs +11539 area-System.IO Add optimized override of FileStream.CopyToAsync Regardless of mode, we should be able to improve over the base implementation by: - Potentially reusing the FileStream's buffer (if it has one) rather than creating a separate buffer - Avoiding some per-Read argument validation checks When the FileStream is in sync mode, we should further be able to improve over the base implementation by: - Avoiding queueing a work item per Read When the FileStream is in async mode, we should be able to improve over the base implementation by: - Avoiding many of the per-read operation related costs, such as by registering once for cancellation rather than per operation, not creating a task per operation, etc. +11541 area-Meta Post request failing on deploy "I created a asp.net core application. When I run (`'dotnet run'`) it locally on my computer everything runs and returns fine. However, when I deployed it to my server i had to use `dotnet run --server.urls=http://0.0.0.0:5000` so it would bind. Now all my post/get request show that they are not they are not connection. The console shows this error ``` Object { _body: "" …"", status: 500, ok: false, statusText: ""Internal Server Error"", headers: Object, type: 2, url: ""http://ec2-52-92-174-9.us-west-2.co…"" } ``` Any idea how how to solve this issue. Huge reward for anyone that helps me fix this. my repo can be found [here](https://github.com/AndrewKralovec/Forecast-Report) Examples Client.ts ```ts // Find user in database, if exists, and log them in find(email:any, password:any){ //let body:User = {email:email, password:password}; let headers = new Headers({ 'Content-Type': 'application/json' }); this.http.post('/api/User/find', {email:email, password:password} ,{headers:headers}) .map(response => response.json()) .subscribe( data => this.login(data), error => this.userError(error) ); } ``` Controller.cs ```c# public IActionResult find([FromBody] User user){ User result = new User(); using(SqliteConnection con = new SqliteConnection(cs)){ con.Open(); string stm = $""SELECT * FROM USERS WHERE EMAIL='{user.email}' AND PASSWORD='{user.password}' LIMIT 1""; using (SqliteCommand cmd = new SqliteCommand(stm, con)){ using (SqliteDataReader rdr = cmd.ExecuteReader()){ while (rdr.Read()) { result = new User { id = rdr.GetInt32(0), email = rdr.GetString(1) }; } } } con.Close(); } if(result.Equals(user)) return Json(result); return BadRequest(""User not found""); // Not my current error, this is a different status 400 and message } ``` " +11542 area-System.Data System.Data.SqlClient.SqlCredential class missing from corefx I realize this was already raised earlier this year: https://github.com/dotnet/corefx/issues/6948 However, it appears that SecureString has been added to corefx since that issue was closed. Would it be possible to have SqlCredential implemented and the corresponding SqlConnection/SqlConnectionStringBuilder functionality that relies upon it? +11545 area-System.Drawing Compat work for System.Drawing Mono has a small subset of System.Drawing (albeit not in an assembly named System.Drawing.dll) as does .NET Core. The list below are those types that Mono has and Core does not. ``` T:System.Drawing.Color F:System.Drawing.Color.Empty M:System.Drawing.Color -- all the color members M:System.Drawing.Color.FromArgb(System.Int32) M:System.Drawing.Color.FromArgb(System.Int32,System.Drawing.Color) M:System.Drawing.Color.FromArgb(System.Int32,System.Int32,System.Int32) M:System.Drawing.Color.FromArgb(System.Int32,System.Int32,System.Int32,System.Int32) M:System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor) M:System.Drawing.Color.FromName(System.String) M:System.Drawing.Color.GetBrightness M:System.Drawing.Color.GetHue M:System.Drawing.Color.GetSaturation M:System.Drawing.Color.op_Equality(System.Drawing.Color,System.Drawing.Color) M:System.Drawing.Color.op_Inequality(System.Drawing.Color,System.Drawing.Color) M:System.Drawing.Color.ToArgb M:System.Drawing.Color.ToKnownColor T:System.Drawing.ColorConverter M:System.Drawing.ColorConverter.#ctor T:System.Drawing.KnownColor and all its members T:System.Drawing.PointConverter M:System.Drawing.PointConverter.#ctor T:System.Drawing.RectangleConverter M:System.Drawing.RectangleConverter.#ctor T:System.Drawing.SizeConverter M:System.Drawing.SizeConverter.#ctor T:System.Drawing.SizeFConverter M:System.Drawing.SizeFConverter.#ctor T:System.Drawing.SystemColors M:System.Drawing.SystemColors.get_ActiveBorder M:System.Drawing.SystemColors.get_ActiveCaption M:System.Drawing.SystemColors.get_ActiveCaptionText M:System.Drawing.SystemColors.get_AppWorkspace M:System.Drawing.SystemColors.get_ButtonFace M:System.Drawing.SystemColors.get_ButtonHighlight M:System.Drawing.SystemColors.get_ButtonShadow M:System.Drawing.SystemColors.get_Control M:System.Drawing.SystemColors.get_ControlDark M:System.Drawing.SystemColors.get_ControlDarkDark M:System.Drawing.SystemColors.get_ControlLight M:System.Drawing.SystemColors.get_ControlLightLight M:System.Drawing.SystemColors.get_ControlText M:System.Drawing.SystemColors.get_Desktop M:System.Drawing.SystemColors.get_GradientActiveCaption M:System.Drawing.SystemColors.get_GradientInactiveCaption M:System.Drawing.SystemColors.get_GrayText M:System.Drawing.SystemColors.get_Highlight M:System.Drawing.SystemColors.get_HighlightText M:System.Drawing.SystemColors.get_HotTrack M:System.Drawing.SystemColors.get_InactiveBorder M:System.Drawing.SystemColors.get_InactiveCaption M:System.Drawing.SystemColors.get_InactiveCaptionText M:System.Drawing.SystemColors.get_Info M:System.Drawing.SystemColors.get_InfoText M:System.Drawing.SystemColors.get_Menu M:System.Drawing.SystemColors.get_MenuBar M:System.Drawing.SystemColors.get_MenuHighlight M:System.Drawing.SystemColors.get_MenuText M:System.Drawing.SystemColors.get_ScrollBar M:System.Drawing.SystemColors.get_Window M:System.Drawing.SystemColors.get_WindowFrame M:System.Drawing.SystemColors.get_WindowText ``` +11547 area-System.Reflection Use constants instead of literal numbers A little bit of cleanup +11549 area-System.Security [dev/api] System.Security.Cryptography.Algorithms tests are failing due to a typeload exception on netcoreapp1.1. cc: @weshaggard After some initial investigation, looks like the issue is that System.Threading.Tasks is missing a type-forward to ConfiguredTaskAwaiter nested class. The assembly info now looks like: ``` .class extern forwarder System.Runtime.CompilerServices.ConfiguredTaskAwaitable { .assembly extern mscorlib } ``` and before, it used to look like this: ``` .class extern forwarder System.Runtime.CompilerServices.ConfiguredTaskAwaitable { .assembly extern mscorlib } .class extern ConfiguredTaskAwaiter { .class extern System.Runtime.CompilerServices.ConfiguredTaskAwaitable } ``` This is most likely an issue with GenFacades and will require a buildtools update, so I'm disabling the tests from netcoreapp1.1 runs for now. Tests output: ``` call CoreRun.exe xunit.console.netcore.exe System.Security.Cryptography.Algorithms.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Security.Cryptography.Algorithms.Tests Discovered: System.Security.Cryptography.Algorithms.Tests Starting: System.Security.Cryptography.Algorithms.Tests System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDesTests.TripleDesCreate [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\System.Security.Cryptography.Algorithms\tests\TripleDesTests.cs(63,0): at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDesTests.TripleDesCreate() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_128 [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(536,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(32,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_128() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt_2 [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(System.TypeLoadException): Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(438,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.<>c__DisplayClass28_1.b__0() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_192 [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(536,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(43,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_192() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownCBC256 [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(576,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesDecrypt(CipherMode mode, Byte[] key, Byte[] iv, Byte[] encryptedBytes, Byte[] expectedAnswer) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(77,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownCBC256() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(System.TypeLoadException): Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(389,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.<>c__DisplayClass27_1.b__0() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_256 [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(536,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(54,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_256() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_Default [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(536,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip(Aes aes) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(21,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.RandomKeyRoundtrip_Default() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesZeroPad [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(470,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesZeroPad() System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownECB192 [FAIL] System.TypeLoadException : Could not load type 'ConfiguredTaskAwaiter' from assembly 'System.Threading.Tasks, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(576,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesDecrypt(CipherMode mode, Byte[] key, Byte[] iv, Byte[] encryptedBytes, Byte[] expectedAnswer) F:\git\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs(99,0): at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.DecryptKnownECB192() Finished: System.Security.Cryptography.Algorithms.Tests === TEST EXECUTION SUMMARY === System.Security.Cryptography.Algorithms.Tests Total: 450, Errors: 0, Failed: 10, Skipped: 0, Time: 4.564s Finished running tests. End time=15:25:48.31, Exit code = 10 ``` +11551 area-System.IO [dev/api] Re-add cross compilation for uap10.1 for System.IO.IsolatedStorage cc: @JeremyKuhne @ericstj IsolatedStorage was alredy being compiled for uap10.1, but that stopped working once we tried to update the package dependency versions. The reason is because not all of the dependencies of IsolatedStorage support uap10.1 yet, so for those the build was still using their netcore50 asset which is no longer compatible with some of the other dependencies that already support uap10.1. For this reason, we are temporarily removing the x-compiling of IsolatedStorage for uap10.1, and instead we are using the netstandard1.7 implementation for uap10.1. +11552 area-System.Reflection Blob reader improvements [Work in progress] +11554 area-Serialization Targeting System.Runtime.Serialization.Primitives to uap10.1 +11555 area-System.Runtime Proposal Max, Min for IComparable **Proposed Api** Net Standard 1.0 corefx package ``` csharp public static class Compare { public static T Min(T val1, T val2) where T : IComparable; public static T Min(T val1, T val2, IComparer comparer); public static T Max(T val1, T val2) where T : IComparable; public static T Max(T val1, T val2, IComparer comparer); // ref returning version? public static ref T Min(ref T val1, ref T val2) where T : IComparable; public static ref T Max(ref T val1, ref T val2) where T : IComparable; } ``` **Questions** - Ref return version? - Namespace? /cc @NickCraver @DamianEdwards @terrajobst +11556 area-System.Linq Use TryEnsureSufficientExecutionStack in lambda compiler We implemented stack probing for the expression compiler (see https://github.com/dotnet/corefx/pull/11091) using `EnsureSufficientExecutionStack` but the `Try` variant was made public as part of https://github.com/dotnet/coreclr/pull/7077. +11564 area-System.Net Consider adding static Socket.Connect methods to support DNS endpoints See #8768 for background. +11565 area-System.Security X509Chain.ChainContext property is not available in dotnetcore. X509Chain.ChainContext property is not available in dotnetcore. We have some PInvoke code to check if the last element of the first simple chain contains a Microsoft root public key (CERT_CHAIN_POLICY_MICROSOFT_ROOT) using CertVerifyCertificateChainPolicy() CAPI. How can we check whether a given X509Chain contains a Microsoft root public key in dotnetcore? cc: @bartonjs +11566 area-System.Collections Track System.Collections.Specialized tests update to latest netstandard1.3 implementation once 1.1 ships related to #11544 +11568 area-System.Runtime Cleanup/optimize Random, remove use of % operator Even formatted, the [source code for Random](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Random.cs) is currently quite messy, and makes heavy use of the modulo operator by a non-power of 2 in the constructor. It looks like since what is being modulo'd is directly tied to a loop variable, we may be able to detect when it goes past 55, and if so just subtract 55. This will save us many expensive `idivs`. +11570 area-System.IO "DriveInfo.DriveType reports ""unknown"" in Windows Subsystem for Linux" "Running on Ubuntu in Windows Subsystem for Linux, on rs_prerelease build 14915, DriveInfo.DriveType reports ""Unknown"" for both the Linux file system (`/`, `/usr`, etc.) and mounted Windows drives (`/mnt/c`, etc). I would expect it to report ""fixed"" for at least the Linux file system, and preferably the mounted Windows drives as well. The `df -T` command reports file system names for these, so apparently there is some info available: ``` Filesystem Type 1K-blocks Used Available Use% Mounted on rootfs lxfs 498859004 167549372 331309632 34% / data lxfs 498859004 167549372 331309632 34% /data cache lxfs 498859004 167549372 331309632 34% /cache mnt lxfs 498859004 167549372 331309632 34% /mnt none tmpfs 498859004 167549372 331309632 34% /dev none tmpfs 498859004 167549372 331309632 34% /run none tmpfs 498859004 167549372 331309632 34% /run/lock none tmpfs 498859004 167549372 331309632 34% /run/shm none tmpfs 498859004 167549372 331309632 34% /run/user none drvfs 498859004 167549372 331309632 34% /mnt/c ``` (note that `/` is ""lxfs"" and `/mnt/c` is ""drvfs."" This causes a failure in the DriveInfo tests (in `DriveInfoUnixTests.PropertiesOfValidDrive`). I'll be conditionally disabling that test for now. " +11571 area-System.IO Investigate optimizing DeflateStream.CopyToAsync Currently it's not overridden and inherits the base implementation. We may be able to improve on that to the point where it would be worth overriding, such as by avoiding repeatedly pinning and unpinning. +11572 area-System.IO Investigate optimizing BufferedStream.CopyToAsync BufferedStream doesn't currently override CopyToAsync. We should investigate doing so, as there may be opportunities for optimization. For example, BufferedStream often contains a fairly large internal buffer, potentially larger than the one requested as an arg to CopyToAsync. In that case, BufferedStream's internal buffer could be used instead of allocating a new one. +11573 area-System.Net Investigate overriding NetworkStream.CopyToAsync NetworkStream doesn't override CopyToAsync, instead inheriting the base implementation that calls ReadAsync/WriteAsync in a loop. Each ReadAsync operation in turn creates a task that wraps the internal Socket APM implementation of Receive. Since a CopyToAsync will typically involve many receives, we should investigate overriding it to use SocketAsyncEventArgs, in order to avoid a bunch of the per iteration costs. +11575 area-System.Threading Remove some threading ApiCompat baselines for uap101aot once they are implemented See changes to src/System.Runtime/src/ApiCompatBaseline.uap101aot.txt +11578 area-Meta Consider adding something to the docs about /p:RestorePackages=false I just found out that you can pass in `/p:RestorePackages=false` to skip restoring packages while building a project. I don't know how I lived without this switch; previously I would wait on average about ~2m to re-build a project even for simple changes, like syntax errors. Now it takes about ~15s. We should really, really consider adding something about this to the markdown docs so less patient people don't get frustrated building. +11580 area-System.Runtime Expose MemberwiseClone on ValueType "`MemberwiseClone` is protected in `System.Object`, because it can easily break class invariants, and allowing it to be invoked from outside the class doesn't provide an avenue to enforce them. For value types, however, that is not the case, because they can always be copied - for any value type `T`, and for any value of that type, this is valid C# code: ``` T x, y; ... x = y; ``` However, if all you have is a `ValueType`, but you don't know the exact type of the value, there's no way to create an identical copy in a generic fashion. If `ValueType` simply made `MemberwiseClone` public, that would provide a way to do so. Since any actual instance of `ValueType` is always going to be some specific value type, allowing this does not result in any new issues that aren't already exposed by operator `=` on specific value types. Also, having it in the base class effectively makes ""this is value-copyable"" a part of the value type contract clearly and explicitly, unlike the current situation where that contract is implicit and not reified in the type system in any way. " +11583 area-System.Security TestKeyAgreeKeyEncryptionAlgorithm_RoundTrip failure in CI on Windows http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/26/ ``` System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.KeyAgreeRecipientInfoTests.TestKeyAgreeKeyEncryptionAlgorithm_RoundTrip [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : An internal error occurred Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.Pkcs\src\Internal\Cryptography\Pal\Windows\PkcsPalWindows.Encrypt.cs(78,0): at Internal.Cryptography.Pal.Windows.PkcsPalWindows.EncodeHelpers.CreateCryptMsgHandleToEncode(CmsRecipientCollection recipients, Oid innerContentType, AlgorithmIdentifier contentEncryptionAlgorithm, X509Certificate2Collection originatorCerts, CryptographicAttributeObjectCollection unprotectedAttributes) D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.Pkcs\src\Internal\Cryptography\Pal\Windows\PkcsPalWindows.Encrypt.cs(25,0): at Internal.Cryptography.Pal.Windows.PkcsPalWindows.Encrypt(CmsRecipientCollection recipients, ContentInfo contentInfo, AlgorithmIdentifier contentEncryptionAlgorithm, X509Certificate2Collection originatorCerts, CryptographicAttributeObjectCollection unprotectedAttributes) D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\EnvelopedCms.cs(107,0): at System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(CmsRecipientCollection recipients) D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\KeyAgreeRecipientInfoTests.cs(290,0): at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.KeyAgreeRecipientInfoTests.EncodeKeyAgreel(SubjectIdentifierType type) D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\KeyAgreeRecipientInfoTests.cs(134,0): at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.KeyAgreeRecipientInfoTests.TestKeyAgreeKeyEncryptionAlgorithm_RoundTrip() ``` +11584 area-System.IO WindowsSearchPatternInvalid theory failing after Windows path changes ``` System.IO.Tests.DirectoryInfo_GetDirectories_str_so.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_EnumDir_str_str.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumDir_str_str.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetFileSystemEntries_str_str.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumDir_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumFSE_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_GetFileSystemInfos_str_so.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetFileSystemEntries_str_str_so_alldirs.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumFSE_str_str_so_alldirs.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetDirectories_str_str.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_GetFileSystemInfos_str.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_GetFiles_str.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_GetDirectories_str.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumFiles_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_EnumFSI_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetFileSystemEntries_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_EnumDir_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumFSE_str_str.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetDirectories_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.Directory_EnumFiles_str_str.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetFiles_str_str.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_EnumerateFiles_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.Directory_GetFiles_str_str_so.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_EnumFSI_str_str.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_GetFiles_str_so.WindowsSearchPatternInvalid System.IO.Tests.DirectoryInfo_EnumerateFiles_str_str.WindowsSearchPatternInvalid ``` +11587 area-System.Security LeaveOpen ctor for CryptoStream Resolves https://github.com/dotnet/corefx/issues/1079 cc @bartonjs +11588 area-System.Runtime Proposal: Generic overloads of Array.Copy ## Background There are a lot of static Array methods that have generic overloads. Take for example `Sort`, `BinarySearch`, etc. However, there are a couple of methods where a generic overload is missing, specifically `Clear`, `Copy`, and `Reverse`. This hinders optimizations, since we cannot directly access the elements in the array from C#-- we either have to call `GetValue` and box it, or call into the runtime to do so. So for example, if the array's length is under a certain threshold in `Copy` we would want to stick to a normal for-loop instead of calling into native code. However, since those methods are non-generic, that is currently impossible. The above problem is particularly bad with `Reverse`: if the elements in the array are non-primitive structs, then _every single element_ in the array will be boxed. [Link to source.](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Array.cs#L1602-L1610) In addition, the lack of type safety means that in `Copy`, which accepts 2 `Array` parameters, we have to perform extra type-checking to make sure the arrays match before the actual copy. ## Proposal We should add generic overloads of `Clear`, `Copy`, and `Reverse`. Any code that currently calls the non-generic overloads will automatically light-up to use these methods. (The parameters should have the same names as the non-generic overloads, so this will work with callers who use named parameters as well.) ``` cs namespace System { public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable { public static void Copy(T[] sourceArray, T[] destinationArray, int length); public static void Copy(T[] sourceArray, int sourceIndex, T[] destinationArray, int destinationIndex, int length); } } ``` **edit:** @justinvp has already submitted a proposal for a generic `Reverse` which was approved, so I removed that from the proposed API. **edit:** Removed generic `Clear` from this proposal after @terrajobst's comment. That's now being tracked in #11839. +11590 area-System.Linq Expression.Quote rewriting in RuntimeOps.Quote does not preserve type "Repro: ``` csharp using System; using System.Linq.Expressions; using static System.Linq.Expressions.Expression; class Program { public static void Main() { var x = Expression.Parameter(typeof(int)); var f1 = Lambda>( Call( typeof(Program).GetMethod(nameof(F)), Lambda( Block(typeof(void), x) ) ), x ); Console.WriteLine(f1.Compile()(42)); var f2 = Lambda>( Call( typeof(Program).GetMethod(nameof(G)), Lambda( Block(typeof(void), x), x ) ) ); Console.WriteLine(f2.Compile()()); } public static Type F(Expression e) => e.Body.Type; public static Type G(Expression> e) => e.Body.Type; } ``` Output: ``` System.Int32 System.Void ``` We'd expect the first case to print `System.Void` as well, but `RuntimeOps.Quote` rewrites the `Block` because it closes over a hoisted variable `x` and uses the `Block` factory overload that does not supply the original type of the block being quoted. Receivers of a quoted node would not expect it to have changed typing. Modulo any captured variables, one would expect the quote to behave as returning a constant of type `Expression` without any touch-ups to the tree. Note that this issue also manifests itself when a `Block` is using its `Type` to make it look less derived, but after quoting (provided it references a hoisted variable) it will look more derived: ``` csharp var s = Expression.Parameter(typeof(string)); var f3 = Lambda>( Call( typeof(Program).GetMethod(nameof(H)), Lambda( Block(typeof(object), s) ) ), s ); Console.WriteLine(f3.Compile()(""bar"")); ``` In here, the quote observed by method `Program.H` will be of type `String` even though the original `Block` was typed as `Object`. " +11598 area-System.Collections Intermittent: CaseInsensitiveHashCodeProviderTests.Default_GetHashCodeCompare failed in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/osx_debug_prtest/34/consoleText ``` System.Collections.Tests.CaseInsensitiveHashCodeProviderTests.Default_GetHashCodeCompare(a: ""hello"", b: ""HELLO"", expected: True) [FAIL] Assert.Equal() Failure Expected: True Actual: False Stack Trace: at System.Collections.Tests.CaseInsensitiveHashCodeProviderTests.Default_GetHashCodeCompare(Object a, Object b, Boolean expected) ``` " +11599 area-System.Linq Potential optimization: Using vectorization for Enumerable.Sum/Average Some thoughts: - If the input is an array, e.g. `int[]` in the case of `Sum(IEnumerable)`, we could use vectorization to compute the sum, and maybe avoid range checks. - If the input is an `ICollection` but not an array, we could rent an array from `ArrayPool.Shared` and then call `CopyTo` on this array, and then go ahead with using vectorization. This will undoubtedly be slower for small collections, and it adds making another pass over the array + renting. However, it will still be faster than the enumerable version which makes 2 virtual method calls per-iteration, since only one virtual call, `CopyTo`, is made for the entire collection. Unfortunately I don't know if the vectorization part is possible since `Sum` uses `checked` arithmetic. Checking if any of the numbers in the vector are negative from overflow, e.g. [here](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/String.Manipulation.cs#L151), will not work since it's possible that some of the ints in the array are negative. +11601 area-Meta Type forwarding makes compiling agains runtime assemblies harder "When compiling code using Roslyn as a library, it's fairly common to compile against framework runtime assemblies, since doing so is much easier than figuring out where reference assemblies are. For example: ``` c# var compilation = CSharpCompilation.Create(assemblyName) .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location)); ``` If you need additional assemblies, you find some type from each assembly and use that. Specifically, using `dynamic` requires `Microsoft.CSharp` and `System.Dynamic.Runtime`, so you would add: ``` c# .AddReferences(MetadataReference.CreateFromFile(typeof(Binder).Assembly.Location)) .AddReferences(MetadataReference.CreateFromFile(typeof(DynamicAttribute).Assembly.Location)) ``` This works fine on .Net Framework, but not on .Net Core. The first issue is that on .Net Core, some types are in separate assemblies. Specifically, using `dynamic` also requires `System.Linq.Expressions`: ``` c# .AddReferences(MetadataReference.CreateFromFile(typeof(Expression).GetTypeInfo().Assembly.Location)) ``` This is understandable. What is less understandable is that the assembly that contains `object` and other base types, `System.Private.CorLib` is not enough, you also need to explicitly reference two assemblies that mostly just forward types: `System.Runtime` and `mscorlib`: ``` c# .AddReferences(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName(""System.Runtime"")).Location)) .AddReferences(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName(""mscorlib"")).Location)) ``` This is necessary, because `Microsoft.CSharp` references `System.Runtime`, which forwards to `mscorlib`, which forwards to `System.Private.CorLib`. Would it be possible for the `Microsoft.CSharp` runtime assembly (and similar assemblies) to directly reference the assembly that actually contains the types it uses, without any forwarding? It would simplify this kind of code. --- For reference, [here is a complete project](https://gist.github.com/svick/70cb54470f0ea7c8474a03666300f091) showing what I'm talking about. See also https://github.com/dotnet/roslyn/issues/12045, which inspired this request. " +11604 area-Infrastructure System.Reflection.TypeExtensions.Tests has package restore errors on initial build ## Steps (on clean repo with newly initalized buildtools etc.): 1) Navigate to `src/Sytem.Reflection.TypeExtensions/tests` 2) Run `msbuild /T:BuildAndTest` ## Fix The errors seem to be as a result of System.Reflection.TypeExtensions.dll not being found (see log). The errors go away if I do the following before my steps to reproduce: 1) Navigate to `src/Sytem.Reflection.TypeExtensions/src/redist` 2) Run `msbuild` ## Notes The VS project for System.Reflection.TypeExtensions also seems to have hundreds of errors relating to non existent methods in the `src` folder that clearly exist. I also think this has something to do with the `src/redist` folder not present in most projects ## Log [msbuild.txt](https://github.com/dotnet/corefx/files/466171/msbuild.txt) +11605 area-System.Globalization Compat work for Calendars (for Linux) Add the implementation of the added .net standard 1.7 APIs to Linux +11606 area-System.Globalization Compat work for CharUnuicode (for Linux) add the implementation of new added APIs +11608 area-System.Globalization Compat work for collations/Sorting (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11609 area-System.Globalization Compat work for Cultures (Globalization) (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11611 area-System.Globalization Compat work for DateTimeFormatInfo (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11612 area-System.Globalization Compat work for NumberFormatInfo (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11613 area-System.Globalization Compat work for RegionInfo (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11614 area-System.Globalization Compat work for Sortversion (for Linux) +11615 area-System.Globalization Compat work for StringInfo class globalization APIs (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11616 area-System.Globalization Compat work for TextInfo class (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11617 area-System.Globalization Compat work for String class globalization APIs (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11619 area-Meta Add string reason to all OuterLoop usage in tests Now that OuterLoopAttribute has a ctor that takes a string reason, we should update all OuterLoopAttribute usage to specify the reason the test was demoted to outer loop, e.g. makes network requests, mutates shared state on the machine, takes a long time to run, etc. Some tests already have this in various forms, e.g. a comment next to the [OuterLoop] usage, but we should standardize on including it in the message. And a lot of the usage doesn't specify the reason, forcing a developer who comes along later to try to guess why. +11622 area-System.IO Test failure on Ubuntu: System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_CreateManyConcurrentInstances Opened on behalf of @jiangzeng The test `System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_CreateManyConcurrentInstances` has failed. ``` System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. ``` Stack Trace: ``` at ExceptionExtensions.Unwrap(Exception ex) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Ubuntu.1604.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160910.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.FileSystemWatcherTests~2FFileSystemWatcher_CreateManyConcurrentInstances +11623 area-System.Net Test failure: System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest/HttpClient_ClientUsesAuxRecord_Ok Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest/HttpClient_ClientUsesAuxRecord_Ok` has failed. ``` System.TimeoutException : The operation has timed out. ``` Stack Trace: ``` at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Windows.7.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160910.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest~2FHttpClient_ClientUsesAuxRecord_Ok +11624 area-System.Net Test failure: System.Net.Security.Tests.ServerNoEncryptionTest/ServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption Opened on behalf of @jiangzeng The test `System.Net.Security.Tests.ServerNoEncryptionTest/ServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption` has failed. ``` Assert.Throws() Failure Expected: typeof(System.Security.Authentication.AuthenticationException) Actual: (No exception was thrown) ``` Stack Trace: ``` --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerNoEncryptionTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - OSX.1011.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160910.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ServerNoEncryptionTest~2FServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption +11631 area-System.Threading Port some missing threading types/members (Timer, exceptions, sync objects, etc.) ``` M:System.Threading.Timer.#ctor(System.Threading.TimerCallback) M:System.Threading.Timer.#ctor(System.Threading.TimerCallback,System.Object,System.Int64,System.Int64) M:System.Threading.Timer.#ctor(System.Threading.TimerCallback,System.Object,System.UInt32,System.UInt32) M:System.Threading.Timer.Change(System.Int64,System.Int64) M:System.Threading.Timer.Change(System.UInt32,System.UInt32) M:System.Threading.Timer.Dispose(System.Threading.WaitHandle) M:System.Threading.AbandonedMutexException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.BarrierPostPhaseException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.LockRecursionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.SemaphoreFullException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.SynchronizationLockException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) T:System.Threading.ThreadAbortException T:System.Threading.ThreadInterruptedException M:System.Threading.ThreadInterruptedException.#ctor M:System.Threading.ThreadInterruptedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.ThreadInterruptedException.#ctor(System.String) M:System.Threading.ThreadInterruptedException.#ctor(System.String,System.Exception) M:System.Threading.ThreadStateException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.WaitHandleCannotBeOpenedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) T:System.Threading.ThreadExceptionEventArgs M:System.Threading.ThreadExceptionEventArgs.#ctor(System.Exception) P:System.Threading.ThreadExceptionEventArgs.Exception M:System.Threading.ThreadExceptionEventArgs.get_Exception T:System.Threading.ThreadExceptionEventHandler M:System.Threading.ThreadExceptionEventHandler.#ctor(System.Object,System.IntPtr) M:System.Threading.ThreadExceptionEventHandler.BeginInvoke(System.Object,System.Threading.ThreadExceptionEventArgs,System.AsyncCallback,System.Object) M:System.Threading.ThreadExceptionEventHandler.EndInvoke(System.IAsyncResult) M:System.Threading.ThreadExceptionEventHandler.Invoke(System.Object,System.Threading.ThreadExceptionEventArgs) M:System.Threading.Monitor.Wait(System.Object,System.Int32,System.Boolean) M:System.Threading.Monitor.Wait(System.Object,System.TimeSpan,System.Boolean) ``` +11632 area-System.Threading Port some missing threading types/members (Thread, etc.) ``` M:System.Threading.Thread.#ctor(System.Threading.ParameterizedThreadStart,System.Int32) M:System.Threading.Thread.#ctor(System.Threading.ThreadStart,System.Int32) M:System.Threading.Thread.AllocateDataSlot M:System.Threading.Thread.AllocateNamedDataSlot(System.String) P:System.Threading.Thread.ApartmentState M:System.Threading.Thread.BeginCriticalRegion M:System.Threading.Thread.BeginThreadAffinity P:System.Threading.Thread.CurrentCulture P:System.Threading.Thread.CurrentPrincipal P:System.Threading.Thread.CurrentUICulture M:System.Threading.Thread.EndCriticalRegion M:System.Threading.Thread.EndThreadAffinity P:System.Threading.Thread.ExecutionContext M:System.Threading.Thread.FreeNamedDataSlot(System.String) M:System.Threading.Thread.get_ApartmentState M:System.Threading.Thread.get_CurrentCulture M:System.Threading.Thread.get_CurrentPrincipal M:System.Threading.Thread.get_CurrentUICulture M:System.Threading.Thread.get_ExecutionContext M:System.Threading.Thread.get_IsThreadPoolThread M:System.Threading.Thread.get_Priority M:System.Threading.Thread.GetApartmentState M:System.Threading.Thread.GetData(System.LocalDataStoreSlot) M:System.Threading.Thread.GetDomain M:System.Threading.Thread.GetDomainID M:System.Threading.Thread.GetHashCode M:System.Threading.Thread.GetNamedDataSlot(System.String) P:System.Threading.Thread.IsThreadPoolThread M:System.Threading.Thread.Join(System.TimeSpan) M:System.Threading.Thread.MemoryBarrier P:System.Threading.Thread.Priority M:System.Threading.Thread.set_ApartmentState(System.Threading.ApartmentState) M:System.Threading.Thread.set_CurrentCulture(System.Globalization.CultureInfo) M:System.Threading.Thread.set_CurrentPrincipal(System.Security.Principal.IPrincipal) M:System.Threading.Thread.set_CurrentUICulture(System.Globalization.CultureInfo) M:System.Threading.Thread.set_Priority(System.Threading.ThreadPriority) M:System.Threading.Thread.SetApartmentState(System.Threading.ApartmentState) M:System.Threading.Thread.SetData(System.LocalDataStoreSlot,System.Object) M:System.Threading.Thread.SpinWait(System.Int32) M:System.Threading.Thread.TrySetApartmentState(System.Threading.ApartmentState) M:System.Threading.Thread.VolatileRead(System.Byte@) M:System.Threading.Thread.VolatileRead(System.Double@) M:System.Threading.Thread.VolatileRead(System.Int16@) M:System.Threading.Thread.VolatileRead(System.Int32@) M:System.Threading.Thread.VolatileRead(System.Int64@) M:System.Threading.Thread.VolatileRead(System.IntPtr@) M:System.Threading.Thread.VolatileRead(System.Object@) M:System.Threading.Thread.VolatileRead(System.SByte@) M:System.Threading.Thread.VolatileRead(System.Single@) M:System.Threading.Thread.VolatileRead(System.UInt16@) M:System.Threading.Thread.VolatileRead(System.UInt32@) M:System.Threading.Thread.VolatileRead(System.UInt64@) M:System.Threading.Thread.VolatileRead(System.UIntPtr@) M:System.Threading.Thread.VolatileWrite(System.Byte@,System.Byte) M:System.Threading.Thread.VolatileWrite(System.Double@,System.Double) M:System.Threading.Thread.VolatileWrite(System.Int16@,System.Int16) M:System.Threading.Thread.VolatileWrite(System.Int32@,System.Int32) M:System.Threading.Thread.VolatileWrite(System.Int64@,System.Int64) M:System.Threading.Thread.VolatileWrite(System.IntPtr@,System.IntPtr) M:System.Threading.Thread.VolatileWrite(System.Object@,System.Object) M:System.Threading.Thread.VolatileWrite(System.SByte@,System.SByte) M:System.Threading.Thread.VolatileWrite(System.Single@,System.Single) M:System.Threading.Thread.VolatileWrite(System.UInt16@,System.UInt16) M:System.Threading.Thread.VolatileWrite(System.UInt32@,System.UInt32) M:System.Threading.Thread.VolatileWrite(System.UInt64@,System.UInt64) M:System.Threading.Thread.VolatileWrite(System.UIntPtr@,System.UIntPtr) M:System.Threading.Thread.Yield T:System.LocalDataStoreSlot T:System.Threading.ApartmentState F:System.Threading.ApartmentState.MTA F:System.Threading.ApartmentState.STA F:System.Threading.ApartmentState.Unknown F:System.Threading.ApartmentState.value__ T:System.Threading.ThreadPriority F:System.Threading.ThreadPriority.AboveNormal F:System.Threading.ThreadPriority.BelowNormal F:System.Threading.ThreadPriority.Highest F:System.Threading.ThreadPriority.Lowest F:System.Threading.ThreadPriority.Normal F:System.Threading.ThreadPriority.value__ ``` +11633 area-System.Threading Port some missing threading types/members (ThreadPool, etc.) ``` M:System.Threading.ThreadPool.GetAvailableThreads(System.Int32@,System.Int32@) M:System.Threading.ThreadPool.GetMaxThreads(System.Int32@,System.Int32@) M:System.Threading.ThreadPool.GetMinThreads(System.Int32@,System.Int32@) M:System.Threading.ThreadPool.SetMaxThreads(System.Int32,System.Int32) M:System.Threading.ThreadPool.SetMinThreads(System.Int32,System.Int32) M:System.Threading.ThreadPool.UnsafeQueueUserWorkItem(System.Threading.WaitCallback,System.Object) M:System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.Int32,System.Boolean) M:System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.Int64,System.Boolean) M:System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.TimeSpan,System.Boolean) M:System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.UInt32,System.Boolean) ``` +11634 area-System.Threading Port some missing threading types/members (ReaderWriterLock, etc.) ``` T:System.Threading.ReaderWriterLock M:System.Threading.ReaderWriterLock.#ctor M:System.Threading.ReaderWriterLock.AcquireReaderLock(System.Int32) M:System.Threading.ReaderWriterLock.AcquireReaderLock(System.TimeSpan) M:System.Threading.ReaderWriterLock.AcquireWriterLock(System.Int32) M:System.Threading.ReaderWriterLock.AcquireWriterLock(System.TimeSpan) M:System.Threading.ReaderWriterLock.AnyWritersSince(System.Int32) M:System.Threading.ReaderWriterLock.DowngradeFromWriterLock(System.Threading.LockCookie@) M:System.Threading.ReaderWriterLock.get_IsReaderLockHeld M:System.Threading.ReaderWriterLock.get_IsWriterLockHeld M:System.Threading.ReaderWriterLock.get_WriterSeqNum P:System.Threading.ReaderWriterLock.IsReaderLockHeld P:System.Threading.ReaderWriterLock.IsWriterLockHeld M:System.Threading.ReaderWriterLock.ReleaseLock M:System.Threading.ReaderWriterLock.ReleaseReaderLock M:System.Threading.ReaderWriterLock.ReleaseWriterLock M:System.Threading.ReaderWriterLock.RestoreLock(System.Threading.LockCookie@) M:System.Threading.ReaderWriterLock.UpgradeToWriterLock(System.Int32) M:System.Threading.ReaderWriterLock.UpgradeToWriterLock(System.TimeSpan) P:System.Threading.ReaderWriterLock.WriterSeqNum T:System.Threading.LockCookie M:System.Threading.LockCookie.Equals(System.Object) M:System.Threading.LockCookie.Equals(System.Threading.LockCookie) M:System.Threading.LockCookie.GetHashCode M:System.Threading.LockCookie.op_Equality(System.Threading.LockCookie,System.Threading.LockCookie) M:System.Threading.LockCookie.op_Inequality(System.Threading.LockCookie,System.Threading.LockCookie) ``` +11635 area-System.Threading Port some missing threading types/members (ExecutionContext, etc.) ``` M:System.Threading.ExecutionContext.CreateCopy M:System.Threading.ExecutionContext.Dispose M:System.Threading.ExecutionContext.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.ExecutionContext.IsFlowSuppressed M:System.Threading.ExecutionContext.RestoreFlow M:System.Threading.ExecutionContext.SuppressFlow T:System.Threading.HostExecutionContext M:System.Threading.HostExecutionContext.#ctor M:System.Threading.HostExecutionContext.#ctor(System.Object) M:System.Threading.HostExecutionContext.CreateCopy M:System.Threading.HostExecutionContext.Dispose M:System.Threading.HostExecutionContext.Dispose(System.Boolean) M:System.Threading.HostExecutionContext.get_State M:System.Threading.HostExecutionContext.set_State(System.Object) P:System.Threading.HostExecutionContext.State T:System.Threading.HostExecutionContextManager M:System.Threading.HostExecutionContextManager.#ctor M:System.Threading.HostExecutionContextManager.Capture M:System.Threading.HostExecutionContextManager.Revert(System.Object) M:System.Threading.HostExecutionContextManager.SetHostExecutionContext(System.Threading.HostExecutionContext) M:System.Threading.Thread.GetCompressedStack M:System.Threading.Thread.SetCompressedStack(System.Threading.CompressedStack) T:System.Threading.AsyncFlowControl M:System.Threading.AsyncFlowControl.Dispose M:System.Threading.AsyncFlowControl.Equals(System.Object) M:System.Threading.AsyncFlowControl.Equals(System.Threading.AsyncFlowControl) M:System.Threading.AsyncFlowControl.GetHashCode M:System.Threading.AsyncFlowControl.op_Equality(System.Threading.AsyncFlowControl,System.Threading.AsyncFlowControl) M:System.Threading.AsyncFlowControl.op_Inequality(System.Threading.AsyncFlowControl,System.Threading.AsyncFlowControl) M:System.Threading.AsyncFlowControl.Undo T:System.Threading.CompressedStack M:System.Threading.CompressedStack.Capture M:System.Threading.CompressedStack.CreateCopy M:System.Threading.CompressedStack.GetCompressedStack M:System.Threading.CompressedStack.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Threading.CompressedStack.Run(System.Threading.CompressedStack,System.Threading.ContextCallback,System.Object) ``` +11636 area-System.Threading Port some missing threading types/members (SynchronizationContext wait, etc.) ``` M:System.Threading.SynchronizationContext.IsWaitNotificationRequired M:System.Threading.SynchronizationContext.SetThreadStaticContext(System.Threading.SynchronizationContext) M:System.Threading.SynchronizationContext.SetWaitNotificationRequired M:System.Threading.SynchronizationContext.Wait(System.IntPtr[],System.Boolean,System.Int32) M:System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[],System.Boolean,System.Int32) ``` +11637 area-System.Threading Port some missing threading types/members (Overlapped, etc.) - [x] M:System.Threading.ThreadPool.BindHandle(System.IntPtr) - [ ] M:System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*) - [ ] T:System.Threading.Overlapped - [ ] M:System.Threading.Overlapped.#ctor - [ ] M:System.Threading.Overlapped.#ctor(System.Int32,System.Int32,System.Int32,System.IAsyncResult) - [ ] M:System.Threading.Overlapped.#ctor(System.Int32,System.Int32,System.IntPtr,System.IAsyncResult) - [ ] P:System.Threading.Overlapped.AsyncResult - [ ] P:System.Threading.Overlapped.EventHandle - [ ] P:System.Threading.Overlapped.EventHandleIntPtr - [ ] M:System.Threading.Overlapped.Free(System.Threading.NativeOverlapped*) - [ ] M:System.Threading.Overlapped.get_AsyncResult - [ ] M:System.Threading.Overlapped.get_EventHandle - [ ] M:System.Threading.Overlapped.get_EventHandleIntPtr - [ ] M:System.Threading.Overlapped.get_OffsetHigh - [ ] M:System.Threading.Overlapped.get_OffsetLow - [ ] P:System.Threading.Overlapped.OffsetHigh - [ ] P:System.Threading.Overlapped.OffsetLow - [ ] M:System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback) - [ ] M:System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback,System.Object) - [ ] M:System.Threading.Overlapped.set_AsyncResult(System.IAsyncResult) - [ ] M:System.Threading.Overlapped.set_EventHandle(System.Int32) - [ ] M:System.Threading.Overlapped.set_EventHandleIntPtr(System.IntPtr) - [ ] M:System.Threading.Overlapped.set_OffsetHigh(System.Int32) - [ ] M:System.Threading.Overlapped.set_OffsetLow(System.Int32) - [ ] M:System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*) - [ ] M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback) - [ ] M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.Object) +11638 area-System.Threading Port some missing threading types/members (Thread abort/interrupt/suspend, etc.) ``` M:System.Threading.Thread.Abort M:System.Threading.Thread.Abort(System.Object) M:System.Threading.Thread.DisableComObjectEagerCleanup M:System.Threading.Thread.Interrupt M:System.Threading.Thread.ResetAbort M:System.Threading.Thread.Suspend M:System.Threading.Thread.Resume ``` ``` namespace System.Runtime.InteropServices { public static class Marshal { public static void CleanupUnusedObjectsInCurrentContext(); } } ``` +11639 area-System.Reflection Load assemblies with nuget package dependencies "I have been trying to dynamically load assemblies that have dependencies on nuget packages, of course the nuget packages have been restored and the proper dlls are present in the output folder. I do this to load the assembly: `var aName = AssemblyLoadContext.GetAssemblyName(file.FullName);` `var library = Assembly.Load(aName);` And then I load the types like this: `types = library.GetTypes();` When the assembly does not uses any dependency, the types are loaded correctly, but when the assembly uses a nuget package I get an exception with a loader exception like this: `Message = ""Could not load file or assembly 'needletail_dotnet_core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.""` I can dynamically load the assemblies that are part of the nuget packages and get their types. So my question is how to load assemblies that have nuget packages(or any other) depenency on dotnet core? I am using dotnet version 1.0.1 Build cee57bf6c981237d80aa1631cfe83cb9ba329f12. Some suggested answers on the internet use beta versions of dotnet core. " +11646 area-System.Security Csp error strings missing error code parameter "The System.Security.Cryptography.Csp project has resource strings (in Strings.resx) that are called with an error code parameter, but the string literal doesn't include the parameters identifier {0} thus any such error string won't work. Verification against desktop clr strings should be performed, although at first look the error strings don't necessary align here. Sample case: DSACryptoServiceProvider csp = new DSACryptoServiceProvider(2048); The known list includes: CryptDecrypt_Failed,, @""CryptDecrypt failed with error code "" CryptEncrypt_Failed, @""CryptEncrypt failed with error code "" CryptExportKey_Failed, @""CryptExportKey failed with error code "") CryptGenKey_Failed"", @""CryptGenKey failed with error code "") CryptGetDefaultProvider_Fail, @""CryptGetDefaultProvider failed with Error code "" CryptGetKeyParam_Failed, @""CryptGetKeyParam failed with error code "" CryptGetProvParam_Failed, @""CryptGetProvParam failed with error code "" CryptGetUserKey_Failed, @""CryptGetUserKey failed with error code "" " +11647 area-System.Runtime Port Uri parsing related members These seem to go reasonably together ``` M:System.FileStyleUriParser.#ctor M:System.FtpStyleUriParser.#ctor M:System.GenericUriParser.#ctor(System.GenericUriParserOptions) F:System.GenericUriParserOptions.AllowEmptyAuthority F:System.GenericUriParserOptions.Default F:System.GenericUriParserOptions.DontCompressPath F:System.GenericUriParserOptions.DontConvertPathBackslashes F:System.GenericUriParserOptions.DontUnescapePathDotsAndSlashes F:System.GenericUriParserOptions.GenericAuthority F:System.GenericUriParserOptions.Idn F:System.GenericUriParserOptions.IriParsing F:System.GenericUriParserOptions.NoFragment F:System.GenericUriParserOptions.NoPort F:System.GenericUriParserOptions.NoQuery F:System.GenericUriParserOptions.NoUserInfo M:System.GopherStyleUriParser.#ctor M:System.HttpStyleUriParser.#ctor M:System.LdapStyleUriParser.#ctor M:System.NetPipeStyleUriParser.#ctor M:System.NetTcpStyleUriParser.#ctor M:System.NewsStyleUriParser.#ctor M:System.Uri.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Uri.Canonicalize M:System.Uri.CheckSecurity M:System.Uri.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.UriFormatException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.UriParser.#ctor M:System.UriParser.GetComponents(System.Uri,System.UriComponents,System.UriFormat) M:System.UriParser.InitializeAndValidate(System.Uri,System.UriFormatException@) M:System.UriParser.IsBaseOf(System.Uri,System.Uri) M:System.UriParser.IsKnownScheme(System.String) M:System.UriParser.IsWellFormedOriginalString(System.Uri) M:System.UriParser.OnNewUri M:System.UriParser.OnRegister(System.String,System.Int32) M:System.UriParser.Register(System.UriParser,System.String,System.Int32) M:System.UriParser.Resolve(System.Uri,System.Uri,System.UriFormatException@) ``` +11651 area-Serialization Support text.Mapping being SpecialMapping when using ReflectionBased … Support text.Mapping being SpecialMapping when using ReflectionBased Serializer. #10592 #11367 @shmao @zhenlan @mconnew +11654 area-System.Net Make async continuations run on different thread to avoid deadlock Fixes #4429 +11655 area-System.Reflection Restore System.Reflection.Assembly load APIs These APIs need to be exposed from System.Reflection: ``` M:System.Reflection.Assembly.Load(byte[],byte[],System.Security.Policy.Evidence) M:System.Reflection.Assembly.Load(byte[],byte[],System.Security.SecurityContextSource) M:System.Reflection.Assembly.Load(System.Reflection.AssemblyName,System.Security.Policy.Evidence) M:System.Reflection.Assembly.Load(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadFrom(System.String) M:System.Reflection.Assembly.LoadFrom(System.String,byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) M:System.Reflection.Assembly.LoadFrom(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadFrom(System.String,System.Security.Policy.Evidence,byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) M:System.Reflection.Assembly.LoadFile(System.String) M:System.Reflection.Assembly.LoadFile(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadModule(System.String,byte[]) M:System.Reflection.Assembly.LoadModule(System.String,byte[],byte[]) M:System.Reflection.Assembly.LoadWithPartialName(System.String) M:System.Reflection.Assembly.LoadWithPartialName(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.UnsafeLoadFrom(System.String) ``` +11656 area-System.Reflection APIs not exposed from System.Reflection The following is a list of Reflection APIs that are not going to be included in netstandard2.0 [This is only to keep track in case we decide to expose these later.] ``` M:System.Reflection.FieldInfo.GetValueDirect(System.TypedReference) M:System.Reflection.FieldInfo.SetValueDirect(System.TypedReference,System.Object) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetIDsOfNames(System.GUID,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetType M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetTypeInfo(System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.GetTypeInfo(System.UInt32) M:System.Reflection.MemberInfo.System.Runtime.InteropServices._MemberInfo.Invoke(System.UInt32,System.GUID,System.UInt32,System.Int16,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsAbstract M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsAssembly M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsConstructor M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFamily M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFamilyAndAssembly M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFamilyOrAssembly M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsFinal M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsHideBySig M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsPrivate M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsPublic M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsSpecialName M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsStatic M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.get_IsVirtual M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetIDsOfNames(System.GUID,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetType M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetTypeInfo(System.UInt32,System.UInt32,System.IntPtr) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.GetTypeInfoCount(System.UInt32) M:System.Reflection.MethodBase.System.Runtime.InteropServices._MethodBase.Invoke(System.UInt32,System.GUID,System.UInt32,System.UInt16,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) ``` The following list we prefer not to expose, as they are either CAS-related APIs or have dependencies on also-not-exposed types from other contracts: ``` M:System.Reflection.Assembly.get_Evidence M:System.Reflection.Assembly.get_IsFullyTrusted M:System.Reflection.Assembly.Load(byte[],byte[],System.Security.Policy.Evidence) M:System.Reflection.Assembly.Load(byte[],byte[],System.Security.SecurityContextSource) M:System.Reflection.Assembly.Load(System.Reflection.AssemblyName,System.Security.Policy.Evidence) M:System.Reflection.Assembly.Load(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadFrom(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadFrom(System.String,System.Security.Policy.Evidence,byte[],System.Configuration M:System.Reflection.Assembly.LoadFile(System.String,System.Security.Policy.Evidence) M:System.Reflection.Assembly.LoadWithPartialName(System.String,System.Security.Policy.Evidence) M:System.Reflection.AssemblyName.get_KeyPair M:System.Reflection.AssemblyName.set_KeyPair(System.Reflection.StrongNameKeyPair) C:System.Reflection.StrongNameKeyPair M:System.Reflection.Module.GetSignerCertificate ``` +11657 area-System.Net Test failure: System.Net.Tests.HttpWebRequestTest/GetResponseAsync_ResourceNotFound_ThrowsWebException Opened on behalf of @jiangzeng The test `System.Net.Tests.HttpWebRequestTest/GetResponseAsync_ResourceNotFound_ThrowsWebException` has failed. ``` Assert.Equal() Failure Expected: ProtocolError Actual: UnknownError ``` Stack Trace: ``` at System.Net.Tests.HttpWebRequestTest.d__46.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - Centos.71.Amd64 - AnyCPU-Debug - AnyCPU-Release - Redhat.72.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160912.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FGetResponseAsync_ResourceNotFound_ThrowsWebException +11658 area-System.IO EncryptFile & DecryptFile not available on all Windows versions These APIs (exposed through File and FileInfo) are entries into EFS functionality. WinRT doesn't expose these particular APIs directly, but has a `FileProtectionManager` class that provides access to EFS (Encrypt is the only currently supported entrypoint). OneCore also does not expose EncryptFile\DecryptFile. Need to follow through on the plausibility of using FileProtectionManager and potentially other entry points into EFS to expose this API in CoreFx on Windows. +11660 area-System.Runtime Dispose of Iterators should be changed to use C# 6 null-conditionals [Currently](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Select.cs#L444-L448) there are many LINQ iterators have code of the form ``` cs public override void Dispose() { if (_enumerator != null) { _enumerator.Dispose(); _enumerator = null; } base.Dispose(); } ``` This has a few problems: - It can lead to a double-Dispose of the enumerator if 2 threads call the method. (probably unavoidable w/o Interlocked) - If `_enumerator.Dispose()` calls `Dispose()` on that iterator it can lead to a stack overflow - It can lead to a nullref if one thread sets it to null, and the other has just checked for null. We should change this to ``` cs // Fixes #3 _enumerator?.Dispose(); _enumerator = null; ``` or ``` cs // Fixes #2 and #3 var enumerator = _enumerator; _enumerator = null; enumerator?.Dispose(); ``` +11661 area-Meta Binding redirects aren't generated for desktop projects when referencing NETStandard-based libraries/installing corefx packages "Steps to repro: 1) Create a new desktop .NET 4.6+ project 2) Add project.json 3) Add a reference to any NETStandard-based library or just install corefx packages 4) Build it **Expected results**: a bunch of facade assemblies are placed in the output folder. The following binding redirects are generated: ``` ``` **Actual results**: only those 3 redirects are emitted: ``` ``` As a result, you're unable to use, say, System.IO.Compression.ZipFile, cause there's no binding redirect for the System.IO.Compression assembly (you'll get a MissingMethodException if you try). So, basically just adding a reference to a portable library may break a lot of things. Sounds like a poor user experience. " +11665 area-System.Runtime Delete Random from corefx System.Random is now exposed publicly from both coreclr and corert, and it's used by code in both repos. As such, we don't also need a copy of it in corefx. We should delete it. We can do so once the seed assemblies for GenFacade have been updated so that the corefx tooling knows Random is also available in corert. +11667 area-System.IO Use ArrayPool in corefx's CopyToAsync implementations FileStream's async mode is handled via #11666, but we can do the same for our other stream-derived types. +11668 area-System.IO System.IO.Compression: ZipArchive loads entire file in memory on .Dispose When you open a `ZipArchive` in Update mode, the entire zip file will be loaded in memory when the `.Dispose` method is invoked. This is because `.Dipose` calls `.WriteFile`, which: - Calls `LoadLocalHeaderExtraFieldAndCompressedBytesIfNeeded` for all entries, which loads the compressed data into memory for those entries - Sets the size of the .zip archive to 0, by calling `_archiveStream.SetLength(0);` - Writes out all entries one by one. As a result: - A lot of memory is used, the compressed data for each entry is loaded into memory - A lot of unnecessary disk I/O is performed, because all entries are written out again, even if they were not modified. An alternative may be to incrementally update the zip archive, and only update entries which changes. +11669 area-System.IO System.IO.Compression: ZipArchiveEntry always stores uncompressed data in memory If a `ZipArchive` is opened in Update mode, calling `ZipArchiveEntry.Open` will always result in the entry's data being decompressed and stored in memory. This is because `ZipArchiveEntry.Open` calls `ZipArchiveEntry.OpenInUpdateMode`, which in return gets the value of the `ZipArchiveEntry.UncompressedData` property, which will decompress the data and store it in a `MemoryStream`. This in its own is already fairly inconvenient - if I'm updating a large file (say 1GB) that's compressed in a zip archive, I would want to read it from the `ZipArchiveEntry` in smaller chunks, save it to a temporary file, and update the entry in the `ZipArchive` in a similar way (i.e. limiting the memory overhead and preferring temporary files instead). This also means that as soon as a `ZipArchive` is opened in Update mode, even reading an `ZipArchiveEntry` which you'll never update incurs the additional cost. A short-term fix may be to expose `ZipArchiveEntry.OpenInReadMode`, which will return a `DeflateStream` instead. If you're doing mixed reading/writing of entries in a single `ZipArchive`, this should already help you avoid some of the memory overhead. +11670 area-System.Diagnostics System.ComponentModel.Win32Exception when trying get Process.StartTime in the exited process on Linux Here example https://github.com/SerhiiS-in6k/Issue-net-core-process/blob/master/Program.cs The exception occurs only on Linux(Ubuntu14.04-x64) on Windows works fine. +11672 area-Meta ILMerge Hi, sorry if wrong repo. What would the best option be to create a dotnet core command line application and publish a single executable for Windows? Is ILMerge still the way to go? Has anyone tried this? +11674 area-System.Net Memory growth of WinHttpRequestState objects I have a web server that accepts an http request and then makes a post request to a bunch of other servers using `HttpClient`. To speed this up we make a `Task` for each request and call `HttpClient.PostAsync` inside each task. These tasks are synchronously waited on with `Task.WaitAny` in order to check the results as they come in. All the code inside the tasks uses async/await. Finally, each task get's a new `HttpClient` but they all use a shared static `HttpClientHandler` which is not disposed when the client is disposed. I have been having issues where out of the blue all of the memory on the server is used up and the number of handles goes through the roof. This happens suddenly over the course of a 10-15 min. Looking at the dumps I have been able to get I can see that most of the handles are rooted in `WinHttpRequestState`. While I am still unsure of the root cause I was looking at `WinHttpHandler` and `WinHttpRequestCallback` and noticed that `WinHttpRequestCallback.RequestCallback` is surrounded in a try/catch, however if any exception is thrown `WinHttpHandler` is not signaled by `WinHttpRequestCallback.RequestCallback` because none of it's `TaskCompletionSource`s are given the exception. Is this correct? If an exception does happen in `WinHttpRequestCallback.RequestCallback` will the task created by `WinHttpHandler.SendAsync` just sit forever? Please let me know if I have missed something. Thanks! +11678 area-System.IO Add Outerloop messages and cleanup FSW tests Test cleanup that got left out of https://github.com/dotnet/corefx/pull/11357 because Outerloop messages weren't available yet. @stephentoub +11680 area-System.Runtime Remove projectreferences from csproj introduced as part of PR #11275 +11683 area-System.Data SqlClient stress test TestSqlAsyncNonBlockingWrite Environment: Windows Server 2012 R2, OSX SqlClient: Managed SNI enabled. While executing the test `TestSqlAsyncNonBlockingWrite` the following unexpected exception is detected in SqlClient. ``` Test: TestSqlAsyncNonBlockingWrite System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Diagn ostics.Debug+DebugAssertException: _pendingCallbacks values is invalid after decrementing: -2 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Data.SqlClient.TdsParserStateObject.DecrementPendingCallbacks(Boolean release) in e:\work\gitclone\corefx\s rc\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 910 at System.Data.SqlClient.TdsParserSessionPool.Dispose() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\Syst em\Data\SqlClient\TdsParserSessionPool.cs:line 128 at System.Data.SqlClient.TdsParser.Disconnect() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\ SqlClient\TdsParser.cs:line 1012 at System.Data.SqlClient.SqlInternalConnectionTds.Dispose() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\ System\Data\SqlClient\SqlInternalConnectionTds.cs:line 544 at System.Data.ProviderBase.DbConnectionPool.DestroyObject(DbConnectionInternal obj) in e:\work\gitclone\corefx\src\S ystem.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 574 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObject sTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& co nnection) in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 831 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry , DbConnectionOptions userOptions, DbConnectionInternal& connection) in e:\work\gitclone\corefx\src\System.Data.SqlClien t\src\System\Data\ProviderBase\DbConnectionPool.cs:line 712 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource` 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in e:\wo rk\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs:line 281 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnection Factory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in e:\work\gitclone\corefx\src \System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs:line 443 at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory co nnectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in e:\work\gitclone\corefx\src\System.Da ta.SqlClient\src\System\Data\ProviderBase\DbConnectionClosed.cs:line 64 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in e:\work\gitclone\corefx\src\System.Da ta.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 992 at System.Data.SqlClient.SqlConnection.Open() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\Sq lClient\SqlConnection.cs:line 577 at Stress.Data.DataStressConnection.OpenSync() in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests \System.Data.StressFramework\DataStressConnection.cs:line 87 at Stress.Data.DataStressConnection.Open() in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\Sys tem.Data.StressFramework\DataStressConnection.cs:line 49 at Stress.Data.DataStressFactory.GetRandomPK(Random rnd, TableMetadata table) in e:\work\gitclone\corefx\src\System.D ata.SqlClient\tests\StressTests\System.Data.StressFramework\DataStressFactory.cs:line 333 at Stress.Data.DataStressFactory.GetUpdateCommand(Random rnd, TableMetadata table, DataStressConnection conn) in e:\w ork\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Data.StressFramework\DataStressFactory.cs:line 41 6 at Stress.Data.DataStressFactory.GetCommand(Random rnd, TableMetadata table, DataStressConnection conn, Boolean query , Boolean isXml) in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Data.StressFramework\Data StressFactory.cs:line 204 at Stress.Data.SqlClient.SqlClientTestGroup.TestSqlAsync(Random rnd, Boolean read, Boolean poll, Boolean handle, Bool ean xml) in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Data.SqlClient.Stress.Tests\SqlCl ientTestGroup.cs:line 284 at Stress.Data.SqlClient.SqlClientTestGroup.TestSqlAsyncNonBlockingWrite() in e:\work\gitclone\corefx\src\System.Data .SqlClient\tests\StressTests\System.Data.SqlClient.Stress.Tests\SqlClientTestGroup.cs:line 347 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters , CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at DPStressHarness.TestBase.b__21_0(Object instance) in e:\work\gitclone\corefx\src\System. Data.SqlClient\tests\StressTests\System.Data.StressRunner\TestBase.cs:line 138 at DPStressHarness.StressTest.Run() in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Dat a.StressRunner\StressTest.cs:line 116 at DPStressHarness.StressEngine.RunStressThread() in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTe sts\System.Data.StressRunner\StressEngine.cs:line 172 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Diagnostics.Debug.WindowsDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessa ge) at System.Data.SqlClient.TdsParserStateObject.DecrementPendingCallbacks(Boolean release) in e:\work\gitclone\corefx\s rc\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 910 at System.Data.SqlClient.TdsParserSessionPool.Dispose() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\Syst em\Data\SqlClient\TdsParserSessionPool.cs:line 128 at System.Data.SqlClient.TdsParser.Disconnect() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\ SqlClient\TdsParser.cs:line 1012 at System.Data.SqlClient.SqlInternalConnectionTds.Dispose() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\ System\Data\SqlClient\SqlInternalConnectionTds.cs:line 544 at System.Data.ProviderBase.DbConnectionPool.DestroyObject(DbConnectionInternal obj) in e:\work\gitclone\corefx\src\S ystem.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 574 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObject sTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& co nnection) in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 831 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry , DbConnectionOptions userOptions, DbConnectionInternal& connection) in e:\work\gitclone\corefx\src\System.Data.SqlClien t\src\System\Data\ProviderBase\DbConnectionPool.cs:line 712 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource` 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in e:\wo rk\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs:line 281 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnection Factory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in e:\work\gitclone\corefx\src \System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs:line 452 at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory co nnectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in e:\work\gitclone\corefx\src\System.Da ta.SqlClient\src\System\Data\ProviderBase\DbConnectionClosed.cs:line 64 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in e:\work\gitclone\corefx\src\System.Da ta.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 992 at System.Data.SqlClient.SqlConnection.Open() in e:\work\gitclone\corefx\src\System.Data.SqlClient\src\System\Data\Sq lClient\SqlConnection.cs:line 585 at Stress.Data.DataStressConnection.OpenSync() in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests \System.Data.StressFramework\DataStressConnection.cs:line 87 at Stress.Data.DataStressConnection.Open() in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\Sys tem.Data.StressFramework\DataStressConnection.cs:line 49 at Stress.Data.DataStressFactory.GetRandomPK(Random rnd, TableMetadata table) in e:\work\gitclone\corefx\src\System.D ata.SqlClient\tests\StressTests\System.Data.StressFramework\DataStressFactory.cs:line 333 at Stress.Data.DataStressFactory.GetUpdateCommand(Random rnd, TableMetadata table, DataStressConnection conn) in e:\w ork\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Data.StressFramework\DataStressFactory.cs:line 41 6 at Stress.Data.DataStressFactory.GetCommand(Random rnd, TableMetadata table, DataStressConnection conn, Boolean query , Boolean isXml) in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Data.StressFramework\Data StressFactory.cs:line 204 at Stress.Data.SqlClient.SqlClientTestGroup.TestSqlAsync(Random rnd, Boolean read, Boolean poll, Boolean handle, Bool ean xml) in e:\work\gitclone\corefx\src\System.Data.SqlClient\tests\StressTests\System.Data.SqlClient.Stress.Tests\SqlCl ientTestGroup.cs:line 284 at Stress.Data.SqlClient.SqlClientTestGroup.TestSqlAsyncNonBlockingWrite() in e:\work\gitclone\corefx\src\System.Data .SqlClient\tests\StressTests\System.Data.SqlClient.Stress.Tests\SqlClientTestGroup.cs:line 347 ``` Execution command `CoreRun.exe System.Data.StressRunner.exe -a System.Data.SqlClient.Stress.Tests -duration 10 -test TestSqlAsyncNonBlockingWrite` +11685 area-System.IO After merge from dev/api, 2 System.IO.Compression tests started failing "cc: @ianhays after PR #11679 two System.IO.Compression tests started failing. Here is the test run output: ``` call CoreRun.exe xunit.console.netcore.exe System.IO.Compression.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.0tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.IO.Compression.Tests Discovered: System.IO.Compression.Tests Starting: System.IO.Compression.Tests System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles.ZipWithLargeSparseFile [FAIL] Assert.Equal() Failure Expected: 14917 Actual: 14779 Stack Trace: F:\git\corefx\src\System.IO.Compression\tests\ZipArchive\zip_InvalidParametersAndStrangeFiles.cs(239,0): at System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles.ZipWithLargeSparseFile() System.IO.Compression.Tests.zip_ManualAndCompatabilityTests.CompatibilityTests(zipFile: ""deflate64.zip"", zipFolder: ""normal"", requireExplicit: True, checkTimes: True) [FAIL] Assert.All() Failure: 1 out of 6 items in the collection did not pass. [0]: System.IO.InvalidDataException: The archive entry was compressed using an unsupported compression method. at System.IO.Compression.ZipArchiveEntry.OpenInUpdateMode() at System.IO.Compression.Tests.ZipFileTestBase.<>c__DisplayClass15_2.b__0(FileData file) in F:\git\corefx\src\Common\tests\System\IO\Compression\ZipTestHelper.cs:line 170 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\CollectionAsserts.cs:line 31 Stack Trace: F:\git\corefx\src\Common\tests\System\IO\Compression\ZipTestHelper.cs(153,0): at System.IO.Compression.Tests.ZipFileTestBase.IsZipSameAsDir(Stream archiveFile, String directory, ZipArchiveMode mode, Boolean requireExplicit, Boolean checkTimes) F:\git\corefx\src\System.IO.Compression\tests\ZipArchive\zip_ManualAndCompatibilityTests.cs(21,0): at System.IO.Compression.Tests.zip_ManualAndCompatabilityTests.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Finished: System.IO.Compression.Tests === TEST EXECUTION SUMMARY === System.IO.Compression.Tests Total: 163, Errors: 0, Failed: 2, Skipped: 0, Time: 2.331s Finished running tests. End time=13:12:39.13, Exit code = 2 ``` " +11686 area-Serialization Readd ReflectionXmlSerializationReader and Writer back after dev/api merge When merging dev/api branch to master in PR #11679 we had to temporarily remove this two classes since they were added on the XmlSerializer contract which now contains no implementation. All implementation cor that contract has moved down to System.Private.Xml. I tried adding these two classes to the System.Private.Xml but it wasn't straight forward (at least from a quick stab at it) since a lot of dependencies have moved. This issue is to track the work to add those back to System.Private.Xml. cc: @shmao @stephentoub +11687 area-System.IO DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException test is failing cc: @JeremyKuhne After merging from dev/api in PR #11679 this test started failing. Here is the test run output: ``` System.IO.Tests.DirectoryInfo_Create.DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException [FAIL] Assert.All() Failure: 1 out of 2 items in the collection did not pass. [0]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure Expected: typeof(System.IO.PathTooLongException) Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path 'C:\Users\joperezr\AppData\Local\Temp\DirectoryInfo_Create_1bkmtugy.zy3\DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException_254\23099ea0-f7ac-4547-9eb5-c3f9d7cf6855\9087[...]444b-b3df-e06db775e9db'. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in F:\git\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 154 at System.IO.DirectoryInfo.Create() in F:\git\corefx\src\System.IO.FileSystem\src\System\IO\DirectoryInfo.cs:line 102 at System.IO.Tests.DirectoryInfo_Create.Create(String path) in F:\git\corefx\src\System.IO.FileSystem\tests\DirectoryInfo\Create.cs:line 17 at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass20_0.b__1() in F:\git\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 257 at Xunit.Assert.RecordException(Func`1 testCode) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\Record.cs:line 45 Stack Trace: F:\git\corefx\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs(255,0): at System.IO.Tests.Directory_CreateDirectory.DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException() Finished: System.IO.FileSystem.Tests === TEST EXECUTION SUMMARY === System.IO.FileSystem.Tests Total: 2262, Errors: 0, Failed: 1, Skipped: 26, Time: 56.245s Finished running tests. End time=13:49:46.47, Exit code = 1 ``` +11688 area-System.Net Port Socket.Close Porting Socket.Close. This makes more paths reachable in Socket.Dispose(bool), which exposed a couple of NullReferenceExceptions, which I've fixed. This change comes with only minimal testing; I will create an issue to cover adding more. +11692 area-System.Runtime Test failure: System.Tests.DateTimeOffsetTests/UtcNow Opened on behalf of @jiangzeng The test `System.Tests.DateTimeOffsetTests/UtcNow` has failed. ``` Expected UtcNow to changes\r Expected: True\r Actual: False ``` Stack Trace: ``` at System.Tests.DateTimeOffsetTests.UtcNow() in D:\A\_work\4\s\src\System.Runtime\tests\System\DateTimeOffsetTests.cs:line 539 ``` Failing configurations: - Windows.81.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160913.02/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.DateTimeOffsetTests~2FUtcNow +11693 area-System.Net WinHttpRequestState memory leak when sending WinHttp requests from WinHttpHandler. Noticed during code review that there is a potential memory leak in `GCHandle` and `WinHttpRequestState` instances when `WinHttpHandler.InternalSendRequestAsync()` executed repeatedly from asynchronous `do/while` loop in `WinHttpHandler.StartRequest`. **Cause:** `WinHttpRequestState` may pin `WinHttpRequestState` instances multiple times due to missing `_operationHandle.IsAllocated` check around `_operationHandle = GCHandle.Alloc(this)`: ``` public void Pin() { #if DEBUG Interlocked.Increment(ref s_dbg_pin); #endif _operationHandle = GCHandle.Alloc(this); } ``` Maybe related to issue [#11674](https://github.com/dotnet/corefx/issues/11674) +11694 area-System.Net Add back missing WebSockets APIs Adds back to System.Net.WebSockets: - WebSocketException deriving from Win32Exception - WebSocketException.ctor() - WebSocket.DefaultKeepAliveInterval - WebSocket.CreateClientBuffer - WebSocket.CreateClientWebSocket - WebSocket.CreateServerBuffer - WebSocket.IsApplicationTargeting45 - WebSocket.IsStateTerminal - WebSocket.ReisterPrefixes - WebSocket.ThrowOnInvalidState - WebSocketContext.RequestUri - WebSocketContext.Headers - WebSocketContext.Origin - WebSocketContext.SecWebSocketProtocols - WebSocketContext.SecWebSocketKey - WebSocketContext.CookieCollection - WebsocketContext.User - WebSocketContext.IsAuthenticated - WebSocketContext.IsLocal - WebSocketContext.IsSecureConnection - WebSocketContext.WebSocket (Several of these members just throw PlatformNotSupportedException. Others have a different implementation than on desktop but something that's reasonable for corefx given the rest of the implementation's differences, e.g. limits on buffer sizes). Adds back to System.Net.WebSockets.Client: - ClientWebSocketOptions.UseDefaultCredentials - ClientWebSocketOptions.SetBuffer(int, int) - ClientWebSocketOptions.SetBuffer(int, int, ArraySegment) As part of this, I also: - Updated ClientWebSocketOptions.KeepAliveInterval to default to 30 seconds, as it does on desktop, rather than defaulting to 0. - Updated the managed websockets implementation to take the ClientWebSocketOptions buffer information into account, in particular the receive buffer size and the buffer itself (as long as offset and count don't represent a subset, which would have been a more intrusive change to support). cc: @davidsh, @cipop, @ericeil, @danmosemsft, @anurse (@anurse, you'll notice I made some minor changes to the CreateFromConnectedStream method. Please let me know if you're ok with the changes there, as it'll obviously require a minor tweak to how you call it once you clone these changes over to the aspnet repo). @joperezr, I updated the dir.props for both assemblies. Is there something more I need to do at this point? +11697 area-System.Net Stream newStream = myRequest.GetRequestStream(); not working in ASP core Unable to solve myRequest.GetRequestStream() in ASp core and newStream.Write is also not available +11701 area-System.Linq Add Expression.Assign tests - Also increases CC by ~1%, contributing to #1918 - Also removes some dead code I've found a behaviour difference between the compiler and the interpreter (embedded try expressions in an index expression). I think this is by design, but let me know what you all thinl. /cc @bartdesmet @vsadov @stephentoub +11702 area-System.Reflection CustomAttributeBuilder throws NullReferenceException when passing null to a primitive [The following test](https://github.com/hughbe/corefx/blob/b39e754a7e845d7c1d6cebf5cc900b6639d3e913/src/System.Reflection.Emit.ILGeneration/tests/CustomAttributeBuilderTests.cs#L642) demonstrates the bug. ``` [Fact] public void NullValueForPrimitiveTypeInConstructorArgs_ThrowsNullReferenceException() { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[] { typeof(int) }); object[] constructorArgs = new object[] { null }; Assert.Throws(() => new CustomAttributeBuilder(con, constructorArgs)); Assert.Throws(() => new CustomAttributeBuilder(con, constructorArgs, new FieldInfo[0], new object[0])); Assert.Throws(() => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0])); Assert.Throws(() => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); } ``` +11703 area-System.Reflection CustomAttributeBuilder doesn't behave well with IntPtr or UIntPtr args "## Description [The following test]() demonstrates this: ``` public static IEnumerable NotSupportedPrimitives_CustomAttributeFormatException_TestData() { yield return new object[] { (IntPtr)1 }; yield return new object[] { (UIntPtr)1 }; } [Theory] [MemberData(nameof(NotSupportedPrimitives_CustomAttributeFormatException_TestData))] public static void NotSupportedPrimitiveInConstructorArgs_ThrowsCustomAttributeFormatExceptionOnCreation(object value) { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[] { typeof(object) }); object[] constructorArgs = new object[] { value }; CustomAttributeBuilder attribute = new CustomAttributeBuilder(con, constructorArgs); AssemblyBuilder assembly = Helpers.DynamicAssembly(); assembly.SetCustomAttribute(attribute); // CustomAttributeFormatException is not exposed on .NET Core Exception ex = Assert.ThrowsAny(() => assembly.GetCustomAttributes()); Assert.Equal(""System.Reflection.CustomAttributeFormatException"", ex.GetType().ToString()); } ``` ## Solution Change the code [here](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Reflection/Emit/CustomAttributeBuilder.cs#L73) from ``` private bool ValidateType(Type t) { if (t.IsPrimitive || t == typeof(String) || t == typeof(Type)) return true; } ``` to ``` private bool ValidateType(Type t) { if (t.IsPrimitive || t == typeof(String) || t == typeof(Type)) return t != typeof(IntPtr) && t != typeof(UIntPtr); } ``` This way we fail gracefully, throwing an ArgumentException instead of an exception that isn't exposed in .NET Core! " +11704 area-System.Linq Arithmetic expressions don't work with enums properly See the following example for Add: ``` // Valid Int32Enum r1 = Int32Enum.a + (sbyte)1; Int32Enum r2 = Int32Enum.a + (byte)1; Int32Enum r3 = Int32Enum.a + (short)1; Int32Enum r4 = Int32Enum.a + (ushort)1; Int32Enum r5 = Int32Enum.a + 1; // Invalid: Int32Enum r6 = Int32Enum.a + (uint)1; Int32Enum r7 = Int32Enum.a + (long)1; Int32Enum r8 = Int32Enum.a + (ulong)1; // Throws ArgumentException, incorrectly Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(sbyte))); Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(byte))); Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(short))); Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(ushort))); Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(int))); // Throws ArgumentException, correctly Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(uint))); Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(long))); Expression.Add(Expression.Constant(Int32Enum.a), Expression.Constant(1, typeof(ulong))); ``` My understanding is that Linq Expressions try to mimic C#'s behaviour as much as possible, so this could be an area to align with C#. /cc @bartdesmet @VSadov @JonHanna @stephentoub +11705 area-System.Linq Arithmetic expressions don't work with implicit numerical/primitive conversions See the following: ``` // C# int x = 1; short y = 2; int z = x + y; // System.Linq.Expressions Expression.Add(Expression.Constant(x), Expression.Constant(y)); ``` Not sure if this is intended behaviour /cc @bartdesmet @VSadov +11707 area-System.IO Recombine FileStream to simplify and avoid bugs FileStream in corefx is currently implemented as a wrapper around an inner stream that actually provides the logic for the current platform, e.g. it wraps a UnixFileStream on Unix, a Win32FileStream on Windows, etc. This has several issues: - Adds expense to create, as we're now creating two streams where we actually only need one - Adds expense on every operation, as each virtual call on the FileStream then turns around and calls a virtual method on the wrapped stream - Leads to bugs, e.g. it looks like we currently have a bug, where in sync mode, FileStream.ReadAsync calls Win32FileStream.ReadAsync which calls base.ReadAsync which in turns queues a work item to call Read... but it's calling Read on the inner stream, not on the outer stream, which means a FileStream-derived type that overrides Read won't have its override called. We can avoid all of these issues by recombining FileStream into a partial class like we use elsewhere in corefx. The primary trickiness comes with WinRT, where, depending on the path, we sometimes use Win32FileStream and sometimes use WinRTFileStream. cc: @ericstj, @justinvp, @JeremyKuhne, @ianhays +11708 area-System.Net Failed assert in NegotiateStream_StreamToStream_Authentication_TargetName_Success "I hit this assert when I try to run the System.Net.Security tests (outerloop) locally: ``` System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_TargetName_Success [FAIL] System.Diagnostics.Debug+DebugAssertException : Unknown Interop.SecurityStatus value: -2146892976 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Net.SecurityStatusAdapterPal.GetSecurityStatusPalFromInterop(SecurityStatus win32SecurityStatus) in c:\Users\stoub\Source\repos\corefx\src \System.Net.Security\src\System\Net\SecurityStatusAdapterPal.Windows.cs:line 74 at System.Net.Security.NegotiateStreamPal.InitializeSecurityContext(SafeFreeCredentials credentialsHandle, SafeDeleteContext& securityContext, Strin g spn, ContextFlagsPal requestedContextFlags, SecurityBuffer[] inSecurityBufferArray, SecurityBuffer outSecurityBuffer, ContextFlagsPal& contextFlags) in c:\ Users\stoub\Source\repos\corefx\src\System.Net.Security\src\System\Net\NegotiateStreamPal.Windows.cs:line 166 at System.Net.NTAuthentication.GetOutgoingBlob(Byte[] incomingBlob, Boolean throwOnError, SecurityStatusPal& statusCode) in c:\Users\stoub\Source\re pos\corefx\src\System.Net.Security\src\System\Net\NTAuthentication.cs:line 344 at System.Net.Security.NegoState.GetOutgoingBlob(Byte[] incomingBlob, Exception& e) in c:\Users\stoub\Source\repos\corefx\src\System.Net.Security\sr c\System\Net\SecureProtocols\NegoState.cs:line 787 at System.Net.Security.NegoState.StartSendBlob(Byte[] message, LazyAsyncResult lazyResult) in c:\Users\stoub\Source\repos\corefx\src\System.Net.Secu rity\src\System\Net\SecureProtocols\NegoState.cs:line 443 at System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult) in c:\Users\stoub\Source\repos\corefx\src\System.Net.Security\src \System\Net\SecureProtocols\NegoState.cs:line 356 at System.Net.Security.NegotiateStream.BeginAuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, Protection Level requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel, AsyncCallback asyncCallback, Object asyncState) in c:\Users\stoub\Source\re pos\corefx\src\System.Net.Security\src\System\Net\SecureProtocols\NegotiateStream.cs:line 101 at System.Net.Security.NegotiateStream.BeginAuthenticateAsClient(NetworkCredential credential, String targetName, AsyncCallback asyncCallback, Objec t asyncState) in c:\Users\stoub\Source\repos\corefx\src\System.Net.Security\src\System\Net\SecureProtocols\NegotiateStream.cs:line 60 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg 2, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state) at System.Net.Security.NegotiateStream.AuthenticateAsClientAsync(NetworkCredential credential, String targetName) in c:\Users\stoub\Source\repos\cor efx\src\System.Net.Security\src\System\Net\SecureProtocols\NegotiateStream.cs:line 183 at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_TargetName_Success() in c:\Users\stoub\ Source\repos\corefx\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs:line 90 ``` According to https://msdn.microsoft.com/en-us/library/windows/desktop/dd542646(v=vs.85).aspx, that status code is SEC_E_DOWNGRADE_DETECTED (""The system cannot contact a domain controller to service the authentication request. Please try again later.""). Do we need to add this error and others to the table in https://github.com/dotnet/corefx/blob/2ff9b2a1e367a9694af6bdaf9856ea12f9ae13cd/src/System.Net.Security/src/System/Net/SecurityStatusAdapterPal.Windows.cs? " +11712 area-Meta Add documentation on steps needed to add new APIs and increment contract versions There are PRs that use undocumented techniques to add APIs from existing platforms as well as new APIs part of features. The process changes from day to day and was never documented. To remove any confusion, it would be best if we have a step-by-step process documentation. +11714 area-System.Net Add back missing System.Net.Security APIs Adds back the missing 30 methods on SslStream and NegotiateStream, all of which were the Begin/End and synchronous variants of the XxAsync methods. Approach: - Made the Begin/End methods public, and ensured they were doing the same validation as the XxAsync methods - Added back synchronous methods with (minimal) implementation from desktop - Extended a few of the existing test classes currently using XxAsync to run all of the tests with the Begin/End and synchronous variants as well cc: @davidsh, @cipop, @ericeil, @danmosemsft, @joperezr +11715 area-System.IO System.IO.Compression: ZipArchive does not respect CP437 encoding when reading files The `ZipArchive` class uses ASCII encoding instead of IBM 437 (CP 437) (since #9004) encoding when reading and processing file names of zip entries which do not have the language encoding flag (bit 11 in the general purpose bit flag) set. The [zip file specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) appendix D specifies how encoding should be handled: > The ZIP format has historically supported only the original IBM PC character > encoding set, commonly referred to as IBM Code Page 437. This limits storing > file name characters to only those within the original MS-DOS range of values > and does not properly support file names in other character encodings, or > languages. To address this limitation, this specification will support the > following change. > > If general purpose bit 11 is unset, the file name and comment should conform > to the original ZIP character encoding. If general purpose bit 11 is set, the > filename and comment must support The Unicode Standard, Version 4.1.0 or > greater using the character encoding form defined by the UTF-8 storage > specification. This creates a problem mainly for European languages: they tend to use a lot of the characters which are present in CP437 but not in ASCII, so you may get inconsistent behavior there. Windows 10 still defaults to CP437 where possible: you can try this by creating a file called Über.txt and zipping it using File Explorer. The filename will be encoded using CP437; but the ZipArchive class decodes it as �ber.txt. Because the zip archive re-creates the individual zip entries when the file is saved in Update mode, this results in data loss when opening & closing the archive, even if that entry is not modified. This appears to be a side-effect of removing CP437 support from .NET Core, although it is still available in the `System.Text.Encoding.Codepages` package (see #10054 for more information). A simple fix would be to have the `System.IO.Compression` package take a dependency on `System.Text.Encoding.Codepages`, but not sure if this is desirable. /cc @ianhays +11718 area-System.Drawing Seg fault in System.Drawing.Primitives.Tests on CentOS in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/dev_api/job/centos7.1_release_prtest/85/ Happened while testing #11688, but this is just adding a new Socket API, so it probably didn't cause this failure. +11719 area-System.Reflection Cleanup MethodInfo tests /cc @stephentoub +11721 area-System.IO Remove CreateManyConcurrent test Adds a conditionalFact to the CreateManyConcurrentInstances test so we don't run the test when max_user_instances is greater than 200. That's just too many instances to create and has the potential to cause OOM exceptions. I also cleaned up the project and solution files to play nicely with VS. The test is causing intermittent failures in other tests and is also intermittently failing itself. Without modifying system resources we can't make this test trustworthy, so it's better to remove it for the sake of stability. resolves https://github.com/dotnet/corefx/issues/11622 resolves https://github.com/dotnet/corefx/issues/5660 +11723 area-System.IO CopyTo should be overriden in MemoryStream I just made a change in CoreCLR (dotnet/coreclr#7131) that overrides `MemoryStream.CopyTo` since that method of Stream is now virtual. However it looks like since the copy of `MemoryStream` in here (which is used in corert) is separated from its parent which lives in [corert itself](https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/IO/Stream.cs), the compiler will not be able to override the method here since it is not yet virtual in the contracts. When it is, the changes from that PR should be ported here. @stephentoub @jkotas +11724 area-System.Globalization Compat work for Char struct (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11725 area-System.Net Add back missing System.Net.Ping APIs Adds back all of the missing Send and SendAsync overloads, plus the support for the SendAsync overloads like PingCompletedEventArgs and SendAsyncCancel. cc: @davidsh, @cipop, @ericeil, @mellino, @karelz +11726 area-System.Xml Re add netcore50 test runs for some System.Xml test projects once System.Private.Xml builds for netcore50 PR #11717 removed netcore50 test runs for a few projects in System.Private.Xml in order to unblock the PipeBuild given that those projects depended on System.Private.Xml which didn't run in all supported netcore50 platforms. Once it does, then we should add those configurations back. cc: @sepidehMS +11728 area-System.Collections Port remaining parts of System.Collections These are the remaining parts that we defined are in .NET Standard 2.0 and are not yet in Core ``` M:System.Collections.ObjectModel.ObservableCollection`1.#ctor(System.Collections.Generic.List{`0}) M:System.Collections.Specialized.NameObjectCollectionBase.#ctor(System.Collections.IHashCodeProvider,System.Collections.IComparer) M:System.Collections.Specialized.NameObjectCollectionBase.#ctor(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer) M:System.Collections.Specialized.NameValueCollection.#ctor(System.Collections.IHashCodeProvider,System.Collections.IComparer) M:System.Collections.Specialized.NameValueCollection.#ctor(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer) M:System.Collections.Specialized.NameValueCollection.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Collections.Specialized.OrderedDictionary.OnDeserialization(System.Object) ``` +11730 area-System.Globalization Missing a couple API from S.Globalization These are the only remaining pieces of System.Globalization that are missing from Core but are in .NET Standard 2.0 ``` P:System.Globalization.CompareInfo.Version P:System.Globalization.CultureInfo.CultureTypes P:System.Globalization.CultureInfo.IetfLanguageTag P:System.Globalization.CultureInfo.KeyboardLayoutId M:System.Globalization.CultureInfo.GetConsoleFallbackUICulture ``` +11733 area-System.Net Fix leak of WinHttpRequestState objects during HTTP resends `WinHttpRequestState` objects were being leaked when the HTTP request needed to be retried. The `InternalSendRequestAsync` method calls the `Pin` method. But since it is called in a loop, we need to check to see if the `GCHandle` has already been allocated. Fixes #11693 +11734 area-System.Runtime Expose System.Runtime.CompilerServices APis APis that need to be implemented System.Runtime.CompilerServices.IsPinned System.Runtime.CompilerServices.HasCopySemanticsAttribute System.Runtime.CompilerServices.ScopelessEnumAttribute +11735 area-System.Net Use added-back WebSockets APIs from ClientWebSocket e.g. ClientWebSocketOptions should use WebSocket.DefaultKeepAliveInterval +11736 area-System.Globalization Two globalization tests failed on Windows in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/172/consoleText ``` System.Globalization.Tests.NumberFormatInfoGetInstance.GetInstance(formatProvider: InvalidFormatProvider { }, expected: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... }) [FAIL] Assert.Equal() Failure Expected: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... } Actual: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... } Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Globalization\tests\NumberFormatInfo\NumberFormatInfoGetInstance.cs(28,0): at System.Globalization.Tests.NumberFormatInfoGetInstance.GetInstance(IFormatProvider formatProvider, NumberFormatInfo expected) System.Globalization.Tests.NumberFormatInfoGetInstance.GetInstance(formatProvider: null, expected: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... }) [FAIL] Assert.Equal() Failure Expected: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... } Actual: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = ""."", CurrencyGroupSeparator = "","", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... } Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Globalization\tests\NumberFormatInfo\NumberFormatInfoGetInstance.cs(28,0): at System.Globalization.Tests.NumberFormatInfoGetInstance.GetInstance(IFormatProvider ``` " +11738 area-System.Net AllowAutoRedirect is missing on HttpWebRequest Please add the missing `AllowAutoRedirect` feature on [HttpWebRequest](https://github.com/dotnet/corefx/blob/master/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs) so we can support both existing .NET and new .NET Core code bases that uses this feature, thanks. +11739 area-System.Net Expose CancellationToken For StreamContent Looks like `StreamContent` doesn't publicly expose a constructor with `CancellationToken` support. https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/StreamContent.cs#L32 Is there any reason for not having that publicly exposed? +11740 area-System.Linq Address gaps in StackSpiller `System.Linq.Expressions.Compiler.StackSpiller` has known limitations when spilling requires `ref` locals which cannot be modeled by the expression tree API. We could try to lift these limitations in a few ways. I've personally run into this restriction once when building a deserialization framework where the emitted code contained `Try` expression nodes which caused stack spilling but subsequently hit `MemberInit` nodes higher up which were used to instantiate a value type, thus causing spilling to fail. +11742 area-System.Globalization Parse (and TryParse) method doesn't work with some locales. "Parse (and TryParse) method doesn't work with `prs` and `prs-AF` locale if 'NumberStyles.Any' passed to the method (and number must be 1000 or more). `var c = new CultureInfo(""prs"");` `var t = double.Parse((1000.55).ToString(""n2"", c), NumberStyles.Any, c);` It will throw `System.FormatException` (Input string was not in a correct format.) The same issue with full framework. Tested only on windows. I tried to use different number styles and it fails when I add `AllowCurrencySymbol` " +11743 area-System.Net HttpClientHandler.ClientCertificates..get should fail when ClientCertificateOption.Automatic is set "``` csharp HttpClientHandler handler = new HttpClientHandler() { ClientCertificateOptions = ClientCertificateOption.Automatic }; Console.WriteLine(""handler.ClientCertificates has {0} certs"", handler.ClientCertificates.Count); // Exception thrown here handler.ClientCertificates.Add(clientCert); Console.WriteLine(""handler.ClientCertificates has {0} certs"", handler.ClientCertificates.Count); ``` In .NET Desktop, accessing the WebRequestHandler.ClientCertificates collection will fail with an InvalidOperationException if `ClientCertificateOption.Automatic` is explicitly set. However, in .NET Core, the above will silently continue and ignore any certificates added to the ClientCertificates collection. Consider placing the exception back so that behaviour is consistent between WebRequestHandler and HttpClientHandler, and prevent silent failure in this case " +11746 area-System.Net Port to 1.1: Fix leak of WinHttpRequestState objects during HTTP resends Port PR #11733 WinHttpRequestState objects were being leaked when the HTTP request needed to be retried. The InternalSendRequestAsync method calls the Pin method. But since it is called in a loop, we need to check to see if the GCHandle has already been allocated. Fixes #11693 +11747 area-System.Globalization Both System.Runtime and System.Globalization.Extensions expose NormalizationForm This results in an error when trying to use NormalizationForm and including both libraries in the project.json. cc: @tarekgh, @joperezr +11748 area-System.Net Add already-implemented Socket APM methods back to the public surface. Added these to the reference assembly, and made them public in the implementation. We already had some tests for these, via shims; I've just removed the shims. @stephentoub @CIPop @danmosemsft +11749 area-System.Reflection Add tests for CustomAttributeBuilder bug fixes (dotnet/coreclr#7206) dotnet/coreclr#7206 +11757 area-System.Net httpclient default proxy Hello Guys, Is there a way for httpclient to pick up the default system proxy like http_proxy on linux ? For now we are providing a the proxy manually to the httpclient, using the HttpClientHandler class. Thank you ! +11762 area-System.ComponentModel Change S.ComponentModel.TypeConverter projects to use project.json references rather than ProjectReferences The System.ComponentModel.TypeConverter src and test projects have ProjectReferences to System.Drawing.Primitives. Change these to project.json references once the new System.Drawing.Primitives surface area is exposed in published packages. +11764 area-System.Reflection Source Breaking change in System.Runtime 4.1 with MemberInfo.GetCustomAttributes When upgrading package versions of System.Runtime from 4.0 to 4.1 the following code will have errors on both lines when it compiled successfully before. ``` C# Attribute[] attrs1 = typeof(int).GetCustomAttributes(true).ToArray(); Attribute[] attrs2 = typeof(int).GetCustomAttributes(typeof(SerializableAttribute), true).ToArray(); ``` This is caused by two new instance methods on MemberInfo that hide the extension methods in CustomAttributeExtensions. The new methods return `object[]` when the extension methods return `IEnumerable` To maintain compatibility with desktop we cannot change the return type of the new members to match. We need to document the breaking change. +11765 area-System.Net Add already-implemented Socket APM methods back to the public surface Same changes as #11748, but in master instead of dev/api. This also includes the commits from #11688, which was merged into dev/api, but not master. @stephentoub @CIPop @davidsh +11766 area-System.Reflection Add tests for several System.Reflection types - System.Reflection.Module - System.Reflection.Pointer - System.Reflection.RuntimeReflectionExtensions - System.Reflection.TypeDelegator - System.Reflection.TypeInfo +11767 area-System.Net Add System.Net.Mime assembly to corefx Ports the .NET Framework implementation to corefx, and adds some tests for ContentType and ContentDisposition. There is a large portion of the implementation that's internal and not actually reachable from the exposed surface area (and not tested), but exists to support SmtpClient. II was reachable from the graph starting from ContentType and ContentDisposition, so I've left that code in so as to enable subsequent porting of System.Net.Mail; at that point, we may want to combine all of this into a System.Net.Mail contract, but for now I've left it in a System.Net.Mime one. cc: @davidsh, @cipop, @Priya91, @ericeil, @karelz +11768 area-System.Xml Reapply changes made to Xml libraries since the move to System.Private.Xml since they got lost in merge from dev/api When we moved the implementation of Xml from the old contracts into System.Private.Xml, we lost the history since to git's point of view, they are two different files now. The problem is that this move happened in a different branch (dev/xml) so when we merged that back to dev/api and then to master, we lost all of the changes that were made in master after the move. This work item is to track the work that must be done to re-apply these changes back to the files now under System.Private.Xml. cc: @weshaggard @danmosemsft @krwq @shmao +11770 area-System.Linq BindingRewriter implementations of StackSpiller have incorrect check for value types Found while investigating #11740. The `BindingRewriter` implementations for `MemberBind` and `ListBind` bindings have an incorrect check for bindings targeting a value-typed property: - When no stack spilling takes places, the code below throws `CannotAutoInitializeValueTypeElementThroughProperty` from the `LambdaCompiler` for the _current_ node (`MemberBind` targeting `C.V`). - When stack spilling takes place, the code below throws `TryNotSupportedForValueTypeInstances` from the `StackSpiller` for a _child_ node (`Bind` targeting `V.X`). ``` csharp #define REPRO using System; using System.Linq.Expressions; using System.Reflection; using static System.Linq.Expressions.Expression; class MI { static void Main() { var i = (Expression)Constant(1); #if REPRO i = TryFinally(i, Empty()); #endif var e = Lambda>(MemberInit(New(typeof(C)), MemberBind(typeof(C).GetProperty(nameof(C.V)), Bind(typeof(V).GetField(nameof(V.X)), i)))); var c = e.Compile()(); Console.WriteLine(c.V.X); } class C { public V V { get; } } struct V { public int X; } } ``` While the behavior of throwing the other exception is fine here, there's explicit code to throw the same `CannotAutoInitializeValueTypeElementThroughProperty` exception under this circumstance, but it gets the check wrong. Rather than checking the _member_'s type, it checks the _target_'s type. Once we address #11740, a correct implementation of this check will be the only thing preventing emitting of semantically unsound stack spilling code because the `RequireNotRefInstance` check would go away. ``` csharp internal override Expression AsExpression(Expression target) { if (target.Type.GetTypeInfo().IsValueType && _binding.Member is PropertyInfo) { throw Error.CannotAutoInitializeValueTypeElementThroughProperty(_binding.Member); } ``` should not use `target.Type` but the `_binding.Member`'s type for the condition of the check. +11771 area-System.Numerics OutOfMemoryException in System.Numerics.Tests.logTest.RunLargeValueLogTests on Ubuntu Running OuterLoop Ubuntu14.04 Debug in CI for #11765: ``` 15:22:12 System.Numerics.Tests.logTest.RunLargeValueLogTests [FAIL] 15:22:12 System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. 15:22:12 Stack Trace: 15:22:12 at System.Numerics.BigInteger.op_LeftShift(BigInteger value, Int32 shift) 15:22:12 at System.Numerics.Tests.logTest.LargeValueLogTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) 15:22:12 at System.Numerics.Tests.logTest.RunLargeValueLogTests() ``` +11772 area-Meta DotNetCore.1.0.1-SDK installation onto Windows 2008 "DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x64 specifically Using Windows Server ""6.0.6002"". Struggled to get an install as it couldn't acquire/install vs_redist.x64.exe, so I manually pulled it down from http://go.microsoft.com/fwlink/?LinkID=615460&clcid=0x409 as per logs and the install the completed without complaint. However, when attempting to start `dotnet --version` from command line, I get a dialog box claiming ""The procedure entry point ResolveLocaleName could not be located in the dynamic link library KERNEL32.dll"" I was banking on running .NET Core on this specific server, now I am very worried I won't be able to. Can anyone help? " +11773 area-System.Linq Fixing value type property check in BindingRewriter This fixes issue #11770. More tests coming as part of code coverage for `StackSpiller` and a possible improvement for issue #11740. +11774 area-System.ComponentModel Remove Component stubs from System.Timers.Timer in System.ComponentModel.typeconverter contract. cc @AlexGhiondea +11777 area-System.Linq Simplifying EmitInstance call sites Noticed this odd pattern with a redundant null check in the callee and redundant member accesses in the caller of `EmitInstance` while investigating #11740 (where I'm looking into compiler-internal-only use of ref locals which need additional logic on determining the type of the instance based on whether it already is a `ref` or still needs a `ldloca`, `ldarga`, etc. family instruction to obtain the `ref`). +11780 area-System.Linq StackSpiller does not have to go through Expression factory methods Noticed inconsistencies while analyzing requirements to address #11740. In particular, various `Rewrite` methods simply instantiate expression nodes (e.g. `Unary`, `Loop`, `Switch`, `Try`, `Index`, `AssignBinary`) while others go through factories. We don't need the indirection through factories here because: - typing invariants are enforced at the level of the `Rewrite` methods; they never change types of nodes, so we don't need the factories to type check what we produce internally - compact variants of nodes are not needed; we already create `IList` instances in `ChildRewriter` and unpacking them into efficient layouts for a short-lived node instance is redundant work - nodes produced by the spiller only live until `LambdaCompiler` has processed them - nodes produced by the spiller never have an extended lifetime; e.g. `Quote` operands are not spilled - unpacking collections to create efficient layouts allocates _more_ memory than simply wrapping the list in the `XYZExpressionN` variant of a node +11781 area-System.Linq Reducing indirection through factories during stack spilling rewrites We were about 50/50 in terms of places where we directly call `Make` or use a constructor versus places where we use factory methods for no good reason. Rationale discussed in #11780 but in essence: - we don't need the type/member checks of the factory; at most we rewrite child nodes to variables but retain the original typing, so no need to re-check - we don't need the factory's behavior of creating compact short-lived nodes; we have an `IList` retrieved from `ChildRewriter` anyway - we don't need `ToReadOnly` copy behavior exhibited by a lot of factory methods Also adding some `readonly` modifiers, avoiding interface calls where a concrete type is available, and using `TrueReadOnlyCollection` to wrap arrays that aren't being mutated. +11782 area-System.Linq Adding ILReader for tests that assert emit behavior in LambdaCompiler We have a pretty big blind spot in testing behavior of `LambdaCompiler` especially when it comes to certain optimizations it emits. The `ILGenerator` for the `DynamicMethod` we emit into is pretty much a black box, making it hard to assert behavior. Some options are described in #11460. While I have an `IILGenerator` interface in another local branch, it either requires conditional compilation for tests (to go through the interface abstraction) or the interface indirection should always be enabled. The latter is likely still useful but we need to weigh pros and cons of abstracting the back-end. One place where it could shine is to perform IL-level optimization (a la `stloc`/`ldloc` pair elimination).. I'll push this as a WIP at a later point. In the short term though, as I'm noodling with: - stack spilling (see #11740) - closure creation improvements (see [CheaperClosures](https://github.com/bartdesmet/corefx/tree/CheaperClosures), more to follow) - test cases for `LambdaCompiler` and `ILGen` behavior (see #11409) there's an immediate need to be able to assert generated IL code. Luckily, there's a pretty good IL decompiler for `DynamicMethod` available [here](https://blogs.msdn.microsoft.com/haibo_luo/2010/04/19/ilvisualizer-2010-solution), so I decided to port this to .NET Core. Note I had to work around missing members on `Module` (see #5381), but other than that I've just made the code much more concise using C# 6.0 constructs and excluded some functionality we don't (yet) need. One use case is included to exercise the code and show how to perform IL asserts. +11785 area-System.IO Expose InternalBufferOverflowException in FSW Updates the default targetgroup of filesystemwatcher to netstandard1.7 and exposes InternalBufferOverflowException out of System.IO.FileSystemWatcher. @danmosemsft @joperezr @stephentoub +11787 area-System.Net Port System.Net.Security +11788 area-System.Net Port remaining types/members in System.Net.Sockets # Missing types - [x] System.Net.Sockets.ProtocolFamily - [x] System.Net.Sockets.SocketInformation - [x] System.Net.Sockets.SocketInformationOptions - [x] System.Net.Sockets.TransmitFileOptions # Missing members - [x] System.Net.Sockets.NetworkStream.#ctor - [x] System.Net.Sockets.NetworkStream.#ctor - [x] System.Net.Sockets.NetworkStream.BeginRead - [x] System.Net.Sockets.NetworkStream.BeginWrite - [x] System.Net.Sockets.NetworkStream.Close - [x] System.Net.Sockets.NetworkStream.EndRead - [x] System.Net.Sockets.NetworkStream.EndWrite - [x] System.Net.Sockets.NetworkStream.get_Readable - [x] System.Net.Sockets.NetworkStream.get_Socket - [x] System.Net.Sockets.NetworkStream.get_Writeable - [x] System.Net.Sockets.NetworkStream.set_Readable - [x] System.Net.Sockets.NetworkStream.set_Writeable - [x] System.Net.Sockets.Socket.#ctor - [x] System.Net.Sockets.Socket.BeginAccept - [x] System.Net.Sockets.Socket.BeginAccept - [x] System.Net.Sockets.Socket.BeginAccept - [x] System.Net.Sockets.Socket.BeginConnect - [x] System.Net.Sockets.Socket.BeginConnect - [x] System.Net.Sockets.Socket.BeginConnect - [x] System.Net.Sockets.Socket.BeginConnect - [x] System.Net.Sockets.Socket.BeginDisconnect - [x] System.Net.Sockets.Socket.BeginReceive - [x] System.Net.Sockets.Socket.BeginReceive - [x] System.Net.Sockets.Socket.BeginReceive - [x] System.Net.Sockets.Socket.BeginReceive - [x] System.Net.Sockets.Socket.BeginReceiveFrom - [x] System.Net.Sockets.Socket.BeginReceiveMessageFrom - [x] System.Net.Sockets.Socket.BeginSend - [x] System.Net.Sockets.Socket.BeginSend - [x] System.Net.Sockets.Socket.BeginSend - [x] System.Net.Sockets.Socket.BeginSend - [ ] System.Net.Sockets.Socket.BeginSendFile - [ ] System.Net.Sockets.Socket.BeginSendFile - [x] System.Net.Sockets.Socket.BeginSendTo - [x] System.Net.Sockets.Socket.Close - [x] System.Net.Sockets.Socket.Close - [x] System.Net.Sockets.Socket.Disconnect - [x] System.Net.Sockets.Socket.DisconnectAsync - [x] System.Net.Sockets.Socket.DuplicateAndClose - [x] System.Net.Sockets.Socket.EndAccept - [x] System.Net.Sockets.Socket.EndAccept - [x] System.Net.Sockets.Socket.EndAccept - [x] System.Net.Sockets.Socket.EndConnect - [x] System.Net.Sockets.Socket.EndDisconnect - [x] System.Net.Sockets.Socket.EndReceive - [x] System.Net.Sockets.Socket.EndReceive - [x] System.Net.Sockets.Socket.EndReceiveFrom - [x] System.Net.Sockets.Socket.EndReceiveMessageFrom - [x] System.Net.Sockets.Socket.EndSend - [x] System.Net.Sockets.Socket.EndSend - [x] System.Net.Sockets.Socket.EndSendFile - [x] System.Net.Sockets.Socket.EndSendTo - [x] System.Net.Sockets.Socket.get_Handle - [x] System.Net.Sockets.Socket.get_SupportsIPv4 - [x] System.Net.Sockets.Socket.get_SupportsIPv6 - [x] System.Net.Sockets.Socket.get_UseOnlyOverlappedIO - [ ] System.Net.Sockets.Socket.SendFile - [ ] System.Net.Sockets.Socket.SendFile - [x] System.Net.Sockets.Socket.set_UseOnlyOverlappedIO - [x] System.Net.Sockets.SocketAsyncEventArgs.get_DisconnectReuseSocket - [x] System.Net.Sockets.SocketAsyncEventArgs.set_DisconnectReuseSocket - [ ] System.Net.Sockets.SocketException.#ctor - [ ] System.Net.Sockets.SocketException.get_ErrorCode - [x] System.Net.Sockets.TcpClient.#ctor - [x] System.Net.Sockets.TcpClient.#ctor - [x] System.Net.Sockets.TcpClient.BeginConnect - [x] System.Net.Sockets.TcpClient.BeginConnect - [x] System.Net.Sockets.TcpClient.BeginConnect - [x] System.Net.Sockets.TcpClient.Close - [x] System.Net.Sockets.TcpClient.Connect - [x] System.Net.Sockets.TcpClient.Connect - [x] System.Net.Sockets.TcpClient.Connect - [x] System.Net.Sockets.TcpClient.Connect - [x] System.Net.Sockets.TcpClient.EndConnect - [x] System.Net.Sockets.TcpClient.get_Client - [x] System.Net.Sockets.TcpClient.set_Client - [x] System.Net.Sockets.TcpListener.#ctor - [x] System.Net.Sockets.TcpListener.AcceptSocket - [x] System.Net.Sockets.TcpListener.AcceptTcpClient - [x] System.Net.Sockets.TcpListener.BeginAcceptSocket - [x] System.Net.Sockets.TcpListener.BeginAcceptTcpClient - [ ] System.Net.Sockets.TcpListener.Create - [x] System.Net.Sockets.TcpListener.EndAcceptSocket - [x] System.Net.Sockets.TcpListener.EndAcceptTcpClient - [x] System.Net.Sockets.UdpClient.#ctor - [ ] System.Net.Sockets.UdpClient.AllowNatTraversal - [x] System.Net.Sockets.UdpClient.BeginReceive - [x] System.Net.Sockets.UdpClient.BeginSend - [x] System.Net.Sockets.UdpClient.BeginSend - [x] System.Net.Sockets.UdpClient.BeginSend - [x] System.Net.Sockets.UdpClient.Close - [x] System.Net.Sockets.UdpClient.Connect - [x] System.Net.Sockets.UdpClient.Connect - [x] System.Net.Sockets.UdpClient.Connect - [x] System.Net.Sockets.UdpClient.EndReceive - [x] System.Net.Sockets.UdpClient.EndSend - [x] System.Net.Sockets.UdpClient.get_Client - [x] System.Net.Sockets.UdpClient.Receive - [x] System.Net.Sockets.UdpClient.Send - [x] System.Net.Sockets.UdpClient.Send - [x] System.Net.Sockets.UdpClient.Send - [x] System.Net.Sockets.UdpClient.SendAsync - [x] System.Net.Sockets.UdpClient.set_Client +11789 area-System.Net Add Compatibility Surface Area to System.Net.NetworkingInformation "``` CSharp public abstract partial class IPGlobalProperties { public virtual System.IAsyncResult BeginGetUnicastAddresses(System.AsyncCallback callback, object state) { throw null; } public virtual System.Net.NetworkInformation.UnicastIPAddressInformationCollection EndGetUnicastAddresses(System.IAsyncResult asyncResult) { throw null; } public virtual System.Net.NetworkInformation.UnicastIPAddressInformationCollection GetUnicastAddresses() { throw null; } } public abstract partial class IPv4InterfaceStatistics { protected IPv4InterfaceStatistics() { } public abstract long BytesReceived { get; } public abstract long BytesSent { get; } public abstract long IncomingPacketsDiscarded { get; } public abstract long IncomingPacketsWithErrors { get; } public abstract long IncomingUnknownProtocolPackets { get; } public abstract long NonUnicastPacketsReceived { get; } public abstract long NonUnicastPacketsSent { get; } public abstract long OutgoingPacketsDiscarded { get; } public abstract long OutgoingPacketsWithErrors { get; } public abstract long OutputQueueLength { get; } public abstract long UnicastPacketsReceived { get; } public abstract long UnicastPacketsSent { get; } } public delegate void NetworkAvailabilityChangedEventHandler(object sender, System.Net.NetworkInformation.NetworkAvailabilityEventArgs e); public partial class NetworkAvailabilityEventArgs : System.EventArgs { internal NetworkAvailabilityEventArgs() { } public bool IsAvailable { get { throw null; } } } public partial class NetworkChange { [System.ComponentModel.EditorBrowsableAttribute((System.ComponentModel.EditorBrowsableState)(1))] [System.ObsoleteAttribute(""This API supports the .NET Framework infrastructure and is not intended to be used directly from your code."", true)] public NetworkChange() { } public static event System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged { add { } remove { } } [System.ComponentModel.EditorBrowsableAttribute((System.ComponentModel.EditorBrowsableState)(1))] [System.ObsoleteAttribute(""This API supports the .NET Framework infrastructure and is not intended to be used directly from your code."", true)] public static void RegisterNetworkChange(System.Net.NetworkInformation.NetworkChange nc) { } } [System.Flags] public enum NetworkInformationAccess { None = 0, Ping = 4, Read = 1, } public partial class NetworkInformationException : System.ComponentModel.Win32Exception { protected NetworkInformationException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) { } public override int ErrorCode { get { throw null; } } } public abstract partial class NetworkInterface { public virtual System.Net.NetworkInformation.IPv4InterfaceStatistics GetIPv4Statistics() { throw null; } } ``` " +11790 area-System.Net Port System.Net.Mime +11791 area-System.Net Port System.Net.Cache +11792 area-System.Net Port System.Net.Mail +11793 area-System.Net Port System.Net.HttpListener Includes also `System.Net.WebSockets.HttpListnerWebSocketContext` +11794 area-System.Net Port System.Net.WebClient Suggestion from Networking team: build it on top of System.Net.Http (x-plat will be free then). +11795 area-System.Net "CookieCollection.GetCookies() does not retrieve cookies prefixed with a "".""" "## Scope Modernize the CookieContainer to fix a 7 year old bug concerning the ability to return ALL cookies for a given domain. ## Rationale A [well documented](http://stackoverflow.com/questions/1047669/cookiecontainer-bug/39536750#39536750) (and entirely too long-standing) bug in the CookieContainer is that `CookieContainer.GetCookies()` only accepts a Uri, not a string. This means you cannot properly retrieve cookies that are prefixed with a dot. This is because URIs prefixed with a dot are invalid. Previously-provided solutions involve using Reflection, but these are not ideal for various reasons... not to mention that the .NET Core version has slightly different internals, so the old solutions no longer apply. I've provided [a complete solution that functions on .NET Core here](http://stackoverflow.com/a/39536750/403765) as an extension method, but it again requires reflection, and has not been vetted for proper security. A proper solution would be to provide a version of `GetCookies()` that accepts a string domain, and is more intelligent about matching that domain, to return all of the Cookies that the user would expect in a given situation. ## Usage Here's a pseudocode example of how this would work. ``` cs public Class SomeClass { private static HttpClient HttpClient; private static CookieContainer Cookies; static SomeClass() { Cookies = new CookieContainer(); HttpClient = new HttpClient( new HttpClientHandler { CookieContainer = Cookies, AutomaticDecompression = DecompressionMethods.GZip, AllowAutoRedirect = false } ); } /// /// /// /// public async Task GetAccessToken() { AuthTicket authTicket; var cookies = Cookies.GetCookies(""sso.somewebsite.com""); // The ""CASTGC"" in this case is actually in the "".sso.somewebsite.com"" domain and would not // be returned in the current codebase. if (!cookies.Any(c => c.Name == ""CASTGC"") || cookies.Count == 0) { authTicket = await Login(); } accessToken = await HttpClient.GetStringAsync(""http://somewebsite.com""); return accessToken; } ``` ## Implementation Based on my Extension Method implementation previously mentioned, the implementation would likely look something like this: ``` cs /// /// Returns all of the Cookies where /// contains part of the specified string. Will return cookies for any subdomain, as well as dotted-prefix cookies. /// /// The string that contains part of the domain you want to extract cookies for. /// public static IEnumerable GetCookies(string domain) { foreach (var entry in _domainTable) { if (entry.Key.Contains(domain)) { foreach (var li in entry.Value._list) { foreach (Cookie cookie in li.Value) { yield return cookie; } } } } } ``` ## Obstacles There may be security implications with this design that I am not aware of, so the final implementation would likely need to pass a security review from @blowdart's team. Might also want to get @benaadams to review the entire CookieCollection code to make sure it is optimized for performance. " +11796 area-System.Net Port System.Net.WebSockets @stephentoub you said it's done, please link the PR for tracking purposes & close, thanks! +11797 area-System.Reflection DefaultValueAttribute return null value for Guid type. "I added the DefaultValueAttribute into the a Guid property and get the attribute in constructor of the object but the value in the attribute is null. I have also tried another type of attribute like ""int"", ""long"", ""flost"" or etc. It works great. Anyone have idea what's wrong of the Guid type? The following is the coding for reference. > ``` > [DefaultValue(typeof(Guid), ""8DAEDD83-289E-417C-AAAC-D48D77E0D84C"")] > public Guid DefaultGuidField { get; set; } > > [DefaultValue(typeof(int), ""9"")] > public int DefaultIntField { get; set; } > > [DefaultValue(typeof(long), ""4611686018427387903"")] > public long DefaultLongField { get; set; } > ``` The retrieve value in constructor like this > ``` > var defaultValue = propertyInfo.GetCustomAttribute(true); > > if (defaultValue != null) > { > Type defaultValueType = defaultValue.Value.GetType(); > ``` " +11799 area-System.Net Add stubs for Socket.DuplicateAndClose, Socket.UseOnlyOverlappedIO, and supporting types/constructor We can't provide functional implementations of these without re-implementing non-IOCP-based I/O, as in the desktop CLR. But we can stub these out for some measure of compatibility. These APIs apparently get [very low usage](https://apisof.net/catalog/System.Net.Sockets.Socket.DuplicateAndClose%28Int32%29), so it is hard to justify the work to get a functional implementation on Windows - and I don't think we can ever make this work on Unix. Part of #11788. @stephentoub @CIPop @davidsh +11800 area-System.Net Add back Socket.Handle Part of #11788. @stephentoub @CIPop @davidsh +11802 area-System.Security Add DSACertificateExtensions class Did not add as part of the DSA work #4813, so creating a new issue to track that +11803 area-System.Globalization System.Globalization.Tests failures on Unix in Innerloop CI. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/debian8.4_debug/lastCompletedBuild/testReport/ StringNormalizationTests are failing with System.NotImplementedException : The method or operation is not implemented. +11805 area-System.Data Remove fake win10-arm64 System.Data.SqlClient.sni support from release/1.1.0 https://github.com/dotnet/corefx/pull/11804 adds a runtime reference to `runtime.native.System.Data.SqlClient.sni` on `runtime.win10-arm64.runtime.native.System.Data.SqlClient.sni` `4.3.0-beta-24514-00`. Just before shipping 1.1.0 we should remove it. We want to keep testing it while release/1.1.0 gets changes, but don't want to partially ship win10-arm64 support. Specifically, the lines in [runtime.native.System.Data.SqlClient.sni.pkgproj](https://github.com/dotnet/corefx/blob/8779b2ac824c5e0b18b504e4b15111a98cc77940/src/Native/pkg/runtime.native.System.Data.SqlClient.sni/runtime.native.System.Data.SqlClient.sni.pkgproj#L15-L17) bringing in that package and [the then-unused dependencies.props entry](https://github.com/dotnet/corefx/blob/c35abaa4240fbfab3a6324d5340efcf8bf685d1b/dependencies.props#L19-L20) should be removed. /cc @ianhays @gkhanna79 @wtgodbe @weshaggard @ericstj +11806 area-System.Xml Fix dev/api>master merge of XML implementation, excl. XML serialization Broken out from https://github.com/dotnet/corefx/issues/11768 --- Libraries where we need to re-add changes: - [X] System.Xml.ReaderWriter -> PR #11911 - [X] System.Xml.XDocument -> I've verified that all of the changes for this assembly were not lost. - [X] System.Xml.XmlDocument -> No changes were made in master for this library. - [X] System.Xml.XmlSerializer (PR #11924 + PR #11944 ) - [X] System.Xml.XPath -> I've verified that all of the changes for this assembly were not lost. - [X] System.Xml.XPath.XDocument -> No changes were made in master for this library. - [X] System.Xml.XPath.XmlDocument -> No changes were made in master for this library. +11807 area-System.IO Use public Socket.Handle property from SafePipeHandle #11800 added Socket.Handle back to the public API surface. However, we currently have one place in the code where we'd like to use Handle and are getting it via reflection: https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.IO.Pipes/src/Microsoft/Win32/SafeHandles/SafePipeHandle.Unix.cs#L34 We should fix that as well. +11808 area-Meta Port some missing miscellaneous types/members ~~\- [ ] T:System.Configuration.Assemblies.AssemblyHash~~ edit: Removed AssemblyHash from netstandard. ~~T:System.Configuration.Assemblies.AssemblyHashAlgorithm~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.MD5 .~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.None~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA1~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA256~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA384~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA512~~ ~~F:System.Configuration.Assemblies.AssemblyHashAlgorithm.value__~~ ~~T:System.Configuration.Assemblies.AssemblyVersionCompatibility~~ ~~F:System.Configuration.Assemblies.AssemblyVersionCompatibility.SameDomain~~ ~~F:System.Configuration.Assemblies.AssemblyVersionCompatibility.SameMachine~~ ~~F:System.Configuration.Assemblies.AssemblyVersionCompatibility.SameProcess~~ ~~F:System.Configuration.Assemblies.AssemblyVersionCompatibility.value__~~ - [x] M:System.Diagnostics.DebuggableAttribute.#ctor(System.Boolean,System.Boolean) - [x] M:System.Diagnostics.DebuggableAttribute.get_DebuggingFlags - [x] M:System.Diagnostics.DebuggableAttribute.get_IsJITOptimizerDisabled - [x] M:System.Diagnostics.DebuggableAttribute.get_IsJITTrackingEnabled - [x] F:System.Runtime.InteropServices.CharSet.Auto - [x] F:System.Runtime.InteropServices.CharSet.None ~~T:System.Runtime.InteropServices.ExternalException~~ ~~M:System.Runtime.InteropServices.ExternalException.#ctor~~ ~~M:System.Runtime.InteropServices.ExternalException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~M:System.Runtime.InteropServices.ExternalException.#ctor(System.String)~~ ~~M:System.Runtime.InteropServices.ExternalException.#ctor(System.String,System.Exception)~~ ~~M:System.Runtime.InteropServices.ExternalException.#ctor(System.String,System.Int32)~~ ~~M:System.Runtime.InteropServices.ExternalException.get_ErrorCode~~ ~~M:System.Runtime.InteropServices.SafeHandle.Close~~ - [x] M:System.Runtime.InteropServices.StructLayoutAttribute.#ctor(System.Int16) ~~M:System.Reflection.AssemblyName.OnDeserialization(System.Object)~~ ~~M:System.Reflection.CustomAttributeFormatException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ - [x] M:System.Reflection.StrongNameKeyPair.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) - [x] M:System.Reflection.StrongNameKeyPair.PublicKey ~~System.Runtime.Serialization.IDeserializationCallback.OnDeserialization(System.Object)~~ ~~M:System.Reflection.TargetException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~T:System.Runtime.Serialization.IObjectReference~~ - [ ] T:System.Runtime.Serialization.ISafeSerializationData ~~T:System.Runtime.Serialization.OptionalFieldAttribute~~ - [ ] T:System.Runtime.Serialization.SafeSerializationEventArgs ~~M:System.Security.VerificationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~M:System.TypeAccessException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~M:System.TypeLoadException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~M:System.WeakReference.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ - [x] T:System.Runtime.InteropServices.RuntimeEnvironment - [x] M:System.Runtime.InteropServices.RuntimeEnvironment.#ctor - [x] M:System.Runtime.InteropServices.RuntimeEnvironment.FromGlobalAccessCache(System.Reflection.Assembly) - [x] M:System.Runtime.InteropServices.RuntimeEnvironment.get_SystemConfigurationFile - [x] M:System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory - [x] M:System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion - [x] P:System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile Removed form netstandard2.0 : https://github.com/dotnet/standard/commit/455687a1c8f86a54fbd7da4f056333290411021c ~~\- [ ] T:System.RuntimeArgumentHandle~~ The following types were removed from netstandard2.0 https://github.com/dotnet/standard/commit/e3e48e4e1e396381807eb255cf1f2150e73ce430. ~~T:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata~~ ~~E:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.DesignerNamespaceResolve~~ ~~E:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.ReflectionOnlyNamespaceResolve~~ Add tests for - [ ] MemoryFailPoint +11809 area-System.Runtime Port some missing remoting types/members - [x] T:System.ContextBoundObject - [x] M:System.ContextBoundObject.#ctor - [ ] T:System.ContextMarshalException - [ ] M:System.ContextMarshalException.#ctor - [ ] M:System.ContextMarshalException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) - [ ] M:System.ContextMarshalException.#ctor(System.String) - [ ] M:System.ContextMarshalException.#ctor(System.String,System.Exception) - [ ] T:System.ContextStaticAttribute - [ ] M:System.ContextStaticAttribute.#ctor - [x] T:System.MarshalByRefObject - [x] M:System.MarshalByRefObject.#ctor ~~\- [x] M:System.MarshalByRefObject.CreateObjRef(System.Type)~~ - [x] M:System.MarshalByRefObject.GetLifetimeService - [x] M:System.MarshalByRefObject.InitializeLifetimeService - [x] M:System.MarshalByRefObject.MemberwiseClone(System.Boolean) - [ ] T:System.Reflection.AssemblyNameProxy - [ ] M:System.Reflection.AssemblyNameProxy.#ctor - [ ] M:System.Reflection.AssemblyNameProxy.GetAssemblyName(System.String) ~~\- [x] T:System.Runtime.Remoting.IChannelInfo~~ ~~\- [x] P:System.Runtime.Remoting.IChannelInfo.ChannelData~~ ~~\- [x] M:System.Runtime.Remoting.IChannelInfo.get_ChannelData~~ ~~\- [x] M:System.Runtime.Remoting.IChannelInfo.set_ChannelData(System.Object[])~~ ~~\- [x] T:System.Runtime.Remoting.IEnvoyInfo~~ ~~\- [x] P:System.Runtime.Remoting.IEnvoyInfo.EnvoySinks~~ ~~\- [x] M:System.Runtime.Remoting.IEnvoyInfo.get_EnvoySinks~~ ~~\- [x] M:System.Runtime.Remoting.IEnvoyInfo.set_EnvoySinks(System.Runtime.Remoting.Messaging.IMessageSink)~~ ~~\- [x] T:System.Runtime.Remoting.IRemotingTypeInfo~~ ~~\- [x] M:System.Runtime.Remoting.IRemotingTypeInfo.CanCastTo(System.Type,System.Object)~~ ~~\- [x] M:System.Runtime.Remoting.IRemotingTypeInfo.get_TypeName~~ ~~\- [x] M:System.Runtime.Remoting.IRemotingTypeInfo.set_TypeName(System.String)~~ ~~\- [x] P:System.Runtime.Remoting.IRemotingTypeInfo.TypeName~~ - [x] T:System.Runtime.Remoting.Messaging.Header - [x] M:System.Runtime.Remoting.Messaging.Header.#ctor(System.String,System.Object) - [x] M:System.Runtime.Remoting.Messaging.Header.#ctor(System.String,System.Object,System.Boolean) - [x] M:System.Runtime.Remoting.Messaging.Header.#ctor(System.String,System.Object,System.Boolean,System.String) - [x] F:System.Runtime.Remoting.Messaging.Header.HeaderNamespace - [x] F:System.Runtime.Remoting.Messaging.Header.MustUnderstand - [x] F:System.Runtime.Remoting.Messaging.Header.Name - [x] F:System.Runtime.Remoting.Messaging.Header.Value - [x] T:System.Runtime.Remoting.Messaging.HeaderHandler - [x] M:System.Runtime.Remoting.Messaging.HeaderHandler.#ctor(System.Object,System.IntPtr) - [x] M:System.Runtime.Remoting.Messaging.HeaderHandler.BeginInvoke(System.Runtime.Remoting.Messaging.Header[],System.AsyncCallback,System.Object) - [x] M:System.Runtime.Remoting.Messaging.HeaderHandler.EndInvoke(System.IAsyncResult) - [x] M:System.Runtime.Remoting.Messaging.HeaderHandler.Invoke(System.Runtime.Remoting.Messaging.Header[]) - [x] T:System.Runtime.Remoting.Messaging.IMessage - [x] M:System.Runtime.Remoting.Messaging.IMessage.get_Properties - [x] P:System.Runtime.Remoting.Messaging.IMessage.Properties ~~\- [x] T:System.Runtime.Remoting.Messaging.IMessageCtrl~~ ~~\- [x] M:System.Runtime.Remoting.Messaging.IMessageCtrl.Cancel(System.Int32)~~ ~~\- [x] T:System.Runtime.Remoting.Messaging.IMessageSink~~ ~~\- [x] M:System.Runtime.Remoting.Messaging.IMessageSink.AsyncProcessMessage(System.Runtime.Remotin- [ ]g.Messaging.IMessage,System.Runtime.Remoting.Messaging.IMessageSink)~~ ~~\- [x] M:System.Runtime.Remoting.Messaging.IMessageSink.get_NextSink~~ ~~\- [x] P:System.Runtime.Remoting.Messaging.IMessageSink.NextSink~~ ~~\- [x] M:System.Runtime.Remoting.Messaging.IMessageSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)~~ - [x] T:System.Runtime.Remoting.Messaging.IMethodCallMessage - [x] M:System.Runtime.Remoting.Messaging.IMethodCallMessage.get_InArgCount - [x] M:System.Runtime.Remoting.Messaging.IMethodCallMessage.get_InArgs - [x] M:System.Runtime.Remoting.Messaging.IMethodCallMessage.GetInArg(System.Int32) - [x] M:System.Runtime.Remoting.Messaging.IMethodCallMessage.GetInArgName(System.Int32) - [x] P:System.Runtime.Remoting.Messaging.IMethodCallMessage.InArgCount - [x] P:System.Runtime.Remoting.Messaging.IMethodCallMessage.InArgs - [x] T:System.Runtime.Remoting.Messaging.IMethodMessage - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.ArgCount - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.Args - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_ArgCount - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_Args - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_HasVarArgs - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_LogicalCallContext - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_MethodBase - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_MethodName - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_MethodSignature - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_TypeName - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.get_Uri - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.GetArg(System.Int32) - [x] M:System.Runtime.Remoting.Messaging.IMethodMessage.GetArgName(System.Int32) - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.HasVarArgs - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.LogicalCallContext - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.MethodBase - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.MethodName - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.MethodSignature - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.TypeName - [x] P:System.Runtime.Remoting.Messaging.IMethodMessage.Uri - [x] T:System.Runtime.Remoting.Messaging.IRemotingFormatter - [x] M:System.Runtime.Remoting.Messaging.IRemotingFormatter.Deserialize(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler) - [x] M:System.Runtime.Remoting.Messaging.IRemotingFormatter.Serialize(System.IO.Stream,System.Object,System.Runtime.Remoting.Messaging.Header[]) - [ ] T:System.Runtime.Remoting.Messaging.LogicalCallContext - [ ] M:System.Runtime.Remoting.Messaging.LogicalCallContext.Clone - [ ] M:System.Runtime.Remoting.Messaging.LogicalCallContext.FreeNamedDataSlot(System.String) - [ ] M:System.Runtime.Remoting.Messaging.LogicalCallContext.get_HasInfo - [ ] M:System.Runtime.Remoting.Messaging.LogicalCallContext.GetData(System.String) - [ ] M:System.Runtime.Remoting.Messaging.LogicalCallContext.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) - [ ] P:System.Runtime.Remoting.Messaging.LogicalCallContext.HasInfo - [ ] M:System.Runtime.Remoting.Messaging.LogicalCallContext.SetData(System.String,System.Object) ~~\- [x] T:System.Runtime.Remoting.ObjRef~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.#ctor~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.#ctor(System.MarshalByRefObject,System.Type)~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~\- [x] P:System.Runtime.Remoting.ObjRef.ChannelInfo~~ ~~\- [x] P:System.Runtime.Remoting.ObjRef.EnvoyInfo~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.get_ChannelInfo~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.get_EnvoyInfo~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.get_TypeInfo~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.get_URI~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.GetRealObject(System.Runtime.Serialization.StreamingContext) ~~- [x] M:System.Runtime.Remoting.ObjRef.IsFromThisAppDomain~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.IsFromThisProcess~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.set_ChannelInfo(System.Runtime.Remoting.IChannelInfo)~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.set_EnvoyInfo(System.Runtime.Remoting.IEnvoyInfo)~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.set_TypeInfo(System.Runtime.Remoting.IRemotingTypeInfo)~~ ~~\- [x] M:System.Runtime.Remoting.ObjRef.set_URI(System.String)~~ ~~\- [x] P:System.Runtime.Remoting.ObjRef.TypeInfo ~~- [x] P:System.Runtime.Remoting.ObjRef.URI~~ +11810 area-System.Text Remove Regex Caps and CapNames properties Follow Up on #11779 Now that we have exposed the old caps, and capnames fields we should see if we can remove the Caps and CapNames properties. +11811 area-System.Net Unify implementation of WebUtility and HttpUtility System.Net.WebUtility and System.Web.HttpUtility have very similar functionality. We should either augment the code in WebUtility to accept Encoding and expose new members, or share the implementation code between the 2 libraries. +11812 area-System.Net Restore serialization attributes on System.Net.Sockets.SocketInformation #11799 reintroduced `System.Net.Sockets.SocketInformation`, but with the serialization attributes commented out. We should work out how to reference the newer System.Runtime reference assembly from System.Net.Sockets, so that we can use these attributes. +11815 area-System.Runtime Compat work for StringComparer (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 +11816 area-System.Net Add back Socket.Disconnect, Socket.Begin/EndDisconnect, Socket.DisconnectAsync These can only be supported on Windows, as Unix has no equivalent concept. Ported the product code and tests from the CLR. Part of #11788. @stephentoub @CIPop @davidsh +11820 area-System.Runtime System.Timers.Tests.TimerTests.TestTimerStartAutoReset test failure in CI See http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/283/ +11824 area-System.Runtime Add Array.LastIndex of tests - Primitives - Non-zero lower bound - Multidimensional array - Enums - Classes, structs, interfaces - Object arrays - Null, non-matching And fix-up some misc nits and add workarounds for xunit/xunit#965 /cc @stephentoub +11826 area-System.Net SslStream disproportionately allocates Switching from http ![](https://aoa.blob.core.windows.net/aspnet/websocket-result-ssl-2.png) to https goes via SslStream and causes the allocations to increase dramatically (new in red below) ![](https://aoa.blob.core.windows.net/aspnet/sslstream-3.png) (The missing `int[]` allocation only happens at a higher load which I can't reach using Ssl) Comparison is to WebSocketReceiveResult which already has over allocations https://github.com/dotnet/corefx/issues/4530 /cc @davidfowl @stephentoub @blowdart +11830 area-System.Runtime Add tests for Enum ## Commit 1 - Cleanup test inputs to make adding new tests easier (and the diff easier) - No test additions or deletions ## Commit 2 - Move around test data for ToString_Format - No test additions or deletion ## Commit 3 - Move around and consolidate test data for ToObject - Only test deleted was `(sbyte)42` because we have coverage for `(sbyte)22` which tests the same thing - Only tests added were Char and Bool primitive tests ## Commit 4 - Adds tests for the following - Parse: all valid primtiives - Parse: unsupported parsing - GetName: unsupported enums - IsDefined: unsupported enums - Equals: single, double, IntPtr, UIntPtr - Equals: different types - ToObject: unsupported enums - CompareTo: single, double, IntPtr, UIntPtr - GetUnderlyingType: single, double, IntPtr, UIntPtr - GetNames: char, bool, single, double, IntPtr, UIntPtr - GetValues: char, bool, single, double, IntPtr, UIntPtr - ToString: all formats for all primitives - ToString: unsupported enums - Format: unsupported enums /cc @stephentoub +11831 area-System.Reflection Cleanup misc System.Reflection.TypeExtensions tests The final PR cleaning up the tests for TypeExtensions /cc @stephentoub +11832 area-System.Linq Improving code consistency in interpreter + using C# 6.0 A while back, some instructions for exception handling were added, using the much briefer C# 6.0 syntax for read-only properties and expression-bodied members. I did run one of my Roslyn code fixes on the Interpreter code to turn typical properties like `InstructionName`, `ConsumedStack`, `ProducedStack`, etc. into expression-bodied ones. After this pass, I cleaned up some redundant `using` directives and addressed some whitespace issues. Also added `var` in a few places where the type is obvious. +11834 area-System.Linq Removing adaptive compilation leftovers in LightDelegateCreator This was taken from the DLR and a bunch of code in support of adaptive compilation (interpretation changing to compilation) was deleted before. The remainder has redundant null checks, type checks, and misleading comments. +11836 area-System.Text Use a non-backtracking NFA/DFA regex engine where possible Stack Exchange [suffered an outage](http://stackstatus.net/post/147710624694/outage-postmortem-july-20-2016) due to a regular expression that used quadratic time. This is a feature request for using a DFA/NFA engine whenever possible – that is, on all regexps that don't have backreferences or any other non-regular features. Note that backreferences almost certainly cannot be handled by _any_ efficient algorithm in general – the matching problem for regular expressions plus backreferences is NP hard. +11837 area-System.Linq Remove unnessary list allocations and copies in System.Linq.Expressions We're generally pretty good about only allocating arrays of the size we need, if we know the size upfront. I just noticed a few places where we still use a `List` instead, and then pass it along as-is to expression factory methods which will create a copy as part of the call to `ToReadOnly`. It'd be better to just allocate the array and wrap it in a `TrueReadOnlyCollection` prior to passing it to these factories. +11838 area-System.Linq Reducing list allocations and copying This addresses issue #11837. In places where keeping track of the index of the next element to write into the array is rather clumsy, I'm using a small `ArrayBuilder` helper type which exposes an `Add` method, so the original `List`-like code keeps working and no index tracking is needed. This utility is also responsible to either return the array or return a `TrueReadOnlyCollection` wrapping it (ownership transfer semantics), so we can pass it along to e.g. an expression factory method without causing it to create an unnecessary copy. +11839 area-System.Runtime Proposal: Generic overload(s) of Array.Clear Separated from #11588 ## Background It may be beneficial to provide generic `Array.Clear` overloads that accept `T[]` rather than an `Array`. Since we know the type of these arrays at compile-time and that they're 0-based, we can write the clearing logic inline in C#. This may benefit smaller arrays since we don't suffer the overhead of calling into the runtime, and will eliminate the need for workarounds like [this](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs#L107-L109). (For large arrays, of course, we can just continue what we were doing before.) It may also be desirable to provide an overload that does not accept an index/length, e.g. `Clear(T[])`, which clears the entire array. Implementing this will be cheaper than had we done it with `Array`, since we can call `Clear(array, 0, array.Length)` instead of `Clear(array, array.GetLowerBound(0), array.GetLength(0))`. ## Proposed API ``` cs namespace System { public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable { public static void Clear(T[] array); public static void Clear(T[] array, int index, int length); } } ``` @terrajobst +11840 area-System.Linq Custom Select/Where implementations should be decoupled from Iterator [EmptyPartition](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Partition.cs#L51) should be override these methods to be nops, but can't since for one to customize these methods you have to [subclass Iterator](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Iterator.cs#L45). Maybe it would be good to have an `IIterator` interface which `Iterator` implements, and then change `IIListProvider` to inherit from `IIterator`. cc @JonHanna +11841 area-System.Linq Small perf tweaks for Select - If the input is an empty array, we know that it's size will never change (even if it is mutated after the `Select` call) so we can return a cached result. - This allows us to delete some code in `ToArray`, `TryGetFirst` and `TryGetLast` for specially handling empty arrays. - `_state - 1` can be used as the index into the array instead of a separate `_index` field. This leaves only 2 pointer-sized fields in `SelectArrayIterator`. - When getting the `Count()` a `SelectEnumerableIterator`, we don't have to run the selector on each element of the sequence. cc @stephentoub @JonHanna @VSadov +11842 area-System.Linq Stack spiller can avoid spilling constants "Stack spilling currently does not consider the node type when allocating temporaries and assignment expressions for child expressions in `ChildRewriter.EnsureDone` when the action is set to `SpillStack`. This leads to redundant temporaries, store, and load instructions in cases where the expression is ""pure"" and has no side-effects that shouldn't be reordered. For example: ``` csharp Lambda>( Add( Constant(1), TryFinally( x, Empty() ) ), x ) ``` produces the following IL: ``` .method int32 ::lambda_method(class [System.Core]System.Runtime.CompilerServices.Closure,int32) { .maxstack 3 .locals init ( [0] int32, [1] int32, [2] int32 ) IL_0000: ldc.i4.1 IL_0001: stloc.0 .try { IL_0002: ldarg.1 IL_0003: stloc.2 IL_0004: leave IL_000a } finally { IL_0009: endfinally } IL_000a: ldloc.2 IL_000b: stloc.1 IL_000c: ldloc.0 IL_000d: ldloc.1 IL_000e: add IL_000f: ret } ``` Spilling in `IL_0001` (and thus the allocation of local `0` and the load in `IL_000c`) is redundant; the load of the constant can safely be moved. Another example is `xs[0] = s` where `s` requires spilling. The constant does not have to be saved into a temporary. This type of optimization can be applied for nodes of kind `Constant` and `Default`. A case could be made for other nodes, such as read-only field accesses, `Quote` and `RuntimeVariables`, etc. " +11843 area-System.Net "IPAddress.Parse(""4294967296"") does not throw FormatException on OS X" "System.Net.IPAddress.Parse(""4294967296"") does not throw FormatException on OS X. ``` $ uname -a Darwin 15.6.0 Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64 x86_64 i386 MacBookPro11,5 Darwin $ dotnet --version 1.0.0-preview2-003121 ``` Steps to reproduce ``` mkdir foo cd foo dotnet new dotnet restore sed -i '9i Console.WriteLine(System.Net.IPAddress.Parse(""4294967296""));' Program.cs dotnet run ``` The sed command writes `Console.WriteLine(System.Net.IPAddress.Parse(""4294967296""));` to line 9 in Program.cs IPAddress.Parse returns `0.0.0.0` on my Mac when using dotnet run. ``` $ dotnet run Project bug (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. 0.0.0.0 Hello World! ``` On Windows, Ubuntu, Docker on Mac, and Mono on Mac I get the expected FormatException: ``` $ mono bin/Debug/netcoreapp1.0/bug.dll Unhandled Exception: System.FormatException: An invalid IP address was specified. ``` " +11844 area-System.Text HtmlEncoder don't support Chinese "Hi, When we develop a website using ASP.NET Core, we find a issue that ASP.NET Core always made the title of html page a error result in Chinese. For example: ``` @{ ViewBag.Title = ""代码改变世界""; } @ViewBag.Title ``` the result is ![image](https://cloud.githubusercontent.com/assets/4610610/18612401/64b09974-7d8b-11e6-96b0-7ecabfd244f4.png) , but it should be ""代码改变世界"". After we check your source code, we found that you used **UnicodeRanges.BasicLatin** init a singleton of **HtmlEncoder**, not **UnicodeRanges.All**. https://github.com/dotnet/corefx/blob/master/src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HtmlEncoder.cs " +11846 area-Meta DisplayNameAttribute Is Not Able to Localise or Override "I've been practicing on Asp.Net Core MVC recently. We were able to localize and globalise the ViewModel attributes before using below class and overriding. I've been looking for this solution over a week. ```c# public class LocalizedDisplayNameAttribute : DisplayNameAttribute { public LocalizedDisplayNameAttribute(string resourceId) : base(GetMessageFromResource(resourceId)) { } private static string GetMessageFromResource(string resourceId) { return LanguageManager.Read(resourceId); } } ``` My view model looks like ```c# public class LoginViewModel { [CustomRequiredAttribute(""Email"")] [LocalizedDisplayName(""Email"")] [EmailAddress] public string Email { get; set; } [LocalizedDisplayName(""Password"")] [CustomRequiredAttribute(""Password"")] [DataType(DataType.Password)] public string Password { get; set; } [Display(Name = ""Remember me?"")] public bool RememberMe { get; set; } } ``` I copied the same LocalizedDisplay class and tried it on Asp.Net core but didn't work. The problem is on view, **application prints field name** not the value from attribute." +11848 area-System.Linq Cheaper stack spilling This addresses issue #11842 by avoiding spilling for certain node types. It's very similar to the strategy taken in Roslyn when spilling the stack for `await` expressions. Note that this PR leverages the work done in https://github.com/dotnet/corefx/pull/11782 to assert the generated IL. These tests are currently `#ifdef`'d out until integration of that PR, but I've kept them in this review to aid in visualizing the effects of this optimization. Alas, we didn't have IL-level asserts before, so there's no diff between the original IL produced and the IL after the change. As a point of comparison though, have a look at the sample provided in the issue; its IL now looks like: ``` .method int32 ::lambda_method(class [System.Core]System.Runtime.CompilerServices.Closure,int32) { .maxstack 2 .locals init ( [0] int32, [1] int32 ) .try { IL_0000: ldarg.1 IL_0001: stloc.1 IL_0002: leave IL_000a } finally { IL_0007: endfinally } IL_0008: ldloc.1 IL_0009: stloc.0 IL_000a: ldc.i4.1 IL_000b: ldloc.0 IL_000c: add IL_000d: ret } ``` That's a reduction by two instructions, one local slot, and a drop of `.maxstack` by one. +11851 area-Infrastructure Lots of CI timeouts for Ubuntu14.04 Release Build and Test This has affected at least 4 PRs submitted this weekend. I'll refer to this issue from these occurrences. +11853 area-System.Linq Stack spiller is contagious beyond the spill site The current implementation of the stack spiller will save child nodes to temporaries, even if they occur _after_ the child node that requires an empty stack. This leads to redundant temporaries, store, and load instructions in an amount proportional to the complexity of the tree _beyond_ the spill site. For example: ``` csharp Lambda, int, int>>( Invoke( f, TryFinally( x, Empty() ), Constant(1), Constant(2) ), f, x ) ``` produces the following IL: ``` .method int32 ::lambda_method(class [System.Core]System.Runtime.CompilerServices.Closure,class [mscorlib]System.Func`4,int32) { .maxstack 5 .locals init ( [0] class [mscorlib]System.Func`4, [1] int32, [2] int32, [3] int32, [4] int32 ) IL_0000: ldarg.1 IL_0001: stloc.0 .try { IL_0002: ldarg.2 IL_0003: stloc.s V_4 IL_0005: leave IL_000b } finally { IL_000a: endfinally } IL_000b: ldloc.s V_4 IL_000d: stloc.1 IL_000e: ldc.i4.1 IL_000f: stloc.2 IL_0010: ldc.i4.2 IL_0011: stloc.3 IL_0012: ldloc.0 IL_0013: ldloc.1 IL_0014: ldloc.2 IL_0015: ldloc.3 IL_0016: callvirt instance int32 class [mscorlib]System.Func`4::Invoke(int32,int32,int32) IL_001b: ret } ``` The arguments of `Invoke` beyond the `Try` argument (which requires spilling) don't have to be stored in temporary locals. Yet in this example we see lines `IL_000e` through `IL_0011` perform stores to temporaries in slots `2` and `3` with corresponding loads in `IL_0014` through `IL_0015`. These are redundant stores and loads, thus we can save two locals in this case. Obviously, the situation gets worse when there are more child nodes beyond the spill site. Note that this contagious effect does not limit itself to the node having a child expression that requires spilling; it also travels up the tree affecting all evaluations _after_ the spill site. For example: ``` csharp Lambda>( Add( Add( Add( Constant(1), TryFinally( x, Empty() ) ), Constant(2) ), Constant(3) ), x ) ``` The emitted IL code has 7 locals introduced by spilling even though the minimum required local count is 2. It seems a possible improvement can be made to `ChildRewriter`: - `Add` can track the index of the _last_ child expression that requires a `SpillStack` rewrite action - `EnsureDone` can use the information recorded by `Add` to avoid allocating temporaries _beyond_ the last child expression requiring spilling Optimized spilling code could result produce this instead: ``` ldc.i4.1 stloc.0 .try { ldarg.1 // x stloc.1 leave X } finally { endfinally } X: ldloc.1 // unrelated case of unnecessary local due to our emit stloc.2 // strategy and the lack of a stack optimizer, but ... ldloc.0 ldloc.2 // ... this could be ldloc.1 without a need for loc.2 add ldc.i4.2 add ldc.i4.3 add ret ``` +11857 area-System.ComponentModel Port System.ComponentModel.Composition (MEF1) to .NET Core With the additional APIs that will be available in .NET Standard 2.0, it may be possible to make System.ComponetModel.Composition (MEF1) available for .NET Core and .NET Standard 2.0. System.Composition (MEF2) is already available, but has a different feature set which can sometimes be an obstacle to porting code to .NET Core. +11858 area-System.Text Compat work for Encoding (for Linux) Add missing implementation for the newly added APIs in net standard 1.7 #10961 +11861 area-System.Collections New Type: Immutable version of BitArray `BitArray` can be a useful class but being mutable means implementing operators on it does not make sense. I propose we add a new type that is immutable so it can have operators for easier usage. ### API Proposal Modelled based on `BitArray` [src](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/BitArray.cs#L13)/[apisof.net](https://apisof.net/catalog/System.Collections.BitArray) and `ImmutableList` [src](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableList_1.cs#L19)/[apisof.net](https://apisof.net/catalog/System.Collections.Immutable.IImmutableList%3CT%3E) **Open questions:** - Should we add `Set`, `SetAll`, `Get` methods as `BitArray` has? - Should we add `IEnumerable` to `BitArray`? **Resolved questions:** - Should we add `public struct Enumerator GetEnumerator()` on `BitArray`? - Answer: No, there already is `public IEnumerable GetEnumerator()`, so we are stuck with boxing there. - Add shift methods and operators. - Answer: Done. ### 1st Part ```c# namespace System.Collections.Immutable { // NEW: BitArray has only ICollection, IEnumerable, not IEnumerable public struct ImmutableBitArray : IEnumerable { public ImmutableBitArray(int length); public ImmutableBitArray(byte[] bytes); public bool this[int index] { get; } public int Count { get; } IEnumerator IEnumerable.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator(); public ImmutableBitArray Not(); public ImmutableBitArray Or(ImmutableBitArray right); public ImmutableBitArray Xor(ImmutableBitArray right); public ImmutableBitArray And(ImmutableBitArray right); public ImmutableBitArray RightShift(int count); public ImmutableBitArray LeftShift(int count); } } ``` ### 2nd Part ```diff namespace System.Collections.Immutable { public struct ImmutableBitArray : IEnumerable { + public ImmutableBitArray(byte[] bytes, int length); + public ImmutableBitArray(bool[] values); + public ImmutableBitArray(int[] values); + public ImmutableBitArray(BitArray bits); + public ImmutableBitArray(int length, bool defaultValue); + public bool Any(bool value); // returns true if any bits have the specified value + public bool All(bool value); // returns true if all bits have the specified value + public int Count(bool value); // returns the count of bits having the specified value + public int Find(bool value); // returns the index of the first bit having the specified value + public int FindLast(bool value); // returns the index of the last bit having the specified value + public static ImmutableBitArray operator !(ImmutableBitArray iba); + public static ImmutableBitArray operator ~(ImmutableBitArray iba); + public static ImmutableBitArray operator |(ImmutableBitArray left, ImmutableBitArray right); + public static ImmutableBitArray operator ^(ImmutableBitArray left, ImmutableBitArray right); + public static ImmutableBitArray operator &(ImmutableBitArray left, ImmutableBitArray right); + public static ImmutableBitArray operator <<(ImmutableBitArray iba, int count); + public static ImmutableBitArray operator >>(ImmutableBitArray iba, int count); + public static ImmutableBitArray Not(ImmutableBitArray iba); + public static ImmutableBitArray Or(ImmutableBitArray left, ImmutableBitArray right); + public static ImmutableBitArray Xor(ImmutableBitArray left, ImmutableBitArray right); + public static ImmutableBitArray And(ImmutableBitArray left, ImmutableBitArray right); + public static ImmutableBitArray RightShift(ImmutableBitArray iba, int count); + public static ImmutableBitArray LeftShift(ImmutableBitArray iba, int count); + public Enumerator GetEnumerator(); + public struct Enumerator : IEnumerator; } } ``` +11862 area-System.Runtime Port some missing Attribute members ``` M:System.Attribute.get_TypeId M:System.Attribute.GetCustomAttribute(System.Reflection.Assembly,System.Type) M:System.Attribute.GetCustomAttribute(System.Reflection.Assembly,System.Type,System.Boolean) M:System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo,System.Type,System.Boolean) M:System.Attribute.GetCustomAttribute(System.Reflection.Module,System.Type) M:System.Attribute.GetCustomAttribute(System.Reflection.Module,System.Type,System.Boolean) M:System.Attribute.GetCustomAttribute(System.Reflection.ParameterInfo,System.Type) M:System.Attribute.GetCustomAttribute(System.Reflection.ParameterInfo,System.Type,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.Assembly) M:System.Attribute.GetCustomAttributes(System.Reflection.Assembly,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.Assembly,System.Type) M:System.Attribute.GetCustomAttributes(System.Reflection.Assembly,System.Type,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo) M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Type) M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.Module) M:System.Attribute.GetCustomAttributes(System.Reflection.Module,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.Module,System.Type) M:System.Attribute.GetCustomAttributes(System.Reflection.Module,System.Type,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo) M:System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo,System.Boolean) M:System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo,System.Type) M:System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo,System.Type,System.Boolean) T:System.Runtime.MemoryFailPoint (and its members from netstandard) M:System.RuntimeFieldHandle.get_Value M:System.RuntimeMethodHandle.get_Value M:System.RuntimeMethodHandle.GetFunctionPointer M:System.RuntimeTypeHandle.get_Value M:System.RuntimeTypeHandle.GetModuleHandle ``` +11863 area-System.Net Handle Linux NetworkInterfaces which report their speed as '-1'. "Some network interfaces report their speed as ""-1"" in the /sys/class/net/name/speed file. The `Speed` property indicates the returned value is in ""bits per second"" and does not imply that a negative value is valid. If we encounter this, we just treat it like other situations where we cannot retrieve the necessary information: we throw a PlatformNotSupportedException (`""The information requested in unavailable on the current platform.""`). We have seen this very occasionally on our current platforms, but it seems to be happening every time on the new Ubuntu 16.10 VM's we are using. Fixes https://github.com/dotnet/corefx/issues/10769 @ericeil " +11866 area-System.Runtime Port some missing GC types/members - [ ] M:System.GC.CancelFullGCNotification - [x] M:System.GC.Collect(System.Int32,System.GCCollectionMode,System.Boolean,System.Boolean) - [x] M:System.GC.EndNoGCRegion - [x] M:System.GC.GetGeneration(System.WeakReference) - [ ] M:System.GC.RegisterForFullGCNotification(System.Int32,System.Int32) - [x] M:System.GC.TryStartNoGCRegion(System.Int64) - [x] M:System.GC.TryStartNoGCRegion(System.Int64,System.Boolean) - [x] M:System.GC.TryStartNoGCRegion(System.Int64,System.Int64) - [x] M:System.GC.TryStartNoGCRegion(System.Int64,System.Int64,System.Boolean) - [ ] M:System.GC.WaitForFullGCApproach - [ ] M:System.GC.WaitForFullGCApproach(System.Int32) - [ ] M:System.GC.WaitForFullGCComplete - [ ] M:System.GC.WaitForFullGCComplete(System.Int32) - [x] T:System.GCNotificationStatus - [x] F:System.GCNotificationStatus.Canceled - [x] F:System.GCNotificationStatus.Failed - [x] F:System.GCNotificationStatus.NotApplicable - [x] F:System.GCNotificationStatus.Succeeded - [x] F:System.GCNotificationStatus.Timeout - [x] F:System.GCNotificationStatus.value__ +11869 area-System.Runtime Implement System.Activator ``` public sealed partial class Activator { internal Activator() { } public static object CreateInstance(System.Type type) { throw null; } public static object CreateInstance(System.Type type, bool nonPublic) { throw null; } public static object CreateInstance(System.Type type, params object[] args) { throw null; } public static object CreateInstance(System.Type type, object[] args, object[] activationAttributes) { throw null; } public static object CreateInstance(System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture) { throw null; } public static object CreateInstance(System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes) { throw null; } public static T CreateInstance() { throw null; } ``` } +11870 area-Meta "AV's and NullRef's in the openSUSE 42.1 runs during ""dotnet restore""" "There are some intermittent crashes in the new openSUSE 42.1 runs. `dotnet restore` seems to be hitting an `AccessViolationException` and/or a `NullReferenceException` during the initial restore process. I don't see any crashes past that. Note that we're currently still using a ""bootstrap"" CLI which I built myself with a manual process for these runs. This problem may go away if the bootstrap version is rebuilt with newer CoreCLR sources. " +11873 area-System.Net HttpWebRequest.GetRequestStreamAsync doesn't open the connection to the server - we always buffer the content The corefx implementation of HttpWebRequest.GetRequestStreamAsync effectively just returns an in-memory stream. The connection to the server isn't made and the data isn't uploaded until Stream.Dispose is called on the that Stream. This is problematic for several reasons, including that the actual asynchronous operation ends up happening in the synchronous Dispose call on the stream, and deadlocks can easily happen if code assumes that the server will respond once the supplied data has been written (but before Dispose is called). +11874 area-System.Net WebSocket does not have support for extensions `WebSocket` in System.Net.WebSockets does not have support for extensions. Which is part of the rfc6455 standard: https://tools.ietf.org/html/rfc6455#section-9 It should read the `Sec-WebSocket-Extensions` HTTP header from the client. The `WebSocket` class does not expose a `Extensions` property. +11875 area-System.Runtime Expose below misc types/apis ```T:System.AssemblyLoadEventArgs M:System.AssemblyLoadEventArgs.#ctor(System.Reflection.Assembly) P:System.AssemblyLoadEventArgs.LoadedAssembly M:System.AssemblyLoadEventArgs.get_LoadedAssembly T:System.AssemblyLoadEventHandler M:System.AssemblyLoadEventHandler.#ctor(System.Object,System.IntPtr) M:System.AssemblyLoadEventHandler.BeginInvoke(System.Object,System.AssemblyLoadEventArgs,System.AsyncCallback,System.Object) M:System.AssemblyLoadEventHandler.EndInvoke(System.IAsyncResult) M:System.AssemblyLoadEventHandler.Invoke(System.Object,System.AssemblyLoadEventArgs) T:System.LoaderOptimization F:System.LoaderOptimization.DisallowBindings F:System.LoaderOptimization.DomainMask F:System.LoaderOptimization.MultiDomain F:System.LoaderOptimization.MultiDomainHost F:System.LoaderOptimization.NotSpecified F:System.LoaderOptimization.SingleDomain F:System.LoaderOptimization.value__ T:System.LoaderOptimizationAttribute M:System.LoaderOptimizationAttribute.#ctor(System.Byte) M:System.LoaderOptimizationAttribute.#ctor(System.LoaderOptimization) P:System.LoaderOptimizationAttribute.Value M:System.LoaderOptimizationAttribute.get_Value T:System.LocalDataStoreSlot M:System.ResolveEventArgs.#ctor(System.String) M:System.ResolveEventArgs.#ctor(System.String,System.Reflection.Assembly) M:System.ResolveEventArgs.get_Name M:System.ResolveEventArgs.get_RequestingAssembly T:System.ResolveEventArgs P:System.ResolveEventArgs.Name P:System.ResolveEventArgs.RequestingAssembly M:System.ResolveEventHandler.#ctor(System.Object,System.IntPtr) M:System.ResolveEventHandler.BeginInvoke(System.Object,System.ResolveEventArgs,System.AsyncCallback,System.Object) M:System.ResolveEventHandler.EndInvoke(System.IAsyncResult) M:System.ResolveEventHandler.Invoke(System.Object,System.ResolveEventArgs) T:System.ResolveEventHandler ``` +11878 area-System.Runtime Mark PlatformID.MacOSX obsolete? `Environment.OSVersion.Platform` returns `PlatformID.Unix` on macOS instead of `PlatformID.MacOSX`, which is consistent with Mono's behavior. This is already confusing for Xamarin.Mac developers and I think it's going to be confusing for .NET Core developers as well. (I wish we hadn't added `PlatformID.MacOSX` for Silverlight, and just used `PlatformID.Unix` like Mono.) To help mitigate the confusion, should `PlatformID.MacOSX` be marked as obsolete, pointing developers to use `PlatformID.Unix` or `RuntimeInformation.IsOSPlatform(OSPlatform.OSX)` instead? And/or hidden from intellisense? cc: @terrajobst, @KrzysztofCwalina, @weshaggard, @stephentoub For reference: ``` c# public enum PlatformID { Win32S = 0, Win32Windows = 1, Win32NT = 2, WinCE = 3, Unix = 4, Xbox = 5, MacOSX = 6 } ``` +11881 area-System.Net Port the rest of HttpWebRequest/Response APIs Most of it should be simple. Some hard issues expected - seek NCL team advice on them. ``` M:System.Net.HttpWebRequest.#ctor M:System.Net.HttpWebRequest.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) P:System.Net.HttpWebRequest.Accept P:System.Net.HttpWebRequest.Address P:System.Net.HttpWebRequest.AllowAutoRedirect P:System.Net.HttpWebRequest.AllowReadStreamBuffering P:System.Net.HttpWebRequest.AllowWriteStreamBuffering P:System.Net.HttpWebRequest.AutomaticDecompression P:System.Net.HttpWebRequest.ClientCertificates P:System.Net.HttpWebRequest.Connection P:System.Net.HttpWebRequest.ContinueDelegate P:System.Net.HttpWebRequest.ContinueTimeout P:System.Net.HttpWebRequest.CookieContainer P:System.Net.HttpWebRequest.Date P:System.Net.HttpWebRequest.DefaultCachePolicy P:System.Net.HttpWebRequest.DefaultMaximumErrorResponseLength P:System.Net.HttpWebRequest.DefaultMaximumResponseHeadersLength P:System.Net.HttpWebRequest.Expect P:System.Net.HttpWebRequest.HaveResponse P:System.Net.HttpWebRequest.Host P:System.Net.HttpWebRequest.IfModifiedSince P:System.Net.HttpWebRequest.KeepAlive P:System.Net.HttpWebRequest.MaximumAutomaticRedirections P:System.Net.HttpWebRequest.MaximumResponseHeadersLength P:System.Net.HttpWebRequest.MediaType P:System.Net.HttpWebRequest.Pipelined P:System.Net.HttpWebRequest.ProtocolVersion P:System.Net.HttpWebRequest.ReadWriteTimeout P:System.Net.HttpWebRequest.Referer P:System.Net.HttpWebRequest.SendChunked P:System.Net.HttpWebRequest.ServerCertificateValidationCallback P:System.Net.HttpWebRequest.ServicePoint P:System.Net.HttpWebRequest.SupportsCookieContainer P:System.Net.HttpWebRequest.TransferEncoding P:System.Net.HttpWebRequest.UnsafeAuthenticatedConnectionSharing P:System.Net.HttpWebRequest.UserAgent M:System.Net.HttpWebRequest.AddRange(System.Int32) M:System.Net.HttpWebRequest.AddRange(System.Int32,System.Int32) M:System.Net.HttpWebRequest.AddRange(System.Int64) M:System.Net.HttpWebRequest.AddRange(System.Int64,System.Int64) M:System.Net.HttpWebRequest.AddRange(System.String,System.Int32) M:System.Net.HttpWebRequest.AddRange(System.String,System.Int32,System.Int32) M:System.Net.HttpWebRequest.AddRange(System.String,System.Int64) M:System.Net.HttpWebRequest.AddRange(System.String,System.Int64,System.Int64) M:System.Net.HttpWebRequest.EndGetRequestStream(System.IAsyncResult,System.Net.TransportContext@) M:System.Net.HttpWebRequest.GetRequestStream(System.Net.TransportContext@) M:System.Net.HttpWebResponse.#ctor M:System.Net.HttpWebResponse.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) P:System.Net.HttpWebResponse.CharacterSet P:System.Net.HttpWebResponse.ContentEncoding P:System.Net.HttpWebResponse.Cookies P:System.Net.HttpWebResponse.LastModified P:System.Net.HttpWebResponse.Method P:System.Net.HttpWebResponse.ProtocolVersion P:System.Net.HttpWebResponse.Server P:System.Net.HttpWebResponse.StatusCode P:System.Net.HttpWebResponse.StatusDescription M:System.Net.HttpWebResponse.GetResponseHeader(System.String) ``` +11882 area-System.Net Port FileWebRequest/Response Build it on top of System.IO.File APIs (it's also great solution for x-plat). +11883 area-System.Net Port FtpWebRequest/Response Should be implemented on top of TCP (start with Desktop .NET code which is on top of Sockets). Note: There are better OSS APIs, but with very different API surface. +11884 area-System.Net Port WebProxy Expect one hard API: URI->proxy mapping (calls into OS) -- likely not used widely, we shold just throw NotSupportedException. +11885 area-System.Net Add ServicePointManager / ServicePoint Add stubs for all these APIs. +11888 area-System.Xml Create System.Xml ref assembly All new System.Xml APIs should go in System.Xml.ReaderWriter ref assembly, all their dependencies in already existing Xml contracts would also need to move down to S.X.RW +11893 area-System.IO Re-enable clrcompression build with Zlib-Intel Due to a previous bug, CoreFX was changed to use the closed version of clrcompression instead of the optimized Zlib-Intel version. After a fix and more testing, I believe CoreFX should switch back to the Zlib-Intel build. I have done 24 hour looped deflate tests for the following: - Canterbury Corpus - Calgary Corpus - a set of 10 4k .jpeg images - The CLI preview3 binaries By succesfully completing this longer and more varied testing, we should consider re-enabling the optimized build of Zlib. https://github.com/dotnet/corefx/pull/9273 https://github.com/dotnet/corefx/issues/9290 Testing was completed after #11892 +11894 area-System.Net Add WebClient to new System.Net.WebClient contract This PR ports System.Net.WebClient to corefx. The code is mostly taken from desktop and then cleaned up a bit stylistically. The only major code rewrite was removing hundreds of lines of complicated APM callback-based code and replacing it with a few core async methods. There's still plenty of more cleanup that can be done, but functionally this is sufficient. I also wrote a bunch of tests for it (~85% coverage), and added a few members to {Http}WebRequest in support of the WebClient implementation. I did not expose those {Http}WebRequest members in the contract, though; that will be done when dedicated time is put into finishing off the WebRequest surface area. Note that a suggestion had been made to rewrite WebClient directly on top of HttpClient. I declined to do so for several reasons, including because as-is it'll work with the other *WebRequest/Response objects as they're added to the implementation, and including because WebClient exposes several members that assume a WebRequest/Response-based implementation (e.g. GetWebRequest). I've put WebClient into System.Net.Requests as it does tie in closely with these requests, analagous to TcpClient with Sockets. Fixes https://github.com/dotnet/corefx/issues/11794 cc: @davidsh, @cipop, @ericeil, @karelz +11895 area-System.Linq Cleanup ArrayBounds tests in Linq.Expressions /cc @VSadov @bartdesmet We can consolidate test data and test code (because of the following): Every single test uses the same following arrays (and their nullable versions): - byte - int - long - sbyte - short - uint - ulong - ushort It uses them as data for the following array types:
Click to reveal - bool - byte - char - decimal - double - float - int - long - S - sbyte - Sc - Scs - short - Sp - Ss - uint - ulong - ushort - C - D - Delegate - E - El - Func - I - IEquatable - IEquatable - object - string +11897 area-System.Globalization Map Unix TimeZoneId to Windows TimeZoneId If I execute `TimeZoneInfo.GetSystemTimeZones()` on Linux & Windows I get different lists, this is because each OS uses a different timezone db. However, is there a way in .netcore to get a consistent list no matter the OS and/or is there a way that `TimeZoneInfo.FindSystemTimeZoneById` on Windows will work with a Unix timezone id and vice versa a Windows id parsed on a Unix OS? +11898 area-System.Runtime "Provide built-in support for ""weak event"" pattern" Weak event pattern is a widely used pattern. But still, there is no out-of-the-box support for it in .NET +11902 area-System.Net Add .NET Standard 2.0 methods/properties to NetworkStream Part of #11788. @stephentoub @CIPop @davidsh +11903 area-System.Net Add Socket.SupportsIPv4/6. The CLR allows configuration of these properties, separately from whether the OS supports IPv4/6. We do not provide these config options, so SupportsIPvX === OSSupportsIPvX. @stephentoub @CIPop @davidsh +11904 area-System.Net Need more testing of System.Net.Sockets.NetworkStream We currently have very poor coverage of NetworkStream. We should consider adding more tests in this area. +11907 area-System.Linq The binary operator Subtract is not defined for the types 'System.DateTime' and 'System.DateTime'. "While converting my `.NET 4.5` library to `.NETStandard v1.6` I ran into a failing unit test which used to pass before. I pinpointed the problem to the following three lines of code: ``` ParameterExpression arg1 = Expression.Parameter( typeof( DateTime ), ""arg1"" ); ParameterExpression arg2 = Expression.Parameter( typeof( DateTime ), ""arg2"" ); var test = Expression.Subtract( arg1, arg2 ); ``` This expression tree compiles for `.NET 4.5`, but throws an `InvalidOperationException` in `.NETStandard v1.6`: > The binary operator Subtract is not defined for the types > 'System.DateTime' and 'System.DateTime'. However, for both targets the following code works: ``` DateTime one = new DateTime(); DateTime two = new DateTime(); TimeSpan difference = one - two; ``` I thus would expect the expression trees to compile for .NET Core as well. After cross-posting this on Stack Overflow, [Serge Semenov found the exact reason this fails](http://stackoverflow.com/a/39602271/590790), thereby confirming this is a bug in .NET Core. " +11908 area-System.Diagnostics System.Diagnostics.Process.Performance.Tests failed to start on CentOS in CI -- Linux kernel bug "From http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/397/ ``` /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/Tools/Microsoft.CSharp.Core.targets(67,5): error MSB6006: ""/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/Tools/dotnetcli/dotnet"" exited with code 139. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/src/System.Diagnostics.Process/tests/Performance/System.Diagnostics.Process.Performance.Tests.csproj] ``` Oddly, there's nothing else in the log about this test. It doesn't seem to have even started. " +11909 area-System.Reflection Add some TypeBuilder tests And consolidate some others /cc @stephentoub +11910 area-System.Net [WinHttpHandler OOB] Override APM (Begin/End) Stream APIs for WinHttpResponseStream On .Net Desktop, `StreamContent.SerializeToStreamAsync` is calling into `StreamToStreamCopy` which relies on Begin/End Stream APIs. This is different from CoreFx where StreamToStreamCopy is using Tasks. Since on .Net Desktop the `System.IO.Stream` defaults are used, the code eventually calls synchronous Read/Write leading to very low performance when multiple HttpClients are used in parallel. This is not an issue when using the System.Net.Http contract from CoreFX (AFAIK not possible in a .Net Desktop application). (12 logical CPU box, using Parallel.For to schedule multiple HttpClients:) ![image](https://cloud.githubusercontent.com/assets/8635911/18686791/20bf7548-7f32-11e6-9e86-30b8d7ba4ac0.png) +11916 area-Meta Undo Linq.Expressions dependency on RegEx Undo https://github.com/dotnet/corefx/pull/11886/commits/4f192affbc07a77e6660e75caeae5fba07a9cddf in release/1.1.0 after updating packages. +11917 area-Serialization To Port PR #11752 from release/1.1.0 to master - Support text.Mapping being SpecialMapping when using ReflectionBased Serializer. +11918 area-Serialization XmlSerializer to Support XmlSchemaTest in ReflectionOnly Mode Steps to repro the issue: 1. Remove [ActiveIssue] on the test. 2. cd into `src\System.Private.Xml\tests\XmlSerializer\ReflectionOnly` 3. `msbuild System.Xml.XmlSerializer.ReflectionOnly.Tests.csproj /t:buildandtest` The test failed with the following error, ``` XmlSerializerTests.XmlSchemaTest [FAIL] System.InvalidOperationException : There was an error generating the XML document. ---- System.PlatformNotSupportedException : System.Xml.Schema.XmlSchemaObject Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(504,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces, String encodingStyle, String id) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(407,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces, String encodingStyle) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(402,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Schema\XmlSchema.cs(235,0): at System.Xml.Schema.XmlSchema.Write(XmlWriter writer, XmlNamespaceManager namespaceManager) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Schema\XmlSchema.cs(155,0): at System.Xml.Schema.XmlSchema.Write(Stream stream, XmlNamespaceManager namespaceManager) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Schema\XmlSchema.cs(144,0): at System.Xml.Schema.XmlSchema.Write(Stream stream) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2348,0): at XmlSerializerTests.XmlSchemaTest() ----- Inner Stack Trace ----- D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(483,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteStruc tMethod(StructMapping mapping, String n, String ns, Object o, Boolean isNullable, Boolean needType, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(390,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteEleme nt(Object o, ElementAccessor element, String arrayName, Boolean writeAccessor, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(163,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteEleme nts(Object o, Object enumSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, String arrayName, Boolean writeAccessors, Boolean isNullable, XmlMapping parentMapping ) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(110,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteMembe r(Object o, Object choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, Boolean writeAccessors, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(93,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.GenerateTyp eElement(Object o, XmlTypeMapping xmlMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(58,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteObject OfTypeElement(Object o, XmlTypeMapping mapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(48,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteObject (Object o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(438,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces, String encodingStyle, String id) ``` +11919 area-Serialization XmlSerializer to Support XmlSerializerFactory in ReflectionOnly Mode Steps to repro the issue: 1. Remove [ActiveIssue] on the test. 2. cd into `src\System.Private.Xml\tests\XmlSerializer\ReflectionOnly` 3. `msbuild System.Xml.XmlSerializer.ReflectionOnly.Tests.csproj /t:buildandtest` The test failed with the following error, ``` XmlSerializerTests.XmlSerializerFactoryTest [FAIL] System.InvalidOperationException : There was an error generating the XML document. ---- System.ArgumentNullException : Value cannot be null. Parameter name: type Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(511,0): at Syst em.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, Stri ng encodingStyle, String id) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(414,0): at Syst em.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, Stri ng encodingStyle) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(409,0): at Syst em.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(391,0): at Syst em.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o, XmlSerializerNamespaces namespaces) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(379,0): at Syst em.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2382,0): at XmlSeri alizerTests.SerializeAndDeserialize[T](T value, String baseline, Func`1 serializerFactory, Boolean skipStringCompare , XmlSerializerNamespaces xns) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2363,0): at XmlSeri alizerTests.XmlSerializerFactoryTest() ----- Inner Stack Trace ----- D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs(174,0): at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaul tNamespace) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(441,0): at Syst em.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, Stri ng encodingStyle, String id) ``` +11920 area-System.Linq Fix GetAnyStaticMethodValidated to check all overloads of operators Fixes #11907 This should probably be ported to 1.1.0, as we have already one documented report preventing porting-to-core /cc @Whathecode @VSadov @Bartdesmet @stephentoub @JonHanna +11921 area-System.Data Added SqlClient test for checking UnobservedTaskExceptions after async reads. @saurabh500 @geleems @YoungGah Noticed we didn't have a corresponding test for https://github.com/dotnet/corefx/commit/d44b53067db6584e07c4e5dade8dad7388111ee4 +11926 area-System.Runtime System.Array.LongLength and System.Array.GetLongLength are missing We need support for 64-bit arrays for scientific computing in .NET core. Are there any plans to reintroduce those APIs? +11929 area-System.Net Stub out System.Net.ServicePoint cc: @davidsh, @cipop, @ericeil, @karelz Adds a new contract System.Net.ServicePoint with stubbed out implementations of ServicePointManager, ServicePoint, AuthenticationManager, and friends. However, unless we plan to ship with such functionality stubbed out, I don't think we're going to want to keep this as a separate contract. The public surface area of ServicePointManager actually brings in / depends on WebRequest, which means that for WebRequest and friends to respect settings from ServicePointManager, ServicePointManager can't live in a contract above WebRequest. Instead, I think we should push all of these types down into System.Net.Requests, recognizing that these types are part of that compat model and used only with/for that model. We would be explicitly acknowledging that HttpClient would not respect any of the associated settings, as System.Net.Requests depends on System.Net.Http, not the other way around, and thus System.Net.Http wouldn't have access to ServicePointManager (other than through super hacky means like reflection). +11933 area-System.Net Add new test rids to System.Net.Mime projects Adds the two new test rids to the recently-added System.Net.Mime projects. +11935 area-Meta Where to find a complete list of NuGet packages for corporate NuGet server For corporations who block access to public feeds such as NuGet.org, they usually download packages and then host them on a private NuGet server. That approach works fine for a few years already. Now .NET Core development relies even more on NuGet.org, and it involves tons of packages (both managed and native), which makes it very difficult for any outsiders to generate a complete list of required packages from scratch. Thus, I'd like to ask if Microsoft can provide such a list (or at least show how such a list can be compiled from source code or any other public information). The necessary columns I can think of are below, File: netcore1.0.0.txt | Package name | version | | --- | --- | | System | 4.0.0 | ... File: netcore1.0.1.txt | Package name | version | | --- | --- | | System | 4.0.1 | ... Then we can write custom scripts to download the packages from NuGet.org and then deploy to private NuGet server. Of course, if Microsoft can provide such a script, it would be highly appreciated. +11940 area-System.Net Add new test rids to System.Net.WebClient project cc: @mellinoe +11943 area-System.IO "Directory.GetDirectories returns zero sub-directories with search pattern ""*."" on Unix" "On windows using search pattern ""*."" returns all the sub-directories but on Unix it returns zero sub-directories. Is there a reason why this difference exist? cc @stephentoub @ianhays ``` csharp using System; using System.IO; class Program { static void Main(string[] args) { string[] subDirs = Directory.GetDirectories( @""C:\Program Files"", // On Unix try ""/etc"" ""*.""); Console.WriteLine(subDirs.Length); foreach(var dir in subDirs) { Console.WriteLine(dir); } } } ``` " +11947 area-System.Net Port to 1.1: Fix WinHttpHandler to deal with custom HTTP auth responses Port PR #11481 WinHTTP returns an error from WinHttpQueryAuthSchemes if a server sends back a response with a scheme that isn't handled by WinHTTP. Many servers use custom auth schemes. A few don't even send a `WWW-Authenticate` header in the response at all (technically against RFC7235). To handle these cases and to match Desktop behavior, we ignore the error from WinHttpQueryAuthSchemes. Fixes #11452 and #11456. +11949 area-System.Data DbDataReader does not have Close method, even though it inherits from IDataReader I'm unable to compile code that calls or overrides `DbDataReader.Close()`. However `DbDataReader` inherits from `IDataReader`, which has a `.Close()`. method. What's even more baffling is that when I look at the source, [DbDataReader does indeed implement .Close()](https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DbDataReader.cs#L288). Repro: 1. In VS2015 create new .NET Core library 2. Add System.Data.Common v4.1.0 nuget reference 3. Add below code I've uploaded the repro as a gist at https://gist.github.com/jaredmoo/52f76f513ceff6a1240bac30aa0152e3 ``` using System; using System.Data; using System.Data.Common; namespace DbDataReaderTest { public class Class1 { public static void DoSomethingInterface(IDataReader reader) { reader.Close(); } public static void DoSomethingAbstractBase(DbDataReader reader) { reader.Close(); // error CS1061: 'DbDataReader' does not contain a definition for 'Close' and no extension method 'Close' accepting a first argument of type 'DbDataReader' could be found (are you missing a using directive or an assembly reference?) DoSomethingInterface(reader); // confirmed, DbDataReader inherits IDataReader } } public abstract class MyDbDataReader : DbDataReader { public override void Close() // error CS0115: 'MyDbDataReader.Close()': no suitable method found to override { } } } ``` +11950 area-System.Net Add System.Net.Dns APIs for netstandard 2.0 This adds the missing `System.Net.Dns` methods for .NET Standard 2.0, and ports some of the tests for these methods over from the CLR tests. +11952 area-Serialization Improve DCS/DCJS's Performance in ReflectionOnly Mode We did a few performance optimization for ReflectionOnly mode, see the following PRs, - https://github.com/dotnet/corefx/pull/9702 - https://github.com/dotnet/corefx/pull/9547 But the reflection based serialization is still much slower than serialization using IL generation. We'd like to further optimize it. +11953 area-Serialization Improve XmlSerializer's Performance in ReflectionOnly Mode We need to measure the performance of our perf tests running in ReflectionOnly mode and then make performance optimization. +11954 area-Serialization To Verify the Next Release of Meta-package in UWP with Serialization Tests +11957 area-System.Net Implement new functionality in System.Net.NetworkInformation "This adds and implements all of the new public surface area described in https://github.com/dotnet/corefx/issues/11789 on all supported platforms. - The frameworks targeted by the new surface area are identical to the ones targeted previously. There doesn't seem to be any need to limit this stuff further. @ericstj - IPv4InterfaceStatistics returns identical information to IPInterfaceStatistics. This behavior is inherited from Windows. This is the reason we originally removed the API. - The Begin/EndGetUnicastAddresses methods are thin wrappers over the Task-based async method on Unix. The Task-based version is a thin wrapper over the sync version. .NET Native does not implement this. - Some of the functionality was already implemented in the Windows version, which is why it doesn't appear in the diff. For things that were not implemented already, I took the implementation directly from the sources for System.dll (.NET Framework). - The Unix versions of NetworkAvailabilityChanged are much less robust and reliable than the Win32 version, due to platform differences. The implementations are modeled somewhat after what Mono does in these cases. - The Linux version listens to additional ""Route Changed"" notifications on the rtnetlink socket we are using. When ""Route Changed"" socket events are received, we propagate them out to NetworkAvailabilityChanged events. We attempt to coalesce such socket events which occur within 150 milliseconds of each other; this is because the OS sends many events in quick succession in response to a single network change. This approach is borrowed from the Mono version. It is not extremely robust, and can result in duplicate events if the OS happens to send them to us more than 150 milliseconds apart. - The OSX version conservatively fires off NetworkAvailabilityChanged events whenever a network address changes, even if the overall availability has not really changed. Mono has a different approach here, but it does not seem to work. I have run my test program on mono, and neither NetworkAddressChanged nor NetworkAvailabilityChanged events are ever fired, except when initially subscribed to. Even in theory, the approach used there still does not handle false positives, duplicate notifications, etc. - Both of the Unix versions result in false positives. They do not filter potential events based on past state. So you may receive numerous events in succession which all indicate the same connectivity status. This is different from Windows where each event will indicate that the availability has flipped. - The .NET Native version of this library is already very crippled. I have implemented NetworkAvailabilityChanged in a similar manner to the Unix versions. It fires the event whenever a network address change is detected, with true information about the current network availability. Most of the other new methods are not implemented (PlatformNotSupportedException). - During testing of the above features, I identified a problem in the implementation of NetworkInterface.GetIsNetworkAvailable() on Unix platforms. This method is not supposed to consider Loopback or Tunnel interfaces. This was not a big problem on Linux (where I did the most testing) because Loopback interfaces often report their status as ""Unknown"" on Linux. However, the OSX machine I tested has a Loopback device with status ""Up"". I've excluded Loopback/Tunnel types from consideration in this function. @stephentoub , @CIPop , @davidsh cc: @karelz " +11958 area-System.Data System.Data.SqlClient.SqlConnection.ChangePassword not implemented It appears that the SqlConnection class does not have ChangePassword() as an available method. Without this, client applications cannot allow the user to change their password when it is detected that it has expired or needs to be changed. They must log on as a different user, or use a program supporting password change (such as SQL Server Management Studio). +11959 area-System.Security Add crypto *Formatter classes and extend HashAlgorithm Three sets of changes: (primary) #9990 Port System.Security.Cryptography.*Formatter (dependency) #9983 Port System.Security.Cryptography.HashAlgorithm (trivial) #9991 Port KeyedHashAlgorithm.KeyValue The abstract formatter types mentioned in #9990 were placed into the Algorithms assembly instead of Primitives to make the code cleaner when converting from a HashAlgorithm type to the string-based algorithm version of that type (see HashAlgorithmNames.ToAlgorithmName()) The formatter types have some questionable semantics but kept it this way for desktop compat. This includes Parameters property, 'dead' code in DSA's SetHashAlgorithm, and some missed validation on null parameters. +11960 area-System.Runtime Test failure: System.Tests.EnvironmentTests/GetFolderPath_Unix_NonEmptyFolderPaths Opened on behalf of @jiangzeng The test `System.Tests.EnvironmentTests/GetFolderPath_Unix_NonEmptyFolderPaths` has failed. ``` Assert+WrapperXunitException : File path: D:\A\_work\20\s\corefx\src\System.Runtime.Extensions\tests\System\EnvironmentTests.cs. Line: 227 ---- Assert.NotEmpty() Failure ``` Stack Trace: ``` at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) at System.Tests.EnvironmentTests.GetFolderPath_Unix_NonEmptyFolderPaths(SpecialFolder folder, SpecialFolderOption option) ----- Inner Stack Trace ----- at Assert.NotEmpty(IEnumerable collection, String path, Int32 line) ``` Failing configurations: - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release - Fedora.23.Amd64 - AnyCPU-Debug - AnyCPU-Release - Debian.82.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20160921.07/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetFolderPath_Unix_NonEmptyFolderPaths +11961 area-System.Net Add System.Net.Cache types to corefx This adds the exposed types/members in System.Net.Cache to corefx. It does not actually provide the caching logic that would be used like a type like HttpWebRequest to do caching. cc: @davidsh, @cipop, @ericeil, @karelz Fixes #11791 +11963 area-System.Numerics Cleanup BigInteger.Add tests - Consolidate common test data - Remove random data (but add tests that cover the random data, of course) - Stop using this strange StackCalculator thingy that confuses things, and verify results properly /cc @mellinoe +11965 area-System.IO File.Open mangles path ending in ~.SS I have a file accessible through \\localhost\Test\test.txt.~SS. If I attempt to access that file using `File.Open`, I get an exception: ``` Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path 'o\t\Test\test.txt.~SS'. at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.Open(String path, FileMode mode) at ConsoleApplication.Program.Main(String[] args) ``` Notice that the path that it is complaining about is mangled from the requested path. I have a repro available [here](https://github.com/smbecker/filepath-repro). This works as expected using desktop framework but fails when targeting .NET CoreCLR. It also works as expected if I rename the file to test.txt.~sstmp. Thoughts? +11967 area-System.Net Consider adding synchronous path to Ping The Ping class' synchronous methods are currently implemented as a blocking wrapper over its asynchronous implementation. A synchronous path could be put in place to avoid that, e.g. ala the code at http://referencesource.microsoft.com/#System/net/System/Net/NetworkInformation/ping.cs,eb2dfd41e9774d4a when `async` is false. +11968 area-System.Collections Fixed performance of Min/Max in SortedSet. The existing implementation of Min/Max calls InOrderTreeWalk, which perform an allocation of a stack for traversing the tree. But when you are finding the smallest or largest element in a tree there is no need to perform this allocation. This is an optimised version that directly finds the smallest or largest element. This is an important use case for using a sorted set as a priority queue. In microbenchmarking, with the following code I found a 30-40% speed up: ``` csharp for(int j=0; j < 10; j++) { var s = new SortedSet(); for(int n = 0; n < 100000; n++) { s.Add(n); } int i = 0; while(s.Min != null) { var o = s.Min; s.Remove(o); i++; if(i%2 == 0) { s.Add((int)o * 2); } } } ``` +11971 area-System.IO Investigate if we can cleanup [In,Out] annotations This issue is for follow up to https://github.com/dotnet/corefx/pull/11962#issuecomment-248899785. Gist is; cleanup the [In,Out] annotations from various Stream classes if we don't need them. +11973 area-System.Net WinHttp exception thrown when POST'ing to secure server thru authenticating proxy This was discovered from a partner testing out Nano server using CoreFx components. The following repro ends up throwing ERROR_WINHTTP_INCORRECT_HANDLE_STATE from the `WinHttpRequestCallback.OnRequestSendingRequest` method when the following are true: - POST'ing a request body to a secure (TLS/SSL) server - Connecting thru an authenticating proxy - Using a callback specified in the `HttpClientHandler.ServerCertificateCustomValidationCallback` +11975 area-System.Net Fix WinHttpHandler when connecting thru authenticating proxy WinHttpRequestCallback.OnRequestSendingRequest was throwing ERROR_WINHTTP_INCORRECT_HANDLE_STATE when trying to retrieve the WINHTTP_OPTION_SERVER_CERT_CONTEXT during custom server certificate validation. This problem would repro when POST'ing a request body to a secure (TLS/SSL) server thru an authenticating proxy. The error was being returned because the request handle was not yet bound to a secure connection. This occurs while connecting thru a proxy where the CONNECT verb hasn't yet been processed due to the proxy requiring authentication. Discussions with the WinHTTP team confirmed this analysis and fix. The fix is to ignore this notification when getting this error. Another notification will be sent once the final secure connection thru the proxy is completed. Fixes #11973 +11976 area-System.Collections SortedDictionary.First performance Getting the `First` element of a `SortedDictionary` causes allocation of a stack that is log sized in the number of elements in the dictionary. This can be done without any allocation. Currently, `First` is only an extension method for `SortedDictionary`. This means it builds an `Enumerator`, and then uses that to get the first element. The enumerator creates a stack to aid its traversal of the underlying RedBlack tree. This seems the correct thing for the enumerator to do, but in the context of getting the single first element it is very costly. There does not seem to be a sensible way to alter the enumerator to special case this use, without introducing conditionals and hence costs elsewhere. Would it be possible to make `First` a method of `SortedDictionary`, rather than an extension method, then it would be able to call `SortedSet.Min` directly? I am not familiar with the repurcussions of making an extension method into an actual method. Is there a way for this to break existing code, or not? I can submit a Pull Request if that is the right way forward. +11978 area-System.Net WinHttpHandler is allocating twice the required buffer for headers GetResponseHeaderCharBufferLength is calling into WinHttpQueryHeaders which returns the buffer size in bytes not C# char which is 16bit wide. We should allocate byte[] instead and extract the UTF8 encoded characters from the byte array. +11979 area-System.Net WinHttpHandler could query individual headers instead of double buffering them in the managed address space Currently, WinHttpHandler is double buffering instead of lazily extracting headers as they are requested by the application. This is debatable and would need to be profiled. Lacking the necessary telemetry it's hard to understand if most apps really care about the headers or not. If not, this change should be made to avoid consuming both native-heap and managed-heap memory for the same information. +11980 area-System.Reflection The serialization constructor for System.Reflection.Pointer cannot be found. Attempting to deserialize an object of type `System.Reflection.Pointer` results in a `SerializationException` > System.Runtime.Serialization.SerializationException : The constructor to deserialize an object of type 'System.Reflection.Pointer' was not found. > Stack Trace: > at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context) > at System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) > at System.Runtime.Serialization.ObjectManager.DoFixups() > at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, BinaryParser serParser, Boolean fCheck) > at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean check) > at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) > E:\corefx\src\Common\tests\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs(20,0): at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.Clone[T](T obj) > E:\corefx\src\System.Runtime\tests\System\Reflection\PointerTests.cs(192,0): at System.Reflection.Tests.PointerTests.PointerSerializes(Int32 value) > ----- Inner Stack Trace ----- > at System.Runtime.Serialization.ObjectManager.GetDeserializationConstructor(Type t) A repro is in PR #11981 +11981 area-System.Reflection Add tests for S.Reflection types This change adds tests for the following System.Reflection types: - Module - Pointer - RuntimeReflectionExtensions - TypeDelegator - TypeInfo Fixes #11766 +11985 area-System.Net Port to 1.1: Fix WinHttpHandler when connecting thru authenticating proxy Port PR #11975 WinHttpRequestCallback.OnRequestSendingRequest was throwing ERROR_WINHTTP_INCORRECT_HANDLE_STATE when trying to retrieve the WINHTTP_OPTION_SERVER_CERT_CONTEXT during custom server certificate validation. This problem would repro when POST'ing a request body to a secure (TLS/SSL) server thru an authenticating proxy. The error was being returned because the request handle was not yet bound to a secure connection. This occurs while connecting thru a proxy where the CONNECT verb hasn't yet been processed due to the proxy requiring authentication. Discussions with the WinHTTP team confirmed this analysis and fix. The fix is to ignore this notification when getting this error. Another notification will be sent once the final secure connection thru the proxy is completed. Fixes #11973 +11986 area-System.Diagnostics Add ExcludeFromCodeCoverageAttribute Fixes #10685 @ericstj is there any meta file that I missed editing? +11987 area-System.Net DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP test failed on Windows ``` System.Net.NameResolution.Tests.GetHostByAddressTest.DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP [FAIL] System.Net.Sockets.SocketException : Either the application has not called WSAStartup, or WSAStartup failed Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.NameResolution\src\System\Net\DNS.cs(186,0): at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.NameResolution\src\System\Net\DNS.cs(109,0): at System.Net.Dns.GetHostByAddress(String address) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.NameResolution\tests\FunctionalTests\GetHostByAddressTest.cs(24,0): at System.Net.NameResolution.Tests.GetHostByAddressTest.DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP() ``` cc: @ericeil +11988 area-System.Net Adding missing members for System.Uri and friends fixes #11647 Adding back members from System.Uri, System.UriParser and friends. cc: @weshaggard @stephentoub @danmosemsft +11990 area-System.Collections Proposal: Stack and Queue should implement ICollection ## Background `Stack` and `Queue` currently implement `ICollection` and `IReadOnlyCollection`, but not the generic `ICollection` interface. This means that they miss out on many valuable LINQ optimizations for such collections; [here](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/SequenceEqual.cs#L37) [are](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/AppendPrepend.cs#L192) a couple of examples. In fact, these optimizations are not even limited to LINQ; for example, making a copy of a Queue via ``` cs var queue = GetQueueOf(); var copy = new Queue(queue); ``` will be artificially slow, since [Queue's constructor](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/Queue.cs#L56-L63) calls `EnumerableHelpers.ToArray`, which goes down a slow path if the input is not an ICollection. Similarly, [here](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Collections/Generic/List.cs#L705) is another such optimization in `List.InsertRange`. ## Proposal We should explicitly implement the `ICollection` interface on both of these classes. For any method that doesn't have very clear semantics, we can simply throw a `NotSupportedException` just like arrays do for certain `IList` methods. ``` cs namespace System.Collections.Generic { public class Stack : ICollection, IEnumerable, ICollection, IReadOnlyCollection { bool ICollection.IsReadOnly { get; } void ICollection.Add(T item); bool ICollection.Remove(T item); } public class Queue : ICollection, IEnumerable, ICollection, IReadOnlyCollection { bool ICollection.IsReadOnly { get; } void ICollection.Add(T item); bool ICollection.Remove(T item); } } ``` Some `ICollection` methods like `Count` and `CopyTo` are excluded since the collections already contain implementations of those methods. ### `Add` implementations `Add` should just call `Enqueue` for Queue, but it is somewhat vague for Stack (the caller is probably assuming that the item is being added to the _end_ of the collection). I suggest we throw a `NotSupportedException` rather than calling `Push`. @justinvp @terrajobst +11991 area-System.Net Expect: 100-Continue header auto-added on HttpClient request on Linux Hi, we have an issue whereby an 'Expect: 100-Continue' header is being automatically added to all HttpClient POST/PUT requests when our .NET Core web api service is deployed to a linux environment (specifically Ubuntu 14.04/16.04). The header is not added when the service is run in a windows environment, both from within Visual Studio and directly in the console using dotnet run. Logging of the headers of the HttpClient in the service prior to calling SendAsync shows that the Expect header is not set, however logging of the HTTP requests on the server using tcpdump show that it is being set. I have tried to remove the headers via, client.DefaultRequestHeaders.ExpectContinue = false; and client.DefaultRequestHeaders.Expect.Clear(); however they are still added. Our issue is that our service must pass through a squid proxy whose version does not support the Expect header. We do not have control over this proxy and it's unlikely we will be able to update the version in the near future. Cheers, Luke +11992 area-System.Linq Expression trees for half-lifted conversion operators do not work "There is a change in the way that Roslyn handles expression trees versus the native compiler. For the sample program below, the native compiler generates incorrect code for the initialization of ef2. The initialization executes without problems, building an incorrect expression tree. But compiling and running the resulting expression tree with a null argument fails (an exception is thrown at the line marked (2)). Roslyn attempts to produce the correct expression tree for ef2. However, a bug in the expression tree libraries (529431 in the previous tracking system) causes an exception to be thrown when initializing ef2. The program cannot even run as far as the code generated by the native compiler. Alex has marked the expression tree library bug as one that will not be fixed in the release for which the bug was filed, so I'm opening the issure here in hopes it will not get lost. ``` cs using System; using System.Linq.Expressions; struct Struct1 { } struct Struct2 { public static explicit operator Struct2?(Struct1 s2) { return new Struct2(); } } public class Test { static void Main() { Func f1 = (x) => (Struct2?)x; f1(null); Expression> ef2 = (x) => (Struct2?)x; // (1) Roslyn: fails at runtime Func f2 = ef2.Compile(); f2(null); // (2) Native: fails at runtime } } ``` --- Here is a take on this from another internal thread Consider a user-defined conversion from S1 to S2? The compiler considers this to give rise to a lifted conversion from S1? To S2? There are three bugs here 1. This rule is missing from the C# language specification 2. The native C# compiler generates different-behaving code for this lifted conversion directly compared to this conversion in a compiled expression tree 3. The expression tree API has no way to express this half-lifted conversion. ``` cs using System; using System.Linq; using System.Linq.Expressions; using System.Reflection; struct Struct1 { } struct Struct2 { public static implicit operator Struct2?(Struct1 s2) { return new Struct2(); } } static class NullableExtensions { public static string ToStringOrNull(this T? n) where T : struct { return n.HasValue ? n.Value.ToString() : ""null""; } } public class Test { static void Main() { // Bug related to Roslyn bug 12706 // The native compiler generates different-behaving code for a lambda // expression, and an expression tree for that lambda expression, compiled. Struct1? n = null; // the following prints ""null"" Func f1 = x => x; Console.WriteLine(""first test""); Console.WriteLine(f1(n).ToStringOrNull()); // the following throws System.InvalidOperationException: Nullable object must have a value. Expression> testExpr = x => x; Func f2 = testExpr.Compile(); Console.WriteLine(""second test""); Console.WriteLine(f2(n).ToStringOrNull()); } static void Test2() { // this is how one would like to generate code for the lambda expression, // but a bug in the expression tree library prevents this from working. var x = Expression.Parameter(typeof(Struct1?), ""x""); MethodInfo opImplicit = typeof(Struct2).GetMethod(""op_Implicit""); // the following throws System.InvalidOperationException: The operands for operator 'Convert' do not match the parameters of method 'op_Implicit'. var result = Expression.Convert(x, typeof(Struct2?), opImplicit); Expression> testExpr = Expression.Lambda>(result, x); } } ``` " +11994 area-System.Linq VariableBinder in lambda compiler does not analyze CatchBlock.Filter "Repro: ``` csharp var e = Expression.Lambda( Expression.TryCatch( Expression.Empty(), Expression.Catch( Expression.Parameter(typeof(Expression), ""ex""), Expression.Empty(), Expression.Parameter(typeof(bool), ""???"") ) ) ); e.Compile(); ``` This gets as far as `ILGen` (failing there for DynamicMethod emit due to a limitation in System.Reflection.Emit that's tracked to be lifted at some point, see https://github.com/dotnet/corefx/issues/3838). The culprit is the lack of recursion into the `Filter` child node of `CatchBlock` in `VariableBinder`. " +11996 area-System.Net Add System.Net.WebProxy to corefx Fixes https://github.com/dotnet/corefx/issues/11884 cc: @davidsh, @cipop, @ericeil, @karelz +11997 area-Infrastructure Update CoreClr, CoreFx, External, ProjectNTfs to beta-24529-03, beta-24530-01, beta-24523-00, beta-24530-00, respectively (master) /cc @dotnet/corefx-contrib +11998 area-System.Diagnostics Don't raise Exited events when Process.EnableRaisingEvents is false `Process.HasExited` raises Exited events even when `EnableRaisingEvents` is false. Added a `_watchForExit` check before raising the event, which is the same as in `WaitForExit`. Also added separate EnableRaisingEvents test for `HasExited` based on existing TestEnableRaiseEvents test. +12000 area-System.Xml Evaluate dependency on S.S.Permissions and S.CodeDOM from System.Private.Xml Not sure if there is already a tracking issue for this or not yet (if there is one please feel free to close). There is a ton of stubbed out APIs at https://github.com/dotnet/corefx/tree/master/src/System.Private.Xml/src/Workarounds which we need to eliminate and either remove by eliminating the dependencies or move to building against netstandard17 and using the new types we have exposed. cc @danmosemsft @krwq +12001 area-Meta VisualStudio takes too long at design time. Way, way, waaaayyyy too long. For some reason I don't understand, commit 5c2c440 is the latest point in history where I can open projects in VisualStudio in a reasonable time frame. And I don't mean 30s-1minute like I've seen some people muttering about; my times are well over 10 minutes, on at least two projects (System.Linq.Parallel and System.Net.Sockets). Strangely, I've never opened or built the project referenced in the subsequent commit (System.Net.Mime), and I'm on Windows, too (aa3bea0 just adds test rids for Linux derivatives). Can work around easily enough. +12002 area-System.Globalization DateTimeFormatInfoGetInstance test failing in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/544/consoleText ``` System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance(provider: null, expected: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... }) [FAIL] Assert.Equal() Failure Expected: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... } Actual: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... } Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Globalization\tests\DateTimeFormatInfo\DateTimeFormatInfoGetInstance.cs(52,0): at System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance(IFormatProvider provider, DateTimeFormatInfo expected) ``` " +12003 area-System.Net Upgrade System.Net.Requests to netstandard1.7 cc: @ericstj, @weshaggard +12005 area-System.Xml How can I validate the xml file against XSD . I am unable to find the required namespace which are available in ASP5 but not in core. Most of the elements are unavailable to the .net core. +12006 area-System.IO Add override CopyToAsync to BufferedStream fix #11572 add override CopyToAsync to BufferedStream and see if there are optimizations. +12007 area-System.Runtime "Introduce ""virtual reference"" concept" "There is `WeakReference` class. It is a special case of concept which could be called ""virtual reference"". Introduce `VirtualReference` abstract class (signature is exact of `WeakReference`) ``` C# public abstract class VirtualReference where T : class { public abstract bool TryGetTarget(out T target); } ``` and make WeakReference implementation of this abstract class. ``` C# public sealed class WeakReference : VirtualReference where T : class { public override bool TryGetTarget(out T target) { ... } } ``` This would generalize and provide common API for many kinds of object proxies, interop scenarios, reconstructable caches, lazy-allocated objects and so on. " +12009 area-Infrastructure Update BuildTools to 00822-03 /cc @weshaggard @hughbe +12013 area-Meta Tracking targeting uap101aot [See the discussion in #12004 for more context] Below is the list of libraries that explicitly target netcore50aot. It's a helpful list to look out as these libs are likely going to need to target uap101aot explicitly. Note, however, that it's not **the** list of libs that we need to work on and do the changes to explicitly target uap10.1. Some of the libs in this list will not have any change so it's OK to leave them as is. And there might be other libs that requires support from the CoreLib layer, which will be an addition to this list. Still, this is a list to start with - [x] System.Collections - [ ] System.Diagnostics.Tools - [ ] System.Diagnostics.Tracing - [x] ~~System.Globalization.Calendars~~ (This package is a pure façade. no need to update it for uap10.1) - [x] System.Globalization - [x] System.IO - [x] System.Reflection - [x] System.Reflection.Primitives - [x] System.Resources.ResourceManager - [x] System.Runtime.Handles - [ ] System.Runtime.InteropServices - [x] System.Runtime - [x] ~~System.Text.Encoding.Extensions~~ (This package is a pure façade. no need to update it for uap10.1) - [x] ~~System.Text.Encoding~~ (This package is a pure façade. no need to update it for uap10.1) - [x] System.Threading.Tasks - [x] System.Threading.Timer - [ ] System.Diagnostics.Debug - [ ] System.Runtime.Extensions - [x] System.Private.Uri - [x] ~~System.AppContext~~ (This library doesn't have anything new. no need to cross compile it for uap10.1) - [x] ~~System.Diagnostics.Contracts~~ (This package is a pure façade. no need to update it for uap10.1) - [x] System.Diagnostics.StackTrace - [ ] System.Dynamic.Runtime - [ ] System.Linq.Expressions - [x] ~~System.Private.DataContractSerialization~~ (This library doesn't have anything new. no need to cross compile it for uap10.1) - [x] ~~System.Reflection.DispatchProxy~~ (This package is a pure façade for netcore50aot. no need to update it for uap10.1) - [x] System.Reflection.Extensions - [x] System.Reflection.TypeExtensions - [x] ~~System.Runtime.InteropServices.RuntimeInformation~~ (This library doesn't have anything new. no need to cross compile it for uap10.1) - [x] System.Runtime.InteropServices.WindowsRuntime - [x] System.Runtime.Serialization.Primitives - [ ] System.Threading - [ ] System.Xml.XmlSerializer - [ ] System.IO.IsolatedStorage +12015 area-System.Net ProxyAuth test fails on *Nix outerloop runs PR #11985 added a new test which is failing on *Nix (part of OuterLoop): `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.UseCallback_HaveNoCredsAndUseAuthenticatedCustomProxyAndPostToSecureServer_ProxyAuthenticationRequiredStatusCode` ``` System.Net.Http.CurlException : Failure when receiving data from the peer ``` +12016 area-System.Net Disable newly added proxyauth test on *Nix PR #11985 added a new test which is failing on *Nix (part of OuterLoop): System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.UseCallback_HaveNoCredsAndUseAuthenticatedCustomProxyAndPostToSecureServer_ProxyAuthenticationRequiredStatusCode System.Net.Http.CurlException : Failure when receiving data from the peer Disabling this outerloop test for *Nix in [master]. Tracking this as #12015 +12017 area-System.Xml Add System.Xml ref assembly Addresses issue https://github.com/dotnet/corefx/issues/11888 All new System.Xml and System.Xml.\* APIs are now added to System.Xml.ReaderWriter ref assembly. All other Xml contracts have also been updated. cc: @danmosemsft cc: @ericstj @weshaggard @karajas https://github.com/dotnet/corefx/commit/3a9782afdf90c457155c2513321831578a8d6443 contains changes to fix the default TestTFM conditions in `dir.props` +12019 area-System.Net System.Net.Sockets - Substitute appropriate exceptions for some asserts. Mock/test support objects, and not tests themselves. +12023 area-System.Net Port fix for test failure: System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest/BasicTest_AccessInstanceProperties_NoExceptions_Linux @mellinoe can you please port https://github.com/dotnet/corefx/pull/11863 to 1.1? We had 2 hits in 1.1 test run: https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160923.02/workItem/System.Net.NetworkInformation.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest~2FBasicTest_AccessInstanceProperties_NoExceptions_Linux +12024 area-System.Xml SameInstanceXslTransformReader and TC_SchemaSet_AllowXmlAttributes tests failed in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/573/consoleText ``` System.Xml.Tests.SameInstanceXslTransformReader.proc2 [SKIP] Resolving of External URIs is no longer allowed System.Xml.Tests.SameInstanceXslTransformWriter.proc2 [SKIP] Resolving of External URIs is no longer allowed System.Xml.XPath.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Xml.XPath.Tests\System.Xml.XPath.Tests.dll System.Xml.Tests.TC_SchemaSet_AllowXmlAttributes.v1(xmlFile: ""v1-1.xml"", xsdFile: ""v1.xsd"", allowXmlAttributes: True, expectedWarningCount: 0, expectedErrorCount: 0, expectedSchemaSetCount: 2) [FAIL] Assert.Equal() Failure Expected: 2 Actual: 0 Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_AllowXmlAttributes.cs(282,0): at System.Xml.Tests.TC_SchemaSet_AllowXmlAttributes.v1(String xmlFile, String xsdFile, Boolean allowXmlAttributes, Int32 expectedWarningCount, Int32 expectedErrorCount, Int32 expectedSchemaSetCount) System.Xml.Tests.TC_SchemaSet_AllowXmlAttributes.v1(xmlFile: ""v1-1.xml"", xsdFile: ""v1.xsd"", allowXmlAttributes: False, expectedWarningCount: 0, expectedErrorCount: 1, expectedSchemaSetCount: 2) [FAIL] Assert.Equal() Failure Expected: 2 Actual: 1 Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_AllowXmlAttributes.cs(282,0): at System.Xml.Tests.TC_SchemaSet_AllowXmlAttributes.v1(String xmlFile, String xsdFile, Boolean allowXmlAttributes, Int32 expectedWarningCount, Int32 expectedErrorCount, Int32 expectedSchemaSetCount) ``` " +12025 area-System.Numerics Test failure: System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests Opened on behalf of @karelz The test `System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests` has failed. `System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown.` Stack Trace: ``` at System.Numerics.BigInteger..ctor(UInt32[] value, Boolean negative) at System.Numerics.BigInteger.op_LeftShift(BigInteger value, Int32 shift) at System.Numerics.Tests.cast_fromTest.DoubleExplicitCastFromLargeBigIntegerTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) at System.Numerics.Tests.cast_fromTest.RunDoubleExplicitCastFromLargeBigIntegerTests() ``` Failing configurations: - Centos.71.Amd64 - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Debug https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160923.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.cast_fromTest~2FRunDoubleExplicitCastFromLargeBigIntegerTests +12028 area-Meta Using latest packages with NETCoreApp1.0 We need to port some of the automatic harvesting infrastructure to 1.1, otherwise we'll ship refs with incremented assembly versions that aren't satisfied by the impls in shared framework 1.0. Specifically: https://github.com/dotnet/corefx/pull/11871 When doing this I need to do closure validation so that I don't cause the same ripple effect that we had in master where we put out one bad package build with refs in torn state (built against LKG with higher versioned refs). I don't expect this to be a problem in 1.1 since we haven't upgraded ref dependencies (happened in dev/api), but I want to make sure we do the validation up front to prevent any cascading issues. /cc @weshaggard +12029 area-System.Net Failing assert in SystemUnicastIPAddressInformation.PrefixLengthToSubnetMask "@geoffkizer is hitting the following assert in a bunch of tests when building/running corefx tests locally on Windows: ``` xml c__DisplayClass46_1.<b__1>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 224\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1()\r\n at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction)\r\n at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code)\r\n at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 208\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance)\r\n at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 173\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestInvoker`1.b__45_0()\r\n at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 107\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code)\r\n at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestRunner.cs:line 67\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator)\r\n at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 0\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code)\r\n at Xunit.Sdk.TestRunner`1.d__43.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestRunner.cs:line 0\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestRunner`1.RunAsync()\r\n at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCaseRunner.cs:line 82\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestCaseRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestMethodRunner.cs:line 45\r\n at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 136\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync()\r\n at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 106\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestMethodRunner`1.RunAsync()\r\n at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 205\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync()\r\n at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 163\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestClassRunner`1.RunAsync()\r\n at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 130\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync()\r\n at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 101\r\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\r\n at Xunit.Sdk.TestCollectionRunner`1.RunAsync()\r\n at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestAssemblyRunner.cs:line 179\r\n at System.Threading.Tasks.Task`1.InnerInvoke()\r\n at System.Threading.Tasks.Task.Execute()\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\r\n at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)\r\n at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 107\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 89\r\n at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) in C:\BuildAgent\work\cb37e9acf085d108\src\common\XunitWorkerThread.cs:line 37\r\n at System.Threading.Tasks.Task.Execute()\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\r\n at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)\r\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)]]> ``` cc: @cipop, @davidsh, @mellinoe " +12031 area-System.Net Move recently added WebClient tests to outerloop I saw these fail with connectivity issues today; moving to outer loop with other such networking tests. +12032 area-System.Collections Would it be possible to shrink the field size of LinkedList? Noticed that 0e62a60 added a new field to `LinkedList`, `_siInfo`, for serialization. Since that and SyncRoot are rarely used, perhaps they can be combined into a `StrongBox` to shrink the size of LinkedList. +12033 area-System.Collections Enumerable.Contains ICollection optimization should go in a different overload Here's the current source for `Enumerable.Contains`: ``` cs public static bool Contains(this IEnumerable source, TSource value) { ICollection collection = source as ICollection; if (collection != null) { return collection.Contains(value); } return Contains(source, value, null); } public static bool Contains(this IEnumerable source, TSource value, IEqualityComparer comparer) { if (comparer == null) { comparer = EqualityComparer.Default; } if (source == null) { throw Error.ArgumentNull(nameof(source)); } foreach (TSource element in source) { if (comparer.Equals(element, value)) { return true; } } return false; } ``` as you can see, in the comparer-less overload, it checks if the source implements ICollection first and then calls `Contains` on that collection if so. However, this is not done in the overload that doesn't accept a comparer. We may want to consider instead checking for ref equality to `EqualityComaprer.Default` in the other overload, and then applying the ICollection optimizaion. This will potentially make code that calls `Contains` with a comparer, i.e. a custom data structure that accepts a comparer in its constructor, faster. +12034 area-Meta Create System.Spatial types for SQL-Independent geography code It's been about 8 years since Spatial support was added to SQL Server. At the time, .NET was not as far along as it is today, and was not open source. The team created a SQL-dependent version of the Geography classes, which has created [situations this this at hundreds of companies](http://stackoverflow.com/questions/27343024/using-sql-server-geography-in-c-sharp-entities-without-referencing-entity-framew). Now that we have .NET Core, Roslyn, and a bunch of other new, amazing technologies in .NET... it might be time to give it another go and see if we can create a vanilla set of `System.Spatial` types that the Entity Framework, OData, and other spatial libraries can inherit from. Since DbGeography types [aren't even really on the EFCore schedule yet](https://github.com/aspnet/EntityFramework/wiki/Roadmap), this is the perfect time to get something spun up so that EFCore can leverage these types when the time comes. +12035 area-System.IO Add negative tests for FileStream Begin/End "Adds negative tests for Begin/End, removes unnecessary block for `\\.\` paths. (The block for `\\.\` paths fulfills a need that predates our supported Windows OSes. You cannot inadvertently mess up ""raw"" drives. In addition we currently allow `\\?\` which is another form of device path access.) " +12036 area-Meta Add documentation guidelines for adding new APIs @ericstj @stephentoub @joperezr can you guys please review to see if I got all the details? @danmosemsft @karelz could you guys please dogfood these instructions to see if they help enable you to accomplish the goal? +12037 area-System.Net Investigate overriding SslStream.CopyToAsync NetworkStream doesn't override CopyToAsync, instead inheriting the base implementation that calls ReadAsync/WriteAsync in a loop. There are likely some optimizations that could be done to improve efficiency, avoiding allocations, avoiding repeated pinning/unpinning, etc. +12038 area-System.Net Add support for RemoteCertificateValidationCallback with ClientWebSocket There is no way of overriding the validation of server certificates on an SslStream utilised by ClientWebSocket. Could this be exposed through ClientWebSocketOptions? _EDIT 3/5/2018 by @stephentoub. Added proposal:_ ```C# public sealed class ClientWebSocketOptions { public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } ... } ``` +12039 area-System.Diagnostics Proposal: Add Task-based Run API for System.Diagnostics.Process The `Exited` event API is cumbersome for 99% of the way I use processes (run external command, get output when exited). I end up writing a Task-based wrapper every time. It would be great if we could just add an API for that. +12041 area-System.Net Fix NoSocketsReuseUnicastPortSupport tests The NoSocketsReuseUnicastPortSupport tests were failing on Windows Server 2012 R2 in the CI runs because we thought the feature was not present. It was only introduced in Windows 10. However, it was later backported as a serving fix to both Windows 8.1 (Windows Server 2012 R2) and Windows 8 (Windows Server 2012). It is not possible to detect in the CI tests if a servicing patch is installed. So, this PR adjusts the capability detection to return a null value (instead of true or false) to indicate this uncertainty and thus the tests are skipped in that case. Fixes #11088 +12042 area-System.Linq Optimize Enumerable.Cast calls followed by ToArray or ToList, refactor Count This PR contains 3 changes: - Segregate parts of `Enumerable.Count` so it is possible to call `Count` from an IIListProvider w/o going into an infinite loop. This is useful for iterators (like this one) where we can optimize `ToArray` or `ToList` but not `Count`. - Optimize the iterator returned by `Cast` for non-generic ICollections; in `ToArray` and `ToList` we can preallocate an array before enumerating the items. Common BCL containers such as List/Queue/Array/etc. implement the non-generic interface, so the optimizations should benefit a lot of code. - GetCount can't be optimized since just returning the `.Count` of the source collection wouldn't actually verify that all of the elements in it were of type TResult. This isn't a problem for `ToArray` / `ToList` however, since we have to go through the entire collection anyway. - Add extensive testing for the changes, including regression tests to make sure that `Skip`, `ElementAt`, `Last`, etc. aren't optimized. @stephentoub, @VSadov, @JonHanna +12046 area-System.Security Add remaining missing members of System.Security namespace (not child namespaces) Tests are not passing at all on my box yet due to unrelated errors which I will follow up with offline if they don't occur on CI. Also updated the baselines with /p:baselineallapicompaterror=true, which shows up as a large diff. Issues: #11122 and #11115 @weshaggard +12047 area-System.Collections Add new Queue and Stack APIs Fixes #4316 Also, adding APIs to .NET core was something of a soul destroying experience for me - very confusing as there are so many things to change and define and add. #11689 was helpful once I discovered it, but I ended up changing things without really understanding what the impact was. /cc @benadams @Page-Not-Found @weshaggard @stephentoub @ianhays +12048 area-System.Net ReceiveMessageFromV6BoundToAnyV4_NotReceived failed in CI on CentOS ``` System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromV6BoundToAnyV4_NotReceived [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: typeof(Xunit.Sdk.ThrowsException): Assert.Throws() Failure Expected: typeof(System.Exception) Actual: (No exception was thrown) Stack Trace: at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFrom_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) ``` ``` +12049 area-System.Net Fix new ClientWebSocketOptions tests on Windows 7 cc: @davidsh +12050 area-System.Globalization StringMiscTests.CasingTest test failing on Windows 7 "``` System.Tests.StringMiscTests.CasingTest(lowerForm: ""??"", upperForm: ""??"", cultureName: ""en-US"") [FAIL] Assert.Equal() Failure  (pos 1) Expected: ?? Actual: ??  (pos 1) Stack Trace: at System.Tests.StringMiscTests.CasingTest(String lowerForm, String upperForm, String cultureName) ``` " +12051 area-System.Globalization CompareInfoMiscTests.SortKeyTest test failing on Windows 7 "``` System.Globalization.Tests.CompareInfoMiscTests.SortKeyTest(compareInfo: CompareInfo - , string1: ""'"", string2: ""'"", options: IgnoreCase, IgnoreKanaType, IgnoreWidth, expected: 0) [FAIL] Assert.Equal() Failure Expected: 0 Actual: -1 Stack Trace: at System.Globalization.Tests.CompareInfoMiscTests.SortKeyTest(CompareInfo compareInfo, String string1, String string2, CompareOptions options, Int32 expected) ``` " +12052 area-System.Security Four DSA tests failing on Windows 7 ``` System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported VoidMainWithExitCodeApp -> d:\j\workspace\outerloop_win---b88c6526\bin\Windows_NT.AnyCPU.Debug\VoidMainWithExitCodeApp\netcoreapp1.1\VoidMainWithExitCodeApp.exe Stack Trace: at System.Security.Cryptography.CngKey.InitializeKeyProperties(SafeNCryptKeyHandle keyHandle, CngKeyCreationParameters creationParameters) at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters) at Internal.Cryptography.CngAlgorithmCore.GetOrGenerateKey(Int32 keySize, CngAlgorithm algorithm) at System.Security.Cryptography.DSACng.get_Key() at System.Security.Cryptography.DSACng.ExportKeyBlob(Boolean includePrivateParameters) at System.Security.Cryptography.DSACng.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey() System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests.TestExplicitCurvesSignVerify [SKIP] System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKeyLite.SetKeyLength(SafeNCryptKeyHandle keyHandle, Int32 keySize) at System.Security.Cryptography.CngKeyLite.GenerateNewExportableKey(String algorithm, Int32 keySize) at System.Security.Cryptography.DSAImplementation.DSACng.GetDuplicatedKeyHandle() at System.Security.Cryptography.DSAImplementation.DSACng.ExportKeyBlob(Boolean includePrivateParameters) at System.Security.Cryptography.DSAImplementation.DSACng.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey() System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataExplicit2048 [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The parameter is incorrect Stack Trace: at System.Security.Cryptography.CngKeyLite.ImportKeyBlob(String blobType, Byte[] keyBlob) at System.Security.Cryptography.DSAImplementation.DSACng.ImportKeyBlob(Byte[] rsaBlob, Boolean includePrivate) at System.Security.Cryptography.DSAImplementation.DSACng.ImportParameters(DSAParameters parameters) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerify(Byte[] data, String hashAlgorithmName, DSAParameters dsaParameters, Int32 expectedSignatureLength) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.SignAndVerifyDataExplicit2048() System.Security.Cryptography.Dsa.Tests.DSASignVerify.InvalidKeySize_DoesNotInvalidateKey [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The requested operation is not supported Stack Trace: at System.Security.Cryptography.CngKeyLite.SetKeyLength(SafeNCryptKeyHandle keyHandle, Int32 keySize) at System.Security.Cryptography.CngKeyLite.GenerateNewExportableKey(String algorithm, Int32 keySize) at System.Security.Cryptography.DSAImplementation.DSACng.GetDuplicatedKeyHandle() at System.Security.Cryptography.DSAImplementation.DSACng.ComputeQLength() at System.Security.Cryptography.DSAImplementation.DSACng.AdjustHashSizeIfNecessary(Byte[] hash) at System.Security.Cryptography.DSAImplementation.DSACng.CreateSignature(Byte[] hash) at System.Security.Cryptography.DSA.SignData(Byte[] data, Int32 offset, Int32 count, HashAlgorithmName hashAlgorithm) at System.Security.Cryptography.DSA.SignData(Byte[] data, HashAlgorithmName hashAlgorithm) at System.Security.Cryptography.Dsa.Tests.DSASignVerify.InvalidKeySize_DoesNotInvalidateKey() ``` +12053 area-Meta Question: resolving NETStandard libraries to framework assemblies When installing the package `NETStandard.Library` into a .Net Framework project (for example net46) - Some packages install nothing. I saw `TypeForwardedToAttribute` for binary capability. - Some packages set a reference to assembly in GAC. This is by using `frameworkAssembly` element of nuget. - Some packages **do install an assembly**, but it already exists in the full Framework, such as `System.IO.Compression` and `System.Net.Http`. Why can't these be treated as well as the above-mentioned type? And another question for type resolving: IL records the definition assembly for every type. If a type is moved into another assembly, a `TypeForwardedToAttrubute` can be used for binary capability. But for some assemblies, for example `System.ObjectModel`, I haven't see it in GAC. How can `[System.ObjectModel]System.ComponentModel.INotifyPropertyChanged` be resolved to `[System]System.ComponentModel.INotifyPropertyChanged`? **Edited**: - For `System.IO.Compression`, I see a `runtime` folder in the package. It seems that assembly installed to `net46` is the win runtime. But why only install a GAC assembly in `net45`? - For `System.Console`, I see an assembly full of `TypeForwardedToAttrubute`. But as said above, what's are the differences between `System.ObjectModel`? +12055 area-System.Reflection System.Reflection.Emit.DynamicILInfo I rely in my code on this type. Is it planned to include it? Currently in [.NET API Catalog](https://apisof.net/) it's not seem to exist in .NET Standard or .NET Core App. Search for this in this repository does not give any hint. - (Same issue with System.Reflection.MethodBody and Resolve methods on Module type, but I see they are include in .NET Standard 2.0) +12058 area-Infrastructure "Running into ""Could not locate runtime assets for any of the frameworks ..."" frequently" Frequently when I try to build a test project with `/t:BuildAndTest`, I will run into an error message saying ``` Could not locate runtime assets for any of the frameworks .NETCoreApp,Version=1.0 ``` I have tried rebasing and running MSBuild with `/t:RebuildAndTest`, in addition to following the instructions [here](https://github.com/dotnet/corefx/issues/11204#issuecomment-243498131) and running MSBuild on the depproj file. However I still get the same error from MSBuild, and I end up having to run `sync` again (which, AFAIK, is the only thing that fixes this) which takes half an hour and downloads probably a few GB's worth of packages. What causes this error message? Is there a known workaround for it? Thanks. +12059 area-System.Collections Add test coverage for EqualityComparer This is a moderately large PR (750 lines), so it's best to review commit-by-commit. It contains several changes, including: - Add generic & type-specific tests for EqualityComparer - Covers all of the codepaths [here] and a few more, including - byte - IEquatable - Nullable {bytes,ints,enums} - short enums - sbyte enums - int enums - long enums - structs that don't override Equals/GetHashCode - regular, non-equatable objects - Ensure left-hand `Equals` is called first for 2 non-null iputs - Move some enum types from `EnumTests` to a test folder in Common, so other tests can use them - Remove `IntEnum`, `UIntEnum` types introduced in #11074 in favor of @hughbe's types - Rename some things accordingly, `Long` -> `Int64`, `Int` -> `Int32` - Add a few more interesting test cases to the generic specializations, incl. `IntPtr?`, `UIntPtr?`, equatable types - Renamed test classes from `...ComparerTests` to `...ComparersTests` - Prefix Comparer generic tests with `Comparer_` and EqualityComparer generic tests with `EqualityComparer_` to avoid name clashes and get better stack traces The bulk of the PR is in `EqualityComparer.Tests.cs` and `EqualityComparer.Generic.Tests.cs`. /cc @stephentoub, @hughbe +12060 area-System.Net where are 'Close()' and 'Handle' on System.Net.Sockets.Socket ? I'm porting my network class to .net core, but I can't find **Socket.Close() & Socket.Handle**. where are they? are they not necessary on .net core socket? +12061 area-System.Net Minor change to avoid an allocation in Uri We can avoid allocating a substring and just fix directly on `relativeStr`. @CIPop @davidsh +12062 area-System.Collections Make Queue.Peek inline We can trivially make Queue.Peek inline by moving the throw code into a new method. JIT will not inline this as per dotnet/coreclr#6103. [Test code, before/after asm](https://gist.github.com/jamesqo/6faf5c7c7a6237f74cbd97d485a3fcd1) @ianhays +12063 area-System.Net Enable System.Net.WebSockets.Client tests for UWP These changes allow the WebSockets.Client tests to run for netcore50 (UWP) target. I removed unneeded packages from project.json which prevented the tests from working on UWP. UWP doesn't have System.Net.Security, for example. But it doesn't need that package in the tests project anyways. There are failures in the tests (ClientWebSocketOptions) when they run but I will follow up separately with that. +12064 area-System.Security Support for Rijndael encryption I need to port some existing code that uses Rijndeal encryption to .net core. Unfortunately, Rijndeal encryption (RijndaelManaged class) with a blocksize key of 256 bit is not available for .net core. Any idea's when and if this will be made available? +12065 area-Serialization Add System.Json tests I know this is kinda a legacy library, but worth adding some tests Also fixes a bad param name, and removes some dead code (we already check for a null parameter before calling a method). Also increases CC to 99.1% and 92.3% (the rest I think is dead code, but I don't know whether more features are coming) +12066 area-System.IO Add password to ZipArchive can we make that happen? +12068 area-System.Data Cannot connect to SQL Server on OSX "Hi, I am trying to port a web api that acts as a front-end for an SQL Server database. The web api works fine under Windows and when deployed to IIS, but gives this error when ran from within OSX and Visual Studio Core. ``` Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a conn ection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is co nfigured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateExcept ion: One or more errors occurred. (Device not configured) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: Devi ce not configured at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SNI.SNITCPHandle.d__22.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait(TimeSpan timeout) at System.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, Int64 timerExpire, Object callbackObject, Boolean para llel) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Obj ect providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean a pplyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolG roupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnection Options options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInt ernal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnecti onInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolea n allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOp tions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConne ctionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connecti onFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext() at System.Linq.Enumerable.First[TSource](IEnumerable`1 source) at lambda_method(Closure , QueryContext ) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass19_1`1.b__1(QueryContext qc) at System.Linq.Queryable.First[TSource](IQueryable`1 source) at sql_server_ef_connector.Program.Main(String[] args) ``` The `web.config` connection string was ``` connectionString=""data source=A\B;initial catalog=C;persist security info=True;user id=X;password=Y;MultipleActiveResultSets=True;App=EntityFramework"" providerName=""System.Data.SqlClient"" ``` which is then given to method `UseSQLServer` in the form: ``` Server=A\B;Database=C;user id=X;password=Y; ``` The project compiles fine, but crashes at the first query. Have I done anything terribly wrong or did I run into something that is not working properly? " +12069 area-System.Net Add missing members to WebRequest/WebResponse Adds the missing members to WebRequest/WebResponse, and switches some that were abstract to instead be virtual, to match desktop. (I believe @tijoytom was adding some of these as part of his updates to HttpWebRequest/Response, but I'm adding them all now to unblock @geoffkizer's work on FtpWebRequest/Response and mine on FileWebRequest/Response.) cc: @davidsh, @cipop, @ericeil, @geoffkizer, @tijoytom, @karelz +12070 area-System.Runtime Sys.Runtime.Int.WindowsRuntime broken on Android We've been getting [reports](https://github.com/Reactive-Extensions/Rx.NET/issues/261) that the `System.Runtime.InteropServices.WindowsRuntime` package may be broken on Android. Looking at the package, it has a blank impl for `xamarinios1` but not for the other Xamarin types. As Xamarin supports NET Standard 1.6, it's pulling in the `netstandard1.3` impl. This seems to be causing an issue on build: ``` Error CS1703 Multiple assemblies with equivalent identity have been imported: 'C:\Projects\NS\Kanzi.Mobile\packages\System.Runtime.InteropServices.WindowsRuntime.4.0.1\lib\netstandard1.3\System.Runtime.InteropServices.WindowsRuntime.dll' and 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\System.Runtime.InteropServices.WindowsRuntime.dll'. Remove one of the duplicate references. Mobile.Core.Android C:\Projects\NS\Kanzi.Mobile\Mobile.Core.Android\CSC 1 Active ``` /cc @ericstj +12071 area-System.Security Port System.Security.Cryptography Base64 transform classes Per issue https://github.com/dotnet/corefx/issues/9992 There were not existing tests in desktop, so I added some basic tests from RFC 4648 and some whitespace tests. Also needed to convert S.S.C.Encoding project to netstandard1.7 +12072 area-System.Data System.Data.SqlClient.SqlConnection does not roll back open transaction on dispose "SQL Server version is 2014 if it matters. Trivial reproduction causes timeout unless ;pooling=false is appended to the connection string. ``` using System; using System.Data; using System.Data.SqlClient; /* CREATE TABLE Scratch (ID INTEGER NOT NULL); INSERT INTO Scratch VALUES (1); */ namespace ConsoleApplication { public class Program { public static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine(""Usage: dotnet disposeconnection.dll connectionstring""); return ; } using (var c1 = new SqlConnection(args[0])) { c1.Open(); using (var c2 = new SqlConnection(args[0])) { c2.Open(); Exec(c2, ""BEGIN TRANSACTION;""); Exec(c2, ""UPDATE Scratch SET ID = 2;""); } Exec(c1, ""UPDATE Scratch SET ID=3;""); } } private static void Exec(SqlConnection c, string s) { using (var m = c.CreateCommand()) { m.CommandText = s; m.ExecuteNonQuery(); } } } } ``` We got here through a much larger chunk of code handling thrown exceptions. We have no idea what the connection state is and it might have an executing data reader on it so we have no good way of passing the rollback command ourselves. " +12073 area-Infrastructure Update CoreFx to preview1-24526-02 (release/1.1.0) /cc @dotnet/corefx-contrib +12074 area-Meta Remove all KeepAllProjectReferences Currently some projects are using KeepAllProjectReferences in their csproj. This needs to be cleaned out as it might hide some packaging issues in test passes. +12075 area-Infrastructure Error running `msbuild /T:BuildAndTest /P:Coverage=true` ``` cd src/System.Collections.NonGeneric/tests msbuild /T:BuildAndTest /P:Coverage=true ``` ![error](https://cloud.githubusercontent.com/assets/1275900/18844920/5023f3f6-8417-11e6-900a-8222d4db4614.png) Tools are already initialized, also happens with System.Collections.Specialized, and I haven't checked others +12076 area-Infrastructure Harvest reference assemblies from last shipped packages As in master we need to harvest assembly references from the previous shipped packages. This is essential for a few reasons: 1. Shared framework cannot update its impl versions so any changes to reference assembly version in split packages would result in ref-def mismatch. 2. Master has already moved down and we cannot have v.Next ship lower reference versions than 1.1. Fixes https://github.com/dotnet/corefx/issues/12028 I've also ported the buildtools update that fixes https://github.com/dotnet/buildtools/issues/1064 since it was one commit away and can piggyback on my testing. /cc @weshaggard @chcosta +12077 area-System.Net Ensure NameResolutionPal is initialized by every public entrypoint in System.Net.Dns Fixes #11987. @CIPop @stephentoub +12078 area-System.Data Orderby fails silently -- LINQ **Situation**: This LINQ query will run on a DB table. ``` var query = from x in db.User where x.Active == true select x; var resultList = query.OrderBy(x.SerialNumber, new SerialNumberComparer()) // SerialNumberComparer is IComparer .select(x => x) .ToList(); ``` The `resultList` will contain the data 'ordered by' the standard sort algorithm for that type -- which in this case is String. **Argument**: 1- I understand that the logic / code of `SerialNumberComparer` can not be transferred to the any SQL engine or at least it is not something that universal in all SQL engines. 2- This behavior may be by design in fact I think it is probably by design. 3- With 1 being said, I do not demand any magical thing here, but at least I see this the `OrderBy(...)` extension should through exception or something more appropriate because I think this is not a good idea to just ignore the `new SerialNumberComparer()` argument and continue. 4- Is this specific to the LINQ provider implementation that my ORM implements to expose my database tables to LINQ? Thanks. +12079 area-System.Security Don't invoke virtual property setters inside the base constructor. This is related to the following issue which does not appear to have been fully addressed: https://github.com/dotnet/corefx/pull/6829 We are still seeing the issue in the AuthenticatedAes class. Here is a partial call stack. Feel free to request additional information. 0000004b9864d960 00007ffce4a131e3 Security.Cryptography.AuthenticatedAesCng.set_Mode(System.Security.Cryptography.CipherMode) 0000004b9864d9a0 00007ffce4a1316a System.Security.Cryptography.SymmetricAlgorithm..ctor() [f:\dd\ndp\fxcore\Open\src\System.Security.Cryptography.Primitives\src\System\Security\Cryptography\SymmetricAlgorithm.cs @ 14] 0000004b9864d9d0 00007ffce4a1312b Security.Cryptography.AuthenticatedSymmetricAlgorithm..ctor() 0000004b9864da00 00007ffce4a130ab Security.Cryptography.AuthenticatedAes..ctor() 0000004b9864da30 00007ffce4a12eca Security.Cryptography.AuthenticatedAesCng..ctor(System.Security.Cryptography.CngProvider) 0000004b9864daf0 00007ffce4a12532 Microsoft.Windows.KpsCore.Crypto.Cng.AuthenticatedAes..ctor(Microsoft.Windows.KpsCore.Crypto.AuthenticatedAesMode, System.String) +12083 area-System.Linq Consider checking for IReadOnlyCollection in Enumerable.ToArray It may be useful to check for `IReadOnlyCollection` in `Enumerable.ToArray` so we can presize the array before copying over the elements. Additionally, if source implements `IReadOnlyList` we can avoid the enumerator allocation and make only 1 as opposed to 2 virtual calls per iteration. I do not think we should optimize for read-only collections in other parts of the LINQ codebase, since 1) it would add a lot more complexity and 2) casting to variant interfaces is slow (dotnet/coreclr#603), so enumerables that do not implement these interfaces will pay. However, this particular case may be worthwhile, since it is such a hot codepath and the 2x virtual method calls per iteration will make the tradeoff immeasurable for larger lazy enumerables. This should definitely be considered once the related CoreCLR issue is fixed. This will benefit collections like `Stack` and `Queue` which do not implement `ICollection`. (At least, not until #11990 is accepted/rejected.) +12084 area-System.Net System.Net.NameResolution.Tests occasionally fails in CI "http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/647/consoleFull#126993540579fe3b83-f408-404c-b9e7-9207d232e5fc 14:48:58 Discovering: System.Net.NameResolution.Pal.Tests 14:48:58 Discovered: System.Net.NameResolution.Functional.Tests 14:48:58 Starting: System.Net.NameResolution.Functional.Tests 14:48:58 Discovered: System.Net.NameResolution.Pal.Tests 14:48:58 Starting: System.Net.NameResolution.Pal.Tests 14:48:58 System.Net.NameResolution.Tests.GetHostByAddressTest.DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP [FAIL] 14:48:58 System.Diagnostics.Debug+DebugAssertException : Failed to detect InterNetwork protocol: NotSocket 14:48:58 14:48:58 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 14:48:58 at System.Environment.get_StackTrace() 14:48:58 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 14:48:58 at System.Net.SocketProtocolSupportPal.IsProtocolSupported(AddressFamily af) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Net\SocketProtocolSupportPal.Windows.cs:line 59 14:48:58 at System.Net.SocketProtocolSupportPal.EnsureInitialized() in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Net\SocketProtocolSupportPal.Windows.cs:line 49 14:48:58 at System.Net.SocketProtocolSupportPal.get_OSSupportsIPv6() in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Net\SocketProtocolSupportPal.Windows.cs:line 27 14:48:58 at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\src\System\Net\DNS.cs:line 145 14:48:58 at System.Net.Dns.GetHostByAddress(String address) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\src\System\Net\DNS.cs:line 112 14:48:58 at System.Net.NameResolution.Tests.GetHostByAddressTest.DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\tests\FunctionalTests\GetHostByAddressTest.cs:line 24 14:48:58 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 14:48:58 at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 14:48:58 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 14:48:58 at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 147 14:48:58 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 224 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 14:48:58 at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 14:48:58 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 14:48:58 at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 208 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 14:48:58 at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 173 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestInvoker`1.b__45_0() 14:48:58 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 107 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 14:48:58 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestRunner.cs:line 67 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 14:48:58 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 0 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 14:48:58 at Xunit.Sdk.TestRunner`1.d__43.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestRunner.cs:line 0 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestRunner`1.RunAsync() 14:48:58 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCaseRunner.cs:line 82 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestCaseRunner`1.RunAsync() 14:48:58 at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestMethodRunner.cs:line 45 14:48:58 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 136 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 14:48:58 at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 106 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestMethodRunner`1.RunAsync() 14:48:58 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 205 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 14:48:58 at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 163 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestClassRunner`1.RunAsync() 14:48:58 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 130 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 14:48:58 at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 101 14:48:58 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 14:48:58 at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 14:48:58 at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestAssemblyRunner.cs:line 179 14:48:58 at System.Threading.Tasks.Task`1.InnerInvoke() 14:48:58 at System.Threading.Tasks.Task.Execute() 14:48:58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 14:48:58 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 14:48:58 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 14:48:58 at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 107 14:48:58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 14:48:58 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 89 14:48:58 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) in C:\BuildAgent\work\cb37e9acf085d108\src\common\XunitWorkerThread.cs:line 37 14:48:58 at System.Threading.Tasks.Task.Execute() 14:48:58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 14:48:58 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 14:48:58 at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 14:48:58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 14:48:58 Stack Trace: 14:48:58 at System.Diagnostics.Debug.WindowsDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) 14:48:58 D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Net\SocketProtocolSupportPal.Windows.cs(86,0): at System.Net.SocketProtocolSupportPal.IsProtocolSupported(AddressFamily af) 14:48:58 D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Net\SocketProtocolSupportPal.Windows.cs(49,0): at System.Net.SocketProtocolSupportPal.EnsureInitialized() 14:48:58 D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Net\SocketProtocolSupportPal.Windows.cs(27,0): at System.Net.SocketProtocolSupportPal.get_OSSupportsIPv6() 14:48:58 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\src\System\Net\DNS.cs(145,0): at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6) 14:48:58 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\src\System\Net\DNS.cs(112,0): at System.Net.Dns.GetHostByAddress(String address) 14:48:58 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\tests\FunctionalTests\GetHostByAddressTest.cs(24,0): at System.Net.NameResolution.Tests.GetHostByAddressTest.DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP() 14:48:58 Finished: System.Net.NameResolution.Pal.Tests 14:48:58 14:48:58 === TEST EXECUTION SUMMARY === 14:48:58 System.Net.NameResolution.Pal.Tests Total: 14, Errors: 0, Failed: 0, Skipped: 0, Time: 0.503s 14:48:58 Finished running tests. End time=14:50:49.31, Exit code = 0 14:48:59 System.Xml.RW.XmlReader.ReadContentAs.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.XmlReader.ReadContentAs.Tests\System.Xml.RW.XmlReader.ReadContentAs.Tests.dll 14:49:00 System.Xml.RW.XmlSystemPathResolver.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.XmlSystemPathResolver.Tests\System.Xml.RW.XmlSystemPathResolver.Tests.dll 14:49:00 System.Xml.RW.XmlReader.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.XmlReader.Tests\System.Xml.RW.XmlReader.Tests.dll 14:49:01 System.Xml.RW.XmlWriter.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.XmlWriter.Tests\System.Xml.RW.XmlWriter.Tests.dll 14:49:02 System.Net.Primitives.Functional.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Net.Primitives.Functional.Tests\System.Net.Primitives.Functional.Tests.dll 14:49:02 Finished: System.Net.NameResolution.Functional.Tests 14:49:02 14:49:02 === TEST EXECUTION SUMMARY === 14:49:02 D:\j\workspace\windows_nt_de---4526f5ff\Tools\tests.targets(261,5): warning : System.Net.NameResolution.Functional.Tests Total: 52, Errors: 0, Failed: 1, Skipped: 0, Time: 4.636s [D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj] 14:49:02 Finished running tests. End time=14:50:53.27, Exit code = 1 14:49:02 D:\j\workspace\windows_nt_de---4526f5ff\Tools\tests.targets(261,5): warning MSB3073: The command ""D:\j\workspace\windows_nt_de---4526f5ff\bin/tests/Windows_NT.AnyCPU.Debug/System.Net.NameResolution.Functional.Tests/netcoreapp1.0/RunTests.cmd D:\j\workspace\windows_nt_de---4526f5ff\packages/"" exited with code 1. [D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj] 14:49:02 D:\j\workspace\windows_nt_de---4526f5ff\Tools\tests.targets(272,5): err 4526f5ff\src\System.Net.NameResolution\tests\FunctionalTests\GetHostByAddressTest.cs:line 24 " +12085 area-Meta Strange dependency behavior Hi all, I have a library build for netstandard1.4, which corresponds to .NET 461. Then I build a desktop console application with .NET 4.5 and added reference to named library. All worked fine. But, this should not work, because v4.5 should not be able to use netstandard1.4. Previously this was not the case. Is tat same new expected behavior? Thanks +12088 area-System.Net WebSockets.Client tests fail on UWP "Running the innerloop System.Net.WebSockets.Client.Tests fails on UWP (netcore50). 2 of the 3 innerloop tests fail: ``` c__DisplayClass3_0.b__0() in s:\GitHub\corefx\src\System.Net.WebSockets.Client\tests\ClientWebSocketOptionsTests.cs:line 59]]> c__DisplayClass2_0.b__0() in s:\GitHub\corefx\src\System.Net.WebSockets.Client\tests\ClientWebSocketOptionsTests.cs:line 34]]> ``` " +12091 area-System.Net Add FileWebRequest/Response to corefx The semantics of these types are a bit strange in places (e.g. allowing a request stream and a response stream for the same file, but using a null stream for the response in that case), but I didn't mess with them. cc: @davidsh, @cipop, @ericeil, @karelz, @geoffkizer +12093 area-Meta Create corefx.vssettings file for VS 2015 & VS 15 Can [this](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md) be updated for VS 2015 & VS 15? +12101 area-System.IO Expose path constructors for StreamReader/StreamWriter Exposes the members and adds new tests for them. System.IO is already updated to build for netstandard1.7 so no changes to be made there. These new constructors are not added for uap10.1 as that would require we merge the IO and IO.FileSystem assemblies to gain access to FileStream from the IO assembly. Progress towards https://github.com/dotnet/corefx/issues/9465 @danmosemsft @joperezr @weshaggard +12102 area-System.Runtime Port some missing types/members in S.R.InteropServices ``` T:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs M:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.#ctor(System.String) P:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.NamespaceName M:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.get_NamespaceName P:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.ResolvedAssemblyFiles M:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.get_ResolvedAssemblyFiles T:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.#ctor(System.String,System.Reflection.Assembly) P:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.NamespaceName M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.get_NamespaceName P:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.RequestingAssembly M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.get_RequestingAssembly P:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.ResolvedAssemblies M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.get_ResolvedAssemblies T:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata E:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.DesignerNamespaceResolve M:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.add_DesignerNamespaceResolve(System.EventHandler{System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs}) M:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.remove_DesignerNamespaceResolve(System.EventHandler{System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs}) E:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.ReflectionOnlyNamespaceResolve M:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.add_ReflectionOnlyNamespaceResolve(System.EventHandler{System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs}) M:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.remove_ReflectionOnlyNamespaceResolve(System.EventHandler{System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs}) M:System.Runtime.InteropServices.WindowsRuntime.DefaultInterfaceAttribute.set_DefaultInterface(System.Type) M:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.set_NamespaceName(System.String) M:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs.set_ResolvedAssemblyFiles(System.Collections.ObjectModel.Collection{System.String}) M:System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute.set_BuildVersion(System.Byte) M:System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute.set_InterfaceType(System.Type) M:System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute.set_MajorVersion(System.Byte) M:System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute.set_MinorVersion(System.Byte) M:System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute.set_RevisionVersion(System.Byte) M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.set_NamespaceName(System.String) M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.set_RequestingAssembly(System.Reflection.Assembly) M:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs.set_ResolvedAssemblies(System.Collections.ObjectModel.Collection{System.Reflection.Assembly}) M:System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute.set_Name(System.String) T:System.Runtime.InteropServices.RuntimeEnvironment M:System.Runtime.InteropServices.RuntimeEnvironment.#ctor M:System.Runtime.InteropServices.RuntimeEnvironment.FromGlobalAccessCache(System.Reflection.Assembly) M:System.Runtime.InteropServices.RuntimeEnvironment.get_SystemConfigurationFile M:System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory M:System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion P:System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile ``` +12103 area-System.Security Unable to find native library for OpenSSL "I had .NET Core working just fine on my Mac a few days ago. Today, it no longer works: > Unhandled Exception: System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.TypeInitializationException: The type initializer for 'CryptoInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found. > (Exception from HRESULT: 0x8007007E) > at Interop.CryptoInitializer.EnsureOpenSslInitialized() > at Interop.CryptoInitializer..cctor() A few things have changed since a few days ago and today. - I upgraded to OS X Sierra. - Homebrew, which is how I installed the latest OpenSSL, shuffled things around. I did a `brew update`, and was greeted with this: > ""Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew! > Homebrew no longer needs to have ownership of /usr/local."" 1. I don't think I did anything out of the ordinary. 2. How do I get back in to a working state? Brew says I am running OpenSSL, 1.0.2j. I followed the instructions of https://github.com/dotnet/core/blob/master/cli/known-issues.md, but this doesn't work. brew now refuses to do it: > brew link --force openssl > > Warning: Refusing to link: openssl > Linking keg-only openssl means you may end up linking against the insecure, > deprecated system OpenSSL while using the headers from Homebrew's openssl. > Instead, pass the full include/library paths to your compiler e.g.: > -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib Environment: .NET Command Line Tools (1.0.0-preview2-003121) Product Information: Version: 1.0.0-preview2-003121 Commit SHA-1 hash: 1e9d529bc5 Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 " +12107 area-System.Net kdc-setup.sh failed on Ubuntu 16.10 In some of the outerloop runs of Ubuntu 16.10, the [setup-kdc.sh script](https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/tests/Scripts/Unix/setup-kdc.sh) is failing during `apt-get` with a 404 error. This appears to be intermittent because some runs have succeeded or at least not failed on these particular tests. Here is an example failure log: http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.10_debug/13/consoleText Search for `Installing krb5-kdc..` This whole process seems fragile to me, is there anything we could do to improve this? An option would be to require this package to be installed on a machine before the test is permitted to run, and just skip them if it is not. For our official outerloop runs, we could require that they run, and thus require that the package be pre-installed (like all our other dependencies). +12114 area-Meta Restoring Microsoft.NETCore.App 1.1.0--preview1-001069-00 produces downgrade warnings - Multiple versions of the same package? ``` warn : Detected package downgrade: runtime.native.System.Security.Cryptography.OpenSsl from 4.1.1-preview1-24527-03 to 4.0.1-preview1-24527-03 warn : restore-projects (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0-preview1-001069-00) -> System.Net.Security (>= 4.3.0-preview1-24527-03) -> System.Runtime.Extensions (>= 4.1.0) -> runtime.unix.System.Runtime.Extensions (>= 4.3.0-preview1-24527-03) -> runtime.native.System.Security.Cryptography.OpenSsl (>= 4.1.1-preview1-24527-03) warn : restore-projects (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0-preview1-001069-00) -> System.Net.Security (>= 4.3.0-preview1-24527-03) -> runtime.native.System.Security.Cryptography.OpenSsl (>= 4.0.1-preview1-24527-03) ``` - Incorrect version ``` warn : Detected package downgrade: Microsoft.NETCore.DotNetHostResolver from 1.2.0-beta-000984-00 to 1.1.0-preview1-001069-00 warn : restore-projects (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostPolicy (>= 1.1.0-preview1-001069-00) -> runtime.win7-x64.Microsoft.NETCore.DotNetHostPolicy (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostResolver (>= 1.2.0-beta-000984-00) warn : restore-projects (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostPolicy (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostResolver (>= 1.1.0-preview1-001069-00) warn : Detected package downgrade: Microsoft.NETCore.DotNetHost from 1.2.0-beta-000984-00 to 1.1.0-preview1-001069-00 warn : restore-projects (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostPolicy (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostResolver (>= 1.1.0-preview1-001069-00) -> runtime.win7-x64.Microsoft.NETCore.DotNetHostResolver (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHost (>= 1.2.0-beta-000984-00) warn : restore-projects (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostPolicy (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHostResolver (>= 1.1.0-preview1-001069-00) -> Microsoft.NETCore.DotNetHost (>= 1.1.0-preview1-001069-00) ``` +12115 area-System.Runtime Helpers for structural equality and comparison "There are quite a few types that implement `IStructuralEquatable` and `IStructuralComparable` in the framework now - most notably, arrays and tuples, and hopefully more to come (collections?). Unfortunately, using them is unnecessarily verbose, because implementations of these are usually explicit (presumably to avoid overloading `Object.Equals`). So to compare two tuples or arrays `a` and `b`, you need to do something like this: ``` cs ((IStructuralEquatable)a).Equals((IStructuralEquatable)b, comparer); ``` Needless to say, this is also not particularly discoverable. Case in point: search for e.g. ""C# compare arrays"" on StackOverflow, and note how many duplicate questions there are, and how few of them have responses mentioning `IStructuralEquatable` at all. One particular answer [here](http://stackoverflow.com/a/3234749/111335) suggests adding a couple of helper methods: ``` cs static class StructuralExtensions { public static bool StructuralEquals(this T a, T b) where T : IStructuralEquatable { return a.Equals(b, StructuralComparisons.StructuralEqualityComparer); } public static int StructuralCompare(this T a, T b) where T : IStructuralComparable { return a.CompareTo(b, StructuralComparisons.StructuralComparer); } } ``` which then allows doing: ``` a.StructuralEquals(b); ``` where applicable. Should this, perhaps, just be a part of the standard library somewhere in `System`? For anyone using VS, or a similar IDE with code completion, this would make the methods appear as members on all types that support them, even when they implement the interfaces explicitly, and thus easy to discover. (Note that there's a separate question here on whether the default comparers are appropriate, or whether the API should always require an explicit comparer argument. But that is orthogonal to whether such helpers should be readily available out of the box.) " +12121 area-System.Net Fix Uri handling of unknown schemes Somehow this expression got transposed in corefx; it should be `end - startOtherHost` rather than `startOtherHost - end` (as can be seen in the previous section of code, end will always be >= startOtherHost). As it was, it was resulting in an ArgumentOutOfRangeException, which a test was then codifying, and that test was then failing on desktop which has the correct ordering. Contributes to https://github.com/dotnet/corefx/issues/8330 cc: @cipop, @davidsh +12122 area-System.Collections Does .Net Core have any replacement for SynchronizedCollection ? SynchronizedCollection cannot be found in .net core. Does netcore has replacement ? Thanks, Elaine +12123 area-System.Net Add tests for WebUtility - UrlDecodeToBytes (ranges) - UrlEncodeToBytes (ranges) - Invalid tests for ranges - Invalid percent encoding - Minor cleanup (no encoding/decoding needed) Also adds a Debug.Assert in `HtmlEncode` for consistency /cc @stephentoub +12124 area-System.IO Move StreamReader and StreamWriter to CoreFX StreamReader/Writer should be moved out of mscorlib and into corefx. By doing so, we'll be able to add back the string constructors that take a file path without relying on coreclr's version of FileStream. For now, those should be implemented using reflection to the assembly. Discussed in https://github.com/dotnet/corefx/pull/12101#discussion_r80815212. Required for / forked from: https://github.com/dotnet/corefx/issues/9465 +12125 area-System.Net Port remaining methods in System.Net.CookieCollection/CookieContainer/CookieException ``` csharp public class CookieCollection : ICollection, IEnumerable { public bool IsReadOnly { get; } public bool IsSynchronized { get; } public object SyncRoot { get; } public void CopyTo(Array array, int index); public void CopyTo(Cookie[] array, int index); } public class CookieContainer { public CookieContainer(int capacity); public CookieContainer(int capacity, int perDomainCapacity, int maxCookieSize); public void Add(Cookie cookie); public void Add(CookieCollection cookies); } public class CookieException : FormatException, ISerializable { protected CookieException(SerializationInfo serializationInfo, StreamingContext streamingContext); public override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); } ``` +12126 area-System.Net Port remaining methods in System.Net.CredentialCache ``` csharp public class CredentialCache : ICredentials, ICredentialsByHost, IEnumerable { public void Add(Uri uriPrefix, string authTypeauthenticationType, NetworkCredential credcredential); public NetworkCredential GetCredential(Uri uriPrefix, string authTypeauthenticationType); public void Remove(Uri uriPrefix, string authTypeauthenticationType); } ``` +12127 area-System.Net Port System.Net.EndpointPermission ``` csharp public class EndpointPermission { public string Hostname { get; } public int Port { get; } public TransportType Transport { get; } public override bool Equals(object obj); public override int GetHashCode(); public override string ToString(); } ``` +12128 area-System.Net Port System.Net.GlobalProxySelection ``` csharp public class GlobalProxySelection { public GlobalProxySelection(); public static IWebProxy Select { get; set; } public static IWebProxy GetEmptyWebProxy(); } ``` +12129 area-Meta Switch the default TestTFM to be netcoreapp1.1 for all tests Currently the default TestTFM is still netcoreapp1.0, and when you are running tests without passing `FilterToTestTFM` we will run tests for netcoreapp1.0 and netcoreapp1.1. Given that netcoreapp1.0 tests are a subset of netcoreapp1.1, it should be ok to moving all of the defaults to netcoreapp1.1 and just running those. This will involve some work on changing project.jsons supports clauses, Test builds files and general properties. cc: @weshaggard @ericstj @karajas +12130 area-Meta Bump minor version for MS.NETCore.Platforms and Targets Allow for builds out of 1.0.0 branch with unique package versions. +12131 area-System.Net Port System.Net.IPAddress missing members ``` csharp public class IPAddress { public long Address { get; set; } } ``` +12132 area-System.Net Port System.Net.IWebProxyScript ``` csharp public interface IWebProxyScript { void Close(); bool Load(Uri scriptLocation, string script, Type helperType); string Run(string url, string host); } ``` +12133 area-System.Net Port System.Net.NetworkAccess ``` csharp public enum NetworkAccess { Accept = 128, Connect = 64, } ``` +12134 area-System.Net Port System.Net.NetworkCredential missing members ``` csharp public class NetworkCredential : ICredentials, ICredentialsByHost { public NetworkCredential(string userName, SecureString password); public NetworkCredential(string userName, SecureString password, string domain); public SecureString SecurePassword { get; set; } public NetworkCredential GetCredential(Uri uri, string authTypeauthenticationType); } ``` +12135 area-System.Net Port System.Net.ProtocolViolationException missing members ``` csharp public class ProtocolViolationException : InvalidOperationException, ISerializable { protected ProtocolViolationException(SerializationInfo serializationInfo, StreamingContext streamingContext); public override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); } ``` +12136 area-System.Net Port System.Net.TransportContext missing members ``` csharp public abstract class TransportContext { public virtual IEnumerable GetTlsTokenBindings(); } ``` +12137 area-System.Net Port System.Net.WebClient missing members ``` csharp public class WebClient : Component { public RequestCachePolicy CachePolicy { get; set; } protected virtual void OnDownloadProgressChanged(DownloadProgressChangedEventArgs e); protected virtual void OnUploadProgressChanged(UploadProgressChangedEventArgs e); } ``` +12138 area-System.Net Port missing System.Net.WebException members ``` csharp public class WebException : InvalidOperationException, ISerializable { protected WebException(SerializationInfo serializationInfo, StreamingContext streamingContext); public override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); } ``` +12139 area-System.Net Port missing System.Net.WebHeaderCollection members Missing members _and_ base class: ``` csharp public sealed class WebHeaderCollection : NameValueCollectionIEnumerable, ISerializable { protected WebHeaderCollection(SerializationInfo serializationInfo, StreamingContext streamingContext); public override string[] AllKeys { get; } public override int Count { get; } public override NameObjectCollectionBase.KeysCollection Keys { get; } public void Add(HttpRequestHeader header, string value); public void Add(HttpResponseHeader header, string value); public void Add(string header); public override void Add(string name, string value); protected void AddWithoutValidate(string headerName, string headerValue); public override void Clear(); public override string Get(int index); public override string Get(string name); public override IEnumerator GetEnumerator(); public override string GetKey(int index); public override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); public override string[] GetValues(int index); public override string[] GetValues(string header); public static bool IsRestricted(string headerName); public static bool IsRestricted(string headerName, bool response); public override void OnDeserialization(object sender); public void Remove(HttpRequestHeader header); public void Remove(HttpResponseHeader header); public override void Remove(string name); public void Set(HttpRequestHeader header, string value); public void Set(HttpResponseHeader header, string value); public override void Set(string name, string value); void System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); public byte[] ToByteArray(); } ``` +12140 area-System.Net System.Net.WebProxy should implement IWebProxy ``` csharp public class WebProxy : ISerializable, IWebProxy { } ``` +12141 area-System.Net Implement System.Net.WebRequest/WebResponse missing members and base class Missing members and base class: ``` csharp public abstract class WebRequest : MarshalByRefObject, ISerializable { } public abstract class WebResponse : MarshalByRefObject, IDisposable, ISerializable { public virtual long ContentLength { get; set; } public virtual string ContentType { get; set; } } ``` +12142 area-System.Net Port System.Net.WebUtility missing members ``` csharp public static class WebUtility { public static void HtmlDecode(string value, TextWriter output); public static void HtmlEncode(string value, TextWriter output); } ``` +12143 area-System.Net Implement ICloneable on types in System.Net.Http.Headers ``` csharp namespace System.Net.Http.Headers { public class AuthenticationHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class CacheControlHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class ContentDispositionHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class ContentRangeHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class EntityTagHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class MediaTypeHeaderValue : ICloneable { object System.ICloneable.Clone(); } public sealed class MediaTypeWithQualityHeaderValue : MediaTypeHeaderValue, ICloneable { object System.ICloneable.Clone(); } public class NameValueHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class NameValueWithParametersHeaderValue : NameValueHeaderValue, ICloneable { object System.ICloneable.Clone(); } public class ProductHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class ProductInfoHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class RangeConditionHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class RangeHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class RangeItemHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class RetryConditionHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class StringWithQualityHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class TransferCodingHeaderValue : ICloneable { object System.ICloneable.Clone(); } public sealed class TransferCodingWithQualityHeaderValue : TransferCodingHeaderValue, ICloneable { object System.ICloneable.Clone(); } public class ViaHeaderValue : ICloneable { object System.ICloneable.Clone(); } public class WarningHeaderValue : ICloneable { object System.ICloneable.Clone(); } } ``` +12144 area-System.Xml Clean up P2P references in Xml contracts There are some P2P references marked as TODO in System.Private.Xml and other Xml contracts which should be removed when new packages are generated. +12145 area-System.Xml Rename System.Xml contract (currently System.Xml.ReaderWriter) A lot of Xml APIs are in System.Xml.ReaderWriter, is that the right place and name for them? +12146 area-System.Xml Add UAP101 support for Xml contracts uap101 and uap101aot build configurations should be added for System.Private.Xml and other Xml contracts. +12147 area-System.Net Port remaining methods in System.Net.NetworkInformation Missing type: ``` csharp public enum NetworkInformationAccess { None = 0, Ping = 4, Read = 1, } ``` Missing methods / base types: ``` csharp public class NetworkInformationException : Win32Exception { protected NetworkInformationException(SerializationInfo serializationInfo, StreamingContext streamingContext); public override int ErrorCode { get; } } public class Ping : ComponentIDisposable { protected overridevirtual void Dispose(bool disposing); } public class PingException : InvalidOperationException { protected PingException(SerializationInfo serializationInfo, StreamingContext streamingContext); } ``` Missing `static` class annotation: ``` csharp public static class NetworkChange { } ``` +12148 area-System.Net Port missing System.Net.Security methods ``` csharp namespace System.Net.Security { public class NegotiateStream : AuthenticatedStream { public virtual void AuthenticateAsServer(); public virtual void AuthenticateAsServer(NetworkCredential credential, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel requiredImpersonationLevel); public virtual void AuthenticateAsServer(NetworkCredential credential, ExtendedProtectionPolicy policy, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel requiredImpersonationLevel); public virtual void AuthenticateAsServer(ExtendedProtectionPolicy policy); public virtual IAsyncResult BeginAuthenticateAsClient(AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, string targetName, AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, string targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel, AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsClient(NetworkCredential credential, string targetName, AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsClient(NetworkCredential credential, string targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel, AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsServer(AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsServer(NetworkCredential credential, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel requiredImpersonationLevel, AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsServer(NetworkCredential credential, ExtendedProtectionPolicy policy, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel requiredImpersonationLevel, AsyncCallback asyncCallback, object asyncState); public virtual IAsyncResult BeginAuthenticateAsServer(ExtendedProtectionPolicy policy, AsyncCallback asyncCallback, object asyncState); public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState); public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState); public virtual void EndAuthenticateAsClient(IAsyncResult asyncResult); public virtual void EndAuthenticateAsServer(IAsyncResult asyncResult); public override int EndRead(IAsyncResult asyncResult); public override void EndWrite(IAsyncResult asyncResult); } public class SslStream : AuthenticatedStream { public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState); public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState); public override int EndRead(IAsyncResult asyncResult); public override void EndWrite(IAsyncResult asyncResult); } } ``` +12150 area-System.Net Port System.Net.WebSockets.WebSocketException missing members ``` csharp public sealed class WebSocketException : Win32Exception { public override int ErrorCode { get; } public override void GetObjectData(SerializationInfo info, StreamingContext context); } ``` +12153 area-System.Net Add back missing WebRequest property setters Missed these when adding back the rest of the WebRequest/Response surface area. cc: @ericeil, @davidsh, @cipop Fixes https://github.com/dotnet/corefx/issues/12141 (The types still need to derive from MBRO, but that should be handled by a sweep across the whole repo.) +12154 area-System.ComponentModel Add ComponentModel base classes where missing. All these should derive from Component. - [x] System.Timers.Timer - [x] System.Net.WebClient - [x] System.Net.NetworkInformation.Ping - [x] System.ComponentModel.BackgroundWorker - [x] System.IO.FileSystemWatcher - [x] System.Diagnostics.Process - [x] System.Diagnostics.ProcessModule - [x] System.Diagnostics.ProcessThread +12156 area-System.Net Add tests for System.Uri and friends On PR #11988 we added the implementation of System.Uri and friends, but we didn't add tests. The reason for this is that we want to using Mono tests and it is still not sure on how they should be consumed. This issue is to track the work of adding them once we figure out the right process. +12159 area-System.Net Port several WinHTTP PRs to release/1.0.0 https://github.com/dotnet/corefx/pull/11159 https://github.com/dotnet/corefx/pull/11383 https://github.com/dotnet/corefx/pull/11481 https://github.com/dotnet/corefx/pull/11733 cc: @davidsh, @leecow, @gkhanna79, @Petermarcu +12160 area-System.ComponentModel Code cleanup for System.ComponentModel.TypeConverter "There are a couple of clean-up items for the newly ported code inside System.ComponentModel.TypeConverter. These are captured from PR #12081 - Remove explicit base() from constructor calls - Replace explicitly implemented properties with auto-implemented properties when possible - Simplify members and properties with 1 lines of code to expression bodied members: protected virtual bool CanRaiseEvents => true; *Switch over to the ?. operator in C# for null checking: ``` csharp //From EventHandler handler = (EventHandler)_events[s_eventDisposed]; if (handler != null) handler(this, EventArgs.Empty); //To ((EventHandler)_events[s_eventDisposed])?.Invoke(this, EventArgs.Empty); //From ISite s = _site; return s == null ? null : s.Container; //To public IContainer Container => _site?.Container; ``` - Switch to string interpolation instead of string concatenation - Remove unnecessary initialization (ie. Bool foo = false) - Replace empty arrays with Array.Empty() - Replace string literals with nameof wherever possible. - Simplify event handler declarations when no custom code is required - Introduce readonly modifier for sync objects. - Replace nongeneric collections with generic collections - Use foreach instead of manually writing the foreach logic. - Cache the char[] into a static readonly field (ie. new char[] { '\' }) - Simplify the CultureInfoMapper code: ``` csharp private static class CultureInfoMapper { // Dictionary of CultureInfo.DisplayName, CultureInfo.Name for cultures that have changed DisplayName over releases. // This is to workaround an issue with CultureInfoConverter that serializes DisplayName (fixing it would introduce breaking changes). private static readonly Dictionary s_cultureInfoNameMap = CreateMap(); private static Dictionary CreateMap() { const int Count = 274; var result = new Dictionary(Count) { { ""Afrikaans"", ""af"" }, ... }; Debug.Assert(result.Count == Count); return result; } public static string GetCultureInfoName(string cultureInfoDisplayName) { string name; return s_cultureInfoNameMap.TryGetValue(cultureInfoDisplayName, out name) ? name : cultureInfoDisplayName; } } ``` " +12162 area-System.Runtime Bring System.Runtime.InteropServices up to .NET Standard 2.0 Below are the list of types that are either missing, changed (eg changed derivation), or have missing members vs [.NET Standard 2.0](https://github.com/dotnet/standard/tree/master/netstandard/ref) ``` T:System.Runtime.InteropServices.AssemblyRegistrationFlags T:System.Runtime.InteropServices.AutomationProxyAttribute T:System.Runtime.InteropServices.ComAliasNameAttribute T:System.Runtime.InteropServices.ComCompatibleVersionAttribute T:System.Runtime.InteropServices.ComConversionLossAttribute T:System.Runtime.InteropServices.ComRegisterFunctionAttribute T:System.Runtime.InteropServices.ComUnregisterFunctionAttribute T:System.Runtime.InteropServices.ExporterEventKind T:System.Runtime.InteropServices.ExtensibleClassFactory T:System.Runtime.InteropServices.HandleRef T:System.Runtime.InteropServices.ICustomFactory T:System.Runtime.InteropServices.ICustomMarshaler T:System.Runtime.InteropServices.IDispatchImplAttribute T:System.Runtime.InteropServices.IDispatchImplType T:System.Runtime.InteropServices.LCIDConversionAttribute T:System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute T:System.Runtime.InteropServices.Marshal T:System.Runtime.InteropServices.ObjectCreationDelegate T:System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute T:System.Runtime.InteropServices.ProgIdAttribute T:System.Runtime.InteropServices.RegistrationClassContext T:System.Runtime.InteropServices.RegistrationConnectionType T:System.Runtime.InteropServices.SafeHandle T:System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute T:System.Runtime.InteropServices.TYPEKIND T:System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute T:System.Runtime.InteropServices.UnmanagedType T:System.Runtime.InteropServices.Expando.IExpando T:System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs T:System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken T:System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs T:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata E:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.DesignerNamespaceResolve E:System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata.ReflectionOnlyNamespaceResolve ``` a few members of this namespace (such as `T:System.Runtime.InteropServices.RuntimeEnvironment`) are already covered by https://github.com/dotnet/corefx/issues/11808. Check with @ramarag to make sure everything is covered between you +12165 area-System.Net Add IWebProxy to WebProxy Fixes https://github.com/dotnet/corefx/issues/12140 cc: @ericeil, @davidsh +12167 area-Infrastructure Version master We should bump master package versions and assembly versions post 1.1. While doing so we should also handle #12130. +12168 area-System.Globalization Remove Normalization implementation from corefx we have moved the implementation to System.Private.Corelib in coreclr repo so we can now remove the implementation from corefx +12171 area-System.Net HttpClient.GetAsync fails with 302 with https if URI redirects "The HttpClient.GetAsync fails the URI that is used is https and does a redirection. The status code returned is 302. **Repro:** HttpClient client = new HttpClient(); client.GetAsync(""https://go.microsoft.com/fwlink/?LinkID=623861&clcid=0x409"") **The response is:** Result : StatusCode: 302, ReasonPhrase: 'Moved Temporarily', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Cache-Control: no-cache Connection: keep-alive Date: Thu, 29 Sep 2016 00:32:32 GMT Pragma: no-cache Location: http://dtlgalleryint.cloudapp.net/api/v2/ Server: Microsoft-IIS/8.5 X-AspNetMvc-Version: 5.2 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Content-Length: 0 Expires: -1 } **Note** This works fine with a http:// uri. " +12172 area-System.Xml Add actual switches for Xml Configuration properties Do we leave properties defined in [LocalAppContextSwitches](https://github.com/dotnet/corefx/blob/9348997920c1ba782b45adb5e8ee9754149ab1e2/src/System.Private.Xml/src/Workarounds/LocalAppContextSwitches.cs) with default values, or do we enable users to switch their values? +12173 area-System.Xml Re-enable usage of AppDomain.GetAssemblies in System.Private.Xml when it comes back Refer to TODO in [QilXmlReader](https://github.com/dotnet/corefx/blob/25152c3eb1333087daf06b33c8706e78c958c44e/src/System.Private.Xml/src/System/Xml/Xsl/QIL/QilXmlReader.cs) +12174 area-System.Xml Remove System.Security workarounds from System.Private.Xml Remove SecurityRuleSet and SecurityRulesAttribute from System.Private.Xml workarounds. https://github.com/dotnet/corefx/pull/12046 is bringing them back. +12175 area-System.Xml Understand and remove ThisAssembly workaround from System.Private.Xml The usage of ThisAssembly needs to be understood and corrected if needed. +12176 area-Serialization JsonDataContract.GetGeneratedReadWriteDelegates May Throw ArgumentNullException JsonDataContract.GetGeneratedReadWriteDelegates may throw ArgumentNullException in NetNative. ``` -------------------------------- Running Test: DataContractJsonSerializerTests.DCJS_ValidateExceptionOnUnspecifiedRootSerializationType Caught Unexpected exception:System.ArgumentNullException: ArgumentNull_Generic Arg_ParamName_Name at System.Collections.Generic.Dictionary$2.FindEntry(__Canon key) in f:\dd\ndp\fxcore\src\ System.Collections\System\Collections\Generic\Dictionary.cs:line 266 at System.Collections.Generic.Dictionary$2.TryGetValue(__Canon key, __Canon& value) in f:\ dd\ndp\fxcore\src\System.Collections\System\Collections\Generic\Dictionary.cs:line 434 at System.Runtime.Serialization.Json.JsonDataContract.GetGeneratedReadWriteDelegates($DataContract c) at System.Runtime.Serialization.Json.JsonDataContract.TryGetReadWriteDelegatesFromGeneratedAssembly($DataContract c) at System.Runtime.Serialization.Json.JsonClassDataContract.get_JsonFormatWriterDelegate() at System.Runtime.Serialization.Json.JsonClassDataContract.WriteJsonValueCore($XmlWriterDelegator jsonWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue($XmlWriterDelegator jsonWriter, Object obj, $XmlObje ctSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteJsonValue($JsonDataContract contract, $XmlWriter Delegator writer, Object graph, $XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue($DataContract data Contract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType($DataContract dataContract, $XmlW riterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObjectContent($XmlWriterDelegator writer , Object graph) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObject($XmlWriterDelegator writer, Objec t graph) at System.Runtime.Serialization.XmlObjectSerializer.InternalWriteObject($XmlWriterDelegator writer, Object graph, $DataCo ntractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject($XmlDictionaryWriter writer, Object graph ) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject(Stream stream, Object graph) at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(Stream stream, Object graph) at DataContractJsonSerializerTests.DCJS_ValidateExceptionOnUnspecifiedRootSerializationType() in d:\dd\ProjectN\src\QA\To F\tests\FX\Conformance\System.Runtime.Serialization.Json\4.0.0.0\DataContractJsonSerializer.NetNative.cs:line 36 at EntryPointMain.
b__69() in d:\dd\ProjectN\src\QA\ToF\PN\x86\dbg\IL\FX\Conformance\System.Runtime.Serialization.Js on\4.0.0.0\DataContractJsonSerializerTests.main.cs:line 118 at System.Action.InvokeOpenStaticThunk() at System.Action.Invoke() at CoreFXTestLibrary.Internal.Runner.RunTestMethod() in d:\dd\ProjectN\src\QA\ToF\tests\FX\Conformance\Common\Xunit\Inter nal\Runner.cs:line 170 at CoreFXTestLibrary.Internal.Runner.RunTest($TestInfo t) in d:\dd\ProjectN\src\QA\ToF\tests\FX\Conformance\Common\Xunit\ Internal\Runner.cs:line 95 ---- Test FAILED --------------- ``` +12177 area-System.Collections Add a ValueList type to Common to reduce allocations It may be desirable to add a `ValueList` type in Common to supplant usages of LowLevelList / List in hot paths. It would have exactly the same semantics as List, except it would be a mutable struct so no allocation for the list itself. Additionally, since this would be an internal type we could make other micro-optimizations e.g. `_syncRoot` field, `_version` only exists in debug (which also means `MoveNext` might be inlined), bounds checks in indexer are Debug.Asserts, etc. This would help in places such as [here](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/EnumerableHelpers.cs#L135), where we want a dynamically-grown array and don't want to manually write the resizing logic, but really want to minimize allocations. +12182 area-System.Collections Could SortedSet.InOrderTreeWalk use recursion instead of allocating? `SortedSet.InOrderTreeWalk` currently uses a stack on which the nodes to walk are pushed/popped: https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L234 It looks like it would be possible to implement this recursively instead, i.e. `InOrderTreeWalk(left); action(current); InOrderTreeWalk(right)` and eliminate the Stack allocation. +12183 area-System.Numerics Updating the 'System.Runtime.Extensions' contracts to include the new single-precision Math APIs. This updates the `System.Runtime.Extensions` contracts to include the new single-precision Math APIs approved in #1151 and implemented in CoreCLR in dotnet/coreclr#5492. +12184 area-System.Net Xml has a dependency on System.Net.Requests System.Xml.ReaderWriter contract has a dependency on RequestCachePolicy (https://github.com/dotnet/corefx/blob/master/src/System.Xml.ReaderWriter/ref/System.Xml.ReaderWriter.cs#L1126) System.Private.Xml has a dependency on requests for ReuqestCachePolicy (https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System.Private.Xml.csproj#L17). Xml also has an XmlDownloadManager which depends on HttpClient. Should we move RequestCachePolicy into System.Net.Primitives? Or perhaps break this dependency another way? @stephentoub @davidsh @CIPop +12186 area-Infrastructure Updating CoreClr dependencies to servicing-24529-02 /cc @dotnet/corefx-contrib +12190 area-Meta Please provide MIT-licensed NuGet packages for MIT-licensed source code. "There are a lot of useful MIT-licensed libraries in this repository. However, many of them are [published on NuGet](https://www.nuget.org/packages/System.Threading.Tasks.Dataflow) under a much more [restrictive license](https://www.microsoft.com/net/dotnet_library_license.htm), which forbids modifications, interferes with the GPL, and allows Microsoft to ""collect information about you and your use of the software"". These terms are toxic to both open-source and commercial use, and they will force us to package and maintain our own forks of these libraries for the benefit of the much more friendly MIT terms. Please consider relicensing the official NuGet packages to match the source code. " +12192 area-System.Net AuthenticationManager.*Authenticate() throw PNSE This and supporting types are currently stubbed out, with members throwing not supported exceptions. We need to investigate whether that's sufficient, whether a more robust form of stubbing is required (e.g. returning nop objects rather than throwing), or whether we need some minimally functional implementation for this legacy. +12195 area-Meta runtime.native.System.Data.SqlClient.sni in release/1.1.0 references RTM 1.0 packages "Currently the package depends on the following in 1.1: ``` xml ``` We need to understand if this is intentional or if folks were planning to build new versions of this component from the 1.1 codebase (presumably TFS?). /cc @ianhays @saurabh500 " +12196 area-Serialization Reflection on XmlConvert Not Working in Net Native XmlSerializer's reflection based serialization uses reflection to find XmlConvert's method and invoke it. This fails in Net Native due to the metadata info of XmlConvert is reduced away. +12197 area-System.IO Add missing System.IO.Pipes members These are present in [standard](https://github.com/dotnet/standard) but not in .NET Core. ``` M:System.IO.Pipes.NamedPipeClientStream.#ctor(System.String,System.String,System.IO.Pipes.PipeAccessRights,System.IO.Pipes.PipeOptions,System.Security.Principal.TokenImpersonationLevel,System.IO.HandleInheritability) M:System.IO.Pipes.NamedPipeClientStream.#ctor(System.String,System.String,System.IO.Pipes.PipeDirection,System.IO.Pipes.PipeOptions,System.Security.Principal.TokenImpersonationLevel,System.IO.HandleInheritability) F:System.IO.Pipes.NamedPipeServerStream.MaxAllowedServerInstances M:System.IO.Pipes.NamedPipeServerStream.BeginWaitForConnection(System.AsyncCallback,System.Object) M:System.IO.Pipes.NamedPipeServerStream.EndWaitForConnection(System.IAsyncResult) M:System.IO.Pipes.NamedPipeServerStream.RunAsClient(System.IO.Pipes.PipeStreamImpersonationWorker) P:System.IO.Pipes.PipeStream.IsHandleExposed M:System.IO.Pipes.PipeStream.get_IsHandleExposed M:System.IO.Pipes.PipeStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object) M:System.IO.Pipes.PipeStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object) M:System.IO.Pipes.PipeStream.CheckPipePropertyOperations M:System.IO.Pipes.PipeStream.CheckReadOperations M:System.IO.Pipes.PipeStream.CheckWriteOperations M:System.IO.Pipes.PipeStream.EndRead(System.IAsyncResult) M:System.IO.Pipes.PipeStream.EndWrite(System.IAsyncResult) M:System.IO.Pipes.PipeStream.InitializeHandle(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean) T:System.IO.Pipes.PipeStreamImpersonationWorker M:System.IO.Pipes.PipeStreamImpersonationWorker.#ctor(System.Object,System.IntPtr) M:System.IO.Pipes.PipeStreamImpersonationWorker.BeginInvoke(System.AsyncCallback,System.Object) M:System.IO.Pipes.PipeStreamImpersonationWorker.EndInvoke(System.IAsyncResult) M:System.IO.Pipes.PipeStreamImpersonationWorker.Invoke ``` +12198 area-System.Runtime Add missing derivation from System.SystemException These guys should derive from SystemException but aren't. Now we have it, they should. Generally that means replacing the direct derivation from Exception. ``` System.AppDomainUnloadedException System.ArgumentException System.ArithmeticException System.ArrayTypeMismatchException System.BadImageFormatException System.CannotUnloadAppDomainException System.Collections.Generic.KeyNotFoundException System.ComponentModel.LicenseException System.ComponentModel.WarningException System.ContextMarshalException System.DataMisalignedException System.FormatException System.IO.IOException System.IO.InternalBufferOverflowException System.IO.InvalidDataException System.IndexOutOfRangeException System.InsufficientExecutionStackException System.InvalidCastException System.InvalidOperationException System.InvalidProgramException System.MemberAccessException System.MulticastNotSupportedException System.NotImplementedException System.NotSupportedException System.NullReferenceException System.OperationCanceledException System.OutOfMemoryException System.RankException System.Resources.MissingManifestResourceException System.Resources.MissingSatelliteAssemblyException System.Runtime.InteropServices.InvalidComObjectException System.Runtime.InteropServices.InvalidOleVariantTypeException System.Runtime.InteropServices.MarshalDirectiveException System.Runtime.InteropServices.SafeArrayRankMismatchException System.Runtime.InteropServices.SafeArrayTypeMismatchException System.Runtime.Remoting.RemotingException System.Runtime.Remoting.ServerException System.Runtime.Serialization.SerializationException System.Security.Authentication.AuthenticationException System.Security.Cryptography.CryptographicException System.Security.HostProtectionException System.Security.Policy.PolicyException System.Security.Principal.IdentityNotMappedException System.Security.XmlSyntaxException System.Threading.AbandonedMutexException System.Threading.SemaphoreFullException System.Threading.SynchronizationLockException System.Threading.ThreadAbortException System.Threading.ThreadInterruptedException System.Threading.ThreadStartException System.Threading.ThreadStateException System.TimeoutException System.TypeInitializationException System.TypeLoadException System.TypeUnloadedException System.UnauthorizedAccessException System.Xml.Schema.XmlSchemaException System.Xml.XPath.XPathException System.Xml.XmlException System.Xml.Xsl.XsltException ``` +12199 area-Meta Implement ICloneable where missing The following are not implementing ICloneable but according to Net Standard 2.0 they should: - [x] System.Array.ArrayEnumerator - [x] System.Array.SZArrayEnumerator - [x] System.Collections.ArrayList - [x] System.Collections.ArrayList.ArrayListEnumerator - [x] System.Collections.ArrayList.ArrayListEnumeratorSimple - [x] System.Collections.ArrayList.IListWrapper.IListWrapperEnumWrapper - [x] System.Collections.BitArray - [x] System.Collections.BitArray.BitArrayEnumeratorSimple - [x] System.Collections.Hashtable - [x] System.Collections.Hashtable.HashtableEnumerator - [x] System.Collections.Queue - [x] System.Collections.Queue.QueueEnumerator - [x] System.Collections.SortedList - [x] System.Collections.SortedList.SortedListEnumerator - [x] System.Collections.Stack - [x] System.Collections.Stack.StackEnumerator - [x] System.ComponentModel.MaskedTextProvider - [ ] System.Configuration.Assemblies.AssemblyHash - [x] System.Delegate - [x] System.Net.Http.Headers.AuthenticationHeaderValue - [x] System.Net.Http.Headers.CacheControlHeaderValue - [x] System.Net.Http.Headers.ContentDispositionHeaderValue - [x] System.Net.Http.Headers.ContentRangeHeaderValue - [x] System.Net.Http.Headers.EntityTagHeaderValue - [x] System.Net.Http.Headers.MediaTypeHeaderValue - [x] System.Net.Http.Headers.MediaTypeWithQualityHeaderValue - [x] System.Net.Http.Headers.NameValueHeaderValue - [x] System.Net.Http.Headers.NameValueWithParametersHeaderValue - [x] System.Net.Http.Headers.ProductHeaderValue - [x] System.Net.Http.Headers.ProductInfoHeaderValue - [x] System.Net.Http.Headers.RangeConditionHeaderValue - [x] System.Net.Http.Headers.RangeHeaderValue - [x] System.Net.Http.Headers.RangeItemHeaderValue - [x] System.Net.Http.Headers.RetryConditionHeaderValue - [x] System.Net.Http.Headers.StringWithQualityHeaderValue - [x] System.Net.Http.Headers.TransferCodingHeaderValue - [x] System.Net.Http.Headers.TransferCodingWithQualityHeaderValue - [x] System.Net.Http.Headers.ViaHeaderValue - [x] System.Net.Http.Headers.WarningHeaderValue - [x] System.OperatingSystem - [ ] System.Runtime.Remoting.Messaging.CallContextRemotingData - [ ] System.Runtime.Remoting.Messaging.CallContextSecurityData - [ ] System.Runtime.Remoting.Messaging.LogicalCallContext - [x] System.Runtime.Serialization.Formatters.Binary.IntSizedArray - [x] System.Runtime.Serialization.Formatters.Binary.SizedArray - [x] System.RuntimeType - [x] System.Version - [x] System.Xml.Schema.XmlAtomicValue - [x] System.Xml.XPath.XPathNavigator - [x] System.Xml.XPath.XPathNodeIterator - [x] System.Xml.XmlNode - [x] string +12200 area-System.Net Add back System.Net.Sockets.ProtocolFamily and TransmitFileOptions Part of #11788. @stephentoub @CIPop @davidsh +12203 area-System.Runtime PlatformApis.IsWindows is evaluating true on macOS 10.12/mono 4.6.1 ### Given Had a functioning Kestrel app. Upgraded to macOS 10.12 and mono 4.6.1. Executed `dotnet restore` and then executed `dotnet run` as usual. ### Expected Nominal app startup ### Observed Unhandled Exception: `System.DllNotFoundException: WS2_32.dll` (full stack trace below) ### Notes One doesn't expect `WS2_32.dll` to be present on non-Windows systems, and there is [a guard against attempting to P/Invoking into it on non-Windows platforms](https://github.com/aspnet/KestrelHttpServer/blob/1a273f5a34cae8ea39d99bd5e7ff64eb6057d142/src/Microsoft.AspNetCore.Server.Kestrel/Internal/Networking/Libuv.cs#L202-L205), but it appears that the guard now returns `true` after updating to 10.12. --- Full stack trace: ``` [ERROR] FATAL UNHANDLED EXCEPTION: System.AggregateException: One or more errors occurred. ---> System.DllNotFoundException: WS2_32.dll at (wrapper managed-to-native) Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv+NativeMethods:WSAIoctl (intptr,int,int*,uint,int*,int,uint&,intptr,intptr) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind_windows_extras (Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle handle) [0x0001f] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind (Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle handle, Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.SockAddr& addr, System.Int32 flags) [0x00023] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle.Bind (Microsoft.AspNetCore.Server.Kestrel.ServerAddress address) [0x0004a] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListenerPrimary.CreateListenSocket () [0x00040] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener+<>c.b__6_0 (System.Object state) [0x00012] in <7fa2145c3191420fad86bd0c6af65de7>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:447 at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.ListenerPrimary+d__11.MoveNext () [0x000f5] in <7fa2145c3191420fad86bd0c6af65de7>:0 --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2157 at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:3189 at System.Threading.Tasks.Task.Wait () [0x00000] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:3054 at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelEngine.CreateServer (Microsoft.AspNetCore.Server.Kestrel.ServerAddress address) [0x000e1] in <7fa2145c3191420fad86bd0c6af65de7>:0 ---> (Inner Exception #0) System.DllNotFoundException: WS2_32.dll at (wrapper managed-to-native) Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv+NativeMethods:WSAIoctl (intptr,int,int*,uint,int*,int,uint&,intptr,intptr) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind_windows_extras (Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle handle) [0x0001f] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind (Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle handle, Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.SockAddr& addr, System.Int32 flags) [0x00023] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle.Bind (Microsoft.AspNetCore.Server.Kestrel.ServerAddress address) [0x0004a] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListenerPrimary.CreateListenSocket () [0x00040] in <7fa2145c3191420fad86bd0c6af65de7>:0 at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener+<>c.b__6_0 (System.Object state) [0x00012] in <7fa2145c3191420fad86bd0c6af65de7>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:447 at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.ListenerPrimary+d__11.MoveNext () [0x000f5] in <7fa2145c3191420fad86bd0c6af65de7>:0 <--- ``` +12204 area-System.Globalization Unexpected string in NumberFormatInfo.NumberGroupSeparator "I am testing som basic number formatting with CultureInfo. Any culture I have tested except en-US yields weird results for NumberGroupSeparator. ``` public static void Main(string[] args) { var culture = new CultureInfo(""sv-SE""); Console.WriteLine($""'{culture.NumberFormat.NumberGroupSeparator}'""); Console.WriteLine(1000.ToString(""N"", culture)); } ``` Expected output : ' ' 1 000,00 Actual output: '┬á' 1┬á000,00 " +12205 area-System.IO FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/802/consoleText ``` System.IO.Tests.FileSystemWatcherTests.FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock [FAIL] Didn't observe a deleted event within 3000ms Expected: True Actual: False Stack Trace: at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(WaitHandle eventOccurred, String eventName_NoRetry) at System.IO.Tests.FileSystemWatcherTests.FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock() ``` +12207 area-Meta Make 1.1 only reference 1.1 packages Currently 1.1 builds all packages against their minimum dependencies. This was done to enable any individual package to be installed without having to install the entire set, but since we're shipping 1.1 as a full stack release this characteristic is undesired. +12209 area-System.Runtime Re-introduce members on Attribute The following members on Attribute need to be brought back: - [ ] IsDefaultAttribute - [ ] TypeId - [ ] Match +12211 area-System.Runtime Expose AppDomain.CurrentDomain.GetAssemblies The following are needed in System.ComponentModel.TypeConverter. AppDomain.CurrentDomain.GetAssemblies AppDomain.CurrentDomain.SetupInformation.LicenseFile +12212 area-System.ComponentModel Follow-up changes for System.ComponentModel - [x] Once #11809 is checked in - [x] Make Component derive from MarshalByRefObject - [x] Once #12209 is checked in - [x] Update the attributes in the ComponentModel namespace to implement those methods. As part of that change, we need to revert the change that introduced [this workaround](https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.TypeConverter/src/System/ComponentModel/ComponentModelExtensions.cs) - [x] Once #11769 is done: - [x] Re-introduce the parameter-less constructor on ComponentResourceManager - [x] Remove the implementation of ResourceSet from misc.cs - [x] Once #11769 is done, fixup the following stubs inside the misc.cs file. - [x] ResourceManager_MainAssembly - [x] ResourceManager_GetNeutralResourceLanguage - [x] ResourceManager_IgnoreCase - [x] ResourceManager_GetResourceSet - [x] Once #11655 is done, fixup the following stubs inside the misc.cs file: - [x] Assembly_EscapedCodeBase - [x] Once #12211 is done, fixup the following stubs inside the misc.cs file: - [x] AppDomain_CurrentDomain_SetupInformation_LicenseFile - [x] AppDomain_CurrentDomain_GetAssemblies - [x] Remove dependency to System.Net.WebClient from the DesigntimeLicenseContext type +12213 area-System.Net System.Net.SslStream new APIs for TLS Alert support System.Net.SslStream is not currently supporting TLS Alerts as specified by [RFC 2246](https://www.ietf.org/rfc/rfc2246.txt) sections 7.2.1: Closure alerts and 7.2.2: Error alerts. ## Proposed API In order to support closing the TLS channel gracefully the following async API is proposed: `public virtual System.Threading.Tasks.Task System.Net.SslStream.ShutdownAsync()` ## Details The ShutdownAsync semantics are similar to `Socket.Shutdown(SocketShutdown.Send)` or `WebSocket.CloseOutputAsync`. After ShutdownAsync has been called, the write portion of the full-duplex channel is closed and the channel becomes read-only. The handshake is completed when no more bytes can be read from the SslStream (Read APIs return 0.) ## New API Usage The following code shows usage of the new API as well as new server-side behavior. This as well as tests demonstrating the new behavior to support 7.2.2. during TLS Handshake is available in `SslStreamAlertsTest.cs`, #11489. ``` C# var handshake = new Task[2]; handshake[0] = server.AuthenticateAsServerAsync(certificate); handshake[1] = client.AuthenticateAsClientAsync(certificate.GetNameInfo(X509NameType.SimpleName, false)); await Task.WhenAll(handshake).TimeoutAfter(TestConfiguration.PassingTestTimeoutMilliseconds); var readBuffer = new byte[1024]; await server.ShutdownAsync(); int bytesRead = await client.ReadAsync(readBuffer, 0, readBuffer.Length); // close_notify received by the client. Assert.Equal(0, bytesRead); await client.ShutdownAsync(); bytesRead = await server.ReadAsync(readBuffer, 0, readBuffer.Length); // close_notify received by the server. Assert.Equal(0, bytesRead); ``` ## Pull Requests WIP (tooling/WIP) API change: #11265. Implementation and tests: #11489: +12214 area-System.Security HttpClient + certificate specified throws if certificate is cloned in Linux "Given the following setup: - Website (in this case, IIS hosted) requires client certificates to be specified for accessing an endpoint - .NET Core app specifies a client certificate and makes a request in the following manner ``` csharp // assume certColl is an X509CertificateCollection obtained by using X509Store.Find // Scenario 1: // var clientCert = certcoll[0]; // Scenario works in Linux and Windows // Scenario 2: // var clientCert = new X509Certificate2(certcoll[0].Handle); // Scenario works in Windows only; fails in Linux HttpClientHandler handler = new HttpClientHandler(); handler.ClientCertificates.Add(clientCert); var httpClient = new HttpClient(handler); response = httpClient.GetAsync(""https://some-server/ClientCertificateRequired/"").GetAwaiter().GetResult(); ``` For these scenarios: | | Find certificate from X509Store and use directly | Find certificate and clone | | --- | --- | --- | | Windows | ✔ Succeeds | ✔ Succeeds | | Ubuntu14.04 | ✔ Succeeds | ✖ Fails with CurlException | The failing stack in Linux is: ``` Unhandled Exception: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: Failure when receiving data from the peer at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at ConsoleApplication.Program.Main(String[] args) ``` Repro app is here: https://gist.github.com/iamjasonp/b05da61cb1a30d36b0892915600d36d3 " +12215 area-System.ComponentModel Consider renaming/splitting System.ComponentModel.TypeConverter The work to port the additional ComponentModel types put all of them in the System.ComponentModel.TypeConverter assembly/contract. Since there are more concepts in that assembly than TypeConverter we should consider either renaming this assembly/contract or split the contract into separate pieces. Here are some of the things inside the assembly: - TypeConverter types - Designer support types - Helper types/classes +12217 area-System.Threading Allocating parallel loop slower in core than desktop Certain CoreFX Task operations/scheduling appears to be slower compared to .Net Desktop for certain workloads and machine configurations. Repro: https://github.com/CIPop/perf/tree/master/ThreadPerf/src Instructions: https://github.com/CIPop/perf/blob/master/README.md Initial Perfmon hot-path analysis shows important timing differences on the `TaskReplicator`, `ThreadPoolWorkQueue.Dispatch()` and `intermediateThreadProc` code path. ### Results In summary, the differences are bigger when the number of CPUs increases and can reach up to ~70% decrease in performance for a 16 core box. For the A1 case, an up to 19% performance _increase_ was observed for CoreFX. ![image](https://cloud.githubusercontent.com/assets/8635911/18977396/ca04b512-866e-11e6-91e4-da7613683c50.png) **16Core Dev machine** ``` .Net Desktop 4.6.2: (0): 00:00:03.6069321 (1): 00:00:03.5532334 (2): 00:00:03.5792650 .Net Core: (0): 00:00:05.7018041 (1): 00:00:06.4660423 (2): 00:00:06.2088087 .Net Core is 71.0311631138344 % slower (incl. process creation overheads). ``` **Azure A4 machine** ``` .Net Desktop 4.6.2: (0): 00:00:10.3151684 (1): 00:00:10.6153461 (2): 00:00:10.8002867 .Net Core: (0): 00:00:12.7079665 (1): 00:00:13.2266033 (2): 00:00:13.1223560 .Net Core is 23.5348989000614 % slower (incl. process creation overheads). ``` **Azure DS2 machine** ``` .Net Desktop 4.6.2: (0): 00:00:06.8964238 (1): 00:00:07.0116513 (2): 00:00:06.7201754 .Net Core: (0): 00:00:07.0788306 (1): 00:00:06.6521635 (2): 00:00:06.9412770 .Net Core is 0.44823964489224 % slower (incl. process creation overheads). ``` **Azure A1 machine** ``` .Net Desktop 4.6.2: (0): 00:00:20.7025224 (1): 00:00:20.7083212 (2): 00:00:20.9549189 .Net Core: (0): 00:00:17.7732198 (1): 00:00:16.4779742 (2): 00:00:16.9521813 .Net Core is -17.2535449554775 % slower (incl. process creation overheads). ``` +12218 area-Infrastructure Updating CoreClr dependencies to servicing-24530-01 /cc @dotnet/corefx-contrib +12219 area-System.Diagnostics Using Process.BeginOutputReadLine can lead to lost stdout lines When writing code that creates child processes and needs to capture stdout, I have found that lines of output go missing the following condition: - lots of parallelism... - `ProcessStartInfo.RedirectStandardOutput = true` - `Process.OutputDataReceived += CollectLines` (that is, using the async flow) - `Process.BeginOutputReadLine()` - `Process.WaitForExit(int.MaxValue)` Note that passing `-1` (infinite timespan) to `WaitForExit` does not cause lines go missing (based on my own testing). I have created a little demo app to do this. It repro's on both `netcoreapp1.0` and `net45`: [processredirect.zip](https://github.com/dotnet/corefx/files/501954/processredirect.zip). Just use `dotnet run` to try it out. That being said, you can capture stdout by using `Process.StandardOutput` (which is a `StreamReader`). However to consume this asynchronously and safely you need to use background threads/tasks. In other words: | stdout capture method | using infinite timeout | is flaky | | --- | --- | --- | | `StandardOutput` `StreamReader` | yes | no | | `StandardOutput` `StreamReader` | no | no | | `OutputDataReceived` event | yes | no | | `OutputDataReceived` event | no | **yes** | I think this a problem because it's pretty easy to step into this pitfall. Using the events to capture output is very convenient since you don't have to worry about making background threads or tasks. Also, the internet recommends this method: - http://stackoverflow.com/questions/285760/how-to-spawn-a-process-and-capture-its-stdout-in-net - https://msdn.microsoft.com/en-us/library/system.diagnostics.process.beginoutputreadline(v=vs.110).aspx I have only tried this on Windows, .NET Framework 4.5 and .NET Core (`netcoreapp1.0`). Also, all of this information is related to stdout, but I imagine stderr has the same problem. My `dotnet` info is: ``` Microsoft .NET Core Shared Framework Host Version : 1.0.1 Build : cee57bf6c981237d80aa1631cfe83cb9ba329f12 > dotnet --version 1.0.0-preview2-003131 ``` +12221 area-System.Xml Test failure: System.Xml.Tests.XsltcTestBasicFunctionality/Var2 Opened on behalf of @jiangzeng The test `System.Xml.Tests.XsltcTestBasicFunctionality/Var2` has failed. ``` Assert.True() Failure\r Expected: True\r Actual: False ``` Stack Trace: ``` at System.Xml.Tests.XsltcTestBasicFunctionality.Var2(Object param0, Object param1) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.7.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.81.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Core.Amd64 - AnyCPU-Release Link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20160929.04/workItem/XsltCompiler.Tests/analysis/xunit/System.Xml.Tests.XsltcTestBasicFunctionality~2FVar2 +12222 area-System.Xml Test failure: System.Xml.Tests.XsltcTestFile/Var1 Opened on behalf of @jiangzeng The test `System.Xml.Tests.XsltcTestFile/Var1` has failed. ``` System.IO.FileNotFoundException : xsltc.exe ``` Stack Trace: ``` at XmlCoreTest.Common.XsltVerificationLibrary.SearchPath(String fileName) at System.Xml.Tests.XsltcTestCaseBase.TryCreatePersistedTransformAssembly(String commandLine, Boolean createFromInputFile, Boolean expectedToSucceed, String targetDirectory) at System.Xml.Tests.XsltcTestCaseBase.VerifyTest(String cmdLine, String asmName, Boolean asmCreated, String typeName, String pdbName, Boolean pdbCreated, String baselineFile, Boolean runAssemblyVerification, Boolean loadFromFile) at System.Xml.Tests.XsltcTestFile.Var1(Object param0, Object param1, Object param2, Object param3, Object param4, Object param5, Object param6) ``` Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.7.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.81.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Core.Amd64 - AnyCPU-Release Link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20160929.04/workItem/XsltCompiler.Tests/analysis/xunit/System.Xml.Tests.XsltcTestFile~2FVar1 +12223 area-System.Security Null Reference when trying to add a cert to a store after calling dispose on the cert See this test fix for more details: https://github.com/dotnet/corefx/pull/12220 As part of this fix we should also consider whether we need to add a test case to cover the scenario where a cert does not have a private key in our tests. +12224 area-Meta Add OSX 10.12 RID support to Microsoft.NETCore.Platforms for LTS branch +12225 area-Infrastructure Updating CoreClr dependencies to servicing-24530-02 /cc @dotnet/corefx-contrib +12233 area-Meta 48 warnings during clean build "All of them similar to: ``` D:\j\workspace\windows_nt_debug88592b53\Tools\packageresolve.targets(79,5): warning : Your project is not referencing the "".NETStandard,Version=v1.5"" framework. Add a reference to "".NETStandard,Version=v1.5"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [D:\j\workspace\windows_nt_debug88592b53\src\System.Runtime.Serialization.Json\tests\System.Runtime.Serialization.Json.Tests.csproj] ``` " +12234 area-System.IO Test failure: System.IO.Tests.Directory_Delete_Tests/FileSystemWatcher_Directory_Delete_SymLink & FileSystemWatcher_File_Create_SymLink & FileSystemWatcher_File_Delete_SymLink Opened on behalf of @karelz The test `System.IO.Tests.Directory_Delete_Tests/FileSystemWatcher_Directory_Delete_SymLink` has failed. ``` System.ComponentModel.Win32Exception : No such file or directory ``` Stack Trace: ``` at Interop.libproc.proc_pidpath(Int32 pid) at System.Diagnostics.Process.GetExePath() at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at System.IO.Tests.FileSystemWatcherTest.CreateSymLink(String targetPath, String linkPath, Boolean isDirectory) at System.IO.Tests.Directory_Delete_Tests.<>c__DisplayClass3_0.b__1() at System.IO.Tests.Directory_Delete_Tests.FileSystemWatcher_Directory_Delete_SymLink() ``` Failing tests & configurations: - FileSystemWatcher_Directory_Delete_SymLink - [1.1 - 20160930.01](https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160930.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.Directory_Delete_Tests~2FFileSystemWatcher_Directory_Delete_SymLink) (OSX.1011.amd64.Debug) - FileSystemWatcher_File_Create_SymLink - [1.1 - 20160930.01](https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160930.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.File_Create_Tests~2FFileSystemWatcher_File_Create_SymLink) (OSX.1011.amd64.Debug) - FileSystemWatcher_File_Delete_SymLink - [1.1 - 20160930.01](https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160930.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.File_Delete_Tests~2FFileSystemWatcher_File_Delete_SymLink) (OSX.1011.amd64 -- Debug & Release) +12235 area-System.Security Track System.Security.Cryptography.X509Certificates ns 1.6 update for 1.1.0 release Several tests in System.Security.Cryptography.X509Certificates.Tests require code added in 1.1.0 (to System.Security.Cryptography.X509Certificates) which has not yet pushed to ns1.6. They should be re-enabled once ns1.6 is updated with 1.1.0 bits +12236 area-System.Net Test failure: System.Net.Tests.HttpWebRequestTest/GetResponseAsync_ResourceNotFound_ThrowsWebException Opened on behalf of @karelz The test `System.Net.Tests.HttpWebRequestTest/GetResponseAsync_ResourceNotFound_ThrowsWebException` has failed. ``` Assert.Equal() Failure Expected: ProtocolError Actual: UnknownError ``` Stack Trace: ``` at System.Net.Tests.HttpWebRequestTest.d__46.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Failing configurations: - [1.1 - 20160930.01](https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160930.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FGetResponseAsync_ResourceNotFound_ThrowsWebException) (Redhat.72.amd64.Release) - [1.1 - 20160930.02](https://mc.dot.net/#/product/netcore/release~2F1.1.0/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20160930.02/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FGetResponseAsync_ResourceNotFound_ThrowsWebException) (Redhat.72.amd64.Release) +12239 area-System.Xml add missing members of System.Xml These still seem to be missing ``` T:System.Xml.IFragmentCapableXmlDictionaryWriter P:System.Xml.IFragmentCapableXmlDictionaryWriter.CanFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.get_CanFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.EndFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.StartFragment(System.IO.Stream,System.Boolean) M:System.Xml.IFragmentCapableXmlDictionaryWriter.WriteFragment(System.Byte[],System.Int32,System.Int32) T:System.Xml.IStreamProvider M:System.Xml.IStreamProvider.GetStream M:System.Xml.IStreamProvider.ReleaseStream(System.IO.Stream) T:System.Xml.IXmlBinaryReaderInitializer M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlBinaryWriterInitializer M:System.Xml.IXmlBinaryWriterInitializer.SetOutput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean) T:System.Xml.IXmlMtomReaderInitializer M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlMtomWriterInitializer M:System.Xml.IXmlMtomWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) T:System.Xml.IXmlTextReaderInitializer M:System.Xml.IXmlTextReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlTextReaderInitializer.SetInput(System.IO.Stream,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlTextWriterInitializer M:System.Xml.IXmlTextWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Boolean) M:System.Xml.XmlDictionaryReader.CreateBinaryReader(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateBinaryReader(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.IO.Stream,System.Text.Encoding[],System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryReader.CreateTextReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.GetNonAtomizedNames(System.String@,System.String@) M:System.Xml.XmlDictionaryReader.ReadElementContentAsDateTime M:System.Xml.XmlDictionaryReader.ReadString M:System.Xml.XmlDictionaryReader.ReadString(System.Int32) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) M:System.Xml.XmlDictionaryWriter.WriteBase64Async(System.Byte[],System.Int32,System.Int32) M:System.Xml.XmlDictionaryWriter.WriteValue(System.Xml.IStreamProvider) M:System.Xml.XmlDictionaryWriter.WriteValueAsync(System.Xml.IStreamProvider) T:System.Xml.Schema.Extensions M:System.Xml.Schema.Extensions.GetSchemaInfo(System.Xml.Linq.XAttribute) M:System.Xml.Schema.Extensions.GetSchemaInfo(System.Xml.Linq.XElement) M:System.Xml.Schema.Extensions.Validate(System.Xml.Linq.XAttribute,System.Xml.Schema.XmlSchemaObject,System.Xml.Schema.XmlSchemaSet,System.Xml.Schema.ValidationEventHandler) M:System.Xml.Schema.Extensions.Validate(System.Xml.Linq.XAttribute,System.Xml.Schema.XmlSchemaObject,System.Xml.Schema.XmlSchemaSet,System.Xml.Schema.ValidationEventHandler,System.Boolean) M:System.Xml.Schema.Extensions.Validate(System.Xml.Linq.XDocument,System.Xml.Schema.XmlSchemaSet,System.Xml.Schema.ValidationEventHandler) M:System.Xml.Schema.Extensions.Validate(System.Xml.Linq.XDocument,System.Xml.Schema.XmlSchemaSet,System.Xml.Schema.ValidationEventHandler,System.Boolean) M:System.Xml.Schema.Extensions.Validate(System.Xml.Linq.XElement,System.Xml.Schema.XmlSchemaObject,System.Xml.Schema.XmlSchemaSet,System.Xml.Schema.ValidationEventHandler) M:System.Xml.Schema.Extensions.Validate(System.Xml.Linq.XElement,System.Xml.Schema.XmlSchemaObject,System.Xml.Schema.XmlSchemaSet,System.Xml.Schema.ValidationEventHandler,System.Boolean) M:System.Xml.Schema.XmlSchemaObjectCollection.GetEnumerator ``` +12242 area-System.Collections Intermittent: CaseInsensitiveComparerTests.Default_Compare_TurkishI failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/865/consoleText ``` System.Collections.Tests.CaseInsensitiveComparerTests.Default_Compare_TurkishI [FAIL] Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Collections.NonGeneric\tests\CaseInsentiveComparerTests.cs(203,0): at System.Collections.Tests.CaseInsensitiveComparerTests.Default_Compare_TurkishI() ``` +12243 area-System.Runtime Add Unsafe.CopyBlockUnaligned That uses the `.unaligned` prefix Has come up in https://github.com/dotnet/corefxlab/issues/848 and https://github.com/aspnet/HttpAbstractions/pull/717 /cc @jkotas +12244 area-Meta Net standard docs Update the NETStandard docs with API versions and TFMs mappings. Though we aren't specifically using ns1.7 to slot in any API (due to the 2.0 plans) we should update the docs to represent it. Fixes #10556 /cc @Petermarcu +12245 area-System.Linq Make Linq.Expression tests runnable with AOT and make sure they run regularly. We had some recent test changes that would not be runnable under AOT for sure and nothing was broken. That proves that we do not run Linq.Expressions with AOT. Also, attempts to run tests with AOT wee not very successful. We need to make sure the tests are runnable with AOT. That includes figuring out how to exclude scenarios that are known not AOT compatible - like usage of Reflection.Emit in tests. Most likely introduce some `#if` in the code and, parameterise the csproj file to not take dependencies on stuff like Ref.Emit when targeting AOT. +12246 area-Infrastructure Updating CoreClr dependencies to servicing-24530-03 /cc @dotnet/corefx-contrib +12247 area-System.Runtime Add missing members in System.Runtime.Versioning namespace Currently we only have FrameworkName and NonVersionableAttribute. We also need ``` T:System.Runtime.Versioning.ComponentGuaranteesAttribute M:System.Runtime.Versioning.ComponentGuaranteesAttribute.#ctor(System.Runtime.Versioning.ComponentGuaranteesOptions) P:System.Runtime.Versioning.ComponentGuaranteesAttribute.Guarantees M:System.Runtime.Versioning.ComponentGuaranteesAttribute.get_Guarantees T:System.Runtime.Versioning.ComponentGuaranteesOptions F:System.Runtime.Versioning.ComponentGuaranteesOptions.Exchange F:System.Runtime.Versioning.ComponentGuaranteesOptions.None F:System.Runtime.Versioning.ComponentGuaranteesOptions.SideBySide F:System.Runtime.Versioning.ComponentGuaranteesOptions.Stable F:System.Runtime.Versioning.ComponentGuaranteesOptions.value__ T:System.Runtime.Versioning.ResourceConsumptionAttribute M:System.Runtime.Versioning.ResourceConsumptionAttribute.#ctor(System.Runtime.Versioning.ResourceScope) M:System.Runtime.Versioning.ResourceConsumptionAttribute.#ctor(System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope) P:System.Runtime.Versioning.ResourceConsumptionAttribute.ConsumptionScope M:System.Runtime.Versioning.ResourceConsumptionAttribute.get_ConsumptionScope P:System.Runtime.Versioning.ResourceConsumptionAttribute.ResourceScope M:System.Runtime.Versioning.ResourceConsumptionAttribute.get_ResourceScope T:System.Runtime.Versioning.ResourceExposureAttribute M:System.Runtime.Versioning.ResourceExposureAttribute.#ctor(System.Runtime.Versioning.ResourceScope) P:System.Runtime.Versioning.ResourceExposureAttribute.ResourceExposureLevel M:System.Runtime.Versioning.ResourceExposureAttribute.get_ResourceExposureLevel T:System.Runtime.Versioning.ResourceScope F:System.Runtime.Versioning.ResourceScope.AppDomain F:System.Runtime.Versioning.ResourceScope.Assembly F:System.Runtime.Versioning.ResourceScope.Library F:System.Runtime.Versioning.ResourceScope.Machine F:System.Runtime.Versioning.ResourceScope.None F:System.Runtime.Versioning.ResourceScope.Private F:System.Runtime.Versioning.ResourceScope.Process F:System.Runtime.Versioning.ResourceScope.value__ T:System.Runtime.Versioning.VersioningHelper M:System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope) M:System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type) ``` +12249 area-System.Net Move System.Net.Sockets to netstandard 1.7 Moves System.Net.Sockets to netstandard 1.7. Thanks to @ericstj for the help with this! Fixes #11812. cc: @stephentoub, @CIPop, @davidsh, @karelz, @weshaggard +12251 area-System.Runtime Add missing members of Delegate ``` M:System.Delegate.#ctor(System.Object,System.String) M:System.Delegate.#ctor(System.Type,System.String) P:System.Delegate.Method M:System.Delegate.get_Method M:System.Delegate.Clone M:System.Delegate.CombineImpl(System.Delegate) M:System.Delegate.CreateDelegate(System.Type,System.Reflection.MethodInfo) M:System.Delegate.CreateDelegate(System.Type,System.Reflection.MethodInfo,System.Boolean) M:System.Delegate.CreateDelegate(System.Type,System.Object,System.Reflection.MethodInfo) M:System.Delegate.CreateDelegate(System.Type,System.Object,System.Reflection.MethodInfo,System.Boolean) M:System.Delegate.CreateDelegate(System.Type,System.Object,System.String) M:System.Delegate.CreateDelegate(System.Type,System.Object,System.String,System.Boolean) M:System.Delegate.CreateDelegate(System.Type,System.Object,System.String,System.Boolean,System.Boolean) M:System.Delegate.CreateDelegate(System.Type,System.Type,System.String) M:System.Delegate.CreateDelegate(System.Type,System.Type,System.String,System.Boolean) M:System.Delegate.CreateDelegate(System.Type,System.Type,System.String,System.Boolean,System.Boolean) M:System.Delegate.DynamicInvokeImpl(System.Object[]) M:System.Delegate.GetMethodImpl M:System.Delegate.RemoveImpl(System.Delegate) ``` and ``` M:System.MulticastDelegate.#ctor(System.Object,System.String) M:System.MulticastDelegate.#ctor(System.Type,System.String) M:System.MulticastDelegate.CombineImpl(System.Delegate) M:System.MulticastDelegate.GetMethodImpl M:System.MulticastDelegate.RemoveImpl(System.Delegate) ``` +12252 area-System.IO CI Timeout during FileSystemWatcher tests This built for ~35 mins then began running tests. Test logging stops after ~10 mins. Eventually the run times out, apparently during the FileSystemWatcher tests http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/882/consoleFull#147575877179494335-f7bd-47d0-8771-8661e00c2db2 I'm not sure why it throws `System.DllNotFoundException: Unable to load DLL 'KERNEL32.DLL':` that may just be an artefact of how things are being torn down, but the logging seems to clearly be from `System.IO.FileSystem.Watcher.Tests.csproj`. +12254 area-Serialization Two members missing from BinaryFormatter ``` M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler,System.Runtime.Remoting.Messaging.IMethodCallMessage) M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserializeMethodResponse(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler,System.Runtime.Remoting.Messaging.IMethodCallMessage) ``` @stephentoub did you intentionally omit these two? +12255 area-System.Runtime Complete S.R.ConstrainedExecution namespace Just two missing types, both attributes. ``` T:System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute T:System.Runtime.ConstrainedExecution.ReliabilityContractAttribute ``` +12257 area-System.Runtime Complete System.Runtime.CompilerServices namespace Just a few missing attributes ``` T:System.Runtime.CompilerServices.CompilationRelaxations T:System.Runtime.CompilerServices.CompilerMarshalOverride T:System.Runtime.CompilerServices.DebugInfoGenerator T:System.Runtime.CompilerServices.FixedAddressValueTypeAttribute T:System.Runtime.CompilerServices.IRuntimeVariables T:System.Runtime.CompilerServices.MethodCodeType T:System.Runtime.CompilerServices.RuleCache`1 T:System.Runtime.CompilerServices.SpecialNameAttribute ``` +12258 area-System.Diagnostics Complete System.Diagnostics.SymbolStore namespace These types are missing. ``` T:System.Diagnostics.SymbolStore.ISymbolBinder T:System.Diagnostics.SymbolStore.ISymbolBinder1 T:System.Diagnostics.SymbolStore.ISymbolDocument T:System.Diagnostics.SymbolStore.ISymbolDocumentWriter T:System.Diagnostics.SymbolStore.ISymbolMethod T:System.Diagnostics.SymbolStore.ISymbolNamespace T:System.Diagnostics.SymbolStore.ISymbolReader T:System.Diagnostics.SymbolStore.ISymbolScope T:System.Diagnostics.SymbolStore.ISymbolVariable T:System.Diagnostics.SymbolStore.ISymbolWriter T:System.Diagnostics.SymbolStore.SymAddressKind T:System.Diagnostics.SymbolStore.SymbolToken T:System.Diagnostics.SymbolStore.SymDocumentType T:System.Diagnostics.SymbolStore.SymLanguageType T:System.Diagnostics.SymbolStore.SymLanguageVendor ``` +12259 area-System.Runtime Create new PreviewAttribute that generates compiler warning for using preview/beta functionality "We have ObsoleteAttribute to generated a compiler warning when users are using obsolete APIs. Similarly it would be amazing to have a PreviewAttribute for functionality that is still considered ""beta"" and not yet finalized. This notifies the user that this API might change or not be 100% functional. The alternative is to create special beta-namespaces or put beta in the member names, but that would most definitely create breaking changes once the new APIs are finalized. " +12260 area-System.Diagnostics Complete System.Diagnostics namespace These types are either missing or incomplete. - [x] T:System.Diagnostics.CorrelationManager - [x] T:System.Diagnostics.DebuggerStepperBoundaryAttribute - [x] T:System.Diagnostics.DebuggerVisualizerAttribute - [x] T:System.Diagnostics.MonitoringDescriptionAttribute - [x] T:System.Diagnostics.Process - [x] T:System.Diagnostics.ProcessModule - [x] T:System.Diagnostics.ProcessModuleCollection - [x] T:System.Diagnostics.ProcessThread - [x] T:System.Diagnostics.ProcessThreadCollection - [x] T:System.Diagnostics.ProcessWindowStyle - [x] T:System.Diagnostics.StackFrame - [x] T:System.Diagnostics.StackTrace - [x] T:System.Diagnostics.SwitchAttribute - [x] T:System.Diagnostics.SwitchLevelAttribute - [x] T:System.Diagnostics.TraceListener Some of these will need to throw PNSE, eg., many of the missing members of Process. +12266 area-System.Net Add WebClient.CachePolicy Uncomment it now that we've updated to newer corefx packages that have the required types. cc: @ericeil https://github.com/dotnet/corefx/issues/12137 +12272 area-System.Runtime Please add TryParse and ChangeType generic to System.Convert class "In addition to ToInt32() and all other parsing things. System.Convert should have generic parser ``` C# public static bool TryParse(string s,out T v) where T : struct,IConvertible,IFormattable,IComparable,IEquatable { return T.TryParse(s,out v); } public static T ChangeType(object obj) where T : IConvertible { T v; ChangeType(obj,out v); return v; } public static bool ChangeType(object obj,out T v) where T : IConvertible { try { /// Should be better algorithm instead of try/catch + unboxing v = (T)Convert.ChangeType(obj,typeof(T)); return true; } catch { v = default(T); return false; } } /// usage int i; if(Convert.TryParse(""123456"",out i)) DoSomething(i); double d; if(Convert.ChangeType(i,out d)) DoSomething(d); ``` " +12273 area-System.Xml System.Xml.Tests.CTransformStrStrTest.TransformStrStr9 test failed http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/925/consoleText ``` System.Xml.Tests.CTransformStrStrTest.TransformStrStr9() [FAIL] System.IO.IOException : The process cannot access the file 'D:\j\workspace\windows_nt_de---4526f5ff\bin\tests\Windows_NT.AnyCPU.Debug\System.Xml.Xsl.XslTransformApi.Tests\netstandard1.7\netcoreapp1.1\testfiles\testdata\xsltapi\fruits.xml' because it is being used by another process. Stack Trace: at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) at System.Xml.XmlTextReaderImpl.OpenUrl() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.XPath.XPathDocument.LoadFromReader(XmlReader reader, XmlSpace space) at System.Xml.XPath.XPathDocument..ctor(String uri, XmlSpace space) at System.Xml.Xsl.XslTransform.Transform(String inputfile, String outputfile, XmlResolver resolver) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Private.Xml\tests\Xslt\XslTransformApi\CXslTransform.cs(2226,0): at System.Xml.Tests.CTransformStrStrTest.TransformStrStr9() ``` +12275 area-Meta Running tests from Visual Studio insists on copying old product binaries I'm not exactly sure on the steps to consistently repro this, but what I'm seeing is this, for the `System.Linq.Expressions` project: - Running `msbuild` from the command line drops the privately built product binary into `bin\tests\AnyOS.AnyCPU.Debug\System.Linq.Expressions.Tests\netcoreapp1.0` - Subsequently running the test project from Visual Studio, with the above location as the working directory, triggers a build and it copies an older file to the folder above - The test runner fails to load the binary I'll try to dig a little deeper to figure out where it copies the stale file from. There's no consistent workaround; I mostly try to manually copy files into the output folder while hoping that pressing F5 in Visual Studio doesn't cause it to get overwritten. +12276 area-System.IO System.IO.FileSystem.Watcher.Tests.dll segfault on OSX in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/934/console ``` OSX.AnyCPU.Debug/System.IO.FileSystem.Watcher.Tests/netcoreapp1.0/RunTests.sh: line 203: 33596 Segmentation fault: 11 ./corerun xunit.console.netcore.exe System.IO.FileSystem.Watcher.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.0tests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests ``` +12277 area-System.Linq Adding instruction assertion mechanism for expression interpreter. Initial iteration on pretty printing of expression interpreter instruction stream in order to perform asserts in test code. The functionality leverages some of the existing `DebugView` printing for instructions that was already present in the library. It adds an internal `DebugView` to the `LightLambda` type, which can be used to retrieve the instructions in a pretty printed form. Note the approach differs a bit from the IL visualizer for the expression compiler, where we have to peek into implementation details of `DynamicMethod` etc. While we could also use private reflection here, it seems much more pragmatic to add the printing support in the runtime library (adding to already existing support for `DebugView`-like functionality) and limit the test/product boundary contract to retrieving just the one `DebugView` property. +12279 area-Infrastructure Updating CoreClr dependencies to servicing-24601-01 /cc @dotnet/corefx-contrib +12281 area-System.Collections HashSetEqualityComparer is not marked as Serializable On .NET 4.6 HashSetEqualityComparer is marked as Serializable. https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/HashSetEqualityComparer.cs compared to: http://referencesource.microsoft.com/#System.Core/System/Collections/Generic/HashSetEqualityComparer.cs,b81a34218101efe7,references Thank you. +12282 area-System.Net HttpWebRequest internally throws 2 exceptions "Create a .NET Core 1.0.1 console project with this line of code: **HttpWebRequest.CreateHttp(""https://www.google.ca/"").GetResponseAsync().Wait();** Execute it and examine the output window: Exception thrown: 'System.PlatformNotSupportedException' in System.Net.Requests.dll Exception thrown: 'System.ArgumentNullException' in System.Private.CoreLib.ni.dll **This occurs on every call, which cannot be good for performance.** The PlatformNotSupportedException can be avoided by setting the HttpWebRequest object .Proxy = null, or setting HttpWebRequest.DefaultWebProxy = null; I have not yet found a way to avoid the ArgumentNullException (some SafeHandle cannot be null) Stack trace top 2 items show: System.Private.CoreLib.ni.dll!System.StubHelpers.StubHelpers.SafeHandleAddRef(System.Runtime.InteropServices.SafeHandle pHandle, ref bool success) System.Net.Http.dll!System.Net.Http.WinHttpHandler.StartRequest(object obj) " +12283 area-System.Linq Should we check source.Count every time SelectListPartitionIterator.MoveNext is called? Currently, we check `source.Count` every time we iterate through a `SelectListPartitionIterator`: https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Select.cs#L713. Presumably, this is so that if we update the `IList` in question while we are iterating the sequence returned by Skip/Take, we will still run the selector on the elements added. For example: ``` cs List ids = GetCustomerIds(); foreach (var c in ids.Select(i => Customer.From(i)).Skip(5)) { if (c.HasChildren) { ids.AddRange(c.ChildrenIds); // we will pass over these in the foreach loop } } ``` However, this will do a dead stop the moment we modify the source list: ``` cs foreach (int id in ids.Select(i => Customer.From(i))) // no .Skip(5) { if (c.HasChildren) { // Instead of indexing into the list, we're getting it's enumerator here // AddRange mutates ids._version, which causes the enumerator's MoveNext to return false ids.AddRange(c.ChildrenIds); } } ``` My question is, should adding stuff to the list while enumerating from `Skip` be a supported scenario? It seems like [during RC1](https://github.com/dotnet/corefx/blob/release/1.0.0-rc1/src/System.Linq/src/System/Linq/Enumerable.cs#L832-L848) we would just stop during `Select(...).Take` if the source was modified during enumeration, so it's very unlikely people are going to depend on this change. Perhaps we should just cache the count when the first `MoveNext` is called, e.g. ``` cs private int _count; public override bool MoveNext() { switch (_state) { case 1: _count = _source.Count; _state = 2; goto case 2; case 2: if (_index <= _maxIndexInclusive && _index < _count) { ... } } } ``` This will still not match the original behavior of stopping once the source is modified. However, it will be faster than the current behavior, which enumerates the entire list taking into account any modifications that have occurred even after the first `MoveNext`, since we are now caching `_count`. (Additionally, it will still preserve behavior in cases where the list is mutated after `Skip` is called, but before it's actually iterated.) @stephentoub, @VSadov, @JonHanna +12287 area-System.Collections Add ArrayBuilder struct, delete LowLevelList This commit adds a new, lightweight `ValueList` type that has the same semantics as `List`, except it's a struct so there's no heap allocation for the list. I've used it in `Enumerable.ToArray` to avoid an allocation as well as `Uri.Segments`; I'm sure there are other places it can be used as well, so I added it in Common. All of the argument validation is done as Debug.Asserts so it's easier for the JIT to do inlining. Additionally, there is no `_version` field so `MoveNext` can be inlined. (Unfortunately there is not a way to check this even in debug, since `ValueList` is a struct so we can't pass a reference to it to the enumerator.) The type implements most of the commonly-used methods of `List` (Add, indexer, Count, etc). as well as a few other methods: - `AsArray()` - returns the underlying backing store for the list, which may have some trailing nulls at the end. - `AsArray(out int count)` - returns the underlying backing store for the list, and also writes to an out param indicating how many elements are represented by the array. - `AsOrToArray()` - returns the backing array if it can just hold all of the items in the list, or else copies the relevant elements to a new array. I'm temporarily marking no-merge, since there's still work do be done (adding Common tests, xml docs, etc.). cc @stephentoub, @justinvp; what do you think of adding this type? It's an extra hundred lines or so, but in exchange we get to delete LowLevelList which is ~600. Fixes #12177 +12290 area-Serialization XmlSerializerNamespaces.ToArray throws InvalidCastException XmlSerializerNamespaces wraps an ArrayList, whose parameterless ToArray() returns an object[]. XmlSerializerNamespaces.ToArray tries to cast the resulting object[] to an XmlQualifiedName[], and blows up: https://github.com/dotnet/corefx/blob/a8c3be08889f8b997b3129eb170b55ba211ab9a6/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializerNamespaces.cs#L77 +12292 area-System.Runtime Convert.DBNull != DBNull.Value System.Convert.DBNull needs to return DBNull.Value. DBNull needs to be type-forwarded down to and exposed from System.Runtime, otherwise the two different DBNull types don't have the same type identity. Convert.IsDBNull also fails to correctly identify DBNull.Value, and TypeCode.DBNull is missing. cc: @weshaggard, @danmosemsft +12294 area-Meta Packages on nuget.org are missing Git sha / TFS ID It seems this regressed, e.g. [System.Collections 4.0.11](https://www.nuget.org/packages/System.Collections/4.0.11) doesn't have the Git/TFS information embedded, while [System.Collections 4.0.11-rc2-24027](https://www.nuget.org/packages/System.Collections/4.0.11-rc2-24027) did: ![image](https://cloud.githubusercontent.com/assets/1376924/19022129/edf960bc-88d0-11e6-9b2c-f96e52f0d834.png) vs. ![image](https://cloud.githubusercontent.com/assets/1376924/19022133/f8ae6444-88d0-11e6-957c-e8666adbf867.png) +12295 area-System.Security Port additional System.Security.Cryptography.X509Certificates members Add additional members on top of issue #9986 ``` M:X509Certificate.#ctor(byte[],SecureString) +1 day for SecureString M:X509Certificate.#ctor(byte[],SecureString,X509KeyStorageFlags) M:X509Certificate.#ctor(SerializationInfo,StreamingContext) implies adding ISerializable and IDeserializationCallback M:X509Certificate.#ctor(string,SecureString) M:X509Certificate.#ctor(string,SecureString,.X509KeyStorageFlags) M:X509Certificate.CreateFromCertFile(string) assuming simple mapping to ctor(string fileName) M:X509Certificate.CreateFromSignedFile(string) assuming simple mapping to ctor(string fileName) M:X509Certificate.Export(X509ContentType,SecureString) M:X509Certificate.Import(byte[]) assuming simple mapping to ctor(byte[] rawData) M:X509Certificate.Import(byte[],SecureString,X509KeyStorageFlags) M:X509Certificate.Import(byte[],string,X509KeyStorageFlags) M:X509Certificate.Import(string) M:X509Certificate.Import(string,SecureString,X509KeyStorageFlags) M:X509Certificate.Import(string,string,X509KeyStorageFlags) M:X509Certificate.Reset M:X509Certificate2.#ctor(byte[],SecureString) M:X509Certificate2.#ctor(byte[],SecureString,X509KeyStorageFlags) M:X509Certificate2.#ctor(SerializationInfo,StreamingContext) M:X509Certificate2.#ctor(string,SecureString) M:X509Certificate2.#ctor(string,SecureString,X509KeyStorageFlags) M:X509Certificate2.Verify M:X509Chain.#ctor(System.Boolean useMachineContext) assuming simple field and use with chain M:X509Chain.#ctor(System.IntPtr chainContext) assuming windows only; maps to SafeHandle P:X509Chain.ChainContext assuming windows only (IntPtr) M:X509Chain.get_ChainContext M:X509Chain.Create depends on CryptoConfig M:X509Chain.Reset variable clear P:X509ChainElementCollection.IsSynchronized Already implemented explicitly on ICollection. Remove explicit M:X509ChainElementCollection.get_IsSynchronized P:X509ChainElementCollection.SyncRoot M:X509ChainElementCollection.get_SyncRoot P:X509ExtensionCollection.IsSynchronized Already implemented explicitly on ICollection. Remove explicit M:X509ExtensionCollection.get_IsSynchronized P:X509ExtensionCollection.SyncRoot M:X509ExtensionCollection.get_SyncRoot M:X509Store.#ctor(System.IntPtr storeHandle) assuming windows only (IntPtr) using StorePal(SafeCertStoreHandle certStore) M:X509Store.#ctor(StoreLocation) assuming simple mapping to PAL.FromSystemStore M:X509Store.#ctor(StoreName) assuming simple mapping to PAL.FromSystemStore M:X509Store.#ctor(string storeName) P:X509Store.StoreHandle assuming windows only (IntPtr) M:X509Store.get_StoreHandle M:X509Store.AddRange(X509Certificate2Collection) Delegates to Add and Remove M:X509Store.Close Same as Dispose M:X509Store.RemoveRange(X509Certificate2Collection) Delegates to Add and Remove ``` +12302 area-System.Security Port System.Security.Cryptography.SignatureDescription public class SignatureDescription Depends on CryptoConfig.CreateFromName(string) ``` M.SignatureDescription.#ctor M.SignatureDescription.#ctor(System.Security.SecurityElement) P.SignatureDescription.DeformatterAlgorithm P.SignatureDescription.DigestAlgorithm P.SignatureDescription.FormatterAlgorithm P.SignatureDescription.KeyAlgorithm M.SignatureDescription.CreateDeformatter(System.Security.Cryptography.AsymmetricAlgorithm) M.SignatureDescription.CreateDigest M.SignatureDescription.CreateFormatter(System.Security.Cryptography.AsymmetricAlgorithm) ``` +12304 area-System.Security Port System.Security.Cryptography.MaskGenerationMethod and PKCS1MaskGenerationMethod ``` public abstract class MaskGenerationMethod M:MaskGenerationMethod.#ctor M:MaskGenerationMethod.GenerateMask(System.Byte[],System.Int32) public class PKCS1MaskGenerationMethod : MaskGenerationMethod M:PKCS1MaskGenerationMethod.#ctor P:PKCS1MaskGenerationMethod.HashName ``` +12307 area-Meta Port NETCoreApp-specific API changes to master Need to port https://github.com/dotnet/corefx/commit/6b799df71ca7687286e96596d4124e43bd9d3fae to master +12309 area-System.Reflection Reflection APIs missing in the implemementation See https://github.com/dotnet/corefx/pull/12187. These missing APIs were not detected by the tooling before because of the inconsistencies in the mscorlib forwarder in the CoreCLR targeting pack. ``` MembersMustExist : Member 'System.Type.GetType(System.String, System.Func, System.Func)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Type.GetType(System.String, System.Func, System.Func, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Type.GetType(System.String, System.Func, System.Func, System.Boolean, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Type.IsContextful.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Type.IsContextfulImpl()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Assembly.add_ModuleResolve(System.Reflection.ModuleResolveEventHandler)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Assembly.remove_ModuleResolve(System.Reflection.ModuleResolveEventHandler)' does not exist in the implementation but it does exist in the contract. ``` +12313 area-System.Security Port System.Security.Cryptography.CipherMode.CFB and .OFB Add the CFB and OFB enum values to CipherMode enum. Add [BrowsableNever]. Throw NotSupportedException (or PNSE) ``` public enum CipherMode { CBC = 1, ECB = 2, OFB = 3, CFB = 4, CTS = 5 } ``` +12315 area-System.Security Port AsymmetricAlgorithm.FromXmlString, ToXmlString and other missing members ``` P:KeyExchangeAlgorithm P:SignatureAlgorithm M:Clear M:Create M:Create(System.String) M:FromXmlString(System.String) M:ToXmlString(System.Boolean) ``` Since the ToXmlString and FromXmlString are used frequently, they will be ported and leverage the System.Xml work that was also ported. +12316 area-System.Security Port System.Security.Cryptography.HMAC.BlockSizeValue Default value is 64. Must also ensure any other HMAC-derived classes including HMACSHA1 (64) HMACSHA256 (64) HMACSHA384 (128) HMACSHA512 (128) ``` protected int BlockSizeValue { get {} set {} } ``` Value should flow down to provider, and appropriate tests written for that. +12318 area-Infrastructure Updating CoreClr dependencies to servicing-24603-01 /cc @dotnet/corefx-contrib +12319 area-System.Net Supports TLS alerts for cert validation for non-Windows platforms Tracking TLS Alert TODO items for non-Windows platforms (#11489, 1. `close_notify` implementation 2. TLS handshake implementation: please note that in order to extract the exact error during handshake, `Win32Exception.NativeErrorCode` is used (e.g. `SEC_E_ILLEGAL_MESSAGE`) +12320 area-System.Security Port System.Security.Cryptography.PaddingMode.ANSIX923 and ISO10126 Add ANSIX923 and ISO10126 for PaddingMode enum Other classes that may need uptake: RijndaelManagedTransform (depending on timing of this new class) SymmetricAlgorithm UniversalCryptoDecryptor ``` public enum PaddingMode { None = 1, PKCS7 = 2, Zeros = 3, ANSIX923 = 4, ISO10126 = 5 } ``` +12322 area-System.IO Port #11349: Use rooted path for symlink creation in IO tests port to release/1.1.0: https://github.com/dotnet/corefx/pull/11349 resolves https://github.com/dotnet/corefx/issues/12234 +12323 area-System.Security Port additional System.Security.Cryptography.RandomNumberGenerator members Dependency: CryptoConfig Add the following members ``` M:RandomNumberGenerator.Create(System.String) Requires CryptoConfig M:RandomNumberGenerator.GetBytes(System.Byte[],System.Int32,System.Int32) M:RandomNumberGenerator.GetNonZeroBytes(System.Byte[]) Strips off zeros; does not require native call ``` +12325 area-System.Security Make ICollection members non-explicit on AsnEncodedDataCollection and OidCollection These ICollection members should not be implemented explicitly for ns2.0 ``` P:OidCollection.IsSynchronized P:OidCollection.SyncRoot P:AsnEncodedDataCollection.IsSynchronized P:AsnEncodedDataCollection.SyncRoot ``` +12327 area-System.Security Port System.Security.Cryptography.CryptoConfig - Hard-code various algorithm names, cross referencing Mono - Add Create(string) factory methods to various algorithm classes per netstandard2.0 ``` public class CryptoConfig M:CryptoConfig.#ctor P:CryptoConfig.AllowOnlyFipsAlgorithms M:CryptoConfig.CreateFromName(System.String) M:CryptoConfig.CreateFromName(System.String,System.Object[]) M:CryptoConfig.EncodeOID(System.String) M:CryptoConfig.MapNameToOID(System.String) ``` Also these (but throw PNSE) ``` public static void AddAlgorithm(System.Type algorithm, params string[] names) { } public static void AddOID(string oid, params string[] names) { } ``` +12328 area-System.Net Adding tests for Uri and UriParser Fixes #12156 Adding tests for the recent added classes System.Uri and UriParser cc: @AlexGhiondea for copyright headers since all UriParser tests are ported from mono. cc: @danmosemsft @CIPop +12329 area-Meta xUnit console runner should not use locally built assemblies while running If you change a piece of code to behave incorrectly that the xUnit console runner happens to use, then instead of reporting test failures the console runner might not work correctly. For example, I once messed up `Path.Combine` so that the runner had problems finding the test assembly, so I had to mentally go through the code and see what was wrong. Another time, I messed up `Buffer.MemoryCopy`, but _only_ for unaligned data, so I had no idea what was wrong when I pasted the code into a console application. I ended up having to put `Console.WriteLine` in the MemoryCopy code (which was complex because WriteLine uses that function) to see what was going on. It would be nice if the assemblies the test runner runs on are separated from the versions that are being tested, so it's easier to change commonly-used functions. cc @hughbe +12331 area-System.Net Consider removing netcore50 from the list of TFMs actively targeted by the System.Net.Sockets build "See discussion here: https://github.com/dotnet/corefx/pull/12249#pullrequestreview-2423298 Should we remove the netcore50 build of System.Net.Sockets? Should we wait until we're building for ""UAP10.1,"" whatever/whenever that is? " +12336 area-System.Console Console.ReadKey returns incomplete information for some key sequences on Linux Using PowerShell 6.0.0-alpha.10 on Ubuntu 14.04, I run ``` PS> [Console]::ReadKey() ``` and type Ctrl-@. I get back ``` KeyChar Key Modifiers ------- --- --------- 0 0 ``` I see somewhat similar results with other key presses like Ctrl-! or Ctrl-%. In some cases, `KeyChar` has the correct key, but `Modifiers` is still `0`, resulting in incorrectly assuming Ctrl was not down and e.g. inserting a `!` instead of doing whatever action `Ctrl+!` was bound to. This issue affects some of the key bindings in PSReadline. +12338 area-System.Reflection ParameterInfo.HasDefaultValue throws System.FormatException on optional DateTime parameter When accessing `ParameterInfo.HasDefaultValue` for a parameter of type `System.DateTime`, I get an unexpected `System.FormatException`. `ParameterInfo.Attributes` is correctly set to `Optional | HasDefault`. If the parameter is of any other value type (e.g. `decimal` or some custom _struct_) the property works as expected. There is something specific to `DateTime` in the implementation of `RuntimeParameterInfo.GetDefaultValueInternal()` which is broken. Code snippet to test: ``` c# public void Usage() { var type = typeof (Foo); var ctor = type.GetConstructors ()[0]; var para = ctor.GetParameters ()[0]; // This throws an exception... Assert.True (para.HasDefaultValue); } static class Foo { public Foo(System.DateTime value = default (System.DateTime)) { } } ``` Exception: ![default-value](https://cloud.githubusercontent.com/assets/3872435/19062968/c8793004-89fe-11e6-9db3-b203f4c900d3.png) +12341 area-System.Reflection Assembly.CreateInstance undocumented In .NET 4.5, `Assembly.CreateInstance` returned null if the the type could not be found. Is this still true or is an exception thrown instead? Given how many changes to reflection are part of .NET Core, there's no way to know other than trial or error or looking through the source code. Both of these options do poorly for productivity. The lack of such basic information in the XML comments that drive the IntelliSense and F12 metadata is a major omission. More concerning is the release process that allowed .NET Core to be labeled as version 1.0 fully stable, production ready, without essential documentation. A systematic review and backfilling of missing documentation would save a world of developers untold time and be well worth the effort. +12345 area-Infrastructure Improve sync time with a global test-runtime project.json restore upfront. This change is to improve the time taken by sync.cmd. It introduces the following changes. - Unifying all the test project.json's into a common project.json for the test build being consumed. - Removing test project.json's from the test dir and the test csproj, instead consuming the global one which is now in test-runtime. - Restoring this test-runtime project.json upfront as a part of both build and sync. There is only one test project.json now so as to avoid download contention withing the nuget restore processes while restoring multiple project.json's (which eats up double the raw download time of the packages). A singular project.json also removes all the I/O operations of generating multiple test lock files. (75% of the restore step is just in generating and walking through the lockfiles, IsRestoreRequired is a great way to avoid rerun cost for projects that still require their test project.json.) /cc @weshaggard @ericstj @markwilkie +12346 area-System.IO Bring StreamWriter/Reader to CoreFX, add path constructors - Exposes StreamWriter and StreamReader from CoreFX instead of mscorlib - Adds the string constructors that take a path to a file to read/write/append - Because of the FileStream dependency, Reflection is used in a separate internal helper class to attain access to File.Open. - Adds tests for the string constructors - Note: StreamReader.ReadAsyncInternal isn't overriding the TextReader parent when building for netstandard1.7 because TextReader is still contained within mscorlib and it is in an internal method. replaces https://github.com/dotnet/corefx/pull/12101 resolves https://github.com/dotnet/corefx/issues/12124 @stephentoub +12347 area-System.Net Port rest of HttpRequest and HttpWebResponse -Mostly easly ones which has direct equivalent in underlying HttpClientHandler -Major one which throw PNSE is ContinueDelegate , probably there's an easy way to do this. -Need to add more test , i haven't found any existing test for 509 certificates +12349 area-System.IO Add Begin/End async operations to System.IO.Pipes ``` - M:System.IO.Pipes.NamedPipeServerStream.BeginWaitForConnection(System.AsyncCallback,System.Object) - M:System.IO.Pipes.NamedPipeServerStream.EndWaitForConnection(System.IAsyncResult) - M:System.IO.Pipes.PipeStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object) - M:System.IO.Pipes.PipeStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object) - M:System.IO.Pipes.PipeStream.EndRead(System.IAsyncResult) - M:System.IO.Pipes.PipeStream.EndWrite(System.IAsyncResult) ``` split from https://github.com/dotnet/corefx/issues/12197 +12350 area-System.Reflection Add unit test for issue #7346 (custom attribute constructor crash on null array of enums) Just need to wait for the fix in coreclr to propagate over to corefx. https://github.com/dotnet/coreclr/issues/7346 +12351 area-System.Runtime Add System.SystemException derivations Addresses issue https://github.com/dotnet/corefx/issues/12198 Since SystemException is only supported in netstandard1.7, I upgraded those contracts being touched here to netstandard1.7 as well. cc: @danmosemsft @weshaggard @ericstj @joperezr +12352 area-System.Net HttpContentMultipartExtensions in .NET Core The [`HttpContentMultipartExtensions`](https://msdn.microsoft.com/en-us/library/hh835439%28v=vs.108%29.aspx) were available in .NET Framework to parse multipart http responses. Is there anything similar available in .NET Core or plans to bring them to .NET Standard? +12353 area-System.Net Servicing the Network libraries "Servicing change for the networking libraries. @ericstj @weshaggard @davidsh /cc @gkhanna79 @Chrisboh You'll notice that this also includes an update to publish.proj. That change is because our official builds expect each native platform build to be producing packages. If a native platform build doesn't produce any packages for publishing to Azure, then it gets reported as an error and fails the build. The change below skips the ""UploadToAzure"" step if the build didn't produce any packages. Two alternative solutions I considered: - Making the fix in BuildTools, but this requires a buildtools update and I didn't want to gate on that (i'm not certain that we have a good story for buildtools servicing changes for release/1.0.0). - Switch the official build step to non-blocking. An alternative would be to switch the ""publish-packages"" step of the build definition to non-blocking, but that has the potential to hide a real publishing error which we wouldn't catch until much later (or as another servicing fix). " +12356 area-System.IO Consider to add two new Public API in System.IO.BufferedStream public Stream UnderlyingStream { [Pure] get { return _stream; } } public Int32 BufferSize { [Pure] get { return _bufferSize; } } In System.Runtime.WindowsRuntime, it need to access these two properties/fields. For Desktop/CoreCLR, these two properties in BufferedStream are internal but they have FriendAccessAllowed Attribute. For CoreRT, the wrapper in System.Runtime.WindowsRuntime\src\System\IO\BufferedStreamWrapper.cs is to wrapper a BufferedStream and expose these two properties. If System.IO.BufferedStream can expose these two properties publically, it is easy for System.Runtime.WindowsRuntime to access these properties. +12358 area-Infrastructure Remove workaround for xunit crashing on invalid unicode chars (#7166) in tests One more crash remains however! (dotnet/buildtools#1091) /cc @jamesqo @ericstj @stephentoub +12362 area-System.Security Port System.Security.Cryptography.CspParameters.KeyPassword Based on SecureString; testing is non-trivial. Possibly throw PNSE in netstandard 2.0 timeframe +12363 area-System.Security Port System.Security.Cryptography.ECDiffieHellmanPublicKey Abstract class; would not be used in ns2.0 timeframe (would need class such as ECDiffieHellmanCngPublicKey to also be ported) public abstract class ECDiffieHellmanPublicKey : IDisposable ``` M:ECDiffieHellmanPublicKey.#ctor(System.Byte[]) M:ECDiffieHellmanPublicKey.Dispose M:ECDiffieHellmanPublicKey.Dispose(System.Boolean) M:ECDiffieHellmanPublicKey.ToByteArray M:ECDiffieHellmanPublicKey.ToXmlString ``` +12364 area-System.Security Port System.Security.Cryptography.HMACSHA384/512.ProduceLegacyHmacValues This enables a .NET 2.0 (pre-SP1) bug compatibility mode. Since we no longer have a managed implementation of HMAC we can't make this work in core so we will throw PNSE System.Security.Cryptography.HMACSHA384.ProduceLegacyHmacValues System.Security.Cryptography.HMACSHA512.ProduceLegacyHmacValues +12365 area-System.Security Port System.Security.Cryptography.Oid#ctor Add empty ctor for ns2.0 compat. (super easy) +12366 area-System.Security Port System.Security.Cryptography.RSA.DecryptValue/EncryptValue Not supported in netfx either; throw NotSupportedException ``` M:System.Security.Cryptography.RSA.DecryptValue(System.Byte[]) M:System.Security.Cryptography.RSA.EncryptValue(System.Byte[]) ``` +12367 area-System.Security Port P:System.Security.Cryptography.*KeyExchangeFormatter.Rng Semantics tbd; either Throw PNSE (on setter) or do nothing. ``` P:System.Security.Cryptography.RSAOAEPKeyExchangeFormatter.Rng P:System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter.RNG P:System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter.Rng ``` +12368 area-System.Security Port SymmetricAlgorithm FeedbackSize, FeedbackSizeValue, ValidKeySize members ``` F:FeedbackSizeValue P:FeedbackSize M:ValidKeySize(System.Int32) ``` In addition ns2.0 related work on AesManaged (to wrap\proxy the method) ``` AesManaged.FeedbackSize ``` and non-ns2.0 work to wrap\proxy FeedbackSize on other types including: ``` RijndaelManaged RijndaelImplementation AesCryptoServiceProvider TripleDESCryptoServiceProvider ``` Unless we want to throw PNSE, FeedbackSize should flow all the way to the provider, and tests should be written for those providers that support something other than 8bytes\64bits. +12369 area-System.Security Port X509Certificates.PublicKey.Key and 509Certificate2.PrivateKey Grouping X509 key-related functionality. Also see issue #12295 ``` X509Certificates.PublicKey.Key P:X509Certificate2.PrivateKey assuming simple mapping to PAL.GetRSAPrivateKey() or PAL.GetECDsaPrivateKey(); M:X509Certificate2.get_PrivateKey M:X509Certificate2.set_PrivateKey(AsymmetricAlgorithm) throw PNSE ``` +12370 area-System.Data SqlClient CLR UDT binary support Adding SqlClient support to handle CLR UDTs as binary @saurabh500 @YoungGah Currently, SqlClient on .NET Core throws an exception when it encounters a CLR UDT in the result set. This change updates SqlClient to support working with CLR UDTs as binary data. The SqlClient API to work with UDTs as binary already exists in the full .NET Framework. This change just unblocks the API on .NET Core. The SqlClient surface area is not changed. The following SqlDataReader methods can be used to retrieve as UDT as binary: - SqlDataReader.GetSqlBytes() - SqlDataReader.GetStream() - SqlDataReader.GetBytes() With this change, retrieving a CLR UDT instance is still not supported by SqlClient. The following SqlClient APIs to retrieve a CLR UDT instance have been updated to throw a PlatformNotSupported exception: - SqlDataReader[] get property indexer - SqlDataReader.GetValue() - SqlDataReader.GetValues() - SqlDataReader.GetSqlValue() - SqlDataReader.GetSqlValues() - SqlDataReader.GetFieldValue() - SqlDataReader.GetFieldValueAsync() - SqlDataReader.GetProviderSpecificFieldType() - SqlDataReader.GetProviderSpecificValue() - SqlDataReader.GetProviderSpecificValues() - SqlCommand.ExecuteScalar() For result set metadata obtained by calling SqlDataReader.GetColumnSchema(), we now populate the following properties for CLR UDTs: - Populate the DbColumn.UdtAssemblyQualifiedName property - Populate the DbColumn.DataType property with a Byte[] type Using a Byte[] for DbColumn.DataType has interesting forward compat implications. Ideally, we'd return the Type for the underlying UDT. Since that's not possible, I feel returning a Byte[] is the best compromise as it describes how to work with the CLR UDT as binary data. If/when .NET Core ever supports CLR UDTs, we'd have to think about the impact of changing DbColumn.DataType to return the CLR UDT type. +12372 area-System.ComponentModel Two ComponentModel tests fail after updating dependencies http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1099/ ``` System.ComponentModel.Tests.PropertyDescriptorTests.CopyConstructorAddsAttribute [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: Finished linking needed files, moving to running tests. Running tests... Start time: 20:07:00.76 Command(s): call CoreRun.exe xunit.console.netcore.exe System.ComponentModel.TypeConverter.Performance.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests D:\j\workspace\windows_nt_de---4526f5ff\src\System.ComponentModel.TypeConverter\src\System\ComponentModel\TypeDescriptor.cs(544,0): at System.ComponentModel.TypeDescriptor.CreateProperty(Type componentType, PropertyDescriptor oldPropertyDescriptor, Attribute[] attributes) D:\j\workspace\windows_nt_de---4526f5ff\src\System.ComponentModel.TypeConverter\tests\PropertyDescriptorTests.cs(19,0): at System.ComponentModel.Tests.PropertyDescriptorTests.CopyConstructorAddsAttribute() System.ComponentModel.Tests.MemberDescriptorTests.MemberDescriptorFromNameAndAttributes [FAIL] Assert.Equal() Failure ↓ (pos 0) Expected: MemberDescriptorFromNameAndAttributes Actual: ↑ (pos 0) Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.ComponentModel.TypeConverter\tests\MemberDescriptorTests.cs(49,0): at System.ComponentModel.Tests.MemberDescriptorTests.MemberDescriptorFromNameAndAttributes() ``` +12373 area-System.Runtime Add uap10.1 target to System.Runtime.WindowsRuntime 1. use BufferStreamWrapper to expose two internal properties. 2. remove netcore50aot related TargetGroup 3. remove some place using #if netstandard due to netcore50aot API 4. add typeforward for Windows.Foundation.Size/Rect/point CC: @jkotas, @weshaggard , @yizhang82 , @tarekgh , @SedarG, @ianhays currently also update netstandard to use BufferStreamWrapper instead. if you guys has concern about this, please let me know-- I can add the following code instead. # if netstandard use BufferStream # else use BufferStreamWrapper # endif +12378 area-Serialization Add APIs in System.Runtime.Serialization*. This PR is to add System.Runtime.Serialization.\* APIs which exist in NetStandard2.0 but are missing from CoreFx. Fixes #11254. @zhenlan @mconnew @huanwu @weshaggard Can you please review the pull request? Thanks! +12380 area-System.Console ConsoleKeyInfo.GetHashCode generates identical hashes for common keys `ConsoleKeyInfo.GetHashCode` does not use the `_key` field when computing the hash. It is common for `_keyChar` to have identical values for different keys - some notable examples: `F1`-`F12` and many `Ctrl+` sequences all generate `0` for `KeyChar`. +12381 area-System.IO Move TextReader/TextWriter to CoreFX forked from https://github.com/dotnet/corefx/pull/12346 StreamReader overrides TextReader's ReadAsyncInternal method for the uap build and for the mscorlib build. It would be nice if we could do that in the netstandard build as well, but as it is an internal method we'll need to first bring TextReader to CoreFX for netstandard. +12384 area-System.Runtime The type name used in System.Runtime.WindowsRuntime.dll doesn't meet the corefx coding style The corefx coding style is to use language keywords instead of BCL types, so Int32 , Int64 , Byte , String , etc. should be int , long , byte , string , etc. see src\System.Runtime.WindowsRuntime\src\System\IO\NetFxToWinRtStreamAdapter.cs, src\System.Runtime.WindowsRuntime\src\System\IO\WindowsRuntimeStorageExtensions.cs, src\System.Runtime.WindowsRuntime\src\System\IO\WindowsRuntimeStreamExtensions.cs, src\System.Runtime.WindowsRuntime\src\System\IO\WinRtIOHelper.cs +12386 area-System.ComponentModel Remove if-defs from System.ComponentModel.TypeCoverter When originally porting the TC code a lot of it was if-def-ed out because not all of the types required were available. Since we have brought back more APIs, we can go ahead and bring back that code as well. Look for: - [x] FEATURE_INSTANCEDESCRIPTOR - [x] FEATURE_EDITORATTRIBUTE - [x] FEATURE_GETMETHOD_WITHTYPES - [x] FEATURE_ICOMPONENTCHANGESERVICE - [x] FEATURE_CHECKOUTEXCEPTION - [x] FEATURE_AMBIENTVALUE - [x] FEATURE_COMPONENT_CHANGE_SERVICE - [x] FEATURE_PROPERTY_CHANGED_EVENT_HANDLER - [x] FEATURE_EDITOR - [x] FEATURE_EDITORATTRIBUTE - [x] FEATURE_NESTED_SITE - [x] FEATURE_MEMBERINFO_REFLECTEDTYPE Note: not all of those can actually be brought back. +12388 area-System.Security RSACryptoServiceProvider.KeySize setter not respected The RSACryptoServiceProvider.KeySize setter doesn't get respected when generating keys, or even when getting the value back through the getter. This is true on both core and full framework. This is more problematic on full framework since RSACryptoServiceProvider is returned from RSA.Create. For example: ``` using (RSA rsa = new RSACryptoServiceProvider()) // Key size 1024 by default { rsa.KeySize = 2048; Console.WriteLine(rsa.KeySize); // outputs 1024 var parameters = rsa.ExportParameters(false); // returns a key with a 1024 bit modulus } ``` +12392 area-System.Runtime Expose some missing threading types/members (Timer, exceptions, etc.) - Expose: Timer members, some exception types and members, ThreadExceptionEventArgs/Handler, Monitor.Wait with exitContext parameter - Move CriticalHandle and remaining types from System.Runtime.Handles to System.Runtime, expose CriticalHandle[ZeroOr]MinusOneIsInvalid - Revert base class of safe handle types that used to derive from SafeHandle[ZeroOr]MinusOneIsInvalid, and upgrade those projects to ns1.7 +12394 area-System.Net Add back missing methods in TcpClient, UdpClient, and TcpListener Part of #11788 Adds back the remaining methods of TcpClient, UdpClient, and TcpListener. This PR does not include new tests for most of these. I've done basic testing of the new TcpClient.Connect methods, and would like to get this merged so that @Priya91 can make use of those methods. I'll file an issue to track adding tests for the rest of these. @CIPop @stephentoub @davidsh +12396 area-System.IO Directory.Move doesn't throw for existing on Unix Discovered while testing for IsolatedStorage. Move should throw an exception if there is a file/directory in the specified destination. +12397 area-System.IO Remove the CreateManyConcurrent test The test is causing intermittent failures in other tests and is also intermittently failing itself. Without modifying system resources we can't make this test trustworthy, so it's better to remove it for the sake of stability. ported https://github.com/dotnet/corefx/pull/11721/ resolves https://github.com/dotnet/corefx/issues/11622 for release/1.1.0 @stephentoub @karelz +12398 area-System.Runtime Port some missing exceptions and serialization constructors These guys are missing entirely ``` T:System.TypeUnloadedException M:System.TypeUnloadedException.#ctor M:System.TypeUnloadedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.TypeUnloadedException.#ctor(System.String) M:System.TypeUnloadedException.#ctor(System.String,System.Exception) T:System.DuplicateWaitObjectException M:System.DuplicateWaitObjectException.#ctor M:System.DuplicateWaitObjectException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.DuplicateWaitObjectException.#ctor(System.String) M:System.DuplicateWaitObjectException.#ctor(System.String,System.Exception) M:System.DuplicateWaitObjectException.#ctor(System.String,System.String) ``` also these exceptions exist but are not serializable. ``` M:System.DllNotFoundException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.OperationCanceledException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.OutOfMemoryException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.OverflowException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) ``` Note - for testing serialization, take a look at the mechanism in https://github.com/dotnet/corefx/commit/e66576aa8290714284848086259b6429d1ce9b54. You can probably just list the types there. +12399 area-System.Runtime Port ApplicationId ``` T:System.ApplicationId M:System.ApplicationId.#ctor(System.Byte[],System.String,System.Version,System.String,System.String) P:System.ApplicationId.Culture M:System.ApplicationId.get_Culture P:System.ApplicationId.Name M:System.ApplicationId.get_Name P:System.ApplicationId.ProcessorArchitecture M:System.ApplicationId.get_ProcessorArchitecture P:System.ApplicationId.PublicKeyToken M:System.ApplicationId.get_PublicKeyToken P:System.ApplicationId.Version M:System.ApplicationId.get_Version M:System.ApplicationId.Copy M:System.ApplicationId.Equals(System.Object) M:System.ApplicationId.GetHashCode M:System.ApplicationId.ToString ``` +12400 area-System.Reflection Port Attribute missing members These seem to be missing ``` M:System.Attribute.IsDefined(System.Reflection.Assembly,System.Type) M:System.Attribute.IsDefined(System.Reflection.Assembly,System.Type,System.Boolean) M:System.Attribute.IsDefined(System.Reflection.MemberInfo,System.Type) M:System.Attribute.IsDefined(System.Reflection.MemberInfo,System.Type,System.Boolean) M:System.Attribute.IsDefined(System.Reflection.Module,System.Type) M:System.Attribute.IsDefined(System.Reflection.Module,System.Type,System.Boolean) M:System.Attribute.IsDefined(System.Reflection.ParameterInfo,System.Type) M:System.Attribute.IsDefined(System.Reflection.ParameterInfo,System.Type,System.Boolean) ``` +12401 area-System.Runtime Straggler explicit implementations These exist but should all be implicit implementations to match standard. ``` M:System.String.CompareTo(System.Object) M:System.String.ToString(System.IFormatProvider) M:System.StringComparer.Compare(System.Object,System.Object) M:System.Boolean.ToString(System.IFormatProvider) M:System.Char.ToString(System.IFormatProvider) M:System.String.GetTypeCode ``` +12402 area-Meta Package Microsoft.AspNetCore.StaticFiles 1.0.0 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) "I have VS 2015 Professional installed on my box. I have Core 1.0.1 SDK 1.0.0 Preview 2-003131 (x64) and the Core 1.0.1 - VS 2015 Tooling Preview 2 installed as well: ![image](https://cloud.githubusercontent.com/assets/20649904/19134205/739f1b48-8b11-11e6-9e22-7b975b4eedeb.png) Here is my project.json file: { ""dependencies"": { ""Microsoft.AspNetCore.Mvc"": ""1.0.1"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.1"", ""Microsoft.EntityFrameworkCore.InMemory"": ""1.0.1"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.AspNetCore.WebSockets.Server"": ""0.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.0.0"", ""Chutzpah"": ""4.2.4"", ""Microsoft.NETCore.App"": ""1.0.1"" }, ""tools"": { ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": { ""version"": ""1.0.0-preview2-final"", ""imports"": ""portable-net45+win8+dnxcore50"" } }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""appsettings.json"", ""web.config"", ""project.json"" ], ""exclude"": [ ""wwwroot/app/*_/_.spec.*"", ""wwwroot/chutzpah.json"", ""wwwroot/testSetup.js"" ] }, ""scripts"": { ""prepublish"": ""npm install"", ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } But, everytime I load the solution, or ""Restore Packages"" I always end up with this error: `Errors in D:\Angular 2\Ng2Demo\Ng2Demo.xproj Package Microsoft.AspNetCore.StaticFiles 1.0.0 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.AspNetCore.StaticFiles 1.0.0 supports: - net451 (.NETFramework,Version=v4.5.1) - netstandard1.3 (.NETStandard,Version=v1.3) One or more packages are incompatible with .NETCoreApp,Version=v1.0.` " +12403 area-System.IO Unix file timestamps only have one-second granularity Currently, method such as `File.GetLastWriteTime` and `FileInfo.LastWriteTime` return timestamps which are only accurate to the nearest second on Unix. On OSX, this seems to be a system-level limitation in HFS+. On most Linux filesystems, however, millisecond-level information does seem to be available, at least via `stat`. @stephentoub recommended that we could use `utimes` rather than `utime` in the native shim in order to retrieve this information. This also seems to affect files copied by `File.Copy`, because we copy over some timestamp metadata from the source file (to match Windows). +12405 area-System.Runtime Exception missing SerializeObjectState Missing ``` E:System.Exception.SerializeObjectState M:System.Exception.add_SerializeObjectState(System.EventHandler{System.Runtime.Serialization.SafeSerializationEventArgs}) M:System.Exception.remove_SerializeObjectState(System.EventHandler{System.Runtime.Serialization.SafeSerializationEventArgs}) ``` +12408 area-Serialization [Expose] To Add ISafeSerializationData/SafeSerializationEventArgs The following APIs exist in NetStandard 2.0 but are missing from NetCore. We should put them in System.Runtime where Exception lives. T:System.Runtime.Serialization.ISafeSerializationData T:System.Runtime.Serialization.SafeSerializationEventArgs +12411 area-Infrastructure Updating CoreFx dependencies to servicing-24606-02 /cc @dotnet/corefx-contrib +12412 area-System.Security SslStream segfault when X509Certificate2 constructed "The following program segfaults (apparently in SslStream.AuthenticateAsClientAsync), but only if the first line `new X509Certificate2(""testCert.pfx"", ""testPassword"");` is present. Feel free to to copy testCert.pfx from https://github.com/aspnet/KestrelHttpServer/tree/dev/samples/SampleApp. This repros on windows with Microsoft.NETCore.App 1.1.0-preview1-001090-00, but not 1.0.1. ``` > dotnet run Project ConsoleApp2 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. HttpClient request succeeded! Starting AuthenticateAsClientAsync. > $lastexitcode -1073741819 ``` ![image](https://cloud.githubusercontent.com/assets/54385/19137402/5625a0e8-8b28-11e6-92f1-fa1d24b9cc42.png) ### NuGet.config ``` ``` ### project.json ``` { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.1.0-preview1-001090-00"" } }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": ""dnxcore50"" } } } ``` ### Program.cs ``` c# using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; namespace ConsoleApp2 { public class Program { public static void Main(string[] args) { new X509Certificate2(""testCert.pfx"", ""testPassword""); using (var client = new HttpClient()) { client.GetStringAsync(""https://github.com"").Wait(); Console.WriteLine(""HttpClient request succeeded!""); } GetStreamAsync(new Uri(""https://github.com""), validateCertificate: true).Wait(); Console.WriteLine(""Getting SslStream succeeded!""); } private static async Task GetStreamAsync(Uri requestUri, bool validateCertificate) { var socket = await GetSocketAsync(requestUri); Stream stream = new NetworkStream(socket, ownsSocket: true); if (requestUri.Scheme.Equals(""https"", StringComparison.OrdinalIgnoreCase)) { var sslStream = new SslStream(stream, leaveInnerStreamOpen: false, userCertificateValidationCallback: validateCertificate ? null : (RemoteCertificateValidationCallback)((a, b, c, d) => true)); Console.WriteLine(""Starting AuthenticateAsClientAsync.""); try { await sslStream.AuthenticateAsClientAsync(requestUri.Host, clientCertificates: null, enabledSslProtocols: SslProtocols.Tls11 | SslProtocols.Tls12, checkCertificateRevocation: validateCertificate); } finally { Console.WriteLine(""AuthenticateAsClientAsync Completed.""); } return sslStream; } else { return stream; } } private static async Task GetSocketAsync(Uri requestUri) { var tcs = new TaskCompletionSource(); var socketArgs = new SocketAsyncEventArgs(); socketArgs.RemoteEndPoint = new DnsEndPoint(requestUri.DnsSafeHost, requestUri.Port); socketArgs.Completed += (s, e) => tcs.TrySetResult(e.ConnectSocket); // Must use static ConnectAsync(), since instance Connect() does not support DNS names on OSX/Linux. if (Socket.ConnectAsync(SocketType.Stream, ProtocolType.Tcp, socketArgs)) { await tcs.Task; } var socket = socketArgs.ConnectSocket; if (socket == null) { throw new SocketException((int)socketArgs.SocketError); } else { return socket; } } } } ``` " +12416 area-System.Net Initial commit to System.Net.Mail. Changes from Desktop implementation: - SmtpConnection uses TcpClient instead of ServicePointManager. - SslStream instead of internal TlsStream. - Negotiate, NTLM, Digest authentication protocols not ported due to dependency on internal NTAuthentication type. Authentication currently happens uses plain text login, SSL connections need to be used. - TcpClient connections are not pooled. - Getting mail settings from `web.config` files is not supported, as netstandard2.0 doesn't expose the `System.Net.Configuration` apis. - Sending mail to IIS pickup directory currently throws `NotSupportedException`. Desktop uses COM types for this API, investigation on partially supporting this feature on Windows is pending. Notes: - Tests will be added separately. - Please review `SmtpConnection.cs` and `TlsStream.cs` files for correctness, they have changed functionally from Desktop code. - The TcpClient connect does not have `Connect()`, `BeginConnect()` and `EndConnect()` in .NET Core contract yet, once that's available, the SendAsync should use the async connect methods. - Update: Added now Did a test locally using the `SmtpClient.Send()` and `SmtpClient.SendAsync()` , was able to successfully send emails to google smpt server with tls authentication. cc @stephentoub @ericeil @CIPop @davidsh @geoffkizer @tijoytom @karelz +12419 area-Infrastructure Updating CoreFx dependencies to servicing-24606-05 /cc @dotnet/corefx-contrib +12421 area-System.Runtime Proposal: Support for building query string collection in UriBuilder "## Background Currently UriBuilder class does not have a constructor / method to build query string parameters values. Please note that I would like to implement this feature in the existing UriBuilder class. ## Proposed API **Open questions** - How often is this kind of functionality hand-written by apps? (ideally some links to popular GitHub projects, or links to StackOverflow / blog post samples = real-world examples) - In general it looks useful, but it is always good to collect more data. - What is difference between `IEnumerable>` and `IDictionary` overloads?Do they have different usage patterns? (real-world examples ideally) ```diff public class UriBuilder { public UriQueryStringBuilder(); public UriQueryStringBuilder(string schemeName, string hostName, string path); ... + public UriQueryStringBuilder(string schemeName, string hostName, string path, IEnumerable> queryParameters); + public UriQueryStringBuilder(string schemeName, string hostName, string path, IDictionary queryParameters); + public IDictionary QueryParameters {get;} + public void AddQueryParameter(string key, string value); } ``` ### Usage ```c# //1. Add query string var uri = new UriQueryStringBuilder(""https"", ""api.com"", ""v1/videos/somevideo""); uri.AddQueryParameter(""q"", ""keword""); uri.AddQueryParameter(""s"", null); var result = uri.ToString(); //https://api.com/v1/videos/somevideo?q=keyword&s= //2. Build query string collection and add query string var dict = new Dictionary(); dict[""somthing""] = ""value""; dict[""query""] = ""another value""; var uri1 = new UriQueryStringBuilder(""https"", ""api.com"", ""v1/videos/somevideo"", dict); uri1.AddQueryParameter(""q"", ""keword""); uri1.AddQueryParameter(""s"", null); var result1 = uri1.ToString(); //https://api.com/v1/videos/somevideo?something=value&query=another%20value&q=keyword&s= //3. Build query string collection only. var dict1 = new Dictionary(); dict1[""somthing""] = ""value""; dict1[""query""] = ""another value""; var uri2 = new UriQueryStringBuilder(""https"", ""api.com"", ""v1/videos/somevideo"", dict1); var result2 = uri2.ToString(); //https://api.com/v1/videos/somevideo?something=value&query=another%20value ``` -------------------------------------- ## Original proposal ```c# public class URIBuilder : System.UriBuilder { private readonly NameValueCollection _queryParameters; public URIBuilder(string schemeName, string hostName, string path) : this(schemeName, hostName, path, new NameValueCollection()) { } public URIBuilder(string schemeName, string hostName, string path, NameValueCollection queryParameters) : base(schemeName, hostName) { _queryParameters = queryParameters ?? new NameValueCollection(); Path = path; } public NameValueCollection QueryParameters => _queryParameters; public URIBuilder AddQueryParameter(string key, string value) { if (key == null) throw new ArgumentNullException(nameof(key)); if (value == null) value = string.Empty; //allow empty value otherwise throw null exception _queryParameters.Add(key, value); return this; } public override string ToString() { var query = new StringBuilder(); foreach (var item in _queryParameters.AllKeys) { query.Append($""{item}={Uri.EscapeUriString(_queryParameters[item])}&""); } if (query.Length > 0) { query.Length--; //Trim last character '&' Query = query.ToString(); } return base.ToString(); } } ``` ### Tests ```c# /* 1. Build query string values only.*/ var uri = new URIBuilder(""https"",""api.com"",""v1/videos/somevideo"") .AddQueryParameter(""q"",""keword"") .AddQueryParameter(""s"",null); var result = uri.ToString(); //https://api.com/v1/videos/somevideo?q=keyword&s= /* 2. Build query string collection and add parameter*/ var nvc = new NameValueCollection(); nvc[""somthing""] = ""value""; nvc[""query""] = ""another value""; var uri1 = new URIBuilder(""https"",""api.com"",""v1/videos/somevideo"",nvc) .AddQueryParameter(""q"",""keword"") .AddQueryParameter(""s"",null); var result1 = uri1.ToString(); //https://api.com/v1/videos/somevideo?something=value&query=another%20value&q=keyword&s= /* 3. Build query string collection only.*/ var nvc1 = new NameValueCollection(); nvc1[""somthing""] = ""value""; nvc1[""query""] = ""another value""; var uri2 = new URIBuilder(""https"",""api.com"",""v1/videos/somevideo"",nvc1); var result2 = uri2.ToString(); //https://api.com/v1/videos/somevideo?something=value&query=another%20value ``` " +12424 area-System.ComponentModel Update the code with the assumption that LicenseFile is always null. +12425 area-System.Numerics Proposal: Add a BitManipulation class "I propose adding a new class to CoreFx, which will contain many common bit manipulation techniques. Part of having a class like this is that the Jit can target these methods class for intrinsics, similar to what was done for `Vector`. There is still some open discussion as to what the shape of this API should be, and even the class name. #### Class Name There are several class names being thrown around and none are particularly winning everyone over. - Bits - BitOperations or BitOps - BitUtility - BitTwiddler - BitView (see the next section) #### Two Classes? @benaadams, correctly notes that there seems to be two different APIs here. A low level view allowing you to manipulate a numeric type to extract or inject a bit (like a bit vector), byte, short, or int value. These methods are the equivalent of the following but safer (and possibly faster) ```csharp public static unsafe int ExtractInt(ulong u,int pos)=>((int*)&u)[pos]; public static unsafe ulong InjectInt(ulong u, int pos, int toSet) { ((int*)&u)[pos] = toSet; return u; } ``` And another set of utility exposing methods for treating an integer register type like a unit of data allowing you to manipulate it or introspect it. Does it make sense to keep these APIs in one class? #### Method Names Another point of contention. What should we call these methods? For the ""view"" members, there is some dislike of the naming convention of `Get`/`Set` even though there is prior art like `BitVector32` & `SqlDataRecord`. Everyone seems to like `Read`/`Write` more, but while `Read` is fine. `Write` isn't neccessarily the operation being done. I'm still looking for some verbiage to note that this really takes a value, modifies it a bit (no pun intended), and spit out a new one. PopCount/HammingWeight/ CountSetBits - We can't decide on this name. I personally like `PopCount` as it is a well known name for the algorithm. However, for someone who does not CPU intrinsics or bit tricks this name might mean nothing to you. the .net api is split where common or well known algorithms are simply called that (e.g. `Rijndael`) and sometimes descriptive for new users. I think that this class in general is fairly low-level so even a novice should be expected to do a quick google search in the subject area. And even naming the methods as actions (e.g. `CountTrailingZeroes`) or properties (e.g. `TrailingZeroesCount`). #### Hardware Acceleration / Detection @benaadams, suggested adding a simple flag to determine if the class has hardware acceleration. I personally suggest going a step further and adding an `enum` to describe which methods are accelerated (not in the PoC). Unfortunately, the `enum` based approach does raise the question if the jit could do branch elimination on a comparison like the following if it could replace `AcceleratedOperations` as a runtime constant. (unknown) ```csharp // if (Bits.AcceleratedOperations == BitOps.PopCount){ // use popcount } else{ // work around it? } ``` I admittedly question what you would do differently if it isn't accelerated. This isn't like `Vector` where you might switch to a different approach and use `ulong` like smaller vectors. The methods should be pretty good solutions to these problems and outside of switching to some native code I don't see us doing better. Methods that could be accelerated (in AMD64 at least):: `PopCount` => `POPCNT` `RotateRight` => `ROR` (already accelerated!) `RotateLeft` => `ROL` (already accelerated!) `CountLeadingZeroes` => `LZCNT` (in ABM compliant hardware) or (`BSR` followed by xor 63) `CountTrailingZeroes` => `TZCNT` / `BSF` `ReadBit` => `BT` `WriteBit` => `BTS`/`BTC` (maybe?) `ReadByte`/`ReadInt16`/`ReadInt32` => `BEXTR` (possibly) Updated spec: ``` csharp public static class Bits{ public static int PopCount(ulong value); public static int PopCount(long value); public static int PopCount(uint value); public static int PopCount(int value); public static ulong RotateRight(ulong value, int offset); public static uint RotateRight(uint value, int offset); public static ulong RotateLeft(ulong value, int offset); public static uint RotateLeft(uint value, int offset); public static int CountLeadingZeros(ulong value); public static int CountLeadingZeros(long value); public static int CountLeadingZeros(uint value); public static int CountLeadingZeros(int value); public static int CountTrailingZeroes(ulong value); public static int CountTrailingZeroes(long value); public static int CountTrailingZeroes(uint value); public static int CountTrailingZeroes(int value); public static bool ReadBit(ulong value, int offset); public static bool ReadBit(long value, int offset); public static bool ReadBit(uint value, int offset); public static bool ReadBit(int value, int offset); public static ulong WriteBit(ulong value, int offset, bool toSet); public static long WriteBit(long value, int offset, bool toSet); public static uint WriteBit(uint value, int offset, bool toSet); public static int WriteBit(int value, int offset, bool toSet); public static byte ReadByte(ulong value, int offset); public static byte ReadByte(long value, int offset); public static byte ReadByte(uint value, int offset); public static byte ReadByte(int value, int offset); public static short ReadInt16(ulong value, int offset); public static short ReadInt16(long value, int offset); public static short ReadInt16(uint value, int offset); public static short ReadInt16(int value, int offset); public static int ReadInt32(ulong value, int offset); public static int ReadInt32(long value, int offset); public static ulong WriteByte(ulong value, int offset, byte toSet); public static long WriteByte(long value, int offset, byte toSet); public static uint WriteByte(uint value, int offset, byte toSet); public static int WriteByte(int value, int offset, byte toSet); public static ulong WriteInt16(ulong value, int offset, short toSet); public static long WriteInt16(long value, int offset, short toSet); public static uint WriteInt16(uint value, int offset, short toSet); public static int WriteInt16(int value, int offset, short toSet); public static ulong WriteInt32(ulong value, int position, int toSet); public static long WriteInt32(long value, int position, int toSet); } ``` Edit: POC class https://gist.github.com/mburbea/c9a71ac1b1a25762c38c9fee7de0ddc2 More updates! Removed signed rotate operators. " +12426 area-System.Data Add DataSet, DataTable, and much more to corefx - Ports src from desktop - Ports tests from Mono - Upgrades System.Data.SqlClient projects to netstandard 1.7 Some notes: - This adds ~120 public types and ~3800 public members to System.Data.Common. It includes all of the non-provider-specific types from System.Data.dll with the exception of permissions-related types (e.g. DbDataPermissionAttribute) and configuration-related types (e.g. DbProviderFactories). - I've done close to zero cleanup in the tests ported from Mono. There is a sizeable amount of work there to bring it into conformance with our normal usage of xunit, and I'll open an issue for that to be done subsequently. I did the minimal work necessary to bring the tests over, convert them to xunit, and get them passing. - I've done some cleanup/formatting/scrubbing/etc. in the product source, but there's still plenty more we could do if we want to, more application of C# features added since this code was written, etc. - I type-forwarded the SqlTypes down from System.Data.SqlClient into System.Data.Common, as they need to be known by DataSet and friends. SqlClient was accessing some internals of these types, so I put some workarounds in place to enable it to continue functioning without measurable performance loss and with the same behavior. They're slightly hacky, but they get the job done. cc: @weshaggard, @ericstj, @terrajobst, @saurabh500, @YoungGah, @FransBouma Fixes https://github.com/dotnet/corefx/issues/8622 Fixes https://github.com/dotnet/corefx/issues/2065 Related to https://github.com/dotnet/corefx/issues/4571 (DbProviderFactory is included, but DbProviderFactories is not) +12431 area-System.Threading Remove temporary project references after changes to the referenced project are published See changes to *.csproj by kouvel +12434 area-System.IO Add tests for UnmanagedMemoryAccessor struct methods Progress towards https://github.com/dotnet/corefx/issues/9465 exposure of the methods was completed by @alexperovich when he moved UnmanagedMemoryStream/Accessor to corelib in https://github.com/dotnet/corefx/pull/12391 & https://github.com/dotnet/coreclr/pull/7418 @stephentoub @joperezr @alexperovich +12436 area-System.Reflection Type name parser The dev/metadata branch was badly out of date and divergent from master. The only thing that was in there was Dave's type name parser. I squashed it in to 1 commit against master. Verifying that tests pass to ensure I've got everything. Then I'll close this PR and we can delete the dev/metadata branch. +12437 area-System.IO Enable machine stores for isolated storage Adds ACLing for machine store folders for Windows Adds solution file for System.IO.FIleSystem.AccessControl @ericstj, @weshaggard, @ianhays, @stephentoub +12438 area-System.Runtime Notify GC of allocated native memory +12440 area-Infrastructure Add '--testTFM' option and set default to netcoreapp1.1 in run-test.sh By #12241, netcoreapp1.1 become new default TestTFM for all project. We need to change default netcoreapp1.0 to 1.1, and add new option to set TestTFM +12441 area-System.Security [Linux/ARM32] System.Security.Cryptography.Algorithms.Tests fail "Environemnt: Linux / ARM32bit CoreCLR: Release build CoreFX: Release build, enable outerloop test ``` Starting: System.Security.Cryptography.Algorithms.Tests System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.InvalidIVSizes(invalidIvSize: 536870928) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.OutOfMemoryException): Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.Object.MemberwiseClone() at Internal.Cryptography.Helpers.CloneByteArray(Byte[] src) at Internal.Cryptography.AesImplementation.CreateDecryptor(Byte[] rgbKey, Byte[] rgbIV) at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.<>c__DisplayClass4_1.b__1() Finished: System.Security.Cryptography.Algorithms.Tests ``` Related code ``` [Theory] [InlineData(64)] // smaller than default BlockSize [InlineData(129)] // larger than default BlockSize [InlineData(536870928)] // number of bits overflows and wraps around to default BlockSize public static void InvalidIVSizes(int invalidIvSize) { using (Aes aes = AesFactory.Create()) { aes.GenerateKey(); byte[] key = aes.Key; byte[] iv; try { iv = new byte[invalidIvSize]; } catch (OutOfMemoryException) // in case there isn't enough memory at test-time to allocate the large array { return; } Assert.Throws(""rgbIV"", () => aes.CreateEncryptor(key, iv)); Assert.Throws(""rgbIV"", () => aes.CreateDecryptor(key, iv)); } } public sealed override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV) { return CreateTransform(rgbKey, rgbIV.CloneByteArray(), encrypting: false); } public static byte[] CloneByteArray(this byte[] src) { if (src == null) { return null; } return (byte[])(src.Clone()); } ``` - It throws `argument exception` (not `out of memory exception`) when I modify test code to not use `Assert.Throws` for CreateDecryptor. - Test passed when I modify test code to not call `CreateEncryptor` and test `CreateDecryptor` only. " +12442 area-System.Threading Add QueueUserWorkItem for local threadpool queues `ThreadPool.QueueUserWorkItem` always queues to the global queue; however it would be good to have the option to be able to queue to the current threadpool thread's local queue when a threadpool thread queues extra work items. ## Rationale and Usage - Reduced contention on the global queue when many threads are queuing - Potentially hotter more local data when the queuing work item completes - Take advantage of threadpool's task stealing - (i.e. Similar to Task's rational for doing it for child Tasks) ## Proposed API ``` csharp public static class ThreadPool { // public static void QueueUserWorkItem(WaitCallback callBack, bool preferLocal); public static void QueueUserWorkItem(WaitCallback callBack, Object state, bool preferLocal); } ``` ## Details - Exposing a parameter that threadpool already accepts interally +12447 area-System.Runtime RuntimeHelpersTests.FixedAddressValueTypeTest test failed in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/1248/consoleText ``` System.Runtime.CompilerServices.Tests.RuntimeHelpersTests.FixedAddressValueTypeTest [FAIL] Discovered: System.Net.Http.Functional.Tests Assert.True() Failure Expected: True Actual: False ``` +12449 area-System.Runtime System.Runtime.CompilerServices.IsConst is defined in both System.Runtime and S.P.CoreLib be96103263c9d57ce22295dd3906b96c2ae722be brings S.R.CompilerServices.IsConst to System.Runtime. However it already exists in S.P.CoreLib for AOT (see https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/IsConst.cs). It's indeed defined in CoreCLR too (see https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Runtime/CompilerServices/IsConst.cs). This type should have been forwarded to System.Private.CoreLib. +12450 area-Infrastructure Remove SNI workaround when we have a new TFS build https://github.com/dotnet/corefx/pull/12376/commits/c7ba063079560f0a6c1057a62da51a4ef53de629 We should remove this once we get a new TFS build. /cc @stephentoub +12451 area-System.Reflection Merge System.Reflection.Metadata changes from master to release/1.1.0 Finalizes System.Reflection.Metadata public API surface for 1.1.0 release (https://github.com/dotnet/corefx/issues/12891). No other SRM public API changes are planned for 1.1.0. +12452 area-System.Console Virtual Terminal Parsing Issues As we discussed over email, some parsing of virtual terminal sequences is done incorrectly. These are sequences that are generated on linux to represent certain keypresses, such as the arrow keys or the F1-F12 keys. They are also used for querying certain state about the terminal, such as the position of the cursor. In general, the parsing works well enough on Ubuntu, however, it is noticeably wrong on the Windows Subsystem for LInux. Try running powershell on WSL, and you'll see a number of graphical defects, primarily related to the retrieving of the cursor position (see [this code](https://github.com/dotnet/corefx/blob/master/src/System.Console/src/System/ConsolePal.Unix.cs#L360-L385)). Also attempting to use the arrow keys to scroll through the command history simply echos 'A', 'B', 'C', or 'D' to the input, depending on the arrow key. As we discussed, this is probably due to .NET Core missing certain characters while parsing the result, as opposed to blocking on the input and waiting, character by character, for the complete sequence to come in. +12455 area-Infrastructure Updating CoreFx dependencies to servicing-24607-01 /cc @dotnet/corefx-contrib +12457 area-System.Runtime Adding Delegate missing members Fixes #12251 Adding missing members for System.Delegate, System.MultiCastDelegate and MulticastNotSupportedException + tests. cc: @danmosemsft @stephentoub @AlexGhiondea @weshaggard +12458 area-System.IO Add missing IO members to System.Runtime - Adds ref entries for the 5 remaining IO members missing from System.Runtime - Adds tests for the FusionLog properties - Tests for the Stream functions are coming in a separate commit since those tests live in the System.IO assembly - Adds full test suite for FileNotfoundException since we apparently didn't have any progress towards https://github.com/dotnet/corefx/issues/9465 @joperezr @AlexGhiondea @stephentoub @JeremyKuhne +12459 area-System.Net Add missing members in System.Net.Sockets.SocketException ``` csharp public class SocketException : Win32Exception { protected SocketException(SerializationInfo serializationInfo, StreamingContext streamingContext); public override int ErrorCode { get; } } ``` (was tracked by #11788) +12460 area-System.Net Add back Socket.SendFile, Begin/EndSendFile ``` csharp public class Socket : IDisposable { public IAsyncResult BeginSendFile(string fileName, AsyncCallback callback, object state); public IAsyncResult BeginSendFile(string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags, AsyncCallback callback, object state); public void EndSendFile(IAsyncResult asyncResult); public void SendFile(string fileName); public void SendFile(string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags); } ``` (Was tracked by #11788) Additional missing APIs: ``` M:System.Net.Sockets.Socket.EndAccept(System.Byte[]@,System.IAsyncResult) M:System.Net.Sockets.Socket.EndAccept(System.Byte[]@,System.Int32@,System.IAsyncResult) P:System.Net.Sockets.SocketAsyncEventArgs.SendPacketsFlags M:System.Net.Sockets.SocketAsyncEventArgs.get_SendPacketsFlags M:System.Net.Sockets.SocketAsyncEventArgs.set_SendPacketsFlags(System.Net.Sockets.TransmitFileOptions) ``` +12461 area-Infrastructure Detect a better default for TestNugetRuntimeId when not set The logic [here](https://github.com/dotnet/corefx/blob/71de1aac5cf3e5dc87714ae0cc829e1fa98f7c5d/dir.props#L267) was reasonable when we only supported ubuntu.14.04-x64, but we support many more distros now. For folks that invoke MSBuild.exe directly, we should have a task in buildtools that provides a better default (e.g. reads /etc/os-release and computes a RID). +12462 area-System.Net Add back Socket.SetIPProtectionLevel and UdpClient.AllowNatTraversal ``` csharp public class Socket : IDisposable { public void SetIPProtectionLevel(IPProtectionLevel level); } public class UdpClient : IDisposable { public void AllowNatTraversal(bool allowed); } ``` (Was tracked by #11788) +12463 area-System.Net Add back TcpListener.Create ``` csharp public class TcpListener { public static TcpListener Create(int port); } ``` (was tracked by #11788) +12464 area-System.Net Add back SocketFlags.MaxIOVectorLength ``` csharp public enum SocketFlags { MaxIOVectorLength = 16, } ``` +12465 area-Meta TestNuGetRuntimeId should be derived from TestTFM & machine running on Currently it looks like we set the TestNuGetRuntimeId in a bunch of different places for different reasons, none of which really make sense. The purpose of a RuntimeID is to describe the platform that an application is running on. For many target frameworks they've only been designed to accept a finite set of RIDs. I think the right model for this would be, given a TestTFM, select from the available RIDs which one best matches the current machine. /cc @weshaggard @karajas @mellinoe +12466 area-System.Threading Add netstandard1.7 build to Threading.Timers This retargets the ref and src to netstandard1.7. It splits up the test to run against both netstandard1.3 and netstandard1.7. This is the last of the split packages (hard to port) that wasn't targeting ns1.7. /cc @danmosemsft @weshaggard @stephentoub +12467 area-Serialization Exceptions don't properly round trip StackTrace through binary formatter occasionally. When running tests the MissingSatelliteAssemblyException fails to round trip StackTrace. The original file line number and the round-tripped line number don't match. The System.Resources.ResourceManager tests project has the failing test. The exception properly round trips when the VS CoreClr debugger is attached. +12471 area-System.Net Port rest of System.NetCookie* methods -Mostly staight forward since the methods did exit but were internal -netcore50 complains about SafeHandle not derived from CriticalFinalizerObject , excluded in APICompat -public bool IsSynchronized { get; } and public object SyncRoot { get; } both exits today not sure why they are listed as not available. -I haven't added any new test since the existing test cover the code path. Ref: PR #12125 +12472 area-System.Data SqlConnection.Open() thrown SqlExceptions do not have an error number on OSX/Linux "If you call Open() on a SqlConnection that errors out (for example, because of a bad hostname), the thrown SqlException will not contain an error number on Mac OSX (i.e. SqlException.Number is always 0). I specifically noticed this with SqlException error code 53 ""A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections."" On Windows for the above scenario, the SqlException that I catch has a Number property value of 53. On OSX, it is 0. Edit: This also appears to be an issue on Linux " +12483 area-System.Xml Lots of XML tests are not being run in CI You can see in the log at http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/30/consoleText , for example, that even though XML tests like System.Xml.RW.XmlSystemPathResolver.Tests get compiled, they never get executed. At least one bug I'm aware of is not getting flagged as a result. cc: @sepidehMS +12484 area-System.Reflection Remove hand-rolled equality tests - System.Reflection.Metadata Removes custom equality (and some exception) tests in favor of xunit Asserts. Also noticed data for a couple of tests could be extracted to Theories, so did that in passing. +12487 area-System.Net System.Net.WebSockets.Client - remove race condition from ReceiveAsync cancellation test. +12490 area-System.Runtime Workaround lack of Uri support for Unix paths in System.Private.Xml "`new Uri(filePath)` currently works on Windows and fails on Unix; there are special code paths that guess whether the specified url is a file path and automatically prepend a ""file://"" scheme if it is, but the logic is based on Windows paths. On Unix, it ends up throwing a UriFormatException. A bunch of the Xml types end up hitting this code path when provided with a string uri, e.g. XmlReader.Create(string), which causes failures when file paths are provided on Unix, and creating readers and such for file paths is very common. This commit works around the issue by adding an explicit file scheme rather than leaving it up to the Uri implementation to determine that it's a file path. Note that there are tests which would have caught this, but they're not getting run: https://github.com/dotnet/corefx/issues/12483 Issue for Uris on Unix: https://github.com/dotnet/corefx/issues/1745 cc: @sepidehMS, @krwq, @davidsh, @cipop " +12492 area-System.Runtime Improvements in the System.Random methods "When relying on the `System.Random` methods, I usually expect to get unique numbers; or might prefer to only account for specific values within the input range (e.g., all the numbers from 0 to 1000 except 5, 10 and 200). That's why I am used to complement my calls to these methods with a code like this one: ``` C# private static int GetRandom(int min, int max, int[] toIgnore) { Random rand = new Random(); int outVal = min; while (true) { int number = rand.Next(min, max); if (!toIgnore.Contains(number)) { outVal = number; break; } } return outVal; } ``` This code can become a bit more complex under certain conditions to avoid too-slow/infinite loops, but it is a quite simple implementation anyway. Can I write a code like the aforementioned one every time I need `System.Random` to ignore certain numbers? Sure. Is such an eventuality part of the most common requirements associated with using random numbers (and, consequently, should these methods account for it)? I think so. I am also proposing to add new overloads for other commonly-used numeric types (i.e., `long` and `decimal`). Below these lines, you can find all the API calls associated with my proposal together with the existing ones. ``` C# public class Random { //---- Existing public int Next() { } public int Next(int maxValue) { } public int Next(int minValue, int maxValue) { } public double NextDouble() { } public void NextBytes(byte[] buffer) { } //---- New public int Next(int[] ignoredValues) { } public int Next(int maxValue, int[] ignoredValues) { } public int Next(int minValue, int maxValue, int[] ignoredValues) { } public long NextInt64() { } public long NextInt64(long[] ignoredValues) { } public long NextInt64(long maxValue) { } public long NextInt64(long maxValue, long[] ignoredValues) { } public long NextInt64(long minValue, long maxValue) { } public long NextInt64(long minValue, long maxValue, long[] ignoredValues) { } public double NextDouble(double[] ignoredValues) { } public decimal NextDecimal() { } public decimal NextDecimal(decimal[] ignoredValues) { } public void NextBytes(byte[] buffer, byte[] ignoredValues) { } } ``` In case of going ahead with these suggestions, I would like to take care of the implementation myself. Additionally and as discussed in some of my previous issues, I want to highlight my interest in minimising everyone's unnecessary efforts; for example, I wouldn't find any problem with a relatively quick ""sorry, but we aren't interested in this implementation for the time being"". " +12495 area-System.Runtime Expose new String.Split overloads in netcoreapp1.1 Fixes #1513 Also added a test to ensure `Split(null)` calls `Split(char[])` without any compiler ambiguity and some minor test cleanup to reflect that actual overloads that we ended up with. +12496 area-System.Reflection GetCurrentMethod replacement in .NetCore "I’m having trouble converting the call to GetCurrentMethod below to .NET Core compatible syntax. Can someone help? This is a static method in a static class. internal static IQueryable AsSQL( this IOrderedQueryable source, SqlQuerySpec querySpec) { if (querySpec == null) { throw new ArgumentNullException(""querySpec""); } if (string.IsNullOrEmpty(querySpec.QueryText)) { throw new ArgumentException(""querySpec.QueryText""); } return source.Provider.CreateQuery(Expression.Call(null, ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod( new Type[] { typeof(TSource), typeof(TResult) }), new Expression[] { source.Expression, Expression.Constant(querySpec) })); } " +12500 area-System.Linq Use flags pattern to control typecasting of Count() `IIListProvider` is supposed to represent an iterator that has optimized `ToArray()` / `ToList()` / `Count()` paths. However, not all implementations of `IIListProvider` can optimize for all 3 of those methods. For example: - [ConcatNEnumerableIterator.ToArray](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Concat.cs#L443) cannot be optimized since we need to determine the right amount to allocate in advance, but `ToList` can. - In my recent PR #12042 `Count` cannot be optimized for `Cast` since we might miss throwing an exception for an invalid cast, but `ToArray` / `ToList` can. - Another example is [SelectEnumerableIterator](https://github.com/dotnet/corefx/pull/11841/files#diff-0e401ce4761b21f560293373a0a40781R150) where we can't optimize for `ToArray` or `ToList` but can for `Count`. For providers where we can't optimize for a particular method, we just want to return `this.ToArray()` or `this.Count()`, etc. However, this leads to a stack overflow because `Enumerable.ToArray()` checks for `IIListProvider` again and calls `IIListProvider.ToArray()`. Our solution for this thus far has been to introduce separate methods, one that checks for IIListProvider and one that doesn't. For example, places where `ToArray` can't be optimized call `EnumerableHelpers.ToArray(this)`, and places where `ToList` can't be call `new List(this)`. Same for [Buffer](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Buffer.cs#L16). ## What this PR is My idea was that instead of having 2 versions of the same thing, one that does/doesn't check for a particular type, we could simply pass in flags to the method to tell it which types to cast to. The publicly exposed method (in this case `Count(IEnumerable)`) is just a wrapper around this method, telling it to try casting to all of the types. `IIListProviders` that cannot optimize their `Count` simply call ``` cs this.Count(Check.All & ~Check.IIListProvider); ``` to make `Count` not check for IIListProviders. Another neat side-effect of using this pattern is that we can fine-tune perf in cases where we call `Count()` but we know the enumerable is not of a certain type (pass in `Check.All & ~Check.ThatType`) or is one of two types (`Check.Type1 | Check.Type2`). This PR does that in a couple of files. cc @stephentoub, @VSadov, do you think this is a good change? +12501 area-Infrastructure Build error in SUSE 11 SP3 "When i try to build in `Linux sles11-sp3 3.0.101-0.15-default #1 SMP Wed Jan 22 15:49:03 UTC 2014 (5c01f4e) x86_64 x86_64 x86_64 GNU/Linux` corefx gives below error `corefx/src/Native/Unix/System.Native/pal_io.cpp:135:37: error: use of undeclared identifier 'IN_EXCL_UNLINK'; did you mean 'PAL_IN_EXCL_UNLINK'? static_assert(PAL_IN_EXCL_UNLINK == IN_EXCL_UNLINK, """"); ^~~~~~ PAL_IN_EXCL_UNLINK corefx/src/Native/Unix/System.Native/pal_io.h:281:5: note: 'PAL_IN_EXCL_UNLINK' declared here PAL_IN_EXCL_UNLINK = 0x04000000,` " +12503 area-Infrastructure Unhandled Exception: System.IO.IOException: Too many open files Opening an issue here as requested from https://github.com/xunit/xunit/issues/874. Running `dotnet test` I got this error: ``` Unhandled Exception: System.IO.IOException: Too many open files at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(Func`1 fdFunc) at System.ConsolePal.OpenStandardOutput() at System.Console.<>c.b__25_0() at System.Console.EnsureInitialized[T](T& field, Func`1 initializer) at System.Console.get_Out() at System.Console.WriteLine(String value) at Xunit.Runner.DotNet.Program.Run(String[] args) at Xunit.Runner.DotNet.Program.Main(String[] args) ``` ``` Process: dotnet [7614] Path: /usr/local/share/dotnet/dotnet Identifier: dotnet Version: 0 Code Type: X86-64 (Native) Parent Process: dotnet [7612] Responsible: Terminal [676] User ID: 501 Date/Time: 2016-10-10 15:07:09.483 +0200 OS Version: Mac OS X 10.11.6 (15G31) Report Version: 11 Anonymous UUID: D7DB2A26-67A2-7857-FF60-65417931E264 Sleep/Wake UUID: 45CD2973-5BAF-411B-8D76-1D0EF8EC38E1 Time Awake Since Boot: 12000 seconds Time Since Wake: 6700 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Application Specific Information: abort() called Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff8f0cef06 __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff92f744ec pthread_kill + 90 2 libsystem_c.dylib 0x00007fff8c65e6df abort + 129 3 libcoreclr.dylib 0x00000001085340a2 0x1084ec000 + 295074 4 libcoreclr.dylib 0x0000000108874831 0x1084ec000 + 3704881 5 libcoreclr.dylib 0x0000000108874962 0x1084ec000 + 3705186 6 libcoreclr.dylib 0x00000001087dfd1e 0x1084ec000 + 3095838 7 ??? 0x000000010f7c2577 0 + 4554761591 8 ??? 0x000000010f7c271e 0 + 4554762014 9 ??? 0x000000010f7c2e16 0 + 4554763798 10 ??? 0x000000010f7c51f9 0 + 4554772985 11 ??? 0x000000010f7cbd8b 0 + 4554800523 12 ??? 0x000000010f7c2f31 0 + 4554764081 13 ??? 0x000000010f7c354c 0 + 4554765644 14 ??? 0x000000010f7c47d1 0 + 4554770385 15 ??? 0x000000010f36bda0 0 + 4550213024 16 ??? 0x000000010f365ee3 0 + 4550188771 17 libcoreclr.dylib 0x00000001088816a1 0x1084ec000 + 3757729 18 libcoreclr.dylib 0x0000000108772f53 0x1084ec000 + 2649939 19 libcoreclr.dylib 0x00000001085ccbca 0x1084ec000 + 920522 20 libcoreclr.dylib 0x00000001085ccd8d 0x1084ec000 + 920973 21 libcoreclr.dylib 0x000000010860979a 0x1084ec000 + 1169306 22 libcoreclr.dylib 0x000000010853d103 0x1084ec000 + 332035 23 libhostpolicy.dylib 0x0000000108477228 coreclr::execute_assembly(void*, unsigned int, int, char const**, char const*, unsigned int*) + 152 24 libhostpolicy.dylib 0x0000000108465e15 run(arguments_t const&) + 18325 25 libhostpolicy.dylib 0x000000010846679d corehost_main + 1405 26 libhostfxr.dylib 0x00000001083b272e execute_app(std::__1::basic_string, std::__1::allocator > const&, corehost_init_t*, int, char const**) + 446 27 libhostfxr.dylib 0x00000001083c83b9 fx_muxer_t::read_config_and_execute(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::unordered_map, std::__1::allocator >, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >, std::__1::hash, std::__1::allocator > >, std::__1::equal_to, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > > > > const&, int, char const**, host_mode_t) + 8441 28 libhostfxr.dylib 0x00000001083c61f2 fx_muxer_t::parse_args_and_execute(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, int, int, char const**, bool, host_mode_t, bool*) + 8386 29 libhostfxr.dylib 0x00000001083c8eb1 fx_muxer_t::execute(int, char const**) + 2337 30 libhostfxr.dylib 0x00000001083b27a5 hostfxr_main + 53 31 dotnet 0x00000001080e97ac run(int, char const**) + 1420 32 dotnet 0x00000001080e98ee main + 158 33 libdyld.dylib 0x00007fff9b3e65ad start + 1 Thread 1: 0 libsystem_kernel.dylib 0x00007fff8f0c8f72 mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fff8f0c83b3 mach_msg + 55 2 libcoreclr.dylib 0x000000010853a22a 0x1084ec000 + 320042 3 libcoreclr.dylib 0x0000000108539149 0x1084ec000 + 315721 4 libsystem_pthread.dylib 0x00007fff92f7199d _pthread_body + 131 5 libsystem_pthread.dylib 0x00007fff92f7191a _pthread_start + 168 6 libsystem_pthread.dylib 0x00007fff92f6f351 thread_start + 13 Thread 2: 0 libsystem_kernel.dylib 0x00007fff8f0d02a2 poll + 10 1 libcoreclr.dylib 0x000000010852c85e 0x1084ec000 + 264286 2 libcoreclr.dylib 0x000000010852e489 0x1084ec000 + 271497 3 libcoreclr.dylib 0x0000000108536c08 0x1084ec000 + 306184 4 libsystem_pthread.dylib 0x00007fff92f7199d _pthread_body + 131 5 libsystem_pthread.dylib 0x00007fff92f7191a _pthread_start + 168 6 libsystem_pthread.dylib 0x00007fff92f6f351 thread_start + 13 Thread 3: 0 libsystem_kernel.dylib 0x00007fff8f0cec02 __open + 10 1 libcoreclr.dylib 0x00000001085a982f 0x1084ec000 + 776239 2 libcoreclr.dylib 0x00000001085a15e1 0x1084ec000 + 742881 3 libcoreclr.dylib 0x00000001085a0219 0x1084ec000 + 737817 4 libcoreclr.dylib 0x0000000108536c08 0x1084ec000 + 306184 5 libsystem_pthread.dylib 0x00007fff92f7199d _pthread_body + 131 6 libsystem_pthread.dylib 0x00007fff92f7191a _pthread_start + 168 7 libsystem_pthread.dylib 0x00007fff92f6f351 thread_start + 13 Thread 4: 0 libsystem_kernel.dylib 0x00007fff8f0cedb6 __psynch_cvwait + 10 1 libsystem_pthread.dylib 0x00007fff92f72728 _pthread_cond_wait + 767 2 libcoreclr.dylib 0x000000010852c502 0x1084ec000 + 263426 3 libcoreclr.dylib 0x000000010852c156 0x1084ec000 + 262486 4 libcoreclr.dylib 0x0000000108531148 0x1084ec000 + 282952 5 libcoreclr.dylib 0x000000010859e9a3 0x1084ec000 + 731555 6 libcoreclr.dylib 0x000000010859e657 0x1084ec000 + 730711 7 libcoreclr.dylib 0x000000010859e304 0x1084ec000 + 729860 8 libcoreclr.dylib 0x0000000108536c08 0x1084ec000 + 306184 9 libsystem_pthread.dylib 0x00007fff92f7199d _pthread_body + 131 10 libsystem_pthread.dylib 0x00007fff92f7191a _pthread_start + 168 11 libsystem_pthread.dylib 0x00007fff92f6f351 thread_start + 13 Thread 5: 0 libsystem_kernel.dylib 0x00007fff8f0cedb6 __psynch_cvwait + 10 1 libsystem_pthread.dylib 0x00007fff92f72728 _pthread_cond_wait + 767 2 libcoreclr.dylib 0x000000010852c4e5 0x1084ec000 + 263397 3 libcoreclr.dylib 0x000000010852c156 0x1084ec000 + 262486 4 libcoreclr.dylib 0x0000000108531148 0x1084ec000 + 282952 5 libcoreclr.dylib 0x0000000108531396 0x1084ec000 + 283542 6 libcoreclr.dylib 0x000000010885d270 0x1084ec000 + 3609200 7 libcoreclr.dylib 0x00000001087b756f 0x1084ec000 + 2930031 8 libcoreclr.dylib 0x00000001087b76e3 0x1084ec000 + 2930403 9 libcoreclr.dylib 0x000000010873403a 0x1084ec000 + 2392122 10 libcoreclr.dylib 0x0000000108734739 0x1084ec000 + 2393913 11 libcoreclr.dylib 0x00000001087b7acc 0x1084ec000 + 2931404 12 libcoreclr.dylib 0x0000000108536c08 0x1084ec000 + 306184 13 libsystem_pthread.dylib 0x00007fff92f7199d _pthread_body + 131 14 libsystem_pthread.dylib 0x00007fff92f7191a _pthread_start + 168 15 libsystem_pthread.dylib 0x00007fff92f6f351 thread_start + 13 Thread 6: 0 libsystem_kernel.dylib 0x00007fff8f0c8f72 mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fff8f0c83b3 mach_msg + 55 2 libclrjit.dylib 0x000000010913b03a 0x108f8b000 + 1769530 3 libclrjit.dylib 0x0000000109139f59 0x108f8b000 + 1765209 4 libsystem_pthread.dylib 0x00007fff92f7199d _pthread_body + 131 5 libsystem_pthread.dylib 0x00007fff92f7191a _pthread_start + 168 6 libsystem_pthread.dylib 0x00007fff92f6f351 thread_start + 13 Thread 0 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x0000000000000006 rcx: 0x00007fff57b1a568 rdx: 0x0000000000000000 rdi: 0x000000000000050f rsi: 0x0000000000000006 rbp: 0x00007fff57b1a590 rsp: 0x00007fff57b1a568 r8: 0x00000000fffffffc r9: 0x00007fcd4482e4f8 r10: 0x0000000008000000 r11: 0x0000000000000206 r12: 0x00007fff57b1abe0 r13: 0x00007fff57b21490 r14: 0x00007fff79027000 r15: 0x0000000000000000 rip: 0x00007fff8f0cef06 rfl: 0x0000000000000206 cr2: 0x00007fff78140008 Logical CPU: 0 Error Code: 0x02000148 Trap Number: 133 Binary Images: 0x1080de000 - 0x1080faff3 +dotnet (0) <3D909F9D-70EC-3599-8378-D1E3D3F3C4C2> /usr/local/share/dotnet/dotnet 0x108337000 - 0x1083d8fff +libhostfxr.dylib (0) /usr/local/share/dotnet/host/fxr/1.0.1/libhostfxr.dylib 0x108402000 - 0x1084bbff3 +libhostpolicy.dylib (0) /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libhostpolicy.dylib 0x1084ec000 - 0x1089fbff7 +libcoreclr.dylib (0) /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.dylib 0x108f8b000 - 0x10917eff7 +libclrjit.dylib (0) <574A96F6-89DD-32B0-906D-0D5CBC7FFAFF> /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libclrjit.dylib 0x1091eb000 - 0x1091f3fff +System.Globalization.Native.dylib (0) <1F64EDEA-0132-388F-83AE-4EFE18703D8C> /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Globalization.Native.dylib 0x10ac8e000 - 0x10ac96fff +System.Native.dylib (0) /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Native.dylib 0x7fff6a140000 - 0x7fff6a177a47 dyld (360.22) /usr/lib/dyld 0x7fff86c4b000 - 0x7fff86c65ff3 liblzma.5.dylib (10) /usr/lib/liblzma.5.dylib 0x7fff86c8f000 - 0x7fff86c92fff libsystem_sandbox.dylib (460.60.2) <2A68B39C-B786-3A05-87A2-56E688469FB8> /usr/lib/system/libsystem_sandbox.dylib 0x7fff86cfd000 - 0x7fff86d50ff7 libc++.1.dylib (120.1) <8FC3D139-8055-3498-9AC5-6467CB7F4D14> /usr/lib/libc++.1.dylib 0x7fff86d84000 - 0x7fff86d84fff com.apple.Accelerate.vecLib (3.10 - vecLib 3.10) <054DFE32-737D-3211-9A14-0FC5E1A880E3> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib 0x7fff86d85000 - 0x7fff86d94ffb com.apple.LangAnalysis (1.7.0 - 1.7.0) <18D21123-A3E7-3851-974A-08E5D4540475> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis 0x7fff86d95000 - 0x7fff86ddbff7 libauto.dylib (186) <999E610F-41FC-32A3-ADCA-5EC049B65DFB> /usr/lib/libauto.dylib 0x7fff86f8b000 - 0x7fff86fbcfff com.apple.GSS (4.0 - 2.0) /System/Library/Frameworks/GSS.framework/Versions/A/GSS 0x7fff86fd6000 - 0x7fff8719cff7 com.apple.ImageIO.framework (3.3.0 - 1459) <228306DC-0C7F-3D69-92FA-B2E46E47AA9F> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO 0x7fff8719d000 - 0x7fff8719efff liblangid.dylib (122) <9CC4F0D1-5C51-3B69-BC8F-EE3A51FD0822> /usr/lib/liblangid.dylib 0x7fff8719f000 - 0x7fff871aafff libkxld.dylib (3248.60.10) <991CDFE9-AB87-321B-A4B2-5EFE64DDCF74> /usr/lib/system/libkxld.dylib 0x7fff879ef000 - 0x7fff87adeff7 libxml2.2.dylib (29.10) /usr/lib/libxml2.2.dylib 0x7fff87b2e000 - 0x7fff87b3cff7 libbz2.1.0.dylib (38) <28E54258-C0FE-38D4-AB76-1734CACCB344> /usr/lib/libbz2.1.0.dylib 0x7fff87b3d000 - 0x7fff87e9ff3f libobjc.A.dylib (680) <7489D2D6-1EFD-3414-B18D-2AECCCC90286> /usr/lib/libobjc.A.dylib 0x7fff87ea0000 - 0x7fff87ea5ff7 libheimdal-asn1.dylib (453.40.10) <981DE40B-FA16-36F7-BE92-8C8A115D6CD9> /usr/lib/libheimdal-asn1.dylib 0x7fff88443000 - 0x7fff8848ffff com.apple.print.framework.PrintCore (11.2 - 472.2) <5AE8AA6B-CE09-397D-B0D4-0F9CCBF1F77D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore 0x7fff88491000 - 0x7fff88491ff7 liblaunch.dylib (765.50.8) <834ED605-5114-3641-AA4D-ECF31B801C50> /usr/lib/system/liblaunch.dylib 0x7fff886df000 - 0x7fff886fbff7 libsystem_malloc.dylib (67.40.1) <5748E8B2-F81C-34C6-8B13-456213127678> /usr/lib/system/libsystem_malloc.dylib 0x7fff886fc000 - 0x7fff8875afff com.apple.SystemConfiguration (1.14 - 1.14) /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration 0x7fff88e52000 - 0x7fff88e52fff com.apple.Accelerate (1.10 - Accelerate 1.10) <185EC96A-5AF0-3620-A4ED-4D3654D25B39> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 0x7fff88e53000 - 0x7fff88e95ff7 com.apple.Metal (56.6 - 56.6) <30518711-8D00-3759-AA19-800D3C88E693> /System/Library/Frameworks/Metal.framework/Versions/A/Metal 0x7fff89106000 - 0x7fff8916cff7 libsystem_network.dylib (583.50.1) /usr/lib/system/libsystem_network.dylib 0x7fff8916d000 - 0x7fff89175fff com.apple.CoreServices.FSEvents (1223.10.1 - 1223.10.1) <7F5B7A23-BC1D-3FA9-A9B8-D534F1E1979A> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents 0x7fff89236000 - 0x7fff8923efff libcopyfile.dylib (127) /usr/lib/system/libcopyfile.dylib 0x7fff8924b000 - 0x7fff89254ff3 libsystem_notify.dylib (150.40.1) /usr/lib/system/libsystem_notify.dylib 0x7fff8952a000 - 0x7fff89554ff7 libc++abi.dylib (307.2) <922EFB36-0E9E-315B-8270-E81AC43472C0> /usr/lib/libc++abi.dylib 0x7fff89582000 - 0x7fff89593fff libcmph.dylib (6) /usr/lib/libcmph.dylib 0x7fff8959d000 - 0x7fff8959effb libremovefile.dylib (41) <552EF39E-14D7-363E-9059-4565AC2F894E> /usr/lib/system/libremovefile.dylib 0x7fff8959f000 - 0x7fff895c8ff7 libxpc.dylib (765.50.8) <54D1328E-054E-3DAA-89E2-375722F9D18F> /usr/lib/system/libxpc.dylib 0x7fff895df000 - 0x7fff895dffff com.apple.ApplicationServices (48 - 48) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices 0x7fff895e2000 - 0x7fff89656ff7 com.apple.Heimdal (4.0 - 2.0) <5D365381-8B5E-3259-8867-FC4A7D307BDE> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal 0x7fff89657000 - 0x7fff89674ff7 com.apple.AppleVPAFramework (2.1.2 - 2.1.2) <41378C0B-B56A-3A73-9BD0-E06FA1F87B8C> /System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA 0x7fff8981d000 - 0x7fff89872fff com.apple.AE (701 - 701) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE 0x7fff8ab33000 - 0x7fff8acd9ff7 com.apple.audio.toolbox.AudioToolbox (1.13 - 1.13) <370E95BC-956C-3962-86CC-0A14CF6A0389> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 0x7fff8ae1b000 - 0x7fff8ae1dff7 libRadiance.dylib (1459) <43B09AB2-B747-3EA0-A0AF-9A33B3A449D2> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib 0x7fff8af14000 - 0x7fff8af1afff com.apple.IOAccelerator (205.11 - 205.11) /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator 0x7fff8b2ec000 - 0x7fff8b31bffb libsystem_m.dylib (3105) <08E1A4B2-6448-3DFE-A58C-ACC7335BE7E4> /usr/lib/system/libsystem_m.dylib 0x7fff8b4ce000 - 0x7fff8b4e9ff7 libCRFSuite.dylib (34) <078B4CD8-6A8C-3067-B2BA-0C2A0BAB8AC3> /usr/lib/libCRFSuite.dylib 0x7fff8b4ea000 - 0x7fff8b504fff com.apple.Kerberos (3.0 - 1) <1B4744BF-E5AE-38E2-AA56-E22D3270F2E8> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos 0x7fff8b505000 - 0x7fff8b508ff7 libCoreFSCache.dylib (119.5) <2389D7DA-B8EF-3EB4-AAAF-FBEDE01CDECA> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib 0x7fff8b5f7000 - 0x7fff8b655fff com.apple.CoreServices.OSServices (728.13 - 728.13) <27C12B92-7845-38DD-B82D-DC5B678352D6> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices 0x7fff8b656000 - 0x7fff8b863fff libicucore.A.dylib (551.51.4) <3899B146-3840-3D4A-8C4A-FE391D5D25C7> /usr/lib/libicucore.A.dylib 0x7fff8c5fe000 - 0x7fff8c5ffffb libSystem.B.dylib (1226.10.1) /usr/lib/libSystem.B.dylib 0x7fff8c600000 - 0x7fff8c68dfef libsystem_c.dylib (1082.60.1) <28733D22-553E-3CBC-8D2C-EDCEB46E46AF> /usr/lib/system/libsystem_c.dylib 0x7fff8ca08000 - 0x7fff8ca19ff7 libsystem_trace.dylib (201.10.3) <1DD0C1FD-74E2-3949-9C2C-B81D19C2CA5E> /usr/lib/system/libsystem_trace.dylib 0x7fff8cc7c000 - 0x7fff8d0f2fff com.apple.CoreFoundation (6.9 - 1258.1) <943A1383-DA6A-3DC0-ABCD-D9AEB3D0D34D> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0x7fff8d106000 - 0x7fff8d11cff7 libLinearAlgebra.dylib (1162.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib 0x7fff8d21b000 - 0x7fff8d32afe7 libvDSP.dylib (563.5) <9AB6CA3C-4F0E-35E6-9184-9DF86E7C3DAD> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib 0x7fff8e196000 - 0x7fff8e2bafff libsqlite3.dylib (216.4) <280D67B8-F93D-3587-A146-19F36C817548> /usr/lib/libsqlite3.dylib 0x7fff8e7fd000 - 0x7fff8eb51fff com.apple.Foundation (6.9 - 1259) <71A9D3A0-0B1F-3E3A-86F3-1486365A6EF2> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 0x7fff8eb5b000 - 0x7fff8eb88fff libdispatch.dylib (501.40.12) /usr/lib/system/libdispatch.dylib 0x7fff8ec3f000 - 0x7fff8ec41ff7 libsystem_configuration.dylib (802.40.13) <3DEB7DF9-6804-37E1-BC83-0166882FF0FF> /usr/lib/system/libsystem_configuration.dylib 0x7fff8f0b8000 - 0x7fff8f0d6ff7 libsystem_kernel.dylib (3248.60.10) /usr/lib/system/libsystem_kernel.dylib 0x7fff8f33c000 - 0x7fff90587feb com.apple.CoreGraphics (1.600.0 - 960.3) <407FA367-204F-389E-8E33-0435E3B56D40> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics 0x7fff9058e000 - 0x7fff90834ff7 com.apple.CoreData (120 - 641.3) /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData 0x7fff908a9000 - 0x7fff908b1fef libsystem_platform.dylib (74.40.2) <29A905EF-6777-3C33-82B0-6C3A88C4BA15> /usr/lib/system/libsystem_platform.dylib 0x7fff90a7a000 - 0x7fff90a91ff7 libsystem_asl.dylib (323.50.1) <41F8E11F-1BD0-3F1D-BA3A-AA1577ED98A9> /usr/lib/system/libsystem_asl.dylib 0x7fff90bcf000 - 0x7fff90c3dff7 com.apple.ApplicationServices.ATS (377 - 394.4) <9779E916-0788-3CAC-B1EC-F68BCB12A2B6> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS 0x7fff90c74000 - 0x7fff90c79fff com.apple.DiskArbitration (2.7 - 2.7) /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 0x7fff90c7a000 - 0x7fff90cbfff3 libFontRegistry.dylib (155.2) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib 0x7fff90e08000 - 0x7fff90e0cfff libpam.2.dylib (20) /usr/lib/libpam.2.dylib 0x7fff90e1e000 - 0x7fff90e21fff com.apple.IOSurface (108.2.3 - 108.2.3) <52E51D16-42E9-3DDB-A16C-48225EF262C4> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface 0x7fff90f89000 - 0x7fff91210fff com.apple.CFNetwork (760.6.3 - 760.6.3) <8CB9CB2E-D0FB-31D4-A1AE-2A5FE028AD6B> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork 0x7fff9128d000 - 0x7fff91572ffb com.apple.CoreServices.CarbonCore (1136.2 - 1136.2) <2DBAFC9A-6CD6-351D-B1F4-87D81AA6D640> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore 0x7fff915b1000 - 0x7fff915b6ff3 libunwind.dylib (35.3) /usr/lib/system/libunwind.dylib 0x7fff9186f000 - 0x7fff9189affb libarchive.2.dylib (33.20.2) <6C370A21-63FD-3A68-B4B3-5333F24B770B> /usr/lib/libarchive.2.dylib 0x7fff91a77000 - 0x7fff91aa0fff libsystem_info.dylib (477.50.4) /usr/lib/system/libsystem_info.dylib 0x7fff91aa1000 - 0x7fff91aa9fff libGFXShared.dylib (12.1) <5A0C2493-200C-30BE-97D5-8E8C0B8E604D> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib 0x7fff91f1e000 - 0x7fff91f1ffff libsystem_blocks.dylib (65) <1244D9D5-F6AA-35BB-B307-86851C24B8E5> /usr/lib/system/libsystem_blocks.dylib 0x7fff92039000 - 0x7fff92039fff libOpenScriptingUtil.dylib (169.1) /usr/lib/libOpenScriptingUtil.dylib 0x7fff92379000 - 0x7fff9237efff com.apple.TCC (1.0 - 1) /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC 0x7fff925af000 - 0x7fff925b7fff libsystem_networkextension.dylib (385.40.36) <66095DC7-6539-38F2-95EE-458F15F6D014> /usr/lib/system/libsystem_networkextension.dylib 0x7fff92722000 - 0x7fff9274bff7 libxslt.1.dylib (14.4) <72CD1CA4-1FBD-3672-ADCE-A89AB741689A> /usr/lib/libxslt.1.dylib 0x7fff92a1a000 - 0x7fff92a36ff3 libresolv.9.dylib (60) /usr/lib/libresolv.9.dylib 0x7fff92a37000 - 0x7fff92a37ff7 libunc.dylib (29) /usr/lib/system/libunc.dylib 0x7fff92a6c000 - 0x7fff92ae3feb libcorecrypto.dylib (335.50.1) /usr/lib/system/libcorecrypto.dylib 0x7fff92ae4000 - 0x7fff92af4fff libbsm.0.dylib (34) <7E14504C-A8B0-3574-B6EB-5D5FABC72926> /usr/lib/libbsm.0.dylib 0x7fff92b5d000 - 0x7fff92bb9fff libTIFF.dylib (1459) <1E1839C3-2C99-38B8-A729-788459576858> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib 0x7fff92bbb000 - 0x7fff92bc6ff7 libChineseTokenizer.dylib (16) <79B8C67A-3061-3C78-92CD-4650719E68D4> /usr/lib/libChineseTokenizer.dylib 0x7fff92bd5000 - 0x7fff92f6afdb com.apple.vImage (8.0 - 8.0) <4BAC9B6F-7482-3580-8787-AB0A5B4D331B> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage 0x7fff92f6e000 - 0x7fff92f77ff7 libsystem_pthread.dylib (138.10.4) <3DD1EF4C-1D1B-3ABF-8CC6-B3B1CEEE9559> /usr/lib/system/libsystem_pthread.dylib 0x7fff92f8d000 - 0x7fff93023fff com.apple.ColorSync (4.9.0 - 4.9.0) <8FC37E20-6579-3CB2-9D49-BC39FC38DF87> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync 0x7fff93243000 - 0x7fff9324bffb libsystem_dnssd.dylib (625.60.4) <80189998-32B0-316C-B5C5-53857486713D> /usr/lib/system/libsystem_dnssd.dylib 0x7fff9392f000 - 0x7fff93bc5fff libmecabra.dylib (696.5) /usr/lib/libmecabra.dylib 0x7fff93c56000 - 0x7fff93c57fff libsystem_secinit.dylib (20) <32B1A8C6-DC84-3F4F-B8CE-9A52B47C3E6B> /usr/lib/system/libsystem_secinit.dylib 0x7fff93d54000 - 0x7fff93d5cfff com.apple.NetFS (6.0 - 4.0) <842A5346-24C3-3F22-9ECF-E586A10EA1F2> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS 0x7fff93d5d000 - 0x7fff93d67fff com.apple.NetAuth (6.0 - 6.0) /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth 0x7fff93dcc000 - 0x7fff93de5fff com.apple.CFOpenDirectory (10.11 - 194) <11F95672-55E0-3F9D-9171-5E8C56AEE948> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory 0x7fff93e62000 - 0x7fff93f8fff3 com.apple.CoreText (352.0 - 494.12) /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText 0x7fff93f90000 - 0x7fff94080ff7 libJP2.dylib (1459) <5212E346-B7FC-31F4-B4F7-CF1DD9BBAFBB> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib 0x7fff95266000 - 0x7fff952dbfff com.apple.framework.IOKit (2.0.2 - 1179.50.2) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x7fff953d1000 - 0x7fff953e2fff libSparseBLAS.dylib (1162.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib 0x7fff96436000 - 0x7fff964ddfff com.apple.LanguageModeling (1.0 - 1) <58C18A47-BDE7-3CBE-81C0-797029D170A1> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling 0x7fff96db0000 - 0x7fff96db2fff com.apple.loginsupport (1.0 - 1) <9B2F5F9B-ED38-313F-B798-D2B667BCD6B5> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport 0x7fff96e36000 - 0x7fff96e4dff7 libsystem_coretls.dylib (83.40.5) /usr/lib/system/libsystem_coretls.dylib 0x7fff96f9f000 - 0x7fff96fbbff7 libextension.dylib (78) /usr/lib/libextension.dylib 0x7fff97036000 - 0x7fff970aaff3 com.apple.securityfoundation (6.0 - 55126) /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation 0x7fff970bb000 - 0x7fff970c7fff com.apple.speech.synthesis.framework (5.4.12 - 5.4.12) <71DA00B8-5EA2-326B-8814-59DB25512F65> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis 0x7fff973f9000 - 0x7fff973f9fff libenergytrace.dylib (10.40.1) <0A491CA7-3451-3FD5-999A-58AB4362682B> /usr/lib/libenergytrace.dylib 0x7fff974d1000 - 0x7fff974d5fff libGIF.dylib (1459) <7C84B660-04BC-3D05-8C02-A7FBE51FD77B> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib 0x7fff974db000 - 0x7fff974e9fff com.apple.opengl (12.1.0 - 12.1.0) <0718DB60-BA4F-3CF7-A117-10A2515D931F> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 0x7fff97562000 - 0x7fff975efdd7 com.apple.AppleJPEG (1.0 - 1) /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG 0x7fff9764c000 - 0x7fff9769dff7 libcups.2.dylib (435.2) <91584A40-214D-33E8-A613-CE22289037C8> /usr/lib/libcups.2.dylib 0x7fff9769e000 - 0x7fff9773efff com.apple.Metadata (10.7.0 - 972.34) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata 0x7fff9773f000 - 0x7fff97756fff libmarisa.dylib (4) /usr/lib/libmarisa.dylib 0x7fff97757000 - 0x7fff97757ff7 libkeymgr.dylib (28) <8371CE54-5FDD-3CE9-B3DF-E98C761B6FE0> /usr/lib/system/libkeymgr.dylib 0x7fff98065000 - 0x7fff98157ff7 libiconv.2.dylib (44) /usr/lib/libiconv.2.dylib 0x7fff9820a000 - 0x7fff9820bfff libDiagnosticMessagesClient.dylib (100) <4243B6B4-21E9-355B-9C5A-95A216233B96> /usr/lib/libDiagnosticMessagesClient.dylib 0x7fff98437000 - 0x7fff9847cff7 com.apple.coreservices.SharedFileList (24.4 - 24.5) <1D2AD77B-778F-3253-A295-3D0A32A8121C> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList 0x7fff997ed000 - 0x7fff997effff libCVMSPluginSupport.dylib (12.1) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib 0x7fff99ad4000 - 0x7fff99adbff7 libcompiler_rt.dylib (62) /usr/lib/system/libcompiler_rt.dylib 0x7fff99b08000 - 0x7fff99bb8fe7 libvMisc.dylib (563.5) <6D73C20D-D1C4-3BA5-809B-4B597C15AA86> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib 0x7fff99c21000 - 0x7fff99c5bfff com.apple.QD (3.12 - 302) <0FE53180-2895-3D14-A1E7-F82DE1D106E1> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD 0x7fff99f29000 - 0x7fff9a090fff libBLAS.dylib (1162.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 0x7fff9a1b4000 - 0x7fff9a1bdff7 com.apple.CommonAuth (4.0 - 2.0) <4B8673E1-3697-3FE2-8D30-AC7AC5D4F8BF> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth 0x7fff9a3a2000 - 0x7fff9a3e0ff7 libGLImage.dylib (12.1) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib 0x7fff9a789000 - 0x7fff9a7adfff libJPEG.dylib (1459) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib 0x7fff9ab05000 - 0x7fff9ab13fff libxar.1.dylib (302) <03207F66-2C4A-3DBD-8D81-70F4C85903C4> /usr/lib/libxar.1.dylib 0x7fff9b373000 - 0x7fff9b3e2fff com.apple.SearchKit (1.4.0 - 1.4.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit 0x7fff9b3e3000 - 0x7fff9b3e6ffb libdyld.dylib (360.22) <1F9FCF2C-5E94-3F2D-B4A5-1238587AA5C6> /usr/lib/system/libdyld.dylib 0x7fff9b3e7000 - 0x7fff9b7e3fff libLAPACK.dylib (1162.2) <987E42B0-5108-3065-87F0-9DF7616A8A06> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 0x7fff9b7e4000 - 0x7fff9b809ff7 libPng.dylib (1459) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib 0x7fff9b80a000 - 0x7fff9b815fff libGL.dylib (12.1) <70D51643-04AC-3400-8F11-A6FC25985289> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib 0x7fff9ba35000 - 0x7fff9bccfff3 com.apple.security (7.0 - 57337.60.2) /System/Library/Frameworks/Security.framework/Versions/A/Security 0x7fff9c2b3000 - 0x7fff9c2b3fff libmetal_timestamp.dylib (600.0.44.2) /System/Library/PrivateFrameworks/GPUCompiler.framework/libmetal_timestamp.dylib 0x7fff9c2b4000 - 0x7fff9c305fff com.apple.audio.CoreAudio (4.3.0 - 4.3.0) /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio 0x7fff9c30a000 - 0x7fff9c30cff7 com.apple.xpc.ServiceManagement (1.0 - 1) /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement 0x7fff9c330000 - 0x7fff9c42cff7 libFontParser.dylib (158.6) <267A9AE4-4138-3112-8D73-BDFDC96568FF> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib 0x7fff9c433000 - 0x7fff9c436fff libCoreVMClient.dylib (119.5) <560D70FB-709F-3030-96C9-F249FCB7DA6D> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib 0x7fff9c473000 - 0x7fff9c47fff7 com.apple.OpenDirectory (10.11 - 194) <31A67AD5-5CC2-350A-96D7-821DF4BC4196> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory 0x7fff9c530000 - 0x7fff9c532fff libsystem_coreservices.dylib (19.2) <1B3F5AFC-FFCD-3ECB-8B9A-5538366FB20D> /usr/lib/system/libsystem_coreservices.dylib 0x7fff9c6a0000 - 0x7fff9c6ecffb com.apple.HIServices (1.22 - 550) <6B76B41C-CF5A-34C4-89F4-EFD7CA3D1C9D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices 0x7fff9c73a000 - 0x7fff9c74bff7 libz.1.dylib (61.20.1) /usr/lib/libz.1.dylib 0x7fff9c80f000 - 0x7fff9c81aff7 libcommonCrypto.dylib (60075.50.1) <93732261-34B4-3914-B7A2-90A81A182DBA> /usr/lib/system/libcommonCrypto.dylib 0x7fff9cfe5000 - 0x7fff9d009fff com.apple.MultitouchSupport.framework (304.12 - 304.12) <65CB7653-EACD-3ADB-ABB6-2E0671708301> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport 0x7fff9d00a000 - 0x7fff9d039ff7 com.apple.DictionaryServices (1.2 - 250.3) <30250542-CBAA-39C1-91AA-B57A5DE17594> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices 0x7fff9d03a000 - 0x7fff9d07bff7 libGLU.dylib (12.1) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib 0x7fff9d115000 - 0x7fff9d119fff libcache.dylib (75) <9548AAE9-2AB7-3525-9ECE-A2A7C4688447> /usr/lib/system/libcache.dylib 0x7fff9d124000 - 0x7fff9d158ff7 com.apple.CoreVideo (1.8 - 191.3) <1AA24A1B-CB84-3F6B-B6DE-11494542649C> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo 0x7fff9d1c5000 - 0x7fff9d1c7ff7 libquarantine.dylib (80) <0F4169F0-0C84-3A25-B3AE-E47B3586D908> /usr/lib/system/libquarantine.dylib 0x7fff9d1c8000 - 0x7fff9d1e0fef libcompression.dylib (28) /usr/lib/libcompression.dylib 0x7fff9d1f7000 - 0x7fff9d1f7fff com.apple.CoreServices (728.13 - 728.13) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 0x7fff9d1f8000 - 0x7fff9d31ffff com.apple.LaunchServices (728.13 - 728.13) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices 0x7fff9d398000 - 0x7fff9d39dff7 libmacho.dylib (875.1) <318264FA-58F1-39D8-8285-1F6254EE410E> /usr/lib/system/libmacho.dylib External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 5719 thread_create: 0 thread_set_state: 0 VM Region Summary: ReadOnly portion of Libraries: Total=183.4M resident=0K(0%) swapped_out_or_unallocated=183.4M(100%) Writable regions: Total=83.9M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=83.9M(100%) VIRTUAL REGION REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Activity Tracing 2048K 2 Kernel Alloc Once 4K 2 MALLOC 30.1M 16 MALLOC guard page 32K 7 MALLOC_LARGE (reserved) 1168K 3 reserved VM address space (unallocated) STACK GUARD 56.0M 8 Stack 11.0M 8 VM_ALLOCATE 2.2G 1270 VM_ALLOCATE (reserved) 144K 3 reserved VM address space (unallocated) __DATA 8676K 150 __LINKEDIT 91.9M 10 __TEXT 91.4M 156 __UNICODE 552K 2 mapped file 76.6M 295 shared memory 8K 3 =========== ======= ======= TOTAL 2.6G 1920 TOTAL, minus reserved VM space 2.6G 1920 Model: MacBookPro11,5, BootROM MBP114.0172.B09, 4 processors, Intel Core i7, 2,5 GHz, 16 GB, SMC 2.30f2 Graphics: AMD Radeon R9 M370X, AMD Radeon R9 M370X, PCIe, 2048 MB Graphics: Intel Iris Pro, Intel Iris Pro, Built-In Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533642465238412D50422020 Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533642465238412D50422020 AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x152), Broadcom BCM43xx 1.0 (7.21.95.175.1a6) Bluetooth: Version 4.4.6f1 17910, 3 services, 27 devices, 1 incoming serial ports Network Service: Wi-Fi, AirPort, en0 Serial ATA Device: APPLE SSD SM0512G, 500,28 GB USB Device: USB 3.0 Bus USB Device: Apple Internal Keyboard / Trackpad USB Device: Bluetooth USB Host Controller Thunderbolt Bus: MacBook Pro, Apple Inc., 27.1 ``` +12504 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs to beta-24611-01, beta-24611-02, beta-24607-00, respectively (master) /cc @dotnet/corefx-contrib +12505 area-Meta Merge Future branch into Master New APIs were added in the Future branch a while ago. It'd be nice if the changes were merged into Master so we could make the new APIs available in netcoreapp1.1. https://github.com/dotnet/corefx/compare/future Some examples: - #1384 - Regex group should have a Name property - #1783 - Add ConcurrentDictionary GetOrAdd/AddOrUpdate overloads with generic arg - #1756 - Implement generic interfaces on Regex collections - #2436 - Add async XLinq document/element loading and saving - #2862 - Add HashSet ctors with capacity +12506 area-System.Linq Reduce generic exception code bloat in System.Linq Currently System.Linq uses this pattern to handle invalid arguments: ``` cs if (source == null) { throw Error.ArgumentNull(nameof(source)); } ``` Where `ArgumentNull` gets inlined. This introduces significant jitted code bloat since the Linq methods are generic, so this code (which very rarely gets hit) is generated over and over again for different value types. We should convert all of this to the form ``` cs if (source == null) { Error.ThrowSourceArgumentNull(); // or ThrowArgumentNullSource } ``` As of dotnet/coreclr#6103 methods that are known to throw are not inlined, so this should help decrease code size. cc @benaadams +12507 area-System.IO Override BufferedStream.CopyToAsync to delegate to source stream PR https://github.com/dotnet/corefx/pull/12006 added an override of BufferedStream.CopyToAsync, but it doesn't compile because it pulls in a helper file that references types from System.Buffers.dll, which System.IO.dll doesn't currently reference. While that may change in the future, this PR fixes that by cherry-picking the initial commit and then adding a commit that splits the helper file into two, one that does the argument validation needed by this change and one that uses ArrayPool. I've also added a commit with additional tests for the CopyToAsync override. cc: @ianhays, @maddin2016 Fixes https://github.com/dotnet/corefx/issues/11572 +12508 area-System.Net Add netstandard1.7 build to Net.Primitives Update System.Net.Primitives to netstandard1.7. Retarget the src and ref to netstandard1.7. Make the tests cross-compile for netstandard1.7/netstandard1.3. I preserved a UWP build of the library (now UAP10.1) because there was a significant amount of source here that we wouldn't want to get stale by not building it. /cc @stephentoub @weshaggard @danmosemsft @tijoytom @ericeil +12509 area-System.Runtime Proposal: Adding a concise API for throwing exceptions "## Background Argument validation is done a lot in .NET code. So much, in fact, that people almost always find that writing `throw new ArgumentNullException(...)` et al. each time is too verbose, and end up writing their own helper classes to throw exceptions. Some random examples I picked from GitHub: [Octokit.NET](https://github.com/octokit/octokit.net/blob/master/Octokit/Helpers/Ensure.cs#L16), [xUnit](https://github.com/xunit/xunit/blob/master/src/common/Guard.cs#L11), [System.Collections.Immutable](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/Validation/Requires.cs#L25). ## Proposal We should have an API in the BCL for this so people don't have to keep writing their own helper classes. Here's what an initial prototype could look like (similar to the S.C.I class I linked to above): ``` cs public static class Requires { public static void NotNull(T value, string paramName); // no T : class constraint to allow nullables // parameter names are same as ArgumentNullException, to allow easy conversion // for people using named parameters public static void NotNull(T value, string paramName, string message); public static void Range(bool condition, string paramName); public static void Range(bool condition, string paramName, string message); public static void Argument(bool condition, string message); // message comes first for ArgumentException public static void Argument(bool condition, string message, string paramName); } ``` How it would be used: ``` cs T Single(this IList list) { Requires.NotNull(list, nameof(list)); Requires.Argument(list.Count == 1, ""The input list needs to have only 1 item.""); return list[0]; } ``` ### Additional Notes In addition to providing a nice unified API, this may also lead to better performance / decreased memory consumption for .NET apps. Typically when people write their own helper APIs for this, they write it so that the `throw` is in the same clause as the check for the condition, i.e. ``` cs void NotNull(T value, string name) { if (value == null) { throw new ArgumentNullException(name); } } ``` or, alternatively, they have a method that returns an exception and throw that from the caller: ``` cs ArgumentNullException ArgumentNull(string name) { return new ArgumentNullException(name); } if (value == null) throw Error.ArgumentNull(nameof(value)); ``` Code snippet 1 is not likely to be inlined because of the `throw new ...`, while `ArgumentNull` in code snippet 2 does get inlined, resulting in generated code bloat for a `throw` path that will very rarely get called. If we wrote our own API for throwing exceptions, we could structure it so that the check gets inlined, but the throwing code doesn't: ``` cs void NotNull(T value, string name) { if (value == null) { ThrowArgumentNullException(name); } } void ThrowArgumentNullException(string name) => throw new ArgumentNullException(name); ``` Thoughts? cc @svick @benaadams @jkotas @GSPP @mellinoe @KrzysztofCwalina " +12510 area-System.Net Move HttpVersion to System.Net.Primitives HttpVersion is privately copied in `System.Net.Http` and `System.Net.Http.WinHttpHandler`. Moving it to lower-level contract will unify all these private copies. Note: Private copy in `Common` has two additional values in it. They are not in .NET 4.6 and Xamarin, so we can't add them in public netstandard2.0 contract. More details in: https://github.com/dotnet/corefx/pull/12347#discussion_r81843383 +12511 area-Infrastructure Update buildtools version "Update build tools version to latest from buildtools release/1.0.0 branch. Only changes contained are cherry-picked to work with this version of CoreFX as well as provide new ""V2"" Helix telemetry when jobs are started. @chcosta @Chrisboh , @sokket " +12512 area-System.Net Implement ContinueDelegate for System.Net.HttpRequest +12513 area-System.Net Replace custom date-parsing (HttpDateParse.cs) with DateTime.Parse Need to make sure DateTime.Parse handle all the cases HttpDateParse deal with .. https://github.com/dotnet/corefx/pull/12347/files/7fe03ad63fbe79d791228319e16e0f1910f4d06d#diff-93d09013382d2a05606b12516b65ea11 +12514 area-System.Runtime Move System.DBNull down to System.Runtime Addresses issue https://github.com/dotnet/corefx/issues/12292 Moved System.DBNull down to System.Runtime (uses coreclr implementation) and System.Data.Common typeforwards to System.Runtime. cc: @stephentoub @danmosemsft @weshaggard @joperezr +12515 area-System.Console "Add some ""manual"" System.Console tests" Today our test suite for System.Console is significantly lacking, due to our current inability to handle reading, verification of output to the terminal, etc. Until we are better at such things, this PR adds a manual test suite, that instructs the user to do something and to then verify specific visual results and behaviors. I'm submitting this as its own PR, but added it as part of validating a bug fix I'm submitting separately. cc: @ianhays +12516 area-System.Console Fix Console.CursorLeft/Top handling in WSL Console.get_CursorLeft/Top work by issuing a request to the terminal by writing out a known sequence to stdout. The terminal then provides a response on stdin, again in a known format: \ESC[row;colR. Our current logic reads characters until it finds the escape, then reads until it finds the brace, and then reads until it gets a digit that starts the row. At that point, it parses whatever value it has in its input buffer and treats that as the row. Then it does the same for the column. This has worked fine on all of the systems we tested on, but it breaks in the Windows Subsystem for Linux. The reason is that the other systems all apparently write the response atomically, such that when we go to read the data, all of the digits for the row/column are available. But WSL writes each digit out individually, which means when we read the first digit, there's a good chance the remaining digits did not get read with it into our buffer, and we end up misinterpreting just that first digit as being the entire value. So for example, if WSL responds to a request with \ESC[12;34R, we're likely to interpret the current position as being 1,3 rather than 12,34. This commit fixes this by reading each character individually and not declaring that we're done parsing the row or column until we hit the known marker that comes after it, namely the ';' in the case of the row and the 'R' in the case of the col. (Note that I got rid of the extra buffering we were doing here, as it was flawed and would have added additional code to do it correctly with this new approach. If we determine that there's a noticeable performance impact to not having it, then we can add it in.) cc: @ianhays, @zadjii-msft, @lzybkr Contributes to https://github.com/dotnet/corefx/issues/12452 +12517 area-System.Security System.Security.Cryptography.Native.OpenSsl not found on Ubuntu 14.04 "A SignalR sample project fails on Linux because it cannot find System.Security.Cryptography.Native.OpenSsl. I turned on LD_DEBUG and can see that it is probing in different location but is not able to find it. SignalR uses ""System.Security.Cryptography.Algorithms"": ""4.2.0-*"" to [get a random number](https://github.com/aspnet/SignalR-Server/blob/9680e9c2c185a19604390003a6f10489d0538a56/src/Microsoft.AspNetCore.SignalR.Sources/SipHashBasedStringEqualityComparer.cs#L46) ``` 27185: file=/usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Security.Cryptography.Native.OpenSsl [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=/home/xxxxxx/.nuget/packages/System.Security.Cryptography.Algorithms/4.3.0-preview1-24530-03/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Native.OpenSsl [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=System.Security.Cryptography.Native.OpenSsl [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: find library=System.Security.Cryptography.Native.OpenSsl [0]; searching 27185: search cache=/etc/ld.so.cache 27185: search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib (system search path) 27185: trying file=/lib/x86_64-linux-gnu/System.Security.Cryptography.Native.OpenSsl 27185: trying file=/usr/lib/x86_64-linux-gnu/System.Security.Cryptography.Native.OpenSsl 27185: trying file=/lib/System.Security.Cryptography.Native.OpenSsl 27185: trying file=/usr/lib/System.Security.Cryptography.Native.OpenSsl 27185: 27185: 27185: file=/home/xxxxxx/.nuget/packages/System.Security.Cryptography.Algorithms/4.3.0-preview1-24530-03/runtimes/unix/lib/netstandard1.6/libSystem.Security.Cryptography.Native.OpenSsl.so [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=/usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libSystem.Security.Cryptography.Native.OpenSsl.so [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=libSystem.Security.Cryptography.Native.OpenSsl.so [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: find library=libSystem.Security.Cryptography.Native.OpenSsl.so [0]; searching 27185: search cache=/etc/ld.so.cache 27185: search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib (system search path) 27185: trying file=/lib/x86_64-linux-gnu/libSystem.Security.Cryptography.Native.OpenSsl.so 27185: trying file=/usr/lib/x86_64-linux-gnu/libSystem.Security.Cryptography.Native.OpenSsl.so 27185: trying file=/lib/libSystem.Security.Cryptography.Native.OpenSsl.so 27185: trying file=/usr/lib/libSystem.Security.Cryptography.Native.OpenSsl.so 27185: 27185: 27185: file=/home/xxxxxx/.nuget/packages/System.Security.Cryptography.Algorithms/4.3.0-preview1-24530-03/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Native.OpenSsl.so [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=/usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Security.Cryptography.Native.OpenSsl.so [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=System.Security.Cryptography.Native.OpenSsl.so [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: find library=System.Security.Cryptography.Native.OpenSsl.so [0]; searching 27185: search cache=/etc/ld.so.cache 27185: search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib (system search path) 27185: trying file=/lib/x86_64-linux-gnu/System.Security.Cryptography.Native.OpenSsl.so 27185: trying file=/usr/lib/x86_64-linux-gnu/System.Security.Cryptography.Native.OpenSsl.so 27185: trying file=/lib/System.Security.Cryptography.Native.OpenSsl.so 27185: trying file=/usr/lib/System.Security.Cryptography.Native.OpenSsl.so 27185: 27185: 27185: file=/home/xxxxxx/.nuget/packages/System.Security.Cryptography.Algorithms/4.3.0-preview1-24530-03/runtimes/unix/lib/netstandard1.6/libSystem.Security.Cryptography.Native.OpenSsl [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=/usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libSystem.Security.Cryptography.Native.OpenSsl [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: 27185: file=libSystem.Security.Cryptography.Native.OpenSsl [0]; dynamically loaded by /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so [0] 27185: find library=libSystem.Security.Cryptography.Native.OpenSsl [0]; searching 27185: search cache=/etc/ld.so.cache 27185: search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib (system search path) 27185: trying file=/lib/x86_64-linux-gnu/libSystem.Security.Cryptography.Native.OpenSsl 27185: trying file=/usr/lib/x86_64-linux-gnu/libSystem.Security.Cryptography.Native.OpenSsl 27185: trying file=/lib/libSystem.Security.Cryptography.Native.OpenSsl 27185: trying file=/usr/lib/libSystem.Security.Cryptography.Native.OpenSsl ``` ``` System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native.OpenSsl': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.Crypto.GetMaxMdSize() at Interop.Crypto..cctor() --- End of inner exception stack trace --- at Interop.Crypto.GetRandomBytes(Byte[] buf, Int32 num) at System.Security.Cryptography.RNGCryptoServiceProvider.GetBytes(Byte[] data) at Microsoft.AspNetCore.SignalR.Infrastructure.SipHashBasedStringEqualityComparer.GenerateRandomKeySegment() at Microsoft.AspNetCore.SignalR.Infrastructure.SipHashBasedStringEqualityComparer..ctor() at Microsoft.AspNetCore.SignalR.Messaging.TopicLookup..ctor() at Microsoft.AspNetCore.SignalR.Messaging.MessageBus..ctor(IStringMinifier stringMinifier, ILoggerFactory loggerFactory, IPerformanceCounterManager performanceCounterManager, IOptions`1 optionsAccessor) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.AspNetCore.SignalR.PersistentConnection.Initialize(IServiceProvider serviceProvider) at Microsoft.AspNetCore.SignalR.Hubs.HubDispatcher.Initialize(IServiceProvider serviceProvider) at Microsoft.AspNetCore.SignalR.Hosting.PersistentConnectionMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] ``` " +12518 area-System.Globalization Different handling of comparison options between Windows and Linux "Repro: ``` C# using System; using System.Globalization; public class Program { public static void Main() { Console.WriteLine(new CultureInfo(""ja-JP"").CompareInfo.Compare( ""\uFF8C\uFF67\uFF7D\uFF9E\uFF65\uFF77\uFF9E\uFF80\uFF70"", ""\u30D5\u30A1\u30BA\u30FB\u30AE\u30BF\u30FC"", CompareOptions.IgnoreWidth)); } } ``` On Windows this prints out 0. On Linux it prints out -1. Is that expected? This difference is causing a failure in one of the SqlClient tests on Unix. cc: @tarekgh, @ellismg, @eerhardt " +12519 area-Infrastructure Cannot build System.Native.so on Alpine Linux (MUSL) The native System.Native.so build fails on Alpine Linux with a signed to unsigned comparison warning: ``` /root/corefx/src/Native/Unix/System.Native/pal_networking.cpp:1292:12: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare] return CMSG_NXTHDR(mhdr, cmsg); ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/sys/socket.h:269:44: note: expanded from macro 'CMSG_NXTHDR' __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` +12520 area-Infrastructure Fix Alpine Linux System.Native.so build The native System.Native.so build fails on Alpine Linux with a signed to unsigned comparison warning in the expansion of the CMSG_NXTHDR macro. The issue is in the macro definition in the platform headers, so I am adding suppression of that warning for the macro expansion. +12523 area-System.Linq Fix SelectArrayIterator.MoveNext after Dispose Just realized that there was a small issue with my changes in #11841: if someone tries to `MoveNext` on a `SelectArrayIterator` after it's Disposed, then an IOOR exception will be generated because we try to access index -2. This is the fix. Repro: ``` cs var s = new int[1].Select(a => a); using (var e = s.GetEnumerator()) { e.MoveNext(); e.MoveNext(); // Disposes e.MoveNext(); // before called SelectArrayIterator.Dispose again, now throws } ``` cc @stephentoub, @VSadov +12524 area-System.Console Add a few more manual console tests cc: @ianhays Fixes https://github.com/dotnet/corefx/issues/9777 In response to https://github.com/dotnet/corefx/pull/12515#issuecomment-252730275 +12525 area-System.Xml Port xsd.exe to .NET Core Currently, xsd.exe is a command line tool that runs against .NET Framework. We don't have a .NET Core and thus no cross-platform version of this tool. +12526 area-System.Net Capturing Identity context in async smtp call doesn't check if the credential is in cache. This check depends on a call to an internal member in `CredentialCache` called `CredentialCache.IsDefaultInCache`, which is not available in .NETCore. Need a way to simulate this behavior. Desktop reference [here](https://referencesource.microsoft.com/#System/net/System/Net/mail/SmtpClient.cs,627) +12527 area-System.Diagnostics Diagnostics name space Fixes #12260 +12529 area-System.Net Authentication for System.Net.Mail does not impersonate for SystemNetworkCredential WindowsIdentity.Impersonate is not available in .NET Core, this is a deviation from Desktop. Refer to desktop code [here](https://referencesource.microsoft.com/#System/net/System/Net/mail/smtpconnection.cs,481) +12530 area-Infrastructure Updating CoreFx dependencies to servicing-24610-01 /cc @dotnet/corefx-contrib +12531 area-System.Runtime Remove P2P reference from System.Runtime.Serialization.Formatters As part of changing MulticastDelegate's interfaces, we needed to add a temporary P2P reference from System.Runtime.Serialization.Formatters to System.Runtime, so this should be removed once the package versions are updated. line: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Serialization.Formatters/src/System.Runtime.Serialization.Formatters.csproj#L67-L68 +12534 area-System.Data Support System.Transactions in SqlClient for .NET Core Given `System.Transactions` is going to be included in 1.2 (see https://github.com/dotnet/corefx/issues/2949) the next step seems to be to bring auto-enlistment of ambient transactions and related behaviors into the .NET Core version of SqlClient. Note that the corresponding EF Core feature (tracked at https://github.com/aspnet/EntityFramework/issues/5595) will depend on this to work with SQL Server. +12535 area-System.Net Bring Ntlm, Negotiate and Digest authentication modules to .NET Core System.Net.Mail. `System.Net.Mail` uses the Negotiate, Ntlm and Digest authentication protocols to try validate the credentials if the server supports it. These authentication modules depend on `NTAuthentication` internal type in `System.Net.Security`. This issue is to figure out a way to port these to .NET Core, to have newer implementation not depending on Security internal types or expose necessary new APIs on Security to consume in other assemblies. +12536 area-System.Net Enhance performance of System.Net.Mail by pooling open TcpClient connections. Desktop code used `ServicePointManager` to provide this, since system.net.mail doesn't support `ServicePointManager`, we need a way to keep `TcpClient` connections open and use existing ones for same connections. +12537 area-System.Net .NET Core doesn't support getting mail settings from web.config files. Desktop Full Framework supports parsing the `` element from web.config files which provides smtp settings by using `System.Net.Configuration.` This contract is not available in netstandard2.0. This issue tracks this feature difference and requires proposals. +12538 area-System.Net Add support to drop mails to IIS pickup directory if IIS is running on Windows Currently .NET Core throws `NotSupportedException` for this, since the Desktop implementation depends on COM Interop. Needs investigation whether this feature is worth having in .NET Core and if so how to implement on Windows. +12539 area-System.IO Test failure: System.IO.IsolatedStorage.GetCreationTimeTests/GetCreationTime_GetsTime_Unix Opened on behalf of @jiangzeng The test `System.IO.IsolatedStorage.GetCreationTimeTests/GetCreationTime_GetsTime_Unix` has failed. ``` Assert.Equal() Failure Expected: 0001-01-01T00:00:00.0000000+00:00 Actual: 0001-01-01T00:00:00.0000000-07:53 ``` Stack Trace: ``` at System.IO.IsolatedStorage.GetCreationTimeTests.GetCreationTime_GetsTime_Unix() ``` Build : Master - 20161010.02 (Core Tests) Failing configurations: - Fedora.23.Amd64 - AnyCPU-Debug - AnyCPU-Release link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161010.02/workItem/System.IO.IsolatedStorage.Tests/analysis/xunit/System.IO.IsolatedStorage.GetCreationTimeTests~2FGetCreationTime_GetsTime_Unix +12542 area-System.Net FtpWebRequest can throw an exception if FtpWebResponse.Close is called without draining the response stream "This issue exists in the desktop framework as well. Run the following code: ```c# string resource = absoluteUri + ""LargeFile""; FtpWebRequest r1 = (FtpWebRequest)WebRequest.Create(resource); r1.Method = WebRequestMethods.Ftp.DownloadFile; FtpWebResponse resp1 = (FtpWebResponse)r1.GetResponse(); resp1.Close(); ``` On occasion, depending on the file size and other factors, you'll hit an exception in Close: _An unhandled exception of type 'System.Net.WebException' occurred in System.dll Additional information: The remote server returned an error: (550) File unavailable (e.g., file not found, no access)._ The referenced ""LargeFile"" needs to be large enough to hit the timing issue here. I hit it consistently with a 12MB file. I was using IIS as the server, running on localhost. The problem here is that when you call Close before you’ve fully downloaded the response, we reset the data connection. This can make the server unhappy if it hasn't finished writing the requested file to the data connection (at least, it makes IIS unhappy, and it seems likely it would make other servers unhappy too). IIS sends us a 550, and we then translate this into a WebException in Close. Assuming that we care about this scenario, then we either need to ignore the 550 in the scenario, or change the logic to not cause the server to generate one. " +12545 area-Infrastructure [ARM/CI] Add arm-hardfp checks to CI `Linux ARM Emulator Cross` is actually arm-softfp. I think we also need one for arm-hardfp. There is a work for this in CoreCLR too. https://github.com/dotnet/coreclr/issues/7412 /cc @sjsinju +12547 area-System.Security [Feature request] Low-level API for HashAlgorithm Here are all public API for HashAlgorithm class in .Net core: ``` cs public byte[] ComputeHash(byte[] buffer) public byte[] ComputeHash(byte[] buffer, int offset, int count) public byte[] ComputeHash(Stream inputStream) ``` For some reason, I cannot provide a whole input stream (only multi buffer). +12548 area-Infrastructure Add version file to packages Adds a version.txt file with the build commit hash to CoreFx packages. @weshaggard @joperezr +12549 area-System.IO DeflateStream buffer reuse The `DeflateStream(Stream stream, CompressionLevel compressionLevel, bool leaveOpen)` constructor allocates an 8KB `byte[]` buffer for each instance. ASP.NET Core has response compression middleware that needs a new stream per response, so this memory allocation adds up very quickly. Possible improvements: A) Internally pooling the buffers B) Allowing the buffer to be provided in the constructor so the caller can pool. Note any API changes would need to be exposed on the GZipStream wrapper as well. +12550 area-System.Xml Remove SystemException from Common when it's supported in UWP Refers to System.SystemException under src\Common\src\System +12551 area-Infrastructure Updating CoreFx dependencies to servicing-24611-05 /cc @dotnet/corefx-contrib +12552 area-System.Collections Add missing members on System.Collections namespace Fixes #11728 Adding missing members for System.Collections cc: @danmosemsft @weshaggard @AlexGhiondea +12553 area-System.ComponentModel EmailAddressAttribute validation returns true on empty string System.ComponentModel.Annotations.EmailAddressAttribute IsValid returns true on empty string, so that it is aligned with other validators. And Required attribute validates non-empty string. Fixing issue #11142 +12556 area-System.Threading ThreadLocalTests.RunThreadLocalTest5_Dispose test failed https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_release_prtest/1451/consoleText ``` System.Threading.Tests.ThreadLocalTests.RunThreadLocalTest5_Dispose [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Threading.Tests.ThreadLocalTests.RunThreadLocalTest5_Dispose() ``` +12558 area-System.IO Add&Expose TextReader/TextWriter.Synchronize - Add Synchronize to the TextReader/TextWriter for netstandard1.7 excluding uap10.1 (due to an error that MethodImplOptions.Synchronized is not available for uap10.1) - Adds some very basic unit tests for the new functions to ensure read/write works as expected. Neither TFS nor mono have any more expansive tests on Synchronize behavior. This PR will fail build until updated to consume the most recent System.Runtime package. This is because these changes include tests for the new IO methods added to System.Runtime in https://github.com/dotnet/corefx/pull/12458 @joperezr @AlexGhiondea @JeremyKuhne resolves https://github.com/dotnet/corefx/issues/9465 +12559 area-System.IO Re-Enable some ActiveIssue'd Compression tests I was unable to repro these failures on the latest master. resolves https://github.com/dotnet/corefx/issues/11685 +12560 area-System.Collections Contract between GetHashCode and Equals methods broken in HashSetEqualityComparer "In https://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.gethashcode%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 Under Notes to Implementers: - Implementations are required to ensure that if the Equals method returns true for two objects x and y, - then the value returned by the GetHashCode method for x must equal the value returned for y. ``` var comp1 = HashSet>.CreateSetComparer(); var comp2 = HashSet.CreateSetComparer(); var l1 = new HashSet>(comp2); var l2 = new HashSet>(comp2); var set1 = new HashSet() {""a""}; var set2 = new HashSet() {""a""}; l1.Add(set1); l2.Add(set2); Console.WriteLine(comp1.Equals(l1,l2)); Console.WriteLine(comp1.GetHashCode(l1) == comp1.GetHashCode(l2)); ``` " +12561 area-Infrastructure Updating CoreFx dependencies to servicing-24611-06 /cc @dotnet/corefx-contrib +12567 area-System.Diagnostics Add System.Diagnostics.StackTrace to test runtime dependencies The library was missing from test output directory, which prevented xunit to display stack traces with source locations. +12568 area-System.Diagnostics Add S.Diagnostics.SymbolStore types Fixes #12258 +12572 area-Infrastructure Remove redundant Packaging.props import from src/publish.proj It is already unconditionally imported in `dir.props`, and this causes a warning during publish-packages. As far as I can tell looking at git history, this double-import has always been there since publish.proj was originally created (as publish.builds). @chcosta +12574 area-Meta Misc types +12575 area-System.IO Fix SpecialFolder.MyDocuments to map to XDG properly in Unix "In Windows SpecialFolder.MyDocuments maps to ""C:\Users\foo\My Documents"". The equivalent to this in Linux should be ""/home/foo/Documents"", not ""/home/foo"". (There's already another SpecialFolder enum member that already maps to ""/home/foo"" and ""C:\Users\foo"", it is the SpecialFolder.UserProfile.) " +12577 area-Infrastructure [Arm/CI] Add hardfp build to arm32_ci_script.sh Now hardfp is default. For softfp, `--softfp` must be given as an argument. Related Issue : #12545 +12580 area-System.Net High frequencey Ping trough Unix RawSockets gives false positives Due to the way the echor-request/echo-reposne matching is implemented using thread id in \System.Net.Ping\src\System\Net\NetworkInformation\Ping.Unix.cs - SendIcmpEchoRequestOverRawSocket , when a program sends high number of Ping requests to the same host or group of hosts, late ICMP responses and/or responses from other pings sent from the same thread id is generating false positives. To avoid this, the source IP on echo-response packets should be verified against the echo-request address. Additionally the generation of identity values should be changed or sequence field should be used in addition (as in windows implementation) to generate truly random identification information. +12581 area-Meta Executing console application with a file share as working directory fails with ConfigurationErrorsException As reported in https://github.com/dotnet/roslyn-project-system/issues/206#issuecomment-252869071, I've encountered a problem related to working with file shares and .NET: When running a console application in an unelevated `cmd.exe` with a file share (mapped drive) as its working directory, the application blows up with the following exception: ``` c# System.Configuration.ConfigurationErrorsException: Error creating the Web Proxy specified in the 'system.net/defaultProxy' configuration section. ---> System.Net.Sockets.SocketException: An invalid argument was supplied at System.Net.SafeCloseSocketAndEvent.CreateWSASocketWithEvent(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType, Boolean autoReset, Boolean signaled) at System.Net.NetworkAddressChangePolled..ctor() at System.Net.AutoWebProxyScriptEngine.AutoDetector.Initialize() at System.Net.AutoWebProxyScriptEngine.AutoDetector.get_CurrentAutoDetector() at System.Net.AutoWebProxyScriptEngine..ctor(WebProxy proxy, Boolean useRegistry) at System.Net.WebProxy.UnsafeUpdateFromRegistry() at System.Net.WebProxy..ctor(Boolean enableAutoproxy) at System.Net.Configuration.DefaultProxySectionInternal..ctor(DefaultProxySection section) at System.Net.Configuration.DefaultProxySectionInternal.GetSection() --- End of inner exception stack trace --- at System.Net.Configuration.DefaultProxySectionInternal.GetSection() at System.Net.WebRequest.get_InternalDefaultWebProxy() at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) at System.Net.HttpWebRequest..ctor(Uri uri, Boolean returnResponseOnFailureStatusCode, String connectionGroupName, Action`1 resendRequestContent) at System.Net.Http.HttpClientHandler.CreateAndPrepareWebRequest(HttpRequestMessage request) at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Pomona.Common.RequestDispatcher.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Pomona.Common.RequestDispatcher.d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Pomona.Common.RequestDispatcher.d__12.MoveNext() ``` An HTTP request is being made by the console application, which seemingly requires loading of proxy settings, which for some reason are out of reach from an application run with unelevated privileges **with a file share as the working directory**. If I change the working directory with `cd /d C:\Windows` before exeucting the console application, it works. It also works if I open up a `cmd.exe` with administrative privileges. It also works if I run the console application directly from an elevated Visual Studio instance. But the combination of unelevated `cmd.exe` and a file share as a working directory, makes the application fail with the above exception. As I write in dotnet/roslyn-project-system#206, I've run `caspol` to grant full permissions to both `Y:\*` and `file://Mac/*`, but it still fails. +12584 area-System.IO NullReferenceException instead of Argument[Null]Exception in FileIOPermission constructor in 4.6.2 Compare the [FileIOPermission in 4.6.2](https://github.com/Microsoft/referencesource/blob/1acafe20a789a55daa17aac6bb47d1b0ec04519f/mscorlib/system/security/permissions/fileiopermission.cs#L550) and [FileIOPermission in 4.6.1](https://github.com/Microsoft/referencesource/blob/e458f8df6ded689323d4bd1a2a725ad32668aaec/mscorlib/system/security/permissions/fileiopermission.cs#L543) -- they obviously changed the illegal path checks, so the [contract](https://msdn.microsoft.com/en-US/library/h05w5es7%28v=vs.110%29.aspx) of the FileIOPermission constructor throwing ArgumentException on invalid path is broken. This leads to some [nasty stuff](http://stackoverflow.com/a/40000774/2917948). The simple repro would be this: ``` using System; using System.Security.Permissions; class Program { static void Main(string[] args) { try { new FileIOPermission(FileIOPermissionAccess.PathDiscovery, (string)null); } catch (ArgumentException) { } } } ``` +12589 area-System.Collections RemoteInvoke Collections tests using DefaultThreadCurrentCulture Modify these tests to use RemoteInvoke and modify the CurrentCulture/CurrentUICulture so they won't fail intermittently when running in parallel. resolves https://github.com/dotnet/corefx/issues/12242 +12590 area-Meta Use ArrayBuilder in more places I just rebased to latest master and ran grep to see some of the places we're using `List` as a local variable. Here are the results I got: https://gist.github.com/jamesqo/467f10b7523380b9fca7b9e66c020e3f It would seem lots of these places, i.e. [System.Diagnostics.Process](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Linux.cs#L30), could easily use `ArrayBuilder` instead if the List isn't passed in/out of the function. +12591 area-System.Console LowLevelStack should not be necessary in TermInfo.cs I noticed that there is a `LowLevelStack` class present in TermInfo.cs because, according to a comment, System.Console does not reference System.Collections: https://github.com/dotnet/corefx/blob/master/src/System.Console/src/System/TermInfo.cs#L948 Seeing that `List` is being used in the same file, maybe this is no longer true and the class can be removed. +12592 area-Meta Remove [SecurityCritical] and [SecuritySafeCritical] attributes Security transparency will not be implemented in CoreFX, and use of these attributes can be removed throughout. +12593 area-System.Runtime S.R.CS.Unsafe: Add `IntPtr ByteOffset(ref L left, ref R right)` As discussed in https://github.com/dotnet/corefxlab/pull/796#issuecomment-253138362 add: ``` csharp IntPtr ByteOffset(ref T left, ref T right); ``` to the `Unsafe` class. Things to discuss for this addition: - Naming - Generic parameters, one or two? One, as this will only allow users to compute the offset between same types and, thus, limits the possibility of finding offsets that could cause alignment issues, see https://github.com/dotnet/corefx/issues/12593#issuecomment-253305078, e.g. for offset between `ref byte` and `ref double`. If an offset between two different types are needed this can be done by explicitly converting one of the `ref`s to the same type as the other e.g. ``` csharp ref byte b1 = ...; ref double d1 = ...; IntPtr byteOffset = ref Unsafe.ByteOffset(ref Unsafe.As(ref d1), ref b1); ``` - Return type, do we imagine we need several versions with different return types, that could influence naming? - Parameter naming and order? @jkotas @mellinoe @jamesqo @benaadams @omariom @davidfowl When we decide I could give a shot at adding this too to `Unsafe`. **Update 1**: Changed proposal to have only one generic argument. +12594 area-System.Net Port FtpWebRequest to core +12595 area-System.Net Add System.Net.IPAddress missing members Add back Address property Fixes #12131 +12596 area-System.Text Implement generic interfaces on Regex collections for netcoreapp1.1 Port #1756 from Future to Master and expose the new APIs for netcoreapp1.1. Part of #2869 +12597 area-System.Collections Introduce trimming of unused bits into BitArray.CopyTo The change causes the `BitArray.CopyTo` method to discard (zero out) unused bits in the underlying data structure. The code responsible for trimming was refactored from `set_Length` method. Trim is being done just before the actual copy is performed. Tests for the new feature were adapted from [Clockwork-Muse](https://github.com/Clockwork-Muse/corefx/commit/19a67977e876aaa80eb42f7e04feae1fed1a815c)'s fork. Fixes #9838 +12598 area-System.IO Override MemoryStream.CopyTo and expose the override for netcoreapp1.1 This change overrides `MemoryStream.CopyTo`, porting the changes from dotnet/coreclr#7131 and dotnet/coreclr#7579, exposes the override for netcoreapp1.1, and adds tests for the change. Note that the build will fail until, as @jkotas said in #11723 the version of corert System.Private.CoreLib built against is updated. So please don't merge this yet. Fixes #11723 @jkotas, @stephentoub, @weshaggard, @hughbe, @justinvp **edit:** Aha, I just realized that the `Stream` ref class was actually hiding in [System.Runtime.cs](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs) which is why I couldn't find it in System.IO.cs. Going to update shortly. +12600 area-System.Collections Expose HashSet ctors with capacity in netcoreapp1.1 Port #2862 from Future to Master. I cherry-picked the two relevant commits from the future branch: - https://github.com/dotnet/corefx/commit/38899ee55e5b8a558ee91349ab2042d26ff7a961 - https://github.com/dotnet/corefx/commit/c92d9d4f93e089e6782c3c8a35883952d4daa63a I then added a third commit that cleaned some things up, exposed the APIs in netcoreapp1.1, and added tests. cc: @stephentoub, @MarkusSintonen +12601 area-Infrastructure Restoring packages takes ~1hr The `dotnet` process is using a lot of CPU and makes build take >1hr. There isn't a lot of network activity. ``` [13:44:10.53] Restoring all packages... [14:43:30.73] Restoring all packages...Done. ``` ![image](https://cloud.githubusercontent.com/assets/8635911/19329781/6e030ba8-908f-11e6-9c0d-3e9253f54b99.png) +12602 area-System.Reflection Cleanup System.Reflection.GetType tests Pretty small cleanup here /cc @stephentoub +12603 area-Meta Update CoreClr, CoreFx, External to beta-24613-02, beta-24613-01, beta-24613-00, respectively (master) /cc @dotnet/corefx-contrib +12604 area-Meta Add source index link to README /cc: @stephentoub @weshaggard @terrajobst +12605 area-System.IO Adding APMTests to System.IO and System.IO.Compression Fixes #10334 cc: @stephentoub @danmosemsft Adding basic tests for Stream, BufferedStream and DeflateStream. +12606 area-System.Linq Complete System.Linq namespace ``` M:System.Linq.Expressions.Expression.#ctor(System.Linq.Expressions.ExpressionType,System.Type) M:System.Linq.Expressions.Expression.Dynamic(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.Dynamic(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.Dynamic(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.Dynamic(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.Dynamic(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression[]) M:System.Linq.Expressions.Expression.Dynamic(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable{System.Linq.Expressions.Expression}) M:System.Linq.Expressions.Expression.MakeDynamic(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.MakeDynamic(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.MakeDynamic(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.MakeDynamic(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) M:System.Linq.Expressions.Expression.MakeDynamic(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression[]) M:System.Linq.Expressions.Expression.MakeDynamic(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable{System.Linq.Expressions.Expression}) M:System.Linq.Expressions.Expression`1.Compile(System.Runtime.CompilerServices.DebugInfoGenerator) M:System.Linq.Expressions.ExpressionVisitor.VisitDynamic(System.Linq.Expressions.DynamicExpression) M:System.Linq.Expressions.LambdaExpression.Compile(System.Runtime.CompilerServices.DebugInfoGenerator) M:System.Linq.Expressions.MemberBinding.#ctor(System.Linq.Expressions.MemberBindingType,System.Reflection.MemberInfo) ``` The following are also tightly coupled to this work so moving them to this issue: ``` T:System.Runtime.CompilerServices.DebugInfoGenerator M:System.Runtime.CompilerServices.DebugInfoGenerator.#ctor M:System.Runtime.CompilerServices.DebugInfoGenerator.CreatePdbGenerator M:System.Runtime.CompilerServices.DebugInfoGenerator.MarkSequencePoint(System.Linq.Expressions.LambdaExpression,System.Int32,System.Linq.Expressions.DebugInfoExpression) T:System.Runtime.CompilerServices.IRuntimeVariables P:System.Runtime.CompilerServices.IRuntimeVariables.Count M:System.Runtime.CompilerServices.IRuntimeVariables.get_Count P:System.Runtime.CompilerServices.IRuntimeVariables.Item(System.Int32) M:System.Runtime.CompilerServices.IRuntimeVariables.get_Item(System.Int32) M:System.Runtime.CompilerServices.IRuntimeVariables.set_Item(System.Int32,System.Object) T:System.Runtime.CompilerServices.RuleCache`1 T:System.Runtime.CompilerServices.CompilerMarshalOverride LambdaExpression,System.Int32,System.Linq.Expressions.DebugInfoExpression) ``` +12607 area-Meta Remove P2P reference Fixes #12531 Removing P2P reference that is not needed anymore cc: @danmosemsft +12608 area-System.Security Developer instructions for OSX are out of date with respect to OpenSSL When following the developer instructions for OS X, I get to this step but get an error: brew link --force openssl Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib Leading eventually to: Unhandled Exception: System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.TypeInitializationException: The type initializer for 'CryptoInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.CryptoInitializer.EnsureOpen This is my first modern mac ever in my office that I'm trying to actually use so some help would be appreciated! +12609 area-System.Xml Add missing class to System.Xml.XDocument and cleanup System.Private.Xml Addresses issues https://github.com/dotnet/corefx/issues/12144 https://github.com/dotnet/corefx/issues/12239 https://github.com/dotnet/corefx/issues/12173 https://github.com/dotnet/corefx/issues/12172 Exposes missing type System.Xml.Schema.Extensions in System.Xml.XDocument contract + various cleanups on System.Private.Xml (Note: the System.CodeDom dependencies going to be done in a separate PR) cc: @danmosemsft @weshaggard @AlexGhiondea @stephentoub +12610 area-System.Security Enable ephemeral import of private keys from a PFX on Windows The classic behavior on Windows is when importing a PFX the private key material gets written to a file on disk (as an implementation detail of the software key provider), and the .NET behavior is to delete that private key when it is detected as no longer being needed (unless the import was performed with a request to persist the key material, such as when loading the certificate into a persisted store). This change enables callers to request an import with the new EphemeralKeySet flag, which uses the PKCS12_NO_PERSIST_KEY flag to PFXImportCertStore. For callers who do not do any interop with Win32 directly everything should be invisible and work. Libraries which pass PCERT_CONTEXT values to Win32, or replicate the work of GetRSAPrivateKey, may not function as expected when passed an X509Certificate(2) object with an ephemeral key. This situation is already possible if someone were to have done a P/Invoke into PFXImportCertStore manually and constructed an X509Certificate(2) object over the pointer, the addition of this functionality just makes it easier to get into that state. Since ephemeral is not the default behavior the onus of compatibility rests with the code which specified the flag on the call to load the PFX. At this point the Windows implementation of EnvelopedCms is known to not work with ephemeral private keys, and that will be addressed in a later change. This feature has no impact on Linux builds, since the private keys there are always ephemeral. Before this change callers to X509Certificate2Collection.Import could specify unknown flags without an error, but due to Ephemeral and Persisted being incompatible flags the Import method has been aligned with the X509Certificate(2) constructors in terms of keyStorageFlag validation. Change 2/3 for #8186. cc: @stephentoub @steveharter @AtsushiKan cc for packaging/contracts: @ericstj +12613 area-Meta "Change all refs to use ""throw null;"" as member bodies" "Following our new guidelines for ref assembly implementations and what GenApi now creates, this updates all of our ref .cs files to use ""throw null;"" for member bodies that can't just be empty (i.e. members that need to return a value either via the return type or via an out parameter). I made the change programatically using a simple Roslyn-based tool. cc: @weshaggard, @ericstj " +12614 area-System.Console Remove LowLevelStack from System.Console This is a hold-over from when we couldn't reference System.Collections from System.Console in the early days of getting it working on Unix. Now that we can (and already are), we can switch to using the real `Stack`. Fixes https://github.com/dotnet/corefx/issues/12591 cc: @ianhays, @jamesqo +12615 area-System.Data Adding an unique identifier for DbConnection I purpose to add an unique identifier for DbConnection which will help support for tooling around the DbConnection, as the EntityFrameworkProfiler. As of now, there is no way to associate a unique id with the connection. The `ClientConnectionId` of [SqlConnection](https://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlConnection.cs,667) is not what we ask as this is not unique for the connection itself. So the purposing is simple, adding this to DbConnection: private Guid identifier = Guid.NewGuid(); It can be private and we can access it with reflection, if making it public is problematic. +12616 area-System.Net Make Ping's identifier random on Unix It's currently using the current managed thread ID. This can lead to lots of requests/replies having the same identifier, resulting in false positives. cc: @mellinoe, @ttzankov https://github.com/dotnet/corefx/issues/12580 +12618 area-System.Net HttpClientHandler should support UseDefaultCredentials instead of No-op on *nix On *nix, kinit is used to obtain and cache Kerberos ticket-granting tickets. I have verified that users can use kinit to obtain a kerberos ticket and CredentialCache.DefaultNetworkCredentials will use the credential. The below code works after using kinit on the shell: ```c# handler = new HttpClientHandler() { }; handler.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; ``` @mconnew @zhenlan +12619 area-System.Net Add IWebProxyScript to System.Net.WebProxy It's just an interface. Nothing in netstandard implements it. Fixes https://github.com/dotnet/corefx/issues/12132 cc: @ericeil +12623 area-Meta System.IdentityModel: status, governance and API convergence _Disclaimer:_ I'm well aware that the IdentityModel stack is managed by the Azure AD team and not by the FX team and [that related tickets should be opened elsewhere](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet). Unfortunately, it seems to be in a pretty bad state these days: the activity is terribly low for such an important stack, critical bugs are not fixed and [there's literally no plan for API convergence](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/476). By opening a ticket here, I hope this ticket will draw more attention from MSFT. So here are my questions: - Is there any plan to realign IdentityModel for .NET Core with its .NET Desktop counterpart as part of API convergence/.NET Standard 2.0? The .NET Core version lacks many important APIs compared to the .NET Desktop bits (it's basically a simple port of the JWT handler plus a bunch of other types that were needed for things like the OpenID Connect middleware for ASP.NET Core to work correctly). - Can you share an approximative timeline for fixing the critical bugs? A few annoying bugs were reported in July/August and are still in need of an urgent fix (e.g [this bug](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/477)). - Will IdentityModel for .NET Desktop get updates in the future? I'm mainly interested in knowing if it will ever support [`RSACng`](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/480#issue-169228203) and ECDSA. It's quite obvious that the Azure AD team doesn't currently have the human resources needed to manage such an important stack. Maybe it would be worth considering assigning new developers to IdentityModel or transferring its ownership to another team? It seems that the WCF team is currently relying on private IdentityModel bits to make WCF work, maybe they would be interested in collaborating to IM? /cc @vibronet @polita @brentschmaltz +12626 area-Infrastructure System.Collections references non-shipping targetGroup for System.Runtime "I noticed today that System.Collections references a ""netstandard1.7"" targetgroup config of System.Runtime. https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Collections/src/System.Collections.csproj#L23 That's actually the default, and since S.R.builds doesn't contain a netstandard1.7 config we don't actually ship this dll. We should remove targetgroup from the reference in System.Collections. The TargetGroup/OSGroup settings on project references are really a huge pitfall. We should try to clean these up. /cc @weshaggard " +12627 area-System.Data Client hostname not provided when connecting with SqlClient Connecting to a SQL Server instance with SSMS or with the full .NET framework SqlClient library will generally include the hostname of the client. This is visible on the database when running `EXEC sp_who2`. However, in the current stable build of dotnet, the SqlClient does not provide a hostname for the client when connecting. **Scenario:** Connecting to a SQL Server instance using SqlClient library in System.Data.SqlClient and observing the connected instance on the SQL Server instance via the sp_who2 stored proc. ``` SqlConnection sql = new SqlConnection(connectionString); sql.Open(); ``` **Expected Behavior:** When using `EXEC sp_who2`, the connection opened in the scenario above would have the hostname of the client populated in the Hostname column. **Actual Behavior:** The connection created in the scenario is shown, and will have an application name present if provided, but the hostname field will be blank. This feature makes it much easier to determine who/where connections are for a given sql server instance. +12628 area-System.IO Common application data isn't writable by users on Unix `Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)` currently returns `/usr/share` on non-Windows platforms, which apparently isn't generally accessible without sudo access. This is breaking for apps as on Windows the folder returned has rights for creating folders and modifying rights for non-Admin users. `/usr/local/share` seems to have the same problem. This came up with trying to implement machine stores for IsolatedStorage (see PR #12437). Question is there any location we could choose that would give a rough equivalent to existing NetFX behavior or is there anything we can do in the current location (chosen to match Mono's current implementation). @stephentoub, @ianhays, @migueldeicaza +12629 area-System.Linq Investigate benefits of optimizing Enumerable.Cast for non-generic ICollections Although `Enumerable.Cast` accepts a non-generic enumerable which are rare nowadays, it's used fairly often with generic enumerables in which the user knows that all of the objects are of a derived type. We should investigate to see if it is worthwhile optimizing the function for ICollections, e.g. the size of the array/list in `ToArray` / `ToList` can be predetermined. Discussion moved from #12042 +12633 area-System.IO Move FileStream into System.Runtime Due to various dependencies we need to move FileStream into System.Runtime as well as the implementation into System.Private.CoreLib. See discussion at https://github.com/dotnet/standard/issues/52 I've started created a proof-of-concept branch that moves just the APIs in the contracts here https://github.com/weshaggard/corefx/commit/e77e2b39371e5e3f202e4f8222bf3f73c9a70455, but the primary work is in the implementation. cc @ianhays @ericstj @jkotas @stephentoub +12635 area-Infrastructure TestTFM get's unset for execution when passed in Some recent change broke the scenario where you run: ``` msbuild .Tests.builds /p:FilterToTestTFM=netcoreapp1.0 ``` What the above is supposed to do, is to trigger a build of `.Tests.csproj` after the filtering is done, and pass in TestTFM=netcoreapp1.0. This is true, except that now somewhere during the build of `.Tests.csproj` we are unsetting the property of TestTFM, which is causing the actual execution of the tests to run as netcoreapp1.1. This issue is for tracking the investigation of that problem and the resolution. cc: @weshaggard +12636 area-System.Runtime Exposing additional method on Activator Fixes https://github.com/dotnet/corefx/issues/11869 @jkotas @weshaggard @stephentoub PTAL note The follwing 2 methods are largely useless unless we were atleast exposing a stubbed out implementation of System.Runtime.Remoting.Activation.UrlAttribute, as currently on core we can only pass null to activationAttributes which defaults to the overload without it : public static object CreateInstance(System.Type type, object[] args, object[] activationAttributes) public static object CreateInstance(System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes) +12637 area-System.Net Test failure: System.Net.Tests.HttpWebRequestTest/ContentLength_Get_ExpectSameAsGetResponseStream Opened on behalf of @jiangzeng The test `System.Net.Tests.HttpWebRequestTest/ContentLength_Get_ExpectSameAsGetResponseStream` has failed. ``` System.Net.WebException : An error occurred while sending the request. SSL connect error ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.CurlException : SSL connect error ``` Stack Trace: ``` at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.WebRequest.<>c.b__68_2(IAsyncResult iar) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.HttpWebRequestTest.d__20.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.HttpWebRequest.d__172.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` Build : Master - 20161013.03 (Core Tests) Failing configurations: - Fedora.23.Amd64 - AnyCPU-Debug Link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161013.03/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FContentLength_Get_ExpectSameAsGetResponseStream +12638 area-Serialization [Impl] Port Implementation of System.Xml.XmlMtomReader/XmlMtomWriter +12639 area-Serialization [Impl] DataContractJsonSerializer.ctor(Type, string, IEnumerable) Throws PNSE +12641 area-System.IO Make IsolatedStorage enumerator return an empty set +12646 area-System.Threading Possibility of hang in ReaderWriterLockSlim in case of ThreadAbortExceptions I just finished investigating an issue that I am pretty sure boils down to ReaderWriterLockSlim not being resistant to ThreadAbortExceptions. If an asynchronous exception (eg. a ThreadAbortException) is thrown eg. on https://github.com/dotnet/corefx/blob/master/src/System.Threading/src/System/Threading/ReaderWriterLockSlim.cs#L300, the ExitMyLock() method will never be called and the next attempt to spin for the `_myLock` field (eg. if trying to exit the lock as part of a finally clause, or the next attempt to acquire the lock) will hang indefinitely. Perhaps it could also be meaningful to store the managed thread id instead of just 1 in the `_myLock` field while the lock is being held because it would have made this issue much easier to find. +12647 area-Serialization Remove dead code from System.Json And increase CC by hitting non C# (IL) branches /cc @stephentoub +12649 area-System.Reflection Cleanup misc System.Reflection tests Small stuff but another in my System.Reflection backlog /cc @stephentoub +12652 area-System.Diagnostics Add uap10.1 configuration to System.Diagnostics.Tracing Related with #12013 +12655 area-System.Runtime Add tests for new String.Join overloads Once dotnet/coreclr/pull/7621 makes its way over to CoreFx, we need to add tests for the new APIs. +12657 area-System.Runtime Add more methods on System.Attribute. Fixes #12400 +12658 area-System.Net Add System.Net.IPAddress missing members Add back Address property , this's basically resurrecting https://github.com/dotnet/corefx/pull/12595 since even after rebasing there's lot of merging to do. It's easier to create a new PR then merging each file. Fixes #12131 +12659 area-System.Net SocketAsyncEventArgs allocates unnecessary SafeHandles Every operation on a SocketAsyncEventArgs ends up allocating a SafeNativeOverlapped SafeHandle: https://github.com/dotnet/corefx/blob/2117bae3a6c9736033e6d1659821ff3a1069920b/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs#L160 This is adding a significant amount of overhead to networking operations that are trying to be optimized via SocketAsyncEventArgs, e.g. in a benchmark that downloads from a localhost server 100MB via ReceiveAsync calls on a SocketAsyncEventArgs instance, we end up allocating almost 20K SafeNativeOverlapped instances for over 800KB of memory! These SafeHandles are just being stored into a field on the SocketAsyncEventArgs. Rather than allocating a SafeHandle for each, there are a variety of options, such as making the SocketAsyncEventArgs itself finalizable, or reusing the same SafeHandle and just replacing the pointer it guards. cc: @davidsh, @cipop, @ericeil +12660 area-System.IO Machine wide IsolatedStorage stores don't have same access rights on Unix Common app data has an underlying issue #12628. If we're able to come up with a workable solution we should look at getting rights set up for [Unix](https://github.com/dotnet/corefx/blob/master/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.Unix.cs#L52). Note that the current implementation is up to the bar of the current Mono implementation for machine stores. Additionally note that we don't have a public way to set rights yet on Unix. Some tracking issues: #3186, #9225 +12661 area-System.Security Will there be X509Certificate2.Verify method? Referring to https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs#L12 Compared to .NET 4, this method is missing; see: https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.verify(v=vs.110).aspx Thanks. +12662 area-System.Net Avoid byte[] allocations once IPAddress.Address is back #12658 is adding back IPAddress.Address. Various parts of the code end up allocating a byte[] to work around the lack of IPAddress.Address in the public surface area, e.g. https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/Common/src/System/Net/SocketAddress.cs#L110-L116 Once the packages have been updated with this property, we should fix those locations appropriately to avoid the unnecessary allocations. +12664 area-System.Net Two Socket/NetworkStream-related optimizations This PR provides two independent but related optimizations, one for NetworkStream and one for Socket. The latter was done as it showed up as a significant source of allocations once the former was done. 1. Add NetworkStream.CopyToAsync override. This does several custom things. First, it uses ArrayPool for the buffer used in the copy operation. Second, it uses a SocketAsyncEventArgs to avoid per-operation costs related to the socket. And third, it then uses a custom awaitable to avoid async/Task-related overheads that would otherwise occur per-ReadAsync. 2. Removes a per-operation SafeHandle allocation from any operation on a SocketAsyncEventArgs. I wrote a little benchmark that connects a socket to a localhost server which serves up 10MB of data. It then creates a NetworkStream and does a CopyToAsync on it to copy all of the data to Stream.Null. And it does all of this 10 times. Prior to the changes, there are lots of allocations (I'm only showing line items with > 10K of impact): ![image](https://cloud.githubusercontent.com/assets/2642209/19401974/4f2f50e4-922c-11e6-87a8-443ce672736f.png) After adding CopyToAsync, most of the allocations go away, but we end up with a significant number of SafeNativeOverlapped SafeHandles: ![image](https://cloud.githubusercontent.com/assets/2642209/19401991/6bd3d68e-922c-11e6-90c8-2be3bc82844f.png) After the second fix to address the SafeHandles, our memory usage is much more reasonable: ![image](https://cloud.githubusercontent.com/assets/2642209/19402007/8f10b5cc-922c-11e6-89c3-56f951f835c6.png) (Most of what remains is unrelated to the actual operation being tested, and is coming from things elsewhere in the test app, e.g. strings created at startup.) cc: @ericeil, @davidsh, @cipop, @davidfowl, @benaadams Fixes #11573 Fixes #12659 +12665 area-System.IO Make GetEnumerator a no-op Makes GetEnumerator() return an empty enumerator. Tweak configs so types resolve in test project. Fix some nits. @weshaggard, @ianhays +12666 area-Infrastructure Updating CoreFx dependencies to servicing-24614-02 /cc @dotnet/corefx-contrib +12667 area-System.Security Add remaining members of S.Security namespace I had initially put implementations of the attributes into S.R, so that they could be shared in future with CoreRT. However this caused duplicate type definitions in contracts like S.Collections which reference both S.R and S.P.CL so I took them out. @weshaggard @AlexGhiondea +12669 area-Serialization Add missing ISerializable The following should implement ISerializable per NS2.0, but in .NET Core they do not: - [ ] System.ApplicationIdentity - [x] System.ComponentModel.Win32Exception - [x] System.Exception - [x] System.IO.DriveInfo - [x] System.IO.FileSystemInfo - [x] System.IntPtr - [x] System.Net.CookieException - [x] System.Net.HttpWebRequest - [x] System.Net.HttpWebResponse - [x] System.Net.ProtocolViolationException - [x] System.Net.WebException - [ ] System.Net.WebHeaderCollection - [x] System.OperatingSystem - [ ] System.Runtime.Remoting.Messaging.LogicalCallContext - [ ] System.Runtime.Remoting.Messaging.MethodCall - [ ] System.Runtime.Remoting.Messaging.MethodResponse - [x] System.Security.Cryptography.X509Certificates.X509Certificate - [x] System.Text.StringBuilder - [ ] System.Threading.ExecutionContext - [x] System.UIntPtr +12670 area-Meta Add missing ApplicationException derivations These should be deriving from ApplicationException per NS2.0 but in Core FX they aren't: ``` System.Reflection.InvalidFilterCriteriaException System.Reflection.TargetException System.Reflection.TargetInvocationException System.Reflection.TargetParameterCountException System.Threading.WaitHandleCannotBeOpenedException ``` @AlexGhiondea FYI. +12672 area-System.Runtime Add Guid.GetBytes(byte[]) and Decimal.GetBits(decimal d, byte[]) @davidfowl commented on [Sun Sep 18 2016](https://github.com/dotnet/coreclr/issues/7251) Today the supported way to get the `byte[]` representation of a guid is to use ToByteArray() https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Guid.cs#L893, which allocates a byte[]. Instead it would be great if there was an overload that could write into an existing `byte[]` --- @mikedn commented on [Mon Sep 19 2016](https://github.com/dotnet/coreclr/issues/7251#issuecomment-247975178) `Guid.GetBytes(Span)`? --- @davidfowl commented on [Sun Sep 25 2016](https://github.com/dotnet/coreclr/issues/7251#issuecomment-249451591) Would be even better. When `Span` exists +12673 area-System.Runtime Make Decimal.GetBits(decimal d, byte[]) @davidfowl commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7247) Would make it easier to write data to an existing buffer that way. +12674 area-System.Net SmtpClient ported code is missing DEBUG assert statements In #12416: All `GlobalLog.Assert*` statements must be followed by `Debug.Fail`. See the pattern at https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/Common/src/System/Net/InternalException.cs#L18 +12678 area-Meta Cleanup 0436 from all .csproj files This warning suppression is needed because of duplicated implementations between coreclr and corefx. We should clean them up - remove (or hide via model.xml) the conflicting implementation in System.Private.CoreLib. +12681 area-Infrastructure System.Linq Test Run fail on Mac OS X 10.11.5 "Using `../../../Tools/msbuild.sh /t:BuildAndTest` Command to Run System.Linq specific Tests Only, But getting Following error ``` Executing in /Users/vikas/Projects/corefx/corefx/bin/tests/AnyOS.AnyCPU.Debug/System.Linq.Tests/default.netcoreapp1.1/netcoreapp1.1 Hard linking dependent files... Finished linking needed files, moving to running tests. Running tests... Start time: 20:06:59 Commands: ./corerun xunit.console.netcore.exe System.Linq.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests /Users/vikas/Projects/corefx/corefx/bin/tests/AnyOS.AnyCPU.Debug/System.Linq.Tests/default.netcoreapp1.1/netcoreapp1.1/RunTests.sh: line 346: ./corerun: No such file or directory Finished running tests. End time=20:06:59. Return value was 127 /Users/vikas/Projects/corefx/corefx/Tools/tests.targets(260,5): warning MSB3073: The command ""/Users/vikas/Projects/corefx/corefx/bin/tests/AnyOS.AnyCPU.Debug/System.Linq.Tests/default.netcoreapp1.1/netcoreapp1.1/RunTests.sh /Users/vikas/Projects/corefx/corefx/packages/"" exited with code 127. [/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj] The previous error was converted to a warning because the task was called with ContinueOnError=true. Build continuing because ""ContinueOnError"" on the task ""Exec"" is set to ""true"". /Users/vikas/Projects/corefx/corefx/Tools/tests.targets(271,5): error : One or more tests failed while running tests from 'System.Linq.Tests' please check log for details! [/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj] Done Building Project ""/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj"" (BuildAndTest target(s)) -- FAILED. Build FAILED. ""/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj"" (BuildAndTest target) (1) -> (RunTestsForProject target) -> /Users/vikas/Projects/corefx/corefx/Tools/tests.targets(260,5): warning MSB3073: The command ""/Users/vikas/Projects/corefx/corefx/bin/tests/AnyOS.AnyCPU.Debug/System.Linq.Tests/default.netcoreapp1.1/netcoreapp1.1/RunTests.sh /Users/vikas/Projects/corefx/corefx/packages/"" exited with code 127. [/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj] ""/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj"" (BuildAndTest target) (1) -> (RunTestsForProject target) -> /Users/vikas/Projects/corefx/corefx/Tools/tests.targets(271,5): error : One or more tests failed while running tests from 'System.Linq.Tests' please check log for details! [/Users/vikas/Projects/corefx/corefx/src/System.Linq/tests/System.Linq.Tests.csproj] 1 Warning(s) 1 Error(s) Time Elapsed 00:00:20.35 ``` " +12682 area-System.IO Fix for ZipArchive depending on Position for Create streams This is a fix for #11497, using the stream wrapper technique suggested by @svick. The stream wrapper is only applied when necessary (if the `ZipArchive` is opened in `Create` mode and the underlying stream does not support seeking). The wrapper forwards all (non-reading) methods to its base stream, _including asynchronous methods_. This is important to prevent the wrapper from forcing synchrony. The existing unit tests (once fixed) were sufficient to detect this bug. +12683 area-System.Net SslStreamAlertsTest failure in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1647/consoleText ``` System.Net.Security.Tests.SslStreamAlertsTest.SslStream_StreamToStream_ServerInitiatedCloseNotify_Ok [FAIL] System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized Stack Trace: at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) Finished running tests. End time= 1:45:19.12, Exit code = 0 Finished: System.Reflection.TypeExtensions.Tests at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs(19,0): at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamAlertsTest.cs(76,0): at System.Net.Security.Tests.SslStreamAlertsTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +12684 area-System.Reflection Cleanup PropertyInfo tests Tests remain in order they were before Tests were consolidated into one file as they share common data /cc @stephentoub :) +12685 area-System.Net Determine how to handle some System.Net logging methods We are missing implementations for several methods on NetEventSource: PrintInfo, PrintWarning, etc. We need to figure out how we plan to handle this. Either implement the methods, or change the calling code to do something else. +12686 area-System.Linq Investigate using List.ConvertAll for SelectListIterator.ToList This code: https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Select.cs#L330 Could probably use the little-known [`List.ConvertAll`](https://msdn.microsoft.com/en-us/library/73fe8cwf%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396) api instead, which basically does the exact same thing as `list.Select(...).ToList()` except it [indexes directly into the backing array](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Collections/Generic/List.cs#L345) instead of using `Add` and sets _size at the end, which is likely faster since `Add` currently isn't inlined. A drawback, however, is that the method accepts a `Converter` instead of a Func, so unless there's a way from one delegate type to another which I'm not aware of we may have to pay for an additional allocation. +12691 area-System.Net Add ISerializable to WebException Fixes https://github.com/dotnet/corefx/issues/12138 +12694 area-System.Net Disable randomly failing SslStreamAlertsTest test https://github.com/dotnet/corefx/issues/12683 cc: @cipop +12696 area-System.Diagnostics [1.0.0] TestUserCredentialsPropertiesOnWindows failing on Windows (v1.0 only) ``` System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows [FAIL] System.InvalidOperationException : No process is associated with this object. Stack Trace: D:\j\workspace\outerloop_win---2155886e\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(779,0): at System.Diagnostics.Process.EnsureState(State state) D:\j\workspace\outerloop_win---2155886e\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(189,0): at System.Diagnostics.Process.get_HasExited() D:\j\workspace\outerloop_win---2155886e\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(393,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestUserCredentialsPropertiesOnWindows() ``` Examples: https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_windows_nt_release/13/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_windows_nt_debug/12/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_win10_release/12/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_win10_debug/12/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_windows_nt_release/12/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_windows_nt_debug/11/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_win10_release/11/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_win10_debug/11/ http://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_windows_nt_release/11/ ... +12698 area-System.Net "Revert ""Prefer exception, not assert, during helper setup - System.Net.Security """ Reverts dotnet/corefx#12488 We started to see these NegotiateStream tests fail consistently on certain OSes a few days ago. I don't know why this change would have caused it, but I'm testing reverting it to see if it's related. +12702 area-System.Linq Investigate preallocating space for ICollections/IIListProvider in SelectEnumerableIterator methods SelectEnumerableIterator's `IIListProvider` implementation, e.g. `ToArray`, `ToList`, etc. should attempt to preallocate space if the source is an ICollection or IIListProvider. We check before falling back to that iterator if the input is an IList or IPartition, but not if it's one of the parent interfaces. **edit:** Adding 'investigate' b/c I'm not sure how common a non-IList ICollection is, or a non-IPartition IIListProvider is. In addition, this may penalize (even if slightly) if the source is neither of those. +12703 area-System.Linq Optimize Where{.Select}.To{Array,List} & Count. Changes: - Refactor `Count` such that the part that checks for internal Linq interfaces is segregated from the part that checks for the rest of the interfaces. - The internal `Count` method is probably only going to be used by Linq, so I put this in a new file & made `EnumerableHelpers` partial, so other assemblies using that class don't have to drag in extra IL. - Put a chunk of `Count` in a non-generic method, so we save generating a substantial chunk of code for every different generic instantation of the method. - Implement `IIListProvider` on all of the `Where` / `Where.Select` iterators, substantially speeding up all `ToArray` / `ToList` operations by avoiding virtual calls / field stores. - Remove an `int` field from some `Where` iterators by reusing `_state - 1` as the index. @stephentoub, @VSadov +12704 area-System.Security Creating new X509Certificate2 instance crashes CLR in Azure AppServices environment "**Issue:** Creating instance of X509Certificate2 using ctor(sting, string) overload causes CLR to crash without exception being printed and exit code `-1073740940`. Reproduces only in Azure AppServices environment. **Repro steps:** Publish or `dotnet run` project from https://github.com/pakrym/cert-crash-repro in Azure AppServices environment. **Expected:** Prints ""Hello world!"" **Actual:** Application crashes without exception or any other output. `$LastExitCode == -1073740940` " +12705 area-System.Collections ObservableCollection: Avoid SimpleMonitor allocation Instead of always allocating an instance of the private `SimpleMonitor` class for every instance of `ObservableCollection`, lazily allocate it only if/when a subclass calls `BlockReentrancy`. Add tests that pass on the full framework and before/after these changes. Made some other minor improvements while making changes here, e.g. removed the unnecessary base ctor call, raise events in the standard thread-safe way, and remove/sort namespace imports. +12706 area-System.Net Flaky test : SslStream_StreamToStream_DataAfterShutdown_Fail `https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1676/testReport/junit/System.Net.Security.Tests/SslStreamAlertsTest/SslStream_StreamToStream_DataAfterShutdown_Fail/` ``` MESSAGE: System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized +++++++++++++++++++ STACK TRACE: at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs:line 19 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.SslStreamAlertsTest.d__5.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamAlertsTest.cs:line 143 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +12710 area-System.Runtime Add ApplicationException derivation where missing https://github.com/dotnet/corefx/issues/12670 Waiting on https://github.com/dotnet/coreclr/pull/7647 so I'll rebase when that appears. @stephentoub +12712 area-System.Net Port tests for System.Net.Mail cc @davidsh @CIPop @ericeil @karelz FYI @geoffkizer +12715 area-System.Net KDCSetup failing on multiple Unix OSes in CI "``` --> Running transaction check ---> Package krb5-libs.x86_64 0:1.12.2-14.el7 will be updated --> Processing Dependency: krb5-libs(x86-64) = 1.12.2-14.el7 for package: krb5-devel-1.12.2-14.el7.x86_64 --> Processing Dependency: libkdb5.so.7()(64bit) for package: krb5-devel-1.12.2-14.el7.x86_64 ---> Package krb5-libs.x86_64 0:1.13.2-12.el7_2 will be an update ---> Package krb5-server.x86_64 0:1.13.2-12.el7_2 will be installed System.Runtime.Serialization.Xml.Performance.Tests -> /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/bin/AnyOS.AnyCPU.Release/System.Runtime.Serialization.Xml.Performance.Tests/System.Runtime.Serialization.Xml.Performance.Tests.dll http://olcentgbl.trafficmanager.net/centos/7/extras/x86_64/repodata/a7c44548f84080446edd33e17e9c37274a1f195f797088cb4153254478d9881a-filelists.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found Trying other mirror. One of the configured repositories failed (CentOS-7 - Extras), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work ""fix"" this: 1. Contact the upstream for the repository and get them to fix the problem. 2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work). 3. Disable the repository, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage: yum-config-manager --disable extras 4. Configure the failing repository to be skipped, if it is unavailable. Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise: yum-config-manager --save --setopt=extras.skip_if_unavailable=true failure: repodata/a7c44548f84080446edd33e17e9c37274a1f195f797088cb4153254478d9881a-filelists.sqlite.bz2 from extras: [Errno 256] No more mirrors to try. http://olcentgbl.trafficmanager.net/centos/7/extras/x86_64/repodata/a7c44548f84080446edd33e17e9c37274a1f195f797088cb4153254478d9881a-filelists.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found Error occurred during installation, aborting Operating System: centos Stopping KDC.. Removing config files Removing KDC database Removing NTLM credentials file Cleanup completed ``` " +12716 area-System.Runtime Intermittent: AppDomainTests.UnhandledException_Called failing in CI This has been failing frequently but intermittently. The problem appears to be that the test waits for the process to exit, and it doesn't exit within 30 seconds: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs#L69 https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs#L170 ``` System.Tests.AppDomainTests.UnhandledException_Called [FAIL] Assert+WrapperXunitException : File path: /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs. Line: 170 ---- Assert.True() Failure Expected: True Actual: False Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/Common/tests/System/Diagnostics/AssertWithCallerAttributes.cs(583,0): at Assert.WrapException(Exception e, String callerFilePath, Int32 callerLineNumber) /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/Common/tests/System/Diagnostics/AssertWithCallerAttributes.cs(578,0): at Assert.True(Boolean condition, String userMessage, String path, Int32 line) /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(170,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs(69,0): at System.Tests.AppDomainTests.UnhandledException_Called() ----- Inner Stack Trace ----- /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/Common/tests/System/Diagnostics/AssertWithCallerAttributes.cs(571,0): at Assert.True(Boolean condition, String userMessage, String path, Int32 line) ``` Examples: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/38/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/38/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/rhel7.2_debug/334/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.10_release/27/consoleText cc: @ramarag, @jkotas +12717 area-System.Diagnostics Remove defunct AssertWithCallerAttributes from tests When we didn't have file name / line number information in exception stack traces, we added this AssertWithCallerAttributes.cs file, which could be included in a test project to force asserts to bind to it instead of to those from xunit, and it uses caller attributes to include such information in the exceptions. Now that we have appropriate information provided by the runtime, we no longer need this workaround. cc: @Priya91, @ianhays +12718 area-System.Security Add leaveOpen ctor to CryptoStream This adds `public CryptoStream(Stream, ICryptoTransform, CryptoStreamMode, bool leaveOpen)` to the netcoreapp1.1 contract (which will be bumped to 1.2 once support for that version exists). Fixes #1079. Replaces PR #11587 (thanks, @bbowyersmyth). cc: @stephentoub @steveharter +12720 area-System.Globalization Enable RegionInfo netstandard 1.7 tests +12722 area-Meta Add missing derivations from MarshalByRefObject ``` public abstract class FileSystemInfo : MarshalByRefObject, ISerializable { public abstract class IsolatedStorage : MarshalByRefObject { public abstract class Stream : MarshalByRefObject, IDisposable { public abstract class TextReader : MarshalByRefObject, IDisposable { public abstract class TextWriter : MarshalByRefObject, IDisposable { public abstract class TraceListener : MarshalByRefObject, IDisposable { public abstract class WaitHandle : MarshalByRefObject, IDisposable { public abstract class WebRequest : MarshalByRefObject, ISerializable { public abstract class WebResponse : MarshalByRefObject, IDisposable, ISerializable { public sealed class AppDomain : MarshalByRefObject { public sealed class RegisteredWaitHandle : MarshalByRefObject { public sealed class Timer : MarshalByRefObject, IDisposable { ``` +12723 area-Serialization Decimal and X509Certificate are missing IDeserializationCallback It's in the implementation, just missing from the ref. +12724 area-Infrastructure [Infrastructure] Test X and merge I've lost track of the number of times I've had a PR that passes the test suite, but fails on an unrelated test on one or a couple test runs. In these occasions, if I don't spot the test failure, the PR reviewer has to trigger the test run themselves, e.g. `Test Innerloop OSX Release Build and Test` This means that the reviewer then has to wait about an hour for the test run to finish, when they come back to the PR and then can merge. The apple/swift project has the `Test and merge` functionality built into their CI, which I propose adding to dotnetbot I.e. we add support for the following: ``` @dotnetbot Test and merge Innerloop OSX Release Build and Test ``` which does the following: - Runs the tests specified - If the test run passed, merge the PR - If the test run failed, don't merge the PR (optionally post an error message) This would reduce the churn of devs having to remember to trigger tests and then go back and merge once the tests have all passed! +12725 area-Meta Enhance APICompat to discover [Serializable] Presumably some of these are missing, since BinarySerialization had been removed. It's hard to say how many because it's not represented in the ref assemblies. This may not be much (or even any) since there are still 149 instances of it in the CoreCLR implementations and we inherit most of those implementations. We do need it back since it likely changes serialization behavior. To find them if any, we need to update the apicompat tool then run it against desktop impl on the LHS and CoreFX impl on the RHS. Any types that are present in CoreFX, but are missing the attribute, should have it added. @weshaggard sound about right? perhaps there's no much to do here, since it's all over CoreCLR. +12726 area-System.Security Move netstandard security attributes into System.Runtime. See https://github.com/dotnet/standard/pull/16 which contains the CAS attributes which are in netstandard because they have usage. They should be moved from System.Security.Permissions into System.Runtime. cc @danmosemsft +12728 area-System.Net Disable SslStream_StreamToStream_DataAfterShutdown_Fail test failing in CI https://github.com/dotnet/corefx/issues/12706 cc: @CIPop +12730 area-System.Security [P2P reference cleanups] Remove reference from System.Security.Permissions to System.Runtime once packages are updated Remove reference from System.Security.Permissions to System.Runtime once packages are updated. Reference was added by PR: #12729 +12731 area-Serialization [Add Test] For New Added System.Runtime.Serialization.* APIs Here's the list of APIs. ``` T:System.Runtime.Serialization.Json.JsonReaderWriterFactory M:System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas) M:System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonWriter(System.IO.Stream,System.Text.Encoding) T:System.Runtime.Serialization.Json.IXmlJsonReaderInitializer T:System.Runtime.Serialization.Json.IXmlJsonWriterInitializer T:System.Runtime.Serialization.ExtensionDataObject T:System.Runtime.Serialization.IExtensibleDataObject T:System.Runtime.Serialization.XmlSerializableServices T:System.Runtime.Serialization.XPathQueryGenerator T:System.Runtime.Serialization.ExportOptions T:System.Runtime.Serialization.XsdDataContractExporter T:System.Runtime.Serialization.Json.DataContractJsonSerializer's missing Members. T:System.Xml.IFragmentCapableXmlDictionaryWriter P:System.Xml.IFragmentCapableXmlDictionaryWriter.CanFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.get_CanFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.EndFragment M:System.Xml.IFragmentCapableXmlDictionaryWriter.StartFragment(System.IO.Stream,System.Boolean) M:System.Xml.IFragmentCapableXmlDictionaryWriter.WriteFragment(System.Byte[],System.Int32,System.Int32) T:System.Xml.IStreamProvider M:System.Xml.IStreamProvider.GetStream M:System.Xml.IStreamProvider.ReleaseStream(System.IO.Stream) T:System.Xml.IXmlBinaryReaderInitializer M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlBinaryWriterInitializer M:System.Xml.IXmlBinaryWriterInitializer.SetOutput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean) T:System.Xml.IXmlMtomReaderInitializer M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.IO.Stream,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlMtomWriterInitializer M:System.Xml.IXmlMtomWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) T:System.Xml.IXmlTextReaderInitializer M:System.Xml.IXmlTextReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.IXmlTextReaderInitializer.SetInput(System.IO.Stream,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlTextWriterInitializer M:System.Xml.IXmlTextWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Boolean) M:System.Xml.XmlDictionaryReader.CreateBinaryReader(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateBinaryReader(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.CreateTextReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) M:System.Xml.XmlDictionaryReader.GetNonAtomizedNames(System.String@,System.String@) M:System.Xml.XmlDictionaryReader.ReadElementContentAsDateTime M:System.Xml.XmlDictionaryReader.ReadString M:System.Xml.XmlDictionaryReader.ReadString(System.Int32) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) M:System.Xml.XmlDictionaryWriter.WriteBase64Async(System.Byte[],System.Int32,System.Int32) M:System.Xml.XmlDictionaryWriter.WriteValue(System.Xml.IStreamProvider) M:System.Xml.XmlDictionaryWriter.WriteValueAsync(System.Xml.IStreamProvider) ``` +12733 area-System.Net Disable SslStreamAlertTests by making them netcoreapp1.1 specific After https://github.com/dotnet/corefx/pull/11489 This error shows up after trying to consume the new packages. SslStreamAlertsTest.cs(81,30): error CS1061: 'SslStream' does not contain a definition for 'ShutdownAsync' and no extension method 'ShutdownAsync' accepting a first argument of type 'SslStream' could be found (are you missing a using directive or an assembly reference?) [D:\A_work\55\s\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] For now disabling these tests by conditioning them on netcoreapp1.1. @CIPop you will need to fix the issue with your PR to create a netcoreapp1.1 build configuration for the ref and these tests in order to re-enable them. FYI @sepidehMS @joperezr +12735 area-System.Net System.Net.* test configurations need updating Right now the System.Net.Security (and I'm assuming other System.Net.\* tests have the same issue) tests configurations only support netstandard1.7 which will block them from running tests in other configurations. We should probably keep the netstandard1.3 configurations so we can still run these tests for uap. We also need to add a netcoreapp1.1 build configuration to get the new sslstreamalert tests running (see https://github.com/dotnet/corefx/pull/12733). While taking a quick look at why these tests didn't fail in CI, it is because the take a dependency on the csproj (https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj#L145) instead of the pkgproj like they should. cc @CIPop @davidsh +12736 area-Meta Add a bunch of serialization implementations Most of these are just adding [Serializable]. Some also involve implementing ISerializable. Covers the serializable types from: - Microsoft.Win32.Registry - System.Data.SqlClient - System.Diagnostics.Process - System.Diagnostics.TraceSource - System.Diagnostics.Tracing - System.Drawing.Primitives - System.Globalization.Extensions - System.IO.FileSystem.Primitives - System.IO.FileSystem - System.IO.MemoryMappedfiles - System.IO.Pipes - System.Net.Ping - System.Net.Primitives (except for SocketException, which I'll do separately once packages are updated) cc: @danmosemsft Contributes to https://github.com/dotnet/corefx/issues/12725 Contributes to https://github.com/dotnet/corefx/issues/12669 Contributes to https://github.com/dotnet/corefx/issues/12669 +12737 area-System.Runtime Provide APIs to determine OS, Distribution, Version, Bitness and other useful Info I would like to be able to get this information from System.Environment. I've been recently playing with the lsb_release command. I should be able to get most of this same information from System.Environment. I saw some earlier discussions on some APIs leading to bad practices (for example, checking feature availability based on versions). All true, but I don't think we should use those bad practices as a reason not to make APIs available. That's the role of documentation and samples, IMO. Related: https://github.com/dotnet/corefx/issues/1017 +12738 area-System.Net Duplicate resource strings in System.Net.Mail "``` xml Mailbox unavailable. Mailbox unavailable. ``` This bug exists on Full Framework as well. " +12740 area-System.Net TcpClient.BeginConnect doesn't handle socket exception for host name with multiple ip addresses. ``` ---- System.PlatformNotSupportedException : This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired. Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpTransport.cs(166,0): at System.Net.Mail.SmtpTransport.BeginGetConnection(ContextAwareResult outerResult, AsyncCallback callback, Object state, String host, Int32 port) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs(753,0): at System.Net.Mail.SmtpClient.SendAsync(MailMessage message, Object userToken) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs(837,0): at System.Net.Mail.SmtpClient.SendMailAsync(MailMessage message) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/tests/Functional/SmtpClientTest.cs(228,0): at System.Net.Mail.Tests.SmtpClientTest.TestMailDeliveryAsync() ----- Inner Stack Trace ----- at System.Net.Sockets.Socket.ThrowIfNotSupportsMultipleConnectAttempts() at System.Net.Sockets.Socket.BeginConnect(String host, Int32 port, AsyncCallback requestCallback, Object state) at System.Net.Sockets.TcpClient.BeginConnect(String host, Int32 port, AsyncCallback requestCallback, Object state) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpConnection.cs(108,0): at System.Net.Mail.SmtpConnection.BeginInitializeConnection(String host, Int32 port, AsyncCallback callback, Object state) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpConnection.cs(488,0): at System.Net.Mail.SmtpConnection.ConnectAndHandshakeAsyncResult.InitializeConnection() /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpConnection.cs(483,0): at System.Net.Mail.SmtpConnection.ConnectAndHandshakeAsyncResult.GetConnection() /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpConnection.cs(120,0): at System.Net.Mail.SmtpConnection.BeginGetConnection(ContextAwareResult outerResult, AsyncCallback callback, Object state, String host, Int32 port) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Mail/src/System/Net/Mail/SmtpTransport.cs(162,0): at System.Net.Mail.SmtpTransport.BeginGetConnection(ContextAwareResult outerResult, AsyncCallback callback, Object state, String host, Int32 port) ``` +12742 area-System.Xml Add missing default System.Private.Xml test runs Some of the Xml tests did not run in the default CI builds as they passed in non-`netcoreapp1.1` TestTFMs, so I added new runs in System.Private.Xml.Tests.builds for them. Addresses: https://github.com/dotnet/corefx/issues/12483 cc: @stephentoub @danmosemsft @weshaggard @joperezr +12744 area-System.Security Port DES and RC2 in System.Security.Cryptography.Algorithms and .Csp Add support for RC2 and DES Issues addressed: #11117 Port T:System.Security.Cryptography.RC2xx #11116 Port T:System.Security.Cryptography.DESxx #12313 Port System.Security.Cryptography.CipherMode.CFB and .OFB RC2\DES support is enabled for S.S.C.Csp via CAPI, and S.S.C.Algorithms for Windows (via Cng), Linux (via OpenSsl) and Apple. In .Csp, support for ICryptoTransform was achieved by extending the UniversalCryptoTransform pattern which is much cleaner than porting the netfx CryptoAPITransform. Note that there is no RC2\DES support in S.S.C.Cng as there is no netfx support for Cng RC2\DES. For RC2, there was a lot of code that needed to be touched to set the effective key length property. @bartonjs please review +12746 area-System.Runtime Proposal to replace the algorithm used in Random Class. @teo-tsirpanis commented on [Sat Oct 15 2016](https://github.com/dotnet/coreclr/issues/7635) According to [MSDN documentation](https://msdn.microsoft.com/en-us/library/system.random%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=vb#Remarks), the `Random` class is using > a modified version of Donald E. Knuth's subtractive random number generator algorithm. This algorithm is somewhat obscure. I have found only [this paper](http://www.colostate.edu/~pburns/monte/rngreport.pdf) that can be said that refers to this algorithm. Therefore, I propose a change of the default RNG in `Random` class to the [Permuted Cogruential Generator(PCG)](http://www.pcg-random.org/). According to its site, PCG is: - [More difficult to predict](http://www.pcg-random.org/predictability.html#predictability-of-the-pcg-family) - Smaller both in code size (`InternalSample` will be only five lines of code and `Random`'s constructor will be another five lines) and in memory usage (just 16 bytes in comparison with the 232 bytes the existing RNG uses) - [More statistically random](http://www.pcg-random.org/statistical-tests.html#statistical-performance-of-the-pcg-family) It can also provide some [other useful features](http://www.pcg-random.org/useful-features.html). There is a more detailed comparison of PCG and other RNGs [here](http://www.pcg-random.org/other-rngs.html). I submitted https://github.com/dotnet/coreclr/pull/7477 to apply these changes, but I was told to temporarily close it and to open an issue instead for further discussion. The implementation is based on [this one](https://github.com/imneme/pcg-c-basic/blob/master/pcg_basic.c). It has also added some constructors to `Random` class that allow it to be seeded with the longer `ulong` seeds PCG allows. It also implements multiple codebooks. The original constructors are retained, so I guess this isn't a breaking API change. +12747 area-Microsoft.CSharp "Improve ""dynamic"" performance" @Opiumtm commented on [Fri Oct 14 2016](https://github.com/dotnet/coreclr/issues/7618) `dynamic` feature today have extremely awful performance. Dynamic typing in .NET languages (C#, VB) isn't used much, mostly because of intolerable slow performance and some bugs in implementation (there are memory leaks in dynamics, for example). Some third-party libraries provide fast reflection based on IL emit at runtime to have fast access to object members. Even standard reflection API provide means to create fast delegates to invoke at runtime: [MethodInfo.CreateDelegate](https://msdn.microsoft.com/en-us/library/hh194376%28v=vs.110%29.aspx) Performance measurement of `dynamic` reveal that it doesn't cache delegates and indeed is very unoptimized. [MethodInfo.CreateDelegate](https://msdn.microsoft.com/en-us/library/hh194376%28v=vs.110%29.aspx) provide performance almost as fast as direct call to a method (there is some performance penalty on delegate creation, but invocation of created delegate is almost free - so it can created on first invoke and then can be cached). `dynamic` is very much slower on subsequent method calls, although it can cache method invokes using `CreateDelegate`. Same performance improvements should be applied on other `dynamic` features. Dynamic method invocation is just an example of how it should be improved. --- @mikedn commented on [Fri Oct 14 2016](https://github.com/dotnet/coreclr/issues/7618#issuecomment-253782788) How exactly is this related to coreclr? The entire dynamic implementation is in Microsoft.CSharp, a corefx project. --- @danmosemsft commented on [Mon Oct 17 2016](https://github.com/dotnet/coreclr/issues/7618#issuecomment-254402736) Moving to corefx. +12748 area-System.Globalization Incoherent CultureInfo in different machines "@IlBaffo commented on [Thu Sep 29 2016](https://github.com/dotnet/coreclr/issues/7415) Hi, I have noticed that, creating a specific CultureInfo with ""zh-Hant-*"", will be returned a culture with parent ""CHS"" (should be CHT) and creating a CultureInfo with ""zh-Hans-*"" returns a culture with the DateTimeFormats in Traditional Chinese instead of Simplified. Steps to reproduce: - Create a console app (target any framework > 4.5.0, I don't know if lower versions have the problem) - Paste this code: ``` class Program { static void Main(string[] args) { System.Console.WriteLine(System.Environment.Version.ToString()); System.Console.WriteLine(""zh-Hant-CN""); System.Console.WriteLine(""Parent Name is: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hant-CN"").Parent.Name); System.Console.WriteLine(""Parent LCID is: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hant-CN"").Parent.EnglishName); System.Console.WriteLine(""Parent LCID is: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hant-CN"").Parent.LCID); System.Console.WriteLine(""zh-Hans-CN""); System.Console.WriteLine(""Parent Name is: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hans-CN"").Parent.Name); System.Console.WriteLine(""Parent Name is: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hans-CN"").Parent.EnglishName); System.Console.WriteLine(""Parent LCID is: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hans-CN"").Parent.LCID); System.Console.WriteLine(""Same culture: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hant-CN"") .Equals(System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hans-CN"")).ToString() ); System.Console.ReadKey(); } } ``` - Run the compiled EXE (Any Cpu, Debug) on a Windows machine except Windows 10 (Windows Server 20012 R2 in my case) with the latest framework (4.6.2) and the latest updates installed. The output of the program will be (wrong?): ``` 4.0.30319.42000 zh-Hant-CN Parent Name is: zh-CHS Parent LCID is: Chinese (Simplified) Legacy Parent LCID is: 4 zh-Hans-CN Parent Name is: zh-CHS Parent Name is: Chinese (Simplified) Legacy Parent LCID is: 4 Same culture: True ``` On Windows 10 though the output is as expected: ``` 4.0.30319.42000 zh-Hant-CN Parent Name is: zh-CHT Parent LCID is: Chinese (Traditional) Legacy Parent LCID is: 31748 zh-Hans-CN Parent Name is: zh-CHS Parent Name is: Chinese (Simplified) Legacy Parent LCID is: 4 Same culture: False ``` Additionally, when creating the language ""zh-Hans-CN"" (Simplified) the Traditional Month Names (and other names) are used, so if you run this code you will get 'Same culture: true' in Windows < 10: ``` System.Console.WriteLine(""Same culture: "" + System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hant-CN"").Equals(System.Globalization.CultureInfo.CreateSpecificCulture(""zh-Hans-CN"")).ToString()); ``` I hope this is not the wrong repository because I have found here the source code of the class: https://github.com/dotnet/coreclr/blob/74967f89e0f43e156cf23cd88840e1f0fc94f997/src/mscorlib/src/System/Globalization/CultureInfo.cs#L584 Thank you. " +12749 area-System.Net Include Debug.Fail with GlobalLog.Assert in Net Mail. fixes #12674 cc @CIPop +12750 area-System.Net Resolve unblocked TODOs and formatting changes to System.Net.Mail. Address PR comments left by @CIPop Also addresses TODO with issue #11747 cc @CIPop @stephentoub +12753 area-System.Data DataTableReadWriteXmlTest.TestReadXml failed in CI "https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/1754/consoleText ``` System.Data.Tests.DataTableReadWriteXmlTest.TestReadXml [FAIL] Assert.Equal() Failure ↓ (pos 375) Expected: ···:element name=""Main"" msdata:Prefix="""">\n \n \n ··· ↑ (pos 375) Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.Common/tests/System/Data/DataTableReadWriteXmlTest.cs(364,0): at System.Data.Tests.DataTableReadWriteXmlTest.TestReadXml() ``` I've only seen this fail once, on OSX. It looks like we expected a node to contain an empty prefix attribute, and instead it wasn't there at all. This is one of the ported Mono DataSet tests. " +12755 area-System.Diagnostics InvalidDataException in Process.GetProcesses on Linux Consider the following program: ``` cs public static void Main(string[] args) { try { Process.GetProcesses(); } catch (Exception e) { Console.WriteLine(e); } } ``` Sometimes on Linux (Ubuntu 16.04), I have the following exception: ``` $ dotnet run ystem.IO.InvalidDataException: Found invalid data while decoding. at System.IO.StringParser.ParseNextChar() at Interop.procfs.TryParseStatFile(String statFilePath, ParsedStat& result, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(ParsedStat procFsStat, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(Int32 pid, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcesses() at DotNetCoreConsoleApplication.Program.Main(String[] args) in /home/akinshin/RiderProjects/DotNetCoreConsoleApplication/DotNetCoreConsoleApplication/Program.cs:line 12 ``` Repro: the bug can be easily reproduced, if you run [Rider](https://www.jetbrains.com/rider/) before this Program. The origin of the troubles: I'm working on .NET Core tests support in Rider on Linux. When I try to execute ``` /usr/bin/dotnet test --port 36513 --parentProcessId 3624 --no-build --framework net451 ``` I have the following exception: ``` dotnet-test Error: 0 : System.IO.InvalidDataException: Found invalid data while decoding. at System.IO.StringParser.ParseNextChar() at Interop.procfs.TryParseStatFile(String statFilePath, ParsedStat& result, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(ParsedStat procFsStat, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.CreateProcessInfo(Int32 pid, ReusableTextReader reusableReader) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcesses() at Microsoft.DotNet.Tools.Test.TestCommand.RegisterForParentProcessExit(Int32 id) at Microsoft.DotNet.Tools.Test.TestCommand.DoRun(String[] args) ``` Thus, tests could not be started because `RegisterForParentProcessExit` uses `System.Diagnostics.Process.GetProcesses()`. +12758 area-Infrastructure Building corefx on Linux adds src\src dir to nupkgs If I build corefx (commit 9688ddbb62c04189cac4c4a) on RHEL, some of the nupkgs produced include unexpected `src\src` directories in their root. For example: ``` $ unzip -l System.Runtime.Loader.4.0.0.nupkg Archive: System.Runtime.Loader.4.0.0.nupkg Length Date Time Name --------- ---------- ----- ---- 511 10-17-2016 12:20 _rels/.rels 1705 10-17-2016 12:20 System.Runtime.Loader.nuspec 9323 10-17-2016 12:20 dotnet_library_license.txt 1587 10-17-2016 12:20 ThirdPartyNotices.txt 0 10-17-2016 12:20 lib/net462/_._ 5632 10-17-2016 12:20 lib/netstandard1.5/System.Runtime.Loader.dll 6656 10-17-2016 12:20 ref/netstandard1.5/System.Runtime.Loader.dll 1794 10-17-2016 12:20 ref/netstandard1.5/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/de/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/es/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/fr/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/it/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/ja/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/ko/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/ru/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml 1794 10-17-2016 12:20 ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml 2803 10-17-2016 12:20 src%5Csrc/System.Runtime.Loader/ref/System.Runtime.Loader.cs 704 10-17-2016 12:20 [Content_Types].xml 830 10-17-2016 12:20 package/services/metadata/core-properties/d53d159faf2a41ba8918c8a2c680a616.psmdcp --------- ------- 47691 20 files ``` That `src%5Csrc` file is unexpected. If this nupkg gets included into a cli build, `dotnet` will cache various `.cs` files into `~/.nuget`. If someone does a `cd ~ && dotnet new && dotnet restore && dotnet build` they get thousands of unexpected warnings and errors. As a workaround, changing the `\` to `/` at https://github.com/dotnet/buildtools/blob/29b79c7a72ff03e8ab526f5663b99ce6fb2d58fe/src/Microsoft.DotNet.Build.Tasks.Packaging/src/PackageFiles/PackageLibs.targets#L182 fixes this issue (at least on RHEL). +12759 area-System.Runtime "Regression: System.Runtime.Tests fail with ""Missing a required constructor"" on System.Reflection.PseudoCustomAttribute._GetSecurityAttributes " "call CoreRun.exe xunit.console.netcore.exe System.Runtime.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwind owstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Tests Discovered: System.Runtime.Tests Starting: System.Runtime.Tests System.Tests.GetCustomAttribute.NegTest1 [FAIL] Assert.Throws() Failure Expected: typeof(System.Reflection.AmbiguousMatchException) Actual: typeof(System.Runtime.InteropServices.COMException): Missing a required constructor. (Exception from HRESULT: 0x8013143B) Stack Trace: at System.Reflection.PseudoCustomAttribute._GetSecurityAttributes(RuntimeModule module, Int32 token, Boolean assembly, Object[]& securityAttributes) at System.Reflection.PseudoCustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType, Boolean includeSecCa, Int32& count) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType) at System.Attribute.GetCustomAttributes(Assembly element, Type attributeType, Boolean inherit) at System.Attribute.GetCustomAttribute(Assembly element, Type attributeType, Boolean inherit) D:\git\corefx\src\System.Runtime\tests\System\Attributes.netstandard1.7.cs(256,0): at System.Tests.GetCustomAttribute.<>c__DisplayClass2_0.b__3() System.Tests.GetCustomAttribute.NegTest2 [FAIL] Assert.Throws() Failure Expected: typeof(System.Reflection.AmbiguousMatchException) Actual: typeof(System.Runtime.InteropServices.COMException): Missing a required constructor. (Exception from HRESULT: 0x8013143B) Stack Trace: at System.Reflection.PseudoCustomAttribute._GetSecurityAttributes(RuntimeModule module, Int32 token, Boolean assembly, Object[]& securityAttributes) at System.Reflection.PseudoCustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType, Boolean includeSecCa, Int32& count) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType) at System.Attribute.GetCustomAttributes(Assembly element, Type attributeType, Boolean inherit) at System.Attribute.GetCustomAttribute(Assembly element, Type attributeType, Boolean inherit) D:\git\corefx\src\System.Runtime\tests\System\Attributes.netstandard1.7.cs(298,0): at System.Tests.GetCustomAttribute.<>c__DisplayClass4_0.b__3() System.IO.Tests.FileLoadExceptionInteropTests.Fom_HR(hr: -2146232799) [FAIL] Assert.Equal() Failure Expected: (null) Actual: complib.hlp#5179 Stack Trace: D:\git\corefx\src\System.Runtime\tests\System\IO\Exceptions.Utility.cs(23,0): at System.IO.Tests.ExceptionUtility.ValidateExceptionProperties(Exception e, Int32 dataCount, String helpLink, Int32 hResult, Exception innerExcept ion, String message, String source, String stackTrace, Boolean validateMessage) D:\git\corefx\src\System.Runtime\tests\System\IO\FileLoadException.InteropTests.cs(46,0): at System.IO.Tests.FileLoadExceptionInteropTests.Fom_HR(Int32 hr) System.Tests.AttributeGetCustomAttributes.RunPosTests [FAIL] System.Runtime.InteropServices.COMException : Missing a required constructor. (Exception from HRESULT: 0x8013143B) Stack Trace: at System.Reflection.PseudoCustomAttribute._GetSecurityAttributes(RuntimeModule module, Int32 token, Boolean assembly, Object[]& securityAttributes) at System.Reflection.PseudoCustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType, Boolean includeSecCa, Int32& count) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType) at System.Attribute.GetCustomAttributes(Assembly element, Boolean inherit) D:\git\corefx\src\System.Runtime\tests\System\Attributes.netstandard1.7.cs(122,0): at System.Tests.AttributeGetCustomAttributes.RunPosTests() Finished: System.Runtime.Tests === TEST EXECUTION SUMMARY === D:\git\corefx\Tools\tests.targets(260,5): warning : System.Runtime.Tests Total: 10501, Errors: 0, Failed: 4, Skipped: 0, Time: 1.910s [D:\git\corefx\src\System.Runtime\tests\System.Runtime.Tests.csproj] The previous error was converted to a warning because the task was called with ContinueOnError=true. Finished running tests. End time= 9:36:42.45, Exit code = 4 D:\git\corefx\Tools\tests.targets(260,5): warning MSB3073: The command ""D:\git\corefx\bin/tests/AnyOS.AnyCPU.Debug/System.Runtime.Tests/default.netcoreapp1.1/netcoreapp1.1/RunTests.cmd D:\git\corefx\packages/"" exited with code 4. [D:\gi t\corefx\src\System.Runtime\tests\System.Runtime.Tests.csproj] " +12761 area-System.IO Merge IO.Pipes and IO.Pipes.AccessControl assemblies In https://github.com/dotnet/corefx/pull/8930 I brought Pipes AccessControl to CoreFX as its own separate assembly. This was fine with one exception (from the PR comments): > Behavior is the same as the .NET 4.6 version of PipeSecurity/PipeAuditRule/etc. with the exception that the SetAccessControl extension method does not retain the same exception throwing behavior for NamedPipeClientStream. Since it's an extension method, we don't have access to the internal PipeStream State that is used in the full version to decide which error to throw. The original will throw an InvalidOperation for a WaitingToConnect stream or a IOException for a Broken stream. We just throw an InvalidOperation for either. Now that back-compat is a higher priority, we should resolve this issue. One way to do that would be to merge the assemblies. Another way would be to make `PipeStream.CheckPipePropertyOperations` public. caused the ToF test failure https://github.com/dotnet/corefx/issues/10899 +12764 area-System.Data DataViewTest.ColumnChangeName failing intermittently in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release/471/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_release/455/consoleText ``` System.Data.Tests.DataViewTest.ColumnChangeName [FAIL] Assert.Equal() Failure ↓ (pos 112) Expected: ···1,-1\ntable was set.\n---- OnListChanged PropertyDescriptorChan··· Actual: ···1,-1\ntable was set.\n ↑ (pos 112) Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release/src/System.Data.Common/tests/System/Data/DataViewTest.cs(765,0): at System.Data.Tests.DataViewTest.ColumnChangeName() ``` +12765 area-System.Diagnostics Expose new members on System.Diagnostics.Process. This brings Process almost entirely to netstandard2.0. +12767 area-Serialization ExtensionDataObject test fail T:System.Runtime.Serialization.ExtensionDataObject not work as expected. +12769 area-System.IO Add missing System.IO.Pipes API members - Adds/Exposes: - NamedPipeServerStream.MaxAllowedServerInstances - NamedPipeServerStream.RunAsClient(System.IO.Pipes.PipeStreamImpersonationWorker) - PipeStream.IsHandleExposed - PipeStream.CheckPipePropertyOperations - PipeStream.CheckReadOperations - PipeStream.CheckWriteOperations - PipeStream.InitializeHandle(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean) - PipeStreamImpersonationWorker - Of the above, only RunAsClient required a new implementation (for Unix) - Adds basic tests for all of the above. - Some changes to the interop code were required for both Windows and Unix. Those will likely need to be merged in a different PR before this one to enable testing. - Required updating the default version of the project to netstandard17 from netstandard13. resolves https://github.com/dotnet/corefx/issues/12197 @stephentoub @JeremyKuhne @AlexGhiondea @joperezr +12771 area-Meta Adding more documentation on how to run individual library tests from the command line Adding documentation on how to run tests for one library from the command line. Feedback is more than welcome, specially from folks that don't really know how to do this yet, so that they might be able to tell me if this is confusing or not. cc: @weshaggard @danmosemsft @tarekgh @karelz +12772 area-Serialization XsdDataContractExporterTest Fail Throw null reference exception when call the following code XsdDataContractExporter exporter = new XsdDataContractExporter(); exporter.CanExport(typeof(Employee)); This is because DataContractSet returns null (XsdDataContractExporter.cs). The code was commented. DataContractSet DataContractSet { get { //if (dataContractSet == null) //{ // dataContractSet = new DataContractSet((Options == null) ? null : Options.GetSurrogate()); //} return _dataContractSet; } } +12774 area-System.Net Split ServicePointManager into a separate contract Related: https://github.com/dotnet/standard/issues/72 - [x] Create new System.Net.ServicePoint contract and move sources - [x] Remove the `CertificatePolicy` and `ICertificatePolicy` Obsoleted API s - [x] Add back `SmtpClient.ServicePoint` - [x] Change System.Net.Requests contract to depend on System.Net.ServicePoint contract - [x] Change System.Net.Mail contract to depend on System.Net.ServicePoint contract +12776 area-System.Runtime Exposing more GC Apis @jkotas @Maoni0 @swgillespie @weshaggard @stephentoub PTAL +12778 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientTest/Timeout_SetTo60AndGetResponseFromServerWhichTakes40_Success Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientTest/Timeout_SetTo60AndGetResponseFromServerWhichTakes40_Success` has failed. System.Threading.Tasks.TaskCanceledException : A task was canceled. ``` Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientTest.Timeout_SetTo60AndGetResponseFromServerWhichTakes40_Success() ``` Build : Master - 20161019.01 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64 - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release - OSX.1011.Amd64 - AnyCPU-Debug - Suse.132.Amd64 - AnyCPU-Debug - Fedora.23.Amd64 - AnyCPU-Debug Details; https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161019.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientTest~2FTimeout_SetTo60AndGetResponseFromServerWhichTakes40_Success +12779 area-Infrastructure [ARM/CI] Add arm-hardfp build to CI Now we have both hardfp and softfp build for ARM. Related Issue : #12545 +12780 area-System.IO Test failure: System.IO.IsolatedStorage.ContainsUnknownFilesTests/ContainsUnknownFiles_CleanStore Opened on behalf of @jiangzeng The test `System.IO.IsolatedStorage.ContainsUnknownFilesTests/ContainsUnknownFiles_CleanStore` has failed. ``` System.IO.FileNotFoundException : Could not load file or assembly 'System.IO.IsolatedStorage, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. ``` Stack Trace: ``` at System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_CleanStore(PresetScopes scope) ``` Build : Master - 20161019.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.7.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161019.01/workItem/System.IO.IsolatedStorage.Tests/analysis/xunit/System.IO.IsolatedStorage.ContainsUnknownFilesTests~2FContainsUnknownFiles_CleanStore +12782 area-System.Net implement TcpListener.Create This fixes issue #12463. +12783 area-System.Globalization System.Globalization.Extensions cleanup Clean up some tests for System.Globalization.Extensions Some tests were tightened to better reflect current behavior. +12786 area-System.Linq Making stack spilling less invasive beyond spill sites This addresses issue #11853 by limiting the child expressions of a node spilled by `ChildRewriter` to those that occur before the spill site, rather than spilling all child expressions. Some examples are shown in the issue. The change records the index of the last child expression of a node that requires to be spilled into a temporary. Upon emitting the spilled block, only the expressions up to and including the last recorded spill index are stored into temporaries. CC @VSadov +12787 area-System.Net Fix TcpClient.Begin/EndConnect on Unix with Socket workaround TcpClient.Connect{Async} have a workaround on Unix for Socket's lack of ability to target DNS endpoints. When TcpClient.Begin/EndConnect were recently added back, they were added without that workaround. This commit fixes those members such that, on Unix, they're implemented in terms of ConnectAsync, getting the workaround implicitly. Fixes https://github.com/dotnet/corefx/issues/12740 cc: @priya91, @ericeil, @davidsh, @cipop +12789 area-System.Xml Add XmlSchema and Xslt test coverage for Non-Windows platforms Right now we do not have any XmlSchema and Xslt test coverage on non-Windows platforms. These tests are using file paths and need to change so that they can run on all other platforms successfully as well. +12793 area-System.Diagnostics Create implementation of HandleCount on Unix Once https://github.com/dotnet/corefx/pull/12765 is checked in, create the Unix implementation for HandleCount. +12794 area-System.Diagnostics Bring remaining System.Diagnostics.Debug members to netstandard2.0 ``` P:System.Diagnostics.Debug.AutoFlush P:System.Diagnostics.Debug.IndentLevel P:System.Diagnostics.Debug.IndentSize P:System.Diagnostics.Debug.Listeners M:System.Diagnostics.Debug.Close M:System.Diagnostics.Debug.Flush M:System.Diagnostics.Debug.Indent M:System.Diagnostics.Debug.Print(System.String) M:System.Diagnostics.Debug.Print(System.String,System.Object[]) M:System.Diagnostics.Debug.Unindent ``` +12795 area-System.Diagnostics Bring remaining System.Diagnostics.Debugger members to netstandard2.0 ``` F:System.Diagnostics.Debugger.DefaultCategory M:System.Diagnostics.Debugger.IsLogging M:System.Diagnostics.Debugger.Log(System.Int32,System.String,System.String) M:System.Diagnostics.Debugger.NotifyOfCrossThreadDependency ``` +12796 area-System.Diagnostics Bring remaining System.Diagnostics.*Trace members to netstandard2.0 ``` P:System.Diagnostics.DefaultTraceListener.AssertUiEnabled P:System.Diagnostics.DefaultTraceListener.LogFileName M:System.Diagnostics.DelimitedListTraceListener.#ctor(System.String) M:System.Diagnostics.DelimitedListTraceListener.#ctor(System.String,System.String) M:System.Diagnostics.DelimitedListTraceListener.GetSupportedAttributes M:System.Diagnostics.TextWriterTraceListener.#ctor(System.String) M:System.Diagnostics.TextWriterTraceListener.#ctor(System.String,System.String) M:System.Diagnostics.TextWriterTraceListener.Close P:System.Diagnostics.TraceEventCache.Callstack P:System.Diagnostics.TraceEventCache.LogicalOperationStack F:System.Diagnostics.TraceEventType.Resume F:System.Diagnostics.TraceEventType.Start F:System.Diagnostics.TraceEventType.Stop F:System.Diagnostics.TraceEventType.Suspend F:System.Diagnostics.TraceEventType.Transfer F:System.Diagnostics.TraceOptions.Callstack F:System.Diagnostics.TraceOptions.LogicalOperationStack P:System.Diagnostics.TraceSource.Attributes M:System.Diagnostics.TraceSource.GetSupportedAttributes M:System.Diagnostics.TraceSource.TraceTransfer(System.Int32,System.String,System.Guid) F:System.Diagnostics.Tracing.EventKeywords.MicrosoftTelemetry ``` +12797 area-System.Diagnostics Bring remaining System.Diagnostics.* members to netstandard2.0 This is a grab bag of a couple of APIs that don't fit well in other issues: ``` P:System.Diagnostics.ProcessStartInfo.EnvironmentVariables P:System.Diagnostics.ProcessStartInfo.ErrorDialog P:System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle P:System.Diagnostics.ProcessStartInfo.Password P:System.Diagnostics.ProcessStartInfo.Verb P:System.Diagnostics.ProcessStartInfo.Verbs P:System.Diagnostics.ProcessStartInfo.WindowStyle F:System.Diagnostics.SourceLevels.ActivityTracing M:System.Diagnostics.StackTrace.GetFrame(System.Int32) P:System.Diagnostics.Switch.Attributes M:System.Diagnostics.Switch.GetSupportedAttributes ``` +12798 area-System.ComponentModel Bring remaining System.ComponentModel.* members to netstandard2.0 There are just 2 members missing from that namespace: ``` M:System.ComponentModel.DefaultValueAttribute.SetValue(System.Object) M:System.ComponentModel.EditorBrowsableAttribute.#ctor ``` +12799 area-Serialization [XmlTypeMappingTest] Fail to Serialize Types with Soap Attributes. This scenario doesn't work since soap not supported.. +12800 area-System.Security Make derived types of SymmetricAlgorithm use field assignment in ctors. Aes and TripleDES both did assignments via virtual property setters in their ctor, which were field assignments in .NET Framework. 3rd party implementations may have written properties which assumed that the ctor had run to completion, and they are broken by that behavioral change. This change makes the ctors look like they do in net462, aside from when net462 sets fields which don't exist. It also makes the tests fail if virtual setter dispatch was utilized (for any currently defined property, at least). This addresses #12079 in master, a porting change may follow for release/1.1.0. cc: @steveharter +12803 area-System.Collections SortedList indexer implementation of IDictionary throws ArgumentNullException in Desktop Issue: #11324 +12808 area-System.Net SmtpClient: EvenSources should either have a GUID attribute or have the GUID documented - [ ] Add/Document the GUID within the source-file that defines it (EmailEventSource). - [ ] Document the GUID at https://github.com/dotnet/corefx/blob/master/Documentation/debugging/windows-instructions.md#traces +12809 area-System.IO Break out nested FileStream This breaks out the nested FileStream in preparation for moving the code down to corlib. Will follow up with: 1. Rename of files (from Unix/Win32FS to FS.os.cs) 2. Moving of common code to FileStream.cs 3. Copy to corlib 4. Move ref to System.Runtime and type forward to corlib 5. Further prep work for bringing up UAP 10.1 @ianhays, @ericstj, @stephentoub, @jkotas #12633 +12811 area-System.Numerics Bring remaining System.Numerics members to netstandard2.0 There is a single member missing, but System.Runtime.Numerics needs to be updated to netstandard1.7. ``` M:System.Numerics.BigInteger.CompareTo(System.Object) ``` +12812 area-System.Runtime Bring remaining System.Runtime members to netstandard2.0 ``` T:System.Runtime.AssemblyTargetedPatchBandAttribute M:System.Runtime.AssemblyTargetedPatchBandAttribute.#ctor(System.String) P:System.Runtime.AssemblyTargetedPatchBandAttribute.TargetedPatchBand F:System.Runtime.GCLatencyMode.NoGCRegion T:System.Runtime.TargetedPatchingOptOutAttribute M:System.Runtime.TargetedPatchingOptOutAttribute.#ctor(System.String) P:System.Runtime.TargetedPatchingOptOutAttribute.Reason ``` +12813 area-System.Net add SocketFlags.MaxIOVectorLength Fixes issue #12464. +12814 area-System.ComponentModel Bring remaining System.ComponentModel.* members to netstandard2.0 Fixes #12798 cc @AlexGhiondea @danmosemsft @joperezr +12815 area-System.Runtime Bring remaining System.Runtime.InteropServices.ComTypes to netstandard 2.0 ``` T:System.Runtime.InteropServices.ComTypes.IDataObject M:System.Runtime.InteropServices.ComTypes.IDataObject.DAdvise(System.Runtime.InteropServices.ComTypes.FORMATETC@,System.Runtime.InteropServices.ComTypes.ADVF,System.Runtime.InteropServices.ComTypes.IAdviseSink,System.Int32@) M:System.Runtime.InteropServices.ComTypes.IDataObject.DUnadvise(System.Int32) M:System.Runtime.InteropServices.ComTypes.IDataObject.EnumDAdvise(System.Runtime.InteropServices.ComTypes.IEnumSTATDATA@) M:System.Runtime.InteropServices.ComTypes.IDataObject.EnumFormatEtc(System.Runtime.InteropServices.ComTypes.DATADIR) M:System.Runtime.InteropServices.ComTypes.IDataObject.GetCanonicalFormatEtc(System.Runtime.InteropServices.ComTypes.FORMATETC@,System.Runtime.InteropServices.ComTypes.FORMATETC@) M:System.Runtime.InteropServices.ComTypes.IDataObject.GetData(System.Runtime.InteropServices.ComTypes.FORMATETC@,System.Runtime.InteropServices.ComTypes.STGMEDIUM@) M:System.Runtime.InteropServices.ComTypes.IDataObject.GetDataHere(System.Runtime.InteropServices.ComTypes.FORMATETC@,System.Runtime.InteropServices.ComTypes.STGMEDIUM@) M:System.Runtime.InteropServices.ComTypes.IDataObject.QueryGetData(System.Runtime.InteropServices.ComTypes.FORMATETC@) M:System.Runtime.InteropServices.ComTypes.IDataObject.SetData(System.Runtime.InteropServices.ComTypes.FORMATETC@,System.Runtime.InteropServices.ComTypes.STGMEDIUM@,System.Boolean) T:System.Runtime.InteropServices.ComTypes.IEnumSTATDATA M:System.Runtime.InteropServices.ComTypes.IEnumSTATDATA.Clone(System.Runtime.InteropServices.ComTypes.IEnumSTATDATA@) M:System.Runtime.InteropServices.ComTypes.IEnumSTATDATA.Next(System.Int32,System.Runtime.InteropServices.ComTypes.STATDATA[],System.Int32[]) M:System.Runtime.InteropServices.ComTypes.IEnumSTATDATA.Reset M:System.Runtime.InteropServices.ComTypes.IEnumSTATDATA.Skip(System.Int32) ``` +12816 area-System.Text Bring remaining System.Text members to netstandard2.0 ``` M:System.Text.UnicodeEncoding.GetByteCount(System.Char*,System.Int32) M:System.Text.UnicodeEncoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) M:System.Text.UnicodeEncoding.GetCharCount(System.Byte*,System.Int32) M:System.Text.UnicodeEncoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) ``` +12817 area-System.Xml Port remaining System.Xml.Linq members to netstandard2.0 ``` M:System.Xml.Linq.XDocument.Save(System.String) M:System.Xml.Linq.XDocument.Save(System.String,System.Xml.Linq.SaveOptions) M:System.Xml.Linq.XElement.Save(System.String) M:System.Xml.Linq.XElement.Save(System.String,System.Xml.Linq.SaveOptions) M:System.Xml.Linq.XStreamingElement.Save(System.String) M:System.Xml.Linq.XStreamingElement.Save(System.String,System.Xml.Linq.SaveOptions) ``` +12818 area-System.Runtime Recent changes in coreclr broke System.Runtime tests since Assembly.Load implementation changed Console output is: ``` cmd Command(s): call CoreRun.exe xunit.console.netcore.exe System.Runtime.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.Tests Discovered: System.Runtime.Tests Starting: System.Runtime.Tests System.Reflection.Tests.AssemblyTests.AssemblyLoadFromBytesNeg [FAIL] Assert.Throws() Failure Expected: typeof(System.BadImageFormatException) Actual: typeof(System.ArgumentNullException): Buffer cannot be null. Parameter name: buffer Stack Trace: at System.IO.MemoryStream..ctor(Byte[] buffer, Boolean writable) at System.Reflection.Assembly.Load(Byte[] rawAssembly, Byte[] rawSymbolStore) at System.Reflection.Assembly.Load(Byte[] rawAssembly) F:\git\corefxCopy\corefx\src\System.Runtime\tests\System\Reflection\AssemblyTests.cs(128,0): at System.Reflection.Tests.AssemblyTests.<>c.b__12_1() System.Reflection.Tests.AssemblyTests.AssemblyLoadFromBytes [FAIL] System.ArgumentNullException : Buffer cannot be null. Parameter name: buffer Stack Trace: at System.IO.MemoryStream..ctor(Byte[] buffer, Boolean writable) at System.Reflection.Assembly.Load(Byte[] rawAssembly, Byte[] rawSymbolStore) at System.Reflection.Assembly.Load(Byte[] rawAssembly) F:\git\corefxCopy\corefx\src\System.Runtime\tests\System\Reflection\AssemblyTests.cs(119,0): at System.Reflection.Tests.AssemblyTests.AssemblyLoadFromBytes() Finished: System.Runtime.Tests === TEST EXECUTION SUMMARY === System.Runtime.Tests Total: 10522, Errors: 0, Failed: 2, Skipped: 0, Time: 1.480s Finished running tests. End time=14:51:37.88, Exit code = 2 ``` +12820 area-System.Net Cleanup System.Net.Mail tests and source. cc @CIPop +12822 area-Infrastructure Putting back net46 specific dependencies (for Desktop Runs) By updating to fixed TestSuite and updating BuildToolsVersion (For publishtest.targets) @karajas @ericstj +12823 area-System.Runtime Add downlevel ValueTuple configuration Straight-up cherry-pick of https://github.com/dotnet/corefx/commit/f90b6a54113c45f55cfff1c0a754c458f6324ab2 /cc @jcouv @KevinRansom +12827 area-System.Threading Expose some Thread members - Implemented Thread type in CoreFX, so with this, Thread will no longer be type-forwarded to the runtime. It instead forwards selectively to the runtime through a RuntimeThread instance for functionality is currently strongly tied with the runtime. Some of this functionality may further be moved to CoreFX later. - S.Threading.Thread compiles against S.Private.CoreLib of the runtime for access to RuntimeThread, and due to type conflicts between CoreLib and CoreFX assemblies, uses project references to the CoreFX implementation projects and aliases where necessary to reference the intended public type Related to #11632, #11638 +12828 area-Serialization DataContractResolver ignored Hello, I'm developing a WCF service that is called from a WPF app and from an UWP app The service is full duplex (with netTcp binding) and it uses a custom DataContractResolver for dynamic types resolution All is ok when I call the service from the WPF app When I try to call the same service from a UWP app I get a SerializationException. It seems that the DataContractSerializer is ignored (no breakpoint is hit) The version of Microsoft.NETcore.UniversalWindowsPlatform is 5.2.2 I tried to use the beta version but the problem is stiil the same. The resolver is not called At the moment the only workaround for me is a custom DataContractSerializerOperationBehavior where I override the CreateSerializer method and I pass to it my Known types Thank you Ivan +12829 area-System.Security Modify OOM exeception check in 'System.System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests' Related issue: #12441 Additional out-of-memory exception in `System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.InvalidKeySizes` and `System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.InvalidIVSizes`. Because CreateEncryptor(key, iv) and CreateDecryptor(key, iv) uses Array.Clone() to array argument `iv`, we need to check OOM exception for cloned object. +12833 area-System.Security VerifyCrlCache failing intermittently in CI e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_osx_debug/40/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu14.04_release/39/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/37/ https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/outerloop_debian8.4_debug/12/ ``` System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.VerifyCrlCache [FAIL] Chain should not build validly Expected: False Actual: True Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug/src/System.Security.Cryptography.X509Certificates/tests/X509FilesystemTests.Unix.cs(63,0): at System.Security.Cryptography.X509Certificates.Tests.X509FilesystemTests.VerifyCrlCache() ``` cc: @bartonjs, @steveharter +12835 area-System.Net Make System.Net.WebHeaderCollection target ns1.7 /cc @stephentoub @danmosemsft @weshaggard +12836 area-Infrastructure Updating Coreclr Versions to beta-24620-03 cc: @tarekgh @stephentoub Manually updating coreclr version to unblock some folks. @dagood looks like the automatic PR's that update versions haven't been working since yesterday. Do you know what is going on? +12837 area-System.IO Improve error handling in BinaryReader/BinaryWriter +12838 area-System.Net Remove project refs from NetworkInformation after package update. "Remove the following two project references from src\System.Net.NetworkInformation.csproj once packages are produced: ``` `` ``` " +12839 area-System.Net Make NetworkInformation target ns1.7 While doing so I preserved the UWP build since it was significant. To do that I needed to make both Win32.Primitives and InteropServices expose their ns1.7 surface area to UAP10.1 via copying the impl. /cc @stephentoub @danmosemsft @weshaggard +12840 area-Serialization CreateMtomReaderWriterTest fail Test fail because all member in XmlMtomReader and XmlMtomWriter class are not implemented. +12843 area-System.Security Port System.Security.Cryptography.Algorithms.Rijndael and RijndaelMan… Address issue #9984 Port System.Security.Cryptography.RijndaelManaged, limited to AES Per the requirements, the two new types wrap\shim Aes and limit BlockSize to 128, unlike the Rijndael desktop types which also allow 192 and 256. @bartonjs please review +12845 area-Infrastructure Add UWP clrcompression build "The AOT netcore50 clrcompression (formerly represented by win10) is the only one that still needs to be built in TFS. This commit adds AppContainer support to the Windows native build and also ports some custom CRT code to circumvent undefined API errors and make it WACK-friendly. - The result of this is that a clrcompression built with /p:TargetGroup=netcore50 will have the APPCONTAINER bit set. - When also building in Release, the imports of the clrcompression will be a limited set of the usual imports that allows use of the dll to pass the WACK supported API check. - The import methods of the Release netcore50 clrcompression are identical to the corresponding clrcompression shipped out of TFS, though the latter imports ""api-ms-win-core*"" whereas the former imports ""kernel32"" and ""ole32"". - This commit will need to be merged alongside a TFS commit to remove clrcompression entirely from the ""PackagesToPublish"" group. - Also modifies the external package imports of the AOT packages to use the last stable version which is how we do it for the release branch. In the future we'll want to instead add it as a regular part of the build which will require adding it to the pipebuild on VSTS. replaces https://github.com/dotnet/corefx/pull/9448 resolves https://github.com/dotnet/corefx/issues/9710 @gkhanna79 @weshaggard @ericstj " +12846 area-System.Net Make System.Net.WebSockets target ns1.7 /cc @stephentoub @danmosemsft @weshaggard +12849 area-System.Net add missing System.Net.Security methods This fixes issue #12148. Most of these changes are minor -- exposing methods in the contract and/or making methods virtual. The exception is NegotiateStream.AuthenticateAsServer, which looks like it got missed in the initial port. I added this and fixed tests to use it properly. +12850 area-System.Threading Clean up 436 and aliases In System.Threading, System.Threading.Thread, and System.Runtime.Extensions. Remove types from CoreCLR where there are implementations in CoreFX, and clean up the aliases as far as possible. +12853 area-System.Net Move System.Net.RequestCachePolicy/Level down to System.Net.Primitives This allows us to remove the System.Xml dependency on System.Net.Requests. https://github.com/dotnet/corefx/issues/12184 cc: @weshaggard, @davidsh, @cipop +12854 area-Infrastructure Add checked in build definitions and pipeline.json "This change adds our VSTS build definitions to the corefx repo. Open to suggestions for a better folder name than ""infra"". @dagood @weshaggard @AlfredoMS " +12855 area-System.Runtime Test coverage for `System.Math` and `System.MathF` should be expanded. Currently the test coverage for `System.Math` and `System.MathF` is fairly sparse, to say the least. It should be expanded, at the very least, with the same set of tests that cover the native implementations in the CoreCLR PAL layer (which has a minimum of 20 tests per API and ensures that the interesting inputs are covered). As part of this work, the tests should also be converted to use the `[Theory]` attribute. +12857 area-System.IO Fix for Build 20161020-31 [My recent changes](https://github.com/dotnet/corefx/pull/12773) of adding MarshalByRef base class broke the official build with error: ``` error CS1690: Accessing a member on 'FileStream_Flush.StoreFlushArgFileStream.LastFlushArg' may cause a runtime exception because it is a field of a marshal-by-reference class. ``` cc: @weshaggard @joperezr +12858 area-Meta We should dynamicaly link into uCRT And only statically link the CRT startup code. +12859 area-System.Net Make System.Net.Http target ns1.7 /cc @stephentoub @danmosemsft @weshaggard Similar to NetworkInformation I preserved the UWP build as uap10.1. To do this I had to fix a number of libraries downstack due to type/version conflicts where folks updated libraries without cross-compiling/copying for uap10.1. I also had to fix up the test source because it was hitting a namespace conflict between System.Configuration and System.Net.Test.Common.Configuration. +12860 area-System.IO Override the synchronous Stream.CopyTo for other Streams Since `Stream.CopyTo` is now virtual, we should investigate overriding it for other Streams under `netcoreapp1.1`. For example, the ones in which @stephentoub suggested overriding the async version, like #12037 and #11573, could be candidates, although I'm not familiar with their implementation details. `FileStream` seems it could certainly benefit from overriding, since you can [see a `Buffer.BlockCopy` call](https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/FileStream.Win32.cs#L633) to the user-provided array. Same for `BufferedStream`. Dependent upon #12598 +12861 area-Meta Consider the AOT case for APIs that not supported on all platforms. https://github.com/dotnet/corefx/pull/12765 +12862 area-System.IO Align field names This aligns the names of the private fields to faciltate sharing common code. Moved CanRead/Write to common in this change- other than that is just renaming the fields. @ianhays +12863 area-System.Runtime Port Misc InteropServices APIs Port the following miscellenous InteropServices API Changes: M:System.Runtime.InteropServices.COMException.ToString M:System.Runtime.InteropServices.CriticalHandle.Close M:System.Runtime.InteropServices.HandleRef.op_Explicit(System.Runtime.InteropServices.HandleRef)~System.IntPtr M:System.Runtime.InteropServices.HandleRef.ToIntPtr(System.Runtime.InteropServices.HandleRef) +12864 area-Infrastructure Start running CoreFX tests against Mono Currently we run these tests against Desktop, Core, UWP on Windows, Unix, OSX where applicable. Now we have an increased focus on compatibility with Xamarin/Unity, we should consider having these tests run against Mono as well. +12866 area-System.Globalization "Revert ""Revert ""System.Globalization.Extensions cleanup""""" Reverts dotnet/corefx#12865 +12869 area-System.Security [release/1.1.0] Make derived types of SymmetricAlgorithm use field assignment in ctors. Aes and TripleDES both did assignments via virtual property setters in their ctor, which were field assignments in .NET Framework. 3rd party implementations may have written properties which assumed that the ctor had run to completion, and they are broken by that behavioral change. This change makes the ctors look like they do in net462, aside from when net462 sets fields which don't exist. It also makes the tests fail if virtual setter dispatch was utilized (for any currently defined property, at least). cherry-pick of 53455257f1dd9a55623798f00b8dbeafbf5b7118 and 207e52e8b851c621e1a8f2cea5002f42192ea1b4 to the release/1.1.0 branch, with master-only TODO comments removed. Port of #12800. Fixes #12079. cc: @steveharter @stephentoub +12870 area-System.Reflection Expose some System.Reflection.Assembly apis +12871 area-System.Net HttpClient: SSL connect error with client certificate "Hi I'm trying to do an https request using `HttpClient` ``` var clientHandler = new HttpClientHandler { ServerCertificateCustomValidationCallback = ServerCertificateCustomValidationCallback() }; if (caData != null) { var clientCertificate = new X509Certificate2(Encoding.ASCII.GetBytes(caData.CertPem)); clientHandler.ClientCertificates.Add(clientCertificate); } using (var c = new HttpClient(clientHandler)) { string requestUri = $""https://XXXXX""; HttpResponseMessage response = await c.GetAsync(requestUri); } ``` My nginx is configuring to accept client certificate if given, but it doesn't do the verification `ssl_verify_client optional_no_ca` (it's done somewhere else) nginx config: ``` server { listen 444; server_name localhost 127.0.0.1; root /var/www/htdocs; error_log /var/log/nginx/cws.error.log; ssl on; ssl_certificate /etc/ssl/XXXXX.crt; ssl_certificate_key /etc/ssl/private/XXXXXX.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:1m; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5:!RC4; ssl_prefer_server_ciphers on; ssl_verify_client optional_no_ca; } ``` When I use `HttpClient` with no client certificate: It works When I use `HttpClient` with a client certificate, it failed with the following error When I use `curl` (command line) both case works ``` Error while executing request ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL connect error at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` After looking into the code of corefx I finaly found more log with `perfcollect` ``` {\""workerId\"":0, \""requestId\"":0, \""memberName\"":\"".cctor\"", \""message\"":\""libcurl: 7.35.0 OpenSSL/1.0.1f CURL_VERSION_IPV6, CURL_VERSION_SSL, CURL_VERSION_LIBZ, CURL_VERSION_NTLM, CURL_VERSION_GSSNEGOTIATE, CURL_VERSION_ASYNCHDNS, CURL_VERSION_LARGEFILE, CURL_VERSION_IDN, CURL_VERSION_TLSAUTH_SRP, CURL_VERSION_NTLM_WB\""} strings sampleTrace2.trace/lttngTrace/auto-20161020-194235/ust/uid/1001/64-bit/channel0_* | grep Curl System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Queue`1[System.Net.Http.CurlHandler+MultiAgent+IncomingRequest] System.Collections.Generic.Queue`1[System.Net.Http.CurlHandler+MultiAgent+IncomingRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""FailRequest\"", \""message\"":\""Failing request: System.Net.Http.CurlException: SSL connect error\\n at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error)\\n at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult)\""} System.Collections.Generic.Queue`1[System.Net.Http.CurlHandler+MultiAgent+IncomingRequest] EmptyArray`1[System.Net.Http.CurlHandler+MultiAgent+IncomingRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Queue`1[System.Net.Http.CurlHandler+MultiAgent+IncomingRequest] {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Server key exchange (12):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_IN: 333 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Request CERT (13):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_IN: 42 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Server finished (14):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_IN: 4 bytes\""} System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] {\""objectA\"":\""System.Net.Http.CurlHandler+CurlResponseMessage\"", \""objectAHash\"":40889321, \""objectB\"":\""System.Net.Http.HttpRequestMessage\"", \""objectBHash\"":19650377} {\""objectA\"":\""System.Net.Http.StreamContent\"", \""objectAHash\"":34837044, \""objectB\"":\""System.Net.Http.CurlHandler+CurlResponseStream\"", \""objectBHash\"":34424014} {\""objectA\"":\""System.Net.Http.CurlHandler+CurlResponseMessage\"", \""objectAHash\"":40889321, \""objectB\"":\""System.Net.Http.StreamContent\"", \""objectBHash\"":34837044} System.Collections.Generic.Queue`1[System.Net.Http.CurlHandler+MultiAgent+IncomingRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: Hostname was NOT found in DNS cache\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: Trying 127.0.0.1...\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: Connected to 127.0.0.1 (127.0.0.1) port 444 (#0)\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: successfully set certificate verify locations:\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: CAfile: none\\n CApath: /etc/ssl/certs\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Client hello (1):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_OUT: 268 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Server hello (2):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_IN: 94 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, CERT (11):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_IN: 850 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, CERT (11):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_OUT: 7 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Client key exchange (16):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_OUT: 70 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS change cipher, Client hello (1):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_OUT: 1 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: SSLv3, TLS handshake, Finished (20):\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_SSL_DATA_OUT: 16 bytes\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: error:02001002:system library:fopen:No such file or directory\""} {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: Closing connection 0\""} System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] System.Collections.Generic.Dictionary`2[System.IntPtr,System.Net.Http.CurlHandler+MultiAgent+ActiveRequest] {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""FinishRequest\"", \""message\"":\""Curl result: 35\""} System.Net.Http.CurlException instance void [System.Net.Http] System.Net.Http.CurlHandler+MultiAgent::FinishRequest(class System.StrongToWeakReference`1,valuetype Interop/Http/CURLcode) ``` So ``` {\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""FinishRequest\"", \""message\"":\""Curl result: 35\""} ``` confirm that the ""problem is in curl"" due to curl result ``` 35 SSL connect error. The SSL handshaking failed. ``` So I read other logs from curl lib, and I found an error: `No such file or directory` `{\""workerId\"":379, \""requestId\"":378, \""memberName\"":\""CurlDebugFunction\"", \""message\"":\""CURLINFO_TEXT: error:02001002:system library:fopen:No such file or directory\""}` Then with `strace` I found which file was ""not found"" ``` [pid 32581] open(""XXXXX/.dotnet/corefx/cryptography/crls/bd2b1cbf.crl"", O_RDONLY) = -1 ENOENT (No such file or directory) ``` I tried to create it to see if it was really the ""missing file"" and then I got this error `error:0906D06C:PEM routines:PEM_read_bio:no start line` Now I don't know how to fix this error and make it work. I don't know why curl is trying to load crl, and from where come the filename `bd2b1cbf` " +12872 area-Meta Reduce packages This moves every project to latest stable packages if it wasn't already referencing something newer. This allows us to remove all imports. It will also speed up download time for those folks not in Redmond. This PR will get stale fast, (in fact a couple of my PRs will conflict), so let's hold off merging any version update PRs until its in. /cc @stephentoub @weshaggard @karajas +12873 area-System.Runtime Update S.R.InteropServices to ns2.0 ref #12162 This change updates S.R.InteropServices with all netstandard2.0 types that didn't require code changes in coreclr. +12874 area-Infrastructure Remove KeepAllProjectReferences=true from test projects Addresses https://github.com/dotnet/corefx/issues/7913 Building some of the test projects with `/p:BuildTestsAgainstPackages=true` threw errors and that's why `KeepAllProjectReferences=true` was added to keep the project references. This PR removes this property to make sure we can successfully build and run those tests with only referencing nupkg. **Note:** I wasn't able to remove that from the following as these were testing Internal classes. Any ideas on what should be done about these? ``` System.Diagnostics.Debug.Tests System.Linq.Expressions.Tests ``` cc: @weshaggard @danmosemsft @stephentoub @joperezr @chcosta +12877 area-System.IO Move FileStream field init into constructors Makes invariant fields readonly as they were in Unix impl. Folds some more common validation / member logic. @ericstj, @ianhays I'm going to make at least another pass, don't want to make the PRs too hard to follow. +12878 area-System.IO FileStream needs re-implemented for UAP10.1 `FileStream` is moving down to `System.Private.CoreLib`. The nested, multiplexing WinRT implementation we shipped with netcore5.0 needs re-implemented. It isn't straightforward as we don't cross-compile CoreLib and the WinRT PAL lives in CoreFX. Some discussion around this has already taken place in PR #12809. @jkotas, @ericstj, @ianhays +12881 area-System.Linq Separating NotInstruction and NullCheckInstruction to separate files Moving a few instructions to separate files for easy of discovery and for consistency. +12886 area-System.Net CI failure in NetworkAvailabilityChangedTests.NetworkAvailabilityChanged_JustRemove_Success See https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/2043/ for more details. +12887 area-System.Data Bring remaining System.Data.SqlClient.SqlBulkCopy members There are missing APIs from `System.Data.SqlClient.SqlBulkCopy` as seen in https://github.com/dotnet/standard/blob/bcf714ee4d6086d898fb7357972ae2827120ae7d/platforms/xamarin.ios/System.Data.cs#L2752, such as: ``` csharp public void WriteToServer(System.Data.DataRow[] rows) { } public void WriteToServer(System.Data.DataTable table) { } public void WriteToServer(System.Data.DataTable table, System.Data.DataRowState rowState) { } ``` It would be great if these could become available. +12888 area-System.Net Expose ICloneable in System.Net.Http Also took the opportunity to mark one of the exceptions as serializable. Fixes https://github.com/dotnet/corefx/issues/12199 Contributes to https://github.com/dotnet/corefx/issues/12725 cc: @danmosemsft, @davidsh, @cipop +12889 area-System.Net Fix TFS build of System.Net.WebClient.Tests Internal builds are failing with: ``` 2016-10-21T13:55:07.0700647Z WebClientTest.cs(25,28): error CS7069: Reference to type 'RequestCachePolicy' claims it is defined in 'System.Net.Requests', but it could not be found [D:\A\_work\55\s\corefx\src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj] 2016-10-21T13:55:07.0700647Z WebClientTest.cs(269,16): error CS7069: Reference to type 'RequestCachePolicy' claims it is defined in 'System.Net.Requests', but it could not be found [D:\A\_work\55\s\corefx\src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj] 2016-10-21T13:55:07.0700647Z WebClientTest.cs(270,31): error CS7069: Reference to type 'RequestCachePolicy' claims it is defined in 'System.Net.Requests', but it could not be found [D:\A\_work\55\s\corefx\src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj] 2016-10-21T13:55:08.3669554Z WebClientTest.cs(25,28): error CS7069: Reference to type 'RequestCachePolicy' claims it is defined in 'System.Net.Requests', but it could not be found [D:\A\_work\55\s\corefx\src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj] 2016-10-21T13:55:08.3669554Z WebClientTest.cs(269,16): error CS7069: Reference to type 'RequestCachePolicy' claims it is defined in 'System.Net.Requests', but it could not be found [D:\A\_work\55\s\corefx\src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj] 2016-10-21T13:55:08.3669554Z WebClientTest.cs(270,31): error CS7069: Reference to type 'RequestCachePolicy' claims it is defined in 'System.Net.Requests', but it could not be found [D:\A\_work\55\s\corefx\src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj] ``` Trying to fix it with temporary P2P references. cc: @weshaggard +12890 area-System.Security Change the cryptography shims to use direct package dependencies The use of runtime dependencies for the platform-specific native shims causes some upgrade complications. The design of the shared framework results in the dependency being considered to be satisfied even when a higher version was needed. So if someone has .NET Core 1.0 installed and pulls in a daily build of a cryptography library they might be missing native code changes that were assumed to be present as dependencies of the managed code. By changing to direct dependencies (changing the platform-specific package files to use IdPrefix instead of PackageTargetRuntime) the new .so files will be downloaded and deployed with the app (if they're a higher version that what is present in the shared framework). This is the master version for issue #12517. cc: @ericstj +12891 area-System.Reflection Finalize System.Reflection.Metadata public API surface for 1.1.0 release Since CoreFX 1.0.0 release we have added many new APIs to SRM to support Roslyn and other customers. We need to finalize these APIs for 1.1.0 as follows: - [x] Finish signature decoder - add generic context parameter and rationalize type provider interfaces - [x] Finish signing support in PEBuilder including PE checksum - [x] Finish new BlobReader public surface (IndexOf, Offset, SkipBytes, SeekOffset APIs) +12892 area-System.IO Add a more flexible special folder API The current `Environment.GetFolderPath()` is based on the pre Windows Vista `CSIDL` based `SHGetFolderPath`. This API was depreciated and doesn't have any of the special folders introduced in Vista and beyond. We've updated the internal implementation in CoreFX to use the new `SHGetKnownFolderPath`, which takes a Guid. If we exposed a Guid based API we would allow: 1. Accessing newer or user registered special folders in Windows without code updates 2. Creating entries that we map to some more abstract cross-plat concept 3. Allow adding mappings on different runtimes/platforms that don't require updating all of the others Something like the following: ``` C# public static class Environment { public static string GetFolderPath(Guid folderIdentifier) { } } public static class FolderGuids { // commonly used folder ids / concepts // potentially even have Windows/Unix specific class/subclass } ``` Adding values to the `SpecialFolder` enum can be complicated as there are assumptions baked into existing code that the values map directly to `CSIDL`'s. As such, the recommendation would be that the existing API be depreciated and the `Guid` API would be the primary. Behavior of asking for an unknown `Guid` would be the same as the existing API- we return `String.Empty`. I'll follow up shortly with a suggested set of predefined `Guid`s. +12893 area-System.Net System.Net.Security tests are broken when updating to the new coreclr When trying to update to the newest coreclr with PR #12836 some System.Net.Security tests started hanging. They all call the same API which launches a task that is awaited and apparently it never resolves. Tests that are in this state are: ``` SslStream_AuthenticateAsClientAsync_Supported_Success SslStream_AuthenticateAsClient_Supported_Success SslStream_AuthenticateAsClientAsync_AllSupported_Success SslStream_AuthenticateAsClientAsync_None_Success SslStream_AuthenticateAsClientAsync_Default_Success ``` I will disable those tests for now to unblock the coreclr update which some folks depend on, but this issue is to track why did those started failing. cc: @stephentoub @CIPop (people who have edited those tests) +12894 area-Meta Duplicate resource name warnings building on Unix "It looks like the Resgen/GenerateResource task on Unix flags these, but the one we get building on Windows does not (which would be nice to understand). Many of these are genuine duplicates that just need removing, but the componentmodel ones aren't - I haven't figured out why they're appearing as they don't seem to be dupes in the resx. ``` /home/dan/git/corefx/src/System.CodeDom/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""CodeDomProvider_NotDefined"" is not allowed, ignored. [/home/dan/git/corefx/src/System.CodeDom/src/System.CodeDom.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""BackgroundWorker_Desc"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""BackgroundWorker_WorkerDoesntReportProgress"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorBadExtenderType"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorInvalidEventHandler"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorInvalidEventType"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorInvalidPropertyType"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorInvalidServiceInstance"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorMissingEventAccessors"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorMissingPropertyAccessors"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorPropertyAccessorException"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""ErrorServiceExists"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""InvalidMemberName"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""InvalidNullArgument"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""MetaExtenderName"" is not allowed, ignored. [/home/dan/git/corefx/src/System.ComponentModel.TypeConverter/src/System.ComponentModel.TypeConverter.csproj] /home/dan/git/corefx/src/System.Private.Xml/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Xml_ErrorFilePosition"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Private.Xml/src/System.Private.Xml.csproj] /home/dan/git/corefx/src/System.Private.Xml/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Xml_InvalidOperation"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Private.Xml/src/System.Private.Xml.csproj] /home/dan/git/corefx/src/System.Private.Xml/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Xml_UserException"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Private.Xml/src/System.Private.Xml.csproj] /home/dan/git/corefx/src/System.Private.Xml/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Xslt_NoStylesheetLoaded"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Private.Xml/src/System.Private.Xml.csproj] /home/dan/git/corefx/src/System.Runtime.Extensions/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Arg_EnumIllegalVal"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj] /home/dan/git/corefx/src/System.Runtime.Extensions/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""UnknownError_Num"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj] /home/dan/git/corefx/src/System.Runtime.Serialization.Formatters/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Serialization_ObjectNotSupplied"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Runtime.Serialization.Formatters/src/System.Runtime.Serialization.Formatters.csproj] /home/dan/git/corefx/src/System.Runtime.Serialization.Formatters/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Serialization_ObjectTypeEnum"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Runtime.Serialization.Formatters/src/System.Runtime.Serialization.Formatters.csproj] /home/dan/git/corefx/src/System.Runtime.Serialization.Formatters/src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""Serialization_TypeLoadFailure"" is not allowed, ignored. [/home/dan/git/corefx/src/System.Runtime.Serialization.Formatters/src/System.Runtime.Serialization.Formatters.csproj] ``` " +12897 area-System.Net Fix incorrect assert in SystemUnicastIPAddressInformation As highlighted by @cipop here: https://github.com/dotnet/corefx/issues/12029#issuecomment-255460200 Fixes https://github.com/dotnet/corefx/issues/12029 +12901 area-Serialization IXmlMtomReaderWriterInitializerTest fail because of NotImplementedException All methods in XmlMtomWriter are not implemented. +12902 area-Serialization IXmlTextReaderInitializerTest fail Throw InvaidCastException when call the following code, which works on desktop version. XmlDictionaryWriter textWriter = XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8, false); IXmlTextWriterInitializer writerInitializer = (IXmlTextWriterInitializer)textWriter; +12903 area-Serialization Port #12407 to 1.1.0 - Reflection on XmlConvert Not Working in Net Native This issue is for tracking porting #12407 to release/1.1.0 branch. Issue: XmlSerializer's reflection based serialization uses reflection to find XmlConvert's method and invoke it. This fails in Net Native due to the metadata info of XmlConvert is reduced away. +12904 area-Serialization Port #12389 to 1.1.0 - JsonDataContract.GetGeneratedReadWriteDelegates May Throw ArgumentNullException This issue is for tracking porting #12389 to release/1.1.0 branch. Issue: JsonDataContract.GetGeneratedReadWriteDelegates may throw ArgumentNullException in NetNative. ``` -------------------------------- Running Test: DataContractJsonSerializerTests.DCJS_ValidateExceptionOnUnspecifiedRootSerializationType Caught Unexpected exception:System.ArgumentNullException: ArgumentNull_Generic Arg_ParamName_Name at System.Collections.Generic.Dictionary$2.FindEntry(__Canon key) in f:\dd\ndp\fxcore\src\ System.Collections\System\Collections\Generic\Dictionary.cs:line 266 at System.Collections.Generic.Dictionary$2.TryGetValue(__Canon key, __Canon& value) in f:\ dd\ndp\fxcore\src\System.Collections\System\Collections\Generic\Dictionary.cs:line 434 at System.Runtime.Serialization.Json.JsonDataContract.GetGeneratedReadWriteDelegates($DataContract c) at System.Runtime.Serialization.Json.JsonDataContract.TryGetReadWriteDelegatesFromGeneratedAssembly($DataContract c) at System.Runtime.Serialization.Json.JsonClassDataContract.get_JsonFormatWriterDelegate() at System.Runtime.Serialization.Json.JsonClassDataContract.WriteJsonValueCore($XmlWriterDelegator jsonWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue($XmlWriterDelegator jsonWriter, Object obj, $XmlObje ctSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteJsonValue($JsonDataContract contract, $XmlWriter Delegator writer, Object graph, $XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue($DataContract data Contract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType($DataContract dataContract, $XmlW riterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObjectContent($XmlWriterDelegator writer , Object graph) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObject($XmlWriterDelegator writer, Objec t graph) at System.Runtime.Serialization.XmlObjectSerializer.InternalWriteObject($XmlWriterDelegator writer, Object graph, $DataCo ntractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject($XmlDictionaryWriter writer, Object graph ) at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject(Stream stream, Object graph) at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(Stream stream, Object graph) at DataContractJsonSerializerTests.DCJS_ValidateExceptionOnUnspecifiedRootSerializationType() in d:\dd\ProjectN\src\QA\To F\tests\FX\Conformance\System.Runtime.Serialization.Json\4.0.0.0\DataContractJsonSerializer.NetNative.cs:line 36 at EntryPointMain.
b__69() in d:\dd\ProjectN\src\QA\ToF\PN\x86\dbg\IL\FX\Conformance\System.Runtime.Serialization.Js on\4.0.0.0\DataContractJsonSerializerTests.main.cs:line 118 at System.Action.InvokeOpenStaticThunk() at System.Action.Invoke() at CoreFXTestLibrary.Internal.Runner.RunTestMethod() in d:\dd\ProjectN\src\QA\ToF\tests\FX\Conformance\Common\Xunit\Inter nal\Runner.cs:line 170 at CoreFXTestLibrary.Internal.Runner.RunTest($TestInfo t) in d:\dd\ProjectN\src\QA\ToF\tests\FX\Conformance\Common\Xunit\ Internal\Runner.cs:line 95 ---- Test FAILED --------------- ``` +12905 area-System.Net Add Microsoft.Win32.Primitives package dependency for S.Net.Requests @geoffkizer looks like your PR https://github.com/dotnet/corefx/pull/12594 was missing this dependency. I'm not sure how CI ever passed without it. Perhaps there it was coming in transitively and isn't now at any rate the direct dependency should be included so here it is. +12906 area-Serialization Port #12389 to 1.1.0 - Fixed JsonDataContract.GetGeneratedReadWriteDelegates. Fixed the issue that JsonDataContract.GetGeneratedReadWriteDelegates may throw ArgumentNullException in NetNative. Fix #12904 cc: @zhenlan @mconnew @huanwu +12907 area-Serialization Porting #12407 to 1.1.0 - Fixed Reflection on XmlConvert Not Working in Net Native. The issue happens in Net Native only. The issue is that XmlConvert's metadata info by default is not kept by Net Native toolchain. This caused reflection on XmlConvert's methods not working. The fix is to call XmlConvert's methods directly instead of using reflection. Fix #12903 /cc: @mconnew @zhenlan @huanwu +12908 area-System.Net Failure in System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromV6BoundToSpecificV6_Success https://ci.dot.net/job/dotnet_corefx/job/release_1.1.0/job/centos7.1_debug_prtest/114/console ``` 14:43:58 System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromV6BoundToSpecificV6_Success [FAIL] 14:43:58 Assert.Throws() Failure 14:43:58 Expected: typeof(System.Exception) 14:43:58 Actual: (No exception was thrown) 14:43:58 Stack Trace: 14:43:58 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFrom_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) 14:43:58 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromV6BoundToSpecificV6_Success() 14:44:00 Finished: System.Net.Sockets.Tests 14:44:00 14:44:00 === TEST EXECUTION SUMMARY === 14:44:00 /mnt/resource/j/workspace/dotnet_corefx/release_1.1.0/centos7.1_debug_prtest/Tools/tests.targets(261,5): warning : System.Net.Sockets.Tests Total: 471, Errors: 0, Failed: 1, Skipped: 0, Time: 3.677s ``` +12909 area-Serialization Add multiple tests. Add tests for the following API. Lots of tests fail due to incomplete implementation. First version of tests and need more improvement and verification. T:System.Xml.Serialization.XmlTypeMapping T:System.Xml.Serialization.XmlSerializationReader T:System.Xml.Serialization.XmlSerializationWriter T:System.Runtime.Serialization.Json.JsonReaderWriterFactory M:System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas) M:System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonWriter(System.IO.Stream,System.Text.Encoding) T:System.Runtime.Serialization.XsdDataContractExporter T:System.Runtime.Serialization.XPathQueryGenerator T:System.Runtime.Serialization.ExtensionDataObject T:System.Runtime.Serialization.IExtensibleDataObject M:System.Xml.XmlDictionaryReader.ReadElementContentAsDateTime M:System.Xml.XmlDictionaryReader.CreateMtomReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas) M:System.Xml.XmlDictionaryWriter.CreateMtomWriter(System.IO.Stream,System.Text.Encoding,System.Int32,System.String) M:System.Xml.XmlDictionaryReader.CreateTextReader(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IStreamProvider M:System.Xml.IStreamProvider.GetStream M:System.Xml.IStreamProvider.ReleaseStream(System.IO.Stream) M:System.Xml.XmlDictionaryWriter.WriteBase64Async(System.Byte[],System.Int32,System.Int32) M:System.Xml.XmlDictionaryWriter.WriteValueAsync(System.Xml.IStreamProvider) M:System.Xml.XmlDictionaryWriter.WriteValue(System.Xml.IStreamProvider) M:System.Xml.XmlDictionaryWriter.WriteBase64Async(System.Byte[],System.Int32,System.Int32) T:System.Xml.IXmlBinaryReaderInitializer M:System.Xml.IXmlBinaryReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlBinaryWriterInitializer M:System.Xml.IXmlBinaryWriterInitializer.SetOutput(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean) T:System.Xml.IXmlMtomWriterInitializer M:System.Xml.IXmlMtomWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) T:System.Xml.IXmlMtomReaderInitializer M:System.Xml.IXmlMtomReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding[],System.String,System.Xml.XmlDictionaryReaderQuotas,System.Int32,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlMtomWriterInitializer M:System.Xml.IXmlMtomWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Int32,System.String,System.String,System.String,System.Boolean,System.Boolean) T:System.Xml.IXmlTextReaderInitializer M:System.Xml.IXmlTextReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) T:System.Xml.IXmlTextWriterInitializer M:System.Xml.IXmlTextWriterInitializer.SetOutput(System.IO.Stream,System.Text.Encoding,System.Boolean) T:System.Xml.IXmlTextReaderInitializer M:System.Xml.IXmlTextReaderInitializer.SetInput(System.Byte[],System.Int32,System.Int32,System.Text.Encoding,System.Xml.XmlDictionaryReaderQuotas,System.Xml.OnXmlDictionaryReaderClose) @shmao @zhenlan @mconnew +12910 area-System.Runtime Implement the missing members in the System.Runtime.CompilerServices … …namespace for netstandard2.0 Fixes #12257 +12912 area-System.Collections Test failure: System.Collections.Concurrent.Tests.BlockingCollectionTests/TestDebuggerAttributes Opened on behalf of @venkat-raman251 The test `System.Collections.Concurrent.Tests.BlockingCollectionTests/TestDebuggerAttributes` has failed. System.InvalidOperationException : The API 'System.Collections.Concurrent.BlockingCollection`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].m_collection' cannot be used on the current platform. See http://go.microsoft.com/fwlink/?LinkId=248273 for more information. ``` Stack Trace: at System.Reflection.RtFieldInfo.InternalGetValue(Object obj, StackCrawlMark& stackMark) at System.Reflection.RtFieldInfo.GetValue(Object obj) at System.Diagnostics.DebuggerAttributes.ValidateDebuggerDisplayReferences(Object obj) in D:\A\_work\22\s\corefx\src\Common\tests\System\Diagnostics\DebuggerAttributes.cs:line 122 at System.Collections.Concurrent.Tests.BlockingCollectionTests.TestDebuggerAttributes() in D:\A\_work\22\s\corefx\src\System.Collections.Concurrent\tests\BlockingCollectionTests.cs:line 176 ``` Build : Master - 20161014.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug +12913 area-System.Diagnostics Microsoft.DiaSymReader.Native.x86.dll ends up in nuget package "Microsoft.DiaSymReader.Native 1.4.0 includes a .props file as included below. This includes a condition `!Exists('project.json') AND !Exists('$(MSBuildProjectName).project.json')`. The deprecation of project.json means that when users upgrade from a project.json build system to a MSBuild system (and thus deletes project.json), this .props file will include Microsoft.DiaSymReader.Native.{arch}.dll as 'content' in all projects using the .NET Core SDK. Example: dotnet build3 on a netcoreapp will copy the file to the output directory ``` _CopyOutOfDateSourceItemsToOutputDirectory: Copying file from ""C:\Users\namc\.nuget\packages\microsoft.diasymreader.native\1.4.0\runtimes\win\native\Microsoft.DiaSymReader.Native.x86.dll"" to ""bin\Debug\netcoreapp1.0\Microsoft.DiaSymReader.Native.x86.dll"". Copying file from ""C:\Users\namc\.nuget\packages\microsoft.diasymreader.native\1.4.0\runtimes\win\native\Microsoft.DiaSymReader.Native.amd64.dll"" to ""bin\Debug\netcoreapp1.0\Microsoft.DiaSymReader.Native.amd64.dll"". ``` The extra file in the output directory may be harmless for ""dotnet run"", but it's still wrong for .NET Core projects which resolve native assets from the nuget cache. **The worse problem is ""dotnet pack3""**, which includes all 'content' items. This means Microsoft.DiaSymReader.Native.x86.dll and Microsoft.DiaSymReader.Native.amd64.dll will end up in the nuget package of anyone performing ""dotnet pack3"" on a csproj that uses Microsoft.NETCore.App. The offending props file, from .nuget\packages\microsoft.diasymreader.native\1.4.0\build\microsoft.diasymreader.native.props ``` xml PreserveNewest false PreserveNewest false ``` cc @emgarten @piotrpMSFT " +12914 area-System.Net Implement missing methods from WebHeaderCollection Fixes https://github.com/dotnet/corefx/issues/12139 Make WebHeaderCollection derive from NameValueCollection and implement ISerializable interface.Instead of copying the whole file from FX , this change adapt the current implementation to add the required methods. +12915 area-System.Collections API Proposal: Adding Array.IndexOf and LastIndexOf overloads that accept a comparer. ## Background Currently, `Array.IndexOf` does not accept a comparer parameter and uses the default equality comparer. This means that people who want to find a value in an array with a custom comparer (e.g. a collection type that accepts an `IEqualityComparer`) typically resort to using for-loops or LINQ to find the value. These solutions are - slower than calling `Array.IndexOf` directly since it is specialized in such a way to avoid virtual method calls, so optimal implementations have to do something like [`ImmutableArray`](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs#L360) where they check if the comparer is the default comparer and use `IndexOf` if that's the case, and otherwise fall back to a for-loop. - not as readable as just using `IndexOf`, but currently necessary since it doesn't accept a comparer. ## Proposal We should simply add overloads to `IndexOf` and `LastIndexOf` that accept comparers. ``` cs namespace System { public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable { public static int IndexOf(T[] array, T value, IEqualityComparer comparer); public static int IndexOf(T[] array, T value, int startIndex, IEqualityComparer comparer); public static int IndexOf(T[] array, T value, int startIndex, int count, IEqualityComparer comparer); public static int LastIndexOf(T[] array, T value, IEqualityComparer comparer); public static int LastIndexOf(T[] array, T value, int startIndex, IEqualityComparer comparer); public static int LastIndexOf(T[] array, T value, int startIndex, int count, IEqualityComparer comparer); } } ``` +12916 area-System.Net Port remaining methods in CookieCollection and CookieContainer Fixes https://github.com/dotnet/corefx/issues/12125 The required methods already exists , but were internal. This change just expose them from the public contracts. +12917 area-System.Net Port System.Net.WebSockets.WebSocketException missing members Fixes #12150 Adding Overridden GetObjectData(..) +12919 area-System.Reflection Consolidate TypeBuilder.Define* tests Makes it easier to add new tests without duplicating test data everywhere /cc @AtsushiKan @stephentoub +12921 area-System.Runtime Type.GetRuntimeMethod returns wrong method "``` cs [Test] public void GetRuntimeMethodTest() { var type = typeof(Int64?); var paremeterType = typeof(int); var method = type.GetRuntimeMethod(""op_Implicit"", new[] {paremeterType}); Assert.AreEqual(paremeterType, method.GetParameters()[0].ParameterType); } ``` in this case `GetRuntimeMethod` returns method with `Int64` parameter, while I'm looking for `Int32` " +12922 area-System.Linq Don't allow Expression.Parameter and Expression.Variable to have open generic types Fixes #8081 /cc @stephentoub @bartdesmet @svick @vsadov +12923 area-System.Net Fix null reference exception in NetworkAvailabilityChanged on Linux If NetworkAddressChanged has a subscriber and NetworkAvailabilityChanged doesn't, attempting to remove a delegate from NetworkAvailabilityChanged results in a NullReferenceException as a null timer static field is dereferenced. This was failing intermittently in tests because the NetworkAddressChanged and NetworkAvailabilityChanged tests were in different classes and thus could potentially run in parallel. If the NetworkAvailabilityChanged_JustRemove_Success test ran while one of the NetworkAddressChanged tests was in flight, it would fail with a null ref. I've fixed the product bug by adding a null check. I've also updated the tests so that all of these event handler tests are in the same class, and added explicit tests for this case that will deterministically fail if the product regresses. Fixes https://github.com/dotnet/corefx/issues/12886 cc: @mellinoe, @davidsh, @cipop +12924 area-System.Net Workaround compiler warning in test UnixGssFakeNegotiateStream class Simple change to avoid passing this _context field by ref to suppress the warning: ``` 2016-10-22T01:52:17.1092891Z UnixGssFakeNegotiateStream.cs(57,66): error CS0197: Using 'UnixGssFakeNegotiateStream._context' as a ref or out value or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class [D:\A\_work\32\s\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] ``` cc: @weshaggard, @safern +12925 area-System.Net Create and use System.Net.ServicePoint assembly - Creates a new System.Net.ServicePoint contract - Changes System.Net.Requests and System.Net.Mail to depend on it - Moves ServicePoint, ServicePointManager, BindIPEndPoint, and SecurityProtocolType down into it from System.Net.Requests - Deletes the obsolete ICertificatePolicy and associated ServicePointManager.CertificatePolicy member that were preventing this separation - Adds ServicePoint property back to SmtpClient, now that the type is available to System.Net.Mail, and provides a basic implementation - Changes the internal TlsStream (used by SmtpClient and FtpWebRequest) to respect ServicePointManager.ServerCertificateValidationCallback, ServicePointManager.CheckCertificateRevocationList, and ServicePointManager.SecurityProtocol - Fixes HttpWebRequest to respect ServicePointManager.SecurityProtocol - Fixes FtpWebRequest to cache its ServicePoint instance Fixes https://github.com/dotnet/corefx/issues/12774 cc: @davidsh, @cipop, @weshaggard, @geoffkizer, @Priya91, @ericeil, @tijoytom +12926 area-System.Security "RC2CipherTests failing on Win7 with ""unknown error""" "e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/42/consoleText ``` System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2ReuseEncryptorDecryptor [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(176,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2ReuseEncryptorDecryptor() System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2ExplicitEncryptorDecryptor_WithIV [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(214,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2ExplicitEncryptorDecryptor_WithIV() System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: ECB, paddingMode: None, key: \""3000000000000000\"", iv: null, textHex: \""1000000000000001\"", expectedDecrypted: null, expectedEncrypted: \""30649EDF9BE7D2C2\"") [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: ECB, paddingMode: None, key: \""FFFFFFFFFFFFFFFF\"", iv: null, textHex: \""FFFFFFFFFFFFFFFF\"", expectedDecrypted: null, expectedEncrypted: \""278B27E42E2F0D49\"") [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: ECB, paddingMode: None, key: \""88bca90e90875a7f0f79c384627bafb2\"", iv: null, textHex: \""0000000000000000\"", expectedDecrypted: null, expectedEncrypted: \""2269552ab0f85ca6\"") [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: ECB, paddingMode: None, key: \""87FF0737F868378F\"", iv: null, textHex: \""5468697320697320612073656E74656E636520746861742069\""..., expectedDecrypted: null, expectedEncrypted: \""F6DF2E83811D6CB0C8A5830069D16F6A51C985D70038525390\""...) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: ECB, paddingMode: PKCS7, key: \""87FF0737F868378F\"", iv: null, textHex: \""5468697320697320612073656E74656E636520746861742069\""..., expectedDecrypted: null, expectedEncrypted: \""F6DF2E83811D6CB0C8A5830069D16F6A51C985D70038525390\""...) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: ECB, paddingMode: Zeros, key: \""87FF0737F868378F\"", iv: null, textHex: \""5468697320697320612073656E74656E636520746861742069\""..., expectedDecrypted: \""5468697320697320612073656E74656E636520746861742069\""..., expectedEncrypted: \""F6DF2E83811D6CB0C8A5830069D16F6A51C985D70038525390\""...) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: CBC, paddingMode: None, key: \""87FF0737F868378F\"", iv: \""E531E789E3E1BB6F\"", textHex: \""5468697320697320612073656E74656E636520746861742069\""..., expectedDecrypted: null, expectedEncrypted: \""85B5D998F35ECD98DB886798170F64BA2DBA4FE902791CDE90\""...) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: CBC, paddingMode: PKCS7, key: \""87FF0737F868378F\"", iv: \""E531E789E3E1BB6F\"", textHex: \""5468697320697320612073656E74656E636520746861742069\""..., expectedDecrypted: null, expectedEncrypted: \""85B5D998F35ECD98DB886798170F64BA2DBA4FE902791CDE90\""...) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(cipherMode: CBC, paddingMode: Zeros, key: \""87FF0737F868378F\"", iv: \""E531E789E3E1BB6F\"", textHex: \""5468697320697320612073656E74656E636520746861742069\""..., expectedDecrypted: \""5468697320697320612073656E74656E636520746861742069\""..., expectedEncrypted: \""85B5D998F35ECD98DB886798170F64BA2DBA4FE902791CDE90\""...) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor() d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\CryptoUtils.cs(16,0): at Test.Cryptography.CryptoUtils.Encrypt(SymmetricAlgorithm alg, Byte[] plainText, Int32 blockSizeMultipler) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(158,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2RoundTrip(CipherMode cipherMode, PaddingMode paddingMode, String key, String iv, String textHex, String expectedDecrypted, String expectedEncrypted) System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2ExplicitEncryptorDecryptor_NoIV [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Unknown error (0xc10000bb) Stack Trace: at Internal.NativeCrypto.Cng.SetEffectiveKeyLength(SafeKeyHandle hAlg, Int32 effectiveKeyLength) at Internal.Cryptography.BasicSymmetricCipherBCrypt..ctor(SafeAlgorithmHandle algorithm, CipherMode cipherMode, Int32 blockSizeInBytes, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransformCore(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Int32 effectiveKeyLength, Byte[] iv, Int32 blockSize, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateTransform(Byte[] rgbKey, Byte[] rgbIV, Boolean encrypting) at Internal.Cryptography.RC2Implementation.CreateEncryptor(Byte[] rgbKey, Byte[] rgbIV) d:\j\workspace\outerloop_win---b280fd23\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RC2\RC2CipherTests.cs(233,0): at System.Security.Cryptography.Encryption.RC2.Tests.RC2CipherTests.RC2ExplicitEncryptorDecryptor_NoIV() ``` cc: @steveharter, @bartonjs " +12927 area-Infrastructure Code coverage is broken As can be seen in the latest report, it's only providing coverage for a single assembly out of 143 built. http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ It's at least partially related to https://github.com/dotnet/buildtools/issues/1144, but I expect there are issues beyond that, as when that issue was opened, the code coverage report was showing coverage for more than just one assembly. cc: @karelz, @weshaggard, @MattGal, @mmitche +12928 area-System.Net Fix CredentialCache arg names in implementation "The names of arguments to several CredentialCache members are different between the CredentialCache implementation and the CredentialCache in the ref contract (the one in the ref contract is ""correct"" in that it matches both what's in desktop and what's in netstandard). Since the contract is correct, this isn't actually visible for a dev using the contract, but it is for a few exception types that end up including the name of the argument. To match desktop (and to make sense to the dev), the exceptions should contain the name used in the ref contract. Fixes https://github.com/dotnet/corefx/issues/12126 cc: @weshaggard, @davidsh, @cipop " +12929 area-System.Reflection Add EnumBuilder tests Continuing my break-all-the-things foray into the coreclr runtime, I present some more EnumBuilder tests! /cc @stephentoub @AtsushiKan +12930 area-System.Net Add missing NetworkInformation members - Fixed NetworkInformationException to derive from Win32Exception and override ErrorCode in contract - Fixed Ping to override Dispose in contract - Added NetworkInformationAccess, NetworkInformationPermission, and NetworkInformationPermissionAttribute to CAS compat lib Fixes https://github.com/dotnet/corefx/issues/12147 cc: @davidsh, @cipop, @ericeil, @weshaggard @weshaggard, the only thing I didn't do from the linked issue was make NetworkChange static, as although it could be and is listed as such in netstandard, it's not in desktop. Please let me know if it should be marked as static in the ref/src here. +12932 area-System.Net Consider making the echo test servers able to not pickup websocket data. "I've been trying to tighten a couple of WebSocket tests (specifically that [multiple outstanding `SendAsync` calls throws an exception](https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/tests/SendReceiveTest.cs#L85)), but ended up running into a problem: The internal, lower-level buffering means the data gets picked up, regardless of the delay in the server `Receive`ing the data. That is, in this: ```c# await cws.SendAsync( WebSocketData.GetBufferFromText("".delay5sec""), WebSocketMessageType.Text, true, CancellationToken.None); DateTime snd = DateTime.UtcNow; await cws.SendAsync( // second send WebSocketData.GetBufferFromText(""send buffer""), WebSocketMessageType.Text, true, CancellationToken.None); TimeSpan sndTime = DateTime.UtcNow - snd; DateTime rcv = DateTime.UtcNow; await cws.ReceiveAsync(WebSocketData.GetBufferFromText(""receive buffer""), CancellationToken.None); TimeSpan rcvTime = DateTime.UtcNow - rcv; ``` ... the second send completes almost instantaneously, while the receive delays 5 seconds. I need the opposite - that the _send_ delays 5 seconds, then the subsequent receive completes instantly. Note that my current assumption is that there's an underlying task on the server accepting reads even if the actual process is delayed for the 5 seconds, and thus I'm assuming we need a way to delay at a lower/outer level. If I'm wrong (like, if the data may also be buffered on the sender side, and thus not something the test may be able to handle), please educate me. " +12934 area-System.Globalization TestGetAsciiWithDot failing on several OSes @Clockwork-Muse, @tarekgh https://ci.dot.net/job/dotnet_corefx/job/master/job/opensuse42.1_release/384/ https://ci.dot.net/job/dotnet_corefx/job/master/job/opensuse42.1_debug/388/ ``` System.Globalization.Tests.IdnMappingGetAsciiTests.TestGetAsciiWithDot [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: (No exception was thrown) ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora23_debug/449/ https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora23_release/450/ ``` System.ArgumentException : Decoded string is not a valid IDN name. Parameter name: unicode Stack Trace: at System.Globalization.IdnMapping.GetAsciiCore(Char* unicode, Int32 count) at System.Globalization.IdnMapping.GetAscii(String unicode, Int32 index, Int32 count) at System.Globalization.IdnMapping.GetAscii(String unicode, Int32 index) at System.Globalization.IdnMapping.GetAscii(String unicode) /mnt/resource/j/workspace/dotnet_corefx/master/fedora23_debug/src/System.Globalization.Extensions/tests/IdnMapping/IdnMappingGetAsciiTests.cs(101,0): at System.Globalization.Tests.IdnMappingGetAsciiTests.TestGetAsciiWithDot() ``` I'll refer to my comment on the original PR: https://github.com/dotnet/corefx/pull/12783#discussion_r84326703 This is exactly the kind of wheel-spinning I wanted to avoid. I would have preferred if the test remained as it was. +12935 area-System.Net Improve performance of SslStream reading and writing This PR makes a significant dent in the allocations incurred while reading/writing an SslStream (though there is still more that can and should be done). I wrote a simple benchmark that creates a producer and a consumer, where the producer WriteAsyncs 10K 1024 byte buffers to an SslStream, and a consumer reads with 1024 byte buffers until all data is consumed. To try to keep things isolated from the rest of the networking stack (as some common types are shared, making analysis more difficult), the SslStreams wrap NamedPipeServer/ClientStreams. Prior to this change, the allocations end up looking like this: ![image](https://cloud.githubusercontent.com/assets/2642209/19627173/0e937eb8-990f-11e6-8ee4-72fcc3988fed.png) This PR does two things: 1. It removes some of the Task-related costs by switching away from using Task.Factory.FromAsync in SslStream.WriteAsync/ReadAsync. When Stream didn't provide the Begin/EndRead/Write methods in the contract, SslStream's Begin/End methods were internal, and the implementation of Read/WriteAsync used FromAsync to delegate to them. But the base Stream's Read/WriteAsync overloads have an optimized implementation for delegating to the Begin/End methods, taking advantage of some Task internals. Now that Stream does expose Begin/EndRead/Write and SslStream overrides those, we can remove the FromAsync calls and just let the base stream do its thing. (In the future, we can improve on this further by avoiding going through Begin/End at all, but for now this simple change improves the allocation profile.) 2. On Windows, every call to EncryptMessage and DecryptMessage ends up going through a generic helper for dealing with SSPI. The interface to these methods uses only safe code, so arrays of classes end up getting passed, and ends up having to do lots of expensive things in order to deal with arbitrary inputs. But the encrypt/decrypt operations are relatively simple, and we can avoid all of those costs by just going to the SSPI calls directly. Previously, every encrypt/decrypt call would allocate 4 SecurityBuffer instances, a SecurityBuffer[4] array, a SecBuffer[4] array, a GCHandle[4] array, a byte[4][] array, and a SecBufferDesc... after this change, all of those except for the SecBufferDesc are gone. With these changes, a new profile of the same scenario looks like: ![image](https://cloud.githubusercontent.com/assets/2642209/19627225/0d05f6e2-9910-11e6-90e9-4e40a901f795.png) reducing allocation numbers/size by ~70%. Throughput also increased by ~15%. The remaining allocations after this change are: - The SecBufferDesc allocated in EncryptMessage/DecryptMessage. (We can get rid of that by changing the type to a struct and changing the interface to take a `SecBufferDesc*` (it can't be a `ref SecBufferDesc` as we need to be able to pass in `null`). That impacts a lot of code paths, though, so I haven't done it in this change.) - The Task returned from ReadAsync/WriteAsync. (The one from ReadAsync is mostly unavoidable, but if we rewrite the implementation with async/await, if the underlying write operation completes synchronously, we should be able to avoid the task returned from WriteAsync.) - A BufferAsyncResult, AsyncProtocolRequest, and boxed Int32 for each read operation. (By rewriting these methods with async/await, we should be able to eliminate the boxed Int32 entirely, and replace the other two with smaller allocations associated with the async state machine, removing them altogether if the operation completes synchronously.) - A LazyAsyncResult and an AsyncProtocol Request for each write operation. (Same possibilities as above.) We can then further reduce these for the CopyToAsync scenario by ammortizing most of the read-related costs. (The ReadWriteTask allocations showing up in all of the traces are from the named pipe streams and can be ignored for the purposes of this PR.) Contributes to https://github.com/dotnet/corefx/issues/11826 cc: @davidsh, @cipop, @ericeil, @bartonjs, @davidfowl, @benaadams +12937 area-System.Net CurlHttpHandler throws exception when http status >= 600 "When parsing response headers CurlHttpHandler throws HttpRequestException when http status >= 600. Specifically relevant line is [here](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Net.Http/src/System/Net/Http/Unix/CurlResponseHeaderReader.cs#L46) . This produces different behavior when running on windows platform (when WinHttpHandler is used, which doesn't implements such explicit validation) and on linux platform (when CurlHttpHandler is used). Expected behavior: should be identical on both platforms. Leave to client an option to call response.EnsureSuccessStatusCode() to validate the status code. Example code: ``` cs public static void Main(string[] args) { var tasks = new[] { 90, 99, 200, 300, 400, 500, 600, 700, 800, 900, 999, 1000, 1100 } .Select(r => new { Status = r, Task = Task.Run(async () => { try { using (var client = new HttpClient()) { var response = await client.GetAsync($""https://httpbin.org/status/{r}""); return $""response status: {response.StatusCode}""; } } catch (HttpRequestException e) { return $""exception: {e.Message}""; } })}) .ToArray(); foreach (var t in tasks) { t.Task.Wait(5000); Console.WriteLine($""For status {t.Status} got {t.Task.Result}""); } Console.ReadKey(); } ``` Output on Windows: ``` For status 90 got exception: An error occurred while sending the request. For status 99 got exception: An error occurred while sending the request. For status 200 got response status: OK For status 300 got response status: MultipleChoices For status 400 got response status: BadRequest For status 500 got response status: InternalServerError For status 600 got response status: 600 For status 700 got response status: 700 For status 800 got response status: 800 For status 900 got response status: 900 For status 999 got response status: 999 For status 1000 got exception: An error occurred while sending the request. For status 1100 got exception: An error occurred while sending the request. ``` Output on Linux: ``` For status 90 got exception: The server returned an invalid or unrecognized response. For status 99 got exception: The server returned an invalid or unrecognized response. For status 200 got response status: OK For status 300 got response status: MultipleChoices For status 400 got response status: BadRequest For status 500 got response status: InternalServerError For status 600 got exception: The server returned an invalid or unrecognized response. For status 700 got exception: The server returned an invalid or unrecognized response. For status 800 got exception: The server returned an invalid or unrecognized response. For status 900 got exception: The server returned an invalid or unrecognized response. For status 999 got exception: The server returned an invalid or unrecognized response. For status 1000 got exception: The server returned an invalid or unrecognized response. For status 1100 got exception: The server returned an invalid or unrecognized response. ``` " +12938 area-System.Net Mandatory http response status should be 100..1000 To have same behavior as WinHttpHandler. Related issue: https://github.com/dotnet/corefx/issues/12937 +12939 area-System.Net Unhandled exception in System.Net.Security tests on Windows https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/64/consoleText ``` Unhandled Exception: System.InvalidOperationException: This operation is only allowed using a successfully authenticated context. at System.Net.Security.SslState.CheckThrow(Boolean authSuccessCheck, Boolean shutdownCheck) at System.Net.Security.SslState.get_SecureStream() at System.Net.Security.SslStream.EndRead(IAsyncResult asyncResult) at System.Net.Security.Tests.DummyTcpServer.OnReceive(IAsyncResult result) in D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\tests\FunctionalTests\DummyTcpServer.cs:line 202 at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.LazyAsyncResult.InvokeCallback(Object result) at System.Net.AsyncProtocolRequest.CompleteUser(Object userResult) at System.Net.Security.SslStreamInternal.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStreamInternal.ReadHeaderCallback(AsyncProtocolRequest asyncRequest) at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.ContextAwareResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) ``` cc: @davidsh, @cipop +12940 area-System.Net Test failure: System.Net.Tests.FtpWebRequestTest/GetResponse_ServerNameNotInDns_ThrowsWebException Opened on behalf of @jiangzeng The test `System.Net.Tests.FtpWebRequestTest/GetResponse_ServerNameNotInDns_ThrowsWebException` has failed. Assert.Equal() Failure\r Expected: NameResolutionFailure\r Actual: ConnectFailure ``` Stack Trace: at System.Net.Tests.FtpWebRequestTest.GetResponse_ServerNameNotInDns_ThrowsWebException() ``` Build : Master - 20161023.01 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161023.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.FtpWebRequestTest~2FGetResponse_ServerNameNotInDns_ThrowsWebException +12941 area-System.Runtime Deserialization callback order in System.Runtime.Serialization.ObjectManager "The object listed here throws a Null reference exception on deserialization because the deserialization callbacks are raised from the outer object and then works its way in (causing an outer object to access an inner object that's not initialized yet.) Is this by design or a bug? ` var d = new Dictionary,string>(HashSet.CreateSetComparer()); d.Add(new HashSet() {""a""}, ""a"" ); d.Add(new HashSet() {""b""}, ""b""); ` See possible change to fix this in ObjectManager below: ``` internal virtual void AddOnDeserialization(DeserializationEventHandler handler) { // delete m_onDeserializationHandler = (DeserializationEventHandler)Delegate.Combine(m_onDeserializationHandler, handler); // add m_onDeserializationHandler = (DeserializationEventHandler)Delegate.Combine(handler, m_onDeserializationHandler); } ``` " +12943 area-System.Linq System.Linq.Expressions factories throw NullReferenceException with global fields and global methods "Consider the following test class I put together of all instances. I will submit a PR fixing these bugs if it you guys approve, so please let me know. Here I've used RefEmit to produce the global fields/methods, as C# doesn't support them ``` public class GlobalMethodGlobalField { [Fact] public void AndAlso_GlobalMethod_ThrowsNullReferenceException() { MethodInfo method = GlobalMethod(typeof(int), new Type[] { typeof(int), typeof(int) }); Assert.Throws(() => Expression.AndAlso(Expression.Constant(1), Expression.Constant(2), method)); } [Fact] public void Bind_GlobalMethod_ThrowsNullReferenceException() { Assert.Throws(() => Expression.Bind(GlobalMethod(typeof(int), new Type[0]), Expression.Constant(""abc""))); } [Fact] public void Default_TypeBuilder_CreateLambda_ThrowsNotSupportedException() { AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(""Assembly""), AssemblyBuilderAccess.Run); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(""Module""); TypeBuilder typeBuilder = moduleBuilder.DefineType(""Type""); DefaultExpression defaultExpression = Expression.Default(typeBuilder.AsType()); Assert.Throws(() => Expression.Lambda(defaultExpression)); LambdaExpression genericLambda = Expression.Lambda>(defaultExpression); Assert.Null(genericLambda.Compile()); } [Fact] public void ListBind_GlobalMethod_ThrowsNullReferenceException() { Assert.Throws(() => Expression.ListBind(GlobalMethod(typeof(int), new Type[0]), new ElementInit[0])); Assert.Throws(() => Expression.ListBind(GlobalMethod(typeof(int), new Type[0]), (IEnumerable)new ElementInit[0])); } [Fact] public void MemberBind_GlobalMethod_ThrowsNullReferenceException() { Assert.Throws(() => Expression.MemberBind(GlobalMethod(typeof(int), new Type[0]), new MemberBinding[0])); Assert.Throws(() => Expression.MemberBind(GlobalMethod(typeof(int), new Type[0]), (IEnumerable)new MemberBinding[0])); } [Fact] public void MemberBind_GlobalFieldInBindings_ThrowsNullReferenceException() { MemberBinding[] bindings = new MemberBinding[] { Expression.MemberBind(GlobalField()) }; Assert.Throws(() => Expression.MemberBind(GlobalField(), bindings)); Assert.Throws(() => Expression.MemberBind(GlobalField(), (IEnumerable)bindings)); } [Fact] public void New_GlobalMethodInMembers_ThrowsNullReferenceException() { ConstructorInfo constructor = typeof(ClassWithConstructor).GetConstructor(new Type[] { typeof(int) }); Expression[] arguments = new Expression[] { Expression.Constant(5) }; MemberInfo[] members = new MemberInfo[] { GlobalMethod(typeof(int), new Type[0]) }; Assert.Throws(() => Expression.New(constructor, arguments, members)); } [Fact] public void New_GlobalFieldInMembers_ThrowsNullReferenceException() { ConstructorInfo constructor = typeof(ClassWithConstructor).GetConstructor(new Type[] { typeof(int) }); Expression[] arguments = new Expression[] { Expression.Constant(5) }; MemberInfo[] members = new MemberInfo[] { GlobalField() }; Assert.Throws(() => Expression.New(constructor, arguments, members)); } [Fact] public void OrElse_GlobalMethod_ThrowsNullReferenceException() { MethodInfo method = GlobalMethod(typeof(int), new Type[] { typeof(int), typeof(int) }); Assert.Throws(() => Expression.OrElse(Expression.Constant(1), Expression.Constant(2), method)); } private class ClassWithConstructor { public ClassWithConstructor(int i) { } } private static MethodInfo GlobalMethod(Type returnType, Type[] parameterTypes) { AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(""ABC""), AssemblyBuilderAccess.Run); ModuleBuilder module = assembly.DefineDynamicModule(""Module""); MethodBuilder globalMethod = module.DefineGlobalMethod(""GlobalMethod"", MethodAttributes.Public | MethodAttributes.Static, returnType, parameterTypes); globalMethod.GetILGenerator().Emit(OpCodes.Ret); module.CreateGlobalFunctions(); return module.GetMethod(globalMethod.Name); } private static FieldInfo GlobalField() { AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(""ABC""), AssemblyBuilderAccess.Run); ModuleBuilder module = assembly.DefineDynamicModule(""Module""); FieldBuilder fieldBuilder = module.DefineInitializedData(""Name"", new byte[1], FieldAttributes.Public); module.CreateGlobalFunctions(); return module.GetField(fieldBuilder.Name); } } ``` @bartdesmet @VSadov @JonHanna " +12944 area-System.Net TestFailure: System.Net.Mail.Functional.Tests I encountered the following test failure while running `System.Net.Mail.Functional.Tests` unittest: ``` xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.Mail.Functional.Tests Discovered: System.Net.Mail.Functional.Tests Starting: System.Net.Mail.Functional.Tests System.Net.Mime.Tests.ContentDispositionTest.GetViaDateTimeProperty_WithUniversalTime_ShouldSetDateTimeKindAppropriately [FAIL] System.ArgumentOutOfRangeException : Hour, Minute, and Second parameters describe an un-representable DateTime. Stack Trace: at System.DateTime.TimeToTicks(Int32 hour, Int32 minute, Int32 second) /home/parjong/projects/dotnet/corefx/src/System.Net.Mail/tests/Functional/ContentDispositionTest.cs(255,0): at System.Net.Mime.Tests.ContentDispositionTest.GetViaDateTimeProperty_WithUniversalTime_ShouldSetDateTimeKindAppropriately() System.Net.Mime.Tests.ContentDispositionTest.SetDispositionViaConstructor_ShouldSetCorrectly_AndRespectCustomValues [FAIL] System.ArgumentOutOfRangeException : Hour, Minute, and Second parameters describe an un-representable DateTime. Stack Trace: at System.DateTime.TimeToTicks(Int32 hour, Int32 minute, Int32 second) /home/parjong/projects/dotnet/corefx/src/System.Net.Mail/tests/Functional/ContentDispositionTest.cs(323,0): at System.Net.Mime.Tests.ContentDispositionTest.SetDispositionViaConstructor_ShouldSetCorrectly_AndRespectCustomValues() System.Net.Mime.Tests.ContentDispositionTest.SetDateViaConstructor_ShouldPersistToPropertyAndPersistToParametersCollection [FAIL] System.ArgumentOutOfRangeException : Hour, Minute, and Second parameters describe an un-representable DateTime. Stack Trace: at System.DateTime.TimeToTicks(Int32 hour, Int32 minute, Int32 second) /home/parjong/projects/dotnet/corefx/src/System.Net.Mail/tests/Functional/ContentDispositionTest.cs(230,0): at System.Net.Mime.Tests.ContentDispositionTest.SetDateViaConstructor_ShouldPersistToPropertyAndPersistToParametersCollection() Finished: System.Net.Mail.Functional.Tests === TEST EXECUTION SUMMARY === System.Net.Mail.Functional.Tests Total: 158, Errors: 0, Failed: 3, Skipped: 0, Time: 6.288s ``` +12946 area-Infrastructure Change '--testTFM' option to '--testRelPath' and default value in run-test.sh Similar issue with #12440 Test path changed by #12634 (dotnet/buildtools#1121) - Change option name of `--testTFM` to `--testRelPath` to set relative path from project directory to test script. - Set default value to `default.netcoreapp1.1/netcoreapp1.1` cc/ @weshaggard @stephentoub +12947 area-System.IO System.IO.Compression: Add support for password protected files +12948 area-Meta Xamarin form using OPC UA Client SDK fails to Session Connect Working on creating a Xamarin.form Android App using Xamarin.form fails to Session.Connect. throws an error connection refused. Is the SDK supports Xamarin.forms? Is there samples on how to use the .net core sdk in xamarin forms? +12949 area-Infrastructure Lots of restore failures on Unix "A bunch of our Unix CI legs have begun to fail with errors like: ``` [10:44:16.36] Verifying all auto-upgradeable dependencies... [10:44:17.16] Verifying all auto-upgradeable dependencies... Done. [10:44:17.17] Restoring all packages... EXEC : error : The given key was not present in the dictionary. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/build.proj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/build.proj(106,5): error MSB3073: The command """"/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ ""/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src"" ""/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/pkg"""" exited with code 1. EXEC : error : The given key was not present in the dictionary. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/build.proj] /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/build.proj(106,5): error MSB3073: The command """"/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ ""/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src"" ""/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/pkg"""" exited with code 1. ``` or ``` [10:42:38.94] Verifying all auto-upgradeable dependencies... [10:42:39.90] Verifying all auto-upgradeable dependencies... Done. [10:42:39.90] Restoring all packages... [10:46:15.21] Restoring all packages...Done. /mnt/j/workspace/dotnet_corefx/master/linuxarmemulator_cross_release_prtest/build.proj(163,5): error : Exact package 'System.Security.Cryptography.OpenSSL 4.4.0-beta-24619-02' was not restored: found '' /mnt/j/workspace/dotnet_corefx/master/linuxarmemulator_cross_release_prtest/build.proj(163,5): error : Exact package 'System.Security.Cryptography.OpenSSL 4.4.0-beta-24619-02' was not restored: found '' ``` cc: @weshaggard, @joperezr, @bartonjs, @ericstj, @karelz " +12950 area-System.Linq Expression.Convet System.InvalidOperationException "This test sample ``` cs [Test] public void ConvertTest() { var from = typeof(Int64?); var to = typeof(int); var p = Expression.Constant((Int64?)101); var method = from.GetRuntimeMethod(""op_Implicit"", new[] {to}); var expression = Expression.Convert(p, to, method); } ``` falls with exception ``` System.InvalidOperationException : The operands for operator 'Convert' do not match the parameters of method 'op_Implicit'. at System.Linq.Expressions.Expression.GetMethodBasedCoercionOperator(ExpressionType unaryType, Expression operand, Type convertToType, MethodInfo method) at System.Linq.Expressions.Expression.Convert(Expression expression, Type type, MethodInfo method) at Tests.NetCore.ReflectionTests.ConvertTest() in F:\job\linq2db\Tests\Tests.NetCore\ReflectionTests.cs:line 51 ``` " +12952 area-System.IO Add CFG flag to arm64 clrcompression @gkhanna79 @morganbr +12953 area-System.Net New System.Net.Requests tests are in a mis-matching namespace @geoffkizer I noticed with the new FTP tests that their namespace is System.Net.Tests: https://github.com/dotnet/corefx/blob/d324c82ec8ada48d690eb65381606c93989e9654/src/System.Net.Requests/tests/FtpWebRequestTest.cs#L13 Ideally this should be System.Net.Requests.Tests as later on it makes it much easier to follow test results back to their test assembly. +12954 area-System.Diagnostics Missing some members of System.Diagnostics.Tracing.EventListener These were added between 4.6.1 and 4.6.3 and we're going to add them to NS2.0 so they need to be added to Core. ``` E:System.Diagnostics.Tracing.EventListener.EventSourceCreated M:System.Diagnostics.Tracing.EventListener.add_EventSourceCreated(System.EventHandler{System.Diagnostics.Tracing.EventSourceCreatedEventArgs}) M:System.Diagnostics.Tracing.EventListener.remove_EventSourceCreated(System.EventHandler{System.Diagnostics.Tracing.EventSourceCreatedEventArgs}) E:System.Diagnostics.Tracing.EventListener.EventWritten M:System.Diagnostics.Tracing.EventListener.add_EventWritten(System.EventHandler{System.Diagnostics.Tracing.EventWrittenEventArgs}) M:System.Diagnostics.Tracing.EventListener.remove_EventWritten(System.EventHandler{System.Diagnostics.Tracing.EventWrittenEventArgs}) T:System.Diagnostics.Tracing.EventSourceCreatedEventArgs M:System.Diagnostics.Tracing.EventSourceCreatedEventArgs.#ctor P:System.Diagnostics.Tracing.EventSourceCreatedEventArgs.EventSource M:System.Diagnostics.Tracing.EventSourceCreatedEventArgs.get_EventSource ``` +12955 area-System.Net Add some missing System.Net.Security These were added between 4.6.1 and 4.6.3 and we've decided to add such API to NS2.0 so we need them in Core. ``` F:System.Net.SecurityProtocolType.SystemDefault M:System.Net.Security.SslStream.AuthenticateAsClient(System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,System.Boolean) M:System.Net.Security.SslStream.AuthenticateAsClientAsync(System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,System.Boolean) M:System.Net.Security.SslStream.AuthenticateAsServer(System.Security.Cryptography.X509Certificates.X509Certificate,System.Boolean,System.Boolean) M:System.Net.Security.SslStream.AuthenticateAsServerAsync(System.Security.Cryptography.X509Certificates.X509Certificate,System.Boolean,System.Boolean) M:System.Net.Security.SslStream.BeginAuthenticateAsClient(System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,System.Boolean,System.AsyncCallback,System.Object) M:System.Net.Security.SslStream.BeginAuthenticateAsServer(System.Security.Cryptography.X509Certificates.X509Certificate,System.Boolean,System.Boolean,System.AsyncCallback,System.Object) M:System.Net.Security.SslStream.ShutdownAsync ``` +12956 area-System.Security Add missing members of DSACng and RSACng We want to bring NS2.0 up to match 4.6.3 so we are missing these members ``` P:System.Security.Cryptography.DSACng.KeyExchangeAlgorithm M:System.Security.Cryptography.DSACng.get_KeyExchangeAlgorithm P:System.Security.Cryptography.DSACng.SignatureAlgorithm M:System.Security.Cryptography.DSACng.get_SignatureAlgorithm P:System.Security.Cryptography.RSACng.KeyExchangeAlgorithm M:System.Security.Cryptography.RSACng.get_KeyExchangeAlgorithm P:System.Security.Cryptography.RSACng.SignatureAlgorithm M:System.Security.Cryptography.RSACng.get_SignatureAlgorithm M:System.Security.Cryptography.RSACng.DecryptValue(System.Byte[]) M:System.Security.Cryptography.RSACng.EncryptValue(System.Byte[]) ``` /cc @bartonjs @steveharter +12959 area-System.Net CookieCollection IsReadOnly do not match desktop CookieCollection IsReadlyOnly is hardcoded to return false , but desktop return true which is not correct. The desktop implementation returns true from this for collections created with the default ctor which is not correct. See comment for further details : https://github.com/dotnet/corefx/pull/12916/files#r84574719 +12962 area-System.Net Add HttpClient tests for doing client authentication with a certificate with no private key Providing a client auth cert which has no private key is a failure path that doesn't appear to be tested currently. With the addition of the test(s) we should look at what kinds of exceptions are being raised, and whether or not they have useful (or at least roughly consistent) information across Windows and Linux. (If they're both terrible messages maybe we should try to detect the situation right before failure and give a more informative message) SslStream could probably also use some love here. +12963 area-System.Diagnostics Reduce Process.Modules allocations "The implementation of `Process.Modules` builds up an array of intermediate `ModuleInfo` objects, which are then wrapped as `ProcessModule` objects and copied to a new `ProcessModuleCollection` (which involves an extra defensive `object[]` allocation/copy due to the way `ArrayList.AddRange` is implemented). These intermediate allocations/copying can be avoided by deleting the `ModuleInfo` concept and just using `ProcessModuleCollection` to build up the collection of `ProcessModule` objects directly. The implementation on Windows can be further improved by avoiding some more unnecessary allocations, such as using a single `char[]` instead of duplicate `StringBuilder` instances to retrieve each module's `ModuleName` and `FileName`, and changing `NtModuleInfo` to be a struct instead of a class. Profiling a simple app that just does `Process.GetCurrentProces().Modules` on Windows, yields the following results: Before: After: Further improvements could be made, such as potentially stackallocating some of the arrays on Windows, but this looked good enough for now. Also, a similar change could be made for `ThreadInfo`/`ProcessThread`, but I'll leave that to a subsequent PR. cc: @stephentoub " +12964 area-System.Security Add crypto provider wrappers "Port additional provider wrappers to System.Security.Cryptography.Algorithms and System.Security.Cryptography.Csp Address issues: https://github.com/dotnet/corefx/issues/9981 Add Crypto provider wrappers https://github.com/dotnet/corefx/issues/12323 Port additional System.Security.Cryptography.RandomNumberGenerator members Includes misc refactoring to RandomNumberGenerator files (to split into ""Implementation"" classes under the Interop folder). Did not add 'sealed' modifier to any classes that did not have them in desktop; at one point this was discussed as an option to help with wrapping (it wasn't necessary). @bartonjs please review. " +12965 area-System.Net port SetIPProtectionLevel and AllowNatTraversal Fixes #12462 Add Socket.SetIPProtectionLevel. Not supported on Unix (throws PlatformNotSupportedException) Add UdpClient.AllowNatTraversal and TcpListener.AllowNatTraversal which use this. +12966 area-System.Security Port Rfc2898DeriveBytes.CryptDeriveKey Likely need to call a BCrypt API not yet called (BCryptDeriveKey), and find equivalent on OpenSsl Update: BCrypt is not compatible with current desktop which uses CAPI, so this will throw PNSE. In addition, since this is exposing a thin layer on top of a native API, no attempt will be used to emulate this on OpenSsl so that will also throw PNSE. ``` public byte[] CryptDeriveKey(string algname, string alghashname, int keySize, byte[] rgbIV) ``` +12969 area-System.Net NetworkInterface.GetAllNetworkInterfaces() throws exception in cloud9 docker container. "`NetworkInterface.GetAllNetworkInterfaces()` always throws exception if try to run it in cloud9 docker container. Steps to reproduce: create new workspace at www.c9.io, then install .net core v1.0.1 and type `dotnet new`. Then add following line in the `Main` method ``` NetworkInterface.GetAllNetworkInterfaces(); ``` and type `dotnet run` (you're possible need to add necessary references to `project.json`). It throws exception: `````` Unhandled Exception: System.UnauthorizedAccessException: Access to the path '/sys/class/net/lo/operstate' is denied. ---> System.IO.IOException: Permission denied --- End of inner exception stack trace --- at System.IO.UnixFileStream.CheckFileCall(Int64 result, Boolean ignoreNotSupported) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.IO.File.ReadAllText(String path) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOperationalStatus(String name) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__2(String name, LinkLayerAddressInfo* llAddr) at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound) at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() at System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces() at ConsoleApplication.Program.Main(String[] args)``` `````` The bad thing that this exception cannot be catched by `catch (UnauthorizedAccessException)` nor `catch` block without type. What is weird, if try replace ``` NetworkInterface.GetAllNetworkInterfaces(); ``` with ``` File.ReadAllText(""/sys/class/net/lo/operstate"").Trim(); ``` Which is the cause of exception, then the exception can be handled by `catch (UnauthorizedAccessException)` block. So here is two issues: one of about access permissions to `/sys/class/net/lo/operstate` and second that the same exception sometimes can be handled sometimes can not. " +12970 area-System.IO Port arm64 cfg flag fix to release/1.1.0 ports https://github.com/dotnet/corefx/pull/12952 to release/1.1.0 @gkhanna79 +12972 area-System.Net Change System.Net.Mail ServicePoint to use mailto scheme Based on feedback from https://github.com/dotnet/corefx/pull/12925#discussion_r84731990 cc: @cipop, @Priya91 +12973 area-System.Net [release/1.1.0] Mandatory http response status should be 100..1000 Port https://github.com/dotnet/corefx/pull/12938 to release/1.1.0 +12974 area-System.Runtime Drop windows netstandard1.1 implementation to lib/netstandard1.1 In reference to issue #10445 cc @ericstj @weshaggard @karelz +12975 area-System.Linq XML doc comments for System.Linq.Expressions These were in a bit of an intermediate state, with typos here and there, some missing ones, and inconsistencies in the way `cref` attributes were specified. I did a bunch of search-and-replace operations to fix them up and filled in the gaps by taking documentation from MSDN. Also changing the `cref` style to omit `T:`, `P:`, `M:`, `F:` prefixes, which enables the C# compiler to check the references properly; this uncovered a bunch of incorrect references to non-existing types or members. I'm not sure what the plan is with regards to XML documentation and building it to produce .NET Core documentation online. For this assembly, with these changes, we can almost enable the XML doc generation in the `.csproj` file. There are a few more errors on ambiguous references in `cref` attributes and missing XML docs on some public members that should not be public (I'll submit a separate PR for that). CC @stephentoub +12976 area-System.Linq Some methods on Expression should not be public Noticed these are public for no obvious reason: - `ValidateArgumentTypes` - `ValidateArgumentCount` - `ValidateOneArgument` +12977 area-System.ComponentModel Remove if-defs from System.ComponentModel.TypeCoverter Fixes #12386 cc @danmosemsft @AlexGhiondea @joperezr +12979 area-Serialization Failure in InvalidComObjectExceptionTests.SerializationRoundTrip See [here](https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2098/testReport/junit/System.Runtime.InteropServices.Tests/InvalidComObjectExceptionTests/SerializationRoundTrip): ``` MESSAGE: Assert.Equal() Failure\r\n ↓ (pos 266)\r\nExpected: ···tterHelpers.cs:line 31\r\nActual: ···tterHelpers.cs:line 26\r\n ↑ (pos 266) +++++++++++++++++++ STACK TRACE: at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.AssertRoundtrips[T](T expected, Func`2[] additionalGetters) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs:line 39 at System.Runtime.InteropServices.Tests.InvalidComObjectExceptionTests.SerializationRoundTrip() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.InteropServices\tests\System\Runtime\InteropServices\InvalidComObjectExceptionTests.cs:line 18 ``` +12983 area-System.Security Cannot instantiate System.Net.Http.HttpClientHandler on OS X with new package "## Repro Create a simple project on OS X with System.Net.Http.HttpClientHandler project.json ``` json { ""name"": ""test"", ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true }, ""frameworks"": { ""netcoreapp1.0"": { ""dependencies"": { ""System.Net.Http"": ""4.3.0-preview1-24530-04"", ""Microsoft.NETCore.App"": ""1.1.0-preview1-001100-00"" } } }, ""runtimes"": { ""osx.10.11-x64"": { } } } ``` Program.cs ``` csharp using System; class Program { static void Main(string[] args) { Console.WriteLine(""Hello World! "" + new System.Net.Http.HttpClientHandler()); } } ``` Use `dotnet run` to run the program. ## Expected `Hello World!System.Net.Http.HttpClientHandler` ## Actual Ctor exception ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Net.Http.CurlHandler' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Http' threw an exception. ---> System.TypeInitializationException: The type initializer for 'HttpInitializer' threw an exception. ---> System.TypeInitializationException: The type initializer for 'CryptoInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native.OpenSsl': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.CryptoInitializer.EnsureOpenSslInitialized() at Interop.CryptoInitializer..cctor() --- End of inner exception stack trace --- at Interop.CryptoInitializer.Initialize() at Interop.HttpInitializer..cctor() --- End of inner exception stack trace --- at Interop.HttpInitializer.Initialize() at Interop.Http..cctor() --- End of inner exception stack trace --- at Interop.Http.GetSupportedFeatures() at System.Net.Http.CurlHandler..cctor() --- End of inner exception stack trace --- at System.Net.Http.CurlHandler..ctor() at System.Net.Http.HttpClientHandler..ctor() at Program.Main(String[] args) in /Users/vors/dev/dotnet-http-bug-test/Program.cs:line 7 ``` ## Environment OS X 10.11.6 x64 dotnet cli tool ``` PS /Users/vors/dev/dotnet-http-bug-test> dotnet --info .NET Command Line Tools (1.0.0-preview3-003857) Product Information: Version: 1.0.0-preview3-003857 Commit SHA-1 hash: 060762090d Runtime Environment: OS Name: Mac OS X OS Version: 10.11 OS Platform: Darwin RID: osx.10.11-x64 ``` " +12987 area-System.Data No Database connection from Ubuntu 14.04 LTS to SQL Server 2008 R2 I am facing problems connecting from an ASP.NET Core Web API using Entity Framework Core running on Ubuntu 14.04 LTS to a Windows Server 2008 R2 running a SQL Server 2008 R2. the Window Server 2008 R2 is unpatched. I installed SQL Server Service Pack 3, have TCP/IP enabled, have named pipes enabled. The app gets running and everything seems fine (swagger ui shows up shows the rest api) when I try to make an request from swagger it throws an System.Data.SqlClient exception in the background. I was adviced to this board [from here](https://github.com/aspnet/EntityFramework/issues/6830) Here I also show that I already used different versions of the connection string (WITHOUT named instances) all without success. I also seeked help on [Stackoverflow](http://stackoverflow.com/questions/40150357/asp-net-core-web-api-on-ubuntu-14-04-lts-doesnt-get-sql-connection-to-mssql-200?noredirect=1#comment67578524_40150357) Hopefully, someone here can point me to the error or can confirm that this is an issue. .... System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateException: One or more errors occurred. (No such device or address) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SNI.SNITCPHandle.d__22.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait(TimeSpan timeout) at System.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, Int64 timerExpire, Object callbackObject, Boolean parallel) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.d__3`1.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.d__15`2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext() at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteObject(TextWriter writer, Object value) at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__32.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__29.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.ExceptionTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ApplicationInsights.AspNetCore.RequestTrackingMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() ..... +12991 area-System.Runtime GCNotifiicationTests failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/73/consoleText ``` Error - WaitForFullGCApproach result not Cancelled Exception from RemoteExecutorConsoleApp(System.Runtime.Tests, Version=4.2.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.Tests.GCExtendedTests+<>c, b__3_0): Assembly: System.Runtime.Tests, Version=4.2.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: System.Tests.GCExtendedTests+<>c Method: Int32 b__3_0() Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.TrueException: Assert.True() Failure Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\BooleanAsserts.cs:line 90 at System.Tests.GCExtendedTests.<>c.b__3_0() in D:\j\workspace\outerloop_win---7ad0ce03\src\System.Runtime\tests\System\GCTests.netstandard1.7.cs:line 78 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RemoteExecutorConsoleApp.Program.Main(String[] args) Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.TrueException: Assert.True() Failure Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\BooleanAsserts.cs:line 90 at System.Tests.GCExtendedTests.<>c.b__3_0() in D:\j\workspace\outerloop_win---7ad0ce03\src\System.Runtime\tests\System\GCTests.netstandard1.7.cs:line 78 --- End of inner exception stack trace --- at RemoteExecutorConsoleApp.Program.Main(String[] args) System.Tests.GCExtendedTests.GCNotifiicationTests [FAIL] Assert.Equal() Failure Expected: 42 Actual: -532462766 Stack Trace: D:\j\workspace\outerloop_win---7ad0ce03\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(172,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() D:\j\workspace\outerloop_win---7ad0ce03\src\System.Runtime\tests\System\GCTests.netstandard1.7.cs(76,0): at System.Tests.GCExtendedTests.GCNotifiicationTests() ``` +12993 area-System.IO FileInfo_OpenSpecial.FileShareOpen failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/73/consoleText ``` System.IO.Tests.FileInfo_OpenSpecial.FileShareOpen [FAIL] System.IO.IOException : The process cannot access the file 'C:\Users\dotnet-bot\AppData\Local\Temp\FileInfo_OpenSpecial_jdg4yjdx.tso\FileShareOpen_43' because it is being used by another process. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.FileInfo.Open(FileMode mode, FileAccess access, FileShare share) D:\j\workspace\outerloop_win---7ad0ce03\src\System.IO.FileSystem\tests\FileInfo\Open.cs(67,0): at System.IO.Tests.FileInfo_OpenSpecial.CreateFileStream(String path, FileMode mode, FileAccess access, FileShare share) D:\j\workspace\outerloop_win---7ad0ce03\src\System.IO.FileSystem\tests\FileStream\ctor_str_fm_fa_fs.cs(56,0): at System.IO.Tests.FileStream_ctor_str_fm_fa_fs.FileShareOpen() ``` +12994 area-System.Net Socket tests are not running in CI As evidenced by this PR, which added a failing innerloop and outerloop test, yet all legs passed. https://github.com/dotnet/corefx/pull/12988 You can see in the log, for example this one on Windows at https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2117/consoleText, that System.Net.Sockets.Tests gets built: ``` System.Net.Sockets.Tests -> D:\j\workspace\windows_nt_de---4526f5ff\bin\Windows_NT.AnyCPU.Debug\System.Net.Sockets.Tests\System.Net.Sockets.Tests.dll ``` but that's the only reference to the suite in the whole log... it's never executed. I don't know if there are other suites like this, nor do I know how long it's been this way, but it's concerning. cc: @davidsh, @cipop, @ericeil, @geoffkizer, @weshaggard +12995 area-System.Net Make System.Net.Sockets.Tests run in build Fixes https://github.com/dotnet/corefx/issues/12994 @weshaggard, is this the right fix? +12998 area-System.Collections Add IReadOnlyList constructor to ReadOnlyCollection In some places in `System.Linq.Expressions` we implement `IList` with all mutating methods throwing exceptions, just to be able to pass it to the constructor of `ReadOnlyCollection`. An additional constructor overload with `IReadOnlyList` would be useful to reduce code bloat. +13001 area-System.Runtime ValueTuple should support mscorlib-based PCL in 1.1 release We made a fix to add a build of ValueTuple that works on mscorlib-based frameworks (net 4.0 and silverlight) as requested by ML / F#. We need to port this to the 1.1 branch so that it releases with the first stable release of the ValueTuple package. /cc @jcouv @KevinRansom +13003 area-System.Globalization CI failure in DateTimeFormatInfoGetInstance.GetInstance_ExpectedCurrent "See https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/2074 ``` MESSAGE: Assert.Same() Failure\r\nExpected: DateTimeFormatInfo { AbbreviatedDayNames = [\""Sun\"", \""Mon\"", \""Tue\"", \""Wed\"", \""Thu\"", ...], AbbreviatedMonthGenitiveNames = [\""Jan\"", \""Feb\"", \""Mar\"", \""Apr\"", \""May\"", ...], AbbreviatedMonthNames = [\""Jan\"", \""Feb\"", \""Mar\"", \""Apr\"", \""May\"", ...], AMDesignator = \""AM\"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... }\r\nActual: DateTimeFormatInfo { AbbreviatedDayNames = [\""Sun\"", \""Mon\"", \""Tue\"", \""Wed\"", \""Thu\"", ...], AbbreviatedMonthGenitiveNames = [\""Jan\"", \""Feb\"", \""Mar\"", \""Apr\"", \""May\"", ...], AbbreviatedMonthNames = [\""Jan\"", \""Feb\"", \""Mar\"", \""Apr\"", \""May\"", ...], AMDesignator = \""AM\"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... } +++++++++++++++++++ STACK TRACE: at System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance_ExpectedCurrent() in D:\j\workspace\windows_nt_re---37265eab\src\System.Globalization\tests\DateTimeFormatInfo\DateTimeFormatInfoGetInstance.cs:line 46 ``` " +13005 area-System.IO Move FileStream from CoreFX to CoreCLR Need to move CoreFX FileStream down to System.Private.CoreLib once #11707 is complete. +13006 area-System.Net Add ActiveIssue attribute to GetResponseAsync_ResourceNotFound_ThrowsWebException This test has been failing on CentOS and RedHat for some time now. See #12236. @davidsh @stephentoub +13007 area-System.Linq No write-back of mutable struct instances to live constant boxes "Consider the following test: ``` csharp [Theory] [ClassData(typeof(CompilationTypes))] public static void ValueTypeIndexAssign(bool useInterpreter) { Expression index = Expression.Property(Expression.Constant(new StructWithPropertiesAndFields()), typeof(StructWithPropertiesAndFields).GetProperty(""Item""), new Expression[] { Expression.Constant(1) }); Expression> func = Expression.Lambda>( Expression.Block( Expression.Assign(index, Expression.Constant(123)), Expression.Equal(index, Expression.Constant(123)) ) ); Assert.True(func.Compile(useInterpreter)()); } ``` which uses a lambda equivalent to: ``` csharp () => { o[1] = 123; return o[1] == 123; }; ``` where `o` is a mutable struct. With the expression interpreter, the assert succeeds, but with the expression compiler, the assert fails. The issue with the compiler is in the use of `unbox.any` upon accessing the `Closure.Constants` array slot containing the live constant containing the boxed instance of `new StructWithPropertiesAndFields()`. No write-back is ever attempted. Contrast this to: ``` csharp var o = new StructWithPropertiesAndFields(); Func f = () => { o[1] = 123; return o[1] == 123; }; Console.WriteLine(f()); ``` This will print true as well. The use of an `object[]` combined with `unbox.any` instructions for accessing live constants prevents the ability to perform a mutation on the original storage location. In fact, the emitted code is: ``` ldarg.0 ldfld class [System.Linq.Expressions]System.Runtime.CompilerServices.Closure::Constants ldc.i4.0 ldelem.ref unbox.any valuetype [Foo]StructWithPropertiesAndFields stloc.s V_4 ldloca.s V_4 ldloc.0 ldc.i4.s 123 call instance void valuetype [Foo]StructWithPropertiesAndFields::set_Item(int32,int32) ``` The use of `stloc` and `ldloca` originates from the `EmitAddress` case for the `Constant` node, so we create yet another copy prior to taking the address. With my pending changes on statically typed closures, this behavior will be corrected because the constants will be stored in a statically typed field in a closure class. Obtaining the address of the instance for use by the indexer assignment will emit `ldflda`. If we were to fix this in the current code, we'd have to check for (mutable non-primitive) structs and store them in a `StrongBox` in the `Constants` array slot instead, so we can avoid the use of `unbox.any` on the struct value (and the copying of the value to a temporary to obtain the address). Instead, we'd ""unbox"" the strong box from the `Constants` storage slot and `EmitAddress` for the `Value` field in the strong box. " +13008 area-System.IO Consume FileStream from CoreLib After #13005 we need to consume FileStream from CoreLib. +13010 area-System.Net fix inconsistent FtpWebRequest DNS test Fixes #12940 Remove the WebException.Status check, since it is not consistent and some network setups generate ConnectFailure instead of NameResolutionFailure. Also, mark tests that could depend on the network environment as OuterLoop. +13013 area-System.Net Cherry-pick commit 09a2d0022b46e7a5137002b88bb7334bfc43604a from Master Adds ActiveIssue attribute to GetResponseAsync_ResourceNotFound_ThrowsWebException. This test has been failing on CentOS and RedHat for some time now. See #12236 +13016 area-System.Net Expose HttpContinueDelegate from HttpWebRequest. Fixes https://github.com/dotnet/corefx/issues/12512 The underlying winhttp API do not expose http 100 continue , so implementing ContinueDelegate is not possible now.Making it a NOP in netcore for compat. +13018 area-System.Linq Misc. minor changes to interpreter in System.Linq.Expressions Various minor changes to interpreter code: - Marking instruction types as `sealed` when possible. - Marking inner classes in instructions as `private` rather than `internal`. - Making ordering of fields, constructor, properties consistent for all instructions. - Some whitespace. - Fixing an `#if`. CC @stephentoub +13019 area-System.IO Add missing APM methods to Pipes assembly - Adds the last missing Pipes members to ref/src/tests - I also outerlooped some tests that were accounting for the majority of the Pipes execution time. Total run time with these tests Outerlooped is 1.6s (down from 10s). - I looked into having the APM methods share tests with the non-APM async methods (like [here](https://github.com/dotnet/corefx/blob/master/src/System.Net.Requests/tests/FileWebRequestTest.cs#L273-L287)) but determined it to not blend well with the structure of the current Pipes test as they already heavily use inheritance. I instead copied and modified some of the tests to run on the APM methods. - resolves https://github.com/dotnet/corefx/issues/12349 cc: @joperezr @stephentoub @AlexGhiondea +13020 area-Meta Move Microsoft.NetCore.Portable.Compatibility package to assets to CoreFX This package gets invalidated as we move types around. One example is, System.Runtime.CompilerServices.IsConst, which moved out of System.Private.Corelib into System.Runtime. mscorlib in the Compatibility package still has a typeforward to System.Private.CoreLib, which is causing issues on .Net Native scenarios. +13021 area-System.Net add TransportContext.GetTlsTokenBindings and TokenBinding class Fixes #12136 +13025 area-System.IO System.IO.Tests.PathTooLongExceptionInteropTests.From_HR failed in Windows PR CI ``` MESSAGE: Assert.NotNull() Failure +++++++++++++++++++ STACK TRACE: at System.IO.Tests.PathTooLongExceptionInteropTests.From_HR() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\IO\PathTooLongException.InteropTests.cs:line 18 ``` Refer job [here](https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2164/), [here](https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/2160/) +13026 area-Meta Adding new build/packaging documentation - Adding examples for framework-specific packaging. - Documenting my technique of debugging packaging issues. @weshaggard @ericstj @karelz PTAL /cc: @davidsh @ericeil +13027 area-System.Data Update to SNI packaging Updated the SNI packaging to reference the stable build so that 1.1 ships with latest SNI binaries Fixes #12195 +13028 area-System.Diagnostics Test failure: System.Diagnostics.Tests.ProcessWaitingTests/MultipleProcesses_StartAllKillAllWaitAll Opened on behalf of @jiangzeng The test `System.Diagnostics.Tests.ProcessWaitingTests/MultipleProcesses_StartAllKillAllWaitAll` has failed. System.ComponentModel.Win32Exception : Cannot allocate memory ``` Stack Trace: at Interop.Sys.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Int32& lpChildPid, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at System.Diagnostics.Tests.ProcessWaitingTests.MultipleProcesses_StartAllKillAllWaitAll() ``` Build : Master - 20161025.02 (Core Tests) Failing configurations: - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161025.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessWaitingTests~2FMultipleProcesses_StartAllKillAllWaitAll +13032 area-System.Data Exception when return type contains SqlConnection If a method or property that return type contains SqlConnection like **SqlConnection**, **Task<SqlConnection>** or **List<SqlConnection>**, there is an exception when we are trying to list this object in **Watch Window**. ```c# public class A { public A() { //breakpoint in the class codes, type 'this' in the Watch window //throw exception 'Internal error in the expression evaluator' } public SqlConnection Test() { return null; } } ``` +13033 area-Infrastructure [ARM/CI] CI cannot find arm-hardfp rootfs image The CI job linuxarmemulator_hardfp_cross_debug fails. The error message is: ``` 22:33:07 + ./scripts/arm32_ci_script.sh --emulatorPath=/opt/linux-arm-emulator --mountPath=/opt/linux-arm-emulator-root --buildConfig=debug --verbose 22:33:08 ERROR: Path specified in --emulatorPath does not have the rootfs 22:33:08 The script is exited. Cleaning environment.. ``` Which means that CI does not have `/opt/linux-arm-emulator/platform/rootfs-u1404.ext4` but I already sent this file to CI. @jashook Could you please check? +13034 area-System.Data Enhance SqlClientDiagnosticListener to support SqlTransaction It will be great if SqlTransaction will output tracing info about Commit, Rollback and Dispose as SqlConnection and SqlCommand have tracing info about connection open/close and command executing/executed. +13035 area-System.Data System.Data.Odbc Namespace Are there any plans to provide this API? My project is still rightfully so. Not everything can to use with ADO.NET like Excel ODBC You see that even the Mono has support for it. Att. +13036 area-System.Net WebUtility.HtmlDecode does not decode all HTML5 character entities The current character entity replace dictionary used inside WebUtility uses the entity set as defined in HTML4, see https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Net/WebUtility.cs#L757. However, the HTML5 spec defines additional entities, see https://www.w3.org/TR/html5/syntax.html#named-character-references. I'm willing to send a PR to include the new named character references, if this that would be an acceptable change to the behavior of WebUtility.HtmlDecode. Any specific guidance with respect to making this change? Are there specific areas that need to be addressed? +13041 area-System.Globalization Add more Globalization APIs to netstandard 2.0 It is decided to add more globalization APIs to netstandard 2.0. The PR show what is added https://github.com/dotnet/standard/pull/51 here is the globalization APIs list we need to add: ``` CompareInfo: public System.Globalization.SortVersion Version { get { throw null; } } CultureInfo: public System.Globalization.CultureTypes CultureTypes { get { throw null; } } CultureInfo: public string IetfLanguageTag { get { throw null; } } CultureInfo: public virtual int KeyboardLayoutId { get { throw null; } } CultureInfo: public System.Globalization.CultureInfo GetConsoleFallbackUICulture() { throw null; } ``` +13042 area-System.Net add GlobalProxySelection Fixes #12128 +13047 area-System.Runtime Re-enable tests for StringBuilder after updating CoreCLR The tests need to be updated after https://github.com/dotnet/coreclr/pull/7803 is done. +13048 area-System.Linq AddChecked factory method passes false for liftToNull Noticed in PR https://github.com/dotnet/corefx/pull/13046. Unlike any other factory methods for binary expressions, `AddChecked` passes `false` for the `liftToNull` parameter. That seems like a bug. +13050 area-System.Linq Review disabled features in expression interpreter code We have the following `#if` symbols sprinkled across the code but never enabled: - FEATURE_COMPILE_TO_METHODBUILDER - FEATURE_PDB_GENERATOR - FEATURE_DLG_INVOKE - FEATURE_FAST_CREATE - FEATURE_THREAD_ABORT - FEATURE_MAKE_RUN_METHODS - FEATURE_STACK_TRACES - NO_FEATURE_STATIC_DELEGATE Some may be worth enabling again given the addition of some APIs in the latest .NET Standard build flavors; others may be remnants of early DLR work and could be deemed dead code that can be removed. CC @VSadov +13052 area-System.Linq Use netstandard1.7 for System.Linq.Expressions Which will bring back `Type.GetTypeCode` etc. enabling progress on https://github.com/dotnet/corefx/issues/11328 etc. +13053 area-Meta Update docs - issues guide with new rules Update docs - issues guide with new rules (labels, area labels, assignments, area owners). cc: @danmosemsft @weshaggard +13054 area-System.Runtime Add Serializable attribute on ApplicationId +13055 area-System.Runtime Attribute default Equality/HashCode tests See: https://github.com/dotnet/coreclr/issues/6232 https://github.com/dotnet/coreclr/pull/6240 /cc @jkotas edit: Needs more tests, WIP edit: Hashing is failing for some derived types. (probably a bug with the fix, see commented cases) edit: Nope, as intended, just unfortunate side effect +13056 area-System.Diagnostics Add missing members of Debugger class - Exposes the remaining missing members of the Debugger class in System.Diagnostics.Debug. - Adds VERY basic tests for the Debugger functions that for the most part just call the functions without any assertion of expected behavior. resolves https://github.com/dotnet/corefx/issues/12795 @alexperovich @joperezr @AlexGhiondea +13057 area-System.Reflection Loading assemblies with dependencies at runtime Trying to implement loose coupling approach in my new application i've run into problem. I have a main application, an assembly with abstractions and an assembly which i want to load dynamically. The actual loading code is: `foreach (var path in paths) { var fullPath = Path.Combine(System.AppContext.BaseDirectory, path); if (!File.Exists(fullPath)) continue; var asm = AssemblyLoadContext.Default.LoadFromAssemblyPath(fullPath); moduleTypes.AddRange( asm.GetTypes().Where(mytype => mytype.GetInterfaces().Contains(typeof(IDynamicModule)))); }` After that i instatiate IDynamicModule classes and make them do some work. On the `GetTypes()` operation i'm getting an exception: `{System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.EntityFrameworkCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Не удается найти указанный файл. File name: 'Microsoft.EntityFrameworkCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'}` (Entity Framework is referenced by dynamic assembly). Playing with framework and assembly versions i've somehow managed to load the assembly and run some code in it, but when it comes to actually working with `DbContext` i'm also getting the same exception but for `Npgsql.EntityFrameworkCore.PostgreSQL`. Looks like there are some problems with loading assemblies that have their own references on external modules. I've implemented sample project illustrating this problem. https://github.com/pushist1y/ErrorReproductions/tree/master/DotNetCoreAssemblyLoading +13060 area-System.Security [release/1.1.0] Change the cryptography shims to use direct package dependencies The use of runtime dependencies for the platform-specific native shims causes some upgrade complications. The design of the shared framework results in the dependency being considered to be satisfied even when a higher version was needed. So if someone has .NET Core 1.0 installed and pulls in a daily build of a cryptography library they might be missing native code changes that were assumed to be present as dependencies of the managed code. By changing to direct dependencies (changing the platform-specific package files to use IdPrefix instead of PackageTargetRuntime) the new .so files will be downloaded and deployed with the app (if they're a higher version that what is present in the shared framework). Fixes #12517. cc: @ericstj +13062 area-System.Security Port x-plat SecureString implementation from CoreFX to mscorlib @shrah commented on [Wed Oct 26 2016](https://github.com/dotnet/coreclr/issues/7834) The x-plat SecureString implementation need to be ported from corefx/src/System.Security.SecureString/src/System/Security/SecureString.cs to mscorlib. This is required in order to port the Marshal.SecureStringTo\* APIs as they take SecureString as parameter. +13063 area-System.Numerics AccessViolationException in BigInteger tests Possibly related to https://github.com/dotnet/corefx/issues/11771, but an AccessViolationException. Even when running out of memory, we shouldn't do that. Seems it needs a fix of its own. @mellinoe ``` 2016-10-26 14:02:46,792: INFO: proc(55): run_and_log_output: Output: Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 2016-10-26 14:02:46,792: INFO: proc(55): run_and_log_output: Output: at System.Numerics.BigInteger.op_LeftShift(BigInteger value, Int32 shift) 2016-10-26 14:02:46,792: INFO: proc(55): run_and_log_output: Output: at System.Numerics.Tests.logTest.LargeValueLogTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) ``` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161026.02/workItem/System.Runtime.Numerics.Tests/details/736c97ed-fa83-4822-b30f-9350e3876764 +13067 area-System.Net Fix exception handling in reverse PInvokes in GetAllNetworkInterfaces Related to #12969 CoreCLR cannot propagate exceptions across native-managed boundaries. In `GetAllNetworkInterfaces`, we use reverse PInvokes, which under rare cases can throw exceptions. If the managed callbacks do not handle those exceptions, the process will crash, because application code cannot catch the exception. To fix this, I've aggregated all exceptions encountered during all callbacks, and thrown them after the completion of the shim call. I've also changed the `LinuxNetworkInterface` constructor code to ignore all exceptions encountered while reading and parsing network files. Any exception encountered in those blocks indicates that the data is either inaccessible or invalid. @stephentoub I'm still trying to run some manual tests against this code. +13068 area-Serialization Enable DCS/DCJS to Serialize ISerializable Types. The fix is to enable DCS/DCJS to serialize/deserialize types inheriting ISerializable interface. Ref #11477. /cc: @zhenlan @mconnew @huanwu +13070 area-Infrastructure Add actual net463 Target Framework Moniker Since it's not released yet, we're mapping `net463` to `.Net 4.6.2`. We need to add a .Net 4.7 TFM to enable certain tests that require APIs available only in the new version. +13071 area-Serialization ReflectionOnly Mode not Supporting ISerializable PR https://github.com/dotnet/corefx/pull/13068 enabled DCS/DCJS to serialize ISerializable types. We still need to make changes to enable reflection based serialization to support ISerializable. The following test in System.Runtime.Serialization.Xml.ReflectionOnly.Tests are failing, ``` DataContractJsonSerializerTests.DCJS_MyISerializableType DataContractSerializerTests.DCS_ExceptionObject DataContractSerializerTests.DCS_InnerExceptionMesageWithSpecialChars DataContractSerializerTests.DCS_ExceptionMesageWithSpecialChars DataContractSerializerTests.DCS_ArgumentExceptionObject DataContractSerializerTests.DCS_MyISerializableType ``` To fix this, take a look at PR https://github.com/dotnet/corefx/pull/13068 first, and changes probably need to be made in the following files, ``` ReflectionXmlFormatReader.cs ReflectionXmlFormatWriter.cs ReflectionJsonFormatReader.cs ReflectionJsonFormatWriter.cs ``` +13073 area-System.Net Remove P2P package references After the packages have been published to myget, remove the P2P references required by projects using newly added APIs. +13075 area-System.Net TLS SystemDefault support. Adding new APIs for TLS SystemDefaults and >256 SHA versions. Creating new S.N.Primitives, ServicePoint and Security for `netcoreapp11` and adding platform specific tests. Removing temporary package references now that we have them on myget. Fixes #11067, #12735 @davidsh @weshaggard @ericstj @stephentoub PTAL /cc @karelz +13076 area-System.Collections Add LargeArrayBuilder type to enscapulate ToArray logic The `EnumerableHelpers.ToArray` logic I introduced in #11208, while better in terms of memory consumption, employs a very imperative code style. I refactored the core logic into a new struct called `LargeArrayBuilder` so now the method looks like ``` cs // Check for ICollection var builder = new LargeArrayBuilder(initialize: true); builder.AddRange(source); return builder.ToArray(); ``` As a result of this refactoring, we can use the buffering strategy employed by `ToArray` in other places where we were previously using `EnumerableHelpers.ToArray(this)` (such as `Select.ToArray` or `Concat.ToArray`) and simultaneously avoid some unnecessary indirection/field stores. This results in substantial speedup. Perf testing and analysis: [test code](https://github.com/jamesqo/Dotnet/blob/4f08d2a4ce3c2aedf9bafec1516ffe3d86c22e81/Program.cs), [data](https://gist.github.com/jamesqo/2c7c07ccf64a52f0d52c1bd8902e407d). The following patterns all see substantial speedups (where `e` is a lazy enumerable): - `e.Concat.ToArray` - `e.Append.ToArray` - `e.Append.Append.ToArray` - `e.Select.ToArray` - `e.OrderBy.Select.ToArray` (OrderBy returns an IPartition that sometimes can't get its count cheaply) Once this is merged I will change #12703 to make `Where` use it too, so all `Where.ToArray` calls should be substantially faster. cc @stephentoub @jkotas @VSadov @JonHanna +13077 area-System.Numerics CI failure in Matrix4x4Tests.Matrix4x4CreateFromYawPitchRollTest2 See https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/2207. ``` 14:05:54 System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateFromYawPitchRollTest2 [FAIL] 14:05:54 Yaw:575 Pitch:-125 Roll:-230 14:05:54 Expected: True 14:05:54 Actual: False 14:05:54 Stack Trace: 14:05:54 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.Numerics.Vectors/tests/Matrix4x4Tests.cs(553,0): at System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateFromYawPitchRollTest2() ``` +13078 area-System.Linq Fixing liftToNull behavior in AddChecked and adding tests This fixes issue #13048 where `AddChecked` was the only node type that didn't pass `liftToNull: true` to the `GetUserDefinedAssignOperatorOrThrow` method used to find a user-defined addition operator. A regression test for this particular case is added in the PR, as well as additional tests for lifting behavior. CC @VSadov, @stephentoub +13079 area-System.Runtime Test failure: System.Runtime.InteropServices.RuntimeInformationTests.DescriptionNameTests/VerifyRuntimeDebugNameOnNetCoreUwp Opened on behalf of @jiangzeng The test `System.Runtime.InteropServices.RuntimeInformationTests.DescriptionNameTests/VerifyRuntimeDebugNameOnNetCoreUwp` has failed. Assert.Equal() Failure\r ? (pos 5)\r Expected: .NET Native 4.6.1586.0\r Actual: .NET Core 4.6.1586.0\r ? (pos 5) ``` Stack Trace: at System.Runtime.InteropServices.RuntimeInformationTests.DescriptionNameTests.VerifyRuntimeDebugNameOnNetCoreUwp() in D:\A\_work\43\s\corefx\src\System.Runtime.InteropServices.RuntimeInformation\tests\DescriptionNameTests.cs:line 36 ``` Build : Master - 20161026.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20161026.02/workItem/System.Runtime.InteropServices.RuntimeInformation.Tests/analysis/xunit/System.Runtime.InteropServices.RuntimeInformationTests.DescriptionNameTests~2FVerifyRuntimeDebugNameOnNetCoreUwp +13083 area-System.Net Block zero-byte calls to encrypt for Unix SslStream "SSL_write is described as having an undefined behavior. The observed behavior is that it returns 0 (which is ambiguous for ""wrote 0/0 bytes"" or ""writing failed""), and that we then try to read the framed message and the message buffer is empty. Trying to detect this case once inside the PAL seemed to violate assumptions of the common code, so instead a PAL-capability check is done in SslStreamInternal.StartWriting. Windows will continue to write the framed empty message, non-Windows will do nothing. Fixes #10858. cc: @stephentoub @ericeil @CIPop @davidsh " +13085 area-System.Xml Add netcoreapp1.1 test configurations for System.Private.Xml.Linq projects The following projects don't currently have a netcoreapp1.1 configuration which means that they are not being tested as part of CI. I tried adding it but a bunch of tests failed, so I left them as is for now, but this issue is to track the fixing of those tests and the addition of the netcoreapp1.1 configurations. ``` XsltScenarios.Tests.csproj System.Xml.Linq.Events.Tests.csproj System.Xml.Linq.Properties.Tests.csproj System.Xml.Linq.Streaming.Tests.csproj System.Xml.Linq.xNodeBuilder.Tests.csproj System.Xml.Linq.xNodeReader.Tests.csproj ``` cc: @krwq @sepidehMS @danmosemsft +13089 area-System.Linq Misc. cleanup of stack spiller code in System.Linq.Expressions When working on https://github.com/dotnet/corefx/issues/11740, I bunch of things in `StackSpiller` caught my eye, so I decided to do some cleanup: - Move classes into separate files, e.g. `ChildRewriter`. - Add XML doc comments to non-trivial components. - Mark inner classes as `sealed`. - Mark some fields as `readonly`. - Fix some comments. - Use some C# 6.0 features in places. - Ensure `var` usage consistency. - Remove unused parameters and code analysis suppressions. No semantic changes were made; this is mostly moving code around into separate files, addressing stylistic oddities, and adding documentation. ~~Once this is merged, the move of `ChildRewriter` to a separate file will cause a merge conflict / rebase requirement for https://github.com/dotnet/corefx/pull/12786. I'll deal with that.~~ +13090 area-System.Security Add X509Certificate PublicKey.Key and X509Certificate2.PrivateKey properties Address issue https://github.com/dotnet/corefx/issues/12369 - Port X509Certificates.PublicKey.Key and 509Certificate2.PrivateKey PublicKey.Key only works for RSA, throws PNSE for others. PrivateKey: setter throws PNSE; getter hooked up to RSA, DSA, ECC but no tests yet for DSA. DSA support for PublicKey.Key and DSA PrivateKey tests will be added with: https://github.com/dotnet/corefx/issues/11802 @bartonjs please review +13093 area-System.IO Add BinaryReader test with invaild Encoding "Test fails when running on `""Microsoft.NETCore.Runtime.CoreCLR"": ""1.2.0-beta-24601-02""` Passes on latest. @stephentoub, @ellismg " +13094 area-Infrastructure Code coverage does not work for types implemented in corlib Unfortunately many libraries in CoreFX are facades over implementations in mscorlib/System.Private.Corelib so this means right now we cannot get automatic code coverage for much of the types exposed by CoreFX. mscorlib is consumed via a nuget package from the CoreCLR repo. For code coverage to work mscorlib.pdb and System.Private.Corelib.pdb need to be placed next to their implementations (in the directory of the test assembly). These symbols are not in the main nuget package. Possibilities - get the symbols package manually (eg https://dotnet.myget.org/F/dotnet-core/symbols/runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.2.0-beta-24619-02 ) and then crack it open - get from the symbol servers by using [symchk](https://msdn.microsoft.com/en-us/library/windows/hardware/ff560157%28v=vs.85%29.aspx) .. example, `symchk.exe /s https://dotnet.myget.org/F/dotnet-core/symbols \System.Private.CoreLib.ni.dll`. Potential issues: symchk is presumably Windows only and also will need to be gotten itself. As an aside there currently seems to be an issue with some of these symbols not being correctly propped to the symbol server right now. @dagood what do you suggest? /cc @stephentoub +13095 area-System.Net [release/1.1.0] Block zero-byte calls to encrypt for Unix SslStream "SSL_write is described as having an undefined behavior for this input. The observed behavior is that it returns 0 (which is ambiguous for ""wrote 0/0 bytes"" or ""writing failed""), and that we then try to read the framed message and the message buffer is empty. Trying to detect this case once inside the PAL seemed to violate assumptions of the common code, so instead a PAL-capability check is done in SslStreamInternal.StartWriting. Windows will continue to write the framed empty message, non-Windows will do nothing. Fixes #10858 (for release/1.1.0). Port of #13083. cc: @stephentoub @ericeil @CIPop @davidsh Note to reviewers: cherry-pick didn't work automatically due to a file move, so this was re-written. " +13096 area-System.IO Enable Pipes RunAsClient test dependent on package update +13099 area-Serialization Compatiblity Issue of Serializing Custom Exceptions Opened the issue per @mconnew 's comments in PR #13068 on removing `ExceptionDataContract`, > I presume this was removed because exceptions are now ISerializable? If that's the case, then this might be a breaking change. Someone targeting an earlier version of .Net Standard won't have ISerializable available so won't have a serialization constructor. What will happen if they now try to deserialize a previously serialized derived exception while running on the newer version? Will they have different behavior? +13100 area-System.Text FxCop: System.Text.Encodings.Web.TextEncoderSettings calls virtual methods in constructors "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). The TextEncoderSettings type calls virtual methods in several of its constructors. This will not work if the class is overridden. ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Text.Encodings.Web\src\System.Text.Encodings.Web.builds"" (Build target) (439) -> ""E:\corefx\src\System.Text.Encodings.Web\src\System.Text.Encodings.Web.csproj"" (Build target) (440) -> System\Text\Encodings\Web\TextEncoderSettings.cs(32,13): error CA2214: Do not call overridable methods in constructors [E:\corefx\src\System.Text.Encodings.Web\src\System.Text.Encodings.Web.csproj] System\Text\Encodings\Web\TextEncoderSettings.cs(32,29): error CA2214: Do not call overridable methods in constructors [E:\corefx\src\System.Text.Encodings.Web\src\System.Text.Encodings.Web.csproj] System\Text\Encodings\Web\TextEncoderSettings.cs(46,13): error CA2214: Do not call overridable methods in constructors [E:\corefx\src\System.Text.Encodings.Web\src\System.Text.Encodings.Web.csproj] " +13101 area-Serialization To Support Serializing System.Reflection.Pointer +13102 area-System.Security FxCop: 2 System.Security.Principal types have serialization constructors with incorrect accessibility "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Security.Principal.Windows\src\System.Security.Principal.Windows.builds"" (Build target) (418) -> ""E:\corefx\src\System.Security.Principal.Windows\src\System.Security.Principal.Windows.csproj"" (Build target) (419) -> System\Security\Principal\IdentityNotMappedException.cs(35,18): error CA2229: Declare serialization constructor for sealed type IdentityNotMappedException as private [E:\corefx\src\System.Security.Principal.Windows\src\System.Security.Principal.Windows.csproj] System\Security\Principal\WindowsIdentity.cs(239,16): error CA2229: Declare serialization constructor for unsealed type WindowsIdentity as protected [E:\corefx\src\System.Security.Principal.Windows\src\System.Security.Principal.Windows.csproj] " +13103 area-System.Security FxCop: 3 types in System.Security.Permissions have incorrect or missing serialization constructors "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Security.Permissions\src\System.Security.Permissions.builds"" (Build target) (415) -> ""E:\corefx\src\System.Security.Permissions\src\System.Security.Permissions.csproj"" (Build target) (416) -> System\Security\XmlSyntaxException.cs(17,18): error CA2229: Declare serialization constructor for sealed type XmlSyntaxException as private [E:\corefx\src\System.Security.Permissions\src\System.Security.Permissions.csproj] System\Security\Policy\Hash.cs(11,33): error CA2229: Serializable type Hash doesn't have a serialization constructor [E:\corefx\src\System.Security.Permissions\src\System.Security.Permissions.csproj] System\Security\Policy\HashMembershipCondition.cs(11,33): error CA2229: Serializable type HashMembershipCondition doesn't have a serialization constructor [E:\corefx\src\System.Security.Permissions\src\System.Security.Permissions.csproj] " +13104 area-System.Security FxCop: X509Certificate needs to either be sealed or declare its serialization constructor as protected "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Security.Cryptography.X509Certificates\src\System.Security.Cryptography.X509Certificates.builds"" (Build target) (412) -> ""E:\corefx\src\System.Security.Cryptography.X509Certificates\src\System.Security.Cryptography.X509Certificates.csproj"" (Build target) (413) -> System\Security\Cryptography\X509Certificates\X509Certificate.cs(84,16): error CA2229: Declare serialization constructor for unsealed type X509Certificate as protected [E:\corefx\src\System.Security.Cryptography.X509Certificates\src\System.Security.Cryptography.X509Certificates.csproj] " +13105 area-System.IO [uap101aot] FxCop: 2 System.IO types have incorrect serialization constructors "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Runtime.WindowsRuntime\src\System.Runtime.WindowsRuntime.builds"" (Build target) (377) -> ""E:\corefx\src\System.Runtime.WindowsRuntime\src\System.Runtime.WindowsRuntime.csproj"" (Build target) (378:2) -> ""E:\corefx\src\System.IO\src\System.IO.csproj"" (default target) (116:7) -> System\IO\InvalidDataException.cs(27,18): error CA2229: Declare serialization constructor for sealed type InvalidDataException as private [E:\corefx\src\System.IO\src\System.IO.csproj] System\IO\EndOfStreamException.cs(10,18): error CA2229: Serializable type EndOfStreamException doesn't have a serialization constructor [E:\corefx\src\System.IO\src\System.IO.csproj] " +13106 area-System.Xml FxCop: 4 System.Xml types rethrow caught exceptions without using the rethrow statement. "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Private.Xml.Linq\src\System.Private.Xml.Linq.builds"" (Build target) (294) -> ""E:\corefx\src\System.Private.Xml.Linq\src\System.Private.Xml.Linq.csproj"" (Build target) (295) -> ""E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj"" (default target) (296) -> System\Xml\Xsl\Xslt\Scripts.cs(347,21): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\CompiledidEntityConstraint.cs(59,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\CompiledidEntityConstraint.cs(73,21): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\DataTypeImplementation.cs(3915,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\DataTypeImplementation.cs(3828,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\DataTypeImplementation.cs(3871,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\DataTypeImplementation.cs(3972,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] System\Xml\Schema\XmlSchema.cs(131,21): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Private.Xml\src\System.Private.Xml.csproj] " +13107 area-System.Net FxCop: System.Uri locks on a string. "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Private.Uri\src\System.Private.Uri.builds"" (Build target) (293) -> ""E:\corefx\src\System.Private.Uri\src\System.Private.Uri.csproj"" (Build target) (44:7) -> System\Uri.cs(2427,19): error CA2002: Do not lock on a reference of type 'string' as it has weak identity. Replace that with a lock against an object with strong identity. [E:\corefx\src\System.Private.Uri\src\System.Private.Uri.csproj] " +13108 area-System.Net FxCop: System.Net.Sockets.Socket rethrows caught exceptions without using the rethrow statement "This came from running FxCop analyzers on corefx. Reproduce steps found [here](https://gist.github.com/alexperovich/eabc4e9053ee8aca5bcda8caa379ea87). ""E:\corefx\src\src.builds"" (default target) (1) -> ""E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.builds"" (Build target) (258) -> ""E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj"" (Build target) (259) -> System\Net\Sockets\Socket.cs(4632,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(4756,21): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(4884,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(4943,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(5020,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(5098,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(5156,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] System\Net\Sockets\Socket.cs(5298,17): error CA2200: Re-throwing caught exception changes stack information. [E:\corefx\src\System.Net.Sockets\src\System.Net.Sockets.csproj] " +13110 area-System.Net Test failure: System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests/SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync -- On *nix Opened on behalf of @jiangzeng The test `System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests/SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync` has failed. System.AggregateException : One or more errors occurred. (This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired.) (This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired.) (This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired.) ---- System.PlatformNotSupportedException : This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired. ---- System.PlatformNotSupportedException : This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired. ---- System.PlatformNotSupportedException : This platform does not support connecting sockets to DNS endpoints via the instance Connect and ConnectAsync methods, due to the potential for a host name to map to multiple IP addresses and sockets becoming invalid for use after a failed connect attempt. Use the static ConnectAsync method, or provide to the instance methods the specific IPAddress desired. ``` Stack Trace: at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure) at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException) at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally) at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, Action`1 body) at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.RunClient(SocketImplementationType testType, String server, Int32 port, Int32 iterations, Int32 bufferSize, Int32 socketInstances) at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(Int32 port, SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) at System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync() ----- Inner Stack Trace #1 (System.PlatformNotSupportedException) ----- at System.Net.Sockets.Socket.ThrowIfNotSupportsMultipleConnectAttempts() at System.Net.Sockets.Socket.ConnectAsync(SocketAsyncEventArgs e) at System.Net.Sockets.Performance.Tests.SocketTestClientAsync.Connect(Action`1 onConnectCallback) at System.Net.Sockets.Performance.Tests.SocketTestClient.RunTest() at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.<>c__DisplayClass5_0.b__0(Int32 i) at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) at System.Threading.Tasks.TaskReplicator.Replica.Execute() ----- Inner Stack Trace #2 (System.PlatformNotSupportedException) ----- at System.Net.Sockets.Socket.ThrowIfNotSupportsMultipleConnectAttempts() at System.Net.Sockets.Socket.ConnectAsync(SocketAsyncEventArgs e) at System.Net.Sockets.Performance.Tests.SocketTestClientAsync.Connect(Action`1 onConnectCallback) at System.Net.Sockets.Performance.Tests.SocketTestClient.RunTest() at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.<>c__DisplayClass5_0.b__0(Int32 i) at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) at System.Threading.Tasks.TaskReplicator.Replica.Execute() ----- Inner Stack Trace #3 (System.PlatformNotSupportedException) ----- at System.Net.Sockets.Socket.ThrowIfNotSupportsMultipleConnectAttempts() at System.Net.Sockets.Socket.ConnectAsync(SocketAsyncEventArgs e) at System.Net.Sockets.Performance.Tests.SocketTestClientAsync.Connect(Action`1 onConnectCallback) at System.Net.Sockets.Performance.Tests.SocketTestClient.RunTest() at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.<>c__DisplayClass5_0.b__0(Int32 i) at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) at System.Threading.Tasks.TaskReplicator.Replica.Execute() ``` Build : Master - 20161027.05 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Fedora.23.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Release - AnyCPU-Debug - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Debian.82.Amd64 - AnyCPU-Debug - AnyCPU-Release - OSX.1011.Amd64 - AnyCPU-Debug - AnyCPU-Release - Suse.132.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release Also fail: SocketPerformance_SingleSocketClientAsync_LocalHostServerAsync Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161027.05/workItem/System.Net.Sockets.Async.Performance.Tests/analysis/xunit/System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests~2FSocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync +13114 area-System.Net Weird behavior of C# TcpClient/TcpListener - not read full input prevents sending before connection is closed I have described the issue I'm having here: [http://stackoverflow.com/questions/40258230/explain-weird-behavior-of-c-sharp-tcpclient-tcplistener-on-netcore](http://stackoverflow.com/questions/40258230/explain-weird-behavior-of-c-sharp-tcpclient-tcplistener-on-netcore) I am not sure if this is actually a bug or if it is meant to behave like this, but it is highly unexpected behavior and probably worth looking for someone with greater insight. +13115 area-System.Security Test failure: System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests/TestExplicitCurves Opened on behalf of @jiangzeng The test `System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests/TestExplicitCurves` has failed. System.DllNotFoundException : Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found. (Exception from HRESULT: 0x8007007E) ``` Stack Trace: at System.Security.Cryptography.EcDsa.Tests.Interop.Crypto.EcKeyCreateByOid(String oid) at System.Security.Cryptography.EcDsa.Tests.ECDsaProvider.IsValueOrFriendlyNameValid(String friendlyNameOrValue) at System.Security.Cryptography.EcDsa.Tests.CurveDef.get_IsCurveValidOnPlatform() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Security.Cryptography.EcDsa.Tests.ECDsaTestsBase.d__6.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ``` Build : Master - 20161027.05 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Fedora.23.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Release - AnyCPU-Debug - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Debian.82.Amd64 - AnyCPU-Debug - AnyCPU-Release - OSX.1011.Amd64 - AnyCPU-Debug - AnyCPU-Release - Suse.132.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release Also fail: TestExplicitCurves TestExplicitCurvesSignVerify TestNamedCurves TestNamedCurvesNegative TestChangeFromNamedCurveToKeySize TestRegenKeyExplicit TestRegenKeyNamed Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161027.05/workItem/System.Security.Cryptography.Algorithms.Tests/analysis/xunit/System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests~2FTestExplicitCurves +13116 area-System.Security Can't get System.Security.Cryptography.OpenSsl by nuget Install I can't get System.Security.Cryptography.OpenSsl by 'nuget.exe Install' since a few days. ``` yons.kim@s017:~/data/corefx$ mono nuget.exe Install -Pre -ExcludeVersion -Source `pwd`/bin/packages/Release/ -OutputDirectory interim/coreapp/ System.Security.Cryptography.OpenSsl Feeds used: /home/yons.kim/data/corefx/bin/packages/Release/ Attempting to gather dependency information for package 'System.Security.Cryptography.OpenSsl.4.4.0-beta-24726-0' with respect to project 'interim/coreapp/', targeting 'Any,Version=v0.0' Attempting to resolve dependencies for package 'System.Security.Cryptography.OpenSsl.4.4.0-beta-24726-0' with DependencyBehavior 'Lowest' Unable to resolve dependency 'runtime.alpine.3.4.3-x64.runtime.native.System.Security.Cryptography'. Source(s) used: 'nuget.org'. Unable to resolve dependency 'runtime.alpine.3.4.3-x64.runtime.native.System.Security.Cryptography'. Source(s) used: 'nuget.org'. ``` Anybody knows how to solve this problem? +13121 area-Infrastructure UWP test runner does not allow resolving external paths There are UWP test failures on Helix which are failing due to not being able to resolve external paths. (Please re-enable tests labelled with ActiveIssue when this is fixed) +13124 area-System.Security Stop producing old S.S.C.Native shim and package "Let's give things a couple weeks to bleed off the recent packaging changes, but everything should firmly be on System.Security.Cryptography.Native.OpenSsl or System.Security.Cryptography.Native.Apple now; so the ""leaving the old name around just in case"" shouldn't be needed anymore. Time to stop producing the old binary, and the old package. " +13126 area-System.Linq Adding by-ref support in stack spilling in System.Linq.Expressions "This addresses issue #11740 on stack spilling limitations when dealing with `ref` parameters and value type instances. Dealing with this restriction manually can be quite bothersome; I've run into this personally when building a (de)serialization framework that emits expression trees for efficiency. However, when value types are involved and the generated expression uses `Try` nodes, it's easy to fall victim to this restriction. A trivial example of this limitation is shown below: ``` csharp var dt = Parameter(typeof(DateTimeOffset)); var e = Lambda>( Call( // a value type instance dt, typeof(DateTimeOffset).GetMethod(nameof(DateTimeOffset.AddYears)), // causes stack spilling TryFinally( Constant(1), Empty() ) ), dt ); // throws NotSupportedException var f = e.Compile(); ``` The code throws the following exception: ``` Unhandled Exception: System.NotSupportedException: TryExpression is not supported as a child expression when accessing a member on type 'System.DateTimeOffset' because it is a value type. Construct the tree so the TryExpression is not nested inside of this expression. at System.Linq.Expressions.Compiler.StackSpiller.RequireNotRefInstance(Expression instance) at System.Linq.Expressions.Compiler.StackSpiller.RewriteMethodCallExpression(Expression expr, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.RewriteExpression(Expression node, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.RewriteExpressionFreeTemps(Expression expression, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.Rewrite[T](Expression`1 lambda) at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator) at System.Linq.Expressions.Expression`1.Compile() ``` Dealing with this in the suggested way requires an overhaul of the generated expression tree. Lifting this restriction seems worth the effort. The approach used in this PR is as follows: - Rather than throwing an exception from `RequireNotRefInstance` or `RequireNoRefArgs`, we use all these places to record the child expression's index of the value type instance or `ref` argument in the `ChildRewriter` instance. - When analysis of child expressions is done and the rewrite action is `SpillStack`, temporary variables for the spilled child expressions are created. The recorded `ref` information (by child expression index) is consulted to decide on whether to use a `ByRef` type instead. - In order to store a reference to a value to a `ByRef` temporary variable, a new internal-only `RefExpression` is used as the right-hand side of the assignment. This node behaves much like `ref` locals in C# 7.0. - The `LambdaCompiler` knows about the occurrence of `ref` locals and emits valid IL when encountering these. For example, rather than emitting `ldloca` to obtain a reference to a value-typed local, it can emit `ldloc` in case the local is a `ref` local introduced by spilling. Note that the use of an internal-only extension node is similar to the already existing internal-only `SpilledExpressionBlock` introduced by the stack spiller as well. These node types are only introduced during stack spilling and never leak to the user. For the example shown above, the rewritten expression tree after stack spilling looks like: ``` csharp var dt = Parameter(typeof(DateTimeOffset)); var t1 = Parameter(typeof(DateTimeOffset).MakeByRefType(), ""$temp$0""); var t2 = Parameter(typeof(int), ""$temp$1""); var e = Lambda>( Block( new[] { t1, t2 }, // save `ref dt` to a temporary variable Assign( t1, new RefExpression(dt) ), Assign( t2, TryFinally( Constant(1), Empty() ) ), Call( // emit for Call supports ref locals t1, typeof(DateTimeOffset).GetMethod(nameof(DateTimeOffset.AddYears)), t2 ) ), dt ) ) ``` Note that the construction of the rewritten expression tree during stack spilling does not use the `Expression` factory methods; instead, it uses `Make` methods and constructors on the node types. This enables nodes such as `Call`, `Member`, etc. to be constructed where the target instance or any arguments are `ByRef` types. The factory methods don't support these (and we don't want to change that now), but the changes to the `LambdaCompiler` emit functionality support the use of `ByRef` types in these positions (see `EmitInstance` and `AddressOf` changes). For the running example, the emitted IL code looks more or less like this: ``` .method valuetype System.DateTimeOffset lambda_method(valuetype System.DateTimeOffset) { .locals init ( [0] valuetype System.DateTimeOffset&, [1] int32, [2] int32 ) // spilling of instance (cf. EmitAddress) ldarga.0 stloc.0 // $temp$0 // evaluation stack empty, as required .try { ldc.i4.1 stloc.2 leave E } finally { endfinally } E: ldloc.2 stloc.1 // $temp$1 // perform the call in spilled operands ldloc.0 ldloc.1 call valuetype System.DateTimeOffset System.DateTimeOffset::AddYears(int32) ret } ``` This PR lifts the ""no ref"" restriction in pretty much all places, except for: - Arguments passed to `Method` of `BinaryExpression` and `UnaryExpression` (when can `ByRef` occur here?) - Arguments passed to the `Invoke` method of a dynamic call site (to be reviewed) - Instance of `MemberExpression` where `Member` is a property (what's there to spill in this case?) Many IL-level tests are included. Issue #13007 was uncovered by doing this work. CC @VSadov " +13127 area-System.IO System.IO.Tests.FileLoadExceptionInteropTests.Fom_HR https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2317/testReport/System.IO.Tests/FileLoadExceptionInteropTests/Fom_HR_hr___2146232799_/ Stacktrace MESSAGE: Assert.NotNull() Failure +++++++++++++++++++ STACK TRACE: at System.IO.Tests.FileLoadExceptionInteropTests.Fom_HR(Int32 hr) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\IO\FileLoadException.InteropTests.cs:line 43 +13128 area-Infrastructure Enable build tests against packages as the default scenario Currently we build and test in CI differently from the official pipeline. This change will help reduce inconsistencies in the way in which we build to expose issues sooner. The build will now build the product as packages, install them locally, restore the test-runtime deps for the locally built versions and then test them. The locally built packages are installed to the localpackages folder and the LKG set restored goes into the packages folder. Tests will only restore against locally built packages as a source and then copy the required LKG dependencies like specific runtime dependencies that aren't built locally. The localpackages are overwritten each time a build occurs so that only one version remains in the folder. Other changes required to make this work: - Add missing runtimes in the supports clause - Add LKG runtime packages not produced by the build /cc @weshaggard @chcosta @ericstj +13130 area-System.Globalization Port: DateTime.ToString(“o”) allocates 32 objects This is a tracking issue to consider porting this PR to .NET Framework. https://github.com/dotnet/coreclr/pull/7836 +13133 area-System.Linq Specializing layouts of LambdaExpression nodes This addresses issue #11400 by introducing specialized subtypes for `Expression` to reduce object size. As discussed in this issue, lambda expressions with 0, 1, 2, or 3 parameters are very common. In addition, the properties `Name` and `TailCall` are having default values most of the time (for one, the factory calls emitted by the conversion of lambdas to expression trees omit these). Therefore there's quite some room to save on object sizes. For services like the one I'm working on in Bing, these size reductions add up quickly. The design is similar to `IArgumentProvider` used for expressions like `MethodCallExpression` etc. We introduce an `IParameterProvider` to represent a lambda expression's parameters. Unlike `IArgumentProvider`, this interface is internal-only for the time being; we can decide whether it'd make sense to expose it and implement it on `CatchBlock` and `BlockExpression` as well. All tricks played to avoid allocating a `ReadOnlyCollection` until the `Parameters` property is accessed is similar to what we do for `Arguments` on other nodes (e.g. `ReturnReadOnly` etc.). Access to `Parameters` is avoided in all relevant places, e.g. in visitors, the lambda compiler, etc. The only exceptions are the debug-view writer, debugger proxy types, and the `Update` method on `LambdaExpression` (analogous to nodes that have an `Arguments` property). The class hierarchy starts with a base type that only holds on to the `Body` expression. Subclasses for 0 through 3 parameters are provided next, using an `object` typed field to hold either the first parameter or the `ReadOnlyCollection`. This should all look familiar. Beyond three parameters, we use `ExpressionN` which holds on to the collection directly. For the cases where a non-null `Name` is present or a `true` value for `TailCall` is specified, a `FullExpression` is used. This has the same cost as the current `Expression`. In order to avoid changing `sealed override` properties to `abstract` or non-virtual properties to `virtual` on the existing types, I'm using `Core` properties marked as `abstract` which are used by the original (unchanged) properties. These include `Type`, `Name`, and `TailCall`. We can simplify this if changes to these modifiers are deemed non-breaking (note that `LambdaExpression` is `abstract` but has an `internal` constructor, so external users wouldn't be able to derive from this class anyway). CC @VSadov +13134 area-System.Net Overhaul System.Net library logging "There are a few problems with the existing solution: 1. In the original sources, logging was split across a GlobalLog class and a Logging class. Global-related tracing went to GlobalLog, and library-specific tracing went to Logging. When the sources were moved to corefx, this evolved into multiple EventSource-based types, most of which were in Common and were then src-included into each System.Net assembly. This has a significant problem, though, which is that the name/Guid identity of an EventSource can only exist once in a process, and subsequent EventSource instances with the same identity fail. This means that whichever assembly ends up logging something first wins, and all other tracing from other System.Net assemblies ends up being lost. 2. The split also may have made sense when all components shared the same GlobalLog, but now that GlobalLog is included as a unique EventSource instance in each assembly, it’s no longer global. This means that we’re not only loading multiple EventSources unnecessarily (each has its own costs), but we’re also duplicating logging, as some logging is done to one or the other, but some logging is done to both. 3. Due to sharing the Logging class, which evolved into an EventSource-based type, many logging calls had to include which component they came from as an enum value, leading to bloating at the call sites. 4. Additionally, many logging operations included the name of the method in which the calling was being done, which meant both longer call sites as well as stale values as members got renamed over time. 5. Call sites ended up getting fairly long due to lots of string concatenation operations and other manipulations in the logging call. This also then led to most call sites needing to be guarded behind checks for IsEnabled, leading to lots of code at every call site and obscuring the actual information being traced. 6. An additional requirement that got added with the move to corefx was that certain failure conditions should both Debug.Fail and do tracing, leading to some tracing operations taking upwards of 10 lines of code. All of these issues are addressed by this PR. - Each System.Net assembly that needs to log now loads a single NetEventSource type for doing logging, each with its own identity. - That implementation is split across a common, partial NetEventSource.Common.cs file used by all such assemblies, and then a per-assembly partial NetEventSource.AssemblyName.cs file used by the individual assembly. The former file contains most of the logging implementation. The latter files typically contain just the partial class declaration along with the [EventSource] attribute that gives that assembly’s NetEventSource its unique identity / name. - The logging operations in NetEventSource.Common.cs use a variety of relatively-recent language enhancements to improve the logging. Each operation uses a [CallerMemberName] so that the call sites don’t need to specify the caller. FormattableString is used so that call sites can use string interpolation while still providing the logging implementation the flexibility to format the individual components in a desired fashion (e.g. IntPtrs are formatted as hex, SafeHandles are rendered in a way that includes their name+hashcode+handle, etc.), along with a mechanism that allows individual libraries to add additional formatting rules. Each operation allows the this reference (or another this-like context object) to be passed in, to simply identify the source of the call (in concert with the caller member name). A debug-only mechanism is included in the tracing to help find potential perf issues due to misuse of the logger. Etc. - A Fail logging operation is included that both traces and does a Debug.Fail. With these changes, most call sites are greatly simplified. Some examples: Before: ``` C# if (GlobalLog.IsEnabled) { GlobalLog.AssertFormat(""ContextAwareResult#{0}::ContextCopy|Called on completed result."", LoggingHash.HashString(this)); } Debug.Fail(""ContextAwareResult#"" + LoggingHash.HashString(this) + ""::ContextCopy |Called on completed result.""); ``` After: ``` C# NetEventSource.Fail(this, ""Called on completed result.""); ``` Before: ``` C# if (NetEventSource.Log.IsEnabled()) NetEventSource.Enter(NetEventSource.ComponentType.Http, this, "".ctor"", handler); ``` After: ``` C# NetEventSource.Enter(this, handler); ``` Etc. In addition to fixing up all of the event sources, I of course also fixed up all usage in order to clean up the call sites. However, this was a rather mechanical change: I did not remove existing logging (other than duplication) nor did I add new logging. At some point, we should review the actual logging being done to determine what’s missing and what’s not needed. I also did not revise the additional existing events on the sockets and security event sources, but we may want to remove those (or some of those) in favor of just using the shared events. Fixes https://github.com/dotnet/corefx/issues/5265 Fixes https://github.com/dotnet/corefx/issues/5755 Fixes https://github.com/dotnet/corefx/issues/12685 Fixes https://github.com/dotnet/corefx/issues/12808 cc: @cipop, @davidsh, @ericeil, @geoffkizer, @Priya91, @Petermarcu " +13135 area-System.Diagnostics System.Diagnostics.Process.GetProcessById fails to retrieve process on Linux "This was originally raised an issue on PowerShell repo under PowerShell/PowerShell#1851. When not running under sudo, `Get-Process -Id ` fails to get the process. This only happens if the target process is not owned by the current user. After some digging, it seems like it's related to how `ProcessManager.Unix.cs` tries to figure out if the given process is running or not. It does so by trying to issue a `Kill` command against the process: [System/Diagnostics/ProcessManager.Unix.cs](https://github.com/dotnet/corefx/blob/421407e7831356f7f28f48b35da9e58b43e0d6f2/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Unix.cs#L26-L31) ``` public static bool IsProcessRunning(int processId) { // kill with signal==0 means to not actually send a signal. // If we get back 0, the process is still alive. return 0 == Interop.Sys.Kill(processId, Interop.Sys.Signals.None); } ``` As opposed to `ProcessManager.Windows.cs`, which looks up the given processId in an array of processIds for currently running processes. I think it's running into permission issues because non-privileged users cannot signal processes not owned by themselves. `man 2 kill` actually describes the required permissions [kill(2)](https://linux.die.net/man/2/kill) / [Kill Permissions](https://www.gnu.org/software/libc/manual/html_node/Permission-for-kill.html#Permission-for-kill) ``` If sig is 0, then no signal is sent, but error checking is still performed; this can be used to check for the existence of a process ID or process group ID. For a process to have permission to send a signal it must either be privileged (under Linux: have the CAP_KILL capability), or the real or effective user ID of the sending process must equal the real or saved set-user-ID of the target process. In the case of SIGCONT it suffices when the sending and receiving processes belong to the same session. (Historically, the rules were different; see NOTES.) .... Linux notes Across different kernel versions, Linux has enforced different rules for the permissions required for an unprivileged process to send a signal to another process. In kernels 1.0 to 1.2.2, a signal could be sent if the effective user ID of the sender matched effective user ID of the target, or the real user ID of the sender matched the real user ID of the target. From kernel 1.2.3 until 1.3.77, a signal could be sent if the effec‐ tive user ID of the sender matched either the real or effective user ID of the target. The current rules, which conform to POSIX.1-2001, were adopted in kernel 1.3.78. ``` ## Repro ### Environment ``` nasir:~/proctest$ ~/.dotnet/dotnet --info .NET Command Line Tools (1.0.0-preview3-003842) Product Information: Version: 1.0.0-preview3-003842 Commit SHA-1 hash: 3ae14ab618 Runtime Environment: OS Name: ubuntu OS Version: 14.04 OS Platform: Linux RID: ubuntu.14.04-x64 ``` Also tested on Ubuntu 16.04, with `dotnet-dev-1.0.0-preview2-003131` ### Current Process list ``` nasir:~/proctest$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 2432 ? 00:00:00 /init nasir 2 1 0 2432 ? 00:00:02 /bin/bash root 2209 2 0 2432 ? 00:00:00 sudo bash root 2210 2209 0 2432 ? 00:00:00 bash nasir 2480 2 0 2432 ? 00:00:00 ps -ef ``` ### Testcode ``` using System; using System.Diagnostics; class Program { static void Main(string[] args) { if(args.Length != 1) { Console.WriteLine(""no input""); return; } try { int pid = Int32.Parse(args[0]); Process p = Process.GetProcessById(pid); Console.WriteLine(""PID: {0} Name: {1}"", p.Id, p.ProcessName); } catch(Exception ex) { Console.WriteLine(ex); } } } ``` ### Results Running against own process, expected results. ``` nasir:~/proctest$ ~/.dotnet/dotnet run 2 Project proctest (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. PID: 2 Name: bash ``` Running against one of root's processes, exception. ``` nasir:~/proctest$ ~/.dotnet/dotnet run 2210 Project proctest (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. System.ArgumentException: Process with an Id of 2210 is not running. at System.Diagnostics.Process.GetProcessById(Int32 processId, String machineName) at System.Diagnostics.Process.GetProcessById(Int32 processId) at Program.Main(String[] args) in /home/nasir/proctest/Program.cs:line 13 ``` Running against the same root's process, now with sudo. ``` nasir:~/proctest$ sudo !! sudo ~/.dotnet/dotnet run 2210 [sudo] password for nasir: Project proctest (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. PID: 2210 Name: bash ``` ### Expected Results Process.GetProcessById() should return the process information even for process running for other users. This is the expected behavior of utilities such as `ps` ``` nasir:~/proctest$ ps -f 1 UID PID PPID C STIME TTY STAT TIME CMD root 1 0 0 2432 ? Ss 0:00 /init ``` Furthermore, `Process.GetProcesses()` has no problem pulling up information on all processes currently running on the system. " +13138 area-Infrastructure Update buildtools and add suppressions This change updates buildtools and adds fxcop suppressions to our implementations of the DES, TripleDES, and RC2 CryptoServiceProviders. +13139 area-System.Security Add X509Certificate SecureString members Adds constructors to X509Certificate and X509Certificate2 that use SecureStrings. Partial implementation of issue https://github.com/dotnet/corefx/issues/12295 Implementation is same as netfx where `object` password is passed which can either be a `string` or `SecureString` and is converted to an `IntPtr` (that points to a temporary clear text password) in order to pass to the native method. @bartonjs please review +13140 area-System.Net Moving HttpVersion to System.Net.Primitives. Contributes to https://github.com/dotnet/corefx/issues/12510 All private copies of HttpVersion from other projects need to be removed.I am not sure how to use an unpublished API , the doc talks about adding direct csproj reference , but not clear if i can check-in that way. +13142 area-System.Threading Adding Overlapped Class to Threading @kouvel @jkotas @stephentoub @joperezr PTAL +13143 area-System.Xml Add remaining System.Xml.Linq members Addresses https://github.com/dotnet/corefx/issues/12817 Adds missing System.Xml.Linq members to netstandard2.0 @danmosemsft @AlexGhiondea @joperezr +13146 area-System.Diagnostics System.Environment.GetEnvironmentVariables() case sensitive but ProcessStartInfo.Environment/EnvironmentVariables insensitive "So I'm one of the maintainers of the [Cake build system](http://cakebuild.net), a couple of days ago we got reports on the gitters that we had an issue (cake-build/cake#1319) on Windows where cake wouldn't start on a specific machine. I tracked down to user getting duplicate ""home"" environment variables just the casing was different from `System.Environment.GetEnvironmentVariables()`. I just did quickfix to ignore if duplicates had same value and warn if value differed, now Cake started fine. Today when the original issuer tested the fix Cake indeed started fine but no tools would start. We set a couple of Cake specific environment variables and in that process we got this error: ``` Error: System.ArgumentException: Item has already been added. Key in dictionary: 'home' Key being added: 'HOME' at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Diagnostics.ProcessStartInfo.get_EnvironmentVariables() at Cake.Core.Polyfill.ProcessHelper.SetEnvironmentVariable(ProcessStartInfo info, String key, String value) at Cake.Core.IO.ProcessRunner.Start(FilePath filePath, ProcessSettings settings) at Cake.Core.Tooling.Tool1.RunProcess(TSettings settings, ProcessArgumentBuilder arguments, ProcessSettings processSettings) at Cake.Core.Tooling.Tool1.Run(TSettings settings, ProcessArgumentBuilder arguments, ProcessSettings processSettings, Action1 postAction) at Cake.Core.Tooling.Tool1.Run(TSettings settings, ProcessArgumentBuilder arguments) at Cake.Common.Tools.NuGet.Restore.NuGetRestorer.Restore(FilePath targetFilePath, NuGetRestoreSettings settings) at Cake.Common.Tools.NuGet.NuGetAliases.NuGetRestore(ICakeContext context, FilePath targetFilePath, NuGetRestoreSettings settings) at Cake.Common.Tools.NuGet.NuGetAliases.NuGetRestore(ICakeContext context, FilePath targetFilePath) ``` With help of strack trace I tracked down the issue to [ProcessStartInfo.EnvironmentVariables](https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/ProcessStartInfo.cs,5611ad13d0b7376e,references) and [ProcessStartInfo.Environment](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs#L82) Our code to set the Cake specific variables basically looked like below ``` csharp #if NETCORE info.Environment[key] = value; #else info.EnvironmentVariables[key] = value; #endif ``` So in a naive initial attempt to work around I tried to lookup key and set it with that key so it was the same casing, that worked fine on posix, but not on Windows. Strangely `ProcessStartInfo` didn't blow up if I didn't set any envvars, so I started thru reference source and corefx and found similar code we had in Cake before I added value comparison and warnings. [Reference source](https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/ProcessStartInfo.cs,193) looked like this: ``` csharp #if PLATFORM_UNIX environmentVariables = new CaseSensitiveStringDictionary(); #else environmentVariables = new StringDictionaryWithComparer (); #endif // PLATFORM_UNIX foreach (DictionaryEntry entry in System.Environment.GetEnvironmentVariables()) environmentVariables.Add((string)entry.Key, (string)entry.Value); ``` And [corefx](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs#L103) looked like this: ``` csharp if (_environmentVariables == null) { IDictionary envVars = System.Environment.GetEnvironmentVariables(); _environmentVariables = new Dictionary(envVars.Count, CaseSensitiveEnvironmentVariables ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase); IDictionaryEnumerator e = envVars.GetEnumerator(); try { while (e.MoveNext()) { DictionaryEntry entry = e.Entry; _environmentVariables.Add((string)entry.Key, (string)entry.Value); } } finally { (e as IDisposable)?.Dispose(); } } ``` That explained why I only encountered the error when using the property as it was lazy loaded. The original issue it was a GIT commit hook the resulted in the ""double"" home/HOME variables, but when digging deeper I found some non .NET based build agents happily all possible variants of ""home"". So I dug deeper to see if I could repro in .NET and initial answer was no (due too StringDictionary lower casing and OrdinalIgnoreCase comparer on the dictionary). Thru reflection though I was able to initialize the `ProcessStartInfo` `environmentVariables` field before property was used with a case sensitive implementation similar to the posix one. Then I could add variables like this ``` csharp startInfo.EnvironmentVariables[""a""] = ""B""; startInfo.EnvironmentVariables[""A""] = ""b""; ``` The child process could easily iterate environment variables like this ``` csharp foreach (DictionaryEntry entry in Environment.GetEnvironmentVariables()) { Console.WriteLine(""Key: {0}, Value: {1}"", entry.Key, entry.Value); } ``` and it outputted: ``` Key: A, Value: b Key: a, Value: B ``` but if I tried to start a child process with specified custom envars like this ``` csharp var startInfo = new ProcessStartInfo(assemblyLocation, ""3"") {UseShellExecute = false}; startInfo.EnvironmentVariables[""C""] = ""d""; new Process { StartInfo = startInfo }.Start(); } ``` it would blow up (obviously because duplicate key) ``` System.ArgumentException: Item has already been added. Key in dictionary: 'A' Key being added: 'a'... ``` Not setting custom environment variable worked fine though: ``` csharp new Process { StartInfo = new ProcessStartInfo(assemblyLocation, ""4"") {UseShellExecute = false} }.Start(); ``` So what am I missing? Is there some reason behind this behavior? It feels a bit fragile that adding one envvar to parent process can mess up the runtime for all child processes, not good at all. I've made avail the quick n dirty repro here: https://github.com/devlead/EnvironmentProcessStartRepro/tree/master/EnvironmentProcessStartRepro " +13148 area-System.Net "Use ""throw;"" instead of ""throw e;"" in Socket" Fixes https://github.com/dotnet/corefx/issues/13108 cc: @davidsh, @cipop, @ericeil, @geoffkizer, @alexperovich +13149 area-System.Security Add deserialization ctors to several permissions types - Adds deserialization ctors to several permissions types that were missing them. - Added a test to ensure that every [Serializable] permissions object can be serialized/deserialized. - In doing so hit an issue where xunit failed due to trying to enumerate the collection objects being provided but where those collections returned null from GetEnumerator methods, so I changed such methods to return empty enumerators rather than returning null. - And fixed a bit of formatting in the tests while I was there. Fixes https://github.com/dotnet/corefx/issues/13103 cc: @danmosemsft, @alexperovich +13150 area-System.Xml "Use ""throw;"" instead of ""throw e;"" in System.Private.Xml" Fixes https://github.com/dotnet/corefx/issues/13106 cc: @alexperovich, @sepidehMS +13152 area-System.Net Update HtmlEntities to decode HTML5 entities Note: I had to change the lookup from a Dictionary<string,char> to a Dictionary<string,string> in order to account for HTML entities that represent multiple Unicode characters, like &acE; for example. Closes #13036 @karelz +13154 area-Meta How to use locally compiled corefx? Apologies if this is something very basic and I've missed some obvious documentation. I have cloned and successfully built the corefx repo locally on a Ubuntu machine, following the directions from [Developer Guide](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md). At this point, I'm at a loss on how actually I can build an app using the framework I just compiled? I've tried using `dotnet restore` with `--source` option but that didn't seem to work. +13156 area-System.Globalization ConvertTimeFromToUtc_UnixOnly test failing in CI Examples: https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_debug_prtest/6/consoleText ``` System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly [FAIL] Assert.Equal() Failure Expected: 2016-10-30T00:14:49.6054190Z Actual: 2016-10-30T01:14:49.6054190Z Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug_prtest/src/System.Runtime/tests/TimeZoneInfoTests.netstandard1.7.cs(150,0): at System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/2394/ ``` System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly [FAIL] Assert.Equal() Failure Expected: 2016-10-30T00:32:13.3583810Z Actual: 2016-10-30T01:32:13.3583810Z Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/System.Runtime/tests/TimeZoneInfoTests.netstandard1.7.cs(151,0): at System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/2363/consoleText ``` System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly [FAIL] Assert.Equal() Failure Expected: 2016-10-30T00:31:21.5156990Z Actual: 2016-10-30T01:31:21.5156990Z Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.Runtime/tests/TimeZoneInfoTests.netstandard1.7.cs(151,0): at System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/2430/ ``` System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly [FAIL] Assert.Equal() Failure Expected: 2016-10-30T00:31:07.3478170Z Actual: 2016-10-30T01:31:07.3478170Z Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Runtime/tests/TimeZoneInfoTests.netstandard1.7.cs(150,0): at System.Tests.TimeZoneInfoTests.ConvertTimeFromToUtc_UnixOnly() ``` +13158 area-System.Collections Faster ImmutableArray.InsertRange for well-known ICollections and lazy enumerables **edit:** The optimization for inserting arrays has been removed temporarily. See comment at https://github.com/dotnet/corefx/pull/13158#discussion_r87054718 A couple of changes: - The `InsertRange` overload accepting an `ImmutableArray` is specialized to just use `Array.Copy` instead of deferring to the `IEnumerable` overload. - The `AddRange` that accepts an `ImmutableArray` now defers to this instead of the `AddRange` that takes an enumerable. - `ImmutableArray.CreateRange` optimization where we return an empty array for 0-length sequences has been moved downstream to `ImmutableExtensions.ToArray`. - For use by `AddRange`, introduce an `ImmutableExtensions.CopyTo` method which copies directly to the underlying array if possible. - We only do this for well-known types since a bad ICollection implementation might hold on to the array; if the addend is not an array, List, or ImmutableArray, then we fallback to using foreach. - This optimization also benefits lazy enumerables since they are captured into a list during `ImmutableExtensions.GetCount`. - It penalizes slightly types that implement ICollection/IReadOnlyCollection but not IList, like Queue (1 extra typecast), and significantly for types that implement IList but aren't well known, like LinkedList (4 extra typecasts). - Add testing and convert related tests to use `Theory` for brevity cc @stephentoub, @AArnott +13159 area-Infrastructure How to locally compile corefx on Windows? "When running the `build-managed.cmd` I'm getting the following error: ``` c:\work\corefx>build-managed.cmd Tools are already initialized. Running: c:\work\corefx\Tools\msbuild.cmd /nologo /verbosity:minimal /clp:Summary /maxcpucount /nodeReuse:false /l:BinClashLogger,Tools\net45\Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:OSGroup=Windows_NT /p:TargetOS=Windows_NT /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err [13:47:51.44] Verifying all auto-upgradeable dependencies... [13:47:52.28] Verifying all auto-upgradeable dependencies... Done. [13:47:52.28] Restoring all packages... EXEC : error : Failed to retrieve information from remote source 'https://dotne tmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/syste m.security.securestring/index.json'. [c:\work\corefx\build.proj] EXEC : error : An error occurred while sending the request. [c:\work\corefx\bui ld.proj] EXEC : error : The connection with the server was terminated abnormally [c:\wor k\corefx\build.proj] EXEC : error : Failed to retrieve information from remote source 'https://dotne tmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/syste m.security.securestring/index.json'. [c:\work\corefx\build.proj] EXEC : error : An error occurred while sending the request. [c:\work\corefx\bui ld.proj] EXEC : error : The connection with the server was terminated abnormally [c:\wor k\corefx\build.proj] EXEC : error : Failed to retrieve information from remote source 'https://dotne tmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/syste m.security.cryptography.protecteddata/index.json'. [c:\work\corefx\build.proj] EXEC : error : An error occurred while sending the request. [c:\work\corefx\bui ld.proj] EXEC : error : The connection with the server was terminated abnormally [c:\wor k\corefx\build.proj] c:\work\corefx\build.proj(100,5): error MSB3073: The command """"c:\work\corefx\T ools/dotnetcli/dotnet.exe"" restore --no-cache --packages ""c:\work\corefx\packag es"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --s ource https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https:/ /www.nuget.org/api/v2/ ""c:\work\corefx\src/Common/test-runtime/project.json"""" e xited with code 1. ``` " +13160 area-System.Net Fix mocked LazyAsyncResult in System.Net.Security unit tests The APM pattern requires that the AsyncCallback always be invoked, even for synchronously completed IAsyncResult instance. Fixes https://github.com/dotnet/corefx/issues/12893 cc: @davidsh, @cipop, @ericeil, @joperezr +13162 area-System.Net Enable sockets perf tests to run on Unix The tests fail on Unix due to the instance Socket.Connect{Async} methods not being supported with DNS endpoints. This fix addresses that by changing the code on Unix to use the static ConnectAsync method. Fixes https://github.com/dotnet/corefx/issues/13110 cc: @cipop, @davidsh, @geoffkizer, @ericeil +13167 area-Infrastructure Unblock failing Windows Nano runs. +13168 area-System.Net Add additional diagnostics to DummyTcpServer To help track down an unhandled exception that's occurred sporadically in System.Net.Security tests. Contributes to https://github.com/dotnet/corefx/issues/12939 cc: @davidsh +13169 area-System.Net System.Net.WebSockets.Client - ReceiveAsync multiple-call failure behavior platform dependent. "As I chronicle at one point in #12487 , `ReceiveAsync` has very different failure behaviors between Windows and all other platforms (potentially to other Windows platforms, too). Note this behavior is **not** the result of a race condition. I expect that `SendAsync` is also affected by this, but haven't investigated fully. The critical part for Windows is in [WinHttpWebSocket](https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WinHttpWebSocket.cs#L395-L446), but what ends up happening is that when the second call to `ReceiveAsync` happens, the second call sets up the exception on the TCS returned by the _first_ call, then also returns that **same** task: ```c# if (receiveOperationAlreadyPending) { var exception = new InvalidOperationException( SR.Format(SR.net_Websockets_AlreadyOneOutstandingOperation, ""ReceiveAsync"")); _operation.TcsReceive.TrySetException(exception); Abort(); } return _operation.TcsReceive.Task; ``` (Given the locking that occurs, this is guaranteed to happen even if submitted on two concurrently running threads, although which one gets it would be up in the air) This is clearly different from the behavior on Linux/elsewhere, when going through [ManagedWebSocket](https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ManagedWebSocket.cs#L288-L309) it returns a separate task containing an `InvalidOperationException`, leaving the first task to complete ""on it's own"" - it dies as `Abort`ed, I believe throwing a `WebSocketException`: ```c# try { WebSocketValidate.ThrowIfInvalidState(_state, _disposed, s_validReceiveStates); Debug.Assert(!Monitor.IsEntered(StateUpdateLock), $""{nameof(StateUpdateLock)} must never be held when acquiring {nameof(ReceiveAsyncLock)}""); lock (ReceiveAsyncLock) // synchronize with receives in CloseAsync { ThrowIfOperationInProgress(_lastReceiveAsync); Task t = ReceiveAsyncPrivate(buffer, cancellationToken); _lastReceiveAsync = t; return t; } } catch (Exception exc) { return Task.FromException(exc); } ``` .... sooooo, what's the expected behavior here? What should the tests anticipate?" +13170 area-System.Globalization Globalization Formatting Tests need to cover more input scenarios Noticed this when working on the DateTime and DateTimeOffset code. Most test just test max value and not important other cases. It may be a good idea to have a theory with a variety of inputs would be best. It should be evaluated for all these tests, not just this format. Min value, Max value, combined with 0, min and max offsets. Now, and some interesting hard coded dates that exercise things in the middle. That should be the data set we feed into all the parsing code. See https://github.com/dotnet/corefx/pull/13165 for an example where a test is being added but its still only barely exercising the code. +13171 area-System.Globalization Consider porting perf fix for Formatting RFC 1123 https://github.com/dotnet/coreclr/issues/7881 +13172 area-System.Net Send failed HTTP requests to DiagnosticSource "HttpHandlers [currently send](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpHandlerToFilter.cs#L52) the events `System.Net.Http.Request` and `System.Net.Http.Response` to DiagnosticSource. However, `System.Net.Http.Response` is only sent for successful requests - nothing is sent if sending fails with an exception. Would it be possible to do this similar to [SqlCommand](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs#L768), where there are events for successful and failed completion? My scenario: I'm creating an integration for [opentracing.io](https://opentracing.io) - a *distributed tracing standard*. I'm creating ""spans"" (objects with tracing information) for several interesting components (HTTP calls, SQL calls, etc.). Spans are created in a hierarchy: e.g. ASP.NET Core request starts root span, outgoing HTTP call creates child span, ... I'm storing spans in a stack in AsyncLocal storage - So as long as there is a parent component that started a root span and can catch exceptions (e.g. ASP.NET Core request), I'm able to finish all open spans. However, an outgoing HTTP call could also be a root span if there is no parent component - e.g. in a background call, etc. If there's an exception in that case, I'm ""out of scope"" and haven't found a way to access my object. /alphabetical cc for participants from #5881: @avanderhoorn @davidsh @delmyers @nbilling @stephentoub @vancem" +13173 area-System.Net "Dns.GetHostAddressesAsync() Error: ""Device Not Configured""" Hii, I'm currently developing an ASP .NET Core Application on my mac using VS Code. I'm trying to send an email using the MailKit and MimeKit packages but i keep receiving an error on GetHostAddressesAsync(), error message: Device not configured. I was told that this might be a bug on Stack Exchange or that i could get guidance here on the configuration steps i might have missed or need to take. +13175 area-System.Diagnostics Bring Process APIs requiring SecureString to netstandard2.0 The following APIs need to be brought back once SecureString is available: ```csharp public class Process : Component { public static Process Start(string fileName, string userName, SecureString password, string domain); public static Process Start(string fileName, string arguments, string userName, SecureString password, string domain); } public sealed class ProcessStartInfo { public SecureString Password { get; set; } } ``` +13176 area-System.Runtime Bring remaining *Exceptions types and members to netstandard2.0 There are a few remaining exceptions (either entirely or to complete existing ones) that we need to bring over to netstandard2.0: ```csharp public class BadImageFormatException : SystemException { public string FusionLog { get; } public override void GetObjectData(SerializationInfo info, StreamingContext context); } public class DuplicateWaitObjectException : ArgumentException { public DuplicateWaitObjectException(); protected DuplicateWaitObjectException(SerializationInfo info, StreamingContext context); public DuplicateWaitObjectException(string parameterName); public DuplicateWaitObjectException(string message, Exception innerException); public DuplicateWaitObjectException(string parameterName, string message); } public class MissingFieldException : MissingMemberException, ISerializable { public MissingFieldException(string className, string fieldName); } public class MissingMemberException : MemberAccessException, ISerializable { protected byte[] Signature; protected string ClassName; protected string MemberName; public MissingMemberException(string className, string memberName); } public class MissingMethodException : MissingMemberException, ISerializable { public MissingMethodException(string className, string methodName); } public class TypeUnloadedException : SystemException { public TypeUnloadedException(); protected TypeUnloadedException(SerializationInfo info, StreamingContext context); public TypeUnloadedException(string message); public TypeUnloadedException(string message, Exception innerException); } ``` We should also rename the parameter from innerException to inner here: ```csharp public class EntryPointNotFoundException : TypeLoadException { public EntryPointNotFoundException(string message, Exception inner); } ``` +13177 area-System.ComponentModel Make DoWorkEventArgs derive from CancelEventArgs This will require the move of CancelEventArgs from System.ComponentModel to System.ComponentModel.Primitives. +13178 area-Infrastructure Updating CoreFx dependencies to servicing-24631-03 +13179 area-System.Runtime Port remaining attributes to netstandard2.0 ```csharp namespace System.Runtime { public sealed class AssemblyTargetedPatchBandAttribute : Attribute { public AssemblyTargetedPatchBandAttribute(string targetedPatchBand); public string TargetedPatchBand { get; } } public sealed class TargetedPatchingOptOutAttribute : Attribute { public TargetedPatchingOptOutAttribute(string reason); public string Reason { get; } } } ``` +13180 area-System.Runtime Adding concrete data to validate R and O Formats @tarekgh @stephentoub , can you take a look? +13181 area-System.Net Disable tests to unblock CI Disabling tests for #12637, #12778, #10504, and #13188 +13182 area-System.Runtime Add more appdomain apis +13183 area-Meta Cleanup include: compile usage in test-runtime "This was being used for packages that were platform-specific. Instead of using this hack don't include those in the netstandard dependency sections. Make sure we do include them (without using the `""include"": ""compile""` constraint) in the frameworks that do support them. Make a netcoreapp1.0 specific section that includes Loader, otherwise this is just a copy of netstandard1.6 section which was previously being used. Fixes #12780 /cc @karajas" +13184 area-System.IO Optimize DeflateStream.CopyToAsync "Today, CopyToAsync on DeflateStream is the basic read/write loop. However, all CopyToAsync really needs to do on DeflateStream is transform the source data (via a synchronous operation) and pass it along to the destination. This means that we can improve its implementation by effectively having the source stream CopyToAsync to the destination stream, albeit with that transformation added in the middle. Doing this has a three key benefits: - It eliminates the read operations and the associated copy, allowing the source to effectively push directly to the inflater inside DeflateStream. - It takes advantage of any optimizations the source stream has in its CopyToAsync implementation, e.g. MemoryStream simply passing its whole internal buffer, NetworkStream using a SocketAsyncEventArgs (https://github.com/dotnet/corefx/pull/12664), FileStream reusing its async state (https://github.com/dotnet/corefx/pull/11569), etc. - CopyToAsync is typically used when no other reading has been done from the stream. Since this change causes CopyToAsync to bypass the internal buffer used by DeflateStream before the inflater itself, we can avoid allocating that buffer at all if CopyToAsync is used by itself. This avoids an 8K allocation per DeflateStream instance, and even if we switch to pulling this buffer from ArrayPool, it still avoids needing to rent/return with the ArrayPool in these cases. (I also noticed an unnecessary allocation in Inflater, which I removed.) The net effect of this change is a sizeable boost on throughput for many scenarios (I didn't find any scenarios where it regressed). Here are a few examples. In this table, ""MS"" is a memory stream, so ""MS to MS"" is using DeflateStream created around a compressed MemoryStream and using CopyToAsync on the DeflateStream to decompress it to another MemoryStream. ""CMS"" is a ""CustomMemoryStream"", which is simply a type that derives from MemoryStream and doesn't add or override any logic; this derivation defeats some the CopyToAsync optimization in MemoryStream, so this is essentially the worst case for this DeflateStream optimization. And ""FS"" is FileStream, where a ""(true)"" suffix means useAsync==true (in which case FileStream has its own CopyToAsync implementation) and a ""(false)"" suffix means useAsync==false (in which case it essentially delegates back to the base Stream's CopyToAsync). ""Len"" is the length of the original random input in bytes, and ""Iters"" is the number of iterations (the number of times positions were reset and CopyToAsync was called). | Test | Before (s) | After (s)| |---------------------------------------------------|-----------|-----------| | MS to MS (Len=1024 Iters=1024000) | 2.767149 | 1.601566 | | MS to MS (Len=1048576 Iters=1000) | 0.419615 | 0.139993 | | MS to MS (Len=10485760 Iters=100) | 0.358287 | 0.223764 | | CMS to CMS (Len=1024 Iters=1024000) | 2.832110 | 1.963891 | | CMS to CMS (Len=1048576 Iters=1000) | 0.271432 | 0.202536 | | CMS to CMS (Len=10485760 Iters=100) | 0.347356 | 0.316338 | | FS(True) to FS(True) (Len=1024 Iters=102400) | 10.315941 | 6.909713 | | FS(True) to FS(True) (Len=1048576 Iters=100) | 0.940410 | 0.124353 | | FS(True) to FS(True) (Len=10485760 Iters=10) | 1.000786 | 0.152991 | | FS(True) to FS(False) (Len=1024 Iters=102400) | 9.936322 | 6.967522 | | FS(True) to FS(False) (Len=1048576 Iters=100) | 0.705946 | 0.085895 | | FS(True) to FS(False) (Len=10485760 Iters=10) | 0.925196 | 0.159865 | | FS(False) toFS (True) (Len=1024 Iters=102400) | 8.630263 | 6.699364 | | FS(False) toFS (True) (Len=1048576 Iters=100) | 0.880577 | 0.116051 | | FS(False) toFS (True) (Len=10485760 Iters=10) | 0.862978 | 0.142838 | | FS(False) toFS (False) (Len=1024 Iters=102400)| 5.260478 | 4.388572 | | FS(False) toFS (False) (Len=1048576 Iters=100) | 0.346608 | 0.078440 | | FS(False) toFS (False) (Len=10485760 Iters=10) | 0.432393 | 0.157312 | Fixes https://github.com/dotnet/corefx/issues/11571 Contributes to https://github.com/dotnet/corefx/issues/12549 cc: @ianhays, @JeremyKuhne, @geoffkizer, @benaadams, @davidfowl (@ianhays, please pay careful attention to my use of the inflater. I essentially copied what was in ReadAsync and refactored it, and I want to make sure I'm using it correctly / didn't misunderstand anything about its behavior.)" +13186 area-Meta Add minimum RAM requirements to Unix instructions My VM only had 1GB RAM (since that's the minimum req'd for CoreCLR) and the CoreFX build kept crashing. I eventually saw via monitoring that it was running out of memory, and increasing RAM to 2GB solved this for me, so I figured it should be documented to save others the same trouble(shooting). +13187 area-System.Net Implement HttpListener for non-Windows platforms #11793 covers the general task of porting HttpListener; however, we will actually need *two* implementations: a Windows-specific implementation that takes advantage of http.sys, and a x-plat implementation. Since this is more work than is implied by a single issue, I'm filing this new issue to cover the x-plat work. +13188 area-System.Net HttpClientHandlerTest.Proxy_BypassFalse_GetRequestGoesThroughCustomProxy failed in CI Failed in PR #13181 System.Net.Http.Functional.Tests.HttpClientHandlerTest.Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds: null, wrapCredsInCache: False) https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/89/ System.AggregateException : One or more errors occurred. (Object reference not set to an instance of an object.) (An error occurred while sending the request.) (One or more errors occurred. (An error occurred while sending the request.))\r\n---- System.NullReferenceException : Object reference not set to an instance of an object.\r\n---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n-------- System.Net.Http.WinHttpException : The operation has been canceled\r\n---- System.AggregateException : One or more errors occurred. (An error occurred while sending the request.)\r\n-------- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n------------ System.Net.Http.WinHttpException : The operation has been canceled +13189 area-Serialization Implement two ctors of DataContractJsonSerializer's. The fix enables DataContractJsonSerializer's constructors that take root name as parameter. Fix #12639 +13190 area-Serialization Remove [SecuritySafeCritical] and [SecurityCritical] in System.Private.DataContractSerialization SecuritySafeCritical or SecurityCritical is a no-op on NetCore as there's no partial trust. The task is to remove all of these attributes from methods. +13191 area-Serialization Add S.R.Serialization.DictionaryGlobals's missing Entires Back We should consider to add those missing entries that used for xml schema validation back as `System.Xml.XmlShema` is available now. +13193 area-Meta Fix FxCop errors I was trying to pick up the latest buildtools and ran into fxcop errors. https://github.com/dotnet/corefx/pull/13192 fixes some of them, this fixes the rest. /cc @alexperovich @karajas @danmosemsft +13194 area-System.Linq Adding missing members to Expression class Fixes #12606 1. Moving most of System.Dynamic.Runtime down to System.Linq.Expressions since the missing members depended on most of it. 2. Adding missing members to the Expression class. I'm currently working on adding a few tests for the new API, but wanted to get initial feedback since I'm moving some stuff around. cc: @danmosemsft @weshaggard @stephentoub @AlexGhiondea +13195 area-Infrastructure Updating CoreClr dependencies to servicing-24631-04 +13196 area-System.Security Security suppressions +13197 area-System.Xml Add netcoreapp1.1 configurations for System.Xml.Linq tests Addresses https://github.com/dotnet/corefx/issues/13085 The three XNodeBuilder tests used to have ActiveIssues which we are not going to fix as the behaviour is compatible with Desktop: https://github.com/dotnet/corefx/issues/4054 https://github.com/dotnet/corefx/issues/4057 https://github.com/dotnet/corefx/issues/4063 [These issues were initially created because the behaviour does not match the specification and is by design] cc: @danmosemsft @joperezr @weshaggard +13198 area-System.Runtime "Remove ""missing types"" workaround" GenFacades has a switch that works better. /cc @weshaggard +13199 area-Meta Default empty target group NETCoreApp This refactors all builds to make the netcoreapp-latest to be the default build. To do this I needed to be specific about the contract project in a few cases so I made a fix to build tools to permit that and brought over that fix as part of this commit. In the future (once we stop building netstandard refs in corefx) we can make this directly enforced with the targets. /cc @weshaggard @ellismg @chcosta +13201 area-System.Xml Add System.Private.Xml.Linq test coverage for Non-Windows platforms All of the tests under System.Private.Xml.Linq are windows-specific, which shouldn't be necessary. Remove the OSGroup from the builds file and fix any failing tests. +13202 area-Serialization Enable S.R.Serialization.Xml and S.R.Serialization.Json Tests on Uap 10.1 We need to properly condition the test code and/or projects as well to make sure they still build and work on older versions. We currently are not able to run these tests against uwp because it doesn't support netstandard1.7 yet. +13203 area-System.Diagnostics Bring remaining System.Diagnostics.* members to netstandard2.0 Fixes #12797 cc @AlexGhiondea @joperezr @stephentoub @danmosemsft +13207 area-System.IO System.IO.Compression.ZipFile: CreateEntriesFromDirectory # Problem When creating or updating zip archives there is no option to add a directory with its content. The content of a directory can only be added with custom code by hand. `ZipFile.CreateFromDirectory` is not an option when building complex zip archives. # Proposed API ```diff namespace System.IO.Compression { public static partial class ZipFile { public static void CreateFromDirectory(string sourceDirectoryName, string destinationArchiveFileName) { } public static void CreateFromDirectory(string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory) { } public static void CreateFromDirectory(string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding entryNameEncoding) { } public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName) { } public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding) { } public static System.IO.Compression.ZipArchive Open(string archiveFileName, System.IO.Compression.ZipArchiveMode mode) { throw null; } public static System.IO.Compression.ZipArchive Open(string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding entryNameEncoding) { throw null; } public static System.IO.Compression.ZipArchive OpenRead(string archiveFileName) { throw null; } } [System.ComponentModel.EditorBrowsableAttribute((System.ComponentModel.EditorBrowsableState)(1))] public static partial class ZipFileExtensions { public static System.IO.Compression.ZipArchiveEntry CreateEntryFromFile(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName) { throw null; } public static System.IO.Compression.ZipArchiveEntry CreateEntryFromFile(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName, System.IO.Compression.CompressionLevel compressionLevel) { throw null; } + public static System.Collections.Generic.IEnumerable CreateEntriesFromDirectory(this System.IO.Compression.ZipArchive destination, string sourceDirectoryName, string baseEntryName) { throw null; } + public static System.Collections.Generic.IEnumerable CreateEntriesFromDirectory(this System.IO.Compression.ZipArchive destination, string sourceDirectoryName, string baseEntryName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory) { throw null; } public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName) { } public static void ExtractToFile(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName) { } public static void ExtractToFile(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, bool overwrite) { } } } ``` +13208 area-Meta Use nameof in more places We previously made a pass through corefx to use nameof with argument exceptions. Since then, a lot more code has come into the repo, and not all argument exceptions were converted at the time. We also previously missed a bunch of places where helpers were used to throw the exceptions. This does another pass through corefx to catch most of the remaining occurrences. +13209 area-System.Net Fix incorrect assert with kevent I fixed a similar assert in https://github.com/dotnet/corefx/pull/13162/commits/9a44a22fac49bf00d21ba42a7f64e849edcc5590, and didn't realize the same (incorrect) assert existed for the kevent version of the code. This is causing outerloop failures in the sockets perf tests running on macOS. cc: @ericeil, @geoffkizer +13210 area-System.Diagnostics ProcessThreadTests.TestStartTimeProperty test failure in CI on Ubuntu https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug/654/consoleText ``` System.Diagnostics.Tests.ProcessThreadTests.TestStartTimeProperty [FAIL] System.ComponentModel.Win32Exception : Unable to retrieve the specified information about the process or thread. It may have exited or may be privileged. Stack Trace: at System.Diagnostics.ProcessThread.GetStat() at System.Diagnostics.ProcessThread.get_StartTime() /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Diagnostics.Process/tests/ProcessThreadTests.cs(106,0): at System.Diagnostics.Tests.ProcessThreadTests.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +13211 area-System.Diagnostics Fix ProcessThread exception thrown on Unix When a thread goes away and then code tries to access its information, an InvalidOperationException is thrown on Windows. This fixes the Unix implementations to match. Fixes https://github.com/dotnet/corefx/issues/13210 cc: @Priya91 +13212 area-System.Data Enhance SqlClientDiagnosticListener to support SqlTransaction This fixes https://github.com/dotnet/corefx/issues/13034. cc @karelz @saurabh500 +13213 area-System.Net DualModeAcceptAsync.AcceptAsyncV6BoundToAnyV4_CantConnect failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/2476/consoleText ``` System.Net.Sockets.Tests.DualModeAcceptAsync.AcceptAsyncV6BoundToAnyV4_CantConnect [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: typeof(System.TimeoutException): Timed out while waiting for the server accept... Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(976,0): at System.Net.Sockets.Tests.DualModeAcceptAsync.DualModeConnect_AcceptAsync_Helper(IPAddress listenOn, IPAddress connectTo) ``` +13214 area-System.IO UWP app consuming 1.1 packages fails WACK for CLRCompression on x64 Copied from https://github.com/aspnet/EntityFramework/issues/6905 The aot clrcompression build is supposed to be redistributed from 1.0 while the non-aot build is being built live. When this change was made, the incorrect RID was used for x64-aot, causing the non-aot build to be picked up, which fails the WACK. The fix here is to correctly list the RID as win10-**x64**-aot. +13215 area-System.ComponentModel TypeDescriptor.GetProperties full of race conditions There are a bunch of race conditions in the implementation that have a visible effect on consuming code, due to lazy initialization and lack of proper thread-safety around check-and-update operations. For example, when TypeDescriptor.GetProperties is called, it ends up returning a weakly cached PropertyDescriptorCollection, so multiple threads accessing this could get the same collection. Then when using the reflection-based provider, the ReflectPropertyDescriptor instances this contains may be accessed concurrently by multiple threads. That then means that a pattern like this: https://source.dot.net/#System.ComponentModel.TypeConverter/System/ComponentModel/ReflectPropertyDescriptor.cs,289 is not safe: ```C# private object DefaultValue { get { if (!_state[s_bitDefaultValueQueried]) { _state[s_bitDefaultValueQueried] = true; Attribute a = Attributes[typeof(DefaultValueAttribute)]; if (a != null) { _defaultValue = ((DefaultValueAttribute)a).Value; // Default values for enums are often stored as their underlying integer type: if (_defaultValue != null && PropertyType.GetTypeInfo().IsEnum && PropertyType.GetTypeInfo().GetEnumUnderlyingType() == _defaultValue.GetType()) { _defaultValue = Enum.ToObject(PropertyType, _defaultValue); } } else { _defaultValue = s_noValue; } } return _defaultValue; } } ``` This would be fine if it were accessed serially, but if it's accessed concurrently, a thread could check ```_state[s_bitDefaultValueQueried]``` find that it hasn't been set yet, and then proceed to set it before actually setting ```_defaultValue```. Another thread could come along between the setting of ```_state[s_bitDefaultValueQueried]``` and the setting of ```defaultValue``` (which can actually be a relatively wide window, given the use of reflection in between), see that ```_state[s_bitDefaultValueQueried]``` has been set, and proceed to use the value of ```_defaultValue``` This is the cause of https://github.com/dotnet/corefx/issues/12753. +13216 area-System.Runtime Add Copy from ref T1 to ref T2 on System.Runtime.CompilerServices.Unsafe (Api) Hi, I would like to introduce a new public method for `System.Runtime.CompilerServices.Unsafe` Basically a method that allows to do something like: ```csharp public static void Write(ref TDest dest, ref TSrc src) { dest = src; } ``` that would translate to: ```csharp .method public hidebysig static void Write (!!TDest& dest, !!TSrc& src) cil managed { .maxstack 2 IL_0000: ldarg.0 IL_0001: ldarg.1 IL_0002: cpobj !!TSrc IL_0007: ret } ``` The usage scenario is to be able to efficiently copy a blittable data of type `TSrc` to a destination of type `TDest`, where we know that `TDest` has enough space to store `TSrc`. This method generates optimal code for such a case and is particularly useful for writing efficient value copy/writer. If this is ok, I can make a PR. Thanks! +13217 area-System.Net Disable socket tests for clean CI Disable AcceptAsyncV6BoundToAnyV4_CantConnect test, ref: #13213. +13218 area-System.Runtime Implement System.Runtime.InteropServices on UAP10.1 - NETNative Baselines have been created to suppress API compat warnings for InteropServices on UAP10.1. Those need to be removed (include `-ignoreMissingTypes` setting) once implementing the missing API in NETNative. +13220 area-System.Xml Have all Xml/Xml.Linq tests reference System.Private.Xml.pkgproj/System.Private.Xml.Linq.pkgproj Right now none of the `Xml/Xml.linq` tests are testing the live changes in `System.Private.Xml/System.Private.Xml.Linq` and any possible failures caused by the most recent changes won't show in CI builds. To fix this, those tests need to reference the private pkgprojs instead. cc: @danmosemsft +13221 area-System.Security [Debian Stretch][unsupported] libcrypto.so segfault on Debian Testing "Moved from https://github.com/PowerShell/PowerShell/issues/2564 I'm using the Ubuntu 16.04 package, I suspect that some of the dependencies are incompatible and the version ranges on the .deb are too broad so it's not marking it as an incompatibility. Ubuntu has OpenSSL 1.0.2g while Debian has 1.0.2j. Maybe that's what's causing the issue? However, The dotnet package does not specify any particular OpenSSL version though, it just specifies a dependency on `libssl1.0.0` Repro: ```csharp using System; using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { Console.WriteLine(TestStuff().Result); } public static async Task TestStuff() { var client = WebRequest.Create(""https://registry.npmjs.org/babel-standalone""); var result = await client.GetResponseAsync(); using (var reader = new StreamReader(result.GetResponseStream(), Encoding.UTF8)) { return await reader.ReadToEndAsync(); } } } } ``` Backtrace (sorry about the lack of debug symbols): ``` #0 0x00007fffe2288d5d in ?? () from /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 #1 0x00007fffe2283c7b in X509_verify_cert () from /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 #2 0x00007fff7db7fce5 in ?? () #3 0x00007fff4dd65c00 in ?? () #4 0xbafbcb4b7ab40f52 in ?? () #5 0x000000000563f9b1 in ?? () #6 0x00007ffff67dbf90 in ?? () from /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so #7 0x00007fff4dd665e8 in ?? () #8 0x00007fff7dbd6d58 in ?? () #9 0x00007fff7dbd6d58 in ?? () #10 0x00007fff4dd65c00 in ?? () #11 0x00007fff7db7fce5 in ?? () #12 0x00007fff4dd65ca0 in ?? () #13 0x00007fff7dbd6d58 in ?? () #14 0x00007fff645cf108 in ?? () #15 0x00007fff5c0a9950 in ?? () #16 0x0000000000000000 in ?? () ```" +13222 area-System.Xml Add XmlSortKey implementation in System.Private.Xml Related issue: https://github.com/dotnet/corefx/issues/9997 Adds `XmlSortKey` to System.Private.Xml and re-enables a related test on Windows (as SortKey is not available in other platforms yet) cc: @danmosemsft @tarekgh @weshaggard +13224 area-System.ComponentModel Fix some race conditions in TypeConverter lib There are a whole bunch of potential race conditions in the TypeConverter library. This does not attempt to fix all of them, just address the symptoms of the ones that have been causing some failed tests. In particular, the static TypeDescriptor.GetProperties will return a cached collection of instances, which means that instances end up being shared between threads. Each ReflectPropertyDescriptor instance has properties that check whether a bit flag contains a bit indicating that the value has been lazily created, and if it doesn't, sets the bit, then creates and stores the value. This leads to a variety of race conditions, including two threads racing to access the same value and one of them getting back the uninitialized value (this can also happen if an exception occurs in one thread before updating the value, leaving the flag set but the value uninitialized), and including two threads racing to access different fields but cloberring each other's updates to the state flags. This PR addresses those two issues specifically (there are very likely others), by a) setting the bit only after the fields have been set, and b) using compare/exchange operations to update the set bits. The desktop code has the same issues, and I'm just making enough changes to avoid the test failures we've been seeing that arise due to this. cc: @AlexGhiondea, @chlowell, @twsouthwick, @safern Fixes https://github.com/dotnet/corefx/issues/12753 Fixes https://github.com/dotnet/corefx/issues/13215 +13225 area-System.Net Disable tests for clean CI ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success HttpClient_ClientUsesAuxRecord_Ok Ref: #8744, #11623 +13229 area-System.IO Update to CoreCLR FileStream Take the latest CoreCLR and use its copy of FileStream. @ianhays @stephentoub @weshaggard @alexghi +13231 area-System.Diagnostics Update S.Diagnostics.Debug to ns2.0 Fixes #12794 /cc: @AlexGhiondea @joperezr +13233 area-Infrastructure Add full support build for test runs on Fedora 24 Now that we've updated buildtools, we can enable full test runs on Fedora 24. This change updates a few test projects in order to support Fedora 24, and also adds CI runs for them. +13234 area-Meta Remove duplicate string resources in 5 projects These string resources are duplicates and produce build warnings. +13235 area-System.Runtime Bring remaining System.Runtime members to netstandard2.0 Adds src, ref, and tests for the remaining members of System.Runtime. resolves https://github.com/dotnet/corefx/issues/12812, resolves https://github.com/dotnet/corefx/issues/12398 @joperezr @AlexGhiondea @alexperovich @stephentoub +13236 area-System.Xml Add Linux implementation for modifying SortKey in System.Xml.Xsl.Runtime.XmlCollation As SortKey is different on Linux and Windows, System.Xml.Xsl.Runtime.XmlCollation.CreateSortKey needs to be implemented differently for Linux. +13238 area-System.Reflection "Assertion failure: System.Reflection.Emit.Tests.ModuleBuilderDefineEnum.DefineEnum_ValueType(name: ""a\0b\0c"", visibility: NotPublic, underlyingType: typeof(byte))" See dotnet/coreclr#7669 Corelib is asserting. The proper fix is probably in there, but until that is resolved, we should disable this test. +13241 area-System.Collections "Test failure: System.Collections.Tests.BitArray_GetSetTests/CopyTo_Byte_Hidden(label: \""Constructor\"", bits: [True, True, True, True, True, ...])" "Opened on behalf of @jiangzeng The test `System.Collections.Tests.BitArray_GetSetTests/CopyTo_Byte_Hidden(label: \""Constructor\"", bits: [True, True, True, True, True, ...])` has failed. Assert.Equal() Failure\r Expected: 31\r Actual: 255 Stack Trace: at System.Collections.Tests.BitArray_GetSetTests.CopyTo_Byte_Hidden(String label, BitArray bits) in D:\A\_work\32\s\corefx\src\System.Collections\tests\BitArray\BitArray_GetSetTests.cs:line 375 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Fail for tests: CopyTo_Byte_Hidden CopyTo_Int_Hidden Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Tests.BitArray_GetSetTests~2FCopyTo_Byte_Hidden(label:%20%5C%22Constructor%5C%22,%20bits:%20%5BTrue,%20True,%20True,%20True,%20True,%20...%5D) https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Tests.BitArray_GetSetTests~2FCopyTo_Int_Hidden(label:%20%5C%22Constructor%5C%22,%20bits:%20%5BTrue,%20True,%20True,%20True,%20True,%20...%5D)" +13242 area-System.Data Test failure: System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNoProtocolConnectionTest Opened on behalf of @jiangzeng The test `System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNoProtocolConnectionTest` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.AzureNoProtocolConnectionTest() in D:\A\_work\32\s\corefx\src\System.Data.SqlClient\tests\FunctionalTests\TcpDefaultForAzureTest.cs:line 73 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.TcpDefaultForAzureTest~2FAzureNoProtocolConnectionTest +13243 area-System.IO "Test failure: System.IO.Compression.Tests.zip_CreateTests/CreateNormal(folder: \""empty\"", seekable: False)" "Opened on behalf of @jiangzeng The test `System.IO.Compression.Tests.zip_CreateTests/CreateNormal(folder: \""empty\"", seekable: False)` has failed. System.NotSupportedException : This stream does not support seeking Stack Trace: at WrappedStream.get_Position() in D:\A\_work\32\s\corefx\src\System.IO.Compression\tests\Utilities\WrappedStream.cs:line 91 at System.IO.Compression.ZipArchive.WriteFile() at System.IO.Compression.ZipArchive.Dispose(Boolean disposing) at System.IO.Compression.ZipArchive.Dispose() at System.IO.Compression.Tests.ZipFileTestBase.d__20.MoveNext() in D:\A\_work\32\s\corefx\src\Common\tests\System\IO\Compression\ZipTestHelper.cs:line 327 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.IO.Compression.Tests.zip_CreateTests.d__1.MoveNext() in D:\A\_work\32\s\corefx\src\System.IO.Compression\tests\ZipArchive\zip_CreateTests.cs:line 69 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Fail for tests: CreateNormal CreateNormal_Unicode Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.zip_CreateTests~2FCreateNormal(folder:%20%5C%22empty%5C%22,%20seekable:%20False) https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.zip_CreateTests~2FCreateNormal_Unicode(folder:%20%5C%22unicode%5C%22,%20seekable:%20False)" +13244 area-System.IO "Test failure: System.IO.Compression.Tests.zip_ManualAndCompatabilityTests/CompatibilityTests(zipFile: \""deflate64.zip\"", zipFolder: \""normal\"", requireExplicit: True, checkTimes: True)" "Opened on behalf of @jiangzeng The test `System.IO.Compression.Tests.zip_ManualAndCompatabilityTests/CompatibilityTests(zipFile: \""deflate64.zip\"", zipFolder: \""normal\"", requireExplicit: True, checkTimes: True)` has failed. Assert.All() Failure: 1 out of 6 items in the collection did not pass.\r [0]: System.IO.InvalidDataException: The archive entry was compressed using an unsupported compression method.\r at System.IO.Compression.ZipArchiveEntry.ThrowIfNotOpenable(Boolean needToUncompress, Boolean needToLoadIntoMemory)\r at System.IO.Compression.ZipArchiveEntry.OpenInUpdateMode()\r at System.IO.Compression.Tests.ZipFileTestBase.<>c__DisplayClass15_2.b__0(FileData file) in D:\\A\\_work\\32\\s\\corefx\\src\\Common\\tests\\System\\IO\\Compression\\ZipTestHelper.cs:line 170\r at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31 Stack Trace: at System.IO.Compression.Tests.ZipFileTestBase.IsZipSameAsDir(Stream archiveFile, String directory, ZipArchiveMode mode, Boolean requireExplicit, Boolean checkTimes) in D:\A\_work\32\s\corefx\src\Common\tests\System\IO\Compression\ZipTestHelper.cs:line 153 at System.IO.Compression.Tests.zip_ManualAndCompatabilityTests.d__0.MoveNext() in D:\A\_work\32\s\corefx\src\System.IO.Compression\tests\ZipArchive\zip_ManualAndCompatibilityTests.cs:line 21 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.zip_ManualAndCompatabilityTests~2FCompatibilityTests(zipFile:%20%5C%22deflate64.zip%5C%22,%20zipFolder:%20%5C%22normal%5C%22,%20requireExplicit:%20True,%20checkTimes:%20True)" +13245 area-System.IO Test failure: System.IO.Tests.Directory_Changed_Tests/FileSystemWatcher_Directory_Changed_WatchedFolder Opened on behalf of @jiangzeng The test `System.IO.Tests.Directory_Changed_Tests/FileSystemWatcher_Directory_Changed_WatchedFolder` has failed. System.IO.IOException : The process cannot access the file 'C:\\Users\\DotNetTestRunner\\AppData\\Local\\Temp\\Directory_Changed_Tests_uqrrm30o.aaf\\FileSystemWatcher_Directory_Changed_WatchedFolder_29\\dir' because it is being used by another process. Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.OpenHandle(String path) at System.IO.Directory.SetLastWriteTimeUtc(String path, DateTime lastWriteTimeUtc) at System.IO.Directory.SetLastWriteTime(String path, DateTime lastWriteTime) at System.IO.Tests.Directory_Changed_Tests.<>c__DisplayClass1_0.b__0() in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.Directory.Changed.cs:line 33 at System.IO.Tests.FileSystemWatcherTest.ExecuteAndVerifyEvents(FileSystemWatcher watcher, WatcherChangeTypes expectedEvents, Action action, Boolean assertExpected, String[] expectedPaths, Int32 timeout) in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\Utility\FileSystemWatcherTest.cs:line 227 at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(FileSystemWatcher watcher, WatcherChangeTypes expectedEvents, Action action, Action cleanup, String[] expectedPaths, Int32 attempts, Int32 timeout) in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\Utility\FileSystemWatcherTest.cs:line 183 at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(FileSystemWatcher watcher, WatcherChangeTypes expectedEvents, Action action, Action cleanup, String expectedPath, Int32 attempts, Int32 timeout) in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\Utility\FileSystemWatcherTest.cs:line 147 at System.IO.Tests.Directory_Changed_Tests.FileSystemWatcher_Directory_Changed_WatchedFolder() in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.Directory.Changed.cs:line 35 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.Directory_Changed_Tests~2FFileSystemWatcher_Directory_Changed_WatchedFolder +13246 area-System.IO Test failure: System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_NotifyFilter Opened on behalf of @jiangzeng The test `System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_NotifyFilter` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (-1) is invalid for Enum type 'NotifyFilters'.\r Parameter name: value Stack Trace: at System.IO.FileSystemWatcher.set_NotifyFilter(NotifyFilters value) at System.IO.Tests.FileSystemWatcherTests.<>c__DisplayClass17_0.b__1() in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.unit.cs:line 308 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.FileSystemWatcherTests~2FFileSystemWatcher_NotifyFilter +13247 area-System.Globalization DateTimeFormatInfo tests need argument validation updated AbbreviatedDayNames_Set_Invalid() and the like check exception argument strings which have changed. (System.Globalization) +13248 area-System.IO Test failure: System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_ctor_InvalidStrings Opened on behalf of @jiangzeng The test `System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_ctor_InvalidStrings` has failed. Assert.Equal() Failure\r Expected: path\r Actual: (null) Stack Trace: at System.IO.Tests.FileSystemWatcherTests.FileSystemWatcher_ctor_InvalidStrings() in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.unit.cs:line 107 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.FileSystemWatcherTests~2FFileSystemWatcher_ctor_InvalidStrings +13249 area-System.IO "Test failure: System.IO.Tests.RenamedEventArgsTests/RenamedEventArgs_ctor(changeType: 0, directory: \""\"", name: \""\"", oldName: \""\"")" "Opened on behalf of @jiangzeng The test `System.IO.Tests.RenamedEventArgsTests/RenamedEventArgs_ctor(changeType: 0, directory: \""\"", name: \""\"", oldName: \""\"")` has failed. System.ArgumentException : Absolute path information is required. Stack Trace: at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList) at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path) at System.IO.RenamedEventArgs.get_OldFullPath() at System.IO.Tests.RenamedEventArgsTests.RenamedEventArgs_ctor(WatcherChangeTypes changeType, String directory, String name, String oldName) in D:\A\_work\32\s\corefx\src\System.IO.FileSystem.Watcher\tests\Args.RenamedEventArgs.cs:line 29 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.RenamedEventArgsTests~2FRenamedEventArgs_ctor(changeType:%200,%20directory:%20%5C%22%5C%22,%20name:%20%5C%22%5C%22,%20oldName:%20%5C%22%5C%22)" +13250 area-System.Net Test failure: System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme Opened on behalf of @jiangzeng The test `System.PrivateUri.Tests.UriRelativeResolutionTest/Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Uri.CreateUriInfo(Flags cF) at System.Uri.EnsureUriInfo() at System.Uri.ParseRemaining() at System.Uri.InitializeUri(ParsingError err, UriKind uriKind, UriFormatException& e) at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at System.PrivateUri.Tests.UriRelativeResolutionTest.Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme() in D:\A\_work\32\s\corefx\src\System.Private.Uri\tests\FunctionalTests\UriRelativeResolutionTest.cs:line 152 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Private.Uri.Functional.Tests/analysis/xunit/System.PrivateUri.Tests.UriRelativeResolutionTest~2FUri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme +13251 area-System.Reflection Test failure: Several tests unders System.Reflection.Emit.Tests.CustomAttributeBuilderTests failed Opened on behalf of @jiangzeng The test `System.Reflection.Emit.Tests.CustomAttributeBuilderTests/ConstructorParametersNotSupportedInAttributes_ThrowsArgumentException(type: typeof(System.IntPtr), value: 1)` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: (No exception was thrown) Stack Trace: at System.Reflection.Emit.Tests.CustomAttributeBuilderTests.ConstructorParametersNotSupportedInAttributes_ThrowsArgumentException(Type type, Object value) in D:\A\_work\32\s\corefx\src\System.Reflection.Emit.ILGeneration\tests\CustomAttributeBuilderTests.cs:line 638 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: ConstructorParametersNotSupportedInAttributes_ThrowsArgumentException NamedFields_FieldTypeNotSupportedInAttributes_ThrowsArgumentException NotSupportedObjectInConstructorArgs_ThrowsArgumentException NotSupportedPrimitiveInConstructorArgs_ThrowsArgumentException NotSupportedPrimitiveInFieldValues_ThrowsArgumentException NotSupportedPrimitiveInPropertyValues_ThrowsArgumentException NullValueForPrimitiveTypeInConstructorArgs_ThrowsArgumentNullException Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Reflection.Emit.ILGeneration.Tests +13252 area-System.Reflection Test failure: System.Reflection.Emit.Tests.DynamicMethodGetILGenerator1/GetILGenerator_Module(skipVisibility: False) Opened on behalf of @jiangzeng The test `System.Reflection.Emit.Tests.DynamicMethodGetILGenerator1/GetILGenerator_Module(skipVisibility: False)` has failed. System.FieldAccessException : Attempt by method 'DynamicClass.Method(System.Reflection.Emit.Tests.IDClass, Int32)' to access field 'System.Reflection.Emit.Tests.IDClass._id' failed. Stack Trace: at Method(IDClass , Int32 ) at System.Reflection.Emit.Tests.DynamicMethodGetILGenerator1.VerifyILGenerator(IntDelegate instanceCallBack, IDClass target, Int32 newId) in D:\A\_work\32\s\corefx\src\System.Reflection.Emit.Lightweight\tests\DynamicMethodGetILGenerator.cs:line 90 at System.Reflection.Emit.Tests.DynamicMethodGetILGenerator1.GetILGenerator_Module(Boolean skipVisibility) in D:\A\_work\32\s\corefx\src\System.Reflection.Emit.Lightweight\tests\DynamicMethodGetILGenerator.cs:line 85 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: GetILGenerator_Module ILGenerator_Int_Module Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Reflection.Emit.Lightweight.Tests/analysis/xunit/System.Reflection.Emit.Tests.DynamicMethodGetILGenerator1~2FGetILGenerator_Module(skipVisibility:%20False) https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Reflection.Emit.Lightweight.Tests/analysis/xunit/System.Reflection.Emit.Tests.DynamicMethodGetILGenerator1~2FILGenerator_Int_Module(skipVisibility:%20False) +13253 area-System.Reflection Test failure: Assert failing for several tests under System.Reflection.Emit.Tests.AssemblyTests Opened on behalf of @jiangzeng The test `System.Reflection.Emit.Tests.AssemblyTests/DefineDyamicModule_ModuleAlreadyDefined_ThrowsInvalidOperationException` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at System.Reflection.Emit.Tests.AssemblyTests.DefineDyamicModule_ModuleAlreadyDefined_ThrowsInvalidOperationException() in D:\A\_work\32\s\corefx\src\System.Reflection.Emit\tests\AssemblyBuilderTests.cs:line 136 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: DefineDyamicModule_ModuleAlreadyDefined_ThrowsInvalidOperationException DefineDynamicAssembly_AssemblyName_AssemblyBuilderAccess DefineDynamicAssembly_AssemblyName_AssemblyBuilderAccess_CustomAttributeBuilder DefineDynamicAssembly_InvalidAccess_ThrowsArgumentException DefineDynamicAssembly_NameIsCopy DefineDynamicModule Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Reflection.Emit.Tests +13254 area-System.Net "Test failure: System.Collections.Specialized.Tests.HttpUtilityTest/UrlDecodeToBytes(decoded: \""http://127.0.0.1:8080/appDir/page.aspx?foo=b%ar\"", encoded: \""http://127.0.0.1:8080/appDir/page.aspx?foo=b%%u00..." "Opened on behalf of @jiangzeng The test `System.Collections.Specialized.Tests.HttpUtilityTest/UrlDecodeToBytes(decoded: \""http://127.0.0.1:8080/appDir/page.aspx?foo=b%ar\"", encoded: \""http://127.0.0.1:8080/appDir/page.aspx?foo=b%%u00...` has failed. Assert.Equal() Failure\r ? (pos 45)\r Expected: ···Dir/page.aspx?foo=b%ar\r Actual: ···Dir/page.aspx?foo=b%%u0061r\r ? (pos 45) Stack Trace: at System.Collections.Specialized.Tests.HttpUtilityTest.UrlDecodeToBytes(String decoded, String encoded) in D:\A\_work\32\s\corefx\src\System.Web.HttpUtility\tests\HttpUtility\HttpUtilityTest.cs:line 413 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Web.HttpUtility.Tests/analysis/xunit/System.Collections.Specialized.Tests.HttpUtilityTest~2FUrlDecodeToBytes(decoded:%20%5C%22http:~2F~2F127.0.0.1:8080~2FappDir~2Fpage.aspx%3Ffoo=b%25ar%5C%22,%20encoded:%20%5C%22http:~2F~2F127.0.0.1:8080~2FappDir~2Fpage.aspx%3Ffoo=b%25%25u00..." +13255 area-System.Xml Test failure: CoreXml.Test.XLinq.FunctionalTests+XNodeBuilderTests+TCCData/WriteCDataWithTwoClosingBrackets_5 Opened on behalf of @jiangzeng The test `CoreXml.Test.XLinq.FunctionalTests+XNodeBuilderTests+TCCData/WriteCDataWithTwoClosingBrackets_5` has failed. System.ArgumentException : Cannot have ']]>' inside an XML CDATA block. Stack Trace: at System.Xml.XmlTextWriter.WriteCData(String text) at System.Xml.XmlWriter.WriteNode(XmlReader reader, Boolean defattr) at System.Xml.XmlReader.ReadOuterXml() at CoreXml.Test.XLinq.FunctionalTests.XNodeBuilderTests.TCCData.WriteCDataWithTwoClosingBrackets_5() in D:\A\_work\32\s\corefx\src\System.Private.Xml.Linq\tests\xNodeBuilder\CommonTests.cs:line 3421 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: WriteCDataWithTwoClosingBrackets_5 WriteCommentWithDoubleHyphensInValue IncludePIEndTagAsPartOfTextValue Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.Linq.xNodeBuilder.Tests +13256 area-System.Xml Test failure: System.Xml.Tests.AsyncReaderLateInitTests/ReadAfterInitializationWithUriOnAsyncReaderTrows Opened on behalf of @jiangzeng The test `System.Xml.Tests.AsyncReaderLateInitTests/ReadAfterInitializationWithUriOnAsyncReaderTrows` has failed. Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.AggregateException): One or more errors occurred. Stack Trace: at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Xml.XmlTextReaderImpl.FinishInitUriString() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.Tests.AsyncReaderLateInitTests.<>c__DisplayClass8_0.b__0() in D:\A\_work\32\s\corefx\src\System.Private.Xml\tests\XmlReader\Tests\AsyncReaderLateInitTests.cs:line 86 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.RW.XmlReader.Tests/analysis/xunit/System.Xml.Tests.AsyncReaderLateInitTests~2FReadAfterInitializationWithUriOnAsyncReaderTrows +13257 area-System.Xml Test failure: System.Xml.Tests.AsyncReaderLateInitTests/ReadAsyncAfterInitializationWithUriThrows Opened on behalf of @jiangzeng The test `System.Xml.Tests.AsyncReaderLateInitTests/ReadAsyncAfterInitializationWithUriThrows` has failed. Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.Net.WebException): The remote name could not be resolved: 'test.test' Stack Trace: at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Xml.XmlDownloadManager.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Xml.XmlUrlResolver.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Xml.XmlTextReaderImpl.d__476.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Xml.AsyncHelper.<_CallBoolTaskFuncWhenFinish>d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Xml.Tests.AsyncReaderLateInitTests.<>c__DisplayClass7_0.b__0() in D:\A\_work\32\s\corefx\src\System.Private.Xml\tests\XmlReader\Tests\AsyncReaderLateInitTests.cs:line 76 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.RW.XmlReader.Tests/analysis/xunit/System.Xml.Tests.AsyncReaderLateInitTests~2FReadAsyncAfterInitializationWithUriThrows +13258 area-System.Xml Test failure: System.Xml.Tests.InsertAfterTests/InsertAfterRemovesDupRefAttrAtTheEnd Opened on behalf of @jiangzeng The test `System.Xml.Tests.InsertAfterTests/InsertAfterRemovesDupRefAttrAtTheEnd` has failed. System.ArgumentOutOfRangeException : Insertion index was out of range. Must be non-negative and less than or equal to size.\r Parameter name: index Stack Trace: at System.Collections.ArrayList.Insert(Int32 index, Object value) at System.Xml.XmlNamedNodeMap.InsertNodeAt(Int32 i, XmlNode node) at System.Xml.XmlAttributeCollection.InsertNodeAt(Int32 i, XmlNode node) at System.Xml.XmlAttributeCollection.InsertAfter(XmlAttribute newNode, XmlAttribute refNode) at System.Xml.Tests.InsertAfterTests.InsertAfterRemovesDupRefAttrAtTheEnd() in D:\A\_work\32\s\corefx\src\System.Private.Xml\tests\XmlDocument\XmlAttributeCollectionTests\InsertAfterTests.cs:line 224 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.XmlDocument.Tests/analysis/xunit/System.Xml.Tests.InsertAfterTests~2FInsertAfterRemovesDupRefAttrAtTheEnd +13259 area-System.Xml Test failure: System.Xml.Tests.InsertAfterTests/InsertAfterReplacesDupRefAttr Opened on behalf of @jiangzeng The test `System.Xml.Tests.InsertAfterTests/InsertAfterReplacesDupRefAttr` has failed. Assert.Same() Failure\r Expected: XmlAttribute []\r Actual: XmlAttribute [] Stack Trace: at System.Xml.Tests.InsertAfterTests.InsertAfterReplacesDupRefAttr() in D:\A\_work\32\s\corefx\src\System.Private.Xml\tests\XmlDocument\XmlAttributeCollectionTests\InsertAfterTests.cs:line 251 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.XmlDocument.Tests/analysis/xunit/System.Xml.Tests.InsertAfterTests~2FInsertAfterReplacesDupRefAttr +13260 area-System.Xml Test failure: System.Xml.Tests.NodeMap_SetNamedItemTests/NamedItemIsNull Opened on behalf of @jiangzeng The test `System.Xml.Tests.NodeMap_SetNamedItemTests/NamedItemIsNull` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Xml.XmlAttributeCollection.SetNamedItem(XmlNode node) at System.Xml.Tests.NodeMap_SetNamedItemTests.NamedItemIsNull() in D:\A\_work\32\s\corefx\src\System.Private.Xml\tests\XmlDocument\XmlNamedNodeMapTests\SetNamedItemTests.cs:line 37 Build : Master - 20161031.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Xml.Tests.NodeMap_SetNamedItemTests/NamedItemIsNull System.Xml.Tests.SetNamedItemTests/SetNamedItemWithNullReturnsNull Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.XmlDocument.Tests/analysis/xunit/System.Xml.Tests.NodeMap_SetNamedItemTests~2FNamedItemIsNull https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161031.01/workItem/System.Xml.XmlDocument.Tests/analysis/xunit/System.Xml.Tests.SetNamedItemTests~2FSetNamedItemWithNullReturnsNull +13261 area-Meta BufferManager (from System.ServiceModel.Channels) not available? I'm trying to use that class, but it doesn't appear to be available for use. I can see it in the API: https://docs.microsoft.com/en-us/dotnet/core/api/system.servicemodel.channels.buffermanager#System_ServiceModel_Channels_BufferManager How and what do I do in order to make use of this feature? Thank you. +13264 area-System.Threading Expose ReaderWriterLock - Rewrote ReaderWriterLock in C# from the original code, exposed it, and added tests - Original code: - https://github.com/dotnet/coreclr/blob/master/src/vm/rwlock.h - https://github.com/dotnet/coreclr/blob/master/src/vm/rwlock.cpp Fixes #11634 +13265 area-System.Reflection ParameterInfo objects are not guaranteed to be unique. After spending many hours tracking down [this bug](https://github.com/simpleinjector/SimpleInjector/issues/323) in Simple Injector, I came to the conclusion that: - `System.Type` instances are guaranteed to be unique within a single AppDomain. - `System.MemberBase` instances are guaranteed to be unique within a single AppDomain. - `System.ParameterInfo` instances are ***not*** guaranteed to be unique. When looking at the source code for `System.Type`, `System.Type.GetMembers()` and related methods it becomes clear that for each type there will be at most one `System.Type` instance and for each type member, there will be at most one `MemberBase` instance. For some weird reason however, this doesn't hold for `ParameterInfo` instances. When looking at `ConstructorInfo.GetParameters()` we can see that the creation of `ParameterInfo` objects is not protected by a lock and multiple concurrent threads can cause multiple `ParameterInfo` instances to be published for the same 'physical' parameter. I think this is a bug, or at least this is a design quirk, because developers will typically assume all reflection types to be unique within a single app domain. +13266 area-System.Runtime Break S.Security.Permissions dependency in S.R.Extension library S.Runtime.Extensions cannot depend on System.Security.Permissions so this change breaks that dependency. cc @rahku @kouvel @stephentoub +13267 area-System.Data ON AZURE: System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'sni.dll': "After publishing my .net core mvc app to AZURE I get the following exception whenever an attempt is made to create an instance (doesn't matter if direct or via DI) of my data context: ``` Application startup exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Data.SqlClient.SNINativeMethodWrapper.SNIInitialize(IntPtr pmo) at System.Data.SqlClient.SNILoadHandle..ctor() at System.Data.SqlClient.SNILoadHandle..cctor() --- End of inner exception stack trace --- at System.Data.SqlClient.TdsParser..cctor() --- End of inner exception stack trace --- at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3 1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator 2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor 1.EnumeratorExceptionInterceptor.MoveNext() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source) at TriCon360.NetCore.Core.Extentions.DbContextExtentions.GetRequestLocalizationOptions(ApplicationDbContext context, String defaultCulture) in D:\Becom360 Applications\TriCon360.NetCore.Core\Extentions\DbContextExtentions.cs:line 44 at Becom360.NetCore.Web.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in D:\Becom360 Applications\Becom360.NetCore.Web\Startup.cs:line 129 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder) at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() crit: Microsoft.AspNetCore.Hosting.Internal.WebHost[6] Application startup exception System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Data.SqlClient.SNINativeMethodWrapper.SNIInitialize(IntPtr pmo) at System.Data.SqlClient.SNILoadHandle..ctor() at System.Data.SqlClient.SNILoadHandle..cctor() --- End of inner exception stack trace --- at System.Data.SqlClient.TdsParser..cctor() --- End of inner exception stack trace --- at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3 1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator 2.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor 1.EnumeratorExceptionInterceptor.MoveNext() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source) at TriCon360.NetCore.Core.Extentions.DbContextExtentions.GetRequestLocalizationOptions(ApplicationDbContext context, String defaultCulture) in D:\Becom360 Applications\TriCon360.NetCore.Core\Extentions\DbContextExtentions.cs:line 44 at Becom360.NetCore.Web.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in D:\Becom360 Applications\Becom360.NetCore.Web\Startup.cs:line 129 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder) at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() warn: Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:33020 on the IPv6 loopback interface. System.AggregateException: One or more errors occurred. (Error -4089 EAFNOSUPPORT address family not supported) ---> Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -4089 EAFNOSUPPORT address family not supported at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.Check(Int32 statusCode) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind(UvTcpHandle handle, SockAddr& addr, Int32 flags) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle.Bind(ServerAddress address) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListener.CreateListenSocket() at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.<>c.b__6_0(Object state) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelEngine.CreateServer(ServerAddress address) at Microsoft.AspNetCore.Server.Kestrel.KestrelServer.StartTContext ---> (Inner Exception #0) Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -4089 EAFNOSUPPORT address family not supported at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.Check(Int32 statusCode) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind(UvTcpHandle handle, SockAddr& addr, Int32 flags) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle.Bind(ServerAddress address) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListener.CreateListenSocket() at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.<>c.b__6_0(Object state)<--- Hosting environment: Production Content root path: D:\home\site\wwwroot Now listening on: http://localhost:33020 Application started. Press Ctrl+C to shut down. info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 GET http://tricon360.azurewebsites.net/ info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 213.8363ms 500 text/html; charset=utf-8 ``` My project.json of the web application looks like this: ``` ""buildOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.1"" }, ""Microsoft.AspNetCore.Hosting"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.0.0-preview2-final"", ""type"": ""build"" }, ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""AutoMapper"": ""5.1.1"", ""Microsoft.Extensions.DependencyInjection"": ""1.0.0"", ""Microsoft.Extensions.DependencyInjection.Abstractions"": ""1.0.0"", ""Microsoft.AspNetCore.Razor.Tools"": { ""version"": ""1.0.0-preview2-final"", ""type"": ""build"" }, ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": { ""version"": ""1.0.0-preview2-final"", ""type"": ""build"" }, ""NLog"": ""4.4.0-betaV15"", ""System.Linq"": ""4.1.0"", ""System.Linq.Queryable"": ""4.0.1"", ""System.Linq.Parallel"": ""4.0.1"", ""System.Interactive.Async"": ""3.0.0"", ""TriCon360.NetCore.Core"": ""1.0.0-*"", ""dotnet-test-nunit"": ""3.4.0-beta-2"", ""Newtonsoft.Json"": ""9.0.1"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""Moq"": ""4.6.38-alpha"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.1"", ""Microsoft.EntityFrameworkCore"": ""1.0.1"", ""Microsoft.EntityFrameworkCore.InMemory"": ""1.0.1"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.0.1"", ""NUnit"": ""3.5.0"", ""HtmlAgilityPack"": ""1.4.9.5"" }, ""tools"": { ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.0.0-preview2-final"", ""imports"": [ ""dnxcore50"", ""dotnet5.6"", ""portable-net45+win8"" ] } }, ""testRunner"": ""nunit"", ""frameworks"": { ""netcoreapp1.0"": { ""dependencies"": { }, ""imports"": [ ""dotnet5.6"", ""dnxcore50"", ""portable-net45+win8"" ] } }, ""runtimes"": { ""win10-x86"": {}, ""win10-x64"": {} } ``` I would like to stress that it works perfectly fine on my development environment. Even when I connect from my local machine to the Azure DB." +13268 area-Serialization Members of DataContractSerializer that are in NS2.0 are missing ``` namespace System.Runtime.Serialization { public sealed class DataContractSerializer : XmlObjectSerializer { public DataContractResolver DataContractResolver { get; } public object ReadObject(XmlDictionaryReader reader, bool verifyObjectName, DataContractResolver dataContractResolver); public void WriteObject(XmlDictionaryWriter writer, object graph, DataContractResolver dataContractResolver); ``` @zhenlan @shmao +13269 area-Serialization One constructor on SerializationInfo class needs exposing Needs adding to model.xml and possibly a test adding. ``` public sealed class SerializationInfo { public SerializationInfo(Type type, IFormatterConverter converter, bool requireSameTokenInPartialTrust); } ``` +13270 area-System.IO FileStream.ReadAsync with FILE_FLAG_NO_BUFFERING at end of non-sector-aligned file causes ERROR_INVALID_PARAMETER "I was doing some perf testing with `FILE_FLAG_NO_BUFFERING` and found that it doesn't seem to work with async whole-`FileStream` reads. I think the bug is FileStream.cs around [here](https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/FileStream.Win32.cs#L919). `numBytes` gets set to a non-sector-aligned value and reused for the `ReadFileNative` which [is illegal with FILE_FLAG_NO_BUFFERING](https://msdn.microsoft.com/en-us/library/windows/desktop/cc644950(v=vs.85).aspx). I'm testing with .NET 4.6.2, so the source looks a bit different, but the same bug appears to be there. If I set `numBytes = 512` in the debugger (original read size), everything works as expected for the 2nd-to-last-read. On the last `ReadAsync` (the one that should return 0 because EOF has been reached), `numBytes` is `0` so we do a seemingly-needless `SeekCore(0, SeekOrigin.Current);` then a `ReadFileNative(_handle, bytes, offset, numBytes, intOverlapped, out hr);`, which causes a `hr = 87` (`ERROR_INVALID_PARAMETER`) - apparently 0 byte reads are also illegal :) I wasn't quite sure where the fix should go, but it seems like using a separate variable to determine how much to `SeekCore` and returning early when `numBytes = 0` would fix the problem. Note that using the synchronous `Read` without `FileOptions.Asynchronous` also works around this problem. Here's a minimal repro: ``` static void Main(string[] args) { Run().GetAwaiter().GetResult(); } static async Task Run() { var fs = GetStream(@""C:\Users\kedavid\Desktop\third_order.PNG""); using (var ms = new MemoryStream()) { var buf = new byte[512]; int read = 0; while ((read = await fs.ReadAsync(buf, 0, buf.Length)) != 0) { ms.Write(buf, 0, read); } } } static FileStream GetStream(string fullPath) { FileOptions FILE_FLAG_NO_BUFFERING = (FileOptions)0x20000000; return new FileStream( fullPath, FileMode.Open, FileAccess.Read, FileShare.None, 8, FileOptions.Asynchronous | FILE_FLAG_NO_BUFFERING); } ```" +13272 area-System.Security Port missing System.Security.Cryptography.X509Certificates members Address issue https://github.com/dotnet/corefx/issues/12295 Note that tests need to be added for X509Store.AddRange and .RemoveRange but if implemented like the rest of the tests they would run unreliably as they create physical artifacts on the machine. There are comments in the tests for this, and I will create a new issue to address this in addition to addressing related testing issues with the pre-existing Add and Remove methods (see https://github.com/dotnet/corefx/issues/12833) The X509Certificate.Import methods throw PNSE as the implementation is flaky in netfx. This has been previously discussed as acceptable for ns2.0. @bartonjs please review. There are some review notes embedded. +13274 area-System.Net Reduce allocations in SslStream reading/writing by ~30% https://github.com/dotnet/corefx/pull/12935 reduced allocations in SslStream reading/writing by ~70%. This PR reduces it further by another ~30% from where it was after that PR. Before (10K reads / 10K writes): ![image](https://cloud.githubusercontent.com/assets/2642209/19942733/1ecfce22-a10b-11e6-890e-8038c20a8aaa.png) After (10K reads / 10K writes): ![image](https://cloud.githubusercontent.com/assets/2642209/19942743/2ddb8640-a10b-11e6-9e16-5ab07e747b54.png) Main changes: - Every read/write operation was allocating a new AsyncProtocolRequest. Without changing any of the plumbing through SslStream, we can take advantage of the fact that SslStream allows only a single read and a single write operation at a time, which means we can store and reuse an AsyncProtocolRequest instance for reading and one for writing, reusing the instances for all read/write operations on the stream. - Every read operation was boxing an Int32 result. This changes the BufferAsyncResult instance used for reads to reuse one of its existing fields to store that result, rather than storing it in the base LazyAsyncResult's object field. - Also took the opportunity to remove an unused field from BufferAsyncResult, though it doesn't change the size on 64-bit given the other fields on the base class. cc: @geoffkizer, @ericeil, @davidsh, @cipop, @benaadams, @davidfowl Contributes to https://github.com/dotnet/corefx/issues/11826 +13275 area-System.Security Implement System.Security.PrincipalPermission and SecurityElement - Ports desktop code for SecurityELement and PrincipalPermission - To be used in Security.Permissions, some of the members in System.Sec.Principal.Windows need to be moved into common. - Fixes the old desktop implementation of the two functions to work in .net core. Originally the plan was to only implement PrincipalPermission, but it relied heavily on SecurityElement functionality so I opted to implement that as well. The only remaining item not fully implemented is SecurityElement.FromString. - Required splitting PrincipalPermission (and the assembly) based on Unix/Windows. - Adds tests for SecurityElement and PrincipalPermission resolves https://github.com/dotnet/corefx/issues/9641 @AlexGhiondea @joperezr @stephentoub +13277 area-Infrastructure Update BuildTools to version that is signed Builds from the past few days were unsigned due to a breaking change in microbuild. We've worked-around that. Replaces https://github.com/dotnet/corefx/pull/13271 /cc @safern @weshaggard +13279 area-System.Net Delete defunct StreamApmExtensions from System.Net.Security This code was added as a workaround when Stream didn't provide Begin/End methods. Now that it does, the code is no longer used. cc: @geoffkizer, @ericeil, @davidsh, @cipop +13280 area-System.ComponentModel Either ErrorMessageString or ErrorMessageResourceName must be set, but not both - provide hint which property _From @stefanhendriks on November 1, 2016 9:28_ This is happening on an API call (JSON serialization). From my perspective this problem 'suddendly' appears and I have no way of backtracking which property is causing this error message. Some background info: - we have a filter that validates models before they enter the controller action - when a validation error is found, we throw an exception and send a nice generic error response with per-field a validation message. The stack trace is also not helpful: ``` System.InvalidOperationException: Either ErrorMessageString or ErrorMessageResourceName must be set, but not both. at System.ComponentModel.DataAnnotations.ValidationAttribute.SetupResourceAccessor() at System.ComponentModel.DataAnnotations.ValidationAttribute.get_ErrorMessageString() at System.ComponentModel.DataAnnotations.RegularExpressionAttribute.FormatErrorMessage(String name) at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) at Microsoft.AspNetCore.Mvc.DataAnnotations.Internal.DataAnnotationsModelValidator.Validate(ModelValidationContext validationContext) at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.ValidateNode() at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model) at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitChildren(IValidationStrategy strategy) at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitComplexType() at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model) at Microsoft.AspNetCore.Mvc.Internal.DefaultControllerArgumentBinder.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.DefaultControllerArgumentBinder.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__26.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__25.MoveNext() ``` The only 'clue' we can derive is that ```Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.``` Perhaps the exception / message can be expanded with the property name (and validator)? _Copied from original issue: aspnet/Mvc#5478_ +13281 area-System.Net HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds test failed HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds test failed https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/93/consoleText ``` System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls11, requestOnlyThisProtocol: False) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.SslProtocols.cs(102,0): at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---7ad0ce03\src\Common\tests\System\Net\Http\LoopbackServer.cs(57,0): at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.SslProtocols.cs(100,0): at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` +13283 area-System.Collections Add [Serializable] on System.Collections.ObjectModel.ReadOnlyDictionary `System.Collections.ObjectModel.ReadOnlyDictionary` is marked with SerializableAttribute on full framework. It should be marked with the attribute now as the attribute is available in CoreFx. +13284 area-System.Xml System.Xml.Linq tests failing in outer loop e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/94/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/54/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/53/consoleText Lots of errors in each like: ``` FAILED Call WriteNode with reader on element with 100 attributes System.IO.FileNotFoundException: Could not load file or assembly 'ModuleCore, Version=999.999.999.999, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. File name: 'ModuleCore, Version=999.999.999.999, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' at XmlCoreTest.Common.FilePathUtil.GetVariableValue(String name) at XmlCoreTest.Common.FilePathUtil.GetTestDataPath() at CoreXml.Test.XLinq.FunctionalTests.XNodeBuilderTests.TCWriteNode_XmlReader.writeNode_XmlReader22() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Private.Xml.Linq\tests\xNodeBuilder\CommonTests.cs:line 1772 at Microsoft.Test.ModuleCore.TestVariation.Execute() at Microsoft.Test.ModuleCore.TestCase.Execute() ``` +13285 area-System.Xml Fix System.Xml.Linq.XNodeBuilder outerloop test failures Resolves https://github.com/dotnet/corefx/issues/13284 This P2P reference was missing in outerloop test runs. (caused by recent changes in Xml.Linq tests) cc: @stephentoub +13287 area-System.Net WIP - DO NOT MERGE: Add System.Net.Http.Listener "Note: this is a work in progress. **Do not merge.** I'm submitting this PR early so I can get some feedback before handing this over to @Priya91. Adds `HttpListener` as a new contract: System.Net.Http.Listener. This PR contains only the Windows implementation, which is based on the Win32 ""http.sys"" API. Remaining work: - Implement authentication. This will either involve sharing a fair amount of source code with System.Net.Security, or re-implementing the auth support on existing public surface from System.Net.Security. I didn't have time to explore these options enough to say which is best. For now, I've cut off auth support by throwing `NotImplementedException` in a few places. - Another couple of `NotImplementedException`s where we are trying to convert raw binary socket addresses into `SocketAddress` instances. May need new public surface in System.Net.Sockets, or just more thought than I was able to put into it. - More testing. I've only done a single ""real"" test. - Implement for Unix. Mono's implementation may provide a good starting point. @Priya91 @stephentoub @davidsh @CIPop @geoffkizer @karelz " +13288 area-Serialization Made DCS/DCJS support NonSerializedAttribute and OptionalFieldAttribute. The PR is to make DCS/DCJS to respect NonSerializedAttribute and OptionalFieldAttribute. Fix https://github.com/dotnet/corefx/issues/13367 cc: @zhenlan @mconnew @huanwu +13289 area-System.Security Move types from S.Security.Permissions that are part of netstandard 2.0 System.Security.Permissions is a supposed to be a compat library that is on top of netstandard 2.0 so it cannot contain any types that are part of netstandard 2.0 so we need to move those to other contracts. The following types need to be moved: ``` System.Security.IPermission System.Security.ISecurityEncodeable System.Security.SecurityElement System.Security.Permissions.CodeAccessSecurityAttribute System.Security.Permissions.SecurityAction System.Security.Permissions.SecurityAttribute System.Security.Permissions.SecurityPermissionAttribute System.Security.Permissions.SecurityPermissionFlag ``` We need to have a look at the best place to put them. I would put them in System.Runtime or System.Runtime.Extensions but that would require that we pull down Hashtable and ArrayList as well because they are in the closure of SecurityElement. Whoever picks up this work item should take a look and recommend a home for them. cc @danmosemsft @AlexGhiondea @ianhays +13290 area-Infrastructure Add parameter to allow custom override Nuget store @joperezr +13291 area-System.Security SafeAccessTokenHandle needs to move to System.Runtime SafeAccessTokenHandle which is included in netstandard2.0 is currently defined in System.Security.Principal.Windows which isn't part of netstandard2.0. We need to move it down into an assembly that is part of netstandard. Majority of the other handle types are in System.Runtime so I suggest we just include this one there as well. +13292 area-System.Net Add GSSAPI and NTLM authentication support for smtp. cc @davidsh @CIPop @ericeil @stephentoub @karelz fixes #12535 - Tested the NTLM part - [WIP] Testing GSSAPI. Put up the PR for review, and but will merge once the the GSSAPI testing is done, especially the Linux codepaths of VerifySignature and MakeSignature on Client side needs to be tested. Please comment of any smtp servers with GSSAPI available, currently trying to configure Windows Server 2008 SMTP Server feature. +13293 area-System.Runtime Optimize int parsing Int64.Parse was too slow for Kestrel. They wrote their own: https://github.com/aspnet/KestrelHttpServer/commit/fff0adeaaf55b23f2173be25c59202a322f8eda6 Their code only handles the simple case nevertheless we should examine whether we can optimize the general case, or consider a new API like Int64.ParseFast that they can call instead. https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Number.cs#L709 /cc @davidfowl +13294 area-System.IO Support for Long File Paths (260+ characters) with System.IO APIs This is also a bug with the current (non-core) version of the .NET Framework -- and it would be nice if it could be passed on to both teams, but it affects everything that uses System.IO (and it has some really gnarly consequences with tools like the Azure emulator, Xamarin, etc.) Right now anything done with the System.IO file system APIs on a Windows machine will fail if the path to the files accessed is longer than 260 characters. -- It will throw a `System.IO.PathTooLongException`. Since `System.String` in .NET is not subject to buffer overruns, etc., those APIs should be updated to call the newer system APIs which support longer file names. (No reason for new methods, or signatures, etc. -- this is a bug in the current framework; these methods should just be fixed to work and not throw that exception.) If this bug is fixed (in the main version of .NET as well), so many headaches will go away for me that it's not even funny. +13295 area-System.Reflection Consider adding GetAssemblyName() : AssemblyName to AssemblyDefinition and AssemblyReference Constructing System.Reflection.AssemblyName from metadata is a bit tricky. Providing an easy to use helper would avoid common pitfalls and reduce code duplication. See e.g. http://source.roslyn.io/#Microsoft.CodeAnalysis/InternalUtilities/AssemblyIdentityUtils.cs +13297 area-System.IO Possible bug in BufferedStream.FlushAsync for read-only Streams There is [this code](https://github.com/dotnet/corefx/blob/master/src/System.IO/src/System/IO/BufferedStream.cs#L272-L290) in the synchronous `BufferedStream.Flush`: ```cs if (_readPos < _readLen) { // If the underlying stream is not seekable AND we have something in the read buffer, then FlushRead would throw. // We can either throw away the buffer resulting in data loss (!) or ignore the Flush. // (We cannot throw because it would be a breaking change.) We opt into ignoring the Flush in that situation. if (!_stream.CanSeek) return; FlushRead(); // User streams may have opted to throw from Flush if CanWrite is false (although the abstract Stream does not do so). // However, if we do not forward the Flush to the underlying stream, we may have problems when chaining several streams. // Let us make a best effort attempt: if (_stream.CanWrite) _stream.Flush(); Debug.Assert(_writePos == 0 && _readPos == 0 && _readLen == 0); return; } ``` Here is the [corresponding code](https://github.com/dotnet/corefx/blob/master/src/System.IO/src/System/IO/BufferedStream.cs#L324-L342) in the async version: ```cs if (_readPos < _readLen) { // If the underlying stream is not seekable AND we have something in the read buffer, then FlushRead would throw. // We can either throw away the buffer resulting in date loss (!) or ignore the Flush. (We cannot throw because it // would be a breaking change.) We opt into ignoring the Flush in that situation. if (!_stream.CanSeek) return; FlushRead(); // not async; it uses Seek, but there's no SeekAsync // User streams may have opted to throw from Flush if CanWrite is false (although the abstract Stream does not do so). // However, if we do not forward the Flush to the underlying stream, we may have problems when chaining several streams. // Let us make a best effort attempt: if (_stream.CanRead) await _stream.FlushAsync(cancellationToken).ConfigureAwait(false); Debug.Assert(_writePos == 0 && _readPos == 0 && _readLen == 0); return; } ``` Note how in the first version, we check if the stream is writable before calling `Flush` while in the second `FlushAsync` is called if the stream is readable. It looks like this is a typo, and the second version should have checked `_stream.CanWrite`. +13298 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The handle is in the wrong state for the requested operation Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20161102.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161102.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FNoCallback_RevokedCertificate_NoRevocationChecking_Succeeds +13299 area-System.Net Test failure: System.Net.Sockets.Tests.DualModeBeginConnectToIPAddress/BeginConnectV4IPAddressToV6Host_Fails Opened on behalf of @jiangzeng The test `System.Net.Sockets.Tests.DualModeBeginConnectToIPAddress/BeginConnectV4IPAddressToV6Host_Fails` has failed. Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: (No exception was thrown) Stack Trace: at System.Net.Sockets.Tests.DualModeBeginConnectToIPAddress.BeginConnectV4IPAddressToV6Host_Fails() Build : Master - 20161102.03 (Core Tests) Failing configurations: - Centos.71.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161102.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeBeginConnectToIPAddress~2FBeginConnectV4IPAddressToV6Host_Fails +13300 area-System.Net Test failure: System.Net.Tests.TaskWebClientTest/OpenWrite_Success(echoServer: https://corefx-net.cloudapp.net/Echo.ashx) Opened on behalf of @jiangzeng The test `System.Net.Tests.TaskWebClientTest/OpenWrite_Success(echoServer: https://corefx-net.cloudapp.net/Echo.ashx)` has failed. System.Net.WebException : An error occurred while sending the request. SSL connect error ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.CurlException : SSL connect error Stack Trace: at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.WebClient.GetWebResponse(WebRequest request) at System.Net.WebClient.WebClientWriteStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Net.Tests.WebClientTestBase.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.HttpWebRequest.d__176.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) Build : Master - 20161102.03 (Core Tests) Failing configurations: - Redhat.72.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161102.03/workItem/System.Net.WebClient.Tests/analysis/xunit/System.Net.Tests.TaskWebClientTest~2FOpenWrite_Success(echoServer:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx) +13301 area-System.Net Test failure: System.Net.Tests.WebProxyTest/BypassOnLocal_MatchesExpected Opened on behalf of @jiangzeng The test `System.Net.Tests.WebProxyTest/BypassOnLocal_MatchesExpected` has failed. System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace: at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) at System.Net.Dns.<>c.b__27_1(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() Build : Master - 20161102.03 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161102.03/workItem/System.Net.WebProxy.Tests/analysis/xunit/System.Net.Tests.WebProxyTest~2FBypassOnLocal_MatchesExpected +13302 area-System.Net Test failure: System.Net.WebSockets.Client.Tests.CancelTest / ReceiveAsync_Cancel_Success (server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) Opened on behalf of @jiangzeng The test `System.Net.WebSockets.Client.Tests.CancelTest/ReceiveAsync_Cancel_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. Assert.Equal() Failure ? (pos 4) Expected: The 'System.Net.WebSockets.InternalClientWebS··· Actual: The remote party closed the WebSocket connect··· ? (pos 4) Stack Trace: at System.Net.WebSockets.Client.Tests.ClientWebSocketTestBase.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.WebSockets.Client.Tests.CancelTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161102.03 (Core Tests) Failing configurations: - Suse.132.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161102.03/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Client.Tests.CancelTest~2FReceiveAsync_Cancel_Success(server:%20ws:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +13303 area-System.Net Test failure: CoreXml.Test.XLinq.FunctionalTests/RunTests Opened on behalf of @jiangzeng The test `CoreXml.Test.XLinq.FunctionalTests/RunTests` has failed. Assert.Equal() Failure\r Expected: 0\r Actual: 49 Stack Trace: at CoreXml.Test.XLinq.FunctionalTests.RunTests() Build : Master - 20161102.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.81.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Core.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161102.03/workItem/System.Xml.Linq.xNodeBuilder.Tests/analysis/xunit/CoreXml.Test.XLinq.FunctionalTests~2FRunTests +13304 area-System.IO Test failure: System.IO.Tests.WaitForChangedTests/CreatedDeleted_Success(changeType: Created) Opened on behalf of @jiangzeng The test `System.IO.Tests.WaitForChangedTests/CreatedDeleted_Success(changeType: Created)` has failed. Assert.Equal() Failure\r Expected: Created\r Actual: 0 Stack Trace: at System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(WatcherChangeTypes changeType) in D:\A\_work\26\s\corefx\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.WaitForChanged.cs:line 149 Build : Master - 20161102.03 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161102.03/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.WaitForChangedTests~2FCreatedDeleted_Success(changeType:%20Created) +13305 area-System.Xml Test failure: System.Xml.Tests.XmlWriterTests_InvalidSurrogate/XmlWriterChecksUpperBoundOfLowerSurrogate_newBehavior Opened on behalf of @jiangzeng The test `System.Xml.Tests.XmlWriterTests_InvalidSurrogate/XmlWriterChecksUpperBoundOfLowerSurrogate_newBehavior` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: (No exception was thrown) Stack Trace: at System.Xml.Tests.XmlWriterTests_InvalidSurrogate.XmlWriterChecksUpperBoundOfLowerSurrogate_newBehavior() in D:\A\_work\32\s\corefx\src\System.Private.Xml\tests\XmlWriter\WriteWithInvalidSurrogate.cs:line 52 Build : Master - 20161102.03 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161102.03/workItem/System.Xml.RW.XmlWriter.Tests/analysis/xunit/System.Xml.Tests.XmlWriterTests_InvalidSurrogate~2FXmlWriterChecksUpperBoundOfLowerSurrogate_newBehavior +13306 area-Meta Add more serialization attribution My tool was incorrectly handling generic names and their default representation via reflection and Roslyn (it uses the former to determine what's serializable in desktop and the latter to determine what's serializable in corefx). Fixing that revealed a few more types to be made serializable. The tool also highlighted a few more types that were recently added to corefx that lacked proper attribution. Fixes https://github.com/dotnet/corefx/issues/13283 cc: @danmosemsft, @shmao, @AlexGhiondea +13308 area-System.Collections ConcurrentDictionary.GetOrAdd documentation not quite correct In `ConcurrentDictionary`, the overload of `GetOrAdd` taking a function as argument says that it returns 'either the existing value for the key if the key is already in the dictionary, or the new value for the key'. But this is not the whole story. There are in fact three cases: 1. The key is already in the dictionary. Then the existing value is returned. 2. The key is not in the dictionary; the function `valueFactory` is called and generates a value. But then on rechecking, some other thread has inserted a value for that key in the meantime. In this case, the other thread's value is the one returned. The value returned by `valueFactory` is discarded. 3. The key is not in the dictionary; `valueFactory` is called; it's still not there, so the new value is inserted and returned. It needs to be a bit clearer that `valueFactory` can end up being called but its return value is not the final one returned. +13309 area-System.Net Device not configured from Dns.GetHostEntryAsync on macOS https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/2571/consoleText ``` System.Net.Tests.WebProxyTest.BypassOnLocal_MatchesExpected [FAIL] System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Device not configured Stack Trace: at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Net.WebProxy/tests/WebProxyTest.cs(146,0): at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ``` +13310 area-System.Security Parts of the System.Security.Cryptography.* namespace missing in package: dotnet-dev-1.0.0-preview2.1-003155 I installed the dotnet-dev-1.0.0-preview2.1-003155 package on ubuntu:16.04 but it seems that parts of the System.Security.Cryptography.* namespace are missing. Thus i get a `System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found.` exception. The docker container microsoft/dotnet:1.0.0-preview2.1-sdk however contains the missing parts of the namespace. Is this an issue or am i doing something wrong? +13311 area-Meta LibUV should use win8-arm as the RID It currently places WinArm32 assets under win7-arm that is not a valid RID/platform configuration. @davidfowl Please reroute as appropriate. +13312 area-System.Net More aggressively clean up disposable resources in Http tests Most of these likely don't matter, but some of these can be keeping alive the underlying connections associated with the HttpClient instance, and it's possible that can lead to more resource contention / exhaustion. (This will be most easily reviewed with the ignore-whitespace view: https://github.com/dotnet/corefx/pull/13312/files?w=1) cc: @davidsh, @ericeil +13314 area-Meta Ensure native package reports have correct paths The native package reports had incorrect paths due to the way the paths were calculated based on OSGroup. OSGroup is not always passed when building these. We didn't actually need to use OSGroup when calculating the paths, it created a bunch of extra useless properties in the targets. We were also deriving some other things from this which didn't need to be platform specific. I've done a diff of nuspecs before and after this change with X-plat native build output copied local (to ensure I'm testing the excludes). I've also inspected the resulting binary and symbol packages to ensure content is the same. /cc @dagood @weshaggard +13315 area-System.Net Eliminate SecBufferDesc allocations in System.Net.Security Each SSPI operation in System.Net.Security allocates a SecBufferDesc to pass down to native code. This PR changes it from a class to a struct to avoid the heap allocation on each operation. As the data is passed around, it's now passed by ref, except for the few code paths where we need to be able to pass null to the native code, in which case a ```SecBufferDesc*``` is used instead of a ```ref SecBufferDesc```. Before (10K reads / 10K writes): ![image](https://cloud.githubusercontent.com/assets/2642209/19976678/2c3b53b2-a1c7-11e6-9a5b-232bfb5f4c54.png) After (10K reads / 10K writes): ![image](https://cloud.githubusercontent.com/assets/2642209/19976664/1afff814-a1c7-11e6-871c-1a802669d2e3.png) After this, the only remaining allocations per operations are the IAsyncResult and Task objects. Fixes https://github.com/dotnet/corefx/issues/11826 cc: @davidsh, @ericeil, @geoffkizer, @benaadams, @davidfowl +13318 area-System.Xml Reference S.P.Xml.pkgproj or S.P.Xml.Linq.pkgproj directly in all Xml… Fixes https://github.com/dotnet/corefx/issues/13220 To be able to test live changes made in `System.Private.Xml` and `System.Private.Xml.Linq`, all Xml tests need to directly reference `System.Private.Xml.pkgproj` and `System.Private.Xml.Linq.pkgproj`. Without that, we are testing `System.Xml.*` packages which use the last private packages produced and those won't contain current changes. cc: @danmosemsft @joperezr @weshaggard +13320 area-System.Diagnostics Bring remaining System.Diagnostics.*Trace members to netstandard 2.0 Fixes #12796 cc @joperezr @AlexGhiondea @danmosemsft +13322 area-System.IO Double buffers to overlap reads and writes on CopyToAsync Considering the current implementation of `CopyToAsync`: ```C# byte[] buffer = new byte[bufferSize]; // or from ArrayPool but eliding for sake of discussion. while (true) { int bytesRead = await ReadAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false); if (bytesRead == 0) break; await destination.WriteAsync(buffer, 0, bytesRead, cancellationToken).ConfigureAwait(false); } ``` The approach is obvious enough, read some octets, then write them, then repeat. Potentially though the source stream could be read from while the destination stream was written to: ```C# byte[] buffer0 = new byte[bufferSize]; byte[] buffer1 = new byte[bufferSize]; Task writeTask0; Task writeTask1 = null; int read0 = await ReadAsync(buffer0, 0, buffer0.Length, cancellationToken).ConfigureAwait(false); if (read0 != 0) { while (true) { writeTask0 = destination.WriteAsync(buffer0, 0, read0, cancellationToken).ConfigureAwait(false); int read1 = await ReadAsync(buffer1, 0, buffer1.Length, cancellationToken).ConfigureAwait(false); if (read1 == 0) { break; } await writeTask0; writeTask1 = destination.WriteAsync(buffer1, 0, read1, cancellationToken).ConfigureAwait(false); read0 = await ReadAsync(buffer0, 0, buffer0.Length, cancellationToken).ConfigureAwait(false); if (read0 == 0) { break; } await writeTask1; } if (!writeTask0.IsCompleted) { await writeTask0; } else if (writeTask1 != null) { await writeTask1; } } ``` Maybe I'm missing something, or maybe the extra heap space isn't worth it, but would this be a viable improvement? +13323 area-Infrastructure Update firewall settings on Fedora and Redhat images to allow network testing. Since October 25th, the outerloop runs for Fedora 23 have been timing out. The same is occurring in Fedora 24, although those have just been enabled. In both cases, the inner loop runs are completing successfully. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/ Nothing is jumping out at me other than the fact that there is a large gap in timestamps before the build times out. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/47/console ``` 20:25:56 Finished running tests. End time=20:26:09. Return value was 0 21:35:10 Build timed out (after 120 minutes). Marking the build as aborted. ``` +13327 area-Infrastructure Updating CoreClr dependencies to servicing-24703-01 +13329 area-Meta Single exe self contained console app "Publishing a self-contained console application in .net core, [as described here](https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/) results in a directory with a lot of files, even one with ""smaller footprint"". Is it possible to bundle all the dependencies so we get a single executable? One large-ish `myapp.exe` when targeting Windows, for example. I suppose I'm looking for something similar to ILMerge, but for .net core. Is it possible by some option flag on `dotnet publish` or some other command? If not, please consider as a feature request. Thanks." +13330 area-System.Net Fix DummyTcpServer used in System.Net.Security tests "We've been seeing recurring failures in some of the System.Net.Security tests, with errors citing ""This operation is only allowed using a successfully authenticated context."" It looks like this is a test bug, with the DummyTcpServer being used in the System.Net.Security tests disposing of the state for an operation before the test is actually done with it. cc: @davidsh, @ericeil Fixes https://github.com/dotnet/corefx/issues/12939 (I hope)" +13331 area-System.Runtime Once the Marshal class exposes SecureString overrloads implement the SecureStringMarsal class and re-enable tests. +13332 area-System.Runtime Complete the System.Runtime.CompilerServices namespace There are a few more types we need: ``` T:System.Runtime.CompilerServices.DebugInfoGenerator M:System.Runtime.CompilerServices.DebugInfoGenerator.#ctor M:System.Runtime.CompilerServices.DebugInfoGenerator.CreatePdbGenerator M:System.Runtime.CompilerServices.DebugInfoGenerator.MarkSequencePoint(System.Linq.Expressions.LambdaExpression,System.Int32,System.Linq.Expressions.DebugInfoExpression) T:System.Runtime.CompilerServices.IRuntimeVariables P:System.Runtime.CompilerServices.IRuntimeVariables.Count M:System.Runtime.CompilerServices.IRuntimeVariables.get_Count P:System.Runtime.CompilerServices.IRuntimeVariables.Item(System.Int32) M:System.Runtime.CompilerServices.IRuntimeVariables.get_Item(System.Int32) M:System.Runtime.CompilerServices.IRuntimeVariables.set_Item(System.Int32,System.Object) T:System.Runtime.CompilerServices.RuleCache`1 T:System.Runtime.CompilerServices.CompilerMarshalOverride LambdaExpression,System.Int32,System.Linq.Expressions.DebugInfoExpression) ``` +13333 area-Serialization Added Members of DataContractSerializer that are Missing. Some members of DataContractSerializer are in NetStandard2.0, but they are missing from NetCore. The PR added these members and added tests for them. Fix #13268. cc: @zhenlan @mconnew @huanwu +13335 area-System.Net Add missing WebHeaderCollection Keys property +13337 area-System.IO Complete the NamedPipeClientStream type for netstandard2.0 ```csharp namespace System.IO.Pipes { public sealed class NamedPipeClientStream : PipeStream { public NamedPipeClientStream(string serverName, string pipeName, PipeDirection direction, PipeOptions options, TokenImpersonationLevel impersonationLevel, HandleInheritability inheritability); protected internal override void CheckPipePropertyOperations(); } } ``` +13338 area-System.Runtime Remove IRemotingFormatter from System.Runtime.Serialization.Formatters Follow up on https://github.com/dotnet/standard/issues/88 +13339 area-System.Runtime Bring the Marshal APIs that use SecureString to netstandard2.0 Once https://github.com/dotnet/coreclr/pull/7985 is merged and a new CoreCLR package available, expose these APIs in the reference assembly for System.Runtime.InteropServices. ```csharp public static class Marshal { public static IntPtr SecureStringToBSTR(SecureString s); public static IntPtr SecureStringToCoTaskMemAnsi(SecureString s); public static IntPtr SecureStringToCoTaskMemUnicode(SecureString s); public static IntPtr SecureStringToGlobalAllocAnsi(SecureString s); public static IntPtr SecureStringToGlobalAllocUnicode(SecureString s); } ``` +13340 area-System.IO Move types for System.IO into System.Runtime.Extensions There are only a handful of types left in the System.IO contract one of which is TextWriter which is used for various things including APIs on WebUtility (see https://github.com/dotnet/corefx/issues/12142). In order to enable those we should move it and the other types in System.IO down into System.Runtime.Extensions. +13342 area-System.IO Excessive Executable Flags on macOS (I originally asked about this at dotnet/cli#4260 some two months ago, but never received a response until today. However, since it is not .NET CLI-specific, I figured asking here would be a better idea.) One of the things that has been driving me crazy about .NET Core is that on my Mac (running macOS Sierra, version 10.12.1), any and every file created by a .NET Core program is marked as executable (specifically, they all have the mode 711). Note that this only affects files created by a Core program; already existing files that are opened or modified remain at their existing mode. This is totally unnecessary, and furthermore complicates interoperability with programs that don’t expect every file to be executable (such as the Mac’s GUI file-management subsystem). Could this possibly be changed? Thanks! +13343 area-System.Threading Test failure: ThreadPoolBoundHandleTests/FlowsAsyncLocalsToCallback Opened on behalf of @jiangzeng The test `ThreadPoolBoundHandleTests/FlowsAsyncLocalsToCallback` has failed. Assert.Equal() Failure\r Expected: 10\r Actual: 0 Stack Trace: at ThreadPoolBoundHandleTests.FlowsAsyncLocalsToCallback() in D:\A\_work\31\s\corefx\src\System.Threading.Overlapped\tests\ThreadPoolBoundHandle_IntegrationTests.cs:line 219 Build : Master - 20161103.04 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161103.04/workItem/System.Threading.Overlapped.Tests/analysis/xunit/ThreadPoolBoundHandleTests~2FFlowsAsyncLocalsToCallback +13344 area-System.Reflection Cleanup some System.Reflection tests Use more idiomatic assertions where possible. +13345 area-System.Threading ReaderWriterLockSlim contention perf "When ReaderWriterLockSlim contends with itself, the perf seems to be really bad. ```c# public static void Main(string[] args) { Action threadWork = null; var threadWorkComplete = new AutoResetEvent(false); var threadWorkAvailable = new AutoResetEvent(false); var t = new Thread(() => { while (true) { threadWorkComplete.Set(); threadWorkAvailable.WaitOne(); if (threadWork == null) break; threadWork(); } }); t.IsBackground = true; t.Start(); threadWorkComplete.WaitOne(); Action BeginDoThreadWork = work => { threadWork = work; threadWorkAvailable.Set(); }; Action EndDoThreadWork = () => threadWorkComplete.WaitOne(); Action DoThreadWork = work => { BeginDoThreadWork(work); EndDoThreadWork(); }; var rw = new ReaderWriterLockSlim(); Action Test = () => { for (int i = 0; i < 10; ++i) { DoThreadWork(() => rw.EnterReadLock()); BeginDoThreadWork(() => rw.ExitReadLock()); rw.EnterWriteLock(); rw.ExitWriteLock(); EndDoThreadWork(); } }; //var rw = new ReaderWriterLock(); //Action Test = // () => // { // for (int i = 0; i < 10; ++i) // { // DoThreadWork(() => rw.AcquireReaderLock(-1)); // BeginDoThreadWork(() => rw.ReleaseReaderLock()); // rw.AcquireWriterLock(-1); // rw.ReleaseWriterLock(); // EndDoThreadWork(); // } // }; TimeSpan testDuration = TimeSpan.FromMilliseconds(200); while (true) { uint iterations = 0; var elapsed = TimeSpan.Zero; var start = DateTime.Now; while (true) { Test(); ++iterations; if ((iterations & 0xf) != 0) continue; Console.Write('.'); elapsed = DateTime.Now - start; if (elapsed >= testDuration) break; } var iterationsPerSecond = iterations / elapsed.TotalSeconds; Console.WriteLine(); Console.WriteLine(""iterationsPerSecond: {0:0.00}"", iterationsPerSecond); } } ``` ReaderWriterLockSlim: ``` . iterationsPerSecond: 7.26 . iterationsPerSecond: 6.83 . iterationsPerSecond: 7.47 . iterationsPerSecond: 15.28 . iterationsPerSecond: 6.92 . iterationsPerSecond: 7.59 . iterationsPerSecond: 8.06 . iterationsPerSecond: 6.78 ``` The numbers usually vary a lot, the ones above are on the lower end and are not infrequent. By comparison, ReaderWriterLock is about 100-1000 times as fast for the same test: ``` ............................................................. iterationsPerSecond: 4804.77 .......................................................... iterationsPerSecond: 4568.59 ................................................................ iterationsPerSecond: 5041.21 ....................................................... iterationsPerSecond: 4332.31 ........................................................... iterationsPerSecond: 4647.33 ....................................................... iterationsPerSecond: 4332.27 ..................................................... iterationsPerSecond: 4174.75 ``` I believe the issue is caused by deterministic unfairness in the spin lock. Usually, the main thread will enter its spin loop trying to acquire the write lock, before the background thread enters its spin loop trying to release the read lock. Both threads fight for the spin lock, but the main thread acquires it first. When the main thread relinquishes the spin lock to yield in the spin loop, most of the time the background thread is already in the process of yielding in-between spinning for the spin lock. So the main thread acquires the spin lock again, and so on until the spin count is maxed out. Finally, the main thread enters a wait state and releases the spin lock for long enough for the background thread to acquire the spin lock, release the read lock, and release the now-waiting main thread. One way to fix this could be to have the spin lock spin for a very short duration and fall back to a real lock." +13346 area-System.Net Dns.GetHostAddressesAsync(Dns.GetHostName()) not working on centos7 using Dns.GetHostAddressesAsync(Dns.GetHostName()) can't load local ip address on centos 7 system +13347 area-Meta Output Path not working correctly "Hey, I'm using Visual Studio 14 (VS 2015) Update 3 and I want to build a REST API based .Net Core 1, using Kestrel as the server. I want to be able to use a **.csproj** instead of the old **.xproj** in order to use MSBuild as I do in other projects. The problem is that when I define ""OutputPath"" as ""bin\Debug"" (for Debug mode, for instance), Visual Studio builds the project and sets build's results to ""bin\Debug\\bin\Debug\netcoreapp1.0\win7-x64"". If I use the *.xproj* and build, the results are stored at ""bin\Debug\netcoreapp1.0"", which is the expected behaviour. What is happening? .csproj: ``` $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) win7 .NETCoreApp v1.0 true $(NoWarn);1701 {D21ABA46-65F9-4B47-882C-F9C0765052DD} Exe Properties MyAPP MyAPP 512 true x64 true full false .\obj\Debug .\bin\Debug\ DEBUG;TRACE prompt 4 x64 pdbonly true .\bin\Release TRACE prompt 4 <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) true false Program $(TargetDir) {2E36F1D4-B23C-435D-AB41-18E608940038} ``` project.json: ``` { ""version"": ""1.0.0"", ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""build"" }, ""Microsoft.ApplicationInsights.AspNetCore"": ""1.0.0"", ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"" }, ""runtimes"": { ""win7-x64"": {}, ""ubuntu.14.04-x64"": {}, ""osx.10.10-x64"": {} }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dnxcore50"", ""portable-net452"" ] } }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish --publish-folder ./bin"" ] } } ```" +13348 area-System.Numerics NullReferenceException when calling Vector.CopyTo in Release mode "I'm not sure if this is the right place to report this. I have this program: ```csharp using System; using System.Numerics; namespace ConsoleApp1 { public class Program { public static Vector ConvertToInt32(Vector input) { var count = Vector.Count; var inputs = new float[count]; var outputs = new int[count]; // swap input.CopyTo(inputs); // these for (int i = 0; i < count; i++) { outputs[i] = (int)inputs[i]; } return new Vector(outputs); } public static void Main(string[] args) { var v = new Vector(123.123f); var values = ConvertToInt32(v); Console.WriteLine(v); Console.WriteLine(values); } } } ``` project.json: ```javascript { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""optimize"": true }, ""runtimes"": { ""win7-x64"": {} }, ""dependencies"": { ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""net461"": {} } /* ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0"" }, ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""netcoreapp1.0"": {} } */ } ``` test cases: 1. targeting net461, compiling as shown, Release mode: null ref on `input.CopyTo(inputs);` 2. targeting net461, swapping indicated lines, Release mode: incorrect console output 3. targeting net461, as shown or swapped, Debug mode: no error, correct output 4. targeting netcoreapp1.0, either as shown or swapped, Debug or Release: no error, correct output version info: Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 " +13349 area-System.Net System.Net.Sockets.Async.Performance.Tests threw ObjectDisposedException (Windows, Linux and Mac) No results generated. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161103.04/workItem/System.Net.Sockets.Async.Performance.Tests/details/ef1c1a72-3184-4848-9894-303a848b3635 ```2016-11-03 15:14:31,896: INFO: proc(65): run_and_log_output: Output: Starting: System.Net.Sockets.Async.Performance.Tests 2016-11-03 15:14:32,255: INFO: proc(65): run_and_log_output: Output: 2016-11-03 15:14:32,255: INFO: proc(65): run_and_log_output: Output: Unhandled Exception: System.ObjectDisposedException: Cannot access a disposed object. 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: Object name: 'System.Net.Sockets.Socket'. 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.Socket.ReceiveAsync(SocketAsyncEventArgs e) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.Performance.Tests.SocketTestClientAsync.Receive(Action`2 onReceiveCallback) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.MultipleConnectAsync.Succeed() 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.MultipleConnectAsync.InternalConnectCallback(Object sender, SocketAsyncEventArgs args) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.QueueUserWorkItemCallbackDefaultContext.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ThreadPoolWorkQueue.Dispatch() 2016-11-03 15:14:32,259: INFO: proc(65): run_and_log_output: Output: /Users/dotnet-bot/dotnetbuild/work/ef1c1a72-3184-4848-9894-303a848b3635/Work/4effeedc-b714-487c-9ce0-32e9cb61ae1b/Unzip/RunTests.sh: line 284: 29083 Abort trap: 6 ./corerun xunit.console.netcore.exe System.Net.Sockets.Async.Performance.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonosxtests ``` I'm guessing this will need a local repro. +13351 area-System.Runtime Seg fault during Serialization unit tests on Ubuntu https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161104.53/workItem/System.Runtime.Serialization.Formatters.Tests/details/987bb27a-8616-44cd-99e2-5e12840da2f8 ``` 2016-11-04 01:36:01,603: INFO: proc(55): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/987bb27a-8616-44cd-99e2-5e12840da2f8/Work/64d343ba-b793-4450-b356-79cdfeb514e3/Unzip/RunTests.sh: line 285: 2770 Segmentation fault (core dumped) ./corerun xunit.console.netcore.exe System.Runtime.Serialization.Formatters.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonlinuxtests 2016-11-04 01:36:01,604: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time=01:36:01. Return value was 139 2016-11-04 01:36:01,606: INFO: proc(55): run_and_log_output: Output: GDB was not found. Unable to print core file. 2016-11-04 01:36:01,608: INFO: proc(55): run_and_log_output: Output: Copying core file core to /tmp/coredumps ``` Finding out whether there's a way to get dumps from these machines. +13352 area-System.Data Adding Client hostname to Sql server connection While connecting to the Sql Server, the SqlClient was sending an empty hostname to the server. In this pull request we use using the Environment.MachineName to populate the hostname while connecting to SqlServer. Fixes #12627 cc @stephentoub @corivera +13354 area-System.Net Adding missing Close method for HttpWebResponse @stephentoub @davidsh +13355 area-Serialization XsdDataContractExporter.DataContractSet always returns null The following code in DataContractSet is commented. So XsdDataContractExporter.Export will always fail because of NullReferenceException DataContractSet DataContractSet { get { //if (dataContractSet == null) //{ // dataContractSet = new DataContractSet((Options == null) ? null : Options.GetSurrogate()); //} return _dataContractSet; } } +13356 area-System.Collections Queue_SynchronizedTests.SynchronizedEnqueue test failed https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_opensuse13.2_release/55/consoleText ``` System.Collections.Tests.Queue_SynchronizedTests.SynchronizedEnqueue [FAIL] System.AggregateException : One or more errors occurred. (Queue empty.) ---- System.InvalidOperationException : Queue empty. Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) Discovered: System.Data.Common.Tests /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse13.2_release/src/System.Collections.NonGeneric/tests/QueueTests.cs(879,0): at System.Collections.Tests.Queue_SynchronizedTests.PerformTest(Action action, Int32 expected) ----- Inner Stack Trace ----- at System.Collections.Queue.Dequeue() at System.Collections.Queue.SynchronizedQueue.Dequeue() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse13.2_release/src/System.Collections.NonGeneric/tests/QueueTests.cs(932,0): at System.Collections.Tests.Queue_SynchronizedTests.StartDequeueEnqueueThread() at System.Threading.Tasks.Task.Execute() ``` +13357 area-System.Net Add missing EndGetRequestStream(IAsynResult,TransportContext) overload to HttpWebRequest +13358 area-System.Globalization Synchronising ParseNumber & MathChars with the new CoreCLR versions Updating the `ParseNumber`/`MatchChars` contents with the new optimised versions [already merged to CoreCLR](https://github.com/dotnet/coreclr/pull/3163/). +13359 area-Infrastructure Updating CoreClr dependencies to servicing-24704-01 +13360 area-Serialization Area-Serialization Sprint 109 The issue is for tracking issues to be done in sprint 109 (due by 11/18/2016). +13361 area-System.Runtime Expose the serialization ctor on CryptographicException Once the new CoreCLR is ingested in CoreFX, you need to remove this from the baseline for System.Runtime. MembersMustExist : Member 'System.Security.Cryptography.CryptographicException..ctor(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)' does not exist in the implementation but it does exist in the contract. +13362 area-System.Security Expose secure string +13364 area-System.Net Add a new public Slim NTAuthentication type to support various authentication protocols. System.Net.Mail is using an internal type NTAuthentication from System.Net.Security to implement NTLM, GSSAPI and Digest protocols for credential authentication. Currently I’m using reflection to get to these types, but this is not a reliable permanent solution. We have similar issues around authentication in HttpListener as well. In both cases, we need to send a response string back to the server, which is obtained by sending the challenge from server through the protocol. Currently there are 2 obstacles 1. NTAuthentication.GetOutgoingBlob/GetContextToken/GetOutoingDigestBlob API is internal 2. NTAuthentication type does not have API to choose from available protocols it supports I can see 2 options: Option 1: Make NTAuthentication type public and add to it new APIs for choosing authentication protocol. Cons: NTAuthentication is large beast and it has lots of dependencies. It hasn’t been designed to be public API. Option 2: Create new ‘SlimAuthentication’ type which is independent of server protocols (has no context whether smtp, ftp, web, etc) and implements various authentication protocols like NTLM, GSSAPI, Digest, Login (these currently exist in NTAuthentication). One thing to keep in mind, we might want to add support for newer protocols like XOAUTH2, OAUTH2 which seems to be a popular choice in many smtp servers like google, Comcast, yahoo, outlook.live, office365, etc, to this new type, hence the design should be extensible. cc @davidsh @CIPop @weshaggard @ericeil @geoffkizer @karelz +13365 area-Serialization Add Basic Tests for Serialization APIs New Added in NetStandard2.0 We want to add basic test coverage for new APIs added in NS2.0 +13366 area-System.Net Add more unit tests for authentication in SmtpClient. cc @karelz @tijoytom @ericeil @davidsh +13367 area-Serialization [Impl] DCS/DCJS to Support NonSerializedAttribute and OptionalFieldAttribute +13368 area-Serialization [Impl] DCS/DCJS to Support System.Runtime.Serialization.IDeserializationCallback +13369 area-System.Security SslStream.WriteAsync() hangs on 0-byte WriteAsync on Linux and macOS "To repro, connect to any SSL endpoint (127.0.0.1:5001 in the example below) and attempt a 0-byte write: ```csharp using System; using System.IO; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Threading; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { var x509certificate = new X509Certificate2(@""testCert.pfx"", ""testPassword""); using (var client = new TcpClient()) { client.ConnectAsync(""127.0.0.1"", 5001).Wait(); using (var sslStream = new SslStream(client.GetStream(), false, (sender, certificate, chain, errors) => true, (sender, host, certificates, certificate, issuers) => x509certificate)) { sslStream.AuthenticateAsClientAsync(""localhost"", new X509CertificateCollection(), SslProtocols.Tls12 | SslProtocols.Tls11, false).Wait(); sslStream.WriteAsync(new byte[0], 0, 0, CancellationToken.None).Wait(); } } } } } ``` It just hangs there. We found this issue in Kestrel, which is experiencing test failures because of this (https://github.com/aspnet/KestrelHttpServer/pull/1193#issuecomment-258501823). Kestrel is hanging in https://github.com/aspnet/KestrelHttpServer/blob/4337d2a4a751ee7ccb0e0c460670c0abd044d040/src/Microsoft.AspNetCore.Server.Kestrel/Filter/Internal/StreamSocketOutput.cs#L63 when we do a 0-byte write to flush." +13370 area-System.Xml Cleanup System.Private.Xml and remove CodeDom and CAS references from it Resolves https://github.com/dotnet/corefx/issues/12000 Includes small cleanup on `System.Private.Xml`. Removes: - Dead code, unused classes/members - `System.Security.Permissions` dependency - `System.CodeDom` dependency (the package reference was removed, few types Xml still needed from CodeDom were added as internal classes under System/CodeDom instead, as removing those few would make some Xml functionalities broken and unavailable.) XSLT was basically using CodeDom for generating code from scripts (C#, JScript, etc.) inside a XSL and then compiling it into an assembly. Although the code generation part is currently available on CoreFX (still not part of netstandard), the assembly generation part is missing. This would make the XSLT functionality unavailable anyway. So, in this PR we throw `PlatformNotSupportedException` in those cases on XSLT side. cc: @danmosemsft @weshaggard @stephentoub +13371 area-System.Net Fix SslStream.WriteAsync with 0-byte write A previous fix (https://github.com/dotnet/corefx/pull/13083) added an early exit when 0-byte writes aren't supported by the underlying SSL implementation. But in doing so, WriteAsync(..., 0) ends up returning a Task that never completes (due to the IAsyncResult never completing). cc: @bartonjs, @davidsh, @cipop Fixes https://github.com/dotnet/corefx/issues/13369 +13372 area-System.Net Expose types/members in contract assemblies Most implementations exist, but they are not present in contract/reference + testing ### Remaining APIs - TODO: T:System.Net.TransportType -- https://github.com/dotnet/corefx/issues/14106 M:System.Net.Security.NegotiateStream.Dispose(System.Boolean) https://github.com/dotnet/corefx/issues/14107 M:System.Net.Security.SslStream.Dispose(System.Boolean) https://github.com/dotnet/corefx/issues/14107 F:System.Net.Sockets.AddressFamily.Max --https://github.com/dotnet/corefx/issues/14106 ```c# public class WebHeaderCollection : NameValueCollection, IEnumerable, ISerializable { public void Set(HttpRequestHeader header, string value); public void Set(HttpResponseHeader header, string value); public override void Set(string name, string value); } ``` above is https://github.com/dotnet/corefx/issues/14108 - `IDisposable` on `public class FtpWebResponse : WebResponse, IDisposable` https://github.com/dotnet/corefx/issues/14107 ### Tracked externally - #13900 - HttpWebRequest and HttpWebResonse - #13901 - HttpListener* - #12460 - Socket - #12134 - NetworkCredential ### Finished APIs #13357 * `M:System.Net.HttpWebRequest.EndGetRequestStream(System.IAsyncResult,System.Net.TransportContext@)` #13354 * `M:System.Net.HttpWebResponse.Close` * `M:System.Net.HttpWebResponse.set_Cookies(System.Net.CookieCollection)` #13377 * `T:System.Net.FtpStatusCode` * `M:System.Net.FtpWebRequest.set_Headers(System.Net.WebHeaderCollection)` * `P:System.Net.FtpWebResponse.BannerMessage` * `P:System.Net.FtpWebResponse.ExitMessage` * `P:System.Net.FtpWebResponse.LastModified` * `P:System.Net.FtpWebResponse.StatusCode` * `P:System.Net.FtpWebResponse.StatusDescription` * `P:System.Net.FtpWebResponse.WelcomeMessage` +13373 area-System.Xml Add OSGroup property to all P2P references to System.Private.Xml Explicitly adds `OSGroup` property to all System.Private.Xml.csproj references. @danmosemsft @weshaggard @joperezr +13374 area-System.Runtime Proposal: Array.Clone for creating a copy of an array. Sometimes you need to create a copy of an array. For example, one reason is arrays are mutable and sometimes you need to create a defensive copy, or you may want to modify some of the indices in it but keep the original array intact. There are a couple of ways of doing this right now: ### Approach 1 ```cs var array = new T[original.Length]; Array.Copy(original, 0, array, 0, original.Length); return array; ``` The downside of this approach is that it's verbose (compared to the second approach below), and can't be used in things like expression-bodied methods where you want a one-liner to clone an array. It is, however, fast since we go straight to allocating an array and calling Copy. ### Approach 2 ```cs return (T[])original.Clone(); ``` While this can be used in expression-bodied methods, the programmer has to specify `T[]` again to cast, which is prone to error since `Clone` returns an object. In addition, `Clone` is slightly slower than `Copy` and we have to make that extra typecast. ### Approach 3 (Linq) ```cs return original.ToArray(); ``` This can also be used in expression-bodied methods and is type-safe, however it is slow. Several casts are made by ToArray, then it makes virtual method calls to Count/CopyTo which do the same thing as approach 1 under the hood. ## Proposal Add a static `Array.Clone` method: ```cs namespace System { public abstract class Array : ... { public static T[] Clone(T[] array); } } ``` Usage: ```cs class Customer { Order[] _orders; public Order[] GetOrders() => Array.Clone(_orders); } ``` The implementation would be trivial and do the same thing as example 1: ```cs public static T[] Clone(T[] array) { var array = new T[original.Length]; Array.Copy(original, 0, array, 0, original.Length); return array; } ``` +13375 area-Serialization IFragmentCapableXmlDictionaryWriter not implemented by XmlBaseWriter IFragmentCapableXmlDictionaryWriter is not implemented by any class. In desktop, it is implemented by XmlBaseWriter. Our code: internal abstract class XmlBaseWriter : XmlDictionaryWriter {...} Code in desktop. abstract class XmlBaseWriter : XmlDictionaryWriter, IFragmentCapableXmlDictionaryWriter {...} +13376 area-System.Globalization Enable new globalization1.7 tests +13377 area-System.Net add missing FTP stuff to contract See #13372 +13379 area-System.IO Fix BufferedStream.FlushAsync bug where the incorrect property was checked See #13297 for more details. Fixes #13297 @ianhays, @JeremyKuhne, @stephentoub +13383 area-System.Net Fix uses of C++ `new` operator under src\Native The native shims use C++ `new` operator in number of places, for example: https://github.com/dotnet/corefx/blob/master/src/Native/Unix/System.Native/pal_networkstatistics.cpp#L251 C++ new throws C++ exception on OOM. When such C++ exception hits interop boundary, it will lead to bad crash. `malloc` or `new (nothrow)` with explicit null check should be used instead. +13385 area-Meta [Security] Use safe integer arithmetic for memory allocation Native shims have potential integer overflows around memory allocations, for example: https://github.com/dotnet/corefx/blob/edd3b840988c9ed8d572bf115926d798c8e3fc52/src/Native/Unix/System.Native/pal_networking.cpp#L2622 There should be manual checks for potential integer overflow; or strongly typed `new (nothrow)` that checks for multiplication overflows underneath should be used instead. +13388 area-System.Linq [System.Linq] Small optimization for RepeatIterator<>::ToArray Hello! Now RepeatIterator<>::ToArray implemented as (https://github.com/dotnet/corefx/blob/8a99c59d8599179694497a00fc636e37c6da72dd/src/System.Linq/src/System/Linq/Repeat.cs#L67): ```cs public TResult[] ToArray() { TResult[] array = new TResult[_count]; if (_current != null) { for (int i = 0; i != array.Length; ++i) { array[i] = _current; } } return array; } ``` `_current` is field from base type Iterator<> and has a type TResult. Looks like we can compare it with `default(TResult)` instead of `null` here: ```cs TResult[] array = new TResult[_count]; if (_current != null) {… ``` because we do not need fill an array with default values. +13389 area-System.Net Disable sockets perf tests on OSX We're getting unhandled ObjectDisposedExceptions on most runs. https://github.com/dotnet/corefx/issues/13349 +13393 area-System.IO Fix BufferedStream.CopyToAsync flushing "We recently added an override of CopyToAsync to BufferedStream; it flushes data from the buffer and then hands off to the source stream to copy directly to the destination. But the flushing support was flawed: a) we don't actually want to flush read data back to the source stream, instead wanting to instead write any read data to the destination stream, and b) even if we did, that fails for non-seekable source stream. The fix is to handle the ""flushing"" directly. If there's any read data in the buffer, we need to write that data to the destination. If there's any write data in the buffer, we need to flush that to the source. And then we can do the copy. We also need to follow the same locking scheme used elsewhere, and protect the whole operation with the stream's semaphore. cc: @ianhays, @jamesqo" +13394 area-Infrastructure Linux ARM Emulator SoftFP builds are failing frequently This is causing lots of PRs to have failed legs. ``` ./scripts/arm32_ci_script.sh: line 170: /opt/linux-arm-emulator-root/dotnet/setenv/setenv_incpath.sh: No such file or directory ``` +13395 area-Infrastructure CentOS PR legs failing with buildtools restore error ``` Restoring BuildTools version 1.0.27-prerelease-01002-04... Failed to create prime the NuGet cache. restore failed with: 1 ERROR: Could not restore build tools correctly. See '/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/init-tools.log' for more details.1 Initializing BuildTools... /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/init-tools.sh: line 148: /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/packages/Microsoft.DotNet.BuildTools/1.0.27-prerelease-01002-04/lib/init-tools.sh: No such file or directory ``` cc: @mmitche, @weshaggard, any ideas what's going on? These same to be failing consistently across all PRs in corefx for the last few hours. +13399 area-System.Runtime tests for Type.GetType with overloads for assebly and type loader and memoryfailpoint This change adds the tests for https://github.com/dotnet/corefx/issues/12309 +13400 area-System.Linq Use or remove unused parameters in System.Linq.Expressions Remove one unused parameter in a validation check (It would always have the same value, so changing to use it has no value). Make use of one currently unused parameter in an exception. Change parameter name in validator method to match that of calling methods so that throws will make use of parameter names matching the public interface. Reformat to make lack of coverage of error cases more obvious. CC @hughbe @bartdesmet @VSadov +13402 area-System.Globalization TimeZoneInfoTests.ConvertTime_DateTime_MiscUtc failed in CI Looks like a DST problem. https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/2686/consoleText ``` System.Tests.TimeZoneInfoTests.ConvertTime_DateTime_MiscUtc [FAIL] 11/6/2016 8:01:17 AM failed to round trip using source 'UTC' and 'Pacific Standard Time' zones. wrong result 11/6/2016 9:01:17 AM Expected: True Actual: False Stack Trace: Discovered: System.Runtime.Performance.Tests Info: System.Runtime.Performance.Tests has no tests to run Finished running tests. End time= 1:01:17.51, Exit code = 0 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\TimeZoneInfoTests.cs(1930,0): at System.Tests.TimeZoneInfoTests.VerifyRoundTrip(DateTime dt1, String sourceTimeZoneId, String destinationTimeZoneId) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\TimeZoneInfoTests.cs(799,0): at System.Tests.TimeZoneInfoTests.ConvertTime_DateTime_MiscUtc() System.Tests.TimeZoneInfoTests.ConvertTime_DateTime_MiscUtc [FAIL] 11/6/2016 8:01:19 AM failed to round trip using source 'UTC' and 'Pacific Standard Time' zones. wrong result 11/6/2016 9:01:19 AM Expected: True Actual: False Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\TimeZoneInfoTests.cs(1930,0): at System.Tests.TimeZoneInfoTests.VerifyRoundTrip(DateTime dt1, String sourceTimeZoneId, String destinationTimeZoneId) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\TimeZoneInfoTests.cs(799,0): at System.Tests.TimeZoneInfoTests.ConvertTime_DateTime_MiscUtc() ``` +13405 area-System.Linq Remove some minor redundancies and nits in Linq.Expressions. Remove unused local and `string.Format` feeding to `sb.AppendFormat`. Replace fields with local when only used immediately after assignment. Remove unused assignments. Join declaration with first real assignment when possible. Make init-only fields `readonly`. Replace assign-and-check with ?? Use null-propagation where applicable and reduces assign-and-check. +13407 area-System.Runtime Error CS0246 referencing System.StackOverflowException and dotnet.exe crashes without an exception being caught "What should I do to reference `System.StackOverFlowException`? I have use to catch `StackOverflowException`, since I am writing code that would rely on the compiler doing tail call optimization. However, trying to catch `System.StackOverFlowException`, I am presented with `CS0246`. I tried to explicitly include some packages, but that was probably futile in concept, since the class should be part of the `Microsoft.NETCore.App` dependency I am using (v1.0.1). I'm sure it's possible as I'm seeing it being referenced in [corefx/src/System.Runtime/tests/System/StackOverflowExceptionTests.cs](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Runtime/tests/System/StackOverflowExceptionTests.cs). However, that repo is notoriously difficult to dissect - the test project for example doesn't have a project.json... Yet, there is another issue, being that even if I write a simple test using Xunit and use this line: ```csharp Assert.ThrowsAny(() => TailCall()); ``` Whatson will kick in reporting that > dotnet has stopped working and obviously, that is very unfortunate and useless. Reproduce by running: ```bat mkdir dotnetnew code dotnetnew ``` Paste ```csharp using System; namespace ConsoleApplication { public class Program { public static int TailCall(int i) { if (i == int.MaxValue) return i; i++; return TailCall(i); } public static void Main(string[] args) { try { Console.WriteLine(TailCall(0)); } catch (Exception ex) { Console.WriteLine($""{ex.GetType().Name}""); } } } } ``` This code works: ``` PS C:\dotnetnew> dotnet run -c Release Project dotnetnew (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing Compiling dotnetnew for .NETCoreApp,Version=v1.0 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:01.1238355 2147483647 ``` But not always: ``` dotnet run ``` > dotnet has stopped working Replace `Exception` with `StackOverflowException`. ``` dotnet build ``` **\dotnetnew\Program.cs(11,27): error CS0246: The type or namespace name 'StackOverFlowException' could not be found (are you missing a using directive or an assembly reference?)** " +13408 area-System.Linq Throw InvalidOperationException on attempting to throw an object not derived from Exception in the interpreter. Fixes #5898 As suggested by @bartdesmet at https://github.com/dotnet/corefx/issues/5898#issuecomment-180063270 (CC @svick and @VSadov who also commented in that thread) this accepts the failure of the interpreter to throw non-Exception types, but throws a more explanatory exception than the mysterious `InvalidCastException` thrown. Rather than the `NotSupportedException` suggested, I went for `InvalidOperationException` that seems more apt. (There's no failure to support a method, but an inability act with the provided state). This throws on execution. Throwing on compilation would be preferable, but there would still be cases where an expression typed as `object` was thrown (allowed as long as the actual value is an exception) failed at run-time, so this is more consistent. It would certainly be possible to also throw on compilation if the type thrown is neither `Exception`-derived nor `object` if people thought that was desirable. +13409 area-Infrastructure [Question] Trying out the new corefx "Hi I'm running to an error trying out the new corefx in my project. I am especially interested in the FirstChanceException under System.AppDomain class I first followed instruction for building the new CoreCLR: https://github.com/dotnet/coreclr/blob/master/Documentation/workflow/UsingYourBuild.md I then downloaded and compile CoreFX. I then set my .nugget config to add the following two keys: Now I have the following short project.json ``` { ""version"": ""1.0.0-*"", ""buildOptions"": { ""debugType"": ""portable"", ""emitEntryPoint"": true }, ""frameworks"": { ""netcoreapp1.1"": { ""dependencies"": { ""Microsoft.NETCore.Runtime.CoreCLR"": ""1.2.0-beta-24702-0"" } } }, ""runtimes"": { ""win10-x64"": {} }, ""dependencies"": { ""System.Runtime.Extensions"": ""4.4.0-beta-24702-01"" } } ``` Now when I restore the package and run the program it says: Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040 (FUSION_E_REF_DEF_MISMATCH)) I do not know why it's searching for the 4.2.0.0 version of assembly. I felt like I'm making obvious mistakes, but I cannot find any tutorial that tells me how to. Please kindly correct me or point me to how to fix it, or let me know if there is an easier way for me to use the FirstChanceException handler in System.AppDomain. Thanks a lot!" +13410 area-System.Runtime Tuple.IStructuralComparable/Equatable throws NRE The following tests demonstrates this. ``` [Fact] public void IStructuralEquatable_Equals_NullEqualityComparer_ThrowsNullReferenceException() { IStructuralEquatable structuralEquatable = Tuple.Create(1); Assert.Throws(() => structuralEquatable.Equals(Tuple.Create(1), null)); } [Fact] public void IStructuralEquatable_GetHashCode_NullEqualityComparer_ThrowsNullReferenceException() { IStructuralEquatable structuralEquatable = Tuple.Create(1); Assert.Throws(() => structuralEquatable.GetHashCode(null)); } [Fact] public void IStructuralComparable_CompareTo_NullEqualityComparer_ThrowsNullReferenceException() { IStructuralComparable structuralComparable = Tuple.Create(1); Assert.Throws(() => structuralComparable.CompareTo(Tuple.Create(1), null)); } ``` I can send in a PR fixing this to throw ArgumentNullException, but there might be breaking change so I'll let you guys approve it before I go wasting my time ;) +13411 area-System.IO FileStreamHelpers: Avoid lazily initializing the FileOpenDelegate Just initialize the static field directly. cc: @ianhays, @stephentoub +13413 area-System.IO StreamReader: Use cached instance for UTF32BE Instead of always allocating a new instance of `UTF32Encoding` for Big Endian UTF32, use `Encoding.GetEncoding(12001)`, which will return a cached instance. Follow up from https://github.com/dotnet/corefx/pull/12346#discussion_r82081246 cc: @ianhays, @stephentoub +13416 area-Infrastructure System.Net.Primitives.Performance.Tests threw System.MissingMethodException No results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161104.503/workItem/System.Net.Primitives.Performance.Test ``` 2016-11-04 23:52:42,651: INFO: proc(55): run_and_log_output: Output: Unhandled Exception: System.MissingMethodException: Method not found: 'Void System.IO.FileStream..ctor(System.String, System.IO.FileMode)'. 2016-11-04 23:52:42,651: INFO: proc(55): run_and_log_output: Output: at Xunit.ConsoleClient.Program.Main(String[] args) 2016-11-04 23:52:43,838: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time=23:52:43.83, Exit code = -532462766 2016-11-04 23:52:43,841: INFO: proc(58): run_and_log_output: Exit Code: -532462766 2016-11-04 23:52:43,842: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2016-11-04 23:52:43,842: ERROR: helix_test_execution(125): report_error: Error running xunit None ``` Build : Master - 20161104.503 (Core Tests) Failing configurations: Failing on all platforms. +13417 area-System.Net System.Net.Sockets.Tests threw Xunit.Sdk.EqualException No results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161104.503/workItem/System.Net.Sockets.Tests/details/c55351a7-8db1-4f95-9aba-4ccce51d4f64 ``` 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: Unhandled Exception: Xunit.Sdk.EqualException: Assert.Equal() Failure 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: Expected: Success 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: Actual: ConnectionReset 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Net.Sockets.Tests.SocketAsyncExtensions.<>c__DisplayClass11_0.b__0(Object _, SocketAsyncEventArgs args) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object state) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncFailure(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2016-11-05 00:00:21,092: INFO: proc(55): run_and_log_output: Output: at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 2016-11-05 00:00:22,607: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time= 0:00:22.60, Exit code = -532462766 2016-11-05 00:00:22,607: INFO: proc(58): run_and_log_output: Exit Code: -532462766 2016-11-05 00:00:22,607: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2016-11-05 00:00:22,607: ERROR: helix_test_execution(125): report_error: Error running xunit None ``` Build : Master - 20161104.503 (Core Tests) Failing configurations: Windows.7.Amd64:AnyCPU-Debug +13418 area-System.ComponentModel System.ComponentModel.EventBasedAsync.Tests threw System.Runtime.Serialization.SerializationException No results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161104.503/workItem/System.ComponentModel.EventBasedAsync.Tests ``` 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: System.Runtime.Serialization.SerializationException: Type 'Xunit.Sdk.ThrowsException' in Assembly 'xunit.assert, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c' is not marked as serializable. 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.Runtime.Remoting.Channels.CrossAppDomainSerializer.SerializeObject(Object obj, MemoryStream stm) 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.AppDomain.Serialize(Object o) 2016-11-05 00:05:11,038: INFO: proc(55): run_and_log_output: Output: at System.AppDomain.MarshalObject(Object o) ``` Build : Master - 20161104.503 (Full Framework Tests) Failing configurations: Windows.10.Amd64:AnyCPU-Debug Windows.10.Amd64:AnyCPU-Release +13419 area-System.Numerics Test failure: System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests Opened on behalf of @jiangzeng The test `System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.Numerics.BigInteger..ctor(UInt32[] value, Boolean negative) at System.Numerics.BigInteger.op_LeftShift(BigInteger value, Int32 shift) at System.Numerics.Tests.cast_fromTest.DoubleExplicitCastFromLargeBigIntegerTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) at System.Numerics.Tests.cast_fromTest.RunDoubleExplicitCastFromLargeBigIntegerTests() Build : Master - 20161104.503 (Core Tests) Failing configurations: - Centos.71.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161104.503/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.cast_fromTest~2FRunDoubleExplicitCastFromLargeBigIntegerTests +13422 area-System.Data SqlConnection has a connection leak? "When using SqlConnection in a docker linux environment it seems to leak connections but this does not happen when I run on windows. I have created a test project that will reproduce this: https://github.com/davidein/SqlConnectionIssue 1. Update appsettings.json with a valid connection string. 2. Run dotnet restore 3. Run the web-test.sh to start the container. 4. Open http://localhost:5000/api/values 5. Check the database connections. 5. Wait for 10 minutes. 6. Check the database connections, you should see that no connections have been closed. 7. If you refresh http://localhost:5000/api/values it will create a new connection This seems to always create a new connection after 8-10 minutes and the old connection will just hang there unused until the container is killed. I have a web service that has accumulated 490 connections over 3 days and only one in use. If I run @@VERSION it returns ""Microsoft SQL Server 2016 (RTM-CU2) (KB3182270) - 13.0.2164.0 (X64) Sep 9 2016 20:13:26 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 (Build 9600: ) (Hypervisor)"" Sql scripts: SELECT DB_NAME(dbid) as DBName, COUNT(dbid) as NumberOfConnections, loginame as LoginName, program_name FROM sys.sysprocesses WHERE dbid > 0 and DB_NAME(dbid) = 'somedb' GROUP BY dbid, loginame, program_name SELECT * FROM sys.sysprocesses WHERE dbid > 0 and DB_NAME(dbid) = 'somedb' " +13423 area-System.Diagnostics WorkingSet size in Linux Unless I miss something significant, this is a bug: https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Linux.cs#L120 rss is the number of _pages_, but WorkingSet is the number of _bytes_. +13424 area-System.Diagnostics Fix WorkingSet{64} on Linux to be bytes, not pages Fixes https://github.com/dotnet/corefx/issues/13423 cc: @priya91, @ayende +13426 area-System.Runtime Add Unsafe.ByteOffset(object obj, ref T target) "In order to support Span.DangerousCreate(object obj, ref T rawPointer, int length); for general objects (not just arrays), we'll need a pair of Unsafe api to compute that offset and derefence it. I expect they would look like this: // Returns the byte offset of ""target"" (presumably a field or array element within ""origin"" // wrt to the actual start of the object including the runtime-dependent object header // (i.e. we start counting from the address of the vtable pointer, not the ""first field."") IntPtr ByteOffset(object origin, ref T target) { ldarg.1 ldarg.0 sub ret } ref T AddByteOffset(object source, IntPtr byteOffset) { ldarg.0 ldarg.1 add ret } In addition to supporting DangerousCreate(), this would be needed to support non-unified empty spans since 1. I can't use the expression ""ref a[a.length]"". The ECMA standard says its legal to talk about such a reference but ldelema still throws an IndexOutOfRangeException. 2. I can't use my existing workaround of setting the base to null since we decided we want the base to reflect the actual and distinct location even in the case of empty spans." +13427 area-System.Runtime Add CopyBlock/InitBlock overloads for ref byte "```c# class Unsafe { void CopyBlock(ref byte destination, ref byte source, uint byteCount); void CopyBlock(ref byte destination, ref byte source, UIntPtr byteCount); void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount); void CopyBlockUnaligned(ref byte destination, ref byte source, UIntPtr byteCount); void InitBlock(ref byte destination, uint byteCount); void InitBlock(ref byte destination, UIntPtr byteCount); void InitBlockUnaligned(ref byte destination, uint byteCount); void InitBlockUnaligned(ref byte destination, UIntPtr byteCount); } ``` Thin wrappers over the cpblk and initblk IL instructions to make them accessible from C#. Needed to implement Span.CopyTo() efficiently. Since this is intended to be a wrapper around the ""cpblk"" IL instruction, the behavior is undefined if the ranges overlap. (This suggests Span.CopyTo() needs to handle three cases: - No overlap - Use Unsafe.CopyTo() - enjoy the perf. - Overlap one way - Use forward for loop. - Overlap the other way - Use backward for loop." +13428 area-System.Net Change NetworkStream to use base.ReadAsync/WriteAsync The base Stream has an optimized implementation for delegating to Begin/EndRead/Write. Now that NetworkStream overrides those Begin/End members, we should use the base stream's implementation rather than using FromAsync (we can put back a custom implementation if/when we can do better than the base). As the overrides exist in the contract, I've left the overrides in the implementation and just delegate directly to the base. cc: @geoffkizer, @davidsh, @cipop +13429 area-System.Runtime ValueTuple.IStructuralComparable/Equatable throws NRE instead of ArgumentNullException The following tests demonstrates this. ``` [Fact] public void IStructuralEquatable_Equals_NullEqualityComparer_ThrowsNullReferenceException() { IStructuralEquatable structuralEquatable = ValueTuple.Create(1); Assert.Throws(() => structuralEquatable.Equals(Tuple.Create(1), null)); } [Fact] public void IStructuralEquatable_GetHashCode_NullEqualityComparer_ThrowsNullReferenceException() { IStructuralEquatable structuralEquatable = ValueTuple.Create(1); Assert.Throws(() => structuralEquatable.GetHashCode(null)); } [Fact] public void IStructuralComparable_CompareTo_NullEqualityComparer_ThrowsNullReferenceException() { IStructuralComparable structuralComparable = ValueTuple.Create(1); Assert.Throws(() => structuralComparable.CompareTo(Tuple.Create(1), null)); } ``` Spun off from #13410 /cc @karelz (who can help triage this :) ) +13430 area-System.Security Correctly encode the 0-subidentifier in DerEncoder During the ECDSA-on-AppleCrypto work it was observed that two of the three supported curves didn't import successfully due to the curve OIDs being incorrect. These curves both had a sub-identifier with value 0, which was not correctly handled by the DerEncoder class. By changing while (!=0) to do..while(!=0) the 0-subidentifier gets a zero byte pushed onto the data stack, making it encode as { 0x00 } instead of { }. Added tests for both reading and writing. cc: @stephentoub @steveharter +13431 area-System.Security Add a static test for RSA OAEP-SHA384 decryption None of the RSA tests did OAEP-SHA384 (or any SHA-2 OAEP), this rectifies that. cc: @stephentoub @steveharter +13432 area-System.Globalization Fix the TZ test when using ambiguous time +13433 area-Infrastructure Update BuildToolsVersion to 01007-01 Update buildtools to pick up fix for MicroBuild /cc @markwilkie @chcosta @dagood @weshaggard +13436 area-System.Runtime Add tests for IStructuralEquatable/Comparable throwing NullReferenceException Closes #13410 Closes #13429 /cc @stephentoub @jcouv +13439 area-System.Data Committing certain data results in infinite loop inside System.Data.SqlClient.TdsParserStateObject.cs I am running a service that is migrating terabytes of data (rows consist of a few uniqueidentifier columns and a varbinary column), I have run into a situation where System.Data.SqlClient will enter into an infinite loop on certain datasets (cpu spinning, making no progress, always at the same point in dataset, reproducible on multiple machines) After stepping through the .net source I believe the cause of the infinite loop is TdsParserStateObject.WritePacket returning null because the first bytes that are in the byte[] _outBuff happen to exactly equal 7,992 when BitConverter.ToInt32(_outBuff, _outputHeaderLen) is called. https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs#L3248 ![writepacket_randomdatamatchingconditional](https://cloud.githubusercontent.com/assets/338022/20076695/0d20a4c4-a4ff-11e6-8807-a977f9915f8b.png) WritePacket returning null and doing nothing causes the do while loop in TdsParserStateObject.WriteByteArray to spin forever, as it will get into state of _outBuff.Length == _outBytesUsed, so remainder is 0, since len -= remainder; is the update to the loop condition variable, it will spin forever in this loop. +13440 area-Meta Replace APISet imports with Win32 imports on Windows To build single set of binaries that enable us to run on all supported editions of Windows without requiring dependencies like APISet forwarders that are unsupported by the OS, we are modifying CoreFX to rely on imports from standard binaries (e.g. kernel32), instead of APISet imports. After this commit, CoreFX still imports several functions through APISet (GetRestrictedErrorInfo from api-ms-win-core-winrt-error-l1-1-0.dll; OpenFileMappingFromApp and VirtualAllocFromApp from api-ms-win-core-memory-l1-1-3.dll; RoGetBufferMarshaler from api-ms-win-core-winrt-robuffer-l1-1-0.dll). These are functions that target functionalities that exist only on newer versions of Windows, and have no consistent exports from stadnard binaries. +13441 area-System.Net Expose additional methods from HttpWebRequest and Response Contributes to https://github.com/dotnet/corefx/issues/13372 +13442 area-Infrastructure Add layout based NETCoreApp packages This adds a package Microsoft.Private.CoreFx.NETCoreApp This package contains all the reference assemblies for NETCoreApp and a runtime.json for runtime-specific packages which each contain the entire implementation. This is waiting on https://github.com/dotnet/buildtools/pull/1136 which will produce the layout folders during the build. /cc @weshaggard +13445 area-Serialization Add multiple tests to cover the following APIs. Add multiple tests to cover the following APIs. System.Runtime.Serialization.ExportOptions System.Xml.IFragmentCapableXmlDictionaryWriter System.Xml.Serialization.CodeIdentifier System.Xml.Serialization.IxmlTextParser System.Xml.Serialization.XmlSerializerImplementation System.Xml.Serialization.XmlSerializerVersionAttribute System.Xml.Serialization.XmlSerializerAssemblyAttribute System.Xml.Serialization.XmlMemberMapping System.Xml.Serialization.XmlMembersMapping System.Xml.Serialization.XmlReflectionImporter System.Xml.Serialization.XmlReflectionMember System.Xml.XmlDictionaryReader.GetNonAtomizedNames(System.String@,System.String@) Fix #13365 @shmao @zhenlan @mconnew +13446 area-System.Runtime Removing Remoting.Messaging from Serialization Formatters This fixes https://github.com/dotnet/corefx/issues/13338 @jkotas @weshaggard @stephentoub @joperezr PTAL +13447 area-System.Console Console.ReadLine() is blocked in Linux even though the StandardInput of the process has been disposed "I'm working on a program that chains the standard output and standard input of a collection of processes, similar to the piping functionality in a shell. I use a worker thread to relay bytes between the output of upstream process and the input of the downstream process. When `_upstream.StandardOutput.BaseStream.Read` return `0`, the worker thread dispose the `StandardInput` of the downstream process, and in that case, `Console.ReadLine()` in the downstream process is supposed to return `null`, so that the downstream process knows there is no more input and starts to wrap up and exit. This works fine in Linux when 2 processes are chained, **however, when more than 2 processes are chained, `Console.ReadLine()` in the downstream process continues to block even though the `StandardInput` of the process has been disposed.** **However, the same code works fine on windows when chaining any numbers of processes.** Repro Code ------------------------ **worker-thread-pipe: work-thread.exe** ```CSharp using System; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading; namespace ConsoleApplication { public class Program { /// /// Number of child processes /// private static int childCount = 0; /// /// Wait for all processes to finish /// private static ManualResetEventSlim eventSlim = new ManualResetEventSlim(); /// /// Chain native commands. /// e.g. copy-async ""C:\WINDOWS\system32\ipconfig.exe"" ""C:\Program Files (x86)\Microsoft VS Code\bin\cat.exe"" /// /// /// Expect executables and their arguments to be represented in this way: /// [executable]|[arguments] /// public static void Main(string[] args) { if (args.Length == 0) { // Use default command chain if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.WriteLine(""Demo piping behavior: 'ipconfig.exe | cat.exe'""); args = new string[] { @""C:\WINDOWS\system32\ipconfig.exe"", @""C:\Program Files (x86)\Microsoft VS Code\bin\cat.exe"" }; } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { Console.WriteLine(""Demo pipeing behavior: 'ifconfig | cat'""); args = new string[] { ""/sbin/ifconfig"", ""/bin/cat"" }; } } List processes = new List(); for (int i = 0; i < args.Length; i++) { ProcessStartInfo startInfo = null; // Expect executables and their arguments to be represented in this way: [executable]|[arguments] int colonIndex = args[i].IndexOf('|'); if (colonIndex == -1 && !string.IsNullOrWhiteSpace(args[i])) { startInfo = new ProcessStartInfo(args[i]); } else if (colonIndex > 0) { startInfo = new ProcessStartInfo( args[i].Substring(0, colonIndex), args[i].Substring(colonIndex + 1)); } else { throw new ArgumentException(""args are incorrect.""); } if (i > 0) { startInfo.RedirectStandardInput = true; } if (i < args.Length - 1) { startInfo.RedirectStandardOutput = true; } Process proc = new Process() { StartInfo = startInfo, EnableRaisingEvents = true }; proc.Exited += new EventHandler(ProcessExitHandler); processes.Add(proc); } childCount = processes.Count; List pipes = new List(); Process upstream = null; for (int i = 0; i < processes.Count; i++) { Process proc = processes[i]; proc.Start(); if (upstream != null) { var pipe = new ProcessPipe(upstream, proc); pipe.Start(); pipes.Add(pipe); } upstream = proc; } foreach (var pipe in pipes) { pipe.Wait(); } // Wait for all child process to finish eventSlim.Wait(); } internal static void ProcessExitHandler(object sender, System.EventArgs e) { // Set the event if it's the last child process if (Interlocked.Decrement(ref childCount) == 0) eventSlim.Set(); } } internal class ProcessPipe { private byte[] _buffer; private Process _upstream, _downstream; private Thread _thread; internal ProcessPipe(Process upstream, Process downstream) { _buffer = new byte[1024]; _upstream = upstream; _downstream = downstream; } private void StartPiping() { int count = 0; try { while ((count = _upstream.StandardOutput.BaseStream.Read(_buffer, 0, 1024)) > 0) { _downstream.StandardInput.BaseStream.Write(_buffer, 0, count); _downstream.StandardInput.BaseStream.Flush(); } } catch (Exception ex) { Console.WriteLine(""Exception when reading/writing from worker-thread: {0}"", ex.Message); } finally { Console.WriteLine(""{0} exiting, disposing StandardInput of process '{1} {2}'"", _thread.Name, _downstream.StartInfo.FileName, _downstream.StartInfo.Arguments); try { _downstream.StandardInput.Dispose(); } catch (Exception ex) { Console.WriteLine(""Disposeing StandardInput failed: {0}"", ex.Message); } } } internal void Start() { _thread = new Thread(new ThreadStart(StartPiping)); _thread.Name = string.Format(""{0} -> {1} :Piping Thread"", _upstream.StartInfo.FileName, _downstream.StartInfo.FileName); _thread.Start(); } internal void Wait() { _thread.Join(); } } } ``` **slow-outputer: slow.exe** ```CSharp using System; using System.Threading; namespace NativePipe { public class Slow { private static string[] outputs = new string[] { ""This is a console app to write output in slow manner"", ""Hello world"", ""C# across platforms is awesome!"", ""We cannot go back time"", ""Unless we have a time machine~"", ""One last output :)"" }; public static void Main(string[] args) { foreach (string str in outputs) { Console.WriteLine(str); Console.Out.Flush(); Thread.Sleep(2000); } } } } ``` **mimic cat.exe with logging: mycat.exe** ```CSharp using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { if (args.Length != 1) { Console.Error.WriteLine(""Wrong Usage!""); return; } bool first = true; string fileName = args[0]; string envVarName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ""USERPROFILE"" : ""HOME""; string homeDir = Environment.GetEnvironmentVariable(envVarName); string tempDir = Path.Combine(homeDir, ""temp""); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } using (FileStream fs = new FileStream(Path.Combine(tempDir, fileName), FileMode.Create)) using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8){AutoFlush = true}) { sw.WriteLine(""IsInputRedirected? {0}"", Console.IsInputRedirected); sw.WriteLine(""IsOutputRedirected? {0}"", Console.IsOutputRedirected); sw.WriteLine(""IsErrorRedirected? {0}"", Console.IsErrorRedirected); while (true) { if (first) { first = false; sw.WriteLine(""-- About to read from stdin --""); } string line = Console.ReadLine(); // <== Block here in Linux even though StandardInput of the process has been disposed if (line == null) { sw.WriteLine(""Console.In closed.""); break; } else { sw.WriteLine(line); Console.WriteLine(line); Console.Out.Flush(); Thread.Sleep(1000); } } } } } } ``` **project.json** ``` { ""name"": , ""version"": ""1.0.0-*"", ""buildOptions"": { ""debugType"": ""portable"", ""emitEntryPoint"": true }, ""frameworks"": { ""netcoreapp1.1"": { ""imports"": [ ""dnxcore50"" ], ""dependencies"": { ""Microsoft.NETCore.App"": ""1.1.0-preview1-001100-00"" } } }, ""runtimes"": { ""win10-x64"": { }, ""ubuntu.14.04-x64"": { } } } ``` Behavior on Windows ----------------------------- Chaining 3 processes runs successfully: ``` ## First add path to slow.exe and mycat.exe to environment variable PATH E:\arena\dotnetApp\pipe-threading\bin\Debug\netcoreapp1.1\win10-x64>work-thread.exe slow ""mycat|cat1"" ""mycat|cat2"" This is a console app to write output in slow manner Hello world C# across platforms is awesome! We cannot go back time Unless we have a time machine~ One last output :) slow -> mycat :Piping Thread exiting, disposing StandardInput of process 'mycat cat1' mycat -> mycat :Piping Thread exiting, disposing StandardInput of process 'mycat cat2' ``` Logging from `mycat.exe` shows that `Console.ReadLine() == null` was hit in both `mycat.exe` processes (note the line **`Console.In closed.`** in the logs): **cat1** ``` IsInputRedirected? True IsOutputRedirected? True IsErrorRedirected? False -- About to read from stdin -- This is a console app to write output in slow manner Hello world C# across platforms is awesome! We cannot go back time Unless we have a time machine~ One last output :) Console.In closed. ``` **cat2** ``` IsInputRedirected? True IsOutputRedirected? False IsErrorRedirected? False -- About to read from stdin -- This is a console app to write output in slow manner Hello world C# across platforms is awesome! We cannot go back time Unless we have a time machine~ One last output :) Console.In closed. ``` Behavior on Linux ---------------------- **Chaining the same 3 processes hangs:** ``` ## First add path to slow and mycat to environment variable PATH user@machine:~/arena/pipe-threading/bin/Debug/netcoreapp1.1/ubuntu.14.04-x64$ ./work-thread slow ""mycat|cat1"" ""mycat|cat2"" This is a console app to write output in slow manner Hello world C# across platforms is awesome! We cannot go back time Unless we have a time machine~ One last output :) slow -> mycat :Piping Thread exiting, disposing StandardInput of process 'mycat cat1' ``` Logging from `mycat` shows that `Console.ReadLine() == null` was NOT hit in both `mycat` processes (note the line **`Console.In closed.`** is missing in the logs): **cat1** ``` user@machine:~/temp$ cat cat1 IsInputRedirected? True IsOutputRedirected? True IsErrorRedirected? False -- About to read from stdin -- This is a console app to write output in slow manner Hello world C# across platforms is awesome! We cannot go back time Unless we have a time machine~ One last output :) ``` **cat2** ``` user@machine:~/temp$ cat cat2 IsInputRedirected? True IsOutputRedirected? False IsErrorRedirected? False -- About to read from stdin -- This is a console app to write output in slow manner Hello world C# across platforms is awesome! We cannot go back time Unless we have a time machine~ One last output :) ```" +13448 area-Infrastructure Add Windows 32 bit to test build We are currently not testing 32 bit. (Which we support on Windows) We need to enable this for the test build. Separately we should enable it for CI -- @mmitche what is involved to do that, once the test build is going? /cc @karelz @weshaggard +13449 area-System.Collections [WIP] Fix Inconsistencies in HashSetEqualityComparer Fixes #12560 by fixing the logic for selecting the fast-path. Unlike what was suggested in the thread for that issue, **this could be a breaking change**, that should be considered before accepting. It also makes some further changes so this is little commits now to aid examining each. They should be rebased into a single commit first if this is accepted. 427b429bb49f1f98ed621ca08b1243ef63f599b3 is the actual fix, changing a comparison of the two sets' comparers with a comparison between that of the first set and the comparer that is meant to be used by the method. Hence it's fast-path now works. ff7ef41f5ecb1485372dbf35724849fa712cdf9c improves the short-circuiting at the beginning. As well as being an improvement in itself, it moves the `Count` check out of the fast-path aiding the next step… adcf7717c0d8d119e581381cee6ff8aaa84ffaa5 uses `ContainsAllElements` instead of the loop, since that's what the loop is doing. It also covers the case were the same fast path can be used in the other direction because the second set has the appropriate comparer though the first did not. 6ec726e5c93ea613dbb59b0e83355565a0b90206 improves the non-fast-path approach for most cases (there are times when the previous code would return false sooner, but this O(n) approach should beat its O(n2) approach most of the time. 1de6790a8fde0361ba171ff5580a69b74538586e is a minor improvement to `HashSetEqualityComparer.GetHashCode()` because improving it was the original suggestion in #12560 though this minor improvement was all I could see to do there. It means empty sets don't has the same as null, and removes an operation per item that doesn't add anything to the hash quality. This also needs some test coverage. +13450 area-System.Reflection System.Reflection.TypeExtensions does not work on .NET Native I'm trying to use the `System.Runtime.TypeExtensions` package in a UWP project, and I experienced a curious behavior. My call to `Type.GetField()`. worked just fine in Debug mode, but would not work in Release Mode. Specifically, `Type.GetField()` returns null every time. Based on my research, I believe it is because `System.Reflections.TypeExtensions.dll` does not have a Default.rd.xml file containing the reflection policy for the assembly. I'm not sure if that is on purpose, or an oversight. Also not sure if that will actually solve my problem. If there is another reason this code will not work in UWP apps in release mode, there needs to be a way to ensure the package is not used in UWP apps, because developers won't know it doesn't work until they put their app in the Store. Thanks! +13451 area-System.IO Move IO types into System.Runtime Move all of System.IO and System.IO.Primitives into System.Runtime. @weshaggard, @ianhays +13452 area-System.Diagnostics Process.GetCurrentProcess().MainModule.FileName returns incorrect path in linux ### Steps to reproduce 1. Use dotnet executable from a path with space. E.g. `/tmp/dotnet 2/dotnet-cli` 2. Use following code: ``` using System; using System.Diagnostics; class Program { static void Main(string[] args) { Console.WriteLine(GetCurrentProcessFileName()); } public static string GetCurrentProcessFileName() { return Process.GetCurrentProcess().MainModule.FileName; } } ``` 3. Compile and run the app `/tmp/dotnet\ 2/dotnet-cli/dotnet /tmp/app.dll` ### Expected App should print `/tmp/dotnet 2/dotnet-cli/dotnet` ### Actual App prints `/tmp/dotnet` +13453 area-System.Net Test failure: System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Linux/IPInfoTest_AccessAllProperties_NoErrors Opened on behalf of @jiangzeng The test `System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Linux/IPInfoTest_AccessAllProperties_NoErrors` has failed. System.Net.NetworkInformation.NetworkInformationException : An error was encountered while querying information from the operating system. ---- System.AggregateException : One or more errors occurred. (The process cannot access the file '/etc/resolv.conf' because it is being used by another process.) (The process cannot access the file '/proc/net/route' because it is being used by another process.) -------- System.IO.IOException : The process cannot access the file '/etc/resolv.conf' because it is being used by another process. -------- System.IO.IOException : The process cannot access the file '/proc/net/route' because it is being used by another process. Stack Trace: at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() at System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Linux.IPInfoTest_AccessAllProperties_NoErrors() ----- Inner Stack Trace ----- ----- Inner Stack Trace #1 (System.IO.IOException) ----- at System.IO.FileStream.Init(FileMode mode, FileShare share) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.Open(String path, FileMode mode, FileAccess access) at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.Net.NetworkInformation.StringParsingHelpers.ParseDnsAddressesFromResolvConfFile(String filePath) at System.Net.NetworkInformation.UnixIPInterfaceProperties.GetDnsAddresses() at System.Net.NetworkInformation.UnixIPInterfaceProperties..ctor(UnixNetworkInterface uni) at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__2(String name, LinkLayerAddressInfo* llAddr) ----- Inner Stack Trace #2 (System.IO.IOException) ----- at System.IO.FileStream.Init(FileMode mode, FileShare share) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.Open(String path, FileMode mode, FileAccess access) at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) at System.IO.File.InternalReadAllLines(String path, Encoding encoding) at System.Net.NetworkInformation.StringParsingHelpers.ParseGatewayAddressesFromRouteFile(String filePath, String interfaceName) at System.Net.NetworkInformation.LinuxIPInterfaceProperties.GetGatewayAddresses() at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__2(String name, LinkLayerAddressInfo* llAddr) Build : Master - 20161107.502 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161107.502/workItem/System.Net.NetworkInformation.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Linux~2FIPInfoTest_AccessAllProperties_NoErrors +13454 area-System.Net Test failure: System.Net.NetworkInformation.Tests.NetworkInterfaceIPv4Statistics/BasicTest_GetIPv4InterfaceStatistics_Success_Linux Opened on behalf of @jiangzeng The test `System.Net.NetworkInformation.Tests.NetworkInterfaceIPv4Statistics/BasicTest_GetIPv4InterfaceStatistics_Success_Linux` has failed. System.IO.IOException : The process cannot access the file '/sys/class/net/lo/tx_queue_len' because it is being used by another process. Stack Trace: at System.IO.FileStream.Init(FileMode mode, FileShare share) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.Open(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.Open(String path, FileMode mode, FileAccess access) at System.IO.FileStreamHelpers.CreateFileStream(String path, Boolean write, Boolean append) at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.IO.File.ReadAllText(String path) at System.Net.NetworkInformation.StringParsingHelpers.ParseRawIntFile(String filePath) at System.Net.NetworkInformation.LinuxIPInterfaceStatistics..ctor(String name) at System.Net.NetworkInformation.LinuxIPv4InterfaceStatistics..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetIPv4Statistics() at System.Net.NetworkInformation.Tests.NetworkInterfaceIPv4Statistics.BasicTest_GetIPv4InterfaceStatistics_Success_Linux() Build : Master - 20161107.502 (Core Tests) Failing configurations: - Suse.132.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161107.502/workItem/System.Net.NetworkInformation.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.NetworkInterfaceIPv4Statistics~2FBasicTest_GetIPv4InterfaceStatistics_Success_Linux +13455 area-System.Runtime System.Runtime.Numerics.Tests threw OutOfMemoryException No test results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161107.502/workItem/System.Runtime.Numerics.Tests/details/21670e64-2ea5-45bb-ab05-6865c589e68b ``` 2016-11-08 01:16:59,881: INFO: proc(55): run_and_log_output: Output: Unhandled Exception: OutOfMemoryException. 2016-11-08 01:17:47,127: INFO: proc(55): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/21670e64-2ea5-45bb-ab05-6865c589e68b/Work/613149c7-69a9-42ca-9740-de748dc06a08/Unzip/RunTests.sh: line 285: 7148 Aborted (core dumped) ./corerun xunit.console.netcore.exe System.Runtime.Numerics.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonlinuxtests 2016-11-08 01:17:47,128: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time=01:17:47. Return value was 134 ``` Build : Master - 20161107.502 (Core Tests) Failing configurations: Centos.71.Amd64:AnyCPU-Release +13456 area-System.Security Test failure: Some tests of 'System.Security.Cryptography.X509Certificates.Tests' failed with 'Interop+Crypto+OpenSslCryptographicException' Opened on behalf of @jiangzeng The test `System.Security.Cryptography.X509Certificates.Tests.CollectionTests/ExportCert_SecureString` has failed. Interop+Crypto+OpenSslCryptographicException : error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure Stack Trace: at Internal.Cryptography.Pal.OpenSslPkcs12Reader.Decrypt(SafePasswordHandle password) at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(OpenSslPkcs12Reader pfx, SafePasswordHandle password, Boolean single, ICertificatePal& readPal, List`1& readCerts) at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(Byte[] rawData, SafePasswordHandle password, Boolean single, ICertificatePal& readPal, List`1& readCerts) at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(Byte[] rawData, SafePasswordHandle password, ICertificatePal& certPal) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.Tests.CollectionTests.TestExportSingleCert_SecureStringPassword(X509ContentType ct) at System.Security.Cryptography.X509Certificates.Tests.CollectionTests.ExportCert_SecureString() Build : Master - 20161107.502 (Core Tests) Failing configurations: - Debian.82.Amd64 - AnyCPU-Debug - AnyCPU-Release - Ubuntu.1404.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Core.Amd64 - AnyCPU-Debug - AnyCPU-Release - Redhat.72.Amd64 - AnyCPU-Debug - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release - Windows.81.Amd64 - AnyCPU-Debug - AnyCPU-Release - Suse.132.Amd64 - AnyCPU-Debug - AnyCPU-Release - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release - Fedora.23.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Security.Cryptography.X509Certificates.Tests.CollectionTests\ExportCert_SecureString System.Security.Cryptography.X509Certificates.Tests.PfxTests\TestConstructor_SecureString Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161107.502/workItem/System.Security.Cryptography.X509Certificates.Tests +13457 area-System.Console Remove PlatformNotSupportedException from NetCore50 System.Console Color properties This pull request: https://github.com/dotnet/corefx/pull/12984 regressed behavior for setting console color on netcore50 versions of System.Console. These properties now throw a System.PlatformNotSupportedException. There is no desire to work around this in Xunit.Console.NetCore so netcore50 tests are broken for this reason until this is fixed. It's quite possible for code one is indirectly calling (and may not have control over) to call these APIs, and without being allowed to call these without crashing some code may be unusable. @weshaggard @SedarG +13458 area-System.Linq Expression Interpreter Writeback can be incorrect in the face of aliasing. Consider a byref method such as this constructor: ```C# private class ByRefNewType { public ByRefNewType(ref int a, ref int b) { ++a; b *= a; } } ``` And a variable `int x = 3` Calling `new ByRefNewType(ref x, ref x)` is equivalent to running `++x; x*=x` and hence `x` is 16. With an expression-created delegate: ```C# var del = Expression.Lambda( Expression.New( typeof(ByRefNewType).GetConstructors()[0], pX, pY), pX, pY).Compile(); int x = 3; del(byref x, byref x); ``` Then with the compiler `x` will be 16 as expected, by with the interpreter `y` will be 12 (it could conceivably end up being 4). The cause is that the interpreter doesn't have true reference types and so the aliasing is broken. I'm not sure this is feasibly fixable. It may have to be merely noted as a limitation. +13459 area-System.IO Fix StreamReader/Writer to use FileShare.Read In all of the refactorings around FileStream / StreamReader / StreamWriter, we've started accidentally passing FileShare.None instead of FileShare.Read when creating the stream used by StreamReader/StreamWriter, resulting in a bunch of test failures. Fixes https://github.com/dotnet/coreclr/issues/8030 Fixes https://github.com/dotnet/corefx/issues/13454 Fixes https://github.com/dotnet/corefx/issues/13453 cc: @ianhays, @adityamandaleeka +13460 area-System.Linq Tests for New Expressions with byref parameters. Inlcludes ActiveIssue test for #13458 +13464 area-System.Net Modify webproxy tests to handle platform specific difference. In Ubuntu 14.04 (x86_64), ``System.Net.WebProxy.Tests`` inner test failed as follows: ``` xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.WebProxy.Tests Discovered: System.Net.WebProxy.Tests Starting: System.Net.WebProxy.Tests System.Net.Tests.WebProxyTest.BypassOnLocal_MatchesExpected(destination: http://127.0.0.1/, isLocal: True) [FAIL] Assert.False() Failure Expected: False Actual: True Stack Trace: /home/parjong/projects/dotnet/corefx/src/System.Net.WebProxy/tests/WebProxyTest.cs(184,0): at System.Net.Tests.WebProxyTest.BypassOnLocal_MatchesExpected(Uri destination, Boolean isLocal) Finished: System.Net.WebProxy.Tests === TEST EXECUTION SUMMARY === System.Net.WebProxy.Tests Total: 25, Errors: 0, Failed: 1, Skipped: 0, Time: 4.050s ``` +13466 area-System.Linq Remove some dead code from Interpreter and LightCompiler. Also make some members private when only accessed by their own type. Contributes to #3836 +13467 area-System.Linq Shift Expressions Tests and Refactoring Add tests for nullable operands to shift expressions. Add tests for invalid types on shift expression creation. Remove interpreter support for methodless shifts on enums. These aren't valid expressions, so this code is dead. Remove. Interpreter throws runtime exception on invalid LHS to shift instruction, but this is already checked in earlier validation. Replace runtime exception with assertion. Refactor commonality in LeftShiftInstruction and RightShiftInstruction The related classes have a lot of code duplication, so refactor to remove that. Contributes to #3836 and #1198 +13468 area-System.IO Remove reflection from FileStreamHelpers on coreclr cc: @ianhays, @JeremyKuhne, @justinvp +13469 area-System.Data "System.Data.SqlClient.SqlBuffer.get_Int32() cannot read from ""tinyint"" column" "Because of boxing here's what happens when you have a `tinyint` column and attempt to map it to `Int32` member: 1. `SqlBuffer.get_Int32()` is called 2. `SqlBuffer.get_Int32()` sees that ""storage type"" is not `StorageType.Int32`, so it calls `get_Value()` 3. `get_Value()` checks ""storage type"" again and calls `get_Byte()` 4. `get_Byte()` returns a value of type `Byte` 5. control gets back to `get_Value()` and it returns `Byte` boxed as `Object` 6. control gets back to `get_Int32()` and it casts `Object` which contains a boxed `Byte` into `Int32` and the cast fails with `InvalidCastException`. Which basically means that you cannot read a narrow range int type column into a wider range type datatype. It makes no sense. I guess I can fix this - just enum all ""smaller"" types in each `get_SomeIntegerType()` and retrieve proper data. Would such fix be desired?" +13470 area-System.Net Proposal: Add Socket.SafeHandle property Socket currently exposes: ```C# public IntPtr Handle => _handle.DangerousGetHandle(); ``` We should add: ```C# public SafeHandle SafeHandle => _handle; ``` This will let code consuming the socket interact with its handle directly in a safe manner; today if code relies on the Handle, the Socket could be closed out from under it, closing that handle, and leading to dangerous race conditions. With the SafeHandle exposed, consuming code can handle this correctly. For example, this will make it feasible to correctly fix https://github.com/dotnet/corefx/issues/11807, whereas today reflection is used: https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/Microsoft/Win32/SafeHandles/SafePipeHandle.Unix.cs#L36 +13471 area-System.Security Three X509Certificates / SecureString tests failing ``` System.Security.Cryptography.X509Certificates.Tests.PfxTests.TestConstructor_SecureString(keyStorageFlags: DefaultKeySet) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The specified network password is not correct Stack Trace: at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.X509Certificates\tests\PfxTests.cs(48,0): at System.Security.Cryptography.X509Certificates.Tests.PfxTests.TestConstructor_SecureString(X509KeyStorageFlags keyStorageFlags) System.Security.Cryptography.X509Certificates.Tests.PfxTests.TestConstructor_SecureString(keyStorageFlags: EphemeralKeySet) [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The specified network password is not correct Stack Trace: at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.X509Certificates\tests\PfxTests.cs(48,0): at System.Security.Cryptography.X509Certificates.Tests.PfxTests.TestConstructor_SecureString(X509KeyStorageFlags keyStorageFlags) System.Security.Cryptography.X509Certificates.Tests.CollectionTests.ExportCert_SecureString [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The specified network password is not correct Stack Trace: at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.X509Certificates\tests\CollectionTests.cs(1393,0): at System.Security.Cryptography.X509Certificates.Tests.CollectionTests.TestExportSingleCert_SecureStringPassword(X509ContentType ct) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.X509Certificates\tests\CollectionTests.cs(647,0): at System.Security.Cryptography.X509Certificates.Tests.CollectionTests.ExportCert_SecureString() ``` +13472 area-System.Security Add more static DSA tests, including NIST CAVP test vectors. The portion of the tests in the existing file were signatures generated by .NET Framework's DSACng, which were added first during this exercise. The NIST cases came as a followup. The general flow for NIST cases was: * Take one representative sample from legacy DSA (FIPS 186-2). * For each (L,N,H) tuple for FIPS 186-4 take the first test case. * If any of the further test cases looked interesting (such as having a leading 0x00), include such test case. N=224 is not supported by Windows, and Windows CNG is the only current DSA implementation that supports FIPS 186-3, so they were omitted as not worth the hassle yet of making a new test capability that was never met. H=SHA224 is not supported by .NET, so none of those cases were included. cc: @steveharter +13474 area-System.IO Some isolated storage tests failed with UnauthorizedAccessException 20 of the isolated storage tests failed when running with a clean repo, build from root. All are failing because they can't access the path below. The path doesn't exist after the tests are done but if I try to create it myself with CreateDirectory, there is no problem. After cleaning the isolated storage folder the tests pass. ``` System.IO.IsolatedStorage.MoveFileTests.MoveFile_MoveOver(scope: UserStoreForAssembly) [FAIL] System.UnauthorizedAccessException : Access to the path 'C:\Users\danmose\AppData\Local\IsolatedStorage\onb3nvpa.ama\a3ve4vgl.zmh\StrongName.523eyfdtenor3l0btjpf240vsoo5jc3i\AssemFiles\' is denied. Stack Trace: at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Directory.CreateDirectory(String path) at System.IO.IsolatedStorage.Helper.CreateDirectory(String path, IsolatedStorageScope scope) at System.IO.IsolatedStorage.IsolatedStorageFile.Initialize(IsolatedStorageScope scope) at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope) at System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly() C:\git\corefx.dan\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\IsoStorageTest.cs(52,0): at System.IO.IsolatedStorage.IsoStorageTest.GetPresetScope(PresetScopes scope) C:\git\corefx.dan\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\MoveFileTests.cs(86,0): at System.IO.IsolatedStorage.MoveFileTests.MoveFile_MoveOver(PresetScopes scope) ``` @JeremyKuhne +13475 area-System.Security Add AsymmetricAlgorthm.ToXmlString, FromXmlString, and other missing members Addresses issue https://github.com/dotnet/corefx/issues/12315 ```` On AsymmetricAlgorithm: P:KeyExchangeAlgorithm P:SignatureAlgorithm M:Clear M:FromXmlString(string) M:ToXmlString(bool) + ECDsa changes per ns1.7 and .net 4.6.3 M:FromXmlString(string, ECKeyXmlFormat) M:ToXmlString(ECKeyXmlFormat) T:ECKeyXmlFormat ```` Tests are new (not ported). For RSA and DSA, netfx used a different (lower-level) Xml parser; corefx uses XmlReader and XmlWriter. For EcDsa, code was ported directly from netfx including the file Rfc4050KeyFormatter and new enum ECKeyXmlFormat. @bartonjs please review +13476 area-System.Security Moving part of System.Security.Permissions down to System.Runtime.Extensions Fixes #13289 cc: @ianhays @weshaggard @danmosemsft Moving netstandard 2.0 members of System.Security.Permissions down to System.Runtime.Extensions so that they are part of NETStandard.Library +13478 area-System.Runtime Misc NS2.0 in System namespace This is missing ISerializable. ``` public class TypeUnloadedException : SystemException, ISerializable { public TypeUnloadedException(string message, Exception innerExceptioninner); } ``` This is missing the IEquatable implementation ``` public struct UIntPtr : IEquatable, ISerializable { } ``` +13479 area-System.Runtime Update Sytem.Runtime.InteropServices to ns2.0 Updated the apis and added test cases for the Marshal functions. @yizhang82 @jkotas @weshaggard @stephentoub +13480 area-Infrastructure Passing /p:testnugetruntimeid=win10-x86 fails Right now, if you pass `/p:testnugetruntimeid=win10-x86` to a test project, it fails for a couple of reasons (at least that I've identified). * The rid is not listed in our [test-runtime project.json](https://github.com/dotnet/corefx/blob/master/src/Common/test-runtime/project.json#L391). * ~~(after fixing the above) There is a runtime error when running the tests:~~ ``` Discovering: System.Runtime.Numerics.Tests Discovered: System.Runtime.Numerics.Tests System.PlatformNotSupportedException: Operation is not supported on this platform. ``` ~~A `PlatformNotSupportedException` seems to be thrown if any `-notrait ___` parameter is passed. It works if I manually modify the arguments and remove all of the `-notrait` parameters.~~ EDIT: The second problem went away when I cleaned my packages directory. Furthermore, some of the tests don't even seem to work on x86 at all, for reasons unrelated to the above. The System.Runtime.Numerics tests try to allocate too much memory for a 32-bit process, for example. @karajas +13482 area-System.ComponentModel System.ComponentModel.AsyncCompletedEventArgs has a different behavior in Desktop and .NET Core `System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary` have different behaviors in Desktop and .NET Core. In Desktop if _error (expected exception to be thrown when an AsyncWork is completed and the result is an exception) is not null we would throw a `TargetInvocationException` with the _error as an `InnerException`. In .NET Core we are throwing the _error Exception. They should both throw `TargetInvocationException`. +13483 area-System.Linq Stragglers in S.Linq.Expressions These are in NS2.0 but not exposed ``` public sealed class Expression : LambdaExpression { public new TDelegate Compile(DebugInfoGenerator debugInfoGenerator); } public abstract class ExpressionVisitor { protected internal virtual Expression VisitDynamic(DynamicExpression node); } public abstract class LambdaExpression : Expression { public Delegate Compile(DebugInfoGenerator debugInfoGenerator); } public abstract class MemberBinding { protected MemberBinding(MemberBindingType type, MemberInfo member); } ``` +13484 area-System.Runtime Missing CriticalHandle.Close() Missed in https://github.com/dotnet/corefx/issues/11729 +13485 area-System.Runtime Add Marshal SecureString apis Fixes #13339 +13486 area-System.Reflection 3 enums missing entries in Ref.Emit These are in NS2.0 but missing from our copies of the enums: ``` namespace System.Reflection.Emit { public enum FlowControl { Phi = 6, } public enum OpCodeType { Annotation = 0, } public enum OperandType { InlinePhi = 6, } ``` If they don't have meaning in Core, they should be present but using them can throw PNSE. +13487 area-System.IO Move Path class down to CoreLib For 2 main reasons: perf and stability We already have a copy of a significant chunk of code that went in with long path support. The code in CoreLib isn't as up-to-date or complete as what we currently have in CoreFX (partially because we were trying to maintain source compatibility with desktop and partially we were only enable AppDomain bring up). This wasn't a big deal when all we had was AppDomain in play, but now that we're moving additional IO classes down we're exposing ourselves to breaks. (Either by missing fixes or missing differing behavior as the code in CoreLib uses the PAL.) While we could just share the code a little more completely there are additional issues around caching. Normalizing paths on Windows would benefit from having a single instance of the code- particularly as the same paths tend to get normalized repeatedly in succession. Having a single buffer cache will avoid some (potentially a lot of) buffer resizing. @ianhays, @stephentoub, @weshaggard, @jkotas +13488 area-System.IO FileStream missing IntPtr constructors These are missing ``` public FileStream(IntPtr handle, FileAccess access); public FileStream(IntPtr handle, FileAccess access, bool ownsHandle); public FileStream(IntPtr handle, FileAccess access, bool ownsHandle, int bufferSize); public FileStream(IntPtr handle, FileAccess access, bool ownsHandle, int bufferSize, bool isAsync); ``` +13489 area-System.IO FilexxException missing GetObjectData These are missing ``` public class FileLoadException : IOException { public override void GetObjectData(SerializationInfo info, StreamingContext context); } public class FileNotFoundException : IOException { public override void GetObjectData(SerializationInfo info, StreamingContext context); } ``` +13490 area-System.IO FileInfo missing Replace These NS2.0 methods are missing ``` public sealed class FileInfo : FileSystemInfo { public FileInfo Replace(string destinationFileName, string destinationBackupFileName); public FileInfo Replace(string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors); } ``` I notice they're not in the mscorlib facade for some reason which may be why they were missed. +13491 area-System.IO FileSystemWatcher missing some NS2.0 methods Missing: ``` public class FileSystemWatcher : Component, ISupportInitialize { public override ISite Site { get; set; } public ISynchronizeInvoke SynchronizingObject { get; set; } public void BeginInit(); protected override void Dispose(bool disposing); public void EndInit(); } ``` +13492 area-System.Diagnostics Fix procfs parsing for modules with a space. When parsing a proc maps file, the path would be improperly read if the path contained a space. This changes the behavior to read to the end of the line since the module path is the last component in the maps file. Fixes #13452 +13493 area-Meta ReleaseNotes link results in 404 The 1.1 release notes link points to https://go.microsoft.com/fwlink/?LinkID=799421 per https://github.com/dotnet/corefx/issues/8758#issuecomment-221048601, but that link is currently broken. @leecow owns this link, can you please update as appropriate. /cc @gkhanna79 +13496 area-System.Net Remove boxed Int32 from every Socket async send/receive Every async send/receive operation was boxing its Int32 result. cc: @davidsh, @cipop, @geoffkizer +13497 area-System.Xml Ensure randomized hashing is enabled and right implementation is being used in Xml this PR: - removes not used and unsafe implementation of SecureStringHasher - removes few TODOs - adds tests ensuring that implementation of GetHashCode in XmlQualifiedName and SecureStringHasher are secure This is a follow up of an internal issue: Current implementations of XmlQualifiedName and SecureStringHasher are unsafe if randomized hashing is disabled. The only reliable way to check if randomized hashing is enabled is to make sure that hashes generated for the same string are different for different instances of the same executable. This approach was not taken as it would cause flakiness. Current approach is testing if we are not using any of the known unsafe (non randomized) implementations of GetHashCode. +13498 area-System.Net Shrink ContextAwareResult.StateFlags from Int32 to Byte It's a flags enum with fewer than 8 bits used; we can make its underlying type Byte rather than Int32. This shrinks the size of the ContextAwareResult._flags field accordingly. cc: @davidsh, @cipop, @geoffkizer +13500 area-System.Net Implement HttpWebRequest Timeout property Granular WinHttpHandler timeout properties are not exposed via the HttpClientHandler API , need timeout from HttpClientHandler to implement this. +13501 area-System.Security TestCopyConstructor_Lifetime_Cloned failed in ci - OpenCSP failed with error code 2148073494. this code seems to be [keyset does not exist](http://index/?query=0x80090016&rightProject=mscorlib&file=system%5Csecurity%5Ccryptography%5Cutils.cs&line=54) ``` 14:49:38 System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestCopyConstructor_Lifetime_Cloned [FAIL] 14:49:38 System.Security.Cryptography.CryptographicException : OpenCSP failed with error code 2148073494. 14:49:38 Stack Trace: 14:49:38 at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeProvHandle() 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeKeyHandle() 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(52,0): at Internal.Cryptography.Pal.CertificatePal.<>c.b__62_0(CspParameters csp) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(134,0): at Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\CertificateExtensionsCommon.cs(52,0): at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\tests\CtorTests.cs(266,0): at System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestPrivateKey(X509Certificate2 c, Boolean expectSuccess) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\tests\CtorTests.cs(242,0): at System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestCopyConstructor_Lifetime_Cloned() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/2797/consoleFull#184376521779fe3b83-f408-404c-b9e7-9207d232e5fc @steveharter +13502 area-System.Net Initial commit to System.Net.HttpListener This gets @ericeil PR #13287 in. Fixed merged conflicts. cc @stephentoub @davidsh @CIPop @geoffkizer @karelz +13504 area-Meta Publishing Core application targeting net461 "In order to use Oracle I'm targeting net461 in my Core application. After publishing IIS on win server 2012. I get this error: ![image](https://cloud.githubusercontent.com/assets/9387260/20122641/2cc1cd10-a5e7-11e6-8fed-c819c6e104d0.png) ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Extensions.PlatformAbstractions.PlatformServices' threw an exception. ---> System.TypeLoadException: Could not load type 'System.AppContext' from assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment.GetApplicationBasePath() at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..cctor() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() ``` my config file: `` after publishing looks like this: `` [project.json.txt](https://github.com/dotnet/corefx/files/579673/project.json.txt) However, if I target: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ``` It works fine. How do I make it work with net461?" +13505 area-System.Runtime Support for 64 bits array Is there a reason to limit arrays to 32 bit only addressable ones? Working around it might severely impact some HPC apps that manipulate large sets of data. I understand that .NetCore might run on some platforms that are not 64 bits and not many applications need such large arrays. But this seems a very limiting decision as we see more and more platforms going 64 bits and we are coming into the age of massive data. +13508 area-Infrastructure [ARM/CI] Change rootfs directories rootfs directory `/opt/linux-arm-emulator-root/` is still in use from coreclr ARM-CI so changing it to `/opt/linux-arm-emulator-root_{arm|arm-softfp}/`. +13509 area-System.Security Re-enable SecureString tests cc: @AlexGhiondea Fixes #13331 Fixes #13471 One thing to note: it looks like there was a discrepancy between SecureStringMarshal and Marshal in their handling of null SecureString inputs. SecureStringMarshal was returning IntPtr.Zero for a null input, whereas Marshal is throwing an ArgumentNullException. I've changed the tests to match the Marshal behavior, which is the same behavior that exists on desktop. We should confirm we're ok with this change from .NET Core 1.1, though, and address it subsequently in both the implementation and tests if we're not. +13510 area-Infrastructure Several assemblies still missing code coverage Several corefx assemblies are still missing code coverage data (due to missing PDBs?) The ones I noticed: - System.IO.MemoryMappedFiles - System.Net.Security - System.Net.WebSockets.Client - System.Runtime.InteropServices.RuntimeInformation - System.Security.AccessControl - System.Security.Principal.Windows cc: @crummel, @danmosemsft +13511 area-System.Data Enhance SqlClientDiagnosticListener to support SqlTransaction - Write… … tests Writing tests for https://github.com/dotnet/corefx/pull/13212#issuecomment-259215456 cc @saurabh500 +13512 area-Infrastructure Mark 1.0.3 release packages stable /cc @gkhanna79 @weshaggard @chcosta +13515 area-Infrastructure Updating CoreClr dependencies to stable +13516 area-System.Linq Cannot cast bool to bool-based enum in Convert Expression. "If one has a `Type`, `boolEnumType`, which is of an `Enum` type with `bool` as its underlying type (from somewhere outside of C# since C# can't create those) then one should be able to cast a boolean value to it with Expressions.Convert: ```C# var exp = Expression.Lambda>( Expression.Equal( Expression.Default(boolEnumType), Expression.Convert(Expression.Constant(false), boolEnumType))); var func = exp.Compile(); Assert.True(func()); ``` However, the compiler throws an `ArgumentException(""Unhandled convert: bool"")` on compilation, and the interpreter compiles but on execution throws `InvalidOperationException(""Code supposed to be unreachable"") or an assertion failure." +13518 area-System.Linq Expression casts tests and fix boolean-enum casts Fix bug in cast test where result wasn't correctly verified. Tests for casting reference type to enum for all underlying types. Remove always-true branching on .GetTypeInfo().IsEnum (Already asserted in constructor). Replace if (from == null) case with assertion. Add assertion in instruction emit backing this up. Remove unreachable case for enum base. Add tests for casting to enum types from underlying types. Fix compiler and interpreter for bool → bool-backed-enum. Fixes #13516 Remove unreachable case in CastToEnumInstruction.Run() and simplify test from method call and multiple-branched switch to null-check. Test cast tests on DateTime as they are specialised (should they be?) +13519 area-Meta ReliableSession in WCF missing (dotNetCore / UWP) I try to establish a reliable duplex connection via WCF (netTcpBinding) in UWP. NetTcpBinding/NetHttpBinding does not offer the possibility to configure a reliable session (option missing in ctor). +13520 area-Meta Revert renamed parameters Renaming a parameter is a disallowed [breaking change](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md) public class DuplicateWaitObjectException : ArgumentException, ISerializable { public DuplicateWaitObjectException(string message, Exception **innerException**inner); public class TypeUnloadedException : SystemException, ISerializable { public TypeUnloadedException(string message, Exception **innerException**inner); public class StackTrace { public StackTrace(Exception **e**exception); public StackTrace(Exception **e**exception, bool **fNeedFileInfo**needFileInfo); public StackTrace(Exception **e**exception, int skipFrames); public StackTrace(Exception **e**exception, int skipFrames, bool fNeedFileInfo); public class TcpListener { public void AllowNatTraversal(bool **allowed**allow); } public class UdpClient : IDisposable { public void AllowNatTraversal(bool **allowed**allow); namespace System.Reflection { public abstract class Assembly : ICustomAttributeProvider, ISerializable { public static Assembly LoadFrom(string **assemblyFile**path); public abstract class DSA : AsymmetricAlgorithm { public abstract byte[] CreateSignature(byte[] **rgbHash**hash); public abstract bool VerifySignature(byte[] **rgbHash**hash, byte[] **rgbSignature**signature); namespace System.Security.Cryptography.X509Certificates { public class X509Certificate2 : X509Certificate { public X509Certificate2(X509Certificate **certificate**cert); public class ThreadExceptionEventArgs : EventArgs { public ThreadExceptionEventArgs(Exception **t**exception); +13521 area-Meta Revert param names Renaming a parameter is a disallowed breaking change. Fixes #13520 @joperezr +13522 area-System.Runtime Add tests for marshal secure string apis +13523 area-System.Linq System.Linq.Expressions code coverage partial report It currently shows as 27%, while we expect a much higher number (it was 80% or more IIRC before code coverage stopped working in CI). This may be related to https://github.com/dotnet/corefx/issues/13510. One observation is that all interpreter code isn't covered, so there may be a compilation symbol missing for the test assembly build. Another contributing factor may be the merge of `System.Dynamic.Runtime` functionality. But even then, it seems many tests are not run, e.g. for the `Expression` class we expect a lot more coverage of various code paths (such as argument checking logic in the factories). +13524 area-System.Collections Remove space from filename - ImmutableArray.NonGeneric.Tests.cs I randomly noticed a space between the filename and extension of https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/tests/ImmutableArray/ImmutableArray.NonGeneric.Tests%20.cs I assume this isn't intentional. @hughbe @stephentoub @weshaggard +13525 area-Infrastructure Upgrade buildtools to get updated ReportGenerator To pick up some nice improvements in the latest version of ReportGenerator (the tool used to generate code coverage reports from OpenCover's output). +13526 area-System.Runtime Proposal: Adding System.SemanticVersion "One of the issues I keep running into with the ""default open"" world: prereleases. As more and more projects move to semantic versioning, it'd be nice to have a built-in type to handle these. Today, this fails: ```C# Version.Parse(""1.0.0-beta1""); ``` Because [`System.Version`](https://msdn.microsoft.com/en-us/library/system.version_properties.aspx) has no concept of pre-release suffixes. I'm not arguing it should be added (that's maybe a little to breaking). Instead how about a new type? `System.SemanticVersion` The *main* property most people would be interested in is the prerelease label, but other tenants of semantic versioning should be included. Comparisons being a big one. A lot of devs get this wrong on corner cases. I was looking for how to do best structure this and noticed: NuGet is already doing it. Here's their `SemanticVersion` class: ([part 1](https://github.com/NuGet/NuGet.Client/blob/4cccb13833ad29d6a0bcff055460d964f1b49cfe/src/NuGet.Core/NuGet.Versioning/SemanticVersion.cs), [part2](https://github.com/NuGet/NuGet.Client/blob/4cccb13833ad29d6a0bcff055460d964f1b49cfe/src/NuGet.Core/NuGet.Versioning/SemanticVersionBase.cs)). The API likely needs a little refinement for general use in the BCL, but is there a desire for this from others? I have use cases from parsing package versions to determining which version of Elasticsearch a client is connected to. There's a broad spectrum of semantic versioning use cases now. Suggestions from others (collating here): - It should be comparable to `Version` (additional operator overloads) ## API ```c# namespace System { public class SemanticVersion : IFormattable, IComparable, IComparable, IEquatable, ICloneable { public SemanticVersion(int major, int minor, int patch); public SemanticVersion(int major, int minor, int patch, string prereleaseLabel); public SemanticVersion(int major, int minor, int patch, string prereleaseLabel, string metadata); public SemanticVersion(int major, int minor, int patch, IEnumerable prereleaseLabel, IEnumerable metadata); public SemanticVersion(string version); protected SemanticVersion(Version version, string prereleaseLabel = null, string metadata = null); protected SemanticVersion(Version version, IEnumerable prereleaseLabels, IEnumerable metadata); public int Major { get; } public int Minor { get; } public int Patch { get; } public virtual IEnumerable PrereleaseLabels { get; } public virtual bool IsPrerelease { get; } public virtual IEnumerable Metadata { get; } public virtual bool HasMetadata { get; } public virtual string ToString(string format, IFormatProvider formatProvider); public override string ToString(); public override int GetHashCode(); public virtual SemanticVersion Clone(); object ICloneable.Clone() => Clone(); public virtual bool Equals(SemanticVersion other); public virtual bool Equals(Version other); public virtual int CompareTo(object obj); public virtual int CompareTo(SemanticVersion other); public virtual int CompareTo(Version other); public static SemanticVersion Parse(string versionString); public static bool TryParse(string versionString, out SemanticVersion version); public static bool operator ==(SemanticVersion left, SemanticVersion right); public static bool operator !=(SemanticVersion left, SemanticVersion right); public static bool operator <(SemanticVersion left, SemanticVersion right); public static bool operator <=(SemanticVersion left, SemanticVersion right); public static bool operator >(SemanticVersion left, SemanticVersion right); public static bool operator >=(SemanticVersion left, SemanticVersion right); public static bool operator ==(Version left, SemanticVersion right); public static bool operator !=(Version left, SemanticVersion right); public static bool operator <(Version left, SemanticVersion right); public static bool operator <=(Version left, SemanticVersion right); public static bool operator >(Version left, SemanticVersion right); public static bool operator >=(Version left, SemanticVersion right); public static explicit operator SemanticVersion(Version version); public static bool operator ==(SemanticVersion left, Version right); public static bool operator !=(SemanticVersion left, Version right); public static bool operator <(SemanticVersion left, Version right); public static bool operator <=(SemanticVersion left, Version right); public static bool operator >(SemanticVersion left, Version right); public static bool operator >=(SemanticVersion left, Version right); } } ```" +13527 area-System.Net Make HttpClient on Unix treat SslProtocols.None as meaning system defaults Per discussion at https://github.com/dotnet/corefx/pull/13075#discussion_r85246226. Prior to this change, specifying SslProtocols.None for HttpClientHandler.SslProtocols meant that the default hardcoded into System.Net.Http should be used. This changes it to mean the underlying system's default, i.e. that of libcurl and OpenSSL on Unix. cc: @bartonjs, @cipop, @davidsh +13529 area-System.IO Improve File.Replace implementation on Unix Bring the behavior closer to the Windows implementation. cc: @ianhays, @JeremyKuhne, @binki Fixes https://github.com/dotnet/corefx/issues/10583 +13530 area-System.Linq Filling out missing members of System.Linq.Expressions namespace Fixes #13483 #13332 Filling out missing members of System.Linq.Expressions namespace. +13531 area-Infrastructure Updating CoreFx dependencies to stable +13533 area-Infrastructure Update buildtools to 1.0.27-prerelease-01010-02 "This includes a change that lets us auto-detect a default test runtime. This means that when you build on platforms outside of windows, you no longer need to pass `/p:testnugetruntimeid=`. The value will be automatically detected based on the runtime of your build tools. * Removed the default values for `TestNugetRuntimeId` from dir.props * Use ""System.Net.Mail"" in the test-runtime project, rather than the old name ""System.Net.Mime"". * Remove the explicit project.json from the System.Net.Mail functional tests. The latter two changes were needed to avoid a break in the System.Net.Mail test project." +13534 area-System.ComponentModel Matching AsyncCompletedEvent.RaiseExceptionIfNecessary with Full Framework Fixes #13482 Fixes #13418 cc @danmosemsft @joperezr @weshaggard @stephentoub +13535 area-Meta Add an API to determine whether the current environment supports JIT vs is native There is no way to determine whether the current environment is a JIT one or a .NET Native one. Please add a way to discover this information at runtime so libraries and applications can enable or disable using features like IL emit which required a JIT environment. // cc @terrajobst +13536 area-Serialization Made test verify CreateMtomReaderWriter throw PNSE. Fix #12840. /cc: @huanwu @zhenlan +13538 area-System.Runtime Memory statistics and portable interop. Is there a way to get free memory statistics? I am interested in getting for example free pages available to know if my app should cache more things in memory or not. Up until now, with mono I did detect the OS info and based on that I did custom inter op for each supported system. This had the nice property that I need to release only one binary and only one tool chain to maintain. For not the only solution I see in .NetCore's current state, is to write a custom library in C with a version for each type of supported OS and than make a custom build for each OS. I feel this is a common problem that will be duplicated many times. And having the option to have a c# library that adapts to the os is a nice solution for simple problems as it does not require to set up a compile chain for each supported OS. So incorporating that mechanism in the CLR would be nice. +13539 area-System.Net Test failure: System.Net.Sockets.Tests.Shutdown/Shutdown_TCP_CLOSED_Success Opened on behalf of @jiangzeng The test `System.Net.Sockets.Tests.Shutdown/Shutdown_TCP_CLOSED_Success` has failed. System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host Stack Trace: at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.Socket.Receive(Byte[] buffer) at System.Net.Sockets.Tests.Shutdown.Shutdown_TCP_CLOSED_Success() Build : Master - 20161109.02 (Core Tests) Failing configurations: - Windows.81.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161109.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.Shutdown~2FShutdown_TCP_CLOSED_Success +13540 area-System.Linq Code improvements in System.Linq.Queryable Some cutting out paths or otherwise giving a practical improvement, some just style. **Improvements first**: Remove method calls where value is unused. Remove explicit array on params calls. In most cases this results in picking a lighter overload. Remove unnecessary volatility. If racing threads compete on reading or writing s_seqMethods the result either way is they use a valid lookup correctly. Avoid the cost of volatile reads subsequently. Make init-only fields readonly and static-only class static. Null-propagate. Cache enumerable likely to be enumerated twice in a list. **More stylistic than impacting**: Remove redundant this. Remove redundant class name on static. Name type parameter according to convention (and interface implemented) Remove redundant cast. Simple properties to expression bodies. Remove redundant interface supertypes Remove redundant name in anonymous. +13541 area-System.Linq RuntimeOps.Expando* methods missing? "We have code like this: ```csharp typeof(RuntimeOps).GetMethod(""ExpandoTryDeleteValue"") ``` in `ExpandoObject.cs` in `System.Linq.Expressions`, but these methods do not exist." +13543 area-Infrastructure [ARM/CI] Fix arm32_ci_script.sh for hardfp Related Issue: #12545 +13544 area-System.Data Strongly-typed database schema API that doesn't rely on DataTable The current API to expose database schema is `DbConnection.GetSchema()`. This has some disadvantages: * Reliance on DataTable * A weakly-typed API. Aside from being less usable, this promotes less uniformity across providers as different weakly-typed properties can be populated. A modern, strongly-typed *resultset* schema API has already been added - `DbDataReader.GetColumnSchema()` effectively replaces `DbDataReader.GetSchema()` which suffers from the same shortcomings as `DbConnection.GetSchema()`. See #5024 for previous discussion. +13549 area-System.Security Add more DSA tests * Adds static verify tests for the two smallest FIPS 186-2 keysizes (512, 576). * Adds KeySize verification tests for 512, 576, 1024, and 2048-bit keys. cc: @steveharter +13550 area-Meta Failed to cross build for ARM32 Problem updated to https://github.com/dotnet/corefx/issues/13550#issuecomment-261781800 ## OLD problem (solved) Successfully built coreclr. Failed with corefx. Specific problem with : info : OK https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/system.threading.tasks.parallel/index.json 393ms info : GET https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/system.threading.tasks.parallel/4.0.1-rc3-24128-00/system.threading.tasks.parallel.4.0.1-rc3-24128-00.nup kg info : An error was encountered when fetching 'GET https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-buildtools/nuget/v3/flatcontainer/system.runtime/index.json'. The request will now be retried. info : An error occurred while sending the request. info : SSL connect error log : Retrying 'FindPackagesByIdAsync' for source 'https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-buildtools/nuget/v3/flatcontainer/system.threading.threadpool/index.json'. log : An error occurred while sending the request. log : SSL connect error info : GET https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-buildtools/nuget/v3/flatcontainer/system.threading.threadpool/index.json error: Failed to retrieve information from remote source 'https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/system.threading/index.json'. error: An error occurred while sending the request. error: SSL connect error error: Failed to retrieve information from remote source 'https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/system.threading/index.json'. error: An error occurred while sending the request. error: SSL connect error log : Retrying 'FindPackagesByIdAsync' for source 'https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-buildtools/nuget/v3/flatcontainer/system.reflection.extensions/index.json'. log : An error occurred while sending the request. log : SSL connect error info : GET https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-buildtools/nuget/v3/flatcontainer/system.reflection.extensions/index.json On ubuntu 16.04 x64. cross build for arm32. +13551 area-System.Net HttpClient slow performance on windows and linux "Hi guys, I've noticed that httpclient is performing very slow in dotnet core comparing to golang for example. For tests I've used VM with 16 virtual cores, and 24Gb of ram based on Intel Xeon E312 2.6Mgz Tried windows server 2012 and centos 7.2 Code is super simple (you may find it in attached file). And my test was made via ""wrk -c 256 -t 32 http://:5000/ --latency"" Results are very upset. On this powerful VM dotnet core httpclient performance was about 16 000 reqs/sec on windows and 12 000 reqs/sec on linux. At the same time solution based on ""golang"" (check attacked file) shows results like 44 000 reqs/sec Could you please advice what could be wrong with donet core based solution ? Thank you [goproxy.zip](https://github.com/dotnet/corefx/files/583402/goproxy.zip) [Program.zip](https://github.com/dotnet/corefx/files/583403/Program.zip) " +13552 area-System.Linq Misc. minor code improvements to System.Linq.Expressions * Removing unwarranted uses of `var` * Removing unnecessary namespace qualifications in type names * Removing some more unused usings * Fixing some comments CC @stephentoub +13553 area-Meta Use safe arithmetic for memory allocation in Unix shims There are a handful of places in the corefx shims where we use malloc with the result of some arithmetic operation. This PR fixes those to ensure we're not overflowing. Where I could, I simply switched to using new to allocate an array, letting the compiler handle any overflows. For the rest of the cases, I added two helpers, multiply_s and add_s, that are used to do the operations safely. Where possible, these are implemented using __builtin_mul_overflow and __builtin_add_overflow. For when we're using too old a version of clang/gcc to have those, I've copied over coreclr's ClrSafeInt (with minimal changes to get it to compile, e.g. using static_cast instead of C-style casts) and use that... I kept the original copy and the changes to the copy in separate commits to make it easy to see the diff from coreclr. cc: @jkotas, @bartonjs Fixes https://github.com/dotnet/corefx/issues/13385 +13554 area-System.Linq System dynamic tests Starting the ball rolling on this section of the code. Tests for the default behavior of DynamicObject before overridden. Tests for BindingRestrictions. +13555 area-System.Reflection Missing stragglers from System.Reflection These are still missing from System.Reflection ``` public sealed class AssemblyName : ICloneable, IDeserializationCallback, ISerializable { public string EscapedCodeBase { get; } } public abstract class MethodBase : MemberInfo { public virtual bool IsSecuritySafeCritical { get; } } public abstract class Module : ICustomAttributeProvider, ISerializable { public virtual X509Certificate GetSignerCertificate(); } public class StrongNameKeyPair : IDeserializationCallback, ISerializable { public StrongNameKeyPair(FileStream keyPairFile); } ``` +13556 area-System.Runtime Environment is missing SystemDirectory It seems to be in the implementation so it just needs exposing ``` public static class Environment { public static string SystemDirectory { get; } } ``` +13558 area-System.Security ServiceNameCollection does not impl ReadOnlyCollectionBase ``` public class ServiceNameCollection : ReadOnlyCollectionBaseICollection, IEnumerable { } ``` +13559 area-System.Security Missing ExtendedProtectionPolicyTypeConverter ExtendedProtectionPolicyTypeConverter is missing. ``` public class ExtendedProtectionPolicyTypeConverter : TypeConverter { public ExtendedProtectionPolicyTypeConverter(); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType); public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType); } ``` +13560 area-System.Diagnostics Implement HandleCount on Unix systems HandleCount is implemented on Linux by doing an on-demand enumeration of /proc/pid/fd. On OSX it is done by enumerating /dev/fd which is equivalent to /proc/self/fd. The HandleCount test is also enabled for all platforms. I went back and forth on whether to add caching to the directory enumeration. Adding it would more closely mirror the Windows behavior, but since we're getting the HandleCount on-demand anyways I'm not certain it's worthwhile. resolves https://github.com/dotnet/corefx/issues/12793 @stephentoub +13561 area-System.Linq Use cached reflection for Queryable methods Generated `CachedReflectionInfo` to cache `MethodInfo` objects representing `Queryable` methods for use by these methods to construct expression trees. Prior to .NET Core, the construction of expression trees was using `MethodBase.GetCurrentMethod` to obtain the open generic method representing the containing method whose call's expression representation was being built. At some point, `GetCurrentMethod` was substituted for an `infoof` based approach using an expression tree to obtain the `MethodInfo` (see removed code in this PR). This causes allocation of an expression tree (with a ton of runtime checks) for every call to a `Queryable` method only to get the `MethodInfo` instance to use in the resulting expression tree. All we really need is a `ldftn` instruction. This PR replaces this approach by introducing a `CachedReflectionInfo` class containing static properties and methods to obtain (closed generic) `MethodInfo` instances for the `Queryable` methods. The (open generic) `MethodInfo` instances are cached in static fields. This is very similar to the technique we use in `System.Linq.Expressions` to cache reflection objects. The means to obtain the `MethodInfo` is using a method group conversion to a `Delegate` and a call to `GetMethodInfo` (instead of being expression based). The `CachedReflectionInfo` type was generated using a T4 template. We could check that in if we want, but we don't have an precedent for doing that AFAIK. CC @JonHanna, @stephentoub +13562 area-System.Memory Portable (and thus slower) version of Span<> - Holding off on ReadOnlySpan<> until we're happy with Span so I don't have keep making fixes in two places. - Not too happy with the hoops DangerousGetPinnedReference has to go through: we are looking at an alternative that involves adding two new Unsafe apis: https://github.com/dotnet/corefx/issues/13426 I'll have to do some benchmarking to see which one's faster, though. In the meantime, there's plenty to review that won't be affected by that. +13563 area-System.IO Add Replace methods to System.IO.FileInfo Fixes #13490 cc @danmosemsft @joperezr @stephentoub +13564 area-Meta Fix warnings Fixes warnings and removes a few ToDos. @stephentoub @JeremyKuhne @weshaggard +13565 area-Infrastructure Add facades This adds the building of netstandard.dll facade as well as the net461 set of shim facades along with some APICompat checks. To accomplish this we are dependent on a flat layout that we can use for seeds so we are going to use the layout that we currently produce for indexing. The APICompat check is split between net461 and netstandard20 which will allow us to more easily track the remaining work for netstandard20. This PR also cleans up the older compat refs and src projects that we aren't going to use any longer. cc @ericstj @joperezr +13566 area-System.Runtime System.Runtime.InteropServices.RuntimeInformation fails when running on full .NET on Win7 The library PInvokes into an api-set which isn't present on Win7 and so when running on .NET Framework there it throws the following exception. ``` Unhandled Exception: System.TypeInitializationException: The type initializer fo r 'Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants' threw an exception . ---> System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-sysinfo- l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0 x8007007E) at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo) at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture() at Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities.XmlRunSettingsUt ilities.get_OSArchitecture() at Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants..cctor() --- End of inner exception stack trace --- at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities.RunSe ttingsUtilities.GetEffectiveRunSettings(String runSettings, CommandLineOptions c ommandLineOptions) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities.RunSe ttingsUtilities.GetRunSettings(IRunSettingsProvider runSettingsProvider, Command LineOptions commandlineOptions) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.RunTestsArgumen tExecutor.RunTests(IEnumerable`1 sources) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.RunTestsArgumen tExecutor.Execute() at Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.ExecuteArgumentPr ocessor(IArgumentProcessor processor, Int32& exitCode) at Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.Execute(String[] args) at Microsoft.VisualStudio.TestPlatform.CommandLine.Program.Main(String[] args ) ``` To workaround people can deploy api-ms-win-core-sysinfo- l1-2-0.dll with their application similar to https://github.com/dotnet/corefx/issues/8091#issuecomment-225641743. My expectation is that this should no longer be an issue once @JohnChen0 finishes his work to move us off api-sets. +13567 area-System.Net Add baseclass to ServiceNameCollection Fixes https://github.com/dotnet/corefx/issues/13558 @stephentoub @joperezr +13568 area-System.Numerics System.Numerics.BigInteger causes StackOverflowException ![Screenshot](http://archive.org/download/Fsharp-StackOverflowException/fsi.png) The F# code first defines a custom power function, then tetration function based on it and then two operators so I don't have to type 'I' next to every number I want to work with and hide the superfluous BigInteger members from the console. It worked fine for 3rd tetration of 4 [4 ^ (4 ^ 4) = 4 ^ 256] and returned over 150 digits, but something went wrong on calculating the **5th tetration of 2**, which **is supposed to be almost 20,000 digits**, btw; the program crashes before bigint value gets close to what float can handle (~310 digits), let alone 20,000 digits. What am I missing? ``` let rec exponentiation (x:bigint) (y:bigint) : bigint = match y with | y when y.IsZero -> 1I | y when y.IsOne -> x | y -> x * exponentiation x (y-1I) let rec tetration (x:bigint) (y:bigint) : bigint = match y with | y when y.IsZero -> 1I | y when y.IsOne -> x | y -> exponentiation x (tetration x (y-1I)) let (^) (x:int) (y:int) = System.Console.WriteLine (exponentiation (bigint x) (bigint y)) let (^^) (x:int) (y:int) = System.Console.WriteLine (tetration (bigint x) (bigint y)) ``` I've been dabbling with F# lately, it's the only programming language I am familiar with. I know an unhelpful smattering of JavaScript, and remember a couple of keywords from C# that I tried years ago for a few days on Unity (yeah, absolutely no .NET knowledge) * Windows 10 for Education x64 * .NET Framework 4.5.1 * Visual F# 4.0 * Visual Studio Code 1.7 with Ionide suite of extensions +13569 area-System.Threading Build System.Threading.Thread package for uap101aot target. "@kouvel @SedarG Enable building the System.Threading.Thread package for uap101aot target. Put APIs currently missing in ProjectN under ""#if !NETNATIVE"". This change needs to pick up a new System.Private.Corelib build tomorrow. " +13570 area-System.Net Move the WebSockets implementation from HttpListener to System.Net.WebSockets To allow usage of the implementation in other contracts we would also need to expose a public API similar to: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ManagedWebSocket.cs#L37-L41 +13571 area-System.Linq Reintroduce the use of MethodBase.GetCurrentMethod in Queryable For constructing expression trees. +13572 area-Meta Disabling some Numerics and Math tests when running in x86 cc: @stephentoub @danmosemsft @weshaggard Progress towards #13448 I ran a local test run using x86 as the build architecture and some Numerics and Math tests fail(which is expected). With this PR I'm disabling them for x86 runs so that we can have a green x86 run which I'll soon add to the pipebuilds and probably a CI as well. +13573 area-System.Security Use Apple SecurityTransforms for RSA, DSA, and ECDSA on macOS. With this change the System.Security.Cryptography.Algorithms library has no direct dependency on OpenSSL (it has an indirect one from OID lookup via the S.S.C.Encoding library). Observable changes: * The test library runs in ~1.7 seconds before this change, ~30 seconds (up to 48) after. * The tests complete in ~1.2 seconds when all key generation is disabled. * ~21 seconds with ECDSA enabled (26 tests), RSA disabled * ~10 seconds with RSA enabled (13 tests), ECDSA disabled * Ephemeral key generation populates the keychain, this is not desired, so has been disabled pending a workaround. * DSA key generation is not possible via Apple's libraries. * DSA is limited to FIPS 186-2 behaviors, a loss of functionality. * ECDSA only supports the 3 main NIST curves (256, 384, 521). * ECDSA explicit import/export is no longer possible. cc: @steveharter @stephentoub +13574 area-System.Net Skip Loopback while enumerating Host Entry Ubunut-like system may have loopback ip in /etc/hosts, which leads to test failure discussed at #13464. This commit exclude loopback entry for ``System.Net.Tests.WebProxyTest.BypassOnLocal_MatchesExpected`` in order to fix #13464. +13575 area-System.Linq Consistently using extension method syntax for Type extensions in System.Linq.Expressions We've been rather inconsistent in the use of static method versus extension method invocation syntax when using methods on `TypeUtils` (unlike those on `TypeExtensions` which we always call as extension methods). Especially after the merge with the `System.Dynamic.Runtime` code it seems we can reconcile some of these extension methods and do away with this artificial split across files. As a first step, I'm removing a lot of `TypeUtils.*` static method invocation syntax in favor of extension method invocation syntax. Besides improving readability of the code in various places, it also allows us to move these extension methods to more appropriate places down the line. Note: Besides a few cosmetic changes that caught my eye, most of these changes were done using a Roslyn code fix provider. CC @stephentoub +13576 area-System.Runtime Add Environment.SystemDirectory Fixes #13556 +13578 area-System.Linq Reducing copying of variables collection passed to Block factories We're calling the `Block` factory method taking an `IEnumerable` in various places with an array whose ownership can be transferred. The `Block` factory uses `ToReadOnly` though, causing a copy of the array to be made. This PR allocates `TrueReadOnlyCollection` to pass the variables collections and thus avoid a copy being made by `ToReadOnly`. CC @stephentoub +13580 area-System.Linq Remove unused resource strings from PLINQ The strings are unlikely to be used at all. There's a couple more strings out there (see #11504 ), but their status is unclear. +13581 area-Infrastructure [WIP] [ARM/CI] Test This PR is only for ARM-CI test, I'll close this when the test is done. +13582 area-Infrastructure [ARM/CI] Enable arm prtests which can be run manually. These PRtests would not run automatically. +13583 area-System.Drawing Please add System.Drawing.StringAlignment to System.Drawing.Primitives Using this for alignment of objects inside a rectangle. -Thomas +13586 area-System.Threading Single Worker thread, single I/O thread Hey guys, I have been working on a project that involves async/await a lot. And with the multiple worker threads and I/O thread, the order at which operations happen are pretty much mangled together, and things just go wrong all the time. Because of this too, it's really hard to debug what's happening. I'm looking for a way to **limit both the Worker and I/O threads** to both be just 1. I need this, because it's easier this way to maintain the application, easier to reason about and debug, and save a number of threads along the way. Admittedly, I reasoned wrong with the .Net Core's async/await, which is mostly always single-threaded in other languages; so, I assumed it would also be single-threaded on .Net, but I guess I assumed completely wrong, my bad. But it's been a bad surprise for me to realize that worker threads are used by C# to make async/await happen. Now, unless things are not causing races, the project is useless now. Please suggest what do I do to make it single-threaded. Thanks +13589 area-System.Net HttpClient allocates a lot of objects "This simple console app makes 1000 calls to GetStringAsync to download the page at http://httpbin.org: ```C# using System; using System.Linq; using System.Net.Http; using System.Threading.Tasks; class Program { static void Main(string[] args) { var httpClient = new HttpClient(); Task.WaitAll(Enumerable.Range(0, 1000).Select(_ => httpClient.GetStringAsync(""http://httpbin.org"")).ToArray()); } } ``` This chart shows the allocations for those 1000 iterations (so divide each number by 1000 to see the appx allocations per iteration): |Type|Allocations|Bytes| |---|---|---| |System.String|18690|25369814| |System.Threading.Tasks.Task`1|15455|1112760| |System.Threading.Tasks.TaskCompletionSource`1|11452|274848| |System.Net.Http.Headers.HttpHeaders.HeaderStoreItemInfo|7000|336000| |System.Threading.CancellationCallbackInfo|6226|298848| |System.Threading.Tasks.AwaitTaskContinuation|5222|208880| |System.Char[]|5012|1060510| |System.Action|5001|320064| |System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner|5001|120024| |System.Action`1|4236|271104| |System.Threading.Tasks.ContinuationTaskFromResultTask`1|4226|304272| |System.Net.Http.WinHttpResponseStream.<>c__DisplayClass17_0|4226|202848| |System.Threading.Tasks.StandardTaskContinuation|4226|169040| |System.Int32[]|3045|129036| |System.Collections.Generic.Dictionary`2.Entry[]|3014|388320| |System.Threading.CancellationCallbackInfo[]|2595|153224| |System.Threading.SparselyPopulatedArrayFragment`1|2595|124560| |System.Threading.SparselyPopulatedArray`1|2588|82816| |System.Collections.Generic.Dictionary`2|2010|160800| |System.Collections.Generic.List`1|2004|80160| |System.Text.StringBuilder|2003|96144| |Interop.WinHttp.SafeWinHttpHandle|2001|80040| |System.Net.Http.Headers.HttpGeneralHeaders|2000|176000| |System.Byte[]|1250|12180575| |System.String[]|1023|57880| |System.Object|1016|24384| |System.Func`1|1008|64512| |System.Threading.SparselyPopulatedArray`1[]|1001|56056| |System.Net.Http.Headers.NameValueHeaderValue[]|1001|56024| |System.Net.Http.WinHttpRequestState|1000|240000| |System.Net.Http.WinHttpHandler.d__105|1000|168000| |System.Net.Http.StreamToStreamCopy.d__2|1000|152000| |System.Net.Http.Headers.HttpRequestHeaders|1000|128000| |System.Net.Http.HttpClient.d__58|1000|120000| |System.Net.Http.Headers.HttpHeaders.d__20|1000|96000| |System.Threading.TimerQueueTimer|1000|88000| |System.Net.Http.Headers.HttpResponseHeaders|1000|88000| |System.Net.Http.HttpContent.d__48|1000|88000| |System.Net.Http.HttpClient.d__32`1|1000|80000| |System.Net.Http.StreamContent|1000|80000| |System.Net.Http.Headers.HttpContentHeaders|1000|80000| |System.Net.Http.HttpContent.LimitMemoryStream|1000|72000| |System.Uri.UriInfo|1000|72000| |System.Uri|1000|72000| |System.Threading.CancellationTokenSource.LinkedCancellationTokenSource|1000|72000| |System.Net.Http.HttpRequestMessage|1000|72000| |System.Net.Http.HttpResponseMessage|1000|64000| |System.Threading.Tasks.Task|1000|64000| |System.Net.Http.WinHttpResponseStream|1000|56000| |System.Net.Http.Headers.HttpHeaderValueCollection`1|1000|48000| |System.Threading.CancellationTokenRegistration[]|1000|48000| |System.Net.Http.Headers.ObjectCollection`1|1000|40000| |System.Net.Http.Headers.MediaTypeHeaderValue|1000|32000| |System.Net.Http.Headers.NameValueHeaderValue|1000|32000| |System.Net.Http.WinHttpTransportContext|1000|24000| |System.Threading.Timer|1000|24000| |System.Threading.TimerHolder|1000|24000| |System.Int64|1000|24000| This is on Windows. Some of these allocations are the same across platforms, others are Windows-specific. Per iteration, that's ~155 allocations for ~46K of memory. The actual downloaded data is ~12K." +13592 area-Meta Add 32-bit version of tests that were disabled PR #13572 marked a few tests to be 64-bit only, given that the assumptions they make were only meant for 64-bit runs. This workitem is to track the addition of 32-bit version of those tests. +13594 area-System.IO Expose missing NamedPipeClientStream methods Exposes the protected override of CheckPipePropertyOperations as well as the HandleInheritability constructor. Adds a basic argument test for the latter. resolves https://github.com/dotnet/corefx/issues/13337 @joperezr @AlexGhiondea @alexperovich FYI @JeremyKuhne I am removing the p2p references you added in Pipes when you moved IO down to Runtime. +13595 area-System.Linq Adding back RuntimeOps for ExpandoObject This addresses issue #13541. Missing methods were detected during `nameof` conversion of strings passed to `GetMethod`. My guess is the code was dropped because it was in a `partial` class in a different assembly. However, it left a bunch of `GetMethod` calls returning `null`. There's definitely a test gap in `ExpandoObject` because we didn't catch this. I'll open a separate issue for that. Note that these methods were already in `ref` files under `src/System.Core/ref/Compat/System.Core.cs`. Also note that the method is marked as `Obsolete` with `error` set to `true`. This is the same for all runtime helper methods to avoid users from calling them directly (so their apparent obsolete status shouldn't have been a reason to drop them). CC @stephentoub, @joperezr +13597 area-System.Linq Use GetCurrentMethod in Queryable "Building on the move to `netstandard1.7` in https://github.com/dotnet/corefx/pull/13591, superseding the ""infoof"" approach in https://github.com/dotnet/corefx/pull/13561. CC @stephentoub, @JonHanna" +13598 area-Infrastructure Running `sync -p` on a clean machine installs DNVM & adds it to PATH? I accidentally corrupted my laptop two days ago, and was forced to do a clean install of Windows and re-clone corefx. When I ran `sync -p` for the first time on a fresh clone of the repo, here is the output I got: ```cmd C:\Users\james\Code\git\corefx>sync -p Installing .NET Version Manager to C:\Users\james\.dnx\bin Creating destination folder 'C:\Users\james\.dnx\bin' ... Installing 'dnvm.ps1' to 'C:\Users\james\.dnx\bin' ... Installing 'dnvm.cmd' to 'C:\Users\james\.dnx\bin' ... Adding C:\Users\james\.dnx\bin to Process PATH Adding C:\Users\james\.dnx\bin to User PATH Adding C:\Users\james\.dnx to Process DNX_HOME Adding C:\Users\james\.dnx to User DNX_HOME Installing dotnet cli... Restoring BuildTools version 1.0.27-prerelease-01002-02... Initializing BuildTools... ``` And indeed, when I check my home directory there appears to be a newly created `.dnx` directory, which contains dnvm under a subfolder: http://imgur.com/a/LrmZt Since dnx was ditched after RC1, it looks like this should no longer be done? Why don't we skip straight to installing the dotnet cli? +13599 area-Infrastructure windows.winmd is lower-case in our Microsoft.TargetingPack.Private.WinRT package "Related: #8899 ApiCompat is unable to resolve references to the ""Windows"" assembly, because the binary in our targeting pack is lower-case. Since we created this targeting pack, we could just rename the file in it and publish a new version. In the meantime, I'm going to disable ApiCompat on the projects affected." +13601 area-Infrastructure Strong name validation is failing for certain analyzer assemblies with a fresh build. I re-cloned corefx on a clean install of Windows, ran `sync -p`, and then ran `msbuild /t:RebuildAndTest` for the System.Linq tests. That resulted in an error message from MSBuild saying that csc couldn't verify certain analyzer assemblies: [here](https://gist.github.com/jamesqo/f07b669ee436367c46baa594760a0c67) is the log. The output when I also pass in `/v:detailed` can be found [here](https://gist.github.com/jamesqo/cc6dc7bbe105818ffafb95aaa025fa96). +13604 area-System.ComponentModel Validate_ConversionOverflows_ThrowsOverflowException fails on cs-CZ culture "When running the tests for `System.ComponentModel.Annotations` on a machine with the cs-CZ culture (which uses `,` as the decimal separator), the `Validate_ConversionOverflows_ThrowsOverflowException` test fails: ``` System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_ConversionOverflows_ThrowsOverflowExcepti on(type: typeof(double), minimum: \""1.0\"", maximum: \""2.0\"", value: \""2E+308\"") [FAIL] Assert.Throws() Failure Expected: typeof(System.OverflowException) Actual: typeof(System.FormatException): Input string was not in a correct format. Stack Trace: at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) at System.String.System.IConvertible.ToDouble(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) Finished: System.ComponentModel.Annotations.Tests E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Ra ngeAttribute.cs(202,0): at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Ra ngeAttribute.cs(205,0): at System.ComponentModel.DataAnnotations.RangeAttribute.SetupConversion() E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Ra ngeAttribute.cs(99,0): at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Va lidationAttribute.cs(389,0): at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, Valid ationContext validationContext) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Va lidationAttribute.cs(433,0): at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Va lidationAttribute.cs(503,0): at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, Vali dationContext validationContext) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\tests\RangeAttributeTests.cs(177,0): at Syst em.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.<>c__DisplayClass9_0.b__0() System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_ConversionOverflows_ThrowsOverflowExcepti on(type: typeof(double), minimum: \""1.0\"", maximum: \""2.0\"", value: \""-2E+308\"") [FAIL] Assert.Throws() Failure Expected: typeof(System.OverflowException) Actual: typeof(System.FormatException): Input string was not in a correct format. Stack Trace: at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) at System.String.System.IConvertible.ToDouble(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Ra ngeAttribute.cs(202,0): at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Ra ngeAttribute.cs(205,0): at System.ComponentModel.DataAnnotations.RangeAttribute.SetupConversion() E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Ra ngeAttribute.cs(99,0): at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Va lidationAttribute.cs(389,0): at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, Valid ationContext validationContext) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Va lidationAttribute.cs(433,0): at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\Va lidationAttribute.cs(503,0): at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, Vali dationContext validationContext) E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\tests\RangeAttributeTests.cs(177,0): at Syst em.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.<>c__DisplayClass9_0.b__0() === TEST EXECUTION SUMMARY === E:\Users\Svick\git\corefx\Tools\tests.targets(243,5): warning : System.ComponentModel.Annotations.Tests Total: 455, Errors: 0, Failed: 2, Skipped: 0, Time: 1,357s [E:\Users\Svick\git\corefx\src\System.ComponentModel.Annotations\tests\ System.ComponentModel.Annotations.Tests.csproj] Finished running tests. End time=23:26:52,61, Exit code = 1 ```" +13606 area-Serialization "Support ""duration"" in XmlSerializer" Updated by @karelz (info from @shmao): The change needs to be ported from full .NET Framework (the bug fix there is in progress now). .NET Core change needs to address compat between Timespan and duration (might be tricky). +13607 area-System.Net HttpListener contract requires access to internal APIs from Cookie. ```c# public sealed class Cookie { internal string ToServerString() { } internal CookieVariant Variant { get; } } ``` The code is using reflection to get to these values short time, we need alternate solution. +13608 area-System.Security Add missing Clear() to some Crypto primitives Fixes https://github.com/dotnet/corefx/issues/11132 @steveharter +13610 area-System.Net Reconsider port to core approach for System.Net.HttpListener See discussion below at: System.Net.HttpListener #13502 +13612 area-System.Security Add ProduceLegacyHmacValues Fix https://github.com/dotnet/corefx/issues/12364 @steveharter @bartonjs +13613 area-System.Net DNS client and custom DNS queries Hi, I was looking for this for some time now and it seems either the feature is hiding pretty well or is missing. System.Net has basic name resolution and network information now. But what about a DNS client which can query any kind of DNS server? I'm currently trying to implement services with the new aspnet core stack. One common scenario with Microservices is service discovery. And one common solution for this is to use DNS. An example would be to query the consul DNS endpoint for service discovery. And this is not really easily doable today. There are certain implementations available for the .NET world, but those are pretty basic and mostly not maintained repositories and/or they are not supporting netstandart. Are there any plans to add something like that? Or, if I'm just missing something, any hint? Thanks a lot! +13614 area-System.Security Add missing RSA members Fixes https://github.com/dotnet/corefx/issues/12366 @bartonjs @steveharter +13618 area-System.Net Add more test coverage for System.Net.HttpListener. +13619 area-Infrastructure Full framework test csproj referencing netstandard csproj using HttpClient fails at runtime I have a net461 test project that uses a netstandard 1.3 csproj. The netstandard project uses HttpClient. When I run the tests, some with HTTP gets and some with HTTPS, they fail with this: ``` System.IO.FileLoadException : Could not load file or assembly 'System.Security.Cryptography.X509Certificates, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) ``` What can I do about this? There are no warnings or other hints to point me in any direction, and Google searches have left me more confused than ever. Windows 10 x64 AU Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01586 Microsoft .NET Core Tools (Preview 2) 14.1.20907.0 Don't know if this matters, dotnet: Version : 1.0.1 Build : cee57bf6c981237d80aa1631cfe83cb9ba329f12 +13622 area-System.Net Creating a Uri also allocates a string and a char[] "Constructing a Uri has a couple of allocations should that should be easily avoidable, at least in common cases. Here's a profile of an app that just does this a thousand times: ```new Uri(""http://test.com"")```: ![image](https://cloud.githubusercontent.com/assets/2642209/20239952/96b6b7bc-a8da-11e6-8b98-45fed7685072.png) As can be seen, in addition to the 1000 Uri allocations, there are also 1000 string allocations and 1000 char[] allocations. The string allocations are coming from https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Private.Uri/src/System/Uri.cs#L3933 , where a string is being allocated purely to look up the value in a dictionary. We should be able to avoid that for common schemes by just comparing the data for common schemes (e.g. http, https, ws, wss, etc.) and getting the syntax object directly. In fact, it looks like this may already be done on 32-bit, just not on 64-bit: https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Private.Uri/src/System/Uri.cs#L3639 . The char allocations are coming from https://github.com/dotnet/corefx/blob/2117bae3a6c9736033e6d1659821ff3a1069920b/src/System.Private.Uri/src/System/UriExt.cs#L195 , where the CheckForUnicode function is allocating a char array (at least one) in which to unescape the string data, then check to see if any of the characters are out of ASCII range. There are various ways this allocation could be avoided, e.g. at the expense of a pass through the string, checking to see whether anything needs unescaping, and only falling through to the allocation and the rest of the method if it does." +13624 area-System.Reflection HandleCollections should have an indexer I have a use case where I need to index into methods and fields on a `TypeDefinition`. `FieldDefinitionHandleCollection` and `MethodDefinitionHandleCollection` don't have an indexer, so the only option seems to be to get an enumerator and call `GetNext()` method *N* times to get *N*th member. `GenericParameterHandleCollection` or `GenericParameterConstraintHandleCollection` already have an indexer. This seems like an API inconsistency. Unless there's a particular reason why the other `HandleCollections` can't have it, the indexer should be added to all of them. We can make them implement `IReadOnlyList` while we're at it too. +13625 area-System.Collections Performance improvements in System.Collections.Generic.Dictionary Use local variable with size/length of buckets array in cleaning. I wrote simple test for for when i use local variable vs length with BenchmarkDotNet. Local variable is about 30-50% faster. This optimization is applying in Initialize and Resize. In this method is size already in local variable. It should be applying in Clear but here it must first assign to local variable and it's add one extra variable on stack. Second optimization is applying in Insert method where i reduce one local variable via reusing. +13628 area-System.Linq Recognize Skip/Take chains on lazy sequences. I added a new `EnumerablePartition` class that lets us now recognize patterns like `Take.Skip`, or vice versa, for lazy sequences. We also remove a layer of indirection from some common operations following these methods, e.g. `Take.ToArray`, `Skip.ToArray`, etc. Perf results can be found [here](https://gist.github.com/jamesqo/07eb6b38d69431d7270900e3a7519c32); test code [here](https://github.com/jamesqo/Dotnet/blob/502e3c302575d04824e7337bec4d635abc8dc548/Program.cs). There is a ~20% speedup that results from removing an indirection layer from the chain. cc @JonHanna, @VSadov, @stephentoub +13629 area-System.Linq BindingRestrictions Performance Improvements Replace set contains-and-add with add-and-check-result. Get already-contained expression instead of creating another. Null-propagate. Hash starting points that will affect more bits. Calculated restriction merging only when starting with merged restriction, allow others to pass expression immediately. In merging restrictions, don't push into stack only to immediately pop again. The code affected by this is covered in the tests in #13554 so will be safer to include after those. cc @stephentoub @bartdesmet +13630 area-System.Linq ExpandoObject key and value collections are too agressive with version checking. "Consider: ```C# IDictionary dict = new Dictionary(); var keys = dict.Keys; dict[""x""] = 1; Console.WriteLine(keys.Contains(""x"")); // True string[] array = new string[1]; keys.CopyTo(array, 0); // array now {""x""} Console.WriteLine(keys.Count); // 1 ``` However if `dict` is set to `= new ExpandoObject();` then the three commented lines error. The collection versioning used to throw on continuing an enumeration after modification is blocking these calls too. The same is also true of the `Values` collection." +13631 area-System.Net Reduce allocations in HttpClient "Weekend project... This PR significantly reduces the number and size of allocations in HttpClient. Some of the changes are in HttpClient itself, and thus apply to any handler/platform, while some are specific to the Windows implementation. Analysis of the following program was used to drive the changes. It simply downloads the contents of httpbin.org, dumping it to a null stream, 1000 times: ```C# using System; using System.IO; using System.Linq; using System.Net.Http; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { var client = new HttpClient() { Timeout = Timeout.InfiniteTimeSpan }; var uri = new Uri(""http://httpbin.org""); Task.WaitAll(Enumerable.Range(0, 1000).Select(async _ => { using (Stream responseStream = await client.GetStreamAsync(uri)) { await responseStream.CopyToAsync(Stream.Null); } }).ToArray()); } } ``` Before these changes, these allocations show up (divide each line by 1000 to get the appx per iteration count): ![image](https://cloud.githubusercontent.com/assets/2642209/20248813/c3e13a5c-a9b9-11e6-987d-7ce6759811a5.png) That's ~127 allocations and ~8518 bytes per iteration. After these changes, these allocations show up: ![image](https://cloud.githubusercontent.com/assets/2642209/20248823/db254532-a9b9-11e6-9fc6-ad150bfb4cd0.png) That's ~60 allocations and ~4449 bytes per iteration. For this particular scenario then, this represents an ~50% reduction in both number and size of allocations. Other scenarios will benefit from many of these changes, but will also have their own additional allocations that can likely be reduced. I've kept the changes isolated in their own commits. The commit descriptions provide more details, but the main changes: - Added more headers to the HttpKnownHeaderNames table. Even for a basic site like httpbin.org, there were headers coming back that are commonly used but weren't in our table. The table now contains all of the response entries that kestrel has in its similar optimization as well as some additional headers listed as common response headers on wikipedia. - Significantly reduce the number of tasks and task completion sources used in WinHttpHandler. Every stage of its lifecycle was represented with its own TCS/Task. Instead, I added a common ""RendezvousAwaitable"", a reusable awaitable object that can be produced to via SetResult/SetException/SetCanceled just like TaskCompletionSource and can be awaited to consume the results, but which can be allocated once and reused any number of times (this is something I we may want to consider exposing publicly from the BCL at some point; it's quite handy and helpful). I then use that throughout WinHttpHandler, cutting back on the number of tasks used and on the size of the state object used to hold them. As part of this, I added a CopyToAsync implementation to WinHttpResponseStream; we can subsequently do something similar for the CurlResponseStream (that one should be easier, too, as libcurl is already a push-based model, which maps nicely to CopyToAsync). - Optimized common cases (often via lazy-initialization) where allocations were being done for empty cases, e.g. allocating an enumerator when there weren't any headers to enumerate, allocating cookie-related state when there weren't any cookies, allocating a TransportContext object even when it wouldn't be needed, etc. - Avoiding allocating a CancellationTokenSource per request when the user didn't provide a CancellationToken and when no timeout is set. This helps avoid not only the CTS allocation itself, but also the state within the CTS that's allocated on first use. - Removing unnecessary allocations, like a lock object used per state object, when the state object itself can be used for locking. - Using a buffer from ArrayPool to avoid allocating a new char[] to store all of the response headers - Avoiding the need for allocating a ReadOnlyStream to wrap the WinHttpResponseStream, which is already read-only. - Reducing the sizes of async state machines by being a bit more thoughtful about what locals will end up getting promoted to fields in the state machine. - Avoiding async state machine objects altogether for simple cases where a ContinueWith is sufficient and less expensive. Etc. Contributes to #13589 cc: @davidsh, @cipop, @geoffkizer, @benaadams" +13633 area-System.Linq Range check incorrectly located in ExpandoObject The sequence: ```C# ContractUtils.RequiresArrayRange(array, arrayIndex, _count, nameof(arrayIndex), nameof(ICollection>.Count)); // We want this to be atomic and not throw lock (LockObject) { ``` Means that potentially the range-check could pass, then a change which invalidates it take place before the lock is obtained. +13636 area-System.Net "Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_UnsupportedSSLVersion_Throws(name: \""SSLv3\"", url: \""https://www.ssllabs.com:10300/\"")" "Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_UnsupportedSSLVersion_Throws(name: \""SSLv3\"", url: \""https://www.ssllabs.com:10300/\"")` has failed. Assert.Throws() Failure Expected: typeof(System.Net.Http.HttpRequestException) Actual: (No exception was thrown) Stack Trace: --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161112.02 (Core Tests) Failing configurations: - Redhat.72.Amd64 - AnyCPU-Debug - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161112.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_UnsupportedSSLVersion_Throws(name:%20%5C%22SSLv3%5C%22,%20url:%20%5C%22https:~2F~2Fwww.ssllabs.com:10300~2F%5C%22)" +13637 area-System.Net Test failure: System.Net.Security.Tests.SslStreamSystemDefaultTest/SslStream_DefaultTlsConfigurationApm_Ok Opened on behalf of @jiangzeng The test `System.Net.Security.Tests.SslStreamSystemDefaultTest/SslStream_DefaultTlsConfigurationApm_Ok` has failed. System.Security.Authentication.AuthenticationException : The remote certificate is invalid according to the validation procedure. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.WriteCallback(IAsyncResult transportResult) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Security.Tests.SslStreamSystemDefaultTest.TestBase.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Security.Tests.SslStreamSystemDefaultTest.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161112.02 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: SslStream_DefaultTlsConfigurationApm_Ok SslStream_DefaultTlsConfigurationAsync_Ok SslStream_DefaultTlsConfigurationSync_Ok Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161112.02/workItem/System.Net.Security.Tests +13639 area-System.Runtime Fast append or insert StringBuilder into other StringBuilder Hello, I think for fast strings processing, StringBuilder should have fast methods to append and insert other StringBuilder. Now when I gather string from many parts, I gather each part into separated StrindBuilder (for example in different threads for speed) and then when I gather all parts to one StringBuilder, the standard library made many copy operations to convert each StringBuilder to string and then to copy each string to StringBuilder chunks. It is bad because after each part is appended to final StringBuilder, it is no longer used or changed, it is just collected by garbage. So it would be great just append chunks from one StringBulder to other without copy them two times. So to fast append second StringBuilder to first StringBuilder, it can just append chunks from second to first. After that it can set CopyOnChange flag in common chunks of first and second StringBuilders. Later if CopyOnChange chunk should be changed (very rare unusual case) it should be duplicated before changing. +13640 area-Infrastructure [ARM/Linux] Error during cross building for arm32 "Build environment: x64 Ubuntu 14.04 Build target: arm32 commit: ece35f9 Build option: release, skiptests, enable outloop error log in msbuild.log ``` 1266>/nfs/rbp3/corefx/layout/layout.proj(74,5): error MSB3030: Could not copy the file ""/nfs/rbp3/corefx/bin/Windows_NT.x64.Release/Native_aot/clrcompression.dll"" because it was not found. ..... ""/nfs/rbp3/corefx/build.proj"" (default target) (1) -> ""/nfs/rbp3/corefx/layout/dir.proj"" (Build target) (1263) -> ""/nfs/rbp3/corefx/layout/layout.proj"" (Build target) (1266) -> (GetAssetsFromReports target) -> /nfs/rbp3/corefx/layout/layout.proj(74,5): error MSB3030: Could not copy the file ""/nfs/rbp3/corefx/bin/Windows_NT.x64.Release/Native_aot/clrcompression.dll"" because it was not found. 10 Warning(s) 1 Error(s) ``` I've get error, but can use build results in corefx/bin directory. " +13643 area-System.Net Special-case known schemes in Uri.CheckSchemeSyntax The 32-bit special-casing is already handled by CheckKnownSchemes. On 64-bit, without this we end up allocating a string for the scheme and doing a dictionary lookup; instead, we can special-case the common schemes to avoid that allocation and lookup. (With a small tweak to the existing tests, this new code has 100% line and branch coverage.) Contributes to https://github.com/dotnet/corefx/issues/13622 cc: @cipop, @davidsh, @geoffkizer +13644 area-System.Net Rewrite Uri.CheckForUnicode to improve throughput and reduce allocations "Constructing Uri from a string calls CheckForUnicode, and every call to this is allocating a new char[], unencoding the string into that array, and then iterating through the array looking for non-ASCII chars. We can simplify all of that to avoid needing to store the results into the destination. This avoids the allocation, the copy, and a second iteration through the results. It also lets us bail early if we do fine unicode characters. All tested scenarios get measurably faster, some significantly, with fewer allocations. Here's a little repro app that uses a variety of Uris: ```C# using System; using System.Diagnostics; class Program { static void Main() { string[] urls = new[] { // short ASCII uri ""http://bing.com"", // short ASCII uri with escaped char at end ""http://bing.com/%20"", // short uri with unescaped unicode ""http://bing.com/\u0395"", // short uri with escaped unicode ""http://bing.com/%CE%95"", // long uri with escaped char at end ""http://www.bing.com/images/search?q=dotnet-bot&view=detailv2&&id=32C6FE9F03213C3FC9C05C605AA02ED5DC14796D&selectedIndex=0&ccid=tsBIuVWG&simid=608052183613704343&thid=OIP.Mb6c048b9558657301210048fd4949b6bo0&ajaxhist=0%2b"", // long uri with escaped unicode at end ""http://www.bing.com/images/search?q=dotnet-bot&view=detailv2&&id=32C6FE9F03213C3FC9C05C605AA02ED5DC14796D&selectedIndex=0&ccid=tsBIuVWG&simid=608052183613704343&thid=OIP.Mb6c048b9558657301210048fd4949b6bo0&ajaxhist=0%CE%95"", // long uri with escaped unicode early ""http://www.bing.com/images/search?q=%CE%95dotnet-bot&view=detailv2&&id=32C6FE9F03213C3FC9C05C605AA02ED5DC14796D&selectedIndex=0&ccid=tsBIuVWG&simid=608052183613704343&thid=OIP.Mb6c048b9558657301210048fd4949b6bo0&ajaxhist=0"", // long ASCII uri ""http://www.bing.com/images/search?q=dotnet-bot&view=detailv2&&id=32C6FE9F03213C3FC9C05C605AA02ED5DC14796D&selectedIndex=0&ccid=tsBIuVWG&simid=608052183613704343&thid=OIP.Mb6c048b9558657301210048fd4949b6bo0&ajaxhist=0"", }; var sw = new Stopwatch(); foreach (string url in urls) { int gen0 = GC.CollectionCount(0); sw.Restart(); for (int i = 0; i < 5000000; i++) new Uri(url); sw.Stop(); gen0 = GC.CollectionCount(0) - gen0; Console.WriteLine(sw.Elapsed.TotalSeconds + "", "" + gen0); } } } ``` Results (lower is better, and these tests were run including the commit from #13643): |Before (time, GCs)|After (time, GCs)| |---|---| |2.3879161, 305|1.9582606, 171| |2.5444187, 324|2.2631903, 172| |6.0763754, 1526|5.7146562, 1373| |9.8780414, 2594|7.1667422, 1907| |10.3655053, 1278|4.3081596, 172| |32.5682384, 6884|23.7972498, 5245| |29.4111472, 9479|22.1958248, 6542| |9.9326049, 1259|4.4754632, 171| With https://github.com/dotnet/corefx/pull/13643, fixes #13622. cc: @davidsh, @cipop, @geoffkizer, @justinvp " +13645 area-System.Xml Fix XmlSchema and XSLT failing tests on Unix Resolves https://github.com/dotnet/corefx/issues/12789 Xslt and Schema tests were using file paths and wrong capitalization of file names which would work on Windows, but not on Unix-based platforms. This is fixed in this PR. Some tests are also made windows-specific as they test cases specific to windows. @danmosemsft @weshaggard @stephentoub +13647 area-System.Xml Cleanup Assert.True(false) in Xml tests In case of failure, Xml tests are doing Assert.True(false), which doesn't help in seeing what the problem and expected behaviour was. Use Assert.Throws instead wherever applies. +13648 area-System.Xml Cleanup BinCompat TODO in System.Private.Xml Resolves https://github.com/dotnet/corefx/issues/9913 (cleaning up leftover TODOs from initial port of Schema and XSLT) @danmosemsft @weshaggard @stephentoub @krwq +13649 area-System.Net System.Net.Ping.Functional.Tests hangs on a 1 Core Ubuntu 16.04 VM This issue was originally reported by the WSL team. I'm able to repro if I switch my Ubuntu VM to 1 core. I don't have more info available (my host machine has perf issues and is now unusable). /cc @stephentoub @mellinoe +13651 area-Infrastructure Adding x86 CI build and test run. cc: @weshaggard @danmosemsft @mmitche Changing WIndows Debug build to run x86 build and test instead. Fixes #13448 +13656 area-System.IO Add missing FileSystemWatcher methods Adds source and tests for the remaining missing members in FileSystemWatcher. This required that FileSystemWatcher take a dependency on System.ComponentModel.TypeConverter. resolves https://github.com/dotnet/corefx/issues/13491 @AlexGhiondea @danmosemsft @joperezr @alexperovich @JeremyKuhne +13658 area-System.Net Fix ping test hang on single-core machine The test blocks with a ManualResetEventSlim.Wait() call. On a single-core machine, xunit will use a SynchronizationContext that allows only one operation at a time, and Ping's callback posts back to the SynchronizationContext. So if that one logical thread is blocked waiting for the callback, deadlock. Fixes https://github.com/dotnet/corefx/issues/13649 cc: @cipop, @mellinoe +13659 area-System.IO Cleanup after System.IO move Undo the temporary workarounds to System.Runtime.WindowsRuntime @joperezr, @ericstj, @weshaggard +13660 area-System.Data SqlConnection should support Azure AD token-based authentication The desktop .NET Framework 4.6 and newer has an `AccessToken` property on the `SqlConnection` class ([MSDN](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.accesstoken(v=vs.110).aspx)) which can be used to authenticate to a SQL Azure database using an access token issued by Azure AD ([examples here](https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/#7-connect-by-using-azure-ad-identities)). However, this property is not present on the version of `SqlConnection` provided in the System.Data.SqlClient NuGet package, including the latest preview v4.3.0-preview1-24530-04. In case it's an important detail, the project in question is a library project targeting 'netstandard1.6'. The lack of the `AccessToken` property makes it difficult, if not impossible, to support modern directory-based auth scenarios for Azure SQL DB while also targeting .NET Standard (I have not attempted to use the connection string-based AAD options, but for various reasons those would not be applicable for my project). I have yet to find a workaround other than setting the target framework to 'net46', which I would like to avoid except as a last resort. +13662 area-System.Net Add SocketAsyncEventArgs test for 0-byte receive I got a report that 0-byte receives weren't working correctly, which led me to find that we don't have any tests for it. Adding one (though it appears they're working ok, at least on the platforms on which I've tried it). cc: @cipop, @davidsh +13663 area-System.Net Reuse ManagedWebSocket for websocket connections on Windows HttpListener. Refer comment [here](https://github.com/dotnet/corefx/pull/13502#issuecomment-259461282) cc @stephentoub +13664 area-System.Security Port System.Security.Cryptography.*KeyExchangeFormatter.Rng Resolves https://github.com/dotnet/corefx/issues/12367 @steveharter @danmosemsft +13665 area-System.Data TdsServer for testing SqlClient connectivity The PR includes a Tds server from the SqlClient internal tests which can be used to start a server to test basic Sql Connectivity. There are a few tests for which even a basic connection open can be useful and can allow for writing more extensive tests. This TDS server will allow for such use cases. If any changes are made to the SqlClient to send data to the server using the TDS protocol, the changes can be validated by customizing the server and checking for data being received on the server side. After this PR I will migrate a few tests to the TDS server. I have added one tests which shows a connection being successfully opened to the TDS server using the `SqlConnection` @corivera @stephentoub +13668 area-System.Diagnostics Missing Process APIs requiring SecureString Fixes #13175 cc @danmosemsft @stephentoub @joperezr +13670 area-System.Linq Interpreter does not handle equality on operatorless nullables correctly `Expression.Equal()` and `Expression.NotEqual()` have a special case treatment for a nullable type where the element type does not have `==` and `!=` overloads (generally ruling out `Expression.Equal()` without an explicitly passed method) where it can be compared to a `ConstantExpression` with a null value. (This is a rather strange allowance, but it allows a parallel to comparison with null literal in C#). In the interpreter such an Expression triggers a debug assertion in debug and throws a `PlatformNotSupportedException` in release. There is a comment `// TODO: Nullable` which presumably relates to precisely this case. +13671 area-System.Linq Handle equality on operatorless nullables correctly in interpreter Correctly handle comparisons between nullable types (which don't have relevant operators) and null constants in the interpreter. Fixes #13670 Also more binary expression tests, going beyond just those for this fix. mostly focusing on op-assigns with conversions and equality expressions. Contributes to #1198 Remove `EqualReferenceLiftedToNull` and `NotEqualReferenceLiftedToNull` An operator with reference type operands can never be lifted to null, so these types can never be used. Also exception conditions tested for are impossible to reach. Remove related exception. Also move code repeated for both branches of an if-else above the branch. Contributes to #3836 +13672 area-Meta Will there be a .NET framework 5? Apologies if this is the wrong repository to ask this question, but I'm seeking some clarity on where the _existing_ .NET Framework is headed. - Will we see a .NET framework 5? - Will there be improvements to just the CLR, or will we eventually get a single unified CoreCLR? I can see some Windows-based parts of the existing .NET Framework never being in the .net-core (AD and interop for example), and also the existing CLR. Will the existing .NET Framework slowly be slimmed down to just a Windows one, and then it being used a separate import? Could someone point me in the right direction? Thanks +13674 area-System.Diagnostics Minor clean up of Process test #13560 added a test that doesn't delete a temp file after it's done with it. +13675 area-System.Linq Dynamic-, MethodCall- and InvocationExpressions Inconsistent in exceptions on out of range If one calls `GetExpression()` on instances of `DynamicExpression`, `MethodCallExpression` or `InvocationExpression` then depending on which derived type they are of they might throw `InvalidOperationException` or `ArgumentOutOfRangeException`. This is another variant of issue #3881 +13676 area-System.Linq Consistently throw ArgumentOutOfRange on IArgumentProvider.GetArgument Fixes #13675 (C.f. #3901). CC. @bartdesmet @stephentoub @VSadov +13677 area-Serialization Use RuntimeHelpers.GetUninitializedObject in Serialization Currently we are calling RuntimeHelpers.GetUninitializedObject via reflection. PR #13652 made it available on NetCore. We now can call the API directly. +13679 area-System.Runtime Adding missing members of FileLoadException and FileNotFoundException cc: @danmosemsft @stephentoub Adding Serialization missing members for both exceptions Fixes #13489 +13680 area-System.Globalization Move IdnMapping from System.Globalization.Extensions to System.Runtime https://github.com/dotnet/coreclr/pull/8129 +13681 area-System.Memory "Span: Restore Span[index] return type to ""ref T"" and remove Span.GetItem()" +13684 area-System.Net Reduce allocations in SocketTaskExtensions The various Task-returning extension methods in SocketTaskExtensions are using Task.Factory.FromAsync. This is a quick helper, but we can do better performance-wise. First, FromAsync needs to take the object state provided by the user and pass that through to the begin method as its object state. That means that FromAsync has no way to get additional state into the body of the end method, which means it ends up allocating a delegate and a closure. FromAsync does benefit from being able to avoid creating a TaskCompletionSource, but the cost of a TCS is much less than the cost of a delegate and a closure. Second, the per-call AsyncCallback allocation ends up defeating a cache inside of Socket, which means every call ends up needing to allocate an internal CallbackClosure object. Third, several of these methods need to pass additional state through in order to handle refs on the begin method and getting that data into the out (there's also a race conditoin bug in the current handling of this). That meant allocating an additional object[] and in some cases boxing value types. We can improve this by just writing the code out manually using TaskCompletionSource directly. We do have to allocate the TCS, but we save on the delegate and closure allocations, we avoid extra delegate invocations, we avoid extra allocations to handle those ref cases, etc. In a test that repeatedly asynchronously writes to one socket with SendAsync and reads from another with ReceiveAsync, this changes reduces number of allocations by ~20% and allocated bytes by ~25%. cc: @davidsh, @cipop, @geoffkizer +13685 area-System.Net Remove a reference field from OverlappedAsyncResult It's only relevant to async ReceiveFrom, so put it on a derived class used there. cc: @davidsh, @cipop, @geoffkizer +13687 area-System.Security Oversights in X509Certificates namespace Small omissions from X509Certificates ns. `X509CertificateCollection` needs to derive from `CollectionBase` `X509CertificateCollection.X509CertificateEnumerator` needs to be `new` ie ``` public new X509CertificateCollection.X509CertificateEnumerator GetEnumerator(); ``` Also this method is missing. ``` public class X509Chain : IDisposable { public static X509Chain Create(); } ``` /cc @steveharter +13688 area-System.Security Default is missing from SslProtocols ``` namespace System.Security.Authentication { public enum SslProtocols { Default = 240, } } ``` +13689 area-Serialization readonly on two Formatter fields does not match NS2.0 These two fields were marked `readonly` in Core, but were not `readonly` in the full Framework, and thus not in Standard. Adding readonly to a protected/public field is a breaking change so we should probably revert this. ``` namespace System.Runtime.Serialization { public abstract class Formatter : IFormatter { protected readonly Queue m_objectQueue; protected readonly ObjectIDGenerator m_idGenerator; } ``` @shmao @zhenlan +13691 area-Serialization DataContractJsonSerializer implementation overrides fewer methods from base class "The presence or absence of an override is not a breaking change. It is really a matter for the implementation. However the API diff tool does flag them and I noticed that these are not present in Core but were in Desktop Could you please take a look and confirm that that is intentional? ``` namespace System.Runtime.Serialization.Json { public sealed class DataContractJsonSerializer : XmlObjectSerializer { public override bool IsStartObject(XmlReader reader); public override object ReadObject(XmlDictionaryReader reader); public override object ReadObject(XmlReader reader); public override object ReadObject(XmlReader reader, bool verifyObjectName); public override void WriteEndObject(XmlWriter writer); public override void WriteObject(XmlDictionaryWriter writer, object graph); public override void WriteObject(XmlWriter writer, object graph); public override void WriteObjectContent(XmlWriter writer, object graph); public override void WriteStartObject(XmlWriter writer, object graph); } } ``` In Desktop for example, we have ``` public override bool IsStartObject(XmlReader reader) { return base.IsStartObjectHandleExceptions(new JsonReaderDelegator(reader)); } ``` whereas in Core the base class will be called which has ``` public virtual bool IsStartObject(XmlReader reader) { XmlObjectSerializer.CheckNull(reader, ""reader""); return this.IsStartObject(XmlDictionaryReader.CreateDictionaryReader(reader)); } ``` @shmao can you please confirm these are omitted by design and if so close this issue." +13692 area-System.Runtime Missing RuntimeHelpers.Equals This guy got overlooked ``` namespace System.Runtime.CompilerServices { public static class RuntimeHelpers { public static new bool Equals(object o1, object o2); } } ``` +13693 area-System.Runtime Add System.LoaderOptimizationAttribute +13694 area-System.Diagnostics Two more parameter renames to reverse ``` public static class Console { public static void Write(string value); // currently s public static void WriteLine(string value); // currently s } namespace System.Diagnostics { public static class Debug { public static void WriteLineIf(bool condition, object message); // should be value public static void WriteLineIf(bool condition, object message, string category); // should be value public static void WriteLineIf(bool condition, string value); // should be message public static void WriteLineIf(bool condition, string value, string category); // should be message } ``` The latter unfortunately I messed up in 2c32fb1 - I renamed the impl, which was already correct, instead of the ref. +13695 area-System.Collections Specialize ImmutableArray.InsertRange for arrays. I made an optimization in #13158 to make `ImmutableArray.InsertRange` for well-known collections, including arrays, lists, and `ImmutableArrays`. Unfortunately, the optimization for arrays had to be reverted. For context, see https://github.com/dotnet/corefx/pull/13158#discussion_r86702932 There are a few possible workarounds for this: 1) Use a for-loop, which will be less efficient than `Array.Copy`. 2) Check that the `T[]` is really of type `T[]` by testing `array.GetType() == typeof(T[])` beforehand, and use `Array.Copy` if so, or else fall back to a for-loop. 3) Just use `Array.Copy`, and break the existing scenario. I personally think option 3 is reasonable. It's technically a breaking change, e.g. the test app I posted in my comment would no longer work: ```cs class Program { static void Main(string[] args) { int[] ints = new[] { 1, 2, 3 }; uint[] uints = (uint[])(object)ints; var immutableUints = ImmutableArray.Create(new[] { 1u, 2u, 3u }); immutableUints.AddRange(uints); // Works now; with changes, will throw ArrayTypeMismatchException } } ``` But considering that today `ImmutableArray.Create((uint[])(object)new[] { 1, 2, 3 })` also throws an exception, indicating these types of arrays are not really supported, it seems reasonable to make this change. cc @AArnott +13696 area-System.Linq Linq: Where(pred).First should not be faster than First(pred) Related StackOverflow question: http://stackoverflow.com/q/8663897/4077294 Because `Where` is specialized internally for different types, e.g. arrays and lists, we can iterate through them directly in `MoveNext` and avoid some virtual dispatch. `First(pred)`, on the other hand, does not do any such specialization. This means that `array.Where.First` will be faster than `array.First` if the first element that matches the predicate is far up in the sequence. We may want to share code between `Where.First` & `First`, i.e. by doing a bunch of typecasts in `First` and calling some function that statically receives the source as an array/list, & then also have the specialized iterators call through to those functions. Same applies for certain other functions that accept predicates, such as `Count`. +13699 area-Serialization DCS/DCJS does not Support ExtensionDataObject in ReflectionOnly mode Fix for #12767 made DataContractSerializer and DataContractJsonSerializer support ExtensionDataObject. But ExtensionDataObject tests failed in ReflectionOnly mode. To fix this, have a look at PR #13701 and made changes in the following files, ``` ReflectionXmlFormatReader.cs ReflectionXmlFormatWriter.cs ReflectionJsonFormatReader.cs ReflectionJsonFormatWriter.cs ``` +13700 area-System.Runtime Remove sealed from FirstChanceExceptionEventArgs This was changed to sealed, which is a breaking change (albeit in this case perhaps unlikely to affect anyone) ``` namespace System.Runtime.ExceptionServices { public sealed class FirstChanceExceptionEventArgs : EventArgs { } } ``` The impl is not sealed however the ref in both coreclr and corefx need to be fixed. +13701 area-Serialization Made DCS/DCJS Support IExtensibleDataObject Made DataContractSerializer and DataContractJsonSerializer support IExtensibleDataObject and ExtensionDataObject. Fix #12767. +13703 area-System.Security AES missing member `Create()` should be `new` and we are missing `Create(string algorithmName)`. ``` public abstract class Aes : SymmetricAlgorithm { public static new Aes Create(); public static new Aes Create(string algorithmName); } ``` +13704 area-System.Xml Make System.Private.Xml.Linq tests run on all platforms Fixes https://github.com/dotnet/corefx/issues/13201 Fixed few tests that were failing with whitespace differences on Assert.Equal. cc: @danmosemsft @stephentoub +13705 area-System.Xml "System.Xml.Xsl.XslCompiledTransformApi.Tests threw ""System.NullReferenceException""" No results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161115.01/workItem/System.Xml.Xsl.XslCompiledTransformApi.Tests/details/4944a05a-b748-44ab-b117-f6714bb60568 ``` 2016-11-14 19:23:48,940: INFO: proc(65): run_and_log_output: Output: System.Xml.Tests.CLoadTest.LoadGeneric2() [FAIL] 2016-11-14 19:23:48,941: INFO: proc(65): run_and_log_output: Output: System.NullReferenceException : Object reference not set to an instance of an object. 2016-11-14 19:23:48,945: INFO: proc(65): run_and_log_output: Output: Stack Trace: 2016-11-14 19:23:49,054: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.ExceptionVerifier..ctor(String assemblyName, ExceptionVerificationFlags flags, ITestOutputHelper output) 2016-11-14 19:23:49,054: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.CExceptionHandler..ctor(String strXmlFile, String ns, ITestOutputHelper output) 2016-11-14 19:23:49,054: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.XsltApiTestCaseBase2.CheckExpectedError(Exception ex, String assembly, String res, String[] strParams) 2016-11-14 19:23:49,054: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.CLoadTest.LoadGeneric2() ``` Build : Master - 20161115.01 (Core Tests) Failing configurations: OSX.1011.Amd64:AnyCPU-Debug +13706 area-System.Xml "System.Xml.Xsl.XslTransformApi.Tests threw ""System.Xml.Tests.VerifyException""" No results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161115.01/workItem/System.Xml.Xsl.XslTransformApi.Tests/details/4944a05a-b748-44ab-b117-f6714bb60568 ``` 2016-11-14 19:23:44,771: INFO: proc(65): run_and_log_output: Output: System.Xml.Tests.CTransformStrStrTest.TransformStrStr9() [FAIL] 2016-11-14 19:23:44,772: INFO: proc(65): run_and_log_output: Output: System.Xml.Tests.VerifyException : Error while loading assembly 2016-11-14 19:23:44,772: INFO: proc(65): run_and_log_output: Output: Stack Trace: 2016-11-14 19:23:44,772: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.ExceptionVerifier..ctor(String assemblyName, ExceptionVerificationFlags flags, ITestOutputHelper output) 2016-11-14 19:23:44,772: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.CExceptionHandler..ctor(String strXmlFile, String ns, ITestOutputHelper output) 2016-11-14 19:23:44,772: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.XsltApiTestCaseBase.CheckExpectedError(Exception ex, String assembly, String res, String[] strParams) 2016-11-14 19:23:44,772: INFO: proc(65): run_and_log_output: Output: at System.Xml.Tests.CTransformStrStrTest.TransformStrStr9() 2016-11-14 19:23:44,773: INFO: proc(65): run_and_log_output: Output: System.Xml.Tests.CTransformStrStrResolverTest.TransformStrStrResolver3 [SKIP] 2016-11-14 19:23:44,773: INFO: proc(65): run_and_log_output: Output: SQLBU Defect Tracking Bug 430834: Skipping when input type is URI, see bug for more details. 2016-11-14 19:23:44,773: INFO: proc(65): run_and_log_output: Output: System.Xml.Tests.CTransformStrStrResolverTest.TransformStrStrResolver1 [SKIP] 2016-11-14 19:23:44,773: INFO: proc(65): run_and_log_output: Output: Resolving of External URIs is no longer allowed 2016-11-14 19:23:44,773: INFO: proc(65): run_and_log_output: Output: System.Xml.Tests.CNDP1_1SP1Test.var3 [SKIP] 2016-11-14 19:23:44,773: INFO: proc(65): run_and_log_output: Output: SQLBU Defect Tracking Bug 430834: Skipping when input type is URI, see bug for more details. ``` Build : Master - 20161115.01 (Core Tests) Failing configurations: OSX.1011.Amd64:AnyCPU-Debug +13707 area-System.Drawing Improve hash codes in Drawing Primitives Closes #5256 There's no perfect balance of hash quality and speed but this takes a moderate mult-and-add with 31 as the multiplier. Better bit-mixing could certainly be done, but taking more time. `Rectangle` was left alone, but `RectangleF` changed to take the hash of each single-precision float rather than casting to `uint` and losing bits. Also changed some `&&` to `&` in tests where avoiding the branch is likely cheaper than avoiding the rhs field access. +13708 area-System.Console Console.ReadLine(); cause process hung when execute dotnet core console app from PowerShell ISE "```C# using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine(""Hello World!""); Console.Write(""Enter>""); var read = Console.ReadLine(); } } } ``` ```JSON { ""version"": ""1.0.0-*"", ""buildOptions"": { ""debugType"": ""portable"", ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": ""1.0.0"" }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dnxcore50"", ""portable-net451+win8"" ] } }, ""runtimes"": { ""win7-x64"": {} } } ``` When execute the console app published by `dotnet publish` from PowerShell ISE, the process will hung and not able to finish readline, also privouse `Console.Write()` will not be print out. ![image](https://cloud.githubusercontent.com/assets/1750815/20335994/eb9edd74-ab94-11e6-8204-c11279e4c0a3.png) " +13710 area-System.IO Path.GetTempPath does not return a user specific folder on Unix systems "On Unix systems Path.GetTempPath returns ""/tmp"" unless the TMPDIR envvar is set. According to the documentation, this method returns the path of the current user's temporary folder. On Windows it returns: ""%USERPROFILE%\AppData\Local\Temp"". This is causing an issue for the NuGet.Client because the program assumes it is the owner of the temp directory, see https://github.com/NuGet/Home/issues/2793." +13711 area-System.Memory Add ReadOnlySpan<> to System.Memory cc @KrzysztofCwalina +13713 area-Infrastructure [Release1.0] Use setMachineAffinity instead of legacy labels +13714 area-Infrastructure [dev/apple_crypto] Use setMachineAffinity instead of legacy labels +13715 area-System.Globalization Enable the TimeZone/TimeZoneInfo APIs and tests for netstandard 1.7 +13717 area-Infrastructure netcoreapp11 methods did not get exposed in System.Runtime package "Today when .NET Core 1.1 got released I wanted to make use of the new `GC.GetAllocatedBytesForCurrentThread ` method which got exposed [here](https://github.com/dotnet/corefx/pull/12489) by @jkotas . However I can't do so, I get `error CS0117: 'GC' does not contain a definition for 'GetAllocatedBytesForCurrentThread'` error when trying to use it. `dotnet --version: 1.0.0-preview2-1-003155` My project.json file: ```json { ""version"": ""1.0.0-*"", ""buildOptions"": { ""debugType"": ""portable"", ""emitEntryPoint"": true }, ""dependencies"": {}, ""frameworks"": { ""netcoreapp1.1"": { ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.1.0"" } }, ""imports"": ""dnxcore50"" } } } ``` The code: ```cs using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine(GC.GetAllocatedBytesForCurrentThread()); } } } ``` I took a look at the System.Runtime.cs file and it's [using](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs#L1252) the new moniker netcoreapp11 in few #ifdefs but none of these methods are exposed in System.Runtime. Moreover when I go to `.nuget\packages\System.Runtime\4.3.0\lib` I can see that there is no separate version for netcoreapp1.1. Anyway when I run the program an use `typeof(GC).GetTypeInfo().Assembly.Location` I get `C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Private.CoreLib.ni.dll` which has the method exposed. My question is: how can I use this method without reflection? Am I doing something wrong?" +13718 area-Meta Update breaking change docs @danmosemsft @weshaggard @stephentoub @jkotas skip ci please +13719 area-Serialization Add Missing Method Overrides of DataContractJsonSerializer. Some method overrides of DataContractJsonSerializer exist on Desktop but are missing in Core. The PR is adding them in Core. Fix #13691. +13720 area-System.Net Reduce allocations in HttpClient.GetString/ByteArrayAsync "Today, HttpClient.GetStringAsync and GetByteArrayAsync copy all of the response data to a MemoryStream. For strings, that buffer is never exposed, so it ends up being temporary garbage. For byte arrays, the data is extracted from the MemoryStream with ToArray, which means double the allocations. This commit does three things: - It introduces a helper Stream based on ArrayPool, where all buffers come from the shared pool. - GetStringAsync uses that stream as the target, such that the byte[]s used are recycled with the pool, avoiding per-request allocations. - GetByteArrayAsync uses that stream as the target if a content length couldn't be determined, so that the byte[]s incurred as the stream grows are recycled. And if a content length can be determined, it uses a MemoryStream and then returns that MemoryStream's buffer directly to the caller, avoiding the extra buffer allocation and copy. As an example, this program is concurrently downloading a 12K web page a thousand times: ```C# using System; using System.IO; using System.Linq; using System.Net.Http; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { var client = new HttpClient() { Timeout = Timeout.InfiniteTimeSpan }; var uri = new Uri(""http://localhost:8080/""); Task.WaitAll(Enumerable.Range(0, 1000).Select(_ => client.GetByteArrayAsync(uri)).ToArray()); } } ``` Before the change the program allocates ~27.5MB, and after the change it allocates ~16.2MB (~40% reduction). Similarly, if the GetByteArrayAsync above is changed to GetStringAsync, before the change the program allocates ~39.5MB, and after the change the program allocates ~28.8MB (~30% reduction). Contributes to #13589 cc: @davidsh, @cipop, @geoffkizer " +13721 area-System.Diagnostics Remove System.Security.Permissions dependency on System.Diagnostics.*Trace With PR #13320 System.Security.Permissions dependency was added because some members had CAS Attributes, but then we deleted those attributes and forgot to break the dependency. +13722 area-System.Threading Expose some threading-related things for ns2.0 Fixes dotnet/corefx#11638 Fixes dotnet/corefx#11633 Fixes dotnet/corefx#11635 Fixes dotnet/corefx#11636 Fixes dotnet/corefx#13484 +13723 area-System.Linq Test Debug Proxies of Expression and Dynamic objects For various types of expression, obtain the `DebuggerTypeProxy` through similar means as that used by a debugger (examine the `DebuggerTypeProxyAttribute` and instantiate the type), then compare the properties obtainable through the proxy with the properties of the expression object itself. Failure to find a debug property for any public property is considered a failure, with the explicit exceptions of `ArgumentCount` and `ExpressionCount`. Similar tests for `BindingRestrictions`' proxy, though with differences as it doesn't have the same one-to-one mapping. Debugger proxies not included: 1. `ExpandoObject`'s keys and values collections. Will do this after #13595 fixes `ExpandoObject`'s dynamic behaviour, #13634 tests it directly, and probably some more tests on `ExpandoObject` itself (maybe at the same time. 2. `InstructionArray` and `InstructionList`. As there's no way to peek through the delegate to the instructions (is there?) testing this would require some particularly artificial use of reflection to create the llists, as well as their proxies. Maybe it'd be better just to exclude these types from coverage. +13724 area-System.Runtime Converting FirstChanceExceptionEventArgs to not be sealed cc: @danmosemsft Marking FirstChanceExceptionEventArgs as not sealed to match netstandard. Fixes #13700 +13726 area-System.Linq Implement Enumerable.ToHashSet() Closes #2323 A straight-forward implementation, forgoing any optimisations. `HashSet`'s constructor already has some for some cases, and others could be wasteful unless not just the number of elements, but the number of elements that are distinct in terms of the equality comparer can be predicted. +13728 area-System.Runtime Add remaining AppDomain apis Add implementation for 1. ReflectionOnlyAssemblyResolve 2. SetDynamicBase 3. AssemblyResolve Also fixes bug in ExecuteAssembly. ExecuteAssembly should load assembly using LoadFile and not LoadFrom. +13729 area-System.Collections Increase count of queue items to thread count before dequeue. cc @ianhays @stephentoub fixes #13356 +13730 area-System.Diagnostics Deleted System.Security.Permissions dependency from Diagnostics.TraceSource Fixes #13721 cc @danmosemsft @weshaggard @joperezr +13732 area-System.Diagnostics [release/1.0.0] Check if process has started, before checking for exit. fixes #12696 porting the test fix from master to release/1.0.0 cc @karelz @danmosemsft @leecow +13734 area-System.Security Add CryptoConfig support Address issue https://github.com/dotnet/corefx/issues/12327 (Port System.Security.Cryptography.CryptoConfig) Per offline discussion, CryptoConfig class was placed in S.S.C.Algorithms as it needs access to the Oid class in S.S.C.Encoding. This means the static Create methods added to S.S.C.Primitives throw PNSE. CryptoConfig could not be placed in S.S.C.Primitives as it wouldn't be able to reference Oid\S.S.C.Encoding without an cyclic assembly reference. There are alternatives to remove these PNSE including x-compile Oid and\or CryptoConfig, combining assemblies, moving types, etc but considered not worth the cost at this time. The workaround is to have consumers call CryptoConfig.CreateFromName directly. @bartonjs please review. +13735 area-System.Linq Investigate benefits of separating out parts of Count into a non-generic method. Separated out from #12703. Relevant discussion: https://github.com/dotnet/corefx/pull/12703#discussion_r87884894 tl;dr We may want to put a part of `Enumerable.Count` in a non-generic method so that the JIT has less code to generate during the following 2 scenarios: - For a particular value type T, the source enumerable always implements `ICollection`, `IIListProvider`, etc. and we can determine the count without actually enumerating - We fall back to iterating manually over the enumerable for at least 2 different value types More details can be found in the comment linked to. Opening this as a tracking issue. +13737 area-System.Reflection Add missing enum values in S.Reflection.Emit Fixes #13486 +13738 area-Meta Move API lists to buildtools repo PR #13440 added two new API list files in the top-level directory of this repo. These two files should be moved to the buildtools repo eventually. +13739 area-Infrastructure Build for x86 on Windows runs tests using 64-bit runtime After running `build -buildArch=x86` on Windows, the build script created `bin\tests\AnyOS.x86.Debug` and `bin\tests\Windows_NT.x86.Debug` directories. However, 64-bit `coreclr.dll` and `corerun.exe` were copied into these directories, so the tests were actually run with 64-bit runtime. +13740 area-System.Security AsymmetricAlgorthm.ToXmlString, FromXmlString, and other missing members Replaces the previous PR from last week which got corrupted due to git issues. Kept original commit; second commit removes the Xml support due to cyclic dependencies with System.Private.Xml. A new issue will be created to bring that back in some form. Issue https://github.com/dotnet/corefx/issues/12315 @bartonjs +13741 area-Meta Add missing [Obsolete] attributes on NS2.0 ports "We should have any [Obsolete] attributes that are present in Standard. Some are missing. Copy them from the Standard repo. These are missing: * various on AppDomain * various on Process * various on Thread * these two ``` public class HttpWebResponse : WebResponse, ISerializable { [ObsoleteAttribute(""Serialization is obsoleted for this type. http://go.microsoft.com/fwlink/?linkid=14202"")] protected HttpWebResponse(SerializationInfo serializationInfo, StreamingContext streamingContext); } public class IPAddress { [ObsoleteAttribute(""This property has been deprecated. It is address family dependent. Please use IPAddress.Equals method to perform comparisons. http://go.microsoft.com/fwlink/?linkid=14202""""This property has been deprecated. It is address family dependent. Please use IPAddress.Equals method to perform comparisons.http://go.microsoft.com/fwlink/?linkid=14202"")] public long Address { get; set; } } ```" +13744 area-Serialization Fix XmlSerializer Test Project's ProjectReference. All serialization test projects did not reference contract assembly's pkgproj. This caused the test projects not building against the latest contract assemblies built by the repo. The other issue is that DCS and DCJS's test projects referenced the implementation assembly's csproj directly, which caused the test projects being able to use types defined in implementation assembly while the types are not in the contracts. The fix is to make test projects reference both contract assembly and implementation assembly's pkgproj. Fix #11135. /cc: @StephenBonikowsky @mconnew @zhenlan can you please review the change? Thanks! +13745 area-System.Net Add SslProtocols.Default Tweak to fix #13688 @davidsh @CIPop +13746 area-System.Collections Proposal: Supporting C# 7 deconstruction of certain types. "## Background C# 7 added support for deconstruction of user-defined types via a `Deconstruct(out ...)` method. ([see it in action](http://tryroslyn.azurewebsites.net/#b:master/K4Zwlgdg5gBAygTxAFwKYFsDcAoADsAIwBswBjGUogQxBBgGEYBvbGNmfYsmANwHswAExgARVKT4QUAJ2ClkACj7BkMSMgDaAXRhUANDGWr1MAgaNqIq0gEpW7Fuye6YAXhgRgRIjmfsCbjAADL5+FIEh9mwAvtixeIQk5JQ0dCLYjuycSbwCwgCyCnZOmX48VNLh7hCoAO4MRaFlFTAK+jCoBoI2gaRNMLHRQA=)) It would make sense to be able to use this feature with tuple-like types such as `KeyValuePair` and `DictionaryEntry`. ## Proposal ```cs public struct KeyValuePair { // BLOCKED (do not add now): [EditorBrowsable(EditorBrowsableState.Never)] public void Deconstruct(out TKey key, out TValue value); } public struct DictionaryEntry { // BLOCKED (do not add now): [EditorBrowsable(EditorBrowsableState.Never)] public void Deconstruct(out object key, out object value); } ``` ## Usage ```cs public void MyDictionaryMethod() { var dict = new Dictionary(); dict.Add(1, ""2""); var (one, two) = dict.First(); } ```" +13747 area-System.Runtime Join(string separator, params object[] values) is fixed for first null in object array "Join issue for first null in object array is fixed. So calling string.Join("","", null, 1, 2, 3) now return "",1,2,3"", but not empty string as before. See https://github.com/dotnet/coreclr/pull/8114" +13748 area-System.Runtime Failure in AppDomainTests.GetAssemblies due to FileNotFoundException This failed in CI, on CentOS https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/280/consoleText ``` System.Tests.AppDomainTests.GetAssemblies [FAIL] System.IO.FileNotFoundException : Could not load file or assembly 'TestAppOutsideOfTPA, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Stack Trace: at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks, IntPtr ptrLoadContextBinder) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks, IntPtr ptrLoadContextBinder) at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.Load(String assemblyString) at System.AppDomain.Load(String assemblyString) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs(405,0): at System.Tests.AppDomainTests.GetAssemblies() ``` +13749 area-Infrastructure [ARM/CI] Need to install some packages for arm-hardfp cross build The HardFP build fails with: ``` 02:56:56 /usr/bin/ld: unrecognised emulation mode: armelf_linux_eabi 02:56:56 02:56:56 Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 i386linux elf_l1om 02:56:56 elf_k1om i386pep i386pe 02:56:56 02:56:56 clang: error: linker command failed with exit code 1 (use -v to see 02:56:56 invocation) 02:56:56 ``` Probably the package `binutils-arm-linux-gnueabihf` is missing. To work for it, I may need a remote access to cloned CI machine. +13750 area-Meta Add information about /publicsign compiler flag Add some information about reading and setting the public-sign flag on binaries using corflags and FakeSign.exe tools. Additionally mention the /publicsign compiler option and MSBuild property. +13751 area-System.Collections Updated ConcurrentDictionary.GetValues to preallocate values list. +13752 area-System.Net Socket.ReceiveAsync and other methods don't support sync completion "On Windows, it is possible to use the following WIN API function to enable WSARecv and other calls on the socket to complete synchronously when possible and avoid triggering IOCP completion: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365538(v=vs.85).aspx It is possible to do even now, e.g.: ``` C# public static bool SetFileCompletionNotificationModes(this Socket socket, FileCompletionNotificationModes flags) { SetFileCompletionNotificationModes(socket.Handle, flags); } [DllImport(""kernel32.dll"")] internal static extern bool SetFileCompletionNotificationModes([In] IntPtr fileHandle, [In] FileCompletionNotificationModes flags); [Flags] public enum FileCompletionNotificationModes { SkipCompletionPortOnSuccess = 1, SkipSetEventOnHandle = 2 } ``` The problem is in ReceiveAsync implementation on this line: https://github.com/dotnet/corefx/blob/5e89fcf41481481e7b673b10ea7644ce56776bd9/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L4356: ``` C# if (socketError != SocketError.Success && socketError != SocketError.IOPending) { e.FinishOperationSyncFailure(socketError, bytesTransferred, flags); retval = false; } else { retval = true; } ``` Basically, if returned result is not Success or IOPending then it is a sync completion with error. If it is Success or IOPending - it will return true. `WSARecv` will not return SUCCESS for IOCP-based call unless `SetFileCompletionNotificationModes` was called for the socket setting the flags above. So in default operation mode check for inequality to `SocketError.Success` is harmless (but redundant) and is always true. Once you set notification modes though, `WSARecv` may return SUCCESS in case of sync completion and then it won't invoke callback on SAEA and per code above will return true. Proposal is to change behavior of `ReceiveAsync` and other IOCP-based methods to support synchronous completion. The code above would change as follows: ``` C# if (socketError == SocketError.Success) { e.FinishOperationSuccess(SocketError.Success, bytesTransferred, flags, completedSynchronously: true); retval = false; } else { socketError = (SocketError)Marshal.GetLastWin32Error(); if (socketError == SocketError.IOPending) { retval = true; } else { e.FinishOperationSyncFailure(socketError, bytesTransferred, SocketFlags.None); retval = false; } } ``` Another change not shown here is to `SocketAsyncEventArgs.FinishOperationSuccess`, adding parameter `bool completedSynchronously` that if true would skip raising SAEA.Completed event. This change and support for SetFileCompletionNotificationModes yield significant performance improvement for scenarios with high throughput over a small number of sockets. Let me know if the change is something you can consider to take and I'd post a PR." +13753 area-Infrastructure Upgarding nuget package of .NETCoreApp breaks debugging "Creating a new console .NET core application: After upgrading the .NET Core App package. Getting this errors when building: tNet.Common.Targets(262,5): error : Can not find runtime target for framework ' 1>.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x6 1>4, win81-x64, win8-x64, win7-x64'. Possible causes: 1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.Do 1>tNet.Common.Targets(262,5): error : 1. The project has not been restored or res 1>tore failed - run `dotnet restore` 1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.Do 1>tNet.Common.Targets(262,5): error : 2. The project does not list one of 'win10- 1>x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section. 1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.Do 1>tNet.Common.Targets(262,5): error : 3. You may be trying to publish a library, 1>which is not supported. Use `dotnet pack` to distribute libraries. Workaround: Altering the project.json to include type=""platform"" fixed the issue. ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.1.0"", ""type"": ""platform"" }," +13754 area-Meta Build System.Runtime.Extensions and System.Security.Principal packages for uap101aot target. @jkotas, please review. Temporarily skip AppDomain.cs—there are several issues with it. +13755 area-Infrastructure [release/1.1.0] Disable package build for packages not shipping Disable full package build for 1.1.0. In servicing we only build packages we intend to ship. Add 1.0.0 serviced packages to 1.1.0 index. We'll harvest from these as necessary. /cc @weshaggard @gkhanna79 @chcosta +13756 area-Infrastructure [release/1.0.0] Disable package build for packages not shipping We've shipped 1.0.3 change the build back to producing no packages. /cc @weshaggard @chcosta @gkhanna79 +13757 area-Meta Provide support for general non-cryptographic hashing. System.Hashing? A spin-of of the design discussion to tackle the general problem. References: https://github.com/dotnet/corefx/issues/8034 +13758 area-Infrastructure Update packageIndex w/ stable release versions. This ensures any harvested assets will come from our latest release. /cc @weshaggard @chcosta +13759 area-System.ComponentModel Fix System.ComponentModel.TypeConverter.Tests ConvertTo_NullCulture ListSeparator When Current Culture have List Separator other then coma (,) some tests failed. +13760 area-Serialization Made DCS/DCJS Support IDeserializationCallback. Made DataContractSerializer and DataContractJsonSerializer to support IDeserializationCallback. Fix #13368. +13761 area-System.Xml Fix ExceptionVerifier bug in XSLT tests Fixes https://github.com/dotnet/corefx/issues/13706. In cultures other than en_US locale the `ExceptionVerifer` class needs to load satellite assembly, which was removed at the time of porting tests due to the API not being available. cc: @danmosemsft @stephentoub +13762 area-System.IO Expose FileStream IntPtr ctors from CoreLib @ianhays +13763 area-System.Reflection Reflection: Mark obsolete enum values obsolete in source Follow up on #13737 based on discussion at https://github.com/dotnet/corefx/pull/13745#discussion_r88450430 cc: @danmosemsft, @alexperovich +13766 area-Serialization Need some improvement for TimeSpan There're two main areas. Support the DefaultValue attribute. Follow the similar pattern as the DateTime. +13767 area-System.Runtime Missed adding new files to csproj +13768 area-System.Net HttpWebRequest POST operation doesn't work with 5.2.2 UWP "Hi I notice something between the v5.2 and 5.1 of the .netCore.UWP nugets version in Visual Studio I have an APP in v5.1 and a do a ""POST"" opperation whith a HttpWebRequest , with parameter in the body encode in UTF8. (to simulate a login on a webSite) If a upgrade to v5.2, my POST stop working ! I restore to v5.1 and it work again ! Have you got an idea ? i've make a small VS project . In 5.1 , we have an OK, in 5.2.2 : a KO pop up :) " +13769 area-System.Security Expose HMAC.BlockSizeValue This is a protected property which can reflect only on the extended classes. +13770 area-System.Runtime Fix test for AppDomain.GetAssemblies AppDomain.Load() only looks for assemblies in coreroot. If an assembly happened to be loaded via Assembly.LoadFile() then it might not be located in coreroot. And if that assembly is returned as first element of assemblies array returned by GetAssemblies then below test will fail as AppDomain.Load will not find that assembly in coreroot. +13771 area-Meta Adding Obsolete Attributes to missing type/members Fixes #13741 cc: @weshaggard @danmosemsft Adding obsolete members in order to match netstandard2.0 +13772 area-System.Security Fix omissions in X509* "Fixes #13687 1) X509.Chain was missing. Nothing to do with (2) except it has X509 in the name. Desktop does `return (X509Chain) CryptoConfig.CreateFromName(""X509Chain"");` per @steveharter I'm just using `new X509Chain()`. Steve are you fixing this when you complete CryptoConfig? 2) X509CertificateCollection needs to derive from CollectionBase and X509CertificateCollection.X509CertificateEnumerator needs to be new I looked at @justinvp's change https://github.com/dotnet/corefx/pull/2824 and unfortunately moving to ArrayList meant most of it had to go. I did keep checks for null in the enumerator constructors and a type check when adding certificates to the collection. @stephentoub @justinvp " +13773 area-System.Net HttpClient and WebSockets don't provide HTTP error details "I have a WebSocket service which can return error details in the HTTP response to a WebSocket upgrade request such as: HTTP/1.1 404 Endpoint does not exist. TrackingId:71d07da7-8ace-4463-b764-1f76559aebd0_G2 When I use ClientWebSocket.ConnectAsync and it fails (expected) there's no way to get the HTTP StatusCode (e.g. 404) or the HTTP StatusDescription (e.g. ""Endpoint does not exist. TrackingId:71d07da7-8ace-4463-b764-1f76559aebd0_G2"")." +13774 area-System.Runtime ValueTuple should no longer use EqualityComparer.Default for hashing. As of dotnet/coreclr#7895, `GetHashCode()` on an enum no longer boxes the enum. So, there are no advantages of using `EqualityComparer.Default.GetHashCode(obj)` over `obj?.GetHashCode() ?? 0`. So all of the [code in `ValueTuple`](https://github.com/dotnet/corefx/blob/master/src/System.ValueTuple/src/System/ValueTuple/ValueTuple.cs#L1919) which calls `EqualityComparer.Default` should just use the latter version instead. @karelz, can you please mark this as 'grabbed by community'? Also, there's no need to cc anyone as I'll submit a PR for this within a day or two and tag the relevant people. Thanks. +13775 area-System.Runtime Expose StrongNameKeyPair's FileStream constructor Fixes #11808 +13776 area-System.IO Use ArrayPool buffer in DeflateStream Every DeflateStream allocates an 8K buffer. This PR changes that to use a buffer from the shared ArrayPool. To mitigate concerns around returning a buffer to the pool that's still in use, it tracks active async operations and only returns the buffer when disposing the stream if there aren't any active async operations. That tracking was already in place, I just tweaked it slightly. (@ianhays, there is now some duplication in this checking; previously it was checking the active operation flag separately from using an interlocked to increment it, and I changed that latter portion to throw if the interlocked shows the usage to be invalid, but I left the former in place in case we're really concerned about the order that exceptions get thrown in... if we're not, we should clean that up.) While doing this, I also noticed that we were allocating an unnecessary lock object, so I removed it. We previously removed a similar allocation from the Inflater, but neglected to do so from the Deflater. Fixes https://github.com/dotnet/corefx/issues/12549 Contributes to #5598 cc: @ianhays, @jkotas +13778 area-System.Net kevent signals data available on a socket but ioctl(...,FIONREAD,...) returns 0 There appears to be a race condition in the implementation of kqueues on macOS, such that kevent can wake up for a read on a socket (meaning at least 1 byte of data is available) but an ioctl(..., FIONREAD, ...) call immediately after that completion can still return 0. This can manifest as code like: ```C# await socket.ReceiveAsync(Array.Empty(), 0, 0, SocketFlags.None); int count = socket.Available; ``` getting a count of 0 instead of something larger. +13779 area-System.Runtime Add IdnMapping to System.Runtime contract This change also contains some cleanups after have exposed IdnMapping from corelib +13780 area-System.Reflection Expose remaining reflection apis +13781 area-System.IO Add Lock/Unlock to Unix PAL Implemented both using fcntl and F_SETLK. progress towards https://github.com/dotnet/corefx/issues/5964 @JeremyKuhne +13782 area-System.Runtime Remove projectref to system.runtime Fixes #11680 +13783 area-System.Security Some RSA members not virtual These should all be virtual not abstract. ``` public abstract class RSA : AsymmetricAlgorithm { public abstract byte[] Decrypt(byte[] data, RSAEncryptionPadding padding); public abstract byte[] Encrypt(byte[] data, RSAEncryptionPadding padding); protected abstract byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); protected abstract byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm); public abstract byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); public abstract bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ``` also ``` public abstract class ECDsa : AsymmetricAlgorithm { protected abstract byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); protected abstract byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm); ``` +13784 area-System.Reflection Two members missing virtual @danmosemsft commented on [Thu Nov 17 2016](https://github.com/dotnet/coreclr/issues/8190) These should be virtual like Desktop ``` public abstract class Type : MemberInfo, IReflect { public virtual bool IsEnum { get; } public virtual bool Equals(Type o); } ``` --- @danmosemsft commented on [Thu Nov 17 2016](https://github.com/dotnet/coreclr/issues/8190#issuecomment-261409151) Uh, this should be in CoreFX .. +13785 area-System.Runtime Add VB 15 to System.ValueTuple description. +13786 area-System.Security Add FeedbackSize to SymmetricAlgorithm Fixes #12368 +13787 area-System.Security Make abstract methods virtual per ns20 Fixes #13783 +13788 area-Serialization Port PR #11752 from release/1.1.0 to master. Port PR #11752 from release/1.1.0 to master. Support text.Mapping being SpecialMapping when using ReflectionBased Serializer。 Fix #11917 @shmao @zhenlan @mconnew +13793 area-System.Security Adding ExtendedProtectionPolicyTypeConverter to netstandard2.0 Fixes #13559 cc @danmosemsft @joperezr @stephentoub @AlexGhiondea +13794 area-System.Security CGI error in azure when using HttpClient with ServerCertificateCustomValidationCallback in Azure Can't post to an API using client certificate with custom certificate validation from my backend when upgradring to netcore 1.1. This works absolutely fine locally and it works when posting to an https endpoint that has a cert signed by a trusted CA. Worth mentioning is that this worked with the 1.1 preview. Now I get this once deployed to azure: The specified CGI application encountered an error and the server terminated the process. The code: X509Certificate2 cert = ... read from store var handler = new HttpClientHandler(); handler.ClientCertificates.Add(cert); handler.ServerCertificateCustomValidationCallback += (message, certificate2, arg3, arg4) => true; var httpClient = new HttpClient(handler); await httpClient.PostAsync(theUrl, theContent); Then it just dies, nothing in the logs. Any ideas? +13795 area-System.Runtime Objects deep clone support "There is very common problem - ""deep clone"" of objects (create exact copy of object with different instances of cloned objects including any nested references). There is no support for this common task in standard libraries. One widely used workaround is the serialization and deserialization of object using built-in serialization classes. But this workaround is suffering from poor performance and is example of wrong using of tool when right tool is absent." +13798 area-System.Net Disable SSLv3 default test on older libcurls libcurl prior to v7.39 allows SSLv3 by default. Since we've switched our defaults to accepting whatever the platform defaults are, this commit disables our SSLv3-disabled-by-default test on libcurl versions earlier than 7.39. +13799 area-Meta ByteStreamMessageEncoder? What is the plan for System.ServiceModel.Channels.ByteStreamMessageEncoder to get to .NET Core? +13800 area-System.Runtime Proposal: Make it easier to use StringComparison & StringComparer with GetHashCode. ## Proposed API 1. Add API to convert a `StringComparison` to a `StringComparer`, to avoid bunch of switch-statements in user code (see 'Motivation' section below). 2. Add `string.GetHashCode(StringComparison)` API, to make it easier/more discoverable to get the culture-dependent, case-insensitive, etc. hash of a string. Currently, you have to do `StringComparer.XXX.GetHashCode(str)`, which is verbose & hard to find. ```c# public class StringComparer { public static StringComparer FromComparison(StringComparison comparisonType); } public sealed class String { public int GetHashCode(StringComparison comparisonType); } ``` ### Motivation If someone has a variable comparison they don't have to do a bunch of switch-cases (we'll do them instead): ```c# public static StringComparer FromComparison(StringComparison comparisonType) { switch (comparisonType) { case StringComparison.Ordinal: return StringComparer.Ordinal; case StringComparison.OrdinalIgnoreCase: return StringComparer.OrdinalIgnoreCase; ... } } ``` For more background: See @stephentoub's suggestion in https://github.com/dotnet/corefx/issues/8034#issuecomment-261519913 cc @justinvp @Elion +13801 area-System.Drawing Drawing primitives cleanup These are tiny commits to make it easier to just undo one during review. They should definitely be squashed into one. Remove unused using directives. Remove unused constants Assert on impossible value on first obtaining, rather than after it should have been used. Remove `unchecked` context when can't overflow. (Left some that match with neighbouring lines). Make init-only fields `readonly`. Consistently use expression bodies on single-expression members. Use string interpolation in `ToString()` methods. Remove some redundant casts where the result is clear. Remove unnecessary qualifiers and make internal fields `private` when only accessed privately. Move declaration of variables to where they are initialised. +13803 area-Serialization Remove [SecureSafeCritical] and [SecurityCritical] in System.Private.DataContractSerialization Removed usage of both [SecureSafeCritical] and [SecurityCritical] as well as removing unused references where it seemed appropriate. @shmao Fix #13190 +13804 area-System.Globalization Fold the System.Globalization.Extensions contract to System.Runtime.Extensions System.Globalization.Extensions became very tiny contract and it make sense to fold it to System.Runtime.Extensions with the rest of the related types moved there. this was Wes and jkotas ask +13805 area-System.Reflection Fix some System.Reflection.Tests failing Fix some System.Reflection.Tests failing when float separator of Current Culture is not point char (.) +13806 area-System.IO System.IO.File.Copy() provides an incorrect error message when destination directory does not exist "**Problem:** System.IO.File.Copy() provides an incorrect error message when destination directory does not exist **Proposed solution:** Edit https://github.com/dotnet/corefx/blob/c55435befeb372707558a5c441b3c64bf243948f/src/Common/src/System/IO/Win32Marshal.cs#L61 to check whether it's the source or dest path that doesn't exist when creating an error message. **Problem description from colleague's email** My debugging moment of the day today was brought to me by a bad .NET exception message. Running the following code which copies an existing file into a dir that doesn’t exist: var src = @""c:\Exists\train.log""; var dest = @""c:\DoesntExist\train.log""; File.Copy(src, dest, true); And you get a nice error message out: DirectoryNotFoundException: Could not find a part of the path 'c:\Exists\train.log'. Hey, what the who? Changing dest to an actual path works like a champ. (Note that if you hit an access denied on the dest, the exception text is correct.) ***Investigation into source code*** I believe the exception was thrown from here: https://github.com/dotnet/corefx/blob/c55435befeb372707558a5c441b3c64bf243948f/src/System.IO.FileSystem/src/System/IO/Win32FileSystem.cs#L19 And generated by this win32 to exception converter: https://github.com/dotnet/corefx/blob/c55435befeb372707558a5c441b3c64bf243948f/src/Common/src/System/IO/Win32Marshal.cs#L61 The problem appears to be that the win32 error code doesn’t distinguish between src and tgt paths not existing, and the exception generator assumes it’s the source. Oops. " +13807 area-System.IO revert TextWriter virtual This was changed from virtual, which is a breaking change. ``` public abstract class TextWriter : MarshalByRefObject, IDisposable { public abstract void Write(char value); } ``` +13808 area-System.Runtime Two interop methods missed These are in standard but didn't make it into https://github.com/dotnet/corefx/pull/13479. ``` namespace System.Runtime.InteropServices { public static class Marshal { public static string PtrToStringAuto(IntPtr ptr, int len); } ``` +13809 area-Serialization Area-Serialization Sprint 110 The issue is for tracking issues to be done in sprint 110 (due by 12/09/2016). +13811 area-System.Runtime Port Marshal.PtrToStingAuto PtrToStringAuo(System.IntPtr, System.Int32) was missing. This change ports that API and add a test case for it. @danmosemsft @stephentoub @yizhang82 @jkotas +13812 area-Infrastructure Dev/eng merge from master This updates dev/eng with the latest from master. Also using it to test dev/eng CI. @ericstj @mellinoe @ellismg +13813 area-System.Net HttpClient - Create synchronous versions of HTTP calls "Currently the HttpClient only offers async HTTP calls GetAsync, PostAsync, PutAsync etc... When calling from synchronous code it becomes necessary to break to mix async and synchronous code which breaks with best practice and leaves the developer unsure if a "".Result"" may result in deadlock. I suggest we create synchronous versions for all HTTP calls on the client. " +13814 area-System.Security System.Net.Security.SslStream error on AuthenticateAsClientAsync Since the upgrade from ASP.NET Core 1.0.1 to 1.1.0, my application breaks on AuthenticateAsClientAsync, which is used in MailKit.SmtpClient.Connect by @jstedfast The only feedback the appication gives is An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in System.Windows.ni.dll I'm connecting to smtp.sendgrid.net +13816 area-System.Runtime Relax Array.Copy to only require that source is assignment-compatible with destination "Note that this only affects the case where the destination element type is a valuetype. Since arrays of enums of the same underlying types are assignment compatible (from CLR point of view), it is easy to fall into a trap where one array would be assignable to another, but not ""copyable"" form the CopyTo prospective. That results in issues as in https://github.com/dotnet/corefx/issues/2241 It seems reasonable for the CopyTo to allow assignment-compatibile copying for enums and underlying types. Please reactivate https://github.com/dotnet/corefx/issues/2241, when this is fixed (or rejected)" +13817 area-System.Runtime Add tests for Marshal.SecureStringTo* functions Fixes #13522 +13821 area-System.Net Move NTAuthentication to Common location for re-use in Mail. This solution seems to be the best option to solve the issue #13364 for release before netstandard2.0. Designing a new public surface area for authentication protocols can be an independent project now, without being time sensitive for netstandard2.0 release. cc @karelz @CIPop @davidsh @stephentoub @weshaggard +13822 area-System.Runtime String iterator over code points (and a corresponded codepoint struct) "```C# foreach (codepoint c in ""😀🙃💩"".Codepoints){ // c becomes '😀', '🙃', '💩', respectively } ```" +13824 area-System.Globalization Proposal: Better API for StringInfo.GetTextElementEnumerator To get text elements from a `string`, you can currently use `System.Globalization.StringInfo.GetTextElementEnumerator`: ```c# public class StringInfo { public static TextElementEnumerator GetTextElementEnumerator(string str); public static TextElementEnumerator GetTextElementEnumerator(string str, int index); } public class TextElementEnumerator : IEnumerator { public bool MoveNext(); public object Current { get; } public string GetTextElement(); public int ElementIndex { get; } public void Reset(); } ``` Notice that `TextElementEnumerator` is a (non-generic) enumerator, not enumerable, so it can't be used in a `foreach` or in LINQ or pretty much any other collection-related operation. To use it, you write code like: ```c# var textElementEnumerator = StringInfo.GetTextElementEnumerator(s); while (textElementEnumerator.MoveNext()) { string textElement = textElementEnumerator.GetTextElement(); // process textElement here } ``` This makes the API unfamiliar and inconvenient to use. I propose that a new API based on `IEnumerable` should be added. ## Proposed API ```c# class StringInfo { public static IEnumerable GetTextElements(string str); public static IEnumerable GetTextElements(string str, int index); } ``` The new methods work like the old methods, except that they return generic enumerable instead of enumerator. ## Usage The new API could be used just like any other `IEnumerable`, e.g.: ```c# foreach (var textElement in StringInfo.GetTextElementEnumerator(s)) { // process textElement here } ``` ## Open questions * Returning `IEnumerable` means information about `ElementIndex` is lost. Is that information useful enough to use something like `IEnumerable<(string textElement, int index)>` instead? (Possibly using a custom `struct` instead of a tuple.) * Each text element `string` is a substring of the input `string`. Would it be worth waiting for spans and use `IEnumerable>` instead? * Returning `IEnumerable` requires allocating that `IEnumerable`. Would it be worth to return struct enumerable with struct enumerator instead, which would avoid the allocation when used in `foreach`? +13827 area-System.Xml XsltCompiler.Tests project fails many tests when UI language is not ENU I have many failed tests in next projects. msbuild.err ``` 541:5>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Collections.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Collections\tests\System.Collections.Tests.csproj] 541:6>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Collections.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Collections\tests\System.Collections.Tests.csproj] 629:4>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Globalization.Extensions.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Globalization.Extensions\tests\System.Globalization.Extensions.Tests.csproj] 780:3>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Private.Uri.Functional.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Private.Uri\tests\FunctionalTests\System.Private.Uri.Functional.Tests.csproj] 822:2>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'XsltCompiler.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Private.Xml\tests\Xslt\XsltCompiler\XsltCompiler.Tests.csproj] 923:5>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Runtime.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Runtime\tests\System.Runtime.Tests.csproj] 1017:5>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Threading.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Threading\tests\System.Threading.Tests.csproj] 923:6>C:\Users\Alex\Documents\Home\corefx\Tools\tests.targets(254,5): error : One or more tests failed while running tests from 'System.Runtime.Tests' please check log for details! [C:\Users\Alex\Documents\Home\corefx\src\System.Runtime\tests\System.Runtime.Tests.csproj] ``` Is it normal? +13828 area-System.Collections Expose ConcurrentDictionary GetOrAdd/AddOrUpdate overloads in netcoreapp1.1 Port #1783 from future to master. Contributes to #2869. I cherry-picked (and slightly tweaked) the two relevant commits from the future branch: - fffd49fe1c35544b388322608d1e16374f3832e6 (fixed the conflict due to moved test file) - ee5906f35222b80a729541683f76f43fe2c49204 (updated to use current `throw null;` style) I then added a third commit that cleaned some things up, extracted tests, and exposed the APIs in netcoreapp1.1. cc: @stephentoub +13832 area-System.Globalization InstalledUICultureTest fail if Windows language is changed I have Windows 10 (non english) after I changed it language to English (USA) and restart it, my Windows UI interface changed to english. After that `System.Globalization.Tests.CultureInfoMiscTests.InstalledUICultureTest` in `corefx\src\System.Private.Xml\tests\Xslt\XsltCompiler\XsltCompiler.Tests.csproj` project failed. I think this test is wrong because it will fail if window language is changed after installation. ```cs Assert.Equal(CultureInfo.CurrentUICulture, CultureInfo.InstalledUICulture); ``` +13833 area-System.Net Outerloop test failures due to SslProtocols.Default addition @danmosemsft, @cipop, we're seeing a bunch of outerloop test failures, I believe as a result of this change: https://github.com/dotnet/corefx/pull/13745 e.g. ``` System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachSupportedProtocol_Success(protocol: Default) [FAIL] System.NotSupportedException : The requested security protocol is not supported. Stack Trace: D:\j\workspace\outerloop_win---097a300f\src\Common\src\System\Net\SecurityProtocol.cs(26,0): at System.Net.SecurityProtocol.ThrowOnNotAllowed(SslProtocols protocols, Boolean allowNone) D:\j\workspace\outerloop_win---097a300f\src\System.Net.Security\src\System\Net\Security\SslStream.cs(122,0): at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) D:\j\workspace\outerloop_win---097a300f\src\System.Net.Security\src\System\Net\Security\SslStream.cs(241,0): at System.Net.Security.SslStream.<>c__DisplayClass32_0.b__0(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) D:\j\workspace\outerloop_win---097a300f\src\System.Net.Security\src\System\Net\Security\SslStream.cs(241,0): at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) D:\j\workspace\outerloop_win---097a300f\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(150,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---097a300f\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(46,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` I think the problem stems from this line: https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/Common/tests/System/Net/SslProtocolSupport.cs#L32 ```C# if ((protocol & SupportedSslProtocols) != 0) ``` and that it should be changed to something like: ```C# if ((protocol & UnsupportedSslProtocols) == 0) ``` Otherwise, the new Default that was added (which is Ssl3 | Tls) ends up getting returned as part of the SupportedSslProtocolsTestData iterator, and then the tests fail because Ssl3 is explicitly disallowed. +13834 area-System.Numerics New System.Math decimal versions First thing to note is that I already submitted [another issue](https://github.com/dotnet/corefx/issues/6308) on similar lines, which was reviewed and (not completely) rejected. I have taken all that feedback into account to make this new proposal, which only consists in the following inclusions: ```C# public const decimal PI_dec = 3.1415926535897932384626433832m; public const decimal E_dec = 2.7182818284590452353602874713m; public decimal Pow(decimal x, decimal y); public decimal Sqrt(decimal d); ``` The algorithms of the new `Pow`/`Sqrt` overloads are expected to exclusively rely on the `decimal` type (i.e., no conversion to/from `double`/`float` at any point). In fact, I have recently finished the first version of an open source library (NumberParser) precisely including two methods fulfilling that requirement. Note that, additionally to [its properly-commented C# source code](https://github.com/varocarbas/FlexibleParser/tree/master/all_code/NumberParser/Source), I also wrote [detailed explanations about the implementation of those two methods](https://varocarbas.com/fractional_exponentiation). I am even planning to write much more explanations about this whole code within the short term. Anyone can use this library and test the aforementioned methods (```Math2.PowDecimal```/```Math2.SqrtDecimal```) to get a feeling of what the proposed new overloads might deliver. In any case, the following ideas should be clear: - These methods rely on a custom class (```Number```), whose main goal is allowing to deal with very big ranges of values. It is certainly much less efficient than the native ```decimal```/```double``` types. - In case of deciding to go ahead with this proposal and additionally to perform the aforementioned adaptation, I am also planning to further optimise these algorithms. Nevertheless and even in the best scenario, the new ```decimal``` version is likely to be slower than the ```double``` one (perhaps also in case that it would also include the corresponding conversions from/to ```decimal```, although I am still not sure about this). Its strongest point will be accuracy, rather than speed. - The current version of this approach accounts only for the first 25 decimal digits of the exponent (note that the `decimal` type can deal with up to 28). In principle, I don’t see this as a problem, although I look forward to your opinions on this front. In summary, the new overloads are expected to avoid the floating-point/limited-precision problems associated with converting from/to ```double```; to deliver accurate results (up to `5e-28m`) not constrained by simplifications/floating-point restrictions. As highlighted in the review of my previous proposal, there is a backwards-compatibility problem associated with adding these new overloads without any further modification: calls relying on implicitly convertible types will stop working. For example: ```System.Math.Pow(1, 10) ``` (i.e., two ```int``` variables implicitly converted to ```double```) works fine now, but will not work after just adding the proposed ```decimal``` overload. There are two ways to address this problem: - Including additional overloads with all the implicitly convertible types, consisting in simple calls to the `double` ones. For example: ```C# public static double Pow(int x, int y) { return Pow((double)x, (double)y); } ``` - Adding two new methods rather than overloads to existing ones (e.g., ```PowExact```/```SqrtExact```). In principle, the first alternative seems better, although it would imply accounting for a quite relevant number of scenarios (e.g., `Pow(int x, int y)`, `Pow(int x, long y)`, `Pow(int x, ulong y)`, etc.). +13836 area-System.Net Fix Supported/UnsupportedSslProtocols tests with SslProtocols.Default Fixes https://github.com/dotnet/corefx/issues/13833 cc: @danmosemsft, @cipop +13837 area-Meta 100% CPU load After upgrade to 1.1.0 I have an issue then dotnet process start to load CPU on 100%. I have a pretty standard several application where and had no problem but not from time to time it goes in 100% and hangs whole server. After killing dot net it starts again and works pretty normal. Also this issue is happened when I (nobody) do not web apps. When I work with this webapps all pretty normal but then I do not touch them for several hours it starts loading CPU +13839 area-System.Linq Test DebuggerTypeProxy for ExpandoObject's keys and values and throw on null Throw if null is passed to the constructor of either of these types. Contributes to #13840 Also test these types thoroughly, beyond that necessary to confirm this fix. +13840 area-System.Linq DebuggerTypeProxies within S.L.Expressions and S.Dynamic should throw on null. Most such types just trust the debugger to pass in a valid instance, while `ExpandoObject.KeyCollectionDebugView` and `ExpandoObject.ValueCollectionDebugView` assert that it isn't null. Since these are supplied from outside the library they should not trust the debugger to do the right thing quite that much. (Compare with the S.Collections.Generic debugger view types, which throw on null). +13841 area-System.Linq Throw null when null is passed to debug proxies. Fixes #13840 with the exception of two types covered in #13839 so the fix can live with appropriate tests. +13842 area-System.Linq Add Enumerable.SkipLast, TakeLast to get the last N elements of a sequence. "## Background Currently, Linq does not offer an API for getting the last N elements of a sequence. This has resulted in no less than [5 StackOverflow questions](https://www.google.com/search?q=skip+last+n+elements+of+enumerable&rlz=1CAACAH_enUS678US678&oq=skip+last+n+elements+of+enumerable&aqs=chrome..69i57.4760j0j7&sourceid=chrome&ie=UTF-8) (with ~300 votes) popping up as the first result when you Google ""skip last n elements of enumerable."" ## Proposal We should add `SkipLast` and `TakeLast` to Enumerable, which will skip/take the last N elements of the sequence, respectively. If there are less than N elements, `SkipLast` will return an empty sequence, and `TakeLast` will return a sequence with contents equivalent to the original enumerable. ```cs namespace System.Linq { public static class Enumerable { public static IEnumerable SkipLast(this IEnumerable source, int count); public static IEnumerable TakeLast(this IEnumerable source, int count); } public static class Queryable { // Lots of existing methods for parity with Enumerable public static IQueryable SkipLast(this IQueryable source, int count); public static IQueryable TakeLast(this IQueryable source, int count); } } ``` ### Remarks - In `SkipLast` instead of evaluating the whole thing at once, we will read in the first `count` items into a circular buffer. Then we will interleave between yield returning the oldest element & overwriting that with a new one. - In `TakeLast` we will still evaluate the whole sequence during the first iteration, but again maintain a circular buffer of length `count` and overwrite the oldest elements with newer ones. ### Original (incorrect) - Implementation remarks These overloads will have subtly different semantics from `Skip` and `Take`. Since for lazy enumerables we can't determine the count of the sequence in advance, we will have to capture it into an array during our first iteration (like `Reverse` does today), then skip/take the last N items from that array between yields. ```cs public static IEnumerable SkipLast(this IEnumerable source, int count) { var array = source.ToArray(); for (int i = count; i < array.Length; i++) { yield return array[i]; } } ``` As a result, these will have different outputs: ```cs int[] a = { 1, 2, 3, 4, 5 }; foreach (var item in a.Skip(3)) { a[4] = 10; Console.WriteLine(item); // 4 10 } a[4] = 5; foreach (var item in a.TakeLast(2)) { a[4] = 10; Console.WriteLine(item); // 4 5 } ``` Another consequence is that this will lead to more allocations for lists/arrays. Perhaps this is worth it for added convenience, though." +13843 area-System.Linq System.Dynamic.BinaryOperationBinder Tests Add tests exercising the `BinaryOperationBinder` class. Covers the operations that can be covered directly with the C# binder (not power or extensions) along with forcing through some invalid operations to test the exception. +13844 area-System.Linq System.Dynamic.CallInfo tests Tests on operating directly on `CallInfo` objects. Mainly concentrating on validation. +13846 area-System.Globalization "Two System.Globalization.Tests fails for ""ur-IN"" culture on Windows Server 2012" "Two System.Globalization.Tests fails for ""ur-IN"" culture on Windows Server 2012." +13847 area-System.IO System.IO.FileSystem.Tests project fail ValidFileOptions test if FileOptions contains Encrypted flag I think on my Windows Server 2012 creating encrypted files or folder is disabled by group politic or other rights restriction. So `System.IO.FileSystem.Tests` project fail `ValidFileOptions` test if `FileOptions` contains `Encrypted` flag. +13848 area-System.Runtime S.R.CS.Unsafe: Add CopyBlock/CopyBlockUnaligned and InitBlock/InitBlockUnaligned for ref byte Adds `CopyBlock`/`CopyBlockUnaligned` to `Unsafe` for `ref` parameters as discussed in https://github.com/dotnet/corefx/issues/13427 Implements the generic versions of this, if this is not wanted, it can be changed to e.g. `ref byte`. Caller must know NOT to call this with a `T` containing references. @jkotas @AtsushiKan @benaadams @jamesqo @omariom **UPDATE**: For API review, basically the choice is whether to add any of the below or perhaps both. Or in any shape that FXDC finds suitable. The below has been chosen to fit existing API definitions. The functionality is needed for `Span` and other `ref` based scenarios for e.g. optimal performance. ```csharp void CopyBlock(ref T destination, ref T source, int elementCount); void CopyBlockUnaligned(ref T destination, ref T source, int elementCount); ``` OR ```csharp void CopyBlock(ref byte destination, ref byte source, uint byteCount); void CopyBlock(ref byte destination, ref byte source, UIntPtr byteCount); void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount); void CopyBlockUnaligned(ref byte destination, ref byte source, UIntPtr byteCount); ``` I will change the implementation once I get word of the result of the API review. If needed I can create a separate issue for API review, but since this change is rather small I am hoping to keep it here. Personally, I think adding both would be great. Not the least since the generic version covers the most common use case for the work I do, and because it fits `Span`. +13849 area-System.Security System.Security.Cryptography.Algorithms.Tests fail ExpectedSignature_SHA1_384 test On my Windows 2012 server `System.Security.Cryptography.Algorithms.Tests` project fail `ExpectedSignature_SHA1_384` test with exception `Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Requested operation is not supported`. +13850 area-System.Security System.Security.Cryptography.Cng.Tests fails two tests On my Windows 2012 server `System.Security.Cryptography.Cng.Tests` project fails two tests: `ExpectedSignature_SHA1_384` and `RSACng_Ctor_UnusualKeysize_384` with the same exception `Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Requested operation is not supported`. +13851 area-System.Linq System.Dynamic.UnaryOperationBinder Tests Add tests exercising the `UnaryOperationBinder` class. Covers the operations that can be covered directly with the C# binder (not extensions) along with forcing through some invalid operations to test the exception. +13853 area-System.Threading Add additional AsyncLocal test coverage Adds coverage for optimizations in https://github.com/dotnet/coreclr/pull/8216 cc: @kouvel +13854 area-System.Memory Bring SpanExtensions/ReadOnlySpanExtensions up to CoreClr parity. This is a necessary step to removing Span from corefxlab. corefxlab cannot implement these from outside the surface area. +13855 area-System.Security Adding missing member of CspParameters Fixes #12362 cc: @bartonjs @steveharter @danmosemsft @weshaggard KeyPassword can't be tested by unit tests, and it seems like it can't be easily tested in Desktop either, which means implementation might not work for .NET Core, so throwing PNSE when called. +13856 area-System.Threading Improve AsyncLocal throughput and memory usage (port to Desktop) Consider porting https://github.com/dotnet/coreclr/pull/8216 and https://github.com/dotnet/coreclr/commit/9bc06f7e534a1989911d795528737d767c2b408d to Desktop +13857 area-System.Collections "Consider adding a ""slim"" dictionary type" Inspired by seeing: https://github.com/dotnet/coreclr/pull/8216 We've come across many cases in ASP.NET where we want to expose something like the `IDictionary<,>` contract, but we know that the number of items used with it will always be a small number (N < 10). In some cases, potentially hundreds of these may be created for a single request, and so we want them to be pretty slim. We've created a few specialized types of our own to meet this need, but the canonical case is something like [AttributeDictionary](https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewFeatures/AttributeDictionary.cs). There's a ton of boilerplate associated with implementing `IDictionary<,>` and so we're not thrilled with implementing one of these each time we want to optimize something. We're also not necessarily married to `IDictionary<,>` as the primary contract. That's what there is, so that's what we're using to avoid reinventing the wheel (while reimplementing the wheel). In general we care about get/set values and enumeration in particular being fast for a small number of items. +13858 area-System.Runtime fix param name Parameter name changes are breaking. It should be `len`, not `length`, to match desktop. @shrah +13859 area-System.Security Implement the 2 new enum modes on PaddingMode This is the code port **only**, I am working on tests next, +13860 area-System.Runtime Fix virtual on Type Fix #13784 @joperezr +13862 area-System.Security Add SignatureDescription source and tests. Modifies ported tests from Mono and ported source from Desktop to work in Core and follow our style. resolves https://github.com/dotnet/corefx/issues/12302 @steveharter @AlexGhiondea @joperezr +13863 area-System.Collections Add method KeyedCollection<,>::TryGetValue(TKey, out TItem) "Fixes #4690 ""Add bool TryGetValue(TKey, out TItem) method to a KeyedCollection<,> class""" +13864 area-System.Linq Possible LINQ expression compiler bug? "Consider the following repro code distilled from a customer-affecting EF issue: ```c# using System; using System.Linq; using System.Linq.Expressions; using System.Reflection; namespace StackSpiller { internal class Program { public static void Main(string[] args) { var guidToStringMethodInfo = typeof(Guid) .GetTypeInfo().GetDeclaredMethods(""ToString"") .Single(m => !m.GetParameters().Any()); var customerCtorInfo = typeof(Baz) .GetTypeInfo().DeclaredConstructors.Single(); var guidConstant = Expression.Constant(Guid.NewGuid()); var goodExpressionTree = Expression.Lambda>( Expression.New( customerCtorInfo, Expression.Call( Expression.TryCatch( guidConstant, Expression.Catch(typeof(Exception), guidConstant)), guidToStringMethodInfo), Expression.Constant(""Foo""))); var goodLambda = goodExpressionTree.Compile(); Console.WriteLine(goodLambda()); var badExpressionTree = Expression.Lambda>( Expression.New( customerCtorInfo, // ctor arguments are re-ordered Expression.Constant(""Foo""), Expression.Call( Expression.TryCatch( guidConstant, Expression.Catch(typeof(Exception), guidConstant)), guidToStringMethodInfo))); var badLambda = badExpressionTree.Compile(); Console.WriteLine(badLambda()); } private class Baz { public Baz(string a, string b) { } } } } ``` which produces: ``` StackSpiller.Program+Baz Unhandled Exception: System.NotSupportedException: TryExpression is not supported as a child expression when accessing a m ember on type 'System.Guid' because it is a value type. Construct the tree so the TryExpression is not nested inside of th is expression. at System.Linq.Expressions.Compiler.StackSpiller.RequireNotRefInstance(Expression instance) at System.Linq.Expressions.Compiler.StackSpiller.RewriteMethodCallExpression(Expression expr, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.RewriteExpression(Expression node, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.ChildRewriter.Add(Expression node) at System.Linq.Expressions.Compiler.StackSpiller.ChildRewriter.AddArguments(IArgumentProvider expressions) at System.Linq.Expressions.Compiler.StackSpiller.RewriteNewExpression(Expression expr, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.RewriteExpression(Expression node, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.RewriteExpressionFreeTemps(Expression expression, Stack stack) at System.Linq.Expressions.Compiler.StackSpiller.Rewrite[T](Expression`1 lambda) at System.Linq.Expressions.Expression`1.Accept(StackSpiller spiller) at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda) at System.Linq.Expressions.Expression`1.Compile(Boolean preferInterpretation) at System.Linq.Expressions.Expression`1.Compile() at StackSpiller.Program.Main(String[] args) in C:\Dev\github\StackSpiller\Program.cs:line 52 ``` The only difference in the two expressions is the order in which the constructor args are passed when creating the NewExpression. Is this a bug?" +13865 area-Infrastructure Only publish if packages exist Port https://github.com/dotnet/corefx/commit/8c2b67e16855f4c29f1ff880cd0c09388b9c38b4 to release/1.1.0 /cc @gkhanna79 @chcosta @weshaggard +13866 area-System.Security Port PKCS1MaskGenerationMethod type to netstandard2.0 Fixes #12304 cc @danmosemsft @bartonjs @steveharter +13868 area-System.Net SmtpClient NTLM and Kerberos testing Per offline SCRUM discussion: add e2e NTLM/Kerberos testing for SmtpClient authentication. Example: https://github.com/dotnet/corefx/blob/master/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamKerberosTest.cs /cc: @karelz @Priya91 +13869 area-System.Runtime Add methods to StringBuilder to append ReadOnlySpan ## Background It seems logical that we should support appending `Span` and `ReadOnlySpan` to a StringBuilder, since the point of both data types is to reduce allocations. The only way to do this with the current APIs is to loop through the span one char at a time and call Append on each of them, which is pretty slow. ## Proposed API ```cs namespace System.Text { public sealed class StringBuilder { // Span is implicitly convertible to ReadOnlySpan public StringBuilder Append(ReadOnlySpan value); } } ``` cc @jkotas, @KrzysztofCwalina, @justinvp +13871 area-Infrastructure System.Threading.Tests AV (System.ExecutionEngineException) Contact me internally for the output of `.dump /mA ...` and `.dumpcab /a c:\threadAV.cab`. ``` 0:012> !pe Exception object: 0000025ae42011e0 Exception type: System.ExecutionEngineException Message: InnerException: StackTrace (generated): StackTraceString: HResult: 80131506 0:012> | . 0 id: 4eb0 attach name: S:\c1\bin\tests\AnyOS.AnyCPU.Debug\System.Threading.Tests\default.netcoreapp1.1\CoreRun.exe ``` +13872 area-System.Security Add missing CryptoStream::FlushAsync The overrides below are missing from Core implemementations. This is not an API breaking change. is it intentional? ``` public abstract class RSA : AsymmetricAlgorithm { public override string KeyExchangeAlgorithm { get; } public override string SignatureAlgorithm { get; } public override void FromXmlString(string xmlString); public override string ToXmlString(bool includePrivateParameters); } public sealed class RSACryptoServiceProvider : RSA, ICspAsymmetricAlgorithm { public override string KeyExchangeAlgorithm { get; } public override string SignatureAlgorithm { get; } public override byte[] DecryptValue(byte[] rgb); public override byte[] EncryptValue(byte[] rgb); } public abstract class ECDsa : AsymmetricAlgorithm { public override string KeyExchangeAlgorithm { get; } public override string SignatureAlgorithm { get; } } public abstract class DSA : AsymmetricAlgorithm { public override void FromXmlString(string xmlString); public override string ToXmlString(bool includePrivateParameters); } public sealed class DSACryptoServiceProvider : DSA, ICspAsymmetricAlgorithm { public override string KeyExchangeAlgorithm { get; } public override string SignatureAlgorithm { get; } } public class CryptoStream : Stream, IDisposable { public override Task FlushAsync(CancellationToken cancellationToken); } public sealed class AesManaged : Aes { public override int FeedbackSize { get; set; } ``` @steveharter @bartonjs +13874 area-System.Net Updating System.Net.* refs based on netstandard. Fixes #13372. Diffing all System.Net.* contracts with standard/ref and making corresponding changes, including ordering which simplifies future comparisons. Remaining API implementations are tracked by: #12134 #12460 @davidsh, @karelz, @danmosemsft PTAL. /cc: @safern @geoffkizer +13875 area-System.Net Port System.Net.WebUtility missing members Fixes #12142 cc @danmosemsft @AlexGhiondea @stephentoub @geoffkizer +13876 area-Infrastructure Dev/eng tools Spiking out a project to build tasks from CoreFx. I need to plug this into the build/targets yet. This will let us do fast iteration on corefx without waiting for buildtools. I started by bringing over @chcosta's change from https://github.com/chcosta/buildtools/blob/18c1a1dab1bc568d33fb1ab9c0b8d209822267ce/src/Microsoft.DotNet.Build.Tasks/FindBestConfiguration.cs /cc @weshaggard @chcosta @mellinoe +13878 area-System.Linq Have interpreter completely match compiler for thrown non-exceptions. "Interpreter can throw and catch reference types not derived from Exception. If the exception escapes the expression it will be a `RuntimeWrappedException`. Provides a better fix to #5898 than #13408. At the beginning of the discussion of #5898 the idea that ""Possibly something could be done by manipulating `RuntimeWrappedException`"" was suggested, but not much came from that idea as that type wasn't available within corefx. Having the interpreter throw `InvalidOperationException` for non-exceptions and just accepting its inability to catch them was the best that could be done, so #13408 did that. However, in the meantime #11930 had made `RuntimeWrapperException` available to use. And with it the interpreter can be made to match the compiler entirely. The compiler also seems to unwrap any RWE so there isn't a need to track whether an RWE had been created internally or not (someone would have to be very foolish to only realise that after writing code to do such tracking and then having to delete it again…). So, with this PR both interpreter and compiler are akin in: 1. Being able to throw any reference type. 2. Being able to catch any reference type. 3. Being able to catch a non-exception reference type from a call into another assembly, whatever that assembly's `RuntimeCompatibilityAttribute` settings. 4. If a `RuntimeWrapperException` originating from outside the expression is thrown within it, they can catch the wrapped object. 5. If a non-exception is thrown by the expression, it can be caught in the invoking code as a `RuntimeWrapperException`. cc @VSadov @bartdesmet @svick (The only remaining difference in exception handling between the two is now that the compiler can't do fault and filter blocks)." +13881 area-System.Numerics Unable to cast object of type 'System.Numerics.BigInteger' to type 'System.Decimal'. "While unit test my project, I got a weird exception. Referenced source ```cs BigInteger bi = new BigInteger(123); decimal d = (decimal)bi; // boooo ``` But in according to [MSDN](https://msdn.microsoft.com/en-us/library/dd268232(v=vs.110).aspx), `System.Numerics.BigInteger` have a explicit cast to `System.Decimal`. but I got `TypeCastException`. why? `project.json` - .NET Standard 1.1 ```json { ""supports"": {}, ""dependencies"": { ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""NETStandard.Library"": ""1.6.1"", ""Newtonsoft.Json"": ""9.0.1"", ""System.Reflection.Emit"": ""4.3.0-preview1-24530-04"", ""System.Reflection.Emit.ILGeneration"": ""4.3.0-preview1-24530-04"", ""System.Reflection.Emit.Lightweight"": ""4.3.0-preview1-24530-04"" }, ""frameworks"": { ""netstandard1.1"": {} } } ``` Reference project is a unit test in [here](https://github.com/composite/ArangoDB.Net). ``` Test name: ArangoDB.Net.Tests.VelocityPack.VPackBuilderTest.AddBigIntegerAsInt Full test name: ArangoDB.Net.Tests.VelocityPack.VPackBuilderTest.AddBigIntegerAsInt Test source: D:\Projects\Github\ArangoDB.Net\Tests\VelocityPack\VPackBuilderTest.cs : 줄 184 Test result: 실패 Test eleapsed time: 0:00:00.098 Result StackTrace: at VelocyPack.Internal.Value.GetNumber() in D:\Projects\Github\ArangoDB.Net\VelocyPack\Internal\Value.cs:line 101 at VelocyPack.VPackBuilder.Set(Value item) in D:\Projects\Github\ArangoDB.Net\VelocyPack\VPackBuilder.cs:line 733 at VelocyPack.VPackBuilder._Appender_74.Append(VPackBuilder builder, Value value) in D:\Projects\Github\ArangoDB.Net\VelocyPack\VPackBuilder.cs:line 63 at VelocyPack.VPackBuilder.AddInternal[T](IAppender`1 appender, T value) in D:\Projects\Github\ArangoDB.Net\VelocyPack\VPackBuilder.cs:line 576 at VelocyPack.VPackBuilder.Add(BigInteger value, ValueType type) in D:\Projects\Github\ArangoDB.Net\VelocyPack\VPackBuilder.cs:line 483 at ArangoDB.Net.Tests.VelocityPack.VPackBuilderTest.AddBigIntegerAsInt() in D:\Projects\Github\ArangoDB.Net\Tests\VelocityPack\VPackBuilderTest.cs:line 187 Result message: Unable to cast object of type 'System.Numerics.BigInteger' to type 'System.Decimal'. ``` **Additional note: `System.Int32` and `System.Int64` too.**" +13882 area-Infrastructure Where is dotnet-bot commands documentation? I want rerun tests for PR but can not find dotnet-bot command for this. Where is dotnet-bot commands description? +13884 area-System.IO Add Transactional support file sytem. Add transactional support for files and directories; +13885 area-System.Security Enable distro agnostic build of System.Security.Cryptography.Native If the FEATURE_DISTRO_AGNOSTIC_SSL is enabled, the System.Security.Cryptography.Native doesn't link to libssl / libcrypto at build time. It uses a shim that opens the libssl shared library with versioned so name specific for the platform and gets all needed API function pointers using dlsym and stores them in global variables. The calls to those APIs are then redirected through these pointers. I have verified that our code doesn't access any data members in structures with layout that can vary based on compilation options of the OpenSSL and that can have variable offset. The only direct access of this kind that we were using, the X509::sha1_hash, was replaced by call to recompute the hash, based on @bartonjs suggestion. There are couple of functions that we use and that don't have to exist in the libssl when it is compiled with particular options. These were handled at the build time before, now I have also added runtime handling of this case. Finally, I have added verification of the System.Security.Cryptography.Native.OpenSsl.so to make sure it doesn't have any undefined symbols. This could happen if someone adds usage of a new OpenSSL API and doesn't add its name to the opensslshim.h. The build fails in this case and lists all the undefined symbols. +13889 area-Infrastructure Update stable dependencies to latest stable This reduces total download of packages. /cc @stephentoub @karajas @weshaggard +13890 area-System.Net Proposal for DNS client and custom DNS queries "In `System.Net.NameResolution` the `DNS` class gives us a simple API to get the host name and addresses by using the internals of Windows or Linux. What is missing is an interface to query actual DNS servers (custom endpoints/ports) and get more information then just the IP or local host name. # Use Case One use case could be accessing service discovery (e.g. Consul) to ask for available services by name via DNS: A local Consul DNS endpoint runs on port 8600 and you'd either query with qtype `SRV` or `A`. To query for a service by name in consul, you use `.service.consul`. Example query and answers with dig asking for the consul service itself: ``` $ dig @127.0.0.1 -p 8600 consul.service.consul SRV ;; QUESTION SECTION: ;consul.service.consul. IN SRV ;; ANSWER SECTION: consul.service.consul. 0 IN SRV 1 1 8300 hostname.node.dc1.consul. ;; ADDITIONAL SECTION: hostname.node.dc1.consul. 0 IN A 127.0.0.1 ``` The SRV answer gives me the port the service instance is running on, the additional answer gives me the IP address. The result can contain multiple instances. # Why another API? There are a few other implementations for .NET today, but none of which are really maintained as far as I know nor do they have support for netstandard1.x. # Proposed API ## Usage Creating a lookup client with different overloads: ``` CSharp // create a client using the dns server configured by your network interfaces var lookup = new LookupClient(); // create a client using a DNS server by IP on default port 53 var lookup = new LookupClient(IPAddress.Parse(""127.0.0.1"")); // create a client using a DNS server on port 8600 var endpoint = new IPEndPoint(IPAddress.Parse(""127.0.0.1""), 8600); var lookup = new LookupClient(endpoint); ``` Using the client to query for standard qtypes: ``` CSharp // query for google.com with qtype ANY DnsQueryResponse result = await lookup.QueryAsync(""google.com"", QueryType.ANY); // qtype A and explicitly setting the qclass of the query DnsQueryResponse result = await lookup.QueryAsync(""google.com"", QueryType.A, QueryClass.IN); // reverse query the host name of an IP Address using arpa DnsQueryResponse result = await lookup.QueryReverseAsync(IPAddress.Parse(""192.168.1.1"")); ``` The result in all cases would contain the response header information, the list of resource records and the question. ## API LookupClient: ``` CSharp public class LookupClient { // dis/enables caching of responses (TTL would be driven by the server's response) bool UseCache { get; set; } public LookupClient(); public LookupClient(params IPEndPoint[] nameServers); public LookupClient(params IPAddress[] nameServers); public LookupClient(DnsMessageHandler messageHandler, ICollection nameServers) public Task QueryAsync(string query, QueryType queryType); public Task QueryAsync(string query, QueryType queryType, QueryClass queryClass); public Task QueryAsync(string query, QueryType queryType, CancellationToken cancellationToken); public Task QueryAsync(string query, QueryType queryType, QueryClass queryClass, CancellationToken cancellationToken); public Task QueryReverseAsync(IPAddress ipAddress); public Task QueryReverseAsync(IPAddress ipAddress, CancellationToken cancellationToken); } // message handler could be implemented with UDP or TCP, or cool channels or what ever ;) public class DnsMessageHandler { public Task QueryAsync(IPEndPoint server, DnsRequestMessage request, CancellationToken cancellationToken); // processes the query and generates the actual data to send to the server public virtual byte[] GetRequestData(DnsRequestMessage request) // processes the raw response data public virtual DnsResponseMessage GetResponseMessage(byte[] responseData) } // the request message public class DnsRequestMessage { public DnsRequestHeader Header { get; } public DnsQuestion[] Questions { get; } } // the request header public class DnsRequestHeader { public DnsHeaderFlag HeaderFlags {get;} public int Id { get; } public DnsOpCode OpCode {get;} public int QuestionCount { get; } public bool UseRecursion {get;} } // Question contains the actual query, used by response and request public class DnsQuestion { public DnsName QueryName { get; } public QueryClass QuestionClass { get; } public QueryType QuestionType { get; } // the response object returned by the lookup client public class DnsQueryResponse { public IReadOnlyCollection Additionals { get; } public IReadOnlyCollection AllRecords public IReadOnlyCollection Answers { get; } public IReadOnlyCollection Authorities { get; } public string ErrorMessage { get; } public bool HasError { get; } public DnsResponseHeader Header { get; } public IReadOnlyCollection Questions { get; } } // see https://tools.ietf.org/html/rfc1035#section-3.2.2 and 3.2.3 public enum QueryType : short { A = 1, NS = 2, ... } // see https://tools.ietf.org/html/rfc1035#section-3.2.4 public enum QueryClass : short { IN = 1, CS = 2, CH = 3, HS = 4 } ``` There are some more types like return codes / errors etc. ### RFC References Base RFC https://tools.ietf.org/html/rfc1035 Request and response header share the same RFC https://tools.ietf.org/html/rfc6895#section-2. But only some fields / flags are used in the request, others in the response. The length is always 12 bytes. ``` 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| OpCode |AA|TC|RD|RA| Z|AD|CD| RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QDCOUNT/ZOCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ANCOUNT/PRCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | NSCOUNT/UPCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ARCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ ``` The request or response data follows the header data... I will not list all the details, only the in my opinion most important qtypes/RRs A: https://tools.ietf.org/html/rfc1035#section-3.4.1 NS: https://tools.ietf.org/html/rfc1035 AAAA: https://tools.ietf.org/html/rfc3596#section-2.2 PTR (for reverse queries): https://tools.ietf.org/html/rfc1035#section-3.3.12 SRV: https://tools.ietf.org/html/rfc2782 MX: https://tools.ietf.org/html/rfc1035#section-3.3.9 TXT: https://tools.ietf.org/html/rfc1035#section-3.3.14 SOA: https://tools.ietf.org/html/rfc1035#section-3.3.13 # Implementation I couldn't help and did a reference/example implementation of the whole thing here: https://github.com/MichaCo/DnsClient.NET. If we come up with a better API which goes into corefx I'm happy to discontinue that project. But I needed the functionality now ;) @CIPop I'm creating this proposal as mentioned in #13613 Thanks, M" +13891 area-Serialization Fix IXmlTextReaderInitializerTest The test failed because in the core, when call XmlDictionaryWriter.CreateTextWriter, it will return an object of XmlDictionaryAsyncCheckWriter, which not implment the IXmlTextWriterInitializer. Update the test code as a simple basic one. The code in the core: ``` public static XmlDictionaryWriter CreateTextWriter(Stream stream, Encoding encoding, bool ownsStream) { XmlUTF8TextWriter writer = new XmlUTF8TextWriter(); writer.SetOutput(stream, encoding, ownsStream); var asyncWriter = new XmlDictionaryAsyncCheckWriter(writer); return asyncWriter; } ``` The code in desktop: ``` static public XmlDictionaryWriter CreateTextWriter(Stream stream, Encoding encoding, bool ownsStream) { XmlUTF8TextWriter writer = new XmlUTF8TextWriter(); writer.SetOutput(stream, encoding, ownsStream); return writer; } ``` Fix #12902 @shmao @zhenlan @mconnew +13892 area-Meta Tracking: Revisit APIs to use Span We just need to wait for `Span` to mature a bit. - #7593 - `Int32.Parse`, `Int32.TryParse` - https://github.com/dotnet/corefx/issues/13892#issuecomment-262382196 - `Parse` on all primitive types (`sbyte.Parse` `byte.Parse` `short.Parse` ... `ulong.Parse`, `DateTime.Parse`, `Guid.Parse`, etc) - #13869 - `StringBuilder.Append` - https://github.com/dotnet/corefx/issues/13892#issuecomment-262576835 - `ImmutableArray.implicit operator ReadOnlySpan()` - https://github.com/dotnet/corefx/issues/7656#issuecomment-231217120 - `string.Split` - https://github.com/dotnet/corefx/issues/12672#issue-183177295 - `Guid.GetBytes(out byte[])`, `Decimal.GetBits(decimal, out byte[])` - https://github.com/dotnet/corefx/issues/12672#issuecomment-253959625 - Look at all methods which take new array (e.g. `out byte[]`) - #14255 - `Encoding.GetBytes` - https://github.com/dotnet/corefx/issues/17281 - `SocketAsyncEventArgs.SetBuffer(Memory)` - https://github.com/dotnet/corefx/issues/13892#issuecomment-287667969 - `Stream.Read/Write[Async]` and `Socket.Send/Receive[Async]` - https://github.com/dotnet/corefx/issues/6740#issuecomment-287684217 - IO APIs - #17378 - `IPAddress` - #18693 - Crypto - #18847 - `ImmutableArray.AsReadOnlySpan()` +13893 area-System.Net Optimize WebUtility.HtmlEncode and WebUtility.HtmlDecode When porting `WebUtility` missing members: ``` csharp public static class WebUtility { public static void HtmlDecode(string value, TextWriter output); public static void HtmlEncode(string value, TextWriter output); } ``` We found that we already had a private method on .NET Core that would do exactly the same as this two members but instead of having a `TextWriter` as the output they have a `StringBuilder`. This members where ported on PR #13875 with a simple solution of just calling the existing private member and writing the result to the `TextWriter output` [Here is the source code](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Net/WebUtility.cs#L55). On PR #13875 we had a large discussion with different solutions. With a conclusion that the best one is @jkotas's solution. cc @danmosemsft @AlexGhiondea +13894 area-System.Security Remove P2P references from S.S.Crypto.* projects +13895 area-System.Threading Fix/disable ThreadPool.SetMaxThreads test in preparation for fix Related to dotnet/coreclr#8236 +13897 area-System.Runtime Reflection breaking change in Microsoft.NETCore.App 1.1.0 "One of the packages that `Microsoft.NETCore.App` brings in has a breaking change in 1.1.0 compared to 1.0.1 that causes an exception when using `Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript`: >{System.ArgumentException: Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type. at System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(Type delegateType, Object firstArgument, DelegateBindingFlags bindingFlags, StackCrawlMark& stackMark) at System.Reflection.RuntimeMethodInfo.CreateDelegate(Type delegateType) at Roslyn.Utilities.ReflectionUtilities.CreateDelegate[T](MethodInfo methodInfo) at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.Build[T](Compilation compilation, DiagnosticBag diagnostics, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor[T](ScriptCompiler compiler, Compilation compilation, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.Script`1.GetExecutor(CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.Script`1.RunAsync(Object globals, Func`2 catchException, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.RunAsync[T](String code, ScriptOptions options, Object globals, Type globalsType, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.EvaluateAsync[T](String code, ScriptOptions options, Object globals, Type globalsType, CancellationToken cancellationToken) at Repro.Program.Main(String[] args) in C:\Users\ansvyryd\Documents\Visual Studio 2015\Projects\Repro\src\Repro\Program.cs:line 16} [Repro13897.zip](https://github.com/dotnet/corefx/files/607804/Repro13897.zip) ```c# public class Program { public static void Main(string[] args) { var script = ""new Point {X = 1, Y = -2}""; var result = CSharpScript.EvaluateAsync( script, ScriptOptions.Default .WithReferences(typeof(Point).GetTypeInfo().Assembly) .AddImports(typeof(Point).GetTypeInfo().Namespace)) .GetAwaiter().GetResult(); Console.WriteLine($""{result.X} {result.Y}""); } } public class Point { public int X { get; set; } public int Y { get; set; } } ```" +13899 area-System.Security Cleanup the tests around PaddingMode See comments from: https://github.com/dotnet/corefx/pull/13859#pullrequestreview-9779198 +13900 area-System.Net HttpWebRequest and HttpWebResonse - expose missing members Implement + expose + test these methods: ``` P:System.Net.HttpWebRequest.Connection P:System.Net.HttpWebRequest.ContentLength P:System.Net.HttpWebRequest.DefaultCachePolicy P:System.Net.HttpWebRequest.PreAuthenticate P:System.Net.HttpWebRequest.Proxy P:System.Net.HttpWebRequest.Timeout M:System.Net.HttpWebRequest.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Net.HttpWebRequest.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Net.HttpWebRequest.System#Runtime#Serialization#ISerializable#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) P:System.Net.HttpWebResponse.IsMutuallyAuthenticated M:System.Net.HttpWebResponse.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Net.HttpWebResponse.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) M:System.Net.HttpWebResponse.System#Runtime#Serialization#ISerializable#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) ``` +13901 area-System.Net HttpListener - expose missing APIs Implement + expose + test these APIs: ```c# public class HttpListenerTimeoutManager { public TimeSpan DrainEntityBody { get; set; } public TimeSpan EntityBody { get; set; } public TimeSpan HeaderWait { get; set; } public TimeSpan IdleConnection { get; set; } public long MinSendBytesPerSecond { get; set; } public TimeSpan RequestQueue { get; set; } } public class HttpListenerException : Win32Exception { protected HttpListenerException(SerializationInfo serializationInfo, StreamingContext streamingContext); public override int ErrorCode { get; } } public sealed class HttpListener : IDisposable { public ServiceNameCollection DefaultServiceNames { get; } public ExtendedProtectionPolicy ExtendedProtectionPolicy { get; set; } public HttpListener.ExtendedProtectionSelector ExtendedProtectionSelectorDelegate { get; set; } public HttpListenerTimeoutManager TimeoutManager { get; } public delegate ExtendedProtectionPolicy ExtendedProtectionSelector(HttpListenerRequest request); } public sealed class HttpListenerContext { public Task AcceptWebSocketAsync(string subProtocol, TimeSpan keepAliveInterval); } ``` +13902 area-System.Security Refactor Padding tests /cc @bartonjs @steveharter +13903 area-System.Net Implement authentication for HttpListener using NTAuthentication from Common location. cc @karelz +13905 area-System.Net Port System.Net.NetworkCredential missing members Fixes #12134 cc @danmosemsft @AlexGhiondea @alecont +13906 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test/ProxyExplicitlyProvided_DefaultCredentials_Ignored Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test/ProxyExplicitlyProvided_DefaultCredentials_Ignored` has failed. System.AggregateException : One or more errors occurred. (Error while copying content to a stream.) (One or more errors occurred. (Error while copying content to a stream.))\r ---- System.Net.Http.HttpRequestException : Error while copying content to a stream.\r -------- System.IO.IOException : The read operation failed, see inner exception.\r ------------ System.Net.Http.WinHttpException : The connection with the server was terminated abnormally\r ---- System.AggregateException : One or more errors occurred. (Error while copying content to a stream.)\r -------- System.Net.Http.HttpRequestException : Error while copying content to a stream.\r ------------ System.IO.IOException : The read operation failed, see inner exception.\r ---------------- System.Net.Http.WinHttpException : The connection with the server was terminated abnormally Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Threading.Tasks.Task.WaitAll(Task[] tasks) at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.ProxyExplicitlyProvided_DefaultCredentials_Ignored() ----- Inner Stack Trace #1 (System.Net.Http.HttpRequestException) ----- at System.Net.Http.HttpContent.d__50.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpContent.d__50.MoveNext() ----- Inner Stack Trace ----- ----- Inner Stack Trace #2 (System.AggregateException) ----- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.<>c.b__2_0(Task`1 t) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.Tasks.Task.Execute() ----- Inner Stack Trace ----- at System.Net.Http.HttpContent.d__50.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpContent.d__50.MoveNext() ----- Inner Stack Trace ----- Build : Master - 20161122.03 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161122.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test~2FProxyExplicitlyProvided_DefaultCredentials_Ignored +13907 area-System.Net Test failure: System.Net.Sockets.Tests.DualModeConnectToIPAddress/ConnectV4IPAddressToV6Host_Fails Opened on behalf of @jiangzeng The test `System.Net.Sockets.Tests.DualModeConnectToIPAddress/ConnectV4IPAddressToV6Host_Fails` has failed. Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: (No exception was thrown) Stack Trace: at System.Net.Sockets.Tests.DualModeConnectToIPAddress.ConnectV4IPAddressToV6Host_Fails() Build : Master - 20161122.03 (Core Tests) Failing configurations: - Ubuntu.1604.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161122.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectToIPAddress~2FConnectV4IPAddressToV6Host_Fails +13909 area-System.Linq Add Enumerable.Repeat overload accepting a Func. ## Background The current `Enumerable.Repeat` function, accepting a `T`, returns an enumerable with the same value repeated N times. Sometimes, however, you don't want the same value repeated N times but the same function called N times. For example: ```cs var r = new Random(); var randomNumbers = Enumerable.Repeat(r.Next(), 100); // Newbie: Why isn't this working? var reallyRandomThisTime = Enumerable.Repeat(_ => r.Next(), 100); // That does the trick! ``` The current workaround for this is to do something like `Enumerable.Range(0, size).Select(_ => r.Next())`, which is not really as readable. I [do it myself](https://gist.github.com/jamesqo/25e02482e5a9257b52ee3b6c91bfc556#file-skipregression-cs-L17) all the time in my benchmarks for example, & you can see such examples on [StackOverflow](http://stackoverflow.com/a/4903861/4077294). ## Proposal We should add an overload of `Repeat` accepting a `Func`. This function will be evaluated N times as the enumerable is iterated. The input to each invocation of the function will be the result of the last invocation; the input to the first invocation will either be a user-specified seed, or `default(T)` if no seed was specified. ```cs namespace System.Linq { public static class Enumerable { public static IEnumerable Repeat(Func selector, int count); public static IEnumerable Repeat(T seed, Func selector, int count); } } ``` ## Usage ```cs // Numbers from 100 to 1 Enumerable.Repeat(100, n => n - 1, 100); // Collect 100 nodes of a linked list (slowly) Enumerable.Repeat(head, n => n.Next, 100); // Record the results of a benchmark 10 times Enumerable.Repeat(_ => RunBenchmark(), 10); ``` +13910 area-System.Linq Run the selector on items during Select.Count chains. Per @VSadov's comment at https://github.com/dotnet/corefx/pull/12703#issuecomment-262051319: > Re: can we skip selectors/predicates in this optimization > > It is a tough one. > > Generally, assuming that anything can have sideeffects is indeed very > constraining to what kind of optimizations we can do. In some cases it > is hard to specify how much of the user code runs and in what order. > We definitely reserve the rights to substitute iteration for indexing > when we find that possible. > > After thinking about this for quite a while, I think Count is a kind > of aggregating operator. Even though the actual results are not > collected, it seems reasonable for the user to expect that they would > be computed, and as such he may expect to observe the sideeffects from > selectors/predicates etc. > > I.E. – I could see someone using a selector that writes to the > console, and use Count as a way to run the query for sideeffects only. > > I think we should not take the change and check for other changes like > this, that we might have accepted in the past. (like: #11841 ) > > Here is what I think is the root cause - We do have a method for > obtaining counts internally - > > GetCount(bool onlyIfCheap) > > I think the method should not be used to bypass selectors when > actually running the query. It is ok to use it to preallocate internal > buffers. That still have an assumption that the “cheap” way of > obtaining the underlying “.Count” is idempotent, but it is a kind of > assumption that we agreed in the past to be acceptable. > > It does not seem to be acceptable to assume that user-supplied > selectors/predicates are sideeffects-free in a context of aggregating > query. > > I.E. – > > it would be ok to preallocate a buffer based on GetCount(bool > onlyIfCheap) it would be ok to compute actual Count via , but only as > long as there are no funcs to run if we have selectors/predicates or > other funcs, they must run in aggregating queries. So in other words, we should undo all the `GetCount` optimizations that skip running the selector if `onlyIfCheap` if false. But if it's true, we're probably using it to preallocate a buffer of some sort, & are probably going to use it anyways. So in those scenarios it should be ok to not run the selector. cc @JonHanna +13911 area-Infrastructure FileLoadException when trying to run tests for a different TestTFM "I followed the directions [here](https://github.com/dotnet/corefx/blob/0300e2c42e3ce96240e05daff6f6c5a5e03081a6/Documentation/project-docs/developer-guide.md#running-tests-in-a-different-tfm) and tried running the tests for System.IO on desktop by executing `msbuild /p:TestTFM=net46 /t:RebuildAndTest` in System.IO\tests. Unfortunately, I get the following output when I try to do so: ``` Executing in C:\Users\james\Code\git\corefx\bin\tests\AnyOS.AnyCPU.Debug\System.IO.Tests\default.net46\ Hard linking dependent files... Finished linking needed files, moving to running tests. Running tests... Start time: 23:21:56.24 Command(s): call xunit.console.exe System.IO.Tests.dll -noshadow -xml testResults.xml -notrait Benchmark=true -notrait category=nonnet46tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests xUnit.net Console Runner (64-bit .NET 4.0.30319.42000) System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Finished running tests. End time=23:22:19.28, Exit code = 1 ``` The same error occurs when the TestTFM is net462. Interestingly, however, I get different errors when running for net463: https://gist.github.com/jamesqo/0b2093b4841a4897e997d9bcf1be8dd9 (Ctrl + F and type ""[FAIL]"" to see them). It looks like System.Runtime is loading ok in that case, but some other assemblies such as System.Linq are not." +13912 area-System.Runtime Re-enable tests for StringBuilder Fixes #13047 cc @danmosemsft @AlexGhiondea +13913 area-System.Net Check for SystemNetworkCredential in CredentialCache in Mail cc @CIPop @karelz Fix issue #12526 +13914 area-System.IO ARM: ZLibException when working with GZipStream (System.IO.Compression.ZipFile 4.3.0) "In my UWP app, I am using the NuGet packages `Microsoft.Data.Sqlite 1.1.0` and `Microsoft.EntityFrameworkCore.Sqlite 1.1.0`, both requiring the package `System.IO.Compression.ZipFile 4.3.0` . When using a GZipStream in my app, I get a `System.IO.Compression.ZLibException (""The underlying compression routine could not be loaded correctly."")`. InnerException: `Unable to load DLL 'clrcompression.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)`. Happens on mobile (ARM) only! This is how I am using the stream: ``` using (GZipStream stream = new GZipStream(compressedStream, CompressionMode.Compress, true)) { await fileStream.CopyToAsync(stream); } ``` Problem can be reproduced by installing the `System.IO.Compression.ZipFile 4.3.0` package only." +13915 area-System.Memory Span: Add Span.Clear() As discussed in https://github.com/dotnet/corefx/issues/13427 we would like to add a `Clear()` method to `Span` to make span the goto place for safe and fast memory operations. ### Rationale and Usage Provide a safe yet fast way of clearing (settings memory to zero) for any type of contiguous memory; managed or unmanaged. ```csharp var span = new Span(array, 3, 10); span.Clear(); ``` ### Proposed API Add a single method `Clear()` to the existing `Span` API e.g.: ```csharp public class Span { public void Clear(); } ``` ### Details For reference free value types this can forward directly to `Unsafe.InitBlock`, see https://github.com/dotnet/corefx/issues/13427, but should otherwise try to be optimal, so this function can be used as the reference implementation for all such usages in .NET. That's the vision at least, in my mind. ### Open Questions Open question is whether the `InitBlock` should be generic to match Span usage, or `Span` should handle forwarding to a `ref byte` version of this. @jkotas @omariom @benaadams @karelz @jamesqo @davidfowl +13917 area-System.Linq Allow for half-lifted conversions in expressions. If a conversion existed from a value type to a nullable type then conversions would not be lifted for the nullable form of the source type. Fix this. Fixes #11992. Also select such lifted operations if the methodless form of the `Convert` factory is used to request automatic selection of convert methods. As well as tests covering this case, include a test ensuring the lifted form is not picked by this change should a direct nullable-to-nullable conversion be available. +13919 area-System.Runtime New Type `System.Runtime.CompilerServices.DependentHandle` There is an internal strut `System.Runtime.CompilerServices.DependentHandle` that is currently only used by `System.Runtime.CompilerServices.ConditionalWeakTable`. The struct allows for a dependency between two objects to be created by a third type without modifying the first two classes, and only using up a pointer's worth of memory in the third type. I have personally find use for such a class, [in my Weak Delegates system for example](https://github.com/SamuelEnglard/weakdelegates/blob/master/WeakDelegates/DependentHandle%602.cs). While in there I had to use slightly convoluted tricks to make it work I believe a more proper implementation included in the BCL would be useful. # API ```csharp namespace System.Runtime.CompilerServices { [ComVisible(false)] public struct DependentHandle : IDisposable where TPrimary : class where TSecondary : class { public bool IsAllocated { get; } [SecurityCritical] public DependentHandle(TPrimary primary, TSecondary secondary); [SecurityCritical] public bool TryGetPrimary(out TPrimary primary); [SecurityCritical] public bool TryGetPrimaryAndSecondary(out TPrimary primary, out TSecondary secondary); [SecurityCritical] public void Dispose(); public override string ToString(); } } ``` It should be noted that my struct is type safe, unlike the internal one. +13920 area-System.Runtime Switch to use CoreLib Path class. Leaving the code for UAP for now- we may end up needing to keep it. (Notably for the Crypto) @ianhays +13922 area-System.Net SecurityProtocolType Ssl3 should be marked as obsolete Similar to obsolete members in `SslProtcols`. @davidsh @karelz @blowdart PTAL +13923 area-System.IO Enable tests for Unix FileStream Lock/Unlock resolves the final part of https://github.com/dotnet/corefx/issues/5964 @stephentoub @JeremyKuhne +13924 area-System.Runtime Expose a cached StringBuilder We use `StringBuilderCache` to improve performance for short-lived usages of `StringBuilder`. Numerous other codebases have copied this. I want to suggest that we: (1) expose `StringBuilderCache` and/or (2) expose a cached `StringBuilder` on `StringBuilder`. ### New Member Option A Aligns with `StringBuilderCache`, although I prefer to flip the ordering of the words for `GetStringAndRelease`- it makes more sense from a discovery perspective. ``` diff namespace System.Text { public sealed class StringBuilder { + public static StringBuilder Acquire(int capacity); + public static void Release(StringBuilder sb); + public static string ReleaseAndGetString(StringBuilder sb); } } ``` ### New Member Option B Aligns with `ArrayPool` terminology. ``` diff namespace System.Text { public sealed class StringBuilder { + public static StringBuilder Rent(int capacity); + public static void Return(StringBuilder sb); + public static string ReturnAndGetString(StringBuilder sb); } } ``` ### Expose StringBuilderCache Option ``` diff namespace System.Text { + public static class StringBuilderCache + { + public static StringBuilder Acquire(int capacity); + public static void Release(StringBuilder sb); + public static string ReleaseAndGetString(StringBuilder sb); + } } ``` +13925 area-System.Security Add PasswordDeriveBytes and CryptDeriveKey methods Addresses issues: https://github.com/dotnet/corefx/issues/12966 Port Rfc2898DeriveBytes.CryptDeriveKey https://github.com/dotnet/corefx/issues/11118 Port T:System.Security.Cryptography.PasswordDeriveBytes For Rfc2898DeriveBytes.CryptDeriveKey, PNSE exception is raised due to that type being in Algorithms and requirement that it calls CAPI (not CNG). The comment on that method explains it in more detail. For PasswordDeriveBytes, two native methods needed to be ported (CapiHelper.DeriveKey and UnloadKey) from desktop. @bartonjs please review. +13926 area-System.Globalization Support UpperCaseFirst enum value in CompareOptions "Currently System.Xml.Xsl support the sort option ""uppercase-first"" option. we have supported this on Linux by using unexposed enum value UpperCaseFirst = 0x01000000 https://github.com/dotnet/coreclr/pull/8283 https://github.com/dotnet/corefx/issues/13236 we need to publicly expose this option after figuring out what is the best way to support it on Windows as the OS doesn't support this option." +13927 area-System.Data SqlConnection.CreateCommand() - Auto-Enlist in Pending Local Transaction "When CreateCommand() is called on a SqlConnection that is in a transaction, the SqlCommand returned by that method is **not** associated with the connection's transaction. Instead, the command must be explicitly informed of the transaction or an exception similar to the following will be thrown when the command is executed: > MethodInvocationException: Exception calling ""ExecuteReader"" with ""0"" argument(s): ""ExecuteReader requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized."" ## Cost of the Manual Wire-Up * The need to manually associate the command with the connection's transaction adds a small amount of code clutter. using (var connection = new SqlConnection(connectionString)) { connection.Open(); var transaction = connection.BeginTransaction(); using (var command = connection.CreateCommand()) { command.Transaction = transaction; // code clutter } * More significantly, the need to explicitly set up this association when a transaction is used means that modifying a high-level component to use transactions requires code changes to lower-level components sharing the same SqlConnection, even when these lower-level components are transaction-agnostic. class Service { public void Process() { /* Modifying Process() to use transactions isn't as simple as uncommenting the below because component also needs to be modified to wire up its SqlCommand to use the transaction even though component may not care whether it is in a transaction. */ // using (var transaction = connection.BeginTransaction()) // { component.Process(connection); // transaction.Commit(); // } } } * All methods executing SqlCommands on the connection when the transaction is in use must have access to the transaction object. SqlConnection does not provide a public property exposing its transaction, so the object either must be passed around or accessed [via reflection](http://stackoverflow.com/questions/417024/can-i-get-a-reference-to-a-pending-transaction-from-a-sqlconnection-object). using (var command = connection.CreateCommand()) { command.Transaction = connection.Transaction; // not possible because connection does not publically expose the transaction } ## Proposal When CreateCommand() is called on a SqlConnection in a transaction, the SqlCommand it returns should be associated with the connection's transaction, eliminating the need for the explicit wire-up." +13930 area-System.Security Port CryptoConfig.EncodeOID Add missing EncodeOID() method to CryptoConfig https://github.com/dotnet/corefx/issues/12327 Port System.Security.Cryptography.CryptoConfig @bartonjs please review. +13931 area-System.Runtime Move Get/SetEnvironmentVariable to CoreLib Due to the lack of thread safety with environment variables on Unix the values are cached in the CoreFX [implementation]( https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Environment.Unix.cs#L19). This causes `Path.GetTempPath()` and anything else that tries to get an environment variable in CoreLib to not have the up-to-date values. See the failing tests in https://github.com/dotnet/corefx/pull/13920. We should move the implementation to Internal.Runtime.Augments so we have one source of truth. +13933 area-System.ComponentModel Remove the workaround for EscapedCodeBase +13934 area-Infrastructure Global DTAR does not return reliable closure of NuGet packages containing .NET Core assemblies Need to properly communicate that .NET Core packages shipped post RTM will include a marker .nuget\packages\System.Foo\x.x.x\useSharedDesignerContext.txt. +13935 area-System.Security Port CryptoStream.FlushAsync Port the FlushAsync method from netfx; several other classes have the same logic and comments. https://github.com/dotnet/corefx/issues/13872 Add missing CryptoStream::FlushAsync +13936 area-System.Runtime Expose & add tests for Array.Fill implementation Now that the `Array.Fill` api has been added to coreclr & corert, the api needs to be exposed & tests added. I'll do this later when I have time, possibly when I finish the HashCode PR. +13937 area-Infrastructure Add Fedora 25 to CI / RID Graph / Packages https://fedoraproject.org/wiki/Releases https://hub.docker.com/_/fedora/ +13938 area-System.Net Test failure: System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_Cancel_TaskIsCanceled Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_Cancel_TaskIsCanceled` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Net.Http.Functional.Tests.ResponseStreamTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161123.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161123.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_Cancel_TaskIsCanceled +13940 area-System.Globalization Make CultureInfo properties UserDefaultCulture and UserDefaultUICulture public `CultureInfo` currently implement `InstalledUICulture`, `UserDefaultCulture` and `UserDefaultUICulture` properties. `InstalledUICulture` property is public, but `UserDefaultCulture` and `UserDefaultUICulture` properties are internal. `UserDefaultCulture` and `UserDefaultUICulture` properties **will be very helpful to get current user cultures**. So I suggest make UserDefaultCulture and UserDefaultUICulture properties public. # Rationale and Usage Get current user cultures. Using system culture instead of current user culture is bad because each user on Windows can have different culture settings. Now if thread culture was changed, we can not get culture for current user. Also if `DefaultThreadCurrentCulture` is changed we can not set it back to current user culture. # Proposed API ```cs public class CultureInfo { public static CultureInfo UserDefaultCulture; public static CultureInfo UserDefaultUICulture; } ``` +13942 area-System.Linq Specialize the single-selector overload of SelectMany. `e.SelectMany(i => i)` is a very popular option for flattening a list of enumerables: http://stackoverflow.com/questions/1590723/flatten-list-in-linq This PR optimizes `SelectMany` calls followed by `ToArray` or `ToList`, leading to a substantial (~40%) speedup. Instead of looping through each item of the projected sequence, yield returning it from the iterator, and adding it to the list/`LargeArrayBuilder`, we simply call `AddRange`. Performance test: https://github.com/jamesqo/Dotnet/blob/05daf42403b615942706a7e9be32c8b22db80e67/Program.cs Results: https://gist.github.com/jamesqo/635e6e49b3ceb6e9527161f3472188f7 You may notice that there are a lot of regressions (substantially more allocations happening) for `ToList`. That puzzled me too, until I found out the version of S.P.CoreLib I was using did not include [this change](https://github.com/dotnet/coreclr/pull/6892); in my tests, a buffer was being allocated every time `List.AddRange` was called. Still, however, the new implementation was faster. I've also added more testing for these changes in the PR. cc @JonHanna @VSadov @stephentoub +13945 area-System.Linq Expressions simplifiy type methods Remove `GetStaticMethods` helper, replacing with call to `GetMethods`, now that the form with `BindingFlag` overloads is available to use. Contributes to #8576. Remove conditional call to ToList as this makes it no longer useful. Update signature called into to allow array iteration in the `foreach`. Remove `implicitOnly` parameter to `GetUserDefinedCoercion`: It's only ever false. Remove the check for it, and remove it being called up the stack. Replace filtered call to `DeclaredMethods` with `GetMethods` with appropriate flags. Also contributes to #8576. Move retryForLifted test down to the branch that depends on it, now that it no longer needs to cache a collection +13946 area-System.Net Android: In UnixIPInterfaceProperties.cs, GetDnsAddresses does not work "Instead on android you should get the linux properties net.dns1, net.dns2, ... Shell: `getprop net.dns1 ` Code: ``` for (i = 1; i <= MAX_DNS_PROPERTIES; i++) { char prop_name[PROP_NAME_MAX]; snprintf(prop_name, sizeof(prop_name), ""net.dns%d"", i); __system_property_get(prop_name, dns); } ``` " +13950 area-System.Numerics [WIP] Implement and add tests for System.HashCode. This PR implements `System.HashCode` as proposed in #8034. Please note that this is still WIP since I can't get the tests to build; [here](https://gist.github.com/jamesqo/fc427bbc29154bda060732d61502fcb1) is the output when I attempt to run `msbuild /t:Rebuild` on the tests. Once that is resolved, I will be able to move forward with this PR. Note: I chose to include both `Empty` and `Create` static methods, and I also overrode `ToString`. Fixes #8034 +13951 area-System.Net CI failures in WinHttpHandlerUnitTests See https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/733/ ``` System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeDispose_HandleIsNotClosed System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDispose_HandleIsNotClosed System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefReleaseDispose_HandleIsClosed System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefRelease_HandleIsNotClosed System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeRelease_HandleIsClosed ``` with errors like: ``` 21:28:12 System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeDispose_HandleIsNotClosed [FAIL] 21:28:12 Assert.Equal() Failure 21:28:12 Expected: 1 21:28:12 Actual: 3 21:28:12 Stack Trace: 21:28:12 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(41,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeDispose_HandleIsNotClosed() 21:28:12 System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDispose_HandleIsNotClosed [FAIL] 21:28:12 Assert.Equal() Failure 21:28:12 Expected: 1 21:28:12 Actual: 2 21:28:12 Stack Trace: 21:28:12 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(24,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDispose_HandleIsNotClosed() 21:28:12 System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed [FAIL] 21:28:12 Assert.Equal() Failure 21:28:12 Expected: 2 21:28:12 Actual: 4 21:28:12 Stack Trace: 21:28:12 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(135,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed() 21:28:12 System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefReleaseDispose_HandleIsClosed [FAIL] 21:28:12 Assert.Equal() Failure 21:28:12 Expected: 0 21:28:12 Actual: 4 21:28:12 Stack Trace: 21:28:12 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(88,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefReleaseDispose_HandleIsClosed() 21:28:12 System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefRelease_HandleIsNotClosed [FAIL] 21:28:12 Assert.Equal() Failure 21:28:12 Expected: 1 21:28:12 Actual: 5 21:28:12 Stack Trace: 21:28:12 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(71,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefRelease_HandleIsNotClosed() 21:28:12 System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeRelease_HandleIsClosed [FAIL] 21:28:12 Assert.Equal() Failure 21:28:12 Expected: 0 21:28:12 Actual: 5 21:28:12 Stack Trace: 21:28:12 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(58,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeRelease_HandleIsClosed() ``` Seems different from other WinHttpHandler test failures reported earlier. +13953 area-System.Linq Restore the use of GetRawConstantValue Yet another method that came back; reverting to the original code in .NET Framework rather than having a `TryGetRawConstantValue` helper. +13954 area-System.Linq Remove unnecessary First helper in System.Dynamic.Utils This helper is pretty much the same as `Enumerable.First` and its two uses either already know the first element or can simply index into a collection to get it. It seems we can do away with it. +13956 area-System.Linq Using more cached reflection in CallSite `CallSite` uses a bunch of `CallSiteOps` methods and uses the `Call(Type, string, Type[], Expression[])` factory method overload to find these methods on `typeof(CallSiteOps)`. This results in two inefficiencies: * Repeated lookup of the same methods through reflection * Allocation of a `params` array By using cached reflection, we can hit the `Call` factory overloads with a `MethodInfo` and a fixed number of `Expression` arguments, thus avoiding both costs. +13958 area-System.Linq "Introduce a string constant to replace copies of ""CallSite.Target"" in System.Linq.Expressions" This string is used by `IsInternalFrame` and should not be changed. This PR eliminates copies of the string literal in various places by introducing a `const`. +13959 area-System.Linq Using expression-bodied members consistently in Strings files in System.Linq.Expressions These files were very inconsistent in terms of style. Using a Roslyn code fix to make it consistent. +13960 area-System.Net Substring allocations in WebUtility.HtmlDecode() Currently `WebUtility.HtmlDecode()` allocates a substring every time it allocates an HTML entity: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Net/WebUtility.cs#L234. For example, running the code on something like `"Hello's world"` will result in substring allocations for `quot`, `apos`, and `quot`. Ideally, we would just modify `HtmlEntities.s_lookupTable` to have a key type of a struct `StringSpan`, which would be like `ArraySegment` except for strings. But if we do that, we are also adding 8 bytes to each entry in the hashtable, which is not good considering there are 253 entries (although it is only one-time). +13962 area-Meta Fix typos suport → support Mostly comments, private members and test names where they have no effect, but one is in an exception message. +13963 area-System.Linq Using a TrueReadOnlyCollection in DynamicObject We were building a read-only collection but butchered it to an array prior to passing it to `Expression` factory methods, thus undoing the optimization potential. +13964 area-System.Net Test failure: System.Net.Sockets.Tests.SendReceive/SendRecvPollSync_TcpListener_Socket(listenAt: ::1, pollBeforeOperation: True) Opened on behalf of @jiangzeng The test `System.Net.Sockets.Tests.SendReceive/SendRecvPollSync_TcpListener_Socket(listenAt: ::1, pollBeforeOperation: True)` has failed. System.AggregateException : One or more errors occurred. (An existing connection was forcibly closed by the remote host)\r ---- System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Net.Sockets.Tests.SendReceive.SendRecvPollSync_TcpListener_Socket(IPAddress listenAt, Boolean pollBeforeOperation) ----- Inner Stack Trace ----- at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.Tests.SendReceive.<>c__DisplayClass27_1.<b__0>d.MoveNext() Build : Master - 20161124.03 (Core Tests) Failing configurations: - Windows.10.Core.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161124.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendReceive~2FSendRecvPollSync_TcpListener_Socket(listenAt:%20::1,%20pollBeforeOperation:%20True) +13966 area-System.Security CI failure in System.Security.Cryptography.Encryption.Tests.Asymmetric.CryptoStreamTests.FlushAsync See https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/731/. ``` MESSAGE: System.OverflowException : Arithmetic operation resulted in an overflow. +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.Encryption.Tests.Asymmetric.CryptoStreamTests.IdentityTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Security.Cryptography.Primitives/tests/CryptoStream.cs:line 302 at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Security.Cryptography.Encryption.Tests.Asymmetric.CryptoStreamTests.FlushAsync() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Security.Cryptography.Primitives/tests/CryptoStream.cs:line 189 ``` +13967 area-System.Net CI failure in System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom.ReceiveFromV6BoundToAnyV4_NotReceived See https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/739/ ``` MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: typeof(Xunit.Sdk.EqualException): Assert.Equal() Failure\nExpected: ::1\nActual: ::ffff:127.0.0.1 +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Tests.DualModeBase.ReceiveFrom_Helper(IPAddress listenOn, IPAddress connectTo) in /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2709 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom.b__9_0() in /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1438 ``` +13969 area-System.Linq Optimize IsOverridden logic in DynamicObject The `IsOverridden` method in `DynamicObject` looks quite baroque and uses a method name to re-retrieve `MethodInfo` objects for the `Try*` methods defined on `DynamicObject`. It seems we can do a much better job by passing the `MethodInfo` object to the method. I'm marking this as WIP because we don't have good test coverage in this area. @JonHanna, are you currently working on tests in this area? If not, I can help out to cover the gaps related to `DynamicObject`. I've also left a `TODO` with some observation on the logic of the code. It seems to allow binding to methods in the subclass that have the same name but a different return type. I'd have expected it to check for a proper virtual override of the base definition. We can write tests to assert all the current behaviors and then evaluate what to do here (if anything). +13970 area-System.Collections Improve test coverage for List..ctor(IEnumerable) and AddRange In conjunction with the changes at: dotnet/coreclr#8306. In particular, it doesn't look like there are tests exercising the path where `this == c` (where `c` is the collection to be added) in https://github.com/dotnet/corefx/blob/master/src/System.Collections/tests/Generic/List/List.Generic.Tests.AddRange.cs. So code coverage can probably be improved. +13971 area-System.Linq Remove overload of S.Dynamic.Utils.Requires w/o argument name. Use the argument-name taking form where it had been used. +13972 area-System.Diagnostics CI Failure in System.Diagnostics.Tests.ProcessTests.TestMinWorkingSet https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/733/ ``` MESSAGE: Assert.True() Failure\nExpected: True\nActual: False +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Tests.ProcessTestBase.Dispose(Boolean disposing) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest@2/src/System.Diagnostics.Process/tests/ProcessTestBase.cs:line 33 at System.IO.FileCleanupTestBase.Dispose() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest@2/src/Common/tests/System/IO/FileCleanupTestBase.cs:line 41 at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) +13974 area-Meta Add missing license headers +13975 area-System.Collections Add ConcurrentBag Clear method Implement ConcurrentBag.Clear API. See https://github.com/dotnet/corefx/issues/2338 +13976 area-System.Collections Add ConcurrentQueue Clear method Implement ConcurrentQueue.Clear API. See https://github.com/dotnet/corefx/issues/2338 +13977 area-System.Reflection TypeBuilder.SetParent() loops forever when setting the parent to itself ```c# [Fact] public void SetParent_This_LoopsForever() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); type.SetParent(type.AsType()); type.CreateTypeInfo(); // We never get here throw new DivideByZeroException(); } ``` +13978 area-System.Reflection Add TypeBuilder.SetParent tests And improve existing tests by verifying you can create the type after setting a parent +13979 area-System.Security CertTests.TestVerify test failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/760/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.CertTests.TestVerify [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Security.Cryptography.X509Certificates/tests/CertTests.cs(99,0): at System.Security.Cryptography.X509Certificates.Tests.CertTests.TestVerify() ``` +13980 area-System.Reflection Add some TypeBuilder.Size tests +13981 area-System.Linq Implement IntPtr/UIntPtr enum casts in Linq expressions @JonHanna @stephentoub @bartdesmet @vsadov The strange creatures that are IntPtr and UIntPtr enums are explicitly supported in the CLI specification. Whether anyone has ever used one and if supporting them was accidental is a different story. The previous behaviour was debug assertions in both compiler and interpreter on compilation and occasionally on creation of the trees +13983 area-System.Linq More System.Dynamic Tests Starting testing on `CallSite` and `CallSiteBinder`. Pretty thorough tests for `InvokeMemberBinding`. +13984 area-System.Linq Improving ToString for field instructions Discovered this during the work on stack spilling. Refactoring the field instructions using a common `FieldInstruction` base class and providing a custom `ToString` override to include the field information in the string representation. We should likely do a separate pass to improve all reflection printing to include more information such as the declaring type. +13985 area-Microsoft.CSharp Microsoft.CSharp.RuntimeBinder.Tests A lot of the tests for System.Dynamic exercise parts of M.CS.RuntimeBinder so they can be adapted for use there too. +13986 area-System.Linq Addressing some test gaps for MethodCallExpression Some cases dealing with instance/static method calls with 0 arguments, and with N arguments where N is larger than the maximum argument count for which we provide optimized layouts. +13987 area-System.Linq Removing unused ctor on HybridReferenceDictionary in interpreter code The constructor overload with a `initialCapicity` (misspelled too) is not used, nor do have the current uses of the type a good value to specify for this, so only keeping the default constructor makes sense. +13988 area-Microsoft.CSharp Extend CSharpArgumentInfoTests There isn't much that can be direct tested on this, but cover a range of possible inputs. +13989 area-System.Linq Adding more tests for RuntimeOps.Quote behavior Quote some test coverage gaps in `RuntimeOps` methods, so addressing them one by one. This focuses on the runtime expression quoter. +13990 area-System.Linq Don't try to test both compiler and interpreter if only one available. Unless both `FEATURE_COMPILE` and `FEATURE_INTERPRET` are defined, then the boolean argument to `Compile()` has no real effect, except to nearly double wall time the tests take to run. Therefore only pass one such value in other cases. +13991 area-System.Linq Remove unused usings in System.Linq.Expressions tests Some bulk removal of unused usings in test code as part of clean-up work. Also making one file consistent wrt C# 6.0 feature usage. +13993 area-System.Linq Removing some dead code in System.Linq.Expressions Two extension methods that were introduced to work around reduced API surface prior to the upgrade of the target framework we build against. +13994 area-Infrastructure Failing to run AOT tests Following the instructions in the documentation to run ``` msbuild /t:BuildAndTest /p:TestTFM=netcore50aot /p:TestNugetRuntimeId=win10-x64-aot /p:UseDotNetNativeToolchain=true ``` results in ``` ILC error ILC1104: Could not find file 'corefx\bin\tests\AnyOS.AnyCPU.Debug\System.Linq.Tests\default.netcore50aot\AppxManifest.xml'. ``` +13997 area-Microsoft.CSharp MSFT.CSharp Remove redundant directives, this, type qualifiers and params array +13998 area-Microsoft.CSharp MSFT.CSharp: Remove fields that are serving as locals. +13999 area-Microsoft.CSharp MSFT.CSharp Turn field-property pairs into auto-properties. +14000 area-Microsoft.CSharp MSFT.CSharp. Remove redundant ctors, base ctor calls +14001 area-Microsoft.CSharp MSFT.CSharp: Make init-only private-set properties get-only. +14002 area-Microsoft.CSharp MSFT.CSharp: Replace if-branch with expression. +14003 area-Microsoft.CSharp MSFT.CSharp: Replace empty ; with more blatant {} Also Remove excessive semicolons +14004 area-Microsoft.CSharp MSFT.CSharp. Make fields readonly when possible +14005 area-Microsoft.CSharp MSFT.CSharp Move declarations closer to, or joined with, intialisation. +14006 area-System.Collections [WIP] [no merge] Support limiting the buffer size in LargeArrayBuilder. There are certain Linq methods, such as `Where` and `Take`, where we cannot pinpoint the exact number of elements the iterator will contain, but we can establish an upper bound on how many elements there are. For example, `list.Where(p)` can have at most `list.Count` elements, and `e.Take(5)` can have at most 5 elements. Currently, when we call `ToArray` on any of these iterators, the resizing pattern will be to allocate 4, then 8, then 16, etc. size buffers. This can be wasteful because e.g. if the source enumerable in `Where` contains 100 elements, we allocate space for 128 elements even though those last 28 slots will never be used. This PR adds support to `LargeArrayBuilder` to limit how many elements we allocate, so there is no extra space wasted. It should help drive down allocations in `Where`, `Where.Select`, & `Take` when the maximum count is far from the next power of 2. Waiting on: #12703, #13628 +14007 area-System.Linq Fix typo in namespace. "Should have been ""Tests""." +14008 area-Meta UDP Socket using SocketAsyncEventArgs garbage collects nearly every second "I've written a small UDP server with the .Net Core `SocketAsyncEventArgs` implementation, of Sockets. When the server runs, I can see the garbage collection run in the Visual Studio Diagnostics tooling. It runs almost non-stop. Yet when I take Heap snapshots, I don't see hardly any allocations. I fetch my `byte[]` buffers from an `ArrayPool` and I fetch my `SocketAsyncEventArgs` instances from a custom object pool. I have however seen this same behavior when fetching them from another `ArrayPool` instead. In theory, when looking at my code, there should be virtually zero allocations happening, except for what ever the Socket instance is doing. This is a screenshot of the Diagnostics tooling in Visual Studio showing the garbage collections happening. You can see I'm not allocating anything new in the Heap that would warrent that kind of activity. [![enter image description here][1]][1] [1]: https://i.stack.imgur.com/5FwLr.png I pulled the server and object pooling code out and into a reproducible example project. ## ObjectPool Calling `ObjectPool.Rent()` will give you back an instance from the pool. If no instance exists, it will create one using either `System.Reflection.Activator` or a custom `Func` delegate provided, and give it back to you. When you are done, you call `ObjectPool.Return(T);` to place the instance back into the pool for recycling. ```c# public class ObjectPool { private int maxPoolSize; private SpinLock poolLock; private Dictionary> poolCache; private Func factory; public ObjectPool(int poolSize) { this.maxPoolSize = poolSize; this.poolLock = new SpinLock(false); this.poolCache = new Dictionary>(); } public ObjectPool(int poolSize, Func factory) : this(poolSize) { this.factory = factory; } public T Rent() where T : TObject => (T)this.Rent(typeof(T)); public TObject Rent(Type type) { bool lockTaken = false; Stack cachedCollection; this.poolLock.Enter(ref lockTaken); try { if (!this.poolCache.TryGetValue(type, out cachedCollection)) { cachedCollection = new Stack(); this.poolCache.Add(type, cachedCollection); } } finally { if (lockTaken) { this.poolLock.Exit(false); } } if (cachedCollection.Count > 0) { TObject instance = cachedCollection.Pop(); if (instance != null) return instance; } // New instances don't need to be prepared for re-use, so we just return it. if (this.factory == null) { return (TObject)Activator.CreateInstance(type); } else { return this.factory(); } } public void Return(TObject instanceObject) { Stack cachedCollection = null; Type type = typeof(TObject); bool lockTaken = false; this.poolLock.Enter(ref lockTaken); try { if (!this.poolCache.TryGetValue(type, out cachedCollection)) { cachedCollection = new Stack(); this.poolCache.Add(type, cachedCollection); } if (cachedCollection.Count >= this.maxPoolSize) { return; } cachedCollection.Push(instanceObject); } finally { if (lockTaken) { this.poolLock.Exit(false); } } } } ``` ## Server The server can be started by invoking `Server.Start()`. The server uses the new, in Core, `ArrayPool` Type to fetch `byte[]` buffer arrays. It also uses my `ObjectPool` Type to fetch `SocketAsyncEventArgs` instances so it can avoid allocating. Note that in the example I'm not overwriting (cleaning up) the buffer contents as they come and go from the pool, mostly because that code wasn't needed to demonstrate my issue. ```c# public class Server { private ArrayPool socketBufferPool; private ObjectPool socketEventArgsPool; private Socket listeningSocket; private IPEndPoint readEndPoint; private IPEndPoint writeEndPoint; public Server(IPAddress serverIPAddress, int serverPort, int clientPort) { this.readEndPoint = new IPEndPoint(IPAddress.Any, clientPort); this.writeEndPoint = new IPEndPoint(serverIPAddress, serverPort); // Create our object pool, letting it use us as the Factory for creating and setting up new SocketAsyncEventArgs. this.socketEventArgsPool = new ObjectPool(10, this.ConfigureSocketEventArgs); this.socketBufferPool = ArrayPool.Create(256, 100); } public void Start() { this.listeningSocket = new Socket(this.writeEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp); this.listeningSocket.Bind(this.writeEndPoint); SocketAsyncEventArgs readArgs = this.socketEventArgsPool.Rent(); this.listeningSocket.ReceiveFromAsync(readArgs); while (true) { } } private void ReceivedSocketEvent(object sender, SocketAsyncEventArgs e) { // Rent a new Socket event arg right away and start listening for more packets. SocketAsyncEventArgs eventArgs = this.socketEventArgsPool.Rent(); this.listeningSocket.ReceiveFromAsync(eventArgs); this.socketEventArgsPool.Return(e); } private SocketAsyncEventArgs ConfigureSocketEventArgs() { byte[] buffer = this.socketBufferPool.Rent(256); var eventArg = new SocketAsyncEventArgs(); eventArg = new SocketAsyncEventArgs(); eventArg.Completed += new EventHandler(this.ReceivedSocketEvent); eventArg.SetBuffer(buffer, 0, 256); eventArg.RemoteEndPoint = this.readEndPoint; return eventArg; } } ``` ## Program: Server-side This just creates an instance of the Server, provides it with the IP address and ports needed to run, and then starts it. ```c# class Program { static void Main(string[] args) { Console.WriteLine(""Starting server""); var ip = new IPAddress(new byte[] { 10, 0, 1, 6 }); var server = new Server(ip, 11000, 11100); server.Start(); } } ``` ## Program: Client-side This app just opens a Socket on a different port and sends a bunch of datagrams to the server. If I just use a straight `while(true)` I see a massive amount of GC purges on the server side. If I place a `Task.Delay(1).Wait();` within the while loop, I didn't see any during a 3 minute run. Whereas without the `Task.Delay(1).Wait()` I see a GC almost every second. I understand that adding that delay slows down the number of messages sent to the server significantly, but I wanted to share in the event that it helps. ```c# class Program { static byte[] serverAddress = new byte[] { 10, 0, 1, 6 }; static void Main(string[] args) { var clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // Start listening/sending EndPoint remoteEndPoint = new IPEndPoint(new IPAddress(serverAddress), 11000); while (true) { SendDatagram(clientSocket, remoteEndPoint, ""Hello World!""); //Task.Delay(1).Wait(); } } static void SendDatagram(Socket clientSocket, EndPoint remoteEndPoint, string message) { byte[] msg = Encoding.ASCII.GetBytes(""This is a test""); clientSocket.BeginSendTo( msg, 0, msg.Length, SocketFlags.None, remoteEndPoint, new AsyncCallback(SendCompleted), clientSocket); } private static void SendCompleted(IAsyncResult result) { Socket socket = (Socket)result.AsyncState; socket.EndSendTo(result); } } ``` So the challenge I'm having is figuring out what is causing the GC calls. I see that the Diagnostic tooling says I'm using 17mb of ram, but when I run it outside of the IDE (debug build) it consumes about 3mb. I assume the bulk of the ram consumption is debugger related in the Diagnostic tooling. Could the debugger be causing the GC collections? Is there a means for me to track that outside of the debugger, or determine what objects are being collected? When I take the heap snapshots, the object count never changes, so there's no real way for me to tell from them what is happening. I ran this for 5 minutes, sending 14 million datagrams to the server. The ram usage and the heap size hardly budged. The GC collections continued though. This is reproducible on a File->New->NetStandard Console Project in Visual Studio 2017. ## dotnet --info ``` .NET Command Line Tools (1.0.0-preview3-004056) Product Information: Version: 1.0.0-preview3-004056 Commit SHA-1 hash: ccc4968bc3 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 ``` ## dotnet --version 1.0.0-preview3-004056" +14009 area-System.Linq Revisiting use of var in System.Linq.Expressions test code Using explicit types where the type is not immediately obvious. Automated code rewrite using a Roslyn code fix provider. +14010 area-System.Linq Cleaning up Error class in System.Linq.Expressions Removing some `Error` and `String` members that are no longer used. +14016 area-Microsoft.CSharp "Revert ""Microsoft.CSharp.RuntimeBinder.Tests""" Reverts dotnet/corefx#13985 +14017 area-System.Data CI Failure System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest ``` MESSAGE: System.Net.Sockets.SocketException : Address already in use +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at System.Net.Sockets.TcpListener.Start(Int32 backlog) at Microsoft.SqlServer.TDS.EndPoint.ServerEndPointHandler`1.Start() at System.Data.SqlClient.Tests.TestTdsServer.StartTestServer(Boolean enableFedAuth) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs:line 61 at System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs:line 22 +14018 area-System.Linq Test System.Dynamic.InvokeBinder. +14019 area-System.Linq [WIP] Add P2P reference to Microsoft.CSharp to System.Linq.Expressions.Tests Include the tests in the code coverage analysis of CSharp. As discussed at https://github.com/dotnet/corefx/pull/14014#discussion_r89675755 Before merge a coverage test should be done after #14016 has removed the duplication of tests. +14020 area-System.Collections Support limiting the buffer size in LargeArrayBuilder. Continuation of: #14006. Unfortunately, I have a habit of force pushing my commits, so I wasn't able to reopen the old PR. Anyway #12703 was merged this morning so this is no longer blocked; this needs #13628 to apply some optimizations to `Take`, but if this is merged beforehand, I can just update that PR with those changes instead (and vice versa). --- ### Description from original PR There are certain Linq methods, such as `Where` and `Take`, where we cannot pinpoint the exact number of elements the iterator will contain, but we can establish an upper bound on how many elements there are. For example, `list.Where(p)` can have at most `list.Count` elements, and `e.Take(5)` can have at most 5 elements. Currently, when we call `ToArray` on any of these iterators, the resizing pattern will be to allocate 4, then 8, then 16, etc. size buffers. This can be wasteful because e.g. if the source enumerable in `Where` contains 100 elements, we allocate space for 128 elements even though those last 28 slots will never be used. This PR adds support to `LargeArrayBuilder` to limit how many elements we allocate, so there is no extra space wasted. It should help drive down allocations in `Where`, `Where.Select`, & `Take` when the maximum count is far from the next power of 2. --- [Performance test][1] / [analysis](https://gist.github.com/jamesqo/0ca128f95f59cd434f7ec544ce09377e) There are major reductions in GCs (about 25%) when the length of `_source` is just above a power of 2, and the predicate returns true for every item. cc @JonHanna @VSadov @stephentoub [1]: https://github.com/jamesqo/Dotnet/blob/fd26359a7b7d53b0598887ab58f54d591f3b7b40/Program.cs +14021 area-System.Reflection Proposal: Add new GetValue method to System.Reflection "This new method would accept an ""object"" to which a Value could be copied instead of being unnecessarily boxed. Example of use would look like this: ``` static object boxedFloat = null; .... boxedFloat = fieldInfo.GetValue( myObject, boxedFloat ); ``` Boxing of the value would occur only once. This would eliminate unnecessarily memory allocations in situations when GetValue is called many times. When method is used on a class types, copying would not occur and stored object would be returned instead. One of the uses of GetValue method is User Interface based on MVVM (Model View Viewmodel) where values used to control an UI are pulled directly from the data. In realtime applications (like games) this boxing makes hundreds if not thousands of unnecessary memory allocations every second. Another use of GetValue is serialization, and having ability to serialize hundreds of values without the need of boxing/unboxing, would greatly improve memory usage and performace. There was also an idea https://github.com/dotnet/coreclr/issues/8277 that this new GetValue method would take a form of generic method, but I think this would limit the use as one of the advantages of working with System.Object is this abstraction that makes some parts of the code simpler. So, ideally this new method should remove the unnecessary boxing while keeping convenience of System.Object. Additionally please bear in mind this should work with both FieldInfo and PropertyInfo, as well as give option to get values from nested Value as in following example: ``` struct Vector3 { float x,y,z; } struct Transform { Vector3 position { get; set } } transform = positionProperty.GetValue( transformObject, transform ); boxedX = xField.GetValue( transform, boxedX ); DisplayValue( boxedX ); ``` (note intermixing fields with property)" +14022 area-System.Linq Wrong parameter name if passing generic type to Expression.New "`Expression.New(typeof(List<>))` throws an `ArgumentException` reporting the parameter name as ""constructor"" though the name of the parameter in question is ""type""." +14023 area-System.Linq Reuse _state in some iterators. There are some iterators where we can simply reuse `_state`, instead of defining another mutable int field. This PR removes all such fields & refactors their call sites to use `_state` instead, decreasing the number of fields in the object layout. cc @stephentoub @JonHanna @VSadov +14024 area-System.Linq Correct parameter name if passing generic type to Expression.New Fixes #14022 +14025 area-System.Linq Remove dead branch from Linq.Expressions.Compiler.ILGen.EmitNew The only way of hitting this method is either from some internal uses with cached ctors, or compiling a `NewExpression`. The tests included in #14024 demonstrate that these can never contain a ctor that contains generic parameters, so the check that they don't can never fail. Remove it. +14026 area-System.Linq [WIP] Use RuntimeHelpers.Equals to avoid spurious events in ExpandoObject As well as not raising the event when set with the same instance as the current value, will also not raise it when set to an identical valuetype value. Fixes #13831 +14028 area-Infrastructure Upgrade C# compiler to C# 7 I found out from https://github.com/dotnet/corefx/issues/13427#issuecomment-258941132 that C# 7 can now be used in corefx. However, trying to use C# 7 features does not appear to work locally; for example, this code snippet I inserted ```cs if (TryMove(out T[] array)) { return array; } ``` appears to result in a syntax error from the compiler: ``` C:\Users\james\Code\git\corefx\src\Common\src\System\Collections\Generic\LargeArrayBuilder.cs(146,31): error CS0443: Syntax error; value expected [C:\Users\james\Code\git\corefx\src\System.Linq\src\System.Linq.csproj] C:\Users\james\Code\git\corefx\src\Common\src\System\Collections\Generic\LargeArrayBuilder.cs(146,33): error CS1003: Syntax error, ',' expected [C:\Users\james\Code\git\corefx\src\System.Linq\src\System.Linq.csproj] ``` This was after doing a `git clean -xdf` and then `sync -p` to restore everything again. Is this expected to happen? If so, is there a way to build corefx with C# 7? (I thought the new compiler from the `Tools\` directory would be used, not the one installed on the machine.) If it's relevant: I installed VS 2017 RC the other day and can use new language features from the IDE. However, the `csc` in my PATH (from `%PROGRAMFILES(x86)%\MSBuild\14.0\Bin`) says it's version 1.3.1 and can only handle up to C# 6. +14029 area-System.Diagnostics Fixing a typo This change fixed a simple typo. +14031 area-Meta Add link to Adding APIs Guidelines [Adding APIs Guidelines](Documentation/coding-guidelines/adding-api-guidelines.md) +14032 area-System.Linq Interpreter doesn't correctly validate jumps to undefined labels An attempt to jump to a label that does not exist within an expression does not raise an `InvalidOperationException`, but instead throws an assertion error. In release I imagine it would hit an index-out-of-range when executed but I haven't confirmed (certainly it would do something not good). Previously building an interpreted lambda had included building a mapping of targets and branches which was then stored and never used, so this code was removed. Unfortunately since building this mapping had involved looking at ever label the opportunity to validate them was taken at that point, and that validation was also removed. +14033 area-System.Linq Interpreter doesn't validate against jumping into an inner block with a value Such an expression is accepted, though elsewhere code in the compiler expressly forbids it. The relevant validation in `Compiler.LabelInfo.ValidateJump` has never been present in `Interpreter.LabelInfo.ValidateJump`. Perhaps it could be made to be allowed in both, but it should certainly be consistent. +14034 area-System.Linq Fix two bugs with goto expressions in interpreter. Correctly validate jumps to undefined labels in interpreter Fixes #14032 Validate against jumping into an inner block with a value. Fixes #14033 (The idea of allowing such jumps if they would be well-defined could be investigated, but this brings the interpreter behaviour into line with the compiler behaviour). Tests included cover some other previously untested uses of branching expressions. +14035 area-System.Net SslStream override FlushAsync SslStream should override FlushAsync over its internal stream; otherwise the default Stream implementation is used; which creates a new task which runs the sync/blocking flush and queues it to the threadpool. Default Stream implementation: ```csharp public virtual Task FlushAsync(CancellationToken cancellationToken) { return Task.Factory.StartNew(state => ((Stream)state).Flush(), this, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); } ``` Resolves https://github.com/dotnet/corefx/issues/14038 /cc @stephentoub +14036 area-System.Runtime ArgumentNullException produces different messages when run on Windows or Docker "ArgumentNullException produces different messages when running on Windows or Docker. Running a unit test for a method where sanity checks exist (for null values), produces the following output: - Windows: ""Value cannot be null.\r\nParameter name: foo"" - Docker (from microsoft/dotnet:latest): ""Value cannot be null.\nParameter name: foo"" Code snippet for the sanity check: `if (null == foo) { throw new ArgumentNullException(nameof(foo)); }` Tested with the latest version of .NETCore 1.1" +14037 area-System.Net System.Net.Sockets.Socket Accept() method throws System.ArgumentException on Linux instead of SocketException when no connection to accept "On Windows, when using System.Net.Sockets.Socket accepting connections with Accept() method and no more connections are in queue a SocketException is thrown. However, when same code is run on Linux, a System.ArgumentException is thrown instead. Net Core documentation does not list ArgumentException as possible Exception. Net Core documentation does not specify what Accept throws when no requests are queued. However, .Net framework documentation states: ""If you call this method using a non-blocking Socket, and no connection requests are queued, Accept throws a SocketException.""" +14038 area-System.Net SslStream should override FlushAsync SslStream should override FlushAsync over its internal stream; otherwise the default Stream implementation is used; which creates a new task which runs the sync/blocking flush and queues it to the threadpool. Default Stream implementation: ```csharp public virtual Task FlushAsync(CancellationToken cancellationToken) { return Task.Factory.StartNew(state => ((Stream)state).Flush(), this, cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); } ``` +14041 area-System.Net Consider exposing Socket(SafeCloseSocket fd) constructor `System.Net.Sockets.Socket` currently does not expose any mechanism to instantiate a socket from an existing file descriptor/handle. This proposal aims to expose this functionality to improve interop with external applications that manage socket connections. # Rationale and Usage Currently, a socket must be both created and managed by the user application. While this is desired behaviour in most cases, there is no mechanism to take an existing socket handle/file descriptor and make use of it within the user application. If one wanted to use a socket that was created by an external application, the only option (outside of reflection hacks) is to reimplement the calls to the underlying platform sockets with P/Invoke - largely removing the benefits that the managed socket classes provide. More specifically, this improves interop with existing applications that manage socket connections, such as systemd and the socket activation feature. In this scenario, systemd creates an unmanaged socket to listen for connections. Once a connection is established, a .NET application is launched and a file descriptor that references the unmanaged socked is passed to it through environment variables. Without the ability to create a managed socket from a file descriptor, the connection will need to be reset and then reestablished using the managed APIs - rather than cleanly being passed through and maintained. # Proposed API ```c# namespace System.Net.Sockets { // Previously implemented socket class public partial class Socket : System.IDisposable { // Existing constructors public Socket(System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType) { } public Socket(System.Net.Sockets.SocketInformation socketInformation) { } public Socket(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType) { } private Socket(SafeCloseSocket fd) { } // Additional existing members omitted // Proposed member public Socket(IntPtr fileDescriptor, AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) { } } } ``` # Details * Adding this rather than exposing the existing Socket(SafeCloseSocket fd) constructor will keep the rest of the socket PAL internal, as there's currently public no way (as far as I can tell) to create an instance of SafeCloseSocket from a IntPtr. * This will align with user expectations coming from other languages, such as Python, which has a similar method to create a socket from a file descriptor (see [socket.fromfd(fd, family, type[, proto])](https://docs.python.org/2/library/socket.html#socket.fromfd)). * Platforms that don't support wrapping unmanaged sockets (or that don't expose them, such as UWP?) will throw PlatformNotSupportedException. +14044 area-System.Linq Fixing regression in CallFactoryTests Merging https://github.com/dotnet/corefx/commit/c3938a0589f3a8d51b6d8391f73ec42bf8cf4d61 caused a regression because other `MethodCallExpression` tests were added in the meantime. CC @karelz, @JonHanna +14046 area-System.Runtime Use more robust hash code combiner in ValueTuple - Use random seed to randomize the hashcodes - Use 64-bit state to combine the hashcodes (e.g. use the marvin32 hashcode combiner that is used for string hashing in coreclr) Note: `string.GetHashCode` has the right implementation. +14047 area-System.Runtime Add RuntimeHelpers.IsReferenceOrContainsReferences() ```c# namespace System.Runtime.CompilerServices { public static class RuntimeHelpers { public static bool IsReferenceOrContainsReferences(); } } ``` This method will return true if T is reference type; or if T is value type that contains reference type fields. false otherwise. This API is intended to be used primarily for optimizations: - Generic List calls Array.Clear on its underlying array in the implementation of Clear, RemoveAll, RemoveRange methods today. It has to do so because the generic argument can contain references which must be freed for GC. It can be skipped using this method when not required. - Algorithms for memory manipulations can have optimized paths for memory blocks without GC references. This method can be used to determine whether the optimized path is safe to use. `Span` is example of such memory manipulation algorithms. It going to use this API internally in its implementation. This API addition was tracked by CoreCLR issue. https://github.com/dotnet/coreclr/issues/1135 has a lot of discussion about the right name for this API. The alternative names considered include `ContainsReferences`, `IsGCPointerOrContainsGCPointers`. +14048 area-Meta WinRT API DateModified not copied and can't create folders inside some folders "Hi I'm not sure if this is the correct repository to be raising this issue. Please let me know where I should raise it if it isn't. I'm using the Windows.Devices, Windows.Foundation and Windows.Storage libraries to write a WinRT application that will sync some files from a PC to a Windows Phone. See here (https://github.com/massimocode/windows-phone-music-sync). However, I've noticed some annoying behaviour, as follows: 1) If I drag and drop a file onto my phone using Windows Explorer, the original file's DateModified is written to the phone. If I copy the same file using WinRT's StorageFile.CopyAsync method, the DateModified is not copied over and it seems to use the current time as the DateModified. I've tried updating the ""System.DateModified"" property manually after the file is copied and I get an error saying the property is read only. 2) Using Windows Explorer, I can create folders inside the phone's Music folder (which is marked as Read Only). However, using StorageFolder.CreateFolderAsync I get an error saying: ``` System.Runtime.InteropServices.COMException: Unspecified error Cannot create items within this StorageFolder. This could be encountered if the folder was obtained by creating a query using grouping options. ``` Interestingly, I can copy files to the Music folder using the API (using the StorageFile.CopyAsync method), I just can't create folders. Thanks guys" +14049 area-System.Threading Dataflow needs performance tests > corefx\src\System.Threading.Tasks.Dataflow\tests>msbuild /t:BuildAndTest /p:Performance=true /p:ConfigurationGroup=Release /p:OSGroup=Windows_NT > ... > Discovering: System.Threading.Tasks.Dataflow.Tests > Discovered: System.Threading.Tasks.Dataflow.Tests > Info: System.Threading.Tasks.Dataflow.Tests has no tests to run > > Given that Dataflow is often used in code that is performance critical, I think it should have at least a few perf tests. This is motivated by a change I'm considering that may, or may not, significantly improve the performance of the scheduler and found no tests available to tell one way or the other. +14050 area-System.Xml System.Xml.ReaderWriter 4.3.0 not compatible with .NET Framework 4.6? When updating our .NET Framework 4.6 projects to NuGet package System.Xml.ReaderWriter 4.3.0 it works on some machines, but fails to build on others with an error: CS1703: Multiple assemblies with equivalent identity have been imported: '...MySolution\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll' and 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\Facades\System.Xml.ReaderWriter.dll'. Remove one of the duplicate references. Downgrading System.Xml.ReaderWriter to 4.0.11 everything works fine on all machines. Working machines are running VS2015, the other machine has got a .NET Framework 4.6.2 SDK installed. +14051 area-System.Linq Bugs with argument validation to Expression.Property with indices "1. The argument name to use in exceptions is assumed to always be ""indexer"" but there is a path to it where the relevant argument is called ""propertyName"". 2. If a property has a setter with no parameters then before the validation check designed to catch that takes place the property-name taking overload will throw an `OverflowException`. This can happen even if another overload is correctly specified, so can throw on code that should not throw at all. 3. While the last argument type to the setter is checked for matching the type of the parameter, this is not done for the getter. 4. When an instance is given for a static property, or none for an instance property, the error message complains about methods, not properties. 5. Error message for finding a property by name with a null indexer expression throws `NullReferenceException` trying to build error message. 6. Check for property found by name has at least a getter or a setter happens after attempt to validate the (non-existent) getter, throwing a `NullReferenceException`. This could block an attempt to use an overload that should be successful. 7. If there is an ambiguous match on an overloaded index property, `InvalidOperationException` is thrown, though `ArgumentException` seems more appropriate. Of these number 7 seems perhaps risky to fix (a breaking change that could quite plausibly break real code) and is debatable anyway. The rest should be fixed. " +14052 area-System.Linq Fix issues in validation of indexed property expressions. "Use ""propertyName"" as parameter to `ArgumentException` when appropriate. Throw correct error on setter with no parameters. Check getter type matches property. Mention ""property"" in attempt to use static method for instance or vice versa, not ""method"". Do not throw trying to build error message for null indexer expression. Do not throw in by-name search for property if one with no getter or setter is found (throw later if it was the only overload). Fixes #14051" +14053 area-System.Threading New generic TaskFactory.StartNew API Hi, I would like to suggest to add an additional overload to [TaskFactory](https://msdn.microsoft.com/library/system.threading.tasks.taskfactory_methods(v=vs.110).aspx) To the existing StartNew(Action, Object, CancellationToken, TaskCreationOptions, TaskScheduler) I would add StartNew(Action, T, CancellationToken, TaskCreationOptions, TaskScheduler) The reason is not to force the developer to do runtime checks and casts when the invoked method accepts an object (or a collection) of type T which is well-known at compile time Current code: ```c# private void Insert(Object state) { var entities = state as IEnumerable; using (var context = GetDataContext()) { context.entities.AddRange(entities); context.SaveChanges(); } } Task.Factory.StartNew(Insert, entityList); //invoked with ``` Desiderata: ```c# private void Insert(IEnumerable entities) { using (var context = GetDataContext()) { context.entities.AddRange(entities); context.SaveChanges(); } } Task.Factory.StartNew(Insert, entityList); //invoked with ``` +14055 area-Infrastructure Add useSharedDesignerContext.txt marker Fixes #13934 The XAML designer needs to classify packages as safe to share and avoid reload. This is required to have reasonable performance in the designer, because reloading the entire framework is currently quite expensive due to the architecture of the designer and the fact that its running on Desktop. The designer cannot reuse all NuGet assemblies since some may register things in their static constructors (EG: dependency properties) that need to be re-registered as the designer context is refreshed. None of our assemblies do this so we're an easy target for optimization. For now we'll add a marker that helps the designer identify our packages for this optimization. In the future the plan is to remove this once the designer can be refactored to have a NETCore component that loads the user code and is fast to restart/reload. /cc @lutzroeder @chabiss +14056 area-System.Linq Some cleanup for ReadOnlyCollectionBuilder This type is a big dark spot for unit testing and seems to have several issues with regards to exception behavior etc. Prior to proposing some semantic changes, I'm getting all of the stylistic aspects out of the way in this PR. +14057 area-System.Linq Making ReadOnlyCollectionBuilder a bit more friendly for code coverage The body of the `InvalidCastException` handlers can never reach the end because we call a method that throws unconditionally. Changing it to a typical `Error` pattern where the method returns the exception to throw and putting a `throw` statement on the caller side. +14058 area-System.Linq Removing unnecessary SuppressFinalize call in ReadOnlyCollectionBuilder The enumerator is not finalizable not do subclasses exist (in fact, we should likely mark it `sealed` too), so it seems the call to `GC.SuppressFinalize` is redundant. +14059 area-System.Linq Quirks with exception behavior of ReadOnlyCollectionBuilder There are several issues with `ReadOnlyCollectionBuilder`'s exception behavior: - [x] Use of `ContractUtils.Requires` results in `ArgumentException` being thrown, when a more derived type would be more appropriate (e.g. for range checks or null checks). - [ ] `Insert` lacks a check for `index` being larger than or equal to 0, resulting in an exception from the underlying `Array.Copy`. Note that `List` does a cast to `uint` as part of the bounds check to cover this case. - [ ] The indexer doesn't check for `index` being larger than or equal to 0, resulting in accessing the underlying array with a negative index, causing `IndexOutOfRangeException`. Note that `List` does a cast to `uint` as part of the bounds check to cover this case. - [ ] `Reverse` lacks good bounds checks which can result in reversing a range of elements in the underlying array including the trailing empty slots, which then become visible. - [ ] Exception behavior is not documented. +14060 area-Meta Enable CS2229 and CA2237 This change enables FxCop serialization rules requiring serialization constructors on ISerializable types and [Serializable] on ISerializable types. +14061 area-System.Linq Throwing more derived exception types in ReadOnlyCollectionBuilder Eliminating the use of `ContractUtils.Requires` which results in throwing `ArgumentException` where more derived types are more applicable. Throwing a more derived exception type should not be a breaking change. This also makes the behavior more consistent with `List`. Contributes to https://github.com/dotnet/corefx/issues/14059 with more changes to follow. We're missing various cases, but adding these would be breaking changes because the exception type may change (for the better though). I'll submit these in a separate PR where we can discuss. A test suite for `ReadOnlyCollectionBuilder` is coming up as well. +14062 area-Infrastructure [dev/eng] Overhaul ref and src project references, and start binplacing things "This has a few components to it, and much of it is still very rough. There are also still a few hacky things in here which will need cleaning up later on. This branch picks up after @weshaggard 's branch from a couple weeks back. It changes the way dependencies are specified in all of the reference and runtime assembly projects in the repo. * All project.json's have been removed and have been converted to the following: * ref projects: `` to other live-build reference assemblies * src projects `` to generic assembly names. These references are now resolved through a ""TargetingPack"" folder which contains all of the relevant reference assemblies for the framework being targeted. * Ref and src projects now ""binplace"" their outputs to a ""TargetingPack"" or ""Runtime"" directory for their framework. *Still hacky* * Tests have not been updated to understand this new paradigm, so they have been disabled. * Only `netcoreapp` configurations have been made to work. The other configurations no longer build successfully, and will need similar work as above, depending on what we decide to do about them. @weshaggard @ericstj , @chcosta " +14065 area-System.Xml Add switch for resolving External URI in XslTransform and XslCompiledTransform Resolves https://github.com/dotnet/corefx/issues/9876. In CoreFX by default XSL Transform does not allow external URIs to be resolved in a XSL. This PR adds an `AppContext `switch to have the option to allow that. Also, some tests examining this functionality have been re-enabled here. cc: @danmosemsft @AlexGhiondea @stephentoub +14066 area-System.Linq Improving some XML documentation in System.Linq.Expressions Improving the docs for `Dynamic` functionality. We did an earlier pass over `System.Linq.Expressions` prior to moving this stuff in, so getting it on par now. +14067 area-Infrastructure Merge master to dev/eng No conflicts just trying to keep us updated. @ericstj @mellinoe @chcosta +14068 area-System.Net HttpWebRequest and HttpWebResponse serialization Both of these types have serialization documented as being obsoleted in NetFX. The current behavior in NetFX: `HttpWebRequest` will fail deserialization (internal property not serializable): `System.Runtime.Serialization.SerializationException : Type 'System.Net.WebRequest+WebProxyWrapper' in Assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.` `HttpWebResponse` will pass a simple round-trip test that is currently failing in Core. @weshaggard @danmosemsft @karelz PTAL /cc @stephentoub @davidsh +14069 area-System.Net Expose additional methods from HttpWebRequest and Response Fixes #13900 This PR contains both contributions made by @tijoytom in #13441 (already reviewed in that PR). I'm addressing the PR comments and creating a new one while he's OOF. @stephentoub @davidsh @karelz PTAL +14070 area-Infrastructure Remove hack of copying NuGet dlls to get latest mappings In order to get the latest nuget mappings, we decided to substitute the version of NuGet that comes inside of the CLI which today we do with [these lines](https://github.com/dotnet/corefx/blob/master/init-tools.cmd#L72-L78). We should remove that hack and figure out a way of getting latest mappings differently. +14071 area-System.Xml Cleanup System.Private.Xml tests Remove commented-out tests, remove or fix skipped tests, etc. +14073 area-System.Linq Removing Map helper method in favor of Array.ConvertAll As suggested by @stephentoub in a previous PR, we can do away with our `Map` extension method (which slowly moved from `IList` to `T[]` for the input) and now offers the same functionality as `Array.ConvertAll`. +14074 area-System.Linq Removing PureAttribute annotation Removing two `[Pure]` annotations that are of no use. +14075 area-System.Linq Improving static typing on CollectionExtensions helpers `AddLast` never needed an `IList` as the input, so we can tighten it to `T[]`. `AddFirst` is used in two different contexts, one where a want to operate on `T[]` and one where we operate on `ReadOnlyCollection` and always wrap the result in a `TrueReadOnlyCollection`. Adding a helper for both cases, removing code elsewhere and also making a call to `Expression.Invoke` cheaper because it now receives a `TrueReadOnlyCollection` rather than a `T[]` in its `IEnumerable` argument. +14076 area-System.Linq Make IOrderedEnumerable Covariant Fixes #2317 Not changing version as per https://github.com/dotnet/corefx/issues/2317#issuecomment-263419405 +14077 area-System.Linq Restore Dynamic APIs on Expression Now that `System.Dynamic.Runtime` has been removed, should the `Dynamic` factory methods on `Expression` come back? They are currently hiding under the `ExpressionExtension` internal class. Also, what's the plan for the visitors? Right now, we have `DynamicExpressionVisitor` with `VisitDynamic` but we lack the method on the `ExpressionVisitor` base type. Should this be restored as well? +14078 area-System.Linq Add HasAtLeast(this IEnumerable, int) "## Motivation When working with sequences of just `IEnumerable` calling `Count()` can be very expensive if `Count()` is forced to enumerate through the whole sequence. When checking if a sequence has X elements or more calling `Count()` is not just expensive but wasteful. ## Proposal ```diff namespace System.Linq { public static class Enumerable { + /// + /// Returns if a sequence has at least a certain amount of elements. + /// + /// The type of elements of . + /// An to check the length of. + /// The minimum amount of items that should have. + /// if has at least elements. otherwise. + /// is . + /// must be zero or greater. + public static bool HasAtLeast(this IEnumerable source, int atLeast); } } ```" +14079 area-System.Linq Cleanup of code in DynamicExpression Some trivial cleanup to make the code more concise using C# 6.0 features, just like we did for other types prior to the merge of `System.Dynamic.Runtime`. Also opened https://github.com/dotnet/corefx/issues/14077 with a few observations on divergence of the API compared to the .NET Framework due to the original refactoring into `System.Dynamic.Runtime`. +14080 area-System.Linq Adding tests for ReadOnlyCollectionBuilder Adding tests to cover all functionality, also documenting issues/quirks described in https://github.com/dotnet/corefx/issues/14059. We can fix these issues separately and review them one-by-one for breaking change potential. +14081 area-System.Linq Expressions: Remove two cases of creating a readonly list twice from the same source +14082 area-System.Numerics Add logging for divrem tests In the case of a failure in divrem, log the random parameters being operated on. This should make the next hit on https://github.com/dotnet/corefx/issues/7806 reproducible. @mellinoe +14083 area-System.Runtime Fixed Join_ObjectArray test in StringTests "Join issue for first null in object array is fixed. So calling string.Join("","", null, 1, 2, 3) now return "",1,2,3"", but not empty string as before. See dotnet/coreclr#8114" +14084 area-System.Collections Add ConcurrentBag Clear APIs Implement ConcurrentBag.Clear API. See https://github.com/dotnet/corefx/issues/2338 issue. +14086 area-System.Linq Short-circuit within nullable arithmetic instructions. The Add, Div, Mul and Sub instructions are already using an optimised by-pass of Pop()/Push(). In the case of the LHS value being null though, they still read the RHS and then set the position on the stack occupied by the (null) LHS to null. Skip this. +14087 area-Infrastructure Upgrade buildtools from 01010-02 to 01029-01 To pick up updated compiler cc: @jkotas, @weshaggard +14088 area-System.Runtime Bring back TypedReference TypedReference has not been very useful type so far, with non-trivial implementation cost, and that is why we have decided to not include it in .NET Standard. However, the recent discussion #14021 revealed that it is a good building block for new high-performance reflection APIs that avoid boxing and address other reflection limitations. We should consider bringing it back. The steps are: 1. Bring TypedReference back (to .NET Standard 2.0?) 2. Add methods to TypedReference that make it useful (e.g. use generic methods as a first class replacement for the undocumented C# `__refvalue` and similar keywords) 3. Add high-performance reflection APIs that avoid boxing (see #14021 for discussion) This issue is tracking the first step. +14089 area-Infrastructure rhel rid should not include a minor. rhel-7.2-x64 should be rhel-7-x64 Just like Debian (https://github.com/dotnet/corefx/issues/6170), minor releases are point releases. The minor should not be part of the rid. +14090 area-System.Collections Port thread pool's work stealing implementation to ConcurrentBag Every Add to a ConcurrentBag allocates a new Node to store into the thread local list, which is a linked list. In contrast, ThreadPool also uses a work-stealing queue, but one that's array-based, avoiding needing an extra allocation per item. We should investigate using thread pool's work-stealing implementation in ConcurrentBag, to avoid that allocation. And if for some reason it's not possible exactly as is (e.g. the thread pool implementation assumes that the stored items are references and thus can be read/written atomically), there are potentially adaptations that would allow it to work (e.g. ConcurrentBag could wrap value types in pooled objects). +14091 area-System.Linq Using InterpretedFrame.Dup helper For some reason, we never used the `Dup` method here. +14092 area-System.Linq Removing unnecessary code analysis suppressions Some remnants that are no longer relevant. +14093 area-Infrastructure Enable Dumpling service to collect dumps from hangs/crashes in CI/full builds +14095 area-Meta Enable and fix/baseline worthwhile FXCop rules on CoreFX codebase dotnet/coreclr#7880 covers this for mscorlib. @alexperovich will drive this. Suggested workflow * Put checkboxes in this issue for all valuable rules (not any that are too noisy/not valuable) * In one commit, enable a rule, fix any easy violations and baseline the rest. This prevents us going backwards. * Open separate issue for someone to clear out the baseline for the rule/s. Compiler Warning: - [x] CS0162: Unreachable code detected - [x] CS0429: Unreachable expression code detected - [x] CS????: Remove unused locals Assembly: System.Runtime.Analyzers - [x] CA2002: Do not lock on objects with weak identity Assembly: Microsoft.Maintainability.Analyzers - [ ] CA1801: Review unused parameters - [ ] CA1806: Do not ignore method results - [ ] CA1812: Avoid uninstantiated internal classes - [ ] CA1823: Avoid unused private fields Assembly: Microsoft.QualityGuidelines.Analyzers - [ ] CA1821: Remove empty finalizers Not yet implemented analyzers: - [ ] CA1811: Avoid uncalled private code dotnet/roslyn-analyzers#464 +14096 area-System.Linq Removing partial modifier on CollectionExtensions No longer needs `partial` after all functionality from `Common` has been merged into `System.Linq.Expressions`. +14097 area-System.Linq Move ExpressionVisitorUtils and related types to System.Linq.Expressions Moving more stuff out of `Common` into `System.Linq.Expressions` after the removal of `System.Dynamic.Runtime` as a separate assembly. +14098 area-Infrastructure [WIP] Engineering docs updated This is an update to our documentations about our engineering plans. It is definitely a work in progress but sharing so folks have the context and can provide some feedback. @ericstj @mellinoe @joperezr @chcosta cc @danmosemsft @karelz as you guys expressed some interest in this. skip ci please +14099 area-System.Linq Removing SyncRoot field from ReadOnlyCollectionBuilder As discussed in https://github.com/dotnet/corefx/pull/14056, removing the `_syncRoot` field and simply returning `this`. @VSadov, @stephentoub +14100 area-System.Linq Avoiding some allocations in CallSite.CreateCustomUpdateDelegate This method creates two dynamically growing `List` instances even though the number of elements is known upfront, so we can use the new `ArrayBuilder`, which also has an optimized `ToReadOnly` that wraps the underlying array in a `TrueReadOnlyCollection` rather than making a copy. While looking at this, I noticed a few more things: * `ArrayAccess` is called with the `params Expression[]` overload, causing a copy to be created. Now calling the `IEnumerable` overload, passing it a `TrueReadOnlyCollection`. * The `Invoke(rule, ...)` expression is used multiple times, leading to multiple allocations of the node and its children collection. Reuse this part of the tree. * The `Assign(rule, ArrayAccess(...))` expression is used multiple times, with the same effects as described above. Reuse this part of the tree. Note that this method always calls `Compile` on the resulting expression, so there are no worries about reference equal subexpressions; the user can never observe the tree that was created. +14101 area-System.Net Ensure that all System.Net tests are running against NetFX Ensure that all System.Net Functional tests run against both Core and NetFX. /cc @karelz @davidsh +14103 area-System.Net [WinHttp] WebSocket.ReceiveAsync throws internal exception type WinHttpException "When the remote side of the conversation closes the connection abruptly while a WinHttpWebSocket is receiving the Exception thrown is a WinHttpException. That type is internal and therefore users cannot ""catch"" that specific type. Also, it's likely a different exception type would occur on non-windows platforms and it should be consistent in order to allow writing code that works similarly across all platforms. ``` System.Net.Http.WinHttpException: The connection with the server was terminated abnormally at System.Net.WebSockets.WinHttpWebSocket.InternalReceiveAsync(ArraySegment`1 buffer) at System.Net.WebSockets.WinHttpWebSocket.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.Relay.WebSocketStream.d__33.MoveNext() ``` Build used: %USERPROFILE%\.nuget\packages\System.Net.WebSockets.Client\4.3.0\runtimes\win\lib\netstandard1.3\System.Net.WebSockets.Client.dll AssemblyVersion: 4.0.1.0 AssemblyFileVersion: 4.6.24705.01 AssemblyInformationalVersion: 4.6.24705.01. Commit Hash: 4d1af962ca0fede10beb01d197367c2f90e92c97 Timestamp: 11/4/2016 8:38 PM" +14104 area-System.Net Add missing attrib to SocketInformation This attrib is in standard but was overlooked in the port. Contributes to https://github.com/dotnet/corefx/issues/13900 @CIPop +14105 area-System.Xml "XmlWriter stable build missing ""Path"" parameter in ""Create"" method" Not sure exactly what's going on here, but in my current .NET Core project, I can't seem to use the following: `XmlWriter.Create(filepath, xmlwritersettings);` The create method with that signature doesn't exist in my assembly version (4.3.0 stable). However, the method shows up in the reference code - what am I missing? +14106 area-System.Net Missing System.Net enums These are missing ``` T:System.Net.TransportType F:System.Net.Sockets.AddressFamily.Max ``` +14107 area-System.Net Add missing System.Net Disposables These NS2.0 are missing ``` M:System.Net.Security.NegotiateStream.Dispose(System.Boolean) M:System.Net.Security.SslStream.Dispose(System.Boolean) IDisposable on public class FtpWebResponse : WebResponse, IDisposable ``` +14108 area-System.Net Add missing WebHeaderCollection members These are NS2.0 but missing ``` public class WebHeaderCollection : NameValueCollection, IEnumerable, ISerializable { public void Set(HttpRequestHeader header, string value); public void Set(HttpResponseHeader header, string value); public override void Set(string name, string value); } ``` +14110 area-Infrastructure Restoring Microsoft.NETCore.App 1.0.0-preview2-1-003177 produces downgrade warnings "I downloaded the latest .NET Core 1.1 SDK from https://go.microsoft.com/fwlink/?LinkID=835014. Strangely enough it downloads _dotnet-dev-win-x64.1.0.0-preview2-1-003177.exe_. * tweaked the global.json to point to this version, * tweaked project.json to point to Microsoft.NETCore.App 1.1.0 and netcoreapp1.1: ``` ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.1.0"", ""type"": ""platform"" }, ""frameworks"": { ""netcoreapp1.1"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ``` While attempting to restore the packages I get the following warnings: ``` C:\Program Files\dotnet\dotnet.exe restore ""D:\Amber\WebApplication1\.vs\restore.dg"" log : Restoring packages for D:\Amber\WebApplication1\src\WebApplication1\project.json... log : Installing Microsoft.IdentityModel.Logging 1.1.0. log : Restoring packages for tool 'Microsoft.AspNetCore.Razor.Tools' in D:\Amber\WebApplication1\src\WebApplication1\project.json... log : Restoring packages for tool 'Microsoft.AspNetCore.Server.IISIntegration.Tools' in D:\Amber\WebApplication1\src\WebApplication1\project.json... log : Restoring packages for tool 'Microsoft.DotNet.Watcher.Tools' in D:\Amber\WebApplication1\src\WebApplication1\project.json... warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.IdentityModel.Tokens (>= 5.1.0) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.AspNetCore.Diagnostics (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.AspNetCore.Mvc (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.AspNetCore.Server.IISIntegration (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.AspNetCore.Server.Kestrel (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.AspNetCore.StaticFiles (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.Extensions.Configuration.EnvironmentVariables (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.Extensions.Configuration.Json (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.Extensions.Logging (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.Extensions.Logging.Console (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.Extensions.Logging.Debug (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) warn : Detected package downgrade: System.Security.Cryptography.Algorithms from 4.3.0 to 4.2.0 warn : WebApplication1 (>= 1.0.0) -> Microsoft.Extensions.Options.ConfigurationExtensions (>= 1.1.0) -> NETStandard.Library (>= 1.6.1) -> System.Security.Cryptography.Algorithms (>= 4.3.0) warn : WebApplication1 (>= 1.0.0) -> System.Security.Cryptography.Algorithms (>= 4.2.0) log : Writing lock file to disk. Path: D:\Amber\WebApplication1\src\WebApplication1\project.lock.json log : D:\Amber\WebApplication1\src\WebApplication1\WebApplication1.xproj log : Restore completed in 17127ms. ``` Whenever I try building it I get the following: ``` 1>------ Build started: Project: WebApplication1, Configuration: Debug Any CPU ------ 1> C:\Program Files\dotnet\dotnet.exe build ""D:\Amber\WebApplication1\src\WebApplication1"" --configuration Debug --no-dependencies 1> Project WebApplication1 (.NETCoreApp,Version=v1.1) will be compiled because inputs were modified 1> Compiling WebApplication1 for .NETCoreApp,Version=v1.1 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. Microsoft.IdentityModel.Tokens 5.1.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. Microsoft.NETCore.App 1.1.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. NETStandard.Library 1.6.1 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. System.Net.Http 4.3.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. System.Net.Security 4.3.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. System.Security.Cryptography.Cng 4.3.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. System.Security.Cryptography.Csp 4.3.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. System.Security.Cryptography.OpenSsl 4.3.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1>D:\Amber\WebApplication1\src\WebApplication1\project.json(22,54): warning NU1012: Dependency conflict. System.Security.Cryptography.X509Certificates 4.3.0 expected System.Security.Cryptography.Algorithms >= 4.3.0 but received 4.2.0 1> Compilation succeeded. 1> 9 Warning(s) 1> 0 Error(s) 1> Time elapsed 00:00:02.2908942 1> ``` Microsoft Visual Studio Enterprise 2015 Version 14.0.25425.01 Update 3 Microsoft .NET Framework Version 4.6.01055 Microsoft .NET Core Tools (Preview 2) 14.1.21111.0 NuGet Package Manager 3.5.0 " +14112 area-System.Security Add PasswordDeriveBytes and CryptDeriveKey methods Replacement for PR https://github.com/dotnet/corefx/pull/13925/commits/d14d0b8920297a04b1da0b09f3c53247f71eea80 which became corrupt; it has already been approved +14113 area-System.Xml Fix and re-enable XSLT checksum tests Fixes https://github.com/dotnet/corefx/issues/9877 Many XSLT tests used to calculate checksums to verify the result of a transformation. This type of verification caused flakiness in these tests. In this PR, we replace that verification (comparison with an expected checksum value) by comparing the transformed xml with the expected xml using `XmlDiff`. cc: @danmosemsft @stephentoub @AlexGhiondea @joperezr +14114 area-System.Net Expose AddressFamily.Max and some Disposes Fixes https://github.com/dotnet/corefx/issues/14106 Fixes https://github.com/dotnet/corefx/issues/14107 The adding of IDisposable to FtpWebResponse isn't really necessary, as it's on the base class. It just removes the diff. The other two classes modified don't have it. @CIPop +14115 area-System.Linq Using GetParametersCached in more places in System.Linq.Expressions Found a few places where we called `GetParameters` rather than `GetParametersCached` which we use pretty much everywhere. It seems a lot of code in the interpreter didn't use it and some code in the DLR didn't either, so introducing it in these places. +14116 area-System.Linq Restoring the use of GetBaseDefinition in IsOverridden in DynamicObject Looking at the original code in https://referencesource.microsoft.com/#System.Core/Microsoft/Scripting/Actions/DynamicObject.cs,42ff7d1d8461d3f2 it seems that this method was changed to a suboptimal algorithm to compensate for the removal of `GetBaseDefinition` a while back. Now that this method is back, it seems we can revert back to the original. Note that the (now reverted) replacement would also pick up shadowing methods (using `new`) if their name and parameter types match. It didn't bother to check for the return type, so some weirdness would have occurred when it picked up such an unexpected method. +14117 area-System.Diagnostics Test failure: System.Diagnostics.Tests.ProcessTests/TestWorkingSet64 Opened on behalf of @jiangzeng The test `System.Diagnostics.Tests.ProcessTests/TestWorkingSet64` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Diagnostics.Tests.ProcessTestBase.Dispose(Boolean disposing) at System.IO.FileCleanupTestBase.Dispose() at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) Build : Master - 20161129.02 (Core Tests) Failing configurations: - OSX.1011.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161129.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FTestWorkingSet64 +14118 area-System.Data Missing SQL error code 40020, 40143, 40166, and 40540 for retry. About SQL Database transient error code. Reference source and corefx are are different. Reference source https://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlInternalConnectionTds.cs,457 corefx https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs#L115 The cause is the following commit. https://github.com/dotnet/corefx/commit/e48f6bda60018b5c3fdeefd446a67e8488b295d0 I can't found any discussion about this commit. Is it correct change ? +14119 area-System.Linq Consider adding more LINQ operators from Ix.NET https://github.com/dotnet/corefx/issues/13842 introduces `TakeLast` and `SkipLast` which existed in [Ix.NET](https://github.com/Reactive-Extensions/Rx.NET/tree/master/Ix.NET/Source/System.Interactive) (`System.Interactive`, which is part of the Reactive Extensions project) for a long time. This may be a good time to review other operators we got in Ix.NET and see whether they're worth adding to .NET proper. I'm pasting a short selection (using the Ix names) below: ### Min and Max with IComparer No overloads of these operators exist with an `IComparer`. The existing overload uses `Comparer.Default` to get the comparer. It seems an omission that we don't provide an option to pass in a custom comparer. ```csharp public static TSource Min(this IEnumerable source, IComparer comparer); public static TSource Max(this IEnumerable source, IComparer comparer); ``` ### MinBy and MaxBy to select element(s) with lowest/highest key value Similar to `MinimalBy` and `MaximalBy` in Mathematica. The current overloads with a `Func` are merely shortcuts for `xs.Select(f).Max()` rather than providing a means to get the list of values that have the lowest projected value (e.g. the list of people with the lowest value for `Age`). ```csharp public static IList MinBy(this IEnumerable source, Func keySelector); public static IList MinBy(this IEnumerable source, Func keySelector, IComparer comparer); public static IList MaxBy(this IEnumerable source, Func keySelector); public static IList MaxBy(this IEnumerable source, Func keySelector, IComparer comparer); ``` ### Concat (or Flatten or Unwrap) Just like `Task>` can be unwrapped into `Task` or `AggregateException` can be flattened. Obviously, this is just a macro for `xss.SelectMany(xs => xs)`, but possibly more descriptive and having better performance. ```csharp public static IEnumerable Concat(this IEnumerable> sources); public static IEnumerable Concat(params IEnumerable[] sources); ``` ### StartWith (Prepend with multiple values) I noticed we've added `Prepend`. Ix provides `StartWith` which is basically the same but takes a `params` array with elements to prepend. (Note it comes from the dual of `StartWith` on `IObservable` where we can start an event sequence with one or more initial values provided from an array.) It could be done quite easily today using `new[] { ... }.Concat(xs)` but may be deemed a natural extension to `Prepend`. ```csharp public static IEnumerable StartWith(this IEnumerable source, params TSource[] values); ``` ### Scan (aggregate yielding intermediate results) Totally analogous signatures to `Aggregate` but yields every intermediate computed result. As usual, it comes from the duality with Rx where we deal with streams of events (that may never terminate). This said, it has value on a lazy enumerable sequence, e.g. when processing large logs and providing all intermediate aggregation values as the analysis is going on. `Aggregate` is pretty much `Scan` followed by `Last`, only optimized. ```csharp public static IEnumerable Scan(this IEnumerable source, TAccumulate seed, Func accumulator); public static IEnumerable Scan(this IEnumerable source, Func accumulator); ``` There are a bunch more that are likely a bit more esoteric and of lesser value, but nonetheless worth having a look at. One family of them deals with sharing side-effects of enumeration in a less aggressive way than the traditional `ToArray` to `ToList` approach; see things like `Share`, `Memoize`, and `Publish`. It's been a while since I've worked on / looked at this code, so some design decisions may have eroded from my memory, but I'll do my best recollecting these if questions come up. +14122 area-System.Linq Eliminating unnecessary closures in DynamicObject In cases a `Try*` method is not overridden, there's no need to allocate a closure that's only required in case there's an override. Separating logic in method pairs as to avoid the allocation of such closures. +14123 area-System.Linq Fix issues with ReadOnlyCollectionBuilder Fix issues with ReadOnlyCollectionBuilder see https://github.com/dotnet/corefx/issues/14059 +14124 area-System.IO Remove PathTooLongException and associated tests. Remove preemptive check for path too long. Refer to #8655 . @JeremyKuhne @karelz +14125 area-Infrastructure Upgrade buildtools from 01029-01 to 01030-01 "Picks up https://github.com/dotnet/buildtools/pull/1206 (and the fix to it, https://github.com/dotnet/buildtools/pull/1239). This makes the BuildTools package's `init-tools.sh` ""strict"" so errors initializing tools will fail fast. This is an incremental improvement that I want to make sure works on all platforms." +14126 area-System.Collections Improve ConcurrentBag performance The primary purpose of this change is to remove allocations prevalent in the use of ConcurrentBag: - Every Add allocates a Node object to be stored in a linked list. - Every Take that needs to steal allocates a List (and the associated underlying array) to store version information for all peer lists examined. This PR removes all of those allocations: - The first allocation (per-Add Node) is addressed by changing from a linked-list-based scheme to an array-based scheme; the logic for the latter is taken from ThreadPool (https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/ThreadPool.cs#L133), which uses an array-based work-stealing implementation for the thread-local queues in the pool. - The second allocation is avoided by caching a per-thread list in TLS, so that any steal operation can just use that list from TLS. These changes effectively eliminate all per-operation allocations in ConcurrentBag. In addition to the GC impact, these changes have a beneficial impact on throughput, due to better memory locality with the array vs with a linked list, less code needed for pushes/pops, etc. In a test that adds 10M items from a single thread: Before (elapsed time and gen0 GCs): ``` 00:00:02.2688554 67 00:00:02.6047316 66 00:00:02.1908836 65 00:00:02.7931760 68 ``` After: ``` 00:00:00.8325350 0 00:00:00.8284697 0 00:00:00.8600504 0 00:00:00.8094874 0 ``` In a test that has 4 threads each adding 2 items then taking 2 items (no steals), repeatedly, 5M times: Before: ``` 00:00:02.9780786 767 00:00:02.7218693 767 00:00:02.7535170 767 00:00:02.7547491 767 ``` After: ``` 00:00:01.5986701 0 00:00:01.3661083 0 00:00:01.4061545 0 00:00:01.3687102 0 ``` In a test that has one thread adding 10M items and another thread taking until all 10M are stolen (effectively the worst case for ConcurrentBag): Before: ``` 00:00:03.1549239 332 00:00:03.2892691 340 00:00:03.1984057 349 00:00:03.3697942 346 ``` After: ``` 00:00:02.5558069 0 00:00:01.8004534 0 00:00:02.5968542 0 00:00:02.1146025 0 ``` Prior to this change, devs were often hesitant to use ConcurrentBag as an object pool for small objects, as each added object involved its own small Node allocation. After this change, there shouldn't be any such objections. cc: @kouvel, @alexperovich, @benaadams Fixes #14090 Fixes https://github.com/dotnet/corefx/issues/7917 +14127 area-System.Reflection Assembly.EscapedCodeBase doesn't exist in the implementation MembersMustExist : Member 'System.Reflection.Assembly.EscapedCodeBase.get()' does not exist in the implementation but it does exist in the contract. We have exposed it in the reference assembly at https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs#L4714 but it doesn't exist in the implementation. This also points out that we don't have test coverage for this property. +14129 area-System.Threading Add test using ValueTask as async return type Now that we're using a C# 7 compiler in the repo that supports this, we can add tests using the language syntax in addition to just testing the type directly. cc: @mellinoe +14131 area-System.Security Add HashAlgorithm.HashSizeValue protected field Port this protected field (apparently missed with other HashAlgorithm work): ```` public abstract class HashAlgorithm : ICryptoTransform, IDisposable { protected int HashSizeValue; } ```` Affects derived classes since they must now set this field instead of overriding HashSize property. +14132 area-System.IO Remove a test line that got left in Was experimenting with different root paths on Unix and inadvertently left in a line of code. #13474 @danmosemsft, @ianhays +14133 area-System.Security Add HashAlgorithm.HashSizeValue protected field Addresses issue https://github.com/dotnet/corefx/issues/14131 Note that overrides on HashSize were removed as they are now not necessary. These overrides do not exist in netfx or netstandard2.0 so are OK to remove. @bartonjs please review +14134 area-Meta Remove TODOs from .csprojs Lots of stale TODO P2P references that need to be cleaned up. cc: @joperezr, @AlexGhiondea Fixes https://github.com/dotnet/corefx/issues/12431 Fixes https://github.com/dotnet/corefx/issues/13073 Fixes https://github.com/dotnet/corefx/issues/13894 +14135 area-System.Net SafeWinHttpHandleTest failed in CI ``` System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeDispose_HandleIsNotClosed [FAIL] Assert.Equal() Failure Expected: 1 Actual: 3 Stack Trace: Starting: System.ComponentModel.EventBasedAsync.Tests D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(44,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeDispose_HandleIsNotClosed() System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDispose_HandleIsNotClosed [FAIL] Assert.Equal() Failure Expected: 1 Actual: 4 Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(27,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDispose_HandleIsNotClosed() System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed [FAIL] Assert.Equal() Failure Expected: 2 Actual: 6 Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(138,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed() System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefReleaseDispose_HandleIsClosed [FAIL] Assert.Equal() Failure Expected: 0 Actual: 6 Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(89,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefReleaseDispose_HandleIsClosed() System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefRelease_HandleIsNotClosed [FAIL] Assert.Equal() Failure Expected: 1 Actual: 7 Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(74,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefRelease_HandleIsNotClosed() System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeRelease_HandleIsClosed [FAIL] Assert.Equal() Failure Expected: 0 Actual: 5 Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Http.WinHttpHandler\tests\UnitTests\SafeWinHttpHandleTest.cs(59,0): at System.Net.Http.WinHttpHandlerUnitTests.SafeWinHttpHandleTest.CreateAddRefDisposeRelease_HandleIsClosed() ``` +14136 area-Meta Update apicompat baselines compared to NS2.0 @karelz @danmosemsft does the netstandard20 baseline file align with your expectations of what is left? +14137 area-Infrastructure Changing Visual Studio debug settings takes a long time "This has been ongoing for a while now, so it may be a duplicate. However, the problem seems to be getting worse so I created this issue. Changing Debug properties on a project takes 2.5 minutes on my machine. During this time I see that dotnet.exe is launched dozens of times calling apicompat.exe, genfacades.exe or vbcscompiler.exe. Repro (on Visual Studio 15 Update 3): 1) Open src\System.Security.Cryptography.Algorithms\System.Security.Cryptography.Algorithms.sln 2) Right-click on the Test project and select Properties 3) Click the Debug tab 4) Change ""Start external program"" to a different value 5) Press tab or lose focus Result: Visual Studio appears to freeze for 2.5 minutes and using Process Explorer I can tell that it is launching apicompat, genfacades and vbcscompiler many times. Changing other options including the ""Command line arguments"" text box or even clicking one of the checkboxes also does the same thing. This is frustrating as normal debugging scenarios often require changing ""Start external program"" in addition to ""Command line arguments"", meaning 5 minutes of down time. Note changing the top-level build type (in the main menu, not the build configuration Debug properties) also takes a long time, but not quite as long - around 1 minute (for example changing from Unix_debug to Windows_debug)." +14138 area-System.Net Disable SafeHandle tests in WinHttpHandler #13951 +14139 area-System.Xml Set DEBUG in System.Private.Xml System.Private.Xml is not setting DEBUG in debug builds, which means Debug.Asserts aren't enabled, #if DEBUG code isn't compiled in, etc. This fixes that. After fixing the compilation issues, one of the newly enabled asserts highlighted missing code, which I ported from reference source. cc: @danmosemsft, @sepidehMS +14140 area-System.Numerics MSDN BigInteger.Equals(object) documentation is confusing. "The documentation for `BigInteger.Equals(object)` [claims that](https://msdn.microsoft.com/en-us/library/dd268233(v=vs.110).aspx#Syntax): >If the obj parameter is not a BigInteger value, but it is a data type for which an implicit conversion is defined, the Equals(Object) method converts obj to a BigInteger value before it performs the comparison. ... however, this doesn't initially appear to be what happens, given this test passes: ``` [Fact] public static void NotEqualTests() { Assert.False(BigInteger.Zero.Equals((object)0)); } ``` The documentation then goes on to use this example code: ``` const long LIGHT_YEAR = 5878625373183; BigInteger altairDistance = 17 * LIGHT_YEAR; BigInteger epsilonIndiDistance = 12 * LIGHT_YEAR; BigInteger ursaeMajoris47Distance = 46 * LIGHT_YEAR; long tauCetiDistance = 12 * LIGHT_YEAR; ulong procyon2Distance = 12 * LIGHT_YEAR; object wolf424ABDistance = 14 * LIGHT_YEAR; Console.WriteLine(""Approx. equal distances from Epsilon Indi to:""); Console.WriteLine("" Altair: {0}"", epsilonIndiDistance.Equals(altairDistance)); Console.WriteLine("" Ursae Majoris 47: {0}"", epsilonIndiDistance.Equals(ursaeMajoris47Distance)); Console.WriteLine("" TauCeti: {0}"", epsilonIndiDistance.Equals(tauCetiDistance)); Console.WriteLine("" Procyon 2: {0}"", epsilonIndiDistance.Equals(procyon2Distance)); Console.WriteLine("" Wolf 424 AB: {0}"", epsilonIndiDistance.Equals(wolf424ABDistance)); ``` ... wherein `Equals(object)` isn't used at all, but only the relevant overloads. They call out that's what they're doing, but of course it doesn't answer the apparent question of ""yes, but what about _this_ method?"". I see where they were going with this, but I'm not sure it reads correctly." +14141 area-System.Runtime Randomize ValueTuple hash codes Per the comments in #14046, it was decided that the `ValueTuple` hash code should be randomized. This will allow for more flexibility if it needs to be changed again in the future. cc @jkotas, @VSadov, @jcouv, @JonHanna +14142 area-Infrastructure Updating Microsoft.NETCore.Platforms/runtime.json with corert RIDs Adding CoreRT RIDs @jkotas , @joshfree @weshaggard @ericstj , PTAL. /cc @dotnet/corert-contrib +14143 area-Infrastructure Name Drop using both BuildNumber and OfficialBuildId This makes it easier to associate a build with the VSTS Drop that contains the packages for that build. I plan to use that simpler mapping in other infra that needs access to symbol package drops. ~~I also cleaned up other publish tasks: calculating the BuildNumber is not needed after the change, and the StartRelease steps are obsolete because Release-starting functionality will be added to PipeBuild itself.~~ @chcosta PTAL /cc @weshaggard +14144 area-System.Linq LINQ: Consider adding overloads that capture variables for operators that currently don't "Many LINQ operators on `Enumerable` and `Queryable` take arguments of some `Func<>` type (or `Expression>` in the case of `Queryable`) which allow them to capture variables. This results in the following behavior: ``` C# var letter = """"; var q = from db.Beattles.Where(p => p.Name.StartsWith(letter)); // variable letter gets captured letter = ""P""; var beattle1 = q.First(); // Returns Paul letter = ""J""; var beattle2 = q.First(); // Returns John ``` A few operators like `Skip`, `Take`, `ElementAt`, `DefaultIfEmpty`, `Aggregate` and `Contains` (#13842 proposes a couple of additions) however accept arguments of simple types. Unless these operators appear nested inside other expressions, variables won't be captured but values. This pattern results in the following behavior: ``` C# var position = 1; var q = from db.Orders.Skip(position - 1); // a value of 0 gets captured position = 10; var tenth = q.First(); // returns the first Order position = 20; var twentieth = q.First(); // still returns the first Order ``` Each of these behaviors can be seen as correct, but IMO the fact that they are different can be subtle and confusing unless you know about the closures. A possible way to address this is to add overloads that capture, e.g. for `Enumerable.Skip(int)` the signature of the new overload would be: ``` C# public static IEnumerable Skip( this IEnumerable source, Func countAccessor) ``` Usage would be as follows: ``` C# var position = 1; var q = from db.Orders.Skip(() => position - 1); position = 10; var tenth = q.First(); position = 20; var twentieth = q.First(); ``` Another side effect manifests in specific translating LINQ providers such as the one contained in EF6 in which whether a value or a variable is captured influences whether a literal or a parameter is generated in the resulting SQL query. This simple rule enables some control over the SQL that gests generated but in the past it was the reason that repeated execution of queries that contained paging (i.e. `Skip` and `Take`) operations would pollute the database query cache (see http://stackoverflow.com/questions/9201403/force-entity-framework-to-use-sql-parameterization-for-better-sql-proc-cache-reu for more details). For this reason EF6 already defines overloads of `Skip()` and `Take()` that accept `Expression>` arguments. " +14145 area-Infrastructure Refactor configuration model This refactors the configuration model I created with the previous task so that it can be shared with FindBestConfiguration. /cc @chcosta @weshaggard +14146 area-System.Xml Test failure: System.Xml.Tests.CArgAddExtObj/AddExtObject10() Opened on behalf of @jiangzeng The test `System.Xml.Tests.CArgAddExtObj/AddExtObject10()` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Xml.Tests.XsltApiTestCaseBase2.VerifyResult(String expectedValue) at System.Xml.Tests.CArgAddExtObj.AddExtObject10() Build : Master - 20161130.05 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64 - AnyCPU-Debug - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Release - AnyCPU-Debug - Debian.82.Amd64 - AnyCPU-Release - AnyCPU-Debug - Suse.132.Amd64 - AnyCPU-Debug - AnyCPU-Release - Fedora.23.Amd64 - AnyCPU-Release - AnyCPU-Debug - OSX.1011.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161130.05/workItem/System.Xml.Xsl.XslCompiledTransformApi.Tests/analysis/xunit/System.Xml.Tests.CArgAddExtObj~2FAddExtObject10() +14147 area-System.Xml "Test failure: System.Xml.Tests.CArgAddExtObj/AddExtObject28(param: \""MyObject_KillerStrings.txt\"")" "Opened on behalf of @jiangzeng The test `System.Xml.Tests.CArgAddExtObj/AddExtObject28(param: \""MyObject_KillerStrings.txt\"")` has failed. System.IO.FileNotFoundException : Could not find file '/home/helixbot/dotnetbuild/work/f737d3a2-7ea8-461b-994b-6ba69c06d41b/Work/39b267ac-8265-40f6-9670-34e8a3e16986/Unzip/diff.xml'. Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) at System.Xml.Tests.XsltApiTestCaseBase2.VerifyResult(String baseline, String outputFile) at System.Xml.Tests.CArgAddExtObj.AddExtObject28(Object param) Build : Master - 20161130.05 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64 - AnyCPU-Debug - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Release - AnyCPU-Debug - Debian.82.Amd64 - AnyCPU-Release - AnyCPU-Debug - Suse.132.Amd64 - AnyCPU-Debug - AnyCPU-Release - Fedora.23.Amd64 - AnyCPU-Release - AnyCPU-Debug - OSX.1011.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161130.05/workItem/System.Xml.Xsl.XslCompiledTransformApi.Tests/analysis/xunit/System.Xml.Tests.CArgAddExtObj~2FAddExtObject28(param:%20%5C%22MyObject_KillerStrings.txt%5C%22)" +14148 area-System.Xml Test failure: Assert failure of System.Xml.Tests.CNDP1_1SP1Test Opened on behalf of @jiangzeng The test `System.Xml.Tests.CNDP1_1SP1Test/var1()` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Xml.Tests.XsltApiTestCaseBase2.VerifyResult(String expectedValue) at System.Xml.Tests.CNDP1_1SP1Test.var1() Build : Master - 20161130.05 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64 - AnyCPU-Debug - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Release - AnyCPU-Debug - Redhat.72.Amd64 - AnyCPU-Release - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Release - AnyCPU-Debug - Debian.82.Amd64 - AnyCPU-Release - AnyCPU-Debug - Suse.132.Amd64 - AnyCPU-Debug - AnyCPU-Release - Fedora.23.Amd64 - AnyCPU-Release - AnyCPU-Debug - OSX.1011.Amd64 - AnyCPU-Release - AnyCPU-Debug Tests: System.Xml.Tests.CNDP1_1SP1Test/var1 System.Xml.Tests.CNDP1_1SP1Test/var2 System.Xml.Tests.CNDP1_1SP1Test/var4 Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161130.05/workItem/System.Xml.Xsl.XslCompiledTransformApi.Tests +14150 area-System.Collections Protect (List.Enumerator as IEnumerable).Current from breaking changes I added test to protect (List.Enumerator as IEnumerable).Current from breaking changes. See https://github.com/dotnet/coreclr/pull/8415 Also it test other `IEnumerator` that they haven't such issue. +14151 area-System.Net Improve Unable to find Curl exception I'm running CoreCLR on Raspberry PI and we are running into an issue with HttpClient: ``` System.TypeInitializationException: The type initializer for 'System.Net.Http.CurlHandler' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Http' threw an exception. ---> System.TypeInitializationException: The type initializer for 'HttpInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Net.Http.Native': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.HttpInitializer.EnsureCurlIsInitialized() at Interop.HttpInitializer..cctor() --- End of inner exception stack trace --- at Interop.HttpInitializer.Initialize() at Interop.Http..cctor() --- End of inner exception stack trace --- at Interop.Http.GetSupportedFeatures() at System.Net.Http.CurlHandler..cctor() --- End of inner exception stack trace --- at System.Net.Http.CurlHandler..ctor() ``` Here are the details on the native module: ``` dotnet/System.Net.Http.Native.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=4f81af5b4f6ce4731ebd55ea7d5427a58271a6b3, stripped ``` The problem was that it doesn't give a good error message. I fixed that by installing libcurl3, and I think that it should give a suggestion on why this is missing +14152 area-System.Console Provide API for Console window size changed event API: Could be an event like CancelKeyPress or a value returned by ReadKey. Threading: Run as part of call to Read Implementation: Unix: SIGWINCH Windows: SetConsoleMode ENABLE_WINDOW_INPUT +14154 area-System.ComponentModel Code cleanup in System.ComponentModel.TypeConverter Resolves #12160 to clean up code in System.ComponentModel.TypeConverter cc @AlexGhiondea - [x] Remove explicit base() from constructor calls - [x] Replace explicitly implemented properties with auto-implemented properties when possible - [x] Simplify members and properties with 1 lines of code to expression bodied members - [x] Switch over to the ?. operator in C# for null checking - [x] Switch to string interpolation instead of string concatenation - [x] Remove unnecessary initialization (ie. Bool foo = false) - [x] Replace empty arrays with Array.Empty() - [x] Replace string literals with nameof wherever possible. - [x] Simplify event handler declarations when no custom code is required - [x] Introduce readonly modifier for sync objects. - [x] Replace nongeneric collections with generic collections - [x] Use foreach instead of manually writing the foreach logic. - [x] Cache the char[] into a static readonly field (ie. new char[] { '' }) - [x] Simplify the CultureInfoMapper code I created an individual commit for each improvement, didn't know if that would make review any easier. I tried to search the project and make sure everything was accounted for. This is a decent size project so something may have been missed. Feel free to comment and I'll be glad to fix it. +14155 area-System.Linq "Adding ""state"" arguments to LINQ." "## Motivation Very often when using LINQ the compiler has to capture variables for us, with all the crazy compiler magic that comes with that (Generated classes, memory allocations, extended life, etc). Most of the time it's only one variable that needs to be captured so the cost of the magic isn't worth it. ## Proposal Adding LINQ methods that take a ""state"" argument to pass into the operating functions. I'll only give one example here instead of listing EVERY API that would need to be added. If the idea is green lighted I'll create such a list. ```diff namespace System.Linq { public static class Enumerable { + public static bool Any(this IEnumerable source, TState state, Func predicate); } } ``` ## Issues Admittedly it is a large change for a limited amount of gain. " +14157 area-System.Diagnostics Process raises Exited events even when EnableRaisingEvents = false (as discussed in in PR #11998) The documentation should be updated to reflect that EnableRaisingEvents=false offers no guarantee that Exited events will not be raised. [context: depends on the state of a private flag (_exited) and properties you query might still trigger events] Some interesting passages to update: **Process.EnableRaisingEvents Property** > Gets or sets whether the Exited event should be raised when the process terminates. > true if the Exited event should be raised when the associated process is terminated (through either an exit or a call to Kill); otherwise, false. The default is false. > The EnableRaisingEvents property indicates whether the component should be notified when the operating system has shut down a process. > When an associated process exits after being shut down by the operating system either through a normal or abnormal termination, the operating system notifies each process component to which the process was associated, as long as the component's EnableRaisingEvents value is **true**. > Setting EnableRaisingEvents to false saves system resources. +14158 area-System.Net implement Socket.SendFile +14160 area-System.Runtime Proposal: Add overload DateTime formatting APIs which takes TimeZoneInfo "Here is the summary of the proposal: ## API Proposal ```C# namespace System { public sealed class DateTime : ValueType, IComparable, IComparable, IConvertible, IEquatable, IFormattable { public String ToLongDateString(TimeZoneInfo tzi) public String ToLongTimeString(TimeZoneInfo tzi) public String ToShortDateString(TimeZoneInfo tzi) public String ToShortTimeString(TimeZoneInfo tzi) public String ToString(TimeZoneInfo tzi) public String ToString(String format, TimeZoneInfo tzi) public String ToString(TimeZoneInfo tzi, IFormatProvider provider) public String ToString(String format, IFormatProvider provider) } } ``` ## Details Need a way to be able to format the dates using non-default/Local time zone. currently to do that will need manually convert the date to the target time zone and then format it. Today if someone want to achieve the same result as the proposed APIs will write a code like ```C# var now = DateTime.Now; var zone = TimeZoneInfo.FindSystemTimeZoneById(""Turkey Standard Time""); var localTime = TimeZoneInfo.ConvertTime(now, zone); Console.WriteLine($""{localTime.ToLongDateString()}""); ``` and will need to call the time zone conversion API TimeZoneInfo.ConvertTime every time before formatting the date/time. Also today there is no easy way to format the DateTime with a target time zone using a formatting pattern like ""o"" which include the time zone information. for example doing: ```C# var now = DateTime.Now; var zone = TimeZoneInfo.FindSystemTimeZoneById(""Turkey Standard Time""); var localTime = TimeZoneInfo.ConvertTime(now, zone); Console.WriteLine($""{localTime.ToString(""o"")}""); ``` will produce something like ``` 2017-01-17T23:37:21.1371643 ``` which either will show the formatted string without the time zone info or if the time zone info is there will be matching the local time zone or UTC time zone but cannot have the target time zone information. The desired formatted string from the example should be something like ``` 2017-01-17T23:37:21.1371643+03:00 ``` where +03:00 reflect Turkey time zone offset from UTC. the way the proposed APIs work will manually check the Kind of the DateTime, if it is Local/Unspecified then it will convert the DateTime from local time zone to target time zone. if the Kind is UTC, will convert it from UTC to target time zone. If the output format is the one which include the time zone info (e.g. 'o' pattern), the resulted formatted string should reflect the target time zone. ## Sample Code ```C# var now = DateTime.Now; var zone = TimeZoneInfo.FindSystemTimeZoneById(""Turkey Standard Time""); Console.WriteLine($""{now.ToLongDateString(zone)}""); ``` " +14161 area-Infrastructure Add RID for Linux/ARM32 (ubuntu) Add RID for Linux/ARM32 - ubuntu*-arm related PR: https://github.com/dotnet/coreclr/pull/8421 +14162 area-Meta Profiling tools on linux Is there any tools to take memory dump and see objects of running .NET Core app on linux? I have memory leak problem on linux, but on windows everything is ok, so I can't use dotMemory. Which tools do corefx/coreclr teams use to profile apps on linux? +14163 area-System.IO System.IO.FileSystem.Tests project fail ValidFileOptions test if FileOptions contains Encrypted flag Creating encrypted files or folder can be disabled for some users. I split ValidFileOptions test on two. +14165 area-Infrastructure All Win7 runs failing "Lots of errors like: ``` error MSB4018: The ""GetTargetMachineInfo"" task failed unexpectedly. [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] error MSB4018: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] error MSB4018: at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo) [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] error MSB4018: at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture() [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] error MSB4018: at Microsoft.DotNet.Build.Tasks.GetTargetMachineInfo.Execute() [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() [D:\j\workspace\outerloop_win---b280fd23\src\System.Net.Requests\src\System.Net.Requests.csproj] ```" +14166 area-System.Security Lots of failing asserts in X509Certificate tests on Ubuntu 16.04 e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.04_debug/30/consoleText ``` at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.EnsureFilePermissions(FileStream stream, UInt32 userId) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs:line 384 at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.Add(ICertificatePal certPal) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs:line 189 at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 135 at Internal.Cryptography.Pal.ChainPal.SaveIntermediateCertificates(X509ChainElement[] chainElements, HashSet`1 downloaded) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/ChainPal.cs:line 158 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/ChainPal.cs:line 90 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 105 at System.Security.Cryptography.X509Certificates.Tests.ChainTests.get_TrustsMicrosoftDotComRoot() in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 27 ``` +14167 area-System.Collections Remove FEATURE_TRACING from System.Collections.Concurrent This compilation constant is always set. We can just delete it. cc: @kouvel, @alexperovich +14169 area-Meta Most of the markdown documentation could use improvement. I use the vs-code editor a lot these days and I would suggest that if you are writing markdown documents a lot that you take a look at the linters for markdown then we could all enjoy less green squiggly underlines. Also you don't need to let the text roll on in one line. Markdown will wrap it as needed. There is help here on github for this markdown linter. see: https://github.com/DavidAnson/markdownlint/blob/v0.3.1/doc/Rules.md +14170 area-System.Runtime Proposal: Make it easier to iterate through an ArraySegment ## Approved API shape ```c# public struct ArraySegment { public Enumerator GetEnumerator(); // Change existing internal class ArraySegmentEnumerator to: public struct Enumerator : IEnumerator { public bool MoveNext(); public T Current { get; } public void Dispose(); // NOT public: //void IEnumerator.Reset(); } } ```` * Change existing internal class [`ArraySegment.ArraySegmentEnumerator`](https://github.com/dotnet/coreclr/blob/15ea0086a7e6f87e8237923684e100e3e1f44698/src/mscorlib/src/System/ArraySegment.cs#L294-L350) to struct (see above). Value: Saves 1 boxing per enumerator: ``` C# foreach (T item in ArraySegmentReturningMethod()) { } ``` **Note:** I know that `Span` is supposed to supplant `ArraySegment`, this was added way back in 2.0, etc. However, the indexer seems so trivial to add and could help increase readability of existing code. +14171 area-Infrastructure vertical build port to Dev/eng Now that Eric has checked in, I'm able to move my work into the dev/eng branch. This change brings in code to build only those libraries contributing to a specific vertical. The code was originally written as a proof-of-concept against corefx/master. Not being able to play in dev/eng means that the code base quickly diverged and now there is quite a bit of cleanup work to bring these changes back in line with the direction of dev/eng. Work to be done (I'll capture all of this in a separate issue): - Refactor to consume Eric's configurations props file - Make the vertical build a first-class citizen, in its current implementation, you only perform a vertical build if you include `/p:VerticalGroup=Windows_NT-netcoreapp1.1-Debug`. Making it a first class build means we can get rid of quite a bit of code from buildvertical.targets and eliminate buildvertical.traversal.targets - Default target group is no longer a concept, update Configurations to reflect that and remove default target group code. - Some libraries which were previously building, are not building cleanly in dev/eng, I've omitted these from the build by adding an 'omit.txt' file in the library folder. - Names of properties / targets / etc will probably need to change because concepts have changed - Binary output needs to be updated to conform with Wes' documented spec - https://github.com/dotnet/corefx/blob/63205dc4918e0520c3c512f322d00c3206c5a9ff/Documentation/coding-guidelines/project-guidelines.md I don't want to slow down anyone's work which requires this build output, so I'm ok with submitting this code as-is if it is needed and cleaning it up with additional checkins as we evolve the code, i'm also ok with holding off on checking this in. I'd prefer not to check-in as-is if nobody is clamoring for the work. Now that I am working in dev/eng, I am feeling far less angst about being removed from the rest of the vertical build changes. /cc @ellismg @weshaggard @ericstj @mellinoe @markwilkie +14173 area-System.Linq Optimize new ToHashSet api. #13726 added `Enumerable.ToHashSet`, which is currently equivalent to writing `new HashSet(items)`. We may want to look into optimizing it by adding it as another method on `IIListProvider`, and reducing some virtual method calls. Opening this as a tracking issue for that. cc @JonHanna +14174 area-System.Linq Cleanup Reverse tests, and refactor First/Last. Refactor `First` and `FirstOrDefault` and `Last` and `LastOrDefault` to share some code. Also, cleanup the tests for `Reverse` (previously, this PR contained changes related to that method). cc @stephentoub @VSadov @JonHanna +14175 area-System.Net Obsolete serialization of 2 types Fix https://github.com/dotnet/corefx/issues/14068 I made some attempt to fix serialization for each of these types, but they have been sufficiently rewritten that it would need some design work (eg., some of the state was moved to nested or nested-nested types). Given the serializers were marked obsolete in Full framework, I chose to abandon that effort and made them throw rather than be broken. @stephentoub @davidsh @CIPop +14176 area-System.Net Expose setters on WebHeaderCollection Fix https://github.com/dotnet/corefx/issues/14108 @stephentoub @CIPop @davidsh +14177 area-System.Net Failure in ClientAsyncAuthenticate_AllServerAllClient_Success in CI ``` System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_AllServerAllClient_Success [FAIL] System.IO.IOException : Authentication failed because the remote party has closed the transport stream. Stack Trace: D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\src\System\Net\Security\SslState.cs(884,0): at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\src\System\Net\Security\SslState.cs(1094,0): at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\src\System\Net\Security\SslState.cs(752,0): at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\src\System\Net\Security\SslState.cs(722,0): at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\src\System\Net\Security\SslStream.cs(132,0): at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---7ad0ce03\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs(19,0): at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(151,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(75,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Using D:\j\workspace\outerloop_win---7ad0ce03\packages\ as folder for resolving package dependencies. Executing in D:\j\workspace\outerloop_win---7ad0ce03\bin\tests\AnyOS.AnyCPU.Debug\System.Threading.Performance.Tests\default.netcoreapp1.1\ Hard linking dependent files... Finished: System.Net.Security.Tests ``` Does not seem related to the PR https://github.com/dotnet/corefx/pull/14158 Similar to https://github.com/dotnet/corefx/issues/10909 @davidsh @CIPop +14178 area-System.Numerics Get a rough idea of the size of a BigInteger It would be terrific if there were a fast API for getting a rough idea of the absolute value of a BigInteger, say to within a factor of a billion or so. Something like the size of the private _bits array would be fine. This is useful for calculator apps and the like, as you want to be able to tell if an operation will definitely overflow before attempting it. +14180 area-System.Linq Misc. cleanup of instructions In preparation of generating many of the instructions using a T4 file, I'm addressing some stylistic oddities and inconsistencies in the existing code. The use of T4 text templates will make it easier to maintain these instructions (typically N operations against M primitive types, e.g. arithmetic instructions) and change them in bulk for performance optimizations and whatnot. Related to https://github.com/dotnet/corefx/pull/14086. +14182 area-System.Net Missing some Socket API These are missing ``` M:System.Net.Sockets.Socket.EndAccept(System.Byte[]@,System.IAsyncResult) M:System.Net.Sockets.Socket.EndAccept(System.Byte[]@,System.Int32@,System.IAsyncResult) P:System.Net.Sockets.SocketAsyncEventArgs.SendPacketsFlags M:System.Net.Sockets.SocketAsyncEventArgs.get_SendPacketsFlags M:System.Net.Sockets.SocketAsyncEventArgs.set_SendPacketsFlags(System.Net.Sockets.TransmitFileOptions) ``` Broken out of https://github.com/dotnet/corefx/issues/12460 @karelz This needs an owner. +14185 area-System.Linq Maintain stable sort behaviour in OrderBy().LastOrDefault(predicate) Fixes #14183 +14186 area-System.Linq Implement & expose SkipLast & TakeLast for Enumerable & Queryable Fixes https://github.com/dotnet/corefx/issues/13842. `Queryable` implementation is courtesy of @JonHanna. The initial implementation forgoes optimizations and uses `Queue` as the circular buffer. I am not quite sure what I'm doing, but I followed @JonHanna's example for https://github.com/dotnet/corefx/pull/13726. cc @stephentoub, @VSadov, @bartdesmet, @svick +14187 area-System.Runtime Remove usage of EqualityComparer from ValueTuple's GetHashCode `EqualityComparer.Default.GetHashCode(item)` has exactly the same behavior as `item?.GetHashCode ?? 0`. The only difference is that the latter version is faster because it is not an extra call. Previously, the only compelling reason to use the former was that if `item` was an enum, then calling `GetHashCode` directly would box while `EqualityComparer` wouldn't (see [here](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Collections/Generic/EqualityComparer.cs#L63)). However, [this change](https://github.com/dotnet/coreclr/pull/7895) in coreclr and [this one](https://github.com/dotnet/corert/pull/2117) in corert eliminate boxing for enums, so there is no longer a reason to use `EqualityComparer` in ValueTuple. This PR replaces all usage of it with `item?.GetHashCode() ?? 0`. (I used a regex find-and-replace.) cc @VSadov @jcouv @stephentoub @omariom Fixes https://github.com/dotnet/corefx/issues/13774 +14189 area-System.Memory Span: Add Span.Fill(T value) As discussed briefly in https://github.com/dotnet/corefx/issues/13427 I propose to add a `Fill(T value)` method to `Span` to make span the goto place for safe and fast memory operations. This is analoguous to the same method approved for arrays in https://github.com/dotnet/corefx/issues/6695 and added in https://github.com/dotnet/coreclr/pull/8137, https://github.com/dotnet/corert/pull/2259 but still lacking optimization https://github.com/dotnet/coreclr/issues/8290, perhaps `Array.Fill` could forward to `Span.Fill` in the future... ### Rationale and Usage Provide a safe yet fast way of filling of any type of contiguous memory; managed or unmanaged. ```csharp var span = new Span(array, 3, 10); span.Fill(42); ``` The argumentation for adding this is similar to `Array.Fill`, but here with a wider use case, since this can be used with both managed and unmanaged memory: * To increase the efficiency of code doing this and prevent people from reinventing the wheel. * Allow performance optimizations depending on memory type and contents. ### Proposed API Add a single method `Fill(T value)` to the existing `Span` API: ```csharp public class Span { public void Fill(T value); } ``` ### Open Questions Open question is whether this should be added as a member method or an extension method. I would argue for a member method, since this will depend on internal representation, and would perhaps allow for the JIT intrinsic version to do optimizations that a generic extension method can't. If that is a valid argument? @karelz @jkotas @omariom @benaadams @jamesqo +14190 area-System.Collections Improve ConcurrentBag.ToArray/GetEnumerator/CopyTo/IsEmpty performance "ToArray and CopyTo take a moment-in-time snapshot of the bag by freezing it, copying the contents to an array, and unfreezing. However, that copy is done via an intermediate List, which results in potentially many unnecessary allocations and copies. Changes: - This commit fixes that by first counting how many items there are in the bag and either presizing the array (in the case of ToArray) or comparing the length (in the case of CopyTo) and then copying directly into the target, eliminating the extra allocations. - There is still an intermediate allocation for the non-generic ICollection.CopyTo(Array, int) method, but to avoid that in common cases, it now special-cases T[] and uses the more efficient CopyTo(T[], int) implementation for that common case. - GetEnumerator was similarly implemented to first copy to a list and then get its enumerator. It now uses the ToArray implementation instead. This also means that for empty bags, we end up returning Array.Empty, which means the returned enumerator from it is also a singleton. - Additional fast paths were added to IsEmpty. It also had a fast path to check to see if the bag was void of any queues, in which case we know the bag is empty. I've also added checks for the local queue. If the local queue isn't empty, then we know the bag isn't empty and we can avoid freezing/unfreezing. If the local queue is empty and it's the only one in the bag, then we can similarly avoid freezing/unfreezing, as we know the whole bag is empty. - Added some additional tests. Note: There are two small technically breaking changes here: - ((ICollection)bag).CopyTo when passed a T[] with a bad index would previously throw an ArgumentOutOfRangeException with the name ""dstIndex"". That's because that's what Array's CopyTo implementation uses as the parameter name, even though this makes very little sense: the name of that property in both ICollection.CopyTo and in ConcurrentBag.CopyTo is ""index"". As a side-effect of the CopyTo(Array, int) optimization that checks for T[] and forwards it to CopyTo(T[], int), we end up using ""index"" instead of ""dstIndex"" for the argument name in the exception. - GetEnumerator used to return the result of calling GetEnumerator on the generated ```List```; now it calls GetEnumerator on the generated ```T[]```. ```List``` and ```T[]``` have different implemented behaviors for the undefined situation of calling Current on an enumerator after MoveNext has returned false: for ```List``` it returns default(T) and for array it throws an exception. By switching from using a ```List``` to a ```T[]```, this behavior has also switched. If we wanted to deal with this, we could by writing a custom enumerator implementation, but it seemed unnecessary. For this perf test that fills a bag with N queues and M items per queue and then calls ToArray on it 10M times: ```C# using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using System.Collections.Concurrent; using System.Linq; class Test { public static void Main() { var sw = new Stopwatch(); var counts = new[] { 1, 4, 16, 64 }; foreach (int threads in counts) { foreach (int itemsPerQueue in counts) { var bag = new ConcurrentBag(); var b = new Barrier(threads); Task.WaitAll(Enumerable.Range(0, threads).Select(_ => Task.Factory.StartNew(() => { b.SignalAndWait(); for (int perQueue = 0; perQueue < itemsPerQueue; perQueue++) bag.Add(perQueue); }, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default)).ToArray()); int gen0 = GC.CollectionCount(0); sw.Restart(); for (int i = 0; i < 10000000; i++) bag.ToArray(); sw.Stop(); gen0 = GC.CollectionCount(0) - gen0; Console.WriteLine($""Threads: {threads,3} PerThread: {itemsPerQueue,3}. Time: {sw.Elapsed} Gen0: {gen0}""); } } } } ``` I get the following results: Before: ``` Threads: 1 PerThread: 1. Time: 00:00:01.1500330 Gen0: 534 Threads: 1 PerThread: 4. Time: 00:00:01.3972260 Gen0: 572 Threads: 1 PerThread: 16. Time: 00:00:02.8350332 Gen0: 1488 Threads: 1 PerThread: 64. Time: 00:00:06.9316286 Gen0: 4463 Threads: 4 PerThread: 1. Time: 00:00:02.1913958 Gen0: 572 Threads: 4 PerThread: 4. Time: 00:00:03.6266836 Gen0: 1487 Threads: 4 PerThread: 16. Time: 00:00:07.0374684 Gen0: 4462 Threads: 4 PerThread: 64. Time: 00:00:20.0522162 Gen0: 15674 Threads: 16 PerThread: 1. Time: 00:00:05.9808988 Gen0: 1487 Threads: 16 PerThread: 4. Time: 00:00:10.7812079 Gen0: 4463 Threads: 16 PerThread: 16. Time: 00:00:22.5223754 Gen0: 15674 Threads: 16 PerThread: 64. Time: 00:01:09.4600190 Gen0: 59791 Threads: 64 PerThread: 1. Time: 00:00:21.1134136 Gen0: 4463 Threads: 64 PerThread: 4. Time: 00:00:33.4638482 Gen0: 15674 Threads: 64 PerThread: 16. Time: 00:01:30.1069096 Gen0: 59791 Threads: 64 PerThread: 64. Time: 00:04:55.3938445 Gen0: 235294 ``` After: ``` Threads: 1 PerThread: 1. Time: 00:00:00.7471809 Gen0: 152 Threads: 1 PerThread: 4. Time: 00:00:00.9599024 Gen0: 191 Threads: 1 PerThread: 16. Time: 00:00:01.0244813 Gen0: 420 Threads: 1 PerThread: 64. Time: 00:00:01.2910293 Gen0: 1335 Threads: 4 PerThread: 1. Time: 00:00:01.5348352 Gen0: 190 Threads: 4 PerThread: 4. Time: 00:00:02.6237707 Gen0: 420 Threads: 4 PerThread: 16. Time: 00:00:02.7698953 Gen0: 1335 Threads: 4 PerThread: 64. Time: 00:00:04.0346238 Gen0: 4995 Threads: 16 PerThread: 1. Time: 00:00:04.8559514 Gen0: 420 Threads: 16 PerThread: 4. Time: 00:00:08.8832032 Gen0: 1335 Threads: 16 PerThread: 16. Time: 00:00:10.0114349 Gen0: 4995 Threads: 16 PerThread: 64. Time: 00:00:15.1769433 Gen0: 19608 Threads: 64 PerThread: 1. Time: 00:00:19.3902392 Gen0: 1335 Threads: 64 PerThread: 4. Time: 00:00:35.8097217 Gen0: 4995 Threads: 64 PerThread: 16. Time: 00:00:40.8270685 Gen0: 19608 Threads: 64 PerThread: 64. Time: 00:01:01.7713918 Gen0: 78125 ``` cc: @kouvel, @alexperovich, @weshaggard " +14193 area-System.Runtime Proposal: string.Join with a default separator "## Background When you want to dump the contents of multiple collections to the console, it can be very cumbersome to have to repeatedly write `Console.WriteLine(string.Join("", "", collection))` and type `"", "", ` each time. ## Proposal We should consider adding an overload of `string.Join` that accepts no separator and joins with `' '`. It would be analagous to how, today, `str.Trim()` is equivalent to calling `str.Trim(s_allWhiteSpaceChars)`. ```cs namespace System { public sealed class String { public static string Join(params string[] value); public static string Join(params object[] values); public static string Join(IEnumerable values); } } // Usage: Console.WriteLine(string.Join(col)); // Quickly dump `col` ``` ## Implementation ```cs public static string Join(params string[] value) => Join(' ', value); public static string Join(params object[] values) => Join(' ', values); public static string Join(IEnumerable values) => Join(' ', values); ``` ## Notes This was originally a proposal for adding instance join overloads to `String`, but seeing as we already have 12 overloads I figured that wasn't such a great idea. cc @justinvp @AlexGhiondea @svick" +14195 area-System.Linq [WIP] Using T4 to generate instruction files Many instructions in the expression interpreter are repetitive because they deal with various expression types across various primitive types. This makes changing their implementation quite cumbersome and error-prone. In this PR, I'm adding .t4 and .tt files to generate these instructions, thus making it easier to change the generated code both for consistency and performance tuning purposes. Submitting this PR as a WIP. I'll add some comments inline to point out oddities and inconsistencies in the original code across the various instruction types. I have some other PRs pending that will reduce the number of diffs in these files by applying stylistic changes first, followed by consistent sorting of the inner types for various instructions by the primitive type they cover. Covered instructions are *binary* expressions: * Add[Checked] * Subtract[Checked] * Multiply[Checked] * Divide * Modulo * LeftShift * RightShift * GreaterThan[OrEqual] * LessThan[OrEqual] * Equal * NotEqual * And * Or * ExclusiveOr and *unary* expressions: * Increment * Decrement * Not * Negate[Checked] * OnesComplement +14197 area-System.Security Add SignedCms support .NET Core currently lacks SignedCms support which is available in standard .NET Framework. http://stackoverflow.com/questions/40918396/signedcms-alternative-in-net-core/40954173#40954173 +14198 area-System.Collections Consider pooling buffer within StringBuilder Some issues request string builders with less memory allocations. See https://github.com/dotnet/corefx/pull/13875#issuecomment-262293493 and https://github.com/dotnet/corefx/issues/13893 I suggest rewrite `StringBuilder` to use ArrayPool internal and also add next API to StringBuilder ```cs public class StringBuilder { public string ToStringAndRelease(); // return result String and release buffers to ArrayPool public string ToStringAndRelease(int index, int count); // return result String and release buffers to ArrayPool } ``` +14200 area-System.Security SslStream fails at CRL caching when invoked as non-privileged user with no home I am using the `MailKit` NuGet package to send emails on .NET Core 1.0 via smtp.gmail.com. I get the error below when my app is running on Debian 8 as a non-privileged user created by `adduser --system --no-create-home`. Apparently in order to verify the SMTP server's certificate, FX code attempts to create a directory under `/root/`, which is where $HOME points to in my scenario. While this formally makes sense, it seems counter-intuitive that code run as a non-privileged user without a home as above would a) end up accessing `/root/` in this scenario, and b) that it would not fall back to just not caching the cert if it hits UnauthorizedAccessException (or any IO exception?). ``` System.UnauthorizedAccessException: Access to the path '/root/.dotnet/corefx/cryptography/crls' is denied. ---> System.IO.IOException: Permission denied --- End of inner exception stack trace --- at System.IO.UnixFileSystem.CreateDirectory(String fullPath) at System.IO.Directory.CreateDirectory(String path) at Internal.Cryptography.Pal.CrlCache.GetCachedCrlPath(X509Certificate2 cert, Boolean mkDir) at Internal.Cryptography.Pal.CrlCache.DownloadAndAddCrl(X509Certificate2 cert, SafeX509StoreHandle store, TimeSpan& remainingDownloadTime) at Internal.Cryptography.Pal.CrlCache.AddCrlForCertificate(X509Certificate2 cert, SafeX509StoreHandle store, X509RevocationMode revocationMode, DateTime verificationTime, TimeSpan& remainingDownloadTime) at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.BuildChain(X509Certificate2 leaf, HashSet`1 candidates, HashSet`1 downloaded, HashSet`1 systemTrusted, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan& remainingDownloadTime) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) at System.Net.Security.CertificateValidation.BuildChainAndVerifyProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, String hostName) at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback) at System.Net.Security.SslState.CompleteHandshake() at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MailKit.Net.Smtp.SmtpClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) at MailKit.MailService.Connect(String host, Int32 port, Boolean useSsl, CancellationToken cancellationToken) ``` +14201 area-Infrastructure Report agent disk usage +14202 area-Infrastructure Auto-generate Microsoft.NETCore.Platforms\runtime.json Ref: https://github.com/dotnet/corefx/pull/14142#discussion_r90922312 /cc @ericstj +14203 area-Infrastructure Referencing Microsoft.NETCore.App 1.2.0-* results in type ambiguity "I was attempting to upgrade AspNetCore packages to 1.2.0-* M.NETCore.App \ 4.4.0-* CoreFx packages. However it looks like the Task type is brought in separately by both System.Runtime and System.Threading.Tasks package. Consequently an app that references `Task` fails: ```js { ""frameworks"": { ""netcoreapp1.1"": { ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.2.0-*"" } } } } } ``` ```C# using System; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public static Task Test() => Task.FromResult(0); } } ``` error CS0433: The type 'Task' exists in both 'System.Threading.Tasks, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a " +14204 area-Infrastructure Update report clean agent task for non-Windows Cannot use the VSTS MSBuild task on non-Windows platforms +14205 area-Infrastructure Fix tools build This started failing after a9f6d7d749f9946cc6b10c50b54bcae0e43e859e was merged. Make sure to opt out of binplacing. /cc @joperezr @mellinoe +14206 area-Infrastructure Update paths used in defs to Tools +14207 area-System.Collections ConcurrentQueue doesn't reuse segments ConcurrentQueue allocates a new Segment for every 32 elements, which means that every T added has space allocated for it, just in chunks. +14208 area-Infrastructure Rename to reflect latest configuration spec ProjectConfigurations -> BuildConfigurations ProjectConfiguration -> Configuration /cc @weshaggard @chcosta You can see the resultant props here: https://gist.github.com/ericstj/cb427010dbcb416fda82a8884143c32f @weshaggard we might need to think about what other things to put in the Configuration property when it gets defaulted. +14209 area-Meta publishing self contained apps hang indefinitly on web api projects "This is a consistent problem for me. Happens when trying to publish from VS or cli. Only one framework in use ( ""win10-x64"" ) . Have not tried yet with other framework monikers " +14211 area-Infrastructure System.Collections.sln fails to build in VS unless built from the command-line first "## Steps to reproduce the issue 1. Delete the ""bin"" directory from your local repo. 2. Open src\System.Collections\System.Collections.sln in Visual Studio 2015. 3. Build the solution in VS. ## Expected behavior The build succeeds. ## Actual behavior The build fails with several errors like `error CS0006: Metadata file 'C:\Repos\corefx\bin\Windows_NT.AnyCPU.Debug\System.Diagnostics.Debug\System.Diagnostics.Debug.dll' could not be found` Here's the complete output: > 1>------ Build started: Project: System.Collections (src\System.Collections), Configuration: Debug Any CPU ------ > 2>------ Build started: Project: System.Collections (ref\System.Collections), Configuration: Debug Any CPU ------ > 3>------ Build started: Project: System.Collections.Tests, Configuration: Debug Any CPU ------ > 4>------ Build started: Project: System.Collections.Performance.Tests, Configuration: Debug Any CPU ------ > 1>CSC : error CS0006: Metadata file 'C:\Repos\corefx\bin\Windows_NT.AnyCPU.Debug\System.Diagnostics.Debug\System.Diagnostics.Debug.dll' could not be found > 1>CSC : error CS0006: Metadata file 'C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Runtime\netstandard1.7\System.Runtime.dll' could not be found > 2> System.Collections -> C:\Repos\corefx\bin\ref\System.Collections\4.1.0.0\System.Collections.dll > 4>C:\Repos\corefx\Tools\sign.targets(70,5): error : C:\Repos\corefx\bin/obj/ref/System.Collections/4.1.0.0/System.Collections.dll: I/O error reading or writing PE file: The process cannot access the file 'C:\Repos\corefx\bin\obj\ref\System.Collections\4.1.0.0\System.Collections.dll' because it is being used by another process. > 4> System.Collections -> C:\Repos\corefx\bin\ref\System.Collections\4.1.0.0\netstandard1.7\System.Collections.dll > 4> System.Collections -> C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Collections\net463\System.Collections.dll > 4>CSC : error CS0006: Metadata file 'C:\Repos\corefx\bin\Windows_NT.AnyCPU.Debug\System.Diagnostics.Debug\System.Diagnostics.Debug.dll' could not be found > 4>CSC : error CS0006: Metadata file 'C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Runtime\netstandard1.7\System.Runtime.dll' could not be found > 4>CSC : error CS0006: Metadata file 'C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Resources.ResourceManager\uap101aot\System.Resources.ResourceManager.dll' could not be found > 4>CSC : error CS0006: Metadata file 'C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Runtime\uap101aot\System.Runtime.dll' could not be found > 4>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(3962,5): error MSB3030: Could not copy the file ""C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Collections\System.Collections.dll"" because it was not found. > 3> System.Diagnostics.Debug -> C:\Repos\corefx\bin\ref\System.Diagnostics.Debug\4.1.0.0\System.Diagnostics.Debug.dll > 3> System.Diagnostics.Debug -> C:\Repos\corefx\bin\Windows_NT.AnyCPU.Debug\System.Diagnostics.Debug\net463\System.Diagnostics.Debug.dll > 3> System.Diagnostics.Debug -> C:\Repos\corefx\bin\Windows_NT.AnyCPU.Debug\System.Diagnostics.Debug\System.Diagnostics.Debug.dll > 3> System.Diagnostics.Debug -> C:\Repos\corefx\bin\Unix.AnyCPU.Debug\System.Diagnostics.Debug\System.Diagnostics.Debug.dll > 3>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(3962,5): error MSB3030: Could not copy the file ""C:\Repos\corefx\bin\AnyOS.AnyCPU.Debug\System.Collections\System.Collections.dll"" because it was not found. > ========== Build: 1 succeeded, 3 failed, 0 up-to-date, 0 skipped ========== ## Workaround Build the test project from the command-line: `msbuild src\System.Collections\tests\System.Collections.Tests.csproj`. Then building from VS works." +14212 area-System.IO microsoft.netcore.targets has incorrect RID for clrcompression AOT "In runtime.json for the latest microsoft.netcore.targets, we have: ``` ""win10-amd64-aot"": { ""runtime.native.System.IO.Compression"": { ""runtime.win10-x64-aot.runtime.native.System.IO.Compression"": ""4.1.1-beta-24418-00"" } }, ``` when we should have: ``` ""win10-x64-aot"": { ""runtime.native.System.IO.Compression"": { ""runtime.win10-x64-aot.runtime.native.System.IO.Compression"": ""4.1.1-beta-24418-00"" } }, ``` @ericstj @shrah " +14213 area-Infrastructure Change dotnet exe name for Unix plats +14214 area-Infrastructure Change msbuild exe name on Unix +14215 area-Infrastructure Running build.sh fails on Linux kernel 4.6.x "Due to https://github.com/dotnet/coreclr/issues/6016, running build.sh fails on Linux kernel 4.6.x. (See also https://github.com/dotnet/cli/issues/3681). > Installing dotnet cli... > Restoring BuildTools version 1.0.27-prerelease-01029-01... > ./init-tools.sh: line 169: 31125 Segmentation fault (core dumped) I was able to work around this locally by back-leveling the version in DotnetCLIVersion.txt from the current `1.0.0-preview3-003223` to `1.0.0-preview2-003131` and accordingly updating the __DOTNET_LOCATION variable in init-tools.sh: `__DOTNET_LOCATION=""https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/${__DOTNET_TOOLS_VERSION}/${__DOTNET_PKG}.${__DOTNET_TOOLS_VERSION}.tar.gz""` @dagood Was the primary reason for updating to 1.0.0-preview3-003223 in #11387 to add support for Ubuntu on Windows? Would 1.0.0-preview2-003131 include that support? Alternatively, the CoreCLR issue is also fixed in the latest preview3 and preview2.1, but it is not trivial to uptake either of those. Preview3 now uses MSBuild instead of project.json, but the buildtools project that init-tools restores is specified as a project.json. Preview2.1 uses the 1.1 shared framework, but buildtools currently depends on the 1.0 shared framework. /cc @dleeapho @ellismg " +14216 area-Infrastructure change msbuild exe name to msbuild.sh +14217 area-Serialization FixXsdDataContractExporterTestAndFragmentTests 1.Throw PlatformNotSupportedException when to call DataContractSet since it always returns null. 2. Fix #12772. 3. Fix #13375 @shmao @mconnew @zhenlan +14218 area-Infrastructure Fix path to msbuild +14219 area-System.Reflection Question regarding System.Reflection.Metadata In the past, if I needed reflection data for an assembly but did not want it in the main AppDomain, I would load it into a temporary AppDomain which would only exist until I extracted the desired reflection information. With no AppDomains in .NET Core, my understanding is that System.Reflection.Metadata is recommended for this type of scenario. I imagine that System.Reflection.Metadata was implemented with structs and handles to improve performance for low level operations. While that decision makes sense, it means the API is a lot more difficult to use compared to normal reflection. Is there a reason an easier to use API wasn't implemented as a wrapper around the structs? I implemented one myself after looking all over for an alternative and I'm hoping I didn't spend the last two days reinventing the wheel. https://github.com/Byrne-Labs/Metadata-DOM https://nuget.org/packages/ByrneLabs.Commons.MetadataDom +14220 area-System.Linq Proposal: Queryable.Append, Queryable.Prepend **Important note:** There is a chance this API could be breaking. People who are already calling `Append` on some Queryable will be calling into the Enumerable version, which returns an `IEnumerable`. Meanwhile, the proposed overloads return an `IQueryable`. However, these APIs have been out for [less than a year](https://github.com/dotnet/corefx/pull/5947) and people seem to agree that keeping symmetry with Enumerable is more valuable. --- Per discussion at https://github.com/dotnet/corefx/pull/14186#discussion_r90985817 We should add `Queryable.Append` and `Prepend` extension methods since they already exist on `Enumerable`. ## Proposal ```c# namespace System.Linq { public static class Queryable { public static IQueryable Append(this IQueryable source, TSource element); public static IQueryable Prepend(this IQueryable source, TSource element); } } ``` cc @JonHanna @bartdesmet +14221 area-System.Collections Refactor ConcurrentBag/Queue/Stack tests - Added a base IProducerConsumerCollectionTests tests class. - Moved common tests from ConcurrentBag/Queue/StackTests down to IProducerConsumerCollectionTests, with each class' test class deriving from the shared class, such that all of these tests now operate against each of ConcurrentBag/Queue/Stack. - Added a few additional tests. cc: @ianhays, @alexperovich +14222 area-Infrastructure Remove build.clean=All from build pipeline settings @chcosta @weshaggard @karajas Work around this crash from VSO Build Agents: 2016-12-06T00:46:19.0959402Z 'build.clean=All' 2016-12-06T00:46:19.0959402Z Checking if build directory exists: D:\A\_work\36 2016-12-06T00:46:19.0959402Z Deleting build directory. 2016-12-06T00:46:31.2505525Z ##[error]System.ComponentModel.Win32Exception (0x80004005): The directory is not empty 2016-12-06T00:46:31.2505525Z ##[error] at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryLongPath(String path, Boolean recursive, Boolean followJunctionPoints) 2016-12-06T00:46:31.2661693Z ##[error] at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryLongPath(String path, Boolean recursive, Boolean followJunctionPoints) 2016-12-06T00:46:31.2661693Z ##[error] at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryLongPath(String path, Boolean recursive, Boolean followJunctionPoints) +14224 area-Serialization Call FormatterServices.GetUninitializedObject Directly. Previously we called RuntimeHelpers.GetUninitializedObject via reflection. PR #13652 made it available on NetCore, so we now can call the API directly. Fix #13677 +14228 area-System.Globalization Failure in DateTimeFormatInfoGetInstance.GetInstance_ExpectedCurrent on OSX "https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/1090/consoleText Unfortunately the snippet of Expected and Actual below are identical so perhaps some more logging is necessary. ``` System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance_ExpectedCurrent [FAIL] Assert.Same() Failure Expected: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... } Actual: DateTimeFormatInfo { AbbreviatedDayNames = [""Sun"", ""Mon"", ""Tue"", ""Wed"", ""Thu"", ...], AbbreviatedMonthGenitiveNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AbbreviatedMonthNames = [""Jan"", ""Feb"", ""Mar"", ""Apr"", ""May"", ...], AMDesignator = ""AM"", Calendar = GregorianCalendar { AlgorithmType = SolarCalendar, CalendarType = Localized, Eras = [...], IsReadOnly = True, MaxSupportedDateTime = 9999-12-31T23:59:59.9999999, ... }, ... } Stack Trace: VoidMainWithExitCodeApp -> /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/bin/AnyOS.AnyCPU.Debug/VoidMainWithExitCodeApp/VoidMainWithExitCodeApp.exe /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetInstance.cs(46,0): at System.Globalization.Tests.DateTimeFormatInfoGetInstance.GetInstance_ExpectedCurrent() ```" +14230 area-System.Collections API proposal: Array and List in place Sort and BinarySearch for keySelector function Now we can sort `Array` and `List` by keySelector `Func` by using Enumerable extension methods, but this will create in memory copy of array or list. I suggest to add API for in place Sort and BinarySearch with keySelector function `Func`. ## API proposal ```cs public class List { public void Sort(Func keySelector, IComparer comparer = null); public void Sort(int index, int count, Func keySelector, IComparer comparer = null); public int BinarySearch(TKey key, Func keySelector, IComparer comparer = null); public int BinarySearch(int index, int count, TKey key, Func keySelector, IComparer comparer = null); } ``` The same API for Array class. +14231 area-System.Linq Use TypeCode for CastReferenceToEnumInstruction Now that `GetTypeCode` is back, this code can use a `switch` over `TypeCode` rather than a series of `if` checks. +14234 area-Meta API Proposal: ByteSize Struct Like TimeSpan to remove ambiguity in sizes e.g. https://github.com/aspnet/KestrelHttpServer/issues/1247 ## Suggested API ```csharp namespace System { public struct ByteSize : IComparable , IComparable, IEquatable, IFormattable { public ByteSize(long sizeInBytes) public static readonly ByteSize Zero = new ByteSize(0L); public static readonly ByteSize MinValue = new ByteSize(long.MinValue); public static readonly ByteSize MaxValue = new ByteSize(long.MaxValue); public static readonly ByteSize MinBitValue = new ByteSize(long.MinValue / 8); public static readonly ByteSize MaxBitValue = new ByteSize(long.MaxValue / 8); /* // Modulus sizes - useful or confusing? public int Bytes { get; } public int KiloBytes { get; } public int MegaBytes { get; } public int GigaBytes { get; } public int TeraBytes { get; } public int PetaBytes { get; } public int ExaBytes { get; } public int BiBytes { get; } public int KiBiBytes { get; } public int MeBiBytes { get; } public int GiBiBytes { get; } public int TeBiBytes { get; } public int PeBiBytes { get; } public int ExBiBytes { get; } public int Bits { get; } public int KiloBits { get; } public int MegaBits { get; } public int GigaBits { get; } public int TeraBits { get; } public int PetaBits { get; } public int ExaBits { get; } public int BiBits { get; } public int KiBiBits { get; } public int MeBiBits { get; } public int GiBiBits { get; } public int TeBiBits { get; } public int PeBiBits { get; } public int ExBiBits { get; } */ public long TotalBytes { get; } public double TotalKiloBytes { get; } public double TotalMegaBytes { get; } public double TotalGigaBytes { get; } public double TotalTeraBytes { get; } public double TotalPetaBytes { get; } public double TotalExaBytes { get; } public double TotalKiBiBytes { get; } public double TotalMeBiBytes { get; } public double TotalGiBiBytes { get; } public double TotalTeBiBytes { get; } public double TotalPeBiBytes { get; } public double TotalExBiBytes { get; } public long TotalBits { get; } public double TotalKiloBits { get; } public double TotalMegaBits { get; } public double TotalGigaBits { get; } public double TotalTeraBits { get; } public double TotalPetaBits { get; } public double TotalExaBits { get; } public double TotalKiBiBits { get; } public double TotalMeBiBits { get; } public double TotalGiBiBits { get; } public double TotalTeBiBits { get; } public double TotalPeBiBits { get; } public double TotalExBiBits { get; } public static ByteSize FromKiloBytes(double value); public static ByteSize FromMegaBytes(double value); public static ByteSize FromGigaBytes(double value); public static ByteSize FromTeraBytes(double value); public static ByteSize FromPetaBytes(double value); public static ByteSize FromExaBytes(double value); public static ByteSize FromKiBiBytes(double value); public static ByteSize FromMeBiBytes(double value); public static ByteSize FromGiBiBytes(double value); public static ByteSize FromTeBiBytes(double value); public static ByteSize FromPeBiBytes(double value); public static ByteSize FromExBiBytes(double value); public static ByteSize FromKiloBits(double value); public static ByteSize FromMegaBits(double value); public static ByteSize FromGigaBits(double value); public static ByteSize FromTeraBits(double value); public static ByteSize FromPetaBits(double value); public static ByteSize FromExaBits(double value); public static ByteSize FromKiBiBits(double value); public static ByteSize FromMeBiBits(double value); public static ByteSize FromGiBiBits(double value); public static ByteSize FromTeBiBits(double value); public static ByteSize FromPeBiBits(double value); public static ByteSize FromExBiBits(double value); public ByteSize Negate(); public static ByteSize operator -(ByteSize b); public static ByteSize operator +(ByteSize b); public ByteSize Add(ByteSize bs); public static ByteSize operator +(ByteSize b1, ByteSize b2); public ByteSize Subtract(ByteSize bs); public static ByteSize operator -(ByteSize b1, ByteSize b2); public static implicit operator long(ByteSize sizeInBytes) => size.TotalBytes; public static implicit operator ByteSize(long sizeInBytes) => new ByteSize(sizeInBytes); public override int GetHashCode(); public override bool Equals(Object value); public bool Equals(ByteSize other); public static bool Equals(ByteSize b1, ByteSize b2); public static bool operator ==(ByteSize b1, ByteSize b2); public static bool operator !=(ByteSize b1, ByteSize b2); public static bool operator <(ByteSize b1, ByteSize b2); public static bool operator <=(ByteSize b1, ByteSize b2); public static bool operator >(ByteSize b1, ByteSize b2); public static bool operator >=(ByteSize b1, ByteSize b2); public static int Compare(ByteSize b1, ByteSize b2); int IComparable.CompareTo(object obj); public int CompareTo(ByteSize other); public string ToString(); public string ToString(string format); public string ToString(string format, IFormatProvider formatProvider); public static TimeSpan Parse(string s); public static ByteSize Parse(string input, IFormatProvider formatProvider); public static ByteSize ParseExact(string input, string format, IFormatProvider formatProvider); public static ByteSize ParseExact(string input, string[] formats, IFormatProvider formatProvider); public static ByteSize ParseExact(string input, string format, IFormatProvider formatProvider, ByteSizeStyles styles); public static ByteSize ParseExact(string input, string[] formats, IFormatProvider formatProvider, ByteSizeStyles styles); public static bool TryParse(string s, out ByteSize result); public static bool TryParse(string input, IFormatProvider formatProvider, out ByteSize result); public static bool TryParseExact(string input, string format, IFormatProvider formatProvider, out ByteSize result); public static bool TryParseExact(string input, string[] formats, IFormatProvider formatProvider, out ByteSize result); public static bool TryParseExact(string input, string format, IFormatProvider formatProvider, ByteSizeStyles styles, out ByteSize result); public static bool TryParseExact(string input, string[] formats, IFormatProvider formatProvider, ByteSizeStyles styles, out ByteSize result); } } namespace System.Globalization { [Flags] public enum ByteSizeStyles { None = 0x00000000, AssumeNegative = 0x00000001, AssumeBinary = 0x00000020, AssumeDecimal = 0x00000040 } public sealed class ByteSizeFormatInfo : IFormatProvider { enum ByteSizeFormatFlags { None = 0x00000000, UseDecimal = 0x00000001, // Default binary e.g. 10 KiB UseBits = 0x00000002 // Default bytes } public object GetFormat(Type formatType) { throw new NotImplementedException(); } } } ``` +14235 area-System.Runtime Add Xamarin support to System.ValueTuple package It does not support Xamarin as of version 4.3.0. We'd like to provide platform specific assemblies which forward types to existing types Xamarin products have in mscorlib (same scenario as in .NET vNext) cc @weshaggard @akoeplinger +14236 area-System.Security Fix X509Certificiate copy ctor finalization issue Addresses https://github.com/dotnet/corefx/issues/13501 The test TestCopyConstructor_Lifetime_Cloned was able to fail consistently with added GC.Collect() and .WaitForPendingFinalizers. The issue was premature finalization of the original context which was copied for the failing test. The documentation on CertDuplicateCertificateContext states it just increments the ref count and expects a call later to CertFreeCertificateContext to decrement the ref count. However, it appears from testing that if the original context handle has CertFreeCertificateContext called on it then the other (copied) contexts are affected which causes the issue. Thus for the copy of the cert, avoid calling CertDuplicateCertificateContext as the original cert can then be collected\finalized causing the context to become invalidated (or at least prevents a private key from being extracted). cc @bartonjs +14237 area-System.Net TCP_KEEPALIVE, TCP_KEEPINTVL, and TCP_KEEPCNT Socket Options I am trying to set per-socket keepalive TCP timeouts on Linux and MacOS. The following named socket options are not exposed, however: - SocketOptionName.TCP_KEEPALIVE - SocketOptionName.TCP_KEEPINTVL - SocketOptionName.TCP_KEEPCNT When I try to add them using their POSIX codes, I get an exception: -------- System.Net.Sockets.SocketException : Operation not supported at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue, Boolean silent) at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue) Here is the code I'm using to try to add them with POSIX codes: if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { // Found these Socket Option Values at https://github.com/golang/go/search?utf8=%E2%9C%93&q=TCP_KEEPCNT // Linux/OSX takes time in seconds SocketOptionName tcpKeepIdle; SocketOptionName tcpKeepIntvl; SocketOptionName tcpKeepCnt; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { tcpKeepIdle = (SocketOptionName)0x4; // TCP_KEEPIDLE tcpKeepIntvl = (SocketOptionName)0x5; // TCP_KEEPINTVL tcpKeepCnt = (SocketOptionName)0x6; // TCP_KEEPCNT } else { // TCP_KEEPALIVE option on OSX == TCP_KEEPIDLE on Linux // see https://www.winehq.org/pipermail/wine-devel/2015-July/108583.html tcpKeepIdle = (SocketOptionName)0x10; // TCP_KEEPALIVE tcpKeepIntvl = (SocketOptionName)0x101; // TCP_KEEPINTVL tcpKeepCnt = (SocketOptionName)0x102; // TCP_KEEPCNT } socket.SetSocketOption(SocketOptionLevel.Tcp, tcpKeepIdle, keepAliveTimeSeconds); socket.SetSocketOption(SocketOptionLevel.Tcp, tcpKeepIntvl, keepAliveIntervalSeconds); socket.SetSocketOption(SocketOptionLevel.Tcp, tcpKeepCnt, keepAliveCount); } +14238 area-System.Diagnostics System.Diagnostics.Process should not inherit handles by default "When a Windows process starts another process, the parent gets the option of having the child process inherit all of the parent's inheritable handles. Additionally, every handle has a flag on it specifying if it is inheritable or not. CoreFx has the `bInheritHandles` argument hard coded to `true`. While this feature can be useful, it can cause untold number of problems. This of the situation where you have a file handle, and you've acquired that file handle with `FileShare.None` set. While the handle is opened, you start a child process. That child gets a copy of that handle, now they cannot use it because you've selected no sharing, but they have a copy of it. Since closing of file handles is a reference counting game, you're now unable to close the file. Sure, you can close your local handle, but you'll be unable to re-open it until the child process' handle is closed as well. If the child spawns a child, the grand-child process will also keep a copy of the handle and could never get your file back. This becomes worse in the case of redirected pipes. Imagine this setup: 1. Thread A starts creating a new process with redirected output 2. Thread B starts creating a new process designed as a long running service (think redis or something) 3. Thread A creates the necessary handles to redirect output. 4. Thread B calls Kernel32.dll!CreateProcess to create the process, the new process inherits the handles Thread A created for its child (but it doesn't know that and it cannot use them). 5. Thread A calls Kernel32dll!CreateProcess. 6. Thread A attempts to read standard output until it closes. 7. Thread A child process exits, and closes the handles it was given __BUT__ the pipes do not close because Thread B child process has a handle on them (and closing is a reference counting game). Effectively, Thread A is deadlocked attempting to read from the stand output pipe of its child process (even though said process has exit already) until Thread B child process exits (and closes its handles). This is a disaster. Handle inheritance should be take seriously, and it appears the CoreFx library isn't doing so. Ideally, the `bInheritHandles` parameter would be null unless `STARTF_USESTDHANDLES` is specified. When `STARTF_USESTDHANDLES`, then the advice of Raymon Chen should be followed: ""[The case of the redirected standard handles that won’t close even though the child process has exited](https://blogs.msdn.microsoft.com/oldnewthing/20131018-00/?p=2893)"". There is an attempt to correct this bad behavior via a `Monitor` lock placed around the calls to `CreateProcess` calls. This is fine so long as all code in a process is running though CoreFx, but in any reasonable sized project that cannot be assumed. " +14239 area-System.Linq Separating some instructions into separate files Some improved organization of instructions in separate files. Also helps with code generation of one instruction per file. +14240 area-System.Collections BitArray shift operators The BitArray class in System.Collections should include BitWise right and left shift operations. BitArray is used to represent a collection of on\off values and currently contains And, Or, Xor, and Not operations. Adding RightShift and LeftShift would increase the usefulness of the class and provide a canonical, fast solution to save developers the hassle of coming up with their own. See https://github.com/dotnet/corefx/issues/8719 Unit tests for the above API get from https://github.com/Clockwork-Muse/corefx/commit/4fc128660ad8c61310bbd10d9d767afda8b22910 +14241 area-System.Linq Generating UpdateDelegates in System.Dynamic using T4. Simplifies making changes to this repetitive piece of code. +14242 area-Infrastructure [dev/eng] Configure test projects to build against targeting pack references * Remove all project.json files from the test folders. * Add a target to targetingpack.props that emits references to all of the assemblies in the targeting pack for the current vertical TargetGroup. * Hook the target into test project builds. * Clean the test targets: * Delete much of the logic in tests.targets and publishtests.targets. * Stop copying tons of files into the tests output directory. * Reconcile changes with helix runs. Afterwards: * Hook the new test output into the new logic for running test projects. +14244 area-System.Collections IComparer and IComparer documentation should note ordering properties required The documentation for `IComparer` ([@docs.microsoft.com](https://docs.microsoft.com/en-us/dotnet/core/api/system.collections.icomparer), [@msdn](https://msdn.microsoft.com/en-us/library/system.collections.icomparer(v=vs.110).aspx)) and `IComparer` ([@docs.microsoft.com](https://docs.microsoft.com/en-us/dotnet/core/api/system.collections.generic.icomparer-1), [@msdn](https://msdn.microsoft.com/en-us/library/8ehhxeaf(v=vs.110).aspx)) do not note whether any particular ordering properties are expected of a valid implementation, but at least `List.Sort` assumes some (antisymmetry, per [this Connect feedback circa .NET 4.5](https://connect.microsoft.com/VisualStudio/feedback/details/751822/list-sort-incompatibility-with-net-4-5-release)). The interface documentation should note what sort of ordering properties the rest of the standard library will be assuming/demanding of a `Compare` implementation. I'd expect this to be the usual properties of a [total order](https://en.wikipedia.org/wiki/Total_order). +14247 area-System.Net Exposing missing APIs in System.Net.HttpListener contract to sync wit… fixes #13901 cc @karelz @danmosemsft @CIPop Adding tests are tracked in issue #13618 +14253 area-Serialization Add Test Project for Running XmlSerializer Tests in ReflectionOnly Mode We added test project running DataContractSerializer tests in ReflectionOnly mode, see https://github.com/dotnet/corefx/issues/10967. We should make the same change for XmlSerializer. +14254 area-System.Collections Rewrite ConcurrentQueue for better performance This commit rewrites ConcurrentQueue to provide better throughput and a much better allocation profile. As with the previous implementation, it's structured as a linked list of segments. Unlike the previous implementation, these segments are now ring buffers, allowing them to be reused as long as they're not full; if an enqueue does make a segment full, then a new segment is created for subsequent enqueues. Also unlike the previous implementation, segments are dynamic in size, so newly allocated segments follow a doubling scheme similar to that employed by other generic collections. The synchronization mechanism used is also lower-overhead than before, with a typical operation incurring just one CAS operation to either enqueue or dequeue. In a test that just enqueues 20M items serially: ``` Old - Time: 0.461s GC: 27 New - Time: 0.237s GC: 0 ``` In a test that enqueues and dequeues 20M items serially (adding 1, taking 1, adding 1, taking 1, etc.): ``` Old - Time: 0.631s GC: 32 New - Time: 0.374s GC: 0 ``` In a test that has 4 threads (quad core) each enqueueing 5M items in parallel: ``` Old - Time: 0.997s GC: 27 New - Time: 0.244s GC: 0 ``` In a test that has 2 threads each enqueueing 5M items in parallel with 2 threads each dequeueing 5M items: ``` Old - Time: 0.621s GC: 17 New - Time: 0.121s GC: 0 ``` Note that while most things get faster, there are a few operations that have a small downside. Any operation that needs to preserve items for observation (e.g. GetEnumerator, ToArray, TryPeek, etc.) essentially makes all current segments non-reusable. That's mostly no worse than before, where no segments were reusable, but since these segments get bigger, if you have strange usage pattern, such as enqueueing one item and then enumerating the queue, enqueueing another and then enumerating the queue, repeatedly, this implementation will end up allocating more memory than before. For example, in a test that enqueues10,000 items, but between adding each item it enumerates the whole queue, I get these results: ``` Old - Time: 0.404s GC: 0 New - Time: 1.091s GC: 1 ``` I'm hopeful this is not a common pattern. If it is, we may be able to find some ways to mitigate the concern. Fixes #14207 cc: @kouvel, @alexperovich, @ianhays, @benaadams +14255 area-System.Text Add Encoding.GetBytes(string, offset, count) "The Encoding class has methods for encoding the middle of a `char[]`, but not for the middle of a `string`. A caller is forced to switch to unsafe (char*) or to re-allocate as `char[]`. ```diff public abstract partial class Encoding : System.ICloneable { ... public unsafe virtual int GetByteCount(char* chars, int count) { throw null; } public virtual int GetByteCount(char[] chars) { throw null; } public abstract int GetByteCount(char[] chars, int index, int count); public virtual int GetByteCount(string s) { throw null; } + public int GetByteCount(string s, int index, int count) { throw null; } ... public unsafe virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount) { throw null; } public virtual byte[] GetBytes(char[] chars) { throw null; } public virtual byte[] GetBytes(char[] chars, int index, int count) { throw null; } public abstract int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex); public virtual byte[] GetBytes(string s) { throw null; } + public byte[] GetBytes(string s, int index, int count) { throw null; } public virtual int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex) { throw null; } ... } ``` The `GetBytes(string, int, int)` method would allow for the typical ""just give me a big enough array"" while the `GetByteCount(string, int, int)` method would allow for ensuring that an existing buffer is sufficiently big to call the existing `GetBytes(string, int, int, byte[], int)` method." +14257 area-Infrastructure Update reporting parameters for package publish steps Usage of TargetQueue and ConfigurationGroup seems a bit hacky but I checked with @maririos and this should produce the right telemetry; at a minimum the path is right. @chcosta +14258 area-System.Net Expose additional netstandard APIs in Sockets. cc @karelz @danmosemsft @CIPop @stephentoub Added tests for SendPacketsFlags. EndAccept methods are already tested through previously exposed EndAccept. fixes #14182 +14259 area-Serialization To Support XmlUnknownElementAndEventHandlerTest in RelfectionOnly Mode The following tow tests failed in ReflectionOnly mode, - XmlSerializerTests.XmlUnknownElementAndEventHandlerTest [FAIL] - XmlSerializerTests.XmlUnknownNodeAndEventHandlerTest [FAIL] To fix the issue, we need to have a look at the fix we made for the above two tests and make changes on reflection only code path accordingly. Steps to repro the issue: 1. Remove [ActiveIssue] on the test. 2. cd into `src\System.Private.Xml\tests\XmlSerializer\ReflectionOnly` 3. `msbuild System.Xml.XmlSerializer.ReflectionOnly.Tests.csproj /t:buildandtest` XmlSerializerTests.XmlUnknownElementAndEventHandlerTest failed with the following error, ``` XmlSerializerTests.XmlUnknownElementAndEventHandlerTest [FAIL] System.InvalidOperationException : There is an error in XML document (5, 11). ---- Assert.NotNull() Failure Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(660,0): at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encoding Style, XmlDeserializationEvents events) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(553,0): at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encoding Style) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(519,0): at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2401,0): at XmlSerializerTests.XmlUnknownElementAndEventHandlerTest() ----- Inner Stack Trace ----- D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2390,0): at XmlSerializerTests.<>c__DisplayClass130_0.b__0(Objec t o, XmlElementEventArgs args) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1246,0): at System.Xml.Serialization.XmlSerializationReader.UnknownElement(Object o, XmlE lement elem, String qnames) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1300,0): at System.Xml.Serialization.XmlSerializationReader.UnknownNode(XmlNode unknownNo de, Object o, String qnames) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1279,0): at System.Xml.Serialization.XmlSerializationReader.UnknownNode(Object o, String qnames) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1252,0): at System.Xml.Serialization.XmlSerializationReader.UnknownNode(Object o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(108,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.ProcessUnk nownNode(UnknownNodeAction action) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(403,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMembe rElementsIf(Object& o, CollectionMember collectionMember, Member& member, Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Object masterObject) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(91,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMember Elements(Object& o, CollectionMember collectionMember, Member& member, Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Object masterObject) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(125,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMembe rs(Object& o, Member[] members, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(1018,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteLite ralStructMethod(StructMapping structMapping, Boolean isNullable, Boolean checkType, String defaultNamespace) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(752,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteStruc tMethod(StructMapping mapping, Boolean isNullable, Boolean checkType, String defaultNamespace) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(476,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteEleme nt(Object& o, CollectionMember collectionMember, ElementAccessor element, ChoiceIdentifierAccessor choice, Boolean checkSpecified, Boolean checkForNull, Boolean readOnly, String defaultNamespace, Obj ect masterObject) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(378,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMembe rElementsIf(Object& o, CollectionMember collectionMember, Member& member, Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Object masterObject) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(91,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMember Elements(Object& o, CollectionMember collectionMember, Member& member, Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Object masterObject) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(82,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.GenerateTyp eElement(XmlTypeMapping xmlTypeMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(50,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.ReadObject( ) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(585,0): at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encoding Style, XmlDeserializationEvents events) ``` And `XmlSerializerTests.XmlUnknownNodeAndEventHandlerTest` failed with, ``` XmlSerializerTests.XmlUnknownNodeAndEventHandlerTest [FAIL] System.InvalidOperationException : There is an error in XML document (4, 16). ---- Assert.NotNull() Failure Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(660,0): at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encoding Style, XmlDeserializationEvents events) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(553,0): at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encoding Style) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(519,0): at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2438,0): at XmlSerializerTests.XmlUnknownNodeAndEventHandlerTest() ----- Inner Stack Trace ----- D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2420,0): at XmlSerializerTests.<>c__DisplayClass131_0.b__0(Object o , XmlNodeEventArgs args) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1292,0): at System.Xml.Serialization.XmlSerializationReader.UnknownNode(XmlNode unknownNo de, Object o, String qnames) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1266,0): at System.Xml.Serialization.XmlSerializationReader.UnknownNode(Object o, String qnames) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(1252,0): at System.Xml.Serialization.XmlSerializationReader.UnknownNode(Object o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(108,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.ProcessUnk nownNode(UnknownNodeAction action) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(403,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMembe rElementsIf(Object& o, CollectionMember collectionMember, Member& member, Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Object masterObject) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationReader.cs(91,0): at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMember Elements(Object& o, CollectionMember collectionMember, Member& member, Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Object masterObject) ``` +14260 area-Serialization To Support XmlSerializerTests.XmlSchemaTest in RelfectionOnly Mode Steps to repro the issue: 1. Remove [ActiveIssue] on the test. 2. cd into `src\System.Private.Xml\tests\XmlSerializer\ReflectionOnly` 3. `msbuild System.Xml.XmlSerializer.ReflectionOnly.Tests.csproj /t:buildandtest` The test failed with the following error, ``` XmlSerializerTests.XmlSchemaTest [FAIL] System.InvalidOperationException : There was an error generating the XML document. ---- System.PlatformNotSupportedException : System.Xml.Schema.XmlSchemaObject Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(504,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces, String encodingStyle, String id) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(407,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces, String encodingStyle) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(402,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Schema\XmlSchema.cs(235,0): at System.Xml.Schema.XmlSchema.Write(XmlWriter writer, XmlNamespaceManager namespaceManager) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Schema\XmlSchema.cs(155,0): at System.Xml.Schema.XmlSchema.Write(Stream stream, XmlNamespaceManager namespaceManager) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Schema\XmlSchema.cs(144,0): at System.Xml.Schema.XmlSchema.Write(Stream stream) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2348,0): at XmlSerializerTests.XmlSchemaTest() ----- Inner Stack Trace ----- D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(483,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteStruc tMethod(StructMapping mapping, String n, String ns, Object o, Boolean isNullable, Boolean needType, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(390,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteEleme nt(Object o, ElementAccessor element, String arrayName, Boolean writeAccessor, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(163,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteEleme nts(Object o, Object enumSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, String arrayName, Boolean writeAccessors, Boolean isNullable, XmlMapping parentMapping ) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(110,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteMembe r(Object o, Object choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, Boolean writeAccessors, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(93,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.GenerateTyp eElement(Object o, XmlTypeMapping xmlMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(58,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteObject OfTypeElement(Object o, XmlTypeMapping mapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(48,0): at System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteObject (Object o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(438,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSeri alizerNamespaces namespaces, String encodingStyle, String id) ``` +14261 area-Serialization Add Test Project for XmlSerializer ReflectionOnly Add Test Project for Running XmlSerializer Tests in ReflectionOnly Mode. Fix #14253 +14262 area-System.Memory nuget package to work with fast and slow span Changing system.memory builds and pkgproj so that .netcoreapp gets fast span from coreclr while net45 gets slow span from corefx Note: There are some discrepancies between the ref assembly for Span and the two implementations which will be resolved in future PRs. For now, the workaround is the ApiCompatBaseline so that the API verification passes. The missing implementations in Fast Span will throw runtime error if called. +14263 area-System.Collections Test failure: Tests of 'System.Collections.Concurrent.Tests.ConcurrentBagTests' failed with 'Xunit.Sdk.EqualException' Opened on behalf of @jiangzeng The test `System.Collections.Concurrent.Tests.ConcurrentBagTests/AddSome_ThenInterleaveAddsAndTakes_MatchesOracle` has failed. Assert.Equal() Failure\r Expected: BagOracle [0, 1]\r Actual: ConcurrentBag [1, 0] Stack Trace: at System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests.AddSome_ThenInterleaveAddsAndTakes_MatchesOracle() in D:\A\_work\22\s\corefx\src\System.Collections.Concurrent\tests\ProducerConsumerCollectionTests.cs:line 136 Build : Master - 20161206.04 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: AddSome_ThenInterleaveAddsAndTakes_MatchesOracle CopyTo_ArrayZeroLowerBound_ZeroIndex_ExpectedElementsCopied CopyTo_SzArray_NonZeroIndex_ExpectedElementsCopied CopyTo_SzArray_ZeroIndex_ExpectedElementsCopied Ctor_Collection_ItemsAndCountMatch ToArray_AddAllItemsThenEnumerate_ItemsAndCountMatch ToArray_AddAndTakeItemsIntermixedWithEnumeration_ItemsAndCountMatch Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161206.04/workItem/System.Collections.Concurrent.Tests +14264 area-System.Collections Fix ConcurrentBag.ToArray ordering Technically ConcurrentBag is unordered and thus the order of elements from its ToArray/GetEnumerator/CopyTo/etc. shouldn't matter. But regardless I inadvertently changed the order as part of some recent reimplementation (https://github.com/dotnet/corefx/pull/14190), and then added some tests which relied on the new ordering (https://github.com/dotnet/corefx/pull/14221), which then break when run on desktop. It's simple enough to use the same ordering and fix the tests accordingly. Fixes https://github.com/dotnet/corefx/issues/14263 cc: @ianhays +14266 area-System.Linq Reduces branching in VisitAndConvert and similar. Each of these methods continuously tests for the existence of an array to see whether it should add to it. Failing that it tests to see whether it should create it. Instead just test as to whether it should create it, and then finish the loop expecting it to exist. +14267 area-Infrastructure [x86/Linux] Initial support of x86 cross build This PR adds initial support of cross building native parts of CoreFX for Linux x86 platform. Related issue: https://github.com/dotnet/coreclr/issues/8188 +14268 area-System.Security Make X509Certificate.Verify test OuterLoop and add diagnostics Addresses https://github.com/dotnet/corefx/issues/13979 CertTests.TestVerify test failed in CI Perhaps internet\network was down, time was wrong on local machine, or some other issue so moving test to outerloop to minimize issues with (rare) random failures. Uses ITestOutputHelper to capture information in .xml output (is there a better\different prescriptive way, like standard debug messages?) cc @bartonjs +14271 area-Infrastructure Make System.Memory and Unsafe target 1.1 packages This lets folks use System.Memory and Unsafe without upgrading all of their packages to latest pre-release. /cc @davidfowl @weshaggard +14273 area-System.Security Feedback on ClaimsPrincipal handling of arrays and complex types As originally reported by @nathan-alden in https://github.com/aspnet/mvc/issues/5532 Were I to use ClaimsPrincipal, I'd be forced to rely on the broken Claim class implementation that doesn't handle arrays properly and can't handle more complex types of claim values like JSON objects. +14274 area-System.Linq Removing some unnecessary parentheses in instructions Found some more redundant parentheses in this code when inspecting the diff between generated code and the original. +14275 area-System.ComponentModel ISupportInitialize and IDesignerHost should be in System.ComponentModel.Primitives /cc @ianhays @weshaggard @safern This is causing FileSystem.Watcher to bring in TypeConverter which is not a dependency we want to have. +14276 area-System.Linq Add TrySingle(IEnumerable, out TSource) In LINQ we have the Single and SingleOrDefault methods, but they don't tell you if it succeeded or not. See https://github.com/dotnet/corefx/issues/6073 +14277 area-Infrastructure [dev/eng] Start overhauling test build process. * Make System.Console.Tests build against the targeting pack. * Make System.Runtime.Numerics.Tests build against the targeting pack. This is just a small start but lays the groundwork for more projects. @joperezr @karajas @weshaggard +14279 area-System.Runtime Add more ConditionalWeakTable tests In preparation for porting some of the corert implementation back to coreclr. Boosts line coverage from ~50% to ~75%; the rest of the code is in internal functions only used by other parts of coreclr, in particular WindowsRuntimeMarshal. cc: @kouvel, @jkotas +14280 area-System.Linq Avoiding repeated array indexing in DynamicObject Also avoiding duplicate casts / type checks. +14281 area-System.Linq Avoid an array allocation in BindBinaryOperation for DynamicObject Also simplifying method calls for `GetExpressions` on the base class to omit the type name. +14282 area-System.Linq Remove unnecessary use of collection interface type in ExpressionStringBuilder No need to use `IReadOnlyList` for expression printing of child nodes. +14283 area-System.Security X509Certificate2.PrivateKey should not return ECDsa "In https://github.com/dotnet/corefx/issues/8491#issuecomment-261338229 I observed that our current (unreleased) plan to do RSA ?? DSA ?? ECDSA only works because we don't support other ECC algorithms. An ECC cert is ambiguous for use, it can be any of (currently) * ECDSA * ECDH * ECMQV And probably (but not explicitly) * ECIES * EdDSA * ECQV If a user requests ECDSA we can give it to them (provided the algorithm and KU agree), but we can't know that ECDSA is ""more right"" than ECDH (which is not yet supported in corefx, but is in netfx (though not via a certificate)) for a certificate with no KeyUsage extension. Or that ECDSA is ""more right"" than EdDSA (not currently supported at all). Allowing ECDSA now creates a potential compat problem for the future, so we should be restricted to RSA and DSA for now (which is all netfx supports) and we can revisit this later with more thoughtfulness. (Also applies to PublicKey.Key)" +14284 area-System.Security Create a X509Certificate2 from raw PEM files with Certificate and RSA Private Key the example is described in http://www.codeproject.com/Articles/162194/Certificates-to-DB-and-Back byte[] certBuffer = Helpers.GetBytesFromPEM(publicCert, PemStringType.Certificate); byte[] keyBuffer = Helpers.GetBytesFromPEM(privateKey, PemStringType.RsaPrivateKey); X509Certificate2 certificate = new X509Certificate2(certBuffer, password); RSACryptoServiceProvider prov = Crypto.DecodeRsaPrivateKey(keyBuffer); certificate.PrivateKey = prov; [certs.zip](https://github.com/dotnet/corefx/files/637770/certs.zip) +14285 area-Infrastructure Adding Netcoreapp1.2corert configuration to System.Private.Uri and System.Runtime This is the first change to add NetcoreApp1.2-CoreRT target to libraries. It's done similar to UAP and NetCore targets; the targeting pack contains System.Private.CoreLib and friends that System.Runtime is forwarding many types to. I've introduced ApiCompat baseline for the new target due to missing NS2.0 work on CoreRT, again similar to UAP. Note, I've added only win-corert configuration to both libraries. More work needs to be done to be able to add unix-corert configurations. @jkotas, @joshfree, @weshaggard,. @ericstj, PTAL /cc @dotnet/corert-contrib +14286 area-System.Numerics Vector2, Vector3 and Vector4 divide accuracy The divide implementation for the fixed-size vectors uses multiplication by inverse, which doesn't yield the same result as divide. This affects the result in the test https://github.com/dotnet/coreclr/blob/master/tests/src/JIT/Regression/JitBlue/GitHub_8220/GitHub_8220.cs, which was modified to allow a variance of ~1 ULP, but which should in theory yield the same result for the two cases. +14288 area-System.Data OverflowException on SqlConnection.Open() Originally reported in the EF project by @Thaoden - https://github.com/aspnet/EntityFramework/issues/7145. ### Steps to reproduce Create a new DbContext and ensure the database is created var dbOptionsBuilder = new DbContextOptionsBuilder().UseSqlServer(connectionString); var dbContext = new MyDbContext(dbOptionsBuilder.Options); dbContext.Database.EnsureCreated(); ### The issue On `EnsureCreated()`, an exception is thrown: > Unhandled Exception: System.OverflowException: Arithmetic operation resulted in an overflow. at SNIOpenSyncExWrapper(SNI_CLIENT_CONSUMER_INFO* , SNI_ConnWrapper** ) at SNINativeMethodWrapper.SNIOpenSyncEx(ConsumerInfo consumerInfo, String constring, IntPtr& pConn, Byte[] spnBuffer, Byte[] instanceName, Boolean fOverrideCache, Boolean fSync, Int32 timeout, Boolean fParallel, Int32 transparentNetworkResolutionStateNo, Int32 totalTimeout) at System.Data.SqlClient.SNIHandle..ctor(ConsumerInfo myInfo, String serverName, Byte[] spnBuffer, Boolean ignoreSniOpenTimeout, Int32 timeout, Byte[]& instanceName, Boolean flushCache, Boolean fSync, Boolean fParallel, TransparentNetworkResolutionState transparentNetworkResolutionState, Int32 totalTimeout) at System.Data.SqlClient.TdsParserStateObject.CreatePhysicalSNIHandle(String serverName, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Byte[]& instanceName, Byte[] spnBuffer, Boolean flushCache, Boolean async, Boolean fParallel, TransparentNetworkResolutionState transparentNetworkResolutionState, Int32 totalTimeout) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover, Boolean isFirstTransparentAttempt, SqlAuthenticationMethod authType) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover, Boolean isFirstTransparentAttempt) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass11_0.b__0(DateTime giveUp) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](Func`2 operation, Func`2 verifySucceeded, TState state) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, Func`2 operation, TState state) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureCreated() at MyProject.Startup.createSqlContext() in E:\VSProjects\MyProject\Startup.cs:line 204 at MyProject.Startup.ConfigureServices(IServiceCollection services) in E:\VSProjects\MyProject\Startup.cs:line 86 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services) at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at MyProject.Program.Main(String[] args) in E:\VSProjects\MyProject\Program.cs:line 19 Attempting to call `Migrate()`, `GetPendingMigrations()` or `GetAppliedMigrations()` all result in the same error. The same error is also thrown when trying to drop or update the database via EF tools: > dotnet ef database drop Finding DbContext classes... Using context 'MyDbContext'. This command will permanently drop the database: Database name : MyDb Data source : localhost\sqlexpress Are you sure you want to proceed? (y/N) y Finding DbContext classes... Using context 'MyDbContext'. Dropping database 'MyDb'. Opening connection to database 'MyDb' on server 'localhost\sqlexpress'. Opening connection to database 'MyDb' on server 'localhost\sqlexpress'. System.OverflowException: Arithmetic operation resulted in an overflow. at SNIOpenSyncExWrapper(SNI_CLIENT_CONSUMER_INFO* , SNI_ConnWrapper** ) at SNINativeMethodWrapper.SNIOpenSyncEx(ConsumerInfo consumerInfo, String constring, IntPtr& pConn, Byte[] spnBuffer, Byte[] instanceName, Boolean fOverrideCache, Boolean fSync, Int32 timeout, Boolean fParallel, Int32 transparentNetworkResolutionStateNo, Int32 totalTimeout) at System.Data.SqlClient.SNIHandle..ctor(ConsumerInfo myInfo, String serverName, Byte[] spnBuffer, Boolean ignoreSniOpenTimeout, Int32 timeout, Byte[]& instanceName, Boolean flushCache, Boolean fSync, Boolean fParallel, TransparentNetworkResolutionState transparentNetworkResolutionState, Int32 totalTimeout) at System.Data.SqlClient.TdsParserStateObject.CreatePhysicalSNIHandle(String serverName, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Byte[]& instanceName, Byte[] spnBuffer, Boolean flushCache, Boolean async, Boolean fParallel, TransparentNetworkResolutionState transparentNetworkResolutionState, Int32 totalTimeout) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover, Boolean isFirstTransparentAttempt, SqlAuthenticationMethod authType) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover, Boolean isFirstTransparentAttempt) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass11_0.b__0(DateTime giveUp) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](Func`2 operation, Func`2 verifySucceeded, TState state) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, Func`2 operation, TState state) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureDeleted() at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.DropDatabase(String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Arithmetic operation resulted in an overflow. ### Further technical details EF Core version: 1.1.0 Operating system: Win10 Enterprise 1607 Visual Studio version: VS2015 Update 3 Other details about my project setup: I have created a minimal throwing example at https://github.com/Thaoden/StackOverflowExceptionOnMigrate. It is run with `dotnet run` on the command line. +14289 area-Meta Enable CA2002:DoNotLockOnObjectsWithWeakIdentity This change enables CA2002 and adds baseline files for current failures. +14290 area-Infrastructure Update API baselines "Update the baselines for core vs. standard and desktop. Standard one is now empty and may it stay that way. Remove ""internal"" for reasons outlined here https://github.com/dotnet/standard/commit/de6d8024b0203709f98bcfd1bee580b2328ebf27 @weshaggard " +14291 area-Infrastructure Figure out build process for libraries with no reference assembly For now I binplace to the TargetingPack directory during source build, but that's not a good long term solution since it will lead folks to add simple name references rather than projectreferences that become race conditions. Ideas proposed so far: 1. Add refs for these that we only use for NETCoreApp. 2. Build them in a separate phase between ref and src builds. 3. Make them use project references to ref projects and build them during the ref phase. /cc @mellinoe @weshaggard +14292 area-Infrastructure Net core app.package This updates binplacing to for packaging and updates the NETCoreApp packages to use the results. We still need to figure out the filtering of the package build here, but this should have everything building. /cc @weshaggard @mellinoe @chcosta +14295 area-System.Memory Changing Span Empty from a field to a property. For both Span and ReadOnlySpan +14296 area-System.Collections Test failure: System.Collections.Concurrent.Tests.ConcurrentBagTests/IEnumerable_Generic_Enumerator_Current_AfterEndOfEnumerable_UndefinedBehavior(count: 0) Opened on behalf of @jiangzeng The test `System.Collections.Concurrent.Tests.ConcurrentBagTests/IEnumerable_Generic_Enumerator_Current_AfterEndOfEnumerable_UndefinedBehavior(count: 0)` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at System.Collections.Tests.IEnumerable_Generic_Tests`1.IEnumerable_Generic_Enumerator_Current_AfterEndOfEnumerable_UndefinedBehavior(Int32 count) in D:\A\_work\64\s\corefx\src\Common\tests\System\Collections\IEnumerable.Generic.Tests.cs:line 552 Build : Master - 20161207.04 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: IEnumerable_Generic_Enumerator_Current_AfterEndOfEnumerable_UndefinedBehavior IEnumerable_Generic_Enumerator_Current_BeforeFirstMoveNext_UndefinedBehavior Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161207.04/workItem/System.Collections.Concurrent.Tests/analysis/xunit/System.Collections.Concurrent.Tests.ConcurrentBagTests~2FIEnumerable_Generic_Enumerator_Current_AfterEndOfEnumerable_UndefinedBehavior(count:%200) +14298 area-Infrastructure create nupkg of ubuntu.16.04-xxx rid on ubuntu 14.04/x64 "I am working on ""Update CoreFX to generate nuget packages of CoreFX"" on https://github.com/dotnet/core-setup/issues/725 With https://github.com/chunseoklee/corefx/commit/320ca7d42839a33350807ea0f18a401edcf794dc, `$ ./build-managed.sh -package` seems to produce proper nupkg of ubuntu.14.04-arm rid. However, I cannot figure out how to produce ubuntu.16.04-arm nupkg. Is there any way to create ubuntu.16.04-arm on ubuntu14.04/x64 host ? p.s. during packaging(`$ ./build-managed.sh -package`) the following error occurs. In this case, ubuntu14.04-arm nupkg is missing something ? 52>/home/twoflower/dev/corefx/Tools/Packaging.targets(1096,5): error : PackageIndex from /home/twoflower/dev/corefx/pkg/Microsoft.Private.PackageBaseline/packageIndex.json is missing an entry for package runtime.ubuntu.14.04-arm.runtime.native.System.Security.Cryptography. Please run /t:UpdatePackageIndex on this project to commit an update. [/home/twoflower/dev/corefx/src/Native/pkg/runtime.native.System.Security.Cryptography/ubuntu/14.04/runtime.native.System.Security.Cryptography.pkgproj] 52>Done Building Project ""/home/twoflower/dev/corefx/src/Native/pkg/runtime.native.System.Security.Cryptography/ubuntu/14.04/runtime.native.System.Security.Cryptography.pkgproj"" (BuildAndTest target(s)) -- FAILED. " +14299 area-Infrastructure Microsoft.VisualBasic resource inclusion Just doing a `msbuild /t:clean;build` from the src\Microsoft.VisualBasic folder and the compile constant DEBUGRESOURCES doesn't get written to the bin\obj\AnyOS.AnyCPU.Debug\Microsoft.VisualBasic\defines.rsp file. This shows as the bin\obj\AnyOS.AnyCPU.Debug\Microsoft.VisualBasic\SR.vb file being compiled without fallbacks in debug mode. +14302 area-System.Runtime DefaultValueAttribute missing unsigned int / unsigned long constructor The proposal is to add constructor overloads so that the conversions don't happen and Value gets the expected type. See https://github.com/dotnet/corefx/issues/11465 +14303 area-System.Runtime "where is ""System.Runtime.Remoting.Messaging.CallContext"" in dotnetcore" +14304 area-Infrastructure [x86/Linux] Add RID definitions (Debian/Ubuntu) This PR adds RID defintions for x86 Linux Debian/Ubuntu. Related issue: https://github.com/dotnet/coreclr/issues/8188 Related PR: https://github.com/dotnet/corefx/pull/14267 +14305 area-System.Runtime error CS1061: 'Type' does not contain a definition for 'Assembly' and no extension method 'Assembly' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?) When adding a 'Resource' to an .NET Standard 1.6 Assembly in Visual Studio 2017 RC, the compiler throws an error message per the subject line. The issue is within the C# code behind generated automatically after adding the resource file. +14306 area-System.Linq Return self on XxxExpression.Update when children are the same Closes #3958 Takes pains to avoid calls to `GetOrMakeExpressions()` and similar on the expressions with arity-specialised types. Short-circuits on the case of identical collections being used on the update, as well as being a common case and hence worth as an optimisation, this reduces the possible penalty to those cases that already return the expression updated. +14307 area-System.Data Is OpenAsync really synchronous in DbConnection? I was looking at the [DbConnection OpenAsync](https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DbConnection.cs#L122) code and realized that it is just wrapper around a blocking call which returns a finished task and is therefor not really useful in async code, because calling the task alone without awaiting already blocks it. Is there a reason why this it is not a Task.Run(() => Open()), which would make it a bit more useful? +14308 area-System.Net Add CancellationToken overloads to async methods in System.Net.Sockets "Good day. I work with `UdpClient` and have wrapper upon it. For reading I have asynchronous method: ```c# private async Task Receive(UdpClient client, CancellationToken breakToken) { // Выход из async, если произошёл CancellationRequest breakToken.ThrowIfCancellationRequested(); UdpReceiveResult result; try { result = await client.ReceiveAsync().WithCancellation(breakToken); } catch(OperationCanceledException) { // Штатная ситуация ручной остановки Task-а } return result.Buffer; } ``` Where `WithCancellation` is my extension-method for early termination: ```c# public static async Task WithCancellation( this Task task, CancellationToken cancellationToken) { var tcs = new TaskCompletionSource(); using (cancellationToken.Register( s => ((TaskCompletionSource)s).TrySetResult(true), tcs)) if (task != await Task.WhenAny(task, tcs.Task)) throw new OperationCanceledException(cancellationToken); return await task; } ``` And after manual reading stop, when I call `Dispose`, `System.ObjectDisposedException` occurs. `CallStack`: ``` > System.dll!System.Net.Sockets.UdpClient.EndReceive(System.IAsyncResult asyncResult, ref System.Net.IPEndPoint remoteEP) Unknown System.dll!System.Net.Sockets.UdpClient.ReceiveAsync.AnonymousMethod__64_1(System.IAsyncResult ar) Unknown mscorlib.dll!System.Threading.Tasks.TaskFactory.FromAsyncCoreLogic(System.IAsyncResult iar, System.Func endFunction, System.Action endAction, System.Threading.Tasks.Task promise, bool requiresSynchronization) Unknown mscorlib.dll!System.Threading.Tasks.TaskFactory.FromAsyncImpl.AnonymousMethod__0(System.IAsyncResult iar) Unknown System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken) Unknown System.dll!System.Net.ContextAwareResult.CompleteCallback(object state) Unknown mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown System.dll!System.Net.ContextAwareResult.Complete(System.IntPtr userToken) Unknown System.dll!System.Net.LazyAsyncResult.ProtectedInvokeCallback(object result, System.IntPtr userToken) Unknown System.dll!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Unknown mscorlib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP) Unknown ``` If I understood correctly, root of error in `ReceiveAsync`, in my method of stop it to be exact. After nearly a week of suffering, I have found the reason and solution. **At first**, I looked at the `UdpClient` source code. The `ReceiveAsync` method: ```c# [HostProtection(ExternalThreading = true)] public Task ReceiveAsync() { return Task.Factory.FromAsync((callback, state) => BeginReceive(callback, state), (ar)=> { IPEndPoint remoteEP = null; Byte[] buffer = EndReceive(ar, ref remoteEP); return new UdpReceiveResult(buffer, remoteEP); }, null); } ``` **At second**, I found this post with perfect answer:http://stackoverflow.com/questions/4662553/how-to-abort-sockets-beginreceive, in which said: > To cancel a pending call to the BeginConnect() method, close the Socket. When the Close() method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect() method is called. A subsequent call to the EndConnect(IAsyncResult) method will throw an ObjectDisposedException to indicate that the operation has been cancelled. And, as we can see, the original `ReceiveAsync` method return us the `ObjectDisposedException`, because `IOOperation` has not been completed after `Close` invoking. **To overcome this problem I have done like this:** New `ReceiveAsync` realization: ```c# /// /// Асинхронный запрос на ожидание приёма данных с возможностью досрочного выхода /// (для выхода из ожидания вызовите метод Disconnect()) /// /// Рабочий экземпляр класса UdpClient /// Признак досрочного завершения /// Если breakToken произошёл до вызова данного метода или в режиме ожидания /// ответа, вернёт пустой UdpReceiveResult; при удачном получении ответа-результат /// асинхронной операции чтения public Task ReceiveAsync(UdpClient client, CancellationToken breakToken) => breakToken.IsCancellationRequested ? Task.Run(() => new UdpReceiveResult()) : Task.Factory.FromAsync( (callback, state) => client.BeginReceive(callback, state), (ar) => { /// Предотвращение if (breakToken.IsCancellationRequested) return new UdpReceiveResult(); IPEndPoint remoteEP = null; var buffer = client.EndReceive(ar, ref remoteEP); return new UdpReceiveResult(buffer, remoteEP); }, null); ``` New `Dispose` realization: ```c# protected virtual void Dispose(bool disposing) { if (disposing) { this.cancelReceive?.Cancel(); this.client?.Close(); this.cancelReceive?.Dispose(); } } ``` Is my solution OK(will be cool if you add it to framework in next version) and if not can you say me how to fix it differently?" +14309 area-System.Linq Use optimized N-ary MethodCallExpression nodes for more calls. Building on #3288 from @bartdesmet this causes the arity-specialised forms of `MethodCallExpression` to be used in more cases: 1. When the arguments collection is null. 2. When the arguments collection doesn't implement `IReadOnlyList<>` It does this by pre-emptively calling `ToReadOnly` in these cases. That it's spending time building this isn't an issue, as that would have happened anyway. It does mean the call after the switch on argument count is a duplicate much of the time, but `ToReadOnly` returns quickly in such cases. c.f. #6004 which did much the same for `InvocationExpression` +14310 area-System.Collections LowLevelConcurrentQueue not used? The internal LowLevelConcurrentQueue in [corefx/src/System.Threading/src/System/Collections/Concurrent/LowLevelConcurrentQueue.cs](https://github.com/dotnet/corefx/blob/master/src/System.Threading/src/System/Collections/Concurrent/LowLevelConcurrentQueue.cs) Doesn't appear to be used anywhere; should it be removed? /cc @stephentoub +14313 area-System.Runtime TimeZoneInfo.AdjustmentRule should override Equals `TimeZoneInfo.AdjustmentRule` [implements `IEquatable`](https://github.com/dotnet/coreclr/blob/c28e5e8ff02744dc1e1cc1fa9b2563d24e643f9b/src/mscorlib/src/System/TimeZoneInfo.cs#L4573) and [overrides `GetHashCode`](https://github.com/dotnet/coreclr/blob/c28e5e8ff02744dc1e1cc1fa9b2563d24e643f9b/src/mscorlib/src/System/TimeZoneInfo.cs#L4587) but doesn't override `Equals(object)`. +14319 area-System.Net HttpClient/CurlHandler CPU goes up after exception and does not come back @rvfernandes commented on [Tue Dec 06 2016](https://github.com/dotnet/coreclr/issues/8478) I made a small router in .Net Core and noticed that some machines from one hour to the other had a cpu jump. When this happens the CPU stays high, although the application responds without problems. I have noticed that this happens when I have a large number of exceptions of type (System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: The read operation failed, see inner exception. ---> System.Net.Http.CurlException: Transferred a partial file). My system runs on .Net Core with docker. +14320 area-System.Threading SemaphoreSlim can throw an ArgumentNullException during a cancel "@rchiodo commented on [Thu Nov 17 2016](https://github.com/dotnet/coreclr/issues/8177) I'm using a BlockingCollection and a call to TryTake(out value, timeout, cancelToken) will crash with an ArgumentNullException during a cancel. It looks to me like SemaphoreSlim is not handling cancel after it's been disposed. The callstack of the crash is like so: at System.Threading.Monitor.ReliableEnter(Object obj, Boolean& lockTaken) at System.Threading.SemaphoreSlim.CancellationTokenCanceledEventHandler(Object obj) --- @rchiodo commented on [Thu Nov 17 2016](https://github.com/dotnet/coreclr/issues/8177#issuecomment-261329150) In the debugger, the m_lockObj is null: private static void CancellationTokenCanceledEventHandler(object obj) { SemaphoreSlim semaphore = obj as SemaphoreSlim; Contract.Assert(semaphore != null, ""Expected a SemaphoreSlim""); lock (semaphore.m_lockObj) { Monitor.PulseAll(semaphore.m_lockObj); //wake up all waiters. } } --- @stephentoub commented on [Thu Nov 17 2016](https://github.com/dotnet/coreclr/issues/8177#issuecomment-261330272) @rchiodo, it sounds like something in your code disposed the BlockingCollection while it was still being used? --- @rchiodo commented on [Thu Nov 17 2016](https://github.com/dotnet/coreclr/issues/8177#issuecomment-261331678) Yes. It looks like the canceltoken has a registered callback that disposes the BlockingCollection. Shouldn't the semaphoreslim be throwing an ObjectDisposedException in this case? --- @danmosemsft commented on [Thu Dec 08 2016](https://github.com/dotnet/coreclr/issues/8177#issuecomment-265812623) Per [issues guidance](https://github.com/dotnet/coreclr/blob/master/Documentation/workflow/IssuesFeedbackEngagement.md) > If in the managed code log it in the CoreFX repo even if the code is in this CoreCLR repo (ie., in mscorlib/System.Private.Corelib). The reason for this is we sometimes move managed types between the two and it makes sense to keep all the issues together. " +14321 area-Infrastructure [dev/eng] Native shims need to be binplaced into the runtime directory Since these binaries are produced outside of the MSBuild system, we need to have more logic to handle them. We need to make sure the binary paths are consistent between MSBuild and CMake, and remain so. +14322 area-Infrastructure Centralize RID calcuation for build We have a few scenarios that need a RID during the build. 1. Test execution 2. External package resolution: what RID to use for building out runtime directory? 3. Package building: what RID to use when packaging the binaries that were built? Currently this logic is all duplicated and each place is a little different. We should try to unify it and make it simple to override/specify. /cc @weshaggard @ellismg @mellinoe +14323 area-System.Runtime Reduce allocations in String.Split @jamesqo commented on [Mon Nov 07 2016](https://github.com/dotnet/coreclr/issues/8034) Now that `ArrayPool` is in the coreclr repo, it may be worth trying to use `stackalloc` for the int table required by `Split` if the length of the string is small enough, otherwise using `ArrayPool` to rent the tables. I have been building [a prototype](https://github.com/dotnet/coreclr/compare/master...jamesqo:better-split?expand=1) to implement this over the last day or so; however, it's turning out much more complex than I expected. I can't even run the corefx tests since the xUnit runner chokes before it gets to them (probably due to something wrong in my changes) ☹️ Once I finish, however, I'll open a PR for this. In the meantime, I'm opening this issue to track this in case I can't finish. --- @Maoni0 commented on [Tue Nov 08 2016](https://github.com/dotnet/coreclr/issues/8034#issuecomment-259256797) @swgillespie could you please take a look at the prototype @jamesqo did? --- @swgillespie commented on [Wed Nov 16 2016](https://github.com/dotnet/coreclr/issues/8034#issuecomment-261109666) From an allocation perspective this all looks reasonable and good to me. I'm wondering if we can use a Span instead of char\* and length pair for the separator array, though? I see that it's used in MakeSeparatorList but I don't think I see any uses in there that prevent a Span from being used in its place, which would prevent a pin. --- @jamesqo commented on [Wed Nov 16 2016](https://github.com/dotnet/coreclr/issues/8034#issuecomment-261130838) @swgillespie Good point, I didn't think of using `Span` for this. I'll update the code to use it before submitting a PR. Thanks! --- +14324 area-System.Runtime Array.IsReadOnly should return true for empty arrays "@DerpMcDerp commented on [Wed Aug 10 2016](https://github.com/dotnet/coreclr/issues/6692) i.e. Array.cs should have this: ``` C# // Is this Array read-only? public bool IsReadOnly { get { return this.Length == 0; } } ``` instead of this: ``` C# // Is this Array read-only? public bool IsReadOnly { get { return false; } } ``` Note: the above change breaks code which does something like: ``` C# Contract.Requires(!list.IsReadOnly, ""list should be writable"") for (int i = 0; i < list.Count; ++i) { list[i] = whatever; } ``` Which was an incorrectly specified invariant anyway. --- @hughbe commented on [Thu Aug 11 2016](https://github.com/dotnet/coreclr/issues/6692#issuecomment-239111140) I hate to be a killjoy @DerpMcDerp, but this probably has too many breaking change implications. I assume that a new implementation would consider this, but the baggage of the past has to be taken into account --- @denis-dbm commented on [Thu Aug 11 2016](https://github.com/dotnet/coreclr/issues/6692#issuecomment-239152465) IsReadOnly is just inherited from IList interface, isn't? There is real use of this property for array type? I think the property should return false always. --- @ghost commented on [Thu Aug 11 2016](https://github.com/dotnet/coreclr/issues/6692#issuecomment-239187291) BTW, how does `this.Length == 0;` convey the message that collection is read-only? It should explicitly be either true (for `ReadOnlyCollection` types) or false (for non-`ReadOnlyCollection` types) because that would assert an artificial limitation on Add/Remove/Indexer methods. Or am I missing something? Probably having `IsFixedSize` in addition to `IsReadOnly` would somehow mitigate the confusions around the area as @jskeet pointed out: http://stackoverflow.com/a/26475514 --- @danmosemsft commented on [Thu Dec 08 2016](https://github.com/dotnet/coreclr/issues/6692#issuecomment-265819168) Per [issues guidance](https://github.com/dotnet/coreclr/blob/master/Documentation/workflow/IssuesFeedbackEngagement.md) > If in the managed code log it in the CoreFX repo even if the code is in this CoreCLR repo (ie., in mscorlib/System.Private.Corelib). The reason for this is we sometimes move managed types between the two and it makes sense to keep all the issues together. " +14325 area-System.Text Optimization: UTF8Encoding methods can probably be made faster/refactored @jamesqo commented on [Tue Aug 16 2016](https://github.com/dotnet/coreclr/issues/6759) Currently the UTF8Encoding methods are kind of a mess, and they read [ints at a time](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Text/UTF8Encoding.cs#L457-L458) rather than longs, so they're not taking full advantage of 64-bit platforms. Additionally strings have an `IsAscii()` flag [cached in the syncblk](https://github.com/dotnet/coreclr/blob/master/src/classlibnative/bcltype/stringnative.cpp#L234) that we may be able to make use of, since that will essentially let us skip any checks for non-ASCII data during the loop and make `GetByteCount` O(1). Other ideas for optimization: - Haven't proven it but I'm 99% sure that [Encoding.UTF8](https://github.com/dotnet/coreclr/blob/57b3450f4d232cd53d3b9a0f6566806d73fa4156/src/mscorlib/src/System/Text/Encoding.cs#L1519-L1524) will not be inlined, it does 3 volatile accesses and initialization? (the constructor is more likely to be inlined) This is going to harm the typical use case for people who don't cache the result, like this: ``` cs var bytes = Encoding.UTF8.GetBytes(str); bytes[0] = 0xff; str = Encoding.UTF8.GetString(bytes); // second method call to get_UTF8 ``` We should attempt to instead do something similar to [ArrayPool.Shared](https://github.com/dotnet/corefx/blob/master/src/System.Buffers/src/System/Buffers/ArrayPool.cs#L39-L43) where the one-time init logic is separated out into a new method. - Right now the virtual methods exposed in the API call another virtual method to do the heavy lifting. Maybe it would be worth duplicating some of the logic to avoid double virtual dispatch? - [Loop code size](https://github.com/dotnet/coreclr/blob/57b3450f4d232cd53d3b9a0f6566806d73fa4156/src/mscorlib/src/System/Text/UTF8Encoding.cs#L456-L497) is kinda big, which can be bad for the loop buffer. The logic to handle non-ASCII chars should be moved to outside the loop. --- @jkotas commented on [Tue Aug 16 2016](https://github.com/dotnet/coreclr/issues/6759#issuecomment-240155067) > that Encoding.UTF8 will not be inlined Agree. It would be nice to move the encoding singletons to the encoding classes where they belong, and initialize them in the static constructor of their respective class. This way the lazy initialization can be done using the more efficient static constructor trigger. > Right now the virtual methods exposed The options on what you can do about this are limited because of the encoding methods are not sealed. > logic to handle non-ASCII chars should be moved to outside the loop These kind of basic block movements are best left to profile guided optimizations - we do not have them hooked up to .NET Core yet, They are hooked up to full framework. You can read more about them here: https://msdn.microsoft.com/en-us/library/hh873180(v=vs.110).aspx --- @jkotas commented on [Tue Aug 16 2016](https://github.com/dotnet/coreclr/issues/6759#issuecomment-240155533) cc @KrzysztofCwalina Krzysztof has been looking into the performance issues around encoding as well. --- @redknightlois commented on [Thu Aug 18 2016](https://github.com/dotnet/coreclr/issues/6759#issuecomment-240736472) @jkotas A bit off-topic. Is the profile guided optimization going to be supported at the JIT level (without having to generate a native file)? --- @jkotas commented on [Thu Aug 18 2016](https://github.com/dotnet/coreclr/issues/6759#issuecomment-240809700) @redknightlois It may be worth an up-for-grabs issue. I do not think anybody is looking into it right now, but it should not be too hard for somebody to make it happen - all crucial parts are there today. --- @danmosemsft commented on [Thu Dec 08 2016](https://github.com/dotnet/coreclr/issues/6759#issuecomment-265819239) Per [issues guidance](https://github.com/dotnet/coreclr/blob/master/Documentation/workflow/IssuesFeedbackEngagement.md) > If in the managed code log it in the CoreFX repo even if the code is in this CoreCLR repo (ie., in mscorlib/System.Private.Corelib). The reason for this is we sometimes move managed types between the two and it makes sense to keep all the issues together. +14329 area-System.Security netTcp WCF clients fail with update to 1.1 I have an asp.net core controller that has a repo that uses a netTcp WCF client to call in to a WCF service. I used SecurityMode.Transport and TcpClientCredentialType.Certificate. For the client (that is hosted by the asp.net core controller), I read the certificate thumbprint out of my appsettings.json. This setup worked fine when my Microsoft.NETCore.App version was 1.0.1, but as soon as I change my dependency in project.json to 1.1 all my WCF calls fail with: > An unhandled exception of type 'System.ExecutionEngineException' occurred in System.Private.CoreLib.ni.dll this only happens when the credential type is set to Certificate. Windows and None security modes work without issue. +14331 area-System.Net HttpClient DiagnosticSource reporting does not notify about exceptions See `[System.Net.Http.HttpHandlerToFilter](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpHandlerToFilter.cs)` ``` protected internal override async Task SendAsync(HttpRequestMessage request, CancellationToken cancel) { .... Guid loggingRequestId = s_diagnosticListener.LogHttpRequest(request); RTHttpRequestMessage rtRequest = await ConvertRequestAsync(request).ConfigureAwait(false); RTHttpResponseMessage rtResponse = await _next.SendRequestAsync(rtRequest).AsTask(cancel).ConfigureAwait(false); ... s_diagnosticListener.LogHttpResponse(response, loggingRequestId); return response; } ``` If exception is thrown while sending the request (DNS issues, timeout), nothing will be sent to diagnostic source. +14332 area-System.Linq Arity-specialised DynamicExpression impls should be used from all factories. As per #3266 in regards to `Expression.Call()`, the overloads of `Expression.Dynamic()` and `DynamicExpression.Dynamic()` that take an `Expression[]` or `IEnumerable` should use the derived classes specialised for particular arity when possible. +14333 area-System.Linq Duplication between Expression.MakeDynamic and DynamicExpression.MakeDynamic Different implementations since .NET 4.0 have had one or the other of these methods, but we now have Expression.MakeDynamic for netstandard1.7 and DynamicExpression.MakeDynamic for all versions. The code in these are essentially identical. The former should call into the latter. +14334 area-System.Runtime TypeInfo doesn't expose a parameterless constructor `TypeInfo` currently doesn't expose a parameterless constructor. We have several types in our reference assemblies which should be inheriting from `TypeInfo` but are unable to do so because there is no accessible constructor. @weshaggard +14335 area-Infrastructure Start running netcoreapp tests against the built runtime folder This puts a tests.targets override into Tools-Override which has basic steps for running tests out of the live-built runtime folder for netcoreapp. Currently this is using corerun, and sets the `CORE_LIBRARIES` environment variable in order to load test assemblies from another folder. We may end up overhauling that part of the process. Additionally, I've fixed up a few more projects and verified that they all build and run successfully. NOTE: tests are still disabled in the CI runs. @joperezr +14336 area-System.Runtime String should implement IReadOnlyList "```c# public sealed partial class String : System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.IComparable, System.IComparable, System.IConvertible, System.IEquatable, System.ICloneable, System.Collections.Generic.IReadOnlyList { //... //IReadOnlyList members: int Count { get; } char this[int index] { get; } public IEnumerator GetEnumerator() { } // ... } ``` --- --- The original proposal was to use IReadOnlyList instead of IEnumerable, but that is not possible since it would break compatibility, so the proposal is instead to just add the new interface implementation. @stas-sultanov commented on [Mon Mar 23 2015](https://github.com/dotnet/coreclr/issues/542) I would like to suggest to make class String to implement IReadOnlyList{char} instead of IEnumerable{char}. Possibly interface should be implemented explicitly because of the Length property, which is extern and hardcoded in JIT. On the other hand Length could be deprecated and Count should be used instead. --- @pharring commented on [Thu Mar 26 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-86749090) @stas-sultanov Thanks for the suggestion. Can you give an example of where this would be useful? --- @stas-sultanov commented on [Fri Mar 27 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-86966435) Sure. Here is an example from one of my projects: A ConvertEx class which provides a set of methods to convert data from base-n string to byte array and vice-versa. This class has a lot of methods like: ``` C# public static TryResult TryToBase16String(byte[] data, int offset, int length) public static TryResult TryFromBase16String(string data, int offset, int length) ``` for this methods i'd like to use single method that checks arguments ``` C# private static void CheckArguments(IReadOnlyCollection data, int offset, int length) { if (data == null) throw new ArgumentNullException(@""data""); if (length < 0) throw new ArgumentOutOfRangeException(@""length"", length, @""Is less than 0.""); if (offset < 0) throw new ArgumentOutOfRangeException(@""offset"", offset, @""Is less than 0.""); if (offset > (data.Count - length)) throw new ArgumentOutOfRangeException(@""data"", data.Count, @""Offset plus length is greater than the length of data.""); } ``` But unfortunately it is not possible because byte[] and string has only one common interface `IEnumerable`. Use `IEnumerable` and get length via `Count()` method is not an option due to performance consideration. --- @pharring commented on [Fri Mar 27 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-86985851) A non-generic overload of CheckArguments would solve this, of course. --- @stas-sultanov commented on [Fri Mar 27 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87003680) of course it would, and that it is the way it is made now. :) but it dose not looks like a good design. maybe example is not good enough, however i strongly believe that this small change would made coreclr more versatile. --- @SamuelEnglard commented on [Sun Mar 29 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87472249) Just a quick point but unless I'm wrong array's don't implement `IReadOnlyList` so you'd still have to use the `Enumerable.Count()`. Do access the length/count of both an array and string in an efficient manner we'd have to `Enumerable.Count()` smarter. It already looks for types that implement `ICollection` or `ICollection` and uses the `Count` property instead of looping. If we add a shortcut for `IReadOnlyList` to that too then you could do what you want. --- @stas-sultanov commented on [Mon Mar 30 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87485509) Arrays do implement `IReadOnlyList`, please take a look at comments of [Array](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Array.cs) class. Or try to compile followin code: ``` C# IReadOnlyList test = new [] {1, 2, 3}; ``` the Enumerable class that implements Count method is not part of the coreclr. --- @JohanLarsson commented on [Sun Mar 29 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87487163) [Not much perf diff between .Count() and .Length for an array](http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,1191) IReadOnlyList is a nice interface though. --- @SamuelEnglard commented on [Sun Mar 29 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87487299) Ah yes, I had looked before posting but missed that comment. My bad. So then yes I'm all for making string implement `IReadOnlyList`. Sorry about that --- @stas-sultanov commented on [Mon Mar 30 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87648799) > Not much perf diff between .Count() and .Length for an array indeed, but once again: > the Enumerable class that implements Count method is not part of the coreclr. --- @VladimirGnenniy commented on [Mon Mar 30 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-87668687) I believe that this would be nice improvement of the architecture of the .net classes. --- @terrajobst commented on [Tue Apr 07 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-90750642) @KrzysztofCwalina How do you think about this? It seems that `String` would eventually support `Span`, would this additional interface make sense in general? --- @Lukazoid commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113505393) +1 for this, would be really useful to be able to pass strings directly as IReadOnlyList/IReadOnlyCollection parameters instead of going via .ToCharArray() or using a wrapper class. --- @KrzysztofCwalina commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113542312) To me string is a primitive type. I think it's already a mistake that it implements IEnumerable. --- @sharwell commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113547344) @KrzysztofCwalina I totally get that view. It leads to [special cases](https://github.com/antlr/antlrcs/blob/bff09d7d1f25c64b680268d218e8461d4666501a/Antlr4.StringTemplate/Interpreter.cs#L1280-L1282) in certain code that isn't required in, [say, Java](https://github.com/antlr/stringtemplate4/blob/master/src/org/stringtemplate/v4/Interpreter.java#L1111-L1127). But for better or worse, that ship has sailed. Given that string already implements `IEnumerable` (and that isn't going to change), the question is whether or not it should also implement `IReadOnlyList`. :thought_balloon: I think it makes sense specifically for some cases where code currently needs to call `ToCharArray()`. I couldn't find any clear-cut cases where the new implementation would simplify my own existing code, but especially given it already implements `IEnumerable` I think it makes sense to implement `IReadOnlyList` as well. --- @KrzysztofCwalina commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113549499) If we implemented it explicitly and made sure the Linq extensions don't show on String, then I guess it would be fine. --- @sharwell commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113570244) @KrzysztofCwalina It already implements `IEnumerable`, so the LINQ extensions already appear. --- @KrzysztofCwalina commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113573465) Hmmm, I was under the impression that we special cased it in C#. --- @KrzysztofCwalina commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113578131) @jaredpar, @MadsTorgersen, I thought C# was special cased to not show Linq methods on String? --- @sharwell commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113578491) In the PCL, `string` only implements `IEnumerable` (not `IEnumerable`), so only `OfType` and `Cast` appear. When I target .NET 4.5+ desktop, I see the LINQ methods appearing in VS 2015 RC. --- @MadsTorgersen commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113582793) @KrzysztofCwalina I think you just spent too much time with PCL. :-) In the full framework, LINQ always worked over string - for better or worse. --- @KrzysztofCwalina commented on [Fri Jun 19 2015](https://github.com/dotnet/coreclr/issues/542#issuecomment-113583825) Yeah, it's all slowly coming to me. I think we initially wanted to special case it, but then we just decided to implement IEnumerable. Then in 8.1 we added IEnumerable (why?), and we are back to the original problem that string intellisense shows all these linq methods that probably should not be used on strings. --- @danmosemsft commented on [Thu Dec 08 2016](https://github.com/dotnet/coreclr/issues/542#issuecomment-265878943) API request -- moving to CoreFX " +14337 area-System.Runtime Add String.Trim overloads that take a single char and string separator ## Proposed API ```c# public sealed class String { // Proposed public string Trim(char trimChar); public string TrimStart(char trimChar); public string TrimEnd(char trimChar); // Existing public string Trim(); public string Trim(params char[] trimChars); public string TrimStart(params char[] trimChars); public string TrimEnd(params char[] trimChars); } ``` ## Motivation Avoid unnecessary array allocations when you want to trim based on a single char. - Similar to / consistent with recently approved #1513 `String.Split(char, ...)` and #5552 `String.Join(char, ...)`. ------------------------------------------------- ## Original discussion in CoreCLR repo @Snesha commented on [Wed Oct 21 2015](https://github.com/dotnet/coreclr/issues/1826) Complement String.Split additions for single char and string separator (https://github.com/dotnet/corefx/issues/1513). Proposed new APIs public string[] Trim(char); public string[] Trim(string); CC @ellismg - any others? Or will these cover the complement? --- @ellismg commented on [Thu Oct 22 2015](https://github.com/dotnet/coreclr/issues/1826#issuecomment-150398557) I would not do Trim(string) (it's not clear to me what the semantics are) and do TrimEnd(char) and TrimStart(char) instead. It feels like all three methods could use a common core. --- @Snesha commented on [Tue Oct 27 2015](https://github.com/dotnet/coreclr/issues/1826#issuecomment-151571232) TrimEnd(char) and TrimStart(char) are the new assignments. --- @ellismg commented on [Thu Oct 29 2015](https://github.com/dotnet/coreclr/issues/1826#issuecomment-152101611) We have some internal folks looking into this. Thanks everyone! --- @danmosemsft commented on [Thu Dec 08 2016](https://github.com/dotnet/coreclr/issues/1826#issuecomment-265879193) API request - moving to CoreFX . +14338 area-System.Collections Add Move method to List "@omariom commented on [Sun Jun 21 2015](https://github.com/dotnet/coreclr/issues/1165) There are plenty of convenience methods in generic List. But no Move method that can efficiently move an item from one position to another. What we have to do is [RemoveAt and Insert](https://github.com/dotnet/corefx/blob/master/src/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs#L200). It means two copies of big chunks of memory instead of one. The worst case is when both **from** and **to** are close to each other and to the beginning of a large list. What could be done with one copy of a few items becomes two copies of almost the whole list. In my implementation of ObservableCollection.MoveItem I had to get the underlying `List`, retrieve via reflection :see_no_evil: its array and do the work myself. So.. **I propose adding new Move method to generic List with the following signature:** ``` C# public void Move(int oldIndex, int newIndex); ``` --- @omariom commented on [Sun Jun 21 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-113963719) cc: @KrzysztofCwalina --- @OtherCrashOverride commented on [Sun Jun 21 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-113967256) Isn't this what LinkedList is for? --- @omariom commented on [Mon Jun 22 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114040328) LinkedList is quite different in its capabilities. Its elements can't be accessed by position, its layout is not cache friendly etc. --- @hadibrais commented on [Mon Jun 22 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114066363) While such method can be added to the generic list and is really useful, it cannot be utilized from the existing **ObservableCollection.Move** method you referenced. That's because three state changes have to be reported: **NotifyCollectionChangedAction.Remove**, **NotifyCollectionChangedAction.Add** and **NotifyCollectionChangedAction.Move**. Also the intermediate states have to be captured and made available to any listeners. Regardless, such efficient method is really useful and should be offered by the generic List. It's also easy to implement. --- @omariom commented on [Mon Jun 22 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114071250) I mentioned ObservableCollection.MoveItem just as an example where such method could be used. Actually there are other cases where Move could be beneficial. > That's because three state changes have to be reported: NotifyCollectionChangedAction.Remove, NotifyCollectionChangedAction.Add and NotifyCollectionChangedAction.Move. Collection (which is the base class) doesn't report any actions. So nothing changes in terms of reporting. --- @OtherCrashOverride commented on [Mon Jun 22 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114083702) List is not intended for performance with random inserts and deletes. Adding 'move' would just encourage improper use of the class. Move is a heavy weight function when type of List is a struct/valuetype. If there is a language where there is a precedence of having Move on a List it would be worth examining. Neither C++ std::vector nor Java 8 have any such notion. > In my implementation of ObservableCollection.MoveItem I had to get the underlying List, retrieve via reflection its array and do the work myself. It would also be helpful to post the code somewhere as an example of what is wanted. --- @omariom commented on [Mon Jun 22 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114095876) @OtherCrashOverride Something like this: ``` C# public void Move(int oldIndex, int newIndex) { if ((uint)oldIndex >= (uint)_size) { ThrowArgumentOutOfRange(""oldIndex""); } if ((uint)newIndex >= (uint)_size) { ThrowArgumentOutOfRange(""newIndex""); } if (newIndex == oldIndex) return; T item = _items[oldIndex]; if (newIndex < oldIndex) { Array.Copy(_items, newIndex, _items, newIndex + 1, oldIndex - newIndex); } else { Array.Copy(_items, oldIndex + 1, _items, oldIndex, newIndex - oldIndex); } _items[newIndex] = item ; _version++; } ``` --- @omariom commented on [Sat Jul 02 2016](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114097129) > List is not intended for performance with random inserts and deletes. Yes, but we already have **RemoveAt** and **Insert** methods which allow random inserts and deletes. And they are actually used to implement move semantics. --- @OtherCrashOverride commented on [Mon Jun 22 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-114101837) I would suggesting creating a pull request with the code and some tests. You should also include code to benchmark performance with Move versus RemoveAt / Insert. --- @masonwheeler commented on [Fri Jun 26 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-115775692) @OtherCrashOverride The performance benefits are obvious when you think about worst cases. For example, imagine a list with a few thousand items in it, and the operation you want to perform is `Move(10, 20);` With `RemoveAt` and `Insert`, you end up having to shift (essentially) all items in the list... twice. With the proposed `Move` method, you would have to shift 9 items once. --- @OtherCrashOverride commented on [Fri Jun 26 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-115823035) > The performance benefits are obvious when you think about worst cases. We really need to see benchmarks before we start speculating. In theory, it should be faster. The reality will come down to what the runtime does behind the scenes. For most cases LinkedList is probably a better choice. The use case for this is where you require the data to be sequential in memory. A specific example is when dealing with a GPU. Vertex data is typically very large structs packed into an array. It is also not uncommon to manipulate the data elements in real time. This proposal may benefit that specific scenario. We still require a benchmark to validate the claim. --- @KrzysztofCwalina commented on [Fri Jun 26 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-115827288) I think some kind of ""move"" API is worth exploring. But I think it would be great if somebody thought about a more general API than simple ""move one items from here to there"". For example, what if I want to move a slice/range? what if I want to swap two ranges? What if I want to round robin move three items? BTW, I am not proposing that we actually implement all these, often corner case, scenarios, but it would be good to have a good overview of the ""move"" scenarios and chose to implement the ones that are common and where we can get good performance improvement while preserving simplicity. --- @OtherCrashOverride commented on [Fri Jun 26 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-115850684) Upon further reflection, there is an issue here in that you can not actually get at the sequential data (for p/invoke) without exposing the internal array. With that in mind, maybe 'Move' should be proposed for 'Array'. List could then make use of that functionality without breaking encapsulation as exposing the internal array storage would do. Alternatively, a new ArrayList (or some other name) class could be introduced that guarantees array storage and exposes the internals. This, however, seems less than ideal. https://msdn.microsoft.com/en-us/library/system.collections.arraylist%28v=vs.110%29.aspx --- @AdamSpeight2008 commented on [Sat Jun 27 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-116131277) Why not just swap the contents? ``` c# public void Swap( this T a, T ) { T tmp = a; a = b; b = a; } ``` --- @masonwheeler commented on [Sat Jun 27 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-116132546) @AdamSpeight2008 Because that would only be a valid equivalent if the new index was adjacent to the old index. Let's say we have a lit of ints, like so: `0, 1, 2, 3, 4, 5, 6, 7, 8, 9` Swapping 1 and 5 would result in `0, 5, 2, 3, 4, 1, 6, 7, 8, 9` whereas executing the hypothetical `Move(1, 5)` would result in: `0, 2, 3, 4, 1, 5, 6, 7, 8, 9` As you can see, they're completely different operations. --- @AdamSpeight2008 commented on [Sat Jun 27 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-116137212) @masonwheeler Should the result of `Move( 1, 5)` be `0, 2, 3, 4, 5, 1, 6, 7, 8, 9` What should the resulf of `Move( 5, 1)` ? then same? Or `Move( 1, 1 )` --- @AdamSpeight2008 commented on [Sat Jun 27 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-116149465) The following extension methods implement the `Move`functionality. ``` vb Public Module Exts Public Function Move(Of T)(xs As IEnumerable(Of T), ox As Integer, nx As Integer) As IEnumerable(Of T) Return _Move(xs, ox, nx) End Function Private Iterator Function _Move(Of T)(xs As IEnumerable(Of T), ox As Integer, nx As Integer) As IEnumerable(Of T) Dim oxd = xs.ElementAt(ox) Dim ix = 0 Dim en = xs.GetEnumerator While en.MoveNext If ix = ox Then ElseIf ix = nx Then If ox < nx Then Yield en.Current Yield oxd Else Yield oxd Yield en.Current End If Else Yield en.Current End If ix += 1 End While End Function End Module ``` --- @AdamSpeight2008 commented on [Sat Jun 27 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-116163215) `Move( 1, 5). Move( 5, 1)` should really result in the original list. --- @omariom commented on [Mon Jun 29 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-116780193) @KrzysztofCwalina, I think two the most practical overloads at the moment are these: ``` C# public void Move(oldIndex, newIndex); public void Move(sourceIndex, length, destinationIndex); ``` Or, as an alternative, List could have Copy method with the same semantics as [Array.Copy](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Array.cs#L288) method. Then everyone could implement whatever he needs: moves, shifts, etc. --- @omariom commented on [Fri Sep 25 2015](https://github.com/dotnet/coreclr/issues/1165#issuecomment-143189689) This is what I have to do.. :scream_cat: ![](https://cloud.githubusercontent.com/assets/1781701/10099125/65e83124-638f-11e5-8241-4a4de138fc9c.png) --- @omariom commented on [Sat Jul 02 2016](https://github.com/dotnet/coreclr/issues/1165#issuecomment-230125569) @KrzysztofCwalina Now that .NET Core 1.0 is out can we change the milestone of the issue from Future to Present? ) --- @KrzysztofCwalina commented on [Tue Jul 05 2016](https://github.com/dotnet/coreclr/issues/1165#issuecomment-230528937) @terrajobst, @weshaggard, are you guys going to triage ""future"" issues? --- @danmosemsft commented on [Thu Dec 08 2016](https://github.com/dotnet/coreclr/issues/1165#issuecomment-265879332) API request - moving to CoreFX. " +14339 area-System.Net Use ArrayPool in ManagedWebSocket This switches from allocating byte arrays to getting them from ArrayPool. There are two primary buffers, and then a few smaller ones. The receive buffer is rented for the lifetime of the websocket, whereas the send buffer is rented only for the duration of a send. By switching to using ArrayPool, memory consumption when many websockets are being used should be less, as they will only take up the space for the send buffer while it's in use. cc: @benaadams, @CIPop, @davidsh, @anurse +14341 area-System.Collections Concurrent_Enqueue_TryPeek_TryDequeue_AllItemsSeen failing sporadically Since #14254 was merged, the Concurrent_Enqueue_TryPeek_TryDequeue_AllItemsSeen test has failed a few times, but only on Unix. The test is simple and has been very stable, so there's likely a product issue. It looks like something is amiss with the fences, as we appear to be overwriting a value that shouldn't be. https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_release/330/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu14.04_debug/40/consoleText ``` System.Collections.Concurrent.Tests.ConcurrentQueueTests.Concurrent_Enqueue_TryPeek_TryDequeue_AllItemsSeen [FAIL] System.AggregateException : One or more errors occurred. (Assert.Equal() Failure Expected: 1 Actual: 33) ---- Assert.Equal() Failure Expected: 1 Actual: 33 Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release/src/System.Collections.Concurrent/tests/ConcurrentQueueTests.cs(91,0): at System.Collections.Concurrent.Tests.ConcurrentQueueTests.Concurrent_Enqueue_TryPeek_TryDequeue_AllItemsSeen() ----- Inner Stack Trace ----- /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release/src/System.Collections.Concurrent/tests/ConcurrentQueueTests.cs(76,0): at System.Collections.Concurrent.Tests.ConcurrentQueueTests.<>c__DisplayClass10_0.b__0() at System.Threading.Tasks.Task.Execute() ``` +14345 area-Microsoft.CSharp Improve code coverage for Microsoft.CSharp.dll (72%) There are almost [no tests](https://github.com/dotnet/corefx/blob/master/src/Microsoft.CSharp/tests/CSharpArgumentInfoTests.cs) so there is [essentially zero coverage](https://dotnetcoverage.blob.core.windows.net/cov1/report/index.htm) +14346 area-System.Data Improve code coverage for System.Data.SqlClient (12%) [Report here](https://dotnetcoverage.blob.core.windows.net/cov1/report/index.htm) +14347 area-System.Linq Use arity-based DynamicExpressions more and remove duplication. Make heavier use of the arity-based derived `DynamicExpression` types. Fixes #14332 Have `Expression.Dynamic` call to `DynamicExpression.Dynamic` and `Expression.MakeDynamic` call to `DynamicExpression.MakeDynamic` when they are duplicate in functionality. Fixes #14333 Some more tests for `DynamicExpression`. +14348 area-System.Collections Fix race condition in ConcurrentQueue.TryPeek We incorrectly loop through the segments looking for the first that's not empty, under the idea that if there's more than one segment, all segments before the last are frozen, thus if we go through each segment in turn we can return from the first that's not empty. The problem is that we could check segment s, see that it's empty, but before we're able to check its next segment, so many enqueues could come in that they not only fill this segment, they spill into the next, causing the s._nextSegment to be non-null, at which point our loop will continue and we'll peek from s._nextSegment instead of from s. Fixes https://github.com/dotnet/corefx/issues/14341 cc: @kouvel, @benaadams, @janvorli +14349 area-Infrastructure [dev/eng] Make test projects compile against the TargetingPack + Xunit (1/3) Tests projects tracked by this issue are: ``` \src\Common\tests\Common.Tests.csproj \src\Microsoft.CSharp\tests\Microsoft.CSharp.Tests.csproj \src\Microsoft.VisualBasic\tests\Microsoft.VisualBasic.Tests.csproj \src\Microsoft.Win32.Primitives\tests\Microsoft.Win32.Primitives.Tests.csproj \src\Microsoft.Win32.Registry.AccessControl\tests\Microsoft.Win32.Registry.AccessControl.Tests.csproj \src\Microsoft.Win32.Registry\tests\Microsoft.Win32.Registry.Tests.csproj \src\System.AppContext\tests\System.AppContext.Tests.csproj \src\System.Buffers\tests\System.Buffers.Tests.csproj \src\System.CodeDom\tests\System.CodeDom.Tests.csproj \src\System.Collections.Concurrent\tests\System.Collections.Concurrent.Tests.csproj \src\System.Collections.Immutable\tests\System.Collections.Immutable.Tests.csproj \src\System.Collections.NonGeneric\tests\Performance\System.Collections.NonGeneric.Performance.Tests.csproj \src\System.Collections.NonGeneric\tests\System.Collections.NonGeneric.Tests.csproj \src\System.Collections.Specialized\tests\System.Collections.Specialized.Tests.csproj \src\System.Collections\tests\Performance\System.Collections.Performance.Tests.csproj \src\System.Collections\tests\System.Collections.Tests.csproj \src\System.ComponentModel.Annotations\tests\System.ComponentModel.Annotations.Tests.csproj \src\System.ComponentModel.EventBasedAsync\tests\System.ComponentModel.EventBasedAsync.Tests.csproj \src\System.ComponentModel.Primitives\tests\System.ComponentModel.Primitives.Tests.csproj \src\System.ComponentModel.TypeConverter\tests\Performance\System.ComponentModel.TypeConverter.Performance.Tests.csproj \src\System.ComponentModel.TypeConverter\tests\System.ComponentModel.TypeConverter.Tests.csproj \src\System.ComponentModel\tests\System.ComponentModel.Tests.csproj \src\System.Composition.Convention\tests\System.Composition.Convention.Tests.csproj \src\System.Composition\tests\System.Composition.Tests.csproj \src\System.Console\tests\ManualTests\System.Console.Manual.Tests.csproj \src\System.Console\tests\Performance\System.Console.Performance.Tests.csproj \src\System.Console\tests\System.Console.Tests.csproj \src\System.Data.Common\tests\System.Data.Common.Tests.csproj \src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj \src\System.Data.SqlClient\tests\ManualTests\System.Data.SqlClient.ManualTesting.Tests.csproj \src\System.Data.SqlClient\tests\StressTests\System.Data.SqlClient.Stress.Tests\System.Data.SqlClient.Stress.Tests.csproj \src\System.Diagnostics.Contracts\tests\System.Diagnostics.Contracts.Tests.csproj \src\System.Diagnostics.Debug\tests\System.Diagnostics.Debug.Tests.csproj \src\System.Diagnostics.DiagnosticSource\tests\System.Diagnostics.DiagnosticSource.Tests.csproj \src\System.Diagnostics.FileVersionInfo\tests\System.Diagnostics.FileVersionInfo.Tests\System.Diagnostics.FileVersionInfo.Tests.csproj \src\System.Diagnostics.Process\tests\Performance\System.Diagnostics.Process.Performance.Tests.csproj \src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests.csproj \src\System.Diagnostics.TextWriterTraceListener\tests\System.Diagnostics.TextWriterTraceListener.Tests.csproj \src\System.Diagnostics.Tools\tests\System.Diagnostics.Tools.Tests.csproj \src\System.Diagnostics.TraceSource\tests\System.Diagnostics.TraceSource.Tests.csproj \src\System.Diagnostics.Tracing\tests\System.Diagnostics.Tracing.Tests.csproj \src\System.Drawing.Primitives\tests\System.Drawing.Primitives.Tests.csproj \src\System.Dynamic.Runtime\tests\System.Dynamic.Runtime.Tests.csproj \src\System.Globalization.Calendars\tests\System.Globalization.Calendars.Tests.csproj \src\System.Globalization.Extensions\tests\System.Globalization.Extensions.Tests.csproj \src\System.Globalization\tests\Performance\System.Globalization.Performance.Tests.csproj \src\System.Globalization\tests\System.Globalization.Tests.csproj \src\System.IO.Compression.ZipFile\tests\System.IO.Compression.ZipFile.Tests.csproj \src\System.IO.Compression\tests\Performance\System.IO.Compression.Performance.Tests.csproj \src\System.IO.Compression\tests\System.IO.Compression.Tests.csproj \src\System.IO.FileSystem.AccessControl\tests\System.IO.FileSystem.AccessControl.Tests.csproj \src\System.IO.FileSystem.DriveInfo\tests\System.IO.FileSystem.DriveInfo.Tests.csproj \src\System.IO.FileSystem.Primitives\tests\System.IO.FileSystem.Primitives.Tests.csproj \src\System.IO.FileSystem.Watcher\tests\System.IO.FileSystem.Watcher.Tests.csproj \src\System.IO.FileSystem\tests\Performance\System.IO.FileSystem.Performance.Tests.csproj \src\System.IO.FileSystem\tests\System.IO.FileSystem.Tests.csproj \src\System.IO.IsolatedStorage\tests\System.IO.IsolatedStorage.Tests.csproj \src\System.IO.MemoryMappedFiles\tests\Performance\System.IO.MemoryMappedFiles.Performance.Tests.csproj \src\System.IO.MemoryMappedFiles\tests\System.IO.MemoryMappedFiles.Tests.csproj \src\System.IO.Packaging\tests\System.IO.Packaging.Tests.csproj \src\System.IO.Pipes.AccessControl\tests\System.IO.Pipes.AccessControl.Tests.csproj \src\System.IO.Pipes\tests\Performance\System.IO.Pipes.Performance.Tests.csproj \src\System.IO.Pipes\tests\System.IO.Pipes.Tests.csproj \src\System.IO.UnmanagedMemoryStream\tests\System.IO.UnmanagedMemoryStream.Tests.csproj \src\System.IO\tests\System.IO.Tests.csproj \src\System.Json\tests\System.Json.Tests.csproj \src\System.Linq.Expressions\tests\System.Linq.Expressions.Tests.csproj \src\System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj \src\System.Linq.Queryable\tests\System.Linq.Queryable.Tests.csproj \src\System.Linq\tests\Performance\System.Linq.Performance.Tests.csproj ``` +14350 area-Infrastructure [dev/eng] Make test projects compile against the TargetingPack + Xunit (2/3) Tests projects tracked by this issue are: ``` \src\System.Linq\tests\System.Linq.Tests.csproj \src\System.Memory\tests\System.Memory.Tests.csproj \src\System.Net.Http.WinHttpHandler\tests\FunctionalTests\System.Net.Http.WinHttpHandler.Functional.Tests.csproj \src\System.Net.Http.WinHttpHandler\tests\UnitTests\System.Net.Http.WinHttpHandler.Unit.Tests.csproj \src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj \src\System.Net.Http\tests\UnitTests\System.Net.Http.Unit.Tests.csproj \src\System.Net.HttpListener\tests\System.Net.HttpListener.Tests.csproj \src\System.Net.Mail\tests\Functional\System.Net.Mail.Functional.Tests.csproj \src\System.Net.Mail\tests\Unit\System.Net.Mail.Unit.Tests.csproj \src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj \src\System.Net.NameResolution\tests\PalTests\System.Net.NameResolution.Pal.Tests.csproj \src\System.Net.NameResolution\tests\UnitTests\System.Net.NameResolution.Unit.Tests.csproj \src\System.Net.NetworkInformation\tests\FunctionalTests\System.Net.NetworkInformation.Functional.Tests.csproj \src\System.Net.NetworkInformation\tests\UnitTests\System.Net.NetworkInformation.WinRT.Unit.Tests.csproj \src\System.Net.Ping\tests\FunctionalTests\System.Net.Ping.Functional.Tests.csproj \src\System.Net.Primitives\tests\FunctionalTests\System.Net.Primitives.Functional.Tests.csproj \src\System.Net.Primitives\tests\PalTests\System.Net.Primitives.Pal.Tests.csproj \src\System.Net.Primitives\tests\PerformanceTests\System.Net.Primitives.Performance.Tests.csproj \src\System.Net.Primitives\tests\UnitTests\System.Net.Primitives.UnitTests.Tests.csproj \src\System.Net.Requests\tests\System.Net.Requests.Tests.csproj \src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj \src\System.Net.Security\tests\UnitTests\System.Net.Security.Unit.Tests.csproj \src\System.Net.ServicePoint\tests\System.Net.ServicePoint.Tests.csproj \src\System.Net.Sockets\tests\FunctionalTests\System.Net.Sockets.Tests.csproj \src\System.Net.Sockets\tests\PerformanceTests\System.Net.Sockets.Async.Performance.Tests.csproj \src\System.Net.WebClient\tests\System.Net.WebClient.Tests.csproj \src\System.Net.WebHeaderCollection\tests\System.Net.WebHeaderCollection.Tests.csproj \src\System.Net.WebProxy\tests\System.Net.WebProxy.Tests.csproj \src\System.Net.WebSockets.Client\tests\System.Net.WebSockets.Client.Tests.csproj \src\System.Net.WebSockets\tests\System.Net.WebSockets.Tests.csproj \src\System.Numerics.Vectors\tests\Performance\System.Numerics.Vectors.Performance.Tests.csproj \src\System.Numerics.Vectors\tests\System.Numerics.Vectors.Tests.csproj \src\System.ObjectModel\tests\System.ObjectModel.Tests.csproj \src\System.Private.Uri\tests\ExtendedFunctionalTests\System.Private.Uri.ExtendedFunctional.Tests.csproj \src\System.Private.Uri\tests\FunctionalTests\System.Private.Uri.Functional.Tests.csproj \src\System.Private.Uri\tests\UnitTests\System.Private.Uri.Unit.Tests.csproj \src\System.Private.Xml.Linq\tests\axes\System.Xml.Linq.Axes.Tests.csproj \src\System.Private.Xml.Linq\tests\events\System.Xml.Linq.Events.Tests.csproj \src\System.Private.Xml.Linq\tests\misc\System.Xml.Linq.Misc.Tests.csproj \src\System.Private.Xml.Linq\tests\Properties\System.Xml.Linq.Properties.Tests.csproj \src\System.Private.Xml.Linq\tests\Schema\System.Xml.Schema.Extensions.Tests.csproj \src\System.Private.Xml.Linq\tests\SDMSample\System.Xml.Linq.SDMSample.Tests.csproj \src\System.Private.Xml.Linq\tests\Streaming\System.Xml.Linq.Streaming.Tests.csproj \src\System.Private.Xml.Linq\tests\TreeManipulation\System.Xml.Linq.TreeManipulation.Tests.csproj \src\System.Private.Xml.Linq\tests\xNodeBuilder\System.Xml.Linq.xNodeBuilder.Tests.csproj \src\System.Private.Xml.Linq\tests\xNodeReader\System.Xml.Linq.xNodeReader.Tests.csproj \src\System.Private.Xml.Linq\tests\XPath\XDocument\System.Xml.XPath.XDocument.Tests.csproj \src\System.Private.Xml\tests\Misc\System.Xml.Misc.Tests.csproj \src\System.Private.Xml\tests\Readers\CharCheckingReader\System.Xml.RW.CharCheckingReader.Tests.csproj \src\System.Private.Xml\tests\Readers\CustomReader\System.Xml.RW.CustomReader.Tests.csproj \src\System.Private.Xml\tests\Readers\FactoryReader\System.Xml.RW.FactoryReader.Tests.csproj \src\System.Private.Xml\tests\Readers\NameTable\System.Xml.RW.NameTable.Tests.csproj \src\System.Private.Xml\tests\Readers\ReaderSettings\System.Xml.RW.ReaderSettings.Tests.csproj \src\System.Private.Xml\tests\Readers\SubtreeReader\System.Xml.RW.SubtreeReader.Tests.csproj \src\System.Private.Xml\tests\Readers\WrappedReader\System.Xml.RW.WrappedReader.Tests.csproj \src\System.Private.Xml\tests\Writers\RwFactory\System.Xml.RW.RwFactory.Tests.csproj \src\System.Private.Xml\tests\Writers\XmlWriterApi\System.Xml.RW.XmlWriterApi.Tests.csproj \src\System.Private.Xml\tests\XmlConvert\System.Xml.RW.XmlConvert.Tests.csproj \src\System.Private.Xml\tests\XmlDocument\Performance\System.Xml.XmlDocument.Performance.Tests.csproj \src\System.Private.Xml\tests\XmlDocument\System.Xml.XmlDocument.Tests.csproj \src\System.Private.Xml\tests\XmlReader\ReadContentAs\System.Xml.RW.XmlReader.ReadContentAs.Tests.csproj \src\System.Private.Xml\tests\XmlReader\Tests\System.Xml.RW.XmlReader.Tests.csproj \src\System.Private.Xml\tests\XmlReader\XmlResolver\System.Xml.RW.XmlSystemPathResolver.Tests.csproj \src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\System.Xml.XmlSchemaSet.Tests.csproj \src\System.Private.Xml\tests\XmlSchema\XmlSchemaValidatorApi\System.Xml.XmlSchema.XmlSchemaValidatorApi.Tests.csproj \src\System.Private.Xml\tests\XmlSerializer\System.Xml.XmlSerializer.Tests.csproj \src\System.Private.Xml\tests\XmlWriter\System.Xml.RW.XmlWriter.Tests.csproj \src\System.Private.Xml\tests\XPath\XmlDocument\System.Xml.XPath.XmlDocument.Tests.csproj \src\System.Private.Xml\tests\XPath\XPathDocument\System.Xml.XPath.Tests.csproj \src\System.Private.Xml\tests\Xslt\XslCompiledTransformApi\System.Xml.Xsl.XslCompiledTransformApi.Tests.csproj ``` +14351 area-Infrastructure [dev/eng] Make test projects compile against the TargetingPack + Xunit (3/3) Tests projects tracked by this issue are: ``` \src\System.Private.Xml\tests\Xslt\XsltCompiler\XsltCompiler.Tests.csproj \src\System.Private.Xml\tests\Xslt\XslTransformApi\System.Xml.Xsl.XslTransformApi.Tests.csproj \src\System.Private.Xml\tests\Xslt\XsltScenarios\XsltScenarios.Tests.csproj \src\System.Reflection.Context\tests\System.Reflection.Context.Tests.csproj \src\System.Reflection.DispatchProxy\tests\System.Reflection.DispatchProxy.Tests.csproj \src\System.Reflection.Emit.ILGeneration\tests\System.Reflection.Emit.ILGeneration.Tests.csproj \src\System.Reflection.Emit.Lightweight\tests\System.Reflection.Emit.Lightweight.Tests.csproj \src\System.Reflection.Emit\tests\System.Reflection.Emit.Tests.csproj \src\System.Reflection.Extensions\tests\System.Reflection.Extensions.Tests.csproj \src\System.Reflection.Metadata\tests\System.Reflection.Metadata.Tests.csproj \src\System.Reflection.TypeExtensions\tests\CoreCLR\System.Reflection.TypeExtensions.CoreCLR.Tests.csproj \src\System.Reflection.TypeExtensions\tests\System.Reflection.TypeExtensions.Tests.csproj \src\System.Reflection\tests\CoreCLR\System.Reflection.CoreCLR.Tests.csproj \src\System.Reflection\tests\System.Reflection.Tests.csproj \src\System.Resources.Reader\tests\System.Resources.Reader.Tests.csproj \src\System.Resources.ResourceManager\tests\System.Resources.ResourceManager.Tests.csproj \src\System.Resources.Writer\tests\System.Resources.Writer.Tests.csproj \src\System.Runtime.CompilerServices.Unsafe\tests\System.Runtime.CompilerServices.Unsafe.Tests.csproj \src\System.Runtime.Extensions\tests\Performance\System.Runtime.Extensions.Performance.Tests.csproj \src\System.Runtime.Extensions\tests\System.Runtime.Extensions.Tests.csproj \src\System.Runtime.Handles\tests\System.Runtime.Handles.Tests.csproj \src\System.Runtime.InteropServices.RuntimeInformation\tests\System.Runtime.InteropServices.RuntimeInformation.Tests.csproj \src\System.Runtime.InteropServices\tests\System.Runtime.InteropServices.Tests.csproj \src\System.Runtime.Loader\tests\DefaultContext\System.Runtime.Loader.DefaultContext.Tests.csproj \src\System.Runtime.Loader\tests\RefEmitLoadContext\System.Runtime.Loader.RefEmitLoadContext.Tests.csproj \src\System.Runtime.Loader\tests\System.Runtime.Loader.Tests.csproj \src\System.Runtime.Numerics\tests\System.Runtime.Numerics.Tests.csproj \src\System.Runtime.Serialization.Formatters\tests\System.Runtime.Serialization.Formatters.Tests.csproj \src\System.Runtime.Serialization.Json\tests\Performance\System.Runtime.Serialization.Json.Performance.Tests.csproj \src\System.Runtime.Serialization.Json\tests\ReflectionOnly\System.Runtime.Serialization.Json.ReflectionOnly.Tests.csproj \src\System.Runtime.Serialization.Json\tests\System.Runtime.Serialization.Json.Tests.csproj \src\System.Runtime.Serialization.Xml\tests\Performance\System.Runtime.Serialization.Xml.Performance.Tests.csproj \src\System.Runtime.Serialization.Xml\tests\ReflectionOnly\System.Runtime.Serialization.Xml.ReflectionOnly.Tests.csproj \src\System.Runtime.Serialization.Xml\tests\System.Runtime.Serialization.Xml.Tests.csproj \src\System.Runtime\tests\Performance\System.Runtime.Performance.Tests.csproj \src\System.Runtime\tests\System.Runtime.Tests.csproj \src\System.Security.AccessControl\tests\System.Security.AccessControl.Tests.csproj \src\System.Security.Claims\tests\System.Security.Claims.Tests.csproj \src\System.Security.Cryptography.Algorithms\tests\System.Security.Cryptography.Algorithms.Tests.csproj \src\System.Security.Cryptography.Cng\tests\System.Security.Cryptography.Cng.Tests.csproj \src\System.Security.Cryptography.Csp\tests\System.Security.Cryptography.Csp.Tests.csproj \src\System.Security.Cryptography.Encoding\tests\System.Security.Cryptography.Encoding.Tests.csproj \src\System.Security.Cryptography.OpenSsl\tests\System.Security.Cryptography.OpenSsl.Tests.csproj \src\System.Security.Cryptography.Pkcs\tests\System.Security.Cryptography.Pkcs.Tests.csproj \src\System.Security.Cryptography.Primitives\tests\System.Security.Cryptography.Primitives.Tests.csproj \src\System.Security.Cryptography.ProtectedData\tests\System.Security.Cryptography.ProtectedData.Tests.csproj \src\System.Security.Cryptography.X509Certificates\tests\System.Security.Cryptography.X509Certificates.Tests.csproj \src\System.Security.Permissions\tests\System.Security.Permissions.Tests.csproj \src\System.Security.Principal.Windows\tests\System.Security.Principal.Windows.Tests.csproj \src\System.Security.SecureString\tests\System.Security.SecureString.Tests.csproj \src\System.ServiceProcess.ServiceController\tests\System.ServiceProcess.ServiceController.Tests\System.ServiceProcess.ServiceController.Tests.csproj \src\System.Text.Encoding.CodePages\tests\System.Text.Encoding.CodePages.Tests.csproj \src\System.Text.Encoding.Extensions\tests\System.Text.Encoding.Extensions.Tests.csproj \src\System.Text.Encoding\tests\Performance\System.Text.Encoding.Performance.Tests.csproj \src\System.Text.Encoding\tests\System.Text.Encoding.Tests.csproj \src\System.Text.Encodings.Web\tests\System.Text.Encodings.Web.Tests.csproj \src\System.Text.RegularExpressions\tests\System.Text.RegularExpressions.Tests.csproj \src\System.Threading.AccessControl\tests\System.Threading.AccessControl.Tests.csproj \src\System.Threading.Overlapped\tests\System.Threading.Overlapped.Tests.csproj \src\System.Threading.Tasks.Dataflow\tests\System.Threading.Tasks.Dataflow.Tests.csproj \src\System.Threading.Tasks.Extensions\tests\System.Threading.Tasks.Extensions.Tests.csproj \src\System.Threading.Tasks.Parallel\tests\System.Threading.Tasks.Parallel.Tests.csproj \src\System.Threading.Tasks\tests\System.Threading.Tasks.Tests.csproj \src\System.Threading.Thread\tests\System.Threading.Thread.Tests.csproj \src\System.Threading.ThreadPool\tests\System.Threading.ThreadPool.Tests.csproj \src\System.Threading.Timer\tests\System.Threading.Timer.Tests.csproj \src\System.Threading\tests\Performance\System.Threading.Performance.Tests.csproj \src\System.Threading\tests\System.Threading.Tests.csproj \src\System.Transactions\tests\System.Transactions.Tests.csproj \src\System.ValueTuple\tests\System.ValueTuple.Tests.csproj \src\System.Web.HttpUtility\tests\System.Web.HttpUtility.Tests.csproj ``` +14352 area-System.IO Improve code coverage for System.IO.FileSystem.AccessControl (0%) We have almost [zero test coverage](https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs) so our [code coverage is essentially zero](https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/) +14354 area-System.Numerics Proposal: Add System.HashCode to make it easier to generate good hash codes. "# Update 6/16/17: Looking for volunteers The API shape has been finalized. However, we're still deciding on the best hash algorithm out of [a list of candidates](https://github.com/dotnet/corefx/issues/14354#issuecomment-305028686) to use for the implementation, and we need someone to help us measure the throughput/distribution of each algorithm. If you'd like to take that role up, please leave a comment below and @karelz will assign this issue to you. # Update 6/13/17: Proposal accepted! Here's the API that was approved by @terrajobst at https://github.com/dotnet/corefx/issues/14354#issuecomment-308190321: ```cs // Will live in the core assembly // .NET Framework : mscorlib // .NET Core : System.Runtime / System.Private.CoreLib namespace System { public struct HashCode { public static int Combine(T1 value1); public static int Combine(T1 value1, T2 value2); public static int Combine(T1 value1, T2 value2, T3 value3); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8); public void Add(T value); public void Add(T value, IEqualityComparer comparer); [Obsolete(""Use ToHashCode to retrieve the computed hash code."", error: true)] [EditorBrowsable(Never)] public override int GetHashCode(); public int ToHashCode(); } } ``` The original text of this proposal follows. # Rationale Generating a good hash code should not require use of ugly magic constants and bit twiddling on our code. It should be less tempting to write a bad-but-concise `GetHashCode` implementation such as ```cs class Person { public override int GetHashCode() => FirstName.GetHashCode() + LastName.GetHashCode(); } ``` # Proposal We should add a `HashCode` type to enscapulate hash code creation and avoid forcing devs to get mixed up in the messy details. Here is my proposal, which is based off of https://github.com/dotnet/corefx/issues/14354#issuecomment-305019329, with a few minor revisions. ```cs // Will live in the core assembly // .NET Framework : mscorlib // .NET Core : System.Runtime / System.Private.CoreLib namespace System { public struct HashCode { public static int Combine(T1 value1); public static int Combine(T1 value1, T2 value2); public static int Combine(T1 value1, T2 value2, T3 value3); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7); public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8); public void Add(T value); public void Add(T value, IEqualityComparer comparer); public void AddRange(T[] values); public void AddRange(T[] values, int index, int count); public void AddRange(T[] values, int index, int count, IEqualityComparer comparer); [Obsolete(""Use ToHashCode to retrieve the computed hash code."", error: true)] public override int GetHashCode(); public int ToHashCode(); } } ``` ## Remarks See @terrajobst's comment at https://github.com/dotnet/corefx/issues/14354#issuecomment-305019329 for the goals of this API; all of his remarks are valid. I would like to point out these ones in particular, however: - The API **does not need** to produce a strong cryptographic hash - The API will provide ""a"" hash code, but not guarantee a particular hash code algorithm. This allows us to use a different algorithm later or use different algorithms on different architectures. - The API will guarantee that within a given process the same values will yield the same hash code. Different instances of the same app will likely produce different hash codes due to randomization. This allows us to ensure that consumers cannot persist hash values and accidentally rely on them being stable across runs (or worse, versions of the platform)." +14355 area-System.Net Port windows authentication for HttpListener fixes #13903 Classification of changes - Ported authentication from full framework to core - WDigest protocol is not ported, as it's disabled from Windows 8.1. - Added tests for basic authentication, other protocols require infrastructure from CI. cc @CIPop @davidsh @stephentoub @karelz +14356 area-System.Security [AWS Linux][unsupported] X509Certificate2 fails on AWS Linux "How do I load a X509certificate on netcore? The code: `var x509Certificate2 = new X509Certificate2(""certificatePair.pfx"");` Fails with the following exception when run on AWS Linux: > { > ""errorType"": ""LambdaException"", > ""errorMessage"": ""An exception was thrown when the constructor for type 'Lambda.Handlers.WebApiHandler' was invoked. Check inner exception for more details."", > ""cause"": { > ""errorType"": ""TargetInvocationException"", > ""errorMessage"": ""Exception has been thrown by the target of an invocation."", > ""stackTrace"": [ > ""at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)"", > ""at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)"", > ""at System.Activator.CreateInstance(Type type, Boolean nonPublic)"", > ""at System.Activator.CreateInstance(Type type)"" > ], > ""cause"": { > ""errorType"": ""MissingMethodException"", > ""errorMessage"": "".ctor"", > ""stackTrace"": [ > ""at Interop.Crypto.Pkcs12Parse(SafePkcs12Handle p12, String pass, SafeEvpPKeyHandle& pkey, SafeX509Handle& cert, SafeX509StackHandle& ca)"", > ""at Internal.Cryptography.Pal.OpenSslPkcs12Reader.Decrypt(String password)"", > ""at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(OpenSslPkcs12Reader pfx, String password, Boolean single, ICertificatePal& readPal, List`1& readCerts)"", > ""at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs12(SafeBioHandle bio, String password, Boolean single, ICertificatePal& readPal, List`1& readCerts)"", > ""at Internal.Cryptography.Pal.CertificatePal.FromBio(SafeBioHandle bio, String password)"", > ""at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags)"", > ""at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)"", > ""at Bunkr.RestApi.Startup.ConfigureServices(IServiceCollection services)"", > ""--- End of stack trace from previous location where exception was thrown ---"", > ""at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()"", > ""at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services)"", > ""at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()"", > ""at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()"", > ""at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()"", > ""at Microsoft.AspNetCore.TestHost.TestServer..ctor(IWebHostBuilder builder)"", > ""at Lambda.Handlers.WebApiHandler..ctor()"" > ] > } > } > } The code calling this: https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslPkcs12Reader.cs" +14358 area-Infrastructure Remove stale P2P references Replaces https://github.com/dotnet/corefx/pull/14134. It was failing due to still needing some of these; now that our corefx dependencies have been updated, we can get rid of 'em. cc: @joperezr, @danmosemsft Fixes #12431 Fixes #13073 Fixes #13894 +14359 area-System.Runtime CurrentDomain.GetAssemblies() functionality. Hi! I know that this question was already discussed (https://github.com/dotnet/corefx/issues/1784#issuecomment-184409082) but unfortunally there was no direct answer how to do it or some workaround. This is very needed functionality. +14360 area-Infrastructure Add nuget pkg to publish ubuntu*-arm First step to create nuget packages for ubuntu-arm Signed-off-by: chunseok lee +14362 area-Infrastructure Add portableLinux option for build-native.sh This change adds portableLinux option to the src/Native/build-native.sh and also enables its passing through from the root build-native.sh and build.sh. This option enables or disables build of native binaries portable over Linux distros based on glibc. I have also modified the build-native.sh behavior for the staticLibLink option. Before, if you ran build with this option and then later on ran the build without this option, it was still considered as being set since the previous value was cached. With my change, it rebuilds the binaries any time you change the option. +14363 area-System.Net Use ArrayPool for multiple buffers in CurlHandler CurlHandler currently has two potentially large byte[] buffers: - When sending request data, it allocates a buffer to transfer data from the request to libcurl, typically 16K (unless the request content is known to be smaller than that). - When transferring response data, libcurl offers up data in large chunks, and we need to take all or none of it at a time. If a response read on the response stream asks for less than what libcurl proferred, we need to buffer the remainder, typically up to 16K in size. Currently these buffers are allocated per request. This commit changes them to come from ArrayPool. cc: @geoffkizer, @davidsh, @cipop +14364 area-System.Collections Fix ConcurrentBag enumeration undefined behavior ConcurrentBag.GetEnumerator used to copy all of the contents into a List and then return that List's enumerator. As part of some recent optimizations, I changed that to use an array instead of a list. But array's enumerator has different semantics for the undefined case of accessing Current after MoveNext returns false. Initially I thought we'd just accept the breaking change, but as it's simple to address and as the change does introduce an exception where there wasn't previously one, I've changed my mind and am just adding a simple enumerator to address the discrepancy. Fixes https://github.com/dotnet/corefx/issues/14296 cc: @ianhays +14368 area-System.Security could not run unit test if dependency library reference System.Security.Cryptography.Algorithms "I have a class library which target .net standard 1.3. And I use the MD5 class to hash the string. ```C# public static class HashHelper { public static string GetStringMD5(string str) { using (var md5 = MD5.Create()) { var bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); return BitConverter.ToString(bytes).Replace(""-"", """"); } } } ``` But when I run the unit test, it throw System.IO.FileLoadException to me. ![qq 20161209233211](https://cloud.githubusercontent.com/assets/5144550/21054665/82396f92-be69-11e6-9610-5148462aa7a5.png) even my unit test project install System.Security.Cryptography.Algorithms package. I upload the demo here: https://github.com/h82258652/NetCoreSystemSecurityCryptographyAlgorithmsCanNotUnitTest Environment: **OS:** Win10 14393 x64 **Unit Test Project:** .net framework 4.6.2 **Library:** .net standard 1.3 **Visual Studio:** 2015 Enterprise update 3" +14369 area-System.Collections Move ImmutableArray and interfaces it implements to System.Runtime These are all exchange types and should be useable anywhere on the stack. +14371 area-Infrastructure Remove non-functional arm64 testing +14372 area-System.Linq DynamicObject Tests +14373 area-System.Linq Test System.Dynamic.SetIndexBinder and S.D.SetMemberBinder +14374 area-System.Net Why is the class HttpStatusDescription internal ? I was wondering why this class is made **internal** ? Because I want to use this class to get a description from an HttpStatusCode ? **Update + Reminder to myself** I need this for this project : https://github.com/vtortola/WebSocketListener/blob/master/vtortola.WebSockets/Http/HttpStatusDescription.cs +14375 area-Infrastructure [dev/eng] RemoteExecutorConsoleApp needs to be modified to handle new test structure Many of our tests use the `RemoteExecutorConsoleApp`. Currently, it only works if the whole runtime is next to the test assembly, next to the runtime, next to the host, etc. We need to reconfigure how this thing works so that it works with the new directory structure that we've proposed. +14376 area-System.Memory Span: Add debugger viewers to Span and ReadOnlySpan It's difficult to debug programs that use spans because the span items cannot be easily inspected in the debugger. +14378 area-Serialization Area-Serialization Sprint 111 The issue is for tracking issues to be done in sprint 111 (due by 12/30/2016). +14381 area-System.Linq Prohibit pointer and byref types in TypeAs expressions. Contributes to #8081 Further test `TypeAs` validation. +14382 area-System.Console Review CA2002:DoNotLockOnObjectsWithWeakIdentity errors in System.Console The System.Console project has many cases of locking on bad objects. Review the usages and suppress in source with justifications if the risk of deadlocks is okay. https://github.com/dotnet/corefx/blob/master/src/System.Console/src/FxCopBaseline.cs +14387 area-System.Runtime Add additional methods to ConditionalWeakTable ```ConditionalWeakTable``` is a specialized dictionary but it lacks several useful public members. We just added AddOrUpdate in https://github.com/dotnet/corefx/issues/8429. We should also add: ```C# public sealed class ConditionalWeakTable : IEnumerable> { public void Clear(); // already exists as internal, just needs to be made public IEnumerator> IEnumerable>.GetEnumerator(); // non-snapshot semantics, similar to ConcurrentDictionary IEnumerator IEnumerable.GetEnumerator(); } ``` +14389 area-System.ComponentModel Moving ISupportInitialize down to System.ComponentModel.Primitives Fixes #14275 cc @weshaggard @ericstj @danmosemsft +14390 area-System.ComponentModel IDesignerHost should be in System.ComponentModel.Primitives /cc @weshaggard @ericstj This is causing FileSystem.Watcher to bring in TypeConverter. +14391 area-System.ComponentModel Remove P2P references from System.ComponentModel.TypeConverter Once #14389 goes in the P2P references should be removed. +14392 area-System.Xml Fix Newline bug in Xsl tests Fixes https://github.com/dotnet/corefx/issues/14146, https://github.com/dotnet/corefx/issues/14148, and https://github.com/dotnet/corefx/issues/14147 I was not able to repro the failures locally even after building against local packages (as instructed [here](https://github.com/dotnet/corefx/blob/master/Documentation/building/build-tests-against-packages.md)). But after looking at the helix test result xml output I'm pretty sure these are caused by new line differences on unix and windows (`\r\n` vs. `\n`) cc: @danmosemsft @stephentoub @joperezr +14394 area-System.Reflection Remove S.Linq dependency from S.R.Metadata @tmat @davidwrighton +14396 area-System.Memory S.M.Span: Add Clear()/Fill(T value) Just to get the ball rolling, here is naive Clear/Fill implementations for `Span` as per approved API proposals https://github.com/dotnet/corefx/issues/13915 and https://github.com/dotnet/corefx/issues/14189 i.e.: ```csharp public class Span { public void Clear(); public void Fill(T value); } ``` @jkotas I will try to update this PR over time and hope you can give some feedback until we reach a point where more people can be added for review. If that is ok with you? I would like to start minimally with implementation, and instead focus on ensuring complete tests are in place and ideally perf tests so we can establish a baseline. From that we can move on with optimizations. So first question, is what tests should be added? As I see we need at least three different scenarios: * Value type without references i.e. `int` (already there) * Reference type i.e. `string` * Value type with references i.e. custom `struct` Additionally, there needs to be tests that cover alignment issues etc. I assume. cc: @karelz Closes https://github.com/dotnet/corefx/issues/13915 https://github.com/dotnet/corefx/issues/14189 +14398 area-System.Runtime Investigate queueing string references for StringBuilder "Currently, in `StringBuilder.Append(string)` we copy all of the characters of the input string to our internal buffers. Then, we copy all of these characters again to the output string if `ToString` is called. So basically, we're copying each input string twice. We can reduce this to 1 copy. Instead of eagerly copying the string when `Append` is called, we can queue it up into a list of string references we have. Then, during `ToString`, we will copy the part from our char buffers before that string, copy the string, then copy the part from our buffers before the next string, etc. Here is a visualization: ```cs new StringBuilder() .Append('a') .Append(""reallylongstring"" + new string(Enumerable.Repeat('g', 100).ToArray())) .Append(','); // Before InternalBuffers: ['a', 'r', 'e', 'a', ... 'g', 'g', '.'] // After InternalBuffers: ['a', '.'] StringQueue: [""reallylongstringggggg...gg""] // Only 8 bytes to store! ``` It is a little overly simplistic because StringBuilder actually uses a linked list of char buffers for internal storage, but I hope the point still gets across. ## Downsides - It will complicate the indexer logic more - We will have to add an extra field or 2 to `StringBuilder` - The string reference itself may be more expensive to store than the string's characters - However, we can easily work around this by checking the length of the string, and calculating whether that takes up 8 bytes (the size of a 64-bit reference) or more. If yes, then we queue it; if no, then we copy its individual characters. ## Other Notes I made a proof-of-concept PR last month to corefxlab, so you can see more how this is implemented if you're interested: https://github.com/dotnet/corefxlab/pull/976" +14403 area-System.IO CreateText always creates a new file while documentation says it creates OR opens "At https://docs.microsoft.com/en-us/dotnet/core/api/system.io.file#System_IO_File_CreateText_System_String_ documentation says, that: CreateText(String) Creates or opens a file for writing UTF-8 encoded text. However on my tests a file is always created (overwritten). I don't know whether the documentation should be updated to match practice or vice versa. Repro code ``` using (var t = System.IO.File.CreateText(""test.txt"")) { t.WriteLine(""Test1""); } using (var t = System.IO.File.CreateText(""test.txt"")) { t.BaseStream.Seek(0, System.IO.SeekOrigin.End); t.WriteLine(""Test2""); } ``` Expected result in test.txt according to doumentation: is ``` Test1 Test2 ``` However actual result (tested on Windows) is: ``` Test2 ``` " +14409 area-System.Net System.Net.Http.Tests.HttpRequestHeadersTest.IfNoneMatch_UseAddMethod_AddedValueCanBeRetrievedUsingProperty test failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1302/consoleText ``` System.Net.Http.Tests.HttpRequestHeadersTest.IfNoneMatch_UseAddMethod_AddedValueCanBeRetrievedUsingProperty [FAIL] Assert.Same() Failure Expected: * Actual: * Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\tests\UnitTests\Headers\HttpRequestHeadersTest.cs(455,0): at System.Net.Http.Tests.HttpRequestHeadersTest.IfNoneMatch_UseAddMethod_AddedValueCanBeRetrievedUsingProperty() ``` +14410 area-System.Runtime Support plan for Digit separators in corefx Related to the roslyn issue https://github.com/dotnet/roslyn/issues/216, do you have any plan to support Digit separators in int.Parse, Conver.ToInt32, and other methods? +14412 area-System.Runtime Support plan for Binary literals "Related to the roslyn issue https://github.com/dotnet/roslyn/issues/215, do you have a plan to support Binary literals in `Convert.ToInt32(""0b1011"", 2)`? As for the current corefx specification, `Convert.ToInt32` (and other similar methods) method can convert Hexadecimal string, which starts from `0x`, to integer (or other Numeric types) if `fromBase` is 16. `int.Parse` and `int.TryParse` method can't parse Hexadecimal string. So do you have a plan to support converting Binary literals in `Convert.ToInt32` if `fromBase` is 2?" +14416 area-System.Collections Add HashSet.CreateSetComparer(comparer) "# 2nd API review iteration [TODO] TODO - Fill the new API proposal here please, with summary of the troubles we have found during code review of the 1st API review iteration. # 1st API review iteration [approved] - for context Originally approved in https://github.com/dotnet/corefx/issues/14416#issuecomment-279797190 ## 1. Addition of new Method ```C# namespace System.Collections.Generic { public class HashSet { public static IEqualityComparer> CreateSetComparer( IEqualityComparer comparer); } } ``` This method will return an `IEqualityComparer>` that uses the `IEqualityComparer` passed to it in comparing elements to determine equality of hash-sets. The comparer returned will consider two sets equal iff for each element in either there is an element in the other that `comparer` considers equal to it. Optimised paths may only be taken if they give the same result as this. If `comparer` is null, the method will treat this as if `EqualityComparer.Default` had been passed to it. The comparer will produce a hash code for sets as follows: 1. If the set is `null` the hash code is `0`. 2. Otherwise start with a seed value. For each value that `comparer` considers distinct, exclusive-or `comparer.GetHashCode(element)` with it. (The use of exclusive-or allows this algorithm to be agnostic to element order). ## 2. Obsolescence of Current `CreateSetComparer` Method ```C# namespace System.Collections.Generic { public class HashSet { [System.Obsolete(""This method can produce inconsistent results. Use CreatSetComparer(IEqualityComparer"")] public static IEqualityComparer> CreateSetComparer(); } } ``` The existing `CreateSetComparer` method has a minor design and major implementation issue. The design issue is that it lacks the ability to select the `IEqualityComparer` to use. If this was the only problem it could work as an overload equivalent to `CreateSetComparer(null)` but it also has implementation flaws resulting in a non-commutative `Equals()` and disagreement between `Equals()` and `GetHashCode()`. However fixing it would break some cases that it can (in disagreement with how it is specified) serve to usefully determine set-equality of two sets in respect of their own comparers, if those comparers are the same. See #12560 Since it can't be fixed without considerable breaks, and both the specified behaviour and the other type of comparison it sometimes makes are offered by the new method (with a clear way of indicating which is wanted), this method should be obsoleted. (Fixing it to behave as specified could be considered after it has been obsolete for some time, as an alternative to deleting it)." +14417 area-System.Runtime Environment.GetEnvironmentVariables() should give back DictionaryEntry, not KeyValuePair A recent change regressed Environment.GetEnvironmentVariables(). Its IEnumerable enumerator is supposed to yield ```DictionaryEntry``` items, but it's now yielding ```KeyValuePair```. cc: @JeremyKuhne +14419 area-System.Linq Missing LINQ tests that validate correct number of iterations, delegate invocations, etc. We're missing LINQ tests that validate that the input source enumerables are iterated no more than once, that delegates are invoked the correct number of times, etc. +14423 area-Infrastructure "[infrastructure] ""GetTargetFrameworkProperties"" does not exist in the project." "I have been running into the following issue very frequently over the past week or so: ``` Build FAILED. ""C:\Users\james\Code\git\corefx\src\System.Runtime\tests\System.Runtime.Tests.csproj"" (RebuildAndTest target) (1) -> ""C:\Users\james\Code\git\corefx\src\System.Runtime\pkg\System.Runtime.pkgproj"" (GetTargetFrameworkProperties target) (5) -> C:\Users\james\Code\git\corefx\src\System.Runtime\pkg\System.Runtime.pkgproj : error MSB4057: The target ""GetTargetFrameworkProperties"" does not exist in the project. ""C:\Users\james\Code\git\corefx\src\System.Runtime\tests\System.Runtime.Tests.csproj"" (RebuildAndTest target) (1) -> ""C:\Users\james\Code\git\corefx\src\System.Private.Uri\pkg\System.Private.Uri.pkgproj"" (GetTargetFrameworkProperties target) (6) -> C:\Users\james\Code\git\corefx\src\System.Private.Uri\pkg\System.Private.Uri.pkgproj : error MSB4057: The target ""GetTargetFrameworkProperties"" does not exist in the project. ... ``` Typically, I'll have no trouble running `msbuild /t:RebuildAndTest` on a project, but I will get one of these messages after the console runner finishes. ([example][1]) However, sometimes the build will simply fail (the tests won't even run) and 5 or more of these messages will pop up. The example above was what happened after I tried it under `src\System.Runtime\tests`. I have made a gist that includes both the normal and `/v:detailed` output for the last-mentioned scenario: https://gist.github.com/jamesqo/55beb150ace9a290dde7b18c9f204f91#file-systemruntime-detailedlog (You can find `SystemRuntime-Log`, the normal-verbosity log, at the bottom.) [1]: https://gist.github.com/jamesqo/55beb150ace9a290dde7b18c9f204f91#file-systemlinq-log" +14424 area-System.Runtime Expose Array.Fill and add tests This PR exposes the new `Array.Fill` API and adds tests. Fixes https://github.com/dotnet/corefx/issues/6695 cc: @hughbe, @justinvp (edit: Sorry for all of the CI failures. I have trouble building this locally because of https://github.com/dotnet/corefx/issues/14423, but I'll try to fix these ASAP.) +14425 area-System.IO Make GetEnvironmentVariables more compatible The legacy APIs returned Hashtable and could only iterate as DictionaryEntry. Fixes #14417 As we're going for compatible it seemed more appropriate to return Hashtable than low-level dictionary. +14431 area-System.Runtime Add ArraySegment Enumerator Tests Add tests for ArraySegment Enumerator. See https://github.com/dotnet/corefx/issues/14170 +14432 area-System.Security Seg fault in X509Certificates tests We've been seeing a seg fault happen in the X509Certificates tests with some regular frequency of late, e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/1220/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/1313/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/1311/consoleText I realize it's hard to diagnose without a dump, but we need to track it, regardless. +14435 area-System.Linq Ensure the selector gets run during Count. `Select` does not change the count of an enumerable, so previously we made an optimization where if `Count()` was called we would bypass running the selector altogether and iterate directly through the source. This commit undoes that and makes sure we always run the selector if `onlyIfCheap` is false. Fixes #13910 cc @JonHanna, @stephentoub, @VSadov +14436 area-System.Data SqlConnection.RetrieveStatistics should always return DictionaryEntry ### Summary If the `IDictionary` returned from `SqlConnection.RetrieveStatistics()` is cast to `IEnumerable`, its enumerator will yield `KeyValuePair` items instead of `DictionaryEntry` items, which is a behavior difference from the full framework. This PR addresses the behavior difference by changing `IEnumerable.GetEnumerator` to return a `DictionaryEntry` enumerator to match the behavior of the full framework. ### Details To break the dependency on the non-generic collections, `SqlConnection.RetrieveStatistics()` was changed to return an instance of a `Hashtable`-compatible subclass of `Dictionary` instead of returning a `Hashtable` instance (#7691). However, a subtle behavior difference was missed (see #14417 for a similar issue). - `Dictionary`'s implementation of [`IDictionary.GetEnumerator`](https://github.com/dotnet/coreclr/blob/04d6bd105ade5f6189a15a6dbb59b082613429a1/src/mscorlib/src/System/Collections/Generic/Dictionary.cs#L703-L705) returns a `DictionaryEntry` enumerator, which matches `Hashtable`. Since the return type of `RetrieveStatistics` is `IDictionary`, the default behavior of enumerating the result as-is (without casting away from `IDictionary`) is the same as `Hashtable`. - However, if the result is cast from `IDictionary` to `IEnumerable`, `Dictionary`'s [`IEnumerable.GetEnumerator`](https://github.com/dotnet/coreclr/blob/04d6bd105ade5f6189a15a6dbb59b082613429a1/src/mscorlib/src/System/Collections/Generic/Dictionary.cs#L601-L603) implementation will return a `KeyValuePair` enumerator, which does not match `Hashtable`'s behavior of returning a `DictionaryEntry` enumerator. This PR changes the `Hashtable`-compatible subclass's `IEnumerable.GetEnumerator` implementation to return a `DictionaryEntry` enumerator to match `Hashtable`. Updated tests pass on the full framework, fail before the src changes, and pass after the src changes. Note that this is technically a breaking change from .NET Core 1.0/1.1. However, publicly available [telemetry](https://apisof.net/catalog/System.Data.SqlClient.SqlConnection.RetrieveStatistics()) shows 0% usage of this API, and the default behavior of enumerating the resulting `IDictionary` as-is without casting to `IEnumerable` isn't changing, which makes me think this is a fairly low-risk change that's worth making to be more compatible with the full framework. An alternative fix would be to just re-establish the direct dependency on `System.Collections.NonGeneric` and change this back to returning `Hashtable` for the next version of .NET Core since some of `System.Data.SqlClient`'s dependencies now depend on `System.Collections.NonGeneric` (due to the .NET Standard 2.0 effort), which would allow deleting the private `StatisticsDictionary` subclass. If this is preferred, I can update the PR. cc: @saurabh500, @stephentoub +14437 area-System.Net Test failure: System.Net.Http.Functional.Tests.PostScenarioTest/PostLongerContentLengths_UsesChunkedSemantics(contentLength: 64512) Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.PostScenarioTest/PostLongerContentLengths_UsesChunkedSemantics(contentLength: 64512)` has failed. Assert.Equal() Failure Expected: Byte[] [233, 69, 26, 4, 195, ...] Actual: Byte[] [35, 127, 1, 68, 167, ...] Stack Trace: at System.Net.Http.Functional.Tests.TestHelper.VerifyResponseBody(String responseContent, Byte[] expectedMD5Hash, Boolean chunkedUpload, String requestBody) at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.PostScenarioTest.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161211.02 (Core Tests) Failing configurations: - Centos.71.Amd64 - AnyCPU-Debug - AnyCPU-Release - Debian.82.Amd64 - AnyCPU-Debug - AnyCPU-Release - Fedora.23.Amd64 - AnyCPU-Debug - Ubuntu.1404.Amd64 - AnyCPU-Debug - Ubuntu.1604.Amd64 - AnyCPU-Debug - AnyCPU-Release - Redhat.72.Amd64 - AnyCPU-Release - Suse.132.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161211.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostLongerContentLengths_UsesChunkedSemantics(contentLength:%2064512) +14439 area-System.Linq Lack of validation in CopyTo impls in Expressions The collections returned by several methods within Linq.Expressions (`Expressions` property on blocks, `Parameters` property on lambdas, `Argument` properties of invocations. method calls and dynamic expressions) fail to correctly validate `CopyTo` arguments. At best this leads to the wrong exception being thrown. At worse if the destination array is too large for the copy the copy will be partially done, rather than an atomic succeed-or-fail. +14440 area-System.Linq Validate CopyTo calls on collections with S.L.Expressions. Fixes #14439 +14441 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs to beta-24813-01, beta-24813-02, beta-24813-01, respectively (master) +14442 area-System.IO Resolve ~ in non-windows systems in Path.GetFullPath() "Essentially, this is the problem I'm facing Path.GetFullPath(""~/Documents/Temp""); It searches for the the path ""~/Documents/Temp"" relative to my project folder; but I actually need is the ~/Documents/Temp from the root not from the project path. This is because I don't want to store all uploaded files in a folder underneath my project folder but in another folder (""possible in another drive or a Network Path""). How is it possible to do this because I'm not getting the actual path no matter what I tried. Thanks!" +14443 area-System.Linq Faster iterator-unfriendly System.Linq methods Thanks to [a recent PR](https://github.com/dotnet/corefx/pull/14418), I knew about a curious bipartition in the performance of the iterator-optimised (i.e., relying on `yield` or `Yield`) methods: what performs well in an iterating scenario (e.g., `foreach(var item in YieldMethod()){ }`) might perform bad in a returning one (e.g., `var outputCollection = YieldMethod();`) and vice versa. In that PR, I suggested an improved version of `System.Linq.Intersect`. The new version delivers notably better (around 40% faster under a wide variety of conditions on a not-too-powerful computer) and worse performances for returning (e.g., `var output = collection1.Intersect(collection2);`) and iterating (e.g., `foreach(var item in collection1.Intersect(collection2)){}`) scenarios, respectively. My proposal couldn't go through because of not representing a real improvement (even if all the performance gains would be bigger than the losses, a relevant number of scenarios performing notably worse wouldn't be acceptable). Although modifying the existing `System.Linq.Intersect` isn't reasonable, creating an alternative method performing notably faster when getting the collection (rather than right away iterating through it) sounds fine to me. Do you want to rely on an alternative which performs reasonably well in any case? Use `System.Linq.Intersect`. Are you sure that you want to get the collection (and iterate through it right afterwards or at a later point or even don't iterate through it at all)? Use the notably faster new alternative. Before going ahead with my proposal, I want to highlight the tremendous importance of the `System.Linq` methods, which are being systematically used on virtually any situation. Note that I am not the kind of programmer liking very small code and always relying on this kind of approaches; I don't care about writing much bigger codes if they perform better or are clearer or easily modifiable. But I do use `System.Linq` methods on a regular basis; at least, some of them. Getting notably-better-performing versions of these methods would have a notable impact on my coding approach. Actually, I wasn't using `Intersect` too much lately precisely because of having confirmed its not-that-good-performance under many different conditions. What I am proposing is a new `class` (e.g., `System.LinqFast`) including returning-scenario-optimised versions for all the `System.Linq` methods. Although I have only analysed the `Intersect` and `Except` (virtually identical to `Intersect`) codes, can safely assume that equivalent ideas are applicable to the other methods because of the observed noticeable performance differences between the iterating/returning scenarios. That is, either the current methods are adequately optimised for iteration purposes (+ likeliness of a different version performing notably better for the returning-scenario) or they might be further optimised on this front (also a positive output for this proposal). As an example of the kind of modifications which are likely to define each of the aforementioned scenarios, take a look at the `Intersect` codes in my aforementioned PR: Original code (by bearing in mind that `comparer` is always `null` and [the definition of the Set internal class](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Set.cs)): ```C# private static IEnumerable IntersectIterator(IEnumerable first, IEnumerable second, IEqualityComparer comparer) { Set set = new Set(comparer); foreach (TSource element in second) { set.Add(element); } foreach (TSource element in first) { if (set.Remove(element)) { yield return element; } } } ``` Notably-faster-for-returning-scenarios alternative: ```C# private static IEnumerable IntersectIteratorNew(IEnumerable first, IEnumerable second) { IEnumerable first2 = first.Distinct(); IEnumerable second2 = second.Distinct(); foreach (TSource element in first2) { if (second2.Contains(element)) { yield return element; } } } ``` There are also other approaches which are appreciably faster than the current code for returning scenarios. For example: ```C# private static IEnumerable IntersectIteratorNew2(IEnumerable first, IEnumerable second) { List done = new List(); foreach (TSource element in first) { if (done.Contains(element)) continue; foreach (TSource element2 in second) { if (done.Contains(element2)) continue; if ((element == null && element2 == null) || element2.Equals(element)) { done.Add(element); yield return element; } } } } ``` The underlying idea to these codes is that the `yield` statement (when being called inside an iterator) penalises the reliance on external (iterating) methods (e.g., `Contains`). This fact makes a-priori-worse-performing alternatives (e.g., adding/removing items to/from a third collection, rather than loops + calling the efficient `Contains` method) ideal under iterating conditions, but certainly improvable for other scenarios. As far as this proposal implies quite relevant modifications and I don't know what are the .NET team/community positions on this front, I will better not analyse other methods for the time being. In case of seeing some positive feedback (and certainly before writing the definitive proposal), I wouldn't mind to analyse other `System.Linq` methods (by bearing in mind that `Except` is very similar to `Intersect` and, consequently, all the aforementioned ideas apply to it too). In case of deciding to go ahead, I would like to take care of the implementation myself. +14444 area-System.Linq Reduce time taken to test StackGuard and move to innerloop. We have a test that verifies that `Expression` compilation is protected against stack overflow in the case of compiling deep expression trees, but forcing a case that would cause such a problem by necessity requires a large tree that takes a long time to compile, so the test is outerloop only. Forcing the compilation to happen on the smallest possible stack reduces the size of tree that would risk a stack overflow, and so can test the same functionality in less than a second. Do this, and move the test to innerloop. +14445 area-System.Net System.Net.Http 4.3.0 oob conflicts with framework assembly with target net462 "Hi, These are the steps to reproduce the issue : - Create a classic desktop library project in 462 - Add a nuget package ""Microsoft.AspNetCore.Authentication"" version ""1.1.0"" => This package targets both .NETFramework4.5.1 and .NETStandard1.3 with a dependency on NETStandard.Library 1.6.1 and has a framework assembly dependency on System.Net.Http for 4.5.1 ``` ``` => NETStandard.Library 1.6.1 has a dependency on System.Net.Http 4.3.0 for target NETStandard1.3 - In Class1.cs, add public static HttpClient client = new HttpClient(); // should bind to version 4.1.1.0 - nuget pack the csproj (using nuget latest version 3.5.0 rtm or 3.6.0) - Create a core console app project targerting net462 - Reference the newly created package - In Program.cs, add Console.WriteLine(ClassLibrary2.Class1.client.GetType().FullName); - Run - An exception FileNotFoundException is thrown about ""System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" From what I understand, all binaries should be using System.Net.Http 4.3.0 with a binding redirect from framework version. project.lock.json shows that System.Net.Http is resolved from frameworkAssemblies ``` "".NETFramework,Version=v4.6.2"": { ""ClassLibrary2/1.0.0"": { ""type"": ""package"", ""dependencies"": { ""Microsoft.AspNetCore.Authentication"": ""1.1.0"" }, ""compile"": { ""lib/net462/ClassLibrary2.dll"": {} }, ""runtime"": { ""lib/net462/ClassLibrary2.dll"": {} } }, ""Microsoft.AspNetCore.Authentication/1.1.0"": { ""type"": ""package"", ""dependencies"": { ""Microsoft.AspNetCore.DataProtection"": ""1.1.0"", ""Microsoft.AspNetCore.Http"": ""1.1.0"", ""Microsoft.AspNetCore.Http.Extensions"": ""1.1.0"", ""Microsoft.Extensions.Logging.Abstractions"": ""1.1.0"", ""Microsoft.Extensions.Options"": ""1.1.0"", ""Microsoft.Extensions.WebEncoders"": ""1.1.0"", ""NETStandard.Library"": ""1.6.1"" }, ""frameworkAssemblies"": [ ""System.Net.Http"" ], ``` If I create another classic desktop 462 project, add System.Net.Http 4.3.0 and reference this project from the core console app. Then, project.lock.json is the same, but System.Net.Http 4.1.1.0 is copied to bin directory and a binding redirect is correctly generated as expected. ``` ``` If you remove this last reference from project.json, rebuilding the project leave the binding redirect and assembly. Clean do not empty the bin directory and you must empty it manually to have the issue again. This leds to situation where you think it works while it will not when built from scratch. ``` Microsoft .NET Core Shared Framework Host Version : 1.1.0 Build : 928f77c4bc3f49d892459992fb6e1d5542cb5e86 ``` and ``` ""sdk"": { ""version"": ""1.0.0-preview2-1-003177"" } ``` I don't understand why the framework assembly is chosen over the oob version. Sample repo : https://github.com/cortex93/TestNetHttpRef " +14447 area-System.Runtime Move EditorBrowsableAttribute to Private.CorLib We have multiple cases where we need to hide methods in Private.CorLib from IntelliSense: - `Deconstruct` method on `KeyValuePair` and `DictionaryEntry` - #13746 - We can work around by shipping the method as Extension method - `Span` methods `Equals` and `GetHashCode` - https://github.com/dotnet/coreclr/pull/8583#issuecomment-266245506 - No workaround There is a risk that we won't be able to move the Attribute to mscorlib on Desktop (similar to fallout from moving `ExtensionAttribute` down - see https://github.com/dotnet/corefx/issues/13746#issuecomment-265829858) Desktop options: 1. Deal with the impact of the type being moved in Desktop (compat fallout). 2. Don't attribute the methods on Desktop p i.e. they will be visible to IntelliSense on Desktop. - Question for @weshaggard: The attribute matters only for ref. What if the attribute is there in .NET Standard and in Desktop ref, but left out in Desktop implementation? Is that an option? 3. Don't port these methods to Desktop - i.e. they can't be part of .NET Standard. 4. Provide the methods as extension methods on Desktop - i.e. they can't be part of .NET Standard. +14448 area-System.Xml Fix line ending bug in XSLT test Fixes https://github.com/dotnet/corefx/issues/14148. The test failed because of whitespace differences between two strings on some platforms. cc: @danmosemsft @stephentoub +14451 area-System.Net The SslStream implementation will not match f*.com and foo.com. This decision was taken together with the Windows Crypto team and should match the CAPI behavior. Fixes #3444 +14452 area-Infrastructure Build each configuration of corefx tools "Vertical build breaks "".builds"" file traversal. Explicitly build CoreFx tools projects. This will resume building the configurations which can be used statically during the build to determine configuration groups rather than using the dynamic groups. The work to actually transition to using the static configurations is up next.." +14453 area-Serialization Add tests for XmlSerializationGeneratedCode and CodeIdentifier. Add test coverage for CodeIdentifier methods in existing test. Add basic API test coverage for XmlSerializationGeneratedCode , which is for internal usage only. #10581 #10577 @shmao @zhenlan @mconnew +14454 area-Serialization System.Xml.EncodingStreamWrapper calls Flush on a read stream when being disposed EncodingStreamWrapper has two constructors, one for wrapping a stream for reading, and one for wrapping a stream for writing. When constructor a wrapper using the read constructor, the field _isReading is set to true (it's set to false when writing). In the Dispose(bool disposing) method, Flush is called on the wrapped stream regardless of whether the stream is only used for reading or not. If the wrapped stream doesn't implement Flush (and throws) because it's a read-only stream, this causes the Dispose() call to also throw. EncodingStreamWrapper should only call Flush if used to wrap a stream for writing. +14455 area-Infrastructure Local packages are installed in bin.localpkg The locally built packages are still installed in bin.localpkg, this is due to compression size issues in CI. +14456 area-Infrastructure build.sh requires logic to determine platform to filter on FilterToOSGroup build.sh requires FilterToOSGroup to be passed in for CI legs. `if [ $__IsCentos -eq 1 ] ; then ... elif [ $__IsOSX -eq 1 ] ; then ` +14457 area-Infrastructure build.sh requires ServerGC flag to be turned on in CI for Release builds "The following is stilll required for release builds. `export CORECLR_SERVER_GC=""$__ServerGC""`" +14458 area-Infrastructure Update Buildtools to 1.0.27-prerelease-01112-02 Fixes https://github.com/dotnet/buildtools/issues/1092 and https://github.com/dotnet/core-eng/issues/236 +14460 area-Infrastructure Start running tests against the built runtime folder. @joperezr @karajas This is an initial version of tests.targets that runs tests using corerun.exe and the live-built runtime. I also converted a handful of tests around the repo to make sure things were working with a few different random projects. +14462 area-System.Xml Fix XmlWriter Outerloop test failures Fixes https://github.com/dotnet/corefx/issues/6331 and https://github.com/dotnet/corefx/issues/1491 These tests were failing due to: **1)** Newline differences on Unix and Windows, **2)** Decimal point differences in some cultures cc: @danmosemsft @stephentoub @AlexGhiondea +14464 area-System.Linq Fill some gaps in S.L.Expression testing A few small bits that won't fall under a focus on any other section. Some array-expressions tests, mostly on aspects of non-szarrays. Test `TypeAs` expressions between nullables. Test fault and finally after many such blocks (catch regressions in a non-optimised path hit in this case). +14466 area-System.Collections Test failure: System.Collections.Generic.Tests.BadlyBehavingComparableComparersTests/Comparer_EqualsShouldBeOverriddenAndWorkForDifferentInstances Opened on behalf of @Jiayili1 The test `System.Collections.Generic.Tests.BadlyBehavingComparableComparersTests/Comparer_EqualsShouldBeOverriddenAndWorkForDifferentInstances` has failed. System.TypeInitializationException : The type initializer for 'System.RuntimeDetection' threw an exception.\r ---- System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.Collections.Generic.Tests.ComparersGenericTests`1.Comparer_EqualsShouldBeOverriddenAndWorkForDifferentInstances() in D:\A\_work\38\s\corefx\src\System.Collections\tests\Generic\Comparers\Comparer.Generic.Tests.cs:line 34 ----- Inner Stack Trace ----- at System.Runtime.InteropServices.RuntimeInformation.get_FrameworkDescription() at System.RuntimeDetection..cctor() in D:\A\_work\38\s\corefx\src\Common\tests\System\RuntimeDetection.cs:line 12 Build : Master - 20161213.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161213.02/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Generic.Tests.BadlyBehavingComparableComparersTests~2FComparer_EqualsShouldBeOverriddenAndWorkForDifferentInstances +14467 area-Infrastructure System.Runtime.InteropServices.RuntimeInformationTests.CheckArchitectureTests/VerifyArchitecture missing Binding redirect Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.RuntimeInformationTests.CheckArchitectureTests/VerifyArchitecture` has failed. System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture() at System.Runtime.InteropServices.RuntimeInformationTests.CheckArchitectureTests.VerifyArchitecture() in D:\A\_work\38\s\corefx\src\System.Runtime.InteropServices.RuntimeInformation\tests\CheckArchitectureTests.cs:line 15 Build : Master - 20161213.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161213.02/workItem/System.Runtime.InteropServices.RuntimeInformation.Tests/analysis/xunit/System.Runtime.InteropServices.RuntimeInformationTests.CheckArchitectureTests~2FVerifyArchitecture +14468 area-System.Xml Test failure: System.Xml.Linq.Tests.RegressionTests/CreatingNewXElementsPassingNullReaderAndOrNullXNameShouldThrow failed with 'System.MissingMethodException' Opened on behalf of @Jiayili1 The test `System.Xml.Linq.Tests.RegressionTests/CreatingNewXElementsPassingNullReaderAndOrNullXNameShouldThrow` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentNullException)\r Actual: typeof(System.MissingMethodException): Method not found: 'System.Xml.Linq.XNode System.Xml.Linq.XNode.ReadFrom(System.Xml.XmlReader)'. Stack Trace: at System.Xml.Linq.Tests.RegressionTests.<>c.b__9_1() Build : Master - 20161213.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161213.02/workItem/System.Xml.Linq.Misc.Tests/analysis/xunit/System.Xml.Linq.Tests.RegressionTests~2FCreatingNewXElementsPassingNullReaderAndOrNullXNameShouldThrow +14469 area-Infrastructure Update corefx build configurations for Fedora 24 and 25 With Fedora 23 EOL on Dec 20, 2016 the corefx build configurations should be updated to support source builds on Fedora 24 and 25. release/1.1.0: - seems to have build configuration for Fedora 24 but it is not mentioned in README.md - needs a build configuration for Fedora 25 - build & test status in README.md should include Fedora 24 and 25 instead of 23. release/1.0.0: - needs build configurations for Fedora 24 and 25 - build & test status in README.md should include Fedora 24 and 25 instead of 23. +14471 area-Infrastructure Update CoreClr to servicing-24813-02 (release/1.1.0) +14472 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs to beta-24814-02, beta-24814-01, beta-24814-00, respectively (master) +14473 area-System.Linq Revert System.Linq assembly version bump? #13726 added a new System.Linq API so the minor assembly version was incremented, but it sounds like the version change needs to be reverted according to @joperezr's comment: https://github.com/dotnet/corefx/pull/13828#discussion_r90931863 cc: @ericstj, @JonHanna, @stephentoub +14474 area-Infrastructure Use Win32 API lists from buildtools Remove the local copies of Win32 API lists, and use the lists from buildtools instead. Fixes issue #13738. +14475 area-Infrastructure Update targetgroup configurations Add version-less target groups for netstandard, netcoreapp, and netfx. This will imply the map to the latest versions. Also cleaned out a couple targets which aren't needed. cc @ericstj +14476 area-Infrastructure Clean-up batch restoring of packages. This cleans out a lot of the project.json batch restoring, validation, and generation from the build.proj. Also enables restoring of packages for individual projects again. We well eventually move all projects that need restoring under external so we can keep them isolated from the rest of the build. cc @ericstj @mellinoe @joperezr @chcosta @karajas This gets build.cmd call down to only a couple minutes now on my machine. +14478 area-System.Security Fix CryptoStream multithreading test issue Fixes test threading issue https://github.com/dotnet/corefx/issues/13966 The underlying problem is a race condition with the call to WriteAsync and the call to Dispose on the same instance (and same time) of CryptoStream. I can repro the issue with a single call to WriteAsync in the test. The fix is to add lock() statements to the two areas that are in the race condition so they both don't modify the same state. The Dispose calls IdentityTransform.TransformFinalBlock class (which is a test class) and can cause `len` to be -5 in the error case: ```c# private sealed class IdentityTransform : ICryptoTransform { ... private readonly bool _canTransformMultipleBlocks; private long _writePos, _readPos; private MemoryStream _stream; public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount) { _stream.Position = _writePos; _stream.Write(inputBuffer, inputOffset, inputCount); _stream.Position = _readPos; >>-5 long len = _stream.Length - _stream.Position; byte[] outputBuffer = new byte[len]; _stream.Read(outputBuffer, 0, outputBuffer.Length); _stream = new MemoryStream(); _writePos = 0; _readPos = 0; return outputBuffer; } ```` +14480 area-System.Net ManagedWebSocket HTTP scenarios implementation Tracking the implementation of the following items: - [ ] ClientWebSocketOptions.UseDefaultCredentials - [ ] ClientWebSocketOptions.Credentials - [ ] ClientWebSocketOptions.Proxy - [ ] ClientWebSocketOptions._sendBufferSize +14481 area-System.Net Adding tracking issue for ManagedWebSocket missing features. Regarding #14480 +14482 area-Infrastructure Make Test projects compile against the Targeting pack. (1/3 of the work) Fixes #14351 cc: @mellinoe @weshaggard @ericstj +14483 area-Infrastructure Remove test feed override of ToolPackageSource in checked-in build definitions Removing this environment variable allows the build to use the default feed defined in the Fetch-Tools.ps1 official build script, `https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json`, rather than overriding that to point at my test feed. (The package it's looking for is [EmbedIndex](https://dotnet.myget.org/feed/dotnet-buildtools/package/nuget/EmbedIndex).) I made this change manually to the old shared publish def and the corefx 1.1.0 def. @chcosta Does this look ok? /cc @ericstj +14484 area-System.Memory Span: Enable IndexOverflow test when FastSpan.GetItem is implemented Related: issue #13681 There is no public ref T GetItem(int index) method implementation in Fast Span. It is unclear if we want this method at all or if the indexer is sufficient. Therefore, the overflow test has been disabled until the above issue has been resolved and we either get the missing implementation or adjust the test. +14485 area-System.IO Question: How to use ZipArchive in aspnet core I try to generate zip file on the fly though ZipArchive in an aspnet core program. In various places, ZipArchive access the base stream's Position property, which throw NotImplementedException in the aspnet core's FrameResponseStream. For now, I have to wrap the FrameResponseStream in yet another wrap and implement the Position property. Is there a better way to handle that? Thank you. I think it is easy to trace these position inside the ZipArchive instead of depend on external base stream's Position property +14486 area-System.Memory Span: DangerousCreate should avoid argument validation For Span/ReadOnlySpan DangerousCreate method, should we remove the following test cases to increase performance: * SpanTests - DangerousCreateNullObject * SpanTests - DangerousCreateBadLength * ReadOnlySpanTests - DangerousCreateNullObject * ReadOnlySpanTests - DangerousCreateBadLength It was suggested that the Fast and Slow Span implementations should not do the check/throw on null object or negative lengths to speed up creation of the instance of Span/ReadOnlySpan. That is, these checks should be removed: ```C# public static ReadOnlySpan DangerousCreate(object obj, ref T objectData, int length) { if (obj == null) ThrowHelper.ThrowArgumentNullException(ExceptionArgument.obj); if (length < 0) ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.length); ``` Should they be removed? +14487 area-System.Linq Tests maintaining compat in when Linq Contains uses ICollection.Contains cc @stephentoub +14488 area-System.Diagnostics ExcludeFromCodeCoverageAttribute cannot be applied to assemblies We have added `ExcludeFromCodeCoverageAttribute` back into our public API's as part of the .NET Standard 2.0 work. We've been using a local version of this attribute in many of our test assemblies in order to control what shows up in our code coverage reports. The public version we are now exposing does not allow the attribute to be applied to assemblies, so our test assemblies cannot use the public version of the attribute. Test assemblies can continue using the internal version of the attribute, but then we get ambiguity warnings from the compiler, which we need to suppress. We could potentially just allow the .NET Core version of the attribute to be applied to assemblies, even though the .NET Framework version doesn't allow it. @weshaggard +14489 area-Infrastructure Use static configurations for building a vertical Disables the dynamic determination of groups and uses the static configuration files produced by src\Tools. /cc @weshaggard @ericstj +14491 area-Infrastructure Temporarily disable package publishing This is currently breaking official builds in the branch because we don't produce the correct set of packages from the build right now. This will (hopefully) get the official build clean and we can rever this once we have packages being built again. +14492 area-Infrastructure Vertical build from source cleanup tasks Post PR (https://github.com/dotnet/corefx/pull/14171) cleanup tasks - [x] Enable building System.Private.Xml.Linq - [x] Enable building System.Runtime.Serialization.Formatters - [x] Enable building System.Threading.Overlapped - [x] Eliminate duplication between src\ref.builds, src\src.builds and GatherProjectsForVerticalBuild in buildvertical.targets - [x] eliminate duplication in buildvertical.props - [x] Fix Property / Item names and general code cleanup in buildvertical.targets - [x] Output binaries to spec location - [x] Properly derive BuildConfiguration (currently hard-coded to `netcoreapp1.1-$(OS)` - [ ] System.runtime.InteropServices.RuntimeInformation, investigate the GeneratePlatformNotSupportedAssembly Condition which I've temporarily disabled - [x] Enable building System.Runtime.CompilerServices.Unsafe.ilproj - [x] Move TargetsOS properties into Configurations.props? - [x] Cleanup all the duplicated definitions for AnnotateProjectsWithConfiguration (currently in buildvertical.targets, dir.targets, dir.traversal.targets) - [ ] Programmatically determine References for Unix - [x] Ignored references to System.Threading.Overlapped and System.Runtime.Serialization.Formatters in Microsoft.Private.CoreFx.NetCoreApp package, re-enable after building those references again. - [x] ref\System.Runtime.Extensions configurations are currently set to netstandard1.7 because netcoreapp1.1 was failing to build, fix the build and add netcoreapp1.1 to the configurations. +14494 area-Infrastructure Updating CoreClr dependencies to servicing-24814-01 +14495 area-Meta After upgrading NetStandard.Library from 1.6.0 to 1.6.1, getting FileLoadException. "After upgrading my library's dependency on NetStandard.Library from 1.6.0 to 1.61, my unit tests fail: System.IO.FileLoadException: Could not load file or assembly 'System.Net.Sockets, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. My library's json: { ""supports"": {}, ""dependencies"": { ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""NETStandard.Library"": ""1.6.1"", ""Portable.BouncyCastle"": ""1.8.1.2"", ""StyleCop.Analyzers"": ""1.0.0"", ""System.Threading.Tasks.Dataflow"": ""4.7.0"" }, ""frameworks"": { ""netstandard1.3"": {} } } My unit test's json: { ""dependencies"": {}, ""frameworks"": { "".NETFramework,Version=v4.6.1"": {} }, ""runtimes"": { ""win"": {}, ""win-x86"": {}, ""win-x64"": {}, ""win-arm"": {} } } The full project is at https://github.com/convertersystems/opc-ua-client. thanks, Andrew ps: Projects that use this library from a package work just fine. It's just the solution's unit tests with a problem. " +14496 area-System.Text Time to revisit need to register code pages provider? "I'm working on localization of dotnet/cli itself and I hit an issue where csc on .NET Core on Windows can give me garbled text if I'm on a non English machine with corresponding satellite assemblies present. The root cause is https://github.com/dotnet/corefx/issues/10054. I'm going to have to ensure that msbuild, cli, and roslyn all call Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) before outputting anything to the console in non-English locales. I'm concerned that this pain point for .NET Core on Windows is not worth the benefit of making the code page data ""optional"". I say optional in quotes because the shared framework carries System.Text.Encoding.CodePages.dll and if I publish a standalone .NET Core app with our tools and the usual steps, System.Text.Encoding.CodePages is copied in to my app folder. Is anyone actually getting the benefit of not having System.Text.Encoding.CodePages? Given the high likelihood of System.Text.Encoding.CodePages.dll being present in practice, could System.Console light-up on it somehow? i.e. If it's there next to System.Console.dll, then use it regardless of whether register has been called whenever the console code page is not UTF8 and text outside ASCII range is written? @terrajobst @tarekgh @karelz FYI @piotrpMSFT @cdmihai @jaredpar " +14501 area-Infrastructure Update projects to netcoreapp2.0 / netstandard2.0 / net461 We need to update our projects to build against these new monikers and package as the same. Since netstandard2.0 is supported by net461 most desktop builds should be targeting this version rather than net463. +14502 area-System.Collections Add IsEmpty property to ArraySegment ArraySegment can be created as empty by using `default(ArraySegment)` or using `ArraySegment.Empty` property. If we try execute any operation on such segment then it will throw invalid operation exception. To protect from calling such operations I suggest to add `IsEmpty` property to `ArraySegment`. Also most operation do nothing if segment has zero length. And user code can use `IsEmpty` property to improve performance for empty segment. As additional, structures `Span` and `ReadOnlySpan` have `IsEmpty` properties already. ```cs namespace System { public struct ArraySegment { public bool IsEmpty => Count == 0; } } ``` +14503 area-Infrastructure Packages threw exception '[Error 267] The directory name is invalid' & '[Error 2] The system cannot find the file specified' "No results generated. For win8 & win7: [Error 267] The directory name is invalid' ``` 2016-12-14 03:11:58,546: WARNING: proc(37): run_and_log_output: Could not find C:\dotnetbuild\work\6e004e14-ed1e-4b54-97ec-08d5c930039a\Work\7beb0736-c746-4508-9354-7277b7be03a8\Unzip\RunTests.cmd on disk. Execution may fail. 2016-12-14 03:11:58,551: ERROR: logs(86): _log_uncaught_exception: Unhandled error: [Error 2] The system cannot find the file specified [' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 91, in \n sys.exit(main())\n', ' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 87, in main\n return command_main(_main, [\'script=\'], args)\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\cmdline.py"", line 47, in command_main\n return main_method(settings, optlist, args)\n', ' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 44, in _main\n env=None\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\proc.py"", line 46, in run_and_log_output\n shell=False)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 710, in __init__\n errread, errwrite)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 958, in _execute_child\n startupinfo)\n'] 2016-12-14 03:11:58,555: INFO: azure_storage(199): _upload: Uploading single blob: '4e0759f44fa245fc84ec7861ab2fe091.log' 2016-12-14 03:11:59,009: INFO: saferequests(90): request_with_retry: Response complete with status code '201' ``` For win10: [Error 2] The system cannot find the file specified ``` 2016-12-14 03:18:59,398: WARNING: proc(37): run_and_log_output: Could not find C:\dotnetbuild\work\d15e87c1-82b1-40b9-a105-2832e5527c53\Work\53280074-1a02-42e9-896a-59d31484f86e\Unzip\RunTests.cmd on disk. Execution may fail. 2016-12-14 03:18:59,398: ERROR: logs(86): _log_uncaught_exception: Unhandled error: [Error 2] The system cannot find the file specified [' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 91, in \n sys.exit(main())\n', ' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 87, in main\n return command_main(_main, [\'script=\'], args)\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\cmdline.py"", line 47, in command_main\n return main_method(settings, optlist, args)\n', ' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 44, in _main\n env=None\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\proc.py"", line 46, in run_and_log_output\n shell=False)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 710, in __init__\n errread, errwrite)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 958, in _execute_child\n startupinfo)\n'] 2016-12-14 03:18:59,398: INFO: azure_storage(199): _upload: Uploading single blob: 'f7e71ee5ee4f4089bfeffc987e84636d.log' ``` Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/Packages Build : Master - 20161214.01 (Core Tests) Failing configurations: Win81, Win7 & Win10" +14504 area-System.Net Test failure: System.Net.Security.Tests.ServerAllowNoEncryptionTest/ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption Opened on behalf of @jiangzeng The test `System.Net.Security.Tests.ServerAllowNoEncryptionTest/ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption` has failed. System.IO.IOException : Authentication failed because the remote party has closed the transport stream. Stack Trace: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAllowNoEncryptionTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161214.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ServerAllowNoEncryptionTest~2FServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption +14505 area-System.Threading Test failure: System.Threading.Tasks.Dataflow.Tests.ActionBlockTests/TestFaulting Opened on behalf of @jiangzeng The test `System.Threading.Tasks.Dataflow.Tests.ActionBlockTests/TestFaulting` has failed. Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: at System.Threading.Tasks.Dataflow.Tests.ActionBlockTests.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161214.01 (Core Tests) Failing configurations: - Suse.132.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/System.Threading.Tasks.Dataflow.Tests/analysis/xunit/System.Threading.Tasks.Dataflow.Tests.ActionBlockTests~2FTestFaulting +14506 area-System.Diagnostics Fixed error in example code +14507 area-System.Memory Span: Create Span from IntPtr (ReadOnly)Span\ is designed so that it can point to native memory. So far, native memory is typically represented by a SafeHandle (e.g., SafeMemoryMappedViewHandle) or an IntPtr (e.g., as returned by Marshal.AllocHGlobal). It will probably a common use case to create a (ReadOnly)Span\ from these. *Proposal:* Add a constructor overload that accepts an IntPtr and a length: ```diff public struct Span { + public Span(IntPtr pointer, int length) { ... } public struct ReadOnlySpan { + public ReadOnlySpan(IntPtr pointer, int length) { ... } ``` *Example Usage 1:* ```csharp int length = 4096; SafeHandle handle = VirtualAlloc(IntPtr.Zero, new IntPtr(length), 0x3000, 0x04); bool addedRef = false; try { handle.DangerousAddRef(ref addedRef); MyMethod(new Span(handle.DangerousGetHandle(), length)); } finally { if (addedRef) { handle.DangerousRelease(); } } ``` *Example Usage 2:* ```csharp int length = 512; IntPtr hglobal = Marshal.AllocHGlobal(length); try { MyMethod(new Span(hglobal, length)); } finally { Marshal.FreeHGlobal(hglobal); } ``` There is currently a constructor overload that accepts a void* and a length, and an IntPtr can of course easily be converted to a void* using the IntPtr.ToPointer method. However, this requires `true` and is the only instance in the API surface where an `unsafe` code block is required. It would be nice if spans could be used without `unsafe` code blocks. IMHO requiring `unsafe` when working with native memory doesn't really make things safer since there are already methods like Marshal.ReadInt32 that can be used to read or write arbitrary native memory through an IntPtr. +14508 area-System.Linq Update S.L.E to compile when NO_FEATURE_STATIC_DELEGATE and FEATURE_MAKE_RUN_METHODS are defined +14509 area-System.Linq Remove enum → underlying unwrapping in expression instruction ctors Incorrect (should be `type.GetNonNullableType().GetTypeInfo().IsEnum ? Enum.GetUnderlyingType(type.GetNonNullableType()) …` to work consistently), unreachable in most cases, and has no effect on the subsequent calls `GetTypeCode()` anyway (as shown by it not being an error when it hits that incorrect point). @bartdesmet I'm generally keeping away from the `Instruction` classes while you do your templating, but I think this case might help, as there's a bit less difference between different instruction types after it, but if it's conflicting with you I can hold back on it. +14510 area-System.Runtime EntryPointNotFoundException on .NET Core on Linux "I want to prepare a wrapper library for a 3rd party library on linux I've created 2 simple functions, and from another C++ program they execute without a problem also .. I've tried to use system library (libc) and it works without issues: [System.Runtime.InteropServices.DllImport(""libc"")] public static extern int puts(string str); puts(""some test string""); // <- this works however, when I try to use my 2 simple function from my wrapper library, I'm getting EntryPointNotFoundException exception here is the code: [System.Runtime.InteropServices.DllImport(""mywrapper"")] public static extern void TestFunc1(); [System.Runtime.InteropServices.DllImport(""mywrapper"")] public static extern string TestFunc2(); Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point named 'TestFunc1' in DLL 'mywrapper'. the library is found, and from C++ these two functions just work also ... a DLLImport puts(const char *) works in .NET Core only my library has this problem any ideas ? " +14511 area-System.Linq Linq Cast does not call cast overloads Consider the following classes: ```cs public class A { public int Va { get; set; } public static implicit operator B(A a) { return new B { Vb = (long)a.Va }; } } public class B { public long Vb { get; set; } } ``` Class `A` has an overload to convert `A` into `B`. Now imagine we have a collection of `A`: ```cs var list = new List() { new A { Va = 1 }, new A { Va = 2 } }; ``` If we wanted to cast this list to `B`, one would assume to use `list.Cast().ToList()`. However, we are met with `InvalidCastException: Unable to cast object of type 'A' to type 'B'.` It seems that the source of this error is [from here](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Cast.cs#L51) where `CastIterator` iterates over each item as `object`. By changing this to `dynamic`, `.Cast()` works as expected with overloaded operators. Is this an acceptable PR to make, or is there a reason behind using `object` where `dynamic` would appear to provide more functionality? +14512 area-Infrastructure [dev/eng] Update build-test.cmd/sh so that it starts building and executing tests As part of this work, we should also update `netci.groovy` script so that we add a step of running build-tests.cmd/sh after running build.cmd +14513 area-Infrastructure Clean-up the batch restore and project.json generation stuff We removed the batch restore and project.json generation targets from build.proj (https://github.com/dotnet/corefx/pull/14476) but we have some more clean-up to do. In particular we need to clean-up config.json. We also have a bunch of stuff in BuildTools in this area that we should go in and clean out. cc @chchosta @karajas +14514 area-Infrastructure Updating CoreClr dependencies to servicing-24814-02 +14517 area-Infrastructure Updating CoreClr dependencies to servicing-24814-03 +14519 area-System.Net Make System.Net tests reliable We have lots of test failures. It is not efficient to track them in individual issues. This one tracks them all, until we are near-clean. +14520 area-Infrastructure Enable OOB / netstandard-based packages in dev/eng We've disabled all the package builds. We need to re-enable them once we decide on the workflow for building their contents. +14521 area-System.Collections Dictionary.GetValueOrDefault With dictionaries of class-types it is often desirable and expected to return null for a non-existent key. Close https://github.com/dotnet/corefx/issues/3482 +14523 area-Infrastructure Updating CoreClr dependencies to servicing-24814-03 Fixes #14517's merge conflict. +14524 area-Infrastructure Clean up tests.targets, bring it more in line with old tests.targets This fixes a couple of issues with tests.targets. I had initially cut some stuff out of the old version, and brought some of it back here. Namely, this stuff wasn't working but now is: * Test semaphore file * testresults.xml in the right folder * Supplemental test data being copied properly Stuff that still needs to be hooked up: * Code Coverage * Performance Tests @joperezr +14525 area-Infrastructure Update resolve contract cc @chcosta @ericstj This removes the contract project references and instead resolves from the targeting pack. You can look at the individual commits to see the exact changes. +14526 area-Serialization [1.0.x] Porting serialization fix to release branch and configuring it to build the two libs that we need to service for UWP @gkhanna79, @ericstj @yizhang82 , PTAL +14527 area-System.Reflection Reflection should check mscorlib for types In NetFX `Type.GetType()` would find types that weren't fully qualified in mscorlib. Now that we're going to ship the mscorlib facade we should probably mimic that behavior. See the following discussion: https://github.com/dotnet/corefx/pull/14498#discussion_r92474847 @weshaggard, @ericstj +14528 area-Infrastructure Facades need packaged. `System.dll` and others aren't currently part of the packages. @weshaggard, @ericstj +14529 area-System.Runtime Port System.Runtime.Caching to .NET Core In attempting to convert some libs to .NET Core for use in where .NET Core is growing (e.g., AWS Lambdas), I'm blocked on System.Runtime.Caching components or an equivalent. +14530 area-System.Threading System.Threading.Overlapped OverlappedTests.PropertyTest1 failed in CI Example failure log: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/1435/consoleFull#-162473832179fe3b83-f408-404c-b9e7-9207d232e5fc ``` 15:39:37 OverlappedTests.PropertyTest1 [FAIL] 15:39:37 Assert.Equal() Failure 15:39:37 Finished: System.Threading.AccessControl.Tests 15:39:37 15:39:37 Expected: 2 15:39:37 Actual: 0 15:39:37 Stack Trace: 15:39:37 === TEST EXECUTION SUMMARY === 15:39:37 D:\j\workspace\windows_nt_re---37265eab\src\System.Threading.Overlapped\tests\OverlappedTests.cs(40,0): at OverlappedTests.PropertyTest1() ``` +14531 area-System.IO Move IdentityHelper & tests to common Had originally created this code for IsolatedStorage, needed to use it in Configuration as well. Just factoring it into common. +14532 area-Infrastructure Avoid unintended test runs and errors * Skip test runs where doesn`t have test cases for certain target, and generate errors with exit code 127. +14533 area-System.Memory Span: Fix array variance checks in slow Span Related to PR #14262 where the test got removed. - The test should be renamed to something like CtorVariantArrayType since the type is not wrong. - The test should confirm that the operation is succeeding, i.e. a ReadOnlySpan instance gets created successfully rather than checking that the method fails and throws. https://github.com/dotnet/corefx/pull/14262#discussion_r92521521 +14534 area-Infrastructure Make Test projects compile against the Targeting pack. (3/3 of the work) Fixes #14350 cc: @weshaggard @ericstj @mellinoe @karajas +14535 area-Infrastructure Update Buildtools to 1.0.27-prerelease-01115-01 /cc @MattGal +14536 area-System.Security Test failure: System.Security.Cryptography.X509Certificates.Tests.ChainTests/VerifyWithRevocation Opened on behalf of @jiangzeng The test `System.Security.Cryptography.X509Certificates.Tests.ChainTests/VerifyWithRevocation` has failed. Offline Chain Built Validly Expected: True Actual: False Stack Trace: at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyWithRevocation() Build : Master - 20161214.02 (Core Tests) Failing configurations: - Fedora.23.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.02/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.ChainTests~2FVerifyWithRevocation +14537 area-System.Linq Add XML docs to some Linq iterators This PR adds XML comment documentation to many of the manual (class-based) iterators we have in Linq. I have not touched the `IGrouping` / `IOrderedEnumerable` related stuff because I haven't used that API too much yet. @JonHanna @stephentoub PTAL +14538 area-Infrastructure [linux/arm32] Add Xenial (Ubuntu 16.04) rootfs support for cross build We need to keep supported ROOTFS in sync across CoreCLR, CoreFX and Core-Setup. CoreCLR supports Ubuntu 16.04 (https://github.com/dotnet/coreclr/blob/master/cross/build-rootfs.sh#L7) and so does Core-Setup (https://github.com/dotnet/core-setup/blob/master/cross/build-rootfs.sh#L7). However, coreFX does not (https://github.com/dotnet/corefx/blob/master/cross/build-rootfs.sh#L7). CC @janvorli @kouvel +14540 area-Meta callback from native linux library (.so) of .NET core managed function - problem "I want to callback a method in C# code (.NET Core) from C++ code in my .so library on Linux when I execute a callback from this function, all works fine: ``` extern ""C"" void TestCallback() { fnSimpleCallback(); // fnSimpleCallback is saved callback function pointer } ``` however, when I try to execute a callback from a thread (std::thread), it either crashes or does nothing here is the code: ``` extern ""C"" void StartTestThread() { std::thread thread(call_from_thread); thread.detach(); } ``` ``` void call_from_thread() { std::cout << ""sleeping for 5 sec ... "" << std::flush ; usleep(5000000); std::cout << "" ... after sleep trying to callback from new thread .. "" << (void *)fnCallback << std::endl; if (nullptr != fnSimpleCallback) fnSimpleCallback(); // does nothing } ``` ====================== here is the C# code: ``` static IntPtr p_fnSimpleCallback; static System.Runtime.InteropServices.GCHandle gchSimpleCallback; public static void Main(string[] args) { p_fnSimpleCallback = Marshal.GetFunctionPointerForDelegate(fnSimpleCallback); gchSimpleCallback = GCHandle.Alloc(p_fnSimpleCallback, GCHandleType.Pinned); WrapperAPILib.SetSimpleCallback( p_fnSimpleCallback ); WrapperAPILib.StartTestThread(); //Console.WriteLine(""Sleeping in Main ...""); //System.Threading.Thread.Sleep( 6000); //WrapperAPILib.StartTestThread(); Console.ReadKey(); } ``` as you can notice, I've already tried using GCHandle to keep reference to my delegate alive when I uncomment subsequent Sleep(6000). the first StartTestThread() correctly executes my callback, but after the Sleep(6000) passes, the second StartTestThread() does nothing " +14541 area-System.Linq The documentation for Enumerable.Intersect is incorrect about the order of iteration "[The MSDN documentation for `Enumerable.Intersect`](https://msdn.microsoft.com/en-us/library/bb460136(v=vs.110).aspx) says: > When the object returned by this method is enumerated, Intersect\ enumerates *first*, collecting all distinct elements of that sequence. It then enumerates *second*, marking those elements that occur in both sequences. Finally, the marked elements are yielded in the order in which they were collected. Consider this program: ```c# using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { foreach (int i in First().Intersect(Second())) { Console.WriteLine($""Got {i}.""); } } static IEnumerable First() { for (int i = 1; i <= 2; i++) { Console.WriteLine($""Yielding {i} from First.""); yield return i; } } static IEnumerable Second() { for (int i = 1; i <= 2; i++) { Console.WriteLine($""Yielding {i} from Second.""); yield return i; } } } ``` Given the above description, I would expect the output to be: ``` Yielding 1 from First. Yielding 2 from First. Yielding 1 from Second. Yielding 2 from Second. Got 1. Got 2. ``` But the actual output (on both .Net Framework and .Net Core) is: ``` Yielding 1 from Second. Yielding 2 from Second. Yielding 1 from First. Got 1. Yielding 2 from First. Got 2. ``` I believe this is an error in documentation: it should not promise in what order are `first` and `second` enumerated, only in what order are the items yielded from the resulting sequence. For example: > When the object returned by this method is enumerated, Intersect\ yields distinct elements occurring in both sequences in the order in which they appear in *first*." +14542 area-System.Net Merge duplicate code in WinHttpCertificateHelper.cs with code used in System.Net.Security Merge duplicate code that builds/validates the trusted chain and verifies DNS name matches certificate name: ```c# // TODO: Issue #2165. Merge with similar code used in System.Net.Security move to Common/src//System/Net. public static void BuildChain( X509Certificate2 certificate, string hostName, bool checkCertificateRevocationList, out X509Chain chain, out SslPolicyErrors sslPolicyErrors) { chain = null; sslPolicyErrors = SslPolicyErrors.None; // Build the chain. chain = new X509Chain(); chain.ChainPolicy.RevocationMode = checkCertificateRevocationList ? X509RevocationMode.Online : X509RevocationMode.NoCheck; chain.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot; if (!chain.Build(certificate)) { sslPolicyErrors |= SslPolicyErrors.RemoteCertificateChainErrors; } // Verify the hostName matches the certificate. unsafe { var cppStruct = new Interop.Crypt32.CERT_CHAIN_POLICY_PARA(); cppStruct.cbSize = (uint)Marshal.SizeOf(); cppStruct.dwFlags = 0; var eppStruct = new Interop.Crypt32.SSL_EXTRA_CERT_CHAIN_POLICY_PARA(); eppStruct.cbSize = (uint)Marshal.SizeOf(); eppStruct.dwAuthType = Interop.Crypt32.AuthType.AUTHTYPE_CLIENT; cppStruct.pvExtraPolicyPara = &eppStruct; fixed (char* namePtr = hostName) { eppStruct.pwszServerName = namePtr; cppStruct.dwFlags = Interop.Crypt32.CertChainPolicyIgnoreFlags.CERT_CHAIN_POLICY_IGNORE_ALL & ~Interop.Crypt32.CertChainPolicyIgnoreFlags.CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG; var status = new Interop.Crypt32.CERT_CHAIN_POLICY_STATUS(); status.cbSize = (uint)Marshal.SizeOf(); if (Interop.Crypt32.CertVerifyCertificateChainPolicy( (IntPtr)Interop.Crypt32.CertChainPolicy.CERT_CHAIN_POLICY_SSL, chain.SafeHandle, ref cppStruct, ref status)) { if (status.dwError == Interop.Crypt32.CertChainPolicyErrors.CERT_E_CN_NO_MATCH) { sslPolicyErrors |= SslPolicyErrors.RemoteCertificateNameMismatch; } } else { // Failure checking the policy. This is a rare error. We will assume the name check failed. // TODO: Issue #2165. Log this error or perhaps throw an exception instead. sslPolicyErrors |= SslPolicyErrors.RemoteCertificateNameMismatch; } } } } ``` +14543 area-Infrastructure [dev/eng] Change the way we calculate `IsTestProject` Currently, the way we set the value of `IsTestProject` is by checking if the FileName ends with `Tests.csproj`. This doesn't really apply to all of our test projects, which has forced us to manually set it in all of the test projects where this condition isn't true. We should instead change that logic so that it is set if `/tests/` is part of the path to the project, and this way be consistent with ref and src projects. +14545 area-Infrastructure Add TestNugetRuntimeId to OuterLoop OSX runs "The most recent OuterLoop OSX runs have been failing on CI: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_osx_debug/. Looks like the issue is ""Outerloop OSX is using ` [23:21:21.05] Using RuntimeIdentifier = 'osx.10.11-x64' ` which tries to restore for the wrong rid."" Relevant thread: https://github.com/dotnet/corefx/pull/14462 cc: @karajas @weshaggard @joperezr @danmosemsft " +14546 area-Infrastructure Update binplacing paths and default BuildConfiguration. "* These now match the spec, at least for Windows. * Native shims are now binplaced to a location that corresponds to the spec'd location. We will need to make sure this location stays consistent between the two build systems. * We are still using ""netcoreapp1.1"" as the default TargetGroup. Eventually this should just be ""netcoreapp"", but we need to modify all of the projct files to make that change. @weshaggard @joperezr @ericstj " +14550 area-Infrastructure Initial set of work for building external dependencies This adds an external folder with some basic infrastructure to template project.json files by TFM and RID so that we can only restore the set that we actually need. Updates our configuration generation to add RuntimeOS and ArchGroup so we can use those to build up a NugetRuntimeIdentifier for using to restore the builds. cc @ericstj @mellinoe @joperezr @chcosta +14551 area-Serialization Support ISerializable in ReflectionOnly mode. Enable DataContractSerializer and DataContractJsonSerializer to support ISerializable types in ReflectionOnly mode. Fix #13071 +14552 area-Infrastructure Updating CoreClr dependencies to servicing-24816-01 +14553 area-System.Net Test failure: System.Net.Security.Tests failed with 'Xunit.Sdk.TrueException' Opened on behalf of @jiangzeng The test `System.Net.Security.Tests.SslStreamStreamToStreamTest_Async/SslStream_StreamToStream_Write_ReadByte_Success` has failed. Handshake completed. Expected: True Actual: False Stack Trace: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() Build : Master - 20161215.04 (Core Tests) Failing configurations: - OSX.1011.Amd64 - AnyCPU-Release Failed tests; System.Net.Security.Tests.SslStreamStreamToStreamTest_Async\SslStream_StreamToStream_Write_ReadByte_Success System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd\SslStream_StreamToStream_LargeWrites_Sync_Success System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync\SslStream_StreamToStream_Successive_ClientWrite_WithZeroBytes_Success Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161215.04/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamStreamToStreamTest_Async~2FSslStream_StreamToStream_Write_ReadByte_Success +14557 area-System.IO [WIP] Add async File.ReadAll*, File.AppendAll* and File.WriteAll Fixes #11220 Not currently done: Versioning of new API. Should this be `#netstardard1.7`? +14558 area-Infrastructure packageIndex update for ubuntu-16.04-arm packageIndex update for ubuntu-16.04-arm This patch relate to https://github.com/dotnet/core-setup/issues/725 Signed-off-by: chunseok lee +14559 area-Meta [Release/1.1.0] Bump the version of the packages +14560 area-System.Net NegotiateStream on UWP (WCF Windows authentication over NetTcp) "Trying to communicate with a WCF service from a UWP app using `NetTcpBinding` and Windows authentication will throw a `System.PlatformNotSupportedException`. The binding is defined like this: ```c# NetTcpBinding binding = new NetTcpBinding(); binding.Security.Mode = SecurityMode.Transport; binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; ``` The exception will be thrown when trying to invoke any method on the endpoint's interface: ```c# var ep = new EndpointAddress(""net.tcp://myhost:8733/aaa/MyService""); var factory = new ChannelFactory(binding, ep); var service = factory.CreateChannel(); var result = service.AnyMethod(); // <-- this will throw ``` Thanks /Thomas" +14561 area-System.Linq Faster first element of LINQ methods I have deleted these contents (and some of my initial comments) because of being partially faulty and misleading regarding the performance improvements which might be achieved by relying on the proposed methodology. In any case, you can find below two comments including a descriptive enough summary and code (+ conclusions), respectively. +14562 area-Infrastructure Updating CoreClr dependencies to servicing-24816-02 +14563 area-System.IO Failures in TextWriter and StreamWriter to handle null inputs to WriteLineAsync If null is passed to `TextWriter.WriteLineAsync(char[])` it will produce no effect. By analogy to the non-async method it should write a newline as if `TextWriter.WriteLineAsync()` had been called. If null is passed to `StreamWriter.WriteLineAsync(string)` it will throw a `NullReferenceException` or fail an assertion in Debug. Likewise it should behave as if `StreamWriter.WriteLine()` had been called. +14564 area-System.IO Handle null inputs to WriteLineAsync correctly. Fixes #14563 +14565 area-Infrastructure Using Win32Exception with out of box netstandard1.3 project causes FileNotFoundException Am I doing something incorrect? I was not sure if this is the same problem as the other problems I've had with netstandard. Just by luck, every single one of my forays into netstandard have failed with this same type of issue. I have great confidence that it's just me and these will all be fixed by VS2017's RTM. * Create a new .NET Standard library targeting `netstandard1.3`. * Create a static method `Class1.DoWork()` that throws `new Win32Exception()`. * Add a .NET Framework console app targeting `net462` * In Program.cs, call `Class1.DoWork()` and add a reference to the library project. * Run the console app and get: > System.IO.FileNotFoundException occurred HResult=0x80070002 Message=Could not load file or assembly 'Microsoft.Win32.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Source=NetstandardLibrary StackTrace: at NetstandardLibrary.Class1.Works() in C:\Users\Joseph\documents\visual studio 2017\Projects\NetstandardOnDesktop\NetstandardLibrary\Class1.cs:line 10 at DesktopConsoleApp.Program.Main(String[] args) in C:\Users\Joseph\documents\visual studio 2017\Projects\NetstandardOnDesktop\DesktopConsoleApp\Program.cs:line 9 Is this a binding redirect issue or something? I hope this isn't the way things are intended to be? As long as this type of error exists, can you please maintain a netstandard troubleshooting document with step-by-step guidance for the workaround? I would hope that scenarios like this would be covered by integration tests. [Sample solution.](https://github.com/jnm2/misc-codesamples/raw/master/Bug%20reports/.NET/NetStandard%20Win32Exception%20causes%20file%20not%20found.zip) +14566 area-System.Runtime Raise AssemblyLoadContext.Unloading before AppDomain.ProcessExit "Currently, the Unloading event just subscribes to the ProcessExit event, so callbacks would be raised in subscription order. Instead, all callbacks for the Unloading event should be invoked before callbacks for the ProcessExit event. The Unloading event on a non-default assembly load context could in the future be raised earlier when the assembly load context is unloaded, so it would make sense to expect all of these events to occur before ProcessExit. ```c# Action OnUnloading = i => Console.WriteLine(""Unloading: {0}"", i); Action OnProcessExit = i => Console.WriteLine(""ProcessExit: {0}"", i); AppDomain.CurrentDomain.ProcessExit += (sender, e) => OnProcessExit(0); System.Runtime.Loader.AssemblyLoadContext.Default.Unloading += acl => OnUnloading(0); AppDomain.CurrentDomain.ProcessExit += (sender, e) => OnProcessExit(1); System.Runtime.Loader.AssemblyLoadContext.Default.Unloading += acl => OnUnloading(1); ``` Current output: ``` ProcessExit: 0 Unloading: 0 Unloading: 1 ProcessExit: 1 ``` Expected output: ``` Unloading: 0 Unloading: 1 ProcessExit: 0 ProcessExit: 1 ```" +14567 area-System.Runtime PInvoke for empty function takes over 300 usec - is it normal ? "extern ""C"" void TestEmptyFunc() { } [DllImport(""wrapperlib.so"", EntryPoint = ""TestEmptyFunc"", ExactSpelling = true)] public static extern void TestEmptyFunc(); I've measured the time it takes to execute this empty function from .NET Core, and it turns out it takes some considerable time - over 300 usec Before Empty func 18:23:22.320623 After Empty func 18:23:22.320944 is it normal ? " +14570 area-System.Security Consider integration with third party incremental hash algorithms Incremental/stateful hashing was refactored into its own class called [IncrementalHash](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/IncrementalHash.cs) according to @bartonjs in issue #9442 I think this is a good change, however, the refactoring left out the possibility of integration with third-party stateful (incremental) hash algorithms. The IncrementalHash class is a simple wrapper for the real implementation [HashProvider](https://github.com/dotnet/corefx/blob/master/src/Common/src/Internal/Cryptography/HashProvider.cs), but users can't implement HashProvider as it is internal, and the IncrementalHash wrapper is not extensible as well. In good design, I'd want hash algorithms to be exchangeable in an API, which is possible with HashAlgorithm, but not with IncrementalHash or HashProvider. Arguably, most people could take in [HashAlgorithmName](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HashAlgorithmName.cs) and give it to IncrementalHash.Create(), but that does not support third party hash algorithm implementations. I'd propose the API is refactored once more (while IncrementalHash is not widely used), to support integration of third party stateful/incremental hash algorithms. +14571 area-System.Reflection SignatureTypeEncoder missing API for encoding custom modifiers on void* +14572 area-System.Runtime Introduce System.IString interface and implement it on System.String "### Proposal Introduce an interface called ```IString``` in the System namespace. The purpose of the interface is to identify string-like objects and provide a minimal set of methods over them. The native ```System.String``` type should implement this new interface. ### Motivation The motivation for this proposal is to allow library authors to implement efficient alternative representations of 'string-like' objects. An ```IString```, therefore, represents the essence of a string: An *immutable*, *finite* sequence of Unicode characters that supports enumeration and random access. ### Rationale In code which does heavy text processing, strings are invariably the most frequently allocated type. Many strings are short-lived, but few are ""novel"". By ""novel"", I mean that most strings are realized by transforming existing data - they don't spring into existence out of thin air. Some common examples: 1. A substring of an existing string. 2. A concatenation of two or more existing strings or characters. 3. The result of de-serializing a stream via an encoding. In each of these cases (and many others), since public APIs tend to be built around the ```System.String``` primitive, early realization of the transformations is unavoidable. Both callers and implementors are forced to use the primitive representation, even when it would be inefficient. e.g. Trimming off the last character of a string by creating a substring with length = Length - 1. By using ```IString``` instead of ```string``` in both the public APIs and internal implementations, library authors have an opportunity to reduce these hard-to-avoid allocations. Indeed, if we had something like this from the beginning in Roslyn, I feel we would have used it extensively. ### Details The proposed definition of IString is: ```C# namespace System { using System.Collections.Generic; interface IString : IEnumerable { char this[int index] { get; } int Length { get; } } } ``` Note that this definition is very similar to ```System.Collections.Generic.IReadOnlyList``` except: 1. The length property is named ```Length``` instead of ```Count```, and 2. It's easier to type (fewer chars) and discover (lives in the System namespace) ### Examples By way of an example for an alternative representation of a string-like thing using ```System.IString```, here is a canonical ""SubString"" implementation: ```C# using System; using System.Collections; using System.Collections.Generic; sealed class SubString : IString { private readonly IString _original; private readonly int _start; private readonly int _length; public SubString(IString original, int start, int length) { // TODO: Decide whether to throw on invalid start/length or just clamp the values. _original = original; _start = start; _length = length; } public char this[int index] { get { if (index < 0 || index >= _length) { throw new IndexOutOfRangeException(nameof(index)); } return _original[_start + index]; } } public int Length => _length; public IEnumerator GetEnumerator() { // TODO: If _start is zero, then use the underlying enumerator. for (int i = 0; i < _length; i++) { yield return _original[i + _start]; } } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } ``` Here is a simpler example of an ```IString``` representing a single ```char```: ```C# using System; using System.Collections; using System.Collections.Generic; sealed class CharString : IString { private readonly char _ch; public CharString(char ch) { _ch = ch; } public char this[int index] { get { if (index != 0) throw new IndexOutOfRangeException(); return _ch; } } public int Length => 1; public IEnumerator GetEnumerator() { yield return _ch; } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } ``` And, finally, here's a wrapper over a char array: ```C# using System; using System.Collections; using System.Collections.Generic; sealed class CharArrayWrapper : IString { private readonly char[] _array; public CharArrayWrapper(char[] array) { _array = array; } public char this[int index] => _array[index]; public int Length => _array.Length; public IEnumerator GetEnumerator() => (IEnumerator)_array.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => _array.GetEnumerator(); } ``` ### Comparison with ```IReadOnlyList``` There is an existing proposal, #14336, to add ```IReadOnlyList``` to the set of interfaces implemented by ```System.String```. While that would be a sufficient alternative, the big downside is that it's harder to type ```System.Collections.Generic.IReadOnlyList```. For code that consumes such strings, one could mitigate that with a using alias, but it doesn't help the public API surface area. Consumers probably already have a using statement for the System.Collections.Generic namespace, but it's still hard to discover, and not immediately obvious to the uninitiated, that ```IReadOnlyList``` is the _'I behave like a string'_ marker. I believe it's only a coincidence that ```IReadOnlyList``` has the exact shape required to be that marker. We'll Ignore, for now, the different ways of spelling 'Length'. ```IReadOnlyList``` has an advantage, though, because ```char[]``` already implements it. i.e. a ```char[]``` would also be a valid 'string-like' implementation without modification. That would _not_ be the case with ```System.IString```, hence the need for the CharArrayWrapper shown above. If we're willing to entertain _both_ proposals, then we could redefine ```System.IString``` as: ```C# namespace System { using System.Collections.Generic; interface IString : IReadOnlyList { } } ``` and accept the (mis-)spelling of 'Length' ;-) ### Limitations It's hard to come up with a concatenation implementation that performs well in all cases: Do you chain to the left, to the right, or try to keep the 'tree' balanced? However, for specific cases where you're building ""compound"" strings by concatenation, sometimes a special-purpose object will do. e.g. It's possible to create a custom ```IString``` implementation to represent a fully-qualified type name from its parts while avoiding allocating the final string. In some cases, it _is_ better to do eager string realization. For example, if you're going to do a lot of random access operations on an ```IString``` that is actually a complex, compound implementation (e.g. a concatenation of a bunch of substrings of a UTF8-encoded text buffer). Advanced library implementations would detect when to switch to a more efficient implementation (e.g. rebalance a tree, or decode the entire UTF8 buffer). For other cases, clients can always use the ```.ToString()``` escape hatch. Certainly, we assume that library authors will strive to make most situations no worse than using ```System.String``` directly. ### Future If ```System.IString``` is adopted, there are plenty of places in the Framework where we could/should provide new overloads for methods that currently take ```System.String```. e.g. Serialization, formatting, encoding, path building/parsing). Of course, none of the performance benefits will be realized if a consumer of an ```IString```-returning API immediately turns around and calls ```.ToString()``` on the result (perhaps in order to call another API which accepts only ```System.String```). Without broad library support, this proposal is likely to falter. We have to start somewhere, though, and, if we're willing to entertain a new interface on ```string```, then I humbly suggest that it has a name that is easy to discover and type." +14573 area-Infrastructure Enable building System.Threading.Overlapped and System.Runtime.Serialization.Formatters Disabled with https://github.com/dotnet/corefx/pull/14489/files because they aren't building with configurations changes. Need to re-enable these and make sure they are part of building Microsoft.Private.CoreFx.NETCoreApp.pkgproj +14574 area-System.Memory Span: Enable back the fast span tests after GC correctness work is complete Related to PR #14262 where the tests for fast span were disabled because the GC correctness work has not been done for fast span yet. https://github.com/dotnet/corefx/pull/14262#issuecomment-267164311 Waiting for issue [#5851](https://github.com/dotnet/coreclr/issues/5851) to be resolved, specifically, JIT - Correctness – proper GC reporting of the special byref field, to re-enable the tests for fast span. +14575 area-Infrastructure Configurations code cleanup Some minor code cleanup. Not moving any files, just cleaning up some of the code. /cc @weshaggard @ericstj +14576 area-System.IO System.IO.FileSystem.Tests fails on my Dev box "```XML ``` After the test ran (and failed): ``` C:\WINDOWS\system32>\sysint\handle.exe C:\\Users\\crispop\\AppData\\Local\\Temp\\FileInfo_Open_fm_fa_fs_af1cc3bz.wbf\\FileShareOpen_43 Nthandle v4.1 - Handle viewer Copyright (C) 1997-2016 Mark Russinovich Sysinternals - www.sysinternals.com No matching handles found. ``` Flighted Windows Build: 14994" +14577 area-System.Security System.Security.Cryptography.Cng.Tests and System.Security.Cryptography.X509Certificates failing on my Dev box "Common theme: The buffer supplied to a function was too small ```xml ``` @bartonjs, @steveharter PTAL Flighted Windows build: 14994" +14579 area-System.Linq [RFC] [No merge] Remove a field from most Select iterators **Description:** Instead of running the selector and storing the result in a field during `MoveNext`, we can just run the selector during `Current` and remove that field. **Breaking changes:** `MoveNext` by itself will no longer run the selector. If someone calls `Current` twice, the selector will be evaluated twice. Repro: ```cs int selectorRuns = 0; var it = new[] { 0xff }.Select(i => selectorRuns++); using (var en = it.GetEnumerator()) { en.MoveNext(); // Before ran the selector, now doesn't int unused = en.Current; // Before didn't run the selector, now does unused = en.Current; // Now runs the selector again // Before, `selectorRuns` would be 1. Now, it's 2. } ``` **Why they're acceptable:** Enumerables are used mainly in two contexts: `foreach` and Linq. `foreach` handles this correctly by caching `Current` into a local at the beginning of the loop, so it can only be evaluated once. Linq handles things correctly and does not run `Current` more than once. Therefore, this change should break only fringe cases where 1) someone manually calls `GetEnumerator` on an enumerable and invokes `Current` more than once per `MoveNext` (a bug in their code) and 2) `e.Select` with an impure selector is passed to that function. **Performance results:** Not posted yet. I am wondering if maintainers think this is an acceptable change. I have marked this [No merge] temporarily because this is going to degrade perf in a few places where we check for `Iterator` for optimizations; [here](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Select.cs#L25) is one of them. This can be easily worked around by using interfaces. Also, I need to add more comprehensive tests for these changes. @JonHanna @VSadov @stephentoub PTAL +14580 area-Infrastructure Add Configurations for reference libraries Some of the reference libraries require configurations (System.Runtime and System.Runtime.Extensions, for example). Add configurations for those libraries and remove builds files from ref library projects. +14581 area-Infrastructure [dev/eng] CI is not catching all compilation failures There's two projects that are failing to build on Ubuntu (at least, probably all Linux's although I didn't check), but they aren't getting caught by CI for some reason. https://ci.dot.net/job/dotnet_corefx/job/dev_eng/job/ubuntu14.04_debug_prtest/144/consoleText > System/Net/NetworkInformation/UnixIPInterfaceProperties.cs(7,14): error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) [/mnt/j/workspace/dotnet_corefx/dev_eng/ubuntu14.04_debug_prtest/src/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj] > System/IO/FileSystemWatcher.Linux.cs(860,26): error CS0246: The type or namespace name 'List<>' could not be found (are you missing a using directive or an assembly reference?) [/mnt/j/workspace/dotnet_corefx/dev_eng/ubuntu14.04_debug_prtest/src/System.IO.FileSystem.Watcher/src/System.IO.FileSystem.Watcher.csproj] I can fix the compilation errors, but I'm not sure why CI isn't catching this in general. @weshaggard @chcosta @joperezr +14582 area-Infrastructure Add BuildConfigurations for test projects We need to convert all the test builds files to BuildConfigurations. @joperezr please share what you have for @mellinoe +14583 area-Infrastructure Fix BuildConfigurations in all projects For any source projects that were targeting netstandard1.7 and are part of netstandard their build configuration should be turned into netcoreapp. We should change all the build configurations to be version-less so netcoreapp or netstandard instead of netcoreapp1.1 or netstandard2.0. We should clean-up the conditions in the projects that are no longer applicable and make them match the current configurations. +14584 area-Infrastructure Clean-up all projects of dead properties Similar to what we did for the test projects we cleaned up a bunch of dead properties (i.e. Configuration, NugetTargetFramework, etc) we should clean-up the rest of the projects under ref and src similarly. We should also clean-up things like TargetingPackReference now which aren't used. +14587 area-Infrastructure netstandard.dll facade needs to be build and added to the flat Corefx.NETCoreApp package We are currently building it as part under layout\shims.proj but we should move it under the source tree and build it and get it bin-placed for the packaging. +14588 area-Infrastructure Clean-up binplacing targets We need to remove binplacing.targets and merge a more complete bin-placing logic somewhere into the build tools targets (perhaps FrameworkTargeting.targets). We will likely need to have a build task to produce the set of directories to binplace to. I've got a start of some of that work at https://github.com/weshaggard/corefx/tree/BinPlacingTask. +14589 area-Infrastructure Update CI and Official build definitions to handle new build configurations "We need to update our CI and official builds to use the new ""BuildConfiguration"" and ""RuntimeOS"" properties instead of the existing properties they currently use. " +14590 area-Infrastructure Update CI and official builds to understand new testing infrastructure Today our official builds build and run tests on separate machines and use nuget packages to exchange between the machines. We need to change or update the exchange currency for our new setup. Likely need to start sharing the targeting pack and runtime output directories with our test builds. +14591 area-Infrastructure Merge dev-eng branch to master Once all our dev-eng tasks are done we need to merge the changes back to master. +14592 area-Infrastructure Add support of UAP build configuration We need to add support for UAP with our new engineering system. This includes: - [x] Enable the vertical build - [x] Create the UAP flat package - [x] Enable UAP testing (In progress) +14593 area-Infrastructure Add intellisense files into NETCoreApp package When we collapse the packages into a flat one we need to include the intellisense files. +14594 area-Infrastructure Enable symbol packages for the CoreFx.NetCoreApp.Private package +14595 area-Infrastructure Crossgen binaries in the flat NETCoreApp package +14596 area-Serialization Fix XmlSchemaTest in ReflectionOnly mode. Enable serializing objects of XmlSchemaObject type in ReflectionOnly mode. Fix #11918 +14597 area-Meta Fix test failures on Windows OneCoreUAP This PR fixes all test failures that I encountered while running the inner-loop tests on Windows OneCoreUAP SKU. +14598 area-Infrastructure Update build tools Since I merged the previous PR to get the test build fix, I created this one for @dagood , to pick up the fix for corefx auto-update PRs: dotnet/buildtools#1265 +14600 area-Infrastructure The type 'Assembly' exists in both 'System.Reflection' and 'System.Runtime' "I try to use System.Json in .net core and it cause that error This is my project.json ```JSON { ""name"":""TTTT"", ""version"": ""1.0.0-*"", ""dependencies"": {}, ""resource"": [ ""*.json"" ], ""resourceExclude"": [ ""project.json"", ""project.lock.json"" ], ""frameworks"": { ""netcoreapp1.1"": { ""imports"": ""dnxcore50"", ""dependencies"": { ""System.Json"":""4.4.0-beta-24721-02"", ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.1.0"" }, ""Newtonsoft.Json"": ""9.0.1"", ""AWSSDK.Lambda"":""3.3.*"", ""Amazon.Lambda.Core"": ""1.0.0*"", ""Amazon.Lambda.Serialization.Json"": ""1.0.0"", ""Amazon.Lambda.Tools"": { ""type"": ""build"", ""version"": ""1.0.0-preview1"" } }, ""tools"": { ""Amazon.Lambda.Tools"": ""1.0.0-preview1"" } } } } ```" +14601 area-System.Runtime UnauthorizedAccessException type incompatible between netstandard1.4 and netcore50 "I created a **netstandard1.4** project which generates a nuget package. There is a piece of code in this project: ```cs string baseDir = """"; try { // this will throw an UnauthorizedAccessException on the pi baseDir = AppContext.BaseDirectory; } catch (UnauthorizedAccessException) { baseDir = Directory.GetCurrentDirectory(); } ``` When I install this package in a UWP (**netcore50**) project and (in my case) debug it on a Raspberry Pi, the catch statement is never called. When I put a `try...catch...` in the UWP project itself, it does catch the error. The only explanation I can think of is that the `UnauthorizedAccessException` during compile time in a netstandard project is not compatible with the runtime one used for UWP. Relevant packages used: - System.Runtime 4.3.0 Am I correct, or am I doing something totally wrong?" +14602 area-System.Reflection Support System.Reflection.Emit tests on the full .NET Framework "- Netfx supports `AssemblyBuilderAccess.RunAndSave` and `AssemblyBuilderAccess.Run` and `AssemblyBuilderAccess.ReflectionOnly` - Netfx supports multiple modules - Netfx sets the name of a module - Netfx assemblies end with "", culture=neutral, version=0.0.0.0"" Tests pass running `msbuild /T:BuildAndTest /P:TestTFM=net46` Fixes #13253" +14603 area-System.Reflection Support System.Reflection.Emit.ILGeneration tests on the full .NET Framework - Coreclr fixed some bugs around IntPtr/UIntPtr values causing corrupt binary blobs - Coreclr fixed Enum.GetEnumName to work with float and double enums. This is not related to RefEmit, though Tests pass with `msbuild /T:BuildAndTest /P:TestTFM=net46` Fixes #13251 +14604 area-System.Reflection Support System.Reflection.Emit.ILGeneration tests on the full .NET Framework - Coreclr doesn't do security checks when emitting the body of a dynamic method. This menas it doesn't throw a `FieldAccessException`, as the full .NET framework does Fixes #13252 +14606 area-System.Reflection GetFields in declaration order If you search the internet how to do this, you will find the advice to sort by MetadataToken (e.g.: http://stackoverflow.com/questions/8067493/if-getfields-doesnt-guarantee-order-how-does-layoutkind-sequential-work) Is this the proper way to do this? If so, perhaps it can be included in the documentation. Does this need LayoutKind.Sequential to work? +14608 area-Infrastructure Run a detached docker container which receives exec commands Docker now supports `docker exec` which will run a new command inside a running container. This means that we can do this... ``` docker run -d [image name] [container name] sleep infinity docker exec [container name] command 1 docker exec [container name] command 2 docker stop [container name] ``` This is much preferable over the current method which has us creating images to save container state and then running those images as a new container with a new command; rinse, wash, repeat. I'll play around with this while setting up official builds in the dev/eng branch and if there are no issues (it's possible some variants of Linux don't support 'sleep' and will require some other infinitely running command), then we'll merge it back into master when we converge the rest of the dev/eng work. /cc @weshaggard @ericstj @MattGal @markwilkie @ellismg as an FYI, but I'm planning to merge this without review so that I can continue to bring up official build support for dev/eng next week. +14609 area-Infrastructure Updating CoreClr dependencies to servicing-24818-01 +14611 area-System.Security Added additional WellKnownSidType enumeration members. Documentation copied and adapted from https://msdn.microsoft.com/en-us/library/aa379650(v=vs.140).aspx +14612 area-System.Net Http pipelining I am trying to use HTTP pipeline (like this: [https://en.wikipedia.org/wiki/HTTP_pipelining ](https://en.wikipedia.org/wiki/HTTP_pipelining) ) in my .NET Core app. Could you tell me how to do it or if it is even possible ? +14613 area-Infrastructure Updating CoreClr dependencies to servicing-24818-02 +14614 area-System.Net CurlHandler.MaxConnectionsPerServer unsupported on Centos 7 ### Steps to reproduce run the following statements: ``` var client = new System.Net.Http.HttpClientHandler(); client.MaxConnectionsPerServer = 8; // any value >= 1 ``` ### Expected behavior no exceptions. ### Actual behavior ``` Unhandled Exception: System.PlatformNotSupportedException: Unknown option at System.Net.Http.CurlHandler.set_MaxConnectionsPerServer(Int32 value) at System.Net.Http.HttpClientHandler.set_MaxConnectionsPerServer(Int32 value) at ConsoleApplication.Program.Main(String[] args) ``` ### Environment data `dotnet --info` output: ``` .NET Command Line Tools (1.0.0-preview2-1-003177) Product Information: Version: 1.0.0-preview2-1-003177 Commit SHA-1 hash: a2df9c2576 Runtime Environment: OS Name: centos OS Version: 7 OS Platform: Linux RID: centos.7-x64 ``` ### Comments it appears to only affect Centos. it works fine on Ubuntu. +14615 area-System.Data Failed SqlConnection with Pooling drags down entire .NET Core MVC App When Pooling is enabled on a SqlConnection, and the connection fails (bad password, bad username, database doesn't exist) it will crash the entire .NET Core MVC app running. For instance, the connection string: `Password=mybadpassword;User Id=api_web_admn;Data Source=127.0.0.1,1433;Initial Catalog=MyDatabase;Integrated Security=False;Min Pool Size=1;Max Pool Size=200;Pooling=true;` produces: ``` Unhandled Exception: System.Data.SqlClient.SqlException: Login failed for user 'api_web_admn'. at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.PoolCreateRequest(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() ``` and causes the .NET Core runtime to exit the thread. Removing Pooling, or Pooling=false, it simply throws an exception and you can handle it. As it stands now, you can't mitigate and handle a failed connection in .NET Core MVC. +14616 area-Infrastructure Use netcoreapp and netstandard for targetgroups Use netcoreapp and netstandard in place of netcoreapp1.1 and netstandard1.7 for src / ref projects. /cc @weshaggard @ericstj @mellinoe +14617 area-Infrastructure Updating CoreClr dependencies to servicing-24819-01 +14618 area-Infrastructure Fix rootfs script: attempt to correct broken dependencies Try to correct a system with broken dependencies when building root file system: `apt-get -f` Script in CoreCLR already has a same instruction. +14619 area-System.Runtime removed duplicate test case +14621 area-System.Collections Supporting C# 7 deconstruction of certain types C# 7 added support for deconstruction of user-defined types via a Deconstruct(out ...) method. It would make sense to be able to use this feature with tuple-like types such as KeyValuePair and DictionaryEntry. Close https://github.com/dotnet/corefx/issues/13746 +14622 area-Infrastructure Updating CoreClr dependencies to servicing-24819-02 +14623 area-System.Runtime Test StringComparer.FromComparison Add API to convert a StringComparison to a StringComparer, to avoid bunch of switch-statements in user code (see 'Motivation' section below). See https://github.com/dotnet/corefx/issues/13800 and https://github.com/dotnet/coreclr/pull/8633 +14624 area-System.Security Port System.Security.Cryptography.Xml from netfx Staging port for community; compile errors exist. Contributes to #4278 (SignedXml) and #1132 (EncryptedXml). +14625 area-System.Reflection Ensure that the Reflection tests don't rely on magic numbers to get bad token ids. In our tests we are relying on the fact that a given token number, when 1000 is added to it, it becomes an invalid token https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/System/Reflection/ModuleTests.cs#L186 That is a fragile logic as we can see in https://github.com/dotnet/corefx/pull/14431. +14626 area-Infrastructure Use win10-arm64 for NETCore.App package win-arm64 was a typo. /cc @weshaggard @mellinoe @chcosta +14627 area-Infrastructure Microsoft.DiaSymReader.Native folder ends up in project using new CSPROJ after upgrading to Microsoft.NETCore.App/1.1.0 See dotnet/roslyn#15859 This will need to be included in 1.1.1 such that Microsoft.NETCore.App brings in the updated Microsoft.DiaSymReader.Native once it's fixed. +14628 area-System.Security Port System.Security.Cryptography.Xml from netfx Staging port for community; compile errors exist. Contributes to #4278 (SignedXml) and #1132 (EncryptedXml). +14629 area-System.Globalization Cleanup string normalization implementation +14631 area-System.Runtime [WIP] Expose string.Join APIs in System.Runtime **Description:** This PR exposes and adds tests for `string.Join` overloads accepting a char in System.Runtime. **Notes:** I'm very hopeful that this will build, but unable to test or even compile this locally because I'm consistently running into an issue: https://github.com/dotnet/corefx/issues/14423. So I will try to inspect any errors raised by CI and hopefully fix them, and then un-WIP this. **Fixes:** #12655, #5552 +14632 area-Infrastructure Generate packages for portable native build "This enables generating ""Linux-{arch}"" packages for Portable Native build of CoreFX. @weshaggard @ellismg @janvorli PTAL." +14633 area-Infrastructure Re-enable building System.Runtime.Serialization.Formatters Also removes entry for System.Runtime.CompilerServices.Unsafe. This project was already building via System.Memory but there was an additional entry for csproj (the project is an ilproj). System.Runtime.Serialization.Formatters now builds because its references are all present or built properly. This does not re-enable System.Threading.Overlapped, that one is a bit trickier.. /cc @weshaggard @ericstj +14635 area-System.Net remove ContextAwareResult in System.Net.Sockets The ContextAwareResult class existed to optimize ExecutionContext flow for async operations. Now, we go through Overlapped.Pack (instead of UnsafePack) and just rely on Overlapped to flow the EC for us. This is cheap on .NET Core because EC is immutable. +14636 area-System.Security Added additional WellKnownSidType enumeration members We need to decide on https://github.com/dotnet/corefx/pull/14611#discussion_r93085854 Looks like the thing which uses [`MaxDefined`](https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System/Security/Principal/SID.cs#L114) in a validator is the product code. https://referencesource.microsoft.com/#mscorlib/system/security/principal/sid.cs,491, and without updating it (in the impl) it'll make the new values unusable. Options: 1. Take the breaking change of updating it 2. Take the breaking change of undefining it 3. Update it in the impl, but not the ref 4. Say we're never allowed to update this enumeration 5. Leave this value as-is, but change the product code to do something smarter. 6. Some other proposal. cc @couven92 @bartonjs @terrajobst @weshaggard, @ericstj +14637 area-Infrastructure Updating CoreClr dependencies to servicing-24820-02 +14638 area-System.Data ObjectDisposedException in SqlClient SNIProxy "The following is the exception / stacktrace I get in my application: ` { ""ExceptionType"": ""ObjectDisposedException"", ""Message"": ""Cannot access a disposed object.\nObject name: 'System.Net.Sockets.UdpClient'."", ""ObjectName"": ""System.Net.Sockets.UdpClient"", ""Data"": null, ""StackTrace"": "" at System.Net.Sockets.UdpClient.EndReceive(IAsyncResult asyncResult, IPEndPoint& remoteEP)\n at System.Net.Sockets.UdpClient.<>c.b__55_1(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)"", ""Source"": ""System.Net.Sockets"", ""HResult"": -2146232798 } ` Environment setup: - Application running on netcoreapp1.0 - SQL server 2012, with SQL Server Browser Service (intentionally) disabled. I've pinpointed it to that if I pass a ConnectionString to the SqlClient that doesn't include an explicit port (i.e. simply on the form ""Data Source: ""), then the exception occurs and ends up in my TaskScheduler.UnobservedTaskException. If I do specify an explicit port in the ConnectionString, e.g. ""Data Source: ,1433"", then no exception is thrown. I assume that is simply because the code paths for doing SNI port lookup is not executed at all. One relevant code path is https://github.com/dotnet/corefx/blob/6b5ef121ebea45b14f489a177e2e3f27fce86781/src/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs#L651 It seems like EndReceive is invoked unconditionally in the AsyncCallback, thus also possibly after the UdpClient goes out of scope (the using scope). I'm thinking that UdpClient.ReceiveAsync() must check whether the UdpClient has actually gone out of scope before invoking the EndReceive. And if it has gone out of scope, it should be considered cancelled / timed out, and throw such an exception (instead of now resulting in an ObjectDisposedException " +14640 area-System.Collections Version 1.3 on nuget contains DLL wih 1.2.1 version The issue is detailed on a stackoverflow post but the key issue is that if you download 1.3.0 from the nuget gallery and then check the dll you see that it is really 1.2.1 http://stackoverflow.com/questions/41244162/nuget-seems-to-install-the-wrong-version-of-system-collections-immutable https://www.nuget.org/packages/System.Collections.Immutable/1.3.0 ![image](https://cloud.githubusercontent.com/assets/17650/21355786/a1618b3e-c6cf-11e6-8cba-b566078d8b36.png) +14641 area-System.Runtime Add tests for new String.Join overloads Close #5552 +14643 area-Infrastructure Restore original shim output paths, copy to vertical runtime folder as a post-step @ericstj This changes the CMake output path back to the paths we were originally using, and then adds another step that copies that folder to the vertical group's runtime folder. +14644 area-System.Data SqlClient's connection resiliency causes performance issues to EF customers. Consider exposing a way to override it at runtime This is to follow up on a specific issue a customer created today on EF Core at https://github.com/aspnet/EntityFramework/issues/7283, but the problem has been brought to our attention before. Both EF6 and EF Core provide APIs that allow applications to create and initialize databases, check for their existence and modify their schemas. These operations can happen at design time (e.g. when using the migrations feature) or at runtime. **Attempting to connect to a database that doesn't exist is part of the normal flow of these operations.** In .NET Framework 4.5.1 SqlClient introduced a connection resiliency feature that performs automatic retries if failures occur during `SqlConnection.Open()`. Two new settings `ConnectRetryCount` and `ConnectRetryInterval` were added to the list of settings recognized in connection strings and a default behavior was adopted so if the first attempt to connect to a database fails a retry will occur after 10 seconds if these settings are not specified. The same feature is now included in the .NET Core version of SqlClient. With only the default behavior **this feature introduces a lag of 10 second for any calling code that attempts to connect to a database that doesn't exist.** It also prevents any calling code from implementing its own (potentially more efficient) retry logic correctly. This severely affects customer experience and can potentially affect runtime performance. Two main approaches have been proposed to mitigate this issue on EF code, but they have severe disadvantages: 1. Recommend customers to disable SqlClient's connection resiliency altogether by setting `ConnectRetryCount=0` when working EF and make sure the feature is disabled any time EF runtime or tooling creates a connection string, or even throw if an attempt is made to use a connection that has the feature enabled. The main disadvantages of this approach are: * It is not discoverable for customers and so users will still experience the 10 second lags (or exceptions if we decide to throw) for the default case. * It prevents the connection resiliency feature in SqlClient from being available in scenarios in which it could actually have been helpful. * EF6 supports older versions of .NET Framework than 4.5.1 and for those versions these settings are not valid. The logic would need to take the executing version of .NET Framework into account. 2. Store aside a copy of the original connection string so that we can modify it with `ConnectRetryCount = 0` and create a separate `SqlConnection` object to perform existence checks. * The main problem with this approach is that both EF Core and EF6 support passing a `SqlConnection` object to be used in the EF context. It is possible that the password would have already been removed from the `ConnectionString` in that connection object if it was open before, so in that case the connection string would not contain enough credentials to be able to create a separate functional connection object. At this point we believe that if `SqlConnection` exposed a way to programmatically disable connection retries **without requiring the modification of the connection string** we could modify EF6 and EF Core code to restore the correct behavior and eliminate 10 second lags. We are happy to discuss other options with the SqlClient team. Also note that this issue applies to both .NET Core and .NET Framework. cc @ajcvickers Note on how EF Core implements its own retry logic to check for database existence: In general, any code that is calling `SqlConnection.Open()` can leverage contextual knowledge to make connection retries more efficient. E.g.: - When EF Core performs existence checks, it will only retry on certain errors if they occur immediately after a database has been created. - For a regular existence checks (i.e. those that don't happen immediately after the database has been created) EF Core assumes that immediate failures coming from a database server mean that the database effectively doesn't exist and can avoid any retry logic. +14645 area-Infrastructure Release/1.1.0 versions fix Enable building with a uri version file so that we can pull versions from dotnet/versions for building tests against packages. +14646 area-Infrastructure Deprecate sync.cmd This is follow-up for https://github.com/dotnet/corefx/commit/2d3e555196bfa5c9d2156a9adcabf9ef902b1ba0. It may make sense to bring back some form of sync.cmd, but right now that needs to do a bit more than just restore. /cc @weshaggard @mellinoe @chcosta This is needed to get the official builds working. +14647 area-Infrastructure update buildtools to version 1.0.25-prerelease-01121-01 +14648 area-Infrastructure Updating CoreClr dependencies to servicing-24821-01 +14649 area-System.Console Enable full Encodings on Windows Console by Default by default .NetCore doesn't enable the codepage encoding and the app has to opt-in to the full encoding through the call Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) This was not a good stand for the Console specially on Windows as the Console always using encoding which is not supported by default and we had to fallback using UTF8. In this change we are supporting the full OS encoding on Console and System.Diagnostics.Process without bringing the big encoding size cost (which is 600+ KB). The way we support it is we create an OSEncoding class wrapper which will call the OS instead of using our own encoding data. The only restriction we’ll have is cannot use encoding fallback with OSEncoding as this will be very slow and not intuitive. But this is acceptable as usually apps don’t use the console encodings for such fallback operation. But if anyone want to do that can still register the encoding provider and get full support. +14651 area-Serialization Potential Issues with Deserializing ISerializable Types "There's a couple of potential issues with deserializing ISerializable types, 1. An ISerializable type's OnDeserializing callback is not called on the actual deserialized object. 2. The object added to XmlObjectSerializerReadContext is not the actual deserialized, which may cause wrong behavior in ""IsReference=true"" scenarios. The issues occur with both ILGen based and reflection only based serialization. To investigate the issue, we need to look into the following methods, `ReflectionReader.ReflectionReadClass` `XmlFormatReaderGeneratorCriticalHelper.GenerateClassReader` `JsonFormatReaderGenerator.CriticalHelper.GenerateClassReader`" +14654 area-System.ComponentModel EnsureValidDataType reject whitespaces EnsureValidDataType should reject whitespaces in DataTypeAttribute.CustomDataType property because it is mandatory and it does not make sense that the property is whitespaces. Fix #4465 +14655 area-Infrastructure Add ubuntu.XX-arm to runtime.native.XX.pkgproj This patch adds ubuntu.14.04-arm and ubuntu.16.04-arm into runtime.native.XX.pkgproj Signed-off-by: chunseoklee +14656 area-System.Collections Dictionary constructor that accepts IEnumerable (ref #1378) Add a generic Dictionary construction that accepts IEnumerable +14657 area-Infrastructure Updating CoreClr dependencies to servicing-24821-02 +14660 area-System.Security Make the Crypto.Encoding library work on macOS without OpenSSL "Apple's Security framework doesn't seem to expose any OID resolution or ASN.1/DER pretty-printing, so the ""make a native call here"" functions just always report that they have failed. The pretty-printing of SubjectAlternativeName was manually written into this library to retain support for libraries which are parsing the ToString output. Part of #9394." +14661 area-System.Runtime Add ConditionalWeakTable.AddOrUpdate to contract and add tests Fixes #8429 Add test and update contract for pull https://github.com/dotnet/coreclr/pull/8490 /cc @jkotas @stephentoub +14662 area-System.Security System.Security.Cryptography.Xml - phase 2 (make it compile) This is the initial work for phase 2 of dotnet/corefx#4278 (port System.Security.Cryptography.Xml from netfx to corefx). There are a couple of areas that need review: - [x] `SR` - [x] Added an overload to `GetResourceString` that doesn't require a default value (uses resource key as the default value). Not sure if this is the correct behaviour but the existing code does not use the second parameter. - [x] [Imported](https://github.com/tintoy/corefx/issues/1#issuecomment-268436631) messages from `System.Security.txt` into `Strings.resx`. There seem to be a lot of unused strings in here, not sure if you want them trimmed. - [x] `EncryptedXml` - [x] Merged the 2 non-default constructors (removing the overload that takes `Evidence` because as far as I can tell, there is no CAS in corefx). - [x] `SignedXml` - [x] Currently using a hard-coded constant for `szOID_KEY_USAGE` (`2.5.29.15`) because I can't find an existing constant to represent it. Let me know where you'd like this to live. - [x] Changed `X509Certificate2.GetAnyPublicKey` to `X509Certificate2.PublicKey.Key` because I can't find an equivalent method in corefx. - [x] Stubbed out `ReadAdditionalXXX` methods because there's no Registry to read from. - [x] `SymmetricKeyWrap` - [x] Suppressed code-analysis rule `CA5350` because the directive was to port the code as-is. - [x] `Utils` - [x] Removed references to `Registry`, substituting default values where they were previously read from the registry. - [x] Removed references to `[RegistryPermission]` because, as far as I can tell, CAS does not exist in corefx. - [x] Copied `HexEncode` / `HexDecode` methods from [X509Utils](https://referencesource.microsoft.com/#System.Security/system/security/cryptography/x509/x509utils.cs,6ef26ece8e08c36b,references) in netfx since there appear to be no public equivalents in corefx. - [x] `KeyInfoX509Data` - [x] Previously, `CryptographicException` was constructed with `CAPI.CERT_E_CHAINING` HRESULT constant. Linked `src/Interop/Common/src/Windows/Crypt32/Interop.certificates_types.cs` and used `Interop.Crypt32.CertChainPolicyErrors.CERT_E_CHAINING` since the associated message does not appear in the string resources. `System.Security.Cryptography.Xml.csproj` now builds correctly, but `System.Security.Cryptography.Xml.Tests.csproj` does not. This appears to be due to the steps taken to exclude it from the build. +14663 area-Infrastructure Add Configurations.props files for test projects, include tests in build.proj There were a large number of changes that needed to be made to the test projects and test code in order to get everything working in dev/eng. This gets all of the tests building and running against netcoreapp (minus one project). There is still no support for different targeting packs (`netstandard1.3`, etc.), so everything is still compiling against the netcoreapp targeting pack (built live). Issues remaining: * There are some workarounds necessary because of the `TypeInfo` inheritance issue ( #14334 ). These are present in the tests for System.Runtime, System.Linq.Expressions, and System.Reflection.Emit. * System.IO.IsolatedStorage is failing sometimes on my machine; no idea why. It usually succeeds when re-tried. I get `UnauthorizedAccessException`s when it fails. * System.Security.AccessControl.Tests always fails for me because of a debug assertion in the product code. No idea why yet, so I disabled the test project. * System.Linq.Expressions references the source project because it uses types not exposed in the contract. This is happening in master, too, so it's not a change from before. @joperezr @weshaggard @ericstj @karajas +14665 area-Infrastructure Clean up build-native.cmd/sh A couple of improvements suggested by @weshaggard and @ericstj . +14666 area-Infrastructure Update BuildTools Version Pick up revved build tools version using UtcNow instead of regular Now for build version. @chcosta @joperezr @markwilkie +14667 area-Infrastructure Update to buildtools version 1.0.25-prerelease-01121-03 +14669 area-Infrastructure Cleanup TargetingPackReferences from dev/eng "It looks like we're still using ""TargetingPackReference"" even though reference seems to be all that's needed. If I remove them I trigger the error that this was working around: https://github.com/dotnet/buildtools/blob/7b3991e4bba0b86945a06470b313f9183e744e25/src/Microsoft.DotNet.Build.Tasks/PackageFiles/packageresolve.targets#L154 Let's use this issue to track cleaning everything up. /cc @mellinoe @chcosta " +14671 area-Infrastructure [dev/eng] ref projects are not really building in parallel on Unix I'm not sure what's causing this, but it looks like the ref projects are effectively being built sequentially outside of Windows. This is causing the build to take a very long time compared to Windows. My 8-core Ubuntu machine has only one core being utilized during the ref build, even though there are tons of MSBuild processes active. It looks like the src build is handling this a bit better (faster and more CPU utilization), but I'm not sure it's as good as Windows there either. It still seems slower to me. Is this a problem with MSBuild? @weshaggard @ericstj @chcosta @joperezr @karajas +14672 area-Infrastructure Update buildtools to version 1.0.26-prerelease-01121-01 +14673 area-System.Net SendRecvPollSync_TcpListener_Socket outerloop test is flaky When running this test in System.Net.Socket.Test.dll, I occasionally get the following exception: ``` System.Net.Sockets.Tests.SendReceive.SendRecvPollSync_TcpListener_Socket(listenAt: 127.0.0.1, pollBefore Operation: False) [FAIL] System.AggregateException : One or more errors occurred. (An existing connection was forcibly closed by the remote host) ---- System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote ho st Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationTok en cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) C:\github\geoffkizer\corefx\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(1184,0): a t System.Net.Sockets.Tests.SendReceive.SendRecvPollSync_TcpListener_Socket(IPAddress listenAt, Boolean poll BeforeOperation) ----- Inner Stack Trace ----- C:\github\geoffkizer\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(1436,0): at Sy stem.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) C:\github\geoffkizer\corefx\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs(1138,0): a t System.Net.Sockets.Tests.SendReceive.<>c__DisplayClass27_1.<b__0>d.M oveNext() Looks like a timing issue somewhere. ``` +14674 area-System.Net System.Net.Cookie doesn't conform to RFC 2965 "In RFC 2965, section 3.2.2 it states > Version=value REQUIRED. The value of the Version attribute, a decimal integer, identifies the version of the state management specification to which the cookie conforms. For this specification, Version=1 applies. In the msdn documentation for [Cookie.Version](https://msdn.microsoft.com/en-us/library/system.net.cookie.version(v=vs.110).aspx), it states > The default value for the Version property is 0, complying with the original Netscape specification. If the value is explicitly set to 1, then this Cookie must conform to RFC 2109. RFC 2109 was obsoleted by RFC 2965 so as per the newer spec, specifying Version=1 means RFC 2965 applies. RFC 2109 requires a specified domain to be have a leading dot whereas RFC 2965 does not require this. When making a request using HttpClient to an HTTP server which returns a cookie with an explicit domain without a leading dot and specifying version=1, the cookie is dropped. Here is some simple code reproducing the issue. ```csharp var mycookie = ""lang=en-US; Domain=example.com;Path=/;version=1""; var uri = new Uri(""http://example.com""); CookieContainer container = new CookieContainer(); container.SetCookies(uri, mycookie); ``` This throws a CookieException when the cookie is valid. The cookie parsing code in HttpClient swallows this exception. RFC 2965 is further obsoleted by RFC 6265 which makes no mention of the Version attribute but does say that there is no need for a leading dot, and if it is there, to strip it out and ignore it. So either the latest RFC should apply in which case the example cookie I provided should parse, or the latest RFC which claims it should apply which mentions the Version attribute should apply." +14675 area-System.Linq Reduce allocations in {Concat,SelectMany,Append,Prepend}.ToArray by close to 50% **Background:** Some `ToArray` implementations employ a double-buffering strategy if we don't know the exact length of the output array. First the items are copied into some sort of buffer, then they are transferred into an array. For example, in the following snippet ```c# var array = new[] { -1, -2, -3 }; Enumerable.Range(1, 100).Concat(array.Where(i => true)).ToArray(); ``` In `ToArray`, we know the size of the lhs enumerable but not how many elements are in the rhs one. So we allocate a buffer with 100+ elements to hold everything, calculate the final size of the array, and re-copy those elements. ```c# Buffer: [1 2 3 .. 100 -1 -2 -3 0 0 .. 0] Array: [1 2 3 .. 100 -1 -2 -3] ``` **Description:** Instead of copying everything twice, we can buffer only the enumerables we can't get the count of. If we reach an `ICollection` or an `IIListProvider` and it has N items, we queue it to be copied later, and tell the builder to leave a gap of N items in the output array. Finally, when `ToArray` is called, we revisit all of those queued collections and copy them directly to the output. Here is how the above example works now: ```c# // Stage 1: First pass Buffer: [-1 -2 -3 0 .. 0] Markers: [(Index: 0, Count: 100)] // During ToArray(), leave a gap of 100 items at index 0 QueuedCollections: [Enumerable.Range(1, 100)] // Stage 2: Call ToArray() Array: [0 0 0 .. 0 -1 -2 -3] // The first 100 slots are empty. // Stage 3: Loop thru each of the indices in Markers and copy the corresponding // queued collection to that index. Array: [1 2 3 ... 100 -1 -2 -3] ``` **Performance results:** An initial test is showing almost 50% decrease in GCs in `SelectMany(e => e).ToArray()`, assuming `e` is always an `ICollection`. [results](https://gist.github.com/jamesqo/9b1fc0a5d59fe41fd34974ad249693a9) / [test](https://github.com/jamesqo/Dotnet/blob/d64997ccef2ceec8b2903cf94ddba01e349e780b/Program.cs) **Methods this affects:** `Concat().ToArray()`, `SelectMany().ToArray()`, `Append/Prepend().ToArray()` I had to pull in the changes from https://github.com/dotnet/corefx/pull/13942 because this affects `SelectMany`, so the LOC in the diffs is exaggerated. Once/if that's merged, I'll rebase. cc @stephentoub @VSadov @JonHanna +14676 area-Infrastructure Updating CoreClr dependencies to servicing-24822-01 +14677 area-Infrastructure Add ubuntu.XX-arm to runtime.native.XX.pkgproj This patch adds ubuntu.14.04-arm and ubuntu.16.04-arm into runtime.native.XX.pkgproj Signed-off-by: chunseoklee chunseok.lee@samsung.com Related PR : #14655 (@chunseoklee is on vacation, so I revised it and made another PR.) +14680 area-System.Data SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 35 - An internal exception was caught) "Platform : Linux Centos Runtime : docker from microsoft/aspnetcore:1.1.0 System.Data.SqlClient, Version=4.1.0.0 DefaultConnection: ""Data Source=xxx;Initial Catalog=Account;Persist Security Info=True;User ID=sa;Password=xxx"" __But not appear on Windows__ TestSql1 is ok. ```c# public async Task TestSql1([FromServices]DbContextOptions options) { using (var con = new SqlConnection(options.FindExtension().ConnectionString)) { await con.OpenAsync(); using (var cmd = new SqlCommand()) { cmd.CommandText = ""select * from PhoneCodes;""; cmd.Connection = con; using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { _logger.LogInformation(reader[0].ToString() + ""\t""); } } } } return Content(""ok""); } ``` TestSql2 is failed ```c# public async Task TestSql2([FromServices]DbContextOptions options) { using (var con = new SqlConnection(options.FindExtension().ConnectionString)) { await con.OpenAsync(); using (var cmd = new SqlCommand()) { var userNameOrEmailOrPhoneNumber = ""deviceone""; cmd.CommandText = ""SELECT TOP(1) [u].[Id], [u].[AccessFailedCount], [u].[ConcurrencyStamp], [u].[Email], [u].[EmailConfirmed], [u].[HeadUrl], [u].[LastActiveIP], [u].[LockoutEnabled], [u].[LockoutEnd], [u].[NormalizedEmail], [u].[NormalizedUserName], [u].[PasswordHash], [u].[PerfectedAccountInfo], [u].[PhoneNumber], [u].[PhoneNumberConfirmed], [u].[Prefix], [u].[PromoteCode], [u].[RegisterIP], [u].[SecurityStamp], [u].[TwoFactorEnabled], [u].[Type], [u].[TypeAuthenticated], [u].[UserName] FROM [AspNetUsers] AS [u] WHERE (([u].[UserName] = '"" + userNameOrEmailOrPhoneNumber + ""') OR ([u].[Email] = '"" + userNameOrEmailOrPhoneNumber + ""')) OR ([u].[PhoneNumber] = '"" + userNameOrEmailOrPhoneNumber + ""')""; cmd.Connection = con; using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { _logger.LogInformation(reader[0].ToString() + ""\t""); } } } } return Content(""ok""); } ``` deviceone.account.web_1 | Executing action method DeviceOne.Account.Web.Controllers.HomeController.TestSql2 (DeviceOne.Account.Web) with arguments (Microsoft.EntityFrameworkCore.DbContextOptions`1[DeviceOne.Account.Web.Data.ApplicationDbContext]) - ModelState is Valid deviceone.account.web_1 | info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] deviceone.account.web_1 | Request finished in 20151.2156ms 500 text/html; charset=utf-8 deviceone.account.web_1 | info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2] deviceone.account.web_1 | Executed action DeviceOne.Account.Web.Controllers.HomeController.TestSql2 (DeviceOne.Account.Web) in 18978.5508ms deviceone.account.web_1 | fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0] deviceone.account.web_1 | An unhandled exception has occurred while executing the request deviceone.account.web_1 | System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.IO.IOException: Unable to read data from the transport connection: Connection reset by peer. ---> System.Net.Sockets.SocketException: Connection reset by peer deviceone.account.web_1 | at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) deviceone.account.web_1 | at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) deviceone.account.web_1 | --- End of inner exception stack trace --- deviceone.account.web_1 | at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) deviceone.account.web_1 | at System.Net.Sockets.NetworkStream.<>c.b__58_1(IAsyncResult iar) deviceone.account.web_1 | at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) deviceone.account.web_1 | --- End of inner exception stack trace --- deviceone.account.web_1 | at System.Data.SqlClient.SqlCommand.EndExecuteReader(IAsyncResult asyncResult) deviceone.account.web_1 | at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at DeviceOne.Account.Web.Controllers.HomeController.d__8.MoveNext() in /root/Account/src/DeviceOne.Account.Web/Controllers/HomeController.cs:line 84 deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__27.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__25.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context) deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__22.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ResourceExecutedContext context) deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) deviceone.account.web_1 | at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__20.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at IdentityServer4.AccessTokenValidation.IdentityServerAuthenticationMiddleware.d__6.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at IdentityServer4.Hosting.IdentityServerMiddleware.d__3.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at IdentityServer4.Hosting.FederatedSignOutMiddleware.d__6.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at IdentityServer4.Hosting.AuthenticationMiddleware.d__2.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.d__7.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at IdentityServer4.Hosting.BaseUrlMiddleware.d__2.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1.d__18.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.d__7.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.d__5.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.d__6.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.d__6.MoveNext() deviceone.account.web_1 | --- End of stack trace from previous location where exception was thrown --- deviceone.account.web_1 | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) deviceone.account.web_1 | at System.Runtime.CompilerServices.TaskAwaiter.GetResult() deviceone.account.web_1 | at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext() deviceone.account.web_1 | ClientConnectionId:72c97f70-9df8-4533-8d2b-9987a0e53675" +14681 area-System.Xml Test failure: System.Xml.Tests.CreateElementTests/NameWithWhitespace Opened on behalf of @Jiayili1 The test `System.Xml.Tests.CreateElementTests/NameWithWhitespace` has failed. Assert.Throws() Failure\r Expected: typeof(System.Xml.XmlException)\r Actual: typeof(System.Xml.XmlException): The ' ' character, hexadecimal value 0x20, cannot be included in a name. Stack Trace: at System.Xml.XmlDocument.CheckName(String name) at System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) at System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) at System.Xml.XmlDocument.CreateElement(String name) Build : Master - 20161221.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161221.02/workItem/System.Xml.XmlDocument.Tests/analysis/xunit/System.Xml.Tests.CreateElementTests~2FNameWithWhitespace Same issue for the tests: System.Xml.Tests.CreateElementTests/NameWithWhitespace System.Xml.Tests.CreateElementTests/NamespaceAndLocalNameWithColon System.Xml.Tests.CreateElementTests/NamespaceWithNoLocalName +14682 area-System.Memory Span: Fix fast Span TFM in System.Memory Right now fast span has a netcoreapp1.1 but the fast span doesn't actually exist in there. It should be whatever the next version of netcoreapp is going to be called. /cc @ahsonkhan @ericstj @weshaggard @KrzysztofCwalina +14683 area-Infrastructure Updating CoreClr dependencies to servicing-24822-02 +14684 area-System.Net can't join Multicast group on Linux - no IGMP ADD_MEMBERSHIP report visible in Wireshark "I'm having trouble joining mcast group on Linux I'm using the following code: ``` Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); sock.Bind(new IPEndPoint("""", MulticastGroupPort)); sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(""""))); ``` but I can't see any ADD_MEMBERSHIP report in WireShark and of course I'm not receiving any data I've tried various combinations of above, but with no success is it possible to receive data from multicast group without using UdpClient ? " +14685 area-System.Linq Add regression test for DynamicExpression in BinaryOperationBinder #3556 recommended adding a regression test. This was never done +14686 area-Infrastructure ExcludeFromCodeCoverageAssemblyAttribute for excluding assemblies Treated like ExcludeFromCodeCoverageAttribute by OpenCover but doesn't clash with the public form of that attribute in being allowed on assemblies. Fixes #14488 CC @mellinoe @dotnet-bot test code coverage +14687 area-System.Collections Add tests for BitArray.Clone with large lengths Fixes dotnet/coreclr#2366 Implementation has been fixed, tests never added +14688 area-Infrastructure Remove VSTS Symbol publish step from checked in definitions Removes an unnecessary step from the build, decoupling a dependency that has caused build failures. When we add this back in, I think we should try to run it in the publish build to isolate it better. @chcosta +14690 area-System.Net Implement Websockets connections with HttpListener on Unix. +14691 area-System.Net Implement https connection support for the managed HttpListener This requires a mechanism to get the ssl certificate info to use on the port of httplistener connection. Possible solutions: - Expose an API that gets the cert filename on Unix and throws PNSE on Windows. - Create a tool to maintain/create/delete httplistener certs, mimicking windows httpcfg. Current behavior: - Connections drop on https. +14692 area-System.Net Port Unix implementation of System.Net.HttpListener pending issues #14690 #14691 fixes #13187 cc @stephentoub @geoffkizer @CIPop @davidsh @karelz +14693 area-Serialization Improve ReflectionReader.ReadISerializable's Performance `ReflectionReader.ReadISerializable` currently uses Constructor.Invoke to create ISerializable objects, which is very slow. We need to investigate if there's any better way to create the objects. +14695 area-System.ComponentModel Remove dependency to System.Net.WebClient from the DesigntimeLicenseContext type +14696 area-Infrastructure Manifest mismatch exception when referencing Microsoft.NETCore.App 1.2.0 for an application targeting netcoreapp1.0 "`dotnet --version: 1.0.0-preview2-1-003180` (This CLI which supports netcoreapp1.1 > netstandard1.7 ### project.json: ``` { ""buildOptions"": { ""emitEntryPoint"": true }, ""frameworks"": { ""netcoreapp1.0"": { ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.2.0-*"" }, ""System.ComponentModel.TypeConverter"": ""4.4.0-*"" } } } } ``` ### Program.cs ``` public class Program { public static void Main() => System.Console.WriteLine(""Hello World!""); } ``` Running dotnet run on the project fails with ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Threading, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Console.EnsureInitialized[T](T& field, Func`1 initializer) at System.Console.get_Out() at System.Console.WriteLine(String value) at Program.Main() in \mna-2\Program.cs:line 3 ```" +14697 area-Infrastructure Updating CoreClr dependencies to servicing-24823-01 +14698 area-System.Net SslStream.WriteAsync hangs after updating to CoreFx 4.4 We've recently updated package references in Kestrel to CoreFx 4.4 https://github.com/aspnet/KestrelHttpServer/commit/5b8f7c2b2be5744edac8ce3c5a2dea86ed65b8ee. After this update, Kestrel can't serve HTTPS anymore. We have a stream that wraps an `SslStream`, and it's hanging when writing here: https://github.com/aspnet/KestrelHttpServer/blob/5b8f7c2b2be5744edac8ce3c5a2dea86ed65b8ee/src/Microsoft.AspNetCore.Server.Kestrel/Filter/Internal/StreamSocketOutput.cs#L59 Reproing is straightforward: just run the Kestrel sample app (under `samples/SampleApp` in the repo) and hit it with any client, and you will see the hang. This only happens on .NET Core. Desktop .NET works fine. +14701 area-System.IO The System.IO.FileSystem.Watcher.Tests assemble threw 'System.Diagnostics.Debug+DebugAssertException' when building No results generated. 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: Unhandled Exception: System.Diagnostics.Debug+DebugAssertException: FILE_ACTION_RENAMED_NEW_NAME with no old name! [ 3jmpqvmh.m5t] 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: at System.Environment.get_StackTrace() 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: at System.Diagnostics.Debug.Fail(String message) 2016-12-22 15:30:03,398: INFO: proc(55): run_and_log_output: Output: at System.IO.FileSystemWatcher.ParseEventBufferAndNotifyForEach(Byte[] buffer) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.IO.FileSystemWatcher.ReadDirectoryChangesCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Diagnostics.Debug.WindowsDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Diagnostics.Debug.Fail(String message) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.IO.FileSystemWatcher.ParseEventBufferAndNotifyForEach(Byte[] buffer) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.IO.FileSystemWatcher.ReadDirectoryChangesCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2016-12-22 15:30:03,400: INFO: proc(55): run_and_log_output: Output: at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161222.03/workItem/System.IO.FileSystem.Watcher.Tests/details/859862c0-e711-46dd-9d09-30d6df458644 Build: 20161222.03 - Core Tests Failing configurations: Windows.10.Core.AMD64 +14703 area-Infrastructure Code coverage CI runs are failing "Code coverage runs are failing with commands along the lines of: ``` D:\j\workspace\code_coverage---fc4f7f0d\Tools\CodeCoverage.targets(82,5): error MSB3073: The command ""D:\j\workspace\code_coverage---fc4f7f0d\packages/ReportGenerator\2.5.0\tools\ReportGenerator.exe -targetdir:D:\j\workspace\code_coverage---fc4f7f0d\bin/tests/coverage\ -reporttypes:Html;Badges -reports:D:\j\workspace\code_coverage---fc4f7f0d\bin/tests/coverage\\*.coverage.xml"" exited with code 1. [D:\j\workspace\code_coverage---fc4f7f0d\build.proj ``` The last successful run was on the 12th." +14704 area-Infrastructure Updating CoreClr dependencies to servicing-24823-02 +14705 area-Infrastructure System.IO.Compression.ZipFile assembly empty for net46 The `System.IO.Compression.ZipFile` assembly does not contain any public classes for net46. I expected the package to at least, well, contain the `ZipFile` class. Background: Because of issues like dotnet/sdk#514, I've enabled `DisableImplicitFrameworkReferences` in my project when building for `net46` and I'm not referencing the NetFX versions of `System.IO.Compression` and friends. But it appears that in this configuration the `ZipFile` class is not available. Verified on both the public 4.3.0 NuGet package as well as the 4.4.0-beta-24823-02 package from MyGet +14706 area-Infrastructure Don't errorandcontinue for serialized projects Failures are getting ignored in CI. Turning off ErrorAndContinue for serialized projects. I don't think that for serialized builds (ref.builds, src.builds, packages.builds) we want to error and continue because a ref build failure will always cause a src build failure which will always cause a packages build failure. Regardless, I think this may only be part of the problem, I also think that the target ordering changes I've done may be causing MSBuildLastTaskResult to not be properly set which is hiding failures). I'm using this PR to test the CI and see if it catches anything with serialized builds. +14707 area-Infrastructure Updating CoreClr dependencies to servicing-24823-03 +14708 area-System.Collections Allow KeyedCollection Derived Class to Provide Different Implementation of IDictionary Title says it all. Since [Dictionary](https://msdn.microsoft.com/en-us/library/ms132468.aspx) property only specifies the interface [IDictionary(TKey, TValue)](https://msdn.microsoft.com/en-us/library/s4ys34ea.aspx) instead of actual class, it could be good if derived class is allowed to provide its own dictionary implementation by overriding a method. +14709 area-Infrastructure Updating CoreClr dependencies to servicing-24824-01 +14711 area-Infrastructure Updating CoreClr dependencies to servicing-24824-02 +14712 area-Infrastructure Updating CoreClr dependencies to servicing-24825-01 +14714 area-Infrastructure Updating CoreClr dependencies to servicing-24825-02 +14715 area-System.Net Unknown cURL error when using HTTP/2 to connect to api.push.apple.com "Using .NET Core 1.1 on macOS ""Sierra"" 10.12.2 (build 16C67). When using `System.Net.Http.HttpClient` to try connect via HTTP/2 to api.push.apple.com, there's some unexplained cURL error - see below. The exception is not descriptive enough to attempt to troubleshoot, and as the connection is encrypted, I cannot examine it and compare the transmissions to a working reference implementation. **Repro code:**
```c# using System; using System.Net.Http; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public static int Main(string[] args) => MainAsync(args).GetAwaiter().GetResult(); static async Task MainAsync(string[] args) { try { using (var client = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Post, ""https://api.push.apple.com/3/device/AAA""); request.Version = new Version(2, 0); var response = await client.SendAsync(request); Console.WriteLine($""HTTP Status Code: {response.StatusCode}""); Console.WriteLine(await response.Content.ReadAsStringAsync()); } return 0; } catch (Exception ex) { WriteExceptionRecursive(ex); return -1; } } static void WriteExceptionRecursive(Exception ex) { if (ex.InnerException != null) { WriteExceptionRecursive(ex.InnerException); } Console.WriteLine($""{ex.GetType().Name}: {ex.Message}""); Console.WriteLine(ex.StackTrace); Console.WriteLine(); } } } ```

**Output:** ``` [04:13pm yaakov@Expression:/tmp/netcore_apple] dotnet run Project netcore_apple (.NETCoreApp,Version=v1.1) will be compiled because inputs were modified Compiling netcore_apple for .NETCoreApp,Version=v1.1 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:01.4441779 CurlException: Failure when receiving data from the peer at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) IOException: The read operation failed, see inner exception. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.StreamToStreamCopy.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpContent.d__48.MoveNext() HttpRequestException: Error while copying content to a stream. at System.Net.Http.HttpContent.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at ConsoleApplication.Program.d__1.MoveNext() in /private/tmp/netcore_apple/Program.cs:line 21 ``` For reference, a build of the cURL command-line client that supports HTTP/2 provides the following output:
``` [04:21pm yaakov@Expression:/tmp/netcore_apple] /usr/local/Cellar/curl/7.52.1/bin/curl -v --http2 -X POST https://api.push.apple.com/3/device/AAA * Trying 17.188.160.207... * TCP_NODELAY set * Connected to api.push.apple.com (17.188.160.207) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /usr/local/etc/openssl/cert.pem CApath: /usr/local/etc/openssl/certs * TLSv1.2 (OUT), TLS header, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Request CERT (13): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Certificate (11): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=api.push.apple.com; OU=management:idms.group.533599; O=Apple Inc.; ST=California; C=US * start date: Aug 28 19:03:46 2015 GMT * expire date: Sep 26 19:03:46 2017 GMT * subjectAltName: host ""api.push.apple.com"" matched cert's ""api.push.apple.com"" * issuer: CN=Apple IST CA 2 - G1; OU=Certification Authority; O=Apple Inc.; C=US * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0x7fd42980b000) > POST /3/device/AAA HTTP/1.1 > Host: api.push.apple.com > User-Agent: curl/7.52.1 > Accept: */* > * Connection state changed (MAX_CONCURRENT_STREAMS updated)! < HTTP/2 403 < apns-id: 1AD32888-F1A3-3494-BCBD-2783E02F7AD3 < * Curl_http_done: called premature == 0 * Connection #0 to host api.push.apple.com left intact {""reason"":""MissingProviderToken""} ```
" +14716 area-Infrastructure Updating CoreClr dependencies to servicing-24826-01 +14717 area-System.IO .NET Core web app fails to run from a path containing a question mark "_From @yaakov-h on December 26, 2016 0:15_ **Operating System:** macOS ""Sierra"" 12.12.2 **.NET Core SDK:** [.NET Core 1.1 x64 SDK 1.0.0](https://download.microsoft.com/download/1/4/1/141760B3-805B-4583-B17C-8C5BC5A876AB/Installers/dotnet-dev-osx-x64.1.0.0-preview2-1-003177.pkg) I created a new folder at `/Users/yaakov/Development/Projects/Who knows?/BuzzerServer`. I then created a new web project with `dotnet new -t Web`, ran `dotnet restore` and `dotnet run`. This resulted in the following exception: ``` Project BuzzerServer (.NETCoreApp,Version=v1.1) will be compiled because inputs were modified Compiling BuzzerServer for .NETCoreApp,Version=v1.1 /Users/yaakov/Development/Projects/Who knows?/BuzzerServer/project.lock.json(1,0): warning NU1006: Dependencies in project.json were modified. Please run ""dotnet restore"" to generate a new lock file. Compilation succeeded. 1 Warning(s) 0 Error(s) Time elapsed 00:00:02.0939920 Unhandled Exception: System.ArgumentException: Invalid directory on URL. at System.Security.Util.DirectoryString.CreateSeparatedString(String directory) at System.Security.Util.URLString.ParseString(String url, Boolean parsed) at System.Security.Util.URLString.GetFileName() at System.Reflection.RuntimeAssembly.VerifyCodeBaseDiscovery(String codeBase) at System.Reflection.RuntimeAssembly.GetName(Boolean copiedName) at Microsoft.AspNetCore.Hosting.WebHostBuilderExtensions.UseStartup(IWebHostBuilder hostBuilder, Type startupType) at WebApplication.Program.Main(String[] args) in /Users/yaakov/Development/Projects/Who knows?/BuzzerServer/Program.cs:line 14 ``` If I move the folder to a path that does not contain a question mark, the project runs successfully. ``` Compiling BuzzerServer for .NETCoreApp,Version=v1.1 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:02.1489371 info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0] User profile is available. Using '/Users/yaakov/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. Hosting environment: Production Content root path: /Users/yaakov/Development/Projects/Active/BuzzerServer Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down. ``` _Copied from original issue: aspnet/Home#1890_" +14718 area-Infrastructure Updating CoreClr dependencies to servicing-24826-02 +14721 area-Meta ServiceDescriptor can through attributes registration? such as ` [ServiceDescriptor(typeof(IUser),ServiceLifetime.Transient)]` +14722 area-System.Security [WIP] Add DSACertificateExtension extension methods Add DSACertificateExtension extension methods with DSACertificateExtension ::GetPublicKey and DSACertificateExtensions::GetPrivateKey methods to retrieve DSA public and private keys. Fixes #11802 +14723 area-Infrastructure Updating CoreClr dependencies to servicing-24827-01 +14724 area-System.Runtime Add new API for collectible AssemblyLoadContext This is related to the undergoing work on coreclr: [Collectible assemblies and AssemblyLoadContext](https://github.com/dotnet/coreclr/pull/8677) I would like to add the following API to the `System.Runtime.Loader.AssemblyLoadContext`: ```csharp // Allow to create a Collectible ALC. The default constructor will call this method with false protected AssemblyLoadContext(bool isCollectible); // Returns true if this ALC is collectible public bool IsCollectible {get; } // Allows to explicitly unload an ALC. Once this method is called, // any call to LoadFromXXX method will throw an exception public void Unload(); ``` +14725 area-System.ComponentModel Delete EditorBrowsableAttribute and EditorBrowsableState from CoreFX (was moved to CoreCLR) dotnet/coreclr#8703 moved EditorBrowsableAttribute and EditorBrowsableState into System.Private.CoreLib.dll. We need to delete it from CoreFX repo ([file](https://github.com/dotnet/corefx/blob/9d0736e2abcfe7c82309cf33a57267a5e33fc8c9/src/System.Runtime/src/System/ComponentModel/EditorBrowsableAttribute.cs)) to avoid duplicate definition (see issue in https://github.com/dotnet/corefx/pull/14719#issuecomment-269377688). cc: @jkotas +14726 area-System.Runtime Update CoreClr, CoreFx, ProjectNTfs to beta-24827-03, beta-24827-01, beta-24827-00, respectively (master) +14728 area-Meta Replace all apiset references with classic dll references [2 failures](https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1688/) in PR https://github.com/dotnet/corefx/pull/14726#issuecomment-269396959: **[System.IO.Pipes.Tests.NamedPipeTest_Specific.Windows_Get_NumberOfServerInstances_Succeed](https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1688/testReport/junit/System.IO.Pipes.Tests/NamedPipeTest_Specific/Windows_Get_NumberOfServerInstances_Succeed/):**
MESSAGE: System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) +++++++++++++++++++ STACK TRACE: at System.IO.Pipes.Tests.Interop.GetNamedPipeHandleState(SafePipeHandle hNamedPipe, IntPtr lpState, Int32& lpCurInstances, IntPtr lpMaxCollectionCount, IntPtr lpCollectDataTimeout, StringBuilder lpUserName, Int32 nMaxUserNameSize) at System.IO.Pipes.Tests.Interop.TryGetNumberOfServerInstances(SafePipeHandle handle, Int32& numberOfServerInstances) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.Pipes\tests\Interop.cs:line 58 at System.IO.Pipes.Tests.NamedPipeTest_Specific.d__5.MoveNext() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.Pipes\tests\NamedPipeTests\NamedPipeTest.Specific.cs:line 185 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

**[System.IO.Pipes.Tests.NamedPipeTest_Specific.Windows_GetImpersonationUserName_Succeed](https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/1688/testReport/junit/System.IO.Pipes.Tests/NamedPipeTest_Specific/Windows_GetImpersonationUserName_Succeed/):**
``` MESSAGE: System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) +++++++++++++++++++ STACK TRACE: at System.IO.Pipes.Tests.Interop.GetNamedPipeHandleState(SafePipeHandle hNamedPipe, IntPtr lpState, Int32& lpCurInstances, IntPtr lpMaxCollectionCount, IntPtr lpCollectDataTimeout, StringBuilder lpUserName, Int32 nMaxUserNameSize) at System.IO.Pipes.Tests.Interop.TryGetImpersonationUserName(SafePipeHandle handle, String& userName) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.Pipes\tests\Interop.cs:line 44 at System.IO.Pipes.Tests.NamedPipeTest_Specific.d__6.MoveNext() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.Pipes\tests\NamedPipeTests\NamedPipeTest.Specific.cs:line 207 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ```
+14729 area-System.Linq Run the selector on Skipped items. It seems that while we can do certain optimization based on the known size of the resulting sequence after `Skip` is applied, but not running selectors on skipped items during enumeration is observable and could be unexpected. The following queries seem to have subtly different meaning - `list.Select(s).Skip(10)` `list.Skip(10).Select(s)` +14730 area-Infrastructure Instructions to work with local coreclr build and API changes on corefx This is related to the work on [collectible AssemblyLoadContext](https://github.com/dotnet/coreclr/pull/8677#issuecomment-269397257) on coreclr and the issue #14724 I have made changes to `System.Private.CoreLib` and I would like to add the relevant API changes to `AssemblyLoadContext.cs` in corefx and add tests against this API, using my local build of coreclr. So on my branch on corefx, I have started to update `AssemblyLoadContext.cs` with this new API. But it seems that `BUILDTOOLS_OVERRIDE_RUNTIME` is not taken when performing an APICompat with the API. We should be able to easily build corefx with a local coreclr and make changes to the ref API to use the new API introduced by the local coreclr. +14733 area-System.Runtime Add test for order of raising AssemblyLoadContext.Unloading and AppDo… …main.ProcessExit coreclr PR: https://github.com/dotnet/coreclr/pull/8737 +14735 area-Infrastructure Need the instruction about how to integrate corefx changes with my application. I have made some changes in corefx and build it. Now I have another .Net Core application which wants to use the changes I made in corefx. How to achieve that? Need some instructions. Thanks a lot! +14736 area-System.Diagnostics Test failure: System.Diagnostics.Tests.ProcessStartInfoTests/TestArgumentsProperty Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/TestArgumentsProperty` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Diagnostics.Tests.ProcessTestBase.Dispose(Boolean disposing) at System.IO.FileCleanupTestBase.Dispose() at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) Build : Master - 20161227.01 (Core Tests) Failing configurations: - OSX.1011.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161227.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FTestArgumentsProperty +14738 area-System.Linq [Linq] Lower LargeArrayBuilder's ResizeLimit "**Background:** `LargeArrayBuilder` has a ""resize limit"" after which it stops resizing its buffer and switches to using chunked arrays. I initially chose this limit to be 32 elements, because I didn't want it to be too small in case `sizeof(T)` was small, but also didn't want it to be too large in case `sizeof(T)` was large. **Description:** Since writing https://github.com/dotnet/corefx/pull/14020, I've come to realize that the 90% use case for Linq is with business objects / classes, and not with low-level stuff like bytes. Since reference types are 4/8 bytes wide, it makes sense to optimize for `T` being wider. This PR lowers the resize limit of `LargeArrayBuilder` from 32 -> 8 elements. **Performance improvements:** [gist](https://gist.github.com/jamesqo/641ab9dc63f5abcade39cd7453106afa) For reference types, there is a decrease of ~5 GCs for sizes 9-15, and ~10 GCs from 17-31 and 33+. Sizes 16 and 32 regress, which is expected since the array is now chunked at those sizes and the builder can't directly return it. cc @stephentoub, @JonHanna, @VSadov " +14739 area-System.Text Change expected behavior for reported parameter names. Companion to dotnet/coreclr#8727 Fixes those tests that were failing due to changes in coreclr argument names. Desktop skips added. Will fail until the clr used for testing changes, which would cause _other_ PRs to fail. (I dunno, should we make this sort of thing a two-step process in the future? Disable the tests in one, update the clr used, _then_ correct the tests? Or would a more elegant solution be to add a line in the comments for the bot to parse and pass to the build system...?) cc @jkotas , @AlexGhiondea +14740 area-System.Globalization Test failure: System.Globalization.Tests.GregorianCalendarGetDaysInMonth/GetDaysInMonth Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.GregorianCalendarGetDaysInMonth/GetDaysInMonth` has failed. System.TypeInitializationException : The type initializer for 'System.Globalization.Tests.GregorianCalendarTestUtilities' threw an exception.\r ---- System.IO.FileNotFoundException : Could not load file or assembly 'System.Globalization.Calendars, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Stack Trace: at System.Globalization.Tests.GregorianCalendarTestUtilities.RandomLeapYear() at System.Globalization.Tests.GregorianCalendarGetDaysInMonth.d__2.MoveNext() in D:\A\_work\37\s\corefx\src\System.Globalization.Calendars\tests\GregorianCalendar\GregorianCalendarGetDaysInMonth.cs:line 20 at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() ----- Inner Stack Trace ----- at System.Globalization.Tests.GregorianCalendarTestUtilities..cctor() Build : Master - 20161227.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20161227.01/workItem/System.Globalization.Calendars.Tests/analysis/xunit/System.Globalization.Tests.GregorianCalendarGetDaysInMonth~2FGetDaysInMonth Failed Tests: System.Globalization.Tests.GregorianCalendarGetDaysInMonth/GetDaysInMonth System.Globalization.Tests.GregorianCalendarGetEra/GetEra System.Globalization.Tests.GregorianCalendarGetMonthsInYear/GetMonthsInYear System.Globalization.Tests.GregorianCalendarGetYear/GetYear +14742 area-System.Security TestPublicKey_Key_RSA failed in CI https://github.com/dotnet/corefx/pull/14732 ``` System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.TestPublicKey_Key_RSA [FAIL] Assert.Equal() Failure Expected: Byte[] [232, 175, 92, 162, 32, ...] Actual: Byte[] [0, 0, 0, 0, 0, ...] Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.Security.Cryptography.X509Certificates/tests/PublicKeyTests.cs(212,0): at System.Security.Cryptography.X509Certificates.Tests.PublicKeyTests.VerifyKey_RSA(RSA rsa) Finished: System.Security.Cryptography.X509Certificates.Tests === TEST EXECUTION SUMMARY === /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/Tools/tests.targets(271,5): warning : System.Security.Cryptography.X509Certificates.Tests Total: 572, Errors: 0, Failed: 1, Skipped: 0, Time: 2.028s [/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj] ``` @bartonjs @steveharter theories? +14745 area-System.Security X509Certificate2: Access Denied opening pfx store, if logged on using PowerShell remoting "Scenario: You're running a .NET Core program on a remote server. You are connected to that server using PowerShell remoting (i.e. via `Enter-PSSession (...)`). The remote server is not joined to a domain. In this scenario, the `X505Certificate2(string, string)` constructor fails to open a `.pfx` file with an Access Denied error message. I ended up in this scenario because I'm running a Jenkins agent on a Windows Nano Server installation, and I've launched the Jenkins agent via remoting. The following program (given you have a valid `. pfx` file and update the password): ```c# using System; using System.Security.Cryptography.X509Certificates; class Program { static void Main(string[] args) { var cert = new X509Certificate2(""certificate.pfx"", ""password"" ); } } ``` results in the following output: ``` [localhost]: PS C:\Users\jenkins\test2> ..\dotnet\dotnet.exe run ..\dotnet\dotnet.exe : + CategoryInfo : NotSpecified: (:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError Unhandled Exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Access denied at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, String password, PfxCertStoreFlags pfxCertStoreFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at Program.Main(String[] args) ``` This looks similar to #6629 which was closed because it could not be reproduced. /cc @bartonjs " +14747 area-System.Runtime Don't handle exceptions when raising Unloading and ProcessExit events The desktop behavior is to catch exceptions from each callback invocation and have the `UnhandledException` event be raised for each exception. Regardless of exceptions, all callbacks are still invoked. The desired behavior is that exceptions are not caught. `AppDomain.ProcessExit` and `AssemblyLoadContext.Unloading` are typically raised from the finalizer thread, so an unhandled exception from any handler is expected to crash the process. +14748 area-System.ComponentModel RequiredAttribute ErrorMessage and DefaultErrorMessage null by default The `ErrorMessage` and `DefaultErrorMessage` properties are used by `ValidationAttributeAdapter.GetErrorMessage` to obtain the localized error message. As the properties are null by default, another mechanism is used and the localization works inconsistently. `EmailAddressAttribute`, on the other hand, has the `DefaultErrorMessage` property set by default. Please make `RequiredAttribute` have the `DefaultErrorMessage` set as well. +14750 area-System.Runtime System.Uri(string uriBase, string uriRelative) does not work properly if uriRelative contains special characters "[This test](https://github.com/dotnet/corefx/blob/a7d6c2c5fbf870092535b6e70e25c97c2187f959/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XslCompiledTransform.cs#L3877) fails on Linux with error: `""System.ArgumentOutOfRangeException : Length cannot be less than zero""` Here's a smaller repro of the issue on Linux (defining `XmlNullResolver` locally): ``` string uriRelative = ""Stra%C3%9Fe.xml""; Uri uriResolved = XmlNullResolver.Singleton.ResolveUri(null, uriRelative); Console.WriteLine(""uriResolved = "" + uriResolved); ``` which results in the following failure: ``` System.ArgumentOutOfRangeException: Length cannot be less than zero. Parameter name: length Stack trace: at System.String.Substring(Int32 startIndex, Int32 length) at System.Uri.CreateHostStringHelper(String str, UInt16 idx, UInt16 end, Flags& flags, String& scopeId) at System.Uri.CreateHostString() at System.Uri.GetComponentHelper(UriComponents uriComponents, UriFormat uriFormat) at System.Uri.ToString() at System.String.Concat(Object arg0, Object arg1) .../corefx/src/System.Private.Xml/tests/Xslt/XslCompiledTransform.cs(3394,0): at System.Xml.Tests.CTransformRegressionTest.RegressionTest1(XslInputType xslInputType, ReaderType readerType, OutputType outputType, NavType navType) ``` Please note that the presence of special character in `uriRelative` is causing this failure. " +14752 area-Microsoft.CSharp Passing dynamic arg to indexer property of a generic type implementing a derived interface throws "Yes, that's a mouthful, but it's the simplest way I've been able to reproduce this! There seems to be a limitation (bug?) in RuntimeBinder when it tries to call an indexed property on an interface through a ""derived"" interface. It appears that the RuntimeBinder doesn't see the indexed property of the ""base"" interface and throws an exception: ``` Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot apply indexing with [] to an expression of type 'ConsoleApplication1.IFakeStringLocalizer2' at CallSite.Target(Closure, CallSite, IFakeStringLocalizer2, Object) at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0, T1, TRet](CallSite site, T0 arg0, T1 arg1) at ConsoleApplication1.Program.Main(String[] args) in Program.cs:line 17 ``` Long story short, here's the simplest code I've been able to make that reproduces the problem. It's very subtle and I've made a note wherever there are critical parts of the code. ```c# namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // The *declared* type of this variable is IMPORTANT. Change it to the concrete type and it works IFakeStringLocalizer2 s = new FakeStringLocalizer(); dynamic d = new object(); // This next line of code throws at runtime: //Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot apply indexing with [] to an expression of type 'ConsoleApplication1.IFakeStringLocalizer2' // at CallSite.Target(Closure, CallSite, IFakeStringLocalizer2, Object) // at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0, T1, TRet](CallSite site, T0 arg0, T1 arg1) // at ConsoleApplication1.Program.Main(String[] args) in Program.cs:line 17 var x = s[d]; } } // The generic type here DOES seem to matter. public class FakeStringLocalizer : IFakeStringLocalizer2 { public int this[int b] { get { return -1; } } } // This extra interface DOES seem to matter. public interface IFakeStringLocalizer2 : IFakeStringLocalizer { } public interface IFakeStringLocalizer { // Return type and indexer arg type don't matter here int this[int b] { get; } } } ``` Originally filed here: https://github.com/aspnet/Localization/issues/308 " +14754 area-System.Console "Test failure: ConsoleEncoding/TestEncoding(inputString: \""This is Ascii string\"")" "Opened on behalf of @Jiayili1 The test `ConsoleEncoding/TestEncoding(inputString: \""This is Ascii string\"")` has failed. System.NotSupportedException : Memory stream is not expandable. Stack Trace: at System.IO.__Error.MemoryStreamNotExpandable() at System.IO.MemoryStream.set_Capacity(Int32 value) at System.IO.MemoryStream.EnsureCapacity(Int32 value) at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) at System.IO.StreamWriter.Dispose(Boolean disposing) at System.IO.TextWriter.Dispose() at ConsoleEncoding.TestEncoding(String inputString) Build : Master - 20161228.03 (Core Tests) Failing configurations: - Windows.81.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161228.03/workItem/System.Console.Tests/analysis/xunit/ConsoleEncoding~2FTestEncoding(inputString:%20%5C%22This%20is%20Ascii%20string%5C%22)" +14756 area-System.Data Tests under 'System.Data.SqlClient.Tests' failed with System.TypeInitializationException Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests` has failed. Assert.Throws() Failure\r Expected: typeof(System.Data.SqlClient.SqlException)\r Actual: typeof(System.TypeInitializationException): The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. Stack Trace: at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.SqlClient.Tests.ExceptionTest.GenerateConnectionException(String connectionString) at System.Data.SqlClient.Tests.ExceptionTest.<>c__DisplayClass5_0.b__0() Build : Master - 20161228.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161228.03/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.ExceptionTest~2FExceptionTests Failed tests: System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests System.Data.SqlClient.Tests.ExceptionTest/IndependentConnectionExceptionTestOpenConnection System.Data.SqlClient.Tests.SqlConnectionBasicTests/ConnectionTest System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_NonGeneric_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_NonGeneric_Throws System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/CopyTo_Throws System.Data.SqlClient.Tests.SqlErrorCollectionTest/GetEnumerator_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/Indexer_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/Indexer_Throws System.Data.SqlClient.Tests.SqlErrorCollectionTest/IsSynchronized_Success System.Data.SqlClient.Tests.SqlErrorCollectionTest/SyncRoot_Success +14757 area-System.Data Tests under System.Data.SqlClient.Tests.TcpDefaultForAzureTest failed with Xunit.Sdk.TrueException Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNoProtocolConnectionTest` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.AzureNoProtocolConnectionTest() Build : Master - 20161228.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161228.03/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.TcpDefaultForAzureTest~2FAzureNoProtocolConnectionTest Failed tests: System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNoProtocolConnectionTest System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNpConnectionTest System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureTcpConnectionTest System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureNoProtocolConnectionTestOnWindows System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureNpConnectionTest System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureTcpConnectionTest +14758 area-System.Diagnostics Test System.Diagnostics.Tests.ProcessTests/TestMaxWorkingSet failed with System.DllNotFoundException Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessTests/TestMaxWorkingSet` has failed. System.DllNotFoundException : Unable to load DLL 'api-ms-win-core-memory-l1-1-1.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.Diagnostics.Tests.Interop.GetProcessWorkingSetSizeEx(SafeProcessHandle hProcess, IntPtr& lpMinimumWorkingSetSize, IntPtr& lpMaximumWorkingSetSize, UInt32& flags) at System.Diagnostics.Tests.ProcessTests.TestMaxWorkingSet() Build : Master - 20161228.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161228.03/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FTestMaxWorkingSet Failed tests: System.Diagnostics.Tests.ProcessTests/TestMinWorkingSet +14760 area-System.Data DbConnection.Dispose() stopped calling DbConnection.Close() in DataSet commit The behavior changed in https://github.com/dotnet/corefx/commit/7888677b3c53596085c2fa53860d9a0519eeecfd#diff-d7bff8835e6985ab9107a59a282e1a60L153 which made `DbConnection` inherit the `Dispose()` implementation from `Component`. It triggered a failure in an EF Core test (see https://github.com/aspnet/EntityFramework/pull/7323). I am creating this issue so that the SqlClient team has a chance to figure out if this change is intentional. +14763 area-System.Runtime [Wip] Add API and Tests for Collectible Assemblies and AssemblyLoadContext This is a first set of tests for collectible assemblies. This is related to adding new API for corefx #14724 and the undergoing work on the coreclr PR [Collectible Assemblies and AssemblyLoadContext](https://github.com/dotnet/coreclr/pull/8677) This is still a WIP. I'm adding these tests for a followup with the PR on coreclr. cc: @jkotas @gkhanna79 @kouvel @rahku +14764 area-Infrastructure Catch failures in dev/eng branch Traversal has changed. ErrorAndContinue was hiding build failures. - https://github.com/dotnet/corefx/issues/14581 Move project annotation into buildvertical.targets, should be easier to move this code around with parts of it not in build.proj. Update system.memory configuration /cc @ericstj @weshaggard @mellinoe +14765 area-Infrastructure Change pb_officialbuildid to officialbuildid +14766 area-Infrastructure Change pb_sourceversion variable to sourceversion +14767 area-System.Net Harden System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds and GetAsync_UnsupportedSSLVersion_Throws "These two tests account for 78 CI failures from Dec 1 - 28 which is 10% of System.Net* failures. Assuming the tests fail because they access www.ssllabs.com which (apparently) is not reliable. However, since the failures are coming mostly from centos that needs to be taken into consideration as a cause as well. If the failures are due to www.ssllabs.com being unreliable, we should add a check to ensure the web site is available before invoking it for the test. Or come up with some other similar mechanism to reduce CI failures. ```` Test Case: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds(name: \""TLSv1.2\"", url: \""https://www.ssllabs.com:10303/\"") Failed Jenkins Jobs Build Number Machine Name Date dotnet_corefx/master/outerloop_centos7.1_release 28 centos71-20160609-1-outer39e350 12/01 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 29 centos71-20160609-1-outer5140a0 12/01 07:53 AM dotnet_corefx/master/outerloop_centos7.1_release 29 centos71-20160609-1-outerf7e7a0 12/02 04:33 PM dotnet_corefx/master/outerloop_centos7.1_debug 30 centos71-20160609-1-outer8e8da0 12/02 07:53 AM dotnet_corefx/master/outerloop_centos7.1_release 30 centos71-20160609-1-outerec3110 12/03 04:32 PM dotnet_corefx/master/outerloop_centos7.1_release 31 centos71-20160609-1-outere07ae0 12/04 04:33 PM dotnet_corefx/master/outerloop_centos7.1_debug 32 centos71-20160609-1-outer772080 12/04 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 33 centos71-20160609-1-outer6b69f0 12/05 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 32 centos71-20160609-1-outerc90b80 12/06 04:32 PM dotnet_corefx/master/outerloop_centos7.1_release 33 centos71-20160609-1-outerbd57a0 12/07 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 34 centos71-20160609-1-outer53fda0 12/07 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 34 centos71-20160609-1-outerb19300 12/08 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 35 centos71-20160609-1-outer484710 12/08 07:52 AM dotnet_corefx/master/outerloop_opensuse13.2_debug 35 suse132-20160315-outer6a28c0 12/08 05:14 PM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_debug 4 centos71-20160609-1-outer43c870 12/08 09:35 PM dotnet_corefx/master/outerloop_centos7.1_release 35 centos71-20160609-1-outera5ea80 12/09 04:32 PM dotnet_corefx/master/outerloop_centos7.1_release 36 centos71-20160609-1-outera7cb80 12/10 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 37 centos71-20160609-1-outer30d750 12/10 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 37 centos71-20160609-1-outer9c2310 12/11 04:34 PM dotnet_corefx/master/outerloop_centos7.1_debug 38 centos71-20160609-1-outer2f2700 12/11 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 38 centos71-20160609-1-outer8deec0 12/12 12:19 PM dotnet_corefx/master/outerloop_centos7.1_debug 39 centos71-20160609-1-outer237070 12/12 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 40 centos71-20160609-1-outer86f110 12/12 12:14 PM dotnet_corefx/master/outerloop_centos7.1_release 39 centos71-20160609-1-outer84a7e0 12/13 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 41 centos71-20160609-1-outer5df8f0 12/13 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 41 centos71-20160609-1-outer3162b0 12/15 04:30 PM dotnet_corefx/master/outerloop_centos7.1_debug 43 centos71-20160609-1-outer4ccf70 12/15 07:52 AM dotnet_corefx/master/outerloop_opensuse42.1_release 42 suse421-20160920-outer71c900 12/16 12:46 PM dotnet_corefx/master/outerloop_centos7.1_debug 44 centos71-20160609-1-outerf495c0 12/16 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 43 centos71-20160609-1-outer578200 12/17 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 45 centos71-20160609-1-outere8df40 12/17 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 44 centos71-20160609-1-outer4a24b0 12/18 04:34 PM dotnet_corefx/master/outerloop_centos7.1_debug 46 centos71-20160609-1-outere26360 12/18 07:56 AM dotnet_corefx/master/outerloop_centos7.1_release 45 centos71-20160609-1-outer7e37d0 12/20 04:30 PM dotnet_corefx/master/outerloop_centos7.1_debug 47 centos71-20160609-1-outercaf640 12/20 07:56 AM dotnet_corefx/master/outerloop_centos7.1_release 46 centos71-20160609-1-outer2d8f90 12/21 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 49 centos71-20160609-1-outerb854b0 12/22 07:52 AM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_debug 5 centos71-20160609-1-outerb04220 12/22 09:33 PM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release 5 centos71-20160609-1-outere5a090 12/22 05:19 AM dotnet_corefx/master/outerloop_centos7.1_release 48 centos71-20160609-1-outer199a30 12/23 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 50 centos71-20160609-1-outerb75f40 12/23 07:53 AM dotnet_corefx/master/outerloop_centos7.1_debug 51 centos71-20160609-1-outer897c50 12/26 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 52 centos71-20160609-1-outer720f40 12/28 07:53 AM ```` ```` Test Case: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds(name: \""TLSv1.1\"", url: \""https://www.ssllabs.com:10302/\"") Failed Jenkins Jobs Build Number Machine Name Date dotnet_corefx/master/outerloop_centos7.1_release 28 centos71-20160609-1-outer39e350 12/01 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 29 centos71-20160609-1-outer5140a0 12/01 07:53 AM dotnet_corefx/master/outerloop_centos7.1_release 29 centos71-20160609-1-outerf7e7a0 12/02 04:33 PM dotnet_corefx/master/outerloop_centos7.1_debug 30 centos71-20160609-1-outer8e8da0 12/02 07:53 AM dotnet_corefx/master/outerloop_centos7.1_release 30 centos71-20160609-1-outerec3110 12/03 04:32 PM dotnet_corefx/master/outerloop_centos7.1_release 31 centos71-20160609-1-outere07ae0 12/04 04:33 PM dotnet_corefx/master/outerloop_centos7.1_debug 32 centos71-20160609-1-outer772080 12/04 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 33 centos71-20160609-1-outer6b69f0 12/05 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 32 centos71-20160609-1-outerc90b80 12/06 04:32 PM dotnet_corefx/master/outerloop_centos7.1_release 33 centos71-20160609-1-outerbd57a0 12/07 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 34 centos71-20160609-1-outer53fda0 12/07 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 34 centos71-20160609-1-outerb19300 12/08 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 35 centos71-20160609-1-outer484710 12/08 07:52 AM dotnet_corefx/master/outerloop_opensuse13.2_debug 35 suse132-20160315-outer6a28c0 12/08 05:14 PM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_debug 4 centos71-20160609-1-outer43c870 12/08 09:35 PM dotnet_corefx/master/outerloop_centos7.1_release 35 centos71-20160609-1-outera5ea80 12/09 04:32 PM dotnet_corefx/master/outerloop_centos7.1_release 36 centos71-20160609-1-outera7cb80 12/10 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 37 centos71-20160609-1-outer30d750 12/10 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 37 centos71-20160609-1-outer9c2310 12/11 04:34 PM dotnet_corefx/master/outerloop_centos7.1_debug 38 centos71-20160609-1-outer2f2700 12/11 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 38 centos71-20160609-1-outer8deec0 12/12 12:19 PM dotnet_corefx/master/outerloop_centos7.1_debug 39 centos71-20160609-1-outer237070 12/12 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 40 centos71-20160609-1-outer86f110 12/12 12:14 PM dotnet_corefx/master/outerloop_centos7.1_release 39 centos71-20160609-1-outer84a7e0 12/13 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 41 centos71-20160609-1-outer5df8f0 12/13 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 41 centos71-20160609-1-outer3162b0 12/15 04:30 PM dotnet_corefx/master/outerloop_centos7.1_debug 43 centos71-20160609-1-outer4ccf70 12/15 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 44 centos71-20160609-1-outerf495c0 12/16 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 43 centos71-20160609-1-outer578200 12/17 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 45 centos71-20160609-1-outere8df40 12/17 07:52 AM dotnet_corefx/master/outerloop_centos7.1_release 44 centos71-20160609-1-outer4a24b0 12/18 04:34 PM dotnet_corefx/master/outerloop_centos7.1_debug 46 centos71-20160609-1-outere26360 12/18 07:56 AM dotnet_corefx/master/outerloop_centos7.1_release 45 centos71-20160609-1-outer7e37d0 12/20 04:30 PM dotnet_corefx/master/outerloop_centos7.1_debug 47 centos71-20160609-1-outercaf640 12/20 07:56 AM dotnet_corefx/master/outerloop_centos7.1_release 46 centos71-20160609-1-outer2d8f90 12/21 04:32 PM dotnet_corefx/master/outerloop_centos7.1_debug 49 centos71-20160609-1-outerb854b0 12/22 07:52 AM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_debug 5 centos71-20160609-1-outerb04220 12/22 09:33 PM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release 5 centos71-20160609-1-outere5a090 12/22 05:19 AM dotnet_corefx/master/outerloop_centos7.1_release 48 centos71-20160609-1-outer199a30 12/23 04:35 PM dotnet_corefx/master/outerloop_centos7.1_debug 50 centos71-20160609-1-outerb75f40 12/23 07:53 AM dotnet_corefx/master/outerloop_centos7.1_debug 51 centos71-20160609-1-outer897c50 12/26 07:52 AM dotnet_corefx/master/outerloop_centos7.1_debug 52 centos71-20160609-1-outer720f40 12/28 07:53 AM ```` ```` Test Case: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds(name: \""TLSv1.0\"", url: \""https://www.ssllabs.com:10301/\"") Failed Jenkins Jobs Build Number Machine Name Date dotnet_corefx/master/outerloop_opensuse13.2_debug 35 suse132-20160315-outer6a28c0 12/08 05:14 PM dotnet_corefx/master/outerloop_opensuse42.1_release 42 suse421-20160920-outer71c900 12/16 12:46 PM dotnet_corefx/master/outerloop_rhel7.2_debug 47 rhel72-20160412-1-outer980a50 12/17 06:56 PM ```` ```` Test Case: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds(name: ""TLSv1.0"", url: ""https://www.ssllabs.com:10301/"") Failed Jenkins Jobs Build Number Machine Name Date dotnet_corefx/release_1.1.0/outerloop_rhel7.2_release 10 rhel72-20160412-1-outer8e7030 12/10 02:45 PM ```` ```` est Case: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_UnsupportedSSLVersion_Throws(name: \""SSLv3\"", url: \""https://www.ssllabs.com:10300/\"") Failed Jenkins Jobs Build Number Machine Name Date dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_debug 4 centos71-20160609-1-outer43c870 12/08 09:35 PM dotnet_corefx/dev_apple_crypto/outerloop_rhel7.2_debug 4 rhel72-20160412-1-outer967bf0 12/09 12:18 AM dotnet_corefx/dev_apple_crypto/outerloop_rhel7.2_release 4 rhel72-20160412-1-outerf86c30 12/09 02:00 PM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_debug 5 centos71-20160609-1-outerb04220 12/22 09:33 PM dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release 5 centos71-20160609-1-outere5a090 12/22 05:19 AM dotnet_corefx/dev_apple_crypto/outerloop_rhel7.2_debug 5 rhel72-20160412-1-outer124e30 12/22 12:19 AM dotnet_corefx/dev_apple_crypto/outerloop_rhel7.2_release 5 rhel72-20160412-1-outer743060 12/22 02:00 PM ```` Typical errors: ```` System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds(name: \""TLSv1.0\"", url: \""https://www.ssllabs.com:10301/\"") (from (empty)) Failing for the past 1 build (Since Failed#47 ) Took 1.4 sec. Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) +++++++++++++++++++ STACK TRACE: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__6.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 127 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ```` ```` System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds(name: \""TLSv1.2\"", url: \""https://www.ssllabs.com:10303/\"") (from (empty)) Failing for the past 5 builds (Since #1 ) Took 1 sec. Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : SSL connect error +++++++++++++++++++ STACK TRACE: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 380 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__6.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 127 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /mnt/resource/j/workspace/dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 643 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /mnt/resource/j/workspace/dotnet_corefx/dev_apple_crypto/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 857 ````" +14771 area-System.Net SslStream WriteAsync Implement WriteAsync for SslStream Resolves https://github.com/dotnet/corefx/issues/14698 +14772 area-System.Xml Test failure: System.Xml.Tests.Errata4/CreateElementsAndAttributesUsingXsltInline(param0: True, param1: NameStartChar) Opened on behalf of @Jiayili1 The test `System.Xml.Tests.Errata4/CreateElementsAndAttributesUsingXsltInline(param0: True, param1: NameStartChar)` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Xml.Tests.Errata4.CreateElementsAndAttributesUsingXsltInline(Object param0, Object param1) Build : Master - 20161230.01 (Core Tests) Failing configurations: - Centos.71.Amd64 - AnyCPU-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161230.01/workItem/System.Xml.Xsl.XslCompiledTransformApi.Tests/analysis/xunit/System.Xml.Tests.Errata4~2FCreateElementsAndAttributesUsingXsltInline(param0:%20True,%20param1:%20NameStartChar) +14774 area-System.Xml Add async XLinq document/element loading and saving This PR resolves https://github.com/dotnet/corefx/issues/2869. Merges https://github.com/dotnet/corefx/pull/2436 from future branch into master and exposes the new APIs for netcoreapp1.1. @danmosemsft @stephentoub @weshaggard +14775 area-System.Xml CI test failure: System.Xml.Tests.Errata4.TestXslTransform(param0: True, param1: NameChar) (from (empty)) ``` System.Xml.Tests.Errata4.TestXslTransform(param0: True, param1: NameChar) (from (empty)) Failing for the past 1 build (Since Failed#1633 ) Took 0.68 sec. Stacktrace MESSAGE: Assert.True() Failure\nExpected: True\nActual: False +++++++++++++++++++ STACK TRACE: at System.Xml.Tests.Errata4.TestXslTransform(Object param0, Object param1) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest@2/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/Errata4.cs:line 314 ``` Detected in #14692 by CI: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/1633/ +14776 area-Infrastructure Always use x64 for non-Windows CI runs We can't use x86 for non-Windows runs. These should always be x64. @chcosta +14777 area-Infrastructure "Use ""OSGroup"", not OS Name, to construct BuildConfiguration in netci.groovy" "`BuildConfiguration` should include an `OSGroup`, not the name of a particular OS. On Windows, these happened to be the same (""`Windows_NT`""), but it was broken for everything else. @chcosta " +14780 area-Infrastructure CleanAllProjects broken in dev/eng CleanAllProjects previously made use of FilterProjects, which is no longer present in dev/eng. This also means that rebuild is broken because it will call cleanall. +14781 area-System.Net Add SslStream test to verify WriteAsync is not blocked by an awaiting ReadAsync See https://github.com/dotnet/corefx/pull/14771/files#r94264181 +14782 area-System.Security System.Security.Claims cleanup for #4935 Claims clean up for https://github.com/dotnet/corefx/issues/4935 - Added solution file - Corrected resx strings. - Added readonly where appropriate. (Needed to move some Initialize() bodies into the ctor for this) - Fixed XML comments. - Removed unused RoleClaimProvider class. - Ported mono tests. They mostly test constructors but it is a start. ~~Probably still need an issue item open to improve them.~~ (https://github.com/dotnet/corefx/issues/6448) - Improved dictionary iteration. - Lazy create Claims.Properties and ClaimsIdentity.ExternalClaims. - Improved ClaimsIdentity.Claims when there are no external claims (common). - TODO comments removed. Some where about alternate design decisions. Most about limiting counts which would be a breaking change now. - General cleanup. In adding the tests I found that GenericIdentity can not be used with BinarySerializer. Any ClaimsIdentity with a Claim will throw and GenericIdentity always adds 1 claim. Not sure what the action item there is (cc @stephentoub) or if these classes just have the attributes and interfaces to match desktop? @brentschmaltz @venkat-raman251 @justinvp +14786 area-System.Runtime Type forwarding for ValueTuple to CoreCLR This is not ready for review yet. I mean to use this thread to ask some questions/clarifications. +14788 area-Infrastructure Fix arm builds Arm builds are failing in official builds because I didn't propagate the toolsetdir property when creating the new definitions +14790 area-System.Linq Request: Adding DebuggerDisplay/DebuggerTypeProxy to Grouping and Lookup "The current experience when seeing an `IGrouping` returned from Linq in debug view is not the best: ![groupingdebug](https://cloud.githubusercontent.com/assets/9159214/21580324/1b843c60-cfbb-11e6-879f-b3ade4f1c384.PNG) Maybe we should add `DebuggerTypeProxy` / `DebuggerDisplay` attributes to `Grouping` so that it's easier to navigate in debug? This is a semi-API proposal since it'll be seen by end-users, so I'll spell out the display format/property names I'm thinking of: ```cs [DebuggerDisplay(""Key = {Key}"")] [DebuggerTypeProxy(typeof(GroupingDebuggerProxy<,>))] public class Grouping : IGrouping, IList { ... } internal sealed class GroupingDebuggerProxy { public TKey Key { get; } // The name of this property needs to alphabetically follow ""Key"" so it // shows up last when the Grouping is expanded. // It also doesn't matter because users will never see it, as it's RootHidden. [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public TElement[] Z { get; } } ``` cc @JonHanna @VSadov " +14791 area-Infrastructure Build errer without clean in linux When I build managed code in Ubuntu14.04 without clean, I get build fail with error messages ``` /nfs/rbp3/corefx/build.proj(203,5): error : Exact package 'NETStandard.Library2 2.0.0-beta-24801-0' was not restored: found '' /nfs/rbp3/corefx/build.proj(203,5): error : Exact package 'NETStandard.Library2 2.0.0-beta-24801-0' was not restored: found '' Command execution failed with exit code 1. ``` This error comes from `project.lock.json` generated in `System.Security.Cryptography.Xml`. To avoid this error, we need to build after clean, or option with /p:RestoreDuringBuild=false. +14792 area-Infrastructure Add debian.8-armel and tizen.4.0.0-armel into nupkg Signed-off-by: chunseoklee +14797 area-System.Runtime TimeZoneInfo.ToSerializedString/FromSerializedString do not round trip on Unix The following test passes on Windows but fails on Unix: ```c# public static IEnumerable SystemTimeZonesTestData() { foreach (TimeZoneInfo tz in TimeZoneInfo.GetSystemTimeZones()) { yield return new object[] { tz }; } } [Theory] [MemberData(nameof(SystemTimeZonesTestData))] public static void ToSerializedString_FromSerializedString_RoundTrips(TimeZoneInfo timeZone) { string serialized = timeZone.ToSerializedString(); TimeZoneInfo deserializedTimeZone = TimeZoneInfo.FromSerializedString(serialized); Assert.Equal(timeZone, deserializedTimeZone); Assert.Equal(serialized, deserializedTimeZone.ToSerializedString()); } ``` I believe it's due to how `GetAdjustmentRules` is implemented on Unix: https://github.com/dotnet/coreclr/blob/0a11492d52faa85c551761f8390be5de9d74e5ec/src/mscorlib/src/System/TimeZoneInfo.Unix.cs#L131-L153 vs. on Windows: https://github.com/dotnet/coreclr/blob/0a11492d52faa85c551761f8390be5de9d74e5ec/src/mscorlib/src/System/TimeZoneInfo.Win32.cs#L87 See #14795 Also, when you pass an `AdjustmentRule[]` array to `TimeZoneInfo.CreateCustomTimeZone` to create a custom instance of `TimeZoneInfo`, calling `GetAdjustmentRules` on Windows will always give you a cloned copy of the same adjustment rules, whereas on Unix it looks like it will modify the adjustment rules that are returned. +14798 area-System.Collections Cleanup ImmutableArray tests This is still WIP, but since it's a rather large PR and almost finished I thought I'd submit it. There are still a few TODOs floating around, but feel free to review. **Changes:** - Theorize most of the tests to make it easier to add new test cases - Segregate tests that assert equality from tests that check exceptions - Standardize method/variable naming to make tests easier to read - Fill in some gaps in the tests - Test more explicit interface implementations - Run methods that accept comparers over a variety of comparers - Run methods that accept collections over a variety of collections (arrays, lists, `IList`, lazy enumerables, etc.) - General cleanup - Replace `Assert.Equal(immutableArray1, immutableArray2)` with `Assert.True(immutableArray1 == immutableArray2)` - This has a poorer stack trace, but it makes it more explicit that we're testing reference equality **Note:** I tried to keep many of the existing test cases we have, so that's why you'll see a lot of (sometimes redundant) cases in the MemberData. /cc @AArnott @ianhays @stephentoub +14803 area-Infrastructure Use armel instead of arm-softfp Signed-off-by: chunseoklee +14804 area-Infrastructure Test failure: CancelKeyPressTests/CanAddAndRemoveHandler_Remote Opened on behalf of @jiangzeng The test `CancelKeyPressTests/CanAddAndRemoveHandler_Remote` has failed. System.TypeInitializationException : The type initializer for 'System.Diagnostics.RemoteExecutorTestBase' threw an exception.\r ---- System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.Diagnostics.RemoteExecutorTestBase..ctor() at CancelKeyPressTests..ctor() ----- Inner Stack Trace ----- at System.Runtime.InteropServices.OSPlatform.get_Windows() at System.Diagnostics.RemoteExecutorTestBase..cctor() in D:\A\_work\55\s\corefx\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 19 Build : Master - 20170102.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170102.02/workItem/System.Console.Tests/analysis/xunit/CancelKeyPressTests~2FCanAddAndRemoveHandler_Remote +14806 area-System.IO Add signature to allow user to specify overwrite on decompress Fix https://github.com/dotnet/corefx/issues/8146 I grabbed @OperatorOverload's commit (since it had been a while) and finished it. Except, I can't figure out the magic combination of project.json, csproj, etc that will allow the tests to build. Can someone help? @OperatorOverload +14809 area-System.Numerics Fix XMLdoc for Vector Inequality. "The != operator claims that it ""Returns a value that indicates whether any single pair of elements in the specified vectors is equal."" which is a copy-paste error from Vector.EqualsAny()." +14810 area-System.Collections Performance improvement: Make ConcurrentDictionary with Enum values also profit from atomic writes. Small change to extend the recently introduced performance improvements to the generic ConcurrentDictionary to Enum-value dictionaries, too. +14811 area-System.Net reenable APM based perf/stress tests @stephentoub @CIPop +14812 area-System.Net use SocketPal.GetLastSocketError instead of calling Marshal.GetLastWin32Error directly Add logic to SocketPal.GetLastSocketError to detect and fail if Marshal.GetLastWin32Error returns 0. Make sure the rest of the code uses GetLastSocketError instead of GetLastWin32Error directly. Addresses #5426. +14813 area-System.Net add SimpleContextAwareResult and use it instead of ContextAwareResult The existing ContextAwareResult is doing a bunch of things we don't need for System.Net.Sockets. In particular: (1) Trying to optimize ExecutionContext flow with closure caches. This is unnecessary now because EC flow is cheap. (2) Providing some locking and identity capture functionality, none of which is used in System.Net.Sockets. Replace this with SimpleContextAwareResult, simplifying the code and saving a few cycles/bytes here and there. Also add some tests for EC flow. @stephentoub @CIPop +14814 area-Meta Unable to read appsettings.jason data from Class Library "I am creating Class Library and in this I have to read configuration settings from Appsessting.Jason file but I am unable to read the data ,Please provide solution I have tried with adding reference to ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"" but it is throwing error." +14815 area-System.Collections ConcurrentDictionary: add ContainsValue() System.Collections.Generic.Dictionary features [`ContainsValue()`](https://github.com/dotnet/corefx/blob/v1.1.0/src/System.Collections/src/System/Collections/Generic/Dictionary.cs#L218). Would be nice to have the same method for [ConcurrentDictionary](https://github.com/dotnet/corefx/blob/v1.1.0/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs). +14818 area-System.Net Holding X509Certificate2 reference prior to HttpClientHandler causes access violation in ServerCertificateCustomValidationCallback "## Symptoms I would like to implement cert pinning in my own project. When a `System.Security.Cryptography.X509Certificates.X509Certificate2` was held, and a `ServerCertificateCustomValidationCallback` callback from a `System.Net.Http.HttpClientHandler` (or `WinHttpHandler` on Windows) was triggered from a request sent by `System.Net.Http.HttpClient`, `System.ExecutionEngineException` will be thrown. In native debug mode, an access violation was caught. **Update: This bug doesn't affect Linux platform.** Creating `System.Security.Cryptography.X509Certificates.X509Certificate2` object inside the callback will be a good workaround for this. ![Access violation](https://imbushuos3.azureedge.net/Snippets/Repro/AccessViolation.jpg) ![Callstack](https://imbushuos3.azureedge.net/Snippets/Repro/Callstack.jpg) ## Reproduce A 100% reproducible code repository is here: https://github.com/imbushuo/CertCheckAccessViolationRepro ```c# using System; using System.Net.Http; using System.Security.Cryptography.X509Certificates; public class ReproProgram { private static X509Certificate2 _cert; public static void Main(string[] args) { // Hold a reference of X509Certificate2 _cert = new X509Certificate2(""test.cer""); // Create a HTTP handler and repro the bug using (var clientHandler = new HttpClientHandler()) { clientHandler.ServerCertificateCustomValidationCallback = (msg, cert, chain, errors) => { return _cert.Thumbprint == cert.Thumbprint; }; using (var httpClient = new HttpClient(clientHandler)) { // Boom var req = httpClient.GetAsync(""https://imbushuo.net""); req.Wait(); } } Console.WriteLine(""Hello World!""); } } ```" +14820 area-Serialization Area-Serialization Sprint 112 The issue is for tracking issues to be done in sprint 112 (due by 1/20/2017). +14822 area-Infrastructure Fix casing for native binaries Native binary path is in 'Native'. https://github.com/dotnet/corefx/blob/dev/eng/src/Native/build-native.sh#L260 This is causing package builds to fail on Unix +14823 area-Infrastructure Execute tests with dotnet cli @weshaggard @ericstj @joperezr This works with @mellinoe changes to enable test builds, here is the branch I test with https://github.com/karajas/corefx/tree/adddotnetcli. I had to test with those changes since they introduce test folders in the bin dir. +14824 area-System.Net Issues in SslStream.WriteAsync Tracks addressing feedback in https://github.com/dotnet/corefx/pull/14771 added after the PR was already merged. Some of the issues noted look like they could be potentially significant. cc: @benaadams, @cipop +14825 area-Infrastructure Add ARM64 Build&Test to Jenkins This commit re-adds arm64 test builds to Jenkins using the same infrastructure that is being used in CoreCLR to submit runs to lab machines for execution. Most of the arm64_post_build.py logic is copied from the CoreCLR equivalent. This commit also fixes a bug with the Packages.zip generation (#14503) by making it ARM64 specific as the code is exclusively used for this build. resolves https://github.com/dotnet/corefx/issues/14503 cc: @jashook @gkhanna79 +14831 area-System.Net remove unnecessary use of AsyncResult in sync path for ReceiveMessageFrom Also, add some relevant tests @stephentoub @cipop @Priya91 +14833 area-System.Memory Span gets corrupted when accessing `Environment.StackTrace` multiple times in xunit test ### Repro: 1. Checkout https://github.com/pakrym/r/tree/span-corrupt 2. `dotnet restore `&& `dotnet test` in `src/SpanCorrupt` ### Expected: Calling Environment.StackTrace does not modify span: ``` BEFORE LOOP 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 1 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 2 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 3 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 4 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 5 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 6 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 7 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 8 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 9 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 10 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 11 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 12 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 13 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 14 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 15 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 16 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 17 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 18 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 19 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 20 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 21 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 22 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 23 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 24 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 25 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 26 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 27 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 28 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 29 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 30 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 31 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 ``` ### Actual Calling Environment.StackTrace modifies span: ``` 1 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 2 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 3 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 4 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 5 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 6 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 7 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 8 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 9 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 10 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 11 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 12 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 13 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 14 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 15 -- 72 101 97 100 101 114 58 118 97 108 117 101 13 10 13 10 16 -- 186 68 239 255 255 255 255 255 88 252 200 2 13 10 13 10 17 -- 186 68 239 255 255 255 255 255 88 252 200 2 13 10 13 10 18 -- 186 68 239 255 255 255 255 255 88 252 200 2 13 10 13 10 19 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 20 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 21 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 22 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 23 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 24 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 25 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 26 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 27 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 28 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 29 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 30 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 31 -- 121 0 115 0 116 0 101 0 109 0 46 0 80 0 114 0 ``` @davidfowl @KrzysztofCwalina +14834 area-Infrastructure Change how test references are resolved. "* When `NoTargetingPackReferences` is set to ""true"", no references are added to any assemblies in the targeting pack. * Names in the `RuntimeReferencedAssemblyNames` item group are now used to add items into the `ReferencePath` group. Absolute paths of runtime assemblies are added directly to the list, and `AssemblySearchPaths` is no longer modified at all when runtime assemblies are referenced. * Fix up System.Diagnostics.Debug.Tests and System.Linq.Expressions.Tests based on the above changes. Linq.Expressions.Tests no longer references its own src project, which should fix some race conditions in the build. * Unrelated cleanup in the System.Diagnostics.Debug test project. @joperezr @chcosta @weshaggard " +14836 area-Infrastructure Pass architecturegroup to build-managed Remove 'TestArchitecture' (I don't see it being used anywhere), and pass architecturegroup to build-managed. We have to pass the arch to both build-native and build-managed to ensure that we build and package the correct bits. /cc @weshaggard @ericstj +14837 area-System.Net Add test to ensure SslStream.ReadAsync() does not enqueue work before call to wrapped stream's BeginRead @stephentoub as discussed. Not sure if the title is good, feel free to change. +14838 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test/Manual_CertificateSentMatchesCertificateReceived_Success(numberOfRequests: 3, reuseClient: True) Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test/Manual_CertificateSentMatchesCertificateReceived_Success(numberOfRequests: 3, reuseClient: True)` has failed. System.Threading.Tasks.TaskCanceledException : A task was canceled. Stack Trace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_0.<b__2>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_2.<b__4>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170103.02 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170103.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test~2FManual_CertificateSentMatchesCertificateReceived_Success(numberOfRequests:%203,%20reuseClient:%20True) +14839 area-System.Threading Test failure: System.Threading.Tasks.Tests.Status.TaskStatusTests/TaskStatus3 Opened on behalf of @jiangzeng The test `System.Threading.Tasks.Tests.Status.TaskStatusTests/TaskStatus3` has failed. Expecting currrent Task status to be WaitingForChildren but getting RanToCompletion Expected: True Actual: False Stack Trace: at System.Threading.Tasks.Tests.Status.TaskStatusTest.RealRun() at System.Threading.Tasks.Tests.Status.TaskStatusTests.TaskStatus3() Build : Master - 20170103.02 (Core Tests) Failing configurations: - Suse.132.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170103.02/workItem/System.Threading.Tasks.Tests/analysis/xunit/System.Threading.Tasks.Tests.Status.TaskStatusTests~2FTaskStatus3 +14842 area-System.IO EnumerateWithSymLinkToDirectory test failed in CI https://ci.dot.net/job/dotnet_corefx/job/release_1.0.0/job/ubuntu14.04_release_prtest/50/consoleText ``` ln: failed to create symbolic link ‘/tmp/Directory_SetCurrentDirectory_SymLink_aqwlk5gn.co5/SetToPathContainingSymLink_53/2axwsu1e.4gg/qpehdv1o.3pd’: No such file or directory System.IO.Tests.DirectoryInfo_EnumDir_Str.EnumerateWithSymLinkToDirectory [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: at System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory() ``` +14843 area-Infrastructure Enable armel for CI script Signed-off-by: chunseoklee +14844 area-Infrastructure Add Tizen rootfs for armel Add a Tizen rootfs for armel and most of this commit is copied from CoreCLR. Signed-off-by: Hyung-Kyu Choi +14845 area-System.ComponentModel EnsureValidDataType should reject whitespaces in DataTypeAttribute.Cu… EnsureValidDataType should reject whitespaces in DataTypeAttribute.CustomDataType property because it is mandatory and it does not make sense that the property is whitespaces. Modify Ctor_String(string customDataType) test to validate whitespaces adding new InlineData. Fix #4465 +14846 area-Meta ApiSet dlls still used from native code According to the PR #13440, it was supposed to remove usage of apiset DLL but checking on a recent local build, `clrcompression.dll` typically imports `api-ms-win-crt-runtime-l1-1-0.dll` and `api-ms-win-crt-heap-l1-1-0.dll` We should probably remove using these DLLs there too. +14849 area-Infrastructure Setting exact assembly version when compiling I am using the following command to build the sources: `build.cmd -ConfigurationGroup=Release` However, I would like to set the exact version of the newly compiled libraries. By default, the compiler sets the version of the assemblies to 4.1.0.0, and I would like to set it to 4.0.0.0. How can I achieve that the **easiest** way? +14850 area-System.Runtime StreamOperationAsyncResult throws System.NullReferenceException when being finalized by the GC We have an issue where something after disposing a stream, we are getting an exception that is raised from the Finalizer thread, where the only method in the call stack is: `System.Runtime.WindowsRuntime.dll!System.IO.StreamOperationAsyncResult.CancelStreamOperation ` Inside this method, there is a check if the callback was invoked, and if not it's calling `_asyncStreamOperation.Close();` The code of the finalizer is the following: ` ~StreamOperationAsyncResult() { // This finalisation is not critical, but we can still make an effort to notify the underlying WinRT stream // that we are not any longer interested in the results: CancelStreamOperation(); } ` And the CancelStreamOperation method: ` internal bool CancelStreamOperation() { if (_callbackInvoked) return false; _asyncStreamOperation.Cancel(); return true; }` The only line that could cause the this method to throw NullReferenceException is the call to the Cancel method of _asyncStreamOperation, so the only fix that should be done is checking if _asyncStreamOperation null beforehand. ` _asyncStreamOperation?.Cancel();` Exception: System.NullReferenceException was unhandled Message: An unhandled exception of type 'System.NullReferenceException' occurred in System.Runtime.WindowsRuntime.dll Additional information: Object reference not set to an instance of an object. Current thread that throws the exception: Not Flagged > 5980 2 Worker Thread **GC Finalizer** Thread System.Runtime.WindowsRuntime.dll!System.IO.**StreamOperationAsyncResult.CancelStreamOperation** Highest [External Code] +14851 area-System.Runtime Fixing issue #14850 - Adding null check before calling _asyncStreamOp… Fixes issue: https://github.com/dotnet/corefx/issues/14850 +14852 area-System.Net Revert SslStream.WriteAsync, change SslStream to use innerStream.Read/WriteAsync First commit reverts the addition of SslStream.WriteAsync from #14771. We still want to override it, but the implementation needs more thought. Second commit fixes #14698. In .NET Core 1.x, SslStream's usage of Begin/EndRead/Write was actually using extension methods that just used TaskToApm.Begin/End with Read/WriteAsync. When the base Stream's Begin/EndRead/Write methods were added back, SslStream's usage of these methods started binding to the base methods, such that it was no longer using the inner stream's Read/WriteAsync. This change explicitly switches all of those calls (for both SslStream and NegotiateStream) to use Read/WriteAsync. A better solution is to actually add SslStream.Read/WriteAsync overrides that use async/await and tasks all the way down, rather than going back and forth between Tasks and APM, but that is a more complicated work item. This addressesses the immediate need (problems related to deadlocks on SslStream when read and writes are issued to run concurrently on the same stream) and can be undone or augmented subsequently when a better solution is available. This is at least as good performance-wise as what we had in .NET Core 1.x, and in some cases is a bit better, as we can avoid creating the IAsyncResult wrapper in some cases if the returned task is already completed. cc: @cipop, @benaadams, @cesarbs +14853 area-System.IO Idea: switch to libzip for ZIP archive implementation By way of introduction, I work on the Xamarin/Mono team at Microsoft (Xamarin.Android and, from time to time, a foray to the Mono BCL/runtime land) and we've been struggling with various issues related to ZIP archive support over the past few years. The main problem with all (as far as we can tell) managed implementations is that they implement only a subset of what's supported by the ZIP format and ignore parts that are important on non-Windows systems (especially all flavors of Unix). The biggest issue is lack of support for the extended Unix fields (described in the [PKWARE appnote](https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.3.TXT) as well as in [this document](https://github.com/grendello/LibZipSharp/blob/master/docs/extrafld.txt). Support for those fields is important because they make difference between special files and regular files as stored in the archive (that includes file permission bits on Unix). Another issue (less common but still occasionally relevant) is lack of support for symbolic links in managed libraries. Yet another problem is an occasional issue with even opening some ZIP archives (especially created with older versions of ZIP and friends) to the point that we had to resort to using the external `unzip` program to open some archives. For the record, the minimum set of extended fields that would need to be implemented is: `0x000d`, `0x5855`, `0x6375`, `0x7855`, `0x7875`, `0x5455` and symbolic links (which are stored as special files in the ZIP archive) To address those problems we decided to implement our own support for the ZIP archive and after looking around we chose [libzip](http://hg.nih.at/libzip/) as the base for our code. The library implements support for ZIP archive **format** while deferring (de)compression to the venerable zlib library (the same one corefx uses). libzip is cross-platform, works very well on both Unix and Windows systems, is (IMO) very well written and maintained, and uses a [permissive license](https://nih.at/libzip/LICENSE.html). It does **not** implement support for interpreting of the extended fields, merely supports writing/reading them as blobs of binary data. For that reason we created a [managed wrapper](https://github.com/grendello/LibZipSharp) around libzip which not only provides and object-oriented implementation of the libzip APIs but also implements support for the most important extended fields, as listed above. We've been using both libzip and libzipsharp in Xamarin.Android for a while now and found them to work without any issues. I think it would be great if corefx implemented full, cross-platform, support for ZIP archives and while it could be done in-house I think supporting (by using and contributing to) libzip is would be the best way to go, since many projects would benefit from a single, solid implementation of the ZIP archive format. +14855 area-System.Xml Many XML tests are outerloop... why? Lots of the XML test projects are outerloop. Why? It'd be great to a) consolidate them into fewer test projects, and b) make most or all of them innerloop, unless there's a really good reason to keep them outer. +14856 area-System.Xml XLinqTests.TreeManipulationTests.LoadFromStreamSanity failing all outerloop runs "The LoadOptionsLI and XE_LoadOptionsLI ""variations"" are now failing." +14857 area-System.Xml Disable several XLinq tests failing all outerloop runs https://github.com/dotnet/corefx/issues/14856 cc: @sepidehMS +14859 area-System.Numerics Remove an unused using from Vector.tt/cs This was removed in a previous PR (https://github.com/dotnet/corefx/pull/11600), but only from the .cs file. We need to remove it from the template source (Vector.tt) as well. +14860 area-Infrastructure Make buildproj package generation ARM64 specific The packages.zip generation in build.proj is only used in the ARM64 CI, but it isn't Platform specific. This is causing failures elsewhere. resolves https://github.com/dotnet/corefx/issues/14503 FYI: @MattGal +14861 area-System.IO Remove Debug Failures from FSW Win32 There are some Debug.Fail calls in the win32 FileSystemWatcher that can be hit in normal operation sometimes. We've already established a behavior for these scenarios (use null as the old/new names when they're not available), so we shouldn't be debug asserting that they're not possible. resolves https://github.com/dotnet/corefx/issues/14701 +14862 area-System.Console Fix Console Encoding test The test needed to handle the case when having encoding enabled to produce preamble bytes BOM (e.g. UTF8) calling Encoding.GetBytes doesn’t include the BOM while the console stream will include it. The fix is just handling the BOM when we'll have it. +14863 area-System.Xml Fix XLinqTests.TreeManipulation outerloop failures Fixes https://github.com/dotnet/corefx/issues/14856. The bug was introduced after https://github.com/dotnet/corefx/commit/b119ec518b1ccc13e420862ff68dfbbd3bfee28e. The problem was in case of `loadOption != LoadOptions.None`, wrong constructor of `ContentReader` was called, which did not set LineInfo as expected. cc: @stephentoub @danmosemsft +14864 area-System.Memory Issue #14833 - Disable build for fast span Temporarily disable fast span within the package until JIT work is done. The package should contain only slow span for now. Related to issue #14833 +14865 area-Infrastructure corefx should not depend on CRT dlls (on Windows desktop) "Followup of #14846 and the undergoing work with #14728, most of the runtime is going to use plain legacy OS functions which will make a self contained app quite portable. But there is still native components like `clrcompression.dll` that imports `api-ms-win-crt-runtime-l1-1-0.dll` and `api-ms-win-crt-heap-l1-1-0.dll`, making corefx dependent on an installed C runtime just for a few functions imported... This lead to problems like [""dll missing from your computer""](https://github.com/dotnet/cli/issues/5201) which is also [infamously popular for many other applications](https://www.google.com/search?q=missing+api-ms-win-crt-runtime-l1-1-0.dll) These native dlls are probably the last dlls in a repo that have a dependency to the CRT... removing these dependencies would make a self contained dotnetcore app runnable almost on any Windows OS. I can make a PR about this if you agree with the changes." +14866 area-Infrastructure Update CoreCLR dependencies in dev/eng I've also cherry-picked a commit to fix the test failures, see https://github.com/dotnet/corefx/pull/14840. @weshaggard @joperezr @chcosta +14867 area-Infrastructure [dev/eng] Better OSEnvironment detection "Right now, `$(OSEnvironment)` always defaults to ""Unix"" outside of Windows. Before this change, it essentially always has the exact same value as `$(OS)`. We have some logic in dir.props that is supposed to normalize the values to Windows/Unix, but .NET Core MSBuild already does that by default, so we aren't actually doing anything useful there anymore. This change makes dir.props default `$(OSEnvironment)` to a value representing one of our actual OSGroups: Windows_NT, Linux, or OSX. Places expecting ""Unix"" have been changed to just use `$(OS)`. We differentiate between Linux and OSX by checking for the existence of an OSX-specific folder. This allows you to simply run `msbuild /t:rebuildandtest ` and have it work, without needing to pass `/p:OSGroup=Linux/OSX` manually. @joperezr @weshaggard Roslyn.Common.props is unchanged except `$(OSEnvironment)` has been changed to `$(OS)`." +14868 area-Infrastructure AssemblyInfo for ref assemblies should not use AllowPartiallyTrustedCallersAttribute "While working on adding ref assemblies for `System.ValueTuple` (PR https://github.com/dotnet/corefx/pull/14786) I ran into this problem with the `portable-net40+sl4+win8+wp8` TargetGroup (which uses a PCL profile). From discussion with @ericstj and @weshaggard, it sounds like the `_AssemblyInfo.cs` file should not use `AllowPartiallyTrustedCallersAttribute` in the first place. I'm using a workaround to unblock my PR. This issue is meant to track the follow-up. ```C# using System; using System.Reflection; [assembly:System.Security.AllowPartiallyTrustedCallers] [assembly:System.Runtime.CompilerServices.ReferenceAssembly] [assembly:System.Reflection.AssemblyFlags((System.Reflection.AssemblyNameFlags)0x70)] [assembly:AssemblyTitle(""System.ValueTuple"")] [assembly:AssemblyDescription(""System.ValueTuple"")] [assembly:AssemblyDefaultAlias(""System.ValueTuple"")] [assembly:AssemblyCompany(""Microsoft Corporation"")] [assembly:AssemblyProduct(""Microsoft\x00ae .NET Framework"")] [assembly:AssemblyCopyright(""\x00a9 Microsoft Corporation. All rights reserved."")] [assembly:AssemblyVersion(""4.0.2.0"")] [assembly:AssemblyFileVersion(""4.6.24902.0"")] [assembly:AssemblyInformationalVersion(@""4.6.24902.0 built by: jcouv-JCOUVDEV. Commit Hash: 0f771c8a9a11b54e1f3feed43772a9fc7f6da983"")] [assembly:CLSCompliant(true)] [assembly:System.Reflection.AssemblyMetadata("".NETFrameworkAssembly"", """")] [assembly:System.Reflection.AssemblyMetadata(""Serviceable"", ""True"")] ``` from `C:\repos\corefx\bin\obj\ref\System.ValueTuple\4.0.2.0\portable-net40+sl4+win8+wp8\_AssemblyInfo.cs`" +14869 area-System.Threading System.Threading.Tasks.Dataflow needs version 4.5.24.0 on NuGet.org The lowest available release version of System.Threading.Tasks.Dataflow on NuGet.org is 4.5.25.0. This creates a problem when building / testing Visual Studio components as it ships with version 4.5.24.0. Can we get an official package for 4.5.24.0 uploaded to NuGet.org? This would simplify and give us greater confidence in our testing. +14870 area-System.Collections Replace Collections tests IsNetNative with SkipOn IsNetNative checks fail on full framework, so I just split the tests that use them into two tests and use the SkipOnTargetFramework Attribute instead. resolves https://github.com/dotnet/corefx/issues/14466 +14871 area-Infrastructure Allow to force static linking on Windows in Release This is related to the issue described on #14865 This PR allows to build a release binaries on Windows without linking to the uCRT by setting the env variable `CLR_CMAKE_WIN32_FORCE_STATIC_LINK` to `true` It is using the same variable as in the equivalent coreclr [PR#8807](https://github.com/dotnet/coreclr/pull/8807) +14872 area-Infrastructure Build a single library targeting a specific supported configuration Resolves https://github.com/dotnet/core-eng/issues/41 1. msbuild /p:BuildConfiguration=netstandard 2. Select netstandard-Windows_NT in configuration dropdown from VS and build. @weshaggard @chcosta @ericstj +14873 area-System.IO System.IO.Compression Cleanup Minor cleanup throughout. +14874 area-Infrastructure Can't build corefx on Linux Mint 18.1 "Hi, I tried to build corefx on Linux Mint 18.1 and got following error: > Installing dotnet cli... > Restoring BuildTools version 1.0.27-prerelease-01121-01... > Initializing BuildTools... > Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'linuxmint.18.1-x64'. Possible causes: > 1. The project has not been restored or restore failed - run `dotnet restore` > 2. The project does not list one of 'linuxmint.18.1-x64' in the 'runtimes' section. > 3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries. > ERROR: An error occured when trying to initialize the tools. Please check '/home/matekm/corefx/init-tools.log' for more details.1 Last command seen in init-tools.log is: ` Running: /home/matekm/corefx/Tools/dotnetcli/dotnet publish ""/home/matekm/corefx/packages/Microsoft.DotNet.BuildTools/1.0.27-prerelease-01121-01/lib/tool-runtime/project.json"" -f netcoreapp1.0 -r linuxmint.18.1-x64 -o /home/matekm/corefx/Tools ` In pkg/Microsoft.NETCore.Platforms/runtime.json I see some entries for linuxmint18, so I would assume corefx is supported for Mint. What am I doing wrong? " +14876 area-Infrastructure Replace API Set with Win32 DLL in tests API Sets are not available on Windows 7, thus tests need to import from Win32 DLL to run successfully on Windows 7. Resolves issue #14728. +14877 area-System.Xml Fix Xml and Xml.Linq Desktop test failures Fixes several Xml and Xml.Linq test failures on Desktop: https://github.com/dotnet/corefx/issues/13256 https://github.com/dotnet/corefx/issues/13257 https://github.com/dotnet/corefx/issues/13258 https://github.com/dotnet/corefx/issues/13259 https://github.com/dotnet/corefx/issues/13260 https://github.com/dotnet/corefx/issues/13305 Almost all of these were caused by behavioral changes only made on Core, so the tests are not supposed to run against Desktop. Other failures were problems in configuration of test `csproj`. cc: @danmosemsft @stephentoub @joperezr @ericstj +14879 area-Serialization DataContractResolver doesn't work on UWP The UWP App crashes in release mode when using the DataContractResolver in DataContractSerializer. +14885 area-Infrastructure Consider supporting OSX 10.10 (Yosemite) "Per [7731](https://github.com/dotnet/corefx/issues/7731) is was stated that: > 10.11 is our current minimum supported version of OS X. Older releases 10.9.x and 10.10.x are in limited ""Security updates and printer drivers only"" support from Apple. I can vouch that 10.10 does regularly receive security and application updates. The official NET Core install package even allows installation on 10.10. I'm not sure why 10.10 isn't supported unless it is build system issue. ``` OneDrive: Version: 17.3.6720 Source: 3rd Party Install Date: 12/16/16, 8:59 PM LastPass: Version: 3.18.0 Source: 3rd Party Install Date: 12/16/16, 8:59 PM Gatekeeper Configuration Data: Version: 107 Source: Apple Install Date: 12/17/16, 8:53 AM Security Update 2016-007: Version: 10.10.5 Source: Apple Install Date: 12/21/16, 4:01 AM OneDrive: Version: 17.3.6724 Source: 3rd Party Install Date: 12/25/16, 4:45 PM ```" +14887 area-System.Security Fix managed rebuild error without clean related issue: #14791 +14891 area-Meta Proposal: Disposables in CoreFx: SerialDisposable, CompositeDisposable, etc Moving here from https://github.com/Reactive-Extensions/Rx.NET/issues/309 Disposbles have a lot of uses in many libraries. Many libraries have created their own management and disposable aggregates to combine multiple disposable's. There might be an opportunity to move some of this logic in to CoreFX as a common library. A few questions: 1. Does this belong in CoreFX at all? 2. Should it be in a new library, `System.Disposables` or does it fit into an existing library? /cc @ghuntley @mattpodwysocki @rxdave +14894 area-System.IO timeout in FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock test On OSX, a one off CI failure https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/1799/testReport/junit/System.IO.Tests/FileSystemWatcherTests/FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock/ ``` System.IO.Tests.FileSystemWatcherTests.FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock (from (empty)) Failing for the past 1 build (Since Failed#1799 ) Took 3.5 sec. Stacktrace MESSAGE: Didn't observe a deleted event within 3000ms\nExpected: True\nActual: False +++++++++++++++++++ STACK TRACE: at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(WaitHandle eventOccurred, String eventName_NoRetry) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs:line 120 at System.IO.Tests.FileSystemWatcherTests.FileSystemWatcher_StopCalledOnBackgroundThreadDoesNotDeadlock() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.unit.cs:line 612 ``` +14897 area-System.Net "The server returned an invalid or unrecognized response"" error when using System.Net.Http.HttpClient" "Getting this bug into the right place: https://github.com/dotnet/core/issues/321 @corinas Hello, I am facing a problem when making concurrent requests to a web api when using dotnet core. Sometimes i'm getting the below error; the error is not happening all the time (usually it happens once or twice in 600 concurrent calls). ``` System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() ``` Here's the test method I use for testing: ```c# [Fact] public void PostToStardogParallelTaskWithSendAsync() { int x = 600; Task[] allTasks = new Task[x]; using (var httpClient = new HttpClient()) { var byteArray = Encoding.ASCII.GetBytes($""user:password""); for (int k = 0; k < 1; k++) { for (int i = 0; i < x; i++) { System.Diagnostics.Debug.WriteLine($""Starting tsk {i}...""); allTasks[i] = Task.Factory.StartNew(async (ii) => { var d = DateTime.Now; var query = $""INSERT DATA {{ . }}""; var content = new StringContent(query, Encoding.UTF8, ""application/sparql-update""); HttpRequestMessage rm = new HttpRequestMessage(HttpMethod.Post, ""MyStardogWebApiUrl""); rm.Headers.TryAddWithoutValidation(""accept"", ""text/boolean""); rm.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(""Basic"", Convert.ToBase64String(byteArray)); rm.Content = content; try { var response = await httpClient.SendAsync(rm); } catch (Exception e) { System.Diagnostics.Debug.WriteLine($""\nThe following exception have been thrown: {e}""); } System.Diagnostics.Debug.WriteLine($""Task {ii} ended in: {(DateTime.Now - d).TotalMilliseconds}.""); }, i).Unwrap(); } try { Task.WaitAll(allTasks); } catch (Exception e) { Console.WriteLine($""nThe following exception have been thrown: {e}""); } } } } ``` When this error occurs, the response looks like this: {StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: , Headers:{}} Calling the same method from a testing project that uses dotnet framework 4.5 does not cause any issue. Could you please advise? Thanks! Corina" +14903 area-System.Threading Allow fire and forget CancellationTokenRegisteration.Dispose Right now disposing a `CancellationTokenRegistration` will wait for pending callbacks to run if it's disposed on a separate thread from the callback itself. This can cause deadlocks for e.g.: https://github.com/aspnet/KestrelHttpServer/issues/1278 It would be nice to have a way to disable the blocking on dispose. It might require an API change. /cc @stephentoub --- EDIT 7/20/2017 from stephentoub: This is the proposed method to be added to CancellationTokenRegistration: ```C# public struct CancellationTokenRegistration { public void DisposeWithoutWaiting(); ... } ``` +14907 area-Infrastructure For full framework test build, pass in win-x64 as testnugetruntimeid This is because of the simple exact string match required by the FilterRuntimeForSupports. +14908 area-Serialization System.Xml.XmlSerializer 4.3.0 does not longer work with IEnumerable, prior versions did "I am working with @ellismg that has pushed my code into ""bleeding"" edge. At present, I'm building against NETStandard.Library 1.6.0, Microsoft.Net.Sdk 1.0.0-alpha-20161104-2, and, among other dependencies, System.Xml.XmlSerializer 4.3.0. My code now gets the following error deserializing that did not occur with System.Xml.XmlSerializer 4.0.11-* (note the __bold__): Exception occurred during start: HttpException: Uri(http://168.63.129.16/machine/1fb6fde7-d516-4ccf-b134-929f12f4d7e7/357c0978-2bd4-4547-9e8c-4557e73ed12c._u1404?comp=config&type=hostingEnvironmentConfig&incarnation=3) Method(GET) StatusCode(OK) Message(HttpRequest#FromXml failed) InnerExceptions(There was an error reflecting type 'Microsoft.Azure.Agent.Protocol.HostingEnvironmentConfig'.; There was an error reflecting property 'HostingEnvironmentSettings'.; There was an error reflecting type 'Microsoft.Azure.Agent.Protocol.HostingEnvironmentConfigHostingEnvironmentSettings'.; __To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy. System.Xml.XmlElement does not implement Add(System.Object).__) " +14911 area-Infrastructure In dev/eng, we need to be able to run desktop tests. Not a priority for merge. +14916 area-Infrastructure Update documentation to include how to configure builds Updates the documentation as well as config.json file with information on RuntimeOS and the different ways to configure BuildConfiguration. Cleans up InputOSGroup as it is no longer needed. @ericstj @chcosta @joperezr @mellinoe @karajas +14917 area-System.Console Test failure: ConsoleEncoding/TestEncoding "Opened on behalf of @jiangzeng The test `ConsoleEncoding/TestEncoding(inputString: \""This is string have surrogates 𐀀\"")` has failed. Assert.Equal() Failure\r ? (pos 31)\r Expected: ···ing have surrogates =ÉÇÇ\r Actual: ···ing have surrogates ??\r ? (pos 31) Stack Trace: at ConsoleEncoding.TestEncoding(String inputString) Build : Master - 20170105.02 (Core Tests) Failing configurations: - Windows.7.Amd64 - AnyCPU-Release - Windows.81.Amd64 - AnyCPU-Release - AnyCPU-Debug - Windows.10.Core.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170105.02/workItem/System.Console.Tests/analysis/xunit/ConsoleEncoding~2FTestEncoding(inputString:%20%5C%22This%20is%20string%20have%20surrogates%20%F0%90%80%80%5C%22)" +14918 area-System.Xml Test failure: System.Xml.Tests.TC_SchemaSet_XmlResolver/v4 & System.Xml.Tests.TC_SchemaSet_XmlResolver/v5 Opened on behalf of @jiangzeng The test `System.Xml.Tests.TC_SchemaSet_XmlResolver/v4` has failed. Assert.Equal() Failure Expected: 2 Actual: 1 Stack Trace: at System.Xml.Tests.TC_SchemaSet_XmlResolver.v4() Build : Master - 20170105.02 (Core Tests) Failing configurations: - Redhat.72.Amd64 - AnyCPU-Release - Centos.71.Amd64 - AnyCPU-Debug Tests failed: System.Xml.Tests.TC_SchemaSet_XmlResolver/v4 System.Xml.Tests.TC_SchemaSet_XmlResolver/v5 Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170105.02/workItem/System.Xml.XmlSchemaSet.Tests +14924 area-Meta Is it possible to read System.Type from an appsettings.json file in a .net core application "In my project i need to read the System.Type setting from appsettings.jason..but not able to read please look in to this . Here is my code: appsettings.jason: ""LogKafkaFactoryConfiguration"": { ""type"": ""SPGMI.Logging.NetCore.Kafka.Configuration.LogRdKafkaClientFactory, SPGMI.Logging.NetCore"" }, I want to read type and pass to below method..below code in .Net 452 _clientfactory = System.Activator.CreateInstance(LogConfiguration.GetInstance().Client.type) as IFactory; Samething needs to be odne .net core.." +14927 area-System.Xml [System.Xml.Private] Fixes compilation with NET_NATIVE +14929 area-System.Xml [System.Xml.Private] Extracts XmlSchemaConstants - Moved to new file - Removed unused constant - Moved to assembly namespace +14930 area-System.Data Add StateChangeHasSubscribers to DbConnection ADO.NET providers are supposed to call DbConnection.OnStateChange on connection state changes. The problem is that this design forces the allocation of the StateChangeEventArgs parameter regardless of whether there are subscribers to StateChange or not. Added a simple getter to check whether subscribers exist or not. If not calling OnStateChange can be skipped altogether. +14933 area-Infrastructure Update CLI to 1.0.0-preview2-1-003182, BuildTools to 1.0.27-prerelease-01205-03 This version of CLI has the fix for https://github.com/dotnet/corefx/issues/14215 (Running build.sh fails on Linux kernel 4.6.x). Because the new CLI uses shared framework 1.1.0 rather than 1.0.0, we need to use a new matching BuildTools version (https://github.com/dotnet/buildtools/pull/1286). I uploaded a fake bootstrap Alpine package to CLI blob storage with this version so it can still build. Tested in a docker container. +14934 area-System.Data API Proposal: Add check for StateChange event subscribers to DbConnection # The problem ADO.NET providers are supposed to call `DbConnection.OnStateChange` on connection state changes. The problem is that this design forces the allocation of the StateChangeEventArgs parameter regardless of whether there are subscribers to StateChange or not. In an effort to reduce heap allocations, it would be good if implementing providers could have a way of checking whether there are subscribers or not before allocating and calling `DbConnection.OnStateChange`. # Proposal Add a protected, non-virtual method called `StateChangeHasSubscribers` to `DbConnection`, returning a bool. Implementing providers would have the option of calling it, and skipping `OnStateChange` if false is returned. +14935 area-System.Xml System.Private.Xml not Building Assembly for UWP System.Private.Xml.dll is not supporting uap101aot. +14937 area-System.Xml Disable two XmlSchemaSet tests Disabling these two tests for now as they have been failing randomly on CentOS and RedHat in latest builds. (Seems like a problem with AppContext caching again) Tracking issue: https://github.com/dotnet/corefx/issues/14918#event-914392725 cc: @danmosemsft @AlexGhiondea +14939 area-Infrastructure Update projects to netcoreapp2.0 and netstandard2.0 Fixes #14501 +14940 area-Infrastructure Build-managed from a clean enlistment fails You cannot run build-managed.cmd from a clean enlistment without your build failing. build-managed.cmd now includes the build packages step which requires native binaries. This may be a point of consternation for devs. +14943 area-Infrastructure Correctly process useServerGC in build-tests.sh This moves the processing logic for `useServerGC` into build-tests.sh. ~~This is part of why the CI is broken, but not everything. The main problem is still that `-notrait category=nontests` is not being used for some reason.~~ Never mind, that stopped happening. This should fix everything. @weshaggard @alexperovich +14946 area-Infrastructure build-managed.cmd -packages doesn't work in release/1.1.0 I download both tags: v1.1.0 and branch: release/1.1.0 But in release/1.1.0 build-managed.cmd -packages doesn't work. Is tag v1.1.0 the correct tag for correct release 1.1.0? +14947 area-System.Net WinHttpWebSocket: Append directly to the request headers StringBuilder Avoid intermediate allocations associated with `string.Format` and `string.Join` when building up the request headers buffer by appending directly to the `StringBuilder` in `WinHttpWebSocket`. +14949 area-Infrastructure [dev/eng] Merging branch master into dev/eng Master integration into dev/eng cc: @weshaggard @mellinoe @ericstj @chcosta @karajas Interesting changes worth taking a look at: - Original merge conflicts: 44b68e694948065c1b61457cec125d3d64c1fa22 - Once conflicts were resolved, changes required to succesfully build the repo on Windows: 4ef4fa55c950367fdaed2749ea124ead6f8296db - One more integration with latest changes on dev/eng: e3cbfcc79e4dc2c4c272fb9fe23a69170e466640 - Removing build-tests.cmd execution from build.cmd which we got from master: 9b021ac018ddd78799e28ea0273c7c03fa3c72e7 +14951 area-Infrastructure [dev/eng] Revert secrets and tokens in checked-in definitions to be VSTS secrets Reverts some of https://github.com/dotnet/corefx/pull/14694 to turn leg build secrets back into secrets. This slightly improves security. +14952 area-Serialization Add S.R.Serialization.DictionaryGlobals's missing Entires. #13191 @shmao @mconnew @zhenlan +14954 area-System.Net SslStream.AuthenticateAsServerAsync is significantly slower in CoreFX 4.4 Kestrel perf tests recently started yielding 0 RPS on HTTPS. This happens when we open a large number of simultaneous connections to Kestrel. What I've discovered so far is that `SslStream.AuthenticateAsServerAsync` is taking significantly longer to run. Opening 256 connections and measuring the time that takes to run in Kestrel 1.1.0 (which referenced CoreFX 4.3) I get an average of 339 ms per call. Running against our dev branch (referencing CoreFX 4.4 packages), I'm seeing an average of 10 **seconds** per call, and some of the tasks never appear to complete in a reasonable time. The delay appears to be proportional to the number of simultaneous calls we're making. Here are some rough measurements of the average time to authenticate depending on the number of simultaneous connections we open against Kestrel: Connections | Time -------------- | ------ 1 | 56 ms 2 | 65 ms 4 | 66 ms 8 | 76 ms 10 | 132 ms 12 | ~1 **s** 16 | ~4.5 **s** 32 | ~10 **s** _not all tasks complete_ 64 | ~10 **s** _not all tasks complete_ 128 | ~10 **s** _not all tasks complete_ 256 | ~10 **s** _not all tasks complete_ I wrote a small program to measure this more isolatedly: https://gist.github.com/cesarbs/4409b712351adf621aae8420e1ea33de On CoreFX 4.3 the call to `AuthenticateAsServerAsync` takes about 38 ms on average. On 4.4 that average is 99 ms (a discrepancy with Kestrel that I can't explain). Another interesting thing about this is that I only see those figures in the first request to the program - subsequent requests take around 3 ms to authenticate on both CoreFX versions. cc @mikeharder +14960 area-System.Data SQL Tests: Refactoring tests and adding auto execution for Diagnostics test The Diagnostics tests in System.Data.SqlClient were meant for manual execution. With the TDS server, its possible to automate many of the diagnostics tests run. The change includes: 1. Refactoring of the test server 2. Refactor Query engine to allow plugging in custom queries. 3. Moving some of the Diagnostics tests queries to existing queries in the QueryEngine. 4. Adding support for error queries in the custom query engine. 5. Added the TDS project to SqlClient solution. This change can be used to drive #13511 to completion. Improves test line coverage to 21.7% for #14346 +14961 area-System.Collections Remove silent boxing/make exceptions consistent in ImmutableArray Tracking issue for changes to the source of `ImmutableArray` to be made after the test changes in #14798. All of these will be fixed in a subsequent PR. - [ ] Remove silent boxing in `Remove` / `Replace` - Relevant lines: [`Replace`](https://github.com/jamesqo/corefx/blob/38b28ed31c9a6620fbbfd6c3822bc1a2ea6c3c9f/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs#L731-L734), [`Remove`](https://github.com/jamesqo/corefx/blob/38b28ed31c9a6620fbbfd6c3822bc1a2ea6c3c9f/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs#L771) - There exists no `IndexOf(T, IEqualityComparer)` method on ImmutableArray, so it is boxed to an IImmutableList and the ImmutableList extension method is called - These should be trivial to fix (just pass in `0` and `self.Length`) - [ ] Make exceptions thrown by `RemoveRange` / `Remove` consistent - Relevant diffs: https://github.com/dotnet/corefx/pull/14798/files#diff-5c35677b4c2163f273b62555ee2cc97bR731, https://github.com/dotnet/corefx/pull/14798/files#diff-5c35677b4c2163f273b62555ee2cc97bR797 +14966 area-System.Console Enhanced styling for System.Console It would be cool if System.Console were to support writing to the console using any RGB color and in predefined styles. For examples of usage, see [Colorful.Console](https://github.com/tomakita/Colorful.Console/blob/master/README.md). The idea is to keep current System.Console behavior invariant while adding extra functions to its interface that enable enhanced styling. I have no idea if this is the kind of contribution you're interested in, but I figured I'd ask! +14967 area-System.Security System.Security.Claims compatible with .NET 4.5.1? Is it possible to make the System.Security.Claims package compatible with .NET 4.5.1? Is it different from the implementation of .NET 4.5.1 or was there another reason why its nuget package only supports netstandard1.3 and net46? +14972 area-System.Collections Cleanup & tweak perf for ImmutableList.Node **Description:** Without sacrificing too much readability/brevity, this PR makes several tweaks to `ImmutableList.Node` that result in up to a 35% speedup for common operations such as `Add` and `Insert`. **Overview:** - Convert each of the tree-balancing methods (such as `RotateLeft`) to instance members - This makes it easier for the JIT to inline because we can remove the null checks at the beginning of each method (I've measured, this makes `Add` / `Insert` ~10% faster) - Rewrite `DoubleLeft` / `DoubleRight` so that the mutation is done in one swoop - Remove the optional parameter scheme from `Mutate`, introduce `MutateLeft` and `MutateRight` - These methods are called each time a node is mutated, so we want to minimize branching - Avoid forwarding to `Insert` from `Add` - In the case of `Add` we always want to insert towards the right, so we can avoid one branch per recursion - Fix inconsistencies in some XML documentation - Refactor some code into new methods - Use expression-bodied syntax for properties - Add some extra Debug.Asserts to some methods - Remove some dead code around `RotateLeft` / `RotateRight` - Rename `Balance` -> `BalanceFactor` to avoid confusion that the method balances the node **Performance results:** https://gist.github.com/jamesqo/b6e5f54b01facf03b64000a13d52206c `Insert` and `Add` show significant improvements. The results for `InsertRange` and `AddRange` are less dramatic, but still consistently positive. There are no use cases (that I am aware of) where perf is negatively impacted by this PR. cc @AArnott @ianhays @stephentoub +14976 area-System.Diagnostics How obtain Process.GetCurrentProcess().Handle? "Hi folks! I'm building a netstandar1.5 lib and I have downloaded System.Diagnostics.Process v4.3.0 from Nuget, but method .Handle is missing. I try to call this code which works fine in Framework 3.5: ```c# [DllImport(""kernel32.dll"")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo); internal static bool IsWowProcess() { var retVal = false; IsWow64Process(Process.GetCurrentProcess().Handle, out retVal); //missing Handle! return retVal; } ``` Thanks a lot !" +14978 area-System.Data SqlClient / MultiSubnetFailover / Linux / 1.1.0 "I would really appreciate some advice if possible. I'm running a .NET Core App 1.1.0 in a container against a SqlServer 12 database with MultiSubnetFailover. My connection string looks like this... Data Source=***.***.***.com;Initial Catalog=DATABASENAME;User ID=USER_ID;Password=""USER_PASSWORD"";Connect Timeout=60;TrustServerCertificate=True;Application Name="".NET Core"";MultiSubnetFailover=True There are just two subnets, so when I resolved the dns name I get 2 ip addresses back. As long as the primary is listed first, I can connect. If the secondary is listed first it will timeout and fail Does this mean that MSF is not available in Linux ?? Have I got an incorrect ConnectionString ? Is the IP resolution running in serial and not parallel ? I've tried all manner of things - for example - setting the connection time out to 200 (based on some similar queries). I've also read that I should not specify the Initial Catalog (on linux) when using MSF but this is an onerous solution to me. Would appreciate some advice on this one as I'm running out of options and want to go into production.... Thanks in advance James " +14979 area-System.Linq Fix disposal of enumerators in EnumerablePartition **Description:** I found out while adding a new API in https://github.com/dotnet/corefx/pull/14186 that I had forgotten to override `Dispose` in `EnumerablePartition`, which is returned by `Skip` / `Take`. This fixes that and adds corresponding tests to make sure the source enumerator is disposed properly. I also made some of the test code I had written in an earlier PR a bit cleaner. **Related:** https://github.com/dotnet/corefx/pull/13628 /cc @JonHanna @stephentoub @VSadov +14983 area-System.IO Test failure: System.IO.Tests.WaitForChangedTests/Renamed_Success Opened on behalf of @jiangzeng The test `System.IO.Tests.WaitForChangedTests/Renamed_Success` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.IO.Tests.WaitForChangedTests.Renamed_Success() Build : Master - 20170108.02 (Core Tests) Failing configurations: - Fedora.23.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170108.02/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.WaitForChangedTests~2FRenamed_Success +14984 area-System.Globalization "System.Globalization.Calendars.Tests threw ""System.ArgumentOutOfRangeException""" No results generated. Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Globalization.Calendars.Tests/details/c9ef7300-4763-45b3-8e8a-886180e6bb61 Log: ``` 2017-01-08 15:21:42,927: INFO: proc(55): run_and_log_output: Output: Discovering: System.Globalization.Calendars.Tests 2017-01-08 15:21:43,270: INFO: proc(55): run_and_log_output: Output: Discovered: System.Globalization.Calendars.Tests 2017-01-08 15:21:43,270: INFO: proc(55): run_and_log_output: Output: Starting: System.Globalization.Calendars.Tests 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: System.Globalization.Tests.CalendarHelpers.GetDaysInMonth_Invalid [FAIL] 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: System.ArgumentOutOfRangeException : Non-negative number required. 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: Parameter name: year 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: Stack Trace: 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: at System.Globalization.GregorianCalendarHelper.GetGregorianYear(Int32 year, Int32 era) 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: at System.Globalization.EastAsianLunisolarCalendar.CheckYearRange(Int32 year, Int32 era) 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: at System.Globalization.EastAsianLunisolarCalendar.GetMonthsInYear(Int32 year, Int32 era) 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: D:\A\_work\64\s\corefx\src\System.Globalization.Calendars\tests\CalendarHelpers.cs(126,0): at System.Globalization.Tests.CalendarHelpers.d__9.MoveNext() 2017-01-08 15:22:03,395: INFO: proc(55): run_and_log_output: Output: at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: System.Globalization.Tests.CalendarHelpers.IsLeapDay_Invalid [FAIL] 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: System.ArgumentOutOfRangeException : Non-negative number required. 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: Parameter name: year 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: Stack Trace: 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: at System.Globalization.GregorianCalendarHelper.GetGregorianYear(Int32 year, Int32 era) 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: at System.Globalization.EastAsianLunisolarCalendar.CheckYearRange(Int32 year, Int32 era) 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: at System.Globalization.EastAsianLunisolarCalendar.GetMonthsInYear(Int32 year, Int32 era) 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: D:\A\_work\64\s\corefx\src\System.Globalization.Calendars\tests\CalendarHelpers.cs(126,0): at System.Globalization.Tests.CalendarHelpers.d__9.MoveNext() 2017-01-08 15:22:03,411: INFO: proc(55): run_and_log_output: Output: at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: System.Globalization.Tests.CalendarHelpers.IsLeapMonth_Invalid [FAIL] 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: System.ArgumentOutOfRangeException : Non-negative number required. 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: Parameter name: year 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: Stack Trace: 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: at System.Globalization.GregorianCalendarHelper.GetGregorianYear(Int32 year, Int32 era) 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: at System.Globalization.EastAsianLunisolarCalendar.CheckYearRange(Int32 year, Int32 era) 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: at System.Globalization.EastAsianLunisolarCalendar.GetMonthsInYear(Int32 year, Int32 era) 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: D:\A\_work\64\s\corefx\src\System.Globalization.Calendars\tests\CalendarHelpers.cs(126,0): at System.Globalization.Tests.CalendarHelpers.d__9.MoveNext() 2017-01-08 15:22:04,006: INFO: proc(55): run_and_log_output: Output: at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 2017-01-08 15:22:04,022: INFO: proc(55): run_and_log_output: Output: Finished: System.Globalization.Calendars.Tests 2017-01-08 15:22:04,036: INFO: proc(55): run_and_log_output: Output: === TEST EXECUTION SUMMARY === 2017-01-08 15:22:04,036: INFO: proc(55): run_and_log_output: Output: System.Globalization.Calendars.Tests Total: 1435, Errors: 0, Failed: 3, Skipped: 0, Time: 0.849s ``` Build: 20170108.02 Configuration: Windows.10.Amd64 +14986 area-System.IO Test failure: Hundreds of tests under 'System.IO.FileSystem.Tests' failed Opened on behalf of @jiangzeng Lots of tests of 'System.IO.FileSystem.Tests' failed. Failing with: System.ArgumentException: Illegal characters in path Or: System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.IO.FileSystem.Tests +14987 area-System.IO Test failure: System.IO.Tests.DerivedFileStream_ctor_sfh_fa/VirtualCanReadWrite_ShouldNotBeCalledDuringCtor Opened on behalf of @jiangzeng The test `System.IO.Tests.DerivedFileStream_ctor_sfh_fa/VirtualCanReadWrite_ShouldNotBeCalledDuringCtor` has failed. Assert.False() Failure\r Expected: False\r Actual: True Stack Trace: at System.IO.Tests.DerivedFileStream_ctor_sfh_fa.VirtualCanReadWrite_ShouldNotBeCalledDuringCtor() in D:\A\_work\64\s\corefx\src\System.IO.FileSystem\tests\FileStream\ctor_sfh_fa.cs:line 142 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DerivedFileStream_ctor_sfh_fa~2FVirtualCanReadWrite_ShouldNotBeCalledDuringCtor +14988 area-Infrastructure [x86/Linux] Change processor name from x86 to i686 in cmake "As CMAKE_SYSTEM_PROCESSOR is eq to ""uname -p"" need to change to i686 To match with CoreCLR which uses i686" +14989 area-System.Net Test failure: System.Net.NameResolution.Tests.LoggingTest/EventSource_ExistsWithCorrectId Opened on behalf of @jiangzeng The test `System.Net.NameResolution.Tests.LoggingTest/EventSource_ExistsWithCorrectId` has failed. System.TypeLoadException : Could not load type 'System.Net.NetEventSource' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Stack Trace: at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) at System.Net.NameResolution.Tests.LoggingTest.EventSource_ExistsWithCorrectId() in D:\A\_work\64\s\corefx\src\System.Net.NameResolution\tests\FunctionalTests\LoggingTest.cs:line 16 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Net.WebSockets.Tests.LoggingTest/EventSource_ExistsWithCorrectId System.Net.NameResolution.Tests.LoggingTest/EventSource_ExistsWithCorrectId Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Net.NameResolution.Functional.Tests/analysis/xunit/System.Net.NameResolution.Tests.LoggingTest~2FEventSource_ExistsWithCorrectId https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Tests.LoggingTest~2FEventSource_ExistsWithCorrectId +14990 area-System.Collections Test failure: System.Collections.ObjectModel.Tests.ConstructorAndPropertyTests/DebuggerAttributeTests Opened on behalf of @jiangzeng The test `System.Collections.ObjectModel.Tests.ConstructorAndPropertyTests/DebuggerAttributeTests` has failed. System.InvalidOperationException : Expected one DebuggerDisplayAttribute on System.Collections.ObjectModel.ObservableCollection`1[System.Int32]. Stack Trace: at System.Diagnostics.DebuggerAttributes.ValidateDebuggerDisplayReferences(Object obj) in D:\A\_work\64\s\corefx\src\Common\tests\System\Diagnostics\DebuggerAttributes.cs:line 82 at System.Collections.ObjectModel.Tests.ConstructorAndPropertyTests.DebuggerAttributeTests() in D:\A\_work\64\s\corefx\src\System.ObjectModel\tests\ObservableCollection\ObservableCollection_ConstructorAndPropertyTests.cs:line 123 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Collections.ObjectModel.Tests.ConstructorAndPropertyTests/DebuggerAttributeTests System.Collections.ObjectModel.Tests.ReadOnlyObservableCollectionTests/DebuggerAttribute_Tests Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.ObjectModel.Tests +14991 area-System.Runtime Test failure: System.Runtime.Numerics.Tests failed with Xunit.Sdk.EqualException & Xunit.Sdk.TrueException Opened on behalf of @jiangzeng The test `System.Numerics.Tests.ComparisonTest/IComparable_Invalid` has failed. Assert.Equal() Failure\r Expected: obj\r Actual: (null) Stack Trace: at System.Numerics.Tests.ComparisonTest.IComparable_Invalid() in D:\A\_work\64\s\corefx\src\System.Runtime.Numerics\tests\BigInteger\Comparison.cs:line 367 System.Numerics.Tests.ComparisonTest/IComparable_Invalid: ``` Unhandled Exception of Type Xunit.Sdk.TrueException Message : Failure at line 299. Expected real: 1.5707963267949. Actual real: NaN\r\nExpected: True\r\nActual: False Stack Trace : at System.Numerics.Tests.ComplexTests.VerifyRealImaginaryProperties(Complex complex, Double real, Double imaginary, Int32 lineNumber) in D:\A\_work\64\s\corefx\src\System.Runtime.Numerics\tests\ComplexTests.cs:line 1583 at System.Numerics.Tests.ComplexTests.ACos_Advanced(Double real, Double imaginary, Double expectedReal, Double expectedImaginary) in D:\A\_work\64\s\corefx\src\System.Runtime.Numerics\tests\ComplexTests.cs:line 299 ``` Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Numerics.Tests.ComparisonTest/IComparable_Invalid System.Numerics.Tests.ComplexTests/ACos_Advanced System.Numerics.Tests.ComplexTests/Equals System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests System.Numerics.Tests.logTest/RunLargeValueLogTests Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Runtime.Numerics.Tests +14992 area-System.Numerics Test failure: System.Numerics.Tests.modpowTest/ModPow1Large2SmallInt_Threshold Opened on behalf of @jiangzeng The test `System.Numerics.Tests.modpowTest/ModPow1Large2SmallInt_Threshold` has failed. System.TypeInitializationException : The type initializer for 'BigIntTools.Utils' threw an exception.\r ---- System.ArgumentNullException : Value cannot be null.\r Parameter name: type Stack Trace: at BigIntTools.Utils.RunWithFakeThreshold(String name, Int32 value, Action action) at System.Numerics.Tests.modpowTest.ModPow1Large2SmallInt_Threshold() in D:\A\_work\64\s\corefx\src\System.Runtime.Numerics\tests\BigInteger\modpow.cs:line 146 ----- Inner Stack Trace ----- at System.Reflection.IntrospectionExtensions.GetTypeInfo(Type type) at BigIntTools.Utils..cctor() in D:\A\_work\64\s\corefx\src\System.Runtime.Numerics\tests\BigInteger\BigIntTools.cs:line 38 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Numerics.Tests.IsEvenTest/RunIsEvenTests System.Numerics.Tests.modpowTest/ModPow1Large2SmallInt_Threshold System.Numerics.Tests.modpowTest/ModPow2Large1SmallInt_Threshold System.Numerics.Tests.modpowTest/ModPow3LargeInt System.Numerics.Tests.multiplyTest/RunMultiply_TwoLargeBigIntegers_Threshold Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Runtime.Numerics.Tests +14993 area-System.Numerics Test failure: System.Numerics.Tests.powTest/RunOverflow Opened on behalf of @jiangzeng The test `System.Numerics.Tests.powTest/RunOverflow` has failed. Assert.Throws() Failure\r Expected: typeof(System.OverflowException)\r Actual: typeof(System.OutOfMemoryException): Array dimensions exceeded supported range. Stack Trace: at System.Numerics.BigIntegerBuilder.SetSizeClear(Int32 cu) at System.Numerics.BigIntegerBuilder.Mul(BigIntegerBuilder& reg1, BigIntegerBuilder& reg2) at System.Numerics.BigInteger.Pow(BigInteger value, Int32 exponent) at System.Numerics.Tests.powTest.<>c__DisplayClass9_0.b__0() in D:\A\_work\64\s\corefx\src\System.Runtime.Numerics\tests\BigInteger\pow.cs:line 178 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.powTest~2FRunOverflow +14994 area-System.Security Test failure: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/EnvelopedCmsEncryptWithZeroRecipients Opened on behalf of @jiangzeng The test `System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/EnvelopedCmsEncryptWithZeroRecipients` has failed. Assert.Throws() Failure\r Expected: typeof(System.PlatformNotSupportedException)\r Actual: typeof(System.Security.Cryptography.CryptographicException): The system cannot find the file specified.\r Stack Trace: at System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags) at System.Security.Cryptography.Pkcs.PkcsUtils.SelectRecipients(SubjectIdentifierType recipientIdentifierType) at System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(CmsRecipientCollection recipients) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.<>c__DisplayClass13_0.b__0() in D:\A\_work\64\s\corefx\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 286 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Security.Cryptography.Pkcs.Tests/analysis/xunit/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests~2FEnvelopedCmsEncryptWithZeroRecipients +14995 area-System.Security Test failure: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/ZeroLengthContent_FixedValue Opened on behalf of @jiangzeng The test `System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/ZeroLengthContent_FixedValue` has failed. System.Exception : ContentInfo expected to be 0 but was actually 6. If you're running on the desktop CLR, this is actually a known bug. Stack Trace: at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ValidateZeroLengthContent(Byte[] encodedMessage) in D:\A\_work\64\s\corefx\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 181 at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ZeroLengthContent_FixedValue() in D:\A\_work\64\s\corefx\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 126 Build : Master - 20170108.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Release Failed tests: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/ZeroLengthContent_FixedValue System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/ZeroLengthContent_RoundTrip System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.StateTests/PostDecode_ContentInfo System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.StateTests/PostDecode_Encode Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170108.02/workItem/System.Security.Cryptography.Pkcs.Tests +15002 area-System.Net ServerCertificateCustomValidationCallback unexpectedly exit with 0 code on Window10 "Hello I am trying to use custom certificate validation with dotnetcore 1.1.0 (also tested with v=1.0.1) The program exited unexpectedly in GetAsync method without raising exception. I have the following minimal code & ouput: Code ```c# using System; using System.Net.Http; namespace Callback { public class Program { const string requestUri = ""https://google.fr""; public static void Main(string[] args) { _main(args); } public static async void _main(string[] args) { HttpResponseMessage response = null; var clientHandler = new HttpClientHandler(); clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }; ; Console.WriteLine(""Before request; Press any key to execute""); Console.ReadKey(); Console.WriteLine(""REQUESTING !""); using (var c = new HttpClient(clientHandler)) { try { response = await c.GetAsync(requestUri); } catch (Exception e) { Console.WriteLine(""ERROR: "" + e); throw e; } } Console.WriteLine(""After request""); Console.WriteLine(response.StatusCode.ToString()); Console.ReadKey(); } } } ``` Output ``` 'dotnet.exe' (CoreCLR: DefaultDomain): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Private.CoreLib.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Users\mte\work\sslTest\Callback\src\Callback\bin\Debug\netcoreapp1.0\Callback.dll'. Symbols loaded. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\mscorlib.dll'. Symbols loaded. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Threading.Tasks.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Net.Http.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Net.Primitives.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Console.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Security.Cryptography.X509Certificates.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Diagnostics.Tracing.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Collections.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Threading.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Runtime.InteropServices.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Runtime.Handles.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.IO.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.IO.FileSystem.Primitives.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Text.Encoding.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Text.Encoding.Extensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Private.Uri.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Diagnostics.DiagnosticSource.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.0\System.Runtime.Extensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. The program '[9268] dotnet.exe' has exited with code 0 (0x0). ``` Thanks for your help" +15004 area-Infrastructure Enable Dumpling for all Helix test runs This is a follow-up change for https://github.com/dotnet/buildtools/pull/1254 since `/p:EnableCloudTest=true` is not being passed to Helix runs anymore and so Dumpling.targets was not being imported as expected. cc: @danmosemsft @MattGal @weshaggard +15005 area-System.Data Remove the SqlConnection Test This is to fix the failures in CI from SqlConnection Test. I will continue to investigate the failure. I dont see any coverage impact with this test being removed because this usecase is taken care of, in Diagnostics test. cc @stephentoub @danmosemsft +15006 area-Infrastructure Add RIDs for RHEL 7.3 and 7.4 Teach .NET Core that RHEL 7.3 (released) and 7.4 (currently in development) are just newer versions of RHEL 7.2 and are compatible with RHEL 7.2. This (along with some other fixes) allows us to build various .NET Core projects on RHEL 7.3. cc @ellismg +15007 area-System.IO Fix some intermittently failing Desktop FSW tests They're failing for misc reasons but mostly are plagued by timeouts. I excluded some actual failures and increased timeouts for the other ones so desktop FSW runs should be clean going forward. resolves https://github.com/dotnet/corefx/issues/14894 resolves https://github.com/dotnet/corefx/issues/14983 resolves https://github.com/dotnet/corefx/issues/13304 resolves https://github.com/dotnet/corefx/issues/13248 resolves https://github.com/dotnet/corefx/issues/13245 resolves https://github.com/dotnet/corefx/issues/13246 +15009 area-Serialization Fix XmlSerializerFactoryTest in ReflectionOnly Mode. The test failed in ReflectionOnly mode because XmlSerializerFactory does not know how to deal with ReflectionOnly mode. The fix is to make XmlSerializerFactory use XmlSerializer consturctor who knows how to handle logic for ReflectinOnly/non-ReflectionOnly scenarios. Fix #11919 /cc: @zhenlan @mconnew @huanwu +15010 area-Infrastructure [dev/eng]Cleaning up src.builds and tests.builds and build System.Configurations Changes includded: - Convert System.Configurations library and test projects to the dev/eng reference style and re-added them to the build - For libraries that were added in master and don't yet compile (System.DirectoryServices.* and System.Security.Cryptography.Xml) added an emtpy `Configurations.props` file so that they get filtered out for now until the required changes are made so that they build for Core. - Cleanup the exclusions on `src/src.builds` and `src/tests.builds` files cc: @weshaggard @mellinoe @chcosta +15011 area-System.Data Data.Common and SqlClient: considering adding an alternate version of GetFieldValueAsync() that returns a ValueTask "Based on the [the description of `ValueTask`](https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs#L12-L50) and the discussion at https://github.com/dotnet/corefx/issues/4708 it seems that `GetFieldValueAsync()` (on `DbDataReader` and derived types) could use it to enable more efficient fine-grained async code. Note that we haven't performed any measurements to try to understand the impact of this change and that the higher level components we work on such as EF6 and EF Core currently would not take advantage of it, but we are creating this issue mainly to give the SqlClient team a chance to evaluate this improvement for other code that uses this ADO.NET API directly. Also note that fine-grained async APIs that return `Task` (such as `ReadAsync()` and `IsDBNullAsync()`) are better off returning cached `Task` instances to gain efficiency instead of adopting `ValueTask`. From my perspective, there are a couple of open issues if we decided to do this: 1. Naming of the new method: since there can't be yet another overload that only differs on the return type, and the ""standard"" name with just the `Async` suffix is taken. 2. Compatibility for providers: It seems desirable to offer a default implementation of the Task-based method that calls `AsTask()` on the `ValueTask` instance returned by the new API, so that new providers don't need to implement the old `Task` version of the API but instead only implement the more efficient `ValueTask` version. It also seems good not to force existing providers to switch. I am currently thinking that adding an optional interface with the new API could be a solution, but there are other disadvantages in that approach. cc @stephentoub @YoungGah @saurabh500 " +15012 area-System.Net Consider making NegotiateStreamPal and related APIs in Common a reusable component System.Data.SqlClient needs to use the GSSAPIs to interact with the Kerberos tokens to authenticate Sql Server users on .Net Core on Linux and macOS System.Net.Mail has a dependency on the Interop Classes in Common folder, e.g. https://github.com/dotnet/corefx/blob/fd15ab1de03a4431e0ead9ff10e1bf53e2ae4bb7/src/System.Net.Mail/src/System.Net.Mail.csproj#L148 Can the Common\System\Net\Security\* and related files be made a component (a Nuget package) which can be reused by SqlClient, System.Net.Security and System.Net.Mail? This will allow the consumers to consume a single package instead of including the platform specific files for compilation in the project files. Alternatively, can APIs be added to interact with GSS-APIs using .Net Core so that the managed version of System.Data.SqlClient be truly portable without taking platform specific dependencies? SqlClient mainly needs to use AcquireCredentialHandle and InitializeSecurityContext APIs to make the feature work for Managed SNI. cc @stephentoub @YoungGah +15013 area-System.Globalization Fix System.Globalization test to run against net46 Currently we build the tests as netstandard library so we never build with TargetGroup=net46 System.Globalization test was written depending on TargetGroup=net46. The change here is to fix this issue and also fix Unicode Category test to run fine with old Unicode category data +15015 area-Infrastructure Modify Helix-related targets scripts to handle new conventions "There's a few parts to this, and the rest of it is still a WIP. Putting this out to get some feedback from @karajas and @MattGal on the best way to move forward. * I've added back a trimmed-down version of the Runner.* scripts and templates. We no longer need to copy and files from the package cache, but we do need to pass in a ""Runtime Path"" instead. This is essentially the `bin/runtime/netcoreapp-xyz` directory. This will be zipped up and delivered much in the same way that the packages directory is nowadays. * Local test execution now uses those runner scripts like they did before * This is still using CoreRun, but using dotnet shouldn't be much work on top of this, just changing which folders get zipped up and some paths changed. * I haven't validated the zip files and made any changes to Helix yet." +15016 area-Infrastructure Opt package builds out of configurations imports Also, changing variable names in the publish step for build pipeline. /cc @ericstj +15017 area-System.Net Expose interface to support SASL compliant authentication protocols In .NET the authentication protocols implementation is available as an internal type [NTAuthentication](https://github.com/dotnet/corefx/blob/e61cda509c29326cdfb044d3e08c5b0ad388644d/src/System.Net.Security/src/System/Net/NTAuthentication.cs) but the API surface area is designed for Windows compatible NTLM, Kerberos and WDigest auth. We need an API like [IAuthenticationModule](https://github.com/dotnet/corefx/blob/2117bae3a6c9736033e6d1659821ff3a1069920b/src/System.Net.Requests/src/System/Net/IAuthenticationModule.cs), that is more generic, and not tied to ```WebRequest```. +15018 area-System.Net Test failure: System.Net.NetworkInformation.Tests.PingTest/SendPingAsyncWithHostAndTimeout Opened on behalf of @jiangzeng The test `System.Net.NetworkInformation.Tests.PingTest/SendPingAsyncWithHostAndTimeout` has failed. Assert.Equal() Failure Expected: Success Actual: TimedOut Stack Trace: at System.Net.NetworkInformation.Tests.PingTest.<>c__DisplayClass10_0.b__1(PingReply pingReply) at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.NetworkInformation.Tests.PingTest.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170109.02 (Core Tests) Failing configurations: - Ubuntu.1604.Amd64 - AnyCPU-Debug Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170109.02/workItem/System.Net.Ping.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.PingTest~2FSendPingAsyncWithHostAndTimeout +15022 area-Infrastructure System.Runtime.CompilerServices.Unsafe doesn't handle configurations This is an ilproj, and it doesn't have a configurations file, so when it builds, it just defaults to debug, it doesn't produce a release binary. In general, any library which doesn't have buildconfigurations specified, will get defaulted to debug (even if configurationgroup=release is specified on the command-line). We should handle this better and still respect propreties. For this project, you could probably just set ```netcoreapp;``` but it may take a small amount of time to validate. +15023 area-System.Diagnostics Add context to DiagnosticSource "# Motivation Our goal is to enable telemetry event correlation. To do this we need incoming requests to be tagged with an ID (and potentially other information), and have this information 'flow' through (be available) to all code run in response to that request and in particular allow this information to be propagated to any outgoing requests. This class is meant to effectively augment existing DiagnosticSource telemetry, and be compatible/leveragable from using the existing ILogger and EventSource based logging as well. The result is that all these logging mechanisms will now have 'end-to-end' event correlation (every event has an activity, and for any event you can find the chain of activities that 'caused' it). # Concepts The main new code is the Activity class. Conceptually an Activity is something that starts and stops (thus it has a start time and duration), and potentially has a 'Parent' that 'caused' it. In addition it has two sets of arbitrary key-value pairs. The first is called 'Tags', which are intended to be logged with the activity but do NOT propagate to children. The second is 'Baggage' that DOES propagate to children. Tags are intended to augment telemetry, baggage is intended to control telemetry. # Usage scenario: Modify existing Incoming HTTP Request telemetry code (e.g. in ASPNet.Hosting) to - Extract data (e.g. an ID) from the HTTP header - Create a new a new Activity which has this ID as a parent and stores any other telemetry data values from HTTP header. - Make the activity current with the Activity.Current and log the telemetry with the DiagnosticSource.Start() API. - Now at any point, the telemetry context is available in Activity.Current. Modify the existing Outgoing HTTP request telemetry (e.g. in System.Net.Http) to - Looks at Activity.Current and injects the current ActivityID and Baggage into the outgoing HTTP header. This feature is focused on context itself and does not cover incoming/outgoing operations handling (they are in different DLLs and will be covered in subsequent pull requests). The API is inspired by [opentracing.io](http://opentracing.io/) standard ([API specification](https://github.com/opentracing/specification/blob/master/specification.md)) and implements following concepts: # Proposed API ```c# namespace System.Diagnostics { public class Activity { //name of operation public string OperationName { get; } //id of the activity. Propagated to dependencies, so parent-child relationship of activities could be logged public string Id { get; private set; } // activity start timestamp public DateTime StartTimeUtc { get; private set; } //duration for stopped activity public TimeSpan Duration { get; private set; } //reference to parent activity if any; public Activity Parent { get; private set; } //represents Id of parent activity, may be passed from external service public string ParentId { get; private set; } // list of key-value pairs which may be used for logging. E.g. HTTP Method and Path. Users can enumerate tags and add new tags public IEnumerable> Tags {get;} //list of key value pairs to be propagated to downstream services. E.g. correlation-id. Users can enumerate baggage, request baggage by name and add new items public IEnumerable> Baggage {get;} //Current Activity for the current thread. This flows across async calls. public static Activity Current; public Activity(string operationName); public Activity AddTag(string key, object value); public Activity AddBaggage(string key, string value); public Activity SetParentId(string parentId); public Activity SetStartTime(DateTime startTimeUtc); public Activity SetEndTime(DateTime endTimeUtc); public string GetBaggageItem(string key); //Sets activity parent and Activity.Current public Activity Start(); //Restores Activity.Current to parent activity public void Stop(); } // wrapper methods in DiagnosticSource for activity Start and Stop which writes corresponding events to DiagnosticSource public abstract partial class DiagnosticSource // in addition to existing methods { public Activity StartActivity(Activity activity, object args); public void StopActivity(Activity activity, object args); } } ``` # Usage Sample ```c# namespace App { public void OnIncomingRequest(DiagnosticListener httpListener, HttpRequest request) { // This code represents code in say web service's hosting layer that receives an // Incoming HTTP from outside the process. We expect to instrument this code // to accomplish the following three things // 1) Create a new activity that will track through the system as the request is processed // 2) Look for items in the HTTP request that can be used to correlate this incoming // request with other processing on other machines. These should be put into // the newly created Activity so it is available for all subsequent logging. // 3) Log the start and stop of this activity that was created. // // In this example we look for the 'x-ms-request-id' as a HTTP header that identifies // a ID unique ID and passes along any values with the 'x-ms-baggage' prefix. // if (httpListener.IsEnabled(""Http_In"")) { var activity = new Activity(""Http_In""); //parse request headers and add tags and baggage activity.SetParentId(request.headers[""x-ms-request-id""]) foreach (var header in context.Request.Headers) if (header.Key.StartsWith(""x-ms-baggage-"") activity.AddBaggage(header.Key, header.Value); //start activity httpListener.StartActivity(activity, context); try { //process request ... } finally { //stop activity httpListener.StopActivity(activity, context); } } } public void OnOutgoingRequest(DiagnosticListener httpListener, HttpRequestMessage request) { // This code represents code in the framework where an outgoing HttpRequest is being // sent to another machine. The goal of this code is to create and log an activity associated // with doing this as well as to add the ID and any Activity Baggage to the outgoing HTTP // header. if (listener.IsEnabled(""Http_Out"")) { var activity = new Activity(""Http_Out""); //start new activity, Parent for this activity is assigned to Activity.Current listener.StartActivity(activity, new { Request=request) }); try { // Attach our ID and Baggage to the outgoing Http Request request.Headers.Add(""x-ms-request-id"", activity.Id); foreach (var baggage in activity.Baggage) request.Headers.Add(baggage.Key, baggage.Value); // Actually perform the Http Write Request, get the response } finally { listener.StopActivity(activity, {new { Response=reponse }); } } } public void Startup() { // This is code that shows usage to get at the logging (and activity) information // logged by the code above. This follows normal DiagnosticListener conventions. // In which you subscribe to and new DiagnosticListener. // (We assume the DiagnosticListener we used above is called 'System.Net.Http') // From there we can subscribe to its events. // Events will be fired on every Start() and Stop() call above, and the Activity.Current // will be accurate during those callbacks. Thus you have all the information passed int // the Start() or Stop() call as well as all information from Activity.Current available // in the callback. DiagnosticListener.AllListeners.Subscribe(delegate (DiagnosticListener listener) { if (listener.Name == ""System.Net.Http"") { listener.Subscribe(delegate (KeyValuePair value) { // In this demo we simply log to the console what things are happening. Console.WriteLine(""Event: {0} Current Operation: {1} Current ID {2}"", value.Key, {Activity.Current.OperationName}, {Activity.Current.Id}); }); } } } } ``` # Notes We want to bring Activity to ASP.NET 4.5 and ASP.NET Core users which require DiagnosticSource for NET 4.5. Netstandard1.1 is not good enough because it does not implement nethier AsyncLocal nor CallContext," +15026 area-Meta Add guide for dogfooding CoreFX Skip CI Please I took @danmosemsft and updated it slightly. @weshaggard, @ericstj: please give it a read as well. +15027 area-System.IO FileSystemInfo.LastWriteTimeUtc throws on Linux if folder doesn't exist FileSystemInfo.LastWriteTimeUtc behaves different on Windows and Ubuntu 16.04: see: https://github.com/OPCFoundation/UA-.NETStandardLibrary/issues/112 Set FileSystemInfo to a path that doesn't exist, then call LastWriteTimeUtc. On Windows it returns something like 1.1.1600, On Linux it throws exception expected: windows behaviour or at least similar behaviour on both OS. +15031 area-System.Net System.IO.FileLoadException in System.Net.Http 4.1.1 (NuGet package 4.3.0) on System.Diagnostics.DiagnosticSource 4.0.1 (NuGet package 4.3.0) System.IO.FileLoadException at System.Net.Http.WinHttpHandler.SendAsync(): Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Our research has shown that: * System.Net.Http v 4.3.0 package depends on System.Diagnostics.DiagnosticSource v 4.3.0. * NuGet package of System.Net.Http v 4.3.0 in fact contains System.Net.Http.dll v 4.1.1 (as of Jan 8 2017). Why? There is NuGet package System.Net.Http v 4.1.1 for that * System.Net.Http ver 4.1.1.0 references System.Diagnostics.DiagnosticSource v. 4.0.0 * NuGet package of System.Diagnostics.DiagnosticSource v 4.3.0 in fact contains System.Diagnostics.DiagnosticSource v 4.0.1 (as of Jan 8 2017). * Strongly named assembly System.Diagnostics.DiagnosticSource version mismatch ( v 4.0.1 v.s. v 4.0.0) causes System.IO.FileLoadException in System.Net.Http 4.1.1. * The binding redirect to System.Diagnostics.DiagnosticSource v 4.0.0 to v 4.0.1 is not automatically generated under our scenario. Even if it was, would that address every build scenario, for example a shared library project later referenced from a 3-rd party project? This ticket can also be answered at http://stackoverflow.com/questions/41550563 Thanks! +15035 area-Infrastructure [dev/eng] Sorting and trimming Reference items in csprojs Sorting and trimming Reference items on our csprojs to make them more readable cc: @weshaggard @mellinoe +15036 area-System.Net Fix System.Net.Http.HttpClientHandler for net46 build "This PR addresses the problem seen in #11100. Here is a summary: 1) The original .NET Framework (Desktop) code for the HttpClientHandler implementation has been ported for this net46 build. It replaces the WinHttpHandler based code that is used for the other builds of .NET Core (Windows). This means that it uses the original HttpWebRequest (HWR) code in .NET Framework System.dll which is based on managed sockets. This ensures we go back to 100% app-compat behavior against .NET Framework. This also means that existing code that uses ServicePointManager to control behavior will also work 100% app-compat. One downside of this PR is that HTTP/2 protocol support is no longer available since we are reverting back to original .NET HTTP stack for the net46 build. If HTTP/2 protocol support is required on .NET Framework (Desktop), then a developer can use the separate WinHttpHandler package to get that. 2) The System.Net.Http.dll assembly is now marked as APTCA (Allow Partially Trusted Callers) similar to the original annotation of the .NET Framework version of the assembly. As part of this, a few security annotations were added to source code that is being compiled from the CoreFx repo. The SecAnnotate tool was used to verify the annotations and the tool now runs clean against this assembly. 3) This PR also addresses the problem introduced where .NET Framework WebRequestHandler wasn't compatible with the OOB System.Net.Http.dll on Desktop. I manually tested packages with this change and verified sending an HTTP request. There is no longer any ""Derived types must either match the security accessibility of the base type or be less accessible"" exceptions. 4) The tracing mechanism of this implementation implicitly re-activates the System.Net tracing (TraceListener based) since we are now going back to the original .NET Framework HTTP stack. However, part of the source code for the rest of the assembly compiled in from .NET Core repo also includes the new DiagnosticSource tracing as well. There didn't appear to be any negative consequences of leaving this in as it simply adds extra tracing on top of the original System.Net tracing. 5) There are 8 new properties that were added to the HttpClientHandler class compared to the original HttpClientHandler defined in .NET Framework. These new properties are part of the NETStandardard2.0 definitions. Due to switching back to the original HTTP stack implementation in Desktop, some of these new properties can not be implemented fully since there are incompatibilities between defining them as per handler instance compared to the actual underlying ServicePointManager implementation. So, some of these properties will throw PlatformNotSupportedException for now. Since these were newly added properties, the expectation is that there will be minimal app-compat affect. 6) Even with this PR, any project using an OOB (Out of Band) assembly such as System.Net.Http.dll might be REQUIRED to have binding redirects in their app.config/web.config. This is because there needs to be a way to reconcile onto ONE assembly version of the same name. In particular implicit and explicit references to something like the .NET Framework System.Net.Http.WebRequest.dll (which contains WebRequestHandler) is bound to the System.Net.Http.dll version 4.0.0.0 of the .NET Framework. Once an OOB System.Net.Http.dll is introduced, there is now another version of System.Net.Http.dll with a different version number. For the current master branch, the System.Net.Http.dll assembly version is 4.2.0.0. Note that the assembly version is disjoint from the NuGet package version (currently at 4.4* in the master branch). So, this requires a binding redirect in the app.config/web.config similar to: ```c# ``` Tooling such as Visual Studio will normally create this binding for you. But we have seen cases where it doesn't do it automatically. Please keep this in mind. If you don't have any binding redirects for System.Net.Http.dll, you will potentially get errors when sending an HTTP request such as this: >System.InvalidCastException: [A]System.Net.Http.Headers.MediaTypeHeaderValue cannot be cast to [B]System.Net.Http.Headers.MediaTypeHeaderValue. Type A originates from 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' in the context 'Default' at location 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll'. Type B originates from 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' " +15039 area-System.Security Fix System.Security.Cryptography.Pkcs to run against net46 fixes #14995 fixes #14994 +15041 area-System.Security Looks like we have never run the System.Security.AccessControl tests While investigating why these tests were failing on dev/eng branch, I found out that they are also failing in master just that we haven't been running them. The reason why is because the target that selects which projects to run the tests from (`FilterProjectsToTest`) has a condition into making sure that the test .builds file ends with a `.Tests.builds` and it looks like for System.Security.AccessControl, we have always had it like: `System.Security.AccessControl.builds` making it never to run tests. cc: @ianhays (who added the .builds file in the first place) +15042 area-Infrastructure Remove PackageTargetFramework This property is not longer needed. In all cases we derive it from NuGetTargetMoniker. This was being set for pkgprojs and causing runtime packages to also contain the TFM in the id. /cc @chcosta @weshaggard +15044 area-Infrastructure Ensure we set Configuration on P2P and traversal Similar to https://github.com/dotnet/corefx/pull/15037/commits/c572ae1d2169eccdd1827b9bdcab991a3f916d50 which solved this problem for static evaulation, do the same on traversal builds and P2P references. Submitting for CI coverage. @alexperovich will pick this up in his change. /cc @weshaggard @chcosta +15045 area-System.ComponentModel Remove TypeConverter dependency from System.Data.Common Currently System.Data.Common depends on System.ComponentModel.TypeConverter which we should break. TypeConverter is a higher level assembly with lots of dependencies which we don't want to pull in with System.Data.Common. If we need type converters for System.Data.Common we can move implement them or add the mappings for them in S.CM.TypeConverter directly. +15046 area-System.Data Consider removing Transactions dependency from System.Data.Common Currently System.Data.Common depends on System.Transactions because of DbConnection.EnlistTransaction. That API is currently not part of .NET Standard 2.0 so we should either include it along with Transactions to .NET Standard 2.0 or we should consider removing it from .NET Core and breaking this dependency on Transactions. @terrajobst @stephentoub what are you guys thoughts? +15047 area-Serialization Remove CodeDom dependency from S.P.DataContractSerialization System.CodeDom is a higher level OOB component that we should avoid having a dependency on from a lower level component like DataContractSerialization. We should remove this dependency. Looks like it was added with https://github.com/dotnet/corefx/commit/e5df9bee7f15b78e51883ceda56cd081113dc0e2 @shmao @zhenlan +15049 area-System.Security Remove S.Security.Permissions dependency from CodeDom and TypeConverter Currently System.CodeDom and System.ComponentModel.TypeConverter depend on System.Security.Permissions. We should break that dependency as they shouldn't need anything from that the Permissions library. cc @safern +15050 area-System.Numerics Fix System.Runtime.Numerics Tests to run against desktop Fixes #14993 Fixes #14992 Fixes #14991 +15051 area-System.Numerics Investigate the behavior difference in System.Runtime.Numeric when running on desktop System.Runtime.Numeric has some different behaviors when running on desktop than when running on netcore. the PR #15050 has the places needed to be investigated which are marked with [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] +15054 area-Serialization Remove CodeDom dependency from S.P.DataContractSerialization. Removing CodeDom dependency from S.P.DataContractSerialization. as System.CodeDom is a higher level OOB component. Fix #15047 /cc: @zhenlan @weshaggard +15056 area-System.Globalization Fix Calendar tests to make it run against desktop Fixes #14984 +15068 area-System.Runtime Augment BinaryFormatter tests - Uncomment tests that had previously been commented out while waiting for more types to be properly serializable - Add tests for various equality comparers, some of which are particularly interesting because they deserialize as a different object type - Decrease the running time of the fuzzing tests - Deleted dead code from a previous change that removed a test / remoting members (This will fail CI until https://github.com/dotnet/coreclr/pull/8892 is brought into corefx.) cc: @danmosemsft +15069 area-System.Security Proposal: API additions for determining curve support Right now in netstandard1.6 we have `ECCurve` for using named or arbitrary ECC curves. This is very useful for certain type of applications where the curve is a configurable option (for example, a German company that insists on using brainpool curves for certain operations). What we don't have right now is an easy way to list all of the supported named curves for a particular platform. Keeping with the brainpool example, Windows 10 supports most (if not all) of the named brainpool curves, however Windows 8.1 and below do not in CNG. Also, depending on how far #9394 goes, macOS CommonCrypto / Security Transforms do not support curves other than the standard NIST prime curves and some of djb's curves. I'm not entirely sure all platforms support arbitrary curves, either (for example, Twisted Edwards curves). I would then propose an API that lets us determine the capabilities of the current platform. +15072 area-System.Security Fix Windows 7 issue with RC2 EffectiveKeyLength "The SymmetricAlgorithm RC2 is broken with Windows 7; this fixes that by setting EffectiveKeyLength on the algorithm handle instead of the key handle. Addresses https://github.com/dotnet/corefx/issues/12926 : RC2CipherTests failing on Win7 with ""unknown error""" +15073 area-System.Threading Fix ActionBlockTests.TestFaulting test Fixes https://github.com/dotnet/corefx/issues/14505 cc: @kouvel +15074 area-Infrastructure Update 1.2.0 nupkgs to 2.0.0 This is consistent with the branding of the release. /cc @weshaggard @chcosta +15076 area-Serialization Add More Tests Covering XmlSerializer Supporting SoapEncoded Message +15077 area-System.Collections Fix System.ObjectModel test to run on desktop fixes #14990 +15078 area-Serialization Add More Tests Covering XmlSerializer Supporting SoapEncoded Message Fix #15076 +15080 area-System.Memory IndexOf/SequenceEqual methods for Span. "These are requested for the parsing libraries. There will also be ReadOnlySpan<> versions as well as char/byte-specific overloads (that bypass IEquatable.Equals() in favor of ""=="") but most or all of that will be copy-paste of these once we're happy with the generic versions." +15081 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs to beta-24913-01, beta-24914-07, beta-24913-00, respectively (master) +15083 area-Infrastructure System.Runtime.Serialization.Primitives is missing from NETCore.App ref It looks like netstandard.dll has a bunch of dangling refs. @weshaggard when you added the netstandard.dll to the package you disabled the closure validation on it which introduced this issue. +15084 area-System.Net Fix System.Net.Primitives.Functional.Tests to run on net46 Fixes #10817 Fixes #10816 Fixes #10815 Fixes #10814 +15089 area-System.Data SqlClient Managed SNI tries to establish a UDP connection for Sql Server connections SqlClient Managed SNI profiling shows that there is a significant amount of time being spent to open a connection while resolving the default instance port `SNIProxy.TryTOGetDefaultInstancePort(...)` https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIProxy.cs#L267 This may be unnecessary for most use cases. I am opening this issue to find a way to optimize this. ![image](https://cloud.githubusercontent.com/assets/1623701/21869018/676231b2-d80a-11e6-9d2d-ce586653c95d.png) cc @corivera @geleems +15091 area-System.Net Port NegotiateStream test fix to release/1.1.0 Not having this commit is causing consistent failures in the Ubuntu Outerloop runs for rel/1.1.0 @karelz Original PR: https://github.com/dotnet/corefx/pull/12831 Stop crashing in NegotiateStream tests on Unix when KDCSetup fails The NegotiateStream tests on Unix try to set up kerberos infrastructure. The tests then check whether infrastructure is available, and gracefully don't run if it's not. But the KDCSetup fixture is throwing an exception if the infrastructure can't be configured, which is causing a fair number of our outerloop CI runs to fail on various OSes. Until we have a better solution in place, I'm making the failure graceful rather than crashing. +15092 area-Infrastructure Move stuff from Tools-Override into BuildTools As part of the dev/eng work we changed a lot of targets in BuildTools and put them under Tools-Override as well as created a custom CoreFxTools task. All of these need to be moved to BuildTools. +15093 area-Infrastructure Refactor build traversal Change contract of cross-project target to return configuration rather than trying to construct a project item. This preserves the metadata of the original Project/ProjectReference. When the MSBuild task creates the TargetOutputs it will copy all the original metadata from the Project items and create the OriginalItemSpec metadata. From this we can simply transform back to a Project/ProjectReference and prepend Configuration to the AdditionalProperties. This fixes a case where projects were setting AdditionalProperties and we were squashing it. To make it clearer how this worked I made the targets only return a property so that we don't accidentally squash any metadata set on the project. I found that we were never using the DetermineProjectsConfiguration target so I deleted it. I've also cleaned up the targets to make things a bit more consistent and added comments. +15094 area-Infrastructure Update development docs to reflect new engineering changes skip ci please @ericstj @mellinoe @joperezr @chcosta @danmosemsft @karelz I'd appreciate you guys having a look as well. +15095 area-System.Console Fix System.Console test to run on net46 Fixes #10844 +15096 area-System.Net CurlHandler calls HttpContent.ReadAsStreamAsync - doesn't this mean request bodies are always buffered? While tracking down some odd behaviour with HttpClient on OSX (request body always seems to be buffered, unlike response body) I noticed that `CurlHandler` calls `HttpContent.ReadAsStreamAsync` rather than `CopyToAsync`: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs#L1167 Am I correct in my assumption that this means the request body will always be buffered before sending? From what I understand, `CopyToAsync` will copy the stream without buffering if possible, but `ReadAsStreamAsync` will load the stream into a buffer first and return a stream over that buffer. Looking at the code I can see why it's been done that way but it means that, unlike the Windows implementation, uploads of really large files may cause problems. +15098 area-System.IO Paths with bad colons don't throw ArgumentException On desktop paths like `C::` would throw `ArgumentException`. In CoreFX we're currently throwing `NotSupportedException`. (See tests in System.IO.FileSystem.) The Path class in CoreCLR needs updated. +15099 area-Meta Add baseline file for uap10.1 vs. NS2.0 We already have these baselines comparing to netcoreapp2.0: ``` layout\ApiCompatBaseline.netfx461.txt layout\ApiCompatBaseline.netstandard20.txt ``` We could use another one in there, that compares uap10.1 to netstandard2.0. We can then burn this file down to zero as we did before with ApiCompatBaseline.netstandard20.txt Joe maybe you can do this with your work to enable the uap build configurations. +15100 area-System.IO Fix tests run on desktop Conditionalize tests appropriately so long path and new syntax support are taken into account. Move some test data into Theories for easier debugging. Fix and add issue to colon check tests until we fix CoreCLR. Note that there are still some failing tests, but this addresses all of the long path & invalid syntax issues (the majority). #14986 @tarekgh @ianhays @danmosemsft +15101 area-System.Runtime System.Runtime.Loader tests don't work when running with shared framework. As a part of https://github.com/dotnet/corefx/pull/14823, the following two tests fail. System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadFromAssemblyName_ValidTrustedPlatformAssembly ``` System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadFromAssemblyName_ValidTrustedPlatformAssembly [FAIL] System.IO.FileNotFoundException : Could not load file or assembly 'System.Runtime.dll'. The system cannot find the file specified. ---- System.IO.FileNotFoundException : The system cannot find the file specified. (Exception from HRESULT: 0x80070002) Stack Trace: at System.Runtime.Loader.AssemblyLoadContext.nGetFileInformation(String s) at System.Runtime.Loader.AssemblyLoadContext.GetAssemblyName(String assemblyPath) D:\git\corefx\src\System.Runtime.Loader\tests\AssemblyLoadContextTest.cs(99,0): at System.Runtime.Loader.Tests.AssemblyLoadContextTest.LoadFromAssemblyName_ValidTrustedPlatformAssembly() ----- Inner Stack Trace ----- System.Runtime.Loader.Tests.AssemblyLoadContextTest.GetAssemblyNameTest_ValidAssembly [FAIL] System.IO.FileNotFoundException : Could not load file or assembly 'System.Runtime.dll'. The system cannot find the file specified. ---- System.IO.FileNotFoundException : The system cannot find the file specified. (Exception from HRESULT: 0x80070002) Stack Trace: at System.Runtime.Loader.AssemblyLoadContext.nGetFileInformation(String s) at System.Runtime.Loader.AssemblyLoadContext.GetAssemblyName(String assemblyPath) D:\git\corefx\src\System.Runtime.Loader\tests\AssemblyLoadContextTest.cs(27,0): at System.Runtime.Loader.Tests.AssemblyLoadContextTest.GetAssemblyNameTest_ValidAssembly() ----- Inner Stack Trace -----` ``` and System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext ``` System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext [FAIL] System.IO.FileNotFoundException : Could not load file or assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. ---- System.IO.FileNotFoundException : The system cannot find the file specified. (Exception from HRESULT: 0x80070002) Stack Trace: at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type, ObjectHandleOnStack keepAlive) at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) at System.Reflection.Assembly.GetType(String name, Boolean throwOnError) D:\git\corefx\src\System.Runtime.Loader\tests\DefaultContext\DefaultLoadContextTest.cs(290,0): at System.Runtime.Loader.Tests.DefaultLoadContextTests.DefaultContextOverrideTPA() D:\git\corefx\src\System.Runtime.Loader\tests\DefaultContext\DefaultLoadContextTest.cs(207,0): at System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext() ----- Inner Stack Trace ----- at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly) at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath) D:\git\corefx\src\System.Runtime.Loader\tests\DefaultContext\DefaultLoadContextTest.cs(41,0): at System.Runtime.Loader.Tests.OverrideDefaultLoadContext.Load(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingLoad(AssemblyName assemblyName) at System.Runtime.Loader.AssemblyLoadContext.Resolve(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName) ``` +15102 area-System.Net Provide websocket implementation for Managed httplistener. cc @karelz @stephentoub @CIPop @davidsh fixes #14690 +15103 area-System.Diagnostics Add Activity to DiagnosticSource This change introduces Activity class which provides operation context for DiagnosticSource, see #15023 and [User Guide](https://github.com/lmolkova/corefx/blob/dev/diagnosticsource_activity/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md) for more details. +15106 area-System.Threading No waiting on SemaphoreSlim For `SemaphoreSlim`, there are `semaphore.Wait()`, `semaphore.Wait(int)`, `semaphore.WaitAsync()`, etc. methods. Sometimes it is necessary *to try* obtain the semaphore, *but if it is unavailable then not to wait*. This is a real use case, as evident by the number of StackOverflow posts related to it. So: `semaphore.Wait(0)` or `semaphore.WaitAsync(0)` or `semaphore.Wait(TimeSpan.Zero)`, etc. But that is undocumented. If this behavior is allowed, as I assume it is, please document it in the method notes. Until such time we cannot rely on this behavior. +15109 area-Infrastructure Conflict-resolution: NETCore.App needs to declare itself a preferred package Add a props to declare this. +15110 area-Infrastructure Conflict-Resolution: NETCore.App is not winning over fat packages for copy-local "In 1.0/1.1 NETCore.App was composed of a mix of fat packages and split packages. In 2.0 NETCore.App is one big split package. This means that for a portable app using the shared framework it may see copy-local assets from 1.0/1.1 without seeing any of the newer 2.0 SharedFramework assets to cancel them out. 1. One solution is to make NETCore.App carry metadata (via a generated props file) that lists all the runtime files it represents. These can be fed into conflict resolution as an independent item. 2. Another solution would be to make MSBuild aware of the contents of the shared framework directly and use these for conflict resolution. I'm thinking to do 1 since it doesn't involve ""searching"" for the shared framework. @eerhardt did you do something similar in publish? How are you handling filtering now that type/platform doesn't exist. Seems like a similar problem. /cc @weshaggard @terrajobst " +15111 area-System.Linq Cloning dictionnary<,> by reflection and expression tree "### Hello everyone, I'm coming to share with you a strange I have with my code at the moment. I'm exporting an XNA game to Monogame for the Universal Windows application (wup). But in the game code we make deep and brute cloning of some class (public and private propriety) We created a code module for the cloning a bit like Deepcloner, using ""expression tree"" to generate the cloner fonctions by different type. The code is working well on .Net4.5 but on .NetCore once the export problem solved it have some trouble during the ""Dictionary"" cloning , the cloner element has the same size than the original but not the same KEY values or the same Value. Yet the cloning code executes well without showing an error. ### Expression tree generate (new System.Linq.Expressions.Expression.BlockExpressionProxy(resultExpression as System.Linq.Expressions.ScopeN)).DebugView : ``` .Block( System.Collections.Generic.Dictionary`2[System.String,System.String] $var1, System.Collections.Generic.Dictionary`2[System.String,System.String] $var2) { .Try { .Block() { .If (.Call $visited.ContainsKey($original) == True) { .Block() { $var1 = (System.Collections.Generic.Dictionary`2[System.String,System.String])$visited.Item[$original]; .Goto #Label1 { } } } .Else { .Default(System.Void) }; $var1 = (System.Collections.Generic.Dictionary`2[System.String,System.String]).Call System.Activator.CreateInstance(.Constant(System.Collections.Generic.Dictionary`2[System.String,System.String])) ; .Call $visited.Add( (System.Object)$original, (System.Object)$var1); $var2 = (System.Collections.Generic.Dictionary`2[System.String,System.String])$original; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 0 field name : count""); $var1.count = $var2.count; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 1 field name : version""); $var1.version = $var2.version; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 2 field name : freeList""); $var1.freeList = $var2.freeList; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 3 field name : freeCount""); $var1.freeCount = $var2.freeCount; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : --> field name : buckets""); .If ($var2.buckets != null) { .Block() { $var1.buckets = (System.Int32[]).Call ((System.Array)$var2.buckets).Clone() } } .Else { .Default(System.Void) }; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : --> field name : entries""); .If ($var2.entries != null) { .Block( System.Collections.Generic.Dictionary`2+Entry[System.String,System.String][] $var3, System.Int32 $var4, System.Int32 $var5) { $var4 = .Call ($var2.entries).GetLength(0); $var3 = .NewArray System.Collections.Generic.Dictionary`2+Entry[System.String,System.String][$var4]; $var5 = 0; .Loop { .Block() { .If ($var5 >= $var4) { .Break #Label2 { } } .Else { .Default(System.Void) }; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 0 field name : hashCode""); ($var3[$var5]).hashCode = (($var2.entries)[$var5]).hashCode; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 1 field name : next""); ($var3[$var5]).next = (($var2.entries)[$var5]).next; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 2 field name : key""); ($var3[$var5]).key = (($var2.entries)[$var5]).key; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : 3 field name : value""); ($var3[$var5]).value = (($var2.entries)[$var5]).value; ++$var5 } } .LabelTarget #Label2:; $var1.entries = $var3 } } .Else { .Default(System.Void) }; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : --> field name : comparer""); .If ($var2.comparer != null) { .Block() { $var1.comparer = (System.Collections.Generic.IEqualityComparer`1[System.String]).Call (.Call Storages.Cloning.ExpressionTreeCloner.getOrCreateDeepFieldBasedCloner(.Call ($var2.comparer).GetType() )).Invoke( $var2.comparer, $visited) } } .Else { .Default(System.Void) }; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : --> field name : keys""); .If ($var2.keys != null) { .Block() { $var1.keys = (System.Collections.Generic.Dictionary`2+KeyCollection[System.String,System.String]).Call (.Call Storages.Cloning.ExpressionTreeCloner.getOrCreateDeepFieldBasedCloner(.Call ($var2.keys).GetType() )).Invoke( $var2.keys, $visited) } } .Else { .Default(System.Void) }; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : --> field name : values""); .If ($var2.values != null) { .Block() { $var1.values = (System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.String]).Call (.Call Storages.Cloning.ExpressionTreeCloner.getOrCreateDeepFieldBasedCloner(.Call ($var2.values).GetType() )).Invoke( $var2.values, $visited) } } .Else { .Default(System.Void) }; .Call System.Diagnostics.Debug.WriteLine(""debug expression eval : --> field name : _syncRoot""); .If ($var2._syncRoot != null) { .Block() { $var1._syncRoot = (System.Object).Call (.Call Storages.Cloning.ExpressionTreeCloner.getOrCreateDeepFieldBasedCloner(.Call ($var2._syncRoot).GetType() )).Invoke( $var2._syncRoot, $visited) } } .Else { .Default(System.Void) } } } .Catch (System.Exception $ex) { .Block() { .Call System.Diagnostics.Debug.WriteLine($ex); .Throw $ex } }; .Label .LabelTarget #Label1:; (System.Object)$var1 } ``` ### debug output : ![screen shot 01-12-17 at 04 07 pm](https://cloud.githubusercontent.com/assets/4943931/21895590/9432ea72-d8e3-11e6-94b5-fb4d3822972a.PNG) somebody can tell what wrong please. thank." +15112 area-Meta Packages with platform specific implementation in net4* TFM We've identified following netstandard/corefx nuget packages as breaking when used with VS for Mac and targeting .NET Framework. - System.Runtime.InteropServices.RuntimeInformation - System.Globalization.Extensions - System.Net.Http - System.Text.Encoding.CodePages - System.IO.Compression The underlying issue is when running on non-Windows platform using .NET TFM e.g. `net462` the nuget `lib` implementation is used and assembly copied to application folder for execution but that will fail because for packages above the implementation has hard Windows dependencies. This is becoming serious issue as more developers adopt netstandard packages and even if Mono provides platform independent implementation the assembly from local folder is preferred over Mono implementation in GAC. +15114 area-System.Console Make System.Console throw the same Exception on netcore as the full framework "The desktop throw IOException on the follwoing calls: ```C# Assert.Throws(() => Console.WindowWidth = 0); Assert.Throws(() => Console.WindowHeight = 0); ``` while netcore throw ArgumentOutOfRangeException ```C# Assert.Throws(""value"", () => Console.WindowWidth = 0); Assert.Throws(""value"", () => Console.WindowHeight = 0); ``` please have a look at the PR #15095 for more info " +15115 area-System.Memory Specialized char/byte overloads for Span.IndexOf/Span.SequenceEquals() "This is a pretty mechanical copy-paste. Main difference is that ""=="" rather than IEqualityComparer<>.Equals is used for the compare. Still to do: - ReadOnly analogues of all this. That's another copy-paste op. - More performant implementation for the byte/char overloads (comparing a dword at a time.) Not sure if we have the needed pinning support at this time but in any case, I want that in its own PR and I want to get this big copy-paste thing in before the merge ban. " +15116 area-Infrastructure Add option to build script to have it also build and run tests. Perhaps `build.cmd -all` which would include the test project builds. +15117 area-Infrastructure Need to add build and test support for corert As part of the new engineering changes we need to add build and test configuration support for corert builds of the libraries. In other words we need to make the following commands work and build the correct stuff: ``` build -framework corert build-tests -framework corert ``` cc @jkotas @SedarG +15118 area-System.Security SSLv3_method not defined in file libssl.so.1.0.0 Hi! I'm trying to access an SQL Server via EF on Arch Linux and the following error occurs. ``` Exception message: /opt/dotnet/dotnet: relocation error: /opt/dotnet/shared/Microsoft.NETCore.App/1.1.0/System.Security.Cryptography.Native.OpenSsl.so: symbol SSLv3_method, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference ``` I know Arch Linux is not supported but maybe you guys have a hint so I may be able to fix this. ### Steps to reproduce Execute an arbitrary EF statement ### Further technical details EF Core version: 1.1.0 Database Provider: Microsoft.EntityFrameworkCore.SqlServer Operating system: Arch Linux IDE: (e.g. Visual Studio Code) +15120 area-System.IO dotnet build on NFS: Access to the path '.SDKVersion' is denied. Re-issue of https://github.com/dotnet/cli/issues/4227 # Problem The following problem occurs when attempting to build a dotnet project in Ubuntu when the project to build is located on a network file system. When I run `dotnet build -f netstandard1.6` on any project, `dotnet build` returns the following output: ``` Project projectname (.NETStandard,Version=v1.6) will be compiled because expected outputs are missing Compiling projectname for .NETStandard,Version=v1.6 Access to the path '/mnt/users/username/Documents/Source/projectsolution/src/projectname/obj/Debug/netstandard1.6/.SDKVersion' is denied. ``` However, when I run `ls -lah` with the path shown above, it shows me that the file is accessible (at least for me): ``` -rwxr--r-- 1 username usergroup 0 sep. 22 11:31 /mnt/users/username/Documents/Source/projectsolution/src/projectname/obj/Debug/netstandard1.6/.SDKVersion* ``` I am also able to open, edit and delete the file in the file explorer, with `gedit`, with `vim` or other usual tools. Running `chmod a+rwx` on the file, so that all access right are granted does also not solve the problem. In this case the project files are located on a NFS file system that is mounted in ubuntu. Any other program like `vim` or `git` that create dotfiles (files that start with `.`) work fine. # Workaround If I supply a path in `/tmp` with the `-b` option, the build runs successfully. # Environment data `dotnet --info` output: ``` .NET Command Line Tools (1.0.0-preview3-003555) Product Information: Version: 1.0.0-preview3-003555 Commit SHA-1 hash: a2b861e4c8 Runtime Environment: OS Name: ubuntu OS Version: 16.04 OS Platform: Linux RID: ubuntu.16.04-x64 ``` @kosak gives a good debug startin point in https://github.com/dotnet/cli/issues/4227#issuecomment-253938255 +15121 area-Infrastructure Provide a nice error message when building an individual project without the configuration initalized After the engineering work if you try to build an individual project for a build configuration that hasn't been setup by calling build.cmd once for it will cause all kinds of random looking errors. We should detect this case and give a good error with a clear message of what needs to be done to fix it. +15122 area-Infrastructure Provide a way to build all configurations With the new engineering workflow we no longer have a simple way to build all configurations of a library or test project. We should add support for a build-all supported configurations for a given machine. We should do that from the root level as well as from an individual test project level. +15123 area-System.Memory Create the ReadOnlySpan<> equivalents for IndexOf/SequentialEqual Another copy-paste job. +15126 area-Infrastructure Code coverage in dev/eng Enable code coverage in dev/eng +15127 area-System.IO Test Failure: System.IO.Tests.Directory_SetCurrentDirectory.SetToValidOtherDirectory Encountered this random failure in an unrelated PR under Centos dotnet_corefx/master/centos7.1_release_prtest 2060 centos71-20160929-f983f0 01/11 04:35 PM steveharter 15072 MESSAGE: Assert.Equal() Failure Expected: 42 Actual: 255 STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_release_prtest/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 164 +15128 area-System.Numerics Fix the outerloop test cases on System.Numeric to run on desktop fixes #14992 fixes #14991 +15129 area-System.Reflection Fix System.Reflection.Context and System.Console test to run on Desktop fixes #10823 fixes #10842 +15131 area-Meta Audit behavioral differences between CoreFX and Desktop Eg by looking through all tests that are desktop specific by grepping for `SkipOnTargetFramework.*TargetFrameworkMonikers.Netcoreapp` We are concerned about cases where we broke compat with Desktop exception behavior, and now with the new focus on NS2.0 we want to be more closely compatible. See https://github.com/dotnet/corefx/pull/15095/files/51dfc8f3bb7a08f87ba519ed39ec70a443b35507#diff-e33ac35956193577452d988d644a7866 +15132 area-System.Reflection Adding netcoreapp1.2corert configuration to System.Reflection.Primitives @jkotas, PTAL /cc @dotnet/corert-contrib +15135 area-Meta Announcement: Engineering changes for corefx Over the last couple months, we have been doing some overhauling of our corefx engineering system in the dev/eng branch. The time has finally come to get these changes into master so we are going to use this issue to give a heads up on the details. ## Primary reasons for the changes * **Build from source** * Value: Simplify on-boarding of new Linux distros * As we have worked more in the open source space we finally made the realization that the source itself is also a product and we need to enable others to easily consume and build our full product from the source code itself. Our engineering system had numerous problems that made it difficult to bootstrap and build a full product from source with minimal external dependencies. * **Package reduction** * Value: .NET Core is now 1 package instead of 100's of tiny packages * We realized that we went overboard with the number of individual library packages we have. While it enables a very flexible system it also greatly increases the complexity of composing a fully functional framework. * **Other changes** * Build produces flat product layout which is ready for execution * Better build defaults (use your environment) ## When are we merging We are planning to begin merging changes on Friday 1/13 and to help with the merge conflicts we plan to **disable commits/merges** to corefx master branch on **Friday 1/13, Sat, Sun, and Mon 1/16**. We will open up the master branch again as soon as we have the merge in and the master branch functional. After the merge any active PRs will need to be rebased on top of master. Fri 1/13 **merge** is in https://github.com/dotnet/corefx/pull/15165. The branch is unlocked now. ## What does it mean to folks working in corefx After pulling the merged changes you should do a full clean and build. ``` clean --all build build-tests ``` As part of this work we have split the build and build-tests into separate steps, and build will only build the product and build-tests will build and run the tests. We highly recommend reading over our developer guide to better understand the developer workflow https://github.com/dotnet/corefx/blob/dev/eng/Documentation/project-docs/developer-guide.md. Given with the way we are building now you need to build from the root at least once before you can work on an individual project, from the command line or in VS. ## What changed Before we would multiplex our build configurations at every individual library level (i.e. .builds files) and in order to do that it required that we had a previous version of lots of the CoreFx libraries which we retrieved by restoring nuget packages of a previous corefx official build. That caused a lot of extra complexity in numerous ways such as restoring tons of nuget packages on every build as well as building for all configurations all the time. With our engineering work we have eliminated a lot of those complexities. Now the only nuget packages are for things that don't build in corefx itself and the package restoring will be scoped to tool initialization and under the external directory. All dependencies that are part of corefx will be **built live** in corefx instead of being restored from older packages. Now when you build from the root we will build all the reference assemblies and create a targeting pack in a flat directory and then build all the libraries referencing things from the targeting pack. By default this will produce a .NET Core build for the OS you are running on and it will create a flat runtime directory `bin\runtime\netcoreapp--Debug-x64` which will contain a fully runnable framework. That runtime directory can be used to run a .NET Core application via corerun or dotnet hosts. So no more groveling through the bin directory to try and cobble together a functional framework. The tests will also build against this targeting pack and then run on the flat runtime directory that was produced. This also means no more copying or hard-linking the entire framework into every test output directory. We believe these changes will make working in corefx a ton easier. However, it does add a little more work – you need to do root level build to setup the targeting pack and runtime before you can work on libraries. Moreover, if you want to work on more than one framework/configuration (.NET Core, desktop/netfx, and uap), you will need to do a root level build for each of the frameworks/configurations. Root level builds will only build the configuration that is specified so it will skip libraries that aren't applicable to that configuration. We have replaced the .builds files at the library level with a configuration.props file. The configuration.props file will list out the set of supported configurations and when building we will pick and build the best configuration and skip it if there isn't a valid configuration for what you are building. For more details on the configurations see https://github.com/dotnet/corefx/blob/dev/eng/Documentation/coding-guidelines/project-guidelines.md. Another part of the changes is in support of the package reduction goal. We now build a single package that contains all corefx libraries that are part of .NET Standard 2.0. This means that we will be deleting a lot of low level individual library packages and instead our root .NET Core package will contain all those libraries in the one package. This will greatly reduce the number of packages we produce and reduce the package graph depth and complexity for .NET Core applications. We hope this will remove the need for a degree in combinatorics and graph theory to be a .NET Core developer :). ## Things left to be done While we believe we got the basic .NET Core stack functional there are still a number issues that need to be addressed. We have tagged related issues with dev-eng and you can see the current backlog at https://github.com/dotnet/corefx/issues?q=is%3Aissue+is%3Aopen+label%3Adev-eng. A few of the more notable ones are: 1. Desktop/Netfx build configuration and tests aren't functional https://github.com/dotnet/corefx/issues/14911 (ETA: 1-2 weeks) 2. UWP build configuration and tests aren't functional https://github.com/dotnet/corefx/issues/14592 (ETA: 2-3 weeks) We hope that these changes will make working in corefx a lot better but please don't hesitate to let us know any issues you run into and we will do our best to address them. +15136 area-Infrastructure Cannot run tests against specific desktop TFMs You can specify a [particular config file](https://github.com/xunit/xunit/blob/master/src/xunit.console/CommandLine.cs#L116) with the xunit console runner. When we run against a particular TFM we should be generating the right config so the appropriate compat switches (quirks) are set. +15137 area-System.Threading Adding netcoreapp1.2corert configuration to System.Threading.Tasks @jkotas, PTAL /cc @dotnet/corert-contrib +15138 area-System.Collections Adding netcoreapp1.2corert configuration to System.Collections @jkotas, PTAL /cc @dotnet/corert-contrib +15140 area-Infrastructure Fix auto-updates to pass along project.json.template files @dagood tells me it should be as simple as passing those files to the update target so it should be easy to get this working. +15141 area-System.Net implement synchronous completion support in Sockets We complete all I/O asynchronously, even when the underlying OS operation actually completed synchronously. Fix this so that both Windows and Unix can do synchronous socket completions. @stephentoub @CIPop @davidsh @Priya91 +15143 area-System.Data System.Data.OperationAbortedException not present in System.Data.SqlClient contract CC @saurabh500 +15145 area-System.Net Fix System.Private.Uri tests for desktop Looks the behavior of netcore is very different than the desktop so the current existing tests are dramatically failing on the desktop and need to be re-written for the desktoop. #10821 is an example of failures +15146 area-System.Data Remove SSRP for TCP connections without port and Instance name Fixes #15089 The fix is to bring the behavior in sync with Windows Version of SqlClient. Comment https://github.com/dotnet/corefx/issues/15089#issuecomment-272268114 describes the behavior. I ran a test to connect to Azure using Managed version of SNI on Windows. With this change, 30 connnections to Azure SQL take about 13500 ms vs ~24000 ms before the change. cc @corivera @geleems +15147 area-System.Net Disable System.Private.Uri from running on desktop Looks the behavior of netcore is very different than the desktop so the current existing tests are dramatically failing on the desktop and need to be re-written for the desktoop. I have created the issue #15145 to track fix that but for now we disable the test on desktop fixes #10821 +15148 area-Infrastructure Fix projects that have be renamed to .disabled "@mellinoe @joperezr as part of the bring-up it looks like you guys renamed some projects to "".disabled"" We need to work on re-enabling those. I found the following from a quick search: ``` mscorlib.WinRT-Facade.csproj.disabled System.Net.Http.Rtc.csproj.disabled System.Numerics.Vectors.WindowsRuntime.csproj.disabled XsltScenarios.Tests.csproj.disabled System.Runtime.WindowsRuntime.csproj.disabled System.Runtime.WindowsRuntime.UI.Xaml.csproj.disabled ```" +15150 area-System.Security Create x-plat System.Security.Principal.Identity `WindowsIdentity` is tied to Windows concept of 1 identity per user. Linux can have multiple identities (in various locations on different distros) per user. Create common `Identity` which would abstract both approaches and provide Identity API which can be used on any OS. Details here https://github.com/dotnet/corefx/issues/7325#issuecomment-270967064 +15151 area-Infrastructure openSUSE 13.2 builds time out frequently. While I was looking at some other stuff, I noticed that it looks like the runs of openSUSE 13.2 hang from time to time when running tests. See https://ci.dot.net/job/dotnet_corefx/job/master/job/opensuse13.2_release/. Some jobs complete but others timeout (and then the logic to kill everything makes it look like MSBuild is failing). It isn't 100% reproducible, as some builds do complete without issue. I can't see when this started (the history doesn't go back far enough to see when this started). +15152 area-System.Threading Move System.Threading.Tasks implementation down to CoreLib see https://github.com/dotnet/corefx/pull/15137#discussion_r95915839 +15154 area-Serialization Refactor Files under Common/src/System/CodeDom Refactor the files under src/Common/src/System/CodeDom and remove the ifdefs in the files. See the following comments copied from https://github.com/dotnet/corefx/pull/15054 for more details: >I took a quick look. It looks like the serialization lib is using this CodeDom support for parsing the type arguments out of a type name string? Could we just factor out that parsing into its own helper that's then used by both CodeDom and the serialization lib, rather than sharing these whole files and using these ifdefs to control namespace and visibility? +15156 area-System.Threading Purpose of net46 AclExtensions What's the purpose net46 AclExtension files in CoreFX repo ? They expose different API then their CoreFX/netstandard counterparts and missing quite few checks. One example is https://github.com/dotnet/corefx/blob/296dc18f32e718280794becd8eccc67aab50251b/src/System.Threading.AccessControl/src/System/Threading/ThreadingAclExtensions.net46.cs +15157 area-System.Net Allow changing cipher suites offered in SSL/TLS handshake Some servers require clients to use specific suite of ciphers, that is different from the one netcore offers by default. This is the list that netcore on Windows 10 defaults to (on my PC) ```text Handshake Protocol: Client Hello Handshake Type: Client Hello (1) Length: 165 Version: TLS 1.2 (0x0303) Random Session ID Length: 0 Cipher Suites Length: 46 Cipher Suites (23 suites) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f) Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d) Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c) Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d) Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c) Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a) ``` For comparison, here's the list netcore offers on OS X Sierra ```text Cipher Suites Length: 202 Cipher Suites (101 suites) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_DH_DSS_WITH_AES_256_GCM_SHA384 (0x00a5) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 (0x00a3) Cipher Suite: TLS_DH_RSA_WITH_AES_256_GCM_SHA384 (0x00a1) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x006b) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a) Cipher Suite: TLS_DH_RSA_WITH_AES_256_CBC_SHA256 (0x0069) Cipher Suite: TLS_DH_DSS_WITH_AES_256_CBC_SHA256 (0x0068) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) Cipher Suite: TLS_DH_RSA_WITH_AES_256_CBC_SHA (0x0037) Cipher Suite: TLS_DH_DSS_WITH_AES_256_CBC_SHA (0x0036) Cipher Suite: TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0088) Cipher Suite: TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA (0x0087) Cipher Suite: TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0086) Cipher Suite: TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA (0x0085) Cipher Suite: TLS_ECDH_anon_WITH_AES_256_CBC_SHA (0xc019) Cipher Suite: TLS_DH_anon_WITH_AES_256_GCM_SHA384 (0x00a7) Cipher Suite: TLS_DH_anon_WITH_AES_256_CBC_SHA256 (0x006d) Cipher Suite: TLS_DH_anon_WITH_AES_256_CBC_SHA (0x003a) Cipher Suite: TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA (0x0089) Cipher Suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 (0xc032) Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02e) Cipher Suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 (0xc02a) Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 (0xc026) Cipher Suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA (0xc00f) Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA (0xc005) Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d) Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d) Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) Cipher Suite: TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0084) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) Cipher Suite: TLS_DH_DSS_WITH_AES_128_GCM_SHA256 (0x00a4) Cipher Suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 (0x00a2) Cipher Suite: TLS_DH_RSA_WITH_AES_128_GCM_SHA256 (0x00a0) Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e) Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x0067) Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040) Cipher Suite: TLS_DH_RSA_WITH_AES_128_CBC_SHA256 (0x003f) Cipher Suite: TLS_DH_DSS_WITH_AES_128_CBC_SHA256 (0x003e) Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032) Cipher Suite: TLS_DH_RSA_WITH_AES_128_CBC_SHA (0x0031) Cipher Suite: TLS_DH_DSS_WITH_AES_128_CBC_SHA (0x0030) Cipher Suite: TLS_DHE_RSA_WITH_SEED_CBC_SHA (0x009a) Cipher Suite: TLS_DHE_DSS_WITH_SEED_CBC_SHA (0x0099) Cipher Suite: TLS_DH_RSA_WITH_SEED_CBC_SHA (0x0098) Cipher Suite: TLS_DH_DSS_WITH_SEED_CBC_SHA (0x0097) Cipher Suite: TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0045) Cipher Suite: TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA (0x0044) Cipher Suite: TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0043) Cipher Suite: TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA (0x0042) Cipher Suite: TLS_ECDH_anon_WITH_AES_128_CBC_SHA (0xc018) Cipher Suite: TLS_DH_anon_WITH_AES_128_GCM_SHA256 (0x00a6) Cipher Suite: TLS_DH_anon_WITH_AES_128_CBC_SHA256 (0x006c) Cipher Suite: TLS_DH_anon_WITH_AES_128_CBC_SHA (0x0034) Cipher Suite: TLS_DH_anon_WITH_SEED_CBC_SHA (0x009b) Cipher Suite: TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA (0x0046) Cipher Suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 (0xc031) Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02d) Cipher Suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 (0xc029) Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 (0xc025) Cipher Suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA (0xc00e) Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA (0xc004) Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c) Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c) Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) Cipher Suite: TLS_RSA_WITH_SEED_CBC_SHA (0x0096) Cipher Suite: TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0041) Cipher Suite: TLS_RSA_WITH_IDEA_CBC_SHA (0x0007) Cipher Suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011) Cipher Suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007) Cipher Suite: TLS_ECDH_anon_WITH_RC4_128_SHA (0xc016) Cipher Suite: TLS_DH_anon_WITH_RC4_128_MD5 (0x0018) Cipher Suite: TLS_ECDH_RSA_WITH_RC4_128_SHA (0xc00c) Cipher Suite: TLS_ECDH_ECDSA_WITH_RC4_128_SHA (0xc002) Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005) Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) Cipher Suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) Cipher Suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) Cipher Suite: TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016) Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013) Cipher Suite: TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA (0x0010) Cipher Suite: TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA (0x000d) Cipher Suite: TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA (0xc017) Cipher Suite: TLS_DH_anon_WITH_3DES_EDE_CBC_SHA (0x001b) Cipher Suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA (0xc00d) Cipher Suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc003) Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a) Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff) ``` Here's the cipher suites offered by .NET for Windows (TLS 1.0 is default unless different SslProtocol specified in call to AuthenticateAsClient) ```text Handshake Protocol: Client Hello Handshake Type: Client Hello (1) Length: 107 Version: TLS 1.0 (0x0301) Random Session ID Length: 0 Cipher Suites Length: 22 Cipher Suites (11 suites) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a) Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005) Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) ``` One way to solve this in corefx would be to add something akin to Xamarin's [ClientCipherSuitesCallback](https://developer.xamarin.com/api/property/System.Net.ServicePointManager.ClientCipherSuitesCallback/) to the [ServicePointManager](https://github.com/dotnet/corefx/blob/master/src/System.Net.ServicePoint/src/System/Net/ServicePointManager.cs). Possible workarounds: 1. See [workaround](https://github.com/dotnet/corefx/issues/1006#issuecomment-183773163) posted in #1006. 1. See Microsoft knowledge base article on how to [restrict the use of certain cryptographic algorithms and protocols in Schannel.dll](https://support.microsoft.com/en-us/kb/245030) (applicable to Windows only). +15158 area-System.Runtime TryStartNoGCRegionNegTest test failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release_prtest/23/consoleText ``` Expected: typeof(System.InvalidOperationException) Actual: (No exception was thrown) at Xunit.Assert.Throws(Type exceptionType, Exception exception) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\ExceptionAsserts.cs:line 143 at Xunit.Assert.Throws[T](Func`1 testCode) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\ExceptionAsserts.cs:line 36 at System.Tests.GCExtendedTests.<>c.b__4_0() in D:\j\workspace\outerloop_win---da4c0a7a\src\System.Runtime\tests\System\GCTests.netstandard1.7.cs:line 114 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at RemoteExecutorConsoleApp.Program.Main(String[] args) ``` +15160 area-Infrastructure Running into proxy issues with init-tools & build-managed "Hi! The precondition is, that I'm sitting in a cooperate network with some kind of proxy/firewall - combination dropping all traffic not routed through it. Authentication method is Windows/NTLM (i guess..?). I cloned the repository yesterday and tried to build it but did not get far with that. In my opinion there are (as far as I can tell) two sources leading to a similar problem: 1) While executing `init-tools` for the first time i ran into proxy issues while downloading the .zip-file containing the current CLI/dotnet.exe. I could work around this by enriching the download-call in the `init-tools.cmd `- file with some proxy-parameter-love. 2) Later in the build process when calling `build-managed`, the target ""VerifyDependencies"" from Tools/Microsoft.DotNet.Build.Tasks.dll (called from VersionTools.targets) uses a WebClient without any proxy parameters. Result is a System.Net.WebException ""(407) Proxy authentication required"". `build-native `worked fine btw! (Or at least did not show up with some fancy red errors ^^) Is working behind a Proxy not supported at all or did I do something wrong/missed a point? Thanks! Peter" +15165 area-Infrastructure Merging branch dev/eng to master related issue: https://github.com/dotnet/corefx/issues/15135 Merging branch dev/eng into master cc: @weshaggard @chcosta @ericstj @mellinoe @karajas +15166 area-Infrastructure Building and running tests not working in VS @karajas it would appear after our changes building and running tests in VS isn't working. At least not for System.Threading.Tasks.Extensions.Tests. +15167 area-Infrastructure Unable to rebuildandtest a test project after build.cmd From the root of my repo, I do: ``` git clean -xdf git fetch --all git checkout upstream/dev/eng build.cmd cd src\System.Linq\tests msbuild /t:rebuildandtest ``` Everything works fine until that last step. When I try to do the msbuild /t:rebuildandtest, it fails while trying to start running the tests. I'm forced to do a build-tests.cmd first and then this works. cc: @weshaggard, @karajas +15168 area-Infrastructure Need easier way to find out where dotnet host is Today I very frequently cd into the test execution directory and use corerun from that directory to run xunit.console.netcore.exe and the tests library. With the changes in dev/eng, the test folder no longer contains corerun or any other host, which means I need to know where the host is I should use to achieve the same thing. How do I do this? cc: @weshaggard, @karajas +15169 area-System.Xml System.Xml.XmlSchemaSet.Tests fix Fixes #14918 Didn't get a repro even with a 100 times run with Helix repro tool. My guess of the failure was a timing thing because I was setting `DisableCaching` to `true` on `TestData`, so probably a test that didn't referenced `TestData` but did needed a switch value got it before caching was disable and that caused the failure. So I changed the approach to have a base class where all the tests in `System.Xml.XmlSchemaSet.Tests` inherit and on a static constructor disable caching so that we ensure that no matter what is the tests' timing or execution order `DisableCaching` is set to true from the beginning. Will run CI tests multiple times before merging to make sure it passes multiple times and we should leave this tests enabled at least one day if they fail again to see if the failure is consistent. /cc @sepidehMS @AlexGhiondea @danmosemsft +15170 area-Infrastructure Symbol indexing has some minor dependency on ConfigurationGroup env variable "If you got to the artifacts tab or a recent dev/eng build, you'll see that the Symbols folder is named `Symbols_$(ConfigurationGroup)`. I *think* that this is the only dependency, and things still appear to work even without setting the ConfigurationGroup property. But, it's possible that there is some other dependency in the task on the variable... https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_build?_a=summary&buildId=519500&tab=artifacts It's possible that VSTS won't properly resolve ConfigurationGroup=$(PB_ConfigurationGroup), I won't know until we have a job run with this change. It is unlikely that, even if that is the case, it would cause any behavior other than what is currently happening. I'm not certain why ""defaultBranch"" was removed when saving the updated build definition, presumably some change on the VSTS side specifying that it's not required if it's master. /cc @weshaggard " +15173 area-System.Text Add a static property Regex.DefaultRegexMatchTimeout to configure default timeouts globally "`System.Text.RegularExpressions.Regex` has [a `.MatchTimeout` property](https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.matchtimeout(v=vs.110).aspx), but there has never been a good way to configure this **globally**. It's always been a very roundabout way (which AFAIK has been removed in .NET Core). Previously, you'd do this: ```c# AppDomain.CurrentDomain.SetData(""REGEX_DEFAULT_MATCH_TIMEOUT"", TimeSpan.FromSeconds(20)); ``` Or in ASP.NET: ```xml ``` Otherwise, we're depending on every developer to set their match timeouts inline, for each regex. The problems with that are: - It's either a maintenance burden, or we create *our own* global config anyway to use everywhere. - It defaults to failure if the developer forgets (creating a security and stability issue, since regexes can be a CPU-killing attack vector) If we had a static property, like this: ```c# namespace System.Text.RegularExpressions { public partial class Regex { // Set a default value, to be used if not overridden. public static TimeSpan DefaultMatchTimeout = Timeout.InfiniteTimeSpan; } } ``` ...we could do this gracefully in code. Thoughts? cc @terrajobst @blowdart @davidfowl [edited by @Priya91 for syntax]" +15174 area-Infrastructure Fixing documentation for code coverage Fixing docs for code coverage runs Note: I'm not skipping CI since I'll use this PR to validate outerloop and coverage runs. cc: @weshaggard +15175 area-System.Runtime Desktop targeting pack: Add ValueTuple type forward to mscorlib for Desktop From discussion with Wes, once the first version of desktop with ValueTuple ships, the targeting pack for that framework needs to be updated with those bits and a typeforward can be added for that target group (I'm not sure the exact string/moniker that will be). +15176 area-System.Runtime Add ValueTuple type forward to CoreRT ValueTuple was implemented in CoreRT. ~~Once it ships (I'm not sure which release or timeframe that will be),~~ The corefx package will need to type forward to CoreRT. FYI @jkotas +15177 area-Infrastructure "Add a ""Helix Test"" step to the official build definitions" "@karajas @chcosta After this, the official definition needs to be updated to pass through the following variables: `$(PB_CloudDropAccountName)` `$(PB_CloudResultsAccountName)` `$(PB_CloudResultsAccessToken)` `$(PB_HelixApiAccessKey)` `$(PB_HelixApiEndPoint)` Once we get a clean official build, I'll try to modify it to include the above variables and then use it to test my local branch. NOTE: You will see that some definitions are passing ""EnableCloudTest=false"". These are distros that we haven't previously done Helix testing on." +15179 area-System.Diagnostics Update AspNetCoreHosting keyword Add httpContext.TraceIdentifier and httpContext.Response.StatusCode keywords which provide useful information for correlation. @vancem @1w2w3y +15181 area-Infrastructure Fix projects for VS cc @karajas This should fix F5 debugging in VS for test projects. We still need to convert all the projects and sln files but this fixes System.Threading.Tasks.Extensions as an example to work by. +15182 area-Infrastructure Update project configuration and sln files /cc @weshaggard Reimplementation of https://github.com/dotnet/corefx/pull/14872 +15184 area-Infrastructure "build-native.[cmd|sh] should not depend on the ""run"" tool" We should remove build-native's dependency on `run.exe`. The rationale is that run requires managed code but there are lot of scinerios where we need to build the native components without being able to run managed code (platform bring-up is one case). In general, we need to be able to build native code without invoking managed code and the use of the run tool in build-native is an impediment to that. This does imply a bit more cost in maintenance as we have to ensure that options to build-native remain somewhat consistent across platforms (and we need to do a better job of documenting them) but I think this cost is worth the flexibility. +15185 area-System.IO File.SetLastWriteTime does not seem to work when called repeatedly "```c# using System; using System.IO; using System.Threading; class Program { static void Main(string[] args) { var path = Path.GetTempFileName(); File.WriteAllText(path, ""foo""); for(var i = 0; i < 10; i++){ Console.WriteLine($""\n--> {new FileInfo(path).LastWriteTimeUtc}""); File.SetLastWriteTime(path, DateTime.Now + new TimeSpan(1, 0, 0)); Thread.Sleep(1000); Console.WriteLine($""--> {new FileInfo(path).LastWriteTimeUtc}""); } } } ``` Produces output: ``` --> 1/14/2017 12:51:52 AM --> 1/14/2017 1:51:52 AM --> 1/14/2017 1:51:52 AM --> 1/14/2017 1:51:53 AM --> 1/14/2017 1:51:53 AM --> 1/14/2017 1:51:54 AM --> 1/14/2017 1:51:54 AM --> 1/14/2017 1:51:55 AM --> 1/14/2017 1:51:55 AM --> 1/14/2017 1:51:56 AM --> 1/14/2017 1:51:56 AM --> 1/14/2017 1:51:57 AM --> 1/14/2017 1:51:57 AM --> 1/14/2017 1:51:58 AM --> 1/14/2017 1:51:58 AM --> 1/14/2017 1:51:59 AM --> 1/14/2017 1:51:59 AM --> 1/14/2017 1:52:00 AM --> 1/14/2017 1:52:00 AM --> 1/14/2017 1:52:01 AM ``` I'd expect all iterations to increment the time by one hour, but only the first one seems to do so. This is happening for both Windows and OSX on `""System.IO"": ""4.3.0-preview1-24530-04""` Is there some caching / throttling going on that I'm not aware of? How can I get this working in a loop?" +15187 area-System.Threading Add tests for thread interrupt in finally blocks Related to dotnet/coreclr#8953 +15191 area-System.Net Allow null HttpResponseMessage in HttpClient.SendAsync? I understand that making this change could quite possibly have far-reaching implications, so I guess at the very least I'd like to start a discussion and understand why it is the way it is. Currently [`HttpClient.SendAsync`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClient.cs#L392) checks that the returned `HttpResponseMessage` is not null and throws an `InvalidOperationException` if it is. (Specifically [here](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClient.cs#L444-L447) and [here](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClient.cs#L476-L479).) I question why that check is necessary. It seems valid to want to implement a custom `HttpMessageHandler` that returns a null response in specific scenarios and not consider it an error condition. But with this behavior in `HttpClient`, you're basically forced to implement that flow through exception handling upstream. I'm curious to get the team's thoughts on this. Thanks! +15192 area-Meta Prefer using Array.Length as upper for loop limit "The JIT can't eliminate range checks if it can't ""see"" `Length` and uses loop cloning which generates a lot of code. Even in cases where not all range checks can be eliminated and loop cloning is used anyway it's still preferable to have fewer range checks. For example, a loop like the one from `CookieContainer.IsLocalDomain` is ~1.8x smaller (421 bytes vs. 230 bytes) despite the fact that loop cloning is still being used." +15194 area-System.Data SqlClient / MultiSubnetFailover / Linux / 1.1.0 (Part II - Not Working) @corivera @saurabh500 @karelz Gents : I am opening another issue as I cannot reopen the original : #14978 Largely, I think I spoke to soon as deploying with the port number fix into our UAT environment FAILED. In order to help understand what was going on I captured two TCPDUMP traces as I performed a simple Open on the SqlConnection object. One container running on HOST01 fails, whilst another running on HOST02 succeeds. The only difference i can see is the order in which DNS returns the primary and secondary - as discussed in #14978 where HOST01 returns the secondary first (this is the failing one) and HOST02 returns the primary. Of course the order shouldn't matter with MSN enabled which it is. From looking at the traces - it doesn't appear that MSN is working at all on Linux - I do not see a parallel invocation of the open socket that I was expecting. Rather it appears to just take the first IP address and try to connect to that. I'm happy to share the traces - only perhaps over something less public ?) I'm also happy to perform any other kind of testing that would help us get to a resolution. The setup is the same as before, only now with port specified (1433). Framework : .NET App 1.1.0 Library : System.Data.SqlClient - 4.3.0 Container Base : Linux Ubuntu 14.04.5 Thanks in advance James +15195 area-Infrastructure Remove step which is not producing any value and is causing a warning +15197 area-Infrastructure Add portable linux flavor for NETCoreApp package Add linux-x64 to the lineup for NETCoreApp. We need a build definition for this @chcosta. I would imagine that the build definition does something to tell the native build to produce portable binaries and passes in /p:PackageRID=linux-x64 to tell packaging to produce a package with a different RID than the native system (alternatively pass in RuntimeOS=linux-x64, if that'd work). +15201 area-System.IO System.IO.FileAttributes are Windows specific There is no way to retrieve POSIX file attributes on Linux via anything in System.IO. System.IO.FileAttributes only has enumerations for Windows specific file attributes. +15202 area-System.Net Failing unit tests in clean macOS development environment "I've followed the instructions outlined [here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md), and after running `./build-tests.sh`, two unit tests failed: ``` ``` ``` ``` This occurred on macOS 10.12.2 (16C67)." +15203 area-System.Net Fix exception when parsing HTTP/2 status line Related issue: #14715 It appears that `CurlResponseHeaderReader` and it's tests always assume that the HTTP status line starts with a string `HTTP/x.y` where `x` and `y` are the HTTP major and minor version numbers, respectively. For HTTP 2, the status line is `HTTP/2` followed by a space and then the rest of the line. There is no `.` character to delimit between major and minor versions. I believe this PR should be OK to merge unless you strictly require a unit test. In this area, I'm unsure as to how to modify `CurlResponseParseUtilsTest` and the `MemberData` provided to the test in order to create new test cases for `HTTP/2` for all tests. Can I get a hand with including HTTP/2 unit tests? Thanks. +15206 area-System.Net System.Net.Http.HttpRequestException: Error while copying content to a stream. "The application is a ClickOnce application. When I run it from it's ClickOnce installer the one which checks for updates first and then starts the application I receive ""Error while copying content to a stream."" error. But, when I run the application manually from it's installed folder it runs without any error. Referenced DLL: System.Net.Http\4.3.0\lib\net46\System.Net.Http.dll ``` System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.ObjectDisposedException: The CancellationTokenSource has been disposed. at System.Threading.CancellationTokenSource.ThrowObjectDisposedException() at System.Threading.CancellationTokenSource.InternalRegister(Action`1 callback, Object stateForCallback, SynchronizationContext targetSyncContext, ExecutionContext executionContext) at System.Threading.CancellationToken.Register(Action`1 callback, Object state, Boolean useSynchronizationContext, Boolean useExecutionContext) at System.Threading.CancellationToken.Register(Action`1 callback, Object state) at System.Net.Http.WinHttpResponseStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken token) at System.Net.Http.StreamToStreamCopy.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__48.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__62`2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpResponseMessageExtensions.d__1`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Reactive.PlatformServices.ExceptionServicesImpl.Rethrow(Exception exception) at System.Reactive.Stubs.<>c.<.cctor>b__2_1(Exception ex) at System.Reactive.AnonymousSafeObserver`1.OnError(Exception error) at System.Reactive.Linq.ObservableImpl.Finally`1._.OnError(Exception error) at System.Reactive.Linq.ObservableImpl.Do`1._.OnError(Exception error) at System.Reactive.Linq.ObservableImpl.SelectMany`2._.Iter.OnError(Exception error) at System.Reactive.Linq.ObservableImpl.Throw`1._.Invoke() at System.Reactive.Concurrency.Scheduler.Invoke(IScheduler scheduler, Action action) at System.Reactive.Concurrency.ScheduledItem`2.InvokeCore() at System.Reactive.Concurrency.CurrentThreadScheduler.Trampoline.Run(SchedulerQueue`1 queue) at System.Reactive.Concurrency.CurrentThreadScheduler.Schedule[TState](TState state, TimeSpan dueTime, Func`3 action) at System.Reactive.Concurrency.LocalScheduler.Schedule[TState](TState state, Func`3 action) at System.Reactive.Producer`1.SubscribeRaw(IObserver`1 observer, Boolean enableSafeguard) at System.ObservableExtensions.SubscribeSafe[T](IObservable`1 source, IObserver`1 observer) at System.Reactive.Linq.ObservableImpl.SelectMany`2._.SubscribeInner(IObservable`1 inner) at System.Reactive.Linq.ObservableImpl.SelectMany`2._.OnNext(TSource value) at System.Reactive.Linq.ObservableImpl.Defer`1._.OnNext(TValue value) at System.Reactive.Linq.ObservableImpl.Using`2._.OnNext(TSource value) at System.Reactive.Linq.ObservableImpl.Select`2._.OnNext(TSource value) at System.Reactive.Linq.ObservableImpl.TimeInterval`1._.OnNext(TSource value) at System.Reactive.SafeObserver`1.OnNext(TSource value) at System.Reactive.Linq.ObservableImpl.Catch`2._.OnNext(TSource value) at System.Reactive.Linq.ObservableImpl.Select`2._.OnNext(TSource value) at System.Reactive.AutoDetachObserver`1.OnNextCore(T value) at System.Reactive.ObserverBase`1.OnNext(T value) at System.Reactive.SafeObserver`1.OnNext(TSource value) at System.Reactive.Linq.ObservableImpl.AsObservable`1._.OnNext(TSource value) at System.Reactive.Subjects.AsyncSubject`1.OnCompleted() at System.Reactive.Threading.Tasks.TaskObservableExtensions.ToObservableDone[TResult](Task`1 task, IObserver`1 subject) at System.Reactive.Threading.Tasks.TaskObservableExtensions.<>c__DisplayClass8_0`1.b__0(Task`1 t) at System.Threading.Tasks.ContinuationTaskFromResultTask`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() ``` " +15208 area-System.Net How to specify network adapter which HttpClient must use? At .NET Framework it can be done by HttpWebRequest.ServicePoint.BindIPEndPointDelegate. Can't find anything about that. It's currently impossible? +15209 area-System.Net Add Cookie Property to System.Net.Http.Headers "Add a Cookie property at System.Net.Http.Headers.HttpRequestHeaders Add a Set-Cookie property at System.Net.Http.Headers.HttpResponseHeaders This will help the access of the Cookies and its manipulation. For example `responseHeader.Set-Cookie.Add(new Cookie(""nameCookie"",""valueCookie""))` " +15210 area-Infrastructure Add portable linux build to official build +15215 area-Infrastructure [ARM32/Linux] Cross build failure - managed build "After merging engineering changes (#15135), cross build fails in managed code build for ARM (targetting for nuget packaging) 1. follow guideline for arm crossbuild (https://github.com/dotnet/corefx/blob/master/Documentation/building/cross-building.md) ``` sudo ./cross/build-rootfs.sh arm ./build-native.sh -release -buildArch=arm -- cross ./build-managed.sh -release ``` error in managed build ``` /nfs/rbp3/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /nfs/rbp3/corefx/Tools/CoreFx.Tools.dll. Could not load file or assembly 'CoreFx.Tools, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified. /nfs/rbp3/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. /nfs/rbp3/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] ``` Need to build CoreFX.Tools (like `build.sh`) 2. try x64 build, and follow guideline for arm crossbuild cannot get nuget package for ubuntu ARM32 3. try x64 build, and arm native build ``` ./clean -all ./build.sh -release ./build-native.sh -release -buildArch=arm -- cross ./build-managed.sh -release -buildArch=arm ``` error in managed build ``` EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.TestHost (>= 1.2.0-beta-24904-03)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.Runtime.CoreCLR (>= 1.2.0-beta-24904-03)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.DotNetHost (>= 1.2.0-beta-001259-00)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.DotNetHostPolicy (>= 1.2.0-beta-001259-00)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.Jit (>= 1.2.0-beta-24904-03)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.DotNetHostResolver (>= 1.2.0-beta-001259-00)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] EXEC : error : Unable to resolve 'runtime.ubuntu.14.04-arm.Microsoft.NETCore.DotNetAppHost (>= 1.2.0-beta-001259-00)' for '.NETCoreApp,Version=v2.0 (ubuntu.14.04-arm)'. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] /nfs/rbp3/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/nfs/rbp3/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/nfs/rbp3/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://www.nuget.org/api/v2/ ""/nfs/rbp3/corefx/bin/obj/AnyOS.AnyCPU.Release/coreclr/netcoreapp/arm/project.json"""" exited with code 1. [/nfs/rbp3/corefx/external/coreclr/coreclr.depproj] Command execution failed with exit code 1. ``` 4. build with arm target ``` ./clean.sh -all ./build.sh -release -buildArch=arm ``` Same as 3. It seems to try to resolve CoreCLR nuget packages and core-setup nuget packages for target architecture. But we cannot resolve these nuget pacakges for arm cannot yet. Core-setup need CoreFX's nuget package, and CoreFX need core-setup nuget packages. And IMHO, If we try to add new target architecture (or OS), we may face similar problem. @jyoungyun @chunseoklee @hqueue @mellinoe @weshaggard @gkhanna79 " +15217 area-System.Security Add Argon2 support to System.Security.Cryptography Are there any plans to support the PHC-winner Argon2? (https://github.com/p-h-c/phc-winner-argon2) Also mentioned in #7127 +15219 area-Infrastructure corefx not using coreclr version defined in dependencies.props As of my opening this issue, the dependencies.props file specifies: ``` beta-24916-02 ``` but tests are being run using an older CoreCLR, version beta-24904-03. This means we're not picking up changes from coreclr, and the auto-updates being generated aren't having the desired effect. cc: @weshaggard +15220 area-Infrastructure Don't copy files just for packaging I suspect this is due to the binplacing behavior. /cc @weshaggard @chcosta @mellinoe +15224 area-System.Net "WinHttpHandler throws ""Could not load file or assembly 'System.IO.Compression'""" "WinHttpHandler throws an error when using it in xproj targeting net46. Other constellations like targetting netcoreapp or having a csproj work fine. ## Error ``` System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. at System.Net.Http.WinHttpResponseParser.CreateResponseMessage(WinHttpRequestState state, Boolean doManualDecompressionCheck) at System.Net.Http.WinHttpHandler.d__105.MoveNext() --- End of inner exception stack trace --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at CompressionTest.Program.d__1.MoveNext() in C:\Sources\CompressionTest\Program.cs:line 21 ``` ## Repro ### project.json ``` { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""System.Net.Http"": ""4.3.0"", ""System.Net.Http.WinHttpHandler"": ""4.3.0"" }, ""frameworks"": { ""net46"": { ""frameworkAssemblies"": { ""System.Runtime"": """", ""System.Threading.Tasks"": """" } } }, ""runtimes"": { ""win10-x64"": {} } } ``` ### Program.cs ```c# public class Program { public static void Main(string[] args) { using(var client = new HttpClient(new WinHttpHandler())) using(var response = client.GetAsync(""http://www.google.de"").Result) { } } } ```" +15226 area-System.Security System.Security.Principal.Windows.Tests failing "Result from my dev machine: ```xml b__45_0() at System.Security.Principal.WindowsIdentity.<>c__DisplayClass61_0.b__0(Object ) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Security.Principal.WindowsIdentity.RunImpersonatedInternal(SafeAccessTokenHandle token, Action action) at System.Security.Principal.WindowsIdentity.RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action) at System.Security.Principal.WindowsIdentity.GetName() at System.Security.Principal.WindowsIdentity.get_Name() at WindowsIdentityTests.CloneAndProperties(Boolean cloneViaSerialization) in C:\github\geoffkizer\corefx\src\System.Security.Principal.Windows\tests\WindowsIdentityTests.cs:line 57]]> b__45_0() at System.Security.Principal.WindowsIdentity.<>c__DisplayClass61_0.b__0(Object ) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Security.Principal.WindowsIdentity.RunImpersonatedInternal(SafeAccessTokenHandle token, Action action) at System.Security.Principal.WindowsIdentity.RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action) at System.Security.Principal.WindowsIdentity.GetName() at System.Security.Principal.WindowsIdentity.get_Name() at WindowsIdentityTests.CloneAndProperties(Boolean cloneViaSerialization) in C:\github\geoffkizer\corefx\src\System.Security.Principal.Windows\tests\WindowsIdentityTests.cs:line 57]]> ```" +15227 area-Infrastructure can't build System.Net.Sockets.Tests locally "(1) Go to src\System.Net.Sockets\tests\FunctionalTests (2) msbuild Result: ``` ""C:\github\geoffkizer\corefx\src\System.Net.Sockets\tests\FunctionalTests\System.Net.Sockets.Tests.csproj"" (d efault target) (1) -> ""C:\github\geoffkizer\corefx\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConso leApp.csproj"" (default target) (2:2) -> (CoreCompile target) -> CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/xunit.core.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Diagnostics\Remot eExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/Xunit.NetCore.Extensions.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Dia gnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/xunit.assert.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Diagnostics\Rem oteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/xunit.abstractions.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Diagnosti cs\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/xunit.performance.core.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Diagn ostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/xunit.execution.dotnet.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Diagn ostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] CSC : error CS0006: Metadata file 'C:\github\geoffkizer\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64- x64/Newtonsoft.Json.dll' could not be found [C:\github\geoffkizer\corefx\src\Common\tests\System\Diagnostics\ RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.csproj] ```" +15228 area-Infrastructure Adds project.json/project.json.template files under external to auto-update list Fixes https://github.com/dotnet/corefx/issues/15219 cc @stephentoub @dagood +15229 area-System.Runtime Make ValueTuple* binary serializable We generally don’t want to add more types to be binary serializable in the framework, due to complexities and the fragility that it causes across version boundaries (remember that binary serialization has to be backward- and forward compatible). That being said, for `ValueTuple` we can likely convince ourselves that the serialization behavior is fixed and mostly a function of the types you instantiate the tuple with. It seems a resonable assumption to say that `ValueTuple` to be serializable if `T1`-`TN` are serializable. Not being binary serializable also makes it harder (and more fragile) for existing code to switch from `Tuple` to `ValueTuple`. +15231 area-Infrastructure Add build option for armel This PR fixes cross build fail on ubuntu-16.04 Signed-off-by: chunseoklee +15234 area-System.Diagnostics On Linux Win32Exception thrown by Process have incorrect error number `Process.Unix.cs` calls: ``` int errno = Interop.Sys.Kill(_processId, Interop.Sys.Signals.SIGKILL); int errno = Interop.Sys.GetPriority(Interop.Sys.PriorityWhich.PRIO_PROCESS, _processId, out pri); ``` which are implemented as ``` return kill(pid, signal); return getpriority(which, who); ``` These functions return -1 on error. They should return errno: ``` return SystemNative_ConvertErrorPlatformToPal(errno); ``` +15243 area-System.IO Missing this in FileSystemAclExtensions method extensions only `GetAccessControl` has it https://github.com/dotnet/corefx/blob/fdc332530a2ec9aca582a6d88f95aaba9660070b/src/System.IO.FileSystem.AccessControl/src/System/IO/FileSystemAclExtensions.net46.cs +15245 area-System.Linq FEATURE_COMPILE_TO_METHODBUILDER compiler constant clarification I'm porting some library from full .Net to .Net Standard and faced an issue that `LambdaExpression` is missing subject method. [See](http://stackoverflow.com/questions/41520319/alternatives-of-compiletomethod-in-net-standard) question on SO. After some research I found that problem is that `LambdaCompiler` is missing one overload ([see referencesource](https://referencesource.microsoft.com/#System.Core/Microsoft/Scripting/Compiler/LambdaCompiler.cs,122)) My question is if it's done intentionally (so API changed relative to full .Net) or it's just a mistake? If the latter I can create a pull request, because I don't see anything can break things down: the only difference with other overloads is that `MethodBuilder` is passing as parameter instead of creating it as local variable. Thus, there is no problem with implementation, then question is if we want to have following API? We had it for several years and I don't see why it should be removed. +15247 area-Infrastructure "Add Debug portableLinux build, and add ""SubType"" ReportingParameter f…" …or MC differentiation +15249 area-System.Xml Fix flaky test in XslCompiledTransform Fixes https://github.com/dotnet/corefx/issues/14775 and https://github.com/dotnet/corefx/issues/14772. These tests used to throw the following exception occasionally: `System.Xml.XmlException: The ':' character, hexadecimal value 0x3A, cannot be included in a name.` Which happens because in the random selection of valid characters to be included in the name of an element, the character `':'` was sometimes present, which is not allowed. This behavior is also the expected behavior in Full Framework. As a fix, `CharType.NameStartChar` and `CharType.NameChar` have been replaced with `CharType.NCNameStartChar` and `CharType.NCNameChar` which are exactly the same collection with only leaving `':'` out. Some more logging has also been added to these tests. cc: @danmosemsft @stephentoub @AlexGhiondea +15251 area-System.Runtime Add tests for enumerating ConditionalWeakTable Tests for the enumerable implementation in https://github.com/dotnet/coreclr/pull/8970 (updates to the refs and Clear tests will come separately). Will not pass CI until those changes to coreclr are available to corefx. cc: @jkotas, @weshaggard +15252 area-System.Security Problem porting RSAPKCS1SignatureFormatter implementation to RSA.Create() "Hi I am trying to port an oauth1.0 implementation using RSAPKCS1SignatureFormatter to dotnet core. This is what I have so far original **net40** ``` private byte[] SignByte(SHA1CryptoServiceProvider hash) { var formatter = new RSAPKCS1SignatureFormatter(myX509Certificate2.PrivateKey); formatter.SetHashAlgorithm(""MD5""); return formatter.CreateSignature(hash); } ``` port **netcoreapp1.0** ``` private byte[] SignByte(byte[] hash) { byte[] signature = RSA.Create().SignHash(hash, HashAlgorithmName.MD5, RSASignaturePadding.Pkcs1); return signature; } ``` However I keep getting this exception when trying to use MD5 with RSASignaturePadding.Pkcs1 ``` An unhandled exception of type 'Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException' occurred in System.Security.Cryptography.Algorithms.dll Additional information: The parameter is incorrect ``` Any ideas? Also how would I import the key when using RSA.Create()? Thanks" +15253 area-Infrastructure Fix syntax highlighting issue due to dev/eng /cc @weshaggard +15254 area-Infrastructure Building clean shows modified src\shims\ApiCompatBaseline.netfx461.txt file When I build clean, I now get a modified file: ![image](https://cloud.githubusercontent.com/assets/7684835/22039086/ad95e17c-dcb2-11e6-89ff-04db8d4ce82f.png) perhaps the .gitignore needs to be updated now? +15255 area-Meta Check for omissions in types supported by both Desktop and Core We have defined a common subset named .NET Standard 2.0 and analyzed (and fixed or baselined) any discrepancies between the Desktop and Core implementations of types in that subset. We also care about any types that Desktop and Core both have that aren't in .NET Standard 2.0. If Core is missing some members that Desktop does have, this should be a conscious decision. Example of where it wasn't: https://github.com/dotnet/corefx/pull/15238 One way to do this scan is go through https://raw.githubusercontent.com/dotnet/corefx/master/src/shims/ApiCompatBaseline.netfx461.txt, remove all the TypeMustExist lines (as these are types that Core doesn't have at all) and then manually remove all the lines relating to member exclusions we already decided to make as part of the Standard effort, as documented here https://github.com/dotnet/standard/tree/master/netstandard/ref Anything we find we need to either add the API back or consciously decide to not do it. ### **Current status see below** +15258 area-Infrastructure Fix Intellisense in VS /cc @weshaggard Resolves https://github.com/dotnet/corefx/issues/15253 +15261 area-System.Net fix problem with Accept on non-blocking sockets on Unix We weren't handling the WouldBlock case correctly in Accept for non-blocking sockets. Also add a test for this. Fixes #14037 @stephentoub @davidsh @CIPop @Priya91 +15265 area-System.Security Merge dotnet/master to dotnet/dev/apple_crypto Merge master into the dev/apple_crypto feature branch to get the new engineering changes. +15269 area-System.Threading Port TplEventSource fix to desktop https://github.com/dotnet/coreclr/pull/8942 cc: @AlexGhiondea +15271 area-System.Diagnostics Fix error handling in Process.Kill on Unix Process.Kill is mishandling error values. set_PriorityClass also had some dead code due to arguments having been validated earlier in the call chain. Fixes https://github.com/dotnet/corefx/issues/15234 cc: @Priya91, @tmds +15274 area-Infrastructure build-native.sh followed by build-managed.sh doesn't work "I am hitting errors building corefx on RHEL: $ cat /etc/os-release NAME=""Red Hat Enterprise Linux Workstation"" VERSION=""7.3 (Maipo)"" ID=""rhel"" ID_LIKE=""fedora"" VERSION_ID=""7.3"" PRETTY_NAME=""Employee SKU"" ANSI_COLOR=""0;31"" CPE_NAME=""cpe:/o:redhat:enterprise_linux:7.3:GA:workstation"" HOME_URL=""https://www.redhat.com/"" BUG_REPORT_URL=""https://bugzilla.redhat.com/"" REDHAT_BUGZILLA_PRODUCT=""Red Hat Enterprise Linux 7"" REDHAT_BUGZILLA_PRODUCT_VERSION=7.3 REDHAT_SUPPORT_PRODUCT=""Red Hat Enterprise Linux"" REDHAT_SUPPORT_PRODUCT_VERSION=""7.3"" $ git branch -v * master 8ddccab Fix exception when parsing HTTP/2 status line (#15203) $ ./buid-managed.sh /home/omajid/corefx/packages/xunit.runner.utility/2.2.0-beta2-build3300/lib/netstandard1.1/xunit.runner.utility.dotnet.dll (xunit.runner.utility.2.2.0-beta2-build3300) -> xunit.runner.utility.dotnet.dll /home/omajid/corefx/packages/xunit.runner.utility/2.2.0-beta2-build3300/lib/netstandard1.1/xunit.runner.utility.dotnet.pdb (xunit.runner.utility.2.2.0-beta2-build3300) -> xunit.runner.utility.dotnet.pdb /home/omajid/corefx/Tools/Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [/home/omajid/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] /home/omajid/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/omajid/corefx/Tools/CoreFx.Tools.dll. Could not load file or assembly 'CoreFx.Tools, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified. /home/omajid/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. /home/omajid/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/omajid/corefx/external/coreclr/coreclr.depproj] Anyone have any ideas about this? Any pointers to what the issue may be?" +15275 area-Infrastructure When to add support for running dotnet core on raspberrypi's os raspbian? http://www.raspbian.org/ +15277 area-System.Net add variations of SocketTestServer to increase test coverage in System.Net.Sockets.Tests "Currently, we have this ""SocketTestServer"" abstract class that allows us to run the same tests in two variations: (1) APM-style (IAsyncResult) and (2) SocketAsyncEventArgs. We should add new implementations of this class that cover: (1) Synchronous APIs (2) Non-blocking operations (i.e. socket.Blocking = false) (3) Task-based APIs " +15278 area-System.Net System.Net.Sockets.Async.Performance tests crashing @geoffkizer, it looks like this test library has very recently started crashing... I suspect it's related to your recent synchronous completion changes. e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/71/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/70/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_rhel7.2_debug/73/ Can you take a look? +15279 area-System.Memory SpanTests.ClearLongerThanUintMaxValueBytes failing in CI e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/69/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/69/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/70/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/71/ ``` System.SpanTests.SpanTests.ClearLongerThanUintMaxValueBytes [FAIL] System.OutOfMemoryException : Array dimensions exceeded supported range. Stack Trace: D:\j\workspace\outerloop_win---bf7c4efa\src\System.Memory\tests\Span\Clear.cs(205,0): at System.SpanTests.SpanTests.ClearLongerThanUintMaxValueBytes() ``` +15280 area-Infrastructure Nano CI builds completely broken cc: @Priya91, @karelz, @mmitche Our Windows Server Nano 2016 builds have been red for as long as we have history. Looking at the error message, it looks like the Jenkins configuration is broken: ``` 08:56:50 Schedule job dotnet_corefx » master » outerloop_winnano16_debug_tst 08:56:50 ERROR: Failed to run DSL Script 08:56:50 com.cloudbees.plugins.flow.CouldNotScheduleJobException: Could not schedule job outerloop_winnano16_debug_tst, ensure it is not already queued with the same parameters or is not disabled 08:56:50 at sun.reflect.GeneratedConstructorAccessor1731.newInstance(Unknown Source) 08:56:50 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 08:56:50 at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 08:56:50 at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) ... ``` If we care about Nano (I assume we do!), we should fix this immediately. If we don't, we should delete the jobs and remove the badges from the home page. +15284 area-System.IO Assembly in CoreRT has APIs that depend on FileStream Just a note so we get a heads up when we can bring over those APIs +15287 area-System.Data sqlclient does not close connections in Docker(debian) We are seeing behaviour form the System.Data.Sqlclient is not closing the connections when its running on the official mircosoft/dotnet docker image for linux. The connections are accumulating to over 400 connections in a couple of days on a service with little traffic. We have the same code running on a windows platform and there we do not see this behaviour. We are running dotnet 1.1.0. +15288 area-Infrastructure Bring back netstandard1.1 config for RuntimeInformation We had a RID-less config for RuntimeInformation but that was removed with vertical build work. Bring it back if we bring back a package for this library. https://github.com/dotnet/corefx/blob/a07f6aac5309b30154d0fe00debe7f9979600ea1/src/System.Runtime.InteropServices.RuntimeInformation/src/System.Runtime.InteropServices.RuntimeInformation.csproj#L19 /cc @chcosta +15289 area-Meta Proposal: Expose POSIX functions "To allow developers to develop applications on Unix operating systems, .NET Core should contain a library exposing a set of common Unix and Linux APIs. ## Rationale Today, .NET Core programs running on Unix do not have the ability to make calls into operating system functions in a portable manor, without writing native code. There are Unix-specific functions/capabilities that are not exposed in our current set of APIs. For example, `chmod` and `chown` are commonly used functions on Unix to set file permissions, but we have no `System.IO` APIs that expose this functionality. It is hard to P/Invoke directly into “libc” from managed code because of type-size differences across platforms, and constants/error codes being different across platforms. ## Design tenets A guiding tenet is to keep any additional functionality and policy out of these exposed APIs. Instead, we will simply be exposing the OS function as raw as possible. - If deemed necessary, we can create ""helper"" methods in the future to make the APIs easier to invoke. One place where we will be adding functionality is to make the .NET APIs work across our supported platforms as seamless as possible. - An example here is error numbers may map to different values on different platforms. We will have a facility that will allow mapping raw platform error numbers to platform-independent error names like “EACCES”, “EPERM”, etc. A naming tenet will be to use the same name and casing as the C API, this includes method, parameter, enum value, and field names. This allows people to consult the appropriate man page if necessary. - One exception is type names will still be PascalCased, to make consuming code read like standard managed code. Having a class named “group” would look confusing to most .NET developers. ## Example Usages ```C# using System.Unix.Native; static void Main() { // chmod int result = UnixFunctions.chmod( ""/home/user/hello.txt"", FileModes.S_IRWXU | FileModes.S_IRGRP | FileModes.S_IROTH); if (result < 0) { UnixErrorInfo errorInfo = UnixErrorInfo.GetLastErrorInfo(); if (errorInfo.Error == UnixError.EPERM) // handle permission issue ... } // getgrnam_r unsafe { Group group = new Group(); Group* groupPointer; int bufferSize = 1024; byte* stackBuffer = stackalloc byte[bufferSize]; result = UnixFunctions.getgrnam_r(""somegroup"", ref group, stackBuffer, bufferSize, out groupPointer); if (result != 0) { UnixErrorInfo errorInfo = new UnixErrorInfo(result); while (errorInfo.Error == UnixError.ERANGE) { bufferSize *= 2; byte[] heapBuf = new byte[bufferSize]; fixed (byte* heapBuffer = heapBuf) { result = UnixFunctions.getgrnam_r(""somegroup"", ref group, heapBuffer, bufferSize, out groupPointer); if (result == 0) { break; } errorInfo = new UnixErrorInfo(result); } } } if (result != 0) // handle permission issue if (groupPointer == null) { // group wasn't found } else { string groupName = Marshal.PtrToStringAnsi(group.gr_name); string groupPassword = Marshal.PtrToStringAnsi(group.gr_passwd); uint groupId = group.gr_gid; List groupMembers = new List(); IntPtr* memberPointer = group.gr_mem; IntPtr currentMember = *memberPointer; while (currentMember != IntPtr.Zero) { groupMembers.Add(Marshal.PtrToStringAnsi(currentMember)); memberPointer++; currentMember = *memberPointer; } } } } ``` ## APIs to Expose The exposed functions will be implemented in phases. To determine the first phase of functions, I have analyzed [Mono](https://github.com/mono/mono/blob/master/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs), [Go](https://godoc.org/golang.org/x/sys/unix), and [Phython](https://docs.python.org/3/library/os.html) system functions. Phase 1 of this work will include functions that are: - Exposed by at least 2 out of the 3 platforms - POSIX compliant - Not Socket related (since there are already Socket APIs in .NET, these are lower priority) - Not Exec related (since there are already Process APIs in .NET) - Not Memory Map related (since there are already MemoryMappedFile APIs in .NET) - If there is an equivalent “_r” function, don’t expose the corresponding function that returns values that may point to a static area. This way our users don’t try executing non-thread safe functions. Ex. Expose “getgrnam_r()”, but don’t expose “getgrnam()”. That results in the following list of functions for Phase 1: 1. access 1. chdir 1. chmod 1. chown 1. close 1. closelog 1. confstr 1. creat 1. dup 1. dup2 1. faccessat 1. fchdir 1. fchmod 1. fchmodat 1. fchown 1. fchownat 1. fcntl 1. fdatasync 1. fpathconf 1. fstat 1. fstatvfs 1. fsync 1. ftruncate 1. getcwd 1. getegid 1. geteuid 1. getgid 1. getgrgid_r 1. getgrnam_r 1. getgroups 1. getlogin_r 1. getpgid 1. getpgrp 1. getpid 1. getppid 1. getpriority 1. getpwnam_r 1. getpwuid_r 1. getsid 1. gettimeofday 1. getuid 1. isatty 1. kill 1. lchown 1. link 1. linkat 1. lockf 1. lseek 1. lstat 1. mkdir 1. mkdirat 1. mkfifo 1. mknod 1. mknodat 1. mlock 1. mlockall 1. mprotect 1. munlock 1. munlockall 1. nanosleep 1. nice 1. open 1. openat 1. openlog 1. pathconf 1. pause 1. pipe 1. poll 1. posix_fadvise 1. posix_fallocate 1. posix_madvise 1. pread 1. pwrite 1. read 1. readlink 1. readv 1. rename 1. renameat 1. rmdir 1. setegid 1. seteuid 1. setgid 1. setlogmask 1. setpgid 1. setpgrp 1. setpriority 1. setregid 1. setreuid 1. setsid 1. setuid 1. stat 1. statvfs 1. strerror_r 1. symlink 1. symlinkat 1. sync 1. sysconf 1. syslog 1. tcgetpgrp 1. tcsetpgrp 1. time 1. times 1. truncate 1. ttyname_r 1. umask 1. uname 1. unlink 1. unlinkat 1. utime 1. utimes 1. wait 1. waitpid 1. write 1. writev " +15290 area-Serialization SoapEncodedSerializationTest_Enum Failed with PNSE The test is failing with PlatformNotSupportedException. ``` XmlSerializerTests.SoapEncodedSerializationTest_Enum [FAIL] System.InvalidOperationException : There was an error generating the XML document. ---- System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(513,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWrite r, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(416,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWrite r, Object o, XmlSerializerNamespaces namespaces, String encodingStyle) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(411,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWrite r, Object o, XmlSerializerNamespaces namespaces) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(393,0): at System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Obj ect o, XmlSerializerNamespaces namespaces) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(381,0): at System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Obj ect o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2834,0): at XmlSerializerTests.SerializeAndDeserialize[T](T value, String baseline , Func`1 serializerFactory, Boolean skipStringCompare, XmlSerializerNamespaces xns) D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2681,0): at XmlSerializerTests.SoapEncodedSerializationTest_Enum() ----- Inner Stack Trace ----- D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(357,0): at System.Xml.Serialization.ReflectionXmlSerializat ionWriter.WriteElement(Object o, ElementAccessor element, String arrayName, Boolean writeAccessor, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(163,0): at System.Xml.Serialization.ReflectionXmlSerializat ionWriter.WriteElements(Object o, Object enumSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, String arrayName, Boolean writeAccessors, Bool ean isNullable, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(110,0): at System.Xml.Serialization.ReflectionXmlSerializat ionWriter.WriteMember(Object o, Object choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, Boolean writeAccessor s, XmlMapping parentMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(93,0): at System.Xml.Serialization.ReflectionXmlSerializati onWriter.GenerateTypeElement(Object o, XmlTypeMapping xmlMapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(58,0): at System.Xml.Serialization.ReflectionXmlSerializati onWriter.WriteObjectOfTypeElement(Object o, XmlTypeMapping mapping) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\ReflectionXmlSerializationWriter.cs(48,0): at System.Xml.Serialization.ReflectionXmlSerializati onWriter.WriteObject(Object o) D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(447,0): at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWrite r, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) ``` +15291 area-Infrastructure Adding missing Configurations.props for refs and fixing the existing ones cc: @ericstj @tarekgh @weshaggard FYI: @chcosta - Fixing the few Configurations.props we have for refs to remove their claimed `netstandard` config. - Adding uap configuration to all refs. - Adding configuration file to refs that didn't have one already. - Fixed uap logic on targetGroups in order to select the right imports. +15292 area-System.Collections Add ConcurrentBag/Queue.Clear Replaces https://github.com/dotnet/corefx/pull/13976 and https://github.com/dotnet/corefx/pull/14084. I initially cherry-picked the commits from those PRs, but I essentially had to rewrite the implementations due to the significant implementation changes that came in to ConcurrentBag and ConcurrentQueue in https://github.com/dotnet/corefx/pull/14126 and https://github.com/dotnet/corefx/pull/14254. Also cleaned up the tests @AlexRadch had added and added more. Fixes https://github.com/dotnet/corefx/issues/2338 cc: @ianhays, @kouvel +15293 area-Infrastructure Remove packages from NETStandard.Library 1.6 With one exception: System.Runtime.InteropServices.RuntimeInformation. For the rest we will no longer ship packages. Instead the types will be supported as follows: 1. In a netstandard2.0+ project via NETStandard.Library package's netstandard.dll 2. In a netstandard1.x project via NETStandard.Library package and closure which ship from servicing branches. 3. In a framework specific project via the framework's targeting pack or framework package. /cc @weshaggard @chcosta This does not yet include removal of packages that are being absorbed into netstandard2.0. +15294 area-Infrastructure Remove pkgprojs for shims in shared framework These shims no longer ship independently, but instead are bundled in the Microsoft.Private.CoreFx.NETCoreApp package, which is consumed in core-setup to bundle (redist) its content inside Microsoft.NETCore.App and the shared framework. Note that the SNI package remains for use by SQLClient since that is not in the shared framework. /cc @weshaggard @bartonjs @stephentoub +15295 area-Infrastructure Restore from v3 NuGet.org feed I noticed that this feed was still v2 when looking at a timeout issue. I don't know if v3 will make timeouts more rare, but it's a common recommendation to improve NuGet behavior in general. (The timeout issue I was looking at is in https://devdiv.visualstudio.com/DevDiv/_build?buildId=526691, specifically https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_build?buildId=526699.) @MattGal @ericstj +15296 area-System.Collections Fix #14961 and tweak perf in ImmutableArray Follow-up for https://github.com/dotnet/corefx/pull/14798 and https://github.com/dotnet/corefx/pull/13158. Specializes `InsertRange` for arrays, uses `TryCopyTo` in `ImmutableArray.Builder`, removes some unnecessary boxing in `Remove` / `Replace`, makes exceptions consistent in `SetItem` / `Replace` / `Remove`, and reenables corresponding tests. Fixes #14961, https://github.com/dotnet/corefx/issues/13695 +15297 area-Infrastructure Fix F5 to run tests in VS Fall back to old values if env vars aren't set #15166 @weshaggard @mellinoe +15298 area-Infrastructure test projects configured as netstandard should compile against netstandard targeting pack Tests are always compiling against the build configuration ref and never netstandard. See https://github.com/dotnet/corefx/blob/5bd6dea77374feccbc859d4a771f9fff7e973d86/targetingpacks.props#L20 and https://github.com/dotnet/corefx/blob/5bd6dea77374feccbc859d4a771f9fff7e973d86/Tools-Override/FrameworkTargeting.targets#L5 +15300 area-System.Net Fix some failing win7 net.security tests These tests are consistently failing all win7 runs. This is because of a behavioral difference between win7 and win8+ with regard to how the trusted issuers list is exchanged between the server and the client. The test was not written expecting the old behavior like other System.Net.Security tests are, so it was failing from unexpected RemoteCertificateNotAvailable PolicyErrors. This can be resolved either by manually installing the NDX Test Root CA cert to the test machine or by modding the code to handle the PolicyError when the cert is unavailable and the platform is win7 (which is what this code does). resolves https://github.com/dotnet/corefx/issues/13637 PTAL: @steveharter @Priya91 FYI: @CIPop @davidsh @karelz +15301 area-Infrastructure MSBuild says dlls are being used by another process when invoking build-tests "I have just rebased after the announcement in https://github.com/dotnet/corefx/issues/15135 and run `clean --all`, `build`, and `build-tests`. During `build-tests` this error pops up when MSBuild tries to copy files from `bin\runtime` to `Tools\testdotnetcli\shared\Microsoft.NETCore.App\9.9.9`: ``` C:\Users\james\Code\git\corefx\Tools\ConstructSharedFx.targets(41,5): warning MSB3026: Could not copy ""C:\Users\james\C ode\git\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/\apphost.exe"" to ""C:\Users\james\Code\git\corefx\Tools/testd otnetcli\shared\Microsoft.NETCore.App\9.9.9\apphost.exe"". Beginning retry 1 in 1000ms. The process cannot access the fi le 'C:\Users\james\Code\git\corefx\Tools/testdotnetcli\shared\Microsoft.NETCore.App\9.9.9\apphost.exe' because it is be ing used by another process. [C:\Users\james\Code\git\corefx\src\tests.builds] ``` This happens for every file in `bin\runtime`; the full log is [here](https://gist.github.com/jamesqo/d63af78cfd2363f5a9d90dd714a782a2). (I had to quit the process because it was taking too long, so the log does not include every file in the directory.) I've tried killing VBCSCompiler.exe and restarting my desktop, but it still happens." +15303 area-Meta Update allow-list for UWP build validation 1) Bring these up to date with the latest Windows allow-list: https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.CodeAnalysis/PackageFiles/PinvokeAnalyzer_UWPApis.txt https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.CodeAnalysis/PackageFiles/PinvokeAnalyzer_Win32UWPApis.txt and incidentally https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.CodeAnalysis/PackageFiles/PinvokeAnalyzer_OneCoreApis.txt 2) By trying out an invalid API, verify these analyzers are running. +15305 area-Infrastructure Clean-up usage of $(OS) property in targets We should try and limit the usage of $(OS) property in all the targets files. In places we need it we should use it in a limited fashion to setup other properties like RunningOnUnix/Windows and we should use that as the conditions in all our targets. Examples we should clean-up. test.targets (https://github.com/dotnet/corefx/pull/15177/files#diff-b8c5f6b5d9e571e8187355199b2a1680R33), in this case we should use TargetOS. https://github.com/dotnet/corefx/blob/master/Tools-Override/ConstructSharedFx.targets#L25 We should grep through all our targets files and update them in a consistent manner. +15306 area-Infrastructure Fix code coverage build "A few things were needed in order to fix this. * Copy the PDB's alongside the runtime DLL's during binplacing * @ericstj Could you confirm that we DO want these PDB's placed in bin/netcoreapp/pkg? I can modify the logic to avoid that, but right now I am just copying the PDB's into all of the `RuntimeDir` locations (same as the DLL's). * Add a filter parameter to OpenCover.exe so that it only collects data relevant to the assembly being tested (see **NOTE** below). * The way I am computing the name of the ""assembly being tested"" is quite hacky. I'd love a better way to get that information. * Add a filter parameter to the report generator so that we only report code coverage for the assembly being tested * Run tests serially when doing coverage runs. There was some logic in the targets for this before, but I think it stopped working during our refactoring. I added a check in dir.traversal.targets to force a serialized build if `Coverage == true`. **NOTE**: If you want to collect coverage data on an assembly that is not directly being tested (e.g. System.Private.CoreLib), you now need to pass in an extra property: `CodeCoverageAssemblies`. This is because everything is filtered out by-default (except for the ""assembly being tested""). This is necessary because, with the new test structure, every runtime assembly's PDB is available, which would result in an insane amount of data being collected without any filtering. @weshaggard @karajas @joperezr cc: @stephentoub (The NOTE above will affect you if you're getting code coverage for System.Private.CoreLib)." +15309 area-System.Numerics Seg fault in System.Numerics.Vectors.Tests on Unix https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/2194/consoleText ``` Discovering: System.Numerics.Vectors.Tests Discovered: System.Numerics.Vectors.Tests Starting: System.Numerics.Vectors.Tests /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/bin/AnyOS.AnyCPU.Release/System.Numerics.Vectors.Tests/netstandard1.3/RunTests.sh: line 80: 45186 Segmentation fault: 11 $RUNTIME_PATH/dotnet $EXECUTION_DIR/xunit.console.netcore.exe System.Numerics.Vectors.Tests.dll -noshadow -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_release_prtest/src/System.Numerics.Vectors/tests Finished running tests. End time=18:17:50. Return value was 139 ``` cc: @mellinoe +15310 area-Infrastructure Add Dumpling to targets in Tools-Override Merges https://github.com/dotnet/buildtools/pull/1254/ into Tools-Override directory as currently we are overriding `tests.targets` in Tools grabbed from buildtools. (This change was left behind from `tests.targets` when Tools-Override was added) @danmosemsft @joperezr @weshaggard @MattGal @karajas +15311 area-Infrastructure [ARM/Linux/CI] Fix arm32 build break Related Issue: #15215 +15312 area-Infrastructure Remove packages from NETStandard2.0 Related to Commit https://github.com/dotnet/corefx/commit/0797813bfe3a9e6d04d4bfaa865b477bb26f8ce2 / PR https://github.com/dotnet/corefx/pull/15293 This removes packages where the types have been moved into netstandard.dll in netstandard2.0. These types are supported as follows: 1. In a netstandard2.0+ project via NETStandard.Library package's netstandard.dll 2. In a netstandard1.x project via contract assembly packages which ship from servicing branches. 3. In a framework specific project via the framework's targeting pack or framework package. /cc @weshaggard +15313 area-Infrastructure Netstandard closure in NETCoreApp Fixes #15083. This adds a number of assemblies to netcoreapp. The process I used to do this was look at our current NETCoreApp netstandard.dll ref and add all of its dependencies as both ref & lib, since we must support neststandard.dll. I then re-enabled closure validation for netstandard, then I added all other libs needed to make it closure complete. @weshaggard please review. If you see anything here that shouldn't be it probably means we need to push types down. +15318 area-System.Linq Throw ArgumentException for invalid uses of global members in Expressions. Several methods of `Expression` will throw `NullReferenceException` if called with a `MethodInfo` or `FieldInfo` for a global method or field. These exceptions are all thrown from validation of the (null) `DeclaringType`, so fix these validation methods to throw the same exception they would throw for a non-null but inappropriate `DeclaringType`. Using a global field with a `MemberBinding` does not throw, but any attempt to use that binding will similarly throw `NullReferenceException`. Change to throw an `ArgumentException` immediately. Fixes #12943 +15320 area-System.Runtime Tuple in List Creates Extra Values "### Issue When I create a list of tuples it is adding additional items to the list. These aren't showing in the list, only the debugger. ### Example ``` public List<(string label, ProjectStrategy.Services route, Type message)> Services { get; set; } = new List<(string label, ProjectStrategy.Services route, Type message)> { (label: ""Edit"", route: ProjectStrategy.Services.EditStrategy, message: typeof(ProjectEditViewModel)), (label: ""Find"", route: ProjectStrategy.Services.FindProject, message: typeof(ProjectIdentityViewData)), (label: ""List"", route: ProjectStrategy.Services.ListProjects, message: typeof(void)), (label: ""New"", route: ProjectStrategy.Services.NewStrategy, message: typeof(void)), (label: ""View"", route: ProjectStrategy.Services.ViewStrategy, message: typeof(ProjectIdentityViewData)) }; ``` In the debugger, it shows a list containing eight values, though the count says five. ![image](https://cloud.githubusercontent.com/assets/13967891/22112489/b7ef3692-de28-11e6-86e7-39b47d41c4f0.png) " +15321 area-Infrastructure Add missing RID packages - Private.CoreFx.NETCoreApp These RIDs were added to the native shims between when we branched dev/eng and merged back to master. We don't have an official build leg building these, but I'm adding them to the identity package so that our officially built identity package will have entries for them in its runtime.json. Note that this is not a requirement if all you are doing is building the stack yourself without publishing the output of your builds to a common feed. In that case your build for ubuntu.14.04-arm would have an entry for that in the MS.Private.CoreFx.NETCoreApp package. I've also added `armel` to our property data model as @hseok-oh pointed out this is missing. /cc @chunseoklee @hseok-oh @weshaggard @ellismg +15322 area-System.Collections Feature: Stack.TryPeek and TryPop The `Stack` class should add methods `bool TryPeek(out T value)` and `bool TryPop(out T value)`. In ordinary usage, these would only be a small improvement in clarity (and perhaps, marginally, in performance) compared to manually checking `Count()` and then calling `Peek()` or `Pop()`. But they would be very useful to have to make the interface closer to that of `ConcurrentStack`. Then if you write code with `ConcurrentStack` but later realize that the extra synchronization provided by that class isn't needed, you will be able to change the code to plain `Stack` without rewriting. +15323 area-Infrastructure Update the adding APIs guide We need to update https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/adding-api-guidelines.md based on the new engineering changes. +15328 area-System.Numerics Out of date comments in System.Numerics.Vectors "There is a comment at the beginning of Vectors.cs [https://github.com/dotnet/corefx/blob/master/src/System.Numerics.Vectors/src/System/Numerics/Vector.cs#L22-L32](url) > PATTERN: * if (Vector.IsHardwareAccelerated) { ... } * else { ... } * EXPLANATION * This pattern solves two problems: * 1. Allows us to unroll loops when we know the size (when no hardware acceleration is present) * 2. Allows reflection to work: * - If a method is called via reflection, it will not be ""intrinsified"", which would cause issues if we did * not provide an implementation for that case (i.e. if it only included a case which assumed 16-byte registers) * (NOTE: It is assumed that Vector.IsHardwareAccelerated will be a compile-time constant, eliminating these checks * from the JIT'd code.) This means that the Vector.IsHardwareAccelerated true path of each SIMD intrinsic fallback would execute in reflection calls. However, according to my experiment, CoreCLR’s behavior is different from the comment. The Vector.IsHardwareAccelerated true path cannot execute, even though it called by reflection. Usually, reflection calls of SIMD intrinsics also go to jited intrinsic. I detected that the true path only executes when the current base type is not supported by current SIMD intrinsic (in CoreCLR). For example, there is a SIMD intrinsic “DotProduct” in CoreCLR, which just supports Int, Long, Float, and Double. If we pass two vectors of Byte or Short, DotProduct would go to the C# fallback (the Vector.IsHardwareAccelerated true path). Consequently, here are two issues: 1. The comment is different from code's behavior (out of date comments?). 2. For most of the SIMD intrinsics, the code pattern ""if (Vector.IsHardwareAccelerated) { ... }"" looks useless. " +15329 area-System.Memory Proposal: Add Sort(...) extension methods for Span Currently, there is no way to sort native or fixed memory (e.g. coming from a pointer) in .NET, this proposal intends to fix that by adding sorting extension methods to `Span`, but also proposes some different overloads than seen on `Array` to allow for inlined comparisons via the possibility to use value type comparers. ### Proposed API Add a set of `Sort` extension methods to `Span` in `SpanExtensions`: ```csharp public static class SpanExtensions { public static void Sort(this Span span); public static void Sort(this Span span, TComparer comparer) where TComparer : IComparer; public static void Sort(this Span span, System.Comparison comparison); public static void Sort(this Span keys, Span items); public static void Sort(this Span keys, Span items, TComparer comparer) where TComparer : IComparer; public static void Sort(this Span keys, Span items, System.Comparison comparison); } ``` ### Rationale and Usage Provide a safe yet fast way of sorting of any type of contiguous memory; managed or unmanaged. #### Sorting Native Memory ```csharp var span = new Span(ptr, length); span.Sort(); // Sort elements in native memory ``` #### Sorting with Inlineable Comparer ```csharp struct ReverseComparer : IComparer { [MethodImpl(MethodImplOptions.AggressiveInlining)] public int Compare(int a, int b) { if (a == b) { return 0; } if (a > b) { return -1; } return 1; } } Span span = GetSomeSpan(); // Sort elements, in reverse order with inlined Compare, // without heap allocation for comparer span.Sort(new ReverseComparer()); ``` #### Sorting based on Lambda ```csharp Span span = GetSomeSpan(); // Sort elements, in reverse order with lambda/delegate span.Sort((a, b) => a == b ? 0 : (a > b ? -1 : 1)); ``` #### Sorting Compound Type ```csharp struct Compound { public float FeatureValue; public int FeatureIndex; public object Payload; } struct InlineableFeatureValueComparer : IComparer { [MethodImpl(MethodImplOptions.AggressiveInlining)] public int Compare(Compound a, Compound b) { if (a.FeatureValue == b.FeatureValue) { return 0; } if (a.FeatureValue < b.FeatureValue) { return -1; } return 1; } } var span = new Span(); span.Sort(); // Inlineable struct comparer var comparer = new InlineableFeatureValueComparer(); span.Sort(comparer); // Lambda comparer span.Sort((a, b) => a.FeatureValue == b.FeatureValue ? 0 : (a.FeatureValue < b.FeatureValue ? -1 : 1)); ``` The argumentation for adding this is: * To increase the efficiency of code doing sorting and prevent people from reinventing the wheel. * Allow performance optimizations depending on memory type and contents. * Allow sorting on contiguous memory of any kind. #### Use Cases In almost any domain where a high volume of data is processed with sorting being one operation and memory management (e.g. memory recycling, buffer pooling, native memory) is a must to achieve high performance with minimal latency, these sorts would be useful. Example domains are database engines (think indexing), computer vision, artificial intelligence etc. A concrete example could be in the training of Random Forests some methods employ feature sorting (with indeces) to find decision boundaries on. This involves a lot of data and data that can originate from unmanaged memory. ### Open Questions An important question regarding this proposal is whether the pattern with generic parameter `TComparer` (e.g. constrained to `where TComparer : IComparer`) is a pattern that can be approved. This pattern allows for inlineable comparers at the cost of increased code size, if no value type comparers are used, there should be no difference. This pattern is also used in the proposal for `BinarySearch` in https://github.com/dotnet/corefx/issues/15818 The API relies on being able to depend upon `System.Collections.Generic`, could this be an issue? @karelz @jkotas @jamesqo ### Updates UPDATE 1: Change API to be defined as extension methods. UPDATE 2: Add compounded type usage. UPDATE 3: Add link to BinarySearch and point on the pattern used. ### Existing Sort APIs A non-exhaustive list of existing sorting APIs is given below for comparison. #### `Array.Sort` Static Methods Found in [ref/System.Runtime.cs](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs) ```csharp public static void Sort(System.Array array) { } public static void Sort(System.Array keys, System.Array items) { } public static void Sort(System.Array keys, System.Array items, System.Collections.IComparer comparer) { } public static void Sort(System.Array keys, System.Array items, int index, int length) { } public static void Sort(System.Array keys, System.Array items, int index, int length, System.Collections.IComparer comparer) { } public static void Sort(System.Array array, System.Collections.IComparer comparer) { } public static void Sort(System.Array array, int index, int length) { } public static void Sort(System.Array array, int index, int length, System.Collections.IComparer comparer) { } public static void Sort(T[] array) { } public static void Sort(T[] array, System.Collections.Generic.IComparer comparer) { } public static void Sort(T[] array, System.Comparison comparison) { } public static void Sort(T[] array, int index, int length) { } public static void Sort(T[] array, int index, int length, System.Collections.Generic.IComparer comparer) { } public static void Sort(TKey[] keys, TValue[] items) { } public static void Sort(TKey[] keys, TValue[] items, System.Collections.Generic.IComparer comparer) { } public static void Sort(TKey[] keys, TValue[] items, int index, int length) { } public static void Sort(TKey[] keys, TValue[] items, int index, int length, System.Collections.Generic.IComparer comparer) { } ``` #### `List.Sort` Member Methods Found in [ref/System.Collections.cs](https://github.com/dotnet/corefx/blob/master/src/System.Collections/ref/System.Collections.cs) ```csharp public partial class List : System.Collections.Generic.ICollection, System.Collections.Generic.IEnumerable, System.Collections.Generic.IList, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList { public void Sort() { } public void Sort(System.Collections.Generic.IComparer comparer) { } public void Sort(System.Comparison comparison) { } public void Sort(int index, int count, System.Collections.Generic.IComparer comparer) { } } ``` #### LINQ `OrderBy` Extension Methods Found in [ref/System.Linq.cs](https://github.com/dotnet/corefx/blob/master/src/System.Linq/ref/System.Linq.cs) ```csharp public static System.Linq.IOrderedEnumerable OrderBy(this System.Collections.Generic.IEnumerable source, System.Func keySelector) { throw null; } public static System.Linq.IOrderedEnumerable OrderBy(this System.Collections.Generic.IEnumerable source, System.Func keySelector, System.Collections.Generic.IComparer comparer) { throw null; } public static System.Linq.IOrderedEnumerable OrderByDescending(this System.Collections.Generic.IEnumerable source, System.Func keySelector) { throw null; } public static System.Linq.IOrderedEnumerable OrderByDescending(this System.Collections.Generic.IEnumerable source, System.Func keySelector, System.Collections.Generic.IComparer comparer) { throw null; } ``` +15330 area-System.IO Fast creating and removing files and directories causes UnauthorizedAccessException or DirectoryNotFoundException "When quickly creating and removing files exceptions are being thrown Repro: ```csharp using System; using System.IO; namespace ConsoleApplication { class Program { static void Main(string[] args) { for (int i = 0; i < 5000; i++) { string dirName = ""dfoo""; string fileName = ""foo.txt""; DirectoryInfo di = new DirectoryInfo(dirName); FileInfo fi = new FileInfo(Path.Combine(di.FullName, fileName)); di.Create(); File.WriteAllText(fi.FullName, ""foo""); File.Delete(Path.Combine(di.FullName, fileName)); Directory.Delete(di.FullName); Console.WriteLine(i); } } } } ``` This has reproed both on coreclr and Desktop - usually between 100-500 iterations (Ocassionally couple thousand) OS: Windows 10" +15331 area-System.Data SqlClient: Enable parallel connection opens for MultiSubnetFailover on Unix Looks like Unix networking APIs for connecting to multiple IP addresses simultaneously were not available when MultiSubnetFailover was implemented in CoreFx SqlClient. https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs#L191 +15333 area-Infrastructure Update libcurl package on Centos outerloop image to latest version libcurl version on centos image in Jenkins is 7.29.0, and the other Unix Oses use 7.35.0. There are some sslprotocol tests failing consistently with SSL connect error due to this. Verified locally that updating the curl version doesn't cause the test failure. This is currently causing Centos Outerloop runs to be red. So marking with blocking-ci tag. cc @karelz @steveharter +15334 area-System.Runtime Expose String.Trim overloads that take a single char Expose and add tests for https://github.com/dotnet/coreclr/pull/9009. The new tests should compile/run on older platforms that don't have the new overloads yet since the existing overloads are `params`. Though, I assume it won't pass CI until the changes to coreclr are available to corefx due to the ref update. Fixes #14337 +15337 area-System.IO System.IO.IsolatedStroage brings System.IO.FileSystem.AccessControl into NETCore.App See https://github.com/dotnet/corefx/pull/15313#pullrequestreview-17504675 It's undesireable to have this in NETCore.App. Consider copying the code used System.IO.FileSystem.AccessControl instead. /cc @weshaggard +15338 area-System.Numerics Optimized complex sqrt, added strict test for sqrt(-1)=i The current implementation of Complex.Sqrt(z) is just Complex.Pow(z, 0.5). This results in several problems, most glaringly Complex.Sqrt(-1)!=Complex.ImaginaryOne. It is also not optimized. I have changed the implementation to be the standard optimized complex square root algorithm well known in the numerical computing community. I also added a test for Complex.Sqrt(-1)==Complex.ImaginaryOne, which the current implementation fails and the new implementation passes. In the course of making this modification, I noticed several tests which demand NaNs be returned for extreme inputs to Complex.Asin, and for which NaNs are no longer returned after my changes to Complex.Sqrt. Actually, asin is perfectly well-defined and re-presentable for these inputs, and the tests were presumably added simply to reflect the current behavior of Complex.Asin. For the moment, I have simply deleted the erroneous tests. In future, Complex.Asin and Complex.Acos can be updated to use an optimized algorithm which will give correct results for all re-presentable inputs. +15339 area-Infrastructure Ensure we run UAP pinvoke checks regardless of TargetGroup Previously we'd only check pinvokes if a library specifically targeted UAP. That would miss the case where a netstandard build would be applicable. We should change this to run whenever the buildvertical is UAP. EG: _bc_TargetGroup == uap || _bc_TargetGroup == uapaot. +15344 area-Infrastructure Enable NetFX tests (Step 1) This is the initial changes to enable NetFx test runner. there is more changes will be done but this change is getting the xunit runner to work when targeting NetFX +15347 area-Infrastructure Include expected ns1.6 shims in netcoreapp I looked at all the refs that existed in netcoreapp1.6 and for any with types in netstandard.dll I've added them to NETCoreApp and deleted the packages. I expect these all to eventually be included in NS2.0 as compat shims. 3 exceptions to this: System.Net.Http & System.IO.Compression: I expect these packages will still ship to deliver out-of-band fixes for desktop. System.Data.SqlClient: This package may still ship out of band (TBD) /cc @weshaggard +15348 area-System.Memory Span: Win7 Outer Loop test failures in System.SpanTests.SpanTests.ClearNativeLongerThanUintMaxValueBytes Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/lastFailedBuild/consoleText Message: ~~~ System.OutOfMemoryException : Insufficient memory to continue the execution of the program. ~~~ Stack Trace: ~~~ at System.Runtime.InteropServices.Marshal.AllocHGlobal(IntPtr cb) D:\j\workspace\outerloop_win---75d58f69\src\System.Memory\tests\Span\Clear.cs(240,0): at System.SpanTests.SpanTests.ClearNativeLongerThanUintMaxValueBytes() ~~~ Configuration: OuterLoop_Windows7_release (build#72) +15351 area-Infrastructure Remove additional packages NETStandard.Library : now builds from the standard repo System.Private.DataContractSerialization : private package and all upstack packages have been deleted. System.Private.Xml : private package and all upstack packages have been deleted. System.Xml.XPath.XDocument : contains only extension methods for members that have been added back in netstandard. System.Private.Xml.Linq: private package and all upstack packages have been deleted, after deleting System.Xml.XPath.XDocument. /cc @weshaggard +15352 area-Serialization Enable XmlSerializer to Support SoapEncoded Message. Soap-encoded serialization was not supported on NetCore. The fix was to enable XmlSerializer to read/write soap-encoded messages of simple types. Fix #12799. Fix #15290. +15354 area-System.Net Ensure CURLOPT_TCP_NODELAY is set by CurlHandler CURLOPT_TCP_NODELAY defaults to 0 in versions of libcurl prior to 7.50.2. As of 7.50.2, the default is changed to 1, as it was observed to cause non-trivial latency in some common scenarios. We've observed similar latency problems as well, e.g. small POSTs. To address this, this commit simply sets CURLOPT_TCP_NODELAY to 1, which is a nop on recent libcurl versions and will cause older versions to behave similarly. cc: @cesarbs, @mikeharder, @geoffkizer, @davidsh +15355 area-Serialization Area-Serialization Sprint 113 The issue is for tracking issues to be done in sprint 113 (due by 2/10/2017). +15356 area-Serialization Add More Tests for XmlSerializer Supporting Varied Types in SOAP Now we are using reflection based serialization to read/write types into/from Soap-encoded messages. We need to add more tests covering more kinds of types. +15357 area-Infrastructure Removing System.Private.CoreLib from TargetingPack cc: @weshaggard @ericstj @mellinoe Removing System.Private.CoreLib from the Targeting pack and changing the projects so that they depend to the one in the runtime directory. +15358 area-Infrastructure Chnage tar path for Ubuntu Runs In the recent dev/eng work we changed around the layout of the binaries that we dropped. But we also produce the new runtime folder which as all of the dependencies in one place. For Ubuntu performance runs on coreclr we have used the uploaded zip file as our CoreFX. This change simply removes all of the folders that were previously packaged and now just includes the content of the runtime folder. +15359 area-Infrastructure Update BuildTools to 1.0.27-prerelease-01219-01, add EnableDumpling to pipeline Updates BuildTools from `1.0.27-prerelease-01211-03` to `1.0.27-prerelease-01219-01` (To get https://github.com/dotnet/buildtools/pull/1306) Also, adding `/p:EnableDumpling=true` to pipeline.json for all Linux runs, as I need Dumpling.Targets to be imported in tests.targets and add commands to `RunTests.sh` on Helix tests. cc: @chcosta @danmosemsft @karajas +15361 area-Infrastructure Add a crossgen.sh script, which can be used to run crossgen on Tools assemblies "`crossgen.sh` does the following: * Restores crossgen for the current RID (as determined via ""dotnet --info"") * Copies crossgen into the shared framework folder * Runs crossgen on all of the assemblies in the folder passed as the first parameter to the script. This is done in parallel. This speeds up build time considerably. My build completes in about half the time, and the entire crossgen script only takes about 10 seconds to run. I am interested in seeing times in CI. Feedback wanted on how the crossgen package is located and restored. It's the ugliest part here. @ellismg @weshaggard @ericstj " +15362 area-Meta Include some new APIs we added to .NET Standard 2.0 See update in https://github.com/dotnet/corefx/pull/15340. https://github.com/ericstj/corefx/blob/31e2e12e275778b953b4ee6f92d49eabde093d8b/src/shims/ApiCompatBaseline.netstandard20.txt Missing APIs. ``` TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Console.Write(System.String, System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Console.WriteLine(System.String, System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.FieldInfo.GetValueDirect(System.TypedReference)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.FieldInfo.SetValueDirect(System.TypedReference, System.Object)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly netstandard: TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Console.Write(System.String, System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Console.WriteLine(System.String, System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.FieldInfo.GetValueDirect(System.TypedReference)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.FieldInfo.SetValueDirect(System.TypedReference, System.Object)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Console: MembersMustExist : Member 'System.Console.Write(System.String, System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Console.WriteLine(System.String, System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Reflection: MembersMustExist : Member 'System.Reflection.FieldInfo.GetValueDirect(System.TypedReference)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.FieldInfo.SetValueDirect(System.TypedReference, System.Object)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Runtime: MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. ``` +15365 area-System.Linq Optimized new ToHashSet api through IListProvider #14173 - Added ToHashSet method to IIListProvider - Implementation based on ToList method - Added some tests Fixes #14173 +15366 area-System.Reflection System.Private.Reflection.Metadata.Ecma335 These changes are what I've put together for building a System.Reflection.Metadata that can run at the lower level of the runtime (with a minimal dependency set, just System.Private.CoreLib and System.Private.InteropServices) 1. Could I get an opinion on the factoring that I've done and my model for the various shims I need? 2. For changes that aren't unique to System.Private.Reflection.Metadata.Ecma335 (such as changes to the ImmutableCollections code, and for the changes to the code shared with System.Reflection.Metadata, what is the best way to get these changes into the tree? I'm assuming that I'd like to get those changes in with a separate PR that isn't this pretty big one.) @nguerrera @tmat +15367 area-System.Linq Avoid trimming groupings in GroupBy with result selectors AFAICS we can pass the grouping as the enumerable rather than the array, which eliminates the need for an expensive resize. It also prevents users from getting at the underlying array of the grouping by casting the enumerable to a `TElement[]`. **Related:** https://github.com/dotnet/corefx/issues/8848 +15368 area-System.Net Fix centos test failures in outerloop. fixes #15333 cc @karelz @steveharter @ianhays @stephentoub +15372 area-System.IO Add async File.ReadAll*, File.AppendAll* and File.WriteAll Fixes #11220 +15373 area-Infrastructure Removing netstandard configurations for things that are bellow netstandard cc: @weshaggard @ericstj FYI: @mellinoe @tarekgh Removing netstandard configurations to the assemblies that are part of netstandard.dll. The full list I used to base myself is https://github.com/dotnet/standard/blob/master/netstandard/pkg/shims/netstandard.shimlist.txt I will be adding uap configurations to these same projects on a separate PR +15374 area-Meta [Question] Comments with in corefx There are a bunch of XML doc-like comments with `` throughout the repo. See here: https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=SecurityKernel&type=Code I stumbled across an unsafe method in `SortedSet` that was marked with it over [here](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L1745). Would it be OK to delete these? +15375 area-System.IO Improve code coverage for System.IO.FileSystem.AccessControl Issue #14352 +15376 area-System.Collections Prune code in SortedSet The code in `SortedSet` is pretty messy and currently is all put in one big file with 2700 LOC. I separated `TreeSubSet` and `SortedSetEqualityComparer` into new files and made a couple of changes: - Use expression-bodied members for trivial methods - Remove non-helpful `Debug.Assert` messages - Capitalize some methods, use named parameters with `true` / `false` / `null` args - `//comment` -> `// comment` - Comments are no longer on the same line as the brace - Trim trailing whitespace - Remove (poor) XML documentation for members that are interface implementations (e.g. `Add`, `IsProperSubsetOf`) - Other general readability improvements It's easier to review the first commit by itself then the rest of the commits, because I didn't move anything into a new file during the first commit. /cc @ianhays @Priya91 +15378 area-Infrastructure Solution generator tool emits bad sln, causes building System.Collections.Immutable.sln to MSBuild with StackOverflow Try msbuild src\System.Collections.Immutable\System.Collections.Immutable.sln. MSBuild will crash with stack overflow. This is because in this commit https://github.com/dotnet/corefx/commit/f6ab339f446e37505f93ef9f430801fa1dcc05b8#diff-d840dd78d66ae7f5f8889a4974e96228L55 the NestedProjects section of the .sln file is being written out incorrectly. Fixing this longer term should ideally also modify the CI system to build the .sln file and at least verify that it builds successfully. Shorter term, of course, just fix the tool that writes the .sln files and rerun it to unblock us. +15380 area-System.Net Win7 outer loop test 'System.Net.Tests.WebSocketTests.AcceptWebSocketAsync_NullSubProtocol_Succeeds' failed with 'System.PlatformNotSupportedException' Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/lastFailedBuild/consoleText Message: ~~~ System.Net.Tests.WebSocketTests.AcceptWebSocketAsync_NullSubProtocol_Succeeds [FAIL] System.PlatformNotSupportedException : The WebSocket protocol is not supported on this platform. ~~~ Stack Trace: ~~~ D:\j\workspace\outerloop_win---b280fd23\src\Common\src\System\Net\WebSockets\WebSocketValidate.cs(121,0): at System.Net.WebSockets.WebSocketValidate.ThrowPlatformNotSupportedException() D:\j\workspace\outerloop_win---b280fd23\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Win32.cs(41,0): at System.Net.WebSockets.WebSocketHandle.CheckPlatformSupport() D:\j\workspace\outerloop_win---b280fd23\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\ClientWebSocket.cs(31,0): at System.Net.WebSockets.ClientWebSocket..ctor() D:\j\workspace\outerloop_win---b280fd23\src\System.Net.HttpListener\tests\WebSocketTests.cs(35,0): at System.Net.Tests.WebSocketTests.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ Configuration: OuterLoop_Windows7_debug (build#73) +15382 area-System.Collections More cleanup/perf tweaks for ImmutableList Changes: - `ImmutableList.Create(T)` and `ImmutableList.CreateRange(IEnumerable)` no longer go through the indirection of calling `AddRange` on the empty list-- they call directly into functions that create the list. - `ImmutableList.Create(T[])` avoids a couple of typecasts - Used expression-bodied members in a lot of places, deleting more than 300 lines of code - Move DebuggerProxy, Enumerator, and Node into their own files, as currently the file is 3000+ LOC - Avoid a couple of checks in places where it is known that a new root node will be returned - e.g. For `Add` or `Insert` the returned node we have to wrap will always be non-empty/inequal to the source node, so we can't avoid allocating another ImmutableList. - This should eliminate 1 call to `this.Wrap` per operation, but I haven't checked whether the JIT was inlining it before - Rename `WrapNode` to `WrapNewOrEmpty` - Move all argument validation from `ImmutableList` to `ImmutableList.Node` methods - Optimize/simplify `Node.RemoveAt` and delete `Balance()`, which is no longer used afterwards - Add asserts in `BalanceLeft` / `BalanceRight` to make sure the tree is really balanced **Note:** The diff is really large mostly because of the file separations. If you look at just the first two commits you'll see that the meat of the changes is only a couple hundred lines of code. /cc @AArnott @ianhays @Priya91 +15383 area-System.Data "Outer Loop OpenSUSE 42.1 Debug: Test ""System.Data.SqlClient.Tests.DiagnosticTest.ExecuteReaderTest"" failed with ""Xunit.Sdk.EqualException""" Failed Test: System.Data.SqlClient.Tests.DiagnosticTest.ExecuteReaderTest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_opensuse42.1_debug/lastFailedBuild/consoleText Message: ~~~ System.Data.SqlClient.Tests.DiagnosticTest.ExecuteReaderTest [FAIL] Assert.Equal() Failure Expected: b6bade04-7eda-4678-a918-24502a6d7149 Actual: 0893cbea-49ac-4282-9385-0a5060b6ee79 ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs(458,0): at System.Data.SqlClient.Tests.DiagnosticTest.<>c__DisplayClass27_0.b__0(KeyValuePair`2 kvp) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/tests/FunctionalTests/FakeDiagnosticListenerObserver.cs(35,0): at System.Data.SqlClient.Tests.FakeDiagnosticListenerObserver.FakeDiagnosticSourceWriteObserver.OnNext(KeyValuePair`2 value) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticListener.cs(192,0): at System.Diagnostics.DiagnosticListener.Write(String name, Object value) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlClientDiagnosticListenerExtensions.cs(66,0): at System.Data.SqlClient.SqlClientDiagnosticListenerExtensions.WriteCommandAfter(DiagnosticListener this, Guid operationId, SqlCommand sqlCommand, String operation) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs(1370,0): at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs(1331,0): at System.Data.SqlClient.SqlCommand.ExecuteReader() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs(119,0): at System.Data.SqlClient.Tests.DiagnosticTest.b__10_0() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs(585,0): at System.Data.SqlClient.Tests.DiagnosticTest.CollectStatisticsDiagnostics(Action sqlOperation) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs(110,0): at System.Data.SqlClient.Tests.DiagnosticTest.ExecuteReaderTest() ~~~ +15387 area-System.Diagnostics Replace or Remove Internal ExcludeFromCodeCoverageAttribute? "We now have two versions of `System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute`, the [publicly exposed version available to client code](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Tools/src/System/Diagnostics/CodeAnalysis/ExcludeFromCodeCoverageAttribute.cs) and the [internal version used through directly including the file](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Diagnostics/CodeAnalysis/ExcludeFromCodeCoverageAttribute.cs). Potentially the two could cause ambiguity. They also differ in two ways. 1. The internal version can be applied to assemblies. `ExcludeFromCodeCoverageAssemblyAttribute` was introduced to explicitly fit this purpose and reduce incompatibility of use. 2. The internal version is marked as `[Conditional(""DEBUG"")]`, reducing bloat in release assemblies. There are four things that can be done with this: 1. Leave things as they are. Pro: Don't fix what ain't broke. Con: Potential for ambiguity. 2. Remove the internal version, update to use the public version. Pro: Simple. Dogfooding. Con: Will bloat the release assemblies with attributes that aren't useful in release. 3. As above, but also change the public version to be `[Conditional(""DEBUG"")]`. Pro: As above and also reduce size of client release assemblies. Con: API change. While coverage of release builds is always likely to be strange, it may be still be used by someone and the effect undesirable. 4. Merge the internal version with `ExcludeFromCodeCoverageAssemblyAttribute` into a single `ExcludeFromCodeCoverageInternalAttribute` and use it consistently throughout. Pro: No bloat. No conflict with public API. Con: Not dogfooding. Introduces a difference in how we code corefx and how other projects are coded. Likely to be missed by new contributors, (or just anyone who didn't see this issue) who would expect to use `ExcludeFromCodeCoverageAttribute` as usual." +15388 area-Infrastructure EPPlus.Core incompatible with .NETFramework,Version=v4.5.2. "i want to user EPPlus.Core put when i install it i receive error One or more packages are incompatible with .NETFramework,Version=v4.5.2. my project.json: ""dependencies"": { ""BundlerMinifier.Core"": ""2.2.306"", ""Microsoft.AspNetCore.Authentication.Cookies"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Identity.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.0"", ""Microsoft.Extensions.CommandLineUtils"": ""1.0.0"", ""Microsoft.AspNetCore.Mvc.ViewFeatures"": ""1.1.0"", ""Microsoft.AspNetCore.Razor.Tools"": { ""version"": ""1.0.0-preview2-final"", ""type"": ""build"" }, ""Microsoft.AspNetCore.Routing"": ""1.1.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.1.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.1.0"", ""Microsoft.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Relational"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.1.0-preview4-final"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.1.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.1.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.1.0"", ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.Extensions.Logging.Console"": ""1.1.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.1.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"", ""Microsoft.VisualStudio.Web.BrowserLink.Loader"": ""14.1.0"", ""Microsoft.VisualStudio.Web.CodeGeneration"": { ""version"": ""1.0.0-preview2-final"", ""type"": ""build"" }, ""Microsoft.VisualStudio.Web.CodeGenerators.Mvc"": ""1.0.0-preview2-final"", ""Microsoft.jQuery.Unobtrusive.Ajax"": ""3.2.3"", ""Microsoft.AspNetCore.Mvc.Core"": ""1.1.0"", ""Sakura.AspNetCore.Mvc.PagedList"": ""2.0.11"", ""Sakura.AspNetCore.PagedList"": ""2.0.1"", ""Sakura.AspNetCore.Mvc.TagHelpers"": ""1.2.1"", ""SendGrid.NetCore"": ""1.0.0-rtm-00002"", ""EPPlus.Core"": ""1.2.0"" }, ""frameworks"": { ""net452"": {} }, ""netcoreapp1.0"": { ""imports"": [ ""portable-net451+win8"" ], ""buildOptions"": { ""emitEntryPoint"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0-*"" } } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""**/*.cshtml"", ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""prepublish"": [ ""bower install"", ""dotnet bundle"" ], ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] }, ""tools"": { ""Microsoft.AspNetCore.Razor.Tools"": ""1.0.0-preview2-final"", ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": ""1.0.0-preview2-final"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.0.0-preview2-final"", ""Microsoft.Extensions.SecretManager.Tools"": { ""version"": ""1.0.0-preview2-final"", ""imports"": ""portable-net45+win8+dnxcore50"" }, ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": { ""version"": ""1.0.0-preview2-final"", ""imports"": [ ""portable-net45+win8"" ] }, ""BundlerMinifier.Core"": { ""version"": ""2.1.258"", ""imports"": [ ""portable-net45+win8+wp8+wpa81"" ] } }" +15389 area-System.Linq Reduce linked node size in Enumerable.Append/Prepend/Union - For `Append` / `Prepend` the count of previous iterators isn't needed by this iterator, so we can move that stuff from the nodes to the iterators which can be GC'd on successive linked Appends/Prepends. - Similarly, all of the non-readonly state for `Union` of previous iterators isn't relevant for this iterator, so use `SingleLinkedNode` to only keep alive what we need (the sources). Additionally, all of the iterators have the same comparer so we only need to store the comparer in the latest node. - Introduce `Set.UnionWith` for brevity and move `SingleLinkedNode` into its own file. **edit:** Was finally able to run [perf tests](https://gist.github.com/jamesqo/2039702fe841a5264dd73b47c6e9efd5) for this. GCs have increased, as expected, because there is a substantial reduction in leaked memory. `Concat` and `Union` see 50-60% reductions in leaked memory, `Append` and `Prepend` about 20%. **edit 2:** Ignore the results for `Concat`, I hit a few complications there and the changes became pretty big. I'm going to save them for another PR. /cc @JonHanna @VSadov +15390 area-System.Reflection Add Sybsystem.WindowsBootApplication enum value The value is being emitted in current Windows EFI binaries. We should add to SRM Subsytem enum. ### Proposal ```C# enum Subsystem { ... WindowsBootApplication = 16 } ``` ### Details The value is documented in Windows docs: IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 Boot application. https://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx +15393 area-System.IO Add async versions of System.IO.IsolatedStorage methods Why are none of the methods in IsolatedStorageFile async. Eg, GetDirectoryNames or CreateDirectory are surely candidates for async methods (among OTHERS). +15395 area-System.Numerics "OuterLoop_Windows10_release: Test ""System.Numerics.Tests.divremTest.RunDivRemTests"" failed with ""System.Exception""" Failed test: System.Numerics.Tests.divremTest.RunDivRemTests Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/77/ Message: ~~~ System.Exception : VerifyDivRemString failed: make 92 125 192 198 117 183 180 87 56 15 18 178 228 7 181 238 94 7 185 165 233 141 178 201 200 177 252 196 42 81 206 148 34 113 177 endmake make 102 173 213 220 61 239 134 134 176 47 135 119 32 155 128 132 229 113 135 207 203 246 253 195 187 239 44 230 64 125 144 endmake bDivRem Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 0 Actual: 31122745322556859589923417330907291586 ~~~ Stack Trace: ~~~ at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\EqualityAsserts.cs:line 35 at System.Numerics.Tests.StackCalc.VerifyOutParameter() in D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Numerics\tests\BigInteger\stackcalculator.cs:line 252 at System.Numerics.Tests.divremTest.VerifyDivRemString(String opstring) in D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Numerics\tests\BigInteger\divrem.cs:line 187 ---- Assert.Equal() Failure Expected: 0 Actual: 31122745322556859589923417330907291586 ~~~ Configuration: OuterLoop_Windows10_release (build#77) +15399 area-Microsoft.CSharp Implement IEquatable on internal types used as keys. Allows for quicker equality call by default equality comparer +15401 area-Infrastructure Lots of failures while open .sln files in VS I tried to open the System.Net.Primitives.sln file in VS. I get ~40 errors about projects failing to load, the actual src .csproj ends up not loading so the source isn't editable, and the solution explorer is messed up with regards to what folders contains what projects. cc: @weshaggard +15403 area-System.Collections Immutable hash-based collections do not accept `null` values "I have spent two days chasing down an evil bug. I narrowed down the problem with this test case demonstrating different behavior for different collection classes that implement the same interface. Specifically ``Contains(null)`` throws a ``ArgumentNullException`` for ``ImmutableSortedSet`` but not for ``Array`` or the mutable ``SortedSet``. ```c# using System.Collections.Generic; using System.Collections.Immutable; using Xunit; public class SortedSetSpec { [Fact] public void WTFNullCheck() { var data = new[] {""a"", ""b"", ""c"", ""d""}; SortedSet ss = new SortedSet(data); ImmutableSortedSet iss = ss.ToImmutableSortedSet(); // This passes data.Contains(null).Should().BeFalse(); // This passes ss.Contains(null).Should().BeFalse(); // This throws an exception iss.Contains(null).Should().BeFalse(); } } ``` Given that all classes Array / SortedSet and ImmutableSortedSet implement ``ICollection`` shouldn't they have the same behavior on the ``Contains(null)`` call? The bug manifested itself when I data bound an ``ImmutableSortedSet`` to the ``ItemsSource`` property of a listbox. ```xml ``` The problem is that at some point deep in the databinding code ListBox (aka Selector ) asks the collection ``Contains(null)``?? and then it crashes if I've databound an ``ImmutableSortedSet``. So is this a bug with ``ImmutableCollections`` or with ``WPF`` or is it expected behavior and I should know better than to use ``ImmutableSortedSet``? [EDIT] Add syntax highlighting by @karelz" +15404 area-System.Threading Task.Delay and optional parameter issue Hey everybody, I don´t know exactly where to post this issue. I have the following code. ```cs public class Constants { public const int constantDefault = 100; } public async Task GetOneImage(..., int millisecondsDelay = Constants.constantDefault ) { await Task.Delay(millisecondsDelay); return await GetOneImage(...); } // Called without touching the optional parameter await GetOneImage(); ``` Starting with the last Visual Studio 2015 Update, the Code never reaches the internal GetOneImage(...). It only works if called like ```cs await Task.Delay(Constants.constantDefault); // or await Task.Delay(100); // or calling the GetOneImage like await GetOneImage(Constants.constantDefault); ``` Also not working ```cs public async Task GetOneImage(..., int millisecondsDelay = 100) { await Task.Delay(millisecondsDelay ); .... } ``` The project is a WPF application targeting .NET 4.5. Developement platform is Win 10 and Visual Studio 2015 14.0.25431.01 Update 3. The config is *Debug* and *Any CPU* Greetings! +15406 area-System.Net Remove byte[] allocation from IPAddress.{Try}Parse IPAddress.Parse and TryParse both allocate a byte[] to store the parsed address bytes, only to then have those bytes turned into either a uint or an array of ushorts. This commit eliminates the allocation, for both IPv4 and IPv6. This is relevant to TryParse even when the string isn't an address, as the array is allocated regardless. cc: @davidsh, @cipop, @geoffkizer @Priya91 +15407 area-Infrastructure Clean-up build.proj As part of https://github.com/dotnet/corefx/pull/15306 we moved the testing targets and properties into tests.builds we need to clean them out of build.proj. Things like https://github.com/dotnet/corefx/blob/master/build.proj#L74 +15408 area-Infrastructure Can't build CoreFx on Ubuntu 16.04.1 LTS - error during package restore "Hi, I tried to build CoreFx on Ubuntu 16.04.1 LTS (followed https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md) and got following errors: > Tools are already initialized > Running: /home/matekm/corefx/src/Native/build-native.sh x64 Debug Linux --numproc 1 toolSetDir=c:\tools\clr > Setting up directories for build > Checking pre-requisites... > Commencing build of corefx native components for Linux.x64.Debug > Invoking cmake with arguments: ""/home/matekm/corefx/src/Native/Unix"" DEBUG -DFEATURE_DISTRO_AGNOSTIC_SSL=0 -DCMAKE_STATIC_LIB_LINK=0 > -- Configuring done > -- Generating done > -- Build files have been written to: /home/matekm/corefx/bin/obj/Linux.x64.Debug/native > Executing make install -j 1 > [ 3%] Built target System.IO.Compression.Native > [ 27%] Built target System.Native > [ 51%] Built target System.Native-Static > [ 60%] Built target System.Net.Http.Native > [ 64%] Built target System.Net.Security.Native > [ 97%] Built target objlib > [ 98%] Built target System.Security.Cryptography.Native > [100%] Built target System.Security.Cryptography.Native.OpenSsl > Install the project... > -- Install configuration: ""DEBUG"" > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.IO.Compression.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.a > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Http.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Security.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.OpenSsl.so > Copying native shims to vertical runtime folder. > Command execution succeeded. > Tools are already initialized > Running: /home/matekm/corefx/Tools/msbuild.sh /nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Core.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Core.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Drawing.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Drawing.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Numerics.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Numerics.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Runtime.Serialization.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Runtime.Serialization.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Web.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Web.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Xml.Linq.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.Linq.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Xml.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/mscorlib.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> mscorlib.dll > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > > Errors in /home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0. > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > Command execution failed with exit code 1. Ubuntu details: > Distributor ID: Ubuntu > Description: Ubuntu 16.04.1 LTS > Release: 16.04 > Codename: xenial > I know it's probably problem with me, not the corefx but I would appreciate some help;)" +15409 area-System.Net Skip websocket testing on Windows 7. fixes #15380 cc @CIPop +15410 area-System.Collections SortedSetEqualityComparer seems to ignore the comparer from CreateSetComparer Discovered during #15376 [`SortedSetEqualityComparer`](https://github.com/dotnet/corefx/blob/adb0f13d7aafdbee95ae13f970c8ad25f77558c5/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L2631) has a `_comparer` field that is always set to the `Comparer.Default`. This is because although it has a constructor that allows a different comparer to be passed in, that constructor is never actually called. And during `Equals`, it uses that default comparer for comparing two sorted sets and leaves the equality comparer which was handed to it from `CreateSetComparer` completely out of the equation. The fix would be to remove the `_comparer` field and use the equality comparer for everything. +15411 area-Meta Cleanup: remove empty try's We have about 20 instances of `try { }` See https://github.com/dotnet/coreclr/issues/8924. The PR https://github.com/dotnet/coreclr/pull/8949 makes sure they are not represented in generated code so this is just minor code cleanup. +15412 area-System.Memory Add GC reporting test for `Span` +15413 area-System.Collections Deduplicate lots of AVL tree implementations in System.Collections.Immutable I am in the process of separating out some immutable collection types into new files, and I counted 4 different AVL tree implementations in the assembly-- one in `ImmutableList`, one in `ImmutableSortedDictionary`, one in `ImmutableSortedSet`, and one in `SortedInt32KeyNode`. Many of the methods in one file look like they're copied and pasted from another, which is definitely not ideal. (e.g. Remove operations: [ISS](https://github.com/dotnet/corefx/blob/51c048850ab38fe9618592b04a29e52a44534039/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedSet_1.cs#L1801), [ISD](https://github.com/dotnet/corefx/blob/51c048850ab38fe9618592b04a29e52a44534039/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedDictionary_2.cs#L1884), [IL](https://github.com/dotnet/corefx/blob/51c048850ab38fe9618592b04a29e52a44534039/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableList_1.cs#L2141), [SI32KN](https://github.com/dotnet/corefx/blob/51c048850ab38fe9618592b04a29e52a44534039/src/System.Collections.Immutable/src/System/Collections/Immutable/SortedInt32KeyNode.cs#L463)) ## Possible solutions - One way I can think of to work around this is to have one `AvlNode` class that contains all of the central logic. All of the other node types can be converted to one-field struct wrappers around this type that implement their custom logic, e.g. ```c# public sealed class AvlNode { // Tree balancing operations, MutateRight/Left, field declarations for _height/_left/_right, etc. } public class ImmutableList { public struct Node : IBinaryTree, IEnumerable { private readonly AvlNode _underlying; // Methods that make sense for ImmutableList's Node } } ``` As long as we keep the struct one field long, we should not suffer from a perf hit because the JIT generates really good code for tiny struct wrappers. Additionally, we get to keep the underlying node type sealed. **Complications:** One caveat that this approach would have is that a nil (an actual nil, not an empty) node would now be represented as a default struct instead of null. So we'd likely have to introduce `IsDefault`, `IsEmpty`, and `IsDefaultOrEmpty` properties for each struct node type and change all of the call sites/asserts to use those. Another is that since the types are now structs they will be boxed at any call sites they are being used as an interface, for example `IBinaryTree` / `IEnumerable` in the above example. I don't expect there are many of those call sites though (if I understood the code correctly, `IBinaryTree` is for testing purposes?) so maybe that won't be an issue. /cc @ianhays @AArnott, please let me know what you think of this solution. +15414 area-System.Reflection Bring back System.Reflection.Emit.TypeBuilder.CreateType API +15416 area-System.Collections Split up some immutable collection types into new files I found it unwieldy to scroll through some immutable collection files like `ImmutableSortedDictionary_2.cs`, which currently contains over 2000 lines of code. So I decided to split out a bunch of nested types into new files for that and some other types. You can view the full list of files in the `.csproj` diff; each debugger proxy/enumerator/AVL tree implementation gets its own file. /cc @AArnott @ianhays +15419 area-System.Data "[CI Failure] System.Data.SqlClient.TdsParser.TryProcessError: ""class and token don't match!""" An assert seems to be getting hit here: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/2356/consoleFull ``` 17:57:15 Discovering: System.Runtime.Loader.DefaultContext.Tests 17:57:16 class and token don't match! 17:57:16 17:57:16 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 17:57:16 at System.Environment.get_StackTrace() 17:57:16 at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 17:57:16 at System.Diagnostics.Debug.Assert(Boolean condition, String message) 17:57:16 at System.Data.SqlClient.TdsParser.TryProcessError(Byte token, TdsParserStateObject stateObj, SqlError& error) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs:line 3035 17:57:16 at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs:line 1716 17:57:16 at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 1913 17:57:16 at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 1104 17:57:16 at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 821 17:57:16 at System.Data.SqlClient.Tests.DiagnosticTest.b__9_0() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 101 17:57:16 at System.Data.SqlClient.Tests.DiagnosticTest.CollectStatisticsDiagnostics(Action sqlOperation) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 585 17:57:16 at System.Data.SqlClient.Tests.DiagnosticTest.ExecuteNonQueryErrorTest() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 92 ``` +15421 area-System.Security "OuterLoop_Win7_Debug: ""WellKnownSidTypeTests"" failed: need to disable tests when not a domain user" Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/lastFailedBuild/consoleText Failed test: WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType Message: ~~~ System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountPolicyAdminsSid. Parameter name: domainSid ~~~ Stack Trace: ~~~ D:\j\workspace\outerloop_win---b280fd23\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) D:\j\workspace\outerloop_win---b280fd23\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) ~~~ Message: ~~~ System.ArgumentException : The parameter is incorrect Parameter name: sidType/domainSid ~~~ Stack Trace: ~~~ D:\j\workspace\outerloop_win---b280fd23\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(662,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) D:\j\workspace\outerloop_win---b280fd23\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) ~~~ Configuration: OuterLoop_Windows7_debug (build#75) +15424 area-System.Data System.Data.SqlClient hangs on Linux (Docker) with SQL Server 2005 "We are observing a wierd behaviour with System.Data.SqlClient and Linux (Debian Jessie / Docker with microsoft/aspnetcore:1.1.0). When connecting to an SQL Server 2016 instance everything works fine. When connecting to SQL Server 2005, our application hangs indefinitely. Sometimes, an InvalidOperationException occurs stating: ""The timeout period elapsed prior to obtaining a connection from the pool."". Everything works as expected on Windows. Maybe a similar issue to #15287?" +15427 area-Infrastructure Use bootstrap.ps1/sh instead of init-tools.cmd/sh Right now, CoreFX uses `init-tools.cmd` and `init-tools.sh` to restore and set up BuildTools. There is a new BuildTools setup flow that CLI and BuildTools use called bootstrap that allows significantly more code sharing by directly downloading a BuildTools script which handles further steps. This reduces the complexity in CoreFX itself and reduces the chance the BuildTools init flow diverges from other repositories' (like CoreCLR's). The bootstrap flow is also easier to improve, because the improvements only need to be done in one place rather than being ported across many repos. See https://github.com/dotnet/buildtools/issues/558. Living list of things that should be fixed before CoreFX adoption (feel free to edit): * Make script download repeatable. Currently it downloads the latest in a branch, but a commit hash should be used. This is the case for the bootstrap.ps1/sh download and the dotnet-install.ps1/sh download inside the bootstrap script. https://github.com/dotnet/buildtools/issues/1225 * A change in CLI version but not BuildTools doesn't re-init the `Tools` directory. https://github.com/dotnet/buildtools/issues/1192 Any other known issues pre-CoreFX adoption, @weshaggard @crummel ? /cc @ellismg @dleeapho @markwilkie +15429 area-Infrastructure CodeCoverage target clean-up See https://github.com/dotnet/corefx/pull/15397#discussion_r97456921. We should not have people referencing properties/items that begin with an underscore in projects those are intended to be private properties in targets. https://github.com/dotnet/corefx/blob/7642f1f980fb0e8fa45f67769e0755a97df7b4d5/Tools-Override/CodeCoverage.targets#L44 We should provide a non-private property or item group that folks can use to configure their project. +15430 area-System.Net Implement WebSocket Compression https://tools.ietf.org/html/rfc7692 https://github.com/aspnet/WebSockets/issues/19 Implementation notes: The System.Net.WebSockets.WebSocket.SendAsync API is poorly suited to compression/extension. Compression is a per-message flag set on the first frame using the RSV1 bit. SendAsync sends frames and only takes the buffer, message type, an EndOfMessage bool, and a cancellationToken. There's no simple way to indicate if the data is or should be compressed / transformed. Possible solutions: - Enable compression for all messages, don't provide a per message option - Add a new overload of SendAsync with a compression / RSV1 flag. (Requires changing the core WebSocket abstraction) - Add a property to WebSocket bool CompressOutput that can be toggled between messages (Requires changing the core WebSocket abstraction) - Overload WebSocketMessageType with CompressedBinary and CompressedText. As an enum we may be able to temporarily pass data through here by casting non-standard values. The enum values already do not map directly to the WebSocket frame type values. ReceiveAsync is easier, it could: - Decompress the content internally - Add a flag to WebSocketReceiveResult indicating if the content was compressed. - Use the same WebSocketMessageType overloads from above indicating if the content is compressed (but only if it does not decompress it internally, don't want to confuse consumers). The compression extension could not be correctly implemented as wrapper over the current WebSocket API due to the framing requirement. Compression either needs to be built in or the API needs to expose additional frame fields (e.g. RSV1). +15431 area-System.Data Resolved connection leak in SNI by adding dispose for underlying TCPstream in SNITcpHandle.Dispose() Fix for SqlConnection TCP connection leak. Copied from master branch PR https://github.com/dotnet/corefx/pull/13653 Originally caused by https://github.com/dotnet/corefx/commit/30abd30421289509cd3bd18a9114501afdc0fb7c which removed a TcpClient.Dispose() in SNITcpHandle This is a fix for https://github.com/dotnet/corefx/issues/13422 +15432 area-System.Net Reduce HttpClient overheads on Unix This PR provides several commits for improving HttpClient performance on Unix (some apply to Windows as well): - When POST'ing data via HttpClient, even if only a small amount of content, libcurl ends up sending out two packets for the request. A commit adds an optimization whereby if a ByteArrayContent (or derived content type) is used such that we have all of the content in-memory and don't need to read from the content stream, we can instead provide the data to libcurl in advance. This both lets it optimize the size of its writes (and thus the number of packets) and lets us avoid the overhead of the machinery involved in having libcurl pull from the request content stream. - Both CurlHandler and WinHttpHandler know about a set of headers for which we have constant strings available, and they avoid allocating strings for such headers. But CurlHandler has a bug where it passes in the wrong span, which means it always fails to match, and ends up allocating the string anyway. - When CurlResponseStream is used from a consumer that uses Begin/EndRead, these calls end up going to the base implementation, which queues a work item that calls Read, which in turn calls ReadAsync and blocks waiting for it to complete. The fix is to just override Begin/EndRead and wrap ReadAsync directly. - Getting the request content stream is resulting in a fair number of unnecessary allocations and delegate invocations for a common case where the stream is returned synchronously. - Lots of intermediate string values are getting allocated when rendering headers to strings. This change uses StringBuffer and StringBufferCache to avoid most of them. - When rendering headers, we're often making multiple calls to GetValuesAsStrings indirectly when we can get away with just one call (and resulting string[] allocation). - Every request is allocating a Uri based on the actual url libcurl reports, but we only need to do that if it's actually changed. - There's no need to do certificate revocation checking when the client is building a chain for its own certs. But it's taking a significant chunk of time... one of our outerloop tests is frequently timing out even as a result. cc: @mikeharder, @cesarbs, @davidsh, @cipop, @geoffkizer, @bartonjs @Priya91 +15434 area-System.Memory S.M.Span: Handle OutOfMemoryException in longer-than-uint-MaxValue Clear tests Handle OutOfMemoryException in longer-than-uint-MaxValue Clear test by catching the exception and skipping. Close #15348 cc @AtsushiKan @jkotas @danmosemsft +15435 area-System.Drawing Implement IEquatable interface on System.Drawing structs. Fixes #5255 +15436 area-System.Security System.Security.Principal.Windows tests fail when running as admin While running the System.Security.Principal.Windows tests fail when running as admin. ``` D:\git\corefx\bin/Windows_NT.AnyCPU.Debug/System.Security.Principal.Windows.Tests/netstandard//RunTests.cmd D:\git\corefx\Tools/testdotnetcli (TaskId:89) Using D:\git\corefx\Tools\testdotnetcli as the test runtime folder. (TaskId:89) Executing in D:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Security.Principal.Windows.Tests\netstandard\ (TaskId:89) Running tests... Start time: 11:30:23.61 (TaskId:89) Command(s): (TaskId:89) call D:\git\corefx\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe System.Security.Principal.Windows.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests (TaskId:89) xUnit.net console test runner (64-bit .NET Core) (TaskId:89) Copyright (C) 2014 Outercurve Foundation. (TaskId:89) (TaskId:89) Discovering: System.Security.Principal.Windows.Tests (TaskId:89) Discovered: System.Security.Principal.Windows.Tests (TaskId:89) Starting: System.Security.Principal.Windows.Tests (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountRasAndIasServersSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountRasAndIasServersSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountPolicyAdminsSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountPolicyAdminsSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountEnterpriseAdminsSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountEnterpriseAdminsSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: WinNewEnterpriseReadonlyControllersSid) [FAIL] (TaskId:89) System.ArgumentException : The parameter is incorrect (TaskId:89) Parameter name: sidType/domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(662,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: WinAccountReadonlyControllersSid) [FAIL] (TaskId:89) System.ArgumentException : The parameter is incorrect (TaskId:89) Parameter name: sidType/domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(662,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: WinNonCacheablePrincipalsGroupSid) [FAIL] (TaskId:89) System.ArgumentException : The parameter is incorrect (TaskId:89) Parameter name: sidType/domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(662,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: WinCacheablePrincipalsGroupSid) [FAIL] (TaskId:89) System.ArgumentException : The parameter is incorrect (TaskId:89) Parameter name: sidType/domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(662,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountSchemaAdminsSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountSchemaAdminsSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountControllersSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountControllersSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountComputersSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountComputersSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountDomainGuestsSid) [FAIL] (TaskId:89) System.ArgumentNullException : The domainSid parameter must be specified for creating well-known SID of type AccountDomainGuestsSid. (TaskId:89) Parameter name: domainSid (TaskId:89) Stack Trace: (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(628,0): at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) (TaskId:89) D:\git\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(114,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) (TaskId:89) WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(sidType: AccountDomainUsersSid) [FAIL] (TaskId:89) Finished: System.Security.Principal.Windows.Tests (TaskId:89) ``` On my local machine some of the tests are still failing for me because currentDomainSid (https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/tests/WellKnownSidTypeTests.cs#L113) is null, which causes some of the SID checks to fail. I believe for some reason that is null on my local runs because I'm running them as admin. If I run them as non-admin they pass. I don't know enough about the identity space to understand why that is the case but we should try and make sure all our tests pass correctly in both admin and non-admin mode, even if they are partitioned in some way between the two. cc @karelz @couven92 +15437 area-Infrastructure Update BuildTools version to 1.0.27-prerelease-01224-01 cc: @MattGal +15440 area-Infrastructure Add argument that disables symbol stripping (Edit, note: this PR changed directions to add an argument that enables symbol stripping, and disable it otherwise.) Adds a flag that can be passed to the build to disable symbol stripping. Pass `noStripSymbols` to `src/Native/build-native.sh`, or pass `-noStripSymbols` to `build.sh` or `build-native.sh`. `build.sh` will try to pass it to `build-managed.sh`, so I have it no-op in the managed build. If native symbols aren't stripped, no symbol package is created and the build exits normally. This is the same behavior as a Debug build, which never strips symbols due to the RELEASE check in the CMake file. The flag is negative to preserve official build behavior. To clean that up, I could change it to `stripSymbols` and make the official builds pass it in. We could remove the RELEASE flag check, then. @ellismg @chcosta Think that's a good way to go? One thing I noticed about this is that CMake doesn't rebuild when I change whether or not I pass `noStripSymbols`. I don't know if this is a big issue. I think the cause is conditionally doing `add_custom_command`, because we aren't giving CMake a way to tell if the command's been done given the input arguments. I can look at fixing that before merging this PR if it's important. +15441 area-Infrastructure Allow AdditionalCodeCoverageAssemblies to be specified in project files Fixes #15429 @weshaggard @JonHanna +15443 area-Meta Remove calls to Contract methods/or change to Debug.Assert as appropriate There are a bunch of calls to `Contract` methods in corefx: see [gist][1]. Since CONTRACTS_FULL is not defined and the contract rewriter is not used, it's dead code. All methods that assert something (such as `Ensures`) should be replaced with asserts where practical, and all calls to `EndContractBlock` can be deleted. Context for this issue: https://github.com/dotnet/corefx/issues/11596#issuecomment-274986502 +15445 area-Infrastructure ApiCompatBaseline files are being regenerated differently outside Windows When I build on Ubuntu 16.04, two ApiCompatBaseline.txt files are being regenerated, but they aren't when I build on Windows (or presumably when anyone builds on Windows). Here is the diff that gets created: https://github.com/mellinoe/corefx/commit/d874d888467bc6eaf0389cc9d6b6957227ce0d80 It looks like the elements are being written in a different order. On top of that, there does seem to be some inconsistency [related to the signing key](https://github.com/mellinoe/corefx/commit/d874d888467bc6eaf0389cc9d6b6957227ce0d80#diff-0caf4b2ecb4243f5ded14afbef2d9754R1) used for System.IO.Compression.ZipFile? @weshaggard +15446 area-System.Linq Use TryEnsureSufficientExecutionStack in Expressions. Instead of catching exception from TryEnsureSufficientExecutionStack. Fixes #11556 If `MaxExecutionStackCount` is hit this just lets the caller try to use the current stack. This changes the behaviour with code that pushes past the limit of the stack guard from throwing `InsufficientExecutionStackException` to throwing `StackOverflowException` (unless the caller was *really* lucky!). This seems reasonable in that it should be rare, is what more developers would expect from the sort of deeply recursive code that could do that, and is what would have happened prior to #11091, except it'll have gone through 1024 stacks' worth of calls before it does so. The exception could be easily changed to ``InsufficientExecutionStackException` if preferred. +15448 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs to beta-24925-05, beta-24925-02, beta-24925-00, respectively (master) +15451 area-System.IO Add drvfs and lxfs to GetDriveType Fixes https://github.com/dotnet/corefx/issues/11570 cc: @karelz, @weshaggard +15453 area-System.Runtime Enum Improvements "Enums are essential commonly used types but have several areas in need of improvement. For each non-generic `Enum` method there should be an equivalent generic version. There should be better support for flag enums, bit-masked enums with the `FlagsAttribute` applied. The performance of `Enum`'s methods that utilize reflection should be improved. Support for enum validation should be improved to support flag enums. Additionally, there should be added direct support for the retrieval of `Attribute`s applied to enum members. ## Rationale and Usage 1. Nearly all of `Enum`'s static methods are non-generic leading to the following issues. * Requires boxing for methods with enum input parameters losing type-safety, eg. `IsDefined` and `GetName`. * Requires casting/unboxing for methods with an enum return value, eg. `ToObject`, `Parse`, and `GetValues`. * Requires the enum type to be explicitly specified as an argument. * Requires invocation using static method syntax. 2. Support for flag enums is limited to just the `HasFlag` method which isn't type-safe, is inefficient, and is ambiguous as to whether it indicates if the value has all or any of the specified flags. It's also visible to all enum values whether it's a flag enum or not. 3. Many of `Enum`'s methods use reflection on each invocation instead of caching the reflection results leading to poor performance. 4. Built-in support for enum validation is currently limited to the `IsDefined` method which doesn't support flag enum combinations and is inefficient due to a lack of caching of reflection results. 5. The pattern to associate extra data with an enum member using `Attribute`s is not directly supported and instead requires users to manually retrieve the `Attribute`s via reflection. This pattern is commonly used on enums using the `DescriptionAttribute`, `EnumMemberAttribute`, and `DisplayAttribute`. With this proposal implemented what used to be this to validate a standard enum value ```c# MyEnum value = ???; bool isValid = Enum.IsDefined(typeof(MyEnum), value); ``` now becomes this ```c# MyEnum value = ???; bool isValid = value.IsDefined(); ``` And what used to be this to validate a flag enum value ```c# MyFlagEnum value = ???; bool isValid = (value & Enum.GetValues(typeof(MyFlagEnum)) .Cast() .Aggregate((working, next) => working | next)) == value; ``` now becomes just this ```c# MyFlagEnum value = ???; bool isValid = value.IsValidFlagCombination(); ``` And what used to be this to retrieve both the names and values of an enum's members ```c# var values = (MyEnum[])Enum.GetValues(typeof(MyEnum)); var names = Enum.GetNames(typeof(MyEnum)); for (int i = 0; i < values.Length; ++i) { MyEnum value = values[i]; string name = names[i]; } ``` now becomes this ```c# foreach (var member in Enum.GetMembers()) { MyEnum value = member.Value; string name = member.Name; } ``` And what used to be this to retrieve the `DescriptionAttribute.Description` of an enum member ```c# MyEnum value = ???; string description = ((DescriptionAttribute)Attribute.GetCustomAttribute( typeof(MyEnum).GetField(value.ToString()), typeof(DescriptionAttribute), false))?.Description; ``` now becomes this ```c# MyEnum value = ???; string description = value.GetAttributes()?.Get()?.Description; ``` With this implemented it will address #594, #693, #10692, #10908, and #11073. ## Proposed API I've split this proposal up into a base API addition as well as an `EnumMember` support addition in case `EnumMember` support is decided not to be desired for `corefx`. ### Base ```diff namespace System { public abstract class Enum : ValueType, IComparable, IConvertible, IFormattable { - public bool HasFlag(Enum flag); + [Obsolete(""Use FlagEnum.HasAllFlags or FlagEnum.HasAnyFlags instead""), EditorBrowsable(EditorBrowsableState.Never)] public bool HasFlag(Enum flag); - public static TEnum Parse(string value) where TEnum : struct; + public static TEnum Parse(string value) where TEnum : struct, Enum; - public static TEnum Parse(string value, bool ignoreCase) where TEnum : struct; + public static TEnum Parse(string value, bool ignoreCase) where TEnum : struct, Enum; - public static bool TryParse(string value, out TEnum result) where TEnum : struct; + public static bool TryParse(string value, out TEnum result) where TEnum : struct, Enum; - public static bool TryParse(string value, bool ignoreCase, out TEnum result) where TEnum : struct; + public static bool TryParse(string value, bool ignoreCase, out TEnum result) where TEnum : struct, Enum; // Generic versions of existing methods + public static int CompareTo(this TEnum value, TEnum other) where TEnum : struct, Enum; + public static bool Equals(this TEnum value, TEnum other) where TEnum : struct, Enum; + public static string Format(TEnum value, string format) where TEnum : struct, Enum; + public static string GetName(this TEnum value) where TEnum : struct, Enum; + public static IEnumerable GetNames() where TEnum : struct, Enum; + public static Type GetUnderlyingType() where TEnum : struct, Enum; + public static IEnumerable GetValues() where TEnum : struct, Enum; + public static bool IsDefined(this TEnum value) where TEnum : struct, Enum; + public static byte ToByte(TEnum value) where TEnum : struct, Enum; + public static short ToInt16(TEnum value) where TEnum : struct, Enum; + public static int ToInt32(TEnum value) where TEnum : struct, Enum; + public static long ToInt64(TEnum value) where TEnum : struct, Enum; + public static TEnum ToObject(object value) where TEnum : struct, Enum; + public static TEnum ToObject(sbyte value) where TEnum : struct, Enum; + public static TEnum ToObject(byte value) where TEnum : struct, Enum; + public static TEnum ToObject(short value) where TEnum : struct, Enum; + public static TEnum ToObject(ushort value) where TEnum : struct, Enum; + public static TEnum ToObject(int value) where TEnum : struct, Enum; + public static TEnum ToObject(uint value) where TEnum : struct, Enum; + public static TEnum ToObject(long value) where TEnum : struct, Enum; + public static TEnum ToObject(ulong value) where TEnum : struct, Enum; + public static sbyte ToSByte(TEnum value) where TEnum : struct, Enum; + public static string ToString(TEnum value) where TEnum : struct, Enum; + public static string ToString(TEnum value, string format) where TEnum : struct, Enum; + public static ushort ToUInt16(TEnum value) where TEnum : struct, Enum; + public static uint ToUInt32(TEnum value) where TEnum : struct, Enum; + public static ulong ToUInt64(TEnum value) where TEnum : struct, Enum; } } // Separate namespace and class to make flag enum extension methods' visibility optional +namespace System.Flags { + public static class FlagEnum { // Generic API + public static TEnum AllFlags() where TEnum : struct, Enum; + public static TEnum CombineFlags(this TEnum value, TEnum flags) where TEnum : struct, Enum; + public static TEnum CombineFlags(TEnum flag0, TEnum flag1, TEnum flag2) where TEnum : struct, Enum; + public static TEnum CombineFlags(TEnum flag0, TEnum flag1, TEnum flag2, TEnum flag3) where TEnum : struct, Enum; + public static TEnum CombineFlags(TEnum flag0, TEnum flag1, TEnum flag2, TEnum flag3, TEnum flag4) where TEnum : struct, Enum; + public static TEnum CombineFlags(params TEnum[] flags) where TEnum : struct, Enum; + public static TEnum CombineFlags(IEnumerable flags) where TEnum : struct, Enum; + public static TEnum CommonFlags(this TEnum value, TEnum flags) where TEnum : struct, Enum; + public static IEnumerable GetFlags(this TEnum value) where TEnum : struct, Enum; + public static bool HasAllFlags(this TEnum value) where TEnum : struct, Enum; + public static bool HasAllFlags(this TEnum value, TEnum flags) where TEnum : struct, Enum; + public static bool HasAnyFlags(this TEnum value) where TEnum : struct, Enum; + public static bool HasAnyFlags(this TEnum value, TEnum flags) where TEnum : struct, Enum; + public static bool IsFlagEnum() where TEnum : struct, Enum; + public static bool IsValidFlagCombination(this TEnum value) where TEnum : struct, Enum; + public static TEnum RemoveFlags(this TEnum value, TEnum flags) where TEnum : struct, Enum; // Non-Generic API + public static object AllFlags(Type enumType); + public static object CombineFlags(Type enumType, object value, object flags); + public static object CombineFlags(Type enumType, params object[] flags); + public static object CombineFlags(Type enumType, IEnumerable flags); + public static object CommonFlags(Type enumType, object value, object flags); + public static IEnumerable GetFlags(Type enumType, object value); + public static bool HasAllFlags(Type enumType, object value); + public static bool HasAllFlags(Type enumType, object value, object flags); + public static bool HasAnyFlags(Type enumType, object value); + public static bool HasAnyFlags(Type enumType, object value, object flags); + public static bool IsFlagEnum(Type enumType); + public static bool IsValidFlagCombination(Type enumType, object value); + public static object RemoveFlags(Type enumType, object value, object flags); + } +} namespace System.ComponentModel { + public sealed class PrimaryAttribute : Attribute { + public PrimaryAttribute(); + } } ``` ### `EnumMember` Support ```diff namespace System { public abstract class Enum : ValueType, IComparable, IConvertible, IFormattable { // New Generic API + public static ComponentModel.AttributeCollection GetAttributes(this TEnum value) where TEnum : struct, Enum; + public static EnumMember GetMember(this TEnum value) where TEnum : struct, Enum; + public static EnumMember GetMember(string name) where TEnum : struct, Enum; + public static EnumMember GetMember(string name, bool ignoreCase) where TEnum : struct, Enum; + public static IEnumerable> GetMembers() where TEnum : struct, Enum; // New Non-Generic API + public static ComponentModel.AttributeCollection GetAttributes(Type enumType, object value); + public static EnumMember GetMember(Type enumType, object value) + public static EnumMember GetMember(Type enumType, string name); + public static EnumMember GetMember(Type enumType, string name, bool ignoreCase); + public static IEnumerable GetMembers(Type enumType); } + public abstract class EnumMember : IEquatable, IComparable, IComparable, IConvertible, IFormattable { + public ComponentModel.AttributeCollection Attributes { get; } + public string Name { get; } + public object Value { get; } + public bool Equals(EnumMember other); + public sealed override bool Equals(object other); + public sealed override int GetHashCode(); + public sealed override string ToString(); + public string ToString(string format); + } + public abstract class EnumMember : EnumMember, IEquatable>, IComparable> { + public new TEnum Value { get; } + public bool Equals(EnumMember other); + } } namespace System.ComponentModel { - public class AttributeCollection : ICollection, IEnumerable + public class AttributeCollection : ICollection, IEnumerable, IList, IReadOnlyList { + public TAttribute Get() where TAttribute : Attribute; + public Attribute Get(Type attributeType); + public IEnumerable GetAll() where TAttribute : Attribute; + public IEnumerable GetAll(Type attributeType); + public bool Has() where TAttribute : Attribute; + public bool Has(Type attributeType); } } ``` ## API Details This proposal makes use of two `C#` language features that need to be added in order for this proposal to make the most impact. The first one is that `Enum` needs to be added as a valid type argument constraint in `C#` as is proposed in [csharplang#104](https://github.com/dotnet/csharplang/issues/104). `C#`, `VB`, and `F#` are currently able to consume generic methods with an `Enum` type argument constraint but just can't express them. This API cannot be implemented reasonably without this being added as that would mean no extension methods due to promotion of static method to an extension method later being a breaking change due to [csharplang#665](https://github.com/dotnet/csharplang/issues/665). Additionally, adding the `Enum` constraint later would be a breaking change and may not be acceptable. The second one is that this proposal specifies extension methods within `System.Enum` and as such requires `C#` to allow extension methods within non-static classes as is proposed in [csharplang#301](https://github.com/dotnet/csharplang/issues/301). This would not have to be implemented before the API ships as it wouldn't be a breaking change to promote a static method to be an extension method in a non-static class because that's not currently possible. The extension method promotion would just need to be done at the same time as the language release that allows extension methods in non-static classes. ### Base API Details #### `Enum` API Details * `HasFlag` is being deprecated as it's ambiguous and clutters up the intellisense as it's always accessible to all enum values. Using `System.Flags.FlagEnum.HasAllFlags` removes the naming ambiguity and since it's in a separate namespace it'll only be visible within a source file when the file explicitly includes `System.Flags`. * `Enum` has been added to the type constraints of the generic versions of `Parse` and `TryParse`. This would be a breaking change if another generic method that is constrained to `struct` currently calls these methods. #### `FlagEnum` API Details The flag enum operations are defined in the separate class `FlagEnum` in the namespace `System.Flags` to make flag enum extension methods' visibility optional. * `CombineFlags` returns the bitwise OR of the values. The name was chosen as it mirrors the naming of `Delegate.Combine`. * `CommonFlags` returns the bitwise AND of the values. * `AllFlags` returns all enum members' values that are powers of two bitwise ORed together. * `GetFlags` retrieves each valid flag included in the value in increasing significance bit order. * `HasAllFlags` indicates if the value contains all of the specified flags, equivalent to the current `HasFlag`. * `HasAnyFlags` indicates if the value contains any of the specified flags. * `IsFlagEnum` indicates if the enum has the `FlagsAttribute` applied. * `IsValidFlagCombination` is defined as `(value & AllFlags) == value`. * `RemoveFlags` returns value with all of the specified flags removed and is defined as `(value & (~flags))`. The name was chosen as it mirrors the naming of `Delegate.Remove`. #### `PrimaryAttribute` API Details * The `PrimaryAttribute` is used to specify what enum member to retrieve when there are multiple enum members with the same value. It could be used for more than just enum members for cases in code where there is ambiguity. ### `EnumMember` Support API Details #### `Enum` API Details * `GetAttributes` retrieves the `AttributeCollection` of an enum member with the specified value. If there are multiple enum members with the specified value the enum member marked with the `PrimaryAttribute` will be used. If there are no enum members with the specified value `null` is returned. * `GetMember` retrieves the `EnumMember` with the specified value or name. If there are multiple enum members with the specified value the enum member marked with the `PrimaryAttribute` will be retrieved. If there are no enum members with the specified value or name `null` is returned. * `GetMembers` retrieves all of the `EnumMember`s of the specified enum in increasing significance bit order by their respective values. #### `EnumMember` API Details * `EnumMember` and `EnumMember` are a new object model formed over an enum member which include its name, value, and attributes. They only have internal constructors and there is only one instance of `EnumMember` created for each enum member thus one can use `ReferenceEquals` for determining equality. This also prevents allocations after the first retrieval. * It seems there's no reason to constrain `TEnum` in `EnumMember` to an `Enum` as it's not publicly constructible and being unconstrained would be beneficial in generic programming. #### `AttributeCollection` API Details * `Get` returns the first `Attribute` in the collection that is assignable to the specified attribute type if available otherwise `null`. * `GetAll` returns all `Attribute`s in the collection that are assignable to the specified attribute type. * `Has` indicates if any `Attribute`s in the collection are assignable to the specified attribute type. * Type needs to be moved from the `System.ComponentModel.TypeConverter` assembly into `mscorlib` while adding an automatic binding redirect. ## Implementation Details This proposal stems from my work on the open source library [Enums.NET](https://github.com/TylerBrinkley/Enums.NET) which addresses each of these issues and will be the basis for an implementation. For efficiency this is how `Enums.NET` is implemented. First, using `Enum` as a generic type argument causes generic code-explosion in today's runtimes so it's essential that it's included sparingly. For this reason most logic is contained in an [`EnumCache`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/EnumCache.cs#L42) object where `TInt` is the underlying type and `TIntProvider` is the underlying type's operations provider which implements the interface [`INumericProvider`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/Numerics/INumericProvider.cs#L31) which provides the bitwise operations and other needed operations. Including the `TIntProvider` as a type parameter allows the runtime to inline calls to its methods so there's no interface method dispatch, a technique described in this [generic calculations article](https://www.codeproject.com/articles/8531/using-generics-for-calculations). Now how can one access this `EnumCache` object when the caller only has the enum type as a generic type argument? This is solved by the bridge-like object [`EnumInfo`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/EnumInfo.cs#L45) which implements the interfaces [`IEnumInfo`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/IEnumInfo.cs#L101) for generic methods and [`IEnumInfo`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/IEnumInfo.cs#L44) for non-generic methods. It simply acts as a bridge to delegate calls from the interfaces to `EnumCache`. In order to do that it needs to be able to efficiently convert values between `TEnum` and `TInt`. This is performed by the conversion methods [`ToInt`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/EnumInfo.cs#L61) and [`ToEnum`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/EnumInfo.cs#L71) which are declared as `extern` methods for efficiency so that they're simply defined as casts from one type to the other. This `EnumInfo` is created via reflection upon it's first call and is stored in the static property [`Enums.Info`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/Enums.cs#L1592) as an `IEnumInfo` which is then called by [`Enums`](https://github.com/TylerBrinkley/Enums.NET/blob/ca49e29a8effe0460135eeb10eed6cc1ec907188/Src/Enums.NET/Enums.cs#L38)'s generic methods. For non-generic methods a `Dictionary` is used to retrieve the `IEnumInfo` to use. ## Open Questions * Can and should `Enum` implement `IComparable` and `IEquatable` as proposed in #8973? * Is adding the `Enum` constraint to the generic versions of `Enum.Parse` and `Enum.TryParse` an acceptable breaking change? ## Updates * Added more implementation details. * Added more API details. * Added enumerating members usage example. * Added generic versions of instance methods for performance reasons. * Removed the `System.Enums` namespace and moved its members into the `System` namespace. * Moved `PrimaryAttribute` into the `System.ComponentModel` namespace and switched to using the existing `System.ComponentModel.AttributeCollection`. * Removed `IsValid` method as it's meaning is rather subjective and promoted `IsValidFlagCombination` as an extension method. * Renamed `GetAllFlags` to `AllFlags` as it more closely resembles a property but can't be because it is generic. Similar naming to `Array.Empty`. * Removed `EnumComparer` as one can just use `Comparer.Default` and `EqualityComparer.Default` instead. * Split the proposed API to a base API addition and an `EnumMember` support API addition." +15454 area-Infrastructure [NO-MERGE] Changes to make projects build against the TargetingPack based on Configuration instead of BuildConfiguration @dotnet-bot skip ci please Sharing the work I have so far for an initial review. cc: @weshaggard @ericstj With these changes I have the refs, shims and src projects building succesfully. I am however hitting two issues when running build.cmd: - Bin clash logger is detecting issues that I haven't checked yet - Package validation is detecting some cycles in our runtime dir like for example: `netstandard > System.Data.Common > System.Xml.ReaderWriter > S ystem.Private.Xml > Microsoft.Win32.Registry > netstandard` which might be difficult to fix. @ericstj I'll check with you tomorrow how to address them. FYI: @tarekgh @mellinoe +15455 area-System.Numerics Complex.Asin gives bad values for extreme arguments For all Complex values z in the representable range, the value of asin(z) lies in the representable range. For example for large real m ~ Double.MaxValue, asin(m) ~ \pi / 2 + \ln (2 m) i ~ 1.5708 + 710.476 i. (The sign of the imaginary part may change depending on the phase convention, but the magnitude shouldn't.) But the Complex.Asin method returns NaNs for these arguments, and indeed for more arguments with |z| > Sqrt(Math.Double), presumably because of internal overflow when calculating z * z. Complex.Acos similiarly gives unnecessary NaNs for large arguments. These methods should be fixed so as to give accurate results over the entire representable range. +15456 area-Infrastructure Fix P2P reference Configuration selection Previously we'd always choose Configuration for P2Ps based on BuildConfiguration. This was incorrect and could result in netstandard configurations building against netcoreapp references. Fix this by doing configuration selection in the referencing project. I had to fix a number of projects after making this change. These were all cases where we were building a OS-agnostic configuration and referencing an OS-specific library. Or building netstandard libraries referencing netcoreapp libraries. I've also added hooks to build all configurations. To do this from a traversal set /p:BuildAllConfigurations=true. To do this from a project build with /t:BuildAll. /cc @weshaggard @joperezr @chcosta +15460 area-System.Net Avoid creating a new HttpClient per HttpWebRequest in some cases In .NET Core, HttpWebRequest is layered on top of HttpClient and HttpClientHandler. Due to the mismatch in APIs, the implementation creates a new HttpClient per HttpWebRequest, which is very inefficient. But those costs can be avoided in some circumstances. In particular, we can have a shared HttpClient configured with the same defaults that HttpWebRequest has; then as long as none of the settings on the HttpWebRequest have been changed to veer from the defaults, the shared HttpClient instance can be used rather than creating a new one. +15461 area-System.Net Fix typo in HttpClient private method name +15462 area-System.Net Avoid InternalGetCookies costs when there are no cookies Calling CookieContainer.GetCookieHeader results in a bunch of work and allocations, including a list, an array, several strings, etc., but none of that is necessary if there aren't any cookies in the container anyway. This commit just special cases an empty container to avoid those. This is showing up in traces of HttpClient. cc: @davidsh, @cipop, @geoffkizer, @mikeharder, @cesarbs +15464 area-Microsoft.CSharp Microsoft.CSharp.RuntimeBinder constant folding incorrect in several ways Given: ```C# var x = CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.Constant, null); var y = CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.Constant, null); var binder = Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation(CSharpBinderFlags.None, ExpressionType.Divide, GetType(), new[] {x, y}); var callsite = CallSite>.Create(binder); callsite.Target(callsite, 8, 0); ``` We would expect the last line to throw a `RuntimeBinderException` due to the divide by constant zero. Instead it throws `OverflowException` (in debug it throws an assertion failure). Of the other integer types, `uint`, `long` and `ulong` will all throw a `DivideByZeroException` while all the others throw `OverflowException`. +15466 area-Microsoft.CSharp Catch divide-by-constant-zero in Microsoft.CSharp.RuntimeBinder Fixes #15464 +15467 area-Microsoft.CSharp Are constant-folding and checks in Microsoft.CSharp.RuntimeBinder useful. #15464 notes a bug in the constant-folding RuntimeBinder does, but considering that with the code emitted by the C# compiler when used with `dynamic` such checks and folding would already be done prior to the dynamic binding, is this constant-folding useful? Is the cost of checking if they can be applied when binding worth the benefit gained when running? Would it be better to just always evaluate at runtime? One downside I can definitely see to removing them is the difference in exceptions thrown, but if that currently isn't correct anyway, it's not that big a loss. +15469 area-System.Threading Need for a generic IAwaitable and library of combinators Today custom awaiters fall short for several reasons: - Inability to declare an async methods as anything but Task (better with C# 7 and task likes) - Methods that work on any task like (Awaitable.WhenAll, Awaitable.WhenAny etc). - A first class interface for awaiting (IAwaiter) can be implemented things like cancellation tokens and other awaitable things (events?) I haven't thought through an API proposal as yet, just throwing this out there for now. Another alternative would be to expose Task from all APIs (like Cancellation token) but that doesn't seem like a very efficient solution. /cc @stephentoub +15470 area-System.Runtime Use `throw null` in System.Runtime ref Some of the APIs that were previously `#if netcoreapp11` were using the old `return default(T)` pattern. Changed them to `throw null`. +15471 area-Meta EPPlus Exoprt to excel Issue! #I user EPPlus for export data to excel and i got this when run the project > TypeLoadException: Could not load type 'System.StringExtensions' from assembly 'CoreCompat.System.Drawing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c0a7ed9c2333b592'. OfficeOpenXml.Packaging.ZipPackage.PartExists(Uri partUri) OfficeOpenXml.ExcelWorkbook.CreateWorkbookXml(XmlNamespaceManager namespaceManager) OfficeOpenXml.ExcelWorkbook..ctor(ExcelPackage package, XmlNamespaceManager namespaceManager) OfficeOpenXml.ExcelPackage.get_Workbook() OfficeOpenXml.ExcelPackage.CreateBlankWb() OfficeOpenXml.ExcelPackage.ConstructNewFile(string password) HelpSearch.Controllers.AdminController.Reports(string DepName) in AdminController.cs + using (ExcelPackage package = new ExcelPackage(file)) +15472 area-Infrastructure "dumpling error ""dumpling.py upload: error: argument --dumppath: expected one argument"" on Fedora" https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170125.02/workItem/Common.Tests/details/38037e24-2d39-4dae-a997-6c99c5bcba9d ``` 2017-01-25 06:23:16,119: INFO: proc(55): run_and_log_output: Output: echo uploading core to dumpling service 2017-01-25 06:23:16,119: INFO: proc(55): run_and_log_output: Output: python /home/helixbot/.dumpling/dumpling.py upload --dumppath --noprompt --triage full --displayname --properties STRESS_TESTID= --verbose 2017-01-25 06:23:16,119: INFO: proc(55): run_and_log_output: Output: else 2017-01-25 06:23:16,119: INFO: proc(55): run_and_log_output: Output: echo no coredump file was found 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: fi 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: fi 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: return 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: } 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Payload/dotnet xunit.console.netcore.exe Common.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: CollectDumps 0 Common.Tests 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: ~/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Work/6d1e3fd1-e72c-4c13-bd58-a884f70b9349/Unzip ~/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Work/6d1e3fd1-e72c-4c13-bd58-a884f70b9349/Unzip 2017-01-25 06:23:16,120: INFO: proc(55): run_and_log_output: Output: executing ulimit -c unlimited 2017-01-25 06:23:16,125: INFO: proc(55): run_and_log_output: Output: Failed to load /home/helixbot/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Payload/shared/Microsoft.NETCore.App/9.9.9/libhostpolicy.so, error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /home/helixbot/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Payload/shared/Microsoft.NETCore.App/9.9.9/libhostpolicy.so) 2017-01-25 06:23:16,125: INFO: proc(55): run_and_log_output: Output: An error occurred while loading required library libhostpolicy.so from [/home/helixbot/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Payload/shared/Microsoft.NETCore.App/9.9.9] 2017-01-25 06:23:16,125: INFO: proc(55): run_and_log_output: Output: command exited with ExitCode: 130 2017-01-25 06:23:16,125: INFO: proc(55): run_and_log_output: Output: command failed, trying to collect dumps 2017-01-25 06:23:16,126: INFO: proc(55): run_and_log_output: Output: corefile: 2017-01-25 06:23:16,126: INFO: proc(55): run_and_log_output: Output: uploading core to dumpling service 2017-01-25 06:23:16,214: INFO: proc(55): run_and_log_output: Output: usage: dumpling.py upload [-h] [--verbose] [--squelch] [--noprompt] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--logpath LOGPATH] [--url URL] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--configpath CONFIGPATH] [--dumppath DUMPPATH] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--displayname DISPLAYNAME] [--user USER] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--triage {none,client,full}] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--incpaths [INCPATHS [INCPATHS ...]]] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--properties [key=value [key=value ...]]] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: [--propfile PROPFILE] 2017-01-25 06:23:16,215: INFO: proc(55): run_and_log_output: Output: dumpling.py upload: error: argument --dumppath: expected one argument 2017-01-25 06:23:16,222: INFO: proc(55): run_and_log_output: Output: ~/dotnetbuild/work/38037e24-2d39-4dae-a997-6c99c5bcba9d/Work/6d1e3fd1-e72c-4c13-bd58-a884f70b9349/Unzip 2017-01-25 06:23:16,223: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time=06:23:16. Return value was 130 ``` @sepidehMS +15473 area-Meta Change Contract.Assert to Debug.Assert and make sure tests still pass Per https://github.com/dotnet/corefx/issues/15443#issuecomment-275188560 There are about 70, mostly in Tracing. Since they've been not functioning, this may introduce test failures. Either fix thep roduct, test, or remove the assert if it's bogus. We will be separately removing the dependency so new ones can't go in. +15474 area-Infrastructure CoreFx build process is copying test files into the original folder The System.Data.SqlClient.ManualTests rely on the two files, data.xml and MultipleResultsTest.bsl being available in the binary folder. https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/tests/ManualTests/System.Data.SqlClient.ManualTesting.Tests.csproj#L68 https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/tests/ManualTests/System.Data.SqlClient.ManualTesting.Tests.csproj#L71 The two files used to get copied into the same folder as the Test DLL. Lately the files are being copied to a path which is the same as the original location of the files in the test source, i.e. netcoreapp\DDBasics\DDDataTypesTest\data.xml and netcoreapp\ProviderAgnostic\MultipleResultsTest\MultipleResultsTest.bsl This is causing the SqlClient tests, which run with the SqlServer, to break when run on dev machines. How do we get the files to copy to the same output location as before, without changing the test code? +15476 area-System.Runtime Expose parameterless string.TrimEnd/TrimStart in ref Expose the new parameterless TrimEnd/TrimStart APIs added in https://github.com/dotnet/coreclr/pull/8834. The existing tests already cover these new APIs: - https://github.com/dotnet/corefx/blob/9f00738f44164150f9b31cff5c72c19ebb68bb88/src/System.Runtime/tests/System/StringTests.cs#L2338 - https://github.com/dotnet/corefx/blob/9f00738f44164150f9b31cff5c72c19ebb68bb88/src/System.Runtime/tests/System/StringTests.cs#L2362 Fixes #6485 +15477 area-System.Data Adding System.Data.Odbc reference source files This PR adds the reference source for System.Data.Odbc in preparation for adding the new System.Data.Odbc library. I don't know if this is how you usually approach creating a new library, so let me know. Checking this PR is a no-op, since the files were just copied from https://github.com/Microsoft/referencesource and pasted where they will live in the new library folder. Also, having these in place should really help for diffing my changes in upcoming PRs. @divega @anpete @eerhardt @saurabh500 you might be interested. +15479 area-Infrastructure Remove some workarounds from Roslyn.Common.props that aren't needed https://github.com/dotnet/roslyn/issues/2444 has already been fixed. `IncludeVbProjects` is not referenced anywhere, and we don't use Mono for anything, anyways. @weshaggard This is why the ECMA key was not being used. +15480 area-System.Net ClientWebSocket(Managed): Allow user code to control the HTTP Host header "Allow user code to control the HTTP Host header by calling ClientWebSocketOptions.SetRequestHeader: ``` C# clientWebSocket.Options.SetRequestHeader(""Host"", ""contoso.servicebus.windows.net""); await clientWebSocket.ConnectAsync(""wss://gateway63.servicebus.windows.net/someresource"", ...); ```" +15481 area-System.Net Increase timeouts for some failing Net tests These two tests are/were failing intermittently from hitting their timeouts. We can increase those timeouts to a significantly higher value without taking away from the test's value. @steveharter @Priya91 resolves https://github.com/dotnet/corefx/issues/13938 resolves https://github.com/dotnet/corefx/issues/12778 +15484 area-System.Linq Show a more helpful description in the debugger for Grouping/Lookup Fixes https://github.com/dotnet/corefx/issues/14790. Another thing: I changed a test function that before was just making sure the display string could be parsed correctly, to actually handing back the display string so we can assert it's equal to some format. [All of the other references to that function](https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=ValidateDebuggerDisplayReferences) would probably be better off if they actually used its return value now instead of just calling it, so I'll open up a tracking issue for that. /cc @JonHanna @VSadov @stephentoub +15485 area-Infrastructure Copy SqlClient test files to root of output Fixes https://github.com/dotnet/corefx/issues/15474 `None` vs. `Content` is immaterial, but I changed it for consistency with other test projects. @saurabh500 +15486 area-System.Diagnostics Validate the format of the display strings at ValidateDebuggerDisplayReferences call sites `ValidateDebuggerDisplayStrings`, a method that currently returns void, is used to ensure that the display string can be parsed correctly. PR https://github.com/dotnet/corefx/pull/15484 makes that function more useful by actually evaluating and returning the display string, so now it can be Assert.Equal'd on. All of the current call sites in https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=ValidateDebuggerDisplayReferences can test the display string more rigorously by asserting it's equal to something. Also, a better name for the method would now be `EvaluateDebuggerDisplayString`. +15487 area-Infrastructure VS .sln files do not use the solution folders any longer. Opening .sln files in VS now have all the projects in a flat list at the root of the solution, not in the solution folders: ![image](https://cloud.githubusercontent.com/assets/4523120/22311892/64a1dec2-e30a-11e6-8980-cf114056e9fb.png) Rolling back to before [f6ab339 ](https://github.com/dotnet/corefx/commit/f6ab339) puts things to back as I expect them. cc: @karajas +15489 area-System.Collections [No merge] Modify expected param names for Array.Copy invalid args **edit:** This can be cherry-picked whenever the version of coreclr that corefx builds against is updated. I've run tests against my change in coreclr locally and can confirm that all of these tests pass on .NET Core against the new build. Corresponding PR for https://github.com/dotnet/coreclr/pull/9117. Do not merge this yet, it will fail until the version of coreclr with the fix is taken in. Also I might have to amend my coreclr PR to fix the names in more throw-sites, and I may not have covered all of the affected tests in my initial commit here. +15490 area-System.Threading Add awaitable ThreadPool.SwitchTo() `Task.Run` breaks the execution flow by forcing the code into a delegate, it's basically callback hell (since it's the first callback in the chain). Instead, for the situations where we want to stay in the await pattern, `ThreadPool.Yield()` would be a nice to have API. It would turn code that looks like this: ```C# await Task.Run(() => DoSomething()); ``` ```C# await ThreadPool.Yield(); // Now on a thread pool thread so we can call some user code DoSomething(); ``` /cc @stephentoub +15494 area-System.Data Implement truly parallel MultiSubnetFailover connections in managed SNI CC @saurabh500 @stephentoub Fixes issue: https://github.com/dotnet/corefx/issues/15331 +15495 area-Infrastructure Fix uap Configurations for a few libraries With this few changes the TargetingPack that we produce for uap (and uapaot) will match the set of reference assemblies we had supported on uap10.1 before the dev/eng merge cc: @weshaggard @ericstj Next, I'll do the src configs. +15499 area-Meta Use `throw null` in refs Follow-up of #15470, this time grepping the entire source: Use `throw null` in refs instead of `return default(T)` or `return 0`. +15502 area-System.Security Test failure: System.Security.AccessControl.Tests.DiscretionaryAcl_Constructor1/Constructor1_AdditionalTestCases Opened on behalf of @Jiayili1 The test `System.Security.AccessControl.Tests.DiscretionaryAcl_Constructor1/Constructor1_AdditionalTestCases` has failed. Assert.Throws() Failure\r Expected: typeof(System.OutOfMemoryException)\r Actual: (No exception was thrown) Stack Trace: at System.Security.AccessControl.Tests.DiscretionaryAcl_Constructor1.Constructor1_AdditionalTestCases() Build : Master - 20170125.02 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170125.02/workItem/System.Security.AccessControl.Tests/analysis/xunit/System.Security.AccessControl.Tests.DiscretionaryAcl_Constructor1~2FConstructor1_AdditionalTestCases +15503 area-Infrastructure Bootstrapping for new platform As commented at https://github.com/dotnet/corefx/issues/15215#issuecomment-275299116, CoreFX build needs CoreCLR & core-setup nuget packages. And core-setup build needs CoreCLR & CoreFX nuget packages. We can build CoreCLR without target platform nuget packages dependency. But CoreFX and core-setup have target platform nuget package dependency for each other. This circular nuget package reference makes confusion and difficulty on implementation & building for new platform (ex. arm32/linux). @jyoungyun @chunseoklee @hqueue @ericstj @weshaggard @gkhanna79 +15505 area-Infrastructure Add generate sln tool This will generate a sln file for every library that sticks to the corefx folder structure with a src and test folder. ``` msbuild Tools\utilities.targets /t:GenerateSlnFiles /p:PathToGenerateSlnFiles=D:\git\corefx\src ``` The first commit has the tool. /cc @weshaggard +15508 area-Infrastructure Clean up dir.traversal.targets Remove some unused targets in dir.traversal.targets and fix Clean. Update the name of BuildAll to BuildAllConfigurations and make it work with traversal projects too. Fix clean for depproj's. /cc @weshaggard @chcosta +15511 area-Infrastructure [arm32/Linux] Make clang 3.6 the default toolset for cross arm32 build CoreCLR repo specifies clang 3.6 for cross builds (https://github.com/dotnet/coreclr/blob/master/build.sh#L747) but CoreFX does not (see https://github.com/dotnet/corefx/blob/master/src/Native/build-native.sh). CC @hqueue @hseok-oh @jyoungyun +15512 area-System.Globalization Fix Globalization test on Sierra Sierra Mac OS has some changes in the globalization data. actually they have fixed some data. this fix break the test as the test was checking the old values. +15513 area-Infrastructure Test failures from running Ubuntu in Docker for windows "I've been testing out using Docker for windows and loaded up our unbuntu1604 docker image and I'm currently hitting the following issues. - Init tools fails because of file casing issue https://github.com/dotnet/buildtools/issues/1308. This only happens when you map a windows volume into the docker container. I worked around it locally by commenting out the one mv command in init-tools script https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.Build.Tasks/PackageFiles/init-tools.sh#L105. Once I'm past that the build fully succeeds but I hit the following test failures. System.IO.FileSystem.DriveInfo.Tests ``` /d/git/corefx/bin/AnyOS.AnyCPU.Debug/System.IO.FileSystem.DriveInfo.Tests/netstandard/RunTests.sh /d/git/corefx/Tools/testdotnetcli Using as the test runtime folder. Running tests... Start time: 21:10:08 Commands: /d/git/corefx/Tools/testdotnetcli/dotnet xunit.console.netcore.exe System.IO.FileSystem.DriveInfo.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests /d/git/corefx/bin/AnyOS.AnyCPU.Debug/System.IO.FileSystem.DriveInfo.Tests/netstandard /d/git/corefx/src/System.IO.FileSystem.DriveInfo/tests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.IO.FileSystem.DriveInfo.Tests Discovered: System.IO.FileSystem.DriveInfo.Tests Starting: System.IO.FileSystem.DriveInfo.Tests System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests.PropertiesOfValidDrive [FAIL] Assert.Equal() Failure Expected: Fixed Actual: Unknown Stack Trace: /d/git/corefx/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Unix.Tests.cs(69,0): at System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests.PropertiesOfValidDrive() Finished: System.IO.FileSystem.DriveInfo.Tests ``` System.Net.NetworkInformation.Functional.Tests ``` /d/git/corefx/bin/AnyOS.AnyCPU.Debug/System.Net.NetworkInformation.Functional.Tests/netstandard/RunTests.sh /d/git/corefx/Tools/testdotnetcli Using as the test runtime folder. Running tests... Start time: 21:10:19 Commands: /d/git/corefx/Tools/testdotnetcli/dotnet xunit.console.netcore.exe System.Net.NetworkInformation.Functional.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests /d/git/corefx/bin/AnyOS.AnyCPU.Debug/System.Net.NetworkInformation.Functional.Tests/netstandard /d/git/corefx/src/System.Net.NetworkInformation/tests/FunctionalTests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.NetworkInformation.Functional.Tests Discovered: System.Net.NetworkInformation.Functional.Tests Starting: System.Net.NetworkInformation.Functional.Tests dotnet: /d/git/corefx/src/Native/Unix/Common/pal_safecrt.h:47: errno_t memcpy_s(void *, size_t, const void *, size_t): Assertion `sizeInBytes >= count' failed. /d/git/corefx/bin/AnyOS.AnyCPU.Debug/System.Net.NetworkInformation.Functional.Tests/netstandard/RunTests.sh: line 80: 13807 Aborted $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Net.NetworkInformation.Functional.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests /d/git/corefx/src/System.Net.NetworkInformation/tests/FunctionalTests Finished running tests. End time=21:10:20. Return value was 134 ``` System.Net.Ping.Functional.Tests ``` /d/git/corefx/bin/Unix.AnyCPU.Debug/System.Net.Ping.Functional.Tests/netstandard/RunTests.sh /d/git/corefx/Tools/testdotnetcli Using as the test runtime folder. Running tests... Start time: 21:14:42 Commands: /d/git/corefx/Tools/testdotnetcli/dotnet xunit.console.netcore.exe System.Net.Ping.Functional.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests /d/git/corefx/bin/Unix.AnyCPU.Debug/System.Net.Ping.Functional.Tests/netstandard /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.Ping.Functional.Tests Discovered: System.Net.Ping.Functional.Tests Starting: System.Net.Ping.Functional.Tests System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 0) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1247,0): at System.Diagnostics.Process.Start() /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1305,0): at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(38,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 1) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1247,0): at System.Diagnostics.Process.Start() /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1305,0): at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(38,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.Sends_ReuseInstance_Hostname [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(156,0): at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options) /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(146,0): at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer) /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(126,0): at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress) /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(355,0): at System.Net.NetworkInformation.Tests.PingTest.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 50) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1247,0): at System.Diagnostics.Process.Start() /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1305,0): at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(38,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 1000) [FAIL] System.InvalidOperationException : Cannot start process because a file name has not been provided. Stack Trace: /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1247,0): at System.Diagnostics.Process.Start() /d/git/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs(1305,0): at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(38,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHostAndTimeoutAndBuffer_Unix [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(267,0): at System.Net.NetworkInformation.Tests.PingTest.d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPings_ReuseInstance_Hostname [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(339,0): at System.Net.NetworkInformation.Tests.PingTest.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHostAndTimeout [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(233,0): at System.Net.NetworkInformation.Tests.PingTest.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendAsyncs_ReuseInstance_Hostname [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(390,0): at System.Net.NetworkInformation.Tests.PingTest.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHost [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(219,0): at System.Net.NetworkInformation.Tests.PingTest.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeoutAndBuffer_Unix [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(150,0): at System.Net.NetworkInformation.Tests.PingTest.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddress [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(88,0): at System.Net.NetworkInformation.Tests.PingTest.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeout [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(116,0): at System.Net.NetworkInformation.Tests.PingTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.Ping_DisposeAfterSend_Success [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(410,0): at System.Net.NetworkInformation.Tests.PingTest.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(195,0): at System.Net.NetworkInformation.Tests.PingTest.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddress_AddressAsString [FAIL] System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(102,0): at System.Net.NetworkInformation.Tests.PingTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithHostAndTimeoutAndBufferAndPingOptions_Unix [FAIL] System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.PlatformNotSupportedException : The system's ping utility could not be found. Stack Trace: /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(361,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(445,0): at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs(311,0): at System.Net.NetworkInformation.Tests.PingTest.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(151,0): at System.Net.NetworkInformation.Ping.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs(30,0): at System.Net.NetworkInformation.Ping.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /d/git/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs(350,0): at System.Net.NetworkInformation.Ping.d__48.MoveNext() Finished: System.Net.Ping.Functional.Tests ``` System.IO.FileSystem.Tests ``` /d/git/corefx/bin/Unix.AnyCPU.Debug/System.IO.FileSystem.Tests/netstandard/RunTests.sh /d/git/corefx/Tools/testdotnetcli Using as the test runtime folder. Running tests... Start time: 21:17:20 Commands: /d/git/corefx/Tools/testdotnetcli/dotnet xunit.console.netcore.exe System.IO.FileSystem.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests /d/git/corefx/bin/Unix.AnyCPU.Debug/System.IO.FileSystem.Tests/netstandard /d/git/corefx/src/System.IO.FileSystem/tests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.IO.FileSystem.Tests Discovered: System.IO.FileSystem.Tests Starting: System.IO.FileSystem.Tests System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory [FAIL] Assert.Equal() Failure Expected: 1 Actual: 0 Stack Trace: /d/git/corefx/src/System.IO.FileSystem/tests/Directory/GetDirectories.cs(34,0): at System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory() System.IO.Tests.Directory_EnumDir_str.EnumerateWithSymLinkToDirectory [FAIL] Assert.Equal() Failure Expected: 1 Actual: 0 Stack Trace: /d/git/corefx/src/System.IO.FileSystem/tests/Directory/GetDirectories.cs(34,0): at System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory() System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions [SKIP] Condition(s) not met: \""IsNotWindowsNanoServer\"" System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo.ValidFileOptions_Encrypted [SKIP] Condition(s) not met: \""IsNotWindowsNanoServer\"" System.IO.Tests.DirectoryInfo_GetDirectories.EnumerateWithSymLinkToDirectory [FAIL] Assert.Equal() Failure Expected: 1 Actual: 0 Stack Trace: /d/git/corefx/src/System.IO.FileSystem/tests/Directory/GetDirectories.cs(34,0): at System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory() System.IO.Tests.DirectoryInfo_EnumDir_Str.EnumerateWithSymLinkToDirectory [FAIL] Assert.Equal() Failure Expected: 1 Actual: 0 Stack Trace: /d/git/corefx/src/System.IO.FileSystem/tests/Directory/GetDirectories.cs(34,0): at System.IO.Tests.Directory_GetDirectories_str.EnumerateWithSymLinkToDirectory() Finished: System.IO.FileSystem.Tests ``` I'm primarily adding this information to track the work we need to enable this scenario it doesn't have any particular priority to fix at this point. " +15514 area-System.Text Extra Encoding tests Add extra ASCII encoding tests (were using UTF8 by commented as ASCII) Add Unicode start tests for ASCII and UTF8 Add ASCII start followed by Unicode for ASCII and UTF8 to cover ASCII fast-path with Unicode fallback Added extra length verification exception tests when split (ascii followed by unicode) for UTF8 /cc @tarekgh @stephentoub +15516 area-System.IO "ZipFile no longer sets the ""x"" permission when extracting an archive" "When running 'dotnet restore' using a CLI that runs on .NET Core 2.0, the execute permission is no longer getting set on the host executable. This is a blocking issue because it means anyone trying to run a self-contained app using the 2.0 CLI will not be able to execute their apps without chmod'ing the published executable. This is a regression from 1.0. Steps to repro: 1. Download the following into your project directory and rename it back to "".nupkg"". [runtime.ubuntu.14.04-x64.microsoft.netcore.dotnethost.1.0.1.nupkg.zip](https://github.com/dotnet/corefx/files/733074/runtime.ubuntu.14.04-x64.microsoft.netcore.dotnethost.1.0.1.nupkg.zip) 2. Run the following against netcoreapp1.0 and against netcoreapp2.0 ```c# using System; using System.IO.Compression; class Program { static void Main(string[] args) { ZipFile.ExtractToDirectory( ""./runtime.ubuntu.14.04-x64.microsoft.netcore.dotnethost.1.0.1.nupkg"", #if NETCOREAPP2_0 ""./NETCOREAPP2_0"" #else ""./NETCOREAPP1_0"" #endif ); } } ``` 3. Diff the permissions of the extracted `runtimes/ubuntu.14.04-x64/native/dotnet` executable. Expected result: The permissions should be identical. Actual result: ``` Erics-MBP:sandbox eerhardt$ ls -al NETCOREAPP1_0/runtimes/ubuntu.14.04-x64/native/dotnet -rwxr--r-- 1 eerhardt staff 128926 Jun 16 2016 NETCOREAPP1_0/runtimes/ubuntu.14.04-x64/native/dotnet Erics-MBP:sandbox eerhardt$ ls -al NETCOREAPP2_0/runtimes/ubuntu.14.04-x64/native/dotnet -rw-r--r-- 1 eerhardt staff 128926 Jun 16 2016 NETCOREAPP2_0/runtimes/ubuntu.14.04-x64/native/dotnet ```" +15519 area-Infrastructure [arm32/Linux] Remove workaround to prevent arm package restore In https://github.com/dotnet/corefx/pull/15518, we restore packages for x64 (instead of arm) since Arm host packages are not yet available (CoreFX has a cyclic dependency on upstack repo for this). Once Core-Setup publishes packages for Host for Linux Arm32, https://github.com/dotnet/corefx/pull/15518 should be reverted. CC @weshaggard @ericstj @hqueue @jyoungyun @hseok-oh +15521 area-System.Data "System.Data.SqlClient: ""Function not supported"" error thrown when using encrypted async connections over Named Pipes or Shared Memory" Only affects Windows. Issue created for 1.1.0 servicing. +15522 area-System.IO Add overlayfs to GetDriveInfo cc: @weshaggard, when you get a chance, can you verify this addresses your issue? +15523 area-Serialization SoapEncodedSerialization doesn't work for the included type "Refer the sample code below, which doesn't work. It failed in WriteReferencedElement method because the returned entry is null for type MySpecialOrder. The _typeEntries only contains the entry for the type of MyOrder. The entry was added in the list in the method EnsureXmlSerializationWriteCallbackForMapping, which just call AddWriteCallback for the type MyOrder. It need call this callback method for all the types in the scope including MySpecialOrder. ``` var soap = new SoapReflectionImporter(); soap.IncludeType(typeof(MySpecialOrder)); XmlTypeMapping map = soap.ImportTypeMapping(typeof(MyOrder)); XmlSerializer serializer = new XmlSerializer(map); MySpecialOrder so = new MySpecialOrder() { ID = 10, Name = ""MyName"", SecondaryID = 1000 }; MemoryStream ms = new MemoryStream(); serializer.Serialize(ms, so); public class MyOrder { public int ID; public string Name; } public class MySpecialOrder : MyOrder { public int SecondaryID; } ```" +15524 area-System.Net Change HttpClient timeout test to use loopback server Shorten test duration from 40 seconds to .5 seconds, as discussed at https://github.com/dotnet/corefx/pull/15481/files#r97910075 cc: @ianhays, @davidsh +15525 area-Serialization Need implement ArrayMapping in SoapEncodedSerialization Currently, it will throw PlatformNotSupportedException if it is ArrayMapping in SoapEncodedSerialization. +15526 area-System.Collections Factor ImmutableArray into many files - Break immutable array (an enumerable, immutable, array) into a core component - And a bunch of algorithm components which represents algorithms on the array - And a bunch of components which represent creation of new related immutable arrays - The purpose of this work is to make it possible to source include the core of immutable array into a component which cannot depend on high level apis such as LINQ, SortedDictionary, etc. (All api use must be satisfied by System.Private.CoreLib). The work to add this other component (System.Private.Reflection.Metadata.Ecma335 will be delivered via a separate PR) +15528 area-Infrastructure SkipUnmount support and set default clang for cross build Similar to CoreCLR repo, add support to skip unmounting when using build-rootfs.sh in Docker image. Also, define the default clang toolset to use for cross and regular builds (similar to how it is done in CoreCLR at https://github.com/dotnet/coreclr/blob/master/build.sh#L747). @janvorli @wtgodbe PTAL +15529 area-Infrastructure Binplace configurations Previously we hardcoded some binplace mappings. This removes that hardcoding and makes binplacing data-driven off of configuration strings. We'll binplace to paths based on assigning configurations to those paths and finding out if the configuration we're building is the best configuration in the project for that binplace path. /cc @weshaggard @joperezr @tarekgh @mellinoe I split up the commits so that you can see the diffs to FindBestConfiguration. The second commit is the interesting one. +15533 area-System.Linq System.Linq.Expressions.Tests.CompilerTests.CompileDeepTree_NoStackOverflowFast causing BCL assert in System.Threading.Thread Specifically, corelib is unhappy with [this](https://github.com/dotnet/corefx/blob/88d8bbf7dbf5869b7f239737779e75295e43ef95/src/System.Linq.Expressions/tests/CompilerTests.cs#L45) line. Per [this](https://github.com/dotnet/coreclr/blob/a928a37a1503871b5da5c80f74fe54b9f937ddc3/src/mscorlib/src/System/Threading/Thread.cs#L431) line, CoreCLR only supports the default stack size. Whether this should be asserted or handled via exception is a dotnet/coreclr#9158. +15536 area-System.Runtime Removing System.Memory ApiCompatBaseline file as it is no longer needed. +15537 area-Microsoft.CSharp Fix constant folding of integers in RuntimeBinder. Rewrite the constant folding done in RuntimeBinder to fix several bugs. Fixes #15464 +15539 area-System.Text Encoding tests cleanup Follow up to #15514 +15542 area-System.Diagnostics System.Diagnostics.DebuggerStepThroughAttribute should be available on properties During my debugging sessions I don't want to accidentally step into some casting-only properties I have created. This is particularly true for getter-only properties which simply encapsulate some object mapper's GetService() calls. Can we have the `System.Diagnostics.DebuggerStepThroughAttribute` (and similar attributes in vicinity) work on properties, please? +15546 area-Meta Fix signature of CFArrayCreate. CFIndex is a C long, therefore UIntPtr should be used This should fix the binding for 32bit OS X. There are no API changes. +15549 area-System.Net How to make httpclient call from the client to the server using .net core Hello Everyone, I want to make some httpclient calls to the server using .net core. I would really appreciate if anyone can provide me any reference or an idea how to do it it will be really helpful. Using .net framework it's not a problem, but using .net core I don't understand what will be the best way to go. To be more specific about my question, I would generalize it: That is, I want to make HttpClient calls to the server, to request for the api to the server and get the response back from the server in the form of http requests and response. Thank You! I look forward for your response. Best regards, Sandeep +15550 area-Meta HostingEnvironment.MapPath Behaves differently in VS 2017 (different MSBuild) than in VS 2015 "Both sessions in DEBUG of a ASP.NET API Project running .NET Framework 4.6.1. Method in Question: HostingEnvironment.MapPath(""~""); We were running the method inside the WebApiConfig.cs class (Class name is the same without the .cs) under the method ""Public static void Register(HttpConfiguration config)"" Method. Expected Output (as in VS 2015): ""Root:\path\to\folder\"" (without quotes) Result in VS 2017: ""Root:\Path\To\Folder"" (without Quotes) Build is treating this differently for some reason. and by upgrading to the RC, this breaks our code. " +15552 area-Microsoft.CSharp Remove meaningless pragma directives C++-style pragma for C++ error code won't have any effect. +15553 area-Microsoft.CSharp Seal virtual methods of uninherited classes in Microsoft.CSharp. May allow `call` rather than `callvirt` in some cases for a slight boost, but main benefit is simplifies understanding to know a method isn't overridden. +15555 area-Meta Remove test attributes only necessary for running on older CoreFX versions Remove these `[SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp1_0]` `[SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp1_1]` We do not have plans to run the CoreFX tests against older versions of .NET Core so these are unnecessary and we should remove them all. We still need the versionless one `[SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp)]` where a test only passes on Desktop +15556 area-System.Reflection Add System.Reflection.Emit.TypeBuilder.CreateType() Resolves https://github.com/dotnet/corefx/issues/15414 cc: @danmosemsft @joperezr @AlexGhiondea +15557 area-System.Security Remove AccessControl OOM tests An OOM from the constructor isn't something we should even be testing in this case, especially not in an innerloop test. Better just to remove it. resolves https://github.com/dotnet/corefx/issues/15502 +15558 area-Infrastructure Clean up duplicated ProjectReferences in ref projects There's a few ref projects which have duplicated P2P references. This removes the duplicates. +15559 area-Meta Remove test attributes only necessary for running on older CoreFX versions Remove all instances of: ```C# [SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp1_0] ``` Contributes to #15555 cc @danmosemsft +15560 area-System.IO DeflateStream fails to return final byte of decompressed data When decompressing certain data, reading from a DeflateStream byte-by-byte fails to return the final byte, whereas reading two or more bytes at once succeeds. Here is a repro: https://github.com/ddrinka/DeflateStreamBug ``` xUnit.net .NET CLI test runner (64-bit .NET Core win10-x64) Discovering: DeflateStreamBug.Test Discovered: DeflateStreamBug.Test Starting: DeflateStreamBug.Test DeflateStreamBug.Test.DeflateStream_Test.Read_CompressedData_Last1 [FAIL] Assert.Equal() Failure Expected: 1 Actual: 0 Stack Trace: C:\src\DeflateStreamBug\test\DeflateStreamBug.Test\DeflateStream_Test.cs(36,0): at DeflateStreamBug.Test.DeflateStream_Test.Read_CompressedData_Last1() Finished: DeflateStreamBug.Test ``` This issue appears resolved in netcoreapp1.1, but I have verified it exists in 1.0.0-1.0.3. Net452 does not exhibit the issue. +15561 area-Infrastructure Add uap vertical cc: @ericstj @weshaggard @danmosemsft FYI: @MattGal @Chrisboh @tarekgh This PR adds the UAP vertical configurations for source. With these changes you should now be able to call `build.cmd -framework:uap` and get the TargetingPack and the runtime assets for uap. There are still some things needed to be done for UWP which are: - Add the required configurations for tests so that `build-tests.cmd -framework:uap` work as well. - Enable the PInvoke Analyzer to make sure we aren't making any invalid calls. - We did end up removing a lot of netcore50 configurations before the build from source effort, so there might be a lot of libraries that used to build against the WinRT facade but they don't any longer. - We still need to do the work for creating the flat package for uap. +15562 area-System.Diagnostics Fix Process start time calculation We had some wrong assumptions in our calculation like assuming the absolute time is start at boot time which is not true on Mac OS 10.12 The changes are fixing the calculation of the absolute time. +15565 area-Microsoft.CSharp Replace GetTypeCode extension with call to Type.GetTypeCode() Wasn't available once. Now it is, and it caches, too. +15566 area-System.Data GenerateThisAssemblyCS.targets file should be removed cc @saurabh500 We should either completely remove the GenerateThisAssemblyCS.targets (https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/GenerateThisAssemblyCs.targets) file or if we really need the functionality it should be merged into our Assembly information generation (https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.Build.Tasks/PackageFiles/versioning.targets). +15569 area-System.Memory Refactoring Span/ReadOnlySpan Extensions into partial classes - Separating shared and platform specific implementations The CI should pass after the following CoreCLR change is merged: https://github.com/dotnet/coreclr/pull/9182 +15570 area-System.Security Could not load file or assembly 'System.Security.Cryptography.Algorithms/Primitives When calling encryption functions (such as Aes) from a .NET 4.6 test library, there are no problems. However, if the encryption calls happen inside of a netstandard13 which is then referenced by .NET 4.6 test library or .NET 4.6 console, I get: #### Net 4.6 library calling netstandard13 function calling Aes (NUnit 3.6 in NCrunch) > System.BadImageFormatException : Could not load file or assembly 'System.Security.Cryptography.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) > ----> System.BadImageFormatException : Could not load file or assembly 'file:///C:\Users\tim\AppData\Local\NCrunch\6380\36\_ncrunchreferences\System.Security.Cryptography.Algorithms.dll' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) > ----> System.BadImageFormatException : Cannot load a reference assembly for execution. > at cryptPcl.fromPcl.Test() > #### Net 4.6 library calling netstandard13 function calling Aes (nunit3-console) ![image](https://cloud.githubusercontent.com/assets/157766/22393014/aacbd492-e4b4-11e6-960f-992093d91caa.png) > Errors, Failures and Warnings > > 1) Error : cryptTest.Class1.anotherTest > System.IO.FileNotFoundException : Could not load file or assembly 'System.Security.Cryptography.Algorithms, Version=4.0. > 0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file speci > fied. > at cryptPcl.fromPcl.Test() > at cryptTest.Class1.anotherTest() in C:\Users\tim\Documents\Visual Studio 2015\Projects\cryptTest\cryptTest\Class1.cs > :line 56 #### Net 4.6 Console app calling netstandard13 function calling Aes ![image](https://cloud.githubusercontent.com/assets/157766/22392994/5e30e974-e4b4-11e6-8b21-7d0438142a2f.png) > An unhandled exception of type 'System.IO.FileNotFoundException' occurred in ConsoleApplication1.exe > > Additional information: Could not load file or assembly 'System.Security.Cryptography.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Interesting, direct calls to Aes from the same test project work just fine. Somehow the call from the netstandard13 doesn't know that the real non reference System.Security.Cryptography.Algorithms is already available. --- Test project here: https://github.com/tofutim/cryptTest --- **Update.** If I add the System.Security.Cryptography.Algorithms (which also brings in .Primitives), NCrunch successfully runs the test. However, both the nunit3-console and the Console app give a new but similar error: > An unhandled exception of type 'System.IO.FileLoadException' occurred in ConsoleApplication1.exe > > Additional information: Could not load file or assembly 'System.Security.Cryptography.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) When I try to add the System.Security.Cryptography.Primitives nuget (4.3), I cannot, as it is already installed. Help! I'm out of things to try. :( --- Egads! I was able to get my .NET 4.6 console and .NET 4.6 test library to work by downgrading to 4.2.0 for System.Security.Cryptography.Algorithms and 4.0.0 for System.Security.Cryptography.Primitives. But it still does require the nuget packages even though the compiler seems to think otherwise. (I tried adding 4.3.0 .Algorithms nuget to the netstandard13 lib, and updating the console to app to 4.3.0 but it still complained about not finding the 4.0.0 .Primitives lib) +15573 area-System.Collections API Proposal: Adding public ArrayBuilder ## Background It's very common to use a `List` as a local variable, `Add` to it a couple of times, and throw away the list after the method is finished. Doing so incurs heap allocations, not only for the backing vector for the list, but also for the `List` itself since it is a class. It would be great to have a struct alternative to `List` to reduce unnecessary allocations. ## Proposal We should add the `ArrayBuilder` struct: ```c# public struct ArrayBuilder : IList, IReadOnlyList { public ArrayBuilder(); public ArrayBuilder(IEnumerable items); public int Capacity { get; } public int Count { get; } public ref T this[int index] { get; } public void Add(T item); public void AddRange(IEnumerable items); public void Clear(); public void Contains(T item); public void CopyTo(T[] array); public void CopyTo(T[] array, int arrayIndex); public void CopyTo(int index, T[] array, int arrayIndex, int count); public Enumerator GetEnumerator(); public int IndexOf(T item); public void Insert(int index, T item); public bool Remove(T item); public void RemoveAt(int index); public T[] ToArray(); // Resets the ArrayBuilder after it's called. public ArraySegment ToArraySegment(); // Does not copy, resets the ArrayBuilder after it's called. public void UncheckedAdd(T item); // Assumes there is enough room in the backing array. bool ICollection.IsReadOnly { get; } IEnumerator IEnumerable.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator(); public struct Enumerator : IEnumerator { public T Current { get; } public void Dispose(); public bool MoveNext(); void IEnumerator.Reset(); } } ``` ## Notes - Because C# does not support parameterless struct constructors, we won't be able to set the underlying array to an empty one when the `ArrayBuilder` is first created, so we'll have to incur [an extra null check](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/ArrayBuilder.cs#L38) on every `Add` where List does not. - The alternatives would be to have a factory method `ArrayBuilder.Create()`, or forcing the user to pass in a dummy parameter to the constructor, so we could do initialization work. However, it seems better to incur the check than to sacrifice the user experience. And if parameterless struct constructors are enabled in the future then we can remove it without breaking anything. - The builder will use the exact same buffer sizes as `List` (0, 4, 8, ...) to make it a no-brainer to switch from List to ArrayBuilder in local variables. - `UncheckedAdd` will be similar to `Add`, but won't check if there's more room in the array. If there isn't, it will generate an `IndexOutOfRangeException`. See [implementation](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/ArrayBuilder.cs#L118) - `ToArray` will reset the ArrayBuilder after it's called. The reason is we can employ an optimization where if the count of the builder is equal to its' capacity, we just hand back the underlying array and don't do any copying. However, this could cause issues if the same array is handed back twice, and modified by both callers. To prevent these errors we will reset the ArrayBuilder back to its initial state after one call. - In the [current implementation](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/ArrayBuilder.cs#L102) we take a different approach and invalidate the builder instead of resetting it after `ToArray` is called. However, I'm deciding not to go with that approach because then we will have another state we have to account for in every method. - This is primarily meant to be used for scenarios when the size of the array is small. Sometime later (after some discussion has ensued here but before the API is approved), I will publish a separate proposal on [`LargeArrayBuilder`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/LargeArrayBuilder.cs) which uses a separate buffering strategy that reduces allocations by 1/3. +15574 area-System.Net use SOCKETSTRESS_ITERATIONS env var to allow longer stress runs Base stress test takes about 3.5 seconds to run on my machine, which isn't very long. This enables you to set SOCKETSTRESS_ITERATIONS to do longer stress runs. @stephentoub @CIPop @davidsh @Priya91 +15576 area-System.Threading Add tests for Thread constructor with stack size argument Fixes dotnet/coreclr#9158 Fixes dotnet/coreclr#9167 Part of dotnet/coreclr#9186 +15577 area-System.Runtime System.Lazy regression tests This is a prelude to an alternative Lazy implementation in a PR at https://github.com/dotnet/coreclr/pull/8963 +15579 area-Infrastructure MSB3277 on clean build of corefx, macOS ``` /path/to/corefx/Tools/Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [/path/to/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] ``` macOS 10.12.3 (16D32), corefx commit 5a361ea9. +15581 area-System.Globalization GetLeapMonthTest failing in master on Unix The test is currently failing every Unix run with these errors: ``` System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(calendar: ChineseLunisolarCalendar { AlgorithmType = LunisolarCalendar, Eras = [1], IsReadOnly = False, MaxSupportedDateTime = 2101-01-28T23:59:59.9999999, MinSupportedDateTime = 1901-02-19T00:00:00.0000000, ... }, yearHasLeapMonth: 0, algorithmType: LunisolarCalendar) [FAIL] calendar.GetLeapMonth returned wrong value Expected: True Actual: False Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization.Calendars/tests/Misc/Calendars.netstandard.cs(51,0): at System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(Calendar calendar, Int32 yearHasLeapMonth, CalendarAlgorithmType algorithmType) System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(calendar: JapaneseLunisolarCalendar { AlgorithmType = LunisolarCalendar, Eras = [4, 3], IsReadOnly = False, MaxSupportedDateTime = 2050-01-22T23:59:59.9999999, MinSupportedDateTime = 1960-01-28T00:00:00.0000000, ... }, yearHasLeapMonth: 0, algorithmType: LunisolarCalendar) [FAIL] calendar.GetLeapMonth returned wrong value Expected: True Actual: False Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization.Calendars/tests/Misc/Calendars.netstandard.cs(51,0): at System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(Calendar calendar, Int32 yearHasLeapMonth, CalendarAlgorithmType algorithmType) Finished: System.Diagnostics.Tools.Tests System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(calendar: KoreanLunisolarCalendar { AlgorithmType = LunisolarCalendar, Eras = [1], IsReadOnly = False, MaxSupportedDateTime = 2051-02-10T23:59:59.9999999, MinSupportedDateTime = 0918-02-14T00:00:00.0000000, ... }, yearHasLeapMonth: 0, algorithmType: LunisolarCalendar) [FAIL] calendar.GetLeapMonth returned wrong value Expected: True Actual: False Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Globalization.Calendars/tests/Misc/Calendars.netstandard.cs(51,0): at System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(Calendar calendar, Int32 yearHasLeapMonth, CalendarAlgorithmType algorithmType) System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(calendar: TaiwanLunisolarCalendar { AlgorithmType = LunisolarCalendar, Eras = [1], IsReadOnly = False, MaxSupportedDateTime = 2051-02-10T23:59:59.9999999, MinSupportedDateTime = 1912-02-18T00:00:00.0000000, ... }, yearHasLeapMonth: 0, algorithmType: LunisolarCalendar) [FAIL] calendar.GetLeapMonth returned wrong value Expected: True Actual: False Stack Trace: ests/Misc/Calendars.netstandard.cs(51,0): at System.Globalization.Tests.CalendarsMoreTests.GetLeapMonthTest(Calendar calendar, Int32 yearHasLeapMonth, CalendarAlgorithmType algorithmType) ``` +15585 area-Microsoft.CSharp Improve BinderHelper.Bind `args` will be turned into an array and its sources all have determinable sizes, so create an array to pass in immediately, avoiding repeated enumerator allocation and allowing array access. An index is incremented with each pass through `args`, so now it's an array just use `for(;;)` access with it as the index. `parameters` will always end up as the same size as `args`, so preallocate an array rather than growing a `List`. Use direct indexing rather than Linq's `First` and `FirstOrDefault`. Allow for binding restrictions with literal `NaN` (we can't use `==` as the previous comment said, but we can call `IsNaN`). Create block for increment/decrement writeback directly, rather than growing a `List`. Inline the expressions (IMO clearer resulting expression for those who are often reading code with explicit expression creation). +15587 area-System.Numerics Fixed BigInteger test failure for uk-UA BigInteger string parsing test was faulty for cultures that use 0xA0 as the group separator. The fixed test does not expect an exception anymore if: - The trailing whitespace is 0x20 characters only AND - Grouping is allowed (NumberStyles.AllowThousands) AND - Currency symbol is allowed and currency group separator is 0xA0 OR Currency symbol is not allowed and number group separator is 0xA0 Fix #1642 +15588 area-Infrastructure Add PortableLinux build to CI @weshaggard @ellismg @mmitche PTAL This adds the PortableLinux build support to CoreFX CI. FYI @janvorli +15589 area-System.IO System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensions.cs Set methods throw different exception In issue #15375, @JonHanna recommended submitting an issue to make the exceptions being thrown be consistent. I would like to do this work if this can be assigned to me. Thanks, Michael +15590 area-Microsoft.CSharp Null propagation and merging of null-checks in Microsoft.CSharp Some avoid repeated field access or method calls. Some just make it easier to grep for the cases that avoid repeated field access or method calls. +15591 area-System.Net Proposal: Cookie and SetCookie Properties in HttpHeaders # Proposal: Add Cookie and SetCookie as Properties in HttpRequestHeaders and HttpResponseHeaders. ```c# namespace System.Net.Http.Headers { public sealed class HttpRequestHeaders : HttpHeaders { public CookieCollection Cookie { get; set; } } public sealed class HttpResponseHeaders : HttpHeaders { public CookieCollection SetCookie { get; set; } } } ``` # Reason: Recover Cookies and setting Cookies from Headers is a common action. +15592 area-System.Numerics Avoid allocations for BigInteger.&,|,^ for small operands We can skip the ~6 array allocations or so and just use an actual bitwise operation if both bigints have their values stored in `_sign`. +15597 area-Meta Avoid unnecessary branches when fixing non-null/empty arrays When we know an array is not null or empty at the point where `fixed` is used, we can reduce the number of branches (and IL size of the method body) by using the address of the first element. Based on the discussion here: https://github.com/dotnet/corefx/pull/15432#discussion_r97684916 Related: - https://github.com/dotnet/coreclr/pull/9115 - https://github.com/dotnet/coreclr/pull/9188 +15598 area-System.Threading "Revert ""Add tests for Thread constructor with stack size argument""" Reverts dotnet/corefx#15576 +15599 area-System.IO Add the ArchiveComment property for ZipArchive class When we make a zip package, the comment is very important function that we use it very often. The corefx has already implemented it, see the definition `_archiveComment` field at [ZipArchive.cs#L32](https://github.com/dotnet/corefx/blob/a9d5ce3234a890f1f4e64318b23e4bbaf6da1a0f/src/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs#L32), the reader at [ZipArchive.cs#L561](https://github.com/dotnet/corefx/blob/a9d5ce3234a890f1f4e64318b23e4bbaf6da1a0f/src/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs#L561) and the writter at [ZipArchive.cs#L693](https://github.com/dotnet/corefx/blob/a9d5ce3234a890f1f4e64318b23e4bbaf6da1a0f/src/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs#L693). We can inbreak the `ZipArchive` instance by reflect and modify the `_archiveComment` field, then saved zip file is fine. #### Proposed API Just make private field `_archiveComment` as public property `ArchiveComment`, or other advises. +15600 area-System.Threading Add tests for Thread constructor with stack size argument Fixes dotnet/coreclr#9158 Fixes dotnet/coreclr#9167 Part of https://github.com/dotnet/coreclr/pull/9186 Forked from https://github.com/dotnet/corefx/pull/15576 +15609 area-Infrastructure build.cmd throws null ref exception trying to get help with -? "Trying to get help: ``` C:\Users\stoub\Source\Repos\corefx>build.cmd -? There are new changes on how we build. Use this script only for generic build instructions that apply for both build native and build managed. Otherwise: Before Now build.cmd native build-native.cmd build.cmd managed build-managed.cmd For more information: ""https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md"" ---------------------------------------------------------------------------- Tools are already initialized. Error: Object reference not set to an instance of an object. at Microsoft.DotNet.Execute.Setup.FormatSetting(String option, String value, String type, String toolName) at Microsoft.DotNet.Execute.Setup.BuildParametersForCommand(Dictionary`2 commandParameters, String toolName) at Microsoft.DotNet.Execute.Setup.BuildCommand(String commandSelectedByUser, List`1 parametersSelectedByUser, Dictionary`2 parameters) at Microsoft.DotNet.Execute.Setup.GetHelpCommand(String commandName, String alias) at Microsoft.Fx.CommandLine.CommandLineParser.GetHelp(Int32 maxLineWidth, String parameterSetName, Boolean displayGlobalQualifiers) at Microsoft.Fx.CommandLine.CommandLineParser.<>c.b__0_0(CommandLineParser parser) at Microsoft.Fx.CommandLine.CommandLineParser.Parse(Action`1 parseBody, Action`1 helpHandler, Action`2 errorHandler, Setup setupContent, String[] args) at Microsoft.Fx.CommandLine.CommandLineParser.ParseForConsoleApplication(Action`1 parseBody, String[] args, Setup setupContent) at Microsoft.DotNet.Execute.Executor.DefineParameters(String[] args, Setup setupInformation) ```" +15611 area-Microsoft.CSharp Validation of argumentInfo argument to RuntimeBinder.Binder methods "In debug mode an assertion fails if the `argumentInfo` argument to `Binder.UnaryOperation` or `Binder.BinaryOperation` is null or doesn't have 1 or 2 arguments respectively. This is not however enforced, so the assertion isn't valid. With either of them, excessive `argumentInfo` members have no effect on the outcome, while too few or if one of them is null causes AooRE or NRE when the callsite's target is invoked. Other operation factories will throw NRE if an `argumentInfo` element is null. Excessive infos here are likewise harmless, and potentially even useful, in that a binder like: ```C# var x = CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null); var y = CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null); var binder = Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember(CSharpBinderFlags.None, ""ToString"", new Type[0], GetType(), new[] {x}); ``` Can be used to create delegates representing both the likes of `3.ToString()` and of `3.ToString(""n"")`. (Probably not a good idea, but it works). `UnaryOperation` and `BinaryOperation` could have the validation they assume added. The compat risk is negliable in banning too few arguments as the resulting binder can't be used for anything useful. In banning too many there's a slight risk as that currently works, but it seems unlikely anything hits that path. The other cases can have the NRE on a null info turned into an ANE, but validation of the number of infos would have to wait until at least when the callsite is created, perhaps even until the target is created (not sure yet). Since there's a practical (if questionable) reason why one might deliberately have too many infos, perhaps that should still be allowed." +15612 area-Infrastructure build-managed -release fails when trying to nuget pack Microsoft.Private.CoreFx.NETCoreApp The full log can be found here: https://gist.github.com/jamesqo/2151360517bd4e16981a8d90153bbc48 I've never run into this issue with a debug build yet. +15613 area-System.Linq Calling CallSite.Create() with a null binder is accepted. The result will always throw on use, and the base class's `Create()` throws ANE in such cases. This should probably throw an ANE to catch erroneous calls. +15614 area-System.Linq Throw ArgumentNullException on CallSite.Create() with null binder Fixes #15613 +15615 area-Infrastructure build failures when building Linux dlls on Windows I cleaned my repo and then tried doing: ``` build.cmd -os=Linux -release ``` and I got a bunch of errors like this: ``` C:\Users\stoub\Source\Repos\corefx\bin\obj\AnyOS.AnyCPU.Release\System.Runtime.InteropServices.WindowsRuntime\netstandard1.3\System.Runtime.InteropServices.WindowsRuntime.notsupported.cs(14,86): error CS0436: The type 'EventRegistrationToken' in 'C:\Users\stoub\Source\Repos\corefx\bin/obj/AnyOS.AnyCPU.Release/System.Runtime.InteropServices.WindowsRuntime/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.notsupported.cs' conflicts with the imported type 'EventRegistrationToken' in 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Using the type defined in 'C:\Users\stoub\Source\Repos\corefx\bin/obj/AnyOS.AnyCPU.Release/System.Runtime.InteropServices.WindowsRuntime/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.notsupported.cs'. [C:\Users\stoub\Source\Repos\corefx\src\System.Runtime.InteropServices.WindowsRuntime\src\System.Runtime.InteropServices.WindowsRuntime.csproj] ``` cc: @weshaggard +15616 area-Infrastructure Build multiple configurations Replacement for https://github.com/dotnet/corefx/pull/15541 Still need to clean up commits. /cc @weshaggard @joperezr +15622 area-System.Collections Proposal: Dictionary.Remove(TKey, out TValue) ### API Proposal ```c# public bool Remove(TKey key, out TValue value); ``` ### Motivation The following is a common way to pull an item out of a Dictionary: ```c# Dictionary data = ...; ... if(data.TryGetValue(key, out value)) { data.Remove(key); // do something with value } ``` This requires the dictionary to calculate the hash code twice when the key is in the dictionary. ### Details Functionality-wise it would do the same thing as the following method, but will be more efficient by having to generate the hash code only once: ```c# public bool Remove(TKey key, out TValue value) { if(!TryGetValue(key, out value)) return false; Remove(key); return true; } ``` ## Original Proposal Like `Stack.Pop` or `Queue.Dequeue`, I think ability to get and remove at the same time is common So I think we should have `T TakeAt(int index)`,`T[] TakeRange(int index,int count)` for `List` and `T TakeValue(K key)`,`bool Remove(K key,out V value)` for `Dictionary` in addition to `Remove` For performance wise it should implement on base class directly +15623 area-System.Net bypass SSL validation on Unbuntu Our client has an on premise hosting of Cloud foundry that runs using a self signed certificate. We are developing MicroServices for him in ASP.NET Core. During this we need to make HTTP calls for which we are using HttpClient. •Is there way I can bypass the SSL validation check in SSL client for Ubuntu( I know it can be done for windows)? +15628 area-System.Net Remove ReadOnlyStream allocation from CurlHandler When calling ReadAsStreamAsync on the response content, StreamContent ends up allocating a ReadOnlyStream to wrap the CurlResponseStream. But CurlResponseStream is already read-only, and throws appropriately from all of its writing/seeking methods, so the wrapper is pure overhead. This was already fixed in WinHttpHandler, and I'm just applying the same fix to CurlHandler. +15631 area-System.Net Use ArrayPool for CurlHandler's send transfer state When sending request data from something other than a byte[], CurlHandler allocates a buffer to transfer data from the request to libcurl, typically 16K (unless the request content is known to be smaller than that). We can use a buffer from ArrayPool for that. cc: @davidsh, @geoffkizer +15633 area-System.IO File.GetLastWriteTime inconsistencies. On Windows, File.GetLastWriteTime does not throw an error if the file does not exist. On Linux, however, this function throws an error. +15635 area-Infrastructure Figure out the set of CI legs we should run by default on each PR Today we run various OS's, Architectures, and flavors (Debug/Release) on every PR. I think we should figure out the best set of combinations to get the most bang-for-the-buck in our PR CI system. For example I would not suggest we do Debug/Release for all OS's we should mix and match. To see the discussion here is what I would suggest: Windows - Debug - x64 Windows - Release - x86 OSX - Debug - x64 Ubuntu - Release - x64 CentOS - Debug - x64 PortableLinux - Release - x64 That should give us a decent combination without trying to test the full matrix of configurations. +15636 area-System.Globalization Fix Lunisolar calendar leap month tests Lunisolar calendars tests assumed these calendars doesn't have leap months which is wrong. the change is just fixng the tests Fixes #15581 +15637 area-System.Linq [WIP] Specialize Where.First, Where.Last and the First and Last overloads accepting predicates Changes: - `source.Where(predicate).First()` should have the same result as `source.First(predicate)` (barring exceptions), so if we optimize for one we can optimize for the other. This PR speeds things up in both cases if `source` is an array/List/IList, avoiding double interface dispatch and an enumerator allocation. - `source.Where(predicate).Last()` is now recognized in addition to `source.Last(predicate)`, so we don't run the predicate on every item if `source` supports random access. - I also added code to specialize `ilist.Where(predicate)`. It makes sense because we can check for IList at little cost to existing codepaths, and there is already logic in place for `ilist.First(predicate)` and `ilist.Last(predicate)`, so we can implement `ilist.Where(predicate).First()` and `ilist.Where(predicate).Last()` for free. Marking WIP temporarily because I need to finish adding XML docs and make sure all branches are being covered. Comments are welcome in the meantime though. /cc @JonHanna @VSadov **edit:** Forgot the most important thing-- performance results. [Here they are.](https://gist.github.com/jamesqo/a9f0f37fca46481fe6d94a9dbd5c896f) There seems to be an improvement across the board for basically every pattern. The leaked memory stats can be ignored, I added that as part of https://github.com/dotnet/corefx/pull/15389. +15639 area-Infrastructure Add a task&target to update project configurations Previously there was just a target to flag errors for projects. This wasn't all that useful so I added a target to fix them. /cc @weshaggard @joperezr +15640 area-System.Net "Dns.GetHostEntry(""IPv4_string"") does not work in Linux environment." "I am working on developing integrated authentication feature in Linux. The feature utilizes API **System.Net.Dns.GetHostEntry**(string hostNameOrAddress) for domain name reverse look up while generating server SPN. This method works great in Windows, but does not work in Linux when I feed IPv4 address for parameter. IPv6 parameter works though in Linux. Here is a sample code and its stack trace: IPHostEntry hostEntry = Dns.GetHostEntry(""xxx.xxx.xxx.xxx""); System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace: at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6) at System.Net.Dns.GetHostEntry(String hostNameOrAddress) CC: @saurabh500 @corivera @YoungGah" +15643 area-Meta Adding missing apis to .NET Core that where added to netstandard 2.0 Fixes #15362 This needs to wait for [dotnet/coreclr #9203](https://github.com/dotnet/coreclr/pull/9203) PR to go in and that corefx ingests the new coreclr with this changes. /cc @weshaggard @danmosemsft +15646 area-System.Data Port System.Data.Odbc Implements `System.Data.Odbc` (#13035). **Current status**: * Integration tests don't run in our test infrastructure because we're missing a dep. It's being tracked on an internal ticket. ping @divega @anpete @eerhardt @saurabh500 @weshaggard. +15648 area-Infrastructure Fix configurations for UAP These changes enable TargetGroup=UAP to build completely. @joperezr you should be able to work from here and just add configurations to projects that aren't building. /cc @weshaggard +15651 area-System.Threading string.Format call fixed Format string missed argument +15652 area-System.Data SqlFileStream roadmap Hello I'd like to ask are there any plans to implement SqlFileStream. At this moment this is the only part that makes me to stop migrate to core base. +15656 area-Infrastructure ./build.sh -? is not helpful ./build.sh -? ``` There are new changes on how we build. Use this script only for generic build instructions that apply for both build native and build managed. Otherwise: Before Now build.sh native build-native.sh build.sh managed build-managed.sh For more information: https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md ---------------------------------------------------------------------------- Tools are already initialized Error: Object reference not set to an instance of an object. at Microsoft.DotNet.Execute.Setup.FormatSetting(String option, String value, String type, String toolName) at Microsoft.DotNet.Execute.Setup.BuildParametersForCommand(Dictionary`2 commandParameters, String toolName) at Microsoft.DotNet.Execute.Setup.BuildCommand(String commandSelectedByUser, List`1 parametersSelectedByUser, Dictionary`2 parameters) at Microsoft.DotNet.Execute.Setup.GetHelpCommand(String commandName, String alias) at Microsoft.Fx.CommandLine.CommandLineParser.GetHelp(Int32 maxLineWidth, String parameterSetName, Boolean displayGlobalQualifiers) at Microsoft.Fx.CommandLine.CommandLineParser.<>c.b__0_0(CommandLineParser parser) at Microsoft.Fx.CommandLine.CommandLineParser.Parse(Action`1 parseBody, Action`1 helpHandler, Action`2 errorHandler, Setup setupContent, String[] args) at Microsoft.Fx.CommandLine.CommandLineParser.ParseForConsoleApplication(Action`1 parseBody, String[] args, Setup setupContent) at Microsoft.DotNet.Execute.Executor.DefineParameters(String[] args, Setup setupInformation) ``` +15659 area-System.Net [Port 1.1] Fix System.Net.Http.HttpClientHandler for net46 build Porting fix from: #15036. +15660 area-System.Xml Adding a newline to an XML document using XDocument "I was wondering if someone can add the functionality to add an empty line to an XML file (or if the functionality already exists and I couldn't find it on the internet...). I tried doing `xelement.element(""elementname"").Add(Environment.newline)` but it just screws up the formatting of the document. If I do that, this is what the XML file looks like (truncated for clarity): ``` ```" +15661 area-System.Net Reconsider allowing unsecure connections in .NET Core I'm writing a C# wrapper around a very-much legacy SOAP/XML webservice. The service uses a self-signed certificate that is expired. It also uses SSLv3, which, from what I can learn here and on the WCF teams github, is not allowed in corefx. I fully understand the implications and reasoning behind this, but is there no way around this limitation? The company that made the device running the webservice stopped maintaining it years ago. Will .NET Core not allow us to interact with such legacy devices? As I see it, being able to trust a self-signed certificate is no better than allowing SSL. On a side note: My app works on Windows, but not on Ubuntu or Docker. Is that intentional? +15663 area-System.Linq Allow for specify return value on System.Linq.Enumerable.*OrDefault methods I would like to propose adding overloads to the System.Linq.Enumerable.*OrDefault and System.Linq.Queryable.*OrDefault methods for specifying the value to be returned in the default case. This is the value that would be returned instead of `default(TSource)` when there are no items in the enumeration There are times when the default value of a given type may be a valid value from the enumeration. If the default value for the enumeration type is valid value, there is not a nice way to determine if the returned values was because the enumeration was empty or if that value was in the enumeration. ## Proposed API change ```C# namespace System.Linq { public static class Enumerable { public static TSource SingleOrDefault(this IEnumerable source, TSource defaultValue); public static TSource SingleOrDefault(this IEnumerable source, Func predicate, TSource defaultValue); public static TSource FirstOrDefault(this IEnumerable source, TSource defaultValue); public static TSource FirstOrDefault(this IEnumerable source, Func predicate, TSource defaultValue); public static TSource LastOrDefault(this IEnumerable source, TSource defaultValue); public static TSource LastOrDefault(this IEnumerable source, Func predicate, TSource defaultValue); } public static class Queryable { public static TSource SingleOrDefault(this IQueryable source, TSource defaultValue); public static TSource SingleOrDefault(this IQueryable source, Func predicate, TSource defaultValue); public static TSource FirstOrDefault(this IQueryable source, TSource defaultValue); public static TSource FirstOrDefault(this IQueryable source, Func predicate, TSource defaultValue); public static TSource LastOrDefault(this IQueryable source, TSource defaultValue); public static TSource LastOrDefault(this IQueryable source, Func predicate, TSource defaultValue); } } ``` ## Updates - Switch from using default parameters to method overloads - Added IQueryable methods as well +15666 area-Infrastructure Mark System.Memory and Unsafe as .NET Core App assemblies. This should include both System.Memory and System.Runtime.CompilerServices.Unsafe in the .NET Core package. @ericstj +15667 area-Infrastructure netstandard tests aren't currently running Any test projects that have both a netcoreapp and netstandard build configuration is only ever running the tests for netcoreapp. So any tests that are conditioned for netstandard only are not currently being ran. System.Runtime (https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/System.Runtime.Tests.csproj) is an example of such a project. We need to decide whether or not we should run all compatible configurations for a given vertical or only run the most specific configuration for the vertical and make sure it correctly aggregates all the tests. One drawback to doing only the one configuration is we want have any tests built against netstandard and running in the context of that vertical. cc @ericstj @joperezr @tarekgh @mellinoe +15668 area-System.Linq Implementation and tests for Queryable.Append, Queryable.Prepend Fixes https://github.com/dotnet/corefx/issues/14220 /cc @JonHanna @VSadov @OmarTawfik +15669 area-System.Data Investigate if lock statements are necessary in SqlClient.SNITcpHandle's EnableSsl & DisableSsl methods Whenever reads and writes are called on the _stream variable in SNITcpHandle, a lock(this) statement is used. EnableSsl & DisableSsl set the value of _stream without using any lock statements. CC @saurabh500 +15671 area-System.IO Port System.IO.Ports - Ports SerialPort code - Stubs out test project and adds smoke test The NativeMethods class (which only contains defines) should be broken out into Common/src/Interop files. Tests need added. I'll try and round up what we currently have. Contributes to #984. @ianhays, @joperezr, @weshaggard, @ericstj, @danmosemsft, @SWY1985, @willdean, @karelz +15673 area-System.Reflection Re-enable reflection only tests +15674 area-System.Reflection Modify reflection only tests modify reflectiononly tests as their implementation is being changed to NotSupported in coreclr repo. Disable the tests for now till new changes are pulled in. +15678 area-Infrastructure Get path to contract from config system This is needed for cases where we have refs that don't binplace. /cc @weshaggard +15679 area-System.Net Several changes to improve Socket stress "Existing Socket stress test ignores most failures, such as connection failure, send failure, receive failure, etc. I am adding checks for these failures. When adding these checks, I noticed several other problems: (1) On Linux, all connections were silently failing due to the way we were trying to connect. The server was listening on IPv6Loopback, but the client was trying to connect via DNS resolution to ""localhost"". On Windows, ""localhost"" resolves to both IPv6Loopback and IPv4Loopback, so this works. On Linux, it only resolves to IPv4Loopback, thus all client connections fail. Fix is to make the client explicitly connect to IPv6Loopback instead of using the ""localhost"" name. (2) On Windows, the host OS would start rejecting connections at around the 150th connection or so. This seemed to be due to the way the test works; it was connecting and immediately performing lots and lots of sends to the server. The fix is to rework the test to do sends and receives in a slightly less aggressive way, and make sure that the client is processing receives at the same time as sends by spawning separate tasks for them. Also, a couple related changes: (1) Randomly vary the size of the amount of data sent before the client stops sending and waits for all data to be received from the server. (2) Add the SOCKETSTRESS_ITERATIONS env variable to enable longer stress runs. (3) Rework some code to use Tasks, to make the code easier to implement (4) Have just one stress test instead of multiple. (The second variation wasn't really providing any additional coverage anyway.) This stress test should take around 30s to run, compared to 3s previously. " +15680 area-System.Runtime unsigned-correctness in interop structures I have been looking at the recent port #984 of the SerialPort code , and it raises for me a question about the use of unsigned types in interop signatures. For example, the native `COMMTIMEOUTS` structure contains 5 `DWORDS` (https://msdn.microsoft.com/en-us/library/windows/desktop/aa363190.aspx). However, in interop/windows/kernel32/interop.COMMTIMEOUTS.cs, it has 5 ints (this is how it came from the original netfx source). A corollary of this is that we end up with `MAXDWORD` being an defined as `const int = -1`, where it was originally `0xffffffff`. Clearly the p/invoke marshalling doesn't care whether a 32-bit number is signed or unsigned, but it seems to me that one should, in general, try to make p/invoke signatures, etc. match window.h as closely as possible. I don't see anything in the interop guidelines or previous issues about this - is there some policy against unsigned types in interop signatures? Or is this some kind of historical 'don't upset VB with unsigned types' sort of thing? Tagging @JeremyKuhne because he ported the stuff across +15682 area-System.Data Missing DataSetSchemaImporterExtension implementation CoreFX is missing implementation of [DataSetSchemaImporterExtension](https://msdn.microsoft.com/en-us/library/system.data.datasetschemaimporterextension(v=vs.110).aspx) which is available since .net 2.0 and not obsolete but missing in CoreFX. cc: @karelz @egorbo +15685 area-Infrastructure Update build table for PortableLinux Skip ci please +15686 area-Meta Question: style guide for abbreviations "I noticed that EntityFramework does not follow the Microsoft guideline: [Capitalization Conventions](https://msdn.microsoft.com/en-us/library/ms229043(v=vs.110).aspx) > A special case is made for two-letter acronyms in which both letters are capitalized, as shown in the following identifier: > IOStream DbSet, DbContext should be written as DBSet, DBContext. Examples: [IDataRecord.IsDBNull](https://msdn.microsoft.com/en-us/library/system.data.idatarecord.isdbnull(v=vs.110).aspx), [System.DBNull](https://msdn.microsoft.com/en-us/library/system.dbnull(v=vs.110).aspx). Another example: ```c# public static partial class EF ``` It should be written as Ef, if another guidelines are used. However, I did not find any info that Microsoft team has changed the capitalization rules. The document has no any description about it: https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md Can you clarify ASP.NET team position about 2-letter acronyms? [StyleCop](https://github.com/StyleCop/StyleCop) and [CodeFormatter](https://github.com/dotnet/codeformatter) have no special rules for this case. SonarQube has a wrong rule [S101](https://sonarqube.com/coding_rules#rule_key=csharpsquid%3AS101): > warning S101: Rename class ""RabbitMQTest"" to match camel case naming rules, consider using ""RabbitMqTest""." +15687 area-System.Threading Add exchange type for a scheduler "For pipelines, I'd like to be able to pass a `Scheduler` that determines where the continuation should run (could also be useful for other things). The closet thing we have today is a `SynchronizationContext` but it's really not appropriate for this. There's also a TaskScheduler but that's about scheduling tasks not arbitrary callbacks. ```C# public interface IScheduler { void Run(Action action); } ``` Not sure what other options we'd need here. this is similar to Java's executor https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executor.html. /cc @stephentoub **EDIT: Current proposal** ```C# public interface IScheduler { void Schedule(Action action, object state); } ``` ## Proposed API implemenations **Scheduler** ```C# public abstract class Scheduler : IScheduler { public static IScheduler Default => ThreadPool.Global; public static IScheduler Inline { get; } public abstract void Schedule(Action action, object state); } ``` The scheduler base class just has the default inline scheduler which runs actions inline. There are concerns about stack diving here but it's required for cases where the consumer wants to stay on the caller's thread. **ThreadPool** ```C# public class ThreadPool { public static IScheduler Local { get; } // QueueUserWorkItem (preferLocal:true) public static IScheduler Global { get; } // QueueUserWorkItem (preferLocal:false) } ``` Here we're exposing 2 schedulers from the ThreadPool type. These map to QueueUserWorkItem with various arguments. **SynchronizationContext** ```C# public class SynchronizationContext : IScheduler { public void Schedule(Action action, object state) { Post(new SendOrPostCallback(action), state); } } ``` Exposing the SynchronizationContext as an IScheduler would call Post on the sync context. Since most of the ""dispatchers"" in .NET already implement a sync context (WPF, System.Web, WinForms, UWP, Xamarin etc) this would be the way to bridge the existing tech with this new interface. **TaskScheduler** It should be possible to run Task continuations on any arbitrary IScheduler. We should be able to convert use any IScheduler as a TaskScheduler. This means any thing that uses an TaskScheduler today would just work with the IScheduler via a simple factory. ```C# public class TaskScheduler { public static TaskScheduler CreateFromScheduler(IScheduler scheduler); } ``` ## Potential APIs Consumers Once we have the above types exposed we can start looking at places where using a scheduler might be beneficial. Generally, we can look at places that call directly into QueueUserWorkItem and determine if it makes sense to allow callers to specify which IScheduler should be used instead. More specifically, here are some places it might be useful (we'd of course need to dig into the details more). **SocketAsyncEventArgs** SocketAsyncEventArgs has a callback that executes whenever any IO operation completes (read/write/connect/accept). Currently the thread that callback runs on is either a thread pool thread (in the linux case) or the IOCP completion thread on windows. There are some cases where the calling code wants fine grain control over where continuations run to avoid unnecessary context switches. In these cases it would be ideal if the SocketAsyncEventArgs exposed an IScheduler property that determined where completions ran. ```C# public class SocketAsyncEventArgs { public IScheduler Scheduler { get; set; } } ``` This would allow callers to specify where continuations should run (it could even be OS specific). **Timer** Timer callbacks are always scheduled on threadpool threads. Adding a scheduler would allow using the timer API but would also allow callers to control where callbacks execute. ```C# public Timer(TimerCallback callback, object state, int dueTime, int period, IScheduler scheduler); public Timer(TimerCallback callback, object state, long dueTime, long period, IScheduler scheduler); public Timer(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period, IScheduler scheduler); public Timer(TimerCallback callback, object state, uint dueTime, uint period, IScheduler scheduler); ``` **Task continuations** Running task continuations on specific threads when using async/await syntax today isn't possible without changing the current task scheduler (AFAIK). Ideally you would be able to do something like: ```C# await task.ContinueOn(scheduler); ``` Today Task has very specific knowledge about the SynchronizationContext capturing because it's the most common scenario. There are scenarios where the caller whats to continue on another scheduler or TaskScheduler and wants to specify that at the point of the await. ```C# public class Task { public TaskAwaiter ContinueOn(TaskScheduler scheduler); } ``` **CancellationToken** CancellationTokens allow for the registration of callbacks that execute of callbacks upon cancellation. A scheduler can be specified to determine where these callbacks should run. This would be more efficient than scheduling the call to Cancel to run on another thread since doing if efficiently requires knowledge that callbacks are registered (see https://github.com/dotnet/corefx/issues/23716 for a related issue). There could be an overload of cancel that takes an IScheduler. ```C# public class CancellationTokenSource { public void Cancel(IScheduler scheduler); } ```" +15688 area-System.Security Access violation using X509Chain in netcoreapp1.1 "When upgrading a project from `netcoreapp1.0` to `netcoreapp1.1` we found that we were hard crashing the CLR. The code below ""works"" in `netcoreapp1.0` on win10-x64, but will crash without warning when upgraded to `netcoreapp1.1`. The `catch` block doesn't run, it causes a watson error. The watson info is after the code. There is nothing particular about `1.crt`, this happens for any X509 certificate that I load. ```csharp static void Main(string[] args) { try { bool result; var cert2 = new X509Certificate2(""1.crt""); var coreChain = new X509Chain(); result = coreChain.Build(cert2); System.Console.WriteLine(result); } catch { System.Console.WriteLine(""BAD!""); } } ``` Watson: ``` Sig[0].Name=Application Name Sig[0].Value=dotnet.exe Sig[1].Name=Application Version Sig[1].Value=1.1.0.1179 Sig[2].Name=Application Timestamp Sig[2].Value=5820b092 Sig[3].Name=Fault Module Name Sig[3].Value=coreclr.dll Sig[4].Name=Fault Module Version Sig[4].Value=4.6.24628.1 Sig[5].Name=Fault Module Timestamp Sig[5].Value=581390f9 Sig[6].Name=Exception Code Sig[6].Value=c0000005 Sig[7].Name=Exception Offset Sig[7].Value=000000000004de20 ``` This is for RC3: Product Information: Version: 1.0.0-rc3-004530 Commit SHA-1 hash: 0de3338607 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\1.0.0-rc3-004530" +15689 area-System.Diagnostics Failed assert in ProcFsStateToThreadState on Linux and PortableLinux https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_debug_prtest/6/ ``` Unexpected status character at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Fail(String message) at System.Diagnostics.ProcessManager.ProcFsStateToThreadState(Char c) in /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Linux.cs:line 207 at System.Diagnostics.ProcessManager.CreateProcessInfo(ParsedStat procFsStat, ReusableTextReader reusableReader) in /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Linux.cs:line 144 at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) in /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Linux.cs:line 34 at System.Diagnostics.Tests.ProcessTests.TestGetProcessesByName() in /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/System.Diagnostics.Process/tests/ProcessTests.cs:line 584 ``` cc: @gkhanna79, @mellinoe, @Priya91 +15690 area-Meta Enabled overflow checks in Debug (pt 1) Enabled overlfow/underflow checks for Debug builds only for the following projects (issue #3140) - System.AppContext - System.Buffers - System.CodeDom - System.Collections - System.Collections.Concurrent - System.Collections.Immutable - System.Collections.NonGeneric - System.Collections.Specialized - System.ComponentModel - System.ComponentModel.Annotations +15691 area-System.Collections Add HashSet TryGetValue "Sometimes I find myself needing to retrieve a value from a `HashSet`. You may wonder why that's needed when you already have the value when you might want to retrieve it. Well, that's not always true depending on the `Comparer` you're using as a value may evaluate to being contained within the set but is not strictly equal to the value stored in the set. ## Proposed API ```diff namespace System.Collections.Generic { public partial class HashSet { + public bool TryGetValue(T equalValue, out T actualValue); } public partial class SortedSet { + public bool TryGetValue(T equalValue, out T actualValue); } } ``` ## Rationale and Usage My use case is sometimes I want to create a case-insensitive `string` mapping to the actual `string` value. So for example instead of having to use a `Dictionary` for the mapping as below ```c# var dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); dictionary[""A""] = ""A""; string value = ""a""; string actualValue; if (dictionary.TryGetValue(value, out actualValue)) { Assert.AreEqual(""A"", actualValue); } ``` I could use a `HashSet` like this ```c# var hashSet = new HashSet(StringComparer.OrdinalIgnoreCase) { ""A"" }; string value = ""a""; string actualValue; if (hashSet.TryGetValue(value, out actualValue)) { Assert.AreEqual(""A"", actualValue); } ``` With this implemented users would save on memory usage, would be able to use set operations, and be able to populate the collection more easily. Other possible use cases (from discussion below) - object pool, such as simple string interning - save overhead of the key in a dictionary, when the value knows its own key ## API Details * `TryGetValue` returns an indication if the `HashSet` contains the `equalValue` and the output parameter `actualValue` contains the `HashSet`'s value that equals `equalValue` with the set `Comparer` if contained in the `HashSet` otherwise the default value of `T`. ## Updates * Formalized request * Removed getter indexer" +15692 area-Meta Add P/Invoke notes Adds detailed notes and guidelines for defining P/Invokes. @willdean, @tijoytom, @mellinoe, @stephentoub, @jkotas +15693 area-System.IO Get rid of System.IO.Compression OOB - .NET Standard 2.0 should forward to Desktop Framework The cost of shipping OOB for Desktop is very high and we have burned ourselves (System.Net.Http). Let's make sure we do not accidentally run into the same problems here as well. cc: @ianhays @weshaggard +15694 area-System.Data In SNITcpHandle.Dispose(), null _stream so that it releases any object references. Porting change in https://github.com/dotnet/corefx/pull/15431/commits/4893f2f89032b5d2c39d619ae0961fa491aaf8d9 to current release branch. +15696 area-Infrastructure Typo in build variable name Should be PB_VsoRepositoryName, matching with other repos. No effective different in execution since VsoRepoName was unused. /cc @chcosta +15697 area-System.Net Attempt to make UDP socket tests more reliable on Linux Currently some of the UDP tests are sending to a given server multiple times due to potential 'packet loss' problems, which apparently is causing side effects with other tests running in parallel. This PR changes the tests to only send once; I will measure the test impact over several days and determine whether to keep it like this, or if new failures start occurring due to packet loss we'll need to refactor the tests in some manner to accommodate multiple sends without side effecting other tests running in parallel. Also I'm not sure if packet loss should ever occur on loopback \ localhost, assuming that various send\receive buffers do not get overloaded when our tests run, and in that case sending multiple times may make the problem worse. I believe the problem is the extra sends that would normally just get lost actually go to the wrong server if another test running in parallel happens to create a server with the same port number. UDP is connectionless so the client doesn't know if the original server has been closed. This causes things like expected timeouts not occurring because a receive succeeds when there shouldn't be a client sending (https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs#L557) or other failures because received messages are coming from the wrong client(https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs#L2347) Here's some examples of recent test failures affected by this issue (roughly 1 per day on CI runs): ```` Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: (No exception was thrown) at System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 516 Assert.Throws() Failure\nExpected: typeof(System.TimeoutException)\nActual: typeof(Xunit.Sdk.EqualException): Assert.Equal() Failure\nExpected: ::1\nActual: ::ffff:127.0.0.1 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromAsync_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) in /mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2347 Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: typeof(Xunit.Sdk.ThrowsException): Assert.Throws() Failure\nExpected: typeof(System.Exception)\nActual: (No exception was thrown) at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFrom_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) in /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1988 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.b__13_0() in /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1946 Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: typeof(Xunit.Sdk.EqualException): Assert.Equal() Failure\nExpected: ::1\nActual: ::ffff:127.0.0.1 at System.Net.Sockets.Tests.DualModeBase.ReceiveFrom_Helper(IPAddress listenOn, IPAddress connectTo) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2709 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom.b__6_0() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1401 ```` cc @ianhays cc @Priya91 cc @davidsh cc @ericeil In reference to issue #14519 +15699 area-System.Data Porting PR #15146: Fix for slow down in Sql Client Connection Open Copied from original PR. Fixes #15089 The fix is to bring the behavior in sync with Windows Version of SqlClient. https://github.com/dotnet/corefx/issues/15089#issuecomment-272268114 describes the behavior. I ran a test to connect to Azure using Managed version of SNI . With this change, 30 connnections to Azure SQL take about 13500 ms vs ~24000 ms before the change. +15702 area-Infrastructure System.Net.Sockets solution file is broken If I try to open it in VS, I don't see the System.Net.Sockets.csproj in src -- just the ref and test projects. If I try to build it from the command line, it doesn't actually build System.Net.Sockets.csproj. +15703 area-Infrastructure Remove restriction in System.Memory configuration.props that builds for Windows only "From PR #15569 https://github.com/dotnet/corefx/pull/15569#discussion_r98976731 From **kouvel**: > Since it looks like you're also enabling CoreCLR's span with this change, could you please also remove the restriction in Configuration.props that builds for Windows only? This would work fine I think: ```xml netcoreapp; ``` > And can remove any windows-specific stuff in the csproj. From **mellinoe**: > This is an ""artificial"" restriction that needs to be kept for now. This library relies on System.Runtime.CompilerServices.Unsafe, which cannot be built outside of Windows right now. From **kouvel**: > Is it possible to use CoreLib's Unsafe implementation instead? Maybe it would require making it public in CoreLib (but without a contract in CoreFX), which seems reasonable, as that's what we did for RuntimeThread as well. From **jkotas**: > Having the exact same public type it multiple different assemblies tends to cause problems. If we wanted to use the CoreLib Unsafe here, it should be fine but we need to: > - Give CoreLib Unsafe different name or namespace, e.g. Internal.Runtime.CompilerServices (I think this option is better) or > - Fill CoreLib Unsafe to have all methods that S.R.CS.Unsafe has, and turn S.R.CS.Unsafe into façade for netcoreapp20" +15704 area-System.Net Add some more HttpListener tests. cc @CIPop @stephentoub @davidsh @karelz +15705 area-Infrastructure Overhaul external / binplacing / reference from runtime Best to review commit-by-commit. First change I made was to switch external to use binplacing logic. Let let us have better control over when to copy and where and allowed copying to multiple locations easily. As part of this I binplace both the primary output (if it exist) as well as all copy-local items. Second change was to combine coreclr and NETNative into a common runtime project (thanks @joperezr). This was to enable the following change. Third I fixed ReferenceFromRuntime to use a project reference to the runtime project for src projects, and block its use from tests. This enables us to build multiple configurations at a time that may need different runtime libs without stomping on each other in the runtime path. It also fixes cases where folks might accidentally use ReferenceFromRuntime instead of a project reference. Finally I noticed that the first change caused a bunch of clashing copies to occur. To fix this (which should be general goodness) I disabled copy local for project references for anything that isn't a test project. /cc @weshaggard @tarekgh +15707 area-Infrastructure Linux Crossbuild VSO job should use Docker Exec pattern https://github.com/dotnet/corefx/pull/15695 added a Linux Crossbuild job to the pipebuild - defined here (https://github.com/dotnet/corefx/blob/master/buildpipeline/DotNet-CoreFx-Trusted-Linux-Crossbuild.json). This job uses the old Docker pattern still used in CoreCLR, instead of the Docker exec pattern used by our other Linux job (https://github.com/dotnet/corefx/blob/master/buildpipeline/DotNet-CoreFx-Trusted-Linux.json). The new job should use Docker exec. +15708 area-System.IO Is there a function to copy directories? "Currently, the `Directory` class contains a `Move()` method. However, the class does not possess a way to copy directories from one location to another. If a user wants to copy directories, he/she would have to write their own method to create a directory in the new location and call `File.Copy()` for each file in the source directory. ## Rationale and Usage The `File` class has both `Copy()` and `Move()` methods; however, the `Directory` class only has a `Move()`. Conceptually, a file and a directory are very similar: you can move or copy either of them across your file system. There are many users who [desire](https://stackoverflow.com/questions/627504/what-is-the-best-way-to-recursively-copy-contents-in-c) this feature and there is also an instructive [MSDN article](https://msdn.microsoft.com/en-us/library/bb762914(v=vs.110).aspx) outlining how to copy directories. It will be very convenient for users to simply call a `Copy()` method such as, ```csharp string SourceDirectory = @""C:\sourcefolder""; string DestinationDirectory = @""C:\destinationfolder""; Directory.Copy(SourceDirectory, DestinationDirectory); ``` Further, users will only need to pass in a string without needing to create `DirectoryInfo` so that the parameters are easy to use. ## Proposed API ```csharp public void Copy(string sourceDirName, string destDirName) { DirectoryInfo sourceDirectory = new DirectoryInfo(sourceDirName); DirectoryInfo destinationDirectory = new DirectoryInfo(destDirName); if (!Directory.Exists(target.FullName)) { Directory.CreateDirectory(target.FullName); } //copy all the files into the new directory foreach (FileInfo file in sourceDirectory.GetFiles()) { file.CopyTo(Path.Combine(target.ToString(), file.Name), true); } //copy all the sub directories using recursion foreach (DirectoryInfo subDirectory in sourceDirectory.GetDirectories()) { DirectoryInfo nextTargetDir = destinationDirectory.CreateSubdirectory(subDirectory.Name); Directory.Copy(subDirectory.FullName, nextTargetDir.FullName); } } ```" +15709 area-System.Diagnostics Console app uses 100% cpu when is ran by Process.Start with redirecting input/output dotnet core version: 1.0.2 OS: Windows 10 or Ubuntu 16.04 x64 How to replicate the issue: 1. Create a Console app A, which will accept any input and print the length of the input. 2. Publish app A to a folder. 3. Create a Console app B, which uses Process.Start to start app A with RedirectStandardInput and RedirectStandardOutput set to true, In startinfo, filename is dotnet, argument is the main dll name in the app A publish folder. Do not use WaitForExit in app B. 4. App B will exit after starting the app A, app A will still be running in the background and uses 100% of cpu. 5. With RedirectStandardInput and RedirectStandardOutput set to false, it will be all good. any ideas? +15713 area-System.Numerics Vector3GetHashCodeTest AV'ing on Windows release With the latest CoreCLR update, this test is consistently AV'ing on Windows. ``` Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at System.Numerics.Tests.Vector3Tests.Vector3GetHashCodeTest() in D:\j\workspace\windows_nt_re---37265eab\src\System.Numerics.Vectors\tests\Vector3Tests.cs:line 51 ``` cc: @mellinoe, @CarolEidt +15714 area-System.Threading Delete Win32ThreadBoolBoundHandle - moved to CoreLib +15715 area-System.Threading Delete ClrThreadBoolBoundHandle - moved to CoreLib Counter part of https://github.com/dotnet/coreclr/pull/9268. This change will need to be cherry picked to fix build break once this change arrives to CoreFX. +15717 area-System.Linq IEnumerator.Current being more restictive than IEnumerator.Current is unuseful. `IEnumerator.Current` and `IEnumerator.Current` are both undefined prior to the first call to `MoveNext()` (or the first after a successful `Reset()`). In the case following a `MoveNext()` that has returned `false` or an action has made the source collection consider itself to have been mutated, then `IEnumerator.Current` is undefined while `IEnumerator.Current` is documented as always throwing `InvalidOperationException`. This puts a greater implementation burden on the base interface than the derived one. It's also not what happens in practice, for while some implementations follow the more restrictive practice (and at least one actually treats them differently in this way) a great many follow the documentation for `IEnumerator.Current` when it comes to `IEnumerator.Current`, including the iterators produced by `yield`: ```C# private IEnumerable TestEn() { yield break; } public static Main() { IEnumerator en = TestEn().GetEnumerator(); en.MoveNext(); Console.WriteLine(en.Current); // 0 } ``` Such cases have existed since .NET 2.0 (indeed a great many in 1.1 were breaking the tighter rule anyway) so the requirement for throwing IOE clearly isn't necessary. I think the documentation for `IEnumerator.Current` should be updated to match the reality, which is that it should be the same as that for `IEnumerator.Current` in this regard. +15719 area-System.Linq Allow TryExpression inside a filter? Compiling a `TryExpression` that is inside the `Filter` expression of a `CatchBlock` of another `TryExpression` throws with the IL compiler (the interpreter has no problem with it). This is reasonable since if it produced such IL it would be unverifiable. It is however a limit on composability; a method producing `bool`-typed expressions may in good faith use a `TryExpression` within it while a method producing `CatchBlock`s may in good faith use such an expression in a filter. The failure comes from the combination of two reasonable operations. Branching to outside of the filter won't work, as that is also unverifiable. Emitting a method for the closure of the filter expression and locals it uses, and calling that method as a new filter expression **would** work. +15724 area-Meta Remove Comments with (#15374) Hi, Submitting the comment clean up for #15374. Kindly review and let me know. Essentially all the SecurityKernel tags which were commented out have been removed as per the ask in the issue #15374. Thanks, Mandar +15725 area-Infrastructure Adding UAPAOT vertical and configurations Adding uapaot vertical build. To try it, run `build.cmd -framework:uapaot` cc: @weshaggard @ericstj FYI: @joshfree @DnlHarvey @AntonLapounov @danmosemsft @Chrisboh @MattGal +15729 area-Infrastructure Update dogfooding instructions for nightly builds of Microsoft.NETCore.App. @terrajobst @ericstj @danmosemsft @Petermarcu skip ci please +15730 area-System.IO Fix some misc failing desktop IO tests These tests are failing on the full framework test runs for misc reasons explained in the comment section of the attributes. Most of them are because of lack of DeflateStream Flush support. resolves https://github.com/dotnet/corefx/issues/13249 +15731 area-Meta Review types for Serialization test coverage The binary rewriter that currently strips S.P.CoreLib.dll turns out to have been removing _some_ instances of serialization infrastructure on types it retained. That implies that we don't have test coverage for binary serializing these. Investigate, and add coverage if necessary. If the type is internal to S.P.CoreLib.dll and is not serialized indirectly then possibly it isn't necessary. If the type is missing [Serializable] on it, it's also not necessary. What I grepped for ``` [OnDeserialized] [OnSerializing] [OnSerialized] serialization constructor or other function passed SerializationInfo ``` Types affected were in - [ ] mscorlib/src/System/Globalization/SortKey.cs - [ ] mscorlib/src/System/Security/Util/TokenBasedSet.cs - [ ] mscorlib/src/System/Security/Util/URLString.cs - [ ] mscorlib/src/System/Security/PermissionSet.cs (PermissionSet) - [ ] mscorlib/src/System/Text/*Encoding.cs - [ ] mscorlib/src/System/AppDomainUnloadedException.cs - [ ] mscorlib/src/System/Collections/Comparer.cs - [ ] mscorlib/src/System/Collections/Generic/Comparer.cs (several classes) - [ ] mscorlib/src/System/Collections/Hashtable.cs (the internal hashtable) - [ ] mscorlib/src/System/IO/DriveNotFoundException.cs - [ ] mscorlib/src/System/InsufficientMemoryException.cs - [ ] mscorlib/src/System/OperatingSystem.cs - [ ] mscorlib/src/System/Reflection/ConstructorInfo.cs - [ ] mscorlib/src/System/Runtime/CompilerServices/RuntimeWrappedException.cs - [ ] mscorlib/src/System/Runtime/Serialization/FormatterServices.cs - SurrogateForCyclicalReference - [ ] mscorlib/src/System/Runtime/Serialization/ISurrogateSelector.cs - [ ] mscorlib/src/System/Text/DecoderNLS.cs @stephentoub fyi. +15732 area-Infrastructure Adding TargetGroup to shim baseline files cc: @weshaggard @ericstj Adding TargetGroup to basline files for shims. +15735 area-System.Runtime Library author wants to target netstandard and work with packages.config with LTS This bug needs to be back ported to NETStandard.Library -- 1.6.0.1 -- and remain in the LTS that works everywhere. The issue was fixed here https://github.com/dotnet/corefx/issues/10445, but only is available in FTS. This means that 1.6.0 is broken here. @ericstj +15736 area-Infrastructure Xplat native build with existing artifacts doesn't rebuild if only symbol stripping configuration has changed "CMake (or Make) doesn't rebuild the xplat binaries when `-stripSymbols` is set differently than the command that built what's in `bin`. Symbol stripping happens on build, so this means someone might run a ""successful"" build command that ends up with unexpected outputs in this *very* specific case. Repro: 1. Perform the native CoreFX build without stripping symbols (default). 2. Perform a native CoreFX build again with stripping enabled. 3. The native build doesn't detect any changes, and doesn't rebuild, leaving you with unstripped binaries. Workaround: clean the native artifacts to force a new build. This was a known issue introduced with https://github.com/dotnet/corefx/pull/15440. /cc @ellismg " +15739 area-System.Diagnostics Provide Precise UtcNow using Stopwatch. As part general logging infrastructure, it is useful to have timestamps. DateTime (using UTC) is a fine way of doing this, (it has 100nsec resolution) however DateTime.UtcNow has poor resolution (16msec). We need a way of getting DateTimes that is more precise. It is very straightforward to implement this using System.Diagnostics.Stopwatch. Thus we recommend adding the following API to it ```c# class System.Diagnostics.Stopwatch { // Computes a more precise UtcNow time. static DateTime UtcNow { get; } } ``` The implementation simply fetches 'DateTIme.UtcNow' and the current stopwatch tick count and uses that to compute the DateTIme when stopwatch ticks started. You can then use a call to Stopwatch.GetTimeStamp() and this start time to compute UtcNow (the current time). I considered putting this API in DateTIme, but decided against it because 1. The implementation naturally depends on Stopwatch. 2. Users of Stopwatch are the natural clients of this API. 3. We would end up with UtcNow and UtcNowPrecise, which feels a bit ugly. 4. DateTime lives in CoreCLR which complicates the implementation if we put it there. The dependencies don't work out. @terrajobst @lmolkova +15740 area-System.Data Building FunctionalTests of System.Data.SqlClient (dotnet/corefx/master) failed in Unix Building FunctionalTests of System.Data.SqlClient (dotnet/corefx/master) failed in Unix (Ubunbtu 14.04.5LTS x64) with following error messages: ``` CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/xunit.core.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/Xunit.NetCore.Extensions.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/xunit.assert.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/xunit.abstractions.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/xunit.performance.core.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/xunit.execution.dotnet.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] CSC : error CS0006: Metadata file '/home/REDMOND/gelee/Projects/DotNetCoreFx/bin/runtime/netcoreapp-Unix-Debug-x64/Newtonsoft.Json.dll' could not be found [/home/REDMOND/gelee/Projects/DotNetCoreFx/src/System.Data.SqlClient/tests/Tools/TDS/TDS/TDS.csproj] ``` Here is what I did before reaching this error messages. * I cloned dotnet/corefx repository to Ubunbtu 14.04.5LTS x64 - $ git clone https://github.com/dotnet/corefx.git DotNetCoreFx * I ran build.sh script - DotNetCoreFx $ ./build.sh * I ran build-tests.sh script - DotNetCoreFx $ ./build-tests.sh * I ran build command to build FunctionalTests of System.Data.SqlClient - FunctionalTests $ /DotNetCoreFx/Tools/msbuild.sh /t:BuildAndTest /p:OSGroup=Unix +15741 area-Infrastructure Remove __BlockReflectionAttribute from pure facades For libraries that are pure facades we should avoid injecting the __BlockReflectionAttribute (https://github.com/dotnet/corefx/blob/ddadb906e40ed97cba9f9c58ad2f5642e0d91b50/dir.props#L78). The reason we should block it for pure facades is because we have detection logic that breaks when there are any type defs including the internal one we inject for __BlockReflectionAttribute so we should disable it for those facades. +15742 area-System.Data Enable Integrated Auth for Unix SqlClient This is for the new feature -- Integrated Authentication. @saurabh500 @corivera @tvrprasad @YoungGah +15744 area-Infrastructure Clean up sequencing of targets that change ProjectReferences We have a few places where we change ProjectReferences. AnnotateProjectReference in buildvertical.targets ResolveMatchingContract in resolvecontract.targets AddRuntimeProjectReference in referenceFromRuntime.targets MarkReferencePrivateFalse in FrameworkTargeting.targets I think the squence should be ResolveMatchingContract | AddRuntimeProjectReference > MarkReferencePrivateFalse | AnnotateProjectReference > AssignProjectConfiguration The `|` indicates they can happen in any order. The `>` indicates they must happen before the following targets. We should determine a way to do that with minimal coupling between the targets. +15747 area-Infrastructure Set configuration for WinRT depproj to netcoreapp/uap instead of netstandard when it was set to netstandard it would binplace to the netstandad ref folder which caused errors in our apicompat checks. Windows.winmd is not support in a netstandard way so having specific targets is better anyway. cc @joperezr @ericstj +15751 area-Infrastructure Misc cleanup of uapaot config - Delete files moved to CoreLib - Simplify conditions +15752 area-System.IO SerialPort Test migration tracking @SWY1985 @msalsbery @daflame76 I've opened this issue for the four of us to keep track of what's being done on migrating the SerialPort tests over to CoreFX style. @SWY1985 It sounds like you're going to go first on this (today?) - perhaps you could let us know in here what bits you're doing/done so that we don't trip over each other. +15754 area-Infrastructure Fix BuildAllConfigurations "This set of commits enables ""BuildAllConfigurations"" mode. Best reviewed commit-by-commit. /cc @weshaggard @mellinoe @tarekgh @joperezr " +15755 area-Infrastructure Use same logic to prepare rootfs across dotnet if possible 1. Update logic more safely for unmount and cleaning directory as in dotnet/coreclr 2. Refactor logic to achieve consistency across dotnet 3. Remove unused variable and fix typo After this I'm going to update dotnet/coreclr and dotnet/core-setup too. Main issue for this: https://github.com/dotnet/core-setup/issues/1432 +15758 area-Infrastructure Improve performance of ResolveMatchingContract I recently switched this to use p2p. This was needed to handle 2 cases: desktop where we don't binplace contract at all (we binplace impl to ref), and down level config a where we aren't binplacing. I noticed during the build all work that this can get somewhat expensive. To bring that in check I propose the following. 1. If not targeting desktop. 2. And $(refpath)/assembly.dll exists 3. Set this to resolvedmatchingco breach as we did before. 4. Otherwise add the projectreference as we do today. /cc @mellinoe @weshaggard +15759 area-Infrastructure Update CoreFx to beta-25003-02 (master) +15761 area-System.Net Remove PinnableBufferCache from corefx The only remaining use of PinnableBufferCache in corefx is in SslStream, which uses two different instantiations of it to get read and write buffers. I suggest we replace this usage with ArrayPool, so as to consolidate pools, and if doing so results in any regression, incorporate whatever we need from PinnableBufferCache into ArrayPool to address it (e.g. right now ArrayPool doesn't explicitly pay attention to generations, though it's not clear whether that negatively impacts it for these scenarios). Then we can delete the internal PinnableBufferCache copy from corefx. cc: @geoffkizer, @jkotas, @brianrob +15762 area-Infrastructure Fixing uapaot vertical cc: @weshaggard Looks like the latest update of buildtools broke uapaot vertical. With these changes build is green again. I'll setup a couple of CI runs to ensure that uap and uapaot verticals are not broken unintentionally +15763 area-Infrastructure Any new libraries not shipped should use Open key Any new libraries like System.Transactions, System.Configuration.ConfigurationManager, System.CodeDom, etc that have not yet shipped yet should have their public keys set to the Open Key (i.e. UseOpenKey=true). We should do an audit before we ship .NET Core 2.0 and make sure we update all these. +15764 area-Infrastructure Adding uap and uapaot vertical builds Adding uap and uapaot vertical CI runs to ensure that they don't get broken unintentionally. cc: @weshaggard @mmitche FYI: @stephentoub if you see any of these two runs failing on PRs feel free to tag me so that I can take a look. +15765 area-Infrastructure Update NS2.0 Apicompat baseline Update the NS2.0 package to fix a couple issues in the shims. Added more shims to the list we need for .NET Core compat with NS2.0 The remaining System.Transactions issues will be fixed once we rename that assembly as part of https://github.com/dotnet/corefx/issues/15259 cc @ericstj @joperezr +15766 area-Infrastructure Address feedback from #15754 Address feedback from PR #15754 I needed to merge that PR in order to avoid conflict-hell, this is a mop-up addressing feedback. Please review commit-by-commit. /cc @weshaggard @jkotas +15767 area-Infrastructure Move perf runner to dotnet core This check-in along with the updates to PerfTesting.targets in the build tools repo gives us the ability to run performance tests, aggreagate the data and submit it to Benchview. This commit also adds the source and project.json of the performance runner that works on dotnet core instead of running against the Desktop framework. +15771 area-System.Diagnostics Running bash shell programmatically on Mac OS X "I am trying to figure out how to run a bash shell using .NET Core. Specifically, I want to run a bash shell, run a dotnet [path to dll] command and pass commands to the dll. I tried looking through the test classes in `System.Diagnostics.Process` but I couldn't wrap my head around it. :( What I hope to achieve is something like on the .NET Framework: `Process.Start(""bash dotnet a.dll start"")` Please let me know if I'm asking the question in the appropriate area. :) I am running Mac OSX El Capitan 10.11.6 Thank you!" +15774 area-Infrastructure Move Linux Crossbuild definition to Docker-exec model This changes the Dotnet-CoreFx-Trusted-Linux-Crossbuild job so that it uses the Docker exec model - I've tested this in VSO & it should work. Don't merge until Monday. +15776 area-System.Data Add Odbc and SQLite OS deps to CI I'm working on [porting System.Data.Odbc](https://github.com/dotnet/corefx/pull/15646). I talked to a couple of people and we decided on writing some integration tests that would hit a SQLite database. Main reasons: easy to set up and cross-platform. For things to work, I need two pieces: * An Odbc library * A SQLite Odbc Driver On Windows: * We use `odbc32.dll`, which is probably already installed in our CI * I tested this using http://www.ch-werner.de/sqliteodbc/ driver On Linux (Ubuntu 16.04): * I tested this using `unixodbc` from the official repositories * I tested this using `libsqliteodbc` from the official repositories On OSX: haven't tested yet. Tests are skipped at the moment so my PR passes the CI check, but it would be nice to enable them after we get this in. Otherwise, I'll leave a note for devs on how to run this manually, but we'd have this library untested. ping @divega @anpete @saurabh500 @eerhardt @weshaggard @danmosemsft +15777 area-System.Net Fix networking test activeissues in System.Net.Http addresses #9543 #8945 #10958 #10702 #13188 cc @steveharter @ianhays @karelz #9543 Ensure the certificate is not disposed before next client reuses it. #8945 #10958 Make the test run only on windows version greater than insider preview. #10702 #13188 Not able to repro these locally, and the stack trace is from very old CI or different branch. Re-enabling the test for latest CI. +15781 area-Infrastructure Update CoreClr, CoreFx to servicing-25005-01, servicing-25004-02, respectively (release/1.1.0) +15782 area-Infrastructure Update xunit dependencies to beta4 I don't think this relies on https://github.com/dotnet/buildtools/pull/1300 However, both this and that PR have to be merged in any order to get the workaround fixed (which will be done in another PR) @jamesqo FYI +15783 area-System.Linq Add ExcludeFromCodeCoverage attributes to System.Linq.Parallel unreachables Each method has a message like > This method should never be called as ... +15784 area-System.Linq Cleanup CallInfo tests and increase coverage of ListEquals - Rename test methods to follow guidelines - misc cleanup of equals and getrhashcode tests that share common test data - add coverage for branch of ListEquals where an item in a array doesnt equal another - remove unecessary helper ListEquals that does the same as SequenceEqual +15785 area-System.Net SslStream_StreamToStream_ClientInitiatedCloseNotify_Ok failed failed in #15782 System.Net.Security.Tests.SslStreamAlertsTest.SslStream_StreamToStream_ClientInitiatedCloseNotify_Ok [FAIL] System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs(167,0): at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(407,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(131,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(676,0): at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(783,0): at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(706,0): at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(767,0): at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(983,0): at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(1145,0): at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(731,0): at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs(19,0): at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamAlertsTest.cs(111,0): at System.Net.Security.Tests.SslStreamAlertsTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +15788 area-System.Runtime Use corefx implementation of interop types for uapaot +15789 area-System.Runtime Fix System.Environment implementation for uapaot The env variable implementation for uapaot was wrong - it returned empty string instead of null. Fixed it by forwarding to corelib implementation that does the right thing already. +15790 area-System.Linq S.L.Expressions Expression.Default fails with DBNull "When compiling `Expression.Default(typeof(DBNull)` the interpreter is fine, but the compiler throws an `InvalidOperationException` with a message of ""Code supposed to be unreachable""." +15791 area-System.Linq Correctly compile Expression.Default(typeof(DBNull)) Fixes #15790 While at it, reduce IL produced for default of `decimal` and `DateTime`. Load `decimal.Zero` for decimal; lighter IL without a method call, and closer to current C# compiler behaviour. Load `DateTime.MinValue` for `DateTime`; lighter IL, and skips `IsValueType` check. +15797 area-System.Linq Optimise S.L.Expressions compilation of primitive constants. Most types use `conv` instructions but when the value is known to be in the types range (as these are ipso facto being typed as such) this has no effect. Just use `EmitInt` for all values < 32bit size. Since `EmitInt` is now a bit of a misnomer, rename all such methods to `EmitPrimitive`. Use shorter `ldc*` instructions for 64-bit constants when the value will fit within 32 bits, as either a signed or unsigned value. +15798 area-System.Data Enabling diagnostics in the middle of a connection causes NullReferenceException There were test failures due in SqlConnection.Open due to a NullReferenceException. This happens in the following case, 1. Do not enable statistics on SqlConnection and do not enable any Diagnostic listeners listening to the Command Diagnostics, and open a connection. 2. The diagnostics are enabled just during the `TryOpen` call in SqlConnection. (This is a matter of timing, but is easily reproducible in many CI runs. ) While trying to add statistics, the SqlConnection throws a NullReferenceException while de-referencing `_statistics` which was never initialized. The fix is to check for `Statistics` property before adding statistics data. This is a pattern I found the SqlConnection code and used it to fix this regression. There are two test changes 1. Enable the SqlConnectionBasicTests by removing the [ActiveIssue] tag. 2. I had to move the Diagnostic test to the ManualTest project. This is because the Diagnostic Tests should not be executed in parallel with other SqlConnection Open and manual tests are executed serially. The diagnostics tests will still be executed automatically in the CI. The diagnostics test can get a null diagnostic if another SqlConnection test is running in parallel and its intended to check the diagnostics coming out of the behavior of the tests that its executing and not other tests. cc @corivera @stephentoub Fixes #14017 +15805 area-Meta Marking code as unchecked (pt 1) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +15806 area-System.Linq S.L.Expressions ignores scale compiling small constant decimals `decimal` scaling means that there are sometimes when `0m` is treated differently to `0.00m`, e.g. when `ToString()` is called. It can also consider `0.00m` different to `-0.00m` though not in the `ToString()` case. When a `ConstantExpression` has a small integral decimal value (within the range of `long`) an optimisation loses this information if the compilation is done to IL. The interpreter is correct in this regard. +15807 area-System.Linq Retain Scale Information in decimal ConstantExpression compilation Don't optimise IL generated when the scale of a decimal constant is other than zero, so that scale information isn't lost. Fixes #15806 Improve the optimisations for those cases they can cover: **Lighter IL for known decimal values** Use `ldsfld` instead of `newobj` for decimals in decimal's static fields. Lighter IL and no constructor cost. **Lighter IL integral decimal constants (`int.MaxValue`, `uint.MaxValue`]** Load 32-bit value instead of 64. **Lighter IL integral decimal constants (`long.MaxValue`, `ulong.MaxValue`]** Use constructor that takes `ulong` instead of components. +15808 area-System.IO Improve code coverage of System.IO.FileSystem.AccessControl (8.9%) @danmosemsft created #14352 to increase unit tests. I added some tests with issue #15375 and a pull request. I have added some more tests that increase coverage to 8.7% Please assign me to this issue so that I can create another pull request. Thanks, Michael +15809 area-System.Xml Delete desktop BinaryCompatibility settings from System.Private.Xml https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Core/BinaryCompatibility.cs This code does private reflection against desktop mscorlib and read full framework registry keys; none of which works well for .NET Core. We should either delete it (preferred); or replace it with .NET Core compatible quirk if it is important to keep it. As side-effect, this will also get rid of dependency on System.Private.Xml on Microsoft.Win32.Registry. +15814 area-Infrastructure Issues with build -tests and build-tests I don't have a unix box handy right now, but it looks like it needs updates eg it looks for folders named 'netcoreapp1.1' I did the .cmd -- https://github.com/dotnet/corefx/pull/15811 +15815 area-System.IO Improve code coverage for System.IO.FileSystem.AccessControl from 2.3% to 8.7% Pull request for issue #15808 added tests for gets and sets that do not throw exceptions +15817 area-Meta Code coverage report does not match tests "I'm working on System.Configuration code coverage #15554 and a little bit stuck with coverage report. **Problem description** There is a test, that covers exception catch and throw in method, but both local and CI code coverage reports show, that the lines of method code are not covered. **Details** [Test for System.Configuration.TypeUtil](https://github.com/dotnet/corefx/blob/a8dce7c1c905e994c9519e0f26b0497832942a10/src/System.Configuration.ConfigurationManager/tests/System/Configuration/TypeUtilTests.cs#L48) [TypeUtil line, that works for test](https://github.com/dotnet/corefx/blob/a8dce7c1c905e994c9519e0f26b0497832942a10/src/System.Configuration.ConfigurationManager/src/System/Configuration/TypeUtil.cs#L115) [Code Coverage Report](https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/), navigate to `System.Configuration.TypeUtil`, click `GetType(System.String,System.Boolean)` method to see code coverage. I've checked that this line is reached by changing exception to `ArgumentException(""hahaha"")` in method and test, but the report still shows no coverage. Test works fine. ![image](https://cloud.githubusercontent.com/assets/936356/22625428/a0ee9eb0-eba7-11e6-8f72-9edf02419b4a.png) ![image](https://cloud.githubusercontent.com/assets/936356/22625516/3cbbbdd0-ebaa-11e6-9f0b-7ce20768ef18.png) cc @karelz @JeremyKuhne @danmosemsft @dhoehna " +15818 area-System.Memory Span: Add BinarySearch(...) extension methods for ReadOnlySpan (and Span) Currently, there is no way to binary search in sorted native or fixed memory (e.g. coming from a pointer) in .NET, this proposal intends to fix that by adding binary search extension methods to `ReadOnlySpan` (and currently also `Span` due to type inference issues), but also proposes some different overloads than seen on `Array` to allow for inlined comparisons via the possibility to use value type comparables and comparers. ### Proposed API Add a set of `BinarySearch` extension methods for `ReadOnlySpan` and `Span` in `SpanExtensions`: ```csharp public static class SpanExtensions { // Convenience overload public static int BinarySearch( this ReadOnlySpan span, IComparable comparable) { return BinarySearch>(span, comparable); } public static int BinarySearch( this ReadOnlySpan span, TComparable comparable) where TComparable : IComparable { throw null; } public static int BinarySearch( this ReadOnlySpan span, T value, TComparer comparer) where TComparer : IComparer { throw null; } // NOTE: Due to the less-than-ideal generic type inference // in the face of implicit conversions, // we need the overloads taking Span. // These simply forward to ReadOnlySpanExtensions. // Convenience overload public static int BinarySearch( this Span span, IComparable comparable) { return BinarySearch>(span, comparable); } public static int BinarySearch( this Span span, TComparable comparable) where TComparable : IComparable { return BinarySearch((ReadOnlySpan)span, comparable); } public static int BinarySearch( this Span span, T value, TComparer comparer) where TComparer : IComparer { return BinarySearch((ReadOnlySpan)span, value, comparer); } } ``` ### Rationale and Usage Provide a safe yet fast way of binary searching of any type of contiguous memory; managed or unmanaged. ```csharp public static class UsageForInt { struct InlineableComparer : IComparer { [MethodImpl(MethodImplOptions.AggressiveInlining)] public int Compare(int a, int b) { if (a == b) { return 0; } if (a < b) { return -1; } return 1; } } struct InlineableComparable : IComparable { int m_value; public InlineableComparable(int value) { m_value = value; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public int CompareTo(int other) { if (m_value == other) { return 0; } if (m_value < other) { return -1; } return 1; } } public static void SpanBinarySearch() { var span = new Span(); //span.Sort(); int valueToFind = 42; // Direct value var index = span.BinarySearch(valueToFind); // Inlineable struct comparer var comparer = new InlineableComparer(); index = span.BinarySearch(valueToFind, comparer); // Inlineable struct comparable var comparable = new InlineableComparable(valueToFind); index = span.BinarySearch(comparable); } public static void ReadOnlySpanBinarySearch() { ReadOnlySpan span = new Span(); //span.Sort(); int valueToFind = 42; // Direct value var index = span.BinarySearch(valueToFind); // Inlineable struct comparer var comparer = new InlineableComparer(); index = span.BinarySearch(valueToFind, comparer); // Inlineable struct comparable var comparable = new InlineableComparable(valueToFind); index = span.BinarySearch(comparable); } } public static class UsageForCompound { struct Compound { public float FeatureValue; public int FeatureIndex; public object Payload; } struct InlineableFeatureValueComparer : IComparer { [MethodImpl(MethodImplOptions.AggressiveInlining)] public int Compare(Compound a, Compound b) { if (a.FeatureValue == b.FeatureValue) { return 0; } if (a.FeatureValue < b.FeatureValue) { return -1; } return 1; } } struct InlineableFeatureComparable : IComparable { readonly float m_featureValue; public InlineableFeatureComparable(float featureValue) { m_featureValue = featureValue; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public int CompareTo(Compound other) { if (m_featureValue == other.FeatureIndex) { return 0; } if (m_featureValue < other.FeatureIndex) { return -1; } return 1; } } public static void SpanBinarySearch() { var span = new Span(); //span.Sort(new InlineableFeatureValueComparer()); float featureValueToFind = 1.234f; // Inlineable struct comparer var comparer = new InlineableFeatureValueComparer(); // Less than ideal for compound, which is reason for comparable overload var compound = new Compound(){ FeatureValue = featureValueToFind }; var index = span.BinarySearch(compound, comparer); // Inlineable struct comparable (easier to use for compounded type) var comparable = new InlineableFeatureComparable(featureValueToFind); index = span.BinarySearch(comparable); } public static void ReadOnlySpanBinarySearch() { ReadOnlySpan span = new Span(); //span.Sort(new InlineableFeatureValueComparer()); float featureValueToFind = 1.234f; // Inlineable struct comparer var comparer = new InlineableFeatureValueComparer(); // Less than ideal for compound, which is reason for comparable overload var compound = new Compound(){ FeatureValue = featureValueToFind }; var index = span.BinarySearch(compound, comparer); // Inlineable struct comparable (easier to use for compounded type) var comparable = new InlineableFeatureComparable(featureValueToFind); index = span.BinarySearch(comparable); } } ``` The argumentation for adding this is: * To increase the efficiency of code doing binary searching and prevent people from reinventing the wheel. * Allow binary searching on contiguous memory of any kind. ### Open Questions An important question regarding this proposal is whether the pattern with generic parameter `TComparer` (e.g. constrained to `where TComparer : IComparer`) or `TComparable` (constrained to `where TComparable : IComparable`) is a pattern that can be approved. This pattern allows for inlineable comparables/comparers at the cost of increased code size, if no value type comparables/comparers are used, there should be no difference. This pattern is also used in the proposal for `Sort` in https://github.com/dotnet/corefx/issues/15329, that has been approved. Another open question is whether the overload taking `IComparable` is necessary. The API relies on being able to depend upon `System.Collections.Generic`, could this be an issue? @karelz @jkotas @KrzysztofCwalina @jamesqo ### Updates UPDATE 1: Add link to Sort and point on the pattern used. UPDATE 2: Add IComparable overloads for convenience as suggested by @jkotas UPDATE 3: Combine all extensions into `SpanExtensions`. ### Existing Sort APIs A non-exhaustive list of existing binary search APIs is given below for comparison. #### `Array.BinarySearch` Static Methods Found in [ref/System.Runtime.cs](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs) ```csharp public static int BinarySearch(System.Array array, int index, int length, object value) { throw null; } public static int BinarySearch(System.Array array, int index, int length, object value, System.Collections.IComparer comparer) { throw null; } public static int BinarySearch(System.Array array, object value) { throw null; } public static int BinarySearch(System.Array array, object value, System.Collections.IComparer comparer) { throw null; } public static int BinarySearch(T[] array, T value) { throw null; } public static int BinarySearch(T[] array, T value, System.Collections.Generic.IComparer comparer) { throw null; } public static int BinarySearch(T[] array, int index, int length, T value) { throw null; } public static int BinarySearch(T[] array, int index, int length, T value, System.Collections.Generic.IComparer comparer) { throw null; } ``` #### `List.BinarySearch` Member Methods Found in [ref/System.Collections.cs](https://github.com/dotnet/corefx/blob/master/src/System.Collections/ref/System.Collections.cs) ```csharp public partial class List : System.Collections.Generic.ICollection, System.Collections.Generic.IEnumerable, System.Collections.Generic.IList, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList { public int BinarySearch(T item) { throw null; } public int BinarySearch(T item, System.Collections.Generic.IComparer comparer) { throw null; } public int BinarySearch(int index, int count, T item, System.Collections.Generic.IComparer comparer) { throw null; } } ``` +15821 area-System.Linq Cleanup unecessary forwarding helpers in Expression +15823 area-System.Runtime XML API documentation not available for System.ValueTuple - Reference System.ValueTuple NuGet package (version 4.3.0) - Use APIs **EXPECTED**: API documentation shows up in intellisense **ACTUAL**: No API documentation shown It looks like this is an issue with the package authoring, next to `System.ValueTuple.dll`, it has a file named `.xml` instead of `System.ValueTuple.xml`. @weshaggard @ericstj @stephentoub +15825 area-System.Globalization Comparer.Default sort order different on Linux/OSX than Windows or Mono "Found this while investigating #15445 (**edit:** see https://github.com/dotnet/corefx/issues/15825#issuecomment-277564885 where it looks like `Comparer.Default` is the underlying culprit): ```csharp using System; using System.Linq; namespace ConsoleApp { class Program { static void Main(string[] args) { var keys = new string[] { ""M:System.UriBuilder.#ctor"", ""M:System.UriBuilder.#ctor(System.String)"", ""M:System.UriBuilder.#ctor(System.Uri)"", ""M:System.UriBuilder.#ctor(System.String,System.String)"", ""M:System.UriBuilder.#ctor(System.String,System.String,System.Int32)"", ""M:System.UriBuilder.#ctor(System.String,System.String,System.Int32,System.String)"", ""M:System.UriBuilder.#ctor(System.String,System.String,System.Int32,System.String,System.String)"" }; var items = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; var ordered = items.OrderBy(s => keys[s]).ToList(); Console.WriteLine(String.Join(Environment.NewLine, ordered)); } } } ``` This prints the following on OSX/Linux: ``` 0 6 5 4 3 1 2 ``` However, on Windows .NET Core or .NET Framework, as well as Mono on OSX/Linux it prints: ``` 0 1 3 4 5 6 2 ``` I suspected a difference due to culture/language, but forcing CurrentCulture to ""en-US"" didn't change the output. Maybe I'm not setting it correctly? --- ``` $ dotnet --info .NET Command Line Tools (2.0.0-alpha-004775) Product Information: Version: 2.0.0-alpha-004775 Commit SHA-1 hash: 796ebe1f1e Runtime Environment: OS Name: Mac OS X OS Version: 10.11 OS Platform: Darwin RID: osx.10.11-x64 Base Path: /usr/local/share/dotnet/sdk/2.0.0-alpha-004775/ ``` " +15826 area-System.Runtime Package downgrades occur when referencing System.ValueTuple from a .NET Core 1.0 project with a RuntimeIdentifier specified "- Create a new Console App (.NET Core) project (targeting .NET Core 1.0) - Add the following property to the .csproj file: `win7-x86` - Reference System.ValueTuple (version 4.3.0) ```xml Exe netcoreapp1.0 win7-x86 ``` - Run NuGet restore (e.g. `dotnet restore` from command line) **EXPECTED:** No warnings on restore **ACTUAL:** Lots of package downgrade warnings (57 of them to be specific), such as the following > 11:29:11.493 1>C:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004616\NuGet.targets(97,5): warning : Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1 \r [C:\Users\daplaist\Documents\Visual Studio 2017\Projects\ValueTupleTest\ValueTupleTest\ValueTupleTest.csproj] C:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004616\NuGet.targets(97,5): warning : ValueTupleTest (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0) -> NETStandard.Library (>= 1.6.0) -> System.Console (>= 4.0.0) -> runtime.win.System.Console (>= 4.3.0) -> System.IO.FileSystem.Primitives (>= 4.3.0) \r [C:\Users\daplaist\Documents\Visual Studio 2017\Projects\ValueTupleTest\ValueTupleTest\ValueTupleTest.csproj] C:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004616\NuGet.targets(97,5): warning : ValueTupleTest (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0) -> NETStandard.Library (>= 1.6.0) -> System.IO.FileSystem.Primitives (>= 4.0.1) [C:\Users\daplaist\Documents\Visual Studio 2017\Projects\ValueTupleTest\ValueTupleTest\ValueTupleTest.csproj] 11:29:11.493 1>C:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004616\NuGet.targets(97,5): warning : Detected package downgrade: System.Threading from 4.3.0 to 4.0.11 \r [C:\Users\daplaist\Documents\Visual Studio 2017\Projects\ValueTupleTest\ValueTupleTest\ValueTupleTest.csproj] C:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004616\NuGet.targets(97,5): warning : ValueTupleTest (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0) -> NETStandard.Library (>= 1.6.0) -> System.Console (>= 4.0.0) -> runtime.win.System.Console (>= 4.3.0) -> System.Threading (>= 4.3.0) \r [C:\Users\daplaist\Documents\Visual Studio 2017\Projects\ValueTupleTest\ValueTupleTest\ValueTupleTest.csproj] C:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004616\NuGet.targets(97,5): warning : ValueTupleTest (>= 1.0.0) -> Microsoft.NETCore.App (>= 1.1.0) -> NETStandard.Library (>= 1.6.0) -> System.Threading (>= 4.0.11) [C:\Users\daplaist\Documents\Visual Studio 2017\Projects\ValueTupleTest\ValueTupleTest\ValueTupleTest.csproj] Note that due to https://github.com/dotnet/roslyn-project-system/issues/1474, if you don't specify the `RuntimeIdentifier` for the project, you will see the warnings in Visual Studio but not when you do a command-line restore. It seems like this may be happening due to the combination of NuGet's ""nearest wins"" version selection logic and the way the rid-specific implementation packages (such as `runtime.win.System.Console`) are brought in. Possible solutions might include: - Changing NuGet's version resolution (probably not feasible at this point) - Updating the System.ValueTuple packages dependencies @ericstj @weshaggard @rrelyea @emgarten" +15829 area-Infrastructure Code Coverage docs are outdated I'm trying to extract the coverage report for List class, but I couldn't follow the steps in https://github.com/dotnet/corefx/blob/master/Documentation/building/code-coverage.md#user-content-code-coverage-with-mscorlib-code Some paths doesn't exist anymore and I'm not sure if the steps are still the same after https://github.com/dotnet/corefx/issues/15135 (Announcement: Engineering changes for corefx) Thanks +15830 area-System.Numerics The new System.MathF APIs should have wrappers created so they are available on .NETStandard The new System.MathF APIs (#1151) where implemented in dotnet/coreclr#5492. However, they are currently only available in `netcoreapp1.1` base applications. Until they make their way back into the Desktop framework, I propose that simple wrapper implementations be provided so the APIs are accessible in .NETStandard based libraries. The wrapper function should just call the corresponding `System.Math` API and cast the result back to `System.Single`. For example, `System.Acos(float)` would be implemented as: ```C# namespace System { public static class MathF { public static float Acos(float value) { return (float)Math.Acos(value); } } } ``` +15833 area-System.Security "There is no test result generated under ""System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromRawSecurityDescriptorTestC.../TestCreateFromRawSecurityDescriptor""" On build 20170204.01, under test: System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromRawSecurityDescriptorTestC.../TestCreateFromRawSecurityDescriptor There isn't the test result generated. Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170204.01/workItem/System.Security.AccessControl.Tests/analysis/xunit/System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromRawSecurityDescriptorTestC...~2FTestCreateFromRawSecurityDescriptor +15835 area-System.Numerics Improvements to Complex trig and hyperbolic trig functions This is a series of relatively minor improvements to the complex trig functions and complex hyperbolic trig functions. Sin and Cos perf is improved by only making one call to Math.Exp to compute the required real hyperbolic trig functions. (Hopefully the JIT compiler is smart enough to make a single FPU call for the required real sin and cos, but that's not something I can force. It would be nice if there were a Math.SinAndCos method that explicitly forced this.) Tan perf is similiarly improved, and, more importantly, modified to correctly handle the large region (all |z.Im| larger than about 710) for which Sin and Cos overflow but Tan doesn't. Sinh, Cosh, and Tanh are modified to call Sin, Cos, and Tan, so that all current and future improvements to the complex trig functions automatically feed into the complex hyperbolic trig functions. Several test cases for Tan and Tanh involving large arguments needed to be changed. Some of the previous test assertions were simply assertions of the previous bad behavior, e.g. demanding NaN for Tanh(big real) instead of 1. These have been changed to assert the new, mathematically correct behavior. Some of the previous test assertions are inappropriate given the bad behavior of the .NET real trig functions, e.g. demanding Tan(x + 0.0 i) = Math.Sin(x) / Math.Cos(x) for big x, even though Math.Sin(x) and Math.Cos(x) return incorrect values for big x. I have simply removed these tests. I have added attributes to skip all the changed tests for NetFx; there are still many shared test assertions for not-big arguments that are satisfied by both new and old code. (The fix for Asin and Acos come next. I wanted to get these simple fixes for the basic trig functions in before submitting a complicated one for the inverse trig functions.) +15837 area-System.Collections "Test: System.Collections.Concurrent.Tests.ConcurrentQueueTests/ManyConcurrentAddsTakes_CollectionRemainsConsistent(seconds: 1) failed with ""System.OutOfMemoryException""" Opened on behalf of @Jiayili1 The test `System.Collections.Concurrent.Tests.ConcurrentQueueTests/ManyConcurrentAddsTakes_CollectionRemainsConsistent(seconds: 1)` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.Object.MemberwiseClone() at System.Collections.Generic.HashSet`1.CopyFrom(HashSet`1 source) at System.Collections.Generic.HashSet`1..ctor(IEnumerable`1 collection, IEqualityComparer`1 comparer) at System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests.ManyConcurrentAddsTakes_CollectionRemainsConsistent(Double seconds) Build : Master - 20170204.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170204.01/workItem/System.Collections.Concurrent.Tests/analysis/xunit/System.Collections.Concurrent.Tests.ConcurrentQueueTests~2FManyConcurrentAddsTakes_CollectionRemainsConsistent(seconds:%201) +15839 area-System.Security AV running System.Net.Http.Functional.Tests https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows_prtest/17/consoleText ``` Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at Internal.Cryptography.Pal.ChainPal.MapRevocationFlags(X509RevocationMode revocationMode, X509RevocationFlag revocationFlag) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in D:\j\workspace\code_coverage---d5838fef\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\ChainPal.BuildChain.cs:line 71 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in D:\j\workspace\code_coverage---d5838fef\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Chain.cs:line 118 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) in D:\j\workspace\code_coverage---d5838fef\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Chain.cs:line 105 at System.Net.Http.WinHttpCertificateHelper.BuildChain(X509Certificate2 certificate, String hostName, Boolean checkCertificateRevocationList, X509Chain& chain, SslPolicyErrors& sslPolicyErrors) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpCertificateHelper.cs:line 31 at System.Net.Http.WinHttpRequestCallback.OnRequestSendingRequest(WinHttpRequestState state) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 272 at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 94 at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 47 ``` +15842 area-System.Security 'dotnet new' command throws error on OS X 10.9.5 Moved from https://github.com/dotnet/cli/issues/5588 on behalf of @ebetron ----- ## Steps to reproduce Follow the install instructions for .NET Core for Mac OS X on https://www.microsoft.com/net/core#macos ## Expected behavior A new .NET project created ## Actual behavior $ mkdir -p /usr/local/lib $ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/ ln: /usr/local/lib//libcrypto.1.0.0.dylib: File exists $ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/ ln: /usr/local/lib//libssl.1.0.0.dylib: File exists $ dotnet new Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point named 'CCRandomGenerateBytes' in DLL '/usr/lib/system/libcommonCrypto'. at Interop.CommonCrypto.CCRandomGenerateBytes(Byte* bytes, Int32 byteCount) at System.IO.Path.GetCryptoRandomBytesApple(Byte* bytes, Int32 byteCount) at System.IO.Path.GetCryptoRandomBytes(Byte* bytes, Int32 byteCount) at System.IO.Path.GetRandomFileName() at Microsoft.DotNet.InternalAbstractions.TemporaryDirectory..ctor() at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateTemporaryDirectory() at Microsoft.DotNet.Configurer.NuGetPackagesArchiver..ctor() at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(INuGetCacheSentinel nugetCacheSentinel) at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient) at Microsoft.DotNet.Cli.Program.Main(String[] args) Abort trap: 6 ## Environment data .NET Command Line Tools (1.0.0-preview2-1-003177) Product Information: Version: 1.0.0-preview2-1-003177 Commit SHA-1 hash: a2df9c2576 Runtime Environment: OS Name: Mac OS X OS Version: 10.9 OS Platform: Darwin RID: osx.10.11-x64 +15844 area-System.Diagnostics "Ubuntu 16.04 outerloop debug - System.Diagnostics.Tests.ProcessWaitingTests.WaitChain failed with ""Xunit.Sdk.EqualException""" Failed test: System.Diagnostics.Tests.ProcessWaitingTests.WaitChain Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.04_debug/92/consoleText Message: ~~~ System.Diagnostics.Tests.ProcessWaitingTests.WaitChain [FAIL] Assert.Equal() Failure Expected: 42 Actual: 145 ~~~ Stack Trace: ~~~ /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Diagnostics.Process/tests/ProcessWaitingTests.cs(190,0): at System.Diagnostics.Tests.ProcessWaitingTests.WaitChain() ~~~ Configuration: OuterLoop_Ubuntu16.04_debug (build#92) +15845 area-Infrastructure At what point is tools/testdotnetcli supposed to be populated "As a newcomer to the project, I am failing to get tests to build or run, because of failures to find dotnet.exe in tools/testdotnetcli. (The directory doesn't exist at all) `build.cmd` seems to run fine, but there is no ""testdotnetcli"" directory created in tools. I am unclear what by process this directory is supposed to be built - `build-tests.cmd` seems to get off to a good start and does a load of compiling, but after a minute or so starts to fail with errors about tools/testdotnetcli missing. To give me a clue about where to start to dig into this, could anyone point me to where testdotnetcli should be created (is it in build or in build-test, for example)? There are umpteen references to ""testdotnetcli"" in issues here, but it mostly seems to in log outputs, and I can't find anything describing my problem. At the point that build-tests starts to fail, its output looks like: ``` System.Xml.RW.NameTable.Tests -> N:\will\corefx\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.NameTable.Tests\netcoreapp\ System.Xml.RW.NameTable.Tests.dll System.Xml.RW.SubtreeReader.Tests -> N:\will\corefx\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.SubtreeReader.Tests\net coreapp\System.Xml.RW.SubtreeReader.Tests.dll System.Xml.RW.WrappedReader.Tests -> N:\will\corefx\bin\Windows_NT.AnyCPU.Debug\System.Xml.RW.WrappedReader.Tests\net coreapp\System.Xml.RW.WrappedReader.Tests.dll Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Executing in N:\will\corefx\bin\AnyOS.AnyCPU.Debug\Microsoft.VisualBasic.Tests\netstandard\ Running tests... Start time: 8:40:29.07 Command(s): call N:\will\corefx\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe Microsoft.VisualBasic.Tests.dll -xml te stResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait c ategory=failing -notrait category=nonwindowstests The system cannot find the path specified. Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Finished running tests. End time= 8:40:29.08, Exit code = 1 Executing in N:\will\corefx\bin\AnyOS.AnyCPU.Debug\Microsoft.CSharp.Tests\netstandard\ Executing in N:\will\corefx\bin\AnyOS.AnyCPU.Debug\System.AppContext.Tests\netstandard\ Running tests... Start time: 8:40:29.07 Command(s): Executing in N:\will\corefx\bin\AnyOS.AnyCPU.Debug\Microsoft.Win32.Primitives.Tests\netstandard\ Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Running tests... Start time: 8:40:29.09 Executing in N:\will\corefx\bin\Windows_NT.AnyCPU.Debug\Common.Tests\netstandard\ call N:\will\corefx\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe System.AppContext.Tests.dll -xml testRe sults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait categ ory=failing -notrait category=nonwindowstests Running tests... Start time: 8:40:29.09 Command(s): The system cannot find the path specified. call N:\will\corefx\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe Common.Tests.dll -xml testResults.xml - notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests Finished running tests. End time= 8:40:29.08, Exit code = 1 Command(s): The system cannot find the path specified. Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Finished running tests. End time= 8:40:29.09, Exit code = 1 call N:\will\corefx\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe Microsoft.CSharp.Tests.dll -xml testRes ults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait catego ry=failing -notrait category=nonwindowstests Running tests... Start time: 8:40:29.08 Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. The system cannot find the path specified. Executing in N:\will\corefx\bin\AnyOS.AnyCPU.Debug\System.Buffers.Tests\netstandard\ Running tests... Start time: 8:40:29.10 Command(s): N:\will\corefx\Tools\tests.targets(210,5): warning MSB3073: The command ""N:\will\corefx\bin/AnyOS.AnyCPU.Debug/System.A ppContext.Tests/netstandard//RunTests.cmd N:\will\corefx\Tools/testdotnetcli"" exited with code 1. [N:\will\corefx\src\S ystem.AppContext\tests\System.AppContext.Tests.csproj] Using N:\will\corefx\Tools\testdotnetcli as the test runtime folder. Finished running tests. End time= 8:40:29.10, Exit code = 1 call N:\will\corefx\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe System.Buffers.Tests.dll -xml testResul ts.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category ``` " +15847 area-Infrastructure Workflow on an individual library broken "If I make a change to src (e.g. src\System.Collections.Concurrent\src) and do ""msbuild /t:rebuild"", then switch to the tests and try to re-compile/run them with ""msbuild /t:rebuildandtest"", I get an error like: ``` Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'System.Console, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Ref erence assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ---> System.BadIma geFormatException: Cannot load a reference assembly for execution. ``` The only way I've found to recover is to do a full build.cmd/build-tests.cmd from the root. cc: @weshaggard" +15849 area-Infrastructure #if netstandard17 check in System.Collection.Tests are not being run Steps to reproduce: - `build.cmd` - `build-tests.cmd` - `cd src/System.Collections/tests` - `msbuild /T:BuildAndTest` E.g. change a test here (https://github.com/dotnet/corefx/blob/1d4d1d8b00f09a8198a4e402ad91b48a85a59036/src/System.Collections/tests/BitArray/BitArray_CtorTests.cs#L227) to: ```c# [Fact] public static void Clone_LongLength_Works() { BitArray bitArray = new BitArray(int.MaxValue - 30); BitArray clone = (BitArray)bitArray.Clone(); Assert.Equal(bitArray.Length, clone.Length); throw new InvalidOperationException(); } ``` I'd expect an IOE to be thrown, menaing the test ran, but it didn't. Also, in CI coverage, branches aren't getting hit that these tests do. Might be related to recent dev/eng changes +15850 area-Infrastructure Code coverage not updating after modifying source files Steps to reproduce: - `build.cmd` / `build-tests.cmd` - Open a source project and modify a source file - `build.cmd` - Navigate to the corresponding test project and run `msbuild /T:BuildAndTest /P:Coverage=true` Observe that the underlying source file has changed, but the coverage hasn't. See this screenshot ![repro](https://cloud.githubusercontent.com/assets/1275900/22647655/5e3251bc-eca5-11e6-9f86-c31e99107847.png) This makes it pretty hard to add coverage targeted tests +15852 area-System.Linq S.L.Expressions fails to compile constants of type TypeBuilder "The compiler incorrectly assumes that such objects can always be used with `ldtoken` (`t is TypeBuilder` is part of the test for this), resulting in an `ArgumentException` with a message of ""Type must be a runtime Type object."" on `Compile(false)`." +15854 area-System.Linq Don't assume TypeBuilder types can be emitted as tokens. Fixes #15852 +15855 area-System.Linq Remove castclass when emitting some S.L.Expressions expressions. Cases where the `O` value on stack is guaranteed to be derived from or implement the required type. `castclass` therefore doesn't serve as a check, throwing `InvalidCastException` when needed, as it never is, and might still be jitted. +15857 area-System.Collections Add some SortedSet tests - ISet template for the heavily customized TreeSubSet. - Min/Max for an empty set - `RemoveWhere(null)` I'm going to add some specific tests for TreeSubSet when I get the time, and this PR is probably big enough as it is +15865 area-System.Net HttpClient decodes encoded Url? "I'm trying to figure out some inconsistencies in how `HttpClient` handles URLs. I have the following test code: ```C# public async Task TestHttpClient() { var baseUrl = ""https://api.twitter.com/1.1/search/tweets.json""; //var query = ""(cafe OR boulangerie)""; var query = ""(café OR boulangerie)""; var url = baseUrl + $""?q={Uri.EscapeDataString(query)}""; var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); await response.Content.ReadAsStringAsync(); } ``` The code won't actually work, since we need authentication and other stuff for Twitter searches. But it demonstrates my problem. The variable `url` will have the following value: `https://api.twitter.com/1.1/search/tweets.json?q=%28caf%C3%A9%20OR%20boulangerie%29` However, looking at the request in Fiddler, I can see that what is actually sent is: `https://api.twitter.com/1.1/search/tweets.json?q=(caf%C3%A9%20OR%20boulangerie)` So all of a sudden, the parentheses are no longer encoded. This matters in my case, because I use the encoded query string to calculate a signature that I use to authenticate against twitter. So my signature will have percent encoded parentheses and the request won't, so Twitter throws an error and tells me the authentication fails. What is interesting is that if I send the query with a regular e instead of é then the parentheses are encoded in the request! Like this: `https://api.twitter.com/1.1/search/tweets.json?q=%28cafe%20OR%20boulangerie%29` I suppose this is some kind of bug with `HttpClient`? Can I work around this somehow?" +15866 area-Infrastructure Prepare uap package cc: @weshaggard @ericstj These changes will move packaging assets to `bin\$(TargetGroup)\pkg` into `bin\pkg\$(TargetGroup)`. It will also mark all of the applicable libraries as UAP and will deploy them to be ready for packaging. Both folders have closure complete except for `System.IO.IsolatedStorage` +15867 area-System.IO Migration of some additional legacy port tests This is not so much a real request for a pull as it is a request for a very basic review of my first PR to this project. I'd be grateful if, in particular, @JeremyKuhne and @karelz could have a look and let me know if I'm completely on the wrong track here before I do dozens more files like this. There are some clear issues emerging already: * There are subtle differences about the way USB serial port adaptors buffer data and handle handshaking which will probably require some test modification to pass - I've got one 'skip' in there at the moment because of this. * The legacy tests were all run in a `return bool` style, which allowed the test function a chance to robustly close ports before returning, which is vital if one test failure isn't going to bleed all over all the other tests. Obviously XUnit throws itself out of the middle of a test, which means that I have had to add a lot of `try / finally` blocks to contain that throw while maintaining a similar code layout to the existing code. In fact, almost every test is going to require the same sort of boilerplate which is rather unattractive. Another approach would be to hoist the ownership of the various `SerialPort` objects out of the test methods into the test class, and then do some defensive clean-up in the `[Teardown]` methods (or whatever the XUnit equivalent is). Or there's probably some `IDisposable` wrapper pattern which would be cleaner - I'm not 100% clear why the disposability of SerialPort isn't exploited here - maybe we should just have all `SerialPort` objects in `using` blocks? Any preferences here? Tagging #15752 +15868 area-Infrastructure Remove SUSE 13.2 build Change PB_ arguments so helix build will turn on for 42.1. In making the change I realized that the approach being removed for SUSE 42.1 here could be used to leave on the build sans tests for 13.2 if desired; I can update the PR if that's useful. @chcosta @weshaggard +15870 area-System.Security System.Security.Cryptography.Native not linking against correct OpenSSL As per the directions for building CoreFX from source, I have installed OpenSSL (version 1.0.2k) through Homebrew, and manually symlinked `libcrypto.1.0.0.dylib`, `libssl.1.0.0.dylib`, and the pkgconfig files for those two libraries into `/usr/local`. However, when I go to build corefx, I get a linker error. Investigation reveals that the compiler is trying to link against _the outdated 0.9.8 versions in `/usr/lib`_, despite the more up-to-date copies being present in `/usr/local/lib`, and my manually specifying `-DOPENSSL_ROOT_DIR` when I call `build-native.sh`. Can anyone point me to what might be going wrong? Thanks! +15871 area-System.Net HttpClient with Client Certificate on CentOS 7 "HttpClient does not seem to work with a client certificate on linux (CentOS 7). Using dotnet 1.1 with System.Net.Http 4.3.0 in a console app and asp.net site. ```c# var handler = new HttpClientHandler() { ClientCertificateOptions = ClientCertificateOption.Manual }; handler.ClientCertificates.Add(settings.ClientCertificate); var httpClient = new HttpClient(handler); var responseMsg = await httpClient.SendAsync(requestMsg); ``` It works fine on Windows 8.1/10 but fails on CentOS 7 with the following error... ` Exception: System.PlatformNotSupportedException: The libcurl library in use (7.29.0) and its SSL backend (""NSS/3.19.1 Basic ECC"") do not support custom handling of certificates. A libcurl built with OpenSSL is required. ` I tried using libcurl-openssl, http://linuxsoft.cern.ch/cern/centos/7/cern/x86_64/repoview/libcurl-openssl.html, and exporting LD_LIBRARY_PATH as well and get the following error ` Exception: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL peer certificate or SSH remote key was not OK `" +15873 area-Serialization Build System.Private.DataContractSerialization on uapaot The fix is to get System.Private.DataContractSerialization to have a uapaot build. +15875 area-Meta Android - Fall back to mkstemp if mkstemps is not available `mkstemps` is not available on Android, but `mkstemp` is as an alternative. This PR updates the build files to check for the existence of both `mkstemps` and `mkstemp`, and falls back to `mkstemp` if it is not available. +15877 area-Meta Android: Fall back to futimens if futimes is not available On Android, `futimes`, which is not a Posix function, is not available but `futimens` is. This PR updates the `System.Native` build process to fall back to `futimens` if `futimes` is not available. +15878 area-Meta Android - Fall back to uname if getdomainname is not available On Android, `getdomainname` is not available, but `uname` can be used to get the domain name of the current device. This PR updates the build system so that it polls for the existence of both functions and and falls back to `uname` if `getdomainname` is not available. +15879 area-Meta Remove versioned configuration from test projects The changes onclude some other minor clean up in the test project files +15881 area-Meta Android - Support unsigned ipv6mr_interface, bind() arguments On Android, `ipv6mr_interface` is a signed int, as well as the `address_len` argument to `bind`. That causes the compilation of `System.Native` to fail because implicit conversions from unsigned int to signed int are not allowed. This PR updates the configure scripts so that they detect whether these values should be signed or unsigned, and chooses the right values at compile time. +15882 area-Infrastructure Add cmake files which support cross-compiling for Android arm64 This PR adds CMake files in cross/android/arm64 which allow you to cross-compile for arm64 Android from Linux, given that you have an Android RootFS installed (a separate PR is coming for that). +15883 area-Meta Android - Add script to create an Android RootFS This PR adds a script which generates a RootFS from which CoreFX can be cross-compiled for Android. It: - Downloads the Android NDK (Native Development Kit) - Generates an Android toolchain and sysroot folder which can be used for cross-compiling - Downloads the required dependencies (openssl, curl, krb5) from Termux, a kind of package manager for Android. ([A PR is open for krb5](https://github.com/termux/termux-packages/pull/588), so I've compiled it myself at the moment) From this, you can cross-compile CoreFX for Android. +15884 area-Infrastructure Resurrect CoreFX Validation on Nano Needs to be enabled, at minimum, in CI. For completeness (as we do for supported platforms), it needs to be enabled in Helix as well. +15885 area-Meta Marking code as unchecked (pt 2) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +15886 area-System.Runtime Add Interop Attributes removed from CoreCLR @jkotas @tijoytom +15887 area-System.Net Make socket tests more reliable under Unix There are several Sockets tests that regularly fail in Unix because the test listens to a specific socket:port that is expected to not have a server, however due to other tests that are running, there is a small chance another test created a server with that specific port, causing the test to fail. In Unix, ports are random while in Windows ports are incremental, thus the issues don't occur in Windows because by the time the ports roll around, the tests will be done. The odds of a port collision causing a Unix failure in a test run is small: say ~1:1,000 test runs fail due to this, but spread across all versions of Unix that are running tests it becomes more common. The proposed fix is to retry once when running under Unix; other options considered were to remove the tests or loop perhaps 3 times (instead of retrying once). This will change the odds to ~1:1,000,000 or so. A recent test failure: ```` System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: (No exception was thrown) http://jdash.azurewebsites.net/builds/test?name=System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails&viewName=dotnet_corefx&pr=False&limit=1000&startDate=2017-02-04 ```` cc @ianhays cc @Priya91 cc @davidsh cc @ericeil In reference to issue #14519 +15891 area-System.IO Test issue: System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared crashes The cross-process memory-mapped file test below consistently crashes on my machine on Windows 10 Pro even on first build of a freshly cloned repo. Command line: ``` R:\corefx_ref\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe System.IO.MemoryMappedFiles.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests ``` Test output: ``` Exception from RemoteExecutorConsoleApp(System.IO.MemoryMappedFiles.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.IO.MemoryMappedFiles.Tests.CrossProcessTests, DataShared_OtherProcess, C:\Users\Dennis, Dietrich\AppData\Local\Temp\CrossProcessTests_xbfm5c1q.o5d\DataShared_16): Assembly: System.IO.MemoryMappedFiles.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: System.IO.MemoryMappedFiles.Tests.CrossProcessTests Method: Int32 DataShared_OtherProcess(System.String) Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch. at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RemoteExecutorConsoleApp.Program.Main(String[] args) in R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 48 Unhandled Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch. at RemoteExecutorConsoleApp.Program.Main(String[] args) in R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 60 System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared [FAIL] Assert.Equal() Failure Expected: 42 Actual: -532462766 Stack Trace: R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(167,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() R:\corefx_ref\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CrossProcess.cs(30,0): at System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared() ``` +15892 area-Serialization "Change ""#if NET_NATIVE"" to ""#if uapaot"" in S.P.DataContractSerialization " We need make changes to the following compilation directives, 1. Remove USE_REFEMIT as we do not use it. 2. Change NET_NATIVE to uapaot +15897 area-Meta Couple of tests should be [Theory] not [Fact] "Run tests by whatever means, then look in the log xml: ``` ```" +15900 area-Infrastructure [ARM/CI] ARM CI script for arm and armel ARM CI for arm and armel. This CI script tests followings for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. 1. Construct RootFS for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. 2. Cross build corefx using RootFS for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. Release and Debug build are available. 3. Above tasks are performed inside Docker image. Related issues: https://github.com/dotnet/coreclr/issues/9273 https://github.com/dotnet/core-setup/issues/790 +15903 area-System.Linq Lighter compilation of <= and >= in S.L.Expressions Currently `<=` is compiled as the equivalent of `x <= y ? true : false` with a branch. Compile as `!(x > y)`, avoiding the branch. +15904 area-System.Linq Don't cast S.L.Expression arithmetic results to type they already fit For types smaller than 32 bit the 32-bit results of arithmetic operations are converted to ensure they fit that smaller size, with checks if appropriate. Several operations cannot produce a result that does not already fit (most obviously `x & y` can never overflow the size of `x` and `y`). `EmitUnaryOperator` already skips the conversion in some cases. Skip more there and skip some in `EmitBinaryOperator`. +15907 area-System.Linq Don't short-circuit null-checks in lifted binary ops S.L.Expressions compiles a lifted operator where both operands are nullable as `x.HasValue && y.HasValue ? x op y : null` Roslyn compiles the same operator without the short-circuiting, avoiding a branch: `x.HasValue & y.HasValue ? x op y : null` Make Expressions follow the same non-short-circuiting approach. +15913 area-System.Numerics [x86 Release] AccessViolationException in System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateScaleCenterTest1 **Commit** b9e51257e5409f77af2cb3d2566593e97eefba7a **Repro** build -Release -os:Windows_NT -buildArch:x86 build-tests -Release -os:Windows_NT -buildArch:x86 **Output**
xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Numerics.Vectors.Tests Discovered: System.Numerics.Vectors.Tests Starting: System.Numerics.Vectors.Tests System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateScaleCenterTest1 [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__0() at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.b__45_0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestInvoker`1.RunAsync() at Xunit.Sdk.XunitTestRunner.InvokeTestMethodAsync(ExceptionAggregator aggregator) at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) at Xunit.Sdk.TestRunner`1.<>c__DisplayClass43_0.b__0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestRunner`1.d__43.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestRunner`1.RunAsync() at Xunit.Sdk.XunitTestCaseRunner.RunTestAsync() at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCaseRunner`1.RunAsync() at Xunit.Sdk.XunitTestCase.RunAsync(IMessageSink diagnosticMessageSink, IMessageBus messageBus, Object[] constructorArguments, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource) at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunAsync() at Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(ITestMethod testMethod, IReflectionMethodInfo method, IEnumerable`1 testCases, Object[] constructorArguments) at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunAsync() at Xunit.Sdk.XunitTestCollectionRunner.RunTestClassAsync(ITestClass testClass, IReflectionTypeInfo class, IEnumerable`1 testCases) at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunAsync() at Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync(IMessageBus messageBus, ITestCollection testCollection, IEnumerable`1 testCases, CancellationTokenSource cancellationTokenSource) at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() at System.Threading.Tasks.Task.<>c.<.cctor>b__271_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at System.Threading.Tasks.SynchronizationContextTaskScheduler.PostCallback(Object obj) at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass11_0.b__0(Object _) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at lambda_method(Closure , Object , Object ) at Xunit.Sdk.ExecutionContextHelper.Run(Object context, Action`1 action) at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.Execute() at System.Threading.Tasks.Task.<>c.<.cctor>b__271_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) at System.Threading.Tasks.ThreadPoolTaskScheduler.LongRunningThreadWork(Object obj) at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart(Object obj) Finished running tests. End time=10:23:43.99, Exit code = 255
**Note** Details above say `System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateScaleCenterTest1` is failing, but in the full log `System.Numerics.Tests.Matrix4x4Tests.Matrix4x4CreateScaleCenterTest3` is failing as well. I'm guessing that's because in the full run something allows the test to continue past the first assertion. +15914 area-System.Memory Span extension methods vs instance methods This was brought up in the review of #15329. > We should discuss the extension method pattern for span holistically -- I don't think that this a good idea for our customers. It introduces a somewhat weird type (SpanHelpers) we no additional benefit. What is the reason these should be extension methods? +15916 area-Infrastructure Update code coverage docs Fixes https://github.com/dotnet/corefx/issues/15829 cc: @danmosemsft +15917 area-Infrastructure Update Reference and ProjectReference ordering in our targets. Switch the to using a common DefaultReference notion between targets and eliminated targetingpack.props. Moved the default references for tests into tests.targets. Fixed where we added Private to References because in some cases it wasn't happing because the target that set Private=true was run before all the references were added. This is why we are now setting Reference Private=false in a different target from ProjectReference Private=false because they sometimes need to happen at different times in the target execution. Set _FindDependencies=false to block RAR from trying to automatically add the closure of the primary references as it added automatic references that folks could accidently start depending on and we want to be explicit about our dependencies. This was really noticable once we started auto referencing the netstandard facade which caused everything to get pulled into the reference set. To fix the various build scenarios where we add ProjectReferences automatically we needed a common target to hook on which we now have AddProjectReferencesDynamically target that correctly hooks into the various dependency chains. See comment in targets file for more details. cc @ericstj @mellinoe @joperezr Fixes https://github.com/dotnet/corefx/issues/15847, https://github.com/dotnet/corefx/issues/15744 +15919 area-Infrastructure Add standard repo to auto-update scripts for corefx cc @dagood @eerhardt Adding support for https://github.com/dotnet/versions/pull/124#event-950852931 in corefx dependencies. +15921 area-System.Numerics Add hypot, expm1, log1p These are very standard methods used in numerical computing. ``` public static class Math { // Returns sqrt(x^2 + y^2) without overflow/underflow for large/small x, y double Hypot (double x, double y) // Returns e^x -1 without loss of accuracy for small x double Expm1 (double x) // Returns log(1+x) without loss of accuracy for small x double Log1p (double x) } ``` They appear, with exactly these names, in the Java Math class and Boost and GSL libraries, in many other mathematical libraries, and in many articles in the numerical computing literature. Naming: The names are somewhat cryptic. .NET coding guidelines would probably favor ExpMinusOne over Expm1, etc. On the other hand, the names are quite standardized. We would need to decide whether conforming to the expectations of advanced users or giving a better hint at meaning to less advanced users is more important. Location: The obvious place is System.Math, but: (i) this class is already quite a jumble, (ii) it mostly follows math.h of the C standard library, which does not contain these functions, and (iii) the presence of these functions might baffle naive users. One possibility would be to add a MoreMath or AdvancedMath static class in the System.Numerics namespace, which would also be a natural place for future advanced functions such as erf, Gamma, etc. Domain and Range: The only slightly non-trivial issue here is that Log1p is not defined for x < -1. We would need to decide whether to retutrn NaN or throw ArgumentOutOfRangeException. Implementation and Performance: Implementations are straightforward and well-established. Each can be executed over the entire range with a handfull of flops, making them about as fast as most other standard math functions. +15925 area-System.Net Detect Unix paths on Unix and Dos&Unc paths on Windows Fixes https://github.com/dotnet/corefx/issues/1745 \CC @stephentoub TODO: - [x] Equals test HashCode check https://github.com/dotnet/corefx/pull/15925/commits/4a7ce12fb744f324b8b6ebcf7e2eb6590f3c7b05 +15926 area-System.Net "Dns.GetHostEntry(""IPv6_string"") does not work anymore in Linux environment." "Now `IPHostEntry hostEntry = Dns.GetHostEntry(""IPv6_address"");` failed, and does not work anymore in Linux, while the same code works perfectly in Windows. ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace: /home/REDMOND/gelee/Projects/CoreFx/src/System.Net.NameResolution/src/System/Net/DNS.cs(178,0): at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6) /home/REDMOND/gelee/Projects/CoreFx/src/System.Net.NameResolution/src/System/Net/DNS.cs(470,0): at System.Net.Dns.GetHostEntry(String hostNameOrAddress) ``` @saurabh500 @corivera" +15927 area-System.Numerics Add mixed Complex/double arithmetic operators to Complex There are implicit casts from double -> Complex, so it's currently possible to write e.g. 2.5 * z for Complex z, but in addition to the cast, this costs 6 flops for a Complex * Complex multiply, while it's possible to implement a double * Complex multiply directly in 2 flops. For a single multiplication, a 4 flop additional cost is trivial. But in large operations on Complex matrices, where Complex arithmetic operations occur in rapid succession within tight O(N^3) loops, this can cut the overall time for a Complex matrix operation from 3 hours to 1 hour. The operations to implement are as follows: ```C# public struct Complex { // Mixed double/Complex multiplication 6 flops -> 2 flops public static Complex operator* (double a, Complex b) public static Complex operator* (Complex a, double b) // Complex / double division 9 flops -> 2 flops // This is the largest efficiency gain. public static Complex operator/ (Complex a, double b) // double / Complex division 9 flops -> 6 flops // This is the least worthwhile and could be skipped. public static Complex operator/ (double a, Complex b) // Mixed double/Complex addition 2 flops -> 1 flop public static Complex operator+ (double a, Complex b) public static Complex operator+ (Complex a, double b) // Mixed double/Complex subtraction 2 flops -> 1 flop public static Complex operator- (double a, Complex b) public static Complex operator- (Complex a, double b) // Also 7- 8 static helper methods Multiply, Divide, Add, Subtract public static Complex Add (double left, Complex right) public static Complex Add(Complex left, double right) public static Complex Subtract(double left, Complex right) public static Complex Subtract(Complex left, double right) public static Complex Multiply(double left, Complex right) public static Complex Multiply(Complex left, double right) public static Complex Divide(Complex left, double right) } ``` The implementations are straightforward, with the the exception of double / Complex, which faces the same cancellation and overflow issues as Complex / Complex. +15930 area-System.Net Test failure in System.Net.NameResolution.Tests.GetHostEntryTest.Dns_GetHostEntryAsync_NoneIPAddress_Fail and The test is currently disabled with label [ActiveIssue(10345)](https://github.com/dotnet/corefx/issues/10345), although the issue has been closed. If you enable the test, it would still fail on Linux. ``` System.Net.NameResolution.Tests.GetHostEntryTest.Dns_GetHostEntryAsync_NoneIPAddress_Fail(address: 255.255.255.255) [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: typeof(System.Net.Internals.SocketExceptionFactory+ExtendedSocketException): No such device or address Stack Trace: /home/sekho/Desktop/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs(422,0): at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) /home/sekho/Desktop/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs(561,0): at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) /home/sekho/Desktop/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs(641,0): at System.Net.Dns.<>c.b__26_1(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +15931 area-System.ComponentModel Test failures in System.ComponentModel.Tests.CultureInfoConverterTest.ConvertFrom_String and System.ComponentModel.Tests.CultureInfoConverterTest.ConvertFrom_String_InvalidCulture These tests are currently disabled with label [ActiveIssue(11611)](https://github.com/dotnet/corefx/issues/11611), although the issue has been closed. If you enable the tests, they would still fail on Linux. ``` System.ComponentModel.Tests.CultureInfoConverterTest.ConvertFrom_String [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: (No exception was thrown) Stack Trace: /home/sekho/Desktop/corefx/src/System.ComponentModel.TypeConverter/tests/CultureInfoConverterTests.cs(61,0): at System.ComponentModel.Tests.CultureInfoConverterTest.ConvertFrom_String() System.ComponentModel.Tests.CultureInfoConverterTest.ConvertFrom_String_InvalidCulture [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: (No exception was thrown) Stack Trace: /home/sekho/Desktop/corefx/src/System.ComponentModel.TypeConverter/tests/CultureInfoConverterTests.cs(81,0): at System.ComponentModel.Tests.CultureInfoConverterTest.ConvertFrom_String_InvalidCulture() Finished: System.ComponentModel.TypeConverter.Tests ``` +15932 area-Meta Review all PlatformSpecific tests to ensure test coverage In this PR, all PlatformSpecific tests have been reviewed to see if there are any irrelevant labels or if any OS-Specific bugs were overlooked. In cases where the test made sense only to specific platform(s), comments have been added. In cases where the test shouldn't have been OS-specific, they were re-enabled for that OS. Also, new issues have been filed for tests that are supposed to be fixed for a platform but are still disabled and failing on it: https://github.com/dotnet/corefx/issues/15930 https://github.com/dotnet/corefx/issues/15931 The goal for this was so we could easily find OS-specific bugs/failures in the future. @danmosemsft @AlexGhiondea +15933 area-Infrastructure Prevent compiling against runtime implementation libraries When building a project with a package reference to Microsoft.Private.CoreFx.NetCoreApp, the project was trying to compile against runtime implementation libraries. this is related to https://github.com/NuGet/Home/issues/4207. Prevent this behavior by placing a placeholder under ref. Also see https://github.com/dotnet/core-setup/pull/1029/files /cc @weshaggard @eerhardt @ericstj @ellismg +15935 area-Infrastructure Change test boot strapping Fixes https://github.com/dotnet/corefx/issues/15167 cc @karajas @mellinoe After this change all that should be needed is a call to build.cmd for your configuration and then you can go into any individual projects, including test projects, and successfully build and run them. +15936 area-Infrastructure Figure out how to use the runtime output directly as the test shared framework "Today we have a runtime output ""bin\runtime\netcoreapp-Windows_NT-Debug-x64"" and we have a runtime folder ""testhost\netcoreapp-Windows_NT-Debug-x64\shared\Microsoft.NETCore.App\9.9.9"" output so that we can run our tests as a shared application. The contents of those 2 directories are currently duplicated. We should figure out a way to hard-line the entire directory (not just the individual files) or a way to configure dotnet.exe such that we can tell it to use our runtime output path as the shared framework. cc @karajas @gkhanna79 do you know if there is any way to configure dotnet.exe to use a particular folder as the shared framework? If not do you think that is a feature request that might be doable? " +15937 area-Infrastructure Figure out a strategy for generating test shared framework deps file https://github.com/weshaggard/corefx/blob/c67cb8a80fe2449e59e023ed481e977ffe8ced8b/src/src.builds#L20 Today we build the deps json file as a post step to building all the src projects and we rely on having a previous deps.json file to generate the new one. Maintaining the deps.json is likely going to be error prone so ideally we would eliminate it completely but if we cannot we should at least look into generating it from scratch and having it be updated whenever we binplace something to the shared framework directory. cc @karajas @gkhanna79 Do we have any plans to enable a scenario where we can use a shared framework without requiring a deps.json file? +15938 area-Meta Marking code as unchecked (pt 3) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) NOTE: Commit contains only tests for System.Linq.Expressions +15941 area-System.Linq Simpler lifted comparison operation compilation in S.L.Expressions Split into separate methods for lifted and lifted-to-null comparisons, and simplify each. Lifted now does no branching, and with shorter IL. Lifted-to-null also shorter and also creates a null response through `initobj` instead of pushing a null and unboxing. These are close to what how the equivalent C# and VB respectively are compiled. +15942 area-System.Linq [Bug] Double-evaluation of selector in SelectMany I found out my changes from https://github.com/dotnet/corefx/pull/14675 introduced a double-evaluation of a selector in `SelectMany.ToArray`: https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/SelectMany.cs#L245 This will be fixed shortly in an upcoming PR, but I am opening a tracking issue just in case I forget or that PR gets closed. +15943 area-System.Linq Remove two iterators from Concat Was part of https://github.com/dotnet/corefx/pull/15389 but moved to another PR. Fixes https://github.com/dotnet/corefx/issues/15942 Changes: - Remove 2 iterators from `Concat` that specialize for ICollections. Instead of having different iterators, set a flag on the iterator if all inputs so far have been ICollections. This allows us to determine in constant time whether we can get the count cheaply and preallocate for ToArray/ToList. - This allows us to move the source enumerables into linked list nodes that are of uniform type, `ConcatNIterator`. Previously, we had to typecast every time we crossed a node. - Implement `GetCount` and `ToArray` in the derived classes rather than the base to avoid virtual calls and improve time complexity. - Avoid walking the linked list quadratically for `GetCount`, since we don't need to sum the counts in order. - Remove unnecessary virtual calls to `GetEnumerable` for 1 Concat followed by `ToArray`. - Make 1 Concat followed by `Count` cheap if the both of the concatees' counts can be gotten cheaply. - Add a `ReserveOrAdd` method to `SparseArrayBuilder` which either reserves space for the enumerable if its count can be predetermined, or eagerly adds it otherwise. This saves quite a few lines of code. **Performance tests:** [memory leak reduction](https://gist.github.com/jamesqo/c8ccc43c2e9a7b8bb35c6cc6bebeb9ec) / [regressions from this change](https://gist.github.com/jamesqo/bde594c796e2c07117f77e88239a2c40) Need to be updated. /cc @JonHanna @stephentoub @VSadov +15944 area-Infrastructure Android: Removed unused WITH_LLDB_* defines Synchronous toolchain.cmake for armel with CoreCLR and removed unused WITH_LLDB_* defines Related issue: https://github.com/dotnet/corefx/pull/15882, https://github.com/dotnet/coreclr/pull/9409 +15946 area-System.Linq Reuse more IL locals in S.L.Expressions Cache more `LocalBuilder`s after use, reducing the number of locals emitted in produced methods, and reducing allocations in creating them. Cache the `LocalBuilder`s in a `Stack` rather than a `Queue`, increasing chance of same local being used in quick succession, in turn increasing chance of same real storage location being used in quick succession. +15949 area-System.IO SerialPort in core doesn't support certain char encodings Posting this to allow us to ActiveIssue some encoding tests - we're failing on: * Custom encoding 1047 * System.Text.Encoding.GetEncoding(50220) (Japanese JIS) * System.Text.Encoding.GetEncoding(57006) (ISCIIAssemese) I'm not clear if this is a Core or a SerialPort limitation. +15952 area-System.Net Test cleanup for System.Net.Security Enabling and moving a bunch of disabled/outerlooped System.Net.Security tests to innerloop. I did extensive testing on Windows, RHEL, and Ubuntu machines and ensured the tests are stable (at least locally) and hit no errors. The next step is to re-enable them and watch to see if any of the failures resurface and disable them as needed. resolves #3144 - Removed TODO because Begin/End were added back in #8358 and the issue is closed resolves #7825 - Original issue from April 2016. Cannot repro today. Re-enabling to watch for future failures. resolves #11170 - Can't repro failures on multiple OSs. Re-enabling to watch for future failures. resolves #11345 - Outerloop tests are passing and stable for thousands of iterations. Tentatively moving to innerloop to watch for potential future failures. resolves #12107 - removed TODO because issue is closed resolves #9130 - duplicate issues failing because of an intermittent error (remote party closed transport stream) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #10909 - duplicate issues failing because of an intermittent error (remote party closed transport stream) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #11624 - duplicate issues failing because of an intermittent error (remote party closed transport stream) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #14177 - duplicate issues failing because of an intermittent error (remote party closed transport stream) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #14505 - duplicate issues failing because of an intermittent error (remote party closed transport stream) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #8744 - duplicate issues failing because of an intermittent error (credentials package not recognized) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #12683 - duplicate issues failing because of an intermittent error (credentials package not recognized) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #12706 - duplicate issues failing because of an intermittent error (credentials package not recognized) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. resolves #12728 - duplicate issues failing because of an intermittent error (credentials package not recognized) not exclusive to the test which occurs in Outerloop runs for other NetSecurity tests. Re-enabling them and leaving them in innerloop to get more data. @steveharter @Priya91 @davidsh +15954 area-Meta Create targeting pack for upcoming release of Full .NET +15955 area-Infrastructure Build system requirements are incorrectly documented I'm trying to build corefx on a non-developer machine (i.e. no VS, etc). I installed msbuild manually from a stand-alone package (nobody told me to, but it seemed sensible).anThen I copied the entire corefx tree to the machine and run build.cmd, and it says this: ``` Error: Visual Studio 2015 required. Please see https://github.com/dotnet/corefx/blob/master/Documentation/pro ject-docs/developer-guide.md for build instructions. ``` I'm sceptical that VS2015 is actually required (that's not the issue however), but I'm 100% sure that the document that which is referred to doesn't answer the question - it doesn't mention VS2015 at all, and only mentions VS in passing about debugging something. Personally I think these kind of newbie-only paper cuts are worth fixing. +15956 area-Meta Enable tests to compile with netstandard Most of the tests have netstandard configurations and it doesn't compile. the changes here is to fix the configurations and the tests to compile. This is important step to get netfx tests compile too as we are in most of the time netfx fallback to netstandard configuration The changes include some fixes to compile teh sources too. +15957 area-System.Numerics API Proposal: Widen, Narrow, and Convert for Vector "This is a concrete proposal of the ideas discussed in issue #1605. Converting data from one form to another is a necessary part of vector algorithms in many areas such as image processing, signal processing, text manipulation, and more. Current SIMD instruction sets expose a lot of functionality for quickly and efficiently converting large chunks of data, but the current interface of `Vector` does not have any support for it. Allowing access to these intrinsics could greatly speed up common algorithms involving data conversion. # Proposed additions All of the additions are on the static `Vector` class, and operate on parameters of type `Vector`. The additions are systematic and straightforward. `Widen` and `Narrow` are provided for type pairs that are half- or double-sized, and `Convert` is provided for same-sized integral-floating point type pairs. ```C# public static partial class Vector { public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static void Widen(Vector source, out Vector dest1, out Vector dest2); public static Vector Narrow(Vector source1, Vector source2); public static Vector Narrow(Vector source1, Vector source2); public static Vector Narrow(Vector source1, Vector source2); public static Vector Narrow(Vector source1, Vector source2); public static Vector Narrow(Vector source1, Vector source2); public static Vector Narrow(Vector source1, Vector source2); public static Vector Narrow(Vector source1, Vector source2); public static Vector ConvertToSingle(Vector value); public static Vector ConvertToSingle(Vector value); public static Vector ConvertToDouble(Vector value); public static Vector ConvertToDouble(Vector value); public static Vector ConvertToInt32(Vector value); public static Vector ConvertToUInt32(Vector value); public static Vector ConvertToInt64(Vector value); public static Vector ConvertToUInt64(Vector value); } ``` # Semantics The semantics are simple and uniform. I will use a representative set of methods to explain. ```C# Widen(Vector source, out Vector dest1, out Vector dest2) ``` An input `Vector` called `source` is given. When the method completes, `dest1` contains the lower half of elements in `source`, and `dest2` contains the upper half of elements in `source`. The elements are converted as if they were individually cast from `byte` to `ushort`. ```C# Vector Narrow(Vector source1, Vector source2) ``` Two input `Vector`'s are given. The method returns a single `Vector`. The return value's lower elements are the elements from `source1`, and the upper elements are from `source2`. The elements are converted as if they were individually cast from `ushort` to `byte`. ```C# Vector ConvertToSingle(Vector value) ``` A single `Vector` is given. The method returns a single `Vector` containing the input's elements. The elements are converted as if they were individually cast from `int` to `float`. # Rationale Currently, there is no way to efficiently convert elements residing in `Vector` to a different data type. Directly converting the vector's source data (in a serial manner) is the most efficient way, but that requires your algorithm to break out of ""vector mode"" just to do simple conversion operations. It is also many times slower than we could achieve with proper vector conversion support. Many common algorithms require conversions from one data type to another, so this is currently a large hole in the API. @sivarv @CarolEidt " +15959 area-Serialization Add several tests for XmlSerializer Supporting varied types in SOAP. #15356 @shmao @zhenlan @mconnew +15960 area-System.Reflection Existing reflection APIs should be able to invoke ref-returning methods and return a value "Related to: https://github.com/dotnet/roslyn/issues/8489 The scenario seems to be explicitly forbidden. Possibly due to ref returning methods not being common in the past. Note that this issue does not ask for a new API that would allow returning a `ref`. This is just about the existing APIs that returns the result as an object. It seems that they should work with ref returning methods by evaluating the target, reading the value indirectly and returning the value as object. ```C# object result1 = inst.RefReturningMethod(); // should be the same as object result2 = inst.GetType().InvokeMember(inst, . . ., ""RefReturningMethod"",. . .); ``` " +15961 area-System.IO SerialPort timeout tests are slow and flaky They don't play well with CI builds and take some time. We need to: 1. Pick some more generous thresholds for validation 2. Try to make tests faster where possible 3. Move the slowest tests to the outer loop #15752 +15962 area-System.IO Add signing to windows native build The clrcompression.dll built in the open isn't getting correctly signed because it is missing a requires_signing file adjacent to the dll. This commit adds a special-case to build that file when building sign.builds for the managed build since the native build never touches that code. +15964 area-Infrastructure Adding Microsoft.Private.CoreFx.UAP package build Build UAP flat package called `Microsoft.Private.CoreFx.UAP` cc: @weshaggard @danmosemsft @ericstj @jkotas +15965 area-System.IO Register code page provider to fix encoding tests Also remove custom Encoding test which is no longer applicable on Core Fixes #15949 +15966 area-System.Diagnostics Microsoft.Win32.Registry shouldn't be supported on uap Today we have Microsoft.Win32.Registry in the closure of uap because the implementation of System.Private.Xml and System.Diagnostics.Process depend on it. We should break those dependencies at least for UAP so that we can safely remove the uap Configuration for registry. To do: - [X] Remove Registry dependency from System.Private.XML (PR #15973) - [x] Remove Registry dependency from System.Diagnostics.Process cc: @Priya91 (for System.Diagnostics.Process) and @sepidehMS (for System.Private.Xml and Microsoft.Win32) +15967 area-System.Net Propagate exception for failing net.http test for better diagnosis. related to https://github.com/dotnet/corefx/issues/13938 thanks @stephentoub for the idea +15968 area-System.IO System.IO.IsolatedStorage shouldn't depend on AccessControl for UAP Today IsolatedStorage depends on two AccessControl libraries for netcoreapp and uap. While this is ok in netcoreapp, AccessControl isn't available on UAP so we should break that dependency and create a new uap specific configuration of IsolatedStorage that doesn't depend on them. cc: @JeremyKuhne +15970 area-System.Security Initial implementation of X509Certificates, HttpClient, and SslStream for macOS Broken by this change: * X509Store has no implementation yet on macOS. * Exporting as a PFX is not yet implemented on macOS. * A lot of TLS CipherSuites have no metadata defined. * macOS does not support version skipping in TLS. So `Tls | Tls12` is an invalid choice. In this change: General: * All OSStatus related exceptions now look up the error message. X509Certificates: * X509Certificate moves to using SecCertificateRef from OpenSSL's X509. * X509 metadata comes from a managed reader after being loaded by Security.framework, due to the significant amount of data that has no public export in Apple's libraries. * Significant code was factored out to be shared by OpenSSL and Apple implementations for X500DistinguishedName and X509Certficate2Collection.Find. * Loading a PFX (or, rather, the private keys from a PFX) via Apple's platform requires importing into a Keychain, and a Keychain requires a file on disk. A temporary keychain is created during cert loading and erased when safe. Like the perphemeral key load on Windows this can leak files due to abnormal program termination. HttpClient: * Initialization no longer wakes up OpenSSL SslStream: * New implementation based on Apple SecureTransport. * Currently has support for SNI (for AuthenticateAsClient) +15971 area-System.Net Refactor DiagnosticSource logging (correlation part1) **This change moves DiagnosticSource logging to DiagnosticsHandler and fixes #13172.** It **prepares** HttpClient for correlation feature support, which will allow to store global context for the current operation and propagate it in HTTP Requests. Correlation-feature background: * [DiagnosticSource.Activity User Guide](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md) * [Http Protocol standard draft](https://github.com/lmolkova/correlation/blob/master/http_protocol_proposal_v1.md) /cc @vancem @avanderhoorn @nbilling @cwe1ss @karolz-ms @SergeyKanzhelev @brahmnes @davidfowl +15972 area-System.Data DbDataReader.GetFieldValue fails in SQLite I'm writing `System.Data.Odbc` library for corefx and testing it with a SQLite provider. When you call `reader.GetInt64(i)` to get a big number it'll work great, but if you try to do `reader.GetValue(i)` then it'll fail with and `Unknown SQL type` exception. Given the inner working of SQLite, I'd say this is expected. The real issue here is that `reader.GetInt64(i)` works fine but `reader.GetFieldValue(i)` throws the same exception as `GetValue` (since it's just a cast as seen [here](https://github.com/dotnet/corefx/blob/c5c75db7c00047d603522fd6e21f350099e09bbb/src/System.Data.Common/src/System/Data/Common/DbDataReader.cs#L156)). This behavior is really unexpected from APIs with (presumably) the same purpose. Since this is a newer API added in .NET 4.5, it's a shame that it works worse than the old one. Maybe we can add special cases for the types we already support (e.g. `GetInt64`)? See https://github.com/aspnet/Microsoft.Data.Sqlite/blob/dev/src/Microsoft.Data.Sqlite/SqliteDataReader.cs#L537 for a possible improvement. cc @divega. +15973 area-System.Xml Remove Microsoft.Win32 dependency from System.Private.Xml Fixes https://github.com/dotnet/corefx/issues/15809 cc: @danmosemsft @jkotas @weshaggard FYI: @joperezr (https://github.com/dotnet/corefx/issues/15966) +15974 area-Serialization Area-Serialization Sprint 114 The issue is for tracking issues to be done in sprint 114 (due by 3/3/2017). +15976 area-Meta Marking code as unchecked (pt 4) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +15979 area-Serialization Pick up new S.P.DataContractSerialization 4.1.2 This adds a necessary change on top of [PR 14526](https://github.com/dotnet/corefx/pull/14526) to have the updated System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml packages reference the new 4.1.2 version of the System.Private.DataContractSerialization package. Update the version of System.Private.DataContractSerialization listed as a BaseLinePackage from 4.1.1 to 4.1.2. ~~Mark all of the affected packages as stable.~~ This change was reverted and removed from the PR. +15980 area-System.Runtime Split some composite GC tests into separate tests When these tests fail (https://github.com/dotnet/corefx/issues/15158), it's difficult to tell which part of the test failed. This PR splits some of the more composite GC tests into individual facts so that it's clear what exactly went wrong when a test fails. +15981 area-System.IO "Tests under: System.IO.Compression.Tests failed with ""System.IO.Compression.ZLibException & System.DllNotFoundException""" Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.BeginEndDeflateStreamTests/DecompressWorks` has failed. System.IO.Compression.ZLibException : The underlying compression routine could not be loaded correctly.\r ---- System.DllNotFoundException : Unable to load DLL 'clrcompression.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.IO.Compression.Inflater.InflateInit(Int32 windowBits) at System.IO.Compression.DeflateStream.InitializeInflater(Stream stream, Boolean leaveOpen, Int32 windowBits) at System.IO.Compression.DeflateStream..ctor(Stream stream, CompressionMode mode, Boolean leaveOpen, Int32 windowBits) at System.IO.Compression.Tests.DeflateStreamAsyncTestsBase.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.Compression.Tests.DeflateStreamAsyncTestsBase.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Interop.zlib.inflateInit2_(Byte* stream, Int32 windowBits, Byte* version, Int32 stream_size) at Interop.zlib.InflateInit2_(ZStream& stream, Int32 windowBits) at System.IO.Compression.ZLibNative.ZLibStreamHandle.InflateInit2_(Int32 windowBits) at System.IO.Compression.Inflater.InflateInit(Int32 windowBits) Build : Master - 20170209.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release - AnyCPU-Release - AnyCPU-Debug - AnyCPU-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170209.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.BeginEndDeflateStreamTests~2FDecompressWorks +15984 area-System.Diagnostics Implement DiagnosticSource.IsEnabled with extended context "# Motivation Our goal is to enable telemetry event correlation. To do this we need incoming requests to be tagged with an ID (and potentially other information), and have this information 'flow' through (be available) to all code run in response to that request and in particular allow this information to be propagated to any outgoing requests. #15023 Implements this approach and involves additional costs such as maintaining Activity.Current and context propagation. To reduce such costs, we want to enable advanced sampling and outgoing requests filtering. DiagnosticSource declares IsEnabled method and allows to filter events based on their names. * For sampling scenario, IsEnabled(string) allows to implement fixed rate or threshold sampling, however sampling may be done based on other properties: request initiator, particular feature, path, specific Id in the Activity.Baggage * For outgoing request filtering, users may need to prevent instrumentation of certain requests based on their URI or other properties. IsEnabled(string) does not allow to efficiently implement such scenarios and we propose to add IsEnabled with additional context. # Proposed API ```C# public abstract partial class DiagnosticSource { public virtual bool IsEnabled(string name, object arg1, object arg2 = null) { return IsEnabled(name); } } public partial class DiagnosticListener { public override bool IsEnabled(string name, object arg1, object arg2 = null); public virtual IDisposable Subscribe(IObserver> observer, Func isEnabled) } ``` # Usage ```C# //This code represents web service hosting layer that receives incoming http request //See more details about this samples and Activity in #15023 //For the filtering, we want to // 1) Make sure someone listens to the http incoming request events and only if it's true, // create Activity and fill it's baggage and parent id // 2) Let user enable instrumentation based on request and Activity properties. // 3) If user decides to instrument this particular request, we can start Activity and send event public void OnIncomingRequest(DiagnosticListener httpListener, HttpRequest request) { //check if user is interested in such events at all if (httpListener.IsEnabled(""Http_In"")) { var activity = new Activity(""Http_In""); //parse request headers and add baggage to Activity activity.SetParentId(request.headers[""x-ms-request-id""]) foreach (var header in context.Request.Headers) if (header.Key.StartsWith(""x-ms-baggage-"") activity.AddBaggage(header.Key, header.Value); //let user decide if he wants this request and activity to be sampled if (httpListener.IsEnabled(""Http_In"", request, activity)) httpListener.StartActivity(activity); //... process request and stop activity } } //This code demonstrates how user can subscribe to events with advanced filtering based on request and activity properties public void Startup() { DiagnosticListener.AllListeners.Subscribe(delegate (DiagnosticListener listener) { var predicate = (string name, object requestObj, object activityObj) => { //check for event name if (name == ""Http_In"") { var request = (HttpRequest)requestObj; //filter out some unintersting events if (request != null && request.Method == ""OPTIONS"") return false; //sample requests based on CorrelationId in the baggage var activity = (Activity)activityObj; if (activity != null) return IsSampledId(activity.GetBaggage(""CorrelationId"")); //note that if no context (request and activity) provided, we return true, //so the first httpListener.IsEnabled(""Http_In"") check will pass return true; } return false; } if (listener.Name == ""System.Net.Http"") { listener.Subscribe(delegate (KeyValuePair value, predicate) { Console.WriteLine(""Event: {0} Current Operation: {1} Current ID {2}"", value.Key, {Activity.Current.OperationName}, {Activity.Current.Id}); }); } } } // This code demonstrates that it's still possible to filter events based on their names only public void Startup() { DiagnosticListener.AllListeners.Subscribe(delegate (DiagnosticListener listener) { if (listener.Name == ""System.Net.Http"") { listener.Subscribe(delegate (KeyValuePair value, (name) => name == ""Http_In"") { Console.WriteLine(""Event: {0} Current Operation: {1} Current ID {2}"", value.Key, {Activity.Current.OperationName}, {Activity.Current.Id}); }); } } } ``` @vancem @terrajobst " +15985 area-System.Diagnostics [WIP] Support IsEnabled with addtional arguments #15984 This change introduces IsEnabled(string, object, object) obverload in DiagnosticSource for advanced events filtering based on additional event context. It also adds DiagnosticListener.Subscribe overload capable of filtering events based on such context. See #15984 for more details +15986 area-System.Console Wrong .NET Core console output encoding on Windows "Command prompt on my computer have a 866 (OEM - Russian) encoding, but .NET Core app says it is Unicode (UTF-8). Source code: ```csharp using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string helloWorld = ""Здравствуй, Мир!""; Console.WriteLine(Console.OutputEncoding.EncodingName); Console.WriteLine(helloWorld); Console.OutputEncoding = Console.OutputEncoding; Console.WriteLine(Console.OutputEncoding.EncodingName); Console.WriteLine(helloWorld); } } } ``` Console output: ``` D:\ConsoleApp1>dotnet run Unicode (UTF-8) ╨Ч╨┤╤А╨░╨▓╤Б╤В╨▓╤Г╨╣, ╨Ь╨╕╤А! Unicode (UTF-8) Здравствуй, Мир! D:\ConsoleApp1>dotnet --info .NET Command Line Tools (1.0.0-rc4-004771) Product Information: Version: 1.0.0-rc4-004771 Commit SHA-1 hash: 4228198f0e Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\1.0.0-rc4-004771 ```" +15987 area-Meta Remove most CAS and Security transparency related attributes Fixes https://github.com/dotnet/corefx/issues/12592 Remove CAS and Security Transparency attributes, and related message suppressions and pragma disable 618's with the exception of (1) no changes to Compression and Immutable and (2) no changes to SecurityCritical in refs (only removed some SecurityPermission's) Are there any other OOBs that I should exclude? System.Net.Http was mentioned in https://github.com/dotnet/corefx/pull/14383, should I reverse the couple changes there? @jkotas @stephentoub @JeremyKuhne @davidsh +15989 area-System.Net Issue with system.net.networkinformation.ping.send() with a low timeout It appears as when I use .NET [system.net.networkinformation.ping.send()](https://github.com/dotnet/corefx/blob/master/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Windows.cs) function with a low timeout, like less than 100ms, it will return an answer even if the time is higher than the timeout I have set: ``` [System.Net.NetworkInformation.Ping]::new().Send('www.google.co.uk',1) Status : Success Address : 2a00:1450:400b:c00::5e RoundtripTime : 58 Options : Buffer : {97, 98, 99, 100...} ``` Is the iphelper API able to handle low ping thresholds correctly when called from IcmpSendEcho2? +15990 area-System.Threading Threadpool Min/Max ThreadCount Configuration I am porting a .net 4.5 windows application to a .net core application targeting docker. Since i have a massive usage of the System.Threading.Tasks namespace, which is obvious based on the System.Threading.ThreadPool's min/max thread configuration, I was looking for an replacement for the following APIs - System.Threading.ThreadPool.SetMinThreads(int, int) and - System.Threading.ThreadPool.SetMaxThreads(int, int) since they no longer exists. Well, it seems to be no managed-code configuration for these values in netcore. I found out that there should be some hard configuration values in the enviroment (See: https://github.com/dotnet/cli/issues/889 and https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/clr-configuration-knobs.md), but I was not able to find an example how or where I can configure them. [Edit]At least I can go without the SetMinThreads-API, but not without the SetMaxThreads[/Edit] Thanks in advance! :) +15991 area-System.Linq S.L.Expression Casts of Boolean Enums Incomplete #13516 raised and #13518 closed the issue of casting from bool to bool-based enums using `Convert`. It did not though cover the inverse cast or the use of `ConvertChecked`. The inverse cast isn't accepted, and `ConvertChecked` fails on both interpreter and compiler. +15992 area-System.Linq Allow casts between bool-based enums and bool, checked and unchecked Fixes #15991 Remove prohibition on creating bool-enum -> bool conversions. Implement in compiler: Since this is the only acceptable conversion to or from boolean types, catch casts between same underlying types and do nothing, as the values on the stack is unchanged anyway. As well as fixing this case it slightly optimises other enum casts with the same underlying type and is closer to what the C# compiler does. Remove the case introduced in #13518 as it should no longer be hit, and anything doing so is a bug. Implement in interpreter: Duplicate the conversion for `Convert` to that for `ConvertChecked`. Also introduce a check on conversions between same underlying type to optimise such paths similarly to what is done in the compiler, though not applicable when underlying type is the final result. +15996 area-System.Linq S.L.Expressions use short ldind/stind for more types. #11407 changed `EmitLoadValueIndirect` and `EmitStoreValueIndirect` from if-else ladders on type == to a switch on TypeCode. The original if-else ladder skipped many types, presumably trading off the larger IL stream caused by using `ldobj` and `stobj` for a quicker walk through the ladder. Since that advantage doesn't hold for a `switch`, add in the omitted types, and re-order by size to make the completeness clearer. +15997 area-System.Collections Optimize ImmutableQueue.CreateRange If the enumerable supports random access then we can push the items on to the forwards stack in reverse order. This avoids having to make an expensive allocation where (previously) when two items were dequeued, we would have to reverse the entire backwards stack. If the enumerable does not support random access, we can still do better than the current implementation because we can deal with ImmutableStacks directly and not allocate an ImmutableQueue wrapper over them for every item. /cc @ianhays, @AArnott, @safern +15998 area-System.IO Various fixes / cleanup to SerialPort test suite This contains a number fairly minor changes, which are probably in three categories - cosmetic cleanup, fixes for problems introduced by me in the migration and fixes for problems in the original test suite which have only worked by luck in the past (changes like ReadLine.cs are in this last category) If the project would prefer me to supply more, smaller, PRs I can do that - I am trying to strike some reasonable balance. It's not worth calling-out comment typos on review at this stage, there are thousands. +16000 area-Infrastructure Mark 1.0.4 release packages stable cc @gkhanna79 @leecow @karelz +16001 area-Infrastructure Mark packages stable for 1.1.1 servicing release cc @gkhanna79 @leecow @karelz +16002 area-Infrastructure Fix build to work for VS2017 "It ought to be possible to build with VS2017 at least with the V15 tools if not potentially with the V14 tools if VS installs those. Someone needs to remove the checks below and make any other necessary fixes. Probably won't take long. ``` C:\git\corefx\run.cmd: 2 setlocal 3 4: if not defined VisualStudioVersion ( 5 if defined VS140COMNTOOLS ( 6 call ""%VS140COMNTOOLS%\VsDevCmd.bat"" C:\git\corefx\src\Native\build-native.cmd: 40 :ToolsVersion 41 :: Determine the tools version to pass to cmake/msbuild 42: if not defined VisualStudioVersion ( 43 if defined VS140COMNTOOLS ( 44 goto :VS2015 .. 46 goto :MissingVersion 47 ) 48: if ""%VisualStudioVersion%""==""14.0"" ( 49 goto :VS2015 50 ) ``` and probably a few other places. " +16003 area-System.IO Move slow SerialPort tests to outerloop The tests in this PR all take several seconds to run on a machine with just a serial port (like the CI machines). This PR takes the inner-loop run-time here for this set of tests down from about 120s to about 10s. #15961 +16004 area-Serialization Prototype XmlSerializer pregeneration Investigate the feasibility of the implementation XmlSerializer Generator in core. +16005 area-Serialization Investigate the usage svcutil tool in serialization Investigate the usage of svcutil tool in Desktop so as to well understand the feasibility of its implementation in the core. +16006 area-Serialization Test more scenarios in the XmlSerializer pregeneration Based on the #16004, try more scenarios including soap. +16007 area-System.Collections ImmutableSortedSet.Builder.DebuggerProxy incorrectly caches contents https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedSet_1.Builder.DebuggerProxy.cs#L42-L45 `ImmutableSortedSet.Builder` is probably a mutable type, so it's incorrect to cache the contents for display to the debugger. The code was probably copied-and-pasted from the proxy for a collection that actually is immutable, where it would be legal to cache the contents. +16008 area-System.Collections Consolidate DebuggerProxies for immutable collections All of them have the same logic, which is taking an immutable collection and then caching its contents into an array when requested by the debugger. We can remove all of the duplicate code and have a single proxy for immutable collections. /cc @ianhays, @AArnott, @safern +16010 area-System.Threading Proposal: GetAwaiter for tuple of tasks @jnm2 has [implemented `GetAwaiter` extension methods](https://gist.github.com/jnm2/3660db29457d391a34151f764bfe6ef7) which enable convenient awaiting on tuples of tasks (up to some arity). For instance, `var (x, y) = await (thingX.OperationAsync(), thingY.OperationAsync());` @terrajobst @weshaggard @jkotas How do you recommend proceeding with such API proposals? Do you need an API review before going into implementation? If a PR is ok, I'm assuming that the Task-related extensions would go into https://github.com/dotnet/corefx/tree/master/src/Common/src/System/Threading/Tasks Is that appropriate? Also, more generally, do you prefer to review such proposal piecemeal (one at a time) or all together (to get a well-thought API surface?). I remember some proposals for `Zip` and `Join` in LINQ APIs. Relates to https://github.com/dotnet/roslyn/issues/16159 +16011 area-System.Linq Proposal: New Zip LINQ Tuple Overload API (By @agocke) Rewriting this issue to focus on exactly one API: ```C# class System.Linq.Enumerable { public static IEnumerable<(T1, T2)> Zip(this IEnumerable first, IEnumerable second) { return first.Zip(second, (x, y) => (x, y)); } // Already EXISTS: public static IEnumerable Zip(this IEnumerable first, IEnumerable second, Func resultSelector); } ``` There will also be a matching IQueryable API: ```C# class System.Linq.Queryable { public static IQueryable<(T1, T2)> Zip(this IQueryable second); // Already EXISTS: public static IQueryable Zip(this IQueryable source1, IEnumerable source2, Expression> resultSelector); } ``` [EDIT] Add class names and existing `Zip` method for context by @karelz +16013 area-System.IO SerialPort Tests EventGeneric.EventHandlers_CalledSerially always hangs EventGeneric.EventHandlers_CalledSerially always hangs waiting for events. @karelz This is a placeholder to allow ActiveIssue - it can be assigned to me. +16017 area-System.IO Fix hang in SerialPort tests EventHandlers_CalledSerially This PR fixes a hang that was caused by the introduction of the `using()` blocks on the SerialPort objects rather than the explicit `Close` calls which were made in legacy. I've also done a considerable tidy-up and refactored three near-identical test helper classes into a generic base with three derivations. EventHandler_ThrowsException has been removed - this was not called by the netfx code - it relies on the very old framework behaviour of swallowing unhandled interrupts on background threads, so clearly hasn't worked since that changed (4.0? 2.0? can't remember). It's dead and gone, anyway. Fixes #16013 +16018 area-Infrastructure Adding new definition for UAP and UAPAOT builds and adding it to pipebuild cc: @chcosta @weshaggard FYI: @joshfree This PR: - Sets up a new build definition called DotNet-CoreFx-Trusted-Windows-UWP that is very similar to the one we currently have for Windows except that it doesn't run build-tests nor it triggers jobs for Helix. - Change pipebuild.json in order to add these additional configurations to our official build. It adds 16 builds in total (4 build architectures * 2 verticals * 2 flavors) +16020 area-Meta Marking code as unchecked (pt 5) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +16021 area-Infrastructure Add new perf job to Jenkins I have added a new perf.groovy file to deal with the perf runs for CoreFX. Currently we are only adding Windows, but will add Linux support after this is running. +16022 area-Microsoft.CSharp BlockReflection attribute inclusion for assemblies that are used on uap Framework assemblies that are used on netcore50 should include `BlockReflectionAttribute=true` in their project file unless there's a good reason not to. It seems like something happened to framework reflection blocking with e.g. Microsoft.CSharp.dll in the 5.2.2 framework metapackage for UWP apps. I was helping out troubleshooting a UWP failure where the `dynamic` keyword support goo was trying to reflect on the CSharpGetMemberBinder type (a private type in the assembly), and the customer was getting a MissingMetadataException on 5.2.2 metapackage, while things worked fine with the previous metapackage. The key difference seems to be the absence of the attribute. Removing reflection blocking is a breaking change. +16024 area-System.Xml OuterLoop_CentOS7.1_release: Test 'System.Xml.Tests.CReaderTestModule.RunTestCase' failed with 'Xunit.Sdk.EqualException' Failed Test: System.Xml.Tests.CReaderTestModule.TCMaxSettings Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_release/89/consoleText Message: ~~~ System.Xml.Tests.CReaderTestModule.TCMaxSettings [FAIL] Assert.Equal() Failure Expected: 0 Actual: 38 ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Private.Xml/tests/Readers/ReaderSettings/CReaderTestModule.cs(21,0): at System.Xml.Tests.CReaderTestModule.RunTestCase(Func`1 testCaseGenerator) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Private.Xml/tests/Readers/ReaderSettings/CReaderTestModule.cs(27,0): at System.Xml.Tests.CReaderTestModule.RunTest(Func`1 testCaseGenerator) ~~~ Configuration: OuterLoop_Centos7.1_release (build#89) +16025 area-System.Data SqlConnection.ClearAllPools not working when running on Linux "You can repeat this issue by steps: create new Asp.Net Core WebApi Project in VS2015 add Nuget package `""System.Data.SqlClient"": ""4.3.0""` write codes in ValuesController ``` // GET api/values [HttpGet] public IEnumerable Get() { using (var connection = new SqlConnection(""Server=ip;Database=db;User Id=user;Password=pass;"")) { connection.Open(); var cmd = new SqlCommand(""..."", connection); cmd.ExecuteNonQuery(); } return new string[] { ""value1"", ""value2"" }; } // GET api/values/5 [HttpGet(""{id}"")] public string Get(int id) { SqlConnection.ClearAllPools(); return ""value""; } ``` run ""dotnet publish"" and upload files to ubuntu 16.04 server build docker image use this Dockerfile, and run this image ``` FROM microsoft/dotnet:1.0.3-runtime COPY . /app WORKDIR /app EXPOSE 5000 ENV ASPNETCORE_URLS=""http://*:5000"" ENTRYPOINT [""dotnet"", ""WebApplication1.dll""] ``` call this webapi by muilti threads ``` public static void Main(string[] args) { var tasks = new Task[10]; for (var i = 0; i < tasks.Length; i++) { tasks[i] = new Task(()=> { //call http://ip:5000/api/values }); tasks[i].Start(); } Task.WaitAll(tasks); Console.WriteLine(""OK""); Console.ReadLine(); } ``` after test many times, then run “sp_who2” in Sql server, you can see many sleeping connections for db **then you call ""http://ip:5000/api/values/1"", webapi will execute _SqlConnection.ClearAllPools()_ method, but run “sp_who2” in Sql server, you can see those sleeping connections not close** SqlConnection.ClearAllPools() works when webapi running on windows, I have tested dotnet runtime 1.0.3 and 1.1.0. " +16026 area-System.IO Allow long SerialPort tests to be shortened globally The SerialPort tests include some very long (3 minutes, 20 minutes) 'stress' tests, which make working on the test suite miserable. This PR adds a global setting which allows us to shorten them to a few seconds. These tests don't run as part of CI at present because they require hardware support, so this isn't a CI issue. Ultimately we will need to have a mechanism for doing 'manual' tests which could control this global setting, for now it's just a cleaner alternative to having local adjustments to timings all over the place. All part of issue #15752 +16028 area-Microsoft.CSharp The binary operator Add is not defined for the types 'System.Nullable`1[System.Byte]' and 'System.Nullable`1[System.Byte]'. ```csharp enum MyEnum : byte { Value_1 = 1, Value_2 = 2 } class Program { static void Main(string[] args) { dynamic d = MyEnum.Value_1; var x = d + null; } } ``` fails with following error (works as expected without dynamic) ``` Unhandled Exception: System.InvalidOperationException: The binary operator Add is not defined for the types 'System.Nullable`1[System.Byte]' and 'System.Nullable`1[System.Byte]'. at System.Linq.Expressions.Expression.GetUserDefinedBinaryOperatorOrThrow(ExpressionType binaryType, String name, Expression left, Expression right, Boolean liftToNull) at System.Linq.Expressions.Expression.Add(Expression left, Expression right, MethodInfo method) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GenerateBinaryOperator(EXPRCALL pExpr) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GetExpression(EXPR pExpr) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GenerateConvert(EXPRCALL pExpr) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.VisitCALL(EXPRCALL pExpr) at Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Dispatch(EXPR pExpr) at Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Visit(EXPR pExpr) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GenerateLambda(EXPRCALL pExpr) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.VisitCALL(EXPRCALL pExpr) at Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Dispatch(EXPR pExpr) at Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Visit(EXPR pExpr) at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.Rewrite(TypeManager typeManager, EXPR pExpr, IEnumerable`1 listOfParameters) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.CreateExpressionTreeFromResult(IEnumerable`1 parameters, ArgumentObject[] arguments, Scope pScope, EXPR pResult) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, IEnumerable`1 args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpBinaryOperationBinder.FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindBinaryOperation(BinaryOperationBinder binder, DynamicMetaObject arg) at System.Dynamic.BinaryOperationBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) ``` +16029 area-System.Security OpenSslCryptographicException initialising an X509Certificate2 on Ubuntu 14.04 or official docker image microsoft/aspnetcore:1.1.0 I have a Web API running in a docker container. The container is built from the provided 1.1.0 package: FROM microsoft/aspnetcore:1.1.0 and the Web API binaries are copied in. The API runs fine and returns data as expected until I turn on authentication, at which point it needs an X509SecurityKey to set the *TokenValidationParameters.IssuerSigningKey* value. It throws an exception when it attempts to initialise an X509Certificate2 from a string value: string certValue = certificate.Value; byte[] byteCert = Encoding.ASCII.GetBytes(certValue); return new X509Certificate2(byteCert); throws an OpenSslCryptographicException: Unhandled Exception: System.Exception: Failed to extract the Token Signing certificate from the Federation metadata. ---> Interop+Crypto+OpenSslCryptographicException: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data) at Mercury.Shared.Rest.Authentication.AdfsFederationMetadata.GetSigningCertificate() The string value from which the X509Certificate2 is being initialised is: MIIC4jCCAcqgAwIBAgIQHWt3kGySgJxPtsalC0EoKzANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDEyJBREZTIFNpZ25pbmcgLSBzdHMuYWxsYW5ncmF5LmNvLnphMB4XDTE2MDkwNzA5MDQyM1oXDTE3MDkwNzA5MDQyM1owLTErMCkGA1UEAxMiQURGUyBTaWduaW5nIC0gc3RzLmFsbGFuZ3JheS5jby56YTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANdq9BEuBRPsTdpngeFyXbfH5lBg5WyENQW0qz2FtDw3AvZhiPdFyvTPZIeZDc4vhg+gPuG8pCxhFa6hPqNIwnLSVuyhUi4/CtZrLghF2wVVcyriijvirzdVp2m56nO31NB5HXbSerTmey1gJsgumr+MiaM2CEI9z5ctwAp66jqM9jVv7kzqIwB33irSck+X97jUa9XVa0/0QPBdrSVUR0i4rmfZ9orRdTKC3IA13bD9duk2Kc9V7t8t/woo80Kbbb3ZseYk5N8AI+7RRw9+oSAm8zZQzBYkNkAMeI1mto1faXsm9Aea4HXbyCbvVOx/JGj5Ki7YK/BtzWAyCgRu0TkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAd9rdJ1V9te8njMHiEuvr1DLVUBt2YdpZ8qGFC2rWDKeEW8iARrMfbtrlQovvE1radxoZ2gWR1AaaoEqzmLvF9fEAZ7xjR2P2UlT+ZgntfMn/c+3j7gWnfGNHIjosaYiyF72q4k6bgOx1TV8X08kD2AMBH27utXeeUQTZTd0bUWaWpr76NrDB95k4P6d0t5bkYsguiQjV+2t5/dSvrbTPVbXQmWGyC53IS2OI37AI2bIaeCCDkRHDoxu+L/DtgH8N60k2CLfa+pf0/cxQCR39p4Z+tquVKfYgJIsdZLD6bbrqK9VdpSR2vyUcDLMTGnO0tuDuzBd/xdhJ0GKbnBv3+g== The same code runs with no problem on Windows, building a certificate from the same string. **Edit:** *Note that while I initially encountered this problem running a docker image, subsequesnt testing has show that it also occurs using Ubuntu 14.04 + .NET Core 1.1* +16030 area-System.IO First pass through SerialStream test migration Currently all passing with single real serial port and data-loopback. Not ready for merging - I just need to see what the CI makes of them. +16033 area-System.IO Some SerialPort tests very sensitive to flow control details This is so that I can ActiveIssue a bunch of failing tests as precisely as possible, and also so that I can get my thoughts straight on this. **tl;dr** A significant number of the legacy SerialPort tests rely on specific traditional hardware behaviour which is not available on the CI or in the future. We need to work around this. **Full Details** A lot of the serial port tests, including some of the ones which run with a single, open, serial port (e.g. on the CI) rely on a particular behaviour of the serial.sys driver / 16550 UART. These tests arrange that hardware flow control is enabled on the port and set to block transmission, and they then write data to the port. Because the flow control is adverse, (and because serial.sys does not rebuffer tx data within itself, nor offer it to the UART when the flow-control prohibits), this causes the data to queue-up on the user-mode side of the serial.sys (i.e. in SerialPort). This allows asynchronous and queue-reporting SerialPort behaviour to be tested - there is a pending write which will not complete as long as the flow control conditions remain the same. In tests where a null modem connection is available, the test can adjust the flow control state using the other port - so it can, for example, delay the start of a transmission but then allow it to complete normally. My feeling is that these tests are, in principle, useful - the conditions that they test are always possible in real life, it's just that they're often fleeting and occur in the middle of large data transfers - being able to create them in 'slow motion' is valuable. **The problem** The difficulty in 2017 is that that genuine serial.sys/16550 setups are dwindling in number - we mostly have several other things: *USB Serial Ports* - These tend to have buffering in the driver, in the USB stack and in the silicon at the far end of the USB cable. Hardware flow control *has* to be carried-out within the silicon, and somehow reflected back up to the user-mode level after everything's backed-up, or by using some hybrid of both blocking up the data *and* sending out of band flow-control status back to the driver to tell it to put the brakes on. My tests with FTDI USB-Serial adaptors didn't give me terribly clear results, but it is clear that they don't instantly block writes when the flow control is adverse. USB-Serial solutions don't have the best reputation for reliability either, although 100% fidelity emulation is impossible anyway. *Virtual Machines* - I'm not clear what the CI hardware/software is, but it appears that we have some kind of virtualised serial port, which probably has some buffering within it. Either way, tests that rely on this blocking behaviour tend to fail on the CI. *Serial cards with fancier UARTS*- If you go out and buy a PCI serial port card in 2017, there's a good chance that it will have some kind of enhanced UART on it, which may well have hardware assistance for flow control - this means that the driver will transfer a certain amount of data to the UART hardware even when the flow control is adverse. **Possible solutions** 1. Probe for this behaviour and then use additional ```ConditionalFact``` qualifiers to disable tests which rely on it. 2. Bigger writes, more relaxed queue detection. A device which is working properly should *eventually* back-up writes if the flow control is adverse. The test will no longer be able to verify that *all* the written data is queued-up (some of it will have gone out to the hardware), but other aspects of the test could complete. It's possible that we might be able to probe at startup for the kind of behaviour we could expect. All thoughts and comments welcome. #15752, @JeremyKuhne (sorry if you've read this far) +16034 area-System.Collections Added a TryGetValue method to HashSet and SortedSet Closes #15691 Added a `TryGetValue` method to `HashSet` and `SortedSet`. Also fixed a bug in a `SortedSet` test as subsequent calls to `CreateT` with the same `seed` should return an equivalent value. The current implementation completely ignored the `seed`. +16035 area-System.Linq Have S.L.Expressions compiler test and add constants in a single pass. Currently this is a two-step operation of `CanEmitConstant` followed by `EmitConstant`. Instead have a `TryEmitConstant` that reports on success, so the same checks aren't repeated. +16036 area-System.Net Do we need #if BIGENDIAN? "These came over from desktop and we apparently never define it. ``` Searching 11694 files for ""#if.*BIGENDIAN"" (regex) C:\git\corefx\src\Common\src\System\Net\ByteOrder.cs: 11 public static ushort HostToNetwork(this ushort host) 12 { 13: #if BIGENDIAN 14 return host; 15 #else .. 20 public static uint HostToNetwork(this uint host) 21 { 22: #if BIGENDIAN 23 return host; 24 #else .. 50 public static uint NetworkBytesToNetworkUInt32(this byte[] bytes, int index) 51 { 52: #if BIGENDIAN 53 return unchecked((uint)(bytes[index + 3] | (bytes[index + 2] << 8) | (bytes[index + 1] << 16) | (bytes[index] << 24))); 54 #else .. 59 public static void NetworkToNetworkBytes(this uint host, byte[] bytes, int index) 60 { 61: #if BIGENDIAN 62 bytes[index] = (byte)(host >> 24); 63 bytes[index + 1] = (byte)(host >> 16); C:\git\corefx\src\Common\src\System\Net\SocketAddressPal.Windows.cs: 23 public static unsafe void SetAddressFamily(byte[] buffer, AddressFamily family) 24 { 25: #if BIGENDIAN 26 buffer[0] = unchecked((byte)((int)family >> 8)); 27 buffer[1] = unchecked((byte)((int)family)); C:\git\corefx\src\System.Net.NameResolution\src\System\Net\NameResolutionPal.Windows.cs: 80 // 81 IPAddressToAdd = Marshal.ReadInt32(nativePointer); 82: #if BIGENDIAN 83 // IP addresses from native code are always a byte array 84 // converted to int. We need to convert the address into .. 175 int addressAsInt = unchecked((int)address.GetAddress()); 176 177: #if BIGENDIAN 178 // TODO #2891: above code needs testing for BIGENDIAN. 179 C:\git\corefx\src\System.Net.Primitives\src\System\Net\IPAddress.cs: 357 public static long HostToNetworkOrder(long host) 358 { 359: #if BIGENDIAN 360 return host; 361 #else ... 367 public static int HostToNetworkOrder(int host) 368 { 369: #if BIGENDIAN 370 return host; 371 #else ... 377 public static short HostToNetworkOrder(short host) 378 { 379: #if BIGENDIAN 380 return host; 381 #else C:\git\corefx\src\System.Net.Sockets\src\System\Net\Sockets\SocketPal.Windows.cs: 520 } 521 522: #if BIGENDIAN 523 ipmr.MulticastAddress = (int) (((uint) ipmr.MulticastAddress << 24) | 524 (((uint) ipmr.MulticastAddress & 0x0000FF00) << 8) | ... 625 } 626 627: #if BIGENDIAN 628 ipmr.MulticastAddress = (int) (((uint) ipmr.MulticastAddress << 24) | 629 (((uint) ipmr.MulticastAddress & 0x0000FF00) << 8) | 12 matches across 5 files ```" +16038 area-Infrastructure Alpine has no CI builds We don't have any Alpine images or CI jobs being run right now, so things are prone to breaking without extra care. We do have official builds using docker. +16040 area-System.Net Improve Uri.UnescapeDataString codepath -> UriHelper.UnescapeString After doing an investigation on some performance traces collected from some mvc aspnet applications scenarios we found that a considerable amount of `char[]` objects were allocated on the GC Heap which are coming from `Uri.UnescapeDataString` codepath that is calling `UriHelper.UnescapeString` ([source code](https://github.com/dotnet/corefx/blob/master/src/System.Private.Uri/src/System/UriExt.cs#L521)) which receives a `char[]` as the destination of the unescaped string and then creating a string from that `char[]`. I know it would be a big change but we could probably consider using the sourceString that is already allocated or using a `PooledStringBuilder` which uses an `ArrayPool` for the buffer cache as explained here: * https://github.com/dotnet/corefx/pull/13875#issuecomment-262293493 /cc @danmosemsft @jkotas @stephentoub +16041 area-Microsoft.CSharp Review UNSUPPORTEDAPI usage in Microsoft.CSharp Most likely now it can all be removed. cc: @danmosemsft +16042 area-Meta Remove versioned defines We should migrate to versionless platform defines. @joperezr @weshaggard can we do this now if not what has to come first? I see you already renamed all the C# file suffixes to be versionless. - [x] #if netcoreapp11 --> #if netcoreapp - [ ] #if netstandard17, #if netstandard10 --> #if netstandard - [x] #if netcore50 --> #if uap - [x] #if netcore50aot --> #if uapaot incidentally #if NET46 -> don't change - [x] # if NET_4_5 -> dead Perhaps you already have something tracking this kind of thing. +16043 area-Infrastructure "Android cross-build fails if ""rt"" library is not removed from CMake configuration" @qmfrederik This might be an issue with the way I've run the cross-build commands, but I figured I'd file this issue anyways. When I run the Android cross build after creating the Android rootfs, I get an error related to the `HAVE_MKSTEMP` check failing, when it should be passing (according to the PR's I followed, at least). It fails because the linker is trying to pass `-lrt`, which doesn't seem to be working on Android. If I remove this line then everything works, and the build succeeds: https://github.com/dotnet/corefx/blob/master/src/Native/Unix/configure.cmake#L295. This seems to line up with what I am reading about online regarding Android builds. +16044 area-Infrastructure Single project build failing for platform-specific projects Running an msbuild on a single source csproj for a project that does not have a platform-agnostic implementation is currently failing. Example: ``` PS D:\git\corefx [Master]> msbuild src/System.Console/src/System.Console.csproj ... System\Console.cs(26,24): error CS0246: The type or namespace name 'ConsolePal' could not be found (are you missing a using directive or an assembly reference?) [D:\git\corefx\src\system.console \src\System.Console.csproj] ``` Also fails for: System.IO.Compression, System.IO.FileSystem. Does not fail for: System.Runtime, System.Collections It looks like this is because the msbuild is trying to build the project for netstandard AnyOS even though it isn't supported or listed in the Configurations.props file. These are all projects that have platform-specific configs listed e.g. ``` netcoreapp-Unix; netcoreapp-Windows_NT; uap-Windows_NT; ``` cc: @mellinoe @weshaggard +16045 area-System.IO Remove NetFX Compression build The cost of shipping OOB for Desktop is very high and we have burned ourselves (System.Net.Http). Let's make sure we do not accidentally run into the same problems here as well. resolves https://github.com/dotnet/corefx/issues/15693 +16046 area-System.Net Test failure System.Net.Tests.HttpWebRequestTest/GetResponseAsync_GetResponseStream_ContainsHost(remoteServer: https://corefx-net.cloudapp.net/Echo.ashx) release/1.1.0 branch: Same 2 test failures in 2 runs, each time on different platform * [20170208.02 - Redhat.72.amd64-Release](https://mc.dot.net/#/product/netcore/110/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170208.02/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FGetResponseAsync_GetResponseStream_ContainsHost(remoteServer:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) * [20170209.02 - Centos.71.amd64.Debug](https://mc.dot.net/#/product/netcore/110/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170209.02/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FGetResponseAsync_GetResponseStream_ContainsHost(remoteServer:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx)) ### Message: System.Net.WebException : An error occurred while sending the request. Problem with the SSL CA cert (path? access rights?)\n ---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\n -------- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) ### Stack trace: ``` at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.HttpWebRequestTest.d__41.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpWebRequest.d__63.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` +16047 area-System.Security Security test failures - Unable to load DLL 'System.Security.Cryptography.Native' 5 tests failed on all Linux & Mac OSX platforms (release & debug) in two 1.1 servicing builds: * [20170208.02](https://mc.dot.net/#/product/netcore/110/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170208.02/workItem/System.Security.Cryptography.Algorithms.Tests) * [20170209.02](https://mc.dot.net/#/product/netcore/110/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170209.02/workItem/System.Security.Cryptography.Algorithms.Tests) Failed tests: * System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests * TestExplicitCurves * TestExplicitCurvesSignVerify * TestNamedCurves * TestNamedCurvesNegative * System.Security.Cryptography.EcDsa.Tests.ECDsaTests * TestChangeFromNamedCurveToKeySize ### Message: System.DllNotFoundException : Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found.\n (Exception from HRESULT: 0x8007007E) ### Stack trace (example): ``` at System.Security.Cryptography.EcDsa.Tests.Interop.Crypto.EcKeyCreateByOid(String oid) at System.Security.Cryptography.EcDsa.Tests.ECDsaProvider.IsValueOrFriendlyNameValid(String friendlyNameOrValue) at System.Security.Cryptography.EcDsa.Tests.ECDsaProvider.IsCurveValid(Oid oid) at System.Security.Cryptography.EcDsa.Tests.ECDsaFactory.IsCurveValid(Oid oid) at System.Security.Cryptography.EcDsa.Tests.CurveDef.get_IsCurveValidOnPlatform() at System.Security.Cryptography.EcDsa.Tests.ECDsaTestsBase.<>c.b__6_0(CurveDef curveDef) at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Security.Cryptography.EcDsa.Tests.ECDsaTestsBase.d__6.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ``` +16048 area-Meta Marking code as unchecked (pt 6) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +16050 area-System.IO SerialPort test unicode source did not come in cleanly from netfx One for @JeremyKuhne again I'm afraid. There is a big unicode string in `SerialPortRegressions.VerifyReadExisting` which has come in from legacy as a load of question marks. If you wouldn't mind attaching the orginal utf-8 or however it was originally, then I'll sort out making it all into \u's or a char array or something. This is the final failing test in the loopback config :-) +16051 area-Infrastructure Update CoreClr, ProjectNTfs, Standard to beta-25010-03, beta-25010-00, beta-25010-01, respectively +16053 area-Infrastructure [DO NOT MERGE][TEST-ONLY] Enable dumpling and cause some tests to fail on purpose I'm submitting this again to see how it works with the buildtools changes I have made. From the last attempt, I think that a couple of runs will still fail because the machine images are missing one of the python libraries we use. +16054 area-System.IO Fix GZipStream.BeginRead to call ReadAsync It was calling WriteAsync. cc: @ianhays (we probably need some tests here ;) +16055 area-System.IO Tests failing in new SerialStream tests Placeholder for ActiveIssue - there's an intermittent CI test failure caused by something in the new SerialStream tests +16056 area-System.IO Suppress tests in 'Close' module Possible suppression for recent test failures #16055, #16051 +16057 area-System.Security Merge corefx:master to corefx:dev/apple_crypto This merges as-of commit 5091856f5ec900505026f8296e8b2fd5f958796b +16058 area-System.Xml Fix OuterLoop test System.Xml.Tests.CReaderTestModule.TCMaxSettings Fixes https://github.com/dotnet/corefx/issues/16024 This outerloop test needs to be updated as a result of the change made in https://github.com/dotnet/corefx/pull/15973 Prior to that change, `XmlReaderSettings` used to read full framework registry keys to decide the default value of entity resolving limit. Default used to be 0 (=unlimited), but is 10 million characters now. [The user can still override it with any value.] cc: @jkotas @danmosemsft +16060 area-System.Net 'Fireball' failure in Helix for 2 Socket tests on Redhat.72 2x 'fireball' failure for RedHat 7.2 for these two tests: System.Net.Sockets.Tests.SocketOptionNameTest: * ReuseUnicastPort_CreateSocketGetOption_SocketsReuseUnicastPortSupport_OptionIsZero * ReuseUnicastPort_CreateSocketSetOptionToZeroAndGetOption_SocketsReuseUnicastPortSupport_OptionIsZero Logs: * [20170209.02](https://mc.dot.net/#/product/netcore/110/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170209.02/workItem/System.Net.Sockets.Tests/wilogs) * [20170208.02](https://mc.dot.net/#/product/netcore/110/source/official~2Fcorefx~2Frelease~2F1.1.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170208.02/workItem/System.Net.Sockets.Tests/wilogs) cc: @MattGal +16061 area-System.Collections Cleanup some code in SortedSet - Rename and make `AreComparersEqual` an instance method - Check for reference equality before calling into `Equals()` - Refactor large constructor body into smaller methods - Add XML docs - Add braces - Remove `SortedSet.` name qualification when it isn't necessary /cc @ianhays @safern +16066 area-System.IO Add post-close delay to async SerialPort tests Possible fix for #16055 - it's really a work around for long-established problems in SerialPort rather than a test fix, but it should do for now. +16068 area-System.Linq Need fuller testing of IL/Intructions generated by S.L.Expressions Something @VSadov mentioned in a few PRs is that changes to IL generation are rather opaque and not reflected in tests. The same thing would be true of the instruction list produced by the interpreter. @bartdesmet has already done some work in this regard, but there's a lot more that could be covered, so this issue is to track that. One problem with the few tests of IL generation that already exist is that the expected output includes offset numbers (`IL_0000`,… `IL_001a`,… etc.) which means changes to output requires more manual changing than ideal. E.g. if we had great coverage of constant compilation then #15797 would have needed to not just have the redundant instructions it removed removed from the expected output, but every subsequent instruction to be renumbered. If we'd a lot of tests this would be a lot of manual fixing-up and a lot of irrelevant churn in commits, and potentially a lot of unnecessary conflicts between PRs. A starting point therefore would be to have the IL disassembly in the existing tests closer to hand-written IL where labels are only given when used as targets, so that changes can be more localised. +16070 area-System.Linq Remove offset labels from S.L.Expression test IL dumps Instead of labelling every IL instruction with a label based on its offset, label only those that are targets of breaks, leaves, etc. so that changes to expected IL to match changes in implementation can be more localised only to those directly affected. Clean up some unused code, etc. in the IL printer. Similarly don't include numbers when dumping instruction lists from the interpreter. Contributes to #16068 @VSadov this is a first step toward adding more testing of the produced IL. +16074 area-System.Threading Unexpected exception thrown by WaitHandle.SignalAndWait ``` Expected: typeof(System.Exception) Actual: typeof(System.ApplicationException): Object synchronization method was called from an unsynchronized block of code. ``` +16076 area-System.Console On Mac, Console.ReadLine result includes arrow key presses as '\0's "I found this while porting a toy REPL to .NET Core on Mac. On the Windows console, I can use the arrow keys to edit input on its way to Console.ReadLine() or to pull up previous input from my history. When my muscle memory tried the same thing on Mac, the arrow keys appeared to do nothing, but then parsing would mysteriously fail. I went to the debugger and found '\0's in the parser input! ## Repro steps * Run this on .NET Core 1.1 on Mac OS X in standard Terminal app: ``` C# using System; class Program { static void Main() { string s = Console.ReadLine(); Console.WriteLine(s); Console.WriteLine(s.Contains(""\0"")); } } ``` * Type in `HelloWorld`. ## Expected result ``` Hello World False ``` ## Actual result ``` Hello World True ``` ## Environment details ``` .NET Command Line Tools (1.0.0-rc4-004771) Product Information: Version: 1.0.0-rc4-004771 Commit SHA-1 hash: 4228198f0e Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/1.0.0-rc4-004771 ``` @stephentoub " +16079 area-Meta Marking code as unchecked (pt 7) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +16081 area-Meta *.builds files for tests The tests still have both Configurations.props files and *.builds files. @weshaggard Do we need both? Should we delete the *.builds files? +16082 area-Meta Fold or rename *.netstandard.cs files They do not need to be separate files and the .netstandard suffix on them is just confusing because of they do not have anything netstandard-specific in them. They contain tests for APIs added on top of netstandard1.6 in the early days of netstandard2.0 project. See https://github.com/dotnet/corefx/pull/16072 +16084 area-System.Runtime Please expose all Array static method as extension method There are a bunch of static function in `Array` class that should just be extension method Like `Find` and `IndexOf` Using extension method is more natural and also familiar with js +16085 area-System.Linq Correctly handle dynamic lifted enum arithmetic Microsoft.CSharp special-cases enum binary operations, but not when lifted. In most cases the nett result is an expression that will have the same outcome as if the expression had been special-cased to similarly match the C# rules exactly. E.g. the C# rules for adding an `short`-backed `enum` `x` and a `short` `y` would convert both to `int`, add them and then cast the result to the `short`-backed enum. The expression produced casts both to `short`, adds them and casts to the `short`-backed enum. Since in S.L.Expressions the result of `short` addition is a `short` (unlike in C# where they are first promoted to `int`) the final cast means the result is the same either way. Likewise bitwise and comparison operations all have the correct nett result. In the case of addition and subtraction with `byte`- or `sbyte`-based enums however this means the expression produced tries to add `byte` or `sbyte` values, which is not valid in S.L.Expressions, and an `InvalidOperationException` results. Catch the case of lifted enum arithmetic, producing an expression with the correct intermediary casts. Fixes #16028. +16086 area-System.Linq MemberInitExpression.Reduce returns block with undeclared variable Calling `Reduce` method on `MemberInitExpression` result in invalid expression tree (at least can't be compiled), because it uses a temporary variable without declaring it: Calling `Reduce` on tree ``` .New DotVVM.Framework.Tests.Binding.TestViewModel(){ EnumProperty = .Constant(B) } ``` results in: ``` .Block() { $var1 = .New DotVVM.Framework.Tests.Binding.TestViewModel(); $var1.EnumProperty = .Constant(B); $var1 } ``` which can't be compiled, because `$var1` is not declared. Or do I miss something? IMHO it can be fixed by adding a `, new [] { objVar }` to https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/MemberInitExpression.cs#L82 and https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/MemberInitExpression.cs#L97 +16091 area-System.Linq Fix MemberInitExpression.Reduce and ListInitExpression.Reduce Include the temporary variable used in the `BlockExpression` produced. Fixes #16086 Also remove created `TrueReadOnlyCollection` as optimisation in #3686 may bypass it being useful, and otherwise one will be created in the factory called. +16093 area-System.Memory Span: Rename IsReferenceFree to IsReferenceOrContainsReferences - Rename IsReferenceFree to IsReferenceOrContainsReferences for consistency with #14047 - Remove IsReferenceFreeCore micro-optimization that is actually hurting. This code runs just once and it is cheaper to do a check via reflection than to spend time in the JIT to optimize the extra code. - Re-enabled disables test +16094 area-System.IO System.IO.Directory.GetFiles() API usage with recursive symlinks on Unix "When the recursive symlink is encountered by `GetFiles(path, pattern, SearchOption.AllDirectories)` methos, .NET Core throws `PathTooLongException` (whereas Mono, in this case, throws `IndexOutOfRangeException`). * Is it recommended for the consumers to handle the recursion cases in our code by keeping track of the directory graph node visits? * To achieve this, would it be possible to provide an overload which accepts a predicate to determine when to skip / bail out of entering certain directories or symlinks during the traversal? Something like: ```diff public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption); + public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption, + Func predicate); ``` I was looking for the best approach to handle the exceptions during the FS scan and found a similar issue with `GetDirectories` API in CLI repo: dotnet/cli#5578 which pointed me to the man page about `/proc/[pid]/root` symlink being recursive by design (added that info in code comment below). ### Code: ```c# public class Program { public static void Main(string[] args) { var files = System.IO.Directory.GetFiles(args[0], ""*.*"", System.IO.SearchOption.AllDirectories); System.Console.WriteLine($""Files count: {files.Length}""); } } ``` ### Steps to repro: ```sh # Setup and invocation: # Platform: # Ubuntu Trusty 14.04 (Bash on Unbuntu on Windows 10; tested dist info with `cat /etc/*release`) sudo sh -c 'echo ""deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main"" > /etc/apt/sources.list.d/dotnetdev.list' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 sudo apt-get update sudo apt-get install dotnet-dev-1.0.0-rc4-004771 mkdir ~/test && cd $_ dotnet new console cat < Program.cs public class Program { public static void Main(string[] args) { var files = System.IO.Directory.GetFiles(args[0], ""*.*"", System.IO.SearchOption.AllDirectories); System.Console.WriteLine($""Files count: {files.Length}""); } } EOT sudo dotnet restore && sudo dotnet run -- /proc/self # Note that /proc/self encounters a symlink at /proc/self/root and proc # man page (https://linux.die.net/man/5/proc) says: # # /proc/[pid]/root # UNIX and Linux support the idea of a per-process root of the file system, set by the chroot(2) # system call. This file is a symbolic link that points to the process's root directory, and behaves # as exe, fd/*, etc. do. # In a multithreaded process, the contents of this symbolic link are not available if the main # thread has already terminated (typically by calling pthread_exit(3)). ``` ##### Exception: ```sh Unhandled Exception: System.IO.PathTooLongException: The specified file name or path is too long, or a component of the specified path is too long. at System.IO.UnixFileSystem.FileSystemEnumerable`1.OpenDirectory(String fullPath) at System.IO.UnixFileSystem.FileSystemEnumerable`1.d__11.MoveNext() at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source, Int32& length) at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption) at Program.Main(String[] args) ``` " +16097 area-Infrastructure Unable to build.cmd while offline "I did a full build.cmd successfully and then disconnected. When I tried to build.cmd again, even with using -RestoreDuringBuild=false, I got errors that prevented the build from succeeding: ``` EXEC : error : Unable to load the service index for source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json. [C:\Users\stoub\Source\repos\corefx\external\runtime\runtime.depproj] EXEC : error : An error occurred while sending the request. [C:\Users\stoub\Source\repos\corefx\external\runtime\runtime.depproj] EXEC : error : The server name or address could not be resolved [C:\Users\stoub\Source\repos\corefx\external\runtime\runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\packageresolve.targets(35,5): error MSB3073: The command """"C:\Users\stoub\Source\repos\corefx\Tools/dotnetcli/dotnet.exe"" restore --no-cache --packages ""C:\Users\stoub\Source\repos\corefx\packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""C:\Users\stoub\Source\repos\corefx\bin/obj/Windows_NT .AnyCPU.Debug/runtime/netcoreapp/Windows_NT-x64/project.json"""" exited with code 1. [C:\Users\stoub\Source\repos\corefx\external\runtime\runtime.depproj] ``` " +16098 area-System.Net "Test ""System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging"" failed with ""Xunit.Sdk.EqualException""" Failed test: System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging Configuration: OuterLoop_Centos7.1_debug (build#94) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_debug/94/consoleText Message: ~~~ System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging [FAIL] Assert.Equal() Failure Expected: 42 Actual: 134 ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_debug/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(167,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_debug/src/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs(219,0): at System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging() ~~~ +16099 area-System.IO "OuterLoop_Win7_debug: Test under ""Legacy.SerialStream"" failed with ""Xunit.Sdk.EqualException""" Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/95/consoleText Configuration: OuterLoop_Windows7_debug (build#95) Message: ~~~ Legacy.SerialStream.WriteByte_Generic.SuccessiveReadTimeout [FAIL] ERROR!!!: The write method timedout in 0 expected 1054 percentage difference: 1 Expected: True Actual: False ~~~ Stack Trace: ~~~ D:\j\workspace\outerloop_win---b280fd23\src\System.IO.Ports\tests\Legacy\Support\PortsTest.cs(24,0): at System.IO.PortsTests.PortsTest.Fail(String format, Object[] args) D:\j\workspace\outerloop_win---b280fd23\src\System.IO.Ports\tests\Legacy\SerialStream\WriteByte_Generic.cs(452,0): at Legacy.SerialStream.WriteByte_Generic.VerifyTimeout(SerialPort com) D:\j\workspace\outerloop_win---b280fd23\src\System.IO.Ports\tests\Legacy\SerialStream\WriteByte_Generic.cs(117,0): at Legacy.SerialStream.WriteByte_Generic.SuccessiveReadTimeout() ~~~ Failed tests: WriteByte_Generic/SuccessiveReadTimeout WriteByte_Generic/BytesToWriteSuccessive WriteTimeout_Property/WriteTimeout_750_WriteByte WriteTimeout_Property/WriteTimeout_750_Write_byte_int_int Write_byte_int_int_Generic/BytesToWriteSuccessive Write_byte_int_int_Generic/SuccessiveWriteTimeout +16100 area-System.IO "OuterLoop_Win7_debug: tests under ""Legacy.SerialStream.WriteTimeout_Property"" failed with ""Xunit.Sdk.ThrowsException""" Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_debug/95/consoleText Configuration: OuterLoop_Windows7_debug (build#95) Message: ~~~ Assert.Throws() Failure Expected: typeof(System.TimeoutException) Actual: (No exception was thrown) ~~~ Stack Trace: ~~~ D:\j\workspace\outerloop_win---b280fd23\src\System.IO.Ports\tests\Legacy\SerialStream\WriteTimeout.cs(265,0): at Legacy.SerialStream.WriteTimeout_Property.SuccessiveWriteTimeoutNoData_WriteByte() ~~~ Failed tests: WriteTimeout_Property/SuccessiveWriteTimeoutNoData_WriteByte WriteTimeout_Property/SuccessiveWriteTimeoutNoData_Write_byte_int_int +16101 area-System.ComponentModel Port more of System.ComponentModel.DataAnnotations types in System.ComponentModel.Annotations https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.associatedmetadatatypetypedescriptionprovider(v=vs.110).aspx +16102 area-System.IO SerialPort: Disable hardware use where no loopback/nullmodem available This PR stops the SerialPort tests using hardware if there isn't either a loop-back plug or a null-modem cable fitted. This will reduce the number of tests that run on the CI until we can work out if it's going to be feasible to stabilise them properly. Addresses new issues #16100, #16099 and the long-running #15961 @JeremyKuhne, @Jiayili1 +16103 area-System.Linq Remove double negatives from S.L.Expressions produced IL. Replace negation followed by `brfalse` or `brtrue` with `brtrue` or `brfalse` respectively. +16104 area-System.IO SerialPort test improvements This is a substantial set of changes which need to bake against the CI a bit before we consider merging. * More misc cleanup of migrated tests * Fixes for test bugs introduced by me during the migration * Addition of hardware buffer probing and associated buffer size selection (addresses #16033) * Experimental removal of some suppression which should be fixed by the buffer probing * Removal of tests which solely test hardware capabilities and don't enhance coverage of SerialPort The tests I have removed have the following characteristics: 1. They test for the presence of archaic serial port features (5/6 bit data, 1.5 stop bits) which are no longer in general use and are not supported by some of the popular modern USB-Serial devices - so we get test failures there even though there is no fault in SerialPort. 2. They don't improve coverage of SerialPort at all - they merely represent different numbers for it to pass down through to the underlying stack. 3. We have other tests which verify the correct behaviour of SerialPort when the underlying stack rejects values for these parameters that it doesn't like. 4. One of them assumed that a baud rate of 12345 can't be selected, just it doesn't work on the original 16550 hardware (which is a clone of the 8250 in a PC/XT) - there is nothing fundamental which says that a port can't offer that rate, and indeed the USB-Serial solutions often can. I don't consider these tests to have any value, given that we'll have to be able to skip them for people to be able to run the tests against modern hardware anyway *and they offer no additional coverage*. Particularly as we move to a more cross-platform approach, SerialPort's test suite is going to have to be more broadminded about what specific features of serial ports might be available - as it stands, the test suite is second-guessing what features the stack offers, based on a very narrow set of assumptions. With this PR, we now have a complete null-modem test pass using conventional hardware (16550 clone on motherboard as first port, 16c950 on PCI card as second port) - this is a major milestone. We also have much better pass rate on USB-Serial hardware than we did, though it's not 100% yet. **System.IO.Ports.Tests Total: 995, Errors: 0, Failed: 0, Skipped: 0, Time: 1145.502s** +16107 area-Meta Microsoft.NETCore.UniversalWindowsPlatform 5.3.0 makes my appx crashes when deploy from .ps1 "Hi, I have an UWP application which crashes when I deploy it manually from PowerShell **Add-AppDevPackage.ps1** 's script but the same app works fine when I deploy from my **VS2017 latest RC.** I can't attach WinDbg because the app is crashing about 4-6 seconds after the launch. After long hours to restart from earlier working branch, I upgrated each stable Nuget separatly to finally found the one causing the issue : ""**Microsoft.NETCore.UniversalWindowsPlatform**"": a downgrade from ""**5.3.0**"", to ""**5.2.2**"", everything is working fine again. The event viewer is giving this error when it crashes: > Activation of app xxxxxxxxxxxxxxxxx!App failed with error: The remote procedure call failed. See the Microsoft-Windows-TWinUI/Operational log for additional information. then in the Microsoft-Windows-TWinUI%4Operational's log: > Activation of the app xxxxx!App for the Windows.Launch contract failed with error: The remote procedure call failed.. Hope it's helping Txs -Vince " +16108 area-Infrastructure "Clean build produces several MSB3245 ""netstandard"" warnings" "When I do a clean build, I get several warnings like the following: ``` C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly ""netstandard"". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\Users\stoub\Source\repos\corefx\src\Tools\CoreFx.Tools\CoreFx.Tools.csproj] ``` cc: @weshaggard " +16109 area-System.Net DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging Assert failing area-System.Net.Http.Functional.Tests Test appears to be added with https://github.com/dotnet/corefx/pull/15971 and is affecting Linux tests cc@lmolkova cc@stephentoub Assert.Equal() Failure 18:57:42 Expected: 42 18:57:42 Actual: 134 18:57:42 Stack Trace: 18:57:42 /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(167,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() 18:57:42 /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs(219,0): at System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging() 18:57:42 Finished: System.Net.Http.Functional.Tests +16110 area-Infrastructure Modified Linux build definitions to make use of init-docker.sh The use of init-docker will hopefully address some of the flaky builds caused by failing to pull Docker images intermittently. init-docker will retry pulling docker images upon failure. +16111 area-System.Security Add support for Certificate Signing Requests I've had a few discussions with customers who are either spawning out to OpenSSL, or looking at bouncy castle. Having support for creating an CSR (and better yet, also signing it, enabling self signed certs, like Powershell has) would go a long way to helping them. +16112 area-Infrastructure Remove arm64 support for UAP package cc: @ericstj @weshaggard Removing arm64 from the runtimes.json since UAP doesn't support it. +16114 area-System.Net Skip failing test to unblock builds. Skips test in issue #16098 +16115 area-Infrastructure Build all fixes Various fixes to get the BuildAllConfigurations mode working. Please review commit-by-commit. /cc @joperezr @weshaggard +16116 area-System.Linq ExpandoClass summary worded incorrectly/ambiguously? There seems to be some room for interpretation in this summary: ```cs /// /// Represents a dynamically assigned class. Expando objects which share the same /// members will share the same class. Classes are dynamically assigned as the /// expando object gains members. /// ``` https://github.com/dotnet/corefx/blob/ec2a6190efa743ab600317f44d757433e44e859b/src/System.Linq.Expressions/src/System/Dynamic/ExpandoClass.cs#L9 Specifically: > Expando objects which share the same members will share the same class How does this work? I don't see any static caching of ExpandoClass going on in either _transitions or ExpandoObject's internal structures like ExpandoData. Or is what is meant something more like, they (should) result in the same type of instance e.g. the same sort of data/hashcode/etc is contained for an ExpandoObject that shares the same members. +16117 area-Meta Marking code as unchecked (pt 8) Marking code that may intentionally lead to over or underflows with unchecked in preparation of turning on CheckForOverflowUnderflow for all projects (issue #3140) +16118 area-System.Diagnostics Add Activity.RootId property This change adds `string RootId {get; private set}` property to Activity. It allows to get root part of Activity.Id that is common for all Activities involved in operation processing and may be used by logging systems to optimize queries. /cc @vancem @glennc @SergeyKanzhelev @brahmnes See #16155 for more details +16119 area-Infrastructure [On hold til 3/7] [release/1.1.0] Baseline 1.0.0 value tuple This checks in the package baseline info from the 1.0.0 release and configures ValueTuple to use that. /cc @jcouv +16120 area-System.Console Fix reading of null chars in Console.ReadLine on Unix Fixes #16076 @nguerrera, can you help verify this fixes the issue you were seeing? cc: @ianhays +16121 area-Infrastructure "Remove ""'$(TargetGroup)'=='netstandard' in configurations in test projects." "We should remove these because in the case where a project has a non-netstandard configuration in the configurations.props, that configuration will be picked and this condition will be false causing the tests to not run in the normal case. When doing this, make sure tests that are NOT conditioned to be netstandard are instead conditioned to only be non-netstandard, eg ,. `` or ` ` This will means that when we do build the netstandard configuration explicitly, we only pick up tests running against netstandard API. @joperezr to make sure I stated this correctly." +16123 area-System.Runtime DllImport with specific version Hey guys, I'm trying to run native code by using `DllImport`. You can take a look here if you want: https://github.com/tinchou/corefx/blob/master/src/System.Data.Odbc/src/Common/System/Data/Common/UnsafeNativeMethods.cs [I was specifying `odbc` as my dll name](https://github.com/tinchou/corefx/blob/master/src/System.Data.Odbc/src/Common/System/Data/Common/ExternDll.Unix.cs), which seemed to work for OSX and also for most Linux distros, but then I found it wasn't working for some that didn't symlink `libodbc.so` to `libodbc.so.2`. I thought I could change it to `odbc.2` but it didn't work, so I ended up using `odbc.so.2`. Then: 1. Do we have any document with `DllImport`'s look up conventions? I think it's important to have this if we want anyone to use this feature. 2. Is there any way I can add the version number but also remove the file extension (`.so`) so I can reuse this name on OSX? Over there we have to bind to `libodbc.2.dylib`. Thanks! +16125 area-System.Data Parsing logic for data source in connection string is to be refactored Parsing logic for data source in connection string is to be refactored for cleaner code and easier maintenance. Current parsing logic is scattered over several methods, and it is better to get them all together in one place. +16126 area-Infrastructure Package publishing is dodgy "During official builds it looks like all legs overwrite files when copying to azure storage. This creates some unreliable ""last in wins"" behavior where the last build to succeed will be the one that gets published. In 1.0 and 1.1 folks tried to workaround this by turning off some of the overlapping package builds on non-windows, but this is contrary to the vertical build goals. Those goals drive us to have a reference package produced by all verticals, but we'd really only want to ship the one from Windows since it will be signed. I think we need to look at a way to make this work without adding extra complexity to developer builds, or making the official build different from developer builds. Here's my crack at a suggestion for how this should work. 1. Builds should copy to a leg-specific path in azure. This eliminates the potential for overwriting. 2. During publishing have a precedence for package sources, as follows. a. first prefer windows vertical build legs. b. then prefer windows all non vertical build legs. c. then consider other OS legs. 3. If there is ever an ambiguous choice that should be an error: two legs produce the same package without a clear precedence based winner. Fail the build. /cc @chcosta @dagood @weshaggard " +16127 area-System.Linq Lighten some numeric conversions in S.L.Expression interpreter When casting enum → underlying type we can do a single direct unchecked cast to the type, so do so. Remove code that uses reflection to construct a nullable type when the target is nullable, as the boxing makes this irrelevant. +16128 area-System.Diagnostics DiagnosticListener performance optimization ### Motivation It is motivated as a performance optimization. The IsEnabled() with no arguments allow a inlinable quick check for performance reasons. ### Details Add DiagnoticListener.IsEnabled() without arguments as an initial loose check that returns true if there is a subscriber to DiagnosticListener (suggested in #15971). ### API proposal ```C# public bool IsEnabled() {return _subscriptions != null;}; ``` /cc @vancem @stephentoub +16129 area-System.Data Make Managed SNI the default implementation on Windows SqlClient uses different implementations of SNI for Windows and non-Windows platform. The plan is to use a unified implementation of SNI, the managed version for Windows and non-Windows platform. This issue tracks the unification of the two SNI implementations. The switch on windows will come with a AppContext switch, which will allow users to use Native SNI. +16130 area-Infrastructure Build all configurations - official build This adds two legs that build all configurations (with no testing) to the official build. This will be used for producing packages. +16131 area-System.Diagnostics DiagnosticListener performance improvements #16128 This change adds `DiagnosticListener.IsEnabled()` method as a quick check that somebody listens to this DiagnosticListener See #16128 for more details. +16132 area-Infrastructure Changing uap and uapaot apiCompat baselines to run against implementation instead of reference assemblies "cc: @weshaggard @ericstj @danmosemsft For uap and uapaot, the baselines ""lie"" sometimes about their surface area as we won't neseceraly have the implementation for some APIs, which is why with this PR we are changing to use the implementation assemblies instead when building the uap and uapaot baselines." +16133 area-System.Net Failures in .HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate "Turning our Win7 badge read. @Priya91 could you please fix or disable today to get back to green. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/lastCompletedBuild/testReport/ ``` System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""\"", expectedFragment: \""#origFragment\"", useRelativeRedirect: False) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: False) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: True) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: False) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: True) ``` " +16134 area-System.IO Audit all corefx Streams with Read/WriteAsync overrides Any that have overrides of these that do something real (e.g. not just throw) also need overrides of Begin/EndRead/Write. cc: @davidsh, @saurabh500, @ianhays +16137 area-System.Collections Use generic Array.Reverse in ReverseIterator Now that there's a generic overload available the API can be used without fear of boxing for user-defined structs. /cc @JonHanna, @stephentoub, @justinvp +16138 area-System.Linq Investigate using Unsafe to circumvent covariant array typechecks in ToArray During a recent PR I tried changing [this](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Concat.cs#L467) to hold references to the collections directly instead of holding the index of each collection, which I had originally done to keep the size of the builder to a minimum. It seems like the benefits extended past just memory usage, though-- changing the builder to an `ArrayBuilder>` incurs 3x more time just to store each collection in the array than all of the interface typecasts. ![arraystorecheck](https://cloud.githubusercontent.com/assets/9159214/22914846/05413522-f241-11e6-82b0-255de16ded62.PNG) For that reason maybe we should consider using `Unsafe` in [LargeArrayBuilder](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/LargeArrayBuilder.cs#L154), which is used by `Enumerable.ToArray`, to circumvent the typechecking if this turns out to have a significant enough impact. With so many other virtual method calls/typecasts going on around that method, I was really surprised to see that array stores were taking up more than 18% of the time. /cc @benaadams +16140 area-System.Linq Throw on byref or pointer types in LabelTarget Contributes to #8081. +16141 area-System.Linq Throw on byref or pointer types in linq Throw expressions. Contributes to #8081. +16144 area-System.Net Update System.Net.Http exception message not to refer to unknown property +16146 area-System.Net ExecutionEngineException when using SslStream "``` Unhandled exception at 0x00007FF8901CDE20 (coreclr.dll) in dotnet.exe: 0xC0000005: Access violation reading location 0x0000000000000000. If there is a handler for this exception, the program may be safely continued. ``` See the reproduction here: https://gist.github.com/ayende/ba61b7d21065c0db8df6a905902ed1b3 Get the files, then run: * dotnet restore * dotnet run The program will crash immediately on trying to do SSL authentication. Note that if I change this line: https://gist.github.com/ayende/ba61b7d21065c0db8df6a905902ed1b3#file-project-json-L10 To ` ""version"": ""1.0.1""` it works as expected. If running this inside the debugger, I get: ``` An unhandled exception of type 'System.ExecutionEngineException' occurred in System.Private.CoreLib.ni.dll ``` And the error seems to be from here: ![image](https://cloud.githubusercontent.com/assets/116915/22938180/a728c8da-f2e3-11e6-948f-bd93403acb39.png) " +16147 area-System.Net Failure of System.Net.Tests.HttpWebRequestTest.GetResponseAsync_UseDefaultCredentials_ExpectSuccess This is causing a red badge today. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_rhel7.2_release/lastCompletedBuild/testReport/ Please fix or disable immediately to get us a green badge, thanks. ``` MESSAGE: System.Net.WebException : An error occurred while sending the request. Problem with the SSL CA cert (path? access rights?)\n---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\n-------- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) +++++++++++++++++++ STACK TRACE: at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1246 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpWebRequestTest.d__43.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Requests/tests/HttpWebRequestTest.cs:line 365 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__59.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 487 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpWebRequest.d__188.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1192 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1227 ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 637 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_rhel7.2_release/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 857 ``` @Priya91 @steveharter +16150 area-System.Linq Test and optimise TypeEqual and TypeIs behaviour for pointer types. Contributes to #8081, but since the current behaviour is to safely always return false, continue to allow pointer type operands. There is already code that examines these expressions for always-false or always-true behaviour, so have pointer types also result in the always-false path being taken. +16151 area-Infrastructure Remove Fedora 24 test execution We don't have Fedora 24 VMs currently and the mismatch makes un-runnable tests. Checked with @joperezr , TargetOS and FilterToOSGroup are likely still necessary (due to other properties deriving from them) so I've chosen to leave things alone for now. With 24 EOL'ing soon, we'll probably want to move all 2.0 stuff to Fedora 25 in the near future. @chulhul is working on an updated image. @weshaggard @chcosta +16152 area-Infrastructure Things with the open key have different identities on unix builds Because of https://github.com/dotnet/corefx/blob/master/Tools-Override/Roslyn.Common.props#L29 we are getting different keys when building on core (i.e. non-windows). We need to make the assembly identity the same on all builds so we should instead work around https://github.com/dotnet/roslyn/issues/8210 by turning on DelaySign instead. Due to issue https://github.com/dotnet/corefx/issues/16126 which ends up picking the identity package from a unix leg we end up with errors like https://github.com/dotnet/standard/issues/201 which has refs with incorrect keys. +16153 area-System.Linq Simplify and optimise S.L.Expressions type-test instructions. `NullableTypeEqualsInstruction` exactly duplicates `TypeEqualsInstruction`. Remove it, and use `GetNonNullableType()` on type argument so result is the same for nullables and non-nullables. Path using type-equal test for type-is on nullables will work with any value type, so test for being a value type rather than being a nullable. `ConstantCheck.AnalyzeTypeIs` call in `CompileTypeIsExpression()` may have found only a nullity test is necessary, in which case emit it instead of full type test. +16154 area-System.Data Move SspiClientContextStatus to SNI The following changes were added 1. Remove SspiClientContextStatus from TdsParserStateObject to its own class. 2. Remove references to TdsParserStateObject from SNIProxy. I am making this change so that the files in System.Data.SqlClient.SNI can be built independently of the upper TDS layers. This is also related to #16129 +16155 area-System.Diagnostics Add System.Diagnostics.Activity.RootId property "# Motivation System.Diagnostics.Activity.Id is unique identifier which may be used to filter logs related to particular activity. Id has hierarchical structure: /root-id.id1.id2.id2 and generated when activity starts internally. Root node of id (root-id) is common for all activities involved in operation processing, so logging systems may filter logs with Id prefix. However some logging systems may not support prefix-based queries or it may be quite expensive to run them. The standard approach to correlate logs is to write some correlation-id with every record. We expect many customers may want to add such correlation-Id to the Activity.Baggage; which would be redundant since root-id serves the same purpose. We want to provide property to expose root-id and avoid unnecessary baggage usage. # API proposal ```C# public partial class Activity { public string RootId {get; private set} } ``` # Usage ```C# void OnIncomingRequest(DiagnoticListener httpListener, HttpRequest request) { if (httpListener.IsEnabled(""Http_In"") ) { Activity activity = new Activity(""Http_In""); activity.SetParentId(request.Headers[""Request-Id""]); if (httpListener.IsEnabled(""Http_In"", request, activity) ) { httpListener.StartActivity(activity); } } } ... //client code DiagnosticListener.AllListeners.Subscribe(delegate (DiagnosticListener listener) { if (listener.Name == ""Microsoft.AspNetCore"") { listener.Subscribe(delegate (KeyValuePair value) { // In this demo we simply log to the console what things are happening. Console.WriteLine(""Event: {0} Current ID {1} RootID {2}"", value.Key, {Activity.Current.Id} {Activity.Current.RootId}); }); } } ``` //cc @vancem " +16156 area-System.Runtime EnumerateEnvironmentVariables(target: Machine) test failing with SecurityException https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/96/ https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/95/ ``` System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(target: Machine) [FAIL] System.Security.SecurityException : Requested registry access is not allowed. Stack Trace: at System.ThrowHelper.ThrowSecurityException(ExceptionResource resource) at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) at System.Environment.SetEnvironmentVariableCore(String variable, String value, EnvironmentVariableTarget target) at System.Environment.SetEnvironmentVariable(String variable, String value, EnvironmentVariableTarget target) at Internal.Runtime.Augments.EnvironmentAugments.SetEnvironmentVariable(String variable, String value, EnvironmentVariableTarget target) D:\j\workspace\code_coverage---b14a30e5\src\System.Runtime.Extensions\src\System\Environment.cs(49,0): at System.Environment.SetEnvironmentVariable(String variable, String value, EnvironmentVariableTarget target) D:\j\workspace\code_coverage---b14a30e5\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs(209,0): at System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(EnvironmentVariableTarget target) ``` cc: @JeremyKuhne +16157 area-Infrastructure Update signing targets Need to run the signing updates through CI to make sure the correct keys are used on all the different platforms. Once I get that validated I will update the commit to remove the debugging messages and merge. +16158 area-System.Runtime Trivial Fix to avoid an allocation in TextWriter We allocate an char[] for the newline characters every time we create a TextWriter. A trivial change to avoid this (store the char[] in a static). This actually shows up in ASP.NET TechEmpower benchmarks. +16160 area-System.Text Fix hidden overflow issue in encoding code When enabling overflow/underflow compilation flag globally we found one of the System.Text.Encoding.CodePages tests is failing. The reason is we have some method that can adjust a byte pointer by some int value, when passing -1 to this method the calculation of adjusted pointer value becomes wrong when the overflow/underflow flag is wrong. the operation is carried with 8 bytes registers so the overflow and underflow is not detected and no exception is thrown. here is some example of the generated code with and without the overflow check: with overflow/underflow check is on _bytes += count; 00007FFF46E67D76 mov rax,qword ptr [rbp+50h] 00007FFF46E67D7A mov edx,dword ptr [rbp+58h] <<< edx = -1 00007FFF46E67D7D mov edx,edx 00007FFF46E67D7F add rdx,qword ptr [rax+48h] <<< wrong unexpected value 00007FFF46E67D83 jae 00007FFF46E67D8A 00007FFF46E67D85 call 00007FFFA65AFBD0 00007FFF46E67D8A mov rax,qword ptr [rbp+50h] 00007FFF46E67D8E mov qword ptr [rax+48h],rdx with overflow/underflow check is off 00007FFF46E877D6 mov eax,dword ptr [rbp+58h] <<< eax = -1 00007FFF46E877D9 movsxd rax,eax 00007FFF46E877DC mov rdx,qword ptr [rbp+50h] <<< right expected value 00007FFF46E877E0 add qword ptr [rdx+48h],rax +16161 area-Infrastructure Clean-up our build definition files We have a number of things that should be cleaned up in our official and CI builds. 1. We should delete a lot of unnecessary properties. example FilterToOSGroup, TargetOS, etc. We should also look at cleaning out the amount of paramters we are passing to things like CreateHelixArguments, especially when we are only disabling that step. 2. We have a lot of duplication things like our PB_*Arguments parameters which are copied multiple places in our pipeline file. We should set the parameters up in the definition and just pass the appropriate parameters. Otherwise we end up duplicating things like ArchGroup, ConfigurationGroup, etc on each set of parameter lines in a pipebuild step. 3. We should finish the work ensure that all the parameters we are passing are prefixed with PB_ to avoid any more trouble from environment variables changing the official builds. cc @chcosta @MattGal +16163 area-System.Runtime Remove unnecessary environment set in Enumerate We can't and aren't validating that we can set every existing variable and even attempting to isn't possible in some contexts. (WinRT and Machine notably) #16156 @stephentoub, @ianhays +16165 area-System.Data Move DataSet & DataAdapter out of System.Data.Common It feels like in .NET Standard 1.7/2.0 that `System.Data.Common` is growing beyond just what's required to implement a basic ADO.NET provider. Talking with @divega, it seems that features like `DataSet` and `DataAdapter` could be split out into a separate contract like `System.Data.DataSet`. APIs like `DbConnection.GetSchema()` and `DbDataReader.GetSchemaTable()` are a little tricky because they return `DataTable`, but they could be handled with extension methods like the existing `DbDataReaderExtensions` and marker interface `IDbColumnSchemaGenerator`. cc @roji +16166 area-System.IO Add async tests for GZipStream Thanks to @stephentoub in https://github.com/dotnet/corefx/pull/16054 it was revealed that we weren't testing GZipStream's async methods. This PR modifies the existing DeflateStream async methods to be used for GZipStream as well. +16167 area-System.Net Disable network test that is failing regularly Manual_CertificateSentMatchesCertificateReceived_Success is causing windows_nt to fail, so add back the [ActiveIssue] that was removed a few days ago. See https://github.com/dotnet/corefx/issues/16148 +16169 area-System.Net Disable networking test failing only on fedora and redhat. This is to unblock builds from fireball till #13323 investigation is complete. cc @mattgal @steveharter @tmds @omajid +16170 area-Infrastructure Fix run-test.sh This makes run-test.sh work in x64/linux. Remove useless argument and add --runtime argument to pass runtime directory Not works for cross compile yet (ex. build in x64 & run in arm) +16171 area-System.Net Disable networking test on Windows7 pending investigation. This is to unblock CI in the time the issue #16133 is under investigation. cc @danmosemsft +16172 area-Infrastructure ci.dot.net not responding Eg the badges on the homepage are dead, etc. @mmitche +16174 area-Infrastructure [arm32/Linux] Remove workaround to prevent armel package restore In PR #16139, we restore packages for x64 (instead of armel), since armel host packages are not yet available (CoreFX has a cyclic dependency on upstack repo for this). Once Core-Setup publishes packages for Host for Linux Armel (arm32), #16139 should be reverted. There is a same issue for arm (#15519) which can be closed by now. Related issue for arm32 CI (Issue #16175): We have to update ARM CI script in #15900 to use standard options for armel to specify architecture when building CoreFX for armel. CC @gkhanna79 @weshaggard @ericstj @hqueue @jyoungyun @hseok-oh +16175 area-Infrastructure [arm32/CI] host packages are not yet available for armel We can not use `-buildArch` and `-RuntimeOS` for armel when building managed code, because armel host packages are not yet available. For example, we can build managed code for ubuntu.16.04-arm with following options. `./build-managed.sh -Release -buildArch=arm -RuntimeOS=ubuntu.16.04` But we can't build for tizen.4.0.0-armel yet, so we build managed code with following workaround command witch restore x64 host packages instead of armel host packages. `./build-managed.sh -Release` We use the workaround command for arm32 CI for armel too. (in PR #15900) Therefore when armel host packages are published, we have to update arm32 CI script for armel to use standard options. Related issue is tracked at #16174. @gkhanna79 @jyoungyun +16176 area-System.Data EF Core SqlClient and App Insights What can be the reason for not seeing raw SQL in EF app insights in net core project? Not locally nor in Azure. I remember at some point with one of the RCs I saw SQL logged but not anymore. Originally, I posted the question here https://github.com/aspnet/EntityFramework/issues/5510 but was referred to this repo. +16177 area-Infrastructure Standalone packages built from CoreFX should depend on NetStandard.Library and Microsoft.NetCore.App Seems like CoreFX is still using granular package references for dependencies in both netstandard1.1 and netcoreapp2.0. Why is that? Here's an example of System.Memory: ![image](https://cloud.githubusercontent.com/assets/95136/22962800/1a6e908e-f304-11e6-8d14-d02e49988d22.png) /cc @weshaggard @ericstj @Petermarcu +16178 area-System.Data "There is no test result generated under ""System.Data.SqlClient.Stress.Tests""" "Failed on OSX.1011.Amd64:AnyCPU-Debug in build 20170215.01, under ""System.Data.SqlClient.Stress.Tests"". But there is no test result generated. detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170215.01/workItem/System.Data.SqlClient.Stress.Tests/wilogs" +16179 area-System.Net Socket Close sets socket to non-blocking instead of blocking Socket.cs has a comment at: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L4847 ``` // Go to blocking mode. ``` and the implementation is ``` errorCode = SocketPal.SetBlocking(_handle, false, out willBlock); ``` I don't think Linux supports a non-blocking close, so it won't affect the behavior there. Perhaps it will cause bugs on other platforms, Windows in particular. +16180 area-System.Net create sockets and open files with CLOEXEC by default Sockets should not be shared with child processes. So probably it makes sense to add SOCK_CLOEXEC when creating a socket. https://github.com/dotnet/corefx/blob/7a230270559cfbef056aaafc022cdfd8fd3d829e/src/Native/Unix/System.Native/pal_networking.cpp#L2363 +16181 area-System.Net ServicePointManager in dotnet 1.0.0-preview2-1-003177 In which assembly can I find `ServicePointManager`? +16183 area-System.Collections Add a HashSet.CreateSetComparer overload taking an IEqualityComparer `null` is treated as shorthand for `EqualityComparer.Default`. Consider two sets equal iff for each element in either there is an element in the other that the passed comparer considers equal. Take some short-cuts where available, but only if it results in the precise behaviour described above. Keep old behaviour in current overload. Closes #14416 Offers a workaround to #12560 +16184 area-System.Data Missing DbProviderFactory::CreatePermission public method DbProviderFactory used to have `public virtual CodeAccessPermission CreatePermission(PermissionState state)` now it doesn't: https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DbProviderFactory.cs However, OdbcFactory still have it: https://github.com/dotnet/corefx/blob/master/src/System.Data.Odbc/src/System/Data/Odbc/OdbcFactory.cs#L51 /cc @marek-safar +16185 area-Meta Events not fired on inkcanvas after changing InputDeviceTypes I'm using an inkCanvas in a UWP application, when I change the property InputDeviceTypes events like PointerExited or PointerMoved are not fired anymore, it's a bug or shall I subscribe to different events? Thanks in advance. +16187 area-System.IO SetCreationTime, SetLastAccessTime, SetLastWriteTime Should not open a new stream to obtain a SafeFileHandle I know that in many cases it is ok to do so, but we found ourself in the case where we need to set file times without closing the actual `FileStream`, and this is possible via Windows API. To do so we had to write **unsafe** code which mimic the functionality of the [existing functions](https://referencesource.microsoft.com/#mscorlib/system/io/file.cs,63bd669b43be5f17,references). (which include rewriting [`System.IO.__Error.WinIOError()`](https://referencesource.microsoft.com/#mscorlib/system/io/file.cs,63bd669b43be5f17), this is obviusly a bad thing, because we have to maintain code wich already exist) This could be extremely more usable and **maintainable** if the framework exposed those methods as `SafeFileHandle` Method/ExtensionMethod. My proposal is to leave those functions unaltered but move the actual implementation in an ipotetic function: `SafeFileHandle.SetFileTimesUtc(DateTime? creationTimeUtc, DateTime? lastAccessTimeUtc, DateTime? lastWriteTimeUtc)` which should be public. +16195 area-System.Runtime ValueTuple in desktop 4.6 app clashes with that of mscorlib 4.7 Repro: 1. Make a trivial app targeting 4.6 involving tuples (you must add a reference to ValueTuple package) 2. On a machine with 4.7 installed, try to debug that program 3. The program runs fine, with modules listed below (ValueTuple.dll from the corefx package included in the app, mscorlib.dll from desktop 4.7) 4. In the EE (Immediate Window, Watch, QuickWatch) type something that involves tuple syntax This will give an error CS8179, because the compiler found two instances of the well-known type (that is ambiguity). ![image](https://cloud.githubusercontent.com/assets/12466233/22987819/f5db50b6-f364-11e6-9bc2-051b4781a2e4.png) ``` (1, 2) error CS8179: Predefined type 'System.ValueTuple`2' is not defined or imported t = (1, 2) error CS8179: Predefined type 'System.ValueTuple`2' is not defined or imported ``` ```C# static void Main(string[] args) { (int first, int second) t = (1, 1); while(true) { Thread.Sleep(1000); Console.WriteLine(t.first); t.first++; } } ``` FYI @tmat @VSadov @cston @AlekseyTs +16196 area-Serialization Enable XmlSerializer to Soap Encode Array The fix is to enable XmlSerializer to serialize/deserialize array into/from soap-encoded message. Fix #15525 +16197 area-Infrastructure Disable official test runs for Fedora 23 (EOL'ed). Previously I mistakenly thought only Fedora 24 was included in the post-dev/eng updates. This completes yesterday's PR ( https://github.com/dotnet/corefx/pull/16151 ). We'll eventually want to bring Fedora 25 online, which will need additions to pipeline.json and a new VM set. @danmosemsft @chcosta +16198 area-System.Runtime Expose String.EndsWith(char) and String.StartsWith(char) Expose String.EndsWith(char) and String.StartsWith(char). Depends on https://github.com/dotnet/coreclr/pull/9228 +16199 area-System.Diagnostics Update AspNetCoreHosting keyword Add httpContext.TraceIdentifier and httpContext.Response.StatusCode keywords which provide useful information for correlation. Note: It's backporting #15179 to 1.1.0 release branch. +16200 area-System.Net Failure in System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.Manual_CertificateSentMatchesCertificateReceived_Success(numberOfRequests: 6, reuseClient: False) https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/lastCompletedBuild/testReport/ System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.Manual_CertificateSentMatchesCertificateReceived_Success(numberOfRequests: 6, reuseClient: False) (from (empty)) ``` Failing for the past 2 builds (Since Failed#97 ) Took 0.97 sec. Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The client certificate credentials were not recognized +++++++++++++++++++ STACK TRACE: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__59.MoveNext() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 487 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__27.MoveNext() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 139 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_1.<b__2>d.MoveNext() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ClientCertificates.cs:line 92 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.<>c__DisplayClass5_1.<b__4>d.MoveNext() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ClientCertificates.cs:line 129 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in D:\j\workspace\outerloop_win---65ef7d78\src\Common\tests\System\Net\Http\LoopbackServer.cs:line 58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.d__5.MoveNext() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ClientCertificates.cs:line 103 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() in D:\j\workspace\outerloop_win---65ef7d78\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs:line 62 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 851 ``` @steveharter @Priya91 could you please fix or disable this today to get our badge green? +16201 area-System.Net Curl exception: Problem with the SSL CA cert (path? access rights?) on centos, fedora, redhat. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_portablelinux_debug/lastCompletedBuild/testReport/System.Net.Tests/HttpWebRequestHeaderTest/GetResponse_UseDefaultCredentials_ExpectSuccess_remoteServer__https___corefx_net_cloudapp_net_Echo_ashx_/ ``` MESSAGE: System.Net.WebException : An error occurred while sending the request. Problem with the SSL CA cert (path? access rights?)\n---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\n-------- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) +++++++++++++++++++ STACK TRACE: at System.Net.HttpWebRequest.GetResponse() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 989 at System.Net.Tests.HttpWebRequestHeaderTest.GetResponse_UseDefaultCredentials_ExpectSuccess(Uri remoteServer) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs:line 46 ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__59.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 487 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.HttpWebRequest.d__188.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1192 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.HttpWebRequest.GetResponse() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 985 ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 640 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_portablelinux_debug/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 852 ``` @steveharter @Priya91 please either fix or (presumably) disable today, so we can get a green badge. +16202 area-System.Net System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate is failing "These are failing Logs at https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/lastCompletedBuild/testReport/ `System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The data is invalid` ``` System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""\"", expectedFragment: \""#origFragment\"", useRelativeRedirect: False) 14 ms 6 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: False) 4 ms 6 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: True) 5 ms 6 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: False) 6 ms 6 System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: True) 5 ms 6 All Tests ``` @Priya91 @steveharter please fix or (presumably) disable today so we can get a green badge. Click in to see the logs. " +16209 area-System.Runtime Need an efficient helper to check if an instance of T is a default(T) The need arises once in a while to check if a value at hand is not initialized. See for example comments on https://github.com/dotnet/corefx/pull/16122#discussion_r100925338 Also, If/when parameterless constructors for structs are introduced, the need for `IsDefault` check could become more apparent. +16213 area-System.Net Timing issue with Socket.ReceiveAsync causes occasional corrupted data "Code below. Short version of this problem: We have a timing issue in the p/invoke logic for WSARecv that can cause received data to be corrupted when you use SocketAsyncEventArgs and ReceiveAsync in a particular way. You need to: (a) Use multiple buffers via SocketAsyncEventArgs.BufferList (not SetBuffer) (b) In the completion callback for the ReceiveAsync, you need to change the BufferList and then call ReceiveAsync. Fix is forthcoming. I want to investigate if we have any other similar p/invoke issues. ```c# using System; using System.Net; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication8 { class Program { private const byte sendByte = 0xAB; private const byte fillByte = 0xDD; private const byte previousFillByte = 0xEE; static void RunServer(TcpListener listener) { var server = listener.AcceptTcpClient(); byte[] buffer = new byte[8192]; while (true) { int bytes = server.Client.Receive(buffer); if (bytes == 0) return; server.Client.Send(buffer, 0, bytes, SocketFlags.None); } } static void DoSend(TcpClient client) { // Allocate and init buffer byte[] buffer = new byte[24]; for (int i = 0; i < buffer.Length; i++) buffer[i] = sendByte; // Send forever while (true) client.Client.Send(buffer); } static void Main(string[] args) { // Run server TcpListener listener = new TcpListener(IPAddress.Any, 5678); listener.Start(); Task.Run(() => RunServer(listener)); // Connect client = new TcpClient(""localhost"", 5678); // Spawn task to send repeatedly Task.Run(() => DoSend(client)); asyncEventArgs = new SocketAsyncEventArgs(); asyncEventArgs.Completed += (s, e) => { AsyncEventArgsOnCompleted(false, e); }; buffer = new byte[bigBufferLength]; currentSegment = new ArraySegment(buffer, 0, length); BeginReceive(); while (true) { Console.ReadKey(); } } private const int length = 8192; // Receive length private const int bigBufferLength = 1024 * 1024; private const int increment = 10; private static SocketAsyncEventArgs asyncEventArgs; private static byte[] buffer; private static int lastWriteIndex = 0; private static TcpClient client; private static ManualResetEventSlim callerExited = new ManualResetEventSlim(false); private static ArraySegment currentSegment; private static ArraySegment previousSegment; private static void BeginReceive() { // Overwrite previous read previousSegment = currentSegment; Fill(new ArraySegment(buffer, currentSegment.Offset, increment), previousFillByte); // Fails if true, succeeds if false #if true lastWriteIndex = lastWriteIndex + increment; if (lastWriteIndex + length > buffer.Length) lastWriteIndex = 0; #else lastWriteIndex = 0; #endif currentSegment = new ArraySegment(buffer, lastWriteIndex, length); // Fails if true, succeeds if false #if true asyncEventArgs.BufferList = new ArraySegment[] { currentSegment }; #else asyncEventArgs.SetBuffer(currentSegment.Array, currentSegment.Offset, currentSegment.Count); #endif Fill(currentSegment, fillByte); callerExited.Reset(); if (!client.Client.ReceiveAsync(asyncEventArgs)) { callerExited.Set(); AsyncEventArgsOnCompleted(true, asyncEventArgs); } else { callerExited.Set(); } } private static void AsyncEventArgsOnCompleted(bool sync, SocketAsyncEventArgs socketAsyncEventArgs) { if (socketAsyncEventArgs.SocketError != SocketError.Success) throw new Exception(""Socket error on receive""); if (socketAsyncEventArgs.BytesTransferred == 0) throw new Exception(""Unexpected closed socket on receive""); if (GetItemAt(currentSegment, socketAsyncEventArgs.BytesTransferred - 1) != sendByte) { Console.WriteLine($""Received unexpected data. BytesTransferred: {socketAsyncEventArgs.BytesTransferred}, sync: {sync}, lastWriteIndex: {lastWriteIndex}, length: {length}""); ArraySegment foundSegment = socketAsyncEventArgs.BufferList[0]; if (foundSegment != currentSegment) { Console.WriteLine($""BufferList is incorrect. BufferList: ({foundSegment.Offset}, {foundSegment.Count}) Expected: ({currentSegment.Offset}, {currentSegment.Count})""); } else { Console.WriteLine($""BufferList is correct: ({foundSegment.Offset}, {foundSegment.Count})""); } for (int i = 0; i < socketAsyncEventArgs.BytesTransferred; i++) { byte item = GetItemAt(currentSegment, i); if (item != sendByte) { Console.WriteLine($""Check failed at byte {i}, value = {item}""); } } for (int i = 0; i < increment; i++) { byte item = GetItemAt(previousSegment, i); if (item != previousFillByte) { Console.WriteLine($""Previous segment was overwritten at byte {i}, value = {item}""); } } } // Uncomment this and it works //callerExited.Wait(); BeginReceive(); } private static void Clear(ArraySegment segment) { Array.Clear(segment.Array, segment.Offset, segment.Count); } private static void Fill(ArraySegment segment, T value) { for (int i = segment.Offset; i < segment.Offset + segment.Count; i++) segment.Array[i] = value; } private static T GetItemAt(ArraySegment segment, int index) { return segment.Array[segment.Offset + index]; } } } ```" +16216 area-Meta Fix #3862 - Double-Check locked patterns and consider static or Lazy for Singletons This is first of the few PRs for the changes to replace double-check locked patterns with static or Lazy constructs. +16217 area-System.Runtime Make typeof(T).IsValueType more efficient It would be nice to have a cost-free API to check whether a generic type is a class. You can check `default(T) != null` and be 100% confident something is a struct if that condition is true, but if `default(T) == null` then it could be a class or a nullable. The only way to tell right now is via reflection, using something like `typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(Nullable<>)`. I did want to use such an API several times in the past, although I can't recall where. One scenario I can think of though is if you want to treat `T` as an object if `T` is a class, but avoid boxing for structs. Does this sound like a good idea? Moved from https://github.com/dotnet/corefx/issues/16209 /cc @benaadams @jkotas +16221 area-System.Threading "Add primitive/exchange type for a ""single fire"" event" We have several places where we need to represent an event that fires once and classic .NET events are a poor way to represent it because of the following reasons: - Events don't describe if they fire once or multiple times, you have to trust the API (like a connection closed event handler should only fire once) - There's no way to poll events. In some cases it my be reasonable to check if the event has fired without subscribing. This is clunky with events. - There's no way to pass it around to others that may want to subscribe. If you want to do this with events, you need to pass around the object that the event hangs off of so that new handlers can be added. That might be a problem if you just want to scope things to the event itself. For these reasons ASP.NET tends to use CancellationTokens to represent such events e.g. https://github.com/aspnet/Hosting/blob/c4ea355ddfbe37234393af798b69943ee0ba649a/src/Microsoft.AspNetCore.Hosting.Abstractions/IApplicationLifetime.cs#L17-L30. Cancellation tokens aren't great in general because they aren't an abstraction. As an event implementor, you might want to bind directly to an underlying system without going through the cancellation token API. As as example of this, our caching API has an abstraction called an `IChangeToken` which is basically something with all of the above characteristics https://github.com/aspnet/Common/blob/8688579b29eb37f5b3a5b5dfdb83f0fad1063af5/src/Microsoft.Extensions.Primitives/IChangeToken.cs. Here's an example of a change token implementation that triggers based on polling the disk (you could imagine a more efficient API). https://github.com/aspnet/FileSystem/blob/c2d31b2df95aab3c758fa82b22f1ba9782b4bfd8/src/Microsoft.Extensions.FileProviders.Physical/PollingFileChangeToken.cs /cc @stephentoub +16222 area-System.Memory Faster Span Slim the span hot methods `.ctor`+`Slice` as they are very hot and always inlined Vectorized `IndexOf` for byte and `SequenceEqual` for byte and char /cc @jkotas +16223 area-Infrastructure All Tests failing > Failure to restore a package: Unable to resolve 'coveralls.io (>= 1.4.0)' for '.NETStandard,Version=v2.0'. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/external/test-runtime/XUnit.Runtime.depproj] Example: https://github.com/dotnet/corefx/pull/16222 +16225 area-System.Security System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyChainFromHandle_Unix failed @steveharter could you please fix or disable today? Red badge. /cc @bartonjs https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/lastCompletedBuild/testReport/System.Security.Cryptography.X509Certificates.Tests/ChainTests/VerifyChainFromHandle_Unix/ ``` MESSAGE: System.Diagnostics.Debug+DebugAssertException : \n\n at System.Environment.get_StackTrace()\n at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage)\n at System.Diagnostics.Debug.Assert(Boolean condition)\n at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.EnsureFilePermissions(FileStream stream, UInt32 userId) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs:line 384\n at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.Add(ICertificatePal certPal) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs:line 189\n at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 135\n at Internal.Cryptography.Pal.ChainPal.SaveIntermediateCertificates(X509ChainElement[] chainElements, HashSet`1 downloaded) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/ChainPal.cs:line 158\n at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/ChainPal.cs:line 90\n at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118\n at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 105\n at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyChainFromHandle_Unix() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 134\n at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)\n at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)\n at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1()\n at Xunit.Sdk.ExecutionTimer.d__4.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction)\n at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code)\n at Xunit.Sdk.TestInvoker`1.d__46.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance)\n at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestInvoker`1.b__45_0()\n at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code)\n at Xunit.Sdk.XunitTestRunner.d__4.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator)\n at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code)\n at Xunit.Sdk.TestRunner`1.d__43.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestRunner`1.RunAsync()\n at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestCaseRunner`1.RunAsync()\n at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync()\n at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestMethodRunner`1.RunAsync()\n at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync()\n at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestClassRunner`1.RunAsync()\n at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync()\n at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext()\n at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)\n at Xunit.Sdk.TestCollectionRunner`1.RunAsync()\n at System.Threading.Tasks.Task`1.InnerInvoke()\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\n at System.Threading.Tasks.Task.ExecuteEntry()\n at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state)\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\n at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc()\n at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _)\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\n at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition) at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.EnsureFilePermissions(FileStream stream, UInt32 userId) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs:line 384 at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.Add(ICertificatePal certPal) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs:line 189 at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 135 at Internal.Cryptography.Pal.ChainPal.SaveIntermediateCertificates(X509ChainElement[] chainElements, HashSet`1 downloaded) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/ChainPal.cs:line 158 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/ChainPal.cs:line 90 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 105 at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyChainFromHandle_Unix() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 134 ``` +16227 area-System.Security JwtBearerAuthentication fails on AWS Lambda JTW authentication works on local windows development but fails on Linux Getting following error [Information] Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware: Bearer was not authenticated. Failure message: IDX10503: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.X509SecurityKey , KeyId: **************************** '. Exceptions caught: 'System.PlatformNotSupportedException: Operation is not supported on this platform. at Internal.Cryptography.Pal.OpenSslX509Encoder.BuildRsaPublicKey(Byte[] encodedData) at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) at Microsoft.IdentityModel.Tokens.X509SecurityKey.get_PublicKey() at Microsoft.IdentityModel.Tokens.CryptoProviderFactory.IsSupportedAlgorithm(String algorithm, SecurityKey key) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(Byte[] encodedBytes, Byte[] signature, SecurityKey key, String algorithm, TokenValidationParameters validationParameters) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters) +16228 area-System.IO SerialPort: Move test file locations and set namespaces Multiple commits to avoid confusing Git move-tracking. It's is difficult to avoid class-with-same-name-as-namespace problems here, but hopefully what I've ended-up with is acceptable. Multi-directory tests within corefx seem to be arranged with a variety of layouts/naming conventions, so I tried to pick something which was reasonably consistent with that. There are no changes beyond the moves and the namespace changes, and the deletion of the example 'smoke test' which seems to be redundant now. +16229 area-Meta Cleanup types duplicated between CoreCLR and CoreFX The following types are implemented in BOTH CoreFX and CoreCLR (corelib). Generally a type doesn't need to be duplicated. If it has to be in corelib (because other types in corelib need it) it can be removed from CoreFX. (Exception, where only a small piece of the type is actually needed in corelib, it can be convenient to leave the full implemention in Corefx - it shares for free and easier to work on there. However the corelib copy should be renamed to avoid confusion (eg Internal prefix)) Need to go through these and de-dupe/rename as appropriate. Note implementations will have diverged so the copies need to be reconciled first. Eg., BitConverter implementations are quite similar, but reformatted and not quite identical implementation. ``` public static class BitConverter public static class Environment public interface IServiceProvider public abstract class CollectionBase : ICollection, IEnumerable, IList public static class StructuralComparisons public abstract class KeyedCollection : Collection public class ReadOnlyDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary public enum SearchOption public static class RuntimeReflectionExtensions public static class CompilerMarshalOverride public sealed class SpecialNameAttribute : Attribute public static class FormatterServices public abstract class SecurityState public class CountdownEvent : IDisposable public sealed class ThreadAbortException : SystemException ``` +16231 area-System.Linq Prohibit open generics in Expression.Property and Expression.Field Contributes to #8081. Also fill other testing gaps in MemberExpression. +16233 area-System.Linq Prohibit open generic delegate types for LambdaExpression Contributes to #8081 +16235 area-System.Diagnostics System.Diagnostics.Tests.ProcessTests.Process_StartTest fail in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3528/ ``` System.Diagnostics.Tests.ProcessTests.Process_StartTest [FAIL] 13:55:16 System.ComponentModel.Win32Exception : Access is denied 13:55:16 Stack Trace: 13:55:16 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(96,0): at System.Diagnostics.Process.Kill() 13:55:16 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\tests\ProcessTests.netstandard.cs(197,0): at ``` +16236 area-Meta Look at the gaps in the netfx test running @ericstj mention we have a test gap in the way we are running the NetFX tests. Eric want to to run the tests same way the customers runs their app on the desktop. currently we create the NetFX runtime folder and we use a config file for the tests to make it point at the assemblies in the Runtime folder which is different than what customers do in the real scenarios https://github.com/dotnet/corefx/pull/16215 +16237 area-System.Net Disable Crypto tests for Fedora\Ubuntu Per issue #16225 and #9293 disable some Fedora and Ubuntu tests that are failing in CI due to hardware using NTFS partitions instead of Unix. +16238 area-Infrastructure Nothing is consuming signed binaries. Somewhat related to https://github.com/dotnet/corefx/issues/16126. I looked into some of the recent packages and they are unsigned. I believe this is because the signing is happening on the TargetPath but we're packaging the binplaced output of the project. It seems that when the signing task copies the signed file back from the signing server it breaks the hardlink. This will be coicidentally fixed when I do the work described here: https://github.com/dotnet/corefx/issues/14594, but that's only a fix for packaging. The tests also run on a binplaced copy of the project output, so that means that the tests are also getting unsigned binaries. /cc @weshaggard @mellinoe +16240 area-System.IO CI Failure in System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/3515/testReport/junit/System.IO.Tests/FileStream_LockUnlock/OverlappingRegionsFromOtherProcess_ThrowsException_fileLength__10__firstPosition__3__firstLength__5__secondPosition__2__secondLength__4_/ ``` Stacktrace MESSAGE: Assert.Equal() Failure\nExpected: 42\nActual: 145 +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 159 at System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(Int64 fileLength, Int64 firstPosition, Int64 firstLength, Int64 secondPosition, Int64 secondLength) in /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/System.IO.FileSystem/tests/FileStream/LockUnlock.cs:line 169 ``` +16241 area-System.Net Fix Http test that randomly fails under Windows Addresses #13938 where the test is failing randomly under Windows due to random exception when an http request is being canceled. The fix is to allow the exception (or faulted task) in Windows because in Windows, when the task is canceled, the request handle is destroyed, which may cause an ObjectDisposedException (or other http exception) in other tasks. Also applies to #14519 (make system.net tests reliable) +16242 area-System.Data Connection terminated during SQL test This broke our test run. @saurabh500 is this related to test or implementation (some loopback connection?), or is it infrastructure? https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_debug/lastCompletedBuild/testReport/System.Data.SqlClient.Tests/DiagnosticTest/ExecuteScalarTest/ ``` MESSAGE: System.Data.SqlClient.SqlException : A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 2 - Connection was terminated) +++++++++++++++++++ STACK TRACE: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 1153 at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnection.cs:line 242 at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs:line 1206 at System.Data.SqlClient.TdsParserStateObject.ThrowExceptionAndWarning(Boolean callerHasConnectionLock, Boolean asyncClose) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs:line 1041 at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs:line 2779 at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs:line 2235 at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs:line 2141 at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs:line 1186 at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs:line 1420 at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs:line 1685 at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlDataReader.cs:line 792 at System.Data.SqlClient.SqlDataReader.get_MetaData() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlDataReader.cs:line 252 at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 2307 at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 2182 at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 1976 at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 1937 at System.Data.SqlClient.SqlCommand.ExecuteScalar() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs:line 760 at System.Data.SqlClient.Tests.DiagnosticTest.b__6_0() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 48 at System.Data.SqlClient.Tests.DiagnosticTest.CollectStatisticsDiagnostics(Action sqlOperation) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 585 at System.Data.SqlClient.Tests.DiagnosticTest.ExecuteScalarTest() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 39 ``` +16244 area-System.Memory Make sure Memory and Unsafe are packaged w/o RID The workaround being used by our build system to only build these packages on Windows was leaking into the packaging. To fix that I overrode the packaging RID for Unsafe, since it was the only thing that actually needed the filtering. Then to fix Memory I added a reference assembly for unsafe and built against that instead. Eventually we'll be able to remove the filtering from unsafe but having a reference assembly for this is general goodness. I also tried to tackle cross-compiling Unsafe for netstandard.dll and hit what appears to be a bug in `ilasm`. It didn't like me claiming that System.Object was in netstandard, and instead tried to insist it was in mscorlib and added a reference to that to the output assembly. I could change System.Object to some other type (eg: System.Attribute) and it was fine. @jkotas I think this is one of those hard-coding-the core assembly bugs. We should see if it's fixed by using a newer ilasm (@mellinoe is working on that), if not we should hunt it down and fix it in coreclr. /cc @mellinoe @ahsonkhan @weshaggard +16246 area-Infrastructure Enable Dumpling for all Unix CI tests "* Pass a simple flag ""IsCIBuild"" in netci.groovy into each invocation of `build-tests.cmd/sh` * In dir.props, define a common set of properties that are contingent on ""IsCIBuild"", so that those properties don't need to be duplicated everywhere in netci.groovy. * Set EnableDumpling=true for Unix builds (Windows support forthcoming). I'm happy to undo the refactoring of netci.groovy and just add an extra parameter to all the calls, but this way felt a bit cleaner and will help us if we need to add additional properties in the future. @danmosemsft @sepidehMS @karelz " +16248 area-System.Net Canceling Http task may result in faulted task instead of canceled\completed See related issue https://github.com/dotnet/corefx/issues/13938 In Windows, when a response task is canceled, the request handle is destroyed, which may cause an ObjectDisposedException (or other http exception) in other tasks. The expectation should be the same as in Linux - a task status of Canceled, or perhaps RanToCompletion if the task already completed For example, the last Assert below may fail randomly (especially consistent in Windows 2008r2) because task.Status will be Faulted. ```` var cts = new CancellationTokenSource(); using (var client = new HttpClient()) using (HttpResponseMessage response = await client.GetAsync(Configuration.Http.RemoteEchoServer, HttpCompletionOption.ResponseHeadersRead)) using (Stream stream = await response.Content.ReadAsStreamAsync()) { var buffer = new byte[2048]; Task task = stream.ReadAsync(buffer, 0, buffer.Length, cts.Token); cts.Cancel(); Assert.True(((IAsyncResult)task).AsyncWaitHandle.WaitOne(new TimeSpan(0, 5, 0))); Assert.True(task.Status == TaskStatus.RanToCompletion || task.Status == TaskStatus.Canceled); } ```` We need to decide if we should harden the code to check the cancellationtoken and\or invalid handle in the various windows-only Http code such as in WinHttpResonseStream and avoid a random ObjectDisposedException, task canceled exception or other http exception depending on timing. Avoiding a race condition in this check may or may not be feasible (as handle or cancellationtoken may change to invalid\cancel in other thread) so consider try\catch of certain exceptions instead and then verify handle and\or cancellationtoken. cc @stephentoub @CIPop @davidsh +16251 area-Infrastructure Crossbuild was reporting incorrectly to the infrastructure. - Add arm as a Platform param for reporting for crossbuild skip ci please +16253 area-System.Net Change host to idnhost on curlhandler. cc @stephentoub @davidsh @CIPop @geoffkizer @karelz Verified with the URL provided in the issue, and the request is successfully parsed by curl. May require setting up a unicode Url on azure for automated testing similar to the echo servers. The other unicode chars in the IRI are percent-encoded while constructing the Uri in the Uri class, hence only handling the host part here. fixes #11213 +16254 area-System.Collections Please add extension method Dictionary.TryGetValue return nullable I think this extension method would be useful ```C# public static V? TryGetValue(this IDictionary dict,K key) where V : struct { V v; return dict != null && dict.TryGetValue(key,out v) ? v : (V?)null; } public static V Get(this IDictionary dict,K key,V defaultValue) where V : struct { return dict?.TryGetValue(key) ?? defaultValue; } public static V Get(this IDictionary dict,K key) where V : class { V v; return dict != null && dict.TryGetValue(key,out v) ? v : null; } ``` +16255 area-Infrastructure All tests on build 20170217.01 failed to generate the test results Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170216.03 Most of the tests failed on Debian.82, Fedora.23, OSX.1011, Redhat.72, Ubuntu.1404, Ubuntu.1610, Win10 & SUSE.428. +16256 area-System.IO "[backport request] IOException during ""File.WriteAllText"" to the file under NFS on Linux with corefx 1.0.3" "At first, I'd like to confirm can I request backport here? If not, I'll turn down my PR. I'm facing below IOException with this simple code when ``/mnt/volume`` is a NFS shared directory even if the user of process has a valid access to ``/mnt/volume`` and it exists. ```cs File.WriteAllText(@""/mnt/volume/test.txt"", ""TextToWrite""); ``` ``` System.UnauthorizedAccessException: Access to the path '/mnt/volume/output.txt' is denied. ---> System.IO.IOException: Bad file descriptor --- End of inner exception stack trace --- at System.IO.UnixFileStream.CheckFileCall(Int64 result, Boolean ignoreNotSupported) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding) at System.IO.File.WriteAllText(String path, String contents) at ConsoleApplication.Startup.<>c.<b__1_0>d.MoveNext() ``` This error only occurs on .NET Core 1.0. If I updated .NET Core to 1.1 (update project.json and use the .NET Core 1.1 runtime), this doesn't occur. From the stacktrace, I suspect this commit fixed the problem. https://github.com/dotnet/corefx/commit/60d1b3d22eca28ca3dfe375d0cefd2bd16059261 I think .NET Core 1.0 is still LTS phase, so is there any possibility to backport this commit to 1.0.x to fix the issue? Here is the dotnet info where I reproduce this issue. ``` # dotnet --info .NET Command Line Tools (1.0.0-preview2-003156) Product Information: Version: 1.0.0-preview2-003156 Commit SHA-1 hash: 33dabee5d8 Runtime Environment: OS Name: rhel OS Version: 7.3 OS Platform: Linux RID: rhel.7.2-x64 ``` The dotnet info I confirmed .NET Core 1.1 fixes the isseu (on the same machine). ``` # dotnet --info .NET Command Line Tools (1.0.0-preview2-1-003175) Product Information: Version: 1.0.0-preview2-1-003175 Commit SHA-1 hash: bb053ed000 Runtime Environment: OS Name: rhel OS Version: 7.3 OS Platform: Linux RID: rhel.7.2-x64 ``` " +16257 area-Meta Feature request: integrate PluralizationService in .NET Hi, The [.NET reference source](https://github.com/Microsoft/referencesource) repo, contains the [PluralizationService](https://github.com/Microsoft/referencesource/tree/master/System.Data.Entity.Design/System/Data/Entity/Design/PluralizationService) used by the EF to pluralize class names etc. Could we see the pluralization service as part of the .NET? Is there a NuGet package for the .NET reference source? +16258 area-Infrastructure Performance tests erroring out "...or perhaps the instructions are out of date, or I'm missing something (again...). Attempting to run performance tests is failing with the following error: ``` G:\corefx\src\System.Collections\tests>msbuild /t:build,test /p:configurationgroup=Release /p:osgroup=Windows_NT /p:performance=true Build FAILED. ""G:\corefx\src\System.Collections\tests\System.Collections.Tests.csproj"" (build;test target) (1) -> (GenerateTestExecutionScripts target) -> G:\corefx\Tools\tests.targets(213,5): error MSB4018: The ""GenerateTestExecutionScripts"" task failed unexpe ctedly.\r [G:\corefx\src\System.Collections\tests\System.Collections.Tests.csproj] G:\corefx\Tools\tests.targets(213,5): error MSB4018: System.InvalidOperationException: Please provide at lea st one test command To execute via the TestCommands property.\r [G:\corefx\src\System.Collections\tests\Syst em.Collections.Tests.csproj] G:\corefx\Tools\tests.targets(213,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.GenerateTestExecutio nScripts.Execute()\r [G:\corefx\src\System.Collections\tests\System.Collections.Tests.csproj] G:\corefx\Tools\tests.targets(213,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microso ft.Build.BackEnd.ITaskExecutionHost.Execute()\r [G:\corefx\src\System.Collections\tests\System.Collections.T ests.csproj] G:\corefx\Tools\tests.targets(213,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() [G:\corefx\src\System.Collections\tests\System.Collections.Tests.csproj] ``` (this is occurring on at least this and `System.Threading.Tasks` performance tests, so I'm assuming it's a symptom of a larger problem). Note that I've built both libraries and tests, in both debug and release (and I feel like the fact I have to do so initially from the project root is a slight infrastructure wart, but hopefully it'll get better...)." +16259 area-System.Net Linux, exception in EasyRequest.Cleanup() when HttpCompletionOption.ResponseHeadersRead used "Hi, When i run on Ubuntu 14.04.5 LTS ```c# using (var hc = new HttpClient()) { var req = new HttpRequestMessage(HttpMethod.Post, ""http://cti.crypttech.com/home/test""); var content = new MultipartFormDataContent(); content.Add(new StringContent(""dummyKey1""), $""\""dummyValue1\""""); content.Add(new StringContent(""dummyKey2""), $""\""dummyValue2\""""); req.Content = content; var res = hc.SendAsync(req, HttpCompletionOption.ResponseHeadersRead).Result; var resultStream = res.Content.ReadAsStreamAsync().Result; using (var fs = File.OpenWrite(@""result.dat"")) { resultStream.CopyTo(fs); } } ``` I have error ```c# Source: System.Private.CoreLib Type: System.IO.IOException Message: The read operation failed, see inner exception. Stack trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.CurlHandler.CurlResponseStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Http.DelegatingStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) at TestClient.Program.Main(String[] args) in C:\TestClient\Program.cs:line 68 Source: System.Private.CoreLib Type: System.ObjectDisposedException Message: Cannot access a closed Stream. Stack trace: at System.IO.__Error.StreamIsClosed() at System.IO.MemoryStream.get_Length() at System.Net.Http.MultipartContent.ContentReadStream.set_Position(Int64 value) at System.Net.Http.CurlHandler.EasyRequest.Cleanup() at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` Some times i have other error ```c# Source: System.Private.CoreLib Type: System.IO.IOException Message: The read operation failed, see inner exception. Stack trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.CurlHandler.CurlResponseStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Http.DelegatingStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) at TestClient.Program.Main(String[] args) in C:\Users\khamzatsalikhov\Source\Workspaces\MicroCollection\SmartRest\TestClient\Program.cs:line 68 Source: System.Private.CoreLib Type: System.ObjectDisposedException Message: Cannot access a closed Stream. Stack trace: at System.IO.__Error.StreamIsClosed() at System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.MemoryStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.MultipartContent.ContentReadStream.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.CurlHandler.MultiAgent.TransferDataFromRequestStream(IntPtr buffer, Int32 length, EasyRequest easy) at System.Net.Http.CurlHandler.MultiAgent.CurlSendCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) ``` No problem occurs if i do not use ""MultipartFormDataContent"" or put ""HttpCompletionOption.ResponseContentRead"". But for me it's not possible because I download very large files by post with ""MultipartFormDataContent"". Best regards" +16260 area-System.Security RSA.SignData() does not work on Linux "I try to sign and verify binary data with RSA CryptoProvider. When I do this on Windows all works as expected, if I do this on Linux signature verification fails. If I sign data on Windows and then verify it on linux then verification works too, so the issue belongs to `SignData()` on Linux Here is the sample. Is there a workaround to avoid this verification fail? Linux OS: Ubuntu 16.04 dotnet --version 1.0.0-preview2-1-003177 Program.cs ```cs using System; using System.IO; using System.Security.Cryptography; using System.Xml; namespace ConsoleApplication { public class Program { static readonly RSASignaturePadding padding = RSASignaturePadding.Pkcs1; public static void Main(string[] args) { string pubKey = ""wKQuLluF0Lvl5YadBO5DZZXb/IaFVnROgstq1jcOTwbX+xHfmsEf6mr914EHCUvy2qDMJP4YDvxOaGlRBCcxLdRQ34eyqfFLyHu6kvFIngTqkHB8ZyqY4VBme7LRltI6447eqlMGaT6qYevmusVUI57/YBOZ72EObTW6fc285cdainCL54Kv/4C6AjTvgWgX/cv3Nov0nrjbWxFpTiqvBH4uFj6BVpK9n1gD+p/+HaL5LyQY5cgsvCw0s6othnXpw7hpFBlkGWlWudZswRs6+X6aZiBYiNi8jey+SmKq9AjSZO++gGdHbjuRfACt8BcHZx1/8P3YC93NWopXI4V8QQ==AQAB""; string privateKey = ""wKQuLluF0Lvl5YadBO5DZZXb/IaFVnROgstq1jcOTwbX+xHfmsEf6mr914EHCUvy2qDMJP4YDvxOaGlRBCcxLdRQ34eyqfFLyHu6kvFIngTqkHB8ZyqY4VBme7LRltI6447eqlMGaT6qYevmusVUI57/YBOZ72EObTW6fc285cdainCL54Kv/4C6AjTvgWgX/cv3Nov0nrjbWxFpTiqvBH4uFj6BVpK9n1gD+p/+HaL5LyQY5cgsvCw0s6othnXpw7hpFBlkGWlWudZswRs6+X6aZiBYiNi8jey+SmKq9AjSZO++gGdHbjuRfACt8BcHZx1/8P3YC93NWopXI4V8QQ==AQAB

7hztVniqA8ef8fQkB0a1Nwd9FnMhdKskamRAk3sDISqWa4HSXx3thxXHGx/DWAgWUWB+nxunsG+rcEkTttT64KLcF39dCzQ2Nk8ObBc6B0rBcRHTQKWaFJRy/mleQ28gzp+FBvVGLXE9UZu26Ksh6no8NCTJJgHGt0XvtaJUDZ8=

zxzNdpnbjewotKK2VXXPKlv2N/E7K1ijSTs0Lavm0aw2ccEbec0iTLIJBzyTt6QbM5GT8k9BROytpo0WxF99KRiX9zoezb6D2Wsf0a1tvOsy9ZsFa4HCgzsmNICu9dxEMpsppEr7bnw1NUfCBoJtxyNmA9zL33xItja+Mk3Mah8=Tgckr0VzUTHFdCAw/kFpeNL3ZrfrqrO6hzK7Bpk0+VVfXXN5YLoJ8E5upLDP7rUXuysH01PYq7SsVWtdDnjUjXBQ91JBRz6g1UMq0rj5xxH0Of1BYNnjmALdfAlDXo24Dn2vtgwCJzoIggmo8q3Bu3i66ct0LwQ9/ijo2HiNWrk=xzpLoqTKADGFzo0enAKhb3va02Fnq4CuQcmDndNYS6U/EhnSFk5vihtQd/ebmPFxgR+uk04N2QFa4XWiyu+X9CpGNHliHEQBjOlxSD9t6mbNNFkU05+UvqvtSl/m7XYe3BdJ7VJ7noI4pLIMQDrC4uZ4QYrpSmfBghYSy0zvL70=wKQuLluF0Lvl5YadBO5DZZXb/IaFVnROgstq1jcOTwbX+xHfmsEf6mr914EHCUvy2qDMJP4YDvxOaGlRBCcxLdRQ34eyqfFLyHu6kvFIngTqkHB8ZyqY4VBme7LRltI6447eqlMGaT6qYevmusVUI57/YBOZ72EObTW6fc285cdainCL54Kv/4C6AjTvgWgX/cv3Nov0nrjbWxFpTiqvBH4uFj6BVpK9n1gD+p/+HaL5LyQY5cgsvCw0s6othnXpw7hpFBlkGWlWudZswRs6+X6aZiBYiNi8jey+SmKq9AjSZO++gGdHbjuRfACt8BcHZx1/8P3YC93NWopXI4V8QQ==wKQuLluF0Lvl5YadBO5DZZXb/IaFVnROgstq1jcOTwbX+xHfmsEf6mr914EHCUvy2qDMJP4YDvxOaGlRBCcxLdRQ34eyqfFLyHu6kvFIngTqkHB8ZyqY4VBme7LRltI6447eqlMGaT6qYevmusVUI57/YBOZ72EObTW6fc285cdainCL54Kv/4C6AjTvgWgX/cv3Nov0nrjbWxFpTiqvBH4uFj6BVpK9n1gD+p/+HaL5LyQY5cgsvCw0s6othnXpw7hpFBlkGWlWudZswRs6+X6aZiBYiNi8jey+SmKq9AjSZO++gGdHbjuRfACt8BcHZx1/8P3YC93NWopXI4V8QQ==
""; var pub = ExtractFromXml(pubKey); var priv = ExtractFromXml(privateKey); //byte[] signature = File.ReadAllBytes(""signature.bin""); //byte[] content = File.ReadAllBytes(""content.bin""); var content = new byte[3] {1,2,3}; var signature = Authenticate(content, priv); bool result = Verify(content, signature, pub); Console.WriteLine(""verify={0}"", result); } public static bool Verify(byte[] dataToVerify, byte[] signature, RSAParameters publicKey) { using (var rsa = RSA.Create()) { rsa.KeySize = 2048; rsa.ImportParameters(publicKey); var verified = rsa.VerifyData(dataToVerify, signature, HashAlgorithmName.SHA256, padding); return verified; } } public static byte[] Authenticate(byte[] dataToSign, RSAParameters privateKey) { using (var rsa = RSA.Create()) { rsa.KeySize = 2048; rsa.ImportParameters(privateKey); var signature = rsa.SignData(dataToSign, HashAlgorithmName.SHA256, padding); return signature; } } public static RSAParameters ExtractFromXml(string xml) { var csp = new RSAParameters(); using (var reader = XmlReader.Create(new StringReader(xml))) { while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) continue; var elName = reader.Name; if (elName == ""RSAKeyValue"") continue; do { reader.Read(); } while (reader.NodeType != XmlNodeType.Text && reader.NodeType != XmlNodeType.EndElement); if (reader.NodeType == XmlNodeType.EndElement) continue; var value = reader.Value; switch (elName) { case ""Modulus"": csp.Modulus = Convert.FromBase64String(value); break; case ""Exponent"": csp.Exponent = Convert.FromBase64String(value); break; case ""P"": csp.P = Convert.FromBase64String(value); break; case ""Q"": csp.Q = Convert.FromBase64String(value); break; case ""DP"": csp.DP = Convert.FromBase64String(value); break; case ""DQ"": csp.DQ = Convert.FromBase64String(value); break; case ""InverseQ"": csp.InverseQ = Convert.FromBase64String(value); break; case ""D"": csp.D = Convert.FromBase64String(value); break; } } return csp; } } } } ``` project.json ```json { ""version"": ""1.0.0-*"", ""buildOptions"": { ""debugType"": ""portable"", ""emitEntryPoint"": true }, ""dependencies"": { }, ""frameworks"": { ""netcoreapp1.1"": { ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.1.0"" } }, ""imports"": ""dnxcore50"" } } } ``` " +16261 area-System.IO SerialPort: Incomplete BeginX operations prevent timely close/reopen There is a long-standing problem in the `SerialPort` interface which has survived the migration to Core. This delays the closing/disposing of a `SerialPort` which has incomplete `BeginRead/BeginWrite` operations on it. This often manifests itself as an inability to open a port immediately after closing it. Within Core this has given rise to issue #16055 - that issue contains some content from an MS-internal bug database which is useful reference. Ideally we would fix this at some point, as time-related close-then-reopen failures cause pain in real-life and don't do much good to the reputation of `SerialPort`. Can be left as up-for-grabs for the moment as I don't really know what's involved in a fix. +16265 area-System.Net ClientWebSocket bypass/accept invalid/expired ssl certificates Is there a way to bypass/accept invalid/expired ssl certificates when using ClientWebSocket? yes many will say it's not good for security etc... however it is very useful for testing. +16272 area-System.Net WIn7 Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate "Test is currently disabled for Win7. Please fix or verify if the test is not supposed to run on Win7. ``` System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""\"", expectedFragment: \""#origFragment\"", useRelativeRedirect: False) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: False) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: True) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: False) System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_AllowAutoRedirectTrue_RetainsOriginalFragmentIfAppropriate(origFragment: \""#origFragment\"", redirFragment: \""#redirFragment\"", expectedFragment: \""#redirFragment\"", useRelativeRedirect: True) ``` Stack trace: ``` MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The data is invalid +++++++++++++++++++ STACK TRACE: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\outerloop_win---75d58f69\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass45_1.<b__0>d.MoveNext() in D:\j\workspace\outerloop_win---75d58f69\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs:line 622 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in D:\j\workspace\outerloop_win---75d58f69\src\Common\tests\System\Net\Http\LoopbackServer.cs:line 58 at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__45.MoveNext() in D:\j\workspace\outerloop_win---75d58f69\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs:line 602 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() in D:\j\workspace\outerloop_win---75d58f69\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs:line 62 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in D:\j\workspace\outerloop_win---75d58f69\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 858 ```" +16274 area-System.Threading Proposal: LazyInitializer.EnsureInitialized(ref T target, ref object syncLock, Func valueFactory) ### Background System.Threading.LazyInitializer has several EnsureInitialized overloads that make it safe and easy to lazily initialize a field, e.g. ```C# private static SomethingExpensive s_expensive; public static SomethingExpensive Expensive => LazyInitializer.EnsureInitialized(ref s_expensive, () => SomethingExpensive()); ``` It has several overloads, that can be split into two groups: - Optimistic concurrency - Pessimistic concurrency ```C# public static class LazyInitializer { // Optimistic public static T EnsureInitialized(ref T target) where T : class; public static T EnsureInitialized(ref T target, System.Func valueFactory) where T : class; // Pessimistic public static T EnsureInitialized(ref T target, ref bool initialized, ref object syncLock); public static T EnsureInitialized(ref T target, ref bool initialized, ref object syncLock, System.Func valueFactory); } ``` The optimistic concurrency overloads don't use locks, only interlockeds. This means you don't need a separate lock object and the first access can be faster, but in a contended initialization situation, you may end up with multiple objects getting created (only one of them will be published/used). The pessimistic concurrency overloads do use locks, with a double-checked locking pattern. This means you can be guaranteed to only have one object instantiated in the case of contention, but you also need a separate lock object. For the pessimistic overloads, all of them work with any T, regardless of whether it's a value type or a reference type, and thus in addition to accepting an object, they also require passing a reference to a bool, which indicates whether the field has been initialized or not. That's great for value types, but often for reference types that additional Boolean field is unnecessary, as whether it's been initialized is covered by whether the field is null or not. ### Proposal: We should add the following overload: ```C# public static T EnsureInitialized(ref T target, ref object syncLock, System.Func valueFactory) where T : class; ``` (the same as one of the existing pessimistic overloads, but without the ref bool, and with a class constraint on T) This will allow EnsureInitialized to be used in situations where you're using a ref type, want double-checked locking, and don't want/need to have an extra bool field to track initialization, since that can be done via null/non-null of the target field itself. +16275 area-Meta [Feedback] Can not update to .NETCore 1.1.0 after upgrading to Microsoft.NETCore.UniversalWindowsPlatform v5.3.0 Internal bug 385268 & vsfeedback issue 806440 Create UWP project with VS2015 and upgrade UWP package to v5.2.2 Open project in VS2017 RC3 - RC4. Open Manage NuGet packages for solution and check available updates. Microsoft.NETCore.Runtime.CoreCLR v1.1.0 is listed as package available for update. Trying to update fails with error message: GET https://api.nuget.org/v3/registration1-gz/microsoft.netcore.jit/index.json OK https://api.nuget.org/v3/registration1-gz/microsoft.netcore.jit/index.json 661ms Restoring packages for E:\src\tools{Project path and Name}\project.json... GET https://api.nuget.org/v3-flatcontainer/runtime.win8-arm.microsoft.netcore.jit/index.json NotFound https://api.nuget.org/v3-flatcontainer/runtime.win8-arm.microsoft.netcore.jit/index.json 533ms Unable to resolve 'runtime.win8-arm.Microsoft.NETCore.Jit (>= 1.1.0)' for 'UAP,Version=v10.0 (win10-arm)'. Unable to resolve 'runtime.win8-arm.Microsoft.NETCore.Jit (>= 1.1.0)' for 'UAP,Version=v10.0 (win10-arm-aot)'. it seems that win7-x86 and win7-x64 versions are available on nuget while arm version of assembly is available only as a preview package Copied from: https://github.com/NuGet/Home/issues/4643 +16276 area-System.Numerics Add Narrow, Widen, and Conversion methods to System.Numerics.Vectors. This exposes the new functions approved in #15957 . @sivarv , @CarolEidt , @benaadams +16277 area-System.Net Re-enable Http test with fix for race condition "Fix for https://github.com/dotnet/corefx/issues/9543 The test was failing with ""a task has been canceled"" or ""The server returned an invalid or unrecognized response"". It appears there is a race condition where the server writes to the stream and then immediately disposes (when AcceptSocketAsync ends) but the client is still pending the read. The fix is to add 'socket.NoDelay = true' before the call to ReadWriteAcceptedAsync and then an 'await Task.Delay(100) afterwards. With some slight modifications to the original test to encourage the exceptions, I could repro an exception every 5-10 runs. When applying the NoDelay=true and Task.Delay(100) I have 750+ runs without exception so far (still running). cc @CIPop @davidsh " +16278 area-Infrastructure Remove unused VSTS Feed URL parameter /cc @chcosta @ChadNedzlek PTAL This appears to be unreferenced. +16281 area-System.Net Ignore curl error on failed proxy authentication. fixes #12015 Curl behaves differently when the proxy server returns 407 Authentication failure for the cases of connecting to a https server vs http server. Curl throws error 56 in case of https server and 0 in case of http server. Hence parsing for this difference and making .NET not throw CURL exception in case of https to match the http case and the Windows behavior. cc @stephentoub @davidsh @CIPop @geoffkizer @karelz @steveharter +16282 area-Meta Make RemoteExecutorConsoleApp runs against the full framework All tests using RemoteExecutorConsoleApp having it run under the dotnet host which is not correct for the netfx runs. The fix here is to allow running RemoteExecutorConsoleApp directly against the full framework and uses the same Netfx runtime bits. We have to copy the config file too to prevent assembly binding issues +16285 area-System.Linq Lighter numeric conversion compiling S.L.Expressions Switch on `TypeCode` instead of if-else ladder on type. Skip conversions where it will be a nop. Generate shorter IL when compiling `1L` for increment and decrement. (Comparison with Roslyn shows it to be taking the same approaches across these changes). +16286 area-System.Linq Use TryEmitConstant when FEATURE_COMPILE_TO_METHODBUILDER is set Includes the change from #15854 when this feature is turned on. Doesn't affect produced binaries and not currently testable within CI. This is to unblock @marek-safar who is using this feature. +16287 area-System.Linq API Change: Restore CompileToMethod in S.L.Expressions At https://github.com/dotnet/corefx/issues/11408#issue-174928345 @bartdesmet notes: > I'm not clear why this method was removed. In fact, we tend to use it quite often (despite its limitations to emit only to static methods) in Bing, so I'd be interested in getting it back in .NET Core. All the code still seems to be there; just the entry-point was removed rather than conditionally excluded. The entry-point came back conditionally excluded when that issue was closed. I also agree it can be useful, while I've only used it a handful of times myself, it was really useful those few times. That Xamarin is now using this feature adds another advantage, in that we can't test it, and hence catch regressions that could break Xamarin, without it. Mostly though I just think it can be useful, and is worth having. `CompileToMethod()` has dependencies on most of what is covered by `FEATURE_COMPILE` so replacing `FEATURE_COMPILE_TO_METHODBUILDER` with `FEATURE_COMPILE` would bring it back in those builds that can feasibly use it (i.e. have support for Emit). The mechanism for testing across both interpreter and compiler could be extended to test across all three possibities of interpreter, compiler and `CompileToMethod()` with dynamic methods, but other cases should probably be separate choices. `CompileToMethod()` would require a separate set of tests. - [ ] Approve change. - [ ] Replace `FEATURE_COMPILE_TO_METHODBUILDER` with `FEATURE_COMPILE` - [ ] Update `TryEmitConstants` to handle `TypeBuilder` constants when not emitting to `DynamicMethod` (may do this separately anyway if @marek-safar needs it). - [ ] Update tests to include `CompileToMethod()` with `DynamicMethod`s - [ ] Add tests for compiling to static methods. +16288 area-System.Linq Test SwitchExpression in S.L.Expressions that switch to gotos Special-cased by compiler and not yet covered in testing. Contributes to #11460 +16290 area-System.Net CheckMediaTypeFormat throws exception for valid Content Types "`MediaTypeHeaderValue.CheckMediaTypeFormat(String mediaType, String parameterName)` (https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Headers/MediaTypeHeaderValue.cs#L254-L266) throws exception for value ""text/html; charset=ISO-8859-4"" which is used as an example in the [w3 RFC 2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html). But, moreover why is this checked anyways? For example, what if I'd like to include invalid header values in my acceptance tests to ensure the server is responding appropriately? How should I set this up in my tests if I can't do this? This creates a limitation around which scenarios can be reproduced in code. ``` request.Content.Headers.ContentType = new MediaTypeHeaderValue(""text/html; charset=ISO-8859-4""); ``` From what I can tell this method disallows ANY [media type parameters](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7) which doesn't make much sense to me." +16292 area-System.Net fix(MediaTypeHeaderValue): should allow media type parameters Closes #16290 +16293 area-System.Data SqlClient Exception tests should be moved to inner loop SqlClient exceptions test should be moved to Inner Loop, at least the ones that can fail fast and provide results quickly. +16295 area-System.Collections Delay Random allocation in ConcurrentStack ConcurrentStack currently uses a randomized-backoff scheme, where under contention it spins for increasingly longer periods of time, with a duration influenced by some randomness. If the initial attempt at popping an item fails due to contention, it allocates a Random, then tries again one or more times, and then uses the randomness to influence backoff for subsequent attempts. While it's not clear to me that this scheme is optimal, we can at least delay the allocation of the Random (and the underlying cost it entails, like an int[] in its ctor) until it's actually used. Since it's typically not used for a few attempts, this significantly decreases the number of instances that get created under heavy contention. cc: @kouvel, @alexperovich +16296 area-System.Security Support OpenSSL 1.1 [OpenSSL 1.1.0 was released](https://www.openssl.org/news/openssl-1.1.0-notes.html) in August 2016. Various distributions are starting to switch to it now: - [Arch](https://lists.archlinux.org/pipermail/arch-dev-public/2017-January/028673.html) - [Debian](https://wiki.debian.org/OpenSSL-1.1) - [Fedora](https://fedoraproject.org/wiki/Changes/OpenSSL110) OpenSSL 1.1.0 breaks both API and ABI. There's a large list of APIs that were removed. Most structs were made opaque. As a result .NET Core in general and CoreFx in particular fails to build or run there. There's an incomplete list of API changes and porting tips available at [the OpenSSL Wiki](https://wiki.openssl.org/index.php/1.1_API_Changes). +16297 area-System.Data Enable exception tests in inner loop I have removed the [OuterLoop] attribute from exception tests. I found from Jenkins runs that ExceptionTests don't take too long to execute. E.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_rhel7.2_debug/lastCompletedBuild/testReport/System.Data.SqlClient.Tests/ExceptionTest/ Also local execution result ``` Discovering: System.Data.SqlClient.Tests Discovered: System.Data.SqlClient.Tests Starting: System.Data.SqlClient.Tests System.Data.SqlClient.Tests.ExceptionTest.ExceptionTests [STARTING] System.Data.SqlClient.Tests.ExceptionTest.ExceptionTests [FINISHED] Time: 5.3308509s System.Data.SqlClient.Tests.ExceptionTest.VariousExceptionTests [STARTING] System.Data.SqlClient.Tests.ExceptionTest.VariousExceptionTests [FINISHED] Time: 0.0242559s System.Data.SqlClient.Tests.ExceptionTest.IndependentConnectionExceptionTestExecuteReader [STARTING] System.Data.SqlClient.Tests.ExceptionTest.IndependentConnectionExceptionTestExecuteReader [FINISHED] Time: 0.0038109s System.Data.SqlClient.Tests.ExceptionTest.IndependentConnectionExceptionTestOpenConnection [STARTING] System.Data.SqlClient.Tests.ExceptionTest.IndependentConnectionExceptionTestOpenConnection [FINISHED] Time: 0.0061324s Finished: System.Data.SqlClient.Tests === TEST EXECUTION SUMMARY === System.Data.SqlClient.Tests Total: 4, Errors: 0, Failed: 0, Skipped: 0, Time: 6.016s ``` At the same time https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_rhel7.2_debug/105/testReport/System.Data.SqlClient.Tests/DiagnosticTest/ shows that a couple of tests in DiagnosticTest which were taking 30 seconds to complete. This was because the test server was not sending a TDS done token in the response. I also changed the error class to what the Sql Server sends for 1 / 0 errors. Fixes #16293 +16298 area-System.Memory Span: System.Memory is missing `unchecked` annotations It is causing different behaviors between debug and release builds. Repro: Run this against netfx debug build of System.Memory: ```c# static void Main() { var span = new Span(new int[1]); Console.WriteLine(span[-5]); } ``` Actual result: System.OverflowException Expected result: System.IndexOutOfRangeException +16300 area-Infrastructure Fix line lost from test targets https://github.com/dotnet/buildtools/pull/1232 got lost when Tools-Override was created. It's useful. +16305 area-Meta Remove unnecessary use of `GetTypeInfo()` in Linq/Expressions/Dynamic, etc.. Possibly a dupe. `GetTypeInfo` patterns like `someType.GetTypeInfo().IsValueType` were added to workaround initially reduced API surface of `System.Type`. I think we have most of those APIs back on `System.Type` and it is likely more efficient to call them directly. (need to confirm, but it is unlikely that calling via `Sysyem.Type` cost more since as last resort it could just use GetTypeInfo internally, although it is doubtful). +16306 area-System.Net pinning bug in Socket.SendTo on Windows From looking at the code, it appears we are not properly locking the socketAddress buffer to Socket.SendToAsync. https://github.com/dotnet/corefx/blob/bfac45af5dddcbd70b6935fcf92b4b8755f3cd1c/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Windows.cs#L947 The linked code does the following: (1) Call SetUnmanagedStructures with pinSocketAddress == false; so socketAddress won’t be pinned (2) Retrieve unmanaged pointer to the socketAddress buffer via asyncResult.GetSocketAddressPtr: (3) Pass this pointer to WSASendTo We need to either lock this buffer, or copy it locally to the stack before we use it. +16308 area-System.Net Unix SocketAsyncEventArgs implementation should clone user-provided buffer list When the user sets the BufferList property, we store it and then directly use this whenever we perform a socket operation, e.g.: https://github.com/dotnet/corefx/blob/684af05e70b345eecd503e23d0d6d4efd67f9130/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs#L251 This means that the user can mutate the list after setting it (or even concurrently), and we will see a different buffer list than they originally set. This is not the intended behavior. On Windows, we avoid this by preconstructing the WSABuffer structures when the BufferList is set, so we don't have this issue. We should clone the list when it's set to avoid this problem. +16310 area-System.Net GetResponse_UseDefaultCredentials_ExpectSuccess test failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_release/102/ System.Net.Tests.HttpWebRequestHeaderTest.GetResponse_UseDefaultCredentials_ExpectSuccess(remoteServer: https://corefx-net.cloudapp.net/Echo.ashx) [FAIL] System.Net.WebException : An error occurred while sending the request. Problem with the SSL CA cert (path? access rights?) ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs(989,0): at System.Net.HttpWebRequest.GetResponse() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs(47,0): at System.Net.Tests.HttpWebRequestHeaderTest.GetResponse_UseDefaultCredentials_ExpectSuccess(Uri remoteServer) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/HttpClient.cs(487,0): at System.Net.Http.HttpClient.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs(1192,0): at System.Net.HttpWebRequest.d__188.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs(984,0): at System.Net.HttpWebRequest.GetResponse() ----- Inner Stack Trace ----- /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs(637,0): at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs(864,0): at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) +16315 area-System.Security "Test: System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromSddlForm/TestCreateFromSddlForm failed with ""System.OverflowException & System.InvalidOperationException""" "Opened on behalf of @Jiayili1 The test `System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromSddlForm/TestCreateFromSddlForm(isContainer: False, isDS: False, sddl: \""O:LAG:SYD:AI(A;ID;FA;;;BA)(A;ID;FA;;;BO)(A;ID;FA...` has failed. System.OverflowException : Arithmetic operation resulted in an overflow. Stack Trace: at System.Security.AccessControl.GenericSecurityDescriptor.GetBinaryForm(Byte[] binaryForm, Int32 offset) at System.Security.AccessControl.GenericSecurityDescriptor.GetSddlForm(AccessControlSections includeSections) at System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromSddlForm.TestCreateFromSddlForm(Boolean isContainer, Boolean isDS, String sddl, String verifierSddl) Build : Master - 20170218.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug - AnyCPU-Debug - AnyCPU-Release - AnyCPU-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170218.01/workItem/System.Security.AccessControl.Tests/analysis/xunit/System.Security.AccessControl.Tests.CommonSecurityDescriptor_CreateFromSddlForm~2FTestCreateFromSddlForm(isContainer:%20False,%20isDS:%20False,%20sddl:%20%5C%22O:LAG:SYD:AI(A;ID;FA;;;BA)(A;ID;FA;;;BO)(A;ID;FA..." +16316 area-System.IO ShouldThrowIOExceptionDeletingCurrentDirectory failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/3539/consoleText System.IO.Tests.DirectoryInfo_Delete_bool.ShouldThrowIOExceptionDeletingCurrentDirectory [FAIL] Assert.Throws() Failure Expected: typeof(System.IO.IOException) Actual: (No exception was thrown) +16320 area-System.Diagnostics Add Attribute ActiveIssue(15844) to WaitChain() Method in class ProcessWaitingTests under System.Diagnostics.Process Add attribute [ActiveIssue(15844)] to disable test method: System.Diagnostics.Tests.ProcessWaitingTests.WaitChain(). +16322 area-System.IO (Packaging issue in System.IO.FileSystem) System.IO.File in .NET Standard library fails when run in unit test _From @davkean on January 20, 2017 3:49_ _From @gulbanana on December 16, 2016 11:28_ Possibly this issue should be in a vstest repository but I can't find one. Repro: https://github.com/gulbanana/repro-netstandard-systemio When using System.IO in a .NET Standard 1.4 class library, unit tests referencing the library fail. The error is `Message: System.IO.FileLoadException : Could not load file or assembly 'System.IO.FileSystem, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)` _Copied from original issue: dotnet/roslyn-project-system#975_ _Copied from original issue: Microsoft/vstest#363_ +16323 area-System.IO SerialPort: Refactor buffer waits There is a widely used pattern within the tests where the test blocks waiting for an expected number of bytes to be held in either the write or read buffers. There are various implementations of this in the legacy code - some have no timeout (and hence hang the test completely if there's a problem), some have a timeout but don't care if the timeout exceeded or not (which in some cases conceals defects in the test code), and some have a timeout followed by a separate check on buffer content. This PR refactors a large number of these tests to use simple helper methods which are more consistent in approach. We still have 100% run & pass where appropriate hardware is available: System.IO.Ports.Tests Total: 994, Errors: 0, Failed: 0, Skipped: 0, Time: 1112.919s +16325 area-System.IO Cleanup SerialPort.GetPortNames Instead of allocating a new `string[]` array to return, reuse the array returned from `RegistryKey.GetValueNames`. cc: @JeremyKuhne, @willdean +16328 area-Microsoft.CSharp Remove constant folding from RuntimeBinder. Fixes #15467 Fixes #15464 by rendering it obsolete. CC: @VSadov (Arguably `someDynamicContaininAnInt / 0` should be caught at the stage this removes and throw a `RuntimeBinderException` but fixing that would be more of an unusual case now, and as it currently throws `DivideByZeroException` the breaking change may not be worth it). +16330 area-System.Net rework some Windows p/invoke logic and related code Rework the p/invoke definitions and related logic, to try to ensure correctness, improve performance, and reduce memory usage. Several related changes: - Use explicit native types generally, to avoid unexpected p/invoke marshalling behavior. Avoid IntPtr. SafeHandle is fine. - Most native socket routines return a simple int, not a SocketError; fix this - Build struct parameters (e.g. WSABuffer, WSAMsg) on the stack where possible - Use explicit GCHandles in SocketAsyncEventArgs rather than Overlapped to do pinning. - Avoid reallocating Overlapped structures in SocketAsyncEventArgs - Try to enforce pinning semantics in SocketAsyncEventArgs using asserts and GCHandles Fixes #16213, #16306 @stephentoub @davidsh @cipop @Priya91 +16331 area-System.Collections Cut GetTypeInfo from ConcurrentDictionary and use switch over if-else `GetTypeInfo` is no longer a necessary step to get `IsValueType` so remove the call to it (contributes to #16305). Replace if-else ladder on `== typeof(…)` with switch on `GetTypeCode` so up to a dozen tests becomes at most 3. This makes it no longer necessary to test for enum types and get underlying type, so don't. Add a 64-bit type to the types covered in testing. +16334 area-System.Text Improve Encoding Fallback Tests (34.9%, 6.2%) Tracking issue Encoding Fallback issue was detected via CI failure in XML tests rather than via Encoding tests see: https://github.com/dotnet/corefx/pull/16252#issuecomment-280894383 /cc @danmosemsft +16336 area-System.Xml Improve code coverage for System.Private.Xml (53%) There are ~950 types in here, mostly in the System.Xml namespace. Some have good coverage, many not. We should reach 80-90% coverage on this. This is a great opportunity for an external contribution. https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16337 area-System.Data Improve code coverage for System.Data.Common (51%) https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16338 area-System.Net "Test: System.Net.Security.Tests.SslStreamStreamToStreamTest_Async/SslStream_StreamToStream_Write_ReadByte_Success failed with ""System.AggregateException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.SslStreamStreamToStreamTest_Async/SslStream_StreamToStream_Write_ReadByte_Success` has failed. System.AggregateException : One or more errors occurred. (VirtualNetwork: Timeout reading the next frame.) (The credentials supplied to the package were not recognized)\r ---- System.TimeoutException : VirtualNetwork: Timeout reading the next frame.\r ---- System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Net.Security.Tests.SslStreamStreamToStreamTest_Async.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() ----- Inner Stack Trace #1 (System.TimeoutException) ----- at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Test.Common.VirtualNetworkStream.<>c__DisplayClass27_0.b__0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Threading.Tasks.TaskToApm.End[TResult](IAsyncResult asyncResult) at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) ----- Inner Stack Trace #2 (System.ComponentModel.Win32Exception) ----- at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) Build : Master - 20170221.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170221.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamStreamToStreamTest_Async~2FSslStream_StreamToStream_Write_ReadByte_Success +16340 area-System.Net test failures in System.Net.NetworkInformation on a clean Windows build "I just synced up and I'm seeing the following test errors: ```xml ```" +16341 area-System.Security OverflowException in System.Security.AccessControl Fixed several overflow exceptions in both product and test code of System.Security.AccessControl. Note that there could be more overflows masked by issue #15041. Fix #16315 +16344 area-System.Linq Prohibit open generic comparison methods in SwitchExpression Contributes to #8081 Block a case of a method from an open generic type. +16346 area-System.Net Failure in ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/3698/consoleFull#-12002141512d31e50d-1517-49fc-92b3-2ca637122019 ``` System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success(serverProtocol: Tls11) [FAIL] 06:59:06 System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized 06:59:06 Stack Trace: 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs(167,0): at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(407,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(131,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(676,0): at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(783,0): at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(706,0): at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(767,0): at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(983,0): at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(886,0): at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(697,0): at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(614,0): at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslStream.cs(161,0): at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslStream.cs(257,0): at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) 06:59:06 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs(152,0): at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() 06:59:06 --- End of stack trace from previous location where exception was thrown --- 06:59:06 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 06:59:06 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 06:59:06 D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs(93,0): at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__9.MoveNext() 06:59:06 --- End of stack trace from previous location where exception was thrown --- 06:59:06 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 06:59:06 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 06:59:06 --- End of stack trace from previous location where exception was thrown --- 06:59:06 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 06:59:06 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 06:59:06 --- End of stack trace from previous location where exception was thrown --- 06:59:06 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 06:59:06 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +16347 area-System.Runtime Proposal: GCHandle.IsPinned(object) When writing code that uses unsafe code, APIs like Marshal.UnsafeAddrOfPinnedArrayElement, etc., it's often desirable to be able to assert that the object in question is in fact pinned. I'd like to see an API that would allow that to be done: ```C# public struct GCHandle { public static bool IsPinned(object value); ... } ``` Similar to how Monitor.IsEntered is mainly intended to be used in Debug.Asserts, this could then be used in Debug.Asserts as well, e.g. ```C# Debug.Assert(GCHandle.IsPinned(arr)); IntPtr arrPtr = Marshal.UnsafeAddrOfPinnedArrayElement(arr, 0); ... // pass arrPtr to P/Invoke ``` My understanding is the runtime doesn't currently track enough information to make such a look-up fast, but that's ok for the debug-only purposes for which it is intended. The runtime could do whatever parts of a GC scan are necessary to determine whether the object is pinned, worst case doing a full GC. +16348 area-System.Xml AV in System.Xml.XmlDocument.Tests in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/107/consoleText ``` Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at System.Xml.XmlTextReaderImpl.ElementNamespaceLookup() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 5051 at System.Xml.XmlTextReaderImpl.ParseElement() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 4500 at System.Xml.XmlTextReaderImpl.ParseDocumentContent() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 4036 at System.Xml.XmlTextReaderImpl.Read() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 1202 at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Dom\XmlLoader.cs:line 50 at System.Xml.XmlDocument.Load(XmlReader reader) in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Dom\XmlDocument.cs:line 1261 at System.Xml.XmlDocument.LoadXml(String xml) in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Dom\XmlDocument.cs:line 1279 at System.Xml.Tests.NamespaceURITests.AllNodesForEmptyString() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\tests\XmlDocument\XmlNodeTests\NamespaceURITests.cs:line 19 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 147 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 224 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__0() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 209 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 208 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 173 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.b__45_0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 107 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestInvoker`1.RunAsync() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 156 at Xunit.Sdk.XunitTestRunner.InvokeTestMethodAsync(ExceptionAggregator aggregator) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestRunner.cs:line 84 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestRunner.cs:line 67 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) at Xunit.Sdk.TestRunner`1.<>c__DisplayClass43_0.b__0() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestRunner.cs:line 149 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 107 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestRunner`1.d__43.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestRunner.cs:line 149 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestRunner`1.RunAsync() at Xunit.Sdk.XunitTestCaseRunner.RunTestAsync() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestCaseRunner.cs:line 106 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCaseRunner.cs:line 82 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCaseRunner`1.RunAsync() at Xunit.Sdk.XunitTestCase.RunAsync(IMessageSink diagnosticMessageSink, IMessageBus messageBus, Object[] constructorArguments, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\XunitTestCase.cs:line 106 at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestMethodRunner.cs:line 45 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 136 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 106 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunAsync() at Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(ITestMethod testMethod, IReflectionMethodInfo method, IEnumerable`1 testCases, Object[] constructorArguments) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestClassRunner.cs:line 152 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 205 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 163 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunAsync() at Xunit.Sdk.XunitTestCollectionRunner.RunTestClassAsync(ITestClass testClass, IReflectionTypeInfo class, IEnumerable`1 testCases) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestCollectionRunner.cs:line 124 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 130 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 101 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunAsync() at Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync(IMessageBus messageBus, ITestCollection testCollection, IEnumerable`1 testCases, CancellationTokenSource cancellationTokenSource) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestAssemblyRunner.cs:line 203 at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestAssemblyRunner.cs:line 179 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry() at System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c.<.cctor>b__8_0(Object s) at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 107 at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass11_0.b__0(Object _) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 96 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at lambda_method(Closure , Object , Object ) at Xunit.Sdk.ExecutionContextHelper.Run(Object context, Action`1 action) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Utility\ExecutionContextHelper.cs:line 111 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 89 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) in C:\BuildAgent\work\cb37e9acf085d108\src\common\XunitWorkerThread.cs:line 38 at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntryUnsafe() at System.Threading.Tasks.ThreadPoolTaskScheduler.<>c.<.cctor>b__10_0(Object s) at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart(Object obj) ``` +16352 area-System.Console Console.KeyAvailable echoes typed key on Linux and macOS I've been using `Console.KeyAvailable` to implement an async `ReadKey` method that waits until a key is available before calling `Console.ReadKey(true)`. This has been working well on Windows but it breaks down on *NIX because the `Console.KeyAvailable` property causes the typed key to be echoed. This happens before I have a chance to call `ReadKey` specifying that I don't want it to echo the typed key. Is this a bug? If not, is there some way I can tell the console implementation to not echo keys when `KeyAvailable` is used? /cc @stephentoub +16353 area-Infrastructure Solutions missing cross-platform configurations We used to have the option in VS of selecting which configuration of the project you want to work with, e.g. a pull down to select Windows vs Linux vs macOS for Debug vs Release. Now in a solution like System.Net.Sockets, there's only Debug vs Release, which means when working on the Unix side of a project, we don't get IntelliSense in the Unix-specific code. What's the recommended approach now? cc: @weshaggard +16354 area-System.Reflection System.Reflection.Metadata throws on big-endian archs There is an explicit check in System.Reflection.Metadata which blocks Roslyn from working on big endian architectures. Can this be removed/fixed? https://github.com/dotnet/corefx/blob/c97b6dfa7fa8cb29b12121bc5532597ab1409bb6/src/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.cs#L91 +16357 area-Infrastructure Pass -stripSymbols to Linux Crossbuild Passes `-stripSymbols` from https://github.com/dotnet/corefx/pull/15440 to the Linux Crossbuild. This should make it start producing symbol packages. (And not include symbol info in the main package.) @wtgodbe Is there a reason not to strip symbols in this build leg? @chcosta @gkhanna79 +16358 area-System.Memory System.Memory tests target wrong assembly "System.Memory tests target System.Private.CoreLib instead of System.Memory when a type is defined in both assemblies which produces incorrect test results and blocks the creation of new unit tests (e.g. for #16298). Adding ```csharp var type = typeof(SpanExtensions); Console.WriteLine($""Type {type} defined in {type.Assembly.FullName} loaded from {type.Assembly.Location}""); type = typeof(Span<>); Console.WriteLine($""Type {type} defined in {type.Assembly.FullName} loaded from {type.Assembly.Location}""); ``` to a test produces the following output: ``` Type System.SpanExtensions defined in System.Memory, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a loaded from R:\corefx\bin\testhost\netcoreapp-Windows_NT-Debug-x64\shared\Microsoft.NETCore.App\9.9.9\System.Memory.dll Type System.Span`1[T] defined in System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e loaded from R:\corefx\bin\testhost\netcoreapp-Windows_NT-Debug-x64\shared\Microsoft.NETCore.App\9.9.9\System.Private.CoreLib.ni.dll ```" +16359 area-System.IO System.IO.Ports.Tests hang Windows, debug build. Just synced up. The hang appears to happen at this line: https://github.com/dotnet/corefx/blob/a5473390a7da48fbc01ced6985da38679983faca/src/System.IO.Ports/src/System/IO/Ports/SerialStream.cs#L1011 Full stack: ``` System.Private.CoreLib.ni.dll!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle waitableSafeHandle, long millisecondsTimeout, bool hasThreadAffinity, bool exitContext) Unknown > System.IO.Ports.dll!System.IO.Ports.SerialStream.EndWrite(System.IAsyncResult asyncResult) Line 1011 C# System.IO.Ports.dll!System.IO.Ports.SerialStream.Write(byte[] array, int offset, int count, int timeout) Line 1165 C# System.IO.Ports.dll!System.IO.Ports.SerialPort.Write(string text) Line 1130 C# System.IO.Ports.dll!System.IO.Ports.SerialPort.WriteLine(string text) Line 1174 C# System.IO.Ports.Tests.dll!Legacy.Support.SerialPortConnection.VerifyReadWrite(System.IO.Ports.SerialPort com1, System.IO.Ports.SerialPort com2) Line 75 C# System.IO.Ports.Tests.dll!Legacy.Support.SerialPortConnection.VerifyLoopback(string portName) Line 56 C# System.IO.Ports.Tests.dll!Legacy.Support.TCSupport.GenerateSerialInfo() Line 85 C# System.IO.Ports.Tests.dll!Legacy.Support.TCSupport.InitializeSerialInfo() Line 32 C# System.IO.Ports.Tests.dll!Legacy.Support.TCSupport.TCSupport() Line 27 C# [Native to Managed Transition] [Managed to Native Transition] System.IO.Ports.Tests.dll!Legacy.Support.TCSupport.SufficientHardwareRequirements(Legacy.Support.TCSupport.SerialPortRequirements serialPortRequirements) Line 166 C# System.IO.Ports.Tests.dll!System.IO.PortsTests.PortsTest.HasOneSerialPort.get() Line 12 C# [Native to Managed Transition] [Managed to Native Transition] Xunit.NetCore.Extensions.dll!Xunit.NetCore.Extensions.ConditionalTestDiscoverer.Discover(Xunit.Abstractions.ITestFrameworkDiscoveryOptions discoveryOptions, Xunit.Abstractions.IMessageSink diagnosticMessageSink, Xunit.Abstractions.ITestMethod testMethod, System.Collections.Generic.IEnumerable testCases, System.Collections.Generic.IEnumerable conditionMemberNames) Unknown Xunit.NetCore.Extensions.dll!Xunit.NetCore.Extensions.ConditionalFactDiscoverer.Discover(Xunit.Abstractions.ITestFrameworkDiscoveryOptions discoveryOptions, Xunit.Abstractions.ITestMethod testMethod, Xunit.Abstractions.IAttributeInfo factAttribute) Unknown xunit.execution.dotnet.dll!Xunit.Sdk.XunitTestFrameworkDiscoverer.FindTestsForMethod(Xunit.Abstractions.ITestMethod testMethod, bool includeSourceInformation, Xunit.Sdk.IMessageBus messageBus, Xunit.Abstractions.ITestFrameworkDiscoveryOptions discoveryOptions) Line 95 C# xunit.execution.dotnet.dll!Xunit.Sdk.XunitTestFrameworkDiscoverer.FindTestsForType(Xunit.Abstractions.ITestClass testClass, bool includeSourceInformation, Xunit.Sdk.IMessageBus messageBus, Xunit.Abstractions.ITestFrameworkDiscoveryOptions discoveryOptions) Line 108 C# xunit.execution.dotnet.dll!Xunit.Sdk.TestFrameworkDiscoverer.FindTestsForTypeAndWrapExceptions(Xunit.Abstractions.ITestClass testClass, bool includeSourceInformation, Xunit.Sdk.IMessageBus messageBus, Xunit.Abstractions.ITestFrameworkDiscoveryOptions discoveryOptions) Line 156 C# xunit.execution.dotnet.dll!Xunit.Sdk.TestFrameworkDiscoverer.Find.AnonymousMethod__0() Line 101 C# xunit.execution.dotnet.dll!Xunit.Sdk.XunitWorkerThread.QueueUserWorkItem.AnonymousMethod__5_0(object _) Line 37 C# System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown System.Private.CoreLib.ni.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task currentTaskSlot) Unknown System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown ``` +16362 area-Infrastructure Non-lowercase TargetGroup values lead to late, indirect build errors "I started trying to fix this: https://github.com/dotnet/corefx/pull/16360 ... but it's clear from building with my changes that others are needed. For instance, the bin\runtime\ path that gets generated has the upper-cased letters if specified. Some guidance here... like ""just fail if a TargetGroup is not equal to the ToLower() of itself, with an obvious error message"" would make sense, since the property is almost always passed as a command-line property to MSBuild, thus cannot be easily nerfed by setting it to the ToLower() of itself. @joperezr , FYI" +16363 area-Infrastructure Update repo packageIndexes when we ship releases We need a process for committing updates to the packageIndexes in various repros when we ship new releases. corefx/master and standard/master need updates from corefx/release/1.0.0 and corefx/release/1.1.0. corefx/release/1.1.0 needs updates from corefx/release/1.0.0. Perhaps this is something maestro can do? /cc @dagood @chcosta +16364 area-System.Security Allow X509Chain to replace the root trust list for a single call "We should add members on the ChainPolicy to allow a single call to X509Chain.Build to consider an X509Certificate2Collection of certs as a replacement of the system/user default certificate trust. Win32: CERT_CHAIN_ENGINE_CONFIG looks like it has hExclusiveRoot for ""replace"". Unix/OpenSSL: We just need to replace the root trust list when deciding whether or not to set the UnknownRoot flag. Apple/Security.framework: The SecTrust APIs have options to replace the anchors list for a single request. API requirements: * A way of providing the replacement root certificate trust collection, with a clear mode of if the request is using system trust or custom trust. (edited to remove the option of ""in addition to"" the system trust due to increased complexity and less OS support)" +16368 area-System.Net Improve CI: change Http test ActiveIssue(Windows) to (Any) Per https://github.com/dotnet/corefx/issues/16200, also disable this test for all platforms (instead of just Windows) +16371 area-System.Net [CI Failure] AccessViolationException in System.Net.Mail.Functional.Tests Found here during a code coverage run: https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows_prtest/31/consoleFull#-61246470379fe3b83-f408-404c-b9e7-9207d232e5fc ``` 08:26:44 Unhandled Exception: 08:26:44 Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 08:26:44 at System.Net.DebugThreadTracking.SetThreadKind(ThreadKinds kind) 08:26:44 at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\src\System\Net\Sockets\BaseOverlappedAsyncResult.Windows.cs:line 69 08:26:44 at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 08:26:44 at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 08:26:44 System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 08:26:44 at System.Net.Sockets.NetworkStream..ctor(Socket socket, FileAccess access, Boolean ownsSocket) 08:26:44 at System.Net.Sockets.NetworkStream..ctor(Socket socket, Boolean ownsSocket) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\src\System\Net\Sockets\NetworkStream.cs:line 42 08:26:44 at System.Net.Sockets.TcpClient.GetStream() in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\src\System\Net\Sockets\TCPClient.cs:line 149 08:26:44 at System.Net.Mail.Tests.SmtpServer.Run() in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Mail\tests\Functional\SmtpServer.cs:line 60 08:26:44 at System.Threading.Thread.ThreadMain_ThreadStart() in D:\j\workspace\code_coverage---d5838fef\src\System.Threading.Thread\src\System\Threading\Thread.cs:line 103 08:26:44 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 08:26:44 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:26:44 at System.Threading.ThreadHelper.ThreadStart() ``` +16373 area-System.Net Enable instance Socket.{Begin}Connect{Async} methods on Unix "BSD Sockets don't allow using a socket for a connection that has already failed in a previous connect. This has caused us to significantly hamper the Socket.{Begin}Connect{Async} instance methods on Socket, in two ways: 1) If you call any instance connect overload and it fails, whereas on Windows you can try to connect again, on Unix we throw a PlatformNotSupportedException. 2) If you call any instance connect method that could potentially try to connect to multiple addresses (e.g. a string host, an IPAddress[], or a DnsEndPoint), whereas on Windows that allowed, on Unix we throw a PlatformNotSupportedException (because after trying the first address we will then be trying to connect again on a socket that failed to connect). There are multiple options for dealing with this, all with their own pros and cons: A) Use a ""shadow"" socket to first try to make the connection, and if it succeeds, assume that another connection will succeed and try to make it on the ""real"" socket. We actually originally went down this path prior to .NET Core 1.0 and it had significant problems, both with performance (multiple connections any time a single one was needed) and with server expectations (getting two connections when only one was expected). B) Prohibit usage of any {Begin}Connect{Async} APIs that could potentially deal with multiple addresses. This is what we've shipped in .NET Core 1.x. C) In such APIs, check whether the number of addresses is exactly 1, allowing it if there is, throwing otherwise. This has several issues, including problems with dual mode (e.g. localhost will often resolve to both ::1 and 127.0.0.1), non-determinism based on how many addresses a server resolves to, etc. D) Regardless of the number of addresses, pretend there was only one. This has similar issues to (C). E) Use a ""shadow"" socket to make each connection, and then on successful connection substitute it in for the original underneath the Socket. This enables trying to connect to multiple addresses, but it means that any configuration performed on the initial socket won't be applied to the subsequent sockets. F) Same as (E), but keeping track of some dialable set of options that can be propagated from socket to socket. This commit implements (F). (F) still isn't perfect, but it allows the common path (minimal configuration) to work while still supporting multiple endpoints and being deterministic: - SafeCloseSocket on Unix now tracks whether the Socket.Handle property was accessed and whether any non-tracked configuration was set. If any of that is done, then as with today. We were already tracking (in order to provide an error message) whether a connect attempt failed; that was previously tracked on the SocketAsyncContext, now it's tracked on the SafeCloseSocket handle. - Whenever an attempt is made to {Begin}Connect{Async} with multiple possible endpoints, we check whether the handle was exposed or untracked configuration was used. If it was, we fail as we do today. If it wasn't, we allow it. - When making a connection (either via a user's call, or as part of a multi-endpoint connect operation), if there was a previously failed connection attempt, we replace the handle with a new one, transferring over the tracked state from the old handle to the new one. - Removed a bunch of stale code leftover from when approach (A) above was implemented; apparently when we switched to (B) this code was never removed - Removed now defunct [PlatformSpecific] attribution, and added some more tests With (F), we also no longer need the workaround we had in TcpClient, so I recombined it back down to a single implementation built on top of Socket. This means, for example, that whereas previously on Unix you couldn't use TcpClient's instance Connect methods with a DNS endpoint after accessing its Client Socket, now you can. And we don't have to do any of the shadow value tracking we were previously doing. In addition, I took care of some other minor cleanup I spotted along the way: - One or two cases where API usage was ifdef'd out; now that these APIs are back for 2.0, we can use them again, e.g. IPAddress.Address - Fixed a few places where exception stacks were being lost due to exceptions getting rethrown; changed these to use ExceptionDispatchInfo to maintain the stacks (this helped me to debug a few things better, which is how I noticed in the first place) - Removed unnecessary pragma usage that was a holdover from older versions of the code - Adding code to a bunch of tests to Dispose of sockets - Adding a few more tests (there's still a lot of uncovered code in Sockets unfortunately; we really need to address that, separately) Fixes https://github.com/dotnet/corefx/issues/8768 cc: @NickCraver, @tmds, @glennc, @geoffkizer, @danroth27, @richlander, @pgavlin, @halter73" +16374 area-System.Collections [Proposal] Adding a version of List with smaller memory footprint and no random access **Related:** https://github.com/dotnet/corefx/issues/15573 **Background:** When `Add` is called on List and it cannot fit any more items in its internal buffer, it allocates a new array twice the size and copies over each of the existing items. This is an inefficient use of memory; instead, it could keep the old array around, allocate a new one the same size as the number of existing items, and continue reading items into that array with no copying. This is what [`LargeArrayBuilder`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Collections/Generic/LargeArrayBuilder.cs) does, which is used by Linq's `ToArray` method today, and the number of allocations [has been shown to decrease by 33%](https://github.com/dotnet/corefx/pull/11208) as a result. Here is a visualization of how 200 items will be stored: ```cs Buffers = new T[][] { [0] = new T[8], // Stores items 0-7 [1] = new T[8], // Stores items 9-16 [2] = new T[16], // Stores items 17-32 [3] = new T[32], // Stores items 33-64 [4] = new T[64], // Stores items 65-128 [5] = new T[128] // Stores items 129-199, slots 200-255 are zero-inited } ``` When one buffer runs out of space we can simply add it to `Buffers` and continue reading in items to a new buffer, without copying anything or wasting memory. **Proposal:** The public version will be a class and implement `ICollection`. It will be named `ArrayBuilder`, since in the related issue we decided we're not going to expose the internal `ArrayBuilder`. It will expose a minimal API and explicitly implement a few `ICollection` members. ```cs namespace System.Collections.Extended { public class ArrayBuilder : ICollection, IReadOnlyCollection { public ArrayBuilder(); public ArrayBuilder(int capacity); public ArrayBuilder(IEnumerable items); public ArrayBuilder(int capacity, IEnumerable items); // ICollection members public int Count { get; } public void Add(T item); public void Clear(); public bool Contains(T item); public void CopyTo(T[] array, int arrayIndex); public Enumerator GetEnumerator(); public T[] ToArray(); // Explicitly implemented ICollection members bool ICollection.IsReadOnly { get; } bool ICollection.Remove(T item); IEnumerator IEnumerable.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator(); public struct Enumerator : IEnumerator, IEnumerator { public T Current { get; } public void Dispose(); public bool MoveNext(); void IEnumerator.Reset(); } } } ``` The type will not implement `IList`. Random access will be O(log n) because we'd have to walk over each of the buffers and subtract its size from the index, and each buffer will be double the size as the previous. **Addtional notes:** - Roslyn already has an `ArrayBuilder` type used in a lot of places, so I'm open to changing the name if the name clashes with that project will be a concern. - The namespace will be `System.Collections.Extended` so `System.Collections.Generic` stays lean. See https://github.com/dotnet/corefx/issues/16374#issuecomment-281856288 /cc @benaadams @omariom @jkotas @KrzysztofCwalina +16375 area-System.Net TCP Fast Open implementation? "## Proposal: TCP Fast Open TCP Fast Open is an extension for TCP to speed up the handshaking process in successive TCP connections. This feature has been available for OSX and Linux for years and was implemented on Windows by Anniversary Update. Users could check by `netsh` ``` >netsh int tcp show global Querying active state... TCP Global Parameters ---------------------------------------------- ... TCP Fast Open : enabled ``` but dotnet has not implemented this for System.Net yet. ### Rational and Usage This new API is important and powerful because when it is used with TLS False Start, we are down to 1-RTT from original 3-RTT for a successive TCP+TLS (HTTPS) connection, and furthermore, 0-RTT could be achieved by combining TFO and TLS 1.3. And it's easy to use: programmers only need to add a few lines to set an socket option and provide a buffer filled with data to send. Here's the usage: ``` C# var s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var e = new SocketAsyncEventArgs(); s.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.FastOpen, true); e.SetBuffer(buffer, offset, length); s.ConnectAsync(e); ``` Note that `buffer[offset]` ~ `buffer[offset+length-1]` might be (partially) sent together with SYN. It's up to the OS how to send. A typical usage is the TLS handshake. In successive connections, the client could send a SYN with TLS Client Hello. Please check the ""Original Proposal"" for details. ### Proposed API ``` C# namespace System.Net.Sockets { // Defines socket option names for the class. public enum SocketOptionName { // ... #region SocketOptionLevel.Tcp // ... FastOpen = 15 #endregion } } ``` This enum value is 15 for Windows according to `ws2ipdef.h`. ### Problems & Extra works - Implementation In fact, adding just one line like the code above in [SocketOptionName.cs](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Net.Sockets/src/System/Net/Sockets/SocketOptionName.cs) would work for Windows. However, it might not work for Unix. Since dotnet simply pass the socket option to native API on Windows while the Unix Pal would check the value. For more information about the difference please check the relevant issue #14237 . To make this work for Unix we may need to modify [this part](https://github.com/dotnet/corefx/blob/master/src/Native/Unix/System.Native/pal_networking.cpp#L2103-L2113) - Compatibility According to [MSDN](https://msdn.microsoft.com/en-us/library/windows/desktop/ms738596(v=vs.85).aspx), this option is available since Windows 10, 1607. Maybe we should generate a warning if this option is set on the older Windows platform - Other System.Net API For API using sockets in its code such as WebClient or HttpClient, it could take advantage of this feature, especially for ""https://"" scheme. ### Original Proposal #### TCP Fast Open on Windows Windows has introduced TCP Fast Open in the Anniversary Update serveral months ago. ([Announcing: New Transport Advancements in the Anniversary Update for Windows 10 and Windows Server 2016](https://blogs.technet.microsoft.com/networking/2016/07/18/announcing-new-transport-advancements-in-the-anniversary-update-for-windows-10-and-windows-server-2016/)) > TFO is one full Round Trip Time (RTT) faster than the standard TCP setup which requires a three way-handshake. This leads to latency savings and is very relevant to short web transfers over the Internet where the average latency is on the order of 40 msec. #### Native API for TCP Fast Open This feature could be turned on using native Windows Socket 2 API: [IPPROTO_TCP Socket Options](https://msdn.microsoft.com/en-us/library/windows/desktop/ms738596(v=vs.85).aspx). But it has not been implemented in dotnet ([SocketOptionName.cs](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Net.Sockets/src/System/Net/Sockets/SocketOptionName.cs)). #### dotnet API relating to TCP Fast Open According to the Native API Documentation, in addition to passing a new enum value to the method `setSocketOption` which then calls the native `setsockopt`, we need to set up the buffer including the data to send during the initial connection: >Note that to make use of fast opens, you should use ConnectEx to make the initial connection, and specify data in that function's lpSendBuffer parameter to be transferred during the handshake process. Some of the data in lpSendBuffer will be transferred under the Fast Open protocol. The native method `ConnectEx` is called by [`DoOperationConnect`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs#L235) which is called by [`socket.ConnectAsync`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs#L235) on Windows. And the buffer could be set as a property of SocketAsyncEventArgs. ```C# //TFO is defined as 15 in ws2ipdef.h socket.SetSocketOption(SocketOptionLevel.Tcp, (SocketOptionName)15, true); e.SetBuffer(buffer, start, length); //e is a SocketAsyncEventArgs socket.ConnectAsync(e); ``` #### dotnet implementation The most straightforward way to implement this feature is to add a new value to the SocketOptionName enum. But it enables this feature only on Windows. In this issue https://github.com/dotnet/corefx/issues/14237, it seems that members are interested in introducing a new cross-platform API for TCP options. >It would be nice if the Public API contained all of the possible socket options across Windows, Linux, and Darwin. PS. TCP Fast Open is natively supported on Linux and OSX. Here's how to use it on Linux: [TCP Fast Open: expediting web services](https://lwn.net/Articles/508865/) More about TCP Fast Open: - [RFC7413](https://tools.ietf.org/html/rfc7413) - [Windows blog: Building a faster and more secure web with TCP Fast Open, TLS False Start, and TLS 1.3](https://blogs.windows.com/msedgedev/2016/06/15/building-a-faster-and-more-secure-web-with-tcp-fast-open-tls-false-start-and-tls-1-3/#0ODjLsVbVq2W3FyD.97)" +16378 area-Infrastructure [ARM/CI] Enable manual CI triggering for arm and armel 1. Enable following manual CI triggering for `arm` and `armel`. innerloop Ubuntu arm Release Cross Build innerloop Ubuntu arm Debug Cross Build innerloop Ubuntu16.04 arm Release Cross Build innerloop Ubuntu16.04 arm Debug Cross Build innerloop Tizen armel Release Cross Build innerloop Tizen armel Debug Cross Build Which replaces following old style commands. innerloop linuxarmemulator HardFP Release innerloop linuxarmemulator HardFP Debug innerloop linuxarmemulator SoftFP Release innerloop linuxarmemulator SoftFP Debug 2. Prepare `bin/build.tar.gz` correctly to run unit tests in coreclr CI for `arm` and `armel`. Before netci.groovy made old-fashioned `build.tar.gz`. 3. Add some options to arm32 CI script. 4. Rename scripts/arm32_ci_script.sh to cross/arm32_ci_script.sh Related issues: https://github.com/dotnet/core-setup/issues/790 +16379 area-System.Net The HttpClient send request via HTTP/2 throw a exception "On Ubuntu 14.04 my curl version is: ``` c# curl 7.53.0 (x86_64-pc-linux-gnu) libcurl/7.53.0 OpenSSL/1.0.1f zlib/1.2.8 nghttp2/1.20.0-DEV librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy ``` And I send a request to HTTP/2 web, I receive this: ``` c# ubuntu@ip-172-168-10-232:~$ curl --http2 -I https://http2.akamai.com/ HTTP/2 200 server: Apache etag: ""5e9139516a4f3d7a27577441623ca90d:1465962509"" last-modified: Wed, 15 Jun 2016 03:48:29 GMT accept-ranges: bytes content-length: 11384 push: true rtt: 159 ghost_ip: 23.201.177.105 ghost_service_ip: 2.18.214.61 client_real_ip: 52.80.17.185 client_ip: 52.80.17.185 myproto: h2 protocol_negotiation: h2 cache-control: max-age=43200 expires: Wed, 22 Feb 2017 23:45:37 GMT date: Wed, 22 Feb 2017 11:45:37 GMT content-type: textml;charset=UTF-8 accept-ch: DPR, Width, Viewport-Width, Downlink, Save-Data access-control-max-age: 86400 access-control-allow-credentials: false access-control-allow-headers: * access-control-allow-methods: GET,HEAD,POST access-control-allow-origin: * strict-transport-security: max-age=31536000 ; includeSubDomains ``` But when I use HttpClient send this request, the program throw a exception: ```c# Unhandled Exception: System.Net.Http.HttpRequestException: The server returned an invalid or unrecognized response. at System.Net.Http.CurlResponseHeaderReader.ReadStatusLine(HttpResponseMessage response) at System.Net.Http.CurlHandler.MultiAgent.CurlReceiveHeadersCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at ConsoleApp2.Program.Main(String[] args) ``` My `Microsoft.NETCore.App` version is `1.1.0` And my code like this: ```c# using System; using System.Net.Http; namespace ConsoleApp2 { public class Program { public static void Main(string[] args) { var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, ""https://http2.akamai.com/""); request.Version = Version.Parse(""2.0""); var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult(); Console.WriteLine(response.Version.ToString()); Console.ReadLine(); } } } ``` What's the problem?" +16383 area-System.Reflection Make System.Reflection.Metadata writer's table sorting stable again Adding tracking issue for https://github.com/dotnet/corefx/pull/15366#discussion_r101688962 Indeed, there should be tests added because this is easy to miss (as I did in the WIP commit that became part of @davidwrighton's PR). @tmat Will this break Roslyn's determinism as-is? +16384 area-Infrastructure Add documentation steps for building corefx for a new architecture Also removes workaround added for in https://github.com/dotnet/corefx/pull/16139. Fixes https://github.com/dotnet/corefx/issues/15503 cc @gkhanna79 @hseok-oh @jyoungyun @hqueue +16385 area-System.Net Refactor HTTP DiagnosticSource logging (part1 continued) This change addresses post-review comments for PR #15971: 1. new `DiagnosticListener.IsEnabled()` API is used to very efficiently determine if there is a subscriber to HttpDiagnoticListener and enable diagnostics. 2. Exceptions are sent in a separate event `System.Net.Http.Exception`, and `System.Net.Http.Response` is still fired for all requests (successful, faulted and cancelled) 3. Events documentation concerns will be addressed in next part (with Activity implementation) /cc @stephentoub @vancem @avanderhoorn @nbilling @cwe1ss @karolz-ms @SergeyKanzhelev @brahmnes +16386 area-System.Reflection Stabilize custom OrderBy implementation - Changes for System.Private.Reflection.Metadata.Ecma335 broke stability of the OrderBy helper method - Replace with a stable sort based on Array.Sort - Also, minor tweak to the Environment.ProcessorCount property to be more concise +16388 area-Infrastructure Move Microsoft Symbol Server publish to DotNet-Trusted-Publish build leg "Uses a BuildTools target (https://github.com/dotnet/buildtools/pull/1333) to submit Windows symbols to the Microsoft Symbol Server using the symbol packages produced in the build legs. Currently configured to archive if the built branch starts with `release/`. The diffs are messy because of the moves and changes. This is what I changed in the Windows builds: * ""Publish symbols path"" renamed ""Index symbol file sources"". I cleared out the path, so instead of publishing the symbols during the Windows builds, they're just source-indexed. Unfortunately this happens after the binaries have already been packaged--we should fix this, probably by making the package build an independent step so source indexing can run in between. * I removed ""Index symbols on http:\/\/symweb"": this is what's replaced by the new targets. @gkhanna79 @wtgodbe I'll need to make these changes manually to the CoreCLR live master build definitions. FYI @MichaelSimons " +16389 area-System.Reflection Add System.Private.Reflection.Metadata.Ecma335 to uapaot package +16393 area-System.Net Http request instrumentation with Activity (correlation part2) This change implements instrumentation for http requests with new [System.Diagnostics.Activity](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md) API. Activity provides diagnostics context for current operation. - It introduces new events: `System.Net.Http.Activity.Start` and `System.Net.Http.Activity.Stop`. - It implements header propagation for operation context. [Http Protocol proposal](https://github.com/lmolkova/correlation/blob/master/http_protocol_proposal_v1.md) Instrumentation is documented in the [guide](https://github.com/lmolkova/corefx/blob/dev/http_client_activity_part2/src/System.Net.Http/src/HttpDiagnosticsGuide.md) included into this PR. +16394 area-Infrastructure Setting up ILCInputFolder that will be passed in to the ilc.exe that gets restored in order to run tests on uapaot cc: @weshaggard @ericstj @MattGal This PR produces a folder in `bin/testhost/$(Configuration)/ILCInputFolder` that will contain all of the assets required to call the ilc.exe command from the RunTests.cmd script and that will later on be used to run the tests. Once this is merged, I'll work on the piece of actually modifying that RunTests.cmd to actually call the ilc.exe command and to execute the tests. FYI: @morganbr @joshfree @danmosemsft +16396 area-System.Data Support Dedicated Administrator Connection in SqlClient Repro: 1. install SQL Server. I installed SQL Server vNext CTP 1.3 on Ubuntu 16.10 for this repro. 2. enable remote admin connections for your SQL Server per [MSDN documentation](https://msdn.microsoft.com/en-us/library/ms190468.aspx) 3. unzip [dactest.zip](https://github.com/dotnet/corefx/files/795340/dactest.zip) on a computer with .NET Core installed. Again, I used Ubuntu 16.10 for this repro. 4. update username & password in Program.cs as appropriate 5. run: dotnet restore 6. run: dotnet run Result: receive the exception below: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 8 - Protocol not supported) +16397 area-System.Runtime Enable BinaryFormatter on uapaot Enable building BinaryFormatter for uapaot. Since this assembly builds against contracts, no other CoreFX changes are required at this point (but there will be some CoreRT changes to make it functional). +16399 area-System.Numerics Improve System.Numerics.Matrix* hash codes Currently, the fields' hash codes are simply added: https://github.com/dotnet/corefx/blob/master/src/System.Numerics.Vectors/src/System/Numerics/Matrix4x4.cs#L2209-L2212, https://github.com/dotnet/corefx/blob/master/src/System.Numerics.Vectors/src/System/Numerics/Matrix3x2.cs#L805-L807. It seems like it would be better to change this to use [`HashHelpers.Combine()`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Numerics/Hashing/HashHelpers.cs#L11). +16400 area-System.Diagnostics "Test System.Diagnostics.Tests.ProcessTests.TestProcessStartTime failed with ""Xunit.Sdk.EqualException"" in 1. OuterLoop_Fedora23_release" Configuration: OuterLoop_Fedora23_release ([Build#112](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_release/112/testReport/)), Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_release/112/testReport/System.Diagnostics.Tests/ProcessTests/TestProcessStartTime/ Message: ~~~ Assert.Equal() Failure\nExpected: 42\nActual: 145 ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_release/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(170,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_release/src/System.Diagnostics.Process/tests/ProcessTests.cs(417,0): at System.Diagnostics.Tests.ProcessTests.TestProcessStartTime() ~~~ +16401 area-System.Net "Test ""System.Net.NetworkInformation.Tests.PingTest.SendAsyncs_ReuseInstance_Hostname"" failed with ""Xunit.Sdk.EqualException"" in OuterLoop_Ubuntu16.04_debug" Configuration: OuterLoop_Ubuntu16.04_debug ([build#109](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.04_debug/109/testReport/)). Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.04_debug/109/testReport/ Message: ~~~ Assert.True() Failure\nExpected: True\nActual: False ~~~ Stack trace: ~~~ at System.Net.NetworkInformation.Tests.PingTest.d__17.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.04_debug/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs:line 402 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +16402 area-System.ComponentModel Please add portable apps in System.ComponentModel.Annotations package "Hi, I'm working on a portable app (Droid, iOS and UWP), and I'm trying to add the package [System.ComponentModel.Annotations](https://www.nuget.org/packages/System.ComponentModel.Annotations). Apparently, .NET Portable is not supported by that package. Please add .NET Portable as a target in the System.ComponentModel.Annotations package. " +16403 area-System.Memory System.Memory tests don't run on Linux "Repo: Run ```../../../Tools/msbuild.sh System.Memory.Tests.csproj /t:RebuildAndTest``` on Linux (e.g. Ubuntu 16.04 LTS) Expected: System.Memory tests to run Actual: ``` CheckTestPlatforms: Skipping tests in System.Memory.Tests because there is no configuration compatible with the current BuildConfiguration. GenerateTestExecutionScripts: Generating /home/dennisdietrich/Repos/corefx/bin/TestDependencies/System.Memory.Tests-.dependencylist.txt Test Command lines = $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Memory.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests Wrote .sh test execution script to /home/dennisdietrich/Repos/corefx/bin/AnyOS.AnyCPU.Debug/System.Memory.Tests/netcoreapp/RunTests.sh Done Building Project ""/home/dennisdietrich/Repos/corefx/src/System.Memory/tests/System.Memory.Tests.csproj"" (RebuildAndTest target(s)). ```" +16404 area-System.Net Cannot find SslStream in System.Net.Security 4.3.0 "I've added the following to my project.json: > ""System.Net.Security"": ""4.3.0.0"" And yet I get this error on compile. > SslStream does not exist in the namespace System.Net.Security What am I doing wrong? To reproduce this please download the [FluentFTP repo ](https://github.com/hgupta9/FluentFTP/)and open this xproj to build for .NET core. The error occurs on [this line](https://github.com/hgupta9/FluentFTP/blob/master/FluentFTP/FtpSocketStream.cs#L200)." +16405 area-System.Runtime DateTime.UtcNow is not good enough for high precision durations in DiagnosticSource.Activity /cc @lmolkova @vancem The new Activity class uses `DateTime.UtcNow` to [calculate the duration of an activity](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs#L293). However depending on the system, [the precision of DateTime might be at ~ 15ms](https://blogs.msdn.microsoft.com/ericlippert/2010/04/08/precision-and-accuracy-of-datetime/). I don't think this is precise enough for server scenarios. In my OpenTracing instrumentation, I'm currently using a [combination of DateTime + Stopwatch](https://github.com/cwe1ss/opentracing-contrib-dotnet/blob/master/src/OpenTracing.Tracer.Abstractions/HighResClock.cs) to overcome this issue. My code isn't in production yet though, so I'm not sure if this has any drawbacks. +16409 area-System.IO DirectoryInfo doesn't refresh state after Create (Unix) "Example: ```csharp var di = new DirectoryInfo($""/tmp/test-{Guid.NewGuid()}""); if (!di.Exists) di.Create(); Console.WriteLine(di.CreationTimeUtc); Console.WriteLine(di.LastWriteTimeUtc); ``` The code above fails, because it complains that the file doesn't exist. EDIT: This works in .NET Framework" +16410 area-Infrastructure Reenable MyGet package publishing In https://github.com/dotnet/corefx/pull/16388, I accidentally disabled package publishing to MyGet. It was hard to spot because adding the `Submit symbol server request` step made the diff unclear. This hasn't affected a build yet, because none has made it to this point in the build since I merged that PR. +16414 area-System.Runtime Expose IsReferenceOrContainsReferences in System.Runtime contract Fixes #14047 +16416 area-System.Memory Fixed overflows in System.Span Several overflows in System.Span that were missed when turning on overflow checks for Debug. Fix #16298 +16417 area-System.Runtime Proposal: Add Named Arguments String.Format Overloads "String interpolation has proven to be an extremely useful feature in `C#6` but sometimes I find myself needing the string format to be configurable and as such am not able to use string interpolation as it requires the format to be evaluated at compile time. I propose the addition of `String.Format` overloads that will allow users to use named arguments instead of argument indexes similar in appearance to string interpolation. ## Rationale and Usage With this implemented what used to be this ```cs string logFormat = ConfigurationManager.AppSettings[""logFormat""]; // ""{0:yyyy/MM/dd HH:mm:ss} - {1} ({2}): {3}"" DateTime time = DateTime.Now; LogLevel logLevel = LogLevel.Error; string userId = ""admin""; string message = ""Poor error message""; string logLine = string.Format(logFormat, time, logLevel, userId, message); ``` can now become this ```cs string logFormat = ConfigurationManager.AppSettings[""logFormat""]; // ""{time:yyyy/MM/dd HH:mm:ss} - {logLevel} ({userId}): {message}"" var dictionary = new Dictionary { { ""time"", DateTime.Now }, { ""logLevel"", LogLevel.Error }, { ""userId"", ""admin"" }, { ""message"", ""Poor error message"" } }; string logLine = string.Format(logFormat, dictionary); ``` which will be much easier to understand and maintain in configuration. An additional use case for this is as the basis for a basic text templating system where the values can be dynamically retrieved using the `Func` overload. ## Proposed API ```diff namespace System { public class String { + public static string Format(string format, Func valueProvider); + public static string Format(string format, IDictionary valueProvider); } } ``` ## Details * The implementation would simply be a wrapper around the original `string.Format` but replace named arguments with indices. * An `Ordinal` string comparison will be used to determine reuse of named arguments. * The `IDictionary` overload will use its `TryGetValue` method for retrieving the value. * A `FormatException` is thrown when a value for a named argument cannot be found. ## Updates * Changed `valueProvider` from a `Func` to a `Func` to support specifying if the named argument was found. * Changed example to explicitly show retrieving the `logFormat` value from configuration. * Added the templating system use case." +16418 area-System.Runtime Add RIDless build configuration for S.R.IS.RuntimeInformation This AnyOS netstandard1.1 configuration is for PCL support so we ensure we have an asset that isn't in a runtime folder in the package which PCL's and packages.config don't support. Fixes https://github.com/dotnet/corefx/issues/15288. cc @ericstj +16419 area-System.Net Null ref exception in Abort_CloseAndAbort_Success test on Windows in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/112/consoleText ``` System.Net.WebSockets.Client.Tests.AbortTest.Abort_CloseAndAbort_Success(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinHttpWebSocketState.cs(275,0): at System.Net.WebSockets.WinHttpWebSocketState.Dispose(Boolean disposing) D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinHttpWebSocketState.cs(288,0): at System.Net.WebSockets.WinHttpWebSocketState.Dispose() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinHttpWebSocket.cs(740,0): at System.Net.WebSockets.WinHttpWebSocket.Dispose() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinHttpWebSocket.cs(764,0): at System.Net.WebSockets.WinHttpWebSocket.Abort() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Windows.cs(116,0): at System.Net.WebSockets.WebSocketHandle.Abort() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\ClientWebSocket.cs(197,0): at System.Net.WebSockets.ClientWebSocket.Abort() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\tests\AbortTest.cs(103,0): at System.Net.WebSockets.Client.Tests.AbortTest.<>c.<b__4_0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\tests\ClientWebSocketTestBase.cs(60,0): at System.Net.WebSockets.Client.Tests.ClientWebSocketTestBase.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() D:\j\workspace\code_coverage---b14a30e5\src\System.Net.WebSockets.Client\tests\AbortTest.cs(89,0): at System.Net.WebSockets.Client.Tests.AbortTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() ``` +16421 area-System.Data System.Data.SqlClient.Tests.DiagnosticTest.ConnectionOpenTest fails on some CI runs example: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/3795/ ``` System.Data.SqlClient.Tests.DiagnosticTest.ConnectionOpenTest [FAIL] Timed out after 60000ms waiting for remote process 4644 Expected: True Actual: False Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(170,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() ``` +16422 area-System.IO System.IO.FileSystem isn't building correctly for uap The uap configuration is using the Win32 code paths because EnsureWinRT isn't set to true. We either need to make the WinRT code path build again or remove it if we are going to move it to Win32. cc @JeremyKuhne @joperezr +16426 area-System.Runtime Fix FormatterServices.GetUninitializedObject allows allocating byref-like objects Add regression test for https://github.com/dotnet/coreclr/issues/9739 +16427 area-Infrastructure Deployment Projects don't take architecture into account This isn't causing trouble right now, but was something I noticed in the course of other investigations. On a machine building multiple different verticals without cleaning, this could cause clashes / mismatches. If you review a build log where this happens, you see stuff like: ` E:\A\_work\89\s\corefx\packages\runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR\2.0.0-beta-25021-03\runtimes\win7-x86\native\sos.dll (runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR.2.0.0-beta-25021-03) -> E:\A\_work\89\s\corefx\bin\Windows_NT.AnyCPU.Debug\runtime\netcoreapp\sos.dll` but, we use the same output path for x64 as well. It would be useful for this to take into consideration the Arch of what's being copied when generating layouts like this. +16428 area-System.Numerics Add support for Acosh, Asin, Atanh, and Cbrt to System.Math and System.MathF ### Rationale The .NET framework does not currently provide support for several of the mathematical functions that are available to the C/C++ Standard Library. Support should be provided for these mathematical functions in order to better interop with high-performance, scientific, and multimedia-based applications where these functions may be in demand. Several of these functions, such as `ExpM1`, may be more accurate or may return values for inputs outside the range of the corresponding code written manually (`EXP(x) - 1`). ### Approved API ```C# public static partial class Math { // Hyperbolic Functions public static double Acosh(double); // Compute area hyperbolic cosine public static double Asinh(double); // Compute area hyperbolic sine public static double Atanh(double); // Compute area hyperbolic tangent // Power Functions public static double Cbrt(double); // Compute cubic root } public static partial class MathF { // Hyperbolic Functions public static float Acosh(float); // Compute area hyperbolic cosine public static float Asinh(float); // Compute area hyperbolic sine public static float Atanh(float); // Compute area hyperbolic tangent // Power Functions public static float Cbrt(float); // Compute cubic root } ``` ### Unapproved APIs The following APIs were also reviewed but rejected at this time. The discussion ended up that these would likely be better suited in a `MathExtensions` or similar class provided through a separate library (and likely implemented using the hardware intrinsics functionality rather than as FCALLs in the runtime). ``` C# public static partial class Math { // Exponential Functions public static double Exp2(double); // Compute binary exponential public static double ExpM1(double); // Compute exponential minus one // Logarithmic Functions public static double Log1P(double); // Compute logarithm plus one public static double Log2(double); // Compute binary logarithm // Power Functions public static double Hypot(double, double); // Compute hypotenuse } public static partial class MathF { // Exponential Functions public static float Exp2(float); // Compute binary exponential public static float ExpM1(float); // Compute exponential minus one // Logarithmic Functions public static float Log1P(float); // Compute logarithm plus one public static float Log2(float); // Compute binary logarithm // Power Functions public static float Hypot(float, float); // Compute hypotenuse } ``` ### Additional Details This will require several changes in the CoreCLR as well to support the new APIs via FCALLs and Intrinsics. +16430 area-System.Data Failure in System.Data.SqlClient.Tests.DiagnosticTest.ExecuteNonQueryErrorTest ``` Stacktrace MESSAGE: Timed out after 60000ms waiting for remote process 7172\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in D:\j\workspace\outerloop_win---097a300f\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 176 at System.Data.SqlClient.Tests.DiagnosticTest.ExecuteNonQueryErrorTest() in D:\j\workspace\outerloop_win---097a300f\src\System.Data.SqlClient\tests\FunctionalTests\DiagnosticTest.cs:line 95 ``` +16431 area-Infrastructure Binplace package file list /cc @weshaggard @chcosta @joperezr This switches binplacing for packaging to use file lists rather than copies. +16432 area-System.Net Cannot find System.Net.Dns in System.Net.NameResolution "I've added the following to my project.json: > ""System.Net.NameResolution"": ""4.3.0.0"", And yet I get this error on compile. > The name 'Dns' does not exist in the current context What am I doing wrong? To reproduce this please download the [FluentFTP repo ](https://github.com/hgupta9/FluentFTP/)and open the [FluentFTP_Core.sln ](https://github.com/hgupta9/FluentFTP/blob/master/FluentFTP/FluentFTP_Core.sln) to build for .NET core. The error occurs on [this line](https://github.com/hgupta9/FluentFTP/blob/master/FluentFTP/FtpSocketStream.cs#L587)." +16433 area-Microsoft.CSharp Test failure: ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test/DynamicCSharpRunTest Opened on behalf of @Jiayili1 The test `ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test/DynamicCSharpRunTest` has failed. System.Diagnostics.Debug+DebugAssertException : at System.Environment.get_StackTrace() at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition) at Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager.GetAggregate(AggregateSymbol agg, AggregateType atsOuter, TypeArray typeArgs) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs:line 289 at Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager.GetAggregate(AggregateSymbol agg, TypeArray typeArgsAll) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs:line 304 at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs:line 812 at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs:line 751 at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeFromType(Type t) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs:line 995 at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.PopulateLocalScope(DynamicMetaObjectBinder payload, Scope pScope, ArgumentObject[] arguments, IEnumerable`1 parameterExpressions, Dictionary`2 dictionary) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs:line 735 at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs:line 233 at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs:line 170 at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/BinderHelper.cs:line 97 at Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder.FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/CSharpInvokeBinder.cs:line 69 at System.Dynamic.InvokeBinder.FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/InvokeBinder.cs:line 42 at System.Dynamic.DynamicMetaObject.BindInvoke(InvokeBinder binder, DynamicMetaObject[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/DynamicMetaObject.cs:line 205 at System.Dynamic.InvokeBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/InvokeBinder.cs:line 65 at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/DynamicMetaObjectBinder.cs:line 90 at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs:line 129 at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/UpdateDelegates.Generated.cs:line 401 at ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test.MainMethod(String[] args) in /root/corefx/src/System.Dynamic.Runtime/tests/Dynamic.DynamicType/Conformance.dynamic.dynamicType.basic.cs:line 4631 at ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test.DynamicCSharpRunTest() in /root/corefx/src/System.Dynamic.Runtime/tests/Dynamic.DynamicType/Conformance.dynamic.dynamicType.basic.cs:line 4619 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.b__45_0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestRunner`1.d__43.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestRunner`1.RunAsync() at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCaseRunner`1.RunAsync() at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunAsync() at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunAsync() at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunAsync() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry() at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) Stack Trace: at System.Diagnostics.Debug.UnixDebugLogger.ShowAssertDialog(String stackTrace, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition) at Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager.GetAggregate(AggregateSymbol agg, AggregateType atsOuter, TypeArray typeArgs) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs:line 289 at Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager.GetAggregate(AggregateSymbol agg, TypeArray typeArgsAll) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs:line 304 at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs:line 812 at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs:line 751 at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeFromType(Type t) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs:line 995 at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.PopulateLocalScope(DynamicMetaObjectBinder payload, Scope pScope, ArgumentObject[] arguments, IEnumerable`1 parameterExpressions, Dictionary`2 dictionary) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs:line 735 at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs:line 233 at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, IEnumerable`1 parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs:line 170 at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/BinderHelper.cs:line 97 at Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder.FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) in /root/corefx/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/CSharpInvokeBinder.cs:line 69 at System.Dynamic.InvokeBinder.FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/InvokeBinder.cs:line 42 at System.Dynamic.DynamicMetaObject.BindInvoke(InvokeBinder binder, DynamicMetaObject[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/DynamicMetaObject.cs:line 205 at System.Dynamic.InvokeBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/InvokeBinder.cs:line 65 at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/DynamicMetaObjectBinder.cs:line 90 at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) in /root/corefx/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs:line 129 at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) in /root/corefx/src/System.Linq.Expressions/src/System/Dynamic/UpdateDelegates.Generated.cs:line 401 at ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test.MainMethod(String[] args) in /root/corefx/src/System.Dynamic.Runtime/tests/Dynamic.DynamicType/Conformance.dynamic.dynamicType.basic.cs:line 4631 at ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test.DynamicCSharpRunTest() in /root/corefx/src/System.Dynamic.Runtime/tests/Dynamic.DynamicType/Conformance.dynamic.dynamicType.basic.cs:line 4619 Build : Master - 20170224.01 (Core Tests) Failing configurations: - Redhat.72.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170224.01/workItem/System.Dynamic.Runtime.Tests/analysis/xunit/ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda017.lambda017.Test~2FDynamicCSharpRunTest +16435 area-Microsoft.CSharp Bring back paths blocked by UNSUPPORTEDAPI in Microsoft.CSharp The methods these paths use are all available again, and all have coverage from tests between the three test projects that hit MS.CSharp Fixes #16041 Bring them back except… Since this makes `HasSameMetadataDefinitionAs` calls now equivalent to the `UNSUPPORTEDAPI` code it is a substitute for, just keep it and remove the `UNSUPPORTEDAPI` code at those locations. `s_MemberEquivalence` delegate is now dead code. Remove it. +16439 area-System.Data Memory leak in System.Data.Common.DbCommand "DbCommand has memory leaks in ExecuteNonQueryAsync and ExecuteDbDataReaderAsync methods. They dispose CancellationTokenRegistration in ""catch"" instead of ""finally"" block: ```c# public virtual Task ExecuteNonQueryAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) return ADP.CreatedTaskWithCancellation(); CancellationTokenRegistration tokenRegistration = new CancellationTokenRegistration(); if (cancellationToken.CanBeCanceled) tokenRegistration = cancellationToken.Register(new Action(this.CancelIgnoreFailure)); try { return Task.FromResult(this.ExecuteNonQuery()); } catch (Exception ex) { tokenRegistration.Dispose(); return ADP.CreatedTaskWithException(ex); } } ``` but must be: ```c# public virtual Task ExecuteNonQueryAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) return ADP.CreatedTaskWithCancellation(); CancellationTokenRegistration tokenRegistration = new CancellationTokenRegistration(); if (cancellationToken.CanBeCanceled) tokenRegistration = cancellationToken.Register(new Action(this.CancelIgnoreFailure)); try { return Task.FromResult(this.ExecuteNonQuery()); } catch (Exception ex) { return ADP.CreatedTaskWithException(ex); } finally { tokenRegistration.Dispose(); } } ```" +16440 area-Infrastructure Use run.cmd in publish build leg "Remove old ""shared"" sync implementation and use sync.cmd (using init-tools and msbuild directly skipped the Tools-Override copy and used the wrong task DLLs), and remove UpdatePublishedVersions.ps1." +16441 area-Meta Publish missing source code to ReferenceSource ReferenceSource: https://github.com/Microsoft/referencesource/tree/master/ has missing source code (mostly internal types). We should publish them. * #14529 - [System.Runtime.Caching](https://github.com/Microsoft/referencesource/tree/master/System.Runtime.Caching/System/Caching) (UsageEntryRef, CacheUsage, ExpiresEntryRef, CacheExpires) +16443 area-System.Security Fix a 512 vs 521 typo in ECDSA keysize assert. Once Keychain enumeration was working locally it was observed that a NIST-P521 certificate calling GetECDsaPublicKey() was asserting. This should already have been caught by the tests, but key generation was disabled due to perf and keychain contamination. +16445 area-System.Security Initial implementation of X509Certificates, HttpClient, and SslStream for macOS Broken by this change: * A lot of TLS CipherSuites have no metadata defined. * macOS does not support version skipping in TLS. So `Tls | Tls12` is an invalid choice. In this change: General: * All OSStatus related exceptions now look up the error message. X509Certificates: * X509Certificate moves to using SecCertificateRef from OpenSSL's X509. * X509 metadata comes from a managed reader after being loaded by Security.framework, due to the significant amount of data that has no public export in Apple's libraries. * Significant code was factored out to be shared by OpenSSL and Apple implementations for X500DistinguishedName and X509Certficate2Collection.Find. * Loading a PFX (or, rather, the private keys from a PFX) via Apple's platform requires importing into a Keychain, and a Keychain requires a file on disk. A temporary keychain is created during cert loading and erased when safe. Like the perphemeral key load on Windows this can leak files due to abnormal program termination. * The X.509 My store for CurrentUser and LocalMachine are the default (user) and System keychains. * The X.509 Root store is an interpretation of the Apple SecTrustSettings data. * The X.509 Disallowed store hasn't been implemented yet, but should be a very small change. * Other X.509 stores cannot be created due to keychain complexity. HttpClient: * Initialization no longer wakes up OpenSSL SslStream: * New implementation based on Apple SecureTransport. * Currently has support for SNI (for AuthenticateAsClient) +16447 area-Infrastructure [release/1.1.0] Inbox value tuple Require buildtools update to build w/o validation errors. https://github.com/dotnet/buildtools/pull/1348 Fixes: #14235 /cc @jcouv @marek-safar @weshaggard +16448 area-System.Diagnostics [API Proposal] Debug.Assert overloads taking bool? "## Motivation For me, it's very frequent to assert something is non-null in a `Debug.Assert`. It is also frequent for me to verify some properties about that thing after asserting it is non-null. For example, if one wants to do a typical validation of array/index/count parameters, you would do ```cs Foo(T[] array, int index, int count) { Debug.Assert(array != null); Debug.Assert(index >= 0 && count >= 0); Debug.Assert(array.Length - index >= count); } ``` Here, we are first asserting the array is non-null and then asserting that there's enough room for `count` using the array's `Length` property. Usually, I like to take advantage of null-conditionals to condense these kinds of asserts: ```cs Foo(T[] array, int index, int count) { Debug.Assert(index >= 0 && count >= 0); Debug.Assert(array?.Length - index >= count); } ``` This works because `>=` in the second assert does a lifted comparison and returns false if the left side is `null`. Its result is a `bool`, which can be passed to `Debug.Assert` with no problems. In the following example, however, the assert fails to compile: ```cs void ReadingOperation(Stream stream) { Debug.Assert(stream?.CanRead); } ``` `stream?.CanRead` returns a `bool?`, which `Debug.Assert` does not know how to handle. This means the user has to have two asserts, one for asserting the stream is non-null and another for asserting it `CanRead`. ## Proposal Add overloads of `Debug.Assert` accepting a `bool?`. `null` values will be treated as `false`. ```cs namespace System.Diagnostics { public static class Debug { [Conditional(""DEBUG"")] public static void Assert(bool? condition); [Conditional(""DEBUG"")] public static void Assert(bool? condition, string message); [Conditional(""DEBUG"")] public static void Assert(bool? condition, string message, string detailMessage); [Conditional(""DEBUG"")] public static void Assert(bool? condition, string message, string detailMessageFormat, params object[] args); } } ``` I don't know what the last two overloads do since I've never used them before, but I added them for the sake of completion. If they have to be removed from the proposal that's fine with me. ## Implementation ```cs [Conditional(""DEBUG"")] public static void Assert(bool? condition) => Assert(condition.GetValueOrDefault()); ``` ## Additional notes xUnit already has `Assert.True` and `Assert.False` overloads that take nullable booleans. See here: https://github.com/xunit/assert.xunit/blob/master/BooleanAsserts.cs#L70" +16449 area-System.IO Cleanup File Lock/Unlock OSX tests. Adds/modifies tests for FileStream lock/unlock after https://github.com/dotnet/coreclr/pull/9769. +16450 area-System.Net Activate/Deactivate tests according to issue status. cc @steveharter @danmosemsft @karelz fixes #13323 #12535 #12637 +16451 area-Microsoft.CSharp Remove Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder.EnsureChecked() All uses were removed in #16328 but its deletion was missed. +16452 area-System.Data Failure in System.Data.Tests.SqlTypes.SqlXmlTest.Constructor2_Stream_Null - SEHException Not much to go on here. The function at the top of the stack just sets some fields. https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/114/consoleText ``` Starting: System.Data.Common.Tests System.Data.Tests.SqlTypes.SqlXmlTest.Constructor2_Stream_Null [FAIL] System.Runtime.InteropServices.SEHException : External component has thrown an exception. Stack Trace: D:\j\workspace\code_coverage---b14a30e5\src\System.Data.Common\src\System\Data\SQLTypes\SqlXml.cs(56,0): at System.Data.SqlTypes.SqlXml..ctor(Stream value) D:\j\workspace\code_coverage---b14a30e5\src\System.Data.Common\tests\System\Data\SqlTypes\SqlXmlTest.cs(73,0): at System.Data.Tests.SqlTypes.SqlXmlTest.Constructor2_Stream_Null() Finished: System.Data.Common.Tests ``` +16453 area-System.Numerics Updating System.Numerics.Vectors to use System.MathF This should provide a decent perf gain on `netcoreapp` and `uap` where `System.MathF` is available. +16456 area-System.Net Improve Uri.UnescapeDataString codepath Work for #16040 This improvement is an initial proposal to avoid char[] allocations done in Uri.UnescapeDataString codepath specifically under UriHelper.UnescapeString. This as well reflects to be faster in a local mini-test I wrote [source code here](https://github.com/safern/mini-test/) -- and also saw some improvements in inclusive and exclusive time in an asp.net test scenario which you can find [here](https://github.com/aspnet/Performance/tree/dev/testapp/BigModelBinding). The main improvements is that now I'm not seeing any char[] allocations in the GC Heap in any of the scenarios coming from the Uri.UnescapeDataString codepath and a little improvement in execution time. ## Here is the mini-test I wrote PerfView traces result: ### CPU Stacks > Before My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326754/5de2b656-fab6-11e6-9552-fc0118bacc84.png) > After My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326750/46e19846-fab6-11e6-966b-c30743aa4688.png) In this test scenario we can see that there is a bigger difference inclusive and exclusive time spent in `Uri.UnescapeDataString` ### GC Heap > Before My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326793/00b5f7bc-fab7-11e6-8584-b7294d7b393c.png) * Callers to `Char[]` ![image](https://cloud.githubusercontent.com/assets/22899328/23326797/214fbb0c-fab7-11e6-954e-b60ad2d2d7e4.png) > After My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326780/cfbfad1a-fab6-11e6-9387-0c757d18c381.png) * Callers to `Char[]` ![image](https://cloud.githubusercontent.com/assets/22899328/23326805/3b30d240-fab7-11e6-8c66-a0dc08247d77.png) As we can see in this scenarios `Uri.UnescapeDataString` is allocating 0 `Char[]` and it reduced the allocations by 50% from 34,000 to 17,000. ## Here are the results for the asp.net test scenario: ### CPU Stacks > Before My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326631/6e1c4fb6-fab4-11e6-817e-ae2ee1e57d87.png) > After My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326605/29e8b1b8-fab4-11e6-8ac6-84e84d67d2d8.png) As we can see after the changes `Uri.UnescapeDataString` went down on both exclusive (0.4%) and inclusive (0.1%) time. ### GC Heap > Before My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326694/527cbe52-fab5-11e6-985e-281f3b6db36d.png) * Callers to `Char[]` ![image](https://cloud.githubusercontent.com/assets/22899328/23326703/664af5fc-fab5-11e6-90f5-d8ceb188c5fb.png) > After My Changes ![image](https://cloud.githubusercontent.com/assets/22899328/23326654/c925cd9c-fab4-11e6-9d1b-c5a779ae208c.png) * Callers to `Char[]` ![image](https://cloud.githubusercontent.com/assets/22899328/23326673/0c223f7c-fab5-11e6-90da-b27b29db8de2.png) As we can see `Char[]` allocations went down 0.4% and in this particular scenario is around 7,500 less allocations when using `ArrayPool`. Also we can see on the callers that are creating this objects that if we use `ArrayPool` there is 0 `Char[]` allocations in `Uri.UnescapeDataString` Now I'm keeping the old `UriHelper.UnescapeString` code and its dependencies around because in order to delete it there is a lot of work required because it is used a lot from internal APIs. /cc @stephentoub @jkotas @danmosemsft +16458 area-System.Linq Add Enumerable.AggregateRight # Background LINQ offers a [Aggregate](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Aggregate.cs) (`foldl`) method, but it does not provide its rigth-associative version (`foldr`). ![foldr](https://cloud.githubusercontent.com/assets/11452028/23327019/ed4cefbe-fae3-11e6-92ea-63efb9ac0f75.png) # Proposal I would like to submit a PR for this, but i dont know exactly which files I must change. There is something beyond to create AggregateRight and tests? +16460 area-System.Memory Removing ref T Span.GetItem and updating Indexer to return ref Fixing issue #13681 +16463 area-System.Drawing "[Bug Suspected] ImageFormat's ""ToString"" comparation error" "Let's get started with a very simple demo: 1) Create a demo console application and referring net 4.6 framework, with the ""System.Drawing"" namespace added in. 2) Download or create a file of jpg. 3) Now let's import the file directly into the Image and do this following by: `Image img = Image.FromFile(""c:\\test.jpg""); Console.WriteLine(img.RawFormat.Equals(ImageFormat.Jpeg));` Now the answer is ""True"", and the ImageFormat's Guid for ""JPEG"" is ""{b96b3cae-0728-11d3-9d7b-0000f81ef32e}"". The same answer is also for ""Equals"". HOWEVER in ""ToString"" method, **the expected result should be ""Jpeg"" as the output. But I didn't see that, and instead the result is:** `[ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e]` Now let's deeply go into the code (to here), the original source code is from: https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Advanced/ImageFormat.cs,b96b3cae-0728-11d3-9d7b-0000f81ef32e,references > public override string ToString() > { > if (this == memoryBMP) return ""MemoryBMP""; > if (this == bmp) return ""Bmp""; > if (this == emf) return ""Emf""; > if (this == wmf) return ""Wmf""; > if (this == gif) return ""Gif""; > if (this == jpeg) return ""Jpeg""; > if (this == png) return ""Png""; > if (this == tiff) return ""Tiff""; > if (this == exif) return ""Exif""; > if (this == icon) return ""Icon""; > return ""[ImageFormat: "" + guid + ""]""; > } > Why do we say ""this == another type of ImageFormat"" without overridding the operator ""==""? And from this demo can we make sure that this is a bug and should be fixed? And what's more——Why not use ""if……else if……else……"" instead of multiple ""if"" here? PS:I didn't find the ImageFormat.cs yet, though I did a full research." +16464 area-System.Net Regression: Cookies are not sent in System.Net.Http 4.3.1 if set through headers "In 4.3.0 everything worked as expected. Repro: Run following code in .NET Framework 4.6 ```c# using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using System.Net.Http; using System.Threading.Tasks; namespace BrokenHttpClient { class Program { static void Main(string[] args) { var host = new WebHostBuilder().UseWebListener().Configure(app => app.Run(ctx => { if (ctx.Request.Headers[""Cookie""].Count == 0) ctx.Response.StatusCode = 400; return Task.FromResult(0); })).UseUrls(""http://localhost:3002"").Build(); using (var client = new HttpClient()) { host.Start(); var req = new HttpRequestMessage(HttpMethod.Post, ""http://localhost:3002""); req.Headers.TryAddWithoutValidation(""Cookie"", ""mykey=myvalue""); var res = client.SendAsync(req).Result; res.EnsureSuccessStatusCode(); } } } } ``` Nuget packages: - Microsoft.AspNetCore.Hosting 1.1.0 - Microsoft.AspNetCore.Server.WebListener 1.1.0 - System.Net.Http 4.3.0 and 4.3.1 On 4.3.0 works as expected, on 4.3.1 cookie is not sent (400 is returned)." +16467 area-Infrastructure testdotnetcli referenced by scripts and instructions does not exist anymore https://github.com/dotnet/corefx/blob/295ed7b94eb78c0bfad29141ae1a0859c7232f77/run-test.cmd#L11 https://github.com/dotnet/corefx/blob/dcfcc7a4a67aeddc34c03302de7cef68770b9f29/Documentation/project-docs/developer-guide.md#L317 +16468 area-System.Net Error in StreamSocketListener The StreamSocketListener isn't running in background. When that will be solved? +16469 area-Meta Possible .NET Core bug? The dependencies referencing scope in .NET Core is behaving different than .NET 4.5. For instance, the following projects: http://i.imgur.com/eEVq3dx.jpg They are referenced as such: ClassLibrary1 -> ClassLibrary2 -> ClassLibrary3 So, prior to .NET Core any `public` class within `ClassLibrary2` should be accessible from `ClassLibrary1` but any class within `ClassLibrary3` should not be accessible from `ClassLibrary1`. Since it doesn't directly reference `ClassLibrary3`. But with .NET Core I can compile this: ```c# using ClassLibrary2; using ClassLibrary3; namespace ClassLibrary1 { public class Class1 { public Class1() { var a = new Class2();//as expected var b = new Class3();//what? } } } ``` Is this a bug? +16475 area-System.Runtime TimeSpan Multiplication and Division Update refs and add tests. Closes #7175 Won't pass CI until dotnet/coreclr#9804 is in. +16476 area-System.Runtime API Proposal: Named Multiply and Divide on type TimeSpan #7175 proposes, and dotnet/coreclr#9804 and #16475 provide `/` and `*` operators for `TimeSpan`. For all previous operators on `TimeSpan` the policy of [CA2225](https://msdn.microsoft.com/en-us/library/ms182355.aspx) was followed by having named alternative methods for the operation, allowing languages which did not honour operator overloading to use the same functionality. This should be done for the new operators as well. ```C# namespace System { public struct TimeSpan { public TimeSpan Multiply(double factor); public TimeSpan Divide(double divisor); public double Divide(TimeSpan ts); } } ``` Functionally these methods should behave identically to the operators dotnet/coreclr#9804 adds. +16477 area-System.Diagnostics [1.1] Update AspNetCoreHosting keyword The change is to unblock using Application Insights Profiler on .NET Core scenarios. The change adds httpContext.TraceIdentifier and httpContext.Response.StatusCode keywords which allow Application Insights Profiler to correlate the profiling trace with the corresponding AI request telemetry event. @vancem Note: It's redoing the reverted pr #16199. +16479 area-System.Runtime S.R.CS.Unsafe: Add ReadUnaligned and WriteUnaligned It is fairly common to read and write unaligned pointers in low-level code. There is no good way to do it today. The options are: - Slow code that reads one byte at a time - Non-portable code. Example: https://github.com/dotnet/corefxlab/pull/1251#discussion_r103063503 - Ugly ifdefs or conditional execution. Example: https://github.com/dotnet/coreclr/blob/68f72dd2587c3365a9fe74d1991f93612c3bc62a/src/mscorlib/src/System/IO/UnmanagedMemoryAccessor.cs#L195 This proposal is to add APIs that make it easy to write low-level code that reads and writes from unaligned pointers. ```c# public static class Unsafe { public static T ReadUnaligned(void* source); public static T ReadUnaligned(ref byte source); public static void WriteUnaligned(void* destination, T value); public static void WriteUnaligned(ref byte destination, T value); } ``` It is fairly natural extension of `Unsafe` class. There are existing `Read` and `Write` methods, as well as methods with `Unaligned` suffix. +16481 area-System.Runtime EnumerateEnvironmentVariables test failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3862/consoleText ``` System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(target: Process) [FAIL] Assert.Equal() Failure Expected: false Actual: (null) Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs(199,0): at System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(EnvironmentVariableTarget target) ``` cc: @JeremyKuhne +16482 area-Infrastructure Add new documentation for new users that has step-by-step instructions "# problem I had problems on knowing what tools i needed to get corefx to run, test, and get code coverage because I did not know where to look. # explanation I had a hard time getting corefx to run because I was expecting to find step-by-step documentation on how to get corefx running on my computer. Because I was looking for a step-by-step guide, I ignored the page about [building CoreFX on windows](https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md) because I thought ""I'm on windows. I never have to build anything on windows."" # solution Add additional documentation with the step-by-step instructions for installing tools, building, and testing corefx. This way, new users can follow the step-by-step guide, but also read the ""why"" that is in the already existing documentation. " +16483 area-Infrastructure Add expected behavior about user-unhandled errors when running the tests projects in visual studio # problem If you run the System.Configuration.ConfigurationManager tests project in visual studio, you will get an error that an error happened in the System.Configuration.ConfigurationManager dll and was not handled by the user. After two weeks of working with the coreex staff, I found out that this was expected behavior # solution There are two solutions 1. Include that a user needs to either continue when these errors happen, or to disable breaking when an error happens that is user-unhandled. 2. Add documentation stating that this is expected behavior. +16484 area-System.Numerics Improved Asin and ACos Previous implementations of Asin and Acos were based on log(i z + sqrt(1 - z^2)), which is subject to overflow and cancellation in large fractions of the space of representable z. The new implementation is based on an article by Hull and Tang that correctly handles essentially the entire representable space. This solves bug #15455, which can be closed after this pull. Fixes #15455 +16485 area-System.Security Add support for SHA3 (Keccak) "Since SHA1 has been known as an ""unsafe"" algorithm, but now a safer algorithm called ""SHA3"" is created. So this algorithm should also be included here. Any plans or options for Microsoft now? As far as we see, SHA3 is a little faster than SHA2 and what's more——It's SAFER." +16486 area-System.Numerics Sin and Cos Bad Behavior for Large Arguments "For |x| > ~1.0E19, Math.Sin(x) and Math.Cos(x) return x rather than an approximation to Sin(x) or Cos(x). This is documented, but is nonetheless a very bad behavior and should be changed to throw an ArgumentOutOfRangeException or return a NaN. Calculating trig functions of large arguments is hard for reasons well-known to numerical computing experts and much less well-known to most other programmers. The issue has a long history of sowing confusion. (See https://randomascii.wordpress.com/2014/10/09/intel-underestimates-error-bounds-by-1-3-quintillion/ and some references there.) One way of viewing the problem is that FP doubles have ~16 digits of accuracy, so once you get to values above ~6.0E16, there is a full 2\pi of ""uncertainty"" in the value, so we don't really know where we are within the period of the sine curve. The real solution to this problem would be to implement range reduction with a high-precision value of \pi, which would enable us to give 1-ulp accurate values of trig functions for all representable doubles. I will request that solution in another bug. This bug is about what we should do if we are not willing to implement the real solution. Page 3 of the paper https://www.csee.umbc.edu/~phatak/645/supl/Ng-ArgReduction.pdf has a table that compares the behavior of trig functions for large argument for ~30 different platforms. Some of them implement the real solution and so are able to give the correct answer. Others return what is essentially a random value between -1 and 1, or return 0 for sin and 1 for cos. Almost all of these platforms satisfy sin^2 + cos^2 = 1. Finally, some platforms return an error or a NaN to signal their inability to do the requested calculation. What none of them do is what .NET does: return the argument. Besides being unique, what .NET does is bad for a number of additional reasons: (i) One thing we know for certain about sin and cos values is that they must lie between -1 and 1; our behavior violates this rule. (ii) Another thing we know for certain about sin and cos values is that sin^2 + cos^2 = 1; our behavior violates this rule. (iii) Typically people don't call Math.Sin and Math.Cos as part of a program that just computes sines and cosines. Instead, the input argument is the result of a complex calculation and the output value feeds into other complex expressions that are supposed to produce the desired numerical result. It is very easy for a program to produce an input in the bad range in a way that is hard for the programmer to foresee. Without any clear error signal, it's also very easy for the program to go on to produce an ultimate numerical result that is not obviously the total bull**** that it in fact is. (iv) Of course, since we document this, we could argue that the programmer should check input validity before calling Math.Sin or Math.Cos. But if the programmer should always do this, why don't we do it for him? A single floating point comparison is not a high overhead. There are some applications where speed is of the utmost importance, more important even than validity. Gaming comes to mind. (Actually, pretty much only gaming comes to mind.) But we don't allow such considerations to outweigh the requirement for validity for other functions. No one would suggest that we replace Math.Sqrt with Carmack's famous fast inverse square root trick (https://en.wikipedia.org/wiki/Fast_inverse_square_root); we expect people who prefer a fast-and-usually-approximately-right answer to a slower-but-actually-correct answer to call a dedicated fast-but-approximate method. " +16488 area-System.Diagnostics "InnerLoop_Fedora24_Debug: Test ""System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncErrorStream"" failed with ""Xunit.Sdk.EqualException""" Failed test: System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncErrorStream Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_debug/1140/consoleText Configuration: InnerLoop_Fedora24_Debug ([build#1140](https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_debug/1140/testReport/)) Message: ~~~ System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncErrorStream [FAIL] Assert.Equal() Failure ↓ (pos 0) Expected: RemoteExecutorConsoleApp.exe started erro··· Actual: Did you mean to run dotnet SDK commands? ··· ↑ (pos 0) ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Diagnostics.Process/tests/ProcessStreamReadTests.cs(23,0): at System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncErrorStream() ~~~ +16489 area-System.Diagnostics "System.Diagnostics.Tests.ProcessTests.TestExitTime failed with ""TestExitTime is incorrect"" on Windows 8.1" Failed test: System.Diagnostics.Tests.ProcessTests.TestExitTime Configuration: OuterLoop_Windows8.1_debug ([build#115](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/115/testReport/)). Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/115/testReport/System.Diagnostics.Tests/ProcessTests/TestExitTime/ Message: ~~~ TestExitTime is incorrect.\r\nExpected: True\r\nActual: False ~~~ Stack Trace: ~~~ at System.Diagnostics.Tests.ProcessTests.TestExitTime() in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Diagnostics.Process\tests\ProcessTests.cs:line 172 ~~~ +16490 area-System.Runtime ValueTuple AsEnumerable extension method For ValueTuple which have the same object it would be similar to collection so I think we should have some way to iterate its values. And so it could work with linq ```C# public static class TupleExt { // sample for Tuple 3 public static IEnumerable AsEnumerable(this ValueTuple tuple) { yield return tuple.t0; yield return tuple.t1; yield return tuple.t2; } } ValueTuple vector; var countPositive = vector.AsEnumerable().Count((p) => p > 0); ``` +16491 area-System.Diagnostics Validating a DiagnosticSource/Activity based 3rd party tracer and an OpenTracing bridge "I'm trying to figure out how the new `Activity` API should be used in a tracer (e.g. Application Insights) or in an OpenTracing bridge. @lmolkova @vancem It would be great if you could provide your feedback here. Maybe it results in some insights for the current API. I will start with some basic questions and I will add further questions once I have a better understanding, if that's ok for you. ### Executing code on Start and Stop for *all* activities I think a tracer should be unaware of actual operation names like ""Http_In"" etc. Instead, the tracer should have a mode where it automatically picks up *all* activities. Of course, it will be useful to also allow users to filter these events (white-list or black-list). IIUC, the current hooks for this are the `[OperationName].Start` and `[OperationName].Stop` DiagnosticSource events as described in [Subscribe to DiagnosticSource](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md#subscribe-to-diagnosticsource). Since `OperationName` is dynamic, I don't see an easy way to get *all* activities. Would I have to do something like the following to e.g. send all finished activities to a different system? ```csharp DiagnosticListener.AllListeners.Subscribe(delegate (DiagnosticListener listener) { listener.Subscribe(delegate (KeyValuePair value) { if ( // StopActivity writes an event with the suffix ""Stop"" value.Key.EndsWith(""Stop"", StringComparison.Ordinal) // However, there could also be other events that use this suffix // so we have to check if there's an activity && Activity.Current != null // There could also be ""*.Stop"" events while the activity is running && Activity.Current.Duration != TimeSpan.Zero) { // send stopped activity to external system } }); } ``` However, since there's no longer a filter outside of `Subscribe`, this would enable *all* diagnostic listener categories, wouldn't it? Also, the string comparison for the ""Stop""-suffix etc seems a bit odd. If the intend is to always have the category white-list, where/how should this be implemented in your opinion to keep the tracer (e.g. Application Insights) unaware of actual instrumentations? ### Using globally unique activity IDs Tracing systems need unique IDs to distinguish traces/activities. The Activity API defines a way to [set a custom root ID](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md#root-id) through `SetParentId(string)`. If this API is not used, a simple int counter is used - which obviously isn't guaranteed to be unique across machines. IIUC, tracers are supposed to call `SetParentId` in `[OperationName].Start` events, right? Child activities however will then get add local increment IDs as suffixes to this parent ID without any way to change it. IIUC, this has several problems: * To call `SetParentId` on all activities, the tracer again has to listen to *all* `*.Start` events which might not be possible right now without enabling *all* diagnostic listener categories (see previous point) * Tracers might not be able to handle the format of child activities. They might e.g. always require random `long` values. * Child activities on different servers might get the same ID. Example: A server request generated a root ID of `123`. It then executes 2 child requests which are handled by different servers in a farm. If the local counter happens to be the same (e.g. on application startup), both would get the same child ID of ""123.1""." +16492 area-System.Memory System.Memory.Tests crashing on Windows outer loop runs "https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/115/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/111/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_debug/106/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/112/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/117/consoleText ``` Discovering: System.Memory.Tests Discovered: System.Memory.Tests Starting: System.Memory.Tests Finished running tests. End time= 3:21:30.59, Exit code = -1073741819 D:\j\workspace\outerloop_win---65ef7d78\Tools\tests.targets(249,5): warning MSB3073: The command ""D:\j\workspace\outerloop_win---65ef7d78\bin/Windows_NT.AnyCPU.Release/System.Memory.Tests/netcoreapp//RunTests.cmd D:\j\workspace\outerloop_win---65ef7d78\bin/testhost/netcoreapp-Windows_NT-Release-x64/"" exited with code -1073741819. [D:\j\workspace\outerloop_win---65ef7d78\src\System.Memory\tests\System.Memory.Tests.csproj] D:\j\workspace\outerloop_win---65ef7d78\Tools\tests.targets(257,5): error : One or more tests failed while running tests from 'System.Memory.Tests' please check D:\j\workspace\outerloop_win---65ef7d78\bin/Windows_NT.AnyCPU.Release/System.Memory.Tests/netcoreapp/testResults.xml for details! [D:\j\workspace\outerloop_win---65ef7d78\src\System.Memory\tests\System.Memory.Tests.csproj] Using D:\j\workspace\outerloop_win---65ef7d78\bin\testhost\netcoreapp-Windows_NT-Release-x64\ as the test runtime folder. ``` cc: @jkotas " +16493 area-System.Security X509Certificate GetCertHash and GetCertHashString with SHA256 "As the current implementation uses SHA1 for calculating X509 hashes and SHA1 can't be considered safe anymore the hash calculation should be updated to SHA256. E.G.: ```csharp X509Certificate cert = new X509Certificate(""mycert.pxf""); byte[] b = cert. GetCertHash256() string s = cert. GetCertHashString256() ``` Alternatively, a variable hashing algorithm as function parameter would be desirable for future hashing methods. A use case is the ssl certificate validation on IoT devices to prevent man-in-the-middle attacks. Many IoTs connect to a web api via ssl and thus, should validate the server’s certificate. With limited compute power on the device the certificate’s thumbprint can be verified much cheaper than the whole chain of certificates. For example, the validation of a server certificate can be done with python on a Raspberry: ```python import ssl from cryptography import x509 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes thumbprint = 'e959fd5c80f76df7a593aae09686e604f74be8b0' pem = ssl.get_server_certificate( (host, port) ) certx509 = x509.load_pem_x509_certificate(str.encode(pem), default_backend()) tp = certx509.fingerprint(hashes.SHA256()) tpHex = ''.join('{:02x}'.format(x) for x in tp) if tpHex != thumbprint: print(‘Validation failed’) ```" +16498 area-System.Net IPAddressExtensions.Snapshot should not be public Looks like this became public at some point during porting. It's not public in desktop. +16500 area-System.Diagnostics Review the uniqueness of Activity ID in System.Diagnostics.Activity Currently we generate an ID by creating a 'unique ID for a process' (see s_uniqPrefix in the code) and then appending a process wide number (that increments) each time a number is used. There is a wrap around problem (if you allocate more than 4 billion IDs) The s_uniqPrefix is also not perfect as it uses the us granularity tick count to create a 'random' number. There certainly COULD be collisions if there were multiple processes on the same machine using activities and they both fetched their very first ID at the same time. There is also an issue when you create a ID from a ParentID coming from another system. Currently we simply append a process-wide sequence number to the ParentID, but if this happens on two different machines there can be a collision. Adding a machine-random number would avoid this. These are all very rare events, but if we can find cheap ways of making this better we should do so. +16502 area-System.Net Rewrite Socket Task-based send/receive async operations on SocketAsyncEventArgs They're currently on top of the APM methods. This commit changes the ReceiveAsync/Send{To}Async operations to instead sit on top of a cached set of SocketAsyncEventArgs instances. On a microbenchmark that connects two sockets and then does a million 1byte sends/receives from one to the other, top allocations before: ![image](https://cloud.githubusercontent.com/assets/2642209/23368963/b34f3226-fcdd-11e6-8c5d-05374dba4b3d.png) And top allocations after: ![image](https://cloud.githubusercontent.com/assets/2642209/23369063/1738fefc-fcde-11e6-97b4-7ac9c82c282d.png) In a small change that forces all receives to be asynchronous by doing them before the send, top allocations before: ![image](https://cloud.githubusercontent.com/assets/2642209/23370305/3fb64a02-fce2-11e6-8efe-514ee5687068.png) And top allocations after: ![image](https://cloud.githubusercontent.com/assets/2642209/23370313/47110472-fce2-11e6-88aa-d43259e8f83d.png) Throughput on the send/receive case also improved ~60%. Throughput on the receive/send case improved ~10%. The worst case for this change is when only one send/receive is done per socket, since then it doesn't benefit from the SocketAsyncEventArgs caching. It takes two send/receives per socket to break even on allocation, and after that it's a definitive win. With the task-based versions now generally much more efficient than the APM-based ones, I've switched NetworkStream.Read/WriteAsync to use them. cc: @geoffkizer, @cipop, @davidsh, @vancem +16503 area-System.Net Fix visibility of internal extensions type Fixes https://github.com/dotnet/corefx/issues/16498 cc: @geoffkizer, @cipop +16504 area-System.Memory Disable crashing System.Memory tests https://github.com/dotnet/corefx/issues/16492 cc: @jkotas, @ahsonkhan +16505 area-System.Diagnostics Add logging for System.Diagnostics.Tests.ProcessTests.TestExitTime For https://github.com/dotnet/corefx/issues/16489 cc: @danmosemsft +16506 area-Infrastructure Update buildtools and re-enable projects disabled due to Unix ilasm This re-enables the build for System.Runtime.CompilerServices.Unsafe on all platforms, and turns on the tests for System.Memory (they were disabled because Unsafe was disabled). @weshaggard @joperezr +16507 area-System.Threading Fix #16274 - LazyInitializer.EnsureInitialized overload for reference types. This PR is for the implementation of new overloads of LazyInitializer.EnsureInitialized for reference types. @stephentoub @terrajobst @karelz Kindly review. Depends on PR [#9831](https://github.com/dotnet/coreclr/pull/9831) in CoreClr for compilation to succeed. Thanks, Mandar +16508 area-Infrastructure Add support for consuming local build coreclr in corefx builds A number of folks want to be able to build a local coreclr and consume it in corefx for testing purposes. There are a number of potential ways to do that today but we haven't documented them. This issue is tracking at least documenting them and potentially making improvements to make that scenario easier. +16509 area-System.Reflection Add WindowsBootApplication to Subsystem enum This addresses #15390 +16510 area-System.Diagnostics System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows failure System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows will fail if the machine that it is running on has inaccessible performance counter. We should move this test to outer loop, or make it robust against dirty environment. ``` System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Couldn't get process information from performance counter. -------- System.InvalidOperationException : Cannot load Counter Name data because an invalid index 'RemoteFX Synth3D VSC VM Transport Channel' was read from the registry. Stack Trace: X:\dev\coreclr\corefx\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) X:\dev\coreclr\corefx\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) X:\dev\coreclr\corefx\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(266,0): at System.Diagnostics.NtProcessManager.GetProcessIds(String machineName, Boolean isRemoteMachine) X:\dev\coreclr\corefx\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(69,0): at System.Diagnostics.ProcessManager.GetProcessIds(String machineName) X:\dev\coreclr\corefx\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(30,0): at System.Diagnostics.ProcessManager.IsProcessRunning(Int32 processId, String machineName) ``` +16511 area-System.Security WindowsPrincipalTests fail if the machine is not properly domain joined WindowsPrincipalTests fail if the machine is not properly domain joined. We should move this test to outer loop, or make it robust against dirty environment. ``` WindowsPrincipalTests.WindowsPrincipalIsInRoleNeg [FAIL] System.ComponentModel.Win32Exception : The trust relationship between this workstation and the primary domain failed Stack Trace: X:\dev\coreclr\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\NTAccount.cs(333,0): at System.Security.Principal.NTAccount.TranslateToSids(IdentityReferenceCollection sourceAccounts, Boolean& someFailed) X:\dev\coreclr\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\NTAccount.cs(194,0): at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean& someFailed) WindowsIdentityTests.CloneAndProperties(cloneViaSerialization: False) [FAIL] System.ObjectDisposedException : Safe handle has been closed Stack Trace: at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Advapi32.LsaLookupSids(SafeLsaPolicyHandle handle, Int32 count, IntPtr[] sids, SafeLsaMemoryHandle& referencedDomains, SafeLsaMemoryHandle& names) X:\dev\coreclr\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(1084,0): at System.Security.Principal.SecurityIdentifier.TranslateToNTAccounts(IdentityReferenceCollection sourceSids, Boolean& someFailed) WindowsIdentityTests.CloneAndProperties(cloneViaSerialization: True) [FAIL] System.ObjectDisposedException : Safe handle has been closed Stack Trace: at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Advapi32.LsaLookupSids(SafeLsaPolicyHandle handle, Int32 count, IntPtr[] sids, SafeLsaMemoryHandle& referencedDomains, SafeLsaMemoryHandle& names) X:\dev\coreclr\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(1084,0): at System.Security.Principal.SecurityIdentifier.TranslateToNTAccounts(IdentityReferenceCollection sourceSids, Boolean& someFailed) X:\dev\coreclr\corefx\src\System.Security.Principal.Windows\src\System\Security\Principal\SID.cs(1228,0): at System.Security.Principal.SecurityIdentifier.Translate(IdentityReferenceCollection sourceSids, Type targetType, Boolean& someFailed) ``` +16512 area-System.Net small changes to unix SocketAsyncContext This is a bit of cleanup/reorganization in preparation for upcoming perf enhancements. - When we retry an async operation and it then succeeds, complete it synchronously rather than queuing a completion to the thread pool. - Align operations and queues with OS readiness notifications (i.e. read/write) - Move the queue locks to the queue structure, and partially encapsulate access to the lock (in anticipation of fully encapsulating this in subsequent changes) +16513 area-System.Net Test hole in System.Private.Uri -> UriHelper.EscapeString There is a test hole where we are not testing the case of when we find an unescaped reserved character and we need to grow the destination `char[]` and copy its current values. Pointer to this case in the source code: https://github.com/dotnet/corefx/blob/master/src/System.Private.Uri/src/System/UriHelper.cs#L407-L432 Pointer to a comment on a PR where we found this hole: https://github.com/dotnet/corefx/pull/16456#discussion_r103077889 /cc: @stephentoub +16514 area-Serialization Fixed a Bug with Serializing Types Having Known Types. This fix enable XmlSerializer to serialize types having known types into soap encoded message. Fix #15523. +16515 area-System.Net remove some unused Winsock interop stuff Remove unused Winsock APIs/structs. Also clean up usage of WSAEventSelect and comments regarding this. +16516 area-System.Net "System.Net.Security tests failing with: ""The credentials supplied to the package were not recognized""" There is a group of tests that are failing intermittently with the error ```System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized```. I'm tracking their failures in this issue as they are likely due to the same underlying issue. The following tests have failed at some point with this error: - [SslStream_StreamToStream_Authentication_Success](https://github.com/dotnet/corefx/issues/17103) - [SslStream_StreamToStream_HandshakeAlert_Ok](https://github.com/dotnet/corefx/issues/12706) - [SslStream_StreamToStream_DataAfterShutdown_Fail](https://github.com/dotnet/corefx/issues/12706) - [SslStream_StreamToStream_ServerInitiatedCloseNotify_Ok](https://github.com/dotnet/corefx/issues/12683) - [SslStream_StreamToStream_ClientInitiatedCloseNotify_Ok](https://github.com/dotnet/corefx/issues/15785) - [SslStream_StreamToStream_Write_ReadByte_Success](https://github.com/dotnet/corefx/issues/16338) - [ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success(serverProtocol: Tls11)](https://github.com/dotnet/corefx/issues/8744) - [ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success](https://github.com/dotnet/corefx/issues/16346) - [ServerAsyncAuthenticate_EachSupportedProtocol_Success(protocol: Tls11)](https://github.com/dotnet/corefx/issues/8744) - [ServerAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol: Tls, clientProtocol: Tls11, expectedException: typeof(System.Security.Authentication.AuthenticationException))](https://github.com/dotnet/corefx/issues/16651) None of these test failures are reproducible on local machines regardless of the number of runs executed, which suggests the issue lies in either the infrastructure or interference from other tests run alongside these. They only fail on Windows. It might be helpful to get another pair of eyes on this to see if anything stands out. As it is, I've been unable to narrow the symptoms down to any definitive problem and @steveharter and my's attempts to reproduce failures have been fruitless. I'll be disabling this entire group of tests to regain stability until we can get more information on their source. +16518 area-System.Runtime Failure in EnumerateEnvironmentVariables This is the test fixed in #16156, now it's failing in a new way. @JeremyKuhne https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3892/consoleText ``` System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(target: Process) [FAIL] Assert.Equal() Failure Expected: true Actual: (null) Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs(199,0): at System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(EnvironmentVariableTarget target) Finished: System.Runtime.Extensions.Tests ``` +16520 area-System.Net HttpClient doesn't detect IE setting for ignoring proxies "@davidsh mentioned halfway through #7037 that > HttpClientHandler/WinHttpHandler can use the 'Internet Explorer/Wininet-style"" registry settings for proxy detection. You don't need to have the WebProxy class for that. The default behavior for HttpClientHandler just simply uses these settings to find the proxy. It has the proxy detection logic built-in. How is that behaviour impacted when hosting on IIS through the reverse proxy? ### First: The Error Here is the exception that pops up when I try to do a `HttpClient` `GetAsync()`, which Wireshark reveals is caused by the proxy cutting the request off (error 407). > System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to read data from the transport connection. The connection was closed before all data could be read. Expected 2245 bytes, read 0 bytes. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.StreamToStreamCopy.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpContent.d__48.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() ### Second: The Behaviours I'm experiencing different behaviours when launching the exact same ASP.Net web API on Kestrel command-line versus IIS. The web API is fairly simple, with some calls that GET another external resource. - Internet Explorer LAN Settings 'Automatically detect settings' ticked - Kestrel: Exception - IIS: Exception - 'Automatically detect settings' **un-ticked** - Kestrel: **No exception - it works** - IIS: Exception So it appears, at first glance, that `HttpClientHandler` is ignoring the Automatically detect settings bit, when run under IIS. What I'm also suspecting is that IIS AppPool account might affect what proxy setting the HttpClient sees, in some way. But I probably need someone from the dotnet team to actually comment. Thank you." +16522 area-Infrastructure Fix run-test.sh to pass test-dir list - can test selected directory using list file or argument - can set root test binary location +16523 area-Infrastructure [ARM/CI] Use embedded rootfs for arm cross build Make use of the latest docker image for arm cross build The latest docker image contains rootfs for arm. For armel, we still have to generate rootfs on demand. This PR addresses a request from https://github.com/dotnet/core-setup/issues/725#issuecomment-282796328. +16529 area-System.IO SerialPort: Close blocked while write blocked in NETFX "See this comment: https://github.com/dotnet/corefx/issues/984#issuecomment-283058494 The SerialPort will block forever on Close(), while write blocked. Write blocked usually occurs during hardware flow control on the serial port where the remote side is causing the flow control. That is, while the remote side has indicated that sending is not possible so that Write() is blocked, Close() will block forever. A test case that shows this behaviour is: ```c# // NOTE: This test is expected to fail or block forever on Windows. [Test] [Timeout(4000)] public void SerialPortDisposedWhenBlocked() { byte[] buffer = new byte[1024]; using (SerialPort serialSource = new SerialPort(c_SourcePort, 115200, Parity.None, 8, StopBits.One)) using (SerialPort serialDest = new SerialPort(c_DestPort, 115200, Parity.None, 8, StopBits.One)) { serialSource.Open(); serialDest.Open(); serialDest.RtsEnable = false; new Thread( () => { Thread.Sleep(2000); Console.WriteLine(""Disposing serialSource""); // It appears that the MSDN .NET implementation blocks here, never // to return as we're blocked on another thread. serialSource.Dispose(); Console.WriteLine(""Disposed serialSource""); } ).Start(); int bufferCount = 1024 * 1024; while (bufferCount > 0) { serialSource.Write(buffer, 0, buffer.Length); bufferCount -= buffer.Length; Console.WriteLine(""{0}"", bufferCount); } } } ``` To test you will need real hardware that supports hardware flow control (e.g. a cable that also has RTS/CTS correctly wired), not just a simple three-wire cable. For example, this is reproducible on 2 USB FTDI chipsets with a NULL-Modem cable between that connects the RTS/CTS from each port to the other port. It works by telling the source port to send data, usually it will block within the first 2 seconds due to internal OS buffers. Then it becomes write blocked. The thread running in the background simulates another thread that might be trying to close or dispose the program and calls Close/Dispose on a different thread. Unfortunately, that thread will also block forever." +16530 area-Meta Ubuntu 16.10 CI runs failing These appear to be the first failing builds: https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_debug/1095/ https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_release/1098/ which suggests one of these changes is the culprit: ``` Changes Add Narrow, Widen, and Conversion methods to System.Numerics.Vectors. (commit: 2f69e67) (detail / githubweb) Add ConditionalFacts to GenericVectorTests.tt so that they are not (commit: 95f40b2) (detail / githubweb) Fix issues related to the debug overflow checking we added. (commit: 79766d2) (detail / githubweb) Update buildtools and re-enable projects disabled due to Unix ilasm (commit: 29029cf) (detail / githubweb) ``` +16531 area-Infrastructure Using `include_directories(SYSTEM...` for openssl and curl breaks cross compilation for Yocto Linux While taming the build process to run in a Yocto Linux cross compile environment, one road block was the explicit inclusion of the curl and openssl include directories [here](https://github.com/dotnet/corefx/blob/master/src/Native/Unix/System.Net.Http.Native/CMakeLists.txt#L26) and [here](https://github.com/dotnet/corefx/blob/master/src/Native/Unix/System.Security.Cryptography.Native/CMakeLists.txt#L16). The effect of these statements is (with clang 3.9.1) that the `${SYSROOT}/usr/include` folder (where curl and openssl headers reside in a Yocto build environment) becomes an `-isystem` parameter to clang and this reorders that folder above the C++ include folders. When clang now tries to resolve C++ header files, it fails on an `#include_next `, because that file isn't found in a folder that comes after the C++ header folders. Blaming the two CMakeLists points to build issues for OSX and BSD, but I cannot build for those targets. Otherwise I would check if the entire `include_directories` statement is actually necessary, or if removing the `SYSTEM` argument still makes the build succeed (it should). See also dotnet/core-setup#1598 +16532 area-Infrastructure build -allConfigurations fails on mac See https://github.com/dotnet/corefx/issues/16354#issuecomment-282995749 ``` orefx/Tools/partialfacades.task.targets(70,5): error : Errors were encountered when generating facade(s). [corefx/src/System.Runtime.InteropServices.WindowsRuntime/src/System.Runtime.InteropServices.WindowsRuntime.csproj] ``` I suspect that this is using the wrong System.Private.CoreLib to generate the facade. The unix one is missing the types that satisfy this contract. I'll let this issue track making this work and dealing with any other issues with build -allConfigurations on mac. +16533 area-Infrastructure Consider setting COMPlus_ FailFastOnCorruptedStateException=1 on test runs This will trigger a FailFast if a CorruptedStateException (which a real AV is) reached Reflection subsystem. May help us generate more actual dumps out of XUnit runs. To avoid the risk of hiding real issues maybe we should do this every other day or something. +16534 area-System.Net "Test failure: System.Net.Security tests failing with ""Authentication failed because the remote party has closed the transport stream""" There is a group of tests that are failing intermittently with the error ```System.IO.IOException : Authentication failed because the remote party has closed the transport stream.```. I'm tracking their failures in this issue as they are likely due to the same underlying issue. The following tests have failed at some point with this error: - [ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol: Tls12, clientProtocol: Tls11](https://github.com/dotnet/corefx/issues/16968) - [ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_EachClientUnsupportedProtocol_Fail](https://github.com/dotnet/corefx/issues/10909) - [ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_AllServerAllClient_Success](https://github.com/dotnet/corefx/issues/14177) - ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_IndividualServerVsAllClientSupportedProtocols_Success(serverProtocol: Tls11) - ClientDefaultEncryptionTest.ClientDefaultEncryption_ServerAllowNoEncryption_ConnectWithEncryption - [ServerNoEncryptionTest.ServerNoEncryption_ClientAllowNoEncryption_ConnectWithNoEncryption failed.](https://github.com/dotnet/corefx/issues/9130) - [ServerNoEncryptionTest.ServerNoEncryption_ClientNoEncryption_ConnectWithNoEncryption](https://github.com/dotnet/corefx/issues/11624) - ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientNoEncryption_ConnectWithNoEncryption - [ServerAllowNoEncryptionTest.ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption](https://github.com/dotnet/corefx/issues/14504) None of these test failures are reproducible on local machines regardless of the number of runs executed, which suggests the issue lies in either the infrastructure or interference from other tests run alongside these. They only fail on Windows. It might be helpful to get another pair of eyes on this to see if anything stands out. As it is, I've been unable to narrow the symptoms down to any definitive problem and @steveharter and my's attempts to reproduce failures have been fruitless. I'll be disabling this entire group of tests to regain stability until we can get more information on their source. They are possibly related to https://github.com/dotnet/corefx/issues/16516. +16536 area-System.Net Disable some failing System.Net.Security tests These seven tests are failing from the same problem #16516 @steveharter @Priya91 +16539 area-System.Linq S.L.Expressions interpreted filters fail if InstructionIndex changed directly. Found this experimenting wrt #15719 Some interpreter instructions read and/or update `frame.InstructionIndex` directly. Filters are an example because they outside of the normal flow, but they assume that they never call into any other instructions that do so. They also assume that the exception is on the top of the stack at the end of the filter execution (likely in most cases, hence it not being apparent before, but not if continuations are pushed and popped and perhaps not in other case). The result is almost certainly an exception that is then eaten with the filter not matching due to the rule for unhandled exceptions within filters requiring that. +16541 area-System.Linq Handle explicit InstructionIndex changes within filters Fixes #16539 Also remove unused `ExceptionHandler.Parent` field and make `ExceptionHandler.ExceptionType` field private. +16542 area-System.IO SerialPort: TimeoutException not always thrown for write timeouts With a 'real' (serial.sys / 16550) serial port, if you set up a `WriteTimeout` and then write to a port which is blocked by flow control, the write will eventually fail and throw a `TimeoutException`. This is the expected behaviour. This exception is thrown by a code in `SerialStream.Write`, which looks like this: ``` if (numBytes == 0) throw new TimeoutException(SR.Write_timed_out); ``` Where `numBytes` is passed back from the OS in the `lpNumberOfBytesWritten` argument of `WriteFile`. With some usb serial devices (tested with FTDI) `lpNumberOfBytesWritten` is not zero in this situation - it's some non-zero number less than the size of the buffer which was written. It's probably related to the difference in size between the buffer written and the amount of internal buffering within the driver/hardware stack.. This might be characterised as a bug within the FTDI product, but it's probably very difficult to fix - they have committed a certain amount of data to the USB stack and their hardware device, and once that's gone from their serial driver it is hard to know that it never made it out of the pins of the IC at the end of the USB cable. It could be possibly made to work via reporting back from the hardware to the driver, but if that isn't in place in their existing protocol then it's probably not going to be. This gives a situation where a `Write` has failed with a timeout but this fact is not visible to the application. Instead of the `numBytes == 0` test, we might consider having some other way of determining that a timeout occurred - perhaps something like `numBytes < (bytesThatCouldbeWritten)`. I'm not currently sure what `(bytesThatCouldbeWritten)` would be, and how this would interact with overlapped writes, etc, but it's worth thinking about. This can be left up-for-grabs for now. +16543 area-System.IO Fix testsharedframeworkpath for windows build-native. resolves https://github.com/dotnet/corefx/issues/15981 @mellinoe +16544 area-System.Net Increase Ping test timeout. These tests intermittently fail when they hit the timeout limit of 1s. I'm increasing it to 10s to get some more stability. @steveharter this should handle the two failures you sent me in `System.Net.NetworkInformation.Tests.UnixPingUtilityTests.*` +16545 area-System.Security Enable signing XML with RSA/SHA1 I've left bunch of NotImplementedExceptions - they have previously not worked too, right now the error message will be easier to figure out cc: @bartonjs - could you take a look? especially at RSAPKCS1SHA1SignatureDescription.cs ref: https://github.com/dotnet/corefx/issues/4278 @tintoy @anthonylangsworth @peterwurzinger +16546 area-System.Runtime Robustify enumerate environment test Make the environment variable enumeration test more stable by not over validating transient state. @ianhays #16481 +16547 area-System.Linq Remove OnesComplementInstruction Functionality for all supported types is identical to `NotInstruction`, so just use it. As well as reducing code, this makes the instruction set more directly comparable to CIL. +16548 area-System.Net Improve CI: disable socket tests on Unix which may fail due to port being in-use Several Socket tests bind to an open port (returned from the OS), and then connect to that same port but on a different IPV4 or IPV6 loopback address. On Windows that seems to work fine (that other loopback port is never in use), but on Unix (and OSX) port #'s are random (not incremental as in Windows) and it treats IPV4 and IPV6 as separate addresses thus the expected unused port will occasionally be in use causing that test, or related test to fail. Most likely it is the 'mirror' test that is using the other protocol+port, meaning the test just before or after the current test that for example tests (IPV6, IPV4) while the original tests (IPV4, IPV6). I have repro'd the failures fairly consistently on Ubuntu by adding a 'for' loop to both tests so they execute 1,000 times or so. I have also written a small POSIX example that shows given a bound IPV6 loopback port, the OS can return an IPV4 address with the same port. This PR just disables these tests for non-Windows cases. Note that these are also the 'failure' tests, meaning the happy path tests (IPV6, IPV6) or (IPV4, IPV4) are not changed here. Addresses https://github.com/dotnet/corefx/issues/9017, https://github.com/dotnet/corefx/issues/13213 Also https://github.com/dotnet/corefx/issues/14519 cc @stephentoub , @CIPop, @davidsh +16549 area-System.Net Update test issues to match current issue database. cc @karelz @steveharter @ianhays Re-enabling tests based on issue status. +16551 area-Infrastructure Restore ilasm from external directory, Update buildtools This also re-enables all of the projects that were disabled because of a lack of ilasm outside Windows. @weshaggard +16552 area-Infrastructure Add CoreCLROverridePath option to consume private coreclr in corefx Fixes https://github.com/dotnet/corefx/issues/16508. PTAL @stephentoub @jkotas @danmosemsft @RussKeldorph +16553 area-Meta Fix tests that assumed GC refs could become collectable in the middle of a method. Some tests have been assuming that when a local reference (e.g. a local variable) is last used in a method, it is immediately available to be collected by the GC, but this was never guaranteed (it just happened to work that way most of the time) and with upcoming CoreCLR changes this assumption will break tests. This change moves such references into their own method bodies - this is still not 100% guaranteed to work but it's very hard to see it ever breaking in the real world. +16555 area-System.Numerics "Test ""System.Numerics.Vectors.Tests "" failed with System.Reflection.TargetInvocationException & System.AccessViolationException" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170228.02/workItem/System.Numerics.Vectors.Tests/wilogs Failed test: System.Numerics.Vectors.Tests Failed to generate the test result. Message: ~~~ Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. ~~~ Stack Trace: ~~~ 2017-02-28 14:31:52,440: INFO: proc(54): run_and_log_output: Output: Discovering: System.Numerics.Vectors.Tests 2017-02-28 14:31:52,878: INFO: proc(54): run_and_log_output: Output: Discovered: System.Numerics.Vectors.Tests 2017-02-28 14:31:53,221: INFO: proc(54): run_and_log_output: Output: Starting: System.Numerics.Vectors.Tests 2017-02-28 14:31:55,035: INFO: proc(54): run_and_log_output: Output: 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Numerics.Vector.Narrow(Vector`1 low, Vector`1 high) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Numerics.Tests.GenericVectorTests.NarrowDouble() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: --- End of inner exception stack trace --- 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__0() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.b__45_0() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.RunAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestMethodAsync(ExceptionAggregator aggregator) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.<>c__DisplayClass43_0.b__0() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.RunAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestCaseRunner.RunTestAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.RunAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestCase.RunAsync(IMessageSink diagnosticMessageSink, IMessageBus messageBus, Object[] constructorArguments, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(ITestMethod testMethod, IReflectionMethodInfo method, IEnumerable`1 testCases, Object[] constructorArguments) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestCollectionRunner.RunTestClassAsync(ITestClass testClass, IReflectionTypeInfo class, IEnumerable`1 testCases) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync(IMessageBus messageBus, ITestCollection testCollection, IEnumerable`1 testCases, CancellationTokenSource cancellationTokenSource) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1.InnerInvoke() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c.<.cctor>b__8_0(Object s) 2017-02-28 14:31:55,112: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass11_0.b__0(Object _) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at lambda_method(Closure , Object , Object ) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionContextHelper.Run(Object context, Action`1 action) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.InnerInvoke() 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntryUnsafe() 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.ThreadPoolTaskScheduler.<>c.<.cctor>b__10_0(Object s) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-02-28 14:31:55,128: INFO: proc(54): run_and_log_output: Output: at System.Threading.ThreadHelper.ThreadStart(Object obj) 2017-02-28 14:31:57,816: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=14:31:57.81, Exit code = -532462766 2017-02-28 14:31:57,816: INFO: proc(58): run_and_log_output: Exit Code: -532462766 2017-02-28 14:31:57,832: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-02-28 14:31:57,832: ERROR: helix_test_execution(125): report_error: Error running xunit None ~~~ +16556 area-Meta Convert some uses of Marshal.SizeOf to sizeof sizeof has many times better performance characteristics +16558 area-System.Security Include System.Security.Cryptography.Xml in corefx-packaging In advance, this is less an issue than more a question/request for help. We are currently [working](https://github.com/dotnet/corefx/issues/4278) on porting the S.S.C.Xml-Lib to .NET-Core. For my bachelor thesis project I already need this library very soon - a nightly/experimental/pre-alpha/whatever - build is perfectly fine though. My question now is, what are the steps to include the project in the corefx packaging process? I did some hands-on and research but did not get far with it. Is there some kind of checklist for this? If not, could someone explain it to me so that I can include it by myself? I'm asking because I don't expect the package to be available on myget in time. Best wishes Peter +16560 area-System.Net FileLoadException - Microsoft.Win32.Primitives when using WinHttpHandler "On .NET 4.6: WinHttpHandler 4.4.0-24913-01 (4.0.2.0) depends on Microsoft.Win32.Primitives (4.0.1.0) whilie Microsoft.Win32.Primitives 4.4.0-24913-01 contains Microsoft.Win32.Primitives (4.0.2.0) This causes issues when binding redirects are not specified. Is this by design? Consider following code running on Kestrel with IIS Express in VS2017 RC ```c# app.Run(async ctx => { await new HttpClient(new WinHttpHandler()).GetAsync(""https://example.com""); }); ``` It throws FileLoadException." +16561 area-System.Collections Expose and test KeyValuePair.Create And add some unit tests for KVP construction and ToString Fixes #2127 +16563 area-System.Security Test runs on Ubuntu are showing useless stack on failure Running test is performed with: Tools\msbuild.sh /t:BuildAndTest project.csproj example stack trace on Ubuntu 16.04 (obviously big chunk of stack is missing) ``` xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Security.Cryptography.Xml.Tests Discovered: System.Security.Cryptography.Xml.Tests Starting: System.Security.Cryptography.Xml.Tests System.Security.Cryptography.Xml.Tests.EndToEnd.SignedXmlHasVerifiableSignature [FAIL] System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: .../corefx/bin/obj/Unix.AnyCPU.Debug/System.Security.Cryptography.Csp/netcoreapp/System.Security.Cryptography.Csp.notsupported.cs(208,0): at System.Security.Cryptography.SHA1CryptoServiceProvider..ctor() Finished: System.Security.Cryptography.Xml.Tests === TEST EXECUTION SUMMARY === ``` on the first look it looks like somewhere in the code there is something like: ```c# try { runtest(); } catch (Exception e) { throw e; } ``` replacing `throw e;` with simply `throw;` should fix it. I did not investigate where that code is or if that is the problem. +16564 area-System.Net Add several new sockets tests Separated out of https://github.com/dotnet/corefx/pull/16502, and added a Unix domain sockets test to try to approximate a test that's hanging in System,IO.Pipes with the new sockets changes. +16565 area-Infrastructure Warnings should not be errors when building single test project "When doing development it is normal to temporarily place exception in the middle of the code to investigate issue. Treating warnings as errors causes really annoying workflow that you also need to comment out stuff below it (because of ""Unreachable code detected""). This is completely valid to do as part of the full build but super annoying when building single project" +16566 area-System.Reflection Type: Needs api to distinguish SzArrays from Multidim arrays of rank 1. "The SZ array type (""T[]"") and rank 1 multidim arrays (""T[*]"") are distinct and non-interchangable types in .NET. However, the Reflection surface area contains no api to distinguish. (The most ""obvious"" approach (""t is Array && t.GetArrayRank() == 1"") captures both.) Proposal: Add a new property to System.Type: ```c# public virtual bool IsSZArray { get { throw NotImplemented.ByDesign; }} // Subclass needs to implement ``` Alternate names that have been proposed: IsSZArray IsVector The name ""IsSzArray"" has the small advantage that it already exists in both CoreClr and CoreRt - it's just not public. " +16567 area-System.Reflection Proposal: Update Type.GetMethod() overloads to simplify finding generic methods via reflection "# Problem Currently it is quite burdensome to resolve a specific `MethodInfo` for a generic method. That requires looping through all of the methods of the type and manually determining candidates based on name, parameter arity, type compatibility, etc. Such home-grown solutions are generally fragile, making assumptions regarding the specific overloads available for a given generic method at that point in time. # The problem with Type.GetMethod() `System.Type` exposes various apis for retrieving methods by signature. In the end, all of them are wrappers around this single method: ` public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) ` This api was adequate in a pre-generics world. Once generics appeared however, the api has two serious defects: ### 1. You cannot specify the generic arity. According to ECMA 335, the method signature includes the method's generic arity (generic parameters introduced by the method itself - not to be confused with generic parameters on the type declaring the method.) It is fully possible to have two methods on a type that differ only by generic arity. Despite this, there is no way to constrain the search to a specific generic arity. ### 2. No easy way to specify a generic parameter reference in a signature. To disambiguate between overloads, the api takes an expected signature in the form of a `Type[] `array. The problem is that Type objects in Reflection represent ""resolved types"" rather than ""signature types."" Nevertheless, in a pre-generics world, this was a reasonably adequate way to represent a signature type. However, generics added a new signature type known as the generic parameter reference (ET_VAR/ET_MVAR) which throws a wrench into this scheme. Information-wise, an ET_MVAR is a mere integer (the position index of the generic parameter being referenced.) Unfortunately, the `Type` model in Reflection has no direct analog to this simple construct. Instead, the only option available today to pass in a fully resolved generic parameter _definition_ `Type`, which includes back references to `MethodInfo` that introduced it, a name, the constraints, a metadata token -- the works. For generic method parameters, this creates a chicken and egg problem for the `Type.GetMethod()` api. To unambiguously retrieve a generic method such as this: ` void Foo(T t) {} ` you to have pass in the fully resolved `Type` object for ""T"". But the only way to obtain that is by calling `GetGenericArguments()` on the `MethodInfo` for `Foo`. In other words, **you must already have the method you're looking for in hand before you can call the `Type.GetMethod()` to find it.** # Proposal Part A: Introduce a `genericParameterCount` parameter. On `Type`, introduce the following public overloads: ``` public MethodInfo GetMethod(string name, int genericParameterCount, Type[] types) public MethodInfo GetMethod(string name, int genericParameterCount, Type[] types, ParameterModifier[] modifiers) public MethodInfo GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers); public MethodInfo GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); ``` and the protected overload (which all of the above funnel to): ``` protected virtual MethodInfo GetMethodImpl(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) => throw new NotSupported; ``` `genericParameterCount` can be any non-negative integer and constrains the search to methods with that generic arity. (In particular, if `genericParameterCount` is 0, the search is constrained to non-generic methods.) The candidates are filtered for generic arity before the binder (if supplied) is invoked. # Proposal Part B: Provide a way to create a `Type` that represents a bare generic parameter reference and constructed types involving them. On `System.Type`, introduce a new static method: ``` public static Type MakeGenericMethodParameter(int position); ``` This method returns a special ""Signature Type"" object that can be passed into `Type.GetMethod()`'s `Type[]` array to represent an ET_MVAR. ## Sample Usage Take this horror show of a type: ``` class Horror { public void Moo(int x, int[] y) {} public void Moo(T x, T[] y) {} public void Moo(int x, int[] y) {} public void Moo(T x, U[] y) {} // <-- We want this one instantiated to ""Moo()"" public void Moo(int x, int[] y) {} } ``` Here's how to pluck this out safely and unambiguously using the new api: ``` Type horror = typeof(Horror); Type theT = Type.MakeGenericMethodParameter(0); Type theU = Type.MakeGenericMethodParameter(1); MethodInfo moo = horror.GetMethod(""Moo"", genericParameterCount: 2, new Type[] { theT, theU.MakeArrayType() }); MethodInfo mooOfIntInt = moo.MakeGenericMethod(typeof(int), typeof(int)); ``` ## `Type` members implemented by Signature Types. Signature Type objects will be very restricted in functionality with most of its members throwing NotSupportedExceptions. It's only purpose is to be used as a search pattern to discriminate between overloaded methods. The following are the apis that actually do something on Signature Types: **Type Compositors:** ``` public Type MakeArrayType(); public Type MakeArrayType(int rank); public Type MakeByRefType(); public Type MakePointerType(); ``` These create the appropriate constructed `Type` around the generic parameter reference. Types created this way have the same restrictions and also belong in the ""signature type"" universe. In addition, `MakeGenericType()` on regular types will be enhanced to accept Signature Types. If one or more argument to `MakeGenericType()` is a Signature Type, the returned type will also be a Signature Type. For performance (and code simplicity reasons), no constraint checking will be done on any of the generic type arguments. The Signature Type will never be used to construct an actual Type, after all, it is simply a pattern used to disambiguate overloads. **Type Flavor Identifiers** ``` public bool IsTypeDefinition; protected bool HasElementTypeImpl(); protected bool IsArrayImpl(); public bool IsSZArray; public bool IsVariableBoundArray; protected bool IsByRefImpl(); public bool IsByRefLike; protected bool IsPointerImpl(); public bool IsGenericType; public bool IsGenericTypeDefinition; public bool IsConstructedGenericType; public bool ContainsGenericParameters; public bool IsSignatureType; public MemberTypes MemberType; ``` (while we don't need all of these, they are all trivial to implement so we might as well keep this set ""safe to call."") **Type Dissectors:** ``` public Type GetElementType(); public int GetArrayRank(); public Type GetGenericTypeDefinition(); public Type[] GenericTypeArguments { get; } public Type[] GetGenericArguments(); public int GenericParameterPosition { get; } ``` This is the minimal set needed to do comparisons between signature types and the actual method parameter type. **Identity:** ``` public bool Equals(object o); public bool Equals(Type o); public int GetHashCode(); public Type UnderlyingSystemType => this; // Only because Equals(Type) has a dependency on this ``` We won't override `System.Object`'s implementations. In other words, these methods will work but have no particular utility value. At the moment, signature types are simply short-lived argument objects to `Type.GetMethod()`. If they never play a bigger role than that, we'll have saved ourselves from writing unnecessary memoization code and detailed equality routines. If they do become something more persistent in the future, we reserve the right to override and implement these to compute actual semantic equality. **Diagnostics:** ``` public string Name { get; } public string Namespace { get; } public string FullName { get; } public string AssemblyQualifiedName => null; public string ToString(); ``` For simple debugging/logging purposes, the `Name` property will emit strings like ""!!0"" and ""!!1"" (the long established ILASM syntax for ET_MVARS.) `Namespace` will return `null`. `FullName` and `AssemblyQualifiedName` will both return `null` (as all open types do.) Anything not mentioned above will throw a `NotSupportedException(""This operation is not supported on signature types."")`. If we find it useful to support additional apis later, this will leave that door open. ## Signature Types passed to other apis that take Types Signature Types are not recognized as ""runtime-implemented Types"" by apis that test for this (""if (type is RuntimeType)). Thus most apis will either throw at that point or hit a NotSupportedException eventually when it calls a non-supported member on type. There are several reasons for this separation: - The Types normally created by the runtime represent fully resolved types with assembly and container member info, not to mention executable IL, loader contexts and runtime application state (static fields.) Signature Types are simply search patterns that include none of those things, and potentially things that resolved types don't (for example, custom modifiers.) From a purist perspective, having the same object represent both is an overlap of concerns. From a pragmantic perspective, creating an entire new parallel Type class for Signature Types is probably going too far, given where .NET is at this point. However, we can at least minimize the issue by keeping the subset that doesn't fit into the ""resolved type"" model separate and restricted to the very limited purpose of passing them into `Type.GetMethod()` routines. - Implementing these as ""third party"" types means we can have a simple non-invasive implementation of them that's sharable between CoreCLR and CoreRT. In particular, we don't have to figure out how to represent them in the unmanaged area of CoreCLR (the latter would drastically reduce the chances of finding anyone to step up and implement this...) # Items not in scope but possible future extensions To keep the proposal to a reasonable size, these items are not in scope - however, we want to keep them in mind while designing this so as not to lock them out in the future. ## A SignatureType for generic parameters on types (ET_VAR) This is an obvious completeness addition. The usability difficulties that motivated this proposal don't apply to generic parameters on types so we don't need this right away. If this usage catches on, though, it would be good to have a consistent language for both types and method generics. This would imply adding the ability to pass Signature Types to the `Type.GetConstructor` and `Type.GetProperty` family of apis and the DefaultBinder methods that support them. For now, this is being left out of scope to keep the api proposal down to size. ## Third party binder/reimplementation support If we want third party binders to be able to recognize and act on these signature types, we'll need to add more surface area to enable that. For now, I'm keeping this out of the scope of the proposal until we've had some experience with this. ## Custom Modifiers Another obvious use of the Signature Type concept would to be a `MakeModifiedType(Type modifier, bool required)` method on `Type`. This would make it possible to disambiguate methods overloaded on custom modifiers. Since this is a completely different usage scenario, it is not in scope here. # Summary of Additions ## Two new api on `System.Type`: ``` public static Type MakeGenericMethodParameter(int position); public virtual bool IsSignatureType => false; ``` Returns a Signature Type representing a reference to a generic parameter on the method. `ArgumentException` if `position < 0`. ## New api overloads on `System.Type`: ``` public MethodInfo GetMethod(string name, int genericParameterCount, Type[] types) public MethodInfo GetMethod(string name, int genericParameterCount, Type[] types, ParameterModifier[] modifiers) public MethodInfo GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers); public MethodInfo GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers); protected virtual MethodInfo GetMethodImpl(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) => throw new NotSupported; ``` **New Parameter:** `int genericParameterCount` **Behavior:** Causes `GetMethod()` to disregard methods whose generic arity does not match the specified value. If `genericParameterCount` is 0, disregard all generic methods. This filtering is done before the binder, if supplied, is called. **Exceptions:** `ArgumentException` if `genericParameterCount < 0` ## New behavior for `System.Type.MakeGenericType()` on regular `Type` objects: If one or more arguments to `MakeGenericType()` is a Signature Type, the method switches to the new behavior and constructs a Signature Type. No constraint checking is done (even on the types that aren't signature types.) **Exceptions:** `ArgumentNullException` if any of the parameters are `null`. `ArgumentException` if the number of supplied arguments does not match the number of generic parameters on the ""this"" Type. `InvalidOperationException` if `this.IsGenericTypeDefinition != true` ## New behavior for `System.Type.GetMethod(...)` and `System.Type.DefaultBinder`: The `Type[]` passed to indicate the target method signature can now include Signature Types. Overload discrimination will proceed _as if_ each generic parameter reference embedded within the Signature Type were replaced by the corresponding generic parameter definition introduced by the method being considered. # Reponses to previously asked questions **1. Can we change our implementation of GetMethod(...) to make it easier for instantiating generic methods?** Doing this now by adding a `genericParameterCount` argument that completes the ""missing piece"" of the signature specification. **2. Do we need new APIs?** Yes, when the generic method references its own generic type variables (ET_MVAR) in the signature. It is not practical to expect the caller to pass in a fully resolved generic parameter type since that requires him to have the very MethodInfo that he's looking for. Adding one new api to `System.Type` to create a lightweight Type object that wraps an index and nothing more. **3. Do we want to expose this policy at all or should the selection process be controlled by the consumer?** While I think the current GetMethod() apis have too much policy and complexity in them (binders), this proposal recognizes that these apis are well known and the proposed changes are straightforward extensions. More importantly, the changes introduce no new policy or fuzziness. ""Disregards all methods that don't match the specified generic arity and does so before calling the binder"" is crisp and objective. Similarly, the handing of signature types is ""binding and overloading resolutions occurs _as if_ you'd passed in the actual generic parameter from the method being considered."" So we're not introducing new semantics there - only a saner way of invoking the existing semantics. **4. How do you conceive this proposal working for the overloads that takes the binder?** For part A, binders will receive only those candidates that match the supplied `genericParameterCount.` For part B, binders (other than the DefaultBinder) will receive a Type array with signature types in them that they won't know what to do with. Applications calling these methods with custom binders will have to stick to passing in regular old Types. I think the non-custom binder case is common and useful enough not to block them on this. If we think the custom binder case that that important, the proposal can be extended if necessary to expose the necessary surface area for custom binders to recognize and act on signature types. (It'll be the internal surface area we implement for the DefaultBinder's use.) " +16569 area-System.Xml Remove Xml test binaries These binaries were initially checked in with other test files at time of porting Xml tests. cc: @weshaggard +16571 area-Infrastructure System.Data facade has a lot of bogus global stuff that should be removed GenFacades isn't clearing out the global module references from the assembly when it rewrites it. We should remove those to eliminate bogus type and member references. +16572 area-System.IO Suggestion. Add bluetooth support It would be great to have support for pairing and IO with bluetooth devices for .net core. It is perhaps a bit of a niche, but since self hosting is so easy in asp.net core I think more people than myself would be interested in communicating with BT devices from our self hosted web api's. There is the 32feet bluetooth library, but it does not seem to be very active nowadays. +16577 area-System.Linq Don't use DefaultValueInstruction for nullable types. As the result of the call to `Activator.CreateInstance` will be null for nullable types, just load null directly with the singleton `LoadObjectInstruction` for null values. Since the only test coverage of this instruction was with such a nullable type, add tests for `DefaultExpression` with non-nullable struct types. `DefaultValueInstruction` takes a different path for reference types, but is only used with value types (and now only non-nullable value types) making one of those paths unreachable, so replace the test for `IsValueType` with an assertion. +16580 area-Infrastructure Adding the required support for running uapaot tests locally. cc: @weshaggard @MattGal With these changes now you will be able to run uapaot ilc tests locally, provided that you have restored an ilc toolchain that matches the ProjectN Targeting pack that was used to build. The way to do it, is to first do a full vertical build of uapaot by running: ```cmd build.cmd -framework:uapaot ``` And after doing that, you can run any individual uapaot tests by running: ```cmd msbuild src\Microsoft.CSharp\tests\Microsoft.CSharp.Tests.csproj /t:rebuildandtest /p:TargetGroup=uapaot /p:TestILCFolder= ``` Alternatively, you could also run ```cmd build-tests.cmd -framework:uapaot -- /p:TestILCFolder= ``` but it is not recommended as it will try to ilc.exe every test assembly that we have in the repo, so that will take a long time and a lot of resources from the machine. +16581 area-Infrastructure Restore with correct RIDs for UAP runtime Fixes #16532 With this I was able to successfully build -allConfigurations on mac. /cc @joperezr @weshaggard +16582 area-System.Reflection More bigendian dev changes It also makes it work with NS1.1 cc @jkotas +16583 area-System.Reflection Merge of bigendian branch Don't review/merge I am using this for testing only but have no rights to set labels +16584 area-System.Net [CI Failure] System.Net.Sockets.Performance.Tests failure on code coverage run https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows_prtest/34/consoleFull#-141271452579fe3b83-f408-404c-b9e7-9207d232e5fc ``` System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync [FAIL] 13:53:36 System.AggregateException : One or more errors occurred. (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) 13:53:36 ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it 13:53:36 ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it 13:53:36 ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it 13:53:36 ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it 13:53:36 Stack Trace: 13:53:36 at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) 13:53:36 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 13:53:36 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 13:53:36 at System.Threading.Tasks.Task.WaitAll(Task[] tasks) 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketPerformanceTests.cs(131,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.RunClient(SocketImplementationType testType, EndPoint endpoint, Int32 iterations, Int32 bufferSize, Int32 socketInstances) 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketPerformanceTests.cs(51,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(Int32 port, SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketPerformanceTests.cs(76,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\tests\PerformanceTests\SocketPerformanceAsyncTests.cs(45,0): at System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync() 13:53:36 ----- Inner Stack Trace #1 (System.Net.Sockets.SocketException) ----- 13:53:36 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketTestClient.cs(138,0): at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() 13:53:36 ----- Inner Stack Trace #2 (System.Net.Sockets.SocketException) ----- 13:53:36 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketTestClient.cs(138,0): at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() 13:53:36 ----- Inner Stack Trace #3 (System.Net.Sockets.SocketException) ----- 13:53:36 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketTestClient.cs(138,0): at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() 13:53:36 ----- Inner Stack Trace #4 (System.Net.Sockets.SocketException) ----- 13:53:36 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) 13:53:36 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 13:53:36 D:\j\workspace\code_coverage---d5838fef\src\Common\tests\System\Net\Sockets\Performance\SocketTestClient.cs(138,0): at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ``` +16585 area-System.Security Port System.Security.Cryptography.Csp to Unix/OSX (scoped to just Security) As part of figuring out issue https://github.com/dotnet/corefx/issues/16563 we found out that there are more PlatformNotSupportedException-s than expected CryptoConfig.CreateFromName for some strings may produce PlatformNotSupported exceptions (because System.Security.Cryptography.Csp is missing) cc: @steveharter @danmosemsft +16586 area-System.Security Remove local resolving in System.Security.Cryptography.Xml Local resolving is defined in CryptoHelpers class see more info about this issue in: https://github.com/dotnet/corefx/pull/16545 This is currently blocked on https://github.com/dotnet/corefx/issues/16585 +16587 area-Infrastructure Update buildtools, enable dumpling on Windows CI jobs This turns on Dumpling for all CI runs (not just Unix), and passes `%TMP%\CoreRunCrashDumps` as the folder to be searched for crash dumps. Our CI machines are set up to put crash dumps in that folder. I needed to reset the startup scripts for the images to actually capture `dotnet.exe`, though, as they were only capturing `corerun.exe` before. So it may take some time for that change to propagate to the active agents. Buildtools is updated along with this. @karelz @danmosemsft +16588 area-System.Security Re-enable asymmetric key generation on macOS. Generate RSA and ECDSA keys via a temporary keychain. When no keychain is given, SecKeyGeneratePair will generate the keys into the default/login keychain. Since the keys were not expected to have been in the keychain, they permanently leak out and the keychain grows over time. Instead, have the managed code provide a temporary keychain into which the keys will be created. Then, export them and re-import them to the NULL keychain. The temporary keychain can then be deleted, and the hard problem of delayed cleanup is avoided. Files on disk will still leak if the process terminates during the key generation phase, but that is a much smaller window than other 'temporary file on disk' solutions. +16589 area-System.Data Managed SNI for Windows The changes include refactoring in SqlClient to build Managed SNI on Windows along with Native SNI. This is the first step towards addressing #16129 The changes involve refactoring TdsParserStateObject into sub classes which contain the SNI specific logic and encapsulate the usage of SNIPacket and SNIHandle There were changes done to extract parts of TdsParser into platform specific files so that the right behavior can be invoked. The current behavior on Windows is under the flag TdsParserNativeObjectFactory.useManagedSni. I will be adding changes to incorporate an AppContext flag to control the SNI behavior. I ran the Functional and Manual tests to validate these changes. cc @corivera @YoungGah @geleems +16590 area-System.Numerics Itermittent failure in System.Numerics.Tests.GenericVectorTests.DivisionSByte Please see: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4001/ ``` Discovering: System.Numerics.Vectors.Tests Discovered: System.Numerics.Vectors.Tests Starting: System.Numerics.Vectors.Tests System.Numerics.Tests.GenericVectorTests.DivisionSByte [FAIL] System.OverflowException : Arithmetic operation resulted in an overflow. Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Numerics.Vectors\src\System\Numerics\Vector.cs(4794,0): at System.Numerics.Vector`1.ScalarDivide(T left, T right) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Numerics.Vectors\src\System\Numerics\Vector.cs(2439,0): at System.Numerics.Vector`1.op_Division(Vector`1 left, Vector`1 right) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(802,0): at System.Numerics.Tests.GenericVectorTests.TestDivision[T]() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Numerics.Vectors\tests\GenericVectorTests.cs(775,0): at System.Numerics.Tests.GenericVectorTests.DivisionSByte() Finished: System.Numerics.Vectors.Tests ``` +16593 area-System.Memory "Test: System.SpanTests.ReadOnlySpanTests/IndexOverflow failed with ""System.OutOfMemoryException""" Opened on behalf of @Jiayili1 The test `System.SpanTests.ReadOnlySpanTests/IndexOverflow` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.ReadOnlySpan`1..ctor(Void* pointer, Int32 length) at System.SpanTests.ReadOnlySpanTests.IndexOverflow() in /root/corefx/src/System.Memory/tests/ReadOnlySpan/Overflow.cs:line 36 Build : Master - 20170301.02 (Core Tests) Failing configurations: - suse.421.amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170301.02/workItem/System.Memory.Tests/analysis/xunit/System.SpanTests.ReadOnlySpanTests~2FIndexOverflow +16594 area-System.Security Investigate if we can build System.Security.Cryptography.Xml against netstandard "ref: https://github.com/tintoy/corefx/commit/eaa78efb30d3581ae871015cf9be637e6deb36c3 ```diff - netstandard; + netcoreapp; + uap; - + ``` Check if uap is appropriate and if it is not missing anything cc: @danmosemsft @joperezr" +16596 area-System.Diagnostics Debug.WriteLine does not write to Trace.Listeners "In net45, calling Debug.WriteLine would pass the message to the `Trace.Listeners` collection. But in corefx, that doesn't happen. The following program can be compiled for net45 or netcoreapp1.0 (with the `System.Diagnostics.TraceSource` package installed): ```csharp using System; using System.Diagnostics; namespace ConsoleApp41 { class Program { static void Main(string[] args) { Trace.Listeners.Add(new MyListener()); Trace.WriteLine(""Traced message""); Debug.WriteLine(""Debug message""); } private class MyListener : TraceListener { public MyListener() { } public override void Write(string message) { Console.WriteLine(""Our listener got: "" + message); } public override void WriteLine(string message) { Console.WriteLine(""Our listener got: "" + message); } } } } ``` When run on .NET Framework, the output is: ``` Our listener got: Traced message Our listener got: Debug message ``` For `dotnet run` the output is merely: ``` Our listener got: Traced message ```" +16597 area-System.Data SQL Server connection fails on centos,but succeeds on windows and in all other tools "I'm running a webapi project by dotnetcore on centos.but it is failed to connect to MSSQL. In order to find the problem, I try to use the telnet to determine whether the server port, try to find the next is normal, and the project in the Windows environment are successful, the database can be connected, but deployed to centos is not connected to the database. Error like this: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HL30IKDGRVD6"": An unhandled exception was thrown by the application. System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateException: One or more errors occurred. (No such device or address) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address Connection string example: Data Source=192.168.1.5\\SQLSERVER2008;Initial Catalog=AwardSysDB;User ID=xx;Password=xx;min pool size=100;max pool size=250; Data Source=192.168.1.5,1435;Initial Catalog=AwardSysDB;User ID=xx;Password=xx;min pool size=100;max pool size=250; " +16598 area-System.Net Unable to use System.Net.NetworkCredential inside docker I am trying to authenticate my call to a SSRS report server hosted outside the docker application. And to accress the report I do the following: ```c# HttpWebRequest webRequest = WebRequest.Create(sTargetURL) as HttpWebRequest; webRequest.Credentials = new NetworkCredential(strReportUser, strReportUserPW); WebResponse HttpWResp = await webRequest.GetResponseAsync(); ``` But I continuesly get 401 unauthorized. The approach of NetworkCredentials works fine when I am doing the same inside my Azure Hosted App service and also my local. The credentials that I set on the header inside the docker environment, simply do not carry forward upto the report server and I get the error. +16599 area-System.Threading "System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests.TestNullTarget_CompletionNoCaching failed with ""Xunit.Sdk.EqualException"" in CI" Configuration: OuterLoop_Fedora23_debug ([build#117](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/117/testReport/)). Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/117/consoleText Message: ~~~ System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests.TestNullTarget_CompletionNoCaching [FAIL] Assert.False() Failure Expected: False Actual: True ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Threading.Tasks.Dataflow/tests/Dataflow/DataflowBlockExtensionTests.cs(134,0): at System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests.TestNullTarget_CompletionNoCaching() ~~~ +16601 area-Infrastructure BuildConfiguration is ignored in src subfolders When building using `C:\temp\corefx-dev\src\System.Reflection.Metadata>msbuild /p:BuildConfiguration=netstandard1.1` BuildConfiguration is ignored and netcoreapp version is built instead. +16602 area-System.Net System.Net.NetworkInformation.Functional.Tests test suite hung in CI on Unix https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu14.04_debug_prtest/91/consoleText I unfortunately don't have more info than that they hung, and the build was aborted after waiting for 2 hours. cc: @mellinoe +16603 area-System.Reflection One more unchecked scope cc @jkotas +16605 area-System.Collections Expose and test (I)Dictionary.GetValueOrDefault Running `msbuild src\System.Collections\src\System.Collections.csproj /p:TargetGroup=uapaot /p:BaselineAllApiCompatError=true` doesn't seem to change anything but I hope this passes CI Fixes #3482 +16606 area-System.Runtime System.Tests.GCTests.GetAllocatedBytesForCurrentThread failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4033/testReport/junit/System.Tests/GCTests/GetAllocatedBytesForCurrentThread_size__100000_/ ``` Allocated too little: start: 71693312 end: 71693312 size: 100000\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at System.Tests.GCTests.GetAllocatedBytesForCurrentThread(Int32 size) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Runtime\tests\System\GCTests.netcoreapp.cs:line 23 ``` +16607 area-System.Net Improve NetworkStream test coverage and remove dead code Removes dead code from NetworkStream and adds tests, boosting code coverage from 38.4% line and 30.2% branch before to 98.9% line and 90% branch after. Fixes #11904 cc: @geoffkizer, @CIPop +16609 area-System.Text Fix parsing of regex alternation construct with named options Fixes #1476 I've tried to add a bunch of targetted tests as well as a bunch of fuzzer-style tests. Let me know if you have any suggestions for others. +16610 area-System.Net Failure in System.Net.Http.Functional.Tests/DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledLogging/ Broken out of https://github.com/dotnet/corefx/issues/16430 https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_debug/109/testReport/System.Net.Http.Functional.Tests/DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledLogging/ +16611 area-System.Net NetworkStream.CopyToAsync/ReadAsync completing successfully on Unix when disposed during call On Windows this passes. On Unix sometimes the operation completes successfully without an exception being thrown. ```c# Task copyTask = stream.CopyToAsync(new MemoryStream()); stream.Dispose(); await Assert.ThrowsAsync(() => copyTask); ``` +16613 area-System.Diagnostics Port source for FileVersionInfo test binaries We don't have source for ```NativeLibrary.dll``` or ```SecondNativeLibrary.dll``` available anywhere. I wasn't able to find it in the TFS maze, but it wouldn’t be difficult to rewrite them if we can’t find the source and decide we need the ability to rebuild them. They don't need to be included in the build, but they need some sort of instructions to build or a batch script alongside the sources so we can rebuild them easily in the future when needed. They should probably go to https://github.com/dotnet/corefx-testdata +16615 area-System.Diagnostics Account for resolution in Process ExitTime test resolves https://github.com/dotnet/corefx/issues/16489 @stephentoub +16616 area-System.Numerics DivisionReflectionSByte test overflow exception https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/4015/consoleText ``` System.Numerics.Tests.GenericVectorTests.DivisionReflectionSByte [FAIL] System.OverflowException : Arithmetic operation resulted in an overflow. Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src/System.Numerics.Vectors/src/System/Numerics/Vector.cs(4794,0): at System.Numerics.Vector`1.ScalarDivide(T left, T right) /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src/System.Numerics.Vectors/src/System/Numerics/Vector.cs(2439,0): at System.Numerics.Vector`1.op_Division(Vector`1 left, Vector`1 right) ``` +16618 area-System.Security Replace 'int' with 'int32_t' and reformat source. There weren't very many that weren't part of method signatures, so all of the usages of int were replaced with int32_t. `char` (the other common not-always-right type) was checked and all instances are for strings, none were being used when uint8_t was meant instead. +16619 area-System.Runtime Add FormattableString.CurrentCulture "We've told developers for a long time that they should be explicit about which cultures they use for formatting. In fact, we have FXCop rules like [CA1305](https://msdn.microsoft.com/en-us/library/ms182190.aspx) that flag non-explicit use. String interpolation in C# follows what virtually all our formatting APIs do unless instructed otherwise: it will format the string using the current culture. While we have `FormattableString.Invariant`, which allows customers to use the invariant culture, like so: ```C# string text = FomattableString.Invariant($""This will be formatted using invariant {i}""); ``` We don't have a way in string interpolation to explicitly indicate that we intend to use the current culture. This proposes an API to allow that. It would be a way to suppress FXCop rule CA1305. ### Proposal ```C# namespace System { public partial class FormattableString { // Existing API: // public static string Invariant(FormattableString formattable); public static string CurrentCulture(FormattableString formattable); } } ``` ### Usage ```C# // These are now equivalent string text1 = $""This will be formatted using current culture {i}""; string text2 = FomattableString.CurrentCulture($""This will be formatted using current culture {i}""); ``` /cc @gafter " +16622 area-System.Security using pool for buffer in HashAlgorithm this creates new 4K buffer every time computing hash https://github.com/dotnet/corefx/blob/e9ecf74d845476540f40fa8fdc62c53ebf048519/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HashAlgorithm.cs#L78 which is probably fine when creating hash for 1 or 2 values. but when creating large numbers of hashes that adds up quite quickly. one of examples of those cases will be C# compiler compiling that need to create SHA1 hashes for all source files and many more for pdb and other identifies. pooling that buffer seems easy allocation win. +16625 area-System.Net Improve CI: disable WebSocket test ReceiveAsync_Cancel_Success "Disable test that has been failing every few days: https://github.com/dotnet/corefx/issues/13302 It is failing because the test verifies the exact WebSocketException exception string which does not always match. Recent error messages not accounted for: - ""The WebSocket is in an invalid state ('Aborte···"" - ""The remote party closed the WebSocket connect···"" @ianhays Pertains to #14519" +16626 area-System.Collections Do something with IReadOnlyCollection and ICollection. We needs good abstractions hierarchy. Just drop IReadOnly****, mark them obsolete. We can't do anything with backward compatibility here. If we inherit ICollection from IReadOnlyCollection we will broke existing code. See: http://stackoverflow.com/questions/12622539/why-doesnt-generic-icollection-implement-ireadonlycollection-in-net-4-5 But may be sometime will be good point do do this breaking change, provide tools for migration automation. And also IReadOnly*** is not clear solution, we needs IReadable*** and IImmutable**** This is not-null reference types like problem. But it's second after nullability. Let's start/continue to solve this problem. +16627 area-System.Xml Remove ThisAssembly.cs from System.Private.Xml Resolves https://github.com/dotnet/corefx/issues/12175. Replaces the const assembly version with the assembly version in runtime. cc: @danmosemsft @weshaggard +16628 area-System.Net fix p/invoke marshalling of WSABuffers Our p/invoke definitions of WSARecv etc were defined to take a WSABuffer[]. This caused copy-in/copy-out marshalling, which caused timing issues because the WSABuffers should not be touched after the WSARecv call returns IOPending. Fix this by changing the p/invoke definitions to take WSABuffer*. Fixes #16213 +16629 area-System.Runtime Proposed additions to RuntimeInformation "https://github.com/dotnet/corefx/issues/12737 # RuntimeInformation ## Rational and Usage It is often desirable and necessary for applications to determine execution environment and runtime information. Existing information provided by `System.Runtime.InteropServices.RuntimeInformation` could be enhanced and expanded with additional API to provide robust information. [System.Runtime.InteropServices.RuntimeInformation](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.InteropServices.RuntimeInformation/ref/System.Runtime.InteropServices.RuntimeInformation.cs) currently provides surface for some of information though modification to current behavior or addition API may be needed. ### Existing API * OSPlatform * ProcessAchitecture * OSArchitecture * OSDescription * FrameworkDescription * IsOSPlatform ### Proposed additions * OSName - Windows, Mac, Ubuntu, Red Hat Enterprise Linux Server * OSVersion - following the previous examples - 10.0.15027, 10.12.3, 16.10, 7.2 * RuntimeVersions - Runtime version currently used by the application, eg NETCore.App 1.0.4 * InstalledRuntimeVersions - List of targetable runtime on system ## Open Questions ## Updates ## Appendix `/etc/os-release` will have the pertinent information on all systemd-based distros. All distros in our current support set use systemd. Alpine Linux includes `/etc/os-release`. Variables can be accessed directly with `( source /etc/os-release && echo ""$PRETTY_NAME"" )` ``` Fedora: NAME=Fedora VERSION=""24 (Workstation Edition)"" ID=fedora VERSION_ID=24 PRETTY_NAME=""Fedora 24 (Workstation Edition)"" ANSI_COLOR=""0;34"" CPE_NAME=""cpe:/o:fedoraproject:fedora:24"" HOME_URL=""https://fedoraproject.org/"" BUG_REPORT_URL=""https://bugzilla.redhat.com/"" REDHAT_BUGZILLA_PRODUCT=""Fedora"" REDHAT_BUGZILLA_PRODUCT_VERSION=24 REDHAT_SUPPORT_PRODUCT=""Fedora"" REDHAT_SUPPORT_PRODUCT_VERSION=24 PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy VARIANT=""Workstation Edition"" VARIANT_ID=workstation Alpine: NAME=""Alpine Linux"" ID=alpine VERSION_ID=3.5.0 PRETTY_NAME=""Alpine Linux v3.5"" HOME_URL=""http://alpinelinux.org"" BUG_REPORT_URL=""http://bugs.alpinelinux.org"" ``` /cc @richlander , @mellinoe , @Petermarcu , @AlexGhiondea , @weshaggard , @danmosemsft " +16631 area-System.Net Remove check for safewinhttphandles to depend on finalization. Checking for handle count depends on when ReleaseHandle on the safehandle is called. The invocation of ReleaseHandle is dependent on when the finalizer thread executes this object from ReadyToFinalize queue. Since this is not testing the SafeWinHttpHandle, removing this check from the networking test library. fixes #13951 cc @jkotas @karelz @steveharter @ianhays +16632 area-System.Data Disable manual test in Helix Fixes https://github.com/dotnet/corefx/issues/16178 @saurabh500 @MattGal +16633 area-System.Net Remove HttpRequest serialization test Fixes https://github.com/dotnet/corefx/issues/14068 I suspect https://github.com/dotnet/corefx/pull/14175 fixed this and I forgot to enable it. It passes now. @Priya91 +16634 area-System.Security Add symmetric and asymmetric XML encryption samples Add significantly simplified MSDN samples. This was building and passing correctly on Windows but it is possible it will fail on Linux cc: @bartonjs @morganbr on MSDN they were using `try .. finally { key.Clear(); }` pattern - I have changed that to `using (var key = ...) { }` - is that correct or was Clear doing something more? FYI @tintoy @anthonylangsworth @peterwurzinger +16635 area-Meta OverflowException when casting int to short "The following code succeeds when running a test app created via ""dotnet new"", but fails when running in our System.Data tests on the latest version of CoreFx. Similar code was succeeding in SqlClient at least 2 weeks ago, but has been causing test failures recently. ```c# int value = 0xff << 8; short shortValue = (short)value; ``` This gets thrown on the line for the cast to a short: System.OverflowException : Arithmetic operation resulted in an overflow. @saurabh500 @stephentoub" +16636 area-Serialization XmlSerializer.Serialize performance issues on linux I recently profiled some asp.net core code that uses XmlSerializer and noticed some differing performance results when comparing Windows and Linux execution. I have a test program https://github.com/deppe/XmlSerializerPerf that runs XmlSerializer.Deserialize 1000 times, then runs XmlSerialize.Serialize 1000 times and prints the total time for each. On windows, Serialize and Deserialize take a similar amount of time. For example: ``` Deserialize time 1351 ms Serialize time 1210 ms Serialize took 47.25% of total time ``` On linux, Serialize is much slower relative to Deserialize: ``` Deserialize time 1239 ms Serialize time 4432 ms Serialize took 78.15% of total time ``` I tried both dotnet version 1.0.0-preview2-1-003177 and 1.0.0-preview2-003131 and got similar results. Is this expected? Are there any plans to improve the performance of XmlSerializer.Serialize on linux? +16637 area-Infrastructure dir.props cleanup "There is some dead stuff there since the core eng work eg TargetGroup=uap101 is not set when building a vertical. @joperezr ``` true true ```" +16638 area-Infrastructure Running tests against an non-platform configuration doesn't work Today if you have multiple build configurations like https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/src/Configurations.props. You can build an individual build configuration locally for that test project but there isn't a good way to run the tests on that older configuration. In other words how do you run the System.Reflection.Metadata.Tests against .NET Core but using the netstandard1.1 build configuration as opposed to the netcoreapp build configuration of System.Reflection.Metadata.dll? At this point we don't have a great way to handle this case but this issue should track the missing scenario and decide whether or not we provide a way to hack it or provide first class support. +16640 area-System.Security HMACSHA256/HMAC.Create() throw PNSE cc: @bartonjs @danmosemsft HMAC.Create throws PNSE where it could potentially work by simply using a constructor Is this something we should possibly support? +16641 area-System.Net Re-enable Socket perf test on OSX With changes from https://github.com/dotnet/corefx/pull/15679/files and comments from @geoffkizer, re-enabling this per issue https://github.com/dotnet/corefx/issues/13349. Test will be monitored over next few days to see if it fails. +16642 area-System.Collections TryAdd exposure/implementation This is the matching PR for https://github.com/dotnet/coreclr/pull/9923. Fixes #1942 /cc @stephentoub, @ianhays, @safern, @danmosemsft +16643 area-Serialization Area-Serialization Sprint 115 The issue is for tracking issues to be done in sprint 115 (due by 3/24/2017). +16644 area-Serialization Run DCS/DCJS Tests in CoreFx against uapaot. Running tests against uapaot is not supported. The task is to make our DCS/DCJS test projects build and run against uapaot. +16645 area-Serialization Investigate Issues with DCS/DCJS Reflection-based Serialization on Uapaot Upon the completion of #16644, we'd like to investigate if Reflection-based Serialization for DCS/DCJS work on Uapaot. +16646 area-System.Xml Improve code coverage for System.Xml.XPath These are some of the bigger types with low coverage in `System.Xml.XPath`. It would be great if we could add more tests to reach 80-90% coverage on these: - [ ] System.Xml.XPath.Extensions 20% - [ ] System.Xml.XPath.XPathNavigator 21% - [ ] System.Xml.XPath.XPathNodeIterator 42.6% Detailed coverage report: https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16647 area-Serialization Investigate Issues with DCS/DCJS Serializing ISerializable on Uapaot Upon the completion of #16644, we'd like to investigate if DCS/DCJS can serialize ISerializable types on Uapaot. +16649 area-System.Xml Improve code coverage for System.Xml.Schema These are some of the bigger types with low coverage in `System.Xml.Schema`. It would be great if we could add more tests to reach 80-90% coverage on these (data updated on 2017/12/11): - [ ] System.Xml.Schema.XmlAtomicValue 36.7% (was 33.7% originally) - [ ] System.Xml.Schema.XmlSchemaAny 36.5% - [ ] System.Xml.Schema.XmlSchemaAnyAttribute 74.5% (was 36.3% originally, see #22020) - [ ] System.Xml.Schema.XmlSchemaCollection 42.6% - [ ] System.Xml.Schema.XmlSchemaInference 17.8% Detailed coverage report: https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16650 area-System.Xml Improve code coverage for System.Xml.Xsl.Runtime These are some of the bigger types with low coverage in `System.Xml.Xsl.Runtime`. It would be great if we could add more tests to reach 80-90% coverage on these: - [ ] System.Xml.Xsl.Runtime.XmlCollation 45.6% - [ ] System.Xml.Xsl.Runtime.XmlQueryOutput 53.1% - [ ] System.Xml.Xsl.Runtime.XmlQueryRuntime 46.3% - [ ] System.Xml.Xsl.Runtime.XsltFunctions 10.3% - [ ] System.Xml.Xsl.Runtime.XsltLibrary 34.2% Detailed coverage report: https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16651 area-System.Net "[CI Failure] ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_MismatchProtocols_Fails: ""The credentials supplied to the package were not recognized""" https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4083/consoleFull#-126103689779fe3b83-f408-404c-b9e7-9207d232e5fc ``` System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol: Tls, clientProtocol: Tls11, expectedException: typeof(System.Security.Authentication.AuthenticationException)) [FAIL] 15:48:14 Assert.Throws() Failure 15:48:14 Expected: typeof(System.Security.Authentication.AuthenticationException) 15:48:14 Actual: typeof(System.ComponentModel.Win32Exception): The credentials supplied to the package were not recognized 15:48:14 Stack Trace: 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs(167,0): at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(407,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(131,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(680,0): at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(783,0): at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(704,0): at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(767,0): at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(982,0): at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(937,0): at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(885,0): at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(693,0): at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(614,0): at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs(160,0): at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs(257,0): at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) 15:48:14 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) 15:48:14 at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs(257,0): at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) 15:48:14 D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs(154,0): at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() 15:48:14 --- End of stack trace from previous location where exception was thrown --- 15:48:14 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 15:48:14 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 15:48:14 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +16652 area-Meta Move pal_random to System.Native from CoreRT Move https://github.com/dotnet/corert/blob/master/src/Native/System.Private.CoreLib.Native/pal_random.cpp to System.Native so that it can be shared between CoreCLR and CoreRT CoreLibs +16653 area-System.Diagnostics Disable Process perf tests With the new performance harness tooling that we are adding we generate too many events during the Process performance tests. This causes to drop events and fail to upload results. We should fix these tests, but I would like to go ahead and start getting results for the rest of the tests so I am going to disable these until we do the work to fix them. +16654 area-System.Security XmlDsigC14NTransformTest failure due to concurrent file access "@krwq @tintoy @anthonylangsworth there are several tests potentially creating a file named `doc.dtd` in the same folder concurrently. They should use a pattern like ``` c# using (var directory = new TempDirectory()) using (var file = new TempFile(Path.Combine(directory.Path, ""doc.dtd""))) {.. } ``` ``` MESSAGE: System.IO.IOException : The process cannot access the file 'D:\\j\\workspace\\outerloop_win---bf7c4efa\\bin\\AnyOS.AnyCPU.Debug\\System.Security.Cryptography.Xml.Tests\\netcoreapp\\doc.dtd' because it is being used by another process. +++++++++++++++++++ STACK TRACE: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStreamHelpers.CreateFileStream(String path, Boolean write, Boolean append) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Runtime.Extensions\src\System\IO\FileStreamHelpers.CoreClr.cs:line 10 at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 140 at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 125 at System.Security.Cryptography.Xml.Tests.XmlDsigC14NTransformTest.C14NSpecExample1() in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Xml\tests\XmlDsigC14NTransformTest.cs:line 217 ```" +16655 area-System.Threading Failure in System.Threading.OverlappedTests https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_release/lastCompletedBuild/testReport/(root)/OverlappedTests/PropertyTest1/ Note that the Assert.Equal's in this test file are backwards -- the expected value is supposed to go first. So it's actually expecting 0 and getting 2. Please fix... https://github.com/dotnet/corefx/blob/ec2a6190efa743ab600317f44d757433e44e859b/src/System.Threading.Overlapped/tests/OverlappedTests.cs#L39 ``` MESSAGE: Assert.Equal() Failure\r\nExpected: 2\r\nActual: 0 +++++++++++++++++++ STACK TRACE: at OverlappedTests.PropertyTest1() in D:\j\workspace\outerloop_win---65ef7d78\src\System.Threading.Overlapped\tests\OverlappedTests.cs:line 40 ``` @kouvel @alexperovich +16656 area-System.Reflection Add attribution and other information for tests /cc @Petermarcu @weshaggard +16657 area-System.Security Temporary fix for dotnet/corefx#16654 As noted in dotnet/corefx#16654, some of the tests ported from mono were not designed to be run concurrently. I've modified them so they use the test name as a prefix for the `.dtd` / `.txt` files used in the tests. cc: @danmosemsft @krwq +16658 area-System.Security "Test ""System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.C14NSpecExample1_WithoutResolver"" failed in CI" Configuration: OuterLoop_Windows10_release ([build#116](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/116/testReport/)) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/116/consoleText Message: ~~~ System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.C14NSpecExample1_WithoutResolver [FAIL] System.AggregateException : One or more errors occurred. (The process cannot access the file 'D:\j\workspace\outerloop_win---6835b088\bin\AnyOS.AnyCPU.Release\System.Security.Cryptography.Xml.Tests\netcoreapp\doc.dtd' because it is being used by another process.) (File.Delete() is not working.) ---- System.IO.IOException : The process cannot access the file 'D:\j\workspace\outerloop_win---6835b088\bin\AnyOS.AnyCPU.Release\System.Security.Cryptography.Xml.Tests\netcoreapp\doc.dtd' because it is being used by another process. ---- System.Exception : File.Delete() is not working. ~~~ Stack Trace: ~~~ ----- Inner Stack Trace #1 (System.IO.IOException) ----- at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Extensions\src\System\IO\FileStreamHelpers.CoreClr.cs(10,0): at System.IO.FileStreamHelpers.CreateFileStream(String path, Boolean write, Boolean append) D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs(137,0): at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) D:\j\workspace\outerloop_win---6835b088\src\System.Security.Cryptography.Xml\tests\XmlDsigC14NWithCommentsTransformTest.cs(133,0): at System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.C14NSpecExample1_WithoutResolver() ----- Inner Stack Trace #2 (System.Exception) ----- D:\j\workspace\outerloop_win---6835b088\src\System.Security.Cryptography.Xml\tests\XmlDsigC14NWithCommentsTransformTest.cs(56,0): at System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.Dispose() C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Extensions\ReflectionAbstractionExtensions.cs(76,0): at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) ~~~ +16660 area-System.Collections Proposal: Add IsImmutable property to IReadOnlyCollection and IReadOnlyDictionary "When https://github.com/dotnet/csharplang/issues/52 feature will be added to C#/CLR (at least in restricted form), we will have ability to extend base BCL contracts. This proposal rely on this suggestion and tries to solve ambiguous semantic of `ICollection.IsReadOnly` property. We needs a new property. ```CSharp public interface IReadOnlyCollection { bool IsImmutable { get;} } public interface ICollection { bool IsImmutable { get;} } public interface IReadOnlyDictionary { bool IsImmutable { get;} } public interface IDictionary { bool IsImmutable { get;} } ``` Let suppose we have two different collections both inherited from ICollection<T> First example is when library allows to access some internal collection by the interface. ```CSharp internal class PrivateCollection: ICollection { // Read methods allowed for library and for external usage. bool Contains(T item) { // Some valid implementation. } // This method is only allowed for some library internal classes. internal void Add(T item) { // Some valid imiplementation. } // Modification is closed for external users, but not for internal. void ICollection.Add(T item) { throw new NotSupportedException(); } public bool IsReadOnly { get { // In this case true mean - this collection allowed to only read from ICollection // interface. // But does not guaranties that collection will not be changed by some internal method. return true; } } } ``` this is ReadOnly meaning of IsReadOnly property. --- Second collection can be well known ImmutableList ```CSharp public class ImmutableList: ICollection { bool ICollection.IsReadOnly { get { // Here it tells that collection is not only ""ReadOnly"" but also will never be changed by nobody. return true; } } } ``` Probably ""it's too late"" and we have tons of code one collections uses ReadOnly semantic another Collections uses ReadOnly+Immutable semantic. But now we can do the next improvement in the documentation: IsReadOnly says that only: all mutation method will return NotSupportedException or InvalidOperationException. And no any more guaranties. " +16661 area-System.Collections Proposal: Add full family of Immutable collection contracts. "```C# public interface IImmutableEnumerable: IEnumerable {} public interface IImmutableCollection: IReadOnlyCollection, IImmutableEnumerable() public interface IImmutableListSlim: IReadOnlyList, IImmutableCollection{} public interface IImmutableSetSlim: IReadOnlySet, IImmutableCollection() public interface IImmutableDictionarySlim: IReadOnlyDictionary, IImmutableCollection>{} // also improve public interface IImmutableList: IImmutableListSlim{} public interface IImmutableArray: IImmutableListSlim{} public interface IImmutableSet: IImmutableSetSlim{} public interface IImmutableDictionary: IImmutableDictionarySlim{} ``` Motivation: ```CSharp public class MyClass { public MyClass(IReadOnlyList someIds) { // Currently I cannot rely that someIds will never change. // I every time think: should I copy this collection or I can use it as-is. // Ok, it's not a trouble I can copy, but stop, what if this place will be performance critical ??? // no I don't want to copy. // Let assume nobody will never change this collection. <== TOTALLY WRONG! SomIds = someIds; // also I performed some loading based on this ids. // and store result in the instance. // ids list will be hardly used by this component and consumers of this components. } public IReadOnlyList SomeIds {get;} } // Some other place, some newbie developer... public void SomeCreationPlace() { // ... // Some algorithm with bugs. var ids = new List(); while (someCondition) { for(int i = 0; i++; i { public IEnumerator GetEnumerator() { throw new NotImplementedException(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public int Count { get { throw new NotImplementedException(); } } public int this[int index] { get { throw new NotImplementedException(); } } public IImmutableList Clear() { throw new NotImplementedException(); } public IImmutableList Add(int value) { throw new NotImplementedException(); } public IImmutableList Replace(int oldValue, int newValue, IEqualityComparer equalityComparer) { throw new NotImplementedException(); } public IImmutableList SetItem(int index, int value) { throw new NotImplementedException(); } public IImmutableList RemoveAt(int index) { throw new NotImplementedException(); } public IImmutableList RemoveRange(int index, int count) { throw new NotImplementedException(); } public IImmutableList RemoveRange(IEnumerable items, IEqualityComparer equalityComparer) { throw new NotImplementedException(); } public IImmutableList RemoveAll(Predicate match) { throw new NotImplementedException(); } public IImmutableList Remove(int value, IEqualityComparer equalityComparer) { throw new NotImplementedException(); } public IImmutableList InsertRange(int index, IEnumerable items) { throw new NotImplementedException(); } public IImmutableList Insert(int index, int element) { throw new NotImplementedException(); } public IImmutableList AddRange(IEnumerable items) { throw new NotImplementedException(); } public int LastIndexOf(int item, int index, int count, IEqualityComparer equalityComparer) { throw new NotImplementedException(); } public int IndexOf(int item, int index, int count, IEqualityComparer equalityComparer) { throw new NotImplementedException(); } } } ``` Really too heavy. I do not want Add(), Remove(). I just what IReadOnlyList + Immutability guaranty. CURRENTLY WE HAVE NOTHING. We can introduce slim immutable contracts (with usual hierarchy): ```CSharp public class MyClass { // No comments all clear. public MyClass(IImmutableListSlim someIds) { SomIds = someIds; } // This collection instance can travel across components, threads, call chains safely. public IImmutableListSlim SomeIds {get;} } ``` " +16662 area-Microsoft.CSharp CSharpCodeGenerator outputs sealed override methods as virtual "CSharpCodeGenerator will output a method with Attributes of `Public`, `Final` and `Override` as a virtual method. I guess it should be output as a sealed override method ```c# [Test] public void SealedOverride() { using (CSharpCodeProvider provider = new CSharpCodeProvider()) { CodeMemberMethod method = new CodeMemberMethod { Name = ""TestMethod"", Attributes = MemberAttributes.Public | MemberAttributes.Final | MemberAttributes.Override, ReturnType = new CodeTypeReference(typeof(string)) }; using (var writer = new StringWriter()) { provider.GenerateCodeFromMember(method, writer, new CodeGeneratorOptions()); string output = writer.ToString().Replace(""\r\n"", string.Empty); Assert.AreEqual(output, ""public sealed override string TestMethod() {}""); //Actually outputs ""public virtual string TestMethod() {}"" } } } ```" +16663 area-Microsoft.CSharp Clean-up and optimise Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray Clean-up: Has `Size`, `size` and `Count` properties all doing the same thing. Consolidate into a single property. While `size` is the most heavily used and `Count` the least, `Count` is the most .NET idiomatic, so leave it as the sole property. Has both `Item()` method and indexer. Replace use of `Item()` with use of indexer, and remove `Item()` method. Debug-only `AssertValid()` method can be made conditional rather than wrapped in `#if`/`#endif` for cleaner use. While this means it will be compiled to the release build rewriting the assertion within it to be a single linq operation means it will be compiled as an empty method for those so the cost in IL size is much less than the savings made above. Optimise: `HasErrors` property is hard-coded to return false and therefore of not really checking anything. Remove. All uses of `ToArray()` do not mutate the resultant array so exposing the `_items` field as a public `Items` property is safe, and avoids many allocations and copies. Constructor is never called with null, so remove null path, but assert that null isn't passed. +16664 area-Microsoft.CSharp Make Microsoft.CSharp use the coding style more like the rest of corefx I've already done some changes along these lines, though mostly when there was another benefit (if often a pretty tiny optimisation if considered solely as such). Having been ported from C++ code has left its mark in some strange constructs, unconventional names, Get/Set method pairs instead of (or as well as) properties, etc. I don't know about anyone else, but I think I would have found the fixes at #15397 and #16085 a lot quicker than I did if the code more closely followed common C# conventions. This issue is to track changes to make the coding style more usual, which I intend to do in earnest once I've finished #8081 as my current long-burner issue. I intend to do so incrementally as one massive PR would be a nightmare to review. This also gives anyone who can think of a good reason for leaving alone somewhere to say so. In particular, I'm assuming that dead code (there are some entirely dead types in there) originates from the static compiler it was ported from having cases that don't arise with dynamic code. Can someone confirm this, rather than there being another reason — e.g. some code wasn't ported from the desktop version — and hence a reason to leave that dead code in there? +16665 area-System.Security System.Security.Cryptography.Xml failing tests These two tests are failing outerloop (apparently multi-use problems with dtd file) System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.C14NSpecExample1_WithoutResolver (from (empty)) ``` Failing for the past 1 build (Since Failed#116 ) Took 4 ms. Stacktrace MESSAGE: System.AggregateException : One or more errors occurred. (The process cannot access the file 'D:\\j\\workspace\\outerloop_win---6835b088\\bin\\AnyOS.AnyCPU.Release\\System.Security.Cryptography.Xml.Tests\\netcoreapp\\doc.dtd' because it is being used by another process.) (File.Delete() is not working.)\r\n---- System.IO.IOException : The process cannot access the file 'D:\\j\\workspace\\outerloop_win---6835b088\\bin\\AnyOS.AnyCPU.Release\\System.Security.Cryptography.Xml.Tests\\netcoreapp\\doc.dtd' because it is being used by another process.\r\n---- System.Exception : File.Delete() is not working. +++++++++++++++++++ STACK TRACE: ----- Inner Stack Trace #1 (System.IO.IOException) ----- at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStreamHelpers.CreateFileStream(String path, Boolean write, Boolean append) in D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Extensions\src\System\IO\FileStreamHelpers.CoreClr.cs:line 10 at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) in D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 137 at System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.C14NSpecExample1_WithoutResolver() in D:\j\workspace\outerloop_win---6835b088\src\System.Security.Cryptography.Xml\tests\XmlDsigC14NWithCommentsTransformTest.cs:line 133 ----- Inner Stack Trace #2 (System.Exception) ----- at System.Security.Cryptography.Xml.Tests.XmlDsigC14NWithCommentsTransformTest.Dispose() in D:\j\workspace\outerloop_win---6835b088\src\System.Security.Cryptography.Xml\tests\XmlDsigC14NWithCommentsTransformTest.cs:line 56 at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Extensions\ReflectionAbstractionExtensions.cs:line 76 ``` System.Security.Cryptography.Xml.Tests.XmlDsigC14NTransformTest.C14NSpecExample1 (from (empty)) ``` Failing for the past 1 build (Since Failed#119 ) Took 5 ms. Stacktrace MESSAGE: System.IO.IOException : The process cannot access the file 'D:\\j\\workspace\\outerloop_win---bf7c4efa\\bin\\AnyOS.AnyCPU.Debug\\System.Security.Cryptography.Xml.Tests\\netcoreapp\\doc.dtd' because it is being used by another process. +++++++++++++++++++ STACK TRACE: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStreamHelpers.CreateFileStream(String path, Boolean write, Boolean append) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Runtime.Extensions\src\System\IO\FileStreamHelpers.CoreClr.cs:line 10 at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 140 at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding) in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 125 at System.Security.Cryptography.Xml.Tests.XmlDsigC14NTransformTest.C14NSpecExample1() in D:\j\workspace\outerloop_win---bf7c4efa\src\System.Security.Cryptography.Xml\tests\XmlDsigC14NTransformTest.cs:line 217 ``` +16666 area-Infrastructure Setup helix ilc runs cc: @MattGal @weshaggard This changes will setup the payloads required to execute tests on Helix. I am also commenting out the actual test execution for now, in order to reduce noise and only get results of ilc compilation. +16667 area-Infrastructure Update CoreClr, CoreFx, Microsoft.DotNet.BuildTools.TestSuite, Standard to beta-25106-02, beta-25106-01, , beta-25106-01, respectively (master) +16669 area-System.Security Finish filling in System.Security.Permissions.dll I hit RevertAssert but we should fill the rest in the best we can for compat. Based on a quick diff with .NET Framework, this is what I see missing: ```c# namespace System.Security { public abstract class CodeAccessPermission : IPermission, ISecurityEncodable, IStackWalk { public static void RevertAll(); public static void RevertAssert(); public static void RevertDeny(); public static void RevertPermitOnly(); } public class HostProtectionException : SystemException { public override void GetObjectData(SerializationInfo info, StreamingContext context); } public class HostSecurityManager { public virtual EvidenceBase GenerateAppDomainEvidence(Type evidenceType); public virtual EvidenceBase GenerateAssemblyEvidence(Type evidenceType, Assembly assembly); public virtual Type[] GetHostSuppliedAppDomainEvidenceTypes(); public virtual Type[] GetHostSuppliedAssemblyEvidenceTypes(Assembly assembly); } public sealed class NamedPermissionSet : PermissionSet { public override bool Equals(object oobj); } public class PermissionSet : ICollection, IDeserializationCallback, IEnumerable, ISecurityEncodable, IStackWalk { protected virtual IPermission AddPermissionImpl(IPermission perm); public override bool Equals(object oobj); protected virtual IEnumerator GetEnumeratorImpl(); protected virtual IPermission GetPermissionImpl(Type permClass); protected virtual IPermission RemovePermissionImpl(Type permClass); protected virtual IPermission SetPermissionImpl(IPermission perm); } public sealed class SecurityContext : IDisposable { public static AsyncFlowControl SuppressFlow(); public static AsyncFlowControl SuppressFlowWindowsIdentity(); } public static class SecurityManager { public static bool CurrentThreadRequiresSecurityContextCapture(); public static PermissionSet GetStandardSandbox(Evidence evidence); } } namespace System.Security.Permissions { public sealed class FileIOPermission : CodeAccessPermission, IUnrestrictedPermission { public FileIOPermission(FileIOPermissionAccess access, AccessControlActions control, string path); public FileIOPermission(FileIOPermissionAccess access, AccessControlActions control, string[] pathList); public override bool Equals(object oobj); } public sealed class RegistryPermission : CodeAccessPermission, IUnrestrictedPermission { public void AddPathList(RegistryPermissionAccess access, AccessControlActions control, string pathList); public override void FromXml(SecurityElement elemesd); } public sealed class StrongNamePublicKeyBlob { public override bool Equals(object oobj); } } namespace System.Security.Policy { public sealed class ApplicationDirectory : EvidenceBase { public override EvidenceBase Clone(); } public sealed class ApplicationTrust : EvidenceBase, ISecurityEncodable { public ApplicationTrust(ApplicationIdentity applicationIdentity); public ApplicationIdentity ApplicationIdentity { get; set; } public override EvidenceBase Clone(); } public sealed class ApplicationTrustCollection : ICollection, IEnumerable { public ApplicationTrustCollection Find(ApplicationIdentity applicationIdentity, ApplicationVersionMatch versionMatch); public void Remove(ApplicationIdentity applicationIdentity, ApplicationVersionMatch versionMatch); } public sealed class Evidence : ICollection, IEnumerable { public Evidence(EvidenceBase[] hostEvidence, EvidenceBase[] assemblyEvidence); public void AddAssemblyEvidence(T evidence) where T : EvidenceBase; public void AddHostEvidence(T evidence) where T : EvidenceBase; public T GetAssemblyEvidence() where T : EvidenceBase; public T GetHostEvidence() where T : EvidenceBase; } public sealed class GacInstalled : EvidenceBase, IIdentityPermissionFactory { public override EvidenceBase Clone(); } public sealed class Hash : EvidenceBase, ISerializable { public byte[] SHA256 { get; } public override EvidenceBase Clone(); public static Hash CreateSHA256(byte[] sha256); } public sealed class PermissionRequestEvidence : EvidenceBase { public override EvidenceBase Clone(); } public sealed class PolicyStatement : ISecurityEncodable, ISecurityPolicyEncodable { public override bool Equals(object oobj); } public sealed class Publisher : EvidenceBase, IIdentityPermissionFactory { public override EvidenceBase Clone(); } public sealed class Site : EvidenceBase, IIdentityPermissionFactory { public override EvidenceBase Clone(); } public sealed class StrongName : EvidenceBase, IIdentityPermissionFactory { public override EvidenceBase Clone(); } public class TrustManagerContext { public virtual ApplicationIdentity PreviousApplicationIdentity { get; set; } } public sealed class Url : EvidenceBase, IIdentityPermissionFactory { public override EvidenceBase Clone(); } public sealed class UrlMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable { public override bool Equals(object objo); } public sealed class Zone : EvidenceBase, IIdentityPermissionFactory { public override EvidenceBase Clone(); } } ``` +16670 area-System.Data Failure in System.Data.SqlClient.Tests.DiagnosticTest.ExecuteNonQueryAsyncTest ``` MESSAGE: Assert.Equal() Failure\nExpected: 42\nActual: 134 +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 170 ``` @saurabh500 not sure whether this is a dupe. https://ci.dot.net/job/dotnet_corefx/job/master/job/opensuse42.1_release/lastCompletedBuild/testReport/System.Data.SqlClient.Tests/DiagnosticTest/ExecuteNonQueryAsyncTest/ +16672 area-Infrastructure Fix property name used to update versions repository Needed to pass the pkg-matching glob as a powershell param to golf it: there aren't many characters remaining for this inline script. When I submitted https://github.com/dotnet/corefx/pull/16440 in response to https://github.com/dotnet/corefx/commit/8633af6015cde1371b099541b9bcad121563caeb#diff-a725594f4362d34ae867f205e97f94c7L26, I didn't consider that the ps1 parameter had a different name than the msbuild property. /cc @eerhardt @jkotas @gkhanna79 +16673 area-System.Net ServerAsyncAuthenticate_MismatchProtocols_Fails test fails in some builds Sample of build where it failed: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4121 ``` System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol: Tls, clientProtocol: Tls11, expectedException: typeof(System.Security.Authentication.AuthenticationException)) [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Authentication.AuthenticationException) Actual: typeof(System.ComponentModel.Win32Exception): The credentials supplied to the package were not recognized Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs(167,0): at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(407,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs(131,0): at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(680,0): at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(783,0): at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs(704,0): at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(767,0): at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(982,0): at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(937,0): at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(885,0): at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(693,0): at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs(614,0): at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs(160,0): at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs(257,0): at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs(257,0): at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs(154,0): at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` cc: @davidsh, @CIPop, @Priya91 +16674 area-System.Numerics Add 32-bit version of some MathF tests broken down from #13592 PR #13572 marked a few tests to be 64-bit only, given that the assumptions they make were only meant for 64-bit runs. Tests: MathF.Atan2 and MathF.Pow +16675 area-System.Numerics Add 32-bit version of ComplexTests Broken down from #13592 PR #13572 marked a few tests to be 64-bit only, given that the assumptions they make were only meant for 64-bit runs. Tests: https://github.com/dotnet/corefx/pull/13572/files#diff-19973eb77d5f57cf6c8661e7fe588dc9 +16676 area-System.Numerics Re-enabling the MathF.Atan2 and MathF.Pow tests for all platforms. Resolves https://github.com/dotnet/corefx/issues/16674 +16678 area-Infrastructure [** No Merge**] Turn on Windows dumpling and fail some tests on purpose @dotnet-bot Skip CI Please Testing this out before merging for real to make sure that we can collect dumps. +16680 area-System.Xml Improve code coverage for System.Xml namespace types These are some of the bigger types with low coverage in `System.Xml`. It would be great if we could add more tests to reach 80-90% coverage on these: - [ ] System.Xml.XmlConvert 66.3% - [ ] System.Xml.XmlDocument 53.8% - [ ] System.Xml.XmlNode 65.1% - [ ] System.Xml.XmlNodeReader 29.5% - [ ] System.Xml.XmlReader 62.9% - [ ] System.Xml.XmlTextReader 55.1% - [ ] System.Xml.XmlTextWriter 60.1% - [ ] System.Xml.XmlValidatingReader 23.8% - [ ] System.Xml.XmlWriter 32.2% - [ ] System.Xml.Resolvers.XmlPreloadedResolver 0% Detailed coverage report: https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16681 area-System.Security Fixing S.S.Cryptography.Xml tests cc @anthonylangsworth @tintoy @peterwurzinger +16682 area-System.Net Disable some failing System.Net.Security tests These test are intermittently failing because of #16516 and #16534. Disabling them to prevent more random CI failures from occurring. @Priya91 @steveharter +16683 area-Serialization Improve code coverage for System.Xml.Serialization These are some of the bigger types with low coverage in `System.Xml.Serialization`. It would be great if we could add more tests to reach 80-90% coverage on these: - [ ] System.Xml.Serialization.SoapReflectionImporter 52.4% - [ ] System.Xml.Serialization.XmlReflectionImporter 67.2% - [ ] System.Xml.Serialization.XmlSchemaExporter 27.5% - [ ] System.Xml.Serialization.XmlSchemaImporter 31.6% - [ ] System.Xml.Serialization.XmlSchemas 29.4% - [ ] System.Xml.Serialization.XmlSerializationReader 49% - [ ] System.Xml.Serialization.XmlSerializationWriter 54.1% Detailed coverage report: https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ +16685 area-System.Security System.Security.Cryptography.Xml feature requests "This is an issue to collect all the feature requests after we finish stabilizing. Some of them might be already implemented on Mono and might need a port. cc: @anthonylangsworth @tintoy @peterwurzinger Feature requests: - [ ] Add support for adding algorithms Features resulting from failing tests: (there is no compat break between Desktop so marking as future) - they can be possibly Mono bugs - [ ] SignedXmlTest.DataReferenceToNonDataObject (There is an existing test with this - currently this is also not working on Desktop but likely is on Mono) - [ ] SignedXmlTest.GetIdElement_Null (throws ArgumentNullException on Desktop, seems to be valid on Mono) - [ ] SignedXmlTest.HmacMustBeMultipleOfEightBits (Desktop does not throw, Mono throws CryptographicException) - [ ] SignedXmlTest.VerifyHMAC_ZeroLength (Desktop does not throw, Mono throws CryptographicException) - [ ] SignedXmlTest.VerifyHMAC_SmallerThanMinimumLength (Mono has it with category ""NotWorking"") - verify if should be fixed - [ ] SignedXmlTest.VerifyHMAC_MinimumLength (Failing also on Desktop - seems to be passing on Mono) - [ ] SignedXmlTest.VerifyHMAC_SmallerHalfLength (Failing also on Desktop - seems to be passing on Mono) - [ ] SignedXmlTest.VerifyHMAC_HalfLength (Failing also on Desktop - seems to be passing on Mono) - [ ] SignedXmlTest.VerifyHMAC_HMACOutputLength_Signature_Mismatch (Failing also on Desktop - seems to be passing on Mono) - [ ] SignedXmlTest.VerifyHMAC_HMACOutputLength_Invalid (Failing also on Desktop - seems to be passing on Mono) - [ ] XmlDsigExcC14NWithCommentsTransformTest.LoadInputAsXmlNodeList, LoadInputAsXmlNodeList2 (Failing also on Desktop - seems to be working on Mono) - [x] EncryptedXmlTest.GetDecryptionIV_StringNull (Failing also on Desktop - seems to be working on Mono) - https://github.com/dotnet/corefx/pull/17221 - [ ] SignedInfoTest.GetXmlWithSetProperty (Failing also on Desktop - seems to be working on Mono)" +16686 area-Infrastructure VS is running tests marked with [ActiveIssue] Not sure if this is intentional but it seems like a bug to me Works correctly from the command line VS 2017 RC4 2130.1 +16688 area-System.Diagnostics RemoteExecutorConsoleApp not restoring on some Fedora test runs The `RemoteExecutorConsoleApp.exe` that is used in the `System.Diagnostics.Process` tests is either missing or can't be accessed on some Fedora test runs. It happens infrequently, but enough to cause these failures: - https://github.com/dotnet/corefx/issues/16488 - https://github.com/dotnet/corefx/issues/16400 - https://github.com/dotnet/corefx/issues/15844 FYI @stephentoub @Priya91 +16689 area-Infrastructure Add Jenkins CI verb to do some combined extra testing Right now if you want to test more (eg Win7 or outerloop) you have to pick and choose manually from the verbs. Nobody really does this. We could easily define a new verb in `netci.groovy` that grabbed a selected set for you. Looking through all the stuff that's not run by default, here's a potential subset that covers Win 7 and outerloop on several OS's. We could invoke it with something like `@dotnet-bot test extra` ``` @dotnet-bot test innerloop Debian8.4 Debug @dotnet-bot test innerloop Fedora24 Release @dotnet-bot test innerloop OpenSUSE42.1 Release @dotnet-bot test innerloop RHEL7.2 Debug @dotnet-bot test innerloop Ubuntu16.10 Release @dotnet-bot test outerloop CentOS7.1 Debug @dotnet-bot test outerloop OSX Debug @dotnet-bot test outerloop PortableLinux Release @dotnet-bot test outerloop Ubuntu14.04 Release @dotnet-bot test outerloop Windows 7 Release @dotnet-bot test outerloop Windows_NT Release ``` I only eyeballed that -- we could swap in/out according to where bugs are typically found. +16690 area-System.Security API to get DSA signature length DSA signature length seems to be 40 + value depending on ASN1 encoding. Is there some consistent API where we could check that? On Desktop it seems to always be 40 bytes but on .NET Core we seem to be creating 64 byte length signatures (could be a bug on .NET Core too). Related test: System.Security.Cryptography.Xml: SignedXmlTest.AsymmetricDSASignature +16691 area-System.Security Fix System.Xml.Cryptography.Xml : SignedXmlTest.AsymmetricDSASignature Test is failing because SignatureValue.Length is not 40. This behavior can be correct. When starting to accept values `>= 40` it fails for different reasons. Further investigate why is this happening. cc: @tintoy @anthonylangsworth @peterwurzinger - could you help investigating this one if you got more context? +16692 area-System.Runtime Serialization Tests Failed on UAPAOT due to RuntimeHelpers.GetUninitializedObject Missing Many of serialization tests are failing on uapaot due to the following exception, > System.MissingMethodException : Method '**RuntimeHelpers.GetUninitializedObject(Type)**' was not included in compilation, but was referenced in FormatterServices.GetUninitializedObject(Type). There may have been a missing assembly. According to [ApiCompatBaseline.uapaot.txt](https://github.com/dotnet/corefx/blob/45ecf2a1ef245433d544aa88b8b69ba26b368288/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt#L195), the method seems not implemented by corelib. We need to implement the method to unblock the serialization tests on uapaot. +16693 area-System.Runtime Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid Missing on UWP Building System.Runtime.Serialization.Xml test project failed on the following error, > MSBUILD : error : Error generating serialization code for the root type SerializationTypes.TypeWithTypeProperty: Could not resolve type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' in assembly 'System.Runtime, Version =4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. It seems that NetNative’s corelib (the one used in uapaot) doesn’t have this type yet. +16694 area-Infrastructure build -? should explain potential parameter values @danmosemsft commented on [Fri Mar 03 2017](https://github.com/dotnet/buildtools/issues/1366) `build -?` lists what the parameters do but not the values for them. EG., ``` [-framework] Sets target framework for native build configuration which is used for copying to the common shared runtime folder. ``` This doesn't tell me what I want to know which is, how to build for UAP (for example). What I need to know is `build.cmd -framework:uap` or `-framework:uapaot` This is in https://github.com/dotnet/corefx/blob/8b7f07d22575aad4b90afbe65df05bd23e5d60be/Documentation/coding-guidelines/project-guidelines.md but it's referred to as `TargetGroup` in that documentation. EXternal contributors won't be able to figure this out. --- @danmosemsft commented on [Fri Mar 03 2017](https://github.com/dotnet/buildtools/issues/1366#issuecomment-284054932) @joperezr --- @joperezr commented on [Fri Mar 03 2017](https://github.com/dotnet/buildtools/issues/1366#issuecomment-284073327) This issue should be moved to corefx instead, since the right place to fix it is [here](https://github.com/dotnet/corefx/blob/master/config.json#L284-L288) --- @weshaggard commented on [Fri Mar 03 2017](https://github.com/dotnet/buildtools/issues/1366#issuecomment-284093718) Ideally this information would be pulled from https://github.com/dotnet/corefx/blob/master/config.json#L6. +16695 area-System.Net Issue with System.Net.WebClient.Proxy.GetProxy "I noticed this bug while working with a Proxy Auto-Config PAC file. Basically, when using GetProxy, if I pass a relative URI (which generates an exception, which can be caught) and then continue on to pass an absolute URI, it stops processing the PAC file. More details can be found [HERE](https://github.com/PowerShell/PowerShell/issues/3040) which is where I filed the original bug with the PowerShell team, and also [HERE](https://github.com/dotnet/coreclr/issues/9854) as the PowerShell team directed me to CoreCRL, who have since directed me here to CoreFX... I'm hoping this is the right place... This is assuming the use of a system PAC file such as: ```c# function FindProxyForURL(url, host) { if ( host == ""www.msn.com"" ) { return ""PROXY 10.10.10.10""; } else { return ""DIRECT""; } } ``` Problem code: ```c# void Main() { System.Net.WebClient client = new System.Net.WebClient(); Uri uri_absolute = new Uri(""http://www.msn.com"", System.UriKind.RelativeOrAbsolute); Uri uri_relative = new Uri(""www.msn.com"", System.UriKind.RelativeOrAbsolute); Console.WriteLine(client.Proxy.GetProxy(uri_absolute).Host); try { client.Proxy.GetProxy(uri_relative); } catch { Console.WriteLine(""Exception""); } Console.WriteLine(client.Proxy.GetProxy(uri_absolute).Host); } ``` And the output is: ``` 10.10.10.10 Exception www.msn.com ``` It should be: ``` 10.10.10.10 Exception 10.10.10.10 ```" +16696 area-Meta Some libraries are building implementations for platforms they don't run on eg System.DirectoryServices.Protocols has a single configuration in Configurations.props ``` xml netstandard-Windows_NT; ``` This is a Windows specific implementation but as authored it is building that as a generic IL implementation (despite the Windows_NT prefix ) For platforms it doens't currently support (UAP, Unix) it should be building and packaging a PNSE assembly presumably with an appropriately conditioned property in the project. As it is right now for example, this fails the UAP PInvoke checks. We need to check for others in this condition. @weshaggard @joperezr +16697 area-Serialization Do more sgen tests Use the existing XmlSerializer tests to verify the generated c# code. +16698 area-Serialization Do more svcutil tests Use the existing WCF tests to verify the svcutil scenario +16699 area-Serialization Create a prototype for a sgen tool that contain the c# codegen Currently all the c# codegen code is in the System.Xml, need investigate if to pull them out into a separate tool. +16700 area-Serialization Prototype svcutil pregeneration +16701 area-Serialization The generated c# code for XElement type cannot compile The generated code is different from desktop version and cannot compile. +16702 area-Serialization The generated code for enum type is wrong and cannot compile "Cannot compile because the error ""The CultureInfo exists in both System.Globalization and System.Runtime""" +16703 area-System.Globalization DateTime? proprety value cannot be set correctly i have a class contains a property whose type is DateTime? ```cs public class SubItem { public string StringValue { get; set; } public int? IntegerValue { get; set; } public DateTime? DateValue { get; set; } public bool? BooleanValue { get; set; } } ``` i set value to property 'DateValue' like this: ```cs var subItem = new SubItem(); subItem.DateValue = DateTime.Now; ``` the problem is that subItem.DateValue is always {01/01/0001 00:07:28}. why? please help me... +16704 area-Infrastructure Enable Pinvoke checker and baseline violations 1. Enable appropriate PInvoke checker - OneCore or stricter UWP one. 2. Enable NETNATIVE define if it's uapaot. At some point we stopped defining it generally. 3. Baseline all existing violations. @joperezr @weshaggard is this the correct condition in dirs.props? +16705 area-System.Security [dev/apple_crypto] Cannot export as PFX when collection (or cert) has no private keys `SecItemExport` returns an error when the collection it is given has no private keys and it is exporting as a PKCS12/PFX. At least, this behavior is true on macOS Sierra 10.12.3. +16706 area-Meta Desktop tests run progress This is some changes in the Desktop tests run effort. Updated `TargetFrameworkMonikers` usage in attributes to all be `Netframework` and deleted unnecessary of those and made a change in System.Collections.Tests to make tests pass in desktop because the behavior is different (there is a bug in desktop which is explained in both tests). Also moved some tests for an API that was added to netcoreapp to its netcoreapp file as it was causing `build-tests.cmd -framework:netfx` to fail. cc: @danmosemsft @weshaggard @tarekgh +16707 area-System.Security Finish off the X509Certificates implementation on macOS. "* Enable add/remove from a keychain-backed store. * Improve X509KeyStorageFlags usage * PersistKeySet will save a PFX key (and certificate) into the default keychain * EphemeralKeySet will throw PNSE * Exportable is respected for PFX * Add support for reading the Disallowed trust. * This will only read ""full deny"" behaviors * Enable or permanent-assign all remaining ActiveIssue(-1) tests. * Add DSA support to cert.PrivateKey from the Apple PAL * And add a test for it" +16709 area-System.Data Cleanup System.Data's LocaleMapper `System.Data` has an internal `LocaleMapper` helper class that maps LCIDs to locale names, locale names to LCIDs, and locale names to ANSI code pages, which was necessary to workaround missing `CultureInfo` APIs in .NET Core 1.0/1.1: - [LocaleMapper.Unix.cs](https://github.com/dotnet/corefx/blob/b70e5d1d7485b26dfc305597148bb2b4e11f3741/src/Common/src/System/Data/Locale/LocaleMapper.Unix.cs) - [LocaleMapper.Windows.cs](https://github.com/dotnet/corefx/blob/b70e5d1d7485b26dfc305597148bb2b4e11f3741/src/Common/src/System/Data/Locale/LocaleMapper.Windows.cs) However, the missing `CultureInfo` APIs were added back last summer/fall as part of the .NET Standard 2.0 effort (including [Unix support](https://github.com/dotnet/coreclr/blob/a2c684d4094d00c715d67238cf4f4650248d4ded/src/mscorlib/src/System/Globalization/LocaleData.Unix.cs)), which should allow `System.Data`'s `LocaleMapper` to be deleted or significantly pared-down. cc: @saurabh500, @tarekgh +16711 area-System.Diagnostics Native projects for FileVersionInfo tests. Native projects for ```FileVersionInfo``` tests instead of checking in in binaries. Fixes #16613. +16712 area-System.Collections Add tests for GetEnumerator returning a cloneable enumerator in System.Collections.NonGeneric Increases code coverage for these types, these are new .NET standard 2.0 additions that were never tested +16713 area-System.Runtime EnvVars Dictionary as IDictionary passed to Linq morphs Enumerator Dictionary Enumerator is a bit weird as it can be two types; depending on what interface it is accessed on Environment variables can also return a `HashSet` which is why it needs `DictionaryEntry` rather than `KeyValuePair` Previously this code would work fine [aspnet/Configuration](https://github.com/aspnet/Configuration/blob/dev/src/Microsoft.Extensions.Configuration.EnvironmentVariables/EnvironmentVariablesConfigurationProvider.cs#L49-L63) ```csharp internal void Load(IDictionary envVariables) { Data = new Dictionary(StringComparer.OrdinalIgnoreCase); var filteredEnvVariables = envVariables .Cast() // Errors .SelectMany(AzureEnvToAppEnv) .Where(entry => ((string)entry.Key).StartsWith(_prefix, StringComparison.OrdinalIgnoreCase)); foreach (var envVariable in filteredEnvVariables) { var key = ((string)envVariable.Key).Substring(_prefix.Length); Data[key] = (string)envVariable.Value; } } ``` However trying to use it with latest netcoreapp errors as follows ``` Unable to cast object of type 'System.Collections.Generic.KeyValuePair`2[System.String,System.String]' to type 'System.Collections.DictionaryEntry'. ``` ``` Unhandled Exception: System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.KeyValuePair`2[System.String,System.String]' to type 'System.Collections.DictionaryEntry'. at System.Linq.Enumerable.d__35`1.MoveNext() at System.Linq.Enumerable.d__159`2.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationProvider.Load(IDictionary envVariables) at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers) at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() at Microsoft.AspNetCore.Hosting.WebHostBuilder..ctor() at LargeResponseApp.Startup.Main(String[] args) ``` Not sure if is typeforwarding issue (e.g. don't have everything in sync); 2.0 api changes, jit change, Linq optimization, eviorment vars change etc /cc @JonHanna @stephentoub @muratg @divega +16715 area-System.Net Invalid ArraySegments in buffer lists not properly validated on Unix On Windows, the array segments in buffer lists when passed to send/receive/etc. are validated to ensure that the arrays in those segments are not null, that the bounds are valid, etc. This validation is not being done on Unix. +16716 area-System.Net SendBufferSize set to 0 results in an exception on macOS I'm not sure if this should be considered by design or worked around, but setting Socket.SendBufferSize to 0 on macOS is resulting in an exception: ``` System.Net.Sockets.SocketException : Invalid argument Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs(5332,0): at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs(4835,0): at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue, Boolean silent) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs(1827,0): at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs(455,0): at System.Net.Sockets.Socket.set_SendBufferSize(Int32 value) ``` +16717 area-System.Data Increase code coverage from 61.2% to 64.4% on System.Data.Common.DataColumnMappingCollection Contributes to #16337 +16718 area-System.Net Increase code coverage of System.Net.Sockets Removes dead/useless code from the implementation and adds a bunch more tests. Code coverage of the System.Net.Sockets library increases from ~71% line and ~61% branch to ~82% line and ~73% branch. cc: @geoffkizer, @cipop +16721 area-System.Runtime Test failures running System.Runtime.Extensions tests locally ``` Discovering: System.Runtime.Extensions.Tests Discovered: System.Runtime.Extensions.Tests Starting: System.Runtime.Extensions.Tests System.Tests.EnvironmentTests.GetFolderPath_Windows(folder: NetworkShortcuts) [FAIL] Assert.NotEmpty() Failure Stack Trace: C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime.Extensions\tests\System\EnvironmentTests.cs(309,0): at System.Tests.EnvironmentT ests.GetFolderPath_Windows(SpecialFolder folder) System.Tests.EnvironmentTests.GetFolderPath_Windows(folder: SendTo) [FAIL] Assert.NotEmpty() Failure Stack Trace: C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime.Extensions\tests\System\EnvironmentTests.cs(309,0): at System.Tests.EnvironmentT ests.GetFolderPath_Windows(SpecialFolder folder) System.Tests.EnvironmentTests.GetFolderPath_Windows(folder: Templates) [FAIL] Assert.NotEmpty() Failure Stack Trace: C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime.Extensions\tests\System\EnvironmentTests.cs(309,0): at System.Tests.EnvironmentT ests.GetFolderPath_Windows(SpecialFolder folder) Finished: System.Runtime.Extensions.Tests === TEST EXECUTION SUMMARY === C:\Users\hughb\Documents\GitHub\corefx\Tools\tests.targets(247,5): warning : System.Runtime.Extensions.Tests Total: 1450, Errors: 0, Failed: 3, S kipped: 0, Time: 5.453s [C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime.Extensions\tests\System.Runtime.Extensions.Tests.csproj] ``` +16724 area-System.Text System.Text.Encoding folder has two solution files Let me know if I can remove the System.Text.Encoding.Tests.sln file and I can submit a PR https://github.com/dotnet/corefx/tree/master/src/System.Text.Encoding +16725 area-System.Diagnostics Fix test for child process inheriting environment variables The test was initially disabled for one issue that was fixed. But it was then suffering from an issue related to encodings rather than to environment variables, not the purpose of the test. Fixes https://github.com/dotnet/corefx/issues/14417 cc: @JeremyKuhne, @Priya91 +16726 area-System.Runtime Add test for using LINQ to enumerate Environment.GetEnvironmentVariables cc: @JeremyKuhne, @benaadams +16727 area-System.Net ReceiveMessageFromAsync with buffer list broken on Unix Socket.ReceiveMessageFromAsync(SocketAsyncEventArgs) is completely broken on Unix when using a BufferList instead of a single buffer: the implementation only handles the single-buffer case and ignores any BufferList set. +16728 area-Infrastructure Add RIDs for arm64 Ubuntu, Alpine Linux A lot of patches have landed in CoreCLR which make CoreCLR run on arm64 Linux. This adds RIDs for arm64 versions of Alpine Linux and Ubuntu Linux. +16729 area-Infrastructure Add RIDs for Android This PR introduces new RIDs for Android in preparation for bringing up cross-compilation setup in core-setup. It covers next steps mentioned [here](https://github.com/dotnet/coreclr/issues/9946#issue-211806593), and used references from the [.NET Core Guide](https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog) Tagging @qmfrederik for feedback on appropriate RID naming. +16730 area-System.Memory Span == null throws ArgumentNullException I know it doesn't make sense to compare it to null since it is a struct. But it is allowed since we have a implicit cast operator that get called, op_Implicit(T[] array). And that operator throws the exceptions when calling the constructor: ```c# public static implicit operator Span(T[] array) { return new Span(array); } public Span(T[] array) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } ``` Repro: ```c# int[] src = { 1, 2, 3 }; Span srcSpan = new Span(src); var t = srcSpan == null; ``` at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument) at System.Span`1.op_Implicit(T[] array) at ConsoleApp1.Program.Main(String[] args) +16731 area-Infrastructure Add RIDs for Android "With the work done in CoreCLR and CoreFX, we now have a ""Hello World"" up and running on Android. This PR introduces RIDs for Android. Some remarks: - Because Android uses the Linux kernel, I've chosen to make Android import Linux. Just like Alpine Linux, Android uses a different C runtime (bionic), so chances this will always work are slim. - At the moment, CoreCLR and CoreFX support arm and arm64 Android, so I've left out x86 and x64 Android (although they make make great candidates for testing as they can be virtualized on x64 hardware) - Android versions by ""API levels"", so you have API level 1, 2, 3,... . I've chosen to make API level 21 explicit, because it is the first API level that also support arm64. At the same time, the CoreCLR and CoreFX builds use packages borrowed from Termux (I like to think of Termux as a package management system for Android, similar to brew on macOS). They also target API level 21, so there's some consistency there." +16733 area-System.Net Fix TODO in ClientWebSocketOptions https://github.com/dotnet/corefx/issues/11735 cc: @geoffkizer, @davidsh +16735 area-Meta Use lazy initializers in place of double check locks Next set of changes for Issue 3862 to use lazy initialization constructs in place of double check locks. @stephentoub @karelz kindly review. +16738 area-System.Data Add link to GitHub source +16739 area-System.Net Socket.DontFragment throws not supported exception on Unix Presumably due to https://github.com/dotnet/corefx/blob/7a230270559cfbef056aaafc022cdfd8fd3d829e/src/Native/Unix/System.Native/pal_networking.cpp#L2043 (i.e. lack of a translation for the option). It's not clear to me whether/why this is by design, but it should be investigated. +16740 area-System.Data System.Data.SqlClient: Use Task.CompletedTask +16741 area-System.Net "Test: System.Net.Security.Tests.ClientAsyncAuthenticateTest/ClientAsyncAuthenticate_AllServerVsIndividualClientSupportedProtocols_Success(clientProtocol: Tls11) failed with ""System.TimeoutException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.ClientAsyncAuthenticateTest/ClientAsyncAuthenticate_AllServerVsIndividualClientSupportedProtocols_Success(clientProtocol: Tls11)` has failed. System.TimeoutException : The operation has timed out. Stack Trace: at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in /root/corefx/src/Common/tests/System/Threading/Tasks/TaskTimeoutExtensions.cs:line 23 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__14.MoveNext() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/ClientAsyncAuthenticateTest.cs:line 146 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__9.MoveNext() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/ClientAsyncAuthenticateTest.cs:line 93 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170304.02 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170304.02/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ClientAsyncAuthenticateTest~2FClientAsyncAuthenticate_AllServerVsIndividualClientSupportedProtocols_Success(clientProtocol:%20Tls11) +16742 area-System.Linq IEnumerable.Concat with params I think it would be useful if we could just concat collection with just variable directly without the need to make array for it. It would make code cleaner because sometimes we just want to append some variable into collection Just add this to Enumerable extension method ```C# public static IEnumerable Concat(this IEnumerable first,params TSource[] second) { return first.Concat(second as IEnumerable); } var zeroToHundred = Enumerable.Range(0,100); var zeroToHundredPlusOne = zeroToHundred.Concat(101); ``` Also, would it be better if we have `Append` and `Prepend` instead? ```C# public static IEnumerable Append(this IEnumerable items,params TSource[] after) { return items.Concat(after); } public static IEnumerable Prepend(this IEnumerable items,params TSource[] before) { return before.Concat(items); } var oneToHundred = Enumerable.Range(1,99); var zeroToHundredPlusOne = oneToHundred.Prepend(0).Append(101); ``` +16743 area-System.Numerics Extension method to number I think it would be useful if number have some extension method as helper in many trivial function instead of static class First I would like to suggest `To` and `Range` ```C# namespace System.Linq; public static IEnumerable To(this int start,int end) { var sign = Math.Sign(end - start); end += sign; while(start != end) { yield return start; start += sign; } } public static IEnumerable Range(this int start,int count) { return Enumerable.Range(start,end); } ``` The usage will make code more compact and easier to write ```C# foreach(var i in 1.To(100)) Console.WriteLine(i); foreach(var i in 1.Range(99)) Console.WriteLine(i); ``` Second. I would like to suggest that, most of `Math` and `DateTime` should move into `System.Numerics` as an extension method to number itself for example ```C# namespace System.Numerics; public static double Pow(this double value,double power) { return Math.Pow(value,power); } public static float Pow(this float value,float pow) { return (float)Math.Pow(value,power); } public static TimeSpan AsMilliseconds(this long millisec) { return DateTime.FromMilliseconds(millisec); } public static TimeSpan AsMilliseconds(this double millisec) { return DateTime.FromMilliseconds(millisec); } ``` Same as above ```C# var sqrt2 = 2f.Pow(0.5f); var timeSpan = 1000L.AsMilliseconds(); ``` Both of these proposal should be contained in namespace. So it would be hidden unless explicit using, would not hamper in normal life +16744 area-System.Net Socket.Select / Read and Socket.Handle @samirparekh commented on [Thu Sep 29 2016](https://github.com/dotnet/coreclr/issues/7413) Hi, we have an application which we intend to port to .NETCore. This application is a latency sensitive application and it requires to monitor >100 sockets for incoming (high frequency) financial market data. I have gone throught the implementation of Socket.Select for windows and Linux (from the available source code). It seems like for Linux the framework allocates a stack based pointer list (in case when the provided socket list length is < 80) else on the heap. Surprising enough the same approach could have benefited wider group of windows users. Moreover in my case where i can not go for allocating an array of >100 sockets , in my previous implementation I had a pre-allocated array/list of socket pointers/handles and reused it through the process lifecycle(thus eleminating the performance penalty imposed by GC in case of constantly re-allocating IntPtr arrays). It seems like in the current code base it is no longer possible to get an IntPtr / handle to a socket which makes the above code optimization impossible. May I request you (in the interest of broader community) to rethink the various scenarios and advice the possible cource of action. Thanks --- @gkhanna79 commented on [Sat Mar 04 2017](https://github.com/dotnet/coreclr/issues/7413#issuecomment-284203728) CC @brianrob --- @stephentoub commented on [Sun Mar 05 2017](https://github.com/dotnet/coreclr/issues/7413#issuecomment-284225067) This issue should really be in CoreFx. > It seems like for Linux the framework allocates a stack based pointer list (in case when the provided socket list length is < 80) else on the heap. Surprising enough the same approach could have benefited wider group of windows users. Yes, that should be doable for Windows as well (cc: @geoffkizer). You're welcome to submit a PR to CoreFx to address that. > It seems like in the current code base it is no longer possible to get an IntPtr / handle to a socket which makes the above code optimization impossible. Socket.Handle has been exposed. It's not available in .NET Core 1.x, but is in .NET Core 2.0. +16745 area-System.Threading Add Task.IsCompletedSuccessfully @GSPP commented on [Sat Aug 13 2016](https://github.com/dotnet/coreclr/issues/6732) `Task` already has a few shortcut properties: `IsFaulted`, `IsCancelled`, `IsCompleted`. These are useful because they provide a way to write certain conditions very succinctly. The only such property missing is `IsCompletedSuccessfully`. It should be added. The workarounds are a little awkward: `t.Status == TaskStatus.RanToCompletion` and `!t.IsFaulted && !t.IsCanceled`. They are longer, don't express meaning well and sometimes are written incorrectly (e.g. forgetting about cancellation). Is there a reason `IsCompletedSuccessfully` can/should not exist? --- @omariom commented on [Sat Aug 13 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239626805) `IsSucceeded`? --- @benaadams commented on [Sat Aug 13 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239629098) `IsCompletedSuccessfully` would match `ValueTask` which has it https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs#L135-L136 --- @GSPP commented on [Sat Aug 13 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239629282) Yes, I think Task and ValueTask should have as much common surface area as possible to make it easy to switch between the two. It might even make sense to add a `Status` property to `ValueTask` and synthesize a suitable status in case the object is not based on a task. --- @jamesqo commented on [Sun Aug 14 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239733437) Since `ValueTask` has it, 👍 from me. Also I thought API requests go in corefx? (at least that's what I got told [here](https://github.com/dotnet/coreclr/issues/1206#issuecomment-120179702)) --- @GSPP commented on [Mon Aug 15 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239771861) I believe mscorlib types are supposed to be discussed here. I always check the file system on Github first to see where a given type lives. @jamesqo --- @omariom commented on [Mon Aug 15 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239773579) > `IsCompletedSuccessfully` would match `ValueTask` which has it Is it late to change ValueTask? ) --- @ghost commented on [Mon Aug 15 2016](https://github.com/dotnet/coreclr/issues/6732#issuecomment-239903832) > `IsSucceeded`? `HasSucceeded`? _just bikesheding .._ :) +16746 area-Infrastructure Fix rootfs to sync with coreclr Fix rootfs script to build libcoreclrtraceptprovider.so in coreclr related issue: dotnet/coreclr#9897, dotnet/core-setup#1617 cc/ @gkhanna79 +16749 area-System.Xml System.Xml.XPath.XDocument: XPathEvaluate method for XNode returns incorrect result "I am porting .NET code to .NET Core, and noticed this difference. System.Xml.XPath.Extensions class defines XPathEvaluate extension method for XNode. This method returns incorrect result for XPath query of text nodes. Environment: - .NET Core 1.1 - System.Xml.XPath.XDocument 4.3.0 Example 1: /text() ```c# XElement element = XElement.Parse(""Text.""); var result = element.XPathEvaluate(""/text()""); // .NET Framework: result is a collection of a single XText item (""Text.""). // .NET Core: result is a collection of 2 XText items, and they are the same reference (""Text.""). ``` Example 2: /text()[1] ```c# XElement element = XElement.Parse(""12""); var result = element.XPathEvaluate(""/text()[1]""); // .NET Framework: result is a collection of a single XText item (""1""). // .NET Core: result is a collection of 2 XText items, and they are the same reference (""1""). ``` Example 3: /text()[2] ```c# XElement element = XElement.Parse(""12""); var result = element.XPathEvaluate(""/text()[2]""); // .NET Framework: result is a collection of a single XText item (""2""). // .NET Core: result is a collection of 2 XText item, (""2"") and (""1""). ``` Is this a bug?" +16750 area-System.Linq "Test under: System.Linq.Tests with ActiveIssue(""Valid test but too intensive to enable even in OuterLoop"")" "[ActiveIssue(""Valid test but too intensive to enable even in OuterLoop"")] Details: https://github.com/dotnet/corefx/blob/master/src/System.Linq/tests/SelectManyTests.cs#L216 https://github.com/dotnet/corefx/blob/master/src/System.Linq/tests/SelectTests.cs#L143 https://github.com/dotnet/corefx/blob/master/src/System.Linq/tests/SkipWhileTests.cs#L146 https://github.com/dotnet/corefx/blob/master/src/System.Linq/tests/TakeWhileTests.cs#L121 https://github.com/dotnet/corefx/blob/master/src/System.Linq/tests/ToArrayTests.cs#L131 https://github.com/dotnet/corefx/blob/master/src/System.Linq/tests/WhereTests.cs#L1001" +16751 area-System.Linq "Tests under System.Linq.Parallel.tests with ActiveIssue(""Cancellation token not shared"")" "[ActiveIssue(""Cancellation token not shared"")] Details: https://github.com/dotnet/corefx/blob/master/src/System.Linq.Parallel/tests/QueryOperators/SequenceEqualTests.cs#L172 https://github.com/dotnet/corefx/blob/master/src/System.Linq.Parallel/tests/QueryOperators/SequenceEqualTests.cs#L186" +16752 area-Serialization "Test: System.Private.Xml.Tests.XmlSerializerTests.SequenceEqual_SharedLeft_Cancellation with [ActiveIssue(""fails when using CodeGen as well"")]" "Change [ActiveIssue(""fails when using CodeGen as well"")] to a new issue: Detail: https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs#L1883" +16753 area-System.Runtime "Test disabled with ""Fails on desktop and core: 'Unable to cast object of type 'System.UInt32[][*]' to type 'System.Object[]'""" "Test: Roundtrip_ArrayContainingArrayAtNonZeroLowerBound() under corefx\src\System.Runtime.Serialization.Formatters\tests\BinaryFormatterTests.cs [ActiveIssue(""Fails on desktop and core: 'Unable to cast object of type 'System.UInt32[][*]' to type 'System.Object[]'"")] Detail: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs#L750" +16754 area-System.Runtime "Change [ActiveIssue(""PerformanceTest"")] to a new github issue" "[ActiveIssue(""PerformanceTest"")] Tests under: corefx\src\System.Runtime.Numerics\tests\BigInteger\PerformanceTests.cs Details: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#L24 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#L38 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#52 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#66 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#80 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#94 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#108 https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs#122" +16756 area-Meta Cleanup disabled tests missing correct issue numbers "1. [Fact(Skip = ""870811"")] Create a new issue: https://github.com/dotnet/corefx/issues/16747 2. [Fact(Skip = ""906219"")] Create a new issue: https://github.com/dotnet/corefx/issues/16748 Change to [ActiveIssue(issue number)] 3. [Fact(Skip = ""https://github.com/dotnet/corefx/issues/15101"")] Add Attribute: [ActiveIssue(15101)] 4. [ActiveIssue(""PerformanceTest"")] Create a new issue: https://github.com/dotnet/corefx/issues/16754 5. [ActiveIssue(""Valid test but too intensive to enable even in OuterLoop"")] Create a new issue: https://github.com/dotnet/corefx/issues/16750 6. [ActiveIssue(""Cancellation token not shared"")] Create a new issue: https://github.com/dotnet/corefx/issues/16751 7. [ActiveIssue(""Fails on desktop and core: 'Unable to cast object of type 'System.UInt32[][*]' to type 'System.Object[]'"")] Create a new issue: https://github.com/dotnet/corefx/issues/16753 8. [ActiveIssue(""fails when using CodeGen as well"")] Create a new issue: https://github.com/dotnet/corefx/issues/16752 9. [ActiveIssue(""Distributed transactions are not supported."")] Create a new issue: https://github.com/dotnet/corefx/issues/16755 10. [ActiveIssue(""dotnet/coreclr#2051"", TestPlatforms.AnyUnix)] Change to [ActiveIssue(""https://github.com/dotnet/coreclr/issues/2051”, TestPlatforms.AnyUnix)]. " +16757 area-System.Net Failure in System.Net.Http.Functional.Tests.HttpClientHandlerTest.PostAsync_Redirect_LargePayload(statusCode: 307, expectRedirectToPost: True) (from (empty)) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_release/116/testReport/System.Net.Http.Functional.Tests/HttpClientHandlerTest/PostAsync_Redirect_LargePayload_statusCode__307__expectRedirectToPost__True_/ Message: ~~~ System.Threading.Tasks.TaskCanceledException : A task was canceled. ~~~ Stack Trace: ~~~ at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__72.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_release/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 1304 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +16758 area-System.Collections [System.Collections] Fixes regression in IntersectWith The regression was introduced as part of https://github.com/dotnet/corefx/commit/bef119221d98912cda3076ca67a96f0a8177c97d probably because SortedSet API is mostly not covered by any test. +16759 area-System.Net Factor out helper in Send/ReceiveAsync Task methods Addressing feedback from #16737. Extracts helpers for ConfigureBuffer, ConfigureBufferList, and GetTaskForSendReceive, to reduce duplicated code. Also factors out the APM fall backs into their own methods to streamline the calling methods. cc: @geoffkizer +16760 area-System.Collections Regression in SortedSet::Max introduced in https://github.com/dotnet/corefx/pull/11968 ```c# using System; using System.Collections.Generic; class X { public static void Main () { var set = new SortedSet { 1, 3, 5, 7, 9 }; var view = set.GetViewBetween (4, 8); Console.WriteLine (view.Max); // Prints 9 instead of 7 } } ``` +16761 area-System.Net HttpClient/HttpContent application deadlock Platform: Ubuntu 16.04 and Windows Core CLR: 1.1.0 In my application (An MVC based micro-service) I make repeating, large POST requests to a local service. The response of each request is several megabytes of JSON. I am using tasks to execute these request in parallel, my control flow is completly async. After a variable number (usually not the same number) of requests the application will deadlock becoming completely unresponsive to outside requests. The number of requests can be variable, but the time before deadlock changes when the size of the requested parameters is changed. The larger the requests, the the quicker the deadlock. The HttpClient object is shared among the requests. I have isolated the failure to: await hrm.Content.CopyToAsync(ms).ConfigureAwait(false); Where Hrm is the HttpResponse message allocated by: HttpResponseMessage hrm = await hc.SendAsync(hqm, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false) After spending quite a bit of time, I have reverted the projects' CLR version to 1.0.3 from 1.1.0 and it appears that the deadlock is no longer present - or at least takes much more time to manifest itself. Since I am developing on Linux I have been unable to do any useful debugging of this issue after the deadlock - I am not able to connect to the process after it deadlocks. I cannot share my source directly but I could privately. +16762 area-System.Net Repeated new FormUrlEncodedContent(list) when parameters are large causes application failure "Platform: Ubuntu 16.04 Core CLR: 1.1.0 ```c# List points, List observationTimes Dictionary fields = new Dictionary(); fields.Add(""model"", model); fields.Add(""field"", field); fields.Add(""pts"", JsonConvert.SerializeObject(points)); fields.Add(""dts"", JsonConvert.SerializeObject(observationTimes)); using (HttpContent furlc = new FormUrlEncodedContent(fields)) { try ... ``` Repeated calls to ""new FormUrlEncodedContent(fields)"" when pts and dts are very large causes an application crash." +16763 area-System.Collections Add regression test for SortedSet.GetViewBetween.Max #16760 cc: @marek-safar, @mjp41, @ianhays +16764 area-Infrastructure Fix test projects that are failing ILC step when trying to run uapaot tests. We were able to succesfully send the right payloads to Helix which helped us trying to ilc all of the tests projects, in order to be able to tell which ones are failing that step. The full list of the test projects that are failing are: - [ ] System.Collections.Tests - [x] System.Data.SqlClient.Tests - [x] System.IO.FileSystem.Tests - [x] System.IO.MemoryMappedFiles.Tests - [x] System.Net.Http.Functional.Tests - [x] System.Net.Mail.Functional.Tests - [x] System.Net.Requests.Tests - [x] System.Net.Security.Tests - [x] System.Net.WebClient.Tests - [x] System.Private.Uri.Unit.Tests - [x] System.Runtime.Extensions.Tests - [x] System.Runtime.Serialization.Formatters.Tests - [x] System.Runtime.Serialization.Json.Performance.Tests - [x] System.Runtime.Serialization.Json.ReflectionOnly.Tests - [x] System.Runtime.Serialization.Json.Tests - [x] System.Runtime.Serialization.Xml.Performance.Tests - [x] System.Runtime.Serialization.Xml.ReflectionOnly.Tests - [x] System.Runtime.Serialization.Xml.Tests - [x] System.Runtime.Tests - [x] System.Security.AccessControl.Tests - [x] System.Threading.ThreadPool.Tests - [x] System.Xml.Linq.Properties.Tests - [ ] System.Xml.XmlSerializer.ReflectionOnly.Tests - [ ] System.Xml.XmlSerializer.Tests cc: @weshaggard @MattGal +16765 area-System.Net Failing test: System.Net.Sockets.Tests.SocketAsyncEventArgsTest.CancelConnectAsync_StaticConnect_CancelsInProgressConnect New test added on 3\4. https://github.com/dotnet/corefx/commit/3805927a19b961850c1c6429d6f8a8b6f1fbd4fa#diff-e1fb5b4a4127d23e848c28f23edf72a2 Appears to be random, as it passes on other runs. @stephentoub it is failing here. The async connection request may complete by this line: >> Assert.True(Socket.ConnectAsync(SocketType.Stream, ProtocolType.Tcp, connectSaea)); Failures: Test Case: dotnet_corefx/master/debian8.4_release 1208 deb84-20170214-f64b50 03/06 02:44 AM dotnet_corefx/master/debian8.4_debug 1210 deb84-20170214-56eea0 03/06 01:37 PM dotnet_corefx/master/ubuntu14.04_release 1349 ubuntu1404-20160211-1-4b2f60 03/06 02:44 AM Detail: ``` debian8.4_debug System.Net.Sockets.Tests.SocketAsyncEventArgsTest.CancelConnectAsync_StaticConnect_CancelsInProgressConnect (from (empty)) Failing for the past 1 build (Since #1210 ) Took 22 ms. Stacktrace MESSAGE: Assert.False() Failure\nExpected: False\nActual: True +++++++++++++++++++ STACK TRACE: at System.Net.Sockets.Tests.SocketAsyncEventArgsTest.CancelConnectAsync_StaticConnect_CancelsInProgressConnect() in /mnt/resource/j/workspace/dotnet_corefx/master/debian8.4_debug/src/System.Net.Sockets/tests/FunctionalTests/SocketAsyncEventArgsTest.cs:line 315 ``` +16766 area-System.Runtime System.Environment rejects env variable values acceptable to the OS In https://github.com/dotnet/coreclr/issues/9793 an environment variable already set in the OS caused an ArgumentException when MSBuild tried to set it because the length of the value was over 32KB. (CI apparently passes the change description in an environment variable) We should accept any environment variable that's acceptable to the OS. Apparently on Windows Server 2012 (this run) over 32KB is acceptable. Rather than check the length we should perhaps let Windows return an error. https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Environment.cs#L45 https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Environment.cs#L843 +16767 area-System.Runtime Expose Environment.GetCurrentProcessorNumber() as a public API @VSadov commented on [Thu Feb 16 2017](https://github.com/dotnet/coreclr/issues/9638) Environment.CurrentExecutionId seems to be a generally useful API, that can be used to correlate accesses to striped data in order to minimize unwanted cross core sharing. Currently the best correlation option is the `CurrentManagedThreadId` which helps with continuity of accesses to the same stripe within a thread, but does not help much with preventing unwanted stripe sharing from threads running on separate cores. --- @VSadov commented on [Thu Feb 16 2017](https://github.com/dotnet/coreclr/issues/9638#issuecomment-280512273) Re: https://github.com/dotnet/coreclr/blob/e5f2df239b546ac9ed2417506c90af222eaf1013/src/mscorlib/src/System/Environment.cs#L709 --- @jkotas commented on [Fri Feb 17 2017](https://github.com/dotnet/coreclr/issues/9638#issuecomment-280626576) Agree that it looks useful. @VSadov Process for adding new public APIs https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/api-review-process.md Close the issue here, and open a new one in corefx with the API proposal. --- @gkhanna79 commented on [Sat Mar 04 2017](https://github.com/dotnet/coreclr/issues/9638#issuecomment-284175601) @danmosemsft Can you please move this to CoreFX? +16768 area-Serialization Test DCS_TypeWithTypeProperty Failed on Uapaot Test DCS_TypeWithTypeProperty failed on Uapaot due to https://github.com/dotnet/corefx/issues/16693. We need to activate the issue on Uapaot when #16693 get fixed. +16769 area-System.Runtime S.R.InteropServices.RuntimeInformation.FrameworkDescription throws in UWP release Exception message: RFLCT_Ambiguous. I think cause is here: https://github.com/dotnet/corefx/blob/9e693eed46efd17f39090de336ee82d318edbbec/src/System.Runtime.InteropServices.RuntimeInformation/src/System/Runtime/InteropServices/RuntimeInformation/RuntimeInformation.cs#L28 ```GetCustomAttribute(typeof(AssemblyFileVersionAttribute))``` could return several attributes. Workaround: If I use following or similar code, exception not occurs: ``` typeof(object).GetTypeInfo().Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute)).OfType().FirstOrDefault(); ``` +16770 area-System.Globalization ToTitleCase does not correctly titlecase Dutch words starting with IJ "@warrantyvoids commented on [Mon Mar 06 2017](https://github.com/dotnet/coreclr/issues/9981) The current TextInfo.ToTitleCase() Locale specific function does not correctly titlecase Dutch words starting with IJ as specified by the Unicode Standard, introductory text of paragraph 3.13. • Titlecasing of IJ at the start of words in Dutch An example of this would be ToTitleCase(""ijzeren eigenschappen"") -> ""IJzeren Eigenschappen"", although it currently leads to ""Ijzeren Eigenschappen"". " +16771 area-System.Collections Fix behaviour of TreeSubSet Min and Max Fixes #16760. Provide correct override in TreeSubSet for Min and Max, they now take account of the range of the subset. As the root is guaranteed to be in the range, then the code does not need to check something is in the range, if _root is not null. This makes Min and Max virtual. Is that an acceptable change? Previously, they hid the virtual behaviour inside the implementation. cc @stephentoub @marek-safar @ianhays +16772 area-Serialization Disable Test DCS_TypeWithTypeProperty on Uapaot Test DCS_TypeWithDatetimeOffsetTypeProperty failed on Uapaot due to #16768. We wanted to disable the test on uapaot for now so that it won't block other tests. +16773 area-System.Security Clean up unused SupportsKeyGeneration properties The platform-specific interop type providers for RSA and ECDSA still had the SupportsKeyGeneration properties defined. Nothing calls them anymore, so delete them before they make it to master. +16775 area-Infrastructure Revert indexing build in the publish leg This reverts commits involved with changing to index symbols during the publish leg: 47c664ceb2dbeed3ac3750e2ad2b0349448633e7 547e9ca4e6a37e24134aabfd521956c4e9d0d36d 3bf11e1693c668e3088ab06b2a8a74204a35c227 04a9a414baa37db15e9f6cfeccda44da8bb03820 abc12ae0c82f08b187155c65a5762e9cad1f34e9. Instead of disabling, revert: this will let me see what the builds were actually indexing before my changes to see how quantity might have affected things. Indexing all packages using the new targets takes ~30 minutes, which is a major impact on the official build time. Before re-enabling this, I need to find a way to improve perf. /cc @markwilkie @Petermarcu +16777 area-System.Memory Fix in src\System.Memory\ref\System.Memory.csproj Use `` instead of `` for `System.Runtime` in src\System.Memory\ref\System.Memory.csproj, else the build fails unless System.Runtime.dll already exists. +16778 area-System.Memory Missing Method Exceptions from Kestrel when trying to run Web API on Raspberry Pi "@challe commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632) ## Steps to reproduce `dotnet new webapi` Change the `csproj`-file so that it looks like this: ```xml netcoreapp2.0 2.0.0-beta-001663-00 ``` Followed by ``` dotnet restore dotnet publish ``` Now take all of the files that were created in the `bin/Debug/netcoreapp2.0/publish` and copy these files to the Raspberry Pi. Try to run the application by doing: `usr/bin/dotnet /home/challe/dev/test/test.dll`. It says that the application has started and that it is listening on port 5000! Visit http://localhost:5000/api/values in the browser, locally on your Raspberry Pi. ## Expected behavior I expected to see the JSON values in the browser. ## Actual behavior In the terminal, I see: ``` warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() warn: Microsoft.AspNetCore.Server.Kestrel[0] Connection processing ended abnormally System.MissingMethodException: Method not found: '!0 System.Span`1.get_Item(Int32)'. at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.MemoryPoolIteratorExtensions.GetKnownVersion(Span`1 span, String& knownVersion) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.TakeStartLine(ReadableBuffer buffer, ReadCursor& consumed, ReadCursor& examined) at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.d__2.MoveNext() ``` ## Environment data I am currently using the `2.0.0-beta-001663-00` runtime on my Raspberry Pi. `dotnet --info` output: .NET Command Line Tools (2.0.0-alpha-004853) Product Information: Version: 2.0.0-alpha-004853 Commit SHA-1 hash: e7689a3116 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.0-alpha-004853\ --- @Petermarcu commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284159339) Interesting, there is an effort going on right now to move ASP.NET on top of Span. @KrzysztofCwalina , does there need to be an explicit reference to the Span package at this point? I think its in this package: https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Memory ASP.NET versions that use that type should be referencing that package. --- @Petermarcu commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284159409) I'm guessing this happens everywhere. Not just on your Pi. --- @gkhanna79 commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284178854) CC @jkotas --- @jkotas commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284179698) This is caused by breaking change in System.Memory public surface that @ahsonkhan made to fix https://github.com/dotnet/corefx/issues/13681. ASP.NET needs to pick up latest version of System.Memory packages to be compatible with latest Microsoft.NETCore.App. --- @jkotas commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284181133) @davidfowl What does need to happen for ASP.NET to pick up latest System.Memory? --- @davidfowl commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284191517) I'm surprised we're even binding to that method. We need to wait until the corefxlab packages get mirrored into asp.net's feed. That's being worked on...No eta yet /cc @pranavkm --- @Petermarcu commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284191648) In the meantime, can @challe reference the package directly or will that break other things? --- @davidfowl commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284192891) Referencing the package won't help. You'd need to downgrade your runtime back to netcoreapp1.1 or use an earlier version of 2.0 that doesn't have this change. --- @Petermarcu commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284200233) Can't, this is an architecture we don't have in 1.X. we need to get 2.0 working. --- @Petermarcu commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284200264) Should we undo the breaking change until this is properly coordinated? --- @davidfowl commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284202802) > Should we undo the breaking change until this is properly coordinated? We *could* but I like using it as a forcing function to get our mirror fixed. /cc @Eilon --- @Petermarcu commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284203975) It would be great to understand how long this will be broken and back out the change if its going to be more than a day or so. We have a lot of people using 2.0 pre-release builds that will quickly discover this break. --- @jkotas commented on [Sat Mar 04 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284205909) https://github.com/aspnet/kestrelHttpServer is the last part that requires updating to get the change absorbed. Revering it would need to propagate through coreclr, corefx and corefxlab - definitely longer path. --- @Petermarcu commented on [Sun Mar 05 2017](https://github.com/dotnet/core-setup/issues/1632#issuecomment-284269486) Looks like ASP.NET was able to get a build out with all the updated references. If you get the latest from the MyGet feed this should be fixed. Here is the feed to add to your NuGet.config (I assume you already had it). https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json Make sure you have at least : Microsoft.AspNetCore.Server.Kestrel 1.2.0-preview1-23736 " +16779 area-System.Security System.Security.Cryptography.Xml KeyInfoTest.ImportKeyNode is failing This test is passing on full .NET but is failing on CoreFX - we need to verify what has happened. Also verify that test was properly ported from Mono as it could be some simple typo ```csharp System.Security.Cryptography.Xml.Tests.KeyInfoTest.ImportKeyNode [FAIL] System.Security.Cryptography.CryptographicException : An error occurred parsing the key components ---- Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The parameter is incorrect Stack Trace: at System.Security.Cryptography.Xml.DSAKeyValue.LoadXml(XmlElement value) at System.Security.Cryptography.Xml.KeyInfo.LoadXml(XmlElement value) at System.Security.Cryptography.Xml.Tests.KeyInfoTest.ImportKeyNode() ----- Inner Stack Trace ----- at System.Security.Cryptography.CngKeyLite.ImportKeyBlob(String blobType, Byte[] keyBlob) at System.Security.Cryptography.DSAImplementation.DSACng.ImportKeyBlob(Byte[] rsaBlob, Boolean includePrivate) at System.Security.Cryptography.DSAImplementation.DSACng.ImportParameters(DSAParameters parameters) at System.Security.Cryptography.Xml.DSAKeyValue.LoadXml(XmlElement value) ``` likely also related failure: ```csharp System.Security.Cryptography.Xml.Tests.DSAKeyValueTest.LoadXml [FAIL] Assert.NotNull() Failure Stack Trace: /home/krwq/work/corefx/src/System.Security.Cryptography.Xml/tests/DSAKeyValueTest.cs(113,0): at System.Security.Cryptography.Xml.Tests.DSAKeyValueTest.LoadXml() ``` cc: @tintoy @anthonylangsworth @peterwurzinger +16780 area-System.Security System.Security.Cryptography.Xml XmlDsigC14NTransformTest.PrefixlessNamespaceOutput failing "This test is also failing on Desktop but the failure is different. Actual failure: ``` System.Security.Cryptography.Xml.Tests.XmlDsigC14NTransformTest.PrefixlessNamespaceOutput [FAIL] Assert.Equal() Failure  (pos 0) Expected: urn:foo Actual:  (pos 0) Stack Trace: at System.Security.Cryptography.Xml.Tests.XmlDsigC14NTransformTest.PrefixlessNamespaceOutput() ``` Acceptable failure (Desktop): ``` Strings not equal: ""urn:foo"" and """" ``` cc: @tintoy @anthonylangsworth " +16781 area-System.Security Remove/fix NotImplementedExceptions in S.S.Cryptography.Xml "CryptoHelpers.cs contains few NotImplementedExceptions. For each one of them we should add a test which will trigger that NIE or remove a case. Each removed case should be understood (i.e. algorithm is not longer secure and we do not want to support verification) As part of this issue we should also identify if there are any ""TODO"" ""fix me"" etc in the code. cc: @anthonylangsworth @tintoy List of remaining items which either throw NotImplementedException or are not implemented and should be: - [x] Signing/verifying HMACMD5 needs tests - [x] All symmetric encryption algorithms need tests - [x] RSA with OAEP padding needs tests - [x] Decryption transform needs tests (there could be some but there is no explicit usage of algorithm in the test – there could be an implied usage though) - [x] License transform needs tests " +16782 area-System.IO FileInfo.CreationTime should throw PlatformNotSupported on platforms where it isn't supported On most non-Windows platforms, the stat family of functions returns a struct that is missing st_birthtime. We observe this at [build time](https://github.com/dotnet/corefx/blob/d736f7688b0ce09eca208c85eec3a84c556337d2/src/Native/Unix/configure.cmake#L120), and only try to get the value in our [PAL if we know it is supported](https://github.com/dotnet/corefx/blob/0e3fe2d4e207067d427f301b4533acb3e1c8c9f5/src/Native/Unix/System.Native/pal_io.cpp#L152). If we know we don't have st_birthtime, we return [default(DateTimeOffset)](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs#L166). Here's some output from Ubuntu 16.04: ```console CreationTime: Monday, January 1, 0001 12:00:00 AM CreationTimeUtc: Monday, January 1, 0001 12:00:00 AM LastAccessTime: Saturday, March 4, 2017 3:27:29 PM LastAccessTimeUtc: Saturday, March 4, 2017 11:27:29 PM LastWriteTime: Sunday, February 19, 2017 12:21:30 AM LastWriteTimeUtc: Sunday, February 19, 2017 8:21:30 AM ``` This should throw PlatformNotSupportedException, as the platform does not support the concept being expressed. It is in fact dangerous behavior the way it is. Imagine a disk cleanup program designed to delete everything older than a week after it backs up everything created this week. cc: @ianhays @JeremyKuhne +16783 area-System.Net HttpClient on Linux improvements and enhancements "@lgreenlee commented on [Mon Mar 06 2017](https://github.com/dotnet/coreclr/issues/9984) After utilizing the HttpClient for several micro-services I believe some improvements can be made to the HttpClient under Linux. ### Improvement 1 - Remove the CURL dependency/Or HttpClientSlim? I believe there is a thread discussing this already but the the dependency on CURL is problematic. It causes and will continue to cause a few basic issues such as this one. https://github.com/dotnet/coreclr/issues/9953 Over time the Curl dependency will become more pronounced as interfaces change. Eventually, there will be some sort of breaking change that will cause your users (like me) subtle and/or obvious problems such as software ceasing to work, or unwanted (but needed) system updates to non .NET software. The ""fix"" for this particular issue may be a static dependency. There are other reasons though... A byproduct of the CURL dependency is that the behavior of the HttpClient is handicapped. We cannot retrieve an underlying network stream from the HttpClient and do with it as we wish. Access to the stream is hidden within curl. Rich signaling of error conditions and network state are not possible as a result. Finally, there is also some overhead associated with pinvoke and the interop. We cannot say the current implementation is the most efficient way to make these requests. I would propose a higher performance, ""lighter weight"" client with better underlying network access and memory usage our current implementation. ### Improvement 2 - Synchronous methods In some scenarios I would like to be sure that I know what my code is doing. There are times, such as trying to design a process that is well understood and verifiable, where placing that code in a thread and running it to completion (or forever) is a desirable attribute. Fundamentally, the use of the await keyword introduces code that the developer does not write. After having spent the last 8 months developing on Linux with just the VS Code debugger - debugging complex threading issues is very difficult and time consuming. Finally the inclusion of the HttpClient forces me to change the overall structure of my service if it is primarily Synchronous in nature. ### Improvement 3 - Better indication of proper usage Creation of the HttpClient through ""new"" to make an individual requests is not recommended, but it is easy to do and seemingly correct since there are no API features to prevent us from making the mistake. TIME_WAIT socket growth is also not an expected behavior if I call ""Dispose"" on the HttpClient. Perhaps implementing a HttpClientPool with the ability to retrieve named instances of an http client and hiding the constructor for the HttpClient? The importance of the HttpClient to the .NET Core framework cannot be understated. It one of a handful of mechanisms to communicate outside the CLR, is the only Http based mechanism we have to complete REST operations. It must work well now and into the future for developers and organizations to continue to adopt .NET Core as a development and deployment platform. --- @stephentoub commented on [Mon Mar 06 2017](https://github.com/dotnet/coreclr/issues/9984#issuecomment-284501248) Thanks, but as a meta-point with regards to the title of this issue, I'm not sure how this is Linux-specific. (2) and (3) are about the shape of HttpClient, and (1) is simply about having a managed implementation rather than relying on a native implementation, e.g. libcurl on Linux or WinHttp on Windows. --- @stephentoub commented on [Mon Mar 06 2017](https://github.com/dotnet/coreclr/issues/9984#issuecomment-284503019) (1) We are considering a managed HttpClientHandler implementation. The core of that isn't challenging. The challenging part is feature parity, e.g. support for Negotiate/Kerberos/NTLM, support for HTTP/2, etc. Nothing insurmountable, just a lot of work before it could be substituted in silently. In the meantime, we are considering putting out a prototype of a managed implementation on corefxlab, that folks could play with, contribute to, and even use if they desired. (2) If this is about ease of us, you can't just block on the resulting Tasks, e.g. .Wait(), .Result, or .GetAwaiter().GetResult()? That would impact scalability, but you wouldn't want to use synchronous methods if scalability were an issue anyway. There was also already an issue about this: https://github.com/dotnet/corefx/issues/13813 If you want to continue this discussion, probably best to do it there. (3) Feel free to propose an API. I suggest splitting this issue up, though, as it's difficult to have a reasonable discussion about multiple, largely-unrelated issues in the same thread. I suggest closing this issue, using existing issues or opening new issues in the corefx repo for each constituent piece. " +16784 area-System.Net System.Net.Sockets.Tests.SocketAsyncEventArgsTest.CancelConnectAsync_InstanceConnect_CancelsInProgressConnect failure ```csharp System.Net.Sockets.Tests.SocketAsyncEventArgsTest.CancelConnectAsync_InstanceConnect_CancelsInProgressConnect [FAIL] Assert.False() Failure Expected: False Actual: True Stack Trace: /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/SocketAsyncEventArgsTest.cs(296,0): at System.Net.Sockets.Tests.SocketAsyncEventArgsTest.CancelConnectAsync_InstanceConnect_CancelsInProgressConnect() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/4197/consoleText +16785 area-System.Diagnostics Microsoft.Extensions.Logging.EventLog not compitable with .NetCoreApp v1.0 ``` Package Microsoft.Extensions.Logging.EventLog 1.1.1 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.Extensions.Logging.EventLog 1.1.1 supports: net451 (.NETFramework,Version=v4.5.1) One or more packages are incompatible with .NETCoreApp,Version=v1.0. ``` Is there an alternative to writing to the Windows EventLog for a .NetCore app? The EventLog nuget package doesn't install and I want to use it's LoggerProvider. +16786 area-System.Runtime String should implement IReadOnlyList The .Net String class does not implement any API that provides allows random access without also implying that the characters are all in contiguous memory. There are many string-like data structures, however, that give random access to immutable sequences of characters without the characters being in contiguous memory. **Rational and usage:** As things stand, the API & implementation for the VS TextBuffer is complicated because we need two versions of several methods: one that takes a string and one that takes our piece table. Having string implement `IReadOnlyList` would eliminate the need to duplicate the methods (and the while overhead of calling the character indexer via a virtual method is annoying it isn't critical in most of our scenarios since users rarely paste in megabytes of text). **Proposed change:** Change the signature of String from this: ``` c# public sealed class String : IComparable, ICloneable, IConvertible, IComparable, IEnumerable, IEnumerable, IEquatable ``` to this: ``` c# public sealed class String : IComparable, ICloneable, IConvertible, IComparable, IEnumerable, IEnumerable, IEquatable, IReadOnlyList ``` And add an implementation for `int IReadOnlyList.Count {get;}.` A more challenging request would be to have string implement something slightly more robust than `IReadOnlyList` which would provide some useful methods that avoid some of the performance issues (specifically, allowing a Substring-like capability and a copy ability that wouldn't have the overhead of going through the character indexer for each character). ``` c# public interface ISubsetableReadOnlyList : IReadOnlyList { ISubsetableReadOnlyList Slice(int start, int length); public void CopyTo(int sourceIndex, T[] destination, int destinationIndex, int count); } ``` It would also be convenient of ReadOnlySpan also implemented IReadOnlyChar (or ISubsettableReadOnlyList) so it could be used in scenarios where the consumer doesn't require the elements to be in contiguous memory. +16787 area-System.Memory Adding Span IndexOf that takes an index and count +16788 area-Serialization XmlSerializer to Support IXmlSerializable Types IXmlSerializable is available in NetStandard2.0. XmlSerializer should support serializing/de-serializing types implementing this interface. +16789 area-Infrastructure Microsoft.Private.CoreFx.Uap builds on non-Windows platforms "If you're running on Linux and you build with ""-BuildAllConfigurations=true"", it will attempt to build the Microsoft.Private.CoreFx.UAP package. We need some way to build all OS-applicable packages on Linux so that we can produce Microsoft.NETCore.Platforms. As a temporary work-around, we will just explicitly build the Platforms package, but I think the real fix is as simple as adding ""-Windows_NT"" to build BuildConfigurations in https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.Private.CoreFx.UAP/Configurations.props @ericstj @weshaggard @ellismg " +16790 area-System.Collections [NetFX compat]: SortedSet..ctor(IEnumerable, IComparer) netfx bug There is a bug in netfx where `SortedSet..ctor(IEnumerable, IComparer)` throws NullReferenceException when comparer argument is null. @AlexGhiondea @tarekgh +16791 area-Infrastructure Enable Dumpling on all CI runs This turns on Dumpling collection in all CI runs (not just Unix). @karelz @danmosemsft +16792 area-System.Net Remove delegate allocations from SocketAsyncEventArgs SocketAsyncEventArgs is creating per-instance (sometimes per operation) delegates that can instead be a single cached static instance across all instances and operations. (@geoffkizer, I saw this in looking at a trace of your app. It was showing up as two delegate allocations per request.) cc: @geoffkizer, @cipop, @davidsh +16794 area-Infrastructure RootFS: Add no-lldb option to fix arm64 build #16182 and #13200 added lldb to the rootfs for CoreFX. However, CoreFX does not have a dependency on liblldb (CoreCLR does), and this package is not available for ubuntu.16.04-arm64 and earlier, causing the RootFS generation to fail. This PR adds an option to disable adding the LLDB package for the CoreFX RootFS. +16795 area-System.Data System.Data.SqlDbType exists in both netstandard.dll and System.Data.SqlClient.dll "@billwert commented on [Mon Mar 06 2017](https://github.com/dotnet/standard/issues/238) This causes compile failures for apps using the type and the nuget package. cc: @weshaggard --- @weshaggard commented on [Mon Mar 06 2017](https://github.com/dotnet/standard/issues/238#issuecomment-284558489) You need to reference the latest version of System.Data.SqlDbType to fix this error. --- @billwert commented on [Mon Mar 06 2017](https://github.com/dotnet/standard/issues/238#issuecomment-284562285) This project, with a reference to SqlDbType somewhere in the code, repros the problem: ```xml netstandard2.0 2.0.0-beta-25106-01 4.4.0-beta-25106-01 ``` That's the latest NETStandard.Library as well as the latest System.Data.SqlClient. From my project.assets.json: ```json ""System.Data.SqlClient/4.4.0-beta-25106-01"": { ""type"": ""package"", ""dependencies"": { ""Microsoft.NETCore.Platforms"": ""2.0.0-beta-25106-01"", ""NETStandard.Library"": ""1.6.1"", ""System.Data.Common"": ""4.3.0"", ""System.Diagnostics.DiagnosticSource"": ""4.4.0-beta-25106-01"", ""System.IO.Pipes"": ""4.3.0"", ""System.Net.NameResolution"": ""4.3.0"", ""System.Net.Security"": ""4.3.0"", ""System.Reflection.TypeExtensions"": ""4.3.0"", ""System.Security.Principal"": ""4.3.0"", ""System.Security.Principal.Windows"": ""4.4.0-beta-25106-01"", ""System.Text.Encoding.CodePages"": ""4.4.0-beta-25106-01"", ""System.Threading.Thread"": ""4.3.0"", ""System.Threading.ThreadPool"": ""4.3.0"", ""runtime.native.System.Data.SqlClient.sni"": ""4.3.0"" }, ``` " +16796 area-System.Collections [NetFX compat]: ISet_Generic_Tests.ISet_Generic_IntersectWith_Itself throws InvalidOperationException in netfx Currently ISet_Generic_IntersectWith_Itself test fails with error: ``` System.Collections.Tests.SortedSet_TreeSubset_Int_Tests.ISet_Generic_IntersectWith_Itself(setLength: 1) [FAIL] System.Collections.Tests.SortedSet_TreeSubset_Int_Tests.ISet_Generic_IntersectWith_Itself(setLength: 75) [FAIL] System.InvalidOperationException : Collection was modified after the enumerator was instantiated. Stack Trace: at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) at System.Collections.Generic.SortedSet`1.Enumerator.MoveNext() at System.Collections.Generic.SortedSet`1.TreeSubSet.IntersectWithEnumerable(IEnumerable`1 other) at System.Collections.Generic.SortedSet`1.IntersectWith(IEnumerable`1 other) D:\repos\corefx\src\Common\tests\System\Collections\ISet.Generic.Tests.cs(145,0): at System.Collections.Tests.ISet_Generic_Tests`1.Validate_IntersectWith(ISet`1 set, IEnumerable`1 enumerable) D:\repos\corefx\src\Common\tests\System\Collections\ISet.Generic.Tests.cs(426,0): at System.Collections.Tests.ISet_Generic_Tests`1.ISet_Generic_IntersectWith_Itself(Int32 setLength ``` When targeting framework netfx. cc: @tarekgh +16798 area-System.Security System.Security.Cryptography.Xml Fix NullReferenceException with PropagatedNamespaces "Please see XmlDsigC14NTransformTest.PropagatedNamespaces for repro. Copy: ```csharp XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement(""foo"", ""urn:foo"")); doc.DocumentElement.AppendChild(doc.CreateElement(""bar"", ""urn:bar"")); Assert.Equal(String.Empty, doc.DocumentElement.GetAttribute(""xmlns:f"")); XmlDsigExcC14NTransform t = new XmlDsigExcC14NTransform(); t.LoadInput(doc); t.PropagatedNamespaces.Add(""f"", ""urn:foo""); t.PropagatedNamespaces.Add(""b"", ""urn:bar""); using (Stream s = t.GetOutput() as Stream) using (StreamReader streamReader = new StreamReader(s, Encoding.UTF8)) { string result = streamReader.ReadToEnd(); Assert.Equal(result, """"); Assert.Equal(""urn:foo"", doc.DocumentElement.NamespaceURI); } ``` We need to figure if @anthonylangsworth fix is the correct one and port the fix to netfx. original fix: https://github.com/krwq/corefx/commit/55f4b8735835b9bb57db03cac31443d061c81cbe As part of this issue we need to ensure that the test is correctly interacting with PropagatedNamespaces (please see full commit with change including the changes made to the test)" +16799 area-System.Threading Add Interlocked.MemoryBarrierProcessWide method Proposal: ```c# static public class System.Threading.Interlocked { public static void ProcessWideMemoryBarrier(); } ``` Asymmetric lock free algorithms and data structures, where frequent operations are really cheap (not even interlocked operation) and rare operations are very expensive, are often used to achieve high scalability and performance. It is not possible to implement them in portable .NET code today because there is no process wide memory barrier API that is a key primitive used to implement them. The proposal is to add system process wide memory barrier API. The implementation is a simple wrapper around [`FlushProcessWriteBuffers`](https://msdn.microsoft.com/en-us/library/windows/desktop/ms683148(v=vs.85).aspx) API on Windows; and equivalent on other operating systems (e.g. `sys_membarrier` on recent Linux kernels). +16800 area-System.Collections Move a System.Collections test Just moves the test to a more derived test class. In its current location, it's unnecessarily getting run multiple times but without any variation. Addressing my remaining comments in https://github.com/dotnet/corefx/pull/16758 cc: @safern +16801 area-System.Data Retarget System.Data.SqlClient to be on top of netstandard2.0. Fixes https://github.com/dotnet/corefx/issues/16795 cc @saurabh500 @ericstj +16802 area-Infrastructure Refresh current solutions and project configurations +16803 area-Infrastructure Cloud test refactoring into UploadTests.proj "Simplifies contents of CoreFX's CloudTest.targets down to discovering the files to be used, generating appropriate helix commands for them, and pushing to Helix. Final changes will also require pipeline JSON changes to: - [x] Change all incidences of TargetQueue to TargetQueues, as this is now the appropriate way to select 1 or more queues when sending jobs. - [x] Change usage of Drop and Results Name + ""Access Token"" (Key) values to be connection strings. Sample command line: msbuild src\uploadtests.proj /p:ArchGroup=x64 /p:ConfigurationGroup=Release /p:""BuildMoniker=20170307-XX"" /p:""TargetQueues="" /p:""TestProduct=corefx"" /p:""TargetOS=Windows_NT"" /p:""Branch=master"" /p:""OfficialBuildId=20170307-XX"" /p:""CloudDropConnectionString="" /p:""CloudResultsConnectionString="" /p:HelixApiAccessKey= /p:""HelixApiEndpoint=https://helix.dot.net/api/2016-06-28/jobs"" " +16804 area-Serialization Stop shipping Desktop OOB package for System.Runtime.Serialization.Primitives Shipping OOB packages overriding Desktop .NET Framework (gac'd assemblies) is HARD. We ran into problems with Networking and decided to stop shipping all such packages. We should stop shipping System.Runtime.Serialization.Primitives package for Desktop and forward everything to Desktop .NET Framework. @shmao @zhenlan is that feasible? What will we lose if we stop shipping the OOB package for Desktop? Some APIs? Bug fixes? Anything super-important? cc @weshaggard +16805 area-System.Net Desktop OOB System.Net.Http - don't ship desktop implementation With netstandard2.0.dll we will facade the OOB into Desktop .NET. Is it something we should do also in the standalone System.Net.Http NuGet package? i.e. release yet another version which entirely removes the implementation in CoreFX and ships just the facade on Desktop? @weshaggard thoughts? +16807 area-Meta PVS-Studio: fixed vulnerability CWE-476 (NULL Pointer Dereference) We have found and fixed a vulnerability CWE-476 (NULL Pointer Dereference) using PVS-Studio tool. Analyzer warning: V3080 and V3019. PVS-Studio is a static code analyzer for C, C++ and C#. +16808 area-System.Collections Remove CoreCLR pull 7966 from SerializeDeserialize_Roundtrips() under System.Collections.ObjectModel.Tests Remove CoreCLR pull 7966 from SerializeDeserialize_Roundtrips() under System.Collections.ObjectModel.Tests in Serialization.netstandard.cs Run >msbuild System.ObjectModel.Tests.csproj /t:BuildAndTest --> Succeeded +16809 area-System.Runtime Remove CoreCLR pull 6423 from NegativeValueNotFound() under System.Runtime.Serialization.Formatters.Tests Remove ActiveIssue 6423 from NegativeValueNotFound() under System.Runtime.Serialization.Formatters.Tests in SerializationInfoTests.cs Run msbuild System.Runtime.Serialization.Formatters.Tests.csproj /t:BuildAndTest --> Succeeded +16810 area-System.Text Expose and test new GetBytes/GetByteCount overloads This is currently a WIP - I'm having some problems exposing the API so want to see what the CI says... Fixes #14255 +16813 area-System.IO Why does System.IO.MemoryStream.Read returns 0 if no more bytes are available? I think that's something which makes streams very inconsistent. System.Net.Sockets.NetworkStream.Read may return 0 if there is no data available right now but there may be some data available in the future. If you look how System.IO.BinaryReader uses Read you see how It wraps around this inconsistency. https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/IO/BinaryReader.cs#L637 However this means It makes BinaryReader unable to work with a NetworkStream(in theory) because a NetworkStream may return 0, while the end of the stream is not reached. Example: https://dotnetfiddle.net/JkakUI +16816 area-Infrastructure Use run.cmd in publish build leg (reapply) https://github.com/dotnet/corefx/pull/16775 removed a fix to use run.cmd in the publish build. That fix is required to make the tool-override work, and the build publish legs are failing without it. Commits are cherry-picked from https://github.com/dotnet/corefx/pull/16440, https://github.com/dotnet/corefx/pull/16672 +16817 area-System.Security Define metadata for the rest of the TLS CipherSuites. The non-ciphersuite ciphersuite values were removed, as were the SSL2-only values, and the values that have unknown values (Cipher:IDEA, KEA:Fortezza). The dictionary is asserted as fully populated with a fixed-length cctor test, and the additional test of ensuring all defined values have defined metadata has been performed. TlsMapping calls were built by regex substitution expressions, and have been checked manually for consistency. +16818 area-System.Collections "Proposal: add ""IEqualityComparer Comparer"" property to the IReadOnlyDictionary and to ISet" When we have only contract of the collection we cannot understand by what criteria keys or items are compared. ```CSharp public void Test(ISet mySet) { // I want to clone this set to get my personal copy. var myCopy = new HashSet(mySet, /*How to get comparer ?*/); } public interface ISet { // This new property can be introduced. IEqualityComparer Compare { get;} } ``` Improvements of BCL interfaces without loosing backward compatibility will be possible with help of https://github.com/dotnet/csharplang/issues/52 Also this proposal is mentioned here https://github.com/dotnet/corefx/issues/1973#issuecomment-283912409 +16819 area-Infrastructure Support compiling for ARM Android - Supports cross-compiling corefx cor ARM Android - Updates curl and krb5 packages - Uses NDK 14 by default for cross-compiling Some changes are required to native source code as well, I'll try to submit separate PRs for that. +16822 area-System.IO Use 64-bit file I/O functions, for Android compatibility On 32-bit Android, the file functions like lseek also operate on 32-bit values. `_FILE_OFFSET_BITS` and friends have no impact on Android, see the 32-bit notes at the end of the [bionic README.md](https://android.googlesource.com/platform/bionic.git/+/master/README.md) This PR updates the codebase to always use 64-bit file I/O functions like `lseek64`. This effectively reverts #736. +16823 area-Meta List and Review OOB packages shipping replacements of Desktop assemblies We need to review all NuGet packages which replace Desktop .NET Framework gac'd assemblies - shipping such NuGet packages is HARD (see e.g. #11100), not tested and causes trouble with binding redirects (see #9846). Known list of packages: 1. System.Net.Http - #16805 2. System.IO.Compression - #15693 3. System.Runtime.Serialization.Primitives - #16804 [3] is example where we extend Desktop - we need to enumerate all such cases in CoreFX and decide for 2.0. +16824 area-System.Threading Move TaskExtensions to CoreLib Depends on https://github.com/dotnet/coreclr/pull/10005 Fixes https://github.com/dotnet/corefx/issues/15152 cc: @jkotas, @alexperovich +16825 area-System.Xml Investigate the size of System.Private.Xml System.Private.Xml is 3.7 MB of size on disk for IL and 8.4 MB when cross-gen'ed which seems a little large. For reference System.Xml.dll on desktop is only 2.6 MB. We should understand the delta and make sure we aren't including a bunch of dead code. +16826 area-System.Net Improve CI: disable socket eventarg test Disabling new test CancelConnectAsync_InstanceConnect_CancelsInProgressConnect since it is failing in CI Applies to issue https://github.com/dotnet/corefx/issues/16765 +16829 area-System.Security Improve Code Coverage for System.Security.Cryptography.Xml (70.4%) Here are the main areas which need improvement: - [x] `SignedXml.CheckSignature(X509Certificate2 certificate, bool verifySignatureOnly)` - currently no coverage - sample code should be sufficient for now - [x] `System.Security.Cryptography.Xml.XmlDecryptionTransform` - https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Security.Cryptography.Xml_XmlDecryptionTransform.htm - [x] `System.Security.Cryptography.Xml.SymmetricKeyWrap` - https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Security.Cryptography.Xml_SymmetricKeyWrap.htm - [ ] `System.Security.Cryptography.Xml.KeyInfoClause` - https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Security.Cryptography.Xml_KeyInfoClause.htm - [X] `System.Security.Cryptography.Xml.EncryptedXml` - https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Security.Cryptography.Xml_EncryptedXml.htm - only most common scenarios - [x] `System.Security.Cryptography.Xml.EncryptionMethod` - https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Security.Cryptography.Xml_EncryptionMethod.htm - [ ] `System.Security.Cryptography.Xml.CanonicalXmlEntityReference` - https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Security.Cryptography.Xml_CanonicalXmlEntityReference.htm - at minimum one or two tests triggering use of this class Guidelines: - focus on writing tests which provide most value (rarely used scenarios can be targeted later) - focus on public entry points cc: @anthonylangsworth @tintoy @peterwurzinger +16832 area-System.Net System.Net.Security tests fix Disables a few tests that are failing for known issues and increases the timeout on some tests that are failing on Unix because they're hitting that timeout. cc: @steveharter @Priya91 resolves https://github.com/dotnet/corefx/issues/16741 +16833 area-System.Numerics API Proposal: Ceil, Floor for Vector This is a proposal of the ideas discussed in issue #15957. There are a few SIMD operations on `System.Numerics.Vector` missing that are required to implement vectorized versions of `log`, `exp`, `sin`, and `cos`. There is a C implementation of these methods using AVX intrinsics [here](http://software-lisc.fbk.eu/avx_mathfun/), which I have translated into a C# implemention using `Vector` [here](https://github.com/mjmckp/VectorMathFuns). In the implementation, I have added fake versions of the missing intrinsics. @mellinoe suggested creating two separate issues for the missing methods (the other issue is #16835), so the purpose of this issue is to propose the addition of the following methods: [Updated proposal with comments below] ```C# namespace System.Numerics { public static class Vector { public static Vector Floor(Vector value); public static Vector Floor(Vector value); public static Vector Ceiling(Vector value); public static Vector Ceiling(Vector value); } } ``` which map directly to the following AVX intrinsics: ``` _mm256_floor_ps _mm256_floor_pd _mm256_ceil_ps _mm256_ceil_pd ``` respectively. +16834 area-System.Net System.Net.Requests: Avoid unnecessary box allocations in TimerThread I noticed that some box allocations could be avoided in `System.Net.TimerThread` (used by `FtpWebRequest`). First commit is some minor cleanup while I'm making changes here: cleanup naming, make fields readonly, use expression bodied members where appropriate, and remove the static constructor. Second commit reduces box allocations. +16835 area-System.Numerics API Proposal: ShiftLeft, ShiftRight for Vector This is a proposal of the ideas discussed in issue #15957. There are a few SIMD operations on `System.Numerics.Vector` missing that are required to implement vectorized versions of `log`, `exp`, `sin`, and `cos`. There is a C implementation of these methods using AVX intrinsics [here](http://software-lisc.fbk.eu/avx_mathfun/), which I have translated into a C# implemention using `Vector` [here](https://github.com/mjmckp/VectorMathFuns). In the implementation, I have added fake versions of the missing intrinsics. @mellinoe suggested creating two separate issues for the missing methods (the other issue is #16833), so the purpose of this issue is to propose the addition of the following methods: ``` public static Vector ShiftLeft(Vector x, int n) public static Vector ShiftLeft(Vector x, int n) public static Vector ShiftLeft(Vector x, int n) public static Vector ShiftRight(Vector x, int n) public static Vector ShiftRight(Vector x, int n) public static Vector ShiftRight(Vector x, int n) ``` which map directly to the following AVX2 intrinsics: ``` _mm256_slli_epi16 _mm256_slli_epi32 _mm256_slli_epi64 _mm256_srli_epi16 _mm256_srli_epi32 _mm256_srli_epi64 ``` respectively. +16836 area-System.Reflection Type: Needs api to distinguish Multidim arrays Forked off from #16566 which is adding `IsSZArray` to `Type`. After that proposal got approved, you can check whether a `System.Type` is a multidim array by writing `type.IsArray && !type.IsSZArray`. This check is rather awkward. We used to have this kind of API surface in the CoreRT type system, but it lead to problems with readability of the code that used the API. We ended up adding an IsMDArray property to the type system - refer to dotnet/corert#1925 to see how it improves readability (it lead to substantial improvements in readability in places that were dealing with arrays and the `IsArray` part was implicit, but we needed to do something special for MD arrays - `IsMDArray` captures the intent better than `!IsSZArray`) Proposal: Add a new property to System.Type: ```csharp public virtual bool IsMultiDimensionalArray => IsArray && !IsSZArray; ``` +16838 area-Infrastructure Update BuildTools to 1.0.27-prerelease-01407-02, include symbols in packages /cc @weshaggard @ellismg @ericstj +16839 area-Serialization TypeInitialization_Type_NoTypeAvailable in Serialization Tests When running on Uapaot, many of serialization tests failed on `System.TypeInitializationException`. Please see the example below, ``` DataContractSerializerTests.DCS_TypeWithKnownTypeAttributeAndListOfInterfaceMember [FAIL] System.TypeInitializationException : TypeInitialization_Type_NoTypeAvailable ---- $BlockedFromReflection_0_42dbdc6b : Reflection_InsufficientMetadata_NoHelpAvailable: EETypeRva:0x00097CE8. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs(114,0): at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun$catch$0() f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs(37,0): at System.Runtime.CompilerServices.ClassConstructorRunner.CheckStaticClassConstruction(Void* returnValue, StaticClassConstructionContext* pContext) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\CollectionDataContract.cs(490,0): at System.Runtime.Serialization.CollectionDataContract.CollectionDataContractCriticalHelper.get_KnownInterfaces() D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\CollectionDataContract.cs(1110,0): at System.Runtime.Serialization.CollectionDataContract.IsCollectionOrTryCreate(Type type, Boolean tryCreate, $DataContract& dataContract, Type& itemType, Boolean constructorRequired, MethodInfo addMethod) ``` According to the error message, it seems the `typeof(IDictionaryGeneric)` call failed or the reflection component was having trouble looking for the static constructor of [CollectionDataContractCriticalHelper](https://github.com/dotnet/corefx/blob/15b4f51c2f3cb924840e5407bb8d5fe03bb282ea/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/CollectionDataContract.cs#L490). +16840 area-System.Memory Span/ReadonlySpan TryCopy/CopyTo are very slow The implementation of TryCopyTo/CopyTo is extremely slow (byte by byte) for the portable span. There's a TODO to use a new API in Unsafe (which has since been added) but it was never implemented. https://github.com/dotnet/corefx/blob/5ee9e2a7ded9d609e69bbd7c1ed6823b97737a72/src/System.Memory/src/System/Span.cs#L329 https://github.com/dotnet/corefx/blob/5ee9e2a7ded9d609e69bbd7c1ed6823b97737a72/src/System.Memory/src/System/ReadOnlySpan.cs#L226 /cc @jkotas @benaadams @ahsonkhan @KrzysztofCwalina @nietras +16841 area-System.Numerics Floating-Point Classification APIs ### Rationale The .NET framework does not currently provide support for classifying various floating-point types other than Infinity and NAN. Efficiently classifying floating-point values can be very useful to optimize various code paths when dealing with numbers that are outside the normal input range. ### Proposed API ``` C# public struct Double { /// Determines whether the specified value is finite (zero, subnormal, or normal and not infinite or NaN). public static bool IsFinite(double value); // IsInfinity is already provided // IsNaN is already provided /// Determines whether the specified value is normal (not zero, subnormal, infinite, or NaN). public static bool IsNormal(double value); /// Determines whether the specified value is negative. public static bool IsNegative(double value); /// Determines whether the specified value is subnormal. public static bool IsSubnormal(double value); } public struct Single { /// Determines whether the specified value is finite (zero, subnormal, or normal and not infinite or NaN). public static bool IsFinite(float value); // IsInfinity is already provided // IsNaN is already provided /// Determines whether the specified value is normal (not zero, subnormal, infinite, or NaN). public static bool IsNormal(float value); /// Determines whether the specified value is negative. public static bool IsNegative(float value); /// Determines whether the specified value is subnormal. public static bool IsSubnormal(float value); } ``` +16842 area-System.Data Consider removing the Encoding.RegisterProvider from SqlClient SqlClient currently registers the encoding providers. They should be done by the application and the not the client itself. Refer the discussions in https://github.com/dotnet/corefx/pull/16589 ``` I think registering the encoding provider should be the app decision and not the library decision. having the library registering the provider means any app using the library will pay the cost of the encoding even if the app not using the non-Unicode encodings. @stephentoub encoding handling didn't change in Net core 2.0. the only change we did is we have made the console support non-Unicode encodings but this is limited to the console only. if you have a client using Unicode only DBs why you want them pay for the encoding cost? this is similar to the networking libraries which is up to the consumer of the library to decide about the encoding but not forcing every app consume the library to pay for the encoding even if they are not using it or need it. ``` +16843 area-Infrastructure Dumping error ValueError: max() arg is an empty sequence "@mellinoe is this behaving normally? https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug/lastCompletedBuild/consoleText ``` bf7c4efa\src\System.Data.SqlClient\tests\FunctionalTests\System.Data.SqlClient.Tests.csproj] Trying to find crash dumps for project: System.Data.SqlClient.Tests Traceback (most recent call last): File ""DumplingHelper.py"", line 75, in main(sys.argv) File ""DumplingHelper.py"", line 67, in main collect_dump(argv[2], argv[3], argv[4], argv[5]) File ""DumplingHelper.py"", line 33, in collect_dump file = find_latest_dump(folder, startTimeStr) File ""DumplingHelper.py"", line 22, in find_latest_dump latestFile = max(allFiles, key=os.path.getctime) ValueError: max() arg is an empty sequence Finished running tests. End time=10:55:32.45, Exit code = 1 ```" +16844 area-System.Net Skip tests on rhel image base that cause ssl cacert error in curl. To address noise in CI due to the tests failing with ssl ca cert errors on fedora, centos and redhat images. Skipping these tests in CI while offline investigation happens. Find more info in the issue #16201 cc @steveharter @karelz +16847 area-System.Numerics Fixing up the System.Numerics.Vectors perf tests. As discovered in https://github.com/dotnet/corefx/pull/16453, the existing `System.Numerics.Vector` performance tests were not actually testing what they were supposed to as the calls were getting optimized away to nothing (this is because most of the calls we are testing are intrinsic and we can determine that the inputs into the call aren't changing and that the output is never used). This updates the tests so that the JIT will not optimize them away. They have been written in a similar fashion to the System.Math and System.MathF performance tests in CoreCLR. +16848 area-Infrastructure Updating CoreClr dependencies to servicing-25108-01 +16849 area-Infrastructure Update CoreClr to servicing-25108-01 (release/1.1.0) +16850 area-Infrastructure Distinguish x86 and x64 build jobs Our Windows Debug builds appear to be x86 while the Release builds are x64, but that distinction isn't obvious: it's not called out in the job name, all of the home page badges suggest all of the builds are x64, etc. We should fix all of this to make it clear what's being tested. cc: @mmitche, @mellinoe, @danmosemsft +16852 area-System.Net Delete commented out Socket assert "Closes https://github.com/dotnet/corefx/issues/4500 cc: @cipop, @davidsh, @geoffkizer This assert doesn't exist in desktop, and it's faulty. It was previously commented out. I'm simply deleting it. We could put the assert back and special case Raw, but doing so doesn't seem to add any value; we're just picking up OS defaults. This little program shows DualMode values for various sockets: ``` using System; using System.Net.Sockets; class Program { static void Main() { foreach (SocketType sock in Enum.GetValues(typeof(SocketType))) { foreach (ProtocolType prot in Enum.GetValues(typeof(ProtocolType))) { try { using (var s = new Socket(AddressFamily.InterNetworkV6, sock, prot)) { Console.WriteLine($""{sock,10}\t{prot,40}\tDualMode:{s.DualMode}""); } } catch (SocketException) { } } } } } ``` Results on desktop on my Windows 10 box: ``` Stream Unspecified DualMode:False Stream Unspecified DualMode:False Stream Unspecified DualMode:False Stream Tcp DualMode:False Dgram Unspecified DualMode:False Dgram Unspecified DualMode:False Dgram Unspecified DualMode:False Dgram Udp DualMode:False Raw Unspecified DualMode:True Raw Unspecified DualMode:True Raw Unspecified DualMode:True Raw Icmp DualMode:True Raw Igmp DualMode:True Raw Ggp DualMode:True Raw IPv4 DualMode:True Raw Tcp DualMode:True Raw Pup DualMode:True Raw Udp DualMode:True Raw Idp DualMode:True Raw IPv6 DualMode:True Raw IPv6RoutingHeader DualMode:True Raw IPv6FragmentHeader DualMode:True Raw IPSecEncapsulatingSecurityPayload DualMode:True Raw IPSecAuthenticationHeader DualMode:True Raw IcmpV6 DualMode:True Raw IPv6NoNextHeader DualMode:True Raw IPv6DestinationOptions DualMode:True Raw ND DualMode:True Raw Raw DualMode:True ``` Results on core on my Windows 10 box: ``` Stream Unspecified DualMode:False Stream Unspecified DualMode:False Stream Unspecified DualMode:False Stream Tcp DualMode:False Dgram Unspecified DualMode:False Dgram Unspecified DualMode:False Dgram Unspecified DualMode:False Dgram Udp DualMode:False Raw Unspecified DualMode:True Raw Unspecified DualMode:True Raw Unspecified DualMode:True Raw Icmp DualMode:True Raw Igmp DualMode:True Raw Ggp DualMode:True Raw IPv4 DualMode:True Raw Tcp DualMode:True Raw Pup DualMode:True Raw Udp DualMode:True Raw Idp DualMode:True Raw IPv6 DualMode:True Raw IPv6RoutingHeader DualMode:True Raw IPv6FragmentHeader DualMode:True Raw IPSecEncapsulatingSecurityPayload DualMode:True Raw IPSecAuthenticationHeader DualMode:True Raw IcmpV6 DualMode:True Raw IPv6NoNextHeader DualMode:True Raw IPv6DestinationOptions DualMode:True Raw ND DualMode:True Raw Raw DualMode:True ```" +16854 area-System.Net Fix Dns_GetHostEntryAsync_NoneIPAddress_Fail test on Unix The APIs appear to be working fine, at least on Ubuntu where I just tried it; it's just we're throwing an internal exception derived from SocketException that contains more details, and the test was expecting exactly a SocketException. Fixed the test. Fixes https://github.com/dotnet/corefx/issues/10345 cc: @geoffkizer +16856 area-System.Diagnostics Failure in System.Diagnostics.Tests.ActivityTests.DiagnosticSourceStartStop @joperezr can you find the right owner for DiagnosticSource? This gave us a red badge this morning. This test may need some logging adding, and leave enabled. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win7_release/lastCompletedBuild/consoleText ``` xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Diagnostics.DiagnosticSource.Tests Discovered: System.Diagnostics.DiagnosticSource.Tests Starting: System.Diagnostics.DiagnosticSource.Tests System.Diagnostics.Tests.ActivityTests.DiagnosticSourceStartStop [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_win---75d58f69\src\System.Diagnostics.DiagnosticSource\tests\ActivityTests.cs(378,0): at System.Diagnostics.Tests.ActivityTests.DiagnosticSourceStartStop() Finished: System.Diagnostics.DiagnosticSource.Tests ``` +16857 area-System.IO Failure in WaitForChangedTests.Changed_Success @JeremyKuhne, @ianhays this gave us a red badge this morning. Perhaps this is just the intrinsic unreliability of FSW -- maybe there's a way to make it more robust, eg., try twice? ``` c# Assert.Equal(WatcherChangeTypes.Changed, t.Result.ChangeType); ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_ubuntu16.10_debug/lastCompletedBuild/consoleText ``` System.IO.Tests.WaitForChangedTests.Changed_Success [FAIL] Assert.Equal() Failure Expected: Changed Actual: 0 Stack Trace: /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.10_debug/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.WaitForChanged.cs(174,0): at System.IO.Tests.WaitForChangedTests.Changed_Success() ``` +16859 area-Serialization DCJS Throws NullReferenceException when Using ReflectionAsBackup @vitek-karas found the issue, > The problem is a NullRef in JsonClassDataConract.JsonFormatReaderDelegate (but similar issue is elsewhere as well): ``` else if (DataContractSerializer.Option == SerializationOption.ReflectionAsBackup) { tempDelegate = JsonDataContract.TryGetReadWriteDelegatesFromGeneratedAssembly(TraditionalClassDataContract).ClassReaderDelegate; tempDelegate = tempDelegate ?? new ReflectionJsonClassReader(TraditionalClassDataContract).ReflectionReadClass; ``` > The call to TryGetReadWriteDelegatesFromGeneratedAssembly returns null (which it should as the test I’m running don’t invoke sgen at all). The problem is that the code above calls .ClassReaderDelegate on it immediately without checking for null. So it crashes. +16860 area-Infrastructure Building on Windows with VS 2017 Hey guys, Just wanted to know what the requirements are for Building CoreFX on Windows with VS 2017, and maybe suggest an update to the docs here https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md. From a quick test, it seems that I need the `Desktop development with C++` workload, but also the `VC++ 2015.3 v140 toolset (x86,x64)` component. I tried installing only these individual packages but CMake wouldn't find the compiler (`No CMAKE_CXX_COMPILER could be found`): * Visual Studio C++ core features * VC++ 2015.3 v140 toolset (x86,x64) * VC++ 2017 v141 toolset (x86,x64) Regarding the DIA SDK, it seems the `Desktop development with C++` workload installs it in `C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\DIA SDK` and `build.cmd` finds it without any problem. Thanks! +16862 area-System.Net fix pinning bug in SocketPal.SendToAsync on Windows We weren't pinning the socketAddress before passing a pointer to it into WSASendTo. Fixed this, and modified SetUnmanagedStructures to always pin when using a socketAddress. Fixes #16306. +16863 area-Infrastructure Include the ArchGroup in innerloop CI jobs on Jenkins. This will help distinguish which architecture each CI job is configured to build for. +16864 area-Serialization DCJS_SuspensionManager Failed with ReflectionOnly on Uapaot ``` DataContractJsonSerializerTests.DCJS_SuspensionManager [FAIL] System.Runtime.Serialization.SerializationException : Element ':item' contains data of the 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:KeyValuePairOf stringanyType' data contract. The deserializer has no knowledge of any type that maps to this contract. Add the type corresponding to 'KeyValuePairOfstringanyType' to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding it to the list of known types passed to DataContractSerializer. Stack Trace: D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs(177,0): at System.Runtime.Serializa tion.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs(114,0): at System.Runtime.Serializa tion.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContextComplex.cs(42,0): at System.Runtime.Ser ialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, String name, String ns) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionReader.cs(345,0): at System.Runtime.Serialization.Reflectio nReader.ReflectionInternalDeserialize(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, CollectionDataContract collectionContract, Type type, String name, Stri ng ns) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionReader.cs(135,0): at System.Runtime.Serialization.Reflectio nReader.ReadCollectionItems(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString collectionItemName, XmlDictionaryString collectionItemNamespa ce, CollectionDataContract collectionContract, Object resultCollection, Boolean isReadOnlyCollection) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionReader.cs(97,0): at System.Runtime.Serialization.Reflection Reader.ReflectionReadCollectionCore(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString collectionItemName, XmlDictionaryString collectionIte mNamespace, CollectionDataContract collectionContract) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionReader.cs(75,0): at System.Runtime.Serialization.Reflection Reader.ReflectionReadCollection(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString collectionItemName, XmlDictionaryString collectionItemNam espace, CollectionDataContract collectionContract) ``` +16868 area-Infrastructure Convert Linux, OSX, and Windows test builds to use upload-tests.proj Additionally, added support for disabling cloud test upload-tests.proj via EnableCloudTest (for parity with previous setup). While I have tested the steps manually and used @chcosta's tool to make sure I got JSON formatting correctly, it doesn't seem possible to test this end-to-end until it's merged, or my branch is mirrored on VSO. @chcosta can you help test? @weshaggard, FYI. +16869 area-System.Data Remove Encoding.RegisterProvider from TdsParser The Encoding providers should be registered by the Application and not the library. If the library registers the providers for all the scenarios, this could lead to more data being loaded for encoding than what the application needs. Fixes : #16842 +16872 area-Infrastructure Add uap configuration for System.Net.HttpListener and System.Net.Mail Those two assemblies are part of the closure of netstandard and are not includded today in the uap layout build. We need to add configurations for them. - [x] System.Net.Mail - [x] System.Net.HttpListener +16874 area-System.Security Add example of signing and verifying XML with X509 Certificate Gets us closer to resolving https://github.com/dotnet/corefx/issues/16829 (improve code coverage) cc: @bartonjs @morganbr @tintoy @anthonylangsworth @peterwurzinger +16875 area-Serialization Fixed a bug with serializing Dictionary. For Json we need to add KeyValuePair to KnownTypes if the UnderLyingType is a Dictionary. We have code adding KeyValuePair as KnownType, but the code was excluded if #NET_Native. Fix #16864 +16877 area-System.Net Change Ssl test to determine if results vary Update this single test to determine impact; per https://github.com/dotnet/corefx/issues/16516 Will monitor for failures. The IPAddress.Any to .Loopback change is subtle, assuming the test machines only have a single network card\interface. However, I believe .Any goes through a different code path as it doesn't short-circuit like using Loopback does. The readBuffer was removed as it just throws an exception on background thread as connection is closed before it can finish. Also change to close TcpListener. cc @Priya91 @stephentoub +16878 area-System.Memory MemoryExtensions.SequenceCompare # Latest Proposal See https://github.com/dotnet/corefx/issues/16878#issuecomment-349414287 ## Problem: As of right now there is no function to efficiently compare memory. The result is that such comparisons are usually done on a byte by byte basis or even worse Enumerable.SequenceEqual, which performs really slow. ## Suggested APIs: ```c# class static SpanExtensions { static int SequenceCompareTo(this ReadOnlySpan first, ReadOnlySpan second); } ``` ## Design It would fit along nicely with other memory functions defined in Buffer such as memcpy or memmove. The arrays would have to be primitives and can be efficiently compared. ## Implementation Different implementations can be used for different lengths. Here are some examples: * Jump tables like [this](http://source.dot.net/#System.Private.CoreLib/src/System/Buffer.cs,276) for lengths <= 16 * comparisons in long*'s on x64, int*'s on x86 for shorter arrays * using SIMD-Enabled Vector Types for medium/longer arrays * CLR memcmp InternalCall for longer arrays. The individual thresholds would have to be profiled of course. # Original Proposal ```c# class static SpanExtensions { static int SequenceCompare(this ReadOnlySpan first, ReadOnlySpan second); } ``` [EDIT] Add C# syntax highlight for code by @karelz +16879 area-System.Security "Provide a way for sysadmins to manage the .Net Core ""My"" certificate store on non-Windows platforms" Title was: X509Store on Unix scans only for PFX files Currently, the only extension supported by the code is PFX. As far as I understand, this extension is commonly used for certificates that will contain a private key on Windows. On Unix I would expect certificate extensions such as .der or .pem, similar to the ones in OpenSSL's store. This is only an inconvenience as I've found that a .cer (base64 encoded) can be simply renamed to .pfx and placed in `~/.dotnet/corefx/cryptography/x509store/root` to simulate the My\Root store. https://github.com/dotnet/corefx/blob/2e8bfa2a38cb0909225202d2542bbe213696dfa0/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs#L98 +16880 area-System.Threading Add back System.Threading types for uapaot build. +16881 area-System.Threading Enable CdsSyncEtwBCLProvider for uapaot build of System.Threading This requires adding EventSource to System.Private.CoreLib. +16883 area-System.Xml Remove System.Xml.Xsl.XsltOld.Keywords Removes the unused class (https://github.com/dotnet/corefx/issues/16825) cc: @danmosemsft +16884 area-System.Data Add DataTable support to SqlBulkCopy. CC @saurabh500 @geleems +16885 area-System.Xml Fix XPathEvaluate bug on XNode Fixes https://github.com/dotnet/corefx/issues/16749 XPathEvaluate extension method for XNode returned incorrect results for XPath query of text nodes. The bug was introduced in .Net Core. The behavior difference is due to new code `foreach on t.parent.Nodes()` not being equivalent to the Desktop version. In the .NET Core version, `t.GetParent().Nodes()` returns all the nodes in `t`'s parent, including `t` itself which was previously returned in the method, causing this value to be returned twice. cc: @danmosemsft @krwq +16886 area-System.Collections Would it be possible to get rid of collection _syncRoot fields with ConditionalWeakTable? More of a question really because I'm not very familiar with `ConditionalWeakTable`, but from what I understand it can store key/value entries in such a way that the entries don't have to be kept alive. It also says [on MSDN](https://msdn.microsoft.com/en-us/library/dd287757(v=vs.110).aspx#Anchor_7) that the type is thread-safe. Given that `SyncRoot` is a rarely-used property (if I remember correctly @mikedn told me it was baggage from .NET Framework 1.0), maybe it would be beneficial to store it in a static `ConditionalWeakTable` separate from the object? e.g. ```cs class List { object ICollection.SyncRoot => SyncRootTable.GetSyncRoot(this); } static class SyncRootTable { static readonly ConditionalWeakTable s_table = new ConditionalWeakTable(); static object GetSyncRoot(object key) => s_table.GetValue(key, _ => new object()); } ``` +16887 area-Infrastructure Updating the Windows build instructions to clarify the requirements for VS2017. Resolves https://github.com/dotnet/corefx/issues/16860 +16888 area-System.Memory Span Copy method that copies as much as possible From https://github.com/dotnet/corefx/issues/16840#issuecomment-285225905 Whenever use CopyTo on Span, I wish the method Always succeeded, copied as much as it can, and returned an int indicating how much was copied. e.g. ``` int copied = 0; while(copied < source.Length) { copied += source.Slice(copied).CopyTo(destination); destination = GetMoreSpace(); } ``` ... and many similar scenarios. Without such CopyTo there is lots of ceremony around making sure the source is not larger than the destination. @davidfowl, @terrajobst, @jkotas, any thoughts? +16890 area-System.IO SerialPort: Port cant access when raised InvalidOperationException. (The Port is closed) I'm trying to send AT Commands using `SerialPort` class. I'm using `SerialPort.GetPortNames()` to get all available ports. I'm trying to open a serial port for modem and getting its BaudRate through `SafeFileHandle` and `kernel32.dll` with `CreateFile` and `GetCommProperties` method. It was good until I encountered `InvalidOperationException`. It was raised when I'm trying to read from `Read` or `ReadExistingByte` method then accidentally the port was removed. I call `Close` and `Dispose` method. Then I plugged again the modem. But when I try to get BaudRate again to connect to modem for the same port(without exiting execution), now it says that the `SafeFileHandle` is invalid. The weird thing is when I call `SerialPort.GetPortNames()` (after removing port), it returns the comport that I removed. I think there is still some code in `SerialPort` that holds the port. Any ideas? **NOTE** Im able to access the port when I try to close current debugging session the start again. Thanks. +16892 area-System.Data Slow Open Connection every 4 mintutes or so In this [SO post](http://stackoverflow.com/questions/42433948/azure-web-api-waiting-sql-connection-every-4-minutes-and-30-minutes), I described an anlysis where I observe that opening a connection is blocked on waiting for a long time every 4 minutes or so. However, I couldn't find out why and never got any answers either. +16895 area-System.Net [Port to 1.1] Ensure CURLOPT_TCP_NODELAY is set by CurlHandler Port https://github.com/dotnet/corefx/pull/15354 to the release/1.1.0 branch. cc: @geoffkizer, @mikeharder, @gkhanna79 +16896 area-System.Runtime Proposal: Add static ExceptionDispatchInfo.Throw(Exception) If you have an exception object and you want to throw it without overwriting its existing call stack and bucket information, you do: ```C# ExceptionDispatchInfo.Capture(exception).Throw(); ``` This is unnecessary ceremony and also incurs some additional unnecessary cost (though we're on an exceptional path so the cost doesn't matter as much). It'd be nicer if we could simply write: ```C# ExceptionDispatchInfo.Throw(exception); ``` I propose we add the following method: ```C# public sealed class ExceptionDispatchInfo { public static void Throw(Exception source); ... } ``` Its visible behavior would be identical to using Capture/Throw, so a valid implementation would be: ```C# public static void Throw(Exception source) => Capture(source).Throw(); ``` but a more efficient implementation could be provided that didn't need to allocate an EDI, copy all of the Exception's state into it, and then copy all of the state back. +16897 area-System.Net unmanaged resource leak when HttpClient is not disposed "```c# [Test] public void Test() { TestInternal().Wait(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); dotMemory.Check(m => { Console.WriteLine(m.GetObjects(a => a.Type.Like(""System.Net.Http.HttpClient"")).ObjectsCount); //always 0 Console.WriteLine(m.GetObjects(a => a.Type.Like(""System.Net.Connection"")).ObjectsCount); //0 on Dispose(), 2 on Dispose(false) or without Dispose }); } private static async Task TestInternal() { var client = new HttpClient(); var s = await client.GetStringAsync(""http://msdn.com""); //client.Dispose(); /*client.GetType() .GetMethod(""Dispose"", BindingFlags.NonPublic | BindingFlags.Instance) .Invoke(client, new object[] {false});*/ } ``` ![a001a-clip-78kb](https://cloud.githubusercontent.com/assets/991922/23751339/e9da0ecc-04e1-11e7-9a34-99aed0636545.png) ![003ed-clip-185kb](https://cloud.githubusercontent.com/assets/991922/23751446/74d90988-04e2-11e7-9323-a00ea38e6813.png) HttpClient missing finalizer and Dispose(false) called from finalizer will do nothing" +16898 area-System.Net Audit System.Net throws losing stack traces There are a bunch of places throughout the System.Net libraries where exceptions are captured and later thrown, using `throw e;`. This overwrites their stack trace and bucket information, making it harder to diagnose problems when they occur. Over time we've chipped away at these, so there are many fewer now than there used to be, but some still remain. I've audited all of the System.Net libs, and fixed all the locations I found where this pattern was being employed, replacing them with usage of ExceptionDispatchInfo to avoid losing the call stack data. There are still some `throw e`s I left, but those were typically of a form where it was obvious no data would be lost, e.g. the exception was just instantiated a few lines earlier. There are likely also a few straggling cases, e.g. where `throw SomeFunction()` is used and `SomeFunction()` returns a cached exception instance, but we can address those on a case-by-case basis as we find them. Fixes https://github.com/dotnet/corefx/issues/5606 cc: @geoffkizer, @cipop, @davidsh, @Priya91 +16900 area-Infrastructure When call build.cmd -skiptests, build stops with error PE file is already strong-name signed Today I pull coreclr and corefx, build them on my Win10 with VS2015u3, The build of coreclr finished without error, But the build of corefx failed with the following strong-name sign error like following: > Running: U:\OpenSrcResearch\MicrosoftOnGithub\corefx\Tools\msbuild.cmd /nologo /verbosity:minimal /clp:Summary /maxcpucount /nodeReuse:false /l:BinClashLogger,Tools\net45\Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:SkipTests=true /p:OSGroup=Windows_NT /p:TargetOS=Windows_NT /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err > [21:50:05.58] Verifying all auto-upgradeable dependencies... > [21:50:18.36] Verifying all auto-upgradeable dependencies... Done. > [21:50:18.36] Restoring all packages... > [21:50:32.95] Restoring all packages...Done. > U:\OpenSrcResearch\MicrosoftOnGithub\corefx\Tools\sign.targets(70,5): error : U:\OpenSrcResearch\MicrosoftOnGithub\corefx\bin/obj/ref/Microsoft.CSharp/4.0.0.0/Microsoft.CSharp.dll: PE file is already strong-name signed. [U:\OpenSrcResearch\MicrosoftOnGithub\corefx\src\Microsoft.CSharp\ref\Microsoft.CSharp.csproj] > Microsoft.VisualBasic -> U:\OpenSrcResearch\MicrosoftOnGithub\corefx\bin\ref\Microsoft.VisualBasic\10.0.0.0\Microsoft.VisualBasic.dll > U:\OpenSrcResearch\MicrosoftOnGithub\corefx\Tools\sign.targets(70,5): error : U:\OpenSrcResearch\MicrosoftOnGithub\corefx\bin/obj/AnyOS.AnyCPU.Debug/Microsoft.VisualBasic/Microsoft.VisualBasic.dll: PE file is already strong-name signed. [U:\OpenSrcResearch\MicrosoftOnGithub\corefx\src\Microsoft.VisualBasic\src\Microsoft.VisualBasic.vbproj] +16908 area-System.Diagnostics Fix for issue 16856 (Test fails because duration is 0) The problem seems to be that time granularity rounds down to zero. However we really do want 0 durations to mean 'EndTime was not set, so when we set the end time we want to insure it is postitive under all contidions. +16909 area-Meta Fix #3862 Replace double-check lock with lazy initialization. Final installment of changes to replace double-check lock usage with lazy initialization. Fixes #3862 @stephentoub @karelz Please review. +16910 area-System.Linq Interpreting build of S.Linq.Expressions (for UAP) is broken "`` should be set in the csproj for uap/uapaot but the build is broken. The correct fix is not obvious without some investigation so for now I'm leaving it as ``` true false ```" +16911 area-System.Net Implement ReceiveMessageFromAsync with buffer list on Unix Fixes #16727 cc: @geoffkizer, @Priya91 +16912 area-Infrastructure Inspect the files in .NET Core App and remove any unnecessary ones We are getting close to a preview release so we should inspect all the files in the shared framework (in particular the private netcoreapp package from corefx) and make sure there isn't anything that shouldn't be there. Some potential candidates for removal are: System.Security.Permissions System.Text.Encoding.CodePages. cc @ericstj @Petermarcu +16913 area-System.IO dotnet core 1.1.0 and net461 now gets System.IO.FileSystem System.TypeLoadException "@jeremyBass commented on [Thu Mar 09 2017](https://github.com/dotnet/coreclr/issues/10062) I hope this is the right place for this issue. I have been betting my head on the wall on this. I will say that I have this on [stackoverflow](http://stackoverflow.com/q/42693085/746758) as well, but believe it may be helpful to have it logged here. I realize there are a few other issues that seem related, but they are not 100% the same and I got no traction on a fix/workaround. I keep getting this error on the server [![enter image description here][1]][1] > Unhandled Exception: System.TypeLoadException: Could not load type 'System.IO.Di rectory' from assembly 'System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at fais.printing_services.Program.Main(String[] args) I have done ever trick I can think of, followed all the newest issues to resolve with no luck. Here is my project file: { ""userSecretsId"": ""aspnet-fais.printing_services-6f6dbf21-da98-45d2-a187-08ae49d09d62"", ""dependencies"": { ""DataTables.AspNet.AspNetCore"": ""2.0.2"", ""Microsoft.ApplicationInsights.AspNetCore"": ""2.0.0"", ""Microsoft.AspNetCore.Authentication.Cookies"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Identity.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.1"", ""Microsoft.AspNetCore.Routing"": ""1.1.0"", ""Microsoft.AspNet.Session"": ""1.0.0-*"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.1.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.1.0"", ""Microsoft.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Relational.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Tools"": { ""type"": ""build"", ""version"": ""1.1.0-preview4-final"" }, ""Microsoft.Extensions.Caching.Memory"": ""1.1.0-*"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.1.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.1.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.1.0"", ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.Extensions.Logging.Console"": ""1.1.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.1.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"", ""Microsoft.VisualStudio.Web.BrowserLink.Loader"": ""14.1.0"", ""Microsoft.VisualStudio.Web.CodeGeneration"": ""1.1.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": ""1.1.0-preview4-final"", //""Microsoft.VisualStudio.Web.CodeGeneration.Design"": ""1.1.0-msbuild3-final"", ""Microsoft.VisualStudio.Web.CodeGenerators.Mvc"": ""1.1.0-preview4-final"", ""Microsoft.AspNetCore.Session"": ""1.1.0"", ""Microsoft.NETCore"": ""5.0.1-rc2-24027"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1-rc2-24027"", ""BundlerMinifier.Core"": ""2.4.337"", ""Microsoft.AspNetCore.ResponseCompression"": ""1.0.1"", ""Microsoft.AspNetCore.Cors"": ""1.1.1"", ""hiqpdf"": ""10.6.0"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""tools"": { ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.1.0-preview4-final"", ""imports"": [ ""portable-net45+win8"" ] }, ""Microsoft.EntityFrameworkCore.Tools.DotNet"": ""1.1.0.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": { ""version"": ""1.1.0-msbuild3-final"", ""imports"": [ ""portable-net45+win8"" ] } }, ""frameworks"": { ""net461"": { ""dependencies"": { }, ""frameworkAssemblies"": { ""System.Drawing"": ""4.0.0.0"" } }, ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"", ""net461"" ], ""dependencies"": { ""Microsoft.NETCore.App"": ""1.1.0"", ""CoreCompat.System.Configuration"": ""4.2.3-r4"" } } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""**/*.cshtml"", ""appsettings.json"", ""web.config"" ] }, ""runtimes"": { ""win10-x64"": {} }, ""scripts"": { ""prepublish"": [ ""bower install"", ""dotnet bundle"" ], ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } So the reason for `.net4.6.1` is `hiqpdf`, it is the only thing that is really the reason i had to load it. My app runs on IISExpress, but as soon as i publish it to the IIS box it gets as `HTTP Error 502.5 - Process Failure`. I run the exe in the command prompt as Microsoft asks as got what i put up here. I keep thinking i just have to move the right item in place and it will work on the server. What is the difference? Why does it would great locally but falls on it's face on the server? Can i include System.IO.FileSystem at a version that will fix this? (which i have tried and failed to). I know the project.json file needs some clean up again, but it is working in one spot so i figured I would keep it here. **Server Details:** [![enter image description here][2]][2] [![enter image description here][3]][3] [![enter image description here][4]][4] [1]: https://i.stack.imgur.com/gcg9a.png [2]: https://i.stack.imgur.com/dWgMs.png [3]: https://i.stack.imgur.com/HKSpG.png [4]: https://i.stack.imgur.com/c8NZj.png **Other information** I figured it would be worth noting thing i have done that wouldn't be known from this: - cleared out the nuget cache from the user path - cleared the bin - down graded what i thought i could - tried to include the `System.IO.File` directly at v. `4.3.0` but it downgrades to `4.0.0.1` I believe. " +16914 area-Serialization To Remove System.Xml.XmlSerializer.Tests.settings.targets We'd like to remove System.Xml.XmlSerializer.Tests.settings.targets so that the XmlSerializer test projects would have the same structure as others. As part of the issue, we would need to add ProjectReferences in System.Xml.XmlSerializer.Tests.csproj. /cc: @zhenlan +16916 area-System.Linq [NetFX compat]: EnumerableQuery((IEnumerable)null).GetEnumerator() difference in behavior The following code has a different behavior in NetFX: ```cs IQueryable query = new EnumerableQuery((IEnumerable)null); var enumerator = query.GetEnumerator(); ``` If we call `GetEnumerator` on an `IQueryable` instance that has a null `IEnumerable` in CoreFX we would throw an `InvalidOperationException`, but in NetFX as stated in the MSDN Documentation it will not throw: > Returns an enumerator that can iterate through the associated `IEnumerable` collection, or, if it is null, through the collection that results from rewriting the associated expression tree as a query on an `IEnumerable` data source and executing it. I've tried to execute the sample code I included before in a .NET 4.6.2 Console Application and it will cause an `StackOverflowException`. Also this is causing in one of our `System.Linq.Queryable` tests will cause it to hang forever. [Test source code](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs#L23-L29) cc: @tarekgh @danmosemsft +16917 area-System.Security Add HashAlgorithmName overloads for Rfc2898DeriveBytes ctor This adds support for using (HMAC) SHA256, SHA384, SHA512 in PBKDF2. (HMAC)MD5 isn't being enabled at this time. We can re-evaluate that later, but since this API change is about letting newer algorithms in it doesn't seem like letting the older ones in is high-value. This is staying as a managed implementation in this change, switching to using native implementations can easily be done as a followup given the new tests. Fixes #9438. +16918 area-System.Data SNI identity package not being built The SNI identity package at https://github.com/dotnet/corefx/blob/master/src/Native/pkg/runtime.native.System.Data.SqlClient.sni/runtime.native.System.Data.SqlClient.sni.pkgproj was last built on 1/13/2017 and has a version 4.4.0-beta-24913-02 This identity package doesn't reference the latest SNI runtime assemblies which are being uploaded to myget from an internal build system. As a result, the sni identity package still points to version 4.3.0-xxxx of sni.dll. The current version is `4.4.0-beta-25007-02` from dependencies.props cc @gkhanna79 @weshaggard @corivera @ericstj @dagood +16919 area-System.Security CommonSecurityDescriptor BinaryForm returning invalid output Several of the CommonSecurityDescriptor tests are failing by hitting a Debug statement [in the GetsddlForm code](https://github.com/dotnet/corefx/blob/master/src/System.Security.AccessControl/src/System/Security/AccessControl/SecurityDescriptor.cs#L244) that throws when the Win32 `ConvertSdToSddl` call returns an error. These same tests pass when run against Desktop, so this is both a regression and an unintended failure/debug failure leak. +16920 area-System.Diagnostics Comply with changes in Id structure and length This change makes Activity.Id generation in compliance with [Hierarchical RequestId](https://github.com/lmolkova/correlation/blob/master/hierarchical_request_id.md) - root delimiter was changed to `|` to avoid collisions with base64 chars set (`/` is one of the base64) - new delimiter for external parentId was added: `_` - delimiter is now set AFTER suffix, to improve log query experience. E.g. If there was a trace with Id 123.4.5 and other with Id 123.4.56, it was not possible to get traces that belong to 123.4.5 only - Request-Id max length is now 1024 It also solves some issues mentioned in #16500: 1. initial s_currentRootId value is randomized on different process instances. 2. s_currentRootId changed from int to long . It was possible that on a heavily loaded process, running for months, Ids could repeat because of int overflow. @vancem please have a look +16921 area-System.Security Re-enable AccessControl tests These tests were ignored for a while then disabled because they were causing a bunch of failures. I'm re-enabling the ones that don't fail and ActiveIssuing the ones that do fail so we at least have some coverage here. The tests that are failing are doing so because of https://github.com/dotnet/corefx/issues/16919 which is a source bug. resolves https://github.com/dotnet/corefx/issues/15041 cc: @danmosemsft @joperezr @dennisdietrich +16922 area-System.Security Fix marshaling/pinning in GetSignerInPKCS7Store to avoid corrupted data CryptMsgGetParam stores its output data at the provided address, and this data includes pointers into regions of the data written. Since the array we've provided isn't pinned, it can be moved after the call, effectively invalidating the pointers in the byte[] into which the data was stored before then effectively pass those (now invalid) pointers back to the OS for it to get data from. Fixes https://github.com/dotnet/corefx/issues/2667 cc: @bartonjs, @steveharter +16923 area-System.Diagnostics System.Diagnostics.DiagnosticSource causes a cycle This package recently started depending on NETStandard.Library rather than individual packages, but it can’t, because it’s referenced by NETStandard.Library itself. We need to figure out a solution here. +16924 area-System.Linq Expression.Lambda throws NRE if TDelegate is private "See the following F# code: ```f# open System.Linq.Expressions open Microsoft.FSharp.Linq.RuntimeHelpers [] module private MyDelegates = type SimpleDelegate = delegate of unit -> bool let body = LeafExpressionConverter.QuotationToExpression <@ true @> let private lambda = Expression.Lambda(body, Seq.empty) printfn ""%A"" lambda ``` The exception: ``` System.NullReferenceException: Object reference not set to an instance of an object. at System.Dynamic.Utils.CacheDict`2.TryGetValue(TKey key, TValue& value) at System.Dynamic.Utils.TypeExtensions.GetParametersCached(MethodBase method) at System.Linq.Expressions.Expression.ValidateLambdaArgs(Type delegateType, Expression& body, ReadOnlyCollection`1 parameters) at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable`1 parameters) at .$FSI_0001.main@() in c:\code\scratch\lambda.fsx:line 11 ``` If the `MyDelegates` module is made public, the exception does not occur. The exception occurs because of [src/System/Linq/Expressions/LambdaExpression.cs#L879](https://github.com/dotnet/corefx/blob/720474a2b49f065c63697194ec098d4e6154404c/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs#L879). `GetMethod(""Invoke"")` returns null as the Invoke method is not accessible. I believe a null check needs to be added - if the result is null, then throw an exception that the type is not accessible. Better yet, would it be possible to pass in BindingFlags.NonPublic to get the Invoke method?" +16925 area-System.Security Rfc2898DeriveBytes should reuse arrays during chained HMAC invocations. Rfc2898DeriveBytes provides an implementation for the PBKDF2 algorithm. This algorithm does quite a lot of HMAC.ComputeHash calls, each of which marshals back and forth to native code and creates a byte\[\] to emit the answer into. * Windows: [BCryptDeriveKeyPBKDF2](https://msdn.microsoft.com/en-us/library/windows/desktop/dd433795(v=vs.85).aspx) * macOS: [CCKeyDerivationPBKDF](http://stackoverflow.com/documentation/swift/7053/pbkfd2-key-derivation) * Other-\*nix (OpenSSL): [PKCS5_PBKDF2_HMAC](https://www.openssl.org/docs/man1.1.0/crypto/PKCS5_PBKDF2_HMAC.html) (present in 1.0.1) +16926 area-Meta Try running tests that use pinning under GCStress As suggested in https://github.com/dotnet/corefx/pull/16922#issuecomment-285491684 There have been several bugs found through missing pinning in Crypto or Networking. We should try running at least those tests under `set COMPLUS_GCStress=3` It may be it's too slow -- but we could just let it run if it's merely slow. +16928 area-System.Net [NetFX compat]: HttpWebRequest.GetRequestStreamAsync() hangs in desktop "When creating multiple `HttpWebRequest` instances and calling `GetRequestStreamAsync()` it hangs in desktop. There is a test class that does this and when running it in desktop it just hangs forever because all the tests create an `HttpWebRequest` instance and call `GetRequestStreamAsync().GetAwaiter().GetResult()` -- [source code](https://github.com/dotnet/corefx/blob/master/src/System.Net.Requests/tests/RequestStreamTest.cs#L107-L112) the project test is `System.Net.Requests.Tests` I did this on a simple Console App targeting desktop: ```cs static void Main(string[] args) { for(int i = 0; i < 100; i++) { var request = GetRequest(); var stream = request.GetRequestStreamAsync().GetAwaiter().GetResult(); Console.WriteLine(stream.CanWrite); stream.Dispose(); //request.Abort() } } public static HttpWebRequest GetRequest() { HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri("""")); request.Method = ""POST""; return request; } ``` And it will also hang. If I just enable `request.Abort()` when I'm done using the request it will stop hanging. I don't know if that is a good practice, but could be a workaround in the tests for desktop. If we change the `ServicePointManager.DefaultConnectionLimit` to be a 100 it would also fix it but I don't think that would be a good solution. After talking with @stephentoub he explained there was a difference in behavior in Core: > My guess here is that disposing of the request stream doesn't release the underlying connection that HttpWebREquest opens to the server, and that the only way to do that would be to then get the response and dispose of that. That's why changing the connection limit allowed you to get further, because the system wasn't throttling you to the two connections you already opened. On core, HttpWebRequest is built on top of HttpClient, and it's not going to actually open the connection until you've written all your data. That is why the test don't hang in Core. There is a related issue to this https://github.com/dotnet/corefx/issues/11873 cc: @davidfowl @CIPop @tarekgh " +16929 area-System.Net Add better error message for failing ping test I'm adding some better logging to the failure in this test since we don't really know why it failed. It looks race-conditiony but I'd rather be sure about it before modifying the test. Related to https://github.com/dotnet/corefx/issues/16401. @steveharter @Priya91 +16930 area-System.Console Fix Console WindowWidth/Height paramName "Looks like we messed up the paramname when we did the switch to nameof in netcore. It used to be ""width""/""height"" in full framework but we set it to ""value"" which is both less helpful and the cause of a desktop test failure/discrepancy. resolves https://github.com/dotnet/corefx/issues/15114 cc: @tarekgh @stephentoub " +16932 area-System.Net Disable another Net.Security test with known issue. https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4435/testReport/junit/System.Net.Security.Tests/SchSendAuxRecordTest/SslStream_ClientAndServerUsesAuxRecord_Ok/ failed from known issue: https://github.com/dotnet/corefx/issues/16516 +16933 area-System.Security X509Certificate2.PrivateKey should not return ECDSA Make the PrivateKey property match netfx in not returning ECDSA, fix that it should return null (regardless of algorithm) when HasPrivateKey is false, and move redundant code in the PAL into the PAL-calling layer. Fixes #14283. +16934 area-System.IO [NetFX compat]: Desktop doesn't have cancellation support. There is two tests in `System.IO.Pipes` that hang forever when running in desktop. Desktop doesn't have cancellation support and this tests are trying to cancel a Task through a `CancellationToken`. * [Test 1](https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs#L526-L561) * [Test 2](https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs#L624-L657) We could consider adding this support on Desktop. cc: @stephentoub @tarekgh +16936 area-System.Data Make Managed SNI the default network impl in SqlClient The change changes the default implementation of SNI on Windows to Managed SNI. The behavior can be changed back to Native SNI by toggling the AppContext Switch `System.Data.SqlClient.UseLegacyNetworkingOnWindows` Fixes https://github.com/dotnet/corefx/issues/16129 cc @corivera +16937 area-System.Data Fix parsing failures with Named Pipe paths in SqlClient.SNIProxy Explanation of changes inline. +16938 area-System.Net Adding System.Net.Mail to the uap and uapaot closures cc: @danmosemsft related issue: #16872 This solves just part of the issue since we still need to fix System.Net.HttpListener, but I'll do that in a separate PR. +16939 area-Infrastructure Add separate symbol index/archive build leg Uses BuildTools functionality to publish Windows platform symbols from the build's symbol packages to the Microsoft official symbol server. Unlike https://github.com/dotnet/corefx/pull/16388 (which I reverted), this adds it in a new build leg. It still takes ~30 minutes to complete, but now it runs in parallel to package publishing and dotnet/versions updating. Letting dotnet/versions publish succeed even if this indexing leg fails is fine for `master` builds, but it could be a problem if it happened to a release/servicing build (and if we don't require all of a build's legs to be green to consider it release-worthy). In this worst case scenario, it's still possible to re-run this build leg or even index/archive the symbols manually, so I'm not concerned about it. I left the symbol publishing in the Windows leg active for now so we can compare what's indexed by both approaches and see what the gap is. +16940 area-System.Data SqlClient manual test run in the CI All the SqlClient tests in Manual Tests, which can be run in the CI, should be made to do so. More details about the tests to follow in this issue. +16941 area-Infrastructure Change pool to official OSX build pool Change over to the new pool /cc @bartonjs +16943 area-System.Security Add more tests to the PublicKey class for ECDSA certs. Also adds a couple `using` statements that were missing. +16944 area-Infrastructure Consider adding PInvoke check against UWP list for tests built for UWP We do not run the PInvoke checker using the UWP list against tests as they do not need to go through store validation. However they do need to run in appcontainer and it's possible that they might end up using calls that do not work correctly there. It may be worth enabling the checker and baselining existing PInvokes so we think before we add any more. Enabling this is just flipping a property in codeanalysis.targets. @jkotas worth it? https://github.com/dotnet/corefx/pull/16704 +16945 area-System.Net Test: System.Net.Sockets.Tests.SendReceiveEap.SendToRecvFrom_Datagram_UDP(loopbackAddress: ::1) failed in CI Failed test: System.Net.Sockets.Tests.SendReceiveEap.SendToRecvFrom_Datagram_UDP(loopbackAddress: ::1) Configuration: OuterLoop_CentOS7.1_debug ([build#123](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_debug/123/testReport/)) Message: ~~~ System.Net.Sockets.Tests.SendReceiveEap.SendToRecvFrom_Datagram_UDP(loopbackAddress: ::1) [FAIL] Assert.True() Failure Expected: True Actual: False ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_centos7.1_debug/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs(148,0): at System.Net.Sockets.Tests.SendReceive.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_debug/123/consoleText +16946 area-System.Security DSA cert.PublicKey.Key throws NotSupportedException on non-Windows systems. There was already a test, but it was marked as PlatformSpecific to Windows. Seeing no other issue tracking this, here's a new one. +16947 area-System.Net In Web Request there is no way to set the Content-Type header without Content "## Scenario I want to do an equivalent of ``` curl -X POST https://api.dropboxapi.com/2/team/get_info --header ""Authorization: Bearer $AUTH_TOKEN"" ``` Source: https://www.dropbox.com/developers/documentation/http/teams#team-get_info ## Problem Currently there is no way to do it. ## Details I need to set Content-Type header on a request without setting Content. Currently there is no way to do it, because to setup the Content-Type, I should call `request.Content.Headers['Content-Type']`. But if `Content` is not null, the body would not be null. If I do set this up and send empty body, I will get an error: ``` Error in call to API function ""team/get_info"": request body: could not decode input as JSON ``` If I don't set it up and send request with no Content, I'm getting this error: ``` Error in call to API function ""team/get_info"": Bad HTTP ""Content-Type"" header: ""application/x-www-form-urlencoded"". Expecting one of ""application/json"", ""application/json; charset=utf-8"", ""text/plain; charset=dropbox-cors-hack"". ``` Originally reported at https://github.com/PowerShell/PowerShell/issues/3131 this appeared to be a corefx problem." +16948 area-System.Collections ImmutableHashSet inconsistently accepts and rejects null values It is possible to create an `ImmutableHashSet` containing a null value using `ImmutableHashSet.CreateRange` and `Union`. However, other methods of doing so (`Add`, `Create(T)`) result in `ArgumentNullException`: ``` var set = ImmutableHashSet.Empty; set = set.Add(null); // throws set = set.Union(ImmutableHashSet.CreateRange(new string[] { null })); // adds null ``` Similarly, trying to remove a null with `Remove` throws but the null can be removed using `Except`. This seems like a bug. I think these sets should allow null as an element since this can be useful functionality (note that `HashSet` allows null elements). +16949 area-Meta S.Linq.Expressions and S.Xml.XmlSerializer need uapaot configuration adding "These two projects clearly are missing a uapaot configuration (on top of their uap configuration). I noticed S.Linq.Expressions.csproj ```xml $(DefineConstants);FEATURE_DYNAMIC_DELEGATE ``` Same in S.Xml.XmlSerializer.csproj ```xml ```" +16950 area-Infrastructure TESTING - DO NOT MERGE TESTING - DO NOT MERGE +16951 area-System.Diagnostics DiagnosticSourceStartStop #16856 Fix comparison with DateTime.UtcNow +16953 area-System.Net Unhandled exception from IPEndPointExtensions.Create in Socket tests ``` Unhandled Exception: System.ArgumentException: The AddressFamily Unspecified is not valid for the System.Net.IPEndPoint end point, use InterNetwork instead. Parameter name: socketAddress at System.Net.Sockets.IPEndPointExtensions.Create(EndPoint thisObj, SocketAddress socketAddress) in C:\users\stoub\Source\repos\corefx\src\Common\src\System\Net\Internals\IPEndPointExtensions.cs:line 33 at System.Net.Sockets.AcceptOverlappedAsyncResult.PostCompletion(Int32 numBytes) in C:\users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\AcceptOverlappedAsyncResult.Windows.cs:line 79 at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32 numBytes, SocketError socketError) in C:\users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\BaseOverlappedAsyncResult.Windows.cs:line 139 at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) in C:\users\stoub\Source\repos\corefx\src\System.Net.Sockets\src\System\Net\Sockets\BaseOverlappedAsyncResult.Windows.cs:line 127 at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) ``` +16954 area-System.Net Fix pinning in BaseOverlappedAsyncResult.CompletionCallback Some overloads of PostCompletion rely on the pinning configured by SetUnmanagedStructures, which means the call to it needs to come before the call to ReleaseUmanagedStructures, or else it could end up relying on the addresses of unpinned objects. Fixes https://github.com/dotnet/corefx/issues/16953 cc: @geoffkizer, @cipop, @Priya91 +16956 area-Infrastructure Dumpling downloaded over and over? "https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/4347/consoleFull#-6109453532d31e50d-1517-49fc-92b3-2ca637122019 All the way through the log I see this (only one test actually failed) ``` 19:13:56 CollectDumps 0 System.Threading.Timer.Tests 19:13:56 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/bin/AnyOS.AnyCPU.Debug/System.Threading.Timer.Tests/netstandard /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Threading.Timer/tests 19:13:56 Dumpling not found, installing... 19:13:56 --2017-03-09 19:13:56-- https://dumpling.azurewebsites.net/api/client/dumpling.py 19:13:56 Resolving dumpling.azurewebsites.net... 104.40.84.133 19:13:56 Connecting to dumpling.azurewebsites.net|104.40.84.133|:443... connected. 19:13:56 HTTP request sent, awaiting response... 200 OK 19:13:56 Length: 46584 (45K) [application/octet-stream] 19:13:56 Saving to: 'dumpling.py' 19:13:56 19:13:56 0K .......... .......... .......... .......... ..... 100% 1.12M=0.04s 19:13:56 19:13:56 2017-03-09 19:13:56 (1.12 MB/s) - 'dumpling.py' saved [46584/46584] 19:13:56 19:13:56 Traceback (most recent call last): 19:13:56 File ""dumpling.py"", line 18, in 19:13:56 import requests 19:13:56 ImportError: No module named requests 19:13:56 python: can't open file '/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/tempHome/.dumpling/dumpling.py': [Errno 2] No such file or directory 19:13:56 executing ulimit -c unlimited 19:13:56 Dumpling.sh: line 24: /proc/self/coredump_filter: No such file or directory ``` @mellinoe " +16958 area-System.Diagnostics Failure in System.Diagnostics.Tests.ProcessTests.TestRootGetProcessById in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/4347/consoleFull#-6109453532d31e50d-1517-49fc-92b3-2ca637122019 . ``` System.Diagnostics.Tests.ProcessTests.TestRootGetProcessById [FAIL] 19:19:29 Assert.True() Failure 19:19:29 Expected: True 19:19:29 Actual: False 19:19:29 Stack Trace: 19:19:29 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Diagnostics.Process/tests/ProcessTestBase.cs(33,0): at System.Diagnostics.Tests.ProcessTestBase.Dispose(Boolean disposing) 19:19:29 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/Common/tests/System/IO/FileCleanupTestBase.cs(41,0): at System.IO.FileCleanupTestBase.Dispose() 19:19:29 at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) 19:19:43 Finished: System.Diagnostics.Process.Tests 19:19:43 19:19:43 === TEST EXECUTION SUMMARY === 19:19:43 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/Tools/tests.targets(247,5): warning : System.Diagnostics.Process.Tests Total: 108, Errors: 0, Failed: 1, Skipped: 0, Time: 625.446s [/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj] ``` XUnit creates the test fixture (class) for each test invoked. After the test completes, it disposes the class: https://github.com/xunit/xunit/blob/master/src/xunit.execution/Sdk/Frameworks/Runners/TestInvoker.cs#L216 This test doesn't make any processes but its base class makes one that sleeps 5 minutes (for no obvious reason) https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/tests/ProcessTestBase.cs#L19 In dispose of the base class it kills the process if necessary then waits 5 minutes if necessary https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/tests/ProcessTestBase.cs#L33 This seems pretty random. Is the machine so overloaded that it takes over 5 minutes to kill the process? @Priya91 +16959 area-Meta Add uapaot configurations to two projects that require them "Fixes https://github.com/dotnet/corefx/issues/16949 Except it won't build S.L.Expressions in uapaot because it can't resolve ` ` `referencefromruntime.targets` is receiving the following `_referencePathFromRuntime` from invoking `external\runtime\runtime.depproj`. DynamicDelegate isn't on the list. I can't figure out how `runtime.depproj` is coming up with this list. @joperezr ? `C:\git\corefx\packages\Microsoft.TargetingPack.Private.NETNative\1.1.0-beta-25109-00\lib\uap10.1\ System.Private.CoreLib.dll;C:\git\corefx\packages\Microsoft.TargetingPack.Private.NETNative\1.1.0-beta-25109-00\lib\uap10.1\System.Private.Interop.dll;C:\git\core fx\packages\Microsoft.TargetingPack.Private.NETNative\1.1.0-beta-25109-00\lib\uap10.1\System.Private.Threading.dll`" +16960 area-System.Data Test failure: System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.ExceptionTest/ExceptionTests` has failed. Assert.Throws() Failure\r Expected: typeof(System.Data.SqlClient.SqlException)\r Actual: typeof(System.TypeInitializationException): The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. Stack Trace: at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.SqlClient.Tests.ExceptionTest.GenerateConnectionException(String connectionString) at System.Data.SqlClient.Tests.ExceptionTest.<>c__DisplayClass5_0.b__0() Build : Master - 20170310.01 (Core Tests) Failing configurations: - Windows_NT - x86-Release - x86-Debug - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170310.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.ExceptionTest~2FExceptionTests +16961 area-System.Runtime Test failure: System.Tests.SetEnvironmentVariable/ModifyEnvironmentVariable_AndEnumerate(target: Process) Opened on behalf of @Jiayili1 The test `System.Tests.SetEnvironmentVariable/ModifyEnvironmentVariable_AndEnumerate(target: Process)` has failed. has the key we entered\r Expected: True\r Actual: False Stack Trace: at System.Tests.SetEnvironmentVariable.<>c__DisplayClass8_0.b__0() at System.Tests.SetEnvironmentVariable.ExecuteAgainstTarget(EnvironmentVariableTarget target, Action action, Action cleanUp) at System.Tests.SetEnvironmentVariable.ModifyEnvironmentVariable_AndEnumerate(EnvironmentVariableTarget target) Build : Master - 20170310.01 (Core Tests) Failing configurations: - Windows_NT - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170310.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.SetEnvironmentVariable~2FModifyEnvironmentVariable_AndEnumerate(target:%20Process) +16962 area-System.Runtime Test failure: System.Tests.TimeZoneInfoTests/IsDaylightSavingTime_CatamarcaMultiYearDaylightSavings Opened on behalf of @Jiayili1 The test `System.Tests.TimeZoneInfoTests/IsDaylightSavingTime_CatamarcaMultiYearDaylightSavings` has failed. Test with the zone America/Argentina/Catamarca and date 10/1/46 4:00:00 AM failed Expected: True Actual: False Stack Trace: at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST) in /root/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs:line 1977 at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CatamarcaMultiYearDaylightSavings() in /root/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs:line 1685 Build : Master - 20170310.01 (Core Tests) Failing configurations: - Linux - x64-Debug - x64-Debug - x64-Release - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170310.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.TimeZoneInfoTests~2FIsDaylightSavingTime_CatamarcaMultiYearDaylightSavings +16963 area-Infrastructure Updating CoreClr dependencies to servicing-25110-01 +16964 area-Serialization Delete another obsolete ApiCompatBaseline +16965 area-Infrastructure Update CoreClr to servicing-25110-01 (release/1.1.0) +16967 area-System.Threading System.NotSupportedException when I want to load Assembly from Stream "Hi everyone, I would like to load a DLL file from http://localhost:8080/bin/ and instantiate classes and functions in my .Net Core application. But when I want to get the assembly I get this exception `System.NotSupportedException: Specified method is not supported.` Here the code : ```c# string url = ""http://localhost:8080/test-dll/Test.dll""; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = ""GET""; using (var response = (HttpWebResponse)(await Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null))) { Stream answer = response.GetResponseStream(); var myAssembly= AssemblyLoadContext.Default.LoadFromStream(answer); } ``` How am I supposed to do that ? Thanks in advance ! " +16968 area-System.Net ClientAsyncAuthenticate_MismatchProtocols_Fails test failed in CI on Windows https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/4484/consoleText ``` System.Net.Security.Tests.ClientAsyncAuthenticateTest.ClientAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol: Tls12, clientProtocol: Tls11, expectedException: typeof(System.Security.Authentication.AuthenticationException)) [FAIL] Assert.Throws() Failure Expected: typeof(System.Security.Authentication.AuthenticationException) Actual: typeof(System.IO.IOException): Authentication failed because the remote party has closed the transport stream. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(894,0): at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(1115,0): at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs(731,0): at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs(19,0): at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\ClientAsyncAuthenticateTest.cs(147,0): at System.Net.Security.Tests.ClientAsyncAuthenticateTest.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +16970 area-System.Reflection PEBuilder.WriteCoffHeader does not populate the IMAGE_FILE_HEADER TimeDateStamp field The [PEBuilder.WriteCoffHeader](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEBuilder.cs#L197) method does not populate the TimeDateStamp field of the IMAGE_FILE_HEADER struct. Instead, it appears that random values are stored in this value every time a new file is generated. I noticed this when trying to find out software started to show random build dates when compiled for .NET Core. We use logic similar to https://blog.codinghorror.com/determining-build-date-the-hard-way/ to get the compile date of an assembly. +16972 area-Infrastructure The .editorconfig should be updated to support the code style options made available in VS2017 Currently we have a set of code style guidelines here: https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md. However, we don't have a good way to enforce this (aside from manual code reviews and occasionally running https://github.com/dotnet/codeformatter) when users have their VS options configured away from the defaults. VS2017 added support for specifying a majority of these options via the `.editorconfig` file: * https://github.com/dotnet/roslyn/pull/15020 * https://github.com/dotnet/roslyn/pull/15029 * https://github.com/dotnet/roslyn/pull/15065 We should update the repositories `.editorconfig` to have a set of style options matching those specified in our coding-style documentation. +16973 area-System.Threading ConfigureAwait does nothing? @borrrden commented on [Thu Mar 09 2017](https://github.com/dotnet/coreclr/issues/10082) I ran into this unusual problem when running a unit test with xUnit. I noticed the thread before I `await`ed an `async` call and the thread when I was done were different. Ok, I guess this makes sense after reading about `SynchronizationContext`. However, the weird part is that things are continuing on the same thread that the `async` task was running on. That thread is reserved for processing async jobs, and so any blocking after the await in the original test code will cause that processing to lock. My implementation of this is [here](https://github.com/couchbase/couchbase-lite-net/blob/feature/api-v2/src/Couchbase.Lite/Support/SerialQueue.cs#L136). Roughly, it adds some logic to a queue and sets the result of a `TaskCompletionSource` when it is done. In terms of what I am saying above, the logic gets executed in `ProcessAsync` and then the test code continues **on the same thread that ProcessAsync is running** I inspected the `SynchronizationContext` of the thread at start, and determined that it is an XUnit library provided instance of [AsyncTaskMethodContext](https://github.com/xunit/xunit/blob/master/src/xunit.execution/Sdk/AsyncTestSyncContext.cs). If I understand correctly, without `ConfigureAwait(false)` the async state machine should post back to the original context when it is finished with its logic. In that case, this instance (I inspected `innerContext` to be null) will call [XunitWorkerThread.QueueUserWorkItem](https://github.com/xunit/xunit/blob/vs2017/src/common/XunitWorkerThread.cs#L29) which just adds to a default constructure `TaskFactory` instance. That seems to me that it should run on yet another thread and not the same one as before since the one from before is still executing stuff. I thought maybe the default changed to `ConfigureAwait(false)` so I tried running `ConfigureAwait(true)` but the behavior was the same. Is this a bug or the new behavior? --- @stephentoub commented on [Fri Mar 10 2017](https://github.com/dotnet/coreclr/issues/10082#issuecomment-285661409) When you write code like: ```C# var result = await t; ``` that logically translates into something like: ```C# var $awaiter = t.GetAwaiter(); if (!$awaiter.IsCompleted) { ... // stuff to hook up a continuation return; } Label: var result = $awaiter.GetResult(); ``` so if the thing you await is already completed by the time you await it, you will continue running synchronously on the same thread. This has always been the behavior, and ConfigureAwait doesn't influence that, i.e. ConfigureAwait doesn't force the await to always complete asynchronously, but rather controls the continuation behavior if it does complete asynchronously. --- @stephentoub commented on [Fri Mar 10 2017](https://github.com/dotnet/coreclr/issues/10082#issuecomment-285662040) Separately, in your code, Task.Factory.StartNew by default targets the current TaskScheduler, and it's up to the current TaskScheduler how to interpret and handle TaskCreationOptions.LongRunning. If your intent here is to force a new thread to be created as happens for LongRunning with the default scheduler, you should explicitly pass TaskScheduler.Default as the scheduler argument to StartNew; otherwise, if the context in which you're running has a TaskScheduler set up, you may not get the behavior you want (of course, maybe that's exactly what you want, but just wanted to call it out). +16974 area-System.Runtime Also include 'Visual Basic 2017' in the System.ValueTuple Package description. "Visual Basic 2017 also got Tuple support. In the description of the NuGet Package, only C#7 is mentioned. It would be nice and helpful for the VB developers to include ""Visual Basic 2017"" in the description." +16975 area-System.Data SqlClient: Keyword not supported: 'TransparentNetworkIPResolution' _From @msmolka on March 10, 2017 12:50_ I'm sharing connection string between net462 and core application. connection string contains `TransparentNetworkIPResolution=False;' When starting ASP NET Core app I have following error: ``` Exception message: An exception occurred in the database while saving changes. Stack trace: Microsoft.EntityFrameworkCore.DbContext[1] An exception occurred in the database while saving changes. System.ArgumentException: Keyword not supported: 'transparentnetworkipresolution'. at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 pa ``` I'm expecting `TransparentNetworkIPResolution` is proper keyword. ### Further technical details EF Core version: 1.1.1 Database Provider: Microsoft.EntityFrameworkCore.SqlServer Operating system: Windows Server 2012 IDE: Visual Studio 2015 _Copied from original issue: aspnet/EntityFramework#7836_ +16976 area-System.IO Change tests that use async void to async Task Async tests should always return Task instead of void; XUnit apparently has some issues with it. Changing all existing 'async void' tests to 'async Task' to mitigate any potential side affects. FYI I added this temporary test to socket test class AccessAsync: ``` [Fact] public async void DoIt() { await new Task(() => { }); } ``` and then in all socket test runs after this, the tests hung after successfully running all 4 variants (from 4 Theory inputs) of System.Net.Sockets.Tests.SendReceiveApm.SendRecv_Stream_TCP_MultipleConcurrentReceives No specific tests were running when debugger attached to hung corerun process; I didn't debug further. This is a possible XUnit issue, although other test frameworks don't even allow 'async void' because it is difficult to get the test results back. FWIW XUnit apparently creates a different SynchronizationContext specifically for async void tests. CC @ianhays @Priya91 +16979 area-System.Security Add GetDSA(Public|Private)Key methods Fixes #11802. Fixes #16946. +16981 area-System.Data NonAzureNoProtocolConnectionTestOnWindows failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/129/consoleText ``` System.Data.SqlClient.Tests.TcpDefaultForAzureTest.NonAzureNoProtocolConnectionTestOnWindows [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_win---7ad0ce03\src\System.Data.SqlClient\tests\FunctionalTests\TcpDefaultForAzureTest.cs(41,0): at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.NonAzureNoProtocolConnectionTestOnWindows() ``` +16983 area-System.Diagnostics Fix System.Diagnostics.TraceSource tests to stop showing debug assert windows in desktop Some of the tests where showing Assert failures windows because in desktop trace listeners `AssertUiEnabled` is set to true by default. I also fixed some tests small compat issues with desktop so that they pass. cc: @tarekgh @danmosemsft @weshaggard +16988 area-System.Security Seg fault in System.Security.Cryptography.Xml tests https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/4475/consoleText ``` STOP_REASON: SIGSEGV FAULT_SYMBOL: libcrypto.so.1.0.0!BN_num_bits FAILURE_HASH: SIGSEGV_libcrypto.so.1.0.0!BN_num_bits FAULT_STACK: libcrypto.so.1.0.0!BN_num_bits libcrypto.so.1.0.0!BN_bn2bin System.Console.dll!DomainBoundILStubClass.IL_STUB_PInvoke(Microsoft.Win32.SafeHandles.SafeBignumHandle, Byte*) System.Security.Cryptography.Algorithms.dll!Interop+Crypto.ExtractBignum(Microsoft.Win32.SafeHandles.SafeBignumHandle, Int32) System.Security.Cryptography.Algorithms.dll!Interop+Crypto.ExtractBignum(IntPtr, Int32) System.Security.Cryptography.Algorithms.dll!Interop+Crypto.ExportRsaParameters(Microsoft.Win32.SafeHandles.SafeRsaHandle, Boolean) System.Security.Cryptography.Algorithms.dll!System.Security.Cryptography.RSAImplementation+RSAOpenSsl.ExportParameters(Boolean) System.Security.Cryptography.Xml.Tests.dll!System.Security.Cryptography.Xml.Tests.RSAKeyValueTest.LoadXml_ValidXml(System.String, Byte[], Byte[]) ``` +16990 area-System.Net Disable some more netsec failing tests. We've got some new failures in Net.Security from the same known issues. @steveharter https://github.com/dotnet/corefx/issues/16534 https://github.com/dotnet/corefx/issues/16516 +16991 area-System.Runtime Make BinaryFormatter faster "When BinaryFormatter encounters a larger object list it gets quadratic deserialization times due to the linear search in ``` > ConsoleApp2.dll!System.Runtime.Serialization.ObjectManager.FindObjectHolder(long objectID) Line 68 C# ConsoleApp2.dll!System.Runtime.Serialization.ObjectManager.FindOrCreateObjectHolder(long objectID) Line 81 C# ConsoleApp2.dll!System.Runtime.Serialization.ObjectManager.RegisterFixup(System.Runtime.Serialization.FixupHolder fixup, long objectToBeFixed, long objectRequired) Line 888 C# ConsoleApp2.dll!System.Runtime.Serialization.ObjectManager.RecordArrayElementFixup(long arrayToBeFixed, int[] indices, long objectRequired) Line 966 C# ``` Sample ```c# using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace ConsoleApp2 { [Serializable] class Book { public string Name; public string Id; } class Program { static void Main(string[] args) { var formatter = new BinaryFormatter(); List books = new List(); var mem = new MemoryStream(); for(int i=0;i<500*1000;i++) { books.Add(new Book { Id = i.ToString() }); } var sw = Stopwatch.StartNew(); formatter.Serialize(mem, books); sw.Stop(); Console.WriteLine($""Serialization time {sw.Elapsed.TotalSeconds:F2}s""); mem.Position = 0; sw = Stopwatch.StartNew(); List booksDeser = (List)formatter.Deserialize(mem); sw.Stop(); Console.WriteLine($""Deserialization {sw.Elapsed.TotalSeconds:F2}s""); } } } ``` Serialization time 2.31s Deserialization 21.16s This caused some unexpected ""slowdowns"" in production code when ""real"" big objects (e.g. 20 - 100 MB) object graphs are deserialized. Deserialization times of 10 minutes are not uncommon due to this. It would be great if this ugly thing gets cleaned up in .NET Core. " +16993 area-System.Net System.Net.Http causes error CS0433 When referencing System.Net.Http in .net standard library 1.6 app. I get following compile error ``` Severity Code Description Project File Line Suppression State Error CS0433 The type 'FormUrlEncodedContent' exists in both 'System.Net.Http, Version=1.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' +16994 area-System.Data System.Data.SqlClient throws PlatformNotSupportedException on AWS Lambda "When using Sql Data Client or EF in .Net Core 1.0 on AWS Lambda the code errors out indicating that the platform is not supported. Is it true that I can get to Sql Server from node.js on Lambda but not C#? Seems a bit odd. Following is the text of the error: `{ ""errorType"": ""AggregateException"", ""errorMessage"": ""One or more errors occurred. (The type initializer for 'System.Data.SqlClient.MetaType' threw an exception.)"", ""stackTrace"": [ ""at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)"", ""at System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification)"", ""at lambda_method(Closure , Stream , Stream , ContextInfo )"" ], ""cause"": { ""errorType"": ""TypeInitializationException"", ""errorMessage"": ""The type initializer for 'System.Data.SqlClient.MetaType' threw an exception."", ""stackTrace"": [ ""at System.Data.SqlClient.MetaType.GetMetaTypeFromSqlDbType(SqlDbType target, Boolean isMultiValued)"", ""at System.Data.SqlClient.SqlParameter.set_SqlDbType(SqlDbType value)"", ""at initRestoreDB.Function.d__6.MoveNext()"" ], ""cause"": { ""errorType"": ""TypeInitializationException"", ""errorMessage"": ""The type initializer for 'System.Data.Common.ADP' threw an exception."", ""stackTrace"": [ ""at System.Data.SqlClient.MetaType..cctor()"" ], ""cause"": { ""errorType"": ""PlatformNotSupportedException"", ""errorMessage"": ""Operation is not supported on this platform."", ""stackTrace"": [ ""at System.Runtime.InteropServices.OSPlatform.get_Windows()"", ""at System.Data.Common.ADP..cctor()"" ] } } } } ` The is repeatable for any SQL call from Lambda which runs .Net Core 1.0 on AWS Linux. " +16995 area-System.Runtime Add more testing for FormatterServices.GetUninitializedObject We should expand testing for GetUninitializedObject to include: * Running precise (non-BeforeFieldInit) constructors * Pointer types * ByRefs * Arrays +16996 area-System.Reflection Type.IsSZArray property. Closes #16566 Won't pass CI until dotnet/coreclr#10105 and corert implementation (pending) are in. +16997 area-System.Memory Should we rename Span to Memory and Memory to something else? @terrajobst @KrzysztofCwalina +17000 area-System.Net Add support for System.Net.Sockets.Socket.Disconnect on Unix This copies the way it is done in Mono (see https://github.com/mono/mono/blob/65025fe/mono/metadata/w32socket-unix.c#L928) +17001 area-System.Security Crypto.Xml DSA tests need to not generate keys on macOS macOS does not support generating DSA keys, only importing them. So these tests will need to use a stock supply (at least on macOS). +17008 area-System.Runtime Missing GetTypeFromProgID in Core 1.1? "Hi folks! I'm building a netstandard 1.5 lib, but method .GetTypeFromProgID is missing. This code works fine in Framework 4.6.2: ` var t = Type.GetTypeFromProgID(""VB6Interop.MyClass""); //missing GetTypeFromProgID var o = Activator.CreateInstance(t); var r = t.InvokeMember ( ""MyMethod"", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] { """", """" } ); ` Please can you tell me where is GetTypeFromProgID? Thanks a lot! " +17009 area-System.Net Send request in System.Net.Http.Activity.Stop event payload "If request processing throws an exception or is cancelled, ""System.Net.Http.Activity.Stop"" event has null Response property in the payload. In order to log so such requests, consumers either need to retain request from ""System.Net.Http.Activity.Start"" just in case it will fail before ""Stop"". We should allow to listen to Stop event only, so Stop event should always all necessary information including Request. Even if consumer listen to Start event, it's not always useful to tunnel request properties through Activity.Tags." +17010 area-System.Net CurlHandler exception on resource constraint environment The following exception happens on .NET Core runtime 1.1.1 on Ubuntu 14.04, when resources are constrained. ``` Uncatched exception in BroadcasterJob: System.IO.IOException: The read operation failed, see inner exception. ---> System.ObjectDisposedException: Cannot access a closed Stream. at System.IO.__Error.StreamIsClosed() at System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.MemoryStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.CurlHandler.MultiAgent.TransferDataFromRequestStream(IntPtr buffer, Int32 length, EasyRequest easy) at System.Net.Http.CurlHandler.MultiAgent.CurlSendCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.IO.Stream.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` I am using `CopyToAsync` on a stream from a `WebResponse.GetResponseStream()` to a `MemoryStream`. I imagine something is garbage collected at the wrong time. The `MemoryStream` at the top of the exception stack does not seems to be the same as the one passed to `CopyToAsync`. I experienced the same problem with simple `Read()`, same stacktrace, on the WebResponse stream. Another example: ``` System.ObjectDisposedException: Cannot access a closed Stream. at System.IO.__Error.StreamIsClosed() at System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.MemoryStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.CurlHandler.MultiAgent.TransferDataFromRequestStream(IntPtr buffer, Int32 length, EasyRequest easy) at System.Net.Http.CurlHandler.MultiAgent.CurlSendCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.CurlHandler.CurlResponseStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Http.DelegatingStream.Read(Byte[] buffer, Int32 offset, Int32 count) ``` I am investigating it, +17011 area-System.Security Remove OpenSSL dependency on macOS (dev/apple_crypto -> master) "With this (set of) change(s) only the types whose name includes ""OpenSsl"" (e.g. RSAOpenSsl) will use OpenSSL on macOS. Instead, everything is provided by Security.framework. * RSA, DSA, ECDSA: SecKeyRef * No new public interop types were added with this change, they can come in the future. * Apple does not allow new DSA keys to be generated. This is import/certs only. * X509Certificate(2): SecCertificateRef, SecIdentityRef * X509Chain: SecTrustRef * X509Store: Keychain (CU\My, LM\My), SecTrustSettings (CU/LM Root/Disallowed) * SslStream: Secure Transport (SslContextRef) * HTTPS: libcurl * Understanding that libcurl+openssl is special has been removed. * OID lookup moves to a fixed set of data due to lack of exposed platform API. Fixes #9394. " +17012 area-System.Net Validate ArraySegments passed to Unix socket operations Fixes https://github.com/dotnet/corefx/issues/16715 cc: @geoffkizer, @Priya91 +17014 area-System.Net System.Net.NetworkInformation manifest error My app references the nuget package for System.Net.NetworkInformation 4.3.0. When I attempt a call to, say, NetworkInterface.GetIsNetworkAvailable() I get this error: Inner Exception 1: FileLoadException: Could not load file or assembly 'System.Net.NetworkInformation, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) I have manually deleted nuget cache, obj and bin directories multiple times. When I look at the assemblies in Object browser I see System.Net.Networkinformation [4.1.0.0] and [4.1.1.0] - they are installed in c:\yada\packages\system.net.networkinformation\ **4.3.0** \ref\yada. When I roll back to 4.1.0.0 everything works. My csproj: ```xml net462;netcoreapp1.1 ``` +17015 area-System.Xml Can't find XslTransform? Hi, I see the XslTransform in the source code here: https://github.com/dotnet/corefx/blob/b1865ea0847a7a86baefe8378b772ecf0b785681/src/System.Private.Xml/src/System/Xml/Xslt/XslTransform.cs Has this shipped? Is it included in some NuGet? Thanks, +17018 area-Meta "Question -- Who owns ""partial classes"" ?" "Where should one file queries/issues/feedback for ""partial classes"" ?" +17019 area-System.Diagnostics Fixes #2751 Use per-thread IndentLevel for tracing. The fix is to lazily set per-thread IndentLevel into each trace listener just before effecting a trace output. Fixes #2751. @stephentoub @karelz @svick Please review. +17020 area-System.Security Fix for Transform.PropagatedNamespaces (#16798) `Transform.PropagatedNamespaces` throws a `NullReferenceException` if called before the `Reference` property is set. This may be an unknown side effect of a the security fix for this namespace. I also rearranged the tests to make them a bit more generic. Note that this bug appears to occur in netfx too and fixing it there is out of scope. The tests accessing this property defined out on netfx. If there is a better way of achieving this, please let me know. Fix for #16798. CC @krwq @tintoy +17021 area-Meta Is there any plan or roadmap to add the .net core and .net standard to VB.NET Now in VS 2017, we can only create C# projects with .NET Core and .NET Standard, when the VB.NET will supported with .NET Core and .NET Standard. +17024 area-System.Drawing System.Drawing.SystemColors available in netcoreapp2.0 but not in netstandard2.0 `System.Drawing.SystemColors` exists in System.Drawing.Primitives 4.1.0.0 for netcoreapp2.0 (as part of Microsoft.Netcore.App 2.0.0-beta-001737-00), but does not exist in System.Drawing or System.Drawing.Primitives for netstandard2.0 Although not a bug per se, since netcoreapp2.0 implements SystemColors, and NetFX and Mono also do, all .NET platforms implement SystemColors so it might be a candidate to end up in the netstandard2.0 specification. Alternatively, if it is deemed it SystemColors should not be part of netstandard2.0, I'm not sure it makes much sense to have it in netcoreapp2.0, either. Background: I have ported Mono's System.Drawing to .NET Core and repeating the excercise for netstandard2.0. When compiling Mono's System.Drawing for netstandard2.0, I have to include SystemColors as it is not part of the netstandard2.0 specification. This version can then be consumed on NetFX (given System.Drawing is not referenced) but not on netcoreapp2.0 because you'll get compiler errors trying to distinguish between System.Drawing.SystemColors in netcoreapp2.0 and Mono's System.Drawing. Net, the gist of this issues is to request to have the same API surface for System.Drawing on netcoreapp2.0 and netstandard2.0. Makes sense? +17026 area-Meta Binding redirect in multi-target class library. "How do i redirect the assembly binding in a multi-target class library, such as: ```xml ``` That can be done by app.config in traditional .Net class library. But what about a multi-target class library? BTW, this issue comes from referencing Microsoft.Bcl.Async when I try to multi-target net40 and netstandard1.4: ```xml net40;netstandard1.4 1.0.168 ``` And VS2017 gave the warning: > The primary reference ""C:\Users\jaren\.nuget\packages\microsoft.bcl.async\1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll"" could not be resolved because it has an indirect dependency on the framework assembly ""System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" which could not be resolved in the currently targeted framework. "".NETFramework,Version=v4.0"". To resolve this problem, either remove the reference ""C:\Users\jaren\.nuget\packages\microsoft.bcl.async\1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll"" or retarget your application to a framework version which contains ""System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"". According to [Microsoft.Bcl.Async FAQ]( https://blogs.msdn.microsoft.com/bclteam/p/asynctargetingpackkb/), it seems like binding redirecting is needed." +17028 area-System.Runtime Two TimeZoneTests failed in CI I assume today's DST change was a factor here. https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_release_prtest/4421/ https://ci.dot.net/job/dotnet_corefx/job/master/job/osx_debug_prtest/4428/ ``` System.Tests.TimeZoneTests.TestRoundTripping [FAIL] Assert.Equal() Failure Expected: 2017-03-12T03:09:36.4716460-07:00 Actual: 2017-03-12T04:09:36.4716460-07:00 Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Runtime/tests/TimeZoneTests.netstandard.cs(86,0): at System.Tests.TimeZoneTests.TestRoundTripping() System.Tests.TimeZoneTests.TestOffsetsAndDaylight [FAIL] Assert.Equal() Failure Expected: -07:00:00 Actual: -08:00:00 Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Runtime/tests/TimeZoneTests.netstandard.cs(67,0): at System.Tests.TimeZoneTests.TestOffsetsAndDaylight() ``` +17030 area-System.Net Open FtpWebRequest for customization "`FtpWebRequest` works great when communicating with ""normal"" FTP servers. But if I try to communicate with more odd FTP servers, it becomes a problem when there is not much opportunity to adjust `FtpWebRequest`. As an example, we have at work an old FTP server with the following characteristics: * There is no proper directory structure as it works on Unix/Dos (and therefore no root). We specifying the path with parameters like this: `CWD ~TNA=AMP,VNA=VOL03,FNA=U-ED-B2-USL` * If you make a listing of files without specifying `FNA`, we get a tree structure with everything on the entire partition. I do not expect that this odd behavior to be implemented in `FtpWebRequest`, but I wish that there is any why to customize `FtpWebRequest `to handle these and other special cases. One way is to have a callback just before commands are sent to the FTP server to provide the ability to customize what is sent and then another callback when the response arrives. Another way might be to make it possible to inherit from `FtpWebRequest `to make your own customized version." +17032 area-Meta NETFramework 4.6 project can not reference project that targets NETStandard 1.4? " According to the [compatibility matrix](https://github.com/dotnet/standard/blob/master/docs/versions.md) my NETFramework 4.6 project should be able to reference libraries up to NetStandard 1.6 - correct? Why am I getting this error? ``` 2>------ Build started: Project: XUnitTestProject1, Configuration: Debug Any CPU ------ 2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.Common.targets(73,5): error : Project 'C:\bindingTest.csproj' targets '.NETStandard,Version=v1.4'. It cannot be referenced by a project that targets '.NETFramework,Version=v4.6'. 2>Done building project ""bindingTest.csproj"" -- FAILED. ``` " +17033 area-System.Collections Add tests for ArraySegment slicing APIs and GetEnumerator Fixes https://github.com/dotnet/corefx/issues/14170 Fixes https://github.com/dotnet/corefx/issues/10528 This adds tests for the implementation of slicing APIs for `ArraySegment` in coreclr (https://github.com/dotnet/coreclr/pull/9926) and additionally exposes the strongly-typed `GetEnumerator()` overload. /cc @KrzysztofCwalina, @stephentoub +17034 area-Meta Use TryAdd throughout corefx Now that https://github.com/dotnet/corefx/issues/1942 has been exposed, we can replace all of the places using ```cs if (!dictionary.ContainsKey(key)) { dictionary.Add(key, value); } ``` with ```cs if (dictionary.TryAdd(key, value)) { } ``` and get better perf for free. Not sure if there will be any issues with targeting a framework that doesn't have the API, but IIRC @weshaggard said that everything is being built against netcoreapp now so everywhere in corefx should have the API write away. +17036 area-System.Xml Test: System.Xml.Tests.XmlConvertTests.ToTypeTests failed in CI Configuration: OuterLoop_Fedora24_debug ([build#115](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/115/testReport/)) Failed test: System.Xml.Tests.XmlConvertTests.ToTypeTests Message: ~~~ System.Xml.Tests.XmlConvertTests.ToTypeTests [FAIL] Assert.Equal() Failure Expected: 0 Actual: 3 ~~~ Stack trace: ~~~ at System.Xml.Tests.XmlConvertTests.RunTestCase(CTestBase testCase) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Private.Xml/tests/XmlConvert/XmlConvertTests.cs:line 209 at System.Xml.Tests.XmlConvertTests.ToTypeTests() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Private.Xml/tests/XmlConvert/XmlConvertTests.cs:line 58 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/115/consoleText +17037 area-System.Runtime System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables failed in CI Configuration: OuterLoop_Windows10_release ([build#126](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/126/testReport/)) Failed test: System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/126/consoleText Message: ~~~ System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(target: User) [FAIL] System.IO.IOException : No more data is available. ~~~ Stack Trace: ~~~ at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str) at Microsoft.Win32.RegistryKey.GetValueNames() at System.Environment.GetEnvironmentVariablesCore(EnvironmentVariableTarget target) D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs(243,0): at System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(EnvironmentVariableTarget target) ~~~ +17039 area-System.Data System.Data.SqlClient package not updated for 1.1.1 release PR #15431 was listed in the release notes for [.NET Core 1.1.1](https://github.com/dotnet/core/blob/master/release-notes/1.1/1.1.1.md). However, there was no new System.Data.SqlClient package so the fix has not been released. Will this package be updated with the next servicing release? +17040 area-System.Diagnostics Use EnvironmentAugments instead of System.Environment from corelib. System.Environment in corelib is not going to be public anymore +17044 area-System.Runtime No more data is available error in EnumerateEnvironmentVariables test https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/126/consoleText ``` System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(target: User) [FAIL] System.IO.IOException : No more data is available. Stack Trace: at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str) at Microsoft.Win32.RegistryKey.GetValueNames() at System.Environment.GetEnvironmentVariablesCore(EnvironmentVariableTarget target) D:\j\workspace\outerloop_win---6835b088\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs(243,0): at System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(EnvironmentVariableTarget target) ``` +17045 area-System.Net ServerCertificateCustomValidationCallback throws PlatformNotSupportedException in CentOS.7-x64 "As @bartonjs suggested, I am creating a new issue for CentOS. #9728 When using ServerCertificateCustomValidationCallback in .Net Core 1.0.1 CentOS 7 64 bit Azure VM, I am getting the following error ``` System.PlatformNotSupportedException: The libcurl library in use (7.29.0) and its SSL backend (""NSS/3.19.1 Basic ECC"") do not support custom handling of certificates. A libcurl built with OpenSSL is required. at System.Net.Http.CurlHandler.SslProvider.SetSslOptions(EasyRequest easy, ClientCertificateOption clientCertOption) at System.Net.Http.CurlHandler.EasyRequest.InitializeCurl() at System.Net.Http.CurlHandler.MultiAgent.ActivateNewRequest(EasyRequest easy) End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at hwapp.Program.d__1.MoveNext() ``` **Sample code** ```csharp static void Main(string[] args) { MakeWebRequest().GetAwaiter().GetResult(); Console.WriteLine(""Press any key to exit!""); Console.ReadKey(); } private static async Task MakeWebRequest() { var handler = new HttpClientHandler() { AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip }; handler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; try { using (var client = new HttpClient(handler)) { var result = await client.GetAsync(""https://www.google.com""); Console.WriteLine(result.StatusCode.ToString()); } } catch (Exception exception) { Console.WriteLine(exception.ToString()); } } ``` " +17047 area-System.Numerics System.Runtime.Numerics.Tests are not executed Tests in https://github.com/dotnet/corefx/tree/master/src/System.Runtime.Numerics/tests appears not to be executed as part of build tests and it looks like some of them regressed. +17048 area-System.Reflection MemberInfo.HasSameMetadataDefinitionAs should capture the logic common to all Reflection providers "This is in support of the just approved api `HasSameMetadataDefinitionAs` in #5884 This api has a number of edge cases (constructed types and method instantiations.). These edge cases can mostly be implemented portably. Given that, it would be nice of MemberInfo itself could implement the portable portion, leaving the simplified task for the underlying Reflection provider. This would reduce the amount of implementation underlying Reflection providers have to do and promote more consistent behavior. **Proposal for New API:** `MemberInfo.HasSameMetadataDefinitionAsImpl.` ```c# protected virtual bool HasSameMetadataDefinitionAsImpl(MemberInfo other) { throw new NotImplementedException(); } ``` This would be an extension point for Reflection providers to implement the ""non-portable"" portion of HasSameMetadataDefinitionAs() on non-constructed entities. The specification of `HasSameMetadataDefinitionAsImpl` would be as follows: Return true if and on if this and other... - Have the same MemberType value (i.e. both are methods or both are fields, etc.) - Are implemented by the same Reflection provider. - Represents the same metadata entity (e.g disregarding artifacts such as ReflectedType.) Behavior undefined if: - other is null - this or other is a MethodInfo that represents a constructed generic method (e.g. the result of MethodInfo.MakeGenericMethod() - this or other is a Type that isn't one of - a plain old named type (i.e. HasElementType == false && IsConstructedGenericType == false) - a generic type parameter (i.e. IsGenericParameter == true) The implementation of MemberInfo.HasSameMetadataDefinitionAs() can then be this: ```c# public virtual bool HasSameMetadataDefinitionAs(MemberInfo other) { if (other == null) throw new ArgumentNullException(nameof(other)); MemberInfo thisMember = Distill(this); MemberInfo otherMember = Distill(other); return thisMember.HasSameMetadataDefinitionAsImpl(otherMember); } private MemberInfo Distill(MemberInfo member) { switch (member) { case MethodInfo method: if (method.IsGenericMethod && !method.IsGenericMethodDefinition) method = method.GetGenericMethodDefinition(); return method; case Type type: { while (type.HasElementType) { type = type.GetElementType(); } if (type.IsConstructedGenericType) type = type.GetGenericTypeDefinition(); return type; } default: return member; } } ``` Note that `HasSameMetadataDefinitionAs` is still virtual, allowing providers to replace it entirely if they can provide a more performant version than the default. The default definition, however, still defines the required behavior." +17049 area-System.Net Use vectors in managed ClientWebSocket for mask application The web socket protocol uses a 4-byte mask sent from client to server and xor'd with the payload data. In the managed web socket implementation, that mask is currently applied byte-by-byte. This commit changes it to be done using SIMD. Micro-benchmarks on the ApplyMask function itself show a regression for payload lengths under 4 bytes, but above that it's a clear win: ``` 1: 0.44x 3: 0.64x 4: 1.15x 7: 1.16x 31: 1.73x 32: 6.06x 63: 3.37x 64: 10.40x 1024: 20.36x ``` This doesn't have a measurable affect on small payloads in the overall context of sending/receiving data, but the larger the payload, the more it applies. Locally I measured upwards of a 10% improvement for payloads several-K in size. cc: @benaadams, @geoffkizer, @davidsh, @anurse ,@mellinoe +17051 area-System.Reflection Why do we have IsConstructedGenericType but not IsConstructedGenericMethod? "**Proposal for New API:** ```c# class MethodBase { public virtual bool IsConstructedGenericMethod => IsGenericMethod && !IsGenericMethodDefinition; } ``` This is both for completeness (Type has **IsConstructedGenericType**) and for better expressibility when testing if a MethodBase represents a method instantation. Right now, the only way to perform that task is through this eyesore: ```c# if (method.IsGenericMethod && !method.IsGenericMethodDefinition) {...} ``` This is wordy, requires two calls and requires the use of the 1.0-era **IsGenericMethod** (whose very use I consider to be a code smell due to its poor conceptual grasp of the distinction between generic methods and their instantiations.) The proposed implementation allows the new api to give the correct result for 3rd party Reflection providers without any additional work on their part. Declaring it ""virtual"" (like its IsConstructedGenericType counterpart) makes it possible for providers to override with a more performant version (CoreRT is certainly well positioned to do this.)" +17052 area-System.Globalization StringComparer not working as expected on Linux "The following test works on Windows but not on Linux (RHEL 7.2 or Ubuntu 16.04): Assert.AreEqual(0, StringComparer.CurrentCultureIgnoreCase.Compare(""ss"", ""ß"")); Our Microsoft consultant Ben Gimblett has confirmed it and requested that we raise it as an issue here for follow-up. We understand that .Net Core uses Windows's own comparison service, which is not available on Linux operating systems. How would one perform these culture aware operations on .Net core - irrespective of operating system?" +17053 area-Infrastructure Use optional tooling to merge optimization data during the build Uses tooling implemented in https://github.com/dotnet/buildtools/pull/1322 to merge IBC optimization data during the build pipeline build. We need to pass in secret values for the `OptionalToolSource*` vars: I'll set that up after merging. In my testing, the result was packages with signed DLLs with the optimization data merged. /cc @dpodder (working on this for CoreCLR) +17055 area-Serialization Make Sg.exe Parse Attributes Using Reflection Sg.exe needs to convert CustomAttributeData to actual attribute objects. We currently have to write methods for each attribute for the conversion. Sg.exe would fail to parse an attribute if we didn't add such method for that attribute type. It would be great if Sg.exe can parse attributes using reflection so that we won't have to add such method for individual attribute types anymore. +17056 area-Serialization Improve Sg.exe's Type-Forwarding Sg.exe currently keeps a list for type-forwarding types from desktop assemblies to NetCore assemblies. We'd like to do the type-forwarding smartly and remove the list. +17057 area-Infrastructure Fix target queue behavior for official runs Goes with https://github.com/dotnet/buildtools/pull/1387, should not be merged until it can include a tools version update. @chcosta @weshaggard +17058 area-Infrastructure Verify that tests projects are configured to run on all possible platforms I believe at the minimum, these test projects should be run on all platforms: src/System.IO.FileSystem.DriveInfo/tests/Configurations.props src/System.Net.WebHeaderCollection/tests/Configurations.props src/System.Security.Cryptography.Primitives/tests/Configurations.props src/System.Text.Encoding.CodePages/tests/Configurations.props We should compare the test results from a Windows and Linux run and make sure there are no other unnecessary test gaps. +17059 area-Infrastructure Enable four test projects outside of Windows This enables the following test projects outside of Windows: src/System.IO.FileSystem.DriveInfo/tests/Configurations.props src/System.Net.WebHeaderCollection/tests/Configurations.props src/System.Security.Cryptography.Primitives/tests/Configurations.props src/System.Text.Encoding.CodePages/tests/Configurations.props @stephentoub Part of #17058 +17060 area-Meta Added to .editorconfig csharp code style settings supported by VS 2017 Adds code style settings supported by VS 2017 to .editorconfig file according to https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md. Closes #16972 @tannergooding @karelz +17061 area-System.Diagnostics Augment procfs proc/task states and include unknown char in assert Fixes https://github.com/dotnet/corefx/issues/15689 cc: @mellinoe +17062 area-System.Net Enable System.Private.Uri tests These test projects did not get Configurations.props files in the infrastructure overhaul. I've added them and regenerated the VS artifacts. Related to #17058 +17063 area-System.Memory Make use of CopyBlock for non-overlapping spans Fix for #16840. For non-overlapping spans, this makes copy about 9-10x faster. For overlapping spans, we still take the slow paths. [Edit] 9-10x for sufficiently large blocks (> 2 KB). Though a 256 byte block was still about 4x faster. A 16 byte block was only marginally faster. +17064 area-System.Security Merge dotnet:master to dotnet:dev/apple_crypto (and add lost function) Merges recent merge conflicts from master to dev/apple_crypto, and the master PR noticed that there was a native method that got lost somewhere in the pipeline. +17065 area-System.Net Re-enable disabled tests for CI. These tests don't fail locally run in a loop, and they were disabled long time back after a single test failure. Hence re-enabling them for CI. These tests affect windows only. #10504 #11623 cc @steveharter @ianhays @karelz +17067 area-System.IO Compression.ZipArchive: Expose ExternalFileAttributes for Entries # Problem The ExternalFileAttributes field of a ZipArchiveEntry is currently hidden within the implementation and not accessible. This has been fine in the Windows world since it's not used but it *is* used by Unix's `zip`/`unzip` programs to store file permissions of an entry. As it currently stands, there is no way to carry Unix RWX permissions within a zip, so at unzip time the unzipper has to guess at permissions and manually chmod the entries. https://github.com/dotnet/corefx/issues/14853 https://github.com/dotnet/corefx/issues/15516 https://github.com/dotnet/corefx/issues/10223 https://github.com/NuGet/Home/issues/4424 # Solution Permissions isn't an officially supported feature of the [zip specification](https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.3.TXT) but it is used widely enough that we should add support for it. There's a pretty wide range of things we can do here that go from simply exposing the field all the way to implementing [AccessControl for Unix and accepting something from there as input](https://github.com/dotnet/corefx/issues/9225). Since the latter option requires a huge amount of work/new API and marries us to a Zip permissions structure, I suggest we take the simple/future-proof route here and just expose the entire field: ``` public partial class ZipArchiveEntry { public int ExternalAttributes {get; set} } ``` This also has the benefit of potentially supporting other implementations that use the external file attributes field for reasons other than permissions. I'm not aware of any of these off the top of my head, but they ostensibly exist. # Usage The unfortunate aspect of exposing the raw field is that usage becomes a bit more complicated. However, without implementing our own UnixPermissions structure that's somewhat unavoidable. The nice thing is that it leaves us open to implement an explicit UnixPermissions structure in the future (pending the completion of #9225) without conflictions with the ExternalAttributes. [This StackOverflow post does a better job describing the format than I can so I'm just going to link it](http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute/14727#14727). The permissions values themselves are the same as the ones you get from stat. cc: @stephentoub @JeremyKuhne +17068 area-System.Runtime Proposal: Convenience API for throwing exceptions ## Background It's quite verbose to validate arguments because you have to write an if-statement and `throw new XXXException` for each validation. Even with C# 7's new throw-expressions, you still have to write out the latter part. This makes people write their own helper classes for validating arguments, e.g. [here](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/Validation/Requires.cs) or [here](https://github.com/xunit/xunit/blob/master/src/common/Guard.cs). It would be nice if we had such a helper class as part of the framework. ## Proposal ```cs namespace System { public static class Verify { public static void Argument(bool condition, string message, string argumentName); public static void InRange(bool condition, string argumentName); public static void InRange(string s, int index, int count, string sName, string indexName, string countName); public static void InRange(T[] array, int index, int count, string arrayName, string indexName, string countName); public static void NotEmpty(IEnumerable source, string sourceName); public static void NotNegative(int argument, string argumentName); public static void NotNull(bool condition, string argumentName); public static void NotNull(T argument, string argumentName) where T : class; public static void Positive(int argument, string argumentName); } } // Sample usage: T MyGenericMethod(T[] array, int index, int count) { // Note: All of this is equivalent to Verify.InRange(array, index, count, nameof(array), nameof(index), nameof(count)). // The arguments are validated manually for demo purposes. Verify.NotNull(array, nameof(array)); Verify.NotNegative(index, nameof(index)); Verify.NotNegative(count, nameof(count)); Verify.InRange(array.Length - index >= count, nameof(index)); } ``` A sample implementation [can be found here](https://gist.github.com/jamesqo/13dded2757a8f9f9eb57bbaf944dee1b#file-verify-cs-L79). ## Remarks - In my experience, it's common to validate things like a signed integer being positive/nonnegative, so those patterns will get their own `Positive` / `NotNegative` methods. This will enable us to [provide a better error message](https://gist.github.com/jamesqo/13dded2757a8f9f9eb57bbaf944dee1b#file-verify-cs-L79) if such a check fails. These methods throw the same exception type as `InRange`. - Same applies for `InRange`, `NotEmpty` - The class will work nicely with `using static`: ```cs using static System.Verify; T MyGenericMethod(T[] array, int index, int count) { NotNull(array, nameof(array)); NotNegative(index, nameof(index)); NotNegative(count, nameof(count)); InRange(array.Length - index >= count, nameof(index)); } ``` - The extra `NotNull` overload taking a `bool` covers the rare cases when people are writing generic code, and the parameter might be null but the compiler can't guarantee that it's a class. e.g. [Like here](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableDictionary.cs#L300). It also covers the rare times when someone would want to verify a nullable is non-null. - I didn't include a `NotNull(T?, string) where T : struct` nullable overload since if someone thinks a nullable is non-null they would likely 1) not accept a nullable parameter in the first place, or 2) if they're calling some method they know returns a non-null nullable, they're likely to cast the `T?` to a `T` or call `.Value`, which do the validation automatically, instead of bothering to validate themselves. --- This is a follow-up to https://github.com/dotnet/corefx/issues/12509 after putting some thought into the API. +17069 area-Serialization Added tests for XmlMembersMapping. This PR added tests for serializing objects using XmlMembersMapping. The tests passed in ILGen mode, but failed in reflection only mode. Ref #10675. +17070 area-System.Data Ensure we build SqlClient.Sni package This package is just a meta-package for the RID-specific SNI packages, which are built in another repository. Fixes https://github.com/dotnet/corefx/issues/16918 /cc @saurabh500 @weshaggard +17072 area-System.IO Compression tests are writing their test files to their install directory Compression tests are writing their test files to their install directory. In appcontainer, they apparently can't do that. In the example below, `ZipTestData\StrangeZipFiles\largetrailingwhitespacedeflation.zip` comes from the test and it's just suffixed onto the folder of the dll, which I guess is the current directory. ``` 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: Hello + ' C:\dotnetbuild\work\22eb33a7-3458-4f94-b2f1-56522dd4cb26\Work\7db140f3-b2ca-4270-b359-7fce63d78e6b\Unzip\\System.IO.Compression.Tests.dll' 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: Discovering: System.IO.Compression.Tests 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: Discovered: System.IO.Compression.Tests 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: Starting: System.IO.Compression.Tests 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: ERROR: System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles.ZipWithLargeSparseFile [FAIL] 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: System.UnauthorizedAccessException : Access to the path 'C:\dotnetbuild\work\22eb33a7-3458-4f94-b2f1-56522dd4cb26\Work\7db140f3-b2ca-4270-b359-7fce63d78e6b\Unzip\ZipTestData\StrangeZipFiles\largetrailingwhitespacedeflation.zip' is denied. 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: at System.IO.File.Open(String path, FileMode mode, FileAccess access, FileShare share) 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: at System.IO.File.Open(String path, FileMode mode, FileAccess access) 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: at System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles.ZipWithLargeSparseFile() 2017-03-13 22:45:49,839: INFO: proc(54): run_and_log_output: Output: Finished: System.IO.Compression.Tests ``` @AlexGhiondea this was in your private run. +17075 area-System.Runtime StringBuilder's indexer throws different exceptions for get & set "```cs [IndexerName(""Chars"")] public char this[int index] { get { StringBuilder chunk = this; for (;;) { int indexInBlock = index - chunk.m_ChunkOffset; if (indexInBlock >= 0) { if (indexInBlock >= chunk.m_ChunkLength) { throw new IndexOutOfRangeException(); } return chunk.m_ChunkChars[indexInBlock]; } chunk = chunk.m_ChunkPrevious; if (chunk == null) { throw new IndexOutOfRangeException(); } } } set { StringBuilder chunk = this; for (;;) { int indexInBlock = index - chunk.m_ChunkOffset; if (indexInBlock >= 0) { if (indexInBlock >= chunk.m_ChunkLength) { throw new ArgumentOutOfRangeException(nameof(index), Environment.GetResourceString(""ArgumentOutOfRange_Index"")); } chunk.m_ChunkChars[indexInBlock] = value; return; } chunk = chunk.m_ChunkPrevious; if (chunk == null) { throw new ArgumentOutOfRangeException(nameof(index), Environment.GetResourceString(""ArgumentOutOfRange_Index"")); } } } } ``` It throws an `IndexOutOfRangeException` with no parameter name for the getter, and an AOORE with `nameof(index)` for the setter. The latter exception seems superior because 1) it includes the parameter name, and 2) IOORE is only supposed to be used by arrays IIRC. Should we consider changing the getter to follow the setter?" +17076 area-System.Diagnostics Enable AllowPartiallyTrustedCaller for DiagnosticSource on netfx This change marks DiagnosticSource with AllowPartiallyTrustedCaller on net46 and netfx to make it callable from partially trusted code. E.g. System.Net.Http for .NET Framework declares [AllowPartiallyTrustedCaller](https://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx) to be called by partially trusted code therefore can't have DiagnosticSource instrumentation. Note that support for Activity on .NET 4.5 is dropped, so configuration is removed from the project. +17078 area-System.Memory Add tests to increase code coverage for Span APIs Here is a snapshot of the coverage: ![image](https://cloud.githubusercontent.com/assets/6527137/23919318/a410e1e2-08b3-11e7-8710-172522e8ebc6.png) Currently, SpanHelpers, specifically SpanHelpers.Clear.cs needs tests. https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/System.Memory_SpanHelpers.htm +17080 area-System.IO UnloadingEventMustHappenBeforeProcessExitEvent failed in CI "This is the first use of the folder for this test -- it's upstream of the remote process. It appears that FileCleanupTestBase failed to make the directory. Need to add logging. ``` c# protected FileCleanupTestBase() { TestDirectory = Path.Combine(Path.GetTempPath(), GetType().Name + ""_"" + Path.GetRandomFileName()); try { Directory.CreateDirectory(TestDirectory); } catch { } ``` Perhaps we should log (Console.WriteLine if necessary) ``` System.Tests.UnloadingAndProcessExitTests.UnloadingEventMustHappenBeforeProcessExitEvent [FAIL] System.IO.DirectoryNotFoundException : Could not find a part of the path '/home/someuser/some tempdir/UnloadingAndProcessExitTests_b0ejqce4.zgv/UnloadingEventMustHappenBeforeProcessExitEvent_13'. Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStreamHelpers.CreateFileStream(String path, Boolean write, Boolean append) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) at System.IO.StreamWriter..ctor(String path) at System.IO.File.WriteAllText(String path, String contents) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx_debug_prtest/src/System.Runtime.Extensions/tests/System/UnloadingAndProcessExitTests.netcoreapp.cs(15,0): at System.Tests.UnloadingAndProcessExitTests.UnloadingEventMustHappenBeforeProcessExitEvent() Using as the test runtime folder. ```" +17083 area-System.Net System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail fail in CI Configuration: OuterLoop_Fedora24_debug ([build#116](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/116/testReport/)) Failed test: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/116/consoleText Message: ~~~ Assert.Throws() Failure Expected: typeof(System.NotSupportedException) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. ~~~ Stack Trace: ~~~ /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/Common/src/System/Net/Security/Unix/SafeDeleteSslContext.cs(65,0): at System.Net.Security.SafeDeleteSslContext.Dispose(Boolean disposing) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Net.Security/src/System/Net/Security/SecureChannel.cs(206,0): at System.Net.Security.SecureChannel.Close() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs(494,0): at System.Net.Security.SslState.Close() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Net.Security/src/System/Net/Security/SslStream.cs(502,0): at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs(186,0): at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +17086 area-System.IO Broken pipe exception when child process crashed on Linux Create a child process and redirect the stdout. If the child process crashed, the parent process will get a IOException after a period of time, and this exception can not be caught. Running on Windows is all right. **Environment:** Ubuntu 16.04 dotnet core 1.0.4 & 1.1.1 **Code:** Process process = new Process(); process.StartInfo.FileName = XXXX; process.StartInfo.Arguments = XXXX; process.StartInfo.CreateNoWindow = true; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.Start(); **Stack Trace:** Unhandled Exception: System.IO.IOException: Broken pipe at System.IO.UnixFileStream.CheckFileCall(Int64 result, Boolean ignoreNotSupported) at System.IO.UnixFileStream.WriteNative(Byte[] array, Int32 offset, Int32 count) at System.IO.UnixFileStream.FlushWriteBuffer() at System.IO.UnixFileStream.Dispose(Boolean disposing) at System.IO.FileStream.Dispose(Boolean disposing) at System.IO.FileStream.Finalize() +17088 area-System.Data Test: System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest failed in CI Failed test: System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_debug/1369/consoleText Configuration: InnerLoop_Fedora24_debug (build#1369) Message: ~~~ System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest [FAIL] Assert.Null() Failure Expected: (null) Actual: System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) ~~~ Stack Trace: ~~~ at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs:line 372 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionFactory.cs:line 133 at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 114 at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 476 at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 1187 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 792 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 712 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 281 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionInternal.cs:line 452 at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionClosed.cs:line 64 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 992 at System.Data.SqlClient.SqlConnection.Open() in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 585 at System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest() in /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs:line 23 ~~~ +17089 area-System.Numerics Matrix4x4 perspective helper methods do not handle farPlaneDistance = float.PositiveInfinity All Matrix4x4.CreatePerspective* methods are affected If you pass in float.PositiveInfinity as farPlaneDistance the resulting matrix is invalid: M33 and M43 are both float.NaN They should be -1 and -nearPlaneDistance respectively As a workaround you can use float.MaxValue instead but I think float.PositiveInfinity should create a valid projection matrix as well. +17090 area-System.Numerics Handle farPlaneDistance = float.PositiveInfinity in Matrix4x4.CreatePerspective* methods Fixes #17089 +17091 area-Meta Fix build of native components on FreeBSD. I tried building the native components on FreeBSD and got two build errors: FreeBSD 11 started to define ENODATA, which was not defined in 10.3: ``` [ 6%] Building CXX object System.Native/CMakeFiles/System.Native-Static.dir/pal_errno.cpp.o /usr/home/austin/corefx/src/Native/Unix/System.Native/pal_errno.cpp:13:9: error: 'ENODATA' macro redefined [-Werror,-Wmacro-redefined] #define ENODATA ENOATTR ^ /usr/include/c++/v1/errno.h:155:9: note: previous definition is here #define ENODATA 9919 ^ 1 error generated. ``` The both clang3.5 and clang3.7 from `pkg` complains about the callback that OpenSSL calls to do locking: ``` /usr/home/austin/corefx/src/Native/Unix/System.Security.Cryptography.Native/openssl.cpp:1267:18: error: releasing mutex 'g_locks[n]' that was not held [-Werror,-Wthread-safety-analysis] result = pthread_mutex_unlock(&g_locks[n]); ^ /usr/home/austin/corefx/src/Native/Unix/System.Security.Cryptography.Native/openssl.cpp:1270:9: error: mutex 'g_locks[n]' is not held on every path through here [-Werror,-Wthread-safety-analysis] if (result != 0) ^ /usr/home/austin/corefx/src/Native/Unix/System.Security.Cryptography.Native/openssl.cpp:1263:18: note: mutex acquired here result = pthread_mutex_lock(&g_locks[n]); ^ 2 errors generated. ``` +17092 area-System.ComponentModel Remove WebClient dependency from S.CM.TypeConverter Fixes https://github.com/dotnet/corefx/issues/14695 cc: @AlexGhiondea +17093 area-System.Memory Convenience extension methods for Span for interop with IEnumerable et al? There doesn't seem to exist a method that allows the creation of an `IEnumerable` from a `Span`. Useful extension methods would include: * `ToEnumerable()` Useful for passing a `Span` to a function accepting `IEnumerable` (e.g. for LINQ) * `GetEnumerator()` Should save one allocation when compared to `ToEnumerable()` * `AsReadOnlyList()` For indexed access in code indicating that: 1. Read-only access 2. Indexed access 3. Avoid multiple re-enumeration when used in multiple places * `AsList()` where `IsReadOnly` returns `true` For APIs that don't know about `IReadOnlyList` and companions. +17094 area-System.Threading Proposal: Add Result property to non generic Task. "Suppose you have some method: ```CSharp public async Task GetMyStructure(string someParam) { .... } //Suppose you need to pass result of this method to some non-generic routine // await MySample(GetMyStructure(""structure1""); public async void MySample(Task getMyStructureTask) { // Currently it's impossible. object result = await getMyStructureTask; // We can only get it through reflection await getMyStructureTask; result = task.GetType().GetTypeInfo().GetDeclaredProperty(""Result"")?.GetValue(task); // Do something with result. Console.WriteLine(result?.ToString()); } ```" +17098 area-System.Net "Delete dead ""shim"" code from System.Net.*" This shims are being built into our System.Net libs on Unix and Windows, but are unused and should have been deleted. cc: @geoffkizer, @davidsh, @cipop, @Priya91 +17099 area-System.Net Improve System.Net.Security code coverage (58%) It's currently at 58.3% line and 45% branch. Both of these would ideally be at least above 80%. +17100 area-System.Net Remove more unused code from System.Net.Security cc: @geoffkizer, @Priya91, @davidsh, @cipop +17101 area-System.Numerics Add more Complex::Cos test data +17103 area-System.Net EventSource_EventsRaisedAsExpected in System.Net.Security tests failed in CI "This test turns on events and then calls a few other tests, so the actual failure (""The credentials supplied to the package were not recognized"") is coming from System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success. https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/4621/consoleText ``` Exception from RemoteExecutorConsoleApp(System.Net.Security.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.Net.Security.Tests.LoggingTest+<>c, b__1_0): Assembly: System.Net.Security.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: System.Net.Security.Tests.LoggingTest+<>c Method: Int32 b__1_0() Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AggregateException: One or more errors occurred. (VirtualNetwork: Timeout reading the next frame.) (The credentials supplied to the package were not recognized) ---> System.TimeoutException: VirtualNetwork: Timeout reading the next frame. at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Net\VirtualNetwork\VirtualNetwork.cs:line 39 at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Net\VirtualNetwork\VirtualNetworkStream.cs:line 119 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskToApm.End[TResult](IAsyncResult asyncResult) in D:\j\workspace\windows_nt_re---37265eab\src\Common\src\System\Threading\Tasks\TaskToApm.cs:line 115 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\FixedSizeReader.cs:line 143 System.IO.Tests.Directory_Delete_Tests.FileSystemWatcher_Directory_Delete_SymLink [SKIP] Condition(s) not met: \""CanCreateSymbolicLinks\"" System.IO.Tests.Directory_Changed_Tests.FileSystemWatcher_Directory_Changed_SymLink [SKIP] Condition(s) not met: \""CanCreateSymbolicLinks\"" --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 731 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of inner exception stack trace --- at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Security.Tests.SslStreamStreamToStreamTest_Async.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 391 at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 36 at System.Net.Security.Tests.LoggingTest.<>c.b__1_1() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\LoggingTest.cs:line 39 at System.Diagnostics.Tracing.TestEventListener.RunWithCallback(Action`1 handler, Action body) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Diagnostics\Tracing\TestEventListener.cs:line 91 at System.Net.Security.Tests.LoggingTest.<>c.b__1_0() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\LoggingTest.cs:line 41 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at RemoteExecutorConsoleApp.Program.Main(String[] args) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 49 Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AggregateException: One or more errors occurred. (VirtualNetwork: Timeout reading the next frame.) (The credentials supplied to the package were not recognized) ---> System.TimeoutException: VirtualNetwork: Timeout reading the next frame. at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Net\VirtualNetwork\VirtualNetwork.cs:line 39 at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Net\VirtualNetwork\VirtualNetworkStream.cs:line 119 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskToApm.End[TResult](IAsyncResult asyncResult) in D:\j\workspace\windows_nt_re---37265eab\src\Common\src\System\Threading\Tasks\TaskToApm.cs:line 115 at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\FixedSizeReader.cs:line 143 --- End of stack trace from previous location where exception was thrown --- System.IO.Tests.File_Create_Tests.FileSystemWatcher_File_Create_SymLink [SKIP] Condition(s) not met: \""CanCreateSymbolicLinks\"" at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 731 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of inner exception stack trace --- at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Security.Tests.SslStreamStreamToStreamTest_Async.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 391 at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 36 at System.Net.Security.Tests.LoggingTest.<>c.b__1_1() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\LoggingTest.cs:line 39 at System.Diagnostics.Tracing.TestEventListener.RunWithCallback(Action`1 handler, Action body) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Diagnostics\Tracing\TestEventListener.cs:line 91 at System.Net.Security.Tests.LoggingTest.<>c.b__1_0() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.Security\tests\FunctionalTests\LoggingTest.cs:line 41 --- End of inner exception stack trace --- at RemoteExecutorConsoleApp.Program.Main(String[] args) in D:\j\workspace\windows_nt_re---37265eab\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 65 ```" +17104 area-System.Security DSAImportExport.ExportAutoKey test failed in CI on Windows https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4626/consoleText ``` System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey [FAIL] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : An internal consistency check failed Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.Cng\src\System\Security\Cryptography\CngKey.Create.cs(55,0): at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.Cng\src\Internal\Cryptography\CngAlgorithmCore.cs(68,0): at Internal.Cryptography.CngAlgorithmCore.GetOrGenerateKey(Int32 keySize, CngAlgorithm algorithm) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.Cng\src\System\Security\Cryptography\DSACng.Key.cs(25,0): at System.Security.Cryptography.DSACng.get_Key() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Security.Cryptography.Cng\src\System\Security\Cryptography\DSACng.ImportExport.cs(16,0): at System.Security.Cryptography.DSACng.ExportKeyBlob(Boolean includePrivateParameters) D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Security\Cryptography\DSACng.ImportExport.cs(232,0): at System.Security.Cryptography.DSACng.ExportParameters(Boolean includePrivateParameters) D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\DSA\DSAImportExport.cs(26,0): at System.Security.Cryptography.Dsa.Tests.DSAImportExport.ExportAutoKey() ``` +17106 area-System.Collections Early return possible in ImmutableInterlocked.AddOrUpdate If the `valueFactory` returns the same value as was present in the dictionary previously, the [`AddOrUpdate`](https://github.com/dotnet/corefx/blob/343561048c85321713c30b6e69ddd20cfac94dea/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableInterlocked.cs#L262) method can return that immediately. This optimization would be equivalent to the one currently performed by the [`Update`](https://github.com/dotnet/corefx/blob/343561048c85321713c30b6e69ddd20cfac94dea/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableInterlocked.cs#L42-L46) methods in the same class. :memo: There are two `AddOrUpdate` methods which this change applies to. +17107 area-Meta Need code coverage run for Unix +17108 area-System.Collections ImmutableInterlockedTests.InterlockedCompareExchangeArrayDefault has no assertions The [`ImmutableInterlockedTests.InterlockedCompareExchangeArrayDefault`](https://github.com/dotnet/corefx/blob/343561048c85321713c30b6e69ddd20cfac94dea/src/System.Collections.Immutable/tests/ImmutableInterlockedTests.cs#L172) test is missing assertions, so while it provides some code coverage it's not currently able to reveal bugs aside from exceptions. Assertions regarding `oldValue` should probably be added to improve the quality of this test. +17109 area-Infrastructure Update CoreClr to beta-25114-02 (master) +17110 area-System.Linq Use IsSZArray in S.Linq.Expressions Expressions had a `IsVector()` method that was a workaround for the unavailability of `IsSZArray`. Now that we have that, use that instead. Flip a some `if(!exp){}else{}` to `if(exp){}else{}`. Slightly more readable Do test for non-array passed to `ArrayLength()` only if `IsSZArray` fails, since anything that will fail the array check will fail that subsequent `IsSZArray` check anyway, avoiding one check in the non-exceptional case. Add a few more tests covering the cases hit by that last change, for confidence it doesn't change behaviour. +17111 area-System.Xml Fix DateTimeOffset XmlConvert test Fixes https://github.com/dotnet/corefx/issues/17036 Replaced `TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)` with `TimeZoneInfo.Local.GetUtcOffset(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 15, 55))` cc: @tarekgh @danmosemsft +17112 area-System.Runtime System.UnauthorizedAccessException in System.Tests.EnvironmentTests.OSVersion_ValidVersion Test failure in System.Tests.EnvironmentTests. https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/4636/consoleFull#-8467542952d31e50d-1517-49fc-92b3-2ca637122019 On Windows x86 ``` System.Tests.EnvironmentTests.OSVersion_ValidVersion [FAIL] 11:58:43 FileCleanupTestBase failed to create C:\Users\someuser\AppData\Local\Temp\EnvironmentTests_oxkp0ze3.kca due to System.UnauthorizedAccessException: Access to the path 'C:\Users\someuser\AppData\Local\Temp\EnvironmentTests_oxkp0ze3.kca' is denied. 11:58:43 at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 169 11:58:43 at System.IO.Directory.CreateDirectory(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 51 11:58:43 at System.IO.FileCleanupTestBase..ctor() in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\IO\FileCleanupTestBase.cs:line 24 11:58:43 Expected: True 11:58:43 Actual: False 11:58:43 Stack Trace: 11:58:43 D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\IO\FileCleanupTestBase.cs(28,0): at System.IO.FileCleanupTestBase..ctor() 11:58:43 at System.Diagnostics.RemoteExecutorTestBase..ctor() 11:58:43 at System.Tests.EnvironmentTests..ctor() 11:58:43 at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) 11:58:46 Finished: System.Runtime.Extensions.Tests ``` +17113 area-System.Net Disable more recently failing Net.Security tests. closes https://github.com/dotnet/corefx/issues/17103 closes https://github.com/dotnet/corefx/issues/17083 Adds to the list of tests disabled by #16516 #16534 +17114 area-System.Security Some perf improvements to dev/apple_crypto changes This addresses feedback brought up in https://github.com/dotnet/corefx/pull/17011. +17115 area-System.IO Make Deflate64 compression test netcoreapp specific resolves https://github.com/dotnet/corefx/issues/13244 +17116 area-System.Runtime Add helper method to describe features supported by the runtime "As we ramp the compiler and runtimes together, we want to prevent users from compiling code that we know will fail against a certain runtime. For instance, we plan for newer runtimes to support default implementations in interface, and the compiler should be able to detect that you're compiling against an older runtime without that support. Previously, this was done by having the compiler look for APIs that were added coincidentally with the new support. But as we expect to run into this problem more often, it makes sense to have a systematic design for testing feature support. The main consumer of this API would be the compiler. Whenever it needs to check for runtime support, it would look for the corresponding well-known enum member (for instance, `System.Runtime.CompilerServices.RuntimeCapabilities.SupportsDefaultImplementation`). If the member exists, then the feature check is successful (the feature is supported). The value for that enum member is ignored. A number of feature requests or known bugs interfering with compiler or language evolution is documented in https://github.com/dotnet/csharplang/issues/251 # Proposed API (Updated after API review 3/28/2017) (Updated to use ""const"" instead of ""static readonly"" after further discussion 4/13/2017) ```C# namespace System.Runtime.CompilerServices { public static class RuntimeFeature { // Presence of the field indicates runtime support public const string FixedGenericAttributes = nameof(FixedGenericAttributes); public const string DefaultImplementation = nameof(DefaultImplementation); // Runtime check public static bool IsSupported(string feature); } } // Usage if (RuntimeFeature.IsSupported(""SomeNewerFeature"") { // Use feature when emitting code at runtime (CodeDOM, RefEmit etc) } ``` * **Static detection**. The presence of a field alone indicates whether the code compiled against it can rely on the runtime providing the feature. This allows us to model runtime capabilities like any other API, which includes leveraging our existing infrastructure for detecting breaking changes. Also, this allows us to express this in .NET Standard and will version like any other API. * **Runtime detection**. There are some (very limited) scenarios where someone might want to do feature detection at runtime, in particular runtime code generation using RefEmit. We don't expect many developers to call this API. Usage of this API will always involve a literal, as having a field in scope would imply `IsSupported` must return `true`. Developers using light-up would discover the strings by looking at the documentation of a particular .NET platform. # Original proposed API (rejected in favor of the one above) ```C# namespace System.Runtime.CompilerServices { public enum RuntimeFeatures { FixedGenericAttributes, SupportsDefaultImplementation, // ... this list would grow over time } } ``` # Maintenance process Adding new enum members would go through the standard API review process. The main requirement is that enum names should mean the same thing across the different runtimes (desktop, core, RT, mono). Also, there needs to be documented agreement between the runtimes and compilers about the meaning of each new member. CC @gafter, @alekseyts, @vsadov, @jaredpar" +17117 area-System.Runtime Incorrect trailing TimeZoneInfo.AdjustmentRule on Unix "On Unix, time zone data is retrieved from tzfiles. See https://linux.die.net/man/5/tzfile. The transition times of each time zone are stored in this file. Every time the offset from UTC changes, an entry is made. In practice, they are ""forecasted"" out until about 2037. In V2 of the tzfile, the time transitions after this ""last"" transition date are represented by a ""POSIX"" style string that represents when DST starts and ends each year. These POSIX-TZ-environment-variable-style strings are documented http://man7.org/linux/man-pages/man3/tzset.3.html. > Here is an example for New Zealand, where the standard time (NZST) is 12 hours ahead of UTC, and daylight saving time (NZDT), 13 hours ahead of UTC, runs from the first Sunday in October to the third Sunday in March, and the changeovers happen at the default time of 02:00:00: TZ=""NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0"" However, our [GetAdjustmentRules()](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/TimeZoneInfo.Unix.cs#L124-L158) method is not translating this information correctly. Here is an example of using the `America/Los_Angeles` time zone and printing out the AdjustmentRules. Notice the top row says to start daylight transitions on the November 1 of each year, and to end it on December 31. Also notice that there is no `DaylightDelta` during this time, when it should be 1 hour. ``` DateStart DateEnd DaylightDelta DaylightTransitionStart DaylightTransitionEnd 11/01/2037 12/31/9999 00:00:00 M11.w1.d1 1:00 AM M12.w1.d31 11:59 PM 03/08/2037 11/01/2037 01:00:00 M3.w1.d8 3:00 AM M11.w1.d1 1:59 AM 11/02/2036 03/08/2037 00:00:00 M11.w1.d2 1:00 AM M3.w1.d8 1:59 AM 03/09/2036 11/02/2036 01:00:00 M3.w1.d9 3:00 AM M11.w1.d2 1:59 AM 11/04/2035 03/09/2036 00:00:00 M11.w1.d4 1:00 AM M3.w1.d9 1:59 AM ``` ### Code to print the above table ``` class Program { static void Main(string[] args) { TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById(""America/Los_Angeles""); StringBuilder builder = new StringBuilder(); builder.Append(""DateStart""); builder.Append(""\t""); builder.Append(""DateEnd""); builder.Append(""\t""); builder.Append(""\t""); builder.Append(""DaylightDelta""); builder.Append(""\t""); builder.Append(""DaylightTransitionStart""); builder.Append(""\t""); builder.Append(""DaylightTransitionEnd""); System.Console.WriteLine(builder); var rules = tz.GetAdjustmentRules(); foreach (var rule in rules.Reverse().Take(5)) { builder = new StringBuilder(); builder.Append(rule.DateStart.ToString(""MM/dd/yyyy"")); builder.Append(""\t""); builder.Append(rule.DateEnd.ToString(""MM/dd/yyyy"")); builder.Append(""\t""); builder.Append(rule.DaylightDelta); builder.Append(""\t""); PrintTransition(rule.DaylightTransitionStart, builder); builder.Append(""\t""); PrintTransition(rule.DaylightTransitionEnd, builder); System.Console.WriteLine(builder); } } private static void PrintTransition(TimeZoneInfo.TransitionTime transition, StringBuilder builder) { builder.Append($""M{transition.Month}.w{transition.Week}.d{transition.Day} {transition.TimeOfDay.ToShortTimeString()}""); } } ```" +17118 area-System.Memory Do loop unrolling for slow span copyto (slow path) +17120 area-System.Runtime TimeZoneInfo.AdjustmentRule information is not correct on Unix "On Unix, we are trying to populate the ""DaylightTransitionStart"" and ""DaylightTransitionEnd"" values for the AdjustmentRules. However, this design is flawed and leads to incorrect data being reported by the API. See https://github.com/dotnet/corefx/issues/2465#issuecomment-127645308 and the whole issue for discussion on how the Windows-centric TimeZoneInfo.AdjustmentRule API was modified to fit the information that is available on Unix. We are trying to hydrate the DaylightTransition Start and End data here https://github.com/dotnet/coreclr/blob/c2b5d5a707e3bb037df847e17b4e55e19fd5bfa8/src/mscorlib/src/System/TimeZoneInfo.Unix.cs#L124-L158. However, this data is incorrect on Unix. Take the `Africa/Casablanca` time zone from 1940-1945: From our [tests](https://github.com/dotnet/corefx/blob/6451bed4d4a667d9c05a41c0843504d020d283ab/src/System.Runtime/tests/System/TimeZoneInfoTests.cs#L1710-L1712) ``` // Africa/Casablanca had DST from // 1940-02-25T00:00:00.0000000Z {+01:00:00 DST=True} // 1945-11-17T23:00:00.0000000Z { 00:00:00 DST=False} ``` Printing the AdjustmentRules from around that time: ``` Baseoffset: 00:00:00 DateStart DateEnd DaylightDelta DaylightTransitionStart DaylightTransitionEnd 11/17/1945 06/10/1950 00:00:00 M11.w1.d17 11:00 PM M6.w1.d10 11:59 PM 02/25/1940 11/17/1945 01:00:00 M2.w1.d25 1:00 AM M11.w1.d17 11:59 PM 11/18/1939 02/24/1940 00:00:00 M11.w1.d18 11:00 PM M2.w1.d24 11:59 PM 09/12/1939 11/18/1939 01:00:00 M9.w1.d12 1:00 AM M11.w1.d18 11:59 PM 10/26/1913 09/11/1939 00:00:00 M10.w1.d26 12:30 AM M9.w1.d11 11:59 PM ``` Specifically, look at this row: ``` DateStart DateEnd DaylightDelta DaylightTransitionStart DaylightTransitionEnd 02/25/1940 11/17/1945 01:00:00 M2.w1.d25 1:00 AM M11.w1.d17 11:59 PM ``` What this says is that for times in this time zone between `02/25/1940` and `11/17/1945`, Daylight Savings Time starts on the 25th day of February and ends on the 17th day of November of every year. So from Nov 17 to Feb 25 every year, the time zone should not be in daylight savings time, which is incorrect because the time zone was in DST all year round those 5 years. I don't think we should be populating these Daylight TransitionTime values at all when giving the AdjustmentRules to public consumers. Anyone who wants to consume this information is going to be broken trying to use it. This is just going to lead to incorrect information being displayed to their users. ### Code to print the above table ``` class Program { static void Main(string[] args) { TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById(""Africa/Casablanca""); System.Console.WriteLine($""Baseoffset: {tz.BaseUtcOffset}""); StringBuilder builder = new StringBuilder(); builder.Append(""DateStart""); builder.Append(""\t""); builder.Append(""DateEnd""); builder.Append(""\t""); builder.Append(""\t""); builder.Append(""DaylightDelta""); builder.Append(""\t""); builder.Append(""DaylightTransitionStart""); builder.Append(""\t""); builder.Append(""DaylightTransitionEnd""); System.Console.WriteLine(builder); var rules = tz.GetAdjustmentRules(); DateTime startDate = new DateTime(1945, 12, 31); //DateTime startDate = DateTime.Now; foreach (var rule in rules.Where(r => r.DateStart < startDate).Reverse().Take(5)) { builder = new StringBuilder(); builder.Append(rule.DateStart.ToString(""MM/dd/yyyy"")); builder.Append(""\t""); builder.Append(rule.DateEnd.ToString(""MM/dd/yyyy"")); builder.Append(""\t""); builder.Append(rule.DaylightDelta); builder.Append(""\t""); PrintTransition(rule.DaylightTransitionStart, builder); builder.Append(""\t""); PrintTransition(rule.DaylightTransitionEnd, builder); System.Console.WriteLine(builder); } } private static void PrintTransition(TimeZoneInfo.TransitionTime transition, StringBuilder builder) { builder.Append($""M{transition.Month}.w{transition.Week}.d{transition.Day} {transition.TimeOfDay.ToShortTimeString()}""); } } ``` /cc @tarekgh @mj1856 " +17121 area-System.Net Rewrite System.Net.Security's FixedSizeReader.AsyncReadPacket as an async method Rewrite the FixedSizeReader.AsyncReadPacket as an async void method. It's still allocation-free if the delegated ReadAsync completes synchronously, but if it completes asynchronously, there's now less allocation (fewer and smaller objects); there's slightly less if a single read is required, but those same allocations are then reused across all reads, so if multiple reads are needed, there's a significant decrease. And the code is easier to read. Also changes FixedSizeReader to be a static class, avoiding several being allocations per SslStream. cc: @geoffkizer, @cipop, @davidsh, @Priya91 +17122 area-Infrastructure Enable multi queue for Linux /cc @MattGal +17125 area-System.Threading Add Thread.CurrentPrincipal, Thread.GetDomain, and Thread.GetDomainID for uapaot. +17126 area-System.Data SqlClient implementation and API is not complete in Core The following members are on types implemented in .NET Core. However these particular members are missing, although they are present on Desktop. The problem with this situation is - it defies user expectations that if a type X exists, code from other platforms that use X will work on .NET Core - it cannot be fixed without servicing -- it is not possible to supply a standalone package with the rest of the type definition No work is necessarily required here for 2.0. It's not part of NS2.0. I didn't look at usage data. I'm just flagging this so we're doing this consciously. --- **Updated lists to reflect current status (5/15):** ### Missing APIs ``` T:System.Data.SqlClient.OnChangeEventHandler T:System.Data.SqlClient.PoolBlockingPeriod T:System.Data.SqlClient.SqlAuthenticationMethod M:System.Data.SqlClient.SqlBulkCopyColumnMappingCollection.Clear M:System.Data.SqlClient.SqlBulkCopyColumnMappingCollection.RemoveAt(System.Int32) F:System.Data.SqlClient.SqlBulkCopyOptions.AllowEncryptedValueModifications M:System.Data.SqlClient.SqlClientFactory.System#IServiceProvider#GetService(System.Type) T:System.Data.SqlClient.SqlClientMetaDataCollectionNames T:System.Data.SqlClient.SqlColumnEncryptionCertificateStoreProvider T:System.Data.SqlClient.SqlColumnEncryptionCngProvider T:System.Data.SqlClient.SqlColumnEncryptionCspProvider T:System.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider P:System.Data.SqlClient.SqlCommand.ColumnEncryptionSetting P:System.Data.SqlClient.SqlCommand.Notification P:System.Data.SqlClient.SqlCommand.NotificationAutoEnlist M:System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery M:System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery(System.AsyncCallback,System.Object) M:System.Data.SqlClient.SqlCommand.BeginExecuteReader M:System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback,System.Object) M:System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback,System.Object,System.Data.CommandBehavior) M:System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.Data.CommandBehavior) M:System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader M:System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader(System.AsyncCallback,System.Object) M:System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult) M:System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult) M:System.Data.SqlClient.SqlCommand.EndExecuteXmlReader(System.IAsyncResult) M:System.Data.SqlClient.SqlCommand.ResetCommandTimeout T:System.Data.SqlClient.SqlCommandBuilder T:System.Data.SqlClient.SqlCommandColumnEncryptionSetting M:System.Data.SqlClient.SqlConnection.#ctor(System.String,System.Data.SqlClient.SqlCredential) P:System.Data.SqlClient.SqlConnection.AccessToken P:System.Data.SqlClient.SqlConnection.ColumnEncryptionKeyCacheTtl P:System.Data.SqlClient.SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled P:System.Data.SqlClient.SqlConnection.ColumnEncryptionTrustedMasterKeyPaths P:System.Data.SqlClient.SqlConnection.Credential M:System.Data.SqlClient.SqlConnection.ChangePassword(System.String,System.Data.SqlClient.SqlCredential,System.Security.SecureString) M:System.Data.SqlClient.SqlConnection.ChangePassword(System.String,System.String) M:System.Data.SqlClient.SqlConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction) M:System.Data.SqlClient.SqlConnection.RegisterColumnEncryptionKeyStoreProviders(System.Collections.Generic.IDictionary{System.String,System.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider}) T:System.Data.SqlClient.SqlConnectionColumnEncryptionSetting P:System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing P:System.Data.SqlClient.SqlConnectionStringBuilder.Authentication P:System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting P:System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset P:System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection P:System.Data.SqlClient.SqlConnectionStringBuilder.Enlist P:System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary P:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod P:System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding P:System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution T:System.Data.SqlClient.SqlCredential M:System.Data.SqlClient.SqlDataReader.IsCommandBehavior(System.Data.CommandBehavior) M:System.Data.SqlClient.SqlDataReader.System#Data#IDataRecord#GetData(System.Int32) T:System.Data.SqlClient.SQLDebugging T:System.Data.SqlClient.SqlDependency T:System.Data.SqlClient.SqlNotificationEventArgs T:System.Data.SqlClient.SqlNotificationInfo T:System.Data.SqlClient.SqlNotificationSource T:System.Data.SqlClient.SqlNotificationType M:System.Data.SqlClient.SqlParameter.#ctor(System.String,System.Data.SqlDbType,System.Int32,System.Data.ParameterDirection,System.Boolean,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Object) M:System.Data.SqlClient.SqlParameter.#ctor(System.String,System.Data.SqlDbType,System.Int32,System.Data.ParameterDirection,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Boolean,System.Object,System.String,System.String,System.String) P:System.Data.SqlClient.SqlParameter.ForceColumnEncryption P:System.Data.SqlClient.SqlParameter.UdtTypeName M:System.Data.SqlClient.SqlParameterCollection.Add(System.String,System.Object) M:System.Data.SqlClient.SqlParameterCollection.Add(System.String,System.Data.SqlDbType,System.Int32,System.String) ``` #### By Design missing * `T:System.Data.SqlClient.SqlProviderServices` - It is part of the EF provider model for old versions of EF that were part of .NET Framework. - see https://github.com/dotnet/corefx/issues/17126#issuecomment-301640792 ### Missing overrides ``` P:System.Data.SqlClient.SqlClientFactory.CanCreateDataSourceEnumerator M:System.Data.SqlClient.SqlClientFactory.CreateCommandBuilder M:System.Data.SqlClient.SqlClientFactory.CreateDataSourceEnumerator M:System.Data.SqlClient.SqlClientFactory.CreatePermission(System.Security.Permissions.PermissionState) M:System.Data.SqlClient.SqlClientPermission.Add(System.String,System.String,System.Data.KeyRestrictionBehavior) M:System.Data.SqlClient.SqlClientPermission.Copy M:System.Data.SqlClient.SqlClientPermissionAttribute.CreatePermission M:System.Data.SqlClient.SqlColumnEncryptionCertificateStoreProvider.DecryptColumnEncryptionKey(System.String,System.String,System.Byte[]) M:System.Data.SqlClient.SqlColumnEncryptionCertificateStoreProvider.EncryptColumnEncryptionKey(System.String,System.String,System.Byte[]) M:System.Data.SqlClient.SqlColumnEncryptionCngProvider.DecryptColumnEncryptionKey(System.String,System.String,System.Byte[]) M:System.Data.SqlClient.SqlColumnEncryptionCngProvider.EncryptColumnEncryptionKey(System.String,System.String,System.Byte[]) M:System.Data.SqlClient.SqlColumnEncryptionCspProvider.DecryptColumnEncryptionKey(System.String,System.String,System.Byte[]) M:System.Data.SqlClient.SqlColumnEncryptionCspProvider.EncryptColumnEncryptionKey(System.String,System.String,System.Byte[]) P:System.Data.SqlClient.SqlCommandBuilder.CatalogLocation P:System.Data.SqlClient.SqlCommandBuilder.CatalogSeparator P:System.Data.SqlClient.SqlCommandBuilder.QuotePrefix P:System.Data.SqlClient.SqlCommandBuilder.QuoteSuffix P:System.Data.SqlClient.SqlCommandBuilder.SchemaSeparator M:System.Data.SqlClient.SqlCommandBuilder.QuoteIdentifier(System.String) M:System.Data.SqlClient.SqlCommandBuilder.UnquoteIdentifier(System.String) M:System.Data.SqlClient.SqlConnection.GetSchema M:System.Data.SqlClient.SqlConnection.GetSchema(System.String) M:System.Data.SqlClient.SqlConnection.GetSchema(System.String,System.String[]) P:System.Data.SqlClient.SqlConnectionStringBuilder.IsFixedSize P:System.Data.SqlClient.SqlDataAdapter.UpdateBatchSize M:System.Data.SqlClient.SqlDataReader.Close M:System.Data.SqlClient.SqlDataReader.GetSchemaTable ``` **These were removed based on further investigation:** ``` M:System.Data.SqlClient.SqlConnection.EnlistTransaction(System.Transactions.Transaction) P:System.Data.SqlClient.SqlParameter.SourceVersion P:System.Data.SqlClient.SqlParameterCollection.IsFixedSize P:System.Data.SqlClient.SqlParameterCollection.IsReadOnly P:System.Data.SqlClient.SqlParameterCollection.IsSynchronized ``` **These were already fixed:** * `M:System.Data.SqlClient.SqlClientFactory.CreateDataAdapter` - https://github.com/dotnet/corefx/commit/88f562c80d8d78218ccc7b4be8b23ceab712a5f6 ---------- Original obsolete list:
``` MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String, System.Boolean, System.Boolean, System.Data.SqlClient.SortOrder, System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.DbType.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.Type.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServer(System.Data.DataRow[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServer(System.Data.DataTable)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServer(System.Data.DataTable, System.Data.DataRowState)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServer(System.Data.IDataReader)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.DataRow[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.DataRow[], System.Threading.CancellationToken)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.DataTable)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.DataTable, System.Data.DataRowState)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.DataTable, System.Data.DataRowState, System.Threading.CancellationToken)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.DataTable, System.Threading.CancellationToken)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.IDataReader)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopy.WriteToServerAsync(System.Data.IDataReader, System.Threading.CancellationToken)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopyOptions System.Data.SqlClient.SqlBulkCopyOptions.AllowEncryptedValueModifications' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlClientFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand..ctor(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction, System.Data.SqlClient.SqlCommandColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback, System.Object, System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Clone()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteXmlReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.set(System.Data.Sql.SqlNotificationRequest)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ResetCommandTimeout()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection..ctor(System.String, System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.set(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ChangePassword(System.String, System.Data.SqlClient.SqlCredential, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ChangePassword(System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ColumnEncryptionTrustedMasterKeyPaths.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.set(System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.RegisterColumnEncryptionKeyStoreProviders(System.Collections.Generic.IDictionary)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.set(System.Data.SqlClient.SqlAuthenticationMethod)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting.set(System.Data.SqlClient.SqlConnectionColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Enlist.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Enlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary.set(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.set(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlDataReader.IsCommandBehavior(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Boolean, System.Object, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.set(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Data.SqlDbType, System.Int32, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. ```
from https://github.com/dotnet/corefx/blob/master/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +17127 area-Infrastructure AVs under code coverage #15839 - 2017/2/5 - System.Net.Http.Functional.Tests #16371 - 2017/2/21 - System.Net.Mail.Functional.Tests #16348 - 2017/2/21 - System.Xml.XmlDocument.Tests ## #15839 - 2017/2/5 - System.Net.Http.Functional.Tests https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows_prtest/17/consoleText ``` Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at Internal.Cryptography.Pal.ChainPal.MapRevocationFlags(X509RevocationMode revocationMode, X509RevocationFlag revocationFlag) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in D:\j\workspace\code_coverage---d5838fef\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\ChainPal.BuildChain.cs:line 71 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in D:\j\workspace\code_coverage---d5838fef\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Chain.cs:line 118 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) in D:\j\workspace\code_coverage---d5838fef\src\System.Security.Cryptography.X509Certificates\src\System\Security\Cryptography\X509Certificates\X509Chain.cs:line 105 at System.Net.Http.WinHttpCertificateHelper.BuildChain(X509Certificate2 certificate, String hostName, Boolean checkCertificateRevocationList, X509Chain& chain, SslPolicyErrors& sslPolicyErrors) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpCertificateHelper.cs:line 31 at System.Net.Http.WinHttpRequestCallback.OnRequestSendingRequest(WinHttpRequestState state) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 272 at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 94 at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 47 ``` ## #16371 - 2017/2/21 - System.Net.Mail.Functional.Tests https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows_prtest/31/consoleFull#-61246470379fe3b83-f408-404c-b9e7-9207d232e5fc ``` 08:26:44 Unhandled Exception: 08:26:44 Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 08:26:44 at System.Net.DebugThreadTracking.SetThreadKind(ThreadKinds kind) 08:26:44 at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\src\System\Net\Sockets\BaseOverlappedAsyncResult.Windows.cs:line 69 08:26:44 at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 08:26:44 at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 08:26:44 System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 08:26:44 at System.Net.Sockets.NetworkStream..ctor(Socket socket, FileAccess access, Boolean ownsSocket) 08:26:44 at System.Net.Sockets.NetworkStream..ctor(Socket socket, Boolean ownsSocket) in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\src\System\Net\Sockets\NetworkStream.cs:line 42 08:26:44 at System.Net.Sockets.TcpClient.GetStream() in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Sockets\src\System\Net\Sockets\TCPClient.cs:line 149 08:26:44 at System.Net.Mail.Tests.SmtpServer.Run() in D:\j\workspace\code_coverage---d5838fef\src\System.Net.Mail\tests\Functional\SmtpServer.cs:line 60 08:26:44 at System.Threading.Thread.ThreadMain_ThreadStart() in D:\j\workspace\code_coverage---d5838fef\src\System.Threading.Thread\src\System\Threading\Thread.cs:line 103 08:26:44 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 08:26:44 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 08:26:44 at System.Threading.ThreadHelper.ThreadStart() ``` ## #16348 - 2017/2/21 - System.Xml.XmlDocument.Tests https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/107/consoleText ``` Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at System.Xml.XmlTextReaderImpl.ElementNamespaceLookup() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 5051 at System.Xml.XmlTextReaderImpl.ParseElement() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 4500 at System.Xml.XmlTextReaderImpl.ParseDocumentContent() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 4036 at System.Xml.XmlTextReaderImpl.Read() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs:line 1202 at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Dom\XmlLoader.cs:line 50 at System.Xml.XmlDocument.Load(XmlReader reader) in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Dom\XmlDocument.cs:line 1261 at System.Xml.XmlDocument.LoadXml(String xml) in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\src\System\Xml\Dom\XmlDocument.cs:line 1279 at System.Xml.Tests.NamespaceURITests.AllNodesForEmptyString() in D:\j\workspace\code_coverage---b14a30e5\src\System.Private.Xml\tests\XmlDocument\XmlNodeTests\NamespaceURITests.cs:line 19 --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 147 at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 224 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__0() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 209 at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 208 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 173 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.b__45_0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 107 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestInvoker`1.RunAsync() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 156 at Xunit.Sdk.XunitTestRunner.InvokeTestMethodAsync(ExceptionAggregator aggregator) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestRunner.cs:line 84 at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestRunner.cs:line 67 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) at Xunit.Sdk.TestRunner`1.<>c__DisplayClass43_0.b__0() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestRunner.cs:line 149 at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.core\Sdk\ExceptionAggregator.cs:line 107 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestRunner`1.d__43.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestRunner.cs:line 149 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestRunner`1.RunAsync() at Xunit.Sdk.XunitTestCaseRunner.RunTestAsync() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestCaseRunner.cs:line 106 at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCaseRunner.cs:line 82 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCaseRunner`1.RunAsync() at Xunit.Sdk.XunitTestCase.RunAsync(IMessageSink diagnosticMessageSink, IMessageBus messageBus, Object[] constructorArguments, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\XunitTestCase.cs:line 106 at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestMethodRunner.cs:line 45 at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 136 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestMethodRunner.cs:line 106 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunAsync() at Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(ITestMethod testMethod, IReflectionMethodInfo method, IEnumerable`1 testCases, Object[] constructorArguments) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestClassRunner.cs:line 152 at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 205 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestClassRunner.cs:line 163 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunAsync() at Xunit.Sdk.XunitTestCollectionRunner.RunTestClassAsync(ITestClass testClass, IReflectionTypeInfo class, IEnumerable`1 testCases) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestCollectionRunner.cs:line 124 at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 130 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\TestCollectionRunner.cs:line 101 at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunAsync() at Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync(IMessageBus messageBus, ITestCollection testCollection, IEnumerable`1 testCases, CancellationTokenSource cancellationTokenSource) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestAssemblyRunner.cs:line 203 at Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.b__3() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Frameworks\Runners\XunitTestAssemblyRunner.cs:line 179 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntry() at System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c.<.cctor>b__8_0(Object s) at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 107 at Xunit.Sdk.MaxConcurrencySyncContext.<>c__DisplayClass11_0.b__0(Object _) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 96 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at lambda_method(Closure , Object , Object ) at Xunit.Sdk.ExecutionContextHelper.Run(Object context, Action`1 action) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\Utility\ExecutionContextHelper.cs:line 111 at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.execution\Sdk\MaxConcurrencySyncContext.cs:line 89 at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) in C:\BuildAgent\work\cb37e9acf085d108\src\common\XunitWorkerThread.cs:line 38 at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntryUnsafe() at System.Threading.Tasks.ThreadPoolTaskScheduler.<>c.<.cctor>b__10_0(Object s) at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart(Object obj) ``` +17131 area-Infrastructure Ensure consistent usage of Roslyn compilers Right now we have a custom targets and task that allows us to pass in the host process via OverrideToolHost (https://github.com/dotnet/corefx/blob/977f6e021235b8ff5bab8baf4bf53d03af4706f8/Tools-Override/Build.Common.props#L40) which is inconsistent with the shipping task library. This causes some issues like https://github.com/dotnet/coreclr/issues/10056 and also requires us to maintain a private fork which isn't ideal. That hack was a workaround for https://github.com/Microsoft/msbuild/issues/720 (replaced with https://github.com/Microsoft/msbuild/issues/1669) but we should work around this in a different way. Mostly likely similar to how CLI did it with a wrapper script https://github.com/dotnet/cli/blob/rel/1.0.0/src/dotnet/commands/dotnet-msbuild/MSBuildForwardingApp.cs#L109-L113. On top of cleaning up this we should remove a lot of our dead properties like UseRoslynCompiler (https://github.com/dotnet/corefx/blob/977f6e021235b8ff5bab8baf4bf53d03af4706f8/Tools-Override/Build.Common.props#L44) and move UseSharedCompilation (https://github.com/dotnet/corefx/blob/977f6e021235b8ff5bab8baf4bf53d03af4706f8/Tools-Override/Build.Common.props#L45) into https://github.com/dotnet/corefx/blob/0eb6859a29501722475dfec484f80c43de0c70e0/Tools-Override/Roslyn.Common.props. We should also start using CSharpCoreTargetsPath like Rolsyn itself does (https://github.com/dotnet/roslyn/blob/master/build/Targets/Settings.props#L121), instead of computing the RoslynPropsFile directly and importing it at (https://github.com/dotnet/corefx/blob/b1865ea0847a7a86baefe8378b772ecf0b785681/dir.props#L278) . This should better set us up to consume the custom compiler without a bunch of customizations we have today. cc @chcosta @joperezr +17132 area-System.Diagnostics Fix secannotate errors introduced by #17076 in DiagnosticSource "On the target that do not declare AllowPartiallyTrustedCallers (all except net46 and netfx), secannotate shows a critical error ```c# 'System.Diagnostics.Activity.GetRandomNumber()', a security critical member, is marked with a safe-critical annotation. This annotation should be removed. ``` This change uses `SecuritySafeCritical` attribute only on net46 and netfx." +17133 area-System.Security CAS related stubs missing some members breaking desktop compat These should be trivially added (with null impl/return default(T)) to improve compatibility. @Petermarcu noted this. ``` MembersMustExist : Member 'System.Security.CodeAccessPermission.RevertAll()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.CodeAccessPermission.RevertAssert()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.CodeAccessPermission.RevertDeny()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.CodeAccessPermission.RevertPermitOnly()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.HostSecurityManager.GenerateAppDomainEvidence(System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.HostSecurityManager.GenerateAssemblyEvidence(System.Type, System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.HostSecurityManager.GetHostSuppliedAppDomainEvidenceTypes()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.HostSecurityManager.GetHostSuppliedAssemblyEvidenceTypes(System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Permissions.FileIOPermission..ctor(System.Security.Permissions.FileIOPermissionAccess, System.Security.AccessControl.AccessControlActions, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Permissions.FileIOPermission..ctor(System.Security.Permissions.FileIOPermissionAccess, System.Security.AccessControl.AccessControlActions, System.String[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Permissions.RegistryPermission.AddPathList(System.Security.Permissions.RegistryPermissionAccess, System.Security.AccessControl.AccessControlActions, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.PermissionSet.AddPermissionImpl(System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.PermissionSet.GetEnumeratorImpl()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.PermissionSet.GetPermissionImpl(System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.PermissionSet.RemovePermissionImpl(System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.PermissionSet.SetPermissionImpl(System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.ApplicationTrust..ctor(System.ApplicationIdentity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.ApplicationTrust.ApplicationIdentity.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.ApplicationTrust.ApplicationIdentity.set(System.ApplicationIdentity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.ApplicationTrustCollection.Find(System.ApplicationIdentity, System.Security.Policy.ApplicationVersionMatch)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.ApplicationTrustCollection.Remove(System.ApplicationIdentity, System.Security.Policy.ApplicationVersionMatch)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Hash.CreateSHA256(System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Hash.SHA256.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.TrustManagerContext.PreviousApplicationIdentity.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.TrustManagerContext.PreviousApplicationIdentity.set(System.ApplicationIdentity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence..ctor(System.Security.Policy.EvidenceBase[], System.Security.Policy.EvidenceBase[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.AddAssemblyEvidence(T)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.AddHostEvidence(T)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.GetAssemblyEvidence()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.GetHostEvidence()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityManager.CurrentThreadRequiresSecurityContextCapture()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityManager.GetStandardSandbox(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. ``` +17134 area-System.Security Evidence is missing 5 stubs These should be trivially added (and do nothing) to improve compatibility. ``` MembersMustExist : Member 'System.Security.Policy.Evidence..ctor(System.Security.Policy.EvidenceBase[], System.Security.Policy.EvidenceBase[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.AddAssemblyEvidence(T)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.AddHostEvidence(T)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.GetAssemblyEvidence()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Policy.Evidence.GetHostEvidence()' does not exist in the implementation but it does exist in the contract. ``` +17135 area-System.Runtime Helper class for dealing with native shared libraries and function pointers "# Approved Proposal From https://github.com/dotnet/corefx/issues/17135#issuecomment-365364216 ```C# public sealed class NativeLibrary { public static bool TryLoad(string name, Assembly caller, DllImportSearchPaths paths, out NativeLibrary result); public IntPtr Handle { get; } public bool TryGetDelegate(string name, out TDelegate result) where TDelegate : class; public bool TryGetDelegate(string name, bool exactSpelling, out TDelegate result) where TDelegate : class; public bool TryGetSymbolAddress(string symbolName, out IntPtr result); } ``` # Original proposal Note: Proposal updated based on discussion: https://github.com/dotnet/corefx/issues/17135#issuecomment-353571556 ## Background Many popular C-callable shared libraries exist which do not have a consistent name across platforms. Examples include: * SDL2 * OpenAL * Vulkan * Many more (the above are just ones I've used personally) CoreCLR does not support any notion of ""remappable"" PInvokes, a la DllImport in Mono. The name of the shared library must be encoded directly in the `DllImport` attribute, which makes it impossible to create a single wrapper assembly which works on many platforms. This imposes an unnecessary development and deployment burden on library developers who could otherwise ship a single, simple DLL. Many third-party libraries which rely on PInvoke's only work on Mono platforms because of the DllMap feature. These libraries do not work on .NET Core at all, even if they are otherwise completely compatible with its profile. The alternative to using `[DllImport]` is to write logic which manually opens the shared library, discovers function pointers, and converts them to managed delegates. In a sense, this very similar to what we are doing with our ""Portable Linux"" version of the runtime and native shims. However, this code can be complicated, tedious, and error-prone. This proposal is for a small helper library, with optional cooperation by the runtime, to make this scenarion easier. ## Proposed API ```C# namespace System.Runtime.InteropServices { // Exposes functionality for loading native shared libraries and function pointers. public class NativeLibrary : IDisposable { // The default search paths public static IEnumerable NativeLibrarySearchDirectories { get; } // The operating system handle of the loaded library. public IntPtr Handle { get; } // Constructs a new NativeLibrary using the platform's default library loader. public NativeLibrary(string name); public NativeLibrary(string name, DllImportSearchPath paths); public static NativeLibrary Open(string name, DllImportSearchPath paths, bool throwOnError); // Loads a native function pointer by name. public IntPtr LoadFunction(string name); // Loads a function whose signature matches the given delegate type's signature. // This is roughly equivalent to calling LoadFunction + Marshal.GetDelegateForFunctionPointer public T LoadDelegate(string name); // Lookup a symbol (not a function) from the specified dynamic library public IntPtr SymbolAddress(string name); // Frees the native library. Function pointers retrieved from this library will be void. public void Dispose(); } } ``` ## Usage ```C# public static class Sdl2 { private static NativeLibrary s_sdl2NativeLib = new NativeLibrary(GetSdl2LibraryName()); // Determine library name at runtime. This could be influenced by a DllMap-like policy if desired. private static string GetSdl2LibraryName(); private delegate IntPtr SDL_CreateWindow_d(string title, int x, int y, int w, int h, int flags); private static SDL_CreateWindow_d SDL_CreateWindow_ptr = s_sdl2NativeLib.LoadFunctionPointer(""SDL_CreateWindow""); public static IntPtr CreateWindow(string title, int x, int y, int w, int h, uint flags) => SDL_CreateWindow_ptr(title, x, y, w, h, flags); } public static void Main() { IntPtr window = Sdl2.CreateWindow(""WindowTitle"", 100, 100, 960, 540, 0); } ``` ## Open Design Questions ### Probing Path Logic CoreCLR applies particular probing logic when discovering shared libraries listed in a `DllImport`. Ideally, calling `new NativeLibrary(""lib"")` would follow the same probing logic as `[DllImport(""lib"")], so that PInvoke's can be easily converted. This could potentially be solved with some internal or public runtime helper function exposed from System.Private.CoreLib. Alternatively, the constructor for `NativeLibrary` could include another parameter which controlled probing logic, allowing someone to plug their own logic in. ### Generic delegate types The simplest way to convert from a native function pointer to a clean managed delegate is through the use of `Marshal.GetDelegateForFunctionPointer(IntPtr)`. Unfortunately, this cannot be used with generic delegates, e.g. `Func` in the above example. Given that many native function signatures include pointer types, which cannot be used as generic type arguments, other than as `IntPtr`, this is not a major problem. However, many cases would benefit from being able to use `Action` and `Func` types in the `LoadFunction` method. We could probably allow this using Reflection.Emit, but it would most likely be ugly, complicated, and slower than if custom delegate types were used. If `Marshal.GetDelegateForFunctionPointer(IntPtr)` accepted generic delegate types, this feature would greatly benefit. ### Disposability and lifetime tracking The constructor of `NativeLibrary` involves opening an operating system handle to a native shared library, via `LoadLibrary`, `dlopen`, etc. I have proposed that `NativeLibrary` be disposable, which would involve calling `FreeLibrary`, `dlclose`, etc. Is this desirable or useful? A related issue is how the runtime currently tracks and manages these handles. Should handles opened by `NativeLibrary` be coordinated and tracked in the same way that other handles (via PInvoke, etc.) are? ## Prototype I have a prototype version of this library implemented here: https://github.com/mellinoe/nativelibraryloader, and I have successfully used the pattern described here in a few projects. @yizhang82 @janvorli @danmosemsft @conniey " +17136 area-Meta When method is not impl, we should not throw NotSupportedException() We standardized on throwing PlatformNotSupportedException() even if we don't support the API on _any_ platform. We're throwing NSE in a number of places that we added in 2.0, and according to the above principle we should not. Random example https://github.com/dotnet/corefx/blob/master/src/System.Security.Permissions/src/System/Security/SecurityContext.cs#L12 I don't see this as a high priority to fix for 2.0 generally and it would be a breaking change later so we may want to just close this. @stephentoub since he added the useages above just in case his understanding was different. @weshaggard +17138 area-System.Net Test failure: System.Net.Tests.HttpWebRequestHeaderTest/HttpWebRequest_Timeout_Throws Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpWebRequestHeaderTest/HttpWebRequest_Timeout_Throws` has failed. Assert.InRange() Failure\r Range: (1 - 10000)\r Actual: 11094 Stack Trace: at System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_Timeout_Throws() Build : Master - 20170315.01 (Core Tests) Failing configurations: - Windows.7.Amd64 - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170315.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestHeaderTest~2FHttpWebRequest_Timeout_Throws +17139 area-System.Data Integrated Auth On SqlClient is completely broken The integrated auth in SqlClient is completely broken. Opening this issue to track the progress. +17141 area-System.Net Instrument HttpClientHandler on netfx with DiagnosticSource/Activity This changes enables instrumentation for outgoing Http requests with DiagnosticSource and Activity API on netfx. It was previously introduced for .net core in #16393. /cc @vancem +17143 area-System.Memory Vectorize SpanHelpers.IndexOf for byte /cc @jkotas @KrzysztofCwalina @davidfowl @ahsonkhan +17144 area-System.Runtime Missing AllowPartiallyTrustedCallers on ValueTuple "Relates to https://github.com/dotnet/roslyn/issues/17783 The attribute is missing on both the `netstandard1.0` and `portable-net40+sl4+win8+wp8` targets. ```C# // \\Mac\Home\Documents\Visual Studio 2017\Projects\DiscardClassification\DiscardClassification\bin\Debug\System.ValueTuple.dll // System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 // Global type: // Architecture: AnyCPU (64-bit preferred) // Runtime: .NET 4.0 using System; using System.Diagnostics; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; [assembly: AssemblyVersion(""4.0.1.0"")] [assembly: CLSCompliant(true)] [assembly: Debuggable] [assembly: AssemblyCompany(""Microsoft Corporation"")] [assembly: AssemblyCopyright(""© Microsoft Corporation. All rights reserved."")] [assembly: AssemblyDefaultAlias(""System.ValueTuple"")] [assembly: AssemblyDescription(""System.ValueTuple"")] [assembly: AssemblyFileVersion(""4.6.24705.01"")] [assembly: AssemblyInformationalVersion(""4.6.24705.01. Commit Hash: 4d1af962ca0fede10beb01d197367c2f90e92c97"")] [assembly: AssemblyMetadata("".NETFrameworkAssembly"", """")] [assembly: AssemblyMetadata(""Serviceable"", ""True"")] [assembly: AssemblyProduct(""Microsoft® .NET Framework"")] [assembly: AssemblyTitle(""System.ValueTuple"")] [assembly: NeutralResourcesLanguage(""en-US"")] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] ```" +17145 area-System.Net Added HttpStatusCode.TooManyRequests (429) This statuscode is often returned when quotas or throttling limits are being applied to an API. This is often done using an API platform such as Azure API Management or Nginx. Since API's are gaining popularity and more companies are introducing these limits, this statuscode will appear more often in real live scenarios and therefore deserves a representation in this enum. +17147 area-System.Runtime Add an (U)Int128 type "While I know it does exist BigInteger sometimes it would be needed to have a type that is explicit 128 bit and nothing more probably it would be more efficient too (at least in a 64 bit machine at it could be represented as a couple of longs). An Int128 is the ""natural"" type of GUID, IP6 addresses and more at low level but nevertheless true x86 instruction CPUID returns 4 integers (in 4 registers) that need to be ""concatenated"" to get the real value, the real ""intent"" was to return an Int128. I have doubt if an ""alias"" could exist if a long is an abbreviation of ""longword"" and Int128 could be octa as abbreviation of ""octaword""? The literal at that point could be ""O"" or ""o""..." +17149 area-System.Net Add value to HttpStatusCode enum: TooManyRequests (=HTTP 429) This statuscode is often returned when quotas or throttling limits are being applied to an API. This is often done using an API platform such as Azure API Management or Nginx. Since API's are gaining popularity and more companies are introducing these limits, this statuscode will appear more often in real live scenarios and therefore deserves a representation in this enum. See the commit on my fork (1 file change): https://github.com/kwaazaar/corefx/commit/f52cd49a696b7c39bc209b09f3058815fd9396ea +17153 area-System.Runtime Can't find ways for custom marshaling I have created new .NET Core console app in VS 2017 (targeting .NETCoreApp 1.1) and I want to use custom marshaling in my code, but I stuck with 2 issues: 1. There is no UnmanagedType.CustomMarshaler (== 44) enum member anymore 2. There is no ICustomMarshaler anymore (I guess since https://github.com/dotnet/corefx/pull/15769) So, there is a question: was custom marshaling removed from .NET Core or I'm just missing something? +17154 area-System.Net ReceiveMessageFromV6BoundToSpecificV4_NotReceived failed in CI on Ubuntu https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/4644/consoleText ``` System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromV6BoundToSpecificV4_NotReceived [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: typeof(Xunit.Sdk.EqualException): Assert.Equal() Failure Expected: ::1 Actual: ::ffff:127.0.0.1 Stack Trace: Starting: System.Threading.Timer.Tests Using as the test runtime folder. Running tests... Start time: 13:43:32 Commands: source Dumpling.sh /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/bin/testhost/netcoreapp-Linux-Release-x64//dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests CollectDumps 0 System.Runtime.InteropServices.Tests /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/bin/AnyOS.AnyCPU.Release/System.Runtime.InteropServices.Tests/netcoreapp /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/System.Runtime.InteropServices/tests executing ulimit -c unlimited xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.InteropServices.Tests /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(2086,0): at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFrom_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) ``` +17156 area-System.Collections Add netfx ParamName values in SortedListTests When doing `Array.CopyTo` and the destination array is multidimensional it throws an `ArgumentException` in desktop we don't assign a `ParamName` so it is null. Changed to use in those cases `AssertExtensions` that accept both, Core and desktop expected `ParamName` and with the `RuntimeInformation` if it is running in netfx does the `Assert` against the desktop expected `ParamName` if not uses the Core one. This tests where failing in netfx, this will fix them. cc: @tarekgh @danmosemsft +17157 area-Infrastructure Ensure quotes are preserved in Helix submission On Linux the quotes get dropped, which causes problems with the comma +17158 area-System.Net Implement Socket.DontFragment on Unix Contributes to https://github.com/dotnet/corefx/issues/9350 Fixes https://github.com/dotnet/corefx/issues/9652 cc: @mellinoe, @geoffkizer, @Priya91 +17159 area-System.Collections System collections specialized add netfx ParamName When doing Array.CopyTo and the destination array is multidimensional it throws an ArgumentException in desktop we don't assign a ParamName so it is null. This fixes failing tests in `System.Collections.Specialized` in netfx. cc: @tarekgh @danmosemsft +17160 area-Serialization XmlSerializer not building correctly for UAPAOT Here's the call stack I'm seeing, I don't think this can work in this configuration: System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly($XmlMapping[] xmlMappings, Type[] types, String defaultNamespace) System.Xml.Serialization.TempAssembly..ctor($XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location) System.Xml.Serialization.XmlSerializer.GenerateTempAssembly($XmlMapping xmlMapping, Type type, String defaultNamespace, String location) System.Xml.Serialization.XmlSerializer.GenerateTempAssembly($XmlMapping xmlMapping, Type type, String defaultNamespace) System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) +17161 area-Infrastructure Another attempt at fixing the quoting +17163 area-System.Security Some members of ECDsaCng are missing from Core The following members are on types implemented in .NET Core. However on desktop they have more members. The members below are missing from Core. I believe that's because the types are included in NS, and the NS definitions don't include them because they're not in Xamarin (?) even though at least some of them they've been in .NET Desktop for a while. The problem with this situation is - it defies user expectations that if a type X exists, code from other platforms that use X will work on .NET Core: instead they have to reason about individual members on X - in some cases it cannot be fixed without servicing -- for instance methods we could supply a package with extension methods, but it would not be binary-compatible as different type identity We are considering [removing these types from NS2.0](https://github.com/dotnet/standard/issues/235) but that should not be relevant. I didn't look at usage data. Any that are not be technically possible on Core in ideally would exist but throw PlatformNotSupportedException. Even if we don't have time to implement them, it's potentially valuable to do that (allows compile to succeed, for a runtime path that may not be followed). ``` MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.FromXmlString(System.String, System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.set(System.Security.Cryptography.CngAlgorithm)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[], System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ToXmlString(System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Int32, System.Int32, System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.IO.Stream, System.Byte[])' does not exist in the implementation but it does exist in the contract ``` I've not included those below that are clearly dependent on ACL's. We made the decision to omit those to avoid an undesired reference to ACLs from a NS library. If this isn't NS we could possibly reconsider that. ``` MembersMustExist : Member 'System.Security.Cryptography.CspKeyContainerInfo.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.IntPtr)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract ``` +17164 area-System.Security Some System.Security.Principal types are missing members present in Desktop The following members are on types implemented in .NET Core. However on desktop in 4.5+ they have more members. The members below are missing from Core. The problem with this situation is - it defies user expectations that if a type X exists, code from other platforms that use X will work on .NET Core: instead they have to reason about individual members on X - in some cases it cannot be fixed without servicing -- for instance methods we could supply a package with extension methods, but it would not be binary-compatible as different type identity I didn't look at usage data. Any that are not be technically possible on Core in ideally would exist but throw PlatformNotSupportedException. Even if we don't have time to implement them, it's potentially valuable to do that (allows compile to succeed, for a runtime path that may not be followed). This is not a NS2.0 issue. The types are not in NS2.0 ``` MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.Security.Principal.WindowsIdentity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate(System.IntPtr)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.UserClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.UserClaims.get()' does not exist in the implementation but it does exist in the contract. ``` also ``` MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlow()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlowWindowsIdentity()' does not exist in the implementation but it does exist in the contract ``` For completeness, these relevant types are missing: ``` TypesMustExist : Type 'System.Security.Principal.WindowsAccountType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Principal.WindowsImpersonationContext' does not exist in the implementation but it does exist in the contract. ``` +17165 area-System.Runtime [master] Inbox value tuple Master branch version of https://github.com/dotnet/corefx/pull/16447 /cc @jcouv @marek-safar @weshaggard +17166 area-System.Data Managed SNI on windows doesnt allow LocalDB connectivity Managed SNI should be able to connect to LocalDb on windows +17167 area-System.Net Implement Socket.SendPacketsAsync on Unix There's no built-in API equivalent to this on Unix, so we just approximate it with a basic implementation on top of other Socket functionality. Fixes https://github.com/dotnet/corefx/issues/4007 cc: @geoffkizer, @Priya91, @cipop +17168 area-System.Memory Removing Span/ROS char overloads in extension methods cc @KrzysztofCwalina, @jkotas Part of https://github.com/dotnet/corefxlab/issues/1314 +17169 area-Infrastructure Updating uapaot baseline files Updating uap and uapaot baselines FYI: @weshaggard @joshfree @danmosemsft +17170 area-System.Numerics Move two Complex tests out of netfx test case "I've moved two of these test cases into the ""Sqrt_AdvancedTestData"" method, because they do not work on .NET Framework. These are new test cases which were added as part of the improvements to the .NET Core version by @dcwuser in PR: https://github.com/dotnet/corefx/pull/15338. @safern " +17172 area-Infrastructure Use PB_TargetQueue instead of CreateHelixArguments Also fixes quoting (again) +17173 area-System.Net Increase timeout for HttpWebRequest_Timeout_Throws Fix https://github.com/dotnet/corefx/issues/17138 @davidsh +17174 area-System.Net HttpClient crashes when reading a stream with trailing headers on Linux HttpClient ignores trailing headers on windows, however crash when the same headers are read on Ubuntu with System.Net.Http.HttpRequestException : Error while copying content to a stream. ---- System.IO.IOException : The read operation failed, see inner exception. -------- System.Net.Http.CurlException : Failed writing received data to disk/application Stack Trace: Failing test on ubuntu https://travis-ci.org/Drawaes/CondenserDotNet/builds/211566793 Passing on windows https://ci.appveyor.com/project/Drawaes/condenserdotnet/build/0.7.418 +17175 area-System.Security Sacl doesn't have Mandatory Ace for setting integrity levels to objects. On windows, integrity levels are set using MandatoryAce in System access control lists. Currently we don't have a way to do this with AccessControl apis. Add the following types of WellKnownSidTypes ```c# public enum WellKnownSidType { WinLowLabelSid = 66, WinMediumLabelSid = 67, WinHighLabelSid = 68, } ``` Create a MandatoryAce type which will do this https://msdn.microsoft.com/en-us/library/windows/desktop/aa965464(v=vs.85).aspx +17177 area-System.Net System.Net.NameResolution.Pal.Tests: seg fault System.Net.NameResolution.Pal.Tests, there is no result generated. Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170316.02/workItem/System.Net.NameResolution.Pal.Tests/wilogs +17178 area-System.Net Fix error handling in SendFile{Async} on Unix - If Begin/EndSendFile actually resulted in asynchronous handling (none of the current test inputs were causing that to happen), the operation would fail because it would treat IOPending as an error and throw a SocketException for it. - The callback is checking/storing the wrong error, using the closed over errorCode instead of the passed in socketError. - If an error did get handled by the callback, it would complete the tcs with an exception and then try to complete it again with a result, which would result in an exception getting thrown as the task would already be completed. cc: @geoffkizer, @Priya91 +17179 area-System.Net Tests under System.Net.Sockets.Tests.DisconnectTest failed in CI Configuration: OuterLoop_Fedora23_debug ([build#131](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/131/testReport/)) Failed tests: System.Net.Sockets.Tests.DisconnectTest.Disconnect_Success(reuseSocket: False) System.Net.Sockets.Tests.DisconnectTest.BeginDisconnect_Success(reuseSocket: False) System.Net.Sockets.Tests.DisconnectTest.DisconnectAsync_Success(reuseSocket: False) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_debug/131/consoleText ~~~ System.Net.Sockets.Tests.DisconnectTest.Disconnect_Success(reuseSocket: False) [FAIL] Assert.Equal() Failure Expected: IsConnected Actual: Success Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs(79,0): at System.Net.Sockets.Tests.DisconnectTest.Disconnect_Success(Boolean reuseSocket) System.Net.Sockets.Tests.DisconnectTest.BeginDisconnect_Success(reuseSocket: False) [FAIL] Assert.Equal() Failure Expected: IsConnected Actual: Success Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs(167,0): at System.Net.Sockets.Tests.DisconnectTest.BeginDisconnect_Success(Boolean reuseSocket) System.Net.Sockets.Tests.DisconnectTest.DisconnectAsync_Success(reuseSocket: False) [FAIL] Assert.Equal() Failure Expected: IsConnected Actual: Success Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_debug/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs(125,0): at System.Net.Sockets.Tests.DisconnectTest.DisconnectAsync_Success(Boolean reuseSocket) ~~~ +17180 area-System.Diagnostics System.Diagnostics.Tests.ProcessTests.HandleCountChanges failed in CI Configuration: InnerLoop_Fedora24_release ([build#1378](https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_release/1378/testReport/)) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_release/1378/consoleText Failed test: System.Diagnostics.Tests.ProcessTests.HandleCountChanges ~~~ System.Diagnostics.Tests.ProcessTests.HandleCountChanges [FAIL] Assert.Equal() Failure Expected: 42 Actual: 145 Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_release/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(170,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() ~~~ +17181 area-System.Data Consolidate Data Source Parsing in SNI The changes consolidate and move the data source parsing login for SNI into a single class. I looked into the native sni parsing and brought in some extra capabilities like connecting to `np:` `(local)` etc. This also adds capability to handle the admin protocol used to connect to DAC in data source. The connectivity logic for DAC connectivity still needs to be worked out. Fixes https://github.com/dotnet/corefx/issues/16125 +17182 area-Infrastructure [Linux/x86] Enable CI Linux/x86 build Make new job: Linux/x86 build (debug/release) - Triggered daily - Docker for crossbuild - Use pre-generated rootfs related issue: dotnet/coreclr#9903 +17184 area-System.Drawing Drawing primitives are missing [Browsable(false)] attributes Some of the Drawing primitives are missing `Browsable(false)` attributes. This causes additional attributes to show up in the list of properties returned by the `TypeDescriptor` for those classes. Here's the full list: * `Size` and `SizeF`: - `IsEmpty` should be marked as `[Browsable(false)]` * `Point` and `PointF`: - `IsEmpty` should be marked as `[Browsable(false)]` * `Rectangle` and `RectangleF`: - `IsEmpty` should be marked as `[Browsable(false)]` - `Bottom` should be marked as `[Browsable(false)]` - `Left` should be marked as `[Browsable(false)]` - `Location` should be marked as `[Browsable(false)]` - `Right` should be marked as `[Browsable(false)]` - `Size` should be marked as `[Browsable(false)]` - `Top` should be marked as `[Browsable(false)]` Adding these attributes should be fairly trivial and I'd be happy to submit a PR for this. Before that, just want to make sure there isn't a specific reason these attributes have been left out - I notice a lot of other properties do mark properties with `Browsable(false)`. +17185 area-System.Net Improve NetworkStream.WriteAsync synchronous caching Socket.SendAsync caches the last successfully completed task and returns that same task on subsequent writes if the same number of bytes were written. NetworkStream.WriteAsync then just delegates to SendAsync. But WriteAsync returns a non-generic task, and doesn't actually care or surface the result value, which means we can effectively use any task, regardless of its value, and can thus use a single cached task for all synchronous completions, regardless of how much data is written. With this change, then, the common-case of synchronously completing NetworkStream.WriteAsync calls don't allocate (amortized). cc: @geoffkizer, @cipop, @Priya91 +17187 area-System.Diagnostics TestCommonPriorityAndTimeProperties failed in CI on macOS https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/123/consoleText ``` System.Diagnostics.Tests.ProcessThreadTests.TestCommonPriorityAndTimeProperties [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Diagnostics.Process/tests/ProcessThreadTests.cs(26,0): at System.Diagnostics.Tests.ProcessThreadTests.TestCommonPriorityAndTimeProperties() ``` +17188 area-System.Net Socket.Begin/EndSendFile completing asynchronously hangs on macOS +17189 area-System.Net Fix Socket.Disconnect on Unix +17190 area-System.Xml System.Xml.XPath.XmlDocument is no longer getting produced/published `System.Xml.XPath.XmlDocument` is not in the shared framework, and there are no recent nuget packages for it on https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Xml.XPath.XmlDocument. We need to publish this assembly somewhere - either in the shared framework or as a standalone NuGet package. @ericstj @weshaggard @krwq +17194 area-System.Security Enums missing from System.Security.Cryptography.X509Certificates. The following enums are missing from the System.Security.Cryptography.X509Certificates namespace: * [TrustStatus](https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.truststatus(v=vs.110).aspx). * [X509SelectionFlag](https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509selectionflag(v=vs.110).aspx). Both are available in .NET Framework. I could try to add them myself, but I have no experience contributing to .NET Core. Perhaps someone from the owners of this project could clarify a few things: 1. First of all, are these enums really needed in .NET Core? As far as I understand, the goal is to bring all APIs of .NET Framework to .NET Standard 2.0, which means that these enums are needed, right? 2. Do I understand correctly that it's just a matter of adding these enums to the System.Security.Cryptography.X509Certificates project? Or maybe something additionally has to be done? Perhaps /ref/System.Security.Cryptography.X509Certificates.cs has to be changed as well? +17195 area-System.Net Fix race condition in System.Net.Ping test. "Fixes the test to have the ""canceled iterations"" block more inline with the ""Normal iterations"" block that won't race because awaiting task completion and validation is done for each iteration instead of only at the end. resolves https://github.com/dotnet/corefx/issues/16401" +17196 area-System.Net Re-disable failing Net.Security test Test was enabled in #16877 affects https://github.com/dotnet/corefx/issues/16516 +17197 area-System.Data Fix Managed SNI Integrated Auth Adding the sspi buffer pass by ref so that the retrieved value for buffer gets propagated all the way up. This is needed by Managed SNI. In case of Native SNI, the native call doesn't need a pass by ref to the native layer. The tests which are now passing after this change are in `System.Data.SqlClient.ManualTesting.Tests.IntegratedAuthenticationTest` These tests were failing earlier. cc @geleems +17198 area-System.Runtime Not able to get PInvoke error message on Linux and MacOs "Hello, I see that Marshal.GetLastWin32Error() returns [proper errno](https://github.com/dotnet/corefx/issues/6778), however Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error()) always throws ""The operation completed successfully"" instead corresponding error. ```c# using System; using System.Runtime.InteropServices; namespace ConsoleApplication { public class Program { [DllImport(""libSystem.dylib"", EntryPoint = ""fopen"", SetLastError = true)] // libc.so.6 for linux extern static private IntPtr FOpen(string path, string mode); // fopen was used for example. Same flow for other calls public static void Main(string[] args) { var f = FOpen(""some-not-existing-file"", ""r""); if (f == IntPtr.Zero) { Console.WriteLine(""Error code is {0}"", Marshal.GetLastWin32Error()); Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error()); } } } } ``` Actual result ``` Admins-Mac:console admin$ dotnet --version 1.0.1 Admins-Mac:console admin$ dotnet run Error code is 2 <--- File not found error code Unhandled Exception: System.Runtime.InteropServices.COMException: The operation completed successfully. (Exception from HRESULT: 0x80070000) at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at ConsoleApplication.Program.Main(String[] args) in /Users/admin/console/Program.cs:line 24 ``` Expected result: Exception with ""No such file or directory"" message" +17200 area-System.Net Reduce AcceptAsync allocations by 20% for IPv4/6 Every AcceptAsync with a SocketAsyncEventArgs ends up calculating the buffer size necessary to store the address (either to create a buffer if one wasn't supplied, or to verify that the one supplied is large enough). To do that, it's currently serializing the EndPoint into a SocketAddress, which entails allocating both a SocketAddress and the byte[] that backs it. But for IPv4 and IPv6, the two most common families, we know the address size in advance, and can simply use those values rather than allocating to get them. If in the future other families become more common, we could cache those dynamically after computing them once. cc: @geoffkizer, @pgavlin, @KrzysztofCwalina, @cipop, @davidsh +17201 area-Meta Replaced ContainsKey() Calls with TryAdd() Dictionary Calls Replaced usage of the `Dictionary.ContainsKey()` method with the newer `Dictionary.TryAdd()` method (where applicable) for performance benefits [per Issue #17034](https://github.com/dotnet/corefx/issues/17034). This involved replacing this pattern: ```c# if(!dictionary.ContainsKey(key)) { dictionary.Add(key, value); } ``` with: ```c# if (dictionary.TryAdd(key, value)) { // Code } ``` Current Progress (Source) ----- **System.CodeDom `[Unsupported]`** ~~- [ ] ...\src\System\CodeDom\CodeNamespaceImportCollection.cs(34)~~ **System.ComponentModel.TypeConverter** - [X] ...\src\System\ComponentModel\ReflectTypeDescriptionProvider.cs(451) - [X] ...\src\System\ComponentModel\ReflectTypeDescriptionProvider.cs(489) **System.Data.Common** - [X] ...\src\System\Data\DataView.cs(1333) _[reverted]_ - [X] ...\src\System\Data\Common\AdapterUtil.cs(1185) **System.Data.SqlClient `[Unsupported]`** ~~- [ ] ...\src\System\Data\Common\AdapterUtil.cs(976)~~ ~~- [ ] ...\src\System\Data\SqlClient\SNI\SNIMarsConnection.cs(241)~~ **System.Diagnostics `[Unsupported]`** ~~- [ ] ...\src\System\Diagnostics\Tracing\EventSource.cs(6272)~~ **System.DirectoryServices.AccountManagement `[Unsupported]`** ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADDNLinkedAttrSet.cs(326)~~ ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADDNLinkedAttrSet.cs(343)~~ ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADDNLinkedAttrSet.cs(505)~~ ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADDNLinkedAttrSet.cs(523)~~ ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADDNLinkedAttrSet.cs(682)~~ ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADDNLinkedAttrSet.cs(810)~~ ~~- [ ] ...\src\System\DirectoryServices\AccountManagement\AD\ADStoreCtx_Query.cs(1178)~~ **System.IO.Compression `[Unsupported]`** ~~- [ ] ...\src\System\IO\Compression\ZipArchive.cs(368)~~ **System.Linq.Expressions** - [X] ...\src\System\Linq\Expressions\Compiler\BoundConstants.cs(87) - [X] ...\src\System\Linq\Expressions\Interpreter\LightCompiler.cs(1636) - [X] ...\src\System\Linq\Expressions\Interpreter\LightCompiler.cs(1690) **System.Net.NetworkInformation `[Unsupported]`** ~~- [ ] ...\src\System\Net\NetworkInformation\NetworkAddressChange.Windows.cs(104)~~ ~~- [ ] ...\src\System\Net\NetworkInformation\NetworkAddressChange.Windows.cs(225)~~ **System.Private.DataContractSerialization** - [X] ...\src\System\Runtime\Serialization\DataContract.cs(2109) - [X] ...\src\System\Runtime\Serialization\HybridObjectCache.cs(45) - [X] ...\src\System\Runtime\Serialization\Json\JsonDataContract.cs(293) - [X] ...\src\System\Runtime\Serialization\Json\JsonDataContract.cs(302) **System.Private.Xml `[Unsupported]`** ~~- [ ] ...\src\System\Xml\Dom\DocumentSchemaValidator.cs(195)~~ ~~- [ ] ...\src\System\Xml\Dom\DocumentSchemaValidator.cs(203)~~ ~~- [ ] ...\src\System\Xml\Dom\XmlNodeReader.cs(1015)~~ ~~- [ ] ...\src\System\Xml\Dom\XmlNodeReader.cs(1023)~~ ~~- [ ] ...\src\System\Xml\Schema\DtdParser.cs(1437)~~ ~~- [ ] ...\src\System\Xml\Schema\DtdParser.cs(1444)~~ ~~- [ ] ...\src\System\Xml\Schema\DtdParserAsync.cs(1033)~~ ~~- [ ] ...\src\System\Xml\Schema\DtdParserAsync.cs(1040)~~ ~~- [ ] ...\src\System\Xml\Schema\DtdParserAsync.cs(1124)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaCollectionCompiler.cs(292)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaCollectionCompiler.cs(772)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaCollectionCompiler.cs(779)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaInfo.cs(356)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaInfo.cs(364)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaInfo.cs(371)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaInfo.cs(378)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaInfo.cs(385)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaSetCompiler.cs(158)~~ ~~- [ ] ...\src\System\Xml\Schema\SchemaSetCompiler.cs(842)~~ ~~- [ ] ...\src\System\Xml\Schema\XdrBuilder.cs(1052)~~ ~~- [ ] ...\src\System\Xml\Schema\XmlSchema.cs(210)~~ ~~- [ ] ...\src\System\Xml\Serialization\Compilation.cs(304)~~ ~~- [ ] ...\src\System\Xml\Xsl\IlGen\StaticDataManager.cs(30)~~ ~~- [ ] ...\src\System\Xml\Xsl\Xslt\Compiler.cs(104)~~ ~~- [ ] ...\src\System\Xml\Xsl\Xslt\Compiler.cs(172)~~ ~~- [ ] ...\src\System\Xml\Xsl\XsltOld\XsltCompileContext.cs(274)~~ ~~- [ ] ...\tests\XmlSchema\XmlSchemaValidatorApi\ExceptionVerifier.cs(174)~~ ~~- [ ] ...\tests\Xslt\XslTransformApi\ExceptionVerifier.cs(174)~~ **System.Private.Xml.Linq** ~~- [ ] ...\src\System\Xml\Schema\XNodeValidator.cs(156)~~ **System.Reflection.Metadata `[Unsupported]`** ~~- [ ] ...\src\System\Reflection\Metadata\Internal\NamespaceCache.cs(406)~~ **System.Runtime.Serialization** - [X] ...\src\System\Runtime\Serialization\SerializationObjectManager.cs(30) **System.Security.AccessControl `[Unsupported]`** ~~- [ ] ...\src\System\Security\AccessControl\Privilege.cs(150)~~ **System.ServiceProcess.ServiceController `[Unsupported]`** ~~- [ ] ...\src\System\ServiceProcess\ServiceController.cs(274)~~ ~~- [ ] ...\src\System\ServiceProcess\ServiceController.cs(280)~~ Current Progress (Tests) ---------- **Common** - [X] ...\tests\System\Collections\IDictionary.Generic.Tests.cs(769) - [X] ...\tests\System\Collections\IDictionary.Generic.Tests.cs(800) - [X] ...\tests\System\Collections\IDictionary.Generic.Tests.cs(836) **System.Collections** - [X] ...\tests\Performance\Perf.Dictionary.cs(23) **System.Data.SqlClient** - [X] ...\tests\ManualTests\SQL\Common\InternalConnectionWrapper.cs(160) **System.Linq.Expressions** - [X] ...\tests\ILReader\ILPrinter.cs(123) **System.Private.Xml.Linq** - [X] ...\tests\TreeManipulation\XAttributeEnumRemove.cs(248) - [X] ...\tests\TreeManipulation\XNodeSequenceRemove.cs(738) - [X] ...\tests\xNodeBuilder\XmlReaderDiff.cs(42) +17202 area-System.Data Can System.Data.SqlClient take a dependency on non .Net Core libraries? This is a question more than an issue which will help with the design of Azure Active Directory authentication for Azure SQL DB. SqlClient on Desktop depends on a DLL written in C++ and utilizes Windows APIs which needs to be installed on the client machine to be able to authenticate to Azure SQL DB using AAD. For .Net Core, the solution provided above doesn't apply as it is not applicable to Unix or macOS. To add Azure Active Directory support in SqlClient, the access token has to be retrieved from AAD using HTTP rest calls. There are client libraries provided by AAD in C# to expedite clients to retrieve the Access Token. Can SqlClient take a dependency on one of these libraries? If we cannot take a dependency, then SqlClient needs to implement the Access Token retrieval in the client itself which is a big maintenance overhead. What is the guidance in this case? Was such a design decision needed by any other .Net Core libraries? +17204 area-System.Drawing Add missing [Browsable(false)] attributes to Drawing primitives These attributes are present on Desktop .NET but are missing from .NET Core. Fixes #17184 +17205 area-System.Collections Reduce memory load of ConcurrentCollections test This test was hitting an OOM on the CI machines because it adds new items to a collection in a loop until a timeout is met. I modified the test to instead add a fixed number of items, regardless of time. This also reduces the total runtime of the Concurrent Collections tests from ~15 seconds to ~10 seconds on my local box. @safern resolves https://github.com/dotnet/corefx/issues/15837 +17206 area-System.ComponentModel Fix System.ComponentModel.TypeConverter failing tests This PR fixes 2 tests that where failing in System.ComponentModel.TypeConverter Also I made a cleanup moving to the common path `IsFullFramework` property that I previously added. cc: @tarekgh @stephentoub @danmosemsft @AlexGhiondea +17207 area-System.Net Fix HttpClientHandler.ClientCertificates behavior Change the ClientCertificates' getter to throw InvalidOperationException, when ClientCertificateOption.Automatic is set, to match the same behavior in .Net Desktop. Fix #11743 +17209 area-System.Net AcceptAsync with existing Socket not implemented on Unix Windows has built-in support for accepting into an existing socket, something not available on Unix. But we can approximate it in the .NET layer on Unix, e.g. by accepting into a new socket and transferring over the SafeCloseHandle and related state. This will allow the same APIs to be used cross-platform so that code running on Windows gets the intended benefits while not having to fork based on the OS. +17210 area-System.Net Add test for accepting into a disconnected socket We already have a test that accepts into an existing socket, but not one that tests reusing that same socket for another accept. (Interestingly, this works with SocketAsyncEventArgs, but doesn't with APM. That's true for desktop as well. Unless there's an obvious design reason for that, seems like a bug in both.) cc: @cipop, @davidsh, @geoffkizer +17212 area-Infrastructure Enable running CoreFx tests in UAP on CoreCLR /cc @joperezr @MattGal @weshaggard +17213 area-System.Numerics Expand the Perf test coverage for the System.Numerics.Vector types The current perf test coverage for the System.Numerics.Vector types is fairly limited (this extends to types such as Matrix4x4, Quaternion, and Plane as well). Given that these are meant to be fairly core high-performance types (used in things such as Multimedia-based applications), it is important that we have a high amount of perf-test coverage over the current implementations. +17214 area-System.Numerics Improve the performance of the System.Numerics.Vector types The `System.Numerics.Vector` types are currently implemented as intrinsics in the CoreCLR. However, the perf in some cases is not ideal (especially around load/store for Vector3 and Vector2). These scenarios should be investigated and improved. I believe that targeting comparable performance to the DirectXMath implementation is a reasonable goal here (it is also implemented entirely in intrinsics, but in C/C++). +17215 area-System.Linq Enable building of System.Linq.Expression without expression compiler Enable building of System.Linq.Expression without expression compiler in AOT target group. Fixes:https://github.com/dotnet/corefx/issues/16910 +17216 area-Meta Add missing [Browsable(false)] attributes The attribute is new in 2.0. We should port also its usages into .NET Core 2.0. Example: #17184 cc @danmosemsft @weshaggard +17217 area-System.Numerics Adding additional test coverage for the System.Math and System.MathF functions implemented by FCalls. This resolves https://github.com/dotnet/corefx/issues/12855 These tests are essentially the same as those that are implemented in C++ in the CoreCLR PAL layer: https://github.com/dotnet/coreclr/tree/master/src/pal/tests/palsuite/c_runtime These tests cover ~~all~~ most of the interesting corner cases, except for subnormal values, and max/min domain inputs. +17218 area-System.Security System.Net.Security 4.3.0 breaks AuthenticateAsClientAsync on Linux "Hopefully this is the right issue tracker for this bug. System.Net.Security 4.3.0 breaks, at the very least, authenticating with Apple's push notification servers in an unusual way -- but only on Linux. It still works fine when used on Windows. Here is a simple C# program, which does the bare minimum I've found to trigger this bug. For obvious reasons, I cannot provide the certificate file, although I expect any other instances of certificate client authentication would likely also trigger the bug. ```c# using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Security.Authentication; using System.Threading.Tasks; namespace Test { class Program { static void Main() { Task.Run(async () => { int port = 2195; string hostname = ""gateway.push.apple.com""; X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(""certificate.pfx"")); X509Certificate2Collection certificatesCollection = new X509Certificate2Collection(clientCertificate); TcpClient client = new TcpClient(AddressFamily.InterNetwork); await client.ConnectAsync(hostname, port); SslStream sslStream = new SslStream(client.GetStream()); await sslStream.AuthenticateAsClientAsync(hostname, certificatesCollection, SslProtocols.Tls12, false); Console.WriteLine(""Success.""); }).Wait(); } } } ``` And here is a matching csproj file: ```xml Exe netcoreapp1.0 * * 4.0.0 * * ``` When System.Net.Security depends on 4.0.0, the program works as expected; it successfully authenticates, prints ""Success!"", then exits. If you change that dependency to 4.3.0, it instead pauses, then exits the program with no console output during AuthenticateAsClientAsync, and never prints ""Success!"". No exceptions are thrown, it just seemingly cleanly exits, when it should not." +17219 area-System.Runtime Add APTC attribute to System.ValueTuple.dll in .Net Standard 1.0 The attribute is not added in the `portable_net40+sl4+win8+wp8` target group, as it doesn't seem to exist there. Let me know if that can be improved somehow. In target group `netcoreapp`, the assembly that has type forwards doesn't have the attribute and neither does `System.Runtime` (which type forwards further), but the implementation assembly (`System.Private.CoreLib.dll`) does have APTCA. So the `netstandard1.0` target group is the only one benefiting from this fix. In terms of validation, I did a local build with `build -framework:netstandard1.0`, picked up the resulting `System.ValueTuple.dll` and tried it in the customer scenario, which passed. Fixes https://github.com/dotnet/corefx/issues/17144 and https://github.com/dotnet/roslyn/issues/17783 @weshaggard @tarekgh @AlexGhiondea for review. @davidsh @morganbr I have run `secannotate` without errors. ``` C:\repos\corefx\bin\AnyOS.AnyCPU.Debug\System.ValueTuple\netstandard1.0>secannotate System.ValueTuple.dll Microsoft (R) .NET Framework Security Transparency Annotator 4.6.1055.0 Copyright (C) Microsoft Corporation. All rights reserved. Annotating 'System.ValueTuple'. Beginning pass 1. Pass complete, 0 new annotation(s) generated. Annotation of 'System.ValueTuple' stopped due to reaching the maximum number of allowed passes. Annotating complete. 0 errors found. No report file generated since no annotations are required. ``` +17220 area-System.Diagnostics System.Diagnostics.Tests.ProcessWaitingTests.WaitForPeerProcess failed in CI Configuration: OuterLoop_Fedora24_debug ([build#119](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/119/testReport/)) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora24_debug/119/testReport/System.Diagnostics.Tests/ProcessWaitingTests/WaitForPeerProcess/ ~~~ MESSAGE: Assert.Equal() Failure\nExpected: Signal\nActual: (null) +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Tests.ProcessWaitingTests.WaitForPeerProcess() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora24_debug/src/System.Diagnostics.Process/tests/ProcessWaitingTests.cs:line 157 ~~~ +17221 area-System.Security Fix EncryptedXmlTest.GetDecryptionIV_StringNull and expand ExcryptedXmlTest Fix for `EncryptedXmlTest.GetDecryptionIV_StringNull` mentioned in #16685. Also cleaned up the tests a bit. CC @krwq +17225 area-Microsoft.CSharp Teach the dynamic binder about synthetic ItemN tuple fields (Originally reported as part of https://github.com/dotnet/roslyn/issues/17911) While we can't know for sure whether a particular `ValueTuple<...>` was originally used as a C# tuple type or directly as the CLR type, it's reasonable to err on the side of assuming the language feature was in use - so for dynamic references to `d.ItemN` where `N` is greater than 7, the binder should attempt to translate that into `d.Rest.Item(N-7)` recursively. +17226 area-System.Net ServerCertificateCustomValidationCallback with client certificate not called in Windows (.NET Core), but called in debian "Hello The following code in .net core ```c# X509Certificate2 clientCert = new X509Certificate2(""cert.pfx""); HttpClientHandler clientHandler = new HttpClientHandler() { ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }, ClientCertificateOptions = ClientCertificateOption.Manual, SslProtocols = SslProtocols.Tls12 }; clientHandler.ClientCertificates.Add(clientCert); ``` Will deliver the following results: With client certificate: Windows 10: SecurityError / Callback not called Debian: No Error / Callback called Without client certificate: Windows 10: No error / Callback called Debian: No error / Callback called Is this expected behaviour or a bug in the windows handler? I expected the handler to call the validation callback when a client certificate is provided too, because I would like to be able to use selfsigned certs in combination with client certs during development phase on my windows machine. Note: Using a simular project with full framework for Win10 deliveres the expected results (callback will be called even if client certificate is provided): ```c# WebRequestHandler clientHandler = new WebRequestHandler(){ ClientCertificateOptions = ClientCertificateOption.Manual }; clientHandler.ClientCertificates.Add(clientCert); clientHandler.ServerCertificateValidationCallback += (msg, cert, chain, errors) => { return true; }; ```" +17228 area-System.Net socket, accept: set CLOEXEC on platforms that support it Fixes #16180 +17232 area-System.Reflection "Need api to determine if a type is ""byref-like.""" "**Proposal for New API:** ```c# class Type { public virtual bool IsByRefLike => throw new NotSupportedException(); } ``` With Span<>, we're now introducing a mainstream type that has ""by-ref-like"" or ""stack-only"" restrictions. We also have TypedReference in this bucket, but Span<> takes this concept out of the ""eccentric uncle in the closet"" realm. There is, however, no robust way to know if a type has these restrictions. Apis like Array.CreateInstance() need to guard against these types (https://github.com/dotnet/corert/pull/3000) and could use a formalized way to catch these types. It's likely that checks like these could go viral into app code or higher level libraries that call apis like this." +17233 area-System.Globalization Need APIs for unicode case mapping and case folding "@gafter commented on [Mon May 11 2015](https://github.com/dotnet/coreclr/issues/976) The Unicode function for determining the category of Unicode characters (`System.Globalization.CharUnicodeInfo.GetUnicodeCategory(char)`) appears to reflect a fairly recent version of the Unicode standard. However, the functions for performing Unicode case mapping (culture-insensitive uppercase and lowercase) appear to reflect Unicode version 1.0. This mismatch was a severe impediment for implementing spec-compliant case folding in the VB compiler. There is also no support whatsoever for performing case folding according to the Unicode specification (simplified or otherwise). APIs in the platform to do this would help with any language that, like VB, wants to depend on the Unicode specification for the meaning of case-insensitive identifiers. --- @jkotas commented on [Mon May 11 2015](https://github.com/dotnet/coreclr/issues/976#issuecomment-101117346) cc @ellismg --- @ellismg commented on [Mon May 11 2015](https://github.com/dotnet/coreclr/issues/976#issuecomment-101125393) This is something I'd like to do. I think the open issue is how we support this on Windows (since I think that we can get Case Folding functionality from ICU). In general, we've tried to move away from the framework itself shipping globalization data and used the OS provided APIs instead. Since Windows doesn't currently expose a way to do case folding, we'd have to figure out what to do. --- @karelz commented on [Fri Mar 17 2017](https://github.com/dotnet/coreclr/issues/976#issuecomment-287305272) @tarekgh do we need a new API for this? If yes, we should move it to CoreFX. If not, let's remove ""api addition"" label. " +17234 area-System.Net Test failure: SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/148/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_windows_nt_debug_prtest/147/consoleText ``` System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException [FAIL] Assert.Throws() Failure Expected: typeof(System.AggregateException) Actual: (No exception was thrown) Stack Trace: D:\j\workspace\outerloop_win---7ad0ce03\src\System.Net.Http.WinHttpHandler\tests\FunctionalTests\WinHttpHandlerTest.cs(109,0): at System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException() ``` +17235 area-System.Security X509StoreTests.Constructor_StoreHandle failed on macOS in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_osx_debug_prtest/93/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Constructor_StoreHandle [FAIL] Assert.Equal() Failure Expected: 3 Actual: 2 Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_osx_debug_prtest/src/System.Security.Cryptography.X509Certificates/tests/X509StoreTests.cs(63,0): at System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Constructor_StoreHandle() ``` +17236 area-System.Xml Is there a version 4.1.0.0 of System.Xml.ReaderWriter anywhere? "I notice in the v4.3.0 NuGet of System.Xml.ReaderWriter, the `netstandard1.3` assembly version is 4.1.0.0. But, no other version is like this, all appear to be version 4.0.10.0... The `netcore50` version is 4.0.10.0. Even System.Xml.XDocument, which has a direct dependency on System.Xml.ReaderWriter, references a version 4.0.10.0. (The references of which I speak are the actual assembly references, not NuGet references) At runtime, I get an exception saying that v4.1 is not found - which is to be expected. To resolve this, can either reference the v4.0.11 NuGet directly, or set the `NetStandardImplicitPackageVersion` property to `1.6.0`. The real question is this by design? or is there a problem? I am running the latest stable/RTM version of Windows 10, and if I am having an issue after upgrading my .NET Standard version, there should be others? My use case was building a new `netstandard1.3` assembly (which uses XML) and NuGet, and then reference that NuGet in a UWP app. Nothing fancy, just plain old NuGet. It was working fine when I was targeting project.json and `""NETStandard.Library"": ""1.6.0""`. So this really has to do with the ""implicit"" upgrade to v1.6.1 as well." +17237 area-System.Net Avoid allocation in SocketAsyncEventArgs when buffer configuration changes (1) Manage our own buffer pinning, instead of having the Overlapped infrastructure do this. This allows us to not reallocate Overlapped when buffer configuration changes. (2) Only reallocate _wsaBuffersArray when it needs to grow, otherwise reuse existing array. +17240 area-System.IO Add Retries to FSW WaitFor* Tests These tests are intermittently failing on some platforms from events not being risen by the filesystem. It's causing a fair amount of churn, so I'm adding retries to them like we have for a lot of the other FSW tests that are susceptible to intermittent failures. Doing so also greatly reduces the runtime in the failure case, allowing us to move the tests back to innerloop. resolves https://github.com/dotnet/corefx/issues/16857 cc: @JeremyKuhne @danmosemsft +17241 area-System.Net Disable SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException test #17234 +17242 area-System.IO Provide a way to override the logic of retrieving the preamble bytes in StreamWriter @kichalla commented on [Tue May 05 2015](https://github.com/dotnet/coreclr/issues/933) In ASP.NET MVC, we use StreamWriter in some places to write data to the response stream. We want to avoid writing the BOM or preamble bytes irrespective of whether an encoding requires preamble or not. I was initially looking to subclass StreamWriter and override some method like `GetPreamble` to prevent writing the preamble bytes, but couldn't find any. (I initially had a wrapper around the supplied encoding to prevent preamble bytes...even though this works, it feels hacky) For reference: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/IO/StreamWriter.cs#L283 --- @bpschoch commented on [Wed May 06 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99581315) some say you can do it via the New UTF8Encoding(false) http://stackoverflow.com/questions/5266069/streamwriter-and-utf-8-byte-order-marks/11655096#11655096 I started an issue on corefx: https://github.com/dotnet/corefx/issues/1645 --- @kichalla commented on [Wed May 06 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99608272) Sure, I am aware of it...the thing is this encoding is provided by an end user and they might provide with a BOM encoding or not... --- @bpschoch commented on [Wed May 06 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99618606) I made a general proposal on a possible solution here: https://github.com/dotnet/corefx/issues/1645 I'm trying to understand what you are looking for. Your issue appears that you get handed an encoding and using that encoding, prevent any BOM from being generated. Would that proposal solve your issue? --- @kichalla commented on [Wed May 06 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99619289) yes, that's right....we want to prevent writing out the BOM in all cases...sure, that proposal would work for me...thanks.. --- @svick commented on [Wed May 06 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99659995) @kichalla That sounds to me like an edge case that doesn't need to be supported directly by the framework. Any reason why you can't use something like the following code? ``` c# if (encoding is UTF8Encoding) encoding = new UTF8Ending(false); else if (encoding is UnicodeEncoding) encoding = new UnicodeEncoding(false, false); ``` --- @jbevain commented on [Thu May 07 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99775049) Agreed with @svick. I'd solve it in a generic way using: ``` csharp class WithoutPreambleEncoding : Encoding { private readonly Encoding _encoding; public WithoutPreambleEncoding(Encoding encoding) { _encoding = encoding; } public override byte[] GetPreamble() { return new byte[0]; } public override int GetByteCount(char[] chars, int index, int count) { return _encoding.GetByteCount(chars, index, count); } public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) { return _encoding.GetBytes(chars, charIndex, charCount, bytes, byteIndex); } // ... } ``` --- @kichalla commented on [Thu May 07 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-99838741) @svick @jbevain : I actually had the same encoding wrapper like what you mentioned to solve for all encodings...but this felt hacky and so just wanted to check... --- @joshfree commented on [Wed Oct 28 2015](https://github.com/dotnet/coreclr/issues/933#issuecomment-151951797) @JeremyKuhne can you move this to /dotnet/corefx please --- @karelz commented on [Fri Mar 17 2017](https://github.com/dotnet/coreclr/issues/933#issuecomment-287306822) @ianhays @JeremyKuhne please move it to corefx repo. API additions should not be tracked in coreclr. +17243 area-System.Security Disable X509StoreTests.Constructor_StoreHandle test https://github.com/dotnet/corefx/issues/17235 +17246 area-Infrastructure Fix package dependency issues Some packages were causing cycles due to the meta-package remapping for NETStandard.Library and those packages being used in the implementation closure of NETStandard.Library. Disable the NETStandard.Library remapping in these packages. I also noticed that S.R.M was getting an unbaselined dependency for a portable profile dependency section which was causing issues when restored on UAP10.0 without the UWP meta-package. System.Security.Permissions was also missing support for UAP10.1 but it was required to install due to Registry depending on it. /cc @Petermarcu @weshaggard Fixes #16923 I've also added a test project for consuming the just-built packages. This is not currently plugged into the build but can be ran after a complete `-allConfigurations` build. It examines the package reports for every project built and generates a project.json that restores that package for each framework / RID that it supports. Things to do in the future: 1. Switch to latest CLI and MSBuild based projects. 2. Add test cases post-restore that examine the following: a) No bin-clashes b) API compat between ref & lib. c) No type-clashes in ref. d) Verify closure 3. Enable the tests to run in helix. /cc @chcosta @Chrisboh +17247 area-Infrastructure Separate non-Windows platform detection to its own file to fix ilc errors cc: @weshaggard @tarekgh This is required for the ilc uapaot test run since if we don't separate this code out, then a reference to libc.dll will be added to the test assembly which will crash the ilc compiled runner at test execution time. +17248 area-System.Security Fix Sec.AccessControl CommonSecurityDescriptor bug. When the source for System.Security.AccessControl was ported, one of the Interop functions was misnamed. This was causing the entire CommonSecurityDescriptor class to be broken, and since the tests weren't ported until later we weren't aware that it was broken. This Commit fixes the function call and re-enables the tests that assert the correct behavior (verified against desktop). resolves https://github.com/dotnet/corefx/issues/16919 PTAL: @bartonjs FYI: @danmosemsft @joperezr @LordMike (fixes your https://github.com/DiscUtils/DiscUtils/issues/14) +17249 area-System.Net Remove Socket._permittedRemoteAddress field and associated permissions code "Noticed this field was unnecessary. It appears to be a remnant of needing to do CAS permission checks, and was used to store an address against which a permission check was already done so it could be avoided subsequently if the same address needed to be checked. https://referencesource.microsoft.com/#System/net/System/Net/Sockets/Socket.cs,5929 Once we remove that field, the CheckCacheRemote function is no longer needed, as without the checks associated with that field, the method is the same as SnapshotAndSerialize, so we can remove CheckCacheRemote and replace all call sites. We can then also roll CallSerializeCheckDnsEndPoint into SnapshotAndSerialize, as the only other call site to it is a clone of SnapshotAndSerialize, so we can just use it. I also then searched for remaining mentions of ""permissions"" in comments and removed them. cc: @geoffkizer, @davidsh, @cipop" +17251 area-System.IO Disable failing Pipes test on desktop resolves https://github.com/dotnet/corefx/issues/10899 (sort of) resolves https://github.com/dotnet/corefx/issues/12761 cc: @weshaggard for the decision to leave the System.IO.Pipes and System.IO.Pipes.AccessControl assemblies separate per discussion in #12761 +17253 area-System.Console Fix System.Console difference in behavior We were having a difference in behavior where in `Console.WindowWidth` and `Console.WindowHeight` setters in Core if the value was <= 0 we would throw an `ArgumentOutOfRangeException` no matter if the Console output is redirected. In desktop if the output is redirected and we try to change the Console Width/Height we would get a `System.IO.IOException` so this was causing a test to fail when the output was redirected e.g executing through MsBuild. cc: @weshaggard @tarekgh @stephentoub @danmosemsft +17256 area-Infrastructure CoreFx is now including source and PDBs in all packages It looks like something was done wrong with the work to make combined packages. Only transport packages should have source and PDBs. Non-transport packages should still be split. +17258 area-System.Security Fix NotImplementedExceptions related to sha256, sha384, sha512 in SignedXML Partially fixing https://github.com/dotnet/corefx/issues/16781 - I'm not sure if we do want to abandon some of those algorithms. List of items which is left: - HMACRIPEMD160 - I think @morganbr has mentioned something about abandoning this - DSASignatureDescription - we already do support it when used by URI but no by class name @anthonylangsworth @tintoy @peterwurzinger @bartonjs @morganbr +17259 area-Infrastructure Only include symbols / src in transport packages, also fix pre-existing typo https://github.com/dotnet/corefx/issues/17256 Only includes src / symbols in the transport packages. Also, fixes a long-standing (unrelated) typo that I noticed in dir.props. @ericstj @weshaggard +17260 area-Infrastructure Move to 2.0 CLI for our toolsets As part of the Build from Source effort we need to be able to build CoreFx with the 2.0 CLI otherwise we will not be able do a full stack build from SharedFx to CLI and then reuse that to build the stack again. Somethings that I know will be broken are the 2.0 tools no longer support direct restore of a project.json file which we depend on still in corefx (likely in all our repos). cc @dleeapho @ellismg @chcosta @ellismg are you tracking this work somewhere else? +17261 area-System.Net Include desktop ref for System.Net.Http In most cases we don't include the desktop refs because those configurations are merely present to pass to API Compat. In the System.Net.Http case the ref is actually necessary since the ref is a real ref and not a facade. /cc @weshaggard +17262 area-System.Diagnostics Add net45 target for DiagnosticSource and bring Activity API to NET4.5 Activity API on .NET 4.5 is needed for ASP.NET Core (that targets NET 4.5.1 as well) and ApplicationInsights. Activity.Current is implemented on NET 4.5 with CallContext, that is not available on netstandard1.1, so this target could not be reused for .NET 4.5 +17263 area-Infrastructure Do not block reflection on tests Some tests rely on reflection into themselves, and they should be able to do this. @shmao +17264 area-System.Data Adding Integrated Auth Test with Test Server Adding a test for Integrated Auth for SqlClient on Windows. Currently only the Windows implementation of the server implements Integrated Auth. @geleems @corivera +17265 area-System.Data Fix and clean up the Manual Tests for Sql There are cleanup changes in here 1. Changed the reflect in Kill Connection to look for Managed SNI objects. 2. Deleted a test case which was expecting Integrated Auth to fail on Managed SNI. +17266 area-System.Linq remove reference to System.Reflection.Emit for UAP builds of System.Linq.Expressions remove reference to System.Reflection.Emit for UAP builds of System.Linq.Expressions +17267 area-System.Numerics Add all remaining IEEE754 float types (binary16, binary128, decimal32, decimal64, decimal128), BigDecimal and BigRational to System.Numerics While BigInteger is useful for really big integers, it cannot represent really big decimals. BigRational would be useful in fractional operations (think of 1/3) while BigDecimal could represent something like the square root of 23E-234. BigDecimal could be straight forked from the J# library source (which Microsoft should have) and BigRational could also be straight forked from another pile of Microsoft code (http://bcl.codeplex.com/wikipage?title=BigRational&referringTitle=Home) so it is easy to implement. I would like to see these two this one get added :) +17268 area-System.Runtime Expose and test new string.Join overloads Fixes #5552 +17271 area-System.Collections Add more tests for ImmutableInterlocked.InterlockedCompareExchangeArray Also Fixes #17108 +17272 area-System.Net http request in docker container fails with curl error Near the end of converting a webapi 2 service to aspcore I've run up against a problem hosting the aspcore service in docker. The problem is that no HttpRequest are working anymore in the project. They throw the follow exception: ``` System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: Couldn't connect to server at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) ``` And they only throw this exception when running inside the docker container `FROM microsoft/dotnet:1.0-runtime` and `FROM microsoft/dotnet:1.1.1-runtime` This exception doesn't occur on the host machine running docker and has been no problem so far as I rebuild the project piece by in a new solution. I believe this issue might have started after migrating to csproj from project.json. +17273 area-Meta Generic Type Check Inlining "When writing performance-critical code it often leads to code duplication. Let's say we wanted to make a method that applies an effect on an image, in our case we want to apply a gray-scale and an optional invert. The code could look like this: ```C# public class Effect { public static void Apply(Bitmap bmp, GreyscaleMethod grayscaleMethod, bool invert) { // read bitmap data int w = bmp.Width, h = bmp.Height; var data = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, bmp.PixelFormat); if (bmp.PixelFormat != PixelFormat.Format32bppArgb) throw new InvalidOperationException($""Unsupported pixel format: {bmp.PixelFormat}""); var s = data.Stride; unsafe { var ptr = (byte*)data.Scan0; for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { // read RGB (not quite optimized, but that's not the point) int offset = y * s + x; int r = ptr[offset + 1]; int g = ptr[offset + 2]; int b = ptr[offset + 3]; // apply effects per pixel if (grayscaleMethod == GreyscaleMethod.Average) { r = g = b = (r + g + b) / 3; } else if (grayscaleMethod == GreyscaleMethod.Luminance) { r = g = b = (int)(r * 0.2126 + g * 0.7152 + b * 0722); } if (invert) { r = 255 - r; g = 255 - g; b = 255 - b; } // write RGB ptr[offset + 1] = (byte)r; ptr[offset + 2] = (byte)g; ptr[offset + 3] = (byte)b; } } } bmp.UnlockBits(data); } } public enum GreyscaleMethod { None, Average, Luminance, } ``` However if we expect the invert to be only rarely used, that code is slower than it can be because of the constant `if (invert)` check inside the performance-critical inner loop. We could of course create another method that gets called when `invert` is false, but that leads to code duplication, is harder to maintain, etc. What we would need to have both optimal performance and code reuse is a way to get the compiler to generate 2 methods at compile time depending on the value of `invert`. Without any new syntax the code might look like this: ```C# public class Effect { private static void Apply(Bitmap bmp, GreyscaleMethod grayscaleMethod) where invert : Bool { // [...] read bitmap data unsafe { var ptr = (byte*)data.Scan0; for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { // [...] read RGB // apply effects per pixel if (grayscaleMethod == GreyscaleMethod.Average) { r = g = b = (r + g + b) / 3; } else if (grayscaleMethod == GreyscaleMethod.Luminance) { r = g = b = (int)(r * 0.2126 + g * 0.7152 + b * 0722); } if (typeof(invert) == typeof(True)) { // type check r = 255 - r; g = 255 - g; b = 255 - b; } // [...] write RGB } } } bmp.UnlockBits(data); } } public class False : Bool { } public class True : Bool { } public class Bool { } ``` Now that check if a compile-time constant, so the compiler *could* remove the type-condition and its block away when `invert` is `False`, and remove the type-condition but leave its block when `True`, leading to performance optimal code in both cases without code duplication. However does the compiler (or even the JIT) do that? According to [this stackoverflow answer](http://stackoverflow.com/questions/34306049/will-this-comparison-be-compiled-into-a-constant-boolean-value-in-a-generic-clas) it currently does not. This is a proposal to improve the compiler (or JIT) to do that sort of code inlining (through method duplication) for compile-time constant checks. If this were implemented, we can optimize the code even further by doing the same with the `grayscaleMethod` parameter: ```C# public class Effect { private static void Apply(Bitmap bmp) where invert : Bool where greyscaleMethod : GreyscaleMethodEnum { // [...] read bitmap data unsafe { var ptr = (byte*)data.Scan0; for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { // [...] read RGB // apply effects per pixel if (typeof(greyscaleMethod) == typeof(GreyscaleMethod_Average)) { r = g = b = (r + g + b) / 3; } else if (typeof(greyscaleMethod) == typeof(GreyscaleMethod_Luminance)) { r = g = b = (int)(r * 0.2126 + g * 0.7152 + b * 0722); } if (typeof(invert) == typeof(True)) { r = 255 - r; g = 255 - g; b = 255 - b; } // [...] write RGB } } } bmp.UnlockBits(data); } } public class GreyscaleMethod_None : GreyscaleMethodEnum { } public class GreyscaleMethod_Average : GreyscaleMethodEnum { } public class GreyscaleMethod_Luminance : GreyscaleMethodEnum { } public class GreyscaleMethodEnum { } ``` Doing the same optimization through code duplication would require 6 methods, and the number would increase exponentially with the number of parameters. However the compiler would know to only generate the methods which are actually used in the code. " +17275 area-System.Collections Migrate new convenience APIs into extension methods Highly used generic types (mostly Collections) pay high cost for every API (method) we add to it. We should revisit the decisions of adding new APIs (esp. convenience APIs) directly on the type and consider moving them into extension methods instead (in future and potentially revisit those we added during 2.0 and did not publish yet). Context: see @jkotas's comment and guidance here: https://github.com/dotnet/coreclr/pull/10203#issuecomment-287526223 +17276 area-System.Data Avoid allocation in TdsParse when reading multiple decimals without a call to writedecimal The TdsParserStateObject contais a array for _decimalBits that is supposed to be reused (See comment: // used alloc'd array if we have one already). But it only gets assigned in TdsParser.WriteDecimal. So if we have a readonly workload we allocate the array every time we access a decimal. Fix: assign the _decimalBits array in TryReadDecimalBits where it gets already checked. +17277 area-Meta Remove NoWarn 0436 from Runtime.Extensions, Threading.Thread & Thread… Remove NoWarn 0436 from Runtime.Extensions, Threading.Thread & Threading csproj Fixes #12678 & #12850 +17281 area-System.Net Proposal: SocketAsyncEventArgs.SetBuffer(Memory) See discussion here: https://github.com/dotnet/corefx/pull/17237#issuecomment-287613725 +17282 area-System.Data SqlClient Named Pipes on Windows doesn't work with \\.\pipe\sql\query While connecting to a Named Pipe instance like \\.\pipe\sql\query using SqlClient on Windows, the connectivity fails. This is happening because `Uri` parsing considers '.' in hostname as an invalid Uri. This is a supported connection string data source and is particularly needed for LocalDb support in Managed SNI. Needed for https://github.com/dotnet/corefx/issues/17166 +17283 area-System.Data Named Pipes integrated authentication doesn't work On Windows, the integrated authentication for Named Pipes doesn't work. This is because in Managed SNI, the tokens are being fetched only during the TCP connectivity. This is particularly needed for LocalDB support https://github.com/dotnet/corefx/issues/17166 +17284 area-System.Data Allow . as hostname in pipe names Fixes https://github.com/dotnet/corefx/issues/17282 Since Uri cannot handle . as hostname, the changes include splitting the named pipe data source by \ and generating the hostname and pipename from the split parts. Apart from the tests added, I ran some tests with a SqlServer to see if the connectivity works. cc @corivera @geleems +17285 area-Infrastructure Updated cmake link to target stable builds +17286 area-System.Memory SpanPool Like the new `ArrayPool`, I could see a SpanPool being useful once/if Span becomes better supported. And since `Spans` are structs, you could do cool stuff like a bunch of Spans could be backed by a single large Array, allowing better cache locality, assuming the Spans are larger than a cache-line and multiples of a cache-line. And reducing object counts. Shrinking the pool could also represent an issue, if supported. +17287 area-Infrastructure Allow not to publish runtime and xunit stubs CLR unittest needs pure FX libraries without runtime and xunit stubs, but it seems that there is no way to exclude runtime and xunit stubs from output. This commit allows users to get pure FX libraries without runtime/xunit stubs via setting SkipRuntimePublish and SkipXunitPublish as true. The default behavior is same as before. +17289 area-Infrastructure Update ProjectNTfs to beta-25120-00 (master) +17292 area-System.Threading DataFlow: Add ability to restrict Duplicates "The DataFlow components are great for managing concurrency/queueing. However, they do not provide a way to ensure that items are not added more than once at a given time. For instance, if you are using an `ActionBlock` to process files received, there is no mechanism to ensure that the file is not added a second time if it is already present (e.g. via a manual catchup process). class Program { private static readonly ActionBlock worker = new ActionBlock(file => ProcessFile(file), new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = 1 }); private static void ProcessFile(string file) { //Process the File. new ManualResetEvent(false).WaitOne(10000); File.Delete(file); } private static Timer ScanTimer; static void Main(string[] args) { ScanTimer = new Timer() { Interval = 1000, AutoReset = true, Enabled = true }; ScanTimer.Elapsed += (sender, eventArgs) => GetFiles(); ScanTimer.Start(); } private static void GetFiles() { foreach (var file in Directory.EnumerateFiles(@""C:\Temp\Files"", ""*.*"", SearchOption.TopDirectoryOnly)) { worker.Post(file); //Files currently Queued will be added a second time. } } } Can we add a mechanism to ensure uniqueness? Some options: * Expose methods to show InProcess/QueuedItems. Allow users to implement their own checking. e.g. `worker.PostedItems` * Provide an, `ExecutionDataflowBlockOptions` Property to ensure uniqueness. Options on this: * Uniqueness using the default `Equals` mechanism - Devs are required to override this if required for specific use cases. * Allow devs to specify an equality method during specification of the option, e.g. ` new ExecutionDataflowBlockOptions() { EnsureUniqueness = (a, b) => return a.Id == b.Id }`" +17295 area-System.Net Remove SocketAsyncEventArgs._ptrNativeOverlapped `SocketAsyncEventArgs` uses a `SafeNativeOverlapped` to represent the `NativeOverlapped*` it gets back from the `PreAllocatedOverlapped`. This leads to several costs: - Allocation/disposal of the `SafeNativeOverlapped`. It used to be allocated/disposed for every operation, and that was fixed. But it's still allocated/disposed every time the `SocketAsyncEventArgs` changes associated with a `Socket`, and that's problematic in a pooling situation, where a `SocketAsyncEventArgs` is taken from a pool, used for an operation, and then returned to the pool to be used subsequently by another operation, likely on a different socket. - It adds a field to `SocketAsyncEventArgs`, as the `SafeNativeOverlapped` instance needs to be disposed of only when the operation completes. - As with any `SafeHandle`, it adds AddRef/Release costs to each P/Invoke with which it's used. But, it's unnecessary on `SocketAsyncEventArgs`. The overlapped has a very controlled lifetime: it's created internally, it's passed to an internal async operation, and upon completion of that operation it's freed. The benefits of the `SafeHandle` don't apply here: - `SafeHandle`s help guaranteed cleanup via a finalizer, but we're not publishing this pointer and have knowledge of its complete lifetime. The only place it would help is if we got an asynchronous exception (e.g. a thread abort) in a very unexpected place, and we don't need to be reliable against such things (nor would we be even if we added that). - `SafeHandle`s help guarantee that the pointer won't be disposed of while still in use, but that's mainly relevant when handed out to multiple pieces of code, and in particular code we don't control... in this case, it's not handed out to any code other than that in this one file. On my machine, this improves the throughput by ~13% in the example at https://github.com/dotnet/corefx/pull/17237#issuecomment-287613725 (which is stressing this case by changing the socket on every send/receive and doing very fast send/receives), and makes it allocation-free to change the Socket with which a SocketAsyncEventArgs is associated (whereas today there’s a 40byte SafeHandle allocation each time it changes). With a small modification to that test to not change the buffer and instead set it once up front, this still has an ~8% throughput improvement, most of which is due to the reduction in SafeHandle marshaling and associated AddRef/Release costs. cc: @geoffkizer, @davidsh, @cipop, @jkotas, @vancem +17296 area-System.Net Renames the HTTP outgoing request Activity to HttpReqOut It was named simply 'Activity' which is too generic. This will be used as a template for other logging so we want to use best practices. Others have not yet taken a dependency on the name, but this will change soon, so this is our only chance to do this. +17297 area-System.Memory Porting Span speedup of CopyTo into ReadOnlySpan +17299 area-System.Net "HttpMethod should include ""PATCH"" as a property" "# Latest Proposal Expose Http `PATCH` Verb alongside [existing verbs on `HttpMethod`](https://apisof.net/catalog/System.Net.Http.HttpMethod) `GET`, `PUT`, `POST`, `DELETE`, etc. and on [`HttpClient` as Async methods](https://apisof.net/catalog/System.Net.Http.HttpClient) ```diff namespace System.Net.Http { public class HttpClient { + public Task PatchAsync(string requestUri, HttpContent content); + public Task PatchAsync(Uri requestUri, HttpContent content); + public Task PatchAsync(string requestUri, HttpContent content, CancellationToken cancellationToken); + public Task PatchAsync(Uri requestUri, HttpContent content, CancellationToken cancellationToken); } public class HttpMethod { + public static HttpMethod Patch { get; } } } ``` # Original Proposal ## Description As a part of Http requests, PATCH is an often used way to do a partial update of an object, and is common enough to merit it's own property within the `HttpMethod` class. ## Proposed API Changes ```csharp HttpMethod.Patch; ``` ## Example ```csharp // old var request = new HttpRequestMessage { Method = new HttpMethod(""PATCH"") // deviates from Get, Put, Post, Delete }; // new var request = new HttpRequestMessage { Method = HttpMethod.Patch // matches Get, Put, Post, Delete }; ``` I'd like to submit a PR with the simple change to add PATCH as an Http Method in order to round out the class. This change in the future could also extend the `HttpClient` to include new `PatchAsync` methods." +17300 area-System.Diagnostics Flaky test System.Diagnostics.TraceSourceTests.SwitchClassTests.PruneTest "This test fails when a GC happens to occur after this `<<<<` line I'm not sure what it's trying to achieve (beyond testing the GC itself) so I can't guess what the fix is. ``` ``` ``` [System.Runtime.CompilerServices.MethodImplAttribute(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] static WeakReference PruneMakeRef() { return new WeakReference(new TestSwitch()); } [Fact] public void PruneTest() { var strongSwitch = new TestSwitch(); var weakSwitch = PruneMakeRef(); //<<<< GC here Assert.True(weakSwitch.IsAlive); GC.Collect(2); Trace.Refresh(); Assert.False(weakSwitch.IsAlive); GC.Collect(2); Trace.Refresh(); } ``` @brianrob " +17301 area-Infrastructure Update dogfooding instructions See comments at https://github.com/dotnet/corefx/commit/38dfde9b867a25db2d98b1fdcb86dddbd87d5928#commitcomment-21392770 from @marksmeltzer. There are 2 issues that should be looked at. 1. Why the Microsoft.NETCore.Platforms package isn't built by default. 2. Why does setting BuildNumberMinor not update the package version cc @ericstj +17302 area-Serialization Porting Serialization Tests in NetNative Repo only to CoreFx Here are the list of tests that exist in NetNative repo only. We'd like to port the tests to CoreFx as we are going to remove the tests from NetNative repo soon. ``` DCJS_ConcurrentDictionary DCJS_InvalidDataContract_Write_Invalid_Types_Throws DCJS_ValidateExceptionOnUnspecifiedRootSerializationType DCJS_WinMdTypes DCS_NativeDll DCS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract DCS_InvalidDataContract_Empty_Collection DCS_InvalidDataContract_NoEmpty_Collection DCS_InvalidDataContract_Read_Invalid_Types_Throws DCS_InvalidDataContract_Write_Invalid_Types_Throws DCS_ValidateExceptionOnUnspecifiedRootSerializationType DCS_WinMdTypes Xml_DefaultNamespaceChange_ObjectAsRoot Xml_DefaultNamespaceChange_SimpleArray_ObjectAsRoot Xml_DefaultNamespaceChange_XmlAttributesTestAsRoot Xml_TypeWithIndirectReferencedAssembly Xml_DerivedTypeWithDifferentOverrides Xml_ValidateExceptionOnUnspecifiedRootSerializationType Xml_VerifyCompilationIssueOnly Xml_NookTypes Xml_WinMdTypes ``` /cc: @zhenlan +17304 area-System.IO Provide overloads of File.Copy that support cancellation and progress File.Copy uses the Win32 CopyFileW/A API. There's also CopyFile2 (or CopyFileEx), which support cancellation and progress. That API should enable exposing additional overloads of File.Copy: * `(..., CancellationToken cancellationToken);` * `(..., IProgress progress);` * `(..., IProgress progress, ICancellationToken cancellationToken);` With something like: ```c# public class CopyFileProgressInfo { public long TotalFileSize { get; } public long TotalBytesTransferred { get; } // Remaining values are less important. public long StreamSize { get; } public long StreamBytesTransferred { get; } public int StreamNumber { get; } public string SourceFileName { get; } public string DestinationFileName { get; } // Or even more values could be added; details depends on which API is used. } ``` for progress. Current alternatives, such as using CopyToAsync from one stream to another, can't take advantage of a number of optimizations done within the CopyFile* APIs, including avoiding network roundtripping of the data when copying from a server to a server. Some additional details: https://blogs.technet.microsoft.com/markrussinovich/2008/02/04/inside-vista-sp1-file-copy-improvements/ In practice, I've seen CopyToAsync on streams be multiple times slower than File.Copy (CopyFile* APIs). It would be great to have support for cancellation and progress without having to lose significantly in performance. +17305 area-System.Security DSACng does not match netfx or NIST when H < sizeof(q) A TODO got left in the implementation of DSACng concerning the scenario where the hash size is smaller than the Q size: https://github.com/dotnet/corefx/blob/2c32fb1c1a14a054609a6f1a94927eb4e13bdd5e/src/Common/src/System/Security/Cryptography/DSACng.SignVerify.cs#L61-L70. The code, as it stands, produces answers when netfx does not. And a NIST CAVP test confirms that the behavior it does do is not standards-conformant. FYI @steveharter. +17306 area-System.IO Provide a File.CopyAsync method Related to #17304. File.Copy currently blocks the calling thread. As mentioned in the related issue, .NET alternatives lose significant performance optimizations done within the CopyFile* APIs. It would be great if .NET had a good, general purpose, async file copy method. Doing so well (fast) probably requires a new Win32 API that support something like overlapped I/O to avoid blocking the calling thread. Some possible overloads: * `Task CopyAsync(string sourceFileName, string destFileName);` * `Task CopyAsync(string sourceFileName, string destFileName, CancellationToken cancellationToken);` * `Task CopyAsync(string sourceFileName, string destFileName, IProgress progress, CancellationToken cancellationToken);` It probably makes sense to provide an async version of File.Move at the same time, which also likely requires new Win32 API support. +17309 area-System.Reflection Recognize the framework and version of an assembly with the MetadataReader The System.Reflection.Metadata.MetadataReader class allows me to read the metadata without loading permanently the assembly in memory. Once I open the assembly with the MetadataReader, what is the best way to distinguish the assemblies targeting different frameworks? - netstandard (framework neutral) - .net framework - .net core And for each of those, how can I read the version (I mean for example netstandard1.4, netcoreapp1.1 and net 4.6.2)? Reading the custom attributes or what else? +17316 area-Meta General performance question (comparing Nightly to 1.1) I've got a console app and library I'm working on that targets CoreFx 1.1 and 2.vNext (the nightly). I also target the full framework. This app (which will be released as OSS soon) parses text documents and spits out new text documents. It hits the System.IO APIs (mostly Path.GetFullPath), System.Text APIs (mostly StringBuilder), the collection classes (mostly Dictionary<,>), and System.Text.RegularExpression API (mostly matching). The CoreFx 1.1 build (compiled in release mind you) runs about 25% slower than the full framework build (4.6.2) of the app. The CoreFx 2.0 nightly build (also in compiled in release) runs about 40% slower than full framework and 15% slower than CoreFx 1.1 version of the app (for the code compiled against my local copy of the nightly, I did a release publish build just to be sure that I was running against the latest DLLs). Are there any ingrained debug flags, etc., that need to be disabled (perhaps by command line option?) when compiling the latest CoreFx sources to get maximum performance? Or is there some other general reason that might explain the performance drop I'm seeing from 1.1? This is the same exact code running on all three platforms. I will be publishing this project soon. So it might be worth looking into at that point. I don't know if the profiling tools are working for the latest CoreFx builds yet. If so, I'd be happy to post profiler results if anyone can point me to some documentation on how to profile when dogfooding a local build of CoreFx. I'm sure the focus right now is more on completeness and correctness. But I am a bit of a performance hawk. So I thought I'd ask. +17317 area-System.Net WinRT WebSocket throws unhandled exception on lost connection "The issues affects UWP implementation of `ClientWebSocket`. When `ReceiveAsync` call is pending and the connection is lost, `System.Net.WebSockets.WinRTWebSocket.OnMessageReceived` throws an exception with HRESULT 0x80072EFE (""The connection with the server was terminated abnormally"") here: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WinRTWebSocket.cs#L282 The exception is thrown on a background thread, which cannot be handled so it brings down the process." +17318 area-System.Collections [Performance] Take advantage of new array range check elimination in other collections See https://github.com/dotnet/coreclr/pull/9539#issuecomment-287937667; doing `if ((uint)index >= (uint)array.Length) { throw something; }` will now elide the range check for `array[index]` afterwards. Probably won't yield a huge benefit in most placecs, but the perf gains would be essentially free. We should probably do this in collections that are backed by arrays, e.g. [here](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/Stack.cs#L207) is one place where the new JIT behavior could be put to use. +17323 area-System.IO Adding tests for System.IO.Path.IsPathRooted that checks if invalid v… …olume letters are indeed invalid fixes https://github.com/dotnet/coreclr/issues/10297 Tests should work after coreclr merge is synced into corefx +17324 area-System.Net Can not create Raw socket on CentOS 7 Hello everyone, I get a problem when create a Socket object with Raw type. My environment as follow: * centos 7 x64 * dotnet Core 1.0.1 My code: ```C# _socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP); ``` It work perfect on Windows, but throw a SocketException on CentOS. The Exception: ``` System.Net.Sockets.SocketException: Protocol not supported at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) ``` how can I make it work? Thx +17327 area-System.Net Flaky test System.Net.Tests.WebProxyTest.BypassOnLocal_MatchesExpected "This test fails when a GC stress on Ubuntu 16.04 LTS: I am not sure if it is a bug or not, open this issue to track it c.b__27_1(IAsyncResult asyncResult) in /home/gcstress/repos/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 652 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.WebProxyTest.d__10.MoveNext() in /home/gcstress/repos/corefx/src/System.Net.WebProxy/tests/WebProxyTest.cs:line 146 at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() in /home/gcstress/repos/corefx/src/System.Linq/src/System/Linq/Select.cs:line 133]]> " +17330 area-System.Net Socket connection hangs on Linux when buffers aren't read fully before closing connection On windows 10 works perfectly. On ubuntu16 hangs every time. dotnet 1.0.0-preview2-1-003177 command to reproduce (every time) at the following links : ``` dotnet test src/FastTests -class FastTests.Server.OAuth.CanAuthenticate -verbose ``` At first I used WebSocket and the connection hanged. Repro every time at: https://github.com/ravendb/ravendb/commit/1990e41e4da8d3b97e4ba98714028ac27eb9f514 While thinking this is a websocket problem, I changed the code to use http requests, but it still hangs in the same way. Only when I drains the buffers it passes: https://github.com/ravendb/ravendb/commit/d8f4aec4561e51db50b739288b520b8121e45a22 The last commit needed only in Linux. In windows it works fine. My suspect is websocket disconnections timeouts and hangs on linux are related to the above bug, and solving it for http requests will help also with websockets. +17334 area-System.Net Fix Http test regarding uri fragments and redirection No real test code change. But confirming that this test needs to be skipped on Windows 7 due to a bug in WinHTTP with preserving fragments in an uri during redirection. The WinHTTP bug was fixed in Windows 8. Fixes #16272 . +17337 area-Infrastructure Move corefx from OSX 10.10 to 10.12 For 2.0 we are supporting only a min of OSX 10.12 so we need to move any references to 10.12. - Update any CI or build machines - Update any RID stuff in the repo fyi @gkhanna79 @ericstj +17339 area-System.Security X509Chain does not complete on Linux if a certificate shares a name with its issuer Hi, I'm trying to use X509Chain in order to validate a self-signed chain. I have created a chain that consists of CA->Intermediate->Server. In order to validate the chain I'm using the following code: ``` using (X509Chain certsChain = new X509Chain()) { //Store CA temporary in certificats store certsChain.ChainPolicy.ExtraStore.Add(caCert); certsChain.ChainPolicy.ExtraStore.Add(intermediateCert); certsChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority; // This setup does not have revocation information certsChain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; // Build the chain var buildStatus = certsChain.Build(serverCertificate); // Are there any failures from building the chain or not enough statuses in chain if (buildStatus == false || certsChain.ChainStatus.Length == 0) { return false; } if (certsChain.ChainElements.Count != 3) { return false; } } ``` On Windows I get certsChain.ChainElements = 3 and certsChain.ChainStatus[0].Status = X509ChainStatusFlags.UntrustedRoot which is correct. On Debian I get **certsChain.ChainElements = 1** and certsChain.ChainStatus[0].Status = X509ChainStatusFlags.PartialChain No matter what I do, I cannot make the chain validation on Debian with self-signed certificates. Please assist as it seems like a bug. Thanks, Avi. +17341 area-System.Net Use IPAddress.Address in place of GetAddressBytes Fixes #12662. I could find only one instance in CoreFx repo. @stephentoub @karelz please review. +17342 area-System.IO Compression.ZipFile support for Unix Permissions Split from #17067 We should add support in the Unix ZipFile for capturing the permissions of entries created using `CreateFromDirectory`, `CreateEntryFromFile`, etc. # Code This is what the code to create would look roughly like: ``` // ZipFileExtensions.Unix.cs public static partial class ZipFileExtensions { internal static ZipArchiveEntry DoCreateEntryFromFile(ZipArchive destination, string sourceFileName, string entryName, CompressionLevel? compressionLevel) { ZipArchiveEntry entry = SharedDoCreateEntryFromFile(destination, sourceFileName, entryName, compressionLevel); ApplyPermissions(entry, sourceFileName); } internal static void ApplyPermissions(ZipArchiveEntry entry, string sourceFileName) { Interop.Sys.FileStatus output; Interop.Sys.Stat(sourceFileName, out output); // The Stat Mode lower two bytes represent the filetype and permissions of a file/entry. These directly // correspond to the high two bytes of the Unix `zip` external attributes encoding. entry.ExternalAttributes |= (output.Mode << 16); } } ``` ``` // ZipFileExtensions.Windows.cs public static partial class ZipFileExtensions { internal static ZipArchiveEntry DoCreateEntryFromFile(ZipArchive destination, string sourceFileName, string entryName, CompressionLevel? compressionLevel) { return SharedDoCreateEntryFromFile(destination, sourceFileName, entryName, compressionLevel); } } ``` ``` // ZipFileExtensions.cs public static partial class ZipFileExtensions { internal static ZipArchiveEntry SharedDoCreateEntryFromFile(ZipArchive destination, string sourceFileName, string entryName, CompressionLevel? compressionLevel) { .... this is the same code as the current DoCreateEntryFromFile } } ``` # Usage There's a question here as to whether the permissions capturing/writing should be done by default or whether we should offer an opt-in/opt-out. There's very little cost associated with including permissions in the zips that we create and not any compat worries, but applying permissions to unzipping is a bit more tricky. # Benefit Zips created using ZipFile on Unix will be usable interchangeably with those created using the `zip` command as far as permissions are concerned. Using ZipFile to unzip zips created with `zip` will create files that have the same permissions as they were created with. @eerhardt is happy. cc: @stephentoub @JeremyKuhne @terrajobst +17345 area-System.Reflection "Need an api to determine if a Type is a ""plain old non-constructed type.""" "**Proposal for New API:** ```c# class Type { public virtual bool IsTypeDefinition { get { throw NotImplemented.ByDesign; } } } ``` **Why** Right now, if we want to test if a type is a plain old non-constructed type (i.e. ""one with a mdTypeDef metadata token""), we have to use this windy expression: ```c# if (!type.HasElementType && !type.IsConstructedGenericType && !type.IsGenericParameter) {...} ``` There are a few problems with this: - It's a mouthful. - It take 3 virtual calls - It's not robust against future expansions of the api. Suppose a future expansion to Reflection adds more slices to the Venn diagram (e.g. function pointer types, modified types, or something not yet envisioned...). We want to be able to write robust code that falls through to an ""I don't understand this. NotSupportedException"" fallback, but right now, there's no way to do that. We have to call every other **Is** property we know of, then hope that the ""else"" case will represent the right set for all time. There is also completeness issue - we have inclusion predicates for every other slice of the Venn diagram, yet the most common slice of all lacks one? **Naming** I'm proposing it be called **IsTypeDefinition** for two reasons: - We already have **IsGenericTypeDefinition** that captures the subset of defined types with generic parameters. So **IsTypeDefinition** is a natural derivation from that. - It also rhymes naturally with **Assembly.DefinedTypes** (which returns all the non-constructed types in an assembly.)" +17346 area-Infrastructure Run package closure validation during official builds, possibly CI I added some validation for packages in https://github.com/dotnet/corefx/pull/17246 This is tracking additional improvements: - [x] Switch to latest CLI and MSBuild based projects. - [ ] Add test cases post-restore that examine the following: - [x] No bin-clashes - [ ] API compat between ref & lib. - [x] No type-clashes in ref. - [x] Verify closure - [ ] Enable the tests to run in helix / official builds. For 3 @Chrisboh pointed me at some docs for that: https://github.com/dotnet/core-eng/pull/598 /cc @chcosta @MattGal @weshaggard +17347 area-Infrastructure [WIP] Move contents of binplace.targets Attempts to fix #14588 * The targets themselves are now located in FrameworkTargeting.targets. This will let us easily merge them back into buildtools, where the common logic should live. * The specific properties used in corefx are now in dir.targets. The discussion in #14588 originally mentioned putting them in dir.props, but they actually need to be in dir.targets based on their ordering requirements. There was also some concern about bloating up dir.props / dir.targets. Do we want to try to separate them into a different file / folder? I haven't made any functional changes here, just moved things around. Further cleanup ideas are welcome. @weshaggard @ericstj +17348 area-System.Net Skip NetEventSource logging tests on .NET Framework The 'NetEventSource' logging only works on .NET Core libraries. So, we need to skip these tests when running on full .NET Framework. Fixes #14989 +17351 area-System.Net Skip more NetEventSource logging tests on .NET Framework Similar to PR #17348. The 'NetEventSource' logging only works on .NET Core libraries. So, we need to skip these tests when running on full .NET Framework. +17352 area-System.IO Fix Pipes AccessControl behavior to match Desktop There are two discrepancies in System.IO.Pipes.AccessControl behavior between netfx/netcoreapp that this resolves: - SetAccessControl on a broken NamedPipeClientStream should throw an IOException (before this was throwing an InvalidOperationException) - GetAccessControl on a NamedPipeClientStream for which the paired NamedPipeServerStream has been disconnected should throw an InvalidOperationException (before this was hitting a Debug statement in Debug or an InvalidOperationException in Release). This PR also expands the Pipes.AccessControl tests to cover the above scenarios as well as several others that we weren't testing. replaces https://github.com/dotnet/corefx/pull/17251 resolves #10899 resolves #12761 +17353 area-System.Numerics Implement SinPi and CosPi "We should implement SinPi(x) and CosPi(x) methods in the System.Math class. These methods are listed in section 9.1 of the [IEEE 754 spec](https://www.csee.umbc.edu/~tsimo1/CMSC455/IEEE-754-2008.pdf) as recommended functions. The methods return sin(pi * x) and cos(pi * x). They are different from Sin(PI * x) and Cos(PI * x) because PI is a finite-precision approximation to pi, while pi in the definition of SinPi and CosPi is effectively infinitely precise. The limited precision of PI can cause unexpected behavior for functions like Sin(PI * x). For example, while sin(pi * n) = 0 for all integer n, Sin(PI * n) != 0.0 for any n != 0, and can get quite far from zero for large n. (See issue #10276). SinPi(n) == 0.0 for all n. It is actually easier to implement SinPi and CosPi than Sin and Cos. Internally, Sin and Cos are computed in two steps: first x is written as x = m (pi / 2) + x', where m is an integer and |x'| <= pi / 4, then sin(x') is determined via an optimized expression that only applies to the allowed range of x'. The first step is actually quite difficult, since one requires an extended-precision value of pi (~1100 bits) and corresponding a extended-precision multiplication algorithm in order to determine x' within a few ulp for all representable x. For SinPi and CosPi, the ""range reduction"" step is a simple round-to-nearest-integer in order to write 2 x = m + x'. The resulting fractional part is then fed into the same small-angle logic used in Sin and Cos after range reduction. Ideally, this would be implemented inside the same native library that computes Sin and Cos, so that one could route directly to the small-angle logic after the round-to-nearest-integer logic. But I am told that this native library does not expose its internal small-angle method, nor does it implement SinPi and CosPi. Even implemented in managed code, though, SinPi and CosPi should be quite fast, because round-to-nearest-integer is fast and most of the range reduction machinery inside Sin and Cos will be bypassed for small arguments. Here is a simple example implementation: ``` public static double SinPi (double x) { if (x < 0.0) return (-SinPi(-x)); long y0; double y1; ReduceByOnes(2.0 * x, out y0, out y1); double z = Math.PI / 2.0 * y1; // Since |y1| <= 0.5, PI is a sufficiently good approximation to pi to preserve full accuracy // in this product and the following trig function. switch (y0 % 4L) { case 0L: return Math.Sin(z); case 1L: return Math.Cos(z); case 2L: return -Math.Sin(z); case 3L: return -Math.Cos(z); default: throw new InvalidOperationException(); } } private static void ReduceByOnes(double x, out long x0, out double x1) { double y = Math.Round(x); const double max = (double) (1L << 56 ); if (y < max) { // All integers can be represented with full precision by a double fit into a long. x0 = (long) y; x1 = x - y; } else { // For sufficiently big values, all representable doubles are integers divisible by 4. x0 = 0L; x1 = 0.0; } } ``` The spec also recommends AtanPi and Atan2Pi, and TanPi is another natural candidate." +17354 area-Infrastructure Readd testResults.xml now that FileStream is available for uapaot cc: @weshaggard Now that FileStream is available in uapaot we can re-add the xunit option to write testResults.xml plus also add the option to redirect the output of the Console to a file and then printing the contents of that file. +17356 area-System.Text System.Text.Encoding.GetEncoding(Int32 codepage) 850 error "While migrating SharpZipLib pcl library to netstandard1.3 and tests to netcore2.0 I noticed an issue with a few of their tests: ``` ``` This is what triggers the exception: `System.Text.Encoding.GetEncoding(defaultCodePage);` Default code page gets set like that: `static int defaultCodePage = Encoding.UTF8.CodePage;` Did we change anything with netcore regarding codesets? Source: https://github.com/ViktorHofer/SharpZipLib/blob/master/src/ICSharpCode.SharpZipLib/Zip/ZipConstants.cs#L550" +17357 area-System.Memory Adding Span IndexOfAny APIs that take 2 and 3 bytes From: https://github.com/dotnet/corefxlab/pull/1348#issuecomment-287998752 Part of https://github.com/dotnet/corefxlab/issues/1314 / https://github.com/dotnet/corefxlab/issues/1293 Adding: ```C# public static int IndexOfAny(this Span span, byte value0, byte value1) public static int IndexOfAny(this Span span, byte value0, byte value1, byte value2) public static int IndexOfAny(this Span span, ReadOnlySpan values) public static int IndexOfAny(this ReadOnlySpan span, byte value0, byte value1) public static int IndexOfAny(this ReadOnlySpan span, byte value0, byte value1, byte value2) public static int IndexOfAny(this ReadOnlySpan span, ReadOnlySpan values) ``` Edit: IndexOf => IndexOfAny cc @KrzysztofCwalina, @davidfowl +17361 area-System.Memory Fix array variance checks for portable span Fix for #14533 +17362 area-System.Net DualModeConnect_IPAddressListToHost_Throws failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug_prtest/4847/consoleText ``` System.Net.Sockets.Tests.DualModeConnectToIPAddressArray.DualModeConnect_IPAddressListToHost_Throws(connectTo: [127.0.0.1], listenOn: ::, dualModeServer: False) [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: (No exception was thrown) Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(283,0): at System.Net.Sockets.Tests.DualModeConnectToIPAddressArray.DualModeConnect_IPAddressListToHost_Throws(IPAddress[] connectTo, IPAddress listenOn, Boolean dualModeServer) ``` +17365 area-Infrastructure Xunit test runner on .NET Framework doesn't work with ITestOutputHelper "While debugging test failures when running CoreFx tests against the full .NET Framework, I discovered that exceptions are being thrown when using the ITestOutputHelper interface. So, this example code will throw an exception on the `_output.WriteLine(""Hello World"")` line: ```c# using Xunit; using Xunit.Abstractions; public class MyTestClass { private readonly ITestOutputHelper _output; public MyTestClass(ITestOutputHelper output) { _output = output; } [Fact] public void SimpleTest__Success() { _output.WriteLine(“Hello World”); } ``` Our test build/infrastructure system currently invokes tests targetting .NET Framework like this: >call xunit.console.exe TestAssembly.dll -noshadow -noappdomain -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetfxtests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests This causes an exception to be thrown >System.InvalidOperationException : There is no currently active test case. The exception is coming from Xunit: https://github.com/xunit/xunit/blob/master/src/xunit.execution/Sdk/Frameworks/TestOutputHelper.cs#L50 Removing the -noappdomain parameter makes things work again and no exception is thrown. However, according to @safern, we need that parameter because ""The -noappdomain is needed for other tests because if not we would get the failures as a serialization exception instead of having an assert failure"" This is probably a bug in Xunit. ITestOutputHelper is used in a lot of networking tests and a few other tests in CoreFx (e.g. Xml). " +17366 area-Serialization Add Test for Types Having Virtual Generic Property @mconnew found that it's currently not possible to create delegate for virtual generic method. As reflection based serialization creates setter/getter delegates for properties, we'd like to check if it would fail when serializing types having virtual an generic property. The task is to add tests for this case. +17367 area-System.Runtime Named Multiply and Divide methods on TimeSpan Update refs and add tests. Closes #16476 Won't pass CI until dotnet/coreclr#10366 and dotnet/corert#3052 are in. +17368 area-System.IO File.GetLastWriteTime throws on missing files on Linux, but not Windows "On .NET Framework and CoreCLR on Windows, I can safely call `File.GetLastWriteTime` on a file that does not exist, and I get ""December 31, 1600 4:00:00 PM"" returned. But on Linux, CoreCLR throws `FileNotFoundException`. ``` System.IO.FileNotFoundException: Could not find file '/mnt/c/git/libgit2sharp/LibGit2Sharp/obj/Debug/netstandard1.3/AfterRebaseStepInfo.348465dd.generated.cs'. [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] File name: '/mnt/c/git/libgit2sharp/LibGit2Sharp/obj/Debug/netstandard1.3/AfterRebaseStepInfo.348465dd.generated.cs' [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.IO.FileSystemInfo.EnsureStatInitialized() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.IO.FileSystemInfo.System.IO.IFileSystemObject.get_LastWriteTime() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.IO.FileSystemInfo.get_LastWriteTimeUtc() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.IO.UnixFileSystem.GetLastWriteTime(String fullPath) [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.IO.File.GetLastWriteTime(String path) [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at CodeGeneration.Roslyn.Tasks.Helper.<b__38_1>d.MoveNext() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] --- End of stack trace from previous location where exception was thrown --- [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at CodeGeneration.Roslyn.Tasks.Helper.Execute() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at CallSite.Target(Closure , CallSite , Object ) [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at CodeGeneration.Roslyn.Tasks.GenerateCodeFromAttributes.Execute() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] at Microsoft.Build.BackEnd.TaskBuilder.d__25.MoveNext() [/mnt/c/git/libgit2sharp/LibGit2Sharp/LibGit2Sharp.csproj] ``` I notice that the problem isn't in `File.GetLastWriteTime` itself, because `FileSystemInfo.get_LastWriteTimeUtc()` also is not expected to throw in this case either. I suggest for ease of interoperability, we keep corefx APIs behaving the same way across operating systems for this." +17369 area-Microsoft.CSharp Remove dead code from Microsoft.CSharp Remove unused internal types `mdToken` type is only use once in a parameter that is in turn unused. Remove that parameter an then the type. Exclude `Equals` overloads from coverage when never called. Defensive to leave them in release builds, but they should never be hit so fail an assertion if they ever are. Simplify `SymWithType`'s `!=` to the negation of `==`. Remove `Aggregates._isComImport`. Is correctly set, but then never used. Clean-up: Use C# keywords rather than .NET type names and remove some unused directives. +17373 area-System.Data System.Data.SqlClient.Tests.ExceptionTest.NamedPipeTest failed in CI "COnfiguration: OuterLoop_Windows10_release ([build#134](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/134/consoleText)) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_win10_release/134/consoleText ~~~ System.Data.SqlClient.Tests.ExceptionTest.NamedPipeTest(dataSource: \""np:\\\\\\\\.\\\\pipe\\\\sqlbad\\\\query\"") [FAIL] Assert.Contains() Failure Not found: (provider: Named Pipes Provider, error: 11 - Timeout error) In value: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) Stack Trace: D:\j\workspace\outerloop_win---6835b088\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs(116,0): at System.Data.SqlClient.Tests.ExceptionTest.VerifyConnectionFailure[TException](Action connectAction, String expectedExceptionMessage, Func`2 exVerifier) D:\j\workspace\outerloop_win---6835b088\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs(124,0): at System.Data.SqlClient.Tests.ExceptionTest.VerifyConnectionFailure[TException](Action connectAction, String expectedExceptionMessage) D:\j\workspace\outerloop_win---6835b088\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs(91,0): at System.Data.SqlClient.Tests.ExceptionTest.NamedPipeTest(String dataSource) ~~~" +17376 area-System.Collections Feature - ObservableCollections , Linq "Not sure if I'm in the right forum for this suggestion. It will be truly nice if the language team can extend the functionality of ObservableCollections to include functionality to detect when the item properties in the collection change (row change) , currently this does not seem possible it detects only add/ removed rows and not updated rows. UPDATE: To be moved into separate issue: ~~Also, in linq we can't exclude field name in the select statement. `List.Select(x=> new { column1 , column2 })`~~ ~~using code first approach in EF it would be seriously nice if we can say ""give me all table fields except the byte[] field of 20mb. By selecting the field names in the current linq scenario changing the database (code first - adding columns) you now always have to remember to add the new columns in the select statements. A better scenario would have included those new fields but still excluded the large byte[] field. `List.SelectAllExcept(x=> new { byte[] columns1 , byte[] column2 })`~~ Using currently .net core 1.1 Thks. " +17377 area-System.Runtime FormatterServices.GetSafeUninitializedObject I've been Googling and reading my way through issues on this repo for nearly an hour now and cannot figure out how to call `FormatterServices.GetSafeUninitializedObject(Type)` from .NET Core. I've tried adding a reference to every single System.Runtime.* NuGet package and I've tried targeting every single version of .NET Standard and .NET Core App 1.1 to no avail. Is this API available in .NET Core, and if so, what do I need to do to use it? Thanks. +17378 area-System.Memory IPAddress: use Span to support less allocaty IPv6 The IPAddress class has a constructor which accepts a long and an Address property that returns a long: ```c# IPAddress(Int64) public long Address { get; set; } ``` This makes it possible to: - create an IPv4 IPAddress without allocating a byte[] which isn't stored - retrieve the IPv4 address bytes without allocating a byte[] - change the IPv4 IPAddress The property has been deprecated, probably because it doesn't work for IPv6. We can support these operations for both IPv4 and IPv6 using the Span type: API Proposal: ```c# IPAddress(ReadOnlySpan); // AddressFamily inferred from Span.Length IPAddress(ReadOnlySpan, long scopeid); // Span.Length must be IPv6 void GetAddressBytes(Span); // Span.Length must match AddressFamily* void SetAddressBytes(ReadOnlySpan) { SetAddressBytes(bytes, 0); } void SetAddressBytes(ReadOnlySpan, long scopeid); // allocates if AddressFamily doesn't match* bool Equals(ReadOnlySpan); // Span.Length must match AddressFamily*, scopeid not checked bool Equals(ReadOnlySpan, long scopeid); // Span.Length must match AddressFamily* ``` *: special handling for IPv4MappedToIPv6. +17379 area-System.Diagnostics Is there an EventSourceAnalyzer analog in dotnet core? Or what is the recommended way to validate the correctness of EventSource instances in dotnet core projects? +17380 area-System.ComponentModel Clear cached display name in validation context when member name is set Fixes #11044 +17382 area-System.Diagnostics Process.GetProcessById() is slower than Process.GetProcesses() According to the test below, `GetProcessById()` is twice as slow as `GetProcesses()`. I get similar results when testing .NET Framework. Seems like there's room for optimizations in `GetProcessById()`. +17385 area-Infrastructure Enable additional linux portable platforms Enables portable linux runs on official builds for Ubuntu 14.04 Ubuntu 16.04 Ubuntu 16.10 openSuSE 42.1 +17386 area-Infrastructure Updating uap and uapaot baseline files FYI: @weshaggard @danmosemsft @joshfree Looks like the change on the version of the AccessControl is because our mscorlib facade depends on that version now, which is generated by GenFacades. I didn't dig deep into what triggered this change, but once I know more I'll log an issue for that. +17387 area-System.Net Improve CI: disable socket tests on Linux that have may have port collisions Similar to PR https://github.com/dotnet/corefx/pull/16548, this disables tests on Unix that may have IPV4+IPV6 port collisions with tests that run simultaneously. Addresses https://github.com/dotnet/corefx/issues/13967 (CI failure in System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom.ReceiveFromV6BoundToAnyV4_NotReceived) FWIW I have a POSIX C test that shows that such port collisions are possible under Linux - i.e. that it is possible to ask for two 'unused' ports (one IPV4, one IPV6) and then receive the two ports but which happen to have the same port #. cc @CIPop, @davidsh +17389 area-System.Runtime Reenable the test for Task.FromAsync now that BinaryCompatibiliy type is gone +17390 area-Infrastructure The build command should not change sources that are tracked by git Only on one of my boxes I'm getting this change every time I `clean -all && sync && build`: ``` S:\corefx (master) git diff diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index f50bb15..6efa1cc 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -1,3 +1,4 @@ +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. ``` +17391 area-System.Linq Feature - exclude field name using code-first approach "As requested I opened a seperate thread for this request. In linq we can't exclude field name in the select statement. List.Select(x=> new { column1 , column2 }) using code first approach in EF it would be nice if we can say ""give me all table fields except the byte[] field of 20mb. By selecting the field names in the current linq scenario changing the database (code first - adding columns) you now always have to remember to add the new columns in the select statements. A better scenario would have included those new fields but still excluded the large byte[] field. List.SelectAllExcept(x=> new { byte[] columns1 , byte[] column2 }) Using currently .net core 1.1 Thks." +17392 area-System.Security CAS related stubs missing some members breaking desktop compat https://github.com/dotnet/corefx/issues/17133 Please double check. ApiCombat tests succeeded +17393 area-Infrastructure Add property to disable xunit appdomain execution from particular tests projects Fixes #17365 We where passing the -noappdomain option by default when running tests on Desktop. This was causing some tests that use `ITestOutputHelper` to throw xunit exceptions (seems like an xunit issue). Now we will not pass the -noappdomain argument by default. With this change we would provide a way to pass the -noappdomain option to the runner from the csproj itself by setting property `` to true. I enabled this property already on `System.ComponentModel.EventBasedAsync` which we already had an issue related to a test failure that due to multiple app domains xunit was causing a `SerializationException` (#13418) which made it hard to debug the test failure. cc: @tarekgh @davidsh @weshaggard @stephentoub +17395 area-System.Data Refactoring logic for building server spn The logic for building server spn was factored out from CreateTcpHandle for supporting Named Pipe. +17396 area-System.IO SerialPort: fAbortOnError not always cleared correctly when port is opened @daflame76 reported this in #984. There has been a long-standing problem with SerialPort where the DCB fAbortOnError flag can get set somehow (by past problems with the port, how it gets set doesn't really matter) and is then not cleared by SerialPort when the port is opened in a .NET application. This changes the behaviour of the port so that it doesn't work correctly with SerialPort, because it's not expecting the fAbortOnError flag. There have been reports of this before [here](https://connect.microsoft.com/VisualStudio/feedback/details/584116) which have been closed as 'by design', which was, IMO, a mistake - or at least the reasoning given was incorrect. This needs a test in the test suite, and to be investigated to see: 1. Does the problem still exist 2. Is it really a SerialPort bug or do some USB ports behave differently to real ports 3. Regardless of '2', can the situation be improved by changes to SerialPort to be more defensive. This can be assigned to me. +17397 area-Infrastructure Add more robust cleanup to linux build defs - Changed all cleanup steps and steps that publish the build logs to always run and continue on error. - Added step to cleanup docker at the end - Added step to cleanup VSTS agent at the end - Changed PB_DockerContainerName value so that it is a little easier to know what product is not cleaning up containers. - Consolidated the Stop Container and Remove Container build steps. - Changed the default value of PB_BuildTestsArguments so that it matches the configuration used in the PB_BuildArguments. This makes it nicer if you are testing build definitions by manually queuing them. +17399 area-System.Runtime Fix System.Runtime.Extensions tests on uapaot FYI: @JeremyKuhne @danmosemsft These are the required changes in order to succesfully run ilc S.R.Extensions tests. Initial results of them are: ``` System.Runtime.Extensions.Tests Total: 1317, Errors: 0, Failed: 172, Skipped: 1, Time: 7.761s ``` +17400 area-Serialization Fixed Test Failures caused by Type.GetMethod The PR includes two fixes, 1. `Type.GetMethod` is not implemented on CoreRT yet. 28 of DCS tests failed due to this. The fix is to delay the initialization of those static fields that use`Type.GetMethod` but are required reflection based serialization only. Fix #16839. 2. Change class SerializationOption to be internal. The class was used internally only. It shouldn't have been set to public. +17401 area-System.Runtime BitConverter.GetBytes(long value) unaligned memory access As the .NET core supports architectures like ARM where unaligned memory writes can result in a fault, is the following code safe? ```csharp byte[] bytes = new byte[8]; fixed (byte* b = &bytes[0]) *((long*)b) = value; ``` [Source](https://github.com/dotnet/corefx/blob/0f2870b1ece429a0cc247b97d830fd55585abf22/src/System.Runtime.Extensions/src/System/BitConverter.cs#L76-L85) As far as I know the allocator is only guaranteed to return an address aligned on a 32 bit boundary, what if the allocated memory is just 32 bit aligned but not 64 bit aligned? Then there would be a 64 bit write on an unaligned boundary of 32 bit. I am unable to test this because I do not have access to an ARM machine. Does someone know whether this can cause issues? +17402 area-System.Data Localdb in managed sni "The pull request has changes which do the following: 1. Detect if the DataSource connects to LocalDB 2. Load the path to LocalDB sqlUserInstance.dll from the registry and invokes the appropriate APIs to start LocalDB instance. 3. Connects to LocalDB based on the DataSource provided by the instance start. 4. Changes Named pipes behavior where the host provided in the Named Pipe is propagated as-is to NamedPipeClientStream instead of modifying it for localhost. That's the expected behavior for Named Pipes. Connecting to a localDb instance started on ""\\.\pipe\"" is not the same as \\HOSTNAME\pipe\ and there are authorization issues. Confirmed this behavior with Native SNI. I will be adding tests for LocalDB in another PR. " +17403 area-System.Collections Graphs logic Do you have any plans to add logic for manipulating generic graph structures? E.g. adding nodes, vertices, depth/breadth-first searches, traversal algorithms, cycle detection, etc. Thank you. +17405 area-System.Data System.Data.Odbc future improvements Now that #15646 is (about to be) merged, let's track future work here: 1. Enable tests: please see #15776 for info on the missing dependencies 1. Possible C types mismatch: * Per http://www.unixodbc.org/doc/ProgrammerManual/Tutorial/gloss.html the native types are not fixed-width * Currently everything works fine in our supported platforms, but we might end up needing a shim such as here https://github.com/dotnet/corefx/tree/master/src/Native/Unix/System.Native 1. Publish as a Nuget package in the nightly feed 1. Document steps to install native dependencies +17407 area-System.Memory Removing extension method Slice on string and adding AsSpan extension methods Moving to Buffers.Experimental: https://github.com/dotnet/corefxlab/pull/1358 +17408 area-Infrastructure Add CI leg / Helix run to test net45-net463 packages on Desktop We have quite a few packages (35) that ship assets on Desktop. We do not have any test coverage today: ``` 135 packages support some version of desktop 98 of those include an out of band dll 35 of those contain more than just type-forwards Breakdown by version : (numSupported) / (numSupportedOOB) / (numNotFacades) 4.5.0.0 : 70 / 20 / 1 4.5.1.0 : 73 / 22 / 1 4.6.0.0 : 133 / 86 / 28 4.6.1.0 : 134 / 88 / 29 4.6.2.0 : 134 / 94 / 33 4.6.3.0 : 135 / 98 / 35 ``` See details in https://github.com/dotnet/corefx/pull/17262#issuecomment-288531194 +17409 area-System.Memory Removing Span NonPortableCast API Part of https://github.com/dotnet/corefxlab/issues/1314 / https://github.com/dotnet/corefxlab/issues/1292 +17410 area-System.Security Request: Support for System.Security.Cryptography.RSACryptoServiceProvider or similar @PaulHigin commented on [Wed Mar 22 2017](https://github.com/dotnet/standard/issues/256) Just want to make a formal request for this crypto provider or similar. We (PowerShell) need it over multiple platforms for secure credential passing. We also need ephemeral keys (no UI interaction), CRYPT_VERIFYCONTEXT, that is supported in native Windows API but apparently not in the .Net implementation. --- @weshaggard commented on [Wed Mar 22 2017](https://github.com/dotnet/standard/issues/256#issuecomment-288577138) I think this request is better served in the dotnet/corefx repo so moving it there. +17411 area-Microsoft.CSharp Clean-up and optimise constant-handling in Microsoft.CSharp Remove `CONSTVAL.SpecialBox` — Adds nothing over just assigning to `object` type. Make `CONSTVAL` immutable. — Setters are only called as part of construction. Use ctor with value consistently, and remove all setters. Convert `IsNullRef()` method to `IsNullRef` property. Remove `ConstValFactory.Copy` — Since `CONSTVAL` is immutable, aliasing instead of copying is safe. Make `ConstValFactory` completely static — Factory is not influenced by any state, overridden (or overridable) and has no scope for injection of a different factory service. Make it completely static and remove all factory allocations. Move `CONSTVAL` creation into `CONSTVAL` itself. — Allows it to have private constructors, ensuring they are not called directly (as comment on factory had suggested, but which was not enforced). Make `objectVal` an auto-property Rename `CONSTVAL` and its members. Rename to `ConstVal`, for more conventional .NET style. Rename `XXXVal` properties (e.g. `strVal`) to mirror .NET type names (e.g. `StringVal`). Use singletons for `true`, `false` and 0 (`int`) `ConstVals` — Reduce allocations for common and quick to identify cases. Merge `EXPRCONSTANT`'s `Val`, `_val`, `getVal()` & `setVal()` int single auto-property. Merge `EXPRCONSTANT`'s `IsZero` and `isZero()` into single property. Merge `getI64Value()` and `I64Value` renaming to `Int64Value` Replace `getU64Value()` with `UInt64Value` property. Rename `EXPRCONSTANT` to `ExprConstant` Contributes to #16664 +17412 area-System.Diagnostics Request: System.Diagnostics.Process support for CREATE_NEW_PROCESS_GROUP creation flag "API Proposal: ```c# namespace System.Diagnostics { public sealed class ProcessStartInfo { public bool CreateNewProcessGroup { get; set; } } } ``` Usage: ```c# var p = new System.Diagnostics.Process(); p.StartInfo.FileName = @""cmd""; p.StartInfo.CreateNewProcessGroup = true; p.Start(); ``` @PaulHigin commented on [Wed Mar 22 2017](https://github.com/dotnet/standard/issues/255) The Process class currently supports StartInfo class information but no process creation flags. We (PowerShell) need support for cross platform CREATE_NEW_PROCESS_GROUP creation flag to create processes outside the parent process group. This is supported in Windows and also Linux (via setpgid()) but needs to be done during process creation. --- @weshaggard commented on [Wed Mar 22 2017](https://github.com/dotnet/standard/issues/255#issuecomment-288577205) This request is better served in the dotnet/corefx repo so moving there. " +17414 area-System.Memory Proposal: API changes to Span as part of shipping story "As part of productizing `Span` for pre-release - https://github.com/dotnet/corefxlab/issues/1314 / https://github.com/dotnet/corefxlab/issues/1292 - here are the proposed changes that became visible from the use of `Span` in [Kestrel](https://github.com/aspnet/KestrelHttpServer) and from design discussions of what APIs are useful versus what aren't ready to be shipped or not useful. ## Proposed API Additions ```C# public static class SpanExtensions { public static bool StartsWith(this Span span, ReadOnlySpan value) where T : struct, IEquatable public static bool StartsWith(this Span span, ReadOnlySpan value); public static bool StartsWith(this ReadOnlySpan span, ReadOnlySpan value) where T : struct, IEquatable public static bool StartsWith(this ReadOnlySpan span, ReadOnlySpan value); public static void CopyTo(this T[] array, Span span); public static ReadOnlySpan AsSpan(this string text); public static Span AsSpan(this T[] array); public static Span AsSpan(this ArraySegment segment); public static Span AsBytes(this Span source) where T : struct public static ReadOnlySpan AsBytes(this ReadOnlySpan source) where T : struct public static int IndexOfAny(this Span span, byte value0, byte value1); public static int IndexOfAny(this Span span, byte value0, byte value1, byte value2); public static int IndexOfAny(this Span span, ReadOnlySpan values); public static int IndexOfAny(this ReadOnlySpan span, byte value0, byte value1); public static int IndexOfAny(this ReadOnlySpan span, byte value0, byte value1, byte value2); public static int IndexOfAny(this ReadOnlySpan span, ReadOnlySpan values); } ``` ## Proposed API Removals ```C# public static class Span { public static Span AsBytes(this Span source) where T : struct public static ReadOnlySpan AsBytes(this ReadOnlySpan source) where T : struct public static Span NonPortableCast(this System.Span source) where TFrom : struct where TTo : struct public static ReadOnlySpan NonPortableCast(this System.ReadOnlySpan source) where TFrom : struct where TTo : struct public static ReadOnlySpan Slice(this string text); public static ReadOnlySpan Slice(this string text, int start); public static ReadOnlySpan Slice(this string text, int start, int length); } ``` ## Sample Usage and Rationale **Adding AsSpan and removing Slice:** There is not enough consensus whether a method named Slice should return a Span and not the same type that it extends. Furthermore, we want to be able to wrap an ArraySegment into a Span but having a Slice extension method on ArraySegment that returns Span could conflict with a Slice method that returns an ArraySegment. AsSpan more clearly identifies the usage and does not block the use of Slice as a method name. ```C# string s = ""Hello""; ReadOnlySpan span = s.AsSpan().Slice(1, 3); // Instead of: string s = ""Hello""; ReadOnlySpan span = s.Slice(1, 3); int[] a = { 91, 92, -93, 94 }; Span span = a.AsSpan(); // Enables a builder pattern approach, rather than having to do: int[] a = { 91, 92, -93, 94 }; Span span = new Span(a); // Similarly for ArraySegment ArraySegment segment = new ArraySegment(a, 1, 2); Span span = segment.AsSpan(); ``` **Removing NonPortableCast:** Are these APIs useful and do we want to ship them? We can add them if they are necessary. Currently, they are only used in Parsing and Encoding for casting from byte to char, exclusively. Example: https://github.com/dotnet/corefxlab/blob/c9423549a3e37a2b0de953dd20cf30558ebfca13/src/System.Text.Primitives/System/Text/Encoding/Utf16/Utf16TextEncoderLE.cs#L54 **Adding StartsWith:** It enables more readable, cleaner code. The user also does not need to do length checks. ```C# Span firstSpan = new Span(first); ReadOnlySpan secondSpan = new ReadOnlySpan(second); // You can write: bool b = firstSpan.StartsWith(secondSpan); // Instead of: bool b = firstSpan.Slice(0, secondSpan.Length).SequenceEqual(secondSpan); // You also have to do additional length checks first, i.e.: bool b = firstSpan.Length >= secondSpan.Length && firstSpan.Slice(0, secondSpan.Length).SequenceEqual(secondSpan); ``` **Adding IndexOfAny:** Used by Kestrel - System.IO.Pipelines. https://github.com/dotnet/corefxlab/blob/66f021b94e93fe36bc0446d9f23d5a3820dc36df/src/System.IO.Pipelines/ReadCursorOperations.cs#L41 https://github.com/dotnet/corefxlab/blob/66f021b94e93fe36bc0446d9f23d5a3820dc36df/src/System.IO.Pipelines/ReadCursorOperations.cs#L63 ```C# // We have: int index = span.IndexOfAny(byte0, byte1, byte2); if (index != -1) { result = new ReadCursor(segment, segmentPart.Start + index); return span[index]; } // If we don't have this, the alternative would be, something like: int index = span.IndexOf(byte0); index = index == -1 ? span.IndexOf(byte1) : Math.Min(index, span.IndexOf(byte1)); index = index == -1 ? span.IndexOf(byte2) : Math.Min(index, span.IndexOf(byte2)); if (index != -1) { result = new ReadCursor(segment, segmentPart.Start + index); return span[index]; } ``` **Adding Copyto:** This is a convenience extension method on array to avoid having to write a Span wrapper around the source array. ```C# var destination = new Span(new byte[100]); var source = new byte[] { 1, 2, 3 }; // You can write: source.CopyTo(destination); // Instead of: var sourceSpan = new Span(source); sourceSpan.CopyTo(destination); ``` Another related API proposal: https://github.com/dotnet/corefx/issues/16888 **Update:** ~- Changed AsSpan to SliceAsSpan and added overloads that take index and length.~" +17415 area-System.Net Rewrite Socket.AcceptAsync Task-based method on SocketAsyncEventArgs It's currently implemented on top of the APM implementation; this changes it to be implemented on top of the SocketAsyncEventArgs implementation. Doing so saves ~400 bytes and ~6 allocations per accept, so it almost breaks even on first accept, and after that it's a win. Also provides a small throughput improvement. cc: @geoffkizer, @davidsh, @cipop +17416 area-System.Diagnostics Remove Assert.True(weakSwitch.IsAlive); from PruneTest() in SwitchClassTests.cs under System.Diagnostics.TraceSourceTests Remove Assert.True(weakSwitch.IsAlive); from PruneTest() in SwitchClassTests.cs under System.Diagnostics.TraceSourceTests File: src\System.Diagnostics.TraceSource\tests\SwitchClassTests.cs Method: PruneTest() +17418 area-Serialization Create netcoreapp specific files for System.Runtime.Serialization.Xml.Tests This tests use `ISerializationSurrogateProvider` which is not available in netfx but it is part of netstandard so it was not having build failures, but when trying to run them in netfx they would cause a `TypeLoadException` and the test would not run. cc: @weshaggard @tarekgh @danmosemsft +17420 area-Infrastructure Tests required elevated privileges are run in non-sudo environments. Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessTests/TestBasePriorityOnUnix` has failed. System.ComponentModel.Win32Exception : Permission denied Stack Trace: at System.Diagnostics.Process.set_PriorityClassCore(ProcessPriorityClass value) in /root/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs:line 192 at System.Diagnostics.Process.set_PriorityClass(ProcessPriorityClass value) in /root/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs:line 486 at System.Diagnostics.Tests.ProcessTests.SetAndCheckBasePriority(ProcessPriorityClass exPriorityClass, Int32 priority) in /root/corefx/src/System.Diagnostics.Process/tests/ProcessTests.cs:line 41 at System.Diagnostics.Tests.ProcessTests.TestBasePriorityOnUnix() in /root/corefx/src/System.Diagnostics.Process/tests/ProcessTests.cs:line 94 Build : Master - 20170322.02 (Core Tests) Failing configurations: - Redhat.72.Amd64 - x64-Release - x64-Release - x64-Debug - x64-Debug - Ubuntu.1404.Amd64 - x64-Debug - x64-Release - Ubuntu.1604.Amd64 - x64-Debug - x64-Release - Ubuntu.1610.Amd64 - x64-Release - x64-Debug - suse.421.amd64 - x64-Debug - x64-Release - OSX.1012.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170322.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FTestBasePriorityOnUnix +17421 area-System.Net Test failure: System.Net.Sockets.Tests.UdpClientTest/Ctor_IPEndPoint_CanSend Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.UdpClientTest/Ctor_IPEndPoint_CanSend` has failed. System.Net.Sockets.SocketException : Permission denied Stack Trace: at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5279 at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 758 at System.Net.Sockets.Socket.Bind(EndPoint localEP) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 702 at System.Net.Sockets.Tests.UdpClientTest.Ctor_IPEndPoint_CanSend() in /root/corefx/src/System.Net.Sockets/tests/FunctionalTests/UdpClientTest.cs:line 105 Build : Master - 20170322.02 (Core Tests) Failing configurations: - Redhat.72.Amd64 - x64-Release - x64-Release - x64-Debug - x64-Debug - Ubuntu.1404.Amd64 - x64-Debug - x64-Release - Ubuntu.1604.Amd64 - x64-Debug - x64-Release - Ubuntu.1610.Amd64 - x64-Release - x64-Debug - suse.421.amd64 - x64-Debug - x64-Release - OSX.1012.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170322.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.UdpClientTest~2FCtor_IPEndPoint_CanSend +17422 area-System.Security Test failure: System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX/AddPrivateAfterPublic Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX/AddPrivateAfterPublic` has failed. Interop+AppleCrypto+AppleCommonCryptoCryptographicException : write permissions error Stack Trace: at Interop.AppleCrypto.X509StoreAddCertificate(SafeKeychainItemHandle certOrIdentity, SafeKeychainHandle keychain) in /Users/buildagent/agent/_work/2/s/corefx/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.X509Store.cs:line 38 at Internal.Cryptography.Pal.StorePal.AppleKeychainStore.Add(ICertificatePal cert) in /Users/buildagent/agent/_work/2/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/StorePal.AppleKeychainStore.cs:line 66 at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) in /Users/buildagent/agent/_work/2/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 135 at System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX.AddPrivateAfterPublic() in /Users/buildagent/agent/_work/2/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/X509StoreMutableTests.OSX.cs:line 118 Build : Master - 20170322.02 (Core Tests) Failing configurations: - OSX.1012.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170322.02/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX~2FAddPrivateAfterPublic +17424 area-System.Diagnostics Remove Assert.True(weakSwitch.IsAlive); from PruneTest() in SwitchClassTests.cs under System.Diagnostics.TraceSourceTests Remove Assert.True(weakSwitch.IsAlive); from PruneTest() in SwitchClassTests.cs under System.Diagnostics.TraceSourceTests File: src\System.Diagnostics.TraceSource\tests\SwitchClassTests.cs Method: PruneTest() Fix #17300 +17426 area-System.Diagnostics tests in corefx that party on corelib internals using reflection that have changed will need to be updated "As @jkotas pointed out https://github.com/dotnet/corefx/issues/17413#issuecomment-288612891, tests which are using reflection to access resource strings need to be updated. Depends on this coreclr PR: https://github.com/dotnet/coreclr/pull/10372 Example (https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestsManifestNegative.cs#L36): ``` private static string GetResourceStringFromReflection(string key) { BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; MethodInfo getResource = typeof(Environment).GetMethods(flags).Where(x => x.Name == ""GetResourceString"" && x.GetParameters().Count() == 1).FirstOrDefault() ?? typeof(object).GetTypeInfo().Assembly.GetType(""System.Environment"").GetMethods(flags).Where(x => x.Name == ""GetResourceString"" && x.GetParameters().Count() == 1).First(); object resource = getResource.Invoke(null, new object[] { key }); return (string)resource; } ``` " +17427 area-System.Net SslStream AuthenticateAsClient method is not sending SNI information to the server on OS X When using AuthenticateAsClient to connect to a server, SslStream does not appear to be sending the SNI information to the server. We have observed this issue on OS X. When running on Windows the SNI information *does* appear to be sent. It is unknown to us whether the SNI information is sent when running on Linux. +17430 area-Infrastructure alpine RID falls back to linux RID "In our RID fallback graph: https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json#L571-L576 We list: ``` ""alpine"": { ""#import"": [ ""linux"" ] }, ""alpine-x64"": { ""#import"": [ ""alpine"", ""linux-x64"" ] }, ``` However, from what I understand, `alpine-x64` isn't compatible with our portable `linux-x64` runtime. Thus it seems like it shouldn't be listed as a fallback option, because that will cause problems when selecting runtime assets. If there isn't an asset available for alpine, and an asset that uses a `glibc` is put as a `linux-x64` folder, it will get selected but won't work. @gkhanna79 @ericstj @janvorli @weshaggard " +17433 area-System.Globalization System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Invalid failing on different environment "In my environment (European timezone, VS17, RS2 build 15063) the following test is failing (tested 2x times also with different clr packages): ``` ``` It seems they are not failing for @stephentoub. Therefore it might be connected to a different environment." +17434 area-System.Net System.Net.Internals.SocketExceptionFactory+ExtendedSocketException on ubuntu 16.4 I am getting the System.Net.Internals.SocketExceptionFactory exception while using a console app with **AMQP.Net Lite**. It can send houndreds or sometimes thousands of messages to **Azure Servicebus** instance. But it allways fails after a while with this exception: ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: Unknown error -1 at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult) at System.Net.Dns.<>c.b__14_1(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amqp.TcpTransport.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amqp.TcpTransport.Connect(Connection connection, Address address, Boolean noVerification) at Amqp.Connection.Connect(SaslProfile saslProfile, Open open) at Amqp.Connection..ctor(Address address, SaslProfile saslProfile, Open open, OnOpened onOpened) at TheMOON.Extensions.ServiceBus.ServiceBusMessageSenderClient.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at TheMOON.Extensions.ServiceBus.ServiceBusMessageSenderClient.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at TheMoon.EcomDbSyncer.Services.Handlers.ChangeHandlerCommons.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at TheMoon.EcomDbSyncer.Services.Handlers.ProductChangeHandler.d__7.MoveNext() ``` The system is a **Ubuntu 16.4** instance running in **Azure**. ``` Microsoft .NET Core Shared Framework Host Version : 1.1.0 Build : 928f77c4bc3f49d892459992fb6e1d5542cb5e86 ``` I have not yet tried to feed the queueclient with the IP instead of the servicebus instance DNS name. Disregarding the certificate trouble this will induce, i am assuming this would be a workaround. +17435 area-Infrastructure Add daily test run for netfx This will add a daily run for netfx tests (innerloop and outerloop) and also this will allow us to run it on a specific PR by commenting test outerloop netfx Configuration (Release or Debug). cc: @danmosemsft @joperezr @mmitche @weshaggard +17437 area-Serialization To add netfx coverage for the IDataContractSurrogate To add netfx coverage for the IDataContractSurrogate so that we are confident that folks can write similar code when targeting desktop. +17438 area-System.IO FileSystemWatcher degenerate file rename events (In reference source) It appears that in a rare case where a large volume of file changes and file renames are occurring, The processing loop for an IO Completion callback to consume the directory change events can have the first part of a rename event pair at the *very end* of the buffer and then the next completion event containing the second part at the *very beginning* of the following buffer. This results in a degenerate pair of rename events where the first event has an old name and empty new name followed by a second event that has a new name and empty old name. +17439 area-System.Net System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.BasicTest_AccessInstanceProperties_NoExceptions failing on different environment "In my environment (European timezone, VS17, RS2 build 15063) the following test is failing (tested 2x times also with different clr packages): ``` ``` It seems they are not failing for @stephentoub. Therefore it might be connected to a different environment." +17441 area-System.Memory Re-enable tests to validate current state +17442 area-System.Memory Compiling SpanHelpers.Clear and others only when necessary (slow span) Addresses #17078 +17443 area-System.Threading System.Threading.Tests outerloop test hangs The Outerloop `ReleaseReadersWhenWaitingWriterTimesOut` when running in Desktop it hangs. I left it running for more than 2 hours and attached the debugger and it never moved out from this line: https://github.com/dotnet/corefx/blob/master/src/System.Threading/tests/ReaderWriterLockSlimTests.cs#L443 I tried to run them in netcoreapp and it takes like 20-30 seconds total. cc: @stephentoub @alexperovich +17444 area-System.Net Change the behavior of ReceiveAsync cancellation to throw OperationCanceledException Change the ClientWebSocket's behavior to throw OperationCanceledException, when cancellation happens during the execution of ReceiveAsync(new ArraySegment(Buffer), Ct). Fix #5200 +17445 area-System.Threading Disable System.Thread outerloop test in desktop This test hangs in desktop when running Outerloop. See: #17443 cc: @tarekgh @alexperovich @danmosemsft +17446 area-Infrastructure Fix System.Runtime.Tests so that they can run in UapAot cc: @weshaggard @danmosemsft These changes will fix the issues causing ilc to fail at compile time and will also disable a couple of tests that were causing the actual execution to crash when sending two Asserts. I will log issues for the things that will need to be fixed in order to re-add those tests back. +17447 area-Serialization TypeScope.GetEnumeratorElementType Fails on Uapaot "[`System.Xml.Serialization.TypeScope.GetEnumeratorElementType`](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/Types.cs#L1292) is failing on uapaot as it does reflection on IEnumerable types but the metadata info for IEnumerable was reduced by UWP toolchain. 5 XmlSerializer tests failed on uapaot due to the issue. Here's the output of one of the failed tests, ``` (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 3097 at XmlSerializerTests.Xml_SimpleCollectionDataContract() in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 992 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +17448 area-Serialization Fix TypeScope.GetEnumeratorElementType. [`System.Xml.Serialization.TypeScope.GetEnumeratorElementType`](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/Types.cs#L1292) is failing on uapaot as it does reflection on IEnumerable types but the metadata info for IEnumerable was reduced by UWP toolchain. 5 XmlSerializer tests failed on uapaot due to the issue. The fix is to modify System.Private.Xml's embedded rd.xml to keep the required metadata. Fixed #17447 +17450 area-System.Runtime System.Runtime PointerFieldGetValue test is failfasting in Assert.IsType tests [Sort_Array_Array_NonGeneric](https://github.com/dotnet/corefx/blob/15b4f51c2f3cb924840e5407bb8d5fe03bb282ea/src/System.Runtime/tests/System/ArrayTests.cs#L2909) and [PointerFieldGetValue](https://github.com/dotnet/corefx/blob/7f6ac8bf97a84666ed3e7ef6b77c1a9470ae78c8/src/System.Runtime/tests/System/Reflection/PointerTests.cs#L118) are crashing the uapaot test execution when throwing a Debug.Assert. To get a repro locally, do the following: - Remove the `SkipOnTargetFramework` attribute on the tests - call `build.cmd -framework:uapaot` - `msbuild src\System.Runtime\tests\System.Runtime.Tests.csproj /p:TargetGroup=uapaot /t:rebuildAndTest /p:TestILCFolder=` +17452 area-System.Runtime API for performing framework checks at runtime "Provide an API that allows developers to check whether their code runs on a given .NET platform. ```C# // Assembly: System.Runtime.InteropServices.RuntimeInformation namespace System.Runtime.InteropServices { public partial class RuntimeInformation { public static bool FrameworkIsAtLeast(string targetFramework); } } ``` ### Usage ```C# if (RuntimeInformation.FrameworkIsAtLeast(""netcoreapp10"")) { DoStuffThatOnlyWorksInNetCore(); } else if (RuntimeInformation.FrameworkIsAtLeast(""net462"")) { DoStuffThatOnlyWorksInNetFramework(); } else { throw new PlatformNotSupportedException(); } ``` ### Requirements 1. Provide a robust API that allows developers to perform framework checks - In other words must not require parsing or comparisons by the developer. 2. Use terms the developer already uses when they do compile-time specialization using cross-targeting (""bait & switch"") - The strings passed to the API should be identical to the string used in project files and NuGet packages - In other words, we will not use the canonical TFM representation as it's wordy and generally not used by developers (e.g. `.NETFramework, Version=4.6.1`) 3. Design should allow for an API that we *can* put in-box - Our goal is to avoid having to ask library authors to depend on an extra NuGet package that they have to deploy just for light-up - Means we cannot have APIs that imply each time a new .NET platform (or version ships) all platforms have to update their implementation - In other words, an implementer should only have to correctly answer questions affecting itself, i.e. it shouldn't have to know how other platforms behave or what names they use. 4. API should work on .NET Framework 4.6.1 - That's the minimum platform we support with .NET Standard 2.0, so it will be a common target and hence needs to work 5. API should be addable to .NET Standard 2.0 - This makes (3) much nicer today - Effectively only means we cannot add members to a type that already exists in .NET Framework 6. The API must answer what the application *runs on* (as opposed to what the application is *built for*). - This is different from `AppContext.TargetFrameworkName` ### Decisions * Originally we considered having properties with well-known names (like `Net461`). Having those properties violates requirement (3). * We considered adding the API on a more-well-known type, such as `AppContext` or `Environment`. We believe this API to be quite specialized and should only be used as the last resort. As such, we don't want to overly emphasize its existence. Also, it would violate requirement (4) and (by extension) requirement (5). * We considered using `FrameworkName` instead of `string` but this would require `FrameworkName` to parse NuGet-style TFMs into their canonical representations, i.e. `FrameworkName.Parse(""net45)""` needs to be parsed into `FrameworkName { Identifier="".NETFramework"", Version=new Version(4, 5, 0, 0) }`. While that would be nice, it violates requirement (3). ### Context Today, we have the following APIs that return version numbers: ```C# namespace System { public static partial class AppContext { public static string TargetFrameworkName { get; } } public sealed partial class Environment { public static OperatingSystem OSVersion { get; } public static Version Version { get; } } } namespace System.Runtime.InteropServices { public static partial class RuntimeInformation { public static string FrameworkDescription { get; } public static Architecture OSArchitecture { get; } public static string OSDescription { get; } public static Architecture ProcessArchitecture { get; } public static bool IsOSPlatform(OSPlatform osPlatform); } } ``` Neither of them deal with concepts that the developer is familiar with when building the application, specifically the target framework names and version numbers (e.g. `net45` and `netcoreapp11`). Furthermore, their behavior is less than ideal. Here is the output from a .NET Core console app: ```C# Console.WriteLine(AppContext.TargetFrameworkName); // Console.WriteLine(RuntimeInformation.FrameworkDescription); // .NET Core 4.6.00001.0 ``` Our original design goal of `RuntimeInformation` was to provide developers with the diagnostic means to discover which .NET platform and operating system they are running on while not exposing version checking because it's a known area for creating fragile code. Unfortunately, the resulting API surface is now entirely insufficient for runtime light-up. For better or worse, we've have to accept that developers will have to write code that allows them to tweak the behavior at runtime. We need to expose APIs that make it easy for them to express framework checks." +17453 area-Microsoft.CSharp Teach the dynamic binder about tuple conversions "(Originally reported as part of https://github.com/dotnet/roslyn/issues/17851 and https://github.com/dotnet/roslyn/issues/12804) **Version Used**: Microsoft Visual Studio Community 2017 Version 15.0.26228.4 D15RTWSVC Microsoft .NET Framework Version 4.6.01586 **Steps to Reproduce**: Compile and run: ``` using System; class C { static void Foo((long, long) x, object y) => Console.WriteLine(x); static void Main() => Foo((0, 0), (dynamic) null); } ``` **Expected Behavior**: Program prints ""(0, 0)"". The target type (long, long) for the tuple literal (0, 0) is known at compile time, so the tuple literal should be converted to an instance of that type, rather than of (int, int), and dynamic invocation should succeed. It this kind of conversion is not feasible for some reason, then the compiler should issue a compile-time error, rather than allowing the program to fail at runtime. **Actual Behavior**: ``` Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded method match for 'C.Foo(System.ValueTuple, object)' has some invalid arguments at CallSite.Target(Closure , CallSite , Type , ValueTuple`2 , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2) at C.Main() ``` FYI @VSadov " +17454 area-System.Runtime Question: Calling Mac OS X Native APIs from .NET Core Hello, I'd like to call Mac OS X native APIs from .NET Core. More specifically, I'm interested in calling the [IOPowerSource()](https://developer.apple.com/reference/iokit/iopowersources.h) API to get the battery charging status on a MacBook Pro running Mac OS X Sierra. http://stackoverflow.com/questions/5751132/mac-get-battery-charging-status-plugged-in-or-not **Edit**: The question is: How do I actually do this? Cheers, Trevor Sullivan +17455 area-Infrastructure Enable PortableRID packaging Enable Portable RID package generation for Windows, OSX and Linux. +17456 area-System.IO Move SetCurrentDirectory test to RemoteInvoke. Tests that alter the current directory should all be done via remoteinvoke to not interfere with other tests that rely on the currentdirectory in some form or fashion. probably resolves #16316 @stephentoub +17457 area-System.Net Add Socket tests for concurrent accepts We don't concurrently have any coverage for multiple concurrent AcceptAsync calls. This adds some. cc: @geoffkizer, @davidsh, @cipop +17458 area-System.Data Modify TdsParserStateObject.Cancel() to not rely on Owner field CC @saurabh500 +17459 area-System.Data Add remaining SqlDataAdapter APIs to contract CC @saurabh500 +17461 area-Infrastructure Add uap build definition for testing I had to create a new Uap build definition because the UapToolsFolder is a secret and we don't have a good way to pass that value as a secret from Pipebuild to the existing DotNet-Windows-Trusted build definition. Once the UAP tools are consumed as a package, we should be able to get rid of that definition. /cc @AlexGhiondea @joperezr @weshaggard @MattGal +17462 area-System.Net UWP: System.Net.HttpListener Move UAP to use the 100% managed HttpListener implementation in corefx\src\System.Net.HttpListener\src\System\Net\Managed as Unix does rather than the Windows one. This should eliminate calls to the API's below and they can come out of the pinvoke baseline. ``` httpapi.dll!HttpAddUrlToUrlGroup httpapi.dll!HttpCancelHttpRequest httpapi.dll!HttpCloseRequestQueue httpapi.dll!HttpCloseServerSession httpapi.dll!HttpCloseUrlGroup httpapi.dll!HttpCreateRequestQueue httpapi.dll!HttpCreateServerSession httpapi.dll!HttpCreateUrlGroup httpapi.dll!HttpReceiveClientCertificate httpapi.dll!HttpReceiveHttpRequest httpapi.dll!HttpReceiveRequestEntityBody httpapi.dll!HttpRemoveUrlFromUrlGroup httpapi.dll!HttpSendHttpResponse httpapi.dll!HttpSendResponseEntityBody httpapi.dll!HttpSetUrlGroupProperty httpapi.dll!HttpWaitForDisconnect ``` @Priya91 correct me if this is not the plan. +17463 area-System.Security Move Cryptography netcoreapp specific tests to netcoreapp files There are some tests that use types like `ECCurve` which is available until .NET 4.7 and it was causing a runtime exception when trying to run them on Desktop. I moved those tests to be only included when running in netcoreapp. cc: @bartonjs @danmosemsft @weshaggard @tarekgh +17464 area-Meta Some exceptions thrown with unlocalized strings "Almost all our resource strings are for exceptions and it looks like >99% of our exceptions are indeed thrown with localized strings. About 68 aren't: examples ```c# throw new InvalidOperationException(""Attempted to pend a read when _failAsyncPends test hook was enabled""); ``` ```c# throw new InvalidOperationException(""Trying to start an Activity that was already started""); ``` (hits in the CoreFX product sources for `throw new .*Exception\(""[^ ""]+ .*""`) " +17465 area-Microsoft.CSharp Microsoft.CSharp.RuntimeBinder.RuntimeBinder Refactoring Primarily moving common features into an internal interface to avoid repeated type-test-and-cast if-else ladders, an avoiding unnecessary casts of array to `IEnumerable`: Add `ICSharpBinder` covering commonality of CSharp `DynamicMetaObjectBinder` implementations. — Allow to retrieve arguments without if-else ladder on type. Make `GetArgumentType` member instead of delegate. — Delegate is always the same, so that gives no benefit. Add method `ArgumentInfo` array copy on `CSharpInvokeMemberBinder` — More efficient copy, and removes last use of `ArgumentInfo` property, allowing its removal. Move `CallingContext` and `IsChecked` into `ICSharpBinder` — Removes need for test-and-cast ladder. Move `IsBinderThatCanHaveRefReceiver` to `ICSharpBinder` — Resolve through simple interface call instead of call that then does type check. Move `PopulateSymbolTableWithName` into `ICSharpBinder` Move `DispatchPayload` into `ICSharpBinder` Move `BindingFlags` into `ICSharpBinder` Move `GetName` into `ICSharpBinder` as property. — Removes need for test-and-cast ladder. Remove some unused assignments and change is…as for as…!=null More strongly type parameters parameter to `Bind` It's `IEnumerable` but always called with `Expression[]` so type it as such, passing that change in type down to called methods. When a `foreach` also had its index tracked, use it as the index for a `for` loop instead. Replace `Dictionary` with `LocalVariableSymbol[]` — Always filled incrementally from 0 to a pre-computable length, so an array serves better as well as being lighter. Cleanup of binder classes. — Remove unused usings, add missing XML comment parameters, use auto-properties when applicable, use expression-bodied properties when applicable. +17468 area-System.Security Test failure: System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests/TestExplicitCurves(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivat... Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests/TestExplicitCurves(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivat...` has failed. Interop+Crypto+OpenSslCryptographicException : error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large Stack Trace: at System.Security.Cryptography.ECDsaImplementation.ECDsaOpenSsl.ImportParameters(ECParameters parameters) in /root/corefx/src/Common/src/System/Security/Cryptography/ECDsaOpenSsl.ImportExport.cs:line 58 at System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests.TestExplicitCurves(CurveDef curveDef) in /root/corefx/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaImportExport.cs:line 49 Build : Master - 20170324.01 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170324.01/workItem/System.Security.Cryptography.Algorithms.Tests/analysis/xunit/System.Security.Cryptography.EcDsa.Tests.ECDsaImportExportTests~2FTestExplicitCurves(curveDef:%20CurveDef%20%7B%20Curve%20=%20System.Security.Cryptography.ECCurve,%20CurveType%20=%20Characteristic2,%20IncludePrivat... +17469 area-System.ComponentModel Fix a CompareAttribute.Validate problem Fixes #11025 +17470 area-System.IO Minimize WinRT specific IO codepaths Tracking work to remove all unnecessary WinRT specific codepaths, so as far as possible we share code with the non-UWP Windows implementations. +17471 area-Meta Some PNSE messages A start on changing all our parameterless `throw new PlatformNotSupportedException()` to have messages. Mainly to make certain they're all thought through (or else have an issue open) and future ones stand out, but it is nicer for the caller to explain what feature is not supported. For some of the UAP cases it was easier to just delete the UAP implementation in favor of the Win32 one on the assumption that the API will get allowlisted. Remains about ~279 of `new +PlatformNotSupportedException\(\)` in product. @JeremyKuhne +17472 area-System.Memory Adding span tests to improve coverage Fixes #17078 Adding tests for: - Implicit operators - Obsolete methods - Clear EnumType and Clear ValueType Without References Pointer Size - Copy empty source - Fill native memory - Fill ValueType Without References for larger arrays - Test IndexOf for larger arrays Gets us much closer to 100% test coverage (for slow span at least), esp if you include outer-loop and 32-bit tests. +17476 area-System.Diagnostics Performance improvement for ProcessManager.Windows.IsProcessRunning Performance optimization for the local machine: First try to OpenProcess by id, if valid handle is returned, the process is definitely running. Otherwise enumerate all processes and compare ids (the logic we had before) Fix #17382 Benchmarks before: ``` Method | Mean | StdDev | -------------------- |---------- |---------- | GetProcessById | 3.5353 ms | 0.0693 ms | GetProcessesEqual | 3.1075 ms | 0.0720 ms | GetProcessesNotEqual | 3.1015 ms | 0.0416 ms | ``` After: ``` Method | Mean | StdDev | -------------------- |---------- |---------- | GetProcessById | 1.4213 ms | 0.0581 ms | GetProcessesEqual | 3.1123 ms | 0.0615 ms | GetProcessesNotEqual | 3.0089 ms | 0.0532 ms | ``` Test program: ```csharp using System.Diagnostics; using System.Linq; using System.Reflection; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; namespace GetProcessByIdBenchmark { public class Program { private static int CurrentProcessId = Process.GetCurrentProcess().Id; [Benchmark] public void GetProcessById() { Process.GetProcessById(CurrentProcessId); } [Benchmark] public void GetProcessesEqual() { Process.GetProcesses().FirstOrDefault(a => a.Id == CurrentProcessId); } [Benchmark] public void GetProcessesNotEqual() { Process.GetProcesses().FirstOrDefault(a => a.Id != CurrentProcessId); } static void Main(string[] args) { BenchmarkSwitcher.FromAssembly(typeof(Program).GetTypeInfo().Assembly).Run(args); } } } ``` +17477 area-System.Security Fix FIPS 186-3 DSACng signature with H < sizeof(Q) Add signing tests and stable verification tests for the scenario where a short hash is chosen; as well as a whole lot of justification commenting. Fixes #17305. +17478 area-Meta Code Guidelines for VB.net contributions. The current coding guidelines are C-centric, with no or very little guideline for VB.net contributions, for projects within the .NET Foundation that use the language within their project. Thus lack of clear guidelines has and will cause friction between different opinions on stylistic aspects of the code / contribution, rather that the functional / semantic behavior of the code. I'm working on implementing a VBnet Coding guideline. ([Here](https://github.com/AdamSpeight2008/Ideas/blob/master/VBCodingGuidelines.md)) +17479 area-Serialization Area-Serialization Sprint 116 The issue is for tracking issues to be done in sprint 116 (due by 4/14/2017). +17480 area-Infrastructure ILC fails when trying to compile an array of pointers PR #17446 added an ifdef that removes some tests in System.Runtime given that ILC would fail when trying to compile, by saying that Array of pointers type is not supported. This needs to be fixed externally. This issue is so that we track the remaining work on our side of uncommenting those tests for uapaot once ILC is fixed. cc: @jkotas @morganbr +17482 area-Serialization XmlSerializer to Support XmlMembersMapping via Reflection #10675 add a few basic tests for XmlSerializer supporting XmlMembersMapping via Reflection. The issue here is for tracking the complete support of this feature. +17483 area-Meta Xml Serialization code vs documentation Hello, I want to use xml serialization to share (load and save) structs between a .net Core and .net Framework application but the XmlSerializer is unavailable in .net Core. According to the .net core API reference the XmlSerializer is implemented, what I'm missing? Is the documentation out of date or what I've to do in .net Core to use the XmlSerializer? Version: .Net Core 1.1/.Net Standard 1.6 - VS 2017 Commuity API-Ref: https://docs.microsoft.com/de-de/dotnet/core/api/system.xml.serialization.xmlserializer +17486 area-System.Runtime System.TypeLoadException: 'Could not resolve type 'System.AppContext' I was trying to build serialization tests in CoreFx against uapaot. Sg.exe failed to resolve System.AppContext, which caused error when building the tests. Here's the error message, ``` System.TypeLoadException occurred HResult=0x80131522 Message=Could not resolve type 'System.AppContext' in assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Source=mscorlib StackTrace: at System.TypeNameParser.ResolveType(Assembly assembly, String[] names, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) in f:\dd\ndp\clr\src\BCL\system\typenameparser.cs:line 303 ``` Is `System.AppContext` not available on uapaot? +17487 area-Infrastructure macOS builds failing with non-null compiler error e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/557/ ``` /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_keychain.cpp:253:117: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull] SecKeychainItemCreateCopy(reinterpret_cast(privateKey), keychain, nullptr, &itemCopy); ~~~~~~~ ^ /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_keychain.cpp:272:116: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull] status = SecKeychainItemCreateCopy(reinterpret_cast(cert), keychain, nullptr, &itemCopy); ``` +17489 area-System.Numerics Adjusting naming and adding some explanatory comments to the System.Math and System.MathF tests. @mellinoe, this should address the feedback you gave here: https://github.com/dotnet/corefx/pull/17217 +17490 area-System.IO System.IO.Path.GetInvalidPathChars() returns different result than Desktop "When running the following test using SharpZipLib NuGet package, I realized `GetInvalidPathChars()` returns a smaller set of characters compared to Desktop. Was this change of behavior intentional? ```c# WindowsNameTransform wnt = new WindowsNameTransform(); wnt.TrimIncomingPaths = false; Assert.Equal(@""c\_"", wnt.TransformFile(""c\\/>"")); ``` `wnt.TransformFile(""c\\/>"")` returns `""c\>""` on .NET Core 2.0." +17491 area-System.Memory CoreFx #14486 Remove argument validation in DangerousCreate Fixes #14486 @ahsonkhan @karelz Kindly review. +17492 area-System.Diagnostics NullReferenceException from DiagnosticListener in HttpClient I get the following when I register an EventListener and use HttpClient: ``` System.NullReferenceException: Object reference not set to an instance of an object. at System.Diagnostics.DiagnosticListener.<>c__DisplayClass2_0.b__0(String name, Object arg1, Object arg2) in /home/stoub/source/corefx/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticListener.cs:line 60 at System.Diagnostics.DiagnosticListener.IsEnabled(String name, Object arg1, Object arg2) in /home/stoub/source/corefx/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticListener.cs:line 211 at System.Net.Http.DiagnosticsHandler.d__2.MoveNext() in /home/stoub/source/corefx/src/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs:line 45 ``` cc: @vancem, @lmolkova +17493 area-Infrastructure Enable sending uapaot test runs to Helix cc: @weshaggard @MattGal @AlexGhiondea @danmosemsft These are the changes that I've been using locally to send private uapaot ILC runs to Helix. By pushing this, I'll enable other devs to queue Helix ILC runs too, plus this is also required for setting up an official build that actually runs the ILC tests. +17494 area-Infrastructure Strong name signing not working for Open key projects Today if any project is rewritten, via GenFacades for example, we invalidate the fully signed binary that has the Open Key and thus it isn't correctly signed. Things like netstandard.dll shim has the same issue where we aren't fully signing it and our signing service doesn't currently support the open key. +17495 area-Infrastructure runtime.depproj should warn if CoreCLRFiles is empty https://github.com/dotnet/corefx/blob/master/external/runtime/runtime.depproj#L57 We should consider giving a warning if `$(CoreCLRFiles)` ends up being empty even if the user passed in `$(CoreCLROverridePath)`, or if the path provided doesn't exist. @ahsonkhan had a typo when he ran the build and didn't realize that nothing was being copied out, because the target just got skipped. +17496 area-System.Runtime "ASP.NET core AppContext.BaseDirectory is not the real ""base"" in development environment" I have a config file as sibling with web.config. When deployed, AppContext.BaseDirectory get me the right path to the file. When debugging it within Visual Studio, then it takes me to the bin\ folder . I am not able to debug it within VS if I use the API. +17497 area-System.IO Add TempFileCollection or something similar I always liked the idea behind the [TempFileCollection](https://msdn.microsoft.com/en-us/library/system.codedom.compiler.tempfilecollection(v=vs.110).aspx) class. It tackles some common problems, often faced when working with temporary files: - Simple management of multiple temporary files belonging together - Reliable creation of temporary files with specific extensions - Easy release (deletion) of all generated temporary files when no longer needed with the dispose pattern Therefore I propose to add a class with similar functionality to corefx. Such a class could reside in the _System.IO_ namespace even though I don't see it quite fitting as its use case is too specific to belong to such a widely used namespace. +17499 area-System.Numerics Helper type in BigInteger tests has shared public static state "Related to https://github.com/dotnet/corefx/issues/15395. https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/MyBigInt.cs#L12 Because of this shared state, it is not safe to run tests which access the field in parallel. To my knowledge, there are only two tests which do this: the [divrem tests](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/divrem.cs), and [""Driver""](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/Driver.cs#L180) tests. It is only used to store the remainder out parameter of `BigInteger.DivRem` calls. I am going to disable assembly-wide test parallelization to avoid this issue for now. This causes the tests to run a bit slower (40 seconds vs. 23 seconds on my machine), so we should fix this eventually." +17500 area-System.Memory Fixing Span IndexOf vectorization. cc @benaadams Please take a look. When trying to reason about different test scenarios with @shiftylogic, these changes make more sense. Let me know if you notice any performance pitfalls or correctness issues. Also cc @jkotas +17501 area-System.Numerics Disable assembly-level parallelization of the System.Runtime.Numerics tests Fixes https://github.com/dotnet/corefx/issues/15395. This will cause the tests to be slightly slower, so I'll look into fixing the public state as well. +17502 area-System.Diagnostics NPE in DiagnosticListener when subscriber provides null predicate See #17492 +17503 area-Infrastructure Give warnings if bad paths are given to CoreCLROverridePath Fixes #17495 . @ahsonkhan +17504 area-System.Data Getting instance name from pipe name was added This change contains: 1) Getting instance name from pipe name 2) Moving instance name look up (SSRP) moved to DataSource parsing process. +17505 area-System.Security Make X509StoreTests.Constructor_StoreHandle more reliable On systems which have multiple CU\My certificates on the first pass, assert that non-zero certificates are found on the second. Fixes #17235. +17506 area-System.Net Skip SendBufferSize=0 test on OSX. cc @stephentoub @geoffkizer UPDATE: contributes to #16716 +17507 area-System.Runtime Add more tests for Assembly.LoadFrom tests corresponding to https://github.com/dotnet/coreclr/pull/10446 +17509 area-System.IO Fix clrcompression binplacing for tests cc: @weshaggard @AlexGhiondea To be clear, I don't like at all the way we do this today but I don't know of a better way given that we use CMake as opposed to msbuild to build our native bits so we can't really use our binplacing logic as we do everywhere else. This changes will make it so that clrcompression gets binplaced to the right path for the testhost. +17512 area-System.Threading Expose Interlocked.MemoryBarrierProcessWide Fixes https://github.com/dotnet/corefx/issues/16799 +17514 area-System.Memory Adding more Span Tests for CopyTo and Clear Addresses #17078 Part of https://github.com/dotnet/corefxlab/issues/1314 cc @shiftylogic Improves test coverage for System.Private.Corelib (SpanHelper) +17515 area-System.IO CoreClr #7061 Remove private _Prop from StreamReader, StreamWriter @jamesqo @jkotas @karelz Kindly review. This PR is for changes for CoreRT, implemented in CoreFx, for the [dotnet/coreclr Issue 7061](https://github.com/dotnet/coreclr/issues/7061). +17516 area-System.Net NetworkInterface.Speed range tests adjusted for Wi-Fi Direct Virtual … fixes #17439 +17518 area-System.Numerics Two MathF Tan tests failing on some Unix distros Failing on at least Ubuntu 16.04, Ubuntu 16.10, Fedora 23, and Fedora 24. Passing on Ubuntu 14.04, CentOS 7.1, and some others. ``` System.Tests.MathFTests.Tan(value: 1.570796, expectedResult: -2.287733E+07, allowedVariance: 0) [FAIL] Assert.Equal() Failure Expected: -22877332 Actual: -22877334 Stack Trace: /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.10_debug/src/System.Runtime.Extensions/tests/System/MathF.netcoreapp.cs(123,0): at System.Tests.MathFTests.AssertEqual(Single expected, Single actual, Single variance) /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.10_debug/src/System.Runtime.Extensions/tests/System/MathF.netcoreapp.cs(1103,0): at System.Tests.MathFTests.Tan(Single value, Single expectedResult, Single allowedVariance) System.Tests.MathFTests.Tan(value: -1.570796, expectedResult: 2.287733E+07, allowedVariance: 0) [FAIL] Assert.Equal() Failure Expected: 22877332 Actual: 22877334 Stack Trace: /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.10_debug/src/System.Runtime.Extensions/tests/System/MathF.netcoreapp.cs(123,0): at System.Tests.MathFTests.AssertEqual(Single expected, Single actual, Single variance) /mnt/j/workspace/dotnet_corefx/master/outerloop_ubuntu16.10_debug/src/System.Runtime.Extensions/tests/System/MathF.netcoreapp.cs(1103,0): at System.Tests.MathFTests.Tan(Single value, Single expectedResult, Single allowedVariance) ``` cc: @tannergooding, @mellinoe +17520 area-System.Net Typo in NetworkInterface.Speed range tests adjusted for Wi-Fi Direct Virtual Adapters PR Just a typo :( https://github.com/dotnet/corefx/pull/17516 +17522 area-System.Net Broken System.Net.Http 4.1.1-4.3.0 post-mortem Issue #11100 caused a lot of problems for a long time. The overall road towards solution (fix in a new NuGet package [4.3.1](https://www.nuget.org/packages/System.Net.Http/4.3.1)) was less than ideal. Let's track the post-mortem here (as initiated in https://github.com/dotnet/corefx/issues/11100#issuecomment-281827797): High-level plan to cover: 1. How did the issue slip through into release? * How to prevent such situation in future? 2. Why did it take 6 months to fix? * Why wasn't it treated/communicated/recognized as high-impact issue earlier? * How to recognize and react to high-impact issues earlier in future? 3. Other concerns (e.g. overall communication) See the writeup in https://github.com/dotnet/corefx/issues/17522#issuecomment-338418610 +17523 area-System.Net Could not load file or assembly 'System.Net.Http in ASP NET CORE Hi @karelz , I've been researching and working two nights in a row so far but I'm not able to fix this. All my System.Net.Http packages have been updated to version 4.3.1 but still get the same error. My project is a NET Core project build using Visual Studio 2017 template Please help me, I don't know what else to try or where to go. Thanks! FileNotFoundException: Could not load file or assembly 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. ![image 1](https://cloud.githubusercontent.com/assets/8812746/24325625/9e4a8852-116a-11e7-837e-d1483a5bec1b.jpg) [IbmVcaCore.csproj.txt](https://github.com/dotnet/corefx/files/870320/IbmVcaCore.csproj.txt) +17524 area-System.IO Consider using an alternative implementation for the Stream.CopyToAsync in some scenarios I have created an alternative CopyToAsync implementation which behaves way better than the default one if source stream serves the data in small chunks and the destination stream write has non-zero latency. It **might** be useful in some scenarios, but I am not sure. Leaving it here - for details in the original context please see: aspnet/Proxy#57 +17525 area-System.Numerics Remove shared state from MyBigInt Having shared state is no good idea for running unit tests in parallel. Because of sporadic issues parallelization has been disabled. Without that state, we're able to run these tests in parallel again. Fixes #17499 +17526 area-System.Memory Issue #14486 Update API summary. @ahsonkhan Kindly review the updated API summary. Fixes #14486. +17528 area-Infrastructure System.Runtime.Serialization.Formatters for NETStandard.Library 1.6.0 Why is there no System.Runtime.Serialization.Formatters package that depends on the packages from NETStandard.Library.1.6.0? There is only a version that is 4.3.0 which means to include binary serialization I have had to target packages from 4.3.0 which then appears to copy them all into apps that are netcoreapp1.0. https://github.com/JamesNK/Newtonsoft.Json/issues/1252#issuecomment-289250145 +17533 area-Meta "Change ""up for grabs"" label to up-for-grabs" "The up-for-grabs label is ""more"" standard -- see e.g. http://up-for-grabs.net and we used to have it in CoreCLR repo, but changed it to CoreFX form in ~2016/10 * [x] Rename label on all repos * Update docs in repos: * [x] CoreFX: [""up for grabs""](https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=%22up+for+grabs%22&type=) and [""up%20for%20grabs""](https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=up%2520for%2520grabs&type=Code) - PR: #17544 and #17594 * [x] CoreCLR: [""up for grabs""](https://github.com/dotnet/coreclr/search?utf8=%E2%9C%93&q=%22up+for+grabs%22&type=) and [""up%20for%20grabs""](https://github.com/dotnet/coreclr/search?utf8=%E2%9C%93&q=%22up%2520for%2520grabs%22&type=) - PR: https://github.com/dotnet/coreclr/pull/10488 * [x] Roslyn: [""Up for Grabs""](https://github.com/dotnet/roslyn/search?utf8=%E2%9C%93&q=%22Up+for+Grabs%22&type=) and [""Up%20for%20Grabs""](https://github.com/dotnet/roslyn/search?utf8=%E2%9C%93&q=Up%2520for%2520Grabs&type=Code) - PR: https://github.com/dotnet/roslyn/pull/18197 * [x] wcf - PR: https://github.com/dotnet/wcf/pull/1827 and https://github.com/dotnet/wcf/commit/1f343b2d2b3d3f17221215d936eb86381482a9d8 * [x] CoreRT - PR: https://github.com/dotnet/corert/pull/3121 * [x] cli - ""help wanted"" renamed to up-for-gras, no doc changes needed * [x] sdk - no doc changes needed * [x] CoreFXLab - no doc changes needed * Update http://up-for-grabs queries for all repos: * [x] CoreFX, Roslyn, CoreFXLab - PR https://github.com/up-for-grabs/up-for-grabs.net/pull/577 and PR https://github.com/up-for-grabs/up-for-grabs.net/pull/579 * CoreCLR - already OK * wcf, corert, cli, sdk - not present on http://up-for-grabs.net * [x] Find out if we can have 'simple' query on the site as well - issue filed https://github.com/up-for-grabs/up-for-grabs.net/issues/578 See https://github.com/dotnet/coreclr/pull/10488#issuecomment-289290327 cc @jkotas" +17534 area-Meta Update docs to be new-contributor friendly Our repo docs are not super-friendly to new contributors. It would be nice to improve them. +17535 area-System.Linq Reduce IL of lifted S.L.Expression boolean And, Or, AndAlso, OrElse Produce smaller IL with fewer branches that doesn't call constructors, but returns either the left or right operand as appropriate. +17536 area-System.IO Test failure: System.IO.Tests.DirectoryInfo_Create/DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_Create/DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException` has failed. Assert.All() Failure: 1 out of 2 items in the collection did not pass.\r [0]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r Expected: typeof(System.IO.PathTooLongException)\r Actual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path 'C:\\Users\\helixbot\\AppData\\Local\\Temp\\DirectoryInfo_Create_oiubi2ms.opb\\DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException_247\\7725f39f-c9ed-4c7a-97ba-ce25ad170a76\\93a49321-8a9a-4918-a3b0-d4d7312e4d88\\1ba81e70-c761-4907-8630-f85599efc735\\85ff06f8-140b-47dd-9264-1e3d589e4d58\\e23fc886-be6d-4fbd-976f-c2269a417beb\\a4dcd2b0-6541-43c2-a33a-811ca3a312cb\\29e6e685-2809-4eb4-a45e-1504e436fc0a\\05d8f85d-d451-4b58-8625-b9fc71fd125e\\614f6632-91fd-4bb8-8f00-9a83908a3d99\\d8593a0f-fbee-4872-9a16-a3d393ed7214\\1cb9fbf5-7804-473c-bd37-fd12a4268766\\e06646ff-0d7b-4170-b851-c57f6705f893\\7acbc9c0-0121-483e-a5ca-a05dc808b454\\6e4fc915-14ce-4ed0-b65b-e0308d243193\\ba2687eb-08f3-4954-ac87-d8ee500926ae\\ced4971d-d1aa-44f4-9978-32be9c7974c8\\b32e7954-6830-495c-a31f-659bdd35ca63\\e99de026-8183-404e-b4ee-e1197c40b501\\e334a2d1-a44e-4a29-a281-d098a6bc6bc8\\2632486a-8822-4ff2-9224-bc519cd94818\\32ea3f9c-ad41-433f-a280-74def615e71f\\7c12ddfe-910e-47d4-ba2e-b517e75ce920\\6edc486a-dc25-4fe7-89ab-2443e6e9991a\\a9008904-dc6a-4ea4-ab60-f73c75226236\\fc528f2c-f757-4da0-85db-7d056ad3cf46\\8e347b2f-6a4b-4723-84e6-739bce9600dd\\f2d1f0fc-0260-4f90-9fec-56a96cf934f1\\7fa0f4e3-2dde-4a23-805d-add9823eaee2\\a4cfe699-d597-4828-8d27-b08e530e172f\\bfd0fee7-e217-45c9-a877-dbc2cb4d9262\\ba9ad99b-d908-483a-b9a4-0344a6f0f8fb\\751e5ab2-b825-4ec7-bfa0-aa4a6a39d1d2\\bf9f23d9-a78e-4ebd-bc97-76d0baaf9627\\feda1782-7bfb-46a2-8975-dbe5694c502d\\3b647690-84ff-4b7e-bc22-ecdeeb50eaac\\7cb91233-bf14-4bee-a244-b15665a9fbb0\\f725ffbe-9665-40e8-b3dc-259b60e9c30e\\29b77700-f69d-4839-85a7-f83a13f0f38d\\72445539-b76a-4fc2-bc99-526a4f42d3c8\\0cbc6253-1bf8-483c-91cf-e7d4e713094e\\fe524815-033e-4bf6-85af-90a83b2c5af3\\d4083ae2-9166-48cd-b38a-71380d24df54\\bb954caa-c834-449d-973c-aa94a11f5201\\07ffa3a2-c4e3-4ead-ad7c-a8ecd5b1e704\\ef4c12a8-619b-4128-9291-c3000820f4af\\5d58a29c-4787-4199-b4f9-62ec37de7cb7\\417c2c25-f080-47ca-9311-1a8a6f279558\\cd9864b7-c0a7-479b-8c0c-7e0d31422457\\aa4e3320-7570-47e9-9fcd-00fe4281ccf9\\a5ffc67d-02d2-4538-976f-821cf509f049\\11eeeec8-5f05-4186-a8a2-87b8fb7c8d44\\36e51cf7-6a78-4dbf-93f0-d14b030bd43a\\8f9faeb8-0575-4c8b-93b9-f1f4897ddefe\\43cb76ae-879a-47eb-b894-2c6ec6085a8a\\48fdd098-6419-4646-9c78-764a8fe050ec\\0c0ea20f-5626-4d15-99b8-488031f63069\\8b512e01-f8d4-4765-a27a-8fa06a189e78\\6e10a3ff-6c4c-4303-89c1-37e4d1a17413\\b5d06abd-7266-4b22-9428-787ce67a5372\\fc5a809e-d8e7-450a-b756-ceb08c0d28af\\accde79f-f866-41a3-b93c-f2f0d67ba1cf\\84579219-51d6-4023-b32e-610e949a5f7f\\b65bef5a-4517-4c24-8f95-381215e85db4\\9d8dde8b-d0d1-4ca7-8488-a79c36d67533\\efabc2d6-f279-4401-b0d3-43047d302922\\f2b58884-29b2-46be-ab66-9fc39f50be61\\b9e3534e-ccc2-4720-87c8-bec3b05a7778\\00864b30-e1d4-48cf-9633-f14cb7ad9ff6\\2ca87fa8-92ca-4357-beba-cd17025f082b\\60534d28-7e15-4216-ab34-88094850d3f0\\a0ecf716-9140-45a9-8750-62ae395a31c1\\5ce466a6-6dc0-41eb-8af5-c1efda1a245b\\2125cc2e-4f58-4e5f-80dc-553b7d5588f1\\d3b8bb98-35df-4f7e-a6c0-a21c3a7b5e23\\a4f1beca-17a9-43e4-aed3-ca9efe16019c\\202cb2ca-77c1-4cf9-8bd0-822464cdbc84\\055b197a-8e9b-412a-b4b0-bb8a96c99fab\\b3e494a9-f1b6-41d0-b91b-5e31456a1287\\718f3935-5d88-4e63-89e9-3cd919cd28c6\\053ee7fc-9e78-4c0d-b607-02bb7f906418\\6bd568e1-10e3-4f01-b024-72f5c07d0480\\2ebf7931-1c8a-4772-abe8-75aa46be5cca\\fecb34d5-4016-4e37-ae15-a2836b454207\\be6cf3ac-5b2e-4115-9d45-b3a24dd14585\\552d148a-3916-45be-ae27-2f7cb50a8c0d\\b6b6510c-4c42-4343-b496-c6ec9481af2e\\56a6a514-a570-4dc9-aefe-ba76544719dd\\57b0eafb-73f1-46b1-b360-b5955c0b38b1\\2e778314-af48-4e9e-9263-094c708fe188\\2a66a5b5-8fc4-4e64-8f92-899d04d1b853\\6c19c027-d05f-4217-9d30-7f9d43fcdfe6\\cb0c9e0b-125f-4987-b453-684335942fe2\\0ddfb0c1-f2bf-43bc-a510-1af6c70ec6d8\\14f9b8de-3edd-43f5-a19a-0521844bb48c\\e6a28997-0273-4ee9-8861-c855f0a53e17\\80f42118-d93b-4a97-8d2a-53dfbf748697\\82e9f176-1f6c-4be4-a689-af862cb64e85\\78d68b64-b94a-404e-bc56-74989f870b81\\d27a1892-23b9-43ce-95e0-22e53f5d2e9f\\0ffd1b99-e217-4a1a-807f-9173d15c745b\\fe819cb5-abd7-406e-bb23-2a7a38a11327\\503aa293-26a9-4214-bfe8-b9c2af98a191\\8ce95f34-35ad-45bf-9335-0eea013fe5f7\\c4fbff0e-df38-4449-8a26-8458d9039764\\9e01425d-6df3-49a2-b402-a5604772af92\\9345bab1-e9b4-4645-afa1-d0378ed1f137\\eedb95c7-2b3e-4674-a1c8-c7ea522bc483\\a33872bb-c063-42c4-b1eb-7ad591e4641a\\1910c12d-5089-457c-8ff0-6bd92cdfa6ae\\35200679-295c-48c8-a64f-a9d1f09da9bc\\6b1fc6f1-35ef-40e0-bd2d-9a5938b4f30a\\3f462630-db20-45b0-a7b1-a52cf08650d6\\714df3ee-0e66-41bc-acab-956c10c087b7\\ae410e3b-e0af-42db-9c64-d2281baddc84\\6edd90b5-5413-4b15-a0d1-7aa131d43267\\d371f649-bb0f-4007-a677-cede2244a852\\f6780321-1715-40ec-a03a-887878223354\\613c55f4-edb7-4a5e-8ee2-ca20d633b4d9\\a220c915-72e6-47a4-8ca1-9df55e59c215\\7ca734bb-c006-4920-90c9-fee612ddac7c\\db41a76e-cbce-41fb-823a-6cde539cbec9\\97ebc844-8320-49de-ac17-37075604a94a\\82749e00-815d-458f-b331-91756445b1a2\\7514e485-4631-4bd8-9f55-af72bbec15dd\\7272ae02-fa85-411e-9bff-6f9806d4e0d9\\c5825466-6d8e-4b63-8378-2917038c9ef1\\66941338-0994-48bd-8494-9a38e3b54a83\\1117b657-31ca-4a69-a6a3-a51823ba9869\\2c331018-7bd9-43e5-8eec-5f6505f72f07\\90d1095b-be21-4643-9898-663ab054cf8b\\027dadb0-c635-4101-9cc6-50ffbfcc5bea\\22d5225f-4fc7-46a6-ac51-aca8815139b1\\e10a5abc-37e8-4f61-a0f4-45004caca02f\\fcda8a8d-d16c-4191-928d-9a5a431f06b4\\99db6e91-e009-46e2-b868-ce4d3274ebe1\\14d9339b-6fa7-468e-8c19-f25a0b2235d1\\7da5a71c-a0f5-4082-a616-2be83f528f55\\39895a8b-6b16-4499-b1a9-01540acc1674\\5557db8a-9c6b-4bfd-aa9c-be4aedbc7114\\f7bb7f49-4135-4003-b8ee-81e1fa3d5da9\\2a68cdaa-b68a-4e48-9a28-ad7871de1c9a\\b8032881-e86c-45f3-8570-0b42d627b254\\65261bf3-4cdc-4136-8115-405ca3cbdc8a\\bc34e0e4-81a8-40e2-8241-d1a8dcbb216b\\4641018a-360a-4986-af4d-6213365dfd42\\3fda8635-f438-424f-82f7-71518cc34970\\65a61b41-22b0-4eb6-a5c4-9a1892f3ef27\\5ff6d234-60e8-41f2-aefc-dc0eef25dc43\\a9209732-2aa5-468a-885e-b5e758c184e5\\150747b6-8258-478f-8e51-40ba34ed3939\\55bd65fd-4a0d-4eae-9059-4aeeca073093\\cee1ca89-a19d-4183-a063-eba8b3afd34c\\2980f201-c0c4-421c-91d1-46f797f359ef\\c384a76b-045a-4aa8-8a5c-8f3facad6653\\4b441df1-6f57-435c-ab31-f1b7de6f8c26\\d4f0dd7a-a9db-4ebe-a9cd-546cc56eb10c\\8b781291-a699-4cc3-8b63-b17fb245e240\\a06a61c5-fe9f-42f0-974c-0b0a810e0bd2\\4e79105d-6c2a-4524-b6ce-412e0db81ff0\\89974a3e-f979-4c35-970f-44f872bc5f17\\a4ef28df-7450-4f68-86f1-36474553f886\\5e9d1383-ac3b-4a14-b315-3140ba22096a\\dd34a747-e25f-4b4c-8f7a-78569d7af800\\ebd48aeb-4aa9-4b59-b22b-f604d6cf8759\\f2795015-2a46-435a-80b3-7a3b1b881488\\045b77ee-d8e8-4cf9-94fb-90c79228fb34\\26558bb9-9a3a-466a-ae19-cb79290ca76d\\87595a98-3b05-427c-a58c-d21ab90fe57b\\6a4b04e1-d2cb-4a1a-a195-1eefd4cab7d0\\44191aff-ae97-4eb9-a2e9-980fbde25970\\4cb75e4a-439e-4088-af98-14fa7687f1fe\\be03027b-fc68-4389-b502-c23134806ac6\\311639f3-1db9-40b6-a4aa-3c69d0befba6\\850e1495-efdb-45d8-bcdc-af3caded6a4f\\6dd16566-8bc2-4704-aeba-ae895739e2ea\\5204d18a-638e-40f6-ad27-949a6be9e48f\\275807fd-7727-4d8c-a825-d67a3708b1c9\\84c9cd3f-8c23-4950-bc9f-fc8edafb157d\\a8465864-d7b2-4410-bac3-cd3aa46d9b08\\aaa8d83e-4b61-42b4-b77a-59ad4b646d54\\9fce6feb-d2b2-4244-b3fc-99732f558279\\2d52927a-8726-4b1b-ad00-2fa0c4096e7b\\1e9e7244-469a-47b2-921b-03ad47f24aa9\\25a466f8-1b13-4072-8ae9-83925f63906b\\cf1da10e-3037-4266-a0c1-35423c41a35c\\fdcdb060-3b95-44db-96dc-6f9a275d974a\\a18467e6-f8b7-4a81-96a2-4e27402453f1\\e0e83c05-5c54-42f7-9f12-8231950c0a6b\\e997573a-da6f-4e8c-8d21-6be25b18bb8d\\6d9a7a65-ef1c-4b91-94f4-3487b63fec49\\789378e8-44f9-400b-8dee-7efcb262b30f\\ff8b9681-91f6-48f0-aade-cdd410734dfb\\e44fe59a-ee68-4885-8458-3875c232516c\\80a78d30-9cda-4115-990b-c57e067783c1\\bb422b3f-60a3-4d01-9ed9-50494de685e1\\3599858b-f064-4e89-9e7c-1548d3591898\\55b2b528-e8a9-4a5c-a4ee-583f39c8b0f6\\e020f2a2-8d81-49a3-8fce-fa416c02d244\\e4325799-6e4b-445e-a440-c08d9bdea1a7\\8d65cbf4-3603-44f5-9bd7-63ec743ccbe0\\5ec202f0-775b-4ec4-b950-4d57b6288974\\d74229e0-b43e-4456-a266-65f0ef3162ad\\a5454b24-bc94-4711-9eb6-b9b4ee75f369\\17a5fd7a-b40d-4dd2-aff5-2c3a92621ea7\\aa14ffb0-5d6d-43ca-9441-a733c3e4b14e\\dc1ce7e8-57d9-4c63-97a7-6afc85c8f786\\016b214a-1d87-4d67-b51f-a5874676710d\\fa26108d-b83c-4dca-9626-6c65406bd1e5\\1199965c-f8cf-4ced-9ca6-c48026496650\\ba916325-43cd-471e-9b99-437123b8e0f6\\8ce58c2b-021c-408a-9ab7-4b47e4ca9783\\49e929ab-3d33-47d1-9eda-f902eb3b6c59\\8c817c91-3b54-4ee3-8841-0e665bb660d7\\87513643-be3a-4f63-99b6-e8f1ff43759b\\1f858141-7dfe-49a0-a01a-eada9d8e5cb6\\74bf0e97-cb92-430d-99c1-f1a5f346b86e\\acab5ad7-a9f9-423d-b250-378efe996cde\\27c53ea5-0786-47a6-8460-7d1261a9b3fa\\43ab1d72-7aa3-47f7-b9e1-c348b504c996\\b1e40378-c485-4cc4-a949-158b253eec3c\\eb708943-1d19-43bd-bb5e-c1b74997f842\\280f9f8a-b069-4bd5-9f7e-4ab61fe0ace1\\ef4b11f4-0760-474d-84ae-81c0eb06a194\\7de80748-0c72-4de2-82e3-866cc3f9cc83\\ecee9292-d034-45ff-ae59-06b54364d6f6\\1efb5035-f77a-4549-b952-e5dbe8337908\\93497052-3265-446b-be06-9987bbf68717\\5ff72994-d98b-4908-8d47-e7fb4d78610a\\723525cc-3ecc-40c0-b3fd-5ff01d7c5f5a\\954d2056-233f-4d8b-a0c6-251777b47c92\\d178fec0-e78e-4829-a4ac-403340b17d3f\\1a951df5-24c3-430f-a289-571dbcca8016\\a1a01701-3c3f-4d1c-b9e1-4b58da1ab735\\15c69b91-7652-46ff-992c-00099a1d504c\\09e29d94-f366-4e8f-a5b7-fe32b6c85894\\48c6b334-2177-4726-a7ee-42508ccf018e\\9b055282-96e2-4ea2-a1ab-6dbeff531d38\\d0153fbd-546a-4b1d-b02e-f05bb494af66\\b3a44594-3ca2-4c39-8dc0-5c5e1d978166\\8ecbb23f-1f59-4c59-aca6-b2dcffab9986\\2a38c706-cc9c-4ece-848d-d1e6b1c554d9\\a8da0889-9b85-4f33-af98-b03a1b7565d7\\0c49f0db-320b-42c9-af50-2abb901b5e0a\\260b7bd9-7e74-4c83-bc30-a9e31bf91e66\\8b8075d9-6c35-4e5f-afb2-b99446e4182a\\9460db16-b825-4860-8ccc-1268b13bd4a6\\eff88932-3371-41fb-8717-610aa33de234\\08eb8c00-58ad-4fe2-8a11-352a96e63f90\\d6b16de6-3d33-446b-bd26-a168fa4048e7\\66eec629-7966-4b03-aaef-6f1d203ab965\\43d85ecc-6b51-49e5-94a6-892b5179bfc4\\6b759f64-c6ca-482c-ab39-4485e8d18d68\\0589ec55-e971-4361-8cf2-d8a18156f30d\\1e3260f3-4338-42ac-b8f0-1a999cd06dc0\\587b87c4-f791-4adb-a598-591b41836c51\\aca7f4a6-a571-4460-b375-2de43b5fd274\\5ed51ce7-9a42-4366-9071-ea04fd1afcfb\\f0922d8f-205c-438d-8178-73f9afea1f46\\4636636d-eca6-4efe-92cf-58eb1dcd95fe\\3d5cf8c4-9ea5-4af2-b53c-7c08f11cec00\\579127e9-6dc4-4419-8cc4-9fb14d7c34d9\\491a364a-baad-4d4a-a532-c6d71f74accc\\204743e3-2e93-4498-b3cc-a33d37d5505b\\8f98e310-322b-4b42-8d6a-39c973c31312\\eff49ba9-f6ae-41d9-ab7e-04ce4e085a06\\ec4cc4a2-cb2e-4b94-83f1-4cb2d17c27e2\\eab96d64-69cc-484d-b715-64cf0a6e9f44\\d9fef542-b758-4408-9f58-2723b4c2206d\\0e175154-7493-448b-a2d3-b139e9302cad\\03052e1b-651e-42b7-a3ed-1a642906178f\\8b086443-6258-419a-8ea2-1e905f3f7ce7\\8f377ce1-8448-4a1b-9e46-3e446f9384a1\\e4fba0a0-f953-4321-9da6-696613744c76\\17ce6502-591b-4c58-93cf-4a338b1c0b89\\e79e26c6-ac5f-47fa-a0c4-43a19347da31\\8b362d78-6597-4ab7-9ff3-ae9e4c4882f7\\8cf94351-131c-43c2-898a-7a499fc01ed7\\005afa4d-41d7-40a2-9bf3-926b873161b7\\93df1bb3-b768-46c6-8c8b-0dfed7b2b430\\557c7759-d69b-4d71-bd97-c46d5e2e9a77\\8dd4aab5-ba71-4806-8c9b-067f88536188\\189dd85e-6b39-4ca3-a626-1cc74b265015\\74bd01d8-5776-4ab6-906c-c57ac61a0eb1\\35de97b7-3694-4bd7-873c-59c37def2b75\\ba2c4d37-4a25-45b7-9456-c7cf72b12d72\\ed33a830-2921-48a8-94a3-48f926ebbd8e\\21bd79e1-6d4a-415d-b752-9db6ebecf880\\f256fea8-bf2a-49ee-9f69-719b20082ba6\\312c5e63-454f-40f6-a952-1da1d18a6f71\\e44adf78-6e2f-4990-8381-022eb5e93b1d\\bdc61412-690c-42ff-bafa-7de703882da5\\b5ddeaed-7fbc-4400-b70b-3e9677257c80\\693b77e5-8579-4f3d-b3f4-90b2c96fa281\\3e8983d6-bd56-4f9e-aee3-12c0e9dc3b0b\\7aad7388-26d8-4bc3-a4d0-dc60990514a0\\3e93eed2-6209-4e09-9a22-30381c9f85b0\\56407f85-19d5-4bf6-844b-04b504d14eea\\1f8f08af-868d-4363-b235-4aa82154339a\\7781f63c-ef93-48c7-8e87-8d67abee94c5\\87e26b3c-76ba-4b73-8ca1-cdb18f70ffb1\\8358cc52-6ba3-49e2-9e53-be7e132572ad\\862c51fb-e4ac-429c-b32d-2033c50bae2d\\86f49d84-3383-4097-8264-4043cbd6ec60\\923b4422-63eb-4ddd-83ea-7d7c7230b92a\\93f44864-d124-495c-8ad0-0b3a6940a0f3\\213c8621-7e5f-4aa5-91bb-5337a800626f\\1ef9be6c-f270-45ae-86fc-56c970dc9cca\\86435e09-5e51-40a0-b2d1-6e41125863c5\\e887953a-0ac4-4407-af0a-33e3f700fec8\\9e6c46b3-65f1-45f9-9a20-4d53d5cf0b1b\\156eb607-c795-4550-9b68-5fdb68042d45\\800dce94-1698-4e83-a5a9-1ca68831d38a\\ea7cbf52-9320-416e-8771-bcb5fabd9dbf\\036ce506-8d6c-4b6d-af26-15be10a11fc8\\6f6a695c-2b8a-437e-b78c-b051cd29168a\\982ac7b5-1647-4a73-80fb-5fb50afd2698\\a22ee507-0d62-45cc-a700-dfbedfe84c85\\846f29a3-5f39-4f11-9824-8d16a7c35f31\\4b8cba87-fa11-48c2-9829-5b2c7d3df88d\\3a8b245e-924c-4b26-b910-099532035838\\7842d522-241e-412f-9486-a4d2f4bb24da\\04c5ed00-32fb-499e-9012-da57ab5f927b\\c80b575a-66ba-4720-93d6-9c6c52a55ec8\\13c19fc2-ebec-42a3-8fab-7dae1ca8fea8\\4065c246-32dc-4d08-8f62-2407f9b06875\\bf12b29b-bf5d-49b2-9279-a2e5fd8aeef3\\b3286eb9-143b-44fd-b244-f5f447468927\\c39ab412-ba16-47f7-a5f3-d713ca011153\\19e6815a-0b42-4570-a853-0b3d808d408a\\f32bc98a-ae62-481b-ae6d-b533962ade11\\d314a78b-4385-4bb8-98da-ada755a41b92\\f52bc7cb-3b3a-495f-8263-f5b84482982d\\9fe33910-daa1-4186-89ea-d3c162262c65\\7f0cc45d-ded7-4039-8ac2-91bbd3b2c017\\85a4f414-7bc4-4bf2-a4c1-91e632591e9c\\130480e1-6ad6-4eb8-98a6-88001d9dc717\\b9843c6b-eb90-4805-94dd-0669f2cf1759\\76994d2f-933f-4481-bc11-ff884029e418\\1f0af801-6bb9-438e-aae5-4cf2ded2ffa8\\4a31de24-3a60-44d1-b5e4-513e7bb65272\\11f9a242-84e4-48b9-a105-ef361564a60d\\04ca16be-3cb8-4650-91b0-aec89bb67a00\\6b6f7ca5-8914-4786-a158-c21c89ca6536\\2dc96417-1fa7-4e95-8395-cb83cb47656d\\303d8863-a63c-4352-9fde-25323817961b\\79a30fc1-9d7b-41de-8998-5189c7f26241\\6e5fd4ac-b119-4e0a-b2c2-17ce5535f93d\\2459cbd9-9e6b-419c-a0db-564dadecb720\\70629a5a-4096-48c0-9c0b-6dc113cd05e8\\700b30ac-6109-4b52-b64e-d6cb0af33831\\79334484-379d-4ec4-ab83-364b5233cd22\\4ebd5538-01cf-4fe7-8deb-d09e0d468b2a\\136e1a81-bfee-41b1-b6d7-09eb453f222a\\c05ab88e-17af-42fc-881e-1af3b0e93a4a\\4afe7273-621e-49b8-9eda-d9e5ee51672b\\662615ff-58f0-47ef-b1b1-e7190220f4ae\\888f03c9-8453-4854-a8b5-923fcfbe7a7e\\396a2d76-6422-412b-96db-90ec64e14457\\14f487fa-b157-4bde-8976-4f4c05eb97ab\\f7e9fd7a-27cc-4d36-a997-06a47350fe50\\7000b616-045c-4028-8c82-6be65dd6ef45\\b67bc83f-8d0a-4cf0-bf4f-1b49720e943b\\8bb9fe9b-6ca1-40c2-8116-f7387f1405d1\\3b0db101-1af0-49c1-9e73-65e37b0dc814\\a676cade-bffe-4908-ab8a-7d6724e55cce\\04834328-1efd-4f39-8a88-d1fcc115a7a0\\d1b00c37-d69e-46fe-baa1-fd37eb3d457a\\e0456bb8-2a38-4bc6-a45c-678b689e5cfd\\b1c16fd2-3024-4886-a2c8-04ccd5728b56\\2a4845ba-3c1b-4651-989f-b7c87cf8dcad\\f6245c7d-3f9a-4ac2-9d76-c5a4f5fa486a\\2c9b210d-fead-4301-9c34-0fb52c0d32d6\\b0937e47-b168-4eac-9f99-417cceb17722\\63117ef0-2920-4464-8583-b5f03bbf8618\\ad89452d-21b7-411d-9006-9f7c5ad0fec1\\08f17245-08b9-4723-a6af-11034c3c1c22\\e3c133e6-0f79-4c30-8d8b-b66141969d06\\52f162bd-83d5-4acd-913e-5547a8f64f1f\\b88a5cdf-f385-4396-b74a-255b0596dcfd\\2a3ef0a5-82ae-4d87-8f24-e0a17a0c3399\\4920d6dd-233f-4646-b668-2dc04b4f3a42\\667f2b2c-b61c-4e91-b1ff-31d81b1e0972\\bf77f69f-f25f-47d5-b93b-bbd18128e415\\f55f6390-9b11-47b7-b593-2674906a9aa5\\fd18768f-9e8f-4cc2-a4ac-c6c04382a4fc\\d9e40925-a59f-403f-aaec-aef4602a9cde\\65dc80b8-6b15-4dfe-814f-7765cfcec2b3\\9a917fd8-46cb-4dca-a549-103ef82d1b77\\19d55443-bccd-4b92-927f-932c28cdec17\\2b5f5297-7336-4d2c-97c4-8703690e8ab1\\1a7ec120-4de0-42bf-ab8a-3e0e5eaa0c5e\\65b1d521-643f-4278-91b6-ea61975681e6\\ca28414e-cb62-41ad-a8e1-a648df10cf1e\\f4d85298-f806-423d-8458-76392d708824\\35b9a5ea-6faa-4f5d-b51e-cbe462806709\\46d54e56-da39-44fe-b3b3-42830311e434\\75982df7-bc95-40ec-ba7e-e71d57c963f9\\4e90f829-9655-43c4-8c39-22c24dc503c8\\f9a00e3c-4627-4a88-a8b2-a5e41aa714c6\\99bd3e7e-43af-428c-862c-2221211ebe2c\\3ed6388a-5ba3-4730-b3ef-8b748fdef100\\8a803fdc-b764-4a10-b831-291108d15ba0\\c8decfdd-c57d-464a-a5ba-5bac73ab72d6\\be82c3a0-9e6b-45e4-a4a4-8a3ea48e83a9\\5a5bdcd6-cde2-4d08-b5bb-5f497d72d565\\4de96fa7-f172-411b-b8e5-77beb115b009\\7ee247c2-8e94-4ce1-a17d-a7bb8df3d9b4\\ef89ad40-5ac0-469a-97f9-65963d7b1b5a\\fd1592f1-83b4-4033-9a67-170ad4496717\\f765a20f-24ae-4d76-a98b-09602187a6b6\\53fc22d2-5184-407f-ad9a-c60b754eb58d\\b82e30e4-ebf3-4d5c-88ad-67a77ce07deb\\98c18798-f6d5-4c6e-b9dc-e290284fa764\\0d3606a3-5cfa-4053-bf04-93d4b71319e6\\a84787cf-5915-45cf-aa1c-ea35b9bdc9e0\\14f965ab-1be1-479f-a7ee-4711f091c3f1\\b9853604-6662-4fc2-97df-0ccf7c85b429\\ab90348b-a085-46b7-8ce1-636f2451bc46\\6ff2f1e9-c8cd-4424-ab4b-e343e57537d3\\b1e1c2f1-c42f-4d0b-9321-1fa81a7e63ea\\2a0eead2-4161-4985-a535-15dda21f3109\\921a1fa5-8253-4289-952f-0d2e6edfa4c8\\8a2794ed-75de-4870-9de7-b06d30295a63\\04d0b9e8-24ac-4818-afdd-38de181ab6f8\\137a4e4c-89e3-4f32-9fe7-06054d6f8a1e\\4059ff44-3aa8-48c0-9c75-917676b4059a\\b889d432-0bad-45fa-902e-f2b864b0097f\\f7d6f72d-9d16-44cf-a3b4-e9456d74c3b8\\7ddb574a-5db7-45e7-9255-0018bb624e94\\6db3bdfd-2703-4ba3-969b-28a8f3bdd53b\\9b2b87b5-9201-408b-99ef-73c2e9362f8a\\aaf20b1b-4b79-4f51-8b68-fea78dac6da9\\2b629da6-135f-49b1-80cf-43263eb89ab3\\20b296e0-1faa-4bdf-85ac-a77d8fa621ed\\89362545-71cc-4834-9d0e-6dc6fe64152f\\51e27a01-518c-4de0-9f67-7495d5bb5f6b\\394c1564-7748-406f-8659-85f9b9fe13fe\\1d866038-5fff-410f-a68c-071572d65900\\c80c51a4-6ed0-4425-ae66-822ca1a2f16a\\7e86f4b3-de5c-4335-a7dd-570815afe526\\26a1c5c0-508a-4e4b-a48e-6d2a4db1585e\\97b6981a-b3cc-4295-b804-ed1db86eca6b\\7918c869-8d52-42e8-8267-fbb87ed0bd5f\\e8699606-79a0-4355-aa66-559361885bb4\\78b177ca-cf3e-4e11-a831-bd5020aae713\\02758de8-daae-4260-bf60-76bccc747a02\\6dcb6a10-76ab-4184-b844-e45fa3ce4ce3\\bd4d7bdd-4e36-493e-9e0b-601359625c54\\589a7105-2ab3-44a3-8937-3734343bd7a1\\4fbf15f7-8d84-43cd-8633-8df4242b1c8d\\8e999dd3-3f1c-4c03-b8e8-e23098e5907d\\b273eebb-507b-45d5-96d7-3d7c68da5bc8\\1082212a-a12f-4c09-8dfa-f3824fb6aad8\\b88dd311-4f07-497e-9bc1-27116dcc8463\\5a38d424-171c-4c8c-8c66-2e0e902578d7\\22ddfa6d-54c9-46e1-b916-717046cf347f\\f162be98-a14f-4bcb-8f98-d3a4a26b8877\\b2d0b97c-df41-49b0-8933-7fa9afc3340c\\d664221c-f860-45c5-a919-139c24fcbd2c\\76e587e0-5e8d-4206-8ef0-8f990bbf711b\\daf2b2cf-a678-420c-ae58-968a05e9b87d\\8e41c46b-3e4c-41ca-a7d5-da0bb188ddfd\\c7795784-d437-43d0-afb6-92b06e2a2245\\12e5a3de-e072-42bc-ada9-0d77c5e77c6d\\1665a174-a8d9-466e-9eb0-1057d1426731\\c86c7700-64aa-4466-863a-787b4a9fa6e3\\240026f5-8530-492b-8436-86976a7e5fcf\\bc03c881-c24d-43f3-8408-b72f94da8c04\\4fba7725-6461-4017-ab89-a1b09fc6d5d1\\7bfd14de-a28e-4d00-909f-c3ad0f706693\\0a5a7ec3-ca87-448b-a284-785e2ab8b3c2\\e1620555-1962-4295-afe1-6eee02901688\\31357d67-da30-4850-abec-a48822aebdd1\\f9408d92-36c2-4cff-a916-82260436cfd7\\cbaec5a8-55e1-4c34-a0b4-5b2de19aa149\\8e369bc2-b407-48dd-ab86-c17ccc080ef4\\f3c74e65-b59e-4060-9b64-4f638933e664\\b2aed32e-05ba-4c43-8429-6419ede330bd\\40dda567-ee96-414d-9727-eefe501f4547\\be1b0851-a69f-4715-bee6-d00e2708ffaf\\86c6b730-3a96-4496-8979-de99cda8ef9e\\0af15759-e5a5-4a1e-a244-02f932fc8d5d\\2999cf31-5b17-4199-ab37-ad3abd73ddeb\\7846a51c-4ef3-4110-9aaa-0cf2ef9259f0\\42a5e027-5d13-4a80-9ca6-e63c4ce7a681\\5c610e2f-67fd-4a11-8e1b-c6fe760a8914\\8eee07e7-99f3-46d6-acb5-4c85637fd8fc\\8e7473b7-174d-4071-ac28-eb852d30ad1a\\6cfe72b2-fa0a-4321-94ce-863b7a73e6ae\\33990869-1e2c-4bce-86d1-7da57b85ec24\\5528e15a-3a9e-49b7-9161-483a6dbd4297\\cddb804d-f229-4a34-8cf2-eda2cbba108f\\28d340f3-1d2b-4507-9a02-84c56d877307\\1e2d94d4-afa1-4822-a6db-d3545b6b251e\\da0ab506-367d-4664-8ab5-4b489a515f21\\ce95db1c-f949-47c3-b5be-3f36872ac57f\\480303a4-e0b4-430a-ad3d-3175d6acefa3\\cff72b00-0294-4f39-ae9b-b854944da524\\46e0ace0-0c51-4b7e-af9c-5b702b7a0430\\edd75537-8b5a-47cd-b79a-404d22b58156\\76525b3b-8393-4060-9396-c7124f6230a3\\fbd71b15-573b-4b4c-925d-ca41ab83b6e9\\5748ef6f-b14e-4b71-8bf9-84ddcb7d3aee\\b973c5fe-6cda-4d0a-a569-0e0d2d0960d5\\bad90c3e-ac4b-4855-83f5-b12493f72038\\6e0b63fe-2af7-43d0-874f-c9a0563510f0\\d218289a-74a5-416a-941f-87caecda1346\\d27860cf-879c-4606-b045-ec56f5adeb5a\\58e821ed-2cad-4d11-8619-ef84e39a322b\\42d594a9-ff85-4b91-9994-3aa5395e1da0\\63328208-b5e8-4741-bf3c-ef538b8705c3\\5ed54174-8204-45b2-8e3d-2f0fcba08ef1\\7acc3ab6-1232-42c3-8c68-5d3ad3822809\\b9d59cc2-2e69-485c-bc58-fd1209e9814b\\aad4bea1-b269-4691-907f-ddcf9fd012af\\a91a1864-66ea-4d96-8c6d-6f2ec87f86d3\\0891ab56-308e-4372-b61d-7df176df5a6c\\1eb9aaff-b980-4cba-8654-3acb999ab91d\\0df185bf-b3ab-4253-a18c-f393af7e1707\\b72f5f31-8689-4fb8-90f9-3cfc2a6aad3d\\28b3d27f-3c67-4dd1-ba7f-98d748aaa0ca\\bc3a0c0b-99b2-4b4a-8a92-102e5c1f6a9e\\f405da1e-66e8-463d-9e85-88ac44eb239c\\42531204-b59b-4269-81c2-b5676e8256e9\\317d355a-08db-4612-aca4-4478bb42ddba\\93d6470d-0628-46ce-b51c-7e3600e9af55\\de05cdc0-2892-45ef-b4dd-8c7dc1bbabf0\\2726e00e-8dc1-4bcf-81c4-53e6d29a839b\\25397e67-956a-4065-b1aa-14db211145ed\\ae35613f-025f-4075-ba41-f5947eaa2ce2\\7c27015a-ae7d-4650-abc6-dc482b83accd\\9d685f35-1cff-4499-ae40-c68bb6d0b513\\48c7f22e-d20b-4656-ab02-65785cb86bd0\\64fe99d1-0dc4-4df1-bf3b-abed670b0170\\5ea8cfe7-3a5e-49c7-9fce-8b46292ec469\\42afb07b-700b-49f6-b646-7af9be432d21\\4ff94392-632a-473d-9304-cb22fd016155\\0108cd19-40c0-42e7-90a6-1c2ffba1ac59\\2250afb9-5530-448f-85ac-e866d64c9dfc\\d725d929-06f8-4db7-b9bc-0f8b803bfa36\\fd67189c-bc39-4de7-8311-5ff8ad9306e3\\632fb8d4-f6f5-4570-a6bb-4bb691bb6ec9\\e9ba4715-1d89-451b-89ba-76620d1d2df8\\53ebd1ca-4fd5-44e5-ae1f-ee2aedb77840\\45f757da-dbbf-406b-86a8-eb76764557ae\\694e1293-9ae3-4800-a95e-91558a918f52\\087746de-7399-46e6-9621-67c364dceb56\\09d1bf57-f860-40cb-9c99-8d68f1b5484d\\ef3a1675-bdcf-4072-a2dd-4be216e81cb6\\94dc9e52-631e-4154-9ee8-2f839df9b4dd\\acde648f-8aee-4d55-b5f8-4ea7589b2922\\7d2e7095-6d4c-4c11-8f1c-14339493b5fa\\da8bfbb5-ecaa-4063-aa41-7b7fc83fddb3\\35872741-95a5-418d-91ea-f6ef647d67ed\\a9c4a19e-98a8-42e4-8f76-ad8ccd6bccc9\\a7370097-89f9-4e8b-ae81-073973725baa\\63f690d3-60f2-45d8-ab1c-252cdbc82be4\\23bfa918-608d-4f7e-b2c8-e0466b1059df\\19b3a2e3-a8a5-4a48-9f6b-5e675a34c006\\c549e3ed-d313-4d0c-8258-4b5c7aeda993\\3562e4b4-5fec-43c9-9771-7558baa41102\\96e81e5e-ef08-410c-ad8c-a5809be8c1e3\\0323e277-0da6-4a85-a51c-79e5ff94bbfa\\d1ffe63c-c505-439c-852d-b3acc120c527\\cc0fa547-12a6-47dc-9822-3bac620344ed\\17852783-eaf0-47fc-874f-e1a878b840f1\\7182c465-8f27-4caa-9d68-5c09b8d02cae\\bd36136e-3253-4822-abf4-437af6e4c9d7\\bb601b79-8dc3-4cd9-9d8e-778e04da84f3\\fad3c2b5-fc66-4d80-8f31-9d98589fd5c6\\19811d29-4af1-49da-abb4-af103b28c818\\39182b02-6f5a-4918-9d55-e9a8fb1e0cd8\\39ca646c-b0fa-4888-ab96-ab09a8f52ae7\\1ea23838-4630-48d8-8787-c720d2f97b98\\47caacfd-7790-4d0c-b916-db69f4e31a66\\1450e09d-ce4a-4b89-9d6d-66a1ea81a190\\b14f363e-2833-4d50-bb73-b62b9e14b93f\\9a3d6a2a-ebcd-410e-8068-2757326e2ca7\\94038393-e7f6-4f19-966e-30865db5b965\\1d0c9696-a5af-469a-85af-1785b677333f\\01bf8885-d792-42ed-b3aa-dfd27a436b24\\9a603c77-c66d-40c6-a609-7f54d3c58874\\f813cc47-08b0-43e0-b1c7-ed2425c62ed5\\ea942633-58a2-441d-86ac-1581ec6df1cb\\34912254-d51a-43a2-b61f-9df71eed5341\\c5b6fb23-1325-4706-9b78-13d7e7c276c5\\93fbe5ba-1855-4184-abed-8d8fc373e0dc\\963f3dbd-a966-4252-8a0b-2b82c93a35e5\\fec159a5-b63f-4e68-8294-09c06fee7fd0\\9b14ed0f-3e7e-43a4-a84d-a80b3e35e09b\\dbfeec35-45dd-4093-92de-e99c68e768ea\\138490ed-a205-4f47-a51d-1d24e79ffc0d\\ba8db6fb-1eaa-4ab8-99d2-e7ca660e6cfb\\810948d2-d7f3-44e5-b75e-dc0fc214fe02\\73923dda-79d3-4cbe-8f20-e44c240de04a\\ea4d367a-b6c9-45ce-b29e-90b1b0445297\\bcc92fae-ed5b-4e4a-8fa7-7a6a0da1bb0a\\d609e110-cc6f-43da-8452-db3ae5766bbb\\1c9747db-e275-4fd0-8a1b-8cb6c7603443\\7d8fc62a-26f7-4413-b23e-7bd405221949\\eb436e25-9755-413c-9875-f9c01bfe8c7b\\934e1657-8c98-4378-a6ca-ea0d8f1ac6e5\\478af58c-2136-4c5b-a795-e87cdd8ed77d\\a134d5c4-a81a-4095-a205-63cae55d76ae\\f4e2fe13-0cda-45d2-bd78-bbcba0a3ddfb\\1def0414-dada-4929-aab0-a9082199ba02\\ee21a1a4-2559-4a3e-b44e-67045bd02de9\\d0d5d8ce-f919-4468-a7fd-e059800067bf\\735b5f74-ec22-4bb0-9b12-527c993e789a\\10da3d44-5f3c-41d7-be40-cc2df1443ee8\\7be3bc2a-dd41-4920-8ed8-d0027b9eb816\\a32b6981-b23d-4e92-a38c-e89604f5a870\\84238d56-a653-43e1-adef-d0d79635c307\\059032c6-6fb8-4f68-97d1-6508c977ad4b\\b1f7c6e5-56e2-4f21-8844-c3d89e3562b2\\6aa20bc0-7bd8-41e2-aef7-db488ec03646\\06e84724-ad67-45a5-95ec-569e6f98f949\\041e31f5-52ce-4fcc-969f-5262df1560f0\\0da0430f-48d2-4edb-b928-3a9a08e10b27\\aa35fd50-ed18-4ebd-a951-804f89723851\\d605deba-8b35-463a-8212-a6972d580eeb\\c9fab6c3-1da9-409b-b055-5e448ad2102b\\73c191fe-f6f2-4c99-80bb-8f92e3f37c9f\\25abd92a-51d5-4e64-ac86-e37b48d2d7d6\\c5dcded6-6ec5-4694-bc62-63e9472840ec\\8a318418-deda-4d48-a93c-acb1d90bf7ff\\98a90727-9487-41b6-bd0e-c132f046bf38\\cc316ce5-832b-4caf-a5cd-6fd29dc5b56f\\13770e83-506f-47a0-9ccb-cc8271d23cd4\\2bc6c4be-a8ac-4cf9-8087-62abdc2120df\\85c9b738-6c9f-4699-9444-20a3cfa034cf\\fbce55ef-c9ad-405c-8297-b594be61e527\\2f610ca7-a31a-4011-a278-b95ca5efc6c5\\d8fb1103-d5a9-4b39-ad4f-40c2a91a6512\\9a982873-7628-43c5-ab64-98cc346be6b8\\1000bc67-82ba-40e2-8b44-babd5fd119db\\9c6fc803-e6a1-4184-979f-103d8f3675d7\\4c3c61fe-96ec-460f-929c-934eb360b36a\\6fc6c913-eca5-4715-bbb4-712c7f895282\\519c4341-243a-4b85-b7f3-56c123fdca9a\\d60bfaef-3e1a-4837-837d-4542e5efef75\\298b0635-ca41-46a5-b6d1-f26020885dd3\\15febec5-3672-4fc6-879d-646625a9d36d\\fa2f5ea5-df48-4f0b-ad1c-0077dcdba2ae\\76070106-b28e-478f-814f-258ae65573ea\\e8a07ffc-363e-4a8c-9cc0-3a7bd1a309c7\\67c952ee-e861-41f5-96c3-9358e7cd8265\\c49175c6-bed5-4906-a177-aa9af18ddac5\\af5bb109-7fbd-4031-88cc-c9c4b2deb390\\72f7c056-495b-45bd-a157-1b57fabfd5e2\\c3171ec2-47d9-40b6-9657-eb8f731402d1\\af983881-d5f9-4daf-aa5a-39ef2663ad17\\6d9b4798-8577-449a-96c7-b7063646c25c\\615107e2-15ff-4d7c-9057-69642245c76f\\1cb484a8-1ad5-4bb2-9082-e296db2c34bb\\b476a5e7-8ddf-4721-9448-fa17387f9ff4\\ec7ed1e7-7073-4fad-a5dc-85c27b6c0253\\08199f02-d6a9-4c2f-9c4c-aac092705c71\\123a238c-5aaf-4859-9155-c7ec3c739201\\8b17c251-93b6-4f33-994f-afc6d75a2bc3\\470a2790-1411-4dd7-8670-d86377ebd3b0\\85dc857e-6f79-411d-a074-fc21896c0cc7\\62d34b78-0edc-4da8-9eb0-e0632b1fb457\\4d5aae01-b3d5-45bc-92dc-2a6bca405ced\\d7f0abab-d0da-48a5-ad13-b6b0d7500f8a\\b04d16bf-e15b-49d8-aecc-e1e99e291d4d\\07e17c09-328d-42b8-b74e-d4862ac6cf7b\\fd81644a-cf1d-4e6c-9447-9d19964fd551\\1f02f390-88bc-4450-a24a-837c30cabb9d\\b77040c5-5cde-44ef-975c-77ac6e1bf59a\\ca351a36-cb1b-451a-84f7-224435e4edec\\8071640b-310b-4fd3-81d3-c6d9bfe54bde\\2b216092-23c2-4ac5-828c-0b45fb7d89d3\\d1a5df02-ebc2-4e17-9c9d-3f8d1086db86\\16138d61-2ab7-4853-a369-993f23c52d82\\b594fe90-95f5-4df9-b35b-d18a992c5943\\0bacc300-63bc-4a4d-b962-a4637bc8e8a5\\f3636464-635c-4295-a18a-99376e475ec5\\7b9deb49-4392-4c7f-9442-4fadef94a1ab\\a658a529-43fd-4bbf-836f-0c57d9d5f927\\97d56a17-991e-4143-b6aa-1925dc3482d3\\57e4aca1-e6dc-4ec8-82bb-64fb141eab40\\fd271248-3294-49e4-8eb8-d9d49e040f2b\\64205064-3510-4827-9f81-5a00a95a93e8\\4e62246d-bb9d-413d-a464-92adc5a65eb2\\7de30668-cf5b-448e-8294-658c683bfa30\\eeb9d1eb-7698-44f9-aae4-10d528e30779\\c519445f-e080-4575-b3ba-a14e5f75dbeb\\dd251e2c-5944-47e2-9242-9bf88a5b2141\\51b5d7d3-e134-4267-801e-11af5ce9a6aa\\a892caf8-2d97-486d-9117-7310a17b73fd\\82803fe2-4877-4d51-8118-244f7ffb9ea6\\75251c13-046c-4f06-9782-e6b9c4f61587\\332dc139-5953-4710-b4ff-811ed5c822d4\\a8943531-e461-4c69-9849-6db3f67a853d\\1c3fc0be-214d-47d4-9f7d-4507ec34774c\\738ca35b-9e67-486e-aa6a-8c1297af723f\\88954dde-4f8f-4c33-85d8-1842b32c64b5\\c9e86fad-6cd6-426f-a34f-826a52f48f7b\\37620a77-3053-4656-b0ce-978ea71a00c2\\2369a4f0-2529-4b38-b336-85b6e5ce7969\\5ef35489-b74e-427e-8796-38cfb9c728f9\\dbe8de4c-4490-4db7-bbf1-c37adcb08e3e\\5df1b0e9-2397-430d-a1ab-60f196ee6bb8\\09006741-7d8a-4234-85e2-bcd7cc4857af\\6a5cfeee-929e-4f6a-9e72-1129e965a7d2\\7d8c7862-b4e3-4239-a23e-ec7106cb00eb\\18172d5f-6d8e-4680-9485-7306fe36ca88\\4dc895c8-6b30-4d3c-be7d-71da22dfe189\\6d56b8a6-d055-4d3b-9085-b4cb9d89d9dc\\5136d463-ab64-4fa5-abdc-1c1d6dbf96a9\\9829f3de-098c-41f3-943e-478f0acaa291\\51379e33-de5a-4974-8677-e0fedeca5538\\594e4888-1cfa-4751-8fb7-5cd02ea834de\\e377618b-4703-4b90-a804-0e5acdb1c148\\94ed8fe6-8404-4d81-aa3d-2f5f182ac45b\\c8d9c059-f86d-4fc7-9d1b-61954eff93d4\\82821af6-ce28-4f9f-823b-07990af11bef\\0c1260c1-7b9b-4d96-b33e-b80055f998eb\\ed340927-12ac-4155-a687-ecbba952168f\\5da77136-c912-4963-87fe-d8ae8e1369d0\\f2754355-dbc0-4dbb-be1f-47d0fadf3fcf\\16d1da26-51e2-4a60-ba18-5ee7e644f59e\\91dedd69-2868-4f2f-87bc-3c0c765d8efa\\468f7367-a128-4f3c-9661-ce5aa3b78ab1\\5ba269b6-0414-44dc-ba5b-c1de0c189029\\b371ab36-7faf-4447-8f77-cf210e2540cf\\c9a7125c-8c51-4dc8-9f91-a586c72d40b9\\ecb56afe-c393-4ea9-874c-15cd099a2009\\61990ebe-7d5f-42f6-8aef-9ed6b532954c\\0f3ef2a1-9494-4fbd-ba2b-6743ab45387e\\228729c8-4381-477d-a147-ebf850ebb617\\4988f20a-03a6-429b-ba2a-42b253016b30\\c66f6233-1685-4a53-b6a5-c356a8d5cd3a\\247b0f90-c5ff-4cab-9716-8ca58aceee84\\f42213ab-6a7a-4ed3-bb61-0db8eb45cb88\\1bf748fb-2d0a-4a03-8d26-3df7862c650c\\7349c87e-a3b6-47e1-b37a-86a3aba57b7f\\d16f2291-3ca1-45e0-9e65-96482198a2ad\\891bc995-724b-406c-b69c-4d01e2bc7674\\dfc37f0b-7ebb-4574-9f6f-ac2dcc8cccbc\\5cb5bb82-9051-429c-8a37-be1f95f62f9a\\ef8f8b08-3c4e-47c3-a913-a452e9ecbf15\\2a0fdd0e-20a8-42fa-a5b4-d6996ded1d79\\62f84b05-8494-415d-add3-118f3d4719e3\\53a8d663-62b1-4ee0-9ca4-0cb28f4b3e4b\\3f3c8286-49ad-4cb2-9b48-02aed2a89d8b\\f56c83ff-9755-4ed7-a26c-277190ddd7c3\\2985deba-2282-4abd-9035-7c80eb6e9a6f\\acaf0651-350f-4fbc-bece-b0562b0f3804\\91af8494-78cd-48d1-8d0f-e1f7b95117f7\\997fe299-83b5-4ad2-a677-cf55d0fda35e\\0f341259-ab0e-4d9d-be93-79f05cfd9e1a\\eba393fc-117f-42f3-9726-052d9758ee7c\\4618f75b-8974-4a17-afba-80d6eefc04d3\\da9573db-7d04-41e9-aba8-1f9f42bbd136\\afa26918-7709-4ed8-a85d-8d915ffa9564\\42646a23-0396-40a5-ba53-157b671451a9\\321426d7-c0fa-4316-9a50-c70e86d851a1\\e546cef6-e536-41f6-8846-5aa6027d3349\\12838404-f002-4f75-a812-d9daf560aed4\\ff1f8c0a-421d-49f0-99bd-70e2853f444a\\65d4fc05-cb84-4cd9-9229-6f14a0c7e25e\\ad661261-1f12-4b87-ab77-22eaf5053f79\\5622da94-4224-4a1c-a826-d06dfa0ceab7\\707c3f98-d9b1-41b6-8f24-c2f716b1a57e\\d20f9f88-705e-4da9-886b-e9b90e445f1a\\5155afff-3ffb-4807-b586-faccbaf1a2f2\\de35918f-6d30-4bc8-b540-e28ee38405d5\\d4a367de-855c-4fc1-9be5-88722aef1c5d\\5e55d841-3dae-4d03-8887-da666ce96fb4\\798e7767-d774-4d5f-84be-eb4680f2911c\\1fa0cd7d-a2f0-4b56-a94a-18e0dd53d030\\066c195c-9ea2-4273-8f18-614332cc439b\\af93b7bc-1db4-4474-a1db-819c40799dc9\\cea77671-7e29-496e-b628-043c99bdd79c\\7500ecaf-2e32-4711-86b6-c32661f9748b\\3c0b8f6c-fbf2-466a-9ae3-d253b96bc210\\512fefc8-676f-4414-81b8-92fdeccaf0ba\\b4ff20f6-2771-4581-96e1-218520e338bb\\6baf412c-2fd6-4b65-a6c3-0d6c6915f1c8\\6defdc2f-d8cd-4919-9f59-0a78789b1ecc\\ba20da2b-2df9-4010-b280-3a862646e637\\65e67b11-2aff-40a9-8c8e-26e5680ee5e0\\b07e1396-38b4-4d74-987c-54de4ece6eb1\\e269a0ff-532f-4b1a-8af8-2a19e8fe6eee\\5a1ecbd0-511b-43ba-bebb-4d0510a4305d\\479bd789-9fab-4369-8a7e-98f390336f93\\ee44ea50-627c-4849-9072-904ae9ade953\\d5acfcb4-ca14-4492-9afa-910eff932fa8\\91f77256-5e1e-47e7-adab-8e6d4c61a515\\33691bc1-b3a6-4cd2-8ba1-e028bfe6c402\\aa687884-4920-4739-8bc5-ba4c41fd47f4\\a31b916a-28d6-408e-9edf-b0c389a25d1d\\47fce9bc-812d-4a3c-a2b3-e87c67b79908\\e3ecb895-ee36-482c-a576-57e2a8dceae7\\9c8e9090-f184-4201-ad51-ff812740b2ab\\a0ee22c2-dada-497e-8448-7abe8da15cc1\\719d291b-bdbc-4ce0-b94d-4a06f46a5259\\66489544-1fd3-40ec-8e0d-27a593876e59\\30bbad16-2b18-482f-b82a-08109f710048\\33dd62b2-42e3-41d5-8bac-c0152f027d17\\877bc77f-44fb-441a-90f2-b38bfc727217\\a8834d59-c928-4815-9696-205200c02f78\\c9626e58-4e40-4b50-adc3-d68cfd84bd20\\ed7a27c8-706f-4024-be3e-2a7815601485\\9a74c681-b7e9-4d73-bc16-5e84bbe2ca32\\1467a24e-ed86-4ef6-8b31-b3efbff5c5ba\\26cf9c38-f6a0-4e29-9a9f-a2866150c1e6\\95b55c30-1ef1-467c-a6e7-0a37e6de38a9\\cbe4d95e-8e02-4da6-8550-9bca7b5707ab\\d70f1104-31ec-4dd5-bc7d-44c588027ec4\\b2adddd3-aee6-43d9-9c47-93be32828628\\df4249cc-c7c3-41be-9605-7e9071d49afd\\a2b08b5a-ac2c-4c4f-a57f-3c82ea81613c\\703eaeb6-e06b-4458-9ff3-31a0a77d05e3\\6d956943-eed4-406b-a663-a53498ccfb83\\2c7ea892-4919-4071-a801-4e74ef61e7ec\\6bf6e2e0-afa3-4094-8278-6f7aa000db19\\143558d4-3006-4e0a-81ab-d6cfa8d05353\\92c3aa9c-feda-43dc-a5e8-6a30777f9f77\\bf6a3c9a-1f7e-40c2-84e9-220a919fd289\\c4ed3666-c53f-4820-ae1e-333ed7c70874\\e17d9515-4aeb-4420-9c33-dd75b57eb3c9\\02ea1e56-2fb3-4e8e-9ea6-1f0ccdd46d7a\\eeb7ac65-02ef-4212-84c2-3e65c64572f2\\476ac237-51bd-4daa-88b2-e9d7e261a8a9\\4d591ec3-c8d2-4fcb-95b8-63a0eff7becc\\38183dc2-1e41-40f9-ab1e-6c77cc1703d8\\519f04ed-9943-4d20-8150-aeb4cd149af3\\85d46a27-36dc-4cfc-9f26-728d0c1e4da4\\1f8255ed-3044-4cb3-b620-cca40f14fd4e\\5291251a-ae78-41c6-8d18-808ab01b0762\\1ec8168b-53b1-4f91-a89c-12d3247917ec\\fbee2da4-59a5-4d8e-ae9f-75c9251ffcd9\\d7fc45a0-0571-4e13-b20b-5f3830d0ee18\\eae3b0e4-dd6d-4472-b888-cd361b55bbb4\\986d1ead-bd70-4b6a-a32a-09aa9cb0f377\\cd380459-8431-454d-aed7-efb5c60023c8\\a0ce2bbd-be37-401f-8c82-1c81fbc2c2a7\\611473d1-0151-403a-ac0f-f824bc6a1753\\b0a3e680-ef6b-41e8-85ed-33fa24e3fe89\\5d1bc2f3-d205-47da-8e25-a3ef749b9d76\\16133e3f-a817-41ce-aec2-f9c43a00ca67\\2c8180f1-569b-4a51-9bd6-69ae4ac85e38\\3ad35a28-3492-42cc-9de0-6eb70dfa31ff\\0c2521ce-9320-4dd9-a6b8-f9fdf19126d6\\50b23f69-b92e-4350-bbcb-b795a40a2412\\b1eebe7d-1dad-4d4e-a239-417505186f24\\46a69156-068c-43a0-a4cc-2f7306f4bcc3\\dc8948e5-d9ac-4ca8-a0dc-eee35afec322\\c06d13c1-6075-4947-a36b-1398fcb0655f\\e4454eb7-97ca-4969-b482-9f77630f632a\\30a202b1-29bd-4348-8615-ff724c1f4c81\\ad867b57-5661-45c7-8001-601917fb7065\\4264ff38-b920-478b-9026-2fa71be8a38c\\3fa72a5b-42c4-45cf-a588-e1aa0d232778\\8da90034-822e-497b-aea2-45265639f6ee\\a0643eff-8dda-45ef-8cb7-5be6caf7b7f1\\876fb43e-515c-48cb-929d-97501377373a\\523bdf5e-428e-4311-88cc-cac9feba825f\\c690bf76-349c-4b0e-b95a-e54ad6813d66\\a007e243-3774-4622-9d83-57ca51b79333\\fc243b7d-39ee-4931-82ad-1103a2b20c03\\845e9770-2232-400e-953f-531d3ab7eb3b\\bd77450e-06c7-4c91-8bd7-9b9428c45a6f\\a027aa85-a26f-467b-970d-1eedc30ed30f\\165dc8b7-b763-4f72-8124-39b7ae75d535\\851e8f69-6acc-4531-9d18-c19572e9a05f\\7f6322b5-a451-4d5f-b9c0-a491c81c1039\\68071a7b-b560-4e28-b231-e03ae9628077\\df56f560-a124-4eae-aabb-076c3ba2dbc3\\a7016c01-9ab4-4e74-81b8-7ba333f4a376\\177d5aba-138e-4a13-9d2f-4172e3dad59e\\6d431135-665c-483e-a218-4f5f424b561f\\969ce57c-0a88-4a70-9d95-a332fc85d960\\20f86d36-4403-4a2d-975f-c0009a649ef0\\19c601ee-dce3-4451-b5d8-4ed464df56e2\\870b4c3b-b990-4451-a05e-b9f18eb408df\\4d9bdef9-e8f3-4915-9f0a-aacb5dfcb147\\b52e6025-f174-4363-88b4-cd08079e5b32\\35df4c20-0119-4f03-90b4-517adb121ac9'.\r at System.IO.Win32FileSystem.CreateDirectory(String fullPath)\r at System.IO.Tests.DirectoryInfo_Create.Create(String path)\r at System.IO.Tests.Directory_CreateDirectory.<>c__DisplayClass20_0.b__1()\r at Xunit.Assert.RecordException(Func`1 testCode) Stack Trace: at System.IO.Tests.Directory_CreateDirectory.DirectoryLongerThanMaxLongPath_ThrowsPathTooLongException() Build : Master - 20170326.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - x86-Release - x86-Debug - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170326.03/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Create~2FDirectoryLongerThanMaxLongPath_ThrowsPathTooLongException +17537 area-System.Net Test failure: System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest/HttpClient_ClientUsesAuxRecord_Ok Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest/HttpClient_ClientUsesAuxRecord_Ok` has failed. System.TimeoutException : The operation has timed out. Stack Trace: at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170326.03 (Core Tests) Failing configurations: - Windows.7.Amd64 - x86-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170326.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.SchSendAuxRecordHttpTest~2FHttpClient_ClientUsesAuxRecord_Ok +17538 area-System.Numerics Test failure: System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests Opened on behalf of @Jiayili1 The test `System.Numerics.Tests.cast_fromTest/RunDoubleExplicitCastFromLargeBigIntegerTests` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.Numerics.BigInteger..ctor(UInt32[] value, Boolean negative) at System.Numerics.BigInteger.op_LeftShift(BigInteger value, Int32 shift) at System.Numerics.Tests.cast_fromTest.DoubleExplicitCastFromLargeBigIntegerTests(Int32 startShift, Int32 bigShiftLoopLimit, Int32 smallShift, Int32 smallShiftLoopLimit) at System.Numerics.Tests.cast_fromTest.RunDoubleExplicitCastFromLargeBigIntegerTests() Build : Master - 20170326.03 (Core Tests) Failing configurations: - Windows.81.Amd64 - x86-Release - x86-Debug - Windows.7.Amd64 - x86-Release - x86-Debug - Windows.10.Amd64 - x86-Debug - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170326.03/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.cast_fromTest~2FRunDoubleExplicitCastFromLargeBigIntegerTests +17541 area-Infrastructure [ARM/CI] Set default CI job and change docker image - Set default CI job: dotnet/core-setup#790 - Chnage docker image newer +17542 area-Infrastructure [ARM32/Linux] Native build failure build command: ./build-native.sh -release -buildArch=arm -- cross clang3.9 ``` loading initial cache file /nfs/rbp3/corefx/src/Native/Unix/../../../cross/arm/tryrun.cmake -- The C compiler identification is Clang 3.9.1 -- The CXX compiler identification is Clang 3.9.1 -- Check for working C compiler: /usr/bin/clang-3.9 -- Check for working C compiler: /usr/bin/clang-3.9 -- works ..... -- Performing Test HAVE_CLOCK_REALTIME CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately: HAVE_CLOCK_REALTIME_EXITCODE (advanced) For details see /nfs/rbp3/corefx/bin/obj/Linux.arm.Release/native/TryRunResults.cmake -- Performing Test HAVE_CLOCK_REALTIME - Failed ...... Failed to generate native component build project! ``` It seems related to #17484 +17544 area-Meta change link for up-for-grabs issues Proposed fix for #17533 +17545 area-System.Diagnostics "System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents failed in CI with ""System.ComponentModel.Win32Exception""" Failed test: System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents Configuration: OuterLoop_Fedora23_release (build#147) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_fedora23_release/147/consoleText ~~~ System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents(enable: True) [FAIL] System.ComponentModel.Win32Exception : No such process Stack Trace: command exited with ExitCode: 0 /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_release/src/System.IO.MemoryMappedFiles/tests/Performance Finished running tests. End time=18:56:36. Return value was 0 /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_release/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs(58,0): at System.Diagnostics.Process.Kill() /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_release/src/System.Diagnostics.Process/tests/ProcessTestBase.cs(76,0): at System.Diagnostics.Tests.ProcessTestBase.StartSleepKillWait(Process p) /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_fedora23_release/src/System.Diagnostics.Process/tests/ProcessTests.cs(117,0): at System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents(Nullable`1 enable) ~~~ +17547 area-System.Linq Remove some unreachable branches from S.L.Expressions Or if the branch is an unreachable default case, throw `Unreachable` rather than any other exception. All cases where rules in the expression factories make paths in the compiler impossible. +17550 area-System.Linq System.Linq.Expressions.Tests.CompilerTests.CompileDeepTree_NoStackOverflowFast overflows stack with Checked CoreCLR build CompilerTests.CompileDeepTree_NoStackOverflowFast overflows the stack with Checked (and presumably Debug) builds of CoreCLR. See [comment](https://github.com/dotnet/coreclr/pull/10445#issuecomment-289228613). This makes it problematic for us to use CoreFx tests to validate CoreCLR. Is it reasonable to reduce the complexity of the test so that it fits on the stack regardless of runtime build type? If not, can you recommend an attribute to tag this test so we can disable it in CoreCLR runs? **Repro** (Windows, from dotnet/coreclr repo!) ``` build x64 checked skiptests python tests\scripts\run-corefx-tests.py -build_type Checked ``` (There are likely simpler repro steps that can be distilled from the operation of `run-corefx-tests.py`, but those are left as an exercise for the reader.) +17551 area-System.Net Add more logging to CancelConnectAsync tests And temporarily re-enable them to try to suss out the causes of the failures. cc: @steveharter https://github.com/dotnet/corefx/issues/16765 +17553 area-System.Net Fix test to bind UdpClient to any instead of loopback Closes https://github.com/dotnet/corefx/issues/17421 cc: @steveharter +17554 area-Infrastructure Fix clrcompression testhost path cc: @AlexGhiondea @weshaggard When submitting #17509 PR I didn't add configuration to the path where we are dumping clrcompression, so I'm fixing that with this PR. +17555 area-Serialization Issues with the embedded .rd.xml files in the XML space "When I ran XmlSerializer tests on uapaot, I found that sg.exe wasn't used by ilc.exe. @vitek-karas found the root cause was that we didn't have correct .rd.xml embedded in System.Private.Xml.dll, > The problem is that analysis doesn’t recognize any type as needing XML serialization. Analysis in this case is driven by .rd.xml annotations. > >In the existing (ProjectN) System.Xml.XmlSerializer.dll there’s this piece of XML in the embedded .rd.xml: > ```xml ``` > This tells analysis that the T in XmlSerializer.ctor call is the type which will need XML serialization. > > The embedded .rd.xml the new (in your test) System.Xml.XmlSerializer.dll or System.Private.Xml.dll doesn’t contain anything like the above. So from analysis’ point of view, there are no types which need XML serialization (as it doesn’t see any entrypoint into the XML serialization stack). @vitek-karas also found a few other issues with the embedded .rd.xml files in the XML space, > System.Xml.XmlSerializer: > - The name of the resource is probably off (I don’t think it matters for the compiler, but it’s confusing for humans): System.Xml.XmlSerializer.System.Private.Xml.rd.xml > - The XML itself in the .rd.xml is not a valid .rd.xml: It’s missing Library and possibly also Assembly elements. This causes warnings during ILC and the .rd.xml is not processed (so effectively ignored). > > System.Private.Xml: > - The .rd.xml talks about assembly System.Xml which is just a façade, so it’s effectively ignored by the compiler. Also the directives would not apply to the code we wanted them to. It should refer to System.Private.Xml instead. This also issues a warning during ILC. " +17557 area-System.Xml Issue with the rd.xml embedded by System.Private.Xml.Linq @vitek-karas found the following issue with the rd.xml used by System.Private.Xml.Linq > The .rd.xml talks about System.Xml.Linq, instead of System.Private.Xml.Linq, which is just a façade, so it’s effectively ignored by the compiler. Also the directives would not apply to the code we wanted them to. It should refer to System.Private.Xml.Linq instead. This also issues warnings during ILC. ``` System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(9-9): warning : ILTransform : warning ILT0027: Type 'System.Linq.Expressions.Microsoft.CSharp.RuntimeBinder.R untimeBinderException' could not be found. System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(10-10): warning : ILTransform : warning ILT0027: Type 'System.Linq.Expressions.System.Linq.Expressions.Expres sionCreator<>' could not be found. System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(10-10): warning : ILTransform : warning ILT0027: Type 'System.Linq.Expressions.System.Linq.Expressions.Expres sionCreator>' could not be found. System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(11-11): warning : ILTransform : warning ILT0027: Type 'System.Linq.Expressions.System.Runtime.CompilerService s.CallSite<>' could not be found. System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(11-11): warning : ILTransform : warning ILT0027: Type 'System.Linq.Expressions.System.Runtime.CompilerService s.CallSite>' could not be found. System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(12-12): warning : ILTransform : warning ILT0027: Type 'System.Linq.Expressions.System.Runtime.CompilerService s.CallSiteOps' could not be found. System.Xml.Resources.System.Private.Xml.Linq.rd.xml(4-4): warning : ILTransform : warning ILT0027: Assembly name 'System.Xml.Linq' failed to bind. ``` +17558 area-System.Net HttpClient GetAsync - The server returned an invalid or unrecognized response "**Version** - .Net Core 1.0.1 **OS** - CENT OS.7 64 bit / Azure **Curl version** ```curl curl 7.53.1 (x86_64-pc-linux-gnu) libcurl/7.53.1 OpenSSL/1.0.1e zlib/1.2.7 Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets HTTPS-proxy ``` When I make a request to http://www.pma.org/home/default.asp? URL I get the following error in my .Net Core App. However, If I make the request using Curl works fine. ```csharp System.Net.Http.HttpRequestException: The server returned an invalid or unrecognized response. at System.Net.Http.CurlResponseHeaderReader.ReadHeader(String& headerName, String& headerValue) at System.Net.Http.CurlHandler.MultiAgent.CurlReceiveHeadersCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at hwapp.Program.d__1.MoveNext() ``` **Sample code** ```csharp try { using (var client = new HttpClient()) { client.DefaultRequestHeaders.TryAddWithoutValidation(""Accept"", ""text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8""); client.DefaultRequestHeaders.TryAddWithoutValidation(""User-Agent"", ""Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36""); var result = client.GetAsync(""http://www.pma.org/home/default.asp?"").GetAwaiter().GetResult(); Console.WriteLine(result.StatusCode.ToString()); } } catch (Exception exception) { Console.WriteLine(exception.ToString()); } ``` **Curl request** ```html curl -I http://www.pma.org/home/default.asp? ``` **Curl response** ```html HTTP/1.1 200 OK Date: Mon, 27 Mar 2017 17:30:18 GMT Cache-Control no-cache: Content-Length: 52904 Content-Type: text/html Set-Cookie: BadIP=False; path=/ Set-Cookie: ASPSESSIONIDSSBBABDD=MKLKBPNDEHNNILAPDDBFGMML; path=/ Cache-control: private X-FRAME-OPTIONS: SAMEORIGIN Set-Cookie: BNES_BadIP=teIjVVdWBFXCMdVefZ8/VmOmIVKTmEJMKu74WIqHbXLL4Pb07YvoIqBkWdnZ+637; path=/ Set-Cookie: BNES_ASPSESSIONIDSSBBABDD=7twirxWeZB93d7p1vpjt0+EHI3recOI89u/w/4G0RaMDPdVQqDKsBJTzSFFHOynq22QKkNkv83C/5Le/uFbY2T5MTuFzFeVQkk1A6A+oXvg=; path=/ ``` What's the problem? " +17559 area-System.Diagnostics System.Diagnostics.Tracing.EventSource EventAttribute does not have a Channel property. Hitting an issue when trying to use EventSource as an interface to the Event Log, where Channel property support is not implemented. > Exception thrown: 'System.Reflection.MissingMetadataException' in System.Diagnostics.Tracing.dll > > Additional information: Reflection_InsufficientMetadata_EdbNeeded: System.Diagnostics.Tracing.EventAttribute. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 From discussion with @vancem and others on the team: > Your usage case has taken us by surprise. Originally EventSource on .NET Native was pruned to remove channel support. Indeed it was only because of a what amounts to a bug (reference assemblies were updated for harmonization (it was important that the API be the same across all our platforms), but the implementation was not turned on, and testing was not done). This is why it compiles but fails at runtime. Obviously this is a bug in the .NET Native runtime/toolchain. > > It looks like you are really trying to use EventSource not to log windows Asimov-style telemetry but as an interface to the EventLog (which we did not think was an interesting scenario for .NET Native). > > It is probably not hard to fix (there are probably some #ifdefs that need to be adjusted and tests need to be turned on). However it would require an updated runtime/toolchain, so that does not help you in the very short term. > > I think in the very short term(until we fix the runtime/toolchain and you pick up a new toolchain), you have to stick with Microsoft.Diagnostics.Tracing.EventSource (but what I said before is still true, we don’t like people to do this and it really is not supported). We are using the Microsoft.Diagnostics.Tracing NuGet package in the meantime, but we want to remove it to use System.Diagnostics as soon as possible. The NuGet package is outdated and inflating our dll. Let me know of any other details needed to debug this issue. Thanks for the help, James +17560 area-System.Net Add test for HttpClient handling of trailer headers Contributes to https://github.com/dotnet/corefx/issues/17174 Adding a test for trailers. This fails right now on unix due to a libcurl bug: https://github.com/curl/curl/issues/1354. A fix is in the works for that, and I confirmed that building a libcurl with that fix and using it allows these tests of HttpClient to pass. cc: @Priya91, @Drawaes +17561 area-System.Linq Use Error.OnlyStaticMethodsHaveNullInstance in S.L.E Rather than creating the `ArgumentException` directly. The Error class's form takes no parameter name, but since all cases are a mismatch between two arguments rather than one of the arguments being incorrect in itself, this is probably better. +17562 area-System.Linq Remove ExpressionNotSupportedForType error from S.L.Expressions Every callsite is demonstrably unreachable. Use `ContractUtils.Unreachable` instead. +17563 area-System.Linq Remove redundant overrides in S.L.Expression instructions. Either completely duplicates what the base class does or add a tiny micro-opt **and** are only used in debug situations and hence that micro-opt is particularly hard to justify +17564 area-System.Net Backporting HttpClient instrumentation with DiagnosticSource to netstandard1.3 I have previously implemented changes that changes `HttpClientHandler` logging with `DiagnosticsSource` #16393. Now instrumentation is only available with netcoreapp2.0 since System.Net.Http [targets](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System.Net.Http.csproj) netcoreapp2.0 only among CoreFx targets. Would like to use this instrumentation in the existing project that target netstandard1.3 and higher (assuming they can take a dependency on a new System.Net.Http package). Are there any problems with enabling netstandard1.3 target for System.Net.Http and publishing new nuget? Were there any changes in public API that would not make it compatible? +17567 area-System.Net Fix Http Unit tests for NETFX build Change the CSPROJ so that Http Unit tests now build and run successfully. i.e.: >Msbuild /t:rebuildandtest /p:TargetGroup=netfx now works in the src/System.Net.Http/tests/UnitTests folder +17568 area-System.Net Fix Http Unit tests for NETFX build Change the CSPROJ so that Http Unit tests now build and run successfully. i.e.: >Msbuild /t:rebuildandtest /p:TargetGroup=netfx now works in the src/System.Net.Http/tests/UnitTests folder +17569 area-System.Net Cookie* missing from UWP The problem is this, which needs to be resolved now that we need these types in UWP (they're part of standard) This is the only API that's actually missing from the System.Net namespace (functionality is another thing) ``` // The uap #define is used in some source files to indicate we are compiling classes // directly into the UWP System.Net.Http.dll implementation assembly in order to use internal class // methods. Internal methods are needed in order to map cookie response headers from the WinRT Windows.Web.Http APIs. // Windows.Web.Http is used underneath the System.Net.Http classes on .NET Native. Having other similarly // named classes would normally conflict with the public System.Net namespace classes. // So, we need to move the classes to a different namespace. Those classes are never // exposed up to user code so there isn't a problem. In the future, we might expose some of the internal methods // as new public APIs and then we can remove this duplicate source code inclusion in the binaries. #if uap namespace System.Net.Internal #else namespace System.Net #endif { ``` ![image](https://cloud.githubusercontent.com/assets/6385855/24376412/a78a26de-12f0-11e7-81b5-af6b29643b75.png) +17570 area-System.Runtime Expose and use static ExceptionDispatchInfo.Throw Fixes #16896 Depends on https://github.com/dotnet/corert/pull/3115 +17572 area-System.Net Adding ObsoleteAttribute to SSL for ServicePointManager Adding ObsoleteAttribute to SSL for ServicePointManager's SecurityProtocolType. Fixes #13922 +17573 area-Infrastructure "Add ""mono"" configuration" "This configuration will ease the integration of corefx sources into mono. The plan, discussed with @weshaggard, is to have this configuration where we compile all sources used by https://github.com/mono/mono/ in a ""one assembly for all platforms"" manner." +17574 area-System.Net Fix native error handling on Linux during host name resolution "This fixes native error handling when calling the POSIX method gethostbyaddr_r, preventing seg faults and other issues. This was found when attempting to debug issue https://github.com/dotnet/corefx/issues/17177. A POSIX test on Ubuntu shows that gethostbyaddr_r can return 0 (success) even for host names that are not resolved. A similar test was added in this PR that seg faults on Ubuntu (the one with host name of ""fkdsfsjfsrH:"") before the fix here. The return value for gethostbyaddr_r appears to be primarily designed for retry logic, not for all errors. Instead the last argument should be checked. The Ubuntu man pages are not complete\correct here. Also changed gethostbyname_r since it follows the same pattern. cc @CIPop @davidsh" +17575 area-Serialization Desktop throws a TypeLoadException when `StreamingContext` is a typeforward to mscorlib and using any of the serialization event attributes If an assembly is built against netstandard and run it against netfx (desktop) and it has a type marked as Serialized and this types have any of the event methods that use either `OnDeserializedAttribute`, `OnSerializingAttribute`, `OnSerializedAttribute`, and `OnDeserializingAttribute` it would throw an exception like this one: ``` Type in assembly has method with an incorrect signature for the serialization attribute that it is decorated with ``` This would happen even if the method follows the guidelines stated in the msdn documentation: > To use the OnSerializingAttribute, the method must contain a StreamingContext parameter. We are currently hitting this issue on the `System.Runtime.Serialization.Formatters.Tests` that have a type with this characteristics ([source code](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Serialization.Formatters/tests/SerializationTypes.cs#L321-L342)) when the test is built against netstandard and we run it against netfx. After investigating with @weshaggard he found out that there a bug in the `methodtablebuilder.cpp` when verifying the signature for this method (requiring a `StreamingContext` parameter) it doesn't follow the typeforwards correctly on the case it was defined on a shim like in the case of netstandard that is a typeforward to mscorlib so it throws an exception that the method signature is bad. cc: @jkotas @stephentoub +17576 area-System.Runtime Version_MatchesFixedVersion test failed in CI ``` System.Tests.EnvironmentTests.Version_MatchesFixedVersion [FAIL] FileCleanupTestBase failed to create C:\Users\someuser\AppData\Local\Temp\EnvironmentTests_k3c3hzza.ga3 due to System.UnauthorizedAccessException: Access to the path 'C:\Users\someuser\AppData\Local\Temp\EnvironmentTests_k3c3hzza.ga3' is denied. at System.IO.Win32FileSystem.CreateDirectory(String fullPath) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 169 at System.IO.Directory.CreateDirectory(String path) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 51 at System.IO.FileCleanupTestBase..ctor() in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\IO\FileCleanupTestBase.cs:line 24 Expected: True Actual: False Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\IO\FileCleanupTestBase.cs(28,0): at System.IO.FileCleanupTestBase..ctor() at System.Diagnostics.RemoteExecutorTestBase..ctor() at System.Tests.EnvironmentTests..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) ``` +17577 area-System.Data SqlClient: Command execution failures when using Packet Size = 16388 with Encryption When setting the packet size to 16388 or higher while using encryption, command execution fails. This issue is present with both managed and native SNI, and with TCP & NP. Failures also happen with sync & async command execution. With native SNI: System.Data.SqlClient.SqlException : A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.) ---- System.ComponentModel.Win32Exception : The specified network name is no longer available With managed SNI: System.Data.SqlClient.SqlException : A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 35 - An internal exception was caught) ---- System.IO.IOException : Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. -------- System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host CC @saurabh500 @geleems +17578 area-System.Runtime Add netfx configuration to System.Runtime.Serialization.Formatters.Tests See: #17575 cc: @weshaggard +17579 area-Serialization Create a project for serialization generator tool +17580 area-Serialization Support SGEN in core Add SGEN function on the project @17579 +17581 area-Infrastructure build -Outerloop passes without running any tests To repro in the master branch: ``` clean -all && build -Outerloop ``` Expected: Based on `build -?` documentation: Builds source and tests; executes the outerloop tests: ```[-Outerloop] Enables outerloops tests scenarios. => Default value: true => Legal values: [True, False]. ``` Actual: Builds `\src` (and `\pkg`?). Will not build (or run) anything under `\test`. +17582 area-Serialization Investigate the possibility to port the serialization desktop tests into core +17583 area-Infrastructure "build-tests -outerloop fails after clean -all: ""The target ""GetBuildConfigurations"" does not exist in the project""" "Running `clean -all & build-tests` will fail with ""The target ""GetBuildConfigurations"" does not exist in the project."" To work-around use `clean -all & build & build-tests`." +17585 area-Infrastructure Restore UAP test tools via a package from internal feed. /cc @weshaggard @joperezr @MattGal +17586 area-System.Reflection Add netfx build configuration for System.Reflection.DispatchProxy Add netfx build configuration so that we can actually run the tests in Desktop. Without this we were getting a runtime exception that it wouldn't find the reference assembly. cc: @weshaggard @tarekgh +17587 area-Serialization "Revert ""Fix TypeScope.GetEnumeratorElementType.""" Reverts dotnet/corefx#17448 as it could potentially be a large size regression for UWP apps. /cc: @morganbr +17588 area-Infrastructure Add baselines strictly against netstandard.dll Current baselines in src\shims compare {netstandard + all contracts built out of corefx for netstandard} vs. {all implementation for targetgroup} It’s doing this because we want all our netstandard compliant libraries (like hopefully just about all netstandard compliant libraries) to work on the target. This adds a 2nd baseline, that is only of the netstandard surface area itself. It would only be for prioritization: we need to clear out both baselines. @weshaggard @joperezr @joshfree +17589 area-System.Net HttpClient doesn't open the connection to the server "My Code is below: ```c# [Fact] public void AsyncDirect() { Stopwatch sw = new Stopwatch(); sw.Start(); List tasks = new List(); for(int i = 0; i < 10; i++) { //Thread.Sleep(50); var ts = Task.Run(() => BaiduTest()); tasks.Add(ts); } Task.WaitAll(tasks.ToArray()); sw.Stop(); Debug.WriteLine($""ASyncDirect cost:{sw.ElapsedMilliseconds}ms""); } [Fact] private void BaiduTest() { Stopwatch sw = new Stopwatch(); sw.Start(); HttpClientHandler handler = new HttpClientHandler(); //handler.SendTimeout = TimeSpan.FromSeconds(60); handler.MaxConnectionsPerServer = 50; using (HttpClient client = new HttpClient(handler)) { byte[] byteContent = new byte[0]; ByteArrayContent content = new ByteArrayContent(byteContent); var response = client.PostAsync(""http://baidu.com"", null).GetAwaiter().GetResult(); response.EnsureSuccessStatusCode(); var responseStream = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); } handler.Dispose(); sw.Stop(); Debug.WriteLine($""single cost:{sw.ElapsedMilliseconds}""); } ``` if excute 3times is ok,but over 3 times is very slow." +17591 area-System.Net Test failure: System.Net.Http.Functional.Tests.CancellationTest/ReadAsStreamAsync_ReadAsync_Cancel_BodyNeverStarted_TaskCanceledQuickly Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.CancellationTest/ReadAsStreamAsync_ReadAsync_Cancel_BodyNeverStarted_TaskCanceledQuickly` has failed. Elapsed time should be short\r Expected: True\r Actual: False Stack Trace: at System.Net.Http.Functional.Tests.CancellationTest.<>c__DisplayClass4_2.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.CancellationTest.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170328.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - x86-Debug - Windows.7.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170328.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.CancellationTest~2FReadAsStreamAsync_ReadAsync_Cancel_BodyNeverStarted_TaskCanceledQuickly +17593 area-System.IO "Some IO tests not run on Unix due to ""Condition(s) not met: \""IsNotWindowsNanoServer\""""" "` System.IO.FileSystem.Tests xunit System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo/ValidFileOptions` is being skipped because `""Condition(s) not met: \""IsNotWindowsNanoServer\""""` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170328.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.FileStream_ctor_str_fm_fa_fs_buffer_fo~2FValidFileOptions test is adorned with ` [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))]` ```c# public static partial class PlatformDetection { public static bool IsWindows { get; } = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); public static bool IsNotWindowsNanoServer { get; } = (IsWindows && File.Exists(Path.Combine(Environment.GetEnvironmentVariable(""windir""), ""regedit.exe""))); ``` Not clear to me why this isn't working." +17594 area-Meta Update up-for-grabs label Contributes to #17533 +17595 area-System.IO Test tweaks Fixes https://github.com/dotnet/corefx/issues/17593 Logging for https://github.com/dotnet/corefx/issues/17591 @mellinoe +17596 area-System.Security Remove some if !uap's Remove some #if !uap's in S.S.Crypto to bring back some API to uap. @bartonjs I do not know why these were originally if'defed long ago, but the build succeeds. do you know why? is it ok to submit this? +17599 area-System.Security Increased code coverage for SymmetricKeyWrap from 54% to 100% Added tests for System.Security.Cryptography.Xml.SymmetricKeyWrap. Overall code coverage for System.Security.Cryptography.Xml increased from 63% to 64.4%. Part of #16829 +17601 area-Infrastructure [Linux/x86] Change to use official docker image for CI build #17182 https://github.com/dotnet/corefx/pull/17182#discussion_r106488967 We are using temporary private docker image for linux/x86 CI build. We need to change it to official one when that is ready to use. @gkhanna79 @mellinoe +17603 area-System.Reflection Omissions in types supported by both Desktop and Core - System.Reflection.Emit Adjustments for a few reflection emit classes to correctly inherit from System.Reflection.TypeInfo. For more info see here: https://github.com/dotnet/corefx/issues/15255#issuecomment-289550875 ``` System.Reflection.Emit.EnumBuilder System.Reflection.Emit.GenericTypeParameterBuilder System.Reflection.Emit.TypeBuilder ``` +17604 area-System.Security Omissions in types supported by both Desktop and Core - System.Security.AccessControl.AuthorizationRuleCollection Adjustments for System.Security.AccessControl.AuthorizationRuleCollection to correctly inherit from System.Collections.NonGeneric.ReadOnlyCollectionBase. For more info see here: https://github.com/dotnet/corefx/issues/15255#issuecomment-289550875 +17605 area-Microsoft.CSharp Refactor Name, NameManager, NameTable in Microsoft.CSharp * Upper-case exposed fields. * Merge `NameManager.GetPredefName` and `NameManager.GetPredefinedName` * Initialise `s_knownNames` with static field initialiser. Always going to be initialised, so lazy-loading doesn't add anything. * Null-coalesce and simplify ctor. * Make `GetPredefinedName()` static. Remove some passing of `NameManager` instances no longer necessary. * Remove `SymbolTable.GetName(string, NameManager)` Exists to do`Lookup` and then `Add` if necessary, but `Add` already contains lookup that returns already-existing if available, so no benefit. * Autoproperty in `Name`s * Remove `_hashCodeRandomizer`. Is not in use (always zero), anything that can control input can likely do much worse than hash-DoS. * Partial-string lookup. Allow lookup on a string and a length within that string, so that it need not be split unless no match is found. * Widen assertion on adding predefined name. Assertion assumes the mechanism works correctly while it can check all entries in the array to catch both duplicates and anything hiding duplicates. It can also do so in a single debug-only expression. * Include empty string in known names. Used for root namespace in every `RuntimeBinder` instance, so should be predefined. * Remove `KnownName` class Added property is never actually used, so don't have it. `Name` can now be sealed. * Merge two lists of known names together, and move remaining code into `NameManager`. * Make `NameTable` equality/hash methods static. +17606 area-Microsoft.CSharp Refactor EXPR classes. Convert GetXXX and SetXXX methods to auto-properties. Convert public fields to auto-properties. Rename to be PascalCase Restricted to cases that are individually simple. +17609 area-System.Data Omissions in types supported by both Desktop and Core - System.Data.SqlClient.SqlBulkCopyColumnMappingCollection Adjustments for System.Data.SqlClient.SqlBulkCopyColumnMappingCollection to correctly inherit from System.Collections.CollectionBase. For more info see here: https://github.com/dotnet/corefx/issues/15255#issuecomment-289550875 +17610 area-System.Runtime Retry create directory Fixes https://github.com/dotnet/corefx/issues/17576 @stephentoub Ideally we'd resolve whatever is causing this but I'm assuming it's not a product issue. Meantime, I want to get coverage from tests that haven't anything to do with creating directories. +17611 area-Infrastructure Non-shipping packages for .NET Core 2.0 This issue is tracking packages that we shouldn't make stable for the .NET Core 2.0 release. @ericstj do you have any suggestion for how to do this in code so we don't accidentally stabilize these? - System.Memory cc @ericstj @Petermarcu +17613 area-Infrastructure Update csproj and solutions configurations cc: @weshaggard @joperezr +17614 area-System.Runtime Environment.GetEnvironmentVariable returns garbage string if variable is set to empty string on Ubuntu 14.04 "When an environment variable is empty, but set (like `var=`), `GetEnvironmentVariable` will return various garbage values for that variable in Ubuntu 14.04 (tested in Docker). [Gist with Dockerfile and Program.cs to repro](https://gist.github.com/dagood/bce973c70021a010f70c2ec220c0f56a). (Dockerfile is based on the Core-Setup build infra, which is where this was encountered.) Just the execution: ``` RUN ~/.dotnet/dotnet run && \ var=asdf ~/.dotnet/dotnet run && \ var= ~/.dotnet/dotnet run ``` ```C# Console.WriteLine($""Var contains: '{Environment.GetEnvironmentVariable(""var"")}'""); ``` > Var contains: '' > Var contains: 'asdf' > Var contains: '즔翾' The project is using `Microsoft.NETCore.App` `1.1.1`. Issue probably tracking adding tests for this case: https://github.com/dotnet/corefx/issues/4406 /cc @AlexGhiondea " +17615 area-Serialization Create a Microsoft.XmlSerializer.Generator Project Create a Microsoft.XmlSerializer.Generator as a base project for SGen tool to be implemented. The project share the code with System.Private.Xml. And also move some codegen only code from system.private.xml to the new project. #17579 @weshaggard @zhenlan @mconnew @shmao +17616 area-Serialization Add messages for PNSE in Serialization "These PNSE are in Serialization code. Would you consider throwing up a PR that either adds a message or a comment to each? eg `throw new PlatformNotSupportedException(SR.PlatformNotSupported_ComInterop)` where the message is like `COM Interop is not supported on this platform.` Or if it’s something that’s not worth a specific resource, just a comment like this on the same line saves us digging up emails to remember why, and helps the next dev. eg `throw new PlatformNotSupportedException(); // Not supported on Unix because NTLM is rarely used on Unix` The message will help users (and perhaps help support). The comment at least documents the reason for the future devs and anyone checking we've implemented everything. I've been slowly going through the tree adding these or other folks have been. ``` C:\git\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\SchemaExporter.cs: 29: throw new PlatformNotSupportedException(); C:\git\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContextComplex.cs: 139: throw new PlatformNotSupportedException(); C:\git\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XsdDataContractExporter.cs: 43: throw new PlatformNotSupportedException(""SchemaImporter""); 61: throw new PlatformNotSupportedException(); C:\git\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryReader.cs: 154: throw new PlatformNotSupportedException(); 178: throw new PlatformNotSupportedException(); C:\git\corefx\src\System.Private.DataContractSerialization\src\System\Xml\XmlDictionaryWriter.cs: 69: throw new PlatformNotSupportedException(); C:\git\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryUtilClasses.cs: 412: throw new PlatformNotSupportedException(); ```" +17618 area-System.Net Disable System.Web.Tests.HttpUtilityTest for NETFX fixes: #13254 cc: @ianhays @tarekgh +17619 area-Meta Announcement: Driving towards zero 2.0 bugs by May 10 (ZBB) "As we are getting closer to .NET Core 2.0 Preview and .NET Standard 2.0 Preview [ship dates](https://github.com/dotnet/core/blob/master/roadmap.md#ship-dates), we would like to **drive [2.0.0 bugs](https://github.com/dotnet/corefx/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20milestone%3A2.0.0) down to 0 by May 10** (see [milestone details](https://github.com/dotnet/corefx/milestone/4)) = ZBB (zero bug bounce) date. We would like to encourage and ask our contributors to help us drive towards that goal. **Be part of .NET Core 2.0 release!** How can you, the CoreFX contributors, help? 1. If you're picking up issues to work on, **prefer issues marked as [2.0.0 bugs](https://github.com/dotnet/corefx/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20milestone%3A2.0.0)** (some are even [up-for-grabs](https://github.com/dotnet/corefx/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20milestone%3A2.0.0%20label%3Aup-for-grabs)). 2. If you spot something in [Future](https://github.com/dotnet/corefx/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20milestone%3AFuture) milestone that should be part of 2.0, please say so and explain why (loop in @karelz). Conversely if there's something in 2.0 that perhaps is not as significant as it seems. * We strive to deliver high-quality product, so **impactful bugs, compatibility, reliability and performance issues** are top priority. Migration to .NET Core 2.0 from .NET Core 1.1 or from .NET Framework is one of the key priorities. * Adding additional new APIs, fixing pre-existing bugs or fixing corner-case issues with lower impact and with existing workaround is lower priority, not tracked as 2.0. 3. Issues with [no milestone](https://github.com/dotnet/corefx/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20no%3Amilestone) - we expect to set their milestone in upcoming weeks (part of ongoing ""triage""), so if you see something must-have for 2.0 there, please say so and explain why (loop in @karelz). 4. Watch for upcoming official preview announcements (on [.NET blog](https://blogs.msdn.microsoft.com/dotnet/) or on [dotnet/Announcements repo](https://github.com/dotnet/announcements)) to help validate and dogfood the end-to-end .NET Core 2.0 experience before final release. * Note: You can dogfood even our daily builds - see [dogfooding steps](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/dogfooding.md) Not surprisingly, to deliver overall end-to-end .NET Core 2.0 experience, similar ZBB efforts happen in our sister repos like [CoreCLR](https://github.com/dotnet/coreclr), [core-setup](https://github.com/dotnet/core-setup), etc. - we will welcome help in those as well, if you're interested. Twitter announcement: https://twitter.com/ziki_cz/status/846839252629385216" +17621 area-System.Net System.Net.Http.FunctionalTests show a debug assert window in desktop The following tests marked as Outerloop show a debug assert window when running in desktop: * System.Net.Http.Functional.Tests.PostScenarioTest.PostRewindableContentUsingAuth_NoPreAuthenticate_Success * System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingNoSpecifiedSemantics_UsesChunkedSemantics * System.Net.Http.Functional.Tests.PostScenarioTest.PostNonRewindableContentUsingAuth_NoPreAuthenticate_ThrowsInvalidOperationException They seem to fail on the same Assert. cc: @davidsh +17622 area-System.IO Disallow FileMode.Truncate in MMF.CreateFromFile Using CreateFromFile on netfx with FileMode.Truncate always results in an ArgumentException whereas in netcoreapp we allow it. It seems like a sort of unintended consequence of the removal of the reliance on the FileSystremRights FileStream constructor. The ArgumentException from FileMode.Truncate was coming from that constructor where it asserts that FileMode.Truncate requires FileSystemRights.Write, but we were only passing FileSystemRights.WriteData. I'm fixing netcore to have the same behavior as netfx, except that the ArgumentException message will be more helpful and it will also have a parameterName. Tests are also updated. found while investigating https://github.com/dotnet/corefx/issues/10895 @stephentoub +17623 area-System.Net Disable some System.Net.Http.Functional outerloop tests for desktop See: #17621 Since this tests show an assert window they would hang if we run them either on Helix or Jenkins since the assert failure needs to be aborted. So I'm disabling them to have a clean run. cc: @davidsh @stephentoub +17624 area-Infrastructure Add portable build definitions skip ci please @weshaggard PTAL +17625 area-System.IO Fix some MMF tests to work on netfx NetFX uses the FileStream constructor that takes a FileSystemRights. This allows it to work in a few situations that throw UnauthorizedAccessExceptions in netcoreapp on Windows. This PR modifies the tests to accomodate netfx. resolves https://github.com/dotnet/corefx/issues/10895 +17626 area-System.Diagnostics Make Activity Class never thow exceptions to any callers Instead it throws and immeidately catches the exceptions. That way callers don't need to bother. We throw and catch so the exception show up in debuggers and monitors. +17627 area-System.Net [Netfx]: HttpUtility.UrlDecodeToBytes doesn't decode correctly when having a UTF8 encoded character. "In full framework `HttpUtility.UrlDecodeToBytes` when the string to decode has a UTF8 encoded character e.g (%u0061 -> a) it wouldn't decode it and would leave it as it is. Example ```cs string encoded = ""http://127.0.0.1:8080/appDir/page.aspx?foo=b%u0061r""; Console.WriteLine(Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(encoded, Encoding.UTF8))); ``` Would print out the same string and it should print: `""http://127.0.0.1:8080/appDir/page.aspx?foo=bar""` cc: @davidsh " +17629 area-System.Linq Enumerable methods with optimizations for IList<> should also optimize for IReadOnlyList<> Enumerable methods such as `Last()` contain [an optimization for `IList<>`](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Last.cs#L62). These methods should also optimize for `IReadOnlyList<>` +17631 area-System.Runtime Add regression test for https://github.com/dotnet/coreclr/pull/10352 +17632 area-Infrastructure [WIP] Add ILLink to trim dead code from corefx assemblies /cc @erozenfeld @sbomer +17633 area-Infrastructure Audit configurations of CoreFX packages We should probably do these two audits on packages in CoreFX: 1. If the refs has a netstandard configuration but the impl does not, satisfy ourselves that this is reasonable. For example if the impl is never going to work on anything but one platform, we might want to make the refs configuration platform specific. 1. If the impl has platform specific configurations, satisfy ourselves that they can't be replaced with netstandard configurations either trivially or with some minor change - extending the reach of the library. Particularly worth doing if the refs is netstandard, suggesting we think the impl is close. @weshaggard @ericstj @joperezr +17634 area-System.Security Add more SignedXml algorithms tests "Almost completely fixes https://github.com/dotnet/corefx/issues/16781 the only not tested transformation algorithm is: urn:mpeg:mpeg21:2003:01-REL-R-NS:licenseTransform"";" +17635 area-System.Data Adding updates to packages to update SqlClient in the 1.1.x release The changes enable the build of the service release for System.Data.SqlClient for release/1.1.0 branch of .Net Core. Verified locally by `build.cmd` at the root of the clone. Following is a structure of what was produced ``` F:\NETCORE\COREFX\BIN\PACKAGES\DEBUG | Microsoft.Private.PackageBaseline.1.0.1-servicing-25127-0.nupkg | System.Data.SqlClient.4.3.1-servicing-25127-0.nupkg | System.Diagnostics.DiagnosticSource.4.3.1-servicing-25127-0.nupkg | System.Net.Http.4.3.2-servicing-25127-0.nupkg | System.ValueTuple.4.3.1-servicing-25127-0.nupkg | +---reports | Microsoft.Private.PackageBaseline.json | System.Data.SqlClient.json | System.Diagnostics.DiagnosticSource.json | System.Net.Http.json | System.ValueTuple.json | +---specs | Microsoft.Private.PackageBaseline.nuspec | Microsoft.Private.PackageBaseline.nuspec.pkgpath | System.Data.SqlClient.nuspec | System.Data.SqlClient.nuspec.pkgpath | System.Diagnostics.DiagnosticSource.nuspec | System.Diagnostics.DiagnosticSource.nuspec.pkgpath | System.Net.Http.nuspec | System.Net.Http.nuspec.pkgpath | System.ValueTuple.nuspec | System.ValueTuple.nuspec.pkgpath | \---symbols System.Data.SqlClient.4.3.1-servicing-25127-0.symbols.nupkg System.Diagnostics.DiagnosticSource.4.3.1-servicing-25127-0.symbols.nupkg System.Net.Http.4.3.2-servicing-25127-0.symbols.nupkg System.ValueTuple.4.3.1-servicing-25127-0.symbols.nupkg ``` There is a System.Data.SqlClient.4.3.1-servicing-25127-0.nupkg package with the updated package version. Verified that the runtime DLL has the required changes that were meant to go into service release. +17636 area-System.Diagnostics Debug.Assert (or Contract.Assert) failure when running on Desktop will hang the test run When a `Contract.Assert` fails it seems we pop assert UI which hangs the entire test run https://github.com/dotnet/corefx/issues/17621 Note that `Debug.Assert` would have the same behavior in fact it's what's doing it. cc @safern +17638 area-System.Globalization Added Dutch Titlecasing Tests " Related to: - Issue: [dotnet/corefx#16770](https://github.com/dotnet/corefx/issues/16770) - Pull Request: [dotnet/corefx#10195](https://github.com/dotnet/coreclr/pull/10195) Added a series of tests to check the validity of recent changes to resolve a bug within the Titlecasing functionality for strings that began with ""IJ"" in Dutch cultures. CC: @tarekgh " +17639 area-System.Security Some types missed from System.Security.Permissions They seem to have been **arbitrarily** omitted from System.Security.Permissions.cs and we probably should have them as they're easy to stub. They aren't in Standard so in that sense we aren't obliged to add these and could add them out of band but some like FileIOPermissionAttribute have some significant usage (5+%) in some of our corpuses. Example, I tried to port Antlr3 and it failed because of FileIOPermissionAttribute. ``` 860: TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not exist in the implementation but it does exist in the contract. 863: TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageContainment' does not exist in the implementation but it does exist in the contract. 864: TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermission' does not exist in the implementation but it does exist in the contract. 865: TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not exist in the implementation but it does exist in the contract. 866: TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermission' does not exist in the implementation but it does exist in the contract. 867: TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not exist in the implementation but it does exist in the contract. 868: TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermission' does not exist in the implementation but it does exist in the contract. 869: TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntry' does not exist in the implementation but it does exist in the contract. 870: TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryCollection' does not exist in the implementation but it does exist in the contract. 871: TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryEnumerator' does not exist in the implementation but it does exist in the contract. 872: TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not exist in the implementation but it does exist in the contract. 873: TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionFlags' does not exist in the implementation but it does exist in the contract. 1164: TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBase' does not exist in the implementation but it does exist in the contract. 1165: TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBaseEntry' does not exist in the implementation but it does exist in the contract. 1166: TypesMustExist : Type 'System.Security.Permissions.StorePermission' does not exist in the implementation but it does exist in the contract. 1167: TypesMustExist : Type 'System.Security.Permissions.StorePermissionAttribute' does not exist in the implementation but it does exist in the contract. 1168: TypesMustExist : Type 'System.Security.Permissions.StorePermissionFlags' does not exist in the implementation but it does exist in the contract. 1169: TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not exist in the implementation but it does exist in the contract. ``` @ViktorHofer maybe you could stub these real fast using genapi? +17641 area-Microsoft.CSharp Remove cast and type-test extensions from Microsoft.CSharp A set of extensions allows for type-testing and casting of `Expr`-derived classes. Replacing calls to these with an actual cast is more idiomatic, and there are many cases where the C#7 `is` declarer works well, reducing the number of tests. This also reduces duplicate calls to these methods in many cases. This also changes access to members of some `Expr`-derived classes to go through a common interface or a virtual member, as those were cases where these type-testing methods were being used. +17642 area-System.Runtime Fix path to fx after move to shared fx installation to run tests PTAL @gkhanna79 fixes issue #15101 +17643 area-System.Globalization "Test failure: System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"".\"", CurrencyGroupSeparator ..." "Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"".\"", CurrencyGroupSeparator ...` has failed. Assert.Equal() Failure Expected: Int32[] [3, 2] Actual: Int32[] [3] Stack Trace: at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(NumberFormatInfo format, Int32[] expected) in /root/corefx/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSizes.cs:line 29 Build : Master - 20170329.01 (Core Tests) Failing configurations: - fedora.25.amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170329.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoNumberGroupSizes~2FNumberGroupSizes_Get(format:%20NumberFormatInfo%20%7B%20CurrencyDecimalDigits%20=%202,%20CurrencyDecimalSeparator%20=%20%5C%22.%5C%22,%20CurrencyGroupSeparator%20..." +17644 area-Infrastructure [WIP] Publish packages for netcoreapp remote testing This commit introduces two additional flags to publish remote testing packages: - BinPlaceNETCoreAppTests - BinPlaceNETCoreAppTestDependencies These options allow us to collect all the stubs for netcoreapp unittest from the following directories: - bin\pkg\netcoreapp\tests (for tests) - bin\pkg\netcoreapp\dependencies (for xunit framework) +17647 area-System.Net Bundle latest cURL with fixes we care about @karelz commented on [Tue Mar 28 2017](https://github.com/dotnet/coreclr/issues/10528) Here's interesting list: * Don't compile NSS version, it causes troubles - see https://github.com/dotnet/corefx/issues/16201 * cURL fix https://github.com/curl/curl/issues/1354 for https://github.com/dotnet/corefx/issues/17174 --- @stephentoub commented on [Tue Mar 28 2017](https://github.com/dotnet/coreclr/issues/10528#issuecomment-289860092) > Don't compile NSS version On Linux we always want to use a version based on OpenSSL. While we tolerate NSS and other backends, lots of features don't work when targeting those, e.g. custom handling of certificates, revocation checking, etc. --- @jkotas commented on [Wed Mar 29 2017](https://github.com/dotnet/coreclr/issues/10528#issuecomment-289959662) Why is this tracked in CoreCLR repo? --- @karelz commented on [Wed Mar 29 2017](https://github.com/dotnet/coreclr/issues/10528#issuecomment-289987914) I thought cURL bundling happens in CoreCLR -- @janvorli? If I am wrong, feel free to move it. --- @janvorli commented on [Wed Mar 29 2017](https://github.com/dotnet/coreclr/issues/10528#issuecomment-290013047) No, it will happen in corefx repo. I am sorry for not noticing before this issue was in coreclr. Moving to corefx. +17650 area-Microsoft.CSharp Don't create ExpressionEXPR just to unwrap it again. Several methods in `ExpressionTreeCallRewriter` that return `ExpressionEXPR` are called by both `VisitCALL` and `GetExpression`. The former return them directly while the latter unwraps the contained `Expression` again. Flip this, so that these methods return `Expression`s and they are only wrapped in `ExpressionEXPR` if necessary. Also rename `ExpressionEXPR` to `ExpressionExpr` and remove an override that just calls the base. +17652 area-System.Net Add some PNSE messages in System.Net.Sockets cc: @geoffkizer, @danmosemsft +17653 area-System.Net Avoid NullReferenceException in WinHttpWebSocketState.Dispose "Per issue https://github.com/dotnet/corefx/issues/16419 avoid referencing null _requestHandle field in WinHttpWebSocketState.Dispose. The test Abort_CloseAndAbort_Success may cause a race condition with _requestHandle and raise a NullReferenceException. The test does a CloseAsync followed by an Abort. Depending on timing, the Abort may come after or during the WinHttp callback triggered by the CloseAsync. ```c# Task t = cws.CloseAsync(WebSocketCloseStatus.NormalClosure, ""AbortClose"", ctsDefault.Token); cws.Abort(); await t; ``` cc @CIPop @davidsh " +17655 area-System.IO Revert MMF.CreateFromFile FileShare to None Reverting a purposeful change to the behavior of CreateFromFile for compat purposes. On netfx, we use FileShare.None for CreateFromFile calls, but on netcoreapp we use FileShare.Read. This means we won't be throwing exceptions for netcoreapp in a lot of cases where we would be in netfx. Reverts #6152 @stephentoub +17656 area-System.Collections Expose deconstruct api and add tests This is a pick up of the abandoned PR: #14621 The implementation went into corert and coreclr but the APIs where never exposed in the contract nor tests where added. Fixes: #13746 cc: @ianhays @stephentoub @danmosemsft +17657 area-System.IO Update IO test for new Wildcard chars This test has been disabled since the new Wildcard characters were allowed. This PR re-enables them and handles the new characters. source was modified in #8669. Tests were disabled in #11585. Resolves https://github.com/dotnet/corefx/issues/11584 cc: @JeremyKuhne +17659 area-System.IO Fix System.IO tests for netfx "On my local run I get 106 test failures when running on NetFX. We need to audit the tests to make sure all of the platform differences are purposeful and add `[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, """")]` where necessary." +17660 area-Infrastructure Decide if we want System.*.AccessControl libraries to be available for UAP cc: @weshaggard Today, some of the AccessControl libraries are part of the closure for UAP which is why some of them are includded in the meta-package's runtime assets. This issue is a good place to track the discussion of whether or not to include them for UAP, and if the decision is to remove them, then break all of the dependencies. I did to an initial try of removing them, and it is not trivial since it would mean changing their configurations from netstandard to platform-specific (netcoreapp and netfx) and do that as well for all assemblies that depend on them, which were quite a few. +17661 area-System.IO SerialPort: Background thread can have unhandled exceptions causing process termination `SerialStream` creates a background thread (entry method is `_eventRunner.WaitForCommEvent`) which has no protection against unhandled exceptions. In some messy tear-down situations (e.g. unexpected USB device removal) `ObjectDisposed` exceptions can be unhandled on this thread - this causes process termination which is clearly highly undesirable. A complete rework of the event handling is probably not a good move in the short-term, but a straightforward catch-all around the thread method would seem to be a good idea which is very low risk but fixes a problem which is tremendously difficult to remedy in application code. In discussions on #17396, @daflame76 has posted a stack trace showing this exception terminating an application. Automated test for this is unlikely to be feasible because the circumstances of the exception are so difficult to repro. This can be assigned to me - I'll work with @daflame76 to get a PR together. +17662 area-System.IO SerialPort: Clear fAbortOnError when port opens Fixes #17396 +17666 area-System.IO SerialPort: Don't allow unhandled exceptions out of Background thread Fixes #17661 +17667 area-System.Security Ensure S.S.Crypto.Cng package is getting created for 2.0 Cng has been removed from netstandard2.0, so the package version of it needs to exist again. https://github.com/dotnet/standard/pull/272 +17668 area-System.Net CertificateValidationRemoteServer_EndToEnd_OK failed on OSX https://github.com/dotnet/corefx/pull/17664 ``` System.Net.Security.Tests.CertificateValidationRemoteServer.CertificateValidationRemoteServer_EndToEnd_Ok [FAIL] System.IO.IOException : Unable to transfer data on the transport connection: Operation timed out. ---- System.Net.Sockets.SocketException : Operation timed out Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Security/src/System/Net/FixedSizeReader.cs(56,0): at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs(755,0): at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs(725,0): at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Security/src/System/Net/Security/SslStream.cs(132,0): at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs(27,0): at System.Net.Security.Tests.CertificateValidationRemoteServer.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- Finished: System.Net.Security.Tests ``` +17669 area-System.Drawing Remove SystemColors from .NET Core As `SystemColors` is not in .NET Standard, it doesn't make much sense to have it in .NET Core, either. Fixes #17024 +17670 area-System.IO Add CancellationToken to StreamReader.Read* methods Today we have the following methods on StreamReader: ```` csharp public class StreamReader { public Task ReadLineAsync(); public Task ReadToEndAsync(); public Task ReadAsync(char[] buffer, int index, int count); public Task ReadBlockAsync(char[] buffer, int index, int count); } ```` None of these support cancellation via CancellationTokens, even though the underlying Stream ReadAsync API's do ## Proposed API Add the following methods ```` csharp public class StreamReader { public Task ReadLineAsync(CancellationToken token); public Task ReadToEndAsync(CancellationToken token); public Task ReadAsync(char[] buffer, int index, int count, CancellationToken token); public Task ReadBlockAsync(char[] buffer, int index, int count, CancellationToken token); } ```` ## Motivation Since these methods read from an underlying stream that may have long delays before data is available, they can block for long periods of time. Especially if the underlying stream is network based. When trying to create a responsive application in these circumstances, where long running operations that might never return can be cancelled to return control back to the user, the inability to cancel these operations in difficult. Currently the only real option is to fork the call into a fake cancellable operation that ends up ignoring original Task when a cancellation happens, with something like ThreadingTools.WithCancellation. But that leaves the reading Task (and potentially the stream and any continuations registered on it) floating, unreferenced. +17672 area-Meta More PNSE messages/comments in Process and Crypto @Priya91 can you please answer questions I put in the diagnostics files? I can then add a better comment or message. @bartonjs +17673 area-System.Net Add serialization test for CookieContainer .NET Core 2.0 now supports full binary serialization. `CookieContainer` was already marked Serializable. Adding a test to verify that. Note: a separate test method was added since CookieContainer doesn't override `Equals`. Fixes #9184 +17675 area-Infrastructure Need to bring back automated publishing of Microsoft.Private.PackageBaseline With the merging of the dev/eng branch to master (1/13/2017), we stopped getting updated versions of Microsoft.Private.PackageBaseline on the myget feed. @ericstj very helpfully provided a workaround for the time being, but for repos like WCF it would be very helpful to get this package back. +17676 area-System.Diagnostics Make Activity Serializable on NET 4.5 In order to store Activity in LogicalCallContext, Activity [must be](https://msdn.microsoft.com/en-us/library/system.runtime.remoting.messaging.callcontext.logicalsetdata(v=vs.110).aspx) serializable It only affect the cross app-domain communication, which is not the case for Activity, however causes some implicit problems with MsTest +17677 area-System.Security Some types missed from System.Security.Permissions fixes https://github.com/dotnet/corefx/issues/17639 +17679 area-System.Threading Fix ReaderWriterLockSlim contention spin wait perf Fixes #13345 - The Sleep(1) in the spin wait for entering the reader-writer lock was introducing an aritficial delay that is much longer than necessary. Since a proper wait would follow the spin wait, removed the Sleep(1). +17681 area-System.Net Test failure: System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom/ReceiveFromV6BoundToAnyV6_Success Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom/ReceiveFromV6BoundToAnyV6_Success` has failed. System.Net.Sockets.SocketException : Connection timed out Stack Trace: at System.Net.Sockets.Socket.ReceiveFrom(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint& remoteEP) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 1725 at System.Net.Sockets.Tests.DualModeBase.ReceiveFrom_Helper(IPAddress listenOn, IPAddress connectTo) in /root/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2753 Build : Master - 20170330.01 (Core Tests) Failing configurations: - Redhat.72.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170330.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom~2FReceiveFromV6BoundToAnyV6_Success +17684 area-System.Security Increased code coverage for EncryptedXml from 62% to 91.8% Added tests for System.Security.Cryptography.Xml.EncryptedXml. Overall code coverage for System.Security.Cryptography.Xml increased from 64.4% to 68.2% Part of #16829 +17685 area-Microsoft.CSharp Remove spurious HashSet.Contains from Microsoft.CSharp Testing `Contains()` prior to calling `Add()` is wasteful; just examine the result of calling `Add()`. +17688 area-Meta Porting to .Net Core Technical Question "I was walking through your ""Porting to .Net Core"" document here: https://github.com/dotnet/corefx/blob/2b15de70c1cf9f585c4878a722de4dbe42b4940b/Documentation/project-docs/porting.md#binary-serialization and came across this slightly edited (for brevity) content: ""Remoting Justification. The idea of .NET remoting -- which is transparent remote procedure calls -- has been identified as a problematic architecture... Replacement. For communication across processes, inter-process communication (IPC) should be used, such as pipes or memory mapped files. Across machines, you should use a network based solution, preferably a low-overhead plain text protocol such as HTTP."" I'm not sure I agree with the justification, but I wanted to focus on the replacement suggestions. Let's pick a very fast IPC method: ""memory mapped files"". Unless I'm wrong (and if I am, please let me know), there's no way easy way to do this in .Net. It's one of the most useful pieces of technology that got washed away by the ""managed code"" model. Yeah; I guess if I wanted to drop back to native, unmanaged C++ I can still use memory mapped files, but that seems like a hack -- kind of like a donut spare on a sport/utility vehicle. Since you are doing away with .Net Remoting, are you planning to support memory mapped files in managed code on all platforms?" +17689 area-Infrastructure Fix signing of shims by passing the right strongname cc: @weshaggard @Petermarcu - Fixing signing of System.ComponentModel.DataAnnotations shim by passing in the right strongNameSig. - Not fail the official build if signing fails (temporary to unblock build in case fix doesn't work) - Added some logging for signing. +17690 area-System.Net Missing SocketTaskExtensions from System.Net.Sockets on Desktop This is breaking developers and tests. We should consider fixing the tests in the short-term. Should we fix this to bring this type back to desktop? cc: @davidsh +17691 area-System.Net Desktop and Core behavior differences in System.Net.Http There are some differences in behavior between Desktop and core which are causing tests like this one fail on Desktop: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs#L281 cc: @davidsh +17692 area-System.Net Disable a test in System.Net.Http because of behavior difference cc: @davidsh +17693 area-System.Security Some more easy CAS types to stub The following types exist in Desktop and could be stubbed out in CoreFX just as we've done with more popular CAS attributes. Just no-ops to make existing code work. ``` TypesMustExist : Type 'System.Data.Common.DBDataPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DBDataPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Odbc.OdbcPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Odbc.OdbcPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventLogPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventLogPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintingPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintingPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.DnsPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.DnsPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.EndpointPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.SocketPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.SocketPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.WebPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.WebPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermissionAttribute' does not exist in the implementation but it does exist in the contract. ``` below is some crude usage data from Nuget and app analyses. Note that zero does not mean exactly zero necessarily -- there's a huge number of apps and packages. ``` Type usage DBDataPermission 0.20% DBDataPermissionAttribute 0.20% SqlClientPermissionAttribute 0.11% OraclePermissionAttribute 0.04% OleDbPermission 0.02% SqlClientPermission 0.02% OdbcPermission 0.01% OraclePermission 0.01% Type usage PerformanceCounterPermissionAttribute 0.11% EventLogPermissionAttribute 0.05% PerformanceCounterPermission 0.03% EventLogPermission 0.02% EventLogPermissionEntry 0.01% EventLogPermissionEntryCollection 0.00% PerformanceCounterPermissionEntry 0.00% PerformanceCounterPermissionEntryCollection 0.00% Type usage PrintingPermission 0.02% PrintingPermissionAttribute 0.00% Type usage DnsPermission 0.21% WebPermission 0.14% SocketPermission 0.11% DnsPermissionAttribute 0.05% SocketPermissionAttribute 0.04% WebPermissionAttribute 0.02% SmtpPermissionAttribute 0.02% NetworkInformationPermission 0.01% EndpointPermission 0.00% SmtpPermission 0.00% NetworkInformationPermissionAttribute 0.00% PnrpPermission 0.00% PnrpPermissionAttribute 0.00% PeerCollaborationPermission 0.00% PeerCollaborationPermissionAttribute 0.00% Type usage DistributedTransactionPermission 0.00% DistributedTransactionPermissionAttribute 0.00% ``` This is just a nice to have for 2.0. +17696 area-System.IO SerialPort: Move background Thread to Task `SerialStream` (internal to `SerialPort`) currently does a `new Thread()` to make a `WaitForCommEvent` thread which blocks on `::WaitCommEvent` and dispatches events into the application's code. The use of the background thread has created problems with unhandled events escaping (see #17661 & #17666) and is also possibly some part of an close/re-open problem described in #16261 (I'm not sure if it is or isn't). It is worth investigating if we could change from a background `Thread` to `Task.Run` and then await the completion of this Task in the relevant dispose method. This would bring exceptions back properly where they can be sensibly handled, and would ensure that the thread was finished before returning from the dispose. At present no reference to the background thread is held by `SerialStream`, so it's impossible for it to make sure it's complete before finishing the close/dispose. One for the future... +17699 area-System.IO Get IO.FileSystem tests running on NetFX There were a high number of failing FileSystem tests for NetFX. This PR modifies the tests to run on NetFX without failures and adds comments for the reasons for the tests that had to be disabled. resolves https://github.com/dotnet/corefx/issues/14987 resolves https://github.com/dotnet/corefx/issues/17659 cc: @stephentoub @JeremyKuhne @safern +17700 area-System.Data Update exception thrown in Prelogin handshake processing due to invalid size in TDS header Changing error to SQL.ParsingError to match similar error case in TdsParserStateObject.TryProcessHeader +17701 area-System.Net Modify HttpClientHandler compression default to match Desktop Change HttpClientHandler property for AutomaticDecompression to match original .NET Framework default. Adjust tests accordingly. Contributes to #17691 +17702 area-Infrastructure Update readme build badges I updated the outerloop tests in Jenkins through PR: #17435 and we changed the outerloop build names to be outerloop_targetgroup_os_configuration so this is the require change to have the correct badges and introduced the new badge for the netfx outerloop run. cc: @danmosemsft @weshaggard @karelz +17708 area-System.Data Omissions in types supported by both Desktop and Core - System.Data.SqlClient For api compatibility between Desktop and Core we need to adjust these types in the System.Data.SqlClient area: (more info here: https://github.com/dotnet/corefx/issues/15255) ``` + System.Data.IDataRecord (SqlDataRecord) + System.IServiceProvider (SqlClientFactory) + System.ICloneable (SqlCommand, SqlConnection, SqlParameter) ``` IDataRecord and IServiceProvider add new apis that must be wisely implemented in the types above. ICloneable needs to be added to these three classes. Simple migration from netfx isn't possible as those classes have change significantly. +17710 area-Infrastructure Problems building library with Novell.Directory.Ldap.NETStandard for Core 1.1 "I have a library I am building for Core 1.0, and it builds fine: ```json { ""version"": ""1.0.0-*"", ""dependencies"": { ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"", ""Microsoft.AspNetCore.Mvc.ViewFeatures"": ""1.0.0"", ""Microsoft.AspNetCore.Razor.Runtime"": ""1.0.0"", ""NETStandard.Library"": ""1.6.0"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""frameworks"": { ""netstandard1.6"": { ""imports"": [ ""dnxcore50"", ""portable-net451+win8"" ] } } } ``` To update to Core 1.1, the project.json is updated: ```json { ""version"": ""1.0.0-*"", ""dependencies"": { ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"", ""Microsoft.AspNetCore.Mvc.ViewFeatures"": ""1.1.1"", ""Microsoft.AspNetCore.Razor.Runtime"": ""1.1.0"", ""NETStandard.Library"": ""1.6.1"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""frameworks"": { ""netstandard1.6"": { ""imports"": [ ""portable-net462+win8"" ] } } } ``` It builds fine in Visual Studio 2015 on my local machine, but when it gets built via my TFS build process,, it errors on dotnet restore: ``` 2017-03-29T17:08:59.6868965Z dotnet restore e:\tfs_work\11\s\CcpWebClient\Trunk\CcpWebClient 2017-03-29T17:08:59.6868965Z Error message highlight pattern: 2017-03-29T17:08:59.6868965Z Warning message highlight pattern: 2017-03-29T17:08:59.9364981Z log : Restoring packages for e:\tfs_work\11\s\CcpWebClient\Trunk\CcpWebClient\src\CcpWebClient.Common\project.json... 2017-03-29T17:09:00.8725041Z log : Restoring packages for e:\tfs_work\11\s\CcpWebClient\Trunk\CcpWebClient\src\CcpWebClient.Web\project.json... 2017-03-29T17:09:02.0581117Z error: Package System.Net.WebSockets 4.3.0 is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package System.Net.WebSockets 4.3.0 supports: 2017-03-29T17:09:02.0581117Z error: - monoandroid10 (MonoAndroid,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - monotouch10 (MonoTouch,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - netstandard1.3 (.NETStandard,Version=v1.3) 2017-03-29T17:09:02.0737118Z error: - xamarinios10 (Xamarin.iOS,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - xamarinmac20 (Xamarin.Mac,Version=v2.0) 2017-03-29T17:09:02.0737118Z error: - xamarintvos10 (Xamarin.TVOS,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: Package System.Collections.Specialized 4.3.0 is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package System.Collections.Specialized 4.3.0 supports: 2017-03-29T17:09:02.0737118Z error: - monoandroid10 (MonoAndroid,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - monotouch10 (MonoTouch,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - netstandard1.3 (.NETStandard,Version=v1.3) 2017-03-29T17:09:02.0737118Z error: - xamarinios10 (Xamarin.iOS,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - xamarinmac20 (Xamarin.Mac,Version=v2.0) 2017-03-29T17:09:02.0737118Z error: - xamarintvos10 (Xamarin.TVOS,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0) 2017-03-29T17:09:02.0737118Z error: One or more packages are incompatible with .NETStandard,Version=v1.6. ``` The WebSockets package is a dependency for Novell.Directory.Ldap.NETStandard. I don't understand why these packages are suddenly complaining about compatibility with .NETStandard,Version=v1.6 when they were building fine before. Any ideas? " +17711 area-System.Runtime Need Single Thread Apartment support to allow use of some COM objects PowerShell cmdlets `Enable-WSManCredSSP` and `Disable-WSManCredSSP` require use of `IGroupPolicyObject`, which requires STA. The PowerShell folk need to be able to port those cmdlets to Core (see [PowerShell/PowerShell#3353](https://github.com/PowerShell/PowerShell/issues/3353)) This relates to an earlier corefx issue, #522. +17713 area-System.Globalization Test failure: System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get` has failed. System.Globalization.CultureNotFoundException : Culture is not supported.\r Parameter name: name\r ur-IN is an invalid culture identifier. Stack Trace: at System.Globalization.CultureInfo.InitializeFromName(String name, Boolean useUserOverride) at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride) at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.d__0.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() Build : Master - 20170331.01 (Core Tests) Failing configurations: - Windows.7.Amd64 - x86-Release - x86-Debug - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170331.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoNumberGroupSizes~2FNumberGroupSizes_Get +17714 area-Infrastructure Updating the Windows build instructions to clarify the requirements for VS2017 Fix for #16887 I have tested it with VS 2017 and CMake 3.7.2 but needs to be tested with VS 2015 +17715 area-System.Memory Span (Slow Span) debugger viewer One of the debugger viewer needed to #14376 +17716 area-System.Globalization Fix NumberFormatInfoNumberGroupSizes test for certain OS Fixes https://github.com/dotnet/corefx/issues/17713 On Windows 7 the culture is not found. I thought it was excluded because the expected result was different. Reverting the condition back to how it was. @tarekgh +17717 area-System.Runtime Add tests for FormatterServices.GetUninitializedObject - non runtime types - array, pointer, ref types - abstract/interface types - open generic types - byref like types - shared generic instantiations - COM objects - nullable types - default constructor - static constructor (non beforefieldinit) - static field (beforefieldinit) - static constructor throwing Fixes #16995 +17718 area-System.Runtime Difference in behaviour between netfx and netcoreapp in FormatterServices.GetUninitializedObject for COM objects "```c# Theory] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""The full .NET framework doesn't support GetUninitializedObject for COM objects"")] public void GetUninitializedObject_ContextBoundObjectSubclass_NetCore_InitializesValue() { Assert.Equal(0, ((COMObject)FormatterServices.GetUninitializedObject(typeof(COMObject))).Value); Assert.Equal(0, ((COMObject)FormatterServices.GetSafeUninitializedObject(typeof(COMObject))).Value); } [Theory] [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, ""The coreclr supports GetUninitializedObject for COM objects"")] public void GetUninitializedObject_ContextBoundObjectSubclass_Netfx_ThrowsNotSupportedException() { Assert.Throws(() => FormatterServices.GetUninitializedObject(typeof(COMObject))); Assert.Throws(() => FormatterServices.GetSafeUninitializedObject(typeof(COMObject))); } public class COMObject : ContextBoundObject { public int Value { get; set; } } ``` See #17717" +17722 area-System.Runtime Difference in behaviour between netfx and netcoreapp in FormatterServices.GetUninitializedObject for byref like types "```c# public static IEnumerable GetUninitializedObject_ByRefLikeType_TestData() { yield return new object[] { typeof(ArgIterator) }; yield return new object[] { typeof(RuntimeArgumentHandle) }; yield return new object[] { typeof(TypedReference) }; yield return new object[] { typeof(Span) }; yield return new object[] { typeof(ReadOnlySpan) }; } public static IEnumerable GetUninitializedObject_ByRefLikeType_NetCore_TestData() { yield return new object[] { Type.GetType(""System.ByReference`1[System.Int32]"") }; } [Theory] [MemberData(nameof(GetUninitializedObject_ByRefLikeType_TestData))] [MemberData(nameof(GetUninitializedObject_ByRefLikeType_NetCore_TestData))] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""The full .NET framework supports GetUninitializedObject for by ref like types"")] public void GetUninitializedObject_ByRefLikeType_NetCore_ThrowsNotSupportedException(Type type) { Assert.Throws(() => FormatterServices.GetUninitializedObject(type)); Assert.Throws(() => FormatterServices.GetSafeUninitializedObject(type)); } [Theory] [MemberData(nameof(GetUninitializedObject_ByRefLikeType_TestData))] [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, ""The coreclr doesn't support GetUninitializedObject for by ref like types"")] public void GetUninitializedObject_ByRefLikeType_Netfx_ThrowsNotSupportedException(Type type) { Assert.NotNull(FormatterServices.GetUninitializedObject(type)); Assert.NotNull(FormatterServices.GetSafeUninitializedObject(type)); } ``` See #17717" +17723 area-System.Runtime Cleanup System.Runtime test in netfx configuration I'd like to add a `netfx` test configuration to System.Runtime. Is this something that would be a good idea? If so, I'd like to work on it - hopefully shouldn't be too hard! Maybe someone's already working on it, so I'm making this issue to track this and claim it if no one is working on it! +17724 area-System.IO Desktop: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileDoesNotExist(mode: Truncate) failed with Xunit.Sdk.ThrowsException Configuration: Outerloop_netfx_windows_nt_debug ([build#1](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/)) Failed test: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileDoesNotExist(mode: Truncate) Message: ~~~ Assert.Throws() Failure\r\nExpected: typeof(System.IO.FileNotFoundException)\r\nActual: typeof(System.ArgumentException): Combining FileMode: Truncate with FileSystemRights: ReadData, CreateFiles is invalid. FileMode.Truncate is valid only when used with FileSystemRights.Write. ~~~ Stack Trace: ~~~ at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileSystemRights rights, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode) at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.<>c__DisplayClass18_0.b__1() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 552 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/FileDoesNotExist_mode__Truncate_/ +17725 area-System.IO Desktop: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileInUse_CreateFromFile_SucceedsWithReadOnly failed with system.IO.IOException Configuration: Outerloop_netfx_windows_nt_debug (build[#1](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/FileDoesNotExist_mode__Truncate_/)) Failed test: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileInUse_CreateFromFile_SucceedsWithReadOnly Message: ~~~ System.IO.IOException : The process cannot access the file 'C:\\Users\\dotnet-bot\\AppData\\Local\\Temp\\MemoryMappedFileTests_CreateFromFile_dd2twmrj.gsl\\FileInUse_CreateFromFile_SucceedsWithReadOnly_626' because it is being used by another process. ~~~ Stack Trace: ~~~ at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileSystemRights rights, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.FileInUse_CreateFromFile_SucceedsWithReadOnly() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 628 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/FileInUse_CreateFromFile_SucceedsWithReadOnly/ +17726 area-System.IO "Desktop: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ValidArgumentCombinationsWithPath_ModesCreateOrTruncate failed with ""System.ArgumentException""" Configuration: outerloop_netfx_windows_nt_debug ([build#1](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/FileDoesNotExist_mode__Truncate_/)) Failed test: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ValidArgumentCombinationsWithPath_ModesCreateOrTruncate Message: ~~~ System.ArgumentException : Combining FileMode: Truncate with FileSystemRights: ReadData, CreateFiles is invalid. FileMode.Truncate is valid only when used with FileSystemRights.Write. ~~~ Stack Trace: ~~~ at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileSystemRights rights, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity) at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ValidArgumentCombinationsWithPath_ModesCreateOrTruncate(FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 368 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/ValidArgumentCombinationsWithPath_ModesCreateOrTruncate_mode__Truncate__mapName__null__capacity__1__access__ReadWrite_/ +17727 area-System.Threading "Desktop: System.Threading.Tasks.Tests.EtwTests.TestEtw failed with ""Xunit.Sdk.EqualException""" Configuration: outerloop_netfx_windows_nt_debug ([build#1](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/FileDoesNotExist_mode__Truncate_/)) Failed test: System.Threading.Tasks.Tests.EtwTests.TestEtw Message: ~~~ Assert.Equal() Failure\r\nExpected: 1\r\nActual: 0 ~~~ Stack Trace: ~~~ at System.Threading.Tasks.Tests.EtwTests.TestEtw() in D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks.Parallel\tests\EtwTests.cs:line 32 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.Threading.Tasks.Tests/EtwTests/TestEtw/ +17728 area-System.IO "Desktop: System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success failed with ""Xunit.Sdk.EqualException""" Configuration: outerloop_netfx_windows_nt_debug ([build#1](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/FileDoesNotExist_mode__Truncate_/)) Failed test: System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success Message: ~~~ Assert.Equal() Failure\r\nExpected: Deleted\r\nActual: 0 ~~~ Stack Trace: ~~~ at System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(WatcherChangeTypes changeType) in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.WaitForChanged.cs:line 152 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/1/testReport/System.IO.Tests/WaitForChangedTests/CreatedDeleted_Success_changeType__Deleted_/ +17730 area-System.Runtime Enum.Format(no such value) returns different values with netcoreapp and netfx "The following test demonstrates this: ```c# public enum AnEnum { Case1 = 1 } [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "".NET Framework returns value.ToString() if the value doesn't exist"")] public static void Format_NoSuchValue_ReturnsElementToString_Netcore() { Assert.Null(Enum.Format(typeof(AnEnum), 2, ""G"")); } [Fact] [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "".NET Core returns null if the value doesn't exist"")] public static void Format_NoSuchValue_ReturnsElementToString_Netfx() { Assert.Equal(""2"", Enum.Format(typeof(AnEnum), 2, ""G"")); } ``` Netfx returns `value.ToString()` Netcoreapp returns `null`" +17731 area-System.Runtime Fix System.Runtime.Tests netfx compilation - An ambiguity error for single parameter `null` - Use of uninitialized variable error +17732 area-System.Runtime Fix StringBuilder param names for no more capacity on netfx Contributes to #17723 +17733 area-System.Runtime Fix Array param name for Reverse where index < lower bound Contributes to #17723 +17734 area-System.Runtime Fix param names for GC tests on netfx Also cleans up some code Contributes to #17723 +17735 area-System.Runtime "Fix DateTime.TryParse(""4/21 5am"") tests on netfx" Contributes to #17723 +17738 area-System.Runtime (System.Random instance).Next - returning same numbers "When you call a new instance of System.Random, the ""Next"" method returns the same results: ```c# Console.WriteLine(""\r\nSame Random instance: ""); Random R = new Random(); for (int i = 0; i < 3; i++) Console.WriteLine(R.Next(1, 10).ToString()); // 4 // 6 // 1 Console.WriteLine(""\r\nNew Random instance: ""); for (int i = 0; i < 3; i++) Console.WriteLine((new Random()).Next(1, 10).ToString()); // 4 // 4 // 4 ``` General info: ``` C:\Users\user>dotnet --info .NET Command Line Tools (1.0.0) Product Information: Version: 1.0.0 Commit SHA-1 hash: e53429feb4 Runtime Environment: OS Name: Windows OS Version: 6.3.9600 OS Platform: Windows RID: win81-x64 Base Path: C:\Program Files\dotnet\sdk\1.0.0 ``` Random Ref: C:\Users\user\.nuget\packages\system.runtime.extensions\4.3.0\ref\netstandard1.5\System.Runtime.Extensions.dll" +17739 area-System.Runtime Fix Enum.Format tests for recent coreclr fixes to align with netfx behaviour See https://github.com/dotnet/coreclr/pull/10610 @benaadams @jkotas if we pull this in when updating the coreclr packages, then the tests will pass, assuming we now align with the netfx behaviour +17740 area-Infrastructure Removing ContinueOnError now that we know the signing problem is fixed. cc: @weshaggard Also increasing the Importance of the signing task so that we can see them on minimal logs. +17741 area-System.Runtime Proposal for adding System.Runtime.CompilerServices.IsReadOnlyAttribue # Rationale and Usage For upcoming C# features captured in document [here](https://github.com/dotnet/csharplang/blob/master/proposals/readonly-ref.md ), the C# compiler needs a way to annotate metadata as read-only. The proposal is to add a new attribute to `System.Runtime.CompilerServices` namespace similar to`InAttribuate` and `OutAttribute`, named `IsReadOnlyAttribue`. Example usages: 1) For read-only reference parameters. 2) For return types that are read-only references. 3) On read-only structs. # Proposed API ```csharp // .NET Core: // System.Runtime (reference assembly) // System.Private.CoreLib (implementation) // .NET Framework 4.7++ // mscorlib // .NET Standard 2.0++ // netstandard namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.All, Inherited = false)] public sealed class IsReadOnlyAttribue: Attribute { public IsReadOnlyAttribue(); } } ``` +17742 area-Infrastructure Fix LinuxCross Portable Build Fixes https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_build?_a=summary&buildId=649339 @weshaggard PTAL. Can you also help me understand why this is unique to Portable CrossBuild I introduced and not Linux-x64 Portable build though the definition structure is the same? +17743 area-System.Security Make Linux ECDsa.ExportParameters preserve leading 0x00s. When Qx and Qy (and, optionally, d) all have leading 0x00 bytes the export does not preserve them on our Linux/OpenSSL implementation. This makes for an inconsistent export between Windows and Linux. +17744 area-System.Memory Adding back AsSpan for fast span Once we consume a new coreclr package (after this PR: https://github.com/dotnet/coreclr/pull/10544), this should go green. +17745 area-System.Runtime Add StringBuilder(Char) ## Rationale In PowerShell repo we got a report https://github.com/PowerShell/PowerShell/issues/3457 about ```c# var allErrors = new StringBuilder('\n'); ``` It is expected that allErrors initialized with '\n' char. Really compiler _silently_ convert the char -> ushort -> int and use `StringBuilder(int capacity)` constructor. Sample http://ideone.com/1pPHlZ Currently we already have method `Append(char value)` so suggestion is to add new constructor `StringBuilder(char value)`. ## Proposed API ## ```c# public sealed partial class StringBuilder : ISerializable { // Proposed constructor public StringBuilder(char value); } ``` +17746 area-Infrastructure "Cannot use packages ""System.Runtime.Loader"", ""System.Reflection.Emit"" and ""System.Reflection.Emit.Lightweight"" when targeting netstandard2.0" I’m moving [PowerShell Core](https://github.com/powershell/powershell) to NetStandard2.0, and find that I cannot depend on the following packages when building an assembly targeting netstandard2.0: - [“System.Runtime.Loader”](https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Runtime.Loader) - [“System.Reflection.Emit”](https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Reflection.Emit) - [“System.Reflection.Emit.Lightweight”](https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Reflection.Emit.Lightweight) I’m targeting a very recent version of NetStandard.Library package (2.0.0-beta-25123-01), where the core/primitive types like `Systme.Object` have been moved to netstandard.dll. However, the newest version of the above 3 packages on [dotnet.myget](https://dotnet.myget.org/gallery/dotnet-core) is 4.4.0-beta-24913-02, which is 3 months old, and thus they are still on top of `System.Runtime.dll`. When listing them in the package references, `dotnet restore` will bring the old version of System.Runtime.dll as a dependency, and then `dotnet build` will throw following ambiguous type identity errors: ```output AssemblyInfo.cs(3,12): error CS0433: The type 'InternalsVisibleToAttribute' exists in both 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' [D:\PowerShell\src\Microsoft.PowerShell.CoreCLR.AssemblyLoadContext\Microsoft.PowerShell.CoreCLR.AssemblyLoadContext.csproj] AssemblyInfo.cs(4,12): error CS0433: The type 'AssemblyFileVersionAttribute' exists in both 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' [D:\PowerShell\src\Microsoft.PowerShell.CoreCLR.AssemblyLoadContext\Microsoft.PowerShell.CoreCLR.AssemblyLoadContext.csproj] AssemblyInfo.cs(5,12): error CS0433: The type 'AssemblyVersionAttribute' exists in both 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' [D:\PowerShell\src\Microsoft.PowerShell.CoreCLR.AssemblyLoadContext\Microsoft.PowerShell.CoreCLR.AssemblyLoadContext.csproj] ``` I know the types/APIs exposed from those 3 packages are not in NetStandard2.0, but the packages should be on top of NetStandard and I should be able to use them when targeting NetStandard2.0, right? What should I do to continue depending on those 3 packages when targeting NetStandard2.0? ## Environment data ```powershell PS:515> dotnet --info .NET Command Line Tools (2.0.0-preview1-005683) Product Information: Version: 2.0.0-preview1-005683 Commit SHA-1 hash: 6866bc2f4a Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: X:\dotnet\dotnet-dev\sdk\2.0.0-preview1-005683\ ``` +17749 area-System.Net "System.Net.NameResolution.Pal.Tests test fixture fails on Fedora 24 with ""invalid argument"" giving ""Unknown gethostbyname/gethostbyaddr error code""' " "Failed twice in my PR https://github.com/dotnet/corefx/pull/17716/files but is not failing in the latest Fedora 24. My PR only touches globalization code. It might be good to make this assert dump the actual code it's getting (`fprintf(stderr...` .. I don't know if we have such a macro defined already) ``` dotnet: /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug_prtest/src/Native/Unix/System.Native/pal_networking.cpp:414: int ConvertGetHostErrorPlatformToPal(int): Assertion `false && ""Unknown gethostbyname/gethostbyaddr error code""' failed. /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug_prtest/bin/Unix.AnyCPU.Debug/System.Net.NameResolution.Pal.Tests/netcoreapp/RunTests.sh: line 83: 48789 Aborted (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Net.NameResolution.Pal.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests command exited with ExitCode: 134 command failed, trying to collect dumps corefile: no coredump file was found /mnt/resource/j/workspace/dotnet_corefx/master/fedora24_debug_prtest/src/System.Net.NameResolution/tests/PalTests ```" +17751 area-Infrastructure For auto-update, find project.jsons relative to dependencies.props Using `dependencies.props`'s directory allows outside projects to use this file. For example, BfS could use `ProjectJsonFiles` to do upgrades. @ellismg +17752 area-Serialization Remove ReflectionXmlSerializationReader and ReflectionXmlSerializationWriter from the XmlSerializerGenerator Need remove the dependency on these two files from the XmlSerializer Generator tool. +17753 area-Infrastructure Remove remaining references to Fedora 23 I am not familiar with what the .json files do, so I'm only speculating what the correct change is here. As far as I know, the references aren't breaking anything. Please advise. @gkhanna79 @weshaggard @dagood Pointed out in https://github.com/dotnet/core-setup/pull/1912 +17754 area-System.Runtime Add test coverage for generic method definition handle roundtripping Also, existing tests were not actually testing anything because they missed `[Fact]` and the `RuntimeTypeHandleTest` would have succeeded no matter what `r1` is. Fixed that. +17757 area-System.Diagnostics Move System.Diagnostics.Debug to CoreLib Depends on https://github.com/dotnet/coreclr/pull/10625 +17759 area-System.Net Stop Pinvoke check of S.N.H.WHH "Per David Goll, our WinHttpHandler library is not used on UWP. Instead we have a shim over WinRT. So we should stop flagging violations of WACK in this library. How do we achieve this shim -- where does it come from? I assume this is relevant, but perhaps out of date System.Net.Http.WinHttpHandler.pkgproj ``` win ``` We can presumably check this in meantime though. @CIPop @davidsh " +17760 area-System.Net Include error number in asserts out of pal_networking.cpp Contributes to https://github.com/dotnet/corefx/issues/17749 Note: this does not emit output in retail. In the cases here, it was failing in debug though. +17762 area-System.IO "Test: System.IO.Tests.WaitForChangedTests.Renamed_Success failed with ""Xunit.Sdk.EqualException""" Configuration: outerloop_netcoreapp_win10_debug ([build#1](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win10_debug/1/testReport/)) Failed test: System.IO.Tests.WaitForChangedTests.Renamed_Success Message: ~~~ Assert.True() Failure\r\nExpected: True\r\nActual: False ~~~ Stack Trace: ~~~ at System.IO.Tests.WaitForChangedTests.Renamed_Success() in D:\j\workspace\outerloop_net---1bfe87b0\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.WaitForChanged.cs:line 226 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win10_debug/1/testReport/System.IO.Tests/WaitForChangedTests/Renamed_Success/ +17763 area-System.IO System.IO.Tests.DirectoryInfo_Create.PathWithReservedDeviceNameAsExtendedPath failed in CI In #17717 Might be intermittent, so feel free to close if you want ``` Stacktrace MESSAGE: System.IO.IOException : The directory is not empty +++++++++++++++++++ STACK TRACE: at System.IO.Win32FileSystem.RemoveDirectoryHelper(String fullPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 663 at System.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 509 at System.IO.Directory.Delete(String path, Boolean recursive) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 581 at TemporaryDirectory.Delete() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\tests\PortedCommon\TemporaryDirectory.cs:line 20 at TemporaryFileSystemItem`1.Dispose() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\tests\PortedCommon\TemporaryFileSystemItem.cs:line 78 at System.IO.Tests.Directory_CreateDirectory.PathWithReservedDeviceNameAsExtendedPath() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem\tests\Directory\CreateDirectory.cs:line 424 ``` +17764 area-Infrastructure netstandard configurations for System.Security.Cryptography.Cng and System.Security.Cryptography.X509Certificates netstandard configurations for System.Security.Cryptography.Cng and System.Security.Cryptography.X509Certificates were causing build breaks in uap and uapaot verticals. Disabled in https://github.com/dotnet/corefx/commit/a00139c78398e88bfae1649fe07fc673b9a390c3 to unblock updates. +17765 area-System.Security Add EncryptionMethod tests Contributes to #16829 Increases CC to 100% and also tests some more utils helpers @krwq +17766 area-System.Runtime Fix Attribute tests on netfx This looks like a deliberate fix to buggy .NET framework behaviour: - https://github.com/dotnet/coreclr/pull/6240 - https://github.com/dotnet/coreclr/issues/6232 Contributes to #17723 +17767 area-System.Runtime Fix String tests on netfx These are all expected differences. I've also cleaned up a couple of negative tests that are affected by the parameter name quirks. Just makes things cleaner and easier to understand Contributes to #17723 +17770 area-System.Runtime Fix Assembly tests for netfx Most of these are expected due to differences in the implementation of Assembly in the runtimes Not sure about the `GetModule(module.Name)` tests, though. Contributes to #17723 +17771 area-Serialization "baseline missing timezone info ""Z""" "@zhenlan @shmao @huanwu The case fail when use VS run system.private.xml solution, because the case use parameter DateTimeKind.Utc when instantiate DateTime(), after serialization, it will contain time zone info Z. The fix: add timezone info ""Z"" into baseline string." +17773 area-System.Diagnostics "Desktop: Tests under ""System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests"" failed with ""Xunit.Sdk.EqualException""" "Configuration: outerloop_netfx_windows_nt_debug Failed tests: DelimiterWriteMethodTests\TraceEvent_FormatString_Test DelimiterWriteMethodTests\TraceData_Object_Test DelimiterWriteMethodTests\TraceEvent_String_Test DelimiterWriteMethodTests\TraceData_ObjectArray_Test Message: ~~~ Assert.Equal() Failure\r\n ↓ (pos 46)\r\nExpected: ···ummy message\"";;4552;\""8\"";\""2017-03-31T23:12:18.3920125Z\"";981020···\r\n Actual: ···ummy message\"";;4552;;\""8\"";\""2017-03-31T23:12:18.3920125Z\"";98102···\r\n ↑ (pos 46) ~~~ Stack Trace: ~~~ at System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests.TraceEvent_FormatString_Test(TraceFilter filter, TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String format, Object[] args) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.TextWriterTraceListener\tests\DelimiterWriteMethodTests.cs:line 58 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/3/testReport/System.Diagnostics.TextWriterTraceListenerTests/DelimiterWriteMethodTests/TraceEvent_FormatString_Test_filter__null__eventCache__TraceEventCache___Callstack________at_System_Environment_GetStackTrace_Exception_e_______DateTime___2017_03_31T23_12_18_3920125Z__LogicalOperationStack_______ProcessId___4552__ThreadId_____8___________source____Co____1984________eventType__Verbose__id__12__format____Dummy_message____args__null_/" +17774 area-Serialization "Desktop: Tests under ""DataContractSerializerTests"" failed with ""System.TypeInitializationException""" Configuration: outerloop_netfx_windows_nt_debug Failed tests under: DataContractSerializerTests ~~~ MESSAGE: System.TypeInitializationException : The type initializer for 'DataContractSerializerTests' threw an exception.\r\n---- No method named set_Option\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at DataContractSerializerTests.DCS_ArrayAsRoot() ----- Inner Stack Trace ----- at DataContractSerializerTests..cctor() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 32 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/3/testReport/(root)/DataContractSerializerTests/DCS_ArrayAsRoot/ +17775 area-System.Net Fixes for running Http tests against Desktop Got the Http Functional tests running with no errors against NETFX (Desktop). Found a bunch of compatibility differences between Desktop and Core that need to be investigated. For now, those specific tests are skipped on Desktop. Fixed the LoopbackServer so that it will run. It was blowing up with `TypeLoadException` due to missing SocketTaskExtensions class (#17690). Contributes to #17691 +17777 area-System.Collections Switch BitArray to using uint internally Updates `BitArray` to use uint internally. This primarily means that the right/left shift no longer have to cast to uint during the operation to protect against the arithmetic nature of the operation (since when backed by an int, if the top bit of the int was set it would shift set bits down). As part of this effort, added performance tests for `BitArray` first to observe those effects, and removed (as many as possible) magic numbers present in the class. Full results are [here](https://1drv.ms/x/s!AgmkmomTldiairQDM67k2hWAOPB7dA), but a quick summary: Operation | Size | Average Elapsed - original | Standard Deviation - original | Average Elapsed - uint/blitting | Standard Deviation - uint/blitting | Error | % Difference elapsed --|--|--|--|--|--|--|-- And | 0 | 0.554 | 0.189 | 0.541 | 0.389 | 0.34 | -2.439 And | 1024 | 4.45 | 2.16 | 3.955 | 0.488 | 2.104 | -12.511 And | 4096 | 13.616 | 2.278 | 14.141 | 2.92 | 1.827 | 3.71 And | 16384 | 49.244 | 3.03 | 50.765 | 1.966 | 2.306 | 2.995 CopyTo_bytearray | 0 | 1.277 | 0.171 | 1.612 | 0.304 | 0.251 | 20.777 CopyTo_bytearray | 1024 | 15.61 | 1.052 | 1.89 | 0.355 | 0.99 | -725.839 CopyTo_bytearray | 4096 | 64.14 | 6.996 | 2.093 | 0.344 | 6.988 | -2964.492 CopyTo_bytearray | 16384 | 229.413 | 7.645 | 2.607 | 0.479 | 7.63 | -8700.778 CopyTo_intarray | 0 | 1.169 | 0.188 | 0.986 | 0.2 | 0.068 | -18.477 CopyTo_intarray | 1024 | 1.356 | 0.266 | 1.24 | 0.238 | 0.119 | -9.36 CopyTo_intarray | 4096 | 1.633 | 0.319 | 1.45 | 0.222 | 0.229 | -12.642 CopyTo_intarray | 16384 | 1.905 | 0.172 | 1.88 | 0.25 | 0.181 | -1.365 ctor_bytearray | 0 | 0.789 | 0.128 | 0.86 | 0.18 | 0.127 | 8.246 ctor_bytearray | 1024 | 5.666 | 0.762 | 1.414 | 0.264 | 0.715 | -300.725 ctor_bytearray | 4096 | 20.241 | 3.907 | 2.611 | 0.458 | 3.88 | -675.212 ctor_bytearray | 16384 | 72.49 | 6.846 | 7.196 | 1.024 | 6.769 | -907.426 ctor_intarray | 0 | 0.846 | 0.19 | 0.746 | 0.175 | 0.074 | -13.439 ctor_intarray | 1024 | 1.259 | 0.279 | 1.236 | 0.24 | 0.142 | -1.845 ctor_intarray | 4096 | 2.243 | 0.328 | 2.388 | 0.43 | 0.278 | 6.07 ctor_intarray | 16384 | 6.081 | 1.07 | 6.928 | 0.92 | 0.546 | 12.221 Get | 1024 | 0.738 | 0.192 | 0.683 | 0.116 | 0.153 | -8.149 Get | 4096 | 0.668 | 0.105 | 0.696 | 0.126 | 0.07 | 3.935 Get | 16384 | 0.651 | 0.112 | 0.696 | 0.125 | 0.056 | 6.511 LeftShift | 0 | 1.276 | 0.226 | 1.437 | 0.386 | 0.313 | 11.215 LeftShift | 1024 | 2.927 | 0.533 | 3.229 | 0.491 | 0.207 | 9.342 LeftShift | 4096 | 4.16 | 0.614 | 5.035 | 0.716 | 0.368 | 17.393 LeftShift | 16384 | 7.953 | 0.814 | 9.977 | 1.067 | 0.69 | 20.282 Length | 0 | 1.688 | 0.259 | 1.638 | 0.298 | 0.147 | -3.059 Length | 1024 | 2.197 | 0.509 | 2.378 | 0.432 | 0.269 | 7.607 Length | 4096 | 3.782 | 0.534 | 3.721 | 0.59 | 0.251 | -1.631 Length | 16384 | 8.41 | 1.025 | 8.269 | 0.951 | 0.382 | -1.713 Not | 0 | 0.376 | 0.074 | 0.388 | 0.081 | 0.033 | 3.066 Not | 1024 | 3.516 | 0.497 | 3.677 | 0.411 | 0.279 | 4.363 Not | 4096 | 11.85 | 1.166 | 12.44 | 0.991 | 0.614 | 4.743 Not | 16384 | 44.641 | 3.297 | 47.095 | 1.403 | 2.984 | 5.21 Or | 0 | 0.489 | 0.09 | 0.475 | 0.101 | 0.046 | -2.995 Or | 1024 | 4.079 | 0.849 | 3.963 | 0.492 | 0.692 | -2.919 Or | 4096 | 13.011 | 2.534 | 13.439 | 0.964 | 2.343 | 3.178 Or | 16384 | 50.897 | 5.505 | 51.512 | 2.261 | 5.019 | 1.193 RightShift | 0 | 1.442 | 0.21 | 1.43 | 0.525 | 0.481 | -0.81 RightShift | 1024 | 3.24 | 0.46 | 3.504 | 0.525 | 0.253 | 7.538 RightShift | 4096 | 5.083 | 0.944 | 5.262 | 0.642 | 0.692 | 3.391 RightShift | 16384 | 8.854 | 1.131 | 10.161 | 1.029 | 0.469 | 12.86 Set | 1024 | 0.862 | 0.115 | 0.985 | 0.155 | 0.104 | 12.486 Set | 4096 | 0.857 | 0.108 | 0.973 | 0.149 | 0.103 | 11.999 Set | 16384 | 0.896 | 0.145 | 0.975 | 0.146 | 0.017 | 8.088 Xor | 0 | 0.42 | 0.057 | 0.479 | 0.103 | 0.086 | 12.253 Xor | 1024 | 3.453 | 0.317 | 3.94 | 0.469 | 0.346 | 12.356 Xor | 4096 | 12.378 | 1.507 | 13.351 | 1.299 | 0.764 | 7.286 Xor | 16384 | 44.231 | 0.937 | 50.957 | 1.791 | 1.526 | 13.199 To speed up the array-based constructors and `CopytTo` (especially, admittedly, after the switch to uint....), added in-out blitting/splatting. For byte arrays this really only works on little-endian based architectures, so we have to fall back on other methods at that point. +17782 area-System.IO Disable parts of MemoryMappedFile tests for desktop Fix https://github.com/dotnet/corefx/issues/17725 by disabling for desktop. This was an intentional improvement made in https://github.com/dotnet/corefx/commit/e3e764f22db3e2f6f1fb9f0b78d291caea52d3d9 by @stephentoub . +17783 area-System.Memory Add array CopyTo Span and remove the unnecessary Span class As part of: https://github.com/dotnet/corefxlab/issues/1314 / https://github.com/dotnet/corefxlab/issues/1292 API approved: https://github.com/dotnet/corefx/issues/17414 cc @jkotas, @shiftylogic +17788 area-System.Runtime Fix Type tests using netfx The following test failures occur running `msbuild /T:BuildAndTest /P:TargetGroup=netfx` ``` System.Tests.TypeTestsExtended.GetTypeByName [FAIL] System.TypeInitializationException : The type initializer for 'System.Tests.TypeTestsExtended' threw an excepti on. ---- System.UnauthorizedAccessException : Access to the path 'C:\Users\hughb\Documents\GitHub\corefx\bin\AnyOS. AnyCPU.Debug\System.Runtime.Tests\netstandard\TestLoadAssembly.dll' is denied. Stack Trace: at System.Tests.TypeTestsExtended.GetTypeByName() ----- Inner Stack Trace ----- at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalDelete(String path, Boolean checkHost) C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime\tests\System\TypeTests.cs(321,0): at System.Tests.T ypeTestsExtended..cctor() System.Tests.TypeTestsExtended.GetTypeByNameTypeloadFailure [FAIL] System.TypeInitializationException : The type initializer for 'System.Tests.TypeTestsExtended' threw an excepti on. ---- System.UnauthorizedAccessException : Access to the path 'C:\Users\hughb\Documents\GitHub\corefx\bin\AnyOS. AnyCPU.Debug\System.Runtime.Tests\netstandard\TestLoadAssembly.dll' is denied. Stack Trace: at System.Tests.TypeTestsExtended.GetTypeByNameTypeloadFailure() ----- Inner Stack Trace ----- at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalDelete(String path, Boolean checkHost) C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime\tests\System\TypeTests.cs(321,0): at System.Tests.T ypeTestsExtended..cctor() System.Tests.TypeTestsExtended.GetTypeByNameCaseSensitiveTypeloadFailure [FAIL] System.TypeInitializationException : The type initializer for 'System.Tests.TypeTestsExtended' threw an excepti on. ---- System.UnauthorizedAccessException : Access to the path 'C:\Users\hughb\Documents\GitHub\corefx\bin\AnyOS. AnyCPU.Debug\System.Runtime.Tests\netstandard\TestLoadAssembly.dll' is denied. Stack Trace: at System.Tests.TypeTestsExtended.GetTypeByNameCaseSensitiveTypeloadFailure() ----- Inner Stack Trace ----- at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalDelete(String path, Boolean checkHost) C:\Users\hughb\Documents\GitHub\corefx\src\System.Runtime\tests\System\TypeTests.cs(321,0): at System.Tests.T ypeTestsExtended..cctor() ``` Looking into this, I noticed that if I disabled two of the three failing tests, no exception was thrown and the non-disabled test that was previously failing would pass. This suggested that this is a test issue - that the tests are running parallel to each other and this causes failures. After investigation, it seemed that this is caused by trying to delete a file at the same time that it is being moved. This caused a race condition - but I'm not sure why it only occurs on desktop. The fix is to avoid moving and deleting sources. Instead, we can just refer to the original assembly instead of the new destination assembly. This also requires modifying the tests that expect a FileNotFoundException trying to access the original assembly - this is because we previously deleted it. This is not a problem, as we can modify the test data, and it has exactly the same meaning - trying to load an assembly that doesn't exist. Contributes to #17723 @rakhu @danmoesemsft +17790 area-System.Runtime Fix WaitHandleTests caused by recent fixes in coreclr Updates tests for https://github.com/dotnet/coreclr/pull/10650. This can be cherry-picked and closed when we update coreclr See also #17789 Contributes to #17723 @jkotas +17791 area-System.Numerics API Proposal: InvSquareRoot for Vector Having the ability to calculate the inverse square root is much better for performance than square root in several situations, for example: normalising a vector, since it avoids using division. Inverse square root would only have an implementation for singles since there is no equivalent intrinsic for doubles, so this is the proposed method: `public static Vector InvSquareRoot(Vector value)` Which would map directly to these intrinsics: SSE2: `__m128 _mm_rsqrt_ps (__m128 a)` AVX: `__m256 _mm256_rsqrt_ps (__m256 a)` NEON: `float32x4_t vrsqrteq_f32(float32x4_t a)` +17792 area-System.Runtime Fix Guid tests using netfx This consists of expected parameter name differences in the ctor and test cases for #6316, a desktop bug where Guid.TryParse throws an exception Contributes to #17723 +17793 area-System.Memory Proposal: Add Overlaps(...) extension method for ReadOnlySpan ### Problem A method reading from a `ReadOnlySpan` and writing to a `Span` may produce incorrect results if the two spans overlap and the method overwrites data it has not read yet. Here is a minimal but complete example that demonstrates the problem: ```csharp public static void Twice(ReadOnlySpan src, Span dst) { for (var i = 0; i < src.Length; i++) { dst[2 * i + 0] = src[i]; dst[2 * i + 1] = src[i]; } } [Fact] public static void Test1() { var src = new byte[] { 1, 2, 3, 4, 5, 6 }; var dst = new byte[] { 1, 2, 3, 4, 5, 6 }; Twice(new ReadOnlySpan(src, 0, 3), new Span(dst)); Assert.Equal(new byte[] { 1, 1, 2, 2, 3, 3 }, dst); // works! } [Fact] public static void Test2() { var src = new byte[] { 1, 2, 3, 4, 5, 6 }; var dst = src; Twice(new ReadOnlySpan(src, 0, 3), new Span(dst)); Assert.Equal(new byte[] { 1, 1, 2, 2, 3, 3 }, dst); // fails! actual value: { 1, 1, 1, 1, 1, 1 } } ``` It's a very small corner case, but it can lead to very subtle, hard-to-find bugs. The problem can be prevented in `Twice` by * making a defensive copy, or * adding a check if the two spans overlap. The copy is much more expensive, so it would be nice if it could be avoided. With `ArraySegment` arguments, the check can look like this: ```csharp public static void Twice(ArraySegment src, ArraySegment dst) { if (src.Array == dst.Array && src.Offset < dst.Offset + dst.Count && dst.Offset < src.Offset + src.Count) { throw new ArgumentException(); } for (int i = 0; i < src.Count; i++) { dst.Array[dst.Offset + 2 * i + 0] = src.Array[src.Offset + i]; dst.Array[dst.Offset + 2 * i + 1] = src.Array[src.Offset + i]; } } ``` This proposal is to add an API that enables similar checks for spans. ### Proposed API ```csharp public static class SpanExtensions { public static bool Overlaps(this ReadOnlySpan first, ReadOnlySpan second); } ``` *Open questions:* * Are overloads for all four combinations of `Span` and `ReadOnlySpan` needed * Should the name be `Overlaps` (like `Equals`) or `Overlap` (like `SequenceEqual`) * Should the method return `true` or `false` if one or both of the spans is empty * Should the method return the overlapping range rather than a `bool` * Does it belong in SpanExtensions * ... *Usage:* ```csharp public static void Twice(ReadOnlySpan src, Span dst) { if (src.Overlaps(dst)) { throw new ArgumentException(); // or src = src.ToArray(); } for (int i = 0; i < src.Length; i++) { dst[2 * i + 0] = src[i]; dst[2 * i + 1] = src[i]; } } ``` ### Prototype Implementation I've come up with the following implementation that I would use if there is no strong need for an official API. It's based on the current implementation of the [`SpanHelpers.CopyTo`](https://github.com/dotnet/corefx/blob/f17a94868f4a62c22c75b5710d19ab928f896e5e/src/System.Memory/src/System/SpanHelpers.cs#L23) method. ```csharp public static class SpanExtensions { public static bool Overlaps(this ReadOnlySpan first, ReadOnlySpan second) { ref T x1 = ref first.DangerousGetPinnableReference(); ref T y1 = ref second.DangerousGetPinnableReference(); ref T x2 = ref Unsafe.Add(ref x1, first.Length); ref T y2 = ref Unsafe.Add(ref y1, second.Length); // return (x1 < y2) && (y1 < x2) IntPtr diff1 = Unsafe.ByteOffset(ref x1, ref y2); IntPtr diff2 = Unsafe.ByteOffset(ref y1, ref x2); return (IntPtr.Size == sizeof(int) ? (int)diff1 > 0 : (long)diff1 > 0) && (IntPtr.Size == sizeof(int) ? (int)diff2 > 0 : (long)diff2 > 0); } } ``` It looks simple, but I'm not sure if it's correct. For example, is it legal to have `Unsafe.Add` return a `ref` past the end of a span if the `ref` is not dereferenced? ------ ### Update :boom: The above implementation has several bugs. A pull request with the latest code is [here](https://github.com/dotnet/corefx/pull/24980). +17795 area-System.Collections Question: Immutable views Can we implement immutable interfaces for arrays, lists, dictionaries, etc? ```cs var mutableArray = new[] { .. }; IImmutableArray immutableArray = mutableArray; var mutableList = new List { .. }; IImmutableList immutableList = mutableList; ``` +17796 area-System.Net Fix MaxResponseHeadersLengthSemantics The new HttpClientHandler.MaxResponseHeadersLength property is defined differently from the similarly named WebRequestHandler and HttpWebRequest properties. The units are supposed to be in Kilobytes (1024 bytes). This problem was discovered while doing .NET Core vs. .NET Framework compat testing. Fix the semantics to match the existing WebRequestHandler and HttpWebRequest properties. Adjust tests. Contributes to #17691 +17797 area-Infrastructure Get ambiguous type identity error when using package 'Microsoft.CodeAnalysis.CSharp/2.0.0' in a project that targets 'netcoreapp2.0' "I ran into this when using the package [`Microsoft.CodeAnalysis.CSharp/2.0.0`](https://www.nuget.org/packages/Microsoft.CodeAnalysis.CSharp/) (_2.0.0 is the latest version I can find_) in my project targeting `netcoreapp2.0`. `Microsoft.CodeAnalysis.CSharp/2.0.0` depends on `Microsoft.CodeAnalysis.Common/2.0.0` which pulls in `System.ValueTuple/4.3.0`. However, the types in `System.ValueTuple.dll` are already exposed from `System.Runtime.dll` when targeting `netcoreapp2.0`, and thus using any of those types results in ambiguous type identity error: ``` Program.cs(9,45): error CS0433: The type 'TupleExtensions' exists in both 'System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' [D:\apps\netcore2\test\test.csproj] ``` Here is a simple repro: ```c# using System; namespace test { class Program { static void Main(string[] args) { Console.WriteLine(typeof(System.TupleExtensions).FullName); } } } Exe netcoreapp2.0 win10-x64 ``` It looks `netcoreapp2.0` doesn't come with `Microsoft.CodeAnalysis.CSharp.dll` and `Microsoft.CodeAnalysis.dll`. How should I consume the `Microsoft.CodeAnalysis.CSharp` package then?" +17798 area-System.Globalization Add the Globalization Invariant mode tests +17799 area-Microsoft.CSharp Microsoft.CSharp.RuntimeBinder.Semantics.Expr Refactoring * Make `Expr.Kind` abstract. Only store a value in the case of unary and binary operators, otherwise the value is fixed for each derived type. As well as slightly reducing instance size this guarantees correctness in those cases. * Narrow return types to `ExprOperator` when possible. (Or narrower again, if possible). Reduces the amount of casting done, and the potential for mis-casting. * Make `Expr.Type` virtual. Only store when necessary, via new intermediate base class. Calculate when possible, or have default behaviour of returning null when not relevant for a given type of `Expr`. * Remove assignment of default values to fields of new objects in factories. These are no-ops, and removing them serves to simplify the factory methods. * Remove `ExprTypeOrNamespace` `ExprClass` is the only derived class, so remove `ExprTypeOrNamespace` and tighten declarations to just that, removing several casts no longer necessary and eliminating cases where a namespace could exist where a type is needed or vice versa. * Remove `ITypeOrNamespace` There are no longer any cases that could be either a `CType` or an `AssemblyQualifiedNamespaceSymbol`, so this interface no longer serves any purpose. +17800 area-Microsoft.CSharp De-spaghetti Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.VisitChildren The switch statement contains a lot of `goto` jumps. Resolve these in the source so that the behaviour is identical, but the paths are clearer. +17801 area-System.Data No host_name when connecting to SQL Server I am facing problems deploying an ASP.NET Core Web API using Entity Framework Core. When I connect to the SQL Server, the session has no host_name, in development there's no problem and works fine, but the production servers have a Logon Trigger that checks the host_name and the login_name to grant access, so I'm getting the error Logon failed for login 'user' due to trigger execution. When I compare the sessions from a ASP.NET Web API using Entity Framework and the ASP.NET Core, the Core version has no host_name: `SELECT * FROM SYS.DM_EXEC_SESSIONS where login_name like '%user%'` ![image](https://cloud.githubusercontent.com/assets/8509636/24593488/923ddd5e-17e9-11e7-82ad-13d18a65c4af.png) Is there a way for ASP.NET Core to send the host_name in the connection to SQL Server? I'm using AspNetCore v1.0.1 and EntityFrameworkCore v1.1.0 +17802 area-System.Net System.Net.Security.SslStream - AuthenticateAsClientAsync is not presenting intermediate certs unless they are installed in the cert store SslStream::AuthenticateAsClientAsync is not presenting intermediate certificates unless they are installed in the cert store. I've attached a repro of the issue and confirmed this behavior with Windows and Mac. The desired behavior is that the contents of the X509CertificateCollection parameter should appear on the server side even if the certs are not installed in the cert store. [SslStream.zip](https://github.com/dotnet/corefx/files/888897/SslStream.zip) +17804 area-System.Runtime Add custom marshaler tests I was looking at where we were missing coverage for Exception being thrown instead of ApplicationException (#17789) and noticed we were missing coverage for ICustomMarshaler - a class that uses ApplicationException heavily. I added some tests as part of it. They exert a bunch of codepaths in the c++ implementation over at coreclr - now they pass with netfx, whereas they didn't before. @jkotas +17807 area-System.Globalization System.Globalization IdnMappingIdnaConformanceTests failing on Win10 RS2 Fixes https://github.com/dotnet/corefx/issues/17433 The Unicode 9 test file has an hugely expanded surface of 5110 test lines (in comparison to the Unicode 6 test file which only had 850 lines). 1035 tests are failing BY DESIGN on Win10 >=RS2. Commented those out. I backed up the class, which automatically commented the failing tests out, locally. If I should include it, please tell. +17808 area-Microsoft.CSharp dynamic does not correctly handle single-rank non-sz arrays "The following non-dynamic unit test would pass: ```C# var d = Array.CreateInstance(typeof(int), new[] { 8 }, new[] { -2 }); d.SetValue(32, 3); d.SetValue(28, -1); Assert.Equal(32, d.GetValue(3)); Assert.Equal(28, d.GetValue(-1)); ``` However, changing the type of `d` to `dynamic` causes it to fail with an `InvalidCastOperation` reporting ""Unable to cast object of type 'System.Int32[*]' to type 'System.Int32[]'.""" +17809 area-Microsoft.CSharp dynamic code error messages mis-report array names. "E.g. with something like: ```C# dynamic d = new int[1,2]; string s = d; ``` The error message is `""Cannot implicitly convert type 'int[*,*]"" to 'string'` rather than `""Cannot implicitly convert type 'int[,]' to 'string'""` Conversely single-rank arrays are described with something like `int[]` even when non-sz in which case there should indeed be an asterisk." +17810 area-Microsoft.CSharp Fix two array-related bugs in Microsoft.CSharp Handle dynamic containing non-SZ single-rank arrays. Fixes #17808 Correct names of array types in dynamic-related error messages. Fixes #17809 +17811 area-Meta Omissions in types supported by both Desktop and Core - CannotSealType Parent: https://github.com/dotnet/corefx/issues/15255 The following types are sealed in netcore but not in netfx: ``` System.Runtime.InteropServices.RuntimeEnvironment System.Security.Cryptography.SHA1Managed System.Security.Cryptography.SHA256Managed System.Security.Cryptography.SHA384Managed System.Security.Cryptography.SHA512Managed System.Net.HttpVersion ``` @karelz I think multiple area labels make sense here as this issue is like a container for discussions around CannotSealType errors. +17812 area-System.Net HttpWebRequest.SendRequest fails on UAP due to settting MaximumAutomaticRedirections to 50 The UAP specific code in https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpClientHandler.cs will throw PlatformNotSupportedException if the MaximumAutomaticRedirections is to set anything but 10 (citing WinInet behavior). But the code in HttpWebRequest.SendAsync sets the property to the value from HttpHandlerDefaults which is 50. Basically any usage of the HttpWebRequest.SendAsync on UAP will fail due to this. +17815 area-Infrastructure Fix TestILC-related auto-upgrade config See https://github.com/dotnet/corefx/pull/17806 +17817 area-System.Security NS2.0 members SHAxxxCSP missing from netcoreapp These were recently added to NS20. @steveharter they need implementing for Windows as well as [Unix](https://github.com/dotnet/corefx/issues/17163) ``` TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. ``` +17819 area-Infrastructure Ensure we build packages for everything that's been impacted by `net461` > `netstandard2.0` remapping. See https://github.com/dotnet/standard/issues/282. We need to examine all the 1.1 packages to see if anything else is impacted in a similar way. +17820 area-System.Security Cryptography types in core and netstandard20 more restricted than in netfx These classes are marked as sealed (static) in core and netstandard but aren't in netfx: ``` System.Security.Cryptography.SHA1Managed System.Security.Cryptography.SHA256Managed System.Security.Cryptography.SHA384Managed System.Security.Cryptography.SHA512Managed ``` We are getting a few omission errors: - CannotRemoveBaseTypeOrInterface - CannotMakeMemberNonVirtual https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 Are these classes intentionally now more restrict than before (also in NS2.0)? Some members are also now not virtual anymore. Wouldn't that be a breaking change for netfx NS2.0 compatibility? cc: @bartonjs @danmosemsft +17821 area-System.Net Fix PNSE with HttpClientHandler.MaxAutomaticRedirections property This's a temporary fix for issue https://github.com/dotnet/corefx/issues/17812 to get us unblocked for ns2.0 UWP app-compact. +17825 area-Infrastructure Add ILLink to the build "This adds ILLink (a .NET Core build of the mono linker) to the build tools and uses it to trim non-public unreachable IL and metadata from our assemblies. This is enabled by default for any assembly that is part of NETCore.App. This can be disabled by setting ILLinkTrimAssembly=false. In some cases ILLink may trim too much, for example a runtime dependency via reflection on private or internal API. If we cannot update ILLink to understand this dependency via heuristic then we can manually ""root"" the private or internal API. This is done by adding an XML file next to the project with the name ILLinkTrim.xml that follows the format documented here: https://github.com/mono/linker/blob/master/linker/README Replaces https://github.com/dotnet/corefx/pull/17632 /cc @erozenfeld @sbomer @weshaggard " +17826 area-System.Runtime Fix registry enumeration. Key data (values and subkeys) can change while we're in the midst of enumerating. This is causing intermittent failures in tests as ERROR_NO_MORE_ITEMS surfaces as an exception as we try and iterate past removed data. In addition, allocating 32K to get value names causes 32K * number of items to get natively allocated on the heap. While these allocs are returned on each iteration it could potentially cause significant grief for large keys and concurrent heap allocations. Above and beyond this, allocating 64K for what are typically < 20 character names is a bit crazy, and as such we'll optimize for the common case. Related to #17037, #16961- **however** this doesn't directly fix those as there is another copy of the registry code in System.Private.Corelib that those issues are actually using. I'll be following up shortly with the SPCL fix. +17829 area-Serialization Fix DataContractSerializer ReflectionOnly tests The DataContractSerializer tests when in ReflectionOnly mode try to get `DataContractSerializer.Option` setter method through reflection which is not available in Desktop so when trying to run this tests in netfx we would get failures. Fixes: https://github.com/dotnet/corefx/issues/17774 cc: @danmosemsft +17830 area-System.Data Change command cancellation to use a specific cancellationOwner field, rather than the more generic Owner field "This change brings SqlClient cancellation in line with Framework. Currently, we use the Owner field in TdsParserStateObject to check the Cancel() caller, but overloading the Owner field with BulkCopy introduced some issues with the TdsParserStateObject not being disposed, since it was setting the Owner field to manage cancellation. This change introduces the ""StartSession"" behavior from framework, and uses a specific cancellationOwner field. (This field in Framework is represented as an int though, since it's an objectID also used with BID tracing.)" +17831 area-Infrastructure Add back package for System.Reflection.TypeExtensions Fixes #17819 System.Reflection.TypeExtensions is not part of NETStandard.Library. It's included in NetCore.App, but the package is required in order to ship the netstandard ref and desktop implementation. We must ship the higher version of API (4.1.x) on net461 now that net461 supports netstandard2.0. Previously this API was only supported starting with net462. /cc @weshaggard @pranavkm +17832 area-System.Security [Port to 1.1.x] Fix the P/Invoke target for System.Security.Cryptography.Algorithms.Tests The crypto shim got renamed, but a capabilities probe in the S.S.C.Algorithms test library didn't get the memo. This didn't matter much because the old shim name is still produced for compatibility, but it got highlighted in a test with packages change. This change removes the duplicate definition of the library name, and includes the Unix library names list, but leaves the individual targeted methods in place. Fixes #16047, by cherry-picking the commit from #13123. +17833 area-System.Data SqlDependency Class Support Does .Net Core/Entity Framework support SQL Dependancies and if not directly, is there a way in .Net Core to receive notifications when data changes in SQL Server? +17835 area-System.Net Move System.Net.Cookie to System.Net namespace Move Cookie to System.Net namespace for UAP since cookie is in ns2.0 public System.Net contract. +17836 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25204-02, preview1-25204-02, beta-25204-00, beta-25204-00, preview1-25204-01, respectively (master) +17838 area-Infrastructure Ensure we build all of pkg folder This turns back on ~~Microsoft.NETCore.Targets~~ and Microsoft.Private.PackageBaseline. /cc @weshaggard @MattGal +17839 area-System.Text SBCSCodePageEncoding with ExceptionFallback throws NullPointerException "When decoding a byte array to a string using a single-byte character set code page encoding with `DecoderFallback.ExceptionFallback` as the decoder fallback, upon encountering a byte not defined in the encoding, the method `System.Text.SBCSCodePageEncoding.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, DecoderNLS decoder)` throws a `System.NullReferenceException`. The expected behavior here is to throw a `System.Text.DecoderFallbackException`. Test program: ```cs using System; using System.Linq; using System.Text; namespace GetStringNullReferenceException { class Program { static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding win1252 = Encoding.GetEncoding(""windows-1252"", EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback); var enc = new byte[] { 0x81 }; Console.WriteLine(win1252.GetString(enc)); } } } ``` Traceback is: ``` Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Text.SBCSCodePageEncoding.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, DecoderNLS decoder) at System.Text.EncodingNLS.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount) at System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding) at System.Text.EncodingNLS.GetString(Byte[] bytes, Int32 index, Int32 count) at GetStringNullReferenceException.Program.Main(String[] args) in C:\temp\GSNRE\Program.cs:line 14 ``` Target framework is `netcoreapp1.1` with the package `System.Text.Encoding.CodePages` at version `4.3.0`." +17840 area-System.Runtime "Add ""mono"" configuration to System.Runtime.Extensions and its dependencies" +17842 area-System.Net Desktop and Core behavior differences in System.Net.Requests There are some differences in behavior between .NET Framework (Desktop) and .NET Core which are causing these tests to fail: > xUnit.net Console Runner (64-bit .NET 4.0.30319.42000) Discovering: System.Net.Requests.Tests Discovered: System.Net.Requests.Tests Starting: System.Net.Requests.Tests System.Net.Tests.HttpWebRequestHeaderTest.Ctor_VerifyHttpRequestDefaults(remoteServer: http://corefx-net.cloudapp.net/Echo.ashx) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 64 Stack Trace: s:\GitHub\corefx\src\System.Net.Requests\tests\HttpWebRequestHeaderTest.cs(32,0): at System.Net.Tests.HttpWebRequestHeaderTest.Ctor_VerifyHttpRequest Defaults(Uri remoteServer) System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_ServicePoint_Throws(remoteServer: http://corefx-net.cloudapp.net/Echo.ashx) [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: s:\GitHub\corefx\src\System.Net.Requests\tests\HttpWebRequestHeaderTest.cs(81,0): at System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_Service Point_Throws(Uri remoteServer) System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_ServicePoint_Throws(remoteServer: https://corefx-net.cloudapp.net/Echo.ashx) [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: s:\GitHub\corefx\src\System.Net.Requests\tests\HttpWebRequestHeaderTest.cs(81,0): at System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_Service Point_Throws(Uri remoteServer) System.Net.Tests.HttpWebResponseHeaderTest.HttpWebResponse_Close_Success [FAIL] Assert.Throws() Failure Expected: typeof(System.ObjectDisposedException) Actual: (No exception was thrown) +17843 area-System.IO On Linux, on an NTFS volume, DirectoryInfo.Attributes does not include ReparsePoint "Given this directory structure on an NTFS volume ``` E:. +---sub | | sym-to-other | | | +---junction-to-other | | | \---symd-to-other | \---sub_other ``` running `dir` from the Windows command line shows ``` 04/02/2017 05:27 PM junction-to-other [\??\E:\link-test\sub_other] 04/02/2017 05:27 PM sym-to-other [E:\link-test\sub_other] 04/02/2017 05:27 PM symd-to-other [..\sub_other] ``` Moving the NTFS device to a Linux box, `ls -a` from bash shows ``` lrwxrwxrwx 2 jeff jeff 72 Apr 3 14:10 junction-to-other -> /media/jeff/My Book/link-test/sub_other lrwxrwxrwx 2 jeff jeff 68 Apr 3 14:10 symd-to-other -> ../sub_other lrwxrwxrwx 2 jeff jeff 116 Apr 3 14:10 sym-to-other -> /media/jeff/My Book/.NTFS-3G/E:/link-test/sub_other ``` Invoking the `DirectoryInfo` constructor with `""junction-to-other""` results in a DirectoryInfo object whose `Attributes` property contains `Directory`, but not `ReparsePoint`. Constructors giving the other two types of symbolic link behave as expected. ``` var d = new DirectoryInfo(""symd-to-other""); // OK, Attributes has Directory | ReparsePoint var s = new DirectoryInfo(""sym-to-other""); // OK, Attributes has ReparsePoint var j = new DirectoryInfo(""junction-to-other""); // Bad, Attributes has Directory, but not ReparsePoint ``` " +17844 area-System.IO On Linux, on an NTFS volume, DirectoryInfo.Delete() fails to delete the junction "Given this directory structure on an NTFS volume ``` E:. +---sub | | sym-to-other | | | +---junction-to-other | | | \---symd-to-other | \---sub_other ``` running `dir` from the Windows command line shows ``` 04/02/2017 05:27 PM junction-to-other [\??\E:\link-test\sub_other] 04/02/2017 05:27 PM sym-to-other [E:\link-test\sub_other] 04/02/2017 05:27 PM symd-to-other [..\sub_other] ``` Moving the NTFS device to a Linux box, `ls -a` from bash shows ``` lrwxrwxrwx 2 jeff jeff 72 Apr 3 14:10 junction-to-other -> /media/jeff/My Book/link-test/sub_other lrwxrwxrwx 2 jeff jeff 68 Apr 3 14:10 symd-to-other -> ../sub_other lrwxrwxrwx 2 jeff jeff 116 Apr 3 14:10 sym-to-other -> /media/jeff/My Book/.NTFS-3G/E:/link-test/sub_other ``` Creating a `DirectoryInfo` object for `""junction-to-other""` results in an object whose `Attributes` property has `Directory`. However, invoking `Delete()` on that object throws a `System.IO.IOException` with `HRESULT == 20`, and `Message == ""Not a directory""`. Invoking `Delete()` on objects created for the other two symbolic links successfully deletes the items." +17846 area-Infrastructure Update VerifyNETStandard target to use live netstandard package We never updated the VerifyNETStandard target in our pkg package when we started automatically consuming the NETStandard.Library package so this change fixes it to use the same package as we are consuming elsewhere in corefx. Also adds System.ServiceModel.Web shim to the set of shims we support PTAL @ericstj +17847 area-System.Net FIx System.Net.Requests tests for Desktop Adjust tests to run clean against Desktop. Contributes to #17842 +17850 area-Serialization A basic version of SGEN Tool Fix #17580 @shmao @mconnew @zhenlan +17851 area-System.Security Add enhanced overloads for RSA and DSA.Create During the design of the ECC import/export feature we concluded that better overloads for the asymmetric algorithms' Create methods should exist which allow the user to specify the generation space (an ECCurve for ECC, a keysize for RSA and DSA) or to specify key parameters for importing. These methods are currently pure convenience, but in the future they could end up using the arguments to change a preferred back-end provider; for example, on netfx RSA.Create(RSAParameters) could prefer RSACng when the Exponent is larger than 4 bytes, since RSACryptoServiceProvider cannot process those keys. Fixes #8688, completes #8487 (for corefx) ECDsa: Done in .NET Core (1.0) and [.NET Framework](https://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdsa.create(v=vs.110).aspx) (4.7) RSA: Done in .NET Core (2.0, this change) DSA: Done in .NET Core (2.0, this change) ECDiffieHellman: Not yet available in corefx, done in [.NET Framework](https://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellman.create(v=vs.110).aspx) (4.7) +17852 area-System.Net Custom SNI (Server Name Indication) support in HttpClient I have a case where I need to establish HTTPS connection to an endpoint that may hosts several virtual HTTPS endpoints which name does not match the endpoint name and I need to use SNI to select a virtual server. https://en.wikipedia.org/wiki/Server_Name_Indication Experiments with HttpClient show that Client Hello message contains the same name as the endpoint name and I cannot find a way to change it to a different virtual server name. Any suggestion on how to do this? +17853 area-System.Net Add OSX specific test in System.Net.Sockets fixes: https://github.com/dotnet/corefx/issues/16716 cc: @karelz +17856 area-System.Threading Get tests building for Dataflow The tests are in `src/System.Threading.Tasks.Dataflow/tests` but they need a .csproj added that builds them successfully, and issues opened for tests that fail, with those disabled against that issue number. +17857 area-System.IO Dead tests in System.IO.Ports Should these be added to compilation, or deleted? ``` src/System.IO.Ports/tests/Legacy/Manual/Regression_142639.cs src/System.IO.Ports/tests/Legacy/Manual/USB_Serial_Regression.cs src/System.IO.Ports/tests/Support/Sleep.cs ``` @willdean +17858 area-System.Diagnostics Apparently dead sources in S.Diagnostics.Tracing In a quick look there seems lots of dead code in tracing. Should any of it be being compiled, or possibly deleted? @brianrob ``` src/Common/tests/System/Diagnostics/Tracing/ConsoleEventListener.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/ActivityTracker.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventActivityOptions.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventProvider.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventSource.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventSourceException.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventSource_ProjectN.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/StubEnvironment.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/ArrayTypeInfo.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/ConcurrentSet.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/ConcurrentSetItem.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/DataCollector.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EmptyStruct.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EnumHelper.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EnumerableTypeInfo.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventDataAttribute.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventFieldAttribute.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventFieldFormat.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventIgnoreAttribute.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventPayload.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventSourceActivity.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/EventSourceOptions.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/FieldMetadata.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/InvokeTypeInfo.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/NameInfo.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/PropertyAnalysis.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/SimpleEventTypes.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/SimpleTypeInfos.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/Statics.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingDataCollector.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingDataType.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventSource.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventTraits.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventTypes.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingMetadataCollector.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingTypeInfo.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/TraceLogging/TypeAnalysis.cs src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/Winmeta.cs src/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestsLowTrust.cs src/System.Diagnostics.Tracing/tests/CustomEventSources/EventSourceNamedEventSource.cs src/System.Diagnostics.Tracing/tests/CustomEventSources/EventSourceWithInheritance.cs src/System.Diagnostics.Tracing/tests/EvtSrcForReflection/EsrResources.Designer.cs src/System.Diagnostics.Tracing/tests/EvtSrcForReflection/EventSourceForReflection.cs ``` Perhaps these also? ``` Common/src/Interop/Windows/advapi32/Interop.EventRegister.cs Common/src/Interop/Windows/advapi32/Interop.EventSetInformation.cs Common/src/Interop/Windows/advapi32/Interop.EventUnregister.cs Common/src/Interop/Windows/advapi32/Interop.EventWrite.cs Common/src/Interop/Windows/advapi32/Interop.EventWriteTransfer.cs ``` +17859 area-System.Xml Remove XML related files that are apparently dead None of these are compiled, I think. @sepidehMS @krwq do we need any? Do you know why they are there? We should have a careful look. They may represent missed work. +17860 area-Meta Dead interop files These are apparently not used in the build. If we need them in future, we can restore them or recreate them. +17861 area-System.Security Fix export of odd-byte-length RSA keys on macOS RSA 1032 has a 129 byte modulus, which means the halfModulus values are 64.5 byte values (64 bytes and a nybble). Round up the division so that the extra nybble has a place to go. Fixes the bug discovered by #17851 +17862 area-System.Threading Dead threading related sources @alexperovich can these be deleted - they aren't built. Are the tests needed - should they be being compiled? +17863 area-System.Globalization Missing glob test This test file wasn't being built. Added to build. Removed some tests that were already duplicated elsewhere. +17864 area-System.IO Remove dead handle files and FileOptions These are all either already moved to corelib, or in the netstandard1.3 file case, not used. None are being built. @JeremyKuhne +17865 area-Serialization Remove dead serialization files These were all moved to corelib. They aren't building and should ahve been deleted. @shmao +17866 area-Meta "Review ""dead"" code (not getting compiled)" None of these are getting compiled. All either need deleting, or hooking up to the build , as appropriate. (I've either opened issues or put up PR's for all the other dead files I found) - [ ] Common/tests/System/Net/Sockets/Performance/SocketTestClientAPM.cs - [ ] System.CodeDom/src/System/CodeDom/Compiler/CompilerParameters.Evidence.cs - [ ] System.CodeDom/src/System/CodeDom/Compiler/CompilerResults.Evidence.cs - [ ] System.Data.Common/src/System/Data/Common/DbProviderFactory.CreatePermission.cs - [x] System.Data.SqlClient/tests/Tools/TDS/TDS/TDSPacketTokenType.cs - [x] System.Data.SqlClient/tests/Tools/TDS/TDS/TDSPacketType.cs - [ ] System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/CertificateCollectionDeltas.cs - [ ] System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/ValueList.cs - [ ] System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/ValueListEnumerator.cs - [ ] System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/config.cs - [ ] System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/testobj.cs - [ ] System.DirectoryServices.AccountManagement/tests/testobj.cs - [ ] System.DirectoryServices/src/System/DirectoryServices/DirectoryDescriptionAttribute.cs - [ ] System.Net.Http/tests/FunctionalTests/prerequisites/BasicAuthModule.cs - [ ] System.Net.Sockets/tests/PerformanceTests/SocketPerformanceAPMTests.cs - [ ] System.Net.WebSockets/tests/WebSocketExceptionTests.netstandard17.cs - [x] System.Runtime.Extensions/src/System/IO/Path.Win32.cs - [ ] System.Runtime.Numerics/tests/BigInteger/add.cs - [ ] System.Runtime.WindowsRuntime/src/System/IO/IsolatedStorage/IsolatedStorageFileIOHelper.cs - [ ] System.Runtime/tests/Common/CompareHelper.cs - [ ] System.Runtime/tests/Performance/Perf.Array.cs - [ ] System.Runtime/tests/netstandard.1.7.Tests.cs - [ ] System.Security.AccessControl/tests/CommonSecurityDescriptor/CommonSecurityDescriptor_CreateFromBinaryForm.cs - [ ] System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/IncrementalHash.net46.cs +17867 area-System.ComponentModel Don't set CustomErrorMessageSet to true for default constructions of ValidationAttributes Fixes #4481 Doesn't seem like a better way to test this as CustomErrorMessageSet is an internal property +17868 area-Infrastructure Updating CoreClr dependencies to servicing-25204-01 +17869 area-Infrastructure Update CoreClr to servicing-25204-01 (release/1.1.0) +17870 area-System.Net Can't join IPv6 multicast group on Linux "I'm getting an error when trying to join a multicast group with an IPv6 address on ubuntu 16.04. I get no errors when using IPv4 address or when executing the same code on windows 7 and 10. The issue https://github.com/dotnet/corefx/issues/14684 is similar but not the same because I have no problems getting udp multicast packages using IPv4. dotnet version: 1.0.1 OS: ubuntu 16.04 x64 Error occurs for all NICs ``` System.Net.Sockets.SocketException: Invalid argument at System.Net.Sockets.Socket.SetIPv6MulticastOption(SocketOptionName optionName, IPv6MulticastOption MR) at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Object optionValue) ``` Repro: https://github.com/PawelGerr/DotnetCoreUdpMulticast Executable: https://github.com/PawelGerr/DotnetCoreUdpMulticast/tree/master/published/ubuntu.16.04-x64 .csproj-File ```csproj Exe netcoreapp1.1 win7-x64;win10-x64;ubuntu.16.04-x64 ``` Program.cs ```c# using System; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Text; using System.Threading; namespace UdpMulticastTest { class Program { static void Main(string[] args) { var socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); socket.Bind(new IPEndPoint(IPAddress.IPv6Any, 2222)); foreach (var nic in NetworkInterface.GetAllNetworkInterfaces()) { try { var props = nic.GetIPProperties().GetIPv6Properties(); socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.AddMembership, new IPv6MulticastOption(IPAddress.Parse(""ff08::ef00:de""), props.Index)); Console.WriteLine(""Joined multicast group: NIC = "" + nic.Name); } catch (Exception ex) { Console.WriteLine(""Exception while joining multicast group: NIC = "" + nic.Name + ""; Exception: "" + ex); } } Console.WriteLine(""Press ENTER to exit.""); Console.ReadLine(); } } } ``` " +17871 area-System.Threading Dataflow: Add options for Task Faulting "When using a `DataBlock` in `Tpl.DataFlow`, if a task in the block becomes faulted, then the entire block shuts down and must be completely re-initialised before it can be used again. For example var block = new ActionBlock(a => a.Invoke()); block.Post(() => Console.WriteLine(""First Item"")); //Printed block.Post(() => Console.WriteLine(""Second Item"")); //Printed block.Post(() => throw new ApplicationException(""Throwing an exception here"")); block.Post(() => Console.WriteLine(""Fourth Item"")); //Not Printed block.Post(() => Console.WriteLine(""Fifth Item"")); //Not Printed When using the blocks to construct an asyncronous queue for items, this can cause issues. You need to recreate the block and re-post any queued items that have not been processed. The below suggestions provide some additional functionality to allow devs to dictate whether a DataBlock should shut down in the event of a fault. **Suggested Change** Consider adding a new `ExecutionDataflowBlockOptions` property to control how the block acts in faulting scenarios. For example: `new ExecutionDataflowBlockOptions() { ContinueOnTaskFault = true; }` (`false` by default to preserve existing functionality). This functionality would effectively shift responsibility for managing the block faults to the developer. If they want to stop the block, they can call either `Complete` or action a `CancellationToken`. **Alternative** Add a new `ExecutionDataflowBlockOptions` property to specify a Faulting action, e.g. `new ExecutionDataflowBlockOptions() { FaultAction = (args) => HandleFault(args); }`. In this case, args would contain a property akin to `IsFaulted` that the action can set to `false` if they do not wish the block to stop." +17872 area-System.ComponentModel Compat bug in System.ComponentModel.Annotations tests for invalid RangeAttribute params "Example test: ```cs [Theory] [InlineData(typeof(int), ""1"", ""3"")] [InlineData(typeof(double), ""1"", ""3"")] public static void Validate_CantConvertValueToTargetType_ThrowsException(Type type, string minimum, string maximum) { var attribute = new RangeAttribute(type, minimum, maximum); Assert.Throws(() => attribute.Validate(""abc"", new ValidationContext(new object()))); Assert.Throws(() => attribute.IsValid(""abc"")); } ``` On netfx this test passes - `Exception` is thrown. On netcore this test fails - `ValidationException` is thrown. This was introduced when porting the library to .NET core, as `TypeDescriptor` did not exist. From the reference source (https://github.com/Microsoft/referencesource/blob/4fe4349175f4c5091d972a7e56ea12012f1e7170/System.ComponentModel.DataAnnotations/DataAnnotations/RangeAttribute.cs#L178-L182): ```cs TypeConverter converter = TypeDescriptor.GetConverter(type); IComparable min = (IComparable)converter.ConvertFromString((string)minimum); IComparable max = (IComparable)converter.ConvertFromString((string)maximum); Func conversion = value => (value != null && value.GetType() == type) ? value : converter.ConvertFrom(value); ``` From the .NET core source (https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RangeAttribute.cs#L200-L207): ```cs Func conversion = value => (value != null && value.GetType() == type) ? value : Convert.ChangeType(value, type, CultureInfo.CurrentCulture); var min = (IComparable)conversion(minimum); var max = (IComparable)conversion(maximum); Initialize(min, max, conversion); ``` I suggest this is triaged as a .NET core bug. I'm submitting a fix to align it with netfx behaviour." +17873 area-System.ComponentModel Compat bug in System.ComponentModel.Annotations tests for validating PhoneAttributes "The following phone numbers (obviously invalid) are valid with .NET core, and invalid with netfx. ```cs public static IEnumerable TestData() { yield return new object[] { ""+4+2+5+-+5+5+5+-+1+2++1+2++"" }; yield return new object[] { ""425-555-1212 "" }; yield return new object[] { "" \r \n 1 \t "" }; yield return new object[] { ""1-.()"" }; yield return new object[] { ""(425555-1212"" }; yield return new object[] { "")425555-1212"" }; } [Theory] [MemberData(nameof(TestData))] public static void Validate(string value) { Assert.False(new PhoneAttribute().IsValid(value)); } ``` On netfx: test passes On netcoreapp: test fails This regression was likely caused by #4319 I suggest this is triaged as a .NET core bug." +17874 area-System.ComponentModel Get System.ComponentModel.Annotations tests passing with netfx ## Commit 1 Fixes a regression from the full .NET framework when porting the library to .net core Fixes #17872 ## Commit 2 Nerfs tests for fixed bugs and added features See #2650, #4465 and #5203 ## Commit 3 Nerfs tests for .NET core bug. I'm not sure how to fix this one, though! See #17873 Fixes: #18149 Fixes: #18150 Fixes: #18148 Fixes: #18145 Fixes: #18146 Fixes #18542 +17875 area-System.Net Fix NetworkInterface.GetAllNetworkInterfaces segfault when interface provides no address. As documented in getifaddrs, ifa_addr may contain a null pointer. +17877 area-System.Linq Get System.Linq tests working with netfx All of these are expected differences - I've referenced the issue/pr which caused these differences in the skip messages or in the comments +17878 area-System.Net NameResolutionPalTests.GetHostByName_HostName failures in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_release_prtest/2914/consoleText ``` System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName [FAIL] System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_release_prtest/src/System.Net.NameResolution/src/System/Net/NameResolutionPal.Unix.cs(148,0): at System.Net.NameResolutionPal.GetHostByName(String hostName) /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_release_prtest/src/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs(53,0): at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName() System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName [FAIL] Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_release_prtest/src/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs(129,0): at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName() ``` +17881 area-System.Security Fix the key increment size for RSA on macOS The LegalKeySizes values seem to have been copied from the Windows (CNG) implementation, and only the minSize value adjusted to fit the environment. Exploratory testing has showed that macOS will create an RSA-1032 key when requested, making the keySize increment 8 bits instead of 8 bytes. Coverage for this scenario is already verified by the RSAKeyGeneration.GenerateSecondMinKey test, but was additionally verified by hand. +17882 area-System.Net Desktop and Core behavior differences in System.Net.WebClient There are some differences in behavior between .NET Framework (Desktop) and .NET Core which are causing some of these tests to fail or hang. +17883 area-System.Net Disable some System.Net.WebClient tests on Desktop Skip some tests on Desktop that are failing or hanging. Investigation will be tracked in #17882. +17885 area-System.Security Fixing test configurations for Cng and X509Certificates cc: @jkotas @weshaggard fixes #17764 +17888 area-System.Net Disable hanging test and disable parallelization in System.Net.Requests.Tests Disabling a hanging test on Desktop to have a full daily run in jenkins. Also I'm adding AssemblyInfo.cs file to disable parallelization on this tests to avoid Outerloop tests hang. +17891 area-Infrastructure *NO MERGE* intentionally empty commit +17892 area-System.Security Certificate Creation API "API Goals: * Be able to create self-signed certificates * Be able to programmatically chain sign certificates * Be able to issue a PKCS10 Certificate/Certification Signing Request to a CA. Non Goals: * To be a full CA product API Proposal: ```diff namespace System.Security.Cryptography.X509Certificates { + public sealed partial class CertificateRequest + { + public CertificateRequest(System.Security.Cryptography.X509Certificates.X500DistinguishedName subjectName, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(System.Security.Cryptography.X509Certificates.X500DistinguishedName subjectName, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(System.Security.Cryptography.X509Certificates.X500DistinguishedName subjectName, System.Security.Cryptography.X509Certificates.PublicKey publicKey, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(string subjectDistinguishedName, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(string subjectDistinguishedName, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public System.Collections.Generic.ICollection CertificateExtensions { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public System.Security.Cryptography.HashAlgorithmName HashAlgorithm { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public System.Security.Cryptography.X509Certificates.PublicKey PublicKey { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public System.Security.Cryptography.X509Certificates.X500DistinguishedName Subject { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public byte[] EncodePkcs10SigningRequest() { throw null; } + public byte[] EncodePkcs10SigningRequest(System.Security.Cryptography.X509Certificates.X509SignatureGenerator signatureGenerator) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 SelfSign(System.DateTimeOffset notBefore, System.DateTimeOffset notAfter) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 SelfSign(System.TimeSpan validityPeriod) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 Sign(System.Security.Cryptography.X509Certificates.X500DistinguishedName issuerName, System.Security.Cryptography.X509Certificates.X509SignatureGenerator generator, System.DateTimeOffset notBefore, System.DateTimeOffset notAfter, byte[] serialNumber) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 Sign(System.Security.Cryptography.X509Certificates.X509Certificate2 issuerCertificate, System.DateTimeOffset notBefore, System.DateTimeOffset notAfter, byte[] serialNumber) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 Sign(System.Security.Cryptography.X509Certificates.X509Certificate2 issuerCertificate, System.TimeSpan validityPeriod, byte[] serialNumber) { throw null; } + } public static partial class DSACertificateExtensions { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 CreateCopyWithPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.DSA privateKey) { throw null; } public static System.Security.Cryptography.DSA GetDSAPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } public static System.Security.Cryptography.DSA GetDSAPublicKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } } public static partial class ECDsaCertificateExtensions { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 CreateCopyWithPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.ECDsa privateKey) { throw null; } public static System.Security.Cryptography.ECDsa GetECDsaPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } public static System.Security.Cryptography.ECDsa GetECDsaPublicKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } } public static partial class RSACertificateExtensions { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 CreateCopyWithPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.RSA privateKey) { throw null; } public static System.Security.Cryptography.RSA GetRSAPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } public static System.Security.Cryptography.RSA GetRSAPublicKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } } + public sealed partial class SubjectAltNameBuilder + { + public SubjectAltNameBuilder() { } + public void AddDnsName(string dnsName) { } + public void AddEmailAddress(string emailAddress) { } + public void AddIpAddress(System.Net.IPAddress ipAddress) { } + public void AddUri(System.Uri uri) { } + public void AddUserPrincipalName(string upn) { } + public System.Security.Cryptography.X509Certificates.X509Extension BuildExtension() { throw null; } + public System.Security.Cryptography.X509Certificates.X509Extension BuildExtension(bool critical) { throw null; } + } + public abstract partial class X509SignatureGenerator + { + protected X509SignatureGenerator() { } + public System.Security.Cryptography.X509Certificates.PublicKey PublicKey { get { throw null; } } + protected abstract System.Security.Cryptography.X509Certificates.PublicKey BuildPublicKey(); + public static System.Security.Cryptography.X509Certificates.X509SignatureGenerator CreateForECDsa(System.Security.Cryptography.ECDsa key) { throw null; } + public static System.Security.Cryptography.X509Certificates.X509SignatureGenerator CreateForRSA(System.Security.Cryptography.RSA key, System.Security.Cryptography.RSASignaturePadding signaturePadding) { throw null; } + public abstract byte[] GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName hashAlgorithm); + public abstract byte[] SignData(byte[] data, System.Security.Cryptography.HashAlgorithmName hashAlgorithm); + } ``` Changes from original version: * CertificateRequest has required ctor parameters now. * SubjectName: Either an X500DistinguishedName or a string (to be parsed as an X500DN) * Key * A type-limited AsymmetricAlgorithm: * Used as a private key for SelfSign and EncodePkcs10SigningRequest() * Used as a public key for EncodePkcs10SigningRequest(X509SignatureGenerator) or (other)Sign * A PublicKey prebuilt object. Not compatible with the places an AsymmetricAlgorithm would be used as a private key, but allows for algorithms whose public keys we don't support to be used. * HashAlgorithmName: The hash/digest algorithm which will be used in Sign, SelfSign, or EncodePkcs10SigningRequest. * HashAlgorithmName moves out of X509SignatureGenerator constructor * The members of X509SignatureGenerator which needed the value now take it as parameters. * X509SignatureGenerator derived types are now internal, and accessible via static methods on the base class, reducing the number of public types required. * SelfSign no longer needs a X509KeyStorageFlags. (Since we're in the same assembly as the certificates we can play with pointers; and since we're inbox we can use P/Invokes on non-Windows). * CertificateRequest.AssociatePrivateKey is now three extension methods on X509Certificate2 (CreateCopyWithPrivateKey). * Added ""Pkcs10"" into the middle of ""Encode[Pkcs10]SigningRequest"", to make the serialization format more obvious." +17894 area-System.Net Adjust tests to check for proper Windows 10 update version Remove old Windows 10 version check `IsWindows10VersionInsiderPreviewOrGreater` and use `IsWindows10Version1703OrGreater`. Fixes #8945, #10958 +17895 area-System.Security Remove function CryptoNative_GetStreamSizes This function hasn't been called since (before) .NET Core 1.0 RTM. It was left in to allow for the RTM binary to replace a 1.0-rc2 binary without causing exceptions. Since there's no longer an upgrade concern for 1.0-rc2 customers to current versions of the binary, let's go ahead and remove this dead code. Fixes #8504. +17896 area-System.Console Fixing System.Console tests for uapaot cc: @danmosemsft @ianhays Fixing System.Console tests for uapaot. +17897 area-System.Net Mark HttpListener for not UWP As in https://github.com/dotnet/corefx/pull/17759, per David neither of these libraries contain code that's destined for UWP. Therefore, disable the check against the UWP allow list. @davidsh @CIPop @davidgoll +17898 area-System.Diagnostics Omissions in types supported by both Desktop and Core - System.Diagnostics.PerformanceCounter Only refs adjusted! See https://github.com/dotnet/corefx/issues/15255 and https://github.com/dotnet/corefx/issues/3906 +17904 area-System.Net Detect HTTP2 and multiplexing support for CURL at runtime This change allows portable version of dotnet core to run on versions of CURL with and without HTTP2 and multiplexing support and still be able to use those features if running on CURL that supports them. The compile time checks are now made at runtime and detect the feature support based on comparison of the current version of CURL to the well known version number that added that feature support. The version numbers are listed in docs/libcurl/symbols-in-versions in libcurl source tree. +17905 area-Meta Clean up dead code "After enabling the mono linker for our .NETCoreApp binaries it has identified a number of places where we have dead code. These fall into 3 categories. 1. Truly dead code that isn't used anywhere in the assembly. - This can be deleted 2. Source files that are used in one build of the assembly, but not all. Common source files where some project uses the source, but not all. - These can be better factored, split up to provide minimal source where needed. Or, they may contain truly dead code. 3. Compile time only source. Internal constants that are represented as literals in calling IL and not exposed publicly. - These must remain. ### diffs - [ ] [Microsoft.CSharp](http://tempcoverage.blob.core.windows.net/report2/Microsoft.CSharp.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/Microsoft.CSharp.diff.csv)) - [ ] [Microsoft.VisualBasic](http://tempcoverage.blob.core.windows.net/report2/Microsoft.VisualBasic.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/Microsoft.VisualBasic.diff.csv)) - [x] [System.Collections.Concurrent](http://tempcoverage.blob.core.windows.net/report2/System.Collections.Concurrent.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Collections.Concurrent.diff.csv)) - [x] [System.Collections](http://tempcoverage.blob.core.windows.net/report2/System.Collections.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Collections.diff.csv)) - PR #19140 by @YoupHulsebos - [x] [System.Collections.Immutable](http://tempcoverage.blob.core.windows.net/report2/System.Collections.Immutable.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Collections.Immutable.diff.csv)) - Nothing to remove by @YoupHulsebos in https://github.com/dotnet/corefx/issues/17905#issuecomment-298154133 - [x] [System.Collections.NonGeneric](http://tempcoverage.blob.core.windows.net/report2/System.Collections.NonGeneric.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Collections.NonGeneric.diff.csv)) - Nothing to remove by @YoupHulsebos in https://github.com/dotnet/corefx/issues/17905#issuecomment-298154133 - [x] [System.Collections.Specialized](http://tempcoverage.blob.core.windows.net/report2/System.Collections.Specialized.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Collections.Specialized.diff.csv)) - [x] [System.ComponentModel.Annotations](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.Annotations.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.Annotations.diff.csv)) @norek - [x] [System.ComponentModel](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.diff.csv))@norek - [x] [System.ComponentModel.EventBasedAsync](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.EventBasedAsync.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.EventBasedAsync.diff.csv))@norek - [x] [System.ComponentModel.Primitives](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.Primitives.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.Primitives.diff.csv))@norek - [x] [System.ComponentModel.TypeConverter](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.TypeConverter.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.ComponentModel.TypeConverter.diff.csv))@norek - [x] [System.Console](http://tempcoverage.blob.core.windows.net/report2/System.Console.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Console.diff.csv)) - [x] [System.Data.Common](http://tempcoverage.blob.core.windows.net/report2/System.Data.Common.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Data.Common.diff.csv)) - Fixed in #19141 by @YoupHulsebos - [x] [System.Diagnostics.Debug](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Debug.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Debug.diff.csv)) - [x] [System.Diagnostics.DiagnosticSource](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.DiagnosticSource.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.DiagnosticSource.diff.csv)) - [x] [System.Diagnostics.FileVersionInfo](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.FileVersionInfo.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.FileVersionInfo.diff.csv)) - [x] [System.Diagnostics.Process](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Process.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Process.diff.csv)) - [x] [System.Diagnostics.StackTrace](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.StackTrace.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.StackTrace.diff.csv)) - [x] [System.Diagnostics.TextWriterTraceListener](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.TextWriterTraceListener.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.TextWriterTraceListener.diff.csv)) - [x] [System.Diagnostics.Tools](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Tools.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Tools.diff.csv)) - [x] [System.Diagnostics.TraceSource](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.TraceSource.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.TraceSource.diff.csv)) - [x] [System.Diagnostics.Tracing](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Tracing.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Diagnostics.Tracing.diff.csv)) - [x] [System.Drawing.Primitives](http://tempcoverage.blob.core.windows.net/report2/System.Drawing.Primitives.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Drawing.Primitives.diff.csv)) - [ ] [System.IO.Compression](http://tempcoverage.blob.core.windows.net/report2/System.IO.Compression.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.Compression.diff.csv)) - [x] [System.IO.Compression.ZipFile](http://tempcoverage.blob.core.windows.net/report2/System.IO.Compression.ZipFile.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.Compression.ZipFile.diff.csv)) - [ ] [System.IO.FileSystem.AccessControl](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.AccessControl.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.AccessControl.diff.csv)) - [ ] [System.IO.FileSystem](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.diff.csv)) - [x] [System.IO.FileSystem.DriveInfo](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.DriveInfo.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.DriveInfo.diff.csv)) - [x] [System.IO.FileSystem.Watcher](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.Watcher.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.FileSystem.Watcher.diff.csv)) - [x] [System.IO.IsolatedStorage](http://tempcoverage.blob.core.windows.net/report2/System.IO.IsolatedStorage.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.IsolatedStorage.diff.csv)) - [x] [System.IO.MemoryMappedFiles](http://tempcoverage.blob.core.windows.net/report2/System.IO.MemoryMappedFiles.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.MemoryMappedFiles.diff.csv)) - [x] [System.IO.Pipes](http://tempcoverage.blob.core.windows.net/report2/System.IO.Pipes.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.IO.Pipes.diff.csv)) - [x] [System.Linq](http://tempcoverage.blob.core.windows.net/report2/System.Linq.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Linq.diff.csv)) - Nothing to remove, https://github.com/dotnet/corefx/issues/17905#issuecomment-294286344 by @JonHanna - [x] [System.Linq.Expressions](http://tempcoverage.blob.core.windows.net/report2/System.Linq.Expressions.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Linq.Expressions.diff.csv)) - [x] [System.Linq.Parallel](http://tempcoverage.blob.core.windows.net/report2/System.Linq.Parallel.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Linq.Parallel.diff.csv)) - Fixed in #19143 by @YoupHulsebos - [x] [System.Linq.Queryable](http://tempcoverage.blob.core.windows.net/report2/System.Linq.Queryable.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Linq.Queryable.diff.csv)) - Nothing to remove - https://github.com/dotnet/corefx/issues/17905#issuecomment-294286344 by @JonHanna - [ ] [System.Net.Http](http://tempcoverage.blob.core.windows.net/report2/System.Net.Http.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Http.diff.csv)) - [ ] [System.Net.HttpListener](http://tempcoverage.blob.core.windows.net/report2/System.Net.HttpListener.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.HttpListener.diff.csv)) - [x] [System.Net.Mail](http://tempcoverage.blob.core.windows.net/report2/System.Net.Mail.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Mail.diff.csv)) - Fixed in #19532 by @Ermiar - [x] [System.Net.NameResolution](http://tempcoverage.blob.core.windows.net/report2/System.Net.NameResolution.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.NameResolution.diff.csv)) - [ ] [System.Net.NetworkInformation](http://tempcoverage.blob.core.windows.net/report2/System.Net.NetworkInformation.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.NetworkInformation.diff.csv)) - [x] [System.Net.Ping](http://tempcoverage.blob.core.windows.net/report2/System.Net.Ping.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Ping.diff.csv)) - [ ] [System.Net.Primitives](http://tempcoverage.blob.core.windows.net/report2/System.Net.Primitives.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Primitives.diff.csv)) - [ ] [System.Net.Requests](http://tempcoverage.blob.core.windows.net/report2/System.Net.Requests.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Requests.diff.csv)) - [ ] [System.Net.Security](http://tempcoverage.blob.core.windows.net/report2/System.Net.Security.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Security.diff.csv)) - [x] [System.Net.ServicePoint](http://tempcoverage.blob.core.windows.net/report2/System.Net.ServicePoint.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.ServicePoint.diff.csv)) - [ ] [System.Net.Sockets](http://tempcoverage.blob.core.windows.net/report2/System.Net.Sockets.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.Sockets.diff.csv)) - [ ] [System.Net.WebClient](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebClient.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebClient.diff.csv)) - [ ] [System.Net.WebHeaderCollection](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebHeaderCollection.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebHeaderCollection.diff.csv)) - [x] [System.Net.WebProxy](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebProxy.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebProxy.diff.csv)) - [ ] [System.Net.WebSockets.Client](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebSockets.Client.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebSockets.Client.diff.csv)) - [ ] [System.Net.WebSockets](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebSockets.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Net.WebSockets.diff.csv)) - [x] [System.Numerics.Vectors](http://tempcoverage.blob.core.windows.net/report2/System.Numerics.Vectors.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Numerics.Vectors.diff.csv)) - [x] [System.ObjectModel](http://tempcoverage.blob.core.windows.net/report2/System.ObjectModel.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.ObjectModel.diff.csv)) - [ ] [System.Private.DataContractSerialization](http://tempcoverage.blob.core.windows.net/report2/System.Private.DataContractSerialization.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Private.DataContractSerialization.diff.csv)) - [ ] [System.Private.Uri](http://tempcoverage.blob.core.windows.net/report2/System.Private.Uri.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Private.Uri.diff.csv)) - [x] [System.Private.Xml](http://tempcoverage.blob.core.windows.net/report2/System.Private.Xml.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Private.Xml.diff.csv)) - [x] [System.Private.Xml.Linq](http://tempcoverage.blob.core.windows.net/report2/System.Private.Xml.Linq.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Private.Xml.Linq.diff.csv)) - [x] [System.Reflection.DispatchProxy](http://tempcoverage.blob.core.windows.net/report2/System.Reflection.DispatchProxy.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Reflection.DispatchProxy.diff.csv)) - [x] [System.Reflection.Metadata](http://tempcoverage.blob.core.windows.net/report2/System.Reflection.Metadata.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Reflection.Metadata.diff.csv)) - [x] [System.Reflection.TypeExtensions](http://tempcoverage.blob.core.windows.net/report2/System.Reflection.TypeExtensions.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Reflection.TypeExtensions.diff.csv)) - [x] [System.Resources.Writer](http://tempcoverage.blob.core.windows.net/report2/System.Resources.Writer.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Resources.Writer.diff.csv)) - [x] [System.Runtime.CompilerServices.VisualC](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.CompilerServices.VisualC.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.CompilerServices.VisualC.diff.csv)) - [ ] [System.Runtime](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.diff.csv)) - [x] [System.Runtime.Extensions](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Extensions.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Extensions.diff.csv)) - [x] [System.Runtime.InteropServices](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.InteropServices.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.InteropServices.diff.csv)) - [x] [System.Runtime.InteropServices.RuntimeInformation](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.InteropServices.RuntimeInformation.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.InteropServices.RuntimeInformation.diff.csv)) - [x] [System.Runtime.Numerics](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Numerics.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Numerics.diff.csv)) - [x] [System.Runtime.Serialization.Formatters](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Serialization.Formatters.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Serialization.Formatters.diff.csv)) - Fixed in #19148 by @yaelkeemink - [ ] [System.Runtime.Serialization.Primitives](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Serialization.Primitives.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Runtime.Serialization.Primitives.diff.csv)) - [ ] [System.Security.AccessControl](http://tempcoverage.blob.core.windows.net/report2/System.Security.AccessControl.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.AccessControl.diff.csv)) - [ ] [System.Security.Claims](http://tempcoverage.blob.core.windows.net/report2/System.Security.Claims.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Claims.diff.csv)) - [ ] [System.Security.Cryptography.Algorithms](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Algorithms.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Algorithms.diff.csv)) @mccbraxton - [ ] [System.Security.Cryptography.Cng](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Cng.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Cng.diff.csv)) - [ ] [System.Security.Cryptography.Csp](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Csp.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Csp.diff.csv)) - [ ] [System.Security.Cryptography.Encoding](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Encoding.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Encoding.diff.csv)) - [ ] [System.Security.Cryptography.OpenSsl](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.OpenSsl.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.OpenSsl.diff.csv)) - [x] [System.Security.Cryptography.Primitives](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Primitives.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.Primitives.diff.csv)) - [x] [System.Security.Cryptography.X509Certificates](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.X509Certificates.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Cryptography.X509Certificates.diff.csv)) - Fixed in #19144 by @yaelkeemink - [x] [System.Security.Principal](http://tempcoverage.blob.core.windows.net/report2/System.Security.Principal.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Principal.diff.csv)) - Nothing to remove - [x] [Microsoft.Win32.Primitives](http://tempcoverage.blob.core.windows.net/report2/Microsoft.Win32.Primitives.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/Microsoft.Win32.Primitives.diff.csv)) - [x] [Microsoft.Win32.Registry](http://tempcoverage.blob.core.windows.net/report2/Microsoft.Win32.Registry.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/Microsoft.Win32.Registry.diff.csv)) - [ ] [Microsoft.XmlSerializer.Generator](http://tempcoverage.blob.core.windows.net/report2/Microsoft.XmlSerializer.Generator.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/Microsoft.XmlSerializer.Generator.diff.csv)) - [x] [System.Security.Principal.Windows](http://tempcoverage.blob.core.windows.net/report2/System.Security.Principal.Windows.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Security.Principal.Windows.diff.csv)) - #18267 - [x] [System.Text.RegularExpressions](http://tempcoverage.blob.core.windows.net/report2/System.Text.RegularExpressions.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Text.RegularExpressions.diff.csv)) - #18134 - [x] [System.Threading](http://tempcoverage.blob.core.windows.net/report2/System.Threading.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Threading.diff.csv)) - #18134 - [x] [System.Threading.Overlapped](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Overlapped.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Overlapped.diff.csv)) - #18134 - [x] [System.Threading.Tasks.Dataflow](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Dataflow.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Dataflow.diff.csv)) - #17998 - [x] [System.Threading.Tasks.Extensions](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Extensions.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Extensions.diff.csv)) - Nothing to remove - [x] [System.Threading.Tasks.Parallel](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Parallel.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Parallel.diff.csv)) - Nothing to remove - [x] [System.Threading.Thread](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Thread.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Threading.Thread.diff.csv)) - Nothing to remove - [x] [System.Transactions.Local](http://tempcoverage.blob.core.windows.net/report2/System.Transactions.Local.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Transactions.Local.diff.csv)) - [x] [System.Web.HttpUtility](http://tempcoverage.blob.core.windows.net/report2/System.Web.HttpUtility.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Web.HttpUtility.diff.csv)) - Nothing to remove - [x] [System.Xml.XPath.XDocument](http://tempcoverage.blob.core.windows.net/report2/System.Xml.XPath.XDocument.diff.html) ([csv](http://tempcoverage.blob.core.windows.net/report2/System.Xml.XPath.XDocument.diff.csv)) - Nothing to remove ### background The reports were generated by enabling ILLink (mono linker build from codegen team /cc @erozenfeld) and diffing the output. The diffs are from a Windows build and constrained to only assemblies that are part of NETCore.App. When the linker is enabled it will produce a ""PreTrim"" folder in the object folder of an assembly, for example `\bin\obj\AnyOS.AnyCPU.Debug\Microsoft.CSharp\netstandard\PreTrim\Microsoft.CSharp.dll`. To enable a central copy of the trimmed assemblies you can set the property `BinPlaceILLinkTrimAssembly=true`, This will copy all pretrimmed and trimmed assemblies to a folder under bin: `\bin\ILLinkTrimAssembly\netcoreapp-Windows_NT-Debug-x64`. To generate the reports linked in this issue you must have a copy of the AsmDiff.exe tool. This tool isn't yet available for core, see (https://github.com/dotnet/buildtools/issues/1420). If you have the desktop version of the tool you can enable the reporting by setting `AsmDiffCmd=` The linker can be enabled for any project (not just those in NETCore.App) by building with `ILLinkTrimAssembly=true` after https://github.com/dotnet/corefx/pull/17825 is merged. ## how to tackle a library Pick a library and make a note you're going to work on it. Open the html report above for the library. Look for lines in red. These are theoretically dead. Search for the code in the `src` folder of this repo and delete it. Continue through the report for the library and delete all the dead code like that. BUT there ere are some special cases: 1. This is a very common one. Anything with “const”, please ignore. These are all fields inlined by the compiler, we want to keep them in the sources. Typically ints and strings. 1. Anything that is “static string” in “class SR” is special. Instead of editing a C# file you must find the matching entry in the .resx file and remove that. The .resx file for a library is in `src\\src\Resources\strings.resx`. The build will regenerate SR after you do this. Ignore anything else in “class SR” -- there are several methods that may show up as dead. 1. Ignore any private parameterless constructors. We have these in the code to prevent accidentally instantiating the class, we want to keep them in the code. 1. Ignore any public parameterless constructors if there are no other constructors. These are not real. 1. Some code will not be under the library’s folder, it will be in src\common. This code may not actually be dead because another library may use it. Ideally, grep to see whether anyone else in the tree uses it -- if so, it can be deleted. Or, ignore it and we can do another pass later. 1. If the code is only used in Unix, UAP, etc do not delete it. It is likely not dead. You can tell whether it's of this type by being surrounded by eg `#if uap` or having a condition in the .csproj file like eg ` '$(TargetGroup)' == 'uap'""` After you have removed the dead code from a library, make sure it builds (run “msbuild” in the “src” folder for the library). If it does not, go backwards. If it does build, next check the tests build and pass (run “msbuild /t:buildandtest” in the “tests” folder). Again if they do not, retrace your steps. If that all looks good, you can put up a PR for the library. When the PR goes in, we can check it off here. " +17906 area-System.Security NS2.0 - Add SHA256/384/512CryptoServiceProvider Recent NetStandard 2.0 stragglers... +17907 area-System.Data Implement ICloneable on SqlConnection, SqlCommand and SqlParameter The PR implements ICloneable interfaces on SqlConnection, SqlCommand and SqlParameter to make them compatible with NetFx. Code is ported from Netfx with the removal of fields related to features not available in .Net Core. Contributes to: https://github.com/dotnet/corefx/issues/17708 +17910 area-System.Net Re-enable allow-list checker on HttpListener when it's reimplemented in managed Reminder to reverse https://github.com/dotnet/corefx/pull/17897 when it's ready for UWP, so we don't let any banned API slip thruogh. +17914 area-Infrastructure Review package content for all packages Refactoring the build system and automatically harvesting past assets make it really easy for our packages to accidentally ship bits that are old or unnecessary. Static validation makes sure that this won't cause install / ref-def issues, but it doesn't make sure that the packages are minimal. We should review the package to make sure we aren't shipping anything we don't want. +17915 area-Serialization Added test for ISerializable Types with Delegate. Add a test covering ISerializable types having Delegate member. DCS should still be able to serialize objects of such types. +17916 area-Serialization typeof in SG\System\Runtime\Serialization\Globals.cs The `typeof` used in PnToolChain\SerializationAssemblyGenerator\System\Runtime\Serialization\Globals.cs should be reviewed. Most of them probably need to be replaced by `LMR.TypeOf` or `RuntimeAssembly.GetType`. +17917 area-System.Collections Remove Dictionary.GetValueOrDefault instance methods and IDictionary.GetValueOrDefault extension methods `IDictionary` already has: ```c# partial class CollectionExtensions { public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key); public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key, TValue defaultValue); } ``` As extension methods in `CollectionExtensions`. In this discussion: #17275 we've decided to remove this instance methods, see: https://github.com/dotnet/corefx/issues/17275#issuecomment-291636863 cc: @danmosemsft @ianhays +17918 area-System.Collections Add TryAdd/Remove extension methods in CollectionExtensions We should add extension methods in CollectionExtensions: * `public static bool TryAdd(this Interface, T value)` * `public static bool Remove(this Interface, out T value)` For IDictionary. > Any other interfaces we should add this methods on? * I was thinking probably ISet but it already has Add and Remove which both return a bool indicating if the operation was successful. * Also I thought about ICollection but it would only make sense adding Remove as adding would just add an element at the end of the collection so it should always be successful. cc: @danmosemsft @ianhays +17920 area-System.Collections Test failure: System.Collections.Concurrent.Tests.ConcurrentStackTests/ManyConcurrentAddsTakes_CollectionRemainsConsistent(operations: 3000000) Opened on behalf of @Jiayili1 The test `System.Collections.Concurrent.Tests.ConcurrentStackTests/ManyConcurrentAddsTakes_CollectionRemainsConsistent(operations: 3000000)` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.Collections.Generic.HashSet`1.SetCapacity(Int32 newSize, Boolean forceNewHashCodes) at System.Collections.Generic.HashSet`1.IncreaseCapacity() at System.Collections.Generic.HashSet`1.AddIfNotPresent(T value) at System.Collections.Generic.HashSet`1.UnionWith(IEnumerable`1 other) at System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests.ManyConcurrentAddsTakes_CollectionRemainsConsistent(Int32 operations) Build : Master - 20170405.01 (Core Tests) Failing configurations: - Windows.7.Amd64 - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170405.01/workItem/System.Collections.Concurrent.Tests/analysis/xunit/System.Collections.Concurrent.Tests.ConcurrentStackTests~2FManyConcurrentAddsTakes_CollectionRemainsConsistent(operations:%203000000) +17921 area-System.ComponentModel Test failure: System.ComponentModel.Tests.DateTimeConverterTests/ConvertTo_WithContext Opened on behalf of @Jiayili1 The test `System.ComponentModel.Tests.DateTimeConverterTests/ConvertTo_WithContext` has failed. Assert.Equal() Failure\r Expected: 12/05/1998\r Actual: 1998-12-05 Stack Trace: at System.ComponentModel.Tests.ConverterTestBase.ConvertTo_WithContext(Object[,] data, TypeConverter converter) at System.ComponentModel.Tests.DateTimeConverterTests.ConvertTo_WithContext() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.ComponentModel.TypeConverter.Tests/analysis/xunit/System.ComponentModel.Tests.DateTimeConverterTests~2FConvertTo_WithContext +17922 area-System.Console Test failure: Color/InvalidColors Opened on behalf of @Jiayili1 The test `Color/InvalidColors` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: (No exception was thrown) Stack Trace: at Color.InvalidColors() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Console.Tests/analysis/xunit/Color~2FInvalidColors +17923 area-System.Console Test failure: CancelKeyPressTests/CanAddAndRemoveHandler Opened on behalf of @Jiayili1 The test `CancelKeyPressTests/CanAddAndRemoveHandler` has failed. System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.ConsolePal.ControlCHandlerRegistrar.Register() at System.Console.add_CancelKeyPress(ConsoleCancelEventHandler value) at CancelKeyPressTests.CanAddAndRemoveHandler() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Console.Tests/analysis/xunit/CancelKeyPressTests~2FCanAddAndRemoveHandler +17924 area-System.Console Test failure: ReadKey/RedirectedConsole_ReadKey Opened on behalf of @Jiayili1 The test `ReadKey/RedirectedConsole_ReadKey` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -1073740791 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at ReadKey.RunRemote(Func`1 func, ProcessStartInfo psi) at ReadKey.RedirectedConsole_ReadKey() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Console.Tests/analysis/xunit/ReadKey~2FRedirectedConsole_ReadKey +17925 area-System.Data "Tests under: System.Data.SqlClient.Tests.DiagnosticTest failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.DiagnosticTest/ConnectionOpenAsyncErrorTest` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -1073740791 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Data.SqlClient.Tests.DiagnosticTest.ConnectionOpenAsyncErrorTest() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.DiagnosticTest~2FConnectionOpenAsyncErrorTest +17926 area-System.Diagnostics "Tests under: System.Diagnostics.Tests.FileVersionInfoTest failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.FileVersionInfoTest/FileVersionInfo_Chinese` has failed. Assert.Equal() Failure\r Expected: \r Actual: (null) Stack Trace: at System.Diagnostics.Tests.FileVersionInfoTest.VerifyVersionInfo(String filePath, MyFVI expected) at System.Diagnostics.Tests.FileVersionInfoTest.FileVersionInfo_Chinese() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Diagnostics.FileVersionInfo.Tests/analysis/xunit/System.Diagnostics.Tests.FileVersionInfoTest~2FFileVersionInfo_Chinese +17927 area-System.Diagnostics Test failure: System.Diagnostics.Tests.ProcessStandardConsoleTests/TestChangesInConsoleEncoding Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStandardConsoleTests/TestChangesInConsoleEncoding` has failed. Assert.Equal() Failure\r Expected: 0\r Actual: 437 Stack Trace: at System.Diagnostics.Tests.ProcessStandardConsoleTests.b__1_0(Int32 expectedCodePage) at System.Diagnostics.Tests.ProcessStandardConsoleTests.TestChangesInConsoleEncoding() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStandardConsoleTests~2FTestChangesInConsoleEncoding +17928 area-System.Diagnostics Test failure: System.Diagnostics.Tests.ProcessStartInfoTests/TestEnvironmentOfChildProcess Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/TestEnvironmentOfChildProcess` has failed. Expected: LOCALAPPDATA=C:\\Users\\DotNetTestRunner\\AppData\\Local\\Packages\\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\\AC, PSModulePath=%ProgramFiles%\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules, TMP=C:\\Users\\DotNetTestRunner\\AppData\\Local\\Packages\\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\\AC\\Temp, LOGONSERVER=\\\\dnbws1000000B9Z, CommonProgramFiles=C:\\Program Files\\Common Files, HELIX_LOG_ROOT=C:\\dotnetbuild\\logs, Path=C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Users\\DotNetTestRunner\\AppData\\Local\\Microsoft\\WindowsApps, HELIX_PYTHONPATH=C:\\Python\\python.exe, USERNAME=DotNetTestRunner, USERDOMAIN=dnbws1000000B9Z, ALLUSERSPROFILE=C:\\ProgramData, ComSpec=C:\\Windows\\system32\\cmd.exe, HOMEDRIVE=C:, PUBLIC=C:\\Users\\Public, PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC, PROCESSOR_ARCHITECTURE=AMD64, OS=Windows_NT, COMPUTERNAME=dnbws1000000B9Z, SystemDrive=C:, HELIX_SCRIPT_ROOT=C:\\dotnetbuild\\scripts, PROCESSOR_LEVEL=6, HELIX_EVENT_URI=https://nethelix.servicebus.windows.net/telemetry/messages?sr=http%3a%2f%2fnethelix.servicebus.windows.net%2ftelemetry%2fmessages%2f&sig=nlqRjD%2faDjBGjUGHFpBZJ7YNImXyPtC1MNs8JdIltfI%3d&se=1503176077&skn=telemetry, HELIX_CONFIG_ROOT=C:\\dotnetbuild\\config, CommonProgramW6432=C:\\Program Files\\Common Files, PYTHONPATH=C:\\Python;C:\\dotnetbuild\\scripts, windir=C:\\Windows, TestEnvironmentOfChildProcess_SpecialStuff=?\r ?, PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 63 Stepping 2, GenuineIntel, PROCESSOR_REVISION=3f02, HELIX_WORK_ROOT=\\\\?\\C:\\dotnetbuild\\work, USERPROFILE=C:\\Users\\DotNetTestRunner, ProgramFiles=C:\\Program Files, ProgramW6432=C:\\Program Files, CommonProgramFiles(x86)=C:\\Program Files (x86)\\Common Files, ProgramData=C:\\ProgramData, HOMEPATH=\\Users\\DotNetTestRunner, SystemRoot=C:\\Windows, NUMBER_OF_PROCESSORS=2, USERDOMAIN_ROAMINGPROFILE=dnbws1000000B9Z, APPDATA=C:\\Users\\DotNetTestRunner\\AppData\\Roaming, ProgramFiles(x86)=C:\\Program Files (x86), TEMP=C:\\Users\\DotNetTestRunner\\AppData\\Local\\Packages\\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\\AC\\Temp\r Actual: \r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentOfChildProcess() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FTestEnvironmentOfChildProcess +17929 area-System.Diagnostics "Tests under: System.Diagnostics.TextWriterTraceListenerTests failed with ""System.UnauthorizedAccessException""" "Opened on behalf of @Jiayili1 The test `System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests/TraceData_ObjectArray_Test(delimiter: \"",\"", filter: null, eventCache: null, source: \""Co1971\"", eventType: Critical, ...` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\ebf6794e-5df9-4724-81f3-14b34f79c3af\\Work\\7db573da-e64a-4c09-909d-e87bf8a323df\\Unzip\\DelimiterWriteMethodTests.xml' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) at System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests..ctor() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Diagnostics.TextWriterTraceListener.Tests/analysis/xunit/System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTests~2FTraceData_ObjectArray_Test(delimiter:%20%5C%22,%5C%22,%20filter:%20null,%20eventCache:%20null,%20source:%20%5C%22Co1971%5C%22,%20eventType:%20Critical,%20..." +17930 area-System.Drawing "Tests under: System.Drawing.PrimitivesTest failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Drawing.PrimitivesTest.RectangleFTests/EqualityTest_NotRectangleF` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Drawing.PrimitivesTest.RectangleFTests.EqualityTest_NotRectangleF() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Drawing.Primitives.Tests/analysis/xunit/System.Drawing.PrimitivesTest.RectangleFTests~2FEqualityTest_NotRectangleF +17931 area-System.IO Remove dead test files in serialport fixes https://github.com/dotnet/corefx/issues/17857 +17932 area-Infrastructure "Tests under: System.Globalization.Tests failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.CultureInfoDateTimeFormat/TestSettingThreadCultures` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -1073740791 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Globalization.Tests.CultureInfoDateTimeFormat.TestSettingThreadCultures() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.CultureInfoDateTimeFormat~2FTestSettingThreadCultures +17933 area-System.IO "System.IO.FileLoadException, ""System.IO.FileNotFoundException"" & ""System.TypeLoadException""" "In UWP F5 tests, lots of tests failed with ""System.IO.FileLoadException : Could not load file or assembly XXX"" or ""System.IO.FileNotFoundException : Could not load file or assembly XXX"" or ""System.TypeLoadException : Could not load type XXX"" Examples: System.IO.FileSystem.AccessControl.Tests https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.IO.FileSystem.AccessControl.Tests " +17934 area-System.IO "Tests under: System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests/GetVolumeLabel_Returns_CorrectLabel` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\' is denied. Stack Trace: at System.IO.DriveInfo.get_VolumeLabel() at System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.GetVolumeLabel_Returns_CorrectLabel() Build : Master - 20170405.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170405.01/workItem/System.IO.FileSystem.DriveInfo.Tests/analysis/xunit/System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests~2FGetVolumeLabel_Returns_CorrectLabel +17935 area-Meta Why is the documentation so bad? "It's only a problem with Microsoft components. I see a component in NuGet whose name looks interesting. I click on Project Site and I am immediately taken to the site for the project that produces the component, which explains what it is, etc. But not with Microsoft components. Here's a simple example. I see a component in NuGet called ""System.Threading.Tasks.Extensions"". I click on Project Site. It takes me to a generic docs site, the main page that has nothing to do with System.Threading.Tasks.Extensions. If I then search for System.Threading.Tasks.Extensions, I got lots of hits, none of which are for System.Threading.Tasks.Extensions, but System.Threading.Tasks instead. I do the search again, this time putting the component name in quotes, prepending a plus sign to indicate that I don't want to see any pages unless the exact name appears: +""System.Threading.Tasks.Extensions"" Now I am given a page that is about another component, value.types, that says I need System.Threading.Tasks.Extensions in order to use it. Googling or Binging ""System.Threading.Tasks.Extensions"" doesn't do anything either. Now, wouldn't it be better if System.Threading.Tasks.Extensions had a documentation page somewhere similar to MSDN, and if one does not exist, actually indicate it does not exist. If there's not docs, telling the user there's not docs is actually quite valuable. The user can stop looking for docs, and may be go elsewhere such as stackoverflow, forums or decide to look through the source. There's a reason why there's a ""project site"" link on nuget.org. It's supposed to take you to the specific page for that component. It would be useful if that's what it did rather than sending you to an entire Docs site where you have to now search for the phrase." +17939 area-System.Data Dead SqlClient files Contributes to https://github.com/dotnet/corefx/issues/17866 @saurabh500 +17940 area-System.IO Remove dead path files Contributes to https://github.com/dotnet/corefx/issues/17866 +17941 area-System.Diagnostics delete unused StackTraceSymbols class Contributes to https://github.com/dotnet/corefx/issues/17905 +17943 area-System.Reflection The ConstructorBuilder and MethodBuilder generated parameter should not has default value by default. "The HasDefaultValue of parameters should be false by default, for the constructors and methods generated from System.Reflection.Emit.ConstructorBuilder and System.Reflection.Emit.MethodBuilder. But actually the HasDefaultValue of the parameters are true. It means the emitter generates parameter default values as null unexpected. The sample code as following: ```c# var builder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(""DynamicProxyGenAssembly""), AssemblyBuilderAccess.Run).DefineDynamicModule(""DynamicProxyGenAssembly""); var type = builder.DefineType(""MyProxy"", TypeAttributes.Public); var constructorBuilder = type.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new[] {typeof(Version)}); var il = constructorBuilder.GetILGenerator(); il.Emit(OpCodes.Ret); var methodBuilder = type.DefineMethod(""DoSomething"", MethodAttributes.Public, CallingConventions.Standard, typeof(void),new[] {typeof(Version)}); il = methodBuilder.GetILGenerator(); il.Emit(OpCodes.Ret); var typeInfo = type.CreateTypeInfo(); var constructor = typeInfo.GetConstructor(new[] {typeof(Version) }); var parameters = constructor.GetParameters(); Assert.False(parameters[0].HasDefaultValue); // Fails var method = typeInfo.GetMethod(""DoSomething"", new[] {typeof(Version)}); parameters = method.GetParameters(); Assert.False(parameters[0].HasDefaultValue); // Fails ``` But the DynamicMethod has the correct parameter default value as expected. The sample code as following: ```c# var method = new DynamicMethod(""x"", typeof(void), new [] { typeof(Version) }); var il = method.GetILGenerator(); il.Emit(OpCodes.Ret); var delegateMethod = method.CreateDelegate(typeof(Action)); var parameters = delegateMethod.GetMethodInfo().GetParameters(); Assert.False(parameters[0].HasDefaultValue); // Success ```" +17945 area-Serialization Add 3 test cases for DataContractJsonSerializer @huanwu please help review the test code. +17948 area-Microsoft.CSharp Remove dead code from ExpressionBinder.BindAssignment() `ExpressionBinder.BindAssignment()` is only called from `RuntimeBinder.BindAssignment()` which creates the lhs expression with `BindProperty()`. This can (including paths through `CreateArray`, `bindIndexer`, `BindMethodGroupToArguments`, `BindToProperty`, `CreateIndexer`, `CreateProperty`, `CreateField` and `CreateEvent`) produce expressions of type `ExprCast`, `ExprArrayIndex`, `ExprCall`, `ExprProperty`, `ExprClass`, `ExprField` or `ExprEvent`. The path only reachable for this operand being `ExprLocal` is hence unreachable. Remove it and those methods only reached through it. This also means `fOp2NotAddrOp` and `fOp2WasCast` will never be true, so remove them and the path that depends on them. +17951 area-System.Net Fixes NRE when setting Size property of ContentDispositionHeaderValue +17953 area-System.Security Add XmlLicenseTransform E2E test (urn:mpeg:mpeg21:2003:01-REL-R-NS:licenseTransform) Last item in https://github.com/dotnet/corefx/issues/16781 +17955 area-Infrastructure Move ILLink targets and restore to buildtools In order to bring this up quickly and iterate on it we are starting out with it in CoreFx. Once its more stable we should move the targets and restore of the linker into buildtools. /cc @erozenfeld @sbomer +17956 area-System.Net Socket.LocalEndPoint is not cached Every time you retrieve the Socket.LocalEndPoint property, we do a kernel call to retrieve the local end point. Since this cannot change once the socket is open, we should cache this, as we do for RemoteEndPoint. (Or alternatively, we can get the endpoint directly from the result of the AcceptEx call, as we do for RemoteEndPoint. However, this may introduce some additional overhead in cases where LocalEndPoint is never accessed, so it's not clear this is the right tradeoff in all cases.) Retrieving the LocalEndPoint is not a common thing to do, so I don't think this issue is particularly urgent, but we should track it. (I hit this when doing the Kestrel-on-Sockets prototype -- for some reason Kestrel does seem to repeatedly retrieve the LocalEndPoint, and expects it to be cheap, which is not an unreasonable expectation. I worked around the issue by just caching the LocalEndPoint myself.) +17957 area-System.Net Need System.Net.Sockets tests for multicast We don't have any multicast tests that actually exercise the functionality. +17958 area-System.Net Fix IPv6 calls to GetMulticastOptionName in shim The wrong options were being set in the native shim due to an incorrect Boolean value. GetMulticastOptionName is used to translate the option name, with a Boolean indicating whether this is for IPv4 (false) or IPv6 (true), and false was being passed even for IPv6. (Note that I validated the repro in https://github.com/dotnet/corefx/issues/17870 failed before this change and passes after, but we have zero automated tests for multicast functionality, other than some surface area argument validation. I opened https://github.com/dotnet/corefx/issues/17957 to track adding some.) Fixes https://github.com/dotnet/corefx/issues/17870 cc: @geoffkizer, @Priya91, @pgavlin +17960 area-Infrastructure Verify System.ValueTuple package works on .NET Framework After https://github.com/dotnet/corefx/pull/17893 the System.ValueTuple package no longer has a ref\netstandard1.0 reference and now has a net463 reference. We should verify that this package still works as expected on .NET Framework < 4.6.3. I believe it will still work and pick the portable asset but just wanted us to double check once we get a package published after that PR. cc @jcouv @ericstj +17961 area-System.Globalization "win10-x64 vs ubuntu.14.04-arm CultureInfo.CreateSpecificCulture(""en-us"").DateTimeFormat.ShortDatePattern" "I am not sure that this is the correct place for this or if this is not a bug but a setting I need to change somewhere. In a publish for win10-x64, `CultureInfo.CreateSpecificCulture(""en-us"").DateTimeFormat.ShortDatePattern == ""M/d/yyyy""`. In a publish for ubuntu.14.04-arm, `CultureInfo.CreateSpecificCulture(""en-us"").DateTimeFormat.ShortDatePattern == ""M/d/yy""`. In mono on linux, `CultureInfo.CreateSpecificCulture(""en-us"").DateTimeFormat.ShortDatePattern == ""M/d/yyyy""`. The difference caused an exception during `DateTime.ParseExact(, ""G"", CultureInfo.CreateSpecificCulture(""en-us""))` on ubuntu.14.04-arm. `DateTime.ParseExact(, ""G"", CultureInfo.CreateSpecificCulture(""en-us""))` on win10-x64 worked fine. I used a kludge to detect/fix the incorrect ShortDatePattern. Any information would be great if I am doing something wrong. Thanks!" +17964 area-System.Threading Update/replace System.Threading.Tasks.Dataflow internal ConcurrentQueue with Concurrent.Collections changes Apparently, DataFlow has it's own copy of `ConcurrentQueue`, but this does not seem to have been updated with the great optimizations that @stephentoub did to the Concurrent.Collections version see: https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Dataflow/src/Internal/ConcurrentQueue.cs Either update this with the changes or use Concurrent.Collections. +17966 area-Serialization Enable XmlSerializer to load the pregenerated serialization assembly +17975 area-Infrastructure Change netfx vertical test build and execution to be able to have helix runs I added bin placing to add test dependencies in the testhost folder instead of using the runtime/netfx folder. Also RunTests.cmd now will be called with the testhost parameter as a path and will set DEVPATH env variable to point to that path, and modified the xunit.console.exe.config to use DEVPATH to look for the test dependencies. This is needed to run in Helix. cc: @weshaggard @tarekgh @joperezr +17976 area-System.Drawing System.Drawing.Color has methods for Hue/Sat/Brightness, but actually calcs in HSL As per the[ HSL and HSV wiki](https://en.wikipedia.org/wiki/HSL_and_HSV): >HSL stands for hue, saturation, and lightness (or luminosity), and is also often called HLS. HSV stands for hue, saturation, and value, and is also often called HS**B** (B for *brightness*). (Emphasis my own) `System.Drawing.Color` has methods for `GetHue()`, `GetSaturation()`, and `GetBrightness()`. One might assume that these methods would then return values using the `HSV/HSB` format, however they do not. They are using `HSL`. This is not really intuitive (especially as this doesn't seem to be documented). Appreciate changing how they work is unlikely to fly due to back compat. +17977 area-System.Net Implement HttpListenerTimeoutManager properties where possible for Managed. From @stephentoub in response to a question about implementing HttpListenerTimeoutManager: The timeout manager isn’t just one thing: it’s a collection of various timeouts. And some of them can be implemented: - Likely can: o DrainEntityBody: I’m not aware of any reason we couldn’t do this. But IIRC, we’re not doing connection pooling, so it’s largely irrelevant, and we shouldn’t be throwing a PNSE from it, as it doesn’t really matter what the timeout value is. o EntityBody: We should be able to support this. It’s a matter of how long we wait in socket receives to receive the full body. o HeaderWait: Similarly, we can time how long it takes to receive and parse the headers. o IdleConnection: Not relevant if we’re not connection pooling… again, throwing PNSE here seems like overkill. o MinSendBytesPerSecond: We can also time this and do the appropriate calculations. This is all about the sends that we issue. - Likely can’t: o RequestQueue: I don’t believe we have access to the listen queue in the OS. +17978 area-System.Net System.NullReferenceException in System.Net.Http.CurlHandler.CurlResponseStream.SignalComplete(Exception error, Boolean forceCancel) We are seeing application crashes while running a .NET Core 1.1 application on Ubuntu with the following stack trace: ``` Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Net.Http.CurlHandler.CurlResponseStream.SignalComplete(Exception error, Boolean forceCancel) at System.Net.Http.CurlHandler.CurlResponseStream.Dispose(Boolean disposing) at System.Net.Http.CurlHandler.CurlResponseStream.Finalize() ``` As far as I can tell, throwing an exception inside `Dispose` is a pretty bad idea -- this is amplified by the fact that there is no way to catch the exception thrown by a finalizer. +17980 area-System.Net NullReferenceException thrown getting InputStream from HttpListener "```cs class Program { static async Task Test() { string uri = ""http://localhost:9200/""; HttpListener listener = new HttpListener(); listener.Prefixes.Add(uri); listener.Start(); using (ClientWebSocket client = new ClientWebSocket()) { UriBuilder uriBuilder = new UriBuilder(uri) { Scheme = ""ws"" }; Task serverContextTask = listener.GetContextAsync(); Task clientConnectTask = client.ConnectAsync(uriBuilder.Uri, CancellationToken.None); HttpListenerContext listenerContext = await serverContextTask; HttpListenerWebSocketContext wsContext = await listenerContext.AcceptWebSocketAsync(null); await clientConnectTask; HttpListenerRequest request = listenerContext.Request; Stream stream = request.InputStream; } listener.Stop(); } static void Main() { Test().Wait(); } } ``` Stack trace: ``` System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Net.HttpListenerRequest.get_ContentLength64() at System.Net.HttpListenerRequest.get_HasEntityBody() at System.Net.HttpListenerRequest.get_InputStream() ``` I think this is a pretty serious bug - it makes reading any input from HttpListener's tream broken. Netfx works, obviously. I've got a fix for this, and adding tests (as per #13618) The reference source is: ``` if (HttpWebRequest.ChunkedHeader.Equals(GetKnownHeader(HttpRequestHeader.TransferEncoding) ``` However, the .NET core is ``` if (GetKnownHeader(HttpRequestHeader.TransferEncoding).Equals(HttpWebRequest.ChunkedHeader)) ``` This is *not* the same!" +17982 area-System.Linq No test result generated under System.Linq.Parallel.Tests No test result generated, detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170406.01/workItem/System.Linq.Parallel.Tests/wilogs +17983 area-System.IO "Test failure: System.IO.Tests.DirectoryInfo_Create/PathWithInvalidCharactersAsPath_ThrowsArgumentException(invalidPath: \""\\\\\\\\?\\\\\"")" "Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_Create/PathWithInvalidCharactersAsPath_ThrowsArgumentException(invalidPath: \""\\\\\\\\?\\\\\"")` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IOException)\r Actual: typeof(System.UnauthorizedAccessException): Access to the path '\\\\?\\' is denied. Stack Trace: at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Tests.DirectoryInfo_Create.Create(String path) Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Create~2FPathWithInvalidCharactersAsPath_ThrowsArgumentException(invalidPath:%20%5C%22%5C%5C%5C%5C%5C%5C%5C%5C%3F%5C%5C%5C%5C%5C%22)" +17984 area-System.IO "Tests under System.IO.FileSystem.Tests failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_EnumDir_str_str/InvalidPath` has failed. System.IO.IOException : DriveName: C:\\ ErrorCode:5 Stack Trace: at IOServices.GetDriveFormat(String driveName) at System.IO.Tests.Directory_GetFileSystemEntries_str.InvalidPath() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_EnumDir_str_str~2FInvalidPath +17985 area-System.IO "Test: System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_Path failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.FileSystemWatcherTests/FileSystemWatcher_Path` has failed. System.ArgumentException : The directory name .. is invalid. Stack Trace: at System.IO.FileSystemWatcher.set_Path(String value) at System.IO.Tests.FileSystemWatcherTests.FileSystemWatcher_Path() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.FileSystemWatcherTests~2FFileSystemWatcher_Path +17986 area-System.Net HttpClientHandler.MaxAutomaticRedirections default value test fails on UWP Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/Ctor_ExpectedDefaultPropertyValues` has failed. Assert.Equal() Failure\r Expected: 50\r Actual: 10 Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandlerTest.Ctor_ExpectedDefaultPropertyValues() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FCtor_ExpectedDefaultPropertyValues +17987 area-System.Net Test failure: System.Net.Tests.AuthenticationTests/TestAnonymousAuthentication Opened on behalf of @Jiayili1 The test `System.Net.Tests.AuthenticationTests/TestAnonymousAuthentication` has failed. System.AggregateException : One or more errors occurred. (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.)\r ---- System.NullReferenceException : Object reference not set to an instance of an object.\r ---- System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: ----- Inner Stack Trace #1 (System.NullReferenceException) ----- at System.Net.Tests.AuthenticationTests.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace #2 (System.NullReferenceException) ----- at System.Net.Tests.AuthenticationTests.Dispose() at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.AuthenticationTests~2FTestAnonymousAuthentication +17988 area-System.Net "Tests under: System.Net.Tests.HttpListenerTimeoutManagerWindowsTests failed with ""System.Net.HttpListenerException""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerTimeoutManagerWindowsTests/DrainEntityBody_SetTimeoutAfterStart_GetReturnsNewValue` has failed. System.Net.HttpListenerException : The handle is invalid Stack Trace: at System.Net.HttpListener.SetupV2Config() at System.Net.HttpListener.Start() at System.Net.Tests.HttpListenerTimeoutManagerWindowsTests.DrainEntityBody_SetTimeoutAfterStart_GetReturnsNewValue() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerTimeoutManagerWindowsTests~2FDrainEntityBody_SetTimeoutAfterStart_GetReturnsNewValue +17989 area-System.Net "Tests under: System.Net.Mail.Tests.SmtpClientTest failed with ""System.PlatformNotSupportedException""" Opened on behalf of @Jiayili1 The test `System.Net.Mail.Tests.SmtpClientTest/DeliveryMethodTest(method: PickupDirectoryFromIis)` has failed. System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.Net.NetworkInformation.NetNativeIPGlobalProperties.get_HostName() at System.Net.Mail.SmtpClient.Initialize() at System.Net.Mail.SmtpClient..ctor() at System.Net.Mail.Tests.SmtpClientTest.get_Smtp() at System.Net.Mail.Tests.SmtpClientTest.DeliveryMethodTest(SmtpDeliveryMethod method) Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.Mail.Functional.Tests/analysis/xunit/System.Net.Mail.Tests.SmtpClientTest~2FDeliveryMethodTest(method:%20PickupDirectoryFromIis) +17990 area-System.Net "Tests under: System.Net.NameResolution.Tests.InitializationTests failed with ""Xunit.Sdk.NotEqualException""" Opened on behalf of @Jiayili1 The test `System.Net.NameResolution.Tests.InitializationTests/Dns_BeginGetHostAddresses_CallSocketInit_Ok` has failed. Assert.NotEqual() Failure\r Expected: Not 0\r Actual: 0 Stack Trace: Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.NameResolution.Unit.Tests +17992 area-System.Net "Tests under: System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Windows failed with ""System.NotImplementedException""" Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Windows/IPInfoTest_AccessAllIPv4Properties_NoErrors` has failed. System.NotImplementedException : The method or operation is not implemented. Stack Trace: at System.Net.NetworkInformation.NetNativeNetworkInterface.GetNetworkInterfaces() at System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Windows.IPInfoTest_AccessAllIPv4Properties_NoErrors() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.NetworkInformation.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.IPInterfacePropertiesTest_Windows~2FIPInfoTest_AccessAllIPv4Properties_NoErrors +17993 area-System.Net Test failure: System.Net.NetworkInformation.Unit.Tests.NetworkInterfaceTest/GetIsNetworkAvailable_ConnectionProfileNotPresent_ReturnsFalse Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Unit.Tests.NetworkInterfaceTest/GetIsNetworkAvailable_ConnectionProfileNotPresent_ReturnsFalse` has failed. Assert.False() Failure\r Expected: False\r Actual: True Stack Trace: Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.NetworkInformation.WinRT.Unit.Tests/analysis/xunit/System.Net.NetworkInformation.Unit.Tests.NetworkInterfaceTest~2FGetIsNetworkAvailable_ConnectionProfileNotPresent_ReturnsFalse +17994 area-System.Net "Tests under: System.Net.Security.Tests failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.NegotiateStreamStreamToStreamTest_Async/NegotiateStream_StreamToStream_Authentication_Success` has failed. Assert.Equal() Failure\r Expected: True\r Actual: False Stack Trace: at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_Authentication_Success() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.Security.Tests +17995 area-System.Net Test failure: System.Net.Tests.WebProxyTest/BypassOnLocal_MatchesExpected Opened on behalf of @Jiayili1 The test `System.Net.Tests.WebProxyTest/BypassOnLocal_MatchesExpected` has failed. System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.Net.NetworkInformation.NetNativeIPGlobalProperties.get_DomainName() at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Net.WebProxy.Tests/analysis/xunit/System.Net.Tests.WebProxyTest~2FBypassOnLocal_MatchesExpected +17996 area-System.Reflection Test failure: System.Reflection.Tests.AssemblyTests/GetEntryAssembly Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyTests/GetEntryAssembly` has failed. Assert.StartsWith() Failure:\r Expected: xunit.console.netcore\r Actual: XUnit.Runner.Uap, Ver... Stack Trace: at System.Reflection.Tests.AssemblyTests.GetEntryAssembly() Build : Master - 20170406.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170406.01/workItem/System.Reflection.Tests/analysis/xunit/System.Reflection.Tests.AssemblyTests~2FGetEntryAssembly +17998 area-System.Threading Remove dead code for corefx - System.Threading.Tasks.Dataflow Remove dead code according to #17905 Change for System.Threading.Tasks.Dataflow: http://tempcoverage.blob.core.windows.net/report2/System.Threading.Tasks.Dataflow.diff.html +17999 area-System.Net Add HttpListener tests and fix a porting bug This covers `HttpListenerRequestStream` and `HttpListenerResponseStream`. The tests will fail with NulLReferenceExceptions without Commit 2, which fixes #17980, a bug caused porting HttpListener to corefx. @Priya91 @davidsh @CIPop +18000 area-System.Net "HttpClient Error ""An internal response size limit was exceeded""" "Hello, I got an error ""An internal response size limit was exceeded"" when calling SendAsync method in HttpClient Is it about buffer size or what? try to set MaxResponseContentBufferSize but no luck." +18002 area-Meta Question: How to version dotnet core assemblies Forgive me if this is not the appropriate channel for a question. I'm trying to figure out how to version (and retrieve) assembly versions in dotnet core (both build and publish). I've been searching for documentation on this, but I've come up empty. Below are some things I've tried. `dotnet publish /p:Version=3.0.1` (where [Version]3.0.0[/Version] is defined in csproj) `dotnet publish --version-suffix 1` (where [VersionPrefix]3.0[/VersionPrefix] is defined in csproj) I'm retrieving the version using the following code: `typeof(ReflectionUtils).GetTypeInfo().Assembly.GetName().Version.ToString();` ReflectionUtils is an arbitrary type in my assembly. No matter what I try, the version retrieved from the above line shows 3.0.0.0. Can anyone point out what I'm doing wrong, or point me in the direction of a page that explains some of this stuff more fully? +18004 area-Microsoft.CSharp Refactor Microsoft.CSharp.RuntimeBinder.Semantics.BindingContext Remove `BindingContext` fields that always have the same value. A great many fields are passed around, and sometimes used, but only ever set to the same value. Remove `OutputContext`, as `m_bUnsafeErrorGiven` is only field remaining and can just be property of `BindingContext`. Inline the constant values into expressions using them, and remove any code made dead by this. Since this removes `ExprThisPointer`, `ExprLocal` can now be sealed. Remove `CheckedContext`: Offers no more functionality over the base as the related properties are writeable there. Rename BindingContextBase.cs to BindingContext.cs More appropriate, and available after removing `CheckedContext`. Make `ReportUnsafeErrors` a property, and have it rather than `UnsafeErrorGiven` store state. Members to properties or auto-properties where appropriate. Move ctor asserts up to calling factory methods. Remove no-op assignments of defaults in ctors. Don't assign to CheckedNormal and CheckedConstant in ctor, as always to false. Remove static factories and just call ctors. Tidy up comments. +18006 area-Infrastructure CI failure to clone repository in Innerloop OSX10.12 tests E.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/1240/ and https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/1243/ Doesn't seem to be affecting all such builds, but is affecting a lot of them. +18008 area-System.Net Fix race condition in HttpClient on Unix when canceling a request It looks like it's possible in a rare situation for the following to occur and result in a NullReferenceException when finalizing a request: - HttpClient.SendAsync is called, which creates an EasyRequest. That EasyRequest isn't yet associated with a MultiAgent. - The request is queued to the MultiAgent. - Between the time that the request is queued and it's handled, the associated CancellationToken has cancellation requested. - When the agent then processes the request, in ActivateNewRequest it'll see that cancellation has been requested and will immediately bail, before associating the easy request with the agent. - Everything is dropped and eventually finalized. At that point the response stream's finalizer is invoked, it calls SignalComplete(..., forceCancel:true), and that dereferences _associatedMultiAgent in order to issue a cancellation request... but _associatedMultiAgent hasn't yet been set. There's no reason _associatedMultiAgent's initialization needs to be deferred until the EasyRequest is picked up by the agent. We can instead make _associatedMultiAgent a readonly field that's initialized to the associated agent when the EasyRequest is constructed, so it won't be null even in such a situation. I've not actually been able to repro the reported issue, so this is a speculative fix, but is goodness regardless. I can't see any other way a null ref could happen in the finalizer as reported. I did also clean up a few accesses in the same method, but there's shouldn't be any way those could have caused a null ref, due to the locking and checking being employed. Fixes https://github.com/dotnet/corefx/issues/17978 (I hope) cc: @geoffkizer, @Priya91 +18009 area-System.Security Security.Cryptography tests are failing on portable Linux runs [System.Security.Cryptography.Algorithms.Tests](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170406.01/workItem/System.Security.Cryptography.Algorithms.Tests) (see page 2 on that link) [System.Security.Cryptography.OpenSsl.Tests](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170406.01/workItem/System.Security.Cryptography.OpenSsl.Tests) are failing in our portable linux-x64 build test runs on a few different linux distros in Helix. These tests are passing for the distro-specific build runs. We should investigate why they are failing and fix them. I dug into one: TestExplicitCurves(curveDef: CurveDef { Curve = System.Security.Cryptography.ECCurve, CurveType = Characteristic2, IncludePrivat... And see it failed with: Interop+Crypto+OpenSslCryptographicException : error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large ### Note Here are the distro-specific build run logs: [System.Security.Cryptography.Algorithms.Tests distro-specific](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170406.02/workItem/System.Security.Cryptography.Algorithms.Tests) [System.Security.Cryptography.OpenSsl.Tests distro-specific](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170406.02/workItem/System.Security.Cryptography.OpenSsl.Tests) /cc @janvorli @bartonjs @steveharter +18011 area-System.Linq Prohibit Expression.ListBind with members of open generic types. Contributes to #8081 +18012 area-System.IO Serial Port support on Unix/OSX Support the existing Windows API on OSX/Linux machines. Original Windows thread was https://github.com/dotnet/corefx/issues/984 Any volunteers interested in starting to scope this out? Please thumbs up if you would use this library. @willdean +18013 area-System.Net HttpClient does not properly parse all Set-Cookie headers Hello, I'm currently trying to build a .Net Core application that automates some HTTP requests. In the first request I receive several cookies which should be sent back to the server on the second request. For demonstration purposes I have created a small PHP script that sends some `Set-Cookie` headers similar to the style I receive them from the actual application. The source code of this script is https://gist.github.com/Nothing4You/6623cda16eb2c2c5b4d3d9106b95a6ce. You can find a live version at https://hosting.rep.pm/cookietest.php. I have tested the script using a web browser (Firefox), curl (in a linux shell) aswell as using python requests, which all handle cookies and show me the expected output in the second request: ``` Cookie[test1]: test1value Cookie[test2]: test=2&value=2 Cookie[test3]: $test-3 Cookie[test4]: test4 ``` However, if I try to do the same thing using `System.Net.Http.HttpClient` it only sets the 2 out of 4 cookies. According to Visual Studio I'm using SDK version 1.1.1. HttpClient is the following version: ``` Assembly: System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Assembly location: .nuget\packages\system.net.http\4.3.0\ref\netstandard1.3\System.Net.Http.dll ``` Example code: https://gist.github.com/Nothing4You/c04af6781f8520efb4921ef144733731 +18015 area-Serialization Potential ArgumentNullException in Microsoft.XmlSerializer.Generator In Microsoft.XmlSerializer.Generator code, `TempAssembly._assembly` is never being assigned to and will alwaybe null. This causes ArgumentNullException [here](https://github.com/dotnet/corefx/blob/39514943cac0ca081894ac0763c2a91d30345e52/src/System.Private.Xml/src/System/Xml/Serialization/Compilation.cs#L130) cc: @huanwu @shmao, @zhenlan +18016 area-System.Security RSA SignHash either seg faults or doesn't throw when no key on Unix The following tests have been disabled because they don't work on Unix: - System.Security.Cryptography.Csp.Tests.SignHash_BadAlgorithm - System.Security.Cryptography.Csp.Tests.SignHash_WrongSizeHash - System.Security.Cryptography.Csp.Tests.SignHash_PublicKey They either result in a seg fault, or don't throw an exception as expected. This was found during the implementation of https://github.com/dotnet/corefx/issues/16585 which enables RSACryptoServiceProvider for Unix. It is likely an issue with native interop when passing in a key with no information. The tests all use Array.Empty for the data. Passing in null instead is caught earlier in managed code, so there is not an issue with that. Also, similar validation tests should be added to the common RSA tests instead, so that the classes in System.Security.Algorithms also are tested for this. In addition, verify that DSA and ECDsa types don't have similar issues. +18017 area-System.Drawing API Proposal: Support operators * / on type Size types Size types (System.Drawing.Size, etc) represents a value that can be scaled up and down by multiplication and division. A common scenario for this is scaling. Today, this involves taking the parts, doing the math individually, and then creating a new value. Size, and related Size structs, should support * and / with both double and integer types. This proposal should mirror https://github.com/dotnet/corefx/issues/7175 ## Proposed API ```C# namespace System.Drawing { public partial struct Size { public Size operator*(int left, Size right); public Size operator*(Size left, int right); public Size operator/(Size left, int right); public SizeF operator *(float left, Size right); public SizeF operator *(Size left, float right); public SizeF operator /(Size left, float right); } public partial struct SizeF { public SizeF operator*(float left, SizeF right); public SizeF operator*(SizeF left, float right); public SizeF operator/(SizeF left, float right); } } ``` +18018 area-System.Diagnostics Activity: typo, spelling and documentation fixes +18023 area-System.IO Serial Port support for Raspberry Pi with Windows IoT "This issue was created to continue the discussion on further support of SerialPort related APIs for other platforms/devices. You can see related issues below: [Serial Port support on Windows](https://github.com/dotnet/corefx/issues/984) [Serial Port support on Unix/OSX](https://github.com/dotnet/corefx/issues/18012) I actually don't know what the ultimate expectation is for this topic as I hope others would chime in with better scenarios. This will hopefully help contributors understand requirements when improving the APIs to support said features. For example, what does ""support on RPi"" really mean? If it runs under Windows IoT, does that mean support for UWP? If support comes for Unix/OSx, does that mean the APIs will work running on Alpine/Ubuntu? And how about Docker support? There were also discussions on using the on-board UART or using USB (e.g. FTDI, etc.) dongles. Community, please add thoughts to get SerialPort APIs working in other areas in addition to Windows. Thanks in advance. FYI... @willdean @JeremyKuhne @karelz @danmosemsft " +18024 area-System.Security Support Unix in System.Security.Cryptography.Csp Per https://github.com/dotnet/corefx/issues/16585 support Unix in the Csp assembly; previously PNSE was thrown for every member. There was some refactoring to break apart the shared, windows-only and unix-only code. Also several files were renamed to have *.Windows.cs or *.Shared.cs, and Unix-only files were added with *.Unix.cs. +18025 area-System.Reflection Fix xunit name Fix https://github.com/dotnet/corefx/issues/17996 +18026 area-System.Net Fix and enable NetworkStream.Dispose test on Unix Closes https://github.com/dotnet/corefx/issues/16611 cc: @geoffkizer +18029 area-Infrastructure CLI for Alpine is broken The CLI for Alpine claims to contain the 1.1.0 shared framework but it is not. It's some 1.0.0 version in a folder that's been renamed. This is causing anything that depended on 1.1.0 surface area / assembly versions to fail. +18033 area-System.Security Fix portable System.Security.Cryptography.Native EC2M issue We are building the portable dotnet core on the oldest Linux distro we support, which is currently RHEL7.2. But the OpenSSL on that distro doesn't support the EC2M functions and so it effectively disables them for the portable dotnet core on all Linux distros. This change fixes it by adding copies of declarations of the five missing functions to opensslshim.h if they are not found at the compile time. That enables the shim to be able to use those functions on all distros that support them. +18035 area-Infrastructure Move corefx onto the .NET Core 2.0 toolset "The latest version of buildtools allows a 2.0 CLI to be used. This change pulls in that version of buildtools and updates corefx to use the 2.0 CLI for restoring nuget packages and running our shared tools. * All of the project.json(.template) files under `external` have been converted to use `PackageReference` items directly defined in the depproj files. The versions for these references are based on pre-existing properties defined in dependencies.props. When we take future version update PR's, we should only see changes in that single file. * packageresolve.targets was modified so that the paths for the MSBuild project to be restored, as well as the ""project.assets.json"" file (the lock file, essentially). Note that the property for the projec to be restored is still called `ProjectLockJson`, although it represents an MSBuild project. I'll look into cleaning this up, I just need to make sure there's no stray references to ""ProjectLockJson"" remaining. * There are a bunch of new calls to `chmod` here and there. This is because .NET Core 2.0 (which we now restore all packages with, and run the build on) does not preserve executable flags in Unix files, by design. We need to mark our programs as executable before we try to use them. * NuGet now restores all packages into folders with lower-case names. This needed to be accounted for in a variety of different places. * ~~I've brought back the ""hack"" where we pre-build CoreFx.Tools.dll before running the full product build. This is necessary due to changes in the CLI. Technically this will go away when we move CoreFx.Tools.dll into buildtools.~~ Never mind. We don't need that. NOTE: This is not going to work on Alpine right now, because there is no 2.0 CLI being produced for it. Everything should be in place to do, so, though, so hopefully we can turn that on shortly. @ericstj , @weshaggard, @joperezr " +18036 area-System.Net HttpWebRequest.SendRequest fails on UAP due to settting MaxResponseHeadersLength The UAP specific code in https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpClientHandler.cs will throw PlatformNotSupportedException if the MaxResponseHeadersLength is to set. This is simliar to #17812 +18037 area-System.Net Disable HttpRequest.MaxResponseHeadersLength PNSE for UWP. This is necessary for app-compat , apps fails because of PNSE exception.This is a workaround till we get the correct fix, see #18036. @davidsh @CIPop @vitek-karas +18040 area-Infrastructure Fix package cycle in System.Reflection.TypeExtensions /cc @weshaggard @pranavkm +18041 area-System.Net Expose S.N.NetworkInformation to UWP As in https://github.com/dotnet/corefx/pull/17970, deleting the stub gives us (1) a list of any pinvoke violations (2) test coverage in appcontainer -- we can fix actual bugs now. @davidsh @CIPop @stephentoub +18042 area-System.Xml Remove dead code in System.Private.Xml Unreachable implementations inside System.Private.Xml were discovered by BclRewriter and removed with help of the CodeRemover tool. ~~There were also many public types in `System.Xml.Xsl.Runtime` namespace that were not exposed in the Xml contracts. All of those were made internal.~~ (Related issue: https://github.com/dotnet/corefx/issues/16825) System.Private.Xml contains implementations from both System.Xml.dll and System.Data.SqlXml.dll on Desktop. Here's how the sizes look now: 2,657,952 System.XML.dll 734,416 System.Data.SqlXml.dll 3,534,336 System.Private.Xml.dll cc: @danmosemsft @weshaggard +18043 area-Infrastructure Update buildtoolsversion and copy config file over to test folder Changed the way we where generating the config file for desktop runners from WritingAllLines task to Copy from buildtools static file. cc: @weshaggard @tarekgh @joperezr +18044 area-System.Data Adding DAC support to Managed SNI I added DAC support to Managed SNI. Now user can connect to SQL Server as Dedicated Administrator Connection by adding `admin:` at the beginning of connection string. Integrated Authentication also works in DAC support. +18048 area-System.Runtime "Test: System.Tests.EnvironmentTests/GetFolderPath_Windows failed with ""Xunit.Sdk.NotEmptyException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/GetFolderPath_Windows(folder: AdminTools)` has failed. Assert.NotEmpty() Failure Stack Trace: at System.Tests.EnvironmentTests.GetFolderPath_Windows(SpecialFolder folder) Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetFolderPath_Windows(folder:%20AdminTools) +18049 area-System.Runtime "Test: System.Tests.Environment_Exit/CheckExitCode failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.Environment_Exit/CheckExitCode(expectedExitCode: -1)` has failed. Assert.Equal() Failure\r Expected: -1\r Actual: -1073740791 Stack Trace: at System.Tests.Environment_Exit.CheckExitCode(Int32 expectedExitCode) Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.Environment_Exit~2FCheckExitCode(expectedExitCode:%20-1) +18050 area-System.Runtime "Tests under: System.Tests.SetEnvironmentVariable failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.SetEnvironmentVariable/Default(target: User)` has failed. only machine target should have access issues\r Expected: True\r Actual: False Stack Trace: at System.Tests.SetEnvironmentVariable.ExecuteAgainstTarget(EnvironmentVariableTarget target, Action action, Action cleanUp) Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.SetEnvironmentVariable~2FDefault(target:%20User) +18051 area-System.Runtime "Tests under: System.Reflection.Tests.AssemblyTests failed with ""System.NotSupportedException""" Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyTests/AssemblyLoadFromBytes` has failed. System.NotSupportedException : Assembly.Load(byte[], ...) is not supported in AppX. Stack Trace: at System.AppDomain.CheckLoadByteArraySupported() at System.Reflection.Assembly.Load(Byte[] rawAssembly, Byte[] rawSymbolStore) at System.Reflection.Assembly.Load(Byte[] rawAssembly) at System.Reflection.Tests.AssemblyTests.AssemblyLoadFromBytes() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Runtime.Tests/analysis/xunit/System.Reflection.Tests.AssemblyTests~2FAssemblyLoadFromBytes +18052 area-System.Runtime "Test failure: System.Tests.GuidTests/Parse_Invalid_Netfx(input: \""{0xdddddddd, 0xdddd, 0xdddd,{0xdd0xdd,0xdd,0xdd,0x\""..., exceptionType: typeof(System.FormatException))" "Opened on behalf of @Jiayili1 The test `System.Tests.GuidTests/Parse_Invalid_Netfx(input: \""{0xdddddddd, 0xdddd, 0xdddd,{0xdd0xdd,0xdd,0xdd,0x\""..., exceptionType: typeof(System.FormatException))` has failed. Assert.Throws() Failure\r Expected: typeof(System.FormatException)\r Actual: (No exception was thrown) Stack Trace: at System.Tests.GuidTests.Parse_Invalid_Netfx(String input, Type exceptionType) Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.GuidTests~2FParse_Invalid_Netfx(input:%20%5C%22%7B0xdddddddd,%200xdddd,%200xdddd,%7B0xdd0xdd,0xdd,0xdd,0x%5C%22...,%20exceptionType:%20typeof(System.FormatException))" +18053 area-System.Runtime "Tests under: System.Tests.StringTests failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.StringTests/ToLower_TurkishI` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Tests.StringTests.<>c.b__95_2() at System.Tests.Helpers.PerformActionWithCulture(CultureInfo culture, Action test) at System.Tests.StringTests.ToLower_TurkishI() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.StringTests~2FToLower_TurkishI +18054 area-System.Security Test failure: WindowsIdentityTests/CloneAndProperties(cloneViaSerialization: False) Opened on behalf of @Jiayili1 The test `WindowsIdentityTests/CloneAndProperties(cloneViaSerialization: False)` has failed. System.UnauthorizedAccessException : Attempted to perform an unauthorized operation. Stack Trace: at System.Security.Principal.WindowsIdentity.get_AuthenticationType() at System.Security.Claims.ClaimsIdentity..ctor(IIdentity identity, IEnumerable`1 claims, String authenticationType, String nameType, String roleType) at System.Security.Principal.WindowsIdentity..ctor(WindowsIdentity identity) at WindowsIdentityTests.CloneAndProperties(Boolean cloneViaSerialization) Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Security.Principal.Windows.Tests/analysis/xunit/WindowsIdentityTests~2FCloneAndProperties(cloneViaSerialization:%20False) +18055 area-System.Security Test failure: WindowsIdentityTests/ConstructorsAndProperties Opened on behalf of @Jiayili1 The test `WindowsIdentityTests/ConstructorsAndProperties` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at WindowsIdentityTests.ConstructorsAndProperties() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Security.Principal.Windows.Tests/analysis/xunit/WindowsIdentityTests~2FConstructorsAndProperties +18057 area-System.Text Test failure: System.Text.RegularExpressions.Tests.RegexMatchTests/Match_SpecialUnicodeCharacters Opened on behalf of @Jiayili1 The test `System.Text.RegularExpressions.Tests.RegexMatchTests/Match_SpecialUnicodeCharacters` has failed. Assert.Equal() Failure\r Expected: False\r Actual: True Stack Trace: at System.Text.RegularExpressions.Tests.RegexMatchTests.VerifyMatch(Match match, Boolean expectedSuccess, String expectedValue) at System.Text.RegularExpressions.Tests.RegexMatchTests.Match(String pattern, String input, RegexOptions options, Int32 beginning, Int32 length, Boolean expectedSuccess, String expectedValue) at System.Text.RegularExpressions.Tests.RegexMatchTests.Match_SpecialUnicodeCharacters() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Text.RegularExpressions.Tests/analysis/xunit/System.Text.RegularExpressions.Tests.RegexMatchTests~2FMatch_SpecialUnicodeCharacters +18058 area-System.Threading "AllocateNativeOverlapped_PreAllocated_ReusedReturnedNativeOverlapped_OffsetLowAndOffsetHighSetToZero failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `ThreadPoolBoundHandleTests/AllocateNativeOverlapped_BlittableTypeAsPinData_DoesNotThrow` has failed. System.ArgumentException : The handle is invalid.\r Parameter name: handle Stack Trace: at System.Threading.ThreadPoolBoundHandle.BindHandle(SafeHandle handle) at ThreadPoolBoundHandleTests.CreateThreadPoolBoundHandle(SafeHandle handle) at ThreadPoolBoundHandleTests.CreateThreadPoolBoundHandle() at ThreadPoolBoundHandleTests.AllocateNativeOverlapped_BlittableTypeAsPinData_DoesNotThrow() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Threading.Overlapped.Tests +18059 area-System.Xml "Tests under: System.Xml.Linq.TreeManipulation.Tests.XLinqTests.SaveWithFileName failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `XLinqTests.SaveWithFileName/XDocumentSave` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at XLinqTests.SaveWithFileName.XDocumentSave() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Xml.Linq.TreeManipulation.Tests/analysis/xunit/XLinqTests.SaveWithFileName~2FXDocumentSave +18060 area-System.Xml Test failure: System.Xml.Tests.TCXmlSchemaValidatorMisc/XSDValidationGeneratesInvalidError_1 Opened on behalf of @Jiayili1 The test `System.Xml.Tests.TCXmlSchemaValidatorMisc/XSDValidationGeneratesInvalidError_1` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\52381fec-489e-4a53-8303-cc6c2645de0d\\Work\\93817085-3283-42ba-938f-99eeb5fc84a0\\Unzip\\commonstructure.xsd' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.Xml.XmlWriterSettings.CreateWriter(String outputFileName) at System.Xml.Tests.TCXmlSchemaValidatorMisc.CreateSchema1() at System.Xml.Tests.TCXmlSchemaValidatorMisc.XSDValidationGeneratesInvalidError_1() Build : Master - 20170407.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170407.01/workItem/System.Xml.XmlSchema.XmlSchemaValidatorApi.Tests/analysis/xunit/System.Xml.Tests.TCXmlSchemaValidatorMisc~2FXSDValidationGeneratesInvalidError_1 +18061 area-Serialization Add XmlSerializer test case @huanwu, @shmao , please help review the code. +18065 area-Meta Question: Best way to unit-test localisable error messages? Error messages can be localisable, which means that tests that compare the message with a fixed string are locale-dependent. So far whenever I've needed to examine a message I've either looked for a particular substring (which will serve my needs right now too, but it set me wondering about general principles), or verified that messages from exceptions thrown one way match those thrown another. Is there a better approach to take here that doesn't build assumptions about locale into the unit test? +18066 area-Microsoft.CSharp Prohibit indexing of single-ranked non-SZ arrays in dynamic variables. Fixes #18062 Also: Make exception message match CS0022 on dynamic array index-count mismatch Fixes #18064 and included in this PR as it has to hit the same bit of code. +18069 area-System.Diagnostics MembersMustExist: System.Diagnostics.Debug.Listeners I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following member is missing in corefx but is available in netfx: `MembersMustExist : Member 'System.Diagnostics.Debug.Listeners.get()' does not exist in the implementation but it does exist in the contract.` @joperezr: Would it make sense to port Listeners into corefx? It seems Xamarin is using it for Android: https://apisof.net/catalog/System.Diagnostics.Debug.Listeners. The types involved are TraceListenerCollection and TraceListener. Both are already in Core. Related issue: https://github.com/dotnet/corefx/issues/6196 +18070 area-Meta Removing overrides is also dangerous In the [Breaking Change Rules - Members](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md#members) it is mentioned: > * Introducing or removing an override > > Make note, that introducing an override might cause previous consumers to skip over the override when calling base. Removing an override will cause in throwing a `System.TypeLoadException` for types that are overriding that implementation. Here's a repo of these issues: https://github.com/paulomorgado/CSharpVirtualCallGotchas +18071 area-System.IO MembersMustExist: System.IO.IsolatedStorage I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following members are missing in corefx but are available in netfx: ``` MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorage.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Security.Policy.Evidence, System.Type, System.Security.Policy.Evidence, System.Type)' does not exist in the implementation but it does exist in the contract. ``` Related issue which talks about the GetStore member: https://github.com/dotnet/corefx/issues/10935 @JeremyKuhne @ianhays: Is it possible / Does it make sense to port those members to Core? Jeremy already talked about that GetStore needs refactoring and would take a week. What about the others? +18072 area-System.Reflection MembersMustExist: System.Reflection.Emit I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following members are missing in corefx but are available in netfx: ``` MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource(System.String, System.String, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Evidence.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String, System.Reflection.PortableExecutableKinds, System.Reflection.ImageFileMachine)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo, System.Reflection.Emit.PEFileKinds)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.ReflectionOnly' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.Save' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.ReturnType.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.GetDynamicILInfo()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.CreateType()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.EventBuilder.GetEventToken()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.EmitCalli(System.Reflection.Emit.OpCode, System.Runtime.InteropServices.CallingConvention, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.CreateMethodBody(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineDocument(System.String, System.Guid, System.Guid, System.Guid)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineManifestResource(System.String, System.IO.Stream, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetArrayMethodToken(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSymWriter()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.IsTransient()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetUserEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.PropertyBuilder.PropertyToken.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Reflection.Module, System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. ``` @AtsushiKan @DnlHarvey: Is it possible / Does it make sense to port these members to Core or is it the same as with TypeInfo that the future for System.Reflection.Emit is unclear till netcoreapp20 release? See here: https://github.com/dotnet/corefx/pull/17603 +18073 area-System.Security MembersMustExist: System.Security.Principal I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following members are missing in corefx but are available in netfx: ``` MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.Security.Principal.WindowsIdentity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate(System.IntPtr)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.UserClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.UserClaims.get()' does not exist in the implementation but it does exist in the contract. ``` @bartonjs @steveharter: It is possible / Does it make sense to port these members to Core? They live in System.Security.Principal.Windows. https://apisof.net/catalog/System.Security.Principal.IdentityReferenceCollection +18074 area-System.Security MembersMustExist: System.Security.Cryptography.ECDsaCng I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following member is missing in corefx but is available in netfx: `MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.IO.Stream, System.Byte[])' does not exist in the implementation but it does exist in the contract.` Related issue: https://github.com/dotnet/corefx/issues/17163. ECDsaCng are removed from netstandard but still live in netcore. @bartonjs @steveharter: Is it possible / Does it make sense to port this member to Core? I can't see any usage of it in netfx: https://apisof.net/catalog/System.Security.Cryptography.ECDsaCng.VerifyData(Stream,Byte()) +18075 area-System.ComponentModel MembersMustExist: System.ComponentModel.DataAnnotations I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following member is missing in corefx but is available in netfx: `MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract.` @lajones @divega @ajcvickers: It is possible / Does it make sense to port this member to Core? The usage is like a non-existent here: https://apisof.net/catalog/System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer but is **the only missing member** from netfx in System.ComponentModel.DataAnnotations. +18076 area-Serialization Test Xml_HiddenDerivedFieldTest Failed in ReflectionOnly Mode ``` XmlSerializerTests.Xml_HiddenDerivedFieldTest [FAIL] 02:36:17 Roundtrip verification for HiddenDerivedField test failed 02:36:17 Expected: True 02:36:17 Actual: False 02:36:17 Stack Trace: 02:36:17 at XmlSerializerTests.Xml_HiddenDerivedFieldTest() 02:36:18 Finished: System.Xml.XmlSerializer.ReflectionOnly.Tests 02:36:18 02:36:18 === TEST EXECUTION SUMMARY === 02:36:18 /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/Tools/tests.targets(318,5): warning : System.Xml.XmlSerializer.ReflectionOnly.Tests Total: 155, Errors: 0, Failed: 1, Skipped: 0, Time: 2.519s ``` +18077 area-System.Security MembersMustExist: System.Security.SecurityContext I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following members are missing in corefx but are available in netfx: ``` MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlow()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlowWindowsIdentity()' does not exist in the implementation but it does exist in the contract. ``` @bartonjs @steveharter: It is possible / Does it make sense to port these members to Core? +18078 area-System.Security MembersMustExist: System.Security.SecurityException I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following member is missing in corefx but is available in netfx: ``` MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. ``` @bartonjs @steveharter: It is possible / Does it make sense to port these members to Core? It lives in System.Runtime. https://apisof.net/catalog/System.Security.SecurityException.Zone +18079 area-System.Security MembersMustExist: System.Security.Cryptography.CspParameters I am currently looking into differences between Core and Desktop and opening this issue as a child of https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 The following member is missing in corefx but is available in netfx: ``` MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. ``` @bartonjs @steveharter: It is possible / Does it make sense to port these members to Core? It lives in System.Security.Cryptography.Csp. https://apisof.net/catalog/System.Security.Cryptography.CspParameters +18080 area-System.Text Add 1252 codepage test case +18082 area-System.Security Improve negative alignment for asymmetric algs. Ensure that we get consistent (modulo HResult/exact message text) exceptions for negative experiences across each of the three implementations of the three asymmetric algorithms. RSA: * We should throw when decrypting with no private key * We should throw when signing with no private key * We should throw when signing and the hash value is the wrong size * We should throw ArgumentNullException on the null hash DSA: * We should throw when signing with no private key ECDSA: * We should throw when signing with no private key Fixes #18016. +18083 area-Infrastructure Testing of .NET Core final output "Today we have a gap around what we test. We test individual output from a single machine but never really test the final thing we're shipping after we bring all the stuff together. Folks upstack do this but not to the level that we would. We should at a minimum test the following things on a final MS.NETCore.App + shared framework out of core-setup. 1. API Compat between MS.NC.A and shared framework - all rids. [djm: runtime assets that are included in the CLI ... similar to apicompat does in the build at leaf level, but for non-Windows, and strictly limited to MS.NC.A] 2. API Compat between MS.NC.A and runtime packages - all rids. [djm: runtime assets that you get when publishing] 3. API Compat between Netstandard.Library and MS.NC.A. [djm: similar to what we do in the shims\apicompat.proj, but strictly limited to MS.NC.A] 4. API Compat between MS.NC.A and last stable version of the same. - ref assys (eg: 2.0 vs 1.1) [djm: this may not have been done before] 5. API Compat between shared framework and last stable version of the same - all rids. [djm: as above but for runtime -- this may not be easy to interpret, or relevant (?)] 6. API Compat between runtime packages and last stable version of the same - all rids. [djm: as for 5 but runtime packages - what you get when publishing] 7. CoreFx test compilation against MS.NC.A (and other stable packages) and execution against shared framework (and runtime packages) - all rids. [djm: will show any tests that depend on random binaries built by corefx that aren't in shared framework; also a sanity check of the real product] 8. Check that necessary baselines built by shims\apicompat.proj are clean. (This does not build by default.) [djm: sanity check] In all cases ""all rids"" mean all platforms we support and care to test, regardless of the granularity of our actual assets. In all cases MS.NC.A and runtime packages indicate the final packages which we publish. In all cases shared framework indicates the final installer/zip that we publish. /cc @weshaggard " +18084 area-Infrastructure Remove docker demand on 1.13.1 This needs to be removed because we are trying to complete upgrade to docker 17.03.0. Right now there is a single machine that has 1.13.1 on it for this build definition. +18085 area-Infrastructure Pass OfficialBuildId to build command to disable package overlap Enables https://github.com/dotnet/corefx/pull/18081. Also disables publish overwriting, which will ensure that there is no package overlap anymore. Also see https://github.com/dotnet/corefx/issues/16126. /cc @ericstj @MattGal @weshaggard +18086 area-System.Data Enable System.Data.SqlClient manual tests for desktop I enabled System.Data.SqlClient.ManualTests to run in desktop by adding a netstandard configuration instead of netcoreapp. cc: @weshaggard @joperezr @danmosemsft @saurabh500 +18087 area-System.Runtime Make it statically and dynamicaly discoverable if runtime supports assembly unloading Just thought of a runtime capability, that would be convenient to check for - ability to unload types/assemblies. I have seen many examples where code goes to great lengths trying to not retain runtime type objects - do not put types as keys (unless the type is a known primitive) in Dictionaries/Caches, do not cache delegates .... - That is with the assumption that retaining type objects will prevent assembly unloading. However, if I am not mistaken, only a few, if any, runtimes can actually unload types/assemblies. It would be helpful for the dynamic scenarios, to know if unloading is not possible and thus no need to worry about, for example, using type objects as keys in caches. # Proposed API (part of overall capability probing framework as in https://github.com/dotnet/corefx/issues/17116) ```C# public static readonly string CollectibleAssemblies = nameof(CollectibleAssemblies); ``` Any better name is more than welcome. Any already existing conventional way to probe for the above would be fine too. +18088 area-Infrastructure Downgrade warnings when referencing log4net in netcoreapp2.0 Copied from https://github.com/dotnet/corefx/issues/17278. log4net referenced a mix of 1.0 and 1.1 packages. When used in netcoreapp1.1 this didn't matter, since the netcore.app meta-package would lift all the packages up to 1.1. In netcoreapp2.0 this no longer happens due to our smaller package graph. The result is that the mix of 1.0 and 1.1 cause downgrade warnings when 1.1 package bring in the 1.1 lineup (Microsoft.NETCore.Targets). This is because the lineup brings in 1.1 versions for **all** split packages, including those 1.0 references from log4net. The 1.1 runtime packages reference 1.1 dependencies which ends up looking like a downgrade to nuget. We could fix this by shipping a new version of Microsoft.NETCore.Targets in netcoreapp2.0 which has no lineup info in its runtime.json. That would have the added benefit of reducing the download for mixed 1.x/2.0 projects, reducing the package graph, and thus our reliance on conflict resolution. The downside is that it would grow the package graph slightly. @weshaggard @terrajobst what do you think? +18091 area-System.Collections Add TryAdd/Remove extension methods in CollectionExtensions Adding `TryAdd` and `Remove` to `CollectionExtensions`. Hopefully I did everything correctly. If not, I'm happy to revise the PR 😄 cc @safern @karelz @danmosemsft Closes #17918 +18093 area-Infrastructure Share build traversal logic across framework pkgs Previously the build traversal logic was duplicated between the UAP and NETCoreApp packages. This refactors it into shared targets/props. The mechanism for opt-in to this traversal behavior is to include a props file in the project that matches the convention *.rids.props. The file must define PackageRID and OfficialBuildRID items. /cc @joperezr @chcosta @weshaggard +18095 area-System.IO MemoryMappedViewStream.PointerOffset returns invalid value @flobadob commented on [Sat Feb 11 2017](https://github.com/dotnet/coreclr/issues/9528) As the title. See [stack overflow discussion](http://stackoverflow.com/questions/42170142/memorymappedviewstream-pointeroffset-has-wrong-value) for a failing unit test that demonstrates the issue. Thanks. --- @janvorli commented on [Mon Feb 13 2017](https://github.com/dotnet/coreclr/issues/9528#issuecomment-279417350) CC: @stephentoub --- @gkhanna79 commented on [Sat Mar 04 2017](https://github.com/dotnet/coreclr/issues/9528#issuecomment-284175967) @danmosemsft @AlexGhiondea PTAL --- @danmosemsft commented on [Wed Mar 22 2017](https://github.com/dotnet/coreclr/issues/9528#issuecomment-288547847) I haven't looked at this, but if desktop behavior matches we need to take care whether we are breaking folks and if so is it worth it. --- @alexperovich commented on [Fri Apr 07 2017](https://github.com/dotnet/coreclr/issues/9528#issuecomment-292672805) The code for MemoryMappedFile is actually in dotnet/corefx. I will move this issue. +18096 area-Infrastructure Add build definitions for netfx tests This PR adds build definitions to run desktop tests in Helix. cc: @joperezr @weshaggard @MattGal @danmosemsft +18097 area-System.Diagnostics Remove UAP specific code for FileVersionInfo The current implementation (same as Unix) looks functional so perhaps this doesn't get us much beyond a single Windows binary. Unfortunately this flags 4 pinvokes we had previously deferred request for. +18098 area-Infrastructure Build UAP identity package during -targetGroup:uapaot build The UAPAOT build currently doesn't build the identity package due to an explicit condition: https://github.com/dotnet/corefx/blob/001fdf5538b27259f845d7ce7cc5daa8f1d179aa/pkg/Microsoft.Private.CoreFx.UAP/Microsoft.Private.CoreFx.UAP.builds#L9 To fix this we need to do the following: 1. Remove that condition. 2. Remove `uapaot` from configurations.props. 3. Use something other than 'targetgroup' for inferring the _aotSuffix. Perhaps _bc_TargetGroup. +18099 area-System.IO Test PathWithReservedDeviceNameAsPath_ThrowsDirectoryNotFoundException fails on windows machine "Test PathWithReservedDeviceNameAsPath_ThrowsDirectoryNotFoundException fails on windows 10 machine. ``` b__32_0(String path) in C:\\Projkti\\.NET\\corefx\\src\\System.IO.FileSystem\\tests\\Directory\\CreateDirectory.cs:line 420\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[29]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r\n Expected: typeof(System.IO.DirectoryNotFoundException)\r\n Actual: (No exception was thrown)\r\n at Xunit.Assert.Throws(Type exceptionType, Exception exception) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\ExceptionAsserts.cs:line 143\r\n at Xunit.Assert.Throws[T](Func`1 testCode) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\ExceptionAsserts.cs:line 36\r\n at System.IO.Tests.Directory_CreateDirectory.b__32_0(String path) in C:\\Projekti\\.NET\\corefx\\src\\System.IO.FileSystem\\tests\\Directory\\CreateDirectory.cs:line 420\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[28]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r\n Expected: typeof(System.IO.DirectoryNotFoundException)\r\n Actual: (No exception was thrown)\r\n at Xunit.Assert.Throws(Type exceptionType, Exception exception) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\ExceptionAsserts.cs:line 143\r\n at Xunit.Assert.Throws[T](Func`1 testCode) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\ExceptionAsserts.cs:line 36\r\n at System.IO.Tests.Directory_CreateDirectory.b__32_0(String path) in C:\\Projekti\\.NET\\corefx\\src\\System.IO.FileSystem\\tests\\Directory\\CreateDirectory.cs:line 420\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31]]> ``` Fun fact: I have executed this commands on my machine and it seems that some will give me exception while others will execute silently (while no actual directory will be created) > C:\>mkdir Directory\COM4 <-- no error > > C:\>mkdir Directory\COM1 <-- error > The system cannot find the file specified. > > C:\>mkdir Directory\LPT1 <-- error > The system cannot find the file specified. > > C:\>mkdir Directory\NUL <-- no error > > C:\>mkdir Directory\AUX <-- error > The system cannot find the file specified. @karelz @weshaggard @mellinoe" +18100 area-Infrastructure Update ILLink version. This change updates ILLink version and the flags required by that version. +18101 area-System.Net Adding support for HttpHandlerDiagnosticListener. This listener compensates for the fact that .NET45/46 doesn't use DiagnosticSource. This solution attempts to recreate that by inserting into the Http stack and generating events. This HttpHandlerDiagnosticListener is a singleton, and the bulk of its initialization happens when the first subscribe subscribes. The way this listener injects inself into the Http stack is via reflection. More details are in the code documentation. +18102 area-Serialization Fix some XmlSerializer.ReflectionOnly Tests failures in Desktop Desktop tests where failing with error: ``` System.TypeInitializationException : The type initializer for 'XmlSerializerTests' threw an exception. ---- No method named set_Mode Expected: True Actual: False Stack Trace: at XmlSerializerTests.Xml_TypeWithMultiXmlAnyElement() ----- Inner Stack Trace ----- D:\repos\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(27,0): at XmlSerializerTests..cctor() ``` Because XmlSerializer.Mode property is not available in desktop (It is an internal API) so when trying to get it through reflection it would throw an exception. I moved the static constructor to a netcoreapp file which is only included when TargetGroup is netcoreapp. cc: @tarekgh @danmosemsft +18103 area-System.Xml Investigate dependency of Xslt on System.Xml.Xsl.Runtime at runtime Refer to the discussion in https://github.com/dotnet/corefx/pull/18042 Xslt is loading public types from System.Xml.Xsl.Runtime and making calls to them at runtime to generate IL code. Investigate why this dependency exists and why we cannot remove them/move them to a separate library? +18104 area-System.Net PreAuthenticate throws PNSE on UWP platfrom Need to fix this for UWP src/System.Net.Http/src/netcore50/System/Net/HttpClientHandler.cs:159 +18105 area-Meta Couple of fixes for UWP app-compat. 1. HttpClientHandler.PreAuthenticate throws PNSE, disabling it for now - #18104 tracking proper fix 2. System.Runtime.CompilerServices.RuntimeOps need to be reflection enabled. +18106 area-System.Net UdpClient Send overload methods not having an offset @txdv commented on [Fri Apr 07 2017](https://github.com/dotnet/coreclr/issues/10790) [I was looking at the API of UdpClient](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs#L904-L928) and I wondered, why is it that there is no offset for the byte buffer provided? It just provides the offset as the 0 default to the underlying Socket SendTo call: ```csharp return Client.SendTo(dgram, 0, bytes, SocketFlags.None, endPoint); ```` Shouldn't the API be typed like Send(byte[] buffer, int offset, int count) like all the other APIs? (Stream::Write, Socket::SendTo) Is that a change that might get accepted? --- @jkotas commented on [Fri Apr 07 2017](https://github.com/dotnet/coreclr/issues/10790#issuecomment-292553643) @txdv You should ask this question in corefx repo since the relevant code lives there. +18107 area-System.Runtime Make `System.Runtime.InteropServices.SafeHeapHandle` Public @SamuelEnglard commented on [Mon May 02 2016](https://github.com/dotnet/coreclr/issues/4730) `System.Runtime.InteropServices.SafeHeapHandle` is a class that almost every developer who has used unmanaged memory has had to write. Having it built in would solve many issues and increase the odds of developers who don't know they needed it finding it. cc: @terrajobst --- @terrajobst commented on [Tue May 03 2016](https://github.com/dotnet/coreclr/issues/4730#issuecomment-216668417) @weshaggard @stephentoub @yizhang82 +18109 area-System.Collections Issue #15622 New overload Dictionary.Remove New overload Dictionary.Remove(TKey, out TValue) that ouputs value associated with the key that is being removed. Fixes #15622. Depends on dotnet/coreclr PR [#10203](https://github.com/dotnet/coreclr/pull/10203) @karelz @danmosemsft @safern @jkotas Please review. +18111 area-Microsoft.CSharp dynamic: Make exception message match CS0022 on index-count mismatch Fixes #18064 +18112 area-System.Linq Selective reflection enable CompilerServices.RuntimeOps in S.L.Expressions rdxml "Right now the whole type is included , this might not be necessary. " +18114 area-System.Diagnostics DiagnosticSource for all: Consistency & Accessibility "Since this involves many repos and projects, I'm filing it here as directed: I've been working to integrate MiniProfiler with ASP.NET Core, Entity Framework Core, MVC Core, etc. and I've been pointed many times at DiagnosticSource. So while implementing EntityFramework I found several inconsistencies in how DiagnosticListener is used in one repo. Issues for that (so far) are: - https://github.com/aspnet/EntityFramework/issues/7939 - https://github.com/aspnet/EntityFramework/issues/8001 - https://github.com/aspnet/EntityFramework/issues/8007 - https://github.com/aspnet/EntityFramework/pull/8110 - ...and I haven't even dealt with transactions and errors yet, which also don't have the bits needed for correlation. But when wrapping up Entity Framework and moving to port MVC from view wrappers (needed in MVC <= 5 days) to DiagnosticListener, I see even more inconsistencies. Here's a summary of the problems I, as a consumer, see with the API as it's applied currently: 1. The arguments sent to the listener (often [via `.SubscribeWithAdapter()`](https://github.com/aspnet/EventNotification/blob/248222ff54848ec7a8967a28eb26dfc1cf8b1fe4/src/Microsoft.Extensions.DiagnosticAdapter/DiagnosticListenerExtensions.cs#L10)) is *usually* an anoymous object. But to consume this object, your parameter types and names on unrelated methods need to match exactly. - How are users to even find these arguments, without digging through source? - What ensures these aren't breaking? This approach seems very brittle overall. - In Entity Framework [strong types exist](https://github.com/aspnet/EntityFramework/tree/f273711b5d8b20173e0769e56006576f3fcd2c72/src/EFCore.Relational/Internal), but they're all internal. Note that the unit tests use them. - Note that Entity Framework is working around easy consumption limitations in .NET Core reflection (https://github.com/dotnet/corefx/issues/4672) - Also of concern here: you can't use adapters where you can't use IL-emit for them, since that's how they're attaching at runtime. 2. Identifiers are sporadically available for correlation. For example https://github.com/aspnet/EntityFramework/issues/8007 addresses this issue with data readers in Entity Framework. Without an ID of some sort (EF uses a `Guid` on connections and commands), the linear nature of DiagnosticListener logging is without a way to correlate without adding far more overhead to the entire chain. For example we're talking about `AsyncLocal` as a workaround (which adds context switching overhead all the way down the pipe). What are we talking about here for 2 events *divided* that need correlation? I posit that allocating a `Guid` is almost *always* the cheapest possible option. Perhaps a correlation method should be built into the diagnostics framework itself. - How do we correlate events without these, cheaply? - How do we ensure a correlation method is consistently available? - As an example, ApplicationInsights uses AsyncLocal (according to @davidfowl, I haven't found this yet), and [only listens to `BeforeAction` in MVC](https://github.com/Microsoft/ApplicationInsights-aspnetcore/blob/develop/src/Microsoft.ApplicationInsights.AspNetCore/DiagnosticListeners/Implementation/MvcDiagnosticsListener.cs#L13). And [Glimpse also falls back to AsyncLocal](https://github.com/Glimpse/Glimpse.Prototype/blob/8565cd72024597fe9d8717c929aa253c3da9f399/src/Glimpse.Agent.AspNet/Internal/Inspectors/Mvc/MvcDiagnosticsInspector.cs). 3. Why aren't the names exposed? As examples: - In [ASP.NET MVC](https://github.com/aspnet/Mvc/blob/1e7972bd8f8c2724f6b81c7efa8775d980a5a130/src/Microsoft.AspNetCore.Mvc.Core/Internal/MvcCoreDiagnosticSourceExtensions.cs), the names are inline (not accessible properties). - In [Entity Framework Core](https://github.com/aspnet/EntityFramework/blob/dev/src/EFCore.Relational/Internal/RelationalDiagnostics.cs#L12-L30) the properties are cleanly declared, but `internal` and therefore useless. Note that they're exposed for sanity in the tests, though. These things together amount to a loose API that's not really friendly for consumption or testing. In many of the above cases, adjustments were made for unit tests to be sane. This consumption is **the same set of things any consumer would like to have**. I propose we make these changes across the board to MS libraries and enhance usability in 2.0: 1. Message values get a strong type 2. These strong types are public (so we can cast and compile against them) 3. The names of messages issued are public (**as constants**, so they may be used in `[DiagnosticName]`) The loose coupling (not even taking a reference on Entity Framework, for example) could still work where it did before with the adapters that exist today. But for those who want compile time checking (often you're taking a listener dependency chain to listen *for that specific thing* anyway), you'd have everything needed. This also allows several possibilities with the `System.Diagnostics` adapters overloads for cleaner code. For example, today I have this: ```c# [DiagnosticName(""Microsoft.EntityFrameworkCore.BeforeExecuteCommand"")] public void OnBeforeExecuteCommand(DbCommand command, string executeMethod, Guid instanceId, bool async) { // Available: Guid connectionId, DbCommand command, string executeMethod, Guid instanceId, long startTimestamp, bool async var timing = command.GetTiming(executeMethod + (async ? "" (Async)"" : null), MiniProfiler.Current); if (timing != null) { _commands[instanceId] = timing; } } ``` Instead, we could have this (while existing adapters continue to work): ```c# [DiagnosticName(RelationalDiagnostics.BeforeExecuteCommand)] public void OnBeforeExecuteCommand(BeforeExecuteCommandMessage message) { var timing = command.GetTiming(message.ExecuteMethod + (message.Async ? "" (Async)"" : null), MiniProfiler.Current); if (timing != null) { _commands[instanceId] = timing; } } ``` In that example I upper-cased the names for consistently in C# and framework patterns, but obviously that's an optional v2 break or not to be had. Note that the adapter could convert them camelcase matching for the proxy method if it struck out on an exact match for compatability. Also note that break would happen **at compile time**, and that it doesn't rely on conventions, the DLR, or runtime reflection to work. Relevant doc link: [Design Notes on Correlation and Timings in DiagnosticSource events](https://github.com/aspnet/EventNotification/issues/46) cc @karelz @pakrym @avanderhoorn @davidfowl @terrajobst" +18115 area-System.Collections Removed Dictionary.GetValueOrDefault From ref contract As Per the Issue #17917 , GetValueOrDefault Api's from the ref contract in the Dictionary class has been removed. Closes #17917 +18116 area-System.Net Review all PNSE from netcore50\System\net\HttpClientHandler.cs +18117 area-System.Net More PNSE disabling for UWP I have disabled couple of PNSE which look suspect and opened issue to review all PNSE. Doing it one by one is not scalable since app runs take about 10 hours to complete. +18118 area-System.IO UnmanagedMemoryStream methods missing from package? I re-wrote a small piece of code within the F# compiler dealing with memory-mapped files to use ``MemoryMappedFile`` instead of the win32 API to allow that functionality to work on all platforms. Microsoft/visualfsharp#2528 The PR fails to build for CoreCLR, because the ``Read`` and ``ReadArray`` methods are missing on ``System.IO.UnmanagedMemoryStream`` (from which ``MemoryMappedFileAccessor`` is derived). Am I doing something wrong in the code or the package references? I've looked around in this repository and dotnet/coreclr and haven't found anything to indicate why those methods would be missing from the ``UnmanagedMemoryStream`` class (from the ``System.IO.UnmanagedMemoryStream`` package). +18120 area-System.Linq Fill some gaps in Expression.Invoke testing. +18121 area-System.Console Invalid input and output encodings are allowed by Console on Windows The following tests pass with netfx, but not with netcoreapp. I'm writing tests for this class and will attempt writing and submitting a patch for this behaviour. - Netfx: IOException thrown - Netcoreapp: no exception thrown - an invalid encoding (i.e. no such code page) is allowed. Suggested behaviour: align with netfx, not just for compat, but also for correctness ```cs public class NoSuchCodePage : Encoding { public override int CodePage => int.MinValue; public override int GetByteCount(char[] chars, int index, int count) => 0; public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) => 0; public override int GetCharCount(byte[] bytes, int index, int count) => 0; public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) => 0; public override int GetMaxByteCount(int charCount) => 0; public override int GetMaxCharCount(int byteCount) => 0; } [Fact] [PlatformSpecific(TestPlatforms.Windows)] public void InputEncoding_SetEncodingWithInvalidCodePage_ThrowsIOException() { NoSuchCodePage invalidEncoding = new NoSuchCodePage(); Assert.Throws(() => Console.InputEncoding = invalidEncoding); Assert.NotEqual(invalidEncoding, Console.InputEncoding); } [Fact] [PlatformSpecific(TestPlatforms.Windows)] public void OutputEncoding_SetEncodingWithInvalidCodePage_ThrowsIOException() { NoSuchCodePage invalidEncoding = new NoSuchCodePage(); Assert.Throws(() => Console.OutputEncoding = invalidEncoding); Assert.NotEqual(invalidEncoding, Console.OutputEncoding); } ``` +18125 area-System.Net Test UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 1) failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/1481/testReport/junit/System.Net.NetworkInformation.Tests/UnixPingUtilityTests/PacketSizeIsRespected_payloadSize__1_/ ``` MESSAGE: System.ArgumentOutOfRangeException : Index was out of range. Must be non-negative and less than the size of the collection.\nParameter name: startIndex +++++++++++++++++++ STACK TRACE: at System.String.LastIndexOf(String value, Int32 startIndex, Int32 count, StringComparison comparisonType) at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.ParseReturnedPacketSize(String pingOutput) at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +18127 area-System.Diagnostics Add tests for Process/ProcessStartInfo +18128 area-System.Net Fix managed implementation of HttpListener to match Windows implementation In #17999 some tests are disabled on Unix due to different implementations of HttpListener. Most of these are argument validation, and can easily be corrected. Some may need further investigation and may be by-design due to inherent platform differences. I'm grabbing this one, once #17999 is merged +18129 area-System.Net How to control IPEndPoint of HTTP requests? I've got a few .NET services that run on machines with multiple IP addresses, and they need to occasionally send HTTP requests from specific IPs. Currently I use `HttpWebRequest` with a custom `ServicePoint.BindIPEndPointDelegate` and it works great. I'm hoping to port this service to .NET Core/Standard, but can't find any equivalent functionality in HttpClient/HttpClientHandler. Is there any way to control local IP to which HttpClient/HttpClientHandler binds? Any workarounds or plans to add this functionality? This is the only thing holding back my porting efforts. +18132 area-System.Net Log ping output Some simple logging for https://github.com/dotnet/corefx/issues/18125 +18133 area-System.Net InvalidOperationException from HttpHeaders.CheckHeaderName when _invalidHeaders contains the header When using [`HttpHeaders.Contains`](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs#L210) method, [this](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs#L1137) if statement will throw an `InvalidOperationException` when the header *does* exist it throws the exception which seems incorrect? What is even more confusing is that there is a `TryCheckHeaderName` which will return a boolean instead of throwing an exception right below that method, which seems more appropriate for the `HttpHeaders.Contains` method. Sorry if this isn't the place to report this, using the 'file a bug' links in the readme doesn't work for me. +18134 area-Meta Remove dead code for system.threading, system.text.regularexpressions, system.threading.overlapped "Remove dead code according to #17905 Change for System.Threading: http://tempcoverage.blob.core.windows.net/report2/System.Threading.diff.html System.Text.RegularExpressions: http://tempcoverage.blob.core.windows.net/report2/System.Text.RegularExpressions.diff.html I don't delete the line ""public static bool operator !=(CachedCodeEntryKey left, CachedCodeEntryKey right);"" , there is an error CS0216 : The operator 'CachedCodeEntryKey.operator ==(CachedCodeEntryKey, CachedCodeEntryKey)' requires a matching operator '!=' to also be defined if I delete this line. System.Threading.Overlapped: http://tempcoverage.blob.core.windows.net/report2/System.Threading.Overlapped.diff.html" +18135 area-System.Reflection Remove ActiveIssue1050 from CanReadFromSameMemoryMappedPEReaderInParallel() in MetadataReaderTests.cs Remove [ActiveIssue1050] from CanReadFromSameMemoryMappedPEReaderInParallel() in MetadataReaderTests.cs under src\System.Reflection.Metadata\tests\Metadata +18138 area-Meta Change adding or removing overloads from allowed to disallowed In the [Breaking Change Rules - Members](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md#members) it is mentioned: > * Introducing or removing an override > > Make note, that introducing an override might cause previous consumers to skip over the override when calling base. Removing an override will cause in throwing a `System.TypeLoadException` for types that are overriding that implementation. Here's a repo of these issues: https://github.com/paulomorgado/CSharpVirtualCallGotchas Fixes #18070 +18139 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Tests.Asymmetric.CryptographicExceptionTests.Ctor failed with ""Xunit.Sdk.EqualException""" Failed test: System.Security.Cryptography.Encryption.Tests.Asymmetric.CryptographicExceptionTests.Ctor Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Security.Cryptography.Encryption.Tests.Asymmetric/CryptographicExceptionTests/Ctor/ ~~~ MESSAGE: Assert.Equal() Failure\r\nExpected: 5\r\nActual: -2147024891 +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.Encryption.Tests.Asymmetric.CryptographicExceptionTests.Ctor() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Primitives\tests\CryptographicException.cs:line 20 ~~~ +18140 area-System.Linq Desktop: System.Linq.Parallel.Tests.OrderByThenByTests.OrderByDescending_ExtremeComparer failed Failed test: System.Linq.Parallel.Tests.OrderByThenByTests.OrderByDescending_ExtremeComparer Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Linq.Parallel.Tests/OrderByThenByTests/OrderByDescending_ExtremeComparer_labeled__Enumerable_Range_Ordered__count__2_/ ~~~ MESSAGE: Assert.InRange() Failure\r\nRange: (0 - 0)\r\nActual: 1 +++++++++++++++++++ STACK TRACE: at System.Linq.Parallel.Tests.OrderByThenByTests.OrderByDescending_ExtremeComparer(Labeled`1 labeled, Int32 count) in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\QueryOperators\OrderByThenByTests.cs:line 384 ~~~ +18141 area-System.Linq "Desktop: Test ""System.Linq.Parallel.Tests.OrderByThenByTests.ThenByDescending_NotPipelined_ExtremeComparer"" failed with ""Xunit.Sdk.AllException""" Failed test: System.Linq.Parallel.Tests.OrderByThenByTests.ThenByDescending_NotPipelined_ExtremeComparer Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Linq.Parallel.Tests/OrderByThenByTests/ThenByDescending_NotPipelined_ExtremeComparer_labeled__Partitioner_Random__count__2_/ Message: ~~~ Assert.All() Failure: 1 out of 2 items in the collection did not pass.\r\n[1]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (0 - 0)\r\n Actual: 1\r\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\RangeAsserts.cs:line 36\r\n at System.Linq.Parallel.Tests.OrderByThenByTests.<>c__DisplayClass71_0.b__2(Int32 x) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.Linq.Parallel\\tests\\QueryOperators\\OrderByThenByTests.cs:line 992\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31 ~~~ Stack Trace: ~~~ at System.Linq.Parallel.Tests.OrderByThenByTests.ThenByDescending_NotPipelined_ExtremeComparer(Labeled`1 labeled, Int32 count) in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\QueryOperators\OrderByThenByTests.cs:line 992 ~~~ +18142 area-System.Xml "Desktop: Test ""System.Xml.Tests.TC_SchemaSet_XmlResolver.v6"" failed with ""Xunit.Sdk.EqualException""" Failed test: System.Xml.Tests.TC_SchemaSet_XmlResolver.v6 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Xml.Tests/TC_SchemaSet_XmlResolver/v6/ ~~~ MESSAGE: Assert.Equal() Failure\r\nExpected: 1\r\nActual: 2 +++++++++++++++++++ STACK TRACE: at System.Xml.Tests.CError.Compare(Object actual, Object expected, String message) in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\CError.cs:line 24 at System.Xml.Tests.TC_SchemaSet_XmlResolver.v6() in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_XmlResolver.cs:line 135 ~~~ +18143 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.InvalidKeySizes failed with ""Xunit.Sdk.EqualException""" Failed test: System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.InvalidKeySizes Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Security.Cryptography.Encryption.Aes.Tests/AesContractTests/InvalidKeySizes_invalidKeySize__536870928_/ Message: ~~~ Got \r\nExpected: True\r\nActual: False ~~~ Stack Trace: ~~~ at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.InvalidKeySizes(Int32 invalidKeySize) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesContractTests.cs:line 86 ~~~ +18145 area-System.ComponentModel "Desktop: Tests under ""System.ComponentModel.DataAnnotations.Tests"" failed with ""Xunit.Sdk.AllException""" Failed tests: System.ComponentModel.DataAnnotations.Tests.PhoneAttributeTests.Validate_Valid System.ComponentModel.DataAnnotations.Tests.MaxLengthAttributeTests.Validate_Invalid System.ComponentModel.DataAnnotations.Tests.MaxLengthAttributeTests.Validate_Valid System.ComponentModel.DataAnnotations.Tests.MinLengthAttributeTests.Validate_Valid System.ComponentModel.DataAnnotations.Tests.MinLengthAttributeTests.Validate_Invalid System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_Invalid Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.ComponentModel.DataAnnotations.Tests/PhoneAttributeTests/Validate_Valid/ Message: ~~~ Assert.All() Failure: 6 out of 19 items in the collection did not pass.\r\n[18]: System.ComponentModel.DataAnnotations.ValidationException: The Object field is not a valid phone number.\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate(ValidationAttribute attribute, Object value, ValidationContext validationContext, Boolean isValid) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 35\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.b__6_0(TestCase test) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 22\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[17]: System.ComponentModel.DataAnnotations.ValidationException: The Object field is not a valid phone number.\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate(ValidationAttribute attribute, Object value, ValidationContext validationContext, Boolean isValid) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 35\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.b__6_0(TestCase test) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 22\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[16]: System.ComponentModel.DataAnnotations.ValidationException: The Object field is not a valid phone number.\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate(ValidationAttribute attribute, Object value, ValidationContext validationContext, Boolean isValid) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 35\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.b__6_0(TestCase test) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 22\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[15]: System.ComponentModel.DataAnnotations.ValidationException: The Object field is not a valid phone number.\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate(ValidationAttribute attribute, Object value, ValidationContext validationContext, Boolean isValid) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 35\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.b__6_0(TestCase test) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 22\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[14]: System.ComponentModel.DataAnnotations.ValidationException: The Object field is not a valid phone number.\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate(ValidationAttribute attribute, Object value, ValidationContext validationContext, Boolean isValid) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 35\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.b__6_0(TestCase test) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 22\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31\r\n[13]: System.ComponentModel.DataAnnotations.ValidationException: The Object field is not a valid phone number.\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate(ValidationAttribute attribute, Object value, ValidationContext validationContext, Boolean isValid) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 35\r\n at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.b__6_0(TestCase test) in D:\\j\\workspace\\outerloop_net---903ddde6\\src\\System.ComponentModel.Annotations\\tests\\ValidationAttributeTestBase.cs:line 22\r\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.assert\\Asserts\\CollectionAsserts.cs:line 31 ~~~ Stack Trace: ~~~ at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate_Valid() in D:\j\workspace\outerloop_net---903ddde6\src\System.ComponentModel.Annotations\tests\ValidationAttributeTestBase.cs:line 22 ~~~ +18146 area-System.ComponentModel "Desktop: System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_IConvertibleThrowsCustomException_IsNotCaught failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_IConvertibleThrowsCustomException_IsNotCaught Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.ComponentModel.DataAnnotations.Tests/RangeAttributeTests/Validate_IConvertibleThrowsCustomException_IsNotCaught/ ~~~ MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.ArithmeticException)\r\nActual: typeof(System.ComponentModel.DataAnnotations.ValidationException): The field Object must be between 1 and 1. +++++++++++++++++++ STACK TRACE: at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.<>c__DisplayClass11_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.ComponentModel.Annotations\tests\RangeAttributeTests.cs:line 191 ~~~ +18147 area-System.IO "Desktop: System.IO.Pipes.Tests.ReadFromPipeWithClosedPartner_ReadNoBytes failed with ""System.ArgumentException""" Failed tests: System.IO.Pipes.Tests.AnonymousPipeTest_Read_ServerIn_ClientOut.ReadFromPipeWithClosedPartner_ReadNoBytes System.IO.Pipes.Tests.AnonymousPipeTest_Read_ServerOut_ClientIn.ReadFromPipeWithClosedPartner_ReadNoBytes Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.IO.Pipes.Tests/AnonymousPipeTest_Read_ServerIn_ClientOut/ReadFromPipeWithClosedPartner_ReadNoBytes/ ~~~ MESSAGE: System.ArgumentException : Either the IAsyncResult object did not come from the corresponding async method on this type, or EndRead was called multiple times with the same IAsyncResult. +++++++++++++++++++ STACK TRACE: at System.IO.Stream.EndRead(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.IO.Pipes.Tests.PipeTest_Read.d__9.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.Pipes\tests\PipeTest.Read.cs:line 225 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +18148 area-System.ComponentModel "Desktop: Tests under ""System.ComponentModel.DataAnnotations.Tests"" failed with ""Xunit.Sdk.ThrowsException""" Failed tests: System.ComponentModel.DataAnnotations.Tests.CustomValidationAttributeTests.RequiresValidationContext_BadlyFormed_ThrowsInvalidOperationException System.ComponentModel.DataAnnotations.Tests.DataTypeAttributeTests.Ctor_String Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.ComponentModel.DataAnnotations.Tests/CustomValidationAttributeTests/RequiresValidationContext_BadlyFormed_ThrowsInvalidOperationException_validatorType__null__method____Does_not_matter___/ ~~~ MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.InvalidOperationException)\r\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at System.ComponentModel.DataAnnotations.Tests.CustomValidationAttributeTests.RequiresValidationContext_BadlyFormed_ThrowsInvalidOperationException(Type validatorType, String method) in D:\j\workspace\outerloop_net---903ddde6\src\System.ComponentModel.Annotations\tests\CustomValidationAttributeTests.cs:line 103 ~~~ +18149 area-System.ComponentModel "Desktop: System.ComponentModel.DataAnnotations.Tests.CustomValidationAttributeTests.RequiresValidationContext_Get_ReturnsExpected failed with ""Xunit.Sdk.EqualException""" Failed test: System.ComponentModel.DataAnnotations.Tests.CustomValidationAttributeTests.RequiresValidationContext_Get_ReturnsExpected Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.ComponentModel.DataAnnotations.Tests/CustomValidationAttributeTests/RequiresValidationContext_Get_ReturnsExpected_method____CorrectValidationMethodTwoArgs____expected__True_/ ~~~ MESSAGE: Assert.Equal() Failure\r\nExpected: True\r\nActual: False +++++++++++++++++++ STACK TRACE: at System.ComponentModel.DataAnnotations.Tests.CustomValidationAttributeTests.RequiresValidationContext_Get_ReturnsExpected(String method, Boolean expected) in D:\j\workspace\outerloop_net---903ddde6\src\System.ComponentModel.Annotations\tests\CustomValidationAttributeTests.cs:line 80 ~~~ +18150 area-System.ComponentModel "Desktop: System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_MinimumOrMaximumCantBeConvertedToType_ThrowsFormatException failed with ""System.Exception""" Failed: System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.Validate_MinimumOrMaximumCantBeConvertedToType_ThrowsFormatException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.ComponentModel.DataAnnotations.Tests/RangeAttributeTests/Validate_MinimumOrMaximumCantBeConvertedToType_ThrowsFormatException_type__typeof_int___minimum____Cannot_Convert____maximum____3___/ ~~~ MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.FormatException)\r\nActual: typeof(System.Exception): Cannot Convert is not a valid value for Int32. +++++++++++++++++++ STACK TRACE: at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) at System.ComponentModel.DataAnnotations.RangeAttribute.SetupConversion() at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value) at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.<>c__DisplayClass8_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.ComponentModel.Annotations\tests\RangeAttributeTests.cs:line 166 ~~~ +18151 area-System.Net "Desktop: System.Net.Tests.FtpWebRequestTest.Ctor_VerifyDefaults_Success failed with ""Xunit.Sdk.EqualException""" Failed test: System.Net.Tests.FtpWebRequestTest.Ctor_VerifyDefaults_Success Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Net.Tests/FtpWebRequestTest/Ctor_VerifyDefaults_Success/ ~~~ MESSAGE: Assert.False() Failure\r\nExpected: False\r\nActual: True +++++++++++++++++++ STACK TRACE: at System.Net.Tests.FtpWebRequestTest.Ctor_VerifyDefaults_Success() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Requests\tests\FtpWebRequestTest.cs:line 43 ~~~ +18152 area-System.Net "Desktop: System.Net.Sockets.Tests.NetworkStreamTest.CopyToAsync_DisposedSourceStream_ThrowsOnWindows_NoThrowOnUnix failed with ""System.ObjectDisposedException""" Failed test: System.Net.Sockets.Tests.NetworkStreamTest.CopyToAsync_DisposedSourceStream_ThrowsOnWindows_NoThrowOnUnix Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/13/testReport/System.Net.Sockets.Tests/NetworkStreamTest/CopyToAsync_DisposedSourceStream_ThrowsOnWindows_NoThrowOnUnix/ Message: ~~~ MESSAGE: Got unexpected exception: System.ObjectDisposedException: Cannot access a disposed object.\r\nObject name: 'System.Net.Sockets.NetworkStream'.\r\n at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)\r\n at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.IO.Stream.d__27.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Xunit.Record.d__3.MoveNext() in C:\\BuildAgent\\work\\cb37e9acf085d108\\src\\xunit.core\\Record.cs:line 76\r\nExpected: True\r\nActual: False ~~~ Stack Trace: ~~~ System.Net.Sockets.Tests.NetworkStreamTest.<>c.<b__28_0>d.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Sockets\tests\FunctionalTests\NetworkStreamTest.cs:line 689 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Tests.NetworkStreamTest.d__30.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Sockets\tests\FunctionalTests\NetworkStreamTest.cs:line 735 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Tests.NetworkStreamTest.d__28.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Sockets\tests\FunctionalTests\NetworkStreamTest.cs:line 676 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +18154 area-System.Linq Move files in Common only used in S.L.Expressions into S.L.Expressions @bartdesmet made a start on this with #14063 and #14097. This PR brings all remaining such files into System.Linq.Expressions. It also consolidates `System.Dynamic.Utils.Error` and `System.Linq.Expressions.Error`, so there is now one place for all such methods, which had previously been split between the two, with some duplicates. +18158 area-System.Net Added tests for EncryptionPropertyCollection (coverage 62.3%) Overall code coverage for System.Security.Cryptography.Xml is 71.8% Part of #16829 +18159 area-System.Runtime Option/Maybe and Either ```csharp public Option GetById(string id) => new DbContext().Find(id); ``` instead of ```csharp public Employee GetById(string id) => new DbContext().Find(id); ``` The proposed method signature reveals much better the real intent of this method/function. Right? `Option` could provide a `Match` function.... Here is a very basic implementation: ```csharp namespace ElemarJR.FunctionalCSharp { using static Helpers; public struct Option { internal T Value { get; } public bool IsSome { get; } public bool IsNone => !IsSome; internal Option(T value, bool isSome) { Value = value; IsSome = isSome; } public TR Match(Func some, Func none) => IsSome ? some(Value) : none(); public Unit Match(Action some, Action none) => Match(ToFunc(some), ToFunc(none)); public static readonly Option None = new Option(); public static implicit operator Option(T value) => Some(value); public static implicit operator Option(NoneType _) => None; } } ``` with some additional operators: ```csharp namespace ElemarJR.FunctionalCSharp { using static Helpers; public static class Option { #region Of public static Option Of(T value) => new Option(value, value != null); #endregion #region Apply public static Option Apply (this Option> @this, Option arg) => @this.Bind(f => arg.Map(f)); public static Option> Apply (this Option> @this, Option arg) => Apply(@this.Map(Helpers.Curry), arg); #endregion #region Map public static Option Map( this Option @this, Func mapfunc ) => @this.IsSome ? Some(mapfunc(@this.Value)) : None; public static Option> Map( this Option @this, Func func ) => @this.Map(func.Curry()); #endregion #region Bind public static Option Bind( this Option @this, Func> bindfunc ) => @this.IsSome ? bindfunc(@this.Value) : None; #endregion #region GetOrElse public static T GetOrElse( this Option @this, Func fallback ) => @this.Match( some: value => value, none: fallback ); public static T GetOrElse( this Option @this, T @else ) => GetOrElse(@this, () => @else); #endregion #region OrElse public static Option OrElse( this Option @this, Option @else ) => @this.Match( some: _ => @this, none: () => @else ); public static Option OrElse( this Option @this, Func> fallback ) => @this.Match( some: _ => @this, none: fallback ); #endregion } } ``` and some LINQ support: ```csharp namespace System.Linq { using static Helpers; public static partial class LinqExtensions { public static Option Select( this Option @this, Func func) => @this.Map(func); public static Option SelectMany( this Option @this, Func> binder, Func projector ) => @this.Match( none: () => None, some: (t) => @this.Bind(binder).Match( none: () => None, some: (tb) => Some(projector(t, tb)) ) ); public static Option Where( this Option option, Func predicate ) => option.Match( none: () => None, some: o => predicate(o) ? option : None ); } } ``` This proposal does not incur any CLR changes. +18160 area-Infrastructure Individual library packages need netstandard2.0 configuration All our packages need to be sure to have netstandard2.0 support. 1. If they are part of netstandard2.0 then they need to have a placeholder so their owner assets doen't get chosen. 2. If they are above netstandard and they have an older netstandard configuration then they need a netstandard2.0 configuration to ensure package graph is cleaned up. @ericstj I filed this issue once I realized packages like our System.Net.Http will not work if they are referenced from a netstandard 2.0 project. +18161 area-System.Security Csp error strings missing error code parameter fixes https://github.com/dotnet/corefx/issues/11646 +18162 area-Microsoft.CSharp Remove dead code from Microsoft.CSharp The only paths reaching `ExprArrayLength` and `ExprQuestionMark` were removed in #17948 so they can also be deleted, along with code that this in turn makes dead. Since `ExprArrayLength` obviously related to array lengths, add tests double-checking that still works (it does, because it isn't special-cased like it is with static code and is parsed like any other property). Also delete all the code identified as dead in #17905 that is really dead (not some constants), not in shared files, and not going to be deleted by #18004. +18163 area-System.Net Fix app-compat differences in System.Net.Requests Fix some product code behavior differences between .NET Core and .NET Framework (Desktop). Adjust tests. Disable more tests not working on Desktop. Fixes #18151. Contributes to #17842. +18164 area-System.Collections Add support for Data Contract Serializer to Immutable collections Immutable collections should support Data Contract Serializer like other collection types. Not supporting Data Contract Serializer makes Immutable collections unusable in Service Fabric applications. Considering the Service Fabric documentation suggests using immutable types it would be great if the ones supplied by MS worked. +18166 area-Serialization NS2.0 Finish XmlDictionaryWriter surface area. This override appears to be something that's supposed to be overridden by the actual implementation class by something decent, but in keeping with the desktop (and with methods like WriteValueAsync(IStreamProvider)), we'll provide a default implementation that satisfies the letter (if not quite the spirit) of the contract... +18169 area-System.Security Fix KeyInfoTest.ImportKeyNode Fixes https://github.com/dotnet/corefx/issues/16779 Previous version of the test was not Debuggable so I've split it so that we test individual components separately. Also added additional test for DSAKeyValue +18170 area-System.Net Fix Fedora issue with gethostbyname Per https://github.com/dotnet/corefx/issues/17749, fix the issue with Fedora 24 assert (debug build). Fedora is returning error code 22 (EINVAL) for some recently added negative test(s) Fix is to check for EINVAL and if the last parameter of gethostbyname_r is either NO_DATA or HOST_NOT_FOUND then return HOST_NOT_FOUND. This results in a consistent return value across other unix flavors. +18171 area-System.Reflection Remove problematic test case This test case caused problems when additional tests are added to the project Fixes #14625 +18172 area-Meta System.Json assembly identity We added System.Json with https://github.com/dotnet/corefx/pull/9897 and later updated the version number to match mono with https://github.com/dotnet/corefx/issues/9938. However we still haven't taken into account the public key. Currently it has the MSFT public key (soon to be the Open key https://github.com/dotnet/corefx/pull/18165) and so any existing binary references will still not bind to this assembly. We need to decide if we want this binary to exactly match the one we shipped with SL and if so we should give it the same complete assembly identity or we should rename it to a new assembly name and have it fall inline with any other new assembly in corefx. I think I would make it match the exact assembly identity. cc @stephentoub @terrajobst opinions? @karelz @danmosemsft do you know who owns this library? +18173 area-System.Net HTTPS perf issue on Linux/Ubuntu We have a sample app that uploads large files into Azure Storage on Linux (Ubuntu 16.10, .NET Core 1.1). When we use HTTP endpoint we get about 600MB/s throughput, whereas as soon as we change to HTTPS, the throughput drops to about 100MB/s. At first we thought this could be a bottleneck on Azure Storage, but after testing the same scenario with curl on Linux, as well as running the test on Windows, we concluded that this issue happens only with .NET Core on Linux when HTTPS is used. Using .NET Core on Windows, we get similar throughput around 600MB/s for both HTTP and HTTPS. And on Linux, we also tested this using a curl command and both HTTP and HTTPS provide similar results, hence raising the issue here. The sample app is here: https://github.com/seguler/azure-storage-throughput-test Any pointers on the issue ? @JeffreyRichter @polarapfel +18174 area-System.Threading Add test for thread pool concurrent initialization Depends on dotnet/coreclr#10869 Fixes dotnet/coreclr#10521 +18175 area-System.IO Fix MMVS.PointerOffset to be correct This change fixes the PointerOffset property to be correct when the requested offset is larger than the allocation size of the OS. Fixes #18095 +18176 area-Infrastructure Restore portable external assets Now that Core-Setup is also producing portable RID assets, enable portable external assets to be restored for CoreFX. @weshaggard PTAL - this is the artifact we discussed to enable once Core-Setup published portable assets. +18177 area-System.Diagnostics Add sources for native binaries used in FileVersionInfo tests Fixes #16613 Thanks @attilah for the initial work. +18179 area-System.Text [1.1] Bump version for System.Text.Encodings.Web and add to package build PTAL @tarekgh @ericstj FYI @leecow @gkhanna79 +18180 area-System.Text [1.0] Bump version of System.Text.Encodings.Web and add to package build PTAL @tarekgh @ericstj FYI @leecow @gkhanna79 +18181 area-Infrastructure Minor cleanup after moving to 2.0 toolset Includes two minor improvements based on PR feedback in https://github.com/dotnet/corefx/pull/18035. * There is now an init-tools.msbuild file, which is used to restore the buildtools package. This has the same content as the file we used to be automatically generating in init-tools.cmd/sh. Since we're using an MSBuild project now, we can just parameterize the version of the package by using an MSBuild property, and then pass that into `dotnet restore`. * I've added comments to the new usages of `chmod`, with a link to this nuget issue: https://github.com/NuGet/Home/issues/4424 @weshaggard +18183 area-Infrastructure Copy desktop runner config file to test folder This changes where reverted here: https://github.com/dotnet/corefx/pull/18113#issuecomment-292738439 Because of an issue the new version of buildtools was causing OSX not to initialize the tools. This issue was fixed and build tools version was updated so I'm updating tests.targets to copy the config file for Desktop tests instead of writing it every time. cc: @weshaggard @tarekgh @joperezr +18185 area-System.Diagnostics Fix difference in behavior DelimitedListTraceListener.WriteFooter There was a difference in behavior in between .NET Core and desktop where `DelimitedListTraceListener.WriteFooter` was not writing the `TraceEventCache.LogicalOperationStack` on .NET Core. This difference in behavior was causing the tests in Desktop to fail. Fixes: https://github.com/dotnet/corefx/issues/10880 cc: @danmosemsft @brianrob @vancem +18186 area-System.Xml Disable Xml AppContextSwitch test on Desktop Resolves https://github.com/dotnet/corefx/issues/18142 cc: @danmosemsft +18187 area-System.Diagnostics [Netfx bug]: ProcessStartInfo.Verbs throws InvalidCastException when an int value is present in the RegistryKey "On netfx we try to do this when getting the verbs: ```cs string value = (string)key.GetValue(String.Empty); ``` Where we cast the value to string no matter what is the type of that value. On netcoreapp we do: ```cs string value = key.GetValue(string.Empty) as string; if (string.IsNullOrEmpty(value)) return Array.Empty(); ``` Where we use safe cast and verify that the value is not null or empty. If we run the following code (has to be as an administrator) in full framework we will get an `InvalidCastException` since it is adding an int value to the `RegistryKey`: ```cs const string Extension = "".nonstringextension""; const string FileName = ""file"" + Extension; try { RegistryKey key = Registry.ClassesRoot.CreateSubKey(Extension); key.SetValue("""", 123); } catch (UnauthorizedAccessException) { return; } try { var info = new ProcessStartInfo { FileName = FileName }; Assert.Empty(info.Verbs); // netfx: throws InvalidCastException. netcoreapp: returns empty } finally { Registry.ClassesRoot.DeleteSubKeyTree(Extension); } ``` Thanks @hughbe for finding this." +18188 area-System.Net Test failure: Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListenerException ``` MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.Net.HttpListenerException)\r\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at System.Net.Tests.HttpResponseStreamTests.d__21.MoveNext() in D:\j\workspace\windows_nt_re---37265eab\src\System.Net.HttpListener\tests\HttpResponseStreamTests.cs:line 460 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/6067/testReport/junit/System.Net.Tests/HttpResponseStreamTests/Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListenerException_ignoreWriteExceptions__True_/ +18189 area-System.Net Disable intermittent HttpListener tests "See #18188 The test code for this style of tests is: ```cs [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [InlineData(true)] [InlineData(false)] public async Task Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListenerException(bool ignoreWriteExceptions) { const string Text = ""Some-String""; byte[] buffer = Encoding.UTF8.GetBytes(Text); using (HttpListenerFactory factory = new HttpListenerFactory()) using (Socket client = factory.GetConnectedSocket()) { // Send a header to the HttpListener to give it a context. client.Send(factory.GetContent(RequestTypes.POST, Text, headerOnly: true)); HttpListener listener = factory.GetListener(); listener.IgnoreWriteExceptions = ignoreWriteExceptions; HttpListenerContext context = await listener.GetContextAsync(); // Disconnect the Socket from the HttpListener. client.Close(); GC.Collect(); GC.WaitForPendingFinalizers(); // Writing to, a closed connection should fail. Assert.Throws(() => context.Response.OutputStream.Write(buffer, 0, buffer.Length)); // Closing a response from a closed client if a writing has already failed should not fail. context.Response.Close(); } } ``` It seems that closing the socket doesn't happen instantly, even though we waited for the GC, and then waited for finalizers to run. For some reason, this code doesn't work: ```cs client.Close(); GC.Collect(); GC.WaitForPendingFinalizers(); // Ooops. Client not closed. ``` From #17999: > @hughbe Socket.dispose, is calling safehandle.dispose. It could be the case that there were some references to the safe handle that prevents it from disposing, and with explicilty waiting for gc, that got disposed. Or it could be that the safehandle was put in finalizer queue, and the finalizer hadn't run to free up the resources before you tried to use the stream on the native connection. We need to find a better solution for what the test is trying to do: open a connection, then close the socket, then write to a closed socket. Could be the `using` block that is screwing things up for the GC? I have not encountered a failure on my PC yet in the current code. @stephentoub @Priya91 any ideas? I'd like to keep these tests as they cover a bunch of code in HttpListener. @danmosemsft FYI " +18192 area-System.Net "HttpListener tests: HttpRequestStreamTests failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpRequestStreamTests/CanRead_Get_ReturnsTrue` has failed. System.AggregateException : One or more errors occurred. (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.)\r ---- System.NullReferenceException : Object reference not set to an instance of an object.\r ---- System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: ----- Inner Stack Trace #1 (System.NullReferenceException) ----- at System.Net.Tests.HttpRequestStreamTests.d__13.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace #2 (System.NullReferenceException) ----- at System.Net.Tests.HttpRequestStreamTests.Dispose() at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) Build : Master - 20170411.01 (Core Tests) Failing configurations: - Windows.7.Amd64 - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170411.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpRequestStreamTests~2FCanRead_Get_ReturnsTrue +18193 area-System.Net Test failure: System.Net.Tests.GlobalProxySelectionTest/Select_Success Opened on behalf of @Jiayili1 The test `System.Net.Tests.GlobalProxySelectionTest/Select_Success` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -1073740791 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Net.Tests.GlobalProxySelectionTest.Select_Success() Build : Master - 20170411.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170411.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.GlobalProxySelectionTest~2FSelect_Success +18197 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.VerifyKeyGeneration_256 failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.VerifyKeyGeneration_256 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.Security.Cryptography.Encryption.Aes.Tests/AesContractTests/VerifyKeyGeneration_256/ Message: ~~~ System.Security.Cryptography.CryptographicException : Specified key is not a valid size for this algorithm. ~~~ Stack Trace: ~~~ at System.Security.Cryptography.SymmetricAlgorithm.set_KeySize(Int32 value) at System.Security.Cryptography.AesCryptoServiceProvider.set_KeySize(Int32 value) at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.VerifyKeyGeneration_256() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesContractTests.cs:line 154 ~~~ +18198 area-System.Security "Desktop: System.Security.Cryptography.EcDsa.Tests.ECDsaTests.PublicKey_CannotSign failed with ""System.TypeLoadException""" Failed test: System.Security.Cryptography.EcDsa.Tests.ECDsaTests.PublicKey_CannotSign Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.Security.Cryptography.EcDsa.Tests/ECDsaTests/PublicKey_CannotSign/ MESSAGE: System.TypeLoadException : Could not load type 'System.Security.Cryptography.ECParameters' from assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.EcDsa.Tests.ECDsaTests.PublicKey_CannotSign() +18199 area-System.Net "Desktop: System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_ProxySetAfterGetResponse_Fails failed with ""System.Net.WebException""" Failed test: System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_ProxySetAfterGetResponse_Fails Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.Net.Tests/HttpWebRequestHeaderTest/HttpWebRequest_ProxySetAfterGetResponse_Fails_remoteServer__http___corefx_net_cloudapp_net_Echo_ashx_/ **MESSAGE:** System.Net.WebException : The operation has timed out +++++++++++++++++++ **STACK TRACE:** at System.Net.HttpWebRequest.GetResponse() at System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_ProxySetAfterGetResponse_Fails(Uri remoteServer) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Requests\tests\HttpWebRequestHeaderTest.cs:line 135 +18200 area-Serialization Fix System.Runtime.Serialization.Json.ReflectionOnly tests on netfx Around 148 tests were failing with exception: ``` System.TypeInitializationException : The type initializer for 'DataContractJsonSerializerTests' threw an exception.\r\n---- No method named set_Option\r\nExpected: True\r\nActual: False ``` This tests were trying to invoke a method through reflection on a static constructor and this member is not part of netfx so it throws the exception. cc: @danmosemsft +18201 area-System.ComponentModel "Desktop: System.ComponentModel.Tests.MemberDescriptorTests.CopiedMemberDescriptorEqualsItsSource failed with ""Xunit.Sdk.TrueException""" Failed test: System.ComponentModel.Tests.MemberDescriptorTests.CopiedMemberDescriptorEqualsItsSource Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.ComponentModel.Tests/MemberDescriptorTests/CopiedMemberDescriptorEqualsItsSource/ **MESSAGE:** Assert.True() Failure\r\nExpected: True\r\nActual: False +++++++++++++++++++ **STACK TRACE:** at System.ComponentModel.Tests.MemberDescriptorTests.CopiedMemberDescriptorEqualsItsSource() in D:\j\workspace\outerloop_net---903ddde6\src\System.ComponentModel.TypeConverter\tests\MemberDescriptorTests.cs:line 32 +18202 area-System.IO "Desktop: tests under ""System.IO.IsolatedStorage"" failed with ""System.TypeInitializationException"" & ""System.IO.IsolatedStorage.IsolatedStorageException""" Failed tests: System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_NotOkDirectory System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_NotOkFiles System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_OkFiles System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_CleanStore System.IO.IsolatedStorage.CopyFileTests.CopyFile_CopyOver System.IO.IsolatedStorage.CopyFileTests.CopyFile_CopiesFile System.IO.IsolatedStorage.CreateDirectoryTests.CreateDirectory_Existance System.IO.IsolatedStorage.CreateFileTests.CreateFile_Existence System.IO.IsolatedStorage.DeleteDirectoryTests.DeleteDirectory_CannotDeleteWithContent System.IO.IsolatedStorage.DeleteDirectoryTests.DeleteDirectory_DeletesDirectory System.IO.IsolatedStorage.DeleteFileTests.DeleteFile_DeletesFile System.IO.IsolatedStorage.DirectoryExistsTests.DirectoryExists_Existance System.IO.IsolatedStorage.FileExistsTests.FileExists_Existance System.IO.IsolatedStorage.GetFileNamesTests.GetFileNames_GetsFileNames System.IO.IsolatedStorage.MoveDirectoryTests.MoveDirectory_MovesDirectory System.IO.IsolatedStorage.MoveFileTests.MoveFile_MovesFile System.IO.IsolatedStorage.MoveFileTests.MoveFile_MoveOver System.IO.IsolatedStorage.OpenFileTests.OpenFile_Existence System.IO.IsolatedStorage.RemoveTests.RemoveStoreWithContent Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.IO.IsolatedStorage/ContainsUnknownFilesTests/ContainsUnknownFiles_NotOkDirectory_scope__UserStoreForApplication_/ Message: System.TypeInitializationException : The type initializer for 'System.IO.IsolatedStorage.TestHelper' threw an exception.\r\n---- System.IO.IsolatedStorage.IsolatedStorageException : Initialization failed. Stack Trace: ~~~ at System.IO.IsolatedStorage.TestHelper.WipeStores() at System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_NotOkDirectory(PresetScopes scope) in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\ContainsUnknownFilesTests.cs:line 70 ----- Inner Stack Trace ----- at System.IO.IsolatedStorage.Helper.GetDefaultIdentityAndHash(Object& identity, String& hash, Char separator) in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.IsolatedStorage\src\System\IO\IsolatedStorage\Helper.Win32.Unix.cs:line 126 at System.IO.IsolatedStorage.TestHelper..cctor() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\TestHelper.cs:line 26 ~~~ +18203 area-System.Net "Desktop: System.Net.Tests.HttpWebRequestTest.Abort_BeginGetResponseThenAbort_EndGetResponseThrowsWebException failed with ""System.NullReferenceException""" Failed test: System.Net.Tests.HttpWebRequestTest.Abort_BeginGetResponseThenAbort_EndGetResponseThrowsWebException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.Net.Tests/HttpWebRequestTest/Abort_BeginGetResponseThenAbort_EndGetResponseThrowsWebException_remoteServer__http___corefx_net_cloudapp_net_Echo_ashx_/ MESSAGE: System.NullReferenceException : Object reference not set to an instance of an object. +++++++++++++++++++ STACK TRACE: at System.Net.Tests.HttpWebRequestTest.Abort_BeginGetResponseThenAbort_EndGetResponseThrowsWebException(Uri remoteServer) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 561 +18204 area-System.Net "Desktop: System.Net.Tests.HttpWebRequestTest.Abort_BeginGetResponseThenAbort_ResponseCallbackCalledBeforeAbortReturns failed with ""Xunit.EqualException""" Failed test: System.Net.Tests.HttpWebRequestTest.Abort_BeginGetResponseThenAbort_ResponseCallbackCalledBeforeAbortReturns Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.Net.Tests/HttpWebRequestTest/Abort_BeginGetResponseThenAbort_ResponseCallbackCalledBeforeAbortReturns_remoteServer__https___corefx_net_cloudapp_net_Echo_ashx_/ MESSAGE: Assert.Equal() Failure\r\nExpected: 1\r\nActual: 0 +++++++++++++++++++ STACK TRACE: at System.Net.Tests.HttpWebRequestTest.Abort_BeginGetResponseThenAbort_ResponseCallbackCalledBeforeAbortReturns(Uri remoteServer) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 549 +18205 area-Serialization "Desktop: System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests.ReadElementContentAsDateTimeTest failed with ""Xunit.Sdk.EqualException""" Failed test: System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests.ReadElementContentAsDateTimeTest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/14/testReport/System.Runtime.Serialization.Xml.Tests/XmlDictionaryReaderTests/ReadElementContentAsDateTimeTest/ MESSAGE: Assert.Equal() Failure\r\nExpected: 2003-01-08T15:00:00.0000000\r\nActual: 2003-01-08T07:00:00.0000000-08:00 +++++++++++++++++++ STACK TRACE: at System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests.ReadElementContentAsDateTimeTest() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryReaderTests.cs:line 101 +18207 area-System.Net [Linux Mint] Http client to call Soap service over https. "I'm trying to access existing SOAP webservice using `HttpClient`. Works fine on Windows 10, but fails in Linux Mint with `TaskCanceledException: A task was canceled.`, which masks a timeout. Is there a way to run it on Linux? ```c# [HttpGet(""test"")] public IActionResult Login() { HttpClientHandler clientHandler = new HttpClientHandler(); clientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; HttpClient client = new HttpClient(clientHandler); HttpRequestMessage request = CreateSoapWebRequest(); HttpResponseMessage response = client.SendAsync(request).Result; } public HttpRequestMessage CreateSoapWebRequest() { string xmlString = String.Format(); HttpRequestMessage result = new HttpRequestMessage(new HttpMethod(""POST""), myUrl); result.Content = new StringContent(xmlString, Encoding.UTF8, ""text/xml""); result.Headers.Add(""SOAPAction"",""http://tempuri.org/IAuthorizationService/AuthorizeUser""); return result; } ``` The request works fine with http and also with https when there are valid certificates. To problem occurs when we are testing in our DEV environment with no valid https certificate available. The request seems to time out. Just before the TaskCanceledException: A task was canceled gets thrown the ServerCertificateCustomValidationCallback gets called (takes about 2 minutes). Returning true/false doesn't seem to make a difference, I think it's too late at this point. Shouldn't this callback be called in the very beginning? Would appreciate everything that helps." +18208 area-System.Globalization Test failures: System.Globalization.Tests.NumberFormatInfoPercentPositivePattern "Just ran build-tests from root and discovered that these two tests are failing in System.Globalization on Core: ``` ``` ``` ```" +18210 area-System.Diagnostics SingleProcess_EnableRaisingEvents_CorrectExitCode test hangs on uapaot test run The test was disabled but it was hanging on uapaot runs. I didn't do any further investigation. cc: @Priya91 +18211 area-System.Net "Compile warning: Duplicate resource name ""net_PropertyNotSupportedException"" is not allowed" "Occurred during test runs of https://github.com/dotnet/corefx/pull/18170 for portablelinux_debug @davidsh - duplicate resource added 4/10/2017 in https://github.com/dotnet/corefx/commit/bbe86c8f0e113d70d0d97936cc254889afbbe149#diff-bac3839a816a936d5db4ecb32728de17 ```` ./src/Resources/Strings.resx : warning MSB3568: Duplicate resource name ""net_PropertyNotSupportedException"" is not allowed, ignored. [/mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/System.Net.Requests/tests/System.Net.Requests.Tests.csproj] ````" +18212 area-System.Diagnostics TestProcessOnRemoteMachineWindows crashes on uapaot test runs "Test was crashing by throwing an AV when trying to call `Process.GetProcessById(currentProcess.Id, ""127.0.0.1"")`. I didn't to more deep investigation on it, but I disabled it for now for uapaot runs. cc: @Priya91 " +18213 area-System.Net Remove duplicate string resource from System.Net.Requests Caused by PR #18163. Looks like compile warnings from strings.resx are not caught by CI. Fixes #18211 +18217 area-Meta Question: how does targeting netstandard versus netcoreapp work? "Hi, I'm not sure I'm asking in the right place. I have a question regarding targeting. I created new console app using `dotnet new console`. Now, the project file looks like this: ``` Exe netcoreapp1.1 ``` Can I target `netstandard1.6` instead? Will it still run? Changing the project file to: ``` Exe netstandard1.6 ``` This builds using `dotnet build`. It doesn't run however. ``` Unable to run your project. Please ensure you have a runnable project type and ensure 'dotnet run' supports this project. The current OutputType is 'Exe'. ``` Is targeting .NET Standard only for libraries, not for executable binaries? I was hoping I could target a standard instead of any runtime and then choose a runtime of my liking to run that binary, as long as that runtime supports that standard version. Like choosing to either point `dotnet` or `mono` against a binary that targets netstandard. Is this even possible? And speaking of `OutputType` Exe, even in the original console project template, the build drops a dll, not an exe. Why is that? thanks, Tobias W." +18219 area-System.Net HttpContent.LimitArrayPoolWriteStream.Write causes a Grow on every call The code in the Write is: EnsureCapacity(_buffer.Length + count); The _buffer.Length is the size of the buffer, not the number of bytes written to it. So with this we're always asking for more than the buffer has room for, and thus we will call Grow. Grow is exponential (doubles the size of the buffer), so enough small writes into the stream will cause the Grow to ask for huge buffer and eventually run out of memory. The correct code should be: EnsureCapacity(_length + count); +18220 area-System.Console Disabled some System.Console tests from uapaot run since they were hanging In order to unblock the uapaot test run, we needed to disable a few tests from running in that framework since they were hanging. We should next figure out if it even makes sense for those tests to run given the differences in Console between netcoreapp and uapaot, and if so, then figure out why are they hanging. Tests are: - All SyncTextReader tests - Some ConsoleEncoding tests cc: @danmosemsft @ianhays @alexperovich +18222 area-System.Security Throw different exception when adding disposed cert to X509Store As discussed in #12223 this PR changes the exception that is thrown when an already disposed certificate is being added to a store. Fixes #12223 +18223 area-System.Net Fix failing httplistener tests on Win7. fixes #18192 cc @hughbe +18225 area-System.Xml Xml_SystemPathResolverCannotOpenUri resource is empty XmlSystemPathResolver will throw for Uris which are not from a local file system. The error message it uses is resource Xml_SystemPathResolverCannotOpenUri, but that resource is empty. It used to look like: Cannot open '{0}'. The Uri parameter must be a file system relative or absolute path. +18226 area-Meta Could not load 'System.Xml' - NUnit tests not working properly with .NET Core projects "In a .NET Core C# Console app test explorer isn't discovering/running tests using Nunit Framework. **Steps** 1. Create a new .NET Core Console App 2. Add code below 3. Add NUnit and NUnit3TestFramework NuGet packages 4. File Menu -> Test -> Run -> Run All **Actual** ``` An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Could not load file or assembly 'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified. ``` Sample Code: ```cs using System; using NUnit.Framework; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Console.WriteLine(""Hello World!""); } } [TestFixture] public class NUnitStuff { public bool SmallNumisOdd(int i) { switch (i) { case 0: return false; case 1: return true; case 2: return false; case 3: return true; case 4: return false; case 5: return true; case 6: return false; default: return false; } } [Test] public void testSmallNumisOdd() { Random r = new Random(); int i = r.Next(0, 6); Assert.True(SmallNumisOdd(i)); } } } ```" +18227 area-System.Runtime Add test for serialization of closed delegate involving an extension … …method Depends on PR dotnet/coreclr#10901 Fixes dotnet/coreclr#9597 +18229 area-Infrastructure Add support for local Helix execution Adds the ability to do local execution of whatever was zipped and uploaded by Upload-Tests.proj. Enabled by https://github.com/dotnet/buildtools/pull/1431 Ready to merge, sent job with correlation 'f9ff404d-edc2-4147-a7d3-20e81d906ae9' to prove my payload changes are non-breaking. @weshaggard @joperezr +18233 area-System.Xml Fix System.Private.Xml.Linq.rd.xml Tests under System.Private.Xml/tests/XmlSerializer are not showing the warning anymore but for some reason still getting some warning under System.Runtime.Serialization.Xml/tests: ``` System.Xml.Resources.System.Private.Xml.Linq.rd.xml(5-5): warning : ILTransform : warning ILT0027: Namespace 'System.Private.Xml.Linq' within '' could not be found. ``` This does not make much sense to me since namespace is correct in rd.xml - possibly wrong rd.xml or dll is being used Fixes: https://github.com/dotnet/corefx/issues/17557 +18234 area-System.IO Remove unnecessary pinvoke Lock/UnlockFile are not used. We requested them already but we can certainly remove the usage. +18236 area-Infrastructure [1.0] Bump networking library/package versions and add to package build PTAL @CIPop @Priya91 FYI @leecow @gkhanna79 +18237 area-System.Net HttpWebRequest on corefx significantly slower than that of the .NET Framework As per the title, the current HttpWebRequest is implemented as a wrapper around HttpClient. This change is problematic for many reasons, mainly that HttpClient forces the user to reuse the same configuration across requests via `HttpClientHandler` and `HttpClient`. This would be quite alright for a REST focused library such as RestSharp, but (atleast in my opinion) is an outright _bad_ idea for the main HTTP solution in a major framework. This is a much smaller problem in the full .NET Framework as it fully supports both solutions. People who preferred to change these settings on a per-request basis could use `HttpWebRequest` and REST focused users could employ `HttpClient`. Some of the settings of `HttpWebRequest` I change on a regular basis are `Proxy`, `AllowAutoRedirect` and `Timeout`. These are some benchmarks I ran on the .NET Framework 4.6 (The leftmost number is the average time in ms. The `RestSharp` benchmarks are present just for reference.): ``` HttpWebRequest 70 | 70 69 70 70 70 69 71 70 71 73 71 69 71 69 70 70 70 70 70 69 HttpWebRequest-Async 69 | 67 69 72 69 67 69 70 71 67 70 70 69 70 69 70 69 68 71 71 70 HttpClient-Async 151 | 145 154 149 147 149 149 148 147 152 151 163 151 154 153 152 161 147 151 149 152 HttpClient-Async,Reused 72 | 154 74 69 60 62 72 67 70 72 60 70 64 63 70 63 72 71 72 71 73 RestClient 71 | 74 73 75 72 73 62 73 70 76 73 74 74 75 67 74 74 70 73 74 62 RestClient-Reused 70 | 72 71 71 72 59 70 70 70 70 71 70 71 70 71 71 77 74 72 72 73 ``` And the same benchmarks on .NET Framework 4.7: ``` HttpWebRequest 37 | 32 38 44 42 48 42 38 36 33 38 35 40 34 38 41 32 33 35 39 33 HttpWebRequest-Async 28 | 38 35 34 38 33 20 30 26 27 21 26 26 26 25 28 27 28 27 27 25 HttpClient-Async 48 | 46 48 45 51 46 46 52 45 48 48 46 48 48 46 48 46 46 46 70 58 HttpClient-Async,Reused 23 | 49 19 25 23 22 20 20 19 21 22 23 21 28 19 28 21 21 26 20 21 RestClient 38 | 53 48 42 39 40 38 41 43 39 44 40 36 41 40 35 37 37 20 27 36 RestClient-Reused 28 | 27 29 28 32 28 28 30 27 27 30 28 26 26 27 27 27 27 37 40 28 ``` The above benchmarks are from a Windows 10 system running the creators update. The requests were made to a 6KB resource on a CDN. The tests were run on different hardware from different locations, but since I'd like to focus only on their relative performance, this should not be a problem. Please correct me if I'm wrong. The most glaring difference between the two benchmarks is that .NET 4.7 optimized creating new `HttpClient` instances greatly (On .NET 4.6, the `HttpClient` row was consistently 150ms+). Note that while I was able to compile `2.0.0-preview1`, I have not tested the above on it. The .NET framework appears to use a different approach (Seen at https://referencesource.microsoft.com/#System/net/System/Net/HttpWebRequest.cs). Please consider using a similar approach. Using an `HttpClient` under the hood of an `HttpWebRequest` seems more like a duct-tape solution just in the interest of maintaining compatibility. I would argue it does not accomplish this anyway, since programs that worked well on the .NET Framework would appear to work on .NET Core, only for the developers to find performance issues with no clue as to their cause (Creating a new `HttpClient` took almost 20ms more each request than `HttpWebRequest`!). As as aside, I can imagine code as such as the following would causes deadlocks in cases where the synchronization context needs to be maintained (but I'm not sure if this case is handled elsewhere). ``` public override Stream GetRequestStream() { return InternalGetRequestStream().Result; } ```
**UPDATE**: These are the .NET Core 1.1 benchmarks on the same system as .NET 4.6 above. ``` HttpClient-Async 209 | 208 210 207 212 205 207 212 218 211 210 214 210 205 200 209 217 214 205 215 203 HttpClient-Async,Reused 72 | 204 58 73 66 61 58 60 60 69 67 58 69 60 72 70 69 70 66 70 70 RestClient 216 | 218 212 229 221 212 219 212 209 204 213 212 212 218 219 219 220 223 220 211 217 RestClient-Reused 215 | 208 213 211 211 221 227 211 214 214 220 213 210 219 218 210 217 211 231 215 225 ``` I used the `RestSharp.NetCore` package in the test above, which uses `HttpWebRequest` internally (Which in turn creates new `HttpClient` instances under the hood). The performance hit is clear. `RestClient` takes around 8ms longer for its own code. +18238 area-Serialization XmlSerializer to Support XmlMembersMapping via Reflection This PR enable XmlSerializer to support XmlMembersMapping via reflection (without using ILGen). Added/fixed 41 tests for this feature. Fix https://github.com/dotnet/corefx/issues/17482. +18241 area-Infrastructure [1.1] Bump networking library versions and add to package build PTAL @CIPop @Priya91 FYI @leecow @gkhanna79 +18242 area-System.Memory Block size calculation in SpanHelpers.CopyTo incorrect. @WinCPP Thanks for finding this. +18243 area-Infrastructure Run one iteration of performance tests in Outerloop runs This change will cause us to run one iteration of performance tests during our Outerloop runs. This will give us more assurance that the performance tests are not broken by various changes and will guarantee that they run, at least once. @danmosemsft @DrewScoggins +18244 area-System.Data DAC connection fails sometimes, possibly due to unreleased resource after connection closed. DAC (Dedicated Admin Connection) allows only 1 connection, and it will throw exception if another connection attempts to be established when current connection is not closed and released. In Managed SNI, sometimes and not always, when a DAC connection opened and then closed, and another DAC connection try to be made, it fails. It seems some resource is not released right away after connection closed. It throws exception with following stack trace. ``` System.Data.SqlClient.SqlException : A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught) ---- System.IO.IOException : Unable to read data from the transport connection: An established connection was aborted by the software in your host machine. -------- System.Net.Sockets.SocketException : An established connection was aborted by the software in your host machine Stack Trace: D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnection.cs(250,0): at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapClos eInAction) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs(1111,0): at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs(932,0): at System.Data.SqlClient.TdsParserStateObject.ThrowExceptionAndWarning(Boolean callerHasConnectionLock, Boolean asyncClose) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs(2572,0): at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs(2107,0): at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs(2032,0): at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs(666,0): at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs(375,0): at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(1403,0): at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(1160,0): at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(1014,0): at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs(372,0): at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnectionFactory.cs(133,0): at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs(114,0): at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(476,0): at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(1187,0): at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(792,0): at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs(712,0): at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs(281,0): at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs(452,0): at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionClosed.cs(64,0): at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs(1003,0): at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs(596,0): at System.Data.SqlClient.SqlConnection.Open() D:\Projects\CoreFx\src\System.Data.SqlClient\tests\FunctionalTests\SqlConnectionTest.cs(85,0): at System.Data.SqlClient.Tests.SqlConnectionBasicTests.IntegratedAuthTest() ----- Inner Stack Trace ----- D:\Projects\CoreFx\src\System.Net.Sockets\src\System\Net\Sockets\NetworkStream.cs(301,0): at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SNI\SNIPacket.cs(280,0): at System.Data.SqlClient.SNI.SNIPacket.ReadFromStream(Stream stream) D:\Projects\CoreFx\src\System.Data.SqlClient\src\System\Data\SqlClient\SNI\SNITcpHandle.cs(439,0): at System.Data.SqlClient.SNI.SNITCPHandle.Receive(SNIPacket& packet, Int32 timeoutInMilliseconds) ----- Inner Stack Trace ----- D:\Projects\CoreFx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs(1394,0): at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) D:\Projects\CoreFx\src\System.Net.Sockets\src\System\Net\Sockets\NetworkStream.cs(295,0): at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) ``` I found that the number of failure of DAC connection reduces after putting `System.GC.Collect();` right before creating `SqlConnection` object when I tested. +18245 area-Infrastructure Build -targetGroup:netfx builds native We don't need to build native in this case. +18246 area-Infrastructure Desktop support package for netstandard2.0 Adds a support package for netstandard2.0 on desktop. Best reviewed commit-by-commit. Commit descriptions have detail of what they are for. /cc @weshaggard @safern @terrajobst +18247 area-Infrastructure Win10 WSL at Linux target platform for tests? Is it worth adding [Windows 10 Subsystem for Linux](https://blogs.msdn.microsoft.com/wsl/2017/04/11/testing-the-windows-subsystem-for-linux/) as a test build target? +18248 area-System.Numerics BigInteger performance tests do not work with xunit.performance The tests in this file do not work when run under the current perf test environment. https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Numerics/tests/BigInteger/PerformanceTests.cs I am going to disable them until I have time to re-work them with the correct style. +18249 area-Serialization Test cases in XsPerformanceTest do not work I get errors like the following when I run the tests in [this file](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/tests/XmlSerializer/Performance/XsPerformanceTest.cs). ``` System.Xml.XmlSerializer.Tests.Performance.XsPerformanceTest.XsDeSerializationTest(numberOfRuns: 100, testType: DictionaryOfSimpleType, testSize: 1024) [FAIL] System.NotSupportedException : The type System.Collections.Generic.Dictionary`2[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[SerializationTypes.SimpleType, System.Xml .XmlSerializer.ReflectionOnly.Tests, Version=4.0.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb]] is not supported because it implements IDictionary. Stack Trace: D:\OSS\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Types.cs(1312,0): at System.Xml.Serialization.TypeScope.GetDefaultIndexer(Type type, String memberInfo) D:\OSS\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Types.cs(829,0): at System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, MemberInfo memberInfo, Boolean directReference) D:\OSS\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Types.cs(714,0): at System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError) D:\OSS\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Models.cs(48,0): at System.Xml.Serialization.ModelScope.GetTypeModel(Type type, Boolean directReference) D:\OSS\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs(170,0): at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace) D:\OSS\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs(274,0): at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) D:\OSS\corefx\src\System.Private.Xml\tests\XmlSerializer\Performance\XsPerformanceTest.cs(75,0): at System.Xml.XmlSerializer.Tests.Performance.XsSerializer.Init(Object obj) D:\OSS\corefx\src\System.Runtime.Serialization.Xml\tests\Performance\PerformanceTestsCommon.cs(326,0): at System.Runtime.Serialization.PerformanceTestCommon.RunDeserializationPerformanceTest(Int32 numberOfRuns, TestType testT ype, Int32 testSize, ISerializerFactory serializerFactory) ``` +18253 area-Infrastructure Official builds failing the netfx vertical on publish packages step cc: @safern @weshaggard @dagood @safern recently added netfx vertical build to pipebuild. The template used has a step to publish packages, but netfx won't build any packages, which is causing the build to fail. We should either create a new template and use that, or my preferred way would be to make that step on that msbuild call not to fail (either never fail, or just not fail when TargetGroup is netfx) +18254 area-Infrastructure Fixing netfx Official builds by disabling the publish packages step for netfx builds cc: @safern @weshaggard @chcosta fixes: #18253 I don't love this solution, but I don't like the idea of generating a new template that will only be used on 4 verticals, and I also don't like the idea of not erroring on non-netfx builds when packages were not published correctly or when no packages were produced. +18255 area-Serialization "Test: XmlSerializerTests/Xml_NullRefInXmlSerializerCtorTest failed with ""Xunit.Sdk.TrueException""" "Opened on behalf of @Jiayili1 The test `XmlSerializerTests/Xml_NullRefInXmlSerializerCtorTest` has failed. XML comparison is also failing Test failed for input: PurchaseOrder Expected: 1 Main St. AnyTown WA 00000 Monday, April 10, 2017 Widget S Small widget 5.23 3 15.69 15.69 12.51 28.20 Actual: 1 Main St. AnyTown WA 00000 Monday, 10 April 2017 Widget S Small widget 5.23 3 15.69 15.69 12.51 28.20 Expected: True Actual: False Stack Trace: at XmlSerializerTests.SerializeAndDeserialize[T](T value, String baseline, Func`1 serializerFactory, Boolean skipStringCompare, XmlSerializerNamespaces xns) at XmlSerializerTests.Xml_NullRefInXmlSerializerCtorTest() Build : Master - 20170412.01 (Core Tests) Failing configurations: - OSX.1012.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170412.01/workItem/System.Xml.XmlSerializer.ReflectionOnly.Tests/analysis/xunit/XmlSerializerTests~2FXml_NullRefInXmlSerializerCtorTest" +18256 area-Infrastructure Change default clang version to clang3.9 in cross build If we use clang3.9 version in cross build, we can use -O3 option for optimizing. Revert #15643 PR. Related issue: https://github.com/dotnet/core-setup/issues/1411 +18257 area-System.IO Suggestion: NamedPipe classes should support interop with other languages on Unix Currently, as far as I can tell at least, there is no good way to interop with a node.js/C++/etc with the .NET Core pipe code on non-Windows platforms. The problem is that on Unix you would like to get the full path to the underlying domain socket and somehow be able to open an arbitrary domain socket. But .NET Core doesn't have any APIs for this. In node.js, for example, `net.createServer` ([examples](http://stackoverflow.com/questions/11750041/how-to-create-a-named-pipe-in-node-js)) provides one abstraction that works with named pipes and Unix domain sockets. It does require a few lines of platform-specific code to work out the server name correctly. But once that is done you have code that is nice and unified and can interop with any other framework. Suggestions: 1. Named pipe server should have a method to get the underlying full pipe name 2. Named pipe client and server should have overloads that allow specifying the full pipe name +18259 area-Serialization Add two desktop test cases and some reference files for DataContractSerializer test "@shmao @huanwu Add two desktop test cases and some reference files for DataContractSerializer test. All the reference files are placed under **DesktopTestData** folder and using namespace of ""**DesktopTestData**""." +18260 area-System.Net "Test: System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd/SslStream_StreamToStream_LargeWrites_Sync_Success failed with ""System.TimeoutException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd/SslStream_StreamToStream_LargeWrites_Sync_Success(randomizedData: False)` has failed. System.TimeoutException : VirtualNetwork: Timeout reading the next frame. Stack Trace: at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_LargeWrites_Sync_Success(Boolean randomizedData) Build : Master - 20170412.01 (Portable Core Tests) Failing configurations: - Windows.7.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170412.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd~2FSslStream_StreamToStream_LargeWrites_Sync_Success(randomizedData:%20False) +18261 area-Infrastructure Cannot build Core FX (resolve failure) Core FX build failed with the following error message: ``` $ ./build-managed.sh Installing dotnet cli... Restoring BuildTools version 1.0.27-prerelease-01511-02... Initializing BuildTools... BUILDTOOLS_SKIP_CROSSGEN is set. Skipping crossgen step. Making all .sh files executable under Tools. Done initializing tools. Running: /var/jenkins/workspace/FX/FX_Test_Release/repo/code/Tools/msbuild.sh /nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /p:BuildPackages=false /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err /var/jenkins/workspace/FX/FX_Test_Release/repo/code/Tools/packageresolve.targets(86,5): error : The package Microsoft.Build with version 0.1.0-preview-00022 could not be found in /var/jenkins/workspace/FX/FX_Test_Release/repo/code/packages/, /var/jenkins/workspace/FX/FX_Test_Release/repo/code/packages, /root/.dotnet/NuGetFallbackFolder. Run a NuGet package restore to download the package. [/var/jenkins/workspace/FX/FX_ Test_Release/repo/code/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] ... ``` It seems that ``packages/microsoft.build/0.1.0-preview-00022/`` is restored: ``` $ pwd /var/jenkins/workspace/FX/FX_Test_Release/repo/code $ ls packages/microsoft.build/0.1.0-preview-00022/ lib microsoft.build.0.1.0-preview-00022.nupkg microsoft.build.0.1.0-preview-00022.nupkg.sha512 microsoft.build.nuspec ``` +18262 area-System.Diagnostics "Tests under ""System.Diagnostics.Tests.ProcessStartInfoTests"" failed" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.Diagnostics.Process.Tests/wilogs Result: ~~~ 2017-04-12 01:49:31,403: INFO: proc(54): run_and_log_output: Output: Discovering: System.Diagnostics.Process.Tests 2017-04-12 01:49:31,653: INFO: proc(54): run_and_log_output: Output: Discovered: System.Diagnostics.Process.Tests 2017-04-12 01:49:31,653: INFO: proc(54): run_and_log_output: Output: Starting: System.Diagnostics.Process.Tests 2017-04-12 01:49:32,355: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_SetAndGet_Windows [FAIL] 2017-04-12 01:49:32,355: INFO: proc(54): run_and_log_output: Output: Assert.False() Failure 2017-04-12 01:49:32,355: INFO: proc(54): run_and_log_output: Output: Expected: False 2017-04-12 01:49:32,355: INFO: proc(54): run_and_log_output: Output: Actual: True 2017-04-12 01:49:32,355: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-04-12 01:49:32,355: INFO: proc(54): run_and_log_output: Output: E:\A\_work\60\s\corefx\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(243,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_SetAndGet_Windows() 2017-04-12 01:49:32,403: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentVariables_Environment_DataRoundTrips [FAIL] 2017-04-12 01:49:32,403: INFO: proc(54): run_and_log_output: Output: Assert.Throws() Failure 2017-04-12 01:49:32,403: INFO: proc(54): run_and_log_output: Output: Expected: typeof(System.ArgumentException) 2017-04-12 01:49:32,403: INFO: proc(54): run_and_log_output: Output: Actual: (No exception was thrown) 2017-04-12 01:49:32,403: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-04-12 01:49:32,403: INFO: proc(54): run_and_log_output: Output: E:\A\_work\60\s\corefx\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(460,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentVariables_Environment_DataRoundTrips() 2017-04-12 01:49:32,418: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentProperty [FAIL] 2017-04-12 01:49:32,418: INFO: proc(54): run_and_log_output: Output: Assert.Throws() Failure 2017-04-12 01:49:32,418: INFO: proc(54): run_and_log_output: Output: Expected: typeof(System.ArgumentException) 2017-04-12 01:49:32,418: INFO: proc(54): run_and_log_output: Output: Actual: (No exception was thrown) 2017-04-12 01:49:32,418: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-04-12 01:49:32,418: INFO: proc(54): run_and_log_output: Output: E:\A\_work\60\s\corefx\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(48,0): at System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentProperty() 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: System.IndexOutOfRangeException: Index was outside the bounds of the array. 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Text.StringBuilder.get_Chars(Int32 index) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.AsyncStreamReader.GetLinesFromStringBuilder() 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.AsyncStreamReader.ReadBuffer(IAsyncResult ar) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.IO.Stream.ReadWriteTask.System.Threading.Tasks.ITaskCompletionAction.Invoke(Task completingTask) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.FinishContinuations() 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.Finish(Boolean bUserDelegateExecuted) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 2017-04-12 01:49:34,918: INFO: proc(54): run_and_log_output: Output: at System.Threading.ThreadPoolWorkQueue.Dispatch() 2017-04-12 01:49:34,934: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time= 1:49:34.93, Exit code = 1 2017-04-12 01:49:34,934: INFO: proc(58): run_and_log_output: Exit Code: 1 2017-04-12 01:49:34,934: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-04-12 01:49:34,934: ERROR: helix_test_execution(83): report_error: Error running xunit None ~~~ +18263 area-System.IO "Test: System.IO.Compression.Tests.BeginEndDeflateStreamTests/OverlappingFlushAsync_DuringReadAsync failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.BeginEndDeflateStreamTests/OverlappingFlushAsync_DuringReadAsync` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.IO.Compression.Tests.CompressionStreamAsyncTestBase.d__11.MoveNext() in E:\A\_work\60\s\corefx\src\System.IO.Compression\tests\AsyncStreamTests.cs:line 156 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170412.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x64-Release - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.BeginEndDeflateStreamTests~2FOverlappingFlushAsync_DuringReadAsync +18264 area-System.IO "Test: System.IO.Compression.Tests.zip_ManualAndCompatabilityTests/ZipWithInvalidFileNames_ParsedBasedOnSourceOS failed with ""System.ArgumentException""" "Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.zip_ManualAndCompatabilityTests/ZipWithInvalidFileNames_ParsedBasedOnSourceOS(zipName: \""NullCharFileName_FromUnix.zip\"", fileName: \""a\\06b6d\"")` has failed. System.ArgumentException : Illegal characters in path. Stack Trace: at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.IO.Path.GetFileName(String path) at System.IO.Compression.ZipHelper.EndsWithDirChar(String test) at System.IO.Compression.ZipArchiveEntry.set_FullName(String value) at System.IO.Compression.ZipArchiveEntry..ctor(ZipArchive archive, ZipCentralDirectoryFileHeader cd) at System.IO.Compression.ZipArchive.ReadCentralDirectory() at System.IO.Compression.ZipArchive.get_Entries() at System.IO.Compression.Tests.zip_ManualAndCompatabilityTests.d__3.MoveNext() in E:\A\_work\60\s\corefx\src\System.IO.Compression\tests\ZipArchive\zip_ManualAndCompatibilityTests.cs:line 58 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170412.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x64-Release - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.zip_ManualAndCompatabilityTests~2FZipWithInvalidFileNames_ParsedBasedOnSourceOS(zipName:%20%5C%22NullCharFileName_FromUnix.zip%5C%22,%20fileName:%20%5C%22a%5C%5C06b6d%5C%22)" +18265 area-System.IO "Tests under: System.IO.IsolatedStorage.ContainsUnknownFilesTests failed with ""System.TypeInitializationException""" Opened on behalf of @Jiayili1 The test `System.IO.IsolatedStorage.ContainsUnknownFilesTests/ContainsUnknownFiles_CleanStore(scope: MachineStoreForApplication)` has failed. System.TypeInitializationException : The type initializer for 'System.IO.IsolatedStorage.TestHelper' threw an exception.\r ---- System.IO.IsolatedStorage.IsolatedStorageException : Initialization failed. Stack Trace: at System.IO.IsolatedStorage.TestHelper.WipeStores() at System.IO.IsolatedStorage.ContainsUnknownFilesTests.ContainsUnknownFiles_CleanStore(PresetScopes scope) in E:\A\_work\60\s\corefx\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\ContainsUnknownFilesTests.cs:line 18 ----- Inner Stack Trace ----- at System.IO.IsolatedStorage.Helper.GetDefaultIdentityAndHash(Object& identity, String& hash, Char separator) in E:\A\_work\60\s\corefx\src\System.IO.IsolatedStorage\src\System\IO\IsolatedStorage\Helper.Win32.Unix.cs:line 124 at System.IO.IsolatedStorage.TestHelper..cctor() in E:\A\_work\60\s\corefx\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\TestHelper.cs:line 28 Build : Master - 20170412.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x64-Release - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.IO.IsolatedStorage.Tests/analysis/xunit/System.IO.IsolatedStorage.ContainsUnknownFilesTests~2FContainsUnknownFiles_CleanStore(scope:%20MachineStoreForApplication) +18266 area-System.IO "Test: System.IO.IsolatedStorage.CopyFileTests/CopyFile_ThrowsIsolatedStorageException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.IO.IsolatedStorage.CopyFileTests/CopyFile_ThrowsIsolatedStorageException` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IsolatedStorage.IsolatedStorageException)\r Actual: typeof(System.InvalidOperationException): Store must be open for this operation. Stack Trace: at System.IO.IsolatedStorage.IsolatedStorageFile.CopyFile(String sourceFileName, String destinationFileName, Boolean overwrite) Build : Master - 20170412.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x64-Release - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.IO.IsolatedStorage.Tests/analysis/xunit/System.IO.IsolatedStorage.CopyFileTests~2FCopyFile_ThrowsIsolatedStorageException +18267 area-System.Security Remove dead code for System.Security.Principal.Windows Remove dead code according to #17905 Change for System.Security.Principal.Windows: http://tempcoverage.blob.core.windows.net/report2/System.Security.Principal.Windows.diff.html +18268 area-System.IO "Test: System.IO.IsolatedStorage.CreateDirectoryTests/CreateDirectory_Existance failed with ""System.IO.IsolatedStorage.IsolatedStorageException""" Opened on behalf of @Jiayili1 The test `System.IO.IsolatedStorage.CreateDirectoryTests/CreateDirectory_Existance(scope: MachineStoreForApplication)` has failed. System.IO.IsolatedStorage.IsolatedStorageException : Unable to determine application identity of the caller. Stack Trace: at System.IO.IsolatedStorage.IsolatedStorage.InitStore(IsolatedStorageScope scope, Type appEvidenceType) at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type applicationEvidenceType) at System.IO.IsolatedStorage.IsoStorageTest.GetPresetScope(PresetScopes scope) in E:\A\_work\60\s\corefx\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\IsoStorageTest.cs:line 54 at System.IO.IsolatedStorage.CreateDirectoryTests.CreateDirectory_Existance(PresetScopes scope) in E:\A\_work\60\s\corefx\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\CreateDirectoryTests.cs:line 63 Build : Master - 20170412.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x64-Release - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.IO.IsolatedStorage.Tests/analysis/xunit/System.IO.IsolatedStorage.CreateDirectoryTests~2FCreateDirectory_Existance(scope:%20MachineStoreForApplication) +18269 area-System.IO "Test: System.IO.IsolatedStorage.GetStoreTests/GetEnumerator_NoOp failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.IO.IsolatedStorage.GetStoreTests/GetEnumerator_NoOp` has failed. System.ArgumentException : Invalid scope, expected User, User|Roaming or Machine. Stack Trace: at System.IO.IsolatedStorage.IsolatedStorageFile.VerifyGlobalScope(IsolatedStorageScope scope) at System.IO.IsolatedStorage.IsolatedStorageFile.GetEnumerator(IsolatedStorageScope scope) at System.IO.IsolatedStorage.GetStoreTests.GetEnumerator_NoOp() in E:\A\_work\60\s\corefx\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\GetStoreTests.cs:line 91 Build : Master - 20170412.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x64-Release - x86-Debug - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170412.01/workItem/System.IO.IsolatedStorage.Tests/analysis/xunit/System.IO.IsolatedStorage.GetStoreTests~2FGetEnumerator_NoOp +18270 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding Failed with ""System.ArgumentException""" Failed test: System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/15/testReport/System.Security.Cryptography.Encryption.Aes.Tests/AesCipherTests/VerifyKnownTransform_CBC192_NoPadding/ MESSAGE: System.ArgumentException : The specified key is not a valid size for this algorithm.\r\nParameter name: key +++++++++++++++++++ STACK TRACE: ~~~ at System.Security.Cryptography.AesCryptoServiceProvider.CreateEncryptor(Byte[] key, Byte[] iv) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.AesEncryptDirectKey(Aes aes, Byte[] key, Byte[] iv, Byte[] plainBytes) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs:line 612 at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesTransformDirectKey(CipherMode cipherMode, PaddingMode paddingMode, Byte[] key, Byte[] iv, Byte[] plainBytes, Byte[] cipherBytes) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs:line 601 at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.VerifyKnownTransform_CBC192_NoPadding() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs:line 330 ~~~ +18271 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt_2 failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt_2 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/15/testReport/System.Security.Cryptography.Encryption.Aes.Tests/AesCipherTests/WrongKeyFailDecrypt_2/ MESSAGE: System.Security.Cryptography.CryptographicException : The specified key is not a valid size for this algorithm. +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.AesCryptoServiceProvider.set_Key(Byte[] value) at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.WrongKeyFailDecrypt_2() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesCipherTests.cs:line 430 +18272 area-System.Net "Desktop: System.Net.Sockets.Tests.TcpClientTest.Dispose_CancelsConnectAsync failed with ""System.NullReferenceException""" Failed test: System.Net.Sockets.Tests.TcpClientTest.Dispose_CancelsConnectAsync Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/15/testReport/System.Net.Sockets.Tests/TcpClientTest/Dispose_CancelsConnectAsync_connectByName__False_/ **MESSAGE:** System.NullReferenceException : Object reference not set to an instance of an object. +++++++++++++++++++ **STACK TRACE:** ~~~ at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Tests.TcpClientTest.d__24.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Sockets\tests\FunctionalTests\TcpClientTest.cs:line 436 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +18273 area-Serialization Desktop: XmlDictionaryWriterTest.FragmentTest failed Failed test: XmlDictionaryWriterTest.FragmentTest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/15/testReport/(root)/XmlDictionaryWriterTest/FragmentTest/ MESSAGE: Assert.False() Failure\r\nExpected: False\r\nActual: True +++++++++++++++++++ STACK TRACE: at XmlDictionaryWriterTest.FragmentTest() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs:line 299 +18274 area-Serialization "Desktop: XmlDictionaryWriterTest.CreateMtomReaderWriter_Throw_PNSE failed with ""Xunit.Sdk.ThrowsException""" Failed test: XmlDictionaryWriterTest.CreateMtomReaderWriter_Throw_PNSE Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/15/testReport/(root)/XmlDictionaryWriterTest/CreateMtomReaderWriter_Throw_PNSE/ MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.PlatformNotSupportedException)\r\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at XmlDictionaryWriterTest.CreateMtomReaderWriter_Throw_PNSE() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs:line 174 +18275 area-System.Net Fix length calculation in HttpContent to avoid unnecessary growth Fixes https://github.com/dotnet/corefx/issues/18219 cc: @vitek-karas, @davidsh, @danmosemsft +18276 area-System.Data Column Encryption support in SqlClient for .NET Core "When using a DbContext with a ConnectionString like ``` { ""ConnectionStrings"": { ""DefaultConnection"": ""Server=.\\SQLEXPRESS;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;Column Encryption Setting=Enabled;MultipleActiveResultSets=true;"" } } ``` I get the following error StackTrace ``` {System.ArgumentException: Keyword not supported: 'column encryption setting'. at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms) at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms) at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) at System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerConnection.CreateDbConnection() at Microsoft.EntityFrameworkCore.Internal.LazyRef`1.get_Value() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.BeginTransaction(IsolationLevel isolationLevel) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(Tuple`2 parameters) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](Func`2 operation, Func`2 verifySucceeded, TState state) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IReadOnlyList`1 entriesToSave) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess) at Microsoft.EntityFrameworkCore.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess) at xBN.Repository.Repositories.EntityBaseRepository`1.Commit() in C:\!Checkouts\git checkouts\xBN\xBN.Service\Repositories\EntityBaseRepository.cs:line 98 at xBN.API.Controllers.CompanyController.Get(Int32 id) in C:\!Checkouts\git checkouts\xBN\xBN.API\Controllers\CompanyController.cs:line 37 at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__27.MoveNext()} ``` The issue is about adding support for the Column Encryption Setting to the .NET Core ADO.NET SqlClient." +18277 area-System.Data SqlTransaction and TransactionScope leak isolation level "The TransactionScope class seems to ""leak"" it's isolation level to future queries on the same (pooled) connection. I would expect the isolation level of the connection to be restored when the transaction ends or is disposed. Here is a snippet which reproduces the behavior: ```c# SqlConnection.ClearAllPools(); var conn = new SqlConnection(new SqlConnectionStringBuilder { DataSource = @"".\sqlexpress"", IntegratedSecurity = true }.ConnectionString); Action printIsolationLevel = () => { var cmd = conn.CreateCommand(); cmd.CommandText = @""SELECT CASE transaction_isolation_level WHEN 0 THEN 'Unspecified' WHEN 1 THEN 'ReadUncommitted' WHEN 2 THEN 'ReadCommitted' WHEN 3 THEN 'Repeatable' WHEN 4 THEN 'Serializable' WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL FROM sys.dm_exec_sessions where session_id = @@SPID""; Console.WriteLine(cmd.ExecuteScalar()); }; conn.Open(); printIsolationLevel(); // ""ReadCommitted"" conn.Close(); using (var scope = new TransactionScope( TransactionScopeOption.RequiresNew, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.Serializable })) { conn.Open(); printIsolationLevel(); // ""Serializable"" conn.Close(); } conn.Open(); printIsolationLevel(); // ""Serializable"" !!? conn.Close(); ```" +18278 area-System.Net Enable System.Net.Sockets.Tests on netfx - Adds a netfx test config - Adds a simple SocketTaskExtensions to the test project to be used in the netfx config - Fixes or skips tests on netfx configuration cc: @davidsh, @safern Closes https://github.com/dotnet/corefx/issues/18152 Contributes to https://github.com/dotnet/corefx/issues/17690 +18279 area-System.Reflection Three System.Reflection.Tests.AssemblyTests tests failed with file sharing error ``` System.Reflection.Tests.AssemblyTests.Test_UnsafeLoadFrom [FAIL] System.IO.IOException : The process cannot access the file '/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/bin/AnyOS.AnyCPU.Release/System.Runtime.Tests/netcoreapp/TestAssembly/System.Runtime.Tests.dll' because it is being used by another process. Stack Trace: at System.IO.FileStream.Init(FileMode mode, FileShare share) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.UnixFileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite) at System.Reflection.Tests.AssemblyTests..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) System.Reflection.Tests.AssemblyTests.GetFiles [FAIL] System.IO.IOException : The process cannot access the file '/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/bin/AnyOS.AnyCPU.Release/System.Runtime.Tests/netcoreapp/TestAssembly/System.Runtime.Tests.dll' because it is being used by another process. Stack Trace: at System.IO.FileStream.Init(FileMode mode, FileShare share) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.UnixFileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite) at System.Reflection.Tests.AssemblyTests..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) System.Reflection.Tests.AssemblyTests.GetFile [FAIL] System.IO.IOException : The process cannot access the file '/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_release_prtest/bin/AnyOS.AnyCPU.Release/System.Runtime.Tests/netcoreapp/TestAssembly/System.Runtime.Tests.dll' because it is being used by another process. Stack Trace: at System.IO.FileStream.Init(FileMode mode, FileShare share) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.UnixFileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite) at System.Reflection.Tests.AssemblyTests..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) ``` +18280 area-Infrastructure "Run ""chmod"" on Tools/scripts/docker directory." We were missing some nested `.sh` files because of how the old command was constructed. This should catch everything. @dagood @MattGal +18281 area-System.Data Move SQLResource.cs to Common [System.Data.Common/src/System/Data/SQLTypes/SQLResource.cs](https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/SQLTypes/SQLResource.cs) and [System.Data.SqlClient/src/System/Data/SqlTypes/SQLResource.cs](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlTypes/SQLResource.cs) look identical but have different naming conventions. I took the one from SqlClient and moved it to [Common/src/System/Data/Common](https://github.com/dotnet/corefx/tree/master/src/Common/src/System/Data/Common) (this folder contains other types used by links by these projects) and removed both in System.Data.Common and System.Data.SqlClient. +18282 area-System.Net Fix UdpClient tests that require superuser rights The tests try to bind to a port that's generally configured to require elevated privileges. The fix is to just wrap the code in a try/catch, and if a SocketException emerges, verify that the reason is access denied. https://github.com/dotnet/corefx/pull/18282/files?w=1 Fixes https://github.com/dotnet/corefx/issues/17421 cc: @steveharter, @Priya91 +18283 area-System.Xml Remove dependency System.Private.Xml dependency on System.Reflection.Emit.* on uapaot System.Reflection.Emit.* is not available on uapaot. System.Private.Xml dependency on System.Reflection.Emit.* should be removed. https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System.Private.Xml.csproj#L517 +18284 area-System.Linq Expression.Convert and Expression.ConvertChecked should support tuple conversions. "Currently the code: ```C# Expression.Convert(Expression.Constant((1, 1)), typeof((long, long))) ``` Throws an `InvalidOperationException` with the message ```C# ""No coercion operator is defined between types 'System.ValueTuple`2[System.Int32,System.Int32]' and 'System.ValueTuple`2[System.Int64,System.Int64]'."" ``` As such conversions are now among the standard conversions one expects to work with the main .NET languages, they should work with S.L.Expressions too. As well as being of value in itself, this will facilitate #17453 as then MS.CSharp can be changed to recognise when such conversions are relevant and create the relevant Linq expression, and would be at least beneficial to dotnet/roslyn#12897" +18285 area-System.Reflection setup for system.reflection.assemblytests needs to run only once and … …not per test Fixes #18279 +18286 area-System.Memory Issue #18242 - fix blocksize computation Fixes #18242. @shiftylogic Kindly review. +18287 area-System.Net Disable UDP test I contemplated just deleting the whole test, but I've instead disabled it for now, and I'm pushing the associated issue out to Future. Other UDP tests similar to this were hardened against packet loss, but this one wasn't. And if this one is hardened, it will end up looking basically like the other tests that already exist. (We don't yet know whether it's actually packet loss or whether it just looks like it due to other tests running at the same time consuming the packets, but either way, this test is in the same bucket as a bunch of other UDP tests that were previously hardened for it; this one was just missed.) cc: @steveharter https://github.com/dotnet/corefx/issues/16945 +18288 area-Infrastructure Update Standard to preview1-25212-02 (master) +18289 area-System.Linq Support tuple conversions in Expression.Convert and ConvertChecked Closes #18284 +18290 area-System.IO System.IO.Pipes.Tests.Perf_PipeTest hangs on Unix This test seems to hang when run on Unix. There are a couple of threads waiting on PipeStream writes and socket loops. To repro, just run this test project: ``` Tools/msbuild.sh src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj /t:rebuildandtest /p:outerloop=true ``` +18292 area-System.Linq Remove .rd.xml directive for RuntimeBinderException from System.Linq.Expressions rd.ml The .rd.xml embedded in System.Linq.Expressions has a runtime directive for RuntimeBinderException which comes from the Microsoft.CSharp assembly. For one the directive is in the wrong assembly element and causes warnings. The other issue is that Microsoft.CSharp is not in the closure of references from System.Linq.Expressions, so System.Linq.Expressions should not have a directive for it, as it's not guaranteed to always be present. +18293 area-System.Security Using incorrect API in GetExceptionFromNtStatus RtlNtStatusToDosError should be LsaNtStatusToWinError. It's just a bug -- MSDN says LsaNtStatusToWinError for all LsaLogonUser calls and it's what Desktop uses. Don't know why we changed it. Incidentally it's also what windows intend to add to WACK so it's necessary for UWP but since we already shipped and it works it desn't seem needed for 2.0 ``` private static Exception GetExceptionFromNtStatus (int status) { if ((uint) status == Win32Native.STATUS_ACCESS_DENIED) return new UnauthorizedAccessException(); if ((uint) status == Win32Native.STATUS_INSUFFICIENT_RESOURCES || (uint) status == Win32Native.STATUS_NO_MEMORY) return new OutOfMemoryException(); int win32ErrorCode = Win32Native.RtlNtStatusToDosError(status); return new SecurityException(Win32Native.GetMessage(win32ErrorCode)); ``` +18294 area-System.Drawing Fix System.Drawing tests on UAP Fixes #17930 +18295 area-System.Diagnostics Temporary remove UAP target for DiagnosticSource DiagnosticSource nuget package preview should be published to nuget.org to be consumed by ApplicationInsights SDK (in preview). On UWP, DiagnosticSource depends on Microsoft.NETCore.Platforms for UWP, that will not be published yet. This change **temporary** removes UAP target from DiagnosticSource and removes dependency on it from System.Net.Http for UAP. This change will be reverted once DiagnosticSource is build, published on MyGet and verified. +18296 area-System.Diagnostics Revert PR 18295 when DiagnosticSource is published on MyGet UAP target was temporary removed from DiagnosticSource to publish preview on nuget. Once the package is published, #18295 must be reverted. Please assign this to me (@lmolkova) +18297 area-System.Data System.Data - move duplicate files to Common Similar to https://github.com/dotnet/corefx/pull/18281 this PR moves `MultipartIdentifier`, `NameValuePair` and `DbConnectionPoolKey` to [Common/src/System/Data/Common](https://github.com/dotnet/corefx/tree/master/src/Common/src/System/Data/Common). System.Data.Common, System.Data.SqlClient and System.Data.Odbc used to have an identical copy of these files (DbConnectionPoolKey had a small difference in `Clone` method implementation). /cc: @marek-safar +18300 area-Infrastructure Add dll to netfx references to force bindingRedirects This dll has a reference to the earliest version of every contract desktop ever shipped. This will ensure that RAR sees conflicts and adds binding redirects. Fixes #7702 /cc @weshaggard +18301 area-System.Net Change UrlDecode behavior and merge test cases for .Net core and desktop 1. Tested in .Net framework, confirmed the difference. Also confirmed the correctness of documentation 2. Merge the test for .Net core and desktop. Since now their behaviors match, no need to test separately (https://github.com/dotnet/corefx/pull/17618#issuecomment-289933351) Fix #17627 +18302 area-Serialization Add Tests for KnownTypeAttribute.MethodName Property We should add tests for KnownTypeAttribute.MethodName Property and verify if it works on UWP. UWP toolchain does not support it. But the tests should pass as we have reflection based serialization. +18304 area-System.IO [Suggestion]: For Binary Files controlling: Add new functions to improve the speed and simpify programming "@MaleDong commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7243) Hello all: It really makes me ""head to the wall"" if we wanna cope with binary files with the help of C# until now……:( Now you can image if we wanna do a download application in C#, we have to use MemoryStream/FileStream. However if we wanna do inserting/updating bytes into the file, we have to fetch some bytes from the file into a temporary one and then continue to do what we want... But if a file is size of GB-based.... It WON'T be a nice idea to do something like this way! I don't know whether Microsoft have nice ways to enhance the functions of FileStream/MemoryStream……ect. However I think it would be better if we now have: 1) FileStream.Insert(byte[] bytes,int startIndex,int endIndex): This is a very very useful method as far as I see——I have to save temporary binary bytes into MemoryStream. However compared with this for large files, it isn't a good way. Because we need a ""rapid-in/rapid-out"" method to direct do ""insert"". Maybe the ""bytes"" is the whole thing to be written into the binary file, startIndex: the position where the byte inserted. endIndex: to write how many bytes. 2) byte[] FileStream.Delete(int startIndex,int endIndex): Direct deleting some bytes from the file with an auto saving rapidly. The return value is the deleted bytes. --- @mikedn commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-247762101) > But if a file is size of GB-based. If a file is large then you simply don't insert/delete byte into/from it. Inserting a single byte at offset 1 of a 1GB file requires you to copy 1GB worth of data, there's no magic around that. Any design that requires such insertion/deletion is simply a bad design and the framework has no reason to provide support for that. > I have to save temporary binary bytes into MemoryStream I don't see why you need a MemoryStream for that. If the file is large then you probably don't want to load it in memory. And if you really must insert something into the file then you can simply copy the data after the insert position using a trivial read/write loop. --- @MaleDong commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-247762816) @mikedn :Yes, that's the problem——I couldn't agree with you any more on this:) Certialy it seems that we cannot do inserting/deleting to a binary file with a huge size. And we cannot copy the whole rest bytes into the memory. This means it is hard if we wanna cope with bytes for a large file. The reason why I hope this is that if we wanna add some specific symbol as the ""head"" for my specific file (e.g: for the 1st time when I download a resource from the remote server, I wanna write the url address into the binary file with binary formation. However I must delete that to restore what it is later with the downloaded bytes after the symbol head....). This is ONLY an example, and such things are always happening: Imaging that if we wanna make a specific kind of binary file with certain head inside specific position and then our program can analyze that or mark that..... And if the file is very large. What can you do? Hope you can understand what I said. And what's more:In Visual C++ (Perhaps I'm NOT familiar with C++……). We have such functions as ""CreateFileMapping"" and ""MapViewOfFile"" can easily help us jump over some bytes and read next bytes.... So our C# should also have so easily methods to cope with them. --- @mikedn commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-247798339) > What can you do? Hope you can understand what I said. No, I don't understand. As far as I can tell you're asking for something that can't be implemented efficiently and that isn't needed anyway. Databases can store terrabytes of data in binary files without requiring the ability to insert/delete stuff in the middle of the file. > We have such functions as ""CreateFileMapping"" and ""MapViewOfFile"" can easily help us jump over some bytes and read next bytes.... I don't understand what file mapping has to do with ""jump over some bytes and read next bytes"". You can do the same thing with a stream by setting the position appropriately. And file mapping doesn't allow you to insert/data data in the middle of the file. .NET exposes file mapping functionality via [MemoryMappedFile](https://docs.microsoft.com/en-us/dotnet/core/api/system.io.memorymappedfiles.memorymappedfile#System_IO_MemoryMappedFiles_MemoryMappedFile). --- @MaleDong commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-247814772) > Databases can store terrabytes of data in binary files without requiring the ability to insert/delete stuff in the middle of the file. However I don't need db at all... What I wanna do is just to directly controlling with a binary file with a huge amount.... Since MemoryStream and memory isn't suitable for me. So how can I cope with that? > And file mapping doesn't allow you to insert/data data in the middle of the file. .NET exposes file mapping functionality via MemoryMappedFile ``` static void Main(string[] args) { long byteLen = 0; using (FileStream fs = new FileStream(""c:\\Try.txt"",FileMode.Open)) { byteLen = fs.Length; } //Now we can map our large file into memory and insert some new chars using (MemoryMappedFile mpf = MemoryMappedFile.CreateFromFile(""c:\\Try.txt"",FileMode.Open,""Try"",byteLen+4)) { MemoryMappedViewAccessor access = mpf.CreateViewAccessor(); byte b = 0; //Do shifting to the empty memory for (long i = byteLen-1; i >=0; --i) { b = access.ReadByte(i); System.Console.WriteLine((char)b); access.Write(i+4, b); } //Write down the correct position by inserting new chars var bytes = Encoding.ASCII.GetBytes(""abcd""); //Leave the whole memory for the file and write them directly for (int i = 0; i < bytes.Length; i++) { access.Write(i, bytes[i]); } access.Flush(); } } ``` Now from the codes you can see that I can directly do inserting. Deleting can be also done with such a trick.... However what I'm worrying about is: 1) I still have to copy the byte one by one to shift it to ""empty memory"" into the file 2) My file gets small, however if the file is very large. How can I cope with that? I still have to map the whole file to the memory.... Since Microsoft has added the nice function since net framework 4.0, and it can let us easily directly to cope with files such as what we are doing in the memory……Why don't you offer inserting/deleting functions? It would be very easy for us to Read/Write binary files for certain bytes. --- @mikedn commented on [Sat Sep 17 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-247827564) What part of ""As far as I can tell you're asking for something that **can't be implemented efficiently** and that isn't needed anyway"" wasn't clear? --- @MaleDong commented on [Sun Sep 18 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-247834936) I see……However we really cannot find any other ways to do inserting/deleting bytes for a large file except for it that we have to save bytes into memory first? And if not, so if you meet this problem. How will you process with that? Maybe we should have other ways to make it better. --- @mikedn commented on [Mon Sep 19 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-248067249) > However we really cannot find any other ways to do inserting/deleting bytes for a large file except for it that we have to save bytes into memory first? I told you before that you can do this using a `FileStream` and a simple read/write loop to move the part of the file that's after the insert/delete position. After all, if you load the file in memory, you would do the same thing. > And if not, so if you meet this problem. How will you process with that? Binary file formats that require data to be inserted/deleted typically use fixed size pages. An ""entity"" is stored in multiple pages that are linked together in a linked list, B-tree or other suitable data structure that allows fast page insertion/removal. --- @MaleDong commented on [Tue Sep 20 2016](https://github.com/dotnet/coreclr/issues/7243#issuecomment-248305059) > An ""entity"" is stored in multiple pages that are linked together in a linked list, B-tree or other suitable data structure that allows fast page insertion/removal. So Can this be implemented by the VC++ or C++ dll, and called through .NET platform? --- @gkhanna79 commented on [Sun Mar 05 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284296437) CC @danmosemsft @AlexGhiondea --- @MaleDong commented on [Sun Mar 05 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284303695) Thanks @gkhanna! What do you think of this? --- @AlexGhiondea commented on [Sun Mar 05 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284306097) @MaleDong could you be more specific as to what you are looking for? Are you thinking of adding a convenience method for doing the 2 operations (delete/insert)? Or are you asking for an efficient way of implementing those 2 methods? --- @MaleDong commented on [Sun Mar 05 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284313498) Thanks @AlexGhiondea for your quick reply! If possible, Efficient way with the two methods is fine. If not, Offering Insert/Delete for direct-byte controlling is also nice. --- @AlexGhiondea commented on [Mon Mar 06 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284483437) I see. I don't believe there is a generic efficient approach for insert/delete. Could you give me more data about when those methods would be used? I am trying to see if there is enough value to consider adding them to the framework. --- @MaleDong commented on [Tue Mar 07 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284663923) A typical example is: When we wanna make a memory-based file (something similar to MemoryMappedFile), but we may check for some special bytes and do inserting/deleting at some specific positions to make a mocking memory data for dmp or log…… We don't directly control with memory but using ""MemoryFile"" instead. But now we cannot do direct insert or delete. --- @AlexGhiondea commented on [Tue Mar 07 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-284667114) Thanks for the example. It is a bit vague, but it sounds more like a solution would look more like a convenience method and would apply in a small number of scenario. I don't believe there is a generic solution that we can introduce for this problem since, in order to make the insert/delete operations fast you need domain knowledge of how you are going to use those files. Because it requires domain specific knowledge/decisions I don't believe this is a good fit for the framework. --- @danmosemsft commented on [Wed Apr 12 2017](https://github.com/dotnet/coreclr/issues/7243#issuecomment-293778745) Moving to corefx as this is an api request. " +18305 area-Infrastructure Instructions for dogfooding consuming 2.0 packages in VS2017 RTM @ericstj I am not sure what this involves -- clearly the updated nuget is not publicly available, so what would even be required here? @eerhardt +18307 area-Infrastructure Add PreferInbox=true to corefx assemblies "This adds `[assembly:System.Reflection.AssemblyMetadata(""PreferInbox"", ""True"")]` to all corefx assemblies. Mono will use this to ignore the assembly if it's in the application directory and it has the same assembly in its framework. Fixes #15112 /cc @marek-safar " +18308 area-System.IO "Desktop: System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success failed with ""Xunit.Sdk.EqualException""" Failed test: System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.IO.Tests/WaitForChangedTests/CreatedDeleted_Success_changeType__Deleted_/ **MESSAGE:** Assert.Equal() Failure\r\nExpected: Deleted\r\nActual: 0 +++++++++++++++++++ **STACK TRACE:** at System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(WatcherChangeTypes changeType) in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.WaitForChanged.cs:line 152 +18310 area-System.Reflection "Desktop: System.Reflection.Tests.AssemblyTests.Test_LoadFrom failed with ""Xunit.Sdk.EqualException""" Failed test: System.Reflection.Tests.AssemblyTests.Test_LoadFrom Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.Reflection.Tests/AssemblyTests/Test_LoadFrom/ **MESSAGE:** Assert.Equal() Failure Expected: System.Runtime.Tests, Version=4.2.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Actual: System.Runtime.Tests, Version=4.2.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb +++++++++++++++++++ **STACK TRACE:** at System.Reflection.Tests.AssemblyTests.Test_LoadFrom() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime\tests\System\Reflection\AssemblyTests.cs:line 337 +18311 area-System.Reflection "Desktop: System.Reflection.Tests.AssemblyNameTests.Ctor_String failed with ""Xunit.Sdk.EqualException""" Failed test: System.Reflection.Tests.AssemblyNameTests.Ctor_String Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.Reflection.Tests/AssemblyNameTests/Ctor_String_name____NAME____expectedName____NAME___/ **Message:** Assert.Equal() Failure  (pos 0) Expected: NAME Actual: name  (pos 0) **Stack Trace:** D:\j\workspace\outerloop_net---903ddde6\src\System.Reflection\tests\AssemblyNameTests.cs(53,0): at System.Reflection.Tests.AssemblyNameTests.Ctor_String(String name, String expectedName) +18312 area-System.Collections "Desktop: DataContractSerializerTests.DCS_ReadOnlyDictionary failed with ""Xunit.Sdk.EqualException""" "DataContractSerializerTests.DCS_ReadOnlyDictionary [FAIL] **Message:** ~~~ XML comparison is also failing Test failed for input: System.Collections.ObjectModel.ReadOnlyDictionary`2[System.String,System.Int32 Expected: <_dictionary xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"">Foo1Bar2 Actual: Foo1Bar2 Expected: True Actual: False ~~~ **Stack Trace:** at DataContractSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 2799 at DataContractSerializerTests.DCS_ReadOnlyDictionary() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 1891 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/(root)/DataContractSerializerTests/DCS_ReadOnlyDictionary/" +18313 area-Serialization "Desktop: DataContractSerializerTests.XsdDataContractExporterTest failed with ""XUnit.Sdk.ThrowsException""" Failed test: DataContractSerializerTests.XsdDataContractExporterTest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/(root)/DataContractSerializerTests/XsdDataContractExporterTest/ **MESSAGE:** Assert.Throws() Failure\r\nExpected: typeof(System.PlatformNotSupportedException)\r\nActual: (No exception was thrown) +++++++++++++++++++ **STACK TRACE:** at DataContractSerializerTests.XsdDataContractExporterTest() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 2688 +18314 area-System.Net "Desktop: System.PrivateUri.Tests.UriRelativeResolutionTest.Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme failed with ""System.NullReferenceException""" Failed test: System.PrivateUri.Tests.UriRelativeResolutionTest.Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.PrivateUri.Tests/UriRelativeResolutionTest/Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme **MESSAGE:** System.NullReferenceException : Object reference not set to an instance of an object. +++++++++++++++++++ **STACK TRACE:** at System.Uri.CreateUriInfo(Flags cF) at System.Uri.EnsureUriInfo() at System.Uri.ParseRemaining() at System.Uri.InitializeUri(ParsingError err, UriKind uriKind, UriFormatException& e) at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at System.PrivateUri.Tests.UriRelativeResolutionTest.Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme() in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Uri\tests\FunctionalTests\UriRelativeResolutionTest.cs:line 152 +18315 area-System.Net "Desktop: Tests under ""System.PrivateUri.Tests.UriBuilderTests"" failed with ""Xunit.Sdk.EqualException""" "~~~ System.PrivateUri.Tests.UriBuilderTests.TestQuery [FAIL] Assert.Equal() Failure  (pos 1) Expected: ?date=yesterday Actual: ??date=yesterday  (pos 1) Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Uri\tests\FunctionalTests\UriBuilderTests.cs(23,0): at System.PrivateUri.Tests.UriBuilderTests.TestQuery() System.PrivateUri.Tests.UriBuilderTests.Fragment_Get_Set(value: ""#fragment"", expected: ""#fragment"") [FAIL] Assert.Equal() Failure  (pos 1) Expected: #fragment Actual: ##fragment  (pos 1) Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Uri\tests\FunctionalTests\UriBuilderTests.cs(301,0): at System.PrivateUri.Tests.UriBuilderTests.Fragment_Get_Set(String value, String expected) ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.PrivateUri.Tests/UriBuilderTests/Fragment_Get_Set_value_____fragment____expected_____fragment___/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.PrivateUri.Tests/UriBuilderTests/TestQuery/" +18316 area-System.Net "Desktop: tests under ""System.PrivateUri.Tests.UriRelativeResolutionTest"" failed with ""Xunit.Sdk.EqualException""" ~~~ System.PrivateUri.Tests.UriRelativeResolutionTest.Uri_Unicode_SurrogatePairs_Scheme [FAIL] Assert.Equal() Failure  (pos 9) Expected: scheme:?? Actual: scheme:????  (pos 9) Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Uri\tests\FunctionalTests\UriRelativeResolutionTest.cs(242,0): at System.PrivateUri.Tests.UriRelativeResolutionTest.Uri_Unicode_SurrogatePairs_Scheme() ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/16/testReport/System.PrivateUri.Tests/UriRelativeResolutionTest/Uri_Unicode_SurrogatePairs_Scheme/ +18317 area-System.Diagnostics "System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NoSuchProcess_ReturnsEmpty failed with ""Xunit.Sdk.EmptyException"" in CI" "~~~ System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NoSuchProcess_ReturnsEmpty(processName: null) [FAIL] Assert.Empty() Failure System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NoSuchProcess_ReturnsEmpty(processName: \""\"") [FAIL] Assert.Empty() Failure ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release/643/consoleText Configuration: OuterLoop_netcoreapp_OS X 10.12_release " +18318 area-System.Net System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync.SslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success [FAIL] **This test fails on Windows 10 Pro amd64:** System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync.SslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success [FAIL] System.IO.IOException : The read operation failed, see inner exception. ---- System.TimeoutException : VirtualNetwork: Timeout reading the next frame. Stack Trace: F:\repos\corefx\src\System.Net.Security\src\System\Net\Security\SslStreamInternal.cs(171,0): at System.Net.Security.SslStreamInternal.EndRead(IAsyncResult asyncResult) F:\repos\corefx\src\System.Net.Security\src\System\Net\Security\SslStream.cs(537,0): at System.Net.Security.SslStream.EndRead(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) F:\repos\corefx\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs(318,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- F:\repos\corefx\src\Common\tests\System\Net\VirtualNetwork\VirtualNetwork.cs(42,0): at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) F:\repos\corefx\src\Common\tests\System\Net\VirtualNetwork\VirtualNetworkStream.cs(118,0): at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) F:\repos\corefx\src\System.Net.Security\tests\FunctionalTests\NotifyReadVirtualNetworkStream.cs(22,0): at System.Net.Security.Tests.NotifyReadVirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) F:\repos\corefx\src\Common\tests\System\Net\VirtualNetwork\VirtualNetworkStream.cs(138,0): at System.Net.Test.Common.VirtualNetworkStream.<>c__DisplayClass27_0.b__0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() F:\repos\corefx\src\System.Net.Security\src\System\Net\FixedSizeReader.cs(56,0): at System.Net.FixedSizeReader.d__1.MoveNext() +18319 area-Serialization Add 9 test cases for DataContractJsonSerializer @huanwu, @shmao , please help review the code. +18321 area-System.Diagnostics GetProcessesByName_NoSuchProcess_ReturnsEmpty test failing This test is newly added and has been taking out a bunch of runs, e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/1701/ https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/1702/ https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/1704/ https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/1705/ https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/1707/ ``` System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NoSuchProcess_ReturnsEmpty(processName: null) [FAIL] Assert.Empty() Failure Stack Trace: at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NoSuchProcess_ReturnsEmpty(String processName) ``` +18324 area-System.Diagnostics Remote machine process tests failing in CI "``` System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(265,0): at System.Diagnostics.NtProcessManager.GetProcessIds(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(33,0): at System.Diagnostics.ProcessManager.IsProcessRunning(Int32 processId, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(1055,0): at System.Diagnostics.Process.GetProcessById(Int32 processId, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\tests\ProcessTests.cs(868,0): at System.Diagnostics.Tests.ProcessTests.d__76.MoveNext() D:\j\workspace\windows_nt_re---37265eab\src\System.Linq\src\System\Linq\Select.cs(133,0): at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(550,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(511,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""machine\"") [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(1107,0): at System.Diagnostics.Process.GetProcesses(String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(27,0): at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\tests\ProcessTests.cs(821,0): at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(String machineName) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(550,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(511,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""\\\\machine\"") [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(1107,0): at System.Diagnostics.Process.GetProcesses(String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(27,0): at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\tests\ProcessTests.cs(821,0): at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(String machineName) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(550,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(511,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) ```" +18328 area-System.Net Min required libcurl version on Redhat? Hi, Our [vsts-agent](https://github.com/Microsoft/vsts-agent) is built on dotnet core 1.1 In pre-req doc dotnet core only mentioned about it needs libcurl on Redhat, but there is no min version. Since the libcurl in Redhat7.2 is 7.29 which is pretty old, there are few bug we got report about the old version libcurl, ex, NTLM not working properly, proxy not working properly. Can we update the doc to provide better guidance? or Can dotnet core work with Redhat to let them update the libcurl? We have enterprise customer who are not allowed to update libcurl from source. +18334 area-Infrastructure Remove some TrimEnd workarounds when updating to latest MSBuild We have a few places where we chain together TrimEnd statements. We can replace this with a single call after updating msbuild. See https://github.com/dotnet/corefx/pull/18306#discussion_r111433796. +18336 area-Infrastructure Disable merging IBC data to unblock build Temporarily disable `EnableProfileGuidedOptimization`. Currently it tries to restore a package during the first project build that needs it: this seems to lead to a race condition causing official build failures. I am also working on moving the package restore to the Sync step, but this PR is a more immediate fix to get builds unblocked for now. @ericstj @MattGal @shawnro +18338 area-System.IO .NETCoreApp 2.0, System.IO.Compression assembly load failure I am doing app building using .NET Core 2.0.0-preview1-001961-00. At run time I am getting the following error: System.IO.FileLoadException occurred HResult=0x80131040 Message=Could not load file or assembly 'System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Source=System.Net.Http StackTrace: at System.Net.Http.WinHttpResponseParser.CreateResponseMessage(WinHttpRequestState state, Boolean doManualDecompressionCheck) at System.Net.Http.WinHttpHandler.d__105.MoveNext() As far as I can tell System.IO.Compression assembly is right next to System.Net.Http assembly that my application is loading, they are both in C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0-preview1-001961-00 Not sure why there would be a mismatch? +18342 area-Infrastructure Enable merging IBC data: fix IBC data package restore by moving it to Sync Reverts https://github.com/dotnet/corefx/pull/18336 to reenable IBC data merging. Fixes the build break by restoring the IBC data/OptimizationData package during the `Sync` step of the build rather than during the parallel product build. I've mirrored the Tools-Override change to https://github.com/dotnet/buildtools/pull/1434. +18343 area-System.IO Change FileSystemInfo.CreationTime fall back on Unix If birth time isn't available, CreationTime currently falls back to `default(DateTimeOffset)`. This changes it to instead fall back to the last access (st_atime) or status change time (st_ctime), whichever is older. cc: @ianhays, @billwert, @terrajobst, @JeremyKuhne Closes https://github.com/dotnet/corefx/issues/16782 +18344 area-System.Security Enable the creation of certificates and cert requests The new CertificateRequest class allows a caller to specify a subject name, public key, and extensions for an extension request into a PKCS#10 blob to send to a certificate authority. The new CertificateRequest class allows a caller to set all of the fields in an X.509 v3 certificate, with the exception of the v2 IssuerUniqueId and SubjectUniqueId fields, as they are considered deprecated. Accelerators exist for self-signing, as well as chain-signing given an existing X509Certificate2 instance with a private key already associated. This change also adds CopyWithPrivateKey(this X509Certificate2 cert, {RSA|DSA|ECDSA} key) to enable scenarios where a public cert and private key are held independently but a unification is desired. This makes UNIX-style .pem/.key loading easier, but still requires users understand how to load the .key file. Fixes #17892. Fixes #7129. Fixes #14284. +18345 area-System.Linq Remove unresolvable directive from System.Linq.Expression.rd.xml Since System.Linq.Expressions doesn't have Microsoft.CSharp in its closure, so it should not have directives for types from it, since those directives might not be always resolvable. +18347 area-System.IO ZipFile.CreateFromDirectory(...) file locked after creation. File handle leak? Platform: Windows 7 Symptom: zipfiles I create are not available to be moved by the os after creation until the program ends. Analysis: When ZipFile.CreateFromDirectory(...) calls ZipFileExtensions.DoCreateEntryFromFile(archive, ...) the ZipArchiveEntry is created with the following code (~line 220): ZipArchiveEntry entry = compressionLevel.HasValue ? destination.CreateEntry(entryName, compressionLevel.Value) : destination.CreateEntry(entryName); But the ZipArchiveEntry that destination.CreatEntry(...) returns is an IDisposable object that is not wrapped with a (using ...) statement. Is this a handle leak? Regards. +18349 area-Infrastructure Update Docker images for crossbuilds CC @weshaggard @gkhanna79 +18350 area-Infrastructure Add separate symbol publish (index/archive) build leg See https://github.com/dotnet/corefx/pull/16939. This switches indexing to use VSTS Symbol. It handles hosting, so the builds don't need to copy to a file share. For release branch builds, archiving performance (still using the file share) is improved by https://github.com/dotnet/buildtools/pull/1421. The time this leg's steps take for a daily/indexed build is now: * 6.4 minutes Extracting * 1.5 minutes Publishing (indexing) * Total: 7.9 minutes I removed the symbol publishing steps from the Windows build legs because they're redundant. Removing the publish target path from the index+publish step means it will only index sources for the symbols and won't copy them anywhere. (Edit: on a test build I see that this step is only finding 2 PDBs, and it isn't able to find sources for them. Getting symbol indexing working properly is tracked by https://github.com/dotnet/core-eng/issues/499.) +18352 area-System.Diagnostics Modules_GetMultipleTimes_ReturnsSameInstance test failed in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/6248/consoleText ``` System.Diagnostics.Tests.ProcessModuleTests.Modules_GetMultipleTimes_ReturnsSameInstance [FAIL] System.ComponentModel.Win32Exception : Only part of a ReadProcessMemory or WriteProcessMemory request was completed Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(400,0): at System.Diagnostics.NtProcessManager.GetModules(Int32 processId, Boolean firstModuleOnly) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(294,0): at System.Diagnostics.NtProcessManager.GetModules(Int32 processId) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(107,0): at System.Diagnostics.ProcessManager.GetModules(Int32 processId) D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(312,0): at System.Diagnostics.Process.get_Modules() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Diagnostics.Process\tests\ProcessModuleTests.cs(50,0): at System.Diagnostics.Tests.ProcessModuleTests.Modules_GetMultipleTimes_ReturnsSameInstance() ``` cc: @hughbe, @danmosemsft +18353 area-Infrastructure Small crossgen.sh fixes - crossgen.sh was failing on OSX because the RID in the package that contains crossgen had changed. - crossgen.sh would try to crossgen the existing mscorlib.ni.dll and that would lead to a file in use error, I updated it such that it never tries to crossgen existing ni's. Neither of these issues failed the build (you can see them happening in CI) but it did impact my source-build work (since the error messages are picked up by another instance of MSBuild which is driving the overall composed build). +18354 area-Serialization Area-Serialization Sprint 117 The issue is for tracking issues to be done in sprint 117 (due by 5/5/2017) +18355 area-System.Runtime System.Runtime.Tests Uap-api work... Mark the PlatformNotSupported ones as Skip. De-theorize GetEnumValues() test to work around https://github.com/dotnet/corert/issues/3328 +18356 area-System.Reflection Remove reflection-based lightup S.R.M for netcoreapp S.R.Metadata has netcoreapp specific build. We can take advantage of it to avoid reflection and trial and error (avoids exception to be thrown and swallowed in some cases). The existing logic is preserved for the netstandard builds. +18357 area-System.Collections [Question/Proposal] Immutable Parent Child API This is a question (or possibly a proposal of new feature) to have the ability to manage immutable parent/child(ren) hierarchies efficiently with .NET Standard. I've searched various sites, blogs and the topic appears to be somewhat complex... at least from my country bumpkin perspective 😄 I came across the @AArnott and @terrajobst [video/blog](https://blogs.msdn.microsoft.com/dotnet/2013/09/25/immutable-collections-ready-for-prime-time/), read @ericlippert's [blog](https://blogs.msdn.microsoft.com/ericlippert/2012/06/08/persistence-facades-and-roslyns-red-green-trees/) on topic and attempted to understand Roslyn's [SyntaxNode](http://source.roslyn.io/#Microsoft.CodeAnalysis/Syntax/SyntaxNode.cs,849dc6029695ef7b)/[GreenNode](http://source.roslyn.io/#Microsoft.CodeAnalysis/Syntax/GreenNode.cs,85387470c0225abf) implementation (which is far more complex than my needs/comprehension). I think the [System.Immutable.Collections APIs](https://www.nuget.org/packages/System.Collections.Immutable) are an incredible start and provide great capabilities. However, they appear to stop short of offering similar parent/child management. It would be nice to have an additional immutable parent/child API. This parent/child relationship is nothing more than similar discussions on [Stack Overflow](http://stackoverflow.com/questions/6613613/in-c-sharp-4-0-is-there-any-way-to-make-an-otherwise-private-member-of-one-clas). I (like many others) need the ability to instantiate immutable parent objects, attach child(ren) objects, search up/down the tree (ancestors/descendants) and most importantly... update the objects' relationship when adding/updating/removing objects respectively (upstream or downstream). Meaning, once a child has been modify... the [Parent](http://source.roslyn.io/#Microsoft.CodeAnalysis/Syntax/SyntaxNode.cs,efecb528c7d2c282,references) is updated accordingly. I'm including a few of the smarter peeps I could think of to reach out to: 1. See if there is already related capabilities included with .NET Standard (or elsewhere compatible with .NET Standard) or 2. Possibly start the conversation/action to add this as a first-class offering with .NET Standard. FYI... @terrajobst, @AArnott, @ericlippert, @davidfowl, @stephentoub, @danmosemsft, @weshaggard, @KrzysztofCwalina, @karelz, @MadsTorgersen I really appreciate any help with my question/proposal. Thanks in advance. +18358 area-System.IO Fix S.IO.FileSystem tests running on uapaot +18360 area-System.ComponentModel [Netfx bug] CustomValidationAttribute doesn't properly implement RequiresValidationContext Requested by @ajcvickers. We should mark this as netfx-port-consider and close this issue. See https://github.com/dotnet/corefx/pull/5203, which fixed this. ```cs public class CustomValidator { public static ValidationResult CorrectValidationMethodOneArg(object o) => ValidationResult.Success; public static ValidationResult CorrectValidationMethodOneArgStronglyTyped(string s) => ValidationResult.Success; public static ValidationResult CorrectValidationMethodTwoArgs(object o, ValidationContext context) => ValidationResult.Success; public static ValidationResult CorrectValidationMethodTwoArgsStronglyTyped(TestClass tc, ValidationContext context) => ValidationResult.Success; } [Theory] [InlineData(nameof(CustomValidator.CorrectValidationMethodOneArg), false)] [InlineData(nameof(CustomValidator.CorrectValidationMethodOneArgStronglyTyped), false)] [InlineData(nameof(CustomValidator.CorrectValidationMethodTwoArgs), true)] [InlineData(nameof(CustomValidator.CorrectValidationMethodTwoArgsStronglyTyped), true)] public static void RequiresValidationContext_Get_ReturnsExpected(string method, bool expected) { CustomValidationAttribute attribute = new CustomValidationAttribute(typeof(CustomValidator), method); // The full .NET framework has a bug where CustomValidationAttribute doesn't // validate the context. See https://github.com/dotnet/corefx/pull/5203. if (PlatformDetection.IsFullFramework) { Assert.False(attribute.RequiresValidationContext); } else { Assert.Equal(expected, attribute.RequiresValidationContext); } } ``` +18361 area-System.ComponentModel [Netfx bug] MaxLengthAttribute and MinLengthAttribute don't support ICollection.Count Issue requested by @ajcvickers. We should tag this one as netfx-port-consider and close it. The following code throws an InvalidCastException . .NET Core added support for this feature. See https://github.com/dotnet/corefx/pull/2650 ```cs using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace MyNamespace { public class MyDataModel { [MinLength(1)] public ICollection MySet { get; set; } } } ``` +18363 area-Serialization Add Attribute SkipOnTargetFramework for Issue 18274. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""is implemented on full framework"")] for method CreateMtomReaderWriter_Throw_PNSE() in src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs" +18368 area-System.Xml Remove System.Xml.XPath.XmlDocument contract Resolves https://github.com/dotnet/corefx/issues/17190 This PR completely removes the `System.Xml.XPath.XmlDocument` contract. This contract contained few extension methods for `System.Xml.XmlNode` and `System.Xml.XmlDocument` types. Except for two methods, the rest are now available as instance methods on these types and exposed in `System.Xml.ReaderWriter` contract (after NS2.0). Those two methods are: - `public static System.Xml.XPath.IXPathNavigable ToXPathNavigable(this XmlNode node)` This method is not needed anymore as XmlNode now implements IXPathNavigable. - `public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlDocument document, System.Xml.XmlNode node)` which used to be internal on Desktop and I'm assuming was made public only to keep things working when Xml was split between different contracts. To make sure anyone who references System.Xml.XPath.XmlDocument.dll will have no issue, I tried referencing the 4.3.0 version of this NuGet package in a netcoreapp2.0 project and it worked as expected. cc: @weshaggard @danmosemsft @ericstj +18369 area-System.IO "Test: System.IO.Tests.WaitForChangedTests/Changed_Success failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.WaitForChangedTests/Changed_Success` has failed. Assert.Equal() Failure\r Expected: Changed\r Actual: 0 Stack Trace: at System.IO.Tests.WaitForChangedTests.Changed_Success() Build : Master - 20170414.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170414.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.WaitForChangedTests~2FChanged_Success +18370 area-Serialization Add SkipOnTargetFramework for Issue 18313. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""Full framework has an implementation and does not throw InvalidOperationException"")] for method XsdDataContractExporterTest() in src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs" +18371 area-Serialization Add SkipOnTargetFramework for Issue 18273. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""is implemented on full framework"")] for method FragmentTest() in src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs" +18372 area-System.Reflection Remove ActiveIssue1050 from CanReadFromSameMemoryMappedPEReaderInParallel() in MetadataReaderTests.cs Remove ActiveIssue1050 from CanReadFromSameMemoryMappedPEReaderInParallel() in src/System.Reflection.Metadata/tests/Metadata/MetadataReaderTests.cs +18373 area-Serialization DataContractJsonSerializerTests.DCJS_VerifyDictionaryFormat test failed in CI "DataContractJsonSerializerTests.DCJS_VerifyDictionaryFormat [FAIL] ### Message: ``` Test failed for input: System.Collections.Generic.Dictionary`2[TestClass,System.Object] Expected: {""1,2#45"":{""__type"":""TestClass:#"",""floatNum"":90,""intList"":[4,5]},""6,7#10"":{""__type"":""TestStruct:#"",""value1"":25}} Actual: {""1,2#45"":{""floatNum"":90,""intList"":[4,5]},""6,7#10"":{""value1"":25}} Expected: True Actual: False ``` ### STACK TRACE: at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) in D:\j\workspace\windows_nt_re---37265eab\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 2878 at DataContractJsonSerializerTests.DCJS_VerifyDictionaryFormat() in D:\j\workspace\windows_nt_re---37265eab\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 2744 ### Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/6197/testReport/junit/(root)/DataContractJsonSerializerTests/DCJS_VerifyDictionaryFormat_2/" +18375 area-Serialization Add two DSC test cases. @huanwu, @shmao Please help review this code. +18376 area-System.Net HttpListener Read_FullLengthAsynchronous_Success test failed in CI "https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/6278/consoleText ``` System.Net.Tests.HttpRequestStreamTests.Read_FullLengthAsynchronous_Success(transferEncodingChunked: True, text: \""\"") [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(462,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(74,0): at System.Net.Tests.HttpRequestStreamTests.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs(62,0): at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(863,0): at System.Net.Http.WinHttpHandler.d__105.MoveNext() ```" +18381 area-System.IO IOException in System.IO.Tests.Directory_NotifyFilter_Tests.FileSystemWatcher_Directory_NotifyFilter_Security ``` Unhandled Exception of Type System.IO.IOException Message : System.IO.IOException : Access to the path '\\\\?\\C:\\Users\\DotNetTestRunner\\AppData\\Local\\Packages\\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\\AC\\Temp\\Directory_NotifyFilter_Tests_dkl4gx0n.z4r\\FileSystemWatcher_Directory_NotifyFilter_Security_148\\dir' is denied. Stack Trace : at System.IO.Win32FileSystem.RemoveDirectoryHelper(String fullPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) at System.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) at System.IO.Directory.Delete(String path) at System.IO.Tests.Directory_NotifyFilter_Tests.<>c__DisplayClass9_0.b__1() at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(FileSystemWatcher watcher, WatcherChangeTypes expectedEvents, Action action, Action cleanup, String[] expectedPaths, Int32 attempts, Int32 timeout) at System.IO.Tests.FileSystemWatcherTest.ExpectEvent(FileSystemWatcher watcher, WatcherChangeTypes expectedEvents, Action action, Action cleanup, String expectedPath, Int32 attempts, Int32 timeout) at System.IO.Tests.Directory_NotifyFilter_Tests.FileSystemWatcher_Directory_NotifyFilter_Security(NotifyFilters filter) ``` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170414.01/workItem/System.IO.FileSystem.Watcher.Tests/analysis/xunit/System.IO.Tests.Directory_NotifyFilter_Tests~2FFileSystemWatcher_Directory_NotifyFilter_Security(filter:%20Attributes) +18382 area-System.Net Fix very long running Sockets test This one test is taking ~14 minutes on some Linux distros. Ugh. cc: @danmosemsft, @steveharter, @Priya91 +18383 area-System.IO Remove unnecessary pinvoke suppressions The Pipes one should never have been suppressed, and means I have a new WACK ask. The Shell32 one I do not understand .. both have the same entrypoint in the same module. @stephentoub ? However, removing the suppression does not cause any violations. +18384 area-System.Net Fix zero-length async receives on macOS macOS appears to special-case a zero-length non-blocking receive call to complete successfully immediately even if there's no data available. This breaks a commonly used pattern that works on both Windows and Linux of using a zero-length ReceiveAsync to be asynchronously notified of data being available. As a fix, we special-case a zero-length ReceiveAsync to check whether any data is available as a stand-in for a receive, simulating EAGAIN if no data is currently available. Fixes https://github.com/dotnet/corefx/issues/13778 cc: @geoffkizer, @steveharter, @Priya91 +18386 area-System.Security Bit simplification at System.Security.Cryptography.Xml I just removed unnecessary itens. +18387 area-System.Reflection apiset still used in S.R.Metadata "_From @danmosemsft on April 14, 2017 15:55_ @yizhang82 @stephentoub @tmat, @nguerrera @gkhanna79 is there any reason to still use apisets in this assembly? We removed them in all other places. But perhaps we need to keep it in this library because it ships OOB and does not necessarily have reverse forwarders? ```c# // The library guards against unavailable entrypoints by using EntryPointNotFoundException. private static unsafe class NativeMethods { // API sets available on modern platforms: [DllImport(@""api-ms-win-core-file-l1-1-0.dll"", EntryPoint = ""ReadFile"", ExactSpelling = true, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool ReadFileModern( SafeHandle fileHandle, byte* buffer, int byteCount, out int bytesRead, IntPtr overlapped ); // older Windows systems: [DllImport(@""kernel32.dll"", EntryPoint = ""ReadFile"", ExactSpelling = true, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool ReadFileCompat( SafeHandle fileHandle, byte* buffer, int byteCount, out int bytesRead, IntPtr overlapped ); } #pragma warning restore BCL0015 ``` _Copied from original issue: dotnet/coreclr#10974_" +18388 area-Infrastructure Add the URLs to allow constructing them from a given version Not really something our customers will do, but when dealing with dog food builds this is invaluable. /cc @eerhardt +18389 area-System.IO Remove duplication of SHGetKnownFolderPath calls The two different native calls in this file are actually identical. Remove the rigamarole around deciding which one to call https://github.com/dotnet/corefx/blob/7422664ba77cac9c0a3cb1dcba79c854ca1b2db0/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs#L40 details https://github.com/dotnet/corefx/pull/18383 +18390 area-System.Collections [Performance] Triage System.Collections performance regressions since v1.1 "We've done an analysis of performance data from two builds of corefx: the released version of .NET Core 1.1, and a snapshot of corefx/master. The data is available through an internal website; contact me for information about how to access the info. There are several regressions in test cases for System.Collections which we should investigate, triage, and potentially fix. The test cases which look reliable (i.e. they are not ""random noise"") are the following: ### `Dictionary` Test Name | Diff Time / Base Time --------|----------- Add(size: 1000) | 1.177 Add(size: 10000) | 1.314 ctor_int(size: 0) | 1.223 ctor_int(size:4096) | 1.287 Dictionary_ContainsKey_String_True(sampleLength: 100000) | 1.104 Dictionary_ContainsValue_Int_False(sampleLength: 1000) | 1.133 Dictionary_ContainsValue_Int_True(sampleLength: 1000) | 1.133 SetItem(size: 10000) | 1.145 Remove(initialSetSize: 8000000, countToRemove: 1) | 1.220 Union_NoOp(startSize: 32000, countToUnion: 320000) | 1.182 ### `HashTable` Test Name | Diff Time / Base Time ----------|---------------- Add(size: 1000) | **2.109 (!)** Ctor_Empty | 1.143 ### `List` Test Name | Diff Time / Base Time ----------- | --------------- Add(size: 100000) | **2.011 (!)** Clear(size: 10000) | **3.116 (!)** GetCount(size: 10000) | 1.840 ctor | 1.129 GenericList_Reverse_String | 1.147 GetCount(size: 10000) | 1.840" +18391 area-Serialization To Verify if WCF Can Use Reflection-based XmlSerializer XmlSerializer now supports XmlMembersMapping using in reflection only mode. We should verify if [XmlSerializerFormat] works when using reflection-based serialization. +18392 area-System.IO [Performance] Triage System.IO performance regressions since v1.1 "We've done an analysis of performance data from two builds of corefx: the released version of .NET Core 1.1, and a snapshot of corefx/master. The data is available through an internal website; contact me for information about how to access the info. There are several regressions in test cases for System.IO which we should investigate, triage, and potentially fix. The test cases which look reliable (i.e. they are not ""random noise"") are the following: ### `Directory` Test Name | Diff Time / Base Time --------|----------- CreateDirectory | 1.449 Exists | **1.993 (!)** GetCurrentDirectory | 1.216 ### `File` Test Name | Diff Time / Base Time -----------|------------ Delete | 1.341 Exists | **2.022 (!)** ### `FileStream` Test Name | Diff Time / Base Time ---------|-------------- Read(useAsync: True, bufferSize: 512, totalSize: 10000000) | **2.421 (!)** Write(useAsync: False, bufferSize: 512, totalSize: 10000000) | 1.317 Write(useAsync: True, bufferSize: 512, totalSize: 10000000) | 1.551 " +18394 area-System.Net Document .NET Remoting alternative - Sockets Our [porting](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/porting.md) doc is vague on replacement of .NET Remoting. We concluded System.Net.Sockets is best alternative. There is worry that it is tricky to write, so we should provide a sample (maybe in docs repo?). +18395 area-System.Xml Comment out apparently dead code in src\System.Private.Xml\System.Pri… …vate.Xml.sln N.B. This is purely for code review purposes. Let me know if this is useful as I did a rather large commit for Roslyn using the same tool - https://github.com/dotnet/roslyn/pull/17630 +18398 area-System.Xml Reduce XmlSchemaTests from ~3 minutes to ~3 seconds The System.Xml schema tests are currently taking ~3 minutes in CI, making it one of the longest running test suites by far in corefx. This is due to: - Tests doing a lot of `Dump`ing of state even when the relevant trace sources are not enabled, and - One test that has a huge input that's causing a ton of time to be spent in BitSet.Or This change addresses that by: - putting the relevant `Dump`ing behind the same trace sources, and - reducing the input sizes to the offending test This reduces the running time of the test suite from ~3 minutes to ~3 seconds. cc: @krwq, @sepidehMS +18400 area-Infrastructure Document upload-tests.proj Reminder issue to write a markdown file detailing how to use upload-tests.proj. +18401 area-Infrastructure What's the motivation for SkipOnTargetFrameworkAttribute in tests? The closed source .NET ToF test tree had a concept of *capabilities* that could be mapped to a set of *target runtimes*. What you could do with that was to say a test *requires* a capability and a *target runtime* could say that it *provides a capability*. When you had a test (such as e.g. a test exercising Rank 1 multidimensional arrays), you could say that the test is only applicable to runtimes that support Rank 1 multidimensional arrays. When a runtime added support for a capability, you would only need to update the list of it's capabilities, and all applicable tests would magically start running. Conversely, if a new target runtime was added, you only had to specify a list of it's capabilities and all the applicable tests would start running instead of having to dig through failures and trying to understand them. `SkipOnTargetFrameworkAttribute` seems to be inferior to the capabilities concept in every possible way: now you need to enumerate every possible runtime that the test is not supported on in the test itself. When the runtime learns that new feature, you better make sure and go over all the tests that were blocked for that particular runtime to make sure you're actually getting the test coverage you would expect for the new feature. +18402 area-System.IO Fix S.IO.FileSystem.DriveInfo running on uapaot +18403 area-System.IO Fix S.IO.FS.Performance tests on uapaot +18404 area-System.Net Retry ping when the output was not in expected syntax. Add retry to ping, when the expected syntax is not got from ping6 output. This behavior is observed from OSX 10.12 update, not sure why the ping6 output sometimes doens't have the full text. In relation to issue #18125 cc @danmosemsft +18405 area-Meta Document API platform differences We need to document API differences: 1. Between .NET platforms -- .NET Framework vs. .NET Core vs. .NET Native vs. Xamarin/Mono, and 2. Between OS's -- Windows vs. Linux vs. Mac The documentation should be exposed as [platform-compat tooling](https://github.com/terrajobst/platform-compat) and also as standalone HTML. +18406 area-System.Data SqlClient fails with netcoreapp2.0 on Win7/Server2008 Repro steps: Build https://github.com/aspnet/EntityFramework on windows 7 machine. All tests which uses SqlServer fails. (Tests uses localdb). Same passes in windows10/Server 2012 machines. Exception message: ```` Error Message: System.DllNotFoundException : Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.Data.SqlClient.SNINativeMethodWrapper.UnmanagedIsTokenRestricted(IntPtr token, Boolean& isRestricted) at System.Data.Win32NativeMethods.IsTokenRestrictedWrapper(IntPtr token) at System.Data.ProviderBase.DbConnectionPoolIdentity.GetCurrent() at System.Data.ProviderBase.DbConnectionPoolGroup.GetConnectionPool(DbConnectionFactory connectionFactory) at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPool(DbConnection owningObject, DbConnectionPoolGroup connectionPoolGroup) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() ```` dotnet info ``` .NET Command Line Tools (2.0.0-preview1-005783) Product Information: Version: 2.0.0-preview1-005783 Commit SHA-1 hash: 8bd15c7ec0 Runtime Environment: OS Name: Windows OS Version: 6.1.7601 OS Platform: Windows RID: win7-x64 Base Path: C:\Users\smpatel\AppData\Local\Microsoft\dotnet\sdk\2.0.0-preview1-005783\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-001967-00 Build : fa25acec41a87ce36b3ea61273d4798eb0a2486f ``` cc: @Eilon +18407 area-System.Security Fix runtime desktop failure in Cryptography tests `ECDsaTest.PublicKey_CannotSign` uses ECParameters which is not available for Desktop until 4.7 so I wrapped it up under #if netcoreapp to stop having this failure. Fixes #18198 cc: @bartonjs @danmosemsft +18408 area-System.Diagnostics Strange behavior with Process creation and termination "@livarcocc commented on [Thu Mar 16 2017](https://github.com/dotnet/core-setup/issues/1762) _From @mellinoe on April 29, 2016 21:36_ ## Steps to reproduce Consider this program: ``` CSharp public static void Main(string[] args) { ProcessStartInfo psi = new ProcessStartInfo(""ping"", ""github.com""); psi.RedirectStandardOutput = true; Process.Start(psi); Console.WriteLine(""Process started.""); } ``` NOTE: This is just an easy example, my use case is slightly different (using xdg-open to launch a browser). Ping works here because it usually takes a while to exit. ## Expected behavior The program starts a process, prints out ""Process started"", and terminates. ## Actual behavior When executed via `dotnet run`, the program does not terminate until the ""ping"" process terminates. Executing `killall ping` causes the `dotnet` process to terminate, as well, once `ping` has been killed. When I run the same program using corerun or coreconsole, the above behavior is not exhibited. A ping process is started, but the program immediately terminates. Ping continues in the background. ## Environment data `dotnet --info` output: ``` .NET Command Line Tools (1.0.0-rc2-002543) Product Information: Version: 1.0.0-rc2-002543 Commit Sha: 38d0c28a1e Runtime Environment: OS Name: ubuntu OS Version: 15.04 OS Platform: Linux RID: ubuntu.15.04-x64 ``` _Copied from original issue: dotnet/cli#2776_ --- @livarcocc commented on [Thu Mar 16 2017](https://github.com/dotnet/core-setup/issues/1762#issuecomment-287265358) _From @mellinoe on April 29, 2016 21:43_ Another point of data: If I execute `dotnet `, then the correct behavior is exhibited. This repros on both Ubuntu and Windows (all I've tried). --- @livarcocc commented on [Thu Mar 16 2017](https://github.com/dotnet/core-setup/issues/1762#issuecomment-287265362) _From @brthor on May 2, 2016 18:53_ It seems like we should be a little more robust in how we manage child processes in `dotnet run` here, it sounds like we are waiting for the entire process tree instead of the immediate child. I don't think this is a blocker for RC2 though, comment if you feel otherwise. --- @livarcocc commented on [Thu Mar 16 2017](https://github.com/dotnet/core-setup/issues/1762#issuecomment-287265367) @mellinoe I just tried this in 1.0.1 and I hit the same thing, except that when I published the app and run it using dotnet it exhibited the same delay there. So, wondering if that's an issue with dotnet.exe, since that's also what we use during dotnet run. I will move this issue to core-setup. --- @gkhanna79 commented on [Fri Mar 17 2017](https://github.com/dotnet/core-setup/issues/1762#issuecomment-287443578) Dotnet.exe is not launching processes @livarcocc. It simply calls into the managed entrypoint. > I hit the same thing, except that when I published the app and run it using dotnet it exhibited the same delay there How did you repro this? What delay did you see? --- @gkhanna79 commented on [Fri Apr 14 2017](https://github.com/dotnet/core-setup/issues/1762#issuecomment-294252653) The host does not do anything to block/wait against the application aside from invoking its entrypoint. Someone in CoreFX should take a stab. " +18409 area-System.Diagnostics On Linux systems: System.Diagnostics.FileVersionInfo.GetVersionInfo() hangs process/thread when used on named pipe files Repro 1. On Linux Ubuntu 16.04 install PowerShell from GitHub (https://github.com/powershell/powershell) ``` uname -a Linux paul-UbuntuA 4.8.0-46-generic #49~16.04.1-Ubuntu SMP Fri Mar 31 14:51:03 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux ``` 2. Install VSCode as well because it creates named pipe files needed to repro. 3. On PowerShell command line type the following (replace named pipe file name with actual file in /tmp) ```powershell [System.Diagnostics.FileVersionInfo]::GetVersionInfo('/tmp/clr-debug-pipe-12555-7925167-in') ``` Result PowerShell process/thread hangs. No exception is thrown. Discussion This appears to only happen with named pipe files. I don't see the hang when passing in other file paths. This breaks PowerShell remoting when enumerating directories containing named pipe files because PowerShell remoting returns serialized FileInfo objects which includes custom object members that evaluates FileVersionInfo.GetVersionInfo() with the file path. See issue (https://github.com/PowerShell/PowerShell/issues/1866) +18410 area-System.IO Enable MMF tests building on uapaot +18411 area-System.Diagnostics Fix tests to test difference in behavior correctly in ProcessStartInfo While investigating an exception thrown in the tests I found that this test was failing because of a difference in behavior by design in between .NET Core and Desktop so I added the test for desktop and skipped on desktop the .NET Core specific. cc: @stephentoub @Priya91 +18412 area-System.Reflection Dead metadata According to ILLink this is dead. Relates to https://github.com/dotnet/corefx/issues/17905 +18414 area-System.Linq Remove dead code from S.L.Expressions Either truly dead, or default constructors with default access and no XML comment and so same as compiler will produce. After this the only code in this project mentioned at #17905 is either from common files and used elsewhere, constants that are used, or perhaps will be brought into use with CompileToMethod and/or PDB generation. +18416 area-System.Runtime Performance tests with empty loops "While doing some other work I noticed a handful of the System.Runtime performance tests that end up having their test optimized away by the JIT on amd64 release builds. Both tests here: [Perf.Object.cs](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/Performance/Perf.Object.cs) Both tests here: [Perf.IntPtr.cs](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/Performance/Perf.IntPtr.cs) [Perf_String.GetLength](https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/Performance/Perf.String.cs#L135) These all jit to a pattern like this: ``` E823E5FFFF call BenchmarkIteration:StartMeasurement():struct:this 90 nop G_M28236_IG05: 33C9 xor ecx, ecx G_M28236_IG06: FFC1 inc ecx 81F910270000 cmp ecx, 0x2710 7CF6 jl SHORT G_M28236_IG06 ``` In general a strategy for working around issues like this is to assign the result to a field of the enclosing type. I did this as a quick experiment locally and it produces a better result. In most cases however these tests are still well optimized by the JIT. For example, this is the ""fixed"" JIT output for the ```IntPtr(0)``` constructor case: ``` E89EDEFFFF call BenchmarkIteration:StartMeasurement():struct:this 90 nop G_M39768_IG05: 33C9 xor ecx, ecx G_M39768_IG06: 33D2 xor rdx, rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx 48895618 mov qword ptr [rsi+24], rdx FFC1 inc ecx 81F910270000 cmp ecx, 0x2710 7CD0 jl SHORT G_M39768_IG06 ``` It's not clear that's a particularly valuable test. cc @ianhays as you seem to have written (or at least checked these in originally.) I didn't have a sophisticated parser or anything to find these; I just dumped the jitdisasm and looked for the inc/cmp/jl pattern by hand for these tests. " +18418 area-System.Diagnostics Activity: RootId based sampling When Activity starts without internal 'Parent' or external `ParentId`, it generates Id in the following way: `|MachineName-timestamp-number.` Where - `timestamp` is the last 32-bits of static start time of process (service instance) - `number` is monotonically incremented long with random start value As a result Ids generated for the consecutive requests from one instance look like ``` |Service1-36ef1287-1ad6aa. |Service1-36ef1287-1ad6ab. |Service1-36ef1287-1ad6ac. |Service1-36ef1287-1ad6ad. ``` They all have the same beginning and only few last characters differs. It is natural to sample requests based on the `Activity.RootId` since it ensures consistent sampling for the operation traces. **It could be the problem for the hashing algorithms used for sampling** E.g. djb2 [wiki](https://en.wikipedia.org/wiki/Universal_hashing#Hashing_strings), [sample implementation](http://www.cse.yorku.ca/~oz/hash.html) favors first characters over the last ones. ApplicationInsights uses it to sample telemetry items, so Id of the particular Activity almost always appear in the same hash bucket for the given service instance. In case of small cluster (e.g. 1-2 instances), it is likely all Ids will share the same hash bucket. In case of large cluster, it is still likely that machine names are quite similar and differ only with the last few characters, so distribution of hashes may still be far from uniform. I'd like to highlight that it mostly affects small clusters and only in case when clients (client apps or pages) do not generate the first Id, however it is common case for ApplicationInsights and perhaps other tracing systems. **So, 'root' Id generation should be revised, to make sure existing sampling/hashing algorithms would be able to use it and achieve close to uniform distribution. It implies that 'root id' should be random, at least it's first and last part.** /cc @vancem @cwe1ss @Dmitry-Matveev @SergeyKanzhelev +18419 area-System.Memory Fix CopyTo(this T[] array, Span destination) for covariant arrays CopyTo was creating writeable Span where it should have been only creating readonly Span. It made it slower than necessary for reference types because of the covariance check in writeable Span constructor, and also made it fail for no good reason on covariant arrays. +18420 area-System.Memory API Proposal: Span AsReadOnlySpan(this T[]) extension method #17414 added extension methods that make it easy to create Span from array using fluent pattern. This proposal adds similar methods for ReadOnlySpan. ```c# public static class SpanExtensions { public static ReadOnlySpan AsReadOnlySpan(this T[] array); public static ReadOnlySpan AsReadOnlySpan(this ArraySegment segment); } ``` Note that creating ReadOnlySpan directly using these APIs is not equivalent to creating Span and than casting it to ReadOnlySpan. The later incurs covariance array check that adds unnecessary performance overhead and throws for covariant array. An instance of this problem was fixed in #18419. +18421 area-System.Linq Issue #8578 Use reflection method with binding flags Fixes #8578 @ViktorHofer please review and suggest. +18424 area-System.Net Two FtpWebRequest tests taking long time to fail Two FtpWebRequests tests are each taking upwards of 20 seconds, but all they're doing is trying to connect to targets that don't exist. I'm not familiar enough with the FtpWebRequest APIs to know what can be done about this, but these two tests are the long poles in the suite. `GetResponse_ServerNameNotInDns_ThrowsWebException` `GetResponse_ConnectFailure_ThrowsWebException` +18426 area-Meta Mention global.json in dogfooding instructions +18427 area-System.Diagnostics Enabled disabled tests for netcoreapp in System.Diagnostics.Tracing and updated missing ref members Fixes https://github.com/dotnet/corefx/issues/4865 +18429 area-System.Collections API Proposal: StructuralComparer Currently there is no built-in comparer that can be used with a `HashSet` or the [ToImmutableHashSet](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Immutable.ImmutableHashSet.ToImmutableHashSet--1?view=netcore-1.1.0#System_Collections_Immutable_ImmutableHashSet_ToImmutableHashSet__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_IEqualityComparer___0__). Just like `Comparer` provides a convenient `Default`, it would be great to also provide such a structural comparer, which is basically: ```c# public class StructuralComparer : IEqualityComparer { public static IEqualityComparer Default { get; } = new StructuralComparer(); public bool Equals(T x, T y) => StructuralComparisons.StructuralEqualityComparer.Equals(x, y); public int GetHashCode(T obj) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(obj); } ``` I'm using the above when working with Roslyn's `ImmutableArray` and `ImmutableHashSet` and it is quite convenient. +18432 area-System.Collections ConcurrentDictionary throws for null comparer, unlike every other BCL API You would expect this to succeed: ```c# new ConcurrentDictionary((IEqualityComparer)null) ``` I'll quite often take advantage of the fact that all BCL APIs use `EqualityComparer.Default` when you pass null, and chain constructors and other methods with the parameter `IEqualityComparer comparer = null`. I haven't found any other API that throws. Here are some that do not throw: - `Dictionary` - `HashSet` - `ImmutableDictionary` - `ImmutableHashSet` - `ImmutableSortedDictionary` - `ImmutableSortedSet` - `KeyedCollection` - `SortedDictionary` - `SortedList` - `SortedSet` - `Array.BinarySearch` - `Array.Sort` - `List<>.BinarySearch` - `List<>.Sort` - `IEnumerable<>.Contains` - `IEnumerable<>.Distinct` - `IEnumerable<>.Except` - `IEnumerable<>.GroupBy` - `IEnumerable<>.GroupJoin` - `IEnumerable<>.Intersect` - `IEnumerable<>.Join` - `IEnumerable<>.OrderBy` - `IEnumerable<>.OrderByDescending` - `IEnumerable<>.SequenceEqual` - `IEnumerable<>.ThenBy` - `IEnumerable<>.ThenByDescending` - `IEnumerable<>.ToDictionary` - `IEnumerable<>.ToImmutableDictionary` - `IEnumerable<>.ToImmutableHashSet` - `IEnumerable<>.ToImmutableSortedDictionary` - `IEnumerable<>.ToImmutableSortedSet` - `IEnumerable<>.ToLookup` - `IEnumerable<>.Union` +18435 area-System.Memory Issue #17118 Loop unrolling in Span.CopyTo slow path Fixes #17118. @shiftylogic @jkotas Kindy review the code change. I have merged the forward and reverse paths using a `direction` variable. I am not sure if this would affect vectorization avenues if that was the intention to have unrolled loops. Kindly advise. If yes, then I think the option will be to write separate blocks for forward and reverse copy. Thanks. +18436 area-System.Text [Netfx]: Bug in UnicodeDecoder.GetChars(byte[], int, int, char[], int) There is a bug in `UnicodeDecoder.GetChars(byte[], int, int, char[], int)` where it causes to return 0 chars when actually passing a byte array with valid values in it, so if we do: ```cs byte[] buffer = { 97, 0 }; char[] chars = { '\0', '\0' }; int charCount = 1; int charsRetrieved = Encoding.Unicode.GetDecoder().GetChars(buffer, 0, charCount, chars, 0); ``` `charsRetrieved` would be 0 and chars would stay as `['\0', '\0']` but it should return 1 and chars should be `['a', '\0']` However if we make `charCount = 2` then we would get the expected behavior. This is causing other failures, see: +18437 area-System.Diagnostics [Netfx]: Bug in AsyncStreamReader.GetLinesFromStringBuilder() private API "When running the following code, we would get an `IndexOutOfRangeException` from `StringBuilder.get_Char(char)`. ```cs [Fact] public void TestAsyncHalfCharacterAtATime() { var receivedOutput = false; var collectedExceptions = new List(); Process p = CreateProcess(() => { var stdout = Console.OpenStandardOutput(); var bytes = new byte[] { 97, 0 }; //Encoding.Unicode.GetBytes(""a""); for (int i = 0; i != bytes.Length; ++i) { stdout.WriteByte(bytes[i]); stdout.Flush(); Thread.Sleep(100); } return SuccessExitCode; }); p.StartInfo.RedirectStandardOutput = true; p.StartInfo.StandardOutputEncoding = Encoding.Unicode; p.OutputDataReceived += (s, e) => { try { if (!receivedOutput) { Assert.Equal(e.Data, ""a""); } receivedOutput = true; } catch (Exception ex) { // This ensures that the exception in event handlers does not break // the whole unittest collectedExceptions.Add(ex); } }; p.Start(); p.BeginOutputReadLine(); Assert.True(p.WaitForExit(WaitInMS)); p.WaitForExit(); // This ensures async event handlers are finished processing. Assert.True(receivedOutput); } ``` When we call `p.BeginOutputReadLine()` it will call `AsyncStreamReader.ReadBuffer(IAsyncResult)` everything at this moment behaves as expected which has 1 char to read in the byte buffer (97). But when reading the chars through the decoder: https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/AsyncStreamReader.cs,192 We hit a bug in `UnicodeDecoder.GetChars` (see #18436) so we would get 0 as a result when reading the chars out of the decoder. After trying to decode the chars we call `GetLinesFromStringBuilder()` when in this situation where `sb.Length == 0` and `currentIndex == 0` we will try to access `sb[currentIndex - 1]` which will obviously will be an `IndexOutOfRangeException`... source code: https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/AsyncStreamReader.cs,242 In .NET Core this was fixed by doing a check if currentIndex > 0 before trying to access the StringBuilder." +18438 area-System.Diagnostics Disable ProcessStreamReadTest.TestAsyncHalfCharacterAtATime "This test was hitting a `IndexOutOfRangeException` which was causing the tests execution to break and not producing test results. This is caused by 2 desktop bugs, see: #18437 and #18436. Also I moved `receivedOutput=true` to be updated before `Assert.Equal(e.Data, ""a"");` because if this Assert fails received output will never be set to true because the try catch will catch the xunit assert failure exception before updating the value. This will cause `Assert.True(receivedOutput);` to fail and the test will exit at that point causing ```cs if (collectedExceptions.Count > 0) { // Re-throw collected exceptions throw new AggregateException(collectedExceptions); } ``` To never be hitted so the real `Assert.Equal(e.Data, ""a"");` failure will never be thrown and the actual shown failure in the test execution will be `Assert.True(receivedOutput);` which would make it harder to debug as we did actually received output but not the expected. cc: @stephentoub @Priya91 @danmosemsft Contributes to #18262" +18439 area-System.Net Disable Private.Uri tests due to quirked behavior Fixes: #18314 Fixes: #18315 Fixes: #18316 I'm closing the above issues with this PR by disabling tests as this is already tracked by: #15145 cc: @davidsh @CIPop @danmosemsft +18441 area-System.Collections ConcurrentDictionary null comparer consistency with BCL Fixes #18432 Question: would it make sense to pass `null` instead of `EqualityComparer.Default` between the constructor overloads now? 1. [ConcurrentDictionary()][1] 2. [ConcurrentDictionary(int concurrencyLevel, int capacity)][1] 3. [ConcurrentDictionary(IEnumerable> collection)][3] [1]: https://github.com/dotnet/corefx/pull/18441/files#diff-f1285172a2a161542ccf657778f0852cR128 [2]: https://github.com/dotnet/corefx/pull/18441/files#diff-f1285172a2a161542ccf657778f0852cR145 [3]: https://github.com/dotnet/corefx/pull/18441/files#diff-f1285172a2a161542ccf657778f0852cR161 +18442 area-System.Linq Optimise IL for nullable unary S.L.Expressions expressions. `UnaryPlus` is a nop for all possible inputs, so do nothing. Don't construct new value for null operand, just push previous value back on stack. Conversely, don't store then load computed value, just leave it on the stack. Separate path for `Not` on `bool?` values now has no advantage, so roll into rest. Only two paths differ from others, so handle majority as default branch (previous default is unreachable and if not would result in same exception this way anyway). `TypeAs` is nop when result type is same as operand type, so do nothing. (Do this for non-nullable case too). +18444 area-System.Linq Lifted Convert Expression with custom ByRef method fails on compiler While conversion operators cannot normally use methods with `ref` parameters, Expressions does allow them if the method in question is explicitly requested. If lifted however, the compiler will attempt to use a non-method-based conversion with the same ByRef type to do the lifting, which will hence fail (the interpreter behaves correctly in this regard). As a result the compilation fails. There is code that attempts to respond to this scenario, but it is incomplete. +18445 area-System.Linq Convert Expression with custom ByRef method doesn't writeback on interpreter While conversion operators cannot normally use methods with `ref` parameters, Expressions does allow them if the method in question is explicitly requested. The interpreter however does not write-back the parameter of the call. The compiler is correct in this regard. +18446 area-System.Linq Compile Lifted Convert Expression with custom ByRef Fixes #18444 Also contains further Convert tests, including ActiveIssue test for #18445 +18448 area-System.Net HttpWebRequest KeepAlive correctness This issue refers to the code [here](https://github.com/dotnet/corefx/blob/master/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs#L387). Is this a valid HTTP header? ```c# public bool KeepAlive { get { return _webHeaderCollection[HttpKnownHeaderNames.KeepAlive] == bool.TrueString; } set { if (value) { SetSpecialHeaders(HttpKnownHeaderNames.KeepAlive, bool.TrueString); } else { SetSpecialHeaders(HttpKnownHeaderNames.KeepAlive, bool.FalseString); } } } ``` https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive suggests that this should never be a true or false value. Shouldn't we be setting `Connection: keep-alive` instead? +18449 area-System.Net "HttpClient: Impossible to send ""Accept: a;charset=b""" "I want to make a http request with a header `""Accept""` with value `""a;charset=b""`. It is **impossible** to do that with **HttpClient**. ```c# using (var client = new HttpClient()) { client.DefaultRequestHeaders.TryAddWithoutValidation(""Accept"", ""a;charset=b""); // ... } ``` This will generate a request with header `""Accept""` with value `""a; charset=b""`. Yes, this extra space is obviously valid, but the original value was also valid. And there are APIs out there that won't work with the extra space. The only way to make it work is to _hack_ it with reflection: ```c# client.DefaultRequestHeaders.TryAddWithoutValidation(""Accept"", ""foo""); foreach (var v in client.DefaultRequestHeaders.Accept) { if (v.MediaType.Contains(""foo"")) { var field = v.GetType().GetTypeInfo().BaseType.GetField(""_mediaType"", BindingFlags.NonPublic | BindingFlags.Instance); field.SetValue(v, ""a;charset=b""); // avoid MediaType's validation v.CharSet = """"; } } ``` Sugestion: ```c# client.DefaultRequestHeaders.AddHeaderAndDontMessWithItDontChangeItDontParseItIWantTotalControlThankYouVeryMuch(""Whatever header I want"", ""Whatever value I want""); ``` " +18452 area-Infrastructure Package Microsoft.Composition 1.0.27 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.Composition 1.0.27 supports: portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259) "hello i use VS 2017 version 15.1 (26403.3) Release and .Net framework version 4.6.01586 when i build my project build succeed and my project is lunch,but in Error List i see this error > Package Microsoft.Composition 1.0.27 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.Composition 1.0.27 supports: portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259) my csproj is ``` netcoreapp1.1 true AdminPanel Exe AdminPanel 1.1.1 $(PackageTargetFallback);dotnet5.6;portable-net45+win8 PreserveNewest ``` how i can fix this problem?" +18458 area-System.Runtime New string.Replace overload throws OOM with empty string "```cs [Fact] public void Replace_EmptyNewValue() { // Nope: OutOfMemoryException Assert.Equal(""abc"", ""abc"".Replace("""", ""def"", StringComparison.CurrentCulture)); Assert.Equal(""abc"", ""abc"".Replace("""", ""def"", StringComparison.CurrentCultureIgnoreCase)); Assert.Equal(""abc"", ""abc"".Replace("""", ""def"", StringComparison.InvariantCulture)); Assert.Equal(""abc"", ""abc"".Replace("""", ""def"", StringComparison.InvariantCultureIgnoreCase)); Assert.Equal(""abc"", ""abc"".Replace("""", ""def"", StringComparison.Ordinal)); Assert.Equal(""abc"", ""abc"".Replace("""", ""def"", StringComparison.OrdinalIgnoreCase)); } ``` Extracted from #1271. It's been fixed in https://github.com/dotnet/coreclr/pull/11001 but the tests need to be updated." +18459 area-System.Runtime New string.Replace overloads OrdinalIgnoreCase comparison is broken. "```cs [Fact] public void Replace_IgnoreCase() { // Nope: ""abc"" Assert.Equal(""def"", ""abc"".Replace(""ABC"", ""def"", StringComparison.OrdinalIgnoreCase)); // Fine: ""def"" Assert.Equal(""def"", ""abc"".Replace(""ABC"", ""def"", StringComparison.InvariantCultureIgnoreCase)); Assert.Equal(""def"", ""abc"".Replace(""ABC"", ""def"", StringComparison.CurrentCultureIgnoreCase)); } [Fact] public void EndsWithHyphen() { // Nope: ""def"" Assert.Equal(""abc"", ""abc"".Replace(""abc\u00AD"", ""def"", StringComparison.OrdinalIgnoreCase)); } ``` Extracted from #1271. I haven't yet got a fix, I'm waiting for @tarekgh to check out the second issue" +18461 area-System.Collections "Test: System.Collections.Tests.Perf_List/Clear(size: 100000) failed with ""System.OutOfMemoryException""" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.Perf_List/Clear(size: 100000)` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at ExceptionExtensions.Unwrap(Exception ex) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170415.01 (Core Tests) Failing configurations: - suse.421.amd64 - x64-Debug - x64-Release - Ubuntu.1604.Amd64 - x64-Release - x64-Debug - Ubuntu.1404.Amd64 - x64-Release - x64-Debug - Debian.82.Amd64 - x64-Debug - Ubuntu.1610.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170415.01/workItem/System.Collections.Performance.Tests/analysis/xunit/System.Collections.Tests.Perf_List~2FClear(size:%20100000) +18462 area-System.Console "Tests under ""System.Console.Performance.Tests"" failed with ""System.IO.IOException""" "There is no test results generated under ""System.Console.Performance.Tests"" Configuration: OSX.1012.Amd64 Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170415.01/workItem/System.Console.Performance.Tests/wilogs ~~~ 2017-04-14 18:29:49,928: INFO: proc(54): run_and_log_output: Output: xUnit.net console test runner (64-bit .NET Core) 2017-04-14 18:29:49,928: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-04-14 18:29:49,929: INFO: proc(54): run_and_log_output: Output: 2017-04-14 18:29:50,018: INFO: proc(54): run_and_log_output: Output: Discovering: System.Console.Performance.Tests 2017-04-14 18:29:50,133: INFO: proc(54): run_and_log_output: Output: Discovered: System.Console.Performance.Tests 2017-04-14 18:29:50,169: INFO: proc(54): run_and_log_output: Output: Starting: System.Console.Performance.Tests 2017-04-14 18:29:50,411: INFO: proc(54): run_and_log_output: Output: [FATAL] System.IO.IOException 2017-04-14 18:29:50,412: INFO: proc(54): run_and_log_output: Output: System.IO.IOException : Too many open files 2017-04-14 18:29:50,416: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-04-14 18:29:50,511: INFO: proc(54): run_and_log_output: Output: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-04-14 18:29:50,512: INFO: proc(54): run_and_log_output: Output: at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-04-14 18:29:50,512: INFO: proc(54): run_and_log_output: Output: at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) 2017-04-14 18:29:50,512: INFO: proc(54): run_and_log_output: Output: at System.ConsolePal.OpenStandardError() 2017-04-14 18:29:50,512: INFO: proc(54): run_and_log_output: Output: at System.Console.<>c.b__27_0() 2017-04-14 18:29:50,512: INFO: proc(54): run_and_log_output: Output: at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target, Object& syncLock, Func`1 valueFactory) 2017-04-14 18:29:50,520: INFO: proc(54): run_and_log_output: Output: System.ConsoleTests.Perf_Console.OpenStandardOutput [FAIL] 2017-04-14 18:29:50,520: INFO: proc(54): run_and_log_output: Output: System.IO.IOException : Too many open files 2017-04-14 18:29:50,520: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-04-14 18:29:50,520: INFO: proc(54): run_and_log_output: Output: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-04-14 18:29:50,521: INFO: proc(54): run_and_log_output: Output: at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-04-14 18:29:50,521: INFO: proc(54): run_and_log_output: Output: at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) 2017-04-14 18:29:50,521: INFO: proc(54): run_and_log_output: Output: at System.ConsolePal.OpenStandardOutput() 2017-04-14 18:29:50,521: INFO: proc(54): run_and_log_output: Output: at System.ConsoleTests.Perf_Console.OpenStandardOutput() ~~~" +18463 area-System.IO "Test: System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile/CreateNew failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile/CreateNew(capacity: 10000)` has failed. System.IO.IOException : Too many open files Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateSharedBackingObjectUsingFile(MemoryMappedProtections protections, Int64 capacity) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(FileStream fileStream, String mapName, HandleInheritability inheritability, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(String mapName, Int64 capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability) at System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile.CreateNew(Int32 capacity) Build : Master - 20170415.01 (Core Tests) Failing configurations: - OSX.1012.Amd64 - x64-Release - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170415.01/workItem/System.IO.MemoryMappedFiles.Performance.Tests/analysis/xunit/System.IO.MemoryMappedFiles.Tests.Perf_MemoryMappedFile~2FCreateNew(capacity:%2010000) +18464 area-System.Collections ConcurrentQueue IsEmpty too slow? I have some hot-path production code that looks like this. The queue is _usually empty_. `if(!myConcurrentQueue.IsEmpty) { WorkItem item; if(myConcurrentQueue.TryDequeue(out item)) { DoWork(item); } }` Clearly the assumption is that IsEmpty is a faster than calling TryDequeue. I decided to test this assumption with writing a little microbenchmark the compares IsEmpty versus TryDequeue on an empty queue.. I was surprised to find the IsEmpty appears to take about _twice a long_ as TryDequeue. Given that to dequeue anything there is probably a check to find out if there is anything in the queue, there's no reason I can think of for IsEmpty to be slower. +18467 area-System.Diagnostics Fix process product code and tests for netfx Fixes #18262 Fixes #18470 Fixes #18471 Fixes #18472 Fixes #18473 @safern +18468 area-System.Linq Remove some dead code in S.L.Expressions LambdaCompiler Contributes to #11409 by removing coverage gaps that can never be covered. Each commit is relatively small, but in some cases the code that makes the removed code unreachable is quite far away from it, so probably best reviewed separately then squash if accepting. +18469 area-Infrastructure Visual Studio tests also running Unix tests "E.g. ``` xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Diagnostics.Process.Tests Discovered: System.Diagnostics.Process.Tests Starting: System.Diagnostics.Process.Tests System.Diagnostics.Tests.ProcessModuleTests.TestModulesContainsUnixNativeLibs [FAIL] Assert.Contains() Failure Not found: (filter expression) In value: d__34 [System.Diagnostics.ProcessModule (dotnet.exe), System.Diagnostics.ProcessModule (ntdll.dll), System.Diagnostics.ProcessModule (KERNEL32.DLL), System.Diagnostics.ProcessModule (KERNELBASE.dll), System.Diagnostics.ProcessModule (ucrtbase.dll), ...] Stack Trace: at System.Diagnostics.Tests.ProcessModuleTests.TestModulesContainsUnixNativeLibs() TestUserCredentialsPropertiesOnWindows: NetUserAdd failed: Access is denied System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_Redirects_NotSupported(std: 0) [FAIL] System.PlatformNotSupportedException : UseShellExecute must always be set to false. Stack Trace: at System.Diagnostics.ProcessStartInfo.set_UseShellExecute(Boolean value) at System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_Redirects_NotSupported(Int32 std) System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_Redirects_NotSupported(std: 1) [FAIL] System.PlatformNotSupportedException : UseShellExecute must always be set to false. Stack Trace: at System.Diagnostics.ProcessStartInfo.set_UseShellExecute(Boolean value) at System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_Redirects_NotSupported(Int32 std) System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_Redirects_NotSupported(std: 2) [FAIL] System.PlatformNotSupportedException : UseShellExecute must always be set to false. Stack Trace: at System.Diagnostics.ProcessStartInfo.set_UseShellExecute(Boolean value) at System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_Redirects_NotSupported(Int32 std) System.Diagnostics.Tests.ProcessStartInfoTests.Password_GetSetUnix_ThrowsPlatformNotSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.Password_GetSetUnix_ThrowsPlatformNotSupportedException() System.Diagnostics.Tests.ProcessStartInfoTests.Domain_GetSetUnix_ThrowsPlatformNotSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.Domain_GetSetUnix_ThrowsPlatformNotSupportedException() System.Diagnostics.Tests.ProcessStartInfoTests.PasswordInClearText_GetSetUnix_ThrowsPlatformNotSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.PasswordInClearText_GetSetUnix_ThrowsPlatformNotSupportedException() System.Diagnostics.Tests.ProcessStartInfoTests.UserName_GetSetUnix_ThrowsPlatformNotSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.UserName_GetSetUnix_ThrowsPlatformNotSupportedException() System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_SetAndGet_Unix [FAIL] System.PlatformNotSupportedException : UseShellExecute must always be set to false. Stack Trace: at System.Diagnostics.ProcessStartInfo.set_UseShellExecute(Boolean value) at System.Diagnostics.Tests.ProcessStartInfoTests.TestUseShellExecuteProperty_SetAndGet_Unix() System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentVariablesPropertyUnix [FAIL] System.ArgumentException : An item with the same key has already been added. Key: newkey2 Stack Trace: at System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(Object key) at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) at System.Collections.Specialized.StringDictionaryWrapper.Add(String key, String value) at System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentVariablesPropertyUnix() System.Diagnostics.Tests.ProcessStartInfoTests.LoadUserProfile_GetSetUnix_ThrowsPlatformNotSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.LoadUserProfile_GetSetUnix_ThrowsPlatformNotSupportedException() System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentProperty [FAIL] Assert.Equal() Failure  (pos 6) Expected: NewKey Actual: NewKey4  (pos 6) Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentProperty() System.Diagnostics.Tests.ProcessTests.MinWorkingSet_GetMacos_ThrowsPlatformSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: typeof(System.InvalidOperationException): No process is associated with this object. Stack Trace: at System.Diagnostics.Process.EnsureState(State state) at System.Diagnostics.Process.EnsureState(State state) at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) at System.Diagnostics.Process.GetProcessHandle(Int32 access) at System.Diagnostics.Process.GetWorkingSetLimits(IntPtr& minWorkingSet, IntPtr& maxWorkingSet) at System.Diagnostics.Process.EnsureWorkingSetLimits() at System.Diagnostics.Process.get_MinWorkingSet() at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass22_0.b__0() System.Diagnostics.Tests.ProcessTests.TestRootGetProcessById [FAIL] System.ArgumentException : Process with an Id of 1 is not running. Stack Trace: at System.Diagnostics.Process.GetProcessById(Int32 processId, String machineName) at System.Diagnostics.Process.GetProcessById(Int32 processId) at System.Diagnostics.Tests.ProcessTests.TestRootGetProcessById() System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows [SKIP] Condition(s) not met: \""ProcessPeformanceCounterEnabled\"" System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""machine\"") [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(String machineName) at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(String machineName) ----- Inner Stack Trace ----- at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""\\\\machine\"") [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(String machineName) at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(String machineName) ----- Inner Stack Trace ----- at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) System.Diagnostics.Tests.ProcessTests.MainWindowHandle_GetUnix_ThrowsPlatformNotSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessTests.MainWindowHandle_GetUnix_ThrowsPlatformNotSupportedException() System.Diagnostics.Tests.ProcessTests.MaxValueWorkingSet_GetSetMacos_ThrowsPlatformSupportedException [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: typeof(System.InvalidOperationException): No process is associated with this object. Stack Trace: at System.Diagnostics.Process.EnsureState(State state) at System.Diagnostics.Process.EnsureState(State state) at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) at System.Diagnostics.Process.GetProcessHandle(Int32 access) at System.Diagnostics.Process.GetWorkingSetLimits(IntPtr& minWorkingSet, IntPtr& maxWorkingSet) at System.Diagnostics.Process.EnsureWorkingSetLimits() at System.Diagnostics.Process.get_MaxWorkingSet() at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass19_0.b__0() System.Diagnostics.Tests.ProcessTests.TestWindowApisUnix [FAIL] Assert.Equal() Failure  (pos 0) Expected: Actual: C  (pos 0) Stack Trace: at System.Diagnostics.Tests.ProcessTests.TestWindowApisUnix() System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineUnix [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: typeof(System.InvalidOperationException): Couldn't connect to remote machine. Stack Trace: at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass79_0.b__0() System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameUnix_ThrowsPlatformNotSupportedException(machineName: \""machine\"") [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: typeof(System.InvalidOperationException): Couldn't connect to remote machine. Stack Trace: at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass72_0.b__0() System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameUnix_ThrowsPlatformNotSupportedException(machineName: \""\\\\machine\"") [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: typeof(System.InvalidOperationException): Couldn't connect to remote machine. Stack Trace: at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.GetProcesses(String machineName) at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass72_0.b__0() System.Diagnostics.Tests.ProcessTests.TestBasePriorityOnUnix [FAIL] Assert.Equal() Failure Expected: -11 Actual: 13 Stack Trace: at System.Diagnostics.Tests.ProcessTests.SetAndCheckBasePriority(ProcessPriorityClass exPriorityClass, Int32 priority) at System.Diagnostics.Tests.ProcessTests.TestBasePriorityOnUnix() System.Diagnostics.Tests.ProcessTests.TestHandleCount_OSX [FAIL] Assert.Equal() Failure Expected: 0 Actual: 418 Stack Trace: at System.Diagnostics.Tests.ProcessTests.TestHandleCount_OSX() System.Diagnostics.Tests.ProcessTests.TestUseShellExecute_Unix_Succeeds [FAIL] System.PlatformNotSupportedException : UseShellExecute must always be set to false. Stack Trace: at System.Diagnostics.ProcessStartInfo.set_UseShellExecute(Boolean value) at System.Diagnostics.Tests.ProcessTests.TestUseShellExecute_Unix_Succeeds() System.Diagnostics.Tests.ProcessThreadTests.TestStartTimeProperty_OSX [FAIL] Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessThreadTests.TestStartTimeProperty_OSX() Finished: System.Diagnostics.Process.Tests === TEST EXECUTION SUMMARY === System.Diagnostics.Process.Tests Total: 241, Errors: 0, Failed: 26, Skipped: 1, Time: 21.964s Press enter key to continue.../ ```" +18470 area-System.Diagnostics "Desktop: System.Diagnostics.Tests.ProcessModuleTests.TestModulesContainsDotnet failed with ""Xunit.Sdk.ContainsException""" Failed test: System.Diagnostics.Tests.ProcessModuleTests.TestModulesContainsDotnet MESSAGE: Assert.Contains() Failure Not found: (filter expression) In value: d__94 [System.Diagnostics.ProcessModule (xunit.console.exe), System.Diagnostics.ProcessModule (ntdll.dll), System.Diagnostics.ProcessModule (MSCOREE.DLL), System.Diagnostics.ProcessModule (KERNEL32.dll), System.Diagnostics.ProcessModule (KERNELBASE.dll), ...] +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Tests.ProcessModuleTests.TestModulesContainsDotnet() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessModuleTests.cs:line 35 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Diagnostics.Tests/ProcessModuleTests/TestModulesContainsDotnet/ +18471 area-System.Diagnostics "Desktop: System.Diagnostics.Tests.ProcessTests.TestInvalidPriorityClass failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Diagnostics.Tests.ProcessTests.TestInvalidPriorityClass Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Diagnostics.Tests/ProcessTests/TestInvalidPriorityClass/ MESSAGE: Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.ComponentModel.InvalidEnumArgumentException): The value of argument 'value' (96) is invalid for Enum type 'ProcessPriorityClass'.\r\nParameter name: value +++++++++++++++++++ STACK TRACE: at System.Diagnostics.Process.set_PriorityClass(ProcessPriorityClass value) at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass53_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessTests.cs:line 672 +18472 area-System.Diagnostics "Desktop: System.Diagnostics.Tests.ProcessTests.Process_StartWithDuplicatePassword failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Diagnostics.Tests.ProcessTests.Process_StartWithDuplicatePassword Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Diagnostics.Tests/ProcessTests/Process_StartWithDuplicatePassword/ Message: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.InvalidOperationException): The Process object must have the UseShellExecute property set to false in order to start a process as a user. ~~~ Stack Trace: ~~~ at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at System.Diagnostics.Tests.ProcessTests.<>c__DisplayClass129_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessTests.cs:line 1464 ~~~ +18473 area-System.Diagnostics "Desktop: Tests under ""System.Diagnostics.Tests.ProcessTests"" failed with ""Xunit.Sdk.EqualException""" Configuration: outerloop_netfx_windows_nt_debug ~~~ System.Diagnostics.Tests.ProcessTests.TestProcessName [FAIL] Assert.Equal() Failure Expected: RemoteExecutorConsoleApp Actual: xunit.console Stack Trace: at System.Diagnostics.Tests.ProcessTests.TestProcessName() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessTests.cs(685,0) System.Diagnostics.Tests.ProcessTests.TestMainModuleOnNonOSX [FAIL] Assert.Equal() Failure  (pos 0) Expected: dotnet.exe Actual: xunit.console.exe  (pos 0) Stack Trace: at System.Diagnostics.Tests.ProcessTests.TestMainModuleOnNonOSX() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessTests.cs(271,0) System.Diagnostics.Tests.ProcessTests.TestStartInfo [FAIL] Assert.Equal() Failure  (pos 0) Expected: D:\\j\\workspace\\outerloop_net---903ddde6\\b··· Actual: RemoteExecutorConsoleApp.exe  (pos 0) Stack Trace: at System.Diagnostics.Tests.ProcessTests.TestStartInfo() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessTests.cs(924,0) ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/consoleText +18474 area-System.Diagnostics Desktop: System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestMultipleConcurrentRequests failed Failed test: System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestMultipleConcurrentRequests Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Diagnostics.Tests/HttpHandlerDiagnosticListenerTests/TestMultipleConcurrentRequests/ Message: ~~~ The timestamp sent with the event doesn't look correct Expected: True Actual: False ~~~ Stack Trace: ~~~ at System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestMultipleConcurrentRequests() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.DiagnosticSource\tests\HttpHandlerDiagnosticListenerTests.cs:line 244 ~~~ +18475 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Tests.Asymmetric.TrivialTests.ValidKeySizeUsesProperty failed with ""System.NullReferenceException""" Failed test: System.Security.Cryptography.Encryption.Tests.Asymmetric.TrivialTests.ValidKeySizeUsesProperty Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Security.Cryptography.Encryption.Tests.Asymmetric/TrivialTests/ValidKeySizeUsesProperty/ Message: ~~~ System.NullReferenceException : Object reference not set to an instance of an object. ~~~ Stack Trace: ~~~ at System.Security.Cryptography.AsymmetricAlgorithm.set_KeySize(Int32 value) at System.Security.Cryptography.Encryption.Tests.Asymmetric.TrivialTests.ValidKeySizeUsesProperty() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Primitives\tests\AsymmetricAlgorithm\Trivial.cs:line 51 +18476 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Tests.Symmetric.TrivialTests.TestKey failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Security.Cryptography.Encryption.Tests.Symmetric.TrivialTests.TestKey Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Security.Cryptography.Encryption.Tests.Symmetric/TrivialTests/TestKey/ Message: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: (No exception was thrown) ~~~ Stack Trace: ~~~ at System.Security.Cryptography.Encryption.Tests.Symmetric.TrivialTests.TestKey() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Primitives\tests\SymmetricAlgorithm\Trivial.cs:line 120 ~~~ +18477 area-System.Security "Desktop: System.Security.Cryptography.Hashing.Tests.KeyedHashAlgorithmTest.SetKeyNull failed with ""System.NullReferenceException""" Failed test: System.Security.Cryptography.Hashing.Tests.KeyedHashAlgorithmTest.SetKeyNull Configuration: outerloop_netfx_windows_nt_debug Message: ~~~ System.NullReferenceException : Object reference not set to an instance of an object. ~~~ Stack Trace: ~~~ at System.Security.Cryptography.KeyedHashAlgorithm.set_Key(Byte[] value) at System.Security.Cryptography.Hashing.Tests.KeyedHashAlgorithmTest.SetKeyNull() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Primitives\tests\KeyedHashAlgorithmTests.cs:line 74 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Security.Cryptography.Hashing.Tests/KeyedHashAlgorithmTest/SetKeyNull/ +18478 area-System.Security "Desktop: System.Security.Cryptography.Hashing.Tests.HmacAlgorithmTest.TrivialDerivationThrows failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Security.Cryptography.Hashing.Tests.HmacAlgorithmTest.TrivialDerivationThrows Configuration: outerloop_netfx_windows_nt_debug Message: ~~~ Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) ~~~ Stack Trace: ~~~ at System.Security.Cryptography.Hashing.Tests.HmacAlgorithmTest.TrivialDerivationThrows() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Primitives\tests\HmacAlgorithmTest.cs:line 78 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Security.Cryptography.Hashing.Tests/HmacAlgorithmTest/TrivialDerivationThrows/ +18479 area-System.Security "Desktop: System.Security.Cryptography.Hashing.Tests.HmacAlgorithmTest.SetNullAlgorithmName failed with ""System.ArgumentNullException""" Failed test: System.Security.Cryptography.Hashing.Tests.HmacAlgorithmTest.SetNullAlgorithmName Configuration: outerloop_netfx_windows_nt_debug Message: ~~~ System.ArgumentNullException : Value cannot be null. Parameter name: name ~~~ Stack Trace: ~~~ at System.Security.Cryptography.CryptoConfig.CreateFromName(String name, Object[] args) at System.Security.Cryptography.HMAC.set_HashName(String value) at System.Security.Cryptography.Hashing.Tests.HmacAlgorithmTest.SetNullAlgorithmName() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Primitives\tests\HmacAlgorithmTest.cs:line 17 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/21/testReport/System.Security.Cryptography.Hashing.Tests/HmacAlgorithmTest/SetNullAlgorithmName/ +18480 area-System.Net Porting bug: NRE thrown in HttpListenerRequest.GetClientCertificateAsync "```cs [Fact] public async Task ClientCertificatError_GetNoCertificate_ReturnsExpected() { await GetRequest(null, (_, r) => { // Ooops! NRE var certificate = await r.GetClientCertificateAsync(); }); } private async Task GetRequest(string[] headers, Action requestAction) { using (HttpListenerFactory factory = new HttpListenerFactory()) using (Socket client = factory.GetConnectedSocket()) { client.Send(factory.GetContent(""POST"", ""text"", headers, true)); HttpListener listener = factory.GetListener(); HttpListenerContext context = await listener.GetContextAsync(); HttpListenerRequest request = context.Request; requestAction(client, request); } } ``` I have a fix" +18481 area-System.Threading ValueTask doesn't inline well None of the method builder or methods on ValueTask seem to inline very well > Inlinee: System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder\`1[System.Decimal].Create - value class System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder\`1 () Fail Reason: Native estimate for function size exceeds threshold. > Inlinee: System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder\`1[System.Decimal].get_Task - instance value class System.Threading.Tasks.ValueTask\`1 () Fail Reason: Native estimate for function size exceeds threshold. > Inlinee: System.Runtime.CompilerServices.ValueTaskAwaiter\`1[System.Decimal].GetResult - instance !0 () Fail Reason: Native estimate for function size exceeds threshold. > Inliner: TheAwaitingGame.Order+d__5.MoveNext - instance void () Inlinee: instance value class System.Threading.Tasks.ValueTask\`1 () Fail Reason: Native estimate for function size exceeds threshold. Using a [ternary check](https://github.com/mgravell/protobuf-net/pull/233) will give better results than a direct `await` e.g. `(task.IsCompleted) ? task.Result : await task;` Note: should be `IsCompletedSuccessfully` though the `Task.Status` path doesn't inline either https://github.com/dotnet/corefx/issues/16745#issuecomment-292728779 Should the no-wait sync path be marked with aggressive inlines? Or is the state machine going to automatically add more weight than the ternary check? /cc @stephentoub @AndyAyersMS +18482 area-System.Net Porting bug: HttpListenerRequest.Cookies throws a CookieException for invalid cookies, NETFX doesn't throw "```cs public static async Task GetClientCertificate_NoCertificate_ReturnsNull() { await GetRequest(new[] { ""cookie: name=value; domain=.domain.com"" }, (_, request) => { Assert.Empty(request.Cookies); }); } private static async Task GetRequest(string[] headers, Action requestAction) { using (HttpListenerFactory factory = new HttpListenerFactory()) using (Socket client = factory.GetConnectedSocket()) { client.Send(factory.GetContent(""POST"", ""text"", headers, true)); HttpListener listener = factory.GetListener(); HttpListenerContext context = await listener.GetContextAsync(); HttpListenerRequest request = context.Request; requestAction(client, request); } } ``` Netfx doesn't throw; any cookie with a non-empty name is added. Netcoreapp does throw /cc @davidsh @Priya91 " +18483 area-Infrastructure ConditionalFact/ConditionalTheory tests are skipped with` netfx Following test fails with `msbuild /T:BuildAndTest` but passes with `msbuild /T:BuildAndTest /P:TargetGroup=netfx`. The test isn't being run. ```cs public static bool AlwaysTrue { get; } = true; [ConditionalFact(nameof(AlwaysTrue))] public void Test() { Assert.False(true); } ``` +18485 area-Meta .NET Core Dependencies Nightmare "Hello, I have a .NET Core project with some net452 dependencies. As per MS documentation, a .NET Core app can run on top of net452 with no issues and indeed, I was able to get a working ,NET Core app by targeting net452. Now, I am having trouble using libraries targeted to .NET Core because some of them target netstandard1.3, some other target netcoreapp1.0 and so on, which causes incompatibility issues. This is the case with IdentityServer4 and AWS .NET Core libraries for instance, how am I suppose to use libraries if there are so many different flavors of the same "".NET Core"" apps. Is this something that can be resolved by changing some config in my project file or is this an MS design decision?" +18486 area-System.Net CookieParser doesn't parse cookies separated by ';' "```cs public static IEnumerable Cookies_TestData() { // Returns 2 objects in .NET Core. // Returns 3 objects in .NET Full framework and on Unix. yield return new object[] { ""cookie: name1=value1,name2=value2;name3=value3"", new CookieCollection() { new Cookie(""name1"", ""value1""), new Cookie(""name2"", ""value2""), new Cookie(""name3"", ""value3"") } }; } [Theory]//[ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [MemberData(nameof(Cookies_TestData))] public async Task Cookies_Get_ReturnsExpected(string cookieString, CookieCollection expected) { await GetRequest(""POST"", null, new[] { cookieString }, (_, request) => { Assert.Equal(expected.Count, request.Cookies.Count); for (int i = 0; i < expected.Count; i++) { Assert.Equal(expected[i].Name, request.Cookies[i].Name); Assert.Equal(expected[i].Value, request.Cookies[i].Value); } }); } private async Task GetRequest(string requestType, string query, string[] headers, Action requestAction, bool sendContent = true) { using (HttpListenerFactory factory = new HttpListenerFactory()) using (Socket client = factory.GetConnectedSocket()) { client.Send(factory.GetContent(requestType, query, sendContent ? ""Text"" : """", headers, true)); HttpListener listener = factory.GetListener(); HttpListenerContext context = await listener.GetContextAsync(); HttpListenerRequest request = context.Request; requestAction(client, request); } }` ```" +18488 area-System.Net Another batch of HttpListener tests and a product fix Contributes to #13618 Fixes #18480 Reveals #18482 and #18486 +18491 area-Meta Bulk updates of tests for AssertExtensions This is necessary because AOT builds can strip strings out of exceptions. +18493 area-System.Linq Compilation of custom System.Linq.Expressions.MemberBinding Creation of custom classes derived from `MemberBinding` is discouraged by the protected constructor being marked as obsolete. It is possible though. Upon compilation, if the `BindingType` is one of the values defined for the enum then both interpreter and compiler will throw an `InvalidCastException`. Otherwise the compiler will throw an `ArgumentException` while the interpreter will just ignore the binding. At the very least these should be consistent, but it seems more useful to throw the `ArgumentException` mentioned for one case above upon the call to `MemberBind` or `MemberInit` that the custom class was passed to. (Alternatively, making the constructor `internal` rather than `protected` would be better still, but a bigger change to the public API). +18495 area-System.Diagnostics DiagnosticSource: return packaging for UAP target UAP target was removed temporarily to build DiagnosticSource and publish it on nuget.org where UAP dependencies are missing (#18295). This change reverts it and returns UAP target to DiagnosticSource package. It fixes #18296 +18496 area-System.Diagnostics Logging for TestMultipleConcurrentRequests Trivial logging to see whether https://github.com/dotnet/corefx/issues/18474 is a little over 30sec or much worse. +18497 area-System.Reflection Proposal: MethodBase.Invoke(params object[]) ## Background When writing reflection-based code to invoke methods, it tends to be quite noisy because you have to write a bunch of `new object[] { }`s inline and cast to a more specific return type. This seems unnecessary because - Why not use `params object[]`? - Can't we make the method generic to avoid having to cast? ## Proposal ```cs namespace System.Reflection { public abstract partial class MethodBase : MemberInfo { // Existing API public object Invoke(object obj, object[] parameters); // Proposed API public TResult Invoke(object obj, params object[] parameters); } } ``` One other tiny pain point is that it seems kind of enigmatic to pass `null` as the first parameter to invoke a static method, so if the above looks OK we should add this API too: ```cs public TResult InvokeStatic(params object[] parameters); ``` ## Sample implementation ```cs public TResult Invoke(object obj, params object[] parameters) => (TResult)Invoke(obj, parameters); public TResult InvokeStatic(params object[] parameters) => Invoke(null, parameters); ``` ## Sample usage ```cs (bool)equalsMethod.Invoke(x, new object[] { y }) // becomes equalsMethod.Invoke(x, y) (int)compareMethod.Invoke(x, new object[] { y }) == 0 // becomes compareMethod.Invoke(x, y) == 0 ``` +18498 area-Infrastructure Re-enable package validation and clean up package content "Requires: https://github.com/dotnet/buildtools/pull/1441 This re-enables package validation and fixes all validation issues with packages. I've deleted packages for System.Net.Http and System.Runtime.InteropServices.RuntimeInformation which were absorbed by NETStandard. I've deleted packages for System.Runtime.WindowsRuntime.* since these are only supported by UWP and are in the framework package. Harvesting is now explicit so we'll no longer see ""magic"" happening around assets being automatically redistributed. This will fail CI until we have my buildtools change." +18500 area-System.Data Move AdapterUtil.cs to Common (System.Data) Each of Common, SqlClient and Odbc assemblies use an internal type `AdapterUtil` that actually has a lot of common pieces across the assemblies. I extracted those pieces and moved to [src/Common/src/System/Data/Common/](https://github.com/dotnet/corefx/tree/master/src/Common/src/System/Data/Common) (the folder where other common pieces for System.Data are located). We are trying to use corefx's System.Data in Mono where we have a single assembly System.Data.dll instead of 3 (Common, Odbc, SqlClient) so it's important for us to remove all duplicates (like I did in https://github.com/dotnet/corefx/pull/18297 and https://github.com/dotnet/corefx/pull/18281). A few notes: 1) Lots of members look unused anywhere - I didn't remove any of them, it's just an observation. 2) IsCatchableExceptionType and IsCatchableOrSecurityExceptionType look different and I am not sure which impl is the best (or they **should** be different): [Common](https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/AdapterUtil.cs#L193-L225), [SqlClient](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/Common/AdapterUtil.cs#L264-L283), [Odbc](https://github.com/dotnet/corefx/blob/master/src/System.Data.Odbc/src/Common/System/Data/Common/AdapterUtil.cs#L222-L261). I chose the Odbc one. 3) Exceptions in SqlClient don't use TraceException (DataCommonEventSource.Log) - just compare [this](https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/AdapterUtil.cs#L60) and [this](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/Common/AdapterUtil.cs#L99). /cc: @marek-safar +18501 area-System.Linq Throw on attempt to use custom MemberBinding type. Fixes #18493 +18502 area-System.Diagnostics Start Activity and inject headers in HttpHandlerDiagnosticListener on net46 This PR addresses additional comments to #18101. It aligns behavior of reflection-based `HttpHandlerDiagnosticListener` implemented in DiagnosticSource with [HttpClient instrumentation](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs) on corefx: - starts new Activity on outgoing request - injects Request-Id and Correlation-Context headers +18504 area-Serialization Add messages for PNSE in Serialization 1. Added messages for PNSE in DataContractSerializer. 2. SchemaExporter.Export currently throws PNSE. The PR is porting the implementation of the method from full framework. Fix https://github.com/dotnet/corefx/issues/17616 +18505 area-Serialization Directly reference DBNull Clean up some old reflection references to DBNull and statically reference it now. cc @sepidehMS @krwq @shmao +18506 area-System.IO Directory.GetCurrentDirectory() returns installation directory of Visual Studio 2017 in unit tests. @zuoanqh commented on [Mon Apr 17 2017](https://github.com/dotnet/standard/issues/304) +18509 area-System.Security Sanity check the DER encodings of values in certificate creation before writing them down. "Mainly this is ""check that DER lengths seem sensible, recursively"". Or, from a bug perspective, ""don't accept obviously bad input"" For example, the PublicKey object has EncodedParameters. This value is of ASN.1 type ANY OPTIONAL, so it can't be validated except as follows: * If the value is null, that's okay. * If the value is specified, the DER payload length should be correct. * If the tag has the constructed bit set, the contents should have a legal DER encoding. * The DER payload length should be correct. * If the tag has the constructed bit set, ... Additionally, places with expected tags (e.g. the returned AlgorithmIdentifier from X509SignatureGenerator) should check that they're getting those expected tags." +18510 area-System.Security Add missing members to SecurityContext Fix https://github.com/dotnet/corefx/issues/18077 +18512 area-Serialization DCJS_VerifyDateTimeForDateTimeFormat Fails on Unix. "DCJS_VerifyDateTimeForDateTimeFormat fails on Unix as the following method call serializes the object into different payloads, ``` SerializeAndDeserialize(new DateTime(1, 1, 1, 3, 58, 32), value, dcjsSettings); ``` On windows: baseline: `""\""03:58:32.00 a.m.\""""` On unix: actual output: `""\""03:58:32.00 a. m.\""""`" +18515 area-System.Security Add SecurityZone stub #11028 Depends on https://github.com/dotnet/coreclr/pull/11028 Fixes https://github.com/dotnet/corefx/issues/18078 Waiting for coreclr sync... +18516 area-Infrastructure GenFacadesTask should enable assembly resolver Per discussion with Wes and Eric, if GenFacadesTask is the only task to be run, it fails to apply a workaround (something like [this](https://github.com/dotnet/buildtools/blob/78260239e4db68ad5c2df774a27d5f9a54fd92e5/src/Microsoft.DotNet.Build.Tasks.net45/IsRestoreRequired.Desktop.cs)). As a result, it fails to load `System.IO.FileSystem` version 4.0.0.0. In my case, as I was working on type-forwarding for ValueTuple to desktop 4.7, I was just running `C:\repos\corefx\src\System.ValueTuple\src>msbuild /p:TargetGroup=net47`. And even though `C:\repos\corefx\Tools\net46` contained a `System.IO.FileSystem.dll`, there would be a failure to load because its version is 4.0.1.0. +18517 area-System.Reflection Remove tests that check inability to create ByRefs over Pointers I went back and forth on this but finally went down the route of: - Not a breaking change to make something work that didn't before. - There's nothing fundamentally wrong about talking about byrefs to byrefs or pointers - it's just that we don't support that combo in our runtimes. There's no need to enforce this limitation at every turn - if an app tries to get a TypeHandle or activate/instance one of these things, he'll get the exception. - We've been kicking ourselves for years for making Reflection so tied to the underlying runtime - don't want to add code and overhead to CoreRT that takes us back in that direction +18518 area-System.Runtime ValueTuple package uses pre-release package of net47 targeting pack Once a shipped package is available, the version in `external/netfx/netfx.depproj` should be updated. Relates to this change: https://github.com/dotnet/corefx/pull/18519 +18519 area-System.Runtime Adding type-forwards for ValueTuple to desktop 4.7 "@weshaggard @ericstj @AlexGhiondea for review. Fixes https://github.com/dotnet/corefx/issues/15175 I filed a follow-up issue (https://github.com/dotnet/corefx/issues/18518) to reference the shipped targeting pack instead of the pre-release one from myget. Do you have any tips on validation? So far, I inspected the produced package, and verified that it adds a ""net47"" folder under ""lib"" and ""ref"", and that it contains assemblies with type-forwards, and only referencing `mscorlib`. Ref folder before: ![image](https://cloud.githubusercontent.com/assets/12466233/25108070/29bf2d8c-2388-11e7-8596-e81bfe7ad438.png) And after change: ![image](https://cloud.githubusercontent.com/assets/12466233/25108122/7c6d8aba-2388-11e7-8747-be4047f430e3.png) Lib folder before: ![image](https://cloud.githubusercontent.com/assets/12466233/25108089/46442dae-2388-11e7-9aca-e45b71d12a97.png) And after change; ![image](https://cloud.githubusercontent.com/assets/12466233/25108103/643ddb16-2388-11e7-91de-096a34490c1b.png) " +18520 area-System.IO File.GetAttributes is inconsistent when returning attributes for a hidden directory "When running on macOS or linux (Ubuntu 16.04), if `File.GetAttributes` is used to return the attributes of a hidden directory, the results are different depending if the argument contains a trailing slash or not: ```csharp class Program { static void Main(string[] args) { Directory.CreateDirectory("".foo""); Console.WriteLine(File.GetAttributes("".foo"")); //prints ""Hidden, Directory"" Console.WriteLine(File.GetAttributes("".foo/"")); //prints ""Directory"" } } ``` I would expect the trailing slash to not make a difference here, and `Hidden` should be returned in both cases. ``` dotnet --info .NET Command Line Tools (1.0.1) Product Information: Version: 1.0.1 Commit SHA-1 hash: 005db40cd1 Runtime Environment: OS Name: ubuntu OS Version: 16.04 OS Platform: Linux RID: ubuntu.16.04-x64 Base Path: /usr/share/dotnet/sdk/1.0.1 ``` ``` dotnet --info .NET Command Line Tools (1.0.1) Product Information: Version: 1.0.1 Commit SHA-1 hash: 005db40cd1 Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/1.0.1 ```" +18521 area-System.IO File.Move throws IOException on macOS when rename differs only by case "If `File.Move` is used on macOS to rename a file that differs only by case, it fails: ```csharp class Program { static void Main(string[] args) { File.WriteAllText(""foo.txt"", ""test""); File.Move(""foo.txt"", ""Foo.txt""); //this throws } } ``` This results in the following exception: ``` Unhandled Exception: System.IO.IOException: The file '/Users/Brandon/Code/repro2/Foo.txt' already exists. at System.IO.UnixFileSystem.MoveFile(String sourceFullPath, String destFullPath) at System.IO.File.Move(String sourceFileName, String destFileName) at repro2.Program.Main(String[] args) in /Users/Brandon/Code/repro2/Program.cs:line 11 ``` This same program does not throw when run on Windows or linux, and instead results in the renamed `Foo.txt` on disk. I would expect this to behave consistently across all platforms. Using `mv foo.txt Foo.txt` on macOS renames the file correctly, so I would expect the same thing to be possible via `File.Move`. ``` dotnet --info .NET Command Line Tools (1.0.1) Product Information: Version: 1.0.1 Commit SHA-1 hash: 005db40cd1 Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/1.0.1 ``` " +18522 area-System.Security Adding missing ECDsaCng members Fixes https://github.com/dotnet/corefx/issues/17163 @danmosemsft See open question in linked issue +18523 area-System.Net Increase timeout for HTTP Cancelation tests Fix https://github.com/dotnet/corefx/issues/17591 +18525 area-System.Data Make System.Data more mono-friendly "A bunch of small mono-specific changes (mono is now able to use 100% of System.Data.Common and System.Data.SqlClient codebase with this PR + https://github.com/dotnet/corefx/pull/18500). 1. Move DbConnectionStringBuilderDescriptor class to a separate file from DbConnectionStringCommon.cs (in order to ignore the rest of the DbConnectionStringCommon.cs in mono). 2. Init `TimeSpan ts` with a default value (see https://github.com/dotnet/corefx/pull/17432). 3. Remove redundant `System.Data.Common.` [from here](https://github.com/dotnet/corefx/compare/master...EgorBo:make-system-data-mono-friendly?expand=1#diff-2572b94a53d7bbf4d82ea0f556f135e0L240) (mono will resolve it as System.Collections.ObjectModel.ReadOnlyCollection<>). 4. Make DbConnectionOptions `partial` and put mono-specific behavior near, with ["".Mono"" suffix](https://github.com/dotnet/corefx/pull/16190#issuecomment-280095549). /cc: @marek-safar " +18526 area-Infrastructure [1.0] Stabalize packages for 1.0.5 servicing release cc @gkhanna79 @leecow @ericstj @eerhardt +18527 area-Infrastructure [1.1] Stablize package for 1.1.2 servicing release cc @gkhanna79 @leecow @ericstj @eerhardt +18528 area-System.Runtime ValueTuple throws for null comparer, unlike other BCL APIs Continuing from https://github.com/dotnet/corefx/issues/18432. You would expect this to succeed, but it throws `NullReferenceException`: ```c# ((IStructuralEquatable)(1, 2)).Equals((1, 2), null) ``` I'll quite often take advantage of the fact that all BCL APIs use `EqualityComparer.Default` when you pass null, and chain constructors and other methods with the parameter `IEqualityComparer comparer = null`. If my own constructor or extension method takes `IEqualityComparer comparer = null`, I assume that I can pass that into the BCL method. It's not intuitive to make it the call site's responsibility to check for null and pass `EqualityComparer.Default` *or* call one or the other BCL overload depending whether `comparer = null`. It's not critical since the workaround is to pass `comparer ?? EqualityComparer.Default` instead of `comparer`. This is an API gotcha that may go unnoticed until code is in the field though. [`ValueTuple<*>.IStructuralEquatable.Equals`][1] and [`ValueTuple<*>.IStructuralComparable.CompareTo`][2] have no null comparer check. If it followed the convention set by all other BCL methods, it would use `EqualityComparer.Default` if you pass null. [`Array.IStructuralEquatable.Equals`][3] and [`Array.IStructuralComparable.CompareTo`][4], and [`Tuple<*>.IStructuralEquatable.Equals`][5] and [`Tuple<*>.IStructuralComparable.CompareTo`][6] have the same problem. They are in coreclr. Should I open an issue over there? [1]: https://github.com/dotnet/corefx/blob/124944c13686fd83b2cdaa01e7e94e629c4472f3/src/System.ValueTuple/src/System/ValueTuple/ValueTuple.cs#L335-L342 [2]: https://github.com/dotnet/corefx/blob/124944c13686fd83b2cdaa01e7e94e629c4472f3/src/System.ValueTuple/src/System/ValueTuple/ValueTuple.cs#L371-L382 [3]: https://github.com/dotnet/coreclr/blob/e0b8c96334016770680d64fc83a8e7dbdeb657ee/src/mscorlib/src/System/Array.cs#L698-L731 [4]: https://github.com/dotnet/coreclr/blob/e0b8c96334016770680d64fc83a8e7dbdeb657ee/src/mscorlib/src/System/Array.cs#L669-L696 [5]: https://github.com/dotnet/coreclr/blob/e0b8c96334016770680d64fc83a8e7dbdeb657ee/src/mscorlib/src/System/Tuple.cs#L124-L136 [6]: https://github.com/dotnet/coreclr/blob/e0b8c96334016770680d64fc83a8e7dbdeb657ee/src/mscorlib/src/System/Tuple.cs#L143-L155. +18529 area-System.Security Remove System.Security.Cryptography.Native Fixes: https://github.com/dotnet/corefx/issues/13124 cc: @bartonjs There is also bunch of files in here: `src/Common/src/Interop/Unix/System.Security.Cryptography.Native` but they seem to be used by few projects i.e. `System.Security.Cryptography.X509Certificates`. I took a quick attempt at removing them but they seem to be needed and I didn't find any good substitutes - please let me know if we really care about removing those (I think might be worth post 2.0 but wouldn't prioritize this right now) Misunderstood the issue. I'm also not sure if I need to do anything special for removing the package. Currently I'm mostly interested if this will pass on all of the OSes. +18530 area-System.Security AsymmetricAlgorithm.{To|From}XmlString throwing wrong exception type https://github.com/dotnet/corefx/blob/88ec4ba8432c1444fc43ecba5bd6d70f3d41d103/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/AsymmetricAlgorithm.cs#L65-L73 ToXmlString/FromXmlString are throwing NotImplementedException. They should throw a PlatformNotSupportedException, with a message. +18531 area-System.Linq Use hashtable path if S.L.Expressions Switch method is string.Equals The `string.Equals(string, string)` method has the same behaviour as the default equality operator, so the optimised path taken for that default equality operator is just as applicable, so use it. +18532 area-System.Runtime Tlbattributes Not strictly required for net standard 2.0 but nice to have for tlbimp created dll to not have dangling references. This is the same PR as https://github.com/dotnet/coreclr/pull/10975 but done in corefx repo. @jkotas @danmosemsft PTAL +18533 area-System.Linq Fill some testing gaps in S.L.Expressions compilation. Contributes to #11409 +18535 area-System.Globalization Fix S.G.Extensions tests for netfx @safern again I see the failures in MC but for some reason don't find issues for them https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170418.01/workItem/System.Globalization.Extensions.Tests +18537 area-Serialization Fix XsPerformanceTest. XmlSerializer does not support Dictionary type. The fix is to skip DictionaryOfSimpleType for XmlSeriazlier. Fix #18249. +18538 area-Serialization DataContractJsonSerializerTests.DCJS_VerifyDateTimeForFormatStringDCJsonSerSetting Fails on others OS "DCJS_VerifyDateTimeForFormatStringDCJsonSerSetting pass on windows and osx, fails on others OS as the following method call serializes the object into different payloads, `SerializeAndDeserialize(value, baseline, dcjsSettings);` On windows and osx: baseline: `""\""\\/Date(1291190400000{timeZoneString})\\/\""""` On others os: actual output: `""\""\\/Date(1291161600000{timeZoneString})\\/\""""`" +18539 area-Serialization DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings Fails on Ubuntu "DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings fails on Ubuntu as the following method call serializes the object into different payloads, `SerializeAndDeserialize(jsonTypes.DT_List, expected_DT_list, dcjsSettings);` On windows: baseline: `""[\""03:58:32.00 a.m.\"",\""12:00:00.00 a.m.\"",\""12:00:00.00 a.m.\"",\""03:58:32.00 a.m.\""]""; ` On ubuntu: actual output: `""[\""03:58:32.00 a. m.\"",\""12:00:00.00 a. m.\"",\""12:00:00.00 a. m.\"",\""03:58:32.00 a. m.\""]"" `" +18540 area-System.Memory "Test: System.SpanTests.SpanTests/CopyToLargeSizeTest failed with ""System.OverflowException""" Opened on behalf of @Jiayili1 The test `System.SpanTests.SpanTests/CopyToLargeSizeTest(bufferSize: 4294967296)` has failed. System.OverflowException : Arithmetic operation resulted in an overflow. Stack Trace: at System.IntPtr.op_Explicit(Int64 value) at System.SpanTests.SpanTests.CopyToLargeSizeTest(Int64 bufferSize) Build : Master - 20170418.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - x86-Debug - x86-Release - Windows.7.Amd64 - x86-Debug - x86-Release - Windows.81.Amd64 - x86-Debug - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170418.01/workItem/System.Memory.Tests/analysis/xunit/System.SpanTests.SpanTests~2FCopyToLargeSizeTest(bufferSize:%204294967296) +18541 area-System.ComponentModel Improved readability Using pattern matching +18542 area-System.ComponentModel "Test: System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests/Validate_Indexer_ThrowsTargetParameterCountException_Netfx failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests/Validate_Indexer_ThrowsTargetParameterCountException_Netfx` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.Reflection.TargetParameterCountException): Parameter count mismatch. Stack Trace: at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) at System.ComponentModel.DataAnnotations.CompareAttribute.IsValid(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests.<>c__DisplayClass5_0.b__0() in E:\A\_work\93\s\corefx\src\System.ComponentModel.Annotations\tests\CompareAttributeTests.cs:line 50 Build : Master - 20170418.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release - x86-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170418.01/workItem/System.ComponentModel.Annotations.Tests/analysis/xunit/System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests~2FValidate_Indexer_ThrowsTargetParameterCountException_Netfx +18543 area-System.IO "Test: System.IO.Pipes.Tests.NamedPipeTest_CreateServer/Windows_CreateFromAlreadyBoundHandle_Throws_ArgumentException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.NamedPipeTest_CreateServer/Windows_CreateFromAlreadyBoundHandle_Throws_ArgumentException(direction: In)` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.ApplicationException): The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) Stack Trace: at System.Threading.ThreadPool.BindIOCompletionCallbackNative(IntPtr fileHandle) at System.Threading.ThreadPool.BindHandle(SafeHandle osHandle) at System.IO.Pipes.PipeStream.InitializeHandle(SafePipeHandle handle, Boolean isExposed, Boolean isAsync) at System.IO.Pipes.NamedPipeServerStream..ctor(PipeDirection direction, Boolean isAsync, Boolean isConnected, SafePipeHandle safePipeHandle) at System.IO.Pipes.Tests.NamedPipeTest_CreateServer.<>c__DisplayClass17_1.b__0() in E:\A\_work\93\s\corefx\src\System.IO.Pipes\tests\NamedPipeTests\NamedPipeTest.CreateServer.cs:line 227 Build : Master - 20170418.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release - x86-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170418.01/workItem/System.IO.Pipes.Tests/analysis/xunit/System.IO.Pipes.Tests.NamedPipeTest_CreateServer~2FWindows_CreateFromAlreadyBoundHandle_Throws_ArgumentException(direction:%20In) +18544 area-System.IO "Test: System.IO.Pipes.Tests.NamedPipeTest_Simple_ServerInOutRead_ClientInOutWrite/CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.NamedPipeTest_Simple_ServerInOutRead_ClientInOutWrite/CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOException` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IOException)\r Actual: typeof(System.OperationCanceledException): The operation was canceled. Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Pipes.PipeStream.EndRead(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170418.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release - x86-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170418.01/workItem/System.IO.Pipes.Tests/analysis/xunit/System.IO.Pipes.Tests.NamedPipeTest_Simple_ServerInOutRead_ClientInOutWrite~2FCancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOException +18545 area-System.IO "Test: System.IO.Tests.StreamWriterWithBufferedStream_WriteTests/NullNewLineAsync failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.StreamWriterWithBufferedStream_WriteTests/NullNewLineAsync` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.IO.StreamWriter.d__55.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.IO.Tests.WriteTests.d__12.MoveNext() in E:\A\_work\93\s\corefx\src\System.IO\tests\StreamWriter\StreamWriter.WriteTests.cs:line 206 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170418.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release - x86-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170418.01/workItem/System.IO.Tests/analysis/xunit/System.IO.Tests.StreamWriterWithBufferedStream_WriteTests~2FNullNewLineAsync +18546 area-System.IO "Desktop: System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ReadModeToByte_Accepted failed with ""System.IO.IOException""" Failed test: System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ReadModeToByte_Accepted Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/testReport/System.IO.Pipes.Tests/AnonymousPipeTest_Specific/ReadModeToByte_Accepted_serverDirection__Out__clientDirection__In_/ MESSAGE: ~~~ System.IO.IOException : The handle is invalid. ~~~ STACK TRACE: ~~~ at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Pipes.PipeStream.UpdateReadMode() at System.IO.Pipes.PipeStream.get_ReadMode() at System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ReadModeToByte_Accepted(PipeDirection serverDirection, PipeDirection clientDirection) in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Specific.cs:line 169 ~~~ +18547 area-System.Globalization "Desktop: System.Globalization.Tests.StringNormalizationTests.IsNormalized_Invalid failed with ""Xunit.Sdk.ThrowsException""" Failed tests: System.Globalization.Tests.StringNormalizationTests.IsNormalized_Invalid System.Globalization.Tests.StringNormalizationTests.Normalize_Invalid Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/testReport/System.Globalization.Tests/StringNormalizationTests/IsNormalized_Invalid/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentNullException) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.StringNormalizationExtensions.IsNormalized(String value) in D:\j\workspace\outerloop_net---903ddde6\src\System.Globalization.Extensions\src\System\StringNormalizationExtensions.netfx.cs:line 11 at System.Globalization.Tests.StringNormalizationTests.<>c.b__1_3() in D:\j\workspace\outerloop_net---903ddde6\src\System.Globalization.Extensions\tests\Normalization\StringNormalizationTests.cs:line 34 ~~~ +18548 area-System.Xml "Desktop: System.Xml.Tests.TCValidateElement.StringPassedToValidateEndElementDoesNotSatisfyIdentityConstraints failed with ""Xunit.Sdk.EqualException""" Failed test: System.Xml.Tests.TCValidateElement.StringPassedToValidateEndElementDoesNotSatisfyIdentityConstraints Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/testReport/System.Xml.Tests/TCValidateElement/StringPassedToValidateEndElementDoesNotSatisfyIdentityConstraints/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 1 Actual: 2 ~~~ STACK TRACE: ~~~ at System.Xml.Tests.TCValidateElement.StringPassedToValidateEndElementDoesNotSatisfyIdentityConstraints() in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSchema\XmlSchemaValidatorApi\ValidateElement.cs:line 507 ~~~ +18549 area-System.Threading "Desktop: System.Threading.Tasks.Tests.CancellationTokenTests.TokenSourceDispose_Negative failed with """"" Failed test: System.Threading.Tasks.Tests.CancellationTokenTests.TokenSourceDispose_Negative Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/testReport/System.Threading.Tasks.Tests/CancellationTokenTests/TokenSourceDispose_Negative/ MESSAGE: ~~~ System.ObjectDisposedException : The CancellationTokenSource has been disposed. ~~~ STACK TRACE: ~~~ at System.Threading.CancellationTokenSource.ThrowObjectDisposedException() at System.Threading.CancellationTokenSource.InternalRegister(Action`1 callback, Object stateForCallback, SynchronizationContext targetSyncContext, ExecutionContext executionContext) at System.Threading.CancellationToken.Register(Action`1 callback, Object state, Boolean useSynchronizationContext, Boolean useExecutionContext) at System.Threading.CancellationToken.Register(Action callback) at System.Threading.Tasks.Tests.CancellationTokenTests.TokenSourceDispose_Negative() in D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\CancellationTokenTests.cs:line 198 ~~~ +18550 area-System.Threading "Desktop: Tests under ""System.Threading.Tasks.Tests.UnwrapTests"" failed with ""Xunit.Sdk.SameException""" Failed tests: System.Threading.Tasks.Tests.UnwrapTests.NonGeneric_Completed_Completed System.Threading.Tasks.Tests.UnwrapTests.Generic_Completed_Completed Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/consoleText ~~~ System.Threading.Tasks.Tests.UnwrapTests.NonGeneric_Completed_Completed(inner: Task { Status = RanToCompletion }) [FAIL] Assert.Same() Failure Expected: Task { Status = RanToCompletion } Actual: Task { Status = RanToCompletion } Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\UnwrapTests.cs(33,0): at System.Threading.Tasks.Tests.UnwrapTests.NonGeneric_Completed_Completed(Task inner) System.Threading.Tasks.Tests.UnwrapTests.Generic_Completed_Completed(inner: Task { Status = RanToCompletion }) [FAIL] Assert.Same() Failure Expected: Task { Status = RanToCompletion } (System.Threading.Tasks.Task`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]) Actual: Task { Status = RanToCompletion } (System.Threading.Tasks.UnwrapPromise`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]) Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\UnwrapTests.cs(48,0): at System.Threading.Tasks.Tests.UnwrapTests.Generic_Completed_Completed(Task`1 inner) ~~~ +18551 area-System.Threading "Desktop: Tests under ""System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests"" failed with ""Xunit.Sdk.NotEqualException""" Failed tests: System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.ViaWhenAny System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.ViaUnwrap System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.ViaWhenAll Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/testReport/System.Threading.Tasks.Tests/RunContinuationsAsynchronouslyTests/ViaWhenAny_useRunContinuationsAsynchronously__True_/ MESSAGE: ~~~ Assert.NotEqual() Failure Expected: Not True Actual: True ~~~ STACK TRACE: ~~~ at System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.<>c__DisplayClass4_1.b__1(Task _) in D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\Task\RunContinuationsAsynchronouslyTests.cs:line 54 at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.<>c__DisplayClass4_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\Task\RunContinuationsAsynchronouslyTests.cs:line 60 at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.Run(Boolean useRunContinuationsAsynchronously, Func`2 getIntermediateContinuation) in D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\Task\RunContinuationsAsynchronouslyTests.cs:line 63 at System.Threading.Tasks.Tests.RunContinuationsAsynchronouslyTests.ViaWhenAny(Boolean useRunContinuationsAsynchronously) in D:\j\workspace\outerloop_net---903ddde6\src\System.Threading.Tasks\tests\Task\RunContinuationsAsynchronouslyTests.cs:line 40 ~~~ +18552 area-System.Net There is no TcpClient(string hostname, int port) in .Net Core 1.1.0 I followed below link to try TcpClient, but there is no TcpClient(string hostname, int port) in current version of System.Net.Sockets. [TcpClient Class](https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient?view=netcore-1.1.0). It seems TcpClient(string hostname, int port) are defined in [https://github.com/dotnet/corefx/blob/df579d8531104524aeadd2377a12de67f256545e/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs](https://github.com/dotnet/corefx/blob/df579d8531104524aeadd2377a12de67f256545e/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs). Could you share any information about this issue? Thanks +18553 area-Serialization Used to be portable library test, covered XmlAttributeOverrides. @huanwu, @shmao, @zhenlan, please help review the code. +18554 area-System.Net Reenabled dns lookup tests Fixes https://github.com/dotnet/corefx/issues/4002 +18556 area-System.Net Replace IPAddress implementation with managed implementation on Unix We have several bugs where different platforms parse IP addresses with different rules, different handling of corner cases, etc. To address this, I'm switching the Unix implementation to be entirely managed, such that parsing strings to IPAddress and rendering IPAddress to strings is handled in managed code without any P/Invokes. This PR: - Ports desktop's IPv4AddressHelper and IPv6AddressHelper to core. I made as few changes as possible to these in order to get things to work, but I did make a few changes in order to fix some bugs, e.g. IPv6AddressHelper's validation routines were letting through some invalid addresses (e.g. nothing after a closing bracket was being validated, scope ID overflow wasn't being validated, etc.) - Replaces IPAddressPal.Unix.cs with IPAddressPal.Managed.cs. I left in place the current PAL layer, but in the future we could easily remove the PAL entirely and just use the managed implementation (I tried compiling IPAddressPal.Managed.cs into the Windows build, and it builds and tests fine. - The one place I did remove the PAL entirely was for IPAddressParser.IPv4AddressToString: there's no point in calling out to native code for that, so I put a managed implementation in place across the board. - I didn't spent a lot of time on performance, but I did remove some of the aggregious things that were happening, e.g. we were allocating a new StringBuilder every time we did IPAddress.ToString, we were allocating byte[]s while parsing unnecessarily, etc. - I consolidated some of the existing test cases into theories and added a bunch more test cases. This revealed other bugs on Unix, which I also addressed. cc: @geoffkizer, @Priya91, @davidsh, @CIPop, @pgavlin Fixes https://github.com/dotnet/corefx/issues/11843 (and some other bugs for which we don't have issues) +18557 area-System.Xml Fix XSLT test failures on Desktop Fixes Desktop failures in XslCompiledTransform and XslTransform test projects. cc: @danmosemsft @krwq FYI: @safern +18559 area-Serialization Old Serialization design is back but it needs refactoring. "The [Serializable] is back (I don't need it since I think it is as useless as a generic in-depth Clone method) but fine. Howerver, I have one major design concern. Current design forces us to store transient serialization data in the object itself. It is awful by design and, IMO, defeats the ""simple-safe-easy-to-use-principle"" of the API: - It is not obvious that storing this transient sate should be the way to go (even for beginners, it hurts). - Failing to set this state to null in OnDeserialization (or OnDeserialized ""event') will lead to memory leaks. This will happen for sure. - Understanding OnDeserialized event vs. IDeserializationCallback.OnDeserialization is... fun but not as much as the SafeSerializationManager... Since I understand the "".Net Framework API surface compatibility"" goal, I think we (the .Net community at large) are missing here a great opportunity to fix what is clearly a bad design option. Is there any issue with the following approach? 1 - Offer a way to the deserialization ctor to store a transient state object. - Thanks to a new SetDeserialiazationState method on the StreamingContext? - Ouch! it's a struct that cannot be changed/extended... let's handle another deserialization ctor with an enhanced StreamingContext or one new parameter. 2 - Give back this object to the OnDeserialization method. - Thanks to a new IDeserializationStateCallback may be? - And, may be also, the OnDeserialized event could allow a new ""object state"" in its signature (since this one is more ""duck typed"". The ObjectManager should be able to manage this transient state correctly. Am I missing something here? I think so... SafeSerialization introduce other complexities. And the attribute/event approach is better than the potentially virtual OnDeserialization method. Again, am I missing something here? Are there hidden/secret plans to handle this more correctly? I guess I'm not the only one that feel a little bit sad to see those stuff coming back into the clean .Net Core code base... " +18560 area-System.Net System.Net.Http.WinHttpHandler not respecting request versions explicitly targeting http/2 "In WinHttpHandler.cs the if block on line 792 doesn't use HTTP/2 when the request message version is explicitly set. It currently just defaults to the WinHTTP default for sending the request. Change: ``` // Try to use the requested version if a known/supported version was explicitly requested. // Otherwise, we simply use winhttp's default. string httpVersion = null; if (state.RequestMessage.Version == HttpVersion.Version10) { httpVersion = ""HTTP/1.0""; } else if (state.RequestMessage.Version == HttpVersion.Version11) { httpVersion = ""HTTP/1.1""; } ``` To: ``` string httpVersion = null; if (state.RequestMessage.Version == HttpVersion.Version10) { httpVersion = ""HTTP/1.0""; } else if (state.RequestMessage.Version == HttpVersion.Version11) { httpVersion = ""HTTP/1.1""; } else if(state.RequestMessage.Version == HttpVersion.Version20) { httpVersion = ""HTTP/2"" } ```" +18564 area-System.Linq Free S.L.Expressions.Compiler.CompilerScope.Storage locals when possible The separate `GetNamedLocal` -seems to exist to possibly write to a `DebugInfoGenerator`, and that feature not used. Using `GetLocal` allows the local to be reused when the scope finishes, so do so. +18565 area-System.IO Expose the ExternalAttributes field in ZipArchive The ExternalFileAttributes field of a ZipArchiveEntry is currently hidden within the implementation and not accessible. This has been fine in the Windows world since it's not used but it is used by Unix's zip/unzip programs to store file permissions of an entry. As it currently stands, there is no way to carry Unix RWX permissions within a zip, so at unzip time the unzipper has to guess at permissions and manually chmod the entries. This PR simply exposes the raw field so that it may be used in any circumstance that requires access to the field. Tests are added to ensure that this field is set, read, and roundtrips properly with zips created from other common programs which use the field. Note: Unix `unzip` doesn't apply permissions in the external file attributes field of a zip produced on Windows. So if you modify the externalfileattributes of a zip on Windows, `unzip` will use the defaults instead of what is set in the field. This isn't easily resolvable on our side since the platformmadeby byte determines a number of other things that we don't want to mess with (e.g. file name validity), so it would be unwise to lie about the platform on which the zip was written. resolves https://github.com/dotnet/corefx/issues/17067 cc: @eerhardt @danmosemsft @stephentoub +18567 area-Infrastructure Add .NET Framework 4.7 support to NETStandard.Library.NETFramework package We need a separate build of both ref (shims.proj so that it unifies with ValueTuple in mscorlib) and lib to support net47. Without that we'd have type-conflicts at compile-time. cc @ericstj +18568 area-System.Net Re-enable dual-mode socket tests that were disabled on Linux\Mac We should re-enable tests that were disabled on Linux\Mac. The tests would randomly fail because of the way that port allocation is different than on Windows. On Linux\Mac, when asking for an available free port, the returned port number is a random unused port. On Windows, it is incremental and eventually rolls over. These tests are negative tests that connect to a V4 port and then send\listen on a V6 port (or vise-versa) of the same number expecting an unused port and thus failure case. However, in Linux\Mac there is a chance that the port is active instead of unused, causing the test to succeed, and\or interfering with a 'good' test. The port may be active on Windows too, causing similar problems, but the odds are much less as any given test run should not have active ports open that longs. Two options to re-enable these tests: 1) Enable a test mode where a given test is flagged an runs serially 2) Move the tests to a new assembly with the CollectionBehavior attribute (DisableTestParallelization=true, MaxParallelThreads=1) For these to work, all other tests should be done running, including tests in other assemblies (at least those tests which use sockets). An alternative way to re-enable these tests is to keep them in the current assembly, but change the logic to something like this to preserve the original intent of making sure the socket is isn't 'dual mode': 1) Bind to address family with port 0 so we get unused port 2) Bind to the other address family + same port 3) The bind should succeed (otherwise retry by going back to step 1) 4) Unbind (so we can do the receive on it) 5) Do the actual receive on that unbound port 6) Should fail (as these tests are negative tests) This alternative approach will increase reliability but there is a small chance between 4 and 5 another test grabbed that port. However, if 3 succeeds then it probably proves that the socket wasn't dual mode because you can't bind to the same port + family twice; thus perhaps the test can stop there and not include 4-6. See issues #16548, #9017, #13213, #17362, #17154, #13967 Tests that were disabled below, located in DualModeSocketTest.cs. Note history should be checked for each of the commits as there are cases of Linux vs. Mac differences in the original test code which needs to be accounted for when the tests are enabled again. https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs ``` DualModeConnect_IPAddressListToHost_Throws BeginAcceptV6BoundToSpecificV4_CantConnect BeginAcceptV4BoundToSpecificV6_CantConnect BeginAcceptV6BoundToAnyV4_CantConnect AcceptAsyncV6BoundToSpecificV4_CantConnect AcceptAsyncV4BoundToSpecificV6_CantConnect AcceptAsyncV6BoundToAnyV4_CantConnect SendToV4IPEndPointToV6Host_NotReceived SendToV6IPEndPointToV4Host_NotReceived SendToAsyncV4IPEndPointToV6Host_NotReceived SendToAsyncV6IPEndPointToV4Host_NotReceived ReceiveMessageFromV6BoundToAnyV4_NotReceived ReceiveFromV6BoundToSpecificV4_NotReceived ReceiveFromV4BoundToSpecificV6_NotReceived ReceiveFromV6BoundToAnyV4_NotReceived BeginReceiveFromV6BoundToSpecificV4_NotReceived BeginReceiveFromV4BoundToSpecificV6_NotReceived BeginReceiveFromV6BoundToAnyV4_NotReceived ReceiveMessageFromV6BoundToSpecificV4_NotReceived ReceiveMessageFromV4BoundToSpecificV6_NotReceived ``` +18569 area-Infrastructure Run outer loop tests on 32 bit Windows in Jenkins We don't do this at present. (The only 32 bit Windows runs we do is inner loop on Windows 8) @gkhanna79 @wtgodbe is this planned? Any reason why we shouldn't? Is it worth someone updating the groovy file at least? cc @mmitche @karelz +18570 area-System.Net Improve CI: disable socket tests on unix Disable socket tests on unix that randomly fail due to port collisions with other tests running concurrently. Addresses test failures #17362 and #17154. See issue #18568 to re-enable these tests in the future. +18571 area-System.Net Workaround bug in osx ping6. Check only for known failure exitcodes from ping to throw TimeOut exception. fixes #15018 cc @stephentoub +18572 area-System.Memory Add ReadOnlySpan CopyTo tests that already exist for Span cc @WinCPP, @shiftylogic An example of this would be the test recently added here: https://github.com/dotnet/corefx/pull/18286 We want these and possibly other such tests added to RoS from: https://github.com/dotnet/corefx/blob/master/src/System.Memory/tests/Span/CopyTo.cs#L205 To here: https://github.com/dotnet/corefx/blob/master/src/System.Memory/tests/ReadOnlySpan/CopyTo.cs#L123 +18575 area-System.Security disable all failing desktop System.Security.Cryptography.Primitives tests (verified no regression) Fixes: - https://github.com/dotnet/corefx/issues/18475 (ValidKeySizeUsesProperty) - https://github.com/dotnet/corefx/issues/18476 (TestKey) - https://github.com/dotnet/corefx/issues/18139 (CryptographicExceptionTests.Ctor) - https://github.com/dotnet/corefx/issues/18479 (SetNullAlgorithmName) - https://github.com/dotnet/corefx/issues/18478 (ResetAlgorithmName, TrivialDerivationThrows) - https://github.com/dotnet/corefx/issues/18477 (SetKeyNull) I have verified each one of them is also failing on Desktop with the same exception. Any additional improvements we can plan for 2.0 (ideally fix all of those differences) cc: @bartonjs +18576 area-System.Net Improve CI: disable randomly failing socket tests on unix Disable socket tests on unix that randomly fail due to port collisions with other tests running concurrently. Addresses test failures #17362 and #17154. See issue #18568 to re-enable these tests in the future. +18577 area-System.Net Change Debug.Assert to throw when X509 file permission issues on unix Convert the Debug.Asserts to be throws when encountering file permissions on unix. This occurred in CI when using NTFS instead of unix file system that supports chmod. Address https://github.com/dotnet/corefx/issues/14166 +18578 area-System.IO IsolatedStorage depends on two PlatformNotSupported assemblies on Unix I noticed this when doing some package refactoring. IsolatedStorage's unix implementation depends on System.Security.AccessControl and System.Security.Principal.Windows, both of which are not implemented. I suspect this means that IsolatedStorage doesn't work on Unix, or at least some portion of it doesn't. /cc @weshaggard +18579 area-System.Reflection Fix or disable failing Reflection tests in System.Runtime.Tests.dll - SkipOnTarget for those exercising PNSE apis. - Block a PNSE that happens in a class constructor and prevents all assembly tests from running. - Delete GetCallingAssembly() tests. This is iffy even in jitted frameworks. (I might have been more generous if the offending api call didn't happen inside Theory data where it's impossible to skip easily... as it is, not enough value to refactor.) - Delete all testing of contents of Module names and strings. - Avoid unnecessary MME's by not using framework types as test data. +18580 area-Infrastructure xplat msbuild not correctly failing on build failure See: Wow, that isn't good. Somehow on rerun Jenkins decided to ignore the failure: ``` /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : Cycle detected for /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/obj/shims/netcoreapp/facades/netstandard.dll. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : netstandard > System.IO.IsolatedStorage > System.Security.AccessControl > netstandard [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] Build succeeded. /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : Cycle detected for /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/obj/shims/netcoreapp/facades/netstandard.dll. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : netstandard > System.IO.IsolatedStorage > System.Security.AccessControl > netstandard [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] 0 Warning(s) 2 Error(s) Time Elapsed 00:12:01.69 Command execution succeeded. ``` Compare this to the failing build: ``` Microsoft.Private.CoreFx.NETCoreApp -> /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/packages/Debug/specs/runtime.centos.7-x64.Microsoft.Private.CoreFx.NETCoreApp.nuspec /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : Cycle detected for /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/obj/shims/netcoreapp/facades/netstandard.dll. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : netstandard > System.IO.IsolatedStorage > System.Security.AccessControl > netstandard [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] Build FAILED. /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : Cycle detected for /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/bin/obj/shims/netcoreapp/facades/netstandard.dll. [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/frameworkPackage.targets(108,5): error : netstandard > System.IO.IsolatedStorage > System.Security.AccessControl > netstandard [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj] 0 Warning(s) 2 Error(s) Time Elapsed 00:10:34.64 Command execution failed with exit code 1. Build step 'Execute shell' marked build as failure ``` +18581 area-System.Runtime Add ConditionalWeakTable.GetOrAdd API `ConditionalWeakTable` currently provides APIs for `public TValue GetValue(TKey key, CreateValueCallback createValueCallback)` and `public void AddOrUpdate(TKey key, TValue value)`, however it doesn't have any easy and efficient way to do `GetOrAdd`. Rationale and Usage ------------------------------------- Given a `Key` it will return the associated `Value` if the `Key` already exists in the table, otherwise it will add an entry with the `Key, Value` to the table. As @stephentoub pointed out today we can achieve this with `cwt.GetValue(key, _ => value);`. However, that is inefficient as it creates a delegate and closure. For an example, we have used the internal implementation [here ](https://github.com/dotnet/corert/blob/4d6760f3ca6ca17eb31c441bc5d8f5c1e309386c/src/System.Private.CoreLib/src/System/Runtime/InteropServices/PInvokeMarshal.cs#L254) to add items to the delegate marshalling table which is implemented using `ConditionalWeakTable`. Proposed API --------------------------- ```c# public sealed class ConditionalWeakTable : IEnumerable> where TKey : class where TValue : class { // Existing public ConditionalWeakTable(); ~ConditionalWeakTable(); public bool TryGetValue(TKey key, out TValue value); public void Add(TKey key, TValue value); public void AddOrUpdate(TKey key, TValue value); public bool Remove(TKey key); public void Clear(); public TValue GetValue(TKey key, CreateValueCallback createValueCallback); public TValue GetOrCreateValue(TKey key); public delegate TValue CreateValueCallback(TKey key); //Proposed public TValue GetValue(TKey key, TValue value); } ``` Implementation ------------------------ I have checked-in an internal implementation of the API [here](https://github.com/dotnet/corert/blob/4d6760f3ca6ca17eb31c441bc5d8f5c1e309386c/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs#L431). +18583 area-Infrastructure Update netfx and netcoreapp baseline files For netfx baseline files we are no including netstandard ref folder in the list of resolve paths to find assemblies for netfx. cc @ericstj +18584 area-System.Runtime Reenable Array.CreateInstance Tests for UapAot in System.Runtime.Tests.dll. In System.Runtime.Tests, Array and Array17 tests exercising CreateInstance are Skip'd for UapAot using this issue as a comment. Something in those tests is corrupting memory in a way that causes the test exe to fail-fast (sometimes in an entirely unrelated test later on.) Since this hampers investigation of all the other tests, I'm disabling the whole lot until someone can figure it out. +18588 area-Infrastructure Remove the alpine-specific workaround in dir.props. This distro is not supported officially, and we are no longer running any official builds on it. Closes https://github.com/dotnet/corefx/issues/18029. +18589 area-System.Linq Proposal: Enumerable.RemoveAll(T) and RemoveFirst(T) ## Background Most of the time I use `Enumerable.Except`, I only want to remove one item. Unfortunately, `Except` takes an `IEnumerable` so I have to write `new[] { }` every time. Here are a couple of instances where this has happened recently: - [Polynomial.cs](https://gitlab.com/jamesqo/PolynomialReducer/blob/master/PolynomialReducer/CompactR/Polynomial.cs#L330) - [Data.cs](https://gitlab.com/jamesqo/PolynomialReducer/blob/master/PolynomialReducer.Tests/CompactR/Data.cs#L19) - [ImmutableArrayTest.cs](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs#L1935) ## Proposal - I suggest we add a new method to `Enumerable`, `RemoveAll`, that takes a single item to remove from the user. **edit:** This method will return a new enumerable with all occurrences of the item removed, or an equivalent enumerable if the item wasn't found. - A `RemoveFirst` method will also be added for symmetry; it will remove the first occurrence of a specified item in the enumerable, or return an equivalent enumerable if the item wasn't found. ```cs namespace System.Linq { public static class Enumerable { public static IEnumerable RemoveAll(this IEnumerable source, TSource element); public static IEnumerable RemoveAll(this IEnumerable source, TSource element, IEqualityComparer comparer); public static IEnumerable RemoveFirst(this IEnumerable source, TSource element); public static IEnumerable RemoveFirst(this IEnumerable source, TSource element, IEqualityComparer comparer); } } ``` Does this sound like a reasonable idea? /cc @JonHanna **edit:** There would be one big semantic difference from `Except(new[] { item })`: the enumerable returned would not necessarily be distinct. For example, `new[] { 2, 3, 3 }.Except(new[] { 2 })` is `[3]`, while `new[] { 2, 3, 3 }.Remove(2)` would be `[3, 3]`. (I didn't even realize `Except` returned distinct items until I looked at its source code a second ago.) +18590 area-System.Net "HttpRequestStreamTests.Read_FullLengthAsynchronous_Success failed in CI with ""invalid response""" "https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/6549/consoleText ``` Test: ExecuteReaderWithCommandBehaviorTest Enabled Listeners System.Net.Tests.HttpRequestStreamTests.Read_FullLengthAsynchronous_Success(transferEncodingChunked: True, text: \""\"") [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(462,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(72,0): at System.Net.Tests.HttpRequestStreamTests.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Test: ExecuteReaderWithCommandBehaviorTest Started Server at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs(62,0): at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(863,0): at System.Net.Http.WinHttpHandler.d__105.MoveNext() Test: ExecuteReaderWithCommandBehaviorTest SqlOperation Successful Test: ExecuteReaderWithCommandBehaviorTest Listeners Disabled Test: ExecuteReaderWithCommandBehaviorTest Server Disposed Test: ExecuteReaderWithCommandBehaviorTest Listeners Disposed Successfully Test: ConnectionOpenAsyncErrorTest Enabled Listeners Finished: System.Net.HttpListener.Tests ```" +18591 area-System.Net Fix IPAddress parsing tests for netfx Some have an InnerException, some don't. I don't think this a breaking change/compat concern. +18593 area-System.Runtime Dead code in S.R.Extensions What showed up in the ILLink report for this. LowLeveldictionary seems like it should be deleted entirely in favor of dictionary: it says aims to have identical behavior. contributes to https://github.com/dotnet/corefx/issues/17905 +18594 area-Meta Reenable Silverlight signing for System.Json.dll I reverted one line from https://github.com/dotnet/corefx/commit/88e110bc10f3d5c9e27c1df41cf8be3300fd8c7e to unblock build. The Microbuild signing service does not recognize its 'SilverlightExtension' Strong name key moniker. This issue tracks re-enabling it once someone more familiar with Microbuild can take a look. @weshaggard +18595 area-System.Security "Desktop: System.Security.Permissions.Tests.EvidenceBaseTests.HashCallMethods failed with ""System.IO.FileNotFoundException""" Failed test: System.Security.Permissions.Tests.EvidenceBaseTests.HashCallMethods Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/23/testReport/System.Security.Permissions.Tests/EvidenceBaseTests/HashCallMethods/ MESSAGE: ~~~ System.IO.FileNotFoundException : Could not load file or assembly 'System.Reflection' or one of its dependencies. The system cannot find the file specified. ~~~ STACK TRACE: ~~~ at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.Assembly.Load(AssemblyName assemblyRef) at System.Security.Permissions.Tests.EvidenceBaseTests.HashCallMethods() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\EvidenceBaseTests.cs:line 45 +18597 area-System.Linq "Desktop: System.Linq.Parallel.Tests.ParallelQueryCombinationTests.ToArray_OperationCanceledException_PreCanceled failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Linq.Parallel.Tests.ParallelQueryCombinationTests.ToArray_OperationCanceledException_PreCanceled Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/23/testReport/System.Linq.Parallel.Tests/ParallelQueryCombinationTests/ToArray_OperationCanceledException_PreCanceled_operation__Distinct_/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.OperationCanceledException) Actual: typeof(System.AggregateException): One or more errors occurred. ~~~ STACK TRACE: ~~~ at System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose) at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId) at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream) at System.Linq.Parallel.DistinctQueryOperator`1.WrapPartitionedStreamHelper[TKey](PartitionedStream`2 hashStream, IPartitionedStreamRecipient`1 recipient, CancellationToken cancellationToken) at System.Linq.Parallel.DistinctQueryOperator`1.WrapPartitionedStream[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, Boolean preferStriping, QuerySettings settings) at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream) at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) at System.Linq.Parallel.QueryOperator`1.ExecuteAndGetResultsAsArray() at System.Linq.Parallel.Tests.ParallelQueryCombinationTests.<>c__DisplayClass63_0.b__0(ParallelQuery`1 source) in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\Combinatorial\CancellationParallelQueryCombinationTests.cs:line 781 at System.Linq.Parallel.Tests.AssertThrows.<>c__DisplayClass1_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\Helpers\AssertThrows.cs:line 17 ~~~ +18598 area-System.Linq "Desktop: System.Linq.Parallel.Tests.CastTests.Cast_ArgumentNullException failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Linq.Parallel.Tests.CastTests.Cast_ArgumentNullException Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/23/testReport/System.Linq.Parallel.Tests/CastTests/Cast_ArgumentNullException/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentNullException) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.Linq.ParallelEnumerable.Cast[TResult](ParallelQuery source) at System.Linq.Parallel.Tests.CastTests.<>c.b__14_0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\QueryOperators\CastTests.cs:line 149 ~~~ +18599 area-System.Linq "Desktop: Tests under ""System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests"" failed with ""System.MissingMethodException""" Failed tests: System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAt System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAtOrDefault System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAtOrDefault_OutOfRange System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAt_OutOfRange System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAt_Longrunning System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAtOrDefault_OutOfRange_Longrunning System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAtOrDefault_Longrunning System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.ElementAt_OutOfRange_Longrunning Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/23/testReport/System.Linq.Parallel.Tests/ElementAtElementAtOrDefaultTests/ElementAt/ MESSAGE: ~~~ System.MissingMethodException : Method not found: 'System.Collections.Generic.IEnumerable`1 System.Linq.Enumerable.Append(System.Collections.Generic.IEnumerable`1, !!0)'. ~~~ STACK TRACE: ~~~ at System.Linq.Parallel.Tests.UnorderedSources.d__12`1.MoveNext() at System.Linq.Parallel.Tests.ElementAtElementAtOrDefaultTests.d__2.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\QueryOperators\ElementAtElementAtOrDefaultTests.cs:line 18 at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() ~~~ +18600 area-System.Linq "Desktop: System.Linq.Parallel.Tests.SumTests.Sum_Float_Longrunning failed with ""Xunit.Sdk.EqualException""" Failed test: System.Linq.Parallel.Tests.SumTests.Sum_Float_Longrunning Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/23/testReport/System.Linq.Parallel.Tests/SumTests/Sum_Float_Longrunning_count__65536_/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 2.147451E+09 Actual: 2.147422E+09 ~~~ STACK TRACE: ~~~ at System.Linq.Parallel.Tests.SumTests.Sum_Float(Int32 count) in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\QueryOperators\SumTests.cs:line 132 at System.Linq.Parallel.Tests.SumTests.Sum_Float_Longrunning(Int32 count) in D:\j\workspace\outerloop_net---903ddde6\src\System.Linq.Parallel\tests\QueryOperators\SumTests.cs:line 143 ~~~ +18601 area-System.Numerics [ARM32/Linux] Test failure: System.Numerics.Vectors.Tests.dll "Environment: Raspberry pi 3 (Ubuntu 16.04) ``` System.Numerics.Tests.Vector2Tests.Vector2TransformNormalTest [FAIL] Assert.Equal() Failure Expected: <0.3169873, 2.183013> Actual: <0.3169873, 2.183013> Stack Trace: at System.Numerics.Tests.Vector2Tests.Vector2TransformNormalTest() System.Numerics.Tests.Vector2Tests.Vector2TransformNormal3x2Test [FAIL] Assert.Equal() Failure Expected: <-0.1339746, 2.232051> Actual: <-0.1339746, 2.232051> Stack Trace: at System.Numerics.Tests.Vector2Tests.Vector2TransformNormal3x2Test() ``` Simple Test ```c# public class Test { const int Pass = 100; const int Fail = -1; const float Pi = (float)Math.PI; public static float ToRadians(float degrees) { return degrees * Pi / 180f; } public static int Main() { Vector2 v = new Vector2(1.0f, 2.0f); Matrix4x4 m = Matrix4x4.CreateRotationX(ToRadians(30.0f)) * Matrix4x4.CreateRotationY(ToRadians(30.0f)) * Matrix4x4.CreateRotationZ(ToRadians(30.0f)); m.M41 = 10.0f; m.M42 = 20.0f; m.M43 = 30.0f; Vector2 expected = new Vector2(0.3169873f, 2.18301272f); Vector2 actual; actual = Vector2.TransformNormal(v, m); if(expected == actual) { Console.WriteLine(""Pass""); return Pass; } else { Console.WriteLine(""Fail""); return Fail; } } } ``` Test result: ``` Fail ```" +18603 area-System.Security "System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores Configuration: outerloop_netcoreapp_fedora24_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_fedora24_debug/26/testReport/System.Security.Cryptography.X509Certificates.Tests/ChainTests/BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : Invalid file permissions. The file '/mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_debug/tempHome/.dotnet/corefx/cryptography/x509stores/root/4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5.pfx' must readable and writable by the current owner and by no one else, and the permissions could not be changed to meet that criteria. ~~~ STACK TRACE: ~~~ at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.EnsureFilePermissions(FileStream stream, UInt32 userId) at Internal.Cryptography.Pal.DirectoryBasedStoreProvider.Add(ICertificatePal certPal) at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) at System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores() ~~~ +18604 area-System.Data "System.Data.SqlClient.Tests.DiagnosticTest.ExecuteReaderAsyncTest failed with ""Timed out after 60000ms waiting for remote process 54039""" Failed test: System.Data.SqlClient.Tests.DiagnosticTest.ExecuteReaderAsyncTest Configuration: outerloop_netcoreapp_Ubuntu 14.04_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu14.04_release/20/testReport/System.Data.SqlClient.Tests/DiagnosticTest/ExecuteReaderAsyncTest/ MESSAGE: ~~~ Timed out after 60000ms waiting for remote process 54039 Expected: True Actual: False ~~~ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() +18606 area-System.Runtime Exclude GC tests from GCStress runs "this test failed when **set TestGCStressLevel=2**, error message in testresult.xml as following 1. test name=""System.Tests.GCTests.LatencyRoundtrips_LowLatency(value: SustainedLowLatency)"" type=""System.Tests.GCTests"" method=""LatencyRoundtrips_LowLatency"" time=""0.2391149"" result=""Fail"" 2. failure exception-type=""Xunit.Sdk.EqualException"" 3. **Stacktrace:** at System.Tests.GCTests.LatencyRoundtrips(GCLatencyMode value) in F:\repos\corefx\src\System.Runtime\tests\System\GCTests.cs:line 406 at System.Tests.GCTests.LatencyRoundtrips_LowLatency(GCLatencyMode value) in F:\repos\corefx\src\System.Runtime\tests\System\GCTests.cs:line 419 4. **testResults file attached:** [testResults.txt](https://github.com/dotnet/corefx/files/933119/testResults.txt) " +18607 area-Serialization Add 4 basic DSC test cases. @shmao , @huanwu Please help to review this pull request. +18608 area-System.Memory Overlap detection in SpanHelpers.CopyTo yields false positives The [`SpanHelpers.CopyTo`](https://github.com/dotnet/corefx/blob/166e73faa842fc8d8c46737c0b7b68293af5e1dd/src/System.Memory/src/System/SpanHelpers.cs#L25-L44) method tests if `src` and `dst` overlap by first checking [if `src` is greater than `dst`](https://github.com/dotnet/corefx/blob/166e73faa842fc8d8c46737c0b7b68293af5e1dd/src/System.Memory/src/System/SpanHelpers.cs#L25-L26) and then checking [if the `tailDiff` (which depends on the first check) is negative](https://github.com/dotnet/corefx/blob/166e73faa842fc8d8c46737c0b7b68293af5e1dd/src/System.Memory/src/System/SpanHelpers.cs#L29-L44). If `src` and `dst` do not overlap and the GC swaps the order of `src` and `dst` in the address space between the two checks, then `isOverlapped` becomes erroneously `true`: ```csharp int srcLength = 50; int dstLength = 50; T[] array = new T[300]; ref T src1 = ref array[0]; // src before swap ref T dst = ref array[100]; IntPtr srcMinusDst = Unsafe.ByteOffset(ref dst, ref src1); bool srcGreaterThanDst = (sizeof(IntPtr) == sizeof(int)) ? srcMinusDst.ToInt32() >= 0 : srcMinusDst.ToInt64() >= 0; IntPtr tailDiff; ref T src2 = ref array[200]; // src after swap if (srcGreaterThanDst) { // If the start of source is greater than the start of destination, then we need to calculate // the different between the end of destination relative to the start of source. tailDiff = Unsafe.ByteOffset(ref Unsafe.Add(ref dst, dstLength), ref src2); } else { // If the start of source is less than the start of destination, then we need to calculate // the different between the end of source relative to the start of destunation. tailDiff = Unsafe.ByteOffset(ref Unsafe.Add(ref src2, srcLength), ref dst); } // If the source is entirely before or entirely after the destination and the type inside the span is not // itself a reference type or containing reference types, then we can do a simple block copy of the data. bool isOverlapped = (sizeof(IntPtr) == sizeof(int)) ? tailDiff.ToInt32() < 0 : tailDiff.ToInt64() < 0; Debug.Assert(!isOverlapped); ``` It's not really a bug, because the subsequent copy operation is just less optimized. But it's a bit surprising, and may not be obvious to people looking at the code, who could assume that the overlap check gives correct results under all circumstances. cc @jkotas (related: https://github.com/dotnet/corefx/issues/17793) +18609 area-System.Threading Expose Task.IsCompletedSuccessfully Fixes https://github.com/dotnet/corefx/issues/16745 cc: @kouvel, @alexperovich +18610 area-System.Linq Prohibit Expression.Bind with members of open generic types. Closes #8081 +18612 area-System.Net Fix HttpWebRequest.KeepAlive handling Fixes https://github.com/dotnet/corefx/issues/18448 cc: @davidsh, @Priya91 +18614 area-System.Net Allow instantiate HttpRequestHeaders and merge it into another instance "```System.Net.Http.HttpRequestHeaders``` is a comfortable class, and it stores all general headers [UserAgent, Connection, Encoding etc.] and custom headers. This class used by ```HttpClient``` as ```DefaultRequestHeaders``` property, for merge default headers into every ```HttpRequestMessage```. Example for internal using of this for set default headers: [HttpClient.PrepareRequestMessage](https://github.com/dotnet/corefx/blob/5d20e4df940dc9991af5cbb3f5ecc824e3151741/src/System.Net.Http/src/System/Net/Http/HttpClient.cs#L639) The internal logic that merge headers: [HttpRequestHeaders.AddHeaders](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Net.Http/src/System/Net/Http/Headers/HttpRequestHeaders.cs#L418) Unfortunately, This class have 2 limitations: 1. It doesn't have any public constructor. 2. The logic of merge ```HttpRequestHeaders``` into another instance of ```HttpRequestHeaders```, is not public. I want to extend ```HttpClient``` or ```HttpMessageHandler``` behavior, so I can create per-host ```DefaultRequestHeaders```. Something like this: ``` cs HttpRequestHeaders googleDefaultHeaders = new HttpRequestHeaders { { ""X-MY-HEADER-1"", ""123"" }, { ""X-MY-HEADER-2"", ""456"" }, }; googleDefaultHeaders.UserAgent = ""XYZ; googleDefaultHeaders.Connection = false; httpClient.PerHostDefaultHeaders.Add(new Uri(""HTTP://www.google.com""), googleDefaultHeaders); ``` [Sorry for my bad English ):]" +18615 area-System.Security Disable X509 chain test via IsReliableInCI Test is failing on Fedora; this disables it via the IsReliableInCI helper method. Addresses https://github.com/dotnet/corefx/issues/18603 Fedora CI is likely using NTFS file system which doesn't support chmod and thus fails when installing the microsoft.com root cert for this test. Not sure why this is not failing for Ubuntu too - either they already have that cert installed or CI is no longer using NTFS for Ubuntu. +18616 area-System.Linq Fix PLINQ tests for desktop - Avoid using Enumerable.Append, which isn't available in desktop - Suppress tests on desktop where the test is verifying a bug fix in core Fixes https://github.com/dotnet/corefx/issues/18598 Fixes https://github.com/dotnet/corefx/issues/18599 Fixes https://github.com/dotnet/corefx/issues/18600 Fixes https://github.com/dotnet/corefx/issues/18597 cc: @alexperovich, @kouvel +18618 area-System.Runtime Another 556 System.Runtime.Test failures down. "No more ""Multidimensional arrays of rank 1 are not supported...""" +18619 area-System.IO Fix UnixFileSystem.MoveFile on macOS when just changing file casing Neither the link/unlink nor copy-all-data approaches work well on a case-insensitive file system when just changing the casing of the file name. This PR adds an upfront check that detects when the files are the same, and in such cases, just does a rename. (Note that this depends on System.Private.CoreLib having the same understanding of the size of Interop.Sys.FileStatus, and thus the Unix legs of CI will fail until https://github.com/dotnet/coreclr/pull/11070 is merged and consumed into CoreFx.) https://github.com/dotnet/corefx/issues/18521 cc: @ianhays, @JeremyKuhne, @bording +18622 area-System.Runtime Add test for failfast in event of corrupted state exception. Add test… … for Assembly.Load by AssemblyName when AssemblyName.CodeBase property is set +18623 area-System.Net Failure in System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync.SslStream_StreamToStream_Successive_ClientWrite_WithZeroBytes_Success ``` MESSAGE: System.AggregateException : One or more errors occurred. (VirtualNetwork: Timeout reading the next frame.) (The credentials supplied to the package were not recognized)\r\n---- System.TimeoutException : VirtualNetwork: Timeout reading the next frame.\r\n---- System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized +++++++++++++++++++ STACK TRACE: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 424 at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Successive_ClientWrite_WithZeroBytes_Success() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 113 ----- Inner Stack Trace #1 (System.TimeoutException) ----- at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Net\VirtualNetwork\VirtualNetwork.cs:line 39 at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\tests\System\Net\VirtualNetwork\VirtualNetworkStream.cs:line 118 at System.Net.FixedSizeReader.ReadPacket(Stream transport, Byte[] buffer, Int32 offset, Int32 count) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\FixedSizeReader.cs:line 26 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 868 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 839 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 810 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 690 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 611 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 207 at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 195 at System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync.<>c__DisplayClass0_1.b__0() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 422 at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ----- Inner Stack Trace #2 (System.ComponentModel.Win32Exception) ----- at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) in D:\j\workspace\windows_nt_de---4526f5ff\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs:line 167 at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs:line 407 at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs:line 131 at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs:line 681 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs:line 784 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs:line 705 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 764 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 979 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 934 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 882 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 690 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 611 at System.Net.Security.SslStream.AuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 224 at System.Net.Security.SslStream.AuthenticateAsServer(X509Certificate serverCertificate) in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 212 at System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync.<>c__DisplayClass0_1.b__1() in D:\j\workspace\windows_nt_de---4526f5ff\src\System.Net.Security\tests\FunctionalTests\SslStreamStreamToStreamTest.cs:line 423 at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/6585/ +18627 area-System.Net Add support for UseDefaultCredentials to CurlHandler Rely on libcurl internally using gssapi and kerberos infrastructure. Fixes https://github.com/dotnet/corefx/issues/12618 cc: @hongdai, @Priya91, @davidsh, @geoffkizer +18629 area-System.Security Implemented a couple missing CAS stubs Implemented a couple missing CAS stubs #17693 +18630 area-System.IO Failure of WaitForChangedTests.CreatedDeleted_Success @ianhays attempted to fix in https://github.com/dotnet/corefx/pull/17240 https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/6591/consoleFull#-12256351162d31e50d-1517-49fc-92b3-2ca637122019 ``` 11:37:46 System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(changeType: Deleted) [FAIL] 11:37:47 Assert.Equal() Failure 11:37:47 Expected: Deleted 11:37:47 Actual: 0 11:37:47 Stack Trace: 11:37:47 D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.FileSystem.Watcher\tests\FileSystemWatcher.WaitForChanged.cs(152,0): at System.IO.Tests.WaitForChangedTests.CreatedDeleted_Success(WatcherChangeTypes changeType) ``` +18631 area-System.Reflection Harden finalizers Make memory block disposal thread safe. This addresses reentrancy issue occurring on CLR shutdown described in https://github.com/dotnet/corefx/issues/18632 and makes the Dispose method thread safe. Hardens all finalizers against thread abort and race conditions. Fixes https://github.com/dotnet/corefx/issues/18632 (internal bug 360526) +18632 area-System.Reflection Reentrancy in AbstractMemoryBlock.Dispose on shutdown "Copied from internal VSO bug 360526. **Crash Analysis** In the crash case, the portable PDB reader ends up running because CLR shutdown has already been kicked off on another thread, meaning clr!g_fEEShutDown has been transitioned to a nonzero value. Once this happens, the code that would normally acquire an ISymUnmanagedReader for mscorlib/System.Web short circuits at the following stack: ``` // // if (g_fEEShutDown) // RETURN NULL; // clr!Module::GetISymUnmanagedReader clr!Module::GetISymUnmanagedReaderNoThrow clr!DebugStackTrace::GetStackFramesInternal mscorlib!System.Diagnostics.StackFrameHelper::InitializeSourceInfo ``` Once the short-circuit occurs, control unwinds back to GetStackFramesInternal and enters the blocks that ""fall back"" to portable PDB probing in cases where the required source info can't be obtained from a legacy PDB. In other words, the portable PDB reader ""light up everywhere"" once the CLR enters shutdown. Details on how the portable PDB code ended up crashing The reported crash occurred during the execution of the NativeHeapMemoryBlock finalizer (on the finalizer thread): ``` KERNELBASE!LocalFree+0x2e mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr)+0x6e mscorlib_ni!System.Runtime.InteropServices.Marshal.FreeHGlobal(IntPtr)+0x22 System_Core_ni!System.Reflection.Internal.NativeHeapMemoryBlock.Dispose(Boolean)+0x11 System_Core_ni!System.Reflection.Internal.NativeHeapMemoryBlock.Finalize()+0x1a clr!FastCallFinalizeWorker+0x6 clr!FastCallFinalize+0x55 ``` The crash occurred during while CLR shutdown was underway, and specifically happened during the ""Shutdown_Finalize2"" pass of shutdown finalization. This pass has the following properties: Before the pass starts, the runtime is ""mostly suspended"" such that only the finalizer thread is allowed to run managed code (i.e., all other managed threads have been forced out of managed code via the same mechanism that is used during GC suspension). The pass finalizes ALL finalizable objects on the GC heap, regardless of whether the objects are ""live"" or ""dead"". In the crash case, step 1 occurred while a thread was in the middle of the Dispose code for the very same NativeHeapMemoryBlock instance. The runtime ""trapped"" this thread when it tried to return back to managed code, meaning it was sitting at the following stack at crash time: ``` clr!JIT_RareDisableHelper+0x14 mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr)+0x87 mscorlib_ni!System.Runtime.InteropServices.Marshal.FreeHGlobal(IntPtr)+0x22 System_Core_ni!System.Reflection.Internal.NativeHeapMemoryBlock.Dispose(Boolean)+0x11 System_Core_ni!System.Reflection.Internal.AbstractMemoryBlock.Dispose()+0x19 System_Core_ni!System.Reflection.PortableExecutable.PEReader.ReadDebugDirectory()+0x21c ``` So in this case (which can only happen when finalizing ""live"" objects during shutdown finalization), while the finalizer doesn't literally ""race"" with the Dispose code, it does conceptually end up ""preempting"" it. As a result, it ends up running the following line twice (from fx\src\Core\System\Reflection\Internal\MemoryBlocks\NativeHeapMemoryBlock.cs): ``` Marshal.FreeHGlobal((IntPtr)_pointer); ``` This generates a double-free, which generates the heap corruption that was detected by the IIS stress harness." +18635 area-System.IO Fix several System.IO.Packaging issues with differing desktop behavior On desktop, calling Package.Open(stream, FileMode.Create, ...) on a seekable stream sets the length to 0, since the ZipArchive that gets created from it will seek around in the stream and considers it to start from position 0 rather than the current position. The core implementation was not doing that. Then tests were written against core; those tests should have used FileMode.Open but used FileMode.Create (presumably by accident), and thus on desktop the stream was being cleared whereas on core it was not. This change fixes the core implementation to do the same stream validation/mutation that's done on desktop (additional code a direct copy of what's in desktop), and updates the tests to use FileMode.Open instead of FileMode.Create in the few problematic cases. I then added a couple of additional tests. Fixes https://github.com/dotnet/corefx/issues/10898 Fixes https://github.com/dotnet/corefx/issues/10897 cc: @EricWhiteDev, @mellinoe +18637 area-System.Runtime Add type forwarders for newly added types in System.Runtime.CompilerServices Specifically `RuntimeFeature` and `IsReadOnlyAttribute`. Both types were added to `dotnet/coreclr` and `dotnet/corert`. cc @jcouv @dotnet/roslyn-compiler @jkotas From what I can see in source, this is the only place that forwards types. Do they need to be coped somewhere in this repo? +18638 area-System.Memory Issue #18572 Add ReadonlySpan CopyTo test Fixes #18572. @ahsonkhan @shiftylogic Please review. +18640 area-System.IO Fix unix time Fixes: #18431 Detailed description: https://github.com/dotnet/corefx/issues/18431#issuecomment-295448091 cc: @stephentoub @danmosemsft @tarekgh @JeremyKuhne @ianhays +18644 area-Serialization Fix XmlDictionaryReader.ReadElementContentAsDateTime(). The bug is with [`XmlDictionaryReader.ReadElementContentAsDateTime()`](https://github.com/dotnet/corefx/blob/6c53c9572258b5b208e9a74efc170494de4de822/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs#L859). The method should use `ReadContentAsDateTime` instead of `ReadContentAsDateTimeOffset` to read string into DateTime. The test was verifying the behavior on NetCore, which was wrong. Since we started running the test on Desktop recently, the test started failing. The PR fixed both the code and the test. Fix #18205 +18646 area-System.Net "HttpClient no longer sends header 'Accept-Encoding:""gzip, deflate""' and decompress 'gzip/deflate' content by default in .NET Core 2.0" "This is a breaking change compared to `netcoreapp1.1`. In `netcoreapp1.1`, `HttpClient` automatically sends header `""Accept-Encoding"": ""gzip, deflate""` in the request, and automatically decompress 'gzip/deflate' content from the response. However, with `netcoreapp2.0`, `HttpClient` doesn't send the header and stop automatically decompressing 'gzip/deflate' content. Repro Steps -------------- ```c# // Program.cs using System; using System.Net.Http; namespace test { class Program { static void Main(string[] args) { using (var client = new HttpClient()) { using (var request = new HttpRequestMessage(HttpMethod.Get, @""http://httpbin.org/headers"")) { var result = client.SendAsync(request).Result; var payload = result.Content.ReadAsStringAsync().Result; Console.WriteLine(""Header Dict:\n{0}"", payload); } using (var request = new HttpRequestMessage(HttpMethod.Get, @""http://httpbin.org/gzip"")) { var result = client.SendAsync(request).Result; var payload = result.Content.ReadAsStringAsync().Result; Console.WriteLine(""Decompressed Content:\n{0}"", payload); } } } } } ``` **With netcoreapp1.1** `http://httpbin.org/headers` just echos the request headers. You can see `Accept-Encoding` was sent by `HttpClient`. `http://httpbin.org/gzip` returns gzip-encoded data. You can see the content was automatically decompressed by `HttpClient`. ``` PS> dotnet restore PS> dotnet run Header Dict: { ""headers"": { ""Accept-Encoding"": ""gzip, deflate"", ""Connection"": ""close"", ""Host"": ""httpbin.org"" } } Decompressed Content: { ""gzipped"": true, ""headers"": { ""Accept-Encoding"": ""gzip, deflate"", ""Connection"": ""close"", ""Host"": ""httpbin.org"" }, ""method"": ""GET"", ""origin"": ""131.107.147.177"" } ``` **With netcoreapp2.0** `Accept-Encoding` was not sent by `HttpClient` and the gzip-encoded data was not automatically decompressed. ``` PS> dotnet restore PS> dotnet run Header Dict: { ""headers"": { ""Connection"": ""close"", ""Host"": ""httpbin.org"" } } Decompressed Content:  W??X?%?A ?0E?9E??? nE? ^??C2????K??]??????r?.V?O?????*[5*?rJ8 qR?+?>???U?""?E?q ??v?>(?????.h7??;???????? ``` Environment --------------- **netcoreapp1.1** ``` .NET Command Line Tools (1.0.1) Product Information: Version: 1.0.1 Commit SHA-1 hash: 005db40cd1 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: ...\AppData\Local\Microsoft\dotnet\sdk\1.0.1 ``` **netcoreapp2.0** ``` .NET Command Line Tools (2.0.0-preview1-005724) Product Information: Version: 2.0.0-preview1-005724 Commit SHA-1 hash: e391b5d5f3 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: ...\AppData\Local\Microsoft\dotnet\sdk\2.0.0-preview1-005724\ ```" +18647 area-System.IO CrossCompilation IsolatedStorage Fixes #18578 +18649 area-System.Drawing Does the upcoming .net core 2.0 support System.Drawing fully in Linux? +18650 area-System.Security Validate the DER components of user-provided data The parameters value for the PublicKey and the generator's SignatureAlgorithm both are supposed to be DER-encoded; so validate that claim. For the most part this isn't necessary, since rehydrating the signed cert is going to fail to parse the certificate anyways; but being defensive is good. Fixes #18509. +18651 area-System.Diagnostics Activity: Precise for StartTime and duration on .NET Desktop DateTime.UtcNow accuracy is ~16ms. This change calculates precise StartTime and duration in `Activity.Start()` and `Activity.Stop()` (unless they were set by user). On CoreCLR 2.0, precision of DateTime.UtcNow was improved in #9736. Though it leaves netcoreapp1.* (CLR 1.*) users with imprecise time in Activity. /cc @vancem +18654 area-Infrastructure "No test result generated under ""System.IO.Pipes.Tests"" and ""System.IO.Ports.Tests""" "No test result generated under ""System.IO.Pipes.Tests"" and ""System.IO.Ports.Tests"" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170420.01/workItem/System.IO.IsolatedStorage.Tests/wilogs Configuration: Windows.10.Amd64:x64-Release " +18655 area-System.Linq "Tests under: System.Linq.Queryable.Tests.System.Linq.Tests.QueryFromExpressionTests failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Linq.Tests.QueryFromExpressionTests/Block` has failed. System.ArgumentException : Unhandled Expression Type: Block Stack Trace: at System.Linq.Expressions.OldExpressionVisitor.Visit(Expression exp) at System.Linq.EnumerableQuery`1.GetEnumerator() at System.Linq.Tests.QueryFromExpressionTests.Block() in E:\A\_work\83\s\corefx\src\System.Linq.Queryable\tests\QueryFromExpressionTests.cs:line 550 Build : Master - 20170420.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Debug - x64-Release - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.01/workItem/System.Linq.Queryable.Tests/analysis/xunit/System.Linq.Tests.QueryFromExpressionTests~2FBlock +18656 area-System.Net "Test: System.Net.NameResolution.Tests.InitializationTests/Dns_GetHostName_CallsSocketInit_Ok failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Net.NameResolution.Tests.InitializationTests/Dns_GetHostName_CallsSocketInit_Ok` has failed. Assert.Throws() Failure\r Expected: typeof(System.Exception)\r Actual: (No exception was thrown) Stack Trace: at System.Net.NameResolution.Tests.InitializationTests.Dns_GetHostName_CallsSocketInit_Ok() in E:\A\_work\83\s\corefx\src\System.Net.NameResolution\tests\UnitTests\InitializationTest.cs:line 123 Build : Master - 20170420.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Debug - x64-Release - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.01/workItem/System.Net.NameResolution.Unit.Tests/analysis/xunit/System.Net.NameResolution.Tests.InitializationTests~2FDns_GetHostName_CallsSocketInit_Ok +18657 area-System.Net "Test: System.Net.Tests.HttpWebRequestHeaderTest/HttpWebRequest_KeepAlive_CorrectConnectionHeaderSent failed with ""Xunit.Sdk.ContainsException""" "Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpWebRequestHeaderTest/HttpWebRequest_KeepAlive_CorrectConnectionHeaderSent(keepAlive: True)` has failed. Assert.Contains() Failure\r Not found: \""Connection\"": \""Keep-Alive\""\r In value: {\""Method\"":\""GET\"",\""Url\"":\""/Echo.ashx\"",\""Headers\"": {\r \""Host\"": \""corefx-net.cloudapp.net\""\r },\r \""Cookies\"": {},\r \""BodyContent\"": \""\"",\r \""BodyLength\"": 0,\r \""SecureConnection\"": false,\r \""ClientCertificatePresent\"": false,\r \""ClientCertificate\"": null\r } Stack Trace: at System.Net.Tests.HttpWebRequestHeaderTest.HttpWebRequest_KeepAlive_CorrectConnectionHeaderSent(Nullable`1 keepAlive) in E:\A\_work\83\s\corefx\src\System.Net.Requests\tests\HttpWebRequestHeaderTest.cs:line 244 Build : Master - 20170420.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestHeaderTest~2FHttpWebRequest_KeepAlive_CorrectConnectionHeaderSent(keepAlive:%20True)" +18659 area-System.Net "Test: System.Net.Security.Tests.NegotiateStreamStreamToStreamTest_Async/NegotiateStream_StreamToStream_FlushAsync_Propagated failed with ""System.InvalidOperationException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.NegotiateStreamStreamToStreamTest_Async/NegotiateStream_StreamToStream_FlushAsync_Propagated` has failed. System.InvalidOperationException : Operation is not valid due to the current state of the object. Stack Trace: at System.Net.Test.Common.VirtualNetworkStream.CompleteAsyncFlush() in E:\A\_work\83\s\corefx\src\Common\tests\System\Net\VirtualNetwork\VirtualNetworkStream.cs:line 96 at System.Net.Security.Tests.NegotiateStreamStreamToStreamTest.NegotiateStream_StreamToStream_FlushAsync_Propagated() in E:\A\_work\83\s\corefx\src\System.Net.Security\tests\FunctionalTests\NegotiateStreamStreamToStreamTest.cs:line 285 Build : Master - 20170420.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Debug - x64-Release - x86-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.NegotiateStreamStreamToStreamTest_Async~2FNegotiateStream_StreamToStream_FlushAsync_Propagated +18660 area-Serialization "Desktop: Test ""XmlSerializerTests.SoapEncodedSerializationTest_Enum"" failed with ""System.InvalidOperationException""" Failed tests: XmlSerializerTests.SoapEncodedSerializationTest_Enum XmlSerializerTests.SoapEncodedSerializationTest_Basic XmlSerializerTests.SoapEncodedSerialization_IncludeType XmlSerializerTests.SoapEncodedSerializationTest_With_SoapType XmlSerializerTests.SoapEncodedSerialization_SoapAttribute XmlSerializerTests.SoapEncodedSerialization_CircularLink XmlSerializerTests.SoapEncodedSerializationTest_ComplexField XmlSerializerTests.SoapEncodedSerializationTest_Array XmlSerializerTests.SoapEncodedSerializationTest_With_SoapIgnore XmlSerializerTests.SoapEncodedSerializationTest_NestedPublicType XmlSerializerTests.SoapEncodedSerializationTest_List XmlSerializerTests.SoapEncodedSerializationTest_With_SoapElement Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/24/consoleText Message: ~~~ System.InvalidOperationException : Unable to generate a temporary class (result=1). error CS0012: The type 'System.Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. ~~~ Stack Trace: ~~~ at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(XmlTypeMapping xmlTypeMapping) D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs(2684,0): at XmlSerializerTests.SoapEncodedSerializationTest_Enum() ~~~ +18661 area-Serialization "Desktop: XmlSerializerTests.Xml_TimeSpanAsRoot failed with ""XML comparison is also failing""" "Failed tests: Xml_TimeSpanAsRoot Xml_TypeWithDateTimePropertyAsXmlTime Xml_TypeWithTimeSpanProperty Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/24/consoleText Message: ~~~ XML comparison is also failing Test failed for input: 01:02:03 Expected: PT1H2M3S Actual: Expected: True Actual: False ~~~ Stack Trace: ~~~ at XmlSerializerTests.SerializeAndDeserialize[T](T value, String baseline, Func`1 serializerFactory, Boolean skipStringCompare, XmlSerializerNamespaces xns) in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 3432 at XmlSerializerTests.Xml_TimeSpanAsRoot() in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 1635 ~~~" +18664 area-System.Net System.Net.HttpListenerException : An operation was attempted on a nonexistent network connection "Test failed in System.Net.HttpListener.Tests.dll, the test output log as following: set COMPlus_GCStress=3 set XUNIT_PERFORMANCE_MIN_ITERATION=1 set XUNIT_PERFORMANCE_MAX_ITERATION=1 call F:\repos\corefx\bin\testhost\netcoreapp-Windows_NT-Debug-x64\\dotnet.exe xunit.console.netcore.exe System.Net.HttpListener.Tests.dll -xml testResults.xml -notrait category=nonnetcoreapptests -notrait category=failing -notrait category=nonwindowstests xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.HttpListener.Tests Discovered: System.Net.HttpListener.Tests Starting: System.Net.HttpListener.Tests **System.Net.Tests.HttpRequestStreamTests.Read_LargeLengthAsynchronous_Success(transferEncodingChunked: True) [FAIL]** System.Net.HttpListenerException : An operation was attempted on a nonexistent network connection Stack Trace: F:\repos\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpRequestStream.Windows.cs(318,0): at System.Net.HttpRequestStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state) at System.IO.Stream.<>c.b__43_0(Stream stream, ReadWriteParameters args, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) at System.IO.Stream.BeginEndReadAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count) F:\repos\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(149,0): at System.Net.Tests.HttpRequestStreamTests.d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) **System.Net.Tests.HttpRequestStreamTests.Read_LargeLengthAsynchronous_Success(transferEncodingChunked: False) [FAIL]** System.Net.HttpListenerException : An operation was attempted on a nonexistent network connection Stack Trace: F:\repos\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpRequestStream.Windows.cs(318,0): at System.Net.HttpRequestStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state) at System.IO.Stream.<>c.b__43_0(Stream stream, ReadWriteParameters args, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) at System.IO.Stream.BeginEndReadAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count) F:\repos\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(149,0): at System.Net.Tests.HttpRequestStreamTests.d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) **System.Net.Tests.HttpRequestStreamTests.Read_LargeLengthSynchronous_Success(transferEncodingChunked: True) [FAIL]** System.Net.HttpListenerException : An operation was attempted on a nonexistent network connection Stack Trace: F:\repos\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpRequestStream.Windows.cs(195,0): at System.Net.HttpRequestStream.Read(Byte[] buffer, Int32 offset, Int32 size) F:\repos\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(193,0): at System.Net.Tests.HttpRequestStreamTests.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) **System.Net.Tests.HttpRequestStreamTests.Read_LargeLengthSynchronous_Success(transferEncodingChunked: False) [FAIL]** System.Net.HttpListenerException : An operation was attempted on a nonexistent network connection Stack Trace: F:\repos\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpRequestStream.Windows.cs(195,0): at System.Net.HttpRequestStream.Read(Byte[] buffer, Int32 offset, Int32 size) F:\repos\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(193,0): at System.Net.Tests.HttpRequestStreamTests.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) **System.Net.Tests.HttpRequestStreamTests.Read_FullLengthSynchronous_Success(transferEncodingChunked: True, text: \""\"") [FAIL]** System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() F:\repos\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(462,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() F:\repos\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs(116,0): at System.Net.Tests.HttpRequestStreamTests.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() F:\repos\corefx\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs(62,0): at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() F:\repos\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(863,0): at System.Net.Http.WinHttpHandler.d__105.MoveNext() Finished: System.Net.HttpListener.Tests === TEST EXECUTION SUMMARY === System.Net.HttpListener.Tests Total: 104, Errors: 0, Failed: 5, Skipped: 0, Time: 1055.777s Finished running tests. End time= 0:33:32.67, Exit code = 1" +18665 area-Serialization XmlTextAttribute test Hi @huanwu , @shmao , case in this PR is part of old portable library test project, it contains more tests than ported here but I found most of them already covered in the existing Core test project, if you feel this test is also covered already, ignore the merge. Thanks. +18666 area-System.Runtime Caching EqualityComparer.Default in ValueTuple brings significant performance increase I have added caching for EqualityComparer instances inside ValueTuple. E.g. internal static readonly EqualityComparer T1Comparer = EqualityComparer.Default; internal static readonly EqualityComparer T2Comparer = EqualityComparer.Default; internal static readonly EqualityComparer T3Comparer = EqualityComparer.Default; internal static readonly EqualityComparer T4Comparer = EqualityComparer.Default; public bool Equals(ValueTupleCached other) { return T1Comparer.Equals(Item1, other.Item1) && T2Comparer.Equals(Item2, other.Item2) && T3Comparer.Equals(Item3, other.Item3) && T4Comparer.Equals(Item4, other.Item4); } And it seems improving performance for both GetHashCode and Equals. I can create pull request if this change supposed to be approved. ``` ini BenchmarkDotNet=v0.10.3.0, OS=Microsoft Windows NT 6.2.9200.0 Processor=Intel(R) Core(TM) i7-4770 CPU 3.40GHz, ProcessorCount=8 Frequency=3318387 Hz, Resolution=301.3512 ns, Timer=TSC [Host] : Clr 4.0.30319.42000, 32bit LegacyJIT-v4.6.1637.0 LegacyJitX64 : Clr 4.0.30319.42000, 64bit LegacyJIT/clrjit-v4.6.1637.0;compatjit-v4.6.1637.0 LegacyJitX86 : Clr 4.0.30319.42000, 32bit LegacyJIT-v4.6.1637.0 RyuJitX64 : Clr 4.0.30319.42000, 64bit RyuJIT-v4.6.1637.0 Runtime=Clr ``` | Method | Job | Jit | Platform | Mean | StdErr | StdDev | |------------------ |------------- |---------- |--------- |----------- |---------- |---------- | | Equals | LegacyJitX64 | LegacyJit | X64 | 10.4266 ns | 0.0090 ns | 0.0338 ns | | GetHashCode | LegacyJitX64 | LegacyJit | X64 | 47.9099 ns | 0.0912 ns | 0.3533 ns | | EqualsCached | LegacyJitX64 | LegacyJit | X64 | 4.2168 ns | 0.0070 ns | 0.0260 ns | | GetHashCodeCached | LegacyJitX64 | LegacyJit | X64 | 25.2044 ns | 0.0407 ns | 0.1576 ns | | Equals | LegacyJitX86 | LegacyJit | X86 | 9.6312 ns | 0.0323 ns | 0.1252 ns | | GetHashCode | LegacyJitX86 | LegacyJit | X86 | 46.9868 ns | 0.4833 ns | 2.1065 ns | | EqualsCached | LegacyJitX86 | LegacyJit | X86 | 3.9719 ns | 0.0330 ns | 0.1279 ns | | GetHashCodeCached | LegacyJitX86 | LegacyJit | X86 | 20.4734 ns | 0.0514 ns | 0.1925 ns | | Equals | RyuJitX64 | RyuJit | X64 | 9.6321 ns | 0.0123 ns | 0.0476 ns | | GetHashCode | RyuJitX64 | RyuJit | X64 | 40.7101 ns | 0.0525 ns | 0.2035 ns | | EqualsCached | RyuJitX64 | RyuJit | X64 | 2.9862 ns | 0.0035 ns | 0.0130 ns | | GetHashCodeCached | RyuJitX64 | RyuJit | X64 | 14.9397 ns | 0.1623 ns | 0.7073 ns | You can check results in my test project https://github.com/azhmur/TupleBenchmark2/ PS Originally I thought JIT inlining effectively eliminates need of such optimization, but it seems it is not. +18668 area-System.Net HttpWebRequest.AllowReadStreamBuffering can't be set to true Found during UWP apps testing. In the version 4.0.10.0 the System.Net.Requests.dll did implement the HttpWebRequest.AllowReadStreamBuffering and allowed it to be set to true (and it actually did make a difference in behavior). In the latest code, the property always returns false, and can't be set to true. It throws InvalidOperationException if something tries to set it to true. This obviously breaks backward compatibility. +18669 area-System.Net Fix recently added KeepAlive test on desktop "The WinHTTP implementation sends Connection: ""keep-alive"", the desktop implementation does not. Just change the test to validate whether Connection: ""close"" is sent or not. Fixes https://github.com/dotnet/corefx/issues/18657" +18672 area-System.Net Fix/disable several System.Net.Security tests on desktop - SslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success was hanging / timing out on desktop because it relied on Read/WriteAsync not going through the base Stream's Read/WriteAsync, which serializes the delegated calls to Begin/EndRead/Write. Desktop's implementation calls directly to Begin/EndRead/Write whereas in core (by design) we call Read/WriteAsync (which will in turn use Begin/EndRead/Write if the Async method wasn't overridden), but the VirtualNetworkStream wasn't overriding Begin/EndReadWrite to avoid the serialization, and since the test requires non-serialization, it hung. - SslStream_StreamToStream_FlushAsync_Propagated and NegotiateStream_StreamToStream_FlushAsync_Propagated both rely on FlushAsync being overridden, which it's not in desktop. - NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails fails due to a known behavioral difference from desktop for which there's already an open issue. Fixes https://github.com/dotnet/corefx/issues/18318 Fixes https://github.com/dotnet/corefx/issues/18659 cc: @davidsh, @cipop, @Priya91 +18673 area-System.Net Fix System.Net.NameResolution tests on desktop A bunch of the unit tests try to validate that sockets were correctly initialized. They do so with fakes that intercept the calls. But on desktop, the real methods were being used, bypassing that interception. I've fixed it by making the unit tests on desktop compile like core so as to use the fakes. Fixes https://github.com/dotnet/corefx/issues/18656 cc: @cipop, @davidsh, @Priya91 +18674 area-System.Net WebClient.UploadValuesAsync app-compat difference with Desktop "While investigating #17882, I root caused the failure of the WebClient.UploadValuesAsync test. On .NET Framework, WebClient uses an internal method, `UrlEncodeBytesToBytesInternal`, to ""UrlEncode"" the NameValueCollection. This is causing it to use lowercase hex digits. On .NET Core, WebClient uses the public WebUtility.UrlEncode method which always uses uppercase hex digits. The public WebUtility.UrlEncode is behaving the same (uppercase digits) on both .NET Framework and .NET Core. However, .NET Core WebClient is sending request body data using uppercase hex digits while on .NET Framework it is using lowercase hex digits while sending the request body data. For app-compat, we should change .NET Core WebClient's implementation to match .NET Framework. " +18676 area-Infrastructure dumpling error https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_fedora24_debug/25/consoleFull#-74100521779fe3b83-f408-404c-b9e7-9207d232e5fc ``` 00:28:37 ImportError: No module named requests 00:28:37 python: can't open file '/mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_debug/tempHome/.dumpling/dumpling.py': [Errno 2] No such file or directory ``` @mellinoe +18677 area-System.Security Update defaults of SignedXml to use SHA-256 SignedXml is currently using SHA-1 for both line and RSA signature digests. These need to be updated to SHA-256. +18678 area-Serialization Move XmlSerializer perf tests into own project with correct naming In order to use the PerfRunner tool, the name of the assembly containing the perf tests needs to end in .Performance.Tests.dll. This change moves the perf tests into their own assembly with this correct naming convention. +18679 area-System.Xml Disable Xml quirk test on NetFx Fixes https://github.com/dotnet/corefx/issues/18548. Disables the test with quirk behavior on Desktop runs as Xunit runner will always run against older TFM (4.5.2). As a result, netfx test runs always get the old behavior, which does not match what's expected. Issue tracking the problem: https://github.com/dotnet/corefx/issues/15136 cc: @safern +18680 area-System.Net Validation missing when adding certain headers to WebClient.Headers collection While investigating #17882, I discovered that adding certain request headers to `WebClient` are not error-checked the same between .NET Core and .NET Framework implementations. Adding 'Connection', or 'Expect' request headers throws WebException when sending the request using .NET Framework. But .NET Core does not throw exception. Adding 'Host' request header with an illegal DNS name throws WebException when sending the request using .NET Framework. But .NET Core does not throw exception. Added new tests to validate this and marked the tests as disabled for .NET Core. +18681 area-System.Net Root cause WebClient test failures on NETFX Finished investigation of failures on .NET Framework for WebClient. Added some new tests to clarify the open issues. Added new bugs #18674 and #18680. Fixes #17882. +18682 area-Serialization XmlDictionaryReader / Writer Canonicalization throws NotSupportedException Is there a plan to support Canonicalization in Core? +18683 area-Meta Delete *UnknownUnix.*cs We never set the property necessary to build them and they're only stubs. @stephentoub shall I just delete them? +18684 area-Serialization Fix Test Xml_HiddenDerivedFieldTest. Fixed a bug with reflection based serialization handling hidden derived fields. See the example below. DerivedClass.value was not serialized correctly. ```c# public class BaseClass { public string value { get; set; } public string Value; } public class DerivedClass : BaseClass { public new string value; public new string Value { get; set; } } ``` Fix #18076 +18687 area-Infrastructure Update performance-tests.md with benchmark-writing guidance Adds a short list of principles to follow when writing performance tests. @DrewScoggins @JosephTremoulet @billwert Thoughts on these guidelines? Some are roughly based on the discussions here: https://github.com/dotnet/corefx/issues/18416 +18689 area-System.Security Add back Cryptography.Cng package The cng package was removed so that the assembly could be included in the netstandard meta-package. However, Cng was later removed from netstandard, so the standalone package needs to be added back. resolves #17667 cc: @ericstj @bartonjs +18690 area-System.Security Port S.S.Cryptography changes to netfx * AsymmetricAlgorithm validates against the LegalKeySizesValue field instead of the LegalKeySizes property. https://github.com/dotnet/corefx/issues/18475 * KeyedHashAlgorithm.Key (set/get) do not handle null well. https://github.com/dotnet/corefx/issues/18477 * SymmetricAlgorithm.set_Key permits large keys by mistake https://github.com/dotnet/corefx/issues/18476 * SymmetricAlgorithm.LegalKeySizes are not isolated https://github.com/dotnet/corefx/issues/8601 * Remove caching for keyed hash algorithms https://github.com/dotnet/corefx/pull/17959 * SignedXml defaults to SHA256 https://github.com/dotnet/corefx/pull/18685 * SignedXml - KeyInfoX509Data.AddIssuerSerial - need to check what exactly - some changes pending * System.Security.Cryptography.RSA.FromXmlString(String xmlString) is not wrapping FormatException coming from System.Convert.FromBase64String - TODO: find out changes +18691 area-System.Security Identify suppressed-on-netfx tests with an issue Tag the SkipOnTargetFramework attributes from #18575 with a port-consider issue number (#18690) so there's a paper trail that will hopefully result in bugs getting fixed. FYI @karelz +18692 area-Infrastructure Clean binplace "Improves the behavior of clean for binplaced files/props. Also added *AllConfigurations targets for Rebuild and Clean, plus shorter versions of those that omit the ""Configurations"" portion of the name. " +18693 area-System.Security Update Crypto API's to support Span As they take byte[], offset, length in a number of places which are then checked and fixed then often passed to a native call, as well as pretty much all being Sync in nature (CPU or Memory bound) they seem like ideal candidates. This should increase safety/reduce checks (no need to check that length is past the array etc) and reduce the number of copies/interim arrays that are needed to be created. Will need an API review. I realize this is a future task, just making sure it's logged. +18694 area-Infrastructure Netfx net standard support package for net462/net47 This adds support for version-specific ref and implementation in our desktop support package. Right now we have 1 file that differs (ValueTuple on net47) but I suspect there are some facades that could be fixed in order to better fill in the existing netstandard API on net462 (Crypto). @weshaggard I'd like your help identifying those by getting API compat runs for net462 and net47 if possible. Please review commit-by-commit. More detail about each commit is in the description. Fixes #18567 +18696 area-System.IO Fix expected exception for PipeStream test Fixes https://github.com/dotnet/corefx/issues/18543 Behavior is the same among Desktop and Core. Core wraps (System.ApplicationException): The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) into a nicer-looking System.ArgumentException to handle the scenario, though. cc: @ianhays @danmosemsft @stephentoub +18697 area-Infrastructure BuildAllConfigurations and IsDesktopFacade don't play well together An example of this is System.Security.Principal.Windows. If you do: `build.cmd -framework=netfx` The correct facade ends up under `bin\ref\netfx` from the source build. The ref gets bin-placed by https://github.com/dotnet/corefx/blob/master/dir.targets#L55 if you do: `build.cmd -allconfigurations` The netstandard ref for this assembly ends up under `bin\ref\netfx` which is incorrect. The ref gets bin-placed by https://github.com/dotnet/corefx/blob/master/dir.targets#L109 We should consider doing away with IsDesktopFacade completely to help eliminate all this special casing. +18698 area-Serialization Support ExtensionDataObject in ReflectionOnly mode. Fix #13699 @shmao @mconnew @zhenlan +18699 area-System.Runtime Update StringBuilder.AppendJoin to approved API Closes #3419 Dependent on https://github.com/dotnet/coreclr/pull/11059 I aimed to cover every code path. +18701 area-System.Diagnostics Activity: put a limit on baggage key and value Baggage is a context (property bag) that propagates from one process to another through HTTP or other protocol. It is used for tracing purposes only: to augment and correlate or group telemetry. In case of HTTP, it is propagated in HTTP headers in practice have significant size restrictions. Also, baggage could be misused as a generic way to pass data between the services that we want to restrict. This changes adds limit on the baggage * key length - 32 bytes inclusively * value length - 42 bytes inclusively /cc @vancem +18702 area-System.IO Fix handling of unexpected cancellation in PipeStream. My previous fix was overly aggressive in changing from IOException to OperationCanceledException (I must have been running the tests incorrectly or something). Specifically, desktop handles unexpected cancellation for some operations differently than it does for others: for most operations it always uses an OperationCanceledException, but for WaitForConnectionAsync, it uses IOException. This PR fixes the core behavior to match and updates the tests accordingly. Fixes https://github.com/dotnet/corefx/issues/18544 cc: @sepidehMS, @ianhays +18704 area-System.Runtime System.CharEnumerator is not Serializable This type is serializable on Desktop and Mono. +18705 area-System.IO IsolatedStorage.MaximumSize throws when it doesn't on 4.6 The .NET Core implementation of IsolatedStorage does not initialize m_Quota as the desktop implementation does, resulting in code like this throwing instead of working: ```csharp var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly(); ulong size = store.MaximumSize; ``` +18706 area-System.IO IsolatedStorageFile.GetStore overloads should not throw PlatformNotSupportedException This is a compat with desktop issue. Currently the only overload that is supported is GetStore(IsolatedStorageScope). We should consider the most sensible fallback possible for the other overloads. Code that happened to call ```IsolatedStorageFile.GetStore(System.IO.IsolatedStorage.IsolatedStorageScope.User | System.IO.IsolatedStorage.IsolatedStorageScope.Assembly,null,null)```, which is the same thing as calling ```GetUserStoreForAssembly()``` doesn't have to fail. +18707 area-System.Net "Test: System.Net.Tests.ServicePointManagerTest/FindServicePoint_Collectible failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.ServicePointManagerTest/FindServicePoint_Collectible` has failed. Assert.Equal() Failure\r Expected: True\r Actual: False Stack Trace: at System.Net.Tests.ServicePointManagerTest.FindServicePoint_Collectible() in E:\A\_work\81\s\corefx\src\System.Net.ServicePoint\tests\ServicePointManagerTest.cs:line 231 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Net.ServicePoint.Tests/analysis/xunit/System.Net.Tests.ServicePointManagerTest~2FFindServicePoint_Collectible +18708 area-System.Net "Test: System.Net.Tests.ServicePointManagerTest/InvalidArguments_Throw failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.ServicePointManagerTest/InvalidArguments_Throw` has failed. Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: (No exception was thrown) Stack Trace: at System.Net.Tests.ServicePointManagerTest.InvalidArguments_Throw() in E:\A\_work\81\s\corefx\src\System.Net.ServicePoint\tests\ServicePointManagerTest.cs:line 162 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Net.ServicePoint.Tests/analysis/xunit/System.Net.Tests.ServicePointManagerTest~2FInvalidArguments_Throw +18709 area-System.Numerics "Tests under: System.Numerics.Vectors.Tests.System.Numerics.Tests.Matrix4x4Tests failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Numerics.Tests.Matrix4x4Tests/PerspectiveFarPlaneAtInfinityTest` has failed. Assert.Equal() Failure\r Expected: -1\r Actual: NaN Stack Trace: at System.Numerics.Tests.Matrix4x4Tests.PerspectiveFarPlaneAtInfinityTest() in E:\A\_work\81\s\corefx\src\System.Numerics.Vectors\tests\Matrix4x4Tests.cs:line 2525 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Numerics.Vectors.Tests/analysis/xunit/System.Numerics.Tests.Matrix4x4Tests~2FPerspectiveFarPlaneAtInfinityTest +18710 area-System.Reflection "Test: System.Reflection.Tests.AssemblyNameTests/FullName failed with ""Xunit.Sdk.TrueException""" "Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyNameTests/FullName(name: \""NAME\"", expectedName: \""NAME\"")` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Reflection.Tests.AssemblyNameTests.FullName(String name, String expectedName) in E:\A\_work\81\s\corefx\src\System.Reflection\tests\AssemblyNameTests.cs:line 188 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Reflection.Tests/analysis/xunit/System.Reflection.Tests.AssemblyNameTests~2FFullName(name:%20%5C%22NAME%5C%22,%20expectedName:%20%5C%22NAME%5C%22)" +18711 area-System.Reflection "Test: System.Reflection.Tests.AssemblyTests/GetEntryAssembly failed with ""Xunit.Sdk.NotNullException""" Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyTests/GetEntryAssembly` has failed. Assert.NotNull() Failure Stack Trace: at System.Reflection.Tests.AssemblyTests.GetEntryAssembly() in E:\A\_work\81\s\corefx\src\System.Reflection\tests\AssemblyTests.cs:line 123 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Reflection.Tests/analysis/xunit/System.Reflection.Tests.AssemblyTests~2FGetEntryAssembly +18712 area-System.IO "Test: System.Resources.ResourceWriterTests.ResourceWriterTests/ExceptionforResWriter03 failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Resources.ResourceWriterTests.ResourceWriterTests/ExceptionforResWriter03` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.ArgumentNullException)\r Actual: typeof(Xunit.Sdk.ThrowsException): Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: (No exception was thrown) Stack Trace: at System.Resources.ResourceWriterTests.ResourceWriterTests.<>c.b__4_0() in E:\A\_work\81\s\corefx\src\System.Resources.Writer\tests\ResourceWriterUnitTest.cs:line 63 ``` Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Resources.Writer.Tests/analysis/xunit/System.Resources.ResourceWriterTests.ResourceWriterTests~2FExceptionforResWriter03 +18713 area-System.IO "Tests under: System.Runtime.Extensions.Tests.System.IO.Tests.PathTests failed with ""System.ArgumentException""" "Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/Combine(paths: [\""<\"", \""abc\"", \""def\"", \""ghi\"", \""jkl\""])` has failed. System.ArgumentException : Illegal characters in path. Stack Trace: at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.IO.Path.Combine(String path1, String path2) at System.IO.Tests.PathTests.Combine(String[] paths) in E:\A\_work\81\s\corefx\src\System.Runtime.Extensions\tests\System\IO\Path.Combine.cs:line 97 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug " +18715 area-System.IO "Test: System.IO.Tests.PathTests/GetFullPath_Windows_MaxPathNotTooLong failed with ""System.IO.PathTooLongException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetFullPath_Windows_MaxPathNotTooLong` has failed. System.IO.PathTooLongException : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. Stack Trace: at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) at System.IO.Path.GetFullPathInternal(String path) at System.IO.Path.GetFullPath(String path) at System.IO.Tests.PathTests.GetFullPath_Windows_MaxPathNotTooLong() in E:\A\_work\81\s\corefx\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 515 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetFullPath_Windows_MaxPathNotTooLong +18716 area-System.IO "Test: System.IO.Tests.PathTests/GetFullPath_Windows_StrangeButLegalPaths failed with ""Xunit.Sdk.NotEqualException""" "Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetFullPath_Windows_StrangeButLegalPaths` has failed. ``` Assert.NotEqual() Failure\r Expected: Not \""C:\\\\dotnetbuild\\\\work\\\\7ed983c1-4274-40de-9871-ded\""...\r Actual: \""C:\\\\dotnetbuild\\\\work\\\\7ed983c1-4274-40de-9871-ded\""... Stack Trace: at System.IO.Tests.PathTests.GetFullPath_Windows_StrangeButLegalPaths() in E:\A\_work\81\s\corefx\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 546 ``` Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetFullPath_Windows_StrangeButLegalPaths" +18717 area-System.IO "Test: System.IO.Tests.PathTests/GetFullPath_Windows_UNC_Valid failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetFullPath_Windows_UNC_Valid(expected: \""\\\\\\\\.\\\\UNC\\\\LOCALHOST\\\\share\\\\\"", input: \""\\\\\\\\.\\\\UNC\\\\LOCALHOST\\\\share\\\\. \"")` has failed. ``` Assert.Equal() Failure\r ? (pos 23)\r Expected: ···\\UNC\\LOCALHOST\\share\\\r Actual: ···\\UNC\\LOCALHOST\\share\r ? (pos 23) Stack Trace: at System.IO.Tests.PathTests.GetFullPath_Windows_UNC_Valid(String expected, String input) in E:\A\_work\81\s\corefx\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 642 ``` Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetFullPath_Windows_UNC_Valid(expected:%20%5C%22%5C%5C%5C%5C%5C%5C%5C%5C.%5C%5C%5C%5CUNC%5C%5C%5C%5CLOCALHOST%5C%5C%5C%5Cshare%5C%5C%5C%5C%5C%22,%20input:%20%5C%22%5C%5C%5C%5C%5C%5C%5C%5C.%5C%5C%5C%5CUNC%5C%5C%5C%5CLOCALHOST%5C%5C%5C%5Cshare%5C%5C%5C%5C.%20%5C%22)" +18718 area-System.Runtime "Tests under: System.Runtime.Extensions.Tests.System.Tests.AppDomainTests failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.Tests.AppDomainTests/AppendPrivatePath` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\7ed983c1-4274-40de-9871-dedf09c523de\\Work\\e8d39aba-863d-43c0-9b98-6396742c36f1\\Unzip\\AssemblyResolveTests.dll' is denied. Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalDelete(String path, Boolean checkHost) at System.Tests.AppDomainTests..ctor() in E:\A\_work\81\s\corefx\src\System.Runtime.Extensions\tests\System\AppDomainTests.cs:line 26 Build : Master - 20170420.02 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170420.02/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.AppDomainTests~2FAppendPrivatePath +18719 area-System.Security "Desktop: System.Security.Cryptography.Cng.Tests.ECDsaCngTests.TestVerify521_EcdhKey failed with ""System.ArgumentException""" Failed test: System.Security.Cryptography.Cng.Tests.ECDsaCngTests.TestVerify521_EcdhKey Configration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/26/testReport/System.Security.Cryptography.Cng.Tests/ECDsaCngTests/TestVerify521_EcdhKey/ MESSAGE: ~~~ System.ArgumentException : Keys used with the ECDsaCng algorithm must have an algorithm group of ECDsa. Parameter name: key ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.ECDsaCng..ctor(CngKey key) at System.Security.Cryptography.Cng.Tests.ECDsaCngTests.TestVerify521_EcdhKey() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Cng\tests\ECDsaCngTests.cs:line 93 ~~~ +18720 area-System.Security Desktop: System.TypeLoadException : Could not load type 'System.Security.Cryptography.AesCng' from assembly 'System.Security.Cryptography.Cng' "Failed test: System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsECB Track issues under System.Sercurity.Cryptography failed with ""System.TypeLoadException"" Detail: System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsECB MESSAGE: ~~~ System.TypeLoadException : Could not load type 'System.Security.Cryptography.AesCng' from assembly 'System.Security.Cryptography.Cng, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Encryption.Aes.Tests.AesProvider.Create() at System.Security.Cryptography.Encryption.Aes.Tests.AesFactory.Create() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesFactory.cs:line 18 at System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsMode(CipherMode mode) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesModeTests.cs:line 33 at System.Security.Cryptography.Encryption.Aes.Tests.AesModeTests.SupportsECB() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesModeTests.cs:line 22" +18721 area-System.Security "Desktop: System.Security.Cryptography.Hashing.Algorithms.Tests.Sha512Tests.Sha512_Fips180_MultiBlock failed with ""Xunit.Sdk.EqualException""" Failed test: System.Security.Cryptography.Hashing.Algorithms.Tests.Sha512Tests.Sha512_Fips180_MultiBlock Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/26/testReport/System.Security.Cryptography.Hashing.Algorithms.Tests/Sha512Tests/Sha512_Fips180_MultiBlock/ MESSAGE: ~~~ Assert.Equal() Failure Expected: Byte[] [12, 59, 72, 9, 109, ...] Actual: Byte[] [207, 131, 225, 53, 126, ...] ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Hashing.Algorithms.Tests.HashAlgorithmTest.VerifyTransformBlockHash(Byte[] block1, Byte[] block2, Byte[] expected, Byte[] expectedEmpty) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Algorithms\tests\HashAlgorithmTest.cs:line 91 at System.Security.Cryptography.Hashing.Algorithms.Tests.HashAlgorithmTest.VerifyMultiBlock(String block1, String block2, String expectedHash, String emptyHash) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Algorithms\tests\HashAlgorithmTest.cs:line 64 at System.Security.Cryptography.Hashing.Algorithms.Tests.Sha512Tests.Sha512_Fips180_MultiBlock() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Algorithms\tests\Sha512Tests.cs:line 36 ~~~ +18723 area-Serialization "Desktop: Tests under ""DataContractJsonSerializerTests"" failed with ""strings differ at index 2""" "Failed tests: DataContractJsonSerializerTests.DCJS_StringAsRoot DataContractJsonSerializerTests.DCJS_ReadOnlyDictionary DataContractJsonSerializerTests.DCJS_StringAsRoot DataContractJsonSerializerTests.DCJS_ReadOnlyDictionary Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/26/consoleText ~~~ DataContractJsonSerializerTests.DCJS_StringAsRoot [FAIL] strings differ at index 2  [expected]:""\b"" [actual ]:""\u0  [Expected (with length=4)]: ""\b"" [Actual (with length=8)]: ""\u0008"" Test failed for input:  Expected: ""\b"" Actual: ""\u0008"" Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(2861,0): at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(248,0): at DataContractJsonSerializerTests.DCJS_StringAsRoot() DataContractJsonSerializerTests.DCJS_ReadOnlyDictionary [FAIL] strings differ at index 2  [expected]:{""_dictionary"":[{""Key"" [actual ]:{""m_dictionary"":[{""Key  [Expected (with length=65)]: {""_dictionary"":[{""Key"":""Foo"",""Value"":1},{""Key"":""Bar"",""Value"":2}]} [Actual (with length=66)]: {""m_dictionary"":[{""Key"":""Foo"",""Value"":1},{""Key"":""Bar"",""Value"":2}]} Test failed for input: System.Collections.ObjectModel.ReadOnlyDictionary`2[System.String,System.Int32] Expected: {""_dictionary"":[{""Key"":""Foo"",""Value"":1},{""Key"":""Bar"",""Value"":2}]} Actual: {""m_dictionary"":[{""Key"":""Foo"",""Value"":1},{""Key"":""Bar"",""Value"":2}]} Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(2861,0): at DataContractJsonSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(1700,0): at DataContractJsonSerializerTests.DCJS_ReadOnlyDictionary() ~~~" +18724 area-System.Security EnvelopedCms.Encrypt on Desktop rejects zero length content (unlike Core) Failed test: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ZeroLengthContent_RoundTrip Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/26/testReport/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests/EdgeCasesTests/ZeroLengthContent_RoundTrip/ MESSAGE: ~~~ System.InvalidOperationException : The CMS message is not encrypted. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Pkcs.EnvelopedCms.Encode() at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ZeroLengthContent_RoundTrip() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 110 ~~~ +18726 area-System.Console ConsoleEncoding.InputEncoding_SetWithInInitialized_ResetsIn [FAIL] test case failed on Ubuntu 16.04 when COMPlus_GCStress=2: Exception from RemoteExecutorConsoleApp(System.Console.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, ConsoleEncoding+<>c, b__3_0): Assembly: System.Console.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: ConsoleEncoding+<>c Method: Int32 b__3_0() Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.NotSameException: Assert.NotSame() Failure at Xunit.Assert.NotSame(Object expected, Object actual) at ConsoleEncoding.<>c.b__3_0() --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at RemoteExecutorConsoleApp.Program.Main(String[] args) Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.NotSameException: Assert.NotSame() Failure at Xunit.Assert.NotSame(Object expected, Object actual) at ConsoleEncoding.<>c.b__3_0() --- End of inner exception stack trace --- at RemoteExecutorConsoleApp.Program.Main(String[] args) ConsoleEncoding.InputEncoding_SetWithInInitialized_ResetsIn [FAIL] Assert.Equal() Failure Expected: 42 Actual: 134 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at ConsoleEncoding.InputEncoding_SetWithInInitialized_ResetsIn() +18730 area-System.Memory Fix overlap detection in SpanHelpers.CopyTo Fixes https://github.com/dotnet/corefx/issues/18608. +18731 area-System.Memory [PENDING API review] Add Overlaps extension method to SpanExtensions Fixes https://github.com/dotnet/corefx/issues/17793 if the API proposal is approved. +18732 area-System.Net Fix ServicePoint tests for desktop Closes https://github.com/dotnet/corefx/issues/18708 Closes https://github.com/dotnet/corefx/issues/18707 cc: @davidsh, @cipop, @Priya91 +18733 area-System.Security why CngKey.Import is not supported on ubuntu? "Is there any workaround to make this code working? ``` var keyContent = System.IO.File.ReadAllText(""key.p8"").Split('\n')[1]; var secretKeyBlob = Convert.FromBase64String(keyContent); var key = CngKey.Import(secretKeyBlob, CngKeyBlobFormat.Pkcs8PrivateBlob); ```" +18734 area-System.Linq Disable on desktop LINQ tests that stack overflow LINQ's Concat implementation in core is optimized to better support chains of Concats, and there are several tests that stress this. These pass on core and stack overflow on desktop. Disabling on desktop. +18735 area-System.Security CreateChain_Hybrid test failed in CI on Unix https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_release_prtest/3919/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid [FAIL] System.ArgumentException : The provided key does not match the public key for this certificate. Parameter name: privateKey Stack Trace: at System.Security.Cryptography.X509Certificates.RSACertificateExtensions.CopyWithPrivateKey(X509Certificate2 certificate, RSA privateKey) at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateAndTestChain(AsymmetricAlgorithm rootPrivKey, AsymmetricAlgorithm intermed1PrivKey, AsymmetricAlgorithm intermed2PrivKey, AsymmetricAlgorithm leafPubKey) at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid() ``` +18736 area-Infrastructure Config system should model versionless targetgroups as aliases Today these are distinct nodes in the compatibility graph. As a result `netstandard` isn't considered to be compatible with `netstandard2.0`, nor is `net461` nor `net462`. This creates a maintainence problem. We have to *remember* to keep the graph mappings correct. This means that remapping the versionless targetgroups is not a simple task. I'd like to fix this by treating the versionless identifiers as an alias. This was my original intent with these, but we didn't do it because it required a code change rather than just props. +18738 area-System.Runtime Simple disambiguation of path test inputs XUnit logging seems to throw in extra slashes and these inputs vary with slashes. Trivial change to make it easier to decipher results like https://github.com/dotnet/corefx/issues/18717 +18740 area-System.Net Allow HttpWebRequest.AllowReadStreamBuffering to be set to true While fixing various .NET Framework app-compat differences, PR #18163 changed the AllowReadStreamBuffering property to match .NET Framework. This resulted in having the property throw an exception when set to true. That behavior is what .NET Framework currently does. Historically, this property did not always exist in .NET Framework at all. Other portable versions of .NET (Windows Phone, Silverlight) for the HTTP stack were implemented differently and had this property which worked. When .NET Framework APIs were reconciled in 2015, this virtual property was added to .NET Framework but the functionality on Desktop was limited. This PR will put back this property's functionality for .NET Core which is also used for UWP apps. Fixes #18668. +18743 area-Serialization Disable soap encoded XmlSerialization tests on desktop System.Runtime.Serialization.Xml src and ref contracts are built against netfx not netstandard so the test need to be built against netfx as well to find its correct dependencies in runtime. Now since we are building them against netstandard and run them on netfx it will not find System dependencies as it doesn't have a reference to netstandard. So we should build them against netfx so that it loads it dependencies from mscorlib as it is the ones included from src and ref. Fixes: https://github.com/dotnet/corefx/issues/18660 Tracking issue: #18964 cc: @weshaggard @danmosemsft +18746 area-System.Security Fix multiple intermittent failures in System.Security - Added more diagnostics to be able to easier identify what has happened in the future if similar issue has happened - Updated https://github.com/dotnet/corefx/issues/18690 to mention issue #8601 Issue is caused by not handling LegalKeySizes correctly in multithreaded scenarios. This was fixed by @bartonjs as part of this https://github.com/dotnet/corefx/issues/8601 Fixes: - https://github.com/dotnet/corefx/issues/18270 - https://github.com/dotnet/corefx/issues/18271 - https://github.com/dotnet/corefx/issues/18197 possibly more I've seen around 40 failures less on my local machines. We are down to 18 failures for System.Security.Cryptography.Algorithms on netfx (on my box on Windows at least) +18747 area-System.Memory Hide or move away from Span the dangerous APIs "Every time I look through the Span API, the following leaves some bad taste: ```C# public static Span DangerousCreate(object obj, ref T objectData, int length) ``` The method is very unsafe, but the only protection is a scary name. Is it possible to make `length` a `void*` to force that caller uses ""unsafe"" context to call this method? The method is here for reference: https://github.com/dotnet/corefx/blob/master/src/System.Memory/src/System/Span.cs#L136 Another option is to move this and other dangerous methods to a separate location such as `System.Runtime.CompilerServices.Unsafe`. " +18748 area-System.Net Improve CI: disable randomly failing socket test on unix Disable socket test on unix that randomly fails due to port collisions with other tests running concurrently. It has failed twice in the last 7 weeks. Fixes https://github.com/dotnet/corefx/issues/12048 See issue #18568 to re-enable this test and related tests in the future. +18749 area-System.IO Add Directory.CreateDirectory(string, out bool) "When you want to make sure that a directory exists on a certain path you call `Directory.CreateDirectory(string)` which is great because it also handles creation if it's non-existent. That member call returns a `DirectoryInfo` object but doesn't tell you, whether it already existed or was just created. In scenarios where you want to execute code only if the directory was just created, you have to add extra code. ### Proposal ```C# namespace System.IO { public static partial class Directory { // Existing API: // public DirectoryInfo CreateDirectory(string path); public DirectoryInfo CreateDirectory(string path, out bool created); } } ``` ### Usage ```C# System.IO.Directory.CreateDirectory("""", out bool created); if (created) { // Some code which should only be executed if the directory was created } ``` I came up with this proposal while working in System.IO.IsolatedStorage for https://github.com/dotnet/corefx/pull/18647#discussion_r112710798 ### Alternatives Calling `Directory.Exists(string)` first: ``` c# bool alreadyExisted = Directory.Exists(path); DirectoryInfo info = Directory.CreateDirectory(path); if (!alreadyExisted) { // Some code which should only be executed if the directory was created } ``` This is problematic as between `Directory.Exists(string)` and `Directory.CreateDirectory(string)` a race condition could happen like the state of the directory has changed (e.g. deleted). /cc @terrajobst @JeremyKuhne " +18750 area-System.Memory API Proposal: Span - find if one span contains another; perhaps IsSliceOf "From https://github.com/dotnet/corefxlab/issues/827 by @mgravell A scenario I find myself needing is to see whether one span is a sub-span of another. This test is semantically valid for both array and pointer spans, and is a related operation to `Slice` Suggested API: ``` Span bool IsSliceOf(Span span); bool IsSliceOf(Span span, out int offset); ``` where it is: - `true` if both spans are array-based, for the exact same array, where the inner offet >= outer offset, and inner offset+count <= outer offset+count - `true` if both spans are pointer-based, and inner ptr >= outer ptr and inner ptr+count <= outer ptr+count - `false` otherwise or could be unified to: ``` int GetSliceIndex(Span span) ``` (returns -1 if not a slice; kinda ugly) Would be happy to contribute towards the code, but wanted to discuss API first. https://github.com/dotnet/corefxlab/issues/827#issuecomment-296100325: > The specific example was trying to find the parent block that owns a range (one of several known blocks) so we can do a slice and dice - however, it occurs that the moment I say ""one of several"" it is clear that we aren't talking just about stack-based spans, so all of this could work just as well against Buffer-T if that would be preferable. The exact scenario was: https://github.com/davidfowl/Channels/pull/86/files#diff-2265f88526c85122b370d0d37969d072R620 (search IsSliceOf). Related to: https://github.com/dotnet/corefx/issues/17793 Previous PR: https://github.com/dotnet/corefxlab/pull/830" +18752 area-System.Drawing Consider bringing back System.Drawing API working cross-plattform Consider bringing back System.Drawing API from netfx as identical as possible, working cross-plattform with whatever implementation. Relates to: https://github.com/dotnet/corefx/issues/18649 https://github.com/dotnet/corefx/issues/3634 https://github.com/dotnet/corefx/issues/2020 https://github.com/dotnet/corefx/issues/3778 cc: @danmosemsft @akoeplinger @terrajobst +18753 area-System.Runtime System.Runtime Performance Tests "This is a tracking issue describing the current performance tests we have in the System.Runtime area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). NOTE: System.Runtime is a broad area. I have split out types that ""obviously"" belong to other areas, like Reflection and Globalization, into other issues where they can be tracked alongside the rest of the area. ## Existing Coverage We have some basic coverage for common types, but the test cases need to be audited for conformance with the guidelines: * Most tests are far too short: they should be 100 - 1000 ms long. * Some test cases are being optimized out completely, leading to bogus data. See https://github.com/dotnet/corefx/issues/18416. * Some tests seem redundant and should be trimmed. * System.String has a very large number of tests -- necessary or excessive? ## Missing Coverage * Primitive numeric types have no coverage for operators * Missing coverage for (S)Byte (U)Int16, (U)Int64, Single entirely * Char -- We have minimal tests here. Many un-tested methods are not critical, but some coverage should be added here. * Activator * AppContext * Array * ArraySegment * Buffer * DateTime -- some coverage, but there are a ton of additional operations that may be interesting. * Decimal * Delegate * Enum -- some coverage already. GetNames(), GetValues(), IsDefined() are also important. * FormattableString * Nullable * TimeSpan -- Needs extra coverage * Uri * ValueTuple * WeakReference, WeakReference * ConditionalWeakTable * RuntimeHelpers" +18754 area-System.Reflection System.Reflection Performance Tests "This is a tracking issue describing the current performance tests we have in the System.Reflection area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). NOTE: System.Reflection is split across several ""contracts"", but the majority is actually located and implemented in System.Private.CoreLib / System.Runtime. ## Existing Coverage: **None** ## Missing Coverage: Core Types (System.Runtime), listed in a general order of importance (but not set in stone). * Type * TypeInfo * Assembly * MemberInfo (and subtypes) * RuntimeReflectionExtensions * TypedReference * CustomAttributeExtensions System.Reflection.TypeExtensions (less important than above) * TypeExtensions * *_InfoExtensions * AssemblyExtensions" +18755 area-System.Threading Attempt to improve no unobserved task exception being raised when trying to await null task "My application stopped working after targetting `netcoreapp2.0` while working perfectly fine in `netcoreapp1.1`. While the root cause for that is for another issue, it generated quite interesting scenario that I decided to extract. Consider following reproducable case: ```c# using System; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; namespace test { internal static class Program { private static readonly ManualResetEventSlim ShutdownEvent = new ManualResetEventSlim(false); private static void Main() { AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; TaskScheduler.UnobservedTaskException += OnUnobservedTaskException; Console.WriteLine(""Start""); Reproduce().Forget(); Console.WriteLine(""Forget""); ShutdownEvent.Wait(); Console.WriteLine(""End""); } private static async Task Reproduce() { Console.WriteLine(""Start inner""); await GetNullTask().ConfigureAwait(false); Console.WriteLine(""Set event""); ShutdownEvent.Set(); Console.WriteLine(""End inner""); } private static Task GetNullTask() { return null; } private static void Forget(this object obj) { } private static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) { Console.WriteLine(""OnUnhandledException!""); } private static void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { Console.WriteLine(""OnUnobservedTaskException!""); } } } ``` As you can see, `await GetNullTask().ConfigureAwait(false);` is trying to await a `Task` that is null. Thing is, nothing is happening, the function is entirely frozen - no unhandled exception being raised, no unobserved task exception being raised (which should happen), and no function returning - limbo. ``` root@debian:~/test/test# dotnet exec bin/test.dll Start Start inner Forget ``` I'm pretty sure this is **really** unwanted - I didn't test if the same behaviour exists in .NET core 1.1, but regardless if it does, I think this should be corrected with proper (unobserved task) exception being raised. Otherwise there is no way to even guess that some problem occured, and unobserved task exception event is the function that should catch situation like that. Of course there is no issue if we replace `Reproduce().Forget()` with `Reproduce.Wait()`: ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object.) ---> System.NullReferenceException: Object reference not set to an instance of an object. at test.Program.d__2.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait() at test.Program.Main() ``` But in `Forget()` case, there should still be `TaskScheduler.UnobservedTaskException` being raised. ``` .NET Command Line Tools (2.0.0-preview1-005825) Product Information: Version: 2.0.0-preview1-005825 Commit SHA-1 hash: b4a821109d Runtime Environment: OS Name: debian OS Version: 9 OS Platform: Linux RID: ubuntu.16.10-x64 Base Path: /opt/dotnet/sdk/2.0.0-preview1-005825/ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002028-00 Build : 6d0caecf154d3398b9bc0e637089b6af9e250479 ```" +18756 area-System.Diagnostics Expose ulong value for ProcessThread.Id With .NET Core being cross-plat supporting OSX, Linux and Windows, we have to provide accurate APIs that reflect the behavior of underlying OS design. On OSX, the Id of threads is 64 bit unsigned value, whereas in .NET core, the exposed ProcessThread.Id returns int, hence we truncate the ulong to int by casting, resulting in data loss and incorrect values on OSX. ```c# namespace System.Diagnostics { public partial class ProcessThread : System.ComponentModel.Component { public ulong RawId { get { throw null; } } } } ``` +18758 area-System.Diagnostics Handle thread ids overflow on OSX. cc @danmosemsft @karelz fixes #17187 filed #18756 to track addressing the use of large ulong values for thread id being hit frequently in osx 10.12 update. +18759 area-System.IO Add SafeFileHandle access for IStorageFolder and IStorageFile With the Windows 10 Anniversary Update interfaces were added to `IStorageFolder` and `IStorageFile` to create a standard Win32 file handle. ([`IStorageFolderHandleAccess`](https://msdn.microsoft.com/en-us/library/mt765061(v=vs.85).aspx) and [`IStorageItemHandleAccess`](https://msdn.microsoft.com/en-us/library/mt765064(v=vs.85).aspx)) We should expose wrappers for the `Create` methods on these interfaces. (Note that you explicitly have to request these through `IUnknown`) ## Rationale and Usage Getting the Win32 handle allows richer interop with both .NET and other existing libraries. You can, for example, go straight to a .NET `FileStream` without complicated and potentially performance-sapping wrappers. Exposing these methods is also a direct request from the Windows team. Usage example: ``` C# public void Foo(IStorageFile storageFile) { SafeFileHandle handle = storageFile.CreateSafeFileHandle(FileAccess.Read); using (FileStream stream = new FileStream(handle, FileAccess.Read)) { ... } } ``` ## Proposed API We already have IO extension methods in [`System.IO.WindowsRuntimeStorageExtensions`](https://msdn.microsoft.com/en-us/library/system.io.windowsruntimestorageextensions(v=vs.110).aspx) (in `System.Runtime.WindowsRuntime.dll`). These would be added there. ``` C# public static class WindowsRuntimeStorageExtensions { public static SafeFileHandle CreateSafeFileHandle( this IStorageFile windowsRuntimeFile, FileAccess access = FileAccess.ReadWrite, FileShare share = FileShare.Read, FileOptions options = FileOptions.None) { ... } public static SafeFileHandle CreateSafeFileHandle( this IStorageFolder rootDirectory, string relativePath, FileMode mode) { return rootDirectory.CreateSafeFileHandle(relativePath, mode, (mode == FileMode.Append ? FileAccess.Write : FileAccess.ReadWrite)); } public static SafeFileHandle CreateSafeFileHandle( this IStorageFolder rootDirectory, string relativePath, FileMode mode, FileAccess access, FileShare share = FileShare.Read, FileOptions options = FileOptions.None) { ... } } ``` ## Parameter Naming and Defaults Parameters follow naming used in existing methods in `WindowsRuntimeStorageExtensions` and `FileStream`. `FileStream` defaults for constructors are the defaults here as well. ## Parameter Validation | Exception | Case | |---|---| | ArgumentNullException | Thrown if `relativePath` is null | | NotSupportedException | Thrown for `FileShare.Inheritable` and `FileOptions.Encrypted` | | ArgumentOutOfRangeException | Thrown for any other undefined enum values | Note that we explicitly allow `(FileOptions)0x20000000` (which is `NoBuffering`) as FileStream does. We will not do other validation of incompatible combinations of enum values- we'll allow Windows to do this and surface whatever errors it returns. ## Error Handling If the cast to `IStorageFolderHandleAccess` or `IStorageItemHandleAccess` fails for any reason we'll return null. Failed HRESULTs returned from the methods will be converted into normal System.IO exceptions. (As [GetExceptionForWin32Error](http://source.dot.net/#System.Private.CoreLib/shared/System/IO/Win32Marshal.cs,8cf456a56c1e487e,references) would.) ## Other Notes We will not support oplocks or `IOplockBreakingHandler`. We don't support oplocks elsewhere- any such support here should come in with general oplock support. ## Future Considerations We should investigate converting the various `WindowsRuntimeStorageExtensions.OpenStreamFor*Async` extension methods to directly creating a FileStream via these new interfaces if possible. Adding additional non `Async` wraps should be considered as well. +18760 area-Infrastructure UWP ILC runs should run in appcontainer We get some coverage from UWP CoreCLR runs but some cases have emerged where API in the ILC context needs an app identity. (Plus, it's more realistic anyway) @AlexGhiondea can you remind me what is required to do this? You mentioned it wasn't too bad. @DnlHarvey +18761 area-Serialization Support default value for time span Support the default value in timespan. Use the duration as TimeSpan's qualified name. Both are consistent with the recent change in desktop. Fix #13606 @shmao @mconnew @zhenlan +18762 area-System.Diagnostics HttpClient Diagnostics: deprecated events issue In PR #16393 we have changed logging (DiagnosticSource) in HttoClient and introduced a new events: * System.Net.Http.HttpRequestOut.Start * System.Net.Http.HttpRequestOut.Stop * System.Net.Http.Exception We kept events that have been previously fired, but deprecated them: * System.Net.Http.Request * System.Net.Http.Response We also made new and old events **mutually exclusive**. However there is a valid production scenario when there are two listeners in the application that want different set of events: e.g. ApplicationInsights for the 'new' events and Glimpse for the 'old' events. With mutual exclusiveness, only 'new' listener will receive any events. Besides Glimpse, VisualStudio consumes 'old' events, however I do not know whether it is internal logging or listener is somehow injected into the application where other listeners may exist; may be @nbilling can provide more details on it. Potentially there are other consumers affected by this change. Simple solution would be to check for deprecated event listener with IsEnabled method even if there was a listener to new event, however the assumption is that frequently there will be just one listener. IsEnabled for deprecated events may be cached under the assumption that there are no consumers that dynamically subscribe and unsubscribe. /cc @vancem @avanderhoorn @nbilling @cwe1ss +18763 area-System.Globalization System.Globalization Area Performance Tests "This is a tracking issue describing the current performance tests we have in the System.Globalization area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). NOTE: System.Globalization is spread out over a few of our low-level contracts. I suspect the below list is not exhaustive. If there are additional types that are important to cover, please add them to the list. ## Existing Coverage: * Some coverage on types implemented in System.Runtime -- should be audited for conformance to guidelines and usefulness * DateTime, TimeSpan * Char -- Only ""ToLower"" is tested. * String -- part of System.Runtime but overlaps with Globalization on some operations. ## Missing Coverage: * Encoding (in System.Runtime) * Encoder, Decoder (in System.Runtime) * StringComparer (in System.Runtime.Extensions) * CharUnicodeInfo (in System.Runtime) * Calendar (in System.Runtime) " +18764 area-System.Linq Fix the System.Linq tests that want metadata. (the remaining failures are DebuggerAttribute-checking stuff which is a whole another subject that affects Collections too.) +18765 area-System.Runtime System.Runtime.Extensions Area Performance Tests This is a tracking issue describing the current performance tests we have in the System.Runtime.Extensions area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests): ## Existing Coverage: There is some existing coverage, but it needs to be audited for conformance with our performance test guidelines. - [X] Path https://github.com/dotnet/corefx/issues/19367 - [x] Random https://github.com/dotnet/corefx/issues/19561 - [x] Environment -- https://github.com/dotnet/corefx/issues/19623) ## Missing Coverage: - [ ] Math, MathF - [ ] MemoryStream - [ ] StreamReader / StreamWriter - [ ] BinaryReader / BinaryWriter - [ ] ArrayList - [ ] StringReader / StringWriter - [ ] TextReader / TextWriter - [ ] BitConverter - [ ] Convert +18766 area-Infrastructure Remove IsDesktopFacade Fixes #18697 /cc @weshaggard This removes use of IsDesktopFacade and replaces it with autogenerated reference facades. I'm running some validation and will update baseline files as necessary in follow up commits. Please review. +18767 area-System.Security Remove assert that trips on Windows 7 Win7 is getting different failure codes from the CAPI-via-CNG tests with DSA, and removing the assert makes the tests pass. So replacing the assert with a comment. Since this is opportunistic recovery from an exception, it seems reasonable to try no matter what the exception is. +18768 area-Serialization Fix PNSE in serialization. Fixed a few PNSE thrown in serialization. Ref https://github.com/dotnet/corefx/issues/18682. +18770 area-System.Data Make CopyAllFromReaderConnectionCloseOnEventAsyncTest debug only, since it uses AsyncDebugScope +18772 area-System.Security Validate that issuerCertificate is a sensible CA certificate "When a certificate is given as a CA cert it needs to * Not have a KeyUsage extension, or assert KeyCertSign. * Have BasicConstraints.CA set or be self-signed and not have BasicConstraints. These two rules are a discovered state of Windows chain validation after cross-reading RFC 3280, RFC 5280 and ITU-T X.509 2012/10. The ""self-signed"" portion turns out to be difficult, since both Windows and OpenSSL take the AuthorityKeyIdentifier extension into account. It's even more difficult in that they don't seem to take them into account in the same way. So the existing two IsSelfSigned methods are deleted, and replaced with a new one that takes the KeyId form of AKID into account, because they treat that form the same. We can be confused by the signature not working out, but that just means we accept certs for signing that the chain builders reject. We will also believe a certificate which uses the Name+Serial form of AuthorityKeyIdentifier is not self-signed, so we will force it to have a Basic Constraints extension. In addition to the CA cert sanity checks, enforce that the notBefore and notAfter values supplied are aligned with the issuerCertificate's NotBefore and NotAfter values." +18774 area-System.Net Updates HTTP Diagnostics guide Event names and payloads were changed in #17296 and #17009, but guide was not updated. +18775 area-System.Diagnostics Activity: StopActivity does not yet use the new more precise timestamp on the full framework #18651 introduced more precise timestamps for the full .net framework in the new Activity API. However, I think that there's one place missing in [StopActivity](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticSourceActivity.cs#L44) ```csharp if (activity.Duration == TimeSpan.Zero) activity.SetEndTime(DateTime.UtcNow); ``` @lmolkova @vancem +18776 area-System.Runtime Enable tests for Environment.ExitCode Based on this comment(https://github.com/dotnet/coreclr/issues/6206#event-1048947484), [the tests of Environment.ExitCode](https://github.com/dotnet/corefx/blob/0ebc867d6bad9d777dd61afb78d0445c86143b34/src/System.Runtime.Extensions/tests/System/Environment.Exit.cs#L52) should be enabled as the bug has been fixed in CoreCLR. I'll work on this issue after https://github.com/dotnet/core-setup/issues/2050 resolved. +18780 area-Meta Types missing [Serializable] Based on #18704 I took a quick look at the rest of the .NET Core framework to find types that were marked [Serializable] in the desktop .NET Framework which are not marked so in .NET Core. I looked for 'serializable typename' in issues on CoreFX and CoreCLR and didn't find any hits on these to try and understand if these were known issues or by design and didn't come up with anything. (I also don't have a great way to split the list between CoreFX and CoreCLR, so I'm opening the issue here for all of them.) The list: Microsoft.VisualBasic.CompilerServices.IncompleteInitialization Microsoft.VisualBasic.CompilerServices.InternalErrorException Microsoft.VisualBasic.CompilerServices.StaticLocalInitFlag System.AssemblyLoadEventHandler System.Configuration.Assemblies.AssemblyHashAlgorithm System.Configuration.Assemblies.AssemblyVersionCompatibility System.Globalization.CultureTypes System.Globalization.DateTimeStyles System.Globalization.DigitShapes System.Globalization.NumberStyles System.Globalization.UnicodeCategory System.IO.FileMode System.IO.FileOptions System.IO.FileShare System.IO.SeekOrigin System.LoaderOptimization System.Reflection.Assembly System.Reflection.AssemblyContentType System.Reflection.AssemblyNameFlags System.Reflection.Binder System.Reflection.BindingFlags System.Reflection.CallingConventions System.Reflection.ConstructorInfo System.Reflection.EventAttributes System.Reflection.EventInfo System.Reflection.FieldAttributes System.Reflection.FieldInfo System.Reflection.ImageFileMachine System.Reflection.MemberFilter System.Reflection.MemberInfo System.Reflection.MemberTypes System.Reflection.MethodAttributes System.Reflection.MethodBase System.Reflection.MethodImplAttributes System.Reflection.MethodInfo System.Reflection.Module System.Reflection.ModuleResolveEventHandler System.Reflection.ParameterAttributes System.Reflection.ParameterInfo System.Reflection.PortableExecutableKinds System.Reflection.ProcessorArchitecture System.Reflection.PropertyAttributes System.Reflection.PropertyInfo System.Reflection.ResourceAttributes System.Reflection.ResourceLocation System.Reflection.TypeAttributes System.Reflection.TypeFilter System.Reflection.TypeInfo System.ResolveEventHandler System.Resources.UltimateResourceFallbackLocation System.Runtime.CompilerServices.MethodImplOptions System.Runtime.InteropServices.CallingConvention System.Runtime.InteropServices.CharSet System.Runtime.InteropServices.LayoutKind System.Runtime.InteropServices.UnmanagedType System.Runtime.InteropServices.VarEnum System.Runtime.Serialization.StreamingContextStates System.Text.RegularExpressions.MatchEvaluator System.Threading.ApartmentState System.Threading.ThreadPriority System.Threading.ThreadState System.Type +18784 area-System.Net WebHeaderCollection needs some internal APIs made public While investigating failures in System.Net.Requests tests ( #17842), I discovered that `FtpWebResponse.Headers` and `FileWebResponse.Headers` is returning a `WebHeaderCollection` object that does not have the private field `WebHeaderCollectionType` properly initialized within the collection. This causes code like this: ```c# FileWebResponse response = ... Assert.Equal(data.Length.ToString(), response.Headers[HttpResponseHeader.ContentLength]); ``` to pass on .NET Core (which is wrong). Instead, it should throw an exception >System.InvalidOperationException : This collection holds request headers and cannot contain the specified response header. similar to what happens on .NET Framework. The exception is because FtpWebResponse/FileWebResponse don't have Http type headers. So, the net result is that we don't have proper validation for WebHeaderCollection type. The problem is that on .NET Core, the `WebHeaderCollection` is being created with the default contructor which doesn't pass it any specific `WebHeaderCollectionType` enum value. On .NET Framework, it uses an internal constructor overload. Also, the `WebHeaderCollectionType` enum is also marked as internal in .NET Framework and is not a public API. This was ok for .NET Framework since everything was in System.dll. But on .NET Core, WebHeaderCollection lives in a different library from System.Net.Requests where *WebRequest, *WebResponse classes live. ```c# internal enum WebHeaderCollectionType : ushort { Unknown, WebRequest, WebResponse, HttpWebRequest, HttpWebResponse, HttpListenerRequest, HttpListenerResponse, FtpWebRequest, FtpWebResponse, FileWebRequest, FileWebResponse, } internal WebHeaderCollection(WebHeaderCollectionType type) : base(DBNull.Value); ``` This is resulting in all WebHeaderCollection objects being set with the `WebHeaderCollectionType.Unknown` enum value. +18786 area-System.Diagnostics Activity: Proposal for an easier/more flexible tracer contract "Since I can't stop thinking about this topic ([see initial discussion](https://github.com/dotnet/corefx/issues/16491)), I'd like to show you a proposal for a IMO more usable Activity system that tries to be a compromise between OpenTracing and what Activity does right now. /alphabetical cc with people I've seen on related issues: @avanderhoorn @benaadams @Dmitry-Matveev @lmolkova @nbilling @SergeyKanzhelev @vancem Main differences/concepts: * It uses a **separate static `Tracer` class and an `ITracer` interface** instead of DiagnosticSource. * I know that it would be nice to reuse something existing but DiagnosticSource is not useful for Activities IMO because: * The Start/Stop events are defined by string values. Everyone could raise an ""activity""-like event that ends with "".Stop"" and tracers would have no good way to differentiate them from real activity events. * There's currently no easy/reliable way to get *all* started/stopped activities. Tracers have to rely on `EndsWith("".Stop"")`-code to subscribe to all activity events. * It doesn't allow you to pass additional arguments without creating anonymous objects. I'd like to always pass the actual activity instance because accessing Activity.Current in a tracer is not reliable enough IMO - especially together with the previous points (does it also have worse performance???). * It is not extensible. We need Inject/Extract hooks to be compatible with 3rd party tracers. With DiagnosticSource, this would result in even more strange string-based events with weird arguments. * In contrast to my [opentracing-code](https://github.com/opentracing/opentracing-csharp), the proposed static `Tracer` does not rely on DependencyInjection and can easily be used everywhere. * It is also zero-allocation based if tracing is off (at least I think so) * There are **hooks for Inject/Extract of IDs and baggage** to support existing tracers. This is an absolute must-have IMO because otherwise this whole system is useless for everyone but new tracers. * The currently used http standard is completely proprietary and not used by anyone. Something like this shouldn't be hard-coded in such a deep layer of the .net framework. * Since there have been concerns about the complexity of inject/extract in opentracing, the proposed code might be a possible compromise (with advantages and disadvantages of course). This would have to be discussed. * I propose to **always set default tags**! Otherwise it's basically impossible to write general-purpose tracers that don't want to take DLL dependencies on instrumented objects. The tags from opentracing are agreed upon by a few 3rd party tracers so I think using them should be a good thing! And every tracer could map them to its own anyway. * I'd argue that there should be *hundreds* of usages of this API in the future (every messaging library, database SDK, probably even frameworks that invoke user code like mvc actions, ...). Tracers should not (and can not) have DLL dependencies on all of these and it should be easy for tracers to automatically subscribe to all of these. * It uses **more common 128bit/64bit randoms for IDs** instead of the very complicated and also completely proprietary algorithm. This would ensure compatibility with some more 3rd party tracers. * Given this proposal has a more reliable way to subscribe to all start events and also inject/extract hooks, it might not even be necessary to dictate the format at all. This PoC probably has some issues and needs further discussion etc. I'd be happy to help work on this and create an initial PR should there be approval towards the general approach. If not, I'll (hopefully - no guarantees :smile:) finally shut up and continue to work on my OpenTracing library as an alternative. ```csharp // Usage in an outgoing Http Request async Task SendHttpRequest(HttpClient client, HttpRequestMessage request) { // NOTE: OperationName has a different meaning in OpenTracing. (e.g. it would be something like ""controller/action"" in an incoming MVC request) const string operationName = ""System.Net.Http.RequestOut""; Activity activity = null; // A separate ""Tracer"" class instead of DiagnosticListener for more flexibility and better contracts // No anonymous objects for easier access to argument! // Zero-alloc in case tracing is off! if (Tracer.IsEnabled(operationName, request)) { // Create through tracer for potential future OnCreate hooks activity = Tracer.CreateActivity(operationName) // *Always* set standardized tags for tracers who don't want to take a dependency // on the instrumented object (e.g. HttpRequestMessage) // these are from the opentracing spec. .AddTag(""span.kind"", ""client"") .AddTag(""http.method"", request.Method.ToString()) .AddTag(""http.url"", request.RequestUri.ToString()) // Informs tracers about the start and allows them to override/add tags .Start(request); // Every tracer uses different header names etc. so we absolutely need this hook! // NOTE: OpenTracing uses a more sophisticated system with formats and carrier objects. // Maybe something like this would be an easy compromise?! (with drawbacks though) Tracer.Inject(activity, x => request.Headers.Add(x.Key, x.Value)); } try { await client.SendAsync(request); } finally { activity?.Stop(request); } } // Usage in an incoming ASP.NET Core request async Task HandleIncomingRequest(HttpContext context) { const string operationName = ""Microsoft.AspNetCore.RequestIn""; Activity activity = null; if (Tracer.IsEnabled(operationName, context)) { activity = Tracer.CreateActivity(operationName) .AddTag(""span.kind"", ""server"") .AddTag(""http.method"", context.Request.Method) .AddTag(""http.url"", context.Request.Path) .AddTag(""peer.hostname"", context.Request.Host.Host); // Every tracer uses different header names etc. so we absolutely need this hook! // NOTE: OpenTracing uses a more sophisticated system with formats and carrier objects. // Maybe something like this would be an easy compromise?! (with drawbacks though) Tracer.Extract(activity, getHeaders: () => context.Request.Headers.Select(x => new KeyValuePair(x.Key, x.Value)), getHeaderValue: key => context.Request.Headers.TryGetValue(key, out var value) ? value.ToString() : null); activity.Start(context); } try { // TODO HandleRequest await Task.CompletedTask; } finally { // Add additional standardized tags activity?.AddTag(""http.status_code"", context.Response.StatusCode); activity?.Stop(context); } } // A new type instead of DiagnosticSource/Listener for more flexibility and a better contract towards tracers. public static class Tracer { // TODO subscription management (unsubscribe (not sure if this is necessary), dispose behavior on app shutdown) private static List _tracers { get; set; } // here instead of Activity, to keep all static code in one Location // TODO net45/net6 handling (AsyncLocal) etc. public static Activity CurrentActivity { get; private set; } public static void AddTracer(ITracer tracer) { if (_tracers == null) _tracers = new List(); _tracers.Add(tracer); } public static bool IsEnabled(string operationName, object arg = null) => _tracers?.Any(x => x.IsEnabled(operationName, arg)) ?? false; public static Activity CreateActivity(string operationName) { return new Activity(operationName); } // internal, to make sure there's only one way to start activities internal static void StartActivity(Activity activity, object arg = null) { CurrentActivity = activity; _tracers?.ForEach(x => x.OnStartActivity(activity, arg)); } // internal, to make sure there's only one way to stop activities internal static void StopActivity(Activity activity, object arg = null) { _tracers?.ForEach(x => x.OnStopActivity(activity, arg)); CurrentActivity = activity.Parent; } public static void Inject(Activity activity, Action> addHeader) { _tracers?.ForEach(x => x.Inject(activity, addHeader)); } public static void Extract(Activity activity, Func>> getHeaders, Func getHeaderValue) { _tracers?.ForEach(x => x.Extract(activity, getHeaders, getHeaderValue)); } } // A very simple interface for tracers that reliably delivers the events and activity // without having to rely on event name strings and Activity.Current. public interface ITracer { bool IsEnabled(string operationName, object arg); void OnStartActivity(Activity activity, object arg); void OnStopActivity(Activity activity, object arg); void Inject(Activity activity, Action> addHeader); void Extract(Activity activity, Func>> getHeaders, Func getHeaderValue); } public class Activity { // Note: This class contains only relevant properties for this POC. public string OperationName { get; } public string Id { get; private set; } public string ParentId { get; private set; } public string RootId { get; set; } // TODO ""TraceId"" would be a more common name! public Activity Parent { get; private set; } public IEnumerable> Baggage { get; } internal Activity(string operationName) { OperationName = operationName; } public Activity Start(object arg = null) { // TODO ensure not started, Parent, StartTime, ... - see current Activity class if (RootId == null) { RootId = ""...""; // 128bit random instead of current algorithm } Id = ""...""; // 64bit random instead of current algorithm Tracer.StartActivity(this, arg); return this; } public void Stop(object arg = null) { // ... see current activity class // TODO if (!_isFinished) { Tracer.StopActivity(this, arg); //} } public Activity AddBaggage(string key, string value) => /* TODO save baggage */ this; public Activity AddTag(string key, int value) => /* TODO: save tag */ this; public Activity AddTag(string key, string value) => /* TODO: save tag */ this; } // Just a PoC example of an actual tracer public class SimpleTracer : ITracer { private IArgumentHandler _argumentHandler = null; public bool IsEnabled(string operationName, object arg) { if (operationName == ""Something.We.DoNot.Need"") return false; // ArgumentHandler would either call into a component with a direct reference to the instrumented object // or into something like aspnet/EventNotification that uses proxy objects. if (!_argumentHandler.IsEnabled(operationName, arg)) return false; return true; } public void OnStartActivity(Activity activity, object arg) { Console.WriteLine($""Activity {activity.Id} started""); } public void OnStopActivity(Activity activity, object arg) { Console.WriteLine($""Activity {activity.Id} stopped""); } public void Inject(Activity activity, Action> addHeader) { addHeader(new KeyValuePair(""X-TraceId"", activity.RootId)); addHeader(new KeyValuePair(""X-ActivityId"", activity.Id)); foreach (var baggageItem in activity.Baggage) addHeader(new KeyValuePair(""X-Baggage-"" + baggageItem.Key, baggageItem.Value)); } public void Extract(Activity activity, Func>> getHeaders, Func getHeaderValue) { string traceId = getHeaderValue(""X-TraceId""); string parentId = getHeaderValue(""X-ActivityId""); foreach (var header in getHeaders()) { if (header.Key.StartsWith(""X-Baggage-"")) { activity.AddBaggage(header.Key.Substring(10), header.Value); } } } } ```" +18787 area-System.Net HttpWebRequest request stream returns different exceptions from Desktop The request stream returned from `HttpWebRequest.GetRequestStream` is always a MemoryStream on .NET Core. On .NET Framework, it is a System.Net.ConnectStream (an internal class). Due to this, there are small behavior difference w.r.t. the exception returned while doing argument checking: See: ```c# [Fact] public void WriteAsync_OffsetPlusCountExceedsBufferLength_ThrowsArgumentException() { using (Stream stream = GetRequestStream()) { if (PlatformDetection.IsFullFramework) { // In .NET Framework, the request stream is a System.Net.ConnectStream // which throws ArgumentOutOfRangeException in this case. Assert.Throws(() => { Task t = stream.WriteAsync(buffer, 0, buffer.Length+1); }); } else { // In .NET Core, the request stream is a System.IO.MemoryStream // which throws ArgumentException in this case. Assert.Throws(() => { Task t = stream.WriteAsync(buffer, 0, buffer.Length+1); }); } } } [Fact] public void WriteAsync_OffsetPlusCountMaxValueExceedsBufferLength_Throws() { using (Stream stream = GetRequestStream()) { if (PlatformDetection.IsFullFramework) { // In .NET Framework, the request stream is a System.Net.ConnectStream // which throws ArgumentOutOfRangeException in this case. Assert.Throws(() => { Task t = stream.WriteAsync(buffer, int.MaxValue, int.MaxValue); }); } else { // In .NET Core, the request stream is a System.IO.MemoryStream // which throws ArgumentException in this case. Assert.Throws(() => { Task t = stream.WriteAsync(buffer, int.MaxValue, int.MaxValue); }); } } } ``` Discovered while investigating #17842 and related to #11873. For app-compat, we should consider fixing this. The simplest fix would be to create a derived class of MemoryStream() and make sure all Write* methods are overridden with matching argument validation before calling the base methods. +18788 area-System.IO How to check whether the PipeStream has data or not "In .NET, the pipe API doesn't expose any property the application can use in order to decide whether it's worth involving a Read operation or not. The other posts on this subject suggest using the async reading and CancellationToken for this. I don't like this very much because the Exception is intended to be used for exceptional cases only. Raising an OperationCancelledException every few milliseconds doesn't sound very appealing. Anyway, I tried that, as well. The reason I am writing this post is the fact that to me it seems the ReadAsync doesn't work either for this purpose. I guess this is because ReadAsync deals with unmanaged IO operations. IMO cancelling should, however, be possible when using PipeOptions.Asynchronous. Please see the code below; it's the Main of a console application. The code contains comments explaining what are the actual and the expected behaviors. Thank you, Ernest. ```csharp // This is the Main of a console application public void Main() { // This code is intended to verify if ReadAsync can be used to check the pipe doesn't have any data. string pipeName = ""XYZ""; // create the server (async)pipe and put it listenting mode var serverPipe = new System.IO.Pipes.NamedPipeServerStream(pipeName, System.IO.Pipes.PipeDirection.InOut,1,System.IO.Pipes.PipeTransmissionMode.Byte,System.IO.Pipes.PipeOptions.Asynchronous); var connWaiterTask = serverPipe.WaitForConnectionAsync(); // create the client pipe and connect it to server. The client intentionally doesn't send any data to the server. var clientPipe = new System.IO.Pipes.NamedPipeClientStream(""localhost"", pipeName, System.IO.Pipes.PipeDirection.InOut); //, System.IO.Pipes.PipeOptions.Asynchronous); clientPipe.Connect(); // prepare a cancellation source for ReadAsync System.Threading.CancellationTokenSource cts = new System.Threading.CancellationTokenSource(); byte[] inBuffer = new byte[1]; try { // invoke ReadAsync on the server pipe and immediately cancel the passed in cancellation token. var readAsyncTask = serverPipe.ReadAsync(inBuffer,0,1, cts.Token); System.Threading.Thread.Sleep(50); cts.Cancel(); // cancel ReadAsync //clientPipe.WriteByte(1); // If the client sends some data, it unblocks the ReadAsync on server side int n = readAsyncTask.Result; // The token is cancelled at this time, but ReadAsync doesn't seem to be aware of this. This line blocks indefinitely if the client doesn't send any data. } finally { // The execution never gets here. Why? Console.WriteLine(""FINISH""); } } ```" +18790 area-System.Reflection TypeBuilder.CreateTypeInfo() throws COMException instead of a more descriptive managed exception "With the following code: ```csharp var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(""RefField""), AssemblyBuilderAccess.Run); var moduleBuilder = assemblyBuilder.DefineDynamicModule(""RefFieldModule.dll""); var typeBuilder = moduleBuilder.DefineType(""RefFieldClass""); typeBuilder.DefineField(""RefInt"", typeof(int).MakeByRefType(), FieldAttributes.Public); var typeInfo = typeBuilder.CreateTypeInfo(); ``` The last line correctly throws, in that the runtime doesn't support a ByRef field. However, it throws a `System.Runtime.InteropServices.COMException`. As far as I can see, there aren't any try/catch blocks around the QCalls into the CLR, so this exception is actually bubbling up through the invoke. Seems like we should be returning some kind of better named and/or more descriptive managed exception in these cases. `COMException` is pretty unusual to see coming out of a framework API." +18791 area-System.Reflection [netcoreapp2.0] For an assembly loaded via 'Assembly.LoadFrom', the assembly it referenced cannot be loaded even if they are in the same folder "This is a breaking change in behavior compared with full .NET. **Scenario** I have libraries `Sample.dll` and `SampleDepend.dll` in the same folder `c:\temp`, and `Sample.dll` depends on `SampleDepend.dll`. In my `test.exe`, I load `Sample.dll` via `Assembly.LoadFrom`, and then invoke a method from `Sample.dll` using reflection, which will trigger the implicit loading of `SampleDepend.dll`. **Expected** The implicit loading of `SampleDepend.dll` succeeds, just like how it works with full .NET. **Actual** Exception thrown: `Could not load file or assembly 'SampleDepend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.` **Repro Steps** ```CSharp // test.exe namespace Test { public class Program { public static void Main() { var a = System.Reflection.Assembly.LoadFrom(@""c:\temp\Sample.dll""); var t = a.GetType(""Sample.Module""); var m = t.GetMethod(""GetName""); var r = m.Invoke(null, new object[0]); System.Console.WriteLine(r); } } } // Sample.dll using System; using SampleDepend; namespace Sample { public class Module { public static string GetName() { return Utils.GetName(); } } } // SampleDepend.dll using System; namespace SampleDepend { public class Utils { public static string GetName() { return ""SampleDepend.Utils""; } } } ``` **Rresult** ``` PS:159> .\bin\Debug\netcoreapp2.0\win10-x64\publish\test.exe Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'SampleDepend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified. at Sample.Module.GetName() --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at Test.Program.Main() in C:\Users\rocky\arena\dotnet\test\Program.cs:line 8 ``` **Full .NET Behavior** ``` c:\arena>Test.exe SampleDepend.Utils ``` I think when `Assembly.LoadFrom` successfully loads an assembly from path, it should put the path of the directory in the probing paths of the underlying load context, so that an assembly in the same folder that is referenced by the loaded assembly can be successfully loaded when running code from the loaded assembly." +18793 area-System.Data SqlClient fails to conenct to Sql Server 2014 on Ubuntu 16.04 LTS and CentOS When my DotNetCore app running on Dotnet core 1.0.1 tries to connect to Sql Server 2014 (SP2 with Cumulative Update 3 installed), I get the following exception _System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.IO.IOException: Unable to write data to the transport connection: Connection reset by peer. ---> System.Net.Sockets.SocketException: Connection reset by peer at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Data.SqlClient.SNI.SslOverTdsStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Security.SslStreamInternal.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStreamInternal.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.Data.SqlClient.SNI.SNITCPHandle.Send(SNIPacket packet) --- End of inner exception stack trace ---_ The same app can connect to the Sql Server when running on a Mac. The app can also connect when running inside a docker container on Mac. I used _microsoft/aspnetcore:1.1.1_ as the base image for the docker container. However, on Ubuntu on CentOS based host systems, the same app running within docker fails to connect to the Sql Server. +18794 area-Infrastructure tizen builds fail with parser error ``` 04:47:11 Build RootFS for armel tizen 04:47:11 + sudo docker run --privileged -i --rm -v /mnt/j/workspace/dotnet_corefx/master/tizen_armel_cross_release_prtest:/opt/corefx -w /opt/corefx t2wish/dotnetcore:ubuntu1404_cross_prereqs_v2 ./cross/build-rootfs.sh armel tizen --skipunmount 04:47:12 >>Start downloading files 04:47:12 Initialize arm base 04:47:12 /opt/corefx/cross/rootfs/armel/tizen_tmp/tizen_base_pkgs/build.xml:6: parser error : Opening and ending tag mismatch: hr line 5 and body 04:47:12 04:47:12 ^ 04:47:12 /opt/corefx/cross/rootfs/armel/tizen_tmp/tizen_base_pkgs/build.xml:7: parser error : Opening and ending tag mismatch: body line 3 and html 04:47:12 04:47:12 ^ 04:47:12 /opt/corefx/cross/rootfs/armel/tizen_tmp/tizen_base_pkgs/build.xml:8: parser error : Premature end of data in tag html line 1 04:47:12 + handle_exit 04:47:12 + set +x ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/tizen_armel_cross_debug_prtest/1511/console +18797 area-System.Runtime "Desktop: System.Runtime.InteropServices.Tests.SafeArrayTypeMismatchExceptionTests.SerializationRoundTrip failed with ""Xunit.Sdk.EqualException""" Failed test: System.Runtime.InteropServices.Tests.SafeArrayTypeMismatchExceptionTests.SerializationRoundTrip Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Runtime.InteropServices.Tests/SafeArrayTypeMismatchExceptionTests/SerializationRoundTrip/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 266) Expected: ···tterHelpers.cs:line 31 Actual: ···tterHelpers.cs:line 26 ↑ (pos 266) ~~~ STACK TRACE: ~~~ at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.AssertRoundtrips[T](T expected, Func`2[] additionalGetters) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs:line 39 at System.Runtime.InteropServices.Tests.SafeArrayTypeMismatchExceptionTests.SerializationRoundTrip() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.InteropServices\tests\System\Runtime\InteropServices\SafeArrayTypeMismatchExceptionTests.cs:line 18 ~~~ +18798 area-System.Collections IList-Reverse bug IList test = new List() {0, 4, 9}; test.Reverse(); //it's failure +18799 area-System.IO "Desktop: System.IO.Tests.PathTests.GetFullPath_Windows_ValidExtendedPaths failed with ""System.ArgumentException""" Failed test: System.IO.Tests.PathTests.GetFullPath_Windows_ValidExtendedPaths Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/PathTests/GetFullPath_Windows_ValidExtendedPaths_path_________________UNC____server6____share_________/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ System.ArgumentException : Illegal characters in path. ~~~ STACK TRACE: ~~~ at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath) at System.IO.Path.GetFullPath(String path) at System.IO.Tests.PathTests.GetFullPath_Windows_ValidExtendedPaths(String path) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 606 ~~~ +18800 area-System.Net HttpWebRequest BeginGetResponse with Abort test has race conditions While investigating #17842, I discovered a test that has inherent race conditions (fails all the time on .NET Framework but usually works on .NET Core). There is a race condition between starting the I/O with BeginGetResponse() and calling Abort(). It is possible that the I/O will have completed async on another thread before the Abort() even gets called. This means the I/O will be completed and the Abort() will be a no-op and no WebException will be produced. The test is left disabled for now in the code. ```c# [Theory, MemberData(nameof(EchoServers))] public void Abort_BeginGetResponseThenAbort_EndGetResponseThrowsWebException(Uri remoteServer) { HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); RequestState state = new RequestState(); state.Request = request; request.BeginGetResponse(new AsyncCallback(ResponseCallback), state); request.Abort(); WebException wex = state.SavedResponseException as WebException; Assert.Equal(WebExceptionStatus.RequestCanceled, wex.Status); } ``` +18801 area-System.Net Root cause System.Net.Requests test failures on NETFX "Finished investigation of failures on .NET Framework for System.Net.Requests. Cleaned up some tests that used ""global"" variables in the test class. Since tests are running in parallel, that wasn't a good idea. Changed to use the state object passed into the BeginGet* methods (which is best practice). Added new bugs #18784, #18787 and #18800. Fixes #17842." +18802 area-Serialization "Desktop: DataContractJsonSerializerTests.DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings failed with ""Xunit.Sdk.TrueException""" Failed test: DataContractJsonSerializerTests.DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/(root)/DataContractJsonSerializerTests/DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.True() Failure Expected: True Actual: False ~~~ STACK TRACE: at DataContractJsonSerializerTests.DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 2547 +18803 area-System.IO "Desktop: System.IO.IsolatedStorage.CreateDirectoryTests.CreateDirectory_ThrowsIsolatedStorageException failed with ""System.InvalidOperationException""" Failed test: System.IO.IsolatedStorage.CreateDirectoryTests.CreateDirectory_ThrowsIsolatedStorageException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.IsolatedStorage/CreateDirectoryTests/CreateDirectory_ThrowsIsolatedStorageException/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.IO.IsolatedStorage.IsolatedStorageException) Actual: typeof(System.InvalidOperationException): Store must be open for this operation. ~~~ STACK TRACE: ~~~ at System.IO.IsolatedStorage.IsolatedStorageFile.Reserve(UInt64 lReserve) at System.IO.IsolatedStorage.IsolatedStorageFile.CreateDirectory(String dir) at System.IO.IsolatedStorage.CreateDirectoryTests.<>c__DisplayClass1_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.IsolatedStorage\tests\System\IO\IsolatedStorage\CreateDirectoryTests.cs:line 26 ~~~ +18805 area-System.Diagnostics "Desktop: Tests under ""System.Diagnostics.Tracing.Tests.BasicEventSourceTests"" failed with ""Xunit.Sdk.EqualException""" Failed tests: BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener_UseEvents BasicEventSourceTests.TestsUserErrors.Test_BadEventSource_MismatchedIds Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/BasicEventSourceTests/TestsWrite/Test_Write_T_EventListener/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 0) Expected: Actual: System.Threading.SynchronizationEventSour··· ↑ (pos 0) ~~~ STACK TRACE: ~~~ at BasicEventSourceTests.TestUtilities.CheckNoEventSourcesRunning(String message) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestUtilities.cs:line 34 at BasicEventSourceTests.TestsWrite.Test_Write_T(Listener listener) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWrite.cs:line 80 at BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWrite.cs:line 46 ~~~ +18806 area-System.Diagnostics "Desktop: BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_Manifest_EventListener failed with ""System.InvalidOperationException""" Failed tests: BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_Manifest_EventListener BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_SelfDescribing_EventListener BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_SelfDescribing_EventListener_UseEvents BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_Manifest_EventListener_UseEvents BasicEventSourceTests.TestsWrite.Test_Write_T_In_Manifest_Serialization Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/BasicEventSourceTests/TestsWriteEvent/Test_WriteEvent_Manifest_EventListener/ MESSAGE: ~~~ System.InvalidOperationException : EventSource not enabled after 5 seconds ~~~ STACK TRACE: ~~~ at BasicEventSourceTests.Listener.WaitForEnable(EventSource logger) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\Listeners.cs:line 43 at BasicEventSourceTests.Listener.EventSourceSynchronousEnable(EventSource eventSource, FilteringOptions options) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\Listeners.cs:line 35 at BasicEventSourceTests.EventTestHarness.RunTests(List`1 tests, Listener listener, EventSource source, FilteringOptions options) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\EventTestHarness.cs:line 97 at BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent(Listener listener, Boolean useSelfDescribingEvents) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWriteEvent.cs:line 407 at BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_Manifest_EventListener() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWriteEvent.cs:line 46 ~~~ +18807 area-System.Diagnostics "Tests under ""System.Diagnostics.Tracing.Tests.BasicEventSourceTests"" failed with ""System.TypeLoadException""" Failed test: BasicEventSourceTests.TestsManifestNegative.Test_GenerateManifest_InvalidEventSources Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/BasicEventSourceTests/TestsManifestNegative/Test_GenerateManifest_InvalidEventSources/ MESSAGE: ~~~ System.TypeLoadException : Could not load type 'System.SR' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. ~~~ STACK TRACE: ~~~ at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) at BasicEventSourceTests.TestsManifestNegative.GetResourceStringFromReflection(String key) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsManifestNegative.cs:line 34 at BasicEventSourceTests.TestsManifestNegative.GetResourceString(String key, Object[] args) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsManifestNegative.cs:line 24 at BasicEventSourceTests.TestsManifestNegative.Test_GenerateManifest_InvalidEventSources() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsManifestNegative.cs:line 54 ~~~ +18808 area-System.Diagnostics "Desktop: BasicEventSourceTests.TestsManifestGeneration.Test_EventSource_NamedEventSource failed with ""Xunit.Sdk.EqualException""" Failed test: BasicEventSourceTests.TestsManifestGeneration.Test_EventSource_NamedEventSource Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/BasicEventSourceTests/TestsManifestGeneration/Test_EventSource_NamedEventSource/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 1 Actual: 0 ~~~ STACK TRACE: ~~~ at BasicEventSourceTests.TestsManifestGeneration.Test_EventSource_NamedEventSource() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsManifestGeneration.cs:line 37 ~~~ +18809 area-System.Reflection "Desktop: System.Reflection.Tests.AssemblyTests.LoadFile_NullPath_Netfx_ThrowsNullReferenceException failed with ""System.ArgumentNullException""" Failed test: System.Reflection.Tests.AssemblyTests.LoadFile_NullPath_Netfx_ThrowsNullReferenceException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Reflection.Tests/AssemblyTests/LoadFile_NullPath_Netfx_ThrowsNullReferenceException/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.NullReferenceException) Actual: typeof(System.ArgumentNullException): Value cannot be null. Parameter name: path ~~~ STACK TRACE: ~~~ at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters(String[] str) at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList) at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path) at System.Reflection.Assembly.LoadFile(String path) at System.Reflection.Tests.AssemblyTests.<>c.b__36_0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime\tests\System\Reflection\AssemblyTests.cs:line 341 ~~~ +18810 area-System.Xml "Desktop: System.Xml.Tests.XmlSystemPathResolverTests.TestResolveInvalidPaths failed with ""Xunit.Sdk.TrueException""" Failed test: System.Xml.Tests.XmlSystemPathResolverTests.TestResolveInvalidPaths Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Xml.Tests/XmlSystemPathResolverTests/TestResolveInvalidPaths/ MESSAGE: ~~~ Assert.True() Failure Expected: True Actual: False ~~~ STACK TRACE: ~~~ at System.Xml.Tests.XmlSystemPathResolverTests.AssertInvalidPath(String path) in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\XmlSystemPathResolverTests.cs:line 69 at System.Xml.Tests.XmlSystemPathResolverTests.TestResolveInvalidPaths() in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\XmlSystemPathResolverTests.cs:line 82 ~~~ +18811 area-System.Security "Desktop: System.Security.Cryptography.Rsa.Tests.KeyGeneration.GenerateKey_4096 failed with ""Xunit.Sdk.EqualException""" Failed test; System.Security.Cryptography.Rsa.Tests.KeyGeneration.GenerateKey_4096 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Cryptography.Rsa.Tests/KeyGeneration/GenerateKey_4096/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 4096 Actual: 1024 ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Rsa.Tests.KeyGeneration.GenerateKey(Func`2 getSize) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\KeyGeneration.cs:line 57 at System.Security.Cryptography.Rsa.Tests.KeyGeneration.GenerateKey(Int32 size) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\KeyGeneration.cs:line 43 at System.Security.Cryptography.Rsa.Tests.KeyGeneration.GenerateKey_4096() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\KeyGeneration.cs:line 38 ~~~ +18812 area-System.Xml "Desktop: System.Xml.Tests.CReaderTestModule.TCMaxSettings failed with ""Xunit.Sdk.EqualException""" Failed test: System.Xml.Tests.CReaderTestModule.TCMaxSettings Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Xml.Tests/CReaderTestModule/TCMaxSettings/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 0 Actual: 38 ~~~ STACK TRACE: ~~~ at System.Xml.Tests.CReaderTestModule.RunTestCase(Func`1 testCaseGenerator) in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\Readers\ReaderSettings\CReaderTestModule.cs:line 20 at System.Xml.Tests.CReaderTestModule.RunTest(Func`1 testCaseGenerator) in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\Readers\ReaderSettings\CReaderTestModule.cs:line 26 at System.Xml.Tests.CReaderTestModule.TCMaxSettings() in D:\j\workspace\outerloop_net---903ddde6\src\System.Private.Xml\tests\Readers\ReaderSettings\CReaderTestModule.cs:line 63 ~~~ +18813 area-System.IO "Desktop: System.IO.Tests.BinaryReaderTests.Read_InvalidEncoding failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.IO.Tests.BinaryReaderTests.Read_InvalidEncoding Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/BinaryReaderTests/Read_InvalidEncoding/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: (No exception was thrown) ~~~ STACK TRACE: ~~~ at System.AssertExtensions.Throws[T](String paramName, Func`1 testCode) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\AssertExtensions.cs:line 46 at System.IO.Tests.BinaryReaderTests.Read_InvalidEncoding() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO\tests\BinaryReader\BinaryReaderTests.cs:line 128 ~~~ +18814 area-System.Security "Desktop: Tests under ""System.Security.Claims.ClaimsIdentityTests"" failed with ""Xunit.Sdk.NullException""" Failed tests: System.Security.Claims.ClaimsIdentityTests.Ctor_EnumerableClaimAuthNameRoleType_AllEmpty System.Security.Claims.ClaimsIdentityTests.Ctor_IdentityEnumerableClaimAuthNameRoleType_ClaimsArrayEmptyTypes System.Security.Claims.ClaimsIdentityTests.Ctor_IdentityEnumerableClaimAuthNameRoleType_IdentityNullRestEmpty System.Security.Claims.ClaimsIdentityTests.Ctor_AuthenticationType_Blank System.Security.Claims.ClaimsIdentityTests.Ctor_EnumerableClaimAuthNameRoleType_TwoClaimsAndTypesEmpty Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Claims/ClaimsIdentityTests/Ctor_EnumerableClaimAuthNameRoleType_AllEmpty/ MESSAGE: ~~~ Assert.Null() Failure Expected: (null) Actual: ~~~ STACK TRACE: ~~~ at System.Security.Claims.ClaimsIdentityTests.Ctor_EnumerableClaimAuthNameRoleType_AllEmpty() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Claims\tests\ClaimsIdentityTests.cs:line 193 ~~~ +18815 area-System.Security "Desktop: System.Security.Permissions.Tests.SecurityElementTest.Attributes_Name_Invalid_MS failed with ""System.InvalidCastException""" Failed test: System.Security.Permissions.Tests.SecurityElementTest.Attributes_Name_Invalid_MS Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/SecurityElementTest/Attributes_Name_Invalid_MS/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.InvalidCastException): Unable to cast object of type 'System.Collections.DictionaryEntry' to type 'System.String'. ~~~ STACK TRACE: ~~~ at System.Security.SecurityElement.set_Attributes(Hashtable value) at System.Security.Permissions.Tests.SecurityElementTest.<>c__DisplayClass19_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\SecurityElementTests.cs:line 297 ~~~ +18816 area-System.Security "Desktop: Tests under ""System.Security.Permissions.Tests"" failed with ""System.ArgumentException""" Failed test: System.Security.Permissions.Tests.HostSecurityManagerTests.CallMethods Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/HostSecurityManagerTests/CallMethods/ MESSAGE: ~~~ System.ArgumentException : The application evidence does not contain a Fusion activation context. ~~~ STACK TRACE: ~~~ at System.Security.HostSecurityManager.DetermineApplicationTrust(Evidence applicationEvidence, Evidence activatorEvidence, TrustManagerContext context) at System.Security.Permissions.Tests.HostSecurityManagerTests.CallMethods() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\HostSecurityManagerTests.cs:line 16 ~~~ Failed test: System.Security.Permissions.Tests.PermissionSetTests.PermissionSetCallMethods Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/PermissionSetTests/PermissionSetCallMethods/ MESSAGE: ~~~ System.ArgumentException : Invalid XML. Missing required tag for type 'System.Security.PermissionSet'. ~~~ STACK TRACE: ~~~ at System.Security.PermissionSet.FromXml(SecurityElement et, Boolean allowInternalOnly, Boolean ignoreTypeLoadFailures) at System.Security.Permissions.Tests.PermissionSetTests.PermissionSetCallMethods() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\PermissionSetTests.cs:line 30 ~~~ +18817 area-System.Security "Desktop: System.Security.Permissions.Tests.ApplicationTrustTests.ApplicationTrustEnumeratorCallMethods failed with ""System.NullReferenceException""" Failed test: System.Security.Permissions.Tests.ApplicationTrustTests.ApplicationTrustEnumeratorCallMethods Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/ApplicationTrustTests/ApplicationTrustEnumeratorCallMethods/ MESSAGE: ~~~ System.NullReferenceException : Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.Security.Policy.ApplicationTrustEnumerator.MoveNext() at System.Security.Permissions.Tests.ApplicationTrustTests.ApplicationTrustEnumeratorCallMethods() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\ApplicationTrustTests.cs:line 33 ~~~ +18818 area-System.Security "Desktop: System.Security.Permissions.Tests.MembershipConditionTests.PublisherMembershipConditionCallMethods failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Permissions.Tests.MembershipConditionTests.PublisherMembershipConditionCallMethods Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/MembershipConditionTests/PublisherMembershipConditionCallMethods/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : m_safeCertContext is an invalid handle. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.X509Certificates.X509Certificate.ThrowIfContextInvalid() at System.Security.Cryptography.X509Certificates.X509Certificate.get_Subject() at System.Security.Policy.PublisherMembershipCondition.ToString() at System.Security.Permissions.Tests.MembershipConditionTests.PublisherMembershipConditionCallMethods() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\MembershipConditionTests.cs:line 88 ~~~ +18819 area-System.Security "Desktop: System.Security.Permissions.Tests.SerializationTests.SerializeDeserialize_Succeeds failed with ""System.MemberAccessException""" Failed test: System.Security.Permissions.Tests.SerializationTests.SerializeDeserialize_Succeeds Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/SerializationTests/SerializeDeserialize_Succeeds/ MESSAGE: ~~~ System.MemberAccessException : Cannot create a type for which Type.ContainsGenericParameters is true. ~~~ STACK TRACE: ~~~ at System.Runtime.Serialization.FormatterServices.nativeGetUninitializedObject(RuntimeType type) at System.Security.Permissions.Tests.SerializationTests.d__0.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\SerializationTests.cs:line 33 at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() ~~~ +18820 area-System.Security "Desktop: System.Security.Permissions.Tests.PolicyTests.PolicyLevelCallMethods failed with ""System.Security.Policy.PolicyException""" Failed test: System.Security.Permissions.Tests.PolicyTests.PolicyLevelCallMethods Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Permissions.Tests/PolicyTests/PolicyLevelCallMethods/ MESSAGE: ~~~ System.Security.Policy.PolicyException : PolicyLevel object not based on a file cannot be recovered. ~~~ STACK TRACE: ~~~ at System.Security.Policy.PolicyLevel.Recover() at System.Security.Permissions.Tests.PolicyTests.PolicyLevelCallMethods() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Permissions\tests\PolicyTests.cs:line 28 ~~~ +18821 area-System.Runtime "Desktop: System.Tests.GetEnvironmentVariable.InvalidArguments_ThrowsExceptions failed with ""Xunit.Sdk.EqualException""" Failed test: System.Tests.GetEnvironmentVariable.InvalidArguments_ThrowsExceptions Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Tests/GetEnvironmentVariable/InvalidArguments_ThrowsExceptions/ MESSAGE: ~~~ Assert.Equal() Failure Expected: value Actual: (null) ~~~ STACK TRACE: ~~~ at System.AssertExtensions.Throws[T](String paramName, Action action) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\AssertExtensions.cs:line 38 at System.Tests.GetEnvironmentVariable.InvalidArguments_ThrowsExceptions() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs:line 22 ~~~ +18822 area-System.Runtime "Desktop: System.Tests.OperatingSystemTests.Ctor_InvalidArgs_Throws failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Tests.OperatingSystemTests.Ctor_InvalidArgs_Throws Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Tests/OperatingSystemTests/Ctor_InvalidArgs_Throws/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Illegal enum value: -1. Parameter name: platform ~~~ STACK TRACE: ~~~ at System.OperatingSystem..ctor(PlatformID platform, Version version, String servicePack) at System.Tests.OperatingSystemTests.<>c.b__1_0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\OperatingSystemTests.cs:line 37 ~~~ +18823 area-System.IO "Desktop: System.IO.Tests.PathTests.GetFullPath_Windows_LegacyArgumentExceptionPaths failed with ""System.ArgumentException""" Failed test: System.IO.Tests.PathTests.GetFullPath_Windows_LegacyArgumentExceptionPaths Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/PathTests/GetFullPath_Windows_LegacyArgumentExceptionPaths_path____C_______/ MESSAGE: ~~~ System.ArgumentException : The path is not of a legal form. ~~~ STACK TRACE: ~~~ at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) at System.IO.Path.GetFullPathInternal(String path) at System.IO.Path.GetFullPath(String path) at System.IO.Tests.PathTests.GetFullPath_Windows_LegacyArgumentExceptionPaths(String path) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 507 ~~~ +18824 area-Serialization Add two desktop test cases for DataContractSerializer test @shmao @huanwu Please help review the tset code. +18825 area-System.IO "Desktop: System.IO.Tests.PathTests.IsPathRooted_Windows_Invalid failed with ""Xunit.Sdk.FalseException""" Failed test: System.IO.Tests.PathTests.IsPathRooted_Windows_Invalid Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/PathTests/IsPathRooted_Windows_Invalid_value__________foo___/ MESSAGE: ~~~ Assert.False() Failure Expected: False Actual: True ~~~ STACK TRACE: ~~~ at System.IO.Tests.PathTests.IsPathRooted_Windows_Invalid(String value) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 240 ~~~ +18826 area-System.IO "Desktop: System.IO.Tests.PathTests.GetFullPath_Windows_ValidExtendedPaths failed with ""System.NotSupportedException""" Failed test: System.IO.Tests.PathTests.GetFullPath_Windows_ValidExtendedPaths Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/PathTests/GetFullPath_Windows_ValidExtendedPaths_path_________________C_________/ MESSAGE: ~~~ System.NotSupportedException : The given path's format is not supported. ~~~ STACK TRACE: ~~~ at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath) at System.IO.Path.GetFullPath(String path) at System.IO.Tests.PathTests.GetFullPath_Windows_ValidExtendedPaths(String path) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 610 ~~~ +18827 area-System.IO "Desktop: System.IO.Tests.PathTests.GetFullPath_Windows_Wildcards and System.IO.Tests.PathTests.GetPathRoot_Windows_UncAndExtended failed with ""Xunit.Sdk.EqualException""" System.IO.Tests.PathTests.GetFullPath_Windows_Wildcards [FAIL] MESSAGE: ~~~ Assert.Equal() Failure Expected: path Actual: (null) ~~~ STACK TRACE: ~~~ at System.AssertExtensions.Throws[T](String paramName, Func`1 testCode) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\AssertExtensions.cs:line 49 at System.IO.Tests.PathTests.GetFullPath_Windows_Wildcards(Char wildcard) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 708 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/PathTests/GetFullPath_Windows_Wildcards_wildcard______/ System.IO.Tests.PathTests.GetPathRoot_Windows_UncAndExtended [FAIL] MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 7) Expected: \\\\?\\UNC\\test\\unc Actual: \\\\?\\UNC ↑ (pos 7) ~~~ STACK TRACE: ~~~ at System.IO.Tests.PathTests.GetPathRoot_Windows_UncAndExtended(String value, String expected) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 203 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.IO.Tests/PathTests/GetPathRoot_Windows_UncAndExtended_value_________________UNC____test____unc____path____to____something____expected_________________UNC____test____unc___/ +18828 area-System.Runtime "Desktop: System.Runtime.Versioning.Tests.VersioningHelperTests.Test1 failed with ""Xunit.Sdk.EqualException""" Failed test: System.Runtime.Versioning.Tests.VersioningHelperTests.Test1 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Runtime.Versioning.Tests/VersioningHelperTests/Test1/ MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 10) Expected: TestFile_r3 Actual: TestFile_r12_ad3 ↑ (pos 10) ~~~ STACK TRACE: ~~~ at System.Runtime.Versioning.Tests.VersioningHelperTests.Test1() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\Runtime\Versioning\VersioningHelperTests.cs:line 16 ~~~ +18829 area-System.Reflection "Desktop: System.Reflection.Tests.AssemblyNameProxyTests.ReferenceMatchesDefinition failed with ""Xunit.Sdk.EqualException""" Failed test: System.Reflection.Tests.AssemblyNameProxyTests.ReferenceMatchesDefinition Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Reflection.Tests/AssemblyNameProxyTests/ReferenceMatchesDefinition_a1__mscorlib__Version_4_0_0_0__Culture_neutral__PublicKeyToken_b77a5c561934e089__a2__System_Runtime_Extensions__expected__True_/ MESSAGE: ~~~ Assert.Equal() Failure Expected: True Actual: False ~~~ STACK TRACE: ~~~ at System.Reflection.Tests.AssemblyNameProxyTests.ReferenceMatchesDefinition(AssemblyName a1, AssemblyName a2, Boolean expected) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\Reflection\AssemblyNameProxyTests.cs:line 37 ~~~ +18833 area-Serialization Construct the baseline at runtime and embed the DateTime string into the baseline Fix https://github.com/dotnet/corefx/issues/18539 Fix #18538 Fix https://github.com/dotnet/corefx/issues/18802 @shmao please help review the code. +18834 area-System.Console WindowAndCursorProps.SetWindowPosition_GetWindowPosition_ReturnsExpected failed "test case failed on Windows 10 Pro(x64) when COMPlus_GCStress=2: ``` ``` " +18835 area-System.Collections System.Collections.NonGeneric.Performance.tests failed "https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_portablelinux_release/24/testReport/ ---which shows no failures Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_portablelinux_release/24/consoleFull#-15630985984b7730ef-150b-4be7-a00f-82ba6c50792b Shows ""System.Collections.NonGeneric.Performance.tests"" failed" +18836 area-System.Diagnostics Clean build yields 11 warnings about TraceEvent package I just did: ``` git clean -xdf git pull upstream master build ``` and I get the following warnings as part of the build: ``` C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : Detected package downgrade: Microsoft.Diagnostics.Tracing.TraceEvent from 1.0.3-alpha-experimental to 1.0.0-alpha-experimental [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> xunit.performance.metrics (>= 1.0.0-beta-build0003) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.3-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.0-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : Detected package downgrade: Microsoft.Diagnostics.Tracing.TraceEvent from 1.0.3-alpha-experimental to 1.0.0-alpha-experimental [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> xunit.performance.api (>= 1.0.0-beta-build0003) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.3-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.0-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : Detected package downgrade: Microsoft.Diagnostics.Tracing.TraceEvent from 1.0.3-alpha-experimental to 1.0.0-alpha-experimental [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> xunit.performance.api (>= 1.0.0-beta-build0003) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.3-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.0-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : Detected package downgrade: Microsoft.Diagnostics.Tracing.TraceEvent from 1.0.3-alpha-experimental to 1.0.0-alpha-experimental [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> xunit.performance.metrics (>= 1.0.0-beta-build0003) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.3-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] C:\Users\stoub\Source\repos\corefx\Tools\dotnetcli\sdk\2.0.0-preview1-005724\NuGet.targets(97,5): warning : XUnit.Runtime (>= 4.4.0) -> Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.0-alpha-experimental) [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] [C:\Users\stoub\Source\repos\corefx\external\test-runtime\XUnit.Runtime.depproj] ``` cc: @weshaggard, @ericstj, @brianrob +18845 area-Infrastructure Could not load file or assembly 'System.Core, version=4.0.0.0' because of the manisfest... "Hello, I have an issue using some .Net Core libraries, from France ! I had a .NET 4.5.1 library which I want to use in a new .NET Core project as a Nuget package. The package installed well on the .NET Core project, but when running, it stills wants to load the old assembly .Net Core (I suppose when trying to use Linq methods or collections methods) and I have the following error : System.IO.FileLoadException Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The located assembly's manifest definition does not match the assembly reference How can I fix it ? I do not found anywhere a solution to this issue. Below is my .nuspec file : ``` *** *** *** *** *** *** *** *** *** ``` Thank you in advance. Chifton" +18846 area-System.Security Desktop: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP failing From @Jiayili1 in https://github.com/dotnet/corefx/issues/18476 Another test failed with the same issue, detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/ImportNoDP/ Failed test: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: (No exception was thrown) ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 277 ~~~ +18847 area-System.Collections Add ImmutableArray.AsReadOnlySpan() Can create a zero copy `ReadOnlySpan` over its internal array; would be a valid approach? +18848 area-System.Threading System.Threading Area Performance Tests This is a tracking issue describing the current performance tests we have in the System.Threading area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). NOTE: System.Threading has types defined in several contracts. I'm listing everything in this single issue, but the tests themselves may go into different test projects, depending on how we feel the tests are best organized. ## Existing Coverage: There is a very small amount of existing coverage for two types. We should audit that these existing test cases are 1) valuable and 2) conform to the guidelines linked to above. It's likely that we should just focus on writing new tests and adding better coverage than spending much time on the two existing test cases. We currently have tests for: * ReaderWriterLockSlim * EventWaitHandle ## Missing Coverage: ### System.Threading.Thread * Thread ### System.Runtime * Task * TaskFactory * TaskScheduler * CancellationToken ### System.Threading * Interlocked * Monitor * Semaphore * Volatile * SpinLock, SpinWait * SynchronizationContext * Barrier * ExecutionContext * LazyInitializer * ManualResetEvent, AutoResetEvent ### System.Threading.Tasks * AsyncTaskMethodBuilder * TaskCompletionSource ### System.Threading.Tasks.Extensions * ValueTask +18849 area-Infrastructure Running MusicStore sample on NET461 fails with an exception **Repro:** - Clone https://github.com/aspnet/MusicStore - Checkout the branch `kichalla/net461` - cd `samples/MusicStore` - dotnet restore - dotnet build - Run `samples\MusicStore\bin\Debug\net461\MusicStore.exe` **Expected:** Application starts successfully and you can make a request successfully to `http://localhost:5000/` to see the home page. **Actual:** Application fails to start with an exception ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.AspNetCore.Hosting.WebHostExtensions.d__5.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host) at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host) at MusicStore.Program.Main(String[] args) ``` A pull request where discussion about this has been going on: https://github.com/aspnet/MusicStore/pull/775 cc @Eilon @pranavkm +18850 area-System.Net Change exception returned when serializing HttpWebRequest to match NETFX "Comments from PR #18801: From @safern ""Binary Serialization is now supported on .NET Core 2.0 but it wasn't in 1.1 or 1.0; so probably that is why we were throwing PNSE, so I think the same thing, it sounds reasonable to throw SE."" ```c# [Fact] public void HttpWebRequest_Serialize_Fails() { using (MemoryStream fs = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); var hwr = HttpWebRequest.CreateHttp(""http://localhost""); if (PlatformDetection.IsFullFramework) { // .NET Framework throws a more detailed exception. // System.Runtime.Serialization.SerializationException): // Type 'System.Net.WebRequest+WebProxyWrapper' in Assembly 'System, Version=4.0.0. // 0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. Assert.Throws(() => formatter.Serialize(fs, hwr)); } else { // TODO: Issue #18850. Change HttpWebRquest to throw SerializationException similar to .NET Framework. Assert.Throws(() => formatter.Serialize(fs, hwr)); } } } ```" +18851 area-System.Net Investigate behavior difference with NETFX with HttpWebResponse after closing stream "Comments from PR #18801 From @stephentoub ""Is the response Stream usable in this state in desktop? If so, seems like one we should fix in core."" ```c# [OuterLoop] [Fact] public async Task HttpWebResponse_Close_Success() { await LoopbackServer.CreateServerAsync(async (server, url) => { HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; await LoopbackServer.ReadRequestAndSendResponseAsync(server, $""HTTP/1.1 200 OK\r\n"" + $""Date: {utcNow:R}\r\n"" + ""Content-Type: application/json;charset=UTF-8\r\n"" + ""Content-Length: 5\r\n"" + ""\r\n"" + ""12345""); WebResponse response = await getResponse; HttpWebResponse httpResponse = (HttpWebResponse)response; httpResponse.Close(); if (PlatformDetection.IsFullFramework) { Stream stream = httpResponse.GetResponseStream(); } else { // TODO: Issue #18851. Investigate .NET Core to see if it can // match .NET Framework. Assert.Throws(() => { httpResponse.GetResponseStream(); }); } }); ```" +18854 area-Serialization Add a test to verify using duration as the XmlQualifiedName for TimeSpan "#18761 ```c# AddNonXsdPrimitive(typeof(TimeSpan), ""TimeSpan"", UrtTypes.Namespace, ""TimeSpan"", new XmlQualifiedName(""**duration**"", XmlSchema.Namespace), new XmlSchemaFacet[0], TypeFlags.CanBeAttributeValue | TypeFlags.CanBeElementValue | TypeFlags.XmlEncodingNotRequired); ``` Verify the duration in this code." +18858 area-System.IO clrcompression.dll fails BinSkim checks for stack protection features "Instances of clrcompression.dll (e.g. by compiling a UWP app against [System.IO.Compression](https://www.nuget.org/packages/runtime.win7-x64.runtime.native.System.IO.Compression) fail security checks in BinSkim. Microsoft [recommends the use](https://www.microsoft.com/en-us/SDL/adopt/tools.aspx) of BinSkim to ensure binaries are in compliance with SDL requirements and recommendations. Using the [latest version of BinSkim](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BinSkim/1.4.0), e.g. ""BinSkim.exe analyze clrcompression.dll -v -o results.sarif"", there are a number of security issues flagged, but in particular for this post: ""BA2011"": { ""id"": ""BA2011"", ""name"": ""EnableStackProtection"", ""shortDescription"": ""Binaries should be built with the stack protector buffer security feature (/GS) enabled to increase the difficulty of exploiting stack buffer overflow memory corruption vulnerabilities."", ""fullDescription"": ""Binaries should be built with the stack protector buffer security feature (/GS) enabled to increase the difficulty of exploiting stack buffer overflow memory corruption vulnerabilities. To resolve this issue, ensure that all modules compiled into the binary are compiled with the stack protector enabled by supplying /GS on the Visual C++ compiler command line."", ""messageFormats"": { ""Pass"": ""'{0}' is a C or C++ binary built with the stack protector buffer security feature enabled for all modules, making it more difficult for an attacker to exploit stack buffer overflow memory corruption vulnerabilities. "", ""Error"": ""'{0}' is a C or C++ binary built with the stack protector buffer security feature disabled in one or more modules. The stack protector (/GS) is a security feature of the compiler which makes it more difficult to exploit stack buffer overflow memory corruption vulnerabilities. To resolve this issue, ensure that your code is compiled with the stack protector enabled by supplying /GS on the Visual C++ compiler command line. The affected modules were: {1}"", ""Error_UnknownModuleLanguage"": ""'{0}' contains code from an unknown language, preventing a comprehensive analysis of the stack protector buffer security features. The language could not be identified for the following modules: {1}."", ""NotApplicable_InvalidMetadata"": ""'{0}' was not evaluated for check '{1}' as the analysis is not relevant based on observed metadata: {2}."" }, ""defaultLevel"": ""warning"", ""helpUri"": ""https://github.com/microsoft/binskim"", ""properties"": { ""equivalentBinScopeRuleReadableName"": ""GSCheck"" } }, Note that the offending code in CoreFx seems to be replacing the security cookie with its own (and adding its own enhanced randomization): https://github.com/dotnet/corefx/blob/f47e50054279ee285fb8ae9ed85d2985b64bf553/src/Native/Windows/clrcompression/crt.cpp " +18859 area-System.Data Add retries to port checking in SQL SplitPacketTest Reduce min wait time in SplitPacketTest setup by adding multiple tries on shorter sleep intervals +18860 area-System.Data Remove Pubs database dependency in SqlClient tests Only three tests were using the sample Pubs database instead of Northwind. This complicated test setup for other users for no added benefit, so I changed these tests to use Northwind. +18861 area-System.Data Remove fragile connection string parsing from Sql Named Pipes tests Having connection string parsing in these tests added extra complexity for no benefit. +18862 area-System.Net System.Net.Sockets Area Performance Tests This is a tracking issue describing the current performance tests we have in the System.Net.Sockets area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). ## Existing Coverage: There is an existing test project, which contains some test classes and methods. These are old tests, and are not written against the xunit.performance framework. It's unclear if these tests are defunct, or if we are still using them in a manual fashion. At the very least, we need to clean them up and make sure: * They follow the guidelines linked above * Are valuable when compared with adding new baseline coverage (listed below). ## Missing Coverage: * Socket * TcpClient * UdpClient * SocketTaskExtensions * SocketAsyncEventArgs +18863 area-System.Security HashAlgorithm.TransformFinalBlock doesn't reset the hash state This issue is for tracking changes which should be ported to netfx Related changes: https://github.com/dotnet/corefx/blob/861c91ef4815cc8f525049e83544d0872163f0d3/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HashAlgorithm.cs#L87-L96 Related issues: https://github.com/dotnet/corefx/issues/18721 Please remove ReinitilizeHashIfNetfx in HashAlgorithmTest.cs after port is done. cc: @bartonjs +18864 area-System.Net Incomplete HTTP responses behaves different between Core and NETFX "While investigation #17691, I discovered a test that hangs on .NET Framework. While the test intended to test a scenario with a ""server that slowly returned data"", it is testing it in the wrong manner. Returning an HTTP response with a Content-Length header that is geater than the number of bytes actually being returned will cause a client to wait until all promised bytes are returned. This is how, for example, the long-polling type of scenarios work. The fact the .NET Core is working and returning ""partial data"" doesn't seem right. I believe the bug is that .NET Core is not behaving as per RFC. And this test is testing something invalid. If we really wanted a specific test for ""slow data"", we should return all data promised (but perhaps delayed slightly). ```c# [ActiveIssue(18864)] [OuterLoop] // TODO: Issue #11345 [Fact] public async Task SendAsync_ReadFromSlowStreamingServer_PartialDataReturned() { await LoopbackServer.CreateServerAsync(async (server, url) => { using (var client = new HttpClient()) { Task getResponse = client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead); await LoopbackServer.AcceptSocketAsync(server, async (s, stream, reader, writer) => { while (!string.IsNullOrEmpty(reader.ReadLine())) ; await writer.WriteAsync( ""HTTP/1.1 200 OK\r\n"" + $""Date: {DateTimeOffset.UtcNow:R}\r\n"" + ""Content-Length: 16000\r\n"" + ""\r\n"" + ""less than 16000 bytes""); using (HttpResponseMessage response = await getResponse) { var buffer = new byte[8000]; using (Stream clientStream = await response.Content.ReadAsStreamAsync()) { int bytesRead = await clientStream.ReadAsync(buffer, 0, buffer.Length); _output.WriteLine($""Bytes read from stream: {bytesRead}""); Assert.True(bytesRead < buffer.Length, ""bytesRead should be less than buffer.Length""); } } return null; }); } }); } ```" +18868 area-System.Diagnostics Add Exists check to RemoteExecutorConsoleApp Some tests are failing on Unix with an error that appears to be indicating that the RemoteExecutorConsoleApp.exe is missing. I'm adding an explicit check to confirm or deny that this is the case. It is also possible that the exe can go missing between the check passing and the process startup failing, but there's not much I can do about that other than ignore the SIGCHLD failures which I would prefer to not do except as a last resort. Also modified a test to use a random file path. @danmosemsft @stephentoub Helps to diagnose root cause of #16688 +18869 area-System.Net System.Net.Tests.HttpRequestStreamTests.Read_FullLengthSynchronous_Success failed in CI "This test has a ~1% failure rate on windows 2008 when running on an offline CI machine repeatedly in a loop, and has recently failed in CI. In all cases the detail is as follows (including the test arguments of True, """") ``` System.Net.Tests.HttpRequestStreamTests.Read_FullLengthSynchronous_Success(transferEncodingChunked: True, text: \""\"") [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.HttpRequestStreamTests.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ```" +18870 area-System.Net Missing parameter validation for CredentialCache.Add method While investigating #17691, discovered that CredentialCache is not doing proper validation with the 'Add' method. On .NET Core, it allows for DefaultCredentials to be added for auth types such as 'Basic'. On .NET Framework, it throws: >System.ArgumentException : Default credentials cannot be supplied for the Basic authentication scheme. Parameter name: authType Stack Trace: at System.Net.CredentialCache.Add(Uri uriPrefix, String authType, NetworkCredential cred) +18871 area-Serialization Skip DCJS_StringAsRoot on NetFx. Test `DCJS_StringAsRoot ` was for a fix originally made on NetCore. Later we port the fix to Desktop (4.7 and above). As Xunit runner currently targets 4.6.1, the test fails on NetFx. The PR is to skip the test on netfx. Fix #18723 +18873 area-System.Net HttpClient (libcurl + SecureTransport) client certificate support (macOS) Did a bit of digging on how libcurl with SecureTransport on macOS loads it's client side certificate, and it seems it can be loaded from a file on disk or from a label in keychain. https://github.com/curl/curl/blob/33cfcfd9f0378625d3bddbd2c8ac5aad4b646f26/lib/vtls/darwinssl.c#L1354 Given how X509Certificate2 does it certificate handling on windows would it be possible to something similar: Approach 1: 1. Save the certificate on import to a temp folder encrypted with a random generated password stored with X509Certificate2 object. 2. Pass the file location and random password to libcurl. Approach 2. 1. Load the certificate into the keychain and get back label save with with X509Certificate2 object. 2. Pass label to libcurl. I would be happy to give either option a go if I got a bit of help to get started. +18875 area-System.Net Root cause System.Net.Http test failures on NETFX Finished investigation of failures on .NET Framework for System.Net.Http. Added specific NETFX test changes where necessary. Opened up additional bugs for investigation. Added missing parameter validation for HttpClientHandler.MaxConnectionsPerServer for the net46 OOB. This matches .NET Core now. Removed some test code that was incorrectly trying to do CredentialCache.Add() with a 'basic' authtype and using DefaultCredentials. This is invalid and throws exception on netfx. Added #18870. Remove PlatformNotSupportedProxy test code. It was throwing an exception on netfx and the purpose of it didn't seem to make sense in the one test that was using it. Fixes #17691. +18877 area-System.Runtime [netcoreapp2.0] 'AppDomain.CurrentDomain.GetAssemblies()' doesn't return the emitted dynamic assembly "`AppDomain.CurrentDomain.GetAssemblies()` doesn't return dynamically emitted assemblies. **Repro** ```c# using System; using System.Reflection; using System.Reflection.Emit; namespace Sample { class Program { static void Main(string[] args) { AssemblyName aName = new AssemblyName(""Microsoft.PowerShell.Cmdletization.GeneratedTypes""); AssemblyBuilder ab = AssemblyBuilder.DefineDynamicAssembly(aName, AssemblyBuilderAccess.Run); ModuleBuilder mb = ab.DefineDynamicModule(aName.Name); string fullEnumName = ""Microsoft.PowerShell.Cmdletization.GeneratedTypes.TestEnum""; Type underlyingType = typeof(Int32); EnumBuilder eb = mb.DefineEnum(fullEnumName, TypeAttributes.Public, underlyingType); eb.DefineLiteral(""Single"", 0); eb.DefineLiteral(""Multiple"", 1); TypeInfo ti = eb.CreateTypeInfo(); Console.WriteLine(""Dynamic assembly emitted: {0}"", ti.Assembly.FullName); bool isEmittedAssemblyFound = false; var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly item in allAssemblies) { if (item.FullName == ti.Assembly.FullName) { isEmittedAssemblyFound = true; Console.WriteLine(""Found it""); break; } } if (!isEmittedAssemblyFound) { Console.WriteLine(""AppDomain.CurrentDomain.GetAssemblies() doesn't return the emitted dynamic assemlby""); } } } } ``` **Expected Result** The program prints `Found it` **Actual Result** ``` Dynamic assembly emitted: Microsoft.PowerShell.Cmdletization.GeneratedTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null AppDomain.CurrentDomain.GetAssemblies() doesn't return the emitted dynamic assemlby ``` Aren't dynamically emitted assembly loaded in the default assembly load context? Why `AppDomain.CurrentDomain.GetAssemblies()` not returning them?" +18879 area-Serialization Improving performance of XML Serializer This improves the speed of writing the indents when writing XML. +18881 area-System.Diagnostics Activity: Reverse root Id to make it work better with hashing algorithms See #18418 for more details. /cc @vancem @Dmitry-Matveev @SergeyKanzhelev +18882 area-System.Security RSA.ImportParameters: should compute optional parameters? Currently when optional parameter is missing (i.e. DP) we throw an exception on Core (Cng on Desktop ignores optional parameters). Those can theoretically be computed but that could potentially open window for timing attacks in some scenarios. Should we compute those parameters, create a new API for computing missing parameters or not support it? (or possibly add some mitigation against those - not sure how since even with random timeout you could still calculate average time which would void the randomness) Related issue: https://github.com/dotnet/corefx/issues/18846 - please fix before closing cc: @bartonjs @morganbr +18883 area-System.Reflection GetMetadataReader() throws BadImageFormatException "Repro, ```c# var assemblyPath = ""C:\\temp\\Microsoft.AspNetCore.Mvc.dll""; using (var stream = File.Open(assemblyPath, FileMode.Open)) { //var assembly = AssemblyLoadContext.Default.LoadFromStream(stream); // This works! var provider = MetadataReaderProvider.FromMetadataStream(stream); var reader = provider.GetMetadataReader(); // throws - Invalid COR20 header signature. var attributes = reader.CustomAttributes; } ``` I am trying to read some assembly attributes without loading it. But when I try to call `GetMetadataReader()`, I get `BadImageFormatException: 'Invalid COR20 header signature.'` Related issue: https://github.com/dotnet/corefx/issues/1050" +18886 area-System.ComponentModel Fix System.ComponentModel.Annotations test bug Looks like in: https://github.com/dotnet/corefx/pull/17874 this test was added but as it was a difference in behavior and it was copied over from the .Net Core one we missed to update the expected exception to what it actually throws, look at the test name. Fixes: https://github.com/dotnet/corefx/issues/18542 cc: @danmosemsft @lajones @divega +18887 area-System.Diagnostics Add HTTP Correlation protocol We created HTTP Correlation protocol as a part of correlation feature: it describes Id format and generation (that is implemented in `System.Diagnostics.Activity`) and HTTP headers that carry `Activity.Id` and `Activity.Baggage` (used in System.Net.Http and Asp.Net Core). The protocol will be submitted to IETF, but until it's officially published as RFC, we want to store it in corefx repo unless someone has a better suggestion. /cc @vancem @SergeyKanzhelev +18888 area-System.IO IO tests need conditionalized for new behavior to run correctly on desktop Tests need split up and results need conditionalized on the relevant new behavior being enabled. I already wrote a [helper](https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/tests/PathFeatures.cs#L38) for this. It needs moved to common. Creating this issue to tag the various tests against. +18890 area-System.Net Failure in System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingContentLengthSemantics_Success https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_portablelinux_release/lastCompletedBuild/testReport/System.Net.Http.Functional.Tests/PostScenarioTest/PostUsingContentLengthSemantics_Success_serverUri__https___corefx_net_cloudapp_net_Echo_ashx_/ System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingContentLengthSemantics_Success(serverUri: https://corefx-net.cloudapp.net/Echo.ashx) (from (empty)) ``` MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) +++++++++++++++++++ STACK TRACE: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.PostScenarioTest.d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous loc ation where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous loc ation where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` +18892 area-System.Security Two CryptoConfig members throw PNSE "@bartonjs comments: ""Wasn’t supported in Mono/Xamarin, and costs a world of pain"" ``` M:System.Security.Cryptography.CryptoConfig.AddAlgorithm(System.Type,System.String[]) M:System.Security.Cryptography.CryptoConfig.AddOID(System.String,System.String[]) ``` If it's not supported in Mono this is not necessarily a must have. Also, useage seems negligible. Please triage to 2.0, Future, or close." +18893 area-System.Collections ConcurrentDictionary OnDeserialized exception With .NET Core 2.0 preview, `ConcurrentDictionary` is throwing an error when `OnDeserialized` is called by Newtonsoft.Json. I would expect `ConcurrentDictionary` either to not throw an error, or throw a better error than `NullReferenceException`. See https://github.com/JamesNK/Newtonsoft.Json/issues/1294 for more details. ``` Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object. at System.Collections.Concurrent.ConcurrentDictionary`2.InitializeFromCollection(IEnumerable`1 collection) at System.Collections.Concurrent.ConcurrentDictionary`2.OnDeserialized(StreamingContext context) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at Newtonsoft.Json.Serialization.JsonContract.InvokeOnDeserialized(Object o, StreamingContext context) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateDictionary(IDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, JsonProperty containerProperty, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) at test.Program.Main() ``` In the non netstandard version of Json.NET I avoided this error with a hack by not calling OnDeserialized for this type. It would be nice if ConcurrentDictionary was fixed properly. https://github.com/JamesNK/Newtonsoft.Json/blob/aa5f28c09732db5fb3e316433547ea7cdecd8804/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs#L890 +18894 area-System.Security Two X509 members throw PNSE on non Windows "``` M:System.Security.Cryptography.X509Certificates.X509Chain.#ctor(System.IntPtr) // mac and unix M:System.Security.Cryptography.X509Certificates.X509Store.#ctor(System.IntPtr) // linux ``` ~0% usage in our corpuses. @bartonjs mentioned the former is ""tricky on mac"". Please triage for 2.0. " +18896 area-System.Security CspParameters.KeyPassword throws PNSE and should not This throws PNSE because it accepts SecureString which was not available earlier. It should be enabled ``` P:System.Security.Cryptography.CspParameters.KeyPassword ``` The implementation is trivial, `public SecureString KeyPassword { get; set; }` . In Desktop, it's used only by an internal method we do not have. So it's low priority to implement this, nevertheless it is an unnecessary public break. +18898 area-System.Security PKCS1MaskGenerationMethod limited to SHA1 -- desktop is not "PKCS1MaskGenerationMethod.HashName will not accept any value other than ""SHA1"" (or null). Otherwise it throws PNSE. In desktop it accepted any value, and would then pass it to `CryptoConfig.CreateFromName(HashNameValue);` I see ~0% usage. Is this limitation acceptable for 2.0? " +18899 area-Serialization "Desktop: XmlDictionaryWriterTest.XmlBaseWriter_WriteStartEndElementAsync failed with ""System.NotImplementedException""" Failed test: XmlDictionaryWriterTest.XmlBaseWriter_WriteStartEndElementAsync Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/30/testReport/(root)/XmlDictionaryWriterTest/XmlBaseWriter_WriteStartEndElementAsync/ MESSAGE: ~~~ System.NotImplementedException : The method or operation is not implemented. ~~~ STACK TRACE: ~~~ at System.Xml.XmlWriter.WriteStartElementAsync(String prefix, String localName, String ns) at XmlDictionaryWriterTest.XmlBaseWriter_WriteStartEndElementAsync() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs:line 108 ~~~ +18900 area-System.Net HttpWebRequest.MediaType throws PNSE HttpWebRequest.MediaType throws PNSE on all platforms, without any explanatory message. This has 2% usage in apiport data and 1% in Unity top 100. https://apisof.net/catalog/System.Net.HttpWebRequest.MediaType It's not clear in a quick glance at desktop code what it actually does or how easy it would be to port. Please triage for 2.0 +18901 area-System.Runtime Disable some System.Runtime.Extensions tests Fixes: https://github.com/dotnet/corefx/issues/18828 cc: @danmosemsft @AlexGhiondea @joperezr +18902 area-Serialization "Desktop: XmlDictionaryWriterTest.XmlBaseWriter_CheckAsync_ThrowInvalidOperationException failed with ""Xunit.Sdk.ThrowsException""" Failed test: XmlDictionaryWriterTest.XmlBaseWriter_CheckAsync_ThrowInvalidOperationException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/30/testReport/(root)/XmlDictionaryWriterTest/XmlBaseWriter_CheckAsync_ThrowInvalidOperationException/ MESSAGE: ~~~ System.AggregateException : One or more errors occurred. ---- Assert.Throws() Failure Expected: typeof(System.InvalidOperationException) Actual: (No exception was thrown) ~~~ STACK TRACE: ~~~ at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at XmlDictionaryWriterTest.XmlBaseWriter_CheckAsync_ThrowInvalidOperationException() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\XmlDictionaryWriterTest.cs:line 138 ----- Inner Stack Trace ----- ~~~ +18903 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Aes.Tests.DecryptorReusabilty.TestDecryptorReusability failed with ""Xunit.Sdk.EqualException""" Failed test: System.Security.Cryptography.Encryption.Aes.Tests.DecryptorReusabilty.TestDecryptorReusability Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/30/testReport/System.Security.Cryptography.Encryption.Aes.Tests/DecryptorReusabilty/TestDecryptorReusability/ MESSAGE: ~~~ Assert.Equal() Failure Expected: Byte[] [20, 48, 113, 173, 237, ...] Actual: Byte[] [20, 15, 15, 16, 17, ...] ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Encryption.Aes.Tests.DecryptorReusabilty.TestDecryptorReusability() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\DecryptorReusability.cs:line 65 ~~~ +18904 area-System.Net Consolidate common code between HttpListenerRequest in Windows and Managed Steps towards #18486, #18482 and #18128 Best reviewed commit-by-commit to make sense of some of the code movement. @Priya91 +18905 area-System.Net 2 members on WebSocket throw PNSE These are both part of NS2.0. Both show no usage in our data. Please triage to 2.0, future, or close. ```c# public static void RegisterPrefixes() { // The current WebRequest implementation in corefx does not support upgrading // web socket connections. For now, we throw. throw new PlatformNotSupportedException(); } [EditorBrowsable(EditorBrowsableState.Never)] public static WebSocket CreateClientWebSocket(Stream innerStream, string subProtocol, int receiveBufferSize, int sendBufferSize, TimeSpan keepAliveInterval, bool useZeroMaskingKey, ArraySegment internalBuffer) { // ClientWebSocket on Unix is implemented in managed code and can be constructed (internally) // for an arbitrary stream. We could use that implementation here, building it in to the WebSocket // library as well, or accessing it from the client library via reflection. For now, we throw. throw new PlatformNotSupportedException(); } ``` +18906 area-System.Net "Test: System.Net.Tests.HttpListenerRequestTests/IsWebSocketRequest_GetProperty_ReturnsExpected failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerRequestTests/IsWebSocketRequest_GetProperty_ReturnsExpected(webSocketString: \""Connection: Upgrade\\r\\nUpgrade: websocket\"", expected: True)` has failed. Assert.Equal() Failure\r Expected: True\r Actual: False Stack Trace: at System.Net.Tests.HttpListenerRequestTests.<>c__DisplayClass12_0.b__0(Socket _, HttpListenerRequest request) at System.Net.Tests.HttpListenerRequestTests.d__29.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerRequestTests.d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170425.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Debug - Release - Windows.7.Amd64-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170425.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerRequestTests~2FIsWebSocketRequest_GetProperty_ReturnsExpected(webSocketString:%20%5C%22Connection:%20Upgrade%5C%5Cr%5C%5CnUpgrade:%20websocket%5C%22,%20expected:%20True)" +18907 area-System.Net Test failure: System.Net.Sockets.Tests.SendReceiveUdpClient/SendToRecvFromAsync_Datagram_UDP_UdpClient(loopbackAddress: 127.0.0.1) Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.SendReceiveUdpClient/SendToRecvFromAsync_Datagram_UDP_UdpClient(loopbackAddress: 127.0.0.1)` has failed. System.AggregateException : One or more errors occurred. (Assert.True() Failure Expected: True Actual: False) (Assert.True() Failure Expected: True Actual: False) ---- Assert.True() Failure Expected: True Actual: False ---- Assert.True() Failure Expected: True Actual: False Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Sockets.Tests.SendReceiveUdpClient.SendToRecvFromAsync_Datagram_UDP_UdpClient(IPAddress loopbackAddress) ----- Inner Stack Trace #1 (Xunit.Sdk.TrueException) ----- at System.Net.Sockets.Tests.SendReceiveUdpClient.<>c__DisplayClass0_1.<b__0>d.MoveNext() ----- Inner Stack Trace #2 (Xunit.Sdk.TrueException) ----- at System.Net.Sockets.Tests.SendReceiveUdpClient.<>c__DisplayClass0_1.<b__1>d.MoveNext() Build : Master - 20170425.01 (Portable Core Tests) Failing configurations: - fedora.25.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170425.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendReceiveUdpClient~2FSendToRecvFromAsync_Datagram_UDP_UdpClient(loopbackAddress:%20127.0.0.1) +18908 area-System.Text "Test failure: System.Text.RegularExpressions.Tests.RegexGroupTests/Groups(pattern: \""ı\"", input: \""I\"", options: IgnoreCase, cultureInfo: az-Latn-AZ, expectedGroups: [\""I\""])" "Opened on behalf of @Jiayili1 The test `System.Text.RegularExpressions.Tests.RegexGroupTests/Groups(pattern: \""ı\"", input: \""I\"", options: IgnoreCase, cultureInfo: az-Latn-AZ, expectedGroups: [\""I\""])` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Text.RegularExpressions.Tests.RegexGroupTests.Groups(String pattern, String input, RegexOptions options, CultureInfo cultureInfo, String[] expectedGroups) Build : Master - 20170425.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170425.01/workItem/System.Text.RegularExpressions.Tests/analysis/xunit/System.Text.RegularExpressions.Tests.RegexGroupTests~2FGroups(pattern:%20%5C%22%C4%B1%5C%22,%20input:%20%5C%22I%5C%22,%20options:%20IgnoreCase,%20cultureInfo:%20az-Latn-AZ,%20expectedGroups:%20%5B%5C%22I%5C%22%5D)" +18909 area-System.IO "Test: System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerOut_ClientIn/WriteZeroLengthBuffer_Nop failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerOut_ClientIn/WriteZeroLengthBuffer_Nop` has failed. System.IO.IOException : Invalid pipe handle. Stack Trace: at System.IO.Pipes.AnonymousPipeClientStream.Init(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream..ctor(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerOut_ClientIn.CreateServerClientPair() in E:\A\_work\61\s\corefx\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Write.cs:line 26 at System.IO.Pipes.Tests.PipeTest_Write.d__5.MoveNext() in E:\A\_work\61\s\corefx\src\System.IO.Pipes\tests\PipeTest.Write.cs:line 141 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170425.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170425.01/workItem/System.IO.Pipes.Tests/analysis/xunit/System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerOut_ClientIn~2FWriteZeroLengthBuffer_Nop +18910 area-Serialization NetCore does not support Canonicalization Tests added and verified passed on netfx : System.Runtime.Serialization.Xml.Canonicalization.Tests.XmlCanonicalizationTest - C14NWriterNegativeTests - TestC14NInclusivePrefixes - ReaderWriter_C14N_DifferentReadersWriters +18911 area-Serialization Xml canonicalization test Add NetCore test for to-be-supported canonicalization feature, active issue #18910. +18912 area-System.Net Consolidate common code in HttpListenerRequest and fix a Managed bug Contributes to #18128 @Priya91 +18915 area-System.Net Consolidate HttpListenerResponse code and fix a managed bug Contributes to #18128 +18916 area-Infrastructure [ARM] Update rootfs for Tizen armel *This PR should be merged only after related PR in coreclr merged. Unless Tizen armel CI for CoreCLR will be broken.* This is required to build CoreCLR for Tizen armel as a part of .NET Core 2.0.0 for Tizen. Existing rootfs for armel Tizen is out-of-dated and not suitable for .NET Core 2.0.0 for Tizen. Two changes are made. * Update rootfs for Tizen armel to recent version * Updates CI for Tizen armel to make use of a prebuilt embedded rootfs as Ubuntu arm does. Related PR : https://github.com/dotnet/coreclr/pull/11202 https://github.com/dotnet/core-setup/pull/2163 +18918 area-Infrastructure Consider changing tests away from Assert "In support of uapaot, several sweeps through our test code have replaced thousands of occurrences of Assert.Throws with AssertExtensions.Throws, which affords us the flexibility to not enforce some of the assertion on certain platforms. And we've added our own assert methods elsewhere. Rather than having a separate ""AssertExtensions"" class in conjunction with the xunit ""Assert"" class, we should consider having a ""CorefxAssert"" type or something like that, with all of the assertion surface area and implementation we need, and switching all of our tests over to it. This will afford us the ability to change the implementation further in the future, and it will help to ensure consistency in the tests. We could even then define our own ""Assert"" class that'll result in warnings due to the conflict with the xunit type, highlighting when folks use the wrong thing." +18919 area-System.Linq Remove unnecessary recursion from two S.L.Expressions methods. +18920 area-System.Linq S.L.Expressions: Consolidate pointer & byref test in ValidateType The majority of calls to `ValidateType` happen along with tests that the type validated isn't a pointer or byref (in the other direction,all pointer checks and the majority of byref checks happen this way). Make these checks part of `ValidateType` with an overload for the minority case where they aren't necessary (allowed or statically known not to be the case). +18922 area-System.IO Feature Request: File System Globbing "I'd like to start a discussion on including a [file system globbing](https://en.wikipedia.org/wiki/Glob_(programming)) API in .NET (Core). If you look at [implementations mentioned on Wikipedia](https://en.wikipedia.org/wiki/Glob_(programming)#Implementations), every ""mainstream platform"" has an entry, but not .NET. There's quite a few (more or less) successful implementations around (see below), some even from Microsoft, but I think something as fundamental as this, should ship with the framework. There's already partial globbing support using the following methods - `Directory.GetFiles` - `Directory.EnumerateFiles` - `Directory.GetFileSystemEntries` - `Directory.EnumerateFileSystemEntries` - `Directory.GetDirectories` - `Directory.EnumerateDirectories` They all have a `searchPattern` argument, but it lacks support for recursive globs (`**` aka. ""globstar""), brace expansion etc. This can be achieved using the `SearchOption` argument, but the API is hard to use when you want to support (often user-defined) recursive patterns like `/src/**/*.csproj`. I'd ❤️ to hear people's opinions here... - Is it worth including in the framework? - Should new APIs be introduced, or can we ""level up"" the existing `searchPattern` in the methods mentioned above (without it being a breaking change)? ## Examples - [**MSBuild**](https://github.com/Microsoft/msbuild/tree/master/src/Build/Globbing) by @cdmihai - [**Cake**](https://github.com/cake-build/cake/blob/develop/src/Cake.Core/IO/Globber.cs) by @patriksvensson - [**Minimatch**](https://github.com/SLaks/Minimatch) (port from JS) by @SLaks - [**Microsoft.Extensions.FileSystemGlobbing**](https://github.com/aspnet/FileSystem/tree/dev/src/Microsoft.Extensions.FileSystemGlobbing) by @troydai - [**Glob**](https://github.com/kthompson/glob) by @kthompson And [tons of other implementations](https://github.com/search?utf8=%E2%9C%93&q=glob+NOT+global+NOT+globe+language%3Ac%23&type=Repositories)..." +18924 area-System.Threading Support controlling thread affinity "**Purpose** Allow control of thread affinity. **Proposed API** ```C# class Thread { ProcessorSet Affinity { get; set; } } ``` The `ProcessorSet` represents a a set of logical processors. The underlying APIs for Windows/Posix use bit masks for this. Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms686247(v=vs.85).aspx Posix: http://man7.org/linux/man-pages/man3/pthread_setaffinity_np.3.html On Windows, systems with more than 64 processors are split into groups. Threads cannot use processors which belong to multiple groups. `ProcessorSet` can store the group info. ```C# struct ProcessorSet { int Group { get; set; } // get/set group bool this[int processor] { get; set; } // get/set/clear processor ProcessorSet(minCapacity); // actual capacity may be higher int Capacity { get; } // indexer is valid from [0-Capacity[ // string representation, see below string ToString(); static ProcessorSet Parse(string); static bool TryParse(string, out ProcessorSet); static ProcessorSet ForProcessor(int group, int processor); // set with single processor static ProcessorSet ForProcessor(int processor); // set with single processor } ``` The string representation can be a comma separated list of processors and ranges, prefixed with an optional processor group. E.g: `1`, `1-3,5`, `1:8-10`. **Example** ``` var thread = new Thread(threadStart); thread.Affinity = ProcessorSet.Parse(""0-3""); thread.Start(); ``` **Remarks** This proposal does not consider retrieving information from the OS like the number of groups and the number of processors per group. The total number of processors can be read from `Environment.ProcessorCount`. Posix threads inherit the calling thread affinity. It may be preferable to allow new Threads to run on all processors to avoid surprises. Threads that want to inherit the calling thread priority can explicitly do so: ```c# newThread.Affinity = Thread.CurrentThread.Affinity; ```" +18925 area-Serialization Disable XmlDictionaryWriter test Fixes: https://github.com/dotnet/corefx/issues/18899 See: https://github.com/dotnet/corefx/issues/18899#issuecomment-296928857 cc: @danmosemsft @shmao +18927 area-System.IO Fix IsolatedStorage difference in behavior and fix tests IsolatedStorageFile had some difference in behavior in between .Net Core and desktop where in desktop all the operations over a file/directory would throw `InvalidOperationException` if the file/directory is closed (which is also true if the item is deleted) but in .Net Core we would do an extra check if the item is deleted and throw an `IsolatedStorageException`. This makes desktop and core behave the same. Fixes: https://github.com/dotnet/corefx/issues/18266 Fixes: https://github.com/dotnet/corefx/issues/18803 cc: @danmosemsft @JeremyKuhne @ianhays +18929 area-System.Net Root cause PostScenarioTests (Http) test failures on NETFX "Fixed a test bug in PostAuthHelper which caused the wrong entity-body semantics to get used during the test. This actually exposed a netfx bug dealing with ambiguous semantics (Content-Length vs. chunked). After fixing this test bug, it then exposed a product bug where we leak an InvalidOperationException that isn't wrapped properly by an HttpRequestException. The scenario that exposed this related to POST'ing content that is non-rewindable and having to resubmit the POST due to authentication challenges. This test was passing on .NET Core because the test was written using the wrong assumptions. It failed on .NET Framework which exposed the problem. The InvalidOperationException comes from when a StreamContent's SerializeToStreamAsync method is called and the content needs to be rewound. If the content can't be rewound, then the exception is thrown with the error message ""The stream was already consumed. It cannot be read again."" Updated the WinHttpHandler and CurlHandler to wrap the InvalidOperationException in an HttpRequestException. Updated the test accordingly. Fixes #17621." +18931 area-System.Runtime Improve error message when x86/64 bit dlls are inadvertently used together The current message is bad image format. This doesn't encourage the developer to check for mismatched targets. Additional text can resolve this problem. +18933 area-System.Net Fix netcore WebClient.UploadValuesAsync() UrlEncode behavior Change request body data of .Net Core WebClient from using uppercase hex digits to using lowercase hex digits. Fix #18674 +18934 area-System.Xml Fix Desktop test failures in System.Xml.RW.ReaderSettings.Tests Fixes https://github.com/dotnet/corefx/issues/18812. The failure was due to a behavior change between Desktop and Core, On Desktop, XmlReaderSettings used to read full framework registry keys to decide the default value of entity resolving limit. Default used to be 0 (=unlimited), but is 10 million characters now. [The user can still override it with any value.] Limit should be ON by default - for most of the normal and valid XML documents you should not have problems with limits. cc: @krwq @danmosemsft +18936 area-Infrastructure Add Inbox validation to framework packages We record if assemblies are inbox or not in the packageIndex, so that we know if dependencies need to be emitted to packages containing those assemblies. We validate for 1:1 packages to make sure that if the assembly is inbox it doesn't try to apply an assembly from the package. We generate the inbox list from targeting packs for frameworks that use a targeting pack so validation here isn't necessary. We hand-author the inbox state for package-based frameworks (UAP, NETCoreApp) and are missing validation for this. We should add it to the framework packages to make sure that anything in the ref folder for the framework must be marked inbox in the index. Anything inbox in the index for the framework must also be in the ref folder for that framework. /cc @weshaggard @joperezr +18938 area-System.Data I am new to dotnet core and i want my application to interact with sybase . How to we register the sybase provider in dotnetcore ? "I am new to dotnet core and i want my application to interact with sybase . How do we register the sybase provider in dotnetcore ? providerName=""Sybase.AdoNet4.AseClient""" +18939 area-Infrastructure Emit a assembly graph when analyzing fx packages This will drop a dgml for each framework package when validating the assembly closure. This is useful for understanding which assemblies can be removed from the framework package. /cc @weshaggard @ianhays +18940 area-Infrastructure Helix lacking infrastructure support for running AOT test in app-container. Need infrastructure support to selectively run test in App Container. +18942 area-System.Runtime Remove UAPAOT cheat in BinaryFormatterHelpers.Clone() This disables many binary serialization tests on AoT platforms to reduce test noise until we have a real BinaryFormatter story. +18945 area-System.Security Disable Aes test TestDecryptorReusability when quirk disabled or old netfx Fixes: https://github.com/dotnet/corefx/issues/18903 I've manually tested the test is still being run on Core +18946 area-System.Memory System.Span constructor Span(IntPtr ptr, int offset, int length) Does it make sense to have another constructor overload for Span that takes an IntPtr as well for interop with native libraries and memory? An example of a structure I use for native interop today. ```cs public struct MDBValue { public IntPtr size; public IntPtr data; public byte[] GetBytes() { var buffer = new byte[size.ToInt32()]; Marshal.Copy(data, buffer, 0, buffer.Length); return buffer; } //just demonstrating the problem public Span GetSpan() { var bytes = GetBytes(); //extra allocations this route //alternative is dropping to use unsafe, where at least currently the library doesn't require it return new Span(bytes); } } ``` Ideally, I would be able to do the following instead. ```cs public struct MDBValue { public IntPtr size; public IntPtr data; public Span GetSpan() { return new Span(data, 0, size.ToInt32()); } } ``` Looking at the pointer overload it looks like it's already using an IntPtr internally so I would think it wouldn't be all that difficult to do what I've proposed. I'm not sure though if there are any implications with this approach? +18949 area-System.Diagnostics Light up Process.UseShellExecute when available on Windows "It's on by default in Desktop and always off for Windows in Core: https://github.com/dotnet/corefx/issues/10361 https://github.com/dotnet/corefx/issues/4794 It's has an analogous implementation on Unix https://github.com/dotnet/corefx/pull/4861 The reason it's not in Core is ShellExecuteEx is not available in all OneCore platforms. Also "" ShellExecuteEx needs to run as STA but managed code runs as MTA by default and Thread.SetApartmentState() is not supported on all platforms."" It's a heavily used API: https://apisof.net/catalog/System.Diagnostics.ProcessStartInfo.UseShellExecute eg up to 25% in Unity apps. It's also part of .NET Standard 2.0. So we should consider whether there's a way to light up at lesat part of its functionality when (in the 99% case) we do have ShellExecuteEx available. I'm not sure whether we have any precedent in Core for attempting to use a non-OneCore API. Post 2.0 @stephentoub " +18952 area-System.IO Fix 2 failing IO tests. The MMF test is failing from a purposeful design change around the default FileShare being used in CreateFromFile. The FSW tests are failing intermittently from inconsistency so I'm reverting my recent change to move them to innerloop and reduce their wait time. resolves https://github.com/dotnet/corefx/issues/18630 resolves https://github.com/dotnet/corefx/issues/17725 @safern @danmosemsft +18953 area-System.IO Allow previously not supported GetStore overloads that pass null. The GetStore overloads other than the IsoStorageScope throw PSNE for any input. This commit modifies them to check for null inputs and treat the method as equivalent to a 1-arg GetStore in that case. resolves https://github.com/dotnet/corefx/issues/18706 @JeremyKuhne @billwert +18954 area-System.Numerics Behavior of Math.Cos and Sin of double.MaxValue differs between 32- and 64-bit Windows This is a behavior difference inherited from the underlying C-runtime library functions we are now using. Some of our higher-order functions, like `Complex.Cos`, etc. inherit some quirkiness in their behavior when interacting with `double.MaxValue`. 32-bit Windows: ``` Cos(min) == 0.90578110220707 Cos(max) == 0.90578110220707 Sin(min) == 0.423745908398588 Sin(max) == -0.423745908398588 ``` 64-bit Windows ``` Cos(min) == -0.99998768942656 Cos(max) == -0.99998768942656 Sin(min) == -0.00496195478918406 Sin(max) == 0.00496195478918406 ``` FYI: @tannergooding +18956 area-System.IO Add max Collection size to concurrent test This test is causing OOMs on some test machines because of how many items it adds to the collection. I added a hard upper bound on collection size to avoid this. @mellinoe @danmosemsft resolves https://github.com/dotnet/corefx/issues/17920 +18957 area-System.Data Move some SQL named pipes tests to Functional Tests, since they don't require a server to test against +18959 area-System.Data Merge redundant test cases in SQL parallel transactions test "There were ""Yukon"" and ""Katmai"" tests in this file that were both targeting the same server endpoints, so I just merged them into single test cases." +18960 area-System.Data Move SqlClient BaseProviderAsyncTest to Functional Tests, since it does not need to connect to a test server. Also moved ParametersTest to the SQL folder, since it was the only test left in the ADO folder. +18961 area-System.Runtime Fix GetEnvironmentVariables test desktop failure Fixes: https://github.com/dotnet/corefx/issues/18821 cc: @danmosemsft @stephentoub +18964 area-Serialization Soap encoded serialization fails on a netstandard library when running on Desktop. When using soap encoded serialization on a netstandard library and running on Desktop it fails as Desktop has a difference in behavior where it looks for System types (e.g System.Enum, System.Object) in mscorlib.dll but since it was built against netstandard the types it is loading are from netstandard.dll so costumers would hit an InvalidOperationException like this one: ``` System.InvalidOperationException : Unable to generate a temporary class (result=1). error CS0012: The type 'System.Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. ``` There needs to be a solution here for 2.0 as costumers could be hitting this when using soap encoded serialization on a netstandard library and trying to run it on Desktop. For more information see: https://github.com/dotnet/corefx/pull/18743#issuecomment-296306832 cc: @weshaggard @shmao +18965 area-System.Diagnostics Fixed test under System.Diagnostics.Tracing Fixes: https://github.com/dotnet/corefx/issues/18807 Fixed the test to get the actually resource string from Environment.GetResourceString via reflection on Desktop cc: @danmosemsft @vancem +18966 area-System.Linq CompileDeepTree_NoStackOverflowFast fails StackOverflowException with debug build "@seanshpark commented on [Thu Apr 20 2017](https://github.com/dotnet/coreclr/issues/11122) CoreFX System.Linq.Expressions.Tests teminates with StackOverflowException ``` Discovering: System.Linq.Expressions.Tests Discovered: System.Linq.Expressions.Tests Starting: System.Linq.Expressions.Tests Process is terminating due to StackOverflowException. Aborted (core dumped) ``` Inside, `CompileDeepTree_NoStackOverflowFast` test, it tests the compiler with 100 constant expression with 128KB stack size. I'm running the test with debug version of corerun (release is not stable yet). When I change the stack size to 512K, this method passes. I'm not sure how to think about this problem. **Should I test this with Release version only or is there any other ways to fix this?** Test code in CoreFX ``` [Theory, ClassData(typeof(CompilationTypes))] public static void CompileDeepTree_NoStackOverflowFast(bool useInterpreter) { Expression e = Expression.Constant(0); int n = 100; for (int i = 0; i < n; i++) e = Expression.Add(e, Expression.Constant(1)); Func f = null; // Request a stack size of 128KiB to get very small stack. // This reduces the size of tree needed to risk a stack overflow. // This though will only risk overflow once, so the outerloop test // above is still needed. Thread t = new Thread(() => f = Expression.Lambda>(e).Compile(useInterpreter), 128 * 1024); t.Start(); t.Join(); Assert.Equal(n, f()); } ``` --- @seanshpark commented on [Thu Apr 20 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-295987022) @parjong, do you have any comments to add? --- @seanshpark commented on [Thu Apr 20 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-295987395) @jkotas , could you please help or invite who could be a help? --- @parjong commented on [Thu Apr 20 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-295987746) I do not have much to add. --- @seanshpark commented on [Thu Apr 20 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-295988852) With a same method(without the `Assert.Equal(n, f());` line) run in a console app, gdb stack shows like this. `this=0x0` in `Compiler::compStressCompile` as seems that stack has ran out. ```gdb (gdb) bt #0 0xb17e3ab8 in Compiler::compStressCompile (this=0x0, stressArea=Compiler::STRESS_NONE, weight=0) at /home/maxwell/netcore/coreclr/src/jit/compiler.cpp:3529 #1 0xb19879ec in Compiler::fgMorphTree (this=0x80b3a20, tree=0x80ba2a8, mac=0x0) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:14681 #2 0xb199c320 in Compiler::fgMorphSmpOp (this=0x80b3a20, tree=0x80ba368, mac=0x0) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:11434 #3 0xb1987d61 in Compiler::fgMorphTree (this=0x80b3a20, tree=0x80ba368, mac=0x0) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:14767 #4 0xb199c320 in Compiler::fgMorphSmpOp (this=0x80b3a20, tree=0x80ba428, mac=0x0) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:11434 ... #61 0xb1987d61 in Compiler::fgMorphTree (this=0x80b3a20, tree=0x80bb8c8, mac=0x0) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:14767 #62 0xb19b168d in Compiler::fgMorphStmts (this=0x80b3a20, block=0x80b6c34, mult=0xb4460227, lnot=0xb4460226, loadw=0xb4460225) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:15579 #63 0xb19b2388 in Compiler::fgMorphBlocks (this=0x80b3a20) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:15864 #64 0xb19b612f in Compiler::fgMorph (this=0x80b3a20) at /home/maxwell/netcore/coreclr/src/jit/morph.cpp:17062 #65 0xb17e8769 in Compiler::compCompile (this=0x80b3a20, methodCodePtr=0xb4460b0c, methodCodeSize=0xb4460f20, compileFlags=0xb4460b20) at /home/maxwell/netcore/coreclr/src/jit/compiler.cpp:4299 ... #75 0xb6cc4036 in CallCompileMethodWithSEHWrapper(EEJitManager*, CEEInfo*, CORINFO_METHOD_INFO*, CORJIT_FLAGS, unsigned char**, unsigned int*, MethodDesc*)::$_4::operator()(CallCompileMethodWithSEHWrapper(EEJitManager*, CEEInfo*, CORINFO_METHOD_INFO*, CORJIT_FLAGS, unsigned char**, unsigned int*, MethodDesc*)::Param*) const (this=0xb4460d10, pParam=0xb4460d18) at /home/maxwell/netcore/coreclr/src/vm/jitinterface.cpp:12126 #76 0xb6cc3ea9 in CallCompileMethodWithSEHWrapper (jitMgr=0x8084cb8, comp=0xb4461050, info=0xb4460fa0, flags=..., nativeEntry=0xb4460f24, nativeSizeOfCode=0xb4460f20, ftn=0xb175a1a0) at /home/maxwell/netcore/coreclr/src/vm/jitinterface.cpp:12169 #77 0xb6cc608e in UnsafeJitFunction (ftn=0xb175a1a0, ILHeader=0x0, flags=..., pSizeOfCode=0xb4461f44) at /home/maxwell/netcore/coreclr/src/vm/jitinterface.cpp:12813 #78 0xb720ff41 in MethodDesc::MakeJitWorker (this=0xb175a1a0, ILHeader=0x0, flags=...) at /home/maxwell/netcore/coreclr/src/vm/prestub.cpp:490 #79 0xb7214505 in MethodDesc::DoPrestub (this=0xb175a1a0, pDispatchingMT=0x0) at /home/maxwell/netcore/coreclr/src/vm/prestub.cpp:1515 #80 0xb6fd2d75 in ReflectionInvocation::CompileMethod (pMD=0xb175a1a0) at /home/maxwell/netcore/coreclr/src/vm/reflectioninvocation.cpp:2006 #81 0xb1778a84 in ?? () ... ... ``` --- @jkotas commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296106368) This test was added by @JonHanna in https://github.com/dotnet/corefx/pull/14444 --- @JonHanna commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296135951) Has something changed in `TryEnsureSufficientExecutionStack` in debug that maybe the test is catching, or is this a test configuration that is new? > When I change the stack size to 512K, this method passes From https://github.com/dotnet/corefx/issues/17550#issuecomment-289816350 it would seem that it'll pass with 512K because it won't test what it's trying to test. What happens with 192K? We could up both the stacksize and the size of the tree compiled to keep it testing what it is there to test without, though that increases execution time and the point is to do a similar job to the slower `CompileDeepTree_NoStackOverflow` without spending so long that it impacts heavily on how long the test suite takes. After a certain point the test no longer earns its keep, especially as there is that slower test being run on outerloop. --- @parjong commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296149779) @JonHanna Yes, this issue comes from a completely new configuration (x86/Linux Debug). CLR has been ported to x86/Linux. Recent CLR unittest result shows that debug build is stable, and thus we attempted to run FX unittest as the next step (checked/release build is under bring up). --- @JonHanna commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296152848) It would be worth temporarily taking the OuterLoop tag off this test's outerloop cousin and seeing if it passes. If that one also fails then the problem is in `TryEnsureSufficientExecutionStack` on that configuration and the tests have found a bug. If that one fails then the innerloop test needs tweaking or disabling. --- @parjong commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296158125) @JonHanna We could run System.Linq.Expressions.Tests without stack overflow if this case is excluded (although there are several failures). --- @JonHanna commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296159405) If `CompileDeepTree_NoStackOverflow` passes (but note that it's outerloop and won't be included in most runs, I'm beginning to think that this test is more trouble than it's worth; anything it catches will still be caught by the outerloop tests, albeit not on most test runs. --- @janvorli commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296169837) Taking a look at how the safe execution stack limit is determined, I can see that it checks for 128kB of remaining stack space on 64 bit architectures, but only for 64kB on 32 bit architectures. Could that be causing the problem? --- @parjong commented on [Fri Apr 21 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296170720) @JonHanna Oops. I mean all the innerloop tests. Sorry for confusion. I will let you know the result when the result is ready (I guess that I could let you know the result in the next Monday). --- @seanshpark commented on [Sun Apr 23 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296496425) > it would seem that it'll pass with 512K because it won't test what it's trying to test. What happens with 192K? Thank you for the explanation. 192K also fails and 384K also but didn't check the number that was working. We'll check the cousin in the outter loop. --- @parjong commented on [Sun Apr 23 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296509077) @JonHanna It turns out that the corresponding outerloop test also fails with the same reason (stack overflow) if debug binary is used. This issue does not happen for checked binary. Is it possible to add some trait that allows us to exclude this test for debug build? We could not use checked binary as checked binary is not stable yet. --- @seanshpark commented on [Sun Apr 23 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296524599) I've also tested and the results are - Debug CoreCLR + CompileDeepTree_NoStackOverflow : Pass - Checked CoreCLR + CompileDeepTree_NoStackOverflow : Pass - Debug CoreCLR + CompileDeepTree_NoStackOverflowFast : Fail - Checked CoreCLR + CompileDeepTree_NoStackOverflowFast : Pass --- @JonHanna commented on [Mon Apr 24 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296587075) > It turns out that the corresponding outerloop test also fails with the same reason (stack overflow) if debug binary is used. If the outerloop test is failing, I'm rather worried that it might be an actual bug in `TryEnsureSufficientExecutionStack` or that it isn't sensitive enough an we can expect other uses of it to have a similar problem. Though @seanshpark found differently to you, which is curious in itself. > Is it possible to add some trait that allows us to exclude this test for debug build? We could of course wrap it in `#if !DEBUG`, but someone else may know of a trait that's applicable. --- @parjong commented on [Mon Apr 24 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296609681) @JonHanna Could you let me know why this test uses ``128kB`` as a limit? As @janvorli mentioned in https://github.com/dotnet/coreclr/issues/11122#issuecomment-296169837, ``TryEnsureSufficientExecutionStack`` returns true if the remaining stack size is 64kB for 32-bit architecture instead of 128kB. --- @seanshpark commented on [Mon Apr 24 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296855992) Sorry for the wrong report. I'v retested with debug version from latest master and both fails. - Debug CoreCLR + CompileDeepTree_NoStackOverflow : Fail - Debug CoreCLR + CompileDeepTree_NoStackOverflowFast : Fail --- @JonHanna commented on [Mon Apr 24 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296857069) Well the idea of the ""fast"" one is to have a small stack so that it quickly risks stack overflow, but TryEnsureSufficientExecutionStack saves the day and it doesn't happen. Clearly not the actual result. The ""slow"" one does the same thing with a more normal stack. If only the fast failed I might give it up as overly artificial, but the slow is triggering conditions that were causing users problems with real code, so I'm much more worried about that. Is there a how-to on the type of build you are doing so I can take a look myself? CC @bartdesmet as the first author of the stackguard code and test. --- @parjong commented on [Mon Apr 24 2017](https://github.com/dotnet/coreclr/issues/11122#issuecomment-296857589) @JonHanna https://github.com/dotnet/coreclr/issues/9265#issuecomment-280521257 provides a brief step-by-step build instruction (you first need to create a root filesystem via running build-rootfs.sh under cross with x86 option). " +18967 area-System.Reflection Delete System.Reflection.AssemblyNameProxyTest This test was failing on desktop, deleting as @AtsushiKan said we can do it as it is a bogus test. See: https://github.com/dotnet/corefx/issues/18829#issuecomment-296782158 Fixes: #18829 cc: @danmosemsft +18968 area-System.IO Disable System.IO.BinaryReader netcoreapp specific test on desktop Fixes: https://github.com/dotnet/corefx/issues/18813 cc: @ianhays @JeremyKuhne @danmosemsft +18969 area-System.Security "Test: System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests/InvalidHashCoreArgumentsFromDerivedType failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests/InvalidHashCoreArgumentsFromDerivedType` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: typeof(System.ArgumentException): Value was invalid. Stack Trace: at System.Security.Cryptography.HashAlgorithm.TransformBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[] outputBuffer, Int32 outputOffset) at System.Security.Cryptography.HMAC.HashCore(Byte[] rgb, Int32 ib, Int32 cb) at System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests.DerivedHMACSHA1.ExposedHashCore(Byte[] rgb, Int32 ib, Int32 cb) in E:\A\_work\82\s\corefx\src\System.Security.Cryptography.Algorithms\tests\InvalidUsageTests.cs:line 41 at System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests.<>c__DisplayClass0_0.b__2() in E:\A\_work\82\s\corefx\src\System.Security.Cryptography.Algorithms\tests\InvalidUsageTests.cs:line 19 Build : Master - 20170426.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170426.01/workItem/System.Security.Cryptography.Algorithms.Tests/analysis/xunit/System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests~2FInvalidHashCoreArgumentsFromDerivedType +18970 area-System.Security "Test: System.Security.Permissions.Tests.ApplicationTrustTests/ApplicationTrustCollectionCallMethods failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Security.Permissions.Tests.ApplicationTrustTests/ApplicationTrustCollectionCallMethods` has failed. System.ArgumentException : An ApplicationTrust must have an application identity before it can be persisted. Stack Trace: at System.Security.Policy.ApplicationTrustCollection.Add(ApplicationTrust trust) at System.Security.Permissions.Tests.ApplicationTrustTests.ApplicationTrustCollectionCallMethods() in E:\A\_work\82\s\corefx\src\System.Security.Permissions\tests\ApplicationTrustTests.cs:line 17 Build : Master - 20170426.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170426.01/workItem/System.Security.Permissions.Tests/analysis/xunit/System.Security.Permissions.Tests.ApplicationTrustTests~2FApplicationTrustCollectionCallMethods +18971 area-System.Security "Test: System.Security.Permissions.Tests.ApplicationTrustTests/ApplicationTrustEnumeratorCallMethods failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Security.Permissions.Tests.ApplicationTrustTests/ApplicationTrustEnumeratorCallMethods` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Security.Policy.ApplicationTrustEnumerator.MoveNext() at System.Security.Permissions.Tests.ApplicationTrustTests.ApplicationTrustEnumeratorCallMethods() in E:\A\_work\82\s\corefx\src\System.Security.Permissions\tests\ApplicationTrustTests.cs:line 33 Build : Master - 20170426.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x86-Release - x64-Release - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170426.01/workItem/System.Security.Permissions.Tests/analysis/xunit/System.Security.Permissions.Tests.ApplicationTrustTests~2FApplicationTrustEnumeratorCallMethods +18972 area-System.Net Add option to HttpClientHandler to validate certificates against custom root certificate authorities "To validate a server certificate against a set of root certificates (instead of the system certificates), we are now limited to using ServerCertificateCustomValidationCallback. Unfortunately this callback does not work on all systems due to incompatibilities described in #9728, and it seems there are some blockers to fixing them on some platforms. It may be easier for users to just be able to provide a file path to a set of root certificates (encoded as PEM), or have another API to provide custom root certificates to use for validation instead of the system root certificates. One idea suggested in https://github.com/dotnet/corefx/issues/9728#issuecomment-297201090 is: ``` httpHandler.ServerCertificateRootCaFile = ""/.../ca.pem""; ``` Another option would be to provide custom instances of `X509Certificate2`." +18973 area-System.Collections "Test: System.Collections.ObjectModel.Tests.KeyedCollection_Serialization/SerializeDeserialize_Roundtrips failed with ""Xunit.Sdk.NotSameException""" "Opened on behalf of @Jiayili1 The test `System.Collections.ObjectModel.Tests.KeyedCollection_Serialization/SerializeDeserialize_Roundtrips(c: [\""hello\"", \""world\""])` has failed. Assert.NotSame() Failure Stack Trace: at System.Collections.ObjectModel.Tests.KeyedCollection_Serialization.SerializeDeserialize_Roundtrips(TestCollection c) Build : Master - 20170426.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170426.01/workItem/System.ObjectModel.Tests/analysis/xunit/System.Collections.ObjectModel.Tests.KeyedCollection_Serialization~2FSerializeDeserialize_Roundtrips(c:%20%5B%5C%22hello%5C%22,%20%5C%22world%5C%22%5D)" +18974 area-System.Security system.security.cryptography.xml.tests failed https://ci.dot.net/job/dotnet_corefx/job/master/job/debian8.4_release/2089/consoleFull#178427296579fe3b83-f408-404c-b9e7-9207d232e5fc +18975 area-Serialization "Desktop: DataContractSerializerTests.DCS_BasicRoundtripDCRVerifyWireformatScenarios failed with ""System.IO.FileLoadException""" Failed test: DataContractSerializerTests.DCS_BasicRoundtripDCRVerifyWireformatScenarios Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/31/testReport/(root)/DataContractSerializerTests/DCS_BasicRoundtripDCRVerifyWireformatScenarios/ MESSAGE: ~~~ System.IO.FileLoadException : Could not load file or assembly 'http:\\/\\/Microsoft.ServiceModel.Samples' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) ---- System.IO.FileLoadException : The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) ~~~ STACK TRACE: ~~~ at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) at System.Type.GetType(String typeName) at SerializationTestTypes.WireFormatVerificationResolver.ResolveName(String typeName, String typeNamespace, Type declaredType, DataContractResolver KTResolver) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\SerializationTestTypes\DataContractResolverLibrary.cs:line 165 at System.Runtime.Serialization.XmlObjectSerializerContext.ResolveDataContractFromDataContractResolver(XmlQualifiedName typeName, Type declaredType) at System.Runtime.Serialization.XmlObjectSerializerContext.ResolveDataContractFromKnownTypes(String typeName, String typeNs, DataContract memberTypeContract, Type declaredType) at System.Runtime.Serialization.XmlObjectSerializerContext.IsKnownType(DataContract dataContract, Type declaredType) at System.Runtime.Serialization.KnownTypeDataContractResolver.TryResolveType(Type type, Type declaredType, DataContractResolver knownTypeResolver, XmlDictionaryString& typeName, XmlDictionaryString& typeNamespace) at SerializationTestTypes.WireFormatVerificationResolver.TryResolveType(Type dcType, Type declaredType, DataContractResolver KTResolver, XmlDictionaryString& typeName, XmlDictionaryString& typeNamespace) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\SerializationTestTypes\DataContractResolverLibrary.cs:line 145 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.ResolveType(Type objectType, Type declaredType, XmlDictionaryString& typeName, XmlDictionaryString& typeNamespace) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteResolvedTypeInfo(XmlWriterDelegator writer, Type objectType, Type declaredType) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteTypeInfo(XmlWriterDelegator writer, DataContract contract, DataContract declaredContract) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType(XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) at WriteCharlieToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract ) at System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) at WriteWireformat1ToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract ) at System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObject(XmlDictionaryWriter writer, Object graph) at System.Runtime.Serialization.XmlObjectSerializer.WriteObject(Stream stream, Object graph) at DataContractSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 2927 at DataContractSerializerTests.DCS_BasicRoundtripDCRVerifyWireformatScenarios() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 2897 ----- Inner Stack Trace ----- at System.Reflection.AssemblyName.nInit(RuntimeAssembly& assembly, Boolean forIntrospection, Boolean raiseResolveEvent) at System.Reflection.AssemblyName..ctor(String assemblyName) at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName) ~~~ +18976 area-Meta Unable to run new app: System.DllNotFoundException: Unable to load DLL 'api-ms-win -core-registry-l1-1-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Sorry if that has been previously addressed or answered, could not find an applicable solution. The default generated web app with visual studio. ``` C:\Projects\DotNetCoreTest\WebApplication\WebApplication\bin\Debug\netcoreapp1.1 \win10-x64>C:\Projects\DotNetCoreTest\WebApplication\WebApplication\bin\Debug\ne tcoreapp1.1\win10-x64\WebApplication.exe Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'api-ms-win -core-registry-l1-1-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Interop.mincore.RegOpenKeyEx(SafeRegistryHandle hKey, String lpSubKey, Int 32 ulOptions, Int32 samDesired, SafeRegistryHandle& hkResult) at Microsoft.Win32.RegistryKey.InternalOpenSubKeyCore(String name, RegistryRi ghts rights, Boolean throwOnPermissionFailure) at Microsoft.AspNetCore.DataProtection.RegistryPolicyResolver.ResolveDefaultP olicy() at Microsoft.Extensions.DependencyInjection.DataProtectionServices.d__0.MoveNext() at Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescr iptorExtensions.TryAdd(IServiceCollection collection, IEnumerable`1 descriptors) at Microsoft.Extensions.DependencyInjection.DataProtectionServiceCollectionEx tensions.AddDataProtection(IServiceCollection services) at Microsoft.Extensions.DependencyInjection.MvcViewFeaturesMvcCoreBuilderExte nsions.AddViewServices(IServiceCollection services) at Microsoft.Extensions.DependencyInjection.MvcViewFeaturesMvcCoreBuilderExte nsions.AddViews(IMvcCoreBuilder builder) at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.Ad dMvc(IServiceCollection services) at WebApplication.Startup.ConfigureServices(IServiceCollection services) in C :\Projects\DotNetCoreTest\WebApplication\WebApplication\Startup.cs:line 33 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(ISer viceCollection services) at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at WebApplication.Program.Main(String[] args) in C:\Projects\DotNetCoreTest\W ebApplication\WebApplication\Program.cs:line 14 ``` +18978 area-System.Data Add Oracle ODBC - CI dependencies for testing Please consider adding x-platform Oracle ODBC testing to CI https://github.com/dotnet/corefx/issues/15776 https://github.com/dotnet/corefx/issues/13035 +18980 area-Serialization Disable XmlDictionaryWriter async tests Fixes: https://github.com/dotnet/corefx/issues/18899 cc: @shmao +18984 area-System.Diagnostics Fix and Reenable EventSource tests on Desktop Runtime In PR #18965 some EventSource tests were disabled on Destkop because the tests were looking at internal items that were not on the Desktop runtime This issue tracks fixing the test and enable these tests on Desktop @brianrob +18985 area-System.Security Make the OSX mutable store tests skip on OSStatus -61. "Something about the hosting model in Helix is causing it to always fail with errSecWrPerm (-61). I can reproduce this problem by making ~/Library/Keychains readonly (u-w); and I can produce other problems using ssh and sudo, but I can't quite reproduce a hosting model problem which produces errSecWrPerm. So ""run"" one of the tests, and if it fails with CryptographicException(-61) then don't run the tests. If it fails for any other reason, run the tests to get the telemetry. Fixes #17422." +18993 area-Serialization XmlSerializerTests.Xml_TypeWithDateTimePropertyAsXmlTime Failed on Netfx "The test failed when targeting `netfx`. ``` Test failed for input: SerializationTypes.TypeWithDateTimePropertyAsXmlTime Expected: 15:15:26.9870000Z Actual: 15:15:26.9870000-07:00 ```" +18994 area-System.Security Provide API XmlDsigC14NTransform.GetCanonicalBytes without need for hashalgorithm The current API public override byte[] GetDigestedOutput(HashAlgorithm hash) requires the user to have a HashAlgorithm. This makes extensibility a bit harder since the HashAlgorithm would have to be derived for special handling. In IdentityModel we choose to simply write the canonicalized bytes into a stream allowing processing later. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/WsFed/src/Microsoft.IdentityModel.Xml/ExclusiveCanonicalizationTransform.cs#L119 +18996 area-System.Data Remove ActiveIssue attributes from some SQL tests, since the associated issues have been closed. +18997 area-System.Data SqlClient hangs while opening connection on localdb with MARS enabled "csproj ``` Exe netcoreapp2.0 ``` Program.cs ``` using System; using System.Data.SqlClient; namespace SqlClientIssue { class Program { static void Main(string[] args) { Console.WriteLine(""Start!""); //AppContext.SetSwitch(""System.Data.SqlClient.UseLegacyNetworkingOnWindows"", true); var connectionString = @""Data Source=(localdb)\MsSqlLocalDb;Database=master;Connect Timeout=5;MultipleActiveResultSets=true""; using (var connection = new SqlConnection(connectionString)) { connection.Open(); Console.WriteLine(""ServerVersion: {0}"", connection.ServerVersion); Console.WriteLine(""State: {0}"", connection.State); } Console.WriteLine(""Hello World!""); } } } ``` Expected output: Successful run. Actual output: Program hangs after printing Start!. No communication is received by SqlServer (using Sql Profiler) dotnet ``` .NET Command Line Tools (2.0.0-preview1-005846) Product Information: Version: 2.0.0-preview1-005846 Commit SHA-1 hash: 6dd6192155 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\smpatel\.dotnet\x64\sdk\2.0.0-preview1-005846\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002061-00 Build : 2b70ec9c3b014af0c2a5f45de0e5b73a1ae51c09 ``` SqlServer version 13.0.2151 The program runs fine with one of the following changes. - Using external server instead of localdb - Disabling MARS - Using System.Data.Common 4.3.0 package - Using native code for connection via `AppContext.SetSwitch(""System.Data.SqlClient.UseLegacyNetworkingOnWindows"", true);`" +19000 area-System.Security Re-enable some Principal tests These tests are failing when run on an account that is not domain joined. This PR makes the Theory a ConditionalTheory based on whether we can get an AccountDomainSid so that these tests can be run and pass when not run as local admin. resolves https://github.com/dotnet/corefx/issues/15436 resolves https://github.com/dotnet/corefx/issues/15421 +19001 area-System.Net Doc: workaround guidance for #8538 regarding multiple TLS protocols "Need to write documentation guidance for workaround for #8538. ""WinHttpHandler not updating response state with error from server when client supports multiple TLS protocols""" +19003 area-System.Data Add SqlClient test cases for MARS over Named Pipes CC @saurabh500 +19004 area-Infrastructure Archive all of the binaries in outerloop CI jobs. We aren't actually archiving the binaries in outerloop jobs. We only do this for innerloop jobs. I've copied over the logic to do that. +19005 area-System.Net Disable HttpListener WebSocket test on Windows 7 "HttpListener on Windows platforms requires ""websocket.dll"" native component in order for WebSocket upgrade to work. And Windows platforms before Windows 8 did not have that component. Fixes #18906." +19007 area-Infrastructure Move local corefx targets/tasks to BuildTools This change mostly deals with moving Tools-Override and CoreFxTools task library to BuildTools and consuming them from there instead. We should not merge this until the associated BuildTools PR is merged. https://github.com/dotnet/buildtools/pull/1460. I did publish a private package for this BuildTools version to test it but we shouldn't merge with that private buildtools being referenced. +19009 area-System.Net Tweak the SendAsync_ExpectedDiagnosticCancelledActivityLogging test A few tweaks to hopefully either fix the test(s) or at least help to further isolate the cause for the hangs. Closes https://github.com/dotnet/corefx/issues/16610 +19010 area-System.Diagnostics Fix downgrade warnings about TraceEvent package Fixes https://github.com/dotnet/corefx/issues/18836. cc @stephentoub @drewscoggins @jorive @brianrob +19012 area-System.IO Fix some System.IO.PathTests on Desktop to support legacy path behavior Fixes: #18827 Fixes: #18799 Fixes: #18717 Contributes: #18888 cc: @danmosemsft @JeremyKuhne @ianhays +19013 area-System.Security Change tests to properly generate RSA (CSP) key on netfx Fixes: https://github.com/dotnet/corefx/issues/18811 General issue: https://github.com/dotnet/corefx/issues/12388 +19016 area-System.Collections Calling methods on default(ImmutableArray) unpredictable on UwpAOT "This helper (ImmutableArray.ThrowNullRefIfNotInitialized()) is supposed to ensure a NullReferenceException if you call a method on an uninitialized ImmutableArray. It's coded to be performant. On .NET Native (with ""/buildtype:ret"" passed to ILC), it's **really** performant. As in, it gets optimized away entirely. As a result, many tests in System.Collections.Immutable.Tests that test this guard fail. cc @davidwrighton - in case he has any guidance on how to avoid this. " +19017 area-System.Security Simplify X509Chain building with OpenSSL While looking into why some chain errors show on all certificates, vs just the ones where the problem originates, I ran across some information that would have simplified the work of building chains long ago. By providing the candidates set (including the values from ChainPolicy.ExtraStore) and the trusted store (the union of the CurrentUser\Root and LocalMachine\Root stores) in separate collections OpenSSL will tell us when the root was trusted or not. So we should do that, and get rid of our post-facto decision that says the root was not trusted after all. The error codes getting copied in multiple positions was an artifact of the callback being called at the end with `ok=1`. Most of the time the X509StoreCtxGetError value has been cleared to `X509_V_OK`, but some of them remain. By only reading error codes when `ok=0` they're not only placed on the element where we first read them. There's a fair body of tests which already verify LM\Root trust; and I manually verified behaviors with CU\Root. +19019 area-System.Threading Build System.Threading.Overlapped on uapaot +19021 area-System.Security Make RSASignaturePadding a required parameter for RSA certs "In the original API design we went back and forth on having a default for RSASignaturePadding. In the end we landed on convenience, and defaulted it to Pkcs1 (v1.5) padding since that is the most widely supported. Some additional feedback was given that suggested that we really didn't want to do that, after all, we had nicely made the digest algorithm a required parameter. This change makes RSASignaturePadding a required parameter for creating RSA certificates. As a consequence the Create method which uses a certificate now has more failure modes. 1) Hybrid algorithm signing is currently disallowed. Either ""RSA is special"", or ""you can only sign with the same algorithm so the options make sense"". We are currently using the latter, though they're almost identical given our current support matrix (2 algorithms). 2) Using Create(X509Certificate2) with .ctor(PublicKey) fails for RSA. This one ended up being ""RSA is special"". In this degenerate case we don't have enough data to know if the signing key is using Pkcs1 or PSS, and NIST guidance is to only use a single padding mode with an RSA private key; so we can't make any assumptions. (We can't even assume signed-with-Pkcs1 means signs-with-Pkcs1, unless it's self-signed)" +19022 area-System.Data Add Async flag to SqlClient NamedPipes' PipeStream to resolve an issue with connection hangs while using MARS over NP. Needed to add an Async flag to the NP PipeStream options. Without the async option, connection.Open() hangs forever while waiting on a sync write for sending the MARS SYN packet. +19023 area-System.Security "Desktop: System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests/ValidateDecryptorProperties failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests/ValidateDecryptorProperties Message: ~~~ System.Security.Cryptography.CryptographicException : Decrypting a value requires that a key be set on the algorithm object. ~~~ Stack Trace: ~~~ at System.Security.Cryptography.AesCryptoServiceProvider.CreateDecryptor() at System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests.ValidateDecryptorProperties() in E:\A\_work\82\s\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\AES\AesContractTests.cs:line 202 ~~~ Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170427.01/workItem/System.Security.Cryptography.Algorithms.Tests/analysis/xunit/System.Security.Cryptography.Encryption.Aes.Tests.AesContractTests~2FValidateDecryptorProperties +19025 area-System.Net Add missing theory to IsWebSocketRequest_GetProperty_ReturnsExpected @davidsh +19026 area-Serialization Skip Xml_TypeWithDateTimePropertyAsXmlTime on netfx. XmlCustomFormatter.FromTime is quirked, which causes the test to behavior differently on netfx and netcore. See [the method](https://github.com/dotnet/corefx/blob/63e70fa6b1bc6b7175467e0ad16cbbf4c44f8d83/src/System.Private.Xml/src/System/Xml/Serialization/Xmlcustomformatter.cs#L88) for more details. Fix #18993 +19027 area-Serialization Improvements on ReflectionXmlSerializationWriter. The PR reduce the times we use reflection to read object's member value. cc: @mconnew +19028 area-System.Data Test failure: System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureNoProtocolConnectionTestOnWindows Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureNoProtocolConnectionTestOnWindows` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: Build : Master - 20170427.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug - Windows.7.Amd64-x64 - Release - Debug - Windows.81.Amd64-x64 - Release - Debug - Windows.7.Amd64-x86 - Debug - Release - Windows.10.Amd64-x86 - Debug - Release - Windows.81.Amd64-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170427.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.TcpDefaultForAzureTest~2FNonAzureNoProtocolConnectionTestOnWindows +19029 area-System.IO Add WinRT to SafeFileHandle converters - Adds methods to create SafeFileHandle from IStorageFolder/IStorageFile - Adds test project and tests to S.R.WindowsRuntime This is the implementation of the API for #18759. Note that these Windows APIs are simply helpers that allow getting brokered CreateFile2 access. The methods have additional context and some additional filtering and can broker, but they are effectively equivalent to calling CreateFile2 directly. One specific takeaway is that the handle is independent of the source IStorage item once created. +19030 area-Serialization Try to fix the issue in fedora Fix #18538 @shmao please help review the code Without the fedora environment, I'm not sure if this will work on the fedora system, I just try to make this line of code consistent with other passed test cases. If you have any suggestion please let me know. +19031 area-System.Net Test failure: System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_Cancel_TaskIsCanceled Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_Cancel_TaskIsCanceled` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.ResponseStreamTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170427.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170427.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_Cancel_TaskIsCanceled +19032 area-System.Net "Test: System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_ValidCertificate_ExpectedValuesDuringCallback failed with ""System.Net.Http.HttpRequestException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest/UseCallback_ValidCertificate_ExpectedValuesDuringCallback` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The operation timed out Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170427.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170427.01/workItem/System.Net.Http.WinHttpHandler.Functional.Tests/analysis/xunit/System.Net.Http.WinHttpHandlerFunctional.Tests.ServerCertificateTest~2FUseCallback_ValidCertificate_ExpectedValuesDuringCallback +19033 area-System.IO ArgumentException from GetFullPath should include the path "In a case such as the below it would be helpful if the message was something like `The path ""C:|"" is not of a legal form.`. Seems reasonable to add it unless there's some kind of information disclosure issue (I don't know why, we don't generally cleanse our exception messages) ``` System.ArgumentException : The path is not of a legal form. Stack Trace : at System.IO.Path.GetFullPath(String path) at System.IO.FileInfo.Init(String fileName) at System.IO.FileInfo..ctor(String fileName) at MonoTests.System.Configuration.ConfigurationManagerTest.OpenExeConfiguration1_UserLevel_PerUserRoamingAndLocal() ```" +19036 area-System.Numerics "Tests under: System.Numerics.Tests.ComplexTests failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Numerics.Tests.ComplexTests/Cos_Advanced(real: -1.79769313486232E+308, imaginary: -1.79769313486232E+308, expectedReal: ∞, expectedImaginary: ∞)` has failed. Failure at line 590. Expected real: 8. Actual real: -8\r Expected: True\r Actual: False Stack Trace: at System.Numerics.Tests.ComplexTests.VerifyRealImaginaryProperties(Complex complex, Double real, Double imaginary, Int32 lineNumber) in E:\A\_work\147\s\corefx\src\System.Runtime.Numerics\tests\ComplexTests.cs:line 1831 at System.Numerics.Tests.ComplexTests.Cos_Advanced(Double real, Double imaginary, Double expectedReal, Double expectedImaginary) in E:\A\_work\147\s\corefx\src\System.Runtime.Numerics\tests\ComplexTests.cs:line 591 Build : Master - 20170427.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x86-Debug - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170427.01/workItem/System.Runtime.Numerics.Tests/analysis/xunit/System.Numerics.Tests.ComplexTests~2FCos_Advanced(real:%20-1.79769313486232E+308,%20imaginary:%20-1.79769313486232E+308,%20expectedReal:%20%E2%88%9E,%20expectedImaginary:%20%E2%88%9E) +19037 area-System.Security "Test: System.Security.Cryptography.Hashing.Algorithms.Tests.HmacSha384Tests/ProduceLegacyHmacValues failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Hashing.Algorithms.Tests.HmacSha384Tests/ProduceLegacyHmacValues` has failed. Assert.Throws() Failure\r Expected: typeof(System.PlatformNotSupportedException)\r Actual: (No exception was thrown) Stack Trace: at System.Security.Cryptography.Hashing.Algorithms.Tests.HmacSha384Tests.ProduceLegacyHmacValues() in E:\A\_work\147\s\corefx\src\System.Security.Cryptography.Algorithms\tests\HmacSha384Tests.cs:line 0 Build : Master - 20170427.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Release - x86-Debug - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170427.01/workItem/System.Security.Cryptography.Algorithms.Tests/analysis/xunit/System.Security.Cryptography.Hashing.Algorithms.Tests.HmacSha384Tests~2FProduceLegacyHmacValues +19038 area-System.Net "Desktop: System.Net.Http.Functional.Tests.CancellationTest.GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly failed with ""Xunit.Sdk.ThrowsException""" Failed test: System.Net.Http.Functional.Tests.CancellationTest.GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/32/testReport/System.Net.Http.Functional.Tests/CancellationTest/GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly_useTimeout__True__startResponseBody__True_/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Net.WebException) Actual: typeof(System.OperationCanceledException): The operation was canceled. ~~~ STACK TRACE: ~~~ at System.Net.Http.HttpClient.HandleFinishSendAsyncError(Exception e, CancellationTokenSource cts) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 506 at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 461 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.CancellationTest.<>c__DisplayClass2_3.<b__2>d.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Http\tests\FunctionalTests\CancellationTest.cs:line 71 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +19039 area-System.Data "Desktop: System.Data.SqlClient.Tests.ExceptionTest.NamedPipeInvalidConnStringTest failed with ""Xunit.Sdk.ContainsException""" Failed test: System.Data.SqlClient.Tests.ExceptionTest.NamedPipeInvalidConnStringTest COnfiguration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/32/testReport/System.Data.SqlClient.Tests/ExceptionTest/NamedPipeInvalidConnStringTest/ MESSAGE: ~~~ Assert.Contains() Failure Not found: (provider: Named Pipes Provider, error: 25 - Connection string is not valid) In value: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ~~~ STACK TRACE: ~~~ at System.Data.SqlClient.Tests.ExceptionTest.VerifyConnectionFailure[TException](Action connectAction, String expectedExceptionMessage, Func`2 exVerifier) in D:\j\workspace\outerloop_net---903ddde6\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs:line 155 at System.Data.SqlClient.Tests.ExceptionTest.VerifyConnectionFailure[TException](Action connectAction, String expectedExceptionMessage) in D:\j\workspace\outerloop_net---903ddde6\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs:line 171 at System.Data.SqlClient.Tests.ExceptionTest.OpenBadConnection(String connectionString, String errorMsg) in D:\j\workspace\outerloop_net---903ddde6\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs:line 165 at System.Data.SqlClient.Tests.ExceptionTest.NamedPipeInvalidConnStringTest() in D:\j\workspace\outerloop_net---903ddde6\src\System.Data.SqlClient\tests\FunctionalTests\ExceptionTest.cs:line 112 ~~~ +19040 area-System.Security "Desktop: System.Security.Cryptography.Rsa.Tests.ImportExport.ExportAutoKey failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Rsa.Tests.ImportExport.ExportAutoKey Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/32/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/ExportAutoKey/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : The requested operation is not supported.\r\n ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.NCryptNative.ExportKey(SafeNCryptKeyHandle key, String format) at System.Security.Cryptography.CngKey.Export(CngKeyBlobFormat format) at System.Security.Cryptography.RSACng.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Rsa.Tests.ImportExport.ExportAutoKey() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 26 ~~~ +19041 area-System.Security "Desktop: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportExport1032 failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportExport1032 Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/32/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/ImportExport1032/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : Specified key is not a valid size for this algorithm. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.AsymmetricAlgorithm.set_KeySize(Int32 value) at System.Security.Cryptography.RSACng.set_Key(CngKey value) at System.Security.Cryptography.RSACng.ImportParameters(RSAParameters parameters) at System.Security.Cryptography.Rsa.Tests.ImportExport.ImportExport1032() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 132 ~~~ +19042 area-System.Security Reverse ArgumentExceptions changed to CryptographicException (was breaking change) Failed test: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoModulus Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/32/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/ImportNoModulus/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(System.ArgumentException): The specified RSA parameters are not valid; both Exponent and Modulus are required fields. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.RSACng.ImportParameters(RSAParameters parameters) at System.Security.Cryptography.Rsa.Tests.ImportExport.<>c__DisplayClass10_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 263 ~~~ +19044 area-System.Collections ImmutableHashSet<>.HashBucket needs to implement an Equals()/GetHashCode()/IEquatable for perf reasons "ActiveIssued two tests on System.Collections.Immutable.Tests: ``` System.Collections.Immutable.Tests.ImmutableHashSetTest.EnumeratorWithHashCollisionsTest System.Collections.Immutable.Tests.ImmutableHashSetTest.RemoveValuesFromCollidedHashCode ``` Before the panic sets in any further, the fix is simple: ImmutableHashSet<>.HashBucket needs to implement an Equals()/GetHashCode() pair. I strongly recommend that it also implement IEquatable<HashBucket> to remove the boxing penalty. Right now, comparison of HashBuckets falls back to the last-resort Equals() method implemented by System.ValueType. Which uses _Reflection_ to compare the fields of the HashBucket. So even on non-AoT platforms, you're taking a horrendous perf hit. On AoT platforms, the private fields get hidden from Reflection, thus causing Equals() to return true unconditionally. This is causing two tests to fail on AoT, and it's amazing that it's only two. ImmutableHashSetTest.EnumeratorWithHashCollisionsTest ImmutableHashSetTest.RemoveValuesFromCollidedHashCode @morganbr: I'll open a separate TFS item for the toolchain. There's a discoverable call to EqualityComparer<HashBucket>.Default in the code so if that doesn't kick the toolchain into emitting the auto-Equals method for HashBucket, it probably should. Regardless, this issue should also be fixed in System.Collections.Immutable because of the perf hit alone." +19048 area-System.Globalization Get System.Globalization.Calendars.Tests working on AOT The reasons are all too familiar by now... +19051 area-System.Net Remove SafeHandle marshaling from Send/ReceiveAsync operations "In high-throughput situations with asynchronous operations on Sockets, the overhead involved in marshaling SafeHandles is showing up as a non-trivial cost, contributing upwards of 5% overhead to an end-to-end benchmark doing sends and receives on sockets. While the SafeHandles help to avoid certain misuses, a) SafeHandle marshaling (and in particular the implicit use of DangerousAddRef/Release) already isn't being done for synchronous operations (presumably to enable operation cancelation by closing the handle concurrent with the operation), and it's only being done for asynchronous operations during the actual P/Invoke (and thus the SafeHandle isn't ""protected"" while the async operation is in flight). The benefit of the protection isn't worth the cost. This commit removes the marshaling for send/receive operations. Anyone feel strongly for / against this change? cc: @vancem, @geoffkizer, @jkotas, @davidsh, @cipop, @davidfowl " +19052 area-System.Diagnostics Support telemetry correlation for applications running on 4.6 but compiled with 4.5 framework "Diagnostics Source implements a workaround for the HttpClient requests monitoring by injecting code using reflection. This [logic](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs#L614-L651) only compiles for [NET46 library](https://github.com/dotnet/corefx/blob/b0665b6894a3cc0925217b7728bec54b5455dc2c/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj#L71-L73): ``` xml ``` This means that customers compiling applications with the framework 4.5 and running an application as Azure Web App or on any other platforms with NET46 installed will not have correlation feature enabled. Please compile this logic for NET45 and use a runtime check for the `System.HttpClient` library version. This will unblock the scenario. /CC: @vancem, @lmolkova " +19053 area-System.Security Stop producing System.Security.Cryptography.Native System.Security.Cryptography.Native.OpenSsl is the only version of the library in use, so let's be done building the older version. Fixes #13124. +19056 area-System.IO "Test: System.IO.Tests.DirectoryInfo_Create/CDriveCase failed with ""System.IO.DirectoryNotFoundException""" In behalf of @Jiayili1, moved from https://github.com/dotnet/corefx/issues/11687#issuecomment-297624327 This issue is repro on UWP F5 Tests, detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170427.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Create~2FCDriveCase Message : System.IO.DirectoryNotFoundException : Could not find a part of the path 'c:\'. Stack Trace : at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Tests.DirectoryInfo_Create.Create(String path) at System.IO.Tests.Directory_CreateDirectory.CDriveCase() +19057 area-System.Data SqlClient: Exception is thrown with connection pooling with latest package (4.4.0-preview1) Working on a repro project. https://github.com/aspnet/EntityFramework/tree/sqlclient Clone the branch, run `build.cmd /t:Compile` Run test\EFCore.SqlServer.FunctionalTests on netcoreapp2.0 Stack traces Exception 1 happens when calling 'ClearAllPools` ``` Failed Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.EnsureCreated_can_create_physical_database_with_filename_and_s chema Error Message: System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.CheckWriteOperations() at System.IO.Pipes.PipeStream.Flush() at System.Net.Security.AuthenticatedStream.Dispose(Boolean disposing) at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Data.SqlClient.SNI.SNINpHandle.Dispose() at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.Dispose() at System.Data.SqlClient.TdsParser.Disconnect() at System.Data.SqlClient.SqlInternalConnectionTds.Dispose() at System.Data.ProviderBase.DbConnectionPool.DestroyObject(DbConnectionInternal obj) at System.Data.ProviderBase.DbConnectionPool.Clear() at System.Data.ProviderBase.DbConnectionFactory.QueuePoolForRelease(DbConnectionPool pool, Boolean clearing) at System.Data.ProviderBase.DbConnectionPoolGroup.Clear() at System.Data.ProviderBase.DbConnectionFactory.ClearAllPools() at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.DeleteDatabase(String name) in D:\MergeBranch\EntityFramework\test\EFCore.SqlS erver.FunctionalTests\Utilities\SqlServerTestStore.cs:line 267 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.Dispose() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTe sts\Utilities\SqlServerTestStore.cs:line 445 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.<>c.< b__9_0>d.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 320 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__7`1.<b__7_0>d.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore\Extensions\Execu tionStrategyExtensions.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__6.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 294 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Another one with same exception happens when calling `OpenAsync` ``` Failed Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.EnsureCreatedAsync_can_create_physical_database_and_schema Error Message: System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.CheckWriteOperations() at System.IO.Pipes.PipeStream.Flush() at System.Net.Security.AuthenticatedStream.Dispose(Boolean disposing) at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Data.SqlClient.SNI.SNINpHandle.Dispose() at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.Dispose() at System.Data.SqlClient.TdsParser.Disconnect() at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirec tedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPoo l pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPool Key poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneChe ckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.d__36.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore.Relational\Storage\RelationalCo nnection.cs:line 410 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass20_0.<b__0>d.MoveNext() in D:\MergeBranch\EntityFramework\src \EFCore.SqlServer\Storage\Internal\SqlServerDatabaseCreator.cs:line 162 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.d__18.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore.Relational\Storag e\RelationalDatabaseCreator.cs:line 244 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__10.MoveNext() in D:\MergeBranch\Entit yFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 334 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.<>c.< b__9_0>d.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 319 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__7`1.<b__7_0>d.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore\Extensions\Execu tionStrategyExtensions.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__7. MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 301 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:01:36.8622906] Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureDeletedTest.EnsureDeletedAsync_will_delete_databas e_with_opened_connections [FAIL] ``` MARS = true in both cases. Using package System.Data.SqlClient 4.4.0-preview1-25227-04 Dotnet ``` Product Information: Version: 2.0.0-preview1-005861 Commit SHA-1 hash: e0c0075ccd Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\smpatel\.dotnet\x64\sdk\2.0.0-preview1-005861\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002088-00 Build : e264d929481c1713687bc79e862bae275861981c ``` +19058 area-Infrastructure Breaking changes in CoreFx packages due to net461 > ns2.0 mapping "The remapping can cause ref-def mismatches when a NS1.5 or higher library is consumed in net461. For example see https://github.com/aspnet/MusicStore/pull/775#issuecomment-295513922. We could mitigate this by shoving those into the NETStandard.Library.NETFramework package, effectively ""lifting"" the implementation assembly up to the higher version via conflict resolution. Alternatively we do nothing and document that folks should upgrade those packages. @weshaggard @terrajobst, thoughts?" +19059 area-System.Runtime Update RefEmit Test to expect LoadContext for DynamicAssemblies Test update accompanying fix for https://github.com/dotnet/coreclr/issues/11228 CC @jkotas +19060 area-System.Data Disable SqlClient named pipes exception tests when targeted against Framework, since Core throws exceptions with different messages Resolves failures in https://github.com/dotnet/corefx/issues/19039 and https://github.com/dotnet/corefx/pull/17566 +19061 area-System.Security Allow empty authType for ClaimsIdentity This looks like an unintentional change made in porting that introcued a discrepancy between netcoreapp and desktop behavior. On desktop, an empty string as the authenticationtype is allowed. On netcoreapp before this change, authType was set instead null. resolves https://github.com/dotnet/corefx/issues/18814 After this change, all System.Security.Claims tests are passing on netfx and netcoreapp. cc: @bartonjs @krwq +19062 area-System.Reflection Disable RefEmit Test Issue to disable RefEmit test until https://github.com/dotnet/coreclr/pull/11264 makes into CoreFX. Original issue - https://github.com/dotnet/coreclr/issues/11228 +19063 area-System.Runtime Test updates for Array.Copy bugfixes - Disallow conversions between void* and Object (https://github.com/dotnet/coreclr/issues/10646) - Allow conversions between enum and its underlying type (https://github.com/dotnet/corefx/issues/13816) +19066 area-System.Numerics "Add more ""Legacy"" test cases for Complex class" "* These test cases validate legacy .NET Framework behavior, and only run there. Test cases which validate new, correct .NET Core behavior are now skipped on .NET Framework. * Clean up some use of string literals instead of `nameof` in `MemberData` attributes. * Add comments in all of the ""Legacy_TestData"" methods explaining that they are there for .NET Framework compat checks. * Cleaned up some whitespace inconsistency in the file I've done the following test runs: x86 + x64 .NET Core, x64 .NET Framework, all on Windows." +19067 area-Serialization To Fix rd.xml for Serialization Reflection Only Mode #19006 added rd.xml to `System.Runtime.Serialization.*.ReflectionOnly.Tests`, which made many serialization tests to pass in reflection only mode on UWP. The rd.xml, however, include metadata for the entire System.Private.DataContractSerialization, which is not what we want. We need to fix the rd.xml for System.Private.DataContractSerialization to include just the necessary metadata info. +19070 area-System.Security Fix SSL on Debian 9 Debian 9 has dropped support for SSLv3 and so they have bumped their soname to libssl.so.1.0.2. This change adds lookup for that soname and also makes SSLv3_method optional. +19071 area-System.Diagnostics Change xml docs for Activity.OperationName "The new `Activity` type from DiagnosticSource is based on OpenTracing's `span` type. However, I've noticed that Activity's meaning of ""OperationName"" is different than OpenTracing's. Definition from the [OpenTracing specification](https://github.com/opentracing/specification/blob/master/specification.md#start-a-new-span): > An operation name, a human-readable string which concisely represents the work done by the Span (for example, an RPC method name, a function name, or the name of a subtask or stage within a larger computation). The operation name should be the most general string that identifies a (statistically) interesting class of Span instances. That is, ""get_user"" is better than ""get_user/314159"". > > For example, here are potential operation names for a Span that gets hypothetical account information: > > | Operation Name | Guidance | > |--------|--------| > | get | Too general | > | get_account/792 |Too specific | > |get_account | Good, and account_id=792 would make a nice Span tag | With Activity however, the OperationName is used as a compile-time constant that is used for the DiagnosticSource event names - e.g. ""System.Net.Http.HttpRequestOut"". Depending on how much you'd like to follow the OpenTracing standard, it might be good to rename the property to reduce confusion. I think that your usage might come closest to OpenTracing's standard tag ""[component](https://github.com/opentracing/specification/blob/master/semantic_conventions.md#span-tags-table)"" however using that might be confusing as well. Maybe it's best to call it just `Name` (and `activityName` if used as a parameter)?! In the [HttpClient](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/DiagnosticsHandlerLoggingStrings.cs#L17) instrumentation code you already use `ActivityName` anyway. Also, the comment for `Activity.OperationName` still contains an explanation for an OpenTracing-like usage and therefore should be changed as well. ```csharp /// /// An operation name is a COARSEST name that is useful grouping/filtering. /// The name is typically a compile-time constant. Names of Rest APIs are /// reasonable, but arguments (e.g. specific accounts etc), should not be in /// the name but rather in the tags. /// public string OperationName { get; } ``` /cc @lmolkova @vancem " +19072 area-System.Security Disable whole System.Security.Permissions.Tests on netfx Fixes: #18971 Fixes: #18820 Fixes: #18819 Fixes: #18818 Fixes: #18817 Fixes: #18816 Fixes: #18815 Fixes: #18595 cc: @danmosemsft @bartonjs +19074 area-System.Security Skip S.S.C.Rsa test when framework version is smaller than 462 Fixes: #19041 Fixes: #19040 cc: @danmosemsft @ianhays @bartonjs +19075 area-Meta Add Unix core dump debugging instructions I've walked through these steps yesterday and felt that they should be listed in the docs, because a few things are fairly tricky and easy to get wrong. Thanks to @janvorli for giving me most of the guidance listed here. cc: @stephentoub +19076 area-System.Diagnostics "Desktop: System.Diagnostics.Tests.ProcessTests.HandleCountChanges failed with ""Xunit.Sdk.EqualException""" Failed test: System.Diagnostics.Tests.ProcessTests.HandleCountChanges Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Diagnostics.Tests/ProcessTests/HandleCountChanges/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 42 Actual: -532462766 ~~~ STACK TRACE: ~~~ at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 188 at System.Diagnostics.Tests.ProcessTests.HandleCountChanges() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessTests.cs:line 1199 ~~~ +19077 area-System.Net I want to implement Ssl​Stream in Core console application I followed this [Ssl​Stream Class](https://docs.microsoft.com/en-us/dotnet/api/System.Net.Security.SslStream?view=netcore-1.1&viewFallbackFrom=netcore-1.1.0), but it is applied to Core 2.0 which has not been released. Is there any document for Core 1.0 to use SslStream? Thanks for your help. +19078 area-System.Data Exclude flushing stream in SslOverTdsStream if the underlying stream is a PipeStream Pipes can sometimes be disconnected when trying to flush, and PipeStream's flush doesn't actually flush any data. Addresses https://github.com/dotnet/corefx/issues/19057 +19079 area-System.Security "Desktop: System.Security.Cryptography.Rsa.Tests.SignVerify.VerifySignature_SHA1_384 failed with ""System.Security.Cryptography.CryptographicException""" Failed tests: System.Security.Cryptography.Rsa.Tests.SignVerify.VerifySignature_SHA1_384 System.Security.Cryptography.Rsa.Tests.SignVerify.VerifySignature_SHA1_1032 System.Security.Cryptography.Rsa.Tests.SignVerify.ExpectedSignature_SHA1_1032 System.Security.Cryptography.Rsa.Tests.SignVerify.ExpectedSignature_SHA1_384 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Security.Cryptography.Rsa.Tests/SignVerify/VerifySignature_SHA1_384/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : Specified key is not a valid size for this algorithm. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.AsymmetricAlgorithm.set_KeySize(Int32 value) at System.Security.Cryptography.RSACng.set_Key(CngKey value) at System.Security.Cryptography.RSACng.ImportParameters(RSAParameters parameters) at System.Security.Cryptography.Rsa.Tests.SignVerify.VerifySignature(Byte[] signature, Byte[] data, String hashAlgorithmName, RSAParameters rsaParameters) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\SignVerify.cs:line 815 at System.Security.Cryptography.Rsa.Tests.SignVerify.VerifySignature_SHA1_384() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\SignVerify.cs:line 276 ~~~ +19080 area-System.Security "Desktop: System.Security.Cryptography.Rsa.Tests.SignVerify.NegativeVerify_BadKeysize failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Rsa.Tests.SignVerify.NegativeVerify_BadKeysize Configuration: outerloop_netfx_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Security.Cryptography.Rsa.Tests/SignVerify/NegativeVerify_BadKeysize/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : The parameter is incorrect.\r\n ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.NCryptNative.VerifySignature[T](SafeNCryptKeyHandle key, Byte[] hash, Byte[] signature, T& paddingInfo, AsymmetricPaddingMode paddingMode, NCryptSignatureVerifier`1 verifier) at System.Security.Cryptography.NCryptNative.VerifySignaturePkcs1(SafeNCryptKeyHandle key, Byte[] hash, String hashAlgorithm, Byte[] signature) at System.Security.Cryptography.RSACng.VerifyHash(Byte[] hash, Byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) at System.Security.Cryptography.RSA.VerifyData(Byte[] data, Int32 offset, Int32 count, Byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) at System.Security.Cryptography.RSA.VerifyData(Byte[] data, Byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) at System.Security.Cryptography.Rsa.Tests.SignVerify.NegativeVerify_BadKeysize() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\SignVerify.cs:line 489 ~~~ +19081 area-System.Security Desktop: System.TypeLoadException: Could not load type 'System.Security.Cryptography.TripleDESCng' from assembly 'System.Security.Cryptography.Cng' Failed test: System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESReusabilityTests.TripleDESReuseEncryptorDecryptor Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Security.Cryptography.Encryption.TripleDes.Tests/TripleDESReusabilityTests/TripleDESReuseEncryptorDecryptor/ MESSAGE: ~~~ System.TypeLoadException : Could not load type 'System.Security.Cryptography.TripleDESCng' from assembly 'System.Security.Cryptography.Cng, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESCngProvider.Create() at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESFactory.Create() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\TripleDES\TripleDESFactory.cs:line 19 at System.Security.Cryptography.Encryption.TripleDes.Tests.TripleDESReusabilityTests.TripleDESReuseEncryptorDecryptor() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\TripleDES\TripleDESReusabilityTests.cs:line 18 ~~~ +19082 area-System.Net Stop disposing of request content in HttpClient HttpClient on Unix fails for some sites, in cases where the site sends a response before it’s fully received the entirety of the request. That’s because HttpClient has logic to Dispose of the request content once the Task returned from the handler’s SendAsync completes, and unlike WinHTTP, libcurl doesn’t require that the whole request be sent before any of the response is processed. That means that CurlHandler may receive the response (or the response headers), complete the SendAsync task, but still be reading from the request content, which may then be disposed of by HttpClient while it’s still in use, causing potential corruption, exceptions, etc. The Dispose behavior has other problems with it. A more generalized version of the above is that it prevents handlers that want to support full duplex communication, since it essentially requires that the whole request be sent before the response is processed. It also forces extra cost onto consuming code in some situations, as it means that the request content objects can’t be pooled and reused (since disposal typically invalidates objects for such a purpose, though in some cases a custom content could be developed to override and ignore Dispose). A variety of approaches were explored to address this: - Change CurlHandler to only complete the SendAsync Task when both the request has been fully sent and the appropriate portion of the response has been received. This is problematic, though, as with the pull model employed by libcurl, we don’t know reliably when the request has been fully sent. - Change the disposal to be handled by the handlers rather than by HttpClient. This could help in that a handler like CurlHandler could simply defer disposal until libcurl tells it the “easy” operation is done. But it has other downsides. Today code can use an HttpClientHandler without HttpClient, e.g. by using HttpMessageInvoker instead of HttpClient, in which case it bypasses this disposal logic (and other logic provided by the relatively thin HttpClient wrapper). If we were to move the disposal logic to the HttpClientHandler, now such code that was never having its request content disposed will start to, which is bad and exactly the opposite of what we want. It also causes problems for chains of handlers, e.g. if HttpClient is given a handler that wraps CurlHandler, and that handler expects to be able to look at the request content after the SendAsync Task from CurlHandler completes but before it itself completes its SendAsync Task. And while such a scenario may seem far fetched, we effectively have it in the bits today: the diagnostic handler that's used to pass details off to DiagnosticListeners is injected in the middle like this, and it does pass off the request content after the wrapped SendAsync Task completes... if a listener was expecting a non-disposed request content at that point, it would be sorely disappointed. - Simply stop disposing. The primary downside here is existing code that may have expected disposal to happen, e.g. if a StreamContent wrapping a FileStream isn't explicitly disposed of by the app code, cleanup of the FileStream will be left to its finalizer. The least bad option is to simply stop disposing. This PR makes that change. Fixes https://github.com/dotnet/corefx/issues/9006 Fixes https://github.com/dotnet/corefx/issues/16259 Fixes https://github.com/dotnet/corefx/issues/1794 cc: @davidsh, @cipop, @geoffkizer, @Priya91, @davidfowl, @mikeharder +19083 area-System.Net Test failure: System.Net.Tests.HttpWebRequestTest / Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException Failed test: System.Net.Tests.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Net.Tests/HttpWebRequestTest/Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException_remoteServer__http___corefx_net_cloudapp_net_Echo_ashx_/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.Equal() Failure Expected: 1 Actual: 0 ~~~ STACK TRACE: ~~~ at System.Net.Tests.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException(Uri remoteServer) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 523 ~~~ +19084 area-System.Data Disable Managed SNI in sqlclient Enable Native SNI in sqlClient to unblock partners. Addresses #19057 +19085 area-Infrastructure [release/2.0.0][DO_NOT_MERGE][ARM] Update rootfs for Tizen armel *This PR is duplicate of https://github.com/dotnet/corefx/pull/18916 in master branch.* *This PR should be merged only after related PR(https://github.com/dotnet/coreclr/pull/11285) in coreclr merged. Unless Tizen armel CI for CoreCLR will be broken.* This is required to build CoreFX for Tizen armel as a part of .NET Core 2.0.0 for Tizen. Existing rootfs for armel Tizen is out-of-dated and not suitable for .NET Core 2.0.0 for Tizen. Two changes are made. * Update rootfs for Tizen armel to recent version * Updates CI for Tizen armel to make use of a prebuilt embedded rootfs as Ubuntu arm does. +19086 area-Infrastructure Dumpling errors over shared files "https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/consoleText ``` Executing in D:\j\workspace\outerloop_net---903ddde6\bin\Windows_NT.AnyCPU.Debug\Common.Tests\netstandard\ Running tests... Start time: 15:24:25.99 downloaded dumpling.py total elapsed time 0:00:00.341000 downloaded dumpling.py total elapsed time 0:00:00.341000 Traceback (most recent call last): Traceback (most recent call last): File ""dumpling.py"", line 1128, in File ""dumpling.py"", line 1128, in main(sys.argv) File ""dumpling.py"", line 1123, in main main(sys.argv) cmdProc.Process(config) File ""dumpling.py"", line 1123, in main File ""dumpling.py"", line 537, in Process self.Install(config) File ""dumpling.py"", line 545, in Install self._dumpSvc.DownloadClientFile('dumpling.py', config.installpath) File ""dumpling.py"", line 213, in DownloadClientFile DumplingService._stream_file_from_response(response, os.path.join(downdir, filename)) File ""dumpling.py"", line 384, in _stream_file_from_response os.remove(path) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\dotnet-bot\\.dumpling\\dumpling.py' cmdProc.Process(config) File ""dumpling.py"", line 537, in Process self.Install(config) File ""dumpling.py"", line 545, in Install self._dumpSvc.DownloadClientFile('dumpling.py', config.installpath) File ""dumpling.py"", line 213, in DownloadClientFile DumplingService._stream_file_from_response(response, os.path.join(downdir, filename)) File ""dumpling.py"", line 384, in _stream_file_from_response os.remove(path) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\dotnet-bot\\.dumpling\\dumpling.py' downloaded dumpling.py downloading debugger for client windows-amd64 Traceback (most recent call last): File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 1128, in main(sys.argv) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 1123, in main cmdProc.Process(config) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 537, in Process self.Install(config) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 566, in Install dbgPath = self._dumpSvc.DownloadDebugger(dbgdir) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 192, in DownloadDebugger DumplingService._stream_zip_archive_from_response(response, outputdir) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 355, in _stream_zip_archive_from_response zip.extract(path, unpackdir) File ""C:\Python27\lib\zipfile.py"", line 1031, in extract downloaded dumpling.py downloaded dumpling.py return self._extract_member(member, path, pwd) File ""C:\Python27\lib\zipfile.py"", line 1082, in _extract_member os.mkdir(targetpath) WindowsError: [Error 183] Cannot create a file when that file already exists: 'C:\\Users\\dotnet-bot\\.dumpling\\dbg\\dbg\\triage' downloaded dumpling.py downloading debugger for client windows-amd64 Adding debugger settings dumpling config configuration saved to C:\Users\dotnet-bot\.dumpling\dumpling.config.json Debugger successfully installed downloaded analysis.py downloaded triage.ini ```" +19088 area-Infrastructure Drop build number for final preview1 package build cc @gkhanna79 @Petermarcu +19090 area-System.Security "Desktop: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ZeroLengthContent_FixedValue failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ZeroLengthContent_FixedValue Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests/EdgeCasesTests/ZeroLengthContent_FixedValue/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : Invalid provider type specified.\r\n ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ValidateZeroLengthContent(Byte[] encodedMessage) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 174 at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.ZeroLengthContent_FixedValue() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Pkcs\tests\EnvelopedCms\EdgeCasesTests.cs:line 125 ~~~ +19091 area-System.Diagnostics "Desktop: BasicEventSourceTests.TestsManifestNegative.Test_GenerateManifest_InvalidEventSources failed with ""Xunit.Sdk.EqualException""" "Failed test: BasicEventSourceTests.TestsManifestNegative.Test_GenerateManifest_InvalidEventSources Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/BasicEventSourceTests/TestsManifestNegative/Test_GenerateManifest_InvalidEventSources/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 135) Expected: ··· NonEvent attribute. Actual: ··· NonEvent attribute.\\r\\nMultiple definitions for string \""task_W··· ↑ (pos 135) ~~~ STACK TRACE: at BasicEventSourceTests.TestsManifestNegative.Test_GenerateManifest_InvalidEventSources() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsManifestNegative.cs:line 145" +19092 area-System.Security "Desktop: System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests.InvalidHashCoreArgumentsFromStream failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests.InvalidHashCoreArgumentsFromStream Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Security.Cryptography.Hashing.Algorithms.Tests/InvalidUsageTests/InvalidHashCoreArgumentsFromStream/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.Security.Cryptography.CryptographicException): Bad Data.\r\n ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 cbData, Int32 ibStart, Int32 cbSize) at System.Security.Cryptography.SHA1CryptoServiceProvider.HashCore(Byte[] rgb, Int32 ibStart, Int32 cbSize) at System.Security.Cryptography.HashAlgorithm.ComputeHash(Stream inputStream) at System.Security.Cryptography.Hashing.Algorithms.Tests.InvalidUsageTests.<>c__DisplayClass1_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Algorithms\tests\InvalidUsageTests.cs:line 32 ~~~ +19093 area-System.Runtime "Desktop: System.Tests.BitConverterTests.ValueArgumentNull failed with ""Xunit.Sdk.EqualException""" Failed test: System.Tests.BitConverterTests.ValueArgumentNull Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/34/testReport/System.Tests/BitConverterTests/ValueArgumentNull/ MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 0) Expected: value Actual: byteArray ↑ (pos 0) ~~~ STACK TRACE: ~~~ at System.AssertExtensions.Throws[T](String paramName, Func`1 testCode) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\AssertExtensions.cs:line 51 at System.Tests.BitConverterTests.ValueArgumentNull() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\BitConverter.cs:line 35 ~~~ +19094 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds failed with ""System.Net.Http.HttpRequestException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls12, requestOnlyThisProtocol: True)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170428.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170428.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol:%20Tls12,%20requestOnlyThisProtocol:%20True) +19095 area-Serialization "Test: DataContractSerializerTests/DCS_FileStreamSurrogate failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `DataContractSerializerTests/DCS_FileStreamSurrogate` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\8b64ac9d-8324-443b-a250-64baec62f74f\\Work\\142c785d-2f76-4aae-b3c8-32bf55151a7a\\Unzip\\Test.txt' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at MyFileStream..ctor(String fileName) at DataContractSerializerTests.DCS_FileStreamSurrogate() Build : Master - 20170428.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170428.01/workItem/System.Runtime.Serialization.Xml.ReflectionOnly.Tests/analysis/xunit/DataContractSerializerTests~2FDCS_FileStreamSurrogate +19096 area-System.Runtime "Test: System.Tests.BitConverterTests/StartIndexPlusNeededLengthTooLong failed wtih ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.BitConverterTests/StartIndexPlusNeededLengthTooLong` has failed. Assert.Equal() Failure\r Expected: value\r Actual: (null) Stack Trace: at System.AssertExtensions.Throws[T](String paramName, Func`1 testCode) in E:\A\_work\132\s\corefx\src\Common\tests\System\AssertExtensions.cs:line 52 at System.Tests.BitConverterTests.StartIndexPlusNeededLengthTooLong() in E:\A\_work\132\s\corefx\src\System.Runtime.Extensions\tests\System\BitConverter.cs:line 96 Build : Master - 20170428.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Debug - x86-Release - x64-Debug - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170428.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.BitConverterTests~2FStartIndexPlusNeededLengthTooLong +19097 area-Serialization fix a test case for DataContractSerializer test Fix #18975 @shmao, I have updated the namespace of the DataContract to fix the DCS_BasicRoundtripDCRVerifyWireformatScenarios test with targetgroup netfx. please help review the code. +19098 area-System.Net HttpClient.SendAsync() throws 'Error while copying content to a stream.' "When requesting a JSON off of a Gravatar API endpoint, the call to SendAsync ends unsuccessfully with the above System.Net.Http.HttpRequestException. Repro: ```c# using (HttpClient httpClient = new HttpClient()) { HttpRequestMessage request = new HttpRequestMessage { RequestUri = new Uri(@""https://www.gravatar.com/caaa1c76de5cc0ceed0e32f3d4377f31.json""), Method = HttpMethod.Get, Headers = { { ""User-Agent"", ""csharp"", ""Connection"", ""close"" } } }; httpClient.Timeout = new TimeSpan(0, 0, 0, 5); using (HttpResponseMessage response = await httpClient.SendAsync(request)) { string responseContent = response.Content.ReadAsStringAsync(); } } ``` Expected result: The `responseContent` points to a string with the JSON content. Environment: System.Net.Http 4.3.0, netcoreapp1.0, runtime framework version 1.0.4 Notes: The Gravatar endpoint works in a way that it returns a 302 response to redirect to a more specific endpoint for the JSON data. When inspected with Fiddler, the above code throws without even doing the second HTTP request (after the redirect). It might seem that the root cause is that HttpClient does not follow the 302 status code and the 'Location' response header. But no, even with the below code it throws the same kind of exception. ```c# using (HttpClient httpClient = new HttpClient()) { HttpRequestMessage request = new HttpRequestMessage { RequestUri = new Uri(@""https://www.gravatar.com/caaa1c76de5cc0ceed0e32f3d4377f31.json""), Method = HttpMethod.Get, Headers = { { ""User-Agent"", ""csharp"" } } }; httpClient.Timeout = new TimeSpan(0, 0, 0, 5); string responseContent; using (HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { if (response.StatusCode == System.Net.HttpStatusCode.Found && !string.IsNullOrEmpty(response.Headers.Location.PathAndQuery)) { HttpRequestMessage redirectRequest = new HttpRequestMessage { RequestUri = response.Headers.Location, Method = HttpMethod.Get, Headers = { { ""User-Agent"", ""csharp"" }, { ""Connection"", ""close"" } } }; using (HttpResponseMessage redirectResponse = await httpClient.SendAsync(redirectRequest, HttpCompletionOption.ResponseContentRead)) { var bytes = await response.Content.ReadAsByteArrayAsync(); responseContent = System.Text.Encoding.UTF8.GetString(bytes); } } } } ```" +19100 area-System.Runtime Fix param names for desktop runs Fix https://github.com/dotnet/corefx/issues/19096 and some others that don't seem filed +19101 area-System.IO [release 1.0/1.1] Add signing to windows native build We need to port the following change https://github.com/dotnet/corefx/pull/15962 to our release 1.0.0 and 1.1.0 branches so the are correctly signed on the next servicing event for them. +19102 area-System.Security Disable the other ProduceLegacyHmacValues test Fix https://github.com/dotnet/corefx/issues/19037 +19103 area-System.Net Fix bogus Debug.Assert in WebSocketBuffer cc: @stephentoub +19104 area-System.Runtime Type.GetType Behaves Differently on netfx and netcore "The following test present different behaviors on netfx and netcore. ```c# [Fact] public static void TypeGetTypeTest() { Type t = Type.GetType(""Employee, http://www.contoso.com""); Assert.Null(t); } ``` When targeting netstandard or netcoreapp, `Type.GetType` returns null and the test passes; when targeting netfx, the test fails with the following exception, ``` ---- System.IO.FileLoadException : The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) Stack Trace: at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtrpPrivHostBinder, Boolean loadTypeFromPartialName) at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) at System.Type.GetType(String typeName) ```" +19108 area-System.Net Disable HttpWebRequest Abort related test Similar to #18800. There is a race condition between starting the I/O with BeginGetRequestStream() and calling Abort(). The test tends to work more on .NET Core since a MemoryStream is returned as the request stream. But on .NET Framework, the request stream can be network based. The test is left disabled for now in the code. Contributes to #19083 +19110 area-System.Runtime GetFolderPath_Windows tests ~all fail on Nano https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170428.02/workItem/System.Runtime.Extensions.Tests eg ``` Assert.Equal() Failure\r\n ? (pos 40)\r\nExpected: ···config\\systemprofile\r\nActual: ···config\\systemprofile\\AppData\\Local\\Microsoft\\Windows\\History\r\n ? (pos 40) Stack Trace : at System.Tests.EnvironmentTests.GetFolderPath_Windows(SpecialFolder folder) ``` need fixing. +19111 area-System.Runtime Add Test to enumerate dynamically generated assemblies Test for validating scenario in https://github.com/dotnet/corefx/issues/18877. Should be merged after https://github.com/dotnet/coreclr/pull/11294 comes into CoreFX. @jkotas PTAL. +19112 area-System.Net Add parameter validation for CredentialCache.Add Add parameter validation for CredentialCache.Add, and fix test cases. Fix #18870 +19114 area-System.IO DIsable some tests failing on netfx All Pipes tests are passing on netfx after this commit. resolves https://github.com/dotnet/corefx/issues/18147 cc: @danmosemsft @sepidehMS +19115 area-Infrastructure Error while building CoreFx on Windows I am trying to build CoreFx on Windows. I have synced the latest code and using build.cmd from the root of the repository. However the build fails with `Unhandled Exception: System.TypeLoadException: Could not load type 'System.Object' from assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.` I have cleaned the clone using `git clean -d -f -x ` I get the following ``` F:\netcore\corefx>build.cmd Installing dotnet cli... Restoring BuildTools version 2.0.0-prerelease-01528-02... Initializing BuildTools... Done initializing tools. Unhandled Exception: System.TypeLoadException: Could not load type 'System.Object' from assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. ``` OS Windows Server 2012 R2 How do I get past this problem? +19116 area-Serialization Support IObjectReference in DCS +19117 area-Infrastructure Validate framework package Adds validation for our framework packages and marks suppresses errors. With this change we can ensure our packageIndex remains in sync with the actual framework packages. It also forces us to add exceptions when we have implementation-only assemblies. @weshaggard please review the index and exceptions to make sure they match your expectations. +19118 area-System.Net HttpWebRequest PNSE/NotImplemented members implemented & code coverage increased Fixes https://github.com/dotnet/corefx/issues/18680 Fixes https://github.com/dotnet/corefx/issues/18900 Fixes https://github.com/dotnet/corefx/issues/18800 Also refactored code in HttpWebRequest. Added a lot of tests which should raise the code coverage to 80-90% +19119 area-System.Runtime Scale back [Serializable] for .NET Core 2.0 We brought [Serializable] and BinaryFormatter back for .NET Core 2.0 in the name of compat and helping code to migrate to core. But it comes with some serious implications, and it's becoming clear we took things too far. Doing this makes it very easy for code to take dependencies on private implementation details and will end up binding our hands for improvements/optimizations/refactorings/etc. in the future. And with all of the improvements/optimizations/refactorings/etc. already made in core, we've had to punt on the idea of cross-runtime serialization support. There needs to be a better happy-medium. The primary need for BinaryFormatter and [Serializable] is on a few core types, e.g. primitives, some of the core collections (e.g. `List`), some small wrapper types (e.g. `Tuple`), etc. Proposal from me and @morganbr for .NET Core 2.0: 1. BinaryFormatter and friends are currently implemented in System.Runtime.Serialization.Formatters.dll. We keep that as-is. 2. SerializableAttribute, ISerializable, etc. are all implemented in System.Private.CoreLib.dll and exposed through System.Runtime.dll. We keep that as-is. 3. We remove most of the [Serializable] implementations we added back for .NET Core 2.0, keeping the most core and important 10% or so. For this set, we a) potentially implement ISerializable if not already implemented in order to separate the implementation from the surfaced serialization state and to minimize the impact of future refactorings and optimizations, and b) try to enable desktop/core serialization/deserialization, so that BinaryFormatter'd state can go back and forth between desktop and core. We'll need to finalize what the list of types is, but it would include all of the primiteves (e.g. Int32), core collection types (e.g. Dictionary), core wrapper types (e.g. KeyValuePair), Exception and important Exception-derived types, and a handful of others. We can add more types in the future as they're highlighted as blockers, but in the meantime we avoid taking on the burden of lots of serializable types that'll hamper our ability to move the platform forward as we'd like. [edit] **list of types we ended up scaling back to is here:** https://docs.microsoft.com/en-us/dotnet/standard/serialization/binary-serialization#binary-serialization-in-net-core +19120 area-System.IO [rel/1.0.0] Add signing to Windows native build Progress towards https://github.com/dotnet/corefx/issues/19101 Ports #15962 to rel for servicing. @weshaggard +19121 area-Serialization Support IObjectReference in DCS. Fix #19116 @shmao @mconnew @zhenlan +19122 area-Infrastructure [NO MERGE] This is a test of the emergency broad cast system (eg. CI) cc @stephentoub test for https://github.com/dotnet/corefx/issues/18580. +19123 area-System.IO [rel/1.1.0] Add signing to Windows native build resolves #19101 Ports #15962 to rel for servicing. @weshaggard +19126 area-System.IO Perf improvements to StreamWriter with perf tests StreamWriter Write multi character methods are inefficient when writing a small number of characters. This leads to the situation where the two calls to StreamWriter when doing this: ```csharp _streamWriter.Write('<'); _streamWriter.Write('/'); ``` runs significantly faster than the one call to StreamWriter when doing this: ```csharp char[] chars = new char[] { '<', '/'}; _streamWriter.Write(chars); ``` This is because Buffer.BlockCopy is always used with char arrays which is more expensive than a simple one char at a time array assignment in a loop. This is more expensive to the point that the overhead of an extra method call costs significantly less. When using the overload which takes a string, a similar issue occurs with a call to string.CopyTo. Here are the perf results before and after the change: | Test | Baseline Avg | Change Avg | % Diff | | --- | --- | --- | --- | | WriteCharArray(writeLength: 10) | 317.7133995 | 315.3404692 | 0.75% | | WriteCharArray(writeLength: 100) | 1042.793872 | 1022.39794 | 1.96% | | WriteCharArray(writeLength: 2) | 258.3788186 | 152.7016172 | 40.90% | | WriteCharArray(writeLength: 3) | 265.1405325 | 163.8113327 | 38.22% | | WriteCharArray(writeLength: 4) | 270.9672665 | 199.7605459 | 26.28% | | WriteCharArray(writeLength: 5) | 272.7933884 | 268.0367705 | 1.74% | | WriteCharArray(writeLength: 6) | 275.7948424 | 272.662552 | 1.14% | | WriteCharArray(writeLength: 7) | 286.0221257 | 287.7501426 | -0.60% | | WriteCharArray(writeLength: 8) | 286.0322753 | 292.7262179 | -2.34% | | WriteCharArray(writeLength: 9) | 310.2990805 | 300.8100611 | 3.06% | | WritePartialCharArray(writeLength: 10) | 320.8516534 | 306.7162235 | 4.41% | | WritePartialCharArray(writeLength: 100) | 992.9288187 | 989.0454886 | 0.39% | | WritePartialCharArray(writeLength: 2) | 274.1539188 | 161.9795985 | 40.92% | | WritePartialCharArray(writeLength: 3) | 272.7907888 | 187.373916 | 31.31% | | WritePartialCharArray(writeLength: 4) | 271.060147 | 218.1671762 | 19.51% | | WritePartialCharArray(writeLength: 5) | 279.3890399 | 285.6314942 | -2.23% | | WritePartialCharArray(writeLength: 6) | 284.7554306 | 298.942551 | -4.98% | | WritePartialCharArray(writeLength: 7) | 301.1510832 | 304.8441162 | -1.23% | | WritePartialCharArray(writeLength: 8) | 307.0650737 | 313.7156342 | -2.17% | | WritePartialCharArray(writeLength: 9) | 296.8718112 | 308.0524504 | -3.77% | | WriteString(writeLength: 10) | 282.8297979 | 283.8806133 | -0.37% | | WriteString(writeLength: 100) | 1015.825361 | 969.9482392 | 4.52% | | WriteString(writeLength: 2) | 229.6652552 | 156.3140115 | 31.94% | | WriteString(writeLength: 3) | 239.3874726 | 174.3450671 | 27.17% | | WriteString(writeLength: 4) | 245.0068201 | 199.1682472 | 18.71% | | WriteString(writeLength: 5) | 255.5878577 | 244.4042087 | 4.38% | | WriteString(writeLength: 6) | 246.6323967 | 244.8518418 | 0.72% | | WriteString(writeLength: 7) | 272.074129 | 261.9257195 | 3.73% | | WriteString(writeLength: 8) | 277.286225 | 266.4553122 | 3.91% | | WriteString(writeLength: 9) | 281.5565211 | 277.8713811 | 1.31% | +19127 area-Infrastructure Increase VSTS Symbol expiration to 30 day default skip ci please I accidentally had expiration set to 1 day in https://github.com/dotnet/corefx/pull/18350, I think for debug purposes. This PR sets it to 30. 30 is the default, but I hard-coded it in case the default changes. Realized I used 1 when porting this to CoreCLR/master in https://github.com/dotnet/coreclr/pull/11300. +19128 area-System.Net Remove a few PNSEs from HttpListener "- Make HttpListener.TimeoutManager return a valid instance - Make HttpListenerTimeoutManager.DrainEntityBody and IdleConnection validate arguments and roundtrip, as we can implicitly ""respect"" them due to them being about connection pooling and the managed implementation not doing any. - Make EntityBody, HeaderWait, MinSendBytesPerSecond, and RequestQueue getters all return the same default value as desktop - Make EntityBody, HeaderWait, MinSendBytesPerSecond, and RequestQueue setters all do argument validation prior to throwing a PNSE Closes https://github.com/dotnet/corefx/issues/17977 cc: @davidsh, @danmosemsft, @Priya91 " +19129 area-System.Linq Test System.Linq.Expressions.Tests.ParameterTests.ReadAndWriteRefParameters causes FailFast on AoT +19130 area-System.Security Fix 18896: KeyPassword is ignored on core Fixes https://github.com/dotnet/corefx/issues/18896 also fixing couple of tiny issues I found on the way FYI: @danmosemsft +19132 area-System.Linq Fix AoT run of S.Linq.Expressions tests +19133 area-System.Net Fix S.Net.Http.Functional.Tests on AoT +19134 area-System.Security Add support for RSA-PSS to cert creation. Encodes RSA-PSS SubjectPublicKeyInfo according to RFC 5756 and the SignatureAlgorithm value according to RFC 4055. PSS certificate creation still relies on the underlying key ability to compute the PSS signature. +19135 area-System.Data Add native error codes and messages to managed SNI Named Pipe disconnect errors, so as to match native SNI behavior. Resolves some of the issues seen in https://github.com/dotnet/corefx/issues/19057 +19138 area-System.Net Fix CookieException thrown for invalid HttpListener cookies Fixes #18482 Fixes #18486 Contributes to #18128 Best reviewed commit-by-commit, lot's of code movement here. +19139 area-Infrastructure Question: Visual Studio Designer Integration for .Net Core/.Net Standard 2.0 ".Net Standard 2.0 and .Net Core 2.0 have included APIs in `System.ComponentModel` for building and extending the Visual Studio designer (e.g `Component` class, `DesignerAttribute`, `TypeConverter`, etc..) However, if one tries to use these classes in the current release of Visual Studio 2017 to create designers for their classes, Visual Studio displays errors in the designer like ```c# using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; namespace CoreDesignerTest { public class Class1 : Component { } } ``` In Visual Studio, right-click on the ""Class1.cs"" node and choose ""View Designer"". > Could not load file or assembly 'System.ComponentModel.Primitives, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. With some hacking in my .config files, I can resolve the above error, but eventually Visual Studio fails to load the .Net Core assemblies with an ""Invalid Format"" error. I'm assuming this is due to the fact that Visual Studio, being a .Net Framework-based application, is trying to load a .Net Core assembly into a .Net Framework application, and therefore failing. My question is, with the coming release of .Net Core 2.0 and .Net Standard 2.0, will there also be an accompanying Visual Studio update that will provide the ability to create designers for .Net Core 2.0 and .Net Standard 2.0 classes?" +19140 area-System.Collections Remove dead code from System.Collections Didn't see the pull from @Olafski for #17905. Found two constuctors that could be removed. Rest of the code is indeed used. +19141 area-System.Data Removed dead code from System.Data.Common Removed dead code for System.Data.Common for issue #17905. +19142 area-Meta Modified test to use GetTempFileName As discussed in #19095 the test should be modified to use an actual temp file path. This also means it's no longer a const though. +19143 area-System.Linq Removed dead code from System.Linq.Parallel Removed dead code for System.Linq.Parrallel for issue #17905. +19144 area-System.Security Removed dead code from Security.Cryptography.X509Certificates for issue #17905. Removed dead code from Security Cryptography X509Certificates for issue #17905. +19145 area-System.Security Added constructors to immediately open an X509Store In this PR new constructor overloads have been added to the X509Store class which immediately open the store, instead of having to call Open on the constructed instance. Additionally an IsOpen property has been added to the X509Store that returns true or false depending on whether the store is open or not. Fixes #6550 +19146 area-System.IO Moved background thread to a task in SerialPort Moved background thread to task as descripted in #17696 +19147 area-System.Reflection Add MethodBase.IsConstructedGenericMethod property Added IsConstructedGenericMethod property to MethodBase, for completion and expresiveness as described in #17051 Closes #17051 +19148 area-System.Runtime Removed dead code system runtime serialisation formatters for issue #17905 Removed dead code system runtime serialisation formatters for issue #17905 +19150 area-System.Net Fix other bogus assert in System.Net cc: @stephentoub @davidsh +19152 area-Infrastructure OSX build issue with low ulimit Today me and @ptoonen ran into an issue when doing a full build of the corefx repo on OSX. Compiling some assemblies failed with a Too Many Open files error. This is caused by a low ulimit (see ulimit -a, which showed 256 for open files on my machine (OSX Sierra 10.12.4)). The init-tools.sh script already tries to change the ulimit by issuing ulimit -n 2048. It seemed that this can only be done when root, although I just tried it again and now it seems to work. I ended up raising the limit system wide (as described [here](https://unix.stackexchange.com/questions/108174/how-to-persist-ulimit-settings-in-osx-mavericks)). After rebooting this fixed the issue. After discussing this with @karelz we decided that it might be useful to raise an issue for this. +19153 area-System.Runtime StringComparer.FromComparison test Added @AlexRadch's tests for method StringComparer.FromComparison. See issue #13800 and PR (abandoned) #14623 +19154 area-System.Data System.Data.SqlClient 4.4.0-preview1 doesn't support RIDs win-x64 or win-x86 "# Repro Steps 1. Install SDK 2.0.0-preview1-005899 2. Create app using files below 3. `dotnet restore` 4. `dotnet publish -f netcoreapp2.0 -r win-x64` 5. `bin\Debug\netcoreapp2.0\win-x64\Repro.exe` ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Data.SqlClient.SNINativeMethodWrapper.SNIInitialize(IntPtr pmo) ``` 6. `dotnet publish -f netcoreapp2.0 -r win7-x64` 7. `bin\Debug\netcoreapp2.0\win7-x64\Repro.exe` (works as expected) 8. I assume `win-x86` has the same issue, though I haven't tested. # Program.cs ```C# using System; using System.Data.SqlClient; namespace Repro { class Program { static void Main(string[] args) { using (var connection = new SqlConnection(@""Data Source=(localdb)\MSSQLLocalDB;Database=master;Connect Timeout=30"")) { connection.Open(); Console.WriteLine(""ServerVersion: {0}"", connection.ServerVersion); } } } } ``` # Repro.csproj ```XML Exe netcoreapp2.0 win-x64;win7-x64 ``` # NuGet.config ```XML ```" +19155 area-System.Net Validate input parameters for HttpWebRequest requeststream Write calls Validate the input parameters for Write* calls before hitting the underlying MemoryStream calls which throw exceptions different than expected ones. Fixes #18787 @davidsh Kindly review. Thanks, Mandar +19156 area-System.Threading WaitHandleWaitAll fails on desktop "https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170429.02/workItem/System.Threading.Tests/analysis/xunit/System.Threading.Tests.ManualResetEventTests~2FWaitHandleWaitAll ``` Windows.10.Amd64-x64-Release Unhandled Exception of Type System.NotSupportedException Message : System.NotSupportedException : WaitAll for multiple handles on a STA thread is not supported. Stack Trace : at System.Threading.WaitHandle.WaitMultiple(WaitHandle[] waitHandles, Int32 millisecondsTimeout, Boolean exitContext, Boolean WaitAll) at System.Threading.WaitHandle.WaitAll(WaitHandle[] waitHandles, Int32 millisecondsTimeout, Boolean exitContext) at System.Threading.Tests.ManualResetEventTests.WaitHandleWaitAll() in E:\A\_work\313\s\corefx\src\System.Threading\tests\ManualResetEventTests.cs:line 55 ``` Needs this adding `[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""Full framework throws NotSupportedException because test runs on STA and Core run on MTA"")]`" +19158 area-Infrastructure Update performance-tests.md Update performance-tests.md I was trying to get the tests running for #18765 and was having issues. I also noticed what seems like the same issue reported in #17118. This change mentions that performance tests should be run from the Performance folder with Admin privileges. FWIW, I had to do not only: ``` build build-tests ``` But also: ``` build -release build-tests -release ``` @karelz +19162 area-System.Security ECCurve.Validate() error message inconsistency for Explicit Curves When defining an explicit curve, there's an inconsistency in the error message. If some of the parameters are incorrect, we get: ``` The specified prime curve parameters are not valid. Prime, A, B, G.X, G.Y and Order are required and must be the same length, and the same length as Q.X, Q.Y and D if those are specified. Seed, Cofactor and Hash are optional. Other parameters are not allowed. ``` Based on the message, only **Prime, A, B, G.X, G.Y and Order** are required and **Cofactor** is optional. However, based on [Validate() line L207](https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/ECCurve.cs#L207), **Cofactor** is a required parameter too. +19166 area-System.Net .net core 2.0 HttpClient cookie handling bug I tested client application and found bug related to cookies. Here i provide test server in python. Basically, first GET request sets cookie on client, second POST request followed by redirect updates that cookie. Example work as intended in python requests, curl, System.Net.Http.WinHttpHandler 4.3.0. Expected Response: -- Done Set -- Done Index: Set-Cookie: p=not_overwritten -- Done Index: Set-Cookie: p=overwritten_on_post_with_redirect When i test it with .Net Core 2.0 on Windows i get this: -- Done Set -- Done Index: No cookie! -- Done Index: No cookie! When i test it with .Net Core 2.0 on Debian 8 i get this: -- Done Set -- Done Index: No cookie! -- Done Index: Set-Cookie: p=overwritten_on_post_with_redirect If i modify my server code **to include Path in cookies**, everything starts to work as intended. This bug could be related to https://github.com/dotnet/corefx/issues/18013 Here is test server : https://gist.github.com/ism/b5ecb70cb9f947435ac863ef5c27c7f0 Here is python requests test code: https://gist.github.com/ism/1bf4a0003c797d264193db559c8f20ac Here is .net core 2.0 code (Windows & Debian) : https://gist.github.com/ism/b9cce55d399883c0a689cf9ec37de44d Here is WinHttpHandler test code: https://gist.github.com/ism/3580fe5c0c2fccbc0c3e6856814c6626 Example raw headers output given by server on first GET request: HTTP/1.1 200 OK Date: Sun, 29 Apr 2017 14:26:31 GMT Server: CherryPy/10.2.1 Content-Length: 11 Content-Type: text/html;charset=utf-8 Set-Cookie: p=not_overwritten; httponly dotnet --info .NET Command Line Tools (2.0.0-preview2-005905) Product Information: Version: 2.0.0-preview2-005905 Commit SHA-1 hash: 2cc5612fec Runtime Environment: OS Name: Windows OS Version: 6.1.7601 OS Platform: Windows RID: win7-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.0-preview2-005905 Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview2-002093-00 Build : 1a195046fd92bd73d993d804bea2f4506c2b56f1 +19167 area-System.Net How can I use binary serialization with CookieContainer I need to serialize CookieContainer to the binary file. I was looking for BinaryFormatter but couldn't find it. I use the newest version of .NET Core. I tried serializing it with protobuf-net and msgpack but it didn't work. Any solution for this? I saw the support for binary serialization was added in 2.0 but I need to use some alternative solution now in 1.1. +19168 area-System.Security What is the proper way of implementing explicit curves as ECCurve type? I want to implement Curve25519 as an ECCurve type so that it can be used in ECDsa. I've tried to define as shown below: public class Curves { // TODO: check the key gen rand. work in progress. check constants. public static ECCurve Curve25519 { get { return new ECCurve() { CurveType = ECCurve.ECCurveType.PrimeMontgomery, B = new byte[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, A = new byte[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,109,6}, G = new ECPoint() { X = new byte[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9}, Y = new byte[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }}, Prime = new byte[] { 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237 }, Order = new byte[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8}, Cofactor = new byte[] { 1 }, // fix later }; } } and later call ``` var ecc2 = ECDsa.Create(Curves.Curve25519); ``` This throws a null pointer exception, which does not make any sense to me. When we call the `Validate` method on the curve, everything seems to works. What is the reason behind this null pointer exception? +19171 area-Infrastructure Update guidance to include special types I noticed a handful of tests substituting int for a value type, which does not always do what you might want. In general test authors should consider if the codepath being tested has optimizations around built-in data types or get faster if types implement certain interfaces. cc: @mellinoe @DrewScoggins +19172 area-System.Threading Fix WaitHandle.WaitAll test on desktop xunit ends up using an STA thread for some (not all) test executions in the desktop runner. This breaks a WaitHandle.WaitAll test, as WaitAll can't be used from STA threads. This commit just makes sure that the WaitAll call is done from an MTA thread. Fixes https://github.com/dotnet/corefx/issues/19156 cc: @danmosemsft, @kouvel +19174 area-System.IO "Fix ""Too many open files"" in MMF perf test" "The test is attempting to time the performance of CreateNew separate from Dispose, but they should only ever be used 1:1 as part of the lifecycle of the MMF, so there isn't a need to measure the performance of these separately (if there's ever an issue, we can dive into understanding where exactly it's coming from). And it's the attempt to measure them separately that's resulting in these ""too many open file"" errors on macOS, due to needing to keep a bunch of MMFs open so that we don't measure the Dispose time as part of the benchmark. This commit just collapses them. Fixes https://github.com/dotnet/corefx/issues/18463 cc: @mellinoe, @danmosemsft " +19177 area-System.Reflection Ignore PDB age when opening Portable PDB A couple of changes: - Ignore the value of Age when checking for Portable PDB CodeView entry. The value is always 1 when the Portable PDB is built by Roslyn compiler, however when a Windows PDB that has been post-processed by a custom tool is converted to a Portable PDB the age might be > 1. Allow such converted PDB to be open. +19179 area-System.Reflection Difference in behavior of AssemblyName.FullName vs. desktop "```c# var version = new Version(255, 1, 2); AssemblyName assemblyName = new AssemblyName(""MyAssemblyName""); assemblyName.Version = version; Console.WriteLine(version.ToString()); Console.WriteLine(assemblyName.FullName); ``` on desktop gives ``` 255.1.2 MyAssemblyName, Version=255.1.2 ``` on core gives ``` 255.1.2 MyAssemblyName, Version=255.1.2.65535, Culture=neutral, PublicKeyToken=null ``` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170501.01/workItem/System.Reflection.Tests/analysis/xunit/System.Reflection.Tests.AssemblyNameTests~2FVersion(version:%20255.1,%20versionString:%20%5C%22255.1.65535.65535%5C%22) https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170501.01/workItem/System.Reflection.Tests/analysis/xunit/System.Reflection.Tests.AssemblyNameTests~2FVersion(version:%20255.1.2,%20versionString:%20%5C%22255.1.2.65535%5C%22) @AtsushiKan @stephentoub do you know why this might be?" +19180 area-System.Reflection UnderlyingSystemType replacement in .NET Standard1.4 I've some NETFX code that I'm trying to compile for .NET Standard 1.4 and one of the issues I'm facing is how to replace UnderlyingSystemType property on the Type object. I see that this has been exposed from TypeInfo class for .NET Standard 1.5 and 1.6 but I'm looking for an equivalent in .NET Standard 1.4 Any suggestions? +19181 area-System.Reflection Fix DispatchProxy AV when using generic type parameters on methods For return types, an assert is triggered in debug mode. For parameters, an `ExecutionEngineException` is triggered at run time on x64 Windows when a proxied method has a generic-typed parameter and a value type is passed. The lack of an `box` instruction causes an AV in JIT_Stelem_Ref when it tries to treat the value type as an `Object*` . I added some tests that trigger the problem too. +19182 area-Meta Skip verifying stack on full framework Fix https://github.com/dotnet/corefx/issues/18797 Test throws an exception, serializes and compares. For some reason, on desktop, the line number of the top of the stack changes when this is done. Core behavior is an improvement, skip verifying desktop. @safern +19183 area-System.Net HttpClient redirect bug "http://stackoverflow.com/questions/43573321/httpclient-302-redirect I have 2 urls: https://pcr.apple.com/id868222886 and https://jigsaw.w3.org/HTTP/300/302.html. Both have a location link and 302 response code. But apple's link has 0-len response body. ```c# using System; using System.IO; using System.Net.Http; namespace XaveScor.PodcastFeed { public class RemoteFeedSource: FeedSource { private string url; protected virtual HttpMessageHandler Handler => new HttpClientHandler() { AllowAutoRedirect = true }; public override Stream Stream => client.Value.GetStreamAsync(url).Result; private readonly Lazy client; public RemoteFeedSource(string url) { client = new Lazy(() => new HttpClient(Handler), false); this.url = url; } } } [TestMethod] public void Test1() //fail { var source = new RemoteFeedSource(""https://pcr.apple.com/id868222886""); Assert.AreNotEqual(source.Stream.GetString(), """"); } [TestMethod] public void Test2() //success { var source = new RemoteFeedSource(""https://jigsaw.w3.org/HTTP/300/302.html""); Assert.AreNotEqual(source.Stream.GetString(), """"); } ```" +19185 area-System.Net WinHttpException should map to WebException Status At the moment to handle transient exceptions cross platform, I'm having to do something special for .NET Standard Windows only (Map the NativeErrorCode to WebExceptionStatus). But for .NET 4.x and Mono I just get the WebExceptionStatus Status from the InnerException. Here is how Mono does it for iOS https://github.com/mono/mono/blob/master/mcs/class/System.Net.Http/HttpClientEx.cs +19186 area-Infrastructure Update CoreClr, CoreFx, Standard to preview1-25301-02, preview1-25302-01, preview1-25301-01, respectively (release/2.0.0) +19188 area-Serialization Improve Exception for KnownTypeAttribute.MethodName on UWP `KnownTypeAttribute.MethodName` is not supported by UWP toolchain. The toolchain would give warning on using the property and users would get exception at runtime. Accroding to the feedback, the exception is not clear for figuring out the failure. We can try to improve this exception. +19189 area-System.Security Retarget crypto-xml to netstandard Fixes #16594 +19191 area-Infrastructure Profile captured by PerfRunner is missing events needed by PerfView I am running performance tests using the following command: ```cmd msbuild /t:BuildAndTest /p:Performance=true /p:ConfigurationGroup=Release /p:TargetOS=Windows_NT ``` When opening the .etl file in PerfView, most stack frames show the module as ManagedModule. For example: ``` ManagedModule!System.Xml.XmlTextWriter.InternalWriteEndElement(bool) ``` When running the test using PerfView to capture the profile, all the module names are correct. +19192 area-Meta Remove __arglist overloads Follow up on https://github.com/dotnet/standard/commit/52651e78ac329c56fb59cebf5b24174f25acb070 +19193 area-System.Security Implement CryptoConfig.AddOID and AddAlgorithm This PR implements two methods on the CryptoConfig class that threw PNSE's previously. These are AddOID and AddAlgorithm respectively, which allow application specific mappings. Fixes #18892 +19194 area-System.Security CryptoStream - crash when bytesToDeliver=amountRead "Created based on Connect feedback: http://connect.microsoft.com/VisualStudio/feedback/details/2604876/bug-in-system-security-cryptography-cryptostream (internal bug [213692](https://devdiv.visualstudio.com/DevDiv/_workitems?id=213692&_a=edit)) **Description:** A case is not handled in the `Read` method where `bytesToDeliver` equals `amountRead` exactly - the `ProcessFinalBlock` label is never invoked and `_finalBlockTransformed` is not set to true. This means that a read operation that falls into this case will call `FlushFinalBlock` on `Dispose` - which throws an exception in the proprietary stream I'm using for reading. A `Flush` is never expected on stream used for reading only. The last thing that needs to be checked in the `if (bytesToDeliver >= numOutputBytes)` block is whether `bytesToDeliver` has gone to zero, in which case we should go to the `ProcessFinalBlock` label code. I've attached a solution to reproduce and included a copy of `CryptoStream` that with a one line fix. **Repro Steps:** Basically, attempt to read (decrypt) a stream that falls into the ""slow"" label and into the `if (bytesToDeliver >= numOutputBytes)` block with `bytesToDeliver == numOutputBytes`. Impact: For me, I get intermittent crashes when I read a stream of a particular length that just happens to fall into this case - `Flush` is called on a stream that accepts no write operations." +19195 area-System.Diagnostics HttpHandlerDiagnosticListener: Write response event once when request is redirected HttpHandlerDiagnosticListener was introduced in #18101. It allows to hook into the .NET Framework `HttpClient` implementation based on `HttpWebRequest` and get notifications with `DiagnosticSource` and inject correlation headers (similar to [corefx](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs) instrumentation). When HTTP request is redirected, the hook is invoked once per redirect. when request is being sent, the hook only sends one event for the first request and does not notify about each consecutive redirect. When response is received, hook sends event for each response. Consumers of these events uses them to log requests/responses and having the 'final' response code, actual duration and potentially details from the response is important. So every consumer for the hook needs to wait for the last response. This fix implements it: it does not send `Stop` event * if automatic redirects are allowed * and response status code is one of the redirected ones * and number of redirects is not reached maximum allowed Otherwise it notifies consumer about the 'final' response. /cc @vance @davidsh +19196 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs, ProjectNTfsTestILC, Sni to preview2-25302-01, preview2-25302-01, beta-25302-00, beta-25302-00, preview2-25302-01, respectively (master) +19197 area-System.Data Modifying the SNI identity package to pick up the new SNI package names. Addresses https://github.com/dotnet/corefx/issues/19154 SNI supports RIDs win-{arch} This led to package changes for preview1. The updated packages on myget are runtime.win-x86.runtime.native.System.Data.SqlClient.sni.4.4.0-preview1-25301-01.nupkg runtime.win-x64.runtime.native.System.Data.SqlClient.sni.4.4.0-preview1-25301-01.nupkg runtime.win-arm64.runtime.native.System.Data.SqlClient.sni.4.4.0-preview1-25301-01.nupkg +19198 area-System.Security SignedXml - refuses valid signed XML file "Created based on Connect report: http://connect.microsoft.com/VisualStudio/feedback/details/1765025/verify-xml-signature-getc14ndigest-problem-in-signedxml-class (internal bug [144292](https://devdiv.visualstudio.com/DevDiv/_workitems?id=144292&_a=edit)) **Description:** I've a problem with verifying XML signature file. The signature is done by third-party application and I am verifying the signature of that XML file in .NET framework 4.0 (check with latestes 4.6 and there is no difference). To identify the problem, I've taken a sample.xml ```xml A ``` When I sign the xml with the third-party app, I get signed.xml: ```xml A /l5xchvEjxgLdPNt9RiB3TTQTcc= cSUDo87XVNqbo+ljCZRAXvcuIXkak/10XyVWks9BNz5EdUmcVbiU84Y5qrJoAkMd yHPiIFkz8Dx5v5psK5oZjGtRleQ67nm1BryHA8F7EW4Otxe/8hEHsqVFK0zz3P79 XzKD2vl4lUaTTOLlCMD+SbpbekyLkDIjXS/6IylPWbNNF3sH9MclGGhSSjREwOuJ Ayj8xqqibQEDvIytLN23+bZJtOGAU54ERXPnh4rccBvzByno08DHVnkQrSQCgY4E CvVbocIFo7GGtq8v9oj6rK3KpWUQnL1V1Aqj5fXRNRC8VnxJyIkHAXOBWC3Wr+DQ zEm4W0Xa+vZ8o0x/2Ct2cg== MIIEejCCA+OgAwIBAgIIBg5jkS3DgTkwDQYJKoZIhvcNAQEFBQAwOjETMBEGA1UE CxMKSW5mcmF4STRDQTEWMBQGA1UEChMNSW5mcmF4IGQuby5vLjELMAkGA1UEBhMC U0kwHhcNMTEwNTAzMDkxMzU2WhcNMTYwNTAxMDkxMzU2WjBfMRcwFQYDVQQDEw5Q cnZpIFVwb3JhYm5pazEQMA4GA1UECxMHaTQgdXNlcjEUMBIGA1UEChMLVGVzdCBk Lm8uby4xDzANBgNVBAcTBlRvbG1pbjELMAkGA1UEBhMCU0kwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCkkkadn/Uapod4N0f7GVgDNNN/vRoNUzqbdsER vUA7f/MoARF0LoXAoxpAEk2DDf24oIkGjL60uqwx4di5LQr83zsdA/7Wh7RHb73j Cv0glfwK/YpfJcsxfLi/OajWNX5p63D9ISSDYtIgUb4k4JFElg+mbMsRFlPQNyR6 bADQTWputmTE+reWRiHLlnXLNSH3wGO008BfYuBnsuWupK8ar5UQ5I2IyafZJONO 4UQjsXsanYGqivWm147bihj7zfDjqEmVg0yYm9NS/jbhQSXRV9n8348engtu48ND g7Jsr363Ou1nvThzsxIyRBbqSCNSJPAiEYl/jF4WRO2zGmZzAgMBAAGjggHeMIIB 2jAMBgNVHRMBAf8EAjAAMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMCBggrBgEFBQcD BDAfBgNVHSMEGDAWgBSjdHM8IbieDPxF1rwNvMKR0T6WQDB3BgNVHR8EcDBuMGyg aqBohmZodHRwOi8vY2EuaW5mcmF4LnNpL2VqYmNhL3B1YmxpY3dlYi93ZWJkaXN0 L2NlcnRkaXN0P2NtZD1jcmwmaXNzdWVyPU9VPUluZnJheEk0Q0EsTz1JbmZyYXgg ZC5vLm8uLEM9U0kwDgYDVR0PAQH/BAQDAgSwMB0GA1UdDgQWBBSKMErpxIQp6TQ8 Jqr0ywYrYla4NzCB3gYIKwYBBQUHAQEEgdEwgc4wgYkGCCsGAQUFBzAChn1odHRw Oi8vY2EuaW5mcmF4LnNpL2VqYmNhL3B1YmxpY3dlYi93ZWJkaXN0L2NlcnRkaXN0 P2NtZD1pZWNhY2VydCZpc3N1ZXI9T1UlM2RJbmZyYXhJNENBJTJjTyUzZEluZnJh eCtkLm8uby4lMmNDJTNkU0kmbGV2ZWw9MDBABggrBgEFBQcwAYY0aHR0cDovL2Nh LmluZnJheC5zaTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9zdGF0dXMvb2NzcDANBgkq hkiG9w0BAQUFAAOBgQAms5UL/f0AIavlVo9C5W5Ijdt12g/59PIZeAEDWzoEKi+W rE7ORaq527UHgcVGw7Gr2HhOEHmggUe6k43edQ0fkNg5WXfJzf18hHA+foVqsxra DxBeot442A1zw9GjRnIDCl2r91tHgkneqg2EE8kf7lkRtMRck1MUbHBnLnppKg== ``` (**Note**: The original issue had no (non-required) whitespace in the XML, it was pretty-printed here to allow for better human understanding) This signed XML is valid, according to let's say this (https://www.signatur.rtr.at/en/elsi/Pruefung.html) tool, and I've verified it with a few other tools and all confirm that it's OK, except when I verify it with SignedXml class from .NET Framework. The code I'am using to verify the XML. Now the problem as I've managed to identify is in the SignedXml class in function [`GetC14NDigest`](https://github.com/dotnet/corefx/blob/378b1e398a40e78f3c40363f91a2359e14c9940c/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs#L791-L817) where `Utils.GetPropagatedAttributes(m_context)` is called. `m_context` is signed XML document, but the namespace `xmlns:xds=""http://uri.etsi.org/01903/v1.1.1#""` is only in Signature node, which was propagated into the `SignedInfo` node, but the `Utils.GetPropagatedAttributes(m_context)` did not return that one, and the SignedInfo node is missing that one, so the SignedInfo node is not the same as it was when the signature was constructed. I've tried to sign an xml like this: ```xml A ``` and this signed XML I was able to verify successfully with SignedXml class." +19199 area-System.Security Handle some Crypto desktop inconsistencies. - RSACng ImportParameters was throwing a CryptoException for null Exponent/Modulus. On NetFX RSACng throws an ArgumentException. The tests were modified to expect CryptoException when the RSA is not full framework and the RSA is not RSACng - Skip the `ValidateDecryptorProperties` test on netfx because it throws a CryptoException when there isn't a key set before doing the test validation. - `RSACryptoServiceProvider` doesn't support SHA20aep, so the `DefaultRSAProvider` test helper was modified to return false for `SupportsSha20aep` when the RSA created by the factory is an `RSACryptoServiceProvider`. - `InvalidHashCoreArgumentsFromStream` is skipped on netfx. Netfx doesn't do argument boundary checking for stream input in ComputeHash which was fixed in netcoreapp. resolves https://github.com/dotnet/corefx/issues/19042 resolves https://github.com/dotnet/corefx/issues/19023 resolves https://github.com/dotnet/corefx/issues/19092 cc: @bartonjs +19200 area-Infrastructure Add Desktop perf runs to our CoreFX infrastucture Currently, if you specify the target group netfx performance tests fail to run. We need to add this functionality. +19201 area-System.Security Allow PKCS1MaskGenerationMethod non-sha1 resolves https://github.com/dotnet/corefx/issues/18898 cc: @danmosemsft @bartonjs @safern +19202 area-System.Data Tests in System.Data.Common crash on uapaot The following tests crash on uapaot: - System.Data.Tests.SqlTypes.SqlXmlTest.Constructor2_Stream_Unicode - System.Data.Tests.SqlTypes.SqlXmlTest.Constructor2_Stream_Empty - System.Data.Tests.SqlTypes.SqlXmlTest.Constructor3 - System.Data.Tests.SqlTypes.SqlXmlTest.Constructor3_XmlReader_Empty - System.Data.Tests.SqlTypes.SqlXmlTest.CreateReader_Stream_Unicode - System.Data.Tests.SqlTypes.SqlXmlTest.SqlXml_fromXmlReader_CreateReaderTest - System.Data.Tests.SqlTypes.SqlXmlTest.SqlXml_fromZeroLengthStream_CreateReaderTest - System.Data.Tests.SqlTypes.SqlXmlTest.SqlXml_fromZeroLengthXmlReader_CreateReaderTest_withFragment +19204 area-System.Xml Make XElement serializable in netstandard The default XElement constroctor is public in corefx, but not in dotnet standard. This breaks our serialization generator for XElement type. The code will be generated based on the corefx and use the default constructor when create a new XElement instance. But it cannot compile in dotnet standard since the default public constructor doesn't exist. Need make them be consistent to unblock our scenario. Either make XElement default contructor be internal like in desktop version. Or add it in the dotnet standard. #16701 +19205 area-System.Data Port SqlClient fixes for NP Flush and for NP/TCP native error codes to 2.0.0 branch Porting changes to release branch +19207 area-Infrastructure [release/2.0.0] Add symbol archive build leg "Cherry-pick https://github.com/dotnet/corefx/pull/18350 and https://github.com/dotnet/corefx/pull/19127. Since this is a `release/*` branch, the new index/archive build leg will archive every build. Tested by queueing this new build leg independently to archive an existing build's symbol packages. It worked with no changes to the commits picked from `master`. I will need to add `PB_DotNetCoreShareDir` to the root pipebuild def. This is the file share to use as an intermediate location for symbols to rest until the symbol service gets around to fetching them. (I will add this variable to the `master` pipebuild def as well for future release branches.) This is the CoreFX part of https://github.com/dotnet/core-eng/issues/703 ""...release/2.0.0 builds don't use the deprecated ""MicroBuild Index Symbols"" step"". It will also remove the need to archive symbols manually for the 2.0.0 release, and make the week-long delay between submission and availability not a problem." +19208 area-System.Security Make ECDsa.Create(ECCurve(.IsExplicit)) work on Windows. ECDsa.Create(ECCurve) had a check which rightly belonged in GenerateKey behind an IsNamed check. Moved that check to where it belonged, and added an Explicit (PrimeShortWeierstrass) test to the big create matrix. Adding the test resulted in debugging several tests which were assuming IsNamed. The extra debugging data seemed generally applicable, so it remains. Fixes the `NullReferenceException` reported in #19168. +19209 area-System.Data Port updated RID to master Update the SNI RID in Master. Ported from release/2.0.0 +19211 area-Infrastructure UWP tests producing no result - crash in xunit? https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170501.02 shows Xunit Counts Pass: 0 Fail: 0 Skip: 0 execution produced no test result xml 2017-05-01 13:31:34,950: INFO: proc(54): run_and_log_output: Output: FAILED 0x8027025B (The app didn't start. 00 0000005c`adb9e830 00007ffd`6c404f55 KERNELBASE!RaiseException(unsigned long dwExceptionCode = , unsigned long dwExceptionFlags = , unsigned long nNumberOfArguments = , unsigned int64 * lpArguments = )+0x68 [d:\rs1\minkernel\kernelbase\xcpt.c @ 904] 01 0000005c`adb9e910 00007ffd`6c4b0750 CoreCLR!GetCLRRuntimeHost+0x3cd65 02 0000005c`adb9ea30 00007ffd`6c03e011 CoreCLR!GetCLRRuntimeHost+0xe8560 03 0000005c`adb9ebe0 00007ffd`6c6ecff3 System_Private_CoreLib!System.AppDomain.Setup()+0x494ce1 04 0000005c`adb9eca0 00007ffd`6c448130 CoreCLR!GetCLRRuntimeHost+0x324e03 05 0000005c`adb9ece0 00007ffd`6c428b86 CoreCLR!GetCLRRuntimeHost+0x7ff40 06 0000005c`adb9ee10 00007ffd`6c3c7731 CoreCLR!GetCLRRuntimeHost+0x60996 07 0000005c`adb9f070 00007ffd`6c3c804b CoreCLR!coreclr_execute_assembly+0x14711 08 0000005c`adb9f540 00007ffd`b96219ec CoreCLR!coreclr_execute_assembly+0x1502b 09 0000005c`adb9f5a0 00007ffd`b9621ad6 UWPHOST!UWPHost::LoadAndStartCoreCLRRuntime(void)+0x2f8 [f:\dd\ndp\clr\src\coreclr\uwp\host\uwphost.cpp @ 167] Appears to be an ArgumentNullException inside System.Private.CoreLib.dll @MattGal has a dumpfile @alexperovich ? +19212 area-System.Runtime Proposal for adding System.Runtime.CompilerServices.IsRefLikeAttribute "# Rationale and Usage For upcoming C# features captured in [Safe Spans proposal here](https://github.com/VSadov/csharplang/blob/3ab16a77b9fefe3805fa81044ba72d6c254e00f9/proposals/span-safety.md), the C# compiler needs a way to annotate structs in metadata as ref-like. The proposal is to add a new attribute to `System.Runtime.CompilerServices` namespace similar to`IsReadOnly`, named `IsRefLike`. The purpose of the attribute is to request that all the requirements of ref-like structs be applied to the type by the compiler. Such struct will be allowed to have instance fields that are ref-like types (and typically will have such fields). # Proposed API ```csharp // .NET Core: // System.Runtime (reference assembly) // System.Private.CoreLib (implementation) // .NET Framework 4.7++ // mscorlib // .NET Standard 2.0++ // netstandard namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Struct)] public sealed class IsByRefLikeAttribute: Attribute { public IsByRefLikeAttribute(); } } ``` To ensure that using this type is an error on old compilers and compilers not familiar with safety rules of ByRefLikeStructs compiler will also emit an `Obsolete` attribute with a predefined message that can be filtered out by compilers that do know how to operate with spans. ```csharp [Obsolete(""ByRefLike types are not supported in this version of your compiler."", true)] ``` So a typical ref like struct will look like the following in the source: ```csharp ref struct TwoSpans { // can have ref-like instance fields public Span first; public Span second; } // error: arrays of ref-like types are not allowed. TwoSpans[] arr = null; ``` and like the following in metadata ```csharp [IsRefLike] [Obsolete(""ByRefLike types are not supported in this version of your compiler."", true)] public struct TwoSpans { . . . . } ```" +19213 area-System.Reflection Make AddCodeViewEntry(..., int age) public "Add an overload of AddCodeViewEntry API for building CodeView Debug Directory entry with specified Age != 1. ```C# namespace System.Reflection.PortableExecutable { class DebugDirectoryBuilder { /// /// Adds a CodeView entry. /// /// Path to the PDB. Shall not be empty. /// Unique id of the PDB content. /// Version of Portable PDB format (e.g. 0x0100 for 1.0), or 0 if the PDB is not portable. /// Age (iteration) of the PDB. Shall be 1 for Portable PDBs. /// is null. /// contains NUL character. /// is less than 1. /// is smaller than 0x0100. public void AddCodeViewEntry( string pdbPath, BlobContentId pdbContentId, ushort portablePdbVersion, int age) } } ```" +19214 area-System.Runtime Change SkipOnTargetFramework for Issue 18052 "Change [SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp, ""The coreclr fixed a bug where Guid.TryParse throws a format or overflow exception (https://github.com/dotnet/corefx/issues/6316)"")] to [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework,""The coreclr fixed a bug where Guid.TryParse throws a format or overflow exception (https://github.com/dotnet/corefx/issues/6316)"")] for method Parse_Invalid_Netfx() in GuidTests.cs under System.Runtime.Tests. " +19215 area-System.Reflection lowercase another assembly name Akin to https://github.com/dotnet/corefx/pull/19178 .. the initial casing is persisted so we don't guarantee casing matches. Not sure why I didn't see this last time. +19217 area-System.Net Add HttpListenerPrefixCollection tests and align managed implementation with Windows Contributes to #18128 Contributes to #13618 Fixes #19438 Probably best reviewed commit-by-commit to make sense of the code movement. @Priya91 @stephentoub @davidsh +19218 area-System.Data "Test: System.Data.SqlClient.Tests.SqlConnectionBasicTests/IntegratedAuthConnectionTest failed with ""System.Data.SqlClient.SqlException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.SqlConnectionBasicTests/IntegratedAuthConnectionTest` has failed. System.Data.SqlClient.SqlException : Failed to generate SSPI context. Stack Trace: at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.SqlClient.Tests.SqlConnectionBasicTests.IntegratedAuthConnectionTest() Build : Master - 20170502.01 (Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170502.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.SqlConnectionBasicTests~2FIntegratedAuthConnectionTest +19219 area-System.Net Fix incorrect exception thrown in HttpResponseStream.Write for a closed connection Contributes to #18128 +19220 area-System.Globalization System.Globalization.Tests.GregorianCalendarGetWeekOfYears.GetWeekOfYear failed in CI failed test: System.Globalization.Tests.GregorianCalendarGetWeekOfYears.GetWeekOfYear detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/opensuse42.1_debug/2246/testReport/System.Globalization.Tests/GregorianCalendarGetWeekOfYears/GetWeekOfYear/ MESSAGE: ~~~ System.ArgumentOutOfRangeException : Year, Month, and Day parameters describe an un-representable DateTime. ~~~ STACK TRACE: ~~~ at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day) at System.DateTime..ctor(Int32 year, Int32 month, Int32 day) at System.Globalization.Tests.GregorianCalendarGetWeekOfYears.d__6.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ~~~ +19221 area-System.Runtime "Test: System.Tests.EnvironmentTests/GetSystemDirectory failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/GetSystemDirectory` has failed. Assert.Equal() Failure\r ? (pos 0)\r Expected: \r Actual: C:\\Windows\\system32\r ? (pos 0) Stack Trace: at System.Tests.EnvironmentTests.GetSystemDirectory() Build : Master - 20170502.01 (Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170502.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetSystemDirectory +19222 area-System.Threading "Test: System.Threading.Threads.Tests.ThreadTests/ApartmentStateTest_ChangeBeforeThreadStarted_Windows failed with "" Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Threading.Threads.Tests.ThreadTests/ApartmentStateTest_ChangeBeforeThreadStarted_Windows(getApartmentState: Func`2 { Method = System.Threading.ApartmentState d__58.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n at TestHttpRequestsFunction.Function.d__4.MoveNext()"", ""HelpLink"": null, ""Source"": ""System.Private.CoreLib"", ""HResult"": 52 } ``` I've tested the exact same request on windows in .net core and postman and it succeeds. I use the following code to reproduce the issue. ```csharp var httpClientHandler = new HttpClientHandler { AllowAutoRedirect = false}; _httpClient = new HttpClient(httpClientHandler, true); var requestBody = $""{{\r\n \""testData\"": \""{string.Empty.PadRight(999)}\""\r\n }}"", var content = new StringContent(requestBody, Encoding.UTF8, ""application/json""); var endpoint = """"; // I can provide a sample server privately var postResponse = await _httpClient.PostAsync(endpointUrl, content).ConfigureAwait(false); ``` my project.json, nothing special just dependency for AWS Lambda ```javascript { ""version"": ""1.0.0-*"", ""buildOptions"": { }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.1.0"" }, ""Amazon.Lambda.Core"": ""1.0.0*"", ""Amazon.Lambda.Serialization.Json"": ""1.1.0"" }, ""tools"": { ""Amazon.Lambda.Tools"": ""1.5.0"" }, ""frameworks"": { ""netcoreapp1.1"": { ""imports"": ""dnxcore50"" } } } ``` A little searching pointed to the way that cURL handles requests with a body greater than 1024 chars by adding the `Expect: 100 Continue` header. I tried `_httpClient.DefaultRequestHeaders.ExpectContinue = false;` but the issue persists. I'm not sure where to go from here as root cause seems to be a low level in the framework, I believe this is mostly likely just a configuration issue and any guidance would be appreciated. " +19232 area-System.Runtime Enable Environment.Exit tests. Since Environment.Exit bug has been fixed in both coreclr and core-setup, this PR enables the tests in corefx repo. Related issue: https://github.com/dotnet/coreclr/issues/6206#issuecomment-295339778 https://github.com/dotnet/core-setup/issues/2050 Fix #18776 +19233 area-System.Security Fix random crashes from RSA.ExportParameters on Linux The RSAOpenSsl ExportParameters passed a SafeHandle into a function to get interior pointers to the key parameters, which was the last usage of that SafeHandle. If the parent RSA object had become unrooted then the key is now untracked and subject to finalization, which will free the underlying RSA structure and invalidate the memory to which the interior pointers are pointing. There are two obvious fixes: 1) GC.KeepAlive in ExportRsaParameters right before returning parameters. This would keep the GC from allowing the key to get finalized until after we had finished extracting the data from the interior pointers. But GC.KeepAlive doesn't protect against multithreaded releasing. 2) DangerousAddRef the SafeHandle. AddRef the key before extracting the data and Release it when done so that the object is both GC rooted and safe from a parallel free. As it happens, ECDsaOpenSsl and DSAOpenSsl both already did AddRef/Release, only RSAOpenSsl was shooting from the hip. Due to a missing `using` block RSACertificateExtensions.CopyWithPrivateKey had the last use of cert.GetRSAPublicKey() be the call to ExportParameters(false), which left the RSA object untracked by this method. ExportParameters(false) then grabbed the key reference, and no longer needed `this`, making the object wholly untracked. The key object's last proven use was the call to RsaSize between extracting and using the interior pointers, and so under COMPlus_GCStress=3 this path always freed the underlying key between RsaSize(key) and ExtractBignum(n). Fixes #6302. +19235 area-Meta Review Open TODOs around the entire code base "Currently there are 2923 TODOs in the entire corefx code base. Below is the ordered grouping of TODOs by 1st level directories. As some of them can probably be ignored/removed, it's still worth giving them a look at some point of time. ## Areas with TODOs - [ ] System.Private.Xml: 412 - [ ] System.Linq.Expressions: 356 - [ ] System.Net.Http: 294 - [ ] System.Net.Sockets: 282 - [ ] System.Data.Common: 144 - [ ] System.Net.WebSockets.Client: 132 - [ ] System.Reflection.Metadata: 116 - [ ] Microsoft.CSharp: 112 - [ ] System.Runtime.Extensions: 112 - [ ] System.Private.Xml.Linq: 110 - [ ] Common: 102 - [ ] Microsoft.VisualBasic: 90 - [ ] System.Runtime: 72 - [ ] System.Diagnostics.Tracing: 64 - [ ] System.Net.Http.WinHttpHandler: 62 - [ ] System.Data.SqlClient: 54 - [ ] System.Reflection.TypeExtensions: 34 - [ ] System.Private.DataContractSerialization: 26 - [ ] System.Runtime.Serialization.Formatters: 20 - [ ] System.IO.FileSystem: 18 - [ ] System.Numerics.Vectors: 18 - [ ] System.Data.Odbc: 16 - [ ] System.DirectoryServices.AccountManagement: 16 - [ ] System.Net.Requests: 16 - [ ] System.Runtime.Numerics: 16 - [ ] System.Net.Security: 14 - [ ] System.IO.Compression: 12 - [ ] System.DirectoryServices.Protocols: 10 - [ ] System.IO.Ports: 10 - [ ] System.Net.NameResolution: 10 - [ ] System.Private.Uri: 10 - [ ] Native: 8 - [ ] System.Diagnostics.StackTrace: 8 - [ ] System.Security.Principal.Windows: 8 - [ ] System.Transactions.Local: 8 - [ ] System.Collections.Concurrent: 6 - [ ] System.ComponentModel.Annotations: 6 - [ ] System.Diagnostics.DiagnosticSource: 6 - [ ] System.IO.Packaging: 6 - [ ] System.IO.Pipes: 6 - [ ] System.Memory: 6 - [ ] System.Net.HttpListener: 6 - [ ] System.Runtime.InteropServices: 6 - [ ] System.Security.Cryptography.X509Certificates: 6 - [ ] System.Security.Cryptography.Xml: 5 - [ ] Microsoft.Win32.Registry: 4 - [ ] System.Configuration.ConfigurationManager: 4 - [ ] System.DirectoryServices: 4 - [ ] System.Dynamic.Runtime: 4 - [ ] System.Linq: 4 - [ ] System.Threading.Tasks: 3 - [ ] shims: 2 - [ ] System.Collections: 2 - [ ] System.ComponentModel.TypeConverter: 2 - [ ] System.Console: 2 - [ ] System.IO.IsolatedStorage: 2 - [ ] System.IO.MemoryMappedFiles: 2 - [ ] System.IO.UnmanagedMemoryStream: 2 - [ ] System.Json: 2 - [ ] System.Linq.Queryable: 2 - [ ] System.Net.Ping: 2 - [ ] System.Net.ServicePoint: 2 - [ ] System.Net.WebClient: 2 - [ ] System.Net.WebProxy: 2 - [ ] System.Reflection.Emit: 2 - [ ] System.Resources.Writer: 2 - [ ] System.Runtime.WindowsRuntime: 2 - [ ] System.Threading: 2 - [ ] System.Threading.Tasks.Dataflow: 2 - [ ] System.Runtime.Serialization.Json: 1 - [ ] System.Security.AccessControl: 1 - [ ] System.Text.Encoding: 1 - [ ] System.Text.Encodings.Web: 1 - [ ] System.Threading.Tasks.Extensions: 1 - [ ] System.Threading.Tasks.Parallel: 1 - [ ] System.Threading.Thread: 1 - [ ] System.Xml.ReaderWriter: 1 `~\corefx\src>findstr /si /C:""TODO"" *` All TODOs: [todo.txt](https://github.com/dotnet/corefx/files/970965/todo.txt) cc @karelz @stephentoub @danmosemsft " +19236 area-System.Net System.Net.NameResolution.Pal.Tests.GetHostByName_HostName failed with No such device or address This broke CI https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_debug_prtest/4495/consoleText ``` Discovering: System.Net.NameResolution.Pal.Tests Discovered: System.Net.NameResolution.Pal.Tests Starting: System.Net.NameResolution.Pal.Tests System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName [FAIL] System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace: at System.Net.NameResolutionPal.GetHostByName(String hostName) at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName() System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName [FAIL] Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName() Finished: System.Net.NameResol ``` +19237 area-System.Security Add missing usings in CopyWithPrivateKey All three overloads of CopyWithPrivateKey created a public key object and let it die off to the GC/Finalizer. This adds the usings that should have been there the whole time. +19238 area-System.Security Desktop failure in System.Security.Cryptography.Rsa.Tests/ImportExport/UnusualExponentImportExport/ This issue is repro on desktop, detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/38/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/UnusualExponentImportExport_2/ ``` MESSAGE: System.Security.Cryptography.CryptographicException : The requested operation is not supported.\r\n +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.NCryptNative.ExportKey(SafeNCryptKeyHandle key, String format) at System.Security.Cryptography.CngKey.Export(CngKeyBlobFormat format) at System.Security.Cryptography.RSACng.ExportParameters(Boolean includePrivateParameters) at System.Security.Cryptography.Rsa.Tests.ImportExport.UnusualExponentImportExport() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 117 ``` +19239 area-System.Security RSACng throws different exception than other RSAs on netfx [RSACng.ImportParameters on Netfx throws an ArgumentException when either the Exponent or Modulus are null](https://referencesource.microsoft.com/#System.Core/System/Security/Cryptography/RsaCng.cs,322). This is different from RSACSP.ImportParameters which throws a CryptographicException for the same imputs. [We decided to use a CryptographicException for RSACng in netcoreapp](https://github.com/dotnet/corefx/pull/19199#discussion_r114217732) and should consider changing the netfx behavior to match. cc: @bartonjs +19240 area-System.Security Fix S.Security.Cryptography.Cng test failure Fixes: #19041 cc: @bartonjs @ianhays @danmosemsft +19241 area-System.IO Fix Async DeflateStream tests for netfx On NetFX the async Write and Read methods call Stream's versions which wrap around the underlying stream's non-sync Read and Write methods. In netcoreapp this was fixed to have the underlying stream's async methods called instead. I modified the overlap tests to accomodate the netfx style. resolves https://github.com/dotnet/corefx/issues/18263 +19244 area-System.Xml Make XElement.ctor() internal Fixes https://github.com/dotnet/corefx/issues/19204 +19247 area-System.Collections Removed IDictionary.GetValueOrDefault extension methods @safern Please Review the Changes +19249 area-System.Linq Lambda expressions using dynamic types are optimized away by ILC toolchain analyzer. Example dynamic d = 3; Assert.Throws(() => d / 0); This will throw NullReferenceException in ILC tool chain since anonymous method will be optimized () => d/0 but changing dynamic to int will fix the issue int d = 3; Assert.Throws(() => d / 0); +19251 area-System.Net Fix WinHttpHandler POST behavior with zero-length data "WinHttpHandler was incorrectly sending two zero-length chunks (a violation of HTTP protocol) when POST'ing empty data using chunked encoding. The second zero-length chunk was ok since it means end of data. The first zero-length chunk was because it was the empty string being encoded. This was causing problems by sending extra data to WinHTTP and hence to the server. Any subsequent requests to the server might get mis-understood by the server and the server would then send back an error. That translated to getting a WinHTTP error (12152) ""The server returned an invalid or unrecognized response"". This is hard to repro except in the HttpListener tests because of the timing of when the extra zero-length chunk of request data gets sent to the server. There is already an HttpClient unit test for POSTing zero-length data using chunked encoding. But this was not triggering this error due to timing issues. Even the HttpListener test needed to be adjusted to force a consistent repro. Added asserts to validate the logic of making sure that we don't try to chunk encode zero length data. Fixes #18869." +19252 area-System.Security Clean up X509Certificates test conditions A hacky capability, `IsReliableInCI`, was created to overcome test failures during the final days of .NET Core 1.0 when a new configuration came online with a CI tmphome on a fuseblk (NTFS) volume instead of an EXT volume. The infrastructure bug has survived longer than anticipated and the capability is continually updated as new configurations encounter the problem. The capability is very loosely structured, and that is costing us test coverage. Our Helix machines are believed to not have the same limitation, so they could run the tests. A private Ubuntu 16.04 stock machine won't have the limitations, and could run the tests. Only in our CI system does it actually fail. This change introduces a new class, TestEnvironmentConfiguration, which has a partial method to determine the baseline chmod requirements of the persisted files store to assess that the tests won't make sense to run, and the `IsReliableInCI` condition has been renamed to `CanModifyStores`. In order to not have TestEnvironmentConfiguration be a one-trick-pony the change also introduces a `RunManualTests` value to allow for those tests which are not even OuterLoop-reliable to be opted into. Painting a method as a manual test is hoped to not be a very common occurrence, but it is occasionally valueable to indicate that a test is present, but not running. +19257 area-System.Data Re-enable managed SNI by default in SqlClient EntityFramework test failures in https://github.com/dotnet/corefx/issues/19057 have been resolved (aside from occasional command timeouts), so re-enabling SqlClient managed SNI by default in master +19258 area-Serialization Add Tests covering WCF Soap Scenario. I found a issue with reflection based Soap serialization when working on https://github.com/dotnet/wcf/issues/1549. The PR added a few tests which simulate what WCF does when using Soap encoded message. /cc: @zhenlan @mconnew @huanwu +19259 area-Infrastructure Dumpling.sh: line 24: /proc/self/coredump_filter: No such file or directory https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/2864/consoleFull#-13326339622d31e50d-1517-49fc-92b3-2ca637122019 ``` 17:22:02 ls: /cores: No such file or directory 17:22:02 Running tests... Start time: 17:22:02 17:22:02 Commands: 17:22:02 source Dumpling.sh 17:22:02 chmod +x /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/testhost/netcoreapp-OSX-Release-x64//dotnet 17:22:02 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/testhost/netcoreapp-OSX-Release-x64//dotnet xunit.console.netcore.exe System.Net.WebClient.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonosxtests 17:22:02 CollectDumps 0 System.Net.WebClient.Tests 17:22:02 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/AnyOS.AnyCPU.Release/System.Net.WebClient.Tests/netstandard /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.WebClient/tests 17:22:02 executing ulimit -c unlimited 17:22:02 Dumpling.sh: line 24: /proc/self/coredump_filter: No such file or directory ``` +19260 area-System.Security Failure of FindByValidThumbprint_RootCert Both my OSX legs are failing with this. It seems unlikely I caused it -- somehting changed in the machines? @bartonjs ? https://github.com/dotnet/corefx/pull/19256 https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/2864/consoleFull#-13326339622d31e50d-1517-49fc-92b3-2ca637122019 ``` System.Security.Cryptography.X509Certificates.Tests.FindTests.FindByValidThumbprint_RootCert [FAIL] 17:22:05 Root certificate 'CN=DO_NOT_TRUST_WcfBridgeRootCA 2017-02-25T02:35:36, O=DO_NOT_TRUST, OU=Created by https://github.com/dotnet/wcf' (2/25/17 1:35:30 AM - 6/4/17 3:35:30 AM) is findable with thumbprint 'B57CF334491860720E03A9251FCDF4F0F5543B7E' and validOnly=true 17:22:05 Expected: True 17:22:05 Actual: False 17:22:05 Stack Trace: 17:22:05 at System.Security.Cryptography.X509Certificates.Tests.FindTests.FindByValidThumbprint_RootCert() ``` +19263 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.XmlLicenseTransformTest.ValidLicense failed with ""System.ArgumentException""" Failed test: System.Security.Cryptography.Xml.Tests.XmlLicenseTransformTest.ValidLicense Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/XmlLicenseTransformTest/ValidLicense/ MESSAGE: ~~~ System.ArgumentException : The input type was invalid for this transform. Parameter name: type ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Xml.XmlLicenseTransform.GetOutput(Type type) at System.Security.Cryptography.Xml.Tests.XmlLicenseTransformTest.ValidLicense() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\XmlLicenseTransformTest.cs:line 145 ~~~ +19264 area-System.Security "Desktop: Tests under ""System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest"" failed with ""System.NullReferenceException""" Failed tests: System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.LoadStreamInput_CorrectXml System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.GetOutput_XmlWithEncryptedDataInRoot System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.GetOutput_XmlWithEncryptedData System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.GetOutput_XmlNoEncryptedData System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.GetOutput_XmlWithEncryptedDataAndExcept Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/XmlDecryptionTransformTest/GetOutput_XmlWithEncryptedDataInRoot/ MESSAGE: ~~~ System.NullReferenceException : Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Xml.Transform.get_PropagatedNamespaces() at System.Security.Cryptography.Xml.XmlDecryptionTransform.GetOutput() at System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.GetTransformedOutput(XmlDocument doc, String nodeToEncrypt) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\XmlDecryptionTransformTest.cs:line 241 at System.Security.Cryptography.Xml.Tests.XmlDecryptionTransformTest.GetOutput_XmlWithEncryptedDataInRoot() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\XmlDecryptionTransformTest.cs:line 201 ~~~ +19267 area-System.Security "Tests under ""System.Security.Cryptography.Xml.Tests.SignedXmlTest"" failed with ""Xunit.Sdk.TrueException""" Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/consoleText Failed test: System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA256 System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_MD5 System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA512 System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA384 ~~~ System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA256 [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\SignedXmlTest.cs(1261,0): at System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA256() System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_MD5 [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\SignedXmlTest.cs(1363,0): at System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_MD5() System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA512 [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\SignedXmlTest.cs(1293,0): at System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA512() System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA384 [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\SignedXmlTest.cs(1328,0): at System.Security.Cryptography.Xml.Tests.SignedXmlTest.VerifyHMAC_SHA384() ~~~ +19268 area-System.Security "Tests under ""System.Security.Cryptography.Xml.Tests.SignedXmlTest"" failed with ""Xunit.Sdk.EqualException""" Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/SignedXmlTest/AsymmetricRSASignature/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/SignedXmlTest/SignedXmlUsesSha256ByDefault/ Failed tests: System.Security.Cryptography.Xml.Tests.SignedXmlTest.AsymmetricRSASignature System.Security.Cryptography.Xml.Tests.SignedXmlTest.SignedXmlUsesSha256ByDefault ~~~ System.Security.Cryptography.Xml.Tests.SignedXmlTest.AsymmetricRSASignature [FAIL] Assert.Equal() Failure  (pos 21) Expected: ···ttp://www.w3.org/2001/04/xmldsig-more#rsa-sha256 Actual: ···ttp://www.w3.org/2000/09/xmldsig#rsa-sha1  (pos 21) Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\SignedXmlTest.cs(191,0): at System.Security.Cryptography.Xml.Tests.SignedXmlTest.AsymmetricRSASignature() System.Security.Cryptography.Xml.Tests.SignedXmlTest.SignedXmlUsesSha256ByDefault [FAIL] Assert.Equal() Failure  (pos 21) Expected: ···ttp://www.w3.org/2001/04/xmlenc#sha256 Actual: ···ttp://www.w3.org/2000/09/xmldsig#sha1  (pos 21) Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\SignedXmlTest.cs(1579,0): at System.Security.Cryptography.Xml.Tests.SignedXmlTest.SignedXmlUsesSha256ByDefault() ~~~ +19269 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.SigningAndVerifyingWithCustomSignatureMethod.SignedXmlHasVerifiableSignature failed with ""System.Security.Cryptography.CryptographicException""" Failed test: System.Security.Cryptography.Xml.Tests.SigningAndVerifyingWithCustomSignatureMethod.SignedXmlHasVerifiableSignature Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/SigningAndVerifyingWithCustomSignatureMethod/SignedXmlHasVerifiableSignature_signatureMethod____http___www_w3_org_2001_04_xmldsig_more_rsa_sha256____digestMethod____http___www_w3_org_2001_04_xmlenc_sha256___/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : SignatureDescription could not be created for the signature algorithm supplied. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Xml.SignedXml.ComputeSignature() at System.Security.Cryptography.Xml.Tests.SigningAndVerifyingWithCustomSignatureMethod.SignXml(XmlDocument doc, RSA key, String signatureMethod, String digestMethod) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\Samples\SigningVerifyingWithCustomSignatureMethod.cs:line 42 at System.Security.Cryptography.Xml.Tests.SigningAndVerifyingWithCustomSignatureMethod.SignedXmlHasVerifiableSignature(String signatureMethod, String digestMethod) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\Samples\SigningVerifyingWithCustomSignatureMethod.cs:line 71 ~~~ +19270 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.SigningVerifyingX509Cert.SignedXmlHasCertificateVerifiableSignature failed with ""System.NotSupportedException""" Failed test: System.Security.Cryptography.Xml.Tests.SigningVerifyingX509Cert.SignedXmlHasCertificateVerifiableSignature Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/SigningVerifyingX509Cert/SignedXmlHasCertificateVerifiableSignature/ MESSAGE: ~~~ System.NotSupportedException : Method is not supported. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.RSA.DecryptValue(Byte[] rgb) at System.Security.Cryptography.Xml.SignedXml.ComputeSignature() at System.Security.Cryptography.Xml.Tests.SigningVerifyingX509Cert.SignXml(XmlDocument doc, AsymmetricAlgorithm key) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\Samples\SigningVerifyingX509Cert.cs:line 38 at System.Security.Cryptography.Xml.Tests.SigningVerifyingX509Cert.SignedXmlHasCertificateVerifiableSignature() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\Samples\SigningVerifyingX509Cert.cs:line 73 ~~~ +19271 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.EncryptionMethodTests.KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException failed with ""Xunit.Sdk.EqualException""" Failed test: System.Security.Cryptography.Xml.Tests.EncryptionMethodTests.KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/EncryptionMethodTests/KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException_value___1_/ MESSAGE: ~~~ Assert.Equal() Failure ↓ (pos 0) Expected: value Actual: The key size should be a non negative int··· ↑ (pos 0) ~~~ STACK TRACE: ~~~ at System.AssertExtensions.Throws[T](String paramName, Func`1 testCode) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\AssertExtensions.cs:line 58 at System.Security.Cryptography.Xml.Tests.EncryptionMethodTests.KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException(Int32 value) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\EncryptionMethodTests.cs:line 48 ~~~ +19272 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.EncryptedXmlTest.DecryptData_CipherReference_InvalidUri failed with ""System.ArgumentNullException""" Failed test: System.Security.Cryptography.Xml.Tests.EncryptedXmlTest.DecryptData_CipherReference_InvalidUri Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/EncryptedXmlTest/DecryptData_CipherReference_InvalidUri/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(System.ArgumentNullException): Value cannot be null. Parameter name: evidence ~~~ STACK TRACE: ~~~ at System.Security.SecurityManager.GetStandardSandbox(Evidence evidence) at System.Security.Cryptography.Xml.EncryptedXml.DownloadCipherValue(CipherData cipherData, Stream& inputStream, Stream& decInputStream, WebResponse& response) at System.Security.Cryptography.Xml.EncryptedXml.GetCipherValue(CipherData cipherData) at System.Security.Cryptography.Xml.EncryptedXml.DecryptData(EncryptedData encryptedData, SymmetricAlgorithm symmetricAlgorithm) at System.Security.Cryptography.Xml.Tests.EncryptedXmlTest.<>c__DisplayClass48_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\EncryptedXmlTest.cs:line 636 ~~~ +19273 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.RSAKeyValueTest.LoadXml_InvalidXml failed with ""System.FormatException""" Failed test: System.Security.Cryptography.Xml.Tests.RSAKeyValueTest.LoadXml_InvalidXml Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/RSAKeyValueTest/LoadXml_InvalidXml_xml_____KeyValue__RSAKeyValue__Modulus_gZ1_O7iks9ncETqNxL______/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: typeof(System.FormatException): Invalid length for a Base-64 char array or string. ~~~ STACK TRACE: ~~~ at System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength) at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) at System.Convert.FromBase64String(String s) at System.Security.Cryptography.RSA.FromXmlString(String xmlString) at System.Security.Cryptography.Xml.Tests.RSAKeyValueTest.<>c__DisplayClass7_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\RSAKeyValueTest.cs:line 99 ~~~ +19274 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.AddIssuerSerial_Issuer_Null failed with ""System.NullReferenceException""" Failed test: System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.AddIssuerSerial_Issuer_Null Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/KeyInfoX509DataTest/AddIssuerSerial_Issuer_Null/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.ArgumentNullException) Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.X509Certificates.X509Utils.DecodeHexString(String s) at System.Security.Cryptography.BigInt.FromHexadecimal(String hexNum) at System.Security.Cryptography.Xml.KeyInfoX509Data.AddIssuerSerial(String issuerName, String serialNumber) at System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.<>c__DisplayClass13_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\KeyInfoX509DataTest.cs:line 157 ~~~ +19275 area-System.Security "Desktop: System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.AddIssuerSerial_Null_Serial failed with ""System.ArgumentException""" Failed test: System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.AddIssuerSerial_Null_Serial Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Xml.Tests/KeyInfoX509DataTest/AddIssuerSerial_Null_Serial/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.FormatException) Actual: typeof(System.ArgumentException): String cannot be empty or null. Parameter name: issuerName ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Xml.X509IssuerSerial..ctor(String issuerName, String serialNumber) at System.Security.Cryptography.Xml.KeyInfoX509Data.AddIssuerSerial(String issuerName, String serialNumber) at System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.<>c__DisplayClass12_0.b__0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Xml\tests\KeyInfoX509DataTest.cs:line 150 ~~~ +19276 area-System.Threading Inconsistent results with Parallel.For Running this code produces inconsistent results: ```csharp { static void Main(string[] args) { for (int i = 0; i < 100; i++) { Run(); } } const int _len = 1000 * 1000;//* 1000; static void Run() { System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch(); s.Start(); Parallel.For(0, _len, i => { }); s.Stop(); System.Console.WriteLine(s.ElapsedMilliseconds.ToString()); } } ``` +19278 area-System.Globalization System.Globalization.Calendars - fix Random instances shared across threads Remove sharing of RandomDataGenerators betwen threads. Also, the Taiwanese utilities would generate the same year/month/day every call, almost certainly not what was intended. +19280 area-System.Diagnostics "Desktop: System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestCanceledRequest failed with ""System.Net.WebException""" Failed test: System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestCanceledRequest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Diagnostics.Tests/HttpHandlerDiagnosticListenerTests/TestCanceledRequest/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Threading.Tasks.TaskCanceledException) Actual: typeof(System.Net.WebException): The request was aborted: The request was canceled. ~~~ STACK TRACE: ~~~ at System.Net.ConnectStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state) at System.IO.Stream.<>c.b__43_0(Stream stream, ReadWriteParameters args, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) at System.IO.Stream.BeginEndReadAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.IO.Stream.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.StreamToStreamCopy.<>c.b__1_0(Task completed, Object innerSource) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Http\src\System\Net\Http\StreamToStreamCopy.cs:line 61 at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpContent.d__51.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Http\src\System\Net\Http\HttpContent.cs:line 383 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +19281 area-System.Net "Desktop: System.Net.Sockets.Tests.SendReceiveApm.SendRecv_DisposeDuringPendingReceive_ThrowsSocketException failed with ""System.ObjectDisposedException""" Failed test: System.Net.Sockets.Tests.SendReceiveApm.SendRecv_DisposeDuringPendingReceive_ThrowsSocketException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Net.Sockets.Tests/SendReceiveApm/SendRecv_DisposeDuringPendingReceive_ThrowsSocketException/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Net.Sockets.SocketException) Actual: typeof(System.ObjectDisposedException): Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'. ~~~ STACK TRACE: ~~~ at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult, SocketError& errorCode) at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) at System.Net.Sockets.SocketTaskExtensions.<>c.b__6_1(IAsyncResult asyncResult) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.netfx.cs:line 80 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +19282 area-Serialization Add a new Dcs test. @shmao , @huanwu Please help to review this pull request. +19283 area-System.Security "Desktop: Tests under ""System.Security.Cryptography.Cng.Tests.RsaCngTests"" failed with ""System.Security.Cryptography.CryptographicException""" Failed tests: System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize_1032 System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize_384 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Cng.Tests/RsaCngTests/RSACng_Ctor_UnusualKeysize_1032/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/39/testReport/System.Security.Cryptography.Cng.Tests/RsaCngTests/RSACng_Ctor_UnusualKeysize_384/ MESSAGE: ~~~ System.Security.Cryptography.CryptographicException : Specified key is not a valid size for this algorithm. ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.AsymmetricAlgorithm.set_KeySize(Int32 value) at System.Security.Cryptography.RSACng.set_Key(CngKey value) at System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize(Int32 expectedKeySize, Byte[] keyBlob, RSAParameters expectedParameters) in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Cng\tests\RsaCngTests.cs:line 140 at System.Security.Cryptography.Cng.Tests.RsaCngTests.RSACng_Ctor_UnusualKeysize_1032() in D:\j\workspace\outerloop_net---903ddde6\src\System.Security.Cryptography.Cng\tests\RsaCngTests.cs:line 128 ~~~ +19284 area-System.Globalization "Test: System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"".\"", CurrencyGroupSeparator ...` has failed. Assert.Equal() Failure Expected: Int32[] [3, 2] Actual: Int32[] [3] Stack Trace: at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(NumberFormatInfo format, Int32[] expected) Build : Master - 20170503.01 (Portable Core Tests) Failing configurations: - Ubuntu.1704.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170503.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoNumberGroupSizes~2FNumberGroupSizes_Get(format:%20NumberFormatInfo%20%7B%20CurrencyDecimalDigits%20=%202,%20CurrencyDecimalSeparator%20=%20%5C%22.%5C%22,%20CurrencyGroupSeparator%20..." +19285 area-System.Net Fire Issue: System.Net.Socket.Tests failed to generate the test result Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170503.01/workItem/System.Net.Sockets.Tests/wilogs ~~~ 2017-05-03 01:44:25,237: INFO: proc(54): run_and_log_output: Output: xUnit.net console test runner (64-bit .NET Core) 2017-05-03 01:44:25,237: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-05-03 01:44:25,237: INFO: proc(54): run_and_log_output: Output: 2017-05-03 01:44:25,315: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Sockets.Tests 2017-05-03 01:44:25,628: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Sockets.Tests 2017-05-03 01:44:25,957: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Sockets.Tests 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: Unhandled Exception: System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Tests.SocketAsyncExtensions.<>c__DisplayClass2_0.b__0(IAsyncResult asyncResult) 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Net.LazyAsyncResult.Complete(IntPtr userToken) 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Net.ContextAwareResult.Complete(IntPtr userToken) 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2017-05-03 01:44:32,112: INFO: proc(54): run_and_log_output: Output: at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 2017-05-03 01:44:32,726: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time= 1:44:32.72, Exit code = -532462766 2017-05-03 01:44:32,726: INFO: proc(58): run_and_log_output: Exit Code: -532462766 2017-05-03 01:44:32,726: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-05-03 01:44:32,726: ERROR: helix_test_execution(83): report_error: Error running xunit None ~~~ +19286 area-System.Diagnostics "Test: System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests/TestCanceledRequest failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests/TestCanceledRequest` has failed. Assert.Equal() Failure\r Expected: 1\r Actual: 0 Stack Trace: at System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.d__6.MoveNext() in E:\A\_work\134\s\corefx\src\System.Diagnostics.DiagnosticSource\tests\HttpHandlerDiagnosticListenerTests.cs:line 162 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170503.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170503.01/workItem/System.Diagnostics.DiagnosticSource.Tests/analysis/xunit/System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests~2FTestCanceledRequest +19287 area-System.IO "Test: System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerIn_ClientOut/ValidFlush_DoesntThrow failed with ""Xunit.Sdk.EqualException'" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerIn_ClientOut/ValidFlush_DoesntThrow` has failed. Assert.Equal() Failure\r Expected: 123\r Actual: -1 Stack Trace: at System.IO.Pipes.Tests.PipeTest_Write.d__9.MoveNext() in E:\A\_work\298\s\corefx\src\System.IO.Pipes\tests\PipeTest.Write.cs:line 222 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170503.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x64-Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170503.01/workItem/System.IO.Pipes.Tests/analysis/xunit/System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerIn_ClientOut~2FValidFlush_DoesntThrow +19288 area-System.Security Disable the failed tests for Issue 19238. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #19238"")] Attribute to following methods: ImportExport1032 UnusualExponentImportExport ImportReset LargeKeyImportExport PaddedExport MultiExport in ImportExport.cs under System.Security.Cryptography.Rsa.Tests" +19289 area-Infrastructure Enable building on older Linux distros This change enables building of corefx native parts on older Linux distros that don't support IN_EXCL_UNLINK, where the getnameinfo's last parameter (flags) is unsigned int instead of int, EPOLLET constant is int and in_pktinfo and struct ip_mreqn presence detection during build using the check_type_size doesn't work. +19290 area-System.Net Disable failed tests for Issue 19225. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #19225"")] attribute for tests: HttpWebRequest_KeepAlive_CorrectConnectionHeaderSent HttpWebRequest_PreAuthenticateGetSet_Ok in HttpWebRequestHeaderTest.cs under System.Net.Tests" +19291 area-System.Diagnostics Disable Failed test for Issue 19091. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #19091"")] for Test_GenerateManifest_InvalidEventSources() in TestsManifestNegative.cs under BasicEventSourceTests" +19292 area-System.Net Disable failed test for issue 19083. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #19083"")] For Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException in HttpWebRequestTest.cs under System.Net.Tests" +19294 area-System.Net Fix DisposeDuringPendingReceive test The test was meant to be run with several different async implementations: APM, EAP, Task, and Task.Run(sync). But it was accidentally being run all four times with the same Task-based implementation. When fixing that, it highlighted that a) we throw ObjectDisposedException in this situation in the APM case (because the EndReceive call does a CleanedUp check before inspecting the IAsyncResult), and b) that we have a small difference of behavior on netfx due to the Task-based implementation for netfx wrapping the APM implementation rather than the EAP implementation, and thus surfacing the difference noted in (a). Fixes https://github.com/dotnet/corefx/issues/19281 +19295 area-System.Reflection Proposal : runtime attributes **Summary** Making easier to extend existing classes with attributes **Motivation** Sometimes we find us in situation when we want to attribute being dynamically added to a class that didn't have it before. It may be `Serializable`, `DataContract` or tons of `Validation`. Very viable example is that we want to display some model in UI and validate user inputs. In Microsoft stack you have to do it using `unobtrusive attributes` and MVC takes all care about it. But you cannot reference `Microsoft.Mvc.Razor` from model just because you want some validation for obvious reasons. And here you have to write some ViewModels that is just like a model, but has attributes. You have to write a ViewModel not because you want to add some indirection, but because language itself makes you to do it. **Design** I propose use the same mechanism that is using for inheritance and interfaces. Object can inherit one and only one parent (and overrides address in methodtable) and it has a list of interfaces and implementations of interface methods. I propose something similar: we can just add something like `DynamicAttributesList`, which can be freely populated and cleared by reflection methods. When you call `GetAttributes` it concat results of current implementation of `GetAttributes` and attributes from this list. We already have `System.ComponentModel.TypeDescriptor`, but we may want closer integration with methods such as mentioned `GetAttributes`, because otherwise it's a bit useless. I don't see this change breaks anything in any way, it's quietly easy to implement it and it simplify some cases a lot. +19298 area-Infrastructure Add repo name explicitly to symbol publish leg skip ci please `DotNet-CoreFX-Trusted` is the same as the default value specified in the build leg's checked-in json, but it seems that setting it manually might be necessary because the symbol leg broke while the package publish leg didn't. The goal of the workaround is to make DotNet-Trusted-Publish-Symbols work at least as well as DotNet-Trusted-Publish. /cc @chcosta +19301 area-System.Globalization Fix Globalization test on Ubuntu 17.04 Fixes #19284 +19305 area-Infrastructure Support building corefx on Ubuntu 17.04 and OSX 10.13 When building corefx on Ubuntu 17.04 getting some error like: ``` /home/tarek/oss/corefx/Tools/depproj.targets(83,5): error : Error no assets were resolved from NuGet packages. [/home/tarek/oss/corefx/external/ilasm/ilasm.depproj] ``` +19306 area-System.Net Check libcurl TLS backend version to avoid calling into OpenSSL 1.1 If we end up in a sheared state where we're linked against OpenSSL 1.0(.2) (the best we currently support) but libcurl is linked against OpenSSL 1.1 (the newest version) we'll try interpreting incompatible pointers; leading to strange behaviors, including segfaults. Since the distro changing libcurl to use openssl11 could occur even with OpenSSL 1.0 still being on the system the only sign of problems we have are things like segfaults; so we should fix this for the 2.0 release before it becomes prevalent. The data has to be there somewhere, since it's included in `curl --version`: ```sh $ curl --version curl 7.53.0 (i686-pc-linux-gnu) libcurl/7.53.0 OpenSSL/1.0.2k zlib/1.2.11 Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps telnet tftp Features: IPv6 Largefile NTLM SSL libz TLS-SRP UnixSockets HTTPS-proxy ``` +19307 area-System.Net Modified SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync can't handle large buffers "The test SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync was modified to send a large buffer which occasionally fails under Unix, but works under Windows. To repro the error, modify the test variables as follows: ```c# int iterations = 20; // was 200 * _iterations int bufferSize = 8192; // was 256 int socket_instances = 1; // was 200 ``` The smallest buffer that repros was 4096 but that does not repro as easily as 8192. A buffer size of 2048 did not repro even after thousands of runs. The result with these settings should be an Exception thrown from the test with a message `""Unexpected bytesSent""`. If this is debugged slightly, the number of bytes received by the client is lower than expected, and the value can vary with each run. The test uses a Socket with SocketType.Stream and client using TaskCompletionSource to return the number of bytes sent. Whether this is a test or product bug is not known yet; the Windows version works even for very large buffers." +19310 area-Serialization Exclude IXmlSerializable.cs from SGen project. @shmao +19311 area-Serialization Skip time span tests in desktop with lower version dotnet Fix #18661 @shmao @zhenlan @mconnew +19314 area-System.Net Test S.N.NetworkInformation.Tests.NetworkInterfaceBasicTest.NetworkInterface_LoopbackInterfaceIndex_MatchesReceivedPackets crashes on uapaot +19315 area-System.Net Fix S.Net.NetworkInformation tests on aot +19316 area-Infrastructure Remove UAP10.1 assets in packages For the .NET Core 2.0 release we should exclude any uap10.1 specific assets in the individual packages as that isn't the correct TFM and we are targeting 2.1 for finishing that work so we should exclude them for now. The only uap package we should produce is the private platform package, but that one won't actually ship on nuget org. cc @ericstj @joperezr @danmosemsft +19318 area-System.Globalization "decimal ToString(""C"") output difference across OS platforms" "I have an app that uses the decimal ToString(String, IFormatProvider) method to get currency formatted string for a specific culture ie $7.99 for en-US. I have noticed a slight difference for the culture ""da-dk"" on what is returned across Linux/OSX/Windows. Sample code: ``` Console.WriteLine(9.99m.ToString(""C"", new CultureInfo(""da-dk""))); ``` On Windows and OSX, the output is: **9,99 kr.** On Linux however, the output is missing the period: **9,99 kr** Though this is a very minor bug this is one I hope is easy to fix to have consistent behavior across OS platforms. dotnet --info across platforms: OSX: ``` .NET Command Line Tools (1.0.3) Product Information: Version: 1.0.3 Commit SHA-1 hash: 37224c9917 Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/1.0.3 ``` Windows: ``` .NET Command Line Tools (1.0.3) Product Information: Version: 1.0.3 Commit SHA-1 hash: 37224c9917 Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\1.0.3 ``` Linux (To test this on Linux I used the microsoft/dotnet:1.1.1 Docker image) " +19319 area-System.Diagnostics System.Diagnostics.StackTrace.StackTraceSymbols class missing from .NET Core 2.0 "The StackTraceSymbols class in the latest .NET Core 2.0 package (I’m currently using the Microsoft.NETCore.App version 2.0.0-preview2-002093-00 package in the debuggertests repo) isn’t there. This internal class is used by System.Private.CoreLib StackTrace code to load portable pdbs for the runtime diagnostic stack trace to get source/line info. If might be from this commit (hash 446e0057) by Jose on 1/20/17 to System.Diagnostics.StackTrace.csproj: ``` - + ``` If this class/code isn’t in this assembly, the runtime won’t display any stack trace source/line info for unhandled exceptions. The class is in the 4.4.0-beta-24913-02 package old package on myget (https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Diagnostics.StackTrace/4.4.0-beta-24913-02). " +19320 area-Infrastructure Disable symbol package MyGet publish on release/* "Adds `if ($env:SourceBranch.StartsWith(""release/"")) { exit }` to the symbol package publish step. This will automatically disable symbol package publishing to MyGet for `release/*` branches. This was previously done by making manual changes on the release branch, but this step doesn't need to be manual. This is the CoreFX part of https://github.com/dotnet/core-eng/issues/728." +19321 area-System.Security Make VerifyWithRevocation retry on failure VerifyWithRevocation can fail due to network issues. Since it doesn't fail very often the network issues don't seem to happen all that often. So loop the call to chain.Build when it fails, hoping that the call eventually succeeds. If the call fails then the console logs will contain information for what failed at each step. Fixes #14536. +19322 area-System.Runtime Add type forwarders for newly added IsByRefLikeAttribute in System.Runtime.CompilerServices Add type forwarders for newly added IsByRefLikeAttribute in System.Runtime.CompilerServices IsByRefLikeAttribute has been added to dotnet/coreclr and PR is pending for dotnet/corert. (see: https://github.com/dotnet/corert/pull/3502) cc @jcouv @jkotas +19323 area-System.Net Re-enabling tests and adding workaround for a known Windows bug. Potential fix for #16516. A Windows-OS bug may corrupt the X509Certificate KeyStore if multiple processes/threads import the same PFX. A global mutex should prevent this from happening in our tests. +19324 area-Infrastructure Disable by global apicompat build by default Fix https://github.com/dotnet/corefx/issues/17390 +19325 area-System.Data fixed isolation level leak on connection disposed Currently, isolation level setting is not cleared out when connection moves back to pool, and connection keeps isolation level value of previous session. This can cause problem because default isolation level `ReadCommitted` is expected for fresh connection object. This fix resets isolation level to default when pooled connection is closed. This fix is for https://github.com/dotnet/corefx/issues/18277 +19327 area-Infrastructure Remove some assemblies from some OS shared frameworks A number of assemblies are only needed for implementation closure on some OS's so for those lets only include them on the OS that needs them. Contributes to https://github.com/dotnet/corefx/issues/16912. PTAL @ericstj +19328 area-System.Net Implement close_notify alert on ShutdownAsync on Linux. implements close_notify in #12319, the other part of implementing alerts requires changing the structure of pal on Unix. For now, returning the same behavior as on OSX. cc @bartonjs @stephentoub @geoffkizer @davidsh @CIPop @karelz +19329 area-System.IO Fix some System.IO.Path tests Fixes: #18713 Fixes: #18716 Fixes: #18823 Fixes: #18825 Contributes: #18888 cc: @danmosemsft @JeremyKuhne @ianhays +19330 area-System.IO System.IO.Path.IsPathRooted does not check if valid drive letter on Desktop See: https://github.com/dotnet/coreclr/issues/10297 Opened this one as it seems that coreclr doesn't have netfx-port-consider label that is caught by the tool. FYI: @JeremyKuhne +19331 area-System.Runtime Turn off appdomain test for uwp +19332 area-System.Runtime Caching EqualityComparer.Default instances in ValueTuple Fixes https://github.com/dotnet/corefx/issues/18666 +19333 area-System.Diagnostics Fix test canceled request Fix for #19286 and #19280. 1. control at which point the cancellation happened 2. expect TaskCanceledException **or** WebException that could also be thrown with RequestCanceled status +19334 area-System.IO "Desktop: System.Runtime.Extensions.Tests test failed ""System.IO.Tests.PathTests.GetDirectoryName""" "`System.IO.Tests.PathTests.GetDirectoryName` failed with error: ``` System.IO.Tests.PathTests.GetDirectoryName(path: """", expected: null) [FAIL] System.ArgumentException : The path is not of a legal form. Stack Trace: at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) at System.IO.Path.InternalGetDirectoryName(String path) D:\repos\corefx\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs(45,0): at System.IO.Tests.PathTests.GetDirectoryName(String path, String expected) ``` There is a difference in behavior here as .Net Core returns null when `Path.GetDirectoryName(string.Empty)` and Desktop throws and `ArgumentException`. I've tried it in a ConsoleApp targeting 4.6.2 and it still throws, did this behavior changed in 4.7 or do we have to change .Net Core to throw? cc: @JeremyKuhne @ianhays " +19335 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest/Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds: null, wrapCredsInCache: False) Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds: null, wrapCredsInCache: False)` has failed. System.AggregateException : One or more errors occurred. (Object reference not set to an instance of an object.) (An error occurred while sending the request.) (One or more errors occurred. (An error occurred while sending the request.))\r ---- System.NullReferenceException : Object reference not set to an instance of an object.\r ---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r -------- System.Net.Http.WinHttpException : The operation has been canceled\r ---- System.AggregateException : One or more errors occurred. (An error occurred while sending the request.)\r -------- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ------------ System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(ICredentials creds, Boolean wrapCredsInCache) ----- Inner Stack Trace #1 (System.NullReferenceException) ----- at System.Net.Http.Functional.Tests.LoopbackGetRequestHttpProxy.<>c__DisplayClass2_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.LoopbackGetRequestHttpProxy.d__2.MoveNext() ----- Inner Stack Trace #2 (System.Net.Http.HttpRequestException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ----- Inner Stack Trace #3 (System.AggregateException) ----- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c.b__87_0(Task`1 t) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170504.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x64 - Release Link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170504.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FProxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds:%20null,%20wrapCredsInCache:%20False) +19337 area-System.IO Difference in behavior Path.GetDirectoryName(string.Empty) throws on Desktop, returns null on Core `Path.GetDirectoryName(string.Empty)` throws on Desktop `ArgumentException` and in .Net Core it returns `null` I think we should make them match. See msdn documentation: https://msdn.microsoft.com/es-es/library/system.io.path.getdirectoryname(v=vs.110).aspx cc: @JeremyKuhne @ianhays +19342 area-System.IO `Path.GetPathRoot(string.Empty)` difference in behavior `Path.GetPathRoot(string.Empty)` in Desktop throws `ArgumentException`, on .NET Core it returns `String.Empty` See msdn documentation: https://msdn.microsoft.com/en-us/library/system.io.path.getpathroot(v=vs.100).aspx cc: @JeremyKuhne @ianhays +19343 area-System.IO Fix remaining IO tests Fixes: #18715 Fixes: #19334 Fixes: #18888 Fixes: #18823 Fixes: #19382 cc: @danmosemsft +19344 area-System.Net Test failure: System.Net.Http.Functional.Tests.DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledLogging Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledLogging` has failed. Assert.Equal() Failure Expected: 42 Actual: 134 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() Build : Master - 20170504.01 (Portable Core Tests) Failing configurations: - Centos.73.Amd64-x64 - Release Link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170504.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.DiagnosticsTest~2FSendAsync_ExpectedDiagnosticCancelledLogging +19345 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls11, requestOnlyThisProtocol: False) Opened on behalf of @jiangzeng The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls11, requestOnlyThisProtocol: False)` has failed. System.ComponentModel.Win32Exception : The credentials supplied to the package were not recognized Stack Trace: at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.Test.Common.LoopbackServer.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170504.01 (Portable Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Release Link: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170504.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol:%20Tls11,%20requestOnlyThisProtocol:%20False) +19346 area-System.Reflection Surface System.Type.IsVariableBoundArray @karelz @stephentoub @AtsushiKan This PR resolves #16836 NB unlike IsSZArray, I've not declared IsVariableBoundArray as virtual. My reasoning is that since the TypeInfo stuff is going away, this shouldn't need to be overridden. +19347 area-System.Net Disable failed test for issue 19038. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #19038"")] For GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly() in CancellationTest.cs under System.Net.Http.Functional.Tests CC: @danmosemsft @safern " +19350 area-System.Xml Disable failed test for issue 18810. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18810"")] For TestResolveInvalidPaths() in XmlSystemPathResolverTests.cs under System.Xml.Tests cc: @danmosemsft @safern " +19351 area-System.Diagnostics Dsiable failed test for issue 18808. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18808"")] For Test_EventSource_NamedEventSource() in TestsManifestGeneration.cs under BasicEventSourceTests cc: @danmosemsft @safern " +19352 area-System.Diagnostics Disable failed tests for issue 18806. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18806"")] For: BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_Manifest_EventListener BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_SelfDescribing_EventListener BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_SelfDescribing_EventListener_UseEvents BasicEventSourceTests.TestsWriteEvent.Test_WriteEvent_Manifest_EventListener_UseEvents cc: @danmosemsft @safern " +19353 area-System.Security Disable failed test for issue 18719. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18719"")] For TestVerify521_EcdhKey() in ECDsaCngTests.cs under System.Security.Cryptography.Cng.Tests cc: @danmosemsft @safern " +19354 area-System.Runtime ExpandEnvironmentVariables fails in certain conditions on 32-bit "Repro: ```C# string s = ""C:\\J\\workspace\\debug_windows---bc3c3f12\\artifacts\\win81-x86\\stage2\\sdk\\2.0.0-preview1-005938\\Extensions""; for (int i = 0; i < 2; i++) { Environment.ExpandEnvironmentVariables(s); } ``` On 64-bit, succeeds. On 32-bit, throws: ``` System.ArgumentOutOfRangeException : capacity was less than the current size. Parameter name: value Stack Trace: at System.Text.StringBuilder.set_Capacity(Int32 value) C:\Users\stoub\Source\repos\corefx\src\System.Runtime.Extensions\tests\System\Environment.ExpandEnvironmentVariables.cs(95,0): at System.Tests.ExpandEnvironme ntVariables.ExpandEnvironmentVariablesCore(String name) ``` " +19355 area-System.Runtime Fix marshaling-related ArgumentException in ExpandEnvironmentVariablesCore "This bug requires a certain pattern of inputs and calls to manifest, e.g. - StringBuilderCache contains a StringBuilder with Capacity == N, where N > 100 - Call ExpandEnvironmentVariablesCore on 32-bit with a string (no quoted regions) of length M > 100 && M < N The ExpandEnvironmentVariablesCore implementation will acquire a StringBuilder of at least length 100, tracking the requested size of 100 in ""currentSize"" rather than the actual capacity it gets back. Then it will make an initial call to ExpandEnvironmentStringsW with the StringBuilder and the tracked currentSize. The length will be insufficient, so the Win32 call will fail and return the required size. But the runtime marshaling for the StringBuilder doesn't know it failed, so it dutifully marshals back the results of the call, and in doing so, ends up increasing the capacity of the StringBuilder and, importantly, increasing its Length, such that the Length is now larger than both the required size and currentSize. It will then try to increase the capacity of the builder to the required size, but the length and capacity are already longer than that, and the call to set the Capacity will throw due to it being perceived as losing data. The short-term fix is simple: just clear the builder before rather than after changing its capacity. A better longer-term fix is to stop using StringBuilder entirely; it adds overhead for little benefit. Fixes https://github.com/dotnet/corefx/issues/19354 cc: @JeremyKuhne " +19356 area-System.IO System.IO.Path.IsPathRooted tests added +19357 area-System.Net HttpClient, Apple Push api, HTTP/2, IIS 8.5 "In development (Visual Studio MVC/WebApi project with IIS Express), I have been successful calling Apples APNS api (api.push.apple.com), however, I fail when I move code to production (Windows 2012 R2, IIS 8.5). The production WebApi application works fine, it just crashes on httpclient SendAsync to api.push.apple.com using http/2 (generic ""Error while copying content to a stream""). I can run a successful curl in production calling api.push.apple.com with all my parameters (returns 200 success code), but my httpclient code fails . The code in development works great and I can send push notifications to mobile devices easily. The curl -v output on server shows successful negotiation of certificates (which I though may have been the problem as APNS requires Geo Trust Global CA root cert). Logging shows all necessary parameters are being created (jwt token for example). I'm stumped, would greatly appreciate assistance. ?IIS configuration, ?firewall issue..." +19358 area-Meta Add nice messages to all auto generated PNSE For 2.0 we need to build on https://github.com/dotnet/buildtools/issues/1449 to add nice messages to all PNSE generated code. Talk to area owners to get nice strings. +19359 area-System.Net Skip DualMode localhost tests when it's not "Several DualMode tests assume that ""localhost"" maps to both IPv4 and IPv6 addresses, either because the test is verifying that a DualMode socket (such as one used by Socket.ConnectAsync) is able to connect to both IPv4 and IPv6 endpoints, or because the test is verifying that a DualMode socket listening at a given address can accept both IPv4 and IPv6 connections. but ""localhost"" doesn't always map to both IPv4 and IPv6. Change the tests to be conditional to only run when that assumption holds. Fixes https://github.com/dotnet/corefx/issues/4002 cc: @steveharter, @davidsh, @geoffkizer " +19361 area-System.Xml Remove duplicate Xml tests Resolves https://github.com/dotnet/corefx/issues/18810. Removes duplicate of XmlResolver tests from XmlSchema tests. The two versions: https://github.com/dotnet/corefx/blob/7e0170e0ce47ef07c987cdbf8716259d9054cd1d/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/XmlSystemPathResolverTests.cs https://github.com/dotnet/corefx/blob/30e9fb02d048e88c71f772eed80ccff407f614d9/src/System.Private.Xml/tests/XmlReader/XmlResolver/XmlSystemPathResolverTests.cs cc: @krwq @danmosemsft +19362 area-System.Security Disable failing PKCS tests from =net462 is running, and the fix is non-quirked. These are the last tests failing in CI for the PKCS test assembly. Note that the `IsNetfx462OrNewer` function only checks the running framework version, not the highest framework version available on the system. This is somewhat problematic since the fix came in 462 and is non-quirked. The end result of this is that these tests will be ignored when the running TFM is =net462 is available even when they will actually pass. It's not perfect, but it at least absolutely disables the tests when they would fail (i.e. when 461 is the highest available framework version). cc: @bartonjs @krwq resolves https://github.com/dotnet/corefx/issues/19090 +19363 area-Infrastructure Source init-tools rather than execute Sourcing init-tools.sh rather than executing it, prevents it from spawning a new process. The ulimit that's set is only valid for the sub-process which means that it's parent won't be affected by it which results in build failures as mentioned in #19152. Sourcing it also means we no longer have to catch the exit code. +19364 area-System.Diagnostics Fix missing System.Diagnostics.StackTrace.StackTraceSymbols class Add ILLinkTrim.xml to keep illink from removing it. Issue #19319 +19365 area-System.Globalization System.Globalization.Tests now at 3 failures. Moved some unicode strings out of InlineData to work around TFS 430084 (.Net Native mangling Unicode strings in custom attributes.) More .ParamName checking disabled. This test still fails because we optimize away the InvalidCultureName property. Not sure if we want to define that as intended behavior so leaving it alone for the time being. +19366 area-System.IO Stream.Flush docs should be explicit about not throwing NotImplementedException even if CanWrite == false This is related to [issue #19194](https://github.com/dotnet/corefx/issues/19194) in which a read-only stream was throwing NotImplementedException on Flush. Per discussion on the thread of associated issue streams should not do that, however, documents are not explicit about it. +19367 area-System.IO Add Path.cs performance tests. Add performance tests for Path.cs This is based on #18765 @mellinoe @karelz I had two questions: 1. Why do the perf tests run with 9 calls to the method inside the loop? 2. How do you decide the number of inner iterations? AKA doing 20k vs 10k and 20k and 30k? I did not add tests for: AltDirectorySeparatorChar DirectorySeparatorChar InvalidPathChars PathSeparator VolumeSeparatorChar GetInvalidFileNameChars GetInvalidPathChars GetTempFileName GetRelativePath +19369 area-System.Reflection Surface Type.IsTypeDefinition and tests Close https://github.com/dotnet/corefx/issues/17345 This also enables the IsSZArray and IsVariableBoundsArray tests on .Net Native. - Don't let test call MakeArrayType() on a generic type definition (.Net Native doesn't allow that loophole.) - Don't let test call create rank-1 multidim arrays on .Net Native. Add a rank-2 test to compensate (and provide extra coverage on CoreCLR.) +19370 area-Serialization Add a test for KnownTypeAttribute.MethodName Property #18302 @shmao @zhenlan @mconnew +19371 area-System.Net Use ReferenceEquals instead of Delegate.op_Equality for sentinel checks The reference equality check is more efficient than `Delegate.op_Equality`. cc: @stephentoub, @davidsh, @CIPop, @Priya91 +19372 area-System.Net Add SEC_E_DOWNGRADE_DETECTED to error table See detailed analysis here: https://github.com/dotnet/corefx/issues/11708#issuecomment-299325869 After I made modification and build on my machine, I used VS to debug into InitializeSecurityContext() and change the return error code to SEC_E_DOWNGRADE_DETECTED. The behavior matches in .NET Framework (cc: @davidsh ) ![capture](https://cloud.githubusercontent.com/assets/8537784/25728873/ada21dec-30e6-11e7-8a93-aa386f0f516a.PNG) Fix #11708 +19374 area-System.Diagnostics If RemoteExecutorConsoleApp the exit code's meaning it unclear and the actual exception is hidden `exitCode` is not used at all if an exception is thrown. A system-specific return code is used instead. @stephentoub explains below: > 134 as the exit code is generally what you get from a .NET process exiting with an unhandled exception or with an abort() or a failed native assert(), as all of these trigger a SIGABRT, which is signal number 6... add the signal number to 128 (just a magic offset), and you get 134. So this Equal failure is saying it expected an exit code of 42 (which is SuccessExitCode, i.e. the app successfully ran what it was supposed to), but instead got 134 (the app crashed with an unhandled exception). Edited, was: `exitCode` is not initialized before use: https://github.com/dotnet/corefx/blob/c0bfbda2e1e8a1f4e39bd5e0b0642edff044f7b2/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.cs#L42 +19375 area-System.Security Issue with WindowsIdentity.RunImpersonated "I am having issue using RunImpersonated with dotnet core 1.1. I have a web API that is trying to run a stored proc on SQL server using a service account, and hence the need for impersonation. At the point where I create the db context I get an exception that its not able to load the Microsoft.EntityFrameworkCore.Relational due to access denied error. Note that the login succeeds with service account. Also if I try this whole thing with my own credentials it works fine, but only has the issue when I use another service account. I tried to add the service account to local machine administrators group just to test but still got the same error. Any ideas what could be the issue ? Code Snippet: ```c# bool LoggedIn = LogonUser(_svcAccount.UserName, _svcAccount.Domain, _svcAccount.Pwd, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out safeAccessTokenHandle); if (LoggedIn == false) { int ret = Marshal.GetLastWin32Error(); Console.WriteLine(""LogonUser failed with error code : {0}"", ret); throw new System.ComponentModel.Win32Exception(ret); } var timeCards = WindowsIdentity.RunImpersonated( safeAccessTokenHandle, () => { // At this point it fails with the following error. // FileLoadException: Could not load file or assembly // 'Microsoft.EntityFrameworkCore.Relational, Version=1.1.1.0, // Culture=neutral, PublicKeyToken=adb9793829ddae60'. Access is denied. using (var db = new TarDbContext(_config, _options)) { } ); ```" +19376 area-System.Security Fix most of S.S.Cryptography.Xml desktop failures - one product bug found (wrong exception being thrown) - one test still failing https://github.com/dotnet/corefx/issues/19272 Fixes 20+ test failures. Updated: https://github.com/dotnet/corefx/issues/18690 Fixes issues: https://github.com/dotnet/corefx/issues/19275 https://github.com/dotnet/corefx/issues/19274 https://github.com/dotnet/corefx/issues/19273 https://github.com/dotnet/corefx/issues/19271 https://github.com/dotnet/corefx/issues/19270 https://github.com/dotnet/corefx/issues/19268 https://github.com/dotnet/corefx/issues/19267 https://github.com/dotnet/corefx/issues/19264 https://github.com/dotnet/corefx/issues/19263 +19377 area-Infrastructure Add note to build -release before running perf tests. Add documentation note to build -release before running perf tests. @DrewScoggins This is a follow up ticket for an issue found in #19158. +19378 area-Serialization Enable Canonicalization on NetCore The PR ports the implementation for `StartCanonicalization` and `EndCanonicalization` from full framework to NetCore. I verified that the tests being added by https://github.com/dotnet/corefx/pull/18911 passed with this fix. Fix #18910. +19379 area-System.Net Multiple tests in S.Net.Security cause xunit to crash on AOT The following tests cause xunit to crash: - CertificateValidationClientServer_EndToEnd_Ok - CertificateValidationRemoteServer_EndToEnd_Ok - ClientAsyncAuthenticate_ServerRequireEncryption_ConnectWithEncryption - ClientAsyncAuthenticate_ServerNoEncryption_NoConnect - ClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption - ClientDefaultEncryption_ServerNoEncryption_NoConnect - EventSource_ExistsWithCorrectId - NegotiateStream_StreamToStream_Authentication_TargetName_Success - SslStreamConstructor_BadEncryptionPolicy_ThrowException - ServerNoEncryption_ClientRequireEncryption_NoConnect - ServerRequireEncryption_ClientRequireEncryption_ConnectWithEncryption - ServerRequireEncryption_ClientAllowNoEncryption_ConnectWithEncryption - ServerRequireEncryption_ClientNoEncryption_NoConnect - SslStream_StreamToStream_Authentication_IncorrectServerName_Fail - SslStream_StreamToStream_LargeWrites_Sync_Success - SslStream_StreamToStream_Successive_ClientWrite_Async_Success - SslStream_StreamToStream_WriteAsync_ReadByte_Success - TransportContext_ConnectToServerWithSsl_GetExpectedChannelBindings +19380 area-System.Net Disable S.Net.Security tests that crash xunit on AoT +19382 area-System.IO "Desktop: System.IO.Tests.PathTests.GetFullPath_Windows_URIFormatNotSupported failed with ""System.ArgumentException""" Failed test: System.IO.Tests.PathTests.GetFullPath_Windows_URIFormatNotSupported Detail: System.IO.Tests.PathTests.GetFullPath_Windows_URIFormatNotSupported MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.NotSupportedException) Actual: typeof(System.ArgumentException): URI formats are not supported. ~~~ STACK TRACE: ~~~ at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) at System.IO.Path.GetFullPathInternal(String path) at System.IO.Path.GetFullPath(String path) at System.IO.Tests.PathTests.<>c.b__49_0() in D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime.Extensions\tests\System\IO\PathTests.cs:line 492 ~~~ +19386 area-System.Net "Test: System.Net.Security.Tests.ClientDefaultEncryptionTest/ClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.ClientDefaultEncryptionTest/ClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption` has failed. System.IO.IOException : Authentication failed because the remote party has closed the transport stream. Stack Trace: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ClientDefaultEncryptionTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170505.01 (Core Tests) Failing configurations: - Windows.81.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170505.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ClientDefaultEncryptionTest~2FClientDefaultEncryption_ServerRequireEncryption_ConnectWithEncryption +19387 area-System.Net ConnectAsync_IPv6_Success timed out on macOS Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170505.01/workItem/System.Net.Sockets.Tests/wilogs System.Net.Sockets.Tests.ConnectAsync.ConnectAsync_IPv6_Success(type: Async) [FAIL] ~~~ 2017-05-04 18:29:47,519: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Sockets.Tests 2017-05-04 18:29:47,797: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Sockets.Tests 2017-05-04 18:29:48,039: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Sockets.Tests 2017-05-04 18:29:54,808: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.ConnectAsync.ConnectAsync_IPv6_Success(type: Async) [FAIL] 2017-05-04 18:29:54,809: INFO: proc(54): run_and_log_output: Output: IPv6: Timed out while waiting for connection 2017-05-04 18:29:54,809: INFO: proc(54): run_and_log_output: Output: Expected: True 2017-05-04 18:29:54,810: INFO: proc(54): run_and_log_output: Output: Actual: False 2017-05-04 18:29:54,813: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-04 18:29:54,911: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/2/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/ConnectAsync.cs(78,0): at System.Net.Sockets.Tests.ConnectAsync.ConnectAsync_IPv6_Success(SocketImplementationType type) ~~~ +19388 area-System.Net "Test: System.Net.Tests.TaskWebClientTest/UploadString_Success failed with ""System.Net.WebException'" Opened on behalf of @Jiayili1 The test `System.Net.Tests.TaskWebClientTest/UploadString_Success(echoServer: https://corefx-net.cloudapp.net/Echo.ashx)` has failed. System.Net.WebException : An error occurred while sending the request. Problem with the SSL CA cert (path? access rights?) ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) Stack Trace: at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in /root/corefx/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1238 at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result) in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 256 at System.Net.WebClient.d__112.MoveNext() in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 269 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebClient.d__150.MoveNext() in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 865 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.WebClientTestBase.d__24.MoveNext() in /root/corefx/src/System.Net.WebClient/tests/WebClientTest.cs:line 694 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__59.MoveNext() in /root/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 487 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.HttpWebRequest.d__189.MoveNext() in /root/corefx/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1184 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in /root/corefx/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1234 ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 661 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 857 Build : Master - 20170505.01 (Portable Core Tests) Failing configurations: - Centos.73.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170505.01/workItem/System.Net.WebClient.Tests/analysis/xunit/System.Net.Tests.TaskWebClientTest~2FUploadString_Success(echoServer:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx) +19389 area-System.Threading "Test: System.Threading.Tests.AutoResetEventTests/WaitHandleWaitAll failed with ""System.NotSupportedException""" Opened on behalf of @Jiayili1 The test `System.Threading.Tests.AutoResetEventTests/WaitHandleWaitAll` has failed. System.NotSupportedException : WaitAll for multiple handles on a STA thread is not supported. Stack Trace: at System.Threading.WaitHandle.WaitMultiple(WaitHandle[] waitHandles, Int32 millisecondsTimeout, Boolean exitContext, Boolean WaitAll) at System.Threading.WaitHandle.WaitAll(WaitHandle[] waitHandles, Int32 millisecondsTimeout, Boolean exitContext) at System.Threading.Tests.AutoResetEventTests.WaitHandleWaitAll() in E:\A\_work\120\s\corefx\src\System.Threading\tests\AutoResetEventTests.cs:line 62 Build : Master - 20170505.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170505.01/workItem/System.Threading.Tests/analysis/xunit/System.Threading.Tests.AutoResetEventTests~2FWaitHandleWaitAll +19390 area-System.Security Include Cryptography.Cng 462OrNewer tests only when targetgroup is net462, net47 or netcoreapp Fixes: https://github.com/dotnet/corefx/issues/19081 Fixes: https://github.com/dotnet/corefx/issues/18720 cc: @danmosemsft @ianhays +19396 area-System.Diagnostics Disable failed tests for issue 18805. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18805"")] for: BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener_UseEvents BasicEventSourceTests.TestsUserErrors.Test_BadEventSource_MismatchedIds cc: @danmosemsft @safern " +19397 area-System.IO Dsiable failed test for issue 18546. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18546"")] for ReadModeToByte_Accepted() cc: @danmosemsft @safern " +19398 area-Serialization Disable failed test for issue 18312. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18312"")] for: DCS_ReadOnlyDictionary() cc: @danmosemsft @safern " +19399 area-System.IO Disable failed test for issue 18308. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18308"")] for: CreatedDeleted_Success() cc: @danmosemsft @safern " +19400 area-System.IO Disable failed tests for issue 18269. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18269"")] for: GetEnumerator_NoOp() GetEnumerator_ThrowsForCurrent() cc: @danmosemsft @safern " +19401 area-System.IO Disable failed tests for issue 18268. "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18268"")] for: System.IO.IsolatedStorage.CreateDirectoryTests.CreateDirectory_Existance System.IO.IsolatedStorage.CreateFileTests.CreateFile_Existence System.IO.IsolatedStorage.DirectoryExistsTests.DirectoryExists_Existance System.IO.IsolatedStorage.FileExistsTests.FileExists_Existance System.IO.IsolatedStorage.GetFileNamesTests.GetFileNames_ThrowsArgumentNull System.IO.IsolatedStorage.GetStoreTests.GetUserStoreForApplication cc: @danmosemsft @safern " +19402 area-System.IO Disable failed tests for issue 18265.' "Add [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""dotnet/corefx #18265"")] for 27 methods. cc: @danmosemsft @safern " +19403 area-Meta Not support Chinese for enum context when I do `dotnet build` or `dotnet pack` ,an error occurred: ``` root@DevEnv:~/TL.SysData# dotnet build Microsoft (R) Build Engine version 15.1.1012.6693 Copyright (C) Microsoft Corporation. All rights reserved. DTO/Nature/RegionHelper.cs(159,67): error CS1001: Identifier expected [/root/TL.SysData/Source/TL.SysData.csproj] Res/RdsPrex.cs(23,1): warning CS1570: XML comment has badly formed XML -- 'Expected an end tag for element 'summary'.' [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(159,67): error CS1002: ; expected [/root/TL.SysData/Source/TL.SysData.csproj] Res/RdsPrex.cs(24,13): warning CS1570: XML comment has badly formed XML -- 'End tag was not expected at this location.' [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(159,67): error CS1056: Unexpected character 'ֱ' [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(159,69): error CS1002: ; expected [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(159,69): error CS1056: Unexpected character '�' [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(159,70): error CS1056: Unexpected character '�' [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(218,24): error CS1001: Identifier expected [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(218,24): error CS1056: Unexpected character 'ֱ' [/root/TL.SysData/Source/TL.SysData.csproj] DTO/Nature/RegionHelper.cs(218,25): error CS1003: Syntax error, ',' expected .... .... DTO/Nature/RegionHelper.cs(246,28): error CS1056: Unexpected character '�' [/root/TL.SysData/Source/TL.SysData.csproj] /usr/share/dotnet/sdk/1.0.3/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Sdk.targets(92,5): error : Cannot find project info for '/root/TL.SysData/Source/TL.SysData.csproj'. This can indicate a missing project reference. [/root/TL.SysData/Test/UnitTest/UnitTest.csproj] ``` **code: enum value:** ``` public enum Region { 直辖市 = 1 << RegionHelper.Provincelmove, 上海市 = 直辖市 | 1 << RegionHelper.Citylmove, 黄浦区 = 上海市 | 1 << RegionHelper.Districtlmove, ... ... } ... ... public static bool IsCCity(this Region region) { return region.IsCity() && region.Province() == Region.直辖市; } ``` But use VS2013/15/17 build it on windows: Success. And i saw [#7804](https://github.com/dotnet/corefx/issues/7804), so i set this proj charSet UTF-8,and no BOM.Then build ,same error info. ## Expected behavior Build Success. ## Actual behavior error..... ## Environment data `dotnet --version` 1.0.3 `cat /proc/version` Linux version 4.4.0-77-generic (buildd@lgw01-59) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #98-Ubuntu SMP Wed Apr 26 08:34:02 UTC 2017 **Code File**:[Region.cs](http://looku.qiniudn.com/2017_05_05_Git_Issue_Region.cs),[RegionHelper.cs](http://looku.qiniudn.com/2017_05_05_Git_Issue_RegionHelper.cs) +19404 area-Infrastructure Build Tool Search and Acquire Experience Currently, if a prerequisite for a build is missing, then the build fails. This experience can be improved if the missing prerequisite is acquired, and made available for the build to consume. Summary of changes: 1. Metadata of each required build tool will be in `.toolversions` file located in repository root 2. Native build invokes a probing mechanism to get a required tool. Build should specify the name of the required tool. Optionally build can also specify if the declared version, which the version that has been verified to work correctly with the product, of the tool is required. Probing mechanism invokes search and acquire scripts to get the tool on behalf of the build, and returns the tool path if successful or an error message. 3. Scripts that search and acquire a tool will be in `tools-local` folder in repository root. Short description of the design is provided below. Implementation of this design for probing CMake is ready. The design of these scripts is like having ISearchTool and IAcquireTool interfaces. ISearchTool provides a base implementation of searching for the specified tool in environment path, and the search paths specified in the tools metadata file. Base implementation is in `tools-local/unix/search-tool.sh`, and a corresponding PowerShell script for Windows. A tool can override this implementation if it wants to follow a customized search process. This override script will go into the tool specific folder. For example, if CMake overrides the base implementation then, the override script should be in `tools-local/unix/cmake/search-tool.sh`. ISearchTool has abstract methods that each tool must provide an implementation. For example, `get-version.sh` gets the version of CMake at the specified path. This script will be in tool specific folder at `tools-local/unix/cmake/get-version.sh`. IAcquireTool provides similar virtual and abstract functions for acquiring a tool. Entry point to these scripts is `probe-tool.sh` that gets invoked by `src/Native/build-native.sh`. In the current implementation, a tool is downloaded directly from the internet. If a developer would like to acquire the tool from a different location, then the developer can either modify `tools-local/unix/acquire-tool.sh` within the local repository or have the customized script in a folder rooted outside the repository. Path to the folder containing such customized scripts can be specified using `OverrideScriptsFolderPath` argument. A future addition would be to provide an option to override the default `.toolversions` file. @weshaggard @ellismg PTAL. +19408 area-System.Collections Add ImmutableInterlocked.Update for ImmutableArray The current [`ImmutableInterlocked.Update`](https://msdn.microsoft.com/en-us/library/system.collections.immutable.immutableinterlocked.update.aspx) overloads work for each of the immutable collection types except `ImmutableArray`. It would be valuable, e.g. in dotnet/roslyn#19267, to have an overload which covers this case. I propose the addition of the following specific methods to `ImmutableInterlocked`: ``` public static bool Update( ref ImmutableArray location, Func, ImmutableArray> transformer); public static bool Update( ref ImmutableArray location, Func, TArg, ImmutableArray> transformer, TArg transformerArgument); ``` +19410 area-System.Security System.Security.Cryptography.Xml.XmlLicenseTransform.GetOutput improperly checks type of document See here for reference: https://github.com/dotnet/corefx/commit/ce11eb43170125c54e8c368429d741e3d6ae6c22#diff-f156a7b1230342829b2a7663d45119ecR128 +19412 area-System.IO Add tests for UMS PositionPointer overflowing Adds some tests for https://github.com/dotnet/coreclr/pull/11376 which resolved https://github.com/dotnet/coreclr/issues/11199. Requires a new version of coreclr for the tests to pass. cc: @jkotas +19413 area-Infrastructure Disable CLI's first time experience from within our repo We don't want to run the CLI's first time experience in our builds. See discussion: https://github.com/dotnet/corefx/pull/19407#issuecomment-299530720 /cc @weshaggard @eerhardt @livarcocc +19414 area-System.Linq FirstOrDefault_AggregateException fails "Test failure (two instances) running on my secondary dev box (intermittent): ``` .Execute() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Merging\DefaultMergeHelper.cs:line 107 at System.Linq.Parallel.MergeExecutor`1.Execute() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Merging\MergeExecutor.cs:line 103 at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Merging\MergeExecutor.cs:line 92 at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\PartitionedStreamMerger.cs:line 61 at System.Linq.Parallel.FirstQueryOperator`1.WrapHelper[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, QuerySettings settings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs:line 91 at System.Linq.Parallel.FirstQueryOperator`1.WrapPartitionedStream[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, Boolean preferStriping, QuerySettings settings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs:line 68 at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\UnaryQueryOperator.cs:line 161 at System.Linq.Parallel.ConcatQueryOperator`1.WrapHelper2[TLeftKey,TRightKey](PartitionedStream`2 leftStreamInc, PartitionedStream`2 rightStreamInc, IPartitionedStreamRecipient`1 outputRecipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 130 at System.Linq.Parallel.ConcatQueryOperator`1.WrapHelper[TLeftKey,TRightKey](PartitionedStream`2 leftStreamInc, PartitionedStream`2 rightStream, IPartitionedStreamRecipient`1 outputRecipient, QuerySettings settings, Boolean preferStriping) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 110 at System.Linq.Parallel.ConcatQueryOperator`1.WrapPartitionedStream[TLeftKey,TRightKey](PartitionedStream`2 leftStream, PartitionedStream`2 rightStream, IPartitionedStreamRecipient`1 outputRecipient, Boolean preferStriping, QuerySettings settings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 91 at System.Linq.Parallel.BinaryQueryOperator`3.BinaryQueryOperatorResults.RightChildResultsRecipient`1.Receive[TRightKey](PartitionedStream`2 rightPartitionedStream) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs:line 189 at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\ScanQueryOperator.cs:line 137 at System.Linq.Parallel.BinaryQueryOperator`3.BinaryQueryOperatorResults.LeftChildResultsRecipient.Receive[TLeftKey](PartitionedStream`2 source) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs:line 155 at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\ScanQueryOperator.cs:line 137 at System.Linq.Parallel.BinaryQueryOperator`3.BinaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs:line 125 at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\UnaryQueryOperator.cs:line 130 at System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\QueryOperator.cs:line 164 at System.Linq.Parallel.QueryOpeningEnumerator`1.OpenQuery() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\QueryOpeningEnumerator.cs:line 164 at System.Linq.Parallel.QueryOpeningEnumerator`1.MoveNext() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\QueryOpeningEnumerator.cs:line 108 at System.Linq.ParallelEnumerable.GetOneWithPossibleDefault[TSource](QueryOperator`1 queryOp, Boolean throwIfTwo, Boolean defaultIfEmpty) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\ParallelEnumerable.cs:line 5349 at System.Linq.ParallelEnumerable.FirstOrDefault[TSource](ParallelQuery`1 source) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\ParallelEnumerable.cs:line 5508 at System.Linq.Parallel.Tests.ParallelQueryCombinationTests.FirstOrDefault_AggregateException(Labeled`1 source, Labeled`1 operation) in R:\corefx\src\System.Linq.Parallel\tests\Combinatorial\FailingParallelQueryCombinationTests.cs:line 122 ----- Inner Stack Trace ----- at System.Linq.Parallel.Tests.Enumerables`1.<>c__DisplayClass2_0.b__0(Int32 i) in R:\corefx\src\System.Linq.Parallel\tests\Helpers\Enumerables.cs:line 41 at System.Linq.Enumerable.SelectIPartitionIterator`2.MoveNext() in R:\corefx\src\System.Linq\src\System\Linq\Select.cs:line 670 at System.Linq.Parallel.PartitionedDataSource`1.ContiguousChunkLazyEnumerator.MoveNext(T& currentElement, Int32& currentKey) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Partitioning\PartitionedDataSource.cs:line 682 at System.Linq.Parallel.ConcatQueryOperator`1.ConcatQueryOperatorEnumerator`2.MoveNext(TSource& currentElement, ConcatKey`2& currentKey) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 207 at System.Linq.Parallel.FirstQueryOperator`1.FirstQueryOperatorEnumerator`1.MoveNext(TSource& currentElement, Int32& currentKey) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs:line 177 at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\SpoolingTask.cs:line 227 at System.Linq.Parallel.SpoolingTaskBase.Work() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\SpoolingTaskBase.cs:line 68 at System.Linq.Parallel.QueryTask.BaseWork(Object unused) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\QueryTask.cs:line 100 at System.Linq.Parallel.QueryTask.RunTaskSynchronously(Object o) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\QueryTask.cs:line 47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)]]> .Execute() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Merging\DefaultMergeHelper.cs:line 107 at System.Linq.Parallel.MergeExecutor`1.Execute() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Merging\MergeExecutor.cs:line 103 at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Merging\MergeExecutor.cs:line 92 at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\PartitionedStreamMerger.cs:line 61 at System.Linq.Parallel.FirstQueryOperator`1.WrapHelper[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, QuerySettings settings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs:line 91 at System.Linq.Parallel.FirstQueryOperator`1.WrapPartitionedStream[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, Boolean preferStriping, QuerySettings settings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs:line 68 at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\UnaryQueryOperator.cs:line 161 at System.Linq.Parallel.ConcatQueryOperator`1.WrapHelper2[TLeftKey,TRightKey](PartitionedStream`2 leftStreamInc, PartitionedStream`2 rightStreamInc, IPartitionedStreamRecipient`1 outputRecipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 130 at System.Linq.Parallel.ConcatQueryOperator`1.WrapHelper[TLeftKey,TRightKey](PartitionedStream`2 leftStreamInc, PartitionedStream`2 rightStream, IPartitionedStreamRecipient`1 outputRecipient, QuerySettings settings, Boolean preferStriping) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 110 at System.Linq.Parallel.ConcatQueryOperator`1.WrapPartitionedStream[TLeftKey,TRightKey](PartitionedStream`2 leftStream, PartitionedStream`2 rightStream, IPartitionedStreamRecipient`1 outputRecipient, Boolean preferStriping, QuerySettings settings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 91 at System.Linq.Parallel.BinaryQueryOperator`3.BinaryQueryOperatorResults.RightChildResultsRecipient`1.Receive[TRightKey](PartitionedStream`2 rightPartitionedStream) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs:line 189 at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\ScanQueryOperator.cs:line 137 at System.Linq.Parallel.BinaryQueryOperator`3.BinaryQueryOperatorResults.LeftChildResultsRecipient.Receive[TLeftKey](PartitionedStream`2 source) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs:line 155 at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\ScanQueryOperator.cs:line 137 at System.Linq.Parallel.BinaryQueryOperator`3.BinaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs:line 125 at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\UnaryQueryOperator.cs:line 130 at System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\QueryOperator.cs:line 164 at System.Linq.Parallel.QueryOpeningEnumerator`1.OpenQuery() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\QueryOpeningEnumerator.cs:line 164 at System.Linq.Parallel.QueryOpeningEnumerator`1.MoveNext() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\QueryOpeningEnumerator.cs:line 108 at System.Linq.ParallelEnumerable.GetOneWithPossibleDefault[TSource](QueryOperator`1 queryOp, Boolean throwIfTwo, Boolean defaultIfEmpty) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\ParallelEnumerable.cs:line 5349 at System.Linq.ParallelEnumerable.First[TSource](ParallelQuery`1 source) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\ParallelEnumerable.cs:line 5425 at System.Linq.Parallel.Tests.ParallelQueryCombinationTests.First_AggregateException(Labeled`1 source, Labeled`1 operation) in R:\corefx\src\System.Linq.Parallel\tests\Combinatorial\FailingParallelQueryCombinationTests.cs:line 102 ----- Inner Stack Trace ----- at System.Linq.Parallel.Tests.Enumerables`1.<>c__DisplayClass2_0.b__0(Int32 i) in R:\corefx\src\System.Linq.Parallel\tests\Helpers\Enumerables.cs:line 41 at System.Linq.Enumerable.SelectIPartitionIterator`2.MoveNext() in R:\corefx\src\System.Linq\src\System\Linq\Select.cs:line 670 at System.Linq.Parallel.PartitionedDataSource`1.ContiguousChunkLazyEnumerator.MoveNext(T& currentElement, Int32& currentKey) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Partitioning\PartitionedDataSource.cs:line 682 at System.Linq.Parallel.ConcatQueryOperator`1.ConcatQueryOperatorEnumerator`2.MoveNext(TSource& currentElement, ConcatKey`2& currentKey) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Binary\ConcatQueryOperator.cs:line 207 at System.Linq.Parallel.FirstQueryOperator`1.FirstQueryOperatorEnumerator`1.MoveNext(TSource& currentElement, Int32& currentKey) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs:line 177 at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\SpoolingTask.cs:line 227 at System.Linq.Parallel.SpoolingTaskBase.Work() in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\SpoolingTaskBase.cs:line 68 at System.Linq.Parallel.QueryTask.BaseWork(Object unused) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\QueryTask.cs:line 100 at System.Linq.Parallel.QueryTask.RunTaskSynchronously(Object o) in R:\corefx\src\System.Linq.Parallel\src\System\Linq\Parallel\Scheduling\QueryTask.cs:line 47 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)]]> ```" +19415 area-System.Net Add exception diagnostics to WinHttp To help diagnose pernicious exceptions, this debug-build-only change augments exceptions created using CreateExceptionUsingError to include the calling thread's stack trace, so that when these exceptions are then moved to other threads and propagated there, we can better correlate where they came from. Related to https://github.com/dotnet/corefx/issues/7812 cc: @davidsh, @steveharter +19416 area-System.Runtime Add support for getting current stack into Exception When writing managed wrappers for native components, it's common to create an Exception in one location (e.g. in a callback from native that includes an error code) and to then pass that off to a completely different location (e.g. storing the Exception into a TaskCompletionSource, with its Task awaited somewhere else). In doing so, the created Exception object doesn't contain any stack trace information about the original location where it was created, sometimes making it difficult to track down where it came from. It would be very helpful if there were a way of storing the equivalent of Environment.StackTrace into an Exception object. It's possible to do: ```C# try { throw e; } catch { } ``` but that doesn't really help, as the stack trace will only include the calling frame, not the entire stack, since the stack will stop after the catching frame. It would be helpful to have an API like: ```C# public class Exception { ... public void AppendCurrentStackTrace(); ... } ``` or something like that. Alternatively it could live on ExceptionDispatchInfo, e.g. ```C# public static class ExceptionDispatchInfo { ... public static void AppendCurrentStackTrace(Exception source); ... } ``` Workarounds today involve using reflection to access privates of Exception, e.g. _remoteStackTraceString. cc: @gkhanna79, @jkotas +19418 area-Serialization Area-Serialization Sprint 118 The issue is for tracking issues to be done in sprint 118 (due by 5/26/2017) +19419 area-System.Net Ignore lack of CURLMOPT_MAX_HOST_CONNECTIONS in CurlHandler Versions before 7.30 don't have this option. Previously we would throw a PlatformNotSupportedException. As devs would generally use an option of this type to increase the limit (since historically such a limit was 2 or 10 in the .NET Framework) rather than decrease it, and since it's already effectively infinite by default in .NET Core, with this commit, now we just ignore it. This helps to avoid PNSEs on the few platforms that still ship with too old a version of libcurl. Fixes https://github.com/dotnet/corefx/issues/14614 cc: @geoffkizer, @Priya91, @davidsh +19420 area-System.Security System.Security.Cryptography.Xml conflicts System.Security when building for .NET Framework "The latest System.Security.Cryptography.Xml package causes compiler errors for .NET Framework projects. > error CS0433: The type 'EncryptedXml' exists in both 'System.Security.Cryptography.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ### Repro Create a .NET Framework 4.6.1 project that references a .NET Standard 2.0 project. Example: TestApp --> TestLib #### TestApp ```xml Exe net461 ``` ```c# using System; using System.Security.Cryptography.Xml; namespace TestApp { class Program { static void Main(string[] args) { Console.WriteLine(typeof(EncryptedXml).AssemblyQualifiedName); } } } ``` #### TestLib ```xml netstandard2.0 true ``` #### Details Using dotnet-CLI 2.0.0-preview2-005905 [msbuild.log.txt](https://github.com/dotnet/corefx/files/980530/msbuild.log.txt) cc @krwq " +19421 area-System.Diagnostics Fix spurious EventSource test failures due to framework sources Some of the EventSource tests check to verify that EventSources have been properly shutdown and can no longer be found in EventSource.GetSources. But the framework itself has several event sources used by core types, and if the tests end up using these types, those sources can end up triggering a failure. As such, the test exempts known framework sources, but it missed SynchronizationEventSource (used by types like SpinWait). This just adds it to the list of sources to exempt. Fixes https://github.com/dotnet/corefx/issues/18805 cc: @vancem, @brianrob +19422 area-System.Security Fix compile assembly on netfx for crypto-xml Fixes: https://github.com/dotnet/corefx/issues/19420 +19423 area-Infrastructure System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 fails consistently on all my dev machines "Running `msbuild /t:rebuild,test /p:Outerloop=true ""/p:XunitOptions=-showprogress""` in `\src\System.Net.Primitives\tests\FunctionalTests` ``` System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 [FAIL] Assert.Null() Failure Expected: (null) Actual: Stack Trace: S:\corefx\src\System.Net.Primitives\tests\FunctionalTests\CookieTest.cs(249,0): at System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46() System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 [FINISHED] Time: 0.0016697s ``` " +19424 area-Serialization Manually run System.Xml.XmlSerializer.Tests with pregenerated serializer This include: 1. Generate the serialization code for System.Xml.XmlSerializer.Tests.dll. Verify if it works for all types. 2. Generate the serializer assembly 3. Run the tests targeting at pregenerated assembly in step2. +19425 area-Serialization Investigate the way to automate the SGEN tests +19426 area-Serialization Go through SGEN user experience +19427 area-Infrastructure Specifying /p:XunitOptions overrides -notrait category=nonnetcoreapptests "Running in `\src\System.Net.Mail\tests\Functional`, `msbuild /t:rebuild,test /p:Outerloop=true ""/p:XunitOptions=-showprogress""` fails on my local dev box: ``` System.Net.Mail.Tests.SmtpClientTest.ServicePoint_NetFramework_AddressIsInaccessible [FAIL] Assert.Throws() Failure Expected: typeof(System.NotSupportedException) Actual: (No exception was thrown) Stack Trace: R:\corefx\src\System.Net.Mail\tests\Functional\SmtpClientTest.cs(139,0): at System.Net.Mail.Tests.SmtpClientTest.ServicePoint_NetFramework_ AddressIsInaccessible() System.Net.Mail.Tests.SmtpClientTest.ServicePoint_NetFramework_AddressIsInaccessible [FINISHED] Time: 0.0122828s ```" +19428 area-System.Net System.Net.Sockets tests crash (exception) about 1 in 2 runs on my dev machine ``` 0:041> !pe -nested Exception object: 000001cf8048d7c8 Exception type: System.Net.Sockets.SocketException Message: An existing connection was forcibly closed by the remote host InnerException: StackTrace (generated): SP IP Function 0000003A8977F280 00007FFD130A5E3A System_Net_Sockets!System.Net.Sockets.Socket.Receive(Byte[], Int32, Int32, System.Net.Sockets.SocketFlags)+0xaa 0000003A8977F2F0 00007FFD1315352A System_Net_Sockets_Tests!System.Net.Sockets.Tests.SendFileTest+<>c__DisplayClass5_0.b__0()+0xba 0000003A8977F380 00007FFD131528AC System_Threading_Thread!System.Threading.Thread.ThreadMain_ThreadStart()+0xfc 0000003A8977F3F0 00007FFD720DEFA1 System_Private_CoreLib!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x111 StackTraceString: HResult: 80004005 Nested exception ------------------------------------------------------------- Exception object: 000001cf8048d7c8 Exception type: System.Net.Sockets.SocketException Message: An existing connection was forcibly closed by the remote host InnerException: StackTrace (generated): SP IP Function 0000003A8977F280 00007FFD130A5E3A System_Net_Sockets!System.Net.Sockets.Socket.Receive(Byte[], Int32, Int32, System.Net.Sockets.SocketFlags)+0xaa 0000003A8977F2F0 00007FFD1315352A System_Net_Sockets_Tests!System.Net.Sockets.Tests.SendFileTest+<>c__DisplayClass5_0.b__0()+0xba 0000003A8977F380 00007FFD131528AC System_Threading_Thread!System.Threading.Thread.ThreadMain_ThreadStart()+0xfc 0000003A8977F3F0 00007FFD720DEFA1 System_Private_CoreLib!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x111 StackTraceString: HResult: 80004005 ``` +19430 area-System.Net SslStream test failing to access Mutex @cipop, this looks like fall out from your recent change: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/3093/consoleText ``` System.Net.Security.Tests.SslStreamStreamToStreamTest_Async.SslStream_StreamToStream_Successive_ClientWrite_Sync_Success [FAIL] Cannot acquire the global certificate mutex. Expected: True Actual: False Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/Common/tests/System/Net/Configuration.Certificates.cs(38,0): at System.Net.Test.Common.Configuration.Certificates.GetCertificateCollection(String certificateFileName) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs(391,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest_Async.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs(78,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Successive_ClientWrite_Sync_Success() System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd.SslStream_StreamToStream_Authentication_Success [FAIL] Cannot acquire the global certificate mutex. Expected: True Actual: False Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/Common/tests/System/Net/Configuration.Certificates.cs(38,0): at System.Net.Test.Common.Configuration.Certificates.GetCertificateCollection(String certificateFileName) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs(404,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest_BeginEnd.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs(36,0): at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Authentication_Success() ``` +19431 area-System.Net Increasing test certificate loader mutex timeout. Fixes #19430. +19432 area-System.IO sign runtime.win7-x86.runtime.native.system.io.compression We need to make sure runtime.win7-x86.runtime.native.system.io.compression contains signed binaries in servicing. Take a look at the 4.3.0 package here: https://www.nuget.org/packages/runtime.win7-x86.runtime.native.System.IO.Compression/ +19433 area-System.Data Sign contents of runtime.win-x64.runtime.native.system.data.sqlclient.sni +19435 area-System.Net Failure of .UnixPingUtilityTests.PacketSizeIsRespected on OSX ``` System.Net.NetworkInformation.Tests.UnixPingUtilityTests.PacketSizeIsRespected(payloadSize: 50) [FAIL] System.Exception : Ping output was ::1 > ---- System.ArgumentOutOfRangeException : Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: startIndex Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(60,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.String.LastIndexOf(String value, Int32 startIndex, Int32 count, StringComparison comparisonType) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(67,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.ParseReturnedPacketSize(String pingOutput) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs(47,0): at System.Net.NetworkInformation.Tests.UnixPingUtilityTests.d__1.MoveNext() Finished: System.Net.Ping.Functional.Tests ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug_prtest/3051/consoleText Compare https://github.com/dotnet/corefx/issues/15018 +19436 area-System.Security CI failure in Rsa.Tests.RSAKeyExchangeFormatterTests.VerifyDecryptKeyExchangePkcs1 https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_debug_prtest/4738/testReport/junit/System.Security.Cryptography.Rsa.Tests/RSAKeyExchangeFormatterTests/VerifyDecryptKeyExchangePkcs1/ ``` Stacktrace MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.Security.Cryptography.CryptographicException)\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at System.Security.Cryptography.Rsa.Tests.RSAKeyExchangeFormatterTests.VerifyDecryptKeyExchange(AsymmetricKeyExchangeFormatter formatter, AsymmetricKeyExchangeDeformatter deformatter) in /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAKeyExchangeFormatter.cs:line 80 at System.Security.Cryptography.Rsa.Tests.RSAKeyExchangeFormatterTests.VerifyDecryptKeyExchangePkcs1() in /mnt/resource/j/workspace/dotnet_corefx/master/portablelinux_debug_prtest/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAKeyExchangeFormatter.cs:line 35 ``` +19437 area-System.Net Potential bug in HttpListener: adding an invalid prefix throws, but is still added "HttpListener refuses a uri prefix that has a host greater than length 255, throwing an `ArgumentOutOfRangeException`. However, the prefix is still added. This breaks expectations of the user IMO. Obviously HttpListener is a compat/legacy API. And, the full .NET Framework also has this bug, so this isn't a 2.0 issue and we may not even want to fix it ```cs [Fact] public void Add_LongHost_ThrowsArgumentOutOfRangeException() { var listener = new HttpListener(); string longPrefix = ""http://"" + new string('a', 256) + ""/""; Assert.Throws(""hostName"", () => listener.Prefixes.Add(longPrefix)); // Ouch: even though adding the prefix threw an exception, the prefix was still added. Assert.Equal(1, listener.Prefixes.Count); Assert.True(listener.Prefixes.Contains(longPrefix)); Assert.Throws(() => listener.Start()); } ```" +19438 area-System.Net HttpListenerPrefixCollection.CopyTo(null, 0) throws an NRE The following test demonstrates this bug that is present in netfx and the Windows implementation of HttpListener. Note that the managed implementation does not have this bug. Although HttpListener is considered a legacy/compat API, @stephentoub mentioned in #19217: > We don't need bug-for-bug compatibility. It's a bug in desktop that it throws an NRE; we don't need to go out of our way to mimic that. So I'm tracking this with an issue ```cs [Fact] public void CopyTo_NullArray_ThrowsNullReferenceException() { var listener = new HttpListener(); Assert.Throws(() => listener.Prefixes.CopyTo((Array)null, 0)); Assert.Throws(() => listener.Prefixes.CopyTo(null, 0)); } ``` +19439 area-Meta Can't extend class from .net 3.5 dll "I have one class library project built on dot net framework 3.5. I want to have a new dot net core application reference the dll produced by the first project and extend classes from that library. I have had to add a nuget reference to Microsoft.NETCore.Portable.Compatibility to make fix some basic issues with doing this, but now when I extend a class with an abstract method I can't override the method. I get a paradoxical situation where the class is raising an error that the method is not implemented and the method is raising an error that there is nothing to override. base class: ``` C# public abstract class Server { public event Action ConnectionEstablished; private TcpListener m_listenSocket; private Task m_awaitConnectionTask; readonly private List m_serverStoppedCallbacks = new List(); protected Server(int port) { m_listenSocket = new TcpListener(IPAddress.Parse(""localhost""), port); } public void Listen() { m_listenSocket.Start(); m_awaitConnectionTask = new Task(AwaitConnection); } public void WhenStopped(Action callback) { lock(m_serverStoppedCallbacks) m_serverStoppedCallbacks.Add(callback); } protected abstract Connection CreateConnection(TcpClient tcpClient); private void AwaitConnection() { try { while (true) ConnectionEstablished?.Invoke(CreateConnection(m_listenSocket.AcceptTcpClient())); } catch (SocketException e) { } finally { m_listenSocket.Stop(); List callbacks; lock (m_serverStoppedCallbacks) { callbacks = m_serverStoppedCallbacks.ToList(); m_serverStoppedCallbacks.Clear(); } foreach (var callback in callbacks) callback(); } } } ``` Inherited class: ``` C# public class Server : Communism.Network.Server { public Server(int port) : base(port) { } public static void Main() {} protected override Connection CreateConnection(TcpClient tcpClient) { throw new NotImplementedException(); } } ``` " +19441 area-System.Net HttpClient version System.Net.Http\4.3.0\ref\netstandard1.3\System.Net.Http.dll ignores proxy in asp.net core 1.1 app When I try to use HttpClientHandler with my proxy server and add it to HttpClient requests go directly instead over proxy server. I checked multiple times using wireshark and fiddler, it doesn't matter if proxy is working ip or is it a fake one. I don't get any error and requests go directly. For double checking I went on the server on which I sent requests and there wasn't IP address of sever which was used as proxy but direct PC. I can write here code part of code to show. +19442 area-System.Runtime Null comparer consistency Goes with PR https://github.com/dotnet/coreclr/pull/11345, part of fix for #18528 /cc @jcouv @stephentoub @weshaggard @AlexGhiondea +19443 area-System.Runtime Expose String.GetHashCode(StringComparison) with tests Closes https://github.com/dotnet/corefx/issues/13800 /cc @karelz @danmosemsft @stephentoub @hughbe @MikevanDongen +19444 area-System.IO OverflowPositionPointer test failing Recently added test is failing on 32-bit (passes on 64-bit): ``` UmsSecurityTests.OverflowPositionPointer [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: (No exception was thrown) Copyright (C) 2014 Outercurve Foundation. Stack Trace: D:\j\workspace\windows_nt_de---4526f5ff\src\System.IO.UnmanagedMemoryStream\tests\UmsSecurityTest.cs(52,0): at UmsSecurityTests.OverflowPositionPointer() ``` +19447 area-System.Security Does .NET Core work on Arch Linux? I'm using Antergos which is Arch Linux distribution and I was trying last several months to build dotnet core. Every time I was trying to build dotnet core I was facing different problem. Today I decide to try again to build dotnet core hoping that will be build successfully, because passed maybe a year of the first release but I face again some problem which i cannot solve. My current problem is [this](https://pastebin.com/ZSP4KU4E) +19449 area-System.Collections Proposal: ImmutableDictionary.Create(TKey, TValue) ## Background Most immutable collection types, such as `ImmutableArray` or `ImmutableList`, provide static `Create` methods that accept items to take advantage of type inference. e.g. `ImmutableArray.Create(new MyClass())` instead of `ImmutableArray.Empty.Add(new MyClass())`. However, with `ImmutableDictionary<>` it's necessary to specify the type parameters via `ImmutableDictionary.Empty.Add(key, value)`, since there is no `Create(TKey, TValue)` method that does type inference. I have just run into a couple of scenarios where I need to create a singleton dictionary, and it would be really nice to have such a factory method around. ## Proposal ```cs public static class ImmutableDictionary { public static ImmutableDictionary Create(TKey key, TValue value); // Not strictly necessary for this proposal, but provided for completeness because ImmutableHashSet has a similar overload. // Feel free to object. public static ImmutableDictionary Create(IEqualityComparer keyComparer, TKey key, TValue value); // Create(IEqualityComparer, IEqualityComparer, TKey, TValue) not offered because one can just do // ImmutableDictionary.Create(keyComparer, valueComparer).Add(key, value) and type inference will work correctly. } ``` Overloads to create a dictionary with more than one key/value pair will not be provided because `params` won't work. If someone wants to do that, they can write `ImmutableDictionary.Create(key1, value1).Add(key2, value2)` and so on. +19450 area-System.Globalization Implement ISO week numbers "In most of EU and Asia, we have the concept of week numbers. They are defined by an ISO standard (ISO 8601). ISO week numbers are used by millions of people. For example, the entire medical and school system in Scandinavia, and possibly the entire EU. According to Wikipedia ISO week numbers are used in ""EU and most of other European countries, most of Asia and Oceania"". ISO week numbers are still not implemented in .NET Framework, forcing developers to implement workarounds. Also, it's easy to miss that it's not implemented, creating subtle bugs in applications that only appear every 4 years or so. As a side note, I first reported this as a missing feature to Microsoft in May 2003 when I discovered the problem in .NET Framework v1.0.3705. Celebrating the 14th anniversary of my initial report, I've now considered implementing it myself ;) Or at least start discussions about implementing it. Because when I started digging into the source code, I fell into a rabbit hole. The problem is we have to choose between two bad options: 1. Implement ISO week numbers entirely correctly, but possibly breaking stuff. If we're lucky, we're only breaking a few workarounds. This means changing the week rules for various countries implemented in the Framework since the start (from FirstFourDayWeek to ISO). 2. Implement ISO week numbers as an entirely optional feature, only usable when calling the GetWeekOfYear function and always having to explicitly state the ISO week number rule. (We cannot rely on the week rule of the current culture). The actual code changes would be very small with this option. Am I correct in assuming option 2 is the only realistic one? (I'm avoiding option 3, to implement nothing). References: Microsoft explains the [subtle differences between ISO 8601 and GetWeekOfYear()](https://blogs.msdn.microsoft.com/shawnste/2006/01/24/iso-8601-week-of-year-format-in-microsoft-net/) [Week numbers (Wikipedia)](https://en.wikipedia.org/wiki/Week#Week_numbering) Various workarounds (StackOverflow): http://stackoverflow.com/a/1497620/ http://stackoverflow.com/a/12197063/ http://stackoverflow.com/a/11155102/ http://stackoverflow.com/a/27791320/ " +19451 area-System.Net Socket - SendAsync() Socket.cs should have an async method for: ```cs public int Send(byte[] buffer, int offset, int size, SocketFlags socketFlags); public int Send(byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode); ``` Expected: ```cs public async Task SendAsync(byte[] buffer, int offset, int size, SocketFlags socketFlags); public async Task SendAsync(byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode); ``` Probably an extension method would be ok ;) +19454 area-System.Net "Desktop: Tests under ""System.Net.Tests.HttpWebRequestTest"" failed with ""Xunit.Sdk.EqualException""" Failed Test: System.Net.Tests.HttpWebRequestTest.Host_SetNullValue_ThrowsArgumentNullException System.Net.Tests.HttpWebRequestTest.Host_SetInvalidUri_ThrowsArgumentException System.Net.Tests.HttpWebRequestTest.Host_SetSlash_ThrowsArgumentException Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/45/testReport/System.Net.Tests/HttpWebRequestTest/Host_SetNullValue_ThrowsArgumentNullException_remoteServer__http___corefx_net_cloudapp_net_Echo_ashx_/ MESSAGE: ~~~ Assert.Equal() Failure Expected: value Actual: (null) ~~~ STACK TRACE: ~~~ at System.Net.Tests.HttpWebRequestTest.Host_SetNullValue_ThrowsArgumentNullException(Uri remoteServer) in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 349 ~~~ +19455 area-System.Diagnostics "Desktop: BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener failed with ""System.Diagnostics.Tracing.EventSourceException""" Failed tests: BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener_UseEvents Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/45/testReport/BasicEventSourceTests/TestsWrite/Test_Write_T_EventListener/ MESSAGE: ~~~ System.Diagnostics.Tracing.EventSourceException : An error occurred when writing to a listener. ---- Assert.Equal() Failure Expected: (null) Actual: ~~~ STACK TRACE: ~~~ at System.Diagnostics.Tracing.EventSource.DisptachToAllListeners(Int32 eventId, Guid* childActivityID, EventWrittenEventArgs eventCallbackArgs) at System.Diagnostics.Tracing.EventSource.WriteToAllListeners(Int32 eventId, Guid* childActivityID, Int32 eventDataCount, EventData* data) at System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(Int32 eventId, Guid* relatedActivityId, Int32 eventDataCount, EventData* data) at System.Diagnostics.Tracing.EventSource.WriteEvent(Int32 eventId, String arg1, Int32 arg2) at BasicEventSourceTests.EventTestHarness.TestHarnessEventSource.StartTest(String name, Int32 testNumber) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\EventTestHarness.cs:line 130 at BasicEventSourceTests.EventTestHarness.RunTests(List`1 tests, Listener listener, EventSource source, FilteringOptions options) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\EventTestHarness.cs:line 105 at BasicEventSourceTests.TestsWrite.Test_Write_T(Listener listener) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWrite.cs:line 398 at BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWrite.cs:line 46 ----- Inner Stack Trace ----- at BasicEventSourceTests.TestsWrite.<>c__DisplayClass3_0.b__27(Event evt) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWrite.cs:line 373 at BasicEventSourceTests.EventTestHarness.<>c__DisplayClass0_0.b__0(Event data) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\EventTestHarness.cs:line 65 at BasicEventSourceTests.EventListenerListener.HelperEventListener.OnEventWritten(EventWrittenEventArgs eventData) in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\Listeners.cs:line 378 at System.Diagnostics.Tracing.EventSource.DisptachToAllListeners(Int32 eventId, Guid* childActivityID, EventWrittenEventArgs eventCallbackArgs) ~~~ +19456 area-System.Net "Desktop: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_UnsupportedAllServer_Fail failed with ""System.TimeoutException""" Failed test: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_UnsupportedAllServer_Fail Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/45/testReport/System.Net.Security.Tests/ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_UnsupportedAllServer_Fail/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.NotSupportedException) Actual: typeof(System.TimeoutException): The operation has timed out. ~~~ STACK TRACE: ~~~ at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs:line 23 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +19457 area-System.Net Fix several System.Net.Requests param name diffs in tests & disable abort tests again Fixes https://github.com/dotnet/corefx/issues/19454 cc: @danmosemsft +19458 area-System.Net "Desktop: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail failed with ""System.Security.Authentication.AuthenticationException""" Failed test: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/45/testReport/System.Net.Security.Tests/ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_EachServerUnsupportedProtocol_Fail_protocol__Ssl2_/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.NotSupportedException) Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. ~~~ STACK TRACE: ~~~ at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs:line 19 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() in D:\j\workspace\outerloop_net---903ddde6\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +19459 area-System.Net Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException fails on desktop This test always passes for me when I run it locally on core and always fails for me on desktop: ``` System.Net.Tests.HttpWebRequestTest.Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException [FAIL] Assert.Equal() Failure Expected: 1 Actual: 0 Stack Trace: C:\Users\stoub\Source\Repos\corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs(1252,0): at System.Net.Tests.HttpWebRequestTest.b__119_0(Socket server, Uri url) C:\Users\stoub\Source\Repos\corefx\src\Common\tests\System\Net\Http\LoopbackServer.cs(54,0): at System.Net.Test.Common.LoopbackServer.CreateServerAsync(Func`3 funcAsync, IPEndPoint& localEndPoint, Optio ns options) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() C:\Users\stoub\Source\Repos\corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs(1242,0): at System.Net.Tests.HttpWebRequestTest.d__119.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +19461 area-System.ComponentModel System.ComponentModel.EnumConverter.GetStandardValues() throw InvalidCastException "in source code: `IComparer comparer = Comparer; if (comparer != null) { objValues.Sort((IComparer) comparer); }` when ""comparer"" is a InvariantComparer, it can't cast to IComparer<>, implements on .netstandard 1.0 & 1.1 are correct, because objValues are ArrayList, and use objValues.Sort(comparer). " +19462 area-System.Diagnostics "Desktop: Tests under ""BasicEventSourceTests.TestsWriteEventToListener"" failed with ""Xunit.Sdk.EqualException""" Failed tests: BasicEventSourceTests.TestsWriteEventToListener.Test_WriteEvent_ArgsCornerCases BasicEventSourceTests.TestsWriteEventToListener.Test_WriteEvent_ZeroKwds BasicEventSourceTests.TestsWriteEventToListener.Test_WriteEvent_ArgsBasicTypes Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/45/testReport/BasicEventSourceTests/TestsWriteEventToListener/Test_WriteEvent_ArgsCornerCases/ MESSAGE: ~~~ Assert.Equal() Failure\r\nExpected: 26\r\nActual: 0 ~~~ STACK TRACE: ~~~ at BasicEventSourceTests.TestsWriteEventToListener.Test_WriteEvent_ArgsCornerCases() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestsWriteEventToListener.cs:line 193 ~~~ +19463 area-Meta Disable failed tests for 9 issues. Disabled following issues: #19462 #19458 #19456 #19455 #18806 #19384 #19383 #19286 #19179 cc: @danmosemsft @safern +19465 area-Meta Disable failed tests for issue 18196 and 18718. Disable failed tests for issues: #18196 #18718 cc: @danmosemsft @safern +19466 area-System.Net "[HttpListener] No test result generated under ""System.Net.HttpListener.Tests""" "Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170508.01/workItem/System.Net.HttpListener.Tests/wilogs No test result generated under ""System.Net.HttpListener.Tests"", no exception in the result." +19467 area-System.Runtime "Test: System.Runtime.InteropServices.Tests.MarshalDirectiveExceptionTests/SerializationRoundTrip failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.Tests.MarshalDirectiveExceptionTests/SerializationRoundTrip` has failed. Assert.Equal() Failure\r ? (pos 322)\r Expected: ···terHelpers.cs:line 49\r Actual: ···terHelpers.cs:line 44\r ? (pos 322) Stack Trace: at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.AssertRoundtrips[T](T expected, Func`2[] additionalGetters) in E:\A\_work\159\s\corefx\src\Common\tests\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs:line 64 at System.Runtime.InteropServices.Tests.MarshalDirectiveExceptionTests.SerializationRoundTrip() in E:\A\_work\159\s\corefx\src\System.Runtime.InteropServices\tests\System\Runtime\InteropServices\MarshalDirectiveExceptionTests.cs:line 18 Build : Master - 20170508.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64 - x86-Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170508.01/workItem/System.Runtime.InteropServices.Tests/analysis/xunit/System.Runtime.InteropServices.Tests.MarshalDirectiveExceptionTests~2FSerializationRoundTrip +19468 area-System.Runtime Disable failed test for issue 19467. Disable the failed test for issue: #19467 cc: @danmosemsft @safern +19469 area-System.Net "WinHttpException ""The parameter is incorrect"" on HttpRequest with EnableRewind " "Hi, Environment: .NET Core runtime 1.1.1 on Windows 10 Case: I get HttpRequest then I want to send this to other api. ```c# public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .Build(); host.Run(); } } public class Startup { public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.Run(async (context) => { context.Request.EnableRewind(); var httpRequestMesage = new HttpRequestMessage(new HttpMethod(context.Request.Method), $""https://mysite.com""); if (context.Request.ContentLength != null && context.Request.ContentLength > 0) { httpRequestMesage.Content = new StreamContent(context.Request.Body); httpRequestMesage.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(context.Request.ContentType); } try { using (var httpClient = new HttpClient()) { var response = await httpClient.SendAsync(httpRequestMesage); } } catch (Exception exception) { throw exception; } }); } } ``` Request example: ``` http://localhost:5000/ POST Content-Type: application/json;charset=UTF-8 test ``` When I'm using EnableRewind I have the following exception: ``` ""System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: The write operation failed, see inner exception. ---> System.Net.Http.WinHttpException: The parameter is incorrect --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.IO.Stream.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpContent.d__44.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__131.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at RewindIssue.Startup.<>c.<b__0_0>d.MoveNext() in c:\\Projects\\RewindIssue\\Program.cs:line 50"" ``` " +19470 area-System.Diagnostics Linux Process.WaitForExit(Infinite) takes longer than needs to On Linux with timeout infinite Process.WaitForExit will take an average minimum time of 90ms https://gist.github.com/adamjez/521581903cac93653ab568fc4d7feda0 Meaning a max of 11 processes can be launched and waited for exit per second. Changing that to a 1ms wait and timeout check loop it takes an average of 4ms https://gist.github.com/adamjez/441e19c16a7a61c0aa518f2c7abc7222 Meaning a max of 250 processes can be launched on and waited for exit per second (x22 thoughput increase) The reason and solution for this is actually called out in the code https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessWaitState.Unix.cs#L430-L501 But essentially it checks for exit; [sleeps for 100ms](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessWaitState.Unix.cs#L500-L501) (is Delay but upper call is blocking) in a loop; hence the 90ms average. Either this could be resolved using the blocking OS signal as touched on in the code; or the cycle time could be reduced from 100ms. Effects driving command batching from dotnet. May effect dotnet restore->build command chaining thoughput itself? /cc @karelz @stephentoub @adamjez +19472 area-System.Diagnostics Improve polling window logic in ProcessWaitState on Unix Also clean up a few lines of code. Fixes https://github.com/dotnet/corefx/issues/19470 cc: @benaadams, @Priya91 +19473 area-System.Runtime Fix serialization roundtrip line number test on desktop Fixes https://github.com/dotnet/corefx/issues/19467 cc: @danmosemsft +19474 area-System.Diagnostics "Several Process tests on Windows failing with ""Couldn't connect to remote machine""" "https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/7565/consoleText ``` System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(265,0): at System.Diagnostics.NtProcessManager.GetProcessIds(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(33,0): at System.Diagnostics.ProcessManager.IsProcessRunning(Int32 processId, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(1055,0): at System.Diagnostics.Process.GetProcessById(Int32 processId, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\tests\ProcessTests.cs(917,0): at System.Diagnostics.Tests.ProcessTests.d__76.MoveNext() D:\j\workspace\windows_nt_re---37265eab\src\System.Linq\src\System\Linq\Select.cs(133,0): at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(550,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(511,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""8363c42cc7434644b263584fc831a4bb\"") [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(1107,0): at System.Diagnostics.Process.GetProcesses(String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(27,0): at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\tests\ProcessTests.cs(870,0): at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(String machineName) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(550,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(511,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""\\\\e41070783511438199c628aa28bd8d16\"") [FAIL] System.InvalidOperationException : Couldn't connect to remote machine. ---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. Stack Trace: D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(521,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.cs(1107,0): at System.Diagnostics.Process.GetProcesses(String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\Process.Windows.cs(27,0): at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\tests\ProcessTests.cs(870,0): at System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(String machineName) ----- Inner Stack Trace ----- D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(550,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) D:\j\workspace\windows_nt_re---37265eab\src\System.Diagnostics.Process\src\System\Diagnostics\ProcessManager.Windows.cs(511,0): at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) ``` cc: @danmosemsft, @hughbe " +19475 area-System.ComponentModel Fix EnumConverter porting bug around ArrayList EnumConverter.GetStandardValues switched from using `ArrayList` to `List` when it was ported to .NET Core. But it performs sorting using the non-generic IComparer, which `List` doesn't have APIs for. Rather than trying to work around the difference, it makes sense to just revert to using ArrayList. Fixes https://github.com/dotnet/corefx/issues/19461 cc: @safern +19476 area-System.Linq Reduce the number of items in a PLINQ query that are kept alive with respect to the GC "PLINQ queries apparently keep up to twice the number of items alive that they must. This is problematic with very big items (such as big batches of smaller work items or images). Please take a look at the results of this measurement. I run with DOP 4 yet up to 8 items are kept alive. public static void RunTest() { var degreeOfParallelism = 4; Console.WriteLine($""degreeOfParallelism: {degreeOfParallelism}""); List trackedItems = new List(); var myItems = Enumerable.Range(0, 100000).Select(_ => { var item = new byte[(1 << 20) * 100]; lock (trackedItems) trackedItems.Add(new WeakReference(item)); return item; }); Task.Run(() => { while (true) { Console.WriteLine($""Created: {trackedItems.Count}, alive: {trackedItems.Count(wr => wr.IsAlive)}.""); Thread.Sleep(1000); } }); var myPartitioner = Partitioner.Create(myItems, EnumerablePartitionerOptions.NoBuffering); var results = myPartitioner .AsParallel() .WithDegreeOfParallelism(degreeOfParallelism) .Select(x => ProcessItem(x)) .ToList(); } static object ProcessItem(byte[] bytes) { Thread.Sleep(TimeSpan.FromSeconds(1)); bytes = null; GC.Collect(); return null; } . degreeOfParallelism: 4 Created: 0, alive: 0. Created: 4, alive: 4. Created: 8, alive: 8. Created: 12, alive: 8. Created: 16, alive: 5. Created: 20, alive: 5. Created: 24, alive: 7. Created: 28, alive: 7. Created: 32, alive: 5. Created: 36, alive: 6. Created: 40, alive: 6. Created: 44, alive: 5. Created: 48, alive: 6. Created: 52, alive: 6. Created: 56, alive: 6. Created: 60, alive: 6. Created: 64, alive: 6. Created: 68, alive: 6. Created: 72, alive: 6. Created: 76, alive: 6. Created: 80, alive: 6. Created: 84, alive: 6. Created: 88, alive: 6. Created: 92, alive: 5. Created: 96, alive: 5. There's some ""overshooting"" over the limit of `4` but it always obeys twice the limit at least. **The consequence of that is that memory usage is doubled.** There must be some ""frictional GC rooting"" that hopefully is easy to kill by clearing some variable early. And this is what I request as an improvement. " +19477 area-System.Net Disable two System.Net.Security tests on desktop These tests are .NET Core-specific, as they're verifying that protocols that have been explicitly made unsupported for security reasons fail appropriately, but they're still supported on desktop. Fixes https://github.com/dotnet/corefx/issues/19456 Fixes https://github.com/dotnet/corefx/issues/19458 cc: @cipop, @davidsh, @safern +19480 area-Infrastructure Win7 test legs failing in Jenkins With errors like this: ``` Finished running tests. End time=13:33:33.49, Exit code = 0 Command execution succeeded. [outerloop_net---15cfbbd5] $ cmd /c call C:\Users\DOTNET~1\AppData\Local\Temp\hudson4212507020438352447.bat D:\j\workspace\outerloop_net---15cfbbd5>C:\Packer\Packer.exe .\bin\build.pack .\bin\runtime\netcoreapp-null-Release-x64 [00:00:00.0000029] Walking Files Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\j\workspace\outerloop_net---15cfbbd5\bin\runtime\netcoreapp-null-Release-x64'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileSystemEnumerableIterator`1.CommonInit() at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) at System.IO.DirectoryInfo.EnumerateFileSystemInfos(String searchPattern, SearchOption searchOption) at Packer.Main(String[] args) in C:\Users\Matt G. Ellis\Documents\Visual Studio 2015\Projects\Packer\Packer\Packer.cs:line 58 Build timed out (after 120 minutes). Marking the build as aborted. Build was aborted ``` cc: @danmosemsft, @ellismg +19481 area-System.Security Fix FindByValidThumbprint_RootCert when an invalid root is found. One of our CI machines has a certificate marked as rootTrust which nevertheless comes back as not trusted. This makes the test a bit more resilient against failures of that nature (though it does make it somewhat hard to know if it found a system with no candidate certs, or if it actually worked). Fixes #19260. +19483 area-Infrastructure CoreFX Jenkins badges reflect last completed build results: need badges that show status of last build of any kind Eg for Win7 right now the badge shows last completed results: `https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_release/lastCompletedBuild/testReport/`. That's handy for seeing results because it ignores in progress builds. However if the build does not complete (possibly for some days) this does not show up. We should probably add badges showing build status, not just last completed. +19484 area-System.Reflection CoreFX on ILC tests burndown Getting down to 1-bucket items here... - Disabled MarshalAs custom attribute test (not implemented on .Net Native) - Reenabled GetTypeFromCLSID() data item (restored on .Net Native) - Avoid testing contents of ToString() (.Net Native ToString() simplifies the type name in order to avoid excess metadata probing.) +19486 area-System.Runtime Normalize Temp path for Nano Fixes https://github.com/dotnet/corefx/issues/7433 (I can't get on the Helix Nano boxes and it doesn't repro on mine) +19487 area-System.Net Fix Mono bug #52508 in HttpListener when doing multiple Https request. Move the call to SslStream.AuthenticateAsServer() into the constructor because we don't want to call it again when Init() is called from Close(). +19488 area-Infrastructure Enable test run on CI for Desktop With this PR we are enabling tests to be run on CI for desktop so that we catch any compat error and we don't have any regressions on the progress we've made to have a clean run. The run is not clean yet, but opening the PR as we are close to achieve it, so whenever we get a clean run merge it right away. FYI: @danmosemsft @stephentoub +19489 area-System.Security Linux: cannot decrypt EncryptedXml document that uses X509Certificate as the key "#### Repro Create a test certificate, such as https://github.com/aspnet/DataProtection/blob/dev/test/Microsoft.AspNetCore.DataProtection.Extensions.Test/TestFiles/TestCert.pfx ```c# using System; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.Xml; using System.Xml.Linq; namespace decrypt { class Program { static void Main(string[] args) { var cert = new X509Certificate2(""TestCert.pfx"", ""password""); var store = new X509Store(StoreName.Root); store.Open(OpenFlags.ReadWrite); store.Add(cert); store.Close(); try { var xmlDoc = new XmlDocument(); xmlDoc.Load(new XElement(""test"", new XElement(""item"")).CreateReader()); var elementToEncrypt = (XmlElement)xmlDoc.DocumentElement.FirstChild; var encryptedDoc = new EncryptedXml(xmlDoc); var encryptedElement = encryptedDoc.Encrypt(elementToEncrypt, cert); EncryptedXml.ReplaceElement(elementToEncrypt, encryptedElement, false); xmlDoc.Save(""sample.xml""); Console.WriteLine(xmlDoc.OuterXml); var xmlDocument = new XmlDocument(); xmlDocument.Load(""sample.xml""); var encryptedXml = new EncryptedXml(xmlDocument); // this line always throws encryptedXml.DecryptDocument(); } finally { store.Open(OpenFlags.ReadWrite); store.Remove(cert); store.Close(); } } } } ``` #### Error: ``` Unhandled Exception: System.PlatformNotSupportedException: Unix LocalMachine X509Store is limited to the Root and CertificateAuthority stores. at Internal.Cryptography.Pal.StorePal.FromSystemStore(String storeName, StoreLocation storeLocation, OpenFlags openFlags) at System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags) at System.Security.Cryptography.Xml.Utils.BuildBagOfCerts(KeyInfoX509Data keyInfoX509Data, CertUsageType certUsageType) at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey) at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri) at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument() ``` #### Details Using: Microsoft.NETCore.App: 2.0.0-preview1-002101-00 OS: Ubuntu 16.04" +19490 area-System.Net Mono-specific HttpListener additions. * Move HttpListener.CreateSslStream() into new partial class. * Add new internal HttpListener.LoadCertificateAndKey() and call it from HttpEndPointListener's .ctor. +19491 area-System.Runtime Fix LazyTests.Ctor_ExceptionRecovery test On AoT, XUnit itself was invoking the Lazy object's Value property behind our backs. This particular test is sensitive to that. (The reason why this was happening on AoT and not CoreClr was because CoreClr finds Lazy's ToString() override and invokes that. We could make the same happen pm AoT with an rd.xml but it's simply more reliable not to give XUnit a chance to meddle in the first place.) +19492 area-System.Data SqlClient: Allow |DataDirectory| macro in AttachDBFilename Now that .NET Standard 2.0 includes `AppDomain.GetData`, there shouldn't be anything blocking the implementation to expand the `|DataDirectory|` substitution string in the `AttachDBFilename` value of the connection string. +19493 area-System.Net Check for openssl version before libcurl initialization. cc @bartonjs fixes #19306 +19494 area-System.Security crypto-xml: test behavior change caused by removing CAS related ctor Fixes: https://github.com/dotnet/corefx/issues/19272 Explanation: https://github.com/dotnet/corefx/issues/19272#issuecomment-299979378 +19495 area-System.Diagnostics Letting perfproc errors pass silently Fixes https://github.com/dotnet/corefx/issues/19474 Unfortunately a reliable detection if performance process counters are enabled isn't possible. Therefore we need to let them pass silently. Not a pretty fix but I can't see any other way around that. +19496 area-System.Net Solve System.Net.Sockets tests crash I can reproduce the crash on my dev machine, explanation of the crash is here: https://github.com/dotnet/corefx/issues/13114#issuecomment-290554256. Client use RST to close the connection instead of FIN. Shutdown() socket before dispose() will fix this test crash. Fix #19428 +19497 area-System.IO Fix UMS 32bit PositionPointer test. The purpose of the test is to make the PositionPointer setter cast ulong.MaxValue to a long, producing -1 which will always be less than the UMS pointer so the final newPosition will be negative. On a 32 bit system where the pointer length is 4, the max value passable to the PositionPointer setter is uint.MaxValue. So in the test when we cast a value greater than uint.MaxValue to the 4-byte byte* we only get the uint.MaxValue bytes. Since casting a 4-byte pointer to a long will never result in overflow, the AOoRE can never be hit. resolves https://github.com/dotnet/corefx/issues/19444 related to https://github.com/dotnet/corefx/pull/19412 cc: @jkotas @stephentoub +19498 area-System.Net Increase code coverage of WebRequest, Authorization, AuthorizationManager Code coverage ~90%. Tested on both netfx and corefx. +19499 area-System.Diagnostics System.Diagnostics.Tests.ProcessTests flaky tests "I've seen the following tests failed in two different PRs today: System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""3556bb7131de4d6ab3e7ada117d07ac9\"") System.Diagnostics.Tests.ProcessTests.GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(machineName: \""\\\\128636e3cc3e42888137ee11e9c4d4ad\"") They fail with error: ``` System.InvalidOperationException : Couldn't connect to remote machine.\r\n---- System.InvalidOperationException : Process performance counter is disabled, so the requested operation cannot be performed. ``` Latest CI leg where they failed: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/7609/ Should we maybe fix them to retry if it wasn't able to connect to remote machine? cc: @Priya91 @stephentoub " +19500 area-System.Security Disable SigningVerifyingX509Cert.SignedXmlHasCertificateVerifiableSignature on <= net4.6.1 Issue: https://github.com/dotnet/corefx/issues/19270 RSACryptoServiceProvider.DecryptValue has not been implemented on <=net4.6.1 and thus is throwing SkipOnTargetFramework logic can be also written as `TargetFrameworkMonikers.Net462 - 1` although that might not be clear for people reading the code +19502 area-Infrastructure Package validation updates This improves our package validation to use the latest CLI. This includes tests for duplicate types and binary clashes. I've fixed all the packages which had issues after doing this, and added some exceptions for duplicate types. The infrastructure is still a work in progress but please review both the fixes and the exceptions. /cc @weshaggard +19503 area-System.Security Block opening the Disallowed X509Store on Linux On Linux we don't use the Disallowed store for making (anti-)trust decisions, but since we didn't go out of our way to block it a user can reference it either by name or the StoreName enum and we'll happily create a store of that name, it just won't do what the user expects. So we should throw if they try to open the store, so we're not construed as implicitly making promises that we don't follow through on. +19504 area-Infrastructure Replace test shared framework with the runtime packages Progress towards #18083 cc: @weshaggard @ericstj @danmosemsft Using the runtime packages that were restored as the shared framework that the tests will run against. After this is in, the last pieces missing would be: 1. Find a form to get the right hash of corefx in order to match the test source with the packages that were restored. 2. Run the different ApiCompat runs that we care about with what we restored. +19505 area-System.Security Fix S.Security.Cryptography desktop tests Fixes: #19283 Fixes: #19238 Fixes: #19080 Fixes: #19079 cc: @danmosemsft +19506 area-Meta Add nice messages for assemblies with autogenerated PNSE Resolves https://github.com/dotnet/corefx/issues/19358. Adding assembly-wide custom messages for all autogenerated PNSE per the talk with area owners. cc: @danmosemsft @tarekgh +19507 area-System.Net Incorrect usage of LingerTime can cause System.Net.Sockets tests failure After investigating into #19428, there is a risk by using LingerState to wait for send/receive operation complete, before dispose the socket. Because the LingerTime value is arbitrarily set by us, some slow computers may take more time to finish the send/receive operation, so it's possible that some data are still available before we dispose the socket. And in this case, we will use a RST packet (instead of FIN) to forcibly close the connection after time out (https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs#L4649, related issue #13114), and test will fail with System.Net.Sockets.SocketException, Message: An existing connection was forcibly closed by the remote host. An example is #19428 Potential fix: always use socket.Shutdown(SocketShutdown how) before we dispose() the socket. cc: @davidsh @CIPop @stephentoub +19508 area-System.Security macOS: cannot add self-signed cert to X509Store CurrentUser\My "**Repro** 1. Download latest build of .NET Core 2.0.0 preview2 https://github.com/dotnet/cli#installers-and-binaries 1. Create a self-signed cert 1. `openssl genrsa 4096 > private.pem` 1. `openssl req -x509 -new -key private.pem -out public.pem` 1. `openssl pkcs12 -export -in public.pem -inkey private.pem -out mycert.pfx` 2. `dotnet new console` and edit code to match: ```c# using System; using System.Security.Cryptography.X509Certificates; namespace addcert { class Program { static void Main(string[] args) { var cert = new X509Certificate2(""mycert.pfx"", ""password""); var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); try { store.Open(OpenFlags.ReadWrite); // this line throws store.Add(cert); } finally { store.Close(); } } } } ``` 3. `dotnet run` **Error** ``` Unhandled Exception: Interop+AppleCrypto+AppleCommonCryptoCryptographicException: The contents of this item cannot be retrieved. at Interop.AppleCrypto.X509StoreAddCertificate(SafeKeychainItemHandle certOrIdentity, SafeKeychainHa ndle keychain) at Internal.Cryptography.Pal.StorePal.AppleKeychainStore.Add(ICertificatePal cert) at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) at addcert.Program.Main(String[] args) ``` **Details:** Microsoft.NETCore.App/2.0.0-preview2-002093-00 macOS 10.12.4 Available Keychains: ![image](https://cloud.githubusercontent.com/assets/2696087/25830803/5f4ef3aa-3414-11e7-8d2a-90731f6f7c08.png) Adding the .pfx file to 'login' via the Keychain Access utility works just fine, as does `security import mycert.pfx -k ~/Library/Keychains` " +19509 area-System.IO Fix System.IO.Compression test Fixes: https://github.com/dotnet/corefx/issues/18264 cc: @danmosemsft +19511 area-System.Console "Test: ConsoleEncoding/InputEncoding_SetWithInInitialized_ResetsIn and OutputEncoding_SetWithErrorAndOutputInitialized_ResetsErrorAndOutput failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `ConsoleEncoding/InputEncoding_SetWithInInitialized_ResetsIn` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() Build : Master - 20170509.01 (Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170509.01/workItem/System.Console.Tests/analysis/xunit/ConsoleEncoding~2FInputEncoding_SetWithInInitialized_ResetsIn +19512 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientTest/Timeout_SetTo30AndGetResponseFromLoopbackQuickly_Success Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientTest/Timeout_SetTo30AndGetResponseFromLoopbackQuickly_Success` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientTest.<>c__DisplayClass28_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.HttpClientTest.d__28.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.Http.WinHttpException.CreateExceptionUsingLastError() at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetWinHttpOption(SafeWinHttpHandle handle, UInt32 option, UInt32& optionData) at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.WinHttpHandler.StartRequest(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.<>c.b__101_0(Object s) at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntryUnsafe() at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() --- End of stack trace from AddCurrentStack --- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetWinHttpOption(SafeWinHttpHandle handle, UInt32 option, UInt32& optionData) at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170509.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170509.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientTest~2FTimeout_SetTo30AndGetResponseFromLoopbackQuickly_Success +19513 area-System.Net Test failure: System.Net.Http.Functional.Tests.PostScenarioTest/PostUsingChunkedEncoding_Success(serverUri: https://corefx-net.cloudapp.net/Echo.ashx) Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.PostScenarioTest/PostUsingChunkedEncoding_Success(serverUri: https://corefx-net.cloudapp.net/Echo.ashx)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The handle is in the wrong state for the requested operation Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Http.Functional.Tests.PostScenarioTest.d__13.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.Http.WinHttpException.CreateExceptionUsingLastError() at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetWinHttpOption(SafeWinHttpHandle handle, UInt32 option, IntPtr optionData, UInt32 optionSize) at System.Net.Http.WinHttpHandler.SetNoClientCertificate(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleClientCertificateOptions(SafeWinHttpHandle requestHandle, Uri requestUri) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.WinHttpHandler.StartRequest(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.<>c.b__101_0(Object s) at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.Tasks.Task.ExecuteEntryUnsafe() at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() --- End of stack trace from AddCurrentStack --- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetWinHttpOption(SafeWinHttpHandle handle, UInt32 option, IntPtr optionData, UInt32 optionSize) at System.Net.Http.WinHttpHandler.SetNoClientCertificate(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleClientCertificateOptions(SafeWinHttpHandle requestHandle, Uri requestUri) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170509.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170509.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostUsingChunkedEncoding_Success(serverUri:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx) +19514 area-System.Net "Test: System.Net.NetworkInformation.Tests.PingTest/SendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Tests.PingTest/SendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix` has failed. Assert.Equal() Failure Expected: Success Actual: TimedOut Stack Trace: at System.Net.NetworkInformation.Tests.PingTest.<>c__DisplayClass8_0.b__1(PingReply pingReply) in /Users/buildagent/agent/_work/19/s/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs:line 199 at System.Net.NetworkInformation.Tests.PingTest.d__23.MoveNext() in /Users/buildagent/agent/_work/19/s/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs:line 453 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__8.MoveNext() in /Users/buildagent/agent/_work/19/s/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs:line 195 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170509.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170509.01/workItem/System.Net.Ping.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.PingTest~2FSendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix +19515 area-Serialization Whether serializer can deserialize different datetime formats on any OS @shmao According to the results that serializer can't deserialize both formats on our test OS +19516 area-Serialization "Desktop: ""Test System.Runtime.Serialization.Xml.ReflectionOnly.Tests.DataContractSerializerTests.DCS_TypeWithPrivateFieldAndPrivateGetPublicSetProperty"" failed" "https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170509.01/workItem/System.Runtime.Serialization.Xml.ReflectionOnly.Tests ``` XML comparison is also failing\r\nTest failed for input: TypeWithPrivateFieldAndPrivateGetPublicSetProperty\r\nExpected: foo\r\nActual: \r\nExpected: True\r\nActual: False ``` Stack Trace: ``` at DataContractSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) in E:\A\_work\135\s\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 3187 at DataContractSerializerTests.DCS_TypeWithPrivateFieldAndPrivateGetPublicSetProperty() in E:\A\_work\135\s\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 821 ``` Seems like a bug in desktop, the difference is how it returns the result in between desktop and core: #### Core ``` foo ``` #### Desktop ```` ```` cc: @shmao @zhenlan " +19517 area-System.Net "Test: System.Net.Sockets.Tests.SendFileTest/SendFile_APM(listenAt: ::1, sendPreAndPostBuffers: False, bytesToSend: 1024) failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.SendFileTest/SendFile_APM(listenAt: ::1, sendPreAndPostBuffers: False, bytesToSend: 1024)` has failed. Completed within allowed time Expected: True Actual: False Stack Trace: at System.Net.Sockets.Tests.SendFileTest.SendFile_APM(IPAddress listenAt, Boolean sendPreAndPostBuffers, Int32 bytesToSend) in /Users/buildagent/agent/_work/2/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/SendFile.cs:line 249 Build : Master - 20170509.01 (Portable Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170509.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendFileTest~2FSendFile_APM(listenAt:%20::1,%20sendPreAndPostBuffers:%20False,%20bytesToSend:%201024) +19518 area-Infrastructure Exceptions from RemoteExecutorHost should get into XML log "We should try to `tee` the console from RemoteExecutorHost so it gets into the XML test log and thus into the correct test result in Helix. As it is you just get eg (note the code = ""some managed exceptoin"") ``` Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() ``` but if you look at the full console output, aggregated for all the tests in this library, you see the actual exception -- ``` 2017-05-09 01:33:05,362: INFO: proc(54): run_and_log_output: Output: Hello World 2017-05-09 01:33:05,440: INFO: proc(54): run_and_log_output: Output: Exception from RemoteExecutorConsoleApp(System.Console.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, ConsoleEncoding+<>c, b__6_0): 2017-05-09 01:33:05,440: INFO: proc(54): run_and_log_output: Output: Assembly: System.Console.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb 2017-05-09 01:33:05,440: INFO: proc(54): run_and_log_output: Output: Type: ConsoleEncoding+<>c 2017-05-09 01:33:05,440: INFO: proc(54): run_and_log_output: Output: Method: Int32 b__6_0() 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: The request is not supported 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at System.ConsolePal.SetConsoleOutputEncoding(Encoding enc) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at System.Console.set_OutputEncoding(Encoding value) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at ConsoleEncoding.<>c.b__6_0() 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: --- End of inner exception stack trace --- 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at RemoteExecutorConsoleApp.Program.Main(String[] args) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: The request is not supported 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at System.ConsolePal.SetConsoleOutputEncoding(Encoding enc) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at System.Console.set_OutputEncoding(Encoding value) 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at ConsoleEncoding.<>c.b__6_0() 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: --- End of inner exception stack trace --- 2017-05-09 01:33:05,487: INFO: proc(54): run_and_log_output: Output: at RemoteExecutorConsoleApp.Program.Main(String[] args) 2017-05-09 01:33:05,596: INFO: proc(54): run_and_log_output: Output: ConsoleEncoding.OutputEncoding_SetWithErrorAndOutputInitialized_ResetsErrorAndOutput [FAIL] 2017-05-09 01:33:05,596: INFO: proc(54): run_and_log_output: Output: Assert.Equal() Failure 2017-05-09 01:33:05,596: INFO: proc(54): run_and_log_output: Output: Expected: 42 2017-05-09 01:33:05,596: INFO: proc(54): run_and_log_output: Output: Actual: -532462766 2017-05-09 01:33:05,596: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-09 01:33:05,721: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() 2017-05-09 01:33:05,957: INFO: proc(54): run_and_log_output: Output: Exception from RemoteExecutorConsoleApp(System.Console.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, ConsoleEncoding+<>c, b__3_0): 2017-05-09 01:33:05,957: INFO: proc(54): run_and_log_output: Output: Assembly: System.Console.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb ```" +19519 area-System.Console Disable 2 tests on Nano due to missing ASCII code page Fix https://github.com/dotnet/corefx/issues/19511 On Nano, Console.OutputEncoding = Encoding.ASCII; produces ERROR_NOT_SUPPORTED. Since we're just calling directly through to the OS, and our code is the same here, it's unlikely we're to blame. It's likely this is a piece of legacy support intentionally removed from Nano. +19521 area-System.Numerics Standardized Rational object This issue was ported from https://github.com/dotnet/csharplang/issues/553 Lately in csharplang whenever we talk about struct feature. Rational struct often came up as an example And so I think that Rational actually useful. Normally approximate number with float. `3 * (1 / 3f)` is not became what we would expect. Floating point error need to be handled everywhere since we program in C Most of the time we care about precision than the range of number. If we could naturally use `Rational` in code it could make a lot of sense in many calculation logic And instead of always making Rational on our own then overriding all operators just about conversion between each number type. I think it could be useful enough to have it built in ```C# struct Rational64 { public int Number,Divider; } struct Rational128 { public long Number,Divider; } // Both will have long list of overload operator and implicit operator Rational64 f = 3; // implicit operator for int. Became Rational64(3,1) Rational64 f3 = 1 / f; // operator / will flip Number and Divider var three = 9 * f3; // 9 * 1 / 3 became Rational64(9,3). Should it always find LCM or just did it only when overflow? ``` ### ps We actually could handle internal value like this ```C# struct Rational64 { uint divider; public int Number; public uint Divider { get => divider + 1; set => divider = value - 1 } public double Value { get => Number / (double)Divider; } } ``` With this we will always handle negative only in number. And zeromemory will be `0 / 1` ### ps2 Should we also add `Irrational` and `Algebraic` object too? ```C# struct Irrational64 // Actually just 1 order of power for polynomial calculation { public Rational64 Value; public Rational64 Power; } struct Irrational128 { public Rational128 Value; public Rational128 Power; } class Algebraic128 // The real Irrational { public Rational128 Value = 0 / 1R; public Algebraic Power = null; // Unlike Irrational, can contain chain of power public static implicit operator double(Algebraic128 value) => Math.Pow((double)Value,Power ?? 1); } ``` I think most of calculation we use in graphics and physics simulation could be use `Irrational128` in general ### ps3 From csharplang repo I was propose this feature to have literal syntax. And there are suggestion that it should at least make the object itself pass corefx first +19522 area-Meta Disable desktop tests Disabling more desktop tests to get a clean run on CI. cc: @danmosemsft +19523 area-Infrastructure Fix Windows 7 outer loop runs Fix https://github.com/dotnet/corefx/issues/19480 `${osGroup}` is null per the log in the bug. It comes from `def osGroup = osGroupMap[osName]`. I see Windows 7 is not in `osGroupMap` hence null. But, Windows 10 was not there either (?) So this is not fully understood. Is there some way to validate this? +19524 area-System.Runtime Enable Environment.Exit tests and update DotNetHost and DotNetHostPolicy versions Related: https://github.com/dotnet/corefx/pull/19232 As I can't push into mazons PR I try it here. +19525 area-System.Net Enable System.Net.Requests.Tests to run in parallel again In helix the timeout is to small that the tests where timing out when running not in parallel. Parallelization was disabled to avoid hangs due to ServicePointManager.DefaultConnectionLimit small limit in Desktop, but we already take care of that by setting it to int.MaxValue, so we can enable paralellization again to avoid time out issues. The errors we where getting where like this one: ``` 2017-05-09 06:09:40,006: INFO: proc(54): run_and_log_output: Output: xUnit.net Console Runner (64-bit Desktop .NET 4.0.30319.42000) 2017-05-09 06:09:40,131: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Requests.Tests 2017-05-09 06:09:40,334: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Requests.Tests 2017-05-09 06:09:40,349: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Requests.Tests 2017-05-09 06:11:42,687: INFO: proc(54): run_and_log_output: Output: System.Net.Tests.HttpWebRequestTest.ContentLength_SetAfterRequestSubmitted_ThrowsInvalidOperationException(remoteServer: http://corefx-net.cloudapp.net/Echo.ashx) [FAIL] 2017-05-09 06:11:42,687: INFO: proc(54): run_and_log_output: Output: System.Net.WebException : The operation has timed out 2017-05-09 06:11:42,701: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-09 06:11:42,701: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpWebRequest.GetResponse() 2017-05-09 06:11:42,701: INFO: proc(54): run_and_log_output: Output: D:\repos\corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs(146,0): at System.Net.Tests.HttpWebRequestTest.ContentLength_SetAfterRequestSubmitted_ThrowsInvalidOperationException(Uri remoteServer) ``` Sometimes it wouldn't even show a test failure, it would just not finish running. cc: @danmosemsft +19526 area-System.Net Several new HttpListener tests are failing in CI "https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug/40/consoleText ``` System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart(uriPrefix: \""http://microsoft.com/\"") [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.HttpListenerException) Actual: (No exception was thrown) Stack Trace: D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.HttpListener\tests\HttpListenerPrefixCollectionTests.cs(264,0): at System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart(String uriPrefix) ``` cc: @hughbe " +19530 area-System.Net Disable newly added HttpListener test failing in CI https://github.com/dotnet/corefx/issues/19526 +19532 area-System.Net Cleaning up dead code in System.Net.Mail Relative to issue #17905. Code removed in Common was done after a grep to ensure it is not used anymore. Some resources were kept because they were used by other libraries. Routing to @karelz as asked. +19533 area-System.Security Handle the PNSE when opening LocalMachine\My store on Linux When an X509Data is being used as a source of hunting for a store certificate with a (matching) private key it fails on Linux with a PlatformNotSupportedException when trying to open the LocalMachine\My store. Since the code was already resilient to CryptographicException from the store open, add PlatformNotSupportedException to things it expects as ignorable. Fixes #19489. +19534 area-System.Net Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListenerException test fails on macOS ``` System.Net.Tests.HttpResponseStreamTests.Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListenerException(ignoreWriteExceptions: False) [FAIL] 10:29:33 Assert.Throws() Failure 10:29:33 Expected: typeof(System.Net.HttpListenerException) 10:29:33 Actual: (No exception was thrown) 10:29:33 Stack Trace: 10:29:33 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs(453,0): at System.Net.Tests.HttpResponseStreamTests.d__21.MoveNext() 10:29:33 --- End of stack trace from previous location where exception was thrown --- 10:29:33 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 10:29:33 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 10:29:33 --- End of stack trace from previous location where exception was thrown --- 10:29:33 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 10:29:33 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 10:29:33 --- End of stack trace from previous location where exception was thrown --- 10:29:33 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 10:29:33 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +19535 area-Meta [Announcement] [Discussion] Microsoft Security Advisory 4021279: Vulnerabilities in .NET Core, ASP.NET Core Could Allow Elevation of Privilege "# Microsoft Security Advisory 4021279: Vulnerabilities in .NET Core, ASP.NET Core Could Allow Elevation of Privilege ## Executive Summary Microsoft is releasing this security advisory to provide information about vulnerabilities in public .NET Core and ASP.NET Core. This advisory also provides guidance on what developers can do to update their applications correctly. .NET Core & ASP.NET Core are the next generation of .NET that provide a familiar and modern framework for web and cloud scenarios. These products are actively developed by the .NET and ASP.NET team in collaboration with a community of open source developers, running on Windows, Mac OS X and Linux. When .NET Core was released, the version number was reset to 1.0.0 to reflect the fact that it is a separate product from its predecessor -.NET. ## Discussion To discuss the ASP.NET Core issues please see https://github.com/aspnet/Mvc/issues/6246 To discuss the CoreFX Core issues please see https://github.com/dotnet/corefx/issues/19535 ## Issue CVEs and Description CVE | Description ----|------------- [CVE-2017-0248](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0248) | Security Feature Bypass [CVE-2017-0247](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0247) | Denial of Service [CVE-2017-0249](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0249) | Elevation of Privilege [CVE-2017-0256](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0256) | Spoofing ## Affected Software The vulnerabilities affect any Microsoft .NET Core project if it uses the following affected package versions. Package name | Package versions | Fixed package versions ---------------- | ------------------- | ------------------------- System.Text.Encodings.Web | 4.0.0
4.3.0 | 4.0.1
4.3.1 System.Net.Http | 4.1.1
4.3.1 | 4.1.2
4.3.2| System.Net.Http.WinHttpHandler | 4.0.1
4.3.0 | 4.0.2
4.3.1 System.Net.Security | 4.0.0
4.3.0 | 4.0.1
4.3.1 System.Net.WebSockets.Client | 4.0.0
4.3.0 | 4.0.1
4.3.1 Microsoft.AspNetCore.Mvc | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Core | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Abstractions | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.ApiExplorer | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Cors | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.DataAnnotations | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Formatters.Json | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Formatters.Xml | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Localization | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Razor.Host | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.Razor | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.TagHelpers | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.ViewFeatures | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 Microsoft.AspNetCore.Mvc.WebApiCompatShim | 1.0.0, 1.0.1, 1.0.2, 1.0.3
1.1.0, 1.1.1, 1.1.2 | 1.0.4
1.1.3 ## Advisory FAQ ### How do I know if I am affected? .NET Core and ASP.NET Core have two types of dependencies: direct and transitive. If your project has a direct or transitive dependency on any of the packages and versions listed above, you are affected. Note: As part of patching ASP.NET Core MVC we update every Microsoft.AspNetCore.Mvc.* package. If, for example, you have a dependency on `Microsoft.AspNetCore.Mvc` you should update to the appropriate version first (1.0.x should be updated to 1.0.4, 1.1.x should be updated to 1.1.3), and it will also update any other vulnerable ` Microsoft.AspNetCore.Mvc` dependency. ### NET Core Project formats .NET Core has two different project file formats, depending on what software created the project. 1. `project.json` is the format used in .NET Core 1.0 and Microsoft Visual Studio 2015. 2. `csproj` is the format used in .NET Core 1.1 and Microsoft Visual Studio 2017. You must ensure you follow the correct update instructions for your project type. ### Direct Dependencies Direct dependencies are dependencies where you specifically add a package to your project. For example, if you add the `Microsoft.AspNetCore.Mvc` package to your project then you have taken a direct dependency on` Microsoft.AspNetCore.Mvc`. Direct dependencies are discoverable by reviewing your `project.json` or `csproj` file. ### Transitive Dependencies Transitive dependencies occur when you add a package to your project that in turn relies on another package. For example, if you add the `Microsoft.AspNetCore.Mvc` package to your project it depends on the `Microsoft.AspNetCore.Mvc.Core` package (among others). Your project has a direct dependency on `Microsoft.AspNetCore.Mvc` and a transitive dependency on the `Microsoft.AspNetCore.Mvc.Core` package. Transitive dependencies are reviewable in the Visual Studio Solution Explorer window, which supports searching, or by reviewing the `project.lock.json` file contained in the root directory of your project for `project.json` projects or the `project.assets.json` file contained in the obj directory of your project for `csproj` projects. These files are the authoritative list of all packages used by your project, containing both direct and transitive dependencies. ## How do I fix my affected application? You will need to fix both direct dependencies and review and fix any transitive dependencies. The affected packages and versions in the previous “Affected Software” section include each vulnerable package, the vulnerable versions, and the patched versions --- **Note**: If you are using ASP.NET Core MVC in your projects you should first update the `Microsoft.AspNetCore.Mvc` version according to the affected versions table above. If you are currently using version 1.0.0, 1.0.1, 1.0.2 or 1.0.3 you should update your package version to 1.0.4. If you are using version 1.1.0, 1.1.1 or 1.1.2 you should update your package version to 1.1.3. This will update every MVC package to the fixed versions. --- ### Fixing Direct Dependencies – project.json/VS2015 Open your `project.json` file in your editor. Look for the dependencies section. Below is an example dependencies section: ``` json ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.1"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.1"", ""Microsoft.AspNetCore.Mvc "": ""1.0.1"", } ``` This example has three direct dependencies: `Microsoft.NETCore.App`, `Microsoft.AspNetCore.Server.Kestrel` and `Microsoft.AspNetCore.Mvc`. `Microsoft.NetCore.App` is the platform the application targets, you should ignore this. The other packages expose their version to the right of the package name. In our example, our non-platform packages are version 1.0.1. Review your direct dependencies for any instance of the packages and versions listed above. In the example above, there is a direct dependency on one of the vulnerable packages, `Microsoft.AspNetCore.Mvc` version 1.0.1. To update to the fixed package, change the version number to be the appropriate package for your release. In the example, this would be updating `Microsoft.AspNetCore.Mvc` to 1.0.4. After updating the vulnerable package versions, save your `project.json` file. The dependencies section in our example `project.json` would now look as follows: ```json ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.1"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.1"", ""Microsoft.AspNetCore.Mvc"": ""1.0.4"", } ``` If you are using Visual Studio and save your updated `project.json` file, Visual Studio will restore the new package version. You can see the restore results by opening the Output Window (Ctrl+Alt+O) and changing the Show output from drop-down list to Package Manager. If you are not using Visual Studio, open a command line and change to your project directory. Execute the `dotnet restore` command to restore your new dependency. After you have addressed all of your direct dependencies, you must also review your transitive dependencies. ### Fixing Direct Dependencies – csproj/VS2017 Open your `projectname.csproj` file in your editor, or right click the project in Visual Studio 2017 and choose `Edit projectname.csproj` from the content menu, where projectname is the name of your project. Look for `PackageReference` nodes. The following shows an example project file: ``` XML netcoreapp1.1 $(PackageTargetFallback);portable-net45+win8+wp8+wpa81; ``` The example has two direct package dependencies, as seen by the two `PackageReference` elements. The name of the package is in the Include attribute, and the package version number is in the Version attribute that is exposed to the right of the package name. The example shows two packages `Microsoft.AspNetCore` version 1.1.1, and `Microsoft.AspNetCore.Mvc.Core` version 1.1.2. Review your `PackageReference` elements for any instance of the packages and versions listed above. In the example above, there is a direct dependency on one of the vulnerable packages, `Microsoft.AspNetCore.Mvc` version 1.1.2. To update to the fixed package, change the version number to the appropriate package for your release. In the example, this would be updating `Microsoft.AspNetCore.Mvc` to 1.1.3. After updating the vulnerable package version, save your `csproj` file. The example `csproj` would now look as follows: ``` XML netcoreapp1.1 $(PackageTargetFallback);portable-net45+win8+wp8+wpa81; ``` If you are using Visual Studio and save your updated `csproj` file, Visual Studio will restore the new package version. You can see the restore results by opening the Output Window (Ctrl+Alt+O) and changing the Show output from drop-down list to Package Manager. If you are not using Visual Studio open a command line and change to your project directory. Execute the `dotnet restore` command to restore your new dependency. ### After updating your direct dependencies Recompile your application. If after recompilation you see a Dependency conflict warning, you must update your other direct dependencies to the appropriate version. For example if your project refers to `Microsoft.AspNetCore.Routing` with a version number of 1.0.1 when you update your `Microsoft.AspNetCore.Mvc` package to 1.0.4, compilation will throw: `NU1012 Dependency conflict. Microsoft.AspNetCore.Mvc.Core 1.0.4 expected Microsoft.AspNetCore.Routing >= 1.0.4 but received 1.0.1` To fix this, edit the version for the expected package to be the version expected by updating your `csproj` or `project.json` in the same way that you used to update the vulnerable package versions. After you have addressed all of your direct dependencies, you must also review your transitive dependencies. ### Reviewing Transitive Dependencies There are two ways to view transitive dependencies. You can either use Visual Studio’s Solution Explorer, or you can review your `project.lock.json` (project.json/VS2015) or `project.assets.json` (csproj/VS2017) file. #### Using Visual Studio Solution Explorer (VS2015) If you want to use Visual Studio 2015, open your project in Visual Studio 2015 and then press Ctrl+; to activate the search in Solution Explorer. Search for each of the vulnerable package names and make a note of the version numbers of any results you find. For example, searching for `Microsoft.AspNetCore.Mvc.Core` in an example project that contains a reference to `Microsoft.AspNetCore.Mvc` shows the following results in Visual Studio 2015. ![vs2015](https://cloud.githubusercontent.com/assets/796298/25858059/a1ae6624-348f-11e7-9ce9-ff2d25a3fc5b.png) The search results appear as a tree. In these results, you can see we have found references to `Microsoft.AspNetCore.Mvc`, version 1.0.1, ` vulnerable version. The first entry under the References heading refers to the target framework your application is using. This will be `.NETCoreApp`, `.NETStandard` or `.NET-Framework-vX.Y.Z` (where X.Y.Z is an actual version number) depending on how you configured your application. Under your target framework will be the list of packages you have directly taken a dependency on. In this example, the application takes a dependency on `Microsoft.AspNetCore.Mvc`. `Microsoft.AspNetCore.Mvc` in turn has leaf nodes that list its dependencies and their versions. In this case the `Microsoft.AspNetCore.Mvc` package takes a dependency on a vulnerable version of `Microsoft.AspNetCore.Mvc.Core` and numerous other packages. #### Manually reviewing project.lock.json (project.json/VS2015) Open the `project.lock.json` file in your editor. We suggest you use an editor that understands json and allows you to collapse and expand nodes to review this file; both Visual Studio and Visual Studio Code provide this functionality. If you are using Visual Studio the `project.lock.json` file is “under” the `project.json` file. Click the right pointing triangle, ▷, to the left of the `project.json` file to expand the solution tree to expose the `project.lock.json` file. The following image shows a project with the `project.json` file expanded to show the `project.lock.json` file. ![project lock json](https://cloud.githubusercontent.com/assets/796298/25858179/f6e01200-348f-11e7-8a77-7176d8dd3f03.png) Search the `project.lock.json` file for each of the vulnerable packages, using the format `AssemblyName/`. If you find any vulnerable assembly name in your search examine the line on which they are found, the version number is after the `/` and compare to the vulnerable versions table above. For example a search result that shows `Microsoft.AspNetCore.Mvc.Core/1.0.1` is a reference to v1.0.1 of `Microsoft.AspNetCore.Mvc.Core`. If your `project.lock.json` file includes references to any of the vulnerable packages shown above then you will need to fix the transitive dependencies. #### Fixing transitive dependencies (project.json/VS2015) If you have not found any reference to any vulnerable packages this means none of your direct dependencies depend on any vulnerable packages or you have already fixed the problem by updating the direct dependencies. If your transitive dependency review found references to any of the vulnerable packages you must add a direct dependency to the updated package to your `project.json` file to override the transitive dependency. Open your `project.json` and find the dependencies section. For example: ``` json ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.1"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.0"" } ``` For each of the vulnerable packages your search returned you must add a direct dependency to the updated version by adding it to the `project.json` file. You do this by adding a new line to the dependencies section, referring the fixed version. For example, if your search showed a transitive reference to the vulnerable `System.Net.Security` version 4.0.0 you would add a reference to the appropriate fixed version, 4.0.1. Edit the `project.json` file as follows: ``` json ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.1"", ""type"": ""platform"" }, ""System.Net.Security"": ""4.0.1"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.1"" } ``` After you have added direct dependencies to the fixed packages, save your `project.json` file. If you are using Visual Studio save your updated `project.json` file and Visual Studio will restore the new package versions. You can see the restore results by opening the Output Window (Ctrl+Alt+O) and changing the Show output from drop-down list to Package Manager. If you are not using Visual Studio open a command line and change to your project directory. Execute the `dotnet restore` command to restore your new dependencies. #### Using Visual Studio Solution Explorer (VS2017) If you want to use Solution Explorer, open your project in Visual Studio 2017, and then press Ctrl+; to activate the search in Solution Explorer. Search for each of the vulnerable package names and make a note of the version numbers of any results you find. For example, searching for `Microsoft.AspNetCore.Mvc.Core` in an example project that contains a package that takes a dependency on `Microsoft.AspNetCore.Mvc` shows the following results in Visual Studio 2017. ![vs2017](https://cloud.githubusercontent.com/assets/796298/25858816/8ecdc2b4-3491-11e7-9363-746804bb9832.png) The search results appear as a tree. In these results, you can see we have found references to `Microsoft.AspNetCore.Mvc.Core` version 1.1.2. Under the Dependencies node will be a NuGet node. Under the NuGet node will be the list of packages you have directly taken a dependency on and their versions. In this example, the application takes a direct dependency on `Microsoft.AspNetCore.Mvc`. `Microsoft.AspNetCore.Mvc` in turn has leaf nodes that list its dependencies and their versions. In the example the `Microsoft.AspNetCore.Mvc` package takes a dependency on a version of `Microsoft.AspNetCore.Mvc.ApiExplorer` which in turn takes a dependency on a vulnerable version of `Microsoft.AspNetCore.Mvc.Core`. #### Manually reviewing project.assets.json (VS2017) Open the `project.assets.json` file from your project’s obj directory in your editor. We suggest you use an editor that understands json and allows you to collapse and expand nodes to review this file; both Visual Studio and Visual Studio Code provide this functionality. Search the `project.assets.json` file for each of the vulnerable packages, using the format `AssemblyName/`. If you find any vulnerable assembly name in your search examine the line on which they are found, the version number is after the `/` and compare to the vulnerable versions table above. For example a search result that shows `Microsoft.AspNetCore.Mvc.Core/1.1.0` is a reference to v1.1.0 of `Microsoft.AspNetCore.Mvc.Core`. If your `project.assets.json` file includes references to any of the vulnerable packages shown above then you will need to fix the transitive dependencies. If you have not found any reference to any vulnerable packages this means none of your direct dependencies depend on any vulnerable packages or you have already fixed the problem by updating the direct dependencies. If your transitive dependency review found references to any of the vulnerable packages you must add a direct dependency to the updated package to your `csproj` file to override the transitive dependency. Open your `projectname.csproj` file in your editor, or right click on the project in Visual Studio 2017 and choose Edit `projectname.csproj` from the content menu, where `projectname` is the name of your project. Look for `PackageReference` nodes, for example: ``` xml netcoreapp1.1 $(PackageTargetFallback);portable-net45+win8+wp8+wpa81; ``` For each of the vulnerable packages your search returned you must add a direct dependency to the updated version by adding it to the `csproj` file. You do this by adding a new line to the dependencies section, referring the fixed version. For example, if your search showed a transitive reference to the vulnerable `System.Net.Security` version 4.3.0 you would add a reference to the appropriate fixed version, 4.3.1. ``` xml netcoreapp1.1 $(PackageTargetFallback);portable-net45+win8+wp8+wpa81; ``` After you have added the direct dependency reference, save your `csproj` file. If you are using Visual Studio, save your updated `csproj` file and Visual Studio will restore the new package versions. You can see the restore results by opening the Output Window (Ctrl+Alt+O) and changing the Show output from drop-down list to Package Manager. If you are not using Visual Studio, open a command line and change to your project directory. Execute the `dotnet restore` command to restore your new dependencies. ### Rebuilding your application Finally rebuild your application, test as you would do normally and redeploy using your favored deployment mechanism. ## Other Information ### Reporting Security Issues If you have found a potential security issue in .NET Core, please email details to secure@microsoft.com. Reports may qualify for the .NET Core Bug Bounty. Details of the .NET Core Bug Bounty including Terms and Conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty). ### Support You can ask questions about this issue on GitHub in the .NET Core or ASP.NET Core organizations. These are located at https://github.com/dotnet/ and https://github.com/aspnet/. The Announcements repo for each product (https://github.com/dotnet/Announcements and https://github.com/aspnet/Announcements) will contain this bulletin as an issue and will include a link to a discussion issue where you can ask questions. ### Disclaimer The information provided in this advisory is provided ""as is"" without warranty of any kind. Microsoft disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. In no event shall Microsoft Corporation or its suppliers be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if Microsoft Corporation or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply. ### Acknowledgments Microsoft [thanks](https://go.microsoft.com/fwlink/?LinkId=21127) the following for working with us to help protect customers: - David Fernandez of [Sidertia Solutions](https://www.sidertia.com/Home) for reporting the ASP.NET Core Denial of Service Vulnerability (CVE-2017-0247) - Joonwoo Yu, Hyoung-Kee Choi of [Sungkyunkwan University](http://hit.skku.edu/~hkchoi/) for reporting the .NET Security Feature Bypass (CVE-2017-0248) - [Mikhail Shcherbakov](https://www.linkedin.com/in/mikhailshcherbakov) for reporting the ASP.NET Core Spoofing Vulnerability (CVE-2017-0256) ### Revisions - V1.0 (May 9, 2017): Advisory published. - V1.1 (May 10, 2017): Advisory revised to include a table of issue CVEs and their descriptions. This is an informational change only." +19536 area-System.Security Create a document describing x-plat crypto This is a fairly coarse infodump of the use of .NET Cryptography across the various platforms. The intention here is that it is technically correct, and we can make it prettier over time. +19538 area-Infrastructure Create done marker directory Otherwise the done marker isn't created in init-tools.sh, causing the tools to be restored on each build. +19539 area-System.Net Remove_PrefixExistsStarted_ReturnsTrue failure in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/7597/consoleFull#145732169079fe3b83-f408-404c-b9e7-9207d232e5fc > System.Net.Tests.HttpListenerPrefixCollectionTests.Remove_PrefixExistsStarted_ReturnsTrue [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Http.HttpRequestException) Actual: (No exception was thrown) Stack Trace: --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src/System.Net.HttpListener/tests/HttpListenerPrefixCollectionTests.cs(390,0): at System.Net.Tests.HttpListenerPrefixCollectionTests.d__28.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +19540 area-System.Net Disable more recently added HttpListener tests Also failing multiple CI legs. Related to #19526 cc: @danmosemsft, @hughbe +19543 area-System.Net "Desktop: ""System.Net.Tests.HttpListenerPrefixCollectionTests"" failed" System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd Failed with error: ``` Assert.Throws() Failure\r\nExpected: typeof(System.Net.HttpListenerException)\r\nActual: (No exception was thrown) StackTrace: at System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd(String uriPrefix) in D:\j\workspace\outerloop_net---71bc9469\src\System.Net.HttpListener\tests\HttpListenerPrefixCollectionTests.cs:line 276 ``` This failed on both Jenkins and Helix. #### Jenkins https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_debug_prtest/4880/testReport/junit/System.Net.Tests/HttpListenerPrefixCollectionTests/Remove_PrefixExistsStarted_ReturnsTrue/ #### Helix https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170509.02/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerPrefixCollectionTests~2FAdd_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd(uriPrefix:%20%5C%22http:~2F~2Fmicrosoft.com~2F%5C%22) cc: @davidsh +19544 area-System.Data adding SqlParameter constructor I added SqlParmeter constructor to resolve this issue: *** Someone is trying to use good ol’ DataSets with a .NET Standard 2.0 class library. * The designer doesn’t work in the new project system (it doesn’t like that the core assembly isn’t mscorlib) * Copying over the generated code from .NET Framework 4.6.1 doesn’t work * The designer uses a bunch of types that .NET Standard 2.0 doesn’t have (e.g. TypedTableBase, EnumerableRowCollection etc) * Worked this around by creating a .NET Framework 2.0 project and regenerated the code there * This fixes all compilation errors except for [one constructor on SqlParameter](https://msdn.microsoft.com/en-us/library/t547y10h(v=vs.110).aspx) +19545 area-System.Diagnostics "Desktop: ""System.Diagnostics.Tests.ActivityDateTimeTests.StartStopReturnsPreciseDuration"" failed" System.Diagnostics.Tests.ActivityDateTimeTests.StartStopReturnsPreciseDuration Failed with error: ``` Assert.True() Failure Expected: True Actual: False STACK TRACE: at System.Diagnostics.Tests.ActivityDateTimeTests.StartStopReturnsPreciseDuration() in D:\j\workspace\outerloop_net---71bc9469\src\System.Diagnostics.DiagnosticSource\tests\ActivityDateTimeTests.cs:line 22 ``` It fails only in Release mode. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_release/46/testReport/junit/System.Diagnostics.Tests/ActivityDateTimeTests/StartStopReturnsPreciseDuration/ +19548 area-System.Reflection System.Reflection.Metadata 1.4.2 Package references wrong System.Collection.Immutable assembly version Hi The System.Reflection.Metadata 1.4.2(NuGet Package) claims to reference System.Collections.Immutable >= 1.3.1. The System.Collection.Immutable 1.3.1 (NuGet Package) contains the assembly version 1.2.1.0 but the System.Reflection.Metadata.dll from 1.4.2 references 1.2.0.0. This leads to an really unfortunate problem with Roslyn which needs both packages, but uses the correct System.Collections.Immutable.dll(1.2.1.0) and my program crashes because it can't find the System.Collections.Immutable.dll(1.2.0.0) which is required by System.Reflection.Metadata.dll. Please help :) +19550 area-System.Runtime Fail to parse the valid DateTime string to DateTime "Throw FormatException when convert the string to DateTime . ``` var dateTimeFormat = new DateTimeFormat(""hh:mm:ss.ff tt"", CultureInfo.CreateSpecificCulture(""es-AR"")); DateTime.ParseExact(""03:58:32.00 a.m."", dateTimeFormat.FormatString, dateTimeFormat.FormatProvider, dateTimeFormat.DateTimeStyles); DateTime.ParseExact(""03:58:32.00 a. m."", dateTimeFormat.FormatString, dateTimeFormat.FormatProvider, dateTimeFormat.DateTimeStyles); ``` Either ""03:58:32.00 a.m."" ""03:58:32.00 **a. m.**"" will fail when converted to DateTime depend on the OS. It will cause the serialization/deserialization through different machines fail." +19551 area-System.Net System.Net.Internals.SocketType is a duplicated public type in implementation assemblies in netcoreapp Include public under ifdef here: https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Net/Sockets/SocketType.cs#L12 EG: ```C# #if SYSTEM_NET_SOCKETS_DLL namespace System.Net.Sockets { public #else namespace System.Net.Internals { internal #endif // Specifies the type of socket an instance of the System.Net.Sockets.Socket class represents. enum SocketType { ``` When doing this, please remove the exception: https://github.com/dotnet/corefx/pull/19502/files#diff-74b55c30c79e12e99b3ceb25668cc292R5 +19552 area-System.Xml XDocumentExtensions is duplicated in System.Private.Xml.Linq and System.Xml.XPath.XDocument. The type is exposed from System.Xml.XPath.XDocument. If this is intentional, please make the one in System.Private.Xml.Linq internal. Also, consider consolidating the code: https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Private.Xml.Linq/src/System/Xml/XPath/XDocumentExtensions.cs https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Xml.XPath.XDocument/src/System/Xml/XPath/XDocumentExtensions.cs When doing this, please remove the exception: https://github.com/dotnet/corefx/pull/19502/files#diff-74b55c30c79e12e99b3ceb25668cc292R8 /cc @weshaggard +19553 area-System.IO Overlapped types are duplicated between Overlapped and corelib IOCompletionCallback, NativeOverlapped, Overlapped, PreAllocatedOverlapped, and ThreadPoolBoundHandle are duplicated between Overalapped and System.Private.CoreLib. I believe we should typeforward these instead. When doing this, please remove the exceptions: https://github.com/dotnet/corefx/pull/19502/files#diff-74b55c30c79e12e99b3ceb25668cc292R11 /cc @weshaggard +19554 area-System.Data DBNull is duplicated between System.Data.Common and CoreLib System.DBNull exists as public in both System.Data.Common.dll and System.Private.CoreLib.dll in netcoreapp2.0. This can cause type exchange issues as well as compile errors for runtime compilation. I believe System.Data.Common.dll should type-forward this type. When doing this, please remove the exception: https://github.com/dotnet/corefx/pull/19502/files#diff-74b55c30c79e12e99b3ceb25668cc292R17 /cc @weshaggard +19555 area-System.Net System.Net.TransportType is duplicated in implementation assemblies System.Net.Sockets and System.Security.Permissions This was introduced by https://github.com/dotnet/corefx/commit/33df5e0560f006e8298fd42b441b92b2d5eac671. /cc @jguady It looks like it's completely internal in sockets so I believe the Sockets implementation should be marked internal. When doing this, please remove the exception: https://github.com/dotnet/corefx/pull/19502/commits/142932adcd9312804dbe94ee83e27b9aecf653d3#diff-18ad03aca90bc197f8428e086088fcc6 +19556 area-Serialization Fix rd.xml for Serialization Reflection Only Mode. Reflection based serialization needs to reflect some types or methods defined in `System.Private.DataContractSerialization.dll`. #19006 added rd.xml to System.Runtime.Serialization.*.ReflectionOnly.Tests. Many tests passed after that fix. But that fix caused the test projects to not represent actual customer scenarios. The PR changes `System.Private.DataContractSerialization.rd.xml` to keep necessary metadata and removes the rd.xml for the test projects. Fix #19067 +19557 area-System.Net Make SocketType internal in all but Sockets assembly Fixes https://github.com/dotnet/corefx/issues/19551 cc: @ericstj, @davidsh, @CIPop +19558 area-System.Net Make TransportType internal in Sockets assembly Fixes https://github.com/dotnet/corefx/issues/19555 cc: @ericstj, @davidsh, @CIPop +19560 area-Infrastructure Make the Initilize BuildTools during build.cmd less intensive. "When I am running build.cmd my computer will lag during the ""Initilizing BuildTools"" step. This lag has happened on two of my computers so far. The lag, specifically, slows down Visual Studio and firefox. The slowdown in firefox is evident because youtube will lag and text input is delayed. I don't know if this is a problem with other people but this lag is infuriating when I'm trying to use my computer for other activities while building corefx." +19561 area-System.Runtime Add perf tests for Random.cs. Added missing performance tests for Random.cs. This is part of the work to expand performance tests for System.Runtime.Extensions. Issue: #18765 @karelz @JeremyKuhne @AlexGhiondea +19562 area-System.Runtime Reference official targeting pack for 4.7 (version 1.0.1) Following up on PR https://github.com/dotnet/corefx/pull/18519 which used the pre-release targeting pack. Alex published the new targeting pack on myget (as version 1.0.1). Fixes https://github.com/dotnet/corefx/issues/18518 @AlexGhiondea @ericstj @weshaggard for review. Thanks +19564 area-Serialization Fix XmlSerializer timespan tests for any full framework version This fixes XmlSerializer tests that where hitting the TimeSpan bug that is fixed through a switch value. cc: @danmosemsft +19566 area-System.Collections HashSet.GetOrAdd(T) There are many times when there is a custom equality comparison being done but I need access to the original instance. What I'd like: ```c# var mergedItems = new HashSet(); foreach (var item in items) { mergedItems.GetOrAdd(item).RelatedInfo.Add(x); } public sealed class Item : IEquatable { public DateTime Date { get; } public int Amount { get; } public List RelatedInfo { get; } public bool Equals(Item other) => other != null && other.Date == Date && other.Amount == Amount; public override bool Equals(object obj) => obj is Item item && Equals(item); public override int GetHashCode() => // ... } ``` Today I'm forced to use a Dictionary which duplicates storage of the key for no reason. A dictionary is also wasteful because it has to do two hash lookups, one for `TryGetValue` and one for `Add`: ```c# var mergedItems = new Dictionary(); foreach (var item in items) { if (mergedItems.TryGetValue(item, out var otherItem)) mergedItems.Add(item, otherItem = item); otherItem.RelatedInfo.Add(x); } ``` This is no better; it's a lot more to maintain, unnecessarily coupled to the definition of equality, it's still duplicate storage of the key, and it's still duplicating the number of hash lookups: ```c# var mergedItems = new Dictionary<(DateTime, int), Item>(); foreach (var item in items) { if (mergedItems.TryGetValue((item.Date, item.Amount), out var otherItem)) mergedItems.Add((item.Date, item.Amount), otherItem = item); otherItem.RelatedInfo.Add(x); } ``` KeyedCollection is the worst of all because in addition to the dictionary, it keeps a list I'll never use. +19567 area-System.Security System.Security.Cryptography.Xml.Tests now at 0 failures on ILC. The usual suspects: - Checking for Exception.ParamNames - Types obtained through CryptoConfig being reduced away. - Unnecessary use of GetCallingAssembly() in TestHelper - XmlDsigXsltTransform relies on XslCompiledTransform which relies heavily on Reflection.Emit. Let me know if you want an issue opened on this, though it looks pretty fundamental... +19568 area-Infrastructure [release/2.0.0] Exclude UAP from packages in rel/2.0.0 **release/2.0.0 only** do not merge to master. Fixes #19316 This excludes all UAP files and dependencies from packages for 2.0.0 release. +19570 area-System.Threading Desktop: System.Threading.Tests.SynchronizationContextTests.WaitTest is failing System.Threading.Tests.SynchronizationContextTests.WaitTest Is failing with error: ``` MESSAGE: Assert.Throws() Failure\r\nExpected: typeof(System.DuplicateWaitObjectException)\r\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at System.Threading.Tests.SynchronizationContextTests.WaitTest() in D:\j\workspace\netfx_windows---50c21bdb\src\System.Threading\tests\SynchronizationContextTests.cs:line 23 ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/netfx_windows_nt_release_prtest/1/testReport/junit/System.Threading.Tests/SynchronizationContextTests/WaitTest/ cc: @stephentoub +19572 area-System.Text Port the Html Encoder fix from VSO branch This is the fix we have done in VSO branch and now we are porting it to corefx after we released the fix in the servicing packages +19573 area-Infrastructure Disable RID-specific Helix runs. Will need to coordinate removing the actual build/publish steps with Core-Setup / CLI teams, making sure they move to portable packages. This simply prevents the tests from running. Once all of them are confirmed gone, we can remove this from the master view of CoreFX runs. @weshaggard +19575 area-System.Xml Fix duplicated XDocumentExtensions Fixes https://github.com/dotnet/corefx/issues/19552 cc: @krwq @ericstj @danmosemsft +19579 area-System.Net Fix failing HttpListener tests "- Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart: connecting to ""http://microsoft.com/"" was seemingly allowed in CI. - Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd: connecting to ""http://microsoft.com/"" was seemingly allowed in CI. - Remove_PrefixExistsNotStarted_ReturnsTrue: this test shouldn't fail in CI, I reckon it was just disabled alongside the actual bad test (Remove_PrefixExistsStarted_ReturnsTrue) - Remove_PrefixExistsStarted_ReturnsTrue: a race condition: listener may not have actually stopped listening by the time we try to connect. Fixes #19526 " +19580 area-System.Net System.Net.Requests test hanging sometimes on desktop This is not all the time but they are hanging on some PRs and builds. Here is the console log of a failure: https://ci.dot.net/job/dotnet_corefx/job/master/job/netfx_windows_nt_release_prtest/12/consoleFull#4967889112d31e50d-1517-49fc-92b3-2ca637122019 cc: @davidsh +19582 area-System.Net Disable HttpWebRequestTests Skipping them on desktop while the failure is investigated since we are hitting this a lot recently on CI. #19580 cc: @davidsh @stephentoub +19583 area-System.Net Ping API calls are failing in appcontainer with access denied They don't fail that way in ILC https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.01/workItem/System.Net.Ping.Functional.Tests Check we have the internet capability. Whatever manifest we use for our test app, it should enable all capabilities. @AlexGhiondea where is it? cc @ViktorHofer +19584 area-System.Net HttpWebRequest tests hardened & RequestStream tests disabled on Desktop Fixes https://github.com/dotnet/corefx/issues/19580 RequestStream tests aren't behaving correctly on Desktop and hang pretty often. Will follow up tomorrow and analyze the root cause. Tested Innerloop in a loop 100 times Tested Outerloop in a loop 100 times thanks @safern for help! +19585 area-System.Runtime System.Exception is not Serializable on UWP We should mark the [`System.Exception`](https://github.com/dotnet/corert/blob/26413145abcbdd49468db230a6f29784494f6f46/src/Runtime.Base/src/System/Exception.cs#L9) on UWP with [Serializable]. This blocks serialization of exception types on UWP. And `Exception.GetObjectData` is throwing `NotImplementedException`. +19586 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersionDiffersFromServer_ThrowsException failed with ""System.Security.Authentication.AuthenticationException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersionDiffersFromServer_ThrowsException(allowedProtocol: Tls12, acceptedProtocol: Tls11, exceptedServer...` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IOException)\r Actual: typeof(System.Security.Authentication.AuthenticationException): A call to SSPI failed, see inner exception. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.Test.Common.LoopbackServer.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.01 (Portable Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170510.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_AllowedSSLVersionDiffersFromServer_ThrowsException(allowedProtocol:%20Tls12,%20acceptedProtocol:%20Tls11,%20exceptedServer... +19587 area-System.Console "Test: ConsoleEncoding/TestValidEncodings failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `ConsoleEncoding/TestValidEncodings` has failed. System.IO.IOException : The handle is invalid Stack Trace: at System.ConsolePal.SetConsoleOutputEncoding(Encoding enc) at System.Console.set_OutputEncoding(Encoding value) at ConsoleEncoding.<>c.b__2_0(Encoding encoding) at ConsoleEncoding.TestValidEncodings() Build : Master - 20170510.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.01/workItem/System.Console.Tests/analysis/xunit/ConsoleEncoding~2FTestValidEncodings +19588 area-System.Console "Test: NegativeTesting/OpenStandardErrorNegativeTests failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `NegativeTesting/OpenStandardErrorNegativeTests` has failed. Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: (No exception was thrown) Stack Trace: at NegativeTesting.NegativeConsoleOutputTests(Stream stream) at NegativeTesting.OpenStandardErrorNegativeTests() Build : Master - 20170510.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.01/workItem/System.Console.Tests/analysis/xunit/NegativeTesting~2FOpenStandardErrorNegativeTests +19589 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessModuleTests/Modules_Get_ContainsHostFileName failed with ""Xunit.Sdk.ContainsException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessModuleTests/Modules_Get_ContainsHostFileName` has failed. Assert.Contains() Failure\r Not found: (filter expression)\r In value: d__34 [System.Diagnostics.ProcessModule (XUnit.Runner.Uap.exe), System.Diagnostics.ProcessModule (ntdll.dll), System.Diagnostics.ProcessModule (KERNEL32.DLL), System.Diagnostics.ProcessModule (KERNELBASE.dll), System.Diagnostics.ProcessModule (ucrtbase.dll), ...] Stack Trace: at System.Diagnostics.Tests.ProcessModuleTests.Modules_Get_ContainsHostFileName() Build : Master - 20170510.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessModuleTests~2FModules_Get_ContainsHostFileName +19590 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/Verbs_GetWithExeExtension_ReturnsExpected failed with ""Xunit.Sdk.ContainsException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/Verbs_GetWithExeExtension_ReturnsExpected` has failed. Assert.Contains() Failure\r Not found: open\r In value: String[] [] Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.Verbs_GetWithExeExtension_ReturnsExpected() Build : Master - 20170510.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FVerbs_GetWithExeExtension_ReturnsExpected +19591 area-System.IO "Test: System.IO.Tests.Directory_GetEntries_CurrentDirectory/CurrentDirectory failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.Directory_GetEntries_CurrentDirectory/CurrentDirectory` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.IO.Tests.Directory_GetEntries_CurrentDirectory.CurrentDirectory() Build : Master - 20170510.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.Directory_GetEntries_CurrentDirectory~2FCurrentDirectory +19592 area-Meta Interfaces for Future APIs Hi, Thanks for the great product, and specially the coming v2.0. It would great to have in v2.0 interfaces for most of what is coming in v3, v4, v5, v6 of .net core. For example all the generic collections, ot the IClonable or any other general utility apis, that you don't have time to implement in the current version i.e. v2.0. As this will help current nuget/plugin developers to code their classes to implement those interfaces, and weather you (.net team) or others implement them, its just a matter of injecting the implementation, instead of re-coding a lot of the project links/coupling, and it will eliminate the need that each developer implement his own interface for later linking them with others or his own implementation. As each interface done by different developers, even if it has the same functions, it will be considered different, because its from different assemblies. Regards. +19593 area-System.Net "System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart(uriPrefix: \""http://a08196d3572648a99e9d3669ecdda58c/\"") fails in CI on mac OSX" "As discussed in https://github.com/dotnet/corefx/pull/19579 ```cs public static IEnumerable InvalidPrefix_TestData() { // [ActiveIssue()] if (!PlatfomDetection.IsOSX) { yield return new object[] { $""http://{Guid.NewGuid().ToString(""N"")}/"" }; } } [Theory] [MemberData(nameof(InvalidPrefix_TestData))] public void Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart(string uriPrefix) { var listener = new HttpListener(); listener.Prefixes.Add(uriPrefix); Assert.Equal(1, listener.Prefixes.Count); Assert.True(listener.Prefixes.Contains(uriPrefix)); Assert.Throws(() => listener.Start()); } ``` This test fails with mac OSX: ``` MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.Net.HttpListenerException)\nActual: (No exception was thrown) +++++++++++++++++++ STACK TRACE: at System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart(String uriPrefix) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/tests/HttpListenerPrefixCollectionTests.cs:line 264 ```" +19594 area-Infrastructure Use Tizen dotnet-core myget in Tizen CI Removed related workaround codes Related issue : https://github.com/dotnet/coreclr/issues/11248 +19596 area-System.Net Why have a 302 Exception when i put a request Url:https://xxxx.xxxxx.xxxxxx.com/ Use:~\.nuget\packages\system.net.requests\4.3.0\ref\netstandard1.3\System.Net.Requests.dll Exception.Message:The remote server returned an error: (302) Moved Temporarily. Exception.StackTrace: at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.WebRequest.<>c.b__37_2(IAsyncResult iar) at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requiresSynchronization) ``` private static HttpWebResponse _Request(string url) { HttpWebRequest request = WebRequest.CreateHttp(url); HttpWebResponse response =(HttpWebResponse)request.GetResponseAsync().Result; return response; } ``` +19597 area-System.Threading Fix duplicated types in Unix build of System.Threading.Overlapped Fixes https://github.com/dotnet/corefx/issues/19553. All of the types for Overlapped are in coreclr, so we shouldn't be building a PNSE assembly on Unix and instead just type forwarding everything. I wasn't sure if we should be consolidating the builds, as at this point there shouldn't be a diff between the Windows and Unix netcoreapp builds, but for now I left it as is. We should look at the implementations in coreclr to see if we want to add any explicit PNSEs there in its Unix build. cc: @kouvel, @ericstj, @jkotas +19598 area-System.Net Fix remaining TODOs for SocketTaskExtensions tests Fixes https://github.com/dotnet/corefx/issues/17690 cc: @cipop, @davidsh +19599 area-System.Threading Proposal: Task.WhenAllSuccessfulOrAnyFailed Task currently exposes two When helpers: WhenAll and WhenAny. These are the most commonly needed combinators, but there's another that's quite helpful, especially in tests: a combinatory that asynchronously waits for either all of the tasks to complete successfully or for the first one that doesn't complete successfully. This is particularly valuable when writing tests that involve related asynchronous operations, such as in networking, for example where you want to have an asynchronous client operation (e.g. socket.ConnectAsync) and an asynchronous server operation (e.g. socket.AcceptAsync) that are directly dependent on each other... using WhenAll can lead to deadlocks if one of those operations fails causing the other to wait forever. Proposal: ```C# public class Task { public static Task WhenAllSuccessfulOrAnyFailed(params Task[] tasks); public static Task WhenAllSuccessfulOrAnyFailed(IEnumerable tasks); ... } ``` From a behavioral standpoint, it would be as if code like this were used: ```C# var remaining = new List(tasks); while (remaining.Count > 0) { Task t = await Task.WhenAny(remaining).ConfigureAwait(false); remaining.Remove(t); t.GetAwaiter().GetResult(); } ``` but with a more efficient implementation. I'm not sure I love the name either, but I'm sure we can come up with something. +19602 area-System.Net Fix 40 or so System.Net.Mail.Functional.Tests failures on ILC "SmtpClient class is trying to fill in the ""client host name"" checkbox for the HELO message. By default, it tries to use the local host name but this is PNS on .Net Native. This one hiccup makes SmtpClient unusable. Since the client host name is apparently discretionary anyway, fall back to LocalHost if the actual local host is PNS (or NS - why not) as we do in the garbled-Unicode case." +19603 area-System.Net Rewrite SendFile_APM test The test sporadically failed with a timeout, but little details are available about why. Most likely it's due to a failure in one of the operations that causes the other to hang. It could also be due to errors getting eaten. I've rewritten the test to both make it simpler code and to address these issues; if it fails again, we'll have a better idea of why. Closes https://github.com/dotnet/corefx/issues/19517 cc: @geoffkizer, @CIPop, @davidsh, @Priya91 +19604 area-System.Net Two Async tests in System.Net.Mail.Functionality.Tests assert or hang on ILC. "(Reproability is contingent on https://github.com/dotnet/corefx/pull/19602 going in). -method System.Net.Mail.Tests.SmtpClientTest.TestCredentialsCopyInAsyncContext -method System.Net.Mail.Tests.SmtpClientTest.TestMailDeliveryAsync These tests are currently disabled on AoT runs so we can get results for the other tests. This issue gives me an issue # I can put in the comment. This assertion crashes the test: src\System.Net.Sockets\src\System\Net\Sockets\SocketPal.Windows.cs ``` public static SocketError GetLastSocketError() { int win32Error = Marshal.GetLastWin32Error(); if (win32Error == 0) { NetEventSource.Fail(null, ""GetLastWin32Error() returned zero.""); <-- Really? } return (SocketError)win32Error; } ``` Commenting out the NetEventSource.Fail() results in a test that hangs. " +19605 area-System.Net Remove SmtpClient workaround for HostName being PNSE on .Net Native. Workaround was added in https://github.com/dotnet/corefx/pull/19602 to avoid blocking testing of SmpClient on HostName being restored for .Net Native. +19608 area-System.Net Fix another 4 System.Net.Mail.Functional.Tests failures on ILC +19609 area-System.Xml System.Xml.Xsl.XslTransformApi.Tests at 0 failues on ILC. +19610 area-System.Net System.Net.Mail does not encode headers on code point boundaries "In order for unicode headers to be transmitted over SMTP, they must be encoded using the encoding outlined in RFC-2047. This is sometimes known as ""Encoded-Word"" or ""Q-Encoding."" SMTP headers should also be limited in line length, and RFC-2047 sets a maximum line length of 76 characters. Therefore, when encoding unicode headers, it is typical to need to fold headers onto multiple lines. A common example might be something like the following: ```plain Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= ``` It is really important to note that the base64 encoding in the above example uses two different character sets, this is not a particularly common example, but this is definitely legal. The binary data for an individual code point should never be split between two ""Encoded Words."" A more practical example is Unicode Emojis. Emojis frequently span multiple (and variable) bytes. In the case of UTF-8 individual code-points could be 1-4 bytes. Splitting emoji bytes on to multiple lines can result in the ""unicode block (�)"" appearing in some mail clients because the multi-byte characters are decoded separately. In other cases, spurious spaces are included. The current `Base64Stream` (and `QuotedPrintableStream`, it would seem) do not account for the byte boundaries of the encoded code points: https://github.com/dotnet/corefx/blob/master/src/System.Net.Mail/src/System/Net/Base64Stream.cs#L230-L246 At this level, the streams are (mostly) unaware of any text encoding semantics, and just write as many bytes as possible on each line. Instead, these encoding streams need to account for code-point byte boundaries, and fold the line preemptively, if only part of a code point can be included in the line before the next line fold would occur. I'm a little bit concerned that the stream is the wrong level of abstraction for this type of handling. Perhaps including some sort of ""look-ahead"" on the `WriteState` is a better option for determining the next smallest block of bytes that can be written is. I have a fork of Corefx and will be fixing it on my own. Please let me know if this is something the team is interested in fixing, and I can provide a patch." +19611 area-System.Net Why have a 302 Exception when i put a request @Circlecirclecircle commented on [Wed May 10 2017](https://github.com/dotnet/standard/issues/336) Url:https://xxxx.xxxxx.xxxxxx.com/ Exception.Message:The remote server returned an error: (302) Moved Temporarily. Exception.StackTrace: at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.WebRequest.<>c.b__37_2(IAsyncResult iar) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) ``` private static HttpWebResponse _Request(string url) { HttpWebRequest request = WebRequest.CreateHttp(url); HttpWebResponse response =(HttpWebResponse)request.GetResponseAsync().Result; return response; } ``` +19612 area-System.Security System.Security.Permissions.Tests at 0 failures on ILC. (An impressive amount of testing being done for a component that is basically a reference assembly masquerading as an implementation assembly...) - The usual ParamName testing throttling. - If you must create bogus parameter objects just to prove that Security.Permissions apis are nops, it can be done in a way that doesn't force internal framework Reflection. +19613 area-System.Net Reenable RequestStream tests and address HttpWebRequest PR feedback Found the root cause why CI was hanging yesterday. `RequestStreamTest` class fires ~20 different tests in parallel. They all have something in common, they call `HttpWebRequest.GetRequestStream()`. As the limit in netfx (`ServicePointManager.DefaultConnectionLimit`) is very low, the test execution timed out. Related: https://github.com/dotnet/corefx/pull/19584 See here: https://github.com/dotnet/corefx/issues/16928 +19615 area-System.Net Disable SendAsync_ReadFromSlowStreamingServer_PartialDataReturned test on netfx This test sends some of the data planned by Content-Length but keeps the connection open; the client is then supposed to read that data and verifies that it got only what was sent and didn't hang. But it's hanging on netfx. The problem is that ConnectStream.BeginRead on netfx first reads what it has buffered, and if it doesn't have buffered as much as was asked for, it then issues an asynchronous read rather than just returning what it has. This netfx behavior diverges from expectations around how Stream is meant to behave: Stream.Read/ReadAsync can block (asynchronously in the Async case) until there's any data available, but once there is data available they should return it rather than waiting arbitrarily long for more. Closes https://github.com/dotnet/corefx/issues/18864 cc: @davidsh +19618 area-System.IO "Desktop: ""System.IO.Pipes.Tests.AnonymousPipeTest_CrossProcess.PingPong"" failed" ``` MESSAGE: Assert.Equal() Failure\r\nExpected: 42\r\nActual: -532462766 +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 188 at System.IO.Pipes.Tests.AnonymousPipeTest_CrossProcess.PingPong() in D:\j\workspace\outerloop_net---903ddde6\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.CrossProcess.cs:line 32 ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/lastCompletedBuild/testReport/System.IO.Pipes.Tests/AnonymousPipeTest_CrossProcess/PingPong/ cc: @ianhays +19619 area-System.Net [Desktop] Test failures: System.Net.Tests.HttpListenerPrefixCollectionTests / Add_InvalidPrefix* Tests affected `System.Net.Tests.HttpListenerPrefixCollectionTests`: * `Add_InvalidPrefixNotStarted_ThrowsHttpListenerExceptionOnStart` * `Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd` Failed again in Desktop daily run. I was not able to get a local repro, this seems to be more like the configuration on the CI machines but not sure what it is. Note that the only test case that failed was: https://github.com/dotnet/corefx/blob/master/src/System.Net.HttpListener/tests/HttpListenerPrefixCollectionTests.cs#L245 So maybe removing that case when PlatformDetection.IsFullFramework for now? https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/51/testReport/ cc: @hughbe @stephentoub +19620 area-System.Net Disable some HttpListener tests (again) cc: @safern, @hughbe #19619 +19622 area-System.Net Fixing OID EKU validation. cc @CIPop @weshaggard +19623 area-System.Runtime Add performance tests for Environment.cs. Add performance tests for Environment.cs. Part of #18765 Unsure if: ``` [PlatformSpecific(TestPlatforms.AnyUnix)] ``` Works for performance tests too? @karelz @ViktorHofer @joperezr +19624 area-System.Diagnostics Remove conditional compilation in System.Diagnostics.Tracing As discussed offline with @vancem, we should remove conditional compilation which was introduced in PR https://github.com/dotnet/corefx/pull/18427 when these APIs will be available in NS21: ``` public abstract partial class EventListener : System.IDisposable { protected internal virtual void OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs eventData) { } } public class EventSourceCreatedEventArgs : EventArgs { public EventSourceCreatedEventArgs() { } public EventSource EventSource { get; } } ``` cc @brianrob +19627 area-System.ComponentModel Add Cancellation capability to PropertyChangingEventArgs ### Motive The [`INotifyPropertyChanging`](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifypropertychanging?view=netstandard-2.0) interface, is a supplement to the `INotifyPropertyChanged` interface, and its purpose is allow the developer to notify consumers about a property change **prior** to the actual change. The current implementation exposes an event that is raised by the provider, and raises the `PropertyChanging` event passing an instance of type [`PropertyChangingEventArgs`](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.propertychangingeventargs?view=netstandard-2.0) to the subscribing consumer. That however allows no interaction between the provider and consumer, since there is no way for the consumer to prevent the actual upcoming change. Among the things the consumer could potentially do is: - Throwing an exception, which is not necessarily caught by the provider or the change issuer up the tree - Cache the old value and compare it in the `PropertyChanged` handler (hoping it's the last handler). - Attach a `PropertyChanged` handler to try to set it back to previous value after all the 'changement' completed, again, relying it's the last handler in the chain. Anyway in both of the last options, the change will go back and force which might have a considerable performance impact and even heavy impact on UI (loading templates etc.). All of which are bad options, making the whole idea of `INotifyPropertyChanging` pretty much pointless. I mean, what point is there by knowing that a property is about to change without having any real option to do anything to prevent it or take control over it? [Here](http://stackoverflow.com/questions/8577207/better-propertychanged-and-propertychanging-event-handling)'s a sample discussion about this flaw. ### Solution To address this issue, I suggest that the `PropertyChangingEventArgs` class inherits from [`CancelEventArgs`](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.canceleventargs?view=netstandard-2.0), this change is silent and unobtrusive, and it just introduces a new `Cancel` property, which the provider can then act accordingly. ### API changes Proposed change ([Line 13](https://github.com/dotnet/corefx/blob/master/src/System.ObjectModel/src/System/ComponentModel/PropertyChangingEventArgs.cs#L13)) ```c# namespace System.ComponentModel { - public class PropertyChangingEventArgs : EventArgs { } + public class PropertyChangingEventArgs : CancelEventArgs { } ... } ``` [Change](../commit/eea57d8206b36a70cca9c288ec3eacae55b2af43) ### Things to consider - Since the current implementation doesn't include the cancellation option, consumers using legacy `NotifyPropertyChanging`, have to know that that setting `Cancel` to `true` is not guaranteed to be obeyed by the provider - To address that, we can add an additional property defaulting to `false` called `IsCancellable`, which should be set to `true` by the provider using a dedicated constructor in the event-args, to make the intent of respecting the cancellation clear for both sides. - As @adampursley [commented](https://github.com/dotnet/corefx/issues/19627#issuecomment-330267649), it may be a good idea to include the old value and new value in both the `PropertyChangingEventArgs` and the `PropertyChangedEventArgs` to spare getting the value via reflection. For itself this might not be an issue, but here are some issues that we should consider: - Since legacy providers don't use the constructor providing the values, a consumer might think the new value is null. - That can be addressed as above, by adding another readonly property `IsCurrentValueSet` which is internally set by the event-args when using the constructor passing values as parameters. - This will require boxing and unboxing for each raised event for value-typed properties (which are IMHO most of the NPC entity properties), and not necessarily the consumer is always interested in knowing the value, especially in post-change, where consumers usually only want to get notified about a change, not caring what the data actually is. - Both in pre-changing and post-changing, the value can be acquired with reflection, in standard implementation, `sender` (in the [`PropertyChangingEventHandler`](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.propertychangingeventhandler?view=netstandard-2.0)) is usually the instance containing the provided property name. +19629 area-Serialization DCS_ResolveNameReturnsEmptyNamespace Failed on UWP "`DataContractSerializerTests.DCS_ResolveNameReturnsEmptyNamespace` failed on UWP. ```xml members) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 1121 at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.ImportDataMembers() in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 1084 at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 809 at System.Runtime.Serialization.ClassDataContract..ctor(Type type) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 46 at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 570 at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 424 at System.Runtime.Serialization.XmlObjectSerializerContext.GetDataContract(RuntimeTypeHandle typeHandle, Type type) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerContext.cs:line 140 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType($XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 219 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 138 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 106 at Type538.WriteEmptyNsContainerToXml($XmlWriterDelegator A_0, Object A_1, $XmlObjectSerializerWriteContext A_2, $ClassDataContract A_3) at System.Runtime.Serialization.Json.JsonFormatCollectionWriterDelegate.InvokeOpenStaticThunk($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, $CollectionDataContract dataContract) in InvokeOpenStaticThunk:line 16707566 at System.Runtime.Serialization.Json.JsonFormatCollectionWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, $CollectionDataContract dataContract) in Invoke:line 16707566 at System.Runtime.Serialization.ClassDataContract.WriteXmlValue($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 508 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 651 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 150 at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContractSerializer.cs:line 364 at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContractSerializer.cs:line 247 at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 71 at System.Runtime.Serialization.XmlObjectSerializer.WriteObject($XmlDictionaryWriter writer, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 57 at System.Runtime.Serialization.XmlObjectSerializer.WriteObject(Stream stream, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 27 at DataContractSerializerTests.SerializeAndDeserialize(__Canon value, String baseline, $DataContractSerializerSettings settings, Func$1<$DataContractSerializer> serializerFactory, Boolean skipStringCompare) in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 3180 at DataContractSerializerTests.DCS_ResolveNameReturnsEmptyNamespace() in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 2795 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +19630 area-System.Net Uri.IsWellFormedUriString() returns false for a URL which is correct "I have a C# (.Net Core 1.1) app that needs to check if a URL is valid. I used the Uri.IsWellFormedUriString() which works pretty well but have a doubt about this one below which **returns false**. It seems to me that the URL is perfectly valid? `Uri.IsWellFormedUriString(""http://www.test.com/search/Le+Venezuela+b%C3%A9n%C3%A9ficie+d%27importantes+ressources+naturelles+%3A+p%C3%A9trole%2C+gaz%2C+mines"", UriKind.Absolute)` I used the very same URL with the PHP function below which says the URL is correctly formatted: `function filter_var($url, FILTER_VALIDATE_URL)` If I refer to the RFC3986 it seems this URL is correct. Am I missing something here?" +19631 area-Serialization Fix DCS_ResolveNameReturnsEmptyNamespace. Please see https://github.com/dotnet/corefx/issues/19629 for the root cause of the issue. Fix #19629 +19633 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/UseCallback_CallbackThrowsException_ExceptionPropagates failed with ""System.Net.Http.HttpRequestException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/UseCallback_CallbackThrowsException_ExceptionPropagates` has failed. Assert.Throws() Failure\r Expected: typeof(System.DivideByZeroException)\r Actual: typeof(System.Net.Http.HttpRequestException): An error occurred while sending the request. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (Core Tests) Failing configurations: - Windows.81.Amd64-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FUseCallback_CallbackThrowsException_ExceptionPropagates +19634 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_SupportedSSLVersion_Succeeds failed with ""System.Net.Http.HttpRequestException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_SupportedSSLVersion_Succeeds(sslProtocols: Tls, url: \""https://www.ssllabs.com:10301/\"")` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /root/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__6.MoveNext() in /root/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 136 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 644 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 863 Build : Master - 20170510.02 (Core Tests) Failing configurations: - Redhat.72.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_SupportedSSLVersion_Succeeds(sslProtocols:%20Tls,%20url:%20%5C%22https:~2F~2Fwww.ssllabs.com:10301~2F%5C%22)" +19635 area-System.Net "Test: System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_InvalidServerResponse_ThrowsIOException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_InvalidServerResponse_ThrowsIOException(transferType: ContentLength, transferError: ContentLengthTooLarge)` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IOException)\r Actual: typeof(System.Net.Http.HttpRequestException): An error occurred while sending the request. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__59.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.ResponseStreamTest.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_InvalidServerResponse_ThrowsIOException(transferType:%20ContentLength,%20transferError:%20ContentLengthTooLarge) +19636 area-System.Net "Test: System.Net.Security.Tests.CertificateValidationRemoteServer/CertificateValidationRemoteServer_EndToEnd_Ok failed with ""System.Net.Internals.SocketExceptionFactory+ExtendedSocketException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.CertificateValidationRemoteServer/CertificateValidationRemoteServer_EndToEnd_Ok` has failed. System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace: at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 46 at System.Net.Dns.ResolveCallback(Object context) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 290 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 420 at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 582 at System.Net.Sockets.Socket.DoDnsCallback(IAsyncResult result, MultipleAddressConnectAsyncResult context) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5025 at System.Net.Sockets.Socket.DnsCallback(IAsyncResult result) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5005 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2434 at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs:line 335 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.CertificateValidationRemoteServer.d__0.MoveNext() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs:line 24 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (Portable Core Tests) Failing configurations: - Ubuntu.1704.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170510.02/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.CertificateValidationRemoteServer~2FCertificateValidationRemoteServer_EndToEnd_Ok +19637 area-System.Net "Test: System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest/SendAsync_SlowServerAndCancel_ThrowsTaskCanceledException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest/SendAsync_SlowServerAndCancel_ThrowsTaskCanceledException` has failed. Assert.Throws() Failure\r Expected: typeof(System.AggregateException)\r Actual: (No exception was thrown) Stack Trace: at System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (Portable Core Tests) Failing configurations: - Windows.10.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170510.02/workItem/System.Net.Http.WinHttpHandler.Functional.Tests/analysis/xunit/System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest~2FSendAsync_SlowServerAndCancel_ThrowsTaskCanceledException +19639 area-System.Console "Test: ConsoleEncoding/InputEncoding_SetDefaultEncoding_Success failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `ConsoleEncoding/InputEncoding_SetDefaultEncoding_Success` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Console.Tests/analysis/xunit/ConsoleEncoding~2FInputEncoding_SetDefaultEncoding_Success +19640 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandlerTest/MaxRequestContentBufferSize_Set_ThrowsPlatformNotSupportedException failed with Xunit.Sdk.ThrowsException""""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/MaxRequestContentBufferSize_Set_ThrowsPlatformNotSupportedException` has failed. Assert.Throws() Failure\r Expected: typeof(System.PlatformNotSupportedException)\r Actual: (No exception was thrown) Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandlerTest.MaxRequestContentBufferSize_Set_ThrowsPlatformNotSupportedException() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FMaxRequestContentBufferSize_Set_ThrowsPlatformNotSupportedException +19641 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test/ClientCertificates_ClientCertificateOptionsAutomatic_ThrowsException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test/ClientCertificates_ClientCertificateOptionsAutomatic_ThrowsException` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.ClientCertificates_ClientCertificateOptionsAutomatic_ThrowsException() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test~2FClientCertificates_ClientCertificateOptionsAutomatic_ThrowsException +19642 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test/SetGet_Roundtrips failed with ""Xunit.Sdk.SameException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test/SetGet_Roundtrips` has failed. Assert.Same() Failure\r Expected: NetworkCredential { Domain = \""domain\"", Password = \""password\"", SecurePassword = SecureString { Length = 8 }, UserName = \""username\"" }\r Actual: NetworkCredential { Domain = \""\"", Password = \""password\"", SecurePassword = SecureString { Length = 8 }, UserName = \""domain\\\\username\"" } Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.SetGet_Roundtrips() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test~2FSetGet_Roundtrips" +19643 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test/Default_ExpectedValue failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test/Default_ExpectedValue` has failed. Assert.Equal() Failure\r Expected: 2147483647\r Actual: 6 Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test.Default_ExpectedValue() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test~2FDefault_ExpectedValue +19644 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test/GetAsync_Max1_ConcurrentCallsStillSucceed failed wtih ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test/GetAsync_Max1_ConcurrentCallsStillSucceed` has failed. System.ArgumentException : The parameter is incorrect.\r \r value Stack Trace: at Windows.Web.Http.Filters.HttpBaseProtocolFilter.put_MaxConnectionsPerServer(UInt32 value) at System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxConnectionsPerServer_Test~2FGetAsync_Max1_ConcurrentCallsStillSucceed +19645 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test/Default_MaxResponseHeadersLength failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test/Default_MaxResponseHeadersLength` has failed. Assert.Equal() Failure\r Expected: 64\r Actual: -1 Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test.Default_MaxResponseHeadersLength() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test~2FDefault_MaxResponseHeadersLength +19646 area-System.Runtime Add test for BadImageFormatException thrown by AssemblyName.GetAssemblyName Regression test for https://github.com/dotnet/coreclr/issues/11499 +19647 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test/InvalidValue_ThrowsException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test/InvalidValue_ThrowsException(invalidValue: -1)` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: (No exception was thrown) Stack Trace: at System.AssertExtensions.Throws[T](String paramName, Func`1 testCode) at System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test.InvalidValue_ThrowsException(Int32 invalidValue) Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test~2FInvalidValue_ThrowsException(invalidValue:%20-1) +19648 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test/SetAfterUse_Throws failed with ""Xunit.Sdk.ThrowsException'" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test/SetAfterUse_Throws` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_MaxResponseHeadersLength_Test~2FSetAfterUse_Throws +19649 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/SetGetProtocols_Roundtrips failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/SetGetProtocols_Roundtrips(protocols: Tls)` has failed. Assert.Equal() Failure\r Expected: Tls\r Actual: None Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.SetGetProtocols_Roundtrips(SslProtocols protocols) Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FSetGetProtocols_Roundtrips(protocols:%20Tls) +19650 area-System.Net "Tests under: System.Net.Http.Functional.Tests.HttpRequestMessageTest failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpRequestMessageTest/Ctor_AbsoluteStringUri_CorrectValues` has failed. Assert.Equal() Failure\r Expected: 1.1\r Actual: 2.0 Stack Trace: at System.Net.Http.Functional.Tests.HttpRequestMessageTest.Ctor_AbsoluteStringUri_CorrectValues() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpRequestMessageTest~2FCtor_AbsoluteStringUri_CorrectValues +19651 area-System.Data SqlClientFactory.CreateDataAdapter returns null I'm running the .NET Core 2.0 bits and testing against some legacy full framework packages (yeah some legacy code). Looks like most of the other services are working, just the data adapter isn't. ![image](https://cloud.githubusercontent.com/assets/1374013/25937667/655d86a2-35e1-11e7-9a87-8a7c17e388ec.png) Is this something that will come later? +19652 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpRequestMessageTest/ToString_DefaultAndNonDefaultInstance_DumpAllFields failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpRequestMessageTest/ToString_DefaultAndNonDefaultInstance_DumpAllFields` has failed. Assert.Equal() Failure\r ? (pos 44)\r Expected: ··· '', Version: 1.1, Content: , Headers:\\r\\n{\\r\\n} Actual: ··· '', Version: 2.0, Content: , Headers:\\r\\n{\\r\\n} ? (pos 44) Stack Trace: at System.Net.Http.Functional.Tests.HttpRequestMessageTest.ToString_DefaultAndNonDefaultInstance_DumpAllFields() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpRequestMessageTest~2FToString_DefaultAndNonDefaultInstance_DumpAllFields +19653 area-System.Net "Tests under: System.Net.NetworkInformation.Tests.PingTest failed with ""System.Net.NetworkInformation.PingException""" Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Tests.PingTest/Ping_DisposeAfterSend_Success` has failed. System.Net.NetworkInformation.PingException : An exception occurred during a Ping request.\r ---- System.ComponentModel.Win32Exception : Access is denied Stack Trace: at System.Net.NetworkInformation.Ping.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.SendPingAsyncCore(IPAddress address, Byte[] buffer, Int32 timeout, PingOptions options) at System.Net.NetworkInformation.Ping.d__48.MoveNext() Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Ping.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.PingTest~2FPing_DisposeAfterSend_Success +19654 area-System.Net "Test: System.Net.NetworkInformation.Tests.PingTest/SendAsyncs_ReuseInstance_Hostname failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Tests.PingTest/SendAsyncs_ReuseInstance_Hostname` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Net.NetworkInformation.Tests.PingTest.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170510.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170510.02/workItem/System.Net.Ping.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.PingTest~2FSendAsyncs_ReuseInstance_Hostname +19656 area-System.IO "Multiple Pipes tests failing on desktop with ""The handle is invalid"" and related errors" https://ci.dot.net/job/dotnet_corefx/job/master/job/netfx_windows_nt_debug_prtest/82/consoleText ``` System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerOut_ClientIn.WriteWithNegativeOffset_Throws_ArgumentOutOfRangeException [FAIL] System.IO.IOException : The handle is invalid. Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Pipes.AnonymousPipeServerStream.Create(PipeDirection direction, SECURITY_ATTRIBUTES secAttrs, Int32 bufferSize) at System.IO.Pipes.AnonymousPipeServerStream..ctor(PipeDirection direction, HandleInheritability inheritability, Int32 bufferSize) at System.IO.Pipes.AnonymousPipeServerStream..ctor(PipeDirection direction) D:\j\workspace\netfx_windows---8c0e8fba\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Write.cs(25,0): at System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerOut_ClientIn.CreateServerClientPair() D:\j\workspace\netfx_windows---8c0e8fba\src\System.IO.Pipes\tests\PipeTest.Write.cs(44,0): at System.IO.Pipes.Tests.PipeTest_Write.WriteWithNegativeOffset_Throws_ArgumentOutOfRangeException() ``` +19657 area-System.Runtime Add test for AppDomain.SetData with the same key multiple times Closes https://github.com/dotnet/coreclr/issues/11453 cc: @sepidehMS, @AlexGhiondea +19658 area-System.Net Docker Image microsoft/dotnet:1.1.1-runtime doesn't have fix in LibCurl In PR #16895, a fix for lib_curl on linux was put in to improve HttpClient POST Performance in .NET Core. However, even though the PR says it should be deployed to the dotnet:1.1.0 docker repo, I pulled and reproduced the issue with the `dotnet:1.1.1-runtime` docker image. A reproduction of the issue is here: https://github.com/gortok/httpclient-tests (Dockerfile is in that repo). Was this fix deployed? If so, which docker image should contain it? +19659 area-System.Net Allow Deprecated and non-deprecated HTTP events simultaneously. Addresses #18762 Basically we always check if a client needs deprecated events (previously we checked only if new events were not enabled). This allows clients to support both new and old events simultaneously. @davidsh @lmolkova @avanderhoorn +19660 area-Infrastructure Add initial .NET 2.0 pipelines Adds an initial basic set of .NET core 2.0 pipelines, taking advantage of a lot of new functionality implemented on the backend. The 2.0 pipelines use Jenkins new pipeline job functionality to make the build/test process clearer and map much closer to official processes. Pipelines also have the advantage of being easier to edit in a PR. There are two types of files in this PR. * The pipelinejobs.groovy file is a type of netci.groovy file which identifies the pipelines that need to be run, their triggers and the parameters that run on each trigger. It has a simpler form with far fewer options than netci.groovy * The portable-windows.groovy and portable-linux.groovy files are the pipelines themselves. The Linux pipeline uses docker to build the product, then sends off to Helix for testing. Links to helix test results are linked to on the GitHub PR. Windows pipelines build natively on Windows, and again submit off to Helix for testing. These pipelines are currently not enabled by default until we are sure they are valid (also there are currently failures in some tests), but can be launched with: * @dotnet-bot test portable linux debug pipeline * @dotnet-bot test portable linux release pipeline * @dotnet-bot test portable windows debug pipeline * @dotnet-bot test portable windows release pipeline There are clearly a number of additional improvements that need to be made: * Pipelines need to be expanded to x86, arm, arm64, etc. * Pipelines to be expanded to commits (works today but has a couple issues with reporting) * May need to tweak logic used to generate links to Mission Control in non-PR cases. Because of the major changes required in the CI SDK to enable these changes, the pipelines are currently running against the dev/pipelinesupport branch of dotnet/dotnet-ci +19661 area-System.Security Further harden the VerifyDecryptKeyExchange tests "Running the test in a loop with the additional logging showed that the test can fail, due to the nature of the randomness and underlying cryptographic algorithm. By also checking that the return value isn't the pre-tamper we should reduce the failure rate from ""once every 3.5 months"" (amortized current known rate) to ""once every hundred trillion years"", give or take." +19663 area-Serialization DataContractSerializerTests.DCS_BasicRoundTripResolveDTOTypes Fails on UWP "The test fails on UWP due to https://github.com/dotnet/corert/issues/2946. ```xml $catch$0() in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\AccessorBuilder.cs:line 188 at System.Runtime.Serialization.FastInvokerBuilder.CreateGetterInternal(PropertyInfo propInfo) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\AccessorBuilder.cs:line 115 at System.Func$2.InvokeOpenStaticThunk(IntPtr arg) in InvokeOpenStaticThunk:line 16707566 at System.Runtime.Serialization.FastInvokerBuilder.CreateGetter(MemberInfo memberInfo) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\AccessorBuilder.cs:line 39 at System.Runtime.Serialization.ReflectionReader.ReflectionGetMemberValue(Object obj, $DataMember dataMember) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 106 at System.Runtime.Serialization.ReflectionXmlClassWriter.ReflectionWriteMembers($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $ClassDataContract derivedMostClassContract, Int32 childElementIndex, $XmlDictionaryString[] emptyStringArray) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs:line 171 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $XmlDictionaryString[] memberNames) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 35 at System.Runtime.Serialization.ReflectionXmlFormatWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs:line 20 at System.Runtime.Serialization.Json.JsonFormatCollectionWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, $CollectionDataContract dataContract) in Invoke:line 16707566 at System.Runtime.Serialization.ClassDataContract.WriteXmlValue($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 508 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 651 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 279 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType($XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 231 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 138 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 106 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionInternalSerialize($XmlWriterDelegator xmlWriter, $XmlObjectSerializerWriteContext context, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Type memberType, Boolean isNullableOfT) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 164 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteValue($XmlWriterDelegator xmlWriter, $XmlObjectSerializerWriteContext context, Type type, Object value, Boolean writeXsiType, $PrimitiveDataContract primitiveContractForParamType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 95 at System.Runtime.Serialization.ReflectionXmlClassWriter.ReflectionWriteMembers($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $ClassDataContract derivedMostClassContract, Int32 childElementIndex, $XmlDictionaryString[] emptyStringArray) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs:line 183 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $XmlDictionaryString[] memberNames) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 35 at System.Runtime.Serialization.ReflectionXmlFormatWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs:line 20 at System.Runtime.Serialization.Json.JsonFormatCollectionWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, $CollectionDataContract dataContract) in Invoke:line 16707566 at System.Runtime.Serialization.ClassDataContract.WriteXmlValue($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 508 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 651 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 279 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType($XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 231 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 138 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 106 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionInternalSerialize($XmlWriterDelegator xmlWriter, $XmlObjectSerializerWriteContext context, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Type memberType, Boolean isNullableOfT) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 164 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteValue($XmlWriterDelegator xmlWriter, $XmlObjectSerializerWriteContext context, Type type, Object value, Boolean writeXsiType, $PrimitiveDataContract primitiveContractForParamType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 95 at System.Runtime.Serialization.ReflectionXmlClassWriter.ReflectionWriteMembers($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $ClassDataContract derivedMostClassContract, Int32 childElementIndex, $XmlDictionaryString[] emptyStringArray) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs:line 183 at System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $XmlDictionaryString[] memberNames) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs:line 35 at System.Runtime.Serialization.ReflectionXmlFormatWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs:line 20 at System.Runtime.Serialization.Json.JsonFormatCollectionWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, $CollectionDataContract dataContract) in Invoke:line 16707566 at System.Runtime.Serialization.ClassDataContract.WriteXmlValue($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ClassDataContract.cs:line 508 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 651 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 155 at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContractSerializer.cs:line 364 at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContractSerializer.cs:line 247 at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 71 at System.Runtime.Serialization.XmlObjectSerializer.WriteObject($XmlDictionaryWriter writer, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 57 at System.Runtime.Serialization.XmlObjectSerializer.WriteObject(Stream stream, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 27 at DataContractSerializerTests.SerializeAndDeserialize(__Canon value, String baseline, $DataContractSerializerSettings settings, Func$1<$DataContractSerializer> serializerFactory, Boolean skipStringCompare) in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 3180 at DataContractSerializerTests.DCS_BasicRoundTripResolveDTOTypes() in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 2613 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400 ----- Inner Stack Trace ----- at System.Reflection.Runtime.MethodInfos.RuntimeMethodInfo.CreateDelegateWorker(Type delegateType, Object target, Boolean allowClosed) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\MethodInfos\RuntimeMethodInfo.cs:line 99 at System.Reflection.Runtime.MethodInfos.RuntimeMethodInfo.CreateDelegate(Type delegateType) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\MethodInfos\RuntimeMethodInfo.cs:line 71 at System.Runtime.Serialization.CreateDelegateExtension.CreateDelegate(MethodInfo method) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\AccessorBuilder.cs:line 184]]> ```" +19664 area-System.Net Increased code coverage for System.Net.Security to 66.6% Increased code coverage for System.Net.Security to 66.6% +19665 area-Serialization Workaround Issue Related to DateTimeOffsetAdapter. Test `DataContractSerializerTests.DCS_BasicRoundTripResolveDTOTypes` is failing due to a bug in CoreRT. The PR works around the bug in `DEBUG` build. Ref #19663 +19667 area-Infrastructure XUnit should log all InnerExceptions if a test fails Example of test failures that would benefit from having the entire `Exception` chain logged during test execution: #19635, #19633. +19669 area-System.IO Desktop test failure: System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerIn_ClientOut.WriteWithOutOfBoundsArray_Throws_ArgumentException System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerIn_ClientOut.WriteWithOutOfBoundsArray_Throws_ArgumentException (from System.IO.Pipes.Tests) ``` MESSAGE: System.IO.IOException : Invalid pipe handle. +++++++++++++++++++ STACK TRACE: at System.IO.Pipes.AnonymousPipeClientStream.Init(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream..ctor(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.Tests.AnonymousPipeTest_Write_ServerIn_ClientOut.CreateServerClientPair() in D:\j\workspace\netfx_windows---50c21bdb\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Write.cs:line 15 at System.IO.Pipes.Tests.PipeTest_Write.WriteWithOutOfBoundsArray_Throws_ArgumentException() in D:\j\workspace\netfx_windows---50c21bdb\src\System.IO.Pipes\tests\PipeTest.Write.cs:line 75 ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/netfx_windows_nt_release_prtest/104/ Happening here: https://github.com/dotnet/corefx/pull/19613 +19673 area-System.Data SqlClient.SqlClientFactory doesn't implement DbProviderFactory.CreateDataAdapter() Hi. In netstandard 2.0, the method DbProviderFactory.CreateDataAdapter() is present, however this method isn't implemented in SqlClient.SqlClientFactory, leading to a null being returned. This is likely an oversight caused by the fact that the factory was ported over way before DataTable and friends were ported over. I think this should be corrected before 2.0 RTM, as it's an important method for code using datatables and dataadapters. ref: DbProviderFactory.CreateDataAdapter docs: https://apisof.net/catalog/System.Data.Common.DbProviderFactory.CreateDataAdapter() thanks! +19674 area-System.Reflection Update AssemblyName.FullName tests Closes https://github.com/dotnet/corefx/issues/19179 by updating previously disabled test and addding few new tests. cc: @danmosemsft @stephentoub +19677 area-Serialization DCS Failed to Serialize IEnumerable Types on UWP in ReflectionOnly Mode DCS failed to serialize `IEnumerable` Types on UWP in ReflectionOnly mode. The following tests failed. ``` DataContractSerializerTests.DCS_EnumerableCollection DataContractSerializerTests.DCS_TypeWithExplicitIEnumerableImplementation DataContractSerializerTests.DCS_EnumerableMembers DataContractSerializerTests.DCS_DictionaryMembers DataContractSerializerTests.DCS_EnumerableStruct DataContractSerializerTests.DCS_CollectionMembers ``` +19678 area-System.IO Desktop test failure: System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ClonedServer_ActsAsOriginalServer ``` System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ClonedServer_ActsAsOriginalServer [FAIL] System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.WinIOError(Int32 errorCode) at System.IO.Pipes.PipeStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) C:\Users\vikto\Documents\src\corefx\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Specific.cs(49,0): at System.IO.Pipes.Tests.AnonymousPipeTest_Specific.ClonedServer_Act sAsOriginalServer() ``` Fails on my local looped test runs in System.IO.Pipes like 1/50 runs. +19680 area-System.IO Desktop test failure: System.IO.Pipes.Tests.AnonymousPipeTest_Specific.Windows_BufferSizeRoundtripping ``` System.IO.Pipes.Tests.AnonymousPipeTest_Specific.Windows_BufferSizeRoundtripping [FAIL] System.IO.IOException : The handle is invalid. Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Pipes.PipeStream.get_InBufferSize() C:\Users\vikto\Documents\src\corefx\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Specific.cs(137,0): at System.IO.Pipes.Tests.AnonymousPipeTest_Specific.Windows_BufferS izeRoundtripping() ``` Fails on my local looped test runs in System.IO.Pipes like 1/35 times. cc @ianhays @JeremyKuhne +19681 area-System.IO Desktop test failure: System.IO.Pipes.Tests.AnonymousPipeTest_Specific.InvalidReadMode_Throws_ArgumentOutOfRangeException ``` System.IO.Pipes.Tests.AnonymousPipeTest_Specific.InvalidReadMode_Throws_ArgumentOutOfRangeException [FAIL] System.IO.IOException : Invalid pipe handle. Stack Trace: at System.IO.Pipes.AnonymousPipeClientStream.Init(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream..ctor(PipeDirection direction, String pipeHandleAsString) C:\Users\vikto\Documents\src\corefx\src\System.IO.Pipes\tests\AnonymousPipeTests\AnonymousPipeTest.Specific.cs(189,0): at System.IO.Pipes.Tests.AnonymousPipeTest_Specific.InvalidReadMode _Throws_ArgumentOutOfRangeException() ``` Fails on my local test looped runs in System.IO.Pipes like 1/30 times. cc: @JeremyKuhne @ianhays +19683 area-System.Net System.Net.Sockets.Tests.DualModeBeginAccept.BeginAcceptV4BoundToSpecificV4_Success fails with COMPlus_GCStress=3 When running the System.Net.Sockets tests with COMPlus_GCStress=3, the tests fail with: ``` System.Net.Sockets.SocketException : Connection reset by peer Stack Trace: at System.Net.Sockets.Tests.DualModeBeginAccept.DualModeConnect_BeginAccept_Helper(IPAddress listenOn, IPAddress connectTo) ``` This has been verified by running the tests twice with the same result. No other tests failed. It only has failed on Linux (RHEL 72 used); Windows did not fail here. 'Connection reset by peer' usually means the client closed and re-opened the connection, which could happen if another tests was colliding on port # Worst case is there is an issue with dual-mode support on Linux perhaps contributing to getting >1 client connections to the same port + family (IPv6). The test uses an IPv4 Loopback address but uses an IPv6 protocol on top of that. The easiest way to repro this is to modify the RunTests.sh in the corresponding test folder to add `export COMPlus_GCStress=3` +19688 area-Infrastructure Changes to support ARM-requeue for UAPAOT testing "I have intentionally avoided turning this on in official builds since the binaries we're producing for ARM right now don't quite execute on the Windows ARM64 clients. Regardless, with just this small change you can get a full multi-queued Helix run by doing the same steps as the other UAP AOT runs, but changing out the arch to ""arm"". @joperezr , FYI." +19689 area-System.Net SendAsync_ExpectedDiagnosticSourceActivityLogging failed in CI on Windows and Linux. ``` System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticSourceActivityLogging [FAIL] 17:11:22 Assert.Equal() Failure 17:11:22 Expected: 42 17:11:22 Actual: 134 17:11:22 Stack Trace: 17:11:22 /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug_prtest/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(188,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() 17:11:22 /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug_prtest/src/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs(308,0): at System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticSourceActivityLogging() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_centos7.1_debug_prtest/16/console +19690 area-System.Net Disable HttpClientHandler test Default_ExpectedValue on Desktop, which fails on random occasions depending on xunit test execution order @safern Talked shortly with Stephen about it as he was available (not the other issue, only this one). He recommended disabling the test as removing the static assignment isn't worth for only fixing this test. +19694 area-System.Runtime Environment.OSVersion.Platform returns Unix on macOS "Using .NET Core 2.0 SDK preview. `dotnet --info`: ``` .NET Command Line Tools (2.0.0-preview1-005977) Product Information: Version: 2.0.0-preview1-005977 Commit SHA-1 hash: 414cab8a0b Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/2.0.0-preview1-005977/ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ``` Simple test case: ``` [12:41pm yaakov@Eadu:/tmp/osver] dotnet new console The template ""Console Application"" was created successfully. Processing post-creation actions... Running 'dotnet restore' on /private/tmp/osver/osver.csproj... Restore succeeded. [12:41pm yaakov@Eadu:/tmp/osver] vim Program.cs [12:42pm yaakov@Eadu:/tmp/osver] cat Program.cs using System; namespace osver { class Program { static void Main(string[] args) { Console.WriteLine(Environment.OSVersion.Platform); } } } [12:42pm yaakov@Eadu:/tmp/osver] dotnet restore && dotnet build && dotnet run Restoring packages for /private/tmp/osver/osver.csproj... Lock file has not changed. Skipping lock file write. Path: /private/tmp/osver/obj/project.assets.json Restore completed in 177.16 ms for /private/tmp/osver/osver.csproj. NuGet Config files used: /Users/yaakov/.nuget/NuGet/NuGet.Config Feeds used: https://api.nuget.org/v3/index.json /Users/yaakov/.dotnet/NuGetFallbackFolder Microsoft (R) Build Engine version 15.3.117.23532 Copyright (C) Microsoft Corporation. All rights reserved. osver -> /private/tmp/osver/bin/Debug/netcoreapp2.0/osver.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.29 Unix [12:42pm yaakov@Eadu:/tmp/osver] ``` I would expect the program to print `MacOSX`, i.e. `System.PlatformID.MacOSX` which is enum value `6`." +19695 area-System.Diagnostics zombie process when start a linux process in dotnet core "```c# var processId = Process.GetCurrentProcess().Id; var process = Process.Start(new ProcessStartInfo { FileName = @""top"", Arguments = $@"" -n 1 -p {processId} -b"", RedirectStandardOutput = true, }); process.Start(); process.WaitForExit(); var result = await process.StandardOutput.ReadToEndAsync().ConfigureAwait(false); try { process.Kill(); } finally { process.Dispose(); } return result.Trim(); ``` when this application run . it cause a zombie procss in linux ![image](https://cloud.githubusercontent.com/assets/8044586/25980482/693e413c-3701-11e7-92bb-fa6cc05a0f32.png) " +19697 area-System.Runtime Fix Environment.OSVersion.Platform output on MacOSX Fixes https://github.com/dotnet/corefx/issues/19694 +19698 area-System.Linq ForEach or Select void to do some logic and continue with the same collection I'm not sure we should add new API or just use Select. But it would be the same argument ```C# IEnumerable Select(this IEnumerable list,Action action); IEnumerable Select(this IEnumerable list,Action action); or IEnumerable ForEach(this IEnumerable list,Action action); IEnumerable ForEach(this IEnumerable list,Action action); ``` This let us split iteration logic easier. We could do something before `Where` clause. We could split it out from `Where` without the need to return each item unneccessary +19699 area-System.Net System.Net.Security.Tests.SslStreamCredentialCacheTest.SslStream_SameCertUsedForClientAndServer_Ok failed in ci failed test: System.Net.Security.Tests.SslStreamCredentialCacheTest.SslStream_SameCertUsedForClientAndServer_Ok detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_release/44/testReport/System.Net.Security.Tests/SslStreamCredentialCacheTest/SslStream_SameCertUsedForClientAndServer_Ok/ MESSAGE: ~~~ Assert.True() Failure Expected: True Actual: False ~~~ STACK TRACE: ~~~ at System.Net.Security.Tests.SslStreamCredentialCacheTest.d__1.MoveNext() in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\tests\FunctionalTests\SslStreamCredentialCacheTest.cs:line 50 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.SslStreamCredentialCacheTest.SslStream_SameCertUsedForClientAndServer_Ok() in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\tests\FunctionalTests\SslStreamCredentialCacheTest.cs:line 23 ~~~ +19700 area-System.Security System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores failed in ci Failed test: System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_osx_release/45/testReport/System.Security.Cryptography.X509Certificates.Tests/ChainTests/BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores/ MESSAGE: ~~~ Interop+AppleCrypto+AppleCommonCryptoCryptographicException : An invalid record was encountered. ~~~ STACK TRACE: ~~~ at Interop.AppleCrypto.EnumerateStore(StoreLocation location, StoreEnumerator userEnumerator, StoreEnumerator machineEnumerator) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_release/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.Trust.cs:line 87 at Internal.Cryptography.Pal.StorePal.AppleTrustStore.CloneTo(X509Certificate2Collection collection) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_release/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/StorePal.AppleTrustStore.cs:line 39 at System.Security.Cryptography.X509Certificates.X509Store.get_Certificates() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_release/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 140 at System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_release/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 435 ~~~ +19701 area-System.Net Test failures: System.Net.Http.Functional.Tests.HttpClientHandler_* / * - Azure endpoints Multiple tests fail with the same stack indicating that the request took more than the configured (default=100s) timeout for HttpClient. The reasons for this timeout may be different but in most cases the way the tests report the error makes it difficult (or impossible) to understand why the server didn't reply (or why the client didn't receive that reply). - System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds - System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls11, requestOnlyThisProtocol: False) - System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls11, requestOnlyThisProtocol: True) - System.Net.Http.Functional.Tests.HttpClientHandlerTest/GetAsync_AllowAutoRedirectTrue_NonRedirectStatusCode_LocationHeader_NoRedirect(statusCode: 200) - System.Net.Http.Functional.Tests.HttpClientHandlerTest/Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds: null, wrapCredsInCache: False) - System.Net.Http.Functional.Tests.HttpClientTest.SendAsync_ExpectedDiagnosticSourceLogging - System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingChunkedEncoding_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx) - System.Net.Http.Functional.Tests.PostScenarioTest/PostEmptyContentUsingContentLengthSemantics_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx) - System.Net.Http.Functional.Tests.PostScenarioTest.PostUsingUsingConflictingSemantics_UsesChunkedSemantics - System.Net.Http.Functional.Tests.ResponseStreamTest/ReadAsStreamAsync_Cancel_TaskIsCanceled OS Distribution: - (most likely to fail) Windows.7.Amd64-x86 Debug - Windows.10.Nano.Amd64-x64 Release - Windows.10.Amd64-x64 Release - Windows.10.Amd64-x86 Release - Windows.7.Amd64-x86 Release --- Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170512.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Release - Windows.81.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170512.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FNoCallback_RevokedCertificate_NoRevocationChecking_Succeeds +19702 area-System.Net "Test ""System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests/SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync"" failed with ""System.AggregateException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests/SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync` has failed. System.AggregateException : One or more errors occurred. (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it) (No connection could be made because the target machine actively refused it)\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it\r ---- System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Threading.Tasks.Task.WaitAll(Task[] tasks) at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.RunClient(SocketImplementationType testType, EndPoint endpoint, Int32 iterations, Int32 bufferSize, Int32 socketInstances) at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(Int32 port, SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) at System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync() ----- Inner Stack Trace #1 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #2 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #3 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #4 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #5 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #6 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #7 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #8 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #9 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #10 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #11 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #12 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #13 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #14 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #15 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #16 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #17 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #18 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #19 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #20 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #21 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #22 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #23 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #24 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #25 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #26 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #27 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #28 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #29 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #30 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #31 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #32 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #33 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #34 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #35 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #36 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #37 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() ----- Inner Stack Trace #38 (System.Net.Sockets.SocketException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at System.Net.Sockets.Performance.Tests.SocketTestClient.d__22.MoveNext() Build : Master - 20170512.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Windows.81.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170512.01/workItem/System.Net.Sockets.Async.Performance.Tests/analysis/xunit/System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests~2FSocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync +19703 area-System.Runtime string.GetHashCode() does not return the same result in version 1.1 "Every time I run my program anew and call ```myString.GetHashCode()```, it returns a new result. ## Recreate Create C# console program ```c# class Program { static void Main(string[] args) { var seed = ""myseed""; Console.WriteLine(seed.GetHashCode()); Console.WriteLine(seed.GetHashCode()); } } ``` Run the program. As expected the outputs are equal. dotnet MyProgram.dll 555123300 555123300 ## Actual outcome Now run the program again. The output is now different. dotnet MyProgram.dll 555123300 555123300 dotnet MyProgram.dll 614890615 614890615 ## Expected outcome Two runs on the same machine with the same compiled code should return the same hash for a string. According to [docs](https://docs.microsoft.com/en-us/dotnet/api/system.string.gethashcode?view=netcore-1.1#System_String_GetHashCode) the same string should return the same hash for the same framework and the same application domain. I have not yet checked the behaviour in dotnet core 2." +19704 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest/GetAsync_AllowAutoRedirectTrue_NonRedirectStatusCode_LocationHeader_NoRedirect(statusCode: 200) Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/GetAsync_AllowAutoRedirectTrue_NonRedirectStatusCode_LocationHeader_NoRedirect(statusCode: 200)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass46_1.<b__1>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass46_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__46.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170512.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170512.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FGetAsync_AllowAutoRedirectTrue_NonRedirectStatusCode_LocationHeader_NoRedirect(statusCode:%20200) +19705 area-System.Net Test failure: System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync/SslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync/SslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success` has failed. System.IO.IOException : The read operation failed, see inner exception. ---- System.TimeoutException : VirtualNetwork: Timeout reading the next frame. Stack Trace: at System.Net.Security.SslStreamInternal.EndRead(IAsyncResult asyncResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 171 at System.Net.Security.SslStream.EndRead(IAsyncResult asyncResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 537 at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.SslStreamStreamToStreamTest.d__10.MoveNext() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs:line 320 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) in /root/corefx/src/Common/tests/System/Net/VirtualNetwork/VirtualNetwork.cs:line 42 at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in /root/corefx/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs:line 118 at System.Net.Security.Tests.NotifyReadVirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in /root/corefx/src/System.Net.Security/tests/FunctionalTests/NotifyReadVirtualNetworkStream.cs:line 22 at System.Net.Test.Common.VirtualNetworkStream.<>c__DisplayClass27_0.b__0() in /root/corefx/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs:line 138 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.FixedSizeReader.d__1.MoveNext() in /root/corefx/src/System.Net.Security/src/System/Net/FixedSizeReader.cs:line 56 Build : Master - 20170512.01 (Portable Core Tests) Failing configurations: - Ubuntu.1610.Amd64-x64 - Debug - Release - Ubuntu.1404.Amd64-x64 - Debug - Release - Debian.87.Amd64-x64 - Debug - Ubuntu.1604.Amd64-x64 - Release - Ubuntu.1704.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170512.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamStreamToStreamTest_Sync~2FSslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success +19706 area-System.Numerics add method to directly round double to decimal the current version of the API requires 2 rounding operations to convert from a `double` to a `decimal` with `n` places of precision. eg ``` double d = ...; decimal m1 = (decimal)d; // first rounding operation decimal m2 = Math.Round(m1, n, MidpointRounding.AwayFromZero); // second rounding operation ``` ideally we would have an API that allows a direct conversion/round in a single operation: in class `Decimal`: ``` public static decimal Round(double d, int n, MidpointRounding rouding) {} ``` this is both for performance and correctness reasons. rounding twice may introduce inaccuracies (albeit subtle and infrequent) and also inccurs an extra unnecessary step. +19708 area-System.Data netstandard2.0: DataTable isn't usable as a parameter (SqlClient/DataTable issue) I'm not sure if there are other issues beyond this, but hitting the first boom with SQL TVPs (table valued parameters) when attempting to restore support in Dapper with `netstandard2.0`. In the reference source for `SqlParameter.CoerceValue()`, there's [an explicit check to not attempt conversion on a `DataTable`](https://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlParameter.cs,958): ```c# else if (TdsEnums.SQLTABLE == destinationType.TDSType && (value is DataTable || value is DbDataReader || value is System.Collections.Generic.IEnumerable)) { // no conversion for TVPs. typeChanged = false; } ``` Compared to [the code in CoreFX](https://github.com/dotnet/corefx/blob/9d876a4d4f7b7cf2a1d125d23349b7989650cb30/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlParameter.cs#L917-L923): ```c# else if (TdsEnums.SQLTABLE == destinationType.TDSType && ( value is DbDataReader || value is System.Collections.Generic.IEnumerable)) { // no conversion for TVPs. typeChanged = false; } ``` Without this match, it falls down below resulting in: ``` System.InvalidCastException : Failed to convert parameter value from a DataTable to a IEnumerable`1. ---- System.InvalidCastException : Object must implement IConvertible. Stack Trace: at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType, Boolean& coercedToDataFeed, Boolean& typeChanged, Boolean allowStreaming) at System.Data.SqlClient.SqlParameter.GetCoercedValue() at System.Data.SqlClient.SqlParameter.Validate(Int32 index, Boolean isCommandProc) at System.Data.SqlClient.SqlCommand.SetUpRPCParameters(_SqlRPC rpc, Int32 startCount, Boolean inSchema, SqlParameterCollection parameters) at System.Data.SqlClient.SqlCommand.BuildRPC(Boolean inSchema, SqlParameterCollection parameters, _SqlRPC& rpc) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) C:\git\Dapper\Dapper\SqlMapper.cs(1052,0): at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) C:\git\Dapper\Dapper\SqlMapper.cs(1080,0): at Dapper.SqlMapper.d__130`1.MoveNext() at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) C:\git\Dapper\Dapper\SqlMapper.cs(722,0): at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) C:\git\Dapper\Dapper.Tests\ParameterTests.cs(435,0): at Dapper.Tests.ParameterTests.DataTableParametersWithExtendedProperty() ----- Inner Stack Trace ----- at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType, Boolean& coercedToDataFeed, Boolean& typeChanged, Boolean allowStreaming) ``` This may be a single backporting oversight, or there may be deeper issues with `DataTable` as a parameter beyond this. Filing because this is the wall I'm hitting at the moment. +19709 area-System.Net Proposal: HttpClientHandler.DangerousAcceptAnyServerCertificateValidator property We have what in my mind is a big problem with HttpClient in 2.0: to use HttpClient with self-signed certs (very common in testing environments), you need to hook up a ServerCertificateCustomValidationCallback; that will override the default verification and can be made to always return true. We do this in all of our HTTP testing in corefx, ASP.NET did it in theirs, etc. Unfortunately, this doesn't work on macOS nor on several Linux distros. The problem is that libcurl only supports the necessary callbacks to enable this when using an OpenSSL backend, and if such a backend isn't in use, we can't enable this delegate callback and thus throw a PlatformNotSupportedException when trying to hook up the delegate. As it stands today, basically none of our https testing for HttpClient is running on macOS/CentOS/RHEL/Fedora, ASP.NET recently had to switch away from HttpClient for their testing because of this, etc. ~~Proposal: We add the following property to HttpClientHandler: public class HttpClientHandler { public bool ValidateServerCertificate { get; set; } = true; ... } The default behavior is as things are today. But if you set ValidateServerCertificate to false, we disable verification, both built-in and custom via the callback. We should be able to do that on all Unix's via libcurl's https://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html, and we can do so on Windows simply by substituting a `delegate { return true; }` delegate (or tweak a setting if there is one).~~ Updated proposal (5/13/2017): We add the following property to HttpClientHandler: ```C# public class HttpClientHandler { public static Func DangerousAcceptAllCertificatesValidator { get; } = delegate { return true; }; ... } ``` A developer can use this delegate with ```C# handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAllCertificatesValidator; ``` For platforms that already support the callback, nothing need change, although they could be optimized to specially recognize this delegate instance to avoid the callback needing to be invoked. For platforms that don't support the callback, we can use object equality to check for this delegate instance: if any other instance is supplied, we continue to throw a PNSE, but if this instance is supplied, we flip the appropriate options so that certificates are not validated and all are accepted. cc: @bartonjs, @davidsh, @cesarbs, @CIPop +19710 area-System.IO Directory.Move no longer moves files "The following works fine with net45 and netcoreapp1.0, throws a `DirectoryNotFoundException` with 2.0. ``` File.Create(""test.txt"").Dispose(); Directory.Move(""test.txt"", ""test2.txt""); ``` " +19712 area-System.Data netstandard2.0: SqlParameter's decimals are coming back with integer precision (SqlClient issue) "I came across this when [updating Dapper to `netstandard2.0`](https://github.com/StackExchange/Dapper/commit/7e5bd308f99b790212e6990bc4ec8b0c72579406). Our unit tests checking for decimal precision accuracy are failing on `netstandard2.0` (yet passing on `netstandard1.6`). The basics are when you select a decimal like `11.884`, it comes back as `12`. This could be an integer issue, or a precision/scale issue, or an ordering issue - I haven't had time to dig in yet, but I wanted to file it ASAP given the `netstandard2.0` time frame. ```c# private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstractApi) { try { using (var cmd = connection.CreateCommand()) { cmd.CommandText = ""create proc #Issue261Direct @c decimal(10,5) OUTPUT as begin set @c=11.884 end""; cmd.ExecuteNonQuery(); } } catch { /* we don't care that it already exists */ } using (var cmd = connection.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = ""#Issue261Direct""; var c = cmd.CreateParameter(); c.ParameterName = ""c""; c.Direction = ParameterDirection.Output; c.Value = DBNull.Value; c.DbType = DbType.Decimal; if (setPrecisionScaleViaAbstractApi) { IDbDataParameter baseParam = c; baseParam.Precision = 10; baseParam.Scale = 5; } else { c.Precision = 10; c.Scale = 5; } cmd.Parameters.Add(c); cmd.ExecuteNonQuery(); decimal value = (decimal)c.Value; value.IsEqualTo(11.884M); } } ``` Actual output: ``` Assert.Equal() Failure Expected: 11.884 Actual: 12 ``` This is a regression from `netstandard1.6`. I'm using the latest SQL Client code available on NuGet: `4.4.0-preview1-25305-02`" +19713 area-System.Reflection Question: How to enumerate forwarded types from facade assemblies via reflection "I am attempting to enumerate the types from facade assemblies (for example System.Xml.Serialization) via reflection. I loaded the assembly via Assembly.Load, but I can't figure out how to get the types, I tried `GetTypes()`, `GetExportedTypes()`, `GetCustomAttributes(typeof(TypeForwardedToAttribute))` and they all return nothing. I am able to explicitly load a type which is forwarded (e.g. `GetType(""System.Xml.Serialization.XmlRootAttribute"")`) so the information is somewhere in there..." +19715 area-Serialization Microsoft.XmlSerializer.Generator Issues +19717 area-System.IO Checking for FileExists || DirectoryExists is not efficient We should implement the code for this internally and look at adding a public API for it. Probably `Path.Exists(string path)`. The internal helper should avoid any sort of path validation/normalization if possible. A bad path, by definition, doesn't exist. At least on the Windows side pre normalizing isn't needed (and wasteful). We should also consider exposing overloads such as `Path.Exists(string path, bool normalize)` to allow users to skip this as well (or perhaps a config switch). +19718 area-System.Net macOS: Can HttpClient do custom cert handling with libcurl+openssl10? Gedankenexperiment: * If OpenSSL/1.0 is the reported backend, run the OpenSSL initializer. * Still fail client auth certificates (non-exportable private keys can't marshal into OpenSSL, and other problems could exist, so just block it) * If OpenSSL/1.0 is the reported backend, register the callbacks/etc as normal. * For the EE (server identity) cert and any presented intermediates, [extract the certificate bytes](https://github.com/dotnet/corefx/blob/5fe5f9aae7b2987adc7082f90712b265bee5eefc/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslX509CertificateReader.cs#L144-L147) to pass to `new X509Certificate2(byte[])`. * [Build the X509Chain](https://github.com/dotnet/corefx/blob/0eeb35b0add4a8d1041a56de85409526c9466cac/src/System.Net.Security/src/System/Net/Security/SecureChannel.cs#L1012-L1022) * Apply [chain and hostname checks](https://github.com/dotnet/corefx/blob/3b19899963606a34e1623e0926b90fe907197ee6/src/System.Net.Security/src/System/Net/CertificateValidationPal.OSX.cs#L13-L46) * Call the callback. +19720 area-Serialization When generate the code for two classes that contains the same collection type, the second one will be ignored If generate the code for two classes that contains the same collection type as the following, it won't generate the write method for the collection in the second class. During the serialization for the object of the second type, it will use the write method generated for the collection in the first type, which will end with conversion error. This also repro on the desktop. ``` public class MyCollection1 : IEnumerable, IEnumerable { private List _values = new List(); … } public class EnumerableCollection : IEnumerable { private List _values = new List(); … } ``` +19721 area-Serialization Cannot generate code for recursive type When generate the code for recursive type, it will throw stackoverflow exception. This also repro on the desktop version. +19722 area-Serialization Fail to generate the code for the classes with the same name but in different namespace When to generate the code for the classes with the same name but in different namespace or class, it will throw the exception during code generation. This also repro in the desktop version. +19723 area-Serialization Fail to generate the code if the type of the class contains any property that only have private setter. During code generation, if any of the class contains the property that only have private setter, it will throw exception. We need ignore this type but not make the code generation fail. This also repro on desktop. +19724 area-Serialization The generated code cannot compile if define the class that use NaN as the default value If to generate the code for the classes that contains the following, the generated code cannot compile. This also repro on the desktop version. ``` [DefaultValue(double.NaN)] public double DoubleProp { get; set; } ``` The generated code is like. Cannot recognize NaN. `if (((global::System.Double)o.@DoubleField) != NaN) ` +19725 area-System.Security Retry failed calls to open SecTrust enumerators. It doesn't seem to fail very often, but I've seen it fail, and CI has seen it fail. Presumably there's some sort of race/sync condition in the OS that's being encountered, so treat it as an intermittent problem and retry. Fixes #19700. +19726 area-Serialization The generated code cannot compile if contains a type with mismatched attribute and property "The generated code for the following class cannot compile. This also repro on the desktop. ``` public class TypeWithMismatchBetweenAttributeAndPropertyType { private int _intValue = 120; [DefaultValue(true), XmlAttribute(""IntValue"")] public int IntValue {get; set;} } ``` The generated code is like `if (((global::System.Int32)o.@IntValue) != true)`" +19727 area-Serialization Codegen not support generic type This also repro in the desktop. +19728 area-Serialization Fail to generate the code if contain the classes with the same XmlType name "Code generation will fail for the following classes. This also repro on the desktop. ``` [XmlType(TypeName = ""MyXmlType"")] public class TypeWithStringArrayAsXmlAttribute { [XmlAttribute(Form = XmlSchemaForm.Qualified)] public string[] XmlAttributeForms; } [XmlType(TypeName = ""MyXmlType"")] public class TypeWithTypeNameInXmlTypeAttribute { [XmlAttribute(Form = XmlSchemaForm.Qualified)] public string XmlAttributeForm; } ``` " +19729 area-Serialization The namespace of mapping is null for the pregenerated serializer The namespace of the mapping of the XmlSerializer is empty string in regular case but it is null when loaded from the pregenerated serialization assembly. This also repro on the desktop. +19730 area-Serialization The serialized string doesn't contain the encoding when using pregenerated serializer "The serialized string miss encoding part ""encoding=\""utf-8\"""". But all serialization and deserialization works fine." +19731 area-System.Runtime TypeLoadException is thrown when calling 'GetEnumerator()' on a COM object that has been successfully casted to 'IEnumerable' "This is happening with `netcoreapp2.0` version `2.0.0-preview1-002106-00`, on windows 10 desktop. Summary ---------- I get the [ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974(v=vs.85).aspx) object by calling `Shell.Application.Windows()` method with C#. The `ShellWindows` object is enumerable, and it can be successfully cast to `IEnumerable`. After that, when I call `GetEnumerator()` on the casted IEnumerable object, a TypeLoadException is thrown: ``` Could not load type 'System.Runtime.InteropServices.ComTypes.IEnumerable' from assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' ``` Will the type `System.Runtime.InteropServices.ComTypes.IEnumerable` be added to .NET Core 2.0? Repro ------ ```CSharp using System; using System.Collections; using System.Runtime.InteropServices; using ComTypes = System.Runtime.InteropServices.ComTypes; namespace COMTest { class Program { static void Main(string[] args) { Guid clsId; int result = CLSIDFromProgID(""Shell.Application"", out clsId); Type type = Marshal.GetTypeFromCLSID(clsId); if (type == null) { Console.WriteLine(""Failed to get type from CLSID""); return; } object obj = Activator.CreateInstance(type); int dispId = GetDispId(obj, ""Windows""); if (dispId == -1) { return; } object windows = Invoke(obj as IDispatch, dispId); IEnumerable enumerable = windows as IEnumerable; if (enumerable == null) { Console.WriteLine(""Cannot cast COM object to IEnumerable""); return; } try { var enumerator = enumerable.GetEnumerator(); if (enumerator == null) { Console.WriteLine(""Cannot get enumerator""); return; } if (enumerator.MoveNext()) { Console.WriteLine(""MoveNext runs successfully""); } } catch (Exception ex) { Console.WriteLine(""Exception caught from 'GetEnumerator()': {0}"", ex.Message); Console.WriteLine(""StackTrace:\n{0}"", ex.StackTrace); if (ex.InnerException != null) { Console.WriteLine(""\nInnerException: {0}"", ex.InnerException.Message); Console.WriteLine(""StackTrace:\n{0}"", ex.InnerException.StackTrace); } } } static int GetDispId(object rcw, string methodName) { IDispatch dispatchObject = rcw as IDispatch; if (dispatchObject == null) { Console.WriteLine(""Passed-in argument is not a IDispatch object""); return -1; } int[] dispIds = new int[1]; Guid emtpyRiid = Guid.Empty; dispatchObject.GetIDsOfNames( emtpyRiid, new string[] { methodName }, 1, 0, dispIds); if (dispIds[0] == -1) { Console.WriteLine(""Method name {0} cannot be recognized."", methodName); } return dispIds[0]; } static object Invoke(IDispatch target, int dispId) { if (target == null) { Console.WriteLine(""Cannot cast target to IDispatch.""); return null; } IntPtr variantArgArray = IntPtr.Zero, dispIdArray = IntPtr.Zero, tmpVariants = IntPtr.Zero; int argCount = 0; var paramArray = new ComTypes.DISPPARAMS[1]; paramArray[0].rgvarg = variantArgArray; paramArray[0].cArgs = argCount; paramArray[0].cNamedArgs = 0; paramArray[0].rgdispidNamedArgs = IntPtr.Zero; ComTypes.EXCEPINFO info = default(ComTypes.EXCEPINFO); object result = null; try { uint puArgErrNotUsed = 0; target.Invoke(dispId, new Guid(), 0x0409, ComTypes.INVOKEKIND.INVOKE_FUNC, paramArray, out result, out info, out puArgErrNotUsed); } catch (Exception ex) { Console.WriteLine(""IDispatch.Invoke failed: {0}"", ex.Message); } return result; } [DllImport(""ole32.dll"")] internal static extern int CLSIDFromProgID([MarshalAs(UnmanagedType.LPWStr)] string lpszProgID, out Guid pclsid); } [Guid(""00020400-0000-0000-c000-000000000046"")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [ComImport] internal interface IDispatch { [PreserveSig] int GetTypeInfoCount(out int info); [PreserveSig] int GetTypeInfo(int iTInfo, int lcid, out ComTypes.ITypeInfo ppTInfo); void GetIDsOfNames( [MarshalAs(UnmanagedType.LPStruct)] Guid iid, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)] string[] rgszNames, int cNames, int lcid, [Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.I4)] int[] rgDispId); void Invoke( int dispIdMember, [MarshalAs(UnmanagedType.LPStruct)] Guid iid, int lcid, ComTypes.INVOKEKIND wFlags, [In, Out] [MarshalAs(UnmanagedType.LPArray)] ComTypes.DISPPARAMS[] paramArray, out object pVarResult, out ComTypes.EXCEPINFO pExcepInfo, out uint puArgErr); } } ``` Expected Result ----------------- `GetEnumerator()` is successful, and then `MoveNext()` works too. Actual Result --------------- ``` PS:73> dotnet run Exception caught from 'GetEnumerator()': Could not load type 'System.Runtime.InteropServices.ComTypes.IEnumerable' from assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. StackTrace: at System.Collections.IEnumerable.GetEnumerator() at COMTest.Program.Main(String[] args) ``` Environment -------------- ``` PS:74> dotnet --info .NET Command Line Tools (2.0.0-preview1-005952) Product Information: Version: 2.0.0-preview1-005952 Commit SHA-1 hash: 356e309f17 Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: ...\AppData\Local\Microsoft\dotnet\sdk\2.0.0-preview1-005952\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002106-00 Build : 86fe9816c8ba782241c441c3228c665e393c3ef3 ```" +19732 area-System.Net HttpWebRequest difference in behavior between .Net Core and Desktop If we run the following code: ```cs HttpWebRequest request = HttpWebRequest.CreateHttp(url); request.BeginGetResponse(null, null); request.BeginGetRequestStream(null, null); ``` When the `HttpMethod` doesn't support getting a request stream, i.e: `HttpMethod.Get`; in desktop we will get a `ProtocolViolationException` and in Net Core we will get an `InvalidOperationException` because the request was already submitted through `request.BeginGetResponse(null, null);`. However if we don't submit the request and only do: ```cs HttpWebRequest request = HttpWebRequest.CreateHttp(url); request.BeginGetRequestStream(null, null); ``` Both platforms will throw a `ProtocolViolationException`. This is because in .Net Core we are checking first if the request was submitted, and in Desktop the first thing we do is checking if the current protocol is valid. #### Netcore http://source.dot.net/#System.Net.Requests/System/Net/HttpWebRequest.cs,1026 #### Desktop https://referencesource.microsoft.com/#System/net/System/Net/HttpWebRequest.cs,1515 However if we want to match behaviors by doing the protocol first in [.NET Core](http://source.dot.net/#System.Net.Requests/System/Net/HttpWebRequest.cs,1034) to match Desktop's behavior we would be introducing a breaking change because we already shipped this behavior in 1.1 and 1.0 Which one we care most, being compatible with Desktop or with core previous versions? cc: @stephentoub @davidsh @ViktorHofer +19733 area-Serialization Fix several codegen issues 1. Remove the attribute class from the code generator 2. Add TimeSpan support in codegen 3. Pass the namespace information when load generated assembly +19735 area-System.Xml Fixed two System.Xml uap errors Basically moving to temporary paths and using the right overload in XmlReader. The hard thing was to find out that xml validation will fail if the directory doesn't have a trailing slash. Thanks krwq! https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170512.03/workItem/System.Xml.XmlSchema.XmlSchemaValidatorApi.Tests/analysis/xunit/System.Xml.Tests.TCXmlSchemaValidatorMisc~2FXSDValidationGeneratesInvalidError_1 https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170512.03/workItem/System.Xml.XmlSchemaSet.Tests/analysis/xunit/System.Xml.Tests.TC_SchemaSet_Compile~2FTFS_470021 +19736 area-System.Net Match desktop behavior GetRequestStream/BeginGetRequestStream throws on invalid verb Fixes: https://github.com/dotnet/corefx/issues/19732 +19737 area-Serialization Fix several code generator issues. Fix the following issues. 1. Remove the attribute class from the generator 2. Add TimeSpan support in codegen 3. Pass the namespace information when load generated assembly Fix #19733 @shmao @zhenlan @mconnew +19738 area-System.IO Use SetThreadErrorMode instead of SetErrorMode SetErrorMode Windows API is process global and thus it suffers from race condition when multiple threads are flipping the error mode back and forth. File I/O on Windows should be using SetThreadErrorMode instead (this API is supported on Win7+). The full framework calls SetThreadErrorMode on Win7+: https://github.com/Microsoft/referencesource/blob/4fe4349175f4c5091d972a7e56ea12012f1e7170/mscorlib/microsoft/win32/win32native.cs#L1480. Calling SetThreadErrorMode instead of SetErrorMode will both fix the race condition and improve compatibility with full framework. +19739 area-System.Data Add LongRunning option to managed SNI async reads When running Entity Framework tests in parallel, some MARS async reads hang for 30+ seconds until they timeout. This issue persists even when only running a single test with parallelization enabled. After adding the LongRunning task continuation option, these async reads complete immediately. So it's likely a thread availability/scheduling issue with the async reads that's resolved by oversubscription from the LongRunning option. Fixes https://github.com/dotnet/corefx/issues/19810 +19741 area-System.Data Add assert failure messages to TcpDefaultForAzureTest, and merge its redundant OS-specific tests Fixes https://github.com/dotnet/corefx/issues/19028 +19742 area-System.Runtime Scale back [Serializable] CoreFX types This is the first step toward #19119. The intent is to only put SerializableAttribute on types where: 1. The types can be correctly serialized between runtimes, versions, and operating systems. This was determined by looking at types that have runtime or OS dependencies or are highly subject to change. 2. The types are clearly important for users to create their own serializable types. This was determined by analyzing serialization usage data along with adding types that complete sets or are needed in order to serialize other types. In all, about 100 types will continue to be serializable by BinaryFormatter. Of course, it's possible we've excluded an important type. We have chosen to start with a conservative set, but to expand it as necessary based on user feedback. This change removes SerializableAttribute from the CoreFX types that didn't make the list as well as removing testing for serializing those types. Future changes will include: * Making similar sweeps through CoreCLR and CoreRT * Changes to make serializing these types compatible where their serialized form doesn't match .NET Framework. +19743 area-System.Data Possible bug in System.Data.SqlClient, with LocalDB and Stored Procedures "While porting some code from .Net 4.5 to core, I noticed a possible bug and currently see no workaround. It is a DOTNET CORE project, with all the latest nuget packages (v2.0 preview). It is being build with Usual Studio 2017 15.1. Details of the exception: System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first. at System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command) at System.Data.SqlClient.SqlCommand.ValidateCommand(Boolean async, String method) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlClient.SqlCommand.ExecuteReader() at DbBug.Program.Main(String[] args) in z:\TFS\IDB\etc\GKW\test\DbBug\Program.cs:line 43 In the full .NET Framework, the same code is running without problems. Outline of the behavior is: - I'm using a connection for a sequence of database operations. - After doing some work with this connection, BeginTransaction fails with the above exception. - When I close and reopen the connection just before BeginTransaction, this statement runs without problems. - But then, after running some commands inside this connection, the call to transaction.Commit() fails with the same exception. I am very carefull with the DataReader, closing it after every use. The problem only happens, if the connection is not closed before reading for the second time. REPRO: ```c# using System; using System.Data; using System.Data.SqlClient; // namespace DbBug { // class Program { // static void Main( string[] args ) { var connection_string = ""Address=(localdb)\\LocalZDB;Database=ZENDB;UID=ZENDB;PWD=DbZenPw2017;WSID=GROOVE;Application Name=Db.Tests;Integrated Security=False;Max Pool Size=32;Min Pool Size=2;Pooling=true""; var connection = new SqlConnection( connection_string ); connection.Open(); // IDataReader rdr = null; int count = 0; try { string sql = ""EXEC [ZENDB].[dbo].UserReadAll""; var cmd = connection.CreateCommand(); cmd.CommandText = sql; cmd.CommandTimeout = 1000; rdr = cmd.ExecuteReader(); // while ( rdr.Read() ) { var id = rdr.IsDBNull( 0 ) ? 0 : rdr.GetInt64( 0 ); count++; } } catch ( Exception ex ) { Console.WriteLine( ex.ToString() ); } finally { if ( rdr != null ) rdr.Close(); //connection.Close(); } var c = rdr.IsClosed; // //connection.Open(); rdr = null; count = 0; try { string sql = ""EXEC [ZENDB].[dbo].UserReadAll""; var cmd = connection.CreateCommand(); cmd.CommandText = sql; cmd.CommandTimeout = 1000; rdr = cmd.ExecuteReader(); // while ( rdr.Read() ) { var id = rdr.IsDBNull( 0 ) ? 0 : rdr.GetInt64( 0 ); count++; } } catch ( Exception ex ) { Console.WriteLine( ex.ToString() ); } finally { if ( rdr != null ) rdr.Close(); connection.Close(); } } } } ```" +19744 area-System.Net HttpStreamAsyncResult.CompletedSynchronously is broken on Unix In the managed implementation of HttpListener, it always returns true. +19746 area-System.Net Add Usable HttpStatusCodes Including a handful of HttpStatusCodes that could be used +19748 area-System.Data netstandard2.0: SqlDataReader doesn't implement GetSchemaTable() There's a disconnect between the `netstandard2.0` intent and actual implementations here, resulting in runtime errors on things that call `.GetSchemaTable()`. The way ADO.NET is setup, `DbDataReader` has added some methods over time (since adding to interfaces is bad), of these `.GetSchemaTable()` is one brought back in `netstandard2.0`. It's a virtual that each implementation needs to override. [Here's the Core FX `DbDataReader.GetSchemaTable()`](https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DbDataReader.cs#L57): ```c# public virtual DataTable GetSchemaTable() { throw new NotSupportedException(); } ``` The problem is [`SqlDataReader` never overrides this](https://github.com/dotnet/corefx/blob/84d5d7e278249a8c3682801a05ff505cd489ebb1/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlDataReader.cs). For comparison, here's reference source for .NET 4.x [where this does happen](https://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlDataReader.cs,1396). In the current state, the result is a `NotSupportedException` when actually calling the method: ``` System.NotSupportedException : Specified method is not supported. Stack Trace: at System.Data.Common.DbDataReader.GetSchemaTable() at System.Data.ProviderBase.SchemaMapping..ctor(DataAdapter adapter, DataSet dataset, DataTable datatable, DataReaderContainer dataReader, Boolean keyInfo, SchemaType schemaType, String sourceTableName, Boolean gettingData, DataColumn parentChapterColumn, Object parentChapterValue) at System.Data.Common.DataAdapter.FillMappingInternal(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 schemaCount, DataColumn parentChapterColumn, Object parentChapterValue) at System.Data.Common.DataAdapter.FillMapping(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 schemaCount, DataColumn parentChapterColumn, Object parentChapterValue) at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) at System.Data.DataTable.Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler) at System.Data.DataTable.Load(IDataReader reader) ``` Note that this wasn't calling it directly, it was trying to use `DataTable` much further away. So there's quite a few places this is used. I think this was just an oversight after `DataTable` and truckloads of other things were brought back for `netstandard2.0`. Can we please get this in so it's usable? Past issues for context on more usages (for prioritization): - #1039 - #3423 Related concern: this isn't listed in #17126 because it compiles and doesn't have a `PlatformNotSupportedException`, but it's obviously missing. I think we need a separate API call for ADO.NET for things that aren't overridden in CoreFX, that's the superset of items we need to narrow down and fill the gaps on. Not everything should be overridden, but that's likely the easiest list to generate and quickly narrow down. +19749 area-System.Data Scan SqlClient for missing overrides and interface implementations We got 2 reports on .NET Core 2.0 Preview 1 which point to a class of problems we missed: * #19712 - Missing interface implementation `System.Data.SqlClient.SqlParameter : IDbDataParameter` (fixed in PR #19734) (reported by @NickCraver) * #19748 - Missing override `System.Data.SqlClient.SqlDataReader.GetSchemaTable` (reported by @NickCraver) * #19651 & #19673 - Missing override `System.Data.SqlClient.SqlClientFactory.CreateDataAdapter` (fixed in PR #19682 by @justinvp) (reported by @RickStrahl & @FransBouma) I think we need to boost our compat tooling, identify all missing overrides and interface (re)implementations and review all instances. We should probably think deeply if we are missing any other problem classes - we had a list of things we didn't scan for, so maybe we should review it carefully again? (I remember I asked about the overrides, but didn't dig deeper into it) cc @danmosemsft @stephentoub @Petermarcu +19750 area-System.IO Deactivating System.IO.FileSystem.AccessControl tests on uap/uapaot TargetGroup=uap/uapaot > Access Control List (ACL) APIs are part of resource management on Windows and are not supported on this platform. Deactivating tests. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170513.02/workItem/System.IO.FileSystem.AccessControl.Tests +19751 area-System.IO Fixing uap/uapaot test issues in System.IO.Compression.ZipFile Fixes two System.IO.Compression.ZipFile tempdir issues. Using temppath instead of directly reading from execution location. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170513.02/workItem/System.IO.Compression.ZipFile.Tests +19752 area-System.IO Fixing uap/uapaot test issues in System.IO.FileSystem.DriveInfo Changes validation of certain properties when in AppContainer. Fixes: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170513.02/workItem/System.IO.FileSystem.DriveInfo.Tests +19753 area-System.Net HttpWebRequest.Host throw new PlatformNotSupportedException() "Hi, HttpWebRequest.Host throw new PlatformNotSupportedException() Why ? Limitation ? Host is usefull to test a web farm. We use server IP to connect and Host to define the web site to test. ```C# HttpWebRequest request = HttpWebRequest.CreateHttp(""https://X.X.X.X""); request.UserAgent = ""Mozilla/5.0 (compatible; )""; request.Timeout = 10000; request.Host = uri.Host; ```" +19754 area-System.Net UnknownHeaders_Success HttpListener test always hangs for me locally on Windows It apparently passes in CI, but every run for me hangs. The test sends 1000 custom headers to the server and validates they were all received: when I change the number to 998 or less, it passes quickly, but when it's 999 or greater, it hangs. It runs successfully in all cases on netfx. +19755 area-System.Net Fix hang in HttpListener test - Fix hang in test that occurs when the client receives back a 400 Bad Request such that the server task never completes - Split the test into ones with a small and large number of headers, and disable the latter with ActiveIssue https://github.com/dotnet/corefx/issues/19754 cc: @Priya91, @hughbe, @ViktorHofer +19757 area-System.Net Fix several GetClientCertificate tests for the managed implementation of HttpListener Contributes to #18128 @stephentoub @Priya91 @ViktorHofer +19758 area-Meta Fix a bunch of random test failures on ILC - PlatformDetection - GetEnvironmentVariable() still returns null on ILC - but Environment.GetSpecialFolder() is fully functional (and it's a preferred idiom.) - Other stuff is self-explanatory. +19759 area-Meta Enable most corefx tests for Bash on Windows Many corefx tests are skipped when running on Bash on Windows. As of Win10 Creators Update, most of these skipped tests now pass, so they can now be enabled. +19760 area-System.IO Fix 180 uap/uapaot tests in System.IO.MemoryMappedFiles.Tests MemoryMappedFileAccess.ReadExecute or MemoryMappedFileAccess.ReadWriteExecute isn't permitted inside an AppContainer. Fixes 180 tests here: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170515.01/workItem/System.IO.MemoryMappedFiles.Tests +19761 area-System.Net Add tests for HttpListenerContext.AcceptWebSocketAsync and fix the managed implementation First commit fixes duplicate code and adds a missing EditorBrowsable attribute to a method Second commit cleans up platform independent code for validating the arguments to AcceptWebSocketAsync in preparation for fixing the managed implementation Third commit adds a bunch of tests for functionality related to this method (they passed before this PR). It then fixes the tests for the managed implementation. Previously almost all of these tests failed with either debug assertitions, incorrect exceptions thrown or no exception thrown. Contributes to #18128 @stephentoub @priya91 @viktorhofer +19762 area-System.Runtime "Tests under: System.Reflection.Tests.AssemblyTests failed with ""System.TypeInitializationException""" Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyTests/AssemblyLoadFromBytes` has failed. System.TypeInitializationException : The type initializer for 'System.Reflection.Tests.AssemblyTests' threw an exception.\r ---- System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\6c8c89ca-0ac6-4877-98bf-ada297eaef14\\Work\\b2e4e6b9-cf66-4e4a-8383-2a5fe6a90460\\Unzip\\TestAssembly' is denied. Stack Trace: at System.Reflection.Tests.AssemblyTests.AssemblyLoadFromBytes() ----- Inner Stack Trace ----- at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Directory.CreateDirectory(String path) at System.Reflection.Tests.AssemblyTests..cctor() Build : Master - 20170515.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170515.01/workItem/System.Runtime.Tests/analysis/xunit/System.Reflection.Tests.AssemblyTests~2FAssemblyLoadFromBytes +19763 area-System.IO "Test: System.IO.Tests.DirectoryInfo_Create/RootPath failed with ""System.IO.DirectoryNotFoundException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_Create/RootPath` has failed. System.IO.DirectoryNotFoundException : Could not find a part of the path 'C:\\'. Stack Trace: at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Tests.DirectoryInfo_Create.Create(String path) at System.IO.Tests.Directory_CreateDirectory.RootPath() Build : Master - 20170515.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170515.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Create~2FRootPath +19764 area-System.Security "Test: System.Security.Claims.ClaimTests/Claim_SerializeDeserialize_Roundtrip failed with ""Xunit.Sdk.NullException""" "Opened on behalf of @Jiayili1 The test `System.Security.Claims.ClaimTests/Claim_SerializeDeserialize_Roundtrip` has failed. Assert.Null() Failure\r Expected: (null)\r Actual: ClaimsIdentity { Actor = null, AuthenticationType = \""someAuthType\"", BootstrapContext = null, Claims = [], IsAuthenticated = True, ... } Stack Trace: at System.Security.Claims.ClaimTests.Claim_SerializeDeserialize_Roundtrip() Build : Master - 20170515.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170515.01/workItem/System.Security.Claims.Tests/analysis/xunit/System.Security.Claims.ClaimTests~2FClaim_SerializeDeserialize_Roundtrip" +19765 area-System.Runtime ConditionalWeakTable causes a memory leak if one of their values references the table Hi, I found an odd behavior of `System.Runtime.CompilerServices.ConditionalWeakTable` in both .NET Core and .NET Framework which looks like a bug to me: If you create multiple instances of the `ConditionalWeakTable` and store a key-value pairs in them, where the key stays alive and the value contains a reference to the `ConditionalWeakTable`, the values are not garbage-collected after they (and the `ConditionalWeakTable`s) are no longer referenced. For example, create a .NET Core Console application with the following code: ```c# using System; using System.Runtime.CompilerServices; namespace ConsoleApp { class Program { static void Main(string[] args) { object key = new object(); while (true) { var table = new ConditionalWeakTable>(); table.Add(key, new Tuple(table, new byte[1000000])); GC.Collect(); } } } } ``` Expected behavior: The memory consumption of the program should stay in the same area, because when a new `ConditionalWeakTable` instance is created, there are no more references to the previous `ConditionalWeakTable` and its `Tuple` value, so they should be able to be reclaimed by the Garbage Collector. Actual behavior: The memory consumption rises rapidly (4 GB after some seconds) until an `OutOfMemoryException` is thrown, as the byte arrays are not reclaimed by the garbage collector. However, if you remove the reference to the table by replacing `table.Add(...)` with `table.Add(key, new Tuple(null, new byte[1000000]))`, the problem disappears. If the algorithm cannot be implemented such that it can detect that there are no more references to the table and its values, I think the `ConditionalWeakTable` should implement a `Dispose()` method that allows to clear all key-value-pairs. The behavior is the same for .NET Core (.NETCoreAPP 1.1) and .NET Framework 4.6.2. Thanks! +19767 area-Infrastructure The plugin hasn't been performed correctly: Problem on deletion failed in ci CI tests pass, but plugin fails to report results [xUnit] [ERROR] - The plugin hasn't been performed correctly: Problem on deletion detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_osx_debug/47/consoleFull#-7738886783554902-aff0-4799-9e92-0ada24ce2a06 +19768 area-System.Net System.Net.Http.WinHttpException: %1 I use httpclient to send http request,When I use this method ReadAsStringAsync to read content , this exception occurs. the netstandard version is netstandard1.3; My system is window 10 Professional; this is the code: `Var responseMessage = await HttpClient.SendAsync (Request, HttpCompletionOption.ResponseHeadersRead, CancellationToken) .ConfigureAwait (false); var content = await responseMessage.Content.ReadAsStringAsync(); ` - The following is the exception stack information ` System.IO.IOException : The read operation failed, see inner exception. at FeiniuBus.Runtime.HttpWebRequestMessage.d__21.MoveNext() in D:\work\feiniubus-sdk-net\src\FeiniuBusSDK.Core\Runtime\HttpRequestMessageFactory.cs:line 230 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at FeiniuBus.Runtime.Internal.HttpHandler`1.d__3`1.MoveNext() in D:\work\feiniubus-sdk-net\src\FeiniuBusSDK.Core\Runtime\Internal\HttpHandler.cs:line 54 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at FeiniuBus.Runtime.Internal.Unmarshaller.d__2`1.MoveNext() in D:\work\feiniubus-sdk-net\src\FeiniuBusSDK.Core\Runtime\Internal\Unmarshaller.cs:line 18 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at FeiniuBus.Runtime.Internal.ErrorHandler.d__4`1.MoveNext() in D:\work\feiniubus-sdk-net\src\FeiniuBusSDK.Core\Runtime\Internal\ErrorHandler.cs:line 25 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at FeiniuBus.Runtime.Internal.ErrorHandler.d__4`1.MoveNext() in D:\work\feiniubus-sdk-net\src\FeiniuBusSDK.Core\Runtime\Internal\ErrorHandler.cs:line 32 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at FeiniuBusSDK.Core.Runtime.Internal.CredentialsRetriever.d__4`1.MoveNext() in D:\work\feiniubus-sdk-net\src\FeiniuBusSDK.Core\Runtime\Internal\CredentialsRetriever.cs:line 23 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at FeiniuBusSDK.Tests.DispatchTests.d__5.MoveNext() in D:\work\feiniubus-sdk-net\test\FeiniuBusSDK.Tests\DispatchTests.cs:line 83 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- ` +19769 area-System.Numerics Add indexer to MatrixXxX es (preferably ref returning) "I would like to be able to query any value of matrix using indexer Like: ```c# Matrix4x4 m=.... var firstRowColumn=m[0,0]; //equivalent to m.M11 ``` This is mainly convenience, but become big one if one want to get matrix property ""randomly"" e.g. in `for` loop. In this case one must write pretty big `if` `else` block or `switch`. `ref` might be useful to be able to send matrixes to graphic libraries efficiently and conveniently. Next use case is migrating between vector libraries that support indexers (like `OpenTk`) Note: `ref` returning indexer shouldnt be problem there because omitting `ref` when calling means automatic dereference so in theory one could just change `using` and recomplie without problems (assuming no issues with world coordinates etc.) Since `ref` and `out` alternative methods got postponed, i think patch with them is perfect to include ref indexers as well unless you want to backport them to ealier versions of c# than 7 EDIT: If you decide to implement ref indexer without changing internal representation, i think it could be implemented using `Unsafe.Add`. Something along these lines: ```c# public ref float this[int row,int col]{ get{ if(row<0 || row>3 || col<0 || col>3) throw new IndexOutOfRangeException(); var index=0; if(row is 1) index=4; else if(row is 2) index=8; else if(row is 3) index=12; index+=col; return ref Unsafe.Add(ref this.M11,index ); } } ``` EDIT 2: With spans available, you could implement indexers for retrieving only row or only column (return 4-elements span which is constructed using `DangerousCreate(this, ref this.MdesiredRow0, 4)`, Column is more tricky and probably would be implemented as tuple or float[4] since column arent layed out in continguous blocks, unless you add 'jumping' every X elements support to spans. Or just return span over whole matrix and force users to deal with 'jumping') " +19771 area-System.Data Port DatasetExtensions to .NET Core Anyones knows if .AsEnumerable() propertie will be available for datatable on .net core +19773 area-System.Runtime Unload assembly from runtime Hello, Now that AppDomains have been removed from .NET Core, how does one unload an assembly from memory once it has been loaded? AssemblyLoadContext has an Unloading event but no way to programmatically trigger the unload of an assembly +19781 area-Infrastructure Remove sources from our symbol packages We've gone to a lot of effort to preserve building symbols packages including source in those packages. Certainly we need to flow symbols to core-setup in our transport packages so that we can produce symbols zips for shared framework, that is not in question. The things that are in question are the following: 1. Do we need symbols.nupkgs at all? 2. If we do produce them, do they need to contain source files? @dagood added this infrastructure in 1.0 and we've done work to keep it working in 2.0 with the flattened packages. /cc @dagood @weshaggard @gkhanna79 @chcosta +19782 area-System.Threading Enable some threading overlapped tests on Unix - Depends on https://github.com/dotnet/coreclr/pull/11613 - Tests for https://github.com/dotnet/corefx/issues/19785 +19783 area-System.Net UWP Compability with .NET Standard System.Net.Security @taoyouh commented on [Sat May 13 2017](https://github.com/dotnet/standard/issues/343) Though System.Net.Security.SslStream is not in the .Net Standard 1.4, but the NuGet package System.Net.Security supports .NET Standard 1.3. So it's supposed to support Universal Windows Platform 10.0. I installed the package to a UWP project targeting 10.0.15063 and try to reference it, only getting the following exception: > System.IO.FileNotFoundException:“Could not load file or assembly 'System.Net.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 系统找不到指定的文件。(System cannot find the file)” The referencing code is very simple: ` Stream str = new MemoryStream(); SslStream stream = new SslStream(str);` +19784 area-System.Runtime FileVersionInfo.InternalName on Unix. On Unix, FileVersionInfo.GetVersionInfo() unconditionally sets the FileVersionInfo.InternalName property to be the same as a FileVersionInfo.OriginalFileName property. On Windows. these are two distinct properties that can be set individually. +19785 area-System.Threading ThreadPoolBoundHandle.BindHandle should not be supported on Unix ThreadPool.BindHandle always returns false on Unix, so ThreadPoolBoundHandle.BindHandle would fail the assertion. It should throw PNSE. +19786 area-System.Threading Enable some threading overlapped tests on Unix - Port of https://github.com/dotnet/corefx/pull/19782 - Depends on https://github.com/dotnet/coreclr/pull/11616 - Tests for and closes https://github.com/dotnet/corefx/issues/19785 +19787 area-System.IO Port some WindowsRuntime tests Port tests for converting to WinRT streams. Change from MSTest, add usings, match style guidelines. UWP specific, test only changes. +19788 area-System.Runtime Add System.Runtime.CompilerServices.RuntimeFeature.PortablePdb "Currently there is no support for Portable PDBs in Desktop FX. We are finishing support in stack traces for portable and embedded PDBs for 4.7.1. Features that generate code at runtime (such as scripting) would benefit from being able to detect whether the runtime supports Portable PDBs or not, as they could emit Portable PDBs instead of Windows PDBs. Emitting Portable PDBs has perf benefits. In order to make the feature detection consistent across all platforms we propose to add the following APIs to netstandard as well. # Proposed API ```C# namespace System.Runtime.CompilerServices { public static class RuntimeFeature { public const string PortablePdb = nameof(PortablePdb); // returns true for feature == ""PortablePdb"" public static bool IsSupported(string feature); } } // Usage if (RuntimeFeature.IsSupported(""PortablePdb"") { // Emit code with Portable debug info } ```" +19789 area-System.Reflection Need Reflection api to enumerate type-forwards in an assembly. **Proposed Api** ```c# class Assembly { public virtual Type[] GetForwardedTypes() { throw new NotImplemented.ByDesign; } } ``` Gets the Types exposed by this assembly but defined in another assembly. If one or more Types fail to load (perhaps because the forwardee assembly cannot be found), this api throws a **ReflectionTypeLoadException**. The **ReflectionTypeLoadException**'s **Types** and **LoaderExceptions** property can be queried to recover the Types that did successfully load. (Works similarly to **Assembly.GetTypes()** (https://msdn.microsoft.com/en-us/library/system.reflection.assembly.gettypes(v=vs.110).aspx)) **Why is the api signature so retro?** This is a companion api to **Assembly.GetTypes()** and follows its form. We could also have used **Assembly.DefinedTypes** as a template but that form has two problems: - That api was introduced for the aborted .Net Core 1.0 refactoring and returns **TypeInfo** rather than **Type**. **TypeInfo** is now a historical curiosity and an unnecessary distraction. **Assembly.GetTypes()** has the incumbency advantage. - The **IEnumerable** form is intended to imply lazy list generation which is at odds with the **ReflectionTypeLoadException** mechanism of salvaging partial results in the event of type load exceptions. The docs are silent as to whether you can recover partial results with this form. **Use case** This was always a functionality hole in Reflection and in this world of refactoring-happy .Net Core, type forwarders are everywhere, even in reference assemblies. We've already had one issue raised about this (https://github.com/dotnet/corefx/issues/19713) as it used to be possible to enumerate System.Xml's surface area with Reflection but no longer. **Nested Types** The returned array will include any nested types within returned types whose visibility (and that of its containing nested types) is **NestedPublic**. This reflects the ECMA-335 rule that the ExportedTypes table can only contain types that are **Public** or **NestedPublic**. Nested types will be returned whether or not the ExportedType table contains a separate entry for the nested type (as the presence or absence of it has no effect on whether the nested type can be resolved through that assembly.) **AssemblyBuilder** AssemblyBuilder does not override GetTypes() and there's no burning reason to override GetForwardedTypes() either. It's not like you can add type forwards using RefEmit today. +19791 area-System.Net Fix SendAsync on Unix with multiple buffers In the implementation of Send{To}Async for a list of array segments, we try to do the send operation synchronously, and if it doesn't send the full amount (e.g. because it does one send that's less than the full amount and then tries to complete it but gets an EAGAIN), we then fall back to creating a SendOperation that stores the data to try again later with the remainder. But the number of bytes sent in that initial set of operations wasn't being copied into that SendOperation data structure, so although the data had been sent and although we were correctly updating the pointers to what to send next and when we were done sending, the actual total number of BytesTransferred at the end of the operation would be missing the sum from that initial successful set of synchronous sends prior to the EAGAIN. The fix is simply to store the initial bytesSent into BytesTransferred, as is done for every other send operation on SocketAsyncContext. I also added an explicit test for this, rather than relying on modifying our perf tests to catch it. Fixes https://github.com/dotnet/corefx/issues/19307 cc: @steveharter, @Priya91, @davidsh, @cipop, @geoffkizer +19792 area-Infrastructure Add Gentoo Linux and Buildroot RIDs Currently Gentoo Linux and Buildroot (a system to build embedded Linux images) is not in the list of RIDs. These two commits adds them. Gentoo is using a rolling release cycle, so there is no version number. For more info on Gentoo, please see the discussion on this pull request on core-setup: https://github.com/dotnet/core-setup/pull/2381 +19793 area-System.Net "UseCallback_BadCertificate_ExpectedPolicyErrors failing in CI with ""a security error occurred""" "I thought we had an issue for this but I can't find it, so I'm opening a new one. Please consolidate as necessary... e.g. https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug_prtest/72/consoleText https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_debug_prtest/7/consoleText ``` System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.UseCallback_BadCertificate_ExpectedPolicyErrors(url: \""https://wrong.host.badssl.com/\"", expectedErrors: RemoteCertificateNameMismatch) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : A security error occurred Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() D:\j\workspace\outerloop_net---92aeb271\src\System.Net.Http\src\System\Net\Http\HttpClient.cs(462,0): at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() D:\j\workspace\outerloop_net---92aeb271\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.ServerCertificates.cs(234,0): at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- D:\j\workspace\outerloop_net---92aeb271\src\System.Runtime.Extensions\src\System\Environment.cs(163,0): at System.Environment.get_StackTrace() D:\j\workspace\outerloop_net---92aeb271\src\Common\src\System\Runtime\ExceptionServices\ExceptionStackTrace.cs(23,0): at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) D:\j\workspace\outerloop_net---92aeb271\src\Common\src\System\Net\Http\WinHttpException.cs(51,0): at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) D:\j\workspace\outerloop_net---92aeb271\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs(308,0): at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) D:\j\workspace\outerloop_net---92aeb271\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs(104,0): at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) D:\j\workspace\outerloop_net---92aeb271\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs(47,0): at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) --- End of stack trace from AddCurrentStack --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() D:\j\workspace\outerloop_net---92aeb271\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs(62,0): at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() D:\j\workspace\outerloop_net---92aeb271\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs(856,0): at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` " +19794 area-Infrastructure New Contributor - Build-Tests Fails on Clean Clone "Hey Guys, I've decided to help out on the dead code issue (#17905), I have followed the repo's instructions on forking; cloning and building the root repository, and I'm finding test errors before I even start on changes required for #17905. Here are the errors I have received when running **build-test.cmd** in root: Build FAILED. ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj"" (Test target) (88:3) -> (RunTestsForProject target) -> c:\dotnet\corefx\Tools\tests.targets(338,5): warning : System.Net.NameResolution.Functional.Tests Total: 53, Errors: 0, Failed: 9, Skipped: 0, Time: 17.563s [c:\dotnet\corefx\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj] c:\dotnet\corefx\Tools\tests.targets(338,5): warning MSB3073: The command ""c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.NameResolution.Functional.Tests/netstandard//RunTests.cmd c:\dotnet\corefx\bin/testhost/netcoreapp-Windows_NT-Debug-x64/"" exited with code 1. [c:\dotnet\corefx\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj"" (Test target) (99:3) -> c:\dotnet\corefx\Tools\tests.targets(338,5): warning : System.Net.Security.Tests Total: 138, Errors: 0, Failed: 3, Skipped: 5, Time: 5.276s [c:\dotnet\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] c:\dotnet\corefx\Tools\tests.targets(338,5): warning MSB3073: The command ""c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.Security.Tests/netcoreapp//RunTests.cmd c:\dotnet\corefx\bin/testhost/netcoreapp-Windows_NT-Debug-x64/"" exited with code 1. [c:\dotnet\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj"" (Test target) (84:3) -> c:\dotnet\corefx\Tools\tests.targets(338,5): warning : System.Net.Http.Functional.Tests Total: 311, Errors: 0, Failed: 1, Skipped: 11, Time: 3.061s [c:\dotnet\corefx\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] c:\dotnet\corefx\Tools\tests.targets(338,5): warning MSB3073: The command ""c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.Http.Functional.Tests/netstandard//RunTests.cmd c:\dotnet\corefx\bin/testhost/netcoreapp-Windows_NT-Debug-x64/"" exited with code 1. [c:\dotnet\corefx\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Security.Principal.Windows\tests\System.Security.Principal.Windows.Tests.csproj"" (Test target) (201:3) -> c:\dotnet\corefx\Tools\tests.targets(338,5): warning : System.Security.Principal.Windows.Tests Total: 10, Errors: 0, Failed: 2, Skipped: 1, Time: 0.577s [c:\dotnet\corefx\src\System.Security.Principal.Windows\tests\System.Security.Principal.Windows.Tests.csproj] c:\dotnet\corefx\Tools\tests.targets(338,5): warning MSB3073: The command ""c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Security.Principal.Windows.Tests/netstandard//RunTests.cmd c:\dotnet\corefx\bin/testhost/netcoreapp-Windows_NT-Debug-x64/"" exited with code 1. [c:\dotnet\corefx\src\System.Security.Principal.Windows\tests\System.Security.Principal.Windows.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj"" (Test target) (88:3) -> (RunTestsForProject target) -> c:\dotnet\corefx\Tools\tests.targets(346,5): error : One or more tests failed while running tests from 'System.Net.NameResolution.Functional.Tests' please check c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.NameResolution.Functional.Tests/netstandard/testResults.xml for details! [c:\dotnet\corefx\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj"" (Test target) (99:3) -> c:\dotnet\corefx\Tools\tests.targets(346,5): error : One or more tests failed while running tests from 'System.Net.Security.Tests' please check c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.Security.Tests/netcoreapp/testResults.xml for details! [c:\dotnet\corefx\src\System.Net.Security\tests\FunctionalTests\System.Net.Security.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj"" (Test target) (84:3) -> c:\dotnet\corefx\Tools\tests.targets(346,5): error : One or more tests failed while running tests from 'System.Net.Http.Functional.Tests' please check c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.Http.Functional.Tests/netstandard/testResults.xml for details! [c:\dotnet\corefx\src\System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> ""c:\dotnet\corefx\src\System.Security.Principal.Windows\tests\System.Security.Principal.Windows.Tests.csproj"" (Test target) (201:3) -> c:\dotnet\corefx\Tools\tests.targets(346,5): error : One or more tests failed while running tests from 'System.Security.Principal.Windows.Tests' please check c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Security.Principal.Windows.Tests/netstandard/testResults.xml for details! [c:\dotnet\corefx\src\System.Security.Principal.Windows\tests\System.Security.Principal.Windows.Tests.csproj] ""c:\dotnet\corefx\src\tests.builds"" (default target) (1) -> (TestAllProjects target) -> c:\dotnet\corefx\dir.traversal.targets(77,5): error : (No message specified) [c:\dotnet\corefx\src\tests.builds] 8 Warning(s) 5 Error(s) ### Steps I followed 1. Forked and checked out repository (15th May) https://github.com/dotnet/corefx/wiki/Checking-out-the-code-repository > c:\dotnet>git clone https://github.com/garfbradaz/corefx.git > Cloning into 'corefx'... > remote: Counting objects: 562807, done. > remote: Compressing objects: 100% (3/3), done. > remote: Total 562807 (delta 0), reused 0 (delta 0), pack-reused 562804 > Receiving objects: 100% (562807/562807), 140.81 MiB | 6.11 MiB/s, done. > Resolving deltas: 100% (440613/440613), done. > Checking out files: 100% (15071/15071), done. 2. Ran the following (https://github.com/dotnet/corefx/wiki/Build-and-run-tests): a) sync b) build c) build-test ### My Tin I dont know how much information you need from me so here is the **systeminfo** > Host Name: WL0093 > OS Name: Microsoft Windows 10 Enterprise N > OS Version: 10.0.15063 N/A Build 15063 > OS Manufacturer: Microsoft Corporation > OS Configuration: Member Workstation > OS Build Type: Multiprocessor Free > Registered Owner: N/A > Registered Organization: N/A > Product ID: 00330-00180-00000-AA640 > Original Install Date: 16/04/2017, 12:46:56 > System Boot Time: 12/05/2017, 14:44:36 > System Manufacturer: HP > System Model: HP EliteBook Folio 1040 G3 > System Type: x64-based PC > Processor(s): 1 Processor(s) Installed. > [01]: Intel64 Family 6 Model 78 Stepping 3 GenuineIntel ~2607 Mhz > BIOS Version: HP N83 Ver. 01.08, 02/09/2016 > Windows Directory: C:\WINDOWS > System Directory: C:\WINDOWS\system32 > Boot Device: \Device\HarddiskVolume2 > System Locale: en-gb;English (United Kingdom) > Input Locale: en-gb;English (United Kingdom) > Time Zone: (UTC+00:00) Dublin, Edinburgh, Lisbon, London > Total Physical Memory: 8,073 MB > Available Physical Memory: 2,478 MB > Virtual Memory: Max Size: 15,753 MB > Virtual Memory: Available: 7,217 MB > Virtual Memory: In Use: 8,536 MB > Page File Location(s): C:\pagefile.sys > Domain: hachette.hluk.net > Logon Server: \\WOT01ADS-HDC01 > Hotfix(s): 2 Hotfix(s) Installed. > [01]: KB4018483 > [02]: KB4015583 > Network Card(s): 3 NIC(s) Installed. > [01]: Intel(R) Ethernet Connection I219-LM > Connection Name: Ethernet > Status: Media disconnected > [02]: Intel(R) Dual Band Wireless-AC 8260 > Connection Name: WiFi > DHCP Enabled: Yes > DHCP Server: 192.168.1.254 > IP address(es) > [01]: 192.168.1.153 > [02]: fe80::880e:5551:fa2c:5eff > [03]: Bluetooth Device (Personal Area Network) > Connection Name: Bluetooth Network Connection > Status: Media disconnected > Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed. ### Test Logs mentioned in the error The following are links to the **testResults.xml** for each of the **ERROR** tests mentioned above. [c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.NameResolution.Functional.Tests/netstandard/testResults.xml](https://gist.github.com/garfbradaz/a52df93b8687798103337cc79714a2d1) [c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.Security.Tests/netcoreapp/testResults.xml](https://gist.github.com/garfbradaz/3c7f4d4b75bc0508cfc6cd81af962d4e) [c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Net.Http.Functional.Tests/netstandard/testResults.xm](https://gist.github.com/garfbradaz/690c670d667a34ed9df6ddcc0ebbf972) [c:\dotnet\corefx\bin/Windows_NT.AnyCPU.Debug/System.Security.Principal.Windows.Tests/netstandard/testResults.xml](https://gist.github.com/garfbradaz/bf278259d1c633a6953fe4bf827663d1) I hope this is enough info? I dont mind looking into the test failures, BUT should a clean fork/clone be running into issues when **build-test** is run for the 1st time? @karelz : You suggested in gitter i tag you in the issue :) " +19797 area-System.Data SqlConnection.GetSchema is missing override in SqlClient The SqlConnection.GetSchema() API implementation is missing from SqlConnection +19799 area-System.Runtime Behavior of arraySegment.ToArray() has changed _From @jodavis on May 15, 2017 20:25_ I was using `Enumerable.ToArray(this IEnumerable)` on an ArraySegment, which calls `ArraySegment.GetEnumerator()`. This did not throw any exception when the underlying array is null, so `ToArray()` would return an empty array. Now that ArraySegment has its own `ToArray()` function, my code is calling that one (with no code change on my part). `ArraySegment.ToArray()` throws an exception when called with a null underlying array. I can work around this, but is this considered a breaking change? _Copied from original issue: dotnet/corert#3619_ +19803 area-System.Xml Change DefaultResolver in XmlReaderSettings to XmlUrlResolver Addresses a behavior difference between Core and Desktop. On Desktop, default resolver for XmlReaderSettings is `XmlUrlResolver`, whereas in Core it is `SystemPathResolver`. This difference makes Core not allow string uri to be resolved in `XmlReader.Create` method, while Desktop does. cc: @danmosemsft @krwq @tarekgh +19804 area-Serialization XmlSerializer Tests Failed to Build on UWP XmlSerializer Tests failed to build on UWP. +19805 area-Serialization Fix the Build of XmlSerializer Tests on UWP The PR addressed the following issues, 1. Fixed the build of XmlSerializer tests on UWP. 2. Fixed a bug that caused pre-generated XmlSerializers being used in reflection only mode. 3. Fixed the incorrect usage of uap/uapaot in Configrations.props across all serialization test projects. Fix #19804. +19806 area-System.Xml XmlDownloadManager HttpRequest in Core vs. WebRequest in Full Framework "XmlDownloadManager.GetNonFileStream uses HttpRequest on Core, whereas it uses WebRequest in Desktop. This change was originally made at time of porting Xml because WebRequest was not available then. This causes cases like `XmlReader.Create(""ftp://www.bing.com"")` not be acceptable and hit the following error: `System.Net.Http.HttpRequestException: Only 'http' and 'https' schemes are allowed.` The method needs to change to match Desktop implementation. " +19807 area-System.Data Replace MANAGED_SNI flag in SQL tests with a reflection-based check of UseManagedSNI Also added skip messages to LocalDBTest's ConditionalFacts Edit: Skip message already gets printed for ConditionalFacts. Removed the LocalDBTest changes +19808 area-System.Data Move DbConnectionOptions.cs to Common Just like https://github.com/dotnet/corefx/pull/18500 this PR moves common code from three similar DbConnectionOptions.cs copies (SqlClient, Odbc, Common) to [src/Common/src/System/Data/Common](https://github.com/dotnet/corefx/tree/master/src/Common/src/System/Data/Common) folder. I didn't remove any members but I had to rename some as these files use different code styles (internal fields) and Odbc and Common used to use `Hashtable `instead of `Dictionary` for 'synonyms' (like SqlClient does). It's needed to make mono happy. Probably would be better to just move DbConnectionOptions.cs to Common without splitting it to provider-specific pieces - they are not too big and the ILLINK will remove unused code anyway. +19809 area-Serialization [UWP] XElement Tests Failed "The following tests failed on UWP. The tests failed in both CodeGen mode and ReflectionOnly mode. ``` XmlSerializerTests.Xml_WithXElement XmlSerializerTests.Xml_XElementAsRoot XmlSerializerTests.Xml_WithArrayOfXElement XmlSerializerTests.Xml_WithXElementWithNestedXElement XmlSerializerTests.Xml_WithListOfXElement ``` CodeGen callstack ``` (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4481 at XmlSerializerTests.Xml_WithXElement() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 669 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400 ----- Inner Stack Trace ----- at System.ActivatorImplementation.CreateInstance(Type type, Boolean nonPublic) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\ActivatorImplementation.cs:line 35 at System.Reflection.Runtime.General.ReflectionCoreCallbacksImplementation.ActivatorCreateInstance(Type type, Boolean nonPublic) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\General\ReflectionCoreCallbacksImplementation.cs:line 165 at Microsoft.Xml.Serialization.GeneratedAssembly.ActivatorHelper.CreateInstance(Type type) in C:\Users\shmao\AppData\Local\Temp\Ilc2020754181\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 23114 at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read52_WithXElement(Boolean isNullable, Boolean checkType, String defaultNamespace) in C:\Users\shmao\AppData\Local\Temp\Ilc2020754181\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 14720 at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read184_WithXElement(String defaultNamespace) in C:\Users\shmao\AppData\Local\Temp\Ilc2020754181\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 8019 at Microsoft.Xml.Serialization.GeneratedAssembly.WithXElementSerializer.Deserialize($XmlSerializationReader reader) in C:\Users\shmao\AppData\Local\Temp\Ilc2020754181\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 20881 at System.Xml.Serialization.XmlSerializer.Deserialize($XmlReader xmlReader, String encodingStyle, $XmlDeserializationEvents events) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs:line 641]]> ``` ReflectionOnly callstack, ``` (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4466 at XmlSerializerTests.Xml_WithXElement() in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 669 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400 ----- Inner Stack Trace ----- at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping$catch$0() in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs:line 467 at System.Xml.Serialization.XmlReflectionImporter.ImportElement($TypeModel model, $XmlRootAttribute root, String defaultNamespace, $RecursionLimiter limiter) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs:line 266 at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, $XmlRootAttribute root, String defaultNamespace) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs:line 171 at System.Xml.Serialization.XmlSerializer.SerializeUsingReflection($XmlWriter xmlWriter, Object o, $XmlSerializerNamespaces namespaces, String encodingStyle, String id) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs:line 530 at System.Xml.Serialization.XmlSerializer.Serialize($XmlWriter xmlWriter, Object o, $XmlSerializerNamespaces namespaces, String encodingStyle, String id) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs:line 502 ----- Inner Stack Trace ----- at System.Xml.Serialization.StructModel.CheckSupportedMember($TypeDesc typeDesc, MemberInfo member, Type type) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Models.cs:line 201 at System.Xml.Serialization.StructModel.GetFieldModel(FieldInfo fieldInfo) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Models.cs:line 216 at System.Xml.Serialization.StructModel.GetFieldModel(MemberInfo memberInfo) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\Models.cs:line 180 at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers($StructMapping mapping, $StructModel model, Boolean openModel, String typeName, $RecursionLimiter limiter) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs:line 845 at System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping($StructModel model, String ns, Boolean openModel, $XmlAttributes a, $RecursionLimiter limiter) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs:line 756 at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping($TypeModel model, String ns, $ImportContext context, String dataType, $XmlAttributes a, Boolean repeats, Boolean openModel, $RecursionLimiter limiter) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlReflectionImporter.cs:line 441 ----- Inner Stack Trace ----- ]]> ```" +19810 area-System.Data MARS async read timeouts in Entity Framework tests with parallel testing enabled When using a managed SNI enabled SqlClient in Entity Framework tests, some tests in EFCore.SqlServer.FunctionalTests can take over a minute to complete when using MARS while XUnit test parallelization is enabled. When using the LongRunning task continuation option in SqlClient async reads, these tests runs go from over a minute to less than 10 seconds. We need to investigate the underlying threading issues that are causing the async reads to get blocked while using MARS. +19811 area-Serialization XmlSerializerTests.Xml_KnownTypesThroughConstructorWithArrayProperties Failed "Test `XmlSerializerTests.Xml_KnownTypesThroughConstructorWithArrayProperties` failed on UWP when using Sg. ``` ``` " +19812 area-System.Xml Change XmlDownloadManager back to use WebRequest Resolves https://github.com/dotnet/corefx/issues/19806. When porting Xml, WebRequest was not available, so HttpRequest was used instead. This PR changes XmlDownloadManager implementation so that it uses WebRequest again. Also modifies tests as needed. cc: @krwq @danmosemsft @tarekgh +19813 area-System.Console System.IO.IOException “The parameter is incorrect” on System_Console!System.ConsolePal+ControlCHandlerRegistrar.Unregister()+0x35 "initial report: https://github.com/dotnet/coreclr/issues/11550 My netcore 1.1 app crash on exit due to following exception. ``` 0:000> .cordll -lp C:\Agent.CoreCLR\_dotnetsdk\1.0.1\shared\Microsoft.NETCore.App\1.1.1 CLR DLL status: Loaded DLL C:\Agent.CoreCLR\_dotnetsdk\1.0.1\shared\Microsoft.NETCore.App\1.1.1\mscordaccore.dll 0:000> !pe Exception object: 0000003b30c759a0 Exception type: System.IO.IOException Message: The parameter is incorrect InnerException: StackTrace (generated): SP IP Function 0000003B4928CE50 00007FFE2BE65935 System_Console!System.ConsolePal+ControlCHandlerRegistrar.Unregister()+0x35 0000003B4928CE90 00007FFE2BE65882 System_Console!System.Console.remove_CancelKeyPress(System.ConsoleCancelEventHandler)+0xc2 0000003B4928CEE0 00007FFE2BE65782 Microsoft_VisualStudio_Services_Agent!Microsoft.VisualStudio.Services.Agent.Terminal.Dispose()+0x42 0000003B4928CF20 00007FFE2B701CCF Agent_Worker!Microsoft.VisualStudio.Services.Agent.Worker.Program+d__1.MoveNext()+0xa7f 0000003B2DF5DD20 00007FFE8ABF4D8F System_Private_CoreLib_ni!System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()+0x1f 0000003B2DF5DD50 00007FFE8ABEDCA6 System_Private_CoreLib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x46 0000003B2DF5DD80 00007FFE2B7004A8 Agent_Worker!Microsoft.VisualStudio.Services.Agent.Worker.Program.Main(System.String[])+0x28 StackTraceString: HResult: 80070057 ``` Before the crash, we pinvoke to cancel some child process via the following code. we didn't get any exception trace, and the child process is able to get Ctrl-C and gracefully exit. ```C# private async Task SendCtrlSignal(ConsoleCtrlEvent signal, TimeSpan timeout) { Trace.Info($""Sending {signal} to process {_proc.Id}.""); ConsoleCtrlDelegate ctrlEventHandler = new ConsoleCtrlDelegate(ConsoleCtrlHandler); try { if (!FreeConsole()) { throw new Win32Exception(Marshal.GetLastWin32Error()); } if (!AttachConsole(_proc.Id)) { throw new Win32Exception(Marshal.GetLastWin32Error()); } if (!SetConsoleCtrlHandler(ctrlEventHandler, true)) { throw new Win32Exception(Marshal.GetLastWin32Error()); } if (!GenerateConsoleCtrlEvent(signal, 0)) { throw new Win32Exception(Marshal.GetLastWin32Error()); } Trace.Info($""Successfully send {signal} to process {_proc.Id}.""); Trace.Info($""Waiting for process exit or {timeout.TotalSeconds} seconds after {signal} signal fired.""); var completedTask = await Task.WhenAny(Task.Delay(timeout), _processExitedCompletionSource.Task); if (completedTask == _processExitedCompletionSource.Task) { Trace.Info(""Process exit successfully.""); return true; } else { Trace.Info($""Process did not honor {signal} signal within {timeout.TotalSeconds} seconds.""); return false; } } catch (Exception ex) { Trace.Info($""{signal} signal doesn't fire successfully.""); Trace.Error($""Catch exception during send {signal} event to process {_proc.Id}""); Trace.Error(ex); return false; } finally { FreeConsole(); SetConsoleCtrlHandler(ctrlEventHandler, false); } } private bool ConsoleCtrlHandler(ConsoleCtrlEvent ctrlType) { switch (ctrlType) { case ConsoleCtrlEvent.CTRL_C: Trace.Info($""Ignore Ctrl+C to current process.""); // We return True, so the default Ctrl handler will not take action. return true; case ConsoleCtrlEvent.CTRL_BREAK: Trace.Info($""Ignore Ctrl+Break to current process.""); // We return True, so the default Ctrl handler will not take action. return true; } // If the function handles the control signal, it should return TRUE. // If it returns FALSE, the next handler function in the list of handlers for this process is used. return false; } ``` We currently only see 2 machine hitting this exception so far. 1 win7 machine, 1 server12r2 machine, but on those machine this error is repro 100% at a time. I still have the server12r2 VM around, i can provide access if anyone interested." +19814 area-System.Memory Proposal: List.AsSpan() ## Proposed API Additions ```csharp public class List { public Span AsSpan(); public ReadOnlySpan AsReadOnlySpan(); } ``` ## Sample Usage and Rationale ```csharp var list = new List(); foreach(var b in SomeThing) { list.Add(b); } var span = list.AsSpan(); ``` Arrays are fixed sizes; so creating an array over an unknown sized set involves manual resizing and copying (or upfront over allocation). List already covers this scenario, resizing array behind the scenes. Proposal is to add a method that returns a correctly sized Span window over the List's array. i.e. A non allocating version of `.ToArray()` that's also better as it can be made immutable with ReadOnlySpan. /cc @jkotas @terrajobst @stephentoub @davidfowl +19817 area-System.Runtime Proposal: dynamic array with lazy reallocation feature "Copied from https://github.com/dotnet/csharplang/issues/586 The current C# array can ""resize"", but it acturally allocates new memory and copies data, and the old memory can neither be freed nor be used until next GC. I hope to have a kind of dynamic array which can change its length without memory reallocation until next GC. When this kind of array extend its length, only allocate memory of ""extended"" size, and use an internal list to manage the old and new memory. Users needn't know how many internal fragments the dynamic array has, they should be able to use it as a normal array. When GC occurs, the CLR should put all fragments of a dynamic array together and update internal link pointers. If the dynamic array reduces its length, the CLR should be able to ""free"" some memory after next GC. All these CLR actions should be transparent to users. The dynamic array should be a new class, and do not affect the behavior of the current array. For example: ```C# DynamicArray da=new DynamicArray(100); //length is initialized to be 100 ...... da.Resize(200); /*new size is 200, but only allocate new memory of size 100. Old memory is still in use and links to new memory. Now 'da' has internal fragments, but it will have contiguous memory of size 200 after next GC. */ ...... da.Resize(10); /* No allocation. Free memory of size 190 after next GC. */ ``` " +19818 area-System.Net Two FtpWebRequest tests taking long time to fail Fixes #18424 +19819 area-System.Runtime Fixed uap/uapaot tests in System.Runtime Fixing a bunch of these errors: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170516.01/workItem/System.Runtime.Tests +19820 area-System.Net Improve Socket scalability on Unix - scale the number of socket engines with the number of processors The number of socket engines is set to half of the number of available processors when there are at least 6 processors. The lower bound is a heuristic to enable multiple socket engines only on systems that are servers. Having too few socket engines leads to under-performing. Having too many leads to thread overhead. The performance penalty of the latter is much lower than that of the first. A non-pipelined TechEmpower plaintext test of libuv on a 28 cpu thread machine (E5-2690 v4) shows best performance at 16 threads. - increase the number of events reported with a poll from 64 to 1024 1024 is the value used by libuv nginx uses 512 CC @stephentoub @geoffkizer @davidfowl +19824 area-System.Diagnostics TestMultipleConcurrentRequests test failed in CI on desktop ``` System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestMultipleConcurrentRequests [FAIL] Assert.Equal() Failure Expected: 18 Actual: 16 Stack Trace: D:\j\workspace\netfx_windows---50c21bdb\src\System.Diagnostics.DiagnosticSource\tests\HttpHandlerDiagnosticListenerTests.cs(362,0): at System.Diagnostics.Tests.HttpHandlerDiagnosticListenerTests.TestMultipleConcurrentRequests() ``` cc: @lmolkova +19825 area-System.Data SqlConnection doesn't override DbProviderFactory property Hi, Currently SqlConnection doesn't override the `DbProviderFactory` property. On Desktop/.NET full this is used by `DbConnection.ProviderFactory`, an internal property used by `DbProviderFactories`. This last class isn't part of .NET core, however the lack of these properties and implementation makes it harder to bring this class back to .NET core, as `DbProviderFactories` contains a method `GetFactory(DbConnection)`, which simply reads the property `DbConnection.ProviderFactory`. Likely a complete oversight due to the stalemate on whatever has to happen with DbProviderFactories in .NET core for the last 2 years (See #4571 ) My advice would be two-fold: * add `DbConnection.ProviderFactory` property, as internal. (See: https://referencesource.microsoft.com/#System.Data/System/Data/Common/DBConnection.cs,68) (will file another issue for that) * override `DbConnection.DbProviderFactory` in SqlConnection.cs. This would then open the door to add `DbProviderFactories` to .NET core to make sharing code using that class between .NET full and .NET core easy. +19826 area-System.Data DbConnection doesn't offer an internal property ProviderFactory Hi (This issue is related to #19825). To bring back the functionality of the `DbProviderFactories` class to .NET core so sharing of code between .NET full and .NET core is easy, it's required to have `DbConnection.ProviderFactory` present, as `DbProviderFactories` has a method `GetFactory(DbConnection)` which reads this property to obtain the factory. .NET full has this implementation: https://referencesource.microsoft.com/#System.Data/System/Data/Common/DBConnection.cs,68 which reads the virtual property `DbProviderFactory` which is present in .NET core's DbConnection (and by default returns null). Implementing this property on DbConnection will make it easy to add the `DbProviderFactories` class from reference source to .NET core (without the machine.config stuff of course) and offer the same functionality so porting code over from .NET full to .NET core is easy. +19827 area-System.Net [HttpListener] Multiple HttpListeners on same IP Endpoint "In both .NET 4.5 and Mono, you could have have `HttpListener` instances listen on the same IP Endpoint with different paths, such as for instance HttpListener listener1 = new HttpListener (); listener1.Prefixes.Add (""http://127.0.0.1:"" + port + ""/""); HttpListener listener2 = new HttpListener (); listener2.Prefixes.Add (""http://127.0.0.1:"" + port + ""/hola/""); listener1.Start (); listener2.Start (); This behavior has changed in https://github.com/dotnet/corefx/commit/7a48e11efae5b163a6c3b3d49a7066960e40a5c2 with no explanation why this change has happened. It is a problem for two reasons: 1. It changes behavior from .NET 4.5 in a way that could possibly break many existing customer applications. 2. It shifts the burden of maintaining endpoint listeners from the backend to the user. I discovered this problem while trying to replace Mono's HttpListener implementation with the one from CoreFX (see https://github.com/mono/mono/pull/4850). Since this change could possibly break an unknown amount of existing customer code (apart from our failing unit test), it currently blocks us on going forward with the change. Going forward, I would like to understand why this change happened and work with you towards a solution." +19829 area-Serialization XmlSerializerTests.Xml_KnownTypesThroughConstructor failed Test `XmlSerializerTests.Xml_KnownTypesThroughConstructor` failed in reflection only mode on UWP. +19830 area-Serialization XmlSerializerTests.XmlSchemaTest failed on UWP "Test `XmlSerializerTests.XmlSchemaTest` failed on UWP. ``` ``` The issue is likely due to missing metadata, ``` SG0001 : Cannot generate serialization code for type 'System.Xml.Schema.XmlSchema'. There was an error reflecting type 'System.Xml.Schema.XmlSchema'. There was an error reflecting property 'Includes'. There was an error reflecting type 'System.Xml.Schema.XmlSchemaRedefine'. There was an error reflecting property 'Items'. There was an error reflecting type 'System.Xml.Schema.XmlSchemaAttributeGroup'. There was an error reflecting property 'Attributes'. There was an error reflecting type 'System.Xml.Schema.XmlSchemaAttribute'. Ambiguous match found. ``` " +19831 area-System.Net Disable SslStream_SameCertUsedForClientAndServer_Ok test failing on Win7 Failing on all Win7 runs https://github.com/dotnet/corefx/issues/19699 cc: @cipop +19832 area-System.Runtime 'System.Text.Encoding is not assignable to parameter type 'System.Text.Encoding' I'm working on a library targeting .NET Standard 1.6 and I'm seeing the following error: >Argument type 'System.Text.Encoding [System.Text.Encoding, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]' is not assignable to parameter type 'System.Text.Encoding [System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]' It sounds like one of the parameters is targeting a private version of `System.Text.Encoding`. Any advice? >Screenshot: > ![image](https://cloud.githubusercontent.com/assets/21338699/26119617/d4941f1e-3a3b-11e7-9b28-2c274360ade4.png) >Snippet: >```c# >using (BinaryReader reader = new BinaryReader(stream, Encoding.ASCII)) >{ >} >``` +19833 area-Serialization Xml_DefaultValueAttributeSetToNaNTest Failed on UWP Xml_DefaultValueAttributeSetToNaNTest Failed on UWP when using Sg. ``` MSBUILD : error : System.InvalidOperationException: Unable to generate a temporary class (result=1). MSBUILD : error : error CS0103: The name 'NaN' does not exist in the current context MSBUILD : error : error CS0103: The name 'NaNf' does not exist in the current context MSBUILD : error : error CS0103: The name 'NaN' does not exist in the current context MSBUILD : error : error CS0103: The name 'NaNf' does not exist in the current context MSBUILD : error : MSBUILD : error : at System.Xml.Serialization.Compiler.Compile(XmlSerializerCompilerParameters xmlParameters, Evidence evidence, String outputDir, String assemblyNameBase, IEnu merable`1 referenceDirectories, String intermediateDir, Boolean loadAssembly) MSBUILD : error : at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCom pilerParameters parameters, Hashtable assemblies, String outputDir, String assemblyNameBase, IEnumerable`1 referenceDirectories, String intermediateDir, Boolean loadAssembly) MSBUILD : error : at System.Xml.Serialization.XmlSerializer.GenerateSerializer(Type[] types, XmlMapping[] mappings, CompilerParameters parameters, String outputDir, String asse mblyNameBase, IEnumerable`1 referenceDirectories, String intermediateDir, Boolean loadAssembly) MSBUILD : error : at System.Xml.Serialization.XmlSerializer.GenerateSerializer(Type[] types, String outputDir, String assemblyNameBase, IEnumerable`1 referenceDirectories, Stri ng intermediateDir, List`1 wcfSerializers, Boolean loadAssembly) MSBUILD : error : at SerializationAssemblyGenerator.Program.Main(String[] args) MSBUILD : error : ILT0032: Failed to compile serialization code. See the build log for error details. ``` +19834 area-System.ComponentModel Adding the possibility to use resources for the property NullDisplayText in DisplayFormatAttribute Relative to issue #10526. Tests were also added for existing code since the test class did not exist. I copied the behaviour of `[Display]` for the `NullDisplayText` property. I also copied the same style of xml comments. +19835 area-Serialization Is Microsoft.XmlSerializer.Generator shipping with 2.0.0? What is the plan for this package in release/2.0.0? Do we plan to ship it as stable? Pre-release? Not at all? +19836 area-System.Data Investigate use of LongRunning continuation option in SqlClient async reads A change was made here https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIPacket.cs#L270 to fix timeouts in Entity Framework tests due to blocked async reads. Using the LongRunning option means a new thread will be created on every async read. We need to investigate if this LongRunning option will cause other side effects, and if it can be replaced with a better threading solution. CC @saurabh500 +19837 area-System.Xml Add support to System.Xml.Xsl In need of this to be supported in order to move onto Core 2.0. +19838 area-System.Diagnostics Exception stack trace does not have line numbers "**Repro:** - dotnet new console - Update the Program.cs file to ```c# using System; namespace bar2 { class Program { static void Main(string[] args) { try { throw new InvalidOperationException(""some error""); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } } ``` - dotnet run - The above code would print out like the following (Notice that there is no line number information) ``` System.InvalidOperationException: some error at bar2.Program.Main(String[] args) ``` **dotnet --info** ``` .NET Command Line Tools (2.0.0-preview2-006071) Product Information: Version: 2.0.0-preview2-006071 Commit SHA-1 hash: 8326a60d7a Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\kichalla\.dotnet\x64\sdk\2.0.0-preview2-006071\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview2-25309-07 Build : 41f5fc94eedc889f086800c23f35bf14a8c75a9f ```" +19839 area-System.IO IsolatedStorage Machine scope for WinRT issues As it is currently implemented it depends on `ApplicationData.Current.SharedLocalFolder`, which isn't available without proper [policy](https://docs.microsoft.com/en-us/uwp/api/windows.storage.applicationdata#Windows_Storage_ApplicationData_SharedLocalFolder). Note that with upcoming support in `Environment.GetFolderPath()` we'll be switching to using that and that may alter behavior here. Once that is done we need to find a reasonable way to condition tests if the location is accessible. For now Machine scope tests are disabled on UAP. +19840 area-System.IO Remove IsoStorage lock from UAP and enable tests Removing the random directory logic when running on WinRT as it wasn't used before and has no benefit. Additionally taking a global lock isn't possible on WinRT. This also enables tests for IsolatedStorage on UAP. Also update skip for unit tests on desktop. Issues #19227, #18202 +19843 area-Serialization Enabled XmlSerializer to Serialize XElement on UWP. After PR https://github.com/dotnet/corefx/pull/19244, `XmlSerializer` failed to serialize `XElement` on UWP because the metadata info for `XElement..ctor()` was reduced by UWP toolchain. Although we already have rd.xml for keeping the constructor, see [System.Private.Xml.Linq.rd.xml](https://github.com/dotnet/corefx/blob/87a72facb51c0b50489223f1ef2e52195e1a3f00/src/System.Private.Xml.Linq/src/Resources/System.Private.Xml.Linq.rd.xml), it didn't work because the assembly has `BlockReflectionAttribute` and UWP toolchain would remove metadata for any non-public types/members in the assembly. The fix is to make the constructor public on `uap`. Fix #19809. +19844 area-System.Security Make all X509Store.Open exceptions be CryptographicException. The platform limitations are now CryptographicException(PlatformNotSupportedException) instead of PNSE. This should restore some user expectation around the exception model, given that the call to Open can be delayed from the call to an X509Store .ctor. This also softens the exceptions from the Disallowed store on Linux to let empty reads succeed, only writes and pre-populated data will fail. Updated the X509Store table in the xplat crypto doc. +19846 area-Serialization Fix the issues in extension method. @shmao +19848 area-System.Net BeginSendToV4IPEndPointToV6Host_NotReceived failed for desktop in CI https://ci.dot.net/job/dotnet_corefx/job/master/job/netfx_windows_nt_debug_prtest/327/consoleText ``` System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV4IPEndPointToV6Host_NotReceived [FAIL] Assert.Throws() Failure Expected: typeof(System.TimeoutException) Actual: typeof(System.Net.Sockets.SocketException): An address incompatible with the requested protocol was used Stack Trace: at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) D:\j\workspace\netfx_windows---8c0e8fba\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs(1243,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) D:\j\workspace\netfx_windows---8c0e8fba\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs(1209,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.b__4_0() ``` +19849 area-Infrastructure Repro memberinfo bug /cc @weshaggard @AtsushiKan For some reason, updating the assembly version of System.Runtime causes the list of members returned by type.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); to be different on the first call. Subsequent calls return a different (incorrect) order. +19850 area-System.IO Difference in File/DirectoryNotFoundException behavior when both directory and file don't exist "This code on Windows: ```C# using System; using System.IO; class Program { static void Main() { long x = new FileInfo(@""C:\users\stoub\doesntExist\doesntExist.txt"").Length; } } ``` throws a FileNotFoundException, whereas this code on Linux: ```C# using System; using System.IO; class Program { static void Main() { long x = new FileInfo(@""/home/stoub/doesntExist/doesntExist.txt"").Length; } } ``` throws a DirectoryNotFoundException. (If the whole directory exists and just the file doesn't, then we throw a FileNotFoundException on Linux as expected.) Difference reported by @polarapfel at https://github.com/dotnet/corefx/issues/1728#issuecomment-301935624 cc: @ianhays, @JeremyKuhne " +19851 area-System.Data Add IDataReader interface to SqlDataReader to match Framework implementation +19852 area-System.Reflection System.Reflection.Tests.MemberInfoTests.TestEquality_Multiple fails due to non-deterministic ordering of nested classes See https://github.com/dotnet/corefx/pull/19842#issuecomment-301937137 and https://github.com/dotnet/corefx/pull/19849. We should either remove the test case, do an on-ordered equality check, or sort on MetadataToken before doing the check. /cc @AtsushiKan +19854 area-System.Net WebSocket can crash UWP apps if the server does not close the connection gracefully I am investigating a [SignalR issue](https://github.com/aspnet/SignalR/issues/412) where a netstandard SignalR client is being used in a UWP app. The client uses webSockets to connect to the server. The expectation is that when the server is being closed the client will notify the user by raising an event. However the application crashes due to an unhandled exception with the following stack trace: ``` System.Exception: Exception from HRESULT: 0x80072EFE at Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs.GetDataReader() at System.Net.WebSockets.WinRTWebSocket.OnMessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) ``` If I read the code correctly it seems that if the exception happens here: https://github.com/dotnet/corefx/blob/ec2a6190efa743ab600317f44d757433e44e859b/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WinRTWebSocket.cs#L282 it won't be handled anywhere but can't also be caught which causes the crash. SignalR client [expects](https://github.com/aspnet/SignalR/blob/dev/src/Microsoft.AspNetCore.Sockets.Client/WebSocketsTransport.cs#L80-L81) receive result with WebSocketMessageType.Close result type. +19855 area-Infrastructure Update to BuildTools 2.0.0-prerelease-01616-05 This will pick up Eric M's recent fix to crossgen.sh to detect the correct version of the shared framework instead of hard coding a version. Recent updates to the CLI we consume caused the static number to be incorrect. +19856 area-System.Runtime System.Runtime .NET Native fixes and leftover PR feedback +19857 area-System.Reflection PinnedObject.Release may attempt to release an invalid GCHandle during shutdown If process shutdown happens to stop PinnedObject.Release processing within the GCHandle.Free call, then shutdown finalization of the same object will generate an InvalidOperationException. The same may occur if the constructor is preempted by shutdown. +19858 area-System.Reflection Fix potential release of invalid GCHandle in PinnedObject.Release If process shutdown happens to stop PinnedObject.Release processing within the GCHandle.Free call, then shutdown finalization of the same object will generate an InvalidOperationException. The same may occur if the constructor is preempted by shutdown. Fixes https://github.com/dotnet/corefx/issues/19857 in master (not in 2.0) Port to Desktop FX tracked by VSO bug 437163. +19859 area-Serialization Use stream as the input in GenerateSerializer method Currently, it is using code path as the input, need use steam. +19860 area-System.Xml Fix Xml.Linq test failures on ILC Fixes: - Missing metadata for System.Xml.Linq.XCData - Optimized exception messages +19861 area-Meta Making a member virtual should be considered a breaking change The [breaking change document](https://github.com/dotnet/corefx/blob/d2a2d7ccb631aeaf97dc67b2241410b312241343/Documentation/coding-guidelines/breaking-change-rules.md) currently considers making a member virtual a non-breaking change with a small sidenote. When that rule was decided, the C# compiler was only emitting `call` IL instruction in a couple places that didn't really matter and used the IL `callvirt` for everything else (even if the destination instance method was non-virtual, because per the C# spec, calling instance methods with a null `this` needs to throw and `call` IL instruction won't throw). This made it unlikely that people would hit problems with it. The addition of the null-propagation operator gave the C# compiler more opportunities to optimize `callvirt` into a `call` if the `this` is known to be not null. dotnet/corert#3565 has an example where making a member virtual resulted in wrong method being called when compiling against PCL contracts because a breaking change was made making `ConstructorInfo.Invoke` virtual: ```csharp var abc = (ABC) constr.Invoke(new object[0]); // This works ``` ```csharp var abc = (ABC) constr?.Invoke(new object[0]); // This calls the wrong method because // `this` is known not to be null and Invoke // is a non-virtual method ``` Making a member virtual is a breaking change for anyone using the null-propagation operator with the method. +19862 area-Serialization Use stream as the input of GenerateSerializer method Fix #19859 @shmao @mconnew @zhenlan +19864 area-System.Data Adding GetSchemaTable() on SqlDataReader Porting over code to add GetSchemaTable in .Net Core SqlClient. The code is a port from NetFx code. The `CheckSparseColumnBit` test is a port from NetFx, Reduces failures in Dapper tests by 5 based on my internal runs. I ran the EF functional tests with my changes. No regressions observed with the changes. Fixes https://github.com/dotnet/corefx/issues/19748 cc @stephentoub @corivera @danmosemsft @karelz +19866 area-System.Runtime Fixed System.Runtime.Extensions uap/uapaot tests Relates to https://github.com/dotnet/corefx/issues/18718 Fixes (most) appcontainer issues in System.Runtime.Extensions: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170516.02/workItem/System.Runtime.Extensions.Tests +19867 area-System.Net Fix deadlock in SslStream_SameCertUsedForClientAndServer_Ok test on single core Remove the synchronous blocking. cc: @wfurt, @Priya91 +19868 area-Infrastructure Update xunit extensions to include ActiveIssueAttribute functionality cc: @weshaggard +19870 area-System.Runtime Win32Api SetEnvironmentVariableW - Disabled tests "Re-Enable all tests which are disabled on UAP/UAPAOT with reason substring ""SetEnvironmentVariableW"" as soon as Win32 api gets available. https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/tests/System/Environment.SetEnvironmentVariable.cs https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/tests/System/Environment.ExpandEnvironmentVariables.cs " +19871 area-Infrastructure Remove SkipOnTargetFramework UAP/UAPAOT on whole classes Skip only tests which are runnable on UAP/UAPAOT for either reasons: - Win32Api not yet available - Execution not possible because of AppContainer isolation If the test tries to access the FileSystem outside of the whitelisted places (appx installation dir, appx temp dir --> %appdata%, capabilities --> pictures,documents,music,...) then rewrite test cases with TempDirectory. +19872 area-System.Runtime Assembly.Load currently not suppported on UWP LoadFile / Load is currently intentionally blocked in Coreclr: https://github.com/dotnet/coreclr/blob/906f60ce3c55ab0cc41765d9eeea542ec65ff737/src/mscorlib/src/System/AppDomain.cs#L393 Will it be supported inside an AppContainer? If yes, re-enable deactivated tests. +19873 area-System.IO Revert: Disabling dynamic code execution in MemoryMappedFiles tests on UAP/UAPAOT - AppContainer now supports the capability Reverting my last change which disabled some tests for uap/uapaot because dynamic code execution wasn't allowed in appx. It still isn't, but I found the reason why. By adding a capability these calls become valid and the tests will pass. This PR depends on a buildtools PR and a nuget package update: https://github.com/dotnet/buildtools/pull/1503. After PR gets accepted some more steps are required. This is planned to be done this week. +19874 area-System.Net Revert and fix no exception thrown in the managed implementation registering an existing prefix The first commit reverts the buggy commit that caused #19827. This revert causes test failures in Add_PrefixAlreadyRegisteredAndNotStarted_ThrowsHttpListenerException The second commit adds a swathe of tests for various scenarios. Most of these tests failed before the revert. It turns out the fix to the difference in behaviour between managed and Windows is actually as simple as removing an `if` in HttpEndPointListener.AddPrefix. Previously the managed implementation wouldn't throw if we tried to add the same prefix with the same listener - but it would with different listeners. Instead we should always throw, in order to match Windows behaviour. Fixes #19827 @stephentoub @baulig @davidsh @priya91 +19875 area-System.Net Test failure: System.Net.Http.Functional.Tests.PostScenarioTest/PostEmptyContentUsingContentLengthSemantics_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx) Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.PostScenarioTest/PostEmptyContentUsingContentLengthSemantics_Success(serverUri: http://corefx-net.cloudapp.net/Echo.ashx)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.PostScenarioTest.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.PostScenarioTest.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170517.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170517.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.PostScenarioTest~2FPostEmptyContentUsingContentLengthSemantics_Success(serverUri:%20http:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx) +19876 area-System.Collections System.Collections.Tests failed to generate the test result Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170517.01/workItem/System.Collections.Tests/wilogs Configuration: Windows.10.Nano.Amd64-x64:Release ~~~ 2017-05-17 00:35:24,230: INFO: proc(54): run_and_log_output: Output: xUnit.net console test runner (64-bit .NET Core) 2017-05-17 00:35:24,230: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-05-17 00:35:24,230: INFO: proc(54): run_and_log_output: Output: 2017-05-17 00:35:24,480: INFO: proc(54): run_and_log_output: Output: Discovering: System.Collections.Tests 2017-05-17 00:35:25,821: INFO: proc(54): run_and_log_output: Output: Discovered: System.Collections.Tests 2017-05-17 00:35:27,476: INFO: proc(54): run_and_log_output: Output: Starting: System.Collections.Tests 2017-05-17 00:35:40,444: INFO: proc(54): run_and_log_output: Output: Finished: System.Collections.Tests 2017-05-17 00:35:40,444: INFO: proc(54): run_and_log_output: Output: 2017-05-17 00:35:40,444: INFO: proc(54): run_and_log_output: Output: === TEST EXECUTION SUMMARY === 2017-05-17 00:35:40,461: INFO: proc(54): run_and_log_output: Output: System.Collections.Tests Total: 44361, Errors: 0, Failed: 0, Skipped: 0, Time: 12.389s 2017-05-17 00:35:40,706: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time= 0:35:40.70, Exit code = 0 2017-05-17 00:35:40,706: INFO: proc(58): run_and_log_output: Exit Code: 0 2017-05-17 00:35:40,706: INFO: scriptrunner(57): _main: Uploading results from C:\dotnetbuild\work\7b8f77aa-c3ac-4f6f-8c89-ac17eadd62c5\Work\1eb3f0c2-e2c6-4b10-a91b-0b358a9887a2\Unzip\testResults.xml 2017-05-17 00:35:40,706: INFO: azure_storage(200): _upload: Uploading single blob: 'testResults.xml' 2017-05-17 00:35:41,584: INFO: saferequests(90): request_with_retry: Response complete with status code '201' 2017-05-17 00:35:41,599: INFO: scriptrunner(70): _main: Sending completion event 2017-05-17 00:35:41,599: INFO: event(38): send: Sending event type XUnitTestResult 2017-05-17 00:35:41,763: INFO: saferequests(90): request_with_retry: Response complete with status code '201' 2017-05-17 00:35:41,763: INFO: azure_storage(200): _upload: Uploading single blob: '08c74bef8cc9498ab05aeb7356c3a99a.log' 2017-05-17 00:35:41,940: INFO: saferequests(90): request_with_retry: Response complete with status code '201' 2017-05-17 00:35:41,940: INFO: event(38): send: Sending event type Logs 2017-05-17 00:35:41,973: INFO: saferequests(90): request_with_retry: Response complete with status code '201' ~~~ +19878 area-System.Runtime Question: What would happen if we use a lot of Weakreferences? I know that using Weakreference is not without cost, but about the cost, I have some questions. 1. What is the cost? GC time, memory space, or both? GCHandle? 2. How much is the cost? 3. Why does Weakreference has extra cost while strong ref does not have? When GC, strong ref need to be updated too, why couldn't weak ref be updated the same way as strong ref? 4. Can I create a lot of objects and allocate a weakreference for each of them? For example, 100000 objects, acceptable or not? 5. If I allocate many weakreferences whose target is the same object, do they share some cost? Would the total cost be less than the one that each weakref has a different target? +19880 area-System.Net Add HttpListenerResponse tests Contributes to #13618 I've baselined all the managed failures instead of trying to fix them in this PR - there are just too many! I'm sure this will give me plenty of work to do after this PR. Considering that there's been some discussion of the risk of my fixes recently, I'm going to invest in more comprehensive testing, followed by targetted fixes @stephentoub @priya91 @davidsh +19882 area-System.Data SqlDbType exists both in NetStandard and System.Data.SqlClient When using SqlDbType in .NET Core 2.0 SqlDbType errors with: ![image](https://cloud.githubusercontent.com/assets/1374013/26146341/add2c5e2-3aa4-11e7-8efc-0b44d538a801.png) The type exists both in System.Data.SqlClient and .NET Standard, so the Sql Client version probably has to be removed. +19883 area-Infrastructure sync.cmd / build.cmd commandlets fail when a space is in the path I know, why on earth would you use a space a file path, but I happen to have the path: `\myprojects\vs.net projects\github\corefx` which makes sync.cmd and build.cmd fail as they don't wrap the path they're in with quotes. Moving the repo on disk to a folder without a space solves it. Not a high-prio error, just a FYI in case you didn't know. The https://github.com/dotnet/corefx/wiki/Checking-out-the-code-repository page would likely benefit from a warning in this case, so people who clone the repo and try to build it aren't surprised if they're as daft as me and use a space in the path their cloned repo is located ;) +19884 area-System.Data Implements #19825: SqlConnection doesn't override DbProviderFactory property This PR implements #19825 with an override of the SqlConnection.DbProviderFactory property by returning the static SqlClientFactory.Instance object. cc @karelz @saurabh500 +19885 area-System.Data Implements #19826 and #4571: Adds DbConnection.ProviderFactory and DbProviderFactories "This issue (re)implements #19826: DbConnection.ProviderFactory, by simply returning the value returned by the virtual property DbConnection.DbProviderFactory. This way it's easier to bring back DbProviderFactories from .net full. The code was removed in commit 8150669, associated with issue #17905. cc @karelz @saurabh500 (edit). This PR tracks now also the implementation of #4571. The public API is as follows: ```cs public static partial class DbProviderFactories { public static DbProviderFactory GetFactory(string providerInvariantName) public static DbProviderFactory GetFactory(DataRow providerRow) public static DbProviderFactory GetFactory(DbConnection connection) public static void SetFactory(string name="""", string providerInvariantName="""", string description = """") where TFactory : DbProviderFactory public static void SetFactory(DbConnection connection, string name="""", string providerInvariantName = """", string description = """") public static DataTable GetFactoryClasses() } ``` The public API of the NetFX DbProviderFactories class is the same as the public API of this class. Differences: - It doesn't auto-initialize itself, by default no factory/providers are registered. - It can be manipulated using a public API at runtime. Usage to register a factory: ```cs DbProviderFactories.SetFactory(); // or DbProviderFactories.SetFactory(new SqlConnection()); ``` The method accepts more parameters, so the developer can specify their own InvariantName, name and description if they want to. If they're not supplied, like the example above, they're obtained from the Type. " +19887 area-System.Security Document crypto APIs which exist for compat, but are otherwise deprecated A lot (but not all) of the cryptography API delta from 1.1 to 2.0 is compat-only. In addition to the automatically identified cross-platform warnings, identify what things which were brought back that should just be generally regarded as deprecated and add them to the code analyzer tooling. In addition to those items, some 1.x API should be tagged: * The Windows CAPI dependencies (*CryptoServiceProvider types) * Already tagged for cross-platform risk, but should be tagged as well for deprecation. * The Rfc2898DeriveBytes ctors that do not take HashAlgorithmName as an input * Potentially others. +19888 area-System.Security X509Certificate2.CopyWithPrivateKey does not work as expected. "```c# using (var rsa = RSA.Create()) { var request = new CertificateRequest(""CN=localhost"", rsa, HashAlgorithmName.SHA256); var serialNumber = new byte[8]; using (var rng = RandomNumberGenerator.Create()) { rng.GetBytes(serialNumber); } var now = DateTimeOffset.UtcNow; var rootCertificate = new X509Certificate2(@""C:\path\to\root\certificate.pfx""); var certificate = request.Create(rootCertificate, now, now.AddYears(1), serialNumber); var certificate1 = certificate.CopyWithPrivateKey(rsa); var certificate2 = new X509Certificate2(certificate1.Export(X509ContentType.Pkcs12)); // NullReferenceException Console.WriteLine(certificate1.ToString(true)); // Works well Console.WriteLine(certificate2.ToString(true)); } ``` After checking both certificate with inspector, it was discovered that some fields of `X509Certificate2.PrivateKey.Key` objects such as `KeyName`, `IsEphemeral`, `UniqueId` are different from each certificates. Because of this issue, `certificate1` cannot be used for `SslStream.AuthenticateAsServer` method. To workaround this, generated certificate should be exported as pcks#12 and reimported agian." +19889 area-System.IO System.IO.Compression: Add IsFile or IsDirectory property to ZipArchiveEntry "The current mechanism to determine whether an item in a zip is a directory is to test whether the `FullName` ends with `""/""` and also the `Name` property is blank. To my knowledge, in order to extract a zip file and overwrite the contents - since `ExtractToDirectory` doesn't have that ability yet (#8146!) - the following is the smallest way of performing this: $zip = [System.IO.Compression.ZipFile]::OpenRead(""MyCompressedFile.zip"") foreach ($item in $zip.Entries) { if ($item.FullName.EndsWith(""/"") -and $item.name -eq """") { (New-Item $item.FullName -type directory -force) > $null } else { ([System.IO.Compression.ZipFileExtensions]::ExtractToFile($item, (Join-Path -Path $pathToExtractDirectory -ChildPath $item.FullName), $true)) > $null } } As you can see on the third line, we need to determine whether the `ZipArchiveEntry` is a directory or file - `$item.FullName.EndsWith(""/"") -and $item.name -eq """"`. If this condition can be changed to `$item.IsDirectory` or `$item.IsFile` then I believe that this would make it easier for developers to extract files in this way. The function of the `IsDirectory` property is simply to provide a shorthand, user-friendly mechanism of succinctly determining the object type of the `ZipArchiveEntry`. It could also be an enum, such as `ZipArchiveEntryType`, but I believe that this might be overkill." +19890 area-Infrastructure VS Code has trouble opening projects from CoreFX I've been trying to use VS code for CoreFx development, but with very little luck so far. First of all there doesn't seem to be a master solution, some assemblies have their own solutions some don't, there doesn't seem to be much of an order in the .sln files. Opening the repo in VS Code, one needs to pick the .sln to work with (so that OmniSharp has a way to load the projects). Just two examples: - System.Threading.tasks.sln - there are several warnings and failures reported when opening this. The end result is that intellisense doesn't work at all - no Go to Definition or anything like that. - System.Private.Xml.sln - this one seems to open without fatal errors, so some of the intellisense lights up, but then the IDE reports a huge number of errors. Opening a random source file like XmlResolver.cs shows a lot of red squiggles. Basically it seems that types from CoreLib don't resolve at all. +19892 area-Infrastructure Confirm stability of new Perf.Environment tests We checked in new tests in this PR, https://github.com/dotnet/corefx/pull/19623. The tests appear to be good, but we should ensure that over the next week we are seeing stable results from these tests. +19894 area-System.Data User message for non-support of Sys.Transactions in SqlClient I am opening this issue to discuss the right customer messaging for absence of Sys.Transactions support in SqlClient. Refer comment https://github.com/dotnet/corefx/issues/19708#issuecomment-301959886 and the following comment. In case of SqlClient operations enclosed in a TransactionScope, the operations would not be run in a single transaction. However this would not throw an exception to the customer. We need a mechanism to make sure that customers understand this behavior. +19896 area-System.Data Add Tracing in SqlClient SqlClient doesn't have any tracing in .Net Core. All the Bid Tracing API calls were removed during the port to Core. One of the options is to use EventSource to emit traces during runtime. Something similar was done by @stephentoub in `System.Data.Common` . Ref: https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DataCommonEventSource.cs cc @corivera +19897 area-Serialization XmlSerializerTests.Xml_TypeWithTwoDimensionalArrayProperty1 Failed on UWP "Test `XmlSerializerTests.Xml_TypeWithTwoDimensionalArrayProperty1` failed on UWP when using SG. ``` \r\n\r\n \r\n \r\n \r\n 0 0 value\r\n 1\r\n \r\n \r\n 0 1 value\r\n 2\r\n \r\n \r\n \r\n \r\n 1 0 value\r\n 3\r\n \r\n \r\n 1 1 value\r\n 4\r\n \r\n \r\n \r\n\r\n Actual: \r\n\r\n \r\n \r\n \r\n 0 0 value\r\n 1\r\n \r\n \r\n 0 1 value\r\n 2\r\n \r\n \r\n \r\n \r\n 1 0 value\r\n 3\r\n \r\n \r\n 1 1 value\r\n 4\r\n \r\n \r\n \r\n\r\n Expected: True\r\nActual: False]]> (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4466 at XmlSerializerTests.Xml_TypeWithTwoDimensionalArrayProperty1() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 1830 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +19898 area-Serialization XmlSerializerTests.XmlUnknownElementAndEventHandlerTest Failed on UWP "`XmlSerializerTests.XmlUnknownElementAndEventHandlerTest` failed on UWP when using Sg. ``` ``` Test `XmlSerializerTests.XmlUnknownNodeAndEventHandlerTest` also failed." +19899 area-Serialization XmlSerializerTests.Xml_TypeWithXmlQualifiedName Failed on UWP "XmlSerializerTests.Xml_TypeWithXmlQualifiedName failed on UWP when using Sg. ``` \r\n\r\n FooName\r\n\r\n Actual: \r\n\r\n FooName\r\n\r\n Expected: True\r\nActual: False]]> (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4466 at XmlSerializerTests.Xml_TypeWithXmlQualifiedName() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 2033 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +19901 area-Serialization XmlSerializerTests.Xml_TypeWithDefaultTimeSpanProperty Failed on UWP "`XmlSerializerTests.Xml_TypeWithDefaultTimeSpanProperty` failed on UWP when using Sg. ``` \r\nPT1M\r\n Actual: \r\n\r\n PT1M\r\n PT1M\r\n\r\n Expected: True\r\nActual: False]]> (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4466 at XmlSerializerTests.Xml_TypeWithDefaultTimeSpanProperty() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 1670 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +19902 area-Serialization XmlSerializerTests.XML_TypeWithQNameArrayAsXmlAttribute Failed on UWP "Test `XmlSerializerTests.XML_TypeWithQNameArrayAsXmlAttribute` failed on UWP when using Sg. ``` (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4466 at XmlSerializerTests.XML_TypeWithQNameArrayAsXmlAttribute() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 2356 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400 ----- Inner Stack Trace ----- at System.Xml.XmlTextWriter.AutoComplete($Token token) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Core\XmlTextWriter.cs:line 1176 at System.Xml.XmlTextWriter.WriteStartAttribute$catch$0() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Core\XmlTextWriter.cs:line 676 at System.Xml.Serialization.XmlSerializationWriter.WriteAttribute(String prefix, String localName, String ns, String value) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationWriter.cs:line 999 at System.Xml.Serialization.XmlSerializationWriter.GetQualifiedName(String name, String ns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationWriter.cs:line 415 at System.Xml.Serialization.XmlSerializationWriter.FromXmlQualifiedName($XmlQualifiedName xmlQualifiedName, Boolean ignoreEmpty) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationWriter.cs:line 434 at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write103_Item(String n, String ns, $TypeWithQNameArrayAsXmlAttribute o, Boolean isNullable, Boolean needType, String parentRuntimeNs, String parentCompileTimeNs) in C:\Users\shmao\AppData\Local\Temp\Ilc991344503\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 6024 at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write235_MyXmlType(Object o, String parentRuntimeNs, String parentCompileTimeNs) in C:\Users\shmao\AppData\Local\Temp\Ilc991344503\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 1560 at Microsoft.Xml.Serialization.GeneratedAssembly.TypeWithQNameArrayAsXmlAttributeSerializer.Serialize(Object objectToSerialize, $XmlSerializationWriter writer) in C:\Users\shmao\AppData\Local\Temp\Ilc991344503\xunit.console.netcore.Sg\System.Xml.XmlSerializer.Generated.cs:line 21757 at System.Xml.Serialization.XmlSerializer.Serialize($XmlWriter xmlWriter, Object o, $XmlSerializerNamespaces namespaces, String encodingStyle, String id) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializer.cs:line 486]]> ``` " +19903 area-Serialization XmlSerializerTests.XmlDeserializationEventsTest Failed on UWP "Test `XmlSerializerTests.XmlDeserializationEventsTest` failed on UWP when using Sg. ``` ```" +19904 area-Serialization XmlSerializerTests.Xml_TypeWithTypesHavingCustomFormatter Failed on UWP "Test `XmlSerializerTests.Xml_TypeWithTypesHavingCustomFormatter` failed on UWP when using sg. ``` \r\n\r\n 2016-07-18T00:00:00Z\r\n QNameContent\r\n 2016-07-18\r\n NameContent\r\n NCNameContent\r\n NMTOKENContent\r\n NMTOKENSContent\r\n VABoAGUAIABxAHUAaQBjAGsAIABiAHIAbwB3AG4AIABmAG8AeAAgAGoAdQBtAHAAcwAgAG8AdgBlAHIAIAB0AGgAZQAgAGwAYQB6AHkAIABkAG8AZwAuAA==\r\n 540068006500200071007500690063006B002000620072006F0077006E00200066006F00780020006A0075006D007000730020006F00760065007200200074006800650020006C0061007A007900200064006F0067002E00\r\n\r\n Actual: \r\n\r\n 2016-07-18T00:00:00Z\r\n QNameContent\r\n 2016-07-18\r\n NameContent\r\n NCNameContent\r\n NMTOKENContent\r\n NMTOKENSContent\r\n VABoAGUAIABxAHUAaQBjAGsAIABiAHIAbwB3AG4AIABmAG8AeAAgAGoAdQBtAHAAcwAgAG8AdgBlAHIAIAB0AGgAZQAgAGwAYQB6AHkAIABkAG8AZwAuAA==\r\n 540068006500200071007500690063006B002000620072006F0077006E00200066006F00780020006A0075006D007000730020006F00760065007200200074006800650020006C0061007A007900200064006F0067002E00\r\n\r\n Expected: True\r\nActual: False]]> (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 4466 at XmlSerializerTests.Xml_TypeWithTypesHavingCustomFormatter() in d:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 2151 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +19905 area-System.Data Adding DataTable support in SqlParameter Porting code from NetFx which enables DataTables to be passing as a parameter in SqlParameter. Tested with Dapper, and EF tests. Dapper failures for netcoreapp2.0 reduce with this change. No failures in EF tests. Added new test to test DataTable as a parameter. Fixes: https://github.com/dotnet/corefx/issues/19708 cc @NickCraver @danmosemsft @karelz +19906 area-System.Diagnostics Minor DiagnosticSource http tests improvements Address review comments from #19863: improves comments and response dispose. Also, redundant test is removed: same functionality is tested by other tests. @stephentoub +19907 area-Infrastructure Need PlatformDetection.IsUAP to allow testing of UAP specific behaviors "#1395 talks about making `TargetFrameworkMonikers.Uap` more useful to be used in a Skip* attribute on a test method/class. But what can we use within tests where we have different behaviors between platforms? For example, we have the `PlatformDectection` class. We can use things like ""if (PlatformDetection.IsFullFramework)"" etc. However, for UAP apps, it is confusing. We have PlatformDetection.IsWinRT. That seems to do a runtime check on the exe itself to determine if it is app-container, etc. But I've heard that uap-aot testing doesn't actually run as app-container. It is a synthentic ILC.EXE conversion of the managed test assembly creating a native console win32 app. So, `IsWinRT` would work in uap test runs (UWP F5) but not uap-aot test runs (UWP ILC). We also have PlatformDetection.IsNotOneCoreUap but that seems to check for the existence of httpapi.sys which is weird....that really is a SKU check and not a runtime check of the type of the application. We need a PlatformDetection.IsUAP that works reliably for UAP or UAP-AOT test runs. Do we have something to address this? cc: @weshaggard @AlexGhiondea @danmosemsft @stephentoub " +19908 area-System.Net Add DangerousAcceptAnyServerCertificateValidator property to HttpClient It's a common pattern in certain situations (in particular in tests) to use HttpClient to connect to a server with a certificate that shouldn't be validated, e.g. a self-signed cert. This is commonly achieved with HttpClientHandler by setting the ServerCertificateCustomValidationCallback property to a delegate that always returns true (returning true means that the cert passed validation): ```C# handler.ServerCertificateCustomValidationCallback = delegate { return true; }; ``` However, we can't support this callback on all implementations of HttpClientHandler. For example, on macOS, the default libcurl built against SecureTransport doesn't provide the callback we'd need to properly implement the callback, and as such, today trying to set up such a callback results in a PlatformNotSupportedException. This blocks some important scenarios; that includes testing (e.g. ASP.NET had to move away from HttpClient because of this, https://github.com/aspnet/MetaPackages/pull/100) but also higher level libraries and tools that provide similar functionality (e.g. PowerShell's `Invoke-WebRequest -SkipCertificateCheck` is blocked by this https://github.com/PowerShell/PowerShell/issues/3648). This PR adds an approved API to address this case: ```C# public static Func DangerousAcceptAnyServerCertificateValidator { get; } ``` The actual implementation of this property is trivial, simply returning a cached always-return-true delegate: ```C# public static Func DangerousAcceptAnyServerCertificateValidator { get; } = delegate { return true; }; ``` so developers can just substitute it for their custom delegate: ```C# handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; ``` The benefit of that is it gives HttpClientHandler implementations a known object reference identity that can be compared against to understand the developer's intention: if the object stored in ServerCertificateCustomValidationCallback is reference equals to DangerousAcceptAnyServerCertificateValidator, then we know that it will always return true, and on platforms where we'd otherwise throw a PlatformNotSupportedException because we can't hook up a callback, we can still entirely disable validation. This enables such scenarios to work. (As a side benefit, such a property means developers can use this property and give tools an easier opportunity for flagging the danger of such disabling of validation, making it easier for developers to avoid shipping insecure applications.) This PR: - Adds the property and the singleton delegate implementation. - Adds some tests to ensure it behaves correctly. - On Unix, if we would throw a PNSE because a callback was supplied, we special-case DangerousAcceptAnyServerCertificateValidator to avoid throwing. No changes were made to the implementation on Windows. In the future, we could choose to go further and avoid hooking up the delegate at all on both Windows and Unix even if callbacks are supported, as doing so may save some overhead. However, as this is not meant to be a common case in production, I've only modified code necessary to get these scenarios working. Fixes https://github.com/dotnet/corefx/issues/19709 Related to https://github.com/dotnet/corefx/issues/19718 cc: @bartonjs, @davidsh, @cipop, @Priya91, @wfurt, @geoffkizer +19909 area-System.Diagnostics Reenable the tests ActiveIssue'd on 19909 this in Uap (not UapAot) ``` System.IO.MemoryMappedFiles.Tests -method System.IO.MemoryMappedFiles.Tests.DataShared System.Net.Primitives.Functional.Tests -method System.Net.Primitives.Functional.Tests.EventSource_EventsRaisedAsExpected System.Net.Security.Tests -method System.Net.Security.Tests.EventSource_EventsRaisedAsExpected ``` These tests are ActiveIssue'd against this issue but for Uap, not UapAot. Chances are they were intended to be ActiveIssued against some other process-related issue that prevents them from running in UWP (non-AOT) but since we've fix the aot-related issues, zombie'ing this issue to track reenabling these two tests. +19911 area-System.Runtime Drive System.Runtime.Test failures on ILC to 0. +19912 area-Serialization Fix XmlSchemaTest on UWP The PR is to enable using `XmlSchema` on UWP in ReflectionOnly mode. `XmlSchema.Write.Write` internally create the serializer for `typeof(XmlSchema)`, see [XmlSchema.cs](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Schema/XmlSchema.cs#L175). As XmlSchema has many known types (e.g. see [XmlSchema.Items](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Schema/XmlSchema.cs#L365)), we need to keep the metadata for all of those known types to make the serializer work in ReflectionOnly mode. The PR is to keep metadata for types under `System.Xml.Schema`. I tried to find a smaller closure for types to include, but I didn't find one. Before the fix, the size of the output of XmlSerializer test was 18,553 KB; after the fix, the size became 18,579 KB. Fix #19830 +19913 area-System.Data Analyze SqlParameter on Desktop to find out scenarios of missing support for DataTable Code Scan of .Net Framework SqlClient shows that there are more missing references to DataTable and DataRow from .Net Core. Opening this issue to track the progress of the gaps. Action items: Port CParamTest and tvpTests from NetFx to .Net Core and run them to see the deficiencies in SqlParameter and port over the missing code from NetFx to support these scenarios. Other related issue which were fixed in relation to `SqlParameter` https://github.com/dotnet/corefx/issues/19708 +19914 area-System.Net HttpClient 4.3.2 broken on Mono "Hopefully this is the right place to report this. If not, please move and/or let me know where to report. `HttpClient` appears to be broken when running on Mono with the latest release. Consider the following: ```powershell Install-Package System.Net.Http -Version 4.3.1 ``` ```csharp using System; using System.Net.Http; namespace HttpClientTest { class Program { static void Main(string[] args) { var client = new HttpClient(); var response = client.GetAsync(""https://www.microsoft.com/net"").Result; Console.WriteLine(response.StatusCode); } } } ``` Compile with VS 2017, targeting .NET Framework 4.6.1. Run from the Windows command line: ``` HttpClientTest.exe ``` Works, no problem. Run under Mono, and also works. ``` mono HttpClientTest.exe ``` Now upgrade to 4.3.2 ```powershell Update-Package System.Net.Http -Version 4.3.2 ``` Run again. Works on .NET Framework, but under Mono, I get a `MissingMethodException`. ``` Unhandled Exception: System.MissingMethodException: Method 'System.Net.Logging.get_On' not found. at System.Net.Http.HttpMessageInvoker.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x0003d] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) [0x00049] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) [0x0000c] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption) [0x00008] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.Uri requestUri) [0x00000] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.String requestUri) [0x00008] in <09d4a140061c48849b6322067e841931>:0 at HttpClientTest.Program.Main (System.String[] args) [0x00007] in <8019b64f4f864b30ba0f2936c90cfab0>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Method 'System.Net.Logging.get_On' not found. at System.Net.Http.HttpMessageInvoker.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x0003d] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) [0x00049] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) [0x0000c] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption) [0x00008] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.Uri requestUri) [0x00000] in <09d4a140061c48849b6322067e841931>:0 at System.Net.Http.HttpClient.GetAsync (System.String requestUri) [0x00008] in <09d4a140061c48849b6322067e841931>:0 at HttpClientTest.Program.Main (System.String[] args) [0x00007] in <8019b64f4f864b30ba0f2936c90cfab0>:0 ``` In another app (which I can't post here), I get others as well: ``` System.MissingFieldException: Field 'System.Net.ExceptionHelper.WebPermissionUnrestricted' not found. ``` ``` System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found. ``` Same results on Mono 4.8.0 or 5.0.0." +19915 area-System.Net Workaround Win7 client certificate behavior difference Win7 and below OSs will always present a list of trusted certificates that must be matched by the client certificate. This causes some of our tests to fail when the test CA root isn't installed. Fixes #19699. +19916 area-System.Security Fix Windows X509Certificate2.ToString(true) for ephemeral private keys AppendPrivateKeyInfo handled not being able to resolve the container details for a private key, but an ephemeral private key caused a NullReferenceException instead of the caught CryptographicException. The comments in the code suggest this worked properly at one time, but there was no test guaranteeing functionality. This change handles the null return from GetPrivateKeyCsp, and adds some tests to ensure this doesn't break again. Fixes #19888 (in master, rel TBD) +19918 area-System.Data "Desktop: System.Data.SqlClient.Tests.TcpDefaultForAzureTest.NonAzureNoProtocolConnectionTest failed with ""System.TypeInitializationException""" Failed test: System.Data.SqlClient.Tests.TcpDefaultForAzureTest.NonAzureNoProtocolConnectionTest Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/59/testReport/System.Data.SqlClient.Tests/TcpDefaultForAzureTest/NonAzureNoProtocolConnectionTest/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ System.TypeInitializationException : The type initializer for 'System.Data.SqlClient.ManualTesting.Tests.DataTestUtility' threw an exception. ---- System.NullReferenceException : Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.Data.SqlClient.ManualTesting.Tests.DataTestUtility.IsUsingManagedSNI() at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.NonAzureNoProtocolConnectionTest() in D:\j\workspace\outerloop_net---903ddde6\src\System.Data.SqlClient\tests\FunctionalTests\TcpDefaultForAzureTest.cs:line 39 ----- Inner Stack Trace ----- at System.Data.SqlClient.ManualTesting.Tests.DataTestUtility..cctor() in D:\j\workspace\outerloop_net---903ddde6\src\System.Data.SqlClient\tests\ManualTests\DataCommon\DataTestUtility.cs:line 18 ~~~ +19919 area-System.Data Fix IsUsingManagedSNI on desktop Fixes https://github.com/dotnet/corefx/issues/19918 to get desktop run green again cc: @corivera +19920 area-System.Net Decrease number of socket instances in SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync Larger number causes listen queue to be exceeded, resulting in client failures due to connection being rejected by server. Closes https://github.com/dotnet/corefx/issues/19702 (we need to revisit perf testing for this area all-up) cc: @cipop, @steveharter +19921 area-System.IO Move Windows ErrorMode setting from framework/runtime to the host Follow up on https://github.com/dotnet/corefx/pull/19801#discussion_r116656403 The current scheme where the framework is trying to flip the Windows error mode around some I/O operations is bug prone (we are likely missing it on number of APIs - we do not have any testing for this), and outdated (it made sense 20 years ago for WinForms and floppies; it does not make sense for cloud and modern devices). Instead, the Windows error mode should be set once in the host during startup if applicable. Runtime and framework should get out of business of trying to flip it back and forth. +19922 area-System.Net System.Net.Sockets.Async.Performance.Tests failed to generate the test result System.Net.Sockets.Async.Performance.Tests failed to generate the test result Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Net.Sockets.Async.Performance.Tests/wilogs ~~~ 2017-05-18 00:45:49,117: INFO: proc(54): run_and_log_output: Output: executing ulimit -c unlimited 2017-05-18 00:45:49,185: INFO: proc(54): run_and_log_output: Output: xUnit.net console test runner (64-bit .NET Core) 2017-05-18 00:45:49,186: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-05-18 00:45:49,186: INFO: proc(54): run_and_log_output: Output: 2017-05-18 00:45:49,252: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Sockets.Async.Performance.Tests 2017-05-18 00:45:49,378: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Sockets.Async.Performance.Tests 2017-05-18 00:45:49,427: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Sockets.Async.Performance.Tests Killed ~~~ +19923 area-Infrastructure "Test: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/Roundtrip_CrossProcess failed with ""System.ComponentModel.Win32Exception""" Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/Roundtrip_CrossProcess(obj: Tree`1 { Left = Tree`1 { Left = Tree`1 { ... }, Right = Tree`1 { ... }, Value = 2 }, Right = Tree...` has failed. System.ComponentModel.Win32Exception : Cannot allocate memory Stack Trace: at Interop.Sys.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Int32& lpChildPid, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd) in /root/corefx/src/Common/src/Interop/Unix/System.Native/Interop.ForkAndExecProcess.cs:line 41 at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) in /root/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs:line 264 at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) in /root/corefx/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs:line 1319 at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) in /root/corefx/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 189 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Roundtrip_CrossProcess(Object obj) in /root/corefx/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs:line 731 Build : Master - 20170518.01 (Portable Core Tests) Failing configurations: - fedora.25.amd64-x64 - Release - Debug - Ubuntu.1404.Amd64-x64 - Release - Debug - Ubuntu.1610.Amd64-x64 - Release - Debug - suse.422.amd64-x64 - Release - Debug - Ubuntu.1704.Amd64-x64 - Release - Debug - Ubuntu.1604.Amd64-x64 - Release - Debug - Centos.73.Amd64-x64 - Release - Debug - Debian.87.Amd64-x64 - Release - Debug - RedHat.73.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FRoundtrip_CrossProcess(obj:%20Tree%601%20%7B%20Left%20=%20Tree%601%20%7B%20Left%20=%20Tree%601%20%7B%20...%20%7D,%20Right%20=%20Tree%601%20%7B%20...%20%7D,%20Value%20=%202%20%7D,%20Right%20=%20Tree... +19924 area-System.Collections System.Collections.Performance.Tests failed to generate the test result System.Collections.Performance.Tests failed to generate the test result Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Collections.Performance.Tests/wilogs ~~~ 2017-05-18 00:36:29,167: INFO: proc(54): run_and_log_output: Output: Discovering: System.Collections.Performance.Tests 2017-05-18 00:36:29,299: INFO: proc(54): run_and_log_output: Output: Discovered: System.Collections.Performance.Tests 2017-05-18 00:36:29,361: INFO: proc(54): run_and_log_output: Output: Starting: System.Collections.Performance.Tests 2017-05-18 00:43:03,575: INFO: proc(54): run_and_log_output: Output: 2017-05-18 00:43:03,575: INFO: proc(54): run_and_log_output: Output: Unhandled Exception: OutOfMemoryException. 2017-05-18 00:43:35,433: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/5a513eea-2281-486a-a1fd-88e82eed7b3d/Work/3076bf4c-9f2a-40ea-ad95-97a6ea3e3f69/Unzip/RunTests.sh: line 89: 4009 Aborted (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Collections.Performance.Tests.dll -xml testResults.xml -parallel none -notrait category=nonnetcoreapptests -notrait category=failing -notrait category=nonlinuxtests 2017-05-18 00:43:35,433: INFO: proc(54): run_and_log_output: Output: command exited with ExitCode: 134 2017-05-18 00:43:35,434: INFO: proc(54): run_and_log_output: Output: command failed, trying to collect dumps 2017-05-18 00:43:36,097: INFO: proc(54): run_and_log_output: Output: corefile: core 2017-05-18 00:43:36,098: INFO: proc(54): run_and_log_output: Output: uploading core to dumpling service Killed ~~~ +19925 area-System.Security "Tests under: System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX failed with ""Interop+AppleCrypto+AppleCommonCryptoCryptographicException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX/AddPrivateAfterPublic` has failed. Interop+AppleCrypto+AppleCommonCryptoCryptographicException : write permissions error Stack Trace: at Interop.AppleCrypto.X509StoreAddCertificate(SafeKeychainItemHandle certOrIdentity, SafeKeychainHandle keychain) in /Users/buildagent/agent/_work/23/s/corefx/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.X509Store.cs:line 41 at System.Security.Cryptography.X509Certificates.X509Store.Add(X509Certificate2 certificate) in /Users/buildagent/agent/_work/23/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 139 at System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX.AddPrivateAfterPublic() in /Users/buildagent/agent/_work/23/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/X509StoreMutableTests.OSX.cs:line 119 Build : 2.0.0 - 20170518.01 (Portable Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.X509StoreMutableTests_OSX~2FAddPrivateAfterPublic +19927 area-System.Runtime Add support to System.Runtime.InteropServices.RuntimeInformation to determine what the currently executing framework is We have a couple of places where we would like to run platform specific code without having to cross-compile. Essentially the same thing as https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/PlatformDetection.cs#L21. However using `RuntimeInformation.FrameworkDescription` seems fragile. Would it make sense to expose an API similar to `RuntimeInformation.IsOSPlatform` here i.e. `RuntimeInformation.IsFramework`? +19928 area-System.Reflection Add API to get an AssemblyName that doesn't throw on a native binary I've seen patterns like this in countless tools: ```C# try { return AssemblyName.GetAssemblyName(sourcePath); } catch(BadImageFormatException) { return null; } ``` It would be better if we could just do: ``` AssemblyName name; return AssemblyName.TryGetAssemblyName(sourcePath, out name) ? name : null; ``` API signature: ```C# public static bool TryGetAssemblyName(string assemblyFile, out AssemblyName assemblyName); ``` By making this a new API we don't change the behavior of the existing API. By making the API determine if a file is an assembly and returning the name we avoid having to open the file twice. The other alternative available today requires using System.Reflection.Metadata which is not part of netstandard and requires redistributing a sizeable dependency (800KB), or writing your own PE parsing code (which requires opening the file twice). /cc @gkhanna79 +19929 area-System.Security System.Security.PermissionSet im getting the following error System.TypeLoadException: 'Could not load type 'System.Security.PermissionSet' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.' When i try to open a MySqlConnection with .Net Core 2. Did you know why? +19930 area-Infrastructure Need a way to configure the project in corefx to work with CLI Currently, the project in corefx cannot be executed using CLI command. Need a way to support it. e.g. https://github.com/dotnet/corefx/blob/master/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj Refer the issue https://github.com/dotnet/cli/issues/6612 @mellinoe +19931 area-Infrastructure PlatformDetection IsWinRT and IsNetNative return confusing values when running uap or uap-aot tests While exploring solutions to #19907, I discovered the `PlatformDetection` properties `IsWinRT` and `IsNetNative` return confusing values when running uap or uap-aot tests. For example: ``` // Test against .NET Core (non-UAP) msbuild /t:rebuildandtest // Result (good) IsWinRT=False, IsNetNative=False // Test against .NET Core UAP without .NET Native (ILC) (F5 scenario) msbuild /t:rebuildandtest /p:TargetGroup=uap // Result (weird, why is IsNetNative true?) IsWinRT=True, IsNetNative=True // Test against .NET Core UAP with .NET Native (ILC) msbuild /t:rebuildandtest /p:TargetGroup=uapaot // Result (weird, why is IsWinRT false? Is it because it is now a native app?) IsWinRT=False, IsNetNative=True ``` +19932 area-System.Runtime Path.Combine has issues with null terminated strings "When dealing with null terminated strings from native applications Path.Combine throws an exception. This should not happen no? ``` Path.Combine(""abc\0\0"", ""abc"") 'Path.Combine(""abc\0\0"", ""abc"")' threw an exception of type 'System.ArgumentException' Data: {System.Collections.ListDictionaryInternal} Message: ""Illegal characters in path."" StackTrace: "" at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)\r\n at System.IO.Path.Combine(String path1, String path2)"" TargetSite: {Void CheckInvalidPathChars(System.String, Boolean)} ```" +19933 area-System.Security On OSX X509Chain doesn't correctly check CRL revocation with ChainPolicy X509RevocationMode.Online X509Chain reports no problems when a certificate has been revoked via a CRL. This was discovered in a WCF test and is tracked in dotnet/wcf#1926 +19934 area-System.Security Tests needed for X509Chain with revoked certificates The WCF team discovered that a recent change for OSX broke certificate revocation checks when using a CRL. The corefx repo should have tests which should have caught this issue. +19936 area-System.Net Update NETStandard.Library to reference System.Net.Http 4.3.2 When I create an ASP.NET Core 1.1 app that uses Azure SDK libraries to talk to Azure Key Vault and Azure AD on .NET 4.6.2 I get the following error: ``` System.TypeLoadException: Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible. at Microsoft.Rest.ServiceClient`1.CreateRootHandler() at Microsoft.Azure.KeyVault.KeyVaultClient..ctor(ServiceClientCredentials credentials, DelegatingHandler[] handlers) at AspNetCoreIdentityServiceTest.Startup.<b__6_0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext() ``` Which was fixed by https://github.com/dotnet/corefx/issues/11100. I can get the error to go away by directly referencing System.Net.Http 4.3.2. Looking at my assets.json file it looks like NETStandard.Library 1.6.1 is pulling in the older version of System.Net.Http. Can we update NETStandard.Library to pull in the newer fixed version of System.Net.Http? Presumably we would then need to update the ASP.NET Core 1.1 packages. https://github.com/dotnet/standard/issues/354 tracks the similar issue for NETStandard.Library 2.0.0. @ericstj @DamianEdwards @Eilon @karelz +19937 area-System.Data Porting Sqlconnection.GetSchema Porting the SqlConnection.GetSchema API from .Net Framework and adding the related tests and constants to SqlClient. Addresses https://github.com/dotnet/corefx/issues/19797 +19938 area-System.Net AcceptWebSocketAsync_ValidSubProtocol_Success failed with System.Net.HttpListenerException : Address already in use "Only visible in infrastructure log as a later test timed out https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Net.HttpListener.Tests/wilogs ``` 2017-05-17 17:38:39,340: INFO: proc(54): run_and_log_output: Output: System.Net.Tests.HttpListenerContextTests.AcceptWebSocketAsync_ValidSubProtocol_Success(clientProtocols: [\""MyProtocol1\"", \""MyProtocol2\""], serverProtocol: \""MyProtocol2\"") [FAIL] 2017-05-17 17:38:39,341: INFO: proc(54): run_and_log_output: Output: System.Net.HttpListenerException : Address already in use 2017-05-17 17:38:39,341: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-17 17:38:39,341: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpEndPointManager.GetEPListener(String host, Int32 port, HttpListener listener, Boolean secure, Boolean& alreadyExists) 2017-05-17 17:38:39,341: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpEndPointManager.RemovePrefixInternal(String prefix, HttpListener listener) 2017-05-17 17:38:39,342: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpEndPointManager.RemoveListener(HttpListener listener) 2017-05-17 17:38:39,342: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpListener.Close(Boolean force) 2017-05-17 17:38:39,342: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpListener.Dispose() 2017-05-17 17:38:39,342: INFO: proc(54): run_and_log_output: Output: at System.Net.HttpListener.Close() 2017-05-17 17:38:39,342: INFO: proc(54): run_and_log_output: Output: at System.Net.Tests.HttpListenerContextTests.Dispose() 2017-05-17 17:38:39,342: INFO: proc(54): run_and_log_output: Output: at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) ```" +19939 area-System.Net AcceptWebSocketAsync_InvalidSubProtocol_ThrowsArgumentException failed with ExtendedSocketException : Device not configured "Only visible in infrastructure log as a later test timed out https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Net.HttpListener.Tests/wilogs ``` 2017-05-17 17:38:38,891: INFO: proc(54): run_and_log_output: Output: System.Net.Tests.HttpListenerContextTests.AcceptWebSocketAsync_InvalidSubProtocol_ThrowsArgumentException(subProtocol: \""random:text\"") [FAIL] 2017-05-17 17:38:38,891: INFO: proc(54): run_and_log_output: Output: System.Net.WebSockets.WebSocketException : Unable to connect to the remote server 2017-05-17 17:38:38,891: INFO: proc(54): run_and_log_output: Output: ---- System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Device not configured 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: at System.Net.WebSockets.WebSocketHandle.d__24.MoveNext() 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: at System.Net.WebSockets.ClientWebSocket.d__16.MoveNext() 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,892: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: at System.Net.Tests.HttpListenerContextTests.d__24.MoveNext() 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: at System.Net.Tests.HttpListenerContextTests.d__16.MoveNext() 2017-05-17 17:38:38,893: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,894: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,894: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,894: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,894: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,894: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,894: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,895: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,895: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,895: INFO: proc(54): run_and_log_output: Output: ----- Inner Stack Trace ----- 2017-05-17 17:38:38,895: INFO: proc(54): run_and_log_output: Output: at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) 2017-05-17 17:38:38,895: INFO: proc(54): run_and_log_output: Output: at System.Net.Dns.ResolveCallback(Object context) 2017-05-17 17:38:38,895: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,896: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,896: INFO: proc(54): run_and_log_output: Output: at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) 2017-05-17 17:38:38,896: INFO: proc(54): run_and_log_output: Output: at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult) 2017-05-17 17:38:38,896: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 2017-05-17 17:38:38,896: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,896: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,897: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,897: INFO: proc(54): run_and_log_output: Output: at System.Net.WebSockets.WebSocketHandle.d__25.MoveNext() 2017-05-17 17:38:38,897: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,897: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,897: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,897: INFO: proc(54): run_and_log_output: Output: at System.Net.WebSockets.WebSocketHandle.d__24.MoveNext() ```" +19940 area-System.Net EndGetClientCertificate_NullAsyncResult_ThrowsArgumentException failed with ExtendedSocketException : Connection refused Only visible in infrastructure log as a later test timed out https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170518.01/workItem/System.Net.HttpListener.Tests/wilogs ``` 2017-05-17 17:38:37,926: INFO: proc(54): run_and_log_output: Output: System.Net.Tests.HttpListenerRequestTests.EndGetClientCertificate_NullAsyncResult_ThrowsArgumentException [FAIL] 2017-05-17 17:38:37,928: INFO: proc(54): run_and_log_output: Output: System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Connection refused 127.0.0.1:1037 2017-05-17 17:38:37,933: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-17 17:38:38,076: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 2017-05-17 17:38:38,076: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 2017-05-17 17:38:38,076: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) 2017-05-17 17:38:38,076: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,077: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,077: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) 2017-05-17 17:38:38,077: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.Connect(String host, Int32 port) 2017-05-17 17:38:38,077: INFO: proc(54): run_and_log_output: Output: at System.Net.Tests.HttpListenerFactory.GetConnectedSocket() 2017-05-17 17:38:38,077: INFO: proc(54): run_and_log_output: Output: at System.Net.Tests.HttpListenerRequestTests.d__31.MoveNext() 2017-05-17 17:38:38,077: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,078: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,078: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,078: INFO: proc(54): run_and_log_output: Output: at System.Net.Tests.HttpListenerRequestTests.d__18.MoveNext() 2017-05-17 17:38:38,078: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,078: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-17 17:38:38,079: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +19943 area-System.Net Fix Http Unit Tests Fixed the System.Net.Http Unit Tests so that they build and run properly for uap and uap-aot scenarios. Removed the ICloneable.cs file which is no longer needed now that master branch has ICloneable support in it. +19946 area-Infrastructure Changes required to get Linux Validation working CC: @weshaggard @ericstj @danmosemsft These are all of the changes required for the validation on non-Windows machines for non-Windows RIDs. After this, the only thing missing will be to add the APICompat runs in order to complete issue #18083 +19947 area-System.Net Investigate WinHttpException: buffer too small For #7812. Not able to repro locally, want to get more info from CI +19949 area-Infrastructure Avoid having runtime specific assets when they aren't necessary. Due to an issue in nuget which will hopefully be address with https://github.com/NuGet/Home/issues/5192 some of our packages end up with the wrong asset being selected when we have both runtime and lib assets in the package. For some of our packages that isn't necessary. Example: System.Security.Permissions has a runtime\net461 asset and a lib\netstandard2.0 asset and when a netcoreapp2.0 project has a fallback of net461 we will prefer the net461 asset over the netstandard2.0 asset which will not work on netcoreapp2.0. See https://github.com/dotnet/corefx/issues/19929. We should do an audit of other packages in this situation to avoid it. +19952 area-System.Net Fix some Http tests for UAP Fixed some of the HttpRequestMessage tests for UAP. HttpRequestMessage has a different default value for the Version field on UAP platforms compared to netcore or netfx. Added PlatformDetection.IsUap to support this. Implementation of this property was based on investigations for #19907. This property is true on both 'uap' and 'uap-aot' platforms. Fixes #19907 +19953 area-System.Data Review SqlClient tests on Desktop for scenarios missing from .Net Core Review SqlClient tests on Desktop for scenarios which do not satisfy the .Net Core surface area. The review will be targeted at identifying the usage of Data Structures like DataTable , DataRow etc which were added to System.Data.Common in 2.0 and should have related functionality in .Net Core. One of such scenarios was DataTable/TVP support in SqlClient SqlParameter +19954 area-Serialization Fix XmlUnknownElementAndEventHandlerTest. Fix XmlSerializerTests.XmlUnknownElementAndEventHandlerTest in ReflectionOnly mode. Fix #14259. +19955 area-System.Net Re-enable failing httplistener tests on osx. cc @hughbe @stephentoub fixes #19593 #19986 +19956 area-System.Diagnostics Improve UseShellExecute on Unix "This is just a question because from what I read in google there seems to be a problem with it. Does it work/will it work in 2.0? ```c# private bool OpenBrowser(string url) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Process.Start(new ProcessStartInfo(""cmd"", $""/c start {url.Replace(""&"", ""^&"")}"") { CreateNoWindow = true }); return true; } if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { Process.Start(""xdg-open"", url); return true; } if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { Process.Start(""open"", url); return true; } return false; } ``` " +19957 area-Infrastructure Change Build to BuildMoniker to get correct build id +19958 area-System.Runtime Enable more System.Runtime.Tests coverage for ILC "A lot the .netcore.cs files are testing stuff that ""should"" work in .Net Native (and tend to represent the newer stuff which *isn't* likely to have been ported yet). They should be active in the UapAot build." +19959 area-System.IO Fix Unix missing file state In the original .NET implementation a missing file never throws directly with FileInfo. Attributes get the error result from Windows (-1) and times aren't initialized. +19960 area-System.Net System.Net.Primitives for UWP 1. Disabling failing UWP test (tracked by #19909) 2. Unifying Windows implementations +19961 area-System.Data Port of PR https://github.com/dotnet/corefx/pull/19905 Porting code from NetFx which enables DataTables to be passing as a parameter in SqlParameter. Tested with Dapper, and EF tests. Dapper failures for netcoreapp2.0 reduce with this change. No failures in EF tests. Added new test to test DataTable as a parameter. PR in master https://github.com/dotnet/corefx/pull/19905 Fixes: #19708 +19963 area-System.Net HttpClient WebRequestHandler.CachePolicy Replacement I've run the Portability Analyzer and found that HttpClient does not implement WebRequestHandler.CachePolicy and I don't seem to be able to find any replacement for this. @karelz suggested asking here. A [similar question](http://stackoverflow.com/questions/43272530/whats-the-alternative-to-webrequesthandler-in-net-core) was asked on Stack Overflow and has no answer. I would like to know if there is any equivalent to WebRequestHandler.CachePolicy in .NET Core for use with HttpClient. If there is no equivalent, I would like to know what the effective equivalent default value is in .NET Core? More specifically, .NET Core's implementation is equivalent to a RequestCacheLevel of BypassCache OR CacheOnly OR CacheIfAvailable OR Revalidate OR Reload OR NoCacheNoStore? Furthermore, is it consistent across platforms? From examining the [source](https://github.com/dotnet/corefx/tree/master/src/System.Net.Http/src/System/Net/Http), I think it might be BypassCache, but I'm not sure and would like confirmation. I'm also unsure if an OS level cache is used on Windows or elsewhere or whether .NET Core bypasses those. If BypassCache is not the current equivalent default on .NET Core or if any intermediate caches such as OS caches are being used on any platform, I think there needs to be the option to set BypassCache, so we're able to implement our own caching on top of HttpClient. +19964 area-System.Net NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds failed with System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) again https://mc.dot.net/#/user/mmitche/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fportable~2Fcli~2F//workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FNoCallback_RevokedCertificate_NoRevocationChecking_Succeeds ``` nhandled Exception of Type System.Net.Http.HttpRequestException Message : System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : Problem with the SSL CA cert (path? access rights?) Stack Trace : at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/GenPRTest/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__9.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/GenPRTest/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 193 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /mnt/j/workspace/dotnet_corefx/master/GenPRTest/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 644 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /mnt/j/workspace/dotnet_corefx/master/GenPRTest/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandl ``` https://github.com/dotnet/corefx/issues/19701 simlar +19965 area-System.IO Unix throws the wrong exception creating a FileStream Same underlying issue as #19850. Need to update CoreLib to throw DirectoryNotFound if the directory doesn't exist. (`/directory/doesnotexist/doesnotexist`) +19967 area-System.Net System.Net.* marked as ConditionalFact/Theory tests fail in Desktop These tests are currently not running for Desktop in Helix/CI/Jenkins due to: https://github.com/xunit/xunit/issues/1291 in our side we are tracking this with https://github.com/dotnet/corefx/issues/18483 Affected projects: * `System.Net.WebSockets.Client.Tests` * `System.Net.HttpListener.Tests` I currently have a fix out for this that needs to go in on Xunit's repo, be published to nuget, and then we can consume it. (https://github.com/xunit/xunit/pull/1292) However there is a way to execute this tests on the meantime: Download: https://1drv.ms/u/s!AmGrqT8fQnxGryZOE1E5KSce4WwT build corefx from root for netfx (`build.cmd -framework:netfx`) Move the dlls that are inside the .zip that you download (Debug or Release) to corefx\bin\testhost\netfx-BuildConfiguration\ and corefx\bin\runtime\netfx-BuildConfiguration\ Then run the test project with `/p:TargetGroup=netfx` Pointing this out as we should at least take a look at the failures to see if there is concerning reason why they are failing. i.e Compat Issue. cc: @davidsh @CIPop @danmosemsft @stephentoub FYI: @hughbe +19968 area-System.Data Throw exception on enlisting SqlConnection in transaction The PR does the following 1. Brings in Enlist keyword on connection string. 2. Throws exceptions when SqlConnection.Open or SqlConnection.OpenAsync() is called in Transaction Scope 3. Throws Exception when SqlConnection.EnlistTransaction is called. Addresses https://github.com/dotnet/corefx/issues/19894 +19970 area-System.Data Announcement: Call for help: System.Data.SqlClient in .NET Core 2.0 We have found quite non-trivial gaps in System.Data.SqlClient based on Preview 1 feedback. First, thanks everyone helping us discovering them, understand them and fixing them. Also thanks for the patience with the lower-than-desired quality of the area. Special shout outs to @NickCraver @FransBouma @RickStrahl @cskwg and @cincuranet We have had several meetings in last few days and we are working closely with the Data.SqlClient team. They kindly heard us out and increased the number of people focusing on .NET Core 2.0 shipping from 1 to 3! So huge thanks to Ken (new manager of the area) for making it happen! And thanks Data team for helping us to get the area in high-quality shape: @saurabh500 @corivera @geleems Here's update on the remaining work in the space (from @saurabh500): [Query of all SqlClient bugs](https://github.com/dotnet/corefx/issues?utf8=%E2%9C%93&q=is%3Aopen%20label%3Aarea-System.Data.SqlClient%20milestone%3A2.0.0) We have a PRs planned to address issues in the query above for which we have a definite timelines. 1. PR #19894 - due EOD today 2. PR #19797 - PR in master, testing EF and Dapper 3. PR #19708 - PR merged in master. Port to 2.0 pending. 4. PR #19749 - This is an aggregate of issues that came out due to customer feedback. We are addressing or already have addressed everything mentioned here through other issues. 5. PR #19825 - PR up from @FransBouma. Needs to be driven to completion. 6. PR #19826 - PR up from @FransBouma. Needs to be driven to completion. The three issues which can consume time beyond next week are 1. #19953 - Review SqlClient tests on Desktop for scenarios missing from .Net Core. 2. #19913 - Analyze SqlParameter on Desktop to find out scenarios of missing support for DataTable 3. #19836 - Investigate use of LongRunning continuation option in SqlClient async reads Apart from these above issues, we will be looking at **additional testing of .Net Core**. In case they uncover any additional issues, we will open them and bring them to Shiproom. +19971 area-System.Net [Managed bug] HttpListenerResponse should align with Windows behaviour for after disposing/sending headers The following tests are disabled under this issue: - Redirect_Disposed_ThrowsObjectDisposedException - CloseResponseEntity_AlreadyDisposed_ThrowsObjectDisposedException - OutputStream_GetDisposed_ThrowsObjectDisposedException - StatusDescription_SetDisposed_ThrowsObjectDisposedException - ContentType_SetAfterHeadersSent_DoesNothing - RedirectLocation_SetAfterHeadersSent_DoesNothing - StatusCode_SetAfterHeadersSent_DoesNothing - KeepAlive_SetAfterHeadersSent_DoesNothing +19972 area-System.Net [HttpListener] [Managed] HttpListenerResponse should set properties directly in the Headers property on set/get Causes the following test failures: - [x] ContentType_SetAndSend_Success - [x] ContentType_SetNullEmptyOrWhitespace_ResetsContentType - [x] RedirectLocation_SetAndSend_Success - [x] RedirectLocation_SetNullOrEmpty_ResetsRedirectLocation - [x] Redirect_Invoke_SetsRedirectionProperties - [x] KeepAlive_ContentLengthBoundaryAndRequestHttpVersionMinorIsZero_DoesNotChangeWhenSendingHeaders +19973 area-System.Net [Managed bug] HttpListenerResponse should send chunked by default The following issues are disabled under this issue: - ContentLength64_GetSet_ReturnsExpected - ContentLength64_SetDisposed_ThrowsObjectDisposedException - ContentLength64_SetNegative_ThrowsArgumentOutOfRangeException - ContentLength64_NotSetAndGetAfterSendingHeaders_ReturnValueDependsOnStatusCode --- - SendChunked_GetSet_ReturnsExpected - SendChunked_SetDisposed_ThrowsObjectDisposedException - CloseResponseEntity_ChunkedNotSentHeaders_ModifiesContentLength +19974 area-System.Data How do I generate Nuget package for an assembly in CoreFx I am trying to create a Nuget package in CoreFx for System.Data.SqlClient using build-packages.cmd However that only creates the packages for Microsoft.* .nupkg How do I go about creating a package for System.Data.SqlClient or any other assembly? +19975 area-System.Net [HttpListener] [Managed] HttpListenerResponse should align with Windows behaviour for Close(byte[], bool) The following tests are disabled with this issue: - [x] CloseResponseEntity_SendToClosedConnection_DoesNotThrow - [x] CloseResponseEntity_ChunkedSentHeaders_DoesNotModifyContentLength - [x] CloseResponseEntity_NotChunkedSentHeaders_SendsEntityWithoutModifyingContentLength - [x] CloseResponseEntity_AllContentLengthAlreadySent_DoesNotSendEntity - [ ] Abort_Invoke_ForciblyTerminatesConnection +19976 area-System.Net [Managed bug] HttpListenerResponse should align with Windows behaviour for StatusCode/StatusDescription Following tests are disabled with this issue: - StatusCode_SetAndSend_Success - StatusDescription_GetWithCustomStatusCode_ReturnsExpected - StatusDescription_SetCustom_Success - StatusDescription_SetNull_ThrowsArgumentNullException - StatusDescription_SetInvalid_ThrowsArgumentException +19977 area-System.Net [HttpListener] [Managed] HttpListenerResponse should align with Windows behaviour for protocol versions Following tests are disabled with this issue: - ProtocolVersion_SetValid_ReturnsExpected - SendChunked_SetTrueAndRequestHttpVersionMinorIsZero_ThrowsInvalidOperationException - KeepAlive_NoBoundaryAndRequestHttpRequestVersionMinorIsZero_SetsToFalseWhenSendingHeaders +19978 area-System.Net [Managed bug] HttpListenerResponse should align with Windows behaviour for KeepAlive Following tests are disabled with this issue: - KeepAlive_GetSet_ReturnsExpected - KeepAlive_SetDisposed_ThrowsObjectDisposedException +19979 area-System.Net [Managed Bug] HttpListener.GetContextAsync's IAsyncResult with invalid inputs should not hang forever Following tests are disabled with this issue: - EndGetContext_InvalidAsyncResult_ThrowsArgumentException +19980 area-System.Net [Managed bug] HttpListenerResponseStream.Write should validate the IAsyncResult Following tests are disabled with this issue: - EndWrite_InvalidAsyncResult_ThrowsArgumentException - EndWrite_CalledTwice_ThrowsInvalidOperationException +19981 area-System.Net [HttpListener] [Managed] HttpListenerResponseStream should validate how much or little we write Following tests are disabled with this issue: - Write_TooMuch_ThrowsProtocolViolationException - Write_TooLittleAsynchronouslyAndClose_ThrowsInvalidOperationException - Write_TooLittleSynchronouslyAndClose_ThrowsInvalidOperationException +19982 area-System.Net [Managed bug] HttpListenerContext.AcceptWebSocketAsync should send a handshake to the WebSocket Following tests are disabled with this issue: - AcceptWebSocketAsync_SocketSpoofingAsWebSocket_ThrowsWebSocketException +19983 area-System.Net [HttpListener] [Managed] Reading from a closed connection should throw HttpListenerException Following tests are disabled with this issue: - Read_FromClosedConnectionAsynchronously_ThrowsHttpListenerException - Read_FromClosedConnectionSynchronously_ThrowsHttpListenerException +19984 area-System.Net [Managed bug] HttpListenerRequest.Read with chunked input should align with Windows behaviour Following tests are disabled with this issue: - Read_LargeLengthAsynchronous_Success - Read_LargeLengthSynchronous_Success +19985 area-System.Net [Managed bug] HttpListenerRequest.EndRead should validate the IAsyncResult Following tests are disabled with this issue: - EndRead_InvalidAsyncResult_ThrowsArgumentException - EndRead_CalledTwice_ThrowsInvalidOperationException +19986 area-System.Net "[Managed bug] Adding the prefix ""http://192./"" should fail" Following tests are disabled with this change: - Add_InvalidPrefix_ThrowsHttpListenerException_Windows +19987 area-System.Runtime [Proposal] String.Format specifier for IEnumerable "I feel like I have to include lists in strings quite often, which end up something like: ``` $""Name not found. Allowed names are: {string.Join("", "", names)}."" ``` This has two problems: 1. It's verbose (even has nested quotes) 2. It allocates extra string for the result of Join (potentially large) I would like to propose a custom format specifier instead (name is up for consideration): ``` $""Name not found. Allowed names are: {names:J', '}."" ``` And for lists of formattables (saves N+1 allocations instead of 1): ``` $""Byte is incorrect. Allowed bytes are: {string.Join("", "", bytes.Select(b => b.ToString(""X2"")))}"" // could become $""Byte is incorrect. Allowed bytes are: {bytes:J', ':X2}."" ```" +19988 area-System.Diagnostics Fix Process.Start() on Unix platforms to not leak file descriptors of redirection pipes to child processes Fix #13447. Summary of the issue: ------------------------ When an application starts more than one child processes with their standard inputs redirected on Unix, closing the standard input stream of the first child process won't unblock the 'Console.ReadLine()' call in the first child process (it's expected to receive EOF). Root cause of the issue: -------------------------- The file descriptor for the write end of the first child process standard input redirection pipe gets inherited by the second child process, which makes the reference count of the pipe write end become 2. When closing the standard input stream of the first child process, the file descriptor held by the parent process is released, but the one inherited by the second child process is still referencing the pipe write end, which cause the 'Console.ReadLine()' continue to be blocked in the first child process. Fix: ---- Set the O_CLOEXEC flag when creating the redirection pipes. So that no child process would inherit the file descriptors referencing those pipes after the 'execve' call. /cc @stephentoub could you please review this PR? +19990 area-System.Net "System.Net.Sockets.Tests.SocketOptionNameTest.FailedConnect_GetSocketOption_SocketOptionNameError failed with ""Xunit.Sdk.EqualException""" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170519.01/workItem/System.Net.Sockets.Tests/wilogs ~~~ 2017-05-18 17:34:01,833: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.SocketOptionNameTest.FailedConnect_GetSocketOption_SocketOptionNameError(simpleGet: False) [FAIL] 2017-05-18 17:34:01,834: INFO: proc(54): run_and_log_output: Output: Assert.Equal() Failure 2017-05-18 17:34:01,834: INFO: proc(54): run_and_log_output: Output: Expected: 1 2017-05-18 17:34:01,834: INFO: proc(54): run_and_log_output: Output: Actual: 0 2017-05-18 17:34:01,837: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:34:01,929: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs(173,0): at System.Net.Sockets.Tests.SocketOptionNameTest.FailedConnect_GetSocketOption_SocketOptionNameError(Boolean simpleGet) 2017-05-18 17:34:11,952: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.SocketOptionNameTest.FailedConnect_GetSocketOption_SocketOptionNameError(simpleGet: True) [FAIL] 2017-05-18 17:34:11,952: INFO: proc(54): run_and_log_output: Output: Assert.Equal() Failure 2017-05-18 17:34:11,952: INFO: proc(54): run_and_log_output: Output: Expected: 1 2017-05-18 17:34:11,952: INFO: proc(54): run_and_log_output: Output: Actual: 0 2017-05-18 17:34:11,952: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:34:11,952: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs(173,0): at System.Net.Sockets.Tests.SocketOptionNameTest.FailedConnect_GetSocketOption_SocketOptionNameError(Boolean simpleGet) ~~~ +19991 area-System.Net System.Net.Sockets.Tests.LoggingTest.EventSource_EventsRaisedAsExpected failed Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170519.01/workItem/System.Net.Sockets.Tests/wilogs ~~~ 2017-05-18 17:34:52,014: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.LoggingTest.EventSource_EventsRaisedAsExpected [FAIL] 2017-05-18 17:34:52,014: INFO: proc(54): run_and_log_output: Output: Timed out after 60000ms waiting for remote process 15571 2017-05-18 17:34:52,014: INFO: proc(54): run_and_log_output: Output: Expected: True 2017-05-18 17:34:52,014: INFO: proc(54): run_and_log_output: Output: Actual: False 2017-05-18 17:34:52,014: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:34:52,014: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(208,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() ~~~ +19992 area-System.Net "Tests under ""System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo"" failed with ""System.TimeoutException""" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170519.01/workItem/System.Net.Sockets.Tests/wilogs ~~~ 2017-05-18 17:34:57,141: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV4IPEndPointToV4Host_Success [FAIL] 2017-05-18 17:34:57,141: INFO: proc(54): run_and_log_output: Output: System.TimeoutException : The operation has timed out. 2017-05-18 17:34:57,141: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:34:57,141: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1252,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 2017-05-18 17:35:02,218: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV4IPEndPointToDualHost_Success [FAIL] 2017-05-18 17:35:02,218: INFO: proc(54): run_and_log_output: Output: System.TimeoutException : The operation has timed out. 2017-05-18 17:35:02,219: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:35:02,219: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1252,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 2017-05-18 17:35:07,265: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV6IPEndPointToDualHost_Success [FAIL] 2017-05-18 17:35:07,265: INFO: proc(54): run_and_log_output: Output: System.TimeoutException : The operation has timed out. 2017-05-18 17:35:07,265: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:35:07,265: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1252,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 2017-05-18 17:35:12,650: INFO: proc(54): run_and_log_output: Output: System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV6IPEndPointToV6Host_Success [FAIL] 2017-05-18 17:35:12,650: INFO: proc(54): run_and_log_output: Output: System.TimeoutException : The operation has timed out. 2017-05-18 17:35:12,650: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-18 17:35:12,650: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/24/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1252,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) ~~~ +19994 area-System.Net Test failure: System.Net.Primitives.Unit.Tests.CookieContainerTest / GetCookies_RemovesExpired_Cookies ## Types of failures Build 20171125.02: ``` Assert.Equal() Failure Expected: 0 Actual: 1 at System.Net.Primitives.Unit.Tests.CookieContainerTest.d__45.MoveNext() in /root/corefx-1171195/src/System.Net.Primitives/tests/UnitTests/CookieContainerTest.cs:line 555 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ``` ## History of failures Day | Build | OS -- | -- | -- 6/5 | 20170605.02 | Ubuntu17.04 6/5 | 20170605.03 | Ubuntu17.04 6/14 | 20170614.04 | Ubuntu17.04 6/24 | 20170624.02 | Debian90 7/17 | 20170717.02 | Ubuntu17.04 11/16 | 20171116.51 | Ubuntu14.04 11/25 | 20171125.02 | Ubuntu16.04 # Original report Opened on behalf of @Jiayili1 The test `System.Net.Primitives.Unit.Tests.CookieContainerTest/GetCookies_RemovesExpired_Cookies` has failed. Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: at System.Net.Primitives.Unit.Tests.CookieContainerTest.d__44.MoveNext() in /root/corefx/src/System.Net.Primitives/tests/UnitTests/CookieContainerTest.cs:line 532 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : 2.0.0 - 20170519.02 (Portable Core Tests) Failing configurations: - Ubuntu.1704.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170519.02/workItem/System.Net.Primitives.UnitTests.Tests/analysis/xunit/System.Net.Primitives.Unit.Tests.CookieContainerTest~2FGetCookies_RemovesExpired_Cookies +19995 area-System.Runtime "Desktop: System.Tests.Environment_Exit.ExitCode_VoidMainAppReturnsSetValue failed with ""Xunit.Sdk.EqualException""" Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/netfx_windows_nt_debug_prtest/453/System.Tests/Environment_Exit/ExitCode_VoidMainAppReturnsSetValue_mode__1_/ MESSAGE: ~~~ Assert.Equal() Failure Expected: 123 Actual: 3 ~~~ STACK TRACE: ~~~ at System.Tests.Environment_Exit.ExitCode_VoidMainAppReturnsSetValue(Int32 mode) in D:\j\workspace\netfx_windows---8c0e8fba\src\System.Runtime.Extensions\tests\System\Environment.Exit.cs:line 76 ~~~ +19996 area-System.Security "KeyInfoX509DataTest.Complex failed with ""Invalid handle"" on macOS in CI" https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/3761/consoleText ``` System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.Complex [FAIL] System.ArgumentException : Invalid handle. Parameter name: handle Stack Trace: Discovering: System.Xml.XmlDocument.Tests /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/CertificatePal.cs(52,0): at Internal.Cryptography.Pal.CertificatePal.FromHandle(IntPtr handle, Boolean throwOnFail) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Certificate.cs(160,0): at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(X509Certificate cert) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoX509Data.cs(117,0): at System.Security.Cryptography.Xml.KeyInfoX509Data.AddCertificate(X509Certificate certificate) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Security.Cryptography.Xml/tests/KeyInfoX509DataTest.cs(224,0): at System.Security.Cryptography.Xml.Tests.KeyInfoX509DataTest.Complex() ``` cc: @krwq, @bartonjs +19997 area-System.Diagnostics Fix Process.Start() on Unix platforms to not leak file descriptors of child pipes Same as https://github.com/dotnet/corefx/pull/19988, but against master instead of release/2.0.0, and with feedback nits addressed. cc: @daxian-dbw +19998 area-System.Runtime Clean up if netcoreapp usage in System.Runtime.Tests. "First, this define should also be on for uapaot builds. Second, it's mostly used now to guard access to the ""Enum's with funny backing type"" statics (s_boolEnumType and friends.) These should be replaced with something that gates on PlatformDetection.IsReflectionEmitSupported. " +20000 area-System.Xml XPathNavigator.InnerXml throws when replacement should be a text node "When the `XPathNavigator.InnerXml` is called with a string that consists only of text (not surrounded by XML tags), it throws an `XmlException`: `Data at the root level is invalid. Line 1, position 1.`. This does not happen on .NET Framework 4.7 (I'm on Creators Update, 15063.296). This is a fairly straightforward repro: ```C# XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(@"" Book ""); XPathNavigator nav = xmlDoc.CreateNavigator(); XPathExpression expr = nav.Compile(""/Product/Name""); XPathNodeIterator iter = nav.Select(expr); iter.MoveNext(); Console.WriteLine(iter.Current.InnerXml); iter.Current.InnerXml = ""Car""; ``` Changing the assignment to ```C# iter.Current.InnerXml = """"; ``` appears to work fine. [ConsoleApp1.zip](https://github.com/dotnet/corefx/files/1014643/ConsoleApp1.zip) is a standalone repro project. Repro steps: ``` S:\work\innerxml_assignment\ConsoleApp1\ConsoleApp1>dotnet restore Restoring packages for S:\work\innerxml_assignment\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj... ... S:\work\innerxml_assignment\ConsoleApp1\ConsoleApp1>dotnet run -f net46 Book Car S:\work\innerxml_assignment\ConsoleApp1\ConsoleApp1>dotnet run -f netcoreapp1.0 Book Unhandled Exception: System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1. at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.XPath.XPathNavigator.BuildSubtree(XmlReader reader, XmlWriter writer) at System.Xml.XPath.XPathNavigator.AppendChild(XmlReader newChild) at ConsoleApp1.Program.Main(String[] args) ``` I see the same issue when targeting `netcoreapp1.0` and `netcoreapp1.1`, but, confusingly, not `netcoreapp2.0`. Versions of the `System.Xml.*` package references are 4.3.0 across all TFMs (and I see the same behavior with 4.0.1).
dotnet --info ``` S:\work\innerxml_assignment\ConsoleApp1\ConsoleApp1>dotnet --info .NET Command Line Tools (2.0.0-preview1-005977) Product Information: Version: 2.0.0-preview1-005977 Commit SHA-1 hash: 414cab8a0b Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.0-preview1-005977\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ```
I ran into this while investigating https://github.com/Microsoft/msbuild/issues/2105." +20001 area-System.Diagnostics release/2.0: Fix Process.Start() on Unix platforms to not leak file descriptors of child pipes Port https://github.com/dotnet/corefx/pull/19997 to release/2.0 branch Closes https://github.com/dotnet/corefx/issues/13447 +20002 area-System.Net HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.SetDelegate_ConnectionSucceeds failed with System.Net.Http.CurlException : SSL connect error https://ci.dot.net/job/dotnet_corefx/job/release_2.0.0/job/osx10.12_debug_prtest/84/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds_acceptedProtocol__Tls__requestOnlyThisProtocol__False_/ ``` System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.SetDelegate_ConnectionSucceeds(acceptedProtocol: Tls, requestOnlyThisProtocol: False) (from (empty)) Failing for the past 1 build (Since Aborted#84 ) Took 30 sec. Stacktrace MESSAGE: System.Net.Http.HttpRequestException : An error occurred while sending the request.\n---- System.Net.Http.CurlException : SSL connect error +++++++++++++++++++ STACK TRACE: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass1_0.<b__0>d.MoveNext() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 46 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 57 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__1.MoveNext() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 44 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 644 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 863 ``` +20003 area-System.Net System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.SetDelegate_ConnectionSucceeds failed with Cannot acquire the global certificate mutex. https://ci.dot.net/job/dotnet_corefx/job/release_2.0.0/job/osx10.12_debug_prtest/84/testReport/junit/System.Net.Http.Functional.Tests/HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds_acceptedProtocol__Tls__Tls11__Tls12__requestOnlyThisProtocol__False_/ ``` System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.SetDelegate_ConnectionSucceeds(acceptedProtocol: Tls, requestOnlyThisProtocol: True) (from (empty)) Failing for the past 1 build (Since Aborted#84 ) Took 30 sec. Stacktrace MESSAGE: Cannot acquire the global certificate mutex.\nExpected: True\nActual: False +++++++++++++++++++ STACK TRACE: at System.Net.Test.Common.Configuration.Certificates.GetCertificateCollection(String certificateFileName) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/Common/tests/System/Net/Configuration.Certificates.cs:line 48 at System.Net.Test.Common.Configuration.Certificates.GetServerCertificateCollection() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/Common/tests/System/Net/Configuration.Certificates.cs:line 34 at System.Net.Test.Common.Configuration.Certificates.GetServerCertificate() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/Common/tests/System/Net/Configuration.Certificates.cs:line 24 at System.Net.Test.Common.LoopbackServer.d__9.MoveNext() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 107 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass1_0.<b__0>d.MoveNext() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 46 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 57 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__1.MoveNext() in /Users/dotnet-bot/j/workspace/dotnet_corefx/release_2.0.0/osx10.12_debug_prtest/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 44 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +20004 area-System.Data Porting Sqlconnection.GetSchema (PR #19937) * Adding SqlConnection.GetSchema() support Port of PR #19937 Fixes https://github.com/dotnet/corefx/issues/19797 +20005 area-System.Security Fix RevocationMode and RevocationFlag errors on macOS "For certificates which have CRL, but not OCSP, the CRL doesn't seem to be checked, then Apple is silent about the matter. By setting kSecRevocationRequirePositiveResponse we get notified ""RevocationResponseRequired"". That flag should be mapped to X509ChainStatusFlags.RevocationStatusUnknown. When doing NoCheck, the OS was opportunistically checking revocation, possibly from a cache. So make sure that doesn't show up. Also, filter down the results based on the RevocationFlag value." +20006 area-System.Reflection Fix potential release of invalid GCHandle in PinnedObject.Release If process shutdown happens to stop PinnedObject.Release processing within the GCHandle.Free call, then shutdown finalization of the same object will generate an InvalidOperationException. The same may occur if the constructor is preempted by shutdown. Fixes https://github.com/dotnet/corefx/issues/19857 Port to Desktop FX tracked by VSO bug 437163. Rebased to release/2.0.0 from https://github.com/dotnet/corefx/pull/19858. +20007 area-System.Net UWP: System.Net.Primitives +20008 area-System.Runtime Question: What is the purpose of public method ValueTuple.Equals(ValueTuple other) ? Hi there, While looking into [ValueTuple.cs](https://github.com/dotnet/corefx/blob/master/src/System.ValueTuple/src/System/ValueTuple/ValueTuple.cs) class, I observed that there is one public method: ``` public bool Equals(ValueTuple other) { return true; } ``` This method always return ``true```. Just wanted to check what is the purpose of this method and why it is simply returning ``true`` ? +20009 area-System.Net Networking UWP work Tracking all issues related to System.Net.* UWP work. +20010 area-System.Net UWP: System.Net.Http Tracking work for UWP System.Net.Http, related to Epic #20009 +20011 area-System.Net Investigate WinHttpException: buffer too small Add instrumentation for now to catch unexpected errors and fail fast and produce a crash dump. Contributes to #7812 +20014 area-System.Net UWP: System.Net.NetworkInformation +20015 area-Infrastructure Simple name conflict resolution is not working for NETStandard.Library.NETFramework "Originally reported here: https://github.com/dotnet/standard/issues/355 Conflict resolution does not try to resolve conflicts between simple name references because it does not attempt to duplicate assembly search path probing done by RAR. The SDK does removal of simple name references that overlap with nuget packages. This is ""good enough"" in most cases. The problem is that the NETStandard.Library.NETFramework package does not populate its references in a way that plugs into the SDK's logic. Instead we provide the references from targets. The reason for this is we need to hide these references from NuGet for the packages.config case: we don't want a packages.config project getting 100s of references added to its csproj. Taking the SDK out of the picture, we have the exact same simple-name conflict problem for packages.config. To fix this I propose the following: 1. We add a target to the NETStandard.Library.NETFramework project that removes simple name references that overlap with references added by our package, similar to https://github.com/dotnet/sdk/blob/1d81050cab00c6f9ab8bf5b984bc42eff2760c1e/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.PackageDependencyResolution.targets#L375. 2. In a packages.config project we make sure this runs before RAR. The only source of references is the users project file. 3. In a PackageReference project we make sure this runs after `ResolveLockFileReferences`. References may have come from user's project or nuget packages. 4. In a project.json project we make sure this runs after `ResolveNuGetPackageAssets`. References may have come from user's project or nuget packages. We can examine target sequencing to see if there is any way to accomplish 2-4 with a single target sequencing. /cc @weshaggard @dsplaisted @natemcmaster " +20017 area-System.Net Disable System.Net.Http tests on UAP/UAPAOT Disable a bunch of System.Net.Http tests on UAP/UAPAOT platform. Both inner and outer loop tests now run clean for System.Net.Http Contributes to #20010 +20019 area-System.IO Redistribute 4.0.1 clrcompression for netcore50 We're running into issues in UWP apps where people are getting the 4.3.0 version of clrcompression that imports from kernel32.dll while in Debug. This is an issue on Onecore platforms where kernel32.dll is unavailable, so we should repackage the 4.0.1 AOT binaries that import from the api sets instead. This way, customers will be using the same dll for Debug as they are for Release when running under netcore50 for x86, x64, and arm. Packages produced after this change will have this structure: - runtime.win7-x64.*compression.4.3.0: - runtimes/win7-x64/native/clrcompression.dll - new build, non-appx, CFG enabled, kernel32 - runtimes/win7-x64/nativeassets/netcore50/clrcompression.dll - 4.0.1, appx, no CFG flag, API sets - runtime.win7-x86.*compression.4.3.0: - runtimes/win7-x86/native/clrcompression.dll - new build, non-appx, CFG enabled, kernel32 - runtimes/win7-x86/nativeassets/netcore50/clrcompression.dll - 4.0.1, appx, no CFG flag, API sets - runtime.win8-arm.*compression.4.3.0: - runtimes/win8-arm/native/clrcompression.dll - new build, non-appx, CFG enabled, kernel32 - runtimes/win8-arm/nativeassets/netcore50/clrcompression.dll - 4.0.1, appx, no CFG flag, API sets while the AOT packages are unchanged: - runtime.win10-x64-aot.*compression: - runtimes\win10-x64-aot\lib\netcore50\clrcompression.dll - 4.0.1, appx, no CFG flag, API sets - runtime.win10-x86-aot.*compression: - runtimes\win10-x86-aot\lib\netcore50\clrcompression.dll - 4.0.1, appx, no CFG flag, API sets - runtime.win10-arm-aot.*compression: - runtimes\win10-arm-aot\lib\netcore50\clrcompression.dll - 4.0.1, appx, no CFG flag, API sets cc: @MattWhilden @gkhanna79 @ericstj @weshaggard +20020 area-System.IO Behavior difference between CoreFX and desktop WRT IO and symlinks CoreFX handles symlink loops differently that desktop dotnet. On desktop, it throws UnauthorizedAccessException if you try to do any IO (such as File.Open) on such scenario. I'm not 100% CoreFX handle the windows case correctly, but I'm positive it doesn't in unix case as that scenario gets you an ELOOP and GetExceptionForIoErrno doesn't handle it. +20021 area-Infrastructure Move reference expansion to a target and handle simple name conflicts We cannot let simple name references that overlap with our assemblies reach RAR because RAR will choose the files in the targeting pack over the ones we add to the reference item, due to the default AssemblySearchPaths. We could change AssemblySearchPaths to consider all the NuGetPackage paths before `{TargetFrameworkDirectory}` but that has broader implications for compatibility and performance of RAR. I chose to follow a similar pattern to what the SDK does already and took the opportunity to move the reference item setting into the target as well, to more closely match what the SDK is doing. Fixes #20015 +20022 area-System.Data Add additional DataTable functionality to SqlClient to match Framework implementation Also added additional parameter tests. +20024 area-System.Net Test failure: System.Net.Http.Functional.Tests.ResponseStreamTest / ReadAsStreamAsync_ValidServerResponse_Success ## Type of failures ### The server returned an invalid or unrecognized response Failure [20171216.02](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)): ``` System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response at System.Net.Http.HttpClient.d__59.MoveNext() in E:\A\_work\988\s\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 489 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__9.MoveNext() in E:\A\_work\988\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 247 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__8.MoveNext() in E:\A\_work\988\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 240 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ----- Inner Stack Trace ----- at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() in E:\A\_work\988\s\corefx\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs:line 62 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in E:\A\_work\988\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 858 ``` ### The operation has been canceled Failure [20171114.01](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171114.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)): ``` System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The operation has been canceled at System.Net.Http.HttpClient.d__59.MoveNext() in E:\A\_work\1272\s\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 489 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__9.MoveNext() in E:\A\_work\1272\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 247 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__8.MoveNext() in E:\A\_work\1272\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 240 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ----- Inner Stack Trace ----- at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() in E:\A\_work\1272\s\corefx\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs:line 62 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in E:\A\_work\1272\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 858 ``` ### The handle is invalid Failure [20171109.04](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171109.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20Chunked,%20transferError:%20None)): ``` System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The handle is invalid at System.Net.Http.HttpClient.d__59.MoveNext() in E:\A\_work\1037\s\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 489 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__9.MoveNext() in E:\A\_work\1037\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 247 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__8.MoveNext() in E:\A\_work\1037\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 240 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ----- Inner Stack Trace ----- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() in E:\A\_work\1037\s\corefx\src\Common\src\System\Net\Http\WinHttpException.cs:line 44 at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) in E:\A\_work\1037\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 1082 at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) in E:\A\_work\1037\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 956 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in E:\A\_work\1037\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 833 ``` ### IOException: The handle is in the wrong state for the requested operation Failure [20171104.03](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171104.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20None,%20transferError:%20None)): ``` System.IO.IOException : The read operation failed, see inner exception. ---- System.Net.Http.WinHttpException : The handle is in the wrong state for the requested operation at System.Net.Http.WinHttpResponseStream.d__22.MoveNext() in E:\A\_work\1388\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpResponseStream.cs:line 225 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__9.MoveNext() in E:\A\_work\1388\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 253 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.ResponseStreamTest.d__8.MoveNext() in E:\A\_work\1388\s\corefx\src\System.Net.Http\tests\FunctionalTests\ResponseStreamTest.cs:line 238 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ----- Inner Stack Trace ----- ``` ## History of failures Day | Build | OS | Error message -- | -- | -- | -- 5/4 | 20170504.02 | Win10 | The server returned an invalid or unrecognized response 5/6 | 20170506.02 | Win10 | The server returned an invalid or unrecognized response 5/9 | 20170509.02 | Win10 | The server returned an invalid or unrecognized response 5/11 | 20170511.02 | Win10 | The server returned an invalid or unrecognized response 5/13 | 20170513.01 | Win10 | The server returned an invalid or unrecognized response 5/13 | 20170513.02 | Win10 | The server returned an invalid or unrecognized response 5/21 | 20170521.01 | Win10 | The server returned an invalid or unrecognized response 5/28 | 20170528.01 | Win10 | The server returned an invalid or unrecognized response 6/14 | 20170614.03 | Win10 | The server returned an invalid or unrecognized response 6/22 | 20170622.02 | Win10 | The server returned an invalid or unrecognized response 7/11 | 20170711.03 | Win10 | The server returned an invalid or unrecognized response 7/25 | 20170725.01 | Win10 | The server returned an invalid or unrecognized response 9/26 | 20170926.05 | Win10 | The server returned an invalid or unrecognized response 9/26 | 20170926.05 | Win10 | The server returned an invalid or unrecognized response 9/26 | 20170926.06 | Win7 | The handle is invalid 9/27 | 20170927.02 | Win10 | The server returned an invalid or unrecognized response 10/1 | 20171001.01 | Win10 | The server returned an invalid or unrecognized response 10/3 | 20171003.02 | Win10 | The server returned an invalid or unrecognized response 10/9 | 20171009.03 | Win10 | The server returned an invalid or unrecognized response 10/13 | 20171013.01 | Win10 | The server returned an invalid or unrecognized response 10/14 | 20171014.01 | Win10 | The server returned an invalid or unrecognized response 10/16 | 20171016.02 | Win10 | The server returned an invalid or unrecognized response 10/17 | 20171017.01 | Win10 | The server returned an invalid or unrecognized response 10/18 | 20171018.02 | Win10 | The server returned an invalid or unrecognized response 10/19 | 20171019.01 | Win10 | The server returned an invalid or unrecognized response 10/20 | 20171020.02 | Win10 | The server returned an invalid or unrecognized response 10/23 | 20171023.02 | Win7 | The handle is invalid 10/26 | 20171026.01 | Win10 | The server returned an invalid or unrecognized response 10/28 | 20171028.01 | Win10 | The server returned an invalid or unrecognized response 10/30 | 20171030.02 | Win10 | The server returned an invalid or unrecognized response 11/2 | 20171102.05 | Win10 | The server returned an invalid or unrecognized response 11/3 | 20171103.10 | Win10 | The server returned an invalid or unrecognized response 11/4 | 20171104.03 | Win7 | IOException: The handle is in the wrong state for the requested operation 11/7 | 20171107.04 | Win10 | The server returned an invalid or unrecognized response 11/8 | 20171108.01 | Win10 | The server returned an invalid or unrecognized response 11/9 | 20171109.04 | Win7 | The handle is invalid 11/9 | 20171109.05 | Win7 | The operation has been canceled 11/11 | 20171111.01 | Win10 | The server returned an invalid or unrecognized response 11/11 | 20171111.01 | Win10 | The server returned an invalid or unrecognized response 11/14 | 20171114.01 | Win7 | The operation has been canceled 11/15 | 20171115.02 | Win10 | The server returned an invalid or unrecognized response 11/15 | 20171115.03 | Win10 | The server returned an invalid or unrecognized response 11/21 | 20171121.01 | Win10 | The server returned an invalid or unrecognized response 11/21 | 20171121.01 | Win10 | The server returned an invalid or unrecognized response 11/23 | 20171123.01 | Win10 | The server returned an invalid or unrecognized response 11/25 | 20171125.02 | Win10 | The server returned an invalid or unrecognized response 11/28 | 20171128.05 | Win10 | The server returned an invalid or unrecognized response 12/2 | 20171202.02 | Win10 | The server returned an invalid or unrecognized response 12/11 | 20171211.05 | Win10 | The server returned an invalid or unrecognized response 12/11 | 20171211.03 | Win10 | The server returned an invalid or unrecognized response 12/12 | 20171212.01 | Win10 | The server returned an invalid or unrecognized response 12/16 | 20171216.02 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 12/16 | 20171216.03 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 12/28 | 20171228.02 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171228.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/3 | 20180103.03 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180103.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/7 | 20180107.02 | Win8.1 | The operation has been canceled - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180107.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20Chunked,%20transferError:%20None)) 1/10 | 20180110.03 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180110.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/11 | 20180111.02 | Win10 | 2x - The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180111.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/16 | 20180117.01 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180117.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/21 | 20180122.01 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180122.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/22 | 20180122.02 | Win7 | The handle is invalid - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180122.02/workItem/System.Net.Http.Functional.Tests/wilogs) 1/27 | 20180127.04 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180127.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 1/30 | 20180130.05 | Win8.1 | The operation has been canceled - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180130.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 2/1 | 20180201.05 | Win8.1 | The operation has been canceled - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180201.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 2/1 | 20180201.05 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180201.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 2/3 | 20180203.01 | Win10 | The server returned an invalid or unrecognized response - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180203.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ResponseStreamTest~2FReadAsStreamAsync_ValidServerResponse_Success(transferType:%20ContentLength,%20transferError:%20None)) 3/2 | 20180302.06 | Win7 | The handle is invalid 3/4 | 20180304.01 | Win7 | The handle is invalid 3/7 | 20180307.04 | Win7 | The handle is invalid +20026 area-System.Security release/2.0: Fix RevocationMode and RevocationFlag errors on macOS "For certificates which have CRL, but not OCSP, the CRL doesn't seem to be checked, then Apple is silent about the matter. By setting kSecRevocationRequirePositiveResponse we get notified ""RevocationResponseRequired"". That flag should be mapped to X509ChainStatusFlags.RevocationStatusUnknown. When doing NoCheck, the OS was opportunistically checking revocation, possibly from a cache. So make sure that doesn't show up. Also, filter down the results based on the RevocationFlag value. Ports #20005 to rel/2.0.0." +20028 area-System.Net Increasing mutex time, ensuring the mutex is released Also fixing parallel test execution script. Fixes #19430 +20030 area-Serialization Enabled XmlSerializer..ctor(Type, Type[]) on UWP Previously, `XmlSerializer..ctor(Type type, Type[] extraTypes)` was redirected to call `XmlSerializer..ctor(Type type)` on UWP as we only need to use the `type` as the key to retrieve the generated serializer. The reflection based serialization requires the value of `extraTypes` to do the work. Fix #19829 +20032 area-System.Data Force integrated auth to false in some SQL username and password error checking tests, since int auth overrides username and password. +20033 area-System.Net UWP: System.Net.Security Tracking work for System.Net.Security for UWP. +20034 area-System.IO Directory Delete tests failing on Unix https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170520.01/workItem/System.IO.FileSystem.Tests @JeremyKuhne perhaps related to 801dde95 / https://github.com/dotnet/corefx/pull/19959 ``` Assert.Throws() Failure\nExpected: typeof(System.IO.IOException)\nActual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '/'. Stack Trace : at System.IO.UnixFileSystem.RemoveDirectory(String fullPath, Boolean recursive) in /root/corefx/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs:line 317 at System.IO.Directory.Delete(String path, Boolean recursive) in /root/corefx/src/System.IO.FileSystem/src/System/IO/Directory.cs:line 589 at System.IO.Tests.Directory_Delete_str_bool.Delete(String path) in /root/corefx/src/System.IO.FileSystem/tests/Directory/Delete.cs:line 216 at System.IO.Tests.Directory_Delete_str.b__6_0() in /root/corefx/src/System.IO.FileSystem/tests/Directory/Delete.cs:line 67 ``` ``` Assert.Throws() Failure\nExpected: typeof(System.IO.IOException)\nActual: typeof(System.IO.DirectoryNotFoundException): Could not find a part of the path '/'. Stack Trace : at System.IO.UnixFileSystem.RemoveDirectory(String fullPath, Boolean recursive) in /Users/buildagent/agent/_work/24/s/corefx/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs:line 315 ``` +20035 area-Meta Prep tests for CoreCLR/CoreRT [Serializable] cleanup Fixes tests that depend on types in System.Private.CoreLib being serializable that won't be [Serializable] soon in CoreCLR/CoreRT. Part of https://github.com/dotnet/corefx/issues/19119 +20036 area-System.Net InvalidCertificateServers_CertificateValidationDisabled_Succeeds failed with WinHttpException : A security error occurred Perhaps a dupe, but I can't find it (there are many Http test failure variations right now) https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170520.01 ``` Unhandled Exception of Type System.Net.Http.HttpRequestException Message : System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : A security error occurred Stack Trace : at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) --- End of stack trace from AddCurrentStack --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` +20039 area-Meta Master #1477 +20040 area-System.IO Port 2.0: Fix Unix missing file state We need to port #19959 cc @JeremyKuhne @stephentoub +20041 area-Meta Port 2.0: Prep tests for CoreCLR/CoreRT [Serializable] cleanup We need to port PR #20035 cc @morganbr @stephentoub +20043 area-System.Net HttpWebRequest.ReadWriteTimeout property returns NotImplemented Looks like HttpWebRequest.ReadWriteTimeout throws a NotImplemented exception. Also HttpWebRequest.ConnectionGroupName Expected: Either work with expected behavior, or remove from NET Core altogether as this will result in an unexpected runtime error. +20046 area-System.Net Behavior difference in System.Uri.IsAbsoluteUri on some platforms when UriKind = UriKind.RelativeOrAbsolute The following code snippet fails on Ubuntu14.04, OSX, PortableLinux, and CentOS, while it passes on Windows and Ubuntu16.04. ```c# string path = Path.Combine(Path.GetTempPath()); Uri uri = new Uri(path, UriKind.RelativeOrAbsolute); Assert.True(uri.IsAbsoluteUri); ``` This was discovered in https://github.com/dotnet/corefx/pull/19735 when investigating a XmlSchema validation test failure. [In case it helps: XmlSchemaSet creates such Uri in [here](https://source.dot.net/#System.Private.Xml/System/Xml/Schema/XmlSchemaSet.cs,368) and later tries to resolve a file in that uri location in [XmlResolver](https://source.dot.net/#System.Private.Xml/System/Xml/XmlResolver.cs,36)] +20047 area-System.Security Fix use-after-free handle problems in X509Certificates on macOS The first commit fixes https://github.com/dotnet/corefx/issues/19996. The raw IntPtr handle is read from the certificate object, after which the certificate object isn't referenced anymore by the implementation; if the caller also no longer referenced the certificate, it's possible that it can be collected and its SafeHandle finalized before the copy ctor finishes reading state from the handle, leading to handle recycling and use-after-free errors. The second commit is then the result of me proactively searching the rest of the codebase for .Handle usage, and fixing any that (based just on examining the function itself and not on all possible call stacks) could potentially suffer a similar problem. cc: @ianhays, @bartonjs, @steveharter +20048 area-System.Net Fix HttpListenerFactory Dispose after failure If the ctor encounters a failure, _processPrefixListener may remain null; then when the factory is Dispose'd, it null refs. This is taking out a bunch of runs, including almost all macOS runs. cc: @hughbe, @Priya91 +20049 area-System.IO Fix handling of root on Unix in directory error handling "We shouldn't be trimming away the '/' at the end of a path when the entire path is ""/"". The fix just moves the existing TrimEndingDirectorySeparator function to be Windows-specific, and adds a Unix-specific variant that only trims from paths greater than 1 char (if the path has a single char and it's '/', we don't want to trim it away, and if it's anything else, there's nothing to trim). Fixes https://github.com/dotnet/corefx/issues/20034 cc: @danmosemsft, @JeremyKuhne " +20050 area-System.Net "Several HttpListener tests with ""+"" host failing on Unix" "e.g. ``` System.Net.Tests.HttpListenerPrefixCollectionTests.Add_SamePortDifferentPathDifferentListenerStarted_Works(host: \""+\"") [FAIL] System.Exception : Could not reserve a port for HttpListener ---- System.Net.HttpListenerException : The request is not supported. Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/tests/HttpListenerFactory.cs(101,0): at System.Net.Tests.HttpListenerFactory.get_ListeningUrl() /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/tests/HttpListenerPrefixCollectionTests.cs(299,0): at System.Net.Tests.HttpListenerPrefixCollectionTests.Add_SamePortDifferentPathDifferentListenerStarted_Works(String host) ----- Inner Stack Trace ----- /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/src/System/Net/Managed/HttpEndPointManager.cs(128,0): at System.Net.HttpEndPointManager.GetEPListener(String host, Int32 port, HttpListener listener, Boolean secure) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/src/System/Net/Managed/HttpEndPointManager.cs(105,0): at System.Net.HttpEndPointManager.AddPrefixInternal(String p, HttpListener listener) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/src/System/Net/Managed/HttpEndPointManager.cs(65,0): at System.Net.HttpEndPointManager.AddListener(HttpListener listener) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs(53,0): at System.Net.HttpListener.Start() /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug_prtest/src/System.Net.HttpListener/tests/HttpListenerFactory.cs(40,0): at System.Net.Tests.HttpListenerFactory..ctor(String hostname, String path) ```" +20051 area-System.Net "Disable failing HttpListener tests with ""+"" host" #20050 cc: @Priya91, @hughbe +20052 area-System.Drawing Issue #18017 Operators * / for Size and SizeF Fixes #18017 . @onovotny @karelz @terrajobst @mellinoe Kindly review. +20053 area-System.Security TripleDESCryptoServiceProvider.Key - specified Key is not valid size "Running the following code: ```cs [TestMethod] public void TripleDesKeyTest() { byte[] key = new byte[16] { 3, 3, 3, 5, 222, 13, 155, 55, 122, 123, 165, 187, 188, 1, 11, 133 }; byte[] data = Encoding.UTF8.GetBytes(""superSeekritSauerkraut""); var des = new TripleDESCryptoServiceProvider(); des.Mode = CipherMode.ECB; des.Key = key; var Transform = des.CreateEncryptor(); byte[] encryptedResult = Transform.TransformFinalBlock(data, 0, data.Length); Assert.IsNotNull(encryptedResult); Assert.IsTrue(encryptedResult.Length > 0); } ``` Works against full framework, but when running against .NET Core I get: ``` System.Security.Cryptography.CryptographicException occurred HResult=0x80131501 Message=Specified key is not a valid size for this algorithm. Source= StackTrace: at System.Security.Cryptography.SymmetricAlgorithm.set_Key(Byte[] value) at System.Security.Cryptography.TripleDES.set_Key(Byte[] value) at System.Security.Cryptography.TripleDESCryptoServiceProvider.set_Key(Byte[] value) at Westwind.Utilities.Test.EncryptionTests.TripleDesKeyTest() in C:\projects2010\Westwind.Utilities.Core\Westwind.Utilities.Test\EncryptionTests.cs:line 20 ``` After digging around a bit it seems the key should be 16 or 24 bytes, but even if the key is that size it doesn't work. Expected: Same behavior as full framework which accepts a key of any byte size. **Updated** So it looks like a 24 byte key works. Either way this doesn't seem right. If using CipherMode.ECB shouldn't the key be adjusted to fit? Here's the test output: ``` PS C:\projects2010\Westwind.Utilities.Core\Westwind.Utilities.Test> dotnet test --filter Westwind.Utilities.Test.EncryptionTests.TripleDesKeyTest Build started, please wait... Build completed. Test run for C:\projects2010\Westwind.Utilities.Core\Westwind.Utilities.Test\bin\Debug\netcoreapp2.0\Westwind.Utilities.Test.dll(.NETCoreApp,Version=v2.0) Microsoft (R) Test Execution Command Line Tool Version 15.3.0-preview-20170502-03 Copyright (c) Microsoft Corporation. All rights reserved. Starting test execution, please wait... Failed Westwind.Utilities.Test.EncryptionTests.TripleDesKeyTest Error Message: Test method Westwind.Utilities.Test.EncryptionTests.TripleDesKeyTest threw exception: System.Security.Cryptography.CryptographicException: Specified key is not a valid size for this algorithm. Stack Trace: at System.Security.Cryptography.SymmetricAlgorithm.set_Key(Byte[] value) at System.Security.Cryptography.TripleDES.set_Key(Byte[] value) at System.Security.Cryptography.TripleDESCryptoServiceProvider.set_Key(Byte[] value) at Westwind.Utilities.Test.EncryptionTests.TripleDesKeyTest() in C:\projects2010\Westwind.Utilities.Core\Westwind.Utilities.Test\EncryptionTests.cs:line 24 Total tests: 1. Passed: 0. Failed: 1. Skipped: 0. Test Run Failed. Test execution time: 0.9436 Seconds Test run for C:\projects2010\Westwind.Utilities.Core\Westwind.Utilities.Test\bin\Debug\net452\Westwind.Utilities.Test.dll(.NETFramework,Version=v4.5.2) Microsoft (R) Test Execution Command Line Tool Version 15.3.0-preview-20170502-03 Copyright (c) Microsoft Corporation. All rights reserved. Starting test execution, please wait... Total tests: 1. Passed: 1. Failed: 0. Skipped: 0. Test Run Successful. Test execution time: 0.8669 Seconds ``` " +20055 area-System.Security Invalid key size exception could helpfully list valid key sizes "I've seen at least a couple [reports ](https://github.com/dotnet/corefx/issues/20053 )where developers were not sure what key size they should use when they get an exception with the message ""Specified key is not a valid size for this algorithm."". In at least some cases, we ought to be able to tell them what key sizes we accept, so they don't have to go to documentation. Especially since it can be[ OS specific](https://github.com/dotnet/corefx/pull/18169#issuecomment-293105179). ``` C:\git\corefx\src\Common\src\System\Security\Cryptography\DSASecurityTransforms.cs: 139: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\Common\src\System\Security\Cryptography\ECDsaOpenSsl.cs: 202: throw new InvalidOperationException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\Internal\Cryptography\AesImplementation.cs: 60: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\Internal\Cryptography\AesImplementation.Unix.cs: 66: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\Internal\Cryptography\DesImplementation.cs: 64: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\Internal\Cryptography\RC2Implementation.cs: 72: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\Internal\Cryptography\TripleDesImplementation.cs: 69: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\System\Security\Cryptography\DES.cs: 50: throw new ArgumentException(SR.Cryptography_InvalidKeySize); 65: throw new CryptographicException(SR.Cryptography_InvalidKeySize); 83: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\System\Security\Cryptography\ECDsaCng.Key.cs: 56: throw new ArgumentException(SR.Cryptography_InvalidKeySize); 122: throw new ArgumentException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\System\Security\Cryptography\RC2.cs: 69: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Algorithms\src\System\Security\Cryptography\TripleDES.cs: 52: throw new ArgumentException(SR.Cryptography_InvalidKeySize); 64: throw new CryptographicException(SR.Cryptography_InvalidKeySize); // Desktop compat: Strange exception for a null value, but this is what we threw in classic CLR. 67: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Cng\src\Internal\Cryptography\CngSymmetricAlgorithmCore.cs: 142: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Cng\src\System\Security\Cryptography\ECDsaCng.Key.cs: 71: throw new ArgumentException(SR.Cryptography_InvalidKeySize); 111: throw new ArgumentException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\DESCryptoServiceProvider.Windows.cs: 76: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\DSACryptoServiceProvider.Unix.cs: 120: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\PasswordDeriveBytes.Windows.cs: 19: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\RC2CryptoServiceProvider.Unix.cs: 79: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Csp\src\System\Security\Cryptography\RC2CryptoServiceProvider.Windows.cs: 88: throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); C:\git\corefx\src\System.Security.Cryptography.Primitives\src\System\Security\Cryptography\AsymmetricAlgorithm.cs: 34: throw new CryptographicException(SR.Cryptography_InvalidKeySize); C:\git\corefx\src\System.Security.Cryptography.Primitives\src\System\Security\Cryptography\SymmetricAlgorithm.cs: 97: throw new CryptographicException(SR.Cryptography_InvalidKeySize); 115: throw new CryptographicException(SR.Cryptography_InvalidKeySize); ```" +20058 area-System.Net Fix '+' host name handling in HttpListener on Unix Fixes https://github.com/dotnet/corefx/issues/20050 cc: @Priya91, @hughbe +20059 area-System.Net Validate IAsyncResult passed to managed HttpListener.EndGetContext Lack of doing so results in hangs if the IAsyncResult is from a different HttpListener. Fixes https://github.com/dotnet/corefx/issues/19979 cc: @Priya91, @hughbe +20060 area-System.Net [HttpListener] Port HttpListener managed fixes to 2.0 en mass We have a bunch of fixes coming in to the managed HttpListener. We should roll-up and review all changes made since forking for 2.0, and port them over en masse rather than reviewing each piece meal. +20061 area-System.Net Validate IAsyncResult used with managed HttpListener BeginRead/Write Fixes #19985 Fixes #19980 cc: @Priya91, @hughbe +20062 area-System.Net Fix HttpListener Read_LargeLength tests Fixes https://github.com/dotnet/corefx/issues/19984 cc: @Priya91, @hughbe +20063 area-System.Net Validate Sec-WebSocket-Key header in managed HttpListener The managed implementation was not validating the Sec-WebSocket-Key header, such that invalid header values (which must be 16 bytes then base64 encoded) were getting through. Fixes https://github.com/dotnet/corefx/issues/19982 cc: @Priya91, @hughbe +20065 area-System.Security release/2.0: Fix use-after-free handle problems in X509Certificates on macOS Port https://github.com/dotnet/corefx/pull/20047 to release/2.0. Fixes #19996. cc: @bartonjs +20066 area-System.Net "HttpClient fails with ""The server returned an invalid or unrecognized response"" when using Apache mod_proxy" I have an issue in production where the heartbeat _GetAsync_ requests that a Windows Server 2012 R2 sends using HttpClient fail intermittently. Around 1 in 10 requests fail with: ```shell Unhandled Exception: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Program.Main(String[] args) ``` The servers responding to these heartbeat are CentOS 7.1 with Apache mod_proxy version: httpd-2.4.6-45.el7.centos.4.x86_64 All applications are .NET Core 1.1. I was able to narrow down the issue to the combination of Client on Windows and Kestrel behind Apache. I created a [repo](https://github.com/bruno-garcia/apache-mod-proxy-unrecognized-response) with a script to reproduce the issue. I'm unable to reproduce the issue when the client is running on Linux. Also, if I remove the break between requests, the issue doesn't not happen. If I change the interval from 5 seconds to 4 or 6 seconds, the issue doesn't happen either. That is in fact my current work around. +20067 area-System.Net Test for URI inconsistency Test behavior of #20046 case on each OS +20068 area-System.Net GetAsync_TrailingHeaders_Ignored failed with System.Net.Http.WinHttpException : The operation has been canceled This is the only 1 failure out of 5367832 tests in today's windows run. @karelz I wish I could say fixing tihs would give us our first green run in years, but there are a number of tests flakily producing errors like this. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170521.02 ``` Unhandled Exception of Type System.Net.Http.HttpRequestException Message : System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace : at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass57_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__57.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` +20069 area-System.Net DualModeConnectAsync_DnsEndPointToHost_Helper failed on OSX with Timed out waiting for Connection https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170521.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectAsync~2FDualModeConnectAsync_DnsEndPointToHost_Helper(listenOn:%20::,%20dualModeServer:%20True) ``` Unhandled Exception of Type Xunit.Sdk.TrueException Message : Timed out while waiting for connection\nExpected: True\nActual: False Stack Trace : at System.Net.Sockets.Tests.DualModeConnectAsync.DualModeConnectAsync_DnsEndPointToHost_Helper(IPAddress listenOn, Boolean dualModeServer) in /Users/buildagent/agent/_work/29/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 630 ``` +20070 area-System.Diagnostics Process tests failing in Portable run due to needing elevation https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170521.02/workItem/System.Diagnostics.Process.Tests These tests need elevation. Either the runs need to be elevated, the tests need to elevate themselves, or they need filtering out by trait and covered some other way. +20071 area-System.Runtime Small summary mistake "https://github.com/dotnet/corefx/blob/master/src/System.ValueTuple/src/System/ValueTuple/ValueTuple.cs#L446 Change ""first"" to ""second""." +20073 area-System.Threading Implement Performance tests for System.Threading. Improves Performance test coverage from #18848. +20076 area-System.Security Removing dead code in System.Security.Cryptography.Algorithms Cleaning up dead code as identified by [#17905](https://github.com/dotnet/corefx/issues/17905) in System.Security.Cryptography.Algorithms. Included a change to the .gitignore to ignore JetBrains' .idea folder for Rider users. +20077 area-System.Collections "Test: System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI failed with ""Xunit.Sdk.FalseException""" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI` has failed. Assert.False() Failure\r Expected: False\r Actual: True Stack Trace: at System.Collections.Tests.CaseInsensitiveHashCodeProviderTests.Default_Compare_TurkishI() Build : Master - 20170522.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170522.01/workItem/System.Collections.NonGeneric.Tests/analysis/xunit/System.Collections.Tests.CaseInsensitiveHashCodeProviderTests~2FDefault_Compare_TurkishI +20078 area-System.Net InvalidCertificateServers_CertificateValidationDisabled_Succeeds failed with WinHttpException : The buffers supplied to a function was too small https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170522.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FInvalidCertificateServers_CertificateValidationDisabled_Succeeds(url:%20%5C%22https:~2F~2Fself-signed.bads... ``` Message : System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The buffers supplied to a function was too small Stack Trace : at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` +20079 area-System.Net ProxyExplicitlyProvided_DefaultCredentials_Ignored failed with WinHttpException : The connection with the server was terminated abnormally https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170522.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test~2FProxyExplicitlyProvided_DefaultCredentials_Ignored ``` Unhandled Exception of Type System.AggregateException Message : System.AggregateException : One or more errors occurred. (Error while copying content to a stream.) (One or more errors occurred. (Error while copying content to a stream.))\r\n---- System.Net.Http.HttpRequestException : Error while copying content to a stream.\r\n-------- System.IO.IOException : The read operation failed, see inner exception.\r\n------------ System.Net.Http.WinHttpException : The connection with the server was terminated abnormally\r\n---- System.AggregateException : One or more errors occurred. (Error while copying content to a stream.)\r\n-------- System.Net.Http.HttpRequestException : Error while copying content to a stream.\r\n------------ System.IO.IOException : The read operation failed, see inner exception.\r\n---------------- System.Net.Http.WinHttpException : The connection with the server was terminated abnormally Stack Trace : at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) at System.Threading.Tasks.Task.WaitAll(Task[] tasks) at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.ProxyExplicitlyProvided_DefaultCredentials_Ignored() ----- Inner Stack Trace #1 (System.Net.Http.HttpRequestException) ----- at System.Net.Http.HttpContent.d__50.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__50.MoveNext() ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at Interop.WinHttp.WinHttpQueryDataAvailable(SafeWinHttpHandle requestHandle, IntPtr parameterIgnoredAndShouldBeNullForAsync) at Interop.WinHttp.WinHttpQueryDataAvailable(SafeWinHttpHandle requestHandle, IntPtr parameterIgnoredAndShouldBeNullForAsync) at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.WinHttpResponseStream.CopyToAsyncCore(Stream destination, Byte[] buffer, CancellationToken cancellationToken) at System.Net.Http.WinHttpResponseStream.CopyToAsync(Stream destination, Int32 bufferSize, CancellationToken cancellationToken) at System.Net.Http.NoWriteNoSeekStreamContent.SerializeToStreamAsync(Stream stream, TransportContext context) at System.Net.Http.HttpContent.LoadIntoBufferAsync(Int64 maxBufferSize) at System.Net.Http.HttpClient.d__58.MoveNext() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(Action action, Boolean allowInlining, Task& currentTask) at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) at System.Threading.Tasks.Task`1.TrySetResult(TResult result) at System.Threading.Tasks.TaskCompletionSource`1.TrySetResult(TResult result) at System.Net.Http.WinHttpHandler.d__105.MoveNext() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ThreadPoolWorkQueue.Dispatch() --- End of stack trace from AddCurrentStack --- ----- Inner Stack Trace #2 (System.AggregateException) ----- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.<>c.b__2_0(Task`1 t) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ----- Inner Stack Trace ----- at System.Net.Http.HttpContent.d__50.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__50.MoveNext() ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at Interop.WinHttp.WinHttpQueryDataAvailable(SafeWinHttpHandle requestHandle, IntPtr parameterIgnoredAndShouldBeNullForAsync) at Interop.WinHttp.WinHttpQueryDataAvailable(SafeWinHttpHandle requestHandle, IntPtr parameterIgnoredAndShouldBeNullForAsync) at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.WinHttpResponseStream.CopyToAsyncCore(Stream destination, Byte[] buffer, CancellationToken cancellationToken) at System.Net.Http.WinHttpResponseStream.CopyToAsync(Stream destination, Int32 bufferSize, CancellationToken cancellationToken) at System.Net.Http.NoWriteNoSeekStreamContent.SerializeToStreamAsync(Stream stream, TransportContext context) at System.Net.Http.HttpContent.LoadIntoBufferAsync(Int64 maxBufferSize) at System.Net.Http.HttpClient.d__58.MoveNext() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(Action action, Boolean allowInlining, Task& currentTask) at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) at System.Threading.Tasks.Task`1.TrySetResult(TResult result) at System.Threading.Tasks.TaskCompletionSource`1.TrySetResult(TResult result) at System.Net.Http.WinHttpHandler.d__105.MoveNext() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ThreadPoolWorkQueue.Dispatch() --- End of stack trace from AddCurrentStack --- ``` +20080 area-System.Diagnostics Fix tests needing sudo Fixes https://github.com/dotnet/corefx/issues/20070 by making the test pass if not sudo. Verified it passes with and without sudo. Note there are already some tests that behave differently with and without sudo. Coverage of the few tests and implementation codepaths with sudo I will follow up on separately. I moved the two tests to the unix-specific file in order to keep the libc pinvoke out of the windows build. In doing so, I moved all the other unix specific tests to keep things consistent. +20082 area-Infrastructure Port disabling 3 Nano tests to 2.0 +20084 area-System.Runtime "Tests under: System.Reflection.Tests.AssemblyTests failed with ""System.IO.FileNotFoundException""" Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyTests/LoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssemblies` has failed. System.IO.FileNotFoundException : Could not load file or assembly 'C:\\Users\\DotNetTestRunner\\AppData\\Local\\Packages\\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\\AC\\Temp\\AssemblyTests_fplfggsf.iuu\\System.Runtime.Tests.dll'. The system cannot find the file specified. Stack Trace: at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly) at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath) at System.Reflection.Assembly.LoadFrom(String assemblyFile) at System.Reflection.Tests.AssemblyTests.LoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssemblies() Build : Master - 20170522.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170522.01/workItem/System.Runtime.Tests/analysis/xunit/System.Reflection.Tests.AssemblyTests~2FLoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssemblies +20085 area-System.Runtime "Test: System.Tests.StringTests/CompareTest failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Tests.StringTests/CompareTest(s1: \""turkish İ\"", s2: \""Turkish i\"", cultureName: \""tr-TR\"", ignoreCase: True, expected: 0)` has failed. Assert.Equal() Failure\r Expected: 0\r Actual: 1 Stack Trace: at System.Tests.StringTests.CompareTest(String s1, String s2, String cultureName, Boolean ignoreCase, Int32 expected) Build : Master - 20170522.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170522.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.StringTests~2FCompareTest(s1:%20%5C%22turkish%20%C4%B0%5C%22,%20s2:%20%5C%22Turkish%20i%5C%22,%20cultureName:%20%5C%22tr-TR%5C%22,%20ignoreCase:%20True,%20expected:%200)" +20086 area-System.Runtime "Test failure: System.Tests.TypeTests/GetTypeByName(typeName: \""Outside`1+Inside`1\"", expectedType: typeof(Outside<,>))" "Opened on behalf of @Jiayili1 The test `System.Tests.TypeTests/GetTypeByName(typeName: \""Outside`1+Inside`1\"", expectedType: typeof(Outside<,>))` has failed. Assert.Equal() Failure\r Expected: typeof(Outside<,>)\r Actual: (null) Stack Trace: at System.Tests.TypeTests.GetTypeByName(String typeName, Type expectedType) Build : Master - 20170522.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170522.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.TypeTests~2FGetTypeByName(typeName:%20%5C%22Outside%601+Inside%601%5C%22,%20expectedType:%20typeof(Outside%3C,%3E))" +20090 area-System.Runtime Update ValueTuple.cs Fix mistake in summary. +20091 area-System.IO Creating MemoryMappedFile fails with PlatformNotSupportedException Creating a MemoryMapped (in memory segment) failed on RHEL .NET Core App 1.1 ctor used: mmf = MemoryMappedFile.CreateNew(_FeedName, _StreamCapacity, MemoryMappedFileAccess.ReadWrite); mvs = mmf.CreateViewStream(); mvs.Seek(0, SeekOrigin.Begin); stack trace 1 22-05-2017 08:24:38.626675 [1] Starting program at 08:24:38.6204093Utc 2 22-05-2017 08:24:38.650215 [7] Creating MemoryMap publiser FXTest System.PlatformNotSupportedException: Named maps are not supported. at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(FileStream fileStream, String mapName, HandleIn heritability inheritability, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(String mapName, Int64 capacity, MemoryMappedFile Access access, MemoryMappedFileOptions options, HandleInheritability inheritability) at ConsoleApp1.FairValueMemoryMapPublisher.CreateMemoryMappedFile() 3 22-05-2017 08:24:38.775615 [7] Starting Publication 4 22-05-2017 08:24:38.777373 [7] Starting Publication 5 22-05-2017 08:24:38.780634 [7] System.NullReferenceException: Object reference not set to an instance of a n object. at ConsoleApp1.FairValueMemoryMapPublisher.PublishOnMemoryMap(ABCD entity) at ConsoleApp1.Program.StartMemMapPublisher(String _FeedName) +20093 area-System.Threading System.Threading.Tasks.Parallel.ForEach method does not always throw OperationCanceledException when canceled I have found that `ForEach` method in `System.Threading.Tasks.Parallel` class does not always finish with `OperationCanceledException` when canceled. Instead, `ForEach` method silently stops without throwing any exceptions and without executing all iterations. As a result, `Parallel.ForEach` may produce incomplete results. This behavior is observed for `Parallel.ForEach` method only, I was not able to reproduce it for `Parallel.For` method. Let's assume that we have a method that performs some work with the help of `Parallel.ForEach`: ```c# private static int DoWork(CancellationToken token) { var parallelOptions = new ParallelOptions { CancellationToken = token }; int counter = 0; Parallel.ForEach( new int[500], parallelOptions, dummy => { // Waste some time and keep CPU busy. for (long i = 0; i < 500; i++) ; Interlocked.Increment(ref counter); }); return counter; } ``` The method executes 500 tasks, each of them increments `counter` variable. Each task also does a small amount of work in the form of an empty `for` cycle so that it does not finish right away. If `DoWork` method finishes successfully, the returned value should be equal to the number of tasks executed (500). If `CancellationToken` is canceled while `Parallel.ForEach` is still running, then (per documentation) `Parallel.ForEach` should throw `OperationCanceledException`. The problem is that if some code launches `DoWork` method, waits for a short time (a few milliseconds), and then cancels `DoWork`, the value returned from `DoWork` may be smaller than 500: ```C# using (var tokenSource = new CancellationTokenSource()) { Task task = Task.Run(() => DoWork(tokenSource.Token)); // Waste some time and keep CPU busy before canceling DoWork. const long delay = 20000; for (long i = 0; i < delay; i++) ; tokenSource.Cancel(); try { int counter = await task; if (counter == 500) { // This branch should be executed if tokenSource.Cancel() was called too late // and Parallel.ForEach had already finished. } else { // This branch should never be executed, but execution goes there from time // to time. } } catch (OperationCanceledException) { // This is where we expect to land if DoWork was canceled. } } ``` The probability that `DoWork` will return a value different from 500 depends on the value of `delay` constant. On my workstation the issue appears if `delay` is between 10000 and 50000 (see the image below). X-axis is `delay` constant, Y-axis is the probability of `DoWork` returning a wrong value. ![failurerate](https://cloud.githubusercontent.com/assets/23439941/26311148/8c484ef2-3f03-11e7-9748-a30b1f19fd69.png) .NET Core console application that checks the probability of the issue: [ParallelTester.zip](https://github.com/dotnet/corefx/files/1018975/ParallelTester.zip) I was able to reproduce the issue for .NET Core only. The same piece of code works fine when compiled under .NET Frawework 4.6.2. Workstation Configuration: Target Framework: .NETCoreApp 1.1 OS: Windows 10 Pro CPU: Core i7-4702MQ +20095 area-System.Net Add more tracing to HttpClient on Unix Some recent investigations based on tracing data revealed some gaps in usefulness. This adds some more tracing to try to fill those gaps. cc: @geoffkizer, @janvorli, @bartonjs +20096 area-System.Net [HttpListener] [Porting] HttpListener.GetContext on Windows throws an NRE for NTLM and Negotiate authentication "The following test gives an example of this (I'm currently writing tests for HttpListener authentication): ```cs using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Xunit; namespace System.Net.Tests { public class AuthenticationTests : IDisposable { private HttpListenerFactory _factory; private HttpListener _listener; public AuthenticationTests() { _factory = new HttpListenerFactory(); _listener = _factory.GetListener(); } public void Dispose() => _factory.Dispose(); [Fact] public async Task NtlmAuthentication_NoRequestHeaders_ReturnsForbiddenStatusCode() { _listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm; using (var client = new HttpClient()) { HttpResponseMessage message = await AuthenticationFailure(client, HttpStatusCode.Unauthorized); Assert.Equal(""NTLM"", message.Headers.WwwAuthenticate.ToString()); } } public async Task AuthenticationFailure(HttpClient client, HttpStatusCode errorCode) { Task clientTask = client.GetAsync(_factory.ListeningUrl); // The server task will hang forever if it is not cancelled. var tokenSource = new CancellationTokenSource(); Task serverTask = Task.Run(() => _listener.GetContext(), tokenSource.Token); // The client task should complete first - the server should send a 401 response. Task resultTask = await Task.WhenAny(clientTask, serverTask); tokenSource.Cancel(); if (resultTask == serverTask) { await serverTask; } Assert.Same(clientTask, resultTask); Assert.Equal(errorCode, clientTask.Result.StatusCode); return clientTask.Result; } } } ``` This does not fail on desktop. The netcoreapp stack trace is: ``` System.Net.Tests.AuthenticationTests.NtlmAuthentication_NoRequestHeaders_ReturnsForbiddenStatusCode [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpListener.Window s.cs(1918,0): at System.Net.HttpListener.DisconnectAsyncResult..ctor(HttpListener httpListener, UInt64 connectionId) C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpListener.Window s.cs(1645,0): at System.Net.HttpListener.RegisterForDisconnectNotification(UInt64 connectionId, DisconnectAsyncResult & disconnectResult) C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpListener.Window s.cs(1306,0): at System.Net.HttpListener.HandleAuthentication(RequestContextBase memoryBlob, Boolean& stoleBlob) C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\src\System\Net\Windows\HttpListener.Window s.cs(655,0): at System.Net.HttpListener.GetContext() C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\tests\AuthenticationTests.cs(310,0): at Sy stem.Net.Tests.AuthenticationTests.b__30_0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Obj ect state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\tests\AuthenticationTests.cs(317,0): at Sy stem.Net.Tests.AuthenticationTests.d__30.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() C:\Users\hugh\Documents\GitHub\corefx\src\System.Net.HttpListener\tests\AuthenticationTests.cs(127,0): at Sy stem.Net.Tests.AuthenticationTests.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() ``` HttpListener... the gift that keeps on giving" +20098 area-System.Net [managed bug] HttpListener.Realm challenges should have the same format as Windows challenges "Following test disabled with this issue: - BasicAuthentication_RealmSet_SendsChallengeToClient ``` System.Net.Tests.AuthenticationTests.BasicAuthentication_RealmSet_SendsChallengeToClient(realm: \""ExampleRealm\"") [FAIL] Assert.Equal() Failure  (pos 11) Expected: Basic realm =""ExampleRealm"" Actual: Basic realm=""ExampleRealm""  (pos 11) ```" +20099 area-System.Net [HttpListener] [Managed] HttpListener should validate basic authentication requests "Tests disabled with this issue: - BasicAuthentication_InvalidRequest_SendsStatusCodeClient ``` System.Net.Tests.AuthenticationTests.BasicAuthentication_InvalidRequest_SendsStatusCodeClient(header: \""\"", statusCode: Unauthorized) [FAIL] System.IndexOutOfRangeException : Index was outside the bounds of the array. Stack Trace: at System.Net.HttpListenerContext.ParseAuthentication(AuthenticationSchemes expectedSchemes) at System.Net.HttpListener.EndGetContext(IAsyncResult asyncResult) at System.Net.HttpListener.GetContext() at System.Net.Tests.AuthenticationTests.b__35_0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.BasicAuthentication_InvalidRequest_SendsStatusCodeClient(header: null, statusCode: Unauthorized) [FAIL] System.IndexOutOfRangeException : Index was outside the bounds of the array. Stack Trace: at System.Net.HttpListenerContext.ParseAuthentication(AuthenticationSchemes expectedSchemes) at System.Net.HttpListener.EndGetContext(IAsyncResult asyncResult) at System.Net.HttpListener.GetContext() at System.Net.Tests.AuthenticationTests.b__35_0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.BasicAuthentication_InvalidRequest_SendsStatusCodeClient(header: \""dXNlcm5hbWU=\"", statusCode: BadRequest) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.BasicAuthentication_InvalidRequest_SendsStatusCodeClient(header: \""abc\"", statusCode: InternalServerError) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ```" +20100 area-System.Net [HttpListener] [Managed] HttpListener should catch non-fatal errors if AuthenticationSchemeSelectorDelegate throws Following tests are disabled with this issue: - AuthenticationSchemeSelectorDelegate_ThrowsException_SendsInternalServerErrorToClient - AuthenticationSchemeSelectorDelegate_ThrowsOutOfMemoryException_RethrowsException ``` System.Net.Tests.AuthenticationTests.AuthenticationSchemeSelectorDelegate_ThrowsException_SendsInternalServerErrorToClient [FAIL] System.AggregateException : One or more errors occurred. (An error occurred while sending the request.) ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) at Interop.WinHttp.WinHttpReceiveResponse(SafeWinHttpHandle requestHandle, IntPtr reserved) at Interop.WinHttp.WinHttpReceiveResponse(SafeWinHttpHandle requestHandle, IntPtr reserved) at System.Net.Http.WinHttpHandler.InternalReceiveResponseHeadersAsync(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c__DisplayClass4_0.b__0() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ThreadPoolWorkQueue.Dispatch() --- End of stack trace from AddCurrentStack --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` +20101 area-System.Net [HttpListener] [Managed] HttpListener should not hang when missing NTLM/Negotiate authentication is used "Following tests are disabled with this issue: - NtlmAuthentication_Conversation_ReturnsExpectedType2Message - NtlmAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode - NegotiateAuthentication_Conversation_ReturnsExpectedType2Message - NegotiateAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode ``` System.Net.Tests.AuthenticationTests.NtlmAuthentication_Conversation_ReturnsExpectedType2Message [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NtlmAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: null, statusCode: Unauthorized) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NtlmAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: \""\"", statusCode: Unauthorized) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NtlmAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: \""abc\"", statusCode: BadRequest) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NtlmAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: \""abcd\"", statusCode: BadRequest) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NegotiateAuthentication_Conversation_ReturnsExpectedType2Message [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NegotiateAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: null, statusCode: Unauthorized) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__19.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NegotiateAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: \""\"", statusCode: Unauthorized) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__19.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NegotiateAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: \""abc\"", statusCode: BadRequest) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__19.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.AuthenticationTests.NegotiateAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode(header: \""abcd\"", statusCode: BadRequest) [FAIL] Assert.Same() Failure Expected: Task { Status = WaitingForActivation } Actual: Task { Status = RanToCompletion } Stack Trace: at System.Net.Tests.AuthenticationTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.AuthenticationTests.d__19.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ```" +20102 area-System.Net Add some HttpListener authentication tests Lots more managed test failures, sorry - also a Windows implementation bug. This prevented me from adding more tests, but I verified that the disabled tests pass on netfx Contributes to #13618 +20103 area-System.Net [HttpListener] HttpListener tests are blocking xunit workers, causing hangs Lots of the tests that are async are doing synchronous work that's dependent on something else happening, resulting in deadlocks/hangs when xunit parallel execution is enabled, in particular on older OSes where things run slower / more stuff completes asynchronously. Examples include synchronous sends/receives, spinning until a socket closes, doing .Wait() to block waiting for an async method, etc. +20104 area-System.Net Disable parallel execution of HttpListener tests https://github.com/dotnet/corefx/issues/20103 cc: @hughbe +20106 area-Infrastructure Remove old Nano testing Removes old nano testing, in favor of new pipelines (@dotnet-bot test portable windows debug pipeline) (@dotnet-bot test portable windows release pipeline) +20107 area-Infrastructure Add help job +20108 area-Meta Test attributes cleanup for Uap now that Uap flag includes UapAot Fixes: https://github.com/dotnet/buildtools/issues/1395 cc: @danmosemsft FYI: @AtsushiKan @davidsh +20109 area-Infrastructure Need to handle generating config files for exe's we launch from tests exe's like our RemoteExecutorApp or others like [VoidMainWithExitCodeApp](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/tests/VoidMainWithExitCodeApp/VoidMainWithExitCodeApp.cs) need to have configuration files in order to successfully run. See https://github.com/dotnet/corefx/pull/19232 where I've temporarily checked in an appconfig file to address it for that test exe. We currently hardcode a list of config files we generate here https://github.com/dotnet/buildtools/blob/master/src/Microsoft.DotNet.Build.Tasks/PackageFiles/tests.targets#L130. Instead of hardcoding we should make that list extensible or automatically detect exe's and generate config files for them. While app.config is for the desktop runs we have a similar problem with the netcoreapp runs with runtimeconfig.json files that are needed. We should follow a similar process and generate them as well instead of having them be checked in along side all the test exe's. +20110 area-Infrastructure Need to generate a RunTest.cmd unique to the BuildConfiguration instead of Configuration Today if we have a configuration of netstandard in a test project and you try to run it once with one target group (say netcoreapp) and then a second time as another target group (say netfx) we keep overwriting the RunTest.cmd each time. We should ensure that the test output path takes into account the target you are running on as well as the target you are building for. I noticed this while helping with https://github.com/dotnet/corefx/pull/19232 and saw we were running the netfx tests from here `D:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Runtime.Extensions.Tests\netstandard\RunTest.cmd` which didn't account for netfx as all. +20111 area-System.IO Associate #19965 with existing test There is a PR to fix the behavior in FileStream in CoreCLR. This test will pass as per the Windows OS block once that change is taken. Disabling and tracking to allow taking a new drop. #19965, https://github.com/dotnet/coreclr/pull/11757 The primary issue is #19850. +20112 area-System.Reflection Add HasSameMetadataDefinitionAs(). This api was approved here: Fix https://github.com/dotnet/corefx/issues/5884 and is a necessary step to fixing the System.Dynamic.Runtime.Tests failure: https://github.com/dotnet/corefx/issues/19895 which is caused by Microsoft.CSharp trying to do the impossible and emulate this api without GetMetadataToken() support. CoreCLR implementation here: https://github.com/dotnet/coreclr/pull/11774 and CoreRT implementation in CR: +20113 area-Infrastructure Add step/test to validate test machine configuration We occasionally get tests failing only on Helix machines and after expensive investigation discover it's some configuration difference with local dev machines. It would be valuable to have the test run script do simple validation of the configuration to avoid repeating such investigations. Collecting a list of things to validate - [ ] [/proc/sys/vm/overcommit_memory set to 0](https://github.com/dotnet/corefx/issues/19923) I'll add others as I recall them. @stephentoub @MattGal @bartonjs +20114 area-Infrastructure RemoteExecutorConsoleApp is becoming too complex The [RemoteExecutorConsoleApp](https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs) is becoming too complex and is duplicating a lot of logic from our build generation scripts. Logic like picking the correct runner or setting up the environment or the correct configuration. We should eliminate most of this duplicated logic that we have here and in test.targets and instead generate a RunTest.Remote.cmd/sh (or something like that) that encapsulate the logic for running the remote application for the given platform. Then RemoteExecutorTestBase.cs can simply call run on that cmd or sh script that we generate and we don't have to keep maintaining the logic for figuring out how to run in multiple locations. cc @stephentoub @ViktorHofer @safern @danmosemsft This became pretty clear to me while helping with https://github.com/dotnet/corefx/pull/19232 and the UWP RemoteExecutor issues we are still having. +20115 area-System.Xml add missing stub constructors Add private constructors to the System.Xml.XmlSchemaSet.Tests, where the constructors were missing. Adjusted TC classes in project so they all have the same constructor style. +20116 area-System.Data Port PR#19968 User message for non-support of Sys.Transactions in SqlClient The PR does the following Brings in Enlist keyword on connection string. Throws exceptions when SqlConnection.Open or SqlConnection.OpenAsync() is called in Transaction Scope Throws Exception when SqlConnection.EnlistTransaction is called. Fixes #19894 +20117 area-System.IO Re-enable long path tests for UAP "WinRT APIs weren't long path friendly. This should change for RS3. Additionally we're planning to remove WinRT specific codepaths, relying on our ""traditional"" Win32 APIs. Should tackle after #17470. We have plenty of existing tests, they are just currently skipped for UAP." +20118 area-Infrastructure Make the description of 'Microsoft.NETCore.App' package clearer There is always a confusion as to why is 'Microsoft.NETCore.App' auto-referenced in a .NET Core project and why can it be not updated etc. We are trying to fix the text of such references on Visual Studio Package Manager as tracked here: https://github.com/NuGet/Home/issues/4964 I feel the the description of the package could also clear the air on which SDK (may be we need to use this term somewhere) to make it clearer to the end-customer why this package got included in first place and which SDK (and version) brought this package as dependency to the project. +20119 area-System.Diagnostics [2.0] Port fix for tests that need sudo Port test fix https://github.com/dotnet/corefx/pull/20080 for bug #20070 Fixes #20070 Do not merge - not verified in master yet. +20121 area-Infrastructure Segregate Networking outer loop tests into their own run The outer loop netcore runs are on the verge of being 100% green excepting networking tests which have some broad reliability issues. In order to focus attention on those, and more easily keep the non-networking tests 100% green, we want to break out the networking tests into their own run and their own badge on Helix. @karelz to assign... +20122 area-Infrastructure Move more OuterLoop tests into InnerLoop The netcore tests are close to 100% green, excepting networking. To help avoid going backwards, we should go through the Outerloop tests (except networking) and promote all of them that are (1) reliable and (2) not excessively time consuming. That way CI can protect them. +20123 area-System.Net Several fixes for HttpListener on Unix Fixes https://github.com/dotnet/corefx/issues/19971 Fixes https://github.com/dotnet/corefx/issues/19976 Also most of https://github.com/dotnet/corefx/issues/19972 Primarily involved moving shareable implementations from the Windows code to the shared code and then fixing up the managed implementation to use it. Nothing functional changed on the Windows side. cc: @janvorli, @hughbe, @Priya91, @geoffkizer +20124 area-System.Data Add additional DataTable functionality to SqlClient to match Framework implementation (#20022) Porting #20022 to release/2.0.0 branch Fixes #19913 +20125 area-Serialization Fix Bug with XmlSerializer Events on UWP. The bug was that we didn't set XmlSerializerReader's XmlDeserializationEvents on the code path for UWP, so the events registered were not triggered. Fix #19903. Fix #19898. +20126 area-Infrastructure Outerloop crash: Tools/crossgen.sh: line 54: 2994 Segmentation fault Failed in https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu16.04_debug_prtest/23/consoleFull#14914778664b7730ef-150b-4be7-a00f-82ba6c50792b ``` 16:52:41 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Runtime.Serialization.Formatters.dll -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Runtime.Serialization.Formatters.ni.dll 16:52:41 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/vbc.exe -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/vbc.ni.exe 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/ApiCompat.exe -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/ApiCompat.ni.exe 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/run.exe -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/run.ni.exe 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Security.Cryptography.Algorithms.dll -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Security.Cryptography.Algorithms.ni.dll 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.ComponentModel.TypeConverter.dll -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.ComponentModel.TypeConverter.ni.dll 16:52:42 Tools/crossgen.sh: line 54: 2994 Segmentation fault (core dumped) $__crossgen /Platform_Assemblies_Paths $__sharedFxDir:$__toolsDir /nologo /MissingDependenciesOK /ReadyToRun $__file > /dev/null 16:52:42 Unable to successfully compile /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Private.CoreLib.dll 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Net.Mail.dll -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Net.Mail.ni.dll 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Linq.dll -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Linq.ni.dll 16:52:42 /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Private.Xml.Linq.dll -> /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug_prtest/Tools/System.Private.Xml.Linq.ni.dll ``` +20127 area-Infrastructure add explicit check for OSX version to avoid mysterious breakages This change adds explicit check for OSX version. On my 10.11 it fails with following message: ./init-tools.sh error: OSX version 10.11.6 is too old! bash -x init.sh I verified that version expands to VERSION=010011006 as expected. I run same script on Sierra and init.sh runs expected. (version expands to VERSION=010012005) +20128 area-System.Net Test failure: System.Net.Security.Tests.LoggingTest / EventSource_EventsRaisedAsExpected (60s timeout) ## History of failures (since 2017/5) Day | Build | OS -- | -- | -- 8/21 | 20170821.03 | OSX10.12 # Original history https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_osx_debug_prtest/39/consoleFull Example: System.Net.Security.Tests.LoggingTest.EventSource_EventsRaisedAsExpected (from (empty)) ``` Stacktrace MESSAGE: Timed out after 60000ms waiting for remote process 97944\nExpected: True\nActual: False +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_debug_prtest/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 214 at System.Net.Security.Tests.LoggingTest.EventSource_EventsRaisedAsExpected() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_debug_prtest/src/System.Net.Security/tests/FunctionalTests/LoggingTest.cs:line 31 ``` Console log: [log.txt](https://github.com/dotnet/corefx/files/1020258/log.txt) +20130 area-System.Net UWP: System.Net.Ping Tracking work for UWP System.Net.Ping. +20131 area-System.Net UWP: System.Net.Mail Tracking work for System.Net.Mail in UWP. +20132 area-System.Net UWP: System.Net.WebSockets Tracking work for System.Net.WebSockets (common, client and server). +20133 area-Infrastructure Add support for other .NET Framework Shims we support for .NET Core We have ported a number of things for .NET Framework to .NET Core but we don't have shims in place for all of them. Based on a diff of the .NET 4.6.1 and .NET Core I see the following .NET Framework identities that we don't currently support type unification for: ``` System.Configuration System.Security System.ServiceProcess WindowsBase ``` PR https://github.com/dotnet/corefx/pull/20029 add these shims. +20134 area-System.IO Port for #20040 Port for #20040. Normalizes exceptions for missing files across platforms. +20135 area-System.Net UWP: System.Net.Sockets Tracking work for System.Net.Sockets in UWP +20136 area-System.Net UWP: System.Net.Requests Tracking work for System.Net.Requests in UWP. +20137 area-System.Net UWP: System.Net.WebProxy Tracking work for System.Net.WebProxy +20138 area-System.Net UWP: System.Net.WebHeaderCollection Tracking work for System.Net.WebHeaderCollection in UWP. +20139 area-System.Net UWP: System.Net.NameResolution Tracking UWP work for System.Net.NameResolution +20140 area-System.Net UWP: System.Net.ServicePoint Tracking UWP work for System.Net.ServicePoint. +20141 area-System.Net UWP: System.Net.WebClient Tracking UWP work for System.Net.WebClient. +20142 area-System.Diagnostics mark certain Process struct fields as reserved We don't use them. +20143 area-System.Net Fixing test name. Small test name changes to easily identify failing tests in CI. No actual changes required for UWP (no test is failing). Fixes #20138 +20144 area-Infrastructure Add more compat shim assemblies Fixes https://github.com/dotnet/corefx/issues/20133 cc @danmosemsft @ericstj +20145 area-System.Net Disable System.Net.* tests for issue #19967 Contributes to: #18483 In order to consume the new buildtools version that fixes [ConditionalFact/Theory] netfx discovery I have to disable failing tests so that CI is green. This tests are tracked by: https://github.com/dotnet/corefx/issues/19967 cc: @davidsh @CIPop @stephentoub +20147 area-System.Runtime System.Environment - Writing environment variables on Mac/Linux "Hi, @stephentoub @jkotas @JeremyKuhne @eerhardt I've been looking at System.Environment and how to read and write Environment variables on Linux/Mac, using the 1.04 release and 2.0 preview currently available. With the 2.0 preview, the APIs expanded to allowing the use of the EnvironmentVariableTarget enum, which features the Process, User and Machine scope where as prior to this, only the Process scope was implemented as a default. Unfortunately, this is not helpful at all on Linux/Mac. With the current API in 2.0 preview (and prior API versions), setting environment variables on Linux/Mac do not bind to the underlying shell process, they live within the scope of the dotnet process executing the assembly setting the environment variable(s) and stop to exist once dotnet terminates assembly execution. Using other scopes (e.g. User, Machine) on non-Windows platforms) is not mapped in the implementation. This is fairly useless for persisting information to be used by other processes. Example: ```csharp using System; using System.Runtime.InteropServices; class Sample { protected static string myVarPrefix = ""FOOBAR_""; protected static string myVarA = myVarPrefix + ""DEFAULT""; // default process protected static string myVarB = myVarPrefix + ""CURRENT""; // Current Process protected static string myVarC = myVarPrefix + ""USER""; // Current User protected static string myVarD = myVarPrefix + ""MACHINE""; // Local Machine protected static string myVarValue = ""FOOBAR""; public static void Main() { Console.WriteLine(""Setting default process...""); Environment.SetEnvironmentVariable(myVarA, myVarValue); Console.WriteLine(""Setting current process...""); Environment.SetEnvironmentVariable(myVarB, myVarValue, EnvironmentVariableTarget.Process); Console.WriteLine(""Setting user...""); Environment.SetEnvironmentVariable(myVarC, myVarValue, EnvironmentVariableTarget.User); Console.WriteLine(""Setting machine...""); try { Environment.SetEnvironmentVariable(myVarD, myVarValue, EnvironmentVariableTarget.Machine); } catch (System.Exception) { Console.WriteLine(""Failed setting machine...""); } if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) System.Diagnostics.Process.Start(""/bin/bash"", ""-c export""); Console.Write(""Press to exit... ""); while (Console.ReadKey(true).Key != ConsoleKey.Enter) {} } } ``` Only FOOBAR_DEFAULT and FOOBAR_CURRENT will be set on Linux while the app executes and running `/bin/bash -c export` _after_ this sample terminated shows that both variables are gone and don't exist anymore. What's the plan here to fix this? To my knowledge, Mono simply implements reading/writing environment variables on Unix/Linux using the same namespace(s) as in .NET, Mono.Unix.Native/Mono.Posix have nothing added to specifically read and write environment variables. Hence, my expectation would be to have this very basic stuff handled with an identical abstraction in CoreFX that is not platform dependent? For Linux, there is of course no scope such as ""Machine"" and ""User"" would bind to the underlying shell process (and any child process starting after the fact through inheritance). **The current scope of implementation in 2.0 preview should be fixed to make the ""User"" scope work on Mac/Linux, where it binds to the scope of the underlying shell.** As a **workaround** to properly set environment variables on Linux/Mac, one could simply query `RuntimeInformation.IsOSPlatform(OSPlatform.Linux)` and use System.IO to check for the presence of any familiar shell (sh, ksh, and bash, maybe also from other shell families such as csh) in the file system and then write simple wrappers calling to their built-in functions to set environment variables correctly such as ```csharp // omitting check for presence of bash binary if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) System.Diagnostics.Process.Start(""/bin/bash"", ""-c export "" + variable + ""="" + value); ``` Whatever the API implementation in CoreFX is going to be (for Mac/Linux), it should work and have the same outcome as making a call to the shell built-ins for managing environment variables. -- Thanks, Tobias W. " +20148 area-System.Xml Investigate XmlSchemaSet's behavior on Unix when temp path is passed as Uri When XmlSchemaSet is trying to load schemas that were imported/included in another schema, if it receives temp path in the Uri, it would not load the schemas on non-Windows platforms, as `/tmp/` is not considered AbsoluteUri. This causes incorrect behavior with XmlSchemaSet. For more details, please refer to the discussion in https://github.com/dotnet/corefx/issues/20046. Please also re-enable the tests marked as ActiveIssue when this is fixed. +20150 area-System.Diagnostics System.Diagnostics.Tests.ProcessTests.TestStartOnWindowsWithBadFileFormat fails on Desktop This test is marked as `[ConditionalFact]` which is currently not running in Desktop. I have the local fix already for that but I can't update it in Corefx until I disable the failing tests to have a green CI, so I will go ahead and disable it. It fails with error: ``` System.Diagnostics.Tests.ProcessTests.TestStartOnWindowsWithBadFileFormat [FAIL] Assert.Throws() Failure Expected: typeof(System.ComponentModel.Win32Exception) Actual: (No exception was thrown) Stack Trace: D:\repos\corefxCopy\corefx\src\System.Diagnostics.Process\tests\ProcessTests.cs(1028,0): at System.Diagnostics.Tests.ProcessTests.TestStartOnWindowsWithBadFileFormat() ``` cc: @Priya91 @stephentoub +20151 area-Infrastructure Run several ApiCompat checks on the SharedFramewor cc: @weshaggard @ericstj @danmosemsft This adds most of the ApiCompat checks on issue #18083 except for the ones against the installer/zip that we publish, which I will add in a subsequent PR. @weshaggard please note that I am adding a baseline file for the apicompat run comparing our last shipped Microsoft.NETCore.App package runtime assets (v. 1.1.2) and the ones we are testing since we have broken compatibility there, so lets just make sure that all changes are expected. From what I look, most of them are because we now don't bring to the closure the roslyn libraries anymore, plus we have made some types from public->internal but they weren't exposed through contracts so I guess we should be fine. Last remaining pieces for this validation work to be done, is to add those installer/zip Apicompat checks, and adding official runs so that we have this working on some cadence. After that, we will just have to port all of these changes to rel/2.0.0 so that we can do validations in there as well. +20152 area-System.Security System.Security.Principal.Windows.WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType fails on Desktop This test is marked as `[ConditionalTheory]` and we haven't seen a failure because in netfx this test attribute is broken. I have the local fix so I was able to run it and it is failing with error: ``` System.ArgumentException : Value was invalid. Parameter name: sidType Stack Trace: at System.Security.Principal.SecurityIdentifier..ctor(WellKnownSidType sidType, SecurityIdentifier domainSid) D:\repos\corefxCopy\corefx\src\System.Security.Principal.Windows\tests\WellKnownSidTypeTests.cs(123,0): at WellKnownSidTypeTests.CanCreateSecurityIdentifierFromWellKnownSidType(WellKnownSidType sidType) ``` Will go ahead and disable it so that we can get the fix for this attributes in Corefx cc: @steveharter @bartonjs +20153 area-System.Net Port to 2.0: Test change - Increasing mutex time, ensuring the mutex is released. Fixes #19430. Port #20028 +20154 area-System.Runtime System.Runtime.Tests failed on Desktop Two tests that are marked as [ConditionalFact] are failing for Desktop: `System.Tests.IntPtrTests.GetHashCodeRespectAllBits` with error: ``` System.Tests.IntPtrTests.GetHashCodeRespectAllBits [FAIL] Assert.NotEqual() Failure Expected: Not -1 Actual: -1 Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime\tests\System\IntPtrTests.cs(149,0): at System.Tests.IntPtrTests.GetHashCodeRespectAllBits() ``` `System.Tests.UIntPtrTests.GetHashCodeRespectAllBits` with error: ``` System.Tests.UIntPtrTests.GetHashCodeRespectAllBits [FAIL] Assert.NotEqual() Failure Expected: Not 2147483647 Actual: 2147483647 Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime\tests\System\UIntPtrTests.cs(146,0): at System.Tests.UIntPtrTests.GetHashCodeRespectAllBits() ``` This tests are currently not running in corefx as [ConditionalFact/Theory] fix is not in corefx. In order to check it in I have to disable this tests first. cc: @joperezr @AlexGhiondea +20155 area-Meta Disable conditional tests Fixes: https://github.com/dotnet/corefx/issues/20150 Fixes: https://github.com/dotnet/corefx/issues/20154 Fixes: https://github.com/dotnet/corefx/issues/20152 Contributes to: https://github.com/dotnet/corefx/issues/18483 This is needed before updating buildtools to get the actual fix for ConditionalFact/Theory to have a green CI. cc: @danmosemsft @joperezr @AlexGhiondea +20156 area-System.Net [HttpListener] HttpListenerResponse.Close(byte[], bool) does not properly shutdown all the time "```cs [InlineData(true)] [InlineData(false)] // The managed implementation should set ContentLength to -1 after sending headers. [ConditionalTheory(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] // [ActiveIssue(19973, TestPlatforms.AnyUnix)] public async Task CloseResponseEntity_ChunkedNotSentHeaders_ModifiesContentLength(bool willBlock) { using (HttpListenerResponse response = await GetResponse()) { response.SendChunked = true; response.Close(new byte[] { (byte)'a' }, willBlock); Assert.Equal(-1, response.ContentLength64); // If we're non-blocking then it's not guaranteed that we received this when we read from the socket. try { string clientResponse = GetClientResponse(126); Assert.EndsWith(""\r\n1\r\na\r\n0\r\n\r\n"", clientResponse); } catch (SocketException) { // Most of the time, the Socket can read the content send after calling Close(byte[], bool), but // occassionally this test fails as the HttpListenerResponse closes before the Socket can receive all // content. If this happens, just ignore the failure and carry on. // The exception message is: ""An existing connection was forcibly closed by the remote host."" // Although part of this test is to ensure that the connection isn't forcibly closed when closing, // we want to avoid intermittent failures. } } } ``` From @stephentoub in #19880: > This is in both the Windows and managed implementation, or just the managed one? This sounds like a bug. It should be possible for the server to close the connection and still have the client receive all of the data sent before that, assuming the server is doing a proper shutdown of the connection. " +20157 area-System.Runtime Adds runtime feature detection support for default interface method This proposal introduces a new flag for the presence of default interface methods (see the references below). ```csharp public static class RuntimeFeature { /// /// Indicates that this version of runtime supports default interface method implementations. /// // Original name, adjusted by API review: InterfaceDefaultMethods public const string DefaultImplementationsOfInterfaces = nameof(DefaultImplementationsOfInterfaces); /// /// Checks whether a certain feature is supported by the Runtime. /// public static bool IsSupported(string feature) { if (feature == DefaultImplementationsOfInterfaces ) return true; return false; } } ``` `System.Runtime.CompilerServices.RuntimeFeature.IsSupported` returning true indicates that the runtime supports interface default method feature. It only indicates the presence of the feature and does *NOT* necessarily translate to any specific runtime behavior. This means that future runtime will keep returning true for this feature even in the case of breaking behavior changes (perhaps the only exception is when we decide to take the feature out, but that probably would never happen once we ship). Practically speaking, returning true means that the runtime supports the set of behaviors that is defined by first version of interface default method feature in the runtime (that we ship), plus/minus any future behavior changes that may or may not be breaking. If there are any requirements to support detection of any future behavior changes (that clients such as compilers care about), we can introduce a new flag that corresponds to the new behavior. Returning true would indicate the new behavior while returning false indicates otherwise. # References [C# Language Spec Link](https://github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md) [Runtime Feature Support API proposal](https://github.com/dotnet/corefx/issues/17116) [CoreCLR issue] (https://github.com/dotnet/coreclr/issues/10504) Runtime Design Spec (TBD) +20158 area-Infrastructure Build.cmd should pick up and use the VS 2017 developer command prompt automatically I only have VS2017 installed on my PC, but when I run `build.cmd` from the normal command prompt (`cmd.exe`) I get > Error: Visual Studio 2015 or 2017 required. > Please see https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md for build instructions. It'd be nice if `build.cmd` picked up that I have only one of these environments installed and used it. Before VS2017 I could use build.cmd from the non-developer command prompt +20159 area-System.Net [porting bug] HttpListenerResponse.SetCookie does not throw in netcoreapp if the Cookie already exists "```cs [Fact]//[ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] public async Task SetCookie_CookieDoesntExist_ThrowsArgumentException() { HttpListenerResponse response = await GetResponse(); var cookie1 = new Cookie(""name"", ""value""); response.SetCookie(cookie1); Assert.Throws(""cookie"", () => response.SetCookie(cookie1)); var cookie2 = new Cookie(""name"", ""value2""); Assert.Throws(""cookie"", () => response.SetCookie(cookie2)); Assert.Equal(new Cookie[] { cookie2 }, response.Cookies.Cast()); } ``` Netfx throws an ArgumentException. Netcoreapp does not throw. I have a fix for this and will send a PR when I've written more tests" +20160 area-System.Net [porting bug] HttpListenerResponse.SetCookies should clone the cookie "The following tests demonstrates this: ```cs [Fact] public async Task SetCookie_ValidCookie_ClonesCookie() { HttpListenerResponse response = await GetResponse(); var cookie = new Cookie(""name"", ""value""); response.SetCookie(cookie); // Cookies are cloned. cookie.Value = ""value3""; Assert.Equal(""value"", response.Cookies[0].Value); } ``` Netcoreapp fails - `response.Cookies[0].Value == ""value3""` Netfx passes - `response.Cookies[0].Value == ""value""` I have a fix for this which I'll submit with tests" +20161 area-System.Net [porting bug] HttpListenerResponse.AppendHeaders is broken "```cs [Fact]//[ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] public async Task AppendHeader_ValidValue_AddsHeaderToCollection() { HttpListenerResponse response = await GetResponse(); response.AppendHeader(""name"", ""value1""); Assert.Equal(""value1"", response.Headers[""name""]); response.AppendHeader(""name"", ""value2""); Assert.Equal(""value1,value2"", response.Headers[""name""]); } [Fact]//[ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] public async Task AppendHeader_NullOrWhitespaceName_ThrowsArgumentNullException() { HttpListenerResponse response = await GetResponse(); Assert.Throws(""name"", () => response.AppendHeader(null, """")); } [Fact]//[ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] public async Task AppendHeader_InvalidNameOrValue_ThrowsArgumentException() { HttpListenerResponse response = await GetResponse(); Assert.Throws(""name"", () => response.AppendHeader("""", """")); Assert.Throws(""name"", () => response.AppendHeader(""\r \t \n"", """")); Assert.Throws(""name"", () => response.AppendHeader(""("", """")); Assert.Throws(""value"", () => response.AppendHeader(""name"", ""value1\rvalue2\r"")); } ``` All these tests pass with netfx. None pass with netcoreapp: ``` System.Net.Tests.HttpListenerResponseHeadersTests.AppendHeader_NullOrWhitespaceName_ThrowsArgumentNullException [F AIL] Assert.Equal() Failure  (pos 0) Expected: name Actual: header  (pos 0) Stack Trace: at System.Net.Tests.HttpListenerResponseHeadersTests.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() System.Net.Tests.HttpListenerResponseHeadersTests.AppendHeader_ValidValue_AddsHeaderToCollection [FAIL] System.ArgumentException : Specified value does not have a ':' separator. Parameter name: header Stack Trace: at System.Net.WebHeaderCollection.Add(String header) at System.Net.HttpListenerResponse.AppendHeader(String name, String value) at System.Net.Tests.HttpListenerResponseHeadersTests.d__3 .MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() System.Net.Tests.HttpListenerResponseHeadersTests.AppendHeader_InvalidNameOrValue_ThrowsArgumentException [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.ArgumentNullException): Value cannot be null. Parameter name: header Stack Trace: at System.Net.WebHeaderCollection.Add(String header) at System.Net.HttpListenerResponse.AppendHeader(String name, String value) at System.Net.Tests.HttpListenerResponseHeadersTests.<>c__DisplayClass5_0.b__0() ``` I have a fix and will submit it with tests" +20162 area-System.Net [porting bug] HttpListenerResponse crashes with NRE sending any cookies "The following snippet runs to completion with netfx but crashes with NRE with netcoreapp: ```cs public static IEnumerable Cookies_TestData() { yield return new object[] { new CookieCollection() { new Cookie(""name"", ""value"") } }; } [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [MemberData(nameof(Cookies_TestData))] public async Task Cookies_SetAndSend_ClientReceivesExpectedHeaders(CookieCollection cookies) { HttpListenerResponse response = await GetResponse(); response.Cookies = cookies; response.Close(); } ``` Here's the stack trace: ``` System.Net.Tests.HttpListenerResponseCookiesTests.Cookies_SetAndSend_ClientReceivesExpectedHeaders(cookies: [$Vers ion=1; name2=value2; $Port=\""300\""]) [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Net.CookieExtensions.ToServerString(Cookie cookie) at System.Net.HttpListenerResponse.ComputeCookies() at System.Net.HttpListenerResponse.ComputeCoreHeaders() at System.Net.HttpListenerResponse.ComputeHeaders() at System.Net.HttpResponseStream.ComputeLeftToWrite() at System.Net.HttpResponseStream.DisposeCore() at System.Net.HttpResponseStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Net.HttpListenerResponse.Dispose() at System.Net.HttpListenerResponse.System.IDisposable.Dispose() at System.Net.HttpListenerResponse.Close() at System.Net.Tests.HttpListenerResponseCookiesTests.d_ _2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() ``` I have a fix which I'll submit with tests" +20163 area-System.Net Various tests now failing on Windows with Unexpected async error in WinHttpRequestCallback: 12007, WinHttp API: 5 "example (affects various libraries) https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170523.02/workItem/System.Xml.XmlSchemaSet.Tests/wilogs ```c# Debug.Assert((unchecked((uint)asyncResult.dwResult.ToInt32()) != Interop.WinHttp.API_SEND_REQUEST && ((unchecked((uint)asyncResult.dwResult.ToInt32()) != Interop.WinHttp.API_RECEIVE_RESPONSE) || (asyncResult.dwError == Interop.WinHttp.ERROR_WINHTTP_RESEND_REQUEST) || (asyncResult.dwError == Interop.WinHttp.ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED) || (asyncResult.dwError == Interop.WinHttp.ERROR_WINHTTP_OPERATION_CANCELLED))), $""Unexpected async error in WinHttpRequestCallback: {unchecked((int)asyncResult.dwError)}, WinHttp API: {unchecked((uint)asyncResult.dwResult.ToInt32())}"" ); ``` 12007 = ERROR_WINHTTP_NAME_NOT_RESOLVED 5 = API_SEND_REQUEST ``` 2017-05-23 03:31:19,641: INFO: proc(54): run_and_log_output: Output: Discovered: System.Xml.XmlSchemaSet.Tests 2017-05-23 03:31:19,766: INFO: proc(54): run_and_log_output: Output: Starting: System.Xml.XmlSchemaSet.Tests 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: FailFast: Unexpected async error in WinHttpRequestCallback: 12007, WinHttp API: 5 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Environment.FailFast(System.String, System.Exception) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Net.Http.WinHttpRequestCallback.OnRequestError(System.Net.Http.WinHttpRequestState, WINHTTP_ASYNC_RESULT) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr, System.Net.Http.WinHttpRequestState, UInt32, IntPtr, UInt32) 2017-05-23 03:31:21,963: INFO: proc(54): run_and_log_output: Output: at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr, IntPtr, UInt32, IntPtr, UInt32) 2017-05-23 03:31:22,040: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time= 3:31:22.04, Exit code = -2146232797 ``` @stephentoub this appears to be your recently added assert. Not sure whether assert is the problem though" +20164 area-System.Net "[porting bug] WebHeaderCollection.Add(null, ""value"") throws NRE in netcoreapp, ArgumentNullException in netfx`" "```cs [Fact] public void Add_NullName_ThrowsArgumentNullException() { var headers = new WebHeaderCollection(); Assert.Throws(""name"", () => headers.Add(null, ""value"")); } ``` This causes some HttpListener tests to fail after I've fixed #20161 I have a fix and will submit a PR" +20165 area-System.Net [HttpListener] [Managed] Enable HttpListenerResponse cookie tests Following tests are disabled with this issue: - Cookies_SetCookie2InHeadersButNotInCookies_RemovesFromHeaders - Cookies_SetAndSend_ClientReceivesExpectedHeaders - Cookies_SetInHeader_ClientReceivesExpectedHeaders +20166 area-System.Net Delete a wrong assert in WinHTTPRequestCallback fix #20163 +20167 area-System.Net Add HttpListenerResponse cookie and header tests Contributes to #13618 Fixes #20162 Fixes #20161 Fixes #20160 Fixes #20159 +20169 area-System.Net Fix argument validation for WebHeaderCollection.Add Fixes #20164 Tests pass with netfx and netcoreapp +20170 area-Infrastructure "dumpling ""unable to find tooling""" "Some bad spelling (I should know) but also it's an error message. @mellinoe ? https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug_prtest/93/consoleText ``` processing dump file C:\Users\DOTNET~1\AppData\Local\Temp\CoreRunCrashDumps\dotnet.exe.7904.dmp uncompressed file size: 81880 Kb compressed file size: 27474 Kb creating dumpling dump 85fde065929e25e73ed7e1a9b257aa3f7e1c6748 url: https://dumpling.azurewebsites.net/api/dumplings/create?displayname=System.Net.WebClient.Tests&hash=85fde065929e25e73ed7e1a9b257aa3f7e1c6748&user=dotnet-bot response: uploading artifact 85fde065929e25e73ed7e1a9b257aa3f7e1c6748 dotnet.exe.7904.dmp url: https://dumpling.azurewebsites.net/api/dumplings/uploads?hash=85fde065929e25e73ed7e1a9b257aa3f7e1c6748&localpath=C%3A%5CUsers%5CDOTNET%7E1%5CAppData%5CLocal%5CTemp%5CCoreRunCrashDumps%5Cdotnet.exe.7904.dmp response: url: https://dumpling.azurewebsites.net/api/dumplings/85fde065929e25e73ed7e1a9b257aa3f7e1c6748/properties data: { ""CLIENT_ARCHITECTURE"": ""AMD64"", ""CLIENT_NAME"": ""win2012-fae2b0"", ""CLIENT_OS"": ""Windows"", ""CLIENT_PROCESSOR"": ""Intel64 Family 6 Model 63 Stepping 2, GenuineIntel"", ""CLIENT_RELEASE"": ""2012ServerR2"", ""CLIENT_VERSION"": ""6.3.9600"", ""STRESS_TESTID"": ""System.Net.WebClient.Tests"" } response: unable to find necissary debugger and triage tooling, please ensure these componenets are intalled dumplingid: 85fde065929e25e73ed7e1a9b257aa3f7e1c6748 https://dumpling.azurewebsites.net/api/dumplings/archived/85fde065929e25e73ed7e1a9b257aa3f7e1c6748 ```" +20171 area-System.Runtime Is it possible for Random class to has arbitrary size seed constructor? I have a system that use number larger than int as a random seed in another language. When I port my code to C# the old data cannot pass it's seed to random class without hashing that number So I wish we could have more option for generate a seed to random class. Maybe arbitrary byte array would be great. Is it possible? +20172 area-Infrastructure CI jobs are succeeding despite FailFasts Eg https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/8272/ failed in 5 libraries but it shows as success. this means the PR succeds and the failure hits outer loop runs. It seems that the return code is 0 .. and no doubt CI relies on it not being 0. ``` total elapsed time 0:00:26.004000 Trying to find crash dumps for project: System.Xml.RW.XmlReader.Tests Uploading dump file: C:\Users\DOTNET~1\AppData\Local\Temp\CoreRunCrashDumps\dotnet.exe.5644.dmp Finished running tests. End time=13:30:49.34, Exit code = 0 ``` Repro: Just do `Debug.Assert(false)` and run it through CI. +20173 area-System.Threading SleepTest failed on ubuntu 17.04 https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170523.01/workItem/System.Threading.Thread.Tests/analysis/xunit/System.Threading.Threads.Tests.ThreadTests~2FSleepTest ``` c# [Fact] public static void SleepTest() { ... var startTime = DateTime.Now; Thread.Sleep(500); Assert.True((DateTime.Now - startTime).TotalMilliseconds >= 100); <<<<<<<<<<< } ``` ``` Assert.True() Failure\nExpected: True\nActual: False Stack Trace : at System.Threading.Threads.Tests.ThreadTests.SleepTest() in /root/corefx/src/System.Threading.Thread/tests/ThreadTests.cs:line 773 ``` @stephentoub this should be using a stopwatch. But given the daylight savings did not change, can you think of why this might fail? I thought that sleeping X msec was guaranteed to cause you to sleep no less than X msec. +20176 area-System.Net "[HttpListener] Test failure: System.Net.Tests.HttpListenerRequestTests/ContentEncoding_GetProperty_ReturnsExpected failed with ""System.Net.HttpListenerException""" "Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerRequestTests/ContentEncoding_GetProperty_ReturnsExpected(header: \""Content-Type:application.json;charset;\"", expected: UTF8EncodingSealed { BodyName = \""utf-8\"", C...` has failed. System.Net.HttpListenerException : Too many open files in system Stack Trace: at System.Net.HttpEndPointManager.GetEPListener(String host, Int32 port, HttpListener listener, Boolean secure, Boolean& alreadyExists) at System.Net.HttpEndPointManager.RemovePrefixInternal(String prefix, HttpListener listener) at System.Net.HttpEndPointManager.RemoveListener(HttpListener listener) at System.Net.HttpListener.Close(Boolean force) at System.Net.HttpListener.Dispose() at System.Net.HttpListener.Close() at System.Net.Tests.HttpListenerRequestTests.d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerRequestTests.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : 2.0.0 - 20170523.01 (Portable Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170523.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerRequestTests~2FContentEncoding_GetProperty_ReturnsExpected(header:%20%5C%22Content-Type:application.json;charset;%5C%22,%20expected:%20UTF8EncodingSealed%20%7B%20BodyName%20=%20%5C%22utf-8%5C%22,%20C..." +20177 area-System.Net Libcurl segfault when using httpclient We are getting an issue running our netcore 1.1 app on centos 7 where we get a libcurl segfault. The generated core dump gave the following stack trace: ``` (gdb) bt #0 0x00007f4b4e5bc28d in addbyter () from /lib64/libcurl.so.4 #1 0x00007f4b4e5bc649 in dprintf_formatf () from /lib64/libcurl.so.4 #2 0x00007f4b4e5bd8a5 in curl_mvsnprintf () from /lib64/libcurl.so.4 #3 0x00007f4b4e5ac94e in Curl_failf () from /lib64/libcurl.so.4 #4 0x00007f4b4e5a2f17 in Curl_resolv_timeout () from /lib64/libcurl.so.4 #5 0x00007f4b527b3bd0 in ?? () #6 0x00007f4b527b3a70 in ?? () #7 0x00007f4b50041e28 in ?? () ``` Reading up on this error https://curl.haxx.se/mail/lib-2013-05/0079.html or https://curl.haxx.se/mail/lib-2014-01/0098.html it seems that it has something to do with curl and multi threading and can be solved by setting CURLOPT_NOSIGNAL to 1 however the netcore code seems to be doing that here https://github.com/dotnet/corefx/blob/release/1.1.0/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs#L261 so I am confused at how my netcore app could be running into this issue. +20178 area-System.Console Console.ReadLine() throws on CentOS my testConsole publish on the centos server, the console last line code is Console.ReadLine(); nohup dotnet xxx.dll & the console throw excetption: System.UnauthorizedAccessException: Access to the path is denied. - please help me ! I need help. how can do it +20179 area-System.Data System.Data: ManagedSNI still requires sni.dll "If I set `TdsParserStateObjectFactory.UseManagedSNI = true` (on Windows it's currently [false by default](https://github.com/dotnet/corefx/pull/19084) and always `true` for unix) I assume SqlClient with ManagedSNI will use `TdsParserStateObjectManaged` instead of `TdsParserStateObjectNative` so I will not have to care about the **sni.dll**, but even with ManagedSNI it calls `[DllImport(""sni.dll"")] SNIInitialize(IntPtr)`. If I remove this call - my simple SqlClient tests (open a connection, execute some query, etc..) will pass without the **sni.dll**. So the question is - what **sni.dll** is used for on Windows+ManagedSNI and can we just wrap it like this. ```csharp internal static uint SNIInitialize() { return SNIInitialize(IntPtr.Zero); } ``` TO: ```csharp internal static uint SNIInitialize() { try { return SNIInitialize(IntPtr.Zero); } catch (DllNotFoundException) { return TdsEnums.SNI_UNINITIALIZED; } } ```" +20180 area-System.Net [documentation] WebHeaderCollection.Add(new string('a', 65536)) does not throw as documented "From https://msdn.microsoft.com/en-us/library/y280s7kx(v=vs.110).aspx > ArgumentOutOfRangeException | The length of value is greater than 65535. From #20169: ```cs public static IEnumerable Add_Value_TestData() { string longString = new string('a', 65536); yield return new object[] { longString, longString } } [Theory] [MemberData(nameof(Add_Value_TestData))] public void Add_ValidValue_Success(string value, string expectedValue) { var headers = new WebHeaderCollection { { ""name"", value } }; Assert.Equal(expectedValue, headers[""name""]); } ```" +20183 area-System.Net Fix some HttpListener tests for netfx Contributes to #19967 The remaining HttpListener test failure is in the encoding of QueryString. It looks like the query string `?name1=+&name2=\u1234&\u0100=value&name3=\u00FF` is encoded differently in netfx and netcoreapp. I couldn't quite figure this out so I left it out of this PR. It looks like the listener is actually receiving different content from the connected socket as the value of `_cookedUrlQuery/m_CookedUrlQuery` in HttpListenerRequest is different between netfx and netcoreapp. +20184 area-System.Net Fix ContentLength64, SendChunk, and KeepAlive in managed HttpListener Fixes https://github.com/dotnet/corefx/issues/19973 Fixes https://github.com/dotnet/corefx/issues/19978 For the most part, this just moves functionality from the Windows implementation to be shared, deleting the managed counterpart. In some cases, in particular around the handling of content length, this resulted in more changes through the HttpListenerResponse managed implementation, as various places check for content length vs chunked behaviors. The Windows implementation has not changed (other than some of its functions moving to be in the shared file). As part of this, I fixed a few other differences I noted even though they weren't causing tests to fail, e.g. doing an asynchronous write in Close when willBlock is false. cc: @janvorli, @hughbe, @Priya91, @geoffkizer +20185 area-Microsoft.CSharp Fix newly added Microsoft.CSharp tests on ILC +20186 area-System.Threading change Sleep test to use InRange to see value relates to https://github.com/dotnet/corefx/issues/20173 +20187 area-Infrastructure Add win-arm and win-arm64 to RID graph. "We don't have `win-arm` and `win-arm64` ""portable"" RIDs in our graph. Thus, when trying to use RIDs like `win10-arm` in a self-contained app, no assets are getting selected. Fix https://github.com/dotnet/sdk/issues/1239. @gkhanna79 @ericstj " +20188 area-System.Net release/2.0: Add more tracing to HttpClient on Unix Port https://github.com/dotnet/corefx/pull/20095 to release/2.0.0 +20189 area-System.Net Remove asynchrony from many HttpListener tests Contributes to #20103 @stephentoub PTAL (best reviewed without whitespace for the first commit) +20190 area-Infrastructure Add win-arm and win-arm64 to RID graph. "Porting https://github.com/dotnet/corefx/pull/20187 to `release/2.0.0`. We don't have win-arm and win-arm64 ""portable"" RIDs in our graph. Thus, when trying to use RIDs like win10-arm in a self-contained app, no assets are getting selected. Fix dotnet/sdk#1239. @gkhanna79 @ericstj" +20191 area-System.Net ClientWebSocket client certificate not working with .NET Core "Using the ClientWebSocket to establish a secure WebSocket connection with client certificates. The project is targeting `netcoreapp1.1`. With the following code, the `ConnectAsync` throws an exception: `WinHttpException: A certificate is required to complete client authentication`. When changing the TFM to `net461` the connection is successfully established. I removed the template id of the certificate for security reasons. ```csharp ClientWebSocket client = new ClientWebSocket(); X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); var cert = store.Certificates.Find(X509FindType.FindByTemplateName, """", true); client.Options.ClientCertificates = new X509CertificateCollection(); client.Options.ClientCertificates.Add(cert[0]); client.ConnectAsync(new Uri(""wss://localhost:44301/path""), CancellationToken.None).Wait(); ``` " +20192 area-Infrastructure Remove win10 jobs that depend on deprecated functionality The Win10 images are no longer working (they were a pre-release version of Win Server 2016). The Win10 functionality is now available in the new Portable builds. Remove these old jobs for now (they get queued and never run) See #20107 +20193 area-System.Net Disable some System.Net.* tests for ILC Disables tests for: 1. API Not Implemented for Uap by design 2. Tests that do white box testing and reflect on internal type cc: @tijoytom +20195 area-Infrastructure Testing CI system for crashing a test actually failing CI Testing for https://github.com/dotnet/corefx/issues/20172 +20197 area-Meta IsInAppContainer & IsNetNative reliability increased Fixes https://github.com/dotnet/corefx/issues/19931 +20199 area-System.Net Test System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_HttpTracingEnabled_Succeeds failing The outerrun test System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_HttpTracingEnabled_Succeeds is failing with ``` MESSAGE: Assert.Equal() Failure\nExpected: 42\nActual: 134 +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_debian8.4_release/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 208 ``` It looks like a recent regression. It is likely failing on all Linux distros but currently just these are failing (probably because they ran recently): - Debian 8 Release - openSUSE 42.1 Release - Red Hat 7.2 Debug - Ubuntu 16.10 Debug - PortableLinux Debug +20200 area-System.Net Disable more System.Net.HttpListener tests and fix some net47 specific Crypto tests Contributes to: #18483 Tests marked as [ConditionalTheory/Fact] cc: @danmosemsft @bartonjs @stephentoub +20201 area-System.Net HttpListener on Unix doesn't track amount of data written to output stream The Windows implementation tracks how much data has been written to the output stream, and throws when trying to write more data than ContentLength64 specified. The managed implementation doesn't do such tracking. This means that it's possible for misuse that on Windows would result in an InvalidOperationException to go without an exception on Unix, the net result being more data written than should have been, but still doing what the code asked it to do. +20202 area-System.Net ETW collection helper scripts. Adding these scripts as a quick way to collect all System.Net ETW traces. +20203 area-Serialization Set DefaultNameSpace be empty string When the serializer was loaded from pregenerated assembly, the DefaultNameSpace of the mapping is null. It should be the empty string. Fix #19729 @shmao @zhenlan @mconnew +20204 area-System.Diagnostics Quasi-support ShellExec for UWP We didn't ask for ShellExecuteEx to be added to the WACK so for UWP we should make some attempt to use Windows.System.Launcher and if it fails fall back to Process.Start. That ought to give us at least URL support. @JeremyKuhne +20208 area-System.Net System.Net.NameResolution for UWP 1. Unifying Windows implementations (remove dependency on WinRT API) 2. No failing test on this namespace (including outerloop tests) Contribute to #20139 +20209 area-System.Net Adding UAP target to System.Net.Primtives tests Using the new ActiveIssue UAP option to disable the test. Re: #20007 +20210 area-Meta Port 2.0: Prep tests for CoreCLR/CoreRT [Serializable] cleanup (#20035) 2.0 port of #20035 Fixes tests that depend on types in System.Private.CoreLib being serializable that won't be serializable soon. Fixes https://github.com/dotnet/corefx/issues/20041. +20211 area-Infrastructure "Add a ""GenerateReferenceSource"" target and add four ref assembly projects." The GenerateReferenceAssembly target can be run as a manual step on a project. When run, it produces a source code file .cs, in the reference assembly folder for the library. This source file can be used to compile an equivalent reference assembly. Use the target to generate reference assemblies for the following libraries: * System.Collections.Immutable * System.Reflection.Metadata * System.Threading.Tasks.Dataflow * System.Threading.Tasks.Extensions This will cut a chunk out of the total size of the reference assemblies we are shipping. This is part of https://github.com/dotnet/corefx/issues/14291. @ericstj @weshaggard +20212 area-System.Net UWP Cleanup: Remove common unreferenced UAP PAL files Tracking common UAP PAL files that need to be removed when they are not referenced by any contract: - [X] HostInformationPal.Uap.cs - [x] ContextAwareResult.Uap.cs - [x] CompletionPortHelper.Uap.cs +20214 area-System.Security System.Security.Cryptography.Cng.ImportExport tests fail in Desktop This tests are conditioned through `ConditionalFact` where they will run if the current running framework is 4.6.2 or newer as this was supposed to be fixed in that version of the framework: https://github.com/dotnet/corefx/issues/19041#issuecomment-297855354 They are failing with: ``` System.Security.Cryptography.Rsa.Tests.ImportExport.LargeKeyImportExport [FAIL] System.Security.Cryptography.CryptographicException : The requested operation is not supported. Stack Trace: at System.Security.Cryptography.NCryptNative.ExportKey(SafeNCryptKeyHandle key, String format) at System.Security.Cryptography.CngKey.Export(CngKeyBlobFormat format) at System.Security.Cryptography.RSACng.ExportParameters(Boolean includePrivateParameters) D:\repos\corefxCopy\corefx\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs(95,0): at System.Security.Cryptography.Rsa.Tests.ImportExport.LargeKeyImportExport() ``` cc: @bartonjs @ianhays @steveharter +20216 area-System.Diagnostics Add ShellEx support for Windows & fix issues Adds ShellExecute support for Windows (outside of UAP). Unlike desktop UseShellExecute is not the default. In the process of doing this I ran across two issues (covered by the new tests): 1- The owned process handle would be disposed after hitting members on Process. Getting the ProcessName, for example, would cause a closed handle exception on the next call that used the handle. 2- The MainWindowTitle import wasn't set to the right charset. In addition the allocated buffer size wasn't correct. Fixed and added debug checks for failed api calls. See issue #18949 +20217 area-System.Globalization Debian9 baseline incorrect for glob test https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170524.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoNumberGroupSizes~2FNumberGroupSizes_Get(format:%20NumberFormatInfo%20%7B%20CurrencyDecimalDigits%20=%202,%20CurrencyDecimalSeparator%20=%20%5C%22.%5C%22,%20CurrencyGroupSeparator%20... ``` Assert.Equal() Failure\nExpected: Int32[] [3, 2]\nActual: Int32[] [3] Stack Trace : at System.Globalization.Tests.NumberFormatInfoNumberGroupSizes.NumberGroupSizes_Get(NumberFormatInfo format, Int32[] expected) in /root/corefx/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSizes.cs:li ``` +20218 area-System.Globalization Fix debian9 failure by updating baseline Fix https://github.com/dotnet/corefx/issues/20217 +20219 area-System.Net SendAsync_HttpTracingEnabled_Succeeds failing consistently on Unix On many distros. eg https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/lastCompletedBuild/testReport/System.Net.Http.Functional.Tests/DiagnosticsTest/SendAsync_HttpTracingEnabled_Succeeds/ ``` MESSAGE: Assert.Equal() Failure\nExpected: 42\nActual: 134 +++++++++++++++++++ STACK TRACE: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 219 at System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_HttpTracingEnabled_Succeeds() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs:line 174 ``` @karelz +20221 area-System.Net Fix HttpListener product typo causing test failures with netfx Fixes #20098 Contributes to #19967 +20223 area-System.Net Tests failed: System.Net.Sockets.Tests.DnsEndPointTest / * ## Type of failures Affected tests: * Socket_StaticConnectAsync_HostNotFound * Socket_StaticConnectAsync_Success * Socket_StaticConnectAsync_ConnectionRefused * Socket_ConnectAsyncDnsEndPoint_HostNotFound * Socket_ConnectAsyncDnsEndPoint_Success (CI only) * Socket_ConnectAsyncDnsEndPoint_SetSocketProperties_Success (CI only) ### Timeout ``` Timed out while waiting for connection Expected: True Actual: False at System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_Success(SocketImplementationType type) OR at System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_ConnectionRefused() OR at System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_HostNotFound() in /root/corefx-1213655/src/System.Net.Sockets/tests/FunctionalTests/DnsEndPointTest.cs:line 373 ``` ### Assert failure Test `Socket_StaticConnectAsync_Success`: ``` Assert.True() Failure Expected: True Actual: False at System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_Success(SocketImplementationType type) in /root/corefx-1134004/src/System.Net.Sockets/tests/FunctionalTests/DnsEndPointTest.cs:line 312 ``` ## History of failures Day | Build | OS | Failure | Test -- | -- | -- | -- | -- 5/31-7/25 | N/A | Linux only | Timeout |
  • 51x Socket_StaticConnectAsync_HostNotFound
  • 4x Socket_ConnectAsyncDnsEndPoint_HostNotFound,
  • 1x Socket_StaticConnectAsync_Success
8/23 | 20170823.05 | Win10 | Timeout | Socket_StaticConnectAsync_Success 8/24 | 20170824.03 | Win8.1 | Timeout | Socket_StaticConnectAsync_ConnectionRefused 9/10 | 20170910.02 | Win10 | Timeout | Socket_StaticConnectAsync_Success 9/14 | 20170914.01 | Win7 | Timeout | Socket_StaticConnectAsync_Success 11/13 | 20171113.01 | Centos73 | Assert failure | Socket_StaticConnectAsync_Success 12/3 | 20171203.01 | RedHat73 | Assert failure | Socket_StaticConnectAsync_Success 12/11 | 20171211.05 | Fedora25 | Timeout | Socket_StaticConnectAsync_HostNotFound 12/23 | 20171223.02 | OSX10.12 | Timeout | Socket_StaticConnectAsync_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171223.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DnsEndPointTest~2FSocket_StaticConnectAsync_Success(type:%20APM)) 1/5 | 20180105.01 | Win7 | Timeout | Socket_ConnectAsyncDnsEndPoint_HostNotFound - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180105.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DnsEndPointTest~2FSocket_ConnectAsyncDnsEndPoint_HostNotFound) 1/5 | 20180105.01 | Win7 | Timeout | Socket_StaticConnectAsync_HostNotFound - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180105.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DnsEndPointTest~2FSocket_StaticConnectAsync_HostNotFound) 1/9 | 20180109.01 | Win7 | Timeout | Socket_StaticConnectAsync_ConnectionRefused - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180109.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DnsEndPointTest~2FSocket_StaticConnectAsync_ConnectionRefused) 3/5 | 20180305.02 | Fedora26 | Assert failure | Socket_StaticConnectAsync_Success 3/6 | 20180306.01 | Win7 | Timeout | Socket_StaticConnectAsync_Success 3/6 | 20180306.01 | Win7 | Timeout | Socket_StaticConnectAsync_Success 3/8 | 20180308.06 | Fedora26 | Timeout | Socket_StaticConnectAsync_HostNotFound 3/21 | 20180321.05 | Win7 | Timeout | Socket_StaticConnectAsync_Success # Original report Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.DnsEndPointTest/Socket_StaticConnectAsync_HostNotFound` has failed. ``` Timed out while waiting for connection Expected: True Actual: False at System.Net.Sockets.Tests.DnsEndPointTest.Socket_StaticConnectAsync_HostNotFound() in /root/corefx/src/System.Net.Sockets/tests/FunctionalTests/DnsEndPointTest.cs:line 373 ``` Build : Master - 20170524.01 (Portable Core Tests) Failing configurations: - suse.422.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170524.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DnsEndPointTest~2FSocket_StaticConnectAsync_HostNotFound +20225 area-Infrastructure Tooling: msbuild /t:UpdateVSConfigurations fails with empty sequence exception "To update the solutions in the CoreFX repo after a configuration change in a props file, e.g. a platform was added for a given csproj, the command `msbuild /t:UpdateVSConfigurations` can be used (see: https://github.com/dotnet/corefx/pull/19885#issuecomment-303162997). However when I do that (as I needed to), I get the following exception: ``` C:\Myprojects\corefx>msbuild /t:UpdateVSConfigurations Microsoft (R) Build Engine version 15.1.1012.6693 Copyright (C) Microsoft Corporation. All rights reserved. Build started 23-5-2017 11:32:23. Project ""C:\Myprojects\corefx\build.proj"" on node 1 (UpdateVSConfigurations target(s)). UpdateVSConfigurations: Updating configurations for projects ... C:\Myprojects\corefx\build.proj(66,5): error MSB4018: The ""UpdateVSConfigurations"" task failed unexpectedly.\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: System.InvalidOperationException: Sequence contains no elements\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.UpdateVSConfigurations.EnsureProjectGuid(ProjectRootElement project)\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.UpdateVSConfigurations.Execute()\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() Done Building Project ""C:\Myprojects\corefx\build.proj"" (UpdateVSConfigurations target(s)) -- FAILED. Build FAILED. ""C:\Myprojects\corefx\build.proj"" (UpdateVSConfigurations target) (1) ->(UpdateVSConfigurations target) -> C:\Myprojects\corefx\build.proj(66,5): error MSB4018: The ""UpdateVSConfigurations"" task failed unexpectedly.\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: System.InvalidOperationException: Sequence contains no elements\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.UpdateVSConfigurations.EnsureProjectGuid(ProjectRootElement project)\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.UpdateVSConfigurations.Execute()\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()\r C:\Myprojects\corefx\build.proj(66,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() 0 Warning(s) 1 Error(s) Time Elapsed 00:00:00.54 ``` This is on the latest CoreFX master as of yesterday. TIA" +20226 area-System.Net "Various System.Net.HttpListener tests fail with ""IOException : Too many open files"" on OSX" Failed test: System.Net.Tests.SimpleHttpTests.UnknownHeaders_Success(numHeaders: 100) Mac OSX failure: Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170524.01/workItem/System.Net.HttpListener.Tests/wilogs ~~~ 2017-05-23 17:43:44,222: INFO: proc(54): run_and_log_output: Output: System.Net.Tests.SimpleHttpTests.UnknownHeaders_Success(numHeaders: 100) [FAIL] 2017-05-23 17:43:44,224: INFO: proc(54): run_and_log_output: Output: System.Net.Http.HttpRequestException : An error occurred while sending the request. 2017-05-23 17:43:44,224: INFO: proc(54): run_and_log_output: Output: ---- System.IO.IOException : Too many open files 2017-05-23 17:43:44,229: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-23 17:43:44,381: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:44,381: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:44,386: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs(462,0): at System.Net.Http.HttpClient.d__58.MoveNext() 2017-05-23 17:43:44,387: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:44,387: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:44,387: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:44,387: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/tests/SimpleHttpTests.cs(145,0): at System.Net.Tests.SimpleHttpTests.d__13.MoveNext() 2017-05-23 17:43:44,387: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:44,387: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:44,388: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:44,388: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:44,388: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:44,388: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:44,388: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:44,388: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:44,389: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:44,389: INFO: proc(54): run_and_log_output: Output: ----- Inner Stack Trace ----- 2017-05-23 17:43:44,389: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/Common/src/Interop/Unix/Interop.IOErrors.cs(23,0): at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-05-23 17:43:44,389: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/Common/src/Interop/Unix/Interop.IOErrors.cs(50,0): at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-05-23 17:43:44,389: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs(151,0): at System.Net.Http.CurlHandler.MultiAgent.EnsureWorkerIsRunning() 2017-05-23 17:43:44,390: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs(105,0): at System.Net.Http.CurlHandler.MultiAgent.Queue(IncomingRequest request) 2017-05-23 17:43:44,390: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs(471,0): at System.Net.Http.CurlHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) ~~~ +20227 area-System.Net "IsWebSocketRequest_GetProperty_ReturnsExpected failed with ""System.Net.HttpListenerException : Address already in use""" "Failed test: System.Net.Tests.HttpListenerRequestTests.IsWebSocketRequest_GetProperty_ReturnsExpected Mac OSX failure Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170524.01/workItem/System.Net.HttpListener.Tests/wilogs ~~~ 2017-05-23 17:43:46,078: INFO: proc(54): run_and_log_output: Output: System.Net.Tests.HttpListenerRequestTests.IsWebSocketRequest_GetProperty_ReturnsExpected(webSocketString: \""Connection: \"", expected: False) [FAIL] 2017-05-23 17:43:46,078: INFO: proc(54): run_and_log_output: Output: System.Net.HttpListenerException : Address already in use 2017-05-23 17:43:46,078: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-23 17:43:46,079: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/src/System/Net/Managed/HttpEndPointManager.cs(160,0): at System.Net.HttpEndPointManager.GetEPListener(String host, Int32 port, HttpListener listener, Boolean secure, Boolean& alreadyExists) 2017-05-23 17:43:46,079: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/src/System/Net/Managed/HttpEndPointManager.cs(213,0): at System.Net.HttpEndPointManager.RemovePrefixInternal(String prefix, HttpListener listener) 2017-05-23 17:43:46,079: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/src/System/Net/Managed/HttpEndPointManager.cs(187,0): at System.Net.HttpEndPointManager.RemoveListener(HttpListener listener) 2017-05-23 17:43:46,079: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs(161,0): at System.Net.HttpListener.Close(Boolean force) 2017-05-23 17:43:46,079: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs(147,0): at System.Net.HttpListener.Dispose() 2017-05-23 17:43:46,080: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/src/System/Net/HttpListener.cs(305,0): at System.Net.HttpListener.Close() 2017-05-23 17:43:46,080: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/tests/HttpListenerRequestTests.cs(613,0): at System.Net.Tests.HttpListenerRequestTests.d__31.MoveNext() 2017-05-23 17:43:46,080: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:46,080: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:46,080: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:46,081: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/31/s/corefx/src/System.Net.HttpListener/tests/HttpListenerRequestTests.cs(205,0): at System.Net.Tests.HttpListenerRequestTests.d__12.MoveNext() 2017-05-23 17:43:46,081: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:46,081: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:46,081: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:46,081: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:46,081: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:46,082: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-23 17:43:46,082: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-23 17:43:46,082: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-23 17:43:46,082: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~" +20228 area-System.Net [HttpListener] [Managed] HttpListener.GetContext should not succeed for invalid requests The following headers give HTTP listener a context with the managed implementation but not in Windows - `GET {path} HTTP/2.2` - `GET {path} HTTP/2.0` - `GET {path} HTTP/3.0` I'm submitting a PR with tests +20229 area-System.Net [HttpListener] [Managed] HttpListener.GetContext should fail if Content-Length is specified twice with different values Following request gives HttpListener a context with the managed implementation but not on Windows. Note that Windows gets a context if the content-length is the same: ``` GET /path HTTP/1.1 Content-Length: 1 Content-Length: 2 ``` I'm submitting a PR with tests +20230 area-System.Net [HttpListener] [Managed] HttpListener.GetContext should return 404 not found if the path doesn't exist The following requests get a 404 Not Found in the Windows implementation but 400 Bad Request in the managed implementation: - `GET /something/{path} HTTP/1.1` - `GET /{path}/../ HTTP/1.1` I am submitting a PR with tests for this +20231 area-System.Net [HttpListener] [Managed] Duplicate transfer-encoding in the client's request should return 501 Not Implemented Following request gives HttpListener a context with the managed implementation but not on Windows. This causes a 501 Not Implemented on Windows but passes with the managed implementation: ``` GET /path HTTP/1.1 Transfer-Encoding: chunked Transfer-Encoding: chunked ``` I'm submitting a PR with tests +20232 area-System.Net [HttpListener] [Managed] positive overflow of Content-Length should set HttpListenerRequest.ContentLength64 to zero The following request hangs with the managed implementation but works with the Windows implementation: ``` GET {path} HTTP/1.1 Content-Length: 9223372036854775807 ``` I'm submitting a PR with tests +20234 area-System.Collections Provide consistent support for null elements in immutable sets Provide consistent support for null elements in ImmutableHashSet and ImmutableSortedSet. Fix #15403 Previously, ImmutableHashSet rejected nulls via some entry points (e. g. Add()) but allowed them via others (e. g. Union()), while ImmutableSortedSet rejected all nulls. The mutable counterparts HashSet and SortedSet both permit null elements. +20235 area-System.Net Fix off-by-one error in NetEventSource.WriteEvent Fixes https://github.com/dotnet/corefx/issues/20199 cc: @janvorli, @steveharter +20236 area-System.Net release/2.0: Fix off-by-one error in NetEventSource.WriteEvent Port #20235 to release/2.0.0 branch. cc: @janvorli, @steveharter Fixes #20199 +20237 area-System.Net [HttpListener] [Managed] Implement HttpListenerRequest.RequestTraceIdentifier "``` [ConditionalFact(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] public async Task RequestTraceIdentifier_GetWindows_ReturnsExpected() { await GetRequest(""POST"", null, null, (_, request) => { Assert.NotEqual(Guid.Empty, request.RequestTraceIdentifier); }); } [ConditionalFact(nameof(Helpers) + ""."" + nameof(Helpers.IsNotWindowsImplementation))] // [ActiveIssue public async Task RequestTraceIdentifier_GetUnix_ReturnsExpected() { await GetRequest(""POST"", null, null, (_, request) => { Assert.Equal(Guid.Empty, request.RequestTraceIdentifier); }); } ``` Suggested in https://github.com/dotnet/corefx/pull/20233" +20238 area-System.Net [HttpListener] [Managed] HttpListenerRequest should throw an InvalidOperationException calling certificate APIs after not finishing `BeginGetClientCertificate` "```cs [ConditionalFact(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] public async Task ClientCertificateError_GetWhileGettingCertificate_ThrowsInvalidOperationException() { await GetRequest(""POST"", null, null, (_, request) => { request.BeginGetClientCertificate(null, null); Assert.Throws(() => request.ClientCertificateError); Assert.Throws(() => request.BeginGetClientCertificate(null, null)); Assert.Throws(() => request.GetClientCertificate()); }); } ```" +20239 area-System.Net [HttpListener] [Managed] Implement HttpListenerRequest.TransportContext.GetChannelBinding "```cs [ConditionalFact(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] public async Task TransportContext_GetChannelBinding_ReturnsExpected() { // This might not work on other devices: // ""The Security Service Providers don't support extended protection. Please install the // latest Security Service Providers update."" await GetRequest(""POST"", null, null, (_, request) => { Assert.Null(request.TransportContext.GetChannelBinding(ChannelBindingKind.Endpoint)); }); } [ConditionalTheory(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] // [ActiveIssue( [InlineData(ChannelBindingKind.Unique)] [InlineData(ChannelBindingKind.Unique)] public async Task TransportContext_GetChannelBindingInvalid_ThrowsNotSupportedException(ChannelBindingKind kind) { await GetRequest(""POST"", null, null, (_, request) => { Assert.Throws(() => request.TransportContext.GetChannelBinding(kind)); }); } ```" +20240 area-System.Net [managed bug] Implement HttpListenerRequest.TransportContext.GetChannelBinding "```cs [ConditionalFact(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] public async Task TransportContext_GetChannelBinding_ReturnsExpected() { // This might not work on other devices: // ""The Security Service Providers don't support extended protection. Please install the // latest Security Service Providers update."" await GetRequest(""POST"", null, null, (_, request) => { Assert.Null(request.TransportContext.GetChannelBinding(ChannelBindingKind.Endpoint)); }); } [ConditionalTheory(nameof(Helpers) + ""."" + nameof(Helpers.IsWindowsImplementation))] // [ActiveIssue( [InlineData(ChannelBindingKind.Unique)] [InlineData(ChannelBindingKind.Unique)] public async Task TransportContext_GetChannelBindingInvalid_ThrowsNotSupportedException(ChannelBindingKind kind) { await GetRequest(""POST"", null, null, (_, request) => { Assert.Throws(() => request.TransportContext.GetChannelBinding(kind)); }); } ```" +20242 area-System.Memory [API Change] Extension AsSpan(this string text) -> AsReadOnlySpan(this string text) From #18420 Extension change to match other ReadOnlySpan return methods ```csharp public static ReadOnlySpan AsSpan(this string text); ``` to ```csharp public static ReadOnlySpan AsReadOnlySpan(this string text); ``` +20243 area-System.Memory AsReadOnlySpan extension method additions Api Proposal #18420 @jkotas @karelz +20244 area-System.Security Question: ClaimTypes and Schema URIs File in question: https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/security/claims/ClaimTypes.cs If I want to create some custom claim types and I want to keep to the same formatting and code style as in this file, then is there a place where all possible (already created) URIs are listed? For example, is there one for DisplayName or userPrincipleName in active directory? There are just examples. I just want to make sure that I am writing good clean code instead of just using some obscure value for these properties. Thanks! +20245 area-System.Net Test failures: System.Net.NameResolution.PalTests.NameResolutionPalTests / GetHostByName_HostName & TryGetAddrInfo_HostName ## Types of failures Affected tests: * GetHostByName_HostName * TryGetAddrInfo_HostName ### TryGetAddrInfo_HostName `TryGetAddrInfo_HostName` test in build 20171203.01 (same for OSX and Linux): ``` Assert.Equal() Failure Expected: Success Actual: HostNotFound at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName() in /Users/buildagent/agent/_work/320/s/corefx/src/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs:line 129 ``` ### GetHostByName_HostName The error is: * OSX - Device not configured * Linux - No such device or address (same callstack) `GetHostByName_HostName` test in build 20171203.01 (OSX): ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Device not configured at System.Net.NameResolutionPal.GetHostByName(String hostName) in /Users/buildagent/agent/_work/320/s/corefx/src/System.Net.NameResolution/src/System/Net/NameResolutionPal.Unix.cs:line 157 at System.Net.NameResolution.PalTests.NameResolutionPalTests.GetHostByName_HostName() in /Users/buildagent/agent/_work/320/s/corefx/src/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs:line 53 ``` ## History of failures Note: The tests always both fail - maybe bad setup? Day | Build | OS | Test -- | -- | -- | -- 9/5 | 20170905.02 | Debian90 | GetHostByName_HostName & TryGetAddrInfo_HostName 9/10 | 20170910.01 | Ubuntu14.04 | GetHostByName_HostName & TryGetAddrInfo_HostName 9/15 | 20170915.02 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 9/16 | 20170916.02 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 9/20 | 20170920.03 | Debian90 | GetHostByName_HostName & TryGetAddrInfo_HostName 9/27 | 20170927.01 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 9/27 | 20170927.02 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/2 | 20171002.01 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/3 | 20171003.01 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/3 | 20171003.02 | Debian90 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/9 | 20171009.04 | SLES12 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/23 | 20171020.52 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/25 | 20171025.07 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 10/26 | 20171026.01 | Debian87 | GetHostByName_HostName & TryGetAddrInfo_HostName 11/16 | 20171116.01 | OSX10.12 | GetHostByName_HostName & TryGetAddrInfo_HostName 11/16 | 20171116.02 | Suse42.2 | GetHostByName_HostName & TryGetAddrInfo_HostName 12/3 | 20171203.01 | OSX10.12 | GetHostByName_HostName & TryGetAddrInfo_HostName # Original report This is in 2.0 on Ubuntu 1604. https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170524.02/workItem/System.Net.WebProxy.Tests/analysis/xunit/System.Net.Tests.WebProxyTest~2FBypassOnLocal_MatchesExpected ``` Unhandled Exception of Type System.Net.Internals.SocketExceptionFactory+ExtendedSocketException Message : System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace : at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 46 at System.Net.Dns.ResolveCallback(Object context) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 290 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 420 at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) in /root/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 562 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() in /root/corefx/src/System.Linq/src/System/Linq/Select.cs:line 133 ``` +20246 area-System.Net [HttpListener] Hang of System.Net.HttpListener.Tests in CI "https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_debug_prtest/8257/consoleFull#130661499679494335-f7bd-47d0-8771-8661e00c2db2 ``` 22:05:43 Finished running tests. End time=05:05:43. Return value was 0 23:44:38 Build timed out (after 120 minutes). Marking the build as aborted. 23:44:38 Build was aborted 23:44:38 [xUnit] [INFO] - Starting to record. 23:44:38 [xUnit] [INFO] - Processing xUnit.Net-v2 (default) 23:44:38 MSBUILD : error MSB4166: Child node ""2"" exited prematurely. Shutting down. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt. 23:44:38 [xUnit] [INFO] - [xUnit.Net-v2 (default)] - 155 test report file(s) were found with the pattern 'bin/**/testResults.xml' relative to '/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest' for the testing framework 'xUnit.Net-v2 (default)'. 23:44:38 /mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/Tools/tests.targets(345,5): warning MSB5021: ""sh"" and its child processes are being terminated in order to cancel the build. [/mnt/j/workspace/dotnet_corefx/master/ubuntu14.04_debug_prtest/src/System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj] 23:44:39 Command execution failed with exit code 143. ``` Not actionable based on this information, but starting an issue." +20247 area-System.Runtime Add tests for reflection based serialization of coretypes "Relates to https://github.com/dotnet/corefx/issues/19119 ### Follow up work - 100% Core <--> Netfx serialization support - Adding ValueTuples netfx471 hashes - Renaming ""binary serialization"" comment to just ""serialization"" in coreclr and corefx. - Refine DataTable and DataSet equality comparison - Assert.Fail instead of exceptions" +20250 area-Infrastructure Enable portable pipelines by default in CI "* Enable the portable innerloop pipelines by default * Modify the pipelines so that they access incoming parameters with ""param."". This typically has no effect, but without ""param."", you're implictly accessing the environment. If the incoming parameter is boolean, then it would be converted to a string, meaning that boolean checks like if (foo) would return true." +20252 area-System.Diagnostics Proposal: Add new property for getting process command line, environment and parent process # Rationale and Usage When writing tools, it is often useful to be able to get to information about the processes you manage. This is easy on Linux with /proc, but harder on windows. When getting parent process, it is important to check the start time of the process with the PID of the queried process to see if it is older to prevent errors when process ids are recycled. # API proposal ```csharp namespace System.Diagnostics { public class Process : Component { public string CommandLine { get; } public IDictionary Environment{ get; } public Process ParentProcess { get; } } } ``` I would suggest returning `null` if the user doesn't have access to the requested property instead of having to handle exceptions. +20253 area-Infrastructure Can't add System.Runtime.WindowsRuntime nuget package to .net 4.6.1 project If you try to add the package, you get the following error: Could not install package 'System.Runtime.WindowsRuntime 4.3.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.6.1', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. +20254 area-Infrastructure Remove HelixJob type allowing these to default to test/functional/cli/ "Removing this property allows the value to default to what's here: https://github.com/dotnet/corefx/blob/master/src/upload-tests.proj#L62 I've chosen to do it this way because: 1. Currently we lack the ability to have different branches show a mix of different job types. I've tracked improving this experience here: https://github.com/dotnet/core-eng/issues/810 2. In master, these _**are**_ the core tests now; ""portable core"" loses its meaning when everything is portable. Once this merges, we can choose to remove the portable view from the view configuration whenever, but probably some time in the future for historical research purposes. @weshaggard , @chcosta " +20255 area-System.Reflection Expose 'other' property and event accessors Implementation of API to expose 'other' property and event accessors. resolves #4100 +20256 area-System.Runtime `System.IntPtr` and `System.UIntPtr` Improvements ### Rationale The .NET framework provides the `System.IntPtr` and `System.UIntPtr` types which wrap the `native int` IL primitive (as per ECMA-335). These types are frequently used to represent both handles/pointers and integers whose size depend on the underlying platform. When being used to represent the latter (platform sized integer) type, users may find a difficult time performing some basic operations, such as comparing two `native ints` to determine sort order. Additionally, with the proposed C# `Native Sized Number Types` (https://github.com/dotnet/csharplang/issues/435) where language support for the primitive operations will be exposed (currently this will be done via partial erasure), the use of `System.IntPtr` and `System.UIntPtr` as `native int` types will become more prevalent (F# is one language that already exposes these operators). As such, these types should be modified to expose a set of APIs that make other common operations easier to perform. ### Proposed API The proposed API here only shows the members that would be new to the types. **System.IntPtr** ```C# [StructLayout(LayoutKind.Sequential)] // This is implicitly set by the compiler, but should be explicitly declared, as it is done for System.Int32 public struct IntPtr : IComparable, IComparable, IComparable, IEquatable, IFormattable { public static IntPtr MaxValue { get; } public static IntPtr MinValue { get; } public static bool operator ==(IntPtr left, int right); public static bool operator !=(IntPtr left, int right); int IComparable.CompareTo(object value); // Explicitly implemented to ensure that users still get compile-time type checking public int CompareTo(int value); // ECMA-335 defines binary comparisons for IntPtr/int and IntPtr/IntPtr public int CompareTo(IntPtr value); public bool Equals(int other); // ECMA-335 defines binary comparisons for IntPtr/int and IntPtr/IntPtr public bool Equals(IntPtr other); // This is currently explicitly implemented as IEquatable.Equals(IntPtr other) public string ToString(IFormatProvider provider); public string ToString(string format, IFormatProvider provider); public static IntPtr Parse(string s); public static IntPtr Parse(string s, NumberStyles style); public static IntPtr Parse(string s, IFormatProvider provider); public static IntPtr Parse(string s, NumberStyles style, IFormatProvider provider); public static bool TryParse(string s, out IntPtr result); public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out IntPtr result); } ``` **System.UIntPtr** ```C# public struct UIntPtr : IComparable, IComparable, IComparable, IEquatable, IFormattable { public static UIntPtr MaxValue { get; } public static UIntPtr MinValue { get; } public static bool operator ==(UIntPtr left, uint right); public static bool operator !=(UIntPtr left, uint right); int IComparable.CompareTo(object value); // Explicitly implemented to ensure that users still get compile-time type checking public int CompareTo(uint value); // ECMA-335 defines binary comparisons for IntPtr/int and IntPtr/IntPtr public int CompareTo(UIntPtr value); public bool Equals(uint other); // ECMA-335 defines binary comparisons for IntPtr/int and IntPtr/IntPtr public bool Equals(UIntPtr other); // This is currently explicitly implemented as IEquatable.Equals(UIntPtr other) public string ToString(string format); // This is currently exposed on System.IntPtr, but not on System.UIntPtr public string ToString(IFormatProvider provider); public string ToString(string format, IFormatProvider provider); public static UIntPtr Parse(string s); public static UIntPtr Parse(string s, NumberStyles style); public static UIntPtr Parse(string s, IFormatProvider provider); public static UIntPtr Parse(string s, NumberStyles style, IFormatProvider provider); public static bool TryParse(string s, out UIntPtr result); public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out UIntPtr result); } ``` ### Other Thoughts Implementing `System.IConvertible` is done by the other primitive types and may be useful in some cases here as well. It might be worthwhile having `int` implement `IComparable` and `IEquatable`, given that these are valid operations as well. +20258 area-Infrastructure "Move ""GenerateReferenceSource"" target into buildtools" "We should move this new target into buildtools if we decide that the functionality is general-purpose enough to warrant it. This might involve cleaning it up, making it ""automatic"", and fixing some of the problems around multiple build configurations." +20259 area-System.Threading Fix Parallel.For* to consistently throw exception upon cancellation Fix for #20093 in master: - Write the exception to be thrown upon cancellation before setting the canceled state so that the exception will be visible upon cancellation - Dispose the cancellation token registration before checking the exception so that a late cancellation would never yield an incomplete return status with no exception +20260 area-Infrastructure Port four new reference assembly projects to release/2.0.0 This tracks porting the changes in https://github.com/dotnet/corefx/pull/20211 to the release/2.0.0 branch. I've made a targeted fix which will reduce the IL size of the reference assemblies we ship with .NET Core. In total, we will bundle 729 KB less in the Microsoft.NETCore.App package. There is no observable difference other than the file size. This change just strips out the implementation IL for the assembly, which is already unused. +20261 area-Infrastructure "Port ""Add a ""GenerateReferenceSource"" target and add four ref assembly projects."" to release/2.0.0" This is a direct port of #20211 - https://github.com/dotnet/corefx/pull/20211/commits to the release/2.0.0 branch. Fixes #20260 +20262 area-System.Xml Fix XmlSchemaSet test failures with absolute Uri on Unix "Re-enables and fixes failing tests of XmlSchemaSet that depend on System.Uri.IsAbsoluteUri 's behavior when the passed string to Uri starts with ""/"" on Unix. The method returns `False` for these types of paths, although the path in Unix is considered as absolute. Resolves https://github.com/dotnet/corefx/issues/20148 cc: @danmosemsft @krwq @stephentoub " +20263 area-System.Xml .NET Core 2.0 Preview 1: XmlSchemaSet Compile Failure to Find Types in Included Schemas "Consider the following XML schema: ``` ``` The following .NET Core 2.0 Preview 1 console app fails with an exception: ``` static void Main(string[] args) { var schemaReader = XmlTextReader.Create(""main.xsd""); var thisSchema = XmlSchema.Read(schemaReader, null); var thisSchemaSet = new XmlSchemaSet(); thisSchemaSet.Add(thisSchema); thisSchemaSet.Compile(); } ``` The exception is as follows: ``` System.Xml.Schema.XmlSchemaException occurred HResult=0x80131941 Message=Type 'http://www.xbrl.org/2003/instance:monetaryItemType' is not declared. Source= StackTrace: at System.Xml.Schema.XmlSchemaSet.InternalValidationCallback(Object sender, ValidationEventArgs e) at System.Xml.Schema.BaseProcessor.SendValidationEvent(XmlSchemaException e, XmlSeverityType severity) at System.Xml.Schema.BaseProcessor.SendValidationEvent(XmlSchemaException e) at System.Xml.Schema.Compiler.CompileElement(XmlSchemaElement xe) at System.Xml.Schema.Compiler.Compile() at System.Xml.Schema.Compiler.Execute(XmlSchemaSet schemaSet, SchemaInfo schemaCompiledInfo) at System.Xml.Schema.XmlSchemaSet.Compile() at SchemaSetTest.Program.Main(String[] args) in c:\users\jefff\documents\visual studio 2017\Projects\SchemaSetTest\SchemaSetTest\Program.cs:line 14 ``` The type in question (`http://www.xbrl.org/2003/instance:monetaryItemType`) is available from the imported schema named on the main XSD's `` element. This code works on .NET Framework. Is this a known issue with `XmlSchemaSet` in .NET Core 2.0?" +20264 area-System.IO Named Pipes only can receive a single message "The implementation of NamedPipeServerStream.WaitForConnectionAsync is unclear and also incorrect. I believe the following should work but it fails (on windows at least) ```c# var server = new NamedPipeServerStream(""test"", PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 0, 0); server.WaitForConnectionAsync().ContinueWith((task) => { var number = server.ReadByte(); }); for (int i = 0; i < 10; i++) { var client = new NamedPipeClientStream(""."", ""test"", PipeDirection.Out, PipeOptions.Asynchronous | PipeOptions.WriteThrough); client.Connect(); // This waits for forever on the second client, however the named pipe still exists and is open client.WriteByte((byte)10); client.Flush(); client.Dispose(); } ``` However if the wait for connections async is supposed to be called on each disconnect then I am still having errors as calling WaitForConnectionAsync again causes an IO exception ```c# public static void Main(String[]args) { Task.Factory.StartNew(KeepPipeOpen).GetAwaiter(); for (int i = 0; i < 10; i++) { var client = new NamedPipeClientStream(""."", ""test"", PipeDirection.Out, PipeOptions.Asynchronous | PipeOptions.WriteThrough); client.Connect(); client.WriteByte((byte)10); client.Flush(); client.Dispose(); } } public static NamedPipeServerStream server = new NamedPipeServerStream(""test"", PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 0, 0); public static async void KeepPipeOpen() { var shouldContinue = true; while (shouldContinue) { var msg = await GetNextMessage(); } } public static async Task GetNextMessage() { try { if (!server.IsConnected) { await server.WaitForConnectionAsync(); } var number = server.ReadByte(); return number; }catch(Exception e) { return 0; } } ```" +20265 area-System.Net Several more HttpListener fixes on Unix Fixes https://github.com/dotnet/corefx/issues/20231 Fixes https://github.com/dotnet/corefx/issues/20230 Fixes https://github.com/dotnet/corefx/issues/20229 Fixes https://github.com/dotnet/corefx/issues/20228 Fixes https://github.com/dotnet/corefx/issues/20100 Fixes https://github.com/dotnet/corefx/issues/19977 Fixes https://github.com/dotnet/corefx/issues/20239 Fixes https://github.com/dotnet/corefx/issues/20237 Fixes https://github.com/dotnet/corefx/issues/20101 cc: @geoffkizer, @janvorli, @hughbe, @Priya91, @steveharter +20266 area-System.Threading Fix Parallel.For* to consistently throw exception upon cancellation Port of PR #20259, commit 62bfba654acf00e4b0fc0811be057c637b135bba to release/2.0.0 Fixes #20093: - Write the exception to be thrown upon cancellation before setting the canceled state so that the exception will be visible upon cancellation - Dispose the cancellation token registration before checking the exception so that a late cancellation would never yield an incomplete return status with no exception +20268 area-System.Diagnostics Implementation of ProcessStartInfo.CreateNewProcessGroup property This is an implementation for the API request issue #17412. Normally a new child process is created in the same process group as the parent process. This change allows a child process to be created in its own process group. For Windows this change simply sets the CREATE_NEW_PROCESS_GROUP flag when creating the process. For Unix this change uses the setpgid system call to set the process group id to be the same as the process id. I wasn't able to find any Windows managed or native API to determine a process group id. So functional tests work only in Unix where they use system calls to verify a process group id. +20269 area-System.Data Add AdapterTest to SqlClient ManualTests Tests SqlAdapter functionality +20270 area-System.Net IsWindowsImplementation / IsNotWindowsImplementation semantics This is to track follow-up from the discussion at https://github.com/dotnet/corefx/pull/20250#pullrequestreview-40129192 src/System.Net.HttpListener/tests/GetContextHelper.cs Helpers : IsWindowsImplementation / IsNotWindowsImplementation should either have better name description or should have the implementation changed to mean what they actually do: Windows but not Nano or UWP. +20272 area-System.Security Exporting certificates created on the fly broken on OSX? "We ran into this while trying to generate certificates on the fly to use for HTTPS. If you create a self-signed certificate from an ephemeral RSA key. Shouldn't you be able to export it to a PFX file directly? it was failing for us in line: ```c# var export = certificate.Export(X509ContentType.Pkcs12, """"); ``` ```c# var signingRequest = new CertificateRequest( new X500DistinguishedName(TestSubject), rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); var enhancedKeyUsage = new OidCollection(); enhancedKeyUsage.Add(new Oid(""1.3.6.1.5.5.7.3.1"", ""Server Authentication"")); signingRequest.CertificateExtensions.Add(new X509EnhancedKeyUsageExtension(enhancedKeyUsage, critical: true)); signingRequest.CertificateExtensions.Add(new X509KeyUsageExtension(X509KeyUsageFlags.KeyEncipherment, critical: true)); signingRequest.CertificateExtensions.Add( new X509BasicConstraintsExtension( certificateAuthority: false, hasPathLengthConstraint: false, pathLengthConstraint: 0, critical: true)); var sanBuilder = new SubjectAlternativeNameBuilder(); sanBuilder.AddDnsName(TestSubject.Replace(""CN="", """")); signingRequest.CertificateExtensions.Add(sanBuilder.Build()); var certificate = signingRequest.CreateSelfSigned(DateTimeOffset.UtcNow, DateTimeOffset.UtcNow.AddYears(1)); var export = certificate.Export(X509ContentType.Pkcs12, """"); var imported = new X509Certificate2(export, """", X509KeyStorageFlags.PersistKeySet); Array.Clear(export, 0, export.Length); ```" +20273 area-System.Diagnostics Add ShellEx support for Windows & fix issues (#20216) Port of #20216 for issue #18949 * Add ShellEx support for Windows & fix issues Adds ShellExecute support for Windows (outside of UAP). Unlike desktop UseShellExecute is not the default. In the process of ding this I ran across two issues: 1- The owned process handle would be disposed after hitting members on Process. Getting the ProcessName, for example, would cause a closed handle exception on the next call that used the handle. 2- The MainWindowTitle import wasn't set to the right charset. In addition the allocated buffer size wasn't correct. Fixed and added debug checks for failed api calls. * Address feedback - Add usings in tests - Handle missing API * Move to new using pattern - Remove newly dead string - Other feedback * More feedback changes +20274 area-System.Threading Creating global mutex in UWP context hangs "Repro: try to run the System.Net.Security tests in UWP. The following code will hang in `CreateMutexW`: ```C# private static Mutex m = new Mutex(false, ""Global\\CoreFXTest.Configuration.Certificates.LoadPfxCertificate""); ``` Stack: ``` 01 0000001d`bbcfa4b0 00007ffb`1721aba7 KERNELBASE!CreateMutexW+0x61 02 0000001d`bbcfa530 00007ffb`172e93cc System_Private_CoreLib!DomainNeutralILStubClass.IL_STUB_PInvoke(SECURITY_ATTRIBUTES, Boolean, System.String)+0xf7 03 0000001d`bbcfa620 00007ffb`172e94ea System_Private_CoreLib!System.Threading.Mutex.CreateMutexHandle(Boolean, System.String, SECURITY_ATTRIBUTES, Microsoft.Win32.SafeHandles.SafeWaitHandle ByRef)+0x2c 04 0000001d`bbcfa680 00007ffb`1e4eb6a3 System_Private_CoreLib!System.Threading.Mutex+MutexTryCodeHelper.MutexTryCode(System.Object)+0x3a 05 0000001d`bbcfa6d0 00007ffb`1e247d09 CoreCLR!GetCLRRuntimeHost+0x3234b3 06 0000001d`bbcfa710 00007ffb`1e3cc93d CoreCLR!GetCLRRuntimeHost+0x7fb19 07 0000001d`bbcfa7b0 00007ffb`1e3cca89 CoreCLR!GetCLRRuntimeHost+0x20474d 08 0000001d`bbcfa890 00007ffb`172e8f92 CoreCLR!GetCLRRuntimeHost+0x204899 09 0000001d`bbcfaa10 00007ffb`172e9067 System_Private_CoreLib!System.Threading.Mutex.CreateMutexWithGuaranteedCleanup(Boolean, System.String, Boolean ByRef, SECURITY_ATTRIBUTES)+0xe2 0a 0000001d`bbcfaa80 00007ffa`beca3349 System_Private_CoreLib!System.Threading.Mutex..ctor(Boolean, System.String)+0x37 0b 0000001d`bbcfaad0 00007ffb`1e4eb6a3 System_Net_Security_Tests!System.Net.Test.Common.Configuration+Certificates..cctor()+0x49 [S:\corefxUwp\src\Common\tests\System\Net\Configuration.Certificates.cs @ 21] 0c 0000001d`bbcfab10 00007ffb`1e247c3c CoreCLR!GetCLRRuntimeHost+0x3234b3 0d 0000001d`bbcfab50 00007ffb`1e247cfd CoreCLR!GetCLRRuntimeHost+0x7fa4c 0e 0000001d`bbcfabb0 00007ffb`1e2e57e2 CoreCLR!GetCLRRuntimeHost+0x7fb0d 0f 0000001d`bbcfac50 00007ffb`1e2e5cc2 CoreCLR!GetCLRRuntimeHost+0x11d5f2 10 0000001d`bbcfadb0 00007ffb`1e2e616c CoreCLR!GetCLRRuntimeHost+0x11dad2 11 0000001d`bbcfb840 00007ffb`1e2ab6ca CoreCLR!GetCLRRuntimeHost+0x11df7c 12 0000001d`bbcfb870 00007ffa`beca3131 CoreCLR!GetCLRRuntimeHost+0xe34da 13 0000001d`bbcfba00 00007ffa`beca2f30 System_Net_Security_Tests!System.Net.Test.Common.Configuration+Certificates.GetCertificateCollection(System.String)+0x51 [S:\corefxUwp\src\Common\tests\System\Net\Configuration.Certificates.cs @ 52] 14 0000001d`bbcfbab0 00007ffa`beca2ec7 System_Net_Security_Tests!System.Net.Test.Common.Configuration+Certificates.GetServerCertificateCollection()+0x30 [S:\corefxUwp\src\Common\tests\System\Net\Configuration.Certificates.cs @ 34] ``` " +20275 area-System.Security Support Two-Key Triple DES Fixes https://github.com/dotnet/corefx/issues/9966 Expect to port to 2.0 release branch as well. I am assuming we want to support this in the S.S.C.Cng assembly as well meaning direct use of the TripleDESCng class would work the same as using TripleDES.Create() or TripleDESCryptoServiceProvider. +20276 area-System.Runtime X-Plat: Environment.SetEnvironmentVariable(string, string) on Unix. More details later - just need an issue number for a TODO comment. +20277 area-System.Runtime X-Plat: Environment.GetEnvironmentVariables() on Unix More details later - just need an issue number now. +20278 area-Serialization Fix XmlSerializer(Type type, Types[] extraTypes) on UWP On UWP, if one used `XmlSerializer(Type type, Types[] extraTypes)` to create serializer for `type`, UWP toolchain would pre-generate the serializer for the type and make the `extraTypes` as the type's known types. To achieve the latter, UWP toolchain uses one `XmlReflectionImporter` to import *all types* (all types require serialization in the app) so that the `extraTypes` would be treated as known types. But there're some problems with this. 1. The type would have more known types than those included by `extraTypes`. 2. There might be type conflicts as the importer imports all types and the type scope grows. And etc. The fix is to make the constructor to always use reflection based serialization. Fix #19811 +20279 area-Infrastructure Test retargeting netframework project while using netstandard.library.netframework We should do this in both a netcore.sdk project as well as a legacy project using package reference. Packages.config is not interesting since retargeting has never been supported there. @davkean mentioned the design time build may not react well when retargeting changes targets imported. Interesting scenarios: 1. Reference an n 2.0 package that cross-compiles (like immutable) in net461. 2. Retargeting to net46. 3. Retargeting to net47. (Interesting in valuetuple case). There are others too. Filing this to ensure I don't forget to test this. +20280 area-System.Net Several more HttpListener fixes on Unix Replaces https://github.com/dotnet/corefx/pull/20265, which was having CI issues. Fixes #20239 Fixes #20238 Fixes #20237 Fixes #20232 Fixes #20231 Fixes #20230 Fixes #20229 Fixes #20228 Fixes #20165 Fixes #20101 Fixes #20100 Fixes #20099 Fixes #19977 Fixes #19972 +20283 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_BadExe failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_BadExe(useShellExecute: False)` has failed. Assert.Equal() Failure\r Expected: 193\r Actual: 0 Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_BadExe(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_BadExe(useShellExecute:%20False) +20284 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False) failed with ""System.ComponentModel.Win32Exception : The system cannot find the file specified""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False)` has failed. System.ComponentModel.Win32Exception : The system cannot find the file specified Stack Trace: at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_NotepadWithContent(useShellExecute:%20False) +20285 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: True) failed with ""System.ComponentModel.Win32Exception : This function is not supported on this system""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: True)` has failed. System.ComponentModel.Win32Exception : This function is not supported on this system Stack Trace: at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_NotepadWithContent(useShellExecute:%20True) +20286 area-System.Diagnostics "Tests under ""System.Diagnostics.Tests.ProcessStartInfoTests"" failed with ""Xunit.Sdk.StartWithException""" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/wilogs ~~~ 2017-05-25 00:34:23,901: INFO: proc(54): run_and_log_output: Output: Discovering: System.Diagnostics.Process.Tests 2017-05-25 00:34:24,151: INFO: proc(54): run_and_log_output: Output: Discovered: System.Diagnostics.Process.Tests 2017-05-25 00:34:24,260: INFO: proc(54): run_and_log_output: Output: Starting: System.Diagnostics.Process.Tests 2017-05-25 00:34:24,838: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_WebPage [SKIP] 2017-05-25 00:34:24,838: INFO: proc(54): run_and_log_output: Output: Manual test 2017-05-25 00:34:25,622: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(useShellExecute: False) [FAIL] 2017-05-25 00:34:25,622: INFO: proc(54): run_and_log_output: Output: Assert.StartsWith() Failure: 2017-05-25 00:34:25,622: INFO: proc(54): run_and_log_output: Output: Expected: StartInfo_NotepadWithContent_956_ad11a149.txt 2017-05-25 00:34:25,622: INFO: proc(54): run_and_log_output: Output: Actual: StartInfo_NotepadWithContent_956_ad11a149 - N... 2017-05-25 00:34:25,638: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(useShellExecute: True) [FAIL] 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: Assert.StartsWith() Failure: 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: Expected: StartInfo_NotepadWithContent_956_7922b544.txt 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: Actual: StartInfo_NotepadWithContent_956_7922b544 - N... 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-25 00:34:25,763: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) 2017-05-25 00:34:25,809: INFO: proc(54): run_and_log_output: Output: System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute [FAIL] 2017-05-25 00:34:25,809: INFO: proc(54): run_and_log_output: Output: Assert.StartsWith() Failure: 2017-05-25 00:34:25,809: INFO: proc(54): run_and_log_output: Output: Expected: StartInfo_TextFile_ShellExecute_982_8f4d0e14.txt 2017-05-25 00:34:25,809: INFO: proc(54): run_and_log_output: Output: Actual: StartInfo_TextFile_ShellExecute_982_8f4d0e14 - N... 2017-05-25 00:34:25,809: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-25 00:34:25,809: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute() ~~~ +20287 area-System.Console "Test: CancelKeyPressTests/CanAddAndRemoveHandler_Remote failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `CancelKeyPressTests/CanAddAndRemoveHandler_Remote` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at CancelKeyPressTests.CanAddAndRemoveHandler_Remote() Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.Console.Tests/analysis/xunit/CancelKeyPressTests~2FCanAddAndRemoveHandler_Remote +20288 area-System.Diagnostics StartInfo_BadExe, StartInfo_BadVerb failing on Nano https://github.com/dotnet/corefx/issues/10290 is relevant I can fix this. +20289 area-System.Diagnostics disable two Process tests for nano relates to https://github.com/dotnet/corefx/issues/20288 +20290 area-Infrastructure Update CoreClr, CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25326-02, preview1-25324-02, preview1-25326-03, beta-25326-02, beta-25326-02, preview1-25326-01, respectively (master) +20291 area-Infrastructure Add debian 9 to CI I want to add Debian 9 and Nano as optional legs to CI jobs. @mmitche you said to edit this file - is that it? Where does it indicate that it's an optional leg? To add Nano, do I edit netci.groovy, or somthing else? How do I test - do I do @dotnet-bot test ci please? +20292 area-Infrastructure "build.cmd fails with ""marked as inbox for framework netcoreapp2.0 but was missing from package ...""" ``` C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Collections.Immutable.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp /4.5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Micr osoft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\ Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Configuration.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0-p review1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Pr ivate.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hu gh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Reflection.Metadata.dll is m arked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4 .5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Micros oft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Us ers\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Security.dll is marked as in box for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0-previe w1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private .PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hugh\Do cuments\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.ServiceProcess.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0- preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.P rivate.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\h ugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Threading.Tasks.Dataflow.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCore App/4.5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\M icrosoft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [ C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgpr oj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Threading.Tasks.Extensions.d ll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCo reApp/4.5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg \Microsoft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkg proj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File WindowsBase.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0-preview1-2 5423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.Pac kageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hugh\Docume nts\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] Build FAILED. C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Collections.Immutable.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp /4.5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Micr osoft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\ Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Configuration.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0-p review1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Pr ivate.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hu gh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Reflection.Metadata.dll is m arked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4 .5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Micros oft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Us ers\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Security.dll is marked as in box for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0-previe w1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private .PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hugh\Do cuments\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.ServiceProcess.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0- preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.P rivate.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\h ugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Threading.Tasks.Dataflow.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCore App/4.5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\M icrosoft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [ C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgpr oj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File System.Threading.Tasks.Extensions.d ll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCo reApp/4.5.0-preview1-25423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg \Microsoft.Private.PackageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkg proj] C:\Users\hugh\Documents\GitHub\corefx\Tools\Packaging.targets(1119,5): error : File WindowsBase.dll is marked as inbox for framework netcoreapp2.0 but was missing from framework package Microsoft.Private.CoreFx.NETCoreApp/4.5.0-preview1-2 5423-0. Either add the file or update InboxOn entry in C:\Users\hugh\Documents\GitHub\corefx\pkg\Microsoft.Private.Pac kageBaseline\packageIndex.json. This may be suppressed with with PermitMissingInbox suppression [C:\Users\hugh\Docume nts\GitHub\corefx\pkg\Microsoft.Private.CoreFx.NETCoreApp\Microsoft.Private.CoreFx.NETCoreApp.pkgproj] 0 Warning(s) 8 Error(s) Time Elapsed 00:09:13.88 Command execution failed with exit code 1. ``` +20293 area-System.Diagnostics Fix UseShellExec tests for Nano Fixes https://github.com/dotnet/corefx/issues/20288 I need nano support on CI to test this. @mmitche ... +20294 area-System.Net [HttpListener] [porting] HttpListenerRequest.ContentLength64 can be overriden from Request.Headers but can't be with netfx "Following tests pass with netfx but are disabled for netcoreapp: ```cs [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [InlineData(100)] [InlineData(""-100"")] [InlineData("""")] [InlineData(""abc"")] [InlineData(""9223372036854775808"")] [ActiveIssue(123, TargetFrameworkMonikers.Netcoreapp)] public async Task ContentLength_ManuallySetInHeaders_ReturnsExpected(string newValue) { await GetRequest(""POST"", null, new string[] { ""Content-Length: 1"" }, (_, request) => { Assert.Equal(""1"", request.Headers[""Content-Length""]); request.Headers.Set(""Content-Length"", newValue); Assert.Equal(newValue, request.Headers[""Content-Length""]); Assert.Equal(1, request.ContentLength64); Assert.True(request.HasEntityBody); }, content: ""\r\n""); } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [ActiveIssue(123, TargetFrameworkMonikers.Netcoreapp)] public async Task ContentLength_ManuallyRemovedFromHeaders_DoesNotAffect() { await GetRequest(""POST"", null, new string[] { ""Content-Length: 1"" }, (_, request) => { Assert.Equal(""1"", request.Headers[""Content-Length""]); request.Headers.Remove(""Content-Length""); Assert.Equal(1, request.ContentLength64); Assert.True(request.HasEntityBody); }, content: ""\r\n""); } ``` Looking at referencesource the code is exactly the same give or take some formatting." +20295 area-System.Net Add tests for a HttpListenerRequest.ContentLength64 porting bug See #20294 @stephentoub this will conflict with your existing PR - you have dibs though so you can merge that PR and I'll fix the conflicts +20296 area-System.Net HttpClient throws TaskCanceledException on timeout HttpClient is throwing a TaskCanceledException on timeout in some circumstances. This is happening for us when the server is under heavy load. We were able to work around by increasing the default timeout. The following MSDN forum thread captures the essence of the experienced issue: https://social.msdn.microsoft.com/Forums/en-US/d8d87789-0ac9-4294-84a0-91c9fa27e353/bug-in-httpclientgetasync-should-throw-webexception-not-taskcanceledexception?forum=netfxnetcom&prof=required Thanks +20297 area-System.IO "Test: System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests/InvalidAccessLevelsCombinations(mapAccess: CopyOnWrite, viewAccess: ReadWriteExecute) failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests/InvalidAccessLevelsCombinations(mapAccess: CopyOnWrite, viewAccess: ReadWriteExecute)` has failed. Assert.Throws() Failure\r Expected: typeof(System.UnauthorizedAccessException)\r Actual: typeof(System.IO.IOException): The parameter is incorrect Stack Trace: at System.IO.MemoryMappedFiles.MemoryMappedView.CreateView(SafeMemoryMappedFileHandle memMappedFileHandle, MemoryMappedFileAccess access, Int64 offset, Int64 size) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size, MemoryMappedFileAccess access) at System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests.<>c__DisplayClass2_1.b__1() Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.IO.MemoryMappedFiles.Tests/analysis/xunit/System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests~2FInvalidAccessLevelsCombinations(mapAccess:%20CopyOnWrite,%20viewAccess:%20ReadWriteExecute) +20298 area-System.IO "Tests under: System.IO.Packaging.Tests.Tests failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.IO.Packaging.Tests.Tests/T001_AddParagraphToDocument` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\f0379a4e-1ce3-4162-82f8-ccf81a31cefc\\Work\\b32309d6-9ae8-4920-ba2c-17660304260f\\Unzip\\Temp-8778394265bf4a41896e8171f644de83.docx' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.InternalWriteAllBytes(String path, Byte[] bytes) at System.IO.File.WriteAllBytes(String path, Byte[] bytes) at System.IO.Packaging.Tests.Tests.GetFileSavedWithGuidName(String test, String name) at System.IO.Packaging.Tests.Tests.T001_AddParagraphToDocument() Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.IO.Packaging.Tests/analysis/xunit/System.IO.Packaging.Tests.Tests~2FT001_AddParagraphToDocument +20299 area-System.IO "Tests under: System.IO.Pipes.Tests.NamedPipeTest_AclExtensions failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.NamedPipeTest_AclExtensions/GetAccessControl_ConnectedStream` has failed. System.UnauthorizedAccessException : Access to the path is denied. Stack Trace: at System.IO.Pipes.NamedPipeServerStream.Create(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.NamedPipeServerStream..ctor(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.NamedPipeServerStream..ctor(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options) at System.IO.Pipes.Tests.NamedPipeTest_AclExtensions.CreateServerClientPair() at System.IO.Pipes.Tests.PipeTest_AclExtensions.GetAccessControl_ConnectedStream() Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.IO.Pipes.AccessControl.Tests/analysis/xunit/System.IO.Pipes.Tests.NamedPipeTest_AclExtensions~2FGetAccessControl_ConnectedStream +20300 area-System.Net "Tests under: System.Net.NetworkInformation.Tests.AddressParsingTests failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Tests.AddressParsingTests/DhcpServerAddressParsing` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\f0379a4e-1ce3-4162-82f8-ccf81a31cefc\\Work\\70a6094c-d43f-449a-9f91-29b2a2f4801c\\Unzip\\dhclient.leases_normalized0' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) at System.IO.StreamWriter..ctor(String path) at System.IO.File.WriteAllText(String path, String contents) at System.Net.NetworkInformation.Tests.FileUtil.NormalizeLineEndings(String source, String normalizedDest) at System.Net.NetworkInformation.Tests.AddressParsingTests.DhcpServerAddressParsing() Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.Net.NetworkInformation.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.AddressParsingTests~2FDhcpServerAddressParsing +20301 area-Infrastructure Download Shared Framework Zips and adding their ApiCompat runs cc: @weshaggard @ericstj @danmosemsft fixes #18083 Last piece of the puzzle. This will add those two last apicompat runs that we cared about by restoring the last shipped shared framework and the current one in order to do testing against it. Once this is merged, all work will be ready, and the next step would be enabling all of this through an official build (or maybe a whole new pipeline build) +20302 area-System.Net "Tests under: System.Net.Sockets.Tests.SendPacketsAsync failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.SendPacketsAsync/BufferMixedBuffers_ZeroCountBufferIgnored(type: APM)` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\f0379a4e-1ce3-4162-82f8-ccf81a31cefc\\Work\\c5776ee9-264d-4af6-9f90-7fdfca0bef3c\\Unzip\\NCLTest.Socket.SendPacketsAsync.testpayload' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode) at System.Net.Sockets.Tests.SendPacketsAsync..ctor(ITestOutputHelper output) Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendPacketsAsync~2FBufferMixedBuffers_ZeroCountBufferIgnored(type:%20APM) +20303 area-System.Runtime Test failure: System.Runtime.Loader.Tests.DefaultLoadContextTests/LoadInDefaultContext Opened on behalf of @Jiayili1 The test `System.Runtime.Loader.Tests.DefaultLoadContextTests/LoadInDefaultContext` has failed. System.UnauthorizedAccessException : Access to the path is denied. Stack Trace: at System.IO.Win32FileSystem.MoveFile(String sourceFullPath, String destFullPath) at System.IO.File.Move(String sourceFileName, String destFileName) at System.Runtime.Loader.Tests.DefaultLoadContextTests.Init() at System.Runtime.Loader.Tests.DefaultLoadContextTests.LoadInDefaultContext() Build : Master - 20170525.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170525.01/workItem/System.Runtime.Loader.DefaultContext.Tests/analysis/xunit/System.Runtime.Loader.Tests.DefaultLoadContextTests~2FLoadInDefaultContext +20304 area-Infrastructure Updating CoreClr dependencies to servicing-25325-01 +20305 area-Infrastructure Update CoreClr, CoreFx to servicing-25325-01, servicing-25325-02, respectively (release/1.1.0) +20306 area-System.Diagnostics NullReferenceException in DiagnosticListener constructor "1. If someone listens to DiagnosticSourceEventSource bridge 2. When any DiagnosticListener is created, it causes static creation of DiagnosticSourceEventSource 3. When it’s created, OnEventCommand is fired that eventually causes call to DiagnosticListener.AllListeners 4. Which creates HttpHandlerDiagnosticListener -> DiagnosticListener that fails on DiagnosticSourceEventSource.Logger.IsEnabled (we are still in the process of creation DiagnosticSourceEventSource.Logger and it’s still null) ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Diagnostics.HttpHandlerDiagnosticListener' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object. at System.Diagnostics.DiagnosticListener..ctor(String name) at System.Diagnostics.HttpHandlerDiagnosticListener..ctor() at System.Diagnostics.HttpHandlerDiagnosticListener..cctor() --- End of inner exception stack trace --- at System.Diagnostics.DiagnosticListener.get_AllListeners() at ConsoleApp3.Program.Main(String[] args) in C:\repo\delme\ConsoleApp3\Program.cs:line 13 ``` Code to reproduce ```c# class Program : IObserver { static void Main(string[] args) { new MyEventListener(); new DiagnosticListener(""123""); DiagnosticListener.AllListeners.Subscribe(new Program()); } public void OnNext(DiagnosticListener value) {} public void OnError(Exception error){} public void OnCompleted() {} class MyEventListener : EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { if (eventSource != null && eventSource.Name == ""Microsoft-Diagnostics-DiagnosticSource"") { this.EnableEvents(eventSource, EventLevel.Verbose, EventKeywords.All); } base.OnEventSourceCreated(eventSource); } protected override void OnEventWritten(EventWrittenEventArgs eventData) { } } ```" +20307 area-System.Net "Test: System.Net.Tests.SyncWebClientTest/UploadData_LargeData_Success failed with ""System.Net.Http.CurlException : SSL connect error""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.SyncWebClientTest/UploadData_LargeData_Success(echoServer: https://corefx-net.cloudapp.net/Echo.ashx)` has failed. System.Net.WebException : An error occurred while sending the request. SSL connect error ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.CurlException : SSL connect error Stack Trace: at System.Net.HttpWebRequest.GetResponse() in /root/corefx/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1012 at System.Net.WebClient.GetWebResponse(WebRequest request) in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 249 at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream) in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 851 at System.Net.WebClient.UploadBits(WebRequest request, Stream readStream, Byte[] buffer, Int32 chunkSize, Byte[] header, Byte[] footer) in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 983 at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request) in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 457 at System.Net.WebClient.UploadData(Uri address, String method, Byte[] data) in /root/corefx/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 435 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.WebClientTestBase.d__21.MoveNext() in /root/corefx/src/System.Net.WebClient/tests/WebClientTest.cs:line 658 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__59.MoveNext() in /root/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 487 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpWebRequest.d__191.MoveNext() in /root/corefx/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1205 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.HttpWebRequest.GetResponse() in /root/corefx/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1007 ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 641 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 875 Build : 2.0.0 - 20170525.01 (Portable Core Tests) Failing configurations: - fedora.25.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Net.WebClient.Tests/analysis/xunit/System.Net.Tests.SyncWebClientTest~2FUploadData_LargeData_Success(echoServer:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx) +20308 area-Serialization Porting Serialization Tests in NetNative Repo @huanwu @shmao Please help review the code +20309 area-System.Data Issues found when porting FirebirdClient to .NET Standard 1.6 I was asked by @karelz to sum up my biggest holes I found while working on _FirebirdClient_ on .NET Standard 1.6. These would be nice to process before .NET Standard/Core 2.0. Some of these are/might be already fixed or not worth doing. I provide whole list (in no particular order) as a reference. - [x] `DbException` is missing `ErrorCode` property. I know it was originally based around `HRESULT`, but it might be good to have common property for _error codes_. * Answered by @FransBouma - https://github.com/dotnet/corefx/issues/20309#issuecomment-304011943 - [x] `DbParameter` does not have `Precision` and `Scale` properties. * Answered by @FransBouma - https://github.com/dotnet/corefx/issues/20309#issuecomment-304011943 - [x] No `TypeCode.DBNull`. There's a case for it in `FbParameter` (implementation of `DbParameter`). * This is available now in 2.0 - [x] Whole fun around enlisting transactions (not that I'd miss it it if it would be dropped for good ;)) aka the `IEnlistmentNotification` and around. * Sys.Transactions are available in netstandard2.0 with support for Local Transactions, and there is no distributed trasactions. - [x] `DbConnection` does not have `DbProviderFactory`. * This was added back in 2.0 - [x] `DbDataAdapter`, `DbCommandBuilder` and the whole fun around this. I personally don't think the `DbDataAdapter`, ... is needed. * The `DbDataAdapter`, `DbCommandBuilder` are now available in netstandard2.0 - [x] Some story for `|DataDirectory|` in connection strings. * Looking into the code for System.Data.Common, this is not supported. Issue tracking this is https://github.com/dotnet/corefx/issues/19492 - [x] Schema. 😃 Either strongly typed (#13544, #5024) not tightly coupled to what MS SQL (does not) offers or good old one based on `DataTable`s etc. * The `DbConnection.GetSchema(): DataTable` and `DbDataReader.GetSchemaTable() : DataTable` are in `System.Data.Common` in netstandard2.0 Related to #19970. _FirebirdClient_ sources are [here](https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient), if needed. +20310 area-Infrastructure Update CoreFx, Standard to preview2-25325-03, preview2-25325-01, respectively (release/2.0.0) +20311 area-System.Net SSLStream Issue in Docker "Hi, I'm getting some strange behaviour. I'm running my CoreCLR App in a docker container on recent docker on ubuntu16. using the dotnet/runtime:1.1 container, and nothing unusual in the setup. I have a rest endpoint that fires an email off. I hit it once, and it fails. I hit it again, and it succeeds. Here are the logs ``` root@u-dev-test-3:/home/chris# docker logs my-api -f Hosting environment: Production Content root path: /app Now listening on: https://*:4907 Application started. Press Ctrl+C to shut down. RevocationStatus - Unknown unable to get certificate CRL Exception caught whilst sending an email: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MailKit.Net.Smtp.SmtpClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) at Services.System.CustomEmailService.Post(CustomEmailRequest req) in C:\code\app\api\Services\Customers\CustomEmailService.cs:line 393 Error getting recent file Connected to smtps://smtp.sendgrid.net:465/ S: 220 SG ESMTP service ready at ismtpd0004p1lon1.sendgrid.net C: EHLO [172.17.0.2] S: 250-smtp.sendgrid.net S: 250-8BITMIME S: 250-PIPELINING S: 250-SIZE 31457280 S: 250-AUTH PLAIN LOGIN S: 250 AUTH=PLAIN LOGIN C: AUTH PLAIN AGJsdWV6aW5jMzMzMzMzAGJsdTN6MW5j S: 235 Authentication successful C: MAIL FROM: C: RCPT TO: S: 250 Sender address accepted S: 250 Recipient address accepted C: DATA S: 354 Continue C: From: chris@not-real-address.com C: Date: Thu, 25 May 2017 13:49:22 +0000 C: Subject: C: Message-Id: C: To: chris@not-real-address.com C: MIME-Version: 1.0 C: Content-Type: text/html; charset=utf-8 C: Content-Id: <8TN8LMY6E1U4.B6BKSR2FKAG73@localhost.localdomain> C: C:

C: C: . S: 250 Ok: queued as IoQqdt0uRHSF591FrLzi9A C: QUIT S: 221 See you later ``` ```c# using (var client = new SmtpClient(new ProtocolLogger(Console.OpenStandardOutput()))) { client.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { if (sslPolicyErrors == SslPolicyErrors.None) return true; // if there are errors in the certificate chain, look at each error to determine the cause. if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateChainErrors) != 0) { if (chain != null && chain.ChainStatus != null) { foreach (var status in chain.ChainStatus) { Console.WriteLine(status.Status + "" - "" + status.StatusInformation); if (status.StatusInformation.Contains(""Unknown unable to get certificate CRL"")) { continue; } if ((certificate.Subject == certificate.Issuer) && (status.Status == X509ChainStatusFlags.UntrustedRoot)) { // self-signed certificates with an untrusted root are valid. continue; } else if (status.Status != X509ChainStatusFlags.NoError) { // if there are any other errors in the certificate chain, the certificate is invalid, // so the method returns false. return false; } } } // When processing reaches this line, the only errors in the certificate chain are // untrusted root errors for self-signed certificates. These certificates are valid // for default Exchange server installations, so return true. return true; } return false; }; client.AuthenticationMechanisms.Remove(""XOAUTH2""); client.Connect(appSettings.Get(""SMTP:Server"", """"), appSettings.Get(""SMTP:Port"", 25)); client.Authenticate(appSettings.Get(""SMTP:User"", """"), appSettings.Get(""SMTP:Password"", """")); client.Send(msg); client.Disconnect(true); return msg; } ``` I'm using smtp.sendgrid.net:465 in my config. I put a connection to the SmtpClient in my app startup, and the email works if I send fairly soon, but if I leave it idle for a while < 2 hours, then it fails again. Any advice on what might be the issue? " +20312 area-Infrastructure [release/2.0.0] Mark NETStandard.Library.NETFramework as trimmable This lets folks use the assembly level trimming from Microsoft.Packaging.Tools.Trimming to reduce the set of assemblies deployed with their application. Port of https://github.com/dotnet/corefx/pull/20271 Fixes https://github.com/dotnet/standard/issues/339 @weshaggard @Petermarcu +20313 area-System.Data System.Data.Common.DbParameter does not implement IDbDataParameter in an overridable way System.Data.Common.DbParameter does not implement IDbDataParameter in an overridable way. Effects: accessing a SqlParameter through the IDbDataParameter interface returns invalid Precision/Scale/Size properties. Example: ```c# var sql = new SqlParameter(); sql.Precision = 5; var idb = (IDbDataParameter)sql; Assert.AreEqual(sql.Precision, idb.Precision); // fails because IDbDataParameter.Precision is hard-coded to 0 ``` In https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DbParameter.cs: ```c# byte IDbDataParameter.Precision { get { return 0; } set { } } byte IDbDataParameter.Scale { get { return 0; } set { } } public virtual byte Precision { get { return ((IDbDataParameter)this).Precision; } set { ((IDbDataParameter)this).Precision = value; } } public virtual byte Scale { get { return ((IDbDataParameter)this).Scale; } set { ((IDbDataParameter)this).Scale = value; } } ``` In https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlParameter.cs: ```c# public override Byte Scale { get { return ScaleInternal; } set { ScaleInternal = value; } } ``` +20314 area-System.Security CoreFX does not support SHA512256 Powershell's `Get-FileHash` does not support `-Algorithm SHA512256` and I was directed to reopen this issue on CoreFX (see: https://github.com/PowerShell/PowerShell/issues/3860#issuecomment-303921498) +20315 area-System.Diagnostics NullReference Exception using'Microsoft-Diagnostics-DiagnosticSource' EventSource Attached repro. [NullRefRepo.zip](https://github.com/dotnet/corefx/files/1029702/NullRefRepo.zip) +20316 area-System.Diagnostics Fix for a null ref error using Microsoft-Diagnostics-DiagnosticSource EventSource Fixes issue #20306 +20317 area-Infrastructure Remove non-portable RIDs from netcoreapp package @ericstj @eerhardt @gkhanna79 PTAL +20318 area-System.Net Disable a bunch of HttpListener tests potentially causing hangs/failures in CI I've been unable to reliably repro hangs on Unix locally. As a stand-in, I'm running the managed HttpListener implementation on Windows. There must be enough differences in timing or client behavior or Socket behavior or whatever to trigger a multitude of hangs/asserts, even though this should work reliably. Since it's likely that some subset of these tests are the same ones failing in CI, I've temporarily disabled them all, in hopes of getting CI green reliably. We should aggressively investigate and get these running again; the underlying cause(s) is likely something in the product that would impact real scenarios. A large chunk of them have to do with chunked encoding, so there's very likely a product issue there; also with establishing web socket connections. https://github.com/dotnet/corefx/issues/20246 cc: @geoffkizer, @danmosemsft, @hughbe, @karelz +20319 area-System.Diagnostics Kill notepad in finally {} This may be the cause of a hang we saw in Helix. Also remove path from file in notepad title. This may not be robust enough, we'll see. +20320 area-System.Net Support Two-Key Triple DES (#20275) Direct port of https://github.com/dotnet/corefx/commit/1ce37dfb5a03e5decdb25ee67ef765f89424ceb1 Issue https://github.com/dotnet/corefx/issues/9966 (support 16-byte TripleDES keys for compat with desktop clr) +20321 area-Infrastructure Remove default PR triggers now instead rely on portable pipeline triggers @mmitche @danmosemsft For now the only default triggers coming from netci.groovy are Tizen, the vertical builds, netfx innerloop, and the AllConfigurations legs. +20322 area-Infrastructure Update configurations /cc @weshaggard Update project configurations. I deleted comments that were showing up in every project and getting moved around by the auto update. Note that a few networking tests had empty configurations removed. These were added incorrectly by https://github.com/dotnet/corefx/pull/20208. If you want unique configurations you need to put those in configurations.props. /cc @schen381 @CIPop +20323 area-System.Data SqlClient in .Net Core is missing SqlDataSourceEnumerator SqlClient doesn't have `SqlDataSourceEnumerator` implementation in .Net Core. This should also be exposed via SqlClientFactory +20324 area-System.Security Certificate store issues on OSX Create a self-signed certificate in memory like in: https://github.com/aspnet/DotNetTools/blob/dev/src/Microsoft.AspNetCore.CertificateGeneration.Task/CertificateManager.cs#L24 When you try to add the certificate to the store, the following exception is thrown: ``` Error Message: Interop+AppleCrypto+AppleCommonCryptoCryptographicException : User interaction is not allowed. ``` We've seen this happen intermittently, but when it happens on a machine, it reproduces consistently. +20325 area-System.Drawing Support Full System.Drawing Functionality on .NET Core "### Update: The following is the current plan. * [x] Port the .NET Framework implementation to .NET Core. **WIP, See #20593 .** * [x] Move mono's libgdiplus-based managed implementation from [mono](https://github.com/mono/mono/tree/master/mcs/class/System.Drawing) to corefx * [x] Ensure that there is a code-sharing story between mono and corefx. This likely means removing the source code from mono and importing code from the submodule link that already exists. **In progress. Mono has begun using some portions of the Windows implementation already.** * [x] Port mono's tests for System.Drawing, making any modifications necessary to ensure that they pass on the Windows implementation, which is our baseline for compatibility. **In progress** * [ ] Consolidate differences between the Windows and Unix versions of the library. Document all differences in behavior and mark test cases appropriately. -------------------------------- System.Drawing has been identified as one of the top most-used assemblies that are missing from .NET Core. Although there are 3rd-party alternatives that provide more modern versions of the same functionality ([ImageSharp](https://github.com/JimBobSquarePants/ImageSharp), [SkiaSharp](https://github.com/mono/SkiaSharp), etc.), we believe there is still value in providing a binary-compatible implementation of System.Drawing itself. This issue is intended to document and track the work items involved. There are still lots of open questions; feedback and suggestions are encouraged. ## Priorities: * Simplify migration from .NET Framework to .NET Core. We need to be binary compatible (no recompilation needed for existing assets), and we need to match the behavior as closely as possible. * Support System.Drawing where mono does, and facilitate code sharing between our implementations. As part of this, we will be open-sourcing the original Windows implementation from .NET Framework. This should allow us to improve mono's implementation where it diverges, and hopefully reduce the maintenance burden between us by consolidating code and effort. * **NON-GOALS**: We do not view this library as an opportunity for innovation, nor will we invest significant amounts of effort into optimizing or refactoring it. High performance, rich OS-specific functionality, and a redesigned, modern API are not areas we are interested in investing in as part of this effort. There are alternative libraries which target all of those issues and more. # Plan System.Drawing is, fundamentally, a very thin wrapper over the GDI+ component on Windows. Worse yet, it is not available for UWP applications, so support is limited strictly to Win32 applications. This makes cross-platform implementations difficult, and the largest chunk of work involved with this effort will be figuring out how we can support the library on all of our platforms, and maintaining compatibility between them. There are several existing implementations that we can leverage, but none will support all of our platforms by themselves. We may need several distinct backends in order to get full cross-platform support, although some options could avoid that. The below chart maps implementation approaches (rows) with platform applicability (columns): |Win32 | UWP | macOS | Linux / Others -----|--------|-------|---------|--------- .NET Framework Version (GDI+) | ✓ | X | X | X Direct2D/Win2D|✓|✓|X|X Mono/libgdiplus|✓|X|✓|✓ Xamarin/CoreGraphics|X|X|✓|X Managed|✓|✓|✓|✓ ### .NET Framework Version (GDI+) This is the existing implementation from the .NET Framework on Windows. It is a very thin wrapper around GDI+. * :heavy_check_mark: Baseline implementation. Well-tested, stable. * :x: Can only be used in non-UWP Windows apps (Win32). ### Direct2D/Win2D In order to get UWP support, we could implement a compatibility layer over Direct2D, or Win2D. * :heavy_check_mark: GPU acceleration * :x: Only buys us UWP support over the existing .NET Framework implementation. * :x: High implementation cost * Can be shared between Win32 and UWP applications (Windows 8+ only). ### Mono/libgdiplus This is the implementation used in mono. It uses a complicated native shim called ""libgdiplus"", which relies on a large set of native binaries. * :heavy_check_mark: libgdiplus is available in a large number of package managers across the Unix ecosystem already. This means we can treat the dependency the same way we do the other native dependencies for .NET Core. * :x: Native code adds a lot of complexity for new devs. ### Xamarin/CoreGraphics This is a specialized implementation used by Xamarin, in support of macOS and iOS. Unlike the ""libgdiplus"" mono version, it only uses CoreGraphics (a system component). * :heavy_check_mark: No extra native dependencies; only uses system libraries. * :x: macOS-specific. Could be used for iOS (not supported by .NET Core yet). ### Managed (ImageSharp or custom) One option is to implement the library in managed code. We can call into an existing library, like ImageSharp, for image-processing and graphics functionality. This is very desirable for a lot of reasons, but it does have a higher implementation cost. * :heavy_check_mark: Can be used everywhere. * :heavy_check_mark: Can achieve uniform behavior everywhere (at the expense of conformity with .NET Framework). * :heavy_check_mark: Lower maintenance costs in the long-term. * :x: High implementation cost. ## Windows-Specific One option is to treat the library as a Windows-specific component, similar to Registry. Attempting to install and load the library on other platforms would throw PlatformNotSupportedException's, as Registry does. ## Tests We do not have a very good existing test suite in the .NET Framework. The library is mainly covered indirectly, through other components like WinForms. Mono has a good set of conformance tests for their implementation, which we should be able to re-use. Where appropriate, we should also consider test cases which directly compare output from the .NET Framework implementation and other implementations (assuming we choose to support such things). ## Location An open question is where this library should live. If we take third-party dependencies to support some platforms, we may not want this code to live in corefx. ## Printing Functionality One thing skimmed over above is the fact that System.Drawing exposes a lot of functionality for printing images and documents. This poses a different problem from image-processing and graphics, which can be implemented portably. We may decide to exclude all printing-related portions of the library. ## Future investments Once the library is supported on all platforms, we will accept small, targeted improvements to the library, keeping in mind that legacy compatibility is the only important metric for the library. We will not want to merge any code that refactors, optimizes, or augments the Windows version until we have a fully-working cross-platform implementation. This matches our strategy with other compatibility libraries, like System.IO.SerialPort. @marek-safar @jimbobsquarepants @ViktorHofer @qmfrederik @karelz " +20326 area-Infrastructure How to develop in corefx for UWP Opening on behalf of @CIPop from https://github.com/dotnet/corefx/pull/20322#issuecomment-304102737 >@ericstj @weshaggard /cc @karelz @DavidGoll Could you please help with the following: >1. How to get Visual Studio debugging to work for UWP. >2. How to get Visual Studio build to work correctly for UWP. >3. How to test UWP APIs that are not part of netstandard20 (e.g. APIs that exist in .Net 4.7 / netcoreapp such as TLS Alerts or TLS SystemDefault version). +20327 area-Infrastructure Make portable builds the default and remove non-portable official builds @gkhanna79 @MattGal @ericstj PTAL This should flip corefx to have Portable builds by default and removes all the non-portable build legs in official builds. +20328 area-System.Net Fix some of System.Net.HttpListener test failures on ILC Fixes failures due to ParamName being null on Uap cc: @davidsh @tijoytom +20329 area-Serialization Add tests for DCS Serializing System Types #19119 made changes to many System types and changed they way they're serialized. We'd like to check whether we have tests covering DCS serializing those types. If not, we should add new tests. Here's the list of the types. https://github.com/dotnet/corefx/pull/20247 added tests for BinaryFormatter serializing the types. - [ ] System.Boolean - [ ] System.Byte - [ ] System.Char - [ ] System.Collections.Generic.LongEnumEqualityComparer`1[[System.Runtime.Serialization.Formatters.Tests.UInt64Enum]] - [ ] System.Collections.Generic.EnumEqualityComparer`1[[System.Runtime.Serialization.Formatters.Tests.UInt32Enum]] - [ ] System.Collections.Generic.SByteEnumEqualityComparer`1[[System.Runtime.Serialization.Formatters.Tests.SByteEnum]] - [ ] System.Collections.Generic.ShortEnumEqualityComparer`1[[System.Runtime.Serialization.Formatters.Tests.Int16Enum]] - [ ] System.Collections.Generic.SortedList`2[[System.Int32],[System.Runtime.Serialization.Formatters.Tests.Point]] - [ ] System.Collections.ObjectModel.ObservableCollection`1[[System.Int32]] // The implementations between core and netfx are completely different. I don't think serialization works here without a custom serialization routine - [ ] System.Collections.ObjectModel.ReadOnlyDictionary`2[[System.Int32],[System.String]] - [ ] System.Collections.ObjectModel.ReadOnlyObservableCollection`1[[System.Int32]] - [ ] System.Collections.Specialized.ListDictionary - [ ] System.Collections.Specialized.StringCollection - [ ] System.ComponentModel.BindingList`1[[System.Runtime.Serialization.Formatters.Tests.Point]] - [ ] System.Data.SqlTypes.SqlBoolean - [ ] System.Data.SqlTypes.SqlByte - [ ] System.Data.SqlTypes.SqlDateTime - [ ] System.Data.SqlTypes.SqlDouble - [ ] System.Data.SqlTypes.SqlInt16 - [ ] System.Data.SqlTypes.SqlInt32 - [ ] System.Data.SqlTypes.SqlInt64 - [ ] System.Data.SqlTypes.SqlString - [ ] System.Double - [ ] System.Drawing.Point - [ ] System.Drawing.PointF - [ ] System.Drawing.Rectangle - [ ] System.Drawing.RectangleF - [ ] System.Drawing.Size - [ ] System.Drawing.SizeF - [ ] System.Globalization.CompareInfo - [ ] System.Globalization.SortVersion - [ ] System.Int16 - [ ] System.Int32 - [ ] System.Int64 - [ ] System.Lazy`1[[System.Int32]] - [ ] System.Net.Cookie - [ ] System.Net.CookieCollection // I expect issues here as netfx and core are using different types in serialized fields - [ ] System.Net.CookieContainer - [ ] System.SByte - [ ] System.Single - [ ] System.UInt16 - [ ] System.UInt32 - [ ] System.UInt64 +20330 area-System.Data Fixing System.Data.SqlClient.ManualTesting tests and System.Data.SqlClient.Stress tests for uapaot cc: @weshaggard @danmosemsft @tijoytom Fixing all 3 System.Data.SqlClient.* tests projects that where failing to produce testresults.xml due to missing sni.dll in the test folder. +20331 area-System.Diagnostics How to use EventCounters? The lack of Performance Counters in .NET Core is blocking me to use ASP.NET Core for Enterprise applications. I found many issues telling us to use EventCounters, but I couldn't find docs or even code in the repository using it. There is any docs? Anyway, ETW events doesn't replace Performance Counters, I use it to monitor Req/sec and I can't see how to do it easily with ETW, or ask the support team to monitor or collect it. Would be nice to have a Windows only implementation. Thanks +20332 area-System.Net AppCompat: converting two HWR properties to no-op. Fixes #20043 +20333 area-Infrastructure Update buildtools and extensions and do tests cleanup for new attributes behavior This updates Xunit.NetCore.Extensions to have the new behavior of SkipOnTargetAttribute and ActiveIssueAttribute. Updates buildtools to consume the version that fix an issue where -notrait category=nonosgrouptests was added duplicated to RunTests.cmd in tests.targets Also this is an initial cleanup to use the new behaviors of the Attributes. Will open more PRs to do this cleanup but I wanted to split it in different PRs to make it easier to review. cc: @danmosemsft @tijoytom @weshaggard FYI: @hughbe @davidsh @CIPop you can now use ActiveIssue for test classes. I'm preparing a new doc for the test attributes. Will push it later when I'm done and I'll point it to you. +20334 area-System.Diagnostics Add Regression test for Microsoft-Diagnostics-DiagnosticSource EventSource issue Issue #20315 exposed the fact that we don't test the Microsoft-Diagnostics-DiagnosticSource at process startup, which is a likely customer scenario (Thus the source is on at process start). I started to try to add a test to the System.Diagnostics.DiagnosticSource project, but it is not easy because there is no easy way to turn on the EventSource from outside the process (you need to be set up to turn it on using ETW). This gets ugly because ETW is windows-specific. It occurs to me that the EventSource testing ALREADY set up to do this (use ETW to control the logging from outside the process). Thus my proposal is to add some Microsoft-Diagnostics-DiagnosticSource testing (most specifically having this source turned on before process start) added to the EventSource testing. There was an issue with this (as EventSource is part of CoreCLR not CoreFX), so I would like Brian to weigh in before proceeding. @brianrob @lmolkova +20335 area-Infrastructure Update CoreClr to preview2-25326-01 (release/2.0.0) +20336 area-System.Diagnostics Fix link in docs User reported to me that a link did not work. Fixed it. +20337 area-System.Diagnostics Fix for a null ref error using Microsoft-Diagnostics-DiagnosticSource EventSource (release/2.0.0) This merges PR #20316 into the 2.0 branch. Fixes #20306 +20338 area-Infrastructure [ActiveIssue(nnn, TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp)] will run the test on Windows "I've added the ActiveIssue to a test then ran: `msbuild /t:rebuild,test /p:Outerloop=true ""/p:XunitOptions=-class System.Net.Tests.HttpListenerAuthenticationTest` The test is still executed. " +20339 area-System.Data Added cleanup for cached async state in SqlCommand's EndExecute metho… …ds before they throw exceptions. Without this cleanup, a subsequent command execution will fail since it will appear as though other async commands are still pending. When running SqlClient's TVP tests with Managed SNI enabled, exceptions were getting thrown earlier during async execution than with Native SNI, which surfaced this bug. The SqlCommand would throw an exception without resetting the async state, causing subsequent commands to fail due to pending async operations. This async state cleanup matches the other exception cleanup behavior elsewhere in SqlCommand. Fixes in master #20340 +20340 area-System.Data Command execution fails in SqlClient TvpTest due to pending async operations after cancellation When running the SqlClient TVPTests with Managed SNI enabled, command execution fails due to pending async operations in SqlCommand after cancelling a previous command. This is due to SqlCommand not cleaning up its cached async state before throwing the exception for the command cancellation, causing subsequent command executions to fail since it looks like other async commands are still pending. +20341 area-System.Net Fixing null-ref in HttpListener's IOCP implementation. Fixing test platform detection, stabilizing NetFX tests and renaming tests to fit the naming convention. Contributes to #20096 +20342 area-System.Runtime Nullable.IsNullOrDefault "``` csharp public static class Nullable { public static bool IsNullOrDefault(this T? box, T defaultValue = default(T)) where T : struct { return !box.HasValue || Equals(box.value, defaultValue); } } ``` We already have string.IsNullOrEmpty, how about like this ``` csharp public void Func(Guid? id) { if(id.IsNullOrDefault()) { throw new ArgumentNullException(nameof(id), ""your input is null or empty.""); } // do something... } ``` and like this ``` csharp public void Func(int? value) { // define a border value means it's not a enable value. if(value.IsNullOrDefault(int.MinValue)) { throw new ArgumentOutOfRangeException(nameof(id), ""your input is null or unable.""); } // do something... } ```" +20343 area-Infrastructure Update xUnit Performance API with a bug fix that enables Linux runs. +20344 area-System.Diagnostics Port to fix test hang (#20319) Port change to better match notepad title and kill it if assert fails. Address test hang. Porting PR #20319 into rel/2.0.0 +20345 area-System.Reflection Add metdata API to get module custom attributes ### Rationale System.Reflection.Metadata offers convenience methods to access custom attributes on most of the record types that correspond to `HasCustomAttribute` token types in the ECMA-335 spec. Notable omission is the `ModuleDefinition` record. ### Proposed API ```csharp namespace System.Reflection.Metadata { public struct ModuleDefinition { public CustomAttributeHandleCollection GetCustomAttributes(); } } ``` ### Other thoughts This can be worked around with `MetadataReader.GetCustomAttributes(System.Reflection.Metadata.Ecma335.MetadataTokens.EntityHandle(0x1))`, but it's rather awkward. +20346 area-System.Net fix HttpListener chunked encoding handling Partial fix for #20246 (1) CompletedSynchronously logic in HttpStreamAsyncResult is bogus. Just always return false since we are never actually completing synchronously. (2) Handling of nread == 0 in ChunkedInputStream is bogus. We need to test nread == 0 on the result of the underlying read, not on the result after processing the chunk data -- for which nread == 0 is perfectly valid. (3) There's some weird logic in ChunkStream around handling offset/size that smells bad but doesn't actually seem to matter in practice as used; add a comment and assert and a test, and remove some related dead code (4) Re-enable some tests @stephentoub @danmosemsft +20347 area-System.Runtime "Test: System.Tests.EnvironmentTests/CurrentDirectory_SetToValidOtherDirectory failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/CurrentDirectory_SetToValidOtherDirectory` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Tests.EnvironmentTests.CurrentDirectory_SetToValidOtherDirectory() Build : Master - 20170526.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170526.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FCurrentDirectory_SetToValidOtherDirectory +20348 area-System.Runtime "Test: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/Roundtrip_CrossProcess failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/Roundtrip_CrossProcess(obj: Tree`1 { Left = Tree`1 { Left = Tree`1 { ... }, Right = Tree`1 { ... }, Value = 2 }, Right = Tree...` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Roundtrip_CrossProcess(Object obj) Build : Master - 20170526.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170526.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FRoundtrip_CrossProcess(obj:%20Tree%601%20%7B%20Left%20=%20Tree%601%20%7B%20Left%20=%20Tree%601%20%7B%20...%20%7D,%20Right%20=%20Tree%601%20%7B%20...%20%7D,%20Value%20=%202%20%7D,%20Right%20=%20Tree... +20349 area-System.Runtime "Test: System.Tests.ExceptionTests/Exception_TargetSite_Aot failed with ""Xunit.Sdk.NullException""" Opened on behalf of @Jiayili1 The test `System.Tests.ExceptionTests/Exception_TargetSite_Aot` has failed. Assert.Null() Failure\r Expected: (null)\r Actual: Void Exception_TargetSite_Aot() Stack Trace: at System.Tests.ExceptionTests.Exception_TargetSite_Aot() Build : Master - 20170526.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170526.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.ExceptionTests~2FException_TargetSite_Aot +20351 area-System.Runtime "Tests under: System.Tests.TypeTestsExtended failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.TypeTestsExtended/GetTypeByName` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Tests.TypeTestsExtended.GetTypeByName() Build : Master - 20170526.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170526.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.TypeTestsExtended~2FGetTypeByName +20352 area-System.Security "Tests under: System.Security.AccessControl.Tests.FileSystemAccessRule_Tests failed with ""System.ArgumentNullException""" "Opened on behalf of @Jiayili1 The test `System.Security.AccessControl.Tests.FileSystemAccessRule_Tests/AccessRule_Constructor(sid: \""S-1-5-32-544\"", accessMask: 1, isInherited: True, inheritanceFlags: 1, propagationFlags: 0, accessC...` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: identity Stack Trace: at System.Security.AccessControl.AuthorizationRule..ctor(IdentityReference identity, Int32 accessMask, Boolean isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags) at System.Security.AccessControl.AccessRule..ctor(IdentityReference identity, Int32 accessMask, Boolean isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) at System.Security.AccessControl.FileSystemAccessRule..ctor(IdentityReference identity, FileSystemRights fileSystemRights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) at System.Security.AccessControl.Tests.FileSystemAccessRule_Tests.Constructor(IdentityReference identityReference, Int32 accessMask, Boolean isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType accessControlType) at System.Security.AccessControl.Tests.AccessRule_Tests.AccessRule_Constructor(String sid, Int32 accessMask, Boolean isInherited, Int32 inheritanceFlags, Int32 propagationFlags, Int32 accessControlType) Build : Master - 20170526.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170526.01/workItem/System.Security.AccessControl.Tests/analysis/xunit/System.Security.AccessControl.Tests.FileSystemAccessRule_Tests~2FAccessRule_Constructor(sid:%20%5C%22S-1-5-32-544%5C%22,%20accessMask:%201,%20isInherited:%20True,%20inheritanceFlags:%201,%20propagationFlags:%200,%20accessC..." +20353 area-System.Threading Test failure: System.Threading.Tasks.Dataflow.Tests.EtwTests/TestEtw Opened on behalf of @Jiayili1 The test `System.Threading.Tasks.Dataflow.Tests.EtwTests/TestEtw` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Threading.Tasks.Dataflow.Tests.EtwTests.TestEtw() Build : Master - 20170526.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170526.01/workItem/System.Threading.Tasks.Dataflow.Tests/analysis/xunit/System.Threading.Tasks.Dataflow.Tests.EtwTests~2FTestEtw +20356 area-Infrastructure .NET Core Solution design having issues with reference to old version libraries I am in process of designing a basic application, where I would need to utilize my exiting .net libraries which I have written using `Framework 4.5` I am trying to design following structure: -CODE - doamin.csproj built on .NET 45 framework.(Portable Library Class) -Business.csproj - TargetFramework - netstandard1.1 - ProjectReference - domain.csproj - WebApi.csproj -TargetFramework - netcoreapp1.1 - ProjectReference - Business.csproj -TEST - Business.Tests.csproj - TargetFramework - netstandard1.1 - ProjectReference - domain.csproj - ProjectReference - Business.csproj - WebAPI.Tests.csproj -TargetFramework - netcoreapp1.1 - ProjectReference - Business.csproj - ProjectReference - WebApi.csproj Understanding: 1. **`Business.csproj`** is targeting framework `netstandard1.4`, as both `.NET Framework (4.5.x)` & `.NET Core` implements `netstandard1.4` 2. **`WebApi.csproj`** is targeting framework `netcoreapp1.1` as it is need for ASP.NET Core features & referencing project **`Business.csproj`** built on `netstandard1.4` Now when try to restore packages - I am getting following errors: >One or more packages are incompatible with .NETCoreApp,Version=v1.1. >Package Microsoft.Composition 1.0.27 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.Composition 1.0.27 supports: portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259) Error One or more packages are incompatible with .NETCoreApp,Version=v1.1. +20357 area-Infrastructure Fix missing quote in trimming item Missed this during initial commit but caught during testing when merging to release. /cc @weshaggard +20358 area-System.Net Need to add test for ClientWebSocketOptions.SetBuffer() desktop implementation In ClientWebSocketOptions.SetBuffer(), we have validations for parameters passed in. .Net Core has this implementation: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocketOptions.cs#L168 While .Net Framework's implementation is different: https://github.com/Microsoft/referencesource/blob/master/System/net/System/Net/WebSockets/WebSocketHelpers.cs#L471 Which causes failure for ClientWebSocketOptionsTests: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/tests/ClientWebSocketOptionsTests.cs#L37 Need to test desktop separately. +20359 area-Serialization Area-Serialization Sprint 119 The issue is for tracking issues to be done in sprint 119 (due by 6/16/2017) +20360 area-System.Net Different error message when ClientWebSocket tries to connect to a non websocket server in desktop When ClientWebSocket tries to connect to a non websocket server, we will get a WebSocketException. But the error message is different in desktop. Which causes failure for this assert: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/tests/ConnectTest.cs#L32 In framework, status 101 is the first case to throw, and has error message (The server returned status code '{0}' when status code '101' was expected): https://github.com/Microsoft/referencesource/blob/master/System/net/System/Net/WebSockets/ClientWebSocket.cs#L265 In core, status 101 is the third case to throw, and has error message (Unable to connect to the remote server): https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs#L325 Need to change implementations on all platforms, and make sure that no other tests are failing because of the change. +20361 area-Serialization Update Tests for Exception Serialization https://github.com/dotnet/corefx/issues/19119 removed [Serializable] from most Exceptions except `Exception` and `AggregateException` and made those exceptions' `GetObjectData()` throw. We should update our existing tests to accommodate the change and add tests for custom Exception. +20362 area-System.Net WebSocket state difference when waiting for Close In .Net Core: The WebSocket is only supposed to transition to Closed when the connection is closed, e.g. as part of CloseAsync after a close frame has been both sent and received. But in .Net Framework, if WebSocket is in CloseSent/CloseReceived state and receive/send a close packet, it will immediately transit into Close state (don't wait for CloseAsync). Causes test failure here: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/tests/CloseTest.cs#L285 +20363 area-Infrastructure Remove NuGet metadata This metadata is read by SDK targets and can trip them up since these packages don't appear in the deps file. Fixes #20364 /cc @eerhardt @weshaggard +20364 area-Infrastructure NETStandard.Library.NETFramework references don't work well with PreserveCompilationContext Using this in a desktop NETCore.SDK project and setting PreserveCompilationContext is failing to preserve the right information. Ensure we make this work correctly. +20365 area-System.Threading OverlappedData.GetOverlappedFromNative throws PNI on uapaot which causes two tests to crash areaowners: @kouvel @alexperovich @AtsushiKan Two System.Threading.Overlapped tests (OverlappedTests.PackPosTest & OverlappedTests.PackPosTest1) where using a completion callback that would eventually call `OverlappedData.GetOverlappedFromNative` method, which today throws `NotImplementedException` on uapaot. This was causing a crash during the test execution, so for the time being I will disable those two. This issue is to track the work of enabling them once that method is implemented for this platform. +20368 area-System.IO System.IO.Tests.FileStream_ctor_sfh_fa_buffer_async.InvalidBufferSizeThrows can fail with ODE I can't see why this should fail, it's in a `using`. @ianhays ? Note this is desktop impl ``` System.IO.Tests.FileStream_ctor_sfh_fa_buffer_async.InvalidBufferSizeThrows [FAIL] 10:47:06 Assert.Throws() Failure 10:47:06 Expected: typeof(System.ArgumentOutOfRangeException) 10:47:06 Actual: typeof(System.ObjectDisposedException): Cannot access a closed file. 10:47:06 Stack Trace: 10:47:06 at System.IO.__Error.FileNotOpen() 10:47:06 at System.IO.FileStream.Flush(Boolean flushToDisk) 10:47:06 at System.IO.FileStream.get_SafeFileHandle() 10:47:06 D:\j\workspace\netfx_windows---50c21bdb\src\System.IO.FileSystem\tests\FileStream\ctor_sfh_fa_buffer.cs(30,0): at System.IO.Tests.FileStream_ctor_sfh_fa_buffer.<>c__DisplayClass2_0.b__1() ``` +20372 area-System.Net Stop disposing previous managed HttpListener connection on accept failure The managed implementation of HttpListener launches an asynchronous accept loop: each accept spawns the next async accept. If an async accept fails, for some reason the current code is actually closing the previously accepted connection, which doesn't make sense. Stop doing that. This is the primary cause of the AcceptWebSocket test failures in #20246, but I'm not yet re-enabling those tests as I'm still hitting a similar failure once every 10 or so runs locally when testing the managed listener on Windows (prior to this fix I hit it basically every run). cc: @geoffkizer, @mellinoe +20373 area-System.Data Added cleanup for cached async state in SqlCommand's EndExecute methods before they throw exceptions. Without this cleanup, a subsequent command execution will fail since it will appear as though other async commands are still pending. (#20339) Porting this change to 2.0.0 Fixes #20340 +20374 area-System.Net Fixing initialization issue for IOCP handle. Contributes to #20096. Testing was manually performed. The change was minimized to simplify a 2.0 port. +20375 area-System.Net 2.0 Port: Fixing initialization issue for IOCP handle. Backport of #20374 Contributes to #20096 +20376 area-System.Net Fix some System.Net.WebSockets.Client.Tests failures Contributes to: #19967 +20378 area-System.Runtime Add a StringSegment type ASP.NET Core has a type called [StringSegment](https://github.com/aspnet/Common/blob/7c7031f145413221be316719683edb0bf1b9bf40/src/Microsoft.Extensions.Primitives/StringSegment.cs). It allows substring operations on string to not allocate but return segments using offset and length. It's the spiritual equivalent of `ArraySegment` for string. Note that `Span` will also allow slicing, but spans have different type system constraints that not all consumers can -- or want to -- opt into. ### Proposed API Shape Starting point is the existing API shape from ASP.NET. We should, however, diff it against the latest surface of `string`. ```C# namespace System.Text { public struct StringSegment : IEquatable, IEquatable { public static readonly StringSegment Empty; public StringSegment(string buffer); public StringSegment(string buffer, int offset, int length); public string Buffer { get; } public int Offset { get; } public int Length { get; } public string Value { get; } public bool HasValue { get; } public char this[int index] { get; } public override bool Equals(object obj); public bool Equals(StringSegment other); public bool Equals(StringSegment other, StringComparison comparisonType); public static bool Equals(StringSegment a, StringSegment b, StringComparison comparisonType); public bool Equals(string text); public bool Equals(string text, StringComparison comparisonType); public override int GetHashCode(); public static bool operator ==(StringSegment left, StringSegment right); public static bool operator !=(StringSegment left, StringSegment right); public static implicit operator StringSegment(string value); public bool StartsWith(string text, StringComparison comparisonType); public bool EndsWith(string text, StringComparison comparisonType); public string Substring(int offset); public string Substring(int offset, int length); public StringSegment Subsegment(int offset); public StringSegment Subsegment(int offset, int length); public int IndexOf(char c, int start, int count); public int IndexOf(char c, int start); public int IndexOf(char c); public int IndexOfAny(char[] anyOf, int startIndex, int count); public int IndexOfAny(char[] anyOf, int startIndex); public int IndexOfAny(char[] anyOf); public int LastIndexOf(char value); public StringSegment Trim(); public StringSegment TrimStart(); public StringSegment TrimEnd(); public StringTokenizer Split(char[] chars); public static bool IsNullOrEmpty(StringSegment value); public override string ToString(); } } ``` ### Other APIs In order to make the API useful, we could also define methods on `String` that allow returning segments, e.g. ```C# namespace String { public partial class String { public StringSegment SubSegment(int startIndex) // or Subsegment public StringSegment SubSegment(int startIndex, int length) } } ``` +20381 area-System.Net 2.0 Port: AppCompat: converting two HWR properties to no-op. Port of #20332 Tracking bug: #20043 +20383 area-System.Net 2.0 Port: AppCompat: converting two HWR properties to no-op. Port of #20332 Tracking bug: #20043 +20386 area-Meta Could not find file 'C:\Program Files\dotnet\sdk\1.0.4\minimumMSBuildVersion' "In the latest d15prerel (26526.3001) I'm getting the below error when trying to build any .net Core project. The logs are the same for both C# and VB. The folder exists, but as the logs say, the file is missing. ``` 1>------ Build started: Project: ConsoleApp3, Configuration: Debug Any CPU ------ 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: The build stopped unexpectedly because of an internal failure. 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: System.IO.FileNotFoundException: Could not find file 'C:\Program Files\dotnet\sdk\1.0.4\minimumMSBuildVersion'. 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: File name: 'C:\Program Files\dotnet\sdk\1.0.4\minimumMSBuildVersion' 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.StreamReader..ctor(String path, Encoding encoding) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.File.InternalReadAllLines(String path, Encoding encoding) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.File.ReadAllLines(String path) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at Microsoft.DotNet.MSBuildSdkResolver.DotNetMSBuildSdkResolver.Resolve(SdkReference sdkReference, SdkResolverContext context, SdkResultFactory factory) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at Microsoft.Build.BackEnd.SdkResolution.GetSdkPath(SdkReference sdk, ILoggingService logger, BuildEventContext buildEventContext, ElementLocation sdkReferenceLocation, String solutionPath, String projectPath) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: The build stopped unexpectedly because of an internal failure. 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: System.IO.FileNotFoundException: Could not find file 'C:\Program Files\dotnet\sdk\1.0.4\minimumMSBuildVersion'. 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: File name: 'C:\Program Files\dotnet\sdk\1.0.4\minimumMSBuildVersion' 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.StreamReader..ctor(String path, Encoding encoding) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.File.InternalReadAllLines(String path, Encoding encoding) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at System.IO.File.ReadAllLines(String path) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at Microsoft.DotNet.MSBuildSdkResolver.DotNetMSBuildSdkResolver.Resolve(SdkReference sdkReference, SdkResolverContext context, SdkResultFactory factory) 1>C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.vbproj : error MSB4014: at Microsoft.Build.BackEnd.SdkResolution.GetSdkPath(SdkReference sdk, ILoggingService logger, BuildEventContext buildEventContext, ElementLocation sdkReferenceLocation, String solutionPath, String projectPath) 1>vbc : warning BC40057: Namespace or type specified in the project-level Imports 'System.Data' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases. 1>ConsoleApp3 -> C:\Users\v-sccarl\Source\Repos\ConsoleApp3\ConsoleApp3\bin\Debug\netcoreapp1.1\ConsoleApp3.dll 1>Done building project ""ConsoleApp3.vbproj"". ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ========== ```" +20387 area-System.Runtime Split off ExitCode_VoidMainAppReturnsSetValue for ILC runs. System.Runtime.Extensions.Tests.dll -method System.Tests.Environment_Exit.ExitCode_VoidMainAppReturnsSetValue fails on ILC because it needs to launch a child process using a test assembly and the build pipeline won't run ILC on that test assembly or copy it to the output directory. This test cannot use RemoteExecutor because it's testing ExitCode and needs to know that it is the true main method. If we want to test this scenario for ILC, it should best be done in a standalone test (probably living in CoreRT) that doesn't sit on top of all this xunit stuff. It's not that we can't hack the build pipeline again to accommodate this, it's more that people (like me) investigating test failures on ILC will not appreciate having yet another 3-5 minutes added to the build time of this project because of one single test. +20388 area-System.Diagnostics Desktop: System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute fails occasionally on NETFX Failed test: System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute (from System.Diagnostics.Process.Tests) Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/67/testReport/System.Diagnostics.Tests/ProcessStartInfoTests/StartInfo_TextFile_ShellExecute/ Configuration: outerloop_netfx_windows_nt_debug MESSAGE: ~~~ System.NullReferenceException : Object reference not set to an instance of an object. ~~~ STACK TRACE: ~~~ at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute() in D:\j\workspace\outerloop_net---903ddde6\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs:line 1013 ~~~ +20389 area-System.Net [Porting][HttpListener] HttpListenerContext.AcceptWebSocketContextAsync throws PNSE for authentication "The following test passes on desktop, but fails with netcoreapp: ```c# [ConditionalFact(nameof(IsNotWindows7OrUapCore))] [ActiveIssue(123, TargetFrameworkMonikers.Netcoreapp)] public async Task AcceptWebSocketAsync_AuthorizationInHeaders_ThrowsNotImplementedException() { Socket.Options.SetRequestHeader(""Authorization"", ""Basic "" + Convert.ToBase64String(Encoding.ASCII.GetBytes(""user:password""))); Factory.GetListener().AuthenticationSchemes = AuthenticationSchemes.Basic; HttpListenerContext context = await GetWebSocketContext(); Assert.Equal(""user"", context.User.Identity.Name); HttpListenerWebSocketContext webSocketContext = await context.AcceptWebSocketAsync(null); IPrincipal user = webSocketContext.User; // Should be copied as User gets disposed when HttpListenerContext is closed. Assert.NotSame(context.User, webSocketContext.User); Assert.Equal(""user"", webSocketContext.User.Identity.Name); Assert.Equal(""Basic"", webSocketContext.User.Identity.AuthenticationType); } ``` A NotImplementedException is also thrown for NTLM/Negotiate/Digest authentication but I can't submit tests for this as these authentication schemes are completely broken (they throw an NRE or hang)" +20390 area-System.Net "Test: System.Net.Http.Functional.Tests.DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledActivityLogging failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledActivityLogging` has failed. Assert.Equal() Failure Expected: 42 Actual: 134 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /root/corefx/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs:line 208 Build : 2.0.0 - 20170527.02 (Portable Core Tests) Failing configurations: - Centos.73.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170527.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.DiagnosticsTest~2FSendAsync_ExpectedDiagnosticCancelledActivityLogging +20391 area-System.Net [HttpListener] [Porting] All calls to HttpListenerWebSocketContext.WebSocket.Receive fail with ArgumentNullException "Following test code passes with netfx, fails with an ArgumentNullException in netcoreapp: ```cs // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; using Xunit; namespace System.Net.Tests { public class HttpListenerWebSocketStreamTests : IDisposable { public static bool IsNotWindows7OrUapCore { get; } = !PlatformDetection.IsWindows7 && PlatformDetection.IsNotOneCoreUAP; private HttpListenerFactory Factory { get; } private HttpListener Listener { get; } private ClientWebSocket Client { get; } private Task ClientConnectTask { get; set; } public HttpListenerWebSocketStreamTests() { Factory = new HttpListenerFactory(); Listener = Factory.GetListener(); Client = new ClientWebSocket(); } public void Dispose() { Factory.Dispose(); Client.Dispose(); if (ClientConnectTask?.IsCompleted == true) { ClientConnectTask?.Dispose(); } } [ConditionalFact(nameof(IsNotWindows7OrUapCore))] public async Task ReceiveAsync_ReadWholeBuffer_Success() { HttpListenerWebSocketContext context = await GetWebSocketContext(); await ClientConnectTask; const string Text = ""Hello Web Socket""; byte[] sentBytes = Encoding.ASCII.GetBytes(Text); await Client.SendAsync(new ArraySegment(sentBytes), WebSocketMessageType.Text, false, new CancellationToken()); byte[] receivedBytes = new byte[sentBytes.Length]; WebSocketReceiveResult result = await context.WebSocket.ReceiveAsync(new ArraySegment(receivedBytes), new CancellationToken()); Assert.Equal(WebSocketMessageType.Text, result.MessageType); Assert.False(result.EndOfMessage); Assert.Null(result.CloseStatus); Assert.Null(result.CloseStatusDescription); Assert.Equal(Text, Encoding.ASCII.GetString(receivedBytes)); } [ConditionalFact(nameof(IsNotWindows7OrUapCore))] public async Task ReceiveAsync_EmptyInnerBuffer_ThrowsArgumentNullException() { HttpListenerWebSocketContext context = await GetWebSocketContext(); await Assert.ThrowsAsync(""buffer.Array"", () => context.WebSocket.ReceiveAsync(new ArraySegment(), new CancellationToken())); } private async Task GetWebSocketContext(string[] subProtocols = null) { if (subProtocols != null) { foreach (string subProtocol in subProtocols) { Client.Options.AddSubProtocol(subProtocol); } } var uriBuilder = new UriBuilder(Factory.ListeningUrl) { Scheme = ""ws"" }; Task serverContextTask = Factory.GetListener().GetContextAsync(); ClientConnectTask = Client.ConnectAsync(uriBuilder.Uri, CancellationToken.None); if (ClientConnectTask == await Task.WhenAny(serverContextTask, ClientConnectTask)) { await ClientConnectTask; Assert.True(false, ""Client should not have completed prior to server sending response""); } HttpListenerContext context = await serverContextTask; return await context.AcceptWebSocketAsync(null); } } } ```" +20392 area-System.Net [HttpListener][Porting] HttpListenerContext.WebSocket.CloseOutputAsync(status, null, cancellationToken) has different behaviour for core and netfx Netfx: null Netcoreapp: string.empty ```cs public static IEnumerable CloseStatus_Valid_TestData() { yield return new object[] { WebSocketCloseStatus.Empty, null, WebSocketCloseStatus.Empty }; } [ConditionalTheory(nameof(IsNotWindows7OrUapCore))] [MemberData(nameof(CloseStatus_Valid_TestData))] public async Task CloseAsync_ValidCloseStatus_Success(WebSocketCloseStatus status, string statusDescription, WebSocketCloseStatus expectedCloseStatus) { HttpListenerWebSocketContext context = await GetWebSocketContext(); Task serverTask = context.WebSocket.CloseOutputAsync(status, statusDescription, new CancellationToken()); byte[] receivedBytes = new byte[512]; Task receiveTask = Client.ReceiveAsync(new ArraySegment(receivedBytes), new CancellationToken()); await Task.WhenAll(serverTask, receiveTask); WebSocketReceiveResult result = await receiveTask; Assert.Equal(expectedCloseStatus, result.CloseStatus); string expectedStatusDescription = statusDescription; if (!PlatformDetection.IsFullFramework && statusDescription == null) { expectedStatusDescription = string.Empty; } Assert.Equal(expectedStatusDescription, result.CloseStatusDescription); Assert.Equal(WebSocketMessageType.Close, result.MessageType); Assert.True(result.EndOfMessage); } ``` I'm submitting tests for this +20393 area-System.Net ClientWebSocket.CloseAsync should match netfx behaviour and throw InvalidOperationException instead of hanging if not connected "```cs [Fact] public async Task Test() { const string Prefix = ""http://localhost:9200/""; var server = new HttpListener(); server.Prefixes.Add(Prefix); server.Start(); var client = new ClientWebSocket(); var uriBuilder = new UriBuilder(Prefix) { Scheme = ""ws"" }; Task serverContextTask = server.GetContextAsync(); Task clientConnectTask = client.ConnectAsync(uriBuilder.Uri, CancellationToken.None); if (clientConnectTask == await Task.WhenAny(serverContextTask, clientConnectTask)) { await clientConnectTask; Assert.True(false, ""Client should not have completed prior to server sending response""); } HttpListenerContext context = await serverContextTask; HttpListenerWebSocketContext webSocketContext = await context.AcceptWebSocketAsync(null); await client.CloseAsync(WebSocketCloseStatus.EndpointUnavailable, ""Hello"", new CancellationToken()); } ``` Netfx: InvalidOperationException thrown Netcoreapp: hang, then WinHttpException thrown for timeout" +20394 area-System.Net [HttpListener][Managed] HttpListenerWebSocketContext.WebSocket.Close should nop after Abort() Following tests are disabled with this issue: - CloseAsync_AfterAborted_Nop - CloseAsync_AfterDisposed_Nop ``` System.Net.Tests.HttpListenerWebSocketTests.CloseAsync_AfterAborted_Nop [FAIL] System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseReceived' Stack Trace: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.CloseOutputAsync(WebSocketCloseStatus closeStatus, String statusDescription, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.CloseAsync_AfterDisposed_Nop [FAIL] System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Closed') for this operation. Valid states are: 'Open, CloseReceived' Stack Trace: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.CloseOutputAsync(WebSocketCloseStatus closeStatus, String statusDescription, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__30.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +20395 area-System.Net [HttpListener][Managed] HttpListenerWebSocketContext.WebSocket.Receive/Close should throw ObjectDisposedException after disposal Following tests are disabled with this issue: - SendAsync_Disposed_ThrowsObjectDisposedException - ReceiveAsync_Disposed_ThrowsObjectDisposedException ``` System.Net.Tests.HttpListenerWebSocketTests.SendAsync_Disposed_ThrowsObjectDisposedException [FAIL] Assert.Throws() Failure Expected: typeof(System.ObjectDisposedException) Actual: typeof(System.Net.WebSockets.WebSocketException): The WebSocket is in an invalid state ('Closed') for this operation. Valid states are: 'Open, CloseReceived' Stack Trace: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.SendAsync(ArraySegment`1 buffer, WebSocketMessageType messageType, Boolean endOfMessage, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.ReceiveAsync_Disposed_ThrowsObjectDisposedException [FAIL] Assert.Throws() Failure Expected: typeof(System.ObjectDisposedException) Actual: typeof(System.Net.WebSockets.WebSocketException): The WebSocket is in an invalid state ('Closed') for this operation. Valid states are: 'Open, CloseSent' Stack Trace: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.ReceiveAsync(ArraySegment`1 buffer, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +20396 area-System.Net [HttpListener][Managed] HttpListenerWebSocketContext close handshakes should not fail "Following tests are disabled with this issue: - CloseAsync_HandshakeStartedFromClient_Success - CloseAsync_HandshakeStartedFromServer_Success ``` xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.HttpListener.Tests Discovered: System.Net.HttpListener.Tests Starting: System.Net.HttpListener.Tests System.Net.Tests.HttpListenerWebSocketTests.CloseAsync_HandshakeStartedFromClient_Success(status: -1, statusDescription: \""Negative\"", expectedCloseStatus: 65535) [FAIL] System.Net.WebSockets.WebSocketException : The remote party closed the WebSocket connection without completing the close handshake. ---- System.Net.WebSockets.WebSocketException : An exception caused the WebSocket to enter the Aborted state. Please see the InnerException, if present, for more details. Stack Trace: at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.WebSockets.ManagedWebSocket.d__65.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__62.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() System.Net.Tests.HttpListenerWebSocketTests.CloseAsync_HandshakeStartedFromClient_Success(status: Empty, statusDescription: null, expectedCloseStatus: Empty) [FAIL] Assert.Equal() Failure Expected: Empty Actual: NormalClosure Stack Trace: at System.Net.Tests.HttpListenerWebSocketTests.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.CloseAsync_HandshakeStartedFromClient_Success(status: EndpointUnavailable, statusDescription: \""\"", expectedCloseStatus: EndpointUnavailable) [FAIL] System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Closed') for this operation. Valid states are: 'Open, CloseReceived, CloseSent' Stack Trace: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.CloseAsync(WebSocketCloseStatus closeStatus, String statusDescription, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.CloseAsync_HandshakeStartedFromClient_Success(status: MandatoryExtension, statusDescription: \""StatusDescription\"", expectedCloseStatus: MandatoryExtension) [FAIL] System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Closed') for this operation. Valid states are: 'Open, CloseReceived, CloseSent' Stack Trace: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.CloseAsync(WebSocketCloseStatus closeStatus, String statusDescription, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.Dispose_CallAfterDisposed_Nop [FAIL] Assert.Equal() Failure Expected: Aborted Actual: Closed Stack Trace: at System.Net.Tests.HttpListenerWebSocketTests.d__32.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.CloseOutputAsync_HandshakeStartedFromClient_Success(status: -1, statusDescription: \""Negative\"", expectedCloseStatus: 65535) [FAIL] System.Net.WebSockets.WebSocketException : The remote party closed the WebSocket connection without completing the close handshake. ---- System.Net.WebSockets.WebSocketException : An exception caused the WebSocket to enter the Aborted state. Please see the InnerException, if present, for more details. Stack Trace: at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__26.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.WebSockets.ManagedWebSocket.d__65.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__62.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() System.Net.Tests.HttpListenerWebSocketTests.CloseOutputAsync_HandshakeStartedFromClient_Success(status: Empty, statusDescription: null, expectedCloseStatus: Empty) [FAIL] System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.Environment.get_StackTrace() at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) at System.Net.WebSockets.WinHttpWebSocket.InternalReceiveAsync(ArraySegment`1 buffer) at System.Net.WebSockets.WinHttpWebSocket.d__27.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.WebSockets.WinHttpWebSocket.ReceiveAsync(ArraySegment`1 buffer, CancellationToken cancellationToken) at System.Net.WebSockets.WebSocketHandle.ReceiveAsync(ArraySegment`1 buffer, CancellationToken cancellationToken) at System.Net.WebSockets.ClientWebSocket.ReceiveAsync(ArraySegment`1 buffer, CancellationToken cancellationToken) at System.Net.Tests.HttpListenerWebSocketTests.d__26.MoveNext() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c__DisplayClass4_0.b__0() at System.Runtime.CompilerServices.TaskAwaiter.<>c__DisplayClass11_0.b__0() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from AddCurrentStack --- at System.Net.WebSockets.WinHttpWebSocket.InternalReceiveAsync(ArraySegment`1 buffer) at System.Net.WebSockets.WinHttpWebSocket.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.HttpListenerWebSocketTests.d__26.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.CloseOutputAsync_HandshakeStartedFromClient_Success(status: EndpointUnavailable, statusDescription: \""\"", expectedCloseStatus: EndpointUnavailable) [FAIL] Assert.Equal() Failure Expected: Closed Actual: CloseReceived Stack Trace: at System.Net.Tests.HttpListenerWebSocketTests.d__26.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Net.Tests.HttpListenerWebSocketTests.CloseOutputAsync_HandshakeStartedFromClient_Success(status: MandatoryExtension, statusDescription: \""StatusDescription\"", expectedCloseStatus: MandatoryExtension) [FAIL] Assert.Equal() Failure Expected: Closed Actual: CloseReceived Stack Trace: at System.Net.Tests.HttpListenerWebSocketTests.d__26.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Finished: System.Net.HttpListener.Tests === TEST EXECUTION SUMMARY === System.Net.HttpListener.Tests Total: 33, Errors: 0, Failed: 13, Skipped: 0, Time: 6.938s Press enter key to continue... ```" +20397 area-System.Net [HttpListener][Managed] HttpListenerWebSocketContext.WebSocket.Dispose should abort, not close the socket Following tests are disabled with this issue: - Dispose_CallAfterDisposed_Nop ``` System.Net.Tests.HttpListenerWebSocketTests.Dispose_CallAfterDisposed_Nop [FAIL] Assert.Equal() Failure Expected: Aborted Actual: Closed Stack Trace: at System.Net.Tests.HttpListenerWebSocketTests.d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` +20398 area-System.Net Add more HttpListener WebSocket tests Contributes to #13618 Contributes to #20389 Contributes to #20391 +20400 area-System.Net [HttpListener][Porting] authentication failures with GetContextAsync throw an Unhandled inner exception for NativeOverlapped used for multiple operations Steps to reproduce: 1. Pull in this commit https://github.com/hughbe/corefx/commit/aa948b02cc9ad4f23fde77502382f5f6a9c42e8b 2. Run the tests Observe: ``` Discovering: System.Net.HttpListener.Tests Discovered: System.Net.HttpListener.Tests Starting: System.Net.HttpListener.Tests Unhandled Exception: Unhandled Exception: Unhandled Exception: Unhandled Exception: System.InvalidOperationException: NativeOverlapped cannot be reused for multiple operations. at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOv erlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOve rlapped* pOVERLAP) System.InvalidOperationException: NativeOverlapped cannot be reused for multiple operations. at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOv erlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOve rlapped* pOVERLAP) System.InvalidOperationException: NativeOverlapped cannot be reused for multiple operations. at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOv erlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOve rlapped* pOVERLAP) System.InvalidOperationException: NativeOverlapped cannot be reused for multiple operations. at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOv erlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOve rlapped* pOVERLAP) Finished running tests. End time=11:41:39.75, Exit code = -532462766 ``` @CIPop you were taking a look at authentication recently +20407 area-System.Security Add ClaimsIdentity.NameIdentifier property. "`ClaimsIdentity` currently expose the `Name` property but feels like it missing the `NameIdentifier` property. Since `Claim` is the recommended way to work with authentication and the most common property that developers needs to work with when dealing with users is the UserId, known as the `subject` or `NameIdentifier` claim, it's a great opportunity to make a better api for developers to access that value. # Rationale and Usage This is certainly a nice-to-have, but it is a long-standing issue in various versions of ASP.NET Identity where there were always questions and *workarounds* in how to get the user id (a pretty basic need), the use of different `Type` for the primary key made methods (extension or not) hard to deal with from usage and for library to implement them. Having the `NameIdentifier` claim as a property (which is already on the `ClaimsIdentity` object) would make developers access the userId value without the need of a dependency (like `UserManager`) in a consistent and reliable way. Note: This is **not** about `Identity` specific, I'm using it as an example. Historically the `Name` property on `ClaimsIdentity` were used many times to have the User Identifier since the id is normally more helpful than the Name, unfortunately one must pick one or the other while both are useful and serve different purposes and also feels like a hack to have a property that doesn't really represent it's intent. ## Examples (without this change) For example, using Identity, to get the the NameIdentifier Claim right you have 2 options with it's respective problems: 1 - Get the claim as it were any other claim `string userId = User.FindFirstValue(ClaimTypes.NameIdentifier);` configuring another claim for the Identifier (like ""sub"" in the case of OIDC) will break existing code and needs to be updated to `User.FindFirstValue(""claimType"");` 2 - Using the UserManager (similar for any other developer/library custom implementation) `string userId = Microsoft.AspNetCore.Identity.UserManager().GetUserId(User);` This won't break if the claimtype changes but requires to have a dependency on the `UserManager` (or any custom implementation) everywhere you would need to get the userid which shouldn't be needed at all. ## Example (with this change) `User.Identity.NameIdentifier` # Proposed API ```c# public ClaimsIdentity(IIdentity identity, IEnumerable claims, string authenticationType, string nameType, string roleType, string nameIdentifierType) public const string DefaultNameIdentifierClaimType = ClaimTypes.NameIdentifier; public string NameIdentifierClaimType { get; } public virtual string NameIdentifier { get; } ``` # Detail Adding the `NameIdentifier` and `NameIdentifierClaimType` property to `ClaimsIdentity` solve both problems, you can change the `ClaimIdentifierType` like this: ```c# services.Configure(options => { options.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject; }); ``` and code using `ClaimIdentity.NameIdentifier` will return the *right* thing. No dependency, library, or custom code needed. # Open Questions Should `NameIdentifier` be the right name for this property? I'm not aware where the name came from nor the history behind this, while NameIdentifier sounds good may there's opportunity to make it even better. " +20413 area-Meta Yoga metdown jillian +20414 area-System.Security Support loading cryptographic keys from files other than certificate PFX I understand that this represents a thin wrapper over the Win32 CNG APIs, but it does make a whole suite of cryptographic operations simpler. In my case, I'm trying to read an ECDSA public/private key pair out of a PKCS8 container. In .NET Framework and .NET Core on Windows, this is possible with the following: ``` static ECDsa CreateKeyFromDataCng(byte[] data) => new ECDsaCng(CngKey.Import(data, CngKeyBlobFormat.Pkcs8PrivateBlob)); ``` Under macOS (and I assume Linux too), this throws a `PlatformNotSupportedException`. As per #18733, .NET Core can handle loading ECDSA keys from an X509 structure. Would it be possible to implement the Cng suite of APIs with a backing from a non-Windows-CNG source such as OpenSSL on Linux or the Apple crypto libraries on macOS? Failing that, are there any plans for a unified cryptography API in .NET Standard future which would enable a single API call to work across all platforms for fiddly cryptography bits such as this? Thanks. +20416 area-Infrastructure Update CoreClr, Standard to preview2-25328-01, preview2-25328-01, respectively (release/2.0.0) +20418 area-System.Diagnostics ActivityTests DiagnosticSourceStartStop failed in CI https://mc.dot.net/#/user/dotnet-bot/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fportable~2Fcli~2F/c79148689a54240393f14c58768b066f6515b9cc/workItem/System.Diagnostics.DiagnosticSource.Tests/analysis/xunit/System.Diagnostics.Tests.ActivityTests~2FDiagnosticSourceStartStop ``` Unhandled Exception of Type Xunit.Sdk.TrueException Message : Assert.True() Failure\nExpected: True\nActual: False Stack Trace : at System.Diagnostics.Tests.ActivityTests.DiagnosticSourceStartStop() in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Release+OuterLoop_false_prtest/src/System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs:line 442 ``` +20419 area-System.Net HttpClient on Linux does not correctly handle zero-length chunked body "Run the following code: ``` TcpListener listener = new TcpListener(IPAddress.Loopback, 0); listener.Start(); int port = ((IPEndPoint)listener.LocalEndpoint).Port; var acceptTask = listener.AcceptTcpClientAsync(); using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.TransferEncodingChunked = true; Task clientTask = client.PostAsync($""http://localhost:{port}/"", new StringContent("""")); TcpClient server = await acceptTask; Stream serverStream = server.GetStream(); int bytesRead = 0; byte[] buffer = new byte[4096]; while (true) { bytesRead = serverStream.Read(buffer, 0, 4096); if (bytesRead == 0) { break; } Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, bytesRead)); } } ``` You will see output like this: ``` POST / HTTP/1.1 Host: localhost:51288 Accept: */* Content-Type: text/plain; charset=utf-8 Transfer-Encoding: chunked ``` HttpClient should be sending a 0-length chunk terminator, but it's not. Works fine on Windows." +20422 area-System.Net Port HttpListener fixes to release/2.0.0 This ports all changes to HttpListener since we forked the release/2.0.0 branch on May 17th. We can separately do a clean-up port to address any remaining issues addressed today/tomorrow. Fixes #20060. cc: @geoffkizer +20425 area-System.Net "[HttpListener][porting] HttpListenerResponse.AddHeader(""name"", new string('a', 65536)) should throw an ArgumentOutOfRangeException to match netfx behaviour" "All of the following tests pass with netfx, fail with netcoreapp: ```c# private static string s_longString = new string('a', ushort.MaxValue + 1); [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [ActiveIssue(20425, TargetFrameworkMonikers.Netcoreapp)] public async Task AddHeader_LongName_ThrowsArgumentOutOfRangeException() { HttpListenerResponse response = await GetResponse(); AssertExtensions.Throws(""value"", () => response.AddHeader(""name"", s_longString)); } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [ActiveIssue(20425, TargetFrameworkMonikers.Netcoreapp)] public async Task AppendHeader_LongName_ThrowsArgumentOutOfRangeException() { HttpListenerResponse response = await GetResponse(); AssertExtensions.Throws(""value"", () => response.AppendHeader(""name"", s_longString)); } [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [InlineData(""Transfer-Encoding"")] [ActiveIssue(20425, TargetFrameworkMonikers.Netcoreapp)] public async Task Headers_SetRestricted_ThrowsArgumentException(string name) { HttpListenerResponse response = await GetResponse(); AssertExtensions.Throws(""name"", () => response.Headers.Add(name, ""value"")); AssertExtensions.Throws(""name"", () => response.Headers.Add($""{name}:value"")); } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [ActiveIssue(20425, TargetFrameworkMonikers.Netcoreapp)] public async Task Headers_SetLongName_ThrowsArgumentOutOfRangeException() { HttpListenerResponse response = await GetResponse(); AssertExtensions.Throws(""value"", () => response.Headers[""name""] = s_longString); AssertExtensions.Throws(""value"", () => response.Headers.Set(""name"", s_longString)); AssertExtensions.Throws(""value"", () => response.Headers.Add(""name"", s_longString)); AssertExtensions.Throws(""value"", () => response.Headers.Add($""name:{s_longString}"")); AssertExtensions.Throws(""value"", () => response.Headers.Add(HttpResponseHeader.Age, s_longString)); } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotOneCoreUAP))] [ActiveIssue(20425, TargetFrameworkMonikers.Netcoreapp)] public async Task Headers_SetRequestHeader_ThrowsInvalidOperationException() { HttpListenerResponse response = await GetResponse(); Assert.Throws(() => response.Headers[HttpRequestHeader.Accept]); Assert.Throws(() => response.Headers[HttpRequestHeader.Accept] = ""value""); Assert.Throws(() => response.Headers.Set(HttpRequestHeader.Accept, ""value"")); Assert.Throws(() => response.Headers.Add(HttpRequestHeader.Accept, ""value"")); Assert.Throws(() => response.Headers.Remove(HttpRequestHeader.Accept)); } ```" +20428 area-System.Net fix handling of client Close before writing entire Content-Length If the client closes the connection before writing the full body, as specified by the Content-Length header, we should throw an exception on InputStream.Read/ReadAsync. Partial fix for #20246. @stephentoub @hughbe +20429 area-Infrastructure Running tests with netfx from Visual Studio I know that VS isn't officially fully supported in corefx, but is there a way to have the F5/edit, debug continue experience for tests running against netfx? There may be a way to do this with the command line arguments +20430 area-System.Linq Extra 'LambdaExpression.CompileToMethod(DynamicMethod)' overload I suggest to add a new overload `LamdbaExpression.CompileToMethod(DynamicMethod)` to supplement the existing method [LamdbaExpression.CompileToMethod() method](https://msdn.microsoft.com/en-us/library/system.linq.expressions.lambdaexpression.compiletomethod(v=vs.110).aspx). Indeed, the [extended constructor of DynamicMethod](https://msdn.microsoft.com/en-us/library/0d9fd769(v=vs.110).aspx) offers two important options: * the target module * a `skipVisibility` flag that are very convoluted to replicate from from the `LamdbaExpression.CompileToMethod()` angle. This extra overload would also make it easier blend `DynamicMethod`s and `Expression`s in general. +20432 area-System.Net Add tests for HttpListenerResponse header behaviour Contributes to #13618 +20435 area-System.Net HTTPS proxy servers not working with HttpClient "I'm writing a proxy checking service. This is a short test case: ```cs using System; using System.Net; using System.Net.Http; using System.Security.Authentication; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ProxyNetCoreTest { public class WebProxy : IWebProxy { private readonly Uri _uri; public WebProxy(string ip, int port) { _uri = new Uri(""https://"" + ip + "":"" + port); } public Uri GetProxy(Uri destination) => _uri; public bool IsBypassed(Uri host) => false; public ICredentials Credentials { get; set; } } public class Program { public static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Test().Wait(); LogInfo(""---=== END ===---""); Console.ReadKey(); } public static async Task Test() { var url = ""https://api.ipify.org?format=json""; string ip = ""103.254.16.21""; int port = 8080; var handler = new HttpClientHandler { Proxy = new WebProxy(ip, port), UseCookies = false, ServerCertificateCustomValidationCallback = (message, xcert, chain, errors) => { LogInfo(""ServerCertificateCustomValidationCallback""); return true; }, SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls, UseProxy = true }; using (var client = new HttpClient(handler)) { try { using (var request = new HttpRequestMessage(HttpMethod.Get, url)) using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, CancellationToken.None)) { var data = await response.Content.ReadAsStringAsync(); LogInfo(data); } } catch (Exception e) { while (e != null) { LogError(e.ToString()); e = e.InnerException; } } } } public static void LogError(string message) { Console.ForegroundColor = ConsoleColor.Yellow; LogInfo(message); Console.ResetColor(); } public static void LogInfo(string message) { Console.WriteLine($""{DateTime.Now:HH:mm:ss}: {message}""); } } } ``` It works on Linux Mint 18.1 Serena, but does not work on Windows 10. Windows 10 output: ``` C:\Projects\ProxyNetCoreTest\PublishOutput>dotnet ProxyNetCoreTest.dll 19:58:37: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at ProxyNetCoreTest.Program.d__1.MoveNext() in C:\Projects\ProxyNetCoreTest\ProxyNetCoreTest\Program.cs:line 58 19:58:37: System.Net.Http.WinHttpException: A security error occurred at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() 19:58:37: ---=== END ===--- ``` Linux Mint 18.1 Serena output: ``` my-server ProxyTest # dotnet ProxyNetCoreTest.dll 19:59:15: ServerCertificateCustomValidationCallback 19:59:16: {""ip"":""103.254.16.21""} 19:59:16: ---=== END ===--- ``` Windows version does not call ServerCertificateCustomValidationCallback. PS: On a full framework, I used HttpWebRequest and everything was fine. What is the best way to perform multiple requests(10k-20k+) through different proxy servers? It seems to me that HttpClient is bad for this. " +20438 area-System.IO Re-enable two file tests on Unix Closes https://github.com/dotnet/corefx/issues/19965 cc: @JeremyKuhne +20439 area-System.Net ClientWebSocket on Windows may fail to connect to managed HttpListener In our HttpListener tests, we currently have each test create a new HttpListener. Since the HttpListener API doesn't support binding to 0 and having the OS pick an available port, the tests iterate through ports looking for one the HttpListener can bind to. Often the listener ends up on the same port as the previous test, which means the client is effectively given the same Uri on one test as it was on its previous test. The Windows ClientWebSocket is using connection pooling, and while this analysis may not be correct, it appears that sometimes there is a race condition whereby the client tries to reuse an existing connection for test N+1 after the server has closed that connection for test N. This then results in the client failing the connection, with an error like: ``` System.Net.WebSockets.WebSocketException : Unable to connect to the remote server ---- System.Net.WebSockets.WebSocketException : Unable to connect to the remote server -------- System.Net.Http.WinHttpException : The connection with the server was terminated abnormally Stack Trace: C:\Users\stoub\Source\Repos\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Win32.cs(60,0): at System.Net.WebSockets.WebSocketHandle.d__20.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) C:\Users\stoub\Source\Repos\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\ClientWebSocket.cs(157,0): at System.Net.WebSockets.ClientWebSocket.d__16.MoveNext() ``` Disabling the per-process connection pooling in ClientWebSocket, e.g. ```C# uint optionData = 1; if (!Interop.WinHttp.WinHttpSetOption( _operation.SessionHandle, Interop.WinHttp.WINHTTP_OPTION_MAX_CONNS_PER_SERVER, ref optionData)) { WinHttpException.ThrowExceptionUsingLastError(); } ``` causes the failure to go away, as does changing the tests to try to use a different port than was used by the last test. +20440 area-System.Net Workaround pooling issue with managed HttpListener and Windows ClientWebSocket When using the managed HttpListener on Windows, try to create each HttpListener on a different port than the one used for the last test's HttpListener. Workaround for https://github.com/dotnet/corefx/issues/20439 Contributes to https://github.com/dotnet/corefx/issues/20246 (Easiest to review when ignoring whitespace diffs: https://github.com/dotnet/corefx/pull/20440/files?w=1) cc: @geoffkizer +20441 area-System.Data "System.Data.SqlClient.Tests (eg ExecuteScalarAsyncTest) test break CI with ""The server was not found or was not accessible""" https://ci.dot.net/job/dotnet_corefx/job/release_2.0.0/job/ubuntu14.04_release_prtest/185/consoleText ``` Exception from RemoteExecutorConsoleApp(System.Data.SqlClient.Tests, Version=4.2.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.Data.SqlClient.Tests.DiagnosticTest+<>c, b__12_0): Assembly: System.Data.SqlClient.Tests, Version=4.2.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: System.Data.SqlClient.Tests.DiagnosticTest+<>c Method: Int32 b__12_0() Using as the test runtime folder. Running tests... Start time: 01:44:29 Commands: source Dumpling.sh chmod +x /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/bin/testhost/netcoreapp-Linux-Release-x64//dotnet /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/bin/testhost/netcoreapp-Linux-Release-x64//dotnet xunit.console.netcore.exe System.Diagnostics.Tracing.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -notrait category=nonlinuxtests CollectDumps 0 System.Diagnostics.Tracing.Tests /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/bin/AnyOS.AnyCPU.Release/System.Diagnostics.Tracing.Tests/netcoreapp /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Diagnostics.Tracing/tests executing ulimit -c unlimited Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs:line 373 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionFactory.cs:line 136 at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 114 at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 476 at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 1187 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 792 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 711 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 281 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionInternal.cs:line 453 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 1062 at System.Data.SqlClient.SqlConnection.Open() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 598 at System.Data.SqlClient.Tests.DiagnosticTest.<>c.<b__12_1>d.MoveNext() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 269 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.Tests.DiagnosticTest.d__25.MoveNext() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 893 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.Tests.DiagnosticTest.<>c.b__12_0() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 272 xUnit.net console test runner (64-bit .NET Core) --- End of inner exception stack trace --- Copyright (C) 2014 Outercurve Foundation. at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at RemoteExecutorConsoleApp.Program.Main(String[] args) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.cs:line 51 Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs:line 373 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionFactory.cs:line 136 at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 114 at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 476 at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 1187 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 792 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 711 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 281 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionInternal.cs:line 453 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 1062 at System.Data.SqlClient.SqlConnection.Open() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 598 at System.Data.SqlClient.Tests.DiagnosticTest.<>c.<b__12_1>d.MoveNext() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 269 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.Tests.DiagnosticTest.d__25.MoveNext() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 893 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.Tests.DiagnosticTest.<>c.b__12_0() in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/System.Data.SqlClient/tests/FunctionalTests/DiagnosticTest.cs:line 272 --- End of inner exception stack trace --- at RemoteExecutorConsoleApp.Program.Main(String[] args) in /mnt/j/workspace/dotnet_corefx/release_2.0.0/ubuntu14.04_release_prtest/src/Common/tests/System/Diagnostics/RemoteExecutorConsoleApp/RemoteExecutorConsoleApp.cs:line 67 Discovering: System.Diagnostics.Tracing.Tests Discovered: System.Diagnostics.Tracing.Tests Starting: System.Diagnostics.Tracing.Tests System.Data.SqlClient.Tests.DiagnosticTest.ExecuteScalarAsyncTest [FAIL] Assert.Equal() Failure Expected: 42 Actual: 134 ``` +20442 area-System.Runtime Marshal.SizeOf() under Ubuntu 16.04 LTS throws an exception for structs when there is a field of a reference type. _From @marek86 on May 29, 2017 12:0_ public struct A { public double X; public object Obj; } System.Runtime.InteropServices.Marshal.SizeOf() works on Windows but throws ArgumentException on Ubuntu. _Copied from original issue: dotnet/sdk#1263_ +20443 area-System.IO File.WriteAllTextAsync throws an exception when input string is longer than 4096 characters "Code to reproduce the bug ```c# using System; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string str = """"; // Creating string longer than 4096 characters while (str.Length < 4096) { str += ""This is a test\n""; } File.WriteAllTextAsync(""test.txt"", str).Wait(); Console.WriteLine(""Done""); } } } ``` output ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (Index and count must refer to a location within the string. Parameter name: sourceIndex) ---> System.ArgumentOutOfRangeException: Index and count must refer to a location within the string. Parameter name: sourceIndex at System.String.CopyTo(Int32 sourceIndex, Char[] destination, Int32 destinationIndex, Int32 count) at System.IO.File.d__81.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait() at test6.Program.Main(String[] args) ``` dotnet --info ``` .NET Command Line Tools (2.0.0-preview1-005899) Product Information: Version: 2.0.0-preview1-005899 Commit SHA-1 hash: ea746bd0dd Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\Alexandr\.dotnet\x64\sdk\2.0.0-preview1-005899\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ``` " +20444 area-System.Net HttpClientHandlerTest/PostAsync_CallMethod_StreamContent failed with 'WinHttpException : The operation has been canceled' https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170530.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FPostAsync_CallMethod_StreamContent(remoteServer:%20http:~2F~2Fcorefx-net.cloudapp.net~2FVerifyUpload.ashx,%20content:%20StreamContentWithSyncAsyncCop... ``` System.Net.Http.HttpRequestException : An error occurred while sending the request.\r\n---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace : at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__66.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` +20448 area-Meta 16.0.8067.2115 breaks Tags correct. (System.Net.WebClient | System.Windows.Forms.WebBrowser?!?) With 16.0.7967.2161 it's working without Problems. Reproduced on several Workstation. Drop Down is simply not shown when a click is executed on the Select Element. But one can select the Drop-Down Elements with the Arrow Keys. HTML Source Code isn't changed - so I guess it must be a rendering Problem ... Sample to reproduce: http://demo.ex.ortsinfo.at/tools/test2.php Any Ideas on that? Thank you, bye from Austria Andreas Schnederle-Wagner Also asked: https://answers.microsoft.com/en-us/msoffice/forum/msoffice_outlook-mso_win10/16080672115-breaks-select-tags-in-outlook-add-in/d9998470-f1bd-4cf6-85aa-ea5519bc9121 +20453 area-System.IO Fix incorrect length in File.WriteAllTextAsync Fixes https://github.com/dotnet/corefx/issues/20443 cc: @danmosemsft, @JeremyKuhne, @ianhays +20455 area-Infrastructure Fix archgroup for xunit project cc: @weshaggard @danmosemsft Some of the uapaot tests still fail today because we were restoring the incorrect sni.dll (always restoring x64 version). With this change, now we will restore the right one so the tests can run and pass. +20456 area-System.IO FileSystemInfo.Attributes set to -1 if the file gets deleted while in an enumeration on Unix "Summary ---------- When a file gets deleted (or renamed) during an enumeration of all files in the parent directory, accessing the `'Attributes'` property of the FileInfo object returns value `'-1'`. This seems very bad to me because it's not a meaningful `FileAttributes` value and thus the subsequent tests like `(filesystemInfo.Attributes & FileAttributes.Hidden) != 0` will give unexpected results and cause problems. There are 2 issues in my observation: 1. Inconsistent behavior between Windows and Unix platforms. - On Windows, `filesystemInfo.Attributes` returns the original attributes even though the file gets deleted during the enumeration. 2. Breaking change in behavior from `Microsoft.NetCore.App 2.0.0-preview1-002106-00` to `Microsoft.NetCore.App 2.0.0-preview2-25324-03` - With version `2.0.0-preview1-002106-00`, `filesystemInfo.Attributes` raises an `FileNotFoundException` exception. - With version `2.0.0-preview2-25324-03`, `filesystemInfo.Attributes` returns -1 Thought --------- I think it would be the best if we can have the consistent behavior between Windows and Unix platforms. If that's technically not possible, then throwing `FileNotFoundException` exception is better than returnning `-1` because `-1` is not a meaningful value for `FileAttributes` and it will mislead the subsequent code. Repro ------ Program.cs ```CSharp using System; using System.IO; namespace test { class Program { static void Main(string[] args) { string testDir = Path.Combine(Environment.GetEnvironmentVariable(""HOME""), ""temp""); DirectoryInfo dir = new DirectoryInfo(testDir); foreach (FileSystemInfo fileSystemInfo in dir.EnumerateFiles()) { if (string.Equals(fileSystemInfo.Name, ""bb.txt"", StringComparison.InvariantCulture)) { File.Delete(fileSystemInfo.FullName); } try { Console.WriteLine(""{0} - {1}"", fileSystemInfo.Name, fileSystemInfo.Attributes); } catch (System.IO.FileNotFoundException ex) { Console.WriteLine(""{0}: {1}"", ex.GetType().FullName, ex.Message); Console.WriteLine(ex.StackTrace); } } } } } ``` Result: ``` ## Linux ## .NET Command Line Tools (2.0.0-preview1-005952) ## Microsoft .NET Core Shared Framework Host ## Version : 2.0.0-preview1-002106-00 ## Build : 86fe9816c8ba782241c441c3228c665e393c3ef3 > dotnet run cc.txt - Normal System.IO.FileNotFoundException: Could not find file '/home/pi/temp/bb.txt'. at System.IO.FileSystemInfo.EnsureStatInitialized() at System.IO.FileSystemInfo.System.IO.IFileSystemObject.get_Attributes() at System.IO.FileSystemInfo.get_Attributes() at test.Program.Main(String[] args) aa.txt - Normal ``` ``` ## Linux ## .NET Command Line Tools (2.0.0-preview2-006195) ## Microsoft .NET Core Shared Framework Host ## Version : 2.0.0-preview2-25324-03 ## Build : b6c9f8ad69dc3edd601e288198de27975b514306 > dotnet run bb.txt - -1 aa.txt - Normal cc.txt - Normal ``` ``` ## Windows ## .NET Command Line Tools (2.0.0-preview2-006195) ## Microsoft .NET Core Shared Framework Host ## Version : 2.0.0-preview2-25324-03 ## Build : b6c9f8ad69dc3edd601e288198de27975b514306 > dotnet run aa.txt - Archive bb.txt - Archive cc.txt - Archive ```" +20457 area-System.Threading TaskCancelWait1 failed with Task which has been explicitly cancel-requested either by parent must have CancellationRequested set as true\nExpected: True\nActual: False https://mc.dot.net/#/user/stephentoub/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fportable~2Fcli~2F/fb8b5bd13c0251b01a88cd3e65962ec2575fb023/workItem/System.Threading.Tasks.Tests/analysis/xunit/System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTestCases~2FTaskCancelWait1 ``` Task which has been explicitly cancel-requested either by parent must have CancellationRequested set as true\nExpected: True\nActual: False Stack Trace : at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.VerifyCancel(TaskInfo current) in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Threading.Tasks/tests/Task/TaskCancelWaitTest.cs:line 262 at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.b__12_0(TaskInfo current) in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Threading.Tasks/tests/Task/TaskCancelWaitTest.cs:line 208 at System.Threading.Tasks.Tests.CancelWait.TaskInfo.Traversal(Action`1 predicate) in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Threading.Tasks/tests/Task/TaskCancelWaitTest.cs:line 584 at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.Verify() in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Threading.Tasks/tests/Task/TaskCancelWaitTest.cs:line 203 at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest.RealRun() in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Threading.Tasks/tests/Task/TaskCancelWaitTest.cs:line 118 at System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTestCases.TaskCancelWait1() in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Threading.Tasks/tests/Task/TaskCancelWaitTests.cs:line 25 ``` also @Priya91 saw here https://mc.dot.net/#/user/stephentoub/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fportable~2Fcli~2F/fb8b5bd13c0251b01a88cd3e65962ec2575fb023/workItem/System.Threading.Tasks.Tests/analysis/xunit/System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTestCases~2FTaskCancelWait1 +20458 area-Infrastructure Tizen emulator legs regularly timing out Eg https://ci.dot.net/job/dotnet_corefx/job/master/job/tizen_armel_cross_release_prtest/3234/ I don't know whether it's a hang, or just slow progress. @seanshpark @hseok-oh @gkhanna79 @parjong +20460 area-System.IO release/2.0: Fix incorrect length in File.WriteAllTextAsync Port https://github.com/dotnet/corefx/pull/20453 to release/2.0 Fixes https://github.com/dotnet/corefx/issues/20443 +20461 area-System.Net HttpClient with proxy on linux loads cpu on 100% "I'm writing a proxy checking service. This is a short test case: ```cs using System; using System.Collections.Generic; using System.Diagnostics; using System.Net; using System.Net.Http; using System.Security.Authentication; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ProxyNetCoreTest { public static class ExceptionExtensions { public static string GetMessages(this Exception self) { return self.Message + "" | "" + self.InnerException?.GetMessages(); } } public class WebProxy : IWebProxy { public string Ip { get; } public int Port { get; } private readonly Uri _uri; public WebProxy(string ip, int port) { Ip = ip; Port = port; _uri = new Uri(""http://"" + ip + "":"" + port); } public Uri GetProxy(Uri destination) => _uri; public bool IsBypassed(Uri host) => false; public ICredentials Credentials { get; set; } } public class Program { public static List Proxies { get; } = new List { new WebProxy(""1.179.181.17"", 8081), new WebProxy(""1.179.183.93"", 8080), new WebProxy(""1.179.203.10"", 8080), new WebProxy(""1.209.188.190"", 8080), new WebProxy(""1.209.188.197"", 8080), new WebProxy(""101.200.56.102"", 3128), new WebProxy(""101.201.70.31"", 3128), new WebProxy(""101.255.84.184"", 8080), new WebProxy(""103.10.52.83"", 2841), new WebProxy(""103.10.52.83"", 3910), new WebProxy(""103.10.52.83"", 17189), new WebProxy(""103.15.120.147"", 8000), new WebProxy(""103.15.187.116"", 81), new WebProxy(""103.15.251.75"", 80), new WebProxy(""103.18.180.196"", 8080), new WebProxy(""103.205.134.179"", 8080), new WebProxy(""103.21.77.118"", 8080), new WebProxy(""103.212.33.57"", 3128), new WebProxy(""103.228.143.88"", 45554), new WebProxy(""103.242.45.68"", 8080), new WebProxy(""103.254.52.8"", 45554), new WebProxy(""103.254.52.9"", 36819), new WebProxy(""103.255.30.249"", 80), new WebProxy(""103.26.95.34"", 8080), new WebProxy(""103.27.118.146"", 3128), new WebProxy(""103.28.157.45"", 8080), new WebProxy(""103.3.69.33"", 8080), new WebProxy(""103.41.28.46"", 8080), new WebProxy(""103.43.153.165"", 8080), new WebProxy(""103.47.125.4"", 45554), new WebProxy(""103.55.33.54"", 3129), new WebProxy(""103.56.113.55"", 80), new WebProxy(""103.59.57.219"", 45554), new WebProxy(""103.6.245.204"", 8080), new WebProxy(""103.6.245.205"", 8080), new WebProxy(""103.6.245.206"", 8080), new WebProxy(""103.7.131.74"", 80), new WebProxy(""103.70.231.11"", 8080), new WebProxy(""103.76.170.154"", 80), new WebProxy(""103.76.175.84"", 8080), new WebProxy(""104.131.36.177"", 3128), new WebProxy(""104.193.252.181"", 3321), new WebProxy(""104.206.220.119"", 3128), new WebProxy(""104.206.220.12"", 3128), new WebProxy(""104.206.220.120"", 3128), new WebProxy(""104.206.220.121"", 3128), new WebProxy(""104.206.220.123"", 3128), new WebProxy(""104.219.136.138"", 8080), new WebProxy(""104.236.235.211"", 34499), new WebProxy(""106.186.22.65"", 8888), new WebProxy(""107.151.176.96"", 3128), new WebProxy(""107.16.212.37"", 8080), new WebProxy(""107.170.0.226"", 17245), new WebProxy(""107.170.0.226"", 32567), new WebProxy(""107.170.0.226"", 33525), new WebProxy(""107.170.61.29"", 80), new WebProxy(""107.170.61.29"", 3128), new WebProxy(""107.170.61.29"", 8080), new WebProxy(""108.161.151.98"", 80), new WebProxy(""108.166.205.163"", 3128), new WebProxy(""108.179.54.171"", 80), new WebProxy(""108.48.13.44"", 80), new WebProxy(""109.167.113.25"", 8080), new WebProxy(""109.185.180.87"", 8080), new WebProxy(""109.197.184.59"", 8080), new WebProxy(""109.197.184.7"", 8080), new WebProxy(""109.197.188.14"", 8080), new WebProxy(""109.197.188.20"", 8080), new WebProxy(""109.197.188.21"", 8080), new WebProxy(""109.197.188.22"", 8080), new WebProxy(""109.197.188.28"", 8080), new WebProxy(""109.197.188.30"", 8080), new WebProxy(""109.197.190.222"", 8080), new WebProxy(""109.228.46.132"", 3128), }; public static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var sw = new Stopwatch(); sw.Start(); foreach (var proxy in Proxies) { sw.Restart(); Test(proxy).GetAwaiter().GetResult(); LogInfo($""{proxy.Ip}:{proxy.Port} -> Time: {sw.ElapsedMilliseconds}""); } LogInfo(""---=== END ===---""); Console.ReadKey(); } public static async Task Test(WebProxy proxy) { var url = ""https://api.ipify.org?format=json""; var handler = new HttpClientHandler { Proxy = proxy, UseCookies = false, ServerCertificateCustomValidationCallback = (message, xcert, chain, errors) => true, SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls, UseProxy = true }; LogInfo($""{proxy.Ip}:{proxy.Port} -> Start""); using (var client = new HttpClient(handler)) { try { using (var tokenSource = new CancellationTokenSource(4000)) using (var request = new HttpRequestMessage(HttpMethod.Get, url)) using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, tokenSource.Token)) { var data = await response.Content.ReadAsStringAsync(); LogInfo(data); } } catch (Exception e) { LogError($""{proxy.Ip}:{proxy.Port} -> Exception: {e.GetMessages()}""); } } } public static void LogError(string message) { Console.ForegroundColor = ConsoleColor.Yellow; LogInfo(message); Console.ResetColor(); } public static void LogInfo(string message) { Console.WriteLine($""{DateTime.Now:HH:mm:ss}: {message}""); } } } ``` The problem is observed on Linux Mint 18.1 Serena. On Windows 10 the problem is not observed. I attach the output of the program above. All requests that running for more than 4 seconds load 1 core of the processor by 100%. If you run several parallel tasks, the entire processor will be loaded 100%. Also, the cancellation takes place much later than 4 seconds. The problem is observed for different proxy servers and is not always repeated for any particular proxy server. Output for two program starts: ``` akfa@akfa-server /var/NetworkShare/ProxyTest $ dotnet ProxyNetCoreTest.dll 22:45:17: 1.179.181.17:8081 -> Start 22:45:21: 1.179.181.17:8081 -> Exception: A task was canceled. | 22:45:21: 1.179.181.17:8081 -> Time: 4278 22:45:21: 1.179.183.93:8080 -> Start 22:45:26: 1.179.183.93:8080 -> Exception: A task was canceled. | 22:45:26: 1.179.183.93:8080 -> Time: 4257 22:45:26: 1.179.203.10:8080 -> Start 22:45:30: 1.179.203.10:8080 -> Exception: A task was canceled. | 22:45:30: 1.179.203.10:8080 -> Time: 4005 22:45:30: 1.209.188.190:8080 -> Start 22:45:41: 1.209.188.190:8080 -> Exception: The operation was canceled. | 22:45:41: 1.209.188.190:8080 -> Time: 11855 22:45:41: 1.209.188.197:8080 -> Start 22:45:53: 1.209.188.197:8080 -> Exception: The operation was canceled. | 22:45:53: 1.209.188.197:8080 -> Time: 11542 22:45:53: 101.200.56.102:3128 -> Start 22:45:58: 101.200.56.102:3128 -> Exception: A task was canceled. | 22:45:58: 101.200.56.102:3128 -> Time: 4685 22:45:58: 101.201.70.31:3128 -> Start 22:46:02: 101.201.70.31:3128 -> Exception: A task was canceled. | 22:46:02: 101.201.70.31:3128 -> Time: 4005 22:46:02: 101.255.84.184:8080 -> Start 22:46:09: 101.255.84.184:8080 -> Exception: A task was canceled. | 22:46:09: 101.255.84.184:8080 -> Time: 7312 22:46:09: 103.10.52.83:2841 -> Start 22:46:13: 103.10.52.83:2841 -> Exception: A task was canceled. | 22:46:13: 103.10.52.83:2841 -> Time: 4003 22:46:13: 103.10.52.83:3910 -> Start 22:46:17: 103.10.52.83:3910 -> Exception: A task was canceled. | 22:46:17: 103.10.52.83:3910 -> Time: 4003 22:46:17: 103.10.52.83:17189 -> Start 22:46:21: 103.10.52.83:17189 -> Exception: An error occurred while sending the request. | Failure when receiving data from the peer | 22:46:21: 103.10.52.83:17189 -> Time: 3521 22:46:21: 103.15.120.147:8000 -> Start 22:46:25: 103.15.120.147:8000 -> Exception: A task was canceled. | 22:46:25: 103.15.120.147:8000 -> Time: 4007 22:46:25: 103.15.187.116:81 -> Start 22:46:38: 103.15.187.116:81 -> Exception: A task was canceled. | 22:46:38: 103.15.187.116:81 -> Time: 13370 22:46:38: 103.15.251.75:80 -> Start 22:46:42: 103.15.251.75:80 -> Exception: A task was canceled. | 22:46:42: 103.15.251.75:80 -> Time: 4003 22:46:42: 103.18.180.196:8080 -> Start 22:46:46: 103.18.180.196:8080 -> Exception: A task was canceled. | 22:46:46: 103.18.180.196:8080 -> Time: 4003 22:46:46: 103.205.134.179:8080 -> Start 22:46:50: 103.205.134.179:8080 -> Exception: A task was canceled. | 22:46:50: 103.205.134.179:8080 -> Time: 4003 22:46:50: 103.21.77.118:8080 -> Start 22:48:23: 103.21.77.118:8080 -> Exception: The operation was canceled. | 22:48:23: 103.21.77.118:8080 -> Time: 93514 22:48:23: 103.212.33.57:3128 -> Start 22:48:46: 103.212.33.57:3128 -> Exception: A task was canceled. | 22:48:46: 103.212.33.57:3128 -> Time: 22203 22:48:46: 103.228.143.88:45554 -> Start 22:51:49: 103.228.143.88:45554 -> Exception: The operation was canceled. | 22:51:49: 103.228.143.88:45554 -> Time: 183762 22:51:49: 103.242.45.68:8080 -> Start 22:51:57: 103.242.45.68:8080 -> Exception: A task was canceled. | 22:51:57: 103.242.45.68:8080 -> Time: 7768 22:51:57: 103.254.52.8:45554 -> Start 22:52:01: 103.254.52.8:45554 -> Exception: A task was canceled. | 22:52:01: 103.254.52.8:45554 -> Time: 4004 22:52:01: 103.254.52.9:36819 -> Start 22:52:05: 103.254.52.9:36819 -> Exception: A task was canceled. | 22:52:05: 103.254.52.9:36819 -> Time: 4003 22:52:05: 103.255.30.249:80 -> Start 22:52:09: 103.255.30.249:80 -> Exception: A task was canceled. | 22:52:09: 103.255.30.249:80 -> Time: 4151 22:52:09: 103.26.95.34:8080 -> Start 22:52:15: 103.26.95.34:8080 -> Exception: A task was canceled. | 22:52:15: 103.26.95.34:8080 -> Time: 6054 22:52:15: 103.27.118.146:3128 -> Start 22:52:20: 103.27.118.146:3128 -> Exception: A task was canceled. | 22:52:20: 103.27.118.146:3128 -> Time: 4596 22:52:20: 103.28.157.45:8080 -> Start 22:52:24: 103.28.157.45:8080 -> Exception: A task was canceled. | 22:52:24: 103.28.157.45:8080 -> Time: 4003 22:52:24: 103.3.69.33:8080 -> Start 22:52:28: 103.3.69.33:8080 -> Exception: A task was canceled. | 22:52:28: 103.3.69.33:8080 -> Time: 4003 22:52:28: 103.41.28.46:8080 -> Start 22:52:44: 103.41.28.46:8080 -> Exception: A task was canceled. | 22:52:44: 103.41.28.46:8080 -> Time: 15566 22:52:44: 103.43.153.165:8080 -> Start 22:52:48: 103.43.153.165:8080 -> Exception: A task was canceled. | 22:52:48: 103.43.153.165:8080 -> Time: 4797 22:52:48: 103.47.125.4:45554 -> Start 22:52:49: 103.47.125.4:45554 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 22:52:49: 103.47.125.4:45554 -> Time: 207 22:52:49: 103.55.33.54:3129 -> Start 22:52:56: 103.55.33.54:3129 -> Exception: A task was canceled. | 22:52:56: 103.55.33.54:3129 -> Time: 7787 22:52:56: 103.56.113.55:80 -> Start 22:53:31: 103.56.113.55:80 -> Exception: A task was canceled. | 22:53:31: 103.56.113.55:80 -> Time: 35072 22:53:31: 103.59.57.219:45554 -> Start 22:53:34: 103.59.57.219:45554 -> Exception: An error occurred while sending the request. | Failure when receiving data from the peer | 22:53:34: 103.59.57.219:45554 -> Time: 2195 22:53:34: 103.6.245.204:8080 -> Start 22:53:37: {""ip"":""103.6.245.204""} 22:53:37: 103.6.245.204:8080 -> Time: 3384 22:53:37: 103.6.245.205:8080 -> Start 22:53:39: {""ip"":""103.6.245.204""} 22:53:39: 103.6.245.205:8080 -> Time: 2486 22:53:39: 103.6.245.206:8080 -> Start 22:53:42: {""ip"":""103.6.245.204""} 22:53:42: 103.6.245.206:8080 -> Time: 2449 22:53:42: 103.7.131.74:80 -> Start 22:53:48: 103.7.131.74:80 -> Exception: A task was canceled. | 22:53:48: 103.7.131.74:80 -> Time: 5994 22:53:48: 103.70.231.11:8080 -> Start 22:53:52: 103.70.231.11:8080 -> Exception: A task was canceled. | 22:53:52: 103.70.231.11:8080 -> Time: 4003 22:53:52: 103.76.170.154:80 -> Start 22:53:56: 103.76.170.154:80 -> Exception: A task was canceled. | 22:53:56: 103.76.170.154:80 -> Time: 4005 22:53:56: 103.76.175.84:8080 -> Start 22:54:01: 103.76.175.84:8080 -> Exception: A task was canceled. | 22:54:01: 103.76.175.84:8080 -> Time: 5394 22:54:01: 104.131.36.177:3128 -> Start 22:54:14: 104.131.36.177:3128 -> Exception: A task was canceled. | 22:54:14: 104.131.36.177:3128 -> Time: 12817 22:54:14: 104.193.252.181:3321 -> Start 22:54:47: 104.193.252.181:3321 -> Exception: The operation was canceled. | 22:54:47: 104.193.252.181:3321 -> Time: 33204 22:54:47: 104.206.220.119:3128 -> Start 22:54:51: 104.206.220.119:3128 -> Exception: A task was canceled. | 22:54:51: 104.206.220.119:3128 -> Time: 4003 22:54:51: 104.206.220.12:3128 -> Start 22:54:55: 104.206.220.12:3128 -> Exception: A task was canceled. | 22:54:55: 104.206.220.12:3128 -> Time: 4004 22:54:55: 104.206.220.120:3128 -> Start 22:55:13: 104.206.220.120:3128 -> Exception: A task was canceled. | 22:55:13: 104.206.220.120:3128 -> Time: 17736 22:55:13: 104.206.220.121:3128 -> Start 22:55:17: 104.206.220.121:3128 -> Exception: A task was canceled. | 22:55:17: 104.206.220.121:3128 -> Time: 4003 22:55:17: 104.206.220.123:3128 -> Start 22:55:37: 104.206.220.123:3128 -> Exception: A task was canceled. | 22:55:37: 104.206.220.123:3128 -> Time: 19890 22:55:37: 104.219.136.138:8080 -> Start 22:55:43: 104.219.136.138:8080 -> Exception: A task was canceled. | 22:55:43: 104.219.136.138:8080 -> Time: 5933 22:55:43: 104.236.235.211:34499 -> Start 22:55:47: 104.236.235.211:34499 -> Exception: A task was canceled. | 22:55:47: 104.236.235.211:34499 -> Time: 4003 22:55:47: 106.186.22.65:8888 -> Start 22:56:52: 106.186.22.65:8888 -> Exception: The operation was canceled. | 22:56:52: 106.186.22.65:8888 -> Time: 65475 22:56:52: 107.151.176.96:3128 -> Start 22:56:56: 107.151.176.96:3128 -> Exception: A task was canceled. | 22:56:56: 107.151.176.96:3128 -> Time: 4003 22:56:56: 107.16.212.37:8080 -> Start 22:56:58: 107.16.212.37:8080 -> Exception: An error occurred while sending the request. | Failure when receiving data from the peer | 22:56:58: 107.16.212.37:8080 -> Time: 1362 22:56:58: 107.170.0.226:17245 -> Start 22:56:58: 107.170.0.226:17245 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 22:56:58: 107.170.0.226:17245 -> Time: 125 22:56:58: 107.170.0.226:32567 -> Start 22:56:58: 107.170.0.226:32567 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 22:56:58: 107.170.0.226:32567 -> Time: 131 22:56:58: 107.170.0.226:33525 -> Start 22:56:58: 107.170.0.226:33525 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 22:56:58: 107.170.0.226:33525 -> Time: 126 22:56:58: 107.170.61.29:80 -> Start 22:56:59: {""ip"":""107.170.61.29""} 22:56:59: 107.170.61.29:80 -> Time: 680 22:56:59: 107.170.61.29:3128 -> Start 22:57:00: {""ip"":""107.170.61.29""} 22:57:00: 107.170.61.29:3128 -> Time: 744 22:57:00: 107.170.61.29:8080 -> Start 22:57:00: {""ip"":""107.170.61.29""} 22:57:00: 107.170.61.29:8080 -> Time: 705 22:57:00: 108.161.151.98:80 -> Start 22:57:16: 108.161.151.98:80 -> Exception: The operation was canceled. | 22:57:16: 108.161.151.98:80 -> Time: 16184 22:57:16: 108.166.205.163:3128 -> Start 22:58:04: 108.166.205.163:3128 -> Exception: A task was canceled. | 22:58:04: 108.166.205.163:3128 -> Time: 47234 22:58:04: 108.179.54.171:80 -> Start 22:58:46: 108.179.54.171:80 -> Exception: A task was canceled. | 22:58:46: 108.179.54.171:80 -> Time: 42276 22:58:46: 108.48.13.44:80 -> Start 22:58:48: 108.48.13.44:80 -> Exception: An error occurred while sending the request. | Failure when receiving data from the peer | 22:58:48: 108.48.13.44:80 -> Time: 2412 22:58:48: 109.167.113.25:8080 -> Start 22:58:52: 109.167.113.25:8080 -> Exception: A task was canceled. | 22:58:52: 109.167.113.25:8080 -> Time: 4002 22:58:52: 109.185.180.87:8080 -> Start 22:58:56: 109.185.180.87:8080 -> Exception: A task was canceled. | 22:58:56: 109.185.180.87:8080 -> Time: 4003 22:58:56: 109.197.184.59:8080 -> Start 22:58:57: {""ip"":""109.197.184.59""} 22:58:57: 109.197.184.59:8080 -> Time: 707 22:58:57: 109.197.184.7:8080 -> Start 22:58:58: {""ip"":""109.197.184.7""} 22:58:58: 109.197.184.7:8080 -> Time: 715 22:58:58: 109.197.188.14:8080 -> Start 23:03:58: 109.197.188.14:8080 -> Exception: The operation was canceled. | 23:03:58: 109.197.188.14:8080 -> Time: 300118 23:03:58: 109.197.188.20:8080 -> Start 23:03:59: {""ip"":""109.197.188.20""} 23:03:59: 109.197.188.20:8080 -> Time: 1496 23:03:59: 109.197.188.21:8080 -> Start 23:04:00: {""ip"":""109.197.188.21""} 23:04:00: 109.197.188.21:8080 -> Time: 697 23:04:00: 109.197.188.22:8080 -> Start 23:04:02: {""ip"":""109.197.188.20""} 23:04:02: 109.197.188.22:8080 -> Time: 1861 23:04:02: 109.197.188.28:8080 -> Start 23:04:03: {""ip"":""109.197.188.20""} 23:04:03: 109.197.188.28:8080 -> Time: 1181 23:04:03: 109.197.188.30:8080 -> Start 23:04:04: {""ip"":""109.197.188.20""} 23:04:04: 109.197.188.30:8080 -> Time: 1007 23:04:04: 109.197.190.222:8080 -> Start 23:04:05: {""ip"":""109.197.190.222""} 23:04:05: 109.197.190.222:8080 -> Time: 613 23:04:05: 109.228.46.132:3128 -> Start 23:04:15: 109.228.46.132:3128 -> Exception: A task was canceled. | 23:04:15: 109.228.46.132:3128 -> Time: 10359 23:04:15: ---=== END ===--- akfa@akfa-server /var/NetworkShare/ProxyTest $ dotnet ProxyNetCoreTest.dll 23:20:09: 1.179.181.17:8081 -> Start 23:20:35: 1.179.181.17:8081 -> Exception: A task was canceled. | 23:20:35: 1.179.181.17:8081 -> Time: 25715 23:20:35: 1.179.183.93:8080 -> Start 23:20:39: 1.179.183.93:8080 -> Exception: A task was canceled. | 23:20:39: 1.179.183.93:8080 -> Time: 4005 23:20:39: 1.179.203.10:8080 -> Start 23:20:43: 1.179.203.10:8080 -> Exception: A task was canceled. | 23:20:43: 1.179.203.10:8080 -> Time: 4372 23:20:43: 1.209.188.190:8080 -> Start 23:20:54: 1.209.188.190:8080 -> Exception: The operation was canceled. | 23:20:54: 1.209.188.190:8080 -> Time: 11230 23:20:54: 1.209.188.197:8080 -> Start 23:21:09: 1.209.188.197:8080 -> Exception: The operation was canceled. | 23:21:09: 1.209.188.197:8080 -> Time: 14493 23:21:09: 101.200.56.102:3128 -> Start 23:21:13: 101.200.56.102:3128 -> Exception: A task was canceled. | 23:21:13: 101.200.56.102:3128 -> Time: 4005 23:21:13: 101.201.70.31:3128 -> Start 23:22:17: 101.201.70.31:3128 -> Exception: A task was canceled. | 23:22:17: 101.201.70.31:3128 -> Time: 64772 23:22:17: 101.255.84.184:8080 -> Start 23:22:21: 101.255.84.184:8080 -> Exception: A task was canceled. | 23:22:21: 101.255.84.184:8080 -> Time: 4004 23:22:21: 103.10.52.83:2841 -> Start 23:22:25: 103.10.52.83:2841 -> Exception: A task was canceled. | 23:22:25: 103.10.52.83:2841 -> Time: 4004 23:22:25: 103.10.52.83:3910 -> Start 23:22:26: 103.10.52.83:3910 -> Exception: An error occurred while sending the request. | Failure when receiving data from the peer | 23:22:26: 103.10.52.83:3910 -> Time: 523 23:22:26: 103.10.52.83:17189 -> Start 23:22:29: 103.10.52.83:17189 -> Exception: An error occurred while sending the request. | Failure when receiving data from the peer | 23:22:29: 103.10.52.83:17189 -> Time: 3519 23:22:29: 103.15.120.147:8000 -> Start 23:22:33: 103.15.120.147:8000 -> Exception: A task was canceled. | 23:22:33: 103.15.120.147:8000 -> Time: 4001 23:22:33: 103.15.187.116:81 -> Start 23:22:37: 103.15.187.116:81 -> Exception: A task was canceled. | 23:22:37: 103.15.187.116:81 -> Time: 4003 23:22:37: 103.15.251.75:80 -> Start 23:22:42: 103.15.251.75:80 -> Exception: A task was canceled. | 23:22:42: 103.15.251.75:80 -> Time: 4005 23:22:42: 103.18.180.196:8080 -> Start 23:22:46: 103.18.180.196:8080 -> Exception: A task was canceled. | 23:22:46: 103.18.180.196:8080 -> Time: 4007 23:22:46: 103.205.134.179:8080 -> Start 23:22:52: 103.205.134.179:8080 -> Exception: A task was canceled. | 23:22:52: 103.205.134.179:8080 -> Time: 6762 23:22:52: 103.21.77.118:8080 -> Start 23:22:56: 103.21.77.118:8080 -> Exception: A task was canceled. | 23:22:56: 103.21.77.118:8080 -> Time: 4010 23:22:56: 103.212.33.57:3128 -> Start 23:23:33: 103.212.33.57:3128 -> Exception: A task was canceled. | 23:23:33: 103.212.33.57:3128 -> Time: 36361 23:23:33: 103.228.143.88:45554 -> Start 23:23:44: 103.228.143.88:45554 -> Exception: The operation was canceled. | 23:23:44: 103.228.143.88:45554 -> Time: 11158 23:23:44: 103.242.45.68:8080 -> Start 23:23:49: 103.242.45.68:8080 -> Exception: A task was canceled. | 23:23:49: 103.242.45.68:8080 -> Time: 5584 23:23:49: 103.254.52.8:45554 -> Start 23:24:23: 103.254.52.8:45554 -> Exception: The operation was canceled. | 23:24:23: 103.254.52.8:45554 -> Time: 33263 23:24:23: 103.254.52.9:36819 -> Start 23:24:27: 103.254.52.9:36819 -> Exception: A task was canceled. | 23:24:27: 103.254.52.9:36819 -> Time: 4003 23:24:27: 103.255.30.249:80 -> Start 23:24:34: 103.255.30.249:80 -> Exception: A task was canceled. | 23:24:34: 103.255.30.249:80 -> Time: 7578 23:24:34: 103.26.95.34:8080 -> Start 23:24:38: 103.26.95.34:8080 -> Exception: A task was canceled. | 23:24:38: 103.26.95.34:8080 -> Time: 4005 23:24:38: 103.27.118.146:3128 -> Start 23:24:43: 103.27.118.146:3128 -> Exception: A task was canceled. | 23:24:43: 103.27.118.146:3128 -> Time: 4697 23:24:43: 103.28.157.45:8080 -> Start 23:24:51: 103.28.157.45:8080 -> Exception: A task was canceled. | 23:24:51: 103.28.157.45:8080 -> Time: 7701 23:24:51: 103.3.69.33:8080 -> Start 23:24:55: 103.3.69.33:8080 -> Exception: A task was canceled. | 23:24:55: 103.3.69.33:8080 -> Time: 4230 23:24:55: 103.41.28.46:8080 -> Start 23:24:59: 103.41.28.46:8080 -> Exception: A task was canceled. | 23:24:59: 103.41.28.46:8080 -> Time: 4003 23:24:59: 103.43.153.165:8080 -> Start 23:25:03: 103.43.153.165:8080 -> Exception: A task was canceled. | 23:25:03: 103.43.153.165:8080 -> Time: 4004 23:25:03: 103.47.125.4:45554 -> Start 23:25:07: 103.47.125.4:45554 -> Exception: A task was canceled. | 23:25:07: 103.47.125.4:45554 -> Time: 4003 23:25:07: 103.55.33.54:3129 -> Start 23:25:17: 103.55.33.54:3129 -> Exception: A task was canceled. | 23:25:17: 103.55.33.54:3129 -> Time: 9647 23:25:17: 103.56.113.55:80 -> Start 23:25:34: 103.56.113.55:80 -> Exception: A task was canceled. | 23:25:34: 103.56.113.55:80 -> Time: 17103 23:25:34: 103.59.57.219:45554 -> Start 23:25:38: 103.59.57.219:45554 -> Exception: A task was canceled. | 23:25:38: 103.59.57.219:45554 -> Time: 4005 23:25:38: 103.6.245.204:8080 -> Start 23:25:54: 103.6.245.204:8080 -> Exception: A task was canceled. | 23:25:54: 103.6.245.204:8080 -> Time: 16042 23:25:54: 103.6.245.205:8080 -> Start 23:26:01: 103.6.245.205:8080 -> Exception: A task was canceled. | 23:26:01: 103.6.245.205:8080 -> Time: 7789 23:26:01: 103.6.245.206:8080 -> Start 23:26:07: 103.6.245.206:8080 -> Exception: A task was canceled. | 23:26:07: 103.6.245.206:8080 -> Time: 6009 23:26:07: 103.7.131.74:80 -> Start 23:26:22: 103.7.131.74:80 -> Exception: A task was canceled. | 23:26:22: 103.7.131.74:80 -> Time: 14383 23:26:22: 103.70.231.11:8080 -> Start 23:26:26: 103.70.231.11:8080 -> Exception: A task was canceled. | 23:26:26: 103.70.231.11:8080 -> Time: 4004 23:26:26: 103.76.170.154:80 -> Start 23:26:30: 103.76.170.154:80 -> Exception: A task was canceled. | 23:26:30: 103.76.170.154:80 -> Time: 4005 23:26:30: 103.76.175.84:8080 -> Start 23:26:34: 103.76.175.84:8080 -> Exception: A task was canceled. | 23:26:34: 103.76.175.84:8080 -> Time: 4003 23:26:34: 104.131.36.177:3128 -> Start 23:26:38: 104.131.36.177:3128 -> Exception: A task was canceled. | 23:26:38: 104.131.36.177:3128 -> Time: 4004 23:26:38: 104.193.252.181:3321 -> Start 23:27:09: 104.193.252.181:3321 -> Exception: The operation was canceled. | 23:27:09: 104.193.252.181:3321 -> Time: 31602 23:27:09: 104.206.220.119:3128 -> Start 23:27:13: 104.206.220.119:3128 -> Exception: A task was canceled. | 23:27:13: 104.206.220.119:3128 -> Time: 4004 23:27:13: 104.206.220.12:3128 -> Start 23:27:31: 104.206.220.12:3128 -> Exception: The operation was canceled. | 23:27:31: 104.206.220.12:3128 -> Time: 17446 23:27:31: 104.206.220.120:3128 -> Start 23:27:44: 104.206.220.120:3128 -> Exception: A task was canceled. | 23:27:44: 104.206.220.120:3128 -> Time: 12793 23:27:44: 104.206.220.121:3128 -> Start 23:27:55: 104.206.220.121:3128 -> Exception: A task was canceled. | 23:27:55: 104.206.220.121:3128 -> Time: 11409 23:27:55: 104.206.220.123:3128 -> Start 23:27:59: 104.206.220.123:3128 -> Exception: A task was canceled. | 23:27:59: 104.206.220.123:3128 -> Time: 4003 23:27:59: 104.219.136.138:8080 -> Start 23:28:01: {""ip"":""104.219.136.138""} 23:28:01: 104.219.136.138:8080 -> Time: 2012 23:28:01: 104.236.235.211:34499 -> Start 23:29:35: 104.236.235.211:34499 -> Exception: The operation was canceled. | 23:29:35: 104.236.235.211:34499 -> Time: 93541 23:29:35: 106.186.22.65:8888 -> Start 23:29:39: 106.186.22.65:8888 -> Exception: A task was canceled. | 23:29:39: 106.186.22.65:8888 -> Time: 4007 23:29:39: 107.151.176.96:3128 -> Start 23:29:43: 107.151.176.96:3128 -> Exception: A task was canceled. | 23:29:43: 107.151.176.96:3128 -> Time: 4004 23:29:43: 107.16.212.37:8080 -> Start 23:30:02: 107.16.212.37:8080 -> Exception: A task was canceled. | 23:30:02: 107.16.212.37:8080 -> Time: 19266 23:30:02: 107.170.0.226:17245 -> Start 23:30:02: 107.170.0.226:17245 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 23:30:02: 107.170.0.226:17245 -> Time: 129 23:30:02: 107.170.0.226:32567 -> Start 23:30:02: 107.170.0.226:32567 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 23:30:02: 107.170.0.226:32567 -> Time: 128 23:30:02: 107.170.0.226:33525 -> Start 23:30:02: 107.170.0.226:33525 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 23:30:02: 107.170.0.226:33525 -> Time: 137 23:30:02: 107.170.61.29:80 -> Start 23:30:03: {""ip"":""107.170.61.29""} 23:30:03: 107.170.61.29:80 -> Time: 843 23:30:03: 107.170.61.29:3128 -> Start 23:30:04: {""ip"":""107.170.61.29""} 23:30:04: 107.170.61.29:3128 -> Time: 766 23:30:04: 107.170.61.29:8080 -> Start 23:30:05: {""ip"":""107.170.61.29""} 23:30:05: 107.170.61.29:8080 -> Time: 732 23:30:05: 108.161.151.98:80 -> Start 23:30:09: 108.161.151.98:80 -> Exception: A task was canceled. | 23:30:09: 108.161.151.98:80 -> Time: 4004 23:30:09: 108.166.205.163:3128 -> Start 23:31:21: 108.166.205.163:3128 -> Exception: A task was canceled. | 23:31:21: 108.166.205.163:3128 -> Time: 72769 23:31:21: 108.179.54.171:80 -> Start 23:31:22: 108.179.54.171:80 -> Exception: An error occurred while sending the request. | Couldn't connect to server | 23:31:22: 108.179.54.171:80 -> Time: 133 23:31:22: 108.48.13.44:80 -> Start 23:31:41: 108.48.13.44:80 -> Exception: The operation was canceled. | 23:31:41: 108.48.13.44:80 -> Time: 19267 23:31:41: 109.167.113.25:8080 -> Start 23:32:01: 109.167.113.25:8080 -> Exception: A task was canceled. | 23:32:01: 109.167.113.25:8080 -> Time: 20532 23:32:01: 109.185.180.87:8080 -> Start 23:32:16: 109.185.180.87:8080 -> Exception: A task was canceled. | 23:32:16: 109.185.180.87:8080 -> Time: 14088 23:32:16: 109.197.184.59:8080 -> Start 23:32:16: {""ip"":""109.197.184.59""} 23:32:16: 109.197.184.59:8080 -> Time: 788 23:32:16: 109.197.184.7:8080 -> Start 23:32:17: {""ip"":""109.197.184.7""} 23:32:17: 109.197.184.7:8080 -> Time: 745 23:32:17: 109.197.188.14:8080 -> Start 23:37:17: 109.197.188.14:8080 -> Exception: The operation was canceled. | 23:37:17: 109.197.188.14:8080 -> Time: 300154 23:37:17: 109.197.188.20:8080 -> Start 23:37:21: 109.197.188.20:8080 -> Exception: A task was canceled. | 23:37:21: 109.197.188.20:8080 -> Time: 4005 23:37:21: 109.197.188.21:8080 -> Start 23:37:22: {""ip"":""109.197.188.21""} 23:37:22: 109.197.188.21:8080 -> Time: 700 23:37:22: 109.197.188.22:8080 -> Start 23:37:31: 109.197.188.22:8080 -> Exception: A task was canceled. | 23:37:31: 109.197.188.22:8080 -> Time: 9396 23:37:31: 109.197.188.28:8080 -> Start 23:37:40: 109.197.188.28:8080 -> Exception: A task was canceled. | 23:37:40: 109.197.188.28:8080 -> Time: 8500 23:37:40: 109.197.188.30:8080 -> Start 23:37:50: 109.197.188.30:8080 -> Exception: A task was canceled. | 23:37:50: 109.197.188.30:8080 -> Time: 10568 23:37:50: 109.197.190.222:8080 -> Start 23:42:50: 109.197.190.222:8080 -> Exception: The operation was canceled. | 23:42:50: 109.197.190.222:8080 -> Time: 300093 23:42:50: 109.228.46.132:3128 -> Start 23:43:06: 109.228.46.132:3128 -> Exception: A task was canceled. | 23:43:06: 109.228.46.132:3128 -> Time: 15336 23:43:06: ---=== END ===--- ```" +20464 area-Serialization Disable Serialization Tests Failing on Uapaot +20465 area-System.Net WebHeaderCollection tests fail in ILC mode due to missing strings in test runner "System.Net.WebHeaderCollection tests run fine in F5 ('uap') mode. But in ILC ('uap-aot') mode they are failing. It seems that strings are missing from the exceptions being thrown in a test like this: ```c# [Theory] [MemberData(nameof(InvalidValues))] public void Add_InvalidValue_ThrowsArgumentException(string value) { var headers = new WebHeaderCollection(); Assert.Throws(""value"", () => headers.Add(""name"", value)); } ``` We get failures like this: >System.Net.Tests.WebHeaderCollectionTest.Add_InvalidValue_ThrowsArgumentException(value: \""value1\\nvalue2\\r\"") [FAIL] Assert.Equal() Failure Expected: value Actual: (null) Stack Trace: s:\GitHub\corefx\src\System.Net.WebHeaderCollection\tests\WebHeaderCollectionTest.cs(495,0): at System.Net.Tests.WebHeaderCollectionTest.Add_Invalid Value_ThrowsArgumentException(String value) Is this an expected problem from the UWP test runner in ILC mode? cc: @tarekgh @danmosemsft @AlexGhiondea " +20469 area-System.Net Port HttpListener fix for disconnect while reading request body Merge fix #20428 @stephentoub +20470 area-System.Net NetEventSource tests aren't working in ILC (multiple contracts) "Running this test passes in F5 ('uap') mode but fails in ILC ('uap-aot') mode: Test: ```c# public class WebHeaderCollectionLoggingTest { [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""NetEventSource is only part of .NET Core"")] public void EventSource_ExistsWithCorrectId() ``` >System.Net.Tests.WebHeaderCollectionLoggingTest.EventSource_ExistsWithCorrectId [FAIL] System.TypeLoadException : The type 'System.Net.NetEventSource' cannot be found in assembly 'System.Net.WebHeaderCollection, Version=4.1.1.0, Culture=n eutral, PublicKeyToken=b03f5f7f11d50a3a'. Stack Trace: f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\General\Helpers.cs(158,0): at System.Reflection.Runtime.Gen eral.Helpers.CreateTypeLoadException(String typeName, Assembly assemblyIfAny) f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeParsing\GetTypeOptions.cs(58,0): at System.Reflection.R untime.TypeParsing.GetTypeOptions.CoreResolveType(Assembly containingAssemblyIfAny, String name) f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeParsing\TypeName.cs(90,0): at System.Reflection.Runtime .TypeParsing.NamespaceTypeName.ResolveType(Assembly containingAssemblyIfAny, $GetTypeOptions getTypeOptions) f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\Assemblies\RuntimeAssembly.cs(103,0): at System.Reflection. Runtime.Assemblies.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) s:\GitHub\corefx\src\System.Net.WebHeaderCollection\tests\LoggingTest.cs(16,0): at System.Net.Tests.WebHeaderCollectionLoggingTest.EventSource_Exist sWithCorrectId() at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Bo olean isTargetThisCall) f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs(400,0): at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, I ntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDe legate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall)" +20472 area-Infrastructure Update Xunit.NetCore.extensions This update includes two changes: * https://github.com/dotnet/buildtools/pull/1522 * https://github.com/dotnet/buildtools/pull/1518 cc: @tarekgh @weshaggard +20473 area-System.Net Disable some WebHeaderCollection tests on ILC test runs Disable some WebHeaderCollection tests on 'uap-aot' (ILC) test runs. Contributes to #20465 and #20470 +20474 area-System.Collections System.Collections.Concurrent test is crashing the run for x86 ILC uapaot runs ManyConcurrentAddsTakes_ForceContentionWithToArray was hitting a Debug.Assert only on x86 uapaot ilc runs. The test was skipped so that the run can continue since today we are not producing results because of it. This issue is to track the required work to fix that and re-enable the test. +20476 area-Serialization Test DCS_TypeWithPrivateFieldAndPrivateGetPublicSetProperty Failed on Uapaot "``` DataContractSerializerTests.DCS_TypeWithPrivateFieldAndPrivateGetPublicSetProperty [FAIL] XML comparison is also failing Test failed for input: TypeWithPrivateFieldAndPrivateGetPublicSetProperty Expected: foo< /Name> Actual: Expected: True Actual: False Stack Trace: d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs(3161,0): at DataContractSerializerTests.SerializeAndDeserialize(__Canon value, String baseline, $DataContractSerializerSettings settings, Func$1<$DataContractSerializer> serializerFactory, Boolean skipStringCompare) d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs(822,0): at DataContractSerializerTests.DCS_TypeWithPrivateFieldAndPrivateGetPu blicSetProperty() at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall ) f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs(400,0): at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Ob ject thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle bi nderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) ```" +20477 area-Serialization Test DCS_InnerExceptionMessageWithSpecialChars Failed on Uapaot ``` DataContractSerializerTests.DCS_InnerExceptionMessageWithSpecialChars [FAIL] System.NotImplementedException : The method or operation is not implemented. Stack Trace: d:\OSS\corefx-1\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexMatchTimeoutException.cs(60,0): at System.Reflection.Assembly.get_HostCo ntext() d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs(591,0): at System.Runtime.Serializ ation.XmlObjectSerializerWriteContext.GetObjectData(ISerializable obj, SerializationInfo serInfo, StreamingContext context) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs(598,0): at System.Runtime.Serializ ation.XmlObjectSerializerWriteContext.WriteISerializable($XmlWriterDelegator xmlWriter, ISerializable obj) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionClassWriter.cs(26,0): at System.Runtime.Serialization.Refle ctionClassWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract, $XmlDictionaryString[] memberNames) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionXmlFormatWriter.cs(20,0): at System.Runtime.Serialization.R eflectionXmlFormatWriter.ReflectionWriteClass($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $ClassDataContract classContract) Invoke(16707566,0): at System.Runtime.Serialization.XmlFormatClassWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext contex t, $ClassDataContract dataContract) ``` +20478 area-Serialization DCS/DCJS Failed to Serialize System Types in ReflectionOnly Mode "DCS/DCJS failed to serialize System types in ReflectionOnly mode due to the reflection on the types being blocked. The following tests failed. ``` DataContractSerializerTests.DCS_ReadOnlyDictionary DataContractSerializerTests.DCS_GenericStack DataContractSerializerTests.DCS_Stack DataContractSerializerTests.DCS_SystemVersion DataContractSerializerTests.DCS_ListMembers DataContractSerializerTests.DCS_BasicRoundtripDCRDefaultCollections DataContractSerializerTests.DCS_SortedList DataContractSerializerTests.DCS_GenericQueue DataContractSerializerTests.DCS_Queue DataContractSerializerTests.DCS_ReadOnlyCollection DataContractJsonSerializerTests.DCJS_Queue DataContractJsonSerializerTests.DCJS_GetOonlyDictionary_UseSimpleDictionaryFormat DataContractJsonSerializerTests.DCJS_Stack DataContractJsonSerializerTests.DCJS_ReadOnlyDictionary DataContractJsonSerializerTests.DCJS_GenericQueue DataContractJsonSerializerTests.DCJS_ReadOnlyCollection DataContractJsonSerializerTests.DCJS_GenericStack DataContractJsonSerializerTests.DCJS_SortedList DataContractJsonSerializerTests.DCJS_SystemVersion ``` Example call stack: ``` FooBar\r\n Actual: \r\n Expected: True\r\n Actual: False]]> (__Canon value, String baseline, $DataContractSerializerSettings settings, Func$1<$DataContractSerializer> serializerFactory, Boolean skipStringCompare) in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 3163 at DataContractSerializerTests.DCS_ReadOnlyCollection() in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Xml\tests\DataContractSerializer.cs:line 1885 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" +20480 area-Serialization Need use full name when to get the type of XmlSerializerNamespaces https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/XmlReflectionImporter.cs#L1839 Need use the full name for XmlSerializerNamespaces since the code is shared with SGEN. +20481 area-Serialization Test DCJS_VerifyDictionaryFormat Failed on Uapaot Using Sg.exe ``` DataContractJsonSerializerTests.DCJS_VerifyDictionaryFormat [FAIL] System.Runtime.Serialization.SerializationException : The dictionary of type 'System.Collections.Generic.Dictionary`2[[TestStruct, System.Runtime.Serialization.Json.Tests, V ersion=4.0.4.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb],[TestStruct, System.Runtime.Serialization.Json.Tests, Version=4.0.4.0, Culture=neutral, PublicKeyToken=9d77cc7ad3 9b68eb]]' cannot be deserialized as a simple dictionary because its key type 'TestStruct' does not have a public static Parse method. Stack Trace: at Type924.ReadArrayOfKeyValueOfTestStructTestStructaI91YjnmFromJson($XmlReaderDelegator A_0, $XmlObjectSerializerReadContextComplexJson A_1, $XmlDictionaryString A_2, $XmlDictionaryString A_3, $CollectionDataContract A_4) InvokeOpenStaticThunk(16707566,0): at System.Runtime.Serialization.XmlFormatCollectionReaderDelegate.InvokeOpenStaticThunk($XmlReaderDelegator xmlReader, $XmlObjectSerial izerReadContext context, $XmlDictionaryString itemName, $XmlDictionaryString itemNamespace, $CollectionDataContract collectionContract) Invoke(16707566,0): at System.Runtime.Serialization.XmlFormatCollectionReaderDelegate.Invoke($XmlReaderDelegator xmlReader, $XmlObjectSerializerReadContext context, $XmlD ictionaryString itemName, $XmlDictionaryString itemNamespace, $CollectionDataContract collectionContract) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\JsonCollectionDataContract.cs(170,0): at System.Runtime.Serializ ation.Json.JsonCollectionDataContract.ReadJsonValueCore($XmlReaderDelegator jsonReader, $XmlObjectSerializerReadContextComplexJson context) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\JsonDataContract.cs(80,0): at System.Runtime.Serialization.Json. JsonDataContract.ReadJsonValue($XmlReaderDelegator jsonReader, $XmlObjectSerializerReadContextComplexJson context) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\XmlObjectSerializerReadContextComplexJson.cs(52,0): at System.Ru ntime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue($DataContract dataContract, $XmlReaderDelegator reader) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs(201,0): at System.Runtime.Serializa tion.XmlObjectSerializerReadContext.InternalDeserialize($XmlReaderDelegator reader, String name, String ns, $DataContract& dataContract) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs(127,0): at System.Runtime.Serializa tion.XmlObjectSerializerReadContext.InternalDeserialize($XmlReaderDelegator xmlReader, Type declaredType, $DataContract dataContract, String name, String ns) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerReadContextComplex.cs(72,0): at System.Runtime.Ser ialization.XmlObjectSerializerReadContextComplex.InternalDeserialize($XmlReaderDelegator xmlReader, Type declaredType, $DataContract dataContract, String name, String ns) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs(861,0): at System.Runtime.Serializ ation.Json.DataContractJsonSerializerImpl.InternalReadObject($XmlReaderDelegator xmlReader, Boolean verifyObjectName) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs(261,0): at System.Runtime.Serialization.XmlObj ectSerializer.InternalReadObject($XmlReaderDelegator reader, Boolean verifyObjectName, $DataContractResolver dataContractResolver) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs(280,0): at System.Runtime.Serialization.XmlObj ectSerializer.ReadObjectHandleExceptions($XmlReaderDelegator reader, Boolean verifyObjectName, $DataContractResolver dataContractResolver) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs(684,0): at System.Runtime.Serializ ation.Json.DataContractJsonSerializerImpl.ReadObject($XmlDictionaryReader reader) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs(669,0): at System.Runtime.Serializ ation.Json.DataContractJsonSerializerImpl.ReadObject(Stream stream) d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs(199,0): at System.Runtime.Serializ ation.Json.DataContractJsonSerializer.ReadObject(Stream stream) d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(2865,0): at DataContractJsonSerializerTests.SerializeAndDeserialize(__Canon value, String baseline, $DataContractJsonSerializerSettings settings, Func$1<$DataContractJsonSerializer> serializerFactory, Boolean skipStringCompare) d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs(2714,0): at DataContractJsonSerializerTests.DCJS_VerifyDictionaryFormat() at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall ) f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs(400,0): at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Ob ject thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle bi nderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall)``` +20482 area-System.Net ILC optimization causes reflection to fail in System.Net.Primitives CookieParser test `SetCookies_InvalidData_Throws` is throwing a Debug.Assert in Debug uapaot ilc test runs, so the test will be disabled in order for the test run to complete. This issue is to track the work of fixing the issue causing the Debug.Assert to be called, and for re-enabling the test. +20483 area-Serialization Test DCJS_VerifyIndentation Failed on Uapaot Using Sg.exe ``` DataContractJsonSerializerTests.DCJS_VerifyIndentation [FAIL] System.InvalidOperationException : Type 'System.Collections.Generic.KeyValuePair`2[System.String,System.String]' cannot be added to list of known types since another type 'S ystem.Collections.Generic.KeyValuePair`2[System.String,System.String]' with the same data contract name 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:KeyValu ePairOfstringstring' is already present. typesChecked, Dictionary$2<$XmlQualifiedName,$DataContract>& nameToDataContractTable) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\DataContract.cs:line 2186 at System.Runtime.Serialization.XmlObjectSerializerContext.GetDataContractsForKnownTypes(IList$1 knownTypeList) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerContext.cs:line 211 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.get_KnownDataContracts() in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 112 at System.Runtime.Serialization.XmlObjectSerializerContext.GetDataContractFromSerializerKnownTypes($XmlQualifiedName qname) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerContext.cs:line 193 at System.Runtime.Serialization.XmlObjectSerializerContext.ResolveDataContractFromKnownTypes($XmlQualifiedName typeName) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerContext.cs:line 260 at System.Runtime.Serialization.XmlObjectSerializerContext.ResolveDataContractFromKnownTypes(String typeName, String typeNs, $DataContract memberTypeContract) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerContext.cs:line 272 at System.Runtime.Serialization.XmlObjectSerializerContext.IsKnownType($DataContract dataContract, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerContext.cs:line 236 at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.VerifyType($DataContract dataContract, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\XmlObjectSerializerWriteContextComplexJson.cs:line 288 at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.HandleCollectionAssignedToObject(Type declaredType, $DataContract& dataContract, Object& obj, Boolean& verifyKnownType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\XmlObjectSerializerWriteContextComplexJson.cs:line 231 at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType($XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\XmlObjectSerializerWriteContextComplexJson.cs:line 215 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 138 at System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContextComplex.cs:line 181 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference($XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 106 at Type987.WriteArrayOfanyTypeToJson($XmlWriterDelegator A_0, Object A_1, $XmlObjectSerializerWriteContextComplexJson A_2, $CollectionDataContract A_3) at System.Runtime.Serialization.XmlFormatCollectionWriterDelegate.InvokeOpenStaticThunk($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContext context, $CollectionDataContract dataContract) in InvokeOpenStaticThunk:line 16707566 at System.Runtime.Serialization.Json.JsonFormatCollectionWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, $CollectionDataContract dataContract) in Invoke:line 16707566 at System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore($XmlWriterDelegator jsonWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\JsonCollectionDataContract.cs:line 180 at System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue($XmlWriterDelegator jsonWriter, Object obj, $XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\JsonDataContract.cs:line 93 at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\XmlObjectSerializerWriteContextComplexJson.cs:line 181 at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType($DataContract dataContract, $XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs:line 155 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObjectContent($XmlWriterDelegator writer, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 904 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObject($XmlWriterDelegator writer, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 872 at System.Runtime.Serialization.XmlObjectSerializer.InternalWriteObject($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 101 at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions($XmlWriterDelegator writer, Object graph, $DataContractResolver dataContractResolver) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\XmlObjectSerializer.cs:line 71 at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject($XmlDictionaryWriter writer, Object graph) in d:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs:line 720 at DataContractJsonSerializerTests.VerifyIndentationOfSerializedXml(__Canon value, String baseline, String indentChars, $DataContractJsonSerializerSettings settings, Func$1<$DataContractJsonSerializer> serializerFactory, Boolean skipStringCompare) in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 2956 at DataContractJsonSerializerTests.DCJS_VerifyIndentation() in d:\OSS\corefx-1\corefx\src\System.Runtime.Serialization.Json\tests\DataContractJsonSerializer.cs:line 2830 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ``` +20484 area-System.Net Fixing System.Net.Primitives uapaot ilc Debug test runs cc: @stephentoub @danmosemsft @JonHanna One more very similar. For the rest of the ones in System.Net, I'll try to batch them into one PR and have only one issue tracking the fixing of them. +20486 area-Infrastructure Initial work to enable CoreFx perf rolling runs on Linux. +20487 area-System.Diagnostics Mark DiagnosticSource 4.4.0 as stable New DiagnosticSource API (Activity) is consumed by partner teams (ApplicationInsigthts, ASP.NET). In order to align schedules, we want ship 4.4.0 version of DiagnosticSource now, it does not depend on any non-stable packages. @ericstj, please review +20490 area-Infrastructure Dumpling fails with The libcoreclr.so module is not loaded yet in the target process "remoteexecutor failed for a test https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170531.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.DiagnosticsTest~2FSendAsync_ExpectedDiagnosticSourceLogging I went to see if there was a dump https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170531.01/workItem/System.Net.Http.Functional.Tests/wilogs and I see this. @mellinoe any thoughts about `The libcoreclr.so module is not loaded yet in the target process`? ``` 2017-05-31 00:34:10,567: INFO: proc(54): run_and_log_output: Output: System.Net.Http.Functional.Tests Total: 587, Errors: 0, Failed: 1, Skipped: 16, Time: 18.755s 2017-05-31 00:34:10,617: INFO: proc(54): run_and_log_output: Output: command exited with ExitCode: 1 2017-05-31 00:34:10,618: INFO: proc(54): run_and_log_output: Output: command failed, trying to collect dumps 2017-05-31 00:34:10,620: INFO: proc(54): run_and_log_output: Output: corefile: core 2017-05-31 00:34:10,620: INFO: proc(54): run_and_log_output: Output: uploading core to dumpling service 2017-05-31 00:34:38,964: INFO: proc(54): run_and_log_output: Output: bind: Invalid command `enable-meta-key'. 2017-05-31 00:34:38,967: INFO: proc(54): run_and_log_output: Output: (lldb) target create --core /home/helixbot/dotnetbuild/work/81ea0aab-2918-44ab-9ff1-09fd0225e1a9/Work/aa8dfcbc-ae82-4888-bf1e-065037c11c2a/Unzip/core 2017-05-31 00:34:38,971: INFO: proc(54): run_and_log_output: Output: Core file '/home/helixbot/dotnetbuild/work/81ea0aab-2918-44ab-9ff1-09fd0225e1a9/Work/aa8dfcbc-ae82-4888-bf1e-065037c11c2a/Unzip/core' (x86_64) was loaded. 2017-05-31 00:34:38,971: INFO: proc(54): run_and_log_output: Output: (lldb) plugin load /home/helixbot/.dumpling/dbg/bin/libsosplugin.so 2017-05-31 00:34:38,972: INFO: proc(54): run_and_log_output: Output: (lldb) command script import /home/helixbot/.dumpling/analysis.py 2017-05-31 00:34:39,007: INFO: proc(54): run_and_log_output: Output: (lldb) analyze -i /home/helixbot/.dumpling/triage.ini -o /tmp/tmpXrwdi4 2017-05-31 00:34:39,009: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: LAST_EXCEPTION: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: The libcoreclr.so module is not loaded yet in the target process 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: STOP_REASON: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: SIGSEGV 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: FAULT_SYMBOL: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: FAILURE_HASH: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: SIGSEGV_UNKNOWN!UNKNOWN 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: FAULT_STACK: 2017-05-31 00:34:39,010: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,011: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: UNKNOWN!UNKNOWN 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: FAULT_THREAD: 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: thread #1: tid = 2028, 0x00007f1a6bd01ce0, name = 'dotnet', stop reason = signal SIGSEGV 2017-05-31 00:34:39,012: INFO: proc(54): run_and_log_output: Output: (lldb) exit 2017-05-31 00:34:39,216: INFO: proc(54): run_and_log_output: Output: processing dump file /home/helixbot/dotnetbuild/work/81ea0aab-2918-44ab-9ff1-09fd0225e1a9/Work/aa8dfcbc-ae82-4888-bf1e-065037c11c2a/Unzip/core 2017-05-31 00:34:39,216: INFO: proc(54): run_and_log_output: Output: uncompressed file size: 242560 Kb 2017-05-31 00:34:39,216: INFO: proc(54): run_and_log_output: Output: compressed file size: 28805 Kb 2017-05-31 00:34:39,216: INFO: proc(54): run_and_log_output: Output: creating dumpling dump d11f8a7b257f14755e55463f2a2b8e26b3f282c1 2017-05-31 00:34:39,216: INFO: proc(54): run_and_log_output: Output: url: https://dumpling.azurewebsites.net/api/dumplings/create?displayname=System.Net.Http.Functional.Tests&hash=d11f8a7b257f14755e55463f2a2b8e26b3f282c1&user=helixbot 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: response: 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: uploading artifact d11f8a7b257f14755e55463f2a2b8e26b3f282c1 core 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: url: https://dumpling.azurewebsites.net/api/dumplings/uploads?hash=d11f8a7b257f14755e55463f2a2b8e26b3f282c1&localpath=%2Fhome%2Fhelixbot%2Fdotnetbuild%2Fwork%2F81ea0aab-2918-44ab-9ff1-09fd0225e1a9%2FWork%2Faa8dfcbc-ae82-4888-bf1e-065037c11c2a%2FUnzip%2Fcore 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: response: 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: url: https://dumpling.azurewebsites.net/api/dumplings/d11f8a7b257f14755e55463f2a2b8e26b3f282c1/properties 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: data: { 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_ARCHITECTURE"": ""x86_64"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_DISTRO"": ""Ubuntu"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_DISTRO_ID"": ""xenial"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_DISTRO_VER"": ""16.04"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_NAME"": ""dnblu1604000MBX"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_OS"": ""Linux"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_PROCESSOR"": ""x86_64"", 2017-05-31 00:34:39,217: INFO: proc(54): run_and_log_output: Output: ""CLIENT_RELEASE"": ""4.4.0-47-generic"", 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: ""CLIENT_VERSION"": ""#68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016"", 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: ""STRESS_TESTID"": ""System.Net.Http.Functional.Tests"" 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: } 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: response: 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: Debugger command: /home/helixbot/.dumpling/dbg/bin/lldb -o target create --core /home/helixbot/dotnetbuild/work/81ea0aab-2918-44ab-9ff1-09fd0225e1a9/Work/aa8dfcbc-ae82-4888-bf1e-065037c11c2a/Unzip/core -o plugin load /home/helixbot/.dumpling/dbg/bin/libsosplugin.so -o command script import /home/helixbot/.dumpling/analysis.py -o analyze -i /home/helixbot/.dumpling/triage.ini -o /tmp/tmpXrwdi4 -o exit 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: None 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: Debugger exit code 0 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: url: https://dumpling.azurewebsites.net/api/dumplings/d11f8a7b257f14755e55463f2a2b8e26b3f282c1/properties 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: data: { 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: ""FAILURE_HASH"": ""SIGSEGV_UNKNOWN!UNKNOWN"", 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: ""FAULT_STACK"": ""UNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN\nUNKNOWN!UNKNOWN"", 2017-05-31 00:34:39,218: INFO: proc(54): run_and_log_output: Output: ""FAULT_SYMBOL"": ""UNKNOWN!UNKNOWN"", 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: ""FAULT_THREAD"": ""thread #1: tid = 2028, 0x00007f1a6bd01ce0, name = 'dotnet', stop reason = signal SIGSEGV"", 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: ""LAST_EXCEPTION"": ""The libcoreclr.so module is not loaded yet in the target process\n"", 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: ""STOP_REASON"": ""SIGSEGV"" 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: } 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: response: 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: dumplingid: d11f8a7b257f14755e55463f2a2b8e26b3f282c1 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: https://dumpling.azurewebsites.net/api/dumplings/archived/d11f8a7b257f14755e55463f2a2b8e26b3f282c1 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: total elapsed time 0:00:28.502304 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/81ea0aab-2918-44ab-9ff1-09fd0225e1a9/Work/aa8dfcbc-ae82-4888-bf1e-065037c11c2a/Unzip 2017-05-31 00:34:39,219: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=00:34:39. Return value was 1 2017-05-31 00:34:39,220: INFO: proc(54): run_and_log_output: Output: Unable to find executable corerun 2017-05-31 00:34:39,221: INFO: proc(54): run_and_log_output: Output: Copying core file core to /tmp/coredumps ```" +20491 area-Infrastructure Add test attributes documentation @dotnet-bot skip CI Please Add test attributes usage documentation. cc: @weshaggard @danmosemsft +20493 area-System.Net Test failure: System.Net.Http.Functional.Tests.CancellationTest/GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly(useTimeout: False, startResponseBody: False) Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.CancellationTest/GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly(useTimeout: False, startResponseBody: False)` has failed. Assert.Throws() Failure\r Expected: typeof(System.OperationCanceledException)\r Actual: typeof(System.Net.Http.HttpRequestException): An error occurred while sending the request. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.CancellationTest.<>c__DisplayClass2_3.<b__3>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : 2.0.0 - 20170531.01 (Portable Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170531.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.CancellationTest~2FGetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly(useTimeout:%20False,%20startResponseBody:%20False) +20496 area-System.Globalization Numeric format to percentage: The default value is different from .net framework "in windows,the default value depends on user settings(control panel) in linux,i don't know how to set the default value ? can be set? Since it has not been resolved, so powershell team members recommend me to submit the issue. https://github.com/PowerShell/PowerShell/issues/2194 somebody help to see,thanks. Steps to reproduce ------------------ ""{0:p}"" -f 0.95 (0.95).tostring(""p"") powershell on windows return(i think return is right): 95.00% powershell beta1 on .net core 2.0 return: 95.000% PS /root> [System.Globalization.NumberFormatInfo]::CurrentInfo.PercentDecimalDigits 3 PS /root> [System.Globalization.NumberFormatInfo]::CurrentInfo.PercentDecimalDigits = 2 Exception setting ""PercentDecimalDigits"": ""Instance is read-only."" At line:1 char:1 + [System.Globalization.NumberFormatInfo]::CurrentInfo.PercentDecimalDi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException + FullyQualifiedErrorId : ExceptionWhenSetting Expected behavior ----------------- default value same with windows Environment data ---------------- Name Value ---- ----- PSVersion 6.0.0-beta PSEdition Core BuildVersion 3.0.0.0 CLRVersion GitCommitId v6.0.0-beta.1 OS Linux 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 Platform Unix PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 WSManStackVersion 3.0 LANG=zh_CN.UTF-8 " +20497 area-System.Diagnostics Add ProcessStartInfo.StandardInputEncoding property See **detailed latest proposal** in https://github.com/dotnet/corefx/issues/20497#issuecomment-312896302 # Original Proposal By default, the standard IO readers and writer for a process use `Console.OutputEncoding` and `Console.InputEncoding` respectively. The `ProcessStartInfo` class provides `StandardOutputEncoding` and `StandardErrorEncoding` properties to allow callers to override the encoding for those. This simply changes the encoding passed to the `StreamReader` object which wraps the underlying process byte stream. To more naturally support talking to a process that uses a different encoding than the current process's console encoding, we should add a new property to `ProcessStartInfo`: ``` public Encoding StandardInputEncoding { get; set; } ``` This would have the same semantics as the existing properties: * Defaults to `null`, which means use the default encoding * If specified and the input stream is not redirected, an exception is thrown on process start [EDIT] Added latest proposal link by @karelz +20500 area-System.Net Fix HttpClient on Unix handling of 0-len content with chunked upload When there's a disagreement between Content-Length and Transfer-Encoding being specified in the HttpRequestMessage, WinHttpHandler sanitizes the request to ensure it makes sense. CurlHandler does the same thing, except it's currently doing it a bit too late in the send process: it should be doing it before the curl easy handle is configured based on the contents of the request, but it's currently doing it in the middle, after some configuration has already been done based on the content length. The fix is simply to move the sanitization up earlier. For the most part this didn't matter, but it was manifesting as incorrect handling of 0-length content with chunked uploads, where neither the content length nor chunks were being sent. cc: @geoffkizer, @davidsh Fixes https://github.com/dotnet/corefx/issues/20419 +20501 area-Serialization Disable lazy serialization tests on netcoreapp Fixes https://github.com/dotnet/corefx/pull/20499 +20502 area-System.Collections [BlockingCollection] Add TimeSpan parameter to TryAdd and TryTake (and a few questions) Hi! I would like to start contributing to open source projects and since I love C# and the .NET environment, this looks like a great place to start. However, I'm quite new to all this and so, I have a few questions on how to proceed. First of all, what I want to do is relatively simple. I want to add the following methods to the BlockingCollection classe: ```c# public bool TryAdd(out T item, TimeSpan timeout, CancellationToken cancellationToken); public bool TryTake(out T item, TimeSpan timeout, CancellationToken cancellationToken); ``` The original reason for this is that I usually prefer using a TimeSpan object wherever possible since it makes the intention clear and recently had to use BlockingCollection for a project and noticed that some of the Try* methods don't have a overload that takes a TimeSpan parameter. Since this is an easy addition (unless I'm missing something) I though it would be a nice way to start contributing. Besides, it adds consistency. Also, I know this could be implemented as an extension method but that defeats the purpose of contributing :) Regarding my questions. - I need to open a issue for every pull request? If so, can I use this one or should I open new one? - Since this is an API change, do I need to do something special besides opening the issue and if approved, submit the PR? - What are the naming conventions for testing method names? BlockingCollectionTest have some of the following: - TestConcurrentAddAnyTakeAny - TestAddAnyTakeAny_Longrunning - Test17_AddExceptions Is there anything else I'm missing? Thank you! +20503 area-System.Security Failure in VerifyWithRevocation after 3 retries Increase retries? https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170531.02/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.ChainTests~2FVerifyWithRevocation ``` Ubuntu.1604.Amd64-x64-Release Unhandled Exception of Type Xunit.Sdk.TrueException Message : Online Chain Built Validly within 3 tries\nExpected: True\nActual: False Stack Trace : at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyWithRevocation() in /root/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 577 ``` +20504 area-System.Security More retries around VerifyWithRevocation test Fix https://github.com/dotnet/corefx/issues/20503 by adding more retries and sleeping after the first few. +20508 area-Infrastructure Clean out portable from CI scripts and add OSX PTAL @danmosemsft @mmitche skip ci please +20509 area-System.Security macOS: Opening a PFX and waiting just over 5 minutes results in a credential prompt ```C# using (var cert = new X509Certificate2(pfxData, pfxPassword)) { System.Threading.Thread.Sleep(TimeSpan.FromMinutes(6)); using (var key = cert.GetRSAPrivateKey()) { key.SignData(Array.Empty(), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); } } ```` The SignData call will pop up UI asking to enter a password for a keychain whose name is a GUID. Since no one knows the password to this keychain, it's not possible to proceed. (Workaround: give the cert to a background thread which uses the private key every ~4 minutes or so, to reset the idle timeout on the temporary keychain) +20513 area-System.Data Poring SqlSchemaInfoTest into .NET Core *`SqlSchemaInfoTest`* was ported from .NET Framework into .NET Core manual test. +20514 area-Serialization Need use the full name for XmlSerializerNamespaces Need use the full name for XmlSerializerNamespaces since the code is shared with SGEN. #20480 @shmao @mconnew @zhenlan +20518 area-System.Diagnostics Add InteropEventProvider to built in provider list for UAPAOT CheckNoEventSourcesRunning fails in uapaot since InteropEventProvider was include in the built in provide list. @brianrob +20520 area-System.Net Disable some WebProxy tests for UAP/ILC test runs Disable some WebProxy tests on 'uap' and 'uap-aot' test runs Contributes to #20137. +20521 area-System.Net Disable some WebSockets Client tests for UAP/ILC test runs Disable some WebSockets.Client tests on 'uap' and 'uap-aot' test runs Contributes to #20132. +20522 area-System.IO System.IO.UnmanagedMemoryAccessor throws different exceptions because CoreRT copy is out of date wrt CoreCLR CoreLib throws wrong exception in this case. Test failure on UWP ILC: ``` System.IO.Tests.Uma_ReadWriteStructArray.UmaReadWriteStructArray_InvalidParameters [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Argument_NotEnoughBytesToWrite. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: F:\corefx\src\System.IO.UnmanagedMemoryStream\tests\Uma.ReadWriteStructArray.cs(45,0): at System.IO.Tests.Uma_ReadWriteStructArray.<>c__DisplayClass0_0.b__12() xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. ``` +20524 area-Infrastructure Disable portable release cc @gkhanna79 Using this PR to collect the changes to make portable builds the default and only builds. Still waiting for all the testing in master to be verified before merging. +20525 area-System.Runtime System.Text.Encoding tests are crashing uapaot ilc test run "There are two System.Text.Encoding tests that are crashing the test run process only on Debug builds. From what I can tell after doing some debugging, the problem seems to be when we try to pass in some member data to a Theory, specifically when that member data is an object array for which one of the elements is a string containing a `\0` char. One example of one of the member data that is causing this problem is [this one](https://github.com/dotnet/corefx/blob/master/src/System.Text.Encoding/tests/UTF8Encoding/UTF8EncodingDecode.cs#L26) where the code looks like: ```c# yield return new object[] { new byte[] { 0, 84, 101, 10, 115, 116, 0, 9, 0, 84, 15, 101, 115, 116, 0 }, 0, 15, ""\0Te\nst\0\t\0T\u000Fest\0"" }; ``` I'm not 100% sure, but I believe that this is causing for us to hit the Debug.Assert() [on this array method](https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Array.CoreRT.cs#L1214), the code looks like: ```c# private Object GetValueWithFlattenedIndex_NoErrorCheck(int flattenedIndex) { ref byte element = ref Unsafe.AddByteOffset(ref GetRawArrayData(), (nuint)flattenedIndex * ElementSize); EETypePtr pElementEEType = ElementEEType; if (pElementEEType.IsValueType) { return RuntimeImports.RhBox(pElementEEType, ref element); } else { Debug.Assert(!pElementEEType.IsPointer); return Unsafe.As(ref element); } } ``` The callstack I get for the fail fast is: ``` xunit.console.netcore.dll!$16_System::Linq::Enumerable::d__32$1.MoveNext() Line 26 xunit.console.netcore.dll!System::Collections::Generic::List$1.InsertRange(int index=0, System::Collections::Generic::IEnumerable$1 & collection) Line 814 xunit.console.netcore.dll!System::Collections::Generic::List$1.AddRange(System::Collections::Generic::IEnumerable$1 & collection) Line 271 xunit.console.netcore.dll!$72_Xunit::Sdk::XunitTheoryTestCaseRunner::d__7.MoveNext() Line 68 ``` cc: @AtsushiKan @jkotas " +20527 area-System.Net HttpClient on Linux not cancel request after the due time "After researching [this](https://github.com/dotnet/corefx/issues/20461) problem. I came to realize that httpclient does not handle the hang of libcurl. And does not cancel hung requests at the due time. I tested 15000+ proxy servers and found 8 that hang even on fresh libcurl(7.52.1) and do not respond to cancellation. I can not get rid of hanging tasks. I do not know the analogs of Thread.Abort() for Tasks or HttpWebRequest.Abort() for HttpClient. This is also a problem, the inability to forcefully kill a task. Test case: ```cs using System; using System.Collections.Generic; using System.Diagnostics; using System.Net; using System.Net.Http; using System.Security.Authentication; using System.Threading; using System.Threading.Tasks; namespace ProxyNetCoreTest { public class Program { public static List Proxies { get; } = new List { new WebProxy(""103.254.16.21"", 8080),//This works, needed for control // new WebProxy(""106.39.162.168"", 80), new WebProxy(""114.215.90.211"", 1080), new WebProxy(""115.159.90.132"", 1080), new WebProxy(""123.56.199.152"", 3641), new WebProxy(""123.56.200.75"", 5261), new WebProxy(""125.93.75.245"", 1081), new WebProxy(""125.93.75.246"", 1081), new WebProxy(""183.232.25.100"", 3080), }; public static void Main(string[] args) { var sw = new Stopwatch(); sw.Start(); foreach (var proxy in Proxies) { sw.Restart(); Test(proxy).GetAwaiter().GetResult(); Log($""{proxy.Ip}:{proxy.Port} -> Time: {sw.ElapsedMilliseconds}""); } Log(""---=== END ===---""); Console.ReadKey(); } public static async Task Test(WebProxy proxy) { var url = ""https://api.ipify.org?format=json""; var handler = new HttpClientHandler { Proxy = proxy, UseCookies = false, ServerCertificateCustomValidationCallback = (message, xcert, chain, errors) => true, SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls, UseProxy = true }; Log($""{proxy.Ip}:{proxy.Port} -> Start""); using (var client = new HttpClient(handler)) { try { using (var tokenSource = new CancellationTokenSource(4000)) using (var request = new HttpRequestMessage(HttpMethod.Get, url)) using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, tokenSource.Token)) { var data = await response.Content.ReadAsStringAsync(); Log($""{proxy.Ip}:{proxy.Port} -> OK: {data}""); } } catch (Exception e) { Log($""{proxy.Ip}:{proxy.Port} -> Exception: {e.GetMessages()}""); } } } public static void Log(string message) { Console.WriteLine($""{DateTime.Now:HH:mm:ss}: {message}""); } public class WebProxy : IWebProxy { public string Ip { get; } public int Port { get; } private readonly Uri _uri; public WebProxy(string ip, int port) { Ip = ip; Port = port; _uri = new Uri(""http://"" + ip + "":"" + port); } public Uri GetProxy(Uri destination) => _uri; public bool IsBypassed(Uri host) => false; public ICredentials Credentials { get; set; } } } public static class ExceptionExtensions { public static string GetMessages(this Exception self) { return self.Message + "" | "" + self.InnerException?.GetMessages(); } } } ``` " +20528 area-System.Threading System.MissingMethodException: Method 'RegisteredWaitHandle.Unregister(WaitHandle)' was not included in compilation, but was referenced "Was discovered in UWP ILC test runs. 15 failures in `System.Net.Ping.Functional.Tests.csproj`. The same is true for ThreadPool.RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, object, int, bool) : ``` Method 'ThreadPool.RegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, object, int, bool)' was not included in compilation, but was referenced in Ping.SendPingAsyncCore(IPAddress, by te[], int, PingOptions) ``` Sample failure: ``` d__17.MoveNext$fin$0() in F:\corefx\src\System.Net.Ping\tests\FunctionalTests\PingTest.cs:line 16707566 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147]]> ```" +20541 area-Meta "Remove ""new NotImplementedExceptions"" from corefx assemblies." "Sites found by tooling: - [ ] System.Net.HttpListener.DisconnectAsyncResult::AsyncState.get() - [ ] System.Net.HttpListener.DisconnectAsyncResult::AsyncWaitHandle.get() - [ ] System.Net.HttpListener.DisconnectAsyncResult::CompletedSynchronously.get() - [ ] System.Net.HttpListener.DisconnectAsyncResult::IsCompleted.get() - [ ] System.Net.WebSockets.HttpListenerWebSocketContext::CopyPrincipal(IPrincipal) - [ ] System.Net.WebSockets.WebSocketBase.WebSocketOperation::ProcessAction_IndicateReceiveComplete (Nullable>, BufferType, Action, Buffer[], uint, IntPtr) - [ ] System.Net.Mime.EightBitStream::DecodeBytes(byte[], int, int) - [ ] System.Net.Mime.EightBitStream::EncodeBytes(byte[], int, int) - [ ] System.Net.Mime.EightBitStream::GetEncodedString() - [ ] System.Net.Mime.MimeBasePart::BeginSend(BaseWriter, AsyncCallback, bool, object) - [ ] System.Net.Mime.MimeBasePart::Send(BaseWriter, bool) - [ ] System.Runtime.Serialization.Json.ReflectionJsonReader::ReadSimpleDictionary(XmlReaderDelegator, XmlObjectSerializerReadContext, CollectionDataContract, Type, object) - [ ] System.Runtime.Serialization.NullPrimitiveDataContract::ReadMethodName.get() - [ ] System.Runtime.Serialization.NullPrimitiveDataContract::ReadXmlValue(XmlReaderDelegator, XmlObjectSerializerReadContext) - [ ] System.Runtime.Serialization.NullPrimitiveDataContract::WriteMethodName.get() - [ ] System.Runtime.Serialization.NullPrimitiveDataContract::WriteXmlElement(XmlWriterDelegator, object, XmlObjectSerializerWriteContext, XmlDictionaryString, XmlDictionaryString) - [ ] System.Runtime.Serialization.NullPrimitiveDataContract::WriteXmlValue(XmlWriterDelegator, object, XmlObjectSerializerWriteContext) - [ ] System.Runtime.Serialization.XmlDataContract::ReflectionCreateXmlSerializable(Type) - [ ] System.Runtime.Serialization.XmlObjectSerializerReadContext::IsBitSet(byte[], int) - [ ] System.ServiceModel.Channels.StreamConnection::GetCoreTransport() - [ ] System.ServiceModel.Dispatcher.DispatchRuntime.UnhandledActionInvoker::InvokeBegin(object, object[], AsyncCallback, object) - [ ] System.ServiceModel.Dispatcher.DispatchRuntime.UnhandledActionInvoker::InvokeEnd(object, object[], IAsyncResult) - [ ] MS.Internal.Xml.Cache.XPathDocumentBuilder::WriteEntityRef(string) - [ ] System.Xml.Serialization.ReflectionXmlSerializationReader::WriteArray(ArrayMapping, bool, bool, string, int, Fixup, Member) - [ ] System.Xml.Serialization.ReflectionXmlSerializationReader::WriteAttribute(Member, object) - [ ] System.Xml.Serialization.ReflectionXmlSerializationReader::WriteElement(ElementAccessor, bool, bool, bool, string, int, int, Fixup, Member) - [ ] System.Xml.Serialization.ReflectionXmlSerializationReader::WriteLiteralStructMethod(StructMapping, bool, bool, string) - [ ] System.Xml.Serialization.XmlSerializer::CreateReader() - [ ] System.Xml.Serialization.XmlSerializer::CreateWriter() - [ ] System.Xml.Serialization.XmlSerializer::Deserialize(XmlSerializationReader) - [ ] System.Xml.Serialization.XmlSerializer::Serialize(object, XmlSerializationWriter) - [ ] System.Xml.XmlRawWriter::WriteEndElementAsync(string, string, string) - [ ] System.Xml.XmlRawWriter::WriteNamespaceDeclarationAsync(string, string) - [ ] System.Xml.XmlReader::GetValueAsync() - [ ] System.Xml.XmlReader::ReadAsync() - [ ] System.Xml.XmlResolver::GetEntityAsync(Uri, string, Type) - [ ] System.Xml.XmlTextWriterBase64Encoder::WriteCharsAsync(char[], int, int) - [ ] System.Xml.XmlWellFormedWriter.NamespaceResolverProxy::System.Xml.IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope) - [ ] System.Xml.XmlWriter::FlushAsync() - [ ] System.Xml.XmlWriter::WriteBase64Async(byte[], int, int) - [ ] System.Xml.XmlWriter::WriteCDataAsync(string) - [ ] System.Xml.XmlWriter::WriteCharEntityAsync(char) - [ ] System.Xml.XmlWriter::WriteCharsAsync(char[], int, int) - [ ] System.Xml.XmlWriter::WriteCommentAsync(string) - [ ] System.Xml.XmlWriter::WriteDocTypeAsync(string, string, string, string) - [ ] System.Xml.XmlWriter::WriteEndAttributeAsync() - [ ] System.Xml.XmlWriter::WriteEndDocumentAsync() - [ ] System.Xml.XmlWriter::WriteEndElementAsync() - [ ] System.Xml.XmlWriter::WriteEntityRefAsync(string) - [ ] System.Xml.XmlWriter::WriteFullEndElementAsync() - [ ] System.Xml.XmlWriter::WriteProcessingInstructionAsync(string, string) - [ ] System.Xml.XmlWriter::WriteRawAsync(char[], int, int) - [ ] System.Xml.XmlWriter::WriteRawAsync(string) - [ ] System.Xml.XmlWriter::WriteStartAttributeAsync(string, string, string) - [ ] System.Xml.XmlWriter::WriteStartDocumentAsync() - [ ] System.Xml.XmlWriter::WriteStartDocumentAsync(bool) - [ ] System.Xml.XmlWriter::WriteStartElementAsync(string, string, string) - [ ] System.Xml.XmlWriter::WriteStringAsync(string) - [ ] System.Xml.XmlWriter::WriteSurrogateCharEntityAsync(char, char) - [ ] System.Xml.XmlWriter::WriteWhitespaceAsync(string) - [ ] System.Xml.Xsl.XsltOld.ContainerAction::Compile(Compiler) - [ ] System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBuffer::EnsureHasMarshalProxy() - [ ] System.Security.Cryptography.DSA::DerivedClassMustOverride() - [ ] System.Security.Cryptography.ECDiffieHellmanPublicKey::ToXmlString() - [ ] System.Security.Cryptography.ECDsa::FromXmlString(string) - [ ] System.Security.Cryptography.ECDsa::ToXmlString(bool) - [ ] System.Security.Cryptography.RandomNumberGenerator::GetNonZeroBytes(byte[]) - [ ] System.Security.Cryptography.RSA::DerivedClassMustOverride() - [ ] System.Security.Cryptography.AsymmetricAlgorithm::FromXmlString(string) - [ ] System.Security.Cryptography.AsymmetricAlgorithm::KeyExchangeAlgorithm.get() - [ ] System.Security.Cryptography.AsymmetricAlgorithm::SignatureAlgorithm.get() - [ ] System.Security.Cryptography.AsymmetricAlgorithm::ToXmlString(bool) - [ ] System.Transactions.InternalEnlistment::PromotableSinglePhaseNotification.get() - [ ] System.Transactions.InternalEnlistment::ResourceManagerIdentifier.get() ## How to remove: 1. Include the following in your .csproj file: ``` Common\System\NotImplemented.cs ``` Options for removing “throw new NotImplementedException()”: ### If you can implement the missing functionality now: Do so. ### If this is functionality that’s not supported on a particular framework or OS, replace with `throw new PlatformNotSupportedException(SR.xxx);` ### If this is an api that needs to throw NotImplemented for backward compat reasons, replace with: `throw NotImplemented.ByDesign;` or `throw NotImplemented.ByDesignWithMessage(SR.xxx);` ### If this is a virtual api method that’s only intended to work when overridden by another class, replace with: `throw new NotSupportedException(SR.xxx);` (Unless required for backward compat, refrain from throwing NotImplemented out of these.) ### If this is a virtual non-api method that’s only intended to work when overridden by another class, replace with: An abstract method. ### If this is a compiler or toolchain intrinsic that only needs a body to make C# happy: `throw new NotSupportedException();` ### If this is true undone work and you just can’t fix it now, replace with: `throw NotImplemented.ActiveIssue(“https://github.com/dotnet/corefx/issues/xxx”);` The string will not leak out via Exception.Message. The string is for tooling and human readers only. In the past, we’ve usually added an inline comment but the trouble with those is that IL-based tooling can’t read comments. " +20542 area-System.Security Fix temp keychain timeout The default lock policy on a new keychain is to lock on sleep and after 5 minutes of being idle. This means that if more than 5 minutes pass from usages of a certificate private key (where the cert was opened from a PFX) the user gets prompted for a password for the temporary keychain. Since that keychain has a randomly generated password it's not really possible for the user to accomplish this successfully. No tests cover this scenario, since they require more than 5 minutes of idle time. Master version of #20509. +20545 area-System.Diagnostics System.Diagnostics.Tests.ProcessThreadTests~2FTestStartTimeProperty failed with Assert.InRange() https://mc.dot.net/#/user/shmao/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/82a719f503a18103d9f896336237989f8d630486/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessThreadTests~2FTestStartTimeProperty ``` Assert.InRange() Failure\r\nRange: (5/31/2017 9:34:50 PM - 5/31/2017 9:34:55 PM)\r\nActual: 5/31/2017 9:34:49 PM Stack Trace : at System.Diagnostics.Tests.ProcessThreadTests.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` last time https://github.com/dotnet/corefx/issues/5805 https://github.com/dotnet/corefx/pull/7223 +20546 area-System.Data System.Data.Common classes should implement an interface containing the async methods `System.Data.Common.DbConnection` and `System.Data.Common.DbCommand` are abstract classes that declares additional async methods not defined in `System.Data.IDbConnection` and `System.Data.IDbCommand`, respectively. This makes migration towards async methods and/or mocking the async methods for testing difficult. I am proposing we introduce an intermediary interface `IDbConnectionAsync` that is derived from `IDbConnection` and will be implemented by `DbConnection`. Similarly, introduce `IDbCommandAsync` between `IDbCommand` and `DbCommand`. These interfaces will contain `public async` methods that is missing from the original interfaces. ## Rationale and Usage Consider the following snippet illustrating an `IDbCommand` factory. There are two factory methods, one for regular and one for the async variant. I've included unit test methods to verify the factory calls `CreateCommand()` and `Open()`. ```c# public class CommandFactory { public IDbCommand CreateCommand(IDbConnection connection) { var command = connection.CreateCommand(); connection.Open(); return command; } public async Task Create​CommandAsync(DbConnection connection) { var command = connection.CreateCommand(); await connection.OpenAsync(); return command; } } [TestClass] public class CommandFactoryTests { [TestMethod] public void TestCreateCommand() { // Arrange var commandFactory = new CommandFactory(); var mockConnection = new Mock(); var mockCommand = new Mock(); mockConnection .Setup(mock => mock.CreateCommand()) .Returns(mockCommand.Object); // Act var command = commandFactory.CreateCommand(mockConnection.Object); // Assert Assert.IsNotNull(command); Assert.AreEqual(mockCommand.Object, command); mockConnection.Verify(mock => mock.Open(), Times.Once); } [TestMethod] public async Task TestCreateCommandAsync() { // Arrange var commandFactory = new CommandFactory(); var mockConnection = new Mock(); var mockCommand = new Mock(); mockConnection .Setup(mock => mock.CreateDbCommand()) // problematic line .Returns(mockCommand.Object); // Act var command = await commandFactory.Create​CommandAsync(mockConnection.Object); // Assert Assert.IsNotNull(command); Assert.AreEqual(mockCommand.Object, command); mockConnection.Verify(mock => mock.OpenAsync(), Times.Once); } } ``` The regular variant passed with flying colors. The async variant, on the other hand, failed to compile because `CreateDbCommand()` method in `DbConnection` is `protected`, thus not accessible to the mocking library. The workaround for this is to create an abstract class that derives from `DbCommand` and implement `CreateDbCommand` and return an instance of `Mock`. This can be easily avoided if there's an interface definition that the mocking library can use instead of the abstract class. `DbCommand` has a similar problem, all overloads of `ExecuteReaderAsync()` eventually calls non-mockable `ExecuteDbDataReader()` because it is a `protected` method. Lastly, while I believe I can mock `DbDataReader` easily, it would be great to follow the same hierarchy by having `IDataReaderAsync`. Implementing this will also avoid `IDbCommand` importing `System.Data.Common`. ## Proposed API ```c# public interface IDbConnection { // as-is } public interface IDbConnectionAsync : IDbConnection { new System.Data.IDbCommandAsync Create​Command (); System.Threading.Tasks.Task OpenAsync (); System.Threading.Tasks.Task OpenAsync (System.Threading.CancellationToken cancellationToken); } public abstract class DbConnection : IDbConnectionAsync { ... } public interface IDbCommand { // as-is } public interface IDbCommandAsync : IDbCommand { Task ExecuteNonQueryAsync (CancellationToken cancellationToken); Task ExecuteNonQueryAsync (); Task ExecuteReaderAsync (); Task ExecuteReaderAsync (CommandBehavior behavior); Task ExecuteReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken); Task ExecuteReaderAsync (CancellationToken cancellationToken); Task ExecuteScalarAsync (CancellationToken cancellationToken); Task ExecuteScalarAsync (); } public abstract class DbCommand : IDbCommandAsync { ... } ``` ## Details * The async interfaces should include async public methods defined in the abstract classes but not defined in the base interfaces. * External API changes will be minimal. We can implement `IDbConnection.CreateCommand` and `IDbConnectionAsync.CreateCommand` explicitly on `DbConnection` and maintain `DbConnection.CreateCommand` signature -- it will return the abstract class `DbCommand`. `DbCommand.ExecuteReaderAsync` overloads can use similar approach, albeit with a small hack because of invariant `Task`. * Proposed change diff: https://github.com/dotnet/corefx/compare/master...adriangodong:system-data-async [EDIT] Added C# syntax highlighting by @karelz +20548 area-System.Data [Proposal] It should be possible to manually create SqlException `SqlException` create methods are currently internal. I would like some kind of create method to be public. ## Rationale Unit tests. There are various scenarios in which SqlException is handled differently than other kinds of exceptions, and being able to test those scenarios without actual database would be useful. Related StackOverflow thread, [How to throw a SqlException when needed for mocking and unit testing?](https://stackoverflow.com/questions/1386962/how-to-throw-a-sqlexception-when-needed-for-mocking-and-unit-testing), has 53 upvotes. ## Potential API ``` class SqlException { // ... public SqlException( string message, SqlErrorCollection errorCollection, Guid clientConnectionId = Guid.Empty, Exception innerException = null ) { ... } } class SqlErrorCollection { // ... public SqlErrorCollection() { ... } public SqlErrorCollection(params SqlError[] errors) { ... } } class SqlError { // ... public SqlError( int infoNumber, byte errorState, byte errorClass, string server, string errorMessage, string procedure, int lineNumber ) { ... } } ``` ## Open Questions Is there a better way to expose `SqlError` that would allow easier future extensibility? Some kind of `SqlErrorBuilder`? +20549 area-System.Net release/2.0: Fix HttpClient on Unix handling of 0-len content with chunked upload Port https://github.com/dotnet/corefx/pull/20500 to the release/2.0.0 branch. cc: @geoffkizer Fixes #20419 +20550 area-System.Net System.Net.Security.Tests.dll FailFast on Debian "This comes just after ""starting KDC"" from `src\System.Net.Security\tests\Scripts\Unix\setup-kdc.sh` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170601.02/workItem/System.Net.Security.Tests/wilogs ``` Starting KDC.. FailFast: Invalid context passed to SafeDeleteNegoContext at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Net.Security.SafeDeleteNegoContext.SetGssContext(SafeGssContextHandle context) in /root/corefx/src/Common/src/System/Net/Security/Unix/SafeDeleteNegoContext.cs:line 52 at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) in /root/corefx/src/Common/src/System/Net/Security/NegotiateStreamPal.Unix.cs:line 197 at System.Net.Security.NegotiateStreamPal.InitializeSecurityContext(SafeFreeCredentials credentialsHandle, SafeDeleteContext& securityContext, String spn, ContextFlagsPal requestedContextFlags, SecurityBuffer[] inSecurityBufferArray, SecurityBuffer outSecurityBuffer, ContextFlagsPal& contextFlags) in /root/corefx/src/Common/src/System/Net/Security/NegotiateStreamPal.Unix.cs:line 240 at System.Net.NTAuthentication.GetOutgoingBlob(Byte[] incomingBlob, Boolean throwOnError, SecurityStatusPal& statusCode) in /root/corefx/src/Common/src/System/Net/NTAuthentication.Common.cs:line 243 at System.Net.Security.NegoState.GetOutgoingBlob(Byte[] incomingBlob, Exception& e) in /root/corefx/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 778 at System.Net.Security.NegoState.StartSendBlob(Byte[] message, LazyAsyncResult lazyResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 444 at System.Net.Security.NegoState.CheckCompletionBeforeNextSend(Byte[] message, LazyAsyncResult lazyResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 648 at System.Net.Security.NegoState.ProcessReceivedBlob(Byte[] message, LazyAsyncResult lazyResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 624 at System.Net.Security.NegoState.ReadCallback(IAsyncResult transportResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 756 at System.Net.LazyAsyncResult.Complete(IntPtr userToken) in /root/corefx/src/Common/src/System/Net/LazyAsyncResult.cs:line 428 at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) in /root/corefx/src/Common/src/System/Net/LazyAsyncResult.cs:line 382 at System.Net.LazyAsyncResult.InvokeCallback(Object result) in /root/corefx/src/Common/src/System/Net/LazyAsyncResult.cs:line 389 at System.Net.StreamFramer.ReadFrameComplete(IAsyncResult transportResult) in /root/corefx/src/System.Net.Security/src/System/Net/StreamFramer.cs:line 270 at System.Net.StreamFramer.ReadFrameCallback(IAsyncResult transportResult) in /root/corefx/src/System.Net.Security/src/System/Net/StreamFramer.cs:line 168 at System.Threading.Tasks.TaskToApm.<>c__DisplayClass3_0.b__0() in /root/corefx/src/Common/src/System/Threading/Tasks/TaskToApm.cs:line 133 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(ContextCallback callback, Object state, Task& currentTask) at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Environment.FailFast(System.String, System.Exception) at System.Net.Security.SafeDeleteNegoContext.SetGssContext(Microsoft.Win32.SafeHandles.SafeGssContextHandle) at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(System.Net.Security.SafeFreeNegoCredentials, System.Net.Security.SafeDeleteContext ByRef, System.String, System.Net.ContextFlagsPal, System.Net.Security.SecurityBuffer, System.Net.Security.SecurityBuffer, System.Net.ContextFlagsPal ByRef) at System.Net.Security.NegotiateStreamPal.InitializeSecurityContext(System.Net.Security.SafeFreeCredentials, System.Net.Security.SafeDeleteContext ByRef, System.String, System.Net.ContextFlagsPal, System.Net.Security.SecurityBuffer[], System.Net.Security.SecurityBuffer, System.Net.ContextFlagsPal ByRef) at System.Net.NTAuthentication.GetOutgoingBlob(Byte[], Boolean, System.Net.SecurityStatusPal ByRef) at System.Net.Security.NegoState.GetOutgoingBlob(Byte[], System.Exception ByRef) at System.Net.Security.NegoState.StartSendBlob(Byte[], System.Net.LazyAsyncResult) at System.Net.Security.NegoState.CheckCompletionBeforeNextSend(Byte[], System.Net.LazyAsyncResult) at System.Net.Security.NegoState.ProcessReceivedBlob(Byte[], System.Net.LazyAsyncResult) at System.Net.Security.NegoState.ReadCallback(System.IAsyncResult) at System.Net.LazyAsyncResult.Complete(IntPtr) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr) at System.Net.LazyAsyncResult.InvokeCallback(System.Object) at System.Net.StreamFramer.ReadFrameComplete(System.IAsyncResult) at System.Net.StreamFramer.ReadFrameCallback(System.IAsyncResult) at System.Threading.Tasks.TaskToApm+<>c__DisplayClass3_0.b__0() at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(System.Threading.ContextCallback, System.Object, System.Threading.Tasks.Task ByRef) at System.Threading.Tasks.Task.RunContinuations(System.Object) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) at System.Threading.ThreadPoolWorkQueue.Dispatch() /home/helixbot/dotnetbuild/work/a3f18f62-593d-45f2-985d-8cbdf5c68e39/Work/e26112cb-e993-41f5-aa16-81e08426a81c/Unzip/RunTests.sh: line 89: 4484 Aborted (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Net.Security.Tests.dll -xml testResults.xml -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=failing command exited with ExitCode: 134 ```" +20553 area-System.IO System.IO.FileSystem tests are not safe run concurrently with themselves due to using CurrentDirectory "For example the failure below is caused by the two tests below, one creating illegal files like LPT3 underneath the current directory, and the other evaluating wildcards under the current directory. The tests should all use their own directories. Currentdirectory is not writeable in appcontainer runs anyway. https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170601.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.Directory_GetFileSystemEntries_str_str_so_alldirs~2FWindowsSearchPatternInvalid_Wildcards_netcoreapp ``` C# [ConditionalFact(nameof(UsingNewNormalization))] [ActiveIssue(20117, TargetFrameworkMonikers.Uap)] [PlatformSpecific(TestPlatforms.Windows)] // device name prefixes public void PathWithReservedDeviceNameAsExtendedPath() { var paths = IOInputs.GetReservedDeviceNames(); using (TemporaryDirectory directory = new TemporaryDirectory()) // creates at IOPath.Combine(Directory.GetCurrentDirectory(), IOPath.GetRandomFi { Assert.All(paths, (path) => { Assert.True(Create(IOInputs.ExtendedPrefix + Path.Combine(directory.Path, path)).Exists, path); }); } } ``` ```c# [Fact] [PlatformSpecific(TestPlatforms.Windows)] // Windows-invalid search patterns throw [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ""In netcoreapp we made three new characters be treated as valid wildcards instead of invalid characters. NetFX still treats them as InvalidChars."")] public void WindowsSearchPatternInvalid_Wildcards_netcoreapp() { Assert.All(OldWildcards, invalidChar => { GetEntries(Directory.GetCurrentDirectory(), string.Format(""te{0}st"", invalidChar.ToString())); }); Assert.All(NewWildcards, invalidChar => { GetEntries(Directory.GetCurrentDirectory(), string.Format(""te{0}st"", invalidChar.ToString())); }); } ``` ``` ssert.All() Failure: 2 out of 3 items in the collection did not pass.\r [2]: System.UnauthorizedAccessException: Access to the path 'C:\\dotnetbuild\\work\\88cccc46-9679-4e82-9577-6ff3ee507b21\\Work\\376a6561-e0c6-40f6-a963-de66668044b7\\Unzip\\sbnzuwqz.ppn\\LPT3' is denied.\r at System.IO.Win32FileSystemEnumerableIterator`1.HandleError(Int32 errorCode, String path)\r at System.IO.Win32FileSystemEnumerableIterator`1.AddSearchableDirsToList(PathPair localSearchData)\r at System.IO.Win32FileSystemEnumerableIterator`1.MoveNext()\r at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)\r at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)\r at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)\r at System.IO.Directory.GetFileSystemEntries(String path, String searchPattern, SearchOption searchOption)\r at System.IO.Tests.Directory_GetFileSystemEntries_str_str_so_alldirs.GetEntries(String dirName, String searchPattern)\r at System.IO.Tests.Directory_GetFileSystemEntries_str_str.b__17_1(Char invalidChar)\r at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action)\r [1]: System.UnauthorizedAccessException: Access to the path 'C:\\dotnetbuild\\work\\88cccc46-9679-4e82-9577-6ff3ee507b21\\Work\\376a6561-e0c6-40f6-a963-de66668044b7\\Unzip\\sbnzuwqz.ppn\\COM2' is denied.\r at System.IO.Win32FileSystemEnumerableIterator`1.HandleError(Int32 errorCode, String path)\r at System.IO.Win32FileSystemEnumerableIterator`1.AddSearchableDirsToList(PathPair localSearchData)\r at System.IO.Win32FileSystemEnumerableIterator`1.MoveNext()\r at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)\r at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)\r at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)\r at System.IO.Directory.GetFileSystemEntries(String path, String searchPattern, SearchOption searchOption)\r at System.IO.Tests.Directory_GetFileSystemEntries_str_str_so_alldirs.GetEntries(String dirName, String searchPattern)\r at System.IO.Tests.Directory_GetFileSystemEntries_str_str.b__17_1(Char invalidChar)\r at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) ```" +20555 area-System.Collections CollectionExtensions is missing optimizations for Dictionary New CollectionExtensions methods Remove and TryAdd could use Dictionary<,> implementation directly when input value is of Dictionary<,> type. +20557 area-System.Runtime "No test results generated under ""System.Runtime.Loader.RefEmitLoadContext.Tests"", ""System.Runtime.Loader.Tests"" & ""System.Runtime.Serialization.Formatters.Tests""" "No test results generated under ""System.Runtime.Loader.RefEmitLoadContext.Tests"", ""System.Runtime.Loader.Tests"" & ""System.Runtime.Serialization.Formatters.Tests"" Details: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170601.01/workItem/System.Runtime.Loader.RefEmitLoadContext.Tests/wilogs https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170601.01/workItem/System.Runtime.Loader.Tests/wilogs https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170601.01/workItem/System.Runtime.Serialization.Formatters.Tests/wilogs" +20558 area-System.IO Add a Forward-only API for System.IO.Compression "This was started in https://github.com/dotnet/corefx/issues/9657 There seems to be a growing desire/need for a forward-only API that accesses compressed file formats (e.g. zip, gzip, tar, etc.) in a streaming manner. This means very large files as well as streams like network streams can be read and decompressed on the fly. Basically, the API reads from Stream objects and never seeks on it. This is how the Reader/Writer API from [SharpCompress](https://github.com/adamhathcock/sharpcompress) works. Here's a sample from the unit tests: ```csharp using (Stream stream = new ForwardOnlyStream(File.OpenRead(path))) using (IReader reader = ReaderFactory.Open(stream)) { while (reader.MoveToNextEntry()) { if (!reader.Entry.IsDirectory) { reader.WriteEntryToDirectory(test.SCRATCH_FILES_PATH, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true }); } } } public interface IReader : IDisposable { event EventHandler> EntryExtractionProgress; event EventHandler CompressedBytesRead; event EventHandler FilePartExtractionBegin; ArchiveType ArchiveType { get; } IEntry Entry { get; } /// /// Decompresses the current entry to the stream. This cannot be called twice for the current entry. /// /// void WriteEntryTo(Stream writableStream); bool Cancelled { get; } void Cancel(); /// /// Moves to the next entry by reading more data from the underlying stream. This skips if data has not been read. /// /// bool MoveToNextEntry(); /// /// Opens the current entry as a stream that will decompress as it is read. /// Read the entire stream or use SkipEntry on EntryStream. /// EntryStream OpenEntryStream(); } ``` `WriteEntryToDirectory` is an extension method that provides some shortcuts for dealing with file operations but what it really does is just grab the internal stream and decompresses. The actual entry method is just `IReader.WriteEntryTo(Stream);` If the entry isn't decompressed then the internal stream is just moved forward and not decompressed if possible (some formats require decompression since compressed length can be unknown) The Writer API works similarly. There is also a generic API from `ReaderFactory` or `WriterFactory` that doesn't require knowledge of the format beforehand. There is also a similar `ArchiveFactory` that is writeable (that uses WriterFactory internally to save) that could also be used for the current `ZipArchive` API and beyond. As the author of SharpCompress, I'd like to push a lot of the ideas into core library but having native access to the compression streams (like the internal zlib) would be a great performance benefit for me. I haven't ever written any compression algorithm implementations myself so I'm sure my managed implementations need a lot of love. I would start by creating `ZipReader` and `ZipWriter` (as well as starting the generic API) using a lot of the internal code already in the core library to prove out the API. This kind of relates to https://github.com/dotnet/corefx/issues/14853 but forward-only access is something most libraries don't account for so I'm not sure. Other easy additions would be Reader/Writer support for GZip, BZip2 and LZip (with an LZMA compressor). Tar support linked with the previous single file formats would be a larger addition. SharpCompress deals with `tar.gz`, `tar.bz2` and `tar.lz` auto-magically by detecting first the compressed format then a tar file inside. The above API works the same. Thoughts? Summoning a few people from the other issue cc: @ianhays @karelz @qmfrederik " +20559 area-System.Net "Tests under ""System.Net.Security.Tests"" failed with ""Client/Server TCP Connect timed out"" and ""System.TimeoutException""" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170601.05/workItem/System.Net.Security.Tests/wilogs ~~~ 2017-05-31 23:18:08,252: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.CertificateValidationClientServer.CertificateValidationClientServer_EndToEnd_Ok(useClientSelectionCallback: False) [FAIL] 2017-05-31 23:18:08,254: INFO: proc(54): run_and_log_output: Output: Client/Server TCP Connect timed out. 2017-05-31 23:18:08,254: INFO: proc(54): run_and_log_output: Output: Expected: True 2017-05-31 23:18:08,254: INFO: proc(54): run_and_log_output: Output: Actual: False 2017-05-31 23:18:08,258: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-31 23:18:08,402: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/tests/FunctionalTests/CertificateValidationClientServer.cs(80,0): at System.Net.Security.Tests.CertificateValidationClientServer.d__7.MoveNext() 2017-05-31 23:18:08,402: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-31 23:18:08,402: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-31 23:18:08,402: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-31 23:18:08,402: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-31 23:18:08,403: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-31 23:18:08,403: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-31 23:18:08,403: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-31 23:18:08,403: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-31 23:18:08,403: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-31 23:18:09,393: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_UnsupportedAllServer_Fail [FAIL] 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: Assert.Throws() Failure 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: Expected: typeof(System.NotSupportedException) 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: Actual: typeof(System.TimeoutException): The operation has timed out. 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs(134,0): at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: --- End of stack trace from previous location where exception was thrown --- 2017-05-31 23:18:09,394: INFO: proc(54): run_and_log_output: Output: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 2017-05-31 23:18:09,395: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +20561 area-System.Xml XmlReader, XmlTextReader: ensure Readers created from a full path have an absolute BaseURI @stephentoub @sepidehMS @krwq PTAL This improves cross-platform behavior when creating an XmlReader/XmlTextReader from a full file path (cfr https://github.com/dotnet/corefx/issues/20046). Fixes #20626. +20562 area-Meta Request for Ubuntu 17.04 build When trying to install Powershell Ubuntu 10.04 .deb package, it asks for dependency libicu55 which is not available for Ubuntu 17.04 (it has libicu57). I understand that powershell ( https://github.com/PowerShell/PowerShell/ ) is build on this project, and until you release a 17.04 build, they can't release it. So please, release an Ubuntu 17.04 build/ Thank You, Maxim. +20563 area-System.Linq Enumerable.OrderBy() infinite loops in the presence of a bad comparer An `IComparer` which does not properly detect equal elements can cause an infinite loop in the evaluation of an `IEnumerable` sorted with `OrderBy`: ```c# var sequence = Enumerable.Range(0, 2); var comparer = Comparer.Create((int a, int b) => a == b ? -1 : a.CompareTo(b)); sequence.OrderBy(i => i, comparer).ToArray(); // never terminates ``` This is not necessarily a bug since a non-transitive `IComparer` should cause undefined behavior. However, it would be nice if the result were a thrown exception or nonsensically sorted sequence instead of an infinite loop to simplify debugging. In comparison, `Array.Sort` applied to the same sequence and `IComparer` does not result in an infinite loop. +20564 area-System.Xml XmlResolver: remove workaround for lack of Unix path support in Uri cc @stephentoub Some tests were relying on the Uri class to convert backslashes to forward slashes. +20570 area-Infrastructure CoreFX contributor experience Forked from discussion in https://github.com/dotnet/corefx/issues/4571#issuecomment-305198456 In nutshell: @FransBouma ran into lots of hardship when trying to contribute to CoreFX repo - mainly around using VS. @jnm2 and @willdean raised similar concerns and additional points. Let's have the discussion here. When there are actionable work items what to fix, or separate larger sub-discussions, we may moved them into separate issues. This issue is forum for the overall problem space. List of key VS scenarios: 1. Require latest stable release of VS (not preview) 1. **Open solution** at the top of the tree 1. **Compile** CoreFX projects, including test projects 2. **Run single test** 1. **Debug single test** (incl. over and over again) 1. **Run all tests** from specific test project so you can confirm things work * P2: Support additional ways to run tests - e.g. ReSharper and NCrunch Ideas: * Integration test of CoreFX build & running/debugging test in VS - note: Can we leverage VS UI test automation? +20574 area-System.Reflection Serialization Backdown shuts down all ParameterInfo serialization, not just the runtime's implementation., The decision to make the runtime’s implementation of Reflection objects non-serializable went too far and changed the behaviors of methods inherited by all Reflection implementors. In particular, by changing ParameterInfo.GetRealObject() to throw PNSE, all third-party implementations of ParameterInfo become undeserializable, not just the runtime’s implementation. The intended change was to make the runtime’s implementation non-serializable which is already accomplished by removing [Serializable] from RuntimeParameterInfo. This bug is about to be merged into release/2.0.0 via this open PR (https://github.com/dotnet/coreclr/pull/12020) This issue is about fixing that bug. +20577 area-System.Security [release/2.0] macOS: Set PFX temporary keychains to have a lock policy of never. The default lock policy on a new keychain is to lock on sleep and after 5 minutes of being idle. This means that if more than 5 minutes pass from usages of a certificate private key (where the cert was opened from a PFX) the user gets prompted for a password for the temporary keychain. Since that keychain has a randomly generated password it's not really possible for the user to accomplish this successfully. No tests cover this scenario, since they require more than 5 minutes of idle time. Fixes #20509. (Port of https://github.com/dotnet/corefx/issues/20542 to release/2.0.0) +20578 area-Serialization System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Deserialize_FuzzInput test failed on Desktop Failed with error: ``` Stacktrace MESSAGE: System.IO.FileLoadException : The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) +++++++++++++++++++ STACK TRACE: at System.Reflection.AssemblyName.nInit(RuntimeAssembly& assembly, Boolean forIntrospection, Boolean raiseResolveEvent) at System.Reflection.AssemblyName..ctor(String assemblyName) at System.TypeNameParser.ResolveAssembly(String asmName, Func`2 assemblyResolver, Boolean throwOnError, StackCrawlMark& stackMark) at System.TypeNameParser.ConstructType(Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) at System.TypeNameParser.ConstructType(Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) at System.TypeNameParser.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) at System.Type.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetSimplyNamedTypeFromAssembly(Assembly assm, String typeName, Type& type) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.FastBindToType(String assemblyName, String typeName) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Bind(String assemblyString, String typeString) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name) at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Deserialize_FuzzInput(Object obj, Random rand, Int32 fuzzTrial) in D:\j\workspace\outerloop_net---71bc9469\src\System.Runtime.Serialization.Formatters\tests\BinaryFormatterTests.cs:line 534 ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_release/lastCompletedBuild/testReport/System.Runtime.Serialization.Formatters.Tests/BinaryFormatterTests/Deserialize_FuzzInput_obj____1__2__3__4__5______AAEAAAD_____AQAAAAAAAAAMAgAAAFVTeXN0ZW0uT2JqZWN0TW_________AAEAAAD_____AQAAAAAAAAAMAgAAAE5XaW5kb3dzQmFzZSwgVm_________rand__Random______fuzzTrial__1_/ cc: @krwq @morganbr @stephentoub +20579 area-System.Diagnostics DiagnosticSourceListener tests fails events and not enabled and event source count is zero "Tests from ""System.Diagnostics.DiagnosticSource\tests"" " +20581 area-Serialization Reenable TimeZoneInfo serialization test Needs newest coreclr update: https://github.com/dotnet/coreclr/pull/12024 cc @danmosemsft +20583 area-System.Net Consider adding WebSocket.CopyToAsync() to avoid copies and allocations on ReceiveAsync So that websocket implementations that keep an internal buffer e.g. (https://github.com/dotnet/corefx/blob/6d796f18bb24762e16ba0337a4bae75c09d83b22/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs#L39) can be pushed to the destination without allocating a buffer. ### API Proposal ```C# public class WebSocket { public Task CopyToAsync( Func, object, Task> callback, object state); ``` ### Usage You could even pipe to a `Stream` like this: ```C# await webSocket.CopyToAsync((data, state) => { return ((Stream)state).WriteAsync(data.Array, data.Offset, data.Count); }, stream); ``` # Original Proposal ```c# WebSocket.CopyToAsync(Func, object, Task> callback, object state); ``` /cc @stephentoub @CIPop @davidsh +20586 area-Infrastructure Set EnableDefaultItems=false in the environment in init-tools scripts This should block the restore command from trying to discover all the default items on the disk when they aren't needed for anything. @danmosemsft @mmitche this is an attempt to see if we can reduce the time it takes during init-tools. +20587 area-System.Runtime Change RuntimeEnvironment.GetRuntimeDirectory to use AppDomain.CurrentDomain.BaseDirectory AppDomain.CurrentDomain.BaseDirectory Change RuntimeEnvironment.GetRuntimeDirectory Disable couple of InteropServices tests which won't work on UWP. @yizhang82 @botaberg @AtsushiKan +20588 area-System.IO System.IO.Ports.Test OpenEveryPortName disabled on UapAot. -method System.IO.Ports.Tests.GetPortNames.OpenEveryPortName This is probably by design but I don't want to make the call as I don't exactly own this area and there may be another way for that api to work that I don't know of. SerialPort.GetPortNames() needs to read the registry and its uses Microsoft.Win32.Registry to do so. For Aot, that package is the autogenerated PNSE version. (Unfortunately, OpenEveryPortName() NullRefs rather than PNSE'ing as it tries to execute Registry.LocalMachine.OpenSubKey() - Registry.LocalMachine is a static field which never gets initialized in an autogenerated PNSE assembly.) +20589 area-System.Data System.Data.Common.Tests InvokeCodeThatShouldFirEvents_EnsureEventsFired test disabled. -method System.Data.Tests.DataCommonEventSourceTest.InvokeCodeThatShouldFirEvents_EnsureEventsFired ```` System.Data.Tests.DataCommonEventSourceTest.InvokeCodeThatShouldFirEvents_EnsureEventsFired [FAIL] Assert.InRange() Failure Range: (1 - 2147483647) Actual: 0 Stack Trace: c:\dd\CoreFxN\src\System.Data.Common\tests\System\Data\DataCommonEventSourceTest.cs(35,0): at System.Data.Tests.DataCommonEventSourceTest.InvokeCodeThatShouldFirEvents_EnsureEventsFired() at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtrForDynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState) c:\dd\ProjectN\src\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs(400,0): at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) ``` +20590 area-Serialization Test DCS_NativeDll Failed on Uapaot "The test failed on uapaot. The test type block the build of UWP ILC run. I removed the test type entirely. ```c# [Fact] public static void DCS_NativeDll() { NativeDllWrapper.CallIntoNativeDll(); } public class NativeDllWrapper { internal struct MyStruct { internal int field1; internal int field2; } [System.Runtime.InteropServices.DllImport(""NativeDll.dll"")] internal static extern int StructInAndOutTest(MyStruct myStruct, out MyStruct outMyStruct); public static int CallIntoNativeDll() { MyStruct myStruct = new MyStruct(); myStruct.field1 = 1; myStruct.field2 = 2; return myStruct.field1; } } ```" +20591 area-Infrastructure Update BuildToolsVersion This update is to get the XunitOptions fix over in corefx side. cc: @danmosemsft @weshaggard +20592 area-System.Threading System.Threading.Tests TestEtw disabled. System.Threading.Tests -method System.Threading.Tests.EtwTests.TestEtw Events that should be firing aren't. +20593 area-System.Drawing Add support for System.Drawing on Windows. "This change adds a new library, System.Drawing.Common, which supports a large subset of the System.Drawing API. It is a direct port of the code from the .NET Framework codebase. The code has been cleaned, formatted, and sanitized to match the code style of corefx, but is otherwise very similar to the .NET Framework version. There are a few key differences: * TypeConverter's have been omitted for now. If we want to add these to .NET Core, we should add them to the TypeConverter library, rather than System.Drawing.Common itself. Note that there's already a few TypeConverter's for the types that are in System.Drawing.Primitives. * Some parts of the library do not respond to ""System Events"", because they are not yet implemented in .NET Core. This means that fonts and colors will not automatically update when the system defaults change, as they do in .NET Framework. The code is still there, but behind the feature flag ""FEATURE_SYSTEM_EVENTS"". * Various attributes have been removed from the codebase, because they are no longer applicable. Examples: * Designer-related attributes (DefaultProperty, DefaultEvent, Editor, etc.) * CAS-related attributes. CAS-related method calls (Security demands and asserts) have also been removed. There is still further cleanup that can be done in order to match the style and structure of corefx. For example, the interop code should be reorganized to match other BCL libraries. NOTE: This implementation will only work on Windows, and not in UWP. This is a strictly compatibility-driven feature. Any changes made to it should not significantly diverge from the .NET Framework implementation. Libraries should only take a dependency on System.Drawing.Common if they are relying on legacy components from .NET Framework; newly-written code and features should rely on modern alternatives." +20594 area-Serialization Disable Two DCS/DCJS Tests on uapaot. DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract failed on uapaot due to #20478. DCS_NativeDll failed to compile on uapaot. I opened #20590 for tracking it. Re-enabled DCS_TypeWithTypeProperty as it passed on uapaot. Fix #16768 +20597 area-Infrastructure Add symbol signatures to NuGet packages. This is still waiting for a BuildTools update to fix one remaining issue - so this is not ready to merge yet. - Add MicroBuild signing to Publish definition. - Add symbol signing steps to Publish definition. - This cracks the nupkgs, finds files that we want to index by extension, creates a CDF file and from that a catalog file, gets the catalog file signed, and re-inserts the catalog into the nupkg. +20598 area-System.Net Please add option to force resolve DNS address by using IPv4 or IPv6 For example, this is supported by CURL with command line parameters -4, --ipv4 and -6, --ipv6 (https://curl.haxx.se/docs/manpage.html#-6) This parameter would probably be in HttpClientHandler class with default value set to IPv4. One could resolve IP address manually by calling System.Net.Dns.GetHostAddressesAsync and use this in Uri.Host, but there can be issues when connecting to servers with HTTPS protocol. +20599 area-Meta [WIP] Core Desktop Serialization Roundtrip work Stub for out serialization NetFX work - work in progress Types with failures when deserializing netfx->core: - [ ] System.Net.CookieCollection - [ ] System.Net.CookieContainer - [ ] System.Collections.BitArray - [ ] System.Collections.ArrayList - [ ] System.Collections.Comparer - [ ] System.Collections.Queue - [ ] System.Collections.Generic.SortedDictionary - [ ] System.Collections.SortedList - [ ] System.Collections.Hashtable - [ ] System.ComponentModel.BindingList - [ ] System.Collections.Stack - [ ] System.Collections.Specialized.StringDictionary - [ ] System.Collections.Specialized.StringCollection - [ ] System.Collections.Specialized.HybridDictionary - [ ] System.Collections.ObjectModel.ObservableCollection - [ ] System.Collections.ObjectModel.ReadOnlyObservableCollection - [ ] System.Collections.ObjectModel.ReadOnlyDictionary - [ ] System.Runtime.Serialization.Formatters.Tests.SimpleKeyedCollection cc: @ViktorHofer [log.txt](https://github.com/dotnet/corefx/files/1046203/log.txt) +20600 area-System.Runtime Implement RuntimeEnvironment.GetSystemVersion for uapaot RuntimeEnvironment.GetSystemVersion throws PNSE now. +20602 area-Infrastructure Dumpling fails due to locked file "Is dumpling.py getting downloaded even when it already exists? I see lots of ``` downloaded dumpling.py downloaded analysis.py downloaded triage.ini ``` issue: ``` Running tests... Start time: 15:30:51.12 Traceback (most recent call last): File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 1128, in main(sys.argv) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 1123, in main cmdProc.Process(config) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 537, in Process self.Install(config) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 545, in Install self._dumpSvc.DownloadClientFile('dumpling.py', config.installpath) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 213, in DownloadClientFile DumplingService._stream_file_from_response(response, os.path.join(downdir, filename)) File ""C:\Users\dotnet-bot/.dumpling/dumpling.py"", line 384, in _stream_file_from_response os.remove(path) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: u'C:\\Users\\dotnet-bot\\.dumpling\\dumpling.py' ```" +20603 area-Serialization Fix Bug with Serialization of Property with Private Getter. If a type does not have any serialization attribute, e.g. `Serializable` or `DataContract`, DCS should not serialize the type's property if the property does not have public Getter. Fix #20476 Fix #19516 +20604 area-System.Net WinHttpHandler authentication behavior - [ ] IsWindowsImplementation/IsNotWindowsImplementation is incorrect and prevents some of the tests from executing on certain platforms (see #20341 for a potential fix in GetContextHelper.cs). - [ ] The following tests fail on both .Net Framework (on my machine) as well as on .Net Core (for details and a possible fix see #20341 and comments within that PR.) ```NtlmAuthentication_Conversation_ReturnsExpectedType2Message NtlmAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode NegotiateAuthentication_Conversation_ReturnsExpectedType2Message NegotiateAuthentication_InvalidRequestHeaders_ReturnsExpectedStatusCode ``` - [ ] After the fix proposed in #20341 some of the test variations are expected to fail due to a behavior difference in WinHTTP/Negotiate when connecting to localhost servers. For more information also see #20096 +20605 area-System.Net Changing tracking bug number @karelz per our offline discussion and your comment in https://github.com/dotnet/corefx/issues/20096#issuecomment-305582570 Properly tracking #20604. (No actual code or test changes.) +20606 area-System.Reflection Add regression test for shiproom PR. +20609 area-System.Collections ImmutableList.Builder.RemoveAll removes elements for which the Predicate is false "Repro: `\\fsu\shares\MsEng\MSBuild\micodoba\ImmutableListBuilderRepro.zip` 0. open a VS 2017 terminal and navigate to repro dir 1. terminal: `start .\msbuild\src\MSBuild.sln` 2. VS: set breakpoint in Microsoft.Build.Evaluation.LazyItemEvaluator.RemoveOperation.SaveItems at line 34 (with contents `listBuilder.RemoveAll(itemData => items.Contains(itemData.Item));`) 3. terminal: `set MSBUILDDEBUGONSTART=2` 4. terminal: `.\msbuild\bin\Bootstrap\MSBuild\15.0\Bin\MSBuild.exe .\GlobbingProblem\GlobbingProblem\GlobbingProblem.csproj` 5. VS: attach to msbuild process ID and hit any key in terminal 6. VS: breakpoint is hit and the following state exists: - items has 5 elements in it: ``` + [0] ""Compile""=""C:\\Users\\micodoba\\.nuget\\packages\\nservicebus.acceptancetests.sources\\6.3.0-alpha0113\\contentFiles\\cs\\any\\NSB.AcceptanceTests\\Audit\\When_audit_is_overridden_in_code.cs"" #DirectMetadata=5) Microsoft.Build.Execution.ProjectItemInstance + [1] ""Compile""=""C:\\Users\\micodoba\\.nuget\\packages\\nservicebus.acceptancetests.sources\\6.3.0-alpha0113\\contentFiles\\cs\\any\\NSB.AcceptanceTests\\Audit\\When_a_replymessage_is_audited.cs"" #DirectMetadata=5) Microsoft.Build.Execution.ProjectItemInstance + [2] ""Compile""=""C:\\Users\\micodoba\\.nuget\\packages\\nservicebus.acceptancetests.sources\\6.3.0-alpha0113\\contentFiles\\cs\\any\\NSB.AcceptanceTests\\Audit\\When_auditing_message_with_TimeToBeReceived.cs"" #DirectMetadata=5) Microsoft.Build.Execution.ProjectItemInstance + [3] ""Compile""=""C:\\Users\\micodoba\\.nuget\\packages\\nservicebus.acceptancetests.sources\\6.3.0-alpha0113\\contentFiles\\cs\\any\\NSB.AcceptanceTests\\Audit\\When_a_message_is_audited.cs"" #DirectMetadata=5) Microsoft.Build.Execution.ProjectItemInstance + [4] ""Compile""=""C:\\Users\\micodoba\\.nuget\\packages\\nservicebus.acceptancetests.sources\\6.3.0-alpha0113\\contentFiles\\cs\\any\\NSB.AcceptanceTests\\Audit\\When_auditing.cs"" #DirectMetadata=5) Microsoft.Build.Execution.ProjectItemInstance ``` - listBuilder has 190 items in it 7. step over line 34 so the list builder performs the RemoveAll. Expected: 5 elements are removed, the ones from `items`. Actual: 6 elements are removed. The unexpected removed element is an item with the value: `C:\Users\micodoba\.nuget\packages\nservicebus.acceptancetests.sources\6.3.0-alpha0113\contentFiles\cs\any\NSB.AcceptanceTests\ConfigureEndpointLearningTransport.cs`. If you replace the `RemoveAll` with `Remove`, then only the expected items are removed. MSBuild issue: https://github.com/Microsoft/msbuild/issues/2069 " +20610 area-System.Diagnostics Fix System.Diagnostics.Process.Tests and skip some others This PR disables System.Diagnostics.ProcessTests that are hitting: https://github.com/dotnet/corefx/issues/19909 I also fixed some tests where the executable name is different for UapAot and some differences in behavior. cc: @danmosemsft @tijoytom @Priya91 @AtsushiKan +20611 area-System.Runtime System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Deserialize_FuzzInput failed in ci failed test: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Deserialize_FuzzInput detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_centos7.1_debug/65/testReport/System.Runtime.Serialization.Formatters.Tests/BinaryFormatterTests/Deserialize_FuzzInput_obj____0cacaa4d_c6bd_420a_b660_2f557337ca89__be4e9ff4_82d9_4b54_85ea_0957e21de0e2______AAEAAAD_____AQAAAAAAAAAHAQAAAAABAAAAAgAAAAMLU3lzdG_________AAEAAAD_____AQAAAAAAAAAHAQAAAAABAAAAAgAAAAMLU3lzdG_________rand__Random______fuzzTrial__1_/ MESSAGE: ~~~ System.ArgumentException : Object of type 'System.TimeSpan' cannot be converted to type 'System.Byte'. ~~~ STACK TRACE: ~~~ at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.Reflection.RtFieldInfo.InternalSetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture, StackCrawlMark& stackMark) at System.Reflection.RtFieldInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at System.Runtime.Serialization.FormatterServices.PopulateObjectMembers(Object obj, MemberInfo[] members, Object[] data) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterServices.cs:line 128 at System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo.PopulateObjectMembers(Object obj, Object[] memberData) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectInfo.cs:line 552 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs:line 331 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseArrayMemberEnd(ParseRecord pr) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs:line 692 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseMemberEnd(ParseRecord pr) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs:line 813 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Parse(ParseRecord pr) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs:line 191 at System.Runtime.Serialization.Formatters.Binary.BinaryParser.Run() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryParser.cs:line 183 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(BinaryParser serParser, Boolean fCheck) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs:line 99 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, Boolean check) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryFormatter.cs:line 66 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryFormatter.cs:line 40 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Deserialize_FuzzInput(Object obj, Random rand, Int32 fuzzTrial) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs:line 558 ~~~ +20612 area-System.Runtime Deserialize_FuzzInput tests are failing on all OS https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170602.01/workItem/System.Runtime.Serialization.Formatters.Tests The serialization tests changed the test blobs, which may be the cause, or it may be the change to binary formatter. We either need to catch more exceptions, or fix whatever we broke. [ @stephentoub Deserialize_FuzzInput_MemberData always starts with Random(42) so every run is the same. I see about equal numbers of Random(nnn) in our tree as Random(). The latter being non deterministic. I wonder whether we should change throughout to non deterministic but log the seed and have some way to read it] +20613 area-Meta javascript : Need to update WINJS to provide more support for JavaScript Windows UWP APIs There are very many web developers or JS developers who are excited to use JS or JavaScript for development in UWP. Now I've been using WINJS, but it's been a long time since it's been updated, and the new API is not going to happen. I hope you can continue to update Winjs. At the same time hope that UWP can introduce JS part of the function. ---------------------------------------------- 有非常非常多的网页开发人员或是node.js 开发人员,如果能在 UWP 中使用 node.js 或是 Javascript 做开发,是非常另人兴奋的。现在我一直在使用 WinJS,但是已经很长一段时间没有再更新过了,新的 API 也没有办法实现。希望可以继续更新 WinJS。同时希望UWP能引入 node.js 的部分功能。 +20614 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25402-01, preview1-25402-02, beta-25402-00, beta-25402-00, preview1-25402-01, respectively (master) +20615 area-Meta WebView: The Webview API requires additional access to the IFRAME. Webview need to add Invokescriptasync access to the IFRAME. ---------------------------------------------------------------------- WebView 需要添加 invokeScriptAsync 对 iframe 的访问。 +20616 area-System.Runtime Update serialization fuzzing test to add 2 new exceptions "This test verifies that only ""expected"" exception types are thrown when deserializing fuzzed blobs. After we updated the blobs in our serialization work, it caused two new exception types to be thrown. Both these are also thrown when running on Desktop, so this is not a break we introduced and we just have to update the list of exceptions. Although the test is deterministically random, I can only repro the ArgumentException locally when running on Desktop. However I repro the FileLoadException in Helix. Perhaps the behavior of `Random(42)` is different on a different framework version. It might be interesting to change to a non deterministic (but logged) seed. Fixes https://github.com/dotnet/corefx/issues/20611 Fixes https://github.com/dotnet/corefx/issues/20578" +20617 area-Infrastructure Update CoreClr, CoreFx to preview2-25402-03, preview2-25402-01, respectively (release/2.0.0) +20618 area-System.Runtime Hard code Environment.UserName in UWP "GetUserNameEx will not go into the WACK. Hard code to something like ""Windows User"". Hard code Environment.UserDomainName too even though LookupAccountNameW is accessible." +20619 area-System.Diagnostics Avoid HWND functions in UWP Process class HWND related functions are not meaningful in an app. When bringing back API for the Process class, anything that relies on these should throw PNSE with a nice message. ``` EnumWindows GetWindow GetWindowLong GetWindowText GetWindowTextLength GetWindowThreadProcessId IsWindowVisible PostMessage SendMessageTimeout WaitForInputIdle GetKeyState ``` +20620 area-System.Diagnostics update process/thread structs to match updated Windows header Another shot at https://github.com/dotnet/corefx/pull/20142 now I have the official header, which I can share offline. +20623 area-System.Net Uri: preserve backslash for file:/// uris on Unix "This changes the handling of file:/// uris to preserve the backslash on Unix. The uris must start with exactly 3 slashes (uris with more slashes are Unc uris). This make things work like: ```C# var path = ""/one\two""; var uri1 = new Uri(path); var uri2 = new Uri(uri1.ToString()); var uri3 = new Uri(""file://"" + path); Assert.Equal(uri1.LocalPath, uri2.LocalPath); Assert.Equal(uri1.LocalPath, uri3.LocalPath); ``` Otherwise uri2 and uri1 contain forward slashes. CC @stephentoub " +20624 area-System.IO OpenText and FileStream cannot open file in readonly mode "In a .NET Core (actually ASP.NET Core) project I am trying to read log files. The log files get created by a logger (Serilog in my case). When I try to open the currently written log file with this code ```c# using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { using (StreamReader reader = new StreamReader(fs)) { string content = await reader.ReadToEndAsync(); ... } } ``` I get a concurrency exception (""The process cannot access the file ... because it is being used by another process""). Notepad and Notepad++ can open the file for reading without any problem though! It seems almost like the readonly flag would not be respected. Is there anything wrong on my side? This is on Windows 10, VS 2017, netcoreapp1.1" +20626 area-System.Xml XmlReader, XmlTextReader cannot resolve files when created with an absolute file path base uri on Unix The XmlReader and XmlTextReader have a number of methods that accept a url string which used as the base uri to resolve other files. XmlReader.Create(string) and new XmlTextReader(string) will convert the native file paths to an absolute file:// url and use that as the BaseURI. The other overloads do not convert the url-argument and use it as the BaseURI. On Windows this works fine. Even when not converted to a file:// url, the resulting BaseURI string is treated as an absolute uri to resolve the other uris. On Unix, the overloads that use the url-argument as-is don't work. The BaseURI (e.g. /tmp/myfile.xml) is considered to be a relative url and isn't used to resolve other files. This was observed with failing tests in https://github.com/dotnet/corefx/pull/19735. The difference is due to the Uri class treating absolute file uris as relative on Unix (cfr https://github.com/dotnet/corefx/issues/20046). The tests were updated to pass (https://github.com/dotnet/corefx/commit/3a3ead6abb6c27364f12e41478a34d79ced6fdd1#diff-0bf8d1637c34db29730c199a32fd08ff). This breaks existing code when running on Unix instead of Windows. These can be fixed with changes like the ones made to the tests. To avoid breaking existing code, an option is to convert the url-arguments on Unix so they also become absolute uris. This is implemented in: https://github.com/dotnet/corefx/pull/20561. The PR only changes the behavior on Unix when passing an absolute native file path. @karelz @stephentoub @sepidehMS @krwq +20627 area-Infrastructure Improve Unit Testing experience in CoreFX "I don't want this to be a mass hate-in on xUnit, but I made some unguarded comments about xUnit on another CoreFx thread, and there does seem to be some shared feeling on the subject. @karelz suggested (#4571) in a separate thread to discuss it. If the consensus is 'shove off to the xUnit repo and do your moaning there', then that's fine, though I think my complaints are perceived by some to be positive features of xUnit, so I doubt I'd get any traction on my own. The xUnit issues I have found made testing harder than it needed to be on CoreFx are: * Inability to consistently add messages to assertion methods - you can add a message to `Assert.True`, but you can't to `Assert.Equal`. Two workaround recommendations seem to get made: The first is to use `Assert.True` and put your condition in the `bool` argument - that then means the test runner can put no useful info into the trace. The other alternative is to use a better assertion library (there was some consistency of support for Fluent Assertions, though I haven't used it myself, and my heart sinks at yet another dependency). Every assertion method should have an optional message. People planning to advance the defence at this point that there should only be one assertion in a test and so you shouldn't need messages can expect short shrift from me... * Obvious gaps in the assertion support - e.g. no 'Fail' method, so we end up with stuff like `Assert.True(false, ""Message"")` or writing a helpers to avoid this sort of thing. This would be easy to add. * No proper trace from tests. A .NET test framework/runner should collect Console and Trace output and report/log it sensibly (i.e. not co-mingled with other test output). No ifs, no buts, no excuses about async, nothing. This is the one that really winds me up, because it leads to CoreFx having to have a policy *against* tracing in tests largely because the test outputs gets sprayed across each other so they make no sense. Couple this with the pain some of us have with trying to debug into tests, and the result is miserable - CI post-mortem shouldn't have to be a guessing game. I'm aware that xUnit is somehow the MS-insider's choice, and it was probably the only framework with Core support at the time it was chosen, so we cannot rewrite history, but if the Core projects have any influence with xUnit, could they ask for these improvements? " +20628 area-System.Net Unix paths with backslashes are converted to forward slashes when uri is created with the file scheme "A backslash is a valid character in a unix path. It is not used to separate path segments, it is part of a directory/file name. The Uri class will convert these backslashes to forward slashes, causing the resulting uri to no longer point at the correct file. e.g. `new Uri(file:///one\two)` refers to the `/one/two` instead of `/one\two` When creating a Uri without the file scheme, the Uri class will preserve the backslashes. e.g. `new Uri(/one\two)` refers to `/one\two` Note that the `ToString` of this uri returns `file:///one\two`. Which gives the strange behavior that `new Uri(new Uri(/one\two).ToString())` refers to `/one/two` The Uri class is very persistent in converting backslashes to forward slashes. Even when providing a percent encoded backslash, it is converted to a forward slash. One way to fix this is to no longer convert backslashes for `file:///` uris on Unix. The Uri class has special semantics for two types of files: Dos paths and Unc paths. Dos paths (e.g. c:\) don't start with a slash. Unc paths start with 2 slashes. So paths starting with a single slash can be treated as unix uris (i.e. no forward slash conversion). This is implemented https://github.com/dotnet/corefx/pull/20623. The behavior is only changed on Unix for paths that start with file:/// (3 slashes = 2 slashes of the scheme + 1 slash of the unix path). With the current behavior it is not possible to create a Uri with a file:// argument to refer to a path that contains backslashes. When this behavior is changed, existing code that relied on the backslash-to-forwardslash conversion will break. An example of this can be seen in this PR (https://github.com/dotnet/corefx/pull/20564). Here the implementation was changed from `new Uri(""file://"" + path)` to `new Uri(path)`. Due to slashes no longer being converted, some tests needed changes. @karelz @stephentoub @sepidehMS " +20629 area-System.Collections Remove caching from ImmutableSortedSet.Builder.DebuggerProxy Fix #16007 +20630 area-Infrastructure Remove win10/nano RIght now the generators are failing. This fixes. Infra only. +20631 area-System.Runtime Using System.Runtime.Loader library for netstandard 1.3 I have a project that uses netstandard1.3 and I was wondering if there is support for System.Runtime.Loader on this framework and if not what is the alternative? +20632 area-Infrastructure Remove non-functional win10 and win-nano functionality +20633 area-Infrastructure Remove non-functional win10 and nano jobs +20636 area-Serialization Test DCJS_VerifyDictionaryFormat Failed in ReflectionOnly Mode. +20639 area-System.Threading Use monotonic clock for measuring time in sleep test Fixes #20173 +20640 area-System.Diagnostics Serializable attribute was removed on the System.Diagnostics.Activity Activity was serializable because the current Activity is stored in the logical call context on .NET 4.5. It was accidentally removed in https://github.com/dotnet/corefx/pull/19742 that causes SerizalizationException on .NET45 when Activity leaves AppDomain. It only affects .NET45 and we do not have automated testing for it in corefx. We have tested it manually and agreed on the risk that it may break (#17262 (comment)) Our partners (ApplicationInsights) that consume this API do not have scenarios that involve cross AppDomain calls when the serialization breaks. So it was not detected there either +20641 area-System.Collections Remove unnecessary reference in test project This reference was added in https://github.com/dotnet/corefx/pull/20629/files#diff-901fb3723ba45165116ce0805ad0d637 Test projects shouldn't add references as they are added automatically. cc: @ianhays +20642 area-System.Diagnostics Mark Activity and it's properties as Serializable Fixes #20640 Manually tested on .net 4.5 @danmosemsft @krwq @stephentoub +20643 area-System.Collections ObservableCollection: Avoid SimpleMonitor allocation I was a little sad to see the optimization from #12705 reverted in 6393248c7a986476f1e2d9dc4b1e5aff96459690 for serialization compat. This PR adds back the optimization, but in terms of `SimpleMonitor`, maintaining serialization compat with desktop. ~~I didn't included the `[TypeForwardedFrom]` attributes in this PR as they're being added in #20599~~ (Edit: added a commit that includes them). However, if I do temporarily add the attribute to a private copy of `ObservableCollection` (and its private `SimpleMonitor`) in a one-off console project, the collection serializes to the exact same bytes as desktop. cc: @stephentoub, @ViktorHofer +20647 area-System.Diagnostics Improve Activity.Id overflow handling if Parent Id has only root node Activity.Id is generated by adding suffix and delimiter to the 'parent id' that comes from the parent Activity or from the external process. So the Activity.Id may have multiple 'nodes' separated by delimiters. Maximum Id length is 1024 and when the limit is reached, last node(s) are trimmed to make space for random overflow suffix. In case there is single node 1024 bytes or longer, overflow if not handled correctly: instead of completely new Id, Activity generated overflow suffix only. This in general is invalid corner case but may happen because of the bug or some compatibility issue. Currently the only problem that overflow suffix is not long enough and does not guarantee global uniqueness of Activity.Id. This change has a fix for this issue and also updates comments/docs unrelated to this change. +20648 area-System.Net Correctly skip HttpListener tests that shouldn't be ran on uap/uapaot cc: @davidsh @stephentoub @danmosemsft With these changes, System.Net.HttpListener tests finally finish executing without crashing. +20650 area-System.Net UWP work for System.Net.NetworkInformation 1. Disabled some tests for UAP/ILC runs 2. Remove dependency on Win32 APIs System.Net.NetworkInformation now builds clean and has no test failures on uap & uapaot contributes to: #20014 +20651 area-Infrastructure Update buildtools This brings in the new version of buildtools that publishes the tool-runtime as a portable application instead of standalone. The source file changes are to remove some non unicode characters in files that were tripping Roslyn up. +20652 area-System.IO System.IO.FileSystem.Tests - four tests fail if %TMP% directory is a junction. System.IO.FileSystem.Tests -method System.IO.Tests.Directory_Move.MoveFile_TrailingSourceAltSlash_Windows -method System.IO.Tests.Directory_Move.MoveFile_TrailingSourceSlash -method System.IO.Tests.DirectoryInfo_MoveTo.MoveFile_TrailingSourceAltSlash_Windows -method System.IO.Tests.DirectoryInfo_MoveTo.MoveFile_TrailingSourceSlash These tests will fail on Windows if %TMP%/%TEMP% is set to a directory that's actually a junction to another partition. (The underlying Win32 MoveFile() api happily renames the file non-withstanding the trailing slash so the expected IOException is not generated.) +20653 area-System.Diagnostics Mark Activity and it's properties as Serializable Porting #20642 to release/2.0.0 Please do not merge until it's approved by the shiproom. Fixes #20640 +20654 area-System.Runtime Fix PlatformDetection.GetFrameworkVersion() Fixes PlatformDetection.GetFrameworkVersion() bug where it was not returning the right version. This way will map the shipped version ranges to the actual framework version correctly. If we ship a new version we would just need to add its range of version. This is needed to unblock the Serialization effort. cc: @danmosemsft @stephentoub @AlexGhiondea FYI: @ViktorHofer @krwq +20658 area-System.Data SqlDataAdapter needs FillAsync to fully support the async pattern. Core 2.0 preview 1 now supports SqlDataAdapter and DataTable which is great and the best way to fill a DataSet from a stored procedure is by using SqlDataAdapter.Fill(DataSet). This works perfectly when not used in an async environment. There is currently no way in Core or full .NET to do a FillAsync. Without a FillAsync which would take a single line of code now requires 20 lines of much more complicated code including using SqlDataReader.GetSchemaTable() which is currently broken preview 1. Based on other posts I believe it will be working in Preview 2 but have not seen a definitive on that. This is not something for 2.0 but is a clear deficiency in truly being able to support a fully async back-end and would be a much needed improvement moving forward. +20660 area-System.Net Not able to find Referer property in HttpWebRequest I have portable class library pointing .Net Standard libraries (versions below). HttpWebRequest in System.Net.Requests library does not have **Referer** property and many other members. And confusing thing is Github source does have all the members. Is this issue assembly packaged with Nuget ? Microsoft.NETCore.Portable.Compatibility: 1.0.2 NETStandard.Library: 1.6.1 System.Net.Http: 4.3.2 System.Net.Requests: 4.3.0 netstandard: 1.6 Below is HttpWebRequest metadata ![httpwebrequest_metadata](https://cloud.githubusercontent.com/assets/5023443/26749851/711f4ae4-47e2-11e7-90e0-dc93e5450d31.PNG) +20661 area-System.Runtime Port to fix fuzzing test Port https://github.com/dotnet/corefx/pull/20616 test only change to fix fuzzing test. Fixes #20611 Fixes #20578 +20665 area-Infrastructure Inconsistent behaviour of build.sh -? (help) command on OSX **./build.sh -? command displays help mixed with other actions - installs dotnet cli, restores build tools, initializes build tools** After installing prerequisites and cloning corefx repo based on my experience from Windows platform I have typed ./build.sh -? to get info on invocation parameters. Script performed synchronously intermingled tasks: 1. display partial help 2. (i) Installing dotnet cli..., (ii) Restoring BuildTools version 2.0.0-prerelease-01630-02... (iii) Initializing BuildTools... 3. display remaining help Complete output of the commad is in attached file. [osx_corefx_build.sh_-?.txt](https://github.com/dotnet/corefx/files/1049612/osx_corefx_build.sh_-.txt) Coreclr was successfully built for all configurations before attempting corefx build. System: ``` System Version: macOS 10.12.5 (16F73) Kernel Version: Darwin 16.6.0 Boot Volume: Macintosh HD Boot Mode: Normal Computer Name: MacBook Air Secure Virtual Memory: Enabled System Integrity Protection: Enabled Time since boot: 21:56 ``` +20666 area-Infrastructure Debug native build on OSX fails with link error - missing symbols "Tried to build latest corefx repo master branch commit fd7cc973ae66e1523fabd2c432a8333ddfecd8e6 on OSX following current [instructions](https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md). Release build was succesfull while Debug build failed with the following errors: ``` [100%] Linking CXX shared library System.Security.Cryptography.Native.OpenSsl.dylib Undefined symbols for architecture x86_64: ""_EC_KEY_set_public_key_affine_coordinates"", referenced from: _CryptoNative_EcKeyCreateByKeyParameters in pal_ecc_import_export.cpp.o _CryptoNative_EcKeyCreateByExplicitParameters in pal_ecc_import_export.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [System.Security.Cryptography.Native/System.Security.Cryptography.Native.OpenSsl.dylib] Error 1 make[1]: *** [System.Security.Cryptography.Native/CMakeFiles/System.Security.Cryptography.Native.OpenSsl.dir/all] Error 2 make: *** [all] Error 2 Failed to build corefx native components. Command execution failed with exit code 1. ``` System: ``` System Version: macOS 10.12.5 (16F73) Kernel Version: Darwin 16.6.0 Boot Volume: Macintosh HD Boot Mode: Normal Computer Name: MacBook Air Secure Virtual Memory: Enabled System Integrity Protection: Enabled Time since boot: 21:56 Xcode Version 8.3.2 (8E2002) ``` Corefx build was done after successful build of coreclr for all configurations. Complete build output and earlier cmake configuration error output are attached in file. [osx_corefx_debug_build_error.txt](https://github.com/dotnet/corefx/files/1049627/osx_corefx_debug_build_error.txt) " +20668 area-System.IO SerialPort: Use correct charset when unpacking port names This fixes a regression caused by changing the p/invoke character set of a `QueryDosDevice` call in #18928. The symptom prior to applying this is that the test suite does not detect any serial ports so doesn't run any tests. +20676 area-System.Net stream.Read(new byte[1], 0, 0) throw IOException for response of HttpClient.GetAsync with option HttpCompletionOption.ResponseHeadersRead "The following code works fine under full framework, but get exception under .net core 1.0 and 2.0. ```csharp class Program { static void Main(string[] args) { TestAsync().Wait(); } static async Task TestAsync() { using (var client = new HttpClient()) { var url = ""https://download.microsoft.com/download/B/9/F/B9F1AF57-C14A-4670-9973-CDF47209B5BF/dotnet-dev-win-x64.1.0.4.exe""; var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead); using (var stream = await response.Content.ReadAsStreamAsync()) { var read = stream.Read(new byte[1], 0, 0); //IOException: Unable to read data from the transport connection. The connection was closed before all data could be read. Expected 106710008 bytes, read 0 bytes. } } } } ```" +20677 area-System.Linq Short-circuit ToArray method if source is an array +20678 area-System.Net Removing Dead Code from System.Net.Http and System.Net.HttpListener Not a whole lot to remove, mostly static strings from the SR class and a couple of methods in the System.Net.Http project. #17905 +20680 area-System.IO Improve code coverage of System.IO.FileSystem.AccessControl (35.7%) Pull request for the issue #15808 +20682 area-System.Net GetCookies_RemovesExpired_Cookies failed: cookie did not expire "Can we do better than ""sleep 2 seconds""? https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170605.02/workItem/System.Net.Primitives.UnitTests.Tests/analysis/xunit/System.Net.Primitives.Unit.Tests.CookieContainerTest~2FGetCookies_RemovesExpired_Cookies ``` Assert.Equal() Failure\nExpected: 0\nActual: 1 Stack Trace : at System.Net.Primitives.Unit.Tests.CookieContainerTest.d__44.MoveNext() in /root/corefx/src/System.Net.Primitives/tests/UnitTests/CookieContainerTest.cs:line 532 --- End of stack trace from previous location where exception was thrown --- ``` ```c# [Fact] public async Task GetCookies_RemovesExpired_Cookies() { Cookie c1 = new Cookie(""name1"", ""value"", """", "".url1.com""); Cookie c2 = new Cookie(""name2"", ""value"", """", "".url2.com""); c1.Expires = DateTime.Now.AddSeconds(1); // The cookie will expire in 1 second CookieContainer cc = new CookieContainer(); cc.Add(c1); cc.Add(c2); await Task.Delay(2000); // Sleep for 2 seconds to wait for the cookie to expire Assert.Equal(0, cc.GetCookies(new Uri(""http://url1.com"")).Count); // There should no longer be such a cookie <<<<<<<<<<<<, } ```" +20683 area-System.Linq Collection Other than collections are we using System.lynq with any other C# concepts? if yes other than collection where we are using System.lynq if no then System.lynq we can add part of System.Collections.Generic; Please correct me if I am Incorrect. +20684 area-System.Collections ref-return Dictionary and friends Hi all, I recently (well a few months ago) became pissed at seeing c# reach position 12 at this quite generic yet telling benchmark: https://benchmarksgame.alioth.debian.org/u64q/knucleotide.html This competition requires the use of library/language provided hash tables, which is why I can't submit my version: https://github.com/damageboy/shame Which runs at about half the time of the current top c# version, placing it somewhere near position 3-5 (I don't know since I can't submit it), I can only deduce it from the improvement observed on my machine... The gains are, for the most part, attributed to my hacked up version of [SuperDictionary.cs](https://github.com/damageboy/shame/blob/master/shame/SuperDictionary.cs) which is essentially the plain old c# dictionary.cs coerced into ref-return semantics. Now, admittedly, putting SuperDictionary.cs in the corefx repo to win a benhmark is probably the worst thing ever, as far as suggestions go, (although not as far as winning benchmarks go, that would totally own it... 🥇 ) but I would like to understand where c# / corefx is going forward with faster data structures that are built to make use of ref-return. Are there any plans to get these sort of fast data structures into netstandard / corefx / whatever, or does the official party line state the we all need to implement our half assed versions of exiting tested data structures riddled with our own bugs? +20685 area-System.Net Test failure: System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests/SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests/SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync` has failed. System.Net.Sockets.SocketException : Cannot assign requested address Stack Trace: at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5272 at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 758 at System.Net.Sockets.Socket.Bind(EndPoint localEP) in /root/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 702 at System.Net.Sockets.Tests.SocketTestServerAsync.Start(EndPoint localEndPoint) in /root/corefx/src/Common/tests/System/Net/Sockets/SocketTestServerAsync.cs:line 116 at System.Net.Sockets.Tests.SocketTestServer.SocketTestServerFactory(SocketImplementationType type, Int32 numConnections, Int32 receiveBufferSize, EndPoint localEndPoint, ProtocolType protocolType) in /root/corefx/src/Common/tests/System/Net/Sockets/SocketTestServer.cs:line 39 at System.Net.Sockets.Tests.SocketTestServer.SocketTestServerFactory(SocketImplementationType type, Int32 numConnections, Int32 receiveBufferSize, IPAddress address, Int32& port) in /root/corefx/src/Common/tests/System/Net/Sockets/SocketTestServer.cs:line 52 at System.Net.Sockets.Performance.Tests.SocketPerformanceTests.ClientServerTest(Int32 port, SocketImplementationType serverType, SocketImplementationType clientType, Int32 iterations, Int32 bufferSize, Int32 socketInstances, Int64 expectedMilliseconds) in /root/corefx/src/Common/tests/System/Net/Sockets/Performance/SocketPerformanceTests.cs:line 40 at System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests.SocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync() in /root/corefx/src/System.Net.Sockets/tests/PerformanceTests/SocketPerformanceAsyncTests.cs:line 51 Build : Master - 20170605.02 (Core Tests) Failing configurations: - Ubuntu.1604.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170605.02/workItem/System.Net.Sockets.Async.Performance.Tests/analysis/xunit/System.Net.Sockets.Performance.Tests.SocketPerformanceAsyncTests~2FSocketPerformance_MultipleSocketClientAsync_LocalHostServerAsync +20688 area-System.IO "Directory.EnumerateFileSystemEntries doesn't return any item when specify pattern like with ""[]""" " `Directory.EnumerateFileSystemEntries` doesn't return items when search pattern include ""[...]"" in it on Ubuntu (It works well on Windows, while I didn't test it on other platforms). For example, I have a file named ""[a]"" under current folder, following code doesn't output anything: ``` foreach (var fileItem in Directory.EnumerateFileSystemEntries(""."", ""[a]"", SearchOption.TopDirectoryOnly)) { Console.WriteLine(fileItem); } ``` Anyone could help to take a look at this?" +20689 area-Meta Malformed Uri in BitmapIcon causing crash in .NET Native Interop "Not sure, if this is the right place to report bugs in UWP runtime, but this one looks quite interesing. Orginally reported here on UserVoice: [BitmapIcon with UriSource=""about:blank"" causes app crash in edgehtml.dll](https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/19455838-bitmapicon-with-urisource-about-blank-causes-app) If I use anywhere in my UWP app with UriSource=""about:blank"", this can happen when using databinding, **the app crashes when navigating to other page which contains WebView**. Tested on Windows 10 Creators Update, VS2017 15.2. 100% repro is available in ZIP below. Repro: https://1drv.ms/u/s!AlURSa6JiyiVo4lNj0cWfTva0_dN1A The bug looks like some kind of Out-of-Bounds read, can't tell really. SharedStubs.g.cs -> ComCallHelpers ![image](https://cloud.githubusercontent.com/assets/3041397/26774811/5ef6343a-49d2-11e7-9fe7-34213f05dc90.png)" +20690 area-Meta Reference Source hashes have changed, so links no longer work 1. Go to http://referencesource.microsoft.com/ 2. Scroll down to the `Link to a type/member` text and click the link corresponding to that text: http://referencesource.microsoft.com/mscorlib/a.html#1f55292c3174123d 3. Notice that you are not directed to the appropriate line of code as you would expect. Instead, you are shown a page containing the text `Don't use this page directly, pass #symbolId to get redirected.` This seems to have occurred because the file hashes (I assume) that are used for this functionality have changed. [This affects Visual Studio extensions like Ref12](https://github.com/SLaks/Ref12/issues/32#issuecomment-306161359). +20695 area-System.Diagnostics System.IO.FileLoadException - Exception from HRESULT: 0x80131040 "Folks, I added System.Diagnostics.Process in a netstandard 1.6 library and I get this exception: 'System.IO.FileLoadException: 'Could not load file or assembly 'System.Diagnostics.Process, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)' Before add, lib worked fine. I have added this in App.config (I'm into a WPF 4.7 app) and I get same exception: Other test I did: 1. Upgrade System.Diagnostics.Process to 4.3.0 and same app.config 2. Downgrade to netstandard 1.5 both v4.3.0 and 4.1.0 Every step I run nuget locals all -clear and deleted bin and obj folders (all in solution). Desperated I removed System.Diagnostics.Process and tested with System.Console and same results with same tests... WPF has netstandard 1.6 lib. Tested too netstandard 1.6.1 and same results with same tests ... Finally I have tested this class library with a new console app (FW 4.7) and same result... I forgot to tell you, class library and WPF app and console test app are compiled as x64. [https://drive.google.com/open?id=0B3M-4-kZkv4FSktIbUluVGV1RGs](source with libs) Please can you help me? " +20697 area-Serialization Manually build mscorlib shim to allow for internal type forwards & Adding TypeForwardFrom to serialiazable types @ViktorHofer here is the change needed to build mscorlib facade manually. You will need to give mscorlib InternalsVisibleTo in System.Private.CoreLib to type-forward the other types. cc @jkotas @danmosemsft @ericstj +20699 area-System.Net Fix WinHttpResponseStream when reading 0 bytes Fixes #20676 +20702 area-System.Net Disable more HttpListener tests on UAP/UAPAOT test runs HttpListener is not ready for UAP/UAPAOT. It is currently trying to use the .NET Core implementation which uses http.sys. Instead, the plan is to use the maanaged implementation (currently only used on *Nix). Contributes to #17462 +20704 area-System.Net Disable some WebClient tests for UAPAOT (ILC) test runs WebClient tests run fine for UAP test runs. But some of them are crashing on UAPAOT test runs. Not sure why yet. Disabling them to get a clean run for now. Contributes to #20141 +20705 area-Infrastructure Update CoreClr, CoreFx to preview2-25402-03, preview2-25405-01, respectively (release/2.0.0) +20706 area-System.Drawing Cleanup items for System.Drawing.Common "There are still some things that should be cleaned up and reorganized in the Windows version of System.Drawing.Common. Here is the list that I have developed while porting the code from the internal .NET Framework codebase: * [x] Clean up the formatting of the XML doc comments. They are using some defunct syntax that doesn't work or make sense anymore. @mellinoe https://github.com/dotnet/corefx/pull/21589 * [x] Normalize comment style (lots of weird ""block-style"" header comments, weird comment spacing, etc.) @mellinoe https://github.com/dotnet/corefx/pull/21589 * [x] ~~Reorganize interop code to match corefx guidelines.~~ _Not really feasible given the manual function loading that is necessary._ * [ ] Remove unnecessary CodeAnalysis attributes. * [x] Remove reference to System.Security.Permissions. https://github.com/dotnet/corefx/pull/22232 * [x] Remove System.Configuration.ConfigurationManager dependency. https://github.com/dotnet/corefx/issues/22233 * [x] Consider moving code into Windows-specific folders or filenames in preparation of x-plat version. * [x] Make sure that file names and file structure are consistent with the namespace and type names contained in each file. #20987 * [ ] Enable or remove `FINALIZATION_WATCH` code blocks. * [x] Enable or remove `FEATURE_SYSTEM_EVENTS` code blocks. Tracked by https://github.com/dotnet/corefx/issues/21319 * [ ] Use string resources in Unix version. Tracked by https://github.com/dotnet/corefx/issues/23749 * [ ] Do a dead-code pass after cleanup and reorganization. (Use ILLink to help) -- opened https://github.com/dotnet/corefx/issues/21296" +20708 area-System.Data Add query notification support to SqlClient Addresses https://github.com/dotnet/corefx/issues/8188 Note that SqlCommand.NotificationAutoEnlist has been removed in this PR, since the underlying functionality for it does not exist. ASP.NET sets the auto enlist SqlDependency using CallContext.SetData(), but the CallContext.SetData/GetData methods are not available in .NET Core. The NotificationAutoEnlist property only checks for data set by ASP.NET, so the property has been removed to show that it's explicitly unsupported. +20709 area-System.Diagnostics S.D.Process: throw PNSE on HWND depending funcs on UAP Fix https://github.com/dotnet/corefx/issues/20619 +20710 area-Infrastructure Update buildtools, hook in new Dumpling target * Update buildtools. This has a bunch of new Dumpling features and fixes. * Hook in a new Dumpling target in dir.traversal.targets which causes dumpling.py to be pre-installed before we do our parallel test runs. +20711 area-System.Drawing Add Tests for System.Drawing.Common "This issue tracks porting some set of tests from mono's test suite, covering the portions of System.Drawing that we support on .NET Core. Mono's test cases are in this folder: https://github.com/mono/mono/tree/master/mcs/class/System.Drawing/Test We most likely want to convert the most useful tests from all of the sections here, with the exception of System.Drawing.Design, which we aren't going to support right now on .NET Core (it is mainly related to designer / WinForms support). Mono's tests use NUnit, so we will need to convert them to Xunit when copying them. Additionally, I've identified that there will need to be some functional changes made to the tests themselves, as they do not pass against the .NET Framework implementation. We consider the .NET Framework implementation to be the compatibility baseline, so we should change the tests to accomodate it, rather than the other way around. The test failures seemed mainly related to very small, subtle differences in things like floating-point precision, color values, offsets, etc. We should do the following when we have both Windows and Unix implementations up and running: * Ensure that all tests have enough ""leniency"" to accomodate floating-point differences (and other minor inconsistencies) where unavoidable. * Ensure that all minor inconsistencies are acceptable or otherwise very difficult / problematic to fix. * Ensure that all minor inconsistencies are listed somewhere, so that we can mention it both in the tests, and in the user documentation. @hughbe @qmfrederik @marek-safar ----------------------------------------------------- # Current Status Code coverage: _Note that there is a large amount of internal and debug-only code which distorts these numbers. When the coverage is generally high, we can clean out a lot of dead code and then get more accurate data._ Date | Branch Coverage | Line Coverage --------|---------|----------- **6/26/2017** | **33%** | **25%** **7/11/2017** | **49%** | **54%** **7/17/2017** | **55%** | **60%** **8/2/2017** | **58%** | **66%** **8/25/2017** | **62%** | **71%** **9/21/2017** | **64.6%** | **75.3%** Namespaces and coverage, as of 9/21/2017: * System.Drawing: 76.3% * System.Drawing.Drawing2D: 93.8% * System.Drawing.Imaging: 86.1% * System.Drawing.Printing: 62.8% * System.Drawing.Text: 96%" +20712 area-System.Drawing Add Unix support for System.Drawing.Common The version of System.Drawing.Common ported from the .NET Framework cannot be used outside of Windows. In order to support the library elsewhere, we are going to port the implementation from mono, which is built around libgdiplus, another mono project. We should do the following: * Move the code for System.Drawing into corefx, perhaps initially separated from the Windows files. Mono's code is here: https://github.com/mono/mono/tree/master/mcs/class/System.Drawing * Update build configurations in corefx to create a second build for System.Drawing.Common for Unix platforms. It should reference the code files above. * In the mono repository: delete the original source files, update the corefx submodule link, and redirect references into the submodule for all of the deleted files. * [Follow-Up] Try to rationalize the Windows and Unix codebases. There is bound to be a moderately-sized chunk of code that can be shared between the two configurations. Enums and simple structures should be identical between the two. @qmfrederik Do you have any pointers for this? I know you have worked extensively with mono's System.Drawing recently. +20713 area-System.Net Disable some Ping tests for UAP test runs System.Net.Ping now runs clean for UAP test runs. I'm not sure if #20528 has been fixed or not. I deleted all ActiveIssue labels and found that all tests passed on uapaot mode. https://github.com/dotnet/corefx/issues/20528#issuecomment-306068673 Contributes to: #19583 +20714 area-System.Numerics Expose `Fast*` versions of several math functions that have hardware intrinsic support ### Rationale There are several mathematical functions for which hardware intrinsics are available, but which may not have a consistent implementation from between various hardware architectures. Support for these should be provided in the form of `Fast*` methods exposed on the existing `System.Math` and `System.MathF` types. ### Proposed API ```C# public static class Math { public static double FastClamp(double, double, double); // No intrinsic, but the current implementation requires min <= max, where-as Vector follows what HLSL does public static double FastMax(double, double); // maxsd public static double FastMin(double, double); // minsd public static double FastReciprocal(double); // No intrinsic on x86/x64, provided for parity with MathF public static double FastReciprocalSqrt(double); // No intrinsic on x86/x64, provided for parity with MathF } public static class MathF { public static float Clamp(float, float, float); // Provided for parity with the existing Math.Clamp(float, float, float) function public static float FastClamp(float, float, float); // No intrinsic, but the current implementation requires min <= max, where-as Vector follows what HLSL does public static float FastMax(float, float); // maxss public static float FastMin(float, float); // minss public static float FastReciprocal(float); // rcpss public static float FastReciprocalSqrt(float); // rsqrtss } ``` ### Additional Details This will require several changes in the CoreCLR as well to support the new APIs via intrinsics +20715 area-System.Text Reconcile CoreRT and CoreCLR globalization code ``` -method System.Text.Encodings.Tests.EncodingMiscTests.DefaultEncodingBOMTest -method System.Text.Encodings.Tests.EncodingMiscTests.NormalizationTest -method System.Text.Tests.UnicodeEncodingTests.WebName -method System.Text.Tests.UTF32EncodingTests.WebName -method System.Text.Tests.UnicodeEncodingDecode.Decode_InvalidBytes (amd64 only) ``` On quick glance, the Text.Encoding code in CoreRT needs to be synced with that in CoreCLR. +20716 area-System.IO Fill out FileSystemInfo state when enumerating On Windows FileSystemInfos are filled in with state as we have all of the state from FindFirstFileEx. Fixes #20456 +20717 area-System.Linq Disabled test on System.Linq.Expressions.Tests on ILC (amd64-x64) -method System.Linq.Expressions.Tests.Compiler_Tests.UnaryPlus which is annoyingly located not in CompilerTests.cs but here... https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/tests/SequenceTests/SequenceTests.cs#L844 +20718 area-System.Data Disabled IntegratedAuthConnectionTest in System.Data.SqlClient.Tests on ILC -method System.Data.SqlClient.Tests.SqlConnectionBasicTests.IntegratedAuthConnectionTest Message from test ouput: System.Data.SqlClient.SqlException : Failed to accept security SSPI context\r\nFailed to accept security context +20722 area-System.Memory System.Memory tests getting killed I'm seeing this periodically breaking our full runs. This guy is getting killed after only 10 seconds so I assume it's not timed out. @MattGal thoughts? Unfortunately whatever is doing this doesn't lead to a dump. @shiftylogic @ahsonkhan ``` 2017-06-05 15:32:50,166: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-06-05 15:32:50,167: INFO: proc(54): run_and_log_output: Output: 2017-06-05 15:32:50,240: INFO: proc(54): run_and_log_output: Output: Discovering: System.Memory.Tests 2017-06-05 15:32:50,447: INFO: proc(54): run_and_log_output: Output: Discovered: System.Memory.Tests 2017-06-05 15:32:50,606: INFO: proc(54): run_and_log_output: Output: Starting: System.Memory.Tests 2017-06-05 15:33:01,766: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/f156f7a3-3468-4286-8536-e7b23f699283/Work/2433b65e-0236-4884-855d-3ffd16f67727/Unzip/RunTests.sh: line 89: 2205 Killed $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Memory.Tests.dll -xml testResults.xml -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=failing 2017-06-05 15:33:01,777: INFO: proc(54): run_and_log_output: Output: command exited with ExitCode: 137 2017-06-05 15:33:01,777: INFO: proc(54): run_and_log_output: Output: command failed, trying to collect dumps 2017-06-05 15:33:01,826: INFO: proc(54): run_and_log_output: Output: corefile: 2017-06-05 15:33:01,826: INFO: proc(54): run_and_log_output: Output: no coredump file was found 2017-06-05 15:33:01,827: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/f156f7a3-3468-4286-8536-e7b23f699283/Work/2433b65e-0236-4884-855d-3ffd16f67727/Unzip 2017-06-05 15:33:01,828: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=15:33:01. Return value was 137 2017-06-05 15:33:01,834: INFO: proc(58): run_and_log_output: Exit Code: 137 2017-06-05 15:33:01,854: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-06-05 15:33:01,856: ERROR: helix_test_execution(83): report_error: Error running xunit None ``` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170605.04/workItem/System.Memory.Tests/wilogs +20723 area-System.Net "Test: System.Net.NameResolution.PalTests.NameResolutionPalTests/TryGetAddrInfo_HostName failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.NameResolution.PalTests.NameResolutionPalTests/TryGetAddrInfo_HostName` has failed. Assert.Equal() Failure Expected: Success Actual: HostNotFound Stack Trace: at System.Net.NameResolution.PalTests.NameResolutionPalTests.TryGetAddrInfo_HostName() in /root/corefx/src/System.Net.NameResolution/tests/PalTests/NameResolutionPalTests.cs:line 128 Build : Master - 20170606.01 (Core Tests) Failing configurations: - suse.422.amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170606.01/workItem/System.Net.NameResolution.Pal.Tests/analysis/xunit/System.Net.NameResolution.PalTests.NameResolutionPalTests~2FTryGetAddrInfo_HostName +20725 area-System.Collections Why is KeyedCollection abstract? Why is [KeyedCollection](https://github.com/dotnet/corefx/blob/master/src/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs) abstract, how about having it non-abstract with its constructor accepting a `GetKeyFromItem` delegate? So to allow creating `KeyedCollection`s of any type on the flow without having to create classes for each. +20726 area-System.Globalization "Tests under: System.Globalization.Tests failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.CultureInfoDateTimeFormat/TestSettingThreadCultures` has failed. System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppServiceUnavailable Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.Globalization.Tests.CultureInfoDateTimeFormat.TestSettingThreadCultures() Build : Master - 20170606.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170606.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.CultureInfoDateTimeFormat~2FTestSettingThreadCultures +20727 area-System.IO "Tests under: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateNew failed with ""System.UnauthorizedAccessException""" "Opened on behalf of @Jiayili1 The test `System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateNew/ValidArgumentCombinations(mapName: \""06a87eadf82443ba97bcda3c60738f20\"", capacity: 10000, access: ReadExecute, options: DelayA...` has failed. System.UnauthorizedAccessException : Access to the path is denied. Stack Trace: at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(FileStream fileStream, String mapName, HandleInheritability inheritability, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity) at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(String mapName, Int64 capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability) at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateNew.ValidArgumentCombinations(String mapName, Int64 capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability) Build : Master - 20170606.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170606.01/workItem/System.IO.MemoryMappedFiles.Tests/analysis/xunit/System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateNew~2FValidArgumentCombinations(mapName:%20%5C%2206a87eadf82443ba97bcda3c60738f20%5C%22,%20capacity:%2010000,%20access:%20ReadExecute,%20options:%20DelayA.." +20728 area-System.Net Test failure: System.Net.Tests.HttpListenerPrefixCollectionTests/Add_AlreadyStarted_ReturnsExpected Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerPrefixCollectionTests/Add_AlreadyStarted_ReturnsExpected` has failed. System.Exception : Could not reserve a port for HttpListener\r ---- System.Net.HttpListenerException : The handle is invalid Stack Trace: at System.Net.Tests.HttpListenerFactory.GetListener() at System.Net.Tests.HttpListenerPrefixCollectionTests.Add_AlreadyStarted_ReturnsExpected() ----- Inner Stack Trace ----- at System.Net.HttpListener.SetupV2Config() at System.Net.HttpListener.Start() at System.Net.Tests.HttpListenerFactory..ctor(String hostname, String path) Build : Master - 20170606.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170606.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerPrefixCollectionTests~2FAdd_AlreadyStarted_ReturnsExpected +20731 area-Infrastructure building corefx on linux platform with unknown rid "When trying to build corefx on a Linux host with an unsupported RID, the external/{ilasm,runtime}.depproj fail to compile because they are using the host rid. These projects are compiled as: * /p:TargetGroup=netstandard /p:ConfigurationGroup=Debug /p:ArchGroup=x64 /p:OSGroup=AnyOS /p:TargetFramework=netstandard2.0 * /p:TargetGroup=netcoreapp /p:ConfigurationGroup=Debug /p:ArchGroup=x64 /p:OSGroup=Unix /p:TargetFramework=netcoreapp2.0 The following change to external/dir.props makes them compile fine: ```diff diff --git a/external/dir.props b/external/dir.props index eb7e7b6..4ec6ee5 100644 --- a/external/dir.props +++ b/external/dir.props @@ -5,6 +5,8 @@ win osx linux + linux + linux $(RuntimeOS)-$(ArchGroup) true ``` I'm not sure what the proper change is to make the corefx repo compile on unsupported linux flavors (using portable linux)." +20732 area-System.Threading Support await'ing a Task without throwing Currently there isn't a great way to await a Task without throwing (if the task may have faulted or been canceled). You can simply eat all exceptions: ```C# try { await task; } catch { } ``` but that incurs the cost of the throw and also triggers first-chance exception handling. You can use a continuation: ```C# await task.ContinueWith(delegate { }, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); ``` but that incurs the cost of creating and running an extra task. The best way in terms of run-time overhead is to use a custom awaiter that has a nop GetResult: ```C# internal struct NoThrowAwaiter : ICriticalNotifyCompletion { private readonly Task _task; public NoThrowAwaiter(Task task) { _task = task; } public NoThrowAwaiter GetAwaiter() => this; public bool IsCompleted => _task.IsCompleted; public void GetResult() { } public void OnCompleted(Action continuation) => _task.GetAwaiter().OnCompleted(continuation); public void UnsafeOnCompleted(Action continuation) => OnCompleted(continuation); } ... await new NoThrowAwaiter(task); ``` but that's obviously more code than is desirable. It'd be nice if functionality similar to that last example was built-in. **Proposal** Add a new overload of `ConfigureAwait`, to both `Task` and `Task`. Whereas the current overload accepts a `bool`, the new overload would accept a new `ConfigureAwaitBehavior` enum: ```C# namespace System.Threading.Tasks { [Flags] public enum ConfigureAwaitBehavior { NoCapturedContext = 0x1, // equivalent to ConfigureAwait(false) NoThrow = 0x2, // when set, no exceptions will be thrown for Faulted/Canceled Asynchronous = 0x4, // force the continuation to be asynchronous ... // other options we might want in the future } } ``` Then with `ConfigureAwait` overloads: ```C# namespace System.Threading.Tasks { public class Task { ... public ConfiguredTaskAwaitable ConfigureAwait(ConfigureAwaitBehavior behavior); } public class Task : Task { ... public ConfiguredTaskAwaitable ConfigureAwait(ConfigureAwaitBehavior behavior); } } ``` code that wants to await without throwing can write: ```C# await task.ConfigureAwait(ConfigureAwaitBehavior.NoThrow); ``` or that wants to have the equivalent of `ConfigureAwait(false)` and also not throw: ```C# await task.ConfigureAwait(ConfigureAwaitBehavior.NoCapturedContext | ConfigureAwaitBehavior.NoThrow); ``` etc. From an implementation perspective, this will mean adding a small amount of logic to ConfiguredTaskAwaiter, so there's a small chance it could have a negative imp **Alternatives** An alternative would be to add a dedicated API like `NoThrow` to `Task`, either as an instance or as an extension method, e.g. ```C# await task.NoThrow(); ``` That however doesn't compose well with wanting to use `ConfigureAwait(false)`, and we'd likely end up needing to add a full matrix of options and supporting awaitable/awaiter types to enable that. Another option would be to add methods like NoThrow to ConfiguredTaskAwaitable, so you could write: ```C# await task.ConfigureAwait(true).NoThrow(); ``` etc. And of course an alternative is to continue doing nothing and developers that need this can write their own awaiter like I did earlier. +20733 area-Infrastructure Unit test results presentation is unconventional "![image](https://cloud.githubusercontent.com/assets/1306085/26832554/c7c2878e-4ac7-11e7-89f6-f327ccf8636d.png) The above is a picture of some test results on one of the various CI flavours that's currently in use on CoreFx. I will try to remain polite, but this is completely nuts. * There is a 'fire' emoji (and ""fire"" is what the tool tip says) - does this mean it ran and it failed - i.e. ""Failed""? * There is an empty square - no tooltip - who knows - were these skipped? * And there is an orange checkmark (""skip"" says the tooltip) - does this mean ""Skipped""? All I can say is that I am filled with admiration for the vast creativity and freedom of thought which enables someone to come up with a completely new way to present a passed/failed/skipped table without being shackled by the tedious red/green cross/tick conventions that everyone else uses. But sadly I don't actually find it helpful in understanding the results. Is ""Fire"" some kind of MS argot for ""Failed"", or was it some kind of coded request to an HR department somewhere?" +20734 area-System.Net Httpclient PostAsync with null HttpContent differs on Windows/Linux "``` var client = new HttpClient(); var result = client.PostAsync(""http://localhost"", null).Result.Content.ReadAsStringAsync().Result; Console.WriteLine(""Content-type:"" + result); ``` Only thing server-side does is echo back the ""content-type"" header. **When runned on windows 10, this is what I get:** `Content-type:` **When runned on Ubuntu, I instead get this:** `Content-type:application/x-www-form-urlencoded ` Is this the intended behaviour?" +20735 area-System.Memory Disable large memory Span::Clear test on Linux +20736 area-System.Memory Disable large memory Span::Clear test on Linux (for 2.0) Fixes #20722 +20737 area-Infrastructure [Contribution blocker] Huge (large - Mac) number of connections are opened and timeout for managed build deps I have built corefx on both Windows and Mac over last couple of days with one issue which resulted in multiple errors during the managed part of the build. When managed build starts build restores several packages by connecting with Azure blobs. During several builds I have noticed that build failed with error indicating that some of the managed packages were not downloaded due to TimeoutExceptions raised after 60000 ms with no activity on server side. After investigating problem I have found that on Windows laptop I got more than 200 tcp connections open from build to azure blob - with many timing out, and on Mac I have found roughly from 20 to 25 max connections open with some timing out. Due to the fact that I have been traveling lately and have to use LTE connections to get on internet this may be caused by lower quality of network - however this problem happens i.e. in Warsaw, Poland as well, which has very good LTE signal, coverage and transfer rates. My workaround is quite simple and unfortunately tedious - I restart build multiple times until all downloads succeed what eventually happens. My suggestion would be to limit numebr of concurrent opened connections to server (all are going to the same IP) and at the same time introduce robust, exponential retrial algorithm. +20738 area-System.Net Remove default libcurl Content-Type header for empty POST requests Fixes #20734 +20739 area-System.Xml Several Xml types use Ref Emit on uapaot which is not supported, which will cause a runtime exception There are several types in System.Private.Xml today that are using types from System.Reflection.Emit which do not exist in UWP. From a quick scan, these types seem to be: ``` System.Xml.Xsl.IlGen.XmlILModule System.Xml.Xsl.XmlIlGenerator ``` Once those two classes are correctly fixed to not use Ref Emit(either by throwing PNS or by different implementation) then we should also fix two things in order to better catch things like this: - Modify the ref of ref emit to not have any types in uapaot(or better yet, don't build it at all). The fact that we are building the contract with the types, is what caused this issue since other implementaitions could reference it. And since we have a baseline today in the implementation project of ref emit for uapaot, the build succeeds. - System.Private.Xml shouldn't have configurations for both uap, and uapaot, and instead just have the one for uap which SHOULD NOT use ref emit. Today, we have the uap config which does use ref emit and expose some other types like CodeGenerator, XmlSerializationILGen, and XmlSerializationReaderILGen that use ref emit as well, and the uapaot config that only has XmlILModule and XmlILGenerator which uses it incorrectly. cc: @sepidehMS @krwq @danmosemsft +20740 area-System.Drawing Finalize packaging for System.Drawing.Common When we have implemented all planned versions of System.Drawing.Common, we should finalize the packaging for the library. This includes making sure the correct System.Drawing shims are produced, packaged, and are correct. +20741 area-System.Net How to Configure Network Tracing on Linux? I want to enable network tracing similar to the tracing described here (https://msdn.microsoft.com/en-us/library/ty48b824.aspx). Is there anything equivalent on linux? +20743 area-System.Net Specify explicit SetLastError semantics for Sockets related delegates The MSDN default for the 'UnmanagedFunctionPointer' attribute regarding SetLastError is false. However, due to historical issues, the .NET Framework and .NET Core used a default of true. This is why these attributes have never decorated these Sockets APIs in the source code. See: https://github.com/dotnet/coreclr/blob/fd3668c7c9b9f5d64b5e6d1edf8c55a307cd3c2d/src/vm/dllimport.cpp#L3642 While .NET Core continues to have a 'true' default, .NET Native started failing with these Sockets APIs. The default is currently undefined in .NET Native and there is pending feature work to implemented the 'UnmanagedFunctionPointer' attribute. This PR alone will not fix the .NET Native failures for these Sockets APIs. But pending feature work in .NET Native will make the attributes functional. +20744 area-System.Diagnostics System.Diagnostic.Tracing tests need reflection metadata enabled for uapaot These tests are failing with m$BlockedFromReflection . Need proper rd.xml or workaround Test_Write_Fuzzy() Test_Write_T_EventListener() Test_Write_T_In_Manifest_Serialization() Test_Write_T_EventListener_UseEvents() +20745 area-System.Diagnostics Fixing System.Diagnostics.Tracing tests on uap-aot All tests expect 4 are fixed , the four fails because of reflectionblock.These need to be looked at by tracing folks. @brianrob @vancem @danmosemsft @joshfree +20746 area-System.Net BeginSendToV6IPEndPointToV6Host_Success timed out on OSX https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/4260/consoleFull#18185173682d31e50d-1517-49fc-92b3-2ca637122019 ``` System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV6IPEndPointToV6Host_Success [FAIL] 10:12:04 System.TimeoutException : The operation has timed out. 10:12:04 Stack Trace: 10:12:04 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1252,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 10:12:09 System.Net.Sockets.Tests.DualModeConnectionlessSendTo.SendToV4IPEndPointToV4Host_Success [FAIL] 10:12:09 System.TimeoutException : The operation has timed out. 10:12:09 Stack Trace: 10:12:09 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1151,0): at System.Net.Sockets.Tests.DualModeConnectionlessSendTo.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 10:12:15 System.Net.Sockets.Tests.DualModeConnectionlessSendTo.SendToV6IPEndPointToDualHost_Success [FAIL] 10:12:15 System.TimeoutException : The operation has timed out. 10:12:15 Stack Trace: 10:12:15 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1151,0): at System.Net.Sockets.Tests.DualModeConnectionlessSendTo.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 10:12:20 System.Net.Sockets.Tests.DualModeConnectionlessSendTo.SendToV4IPEndPointToDualHost_Success [FAIL] 10:12:20 System.TimeoutException : The operation has timed out. 10:12:20 Stack Trace: 10:12:20 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1151,0): at System.Net.Sockets.Tests.DualModeConnectionlessSendTo.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 10:12:25 System.Net.Sockets.Tests.DualModeConnectionlessSendTo.SendToV6IPEndPointToV6Host_Success [FAIL] 10:12:25 System.TimeoutException : The operation has timed out. 10:12:25 Stack Trace: 10:12:25 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1151,0): at System.Net.Sockets.Tests.DualModeConnectionlessSendTo.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 11:42:29 ``` +20747 area-System.Net System.Net.Sockets tests hung "https://ci.dot.net/job/dotnet_corefx/job/release_2.0.0/job/centos7.1_release_prtest/228/consoleText ``` MSBUILD : error MSB4166: Child node ""2"" exited prematurely. Shutting down. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt. /mnt/resource/j/workspace/dotnet_corefx/release_2.0.0/centos7.1_release_prtest/Tools/tests.targets(345,5): warning MSB5021: ""sh"" and its child processes are being terminated in order to cancel the build. [/mnt/resource/j/workspace/dotnet_corefx/release_2.0.0/centos7.1_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/System.Net.Sockets.Tests.csproj] ``` No other information available. @mellinoe @MattGal in this case we definitely terminated the test, and it's not possibel to investigate unless we enable dumpling to grab dumps from the relevant processes before we kill them." +20748 area-System.Data Timestamp missing from SqlClientDiagnosticListenerExtensions.WriteCommandBefore telemetry publisher The SqlBeforeExecuteCommand telemetry event is missing the timestamp making it more difficult to compute the duration of executed commands. cc @saurabh500 +20749 area-System.Globalization Disabled tests in System.Globalization.Tests on ILC. ``` -method System.Globalization.Tests.CultureInfoDateTimeFormat.TestSettingThreadCultures -method System.Globalization.Tests.CurrentCultureTests.CurrentCulture -method System.Globalization.Tests.CurrentCultureTests.CurrentUICulture -method System.Globalization.Tests.NumberFormatInfoCurrentInfo.CurrentInfo_CustomCulture -method System.Globalization.Tests.NumberFormatInfoCurrentInfo.CurrentInfo_Subclass_OverridesGetFormat -method System.Globalization.Tests.NumberFormatInfoCurrentInfo.CurrentInfo_Subclass_OverridesNumberFormat ``` All failing with the message: System.InvalidOperationException : The process has no package identity. (Exception from HRESULT: 0x80073D54) Probably an artifact of running the tests outside an app-container. Will leave to area owner to decide how best to conditionalize the tests (if appropriate.) +20751 area-System.IO MemoryMappedFile.CreateViewStream(int, int, MemoryMappedFileAccess.ReadWriteExecute) throws `IOException` in UapAot If we run the following code in UapAot: ```cs const int Capacity = 4096; using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew(null, Capacity, MemoryMappedFileAccess.Read)) { var stream = mmf.CreateViewStream(0, Capacity, MemoryMappedFileAccess.ReadWriteExecute); } ``` `mmf.CreateViewStream(0, Capacity, MemoryMappedFileAccess.ReadWriteExecute);` will throw the following exception: ``` Actual: typeof(System.IO.IOException): The parameter is incorrect Stack Trace: D:\repos\corefxCopy\corefx\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedView.Windows.cs(46,0): at System.IO.MemoryMappedFiles.MemoryMappedView.CreateView($SafeMemoryMappedFileHandle memMappedFil eHandle, $MemoryMappedFileAccess access, Int64 offset, Int64 size) D:\repos\corefxCopy\corefx\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedFile.cs(464,0): at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size, $MemoryMapped FileAccess access) ``` Currently we are hitting this in this test: https://github.com/dotnet/corefx/blob/master/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs#L101-L108 This is supposed to throw an `UnauthorizedAccessException` but only when access is set to `MemoryMappedFileAccess.ReadWriteExecute` we get an `IOException`. I debugged this a little bit and it looks like this [call](https://github.com/dotnet/corefx/blob/master/src/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedView.Windows.cs#L41-L42) is getting an invalid `SafeMemoryMappedViewHandle` and the `Win32ErrorCode` is 87. cc: @ViktorHofer @ianhays @jkotas +20752 area-System.IO Fix System.IO.MemoryMappedFile.Tests failures This PR disables one test related to the Process.Start issue. I also temporary worked around some tests to skip cases when `MemoryMappedFileAccess` is `ReadWriteExecute` as they are hitting: #20751 This gets System.IO.MemoryMappedFileAccess.Tests to 0 failures. cc: @ianhays @danmosemsft @JeremyKuhne +20753 area-System.IO System.IO test failure since the right exception is not thrown in uap-aot These tests are expecting ArgumentNull , but never gets it. Should be a simple fix. TestNullStream_CopyToAsyncValidation() +20755 area-System.IO File move operation with semantics of Unix rename I am looking for a file move operation with the following characteristics: - Overwrites the destination file if it already exists - Creates the destination file if it does not exist - Replaces the destination file atomically - Never falls back to copying (I want an error if the destination is on a different volume) On Unix, [rename(2)](http://man7.org/linux/man-pages/man2/rename.2.html) meets these, but the BCL doesn't have a direct equivalent. ## Issues with BCL alternatives `File.Replace` * Fails if the destination file does not exist * Unclear if underlying `ReplaceFile` on Windows actually has the right guarantees (*) `File.Move` * Fails if the destination file exists * Can fall back to copying I can almost work around the existence issues as follows: ``` C# if (File.Exists(destination)) { File.Replace(source, destination, null) } else { File.Move(source, destination) } ``` But that's cumbersome and opens the door to classic race between existence check and I/O operation. ## (*) Concern about Win32 ReplaceFile [This page](https://msdn.microsoft.com/en-us/library/windows/desktop/hh802690(v=vs.85).aspx#applications_updating_a_single_file_with_document-like_data) gives me the impression that ReplaceFile is what I want, but then the [API documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365512(v=vs.85).aspx) says the following can happen, which I do not want: >ERROR_UNABLE_TO_MOVE_REPLACEMENT > >The replacement file could not be renamed. If lpBackupFileName was specified, the replaced and replacement files retain their original file names. Otherwise, the replaced file no longer exists and the replacement file exists under its original name. This suggests an implementation in several steps where the backup is required to roll things back, and would not exhibit this desirable behavior of `rename`: > If newpath already exists, it will be atomically replaced, so that there is no point at which another process attempting to access newpath will find it missing. With that said, I was not able to repro this situation, so it may just be that the API documentation is out-of-date with implementation improvements. It is also possible that Windows doesn't offer anything with guarantees as strong as `rename` on Linux. I suspect that on Windows other processes have to be prepared to handle file-in-use errors, so removing file-not-found possibility may not be as useful there. The ideal behavior is that readers see the file before or after the move, with no risk of anything in between. No matter the constraints on Windows, I think it would still be worthwhile to have an API that gives full fidelity to `rename` on Linux and the most reasonable equivalent on Windows... ## Initial API Proposal ``` C# [Flags] public enum MoveOptions { None = 0, ReplaceIfExisting = 1, DisallowCopying = 2, }; public static class File { // existing overload public static void Move(string sourceFileName, string destFileName); // new overload public static void Move(string sourceFileName, string destFileName, MoveOptions options); } public class FileInfo { // existing overload public static void MoveTo(string destFileName); // new overload public static void MoveTo(string destFileName, MoveOptions options); } ``` The existing overloads become equivalent to passing MoveOptions.None to the new overloads. On Windows, the flags can be implemented directly using MoveFileEx, with an open question as to which guarantees of `rename` would (not) be retained. On *nix, each one would amount to disabling part of the emulation of Windows MoveFile. If both are passed, it is basically a straight call to `rename`. +20756 area-Infrastructure Enable Linux Performance Runs Porting changes from master to enable Linux performance runs against release/2.0.0. Fixes #20757. +20757 area-System.Diagnostics Enable Linux Performance Runs +20759 area-System.Runtime add rd.xml for System.Runtime.WindowsRuntime.UI.Xaml System.Private.Interop need to create these 4 types through reflection, see https://github.com/dotnet/corert/blob/b18feac9f99f6d67c4e1182e5d2797e5529c3592/src/System.Private.Interop/src/WinRT/ExceptionHelpers.cs#L581 In AOT scenario, it is necessary to mark these types as dynamic to do reflection call. +20761 area-Infrastructure Add `-portable=false` option in Tizen CI build Add `-portable=false` option in Tizen CI build +20763 area-System.Net Add a few WebSocketException tests Just scratching an itch to bring code coverage for the library up to 100%. cc: @davidsh +20764 area-System.IO Serial port failures Unfortunately it's hard to find the red errors among the forest of yellow skipped. I found some representative ones, not sure whether there should be separate issues: https://mc.dot.net/#/user/luqunl/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/f991037ff4a2b8628fc027bfdf6dccddb68a9f39/workItem/System.IO.Ports.Tests @willdean are these all symptoms of somehow not having a port on this box? they're all on the `Windows.81.Amd64.Open-Debug-x64` leg. https://mc.dot.net/#/user/luqunl/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/f991037ff4a2b8628fc027bfdf6dccddb68a9f39/workItem/System.IO.Ports.Tests/analysis/xunit/System.IO.Ports.Tests.WriteLine_Generic~2FBytesToWrite ``` Unhandled Exception of Type Xunit.Sdk.TrueException Message : Timeout while waiting for data to be written to port (wrote 32770, queued 0, bufSize 0)\r\nExpected: True\r\nActual: False Stack Trace : at Legacy.Support.TCSupport.WaitForWriteBufferToLoad(SerialPort com, Int32 bufferLength) at System.IO.Ports.Tests.WriteLine_Generic.BytesToWrite() ``` https://mc.dot.net/#/user/luqunl/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/f991037ff4a2b8628fc027bfdf6dccddb68a9f39/workItem/System.IO.Ports.Tests/analysis/xunit/System.IO.Ports.Tests.WriteTimeout_Property~2FWriteTimeout_Infinite_Write_str ``` Task should not have completed while tx is blocked by flow-control\r\nExpected: False\r\nActual: True Stack Trace : at System.IO.Ports.Tests.WriteTimeout_Property.VerifyInfiniteTimeout(WriteMethodDelegate writeMethod, Boolean setInfiniteTimeout) at System.IO.Ports.Tests.WriteTimeout_Property.WriteTimeout_Default_Write_char_int_int() ``` https://mc.dot.net/#/user/luqunl/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/f991037ff4a2b8628fc027bfdf6dccddb68a9f39/workItem/System.IO.Ports.Tests/analysis/xunit/System.IO.Ports.Tests.WriteLine_Generic~2FSuccessiveReadTimeout ``` Message : ERROR!!!: The write method timedout in 0 expected 1054 percentage difference: 1\r\nExpected: True\r\nActual: False Stack Trace : at System.IO.PortsTests.PortsTest.Fail(String format, Object[] args) at System.IO.Ports.Tests.WriteLine_Generic.VerifyTimeout(SerialPort com) at System.IO.Ports.Tests.WriteLine_Generic.SuccessiveReadTimeout() ``` +20765 area-System.Numerics System.Numerics Matrix4x4 Right-Handed Coordinates Systems? @rochar commented on [Mon Jun 05 2017](https://github.com/dotnet/coreclr/issues/12081) Hi, It's supposed to use Matrix4x4 only in Left-Handed Coordinates systems? Thanks Ricardo +20766 area-System.Threading System.Threading.Thread TrySetApartmentState missing uap-aot implementation These methods need to be implemented. public ApartmentState GetApartmentState() public bool TrySetApartmentState(ApartmentState state) public void DisableComObjectEagerCleanup() public void Interrupt() +20767 area-System.Threading Disable some thread test since the required methods are not implemented in uwp yet. See #20766 +20768 area-System.IO Test failure: System.IO.Ports.Tests.SerialStream_WriteTimeout_Property/SuccessiveWriteTimeoutNoData_WriteByte Opened on behalf of @Jiayili1 The test `System.IO.Ports.Tests.SerialStream_WriteTimeout_Property/SuccessiveWriteTimeoutNoData_WriteByte` has failed. Assert.Throws() Failure\r Expected: typeof(System.TimeoutException)\r Actual: (No exception was thrown) Stack Trace: at System.IO.Ports.Tests.SerialStream_WriteTimeout_Property.SuccessiveWriteTimeoutNoData_WriteByte() Build : Master - 20170607.01 (Core Tests) Failing configurations: - Windows.81.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170607.01/workItem/System.IO.Ports.Tests/analysis/xunit/System.IO.Ports.Tests.SerialStream_WriteTimeout_Property~2FSuccessiveWriteTimeoutNoData_WriteByte +20772 area-Infrastructure No test reports found for the metric 'xUnit.Net' with the resolved pattern 'bin/**/testResults.xml'. failed in ci [xUnit] [ERROR] - No test reports found for the metric 'xUnit.Net' with the resolved pattern 'bin/**/testResults.xml'. Configuration error?. detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/71/consoleFull#136046166483554902-aff0-4799-9e92-0ada24ce2a06 +20773 area-Infrastructure [WS-CLEANUP] Cannot delete workspace: remote file operation failed: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_debug at hudson.remoting.Channel@2ce3a350:dci-mac-build-083: hudson.remoting.ChannelClosedException: channel is already closed detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_osx_debug/76/consoleFull#10182403706ee26338-6221-4f7c-8c8f-1d1d5cb4704a +20774 area-System.IO Disable SerialPort tests where no additional hardware is present This disables all port-requiring SerialPort tests on the CI - essentially it's a reversion of PR #20707 Fixes #20764 Fixes #20768 I will not reintroduce these again using an 'opt-out' strategy - when I can work out how to opt them in selectively on the CI we can try that. +20775 area-System.Drawing System.Drawing.Rectangle Contains methods have misleading documentation "This issue is true for the good old Framework as well as for the ""new"" .NetCore implementation (corefx/src/System.Drawing.Primitives/src/System/Drawing/Rectangle.cs) The Rectangle class provides the following overloaded versions of the contains method: public bool Contains(int x, int y); public bool Contains(Point pt) // forwards to Contains(int, int); public bool Contains(Rectangle rect); While the contains method with the Rectangle parameter includes the border points on the right and the bottom, the contains method with the two integer parameter will categorize a point on the border as not being contained. Assume the following cases: Rectangle test = new Rectangle (0, 0, 100, 20); Rectangle test2 = new Rectangle(0, 0, 100, 20); bool covered = test.Contains(test2) // will return true as expected bool covered2 = test.Contains(0, 0) // will return true as expected bool covered3 = test.Contains(100, 20) // will return false NOT expected bool covered4 = test.Contains(100, 0) // will return false NOT expected The last cases in my eyes are unexpected, as the documentation for Rectangle.Contains (with the rectangle parameter) states it will return true if it fully covers the given rectangle. In my eyes it would be more intuitive and semantically consistent if the implementation would be changed from public bool Contains(int x, int y) => X <= x && x < X + Width && Y <= y && y < Y + Height; to public bool Contains(int x, int y) => X <= x && x <= X + Width && Y <= y && y <= Y + Height; I know it's a matter of definition what ""Contains"" semantically means. One could find some good arguments why the last two test cases actually are correct. But then we should also discuss the first test case which should be then false as well. So either a Rectangle is fully contained which means also the points (i.e. Rectangle.Right and Rectangle.Bottom) or if those points are not contained then the rectangle itself cannot (should not) be contained as well. (I personally prefer the way i mentioned in the comments in code above). Best regards, Tobias" +20776 area-Meta System.Exception loses Message value during serialization/deserialization "System.Exception appears to have some serialization issues. If I perform the following simple test utilizing Newtonsoft.Json for serialization, it fails: ```c# var ex = new Exception(""Something bad happened!!!""); var json = JsonConvert.SerializeObject(ex); var obj = JsonConvert.DeserializeObject(json); Assert.AreEqual(ex.Message, obj.Message); ``` The custom message value is lost during deserialization and replaced with the default exception message: ""Exception of type 'System.Exception' was thrown."" This was tested against System.Runtime version 4.1.0.0 " +20779 area-System.IO Wildcard question marks don't collapse right on Unix `?` runs before periods and end-of-string should collapse. When they are there they are `.{0,n}` in regex-speak. So `Foo???.txt` would be `Foo.{0,3}\.txt` as a regex. Not sure if something equivalent is possible with `fnmatch(3)`. See discussion in #20688 Matching behavior is described [here](https://blogs.msdn.microsoft.com/jeremykuhne/2017/06/04/wildcards-in-windows/). +20780 area-System.IO Trailing periods are not optional on Unix with wildcards If a period is followed by a '`*`' or '`.`' it doesn't have to match if it is at the end of the string on Windows. '`foo.*`' is the common example. It will match '`foo`', '`foo.`', '`foo.txt`', but not '`foobar`'. See discussion in #20688, related to #20779 Matching behavior is described [here](https://blogs.msdn.microsoft.com/jeremykuhne/2017/06/04/wildcards-in-windows/). +20781 area-System.IO Trailing '*.' does not match correctly on Unix "A final `*.` in a search pattern gets treated special by Windows. It becomes `<` and will eat any character _up to and including_ the final period. So `foo*.` will match any file beginning with `foo` that does not have an ""extension"". It will match `foo`, `foobar`, but not `foo.bar`. See discussion in #20688, related to #20779, #20780 Matching behavior is described [here](https://blogs.msdn.microsoft.com/jeremykuhne/2017/06/04/wildcards-in-windows/)." +20782 area-System.Runtime Implement Environment.GetFolderPath for UWP Windows are not exposing SHGetKnownFolderPath generally in RS3 as it doesn't yet give the correct answers for apps. Environment.GetFolderPath should do this on UWP: * For anything that should be app-isolated, use the WinRT Windows.Storage.ApplicationData API * For anything that should be shared (photos, music, etc.) use SHGetKnownFolderPath, which .NET implementation will have special access to. * For Documents, use Windows.Storage.ApplicationData.LocalFolder as that's what iOS/Android code expects. (Note: not SHGetKnownFolderPath with CSIDL_PRIVATEDOCUMENTS.) But offer an environment variable tentatively named COMPLUS_PublicDocuments=1 to force this to get hte shared location using SHGetKnownFolderPath and CSIDL_MYDOCUMENTS. Long term we want SHGetKnownFolderPath but this is the interim plan for RS3. +20784 area-System.IO Handle escaping in Unix file enumeration We try and align with Windows, so we'll escape out [ and /. Adds a bunch of tests and issues for other cases that we don't match Windows behavior. Addresses #20688 +20786 area-System.Data Enable UWP build for SqlClient The changes include adding the uap configuration to the SqlClient implementation so that Managed SNI can be built for UWP. 1. Added the uap configuration. 2. Added dependencies for uap. 3. Conditionally added TdsParserStateObjectFactory to uap +20787 area-System.Threading Creating linked cancellation tokens hides which token triggered cancellation In the following scenario, I would expect the code to print true instead of false. The problem is that once you have a linked cancellation token, it will always be the reported token in any `OperationCanceledException` instead of the actual token that fired. ```C# using System; using System.Threading; namespace ConsoleApp2 { class Program { static void Main(string[] args) { var cts1 = new CancellationTokenSource(); var cts2 = new CancellationTokenSource(); var cts3 = new CancellationTokenSource(); try { cts1.Cancel(); CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, cts2.Token, cts3.Token).Token.ThrowIfCancellationRequested(); } catch (OperationCanceledException ex) { Console.WriteLine(cts1.Token == ex.CancellationToken); } } } } ``` I know it's a breaking change but it's *super* annoying. The work around is to check each of the tokens manually in the catch (which isn't even correct since it may have been triggered elsewhere). /cc @stephentoub +20788 area-Infrastructure building/windows-instructions.md docs need update "https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md Under Required Software -> For Visual Studio 2017, there is a very important component missing: we need to have .NET Core cross-platform development checked as well (Workloads -> Other Toolsets) And there is a issue blocking me for two days, starting from Monday. If I pull from dotnet master, then do ""clean.cmd"" (or any other commands), it has the error message: ""System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization.Primitives, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"". However, if I reverted to a commit in last Friday, then everything is working. @davidsh found out that my VS2017 is missing some components, and after adding many things, the error message goes away. I'm not sure what' the minimum requirements for VS2017 (the ones in windows-instructions.md are not enough). I attached my configuration. For now, it works for me. ![capture1](https://user-images.githubusercontent.com/8537784/26905630-4538c8ec-4b9d-11e7-9b2c-98c292bb4037.PNG) ![capture2](https://user-images.githubusercontent.com/8537784/26905629-4535ace8-4b9d-11e7-8a16-e5dcb1be977b.PNG) ![capture3](https://user-images.githubusercontent.com/8537784/26905631-453947b8-4b9d-11e7-9376-771cc76dc62a.PNG) ![capture4](https://user-images.githubusercontent.com/8537784/26905632-454a01c0-4b9d-11e7-9ac6-b0759dfa761b.PNG) " +20790 area-System.Data Improve test table cleanup in SqlClient ManualTests Noticed some test tables were building up in my test server, so added some extra table cleanup in the Manual Tests. +20793 area-System.Net Fixing NativeOverlapped lifetime issue. Adding a test to validate. Added DEBUG run-time checks. Also removed one duplicate Interop API. Fixes #20400 . +20794 area-System.Runtime [uapaot] ComAwareEventInfo and ComEventInterfaceAttribute duplicated See https://github.com/dotnet/corefx/pull/20697/files#r120782465 ComAwareEventInfo and ComEventInterfaceAttribute should be deleted in System.Private.Interop, and we should always use the impl in corefx. +20795 area-System.Net Eliminate code duplication between HttpUtility and WebUtility See discussion at https://github.com/dotnet/corefx/pull/11642#r78505478 @weshaggard > Is there some reason these cannot call WebUtility.UrlEncode? @alexperovich > WebUtility doesn't support passing in Encoding. Calling it would work for some of these members but not the others. @weshaggard > Well that sucks. We should try and figure out how we can eliminate any duplication between the 2. @stephentoub > That's really unfortunate. I agree with Wes; we should find a way to share the code. Can you please open an issue to track that? The existing code has had a fair number of optimizations applied to it since it came to the repo. We could, for example, augment that code with support for encoding (even though it won't be used via those public APIs), and compile the code into both assemblies. Or add public API there that supports encoding and simply call into it. +20796 area-System.Collections Fix issue #20609 - RemoveAll on ImmutableList.Builder removes wrong elements. This pull request resolves #20609. +20797 area-System.IO NetFX FileStream closes SafeFileHandles in ctor with bad args If you pass in a SafeFileHandle with bad args (access or buffersize) the passed-in handle will be closed when the finalizer runs. This was showing up as an intermittent failure in test runs. +20798 area-System.IO FileStream SafeHandle ctor negative test fix The tests were intermittently failing on desktop as the constructor was closing the handle when it got finalized. - Moved the negative tests into a new class (they were running redundantly with no changes) - Stopped creating files where it wasn't needed - Added specific test for checking handle state and disabled for desktop with active issue See #20797 +20799 area-System.Net NetworkStream Connection Closed by should be System.IO.EndOfStreamException on Windows in `netstandard2.0` Consider the following unit test: https://github.com/mysql-net/MySqlConnector/blob/0.20.1/tests/SideBySide/ConnectionPool.cs#L154-L180 A TCP Client opens a `NetworkStream` to a MySQL server, then the MySQL server times out and closes the connection after a period of time. In `net451`, `netstandard1.3`, and `netstandard2.0 on linux` this simply results in the connection winding up in a failed state. In `netstandard2.0 on windows` this [results in an exception](https://ci.appveyor.com/project/mysqlnet/mysqlconnector/build/1.0.617#L389): ``` System.IO.IOException : Unable to transfer data on the transport connection: An established connection was aborted by the software in your host machine. ---- System.Net.Sockets.SocketException : An established connection was aborted by the software in your host machine ``` This looks to be a problem with the windows implementation of NetworkStream in `netstandard2.0` since it is behaving differently than every other implementation. ## Windows Version Info (exception only occurs in `netstandard2.0`): ``` .NET Command Line Tools (2.0.0-preview1-005957) Product Information: Version: 2.0.0-preview1-005957 Commit SHA-1 hash: 056ac0e9cd Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\appveyor\AppData\Local\Microsoft\dotnet\sdk\2.0.0-preview1-005957\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ``` ## Linux Version Info (exception does not occur): ``` .NET Command Line Tools (2.0.0-preview1-005977) Product Information: Version: 2.0.0-preview1-005977 Commit SHA-1 hash: 414cab8a0b Runtime Environment: OS Name: ubuntu OS Version: 17.04 OS Platform: Linux RID: ubuntu.16.04-x64 Base Path: /usr/share/dotnet/sdk/2.0.0-preview1-005977/ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ``` +20803 area-System.Drawing "Test: System.Drawing.Primitives.Tests.ColorTests/GetHashCode failed with ""Xunit.Sdk.NotEqualException""" "Opened on behalf of @Jiayili1 The test `System.Drawing.Primitives.Tests.ColorTests/GetHashCode(name1: \""AliceBlue\"", name2: \""AliceBlue\"")` has failed. Assert.NotEqual() Failure Expected: Not \""AliceBlue\"" Actual: \""AliceBlue\"" Stack Trace: at System.Drawing.Primitives.Tests.ColorTests.GetHashCode(String name1, String name2) in /root/corefx/src/System.Drawing.Primitives/tests/ColorTests.cs:line 251 Build : Master - 20170608.01 (Core Tests) Failing configurations: - Ubuntu.1604.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170608.01/workItem/System.Drawing.Primitives.Tests/analysis/xunit/System.Drawing.Primitives.Tests.ColorTests~2FGetHashCode(name1:%20%5C%22AliceBlue%5C%22,%20name2:%20%5C%22AliceBlue%5C%22)" +20808 area-System.Drawing Invalid sequences of bytes debug asserts in System.Drawing.Icon The following test causes a debug assertition to be hit in System.Drawing.Icon.Initialize: ```cs byte[] bytes = new byte[] { 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; byte[] bytes = new byte[] { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255 }; byte[] bytes = new byte[] { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 127, 255, 255, 255, 127 }; byte[] bytes = new byte[] { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0 }; ``` ```cs using (var stream = new MemoryStream()) { stream.Write(bytes, 0, bytes.Length); stream.Position = 0; Assert.Throws(exceptionType, () => new Icon(stream)); } ``` I can't reproduce this issue with netfx, but that might be because of release vs debug mode +20809 area-System.Data ADOMD.NET support for .NET Core Hey, I'd like to convert all of my existing applications to .NET Core but found out that there isn't ADOMD.NET support in .NET Core. I need to be able to query my SSAS cubes with impersonation. Is there any plan for you guys to support ADOMD.NET or might there be another way to query SSAS cubes (Using MDX)? Thanks in advance! +20810 area-System.Numerics Question: double division consistency for scaled integer pairs I have the following method: ```c# void Divide(long x, long y, int factor) { var result1 = (double)x / y; var result2 = (double)(x * factor) / (y * factor); } ``` Are `result1` & `result2` guranteed to be the same for arbitrary (* see bellow) inputs? The following assumptions can be made: 1. `x`, `y`, & `factor` are positive. 2. `x * factor` & `y * factor` are representable by less than 50 bits. 3. `y >= x`. +20811 area-System.Drawing Add System.Drawing.Icon tests Contributes to #20711 Fixes #20808 This is a 50-50 mixture of handwritten tests as well as tests inspired and cleanup up from Mono +20812 area-System.Diagnostics Process.VirtualMemorySize64 (at least) is giving corrupt values "System.Diagnostics.Process.VirtualMemorySize64 has an unexpected High Value (Windows 10 x64) Example: ```c# using System; class Program { static void Main(string[] args) { Console.WriteLine(""VirtualMemorySize:{0:#,0.}"", System.Diagnostics.Process.GetCurrentProcess().VirtualMemorySize64); Console.ReadKey(); } } ``` Output: VirtualMemorySize:2.199.520.038.912 Expected output : <= 150 MB as with .NET Classic" +20813 area-System.Numerics Fixes System.Runtime.Numerics tests compilation Fixes C# compiler error `The out parameter 'num3' must be assigned to before control leaves the current method`. It appears that corefx is using pre-RTM buggy version of C# compiler +20814 area-System.Text Different encoding behavior in windows and linux " docker linux -> Encoding.UTF8.GetString(new byte[] {195,173}) ""Ă­"" string windows -> Encoding.UTF8.GetString(new byte[] {195,173}) ""í"" string" +20816 area-System.Net System.Net.Http.Headers.ContentDispositionHeaderValue.EncodeAndQuoteMime should allow quotes "If `System.Net.Http.Headers.ContentDispositionHeaderValue.FileName` is set to a value with quotes, [this](https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/Headers/ContentDispositionHeaderValue.cs#L441) throws an error: ```c# private string EncodeAndQuoteMime(string input) { ... if (result.IndexOf(""\"""", 0, StringComparison.Ordinal) >= 0) // Only bounding quotes are allowed. { throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, SR.net_http_headers_invalid_value, input)); } ... } ``` As far as I can tell, `quoted-string` should be allowed, as per [RFC 2616](https://tools.ietf.org/html/rfc2616#section-2.2). It seems strange that this error can be thrown at all, considering that you can even give it non-ASCII and it will encode it properly. [EDIT] Add C# syntax highlighting by @karelz" +20817 area-Infrastructure Dumpling hitting server error, breaking runs "As far as I can tell the runs are breaking as a consequence. https://ci.dot.net/job/dotnet_corefx/job/master/job/debian8.4_debug/2722/consoleFull#136046166483554902-aff0-4799-9e92-0ada24ce2a06 https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_release/2737/consoleFull#136046166483554902-aff0-4799-9e92-0ada24ce2a06 https://ci.dot.net/job/dotnet_corefx/job/master/job/opensuse42.1_release/2756/consoleFull#136046166483554902-aff0-4799-9e92-0ada24ce2a06 @mellinoe can you look first thing pls? ``` 21:14:46 downloaded dumpling.py 21:14:46 total elapsed time 0:00:00.155554 21:14:47 downloaded dumpling.py 21:14:47 downloading debugger for client linux-suse 21:14:47 Traceback (most recent call last): 21:14:47 File ""/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/tempHome/.dumpling/dumpling.py"", line 1128, in 21:14:47 main(sys.argv) 21:14:47 File ""/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/tempHome/.dumpling/dumpling.py"", line 1123, in main 21:14:47 cmdProc.Process(config) 21:14:47 File ""/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/tempHome/.dumpling/dumpling.py"", line 537, in Process 21:14:47 self.Install(config) 21:14:47 File ""/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/tempHome/.dumpling/dumpling.py"", line 566, in Install 21:14:47 dbgPath = self._dumpSvc.DownloadDebugger(dbgdir) 21:14:47 File ""/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/tempHome/.dumpling/dumpling.py"", line 184, in DownloadDebugger 21:14:47 response.raise_for_status() 21:14:47 File ""/usr/lib/python2.7/site-packages/requests/models.py"", line 893, in raise_for_status 21:14:47 raise HTTPError(http_error_msg, response=self) 21:14:47 requests.exceptions.HTTPError : 500 Server error : Internal Server Error for url: https://dumpling.azurewebsites.net/api/tools/debug?os=linux&distro=suse [/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/src/tests.builds] 21:14:47 /mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/Tools/Dumpling.targets(11,5): error MSB3073: The command ""python /mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/Tools/DumplingHelper.py install_dumpling"" exited with code -1. [/mnt/resource/j/workspace/dotnet_corefx/master/opensuse42.1_release/src/tests.builds] ```" +20818 area-System.IO System.IO.Tests.FileInfo_GetSetTimes~2FTimesStillSetAfterDelete failed on Debian @JeremyKuhne the file system on this OS may have coarser granularity? Perhaps the test should get the time from the item itself then check that didn't change, rather than get the wall clock time then create the item? https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170608.02/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.FileInfo_GetSetTimes~2FTimesStillSetAfterDelete ``` Debian.87.Amd64-x64-Release Unhandled Exception of Type Xunit.Sdk.AllException Message : Assert.All() Failure: 6 out of 6 items in the collection did not pass.\n[5]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (636325222250050043 - 636325222270050575)\r\n Actual: 636325222250000000\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\n at System.IO.Tests.BaseGetSetTimes`1.<>c__DisplayClass8_0.b__0(TimeFunction function) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 75\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action)\n[4]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (636325222250050043 - 636325222270050575)\r\n Actual: 636325222250000000\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\n at System.IO.Tests.BaseGetSetTimes`1.<>c__DisplayClass8_0.b__0(TimeFunction function) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 75\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action)\n[3]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (636325222250050043 - 636325222270050575)\r\n Actual: 636325222250000000\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\n at System.IO.Tests.BaseGetSetTimes`1.<>c__DisplayClass8_0.b__0(TimeFunction function) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 75\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action)\n[2]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (636325222250050043 - 636325222270050575)\r\n Actual: 636325222250000000\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\n at System.IO.Tests.BaseGetSetTimes`1.<>c__DisplayClass8_0.b__0(TimeFunction function) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 75\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action)\n[1]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (636325222250050043 - 636325222270050575)\r\n Actual: 636325222250000000\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\n at System.IO.Tests.BaseGetSetTimes`1.<>c__DisplayClass8_0.b__0(TimeFunction function) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 75\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action)\n[0]: Xunit.Sdk.InRangeException: Assert.InRange() Failure\r\n Range: (636325222250050043 - 636325222270050575)\r\n Actual: 636325222250000000\n at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\n at System.IO.Tests.BaseGetSetTimes`1.<>c__DisplayClass8_0.b__0(TimeFunction function) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 75\n at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace : at System.IO.Tests.BaseGetSetTimes`1.ValidateSetTimes(T item, DateTime beforeTime, DateTime afterTime) in /root/corefx/src/System.IO.FileSystem/tests/Base/BaseGetSetTimes.cs:line 82 at System.IO.Tests.InfoGetSetTimes`1.TimesStillSetAfterDelete() in /root/corefx/src/System.IO.FileSystem/tests/Base/InfoGetSetTimes.cs:line 59 ``` +20820 area-System.IO Check actual set time for test There is already a test that checks the time is in range. The time here shouldn't change at all- and the range I was using wasn't tolerant enough for all of our targets. Fixes #20818, introduced in #20716 +20821 area-System.Net Disable HttpListener tests on UAP/UAPAOT Disable rest of the tests on UAP/UAPAOT until the dev work is done. Contributes to #17462 +20822 area-System.IO Handle escaping in Unix file enumeration (#20784) "Ports #20784, which addresses #20688 We try and align with Windows, so we'll escape out [ and /. Adds a bunch of tests and issues for other cases that we don't match Windows behavior. For completeness I ran everything through RtlIsNameInExpression to validate the ""correct"" results. I've commented appropriately." +20823 area-System.IO Fill out FileSystemInfo state when enumerating (#20716) Ports #20716, which addresses #20456. On Windows FileSystemInfos are filled in with state as we have all of the state from FindFirstFileEx. Refactor Time tests and add cases for refresh state. +20825 area-System.Security System.Security.Cryptography.* tests failing in UWP CoreCLR (UAP) The test assemblies that have failures are the following: System.Security.Cryptography.Xml.Tests - 5 failures System.Security.Cryptography.Pkcs.Tests - 1 failure System.Security.Cryptography.Csp.Tests - 1 failure cc: @bartonjs @danmosemsft @ianhays +20827 area-Infrastructure Enable easy building of all projects for a given library I was trying to follow the build instructions here: https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md#building-individual-corefx-dlls to build the individual projects in corefx (for instance, `System.Collections.Immutable`). When following those instructions the build fails when the SLN file has `\` instead of `/` for the paths in it. The build failure is an `MSB4025` for a missing `.metaproj` file. I suspect many SLN files in the repo have this issue. I'm not sure what the right fix is - I do know that once I changed it to `/` instead of `\` in the SLN it built successfully on linux. This might be an msbuild issue or it might be corefx invalid solutions. Anyway, it would be nice to either update to a msbuild version that fixes this issue or fix the SLN files so that the build/iterate workflow works on linux too. +20829 area-System.Data Add socket connectivity test in the Test TDS server This PR adds a test to connect to the socket when the server initializes the TcpListener to listen to incoming connections before the test can try to connect to the socket. For Diagnosing #20441 +20831 area-Infrastructure Workaround for recent CMake bug w.r.t. CF guard Recent versions of CMake generates the node under the node when it finds /guard:cf linker option in the linker options. But that is not correct. It should generate it under the node so that the Microsoft.CppCommon.targets would then generate node under the . To workaround the problem, change the casing of /guard:cf to uppercase. CMake then doesn't detect the option as something known to it and passes the option to the linker as additional option, which fixes the problem. +20832 area-Infrastructure Build failure: New manual mscorlib shim @dotnet-mc-bot commented on [Thu Jun 08 2017](https://github.com/dotnet/core-eng/issues/899) Build : Master - 20170608.02 (Product Build) Failing configurations: - Windows - AllConfigurations-Release-x64 [Mission Control Build Info](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/build~2Fproduct~2F/build/20170608.02/workItem/Orchestration/analysis/external/Visual%20Studio%20Build%20Information) https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_build?_a=summary&buildId=792955 ``` Failed due to a product build issue: 2017-06-08T12:14:35.7223367Z E:\A\_work\352\s\corefx\Tools\BlockReflectionAttribute.cs(13,49): error CS0246: The type or namespace name 'Attribute' could not be found (are you missing a using directive or an assembly reference?) [E:\A\_work\352\s\corefx\src\shims\manual\mscorlib.csproj] 2017-06-08T12:14:35.7223367Z E:\A\_work\352\s\corefx\Tools\BlockReflectionAttribute.cs(12,6): error CS0518: Predefined type 'System.Object' is not defined or imported [E:\A\_work\352\s\corefx\src\shims\manual\mscorlib.csproj] 2017-06-08T12:14:35.7223367Z E:\A\_work\352\s\corefx\Tools\BlockReflectionAttribute.cs(12,6): error CS0246: The type or namespace name 'AttributeUsageAttribute' could not be found (are you missing a using directive or an assembly reference?) [E:\A\_work\352\s\corefx\src\shims\manual\mscorlib.csproj] 2017-06-08T12:14:35.7223367Z E:\A\_work\352\s\corefx\Tools\BlockReflectionAttribute.cs(12,6): error CS0246: The type or namespace name 'AttributeUsage' could not be found (are you missing a using directive or an assembly reference?) [E:\A\_work\352\s\corefx\src\shims\manual\mscorlib.csproj] 2017-06-08T12:14:35.7223367Z E:\A\_work\352\s\corefx\Tools\BlockReflectionAttribute.cs(12,21): error CS0518: Predefined type 'System.Object' is not defined or imported [E:\A\_work\352\s\corefx\src\shims\manual\mscorlib.csproj] 2017-06-08T12:14:35.7223367Z E:\A\_work\352\s\corefx\Tools\BlockReflectionAttribute.cs(12,21): error CS0103: The name 'AttributeTargets' does not exist in the current context [E:\A\_work\352\s\corefx\src\shims\manual\mscorlib.csproj] ``` Looks related to @weshaggard’s change here: https://github.com/dotnet/corefx/commit/ca49bfbfd64351fddba56f2141b90841b8561eb7 But is confusing since it seems to be specific to the release build. --- @weshaggard commented on [Thu Jun 08 2017](https://github.com/dotnet/core-eng/issues/899#issuecomment-307175737) It is a release only issue which is why it got through CI. CI only runs debug version of AllConfigurations build leg. +20833 area-Serialization DCJS_VerifyDictionaryFormat Failed in ReflectionOnly Mode. When writing a Dictionary type's values, DCJS needs to know the declared value type instead of the actual type of an object. Fix #20636 +20834 area-System.Drawing System.Drawing.Common should give friendly error when used on Nano Right now, you will get EntryPointNotFoundException's when some System.Drawing.Common tries to load some of it's PInvoke imports. We should somehow wrap these in a way that makes error messages more explicit and less confusing. +20835 area-System.Globalization NullReferenceException in System.Globalization.NumberFormatInfo.get_CurrentInfo() https://mc.dot.net/#/user/marek-safar/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/b62758a03e8410f2f523ec0a297dc139423cbe75/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests~2FGetNumericValue ``` System.NullReferenceException Ubuntu.1604.Amd64.Open-Debug-x64 Unhandled Exception of Type System.NullReferenceException Message : System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace : at System.Globalization.NumberFormatInfo.get_CurrentInfo() at System.Double.ToString(String format, IFormatProvider provider) at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1, Object arg2) at System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests.ErrorMessage(Char ch, Object expected, Object actual) in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs:line 123 at System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests.GetNumericValue(Char ch, Double expected) in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs:line 88 at System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests.GetNumericValue() in /mnt/j/workspace/dotnet_corefx/master/portable-linux-Config_Debug+OuterLoop_false_prtest/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs:line 76 ``` @tarekgh fyi. +20837 area-System.Diagnostics System.Diagnostics.Tracing Test_EventSource_Lifetime test use private reflection and hense fails in uap-aot "```csharp private void ExerciseEventSource(WeakReference wrProvider, WeakReference wrEventSource) { using (var es = new LifetimeTestEventSource()) { **_FieldInfo field = es.GetType().GetTypeInfo().BaseType.GetField(""m_provider"", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);_** object provider = field.GetValue(es); wrProvider.Target = provider; " +20840 area-System.Net HttpListener: Managed implementation allows authenticated clients to connect successfully when if _listener.AuthenticationSchemes = AuthenticationSchemes.None; "Tracking app-compat behavior for Unix implementation of HttpListener. The scenarios are described by the following tests: - NoAuthenticationGetContextAsync_AuthenticationProvided_ReturnsForbiddenStatusCode - NoAuthentication_AuthenticationProvided_ReturnsForbiddenStatusCode For details on why these tests are not disabled with ""ActiveIssue"" see https://github.com/dotnet/corefx/pull/20793/files#r121023823 " +20841 area-Meta "Contributor Guidance regarding ""Squash and Merge""" "https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/contributing.md suggests that ""Squash and Merge"" be used only to squash and ""only by the contributor on request"" (which doesn't make sense to me since it's the guy who does the merge that clicks the button...) I would recommend that the guidance be changed so that ""Squash and Merge"" is the always the preferred choice even when there's only one commit in the PR. ""Squash and Merge"" isn't just about squashing commits - it's about having a sane history log without every contribution creating two commit objects - one with a useless title (""Merge Pull Request"") and the other with a useless timestamp (I care about when the change was merged into the branch, not when the author built the commit before pushing it to the PR.) " +20842 area-System.IO Use correct charset when unpacking port names (#20668) Port of #20668. Test only fix. None of the SerialPort tests work without this. +20843 area-System.Diagnostics Console encoding not supported Fixes https://github.com/dotnet/corefx/issues/17927 Talked offline with @JeremyKuhne and seem like this should start working at some time in the future @AtsushiKan has recently reenabled this test but it seems to still be failing on Ctrl+F5 (possibly works on UapAot) +20845 area-System.Runtime API Proposal: Add and Subtract overloads that take a void pointer ## Proposed API ```C# namespace System.Runtime.CompilerServices { public static partial class Unsafe { public unsafe static void* Add(void* source, int elementOffset); public unsafe static void* Subtract(void* source, int elementOffset); } } ``` ## Rationale and Usage Issue from: https://github.com/dotnet/corefxlab/issues/1529 > S.R.CS.Unsafe should be a good place. It has both `void*` and `ref T` overloads for most methods. `void*` overloads for Add and Subtract are missing for no good reason. We ended up writing [our own implementation](https://github.com/dotnet/corefxlab/blob/master/src/System.Buffers.Primitives/System/Buffers/OwnedBuffer.cs#L68-L71) because of the need: ```C# unsafe void* Add(void* pointer, int offset) { return (byte*)pointer + ((ulong)Unsafe.SizeOf() * (ulong)offset); } ``` The Add API is required in System.Buffers.Primitives [Buffer\.Pin](https://github.com/dotnet/corefxlab/blob/master/src/System.Buffers.Primitives/System/Buffers/Buffer.cs#L93-L105) method. ```C# public BufferHandle Pin() { if (_owner != null) { return _owner.Pin(_index); } var handle = GCHandle.Alloc(_array, GCHandleType.Pinned); unsafe { var pointer = OwnedBuffer.Add((void*)handle.AddrOfPinnedObject(), _index); return new BufferHandle(null, pointer, handle); } } ``` ## Open Questions ~- Should the Add/Subtract overload return `ref T` or `void*`?~ ## Pull Request A PR with the proposed changes is available: #20886 ## Updates - Changed return value from `ref T` to `void*`. cc @jkotas, @KrzysztofCwalina, @karelz, @terrajobst +20846 area-System.Runtime Tip: add string.Contains(string, StringComparison) Add convenience API 'string.Contains' overload with `StringComparison` argument. Motivation: [2000+ votes](https://stackoverflow.com/a/444818/2061103) on StackOverflow ```c# partial class String { //public bool Contains(string value); // Exists public bool Contains(string value, StringComparison comparisonType); } ``` # Original post I am not sure if this topic has came up before or not, but it looks to me a low hangig fruit with great demand: https://stackoverflow.com/a/444818/2061103 +20847 area-System.Net Don't catch all failures in HttpListenerResponse.Close tests Fixes #20156 For the reasoning, see #20156 +20849 area-Serialization Test failure: System.Runtime.Serialization.Xml.Canonicalization.Tests.XmlCanonicalizationTest/C14NWriterNegativeTests Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Xml.Canonicalization.Tests.XmlCanonicalizationTest/C14NWriterNegativeTests` has failed. Assert.Equal() Failure\r ? (pos 15)\r Expected: System.ArgumentException\r Actual: System.ArgumentNullException\r ? (pos 15) Stack Trace: at System.Runtime.Serialization.Xml.Canonicalization.Tests.XmlCanonicalizationTest.C14NWriterNegativeTests() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/Canonicalization.Tests/analysis/xunit/System.Runtime.Serialization.Xml.Canonicalization.Tests.XmlCanonicalizationTest~2FC14NWriterNegativeTests +20850 area-System.IO "Test: Tests.System.IO.Win32MarshalTests/DirectoryNotFoundErrors(path: \""\"", errorCode: 3, error: \""IO_PathNotFound_NoPathName\"") failed with ""Xunit.Sdk.StartsWithException""" "Opened on behalf of @Jiayili1 The test `Tests.System.IO.Win32MarshalTests/DirectoryNotFoundErrors(path: \""\"", errorCode: 3, error: \""IO_PathNotFound_NoPathName\"")` has failed. Assert.StartsWith() Failure:\r Expected: IO_PathNotFound_NoPathName\r Actual: Exception of type 'System.... Stack Trace: at Tests.System.IO.Win32MarshalTests.DirectoryNotFoundErrors(String path, Int32 errorCode, String error) Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/Common.Tests/analysis/xunit/Tests.System.IO.Win32MarshalTests~2FDirectoryNotFoundErrors(path:%20%5C%22%5C%22,%20errorCode:%203,%20error:%20%5C%22IO_PathNotFound_NoPathName%5C%22)" +20851 area-System.IO "Test: Tests.System.IO.Win32MarshalTests/DirectoryNotFoundErrors(path: \""foo\"", errorCode: 3, error: \""IO_PathNotFound_Path\"") failed with ""System.ArgumentNullException""" "Opened on behalf of @Jiayili1 The test `Tests.System.IO.Win32MarshalTests/DirectoryNotFoundErrors(path: \""foo\"", errorCode: 3, error: \""IO_PathNotFound_Path\"")` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.IO.Win32Marshal.GetExceptionForWin32Error(Int32 errorCode, String path) at Tests.System.IO.Win32MarshalTests.DirectoryNotFoundErrors(String path, Int32 errorCode, String error) Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/Common.Tests/analysis/xunit/Tests.System.IO.Win32MarshalTests~2FDirectoryNotFoundErrors(path:%20%5C%22foo%5C%22,%20errorCode:%203,%20error:%20%5C%22IO_PathNotFound_Path%5C%22)" +20855 area-System.Collections "Test: System.Collections.Tests.ArrayListTests/Ctor_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException failed with ""System.ArgumentNullException'" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.ArrayListTests/Ctor_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Collections.ArrayList..ctor(Int32 capacity) at System.Collections.Tests.ArrayListTests.<>c.b__2_0() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.Collections.NonGeneric.Tests/analysis/xunit/System.Collections.Tests.ArrayListTests~2FCtor_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException +20856 area-System.Collections "Test: System.Collections.Specialized.Tests.HybridDictionaryAddTests/Add_Invalid failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Collections.Specialized.Tests.HybridDictionaryAddTests/Add_Invalid(count: 50, caseInsensitive: False)` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1) at System.SR.Format(String resourceFormat, Object p1, Object p2) at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Collections.Hashtable.Add(Object key, Object value) at System.Collections.Specialized.HybridDictionary.Add(Object key, Object value) at System.Collections.Specialized.Tests.HybridDictionaryAddTests.<>c__DisplayClass3_0.b__1() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.Collections.Specialized.Tests/analysis/xunit/System.Collections.Specialized.Tests.HybridDictionaryAddTests~2FAdd_Invalid(count:%2050,%20caseInsensitive:%20False) +20857 area-System.Collections "Test: System.Collections.Generic.Tests.BadlyBehavingComparableComparersTests/EqualityComparer_SerializationRoundtrip failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Collections.Generic.Tests.BadlyBehavingComparableComparersTests/EqualityComparer_SerializationRoundtrip` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Runtime.Serialization.ObjectManager.DoFixups() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(BinaryParser serParser, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) at System.Collections.Generic.Tests.ComparersGenericTests`1.EqualityComparer_SerializationRoundtrip() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Generic.Tests.BadlyBehavingComparableComparersTests~2FEqualityComparer_SerializationRoundtrip +20858 area-System.ComponentModel "Test: System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests/Validate_CantConvertValueToTargetType_ThrowsException failed with ""System.ArgumentNullException""" "Opened on behalf of @Jiayili1 The test `System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests/Validate_CantConvertValueToTargetType_ThrowsException(type: typeof(double), minimum: \""1\"", maximum: \""3\"")` has failed. Assert.Throws() Failure\r Expected: typeof(System.Exception)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1) at System.SR.Format(String resourceFormat, Object p1, Object p2) at System.ComponentModel.BaseNumberConverter.FromStringError(String failedText, Exception innerException) at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) at System.ComponentModel.TypeConverter.ConvertFrom(Object value) at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value) at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value) at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext) at System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.<>c__DisplayClass2_0.b__0() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.ComponentModel.Annotations.Tests/analysis/xunit/System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests~2FValidate_CantConvertValueToTargetType_ThrowsException(type:%20typeof(double),%20minimum:%20%5C%221%5C%22,%20maximum:%20%5C%223%5C%22)" +20859 area-System.ComponentModel "Test: System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests/Validate_Invalid failed with ""Xunit.Sdk.AllException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests/Validate_Invalid` has failed. Assert.All() Failure: 4 out of 22 items in the collection did not pass.\r [21]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r Expected: typeof(System.ComponentModel.DataAnnotations.ValidationException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format\r at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)\r at System.String.Format(String format, Object arg0, Object arg1)\r at System.SR.Format(String resourceFormat, Object p1, Object p2)\r at System.ComponentModel.TypeConverter.GetConvertFromException(Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.<>c__DisplayClass8_0.b__0()\r at Xunit.Assert.RecordException(Action testCode)\r [20]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r Expected: typeof(System.ComponentModel.DataAnnotations.ValidationException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format\r at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)\r at System.String.Format(String format, Object arg0, Object arg1)\r at System.SR.Format(String resourceFormat, Object p1, Object p2)\r at System.ComponentModel.TypeConverter.GetConvertFromException(Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.<>c__DisplayClass8_0.b__0()\r at Xunit.Assert.RecordException(Action testCode)\r [15]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r Expected: typeof(System.ComponentModel.DataAnnotations.ValidationException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format\r at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)\r at System.String.Format(String format, Object arg0, Object arg1)\r at System.SR.Format(String resourceFormat, Object p1, Object p2)\r at System.ComponentModel.TypeConverter.GetConvertFromException(Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.<>c__DisplayClass8_0.b__0()\r at Xunit.Assert.RecordException(Action testCode)\r [14]: Xunit.Sdk.ThrowsException: Assert.Throws() Failure\r Expected: typeof(System.ComponentModel.DataAnnotations.ValidationException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format\r at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)\r at System.String.Format(String format, Object arg0, Object arg1)\r at System.SR.Format(String resourceFormat, Object p1, Object p2)\r at System.ComponentModel.TypeConverter.GetConvertFromException(Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r at System.ComponentModel.TypeConverter.ConvertFrom(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.<>c__DisplayClass22_0.b__2(Object value)\r at System.ComponentModel.DataAnnotations.RangeAttribute.IsValid(Object value)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.ValidationAttribute.Validate(Object value, ValidationContext validationContext)\r at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.<>c__DisplayClass8_0.b__0()\r at Xunit.Assert.RecordException(Action testCode) Stack Trace: at System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase.Validate_Invalid() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.ComponentModel.Annotations.Tests/analysis/xunit/System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests~2FValidate_Invalid +20860 area-System.ComponentModel "Test: System.ComponentModel.Primitives.Tests.CategoryAttributeTests/CategoryNames failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.ComponentModel.Primitives.Tests.CategoryAttributeTests/CategoryNames(attribute: CategoryAttribute { Category = \""Default\"", TypeId = typeof(System.ComponentModel.CategoryAttribute) }, n...` has failed. Assert.Equal() Failure\r ? (pos 0)\r Expected: Misc\r Actual: Default\r ? (pos 0) Stack Trace: at System.ComponentModel.Primitives.Tests.CategoryAttributeTests.CategoryNames(CategoryAttribute attribute, String name) Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.ComponentModel.Primitives.Tests/analysis/xunit/System.ComponentModel.Primitives.Tests.CategoryAttributeTests~2FCategoryNames(attribute:%20CategoryAttribute%20%7B%20Category%20=%20%5C%22Default%5C%22,%20TypeId%20=%20typeof(System.ComponentModel.CategoryAttribute)%20%7D,%20n..." +20861 area-System.ComponentModel "Test: System.ComponentModel.Tests.ArrayConverterTests/ConvertTo_WithContext failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.Tests.ArrayConverterTests/ConvertTo_WithContext` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.ComponentModel.ArrayConverter.ConvertTo(ITypeDescriptorContext context, CultureInfo culture, Object value, Type destinationType) at System.ComponentModel.Tests.ConverterTestBase.ConvertTo_WithContext(Object[,] data, TypeConverter converter) at System.ComponentModel.Tests.ArrayConverterTests.ConvertTo_WithContext() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.ComponentModel.TypeConverter.Tests/analysis/xunit/System.ComponentModel.Tests.ArrayConverterTests~2FConvertTo_WithContext +20862 area-System.ComponentModel "Test: System.ComponentModel.Tests.CultureInfoConverterTest/ConvertToString failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.Tests.CultureInfoConverterTest/ConvertToString` has failed. Assert.Equal() Failure\r Expected: (Default)\r Actual: (null) Stack Trace: at System.ComponentModel.Tests.CultureInfoConverterTest.ConvertToString() Build : Master - 20170609.02 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170609.02/workItem/System.ComponentModel.TypeConverter.Tests/analysis/xunit/System.ComponentModel.Tests.CultureInfoConverterTest~2FConvertToString +20863 area-System.Collections Workaround System.Collections.Tests to fix 150 failures in uap due to codegen bug There is a bug in .NET Native's codegen that when running the Collections tests in retail mode (optimized and inlined) there is 150 failures due to codegen. If we run the tests in check mode they wouldn't fail. So this is to workaround that by disabling optimizations and inlining through an embedded .rd.xml file, so that we get those tests passing while this is fixed. cc: @danmosemsft @morganbr +20865 area-System.Drawing Strange bug: KnownColorTable.InitColorNameTable - constant initialization sets all values to null? Steps to reproduce: - Start debugging on L188 in System.Drawing.Common.KnownColorTable ![untitled](https://user-images.githubusercontent.com/1275900/26967236-b5f66ec8-4d27-11e7-8600-68be3c5de9b6.png) - Step over the first assignment to `values[0]`: ![untitled](https://user-images.githubusercontent.com/1275900/26967271-cf753eba-4d27-11e7-83eb-0789a2d7fdab.png) Observe that values is still null, even though everything has already been assigned... This is causing a Debug assertion running the unit tests +20866 area-System.Drawing [refactoring] There are 2 copies of KnownColorTable in corefx One in System.Drawing.Primitives and one in System.Drawing.Primitives These should be moved to src/common +20867 area-System.Drawing Add Pens/Brushes tests Fixes #20866 Fixes #20865 /cc @mellione +20869 area-Infrastructure Update C# compiler to RTM version Looks like we're using Roslyn 2.0-rc, which has some bugs - e.g. https://github.com/dotnet/corefx/pull/20813#issuecomment-307258057 We should upgrade to RTM version (maybe even latest). +20870 area-Serialization Cross framework serialization finish up This PR is intended to be the last piece to make serialization work across Desktop and Core. ## TODO - [x] **mscorlib shim as default entrance point for BinaryFormatter** https://github.com/dotnet/corefx/pull/20879 - [x] **CookieContainer data storage (Hashtable vs Dictionary)** - [x] **Manual System.dll façade for TreeSet and CookieVariant** https://github.com/dotnet/corefx/pull/20988 - [X] **Remaining manual equality checks in test code** [@krwq] - [x] **OrdinalIgnoreCaseComparer does not exist on netfx** https://github.com/dotnet/coreclr/pull/12215 & https://github.com/dotnet/coreclr/pull/12267 - [x] **Fix Uri.OriginalString and uncomment equality check** [@krwq] - [x] **Fix Cookie.TimeStamp and uncomment equality check** [@krwq] - [x] **Waiting for https://github.com/dotnet/coreclr/pull/12267 to come into corefx** ## Status Read from left to right. E.g.: _Core deserializes to Core_ | | Core | Desktop | | ------------- | ------------- | ------------- | | Core | x | x | | Desktop | x | x | +20872 area-System.Net Fix HTTP/2 option setting in WinHttpHandler The WinHTTP team has recommended that we always set the HTTP/2 options explicitly when setting up the WinHTTP request handle. Future versions of Windows might adjust the WinHTTP default value for this setting. So, by always setting the value at the WinHTTP layer, we can ensure that we have a stable default value at the .NET layer. +20873 area-Infrastructure Security Build Definition "Introducing build definition that will run security tools required to comply with Security Development Lifecycle (SDL). The build definition puts together VSTS extensions that run the tools, analyze logs, and upload results to Trust Services Automation that creates workitems for identified security issues. List of tools included in this definition are: 1. BinSkim - validates compiler/linker settings and other security-relevant binary characteristics. https://github.com/Microsoft/binskim 2. APIScan - determines whether or not the software complies with the API Usage Standard of the Interoperability Policy. 3. CredScan - index and scan for credentials or other sensitive content. 4. PoliCheck - scan code, code comments, and content for words that may be sensitive for legal, cultural, or geopolitical reasons. Approach followed in this build is: 1. Get NuGet packages corresponding to the specified official build. 2. Extract packages to `$(Build.SourcesDirectory)\security` 3. Run BinSkim and APIScan on the extracted packages 4. Get sources corresponding to the official build. This means checkout at the SHA listed version.txt 5. Run CredScan and PoliCheck on the sources. Running this build identified the following issues https://msazure.visualstudio.com/defaultcollection/One/_workitems?tempQueryId=f4c69d04-1a80-4fef-ad4b-8f0dd0a8af04 @morganbr @weshaggard @chcosta @dagood PTAL Cc @gkhanna79 Edit 6/12: Described the approach for the build, and updated the query link. Edit 6/12: Fixed type ""Trust Services Automation""" +20875 area-Infrastructure Consider having a way to systematically check styles locally before pushing to PR For external contributors (like me) and probably everyone else, it would be nice to have a way to check some of the formatting rules locally before pushing (i.e. as a build target or a script on the cmdline). I'm running on linux so I don't have VS and don't get the stylecop stuff there. If there was a convenient way to run the style check locally I could be a better citizen and not push things that violate style rules (at least not as often) due to not noticing things or not knowing certain rules - and it would probably make the experience nicer for the reviewers as well, so they could focus on content, not formatting. I'm thinking something like ./stylecop.sh in the root of the repo is the experience I'd be looking for. Other suggestions that were raised were the following workflow: 1. commit your changes 2. run https://github.com/dotnet/codeformatter 3. revert all changes except those in the code you were working on 4. commit formatting fixes or squash into previous commit Of course that whole workflow could be done locally. If this is the sort of workflow we want (I'm fine with that option too), can we make tooling to make it easier as part of the corefx repo? For instance, if (2) could be told how many commits to review and use `git whatchanged HEAD~k` where `k` is the number you provided to figure out which files were touched, that would be awesome. If we want to agree on how changes like this might be done, I can happily help with the git-foo as this is one of my specialties ;) +20876 area-System.IO Directory and file exists methods could be more efficient Related to #19717 Exists methods have a try-catch for error cases and they normalize, which is not necessary (at least on Windows). As all error cases return false, we can remove most of this overhead. https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/File.cs#L181-L210 The only pre-emptive check we might want to keep from GetFullPath is to return false if the passed in path contains an embedded null. Maybe have a `FileSystem.FileExistsFast`? This is the current Windows one: https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/File.cs#L181-L210 Unix is already in much better state. I assume that crappy and partial (relative) paths will work. Tests for bad and relative paths are critical, need to validate existing coverage and expand if necessary. +20878 area-Infrastructure Enable two new queues (Suse SLES 12) and (Fedora 26) Suse SLES 12 and Fedora 26 need to be supported for Core 2.0 as well: https://github.com/dotnet/core-eng/issues/861 They ran well in staging, now enable them in Prod corefx official runs. +20879 area-Serialization Using mscorlib shim as default resolving assembly for BinaryFormatter serialization instead of System.Private.Corelib If a type gets serialized in netfx which lives in mscorlib the serialized blob won't contain the Assembly Information (because mscorlib is special cased to remove unnecessary blob info):  System.Collections.Comparer CompareInfo System.Globalization.CompareInfo  System.Globalization.CompareInfom_name win32LCID culture m_SortVersion System.Globalization.SortVersionen-US  ` BinaryFormatter checks if that is the case here: https://github.com/dotnet/corefx/blob/0ebc867d6bad9d777dd61afb78d0445c86143b34/src/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryParser.cs#L430-L435 and will use the default assembly for resolving the type. In netfx the default assembly is mscorlib.dll because it gets checked by `typeof(string).Assembly`. In Core this is System.Private.Corelib.dll which doesn't contain all the types which are living in mscorlib in netfx. Therefore we should change the default assembly to the mscorlib shim which contains manual and auto-generated TypeForwards. The `Assembly.Load(string)` call should also work in uap/uapaot as the mscorlib shim is already loaded. This fixes e.g. that the correct System.Collections.Comparer is picked when trying to deserialize in core. Before this change this one was resolved (internal) https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Collections/Comparer.cs instead of this one (public) https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Collections/Comparer.cs Thanks @ericstj ## Optimization This PR also improves the serialization payload dramatically and brings it pack on pair with netfx. Testing with byte.MinValue. ### Before **Base64:** AAEAAAD/////AQAAAAAAAAAMAgAAAEttc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkEAQAAAAtTeXN0ZW0uQnl0ZQEAAAAHbV92YWx1ZQACAAs= **UTF8:** ����������� ���Kmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089��� System.Byte���m_value�� ### After **Base 64:** AAEAAAD/////AQAAAAAAAAAEAQAAAAtTeXN0ZW0uQnl0ZQEAAAAHbV92YWx1ZQACAAs= **UTF-8:** �������������� System.Byte���m_value�� cc @weshaggard @danmosemsft @morganbr @stephentoub +20881 area-System.IO SerialPort: Verify GetPortNames is consistent This improves and extends an existing test which is supposed to verify that all the ports which are returned by `SerialPort.GetPortNames` are also returned by `PortHelpers.GetPorts`. The new tests would have found the regression that was fixed in #20668 and #20842 +20882 area-Infrastructure Use NuGetPush target from BuildTools "skip ci please Use `NuGetPush` target added to BuildTools in https://github.com/dotnet/buildtools/pull/1543. This includes per-package retries, to fix the NuGet push hang (https://github.com/dotnet/core-eng/issues/434) in CoreFX master. Inline script reviews are annoying, so I pulled out diffs: Library package push step: ```diff --ApiKey $(MyGetApiKey) -PipelineSrcDir $(Pipeline.SourcesDirectory) -ConfigurationGroup $(PB_ConfigurationGroup) -AzureContainerPackageGlob $(PB_AzureContainerPackageGlob) -MyGetFeedUrl $(PB_MyGetFeedUrl) +-ApiKey $(MyGetApiKey) -ConfigurationGroup $(PB_ConfigurationGroup) -PackagesGlob $(Pipeline.SourcesDirectory)\packages\AzureTransfer\$(PB_ConfigurationGroup)\$(PB_AzureContainerPackageGlob) -MyGetFeedUrl $(PB_MyGetFeedUrl) -param($ApiKey, $PipelineSrcDir, $ConfigurationGroup, $AzureContainerPackageGlob, $MyGetFeedUrl) +param($ApiKey, $ConfigurationGroup, $PackagesGlob, $MyGetFeedUrl) + if ($ConfigurationGroup -ne ""Release"") { exit } -& $env:CustomNuGetPath push $PipelineSrcDir\packages\AzureTransfer\$ConfigurationGroup\$AzureContainerPackageGlob $ApiKey -Source $MyGetFeedUrl -Timeout 3600 + +.\build-managed.cmd -- /t:NuGetPush /v:Normal ` +/p:NuGetExePath=$env:CustomNuGetPath ` +/p:NuGetApiKey=$ApiKey ` +/p:NuGetSource=$MyGetFeedUrl ` +/p:PackagesGlob=$PackagesGlob ``` Symbol package push step: ```diff --ApiKey $(MyGetApiKey) -ConfigurationGroup $(PB_ConfigurationGroup) -MyGetFeedUrl $(PB_MyGetFeedUrl) +-ApiKey $(MyGetApiKey) -ConfigurationGroup $(PB_ConfigurationGroup) -PackagesGlob $(Build.StagingDirectory)\IndexedSymbolPackages\*.nupkg -MyGetFeedUrl $(PB_MyGetFeedUrl) -param($ApiKey, $ConfigurationGroup, $CustomNuGetPath, $MyGetFeedUrl) +param($ApiKey, $ConfigurationGroup, $PackagesGlob, $MyGetFeedUrl) + if ($ConfigurationGroup -ne ""Release"") { exit } if ($env:SourceBranch.StartsWith(""release/"")) { exit } -& $env:CustomNuGetPath push $env:Build_StagingDirectory\IndexedSymbolPackages\*.nupkg $ApiKey -Source $MyGetFeedUrl -Timeout 3600 + +.\build-managed.cmd -- /t:NuGetPush /v:Normal ` +/p:NuGetExePath=$env:CustomNuGetPath ` +/p:NuGetApiKey=$ApiKey ` +/p:NuGetSource=$MyGetFeedUrl ` +/p:PackagesGlob=$PackagesGlob ```" +20883 area-System.Data Add SqlCommandBuilder to SqlClient Also modifies some TdsParser query metadata parsing code. Some fields, like the query TableName, weren't being set correctly, so dynamic SQL query generation would fail in the AdapterTests. Mostly ported code from Framework. +20884 area-System.Drawing Fix Behavior Differences in Unix System.Drawing.Common This is a tracking issue to mark failing tests against. I will fill this out with more details as I understand them. +20885 area-Infrastructure Add Debian 9 as an optional queue which can be requested specifically "Add extra "","" at the end of queues to make diff tools happiler." +20886 area-System.Runtime Adding void* APIs for Add and Subtract For https://github.com/dotnet/corefx/issues/20845 <= Pending API review cc @jkotas, @shiftylogic, @KrzysztofCwalina +20887 area-System.Drawing [WIP] Add Unix implementation for System.Drawing.Common "This is a port of mono's System.Drawing implementation, for use with .NET Core. The goal is to share this source code directly with mono, and build for all configurations from the same codebase. In the present version, the code files have stayed in the same folder structure that they had in mono. This made it easier for me to make sure that mono's build continued to work using the same files. Ultimately, we should condense the folders down to match other corefx projects, and condense implementations as much as possible, as well. Open questions: * What should we do about `[MonoTODO]` attributes? * ~~What should we do about the `Locale` usage?~~ Removed. * What icons should be used in the `SystemIcons` class? I've taken the ""Error"" icon from mono and returned it for all system icons currently. @marek-safar @qmfrederik @hughbe " +20888 area-System.Collections System.Collections.Tests fail with Serialization issue in UAPAOT and UAP There are two different tests failing here: ### [EqualityComparer_SerializationRoundtrip](https://github.com/dotnet/corefx/blob/master/src/System.Collections/tests/Generic/Comparers/EqualityComparer.Generic.Serialization.Tests.cs#L16-L29) This test is failing for all the Test class that inherit from this base class: ``` System.Collections.Generic.Tests.UInt64ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.DecimalComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.ByteComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.UInt32EnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.StringComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.DoubleComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.UInt16EnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.IntPtrComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.NullableIntPtrComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.SByteComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.Int16EnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.ByteEnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.UInt64EnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.Int32ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.NullableInt32ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.SByteEnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.NullableUInt32ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.EquatableComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.UIntPtrComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.Int16ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.SingleComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.Int32EnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.NullableUIntPtrComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.Int64ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.UInt16ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.Int64EnumComparersTests.EqualityComparer_SerializationRoundtrip [FAIL] System.Collections.Generic.Tests.UInt32ComparersTests.EqualityComparer_SerializationRoundtrip [FAIL ``` The failing error is: ``` System.Reflection.MissingMetadataException : 'System.Collections.Generic.GenericEqualityComparer<>' is missing metadata. For more information, please visit http://go.microsoft.com/fwlink/?LinkID=392859 ``` ### [IGenericSharedAPI_SerializeDeserialize](https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/Collections/IEnumerable.Generic.Serialization.Tests.cs#L15-L39) This test is failing for two test classes that implement this base class: * SortedDictionary_Generic_Tests * SortedList_Generic_Tests With error: ``` System.Reflection.MissingMetadataException : This operation cannot be carried out because metadata for the following object was removed for performance reasons:\n\n EETypeRva:0x00001EA0\n\nNo further information is available. Rebuild in debug mode for better information.\n\n ``` +20890 area-System.Net Fix UnauthorizedAccessException for Sockets tests running in app-container In UAP mode, all tests are running inside an UWP app. The app doesn't have direct access to most of the file system, which causes System.UnauthorizedAccessException. Now all innerloop Functional tests for System.Net.Sockets should run clean on UAP mode. Fix: #20302 +20891 area-System.Collections Disable UapAot System.Collections tests related to serialization issue This should bring System.Collections.Tests failures to 7, which are caused by the same issue in only two different tests. cc: @danmosemsft FYI: @morganbr +20892 area-Serialization Remove XmlSchemaProviderAttribute.cs from Microsoft.XmlSerializer.Generator Remove Https://github.com/dotnet/corefx/blob/master/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj#L111 https://github.com/dotnet/corefx/blob/master/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj#L132 https://github.com/dotnet/corefx/blob/master/src/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj#L135 from the project +20893 area-System.Net Test failure: System.Net.Sockets.Tests.DualModeConnectAsync / DualModeConnectAsync_Static_DnsEndPointToHost_Helper ## Types of failures ``` Timed out while waiting for connection Expected: True Actual: False at System.Net.Sockets.Tests.DualModeConnectAsync.DualModeConnectAsync_Static_DnsEndPointToHost_Helper(IPAddress listenOn, Boolean dualModeServer) in /root/corefx-1213655/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 610 ``` ## History of failures Day | Build | OS -- | -- | -- 2017/9/14 | 20170914.01 | OSX10.12 2017/10/29 | 20171029.01 | OSX10.12 2017/12/11 | 20171211.05 | Fedora25 3/31 | 20180331.05 | OSX10.12 # Original report https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release_prtest/4505/consoleFull#18036880242d31e50d-1517-49fc-92b3-2ca637122019 ``` System.Net.Sockets.Tests.DualModeConnectAsync.DualModeConnectAsync_Static_DnsEndPointToHost_Helper(listenOn: 127.0.0.1, dualModeServer: False) [FAIL] 19:07:03 Timed out while waiting for connection 19:07:03 Expected: True 19:07:03 Actual: False 19:07:03 Stack Trace: 19:07:03 Using as the test runtime folder. 19:07:03 ls: /cores: No such file or directory 19:07:03 Running tests... Start time: 19:07:03 19:07:03 Commands: 19:07:03 python DumplingHelper.py install_dumpling 19:07:03 __TIMESTAMP=`python DumplingHelper.py get_timestamp` 19:07:03 chmod +x /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/testhost/netcoreapp-OSX-Release-x64//dotnet 19:07:03 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/testhost/netcoreapp-OSX-Release-x64//dotnet xunit.console.netcore.exe System.Text.Encoding.CodePages.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonosxtests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing 19:07:03 python DumplingHelper.py collect_dump $\ `pwd` System.Text.Encoding.CodePages.Tests /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/runtime/netcoreapp-OSX-Release-x64/,/Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/AnyOS.AnyCPU.Release/System.Text.Encoding.CodePages.Tests/netstandard/ 19:07:03 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/bin/AnyOS.AnyCPU.Release/System.Text.Encoding.CodePages.Tests/netstandard /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Text.Encoding.CodePages/tests 19:07:03 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(654,0): at System.Net.Sockets.Tests.DualModeConnectAsync.DualModeConnectAsync_Static_DnsEndPointToHost_Helper(IPAddress listenOn, Boolean dualModeServer) 19:07:03 System.Net.Sockets.Tests.DualModeConnectionlessSendTo.SendToV4IPEndPointToV4Host_Success [FAIL] 19:07:03 System.TimeoutException : The operation has timed out. 19:07:03 Stack Trace: 19:07:03 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1151,0): at System.Net.Sockets.Tests.DualModeConnectionlessSendTo.DualModeSendTo_IPEndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 19:07:03 System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV6IPEndPointToV6Host_Success [FAIL] 19:07:03 System.TimeoutException : The operation has timed out. 19:07:03 Stack Trace: 19:07:03 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release_prtest/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs(1252,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) 19:07:03 Using as the test runtime fold ``` +20894 area-System.Drawing Add ColorTranslator tests +20897 area-System.Drawing [porting] System.Drawing.Common uses its own InvalidEnumArgumentException, breaking tests "The following test passes with netfx: ```cs [Theory] [InlineData(StringTrimming.None - 1)] [InlineData(StringTrimming.EllipsisPath + 1)] public void Trimming_SetInvalid_ThrowsInvalidEnumArgumentException(StringTrimming trimming) { var format = new StringFormat(); Assert.Throws(""value"", () => format.Trimming = trimming); } ```" +20898 area-System.Drawing Add StringFormat and CharacterRange tests Fixes #20897 +20899 area-System.Runtime Add Environment.UserName() equivalent to dotnet core Hello, I've been trying to find a way to get the current session user using dot net core 1.1 in a console project but in vain. Microsoft docs doesn't contain any information about this or it's me missing something. Is this possible in dot net core? +20901 area-System.Drawing Add System.Drawing.Region tests A 50-50 mix of tests cleanup up from Mono, and tests I wrote myself @mellinoe +20902 area-Meta APIs out of scope in CoreFX - 'CoreFXExtensions' repo? Over time we have identified bunch of useful APIs, which we think don't belong into CoreFX repo, because they are more advanced, or just don't fit. Here's the list to keep track of them with common explanation & list which can be reused later if/when we (or community) creates something like CoreFXExtensions * [**PowerCollections**](http://powercollections.codeplex.com/) from CodePlex - Originally created by Wintellect for .NET team. The license should be compatible to grab it. It is generally useful API set * **Graphs** APIs - #17403. Options/alternatives: [MSAGL](https://github.com/Microsoft/automatic-graph-layout) - see https://github.com/dotnet/corefx/issues/17403#issuecomment-307589692, or CodePlex [QuickGraph](http://quickgraph.codeplex.com/) * **ParallelExtensionExtras** (@stephentoub mentioned it in #699) * **Sorting algorithms for nearly-sorted inputs** (see #2252) PLEASE: If you want to argue that something is in scope of CoreFX, vs. not, please take the discussion into specific issue. I will delete such replies from this thread. +20903 area-System.Data Additional API for DbProviderFactories in .NET Core # Latest Proposal Copied from latest API approval: https://github.com/dotnet/corefx/issues/20903#issuecomment-342605350 ```C# public static class DbProviderFactories { // exiting members public static DbProviderFactory GetFactory(string providerInvariantName); public static DbProviderFactory GetFactory(DataRow providerRow); public static DbProviderFactory GetFactory(DbConnection connection); public static DataTable GetFactoryClasses(); // new members /// /// Registers a provider factory using the assembly qualified name of the factory and an /// invariant name /// public static void RegisterFactory(string providerInvariantName, string factoryTypeAssemblyQualifiedName); /// /// Registers a provider factory using the provider factory type and an invariant name /// public static void RegisterFactory(string providerInvariantName, Type factoryType); /// /// Extension method to register a provider factory using the provider factory instance and /// an invariant name /// public static void RegisterFactory(string providerInvariantName, DbProviderFactory factory); /// /// Returns the provider factory instance if one is registered for the given invariant name /// public static bool TryGetFactory(string providerInvariantName, out DbProviderFactory factory); /// /// Removes the provider factory registration for the given invariant name /// public static bool UnregisterFactory(string providerInvariantName); /// /// Returns the invariant names for all the factories registered /// public static IEnumerable GetProviderInvariantNames(); } ``` # Original proposal Issue #4571 is about porting the existing surface of `DbProviderFactories` into .NET Core. This new issue is specifically about new API that needs to be added in .NET Core that does not (yet) exist in .NET Framework. `DbProviderFactories` on .NET Framework can only be initialized from .config files, and in order to make the API usable without .config files the new API is needed. The proposal by @FransBouma can be found in https://github.com/dotnet/standard/issues/356#issuecomment-307552750 and is repeated below: I've refactored the code a bit, the new API now looks like: ```cs public static void ConfigureFactory(Type providerFactoryClass); public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName); public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName, string name, string description); public static void ConfigureFactory(DbConnection connection); public static void ConfigureFactory(DbConnection connection, string providerInvariantName); public static void ConfigureFactory(DbConnection connection, string providerInvariantName, string name, string description); ``` Two new overloads are added. They'll use the fallback code for the providerInvariantName, as it is also present in netfx' auto-init code: it will use the namespace of the type. I've added this to avoid people making a typo in the name as for most factories I know (I don't really know of a dbproviderfactory where this isn't the case) the invariant name is equal to the namespace. ### Method usage / purpose ```cs public static void ConfigureFactory(Type providerFactoryClass) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name equal to the namespace of the specified type. It will leave name and description empty. **Purpose:** This method is meant to be the easiest way to register a factory. Most (if not all) ADO.NET providers use as invariant name the namespace of the factory type. ```cs public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name specified in providerInvariantName. It will leave name and description empty. **Purpose:**: This method can be used to register a factory for the ADO.NET providers which don't use the namespace as the invariant name, and it can also be used to register a different factory type under a well-known invariant name, e.g. in the case of a wrapping factory for ADO.NET profiling. ```cs public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName, string name, string description) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name specified in providerInvariantName and will fill in the name and description values for the factory. **Purpose:**: This method is equal to `ConfigureFactory(type, string)` and can be used to fill in the additional two columns in the factory table if a user requires that. ```cs public static void ConfigureFactory(DbConnection connection) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name equal to the namespace of the factory instance's type. It will leave name and description empty. **Purpose:** This method is meant to be the easiest way to register a factory if the user doesn't know the factory type but does know the connection type. As DbProviderFactory registration was mainly hidden for most users it can very well be they're not familiar with the factory types, so this method and its overloads make it easier for them to register a factory. Most (if not all) ADO.NET providers use as invariant name the namespace of the factory type. ```cs public static void ConfigureFactory(DbConnection connection, string providerInvariantName) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name specified. It will leave name and description empty. **Purpose:**: This method can be used to register a factory for the ADO.NET providers which don't use the namespace as the invariant name, and it can also be used to register a different factory type under a well-known invariant name, e.g. in the case of a wrapping factory for ADO.NET profiling. ```cs public static void ConfigureFactory(DbConnection connection, string providerInvariantName, string name, string description) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name specified in providerInvariantName and will fill in the name and description values for the factory. **Purpose:**: This method is equal to `ConfigureFactory(DbConnection, string)` and can be used to fill in the additional two columns in the factory table if a user requires that. +20904 area-Serialization Fixing BinaryFormatter member names of parent members to align with netfx @ericstj @stephentoub @danmosemsft @morganbr This is the fix to the offline discussion. After refactoring BinaryFormatter code it seems that we got rid of parent type names. This is now fixed and produces the same results as netfx. ---------- Issue description: Serializing the object “new System.ComponentModel.BindingList(new[] { 32, 45 });” creates the following results: Netfx: ``` ����������� [1]���ISystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089���System.ComponentModel.BindingList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]��� addNewPosraiseListChangedEventsraiseItemChangedEventsallowNew allowEdit allowRemoveuserSetAllowNewCollection`1+items������� System.Int32[][1]����� ��� ���[1]��� ���-��� ``` NetCoreApp: ``` ����������� [1]���ISystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089���System.ComponentModel.BindingList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]��� addNewPosraiseListChangedEventsraiseItemChangedEventsallowNew allowEdit allowRemoveuserSetAllowNewitems������� System.Int32[][1]����� ��� ���[1]��� ���-��� ``` The difference is that the serialized name of the items field of the parent class Collection isn’t serialized correctly. Core <-> Core and NetFx <-> Netfx serialization works with the respective blobs. ------------- cc @danmosemsft @morganbr +20906 area-System.Drawing Add Matrix tests Again, 50-50 mono cleanup and handwritten tests +20910 area-Serialization Not able to install System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml both in a project I have visual studio 17. My project is targeting net461 and netstandard1.6 I want to use System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml. but I am facing issues. Steps to reproduce: 1. Install nuget System.Runtime.Serialization.Xml - 4.3.0 2. Now install nuget System.Runtime.Serialization.Json - 4.3.0 But when I am trying step 2 it uninstall System.Runtime.Serialization.Xml . How to use both nuget in code. ![capture](https://user-images.githubusercontent.com/16220515/27013697-b38d5698-4f06-11e7-8f78-1bde87a1e1d1.JPG) +20911 area-Infrastructure Publish regular alpha versions of vNext product "Goal: Provide great experience for early adopters to consume our vNext product. We should have regular (monthly-ish) alpha releases of vNext product. The idea is that every month we would publish last good build of tools, libraries, runtime, etc. that work ""well"" together. If something go south, we can delist it. Motivation: Consuming myget daily feed is painful -- too many builds, changing too often. It's sometimes hard to find working combo. It is likely mostly about perception. What is the right technical solution? 1. Special myget feed with just the alpha monthly-ish bits 2. Regular alpha-previews on nuget 3. Special download of the tools bundle (CLI) on a web site cc @benaadams @NickCraver cc @weshaggard @mellinoe @ericstj " +20913 area-System.Drawing Add Bitmap tests 50-50 cleanup from Mono and handwritten tests +20914 area-System.ComponentModel Move InvalidEnumArgumentException to System.ComponentModel.Primitives Lays the groundwork for #20897 Note: is System.ComponentModel.Primitives the right place to put this? I thought about System.ComponentModel, but that library looks like its for interfaces only. The reason why this is necessary is because we need use InvalidEnumArgumentException in System.Drawing.Common. This exception resides in System.ComponentModel.TypeConverter right now, but we want System.ComponentModel.TypeConverter to depend on System.Drawing.Common in the future. +20918 area-System.Data "Tests under: System.Data.Common.Tests failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Data.Tests.Common.DataAdapterTest/FillLoadOption_Invalid` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1) at System.SR.Format(String resourceFormat, Object p1, Object p2) at System.Data.Common.ADP.InvalidEnumerationValue(Type type, Int32 value) at System.Data.Common.ADP.InvalidLoadOption(LoadOption value) at System.Data.Common.DataAdapter.set_FillLoadOption(LoadOption value) at System.Data.Tests.Common.DataAdapterTest.FillLoadOption_Invalid() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.Data.Common.Tests/analysis/xunit/System.Data.Tests.Common.DataAdapterTest~2FFillLoadOption_Invalid +20919 area-System.Diagnostics "Test: System.Diagnostics.TraceSourceTests.DefaultTraceListenerClassTests/Fail_LogFileDirectoryNotFound failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.TraceSourceTests.DefaultTraceListenerClassTests/Fail_LogFileDirectoryNotFound` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1) at System.Diagnostics.DefaultTraceListener.WriteToLogFile(String message) at System.Diagnostics.DefaultTraceListener.Write(String message, Boolean useLogFile) at System.Diagnostics.DefaultTraceListener.WriteLine(String message, Boolean useLogFile) at System.Diagnostics.DefaultTraceListener.WriteLine(String message) at System.Diagnostics.TraceSourceTests.DefaultTraceListenerClassTests.TestDefaultTraceListener.WriteLine(String message) at System.Diagnostics.DefaultTraceListener.WriteAssert(String stackTrace, String message, String detailMessage) at System.Diagnostics.DefaultTraceListener.Fail(String message, String detailMessage) at System.Diagnostics.DefaultTraceListener.Fail(String message) at System.Diagnostics.TraceSourceTests.DefaultTraceListenerClassTests.Fail_LogFileDirectoryNotFound() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.Diagnostics.TraceSource.Tests/analysis/xunit/System.Diagnostics.TraceSourceTests.DefaultTraceListenerClassTests~2FFail_LogFileDirectoryNotFound +20920 area-System.Diagnostics "Test: System.Diagnostics.TraceSourceTests.TraceClassTests/TraceTest02 failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.TraceSourceTests.TraceClassTests/TraceTest02` has failed. Assert.Equal() Failure\r ? (pos 88)\r Expected: ···be indented.\\r\ Fail: This failure is reported with a det···\r Actual: ···be indented.\\r\ This failure is reported with a detailed···\r ? (pos 88) Stack Trace: at System.Diagnostics.TraceSourceTests.TraceClassTests.TraceTest02() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.Diagnostics.TraceSource.Tests/analysis/xunit/System.Diagnostics.TraceSourceTests.TraceClassTests~2FTraceTest02 +20921 area-System.Drawing "Tests under: System.Drawing.Primitives.Tests.ColorTests failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Drawing.Primitives.Tests.ColorTests/FromArgb_InvalidAlpha(alpha: -1)` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object[] args) at System.SR.Format(String resourceFormat, Object[] args) at System.Drawing.Color.CheckByte(Int32 value, String name) at System.Drawing.Color.FromArgb(Int32 alpha, Color baseColor) at System.Drawing.Primitives.Tests.ColorTests.<>c__DisplayClass20_0.b__0() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.Drawing.Primitives.Tests/analysis/xunit/System.Drawing.Primitives.Tests.ColorTests~2FFromArgb_InvalidAlpha(alpha:%20-1) +20922 area-System.IO "Tests under: System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles failed with ""System.ArgumentNullException""" "Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles/ZipArchiveEntry_InvalidUpdate(zipname: \""LZMA.zip\"")` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.InvalidDataException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.IO.Compression.ZipArchiveEntry.IsOpenable(Boolean needToUncompress, Boolean needToLoadIntoMemory, String& message) at System.IO.Compression.ZipArchiveEntry.ThrowIfNotOpenable(Boolean needToUncompress, Boolean needToLoadIntoMemory) at System.IO.Compression.ZipArchiveEntry.OpenInUpdateMode() at System.IO.Compression.ZipArchiveEntry.Open() at System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles.<>c__DisplayClass3_0.b__0() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.IO.Compression.Tests/analysis/xunit/System.IO.Compression.Tests.zip_InvalidParametersAndStrangeFiles~2FZipArchiveEntry_InvalidUpdate(zipname:%20%5C%22LZMA.zip%5C%22)" +20923 area-System.IO "Test: System.IO.Compression.Tests.ZipFileTest_Invalid/UnsupportedCompressionRoutine(zipName: \""LZMA.zip\"", throwsOnOpen: True) failed with ""System.ArgumentNullException""" "Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.ZipFileTest_Invalid/UnsupportedCompressionRoutine(zipName: \""LZMA.zip\"", throwsOnOpen: True)` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.InvalidDataException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.IO.Compression.ZipArchiveEntry.IsOpenable(Boolean needToUncompress, Boolean needToLoadIntoMemory, String& message) at System.IO.Compression.ZipArchiveEntry.ThrowIfNotOpenable(Boolean needToUncompress, Boolean needToLoadIntoMemory) at System.IO.Compression.ZipArchiveEntry.OpenInReadMode(Boolean checkOpenable) at System.IO.Compression.ZipArchiveEntry.Open() at System.IO.Compression.Tests.ZipFileTest_Invalid.<>c__DisplayClass3_0.b__0() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.IO.Compression.ZipFile.Tests/analysis/xunit/System.IO.Compression.Tests.ZipFileTest_Invalid~2FUnsupportedCompressionRoutine(zipName:%20%5C%22LZMA.zip%5C%22,%20throwsOnOpen:%20True)" +20924 area-System.IO "Tests under: System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests/GetVolumeLabel_Returns_CorrectLabel` has failed. Assert.Throws() Failure\r Expected: typeof(System.UnauthorizedAccessException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.IO.Win32Marshal.GetExceptionForWin32Error(Int32 errorCode, String path) at System.IO.Error.GetExceptionForWin32DriveError(Int32 errorCode, String driveName) at System.IO.DriveInfo.get_VolumeLabel() at System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.g__DoDriveCheck7_0() at System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.<>c.b__7_2() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.IO.FileSystem.DriveInfo.Tests/analysis/xunit/System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests~2FGetVolumeLabel_Returns_CorrectLabel +20925 area-System.Linq "Tests under: System.Dynamic.Tests.DynamicObjectTests failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Dynamic.Tests.DynamicObjectTests/ConvertBuiltInExplicit` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object[] args) at System.SR.Format(String resourceFormat, Object[] args) at System.Linq.Expressions.Strings.DynamicObjectResultNotAssignable(Object p0, Object p1, Object p2, Object p3) at System.Dynamic.DynamicObject.MetaDynamic.BuildCallMethodWithResult[TBinder](MethodInfo method, TBinder binder, Expression[] args, DynamicMetaObject fallbackResult, Fallback`1 fallbackInvoke) at System.Dynamic.DynamicObject.MetaDynamic.CallMethodWithResult[TBinder](MethodInfo method, TBinder binder, Expression[] args, Fallback`1 fallback, Fallback`1 fallbackInvoke) at System.Dynamic.DynamicObject.MetaDynamic.CallMethodWithResult[TBinder](MethodInfo method, TBinder binder, Expression[] args, Fallback`1 fallback) at System.Dynamic.DynamicObject.MetaDynamic.BindConvert(ConvertBinder binder) at System.Dynamic.ConvertBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at System.Dynamic.Tests.DynamicObjectTests.ConvertBuiltInExplicit() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.Linq.Expressions.Tests/analysis/xunit/System.Dynamic.Tests.DynamicObjectTests~2FConvertBuiltInExplicit +20926 area-System.Net "Tests under: System.Net.Http.Tests.AuthenticationHeaderValueTest failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Tests.AuthenticationHeaderValueTest/Add_BadValues_Throws` has failed. Assert.Throws() Failure\r Expected: typeof(System.FormatException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(IFormatProvider provider, String format, Object arg0) at System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index) at System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value) at System.Net.Http.Headers.HttpHeaders.Add(String name, String value) at System.Net.Http.Tests.AuthenticationHeaderValueTest.<>c__DisplayClass7_0.b__0() Build : Master - 20170612.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170612.01/workItem/System.Net.Http.Unit.Tests/analysis/xunit/System.Net.Http.Tests.AuthenticationHeaderValueTest~2FAdd_BadValues_Throws +20927 area-System.ComponentModel Add tests for enum attributes in System.ComponentModel.Primitives ~I moved some code to ComponentModel.Primitives and saw that theres ~70% coverage. So here are some tests to bring it up to 100%.~ I've now split up this PR as it was v large. Together, they increase CC to 100% +20930 area-System.ComponentModel Add System.ComponentModel string attribute tests Similar code for each test class, but subtly different as some throw NREs and others don't in certain situations Extracted from #20927 +20931 area-System.ComponentModel Add System.ComponentModel.EventBasedAsync tests This increases CC to 100% in the library +20932 area-System.ComponentModel [netfx compat] CompareAttribute throws InvalidOperationException for multi-cased properties "The following code example passes with netfx: ```cs [Fact] public static void Validate_LowerAndUpperPropertyName_ThrowsInvalidOperationException() { CompareAttribute attribute = new CompareAttribute(nameof(CompareObject.comparepropertycased)); Assert.Equal(""'CurrentProperty' and 'comparepropertycased' do not match."", attribute.GetValidationResult(""b"", s_context).ErrorMessage); Assert.Equal(ValidationResult.Success, attribute.GetValidationResult(null, s_context)); } ``` In netcoreapp, this throws an InvalidOperationException: ``` System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests.Validate_LowerAndUpperPropertyName_Success [FAIL ] System.InvalidOperationException : Sequence contains more than one matching element Stack Trace: at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) at System.ComponentModel.DataAnnotations.CompareAttribute.GetDisplayNameForProperty(Type containerType, S tring propertyName) at System.ComponentModel.DataAnnotations.CompareAttribute.IsValid(Object value, ValidationContext validat ionContext) at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, Validation Context validationContext) at System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests.Validate_LowerAndUpperPropertyName_S uccess() ```" +20933 area-System.ComponentModel Cleanup and increase coverage of DisplayFormatAttribute Before #if netcoreapp was always false, so these tests never ran +20934 area-System.ComponentModel Add System.ComponentModel.Annotations tests +20937 area-Meta "Clarify guidance around ""Squash and Merge""" Fixes Issue https://github.com/dotnet/corefx/issues/20841 +20938 area-System.Runtime Bring SerializationFieldInfo back to BinaryFormatter in corefx We initially left SerializationFieldInfo out of corefx as it wasn't necessary given previous goals around BinaryFormatter; but now it is. I've ported the code almost as-is from desktop, with some minor style tweaks, and a few necessary changes, e.g. using FieldInfo instead of RuntimeFieldInfo, as the latter isn't accessible. I've not done anything to minimize allocations / improve perf, etc., as that can be done in the future, and the results of all of this gets cached. Changing this required regenerating a few of the serialization blobs in the tests. I also added a test for a case we didn't previously cover, a [Serializable] type derived from a non-serializable type. cc: @ViktorHofer, @morganbr, @danmosemsft +20942 area-Infrastructure Unused code, incompatible with Roslyn > 2.0.0 rc Roslyn made a breaking change sometime between rc and beta2, which flags unused fields(https://github.com/dotnet/roslyn/pull/14628/files) and events as warnings. CoreFx will be unable to update to a newer version of Roslyn until these warnings are fixed / suppressed. ``` System.Diagnostics.Tracing.cs(120,64): error CS0067: The event 'EventListener.EventSourceCreated' is never used [E:\gh\chcosta\corefx\src\System.Diagnostics.Tracing\ref\System.Diagnostics.Tracing.csproj] System.Diagnostics.Tracing.cs(121,58): error CS0067: The event 'EventListener.EventWritten' is never used [E:\gh\chcosta\corefx\src\System.Diagnostics.Tracing\ref\System.Diagnostics.Tracing.csproj] System.Runtime.Loader.cs(35,108): error CS0067: The event 'AssemblyLoadContext.Resolving' is never used [E:\gh\chcosta\corefx\src\System.Runtime.Loader\ref\System.Runtime.Loader.csproj] System.Runtime.Loader.cs(36,50): error CS0067: The event 'AssemblyLoadContext.Unloading' is never used [E:\gh\chcosta\corefx\src\System.Runtime.Loader\ref\System.Runtime.Loader.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(111,24): error CS0169: The field 'XmlSerializationReader._positiveIntegerID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(33,27): error CS0169: The field 'XmlSerializationReader._types' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(34,27): error CS0169: The field 'XmlSerializationReader._typesReverse' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(79,24): error CS0169: The field 'XmlSerializationReader._base64ID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(42,22): error CS0169: The field 'XmlSerializationReader._isReturnValue' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(37,27): error CS0169: The field 'XmlSerializationReader._referencedTargets' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(93,24): error CS0169: The field 'XmlSerializationReader._gMonthID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(92,24): error CS0169: The field 'XmlSerializationReader._gDayID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(84,24): error CS0169: The field 'XmlSerializationReader._unsignedLongID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(116,24): error CS0169: The field 'XmlSerializationReader._timeSpanID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(103,24): error CS0169: The field 'XmlSerializationReader._NCNameID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(82,24): error CS0169: The field 'XmlSerializationReader._unsignedShortID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(90,24): error CS0169: The field 'XmlSerializationReader._ENTITYID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(95,24): error CS0169: The field 'XmlSerializationReader._gYearID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(76,24): error CS0169: The field 'XmlSerializationReader._timeID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(74,24): error CS0169: The field 'XmlSerializationReader._qnameID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(105,24): error CS0169: The field 'XmlSerializationReader._NMTOKENSID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(85,24): error CS0169: The field 'XmlSerializationReader._oldDecimalID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(118,29): error CS0649: Field 'XmlSerializationReader.s_checkDeserializeAdvances' is never assigned to, and will always have its default value false [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(80,24): error CS0169: The field 'XmlSerializationReader._unsignedByteID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(97,24): error CS0169: The field 'XmlSerializationReader._IDID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(32,27): error CS0169: The field 'XmlSerializationReader._callbacks' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(100,24): error CS0169: The field 'XmlSerializationReader._integerID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(73,24): error CS0169: The field 'XmlSerializationReader._dateTimeID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(104,24): error CS0169: The field 'XmlSerializationReader._NMTOKENID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(40,27): error CS0169: The field 'XmlSerializationReader._collectionFixups' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(108,24): error CS0169: The field 'XmlSerializationReader._nonNegativeIntegerID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(68,24): error CS0169: The field 'XmlSerializationReader._shortID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(38,27): error CS0169: The field 'XmlSerializationReader._targetsWithoutIds' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(96,24): error CS0169: The field 'XmlSerializationReader._gYearMonthID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(94,24): error CS0169: The field 'XmlSerializationReader._gMonthDayID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(107,24): error CS0169: The field 'XmlSerializationReader._nonPositiveIntegerID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(70,24): error CS0169: The field 'XmlSerializationReader._floatID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(102,24): error CS0169: The field 'XmlSerializationReader._nameID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(88,24): error CS0169: The field 'XmlSerializationReader._anyURIID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(109,24): error CS0169: The field 'XmlSerializationReader._normalizedStringID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(86,24): error CS0169: The field 'XmlSerializationReader._oldTimeInstantID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(106,24): error CS0169: The field 'XmlSerializationReader._negativeIntegerID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(75,24): error CS0169: The field 'XmlSerializationReader._dateID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(112,24): error CS0169: The field 'XmlSerializationReader._tokenID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(65,24): error CS0169: The field 'XmlSerializationReader._stringID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(114,24): error CS0169: The field 'XmlSerializationReader._charID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(36,27): error CS0169: The field 'XmlSerializationReader._targets' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(91,24): error CS0169: The field 'XmlSerializationReader._ENTITIESID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(98,24): error CS0169: The field 'XmlSerializationReader._IDREFID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(81,24): error CS0169: The field 'XmlSerializationReader._byteID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(78,24): error CS0169: The field 'XmlSerializationReader._base64BinaryID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(71,24): error CS0169: The field 'XmlSerializationReader._doubleID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(67,24): error CS0169: The field 'XmlSerializationReader._booleanID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(110,24): error CS0169: The field 'XmlSerializationReader._NOTATIONID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(115,24): error CS0169: The field 'XmlSerializationReader._guidID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(66,24): error CS0169: The field 'XmlSerializationReader._intID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(99,24): error CS0169: The field 'XmlSerializationReader._IDREFSID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(83,24): error CS0169: The field 'XmlSerializationReader._unsignedIntID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(89,24): error CS0169: The field 'XmlSerializationReader._durationID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(39,27): error CS0169: The field 'XmlSerializationReader._fixups' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(101,24): error CS0169: The field 'XmlSerializationReader._languageID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(69,24): error CS0169: The field 'XmlSerializationReader._longID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(72,24): error CS0169: The field 'XmlSerializationReader._decimalID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(77,24): error CS0169: The field 'XmlSerializationReader._hexBinaryID' is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(43,22): error CS0414: The field 'XmlSerializationReader._decodeName' is assigned but its value is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] 179:2>E:\gh\chcosta\corefx\src\System.Private.Xml\src\System\Xml\Serialization\XmlSerializationReader.cs(31,29): error CS0414: The field 'XmlSerializationReader._d' is assigned but its value is never used [E:\gh\chcosta\corefx\src\Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj] ``` /cc @weshaggard @ellismg +20943 area-System.Memory Adding Span IndexOf performance test cc @shiftylogic, @KrzysztofCwalina, @benaadams Please note the (expected?) performance degradation when hardware acceleration is disabled for SpanIndexOfCharAsBytes. Can we improve the performance for \ IndexOf when IsHardwareAcceleration == false? Shouldn't it still match the performance of SpanIndexOfChar? Why is it ~2x worst? **Is this expected since we have twice as many bytes to search through compared to the number of chars?** ![image](https://user-images.githubusercontent.com/6527137/27054036-64316c6a-4f74-11e7-8768-5464a8c33477.png) ![image](https://user-images.githubusercontent.com/6527137/27054037-66171b88-4f74-11e7-9d70-3d503483d89a.png) ![image](https://user-images.githubusercontent.com/6527137/27054034-5f1b743c-4f74-11e7-907c-77264f55be8a.png) +20944 area-System.Globalization Accent and Special Characters "I have a problem with this code ```c# loggerFactory.AddConsole(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseWelcomePage(""/welcome""); app.Run(async (context) => { //var message = Configuration[""Greeting""]; await context.Response.WriteAsync(""¿Cómo estas?""); }); ``` And when render the output show me this text ¿Cómo estas?" +20945 area-System.Collections Fix regressions in corefx tests on ILC. This was caused by the changes to reflection policy for serialized types. A few internal comparer objects that used to be reflection-blocked now became unblocked and prone to throwing MME's. +20946 area-Infrastructure Add 3 new queues in Core 2.1.0 CI part of the task: https://github.com/dotnet/core-eng/issues/861 +20947 area-System.Net Make Cookie.InternalSetName public for uapaot This is a workaround till the required methods from System.Net.Primitives are made public Internal Bug: 449560 +20948 area-System.Diagnostics Process start tests are not running for UAP System.Diagnostics.Process.Tests is doing remote invoke to create another process and execute some code remotely. This is not going to work in UAP F5 scenario without some changes. In UAP we are going to handle the remote invoking by activating the runner Appx as background task and not by creating a process. The test need either to be permanently disabled for UAP scenario or has to be re-written for UAP to manually calls process create or do something else. Talk to me to get more details. Note, we didn't enable the remote execution using the background task yet but we are going to enable it soon when upgrading Helix runs to use RS2+ images. remote invoking is currently not working anyway. +20952 area-Serialization Remove several attribute files from SGEN Remove several unused attribute files from SGEN. Fix #20892 @shmao @mconnew @zhenlan +20953 area-System.Runtime Fix failure in GCNotificationTests Assert added in 8058ec1b0c3eecf9b9835951c46aeefd601831ec exposed that this test was always using the same values of timeout and approach. +20954 area-System.Net TCP Socket.Dispose does not abort Connect on Linux in NetStandard2.0 "Consider the following code that implements a timeout on a TCP `Connect` call: ``` tcpClient = new TcpClient(ipAddress.AddressFamily); using (cancellationToken.Register(() => tcpClient?.Client?.Dispose())) { try { #if NETSTANDARD1_3 await tcpClient.ConnectAsync(ipAddress, cs.Port).ConfigureAwait(false); #else tcpClient.Connect(ipAddress, cs.Port); #endif } catch (ObjectDisposedException ex) when (cancellationToken.IsCancellationRequested) { throw new MySqlException(""Connect Timeout expired."", ex); } } ``` If this TCP socket connects to an address that does not respond, we expect the socket to get shutdown when the Cancellation Token fires with `cancellationToken.Register(() => tcpClient?.Client?.Dispose())` - `NETSTANDARD2.0` Linux Ubuntu 14.04 x64: **does not work, times out after ~2 minutes (OS default?)** - `NETSTANDARD2.0` Linux Ubuntu 17.04 x64: **does not work, times out after ~2 minutes (OS default?)** - `NETSTANDARD2.0` Windows 10 x64: **works, times out when cancellation token fires** - `NETSTANDARD1.3` Linux Ubuntu 14.04: **works, times out when cancellation token fires** (calls ConnectAsync though as Connect is not available in NETSTANDARD1.3 - `NET462` Windows 10 x64: **works, times out when cancellation token fires** Here's our test cases: - [Failing test case NETSTANDARD2.0 Ubuntu 14.04 x64](https://travis-ci.org/mysql-net/MySqlConnector/builds/240652076#L1033-L1037) - [Passing test case NETSTANDARD2.0 Windows 10 x64](https://ci.appveyor.com/project/mysqlnet/mysqlconnector/build/1.0.622#L377) (lines 377-413; other tests failed but this Connect test passed) - [Passing test case NETSTANDARD1.3 Ubuntu 14.04 x64](https://travis-ci.org/mysql-net/MySqlConnector/builds/238541828) - [Passing test case NET462](https://ci.appveyor.com/project/mysqlnet/mysqlconnector/build/1.0.598)" +20955 area-System.Runtime "Desktop: System.Tests.GCExtendedTests.GCNotificationTests failed with ""Xunit.Sdk.AllException""" Failed test: System.Tests.GCExtendedTests.GCNotificationTests Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/84/consoleText ~~~ System.Tests.GCExtendedTests.GCNotificationTests(approach: True, timeout: -1) [FAIL] Assert.All() Failure: 2 out of 2 items in the collection did not pass. [1]: Xunit.Sdk.TrueException: Field marshaling is not supported by RemoteInvoke: timeout Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\BooleanAsserts.cs:line 90 at System.Diagnostics.RemoteExecutorTestBase.<>c.b__20_0(FieldInfo fi) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 275 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\CollectionAsserts.cs:line 31 [0]: Xunit.Sdk.TrueException: Field marshaling is not supported by RemoteInvoke: approach Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\BooleanAsserts.cs:line 90 at System.Diagnostics.RemoteExecutorTestBase.<>c.b__20_0(FieldInfo fi) in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs:line 275 at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\CollectionAsserts.cs:line 31 Stack Trace: D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(273,0): at System.Diagnostics.RemoteExecutorTestBase.GetMethodInfo(Delegate d) D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(48,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) D:\j\workspace\outerloop_net---903ddde6\src\System.Runtime\tests\System\GCTests.cs(491,0): at System.Tests.GCExtendedTests.GCNotificationTests(Boolean approach, Int32 timeout) ~~~ +20956 area-Infrastructure Adding CI pipeline for UAP F5 tests **DO NOT MERGE YET** CC: @weshaggard @mmitche @danmosemsft @karajas FYI: @joshfree @safern Adding CI pipeline for UAP F5 tests. Do not merge this until we have a green run as we don't want to have a failing CI job. +20961 area-Meta Dump runtime info "For many distros, the only testing we do is in our full test runs. We are trusting that the correct images are used in those runs: if a mistake creeps in, we could end up not testing on the platform we expect. As a simple sanity check, this adds a ""test"" that dumps relevant information to the console so we can inspect the logs and verify the platform." +20965 area-System.Net System.Net.Http.Functional.Tests.HttpClientHandlerTest Fail on ARM/Linux I get this error with release/2.0.0 and master branch running with RPi3/Ubuntu16.04 ``` xUnit.net console test runner (32-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Net.Http.Functional.Tests Discovered: System.Net.Http.Functional.Tests Starting: System.Net.Http.Functional.Tests System.Net.Http.Functional.Tests.HttpClientHandlerTest.Dispose_DisposingHandlerCancelsActiveOperationsWithoutResponses [FAIL] System.Threading.Tasks.TaskCanceledException : A task was canceled. ``` works with x64/Linux. I get some timeout related answers when I search `A task was canceled` message, but doesn't seem to be the timeout issue for this case. Could someone help me what `Dispose_DisposingHandlerCancelsActiveOperationsWithoutResponses` is trying to test and what may be the problem? Could it be my Linux environmental problem? +20966 area-System.Net "Tests under: System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest/MaxAutomaticRedirections_SetNegativeValue_ThrowsArgumentOutOfRangeException` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Net.Http.WinHttpHandler.set_MaxAutomaticRedirections(Int32 value) at System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest.<>c__DisplayClass29_0.b__0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Net.Http.WinHttpHandler.Unit.Tests/analysis/xunit/System.Net.Http.WinHttpHandlerUnitTests.WinHttpHandlerTest~2FMaxAutomaticRedirections_SetNegativeValue_ThrowsArgumentOutOfRangeException +20967 area-System.Net "Test: System.Net.Mail.Tests.LoggingTest/EventSource_ExistsWithCorrectId failed with ""System.Resources.MissingManifestResourceException""" "Opened on behalf of @Jiayili1 The test `System.Net.Mail.Tests.LoggingTest/EventSource_ExistsWithCorrectId` has failed. System.Resources.MissingManifestResourceException : Unable to load resources for resource file \""FxResources.System.Net.Mail.SR\"" in package \""5cd54353-3ed7-4a6e-a72f-db349f28867c\"". Stack Trace: at System.Resources.ResourceManager.GetString(String name, CultureInfo culture) at System.Diagnostics.Tracing.ManifestBuilder.WriteMessageAttrib(StringBuilder stringBuilder, String elementName, String name, String value) at System.Diagnostics.Tracing.ManifestBuilder.StartEvent(String eventName, EventAttribute eventAttribute) at System.Diagnostics.Tracing.EventSource.CreateManifestAndDescriptors(Type eventSourceType, String eventSourceDllName, EventSource source, EventManifestOptions flags) at System.Diagnostics.Tracing.EventSource.GenerateManifest(Type eventSourceType, String assemblyPathToIncludeInManifest, EventManifestOptions flags) at System.Net.Mail.Tests.LoggingTest.EventSource_ExistsWithCorrectId() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Net.Mail.Functional.Tests/analysis/xunit/System.Net.Mail.Tests.LoggingTest~2FEventSource_ExistsWithCorrectId" +20969 area-System.Net "Tests under: System.Net.Mail.Tests.MailAddressTest failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Net.Mail.Tests.MailAddressTest/Address_NoClosingQuote` has failed. Assert.Throws() Failure\r Expected: typeof(System.FormatException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Net.Mail.QuotedStringFormatReader.ReadReverseUnQuoted(String data, Int32 index, Boolean permitUnicode, Boolean expectCommaDelimiter) at System.Net.Mail.MailAddressParser.ParseDisplayName(String data, Int32& index, Boolean expectMultipleAddresses) at System.Net.Mail.MailAddressParser.ParseAddress(String data, Boolean expectMultipleAddresses, Int32& index) at System.Net.Mail.MailAddressParser.ParseAddress(String data) at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding) at System.Net.Mail.MailAddress..ctor(String address) at System.Net.Mail.Tests.MailAddressTest.<>c.b__10_0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Net.Mail.Functional.Tests/analysis/xunit/System.Net.Mail.Tests.MailAddressTest~2FAddress_NoClosingQuote +20970 area-System.Net "Tests under: System.Net.Mail.Tests.MailAddressParserTest failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Net.Mail.Tests.MailAddressParserTest/ParseAddress_WithHangingAngleBracket_ShouldThrow` has failed. Assert.Throws() Failure\r Expected: typeof(System.FormatException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Net.Mail.MailAddressParser.ParseLocalPart(String data, Int32& index, Boolean expectAngleBracket, Boolean expectMultipleAddresses) at System.Net.Mail.MailAddressParser.ParseAddress(String data, Boolean expectMultipleAddresses, Int32& index) at System.Net.Mail.MailAddressParser.ParseAddress(String data) at System.Net.Mail.Tests.MailAddressParserTest.<>c.b__73_0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Net.Mail.Unit.Tests/analysis/xunit/System.Net.Mail.Tests.MailAddressParserTest~2FParseAddress_WithHangingAngleBracket_ShouldThrow +20972 area-System.Net "Test: System.Net.Tests.ServicePointManagerTest/InvalidArguments_Throw failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.ServicePointManagerTest/InvalidArguments_Throw` has failed. Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Net.ServicePointManager.ProxyAddressIfNecessary(Uri& address, IWebProxy proxy) at System.Net.ServicePointManager.FindServicePoint(Uri address, IWebProxy proxy) at System.Net.ServicePointManager.FindServicePoint(String uriString, IWebProxy proxy) at System.Net.Tests.ServicePointManagerTest.<>c.b__12_10() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Net.ServicePoint.Tests/analysis/xunit/System.Net.Tests.ServicePointManagerTest~2FInvalidArguments_Throw +20973 area-System.Net "Tests under: System.Net.WebSockets.Tests.WebSocketTests failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Tests.WebSocketTests/CreateClientBuffer_InvalidReceiveValues(size: -1)` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentOutOfRangeException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Net.WebSockets.WebSocket.CreateClientBuffer(Int32 receiveBufferSize, Int32 sendBufferSize) at System.Net.WebSockets.Tests.WebSocketTests.<>c__DisplayClass3_0.b__0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Net.WebSockets.Tests/analysis/xunit/System.Net.WebSockets.Tests.WebSocketTests~2FCreateClientBuffer_InvalidReceiveValues(size:%20-1) +20977 area-System.Runtime Test failure: System.IO.CreateSafeFileHandleTests/FromStorageFile_SurfaceIOException Opened on behalf of @Jiayili1 The test `System.IO.CreateSafeFileHandleTests/FromStorageFile_SurfaceIOException` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IOException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.IO.Win32Marshal.GetExceptionForWin32Error(Int32 errorCode, String path) at System.IO.WindowsRuntimeStorageExtensions.CreateSafeFileHandle(IStorageFile windowsRuntimeFile, FileAccess access, FileShare share, FileOptions options) at System.IO.CreateSafeFileHandleTests.<>c__DisplayClass21_0.b__0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Runtime.WindowsRuntime.Tests/analysis/xunit/System.IO.CreateSafeFileHandleTests~2FFromStorageFile_SurfaceIOException +20978 area-System.Security "Test: System.Security.Cryptography.Csp.Tests.CspParametersTests/SetFlags_ValidatesInput failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Csp.Tests.CspParametersTests/SetFlags_ValidatesInput` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0) at System.SR.Format(String resourceFormat, Object p1) at System.Security.Cryptography.CspParameters.set_Flags(CspProviderFlags value) at System.Security.Cryptography.Csp.Tests.CspParametersTests.<>c__DisplayClass3_0.b__0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Security.Cryptography.Csp.Tests/analysis/xunit/System.Security.Cryptography.Csp.Tests.CspParametersTests~2FSetFlags_ValidatesInput +20979 area-System.Security "Test: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/CryptographicAttributeObjectMismatch failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/CryptographicAttributeObjectMismatch` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object arg0, Object arg1) at System.SR.Format(String resourceFormat, Object p1, Object p2) at System.Security.Cryptography.CryptographicAttributeObject..ctor(Oid oid, AsnEncodedDataCollection values) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.<>c__DisplayClass32_0.b__0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Security.Cryptography.Pkcs.Tests/analysis/xunit/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests~2FCryptographicAttributeObjectMismatch +20980 area-System.Security "Test: System.Security.Cryptography.Xml.Tests.EncryptedXmlTest/DecryptData_CipherReference_InvalidUri failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Xml.Tests.EncryptedXmlTest/DecryptData_CipherReference_InvalidUri` has failed. Assert.Throws() Failure\r Expected: typeof(System.Security.Cryptography.CryptographicException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: format Stack Trace: at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.Security.Cryptography.CryptographicException..ctor(String format, String insert) at System.Security.Cryptography.Xml.EncryptedXml.GetCipherValue(CipherData cipherData) at System.Security.Cryptography.Xml.EncryptedXml.DecryptData(EncryptedData encryptedData, SymmetricAlgorithm symmetricAlgorithm) at System.Security.Cryptography.Xml.Tests.EncryptedXmlTest.<>c__DisplayClass48_0.b__0() Build : Master - 20170613.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170613.01/workItem/System.Security.Cryptography.Xml.Tests/analysis/xunit/System.Security.Cryptography.Xml.Tests.EncryptedXmlTest~2FDecryptData_CipherReference_InvalidUri +20984 area-System.Runtime Add a helper to BinaryFormatterHelpers to check that exceptions throw a PNSE on deserialization This could be considered an experiment as I'm not sure what the reaction of y'all will be to it. I've limited it to Win32Exception right now, but the idea is to use this helper in other places +20988 area-Serialization Building manual System facade for serialization support Required for the types mentioned in System.forwards.cs. Relates to https://github.com/dotnet/corefx/pull/20870 cc @danmosemsft @ericstj @jkotas @morganbr +20990 area-System.Reflection System.Reflection.Emit.ILGeneration fails to install on a vanilla UWP app I'm trying to use WampSharp that uses ILGeneration as a dependency, but the whole thing fails to install because System.Reflection.Emit.ILGeneration, reported to Code-Sharp/WampSharp#195. The error can be reproduced installing only ILGeneration in a vanilla UWP app (output bellow). I'm using VS 2015 Professional, on Windows 10 Anniversary build 1607
``` PM> Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -Pre Restoring packages for 'App2'. Restoring packages for c:\users\rafael.caldeira\documents\visual studio 2015\Projects\App2\App2\project.json... Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.IO.IsolatedStorage (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.IO.FileSystem (>= 4.3.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Net.Primitives (>= 4.3.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Xml.XmlSerializer (>= 4.0.10) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.Serialization.Json (>= 4.0.1) -> System.Private.DataContractSerialization (>= 4.1.0) -> runtime.any.System.Private.DataContractSerialization (>= 4.1.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.IO.IsolatedStorage (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.IO.FileSystem (>= 4.3.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Net.Primitives (>= 4.3.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Xml.XmlSerializer (>= 4.0.10) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.Serialization.Json (>= 4.0.1) -> System.Private.DataContractSerialization (>= 4.1.0) -> runtime.aot.System.Private.DataContractSerialization (>= 4.1.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.IO.IsolatedStorage (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.IO.FileSystem (>= 4.3.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Net.Primitives (>= 4.3.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Xml.XmlSerializer (>= 4.0.10) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.Serialization.Json (>= 4.0.1) -> System.Private.DataContractSerialization (>= 4.1.0) -> runtime.any.System.Private.DataContractSerialization (>= 4.1.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.IO.IsolatedStorage (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.IO.FileSystem (>= 4.3.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Net.Primitives (>= 4.3.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Xml.XmlSerializer (>= 4.0.10) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.Serialization.Json (>= 4.0.1) -> System.Private.DataContractSerialization (>= 4.1.0) -> runtime.aot.System.Private.DataContractSerialization (>= 4.1.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.IO.IsolatedStorage (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.IO.FileSystem (>= 4.3.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Net.Primitives (>= 4.3.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Xml.XmlSerializer (>= 4.0.10) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.Serialization.Json (>= 4.0.1) -> System.Private.DataContractSerialization (>= 4.1.0) -> runtime.any.System.Private.DataContractSerialization (>= 4.1.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.NETCore (>= 5.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.IO.IsolatedStorage (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.IO.FileSystem (>= 4.3.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Net.Primitives (>= 4.3.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> Microsoft.Win32.Primitives (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> Microsoft.Win32.Primitives (>= 4.0.0) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Xml.XmlSerializer (>= 4.0.10) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.Serialization.Json (>= 4.0.1) -> System.Private.DataContractSerialization (>= 4.1.0) -> runtime.aot.System.Private.DataContractSerialization (>= 4.1.0) -> System.Xml.ReaderWriter (>= 4.0.10) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Duplex (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Http (>= 4.0.10) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.NetTcp (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Primitives (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Runtime.WindowsRuntime from 4.3.0 to 4.0.10 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.ServiceModel.Security (>= 4.0.0) -> System.Private.ServiceModel (>= 4.0.0) -> System.Net.Primitives (>= 4.0.10) -> System.Private.Networking (>= 4.0.0) -> System.IO.FileSystem (>= 4.0.0) -> runtime.win.System.IO.FileSystem (>= 4.3.0) -> System.Runtime.WindowsRuntime (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Runtime.WindowsRuntime (>= 4.0.10) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Sockets (>= 4.0.0) -> runtime.win.System.Net.Sockets (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Requests (>= 4.0.10) -> System.Net.Primitives (>= 4.0.10) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Detected package downgrade: System.Diagnostics.Contracts from 4.3.0 to 4.0.0 App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Net.Http.Rtc (>= 4.0.0) -> System.Net.Http (>= 4.0.0) -> System.Net.Primitives (>= 4.0.0) -> runtime.win.System.Net.Primitives (>= 4.3.0) -> System.Diagnostics.Tracing (>= 4.3.0) -> runtime.aot.System.Diagnostics.Tracing (>= 4.3.0) -> System.Reflection.Extensions (>= 4.3.0) -> runtime.aot.System.Reflection.Extensions (>= 4.3.0) -> System.Reflection.TypeExtensions (>= 4.3.0) -> System.Diagnostics.Contracts (>= 4.3.0) App2 (>= 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (>= 5.1.0) -> System.Diagnostics.Contracts (>= 4.0.0) Install-Package : System.Reflection.Emit.ILGeneration 4.3.0 provides a compile-time reference assembly for System.Reflection.Emit.ILGeneration on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm-aot. At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Install-Package : Some packages are not compatible with UAP,Version=v10.0 (win10-arm-aot). At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Install-Package : System.Reflection.Emit.ILGeneration 4.3.0 provides a compile-time reference assembly for System.Reflection.Emit.ILGeneration on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64-aot. At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Install-Package : Some packages are not compatible with UAP,Version=v10.0 (win10-x64-aot). At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Install-Package : System.Reflection.Emit.ILGeneration 4.3.0 provides a compile-time reference assembly for System.Reflection.Emit.ILGeneration on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86-aot. At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Install-Package : Some packages are not compatible with UAP,Version=v10.0 (win10-x86-aot). At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Package restore failed for 'App2'. Install-Package : Package restore failed. Rolling back package changes for 'App2'. At line:1 char:1 + Install-Package System.Reflection.Emit.ILGeneration -Version 4.3.0 -P ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand PM> ```
+20991 area-Microsoft.CSharp Step 1 of fix for disabled System.Dynamic.Runtime test on ILC (https://github.com/dotnet/corefx/issues/19895) Make Microsoft.CSharp use the the real HasMetadataDefinitionAs() api if it exists on the running framework. Since this library is built on netstandard, it still needs to fall back on its emulation on older frameworks. Actual removal of the ActiveIssue will have to wait until the new System.Runtime reference assembly propagates to the Project N tree and the new api becomes reflectable. +20992 area-System.Net Disable tests in System.Net.Requests for UAP Disable tests related to RemoteExecutor which still doesn't work in UAP. This PR results in a clean UAP test run for System.Net.Requests. Contributes to #20136 +20994 area-System.Net CoreFX is more restrictive parsing if-match header values than the equivalent with the FullCLR. "One of our customers, nmbradford, is moving to PowerShell 6 from Windows PowerShell and has hit an incompatibility between CoreFX and FullCLR's handling of if-match header values. For example, the following Works on Windows PowerShell: ``` $headers = @{} $headers.Add(""if-match"",""12345"") Invoke-WebRequest -Uri ""http://httpbin.org/headers"" -Headers $headers ``` On PowerShell 6 with the CoreFx, the same results in a FormatException thrown by `System.Net.Http.Headers.HttpHeaderParser.ParseValue`. His expectation is the header value should work on PowerShell/CoreFx as it does with Windows PowerShell/FullCLR. Instead, he needs to special case this header for it to work. See https://github.com/PowerShell/PowerShell/issues/2895 for the related PowerShell issue." +20997 area-Infrastructure Helix-based CI runs are not flagging test failures Example: https://ci3.dot.net/job/dotnet_corefx/job/master/job/portable-windows-Config_Debug+OuterLoop_false_prtest/773/ This job is labeled a success, but there are many test failures if you look deeper into the results. @MattGal @karajas @weshaggard +21001 area-System.Net Disable tests in System.Net.Mail for UAP Disable tests related to RemoteExecutor which still doesn't work in UAP. This PR results in a clean UAP test run for System.Net.Mail. Contributes to #20131 +21003 area-System.Net Adjust WebSocketException serialization test Disable test related to serialization. The test works in netcoreapp and uap test runs. Not sure why it fails in uapaot. Is serialization supported for this type in the first place? This PR results in a clean UAPAOT test run for System.Net.WebSockets. Contributes to #20132 +21008 area-System.Net [UWP] DummyTcpServer not working in TLS/SSL in System.Net.Security tests "I noticed that this test in System.Net.Security, TransportContextTest.cs, hangs at the `AuthenticateAsClientAsync` call but only in UAP test run and not UAPAOT test run. ```c# [Fact] public async Task TransportContext_ConnectToServerWithSsl_GetExpectedChannelBindings() { using (var testServer = new DummyTcpServer( new IPEndPoint(IPAddress.Loopback, 0), EncryptionPolicy.RequireEncryption)) using (var client = new TcpClient()) { await client.ConnectAsync(testServer.RemoteEndPoint.Address, testServer.RemoteEndPoint.Port); using (var sslStream = new SslStream(client.GetStream(), false, AllowAnyServerCertificate, null, EncryptionPolicy.RequireEncryption)) { await sslStream.AuthenticateAsClientAsync(""localhost"", null, SslProtocols.Tls, false); // HANGS TransportContext context = sslStream.TransportContext; CheckTransportContext(context); } } } ``` If I don't use the DummyTcpServer but instead just connect to ""corefx-net.cloudapp.net:443"" then it works fine. So I think the problem is specific to using a loopback TLS/SSL server within the UAP tests which use app-container. This is currently blocking a lot of tests in System.Net.Security for UAP test runs." +21009 area-Infrastructure Port commit 2b13699 to enable new distros for Core 2.0 The porting is tracked with task: https://github.com/dotnet/core-eng/issues/931 The commit being ported is for task below: https://github.com/dotnet/corefx/pull/20878 +21011 area-System.Drawing Understand disallowed PInvoke in System.Drawing.Primitives System.Drawing.Primitives uses `user32.dll!GetSysColor`, which seems to be disallowed in OneCore. Our Windows Nano runs do not fail, but we should still understand whether we need to avoid calling this function on Windows Nano. If we can't call the function, we should simply fall back to the cross-platform implementation, which has a hard-coded color table. +21014 area-Infrastructure Enable UAP Remote Execution for all tests This change to enable remote execution of all corefx tests in UAP. Because the remote execution code for UAP is using WinRT APIs and to avoid forcing adding UAP configuration to all test projects, we factor the remote execution code into its own test library (called TestHelper) which is cross compiled. +21015 area-System.Drawing Add System.Drawing.Printing tests (#20711) Copy tests from mono and add few from myself. +21017 area-Infrastructure Scan for libraries with no ref in the ref package and no incoming dependencies in the runtime package @ericstj pointed out it would be useful to improve our build to detect such things, by comparing the runtime and designtime dependency graphs. They can exist as a legacy of an earlier runtime dependency Example: System.Security.AccessControl is in this category for UAP. corefx\bin\packages\Debug\reports\runtime.win10-x64.Microsoft.Private.CoreFx.UAP-runtime.dgml shows no incoming nodes for it (including none from netstandard.dll), and it has no ref in the design time package. (I'll take it out) +21018 area-System.Net Socket multicast will hang in UAP mode with any interfaces The receiveTask will hang forever in UAP run: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs#L131, no matter what interface is set for MulticastOption. +21019 area-System.Net Disable test in System.Net.Sockets for UAP Now System.Net.Sockets.Functional tests will run clean in both innerloop and outerloop for UAP. I added the [Fact] label back for MulticastInterface_Set_AnyInterface_Succeeds(). The test will never run with only [Outerloop] label. See details here: https://github.com/dotnet/corefx/commit/6257f450653381af91ca5ff097dab837426e91ef#commitcomment-22500352 Contributes to: #20135 +21021 area-System.Collections Disable ComparersGenericTests.EqualityComparer_SerializationRoundtrip test for uap This test fails in Uap as well, with this System.Collections.Tests will be clean cc: @danmosemsft FYI: @morganbr +21022 area-Infrastructure Remove UWP (ILC & F5) and Desktop test runs on release/2.0.0 corefx runs @MattGal commented on [Thu Jun 08 2017](https://github.com/dotnet/core-eng/issues/904) Per @danmosemsft we don't actually use or pay attention to test results coming from the release/2.0.0 corefx branch. Disabling these runs, especially the ILC ones, will save huge amounts of time in test execution. This should just be a quick PR to the build pipelines folder but will require a ship room email as it's a PR to a release branch. +21023 area-System.Security System.Security.AccessControl should not need a UAP configuration After pending PR this will no longer be in UAP package, so this configuration is harmless, still need to remove UAP configuration and add this to project ``` false ``` then remove the pinvoke baseline for that library. Essentially: https://github.com/dotnet/corefx/compare/master...danmosemsft:cleanup.accesscontrol?expand=1 +21024 area-System.Runtime Factor out RtlGetVersion for UWP UWP does not use RtlGetVersion. Pull RtlGetVersion call out into non-UWP code in System.Runtime.InteropServices.RuntimeInformation then the pinvoke baseline can be removed. +21025 area-System.IO Change UWP calls to CreateFile etc to use brokered API (eg CreateFile2) These libraries need to change to CreateFile2 in their UAP configurations, and delete their pinvoke baseline file. System.IO.Pipes System.IO.Ports System.IO.FileSystem.Watcher ~~System.Diagnostics.FileVersionInfo~~ +21026 area-System.IO Change MMF to use FromApp API's Change System.IO.MemoryMappedFiles to have a uap configuration that uses the FromApp versions of these API's then delete the pinvoke baseline file there. ``` kernel32.dll!CreateFileMappingW kernel32.dll!MapViewOfFile kernel32.dll!OpenFileMappingW kernel32.dll!VirtualAlloc ``` +21028 area-Meta Update Pinvoke baselines to match latest modernapis.xml entries "Depends on picking up https://github.com/dotnet/buildtools/pull/1567. * Remove all baseline entries made redundant by new allow list entries * Rename all baseline files to be uap/uapaot specific (except where uap config does not yet exist) and in 2 cases netcoreapp/netstandard specific (for some OneCore violations) * Remove S.Security.AccessControl from the UWP package as it was not needed (and has violations) Some unexpected violations remain, I""ll follow up with Windows. " +21029 area-System.IO Fix System.IO.Packaging.Tests in uap to create files in temp directory using FileCleanupTestBase helper class System.IO.Packaging.Tests where failing in uap due to UnauthorizedAccessException because it was trying to create files inside the test folder and since they run inside appx it is not authorized. I refactored the tests to use FileCleanupTestBase helper class as a base class to create and remove files. This fixes all test failures in Uap for this test project. cc: @danmosemsft @JeremyKuhne @joperezr +21030 area-System.Data TransactionScope does not rollback changes after exception "I was testing `TransactionScope` in .NET Core 2.0 console app and find out that it does not rollback changes even if there is an exception. My test [application](https://github.com/dopare/SqlClientTest/blob/master/SqlClientTest/Program.cs) for repro. Part of source code using `TransactionScope` ```C# static void InsertUsingTransactionScope() { try { using (var tr = new TransactionScope()) using (var conn = new SqlConnection(ConnectionString)) { conn.Open(); // conn.EnlistTransaction(Transaction.Current); // System.NotSupportedException: Specified method is not supported. for (int i = 0; i < 3; i++) { var command = new SqlCommand(""INSERT INTO Records VALUES(@name)"", conn); command.Parameters.Add(new SqlParameter(""@name"", ""Inserted by transaction scope #"" + i)); var result = command.ExecuteNonQuery(); if (i == 1) throw new Exception(""InsertUsingTransactionScope""); } tr.Complete(); } } catch (Exception ex) { Console.WriteLine(ex); } } ``` Console Output: ``` System.Exception: InsertUsingBeginTransaction at SqlClientTest.Program.InsertUsingBeginTransaction() in C:\Users\Dopare\Source\Repos\SqlClientTest\Program.cs:line 51 System.Exception: InsertUsingTransactionScope at SqlClientTest.Program.InsertUsingTransactionScope() in C:\Users\Dopare\Source\Repos\SqlClientTest\Program.cs:line 84 ====== Records ====== Id: 3 Name: Inserted by transaction scope #0 Id: 4 Name: Inserted by transaction scope #1 ```" +21031 area-System.ComponentModel Fix netfx compat bug for cased properties in CompareAttribute @lajones Extacted from #20934 Fixes #20932 +21032 area-Infrastructure external/dir.props: remove Portable condition This PR checks what platforms fail when removing the PortableBuild condition in external/dir.props +21033 area-System.Diagnostics Add some System.Diagnostics.Debug tests I was wondering, why are lots of these attributes in coreclr - they are unused there. Should we move them to corefx? +21034 area-System.Net Test: System.Net.Http.Functional.Tests.HttpClientHandlerTest/PostAsync_CallMethod_StreamContent failed with System.Net.Http.WinHttpException : The handle is invalid Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/PostAsync_CallMethod_StreamContent(remoteServer: https://corefx-net.cloudapp.net/VerifyUpload.ashx, content: StreamContentWithSyncAsyncCo...` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__66.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170614.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170614.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FPostAsync_CallMethod_StreamContent(remoteServer:%20https:~2F~2Fcorefx-net.cloudapp.net~2FVerifyUpload.ashx,%20content:%20StreamContentWithSyncAsyncCo... +21035 area-System.Runtime System.Runtime.Serialization.Formatters.Tests sometimes hang in ret on Win7 "No test result generated under ""System.Runtime.Serialization.Formatters.Tests "" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170614.01/workItem/System.Runtime.Serialization.Formatters.Tests/wilogs ~~~ 2017-06-14 04:36:15,831: INFO: proc(54): run_and_log_output: Output: xUnit.net console test runner (64-bit .NET Core) 2017-06-14 04:36:15,831: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-06-14 04:36:15,831: INFO: proc(54): run_and_log_output: Output: 2017-06-14 04:36:15,892: INFO: proc(54): run_and_log_output: Output: Discovering: System.Runtime.Serialization.Formatters.Tests 2017-06-14 04:36:16,033: INFO: proc(54): run_and_log_output: Output: Discovered: System.Runtime.Serialization.Formatters.Tests 2017-06-14 04:36:16,095: INFO: proc(54): run_and_log_output: Output: Starting: System.Runtime.Serialization.Formatters.Tests ~~~" +21037 area-System.Net [Mac] Tests failed: System.Net.Internals.SocketExceptionFactory+ExtendedSocketException ## Type of failures Note: Might be related to #23364 (UWP) for some overlapping tests. ### Operation timed out Tests returning only this error: Test Name | # | Test Type -- | -- | -- SendRecv_Stream_TCP_AlternateBufferAndBufferList | 6x | System.Net.Sockets.Tests: SendReceiveApm / SendReceiveSpanSyncForceNonBlocking / SendReceiveMemoryNativeTask BufferZeroCountThenNormal_ZeroCountIgnored | 3x | System.Net.Sockets.Tests.SendPacketsAsync SendTimesOut_Throws | 3x | System.Net.Sockets.Tests.TimeoutTest SendPacketsElement_FileLargeOffset_Throws | 2x | System.Net.Sockets.Tests.SendPacketsAsync ClientAsyncAuthenticate_MismatchProtocols_Fails | 2x | System.Net.Security.Tests.ClientAsyncAuthenticateTest BeginConnectV6IPAddressToV6Host_Success | 2x | System.Net.Sockets.Tests.DualModeBeginConnectToIPAddress ConnectV6IPEndPointToV6Host_Success | 2x | System.Net.Sockets.Tests.DualModeConnectToIPEndPoint NormalBufferRange_Success | 1x | System.Net.Sockets.Tests.SendPacketsAsync BeginConnectV6IPEndPointToV6Host_Success | 1x | System.Net.Sockets.Tests.DualModeBeginConnectToIPEndPoint ClientAsyncAuthenticate_AllServerVsIndividualClientSupportedProtocols_Success | 1x | System.Net.Security.Tests.ClientAsyncAuthenticateTest BufferZeroCount_Ignored | 1x | System.Net.Sockets.Tests.SendPacketsAsync ConnectV6IPEndPointToDualHost_Success | 1x | System.Net.Sockets.Tests.DualModeConnectToIPEndPoint SendPacketsElement_MissingFile_Throws | 1x | System.Net.Sockets.Tests.SendPacketsAsync SendFile_Synchronous | 1x | System.Net.Sockets.Tests.SendFileTest SendPacketsElement_FileMultiPart_Success | 1x | System.Net.Sockets.Tests.SendPacketsAsync ConnectV6IPAddressToDualHost_Success | 1x | System.Net.Sockets.Tests.DualModeConnectToIPAddress Accept_Success | 1x | System.Net.Sockets.Tests.AcceptApm EmptyBuffer_Ignored | 1x | System.Net.Sockets.Tests.SendPacketsAsync NormalBuffer_Success | 1x | System.Net.Sockets.Tests.SendPacketsAsync SendPacketsElement_EmptyFileName_Throws | 1x | System.Net.Sockets.Tests.SendPacketsAsync Connect_Success | 1x | System.Net.Sockets.Tests.ConnectEap SendPacketsElement_FilePart_Success | 1x | System.Net.Sockets.Tests.SendPacketsAsync BeginConnectV6IPAddressToDualHost_Success | 1x | System.Net.Sockets.Tests.DualModeBeginConnectToIPAddress Test `BufferZeroCountThenNormal_ZeroCountIgnored`: ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Operation timed out [::1]:50462 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 4589 at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 825 at System.Net.Sockets.Tests.SendPacketsAsync.BufferZeroCountThenNormal_ZeroCountIgnored(SocketImplementationType type) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/SendPacketsAsync.cs:line 211 ``` ### Connection refused Tests returning only this error: Test Name | # | Test Type -- | -- | -- GetContext_InvalidRequest_DoesNotGetContext | 14x | GetContext_InvalidRequest_DoesNotGetContext StatusDescription_GetWithCustomStatusCode_ReturnsExpected | 6x | System.Net.Tests.HttpListenerResponseHeadersTests KeepAlive_GetProperty_ReturnsExpected | 2x | System.Net.Tests.HttpListenerRequestTests ContentEncoding_GetProperty_ReturnsExpected | 2x | System.Net.Tests.HttpListenerRequestTests Cookies_SetAndSend_ClientReceivesExpectedHeaders | 2x | System.Net.Tests.HttpListenerResponseCookiesTests DualModeConnect_LoopbackDnsToHost_Helper | 1x | System.Net.Sockets.Tests.DualModeConnectToHostString DualModeConnect_DnsEndPointToHost_Helper | 1x | System.Net.Sockets.Tests.DualModeConnectToDnsEndPoint DualModeConnect_IPAddressListToHost_Success | 1x | System.Net.Sockets.Tests.DualModeConnectToIPAddressArray AppendHeader_NullOrEmptyName_ThrowsArgumentNullException | 1x | System.Net.Tests.HttpListenerResponseHeadersTests Cookies_SetInHeader_ClientReceivesExpectedHeaders | 1x | System.Net.Tests.HttpListenerResponseCookiesTests IsWebSocketRequest_GetProperty_ReturnsExpected | 1x | System.Net.Tests.HttpListenerRequestTests Redirect_Invoke_SetsRedirectionProperties | 1x | System.Net.Tests.HttpListenerResponseTests SetCookie_ValidCookie_AddsCookieToCollection | 1x | System.Net.Tests.HttpListenerResponseCookiesTests StatusDescription_SetCustom_Success | 1x | System.Net.Tests.HttpListenerResponseHeadersTests StatusDescription_SetNull_ThrowsArgumentNullException | 1x | System.Net.Tests.HttpListenerResponseHeadersTests ContentLength64_NotSetAndGetAfterSendingHeaders_ReturnValueDependsOnStatusCode | 1x | System.Net.Tests.HttpListenerResponseHeadersTests CopyFrom_AllValues_ReturnsClone | 1x | System.Net.Tests.HttpListenerResponseTests TransportContext_GetChannelBinding_ReturnsExpected | 1x | System.Net.Tests.HttpListenerRequestTests Test `StatusDescription_GetWithCustomStatusCode_ReturnsExpected`: ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Connection refused 127.0.0.1:1300 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 4589 at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 825 at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 930 --- End of stack trace from previous location where exception was thrown --- at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 940 at System.Net.Sockets.Socket.Connect(String host, Int32 port) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 889 at System.Net.Tests.HttpListenerFactory.GetConnectedSocket() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.HttpListener/tests/HttpListenerFactory.cs:line 156 at System.Net.Tests.HttpListenerResponseTestBase..ctor() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.HttpListener/tests/HttpListenerResponseTests.cs:line 21 at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions) in /Users/buildagent/agent/_work/153/s/src/mscorlib/src/System/RtType.cs:line 4840 ``` ## History of failures Day | Build | OS | Error message | Test -- | -- | -- | -- | -- 5/3 | 20170503.04 | OSX10.12 | Connection refused | ContentEncoding_GetProperty_ReturnsExpected 6/27 | 20170627.03 | OSX10.12 | Operation timed out | ClientAsyncAuthenticate_AllServerVsIndividualClientSupportedProtocols_Success 7/7 | 20170707.02 | OSX10.12 | Operation timed out | BufferZeroCountThenNormal_ZeroCountIgnored 7/18 | 20170718.02 | OSX10.13 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 7/20 | 20170720.01 | OSX10.12 | Connection refused | SetCookie_ValidCookie_AddsCookieToCollection 7/21 | 20170721.01 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 8/2 | 20170802.01 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 8/18 | 20170818.02 | OSX10.12 | Connection refused | ContentEncoding_GetProperty_ReturnsExpected 8/23 | 20170823.03 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 8/25 | 20170825.02 | OSX10.12 | Connection refused | Cookies_SetInHeader_ClientReceivesExpectedHeaders 8/31 | 20170831.01 | OSX10.12 | Connection refused | StatusDescription_GetWithCustomStatusCode_ReturnsExpected 8/31 | 20170831.01 | OSX10.12 | Connection refused | IsWebSocketRequest_GetProperty_ReturnsExpected 9/2 | 20170902.02 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 9/4 | 20170904.02 | OSX10.12 | Operation timed out | SendRecv_Stream_TCP_AlternateBufferAndBufferList 9/8 | 20170908.02 | OSX10.12 | Connection refused | KeepAlive_GetProperty_ReturnsExpected 9/9 | 20170909.01 | OSX10.12 | Operation timed out | SendPacketsElement_FileLargeOffset_Throws 9/13 | 20170913.01 | OSX10.12 | Connection refused | StatusDescription_SetNull_ThrowsArgumentNullException 9/18 | 20170918.03 | OSX10.12 | Operation timed out | BufferZeroCount_Ignored 9/20 | 20170920.02 | OSX10.12 | Operation timed out | ConnectV6IPEndPointToDualHost_Success 9/20 | 20170920.03 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 9/21 | 20170921.01 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 9/22 | 20170922.01 | OSX10.12 | Operation timed out (exception assert) | SendPacketsElement_MissingFile_Throws 9/25 | 20170925.03 | OSX10.12 | Operation timed out (exception assert) | ClientAsyncAuthenticate_MismatchProtocols_Fails 9/26 | 20170926.05 | OSX10.12 | Connection refused | Cookies_SetAndSend_ClientReceivesExpectedHeaders 10/10 | 20171010.03 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 10/11 | 20171011.02 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 10/13 | 20171013.01 | OSX10.12 | Operation timed out | BufferZeroCountThenNormal_ZeroCountIgnored 10/20 | 20171020.01 | OSX10.12 | Connection refused | StatusDescription_SetCustom_Success 10/20 | 20171020.02 | OSX10.12 | Connection refused | StatusDescription_GetWithCustomStatusCode_ReturnsExpected 10/21 | 20171021.02 | OSX10.12 | Connection refused | Redirect_Invoke_SetsRedirectionProperties 10/25 | 20171025.05 | OSX10.12 | Connection refused | StatusDescription_GetWithCustomStatusCode_ReturnsExpected 10/28 | 20171028.03 | OSX10.12 | Connection refused | StatusDescription_GetWithCustomStatusCode_ReturnsExpected 10/29 | 20171029.01 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 10/30 | 20171030.01 | OSX10.12 | Operation timed out | SendRecv_Stream_TCP_AlternateBufferAndBufferList 10/30 | 20171030.01 | OSX10.12 | Connection refused | AppendHeader_NullOrEmptyName_ThrowsArgumentNullException 10/30 | 20171030.02 | OSX10.12 | Connection refused | DualModeConnect_IPAddressListToHost_Success 10/30 | 20171030.02 | OSX10.12 | Operation timed out | BufferZeroCountThenNormal_ZeroCountIgnored 10/31 | 20171031.01 | OSX10.12 | Operation timed out | BeginConnectV6IPAddressToV6Host_Success 11/1 | 20171101.03 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 11/2 | 20171102.03 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext 11/29 | 20171129.01 | OSX10.12 | Connection refused | DualModeConnect_DnsEndPointToHost_Helper 12/7 | 20171207.02 | OSX10.12 | Operation timed out | SendTimesOut_Throws 12/10 | 20171210.01 | OSX10.12 | Operation timed out | SendPacketsElement_FileLargeOffset_Throws 12/10 | 20171210.03 | OSX10.12 | Connection refused | KeepAlive_GetProperty_ReturnsExpected 12/10 | 20171210.03 | OSX10.12 | Operation timed out | BeginConnectV6IPEndPointToV6Host_Success 12/13 | 20171213.10 | OSX10.12 | Connection refused | DualModeConnect_LoopbackDnsToHost_Helper 12/24 | 20171224.01 | OSX10.12 | Operation timed out | SendRecv_Stream_TCP_AlternateBufferAndBufferList - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171224.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendReceiveApm~2FSendRecv_Stream_TCP_AlternateBufferAndBufferList(listenAt:%20::1)) 12/24 | 20171224.01 | OSX10.12 | Operation timed out | SendTimesOut_Throws - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171224.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.TimeoutTest~2FSendTimesOut_Throws(forceNonBlocking:%20False)) 1/4 | CI | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext - [link](https://mc.dot.net/#/user/dotnet-maestro-bot/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/d0572e85122eaf8e180c52e196997ab96195e26c/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.InvalidClientRequestTests~2FGetContext_InvalidRequest_DoesNotGetContext) 1/6 | 20180106.01 | OSX10.12 | Operation timed out | SendFile_Synchronous - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180106.01/workItem/System.Net.Sockets.Tests/wilogs) 1/8 | 20180108.02 | OSX10.12 | Connection refused | GetContext_InvalidRequest_DoesNotGetContext - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180108.02/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.InvalidClientRequestTests~2FGetContext_InvalidRequest_DoesNotGetContext) 1/10 | 20180110.03 | OSX10.12 | Operation timed out | SendRecv_Stream_TCP_AlternateBufferAndBufferList - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180110.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendReceiveMemoryNativeTask~2FSendRecv_Stream_TCP_AlternateBufferAndBufferList(listenAt:%20::1)) 1/10 | 20180110.03 | OSX10.12 | Operation timed out | SendPacketsElement_FileMultiPart_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180110.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendPacketsAsync~2FSendPacketsElement_FileMultiPart_Success(type:%20APM)) 1/11 | 20180111.02 | OSX10.12 | Connection refused | ContentLength64_NotSetAndGetAfterSendingHeaders_ReturnValueDependsOnStatusCode - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180111.02/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerResponseHeadersTests~2FContentLength64_NotSetAndGetAfterSendingHeaders_ReturnValueDependsOnStatusCode(statusCode:%20204,%20expectedContentLength64:%200,%20expectedNumberOfBytes:%20114)) 1/19 | 20180119.02 | OSX10.12 | Operation timed out | ConnectV6IPAddressToDualHost_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180119.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectToIPAddress~2FConnectV6IPAddressToDualHost_Success) 1/19 | 20180119.04 | OSX10.12 | Operation timed out | Accept_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180119.04/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.AcceptApm~2FAccept_Success(listenAt:%20::1)) 1/19 | 20180119.06 | OSX10.12 | Operation timed out | EmptyBuffer_Ignored - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180119.06/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendPacketsAsync~2FEmptyBuffer_Ignored(type:%20APM)) 1/21 | 20180121.01 | OSX10.12 | Operation timed out | NormalBuffer_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180121.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendPacketsAsync~2FNormalBuffer_Success(type:%20APM)) 1/23 | 20180123.04 | OSX10.12 | Operation timed out | SendPacketsElement_EmptyFileName_Throws - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180123.04/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendPacketsAsync~2FSendPacketsElement_EmptyFileName_Throws(type:%20APM)) 1/24 | 20180124.06 | OSX10.12 | Connection refused | StatusDescription_GetWithCustomStatusCode_ReturnsExpected - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180124.06/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerResponseHeadersTests~2FStatusDescription_GetWithCustomStatusCode_ReturnsExpected(statusCode:%20407,%20expectedDescription:%20%5C%22Proxy%20Authentication%20Required%5C%22)) 1/26 | 20180126.07 | OSX10.12 | Operation timed out | ClientAsyncAuthenticate_MismatchProtocols_Fails - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180126.07/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ClientAsyncAuthenticateTest~2FClientAsyncAuthenticate_MismatchProtocols_Fails(serverProtocol:%20Tls11,%20clientProtocol:%20Tls12,%20expectedException:%20typeof(System.IO.IOException))) 2/2 | 20180202.05 | OSX10.12 | Connection refused | CopyFrom_AllValues_ReturnsClone - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180202.05/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerResponseTests~2FCopyFrom_AllValues_ReturnsClone) 2/6 | 20180206.02 | OSX10.12 | Connection refused | StatusDescription_GetWithCustomStatusCode_ReturnsExpected - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180206.02/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerResponseHeadersTests~2FStatusDescription_GetWithCustomStatusCode_ReturnsExpected(statusCode:%20501,%20expectedDescription:%20%5C%22Not%20Implemented%5C%22)) 2/16 | 20180216.01 | OSX10.12 | Operation timed out | ConnectV6IPEndPointToV6Host_Success 2/25 | 20180225.01 | OSX10.12 | Operation timed out | Connect_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180225.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.ConnectEap~2FConnect_Success(listenAt:%20::1)) 2/27 | 20180227.01 | OSX10.12 | Operation timed out | NormalBufferRange_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180227.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendPacketsAsync~2FNormalBufferRange_Success(type:%20Async)) 2/28 | 20180228.05 | OSX10.12 | Operation timed out | SendTimesOut_Throws 3/13 | 20180313.01 | OSX10.12 | Operation timed out | SendRecv_Stream_TCP_AlternateBufferAndBufferList 3/24 | 20180324.02 | OSX10.12 | Connection refused | Cookies_SetAndSend_ClientReceivesExpectedHeaders 3/24 | 20180324.03 | OSX10.12 | Operation timed out | ConnectV6IPAddressToV6Host_Success 3/27 | 20180327.04 | OSX10.12 | Operation timed out | SendRecv_Stream_TCP_AlternateBufferAndBufferList 3/29 | 20180329.02 | OSX10.12 | Operation timed out | SendPacketsElement_FilePart_Success 3/31 | 20180331.05 | OSX10.12 | Operation timed out | BeginConnectV6IPAddressToDualHost_Success 4/2 | 20180402.05 | OSX10.12 | Operation timed out | ConnectV6IPEndPointToV6Host_Success 4/3 | 20180403.04 | OSX10.12 | Connection refused | TransportContext_GetChannelBinding_ReturnsExpected +21040 area-System.Diagnostics Add System.Diagnostics.StackTrace tests Noticed this project was missing a test project, so went ahead and added a bunch of tests. +21042 area-System.ComponentModel System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Category failed in CI failed test: System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Category detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_rhel7.2_release/77/testReport/System.ComponentModel.Tests/CategoryAttributeTests/Ctor_Category_category____Default____expectedIsDefaultAttribute__True_/ MESSAGE: ~~~ Assert.Equal() Failure\n ↓ (pos 0)\nExpected: Default\nActual: Misc\n ↑ (pos 0) ~~~ STACK TRACE: ~~~ at System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Category(String category, Boolean expectedIsDefaultAttribute) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_release/src/System.ComponentModel.Primitives/tests/CategoryAttributeTests.cs:line 38 ~~~ +21043 area-Serialization Replacing Dictionary with Hashtable in CookieContainer for desktop serialization support Relates to https://github.com/dotnet/corefx/pull/20870 +21050 area-System.IO Fix DeflateStream Performance test +21051 area-System.Net Minor perf improvements to Sockets Shaves a few percent off various socket operations. It's close to noise, but appears to be statistically significant and amount to around 2-3% improvement in microbenchmarks that repeatedly receive/send (in which case receives complete asynchronously) and send/receive (in which case most if not all operations complete synchronously). (At this point most of the overhead associated with sockets (at least in the Windows build) is either in the P/Invokes to native or in peanut butter spread across lots of functions with very low exclusive amounts per function. There's likely a decent amount more to be done on Linux, where we've done less profiling and where we know there are improvements to be made around asynchronous completion and dispatch.) cc: @geoffkizer, @cipop, @davidsh, @vancem +21052 area-System.Collections Please provide ref indexer for collection builder types For example `ImmutableArray.Builder`. Note: https://github.com/dotnet/csharplang/issues/476 could make this a lot cleaner. Also related: https://github.com/dotnet/csharplang/issues/461 +21053 area-System.Numerics BigInteger should have a less strictly typed constructor "`BigInteger` should have a `public BigInteger(IList)` constructor instead of the existing `public BigInteger(Byte[])` constructor. ### Rationale First, asking for an interface instead of a specific type seems more in line with the ideology of the language. Second, there are situations when this would have been more convenient. As an example, we are implementing some public key cryptosystems and use big integers internally. Many PK cryptosystems ([example](https://en.wikipedia.org/wiki/ElGamal_encryption#Encryption)) produce ciphertexts that are actually a pair of big integers, which are stored as a single concatenated byte array; e.g., a `byte[96]` stores two big integers, 48 bytes long each. Reconstructing these would require an extra step of copying first and second halves of the array into individual arrays — an expensive operation. These add up when we are processing large data sets. Especially, considering that modern PK cryptosystems often work with ciphertexts 256 or 512 bytes long. Instead, if there was an `IList` constructor, we could have used `ArraySegment` and skip an unnecessary array copying. ### Details `BigInteger` from `System.Numerics` could be ""serialized"" to a byte array using `.ToByteArray()` method, and ""deserialized"" from a byte array using one of the constructors. However, currently, it only has a constructor that takes `byte[]`. Since the constructor (according to the [reference source](https://referencesource.microsoft.com/#System.Numerics/System/Numerics/BigInteger.cs,531)) actually only uses `.Length` property and indexed access, it would have been enough to require `IList` as an argument. The proposal is to replace an existing constructor with `public BigInteger(IList)`. Since `byte[]` implements `IList`, I don't see any compatibility issues that could arise from that change. As I understand, just adding it to the list of constructors would create ambiguity, but I didn't verify that. Hopefully, this could also be backported to the .NET Framework." +21054 area-System.Runtime Replace ActiveIssue with PlatformDetection.IsSupported So I can close that issue. And if we ever change our mind, the tests will light up. Fixes https://github.com/dotnet/corert/issues/3743 +21055 area-System.Collections Proposal: Specialize IA.Builder.ToImmutableArray, IHS.Builder.ToImmutableHashSet "A while ago I was working on a project and whenever I wanted an `ImmutableArray` I would just call `ToImmutableArray()` on the enumerable. I got so used to doing this, in fact, that I did it for `ImmutableArray.Builder`s without realizing there was a `ToImmutable()` method for a long time. ## Update 8/13/17 Instead of making the new facades instance methods, they will be extension methods. Rationale is given in [this comment](https://github.com/dotnet/corefx/issues/21055#issuecomment-317918406). ```cs public static class ImmutableArray { public static ImmutableArray ToImmutableArray(this ImmutableArray.Builder source); } public static class ImmutableDictionary { public static ImmutableDictionary ToImmutableDictionary(this ImmutableDictionary.Builder source); } public static class ImmutableHashSet { public static ImmutableHashSet ToImmutableHashSet(this ImmutableHashSet.Builder source); } public static class ImmutableList { public static ImmutableList ToImmutableList(this ImmutableList.Builder source); } public static class ImmutableSortedDictionary { public static ImmutableSortedDictionary ToImmutableSortedDictionary(this ImmutableSortedDictionary.Builder source); } public static class ImmutableSortedSet { public static ImmutableSortedSet ToImmutableSortedSet(this ImmutableSortedSet.Builder source); } ``` ## Update 6/16/17 We can add `IA.Builder.ToIA()`, `IHS.Builder.ToIHS()`, etc. instance methods that are simply wrappers for `ToImmutable()`, preventing people who make silly mistakes like me from degrading the performance of their app. ```cs public struct ImmutableArray { public class Builder { public ImmutableArray ToImmutableArray(); } } public class ImmutableHashSet { public class Builder { public ImmutableHashSet ToImmutableHashSet(); } } // ... ``` ## Original content It might be a good idea to add `ToImmutableArray()` to `ImmutableArray.Builder` and mark it `[Obsolete]`, for the sake of enforcing consistency. Similar for all of the other builder types. The `[Obsolete]` should not have `error: true` because we don't want to break existing code, but it will advise the user to use `ToImmutable()`. ```cs public struct ImmutableArray { public class Builder { [EditorBrowsable(Never)] [Obsolete(""Use ToImmutable() instead."")] public ImmutableArray ToImmutableArray(); } } public class ImmutableHashSet { public class Builder { [EditorBrowsable(Never)] [Obsolete(""Use ToImmutable() instead."")] public ImmutableHashSet ToImmutableHashSet(); } } // ... ``` /cc @AArnott, what do you think?" +21056 area-System.Diagnostics Store Activity wrapped into ObjectHandle in Logical CallContext Request to merge https://github.com/dotnet/corefx/pull/20963 into releae/2.0.0 Addresses #21027 **Is not approved by shiproom so far** +21057 area-System.Net Socket SelectTest.Poll_NotReady() fail in ILC mode due to metadata removed for performance reason System.Net.Sockets tests run fine in F5 ('uap') mode. But in ILC ('uap-aot') mode they are failing. It seems that the metadata the test needs to look up has been removed: ```c# [Theory] [InlineData(SelectMode.SelectRead)] [InlineData(SelectMode.SelectError)] public void Poll_NotReady(SelectMode mode) { KeyValuePair pair = CreateConnectedSockets(); try { Assert.False(pair.Key.Poll(SmallTimeoutMicroseconds, mode)); } finally { pair.Key.Dispose(); pair.Value.Dispose(); } } ``` We get failures like this: >System.Reflection.MissingMetadataException : This operation cannot be carried out because metadata for the following object was removed for performance reasons:\n\n System.Net.Sockets.SelectMode\n\nNo further information is available. Rebuild in debug mode for better information.\n\n Is this an expected problem from the UWP test runner in ILC mode? Or we need to fix this? cc: @davidsh +21058 area-System.Net Disable test in System.Net.Sockets for UAPAOT Now all Sockets Functional tests (innerloop and outerloop) can run clean on both UAP and UAPAOT mode. Contributes to: #20135 +21060 area-System.Linq NewExpression without constructor for certain system type "```C# using System; using System.Linq.Expressions; namespace NewExpressionWithNullCtor { class Program { static void Main(string[] args) { Expression> expression = e => new Post { A = new DateTime() }; Console.WriteLine((((expression.Body as MemberInitExpression)?.Bindings[0] as MemberAssignment).Expression as NewExpression).Constructor); Console.WriteLine((((expression.Body as MemberInitExpression)?.Bindings[0] as MemberAssignment).Expression as NewExpression).Constructor == null); Console.WriteLine(""Hello World!""); } public class Post { public DateTime A { get; set; } } } } ``` In the `NewExpression` created for `new DateTime()` the `Constuctor` property is null. Looking at the source of `NewExpression`, it does not seem to be possible to define a `NewExpression` without ctor (even need to pass the default parameterless one). So the Expression tree created looks incorrect. Instead of `new DateTime` if `new Post` is used then property has default ctor. So this seems to be specific to DateTime only (or may be other similar system types) ``` PM> dotnet --info .NET Command Line Tools (2.0.0-preview2-006443) Product Information: Version: 2.0.0-preview2-006443 Commit SHA-1 hash: 3a5612f153 Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\smpatel\.dotnet\x64\sdk\2.0.0-preview2-006443\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ``` " +21062 area-System.Net ILC mode will clear out ParamName for ArgumentNullException "System.Net.Sockets NullArgs_Throw() test runs fine in netcore/netfx/uap mode. But in ILC ('uap-aot') mode it is failing. It seems that the ParamName field has been optimized away: ```c# public void NullArgs_Throw(SocketImplementationType type) { int port; using (SocketTestServer.SocketTestServerFactory(type, _serverAddress, out port)) { using (Socket sock = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp)) { sock.Connect(new IPEndPoint(_serverAddress, port)); ArgumentNullException ex = Assert.Throws(() => { sock.SendPacketsAsync(null); }); Assert.Equal(""e"", ex.ParamName); //failure here, ex.ParamName == null } } } ``` Here is the implementation for SendPacketsAsync: ```c# public bool SendPacketsAsync(SocketAsyncEventArgs e) { ... if (e == null) { throw new ArgumentNullException(nameof(e)); } ... } ``` https://docs.microsoft.com/en-us/dotnet/api/system.argumentnullexception.-ctor?view=netcore-1.1#System_ArgumentNullException__ctor_System_String_ No matter what paramName value I passed in, ex.ParamName is always null. But if I do: ```c# SocketAsyncEventArgs e = null; ArgumentNullException testEx = new ArgumentNullException(nameof(e)); ``` This works, testEx.ParamName is ""e"". cc: @davidsh " +21063 area-Infrastructure Add option to build.cmd/sh to build projects in a directory Addresses https://github.com/dotnet/corefx/issues/20827 PTAL @mellinoe @kellypleahy @ericstj @stephentoub After this option folks can do the following: - Build all System.Collections projects ``` build.cmd/sh System.Collections ``` - Build System.Collection test projects (also runs tests) ``` build.cmd/sh src/System.Collections/tests ``` - While in a library directory build all projects under it. ``` cd src\System.Collections ..\..\build.cmd/sh . ``` These also support any of the standard build options like framework, flavor, os, allconfigurations, etc. Same rules apply that you have to have built the entire tree for that configuration before this will succeed. +21064 area-Serialization Fix Xml_TypeWithTwoDimensionalArrayProperty1. The test failed on uapaot when using sg.exe because sg.exe couldn't pre-generate correct serializer for the test type. It's hard to fix sg.exe to make it generate proper serializer for the type. But since the reflection-base serialization worked for the test type, the workaround is to let sg.exe not to generate serializer for the type and to use reflection-based serialization at runtime. And this would be the workaround we recommend to developers to deal with types having issues like #19897 . Fix #19897 +21066 area-System.Threading Change S.Threading.Overlapped tests that test on OS-invalid handles to use SafeHandle-invalid handles instead "The tests: `BindHandle_ClosedSyncHandleAsHandle_ThrowsArgumentException` and `BindHandle_ClosedAsyncHandleAsHandle_ThrowsArgumentException` are failing in uap because it looks like they are expecting that `handle.CloseWithoutDisposing` should mark the property `handle.isClosed` to true, and it doesn't. Tests look more or less like: ```c# .... handle.CloseWithoutDisposing(); AssertExtensions.Throws(""handle"", () => { ThreadPoolBoundHandle.BindHandle(handle); }); ... ``` Inside, BinHandle method, we do a check and throw ArgumentException if handle is closed, but that is not getting set when calling `CloseWithoutDisposing`. This issue is to track the work of fixing those tests and re enabling them. cc: @kouvel @stephentoub " +21067 area-Serialization Cross Serialization Cleanup cc @krwq +21068 area-System.Threading Fixing System.Threading.Overlapped tests in uap cc: @stephentoub @safern @danmosemsft @kouvel Fixing System.Threading.Overlapped tests since they were trying to create a handle on a file in a location where uap can't access. Also disabling two tests that are failing due to issue #21066 +21069 area-System.Net [release/1.0] Check for openssl version before setting cert callback. macOS High Sierra (10.13) has changed libcurl from using SecureTransport (darwinssl) as the TLS backend to using LibreSSL. The LibreSSL backend for libcurl handles the CURLOPT_SSL_CTX_FUNCTION setting that previously only OpenSSL did, and during the handshake we end up mixing pointers between OpenSSL (libcrypto.1.0.0.dylib) and LibreSSL (libcrypto.35.dylib), to poor effect. Rather than blindly try the option and see if it worked, only try the option when we understand the backend to be a supported backend (OpenSSL 1.0.x). Backport of https://github.com/dotnet/corefx/pull/19493. +21070 area-System.Diagnostics Fix TextWriterTraceListener.Tests for Uap Fixing tests to use temp path through FileCleanupTestBase class so that it is able to run inside Appx. cc: @danmosemsft @stephentoub @brianrob +21071 area-System.Net [release/1.1] Check for openssl version before setting cert callback. macOS High Sierra (10.13) has changed libcurl from using SecureTransport (darwinssl) as the TLS backend to using LibreSSL. The LibreSSL backend for libcurl handles the CURLOPT_SSL_CTX_FUNCTION setting that previously only OpenSSL did, and during the handshake we end up mixing pointers between OpenSSL (libcrypto.1.0.0.dylib) and LibreSSL (libcrypto.35.dylib), to poor effect. Rather than blindly try the option and see if it worked, only try the option when we understand the backend to be a supported backend (OpenSSL 1.0.x). Backport of https://github.com/dotnet/corefx/pull/19493. +21072 area-System.Net Fix System.Net.Requests tests for ILC (UAPAOT) Switch From Assert.Throws to AssertExtensions.Throws to handle the uapaot test runs which don't return string parameter name in exceptions. Contributes to #20136 +21074 area-System.Net CookieContainer improvements #20870 reverted some improvements made to `CookieContainer` to enable binary serialization. This PR adds back some of the improvements while maintaining serialization compat (also some minor cleanup I noticed while making changes here). The PR is broken up into several commits to make it easier to review the changes. cc: @ViktorHofer, @danmosemsft, @stephentoub, @davidsh, @CIPop +21075 area-System.Net System.Net.Security.Tests failed on armel "System.Net.Security.Tests failed on armel failed tcs are in tests/FunctionalTests/NegotiateStreamTestForUnix.cs ``` System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthInvalidTarget_Failure [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_AuthToHttpTarget_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthDefaultCredentialsNoSeed_Failure [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_KerberosCreds_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthDefaultCredentials_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_NTLM_ClientWriteRead_Successive_Sync_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Sync_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthentication_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthInvalidPassword_Failure [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthInvalidUser_Failure [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_NtlmUser_InvalidCredentials_Fail(credential: NetworkCredential { Domain = ""EST"", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_NTLM_ClientWriteRead_Successive_Async_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_Fallback_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_ValidCredentials_Success(credential: NetworkCredential { Domain = ""TEST"", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthWithoutRealm_Success [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_NtlmUser_InvalidCredentials_Fail(credential: NetworkCredential { Domain = ""TEST"", Password = ""ntlm_password"", SecurePaecureString { Length = 13 }, UserName = ""tlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_NtlmUser_InvalidCredentials_Fail(credential: NetworkCredential { Domain = ""TEST"", Password = ""tlm_password"", SecurePassword = SecureString { Length = 12 }, UserName = ""ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_NtlmUser_InvalidCredentials_Fail(credential: NetworkCredential { Domain = ""EST"", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""TEST\\ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_NtlmUser_InvalidCredentials_Fail(credential: NetworkCredential { Domain = """", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""ntlm_user@EST"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_NtlmUser_InvalidCredentials_Fail(credential: NetworkCredential { Domain = ""TEST.COREFX.NET"", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_ValidCredentials_Success(credential: NetworkCredential { Domain = """", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_ValidCredentials_Success(credential: NetworkCredential { Domain = """", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""TEST\\ntlm_user"" }) [FAIL] System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_NtlmAuthentication_ValidCredentials_Success(credential: NetworkCredential { Domain = """", Password = ""ntlm_password"", SecurePassword = SecureString { Length = 13 }, UserName = ""ntlm_user@TEST"" }) [FAIL] ``` There are two thrown exceptions: ``` System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthInvalidTarget_Failure [FAIL] System.AggregateException : One or more errors occurred. (No such file or directory) (The following constructor parameters did not have matching fixture data: KDCSetup fixture) ---- System.ComponentModel.Win32Exception : No such file or directory ---- The following constructor parameters did not have matching fixture data: KDCSetup fixture Stack Trace: ----- Inner Stack Trace #1 (System.ComponentModel.Win32Exception) ----- at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) /home/dragon/tizen.release/corefx.release.2.0.0/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs(111,0): at System.Net.Security.Tests.KDCSetup.RunSetupScript(String args) /home/dragon/tizen.release/corefx.release.2.0.0/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs(42,0): at System.Net.Security.Tests.KDCSetup..ctor() ----- Inner Stack Trace #2 (Xunit.Sdk.TestClassException) ----- System.MissingMethodException : Constructor on type 'System.Net.Security.Tests.NegotiateStreamTest' not found. Stack Trace: at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) at System.Activator.CreateInstance(Type type, Object[] args) at ReflectionAbstractionExtensions.<>c__DisplayClass0_0.b__0() at ReflectionAbstractionExtensions.CreateTestClass(ITest test, Type testClassType, Object[] constructorArguments, IMessageBus messageBus, ExecutionTimer timer, CancellationTokenSource cancellationTokenSource) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` it's because of below code. ```cs // in tests/FunctionalTests/NegotiateStreamTestForUnix.cs namespace System.Net.Security.Tests { public class KDCSetup : IDisposable { private static int RunSetupScript(string args = null) { ProcessStartInfo startInfo = new ProcessStartInfo(); // since ProcessStartInfo does not support Verb, we use sudo as // the program to be run startInfo.FileName = SudoCommand; // sudo startInfo.Arguments = string.Format(""bash {0} {1}"", ScriptName, args); // bash setup-kdc.sh --password {guid} --yes // sudo bash setup-kdc.sh --password {guid} --yes using (Process kdcSetup = Process.Start(startInfo)) // if sudo is not there, it throws System.ComponentModel.Win32Exception in ResolvePath() in Process.StartCore() { kdcSetup.WaitForExit(); return kdcSetup.ExitCode; } } ``` Current rootfs of armel doesn't have `sudo`. ``` ~/nfs/corefx/cross/rootfs (master ✘)✭ ᐅ ls arm armel x86 ~/nfs/corefx/cross/rootfs (master ✘)✭ ᐅ sudo find . -name ""sudo"" ./arm/var/lib/sudo ./arm/usr/share/doc/sudo ./arm/usr/share/lintian/overrides/sudo ./arm/usr/bin/sudo ./arm/usr/lib/sudo ./arm/etc/init.d/sudo ./arm/etc/pam.d/sudo ./x86/var/lib/sudo ./x86/usr/share/doc/sudo ./x86/usr/share/lintian/overrides/sudo ./x86/usr/bin/sudo ./x86/usr/lib/sudo ./x86/etc/init.d/sudo ./x86/etc/pam.d/sudo ``` This needs to care about a situation where there is no `sudo`." +21076 area-System.Security "Test: System.Security.Cryptography.X509Certificates.Tests.ChainTests/VerifyWithRevocation failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.X509Certificates.Tests.ChainTests/VerifyWithRevocation` has failed. Online Chain Built Validly within 3 tries Expected: True Actual: False Stack Trace: at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyWithRevocation() in /root/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 574 Build : 2.0.0 - 20170615.01 (Core Tests) Failing configurations: - Fedora.26.Amd64-x64 - Debug - Release - fedora.25.amd64-x64 - Debug - Release - Ubuntu.1610.Amd64-x64 - Debug - Release - Ubuntu.1704.Amd64-x64 - Debug - Release - Debian.90.Amd64-x64 - Debug - Release - Ubuntu.1404.Amd64-x64 - Debug - Release - Centos.73.Amd64-x64 - Debug - Release - Debian.87.Amd64-x64 - Debug - Release - RedHat.73.Amd64-x64 - Debug - Release - SLES.12.Amd64-x64 - Debug - Release - RedHat.72.Amd64-x64 - Debug - Release - suse.422.amd64-x64 - Debug - Release - Ubuntu.1604.Amd64-x64 - Debug - Release - OSX.1012.Amd64-x64 - Release - Windows.7.Amd64-x64 - Release - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170615.01/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.ChainTests~2FVerifyWithRevocation +21077 area-System.Net Fix System.Net.Security.Tests failed on armel Add code to care if sudo is not there on armel-rootfs - https://github.com/dotnet/corefx/issues/21075 - add try/catch for catching a situation where there is no sudo - return 1 if os is not specific os(ex. tizen) in setup-kdc.sh +21078 area-Infrastructure Can't Ctrl-C out of Installing dotnet cli in Windows command prompt hangs Normally I can press Ctrl-C and quit the currently exectuting task in the WIndows command prompt. However, things seem to jam up and hang if I press control C when installing the dotnet cli. This is a pain because my slow internet takes upwards of 1 hour to download the CLI, and I also often get errors like these and can't quit the build... ``` C:\Users\hugh\Documents\GitHub\corefx>build C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\GenFacades.Core.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\Microsoft.Cci.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\Microsoft.Cci.Extensions.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\Microsoft.DotNet.Build.Tasks.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\Newtonsoft.Json.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\NuGet.Common.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\NuGet.Packaging.Core.Types.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\NuGet.Packaging.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\NuGet.ProjectModel.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\NuGet.Versioning.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\roslyn\tools\Microsoft.Build.Tasks.CodeAnalysis.dll - Access is denied. C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\System.Diagnostics.TraceSource.dll - Access is denied. Installing dotnet cli... ``` +21079 area-System.Diagnostics StackTrace/StackFrame don't have a file name or position in .NET Core on Windows, but do with .NET Core on Unix and .NET Framework The following example is a test that passes with netfx, passes with netcoreapp on Unix, but not with netcoreapp on Windows. ```cs [Fact] public void Ctor_FileInfo_CorrectlyGetsFileName() { var stackTrace = new StackTrace(fNeedFileInfo: true); StackFrame[] frames = stackTrace.GetFrames()); Assert.True(frames.Any(f => f.GetFileName() != null)); } ``` +21081 area-Meta Need options for System information _From @vnd-edu on June 15, 2017 5:21_ ## Steps to reproduce I am migrating Asp.net web application in .net core. i am not getting any api to find system information. ## Expected behavior in .net application i used System.management api to run query and get the all information. ## Actual behavior how to get system information like processor id , system installed date and time? Please help me out. ## Environment data `dotnet --info` output: _Copied from original issue: dotnet/cli#6883_ +21086 area-System.Runtime Reenable Environment.GetCommandLineArgs() tests on ILC. Api is now supported. +21090 area-System.Net Disable bad certificates tests on Windows Due to issues with #7812 and certificates using DHE ciphers, we're disabling these tests on Windows for now. I am in the process of moving these tests from the *.badssl.com servers to servers that we control in Azure that won't use DHE cipher suites. +21091 area-Serialization Serialization Tests for Exceptions Failed on Uapaot Serialization tests for exceptions failed on uapaot due to #19585. This issue is for serialization team to track the issue.. +21092 area-Serialization Serialization Tests for System Types are Skipped on Uapaot Serialization tests for System types failed on uapaot due to https://github.com/dotnet/corefx/issues/20478. This issue is for serialization team to track the issue.. +21093 area-System.Globalization Port async-aware CultureInfo property from CoreCLR. @AtsushiKan commented on [Wed May 31 2017](https://github.com/dotnet/corert/issues/3747) The following two tests are ActiveIssued onthis: System.Globalization.Tests -method System.Globalization.Tests.CultureInfoAsync.TestCurrentCulturesAsync -method System.Globalization.Tests.CultureInfoAsync.TestCurrentCulturesWithAwait --- @AtsushiKan commented on [Thu Jun 15 2017](https://github.com/dotnet/corert/issues/3747#issuecomment-308786245) Now tracked as TFS451287 --- @tarekgh commented on [Thu Jun 15 2017](https://github.com/dotnet/corert/issues/3747#issuecomment-308799315) I have reassigned the TFS back to you @AtsushiKan. @AtsushiKan, is this for UAP scenario? or in general for aot? if it is in general for aot (even when running as non UAP, then you may assign it back to me). also I am wondering why we are tracking this as TFS and not here? +21095 area-System.Reflection [.NET Core 2.0.0-preview2-25407-01][Regression] ResourceManager.GetString(string) throw System.IO.FileNotFoundException "Summary ---------- PowerShell Core recently moved to .NET Core `2.0.0-preview2-25407-01` with .NET Core SDK `2.0.0-preview2-006388`. Then we found a regression in this .NET Core version -- the call to `ResourceManager.GetString(string)`, which worked fine on .NET Core `2.0.0-preview1-002106-00`, starts to throw `System.IO.FileNotFoundException`. Impact -------- This is a blocking issue for us. It basically breaks PowerShell core. Repro ------ An application that reads a resource string from a DLL ```CSharp using System; using System.Diagnostics; using System.Reflection; using System.Resources; namespace temp { class Program { static void Main(string[] args) { if (args.Length != 3 && args.Length != 4) { Console.WriteLine(""Usage: test.exe [-debug]""); return; } var path = args[0]; var rName = args[1]; var rKey = args[2]; if (args.Length == 4) { Console.WriteLine(""PID: {0}"", Process.GetCurrentProcess().Id); Console.ReadKey(); } Console.WriteLine(""Assembly:\n\t-- {0}"", path); Console.WriteLine(""Resource:\n\t-- {0}"", rName); Console.WriteLine(""StringKey:\n\t-- {0}"", rKey); Assembly asm = Assembly.LoadFrom(path); var rm = new ResourceManager(rName, asm); try { string rStr = rm.GetString(rKey); Console.WriteLine(""\n{0}:\n\t-- {1}"", rKey, rStr); } catch (Exception ex) { Console.WriteLine(""\n!!! {0} Caught:\n\t-- {1}"", ex.GetType().FullName, ex.Message); } } } } ``` `Lib.dll` is an example assembly that is built against .NET Core `2.0`. We can see the embedded resource files in `ildasm` as follows: ![image](https://user-images.githubusercontent.com/127450/27194987-a0135e68-51b9-11e7-888f-bc94348549ce.png) The project to build `Lib.dll` is also attached for your reference: [Lib.zip](https://github.com/dotnet/corefx/files/1078517/Lib.zip) Run the application to get a resource string: ```CSharp dotnet run C:\tmp\Lib.dll Lib.Resources.CsvCommandStrings CannotSpecifyPathAndLiteralPath ``` Expected Behavior -------------------- With .NET Core `2.0.0-preview1-002106-00` (using .NET Core SDK `2.0.0-preview1-005952`), the resource string corresponding to the key `CannotSpecifyPathAndLiteralPath` is retrieved back: ``` PS:34> dotnet run C:\tmp\Lib.dll Lib.Resources.CsvCommandStrings CannotSpecifyPathAndLiteralPath Assembly: -- C:\tmp\Lib.dll Resource: -- Lib.Resources.CsvCommandStrings StringKey: -- CannotSpecifyPathAndLiteralPath CannotSpecifyPathAndLiteralPath: -- You must specify either the -Path or -LiteralPath parameters, but not both. ``` Actual Behavior ----------------- With .NET Core `2.0.0-preview2-25407-01`, `System.IO.FileNotFoundException` is thrown by `ResourceManager.GetString(string)`: ``` PS:47> dotnet run C:\tmp\Lib.dll Lib.Resources.CsvCommandStrings CannotSpecifyPathAndLiteralPath Assembly: -- C:\tmp\Lib.dll Resource: -- Lib.Resources.CsvCommandStrings StringKey: -- CannotSpecifyPathAndLiteralPath !!! System.IO.FileNotFoundException Caught: -- Could not load file or assembly 'Lib.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null'. The system cannot find the file specified. ```" +21096 area-System.IO Windows TrimEndChars not aligned with NTFS In `corefx/src/System.IO.FileSystem/src/System/IO/PathHelpers.Windows.cs` we have definition `internal static readonly char[] TrimEndChars = { (char)0x9, (char)0xA, (char)0xB, (char)0xC, (char)0xD, (char)0x20, (char)0x85, (char)0xA0 };` This is not fully aligned with underlying file system. For example 0xA0 is allowed as end char on NTFS. This can cause problems, as described [here](https://github.com/PowerShell/PowerShell/issues/4017). I think the same is with char 0x85. Others seems to be OK, but I have not confirmed it. +21097 area-Serialization Area-Serialization Sprint 120 The issue is for tracking issues to be done in sprint 120 (due by 7/6/2017) +21098 area-Serialization Release/2.0.0 Desktop <--> Core serialization support Depends on https://github.com/dotnet/coreclr/pull/12300 Fixes #21141. cc @danmosemsft @stephentoub @krwq @morganbr +21099 area-System.Threading Disable TestEtw and GetTaskSchedulersForDebugger tests for UapAot Disable TestEtw test due to issue #20592. Disable GetTaskSchedulersForDebugger tests due to use of reflection. +21100 area-System.Net [2.0 Port] Fixing NativeOverlapped lifetime issue Port of #20793 to 2.0.0. Fixes #20400 . @karelz @DavidGoll PTAL +21101 area-Serialization Reenabling disabled tests in binaryserialization cc @danmosemsft @krwq +21102 area-System.Net ClientWebSocket.ReceiveAsync behavior difference between .NET Core and UWP There is a behavioral difference between the UAP and non-UAP implementations of ClientWebSocket.ReceiveAsync. Currently, the [WinRTWebSocket](https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WinRTWebSocket.cs)'s OnMessageReceived is only triggered when an entire message has been received, which doesn't allow ClientWebSocket.ReceiveAsync to hand partial data back to the app on-the-fly. +21103 area-Infrastructure Manual shims need to build against the correct vertical references in AllConfigurations leg See comments at https://github.com/dotnet/corefx/pull/20839. Currently the manual shims for mscorlib and System are resolving references from RuntimePath (https://github.com/dotnet/corefx/blob/master/src/shims/manual/mscorlib.csproj#L25), which is correct on individual vertical builds but as part of the AllConfigurations leg it will always be netcoreapp which means the shims for the other configurations (currently only uap) will not have the correct type-forwards. Given we don't ship them from that build leg this isn't a blocker but we need to fix this to ensure we produce the same assets in the AllConfigurations mode that we do in the individual vertical legs. cc @ViktorHofer @ericstj +21104 area-System.Net Fix System.Net.NetworkInformation.Tests for uap This tests where writing files to the test directory and since Uap tests run inside appx this is not authorized so they where failing. Fixed them to use temp path. This brings all System.Net.NetworkInformation.*.Tests to 0 failures cc: @danmosemsft +21105 area-System.Diagnostics "Thousands and thousands of EventSourceException while processing event ""TraceOperationBegin"" thrown throughout a debugging session" "Windows Build: 15063.rs2_release.170317-1834 While debugging, I'm seeing thousands upon thousands of: ``` EventSourceException while processing event ""TraceOperationBegin"" ``` The stack at the time is: mscorlib.dll!System.Diagnostics.Tracing.EventSource.ReportOutOfBandMessage(string msg, bool flush) Line 3931 C# mscorlib.dll!System.Diagnostics.Tracing.EventSource.ThrowEventSourceException(string eventName, System.Exception innerEx) Line 2452 C# mscorlib.dll!System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(int eventId, System.Guid* relatedActivityId, int eventDataCount, System.Diagnostics.Tracing.EventSource.EventData* data) Line 1230 C# mscorlib.dll!System.Threading.Tasks.TplEtwProvider.TraceOperationBegin(int TaskID, string OperationName, long RelatedContext) Line 653 C# mscorlib.dll!System.Threading.Tasks.AsyncCausalityTracer.TraceOperationCreation(System.Threading.Tasks.CausalityTraceLevel traceLevel, int taskId, string operationName, ulong relatedContext) Line 191 C# mscorlib.dll!System.Threading.Tasks.StandardTaskContinuation.StandardTaskContinuation(System.Threading.Tasks.Task task, System.Threading.Tasks.TaskContinuationOptions options, System.Threading.Tasks.TaskScheduler scheduler) Line 313 C# mscorlib.dll!System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task continuationTask, System.Threading.Tasks.TaskScheduler scheduler, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions options) Line 4644 C# The [code that is throwing is](http://referencesource.microsoft.com/#mscorlib/system/diagnostics/eventing/eventsource.cs,1230): ``` C# if (etwSessions.IsEqualOrSupersetOf(m_curLiveSessions)) { // OutputDebugString(string.Format("" (1) id {0}, kwd {1:x}"", // m_eventData[eventId].Name, m_eventData[eventId].Descriptor.Keywords)); // by default the Descriptor.Keyword will have the perEventSourceSessionId bit // mask set to 0x0f so, when all ETW sessions want the event we don't need to // synthesize a new one if (!m_provider.WriteEvent(ref m_eventData[eventId].Descriptor, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data)) ThrowEventSourceException(m_eventData[eventId].Name); Xunit.Sdk.InRangeException: Assert.InRange() Failure\r Range: (4 - 2147483647)\r Actual: 2\r at Xunit.Assert.InRange[T](T actual, T low, T high, IComparer`1 comparer)\r at System.Tests.GetCommandLineArgs.CheckCommandLineArgs(String[] args)\r --- End of inner exception stack trace ---\r at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)\r at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)\r at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)\r at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData)\r Returned Error code: -4\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Tests.GetCommandLineArgs.RemoteInvoke(String[] args) Build : Master - 20170616.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170616.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.GetCommandLineArgs~2FCheckCommandLineArgs_ArgsWithEvenBackSlash" +21123 area-System.Runtime "Test: System.Runtime.ExceptionServices.Tests.HandleProcessCorruptedStateExceptionsTests/ProcessExit_Called failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Runtime.ExceptionServices.Tests.HandleProcessCorruptedStateExceptionsTests/ProcessExit_Called` has failed. response.Status = Failure\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Runtime.ExceptionServices.Tests.HandleProcessCorruptedStateExceptionsTests.ProcessExit_Called() Build : Master - 20170616.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170616.01/workItem/System.Runtime.Tests/analysis/xunit/System.Runtime.ExceptionServices.Tests.HandleProcessCorruptedStateExceptionsTests~2FProcessExit_Called +21126 area-System.IO removing two valid chars from trimming list, 0x85, 0xA0 As per the issue explained here https://github.com/dotnet/corefx/issues/21096 which is causing problems in dotnet languages like PowerShell described here https://github.com/PowerShell/PowerShell/issues/4017 those two characters should be removed from TrimEndChars. They are valid end chars under Windows (NTFS actually) +21127 area-System.Linq Fire Issue: System.Linq.Expressions.Tests on windows.81.amd64 Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170616.01/workItem/System.Linq.Expressions.Tests +21128 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls12, requestOnlyThisProtocol: True) failed with ""System.Net.Http.WinHttpException : The operation has been canceled""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls12, requestOnlyThisProtocol: True)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The operation has been canceled Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : 2.0.0 - 20170616.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170616.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test~2FGetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol:%20Tls12,%20requestOnlyThisProtocol:%20True) +21129 area-System.Drawing TypeConverters for System.Drawing TypeConverters are currently omitted from System.Drawing.Common, as described in #20593. Since the idea is that Mono will use the CoreFX System.Drawing sources, and Mono maintains compatibility with Desktop .NET, we should add them back. Here's what I can do: - Add the TypeConverters (possibly from Mono) to CoreFX - Add the TypeConverter attributes to the System.Drawing classes and hide them between a feature flag. The same will probably apply other Desktop-only features, such as `[Serializable]` attributes. +21131 area-System.Net API addition: System.Net.Http.HttpMethod.Patch method/verb "System.Net.Http.HttpMethod.Patch method/verb (RFC5789) is a extension to HTTP 1.1 protocol and method definitions defined in (RFC2616 Section 9). Suggestion: add API (static method HttpMethod.Patch that returns new HttpMethod(""PATCH"")) which is current workaround for this issue. Pros: * consistent API with other HTTP methods. Cons: * none, since this is new API, there should not be any breaking changes. Code changes can be viewed in the commit referenced below (no PR issued yet). Preliminary builds on MacOSX passed. References: * https://tools.ietf.org/html/rfc5789 * https://tools.ietf.org/html/rfc2616#section-9 * https://github.com/moljac/corefx/commit/457e528a2e5641643a50a438a356d0c7308cd84e" +21133 area-Serialization Enabling CookieContainer serialization by adding TypeForward for System.Net.PathList cc @danmosemsft @stephentoub @krwq @justinvp +21134 area-System.Runtime Reenable test that is now passing in uapaot Enabling test that is now passing in uapaot. Can't close the issue it pointed (#17450) yet, as the other test still crashes the app. cc: @stephentoub +21135 area-Infrastructure Announcement: Corefx CI legs updating "As part of so infrastructure changes we are shifting the CI system a little. As folks probably already have noticed we have added ""Portable"" legs instead of having a bunch of different individual linux distro legs. Given that Portable is our default netcoreapp configuration now we are also going to remove that term from the descriptions and simplify some of the other legs/names as well. Given the large changes to the CI system there isn't a great way to test beyond just switching which we plan to do today and we will actively work through any issues we run into. Please leave feedback on this issue or ping @weshaggard on any PR's where CI looks it has issues because of these changes. After the changes are done we should have the following CI legs PR: ``` CROSS Check OSX x64 Debug Build OSX x64 Release Build Linux x64 Debug Build Linux x64 Release Build Windows x64 Debug Build Windows x64 Release Build NetFx Debug Build NetFx Release Build UWP CoreCLR Debug Build UWP CoreCLR Release Build UWP NETNative Debug Build UWP NETNative Release Build All Configurations Debug Build All Configurations Release Build Tizen armel Debug Build Tizen armel Release Build Ubuntu14.04 arm Release Build Ubuntu16.04 arm Debug Build ``` By default a leg will run inner loop tests only and be targeting .NET Core portable binaries, unless a different configuration is specified (i.e. netfx, uwp, all). Each of these legs will also support an outerloop trigger by prepending the leg name with ""Outerloop"" for folks that need to manually trigger outerloop test runs. The only .NET Core non-portable legs we currently have is Tizen armel and Ubuntu arm @hqueue @jyoungyun Do we still need all those legs or is the Tizen leg enough? For reference the PR making the CI changes is https://github.com/dotnet/corefx/pull/20508. If there is any feedback/questions please add them to this issue. " +21136 area-System.IO Start on WinRT purge in FileSystem First commit is mostly changing `String` to `string` to match our coding guidelines. Second commit kills the WinRT FileStream class and FileStream constructor in FileSystem (which wasn't being used). Doing this in chunks to make it comprehensible. No functionality change in this first PR, but it changed enough lines that I want to push it through. +21137 area-Serialization Add more serialization test cases and fix SqlGuid Fixes: https://github.com/dotnet/corefx/issues/21141 cc: @morganbr @danmosemsft @ViktorHofer +21138 area-System.Net Add ClientWebSocket partial message test Adding new test case that pins the ClientWebSocket.ReceiveAsync behavioral difference between .NET Core and UWP tracked by issue #21102. I've confirmed that it consistently passes in non-UAP test runs and fails in UAP test runs. Disabling it for UAP for now; will enable it as part of the #21102 fix. cc: @davidsh @CIPop +21140 area-System.Runtime Add some System.Runtime.InteropServices tests Cleanup some existing test code, add tests to increase the code coverage numbers in the library. I'm planning on submitting a PR after this adding some missing coverage for things that reside in coreclr +21141 area-Serialization SqlGuid is not deserializing properly on netfx It's already in the: PR https://github.com/dotnet/corefx/pull/21137 +21143 area-Serialization DCJS_GetOonlyDictionary_UseSimpleDictionaryFormat Failed in ReflectionOnly on Uapaot ``` DataContractJsonSerializerTests.DCJS_GetOonlyDictionary_UseSimpleDictionaryFormat [FAIL] $BlockedFromReflection_0_1dac0683 : This object cannot be invoked because it was metadata-enabled for browsing only: 'System.Boolean.Parse(System.String)' For more informati on, please visit http://go.microsoft.com/fwlink/?LinkID=616867 Stack Trace: f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\Internal\Reflection\Core\Execution\ExecutionEnvironment.cs(130,0): at Internal.Reflection.Core.Execution.Ex ecutionEnvironment.GetMethodInvoker($RuntimeTypeInfo declaringType, $QMethodDefinition methodHandle, $RuntimeTypeInfo[] genericMethodTypeArguments, MemberInfo exceptionPertainant) f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\MethodInfos\NativeFormat\NativeFormatMethodCommon.cs(42,0): at System.Reflection. Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon.GetUncachedMethodInvoker($RuntimeTypeInfo[] methodArguments, MemberInfo exceptionPertainant) f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\MethodInfos\RuntimeNamedMethodInfo.cs(304,0): at System.Reflection.Runtime.Method Infos.RuntimeNamedMethodInfo$1.get_UncachedMethodInvoker() f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\MethodInfos\RuntimeMethodInfo.cs(357,0): at System.Reflection.Runtime.MethodInfos .RuntimeMethodInfo.get_MethodInvoker() f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\MethodInfos\RuntimeMethodInfo.cs(191,0): at System.Reflection.Runtime.MethodInfos .RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\ReflectionJsonFormatReader.cs(196,0): at System.Runtime.Serializ ation.Json.ReflectionJsonReader.ReadSimpleDictionary($XmlReaderDelegator xmlReader, $XmlObjectSerializerReadContext context, $CollectionDataContract collectionContract, Type keyVa lueType, Object dictionary) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\ReflectionJsonFormatReader.cs(126,0): at System.Runtime.Serializ ation.Json.ReflectionJsonReader.ReflectionReadSpecialCollection($XmlReaderDelegator xmlReader, $XmlObjectSerializerReadContext context, $CollectionDataContract collectionContract, Object resultCollection) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\ReflectionReader.cs(60,0): at System.Runtime.Serialization.Reflection Reader.ReflectionReadGetOnlyCollection($XmlReaderDelegator xmlReader, $XmlObjectSerializerReadContext context, $XmlDictionaryString collectionItemName, $XmlDictionaryString collec tionItemNamespace, $CollectionDataContract collectionContract) D:\OSS\corefx-1\corefx\src\System.Private.DataContractSerialization\src\System\Runtime\Serialization\Json\ReflectionJsonFormatReader.cs(47,0): at System.Runtime.Serializa tion.Json.ReflectionJsonCollectionReader.ReflectionReadGetOnlyCollection($XmlReaderDelegator xmlReader, $XmlObjectSerializerReadContextComplexJson context, $XmlDictionaryString em ptyDictionaryString, $XmlDictionaryString itemName, $CollectionDataContract collectionContract) Invoke(16707566,0): at System.Runtime.Serialization.Json.JsonFormatClassWriterDelegate.Invoke($XmlWriterDelegator xmlWriter, Object obj, $XmlObjectSerializerWriteContextC omplexJson context, $ClassDataContract dataContract, $XmlDictionaryString[] memberNames) ``` +21144 area-Serialization Fix Serialization Tests for Collection Types. Serialization tests for System.Collection types failed in ReflectionOnly mode on uapaot due to missing the metadata for the collections types. The fix is to change the tests' rd.xml to keep the metadata for those types. Fix #20478 Fix #20481 +21145 area-System.Net Fix HttpClient.MaxResponseContentBufferSize handling It's not causing failures in all cases it should, as it's comparing against a buffer size that may have grown to be larger than the desired max. cc: @davidsh, @cipop, @geoffkizer +21146 area-Serialization Investigate the way to run SGEN.exe Investigate the way to run SGEN.exe from CLI. +21147 area-Serialization Automate SGEN tests 1. Add a new test project in SGEN and reuse the current XML tests. 2. Add baseline test +21148 area-System.Net System.Net.Sockets: Go back to using GCHandles for linking a SocketAsyncContext to native code In the following commit: https://github.com/dotnet/corefx/commit/730df62e8948846f8661189811980ac341559d1a To fix a race we creates a new layer of 'tokens' and a dictionary to go from these tokens to the SocketAsyncContext (which is the managed object holding the state of a single asynchronous I/O. After some discussion with @geoffkizer @stephentoub @jkotas and others we believe that it is a straightforward solution that solves the race. It looks much like what the code WAS like (thus reverting this change would be a good starting point), but on close it will hand off to the polling thread the responsibility of freeing the GCHandle. +21149 area-System.IO Clean up attribute code - Cleans up and optimizes file attriubte retrieval - Adds wrapper for disabling media prompt and wraps correctly in enumerator This is backlog work that is important for taking the next steps to removing our WinRT code. +21151 area-System.Threading System.Threading.Tests.MutexTests hanging in Uap "This two tests are hanging in uap: CrossProcess_NamedMutex_ProtectedFileAccessAtomic AbandonExisting Sorce code: https://github.com/dotnet/corefx/blob/master/src/System.Threading/tests/MutexTests.cs#L142-L201 They both hang when calling `new Mutex(false, name)` and the name contains `""Global\\""` as its prefix. cc: @kouvel @AntonLapounov" +21152 area-System.Threading Disable System.Threading Mutex hanging tests This two tests are hanging and we are not getting test results. Disabling them to unblock the test run. cc: @danmosemsft @kouvel +21154 area-Infrastructure Enable UWP6.0 MF x86 and MF ARM legs in outerloop This issue is tracking turning on the Multifile x86 and Multifile arm legs in Helix as part of the UWP6.0 zbb. @tijoytom you'll want to chat with @joperezr for a pointer /cc @yizhang82 +21155 area-Serialization Improve XmlSerializer performance, especially the reflection based serializer This are some improvements for the XmlSerializer. Here are the results from the perf run for the new reflection based serializer. Test | Baseline | Changes | % Diff --- | --- | --- | --- XsDeSerializationTest(numberOfRuns: 1, testType: ListOfInt, testSize: 1048576) | 872.6 | 836.0 | 4.19% XsDeSerializationTest(numberOfRuns: 1, testType: SimpleType, testSize: 15) | 770.5 | 629.7 | 18.28% XsDeSerializationTest(numberOfRuns: 1, testType: SimpleTypeWithFields, testSize: 15) | 846.6 | 642.5 | 24.11% XsDeSerializationTest(numberOfRuns: 10, testType: SimpleType, testSize: 1) | 0.261 | 0.214 | 18.30% XsDeSerializationTest(numberOfRuns: 100, testType: ArrayOfSimpleType, testSize: 1024) | 462.1 | 359.9 | 22.11% XsDeSerializationTest(numberOfRuns: 100, testType: ByteArray, testSize: 1024) | 1.403 | 1.420 | -1.18% XsDeSerializationTest(numberOfRuns: 100, testType: DateTimeArray, testSize: 1024) | 440.6 | 131.9 | 70.07% XsDeSerializationTest(numberOfRuns: 100, testType: ListOfInt, testSize: 1024) | 51.38 | 49.98 | 2.73% XsDeSerializationTest(numberOfRuns: 100, testType: ListOfSimpleType, testSize: 1024) | 462.0 | 358.3 | 22.44% XsDeSerializationTest(numberOfRuns: 1000, testType: ArrayOfSimpleType, testSize: 128) | 581.9 | 457.5 | 21.38% XsDeSerializationTest(numberOfRuns: 1000, testType: ListOfInt, testSize: 128) | 67.16 | 64.98 | 3.24% XsDeSerializationTest(numberOfRuns: 1000, testType: ListOfSimpleType, testSize: 128) | 589.8 | 444.5 | 24.64% XsDeSerializationTest(numberOfRuns: 10000, testType: ISerializable, testSize: -1) | 34.43 | 33.12 | 3.80% XsDeSerializationTest(numberOfRuns: 10000, testType: SimpleStructWithProperties, testSize: 1) | 87.05 | 76.87 | 11.69% XsDeSerializationTest(numberOfRuns: 10000, testType: String, testSize: 1024) | 65.88 | 62.23 | 5.54% XsDeSerializationTest(numberOfRuns: 10000, testType: String, testSize: 128) | 37.64 | 35.23 | 6.40% XsDeSerializationTest(numberOfRuns: 10000, testType: XmlElement, testSize: -1) | 35.48 | 35.33 | 0.42% XsDeSerializationTest(numberOfRuns: 5, testType: ByteArray, testSize: 1048576) | 74.57 | 69.71 | 6.52% XsSerializationTest(numberOfRuns: 1, testType: ListOfInt, testSize: 1048576) | 336.9 | 318.8 | 5.38% XsSerializationTest(numberOfRuns: 1, testType: SimpleType, testSize: 15) | 425.8 | 297.6 | 30.11% XsSerializationTest(numberOfRuns: 1, testType: SimpleTypeWithFields, testSize: 15) | 495.3 | 361.8 | 26.96% XsSerializationTest(numberOfRuns: 10, testType: SimpleType, testSize: 1) | 0.122 | 0.107 | 12.29% XsSerializationTest(numberOfRuns: 100, testType: ArrayOfSimpleType, testSize: 1024) | 241.6 | 242.1 | -0.20% XsSerializationTest(numberOfRuns: 100, testType: ByteArray, testSize: 1024) | 0.420 | 0.374 | 10.95% XsSerializationTest(numberOfRuns: 100, testType: DateTimeArray, testSize: 1024) | 69.62 | 62.27 | 10.56% XsSerializationTest(numberOfRuns: 100, testType: ListOfInt, testSize: 1024) | 31.47 | 29.18 | 7.29% XsSerializationTest(numberOfRuns: 100, testType: ListOfSimpleType, testSize: 1024) | 244.6 | 238.2 | 2.61% XsSerializationTest(numberOfRuns: 1000, testType: ArrayOfSimpleType, testSize: 128) | 312.8 | 304.4 | 2.67% XsSerializationTest(numberOfRuns: 1000, testType: ListOfInt, testSize: 128) | 40.78 | 38.56 | 5.46% XsSerializationTest(numberOfRuns: 1000, testType: ListOfSimpleType, testSize: 128) | 306.4 | 299.6 | 2.21% XsSerializationTest(numberOfRuns: 10000, testType: ISerializable, testSize: -1) | 14.58 | 14.70 | -0.80% XsSerializationTest(numberOfRuns: 10000, testType: SimpleStructWithProperties, testSize: 1) | 45.31 | 43.90 | 3.13% XsSerializationTest(numberOfRuns: 10000, testType: String, testSize: 1024) | 30.80 | 26.38 | 14.36% XsSerializationTest(numberOfRuns: 10000, testType: String, testSize: 128) | 14.67 | 14.30 | 2.48% XsSerializationTest(numberOfRuns: 10000, testType: XmlElement, testSize: -1) | 13.88 | 13.77 | 0.83% XsSerializationTest(numberOfRuns: 5, testType: ByteArray, testSize: 1048576) | 13.64 | 9.879 | 27.55% Here are the results for the default ref emit serializer. Test | Baseline | Changes | % Diff --- | --- | --- | --- XsDeSerializationTest(numberOfRuns: 1, testType: ListOfInt, testSize: 1048576) 400.6 | 377.9 | 5.66% XsDeSerializationTest(numberOfRuns: 1, testType: SimpleType, testSize: 15) | 369.2 | 361.1 | 2.19% XsDeSerializationTest(numberOfRuns: 1, testType: SimpleTypeWithFields, testSize: 15) | 367.2 | 354.2 | 3.54% XsDeSerializationTest(numberOfRuns: 10, testType: SimpleType, testSize: 1) | 0.135 | 0.132 | 2.31% XsDeSerializationTest(numberOfRuns: 100, testType: ArrayOfSimpleType, testSize: 1024) | 133.0 | 128.4 | 3.43% XsDeSerializationTest(numberOfRuns: 100, testType: ByteArray, testSize: 1024) | 1.389 | 1.365 | 1.70% XsDeSerializationTest(numberOfRuns: 100, testType: DateTimeArray, testSize: 1024) | 56.61 | 53.87 | 4.84% XsDeSerializationTest(numberOfRuns: 100, testType: ListOfInt, testSize: 1024) | 36.47 | 34.79 | 4.62% XsDeSerializationTest(numberOfRuns: 100, testType: ListOfSimpleType, testSize: 1024) | 130.1 | 128.0 | 1.61% XsDeSerializationTest(numberOfRuns: 1000, testType: ArrayOfSimpleType, testSize: 128) | 173.3 | 165.4 | 4.59% XsDeSerializationTest(numberOfRuns: 1000, testType: ListOfInt, testSize: 128) | 48.73 | 47.62 | 2.28% XsDeSerializationTest(numberOfRuns: 1000, testType: ListOfSimpleType, testSize: 128) | 171.1 | 169.8 | 0.79% XsDeSerializationTest(numberOfRuns: 10000, testType: ISerializable, testSize: -1) | 29.27 | 29.42 | -0.50% XsDeSerializationTest(numberOfRuns: 10000, testType: SimpleStructWithProperties, testSize: 1) | 50.88 | 49.02 | 3.67% XsDeSerializationTest(numberOfRuns: 10000, testType: String, testSize: 1024) | 67.47 | 63.73 | 5.54% XsDeSerializationTest(numberOfRuns: 10000, testType: String, testSize: 128) | 38.23 | 37.70 | 1.38% XsDeSerializationTest(numberOfRuns: 10000, testType: XmlElement, testSize: -1) | 35.55 | 34.15 | 3.94% XsDeSerializationTest(numberOfRuns: 5, testType: ByteArray, testSize: 1048576) | 73.92 | 70.33 | 4.86% XsSerializationTest(numberOfRuns: 1, testType: ListOfInt, testSize: 1048576) | 249.2 | 235.6 | 5.47% XsSerializationTest(numberOfRuns: 1, testType: SimpleType, testSize: 15) | 267.9 | 143.1 | 46.60% XsSerializationTest(numberOfRuns: 1, testType: SimpleTypeWithFields, testSize: 15) | 270.8 | 140.0 | 48.29% XsSerializationTest(numberOfRuns: 10, testType: SimpleType, testSize: 1) | 0.056 | 0.063 | **-13.68%** XsSerializationTest(numberOfRuns: 100, testType: ArrayOfSimpleType, testSize: 1024) | 64.82 | 61.19 | 5.59% XsSerializationTest(numberOfRuns: 100, testType: ByteArray, testSize: 1024) | 0.407 | 0.367 | 9.77% XsSerializationTest(numberOfRuns: 100, testType: DateTimeArray, testSize: 1024) | 54.06 | 47.28 | 12.53% XsSerializationTest(numberOfRuns: 100, testType: ListOfInt, testSize: 1024) | 22.66 | 20.47 | 9.66% XsSerializationTest(numberOfRuns: 100, testType: ListOfSimpleType, testSize: 1024) | 63.68 | 60.40 | 5.15% XsSerializationTest(numberOfRuns: 1000, testType: ArrayOfSimpleType, testSize: 128) | 83.09 | 79.71 | 4.07% XsSerializationTest(numberOfRuns: 1000, testType: ListOfInt, testSize: 128) | 29.88 | 28.60 | 4.31% XsSerializationTest(numberOfRuns: 1000, testType: ListOfSimpleType, testSize: 128) | 82.95 | 78.79 | 5.02% XsSerializationTest(numberOfRuns: 10000, testType: ISerializable, testSize: -1) | 18.41 | 18.02 | 2.09% XsSerializationTest(numberOfRuns: 10000, testType: SimpleStructWithProperties, testSize: 1) | 29.78 | 29.32 | 1.55% XsSerializationTest(numberOfRuns: 10000, testType: String, testSize: 1024) | 30.50 | 26.01 | 14.74% XsSerializationTest(numberOfRuns: 10000, testType: String, testSize: 128) | 14.75 | 13.71 | 7.04% XsSerializationTest(numberOfRuns: 10000, testType: XmlElement, testSize: -1) | 17.20 | 16.57 | 3.63% XsSerializationTest(numberOfRuns: 5, testType: ByteArray, testSize: 1048576) | 13.35 | 10.07 | 24.57% The serialization result for SimpleType and testSize of 1 shows a regression. This only have the number of runs set at 10 and the results are very small periods of time. When modifying the test to have the number of runs at 10000, performance improved with these changes by 8.1%. Further investigation is needed as it appears there's a higher startup cost which is overcome by a per-iteration cost when the number of iterations passes some threshold. +21156 area-System.IO System.IO.Ports.Tests.OpenDevices.OpenDevices01 failed in uap This test is throwing the following exception: ``` System.Exception : Unknown Win32 Error: 5 Stack Trace: at System.IO.Ports.Tests.DosDevices.CallQueryDosDevice(String name, Int32& dataSize) at System.IO.Ports.Tests.DosDevices.Initialize() at System.IO.Ports.Tests.DosDevices..ctor() at System.IO.Ports.Tests.OpenDevices.OpenDevices01() ``` When calling [CallQueryDosDevice](https://github.com/dotnet/corefx/blob/master/src/System.IO.Ports/tests/SerialPort/DosDevices.cs#L133) cc: @danmosemsft @JeremyKuhne +21157 area-System.IO Remove WinRT specific code A lot won't be necessary. Killing a number of methods that we don't need to make re-enabling the ones we do easier. +21158 area-Infrastructure Array initialization throws ArgumentOutOfRangeException if size is 0 in ILC mode System.Net.Sockets.SendPacketsAsync tests run fine in F5 ('uap') & netcore & netfx mode. But in ILC ('uap-aot') mode they are failing. It seems that the array initialization throws ArgumentOutOfRangeException if size is 0 (take one test for example): ```c# [Theory] [InlineData(SocketImplementationType.APM)] [InlineData(SocketImplementationType.Async)] public void EmptyBuffer_Ignored(SocketImplementationType type) { SendPackets(type, new SendPacketsElement(new byte[0]), 0); } ``` SendPackets() will eventually call into `SetupPinHandlesSendPackets()` in `SocketAsyncEventArgs.Windows.cs` ```c# private unsafe void SetupPinHandlesSendPackets() { ... _sendPacketsDescriptor = new Interop.Winsock.TransmitPacketsElement[_sendPacketsElementsFileCount + _sendPacketsElementsBufferCount]; // throws ArgumentOutOfRangeException if size is 0, i.e _sendPacketsElementsFileCount + _sendPacketsElementsBufferCount == 0 ... } ``` If _sendPacketsElementsFileCount + _sendPacketsElementsBufferCount == 0, we get failures like this: >System.ArgumentOutOfRangeException : Specified argument was out of the range of valid values. Is this an expected problem from the UWP test runner in ILC mode? This is the cause for 90% of Sockets Functional tests failure in ILC mode. cc: @davidsh +21159 area-System.IO Fix System.IO.Ports.Tests for uap System.IO.Ports.Tests where hanging because of issue related to: https://github.com/dotnet/corefx/issues/21156 Also I've fixed tests that where trying to access common path to use TempPath and disabled a couple of more tests. +21160 area-System.Data Standarize on DiagnosticSource for tracing in System.Data.* components Currently we have around [27 `EventSource` trace points](https://github.com/dotnet/corefx/search?p=1&q=DataCommonEventSource++&type=&utf8=%E2%9C%93) in `System.Data.Common`. On the other hand, SqlClient has been instrumented with `DiagnosticSource`. I talked to @vancem today and we came to the conclusion that there may be enough value in standardizing on `DiagnosticSource` before we release 2.0. This would make the story more consistent for consumers of ADO.NET events (we are planning to add more `DiagnosticSource` instrumentation and make it easier for ADO.NET providers to add it) and once we ship the `EventSource` instrumentation it is unlikely that we will be able to remove it. cc @saurabh500 +21162 area-System.Xml Fix System.Xml.Xsl.XslTransformApi.Tests in uap This tests where crashing because they had ~1300 failures in uap and we currently dump all the failures to the app runner's UI so that 1300 stack traces where blowing up the runner and crashing. This PR fixes all of them and brings failures to 0. So we should stop seeing them crashing and this would bring 1546 more test that will be running :) cc: @danmosemsft +21163 area-Serialization Aot forwarder fixes Fixes the ifdefs for the mscorlib and System facades to build for aot as well. Also includes a minor rd.xml tweak for BinaryFormatter. Fixes hundreds of BinaryFormatter tests. Progress on #19119 +21165 area-System.Runtime Add ComAwareEventInfo tests Extracted from #21140 +21166 area-System.Data System.ExecutionEngineException in System.Data.Common.dll The program is an ASP.Net Core 2.0 Preview MVC application, runs in an IIS application pool. After running several hours, an access to an action will let the runtime to load System.Data.Common.dll, then trigger a System.ExecutionEngineException in that assembly. Here is the stack trace extracted from the Stack window in Visual Studio's Debug View (I cannot get details that inside the exception, since Visual Studio always said `Cannot evaluate the value of expression $exception`.): ``` [Managed to native] System.Data.Common.dll!System.Data.Common.DbConnectionStringBuilder.ConnectionString.set(string value) Unknown MySqlConnector.dll!MySql.Data.MySqlClient.MySqlConnection.ConnectionString.set(string value) Unknown MySqlConnector.dll!MySql.Data.MySqlClient.MySqlConnection.MySqlConnection(string connectionString) Unknown > SXLibraryCore.dll!SXLibraryCore.DBHelper.MySql.CreateConnection(string connStr) Line 45 C# ClientDemo.dll!LoggingTester.Relay.NewConnection() Line 41 C# ClientDemo.dll!LoggingTester.Controllers.TestController.Index() Line 25 C# [Lightweight Function] Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ObjectMethodExecutor.Execute(object target, object[] parameters) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__18>(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__18 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.State next, ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__16>(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__16 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.State next, ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__16>(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__16 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAwaitedAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__17>(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__17 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAwaitedAsync() Unknown Microsoft.AspNetCore.Mvc.ViewFeatures.dll!Microsoft.AspNetCore.Mvc.Controller.OnActionExecutionAsync(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext context, Microsoft.AspNetCore.Mvc.Filters.ActionExecutionDelegate next) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__27>(ref Microsoft.AspNetCore.Mvc.Controller.d__27 stateMachine) Unknown Microsoft.AspNetCore.Mvc.ViewFeatures.dll!Microsoft.AspNetCore.Mvc.Controller.OnActionExecutionAsync(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext context, Microsoft.AspNetCore.Mvc.Filters.ActionExecutionDelegate next) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionFilter.OnActionExecutionAsync(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext context, Microsoft.AspNetCore.Mvc.Filters.ActionExecutionDelegate next) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__4>(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionFilter.d__4 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionFilter.OnActionExecutionAsync(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext context, Microsoft.AspNetCore.Mvc.Filters.ActionExecutionDelegate next) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.State next, ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__21>(ref Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__21 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.Next(ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.InvokeNextResourceFilter() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__18>(ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.d__18 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.InvokeNextResourceFilter() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.Next(ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.InvokeFilterPipelineAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__13>(ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.d__13 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.InvokeFilterPipelineAsync() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.InvokeAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__11>(ref Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.d__11 stateMachine) Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Core.Internal.ResourceInvoker.InvokeAsync() Unknown Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Internal.MvcRouteHandler.RouteAsync.AnonymousMethod__0(Microsoft.AspNetCore.Http.HttpContext c) Unknown Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__4>(ref Microsoft.AspNetCore.Builder.RouterMiddleware.d__4 stateMachine) Unknown Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown Microsoft.AspNetCore.StaticFiles.dll!Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) Unknown Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__6>(ref Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.d__6 stateMachine) Unknown Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) Unknown Microsoft.AspNetCore.Server.IISIntegration.dll!Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__8>(ref Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.d__8 stateMachine) Unknown Microsoft.AspNetCore.Server.IISIntegration.dll!Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown Microsoft.AspNetCore.HttpOverrides.dll!Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) Unknown Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__3>(ref Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3 stateMachine) Unknown Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.HostingApplication.ProcessRequestAsync(Microsoft.AspNetCore.Hosting.Internal.HostingApplication.Context context) Unknown Microsoft.AspNetCore.Server.Kestrel.Core.dll!Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame.RequestProcessingAsync() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner..cctor.AnonymousMethod__4_0(object sm) Unknown System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunnerWithContext.RunWithCapturedContext() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0() Unknown System.Private.CoreLib.ni.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke() Unknown Microsoft.AspNetCore.Server.Kestrel.Core.dll!Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.LoggingThreadPool.RunAction.AnonymousMethod__3_0(object o) Unknown System.Private.CoreLib.ni.dll!System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(object state) Unknown System.Private.CoreLib.ni.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown System.Private.CoreLib.ni.dll!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() Unknown System.Private.CoreLib.ni.dll!System.Threading.ThreadPoolWorkQueue.Dispatch() Unknown System.Private.CoreLib.ni.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() Unknown ``` (The stack trace is copied from a Visual Studio with Simplified Chinese language pack, I translated a little part of it. Hope that won't lead to any confusion.) Here, the function `SXLibraryCore.dll!SXLibraryCore.DBHelper.MySql.CreateConnection(string connStr)` is just a one-liner: `return new MySqlConnection(connectionString)`. Environment: Windows Server 2012R2 x64 / IIS 8 / .Net Core 2.0 Preview 1 with ASP.Net Core 2.0 Preview 1 +21167 area-System.Runtime Add a System.Runtime.CompilerServices.VisualC test project Was going through projects without a test project to see what's missing. Went ahead and added some tests - they're not really important +21168 area-System.Runtime Marshal.IsComObject on Unix should throw ArgumentNullException if the object is null to match Windows behaviour "This is causing test failures in #21165 on Unix: ```cs [Fact] [ActiveIssue()] public void AddEventHandler_NullTarget_ThrowsArgumentNullException() { var attribute = new ComAwareEventInfo(typeof(NonComObject), nameof(NonComObject.Event)); AssertExtensions.Throws(""o"", () => attribute.AddEventHandler(null, new EventHandler(EventHandler))); } public class NonComObject { public event EventHandler Event; } ``` Although `Marshal.IsComObject` is a nop on Unix, we want to match the argument validation as some code relies on it on Windows" +21171 area-System.Net Fix some Sockets Functional test failures in ILC mode Fix: #21062 #21057 +21174 area-System.Runtime Add test project for System.Runtime.InteropServices.Windows And add some tests +21175 area-System.Drawing Fix netfx test failures in System.Drawing.Common - One case where app switches are flipped between netfx and netcoreapp for PNG icons. I also added a test to make sure netcoreapp also obeys app switches - One case where an icon would be finalized in an iterator for test data in ToBitmap tests (I think that's what's causing it) - One case of platform specific serialization Fixes #21294 +21177 area-System.Drawing Cleanup Brushes/Pens/Icons/Colors/Fonts code Contributes to #20706 +21178 area-System.Drawing Remove Win9x/Vista specific code from System.Drawing.Common We support Win7+ Contributes to #20706 +21179 area-System.Drawing Cleanup System.Drawing.Drawing2D code As discussed in #20711 +21180 area-System.Drawing Add tests for various System.Drawing.Common brushes And cleanup some code +21181 area-Infrastructure RemoteExecutorTestBase throws TargetParameterCountException passing an empty string as an argument Example: ```cs RemoteInvoke(param => Assert.Empty(param), string.Empty).Dispose(); ``` +21182 area-System.Drawing Add some tests for System.Drawing.Common.Imaging for issue #20711 Hi Ive add some tests for this easier part of Imaging. What do you think about ImageCodecInfoTests.cs ? Maybe better idea will be to rewrite it to theory? +21184 area-System.Runtime Add System.Runtime.WindowsRuntime.UI.Xaml test project and tests Starting with 100% CC right off the bat :D +21186 area-System.IO InvalidBufferSizeThrows failed on netfx https://ci.dot.net/job/dotnet_corefx/job/release_2.0.0/job/netfx_windows_nt_debug_prtest/219/consoleText System.IO.Tests.FileStream_ctor_sfh_fa_buffer_async.InvalidBufferSizeThrows [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ObjectDisposedException): Cannot access a closed file. Finished: System.Collections.Concurrent.Tests Stack Trace: === TEST EXECUTION SUMMARY === Using D:\j\workspace\netfx_windows---120b7803\bin\testhost\netfx-Windows_NT-Debug-x86\ as the test runtime folder. System.Collections.Concurrent.Tests Total: 2027, Errors: 0, Failed: 0, Skipped: 0, Time: 41.910s Executing in D:\j\workspace\netfx_windows---120b7803\bin\AnyOS.AnyCPU.Debug\System.Globalization.Extensions.Tests\netstandard\ Running tests... Start time: 6:52:32.15 at System.IO.__Error.FileNotOpen() at System.IO.FileStream.Flush(Boolean flushToDisk) at System.IO.FileStream.get_SafeFileHandle() Finished running tests. End time= 6:52:32.47, Exit code = 0 D:\j\workspace\netfx_windows---120b7803\src\System.IO.FileSystem\tests\FileStream\ctor_sfh_fa_buffer.cs(30,0): at System.IO.Tests.FileStream_ctor_sfh_fa_buffer.<>c__DisplayClass2_0.b__1() +21187 area-System.Runtime Remove unnecessary attributes and callback from non-serializable types Relates to changes introduced in https://github.com/dotnet/corefx/issues/19119 Remove unnecessary attributes and callbacks (NonSerialized, OnSerializing, etc) from non-serializable types. - [x] CoreFX - [ ] CoreCLR - [ ] CoreRT cc @danmosemsft @morganbr +21188 area-System.Runtime Add Roslyn analyzer to build to check nothing has [Serializable] that's not on the approved list Relates to changes introduced in https://github.com/dotnet/corefx/issues/19119 Add Roslyn analyzer to build to check nothing has [Serializable] that's not on the approved list cc @danmosemsft @morganbr +21189 area-System.Runtime Disabling binary serialization fuzzying test (#21185) Port to 2.0. Was issue https://github.com/dotnet/corefx/issues/21035 +21190 area-System.Diagnostics Thread.Name should use SetThreadDescription Windows 10 Creators Update delivers new APIs to set the thread name https://msdn.microsoft.com/en-us/library/windows/desktop/mt774976(v=vs.85).aspx These should be used by the managed thread name set property as well so one can find the thread name in ETW traces on Windows as well. Currently there was no way to set the thread name for unmanaged threads with a decent API until Creators Update. +21192 area-System.Collections Avoid O(N^2) in HashSetEquals and SortedSetEquals Avoid O(N^2) in HashSetEquals and SortedSetEquals when the two sets have different comparers, but one of them has the fallback comparer. We treat the set without the fallback comparer as just another IEnumerable, and determine equality in O(N) +21193 area-System.Drawing System.Drawing needs more code coverage (13.4%) https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/Code_Coverage_Report/ This is a great place for new contributors to start. +21195 area-Infrastructure Windows 10 legs appear to be missing From the badges on the home page: ![image](https://user-images.githubusercontent.com/2642209/27267566-54819300-5477-11e7-94ab-6496cf327ada.png) cc: @danmosemsft +21196 area-Infrastructure Correctly handle empty strings in params of RemoteExecutorTestBase Fixes #21181 I tested this by modifying an existing test in System.Runtime to use the empty string alongside other data. As part of this, I noticed that one of the tests that asserts a FileNotFoundException actually originated from Assembly.LoadFrom, rather than the actual method that we were testing. We already have coverage for Assembly.LoadFrom where the path doesn't exist, so we can safely delete that test. +21198 area-System.Linq "System.Linq.Expressions tests disabled with [Theory(Skip = ""870811"")]" System.Linq.Expressions.Tests.LambdaTests.InvokeComputedLambda [SKIP] System.Linq.Expressions.Tests.Compiler_Tests.CallOnCapturedInstance [SKIP] System.Linq.Expressions.Tests.Compiler_Tests.NewExpressionwithMemberAssignInit [SKIP] System.Linq.Expressions.Tests.Compiler_Tests.ArrayInitializedWithCapturedInstance [SKIP] System.Linq.Expressions.Tests.Compiler_Tests.TestAndAlso [SKIP] This number doesn't mean anything. +21200 area-Meta Minor test cleanup Looked through our disabled tests and noticed a couple nits. +21201 area-System.Xml Cleanup active issues on XML tests Many are archaic: ``` System.Xml.Tests.CXmlResolverTest.XmlResolver3 [SKIP] SQLBU Defect Tracking Bug 430834: Skipping when input type is URI, see bug for more details. System.Xml.Tests.CXmlResolverTest.XmlResolver7 [SKIP] When style sheet URI = Intranet zone, XmlSecureResolver does not resolve document function System.Xml.Tests.CLoadXmlResolverTest.LoadGeneric6 [SKIP] By design bug #84957: Skip this test for Load(url, resolver) System.Xml.Tests.CLoadXmlResolverTest.LoadGeneric7 [SKIP] By design bug #84957: Skip this test for Load(url, resolver) System.Xml.Tests.CLoadXmlResolverTest.LoadGeneric8 [SKIP] By design bug #84957: Skip this test for Load(url, resolver) System.Xml.Tests.CLoadXmlResolverTest.LoadGeneric5 [SKIP] By design bug #84957: Skip this test for Load(url, resolver) System.Xml.Tests.CLoadXPathNavigableTest.LoadNavigator4 [SKIP] Not InProc System.Xml.Tests.CTransformResolverTest.XmlResolver5 [SKIP] When style sheet URI = Intranet zone, XmlSecureResolver does not resolve document function System.Xml.Tests.CTransformResolverTest.XmlResolver3 [SKIP] SQLBU Defect Tracking Bug 430834: Skipping when input type is URI, see bug for more details. System.Xml.Tests.CTransformStrStrResolverTest.TransformStrStrResolver3 [SKIP] SQLBU Defect Tracking Bug 430834: Skipping when input type is URI, see bug for more details. System.Xml.Tests.CNDP1_1SP1Test.var3 [SKIP] SQLBU Defect Tracking Bug 430834: Skipping when input type is URI, see bug for more details. System.Xml.Tests.XsltcTestPlatform.Var1 [SKIP] ``` The tests should either be enabled, deleted, or ActiveIssue against a real issue. +21202 area-System.Net Uri(String, UriKind) throws IndexOutOfRangeException for certain inputs "We're relying on `Uri` in the http://github.com/dotnet/project-system, to represent paths. Testing our path handling code, I found that Uri throws IndexOutOfRangeException (instead of UriFormatException) in the following situations: ``` C# new Uri(""/\\‎//"", UriKind.Absolute); new Uri(""\\/\u200e"", UriKind.Absolute); new Uri(""/\\\\-Ā\r"", UriKind.Absolute); new Uri(""\\\\\\\\\\‎"", UriKind.Absolute); ```" +21203 area-System.Globalization "Test: System.Globalization.Tests.NumberFormatInfoCurrentInfo/CurrentInfo_Subclass_OverridesNumberFormat failed with ""Xunit.Sdk.TrueException""" "Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.NumberFormatInfoCurrentInfo/CurrentInfo_Subclass_OverridesNumberFormat` has failed. ``` RemoteExecuter: System.Globalization.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb b__3_0 \r System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.SameException: Assert.Same() Failure\r Expected: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"",\"", CurrencyGroupSeparator = \"" \"", CurrencyGroupSizes = [3], CurrencyNegativePattern = 8, ... }\r Actual: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"".\"", CurrencyGroupSeparator = \"",\"", CurrencyGroupSizes = [3], CurrencyNegativePattern = 0, ... }\r at System.Globalization.Tests.NumberFormatInfoCurrentInfo.<>c.b__3_0()\r --- End of inner exception stack trace ---\r at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)\r at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)\r at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)\r at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData)\r Returned Error code: -4\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Globalization.Tests.NumberFormatInfoCurrentInfo.CurrentInfo_Subclass_OverridesNumberFormat() Build : Master - 20170619.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Release ``` Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170619.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoCurrentInfo~2FCurrentInfo_Subclass_OverridesNumberFormat" +21204 area-System.IO "Test: System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests/TestValidDiskSpaceProperties failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests/TestValidDiskSpaceProperties` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests.TestValidDiskSpaceProperties() Build : Master - 20170619.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170619.01/workItem/System.IO.FileSystem.DriveInfo.Tests/analysis/xunit/System.IO.FileSystem.DriveInfoTests.DriveInfoWindowsTests~2FTestValidDiskSpaceProperties +21206 area-System.IO "Test: System.IO.Tests.FileStream_CopyToAsync/NamedPipeViaFileStream_AllDataCopied failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.FileStream_CopyToAsync/NamedPipeViaFileStream_AllDataCopied(useAsync: False, writeSize: 10, numWrites: 1024)` has failed. System.UnauthorizedAccessException : Access to the path is denied. Stack Trace: at System.IO.Pipes.NamedPipeServerStream.Create(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.NamedPipeServerStream..ctor(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.NamedPipeServerStream..ctor(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options) at System.IO.Tests.FileStream_CopyToAsync.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170619.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170619.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.FileStream_CopyToAsync~2FNamedPipeViaFileStream_AllDataCopied(useAsync:%20False,%20writeSize:%2010,%20numWrites:%201024) +21207 area-System.Runtime Add tests for changes to Marshal.ComObject in coreclr Fixes #21168 +21208 area-System.Runtime "Test: System.Text.Tests.StringBuilderTests/Insert_Decimal(original: \""Hello\"", index: 5, doubleValue: -4,56, expected: \""Hello-4.56\"") failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Text.Tests.StringBuilderTests/Insert_Decimal(original: \""Hello\"", index: 5, doubleValue: -4,56, expected: \""Hello-4.56\"")` has failed. Assert.Equal() Failure\r ? (pos 7)\r Expected: Hello-4.56\r Actual: Hello-4,56\r ? (pos 7) Stack Trace: at System.Text.Tests.StringBuilderTests.<>c__DisplayClass99_0.b__0() at System.Tests.Helpers.PerformActionWithCulture(CultureInfo culture, Action test) at System.Text.Tests.StringBuilderTests.Insert_Decimal(String original, Int32 index, Double doubleValue, String expected) Build : Master - 20170619.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170619.01/workItem/System.Runtime.Tests/analysis/xunit/System.Text.Tests.StringBuilderTests~2FInsert_Decimal(original:%20%5C%22Hello%5C%22,%20index:%205,%20doubleValue:%20-4,56,%20expected:%20%5C%22Hello-4.56%5C%22)" +21209 area-System.Threading "Test: System.Threading.Tests.EventWaitHandleTests/PingPong failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Threading.Tests.EventWaitHandleTests/PingPong(mode: AutoReset)` has failed. RemoteExecuter: System.Threading.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb PingPong_OtherProcess AutoReset, d3b856e924c440d3a9e5a366115f8266, ed2a8534cf8a44ac98ac133febfa7a59\r System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.TrueException: Assert.True() Failure\r Expected: True\r Actual: False\r at Xunit.Assert.True(Nullable`1 condition, String userMessage)\r at System.Threading.Tests.EventWaitHandleTests.PingPong_OtherProcess(String modeName, String inboundName, String outboundName)\r --- End of inner exception stack trace ---\r at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)\r at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)\r at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)\r at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData)\r Returned Error code: -4\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`4 method, String arg1, String arg2, String arg3, RemoteInvokeOptions options) at System.Threading.Tests.EventWaitHandleTests.PingPong(EventResetMode mode) Build : Master - 20170619.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170619.01/workItem/System.Threading.Tests/analysis/xunit/System.Threading.Tests.EventWaitHandleTests~2FPingPong(mode:%20AutoReset) +21211 area-System.Drawing Remove some dead code for PngFrame `PngFrame` is only called from a single place - `ToBitmap`. The code for `ToBitmap` checks the following: ```cs public Bitmap ToBitmap() { if (HasPngSignature() && !LocalAppContextSwitches.DontSupportPngFramesInIcons) { return PngFrame(); } else { return BmpFrame(); } } ``` The code for `HasPngSignature` is as follows ```cs private bool HasPngSignature() { if (!_isBestImagePng.HasValue) { if (_iconData != null && _iconData.Length >= _bestImageOffset + 8) { int iconSignature1 = BitConverter.ToInt32(_iconData, _bestImageOffset); int iconSignature2 = BitConverter.ToInt32(_iconData, _bestImageOffset + 4); _isBestImagePng = (iconSignature1 == PNGSignature1) && (iconSignature2 == PNGSignature2); } else { _isBestImagePng = false; } } return _isBestImagePng.Value; } ``` Note that `_isBestImagePng` will always be false if `_iconData == null`. This means that `PngFrame()` won't be called if `_iconData == null`, so the check is dead inside `PngFrame`. Note that `_isBestImagePng` is a cached variable, so if `_iconData` changes, then `_isBestImagePng` won't change. However, `_iconData` can be made readonly, so we know that `_iconData` and `_isBestImagePng` are fixed, so this is OK +21212 area-System.Collections "Test: System.Collections.Concurrent.Tests.ConcurrentQueueTests/ManyConcurrentAddsTakesPeeks_ForceContentionWithOtherThreadsTaking(seconds: 1) failed with ""Xunit.Sdk.InRangeException""" Opened on behalf of @Jiayili1 The test `System.Collections.Concurrent.Tests.ConcurrentQueueTests/ManyConcurrentAddsTakesPeeks_ForceContentionWithOtherThreadsTaking(seconds: 1)` has failed. Assert.InRange() Failure\r Range: (1 - 4)\r Actual: 0 Stack Trace: at System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests.<>c__DisplayClass50_0.b__0() at xunit.console.netcore!+0xba7a96 at xunit.console.netcore!+0x84e117 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x7a9e1c at xunit.console.netcore!+0x7a9d6a at xunit.console.netcore!+0x7a9cef at System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests.WaitAllOrAnyFailed(Threading.Tasks.Task[] tasks) at System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests.ManyConcurrentAddsTakesPeeks_ForceContentionWithOtherThreadsTaking(Double seconds) at xunit.console.netcore!+0x9f6557 at xunit.console.netcore!+0x8a3b7c at xunit.console.netcore!+0x8a39d4 Build : Master - 20170619.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170619.01/workItem/System.Collections.Concurrent.Tests/analysis/xunit/System.Collections.Concurrent.Tests.ConcurrentQueueTests~2FManyConcurrentAddsTakesPeeks_ForceContentionWithOtherThreadsTaking(seconds:%201) +21213 area-System.Collections "Tests under: System.Collections.Generic.Tests.EqualityComparerTests failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Collections.Generic.Tests.EqualityComparerTests/NullableEquals(left: System.Collections.Tests.NonEquatableValueType, right: System.Collections.Tests.NonEquatableV...` has failed. Assert.Equal() Failure\r Expected: 16777216\r Actual: 1 Stack Trace: at xunit.console.netcore!+0xcdb4c0 at xunit.console.netcore!+0xc33b98 at xunit.console.netcore!+0xc335a3 at xunit.console.netcore!+0xc353a4 at xunit.console.netcore!+0xc32e18 at xunit.console.netcore!+0xc32d75 at xunit.console.netcore!+0xc33b98 at xunit.console.netcore!+0xc335a3 at xunit.console.netcore!+0xc353a4 at xunit.console.netcore!+0xc32e18 at xunit.console.netcore!+0xc32d75 at xunit.console.netcore!+0xcafa1c at xunit.console.netcore!+0xcaf874 Build : Master - 20170619.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Release - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170619.01/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Generic.Tests.EqualityComparerTests~2FNullableEquals%3CNonEquatableValueType%3E(left:%20System.Collections.Tests.NonEquatableValueType,%20right:%20System.Collections.Tests.NonEquatableV... +21214 area-System.ComponentModel "Test: System.ComponentModel.Tests.InvalidEnumArgumentExceptionTests/Deserialize_ThrowsPlatformNotSupportedException failed with ""System.NotImplementedException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.Tests.InvalidEnumArgumentExceptionTests/Deserialize_ThrowsPlatformNotSupportedException` has failed. System.NotImplementedException : The method or operation is not implemented. Stack Trace: at System.Exception.GetObjectData(Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext context) at xunit.console.netcore!+0x83d599 at xunit.console.netcore!+0x83b020 at xunit.console.netcore!+0x83adbb at System.ComponentModel.Tests.InvalidEnumArgumentExceptionTests.Deserialize_ThrowsPlatformNotSupportedException() at xunit.console.netcore!+0x90cbde at xunit.console.netcore!+0x7d25fc at xunit.console.netcore!+0x7d2454 Build : Master - 20170619.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Release - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170619.01/workItem/System.ComponentModel.Primitives.Tests/analysis/xunit/System.ComponentModel.Tests.InvalidEnumArgumentExceptionTests~2FDeserialize_ThrowsPlatformNotSupportedException +21215 area-System.Diagnostics "Test: BasicEventSourceTests.TestsManifestNegative/Test_GenerateManifest_InvalidEventSources failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `BasicEventSourceTests.TestsManifestNegative/Test_GenerateManifest_InvalidEventSources` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.NullReferenceException): Object reference not set to an instance of an object. Stack Trace: at xunit.console.netcore!+0x9124e3 at System.Diagnostics.Tracing.EventSource.GenerateManifest(Type eventSourceType, String assemblyPathToIncludeInManifest, Diagnostics.Tracing.EventManifestOptions flags) at BasicEventSourceTests.TestsManifestNegative.<>c__DisplayClass2_0.b__1() at System.Func.Invoke() Build : Master - 20170619.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Release - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170619.01/workItem/System.Diagnostics.Tracing.Tests/analysis/xunit/BasicEventSourceTests.TestsManifestNegative~2FTest_GenerateManifest_InvalidEventSources +21216 area-System.Diagnostics "Tests under: BasicEventSourceTests.TestsUserErrors failed with ""Xunit.Sdk.EqualException"" & ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `BasicEventSourceTests.TestsUserErrors/Test_BadEventSource_MismatchedIds` has failed. Assert.Equal() Failure\r ? (pos 5)\r Expected: EventSourceMessage\r Actual: Event1\r ? (pos 5) Stack Trace: at BasicEventSourceTests.TestsUserErrors.Test_Bad_EventSource_Startup(Boolean onStartup, Listener listener, Diagnostics.Tracing.EventSourceSettings settings) at BasicEventSourceTests.TestsUserErrors.Test_BadEventSource_MismatchedIds() at xunit.console.netcore!+0xa9afce at xunit.console.netcore!+0x9716ac at xunit.console.netcore!+0x971504 Build : Master - 20170619.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Release - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170619.01/workItem/System.Diagnostics.Tracing.Tests/analysis/xunit/BasicEventSourceTests.TestsUserErrors~2FTest_BadEventSource_MismatchedIds +21218 area-System.Net "Test: System.Net.Security.Tests.LoggingTest/EventSource_EventsRaisedAsExpected failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.LoggingTest/EventSource_EventsRaisedAsExpected` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -323331298 Stack Trace: at xunit.console.netcore!+0x8615a8 at System.Net.Security.Tests.LoggingTest.EventSource_EventsRaisedAsExpected() at xunit.console.netcore!+0x932f2e at xunit.console.netcore!+0x80751c at xunit.console.netcore!+0x807374 Build : Master - 20170619.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Release - Windows.10.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170619.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.LoggingTest~2FEventSource_EventsRaisedAsExpected +21219 area-System.Collections One or more tests failed while running tests from 'System.Collections.Immutable.Tests' failed in ci /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/Tools/tests.targets(353,5): error : One or more tests failed while running tests from 'System.Collections.Immutable.Tests' please check /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/bin/AnyOS.AnyCPU.Debug/System.Collections.Immutable.Tests/netcoreapp/testResults.xml for details! [/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj] detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/rhel7.2_debug/2971/consoleFull#32536873579fe3b83-f408-404c-b9e7-9207d232e5fc +21220 area-System.Runtime Consolidate files of the same name in System.Runtime These used to be netstandard1.7 specific I think. Now they can be merged +21223 area-Serialization Fixing SizeF, CookieContainer, CookieCollection serialization between Core <--> Desktop and adding full binary mode tests Relates to https://github.com/dotnet/coreclr/pull/12365 Port for 2.0.0: https://github.com/dotnet/corefx/pull/21224 ## Fixing - SizeF public key token was wrong - CookieContainer core --> desktop serialization in simple and full mode - CookieCollection serialization core <--> desktop in simple and full mode (A regression introduced by my latest change on Friday) ## Adding - Tests for full mode binaryformatter - Integrity test for blobs ## Requires - CompareInfo culture field serialization fix in coreclr: https://github.com/dotnet/coreclr/pull/12365 What I also realized, we aren't updating the blobs in CI which means that we don't detect if a change is harming our serialization support... cc @danmosemsft @krwq +21224 area-Serialization Fixing SizeF, CookieContainer, CookieCollection serialization between Core <--> Desktop and adding full binary mode tests https://github.com/dotnet/corefx/pull/21223 Requires https://github.com/dotnet/coreclr/pull/12367 cc @danmosemsft +21225 area-Infrastructure Dumpling fails with AttributeError: DumplingConfig instance has no attribute 'dbgpath' " ``` 21:18:56 python DumplingHelper.py install_dumpling 21:18:56 __TIMESTAMP=`python DumplingHelper.py get_timestamp` 21:18:56 chmod +x /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/bin/testhost/netcoreapp-Linux-Debug-x64//dotnet 21:18:56 /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/bin/testhost/netcoreapp-Linux-Debug-x64//dotnet xunit.console.netcore.exe System.IO.FileSystem.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing 21:18:56 python DumplingHelper.py collect_dump $\ `pwd` System.IO.FileSystem.Tests /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/bin/runtime/netcoreapp-Linux-Debug-x64/,/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/bin/Unix.AnyCPU.Debug/System.IO.FileSystem.Tests/netcoreapp/ 21:18:56 /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/bin/Unix.AnyCPU.Debug/System.IO.FileSystem.Tests/netcoreapp /mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/src/System.IO.FileSystem/tests 21:18:56 downloaded dumpling.py 21:18:56 total elapsed time 0:00:00.178800 21:18:56 xUnit.net console test runner (64-bit .NET Core) 21:18:56 Copyright (C) 2014 Outercurve Foundation. 21:18:56 21:18:56 Discovering: System.IO.FileSystem.Tests 21:18:57 Discovered: System.IO.FileSystem.Tests 21:18:58 Traceback (most recent call last): 21:18:58 File ""/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/tempHome/.dumpling/dumpling.py"", line 1128, in 21:18:58 main(sys.argv) 21:18:58 File ""/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/tempHome/.dumpling/dumpling.py"", line 1123, in main 21:18:58 cmdProc.Process(config) 21:18:58 File ""/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/tempHome/.dumpling/dumpling.py"", line 529, in Process 21:18:58 self.Upload(config) 21:18:58 File ""/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/tempHome/.dumpling/dumpling.py"", line 624, in Upload 21:18:58 self.UploadDump(config) 21:18:58 File ""/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/tempHome/.dumpling/dumpling.py"", line 644, in UploadDump 21:18:58 self._triage_dump(dumpid, config.dumppath, config) 21:18:58 File ""/mnt/resource/j/workspace/dotnet_corefx/master/rhel7.2_debug/tempHome/.dumpling/dumpling.py"", line 812, in _triage_dump 21:18:58 if config.dbgpath is None: 21:18:58 AttributeError: DumplingConfig instance has no attribute 'dbgpath' ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/rhel7.2_debug/2971/consoleFull#32536873579fe3b83-f408-404c-b9e7-9207d232e5fc @mellinoe " +21226 area-System.Net NetworkInterface.Speed: different behavior The property `Speed` of type `NetworkInterface` behaves different on Linux than on Windows. * On Windows I'm getting the number of **bytes** per second. * In my case the returned value is 1,000,000,000 * That is the expected behavior (https://msdn.microsoft.com/de-de/library/system.net.networkinformation.networkinterface.speed(v=vs.110).aspx) * On Linux I'm getting a `PlatformNotSupportedException` (that's ok) or **mega bytes** per second (not ok). * The returned value is 1,000 ## System * ubuntu 16.04 x64 * dotnet version: 1.04 ### NIC Info on Linux ``` Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Cannot get wake-on-lan settings: Operation not permitted Current message level: 0x00000007 (7) drv probe link Link detected: yes ``` +21227 area-System.Net HttpClient socket reuse behavior different on linux/osx/win I help maintain the .NET client for Elasticsearch and one of our integration tests does the following: * download (if needed) Elasticsearch to `/tmp/NEST` or `%APPDATA%\NEST` * start an empty Elasticsearch server and index some data. * do `20` batches of `1000` searches. * Inspect through an Elasticsearch API that exposes how many http connections it currently has open and opened in total if we are actually reusing TCP connections when doing 20k API calls. On windows I can guarantee a stable number for the TCP connections depending on the max conncurrent connections set. 1. clone: https://github.com/elastic/elasticsearch-net 2. checkout `fix/httpclient-curl` 3. Call `./build.sh connectionreuse [concurrent_connections]` on osx/linux or `build connectionreuse [concurrent_connections] on windows` **note** to test both corefx and full framework on windows you can also call `connectionreuse-all` Example: > ./build.sh connectionreuse 6.0.0-alpha1 80 What follows is a bunch of output from this test on various OS's, the reported run time numbers are including starting the server and doing bootstrap work and are only illustrative to show that concurrent connections has an effect on overall running time. The numbers are formatted as followed: > Current Open: X, Total Opened: Y, Iteration Max = Z, Iteration: 0, Total Searches N I expect `X` and `Y` to be a constant fixed value each iteration of `N` searches. Our tests used to make sure that `X` and `Y` equaled `[concurrent_connections]` but on .NET core we see consistent TCP connection bleed so we built in some leeway to allow for some TCP connection dropage while still being able to assert that we do not open and close each a tcp connection for **each** request. # Linux Physical processors: 4 Logical processors: 8 HttpClient (CurlHandler)
Concurrent Connections: 4full tcp connection reuse (45s) ``` Current Open: 4, Total Opened: 5, Iteration Max = 16, Iteration: 0, Total Searches 1000 Current Open: 4, Total Opened: 5, Iteration Max = 16, Iteration: 1, Total Searches 2000 Current Open: 4, Total Opened: 5, Iteration Max = 18, Iteration: 2, Total Searches 3000 Current Open: 4, Total Opened: 5, Iteration Max = 20, Iteration: 3, Total Searches 4000 Current Open: 4, Total Opened: 5, Iteration Max = 22, Iteration: 4, Total Searches 5000 Current Open: 4, Total Opened: 5, Iteration Max = 24, Iteration: 5, Total Searches 6000 Current Open: 4, Total Opened: 5, Iteration Max = 26, Iteration: 6, Total Searches 7000 Current Open: 4, Total Opened: 5, Iteration Max = 28, Iteration: 7, Total Searches 8000 Current Open: 4, Total Opened: 5, Iteration Max = 30, Iteration: 8, Total Searches 9000 Current Open: 4, Total Opened: 5, Iteration Max = 32, Iteration: 9, Total Searches 10000 Current Open: 4, Total Opened: 5, Iteration Max = 34, Iteration: 10, Total Searches 11000 Current Open: 4, Total Opened: 5, Iteration Max = 36, Iteration: 11, Total Searches 12000 Current Open: 4, Total Opened: 5, Iteration Max = 38, Iteration: 12, Total Searches 13000 Current Open: 4, Total Opened: 5, Iteration Max = 40, Iteration: 13, Total Searches 14000 Current Open: 4, Total Opened: 5, Iteration Max = 42, Iteration: 14, Total Searches 15000 Current Open: 4, Total Opened: 5, Iteration Max = 44, Iteration: 15, Total Searches 16000 Current Open: 4, Total Opened: 5, Iteration Max = 46, Iteration: 16, Total Searches 17000 Current Open: 4, Total Opened: 5, Iteration Max = 48, Iteration: 17, Total Searches 18000 Current Open: 4, Total Opened: 5, Iteration Max = 50, Iteration: 18, Total Searches 19000 Current Open: 4, Total Opened: 5, Iteration Max = 52, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:45.6609693 ```
Concurrent Connections: 8tcp connections dropped (32s) ``` Current Open: 8, Total Opened: 14, Iteration Max = 22, Iteration: 0, Total Searches 1000 Current Open: 7, Total Opened: 15, Iteration Max = 22, Iteration: 1, Total Searches 2000 Current Open: 7, Total Opened: 17, Iteration Max = 26, Iteration: 2, Total Searches 3000 Current Open: 7, Total Opened: 19, Iteration Max = 30, Iteration: 3, Total Searches 4000 Current Open: 8, Total Opened: 21, Iteration Max = 34, Iteration: 4, Total Searches 5000 Current Open: 7, Total Opened: 22, Iteration Max = 38, Iteration: 5, Total Searches 6000 Current Open: 8, Total Opened: 24, Iteration Max = 42, Iteration: 6, Total Searches 7000 Current Open: 7, Total Opened: 25, Iteration Max = 46, Iteration: 7, Total Searches 8000 Current Open: 7, Total Opened: 27, Iteration Max = 50, Iteration: 8, Total Searches 9000 Current Open: 7, Total Opened: 29, Iteration Max = 54, Iteration: 9, Total Searches 10000 Current Open: 7, Total Opened: 31, Iteration Max = 58, Iteration: 10, Total Searches 11000 Current Open: 7, Total Opened: 33, Iteration Max = 62, Iteration: 11, Total Searches 12000 Current Open: 8, Total Opened: 35, Iteration Max = 66, Iteration: 12, Total Searches 13000 Current Open: 8, Total Opened: 36, Iteration Max = 70, Iteration: 13, Total Searches 14000 Current Open: 7, Total Opened: 37, Iteration Max = 74, Iteration: 14, Total Searches 15000 Current Open: 7, Total Opened: 39, Iteration Max = 78, Iteration: 15, Total Searches 16000 Current Open: 7, Total Opened: 41, Iteration Max = 82, Iteration: 16, Total Searches 17000 Current Open: 8, Total Opened: 43, Iteration Max = 86, Iteration: 17, Total Searches 18000 Current Open: 7, Total Opened: 44, Iteration Max = 90, Iteration: 18, Total Searches 19000 Current Open: 7, Total Opened: 46, Iteration Max = 94, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:32.8867351 ```
Concurrent Connections: 80tcp connections dropped (27s) ``` Current Open: 80, Total Opened: 87, Iteration Max = 130, Iteration: 0, Total Searches 1000 Current Open: 75, Total Opened: 88, Iteration Max = 130, Iteration: 1, Total Searches 2000 Current Open: 80, Total Opened: 107, Iteration Max = 170, Iteration: 2, Total Searches 3000 Current Open: 78, Total Opened: 115, Iteration Max = 210, Iteration: 3, Total Searches 4000 Current Open: 73, Total Opened: 118, Iteration Max = 250, Iteration: 4, Total Searches 5000 Current Open: 68, Total Opened: 134, Iteration Max = 290, Iteration: 5, Total Searches 6000 Current Open: 76, Total Opened: 147, Iteration Max = 330, Iteration: 6, Total Searches 7000 Current Open: 80, Total Opened: 173, Iteration Max = 370, Iteration: 7, Total Searches 8000 Current Open: 80, Total Opened: 177, Iteration Max = 410, Iteration: 8, Total Searches 9000 Current Open: 72, Total Opened: 178, Iteration Max = 450, Iteration: 9, Total Searches 10000 Current Open: 78, Total Opened: 187, Iteration Max = 490, Iteration: 10, Total Searches 11000 Current Open: 63, Total Opened: 190, Iteration Max = 530, Iteration: 11, Total Searches 12000 Current Open: 65, Total Opened: 209, Iteration Max = 570, Iteration: 12, Total Searches 13000 Current Open: 80, Total Opened: 237, Iteration Max = 610, Iteration: 13, Total Searches 14000 Current Open: 73, Total Opened: 238, Iteration Max = 650, Iteration: 14, Total Searches 15000 Current Open: 67, Total Opened: 255, Iteration Max = 690, Iteration: 15, Total Searches 16000 Current Open: 80, Total Opened: 275, Iteration Max = 730, Iteration: 16, Total Searches 17000 Current Open: 80, Total Opened: 276, Iteration Max = 770, Iteration: 17, Total Searches 18000 Current Open: 80, Total Opened: 280, Iteration Max = 810, Iteration: 18, Total Searches 19000 Current Open: 80, Total Opened: 283, Iteration Max = 850, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:27.9313542 ```
# OSX Physical processors: 1 Logical processors: 4 HttpClient (CurlHandler)
Concurrent Connections: 4full tcp connection reuse (45s) ``` Current Open: 4, Total Opened: 5, Iteration Max = 16, Iteration: 0, Total Searches 1000 Current Open: 4, Total Opened: 5, Iteration Max = 16, Iteration: 1, Total Searches 2000 Current Open: 4, Total Opened: 5, Iteration Max = 18, Iteration: 2, Total Searches 3000 Current Open: 4, Total Opened: 5, Iteration Max = 20, Iteration: 3, Total Searches 4000 Current Open: 4, Total Opened: 5, Iteration Max = 22, Iteration: 4, Total Searches 5000 Current Open: 4, Total Opened: 5, Iteration Max = 24, Iteration: 5, Total Searches 6000 Current Open: 4, Total Opened: 5, Iteration Max = 26, Iteration: 6, Total Searches 7000 Current Open: 4, Total Opened: 5, Iteration Max = 28, Iteration: 7, Total Searches 8000 Current Open: 4, Total Opened: 5, Iteration Max = 30, Iteration: 8, Total Searches 9000 Current Open: 4, Total Opened: 5, Iteration Max = 32, Iteration: 9, Total Searches 10000 Current Open: 4, Total Opened: 5, Iteration Max = 34, Iteration: 10, Total Searches 11000 Current Open: 4, Total Opened: 5, Iteration Max = 36, Iteration: 11, Total Searches 12000 Current Open: 4, Total Opened: 5, Iteration Max = 38, Iteration: 12, Total Searches 13000 Current Open: 4, Total Opened: 5, Iteration Max = 40, Iteration: 13, Total Searches 14000 Current Open: 4, Total Opened: 5, Iteration Max = 42, Iteration: 14, Total Searches 15000 Current Open: 4, Total Opened: 5, Iteration Max = 44, Iteration: 15, Total Searches 16000 Current Open: 4, Total Opened: 5, Iteration Max = 46, Iteration: 16, Total Searches 17000 Current Open: 4, Total Opened: 5, Iteration Max = 48, Iteration: 17, Total Searches 18000 Current Open: 4, Total Opened: 5, Iteration Max = 50, Iteration: 18, Total Searches 19000 Current Open: 4, Total Opened: 5, Iteration Max = 52, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:45.6656894 ```
Concurrent Connections: 8tcp connections dropped (39s) ``` Current Open: 8, Total Opened: 12, Iteration Max = 22, Iteration: 0, Total Searches 1000 Current Open: 8, Total Opened: 13, Iteration Max = 22, Iteration: 1, Total Searches 2000 Current Open: 7, Total Opened: 14, Iteration Max = 26, Iteration: 2, Total Searches 3000 Current Open: 8, Total Opened: 16, Iteration Max = 30, Iteration: 3, Total Searches 4000 Current Open: 8, Total Opened: 17, Iteration Max = 34, Iteration: 4, Total Searches 5000 Current Open: 7, Total Opened: 18, Iteration Max = 38, Iteration: 5, Total Searches 6000 Current Open: 8, Total Opened: 20, Iteration Max = 42, Iteration: 6, Total Searches 7000 Current Open: 8, Total Opened: 21, Iteration Max = 46, Iteration: 7, Total Searches 8000 Current Open: 8, Total Opened: 22, Iteration Max = 50, Iteration: 8, Total Searches 9000 Current Open: 7, Total Opened: 23, Iteration Max = 54, Iteration: 9, Total Searches 10000 Current Open: 7, Total Opened: 25, Iteration Max = 58, Iteration: 10, Total Searches 11000 Current Open: 8, Total Opened: 27, Iteration Max = 62, Iteration: 11, Total Searches 12000 Current Open: 7, Total Opened: 28, Iteration Max = 66, Iteration: 12, Total Searches 13000 Current Open: 8, Total Opened: 30, Iteration Max = 70, Iteration: 13, Total Searches 14000 Current Open: 8, Total Opened: 31, Iteration Max = 74, Iteration: 14, Total Searches 15000 Current Open: 8, Total Opened: 32, Iteration Max = 78, Iteration: 15, Total Searches 16000 Current Open: 8, Total Opened: 33, Iteration Max = 82, Iteration: 16, Total Searches 17000 Current Open: 8, Total Opened: 34, Iteration Max = 86, Iteration: 17, Total Searches 18000 Current Open: 7, Total Opened: 35, Iteration Max = 90, Iteration: 18, Total Searches 19000 Current Open: 8, Total Opened: 37, Iteration Max = 94, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:39.4068795 ```
Concurrent Connections: 80tcp connections dropped (28s) ``` Current Open: 74, Total Opened: 87, Iteration Max = 130, Iteration: 0, Total Searches 1000 Current Open: 80, Total Opened: 94, Iteration Max = 130, Iteration: 1, Total Searches 2000 Current Open: 79, Total Opened: 95, Iteration Max = 170, Iteration: 2, Total Searches 3000 Current Open: 74, Total Opened: 97, Iteration Max = 210, Iteration: 3, Total Searches 4000 Current Open: 80, Total Opened: 105, Iteration Max = 250, Iteration: 4, Total Searches 5000 Current Open: 80, Total Opened: 114, Iteration Max = 290, Iteration: 5, Total Searches 6000 Current Open: 66, Total Opened: 187, Iteration Max = 330, Iteration: 6, Total Searches 7000 Current Open: 80, Total Opened: 224, Iteration Max = 370, Iteration: 7, Total Searches 8000 Current Open: 78, Total Opened: 225, Iteration Max = 410, Iteration: 8, Total Searches 9000 Current Open: 71, Total Opened: 231, Iteration Max = 450, Iteration: 9, Total Searches 10000 Current Open: 67, Total Opened: 241, Iteration Max = 490, Iteration: 10, Total Searches 11000 Current Open: 80, Total Opened: 262, Iteration Max = 530, Iteration: 11, Total Searches 12000 Current Open: 74, Total Opened: 264, Iteration Max = 570, Iteration: 12, Total Searches 13000 Current Open: 80, Total Opened: 271, Iteration Max = 610, Iteration: 13, Total Searches 14000 Current Open: 80, Total Opened: 275, Iteration Max = 650, Iteration: 14, Total Searches 15000 Current Open: 80, Total Opened: 283, Iteration Max = 690, Iteration: 15, Total Searches 16000 Current Open: 65, Total Opened: 284, Iteration Max = 730, Iteration: 16, Total Searches 17000 Current Open: 80, Total Opened: 300, Iteration Max = 770, Iteration: 17, Total Searches 18000 Current Open: 78, Total Opened: 302, Iteration Max = 810, Iteration: 18, Total Searches 19000 Current Open: 73, Total Opened: 314, Iteration Max = 850, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:28.9767982 ```
# On windows (.NET core) Physical processors: 4 Logical processors: 8 HttpClient => WebRequestHandler
Concurrent Connections: 4full tcp connection reuse (30s) ``` Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 0, Total Searches 1000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 1, Total Searches 2000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 2, Total Searches 3000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 3, Total Searches 4000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 4, Total Searches 5000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 5, Total Searches 6000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 6, Total Searches 7000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 7, Total Searches 8000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 8, Total Searches 9000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 9, Total Searches 10000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 10, Total Searches 11000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 11, Total Searches 12000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 12, Total Searches 13000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 13, Total Searches 14000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 14, Total Searches 15000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 15, Total Searches 16000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 16, Total Searches 17000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 17, Total Searches 18000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 18, Total Searches 19000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 19, Total Searches 20000 ``` ``` Running time 00:00:30.211312 ```
Concurrent Connections: 8full tcp connection reuse (29s) ``` Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 0, Total Searches 1000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 1, Total Searches 2000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 2, Total Searches 3000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 3, Total Searches 4000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 4, Total Searches 5000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 5, Total Searches 6000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 6, Total Searches 7000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 7, Total Searches 8000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 8, Total Searches 9000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 9, Total Searches 10000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 10, Total Searches 11000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 11, Total Searches 12000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 12, Total Searches 13000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 13, Total Searches 14000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 14, Total Searches 15000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 15, Total Searches 16000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 16, Total Searches 17000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 17, Total Searches 18000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 18, Total Searches 19000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 19, Total Searches 20000 ``` ``` Running time 00:00:29.2162262 ```
Concurrent Connections: 80full tcp connection reuse (27s) ``` Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 0, Total Searches 1000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 1, Total Searches 2000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 2, Total Searches 3000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 3, Total Searches 4000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 4, Total Searches 5000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 5, Total Searches 6000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 6, Total Searches 7000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 7, Total Searches 8000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 8, Total Searches 9000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 9, Total Searches 10000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 10, Total Searches 11000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 11, Total Searches 12000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 12, Total Searches 13000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 13, Total Searches 14000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 14, Total Searches 15000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 15, Total Searches 16000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 16, Total Searches 17000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 17, Total Searches 18000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 18, Total Searches 19000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:27.2084013 ```
# On windows (.NET full framework) Physical processors: 4 Logical processors: 8 When targetting this TFM we do not use `HttpClient` at all, just old school `HttpWebRequest`
Concurrent Connections: 4full tcp connection reuse (30s) ``` Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 0, Total Searches 1000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 1, Total Searches 2000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 2, Total Searches 3000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 3, Total Searches 4000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 4, Total Searches 5000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 5, Total Searches 6000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 6, Total Searches 7000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 7, Total Searches 8000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 8, Total Searches 9000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 9, Total Searches 10000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 10, Total Searches 11000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 11, Total Searches 12000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 12, Total Searches 13000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 13, Total Searches 14000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 14, Total Searches 15000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 15, Total Searches 16000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 16, Total Searches 17000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 17, Total Searches 18000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 18, Total Searches 19000 Current Open: 4, Total Opened: 4, Iteration Max = 14, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:30.9015482 ```
Concurrent Connections: 8full tcp connection reuse (29s) ``` Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 0, Total Searches 1000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 1, Total Searches 2000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 2, Total Searches 3000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 3, Total Searches 4000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 4, Total Searches 5000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 5, Total Searches 6000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 6, Total Searches 7000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 7, Total Searches 8000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 8, Total Searches 9000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 9, Total Searches 10000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 10, Total Searches 11000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 11, Total Searches 12000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 12, Total Searches 13000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 13, Total Searches 14000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 14, Total Searches 15000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 15, Total Searches 16000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 16, Total Searches 17000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 17, Total Searches 18000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 18, Total Searches 19000 Current Open: 8, Total Opened: 8, Iteration Max = 18, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:29.6064365 ```
Concurrent Connections: 80full tcp connection reuse (29s) ``` Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 0, Total Searches 1000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 1, Total Searches 2000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 2, Total Searches 3000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 3, Total Searches 4000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 4, Total Searches 5000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 5, Total Searches 6000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 6, Total Searches 7000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 7, Total Searches 8000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 8, Total Searches 9000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 9, Total Searches 10000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 10, Total Searches 11000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 11, Total Searches 12000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 12, Total Searches 13000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 13, Total Searches 14000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 14, Total Searches 15000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 15, Total Searches 16000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 16, Total Searches 17000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 17, Total Searches 18000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 18, Total Searches 19000 Current Open: 80, Total Opened: 80, Iteration Max = 90, Iteration: 19, Total Searches 20000 ``` ``` Running time ConnectionReuse: 00:00:29.3900225 ```
------ There is a https://curl.haxx.se/libcurl/c/CURLOPT_TCP_KEEPALIVE.html that could possibly be set in a world where `ServicepointManager.SetTcpKeepAlive` is back in play. Will this make a comeback in netstandard 2.0? Not sure that that curl opt will improve things though. +21230 area-System.Security Make VerifyWithRevocation skip if the Online chain can't build "When the system doesn't have a current CRL cached for the entirety of the chain, and the CRL Distribution Point is offline (or there's a local network issue) then the test fails. This is tolerable for a manual run, but not for the automated runs. So unless the X.509 ""RunManualTests"" configuration is set, treat a failure of the online chain to be a skip. Ideally we'd throw a SkipTestException, or something of that ilk, but xunit doesn't support it. Fixes #21076 (in master)" +21231 area-System.Runtime User Environment variable tests should pass on uap/uapaot On the RS3 images, get/set of user environment variables should work and the tests should be enabled. get/set of machine environment variables will be blocked by appcontainer and the tests shoudl be disabled for uap/uapaot. +21232 area-System.Net Add managed HttpClientHandler prototype as opt-in @geoffkizer prototyped out a managed HttpClientHandler implementation, as we'd eventually like to be able to switch to a managed implementation as the primary implementation rather than having different implementations per platform. It's missing features (e.g. HTTP/2, various auth support, etc.), needs work around correctness and performance, etc., but it's at a good enough state to check-in and enable under a feature flag in an opt-in fashion, which will allow everyone to help contribute to it and make it better. The first commit adds Geoff's code. The second integrates it into HttpClientHandler in an opt-in manner, such that by default on Windows you still use WinHttpHandler and on Unix CurlHandler, but by setting an environment variable, you can opt-in to experiment with the managed implementation. The commit also enables some of the tests to also run with the managed handler; the rest can be enabled when some issues are fixed. (As part of this PR, I'm not planning to address any issues with the managed implementation. Folks are welcome to submit PRs to do so subsequently.) cc: @geoffkizer, @davidsh, @cipop, @wfurt, @Priya91, @Petermarcu +21233 area-System.Net Regression in System.Net.Primitives for UWP Running the UAP tests I'm getting the following for System.Net.Primitives: ``` 0:017> !pe Exception object: 0000018080001210 Exception type: System.ExecutionEngineException Message: InnerException: System.Diagnostics.Debug+DebugAssertException, Use !PrintException 0000018080638d88 to see more. StackTrace (generated): StackTraceString: HResult: 80131506 0:017> !PrintException /d 0000018080638d88 Exception object: 0000018080638d88 Exception type: System.Diagnostics.Debug+DebugAssertException Message: We need to use an internal method named InternalSetName that is declared on Cookie. at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Net.CookieParser.get_InternalSetNameMethod() at System.Net.CookieParser.Get() at System.Net.CookieContainer.CookieCutter(Uri uri, String headerName, String setCookieHeader, Boolean isThrow) at System.Net.CookieContainer.SetCookies(Uri uri, String cookieHeader) at System.Net.Primitives.Functional.Tests.CookieContainerTest.<>c__DisplayClass29_0.b__0() at Xunit.Assert.RecordException(Action testCode) at Xunit.Assert.Throws[T](Action testCode) at System.Net.Primitives.Functional.Tests.CookieContainerTest.SetCookies_InvalidData_Throws(Uri uri, String cookieHeader) at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at Xunit.Sdk.TestInvoker`1.CallTestMethod(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestInvoker`1.b__45_0() at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) at Xunit.Sdk.TestRunner`1.d__43.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestRunner`1.RunAsync() at Xunit.Sdk.XunitTheoryTestCaseRunner.d__9.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTheoryTestCaseRunner.RunTestAsync() at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCaseRunner`1.RunAsync() at Xunit.Sdk.XunitTestMethodRunner.RunTestCaseAsync(IXunitTestCase testCase) at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestMethodRunner`1.RunAsync() at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestClassRunner`1.RunAsync() at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestCollectionRunner`1.RunAsync() at Xunit.Sdk.TestAssemblyRunner`1.d__42.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestAssemblyRunner`1.RunTestCollectionsAsync(IMessageBus messageBus, CancellationTokenSource cancellationTokenSource) at Xunit.Sdk.XunitTestAssemblyRunner.d__14.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionsAsync(IMessageBus messageBus, CancellationTokenSource cancellationTokenSource) at Xunit.Sdk.TestAssemblyRunner`1.d__41.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.TestAssemblyRunner`1.RunAsync() at Xunit.Sdk.XunitTestFrameworkExecutor.d__6.MoveNext() at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Xunit.Sdk.XunitTestFrameworkExecutor.RunTestCases(IEnumerable`1 testCases, IMessageSink executionMessageSink, ITestFrameworkExecutionOptions executionOptions) at XUnit.Runner.Uap.XunitTestRunner.d__2.MoveNext() at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at XUnit.Runner.Uap.XunitTestRunner.RunTests(String arguments, StringBuilder sbLog, Action`1 uiLogger) at XUnit.Runner.Uap.MainPage.<>c__DisplayClass3_0.b__0() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) at System.Threading.ThreadPoolWorkQueue.Dispatch() InnerException: StackTrace (generated): StackTraceString: HResult: 80131500 ``` +21234 area-System.Xml Fix small nit that wasn't addressed before PR was merged Fixing the `=null` cc: @danmosemsft +21235 area-Serialization Enable Reflection-based Serialization to Call Static Parse Method. The issue was that, on uapaot, reflection-based serialization cannot invoke primitive types's static `Parse` method due to reflection on primitive types being blocked. Fix #21143 +21236 area-Infrastructure [Arm64/Unix] Add OfficialBuildRID linux-arm64 +21237 area-Infrastructure clean.cmd should also stop dotnet and msbuild execution The current clean.cmd only stops execution of VBCSCompiler.exe. It should also stop execution of dotnet.exe and msbuild.exe to prevent problems with cleaning the output. +21239 area-System.Net Forward porting AsyncRequestContext PR feedback. Forward-porting changes made to #21100 after @DavidGoll 's PR feedback to 2.1. Contributes to #20400. +21240 area-System.Collections Proposal: ref returns API for Dictionary @brandon942 commented on [Mon Jun 19 2017](https://github.com/dotnet/coreclr/issues/12361) Dictionary value updates are not possible without unnecessary double lookups in the current Dictionary implementation. This issue has been there forever and is particularly problematic for value-type/struct values which are extensively used in game dev. Value updates require the whole struct to be copied, changed and reinserted (copied again) with another lookup. The C#7 ref feature allows one to create faster custom dictionaries without messing with Entry indexes, but why not fix the Dictionary in the coreclr? The following Dictionary methods are needed to prevent double lookups in checks & updates and insertions: public ref TValue GetValueByRef(TKey key) // throws if key not found private static TValue _DefaultVal; // needed for TryGetValueByRef as default return public ref TValue TryGetValueByRef(TKey key, out bool found) public ref TValue TryGetValueByRefOrAdd(TKey key, out bool found, TValue setVal) public bool TryGetValueOrAdd(TKey key, out TValue value, TValue setValue) Furthermore I propose incrementing the `version`-field (used by enumerators) only when Entries are added or removed, but not when they are changed because it serves no purpose. Reference-type values can already be changed without the Dictionary knowing and incrementing the version. +21241 area-Serialization Add automation tests for SGEN. Add automation tests for SGEN. It includes two parts. 1. Baseline test 2. Run the existing XML tests on SGEN. Fix #21147 @shmao @zhenlan @mconnew +21242 area-System.ComponentModel Fixed NullableConverter.ConvertTo(ITypeDescriptorContext, CultureInfo… …, object) not using UnderlyingTypeConverter if the value is null +21244 area-System.IO Disable uap System.IO.FileSystem tests which use CreateFile to create named pipes Contributes to https://github.com/dotnet/corefx/issues/16422 Fixes https://github.com/dotnet/corefx/issues/21206 +21246 area-System.Data Increase code coverage from 65.3% to 70.8% on System.Data.Common.DataColumnMappingCollection Hi, Here are a couple of new tests for this class. If you have any questions, please let me know. Thanks, Michael +21247 area-Meta Re-enable and fix some UWP F5 tests Resolves https://github.com/dotnet/corefx/issues/18055, https://github.com/dotnet/corefx/issues/13121 Re-enables some tests that now pass for UWP and fixes two AppContainer issues cc: @danmosemsft @tijoytom +21248 area-System.Memory Provide StringBuilder.ForeachChunk for efficient access to characters in a StringBuilder "Today, StringBuilder has problem in that the only way to read the characters out of the StringBuilder is to do it a character at a time [] or call the ToString APIs to convert it to a string (and then index it). Both of these are slow. Typically what people actually do is call ToString, which forces the creation of a large string. Often the very next thing that happens is that the String is written to a file, leaving behind a large, dead string on the GC heap. With the advent of Span there is now an efficient, safe mechanism for extracting the data in the StringBuilder. The proposed API is ```c# /// /// ForEachChunk is an efficient way of accessing all the characters in the StringBuilder. /// It is an alternative to calling ToString() on the StringBuilder. /// /// The 'callback' delegate is called 0 or more times, each time being passed a chunk of /// the string as a ReadOnlySpan of characters (in order). This is repeated until all /// the characters in the span have been passed back through 'callback'. /// /// A method that is called repeatedly, being passed a chunk /// of the Strinbuilder with each call. If 'false' is returned by the callback /// then ForEachChunk terminates immediately. public void ForEachChunk(Func, bool> callback) ``` The actual implmentation is simple: ```c# public void ForEachChunk(Func, bool> callback) { VerifyClassInvariant(); ForEachChunk(callback, this); } private bool ForEachChunk(Func, bool> callback, StringBuilder chunk) { // The chunks are last written first, so we need to output the others first. var next = chunk.m_ChunkPrevious; if (next != null && !ForEachChunk(callback, next)) return false; // The fields here might be changing and inaccurate if threads are racing, but the validation that Span does on // construction insures that the values, even if inaccurate, are 'in bounds'. return callback(new Span(chunk.m_ChunkChars, chunk.m_ChunkOffset, chunk.m_ChunkLength)); } ``` The intent is that this new API can be a building block to provide extension methods on Stream (or other APIs that act like streams) that operate on StringBuilders directly (so an intermediate strings need not be formed) Question: A variation of this is to have an explicit context parameter that is passed to the callback. ```c# public void ForEachChunk(Func, T, bool> callback, T context = null) where T : class ``` While this is not as convenient to use, it allows the user to avoid creating closures (which force the allocation of a Func), which is faster (and the goal of this API is is all about being faster) @stephentoub @jkotas @alexperovich @AlexGhiondea @davidfowl " +21250 area-System.Net CookieContainer has issues with cookies set to a different path than the current request uri path When a server sends back a cookie with a path different than the current request uri, CookieContainer throws an exception indicating that the path portion of the cookie is invalid. For example: * HttpClient send a request to `/Home/About` * The server answers with a redirect response to `/tfp/Identity/signinsignup/...` and sets a cookie to `/signin-oidc` * Internally, CookieContainer throws or silently fails on line https://github.com/dotnet/corefx/blob/master/src/System.Net.Primitives/src/System/Net/Cookie.cs#L508 I believe this is due to the fact that an old version of the spec required any path on any cookie set by the server to be a prefix path of the current request URI. This doesn't seem to be the case in the latest version of the standard. https://tools.ietf.org/html/rfc6265 (new version) https://tools.ietf.org/html/rfc2109 (old version) For reference, this works fine on all major browsers (Chrome, Firefox, Edge,...) We ran into this on our authentication tests (that run the scenario mentioned above). Limiting the path check in the code linked above to only the case when the cookie refers to an old version of the spec should be enough. +21252 area-Infrastructure TargetsWindows msbuild property is false for netfx configuration "For the `netfx` configuration, `'$(TargetsWindows) == 'false'` However, we can use the `netfx-Windows_NT` configuration instead, and `'$(TargetsWindows) == 'true'` Is this expected? Example configuration.props ```xml netstandard; netcoreapp-Windows_NT; netfx; ``` Example csproj ```xml {A824F4CD-935B-4496-A1B2-C3664936DA7B} $(DefineConstants);netcoreapp ``` Example Tests.cs ```c# using Xunit; public class Tests { [Fact] public void AssertFailure() { Assert.False(true); } } ```" +21253 area-Infrastructure "`msbuild /T:BuildAndTest /P:TargetGroup=uap` prints to the console many times with ""Cannot create a file when that file already exists.""" "@joperezr suggested I make an issue. Example log:
Click Here ``` C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests>msbuild /T:BuildAndTest Microsoft (R) Build Engine version 15.1.1012.6693 Copyright (C) Microsoft Corporation. All rights reserved. Build started 20/06/2017 08:55:53. Project ""C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests\System.Runtime.Compile rServices.VisualC.Tests.csproj"" on node 1 (BuildAndTest target(s)). CoreCompile: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /noconfig /unsafe+ /nowarn:1701,1702 /nostdlib+ /warn:4 /define :DEBUG;TRACE;DEBUGRESOURCES;SIGNED /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/CoreFx.Privat e.TestUtilities.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/Microsoft.CSharp.dll /refere nce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/Microsoft.VisualBasic.dll /reference:C:\Users\hugh\Docu ments\GitHub\corefx\bin/ref/netstandard/Microsoft.Win32.Primitives.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/Microsoft.Win32.Registry.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bi n/ref/netstandard/Microsoft.Win32.Registry.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/m scorlib.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/netstandard.dll /reference:C:\Users\ hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.AppContext.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/System.Buffers.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .CodeDom.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Collections.Concurrent.dll / reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Collections.dll /reference:C:\Users\hugh\D ocuments\GitHub\corefx\bin/ref/netstandard/System.Collections.Immutable.dll /reference:C:\Users\hugh\Documents\GitHub \corefx\bin/ref/netstandard/System.Collections.NonGeneric.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/re f/netstandard/System.Collections.Specialized.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard /System.ComponentModel.Annotations.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Co mponentModel.Composition.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentMod el.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentModel.EventBasedAsync.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentModel.Primitives.dll /reference :C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentModel.TypeConverter.dll /reference:C:\User s\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Composition.AttributedModel.dll /reference:C:\Users\hugh\Do cuments\GitHub\corefx\bin/ref/netstandard/System.Composition.Convention.dll /reference:C:\Users\hugh\Documents\GitHub \corefx\bin/ref/netstandard/System.Composition.Hosting.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Composition.Runtime.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .Composition.TypedParts.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Configuration .ConfigurationManager.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Console.dll /re ference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Core.dll /reference:C:\Users\hugh\Documents\ GitHub\corefx\bin/ref/netstandard/System.Data.Common.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/net standard/System.Data.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Data.Odbc.dll /r eference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Data.SqlClient.dll /reference:C:\Users\hugh \Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Contracts.dll /reference:C:\Users\hugh\Documents\GitH ub\corefx\bin/ref/netstandard/System.Diagnostics.Debug.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Diagnostics.DiagnosticSource.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstanda rd/System.Diagnostics.FileVersionInfo.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .Diagnostics.Process.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Stac kTrace.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.TextWriterTraceLis tener.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Tools.dll /referenc e:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.TraceSource.dll /reference:C:\Users\hu gh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Tracing.dll /reference:C:\Users\hugh\Documents\GitH ub\corefx\bin/ref/netstandard/System.DirectoryServices.AccountManagement.dll /reference:C:\Users\hugh\Documents\GitHu b\corefx\bin/ref/netstandard/System.DirectoryServices.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/ne tstandard/System.DirectoryServices.Protocols.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard /System.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Drawing.dll /reference:C:\Use rs\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Drawing.Primitives.dll /reference:C:\Users\hugh\Documents\ GitHub\corefx\bin/ref/netstandard/System.Dynamic.Runtime.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref /netstandard/System.Globalization.Calendars.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/ System.Globalization.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Globalization.Ex tensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Compression.dll /referenc e:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Compression.FileSystem.dll /reference:C:\Users\ hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Compression.ZipFile.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.IO.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard /System.IO.FileSystem.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.I O.FileSystem.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.FileSystem.DriveInfo. dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.FileSystem.Primitives.dll /referen ce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.FileSystem.Watcher.dll /reference:C:\Users\hug h\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.IsolatedStorage.dll /reference:C:\Users\hugh\Documents\GitHub \corefx\bin/ref/netstandard/System.IO.MemoryMappedFiles.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/ netstandard/System.IO.Packaging.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Pi pes.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Pipes.dll /refer ence:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Ports.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.IO.UnmanagedMemoryStream.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/System.Json.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Li nq.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Linq.Expressions.dll /reference:C: \Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Linq.Parallel.dll /reference:C:\Users\hugh\Documents\G itHub\corefx\bin/ref/netstandard/System.Linq.Queryable.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Memory.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.dll /ref erence:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Http.dll /reference:C:\Users\hugh\Documen ts\GitHub\corefx\bin/ref/netstandard/System.Net.Http.WinHttpHandler.dll /reference:C:\Users\hugh\Documents\GitHub\cor efx\bin/ref/netstandard/System.Net.NameResolution.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netsta ndard/System.Net.NetworkInformation.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.N et.Ping.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Primitives.dll /reference :C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Requests.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.Net.Security.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Net.Sockets.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Web HeaderCollection.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.WebSockets.Clien t.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.WebSockets.dll /reference:C:\Us ers\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Numerics.dll /reference:C:\Users\hugh\Documents\GitHub\co refx\bin/ref/netstandard/System.Numerics.Vectors.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstan dard/System.ObjectModel.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Reflection.Co ntext.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Reflection.DispatchProxy.dll /r eference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Reflection.dll /reference:C:\Users\hugh\Doc uments\GitHub\corefx\bin/ref/netstandard/System.Reflection.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\c orefx\bin/ref/netstandard/System.Reflection.Metadata.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/net standard/System.Reflection.Primitives.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .Reflection.TypeExtensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Resources. Reader.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Resources.ResourceManager.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Resources.Writer.dll /reference:C:\Users\ hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.CompilerServices.Unsafe.dll /reference:C:\Users\hugh\ Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.CompilerServices.VisualC.dll /reference:C:\Users\hugh\Docu ments\GitHub\corefx\bin/ref/netstandard/System.Runtime.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Runtime.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System. Runtime.Handles.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.InteropServic es.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.InteropServices.RuntimeInf ormation.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.Numerics.dll /refere nce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.dll /reference:C:\Users\hu gh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.Formatters.dll /reference:C:\Users\hugh\D ocuments\GitHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.Json.dll /reference:C:\Users\hugh\Documents\G itHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.Primitives.dll /reference:C:\Users\hugh\Documents\GitHu b\corefx\bin/ref/netstandard/System.Runtime.Serialization.Xml.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bi n/ref/netstandard/System.Security.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstand ard/System.Security.Claims.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.C ryptography.Algorithms.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Crypt ography.Cng.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Csp .dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Encoding.dll / reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.OpenSsl.dll /referen ce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Pkcs.dll /reference:C:\User s\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Primitives.dll /reference:C:\Users\hu gh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.ProtectedData.dll /reference:C:\Users\hug h\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.X509Certificates.dll /reference:C:\Users\h ugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Xml.dll /reference:C:\Users\hugh\Documen ts\GitHub\corefx\bin/ref/netstandard/System.Security.Permissions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx \bin/ref/netstandard/System.Security.Principal.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstanda rd/System.Security.Principal.Windows.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System. Security.SecureString.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ServiceModel.We b.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ServiceProcess.ServiceController.dl l /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Text.Encoding.CodePages.dll /reference: C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Text.Encoding.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.Text.Encoding.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/System.Text.Encodings.Web.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstan dard/System.Text.RegularExpressions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.T hreading.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Overlapped.dll /reference:C:\Us ers\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Tasks.Dataflow.dll /reference:C:\Users\hugh\Doc uments\GitHub\corefx\bin/ref/netstandard/System.Threading.Tasks.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\ bin/ref/netstandard/System.Threading.Tasks.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/ne tstandard/System.Threading.Tasks.Parallel.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/Sy stem.Threading.Thread.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Threa dPool.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Timer.dll /reference: C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Transactions.dll /reference:C:\Users\hugh\Documents\ GitHub\corefx\bin/ref/netstandard/System.ValueTuple.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/nets tandard/System.Web.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Windows.dll /refer ence:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.dll /reference:C:\Users\hugh\Documents\GitH ub\corefx\bin/ref/netstandard/System.Xml.Linq.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandar d/System.Xml.ReaderWriter.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.Seriali zation.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.XDocument.dll /reference:C :\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.XmlDocument.dll /reference:C:\Users\hugh\Document s\GitHub\corefx\bin/ref/netstandard/System.Xml.XmlSerializer.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin /ref/netstandard/System.Xml.XPath.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml .XPath.XDocument.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/xun it.core.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/Xunit.NetCor e.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/xunit.a ssert.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/xunit.abstract ions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/xunit.performan ce.core.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/netcoreapp-Windows_NT-Debug-x64/xunit.perfor mance.api.dll /debug+ /debug:full /delaysign- /keyfile:C:\Users\hugh\Documents\GitHub\corefx\Tools/Test.snk /optimize - /out:C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests /netstandard/System.Runtime.CompilerServices.VisualC.Tests.dll /ruleset:C:\Users\hugh\Documents\GitHub\corefx\CodeAna lysis.ruleset /target:library /warnaserror+ /utf8output /analyzer:C:\Users\hugh\Documents\GitHub\corefx\Tools/net46/a nalyzers/Microsoft.DotNet.CodeAnalysis.dll /additionalfile:C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU .Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard//disabledAnalyzers.config System\Runtime\CompilerSer vices\ScopelessEnumAttributeTests.cs System\Runtime\CompilerServices\RequiredAttributeAttributeTests.cs C:\Users\hugh \Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/_Assemb lyInfo.cs @C:\Users\hugh\Documents\GitHub\corefx\Tools\checksum.rsp Using shared compilation with compiler from directory: C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\roslyn\tools CopyFilesToOutputDirectory: Copying file from ""C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.V isualC.Tests/netstandard/System.Runtime.CompilerServices.VisualC.Tests.dll"" to ""C:\Users\hugh\Documents\GitHub\corefx \bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/System.Runtime.CompilerServices.Vis ualC.Tests.dll"". System.Runtime.CompilerServices.VisualC.Tests -> C:\Users\hugh\Documents\GitHub\corefx\bin\AnyOS.AnyCPU.Debug\System. Runtime.CompilerServices.VisualC.Tests\netstandard\System.Runtime.CompilerServices.VisualC.Tests.dll Copying file from ""C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.V isualC.Tests/netstandard/System.Runtime.CompilerServices.VisualC.Tests.pdb"" to ""C:\Users\hugh\Documents\GitHub\corefx \bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/System.Runtime.CompilerServices.Vis ualC.Tests.pdb"". GenerateTestExecutionScripts: Generating C:\Users\hugh\Documents\GitHub\corefx\bin//TestDependencies/System.Runtime.CompilerServices.VisualC.Tests- .dependencylist.txt Test Command lines = call %RUNTIME_PATH%\dotnet.exe xunit.console.netcore.exe System.Runtime.CompilerServices.VisualC .Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonwi ndowstests -notrait category=OuterLoop -notrait category=failing Wrote Windows-compatible test execution script to C:\Users\hugh\Documents\GitHub\corefx\bin/AnyOS.AnyCPU.Debug/System .Runtime.CompilerServices.VisualC.Tests/netstandard//RunTests.cmd RunTestsForProject: C:\Users\hugh\Documents\GitHub\corefx\bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandar d//RunTests.cmd C:\Users\hugh\Documents\GitHub\corefx\bin/testhost/netcoreapp-Windows_NT-Debug-x64/ Using C:\Users\hugh\Documents\GitHub\corefx\bin\testhost\netcoreapp-Windows_NT-Debug-x64\ as the test runtime folder. Executing in C:\Users\hugh\Documents\GitHub\corefx\bin\AnyOS.AnyCPU.Debug\System.Runtime.CompilerServices.VisualC.Tes ts\netstandard\ Running tests... Start time: 8:55:55.21 xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. Discovering: System.Runtime.CompilerServices.VisualC.Tests Discovered: System.Runtime.CompilerServices.VisualC.Tests Starting: System.Runtime.CompilerServices.VisualC.Tests Finished: System.Runtime.CompilerServices.VisualC.Tests === TEST EXECUTION SUMMARY === System.Runtime.CompilerServices.VisualC.Tests Total: 3, Errors: 0, Failed: 0, Skipped: 0, Time: 0.508s Finished running tests. End time= 8:55:57.70, Exit code = 0 Touching ""C:\Users\hugh\Documents\GitHub\corefx\bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/ netstandard//tests.passed.without.OuterLoop.failing"". Done Building Project ""C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests\System.R untime.CompilerServices.VisualC.Tests.csproj"" (BuildAndTest target(s)). Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:04.55 C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests>msbuild /T:BuildAndTest /P:TargetGroup=uap Microsoft (R) Build Engine version 15.1.1012.6693 Copyright (C) Microsoft Corporation. All rights reserved. Build started 20/06/2017 08:56:02. Project ""C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests\System.Runtime.Compile rServices.VisualC.Tests.csproj"" on node 1 (BuildAndTest target(s)). GenerateAssemblyInfo: Skipping target ""GenerateAssemblyInfo"" because all output files are up-to-date with respect to the input files. CoreCompile: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /noconfig /unsafe+ /nowarn:1701,1702 /nostdlib+ /warn:4 /define :DEBUG;TRACE;DEBUGRESOURCES;SIGNED /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/CoreFx.Privat e.TestUtilities.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/Microsoft.CSharp.dll /refere nce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/Microsoft.VisualBasic.dll /reference:C:\Users\hugh\Docu ments\GitHub\corefx\bin/ref/netstandard/Microsoft.Win32.Primitives.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/Microsoft.Win32.Registry.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bi n/ref/netstandard/Microsoft.Win32.Registry.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/m scorlib.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/netstandard.dll /reference:C:\Users\ hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.AppContext.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/System.Buffers.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .CodeDom.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Collections.Concurrent.dll / reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Collections.dll /reference:C:\Users\hugh\D ocuments\GitHub\corefx\bin/ref/netstandard/System.Collections.Immutable.dll /reference:C:\Users\hugh\Documents\GitHub \corefx\bin/ref/netstandard/System.Collections.NonGeneric.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/re f/netstandard/System.Collections.Specialized.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard /System.ComponentModel.Annotations.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Co mponentModel.Composition.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentMod el.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentModel.EventBasedAsync.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentModel.Primitives.dll /reference :C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ComponentModel.TypeConverter.dll /reference:C:\User s\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Composition.AttributedModel.dll /reference:C:\Users\hugh\Do cuments\GitHub\corefx\bin/ref/netstandard/System.Composition.Convention.dll /reference:C:\Users\hugh\Documents\GitHub \corefx\bin/ref/netstandard/System.Composition.Hosting.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Composition.Runtime.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .Composition.TypedParts.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Configuration .ConfigurationManager.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Console.dll /re ference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Core.dll /reference:C:\Users\hugh\Documents\ GitHub\corefx\bin/ref/netstandard/System.Data.Common.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/net standard/System.Data.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Data.Odbc.dll /r eference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Data.SqlClient.dll /reference:C:\Users\hugh \Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Contracts.dll /reference:C:\Users\hugh\Documents\GitH ub\corefx\bin/ref/netstandard/System.Diagnostics.Debug.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Diagnostics.DiagnosticSource.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstanda rd/System.Diagnostics.FileVersionInfo.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .Diagnostics.Process.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Stac kTrace.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.TextWriterTraceLis tener.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Tools.dll /referenc e:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.TraceSource.dll /reference:C:\Users\hu gh\Documents\GitHub\corefx\bin/ref/netstandard/System.Diagnostics.Tracing.dll /reference:C:\Users\hugh\Documents\GitH ub\corefx\bin/ref/netstandard/System.DirectoryServices.AccountManagement.dll /reference:C:\Users\hugh\Documents\GitHu b\corefx\bin/ref/netstandard/System.DirectoryServices.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/ne tstandard/System.DirectoryServices.Protocols.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard /System.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Drawing.dll /reference:C:\Use rs\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Drawing.Primitives.dll /reference:C:\Users\hugh\Documents\ GitHub\corefx\bin/ref/netstandard/System.Dynamic.Runtime.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref /netstandard/System.Globalization.Calendars.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/ System.Globalization.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Globalization.Ex tensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Compression.dll /referenc e:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Compression.FileSystem.dll /reference:C:\Users\ hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Compression.ZipFile.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.IO.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard /System.IO.FileSystem.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.I O.FileSystem.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.FileSystem.DriveInfo. dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.FileSystem.Primitives.dll /referen ce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.FileSystem.Watcher.dll /reference:C:\Users\hug h\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.IsolatedStorage.dll /reference:C:\Users\hugh\Documents\GitHub \corefx\bin/ref/netstandard/System.IO.MemoryMappedFiles.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/ netstandard/System.IO.Packaging.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Pi pes.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Pipes.dll /refer ence:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.IO.Ports.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.IO.UnmanagedMemoryStream.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/System.Json.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Li nq.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Linq.Expressions.dll /reference:C: \Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Linq.Parallel.dll /reference:C:\Users\hugh\Documents\G itHub\corefx\bin/ref/netstandard/System.Linq.Queryable.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Memory.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.dll /ref erence:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Http.dll /reference:C:\Users\hugh\Documen ts\GitHub\corefx\bin/ref/netstandard/System.Net.Http.WinHttpHandler.dll /reference:C:\Users\hugh\Documents\GitHub\cor efx\bin/ref/netstandard/System.Net.NameResolution.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netsta ndard/System.Net.NetworkInformation.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.N et.Ping.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Primitives.dll /reference :C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Requests.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.Net.Security.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Net.Sockets.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.Web HeaderCollection.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.WebSockets.Clien t.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Net.WebSockets.dll /reference:C:\Us ers\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Numerics.dll /reference:C:\Users\hugh\Documents\GitHub\co refx\bin/ref/netstandard/System.Numerics.Vectors.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstan dard/System.ObjectModel.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Reflection.Co ntext.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Reflection.DispatchProxy.dll /r eference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Reflection.dll /reference:C:\Users\hugh\Doc uments\GitHub\corefx\bin/ref/netstandard/System.Reflection.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\c orefx\bin/ref/netstandard/System.Reflection.Metadata.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/net standard/System.Reflection.Primitives.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System .Reflection.TypeExtensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Resources. Reader.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Resources.ResourceManager.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Resources.Writer.dll /reference:C:\Users\ hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.CompilerServices.Unsafe.dll /reference:C:\Users\hugh\ Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.CompilerServices.VisualC.dll /reference:C:\Users\hugh\Docu ments\GitHub\corefx\bin/ref/netstandard/System.Runtime.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/n etstandard/System.Runtime.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System. Runtime.Handles.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.InteropServic es.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.InteropServices.RuntimeInf ormation.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.Numerics.dll /refere nce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.dll /reference:C:\Users\hu gh\Documents\GitHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.Formatters.dll /reference:C:\Users\hugh\D ocuments\GitHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.Json.dll /reference:C:\Users\hugh\Documents\G itHub\corefx\bin/ref/netstandard/System.Runtime.Serialization.Primitives.dll /reference:C:\Users\hugh\Documents\GitHu b\corefx\bin/ref/netstandard/System.Runtime.Serialization.Xml.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bi n/ref/netstandard/System.Security.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstand ard/System.Security.Claims.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.C ryptography.Algorithms.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Crypt ography.Cng.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Csp .dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Encoding.dll / reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.OpenSsl.dll /referen ce:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Pkcs.dll /reference:C:\User s\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Primitives.dll /reference:C:\Users\hu gh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.ProtectedData.dll /reference:C:\Users\hug h\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.X509Certificates.dll /reference:C:\Users\h ugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Security.Cryptography.Xml.dll /reference:C:\Users\hugh\Documen ts\GitHub\corefx\bin/ref/netstandard/System.Security.Permissions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx \bin/ref/netstandard/System.Security.Principal.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstanda rd/System.Security.Principal.Windows.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System. Security.SecureString.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ServiceModel.We b.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.ServiceProcess.ServiceController.dl l /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Text.Encoding.CodePages.dll /reference: C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Text.Encoding.dll /reference:C:\Users\hugh\Documents \GitHub\corefx\bin/ref/netstandard/System.Text.Encoding.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\core fx\bin/ref/netstandard/System.Text.Encodings.Web.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstan dard/System.Text.RegularExpressions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.T hreading.AccessControl.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Overlapped.dll /reference:C:\Us ers\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Tasks.Dataflow.dll /reference:C:\Users\hugh\Doc uments\GitHub\corefx\bin/ref/netstandard/System.Threading.Tasks.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\ bin/ref/netstandard/System.Threading.Tasks.Extensions.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/ne tstandard/System.Threading.Tasks.Parallel.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/Sy stem.Threading.Thread.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Threa dPool.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Threading.Timer.dll /reference: C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Transactions.dll /reference:C:\Users\hugh\Documents\ GitHub\corefx\bin/ref/netstandard/System.ValueTuple.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/nets tandard/System.Web.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Windows.dll /refer ence:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.dll /reference:C:\Users\hugh\Documents\GitH ub\corefx\bin/ref/netstandard/System.Xml.Linq.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandar d/System.Xml.ReaderWriter.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.Seriali zation.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.XDocument.dll /reference:C :\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml.XmlDocument.dll /reference:C:\Users\hugh\Document s\GitHub\corefx\bin/ref/netstandard/System.Xml.XmlSerializer.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin /ref/netstandard/System.Xml.XPath.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/ref/netstandard/System.Xml .XPath.XDocument.dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/uap-Windows_NT-Debug-x64/xunit.core .dll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/uap-Windows_NT-Debug-x64/Xunit.NetCore.Extensions.d ll /reference:C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/uap-Windows_NT-Debug-x64/xunit.assert.dll /reference: C:\Users\hugh\Documents\GitHub\corefx\bin/runtime/uap-Windows_NT-Debug-x64/xunit.abstractions.dll /reference:C:\Users \hugh\Documents\GitHub\corefx\bin/runtime/uap-Windows_NT-Debug-x64/xunit.performance.core.dll /reference:C:\Users\hug h\Documents\GitHub\corefx\bin/runtime/uap-Windows_NT-Debug-x64/xunit.performance.api.dll /debug+ /debug:full /delaysi gn- /keyfile:C:\Users\hugh\Documents\GitHub\corefx\Tools/Test.snk /optimize- /out:C:\Users\hugh\Documents\GitHub\core fx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/System.Runtime.CompilerServic es.VisualC.Tests.dll /ruleset:C:\Users\hugh\Documents\GitHub\corefx\CodeAnalysis.ruleset /target:library /warnaserror + /utf8output /analyzer:C:\Users\hugh\Documents\GitHub\corefx\Tools/net46/analyzers/Microsoft.DotNet.CodeAnalysis.dll /additionalfile:C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.Vis ualC.Tests/netstandard//disabledAnalyzers.config System\Runtime\CompilerServices\ScopelessEnumAttributeTests.cs Syste m\Runtime\CompilerServices\RequiredAttributeAttributeTests.cs C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.Any CPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/_AssemblyInfo.cs @C:\Users\hugh\Documents\GitHub\ corefx\Tools\checksum.rsp Using shared compilation with compiler from directory: C:\Users\hugh\Documents\GitHub\corefx\Tools\net46\roslyn\tools CopyFilesToOutputDirectory: Copying file from ""C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.V isualC.Tests/netstandard/System.Runtime.CompilerServices.VisualC.Tests.dll"" to ""C:\Users\hugh\Documents\GitHub\corefx \bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/System.Runtime.CompilerServices.Vis ualC.Tests.dll"". System.Runtime.CompilerServices.VisualC.Tests -> C:\Users\hugh\Documents\GitHub\corefx\bin\AnyOS.AnyCPU.Debug\System. Runtime.CompilerServices.VisualC.Tests\netstandard\System.Runtime.CompilerServices.VisualC.Tests.dll Copying file from ""C:\Users\hugh\Documents\GitHub\corefx\bin/obj/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.V isualC.Tests/netstandard/System.Runtime.CompilerServices.VisualC.Tests.pdb"" to ""C:\Users\hugh\Documents\GitHub\corefx \bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandard/System.Runtime.CompilerServices.Vis ualC.Tests.pdb"". GenerateTestExecutionScripts: Generating C:\Users\hugh\Documents\GitHub\corefx\bin//TestDependencies/System.Runtime.CompilerServices.VisualC.Tests- .dependencylist.txt Test Command lines = mkdir Assets mkdir entrypoint mkdir Properties mkdir WinMetadata mklink /H AppxManifest.xml %RUNTIME_PATH%\Runner\AppxManifest.xml mklink /H Assets\LockScreenLogo.scale-200.png %RUNTIME_PATH%\Runner\Assets\LockScreenLogo.scale-200.png mklink /H Assets\SplashScreen.scale-200.png %RUNTIME_PATH%\Runner\Assets\SplashScreen.scale-200.png mklink /H Assets\Square150x150Logo.scale-200.png %RUNTIME_PATH%\Runner\Assets\Square150x150Logo.scale-200.png mklink /H Assets\Square44x44Logo.scale-200.png %RUNTIME_PATH%\Runner\Assets\Square44x44Logo.scale-200.png mklink /H Assets\Square44x44Logo.targetsize-24_altform-unplated.png %RUNTIME_PATH%\Runner\Assets\Square44x44Logo.targ etsize-24_altform-unplated.png mklink /H Assets\StoreLogo.png %RUNTIME_PATH%\Runner\Assets\StoreLogo.png mklink /H Assets\Wide310x150Logo.scale-200.png %RUNTIME_PATH%\Runner\Assets\Wide310x150Logo.scale-200.png mklink /H clrcompression.dll %RUNTIME_PATH%\Runner\clrcompression.dll mklink /H concrt140_app.dll %RUNTIME_PATH%\Runner\concrt140_app.dll mklink /H entrypoint\XUnit.Runner.Uap.exe %RUNTIME_PATH%\Runner\entrypoint\XUnit.Runner.Uap.exe mklink /H msvcp140_app.dll %RUNTIME_PATH%\Runner\msvcp140_app.dll mklink /H Properties\Default.rd.xml %RUNTIME_PATH%\Runner\Properties\Default.rd.xml mklink /H resources.pri %RUNTIME_PATH%\Runner\resources.pri mklink /H RunnerRemoteExecutionService.winmd %RUNTIME_PATH%\Runner\RunnerRemoteExecutionService.winmd mklink /H System.ComponentModel.DataAnnotations.dll %RUNTIME_PATH%\Runner\System.ComponentModel.DataAnnotations.dll mklink /H System.Net.dll %RUNTIME_PATH%\Runner\System.Net.dll mklink /H System.Private.ServiceModel.dll %RUNTIME_PATH%\Runner\System.Private.ServiceModel.dll mklink /H System.ServiceModel.dll %RUNTIME_PATH%\Runner\System.ServiceModel.dll mklink /H System.ServiceModel.Duplex.dll %RUNTIME_PATH%\Runner\System.ServiceModel.Duplex.dll mklink /H System.ServiceModel.Http.dll %RUNTIME_PATH%\Runner\System.ServiceModel.Http.dll mklink /H System.ServiceModel.NetTcp.dll %RUNTIME_PATH%\Runner\System.ServiceModel.NetTcp.dll mklink /H System.ServiceModel.Primitives.dll %RUNTIME_PATH%\Runner\System.ServiceModel.Primitives.dll mklink /H System.ServiceModel.Security.dll %RUNTIME_PATH%\Runner\System.ServiceModel.Security.dll mklink /H System.ServiceModel.Web.dll %RUNTIME_PATH%\Runner\System.ServiceModel.Web.dll mklink /H System.Windows.dll %RUNTIME_PATH%\Runner\System.Windows.dll mklink /H System.Xml.Serialization.dll %RUNTIME_PATH%\Runner\System.Xml.Serialization.dll mklink /H UAPHost.dll %RUNTIME_PATH%\Runner\UAPHost.dll mklink /H UWPHost.dll %RUNTIME_PATH%\Runner\UWPHost.dll mklink /H vcamp140_app.dll %RUNTIME_PATH%\Runner\vcamp140_app.dll mklink /H vccorlib140_app.dll %RUNTIME_PATH%\Runner\vccorlib140_app.dll mklink /H vcomp140_app.dll %RUNTIME_PATH%\Runner\vcomp140_app.dll mklink /H vcruntime140_app.dll %RUNTIME_PATH%\Runner\vcruntime140_app.dll mklink /H WinMetadata\Windows.winmd %RUNTIME_PATH%\Runner\WinMetadata\Windows.winmd mklink /H XUnit.Runner.Uap.exe %RUNTIME_PATH%\Runner\XUnit.Runner.Uap.exe mklink /H XUnit.Runner.Uap.xr.xml %RUNTIME_PATH%\Runner\XUnit.Runner.Uap.xr.xml mklink /H xunit.runner.utility.dotnet.dll %RUNTIME_PATH%\Runner\xunit.runner.utility.dotnet.dll mklink /H api-ms-win-core-console-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-console-l1-1-0.dll mklink /H api-ms-win-core-datetime-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-datetime-l1-1-0.dll mklink /H api-ms-win-core-debug-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-debug-l1-1-0.dll mklink /H api-ms-win-core-errorhandling-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-errorhandling-l1-1-0.dll mklink /H api-ms-win-core-file-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-file-l1-1-0.dll mklink /H api-ms-win-core-file-l1-2-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-file-l1-2-0.dll mklink /H api-ms-win-core-file-l2-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-file-l2-1-0.dll mklink /H api-ms-win-core-handle-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-handle-l1-1-0.dll mklink /H api-ms-win-core-heap-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-heap-l1-1-0.dll mklink /H api-ms-win-core-interlocked-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-interlocked-l1-1-0.dll mklink /H api-ms-win-core-libraryloader-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-libraryloader-l1-1-0.dll mklink /H api-ms-win-core-localization-l1-2-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-localization-l1-2-0.dll mklink /H api-ms-win-core-memory-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-memory-l1-1-0.dll mklink /H api-ms-win-core-namedpipe-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-namedpipe-l1-1-0.dll mklink /H api-ms-win-core-processenvironment-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-processenvironment-l 1-1-0.dll mklink /H api-ms-win-core-processthreads-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-processthreads-l1-1-0.dl l mklink /H api-ms-win-core-processthreads-l1-1-1.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-processthreads-l1-1-1.dl l mklink /H api-ms-win-core-profile-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-profile-l1-1-0.dll mklink /H api-ms-win-core-rtlsupport-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-rtlsupport-l1-1-0.dll mklink /H api-ms-win-core-string-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-string-l1-1-0.dll mklink /H api-ms-win-core-synch-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-synch-l1-1-0.dll mklink /H api-ms-win-core-synch-l1-2-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-synch-l1-2-0.dll mklink /H api-ms-win-core-sysinfo-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-sysinfo-l1-1-0.dll mklink /H api-ms-win-core-timezone-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-timezone-l1-1-0.dll mklink /H api-ms-win-core-util-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-core-util-l1-1-0.dll mklink /H api-ms-win-crt-conio-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-conio-l1-1-0.dll mklink /H api-ms-win-crt-convert-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-convert-l1-1-0.dll mklink /H api-ms-win-crt-environment-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-environment-l1-1-0.dll mklink /H api-ms-win-crt-filesystem-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-filesystem-l1-1-0.dll mklink /H api-ms-win-crt-heap-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-heap-l1-1-0.dll mklink /H api-ms-win-crt-locale-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-locale-l1-1-0.dll mklink /H api-ms-win-crt-math-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-math-l1-1-0.dll mklink /H api-ms-win-crt-multibyte-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-multibyte-l1-1-0.dll mklink /H api-ms-win-crt-private-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-private-l1-1-0.dll mklink /H api-ms-win-crt-process-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-process-l1-1-0.dll mklink /H api-ms-win-crt-runtime-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-runtime-l1-1-0.dll mklink /H api-ms-win-crt-stdio-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-stdio-l1-1-0.dll mklink /H api-ms-win-crt-string-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-string-l1-1-0.dll mklink /H api-ms-win-crt-time-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-time-l1-1-0.dll mklink /H api-ms-win-crt-utility-l1-1-0.dll %RUNTIME_PATH%\UAPLayout\api-ms-win-crt-utility-l1-1-0.dll mklink /H apphost.exe %RUNTIME_PATH%\UAPLayout\apphost.exe mklink /H clrcompression.dll %RUNTIME_PATH%\UAPLayout\clrcompression.dll mklink /H clrcompression.lib %RUNTIME_PATH%\UAPLayout\clrcompression.lib mklink /H clrcompression.pdb %RUNTIME_PATH%\UAPLayout\clrcompression.pdb mklink /H clretwrc.dll %RUNTIME_PATH%\UAPLayout\clretwrc.dll mklink /H clrjit.dll %RUNTIME_PATH%\UAPLayout\clrjit.dll mklink /H CommandLine.dll %RUNTIME_PATH%\UAPLayout\CommandLine.dll mklink /H coreclr.dll %RUNTIME_PATH%\UAPLayout\coreclr.dll mklink /H CoreFx.Private.TestUtilities.dll %RUNTIME_PATH%\UAPLayout\CoreFx.Private.TestUtilities.dll mklink /H CoreFx.Private.TestUtilities.pdb %RUNTIME_PATH%\UAPLayout\CoreFx.Private.TestUtilities.pdb mklink /H CoreRun.exe %RUNTIME_PATH%\UAPLayout\CoreRun.exe mklink /H dbgshim.dll %RUNTIME_PATH%\UAPLayout\dbgshim.dll mklink /H dotnet.exe %RUNTIME_PATH%\UAPLayout\dotnet.exe mklink /H hostfxr.dll %RUNTIME_PATH%\UAPLayout\hostfxr.dll mklink /H hostpolicy.dll %RUNTIME_PATH%\UAPLayout\hostpolicy.dll mklink /H Microsoft.3rdpartytools.MarkdownLog.dll %RUNTIME_PATH%\UAPLayout\Microsoft.3rdpartytools.MarkdownLog.dll mklink /H Microsoft.CSharp.dll %RUNTIME_PATH%\UAPLayout\Microsoft.CSharp.dll mklink /H Microsoft.CSharp.pdb %RUNTIME_PATH%\UAPLayout\Microsoft.CSharp.pdb mklink /H Microsoft.Diagnostics.Tracing.TraceEvent.dll %RUNTIME_PATH%\UAPLayout\Microsoft.Diagnostics.Tracing.TraceEv ent.dll mklink /H Microsoft.VisualBasic.dll %RUNTIME_PATH%\UAPLayout\Microsoft.VisualBasic.dll mklink /H Microsoft.VisualBasic.pdb %RUNTIME_PATH%\UAPLayout\Microsoft.VisualBasic.pdb mklink /H Microsoft.Win32.Primitives.dll %RUNTIME_PATH%\UAPLayout\Microsoft.Win32.Primitives.dll mklink /H Microsoft.Win32.Primitives.pdb %RUNTIME_PATH%\UAPLayout\Microsoft.Win32.Primitives.pdb mklink /H Microsoft.Win32.Registry.AccessControl.dll %RUNTIME_PATH%\UAPLayout\Microsoft.Win32.Registry.AccessControl. dll mklink /H Microsoft.Win32.Registry.AccessControl.pdb %RUNTIME_PATH%\UAPLayout\Microsoft.Win32.Registry.AccessControl. pdb mklink /H Microsoft.Win32.Registry.dll %RUNTIME_PATH%\UAPLayout\Microsoft.Win32.Registry.dll mklink /H Microsoft.Win32.Registry.pdb %RUNTIME_PATH%\UAPLayout\Microsoft.Win32.Registry.pdb mklink /H Microsoft.XmlSerializer.Generator.dll %RUNTIME_PATH%\UAPLayout\Microsoft.XmlSerializer.Generator.dll mklink /H Microsoft.XmlSerializer.Generator.pdb %RUNTIME_PATH%\UAPLayout\Microsoft.XmlSerializer.Generator.pdb mklink /H mscordaccore.dll %RUNTIME_PATH%\UAPLayout\mscordaccore.dll mklink /H mscordbi.dll %RUNTIME_PATH%\UAPLayout\mscordbi.dll mklink /H mscorlib.dll %RUNTIME_PATH%\UAPLayout\mscorlib.dll mklink /H mscorlib.pdb %RUNTIME_PATH%\UAPLayout\mscorlib.pdb mklink /H mscorrc.debug.dll %RUNTIME_PATH%\UAPLayout\mscorrc.debug.dll mklink /H mscorrc.dll %RUNTIME_PATH%\UAPLayout\mscorrc.dll mklink /H netstandard.dll %RUNTIME_PATH%\UAPLayout\netstandard.dll mklink /H Newtonsoft.Json.dll %RUNTIME_PATH%\UAPLayout\Newtonsoft.Json.dll mklink /H sni.dll %RUNTIME_PATH%\UAPLayout\sni.dll mklink /H sos.dll %RUNTIME_PATH%\UAPLayout\sos.dll mklink /H SOS.NETCore.dll %RUNTIME_PATH%\UAPLayout\SOS.NETCore.dll mklink /H System.AppContext.dll %RUNTIME_PATH%\UAPLayout\System.AppContext.dll mklink /H System.AppContext.pdb %RUNTIME_PATH%\UAPLayout\System.AppContext.pdb mklink /H System.Buffers.dll %RUNTIME_PATH%\UAPLayout\System.Buffers.dll mklink /H System.Buffers.pdb %RUNTIME_PATH%\UAPLayout\System.Buffers.pdb mklink /H System.CodeDom.dll %RUNTIME_PATH%\UAPLayout\System.CodeDom.dll mklink /H System.CodeDom.pdb %RUNTIME_PATH%\UAPLayout\System.CodeDom.pdb mklink /H System.Collections.Concurrent.dll %RUNTIME_PATH%\UAPLayout\System.Collections.Concurrent.dll mklink /H System.Collections.Concurrent.pdb %RUNTIME_PATH%\UAPLayout\System.Collections.Concurrent.pdb mklink /H System.Collections.dll %RUNTIME_PATH%\UAPLayout\System.Collections.dll mklink /H System.Collections.Immutable.dll %RUNTIME_PATH%\UAPLayout\System.Collections.Immutable.dll mklink /H System.Collections.Immutable.pdb %RUNTIME_PATH%\UAPLayout\System.Collections.Immutable.pdb mklink /H System.Collections.NonGeneric.dll %RUNTIME_PATH%\UAPLayout\System.Collections.NonGeneric.dll mklink /H System.Collections.NonGeneric.pdb %RUNTIME_PATH%\UAPLayout\System.Collections.NonGeneric.pdb mklink /H System.Collections.pdb %RUNTIME_PATH%\UAPLayout\System.Collections.pdb mklink /H System.Collections.Specialized.dll %RUNTIME_PATH%\UAPLayout\System.Collections.Specialized.dll mklink /H System.Collections.Specialized.pdb %RUNTIME_PATH%\UAPLayout\System.Collections.Specialized.pdb mklink /H System.ComponentModel.Annotations.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.Annotations.dll mklink /H System.ComponentModel.Annotations.pdb %RUNTIME_PATH%\UAPLayout\System.ComponentModel.Annotations.pdb mklink /H System.ComponentModel.Composition.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.Composition.dll mklink /H System.ComponentModel.DataAnnotations.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.DataAnnotations.dl l mklink /H System.ComponentModel.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.dll mklink /H System.ComponentModel.EventBasedAsync.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.EventBasedAsync.dl l mklink /H System.ComponentModel.EventBasedAsync.pdb %RUNTIME_PATH%\UAPLayout\System.ComponentModel.EventBasedAsync.pd b mklink /H System.ComponentModel.pdb %RUNTIME_PATH%\UAPLayout\System.ComponentModel.pdb mklink /H System.ComponentModel.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.Primitives.dll mklink /H System.ComponentModel.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.ComponentModel.Primitives.pdb mklink /H System.ComponentModel.TypeConverter.dll %RUNTIME_PATH%\UAPLayout\System.ComponentModel.TypeConverter.dll mklink /H System.ComponentModel.TypeConverter.pdb %RUNTIME_PATH%\UAPLayout\System.ComponentModel.TypeConverter.pdb mklink /H System.Composition.AttributedModel.dll %RUNTIME_PATH%\UAPLayout\System.Composition.AttributedModel.dll mklink /H System.Composition.AttributedModel.pdb %RUNTIME_PATH%\UAPLayout\System.Composition.AttributedModel.pdb mklink /H System.Composition.Convention.dll %RUNTIME_PATH%\UAPLayout\System.Composition.Convention.dll mklink /H System.Composition.Convention.pdb %RUNTIME_PATH%\UAPLayout\System.Composition.Convention.pdb mklink /H System.Composition.Hosting.dll %RUNTIME_PATH%\UAPLayout\System.Composition.Hosting.dll mklink /H System.Composition.Hosting.pdb %RUNTIME_PATH%\UAPLayout\System.Composition.Hosting.pdb mklink /H System.Composition.Runtime.dll %RUNTIME_PATH%\UAPLayout\System.Composition.Runtime.dll mklink /H System.Composition.Runtime.pdb %RUNTIME_PATH%\UAPLayout\System.Composition.Runtime.pdb mklink /H System.Composition.TypedParts.dll %RUNTIME_PATH%\UAPLayout\System.Composition.TypedParts.dll mklink /H System.Composition.TypedParts.pdb %RUNTIME_PATH%\UAPLayout\System.Composition.TypedParts.pdb mklink /H System.Configuration.ConfigurationManager.dll %RUNTIME_PATH%\UAPLayout\System.Configuration.ConfigurationMa nager.dll mklink /H System.Configuration.ConfigurationManager.pdb %RUNTIME_PATH%\UAPLayout\System.Configuration.ConfigurationMa nager.pdb mklink /H System.Configuration.dll %RUNTIME_PATH%\UAPLayout\System.Configuration.dll mklink /H System.Console.dll %RUNTIME_PATH%\UAPLayout\System.Console.dll mklink /H System.Console.pdb %RUNTIME_PATH%\UAPLayout\System.Console.pdb mklink /H System.Core.dll %RUNTIME_PATH%\UAPLayout\System.Core.dll mklink /H System.Data.Common.dll %RUNTIME_PATH%\UAPLayout\System.Data.Common.dll mklink /H System.Data.Common.pdb %RUNTIME_PATH%\UAPLayout\System.Data.Common.pdb mklink /H System.Data.dll %RUNTIME_PATH%\UAPLayout\System.Data.dll mklink /H System.Data.Odbc.dll %RUNTIME_PATH%\UAPLayout\System.Data.Odbc.dll mklink /H System.Data.Odbc.pdb %RUNTIME_PATH%\UAPLayout\System.Data.Odbc.pdb mklink /H System.Data.SqlClient.dll %RUNTIME_PATH%\UAPLayout\System.Data.SqlClient.dll mklink /H System.Data.SqlClient.pdb %RUNTIME_PATH%\UAPLayout\System.Data.SqlClient.pdb mklink /H System.Diagnostics.Contracts.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Contracts.dll mklink /H System.Diagnostics.Contracts.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Contracts.pdb mklink /H System.Diagnostics.Debug.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Debug.dll mklink /H System.Diagnostics.Debug.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Debug.pdb mklink /H System.Diagnostics.DiagnosticSource.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.DiagnosticSource.dll mklink /H System.Diagnostics.DiagnosticSource.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.DiagnosticSource.pdb mklink /H System.Diagnostics.FileVersionInfo.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.FileVersionInfo.dll mklink /H System.Diagnostics.FileVersionInfo.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.FileVersionInfo.pdb mklink /H System.Diagnostics.Process.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Process.dll mklink /H System.Diagnostics.Process.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Process.pdb mklink /H System.Diagnostics.StackTrace.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.StackTrace.dll mklink /H System.Diagnostics.StackTrace.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.StackTrace.pdb mklink /H System.Diagnostics.TextWriterTraceListener.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.TextWriterTraceL istener.dll mklink /H System.Diagnostics.TextWriterTraceListener.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.TextWriterTraceL istener.pdb mklink /H System.Diagnostics.Tools.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Tools.dll mklink /H System.Diagnostics.Tools.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Tools.pdb mklink /H System.Diagnostics.TraceSource.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.TraceSource.dll mklink /H System.Diagnostics.TraceSource.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.TraceSource.pdb mklink /H System.Diagnostics.Tracing.dll %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Tracing.dll mklink /H System.Diagnostics.Tracing.pdb %RUNTIME_PATH%\UAPLayout\System.Diagnostics.Tracing.pdb mklink /H System.DirectoryServices.AccountManagement.dll %RUNTIME_PATH%\UAPLayout\System.DirectoryServices.AccountMan agement.dll mklink /H System.DirectoryServices.AccountManagement.pdb %RUNTIME_PATH%\UAPLayout\System.DirectoryServices.AccountMan agement.pdb mklink /H System.DirectoryServices.dll %RUNTIME_PATH%\UAPLayout\System.DirectoryServices.dll mklink /H System.DirectoryServices.pdb %RUNTIME_PATH%\UAPLayout\System.DirectoryServices.pdb mklink /H System.DirectoryServices.Protocols.dll %RUNTIME_PATH%\UAPLayout\System.DirectoryServices.Protocols.dll mklink /H System.DirectoryServices.Protocols.pdb %RUNTIME_PATH%\UAPLayout\System.DirectoryServices.Protocols.pdb mklink /H System.dll %RUNTIME_PATH%\UAPLayout\System.dll mklink /H System.Drawing.dll %RUNTIME_PATH%\UAPLayout\System.Drawing.dll mklink /H System.Drawing.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.Drawing.Primitives.dll mklink /H System.Drawing.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.Drawing.Primitives.pdb mklink /H System.Dynamic.Runtime.dll %RUNTIME_PATH%\UAPLayout\System.Dynamic.Runtime.dll mklink /H System.Dynamic.Runtime.pdb %RUNTIME_PATH%\UAPLayout\System.Dynamic.Runtime.pdb mklink /H System.Globalization.Calendars.dll %RUNTIME_PATH%\UAPLayout\System.Globalization.Calendars.dll mklink /H System.Globalization.Calendars.pdb %RUNTIME_PATH%\UAPLayout\System.Globalization.Calendars.pdb mklink /H System.Globalization.dll %RUNTIME_PATH%\UAPLayout\System.Globalization.dll mklink /H System.Globalization.Extensions.dll %RUNTIME_PATH%\UAPLayout\System.Globalization.Extensions.dll mklink /H System.Globalization.Extensions.pdb %RUNTIME_PATH%\UAPLayout\System.Globalization.Extensions.pdb mklink /H System.Globalization.pdb %RUNTIME_PATH%\UAPLayout\System.Globalization.pdb mklink /H System.IO.Compression.dll %RUNTIME_PATH%\UAPLayout\System.IO.Compression.dll mklink /H System.IO.Compression.FileSystem.dll %RUNTIME_PATH%\UAPLayout\System.IO.Compression.FileSystem.dll mklink /H System.IO.Compression.pdb %RUNTIME_PATH%\UAPLayout\System.IO.Compression.pdb mklink /H System.IO.Compression.ZipFile.dll %RUNTIME_PATH%\UAPLayout\System.IO.Compression.ZipFile.dll mklink /H System.IO.Compression.ZipFile.pdb %RUNTIME_PATH%\UAPLayout\System.IO.Compression.ZipFile.pdb mklink /H System.IO.dll %RUNTIME_PATH%\UAPLayout\System.IO.dll mklink /H System.IO.FileSystem.AccessControl.dll %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.AccessControl.dll mklink /H System.IO.FileSystem.AccessControl.pdb %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.AccessControl.pdb mklink /H System.IO.FileSystem.dll %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.dll mklink /H System.IO.FileSystem.DriveInfo.dll %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.DriveInfo.dll mklink /H System.IO.FileSystem.DriveInfo.pdb %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.DriveInfo.pdb mklink /H System.IO.FileSystem.pdb %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.pdb mklink /H System.IO.FileSystem.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.Primitives.dll mklink /H System.IO.FileSystem.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.Primitives.pdb mklink /H System.IO.FileSystem.Watcher.dll %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.Watcher.dll mklink /H System.IO.FileSystem.Watcher.pdb %RUNTIME_PATH%\UAPLayout\System.IO.FileSystem.Watcher.pdb mklink /H System.IO.IsolatedStorage.dll %RUNTIME_PATH%\UAPLayout\System.IO.IsolatedStorage.dll mklink /H System.IO.IsolatedStorage.pdb %RUNTIME_PATH%\UAPLayout\System.IO.IsolatedStorage.pdb mklink /H System.IO.MemoryMappedFiles.dll %RUNTIME_PATH%\UAPLayout\System.IO.MemoryMappedFiles.dll mklink /H System.IO.MemoryMappedFiles.pdb %RUNTIME_PATH%\UAPLayout\System.IO.MemoryMappedFiles.pdb mklink /H System.IO.Packaging.dll %RUNTIME_PATH%\UAPLayout\System.IO.Packaging.dll mklink /H System.IO.Packaging.pdb %RUNTIME_PATH%\UAPLayout\System.IO.Packaging.pdb mklink /H System.IO.pdb %RUNTIME_PATH%\UAPLayout\System.IO.pdb mklink /H System.IO.Pipes.AccessControl.dll %RUNTIME_PATH%\UAPLayout\System.IO.Pipes.AccessControl.dll mklink /H System.IO.Pipes.AccessControl.pdb %RUNTIME_PATH%\UAPLayout\System.IO.Pipes.AccessControl.pdb mklink /H System.IO.Pipes.dll %RUNTIME_PATH%\UAPLayout\System.IO.Pipes.dll mklink /H System.IO.Pipes.pdb %RUNTIME_PATH%\UAPLayout\System.IO.Pipes.pdb mklink /H System.IO.Ports.dll %RUNTIME_PATH%\UAPLayout\System.IO.Ports.dll mklink /H System.IO.Ports.pdb %RUNTIME_PATH%\UAPLayout\System.IO.Ports.pdb mklink /H System.IO.UnmanagedMemoryStream.dll %RUNTIME_PATH%\UAPLayout\System.IO.UnmanagedMemoryStream.dll mklink /H System.IO.UnmanagedMemoryStream.pdb %RUNTIME_PATH%\UAPLayout\System.IO.UnmanagedMemoryStream.pdb mklink /H System.Json.dll %RUNTIME_PATH%\UAPLayout\System.Json.dll mklink /H System.Json.pdb %RUNTIME_PATH%\UAPLayout\System.Json.pdb mklink /H System.Linq.dll %RUNTIME_PATH%\UAPLayout\System.Linq.dll mklink /H System.Linq.Expressions.dll %RUNTIME_PATH%\UAPLayout\System.Linq.Expressions.dll mklink /H System.Linq.Expressions.pdb %RUNTIME_PATH%\UAPLayout\System.Linq.Expressions.pdb mklink /H System.Linq.Parallel.dll %RUNTIME_PATH%\UAPLayout\System.Linq.Parallel.dll mklink /H System.Linq.Parallel.pdb %RUNTIME_PATH%\UAPLayout\System.Linq.Parallel.pdb mklink /H System.Linq.pdb %RUNTIME_PATH%\UAPLayout\System.Linq.pdb mklink /H System.Linq.Queryable.dll %RUNTIME_PATH%\UAPLayout\System.Linq.Queryable.dll mklink /H System.Linq.Queryable.pdb %RUNTIME_PATH%\UAPLayout\System.Linq.Queryable.pdb mklink /H System.Memory.dll %RUNTIME_PATH%\UAPLayout\System.Memory.dll mklink /H System.Memory.pdb %RUNTIME_PATH%\UAPLayout\System.Memory.pdb mklink /H System.Net.dll %RUNTIME_PATH%\UAPLayout\System.Net.dll mklink /H System.Net.Http.dll %RUNTIME_PATH%\UAPLayout\System.Net.Http.dll mklink /H System.Net.Http.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Http.pdb mklink /H System.Net.Http.Rtc.dll %RUNTIME_PATH%\UAPLayout\System.Net.Http.Rtc.dll mklink /H System.Net.Http.Rtc.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Http.Rtc.pdb mklink /H System.Net.Http.WinHttpHandler.dll %RUNTIME_PATH%\UAPLayout\System.Net.Http.WinHttpHandler.dll mklink /H System.Net.Http.WinHttpHandler.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Http.WinHttpHandler.pdb mklink /H System.Net.HttpListener.dll %RUNTIME_PATH%\UAPLayout\System.Net.HttpListener.dll mklink /H System.Net.HttpListener.pdb %RUNTIME_PATH%\UAPLayout\System.Net.HttpListener.pdb mklink /H System.Net.Mail.dll %RUNTIME_PATH%\UAPLayout\System.Net.Mail.dll mklink /H System.Net.Mail.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Mail.pdb mklink /H System.Net.NameResolution.dll %RUNTIME_PATH%\UAPLayout\System.Net.NameResolution.dll mklink /H System.Net.NameResolution.pdb %RUNTIME_PATH%\UAPLayout\System.Net.NameResolution.pdb mklink /H System.Net.NetworkInformation.dll %RUNTIME_PATH%\UAPLayout\System.Net.NetworkInformation.dll mklink /H System.Net.NetworkInformation.pdb %RUNTIME_PATH%\UAPLayout\System.Net.NetworkInformation.pdb mklink /H System.Net.Ping.dll %RUNTIME_PATH%\UAPLayout\System.Net.Ping.dll mklink /H System.Net.Ping.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Ping.pdb mklink /H System.Net.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.Net.Primitives.dll mklink /H System.Net.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Primitives.pdb mklink /H System.Net.Requests.dll %RUNTIME_PATH%\UAPLayout\System.Net.Requests.dll mklink /H System.Net.Requests.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Requests.pdb mklink /H System.Net.Security.dll %RUNTIME_PATH%\UAPLayout\System.Net.Security.dll mklink /H System.Net.Security.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Security.pdb mklink /H System.Net.ServicePoint.dll %RUNTIME_PATH%\UAPLayout\System.Net.ServicePoint.dll mklink /H System.Net.ServicePoint.pdb %RUNTIME_PATH%\UAPLayout\System.Net.ServicePoint.pdb mklink /H System.Net.Sockets.dll %RUNTIME_PATH%\UAPLayout\System.Net.Sockets.dll mklink /H System.Net.Sockets.pdb %RUNTIME_PATH%\UAPLayout\System.Net.Sockets.pdb mklink /H System.Net.WebClient.dll %RUNTIME_PATH%\UAPLayout\System.Net.WebClient.dll mklink /H System.Net.WebClient.pdb %RUNTIME_PATH%\UAPLayout\System.Net.WebClient.pdb mklink /H System.Net.WebHeaderCollection.dll %RUNTIME_PATH%\UAPLayout\System.Net.WebHeaderCollection.dll mklink /H System.Net.WebHeaderCollection.pdb %RUNTIME_PATH%\UAPLayout\System.Net.WebHeaderCollection.pdb mklink /H System.Net.WebProxy.dll %RUNTIME_PATH%\UAPLayout\System.Net.WebProxy.dll mklink /H System.Net.WebProxy.pdb %RUNTIME_PATH%\UAPLayout\System.Net.WebProxy.pdb mklink /H System.Net.WebSockets.Client.dll %RUNTIME_PATH%\UAPLayout\System.Net.WebSockets.Client.dll mklink /H System.Net.WebSockets.Client.pdb %RUNTIME_PATH%\UAPLayout\System.Net.WebSockets.Client.pdb mklink /H System.Net.WebSockets.dll %RUNTIME_PATH%\UAPLayout\System.Net.WebSockets.dll mklink /H System.Net.WebSockets.pdb %RUNTIME_PATH%\UAPLayout\System.Net.WebSockets.pdb mklink /H System.Numerics.dll %RUNTIME_PATH%\UAPLayout\System.Numerics.dll mklink /H System.Numerics.Vectors.dll %RUNTIME_PATH%\UAPLayout\System.Numerics.Vectors.dll mklink /H System.Numerics.Vectors.pdb %RUNTIME_PATH%\UAPLayout\System.Numerics.Vectors.pdb mklink /H System.Numerics.Vectors.WindowsRuntime.dll %RUNTIME_PATH%\UAPLayout\System.Numerics.Vectors.WindowsRuntime. dll mklink /H System.Numerics.Vectors.WindowsRuntime.pdb %RUNTIME_PATH%\UAPLayout\System.Numerics.Vectors.WindowsRuntime. pdb mklink /H System.ObjectModel.dll %RUNTIME_PATH%\UAPLayout\System.ObjectModel.dll mklink /H System.ObjectModel.pdb %RUNTIME_PATH%\UAPLayout\System.ObjectModel.pdb mklink /H System.pdb %RUNTIME_PATH%\UAPLayout\System.pdb mklink /H System.Private.CoreLib.dll %RUNTIME_PATH%\UAPLayout\System.Private.CoreLib.dll mklink /H System.Private.DataContractSerialization.dll %RUNTIME_PATH%\UAPLayout\System.Private.DataContractSerializat ion.dll mklink /H System.Private.DataContractSerialization.pdb %RUNTIME_PATH%\UAPLayout\System.Private.DataContractSerializat ion.pdb mklink /H System.Private.Uri.dll %RUNTIME_PATH%\UAPLayout\System.Private.Uri.dll mklink /H System.Private.Uri.pdb %RUNTIME_PATH%\UAPLayout\System.Private.Uri.pdb mklink /H System.Private.Xml.dll %RUNTIME_PATH%\UAPLayout\System.Private.Xml.dll mklink /H System.Private.Xml.Linq.dll %RUNTIME_PATH%\UAPLayout\System.Private.Xml.Linq.dll mklink /H System.Private.Xml.Linq.pdb %RUNTIME_PATH%\UAPLayout\System.Private.Xml.Linq.pdb mklink /H System.Private.Xml.pdb %RUNTIME_PATH%\UAPLayout\System.Private.Xml.pdb mklink /H System.Reflection.Context.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Context.dll mklink /H System.Reflection.Context.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Context.pdb mklink /H System.Reflection.DispatchProxy.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.DispatchProxy.dll mklink /H System.Reflection.DispatchProxy.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.DispatchProxy.pdb mklink /H System.Reflection.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.dll mklink /H System.Reflection.Emit.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Emit.dll mklink /H System.Reflection.Emit.ILGeneration.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Emit.ILGeneration.dll mklink /H System.Reflection.Emit.ILGeneration.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Emit.ILGeneration.pdb mklink /H System.Reflection.Emit.Lightweight.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Emit.Lightweight.dll mklink /H System.Reflection.Emit.Lightweight.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Emit.Lightweight.pdb mklink /H System.Reflection.Emit.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Emit.pdb mklink /H System.Reflection.Extensions.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Extensions.dll mklink /H System.Reflection.Extensions.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Extensions.pdb mklink /H System.Reflection.Metadata.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Metadata.dll mklink /H System.Reflection.Metadata.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Metadata.pdb mklink /H System.Reflection.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.pdb mklink /H System.Reflection.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.Primitives.dll mklink /H System.Reflection.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.Primitives.pdb mklink /H System.Reflection.TypeExtensions.dll %RUNTIME_PATH%\UAPLayout\System.Reflection.TypeExtensions.dll mklink /H System.Reflection.TypeExtensions.pdb %RUNTIME_PATH%\UAPLayout\System.Reflection.TypeExtensions.pdb mklink /H System.Resources.Reader.dll %RUNTIME_PATH%\UAPLayout\System.Resources.Reader.dll mklink /H System.Resources.Reader.pdb %RUNTIME_PATH%\UAPLayout\System.Resources.Reader.pdb mklink /H System.Resources.ResourceManager.dll %RUNTIME_PATH%\UAPLayout\System.Resources.ResourceManager.dll mklink /H System.Resources.ResourceManager.pdb %RUNTIME_PATH%\UAPLayout\System.Resources.ResourceManager.pdb mklink /H System.Resources.Writer.dll %RUNTIME_PATH%\UAPLayout\System.Resources.Writer.dll mklink /H System.Resources.Writer.pdb %RUNTIME_PATH%\UAPLayout\System.Resources.Writer.pdb mklink /H System.Runtime.CompilerServices.Unsafe.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.CompilerServices.Unsafe. dll mklink /H System.Runtime.CompilerServices.VisualC.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.CompilerServices.Visual C.dll mklink /H System.Runtime.CompilerServices.VisualC.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.CompilerServices.Visual C.pdb mklink /H System.Runtime.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.dll mklink /H System.Runtime.Extensions.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Extensions.dll mklink /H System.Runtime.Extensions.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Extensions.pdb mklink /H System.Runtime.Handles.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Handles.dll mklink /H System.Runtime.Handles.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Handles.pdb mklink /H System.Runtime.InteropServices.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.InteropServices.dll mklink /H System.Runtime.InteropServices.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.InteropServices.pdb mklink /H System.Runtime.InteropServices.RuntimeInformation.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.InteropServic es.RuntimeInformation.dll mklink /H System.Runtime.InteropServices.RuntimeInformation.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.InteropServic es.RuntimeInformation.pdb mklink /H System.Runtime.InteropServices.WindowsRuntime.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.InteropServices.W indowsRuntime.dll mklink /H System.Runtime.InteropServices.WindowsRuntime.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.InteropServices.W indowsRuntime.pdb mklink /H System.Runtime.Loader.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Loader.dll mklink /H System.Runtime.Loader.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Loader.pdb mklink /H System.Runtime.Numerics.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Numerics.dll mklink /H System.Runtime.Numerics.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Numerics.pdb mklink /H System.Runtime.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.pdb mklink /H System.Runtime.Serialization.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.dll mklink /H System.Runtime.Serialization.Formatters.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Formatter s.dll mklink /H System.Runtime.Serialization.Formatters.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Formatter s.pdb mklink /H System.Runtime.Serialization.Json.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Json.dll mklink /H System.Runtime.Serialization.Json.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Json.pdb mklink /H System.Runtime.Serialization.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Primitive s.dll mklink /H System.Runtime.Serialization.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Primitive s.pdb mklink /H System.Runtime.Serialization.Xml.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Xml.dll mklink /H System.Runtime.Serialization.Xml.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.Serialization.Xml.pdb mklink /H System.Runtime.WindowsRuntime.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.WindowsRuntime.dll mklink /H System.Runtime.WindowsRuntime.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.WindowsRuntime.pdb mklink /H System.Runtime.WindowsRuntime.UI.Xaml.dll %RUNTIME_PATH%\UAPLayout\System.Runtime.WindowsRuntime.UI.Xaml.dl l mklink /H System.Runtime.WindowsRuntime.UI.Xaml.pdb %RUNTIME_PATH%\UAPLayout\System.Runtime.WindowsRuntime.UI.Xaml.pd b mklink /H System.Security.AccessControl.dll %RUNTIME_PATH%\UAPLayout\System.Security.AccessControl.dll mklink /H System.Security.AccessControl.pdb %RUNTIME_PATH%\UAPLayout\System.Security.AccessControl.pdb mklink /H System.Security.Claims.dll %RUNTIME_PATH%\UAPLayout\System.Security.Claims.dll mklink /H System.Security.Claims.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Claims.pdb mklink /H System.Security.Cryptography.Algorithms.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Algorithm s.dll mklink /H System.Security.Cryptography.Algorithms.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Algorithm s.pdb mklink /H System.Security.Cryptography.Cng.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Cng.dll mklink /H System.Security.Cryptography.Cng.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Cng.pdb mklink /H System.Security.Cryptography.Csp.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Csp.dll mklink /H System.Security.Cryptography.Csp.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Csp.pdb mklink /H System.Security.Cryptography.Encoding.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Encoding.dl l mklink /H System.Security.Cryptography.Encoding.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Encoding.pd b mklink /H System.Security.Cryptography.OpenSsl.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.OpenSsl.dll mklink /H System.Security.Cryptography.OpenSsl.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.OpenSsl.pdb mklink /H System.Security.Cryptography.Pkcs.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Pkcs.dll mklink /H System.Security.Cryptography.Pkcs.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Pkcs.pdb mklink /H System.Security.Cryptography.Primitives.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Primitive s.dll mklink /H System.Security.Cryptography.Primitives.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Primitive s.pdb mklink /H System.Security.Cryptography.ProtectedData.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Protec tedData.dll mklink /H System.Security.Cryptography.ProtectedData.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Protec tedData.pdb mklink /H System.Security.Cryptography.X509Certificates.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.X50 9Certificates.dll mklink /H System.Security.Cryptography.X509Certificates.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.X50 9Certificates.pdb mklink /H System.Security.Cryptography.Xml.dll %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Xml.dll mklink /H System.Security.Cryptography.Xml.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Cryptography.Xml.pdb mklink /H System.Security.dll %RUNTIME_PATH%\UAPLayout\System.Security.dll mklink /H System.Security.Permissions.dll %RUNTIME_PATH%\UAPLayout\System.Security.Permissions.dll mklink /H System.Security.Permissions.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Permissions.pdb mklink /H System.Security.Principal.dll %RUNTIME_PATH%\UAPLayout\System.Security.Principal.dll mklink /H System.Security.Principal.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Principal.pdb mklink /H System.Security.Principal.Windows.dll %RUNTIME_PATH%\UAPLayout\System.Security.Principal.Windows.dll mklink /H System.Security.Principal.Windows.pdb %RUNTIME_PATH%\UAPLayout\System.Security.Principal.Windows.pdb mklink /H System.Security.SecureString.dll %RUNTIME_PATH%\UAPLayout\System.Security.SecureString.dll mklink /H System.Security.SecureString.pdb %RUNTIME_PATH%\UAPLayout\System.Security.SecureString.pdb mklink /H System.ServiceModel.Web.dll %RUNTIME_PATH%\UAPLayout\System.ServiceModel.Web.dll mklink /H System.ServiceProcess.dll %RUNTIME_PATH%\UAPLayout\System.ServiceProcess.dll mklink /H System.ServiceProcess.ServiceController.dll %RUNTIME_PATH%\UAPLayout\System.ServiceProcess.ServiceControlle r.dll mklink /H System.ServiceProcess.ServiceController.pdb %RUNTIME_PATH%\UAPLayout\System.ServiceProcess.ServiceControlle r.pdb mklink /H System.Text.Encoding.CodePages.dll %RUNTIME_PATH%\UAPLayout\System.Text.Encoding.CodePages.dll mklink /H System.Text.Encoding.CodePages.pdb %RUNTIME_PATH%\UAPLayout\System.Text.Encoding.CodePages.pdb mklink /H System.Text.Encoding.dll %RUNTIME_PATH%\UAPLayout\System.Text.Encoding.dll mklink /H System.Text.Encoding.Extensions.dll %RUNTIME_PATH%\UAPLayout\System.Text.Encoding.Extensions.dll mklink /H System.Text.Encoding.Extensions.pdb %RUNTIME_PATH%\UAPLayout\System.Text.Encoding.Extensions.pdb mklink /H System.Text.Encoding.pdb %RUNTIME_PATH%\UAPLayout\System.Text.Encoding.pdb mklink /H System.Text.Encodings.Web.dll %RUNTIME_PATH%\UAPLayout\System.Text.Encodings.Web.dll mklink /H System.Text.Encodings.Web.pdb %RUNTIME_PATH%\UAPLayout\System.Text.Encodings.Web.pdb mklink /H System.Text.RegularExpressions.dll %RUNTIME_PATH%\UAPLayout\System.Text.RegularExpressions.dll mklink /H System.Text.RegularExpressions.pdb %RUNTIME_PATH%\UAPLayout\System.Text.RegularExpressions.pdb mklink /H System.Threading.AccessControl.dll %RUNTIME_PATH%\UAPLayout\System.Threading.AccessControl.dll mklink /H System.Threading.AccessControl.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.AccessControl.pdb mklink /H System.Threading.dll %RUNTIME_PATH%\UAPLayout\System.Threading.dll mklink /H System.Threading.Overlapped.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Overlapped.dll mklink /H System.Threading.Overlapped.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Overlapped.pdb mklink /H System.Threading.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.pdb mklink /H System.Threading.Tasks.Dataflow.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.Dataflow.dll mklink /H System.Threading.Tasks.Dataflow.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.Dataflow.pdb mklink /H System.Threading.Tasks.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.dll mklink /H System.Threading.Tasks.Extensions.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.Extensions.dll mklink /H System.Threading.Tasks.Extensions.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.Extensions.pdb mklink /H System.Threading.Tasks.Parallel.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.Parallel.dll mklink /H System.Threading.Tasks.Parallel.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.Parallel.pdb mklink /H System.Threading.Tasks.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Tasks.pdb mklink /H System.Threading.Thread.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Thread.dll mklink /H System.Threading.Thread.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Thread.pdb mklink /H System.Threading.ThreadPool.dll %RUNTIME_PATH%\UAPLayout\System.Threading.ThreadPool.dll mklink /H System.Threading.ThreadPool.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.ThreadPool.pdb mklink /H System.Threading.Timer.dll %RUNTIME_PATH%\UAPLayout\System.Threading.Timer.dll mklink /H System.Threading.Timer.pdb %RUNTIME_PATH%\UAPLayout\System.Threading.Timer.pdb mklink /H System.Transactions.dll %RUNTIME_PATH%\UAPLayout\System.Transactions.dll mklink /H System.Transactions.Local.dll %RUNTIME_PATH%\UAPLayout\System.Transactions.Local.dll mklink /H System.Transactions.Local.pdb %RUNTIME_PATH%\UAPLayout\System.Transactions.Local.pdb mklink /H System.ValueTuple.dll %RUNTIME_PATH%\UAPLayout\System.ValueTuple.dll mklink /H System.ValueTuple.pdb %RUNTIME_PATH%\UAPLayout\System.ValueTuple.pdb mklink /H System.Web.dll %RUNTIME_PATH%\UAPLayout\System.Web.dll mklink /H System.Web.HttpUtility.dll %RUNTIME_PATH%\UAPLayout\System.Web.HttpUtility.dll mklink /H System.Web.HttpUtility.pdb %RUNTIME_PATH%\UAPLayout\System.Web.HttpUtility.pdb mklink /H System.Windows.dll %RUNTIME_PATH%\UAPLayout\System.Windows.dll mklink /H System.Xml.dll %RUNTIME_PATH%\UAPLayout\System.Xml.dll mklink /H System.Xml.Linq.dll %RUNTIME_PATH%\UAPLayout\System.Xml.Linq.dll mklink /H System.Xml.ReaderWriter.dll %RUNTIME_PATH%\UAPLayout\System.Xml.ReaderWriter.dll mklink /H System.Xml.ReaderWriter.pdb %RUNTIME_PATH%\UAPLayout\System.Xml.ReaderWriter.pdb mklink /H System.Xml.Serialization.dll %RUNTIME_PATH%\UAPLayout\System.Xml.Serialization.dll mklink /H System.Xml.XDocument.dll %RUNTIME_PATH%\UAPLayout\System.Xml.XDocument.dll mklink /H System.Xml.XDocument.pdb %RUNTIME_PATH%\UAPLayout\System.Xml.XDocument.pdb mklink /H System.Xml.XmlDocument.dll %RUNTIME_PATH%\UAPLayout\System.Xml.XmlDocument.dll mklink /H System.Xml.XmlDocument.pdb %RUNTIME_PATH%\UAPLayout\System.Xml.XmlDocument.pdb mklink /H System.Xml.XmlSerializer.dll %RUNTIME_PATH%\UAPLayout\System.Xml.XmlSerializer.dll mklink /H System.Xml.XmlSerializer.pdb %RUNTIME_PATH%\UAPLayout\System.Xml.XmlSerializer.pdb mklink /H System.Xml.XPath.dll %RUNTIME_PATH%\UAPLayout\System.Xml.XPath.dll mklink /H System.Xml.XPath.pdb %RUNTIME_PATH%\UAPLayout\System.Xml.XPath.pdb mklink /H System.Xml.XPath.XDocument.dll %RUNTIME_PATH%\UAPLayout\System.Xml.XPath.XDocument.dll mklink /H System.Xml.XPath.XDocument.pdb %RUNTIME_PATH%\UAPLayout\System.Xml.XPath.XDocument.pdb mklink /H ucrtbase.dll %RUNTIME_PATH%\UAPLayout\ucrtbase.dll mklink /H WindowsBase.dll %RUNTIME_PATH%\UAPLayout\WindowsBase.dll mklink /H xunit.abstractions.dll %RUNTIME_PATH%\UAPLayout\xunit.abstractions.dll mklink /H xunit.assert.dll %RUNTIME_PATH%\UAPLayout\xunit.assert.dll mklink /H xunit.assert.pdb %RUNTIME_PATH%\UAPLayout\xunit.assert.pdb mklink /H xunit.console.netcore.exe %RUNTIME_PATH%\UAPLayout\xunit.console.netcore.exe mklink /H xunit.core.dll %RUNTIME_PATH%\UAPLayout\xunit.core.dll mklink /H xunit.core.pdb %RUNTIME_PATH%\UAPLayout\xunit.core.pdb mklink /H xunit.execution.dotnet.dll %RUNTIME_PATH%\UAPLayout\xunit.execution.dotnet.dll mklink /H xunit.execution.dotnet.pdb %RUNTIME_PATH%\UAPLayout\xunit.execution.dotnet.pdb mklink /H Xunit.NetCore.Extensions.dll %RUNTIME_PATH%\UAPLayout\Xunit.NetCore.Extensions.dll mklink /H xunit.performance.api.dll %RUNTIME_PATH%\UAPLayout\xunit.performance.api.dll mklink /H xunit.performance.core.dll %RUNTIME_PATH%\UAPLayout\xunit.performance.core.dll mklink /H xunit.performance.execution.dll %RUNTIME_PATH%\UAPLayout\xunit.performance.execution.dll mklink /H xunit.performance.metrics.dll %RUNTIME_PATH%\UAPLayout\xunit.performance.metrics.dll mklink /H xunit.runner.utility.dotnet.dll %RUNTIME_PATH%\UAPLayout\xunit.runner.utility.dotnet.dll mklink /H xunit.runner.utility.dotnet.pdb %RUNTIME_PATH%\UAPLayout\xunit.runner.utility.dotnet.pdb copy /y %RUNTIME_PATH%\UAPLayout\System.Private.CoreLib.dll System.Private.CoreLib.ni.dll call %RUNTIME_PATH%\Launcher\WindowsStoreAppLauncher.exe -test appxmanifest.xml System.Runtime.CompilerServices.Visua lC.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonuaptests -notrait category=nonwindows tests -notrait category=OuterLoop -notrait category=failing move %USERPROFILE%\Documents\TestResults\System.Runtime.CompilerServices.VisualC.Tests.dll.xml .\testResults.xml move %USERPROFILE%\Documents\TestResults\System.Runtime.CompilerServices.VisualC.Tests.dll.txt .\logs.txt type logs.txt Wrote Windows-compatible test execution script to C:\Users\hugh\Documents\GitHub\corefx\bin/AnyOS.AnyCPU.Debug/System .Runtime.CompilerServices.VisualC.Tests/netstandard//RunTests.cmd RunTestsForProject: C:\Users\hugh\Documents\GitHub\corefx\bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/netstandar d//RunTests.cmd C:\Users\hugh\Documents\GitHub\corefx\bin/testhost/uap-Windows_NT-Debug-x64/ Using C:\Users\hugh\Documents\GitHub\corefx\bin\testhost\uap-Windows_NT-Debug-x64\ as the test runtime folder. Executing in C:\Users\hugh\Documents\GitHub\corefx\bin\AnyOS.AnyCPU.Debug\System.Runtime.CompilerServices.VisualC.Tes ts\netstandard\ Running tests... Start time: 8:56:03.19 A subdirectory or file Assets already exists. A subdirectory or file entrypoint already exists. A subdirectory or file Properties already exists. A subdirectory or file WinMetadata already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. 1 file(s) copied. Got manifest file appxmanifest.xml Removing any previous installation... Installing the application... Package ID is 5cd54353-3ed7-4a6e-a72f-db349f28867c_1.0.0.0_x64__v52bfwc2c21ha Starting the application... Resolved Folder Path: C:\Users\hugh\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\ Waiting for the application to exit... Process has just exited with return code 1. Disabling the debugger... STDOUT & STDERR from imersive process: ================================================================================== ================================================================================== Removing the application... SUCCESS ExitCode 1 1 file(s) moved. 1 file(s) moved. Args: System.Runtime.CompilerServices.VisualC.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait catego ry=nonuaptests -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing Starting... Discovering: System.Runtime.CompilerServices.VisualC.Tests Discovered: System.Runtime.CompilerServices.VisualC.Tests Starting: System.Runtime.CompilerServices.VisualC.Tests Finished: System.Runtime.CompilerServices.VisualC.Tests System.Runtime.CompilerServices.VisualC.Tests Total: 3, Errors: 0, Failed: 0, Time: 0.1498099 Finished running tests. End time= 8:56:11.88, Exit code = 0 Touching ""C:\Users\hugh\Documents\GitHub\corefx\bin/AnyOS.AnyCPU.Debug/System.Runtime.CompilerServices.VisualC.Tests/ netstandard//tests.passed.without.OuterLoop.failing"". Done Building Project ""C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests\System.R untime.CompilerServices.VisualC.Tests.csproj"" (BuildAndTest target(s)). Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:09.73 C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.CompilerServices.VisualC\tests> ``` +0xccdaae at xunit.console.netcore!+0xccd83f at xunit.console.netcore!+0xccf0ef at xunit.console.netcore!+0xccf045 at xunit.console.netcore!+0xcceab3 at xunit.console.netcore!+0xcce9e0 at xunit.console.netcore!+0xcc5a91 at xunit.console.netcore!+0xcc3998 at xunit.console.netcore!+0xcc390b at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.RoundtripManyObjectsInOneStream() at xunit.console.netcore!+0xf6a15e at xunit.console.netcore!+0xc8f23c at xunit.console.netcore!+0xc8f094 Build : Master - 20170620.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170620.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FRoundtripManyObjectsInOneStream +21259 area-System.Runtime "Test: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/ValidateAgainstBlobs failed with ""Xunit.Sdk.TrueException""" "Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/ValidateAgainstBlobs(obj: GenericEqualityComparer`1 { }, blobs: [\""AAEAAAD/////AQAAAAAAAAAEAQAAAC9TeXN0ZW0uQ29sbGVjdG\""..., \...` has failed. Error during equality check of type System.Collections.Generic.GenericEqualityComparer`1[[System.Byte, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]\r Expected: True\r Actual: False Stack Trace: at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.CheckForAnyEquals(Object obj, Object deserializedObj) at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.ValidateAgainstBlobs(Object obj, String[] blobs) at xunit.console.netcore!+0xcf3d3c at xunit.console.netcore!+0xc8f1ff at xunit.console.netcore!+0xc8f08a Build : Master - 20170620.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170620.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FValidateAgainstBlobs(obj:%20GenericEqualityComparer%601%20%7B%20%7D,%20blobs:%20%5B%5C%22AAEAAAD~2F~2F~2F~2F~2FAQAAAAAAAAAEAQAAAC9TeXN0ZW0uQ29sbGVjdG%5C%22...,%20%5C..." +21260 area-System.Linq Test failure: System.Linq.Tests.SelectTests/SelectProperty Opened on behalf of @Jiayili1 The test `System.Linq.Tests.SelectTests/SelectProperty` has failed. $BlockedFromReflection_0_927fe506 : MakeGenericMethod() cannot create this generic method instantiation because the instantiation was not metadata-enabled: 'System.Linq.Enumerable.Select<<>f__AnonymousType2,System.String>(System.Collections.Generic.IEnumerable<<>f__AnonymousType2>,System.Func<<>f__AnonymousType2,System.String>)' For more information, please visit http://go.microsoft.com/fwlink/?LinkID=616868 Stack Trace: at xunit.console.netcore!+0xac6247 at xunit.console.netcore!+0xb88307 at xunit.console.netcore!+0xb39311 at xunit.console.netcore!+0xb39dab at xunit.console.netcore!+0xb87e95 at xunit.console.netcore!+0xb0db5d at xunit.console.netcore!+0xb0dda5 at xunit.console.netcore!+0x7a4a6d at xunit.console.netcore!+0xb0dd19 at xunit.console.netcore!+0xb0d3c7 at xunit.console.netcore!+0xafdbd1 at xunit.console.netcore!+0x69fe77 at xunit.console.netcore!+0x69fef9 at xunit.console.netcore!+0x8b87d7 at xunit.console.netcore!+0x8b8e27 at System.Linq.Tests.SelectTests.SelectProperty() at xunit.console.netcore!+0xa1be21 at xunit.console.netcore!+0x899973 at xunit.console.netcore!+0x8997a7 Build : Master - 20170620.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170620.01/workItem/System.Linq.Queryable.Tests.Execution/analysis/xunit/System.Linq.Tests.SelectTests~2FSelectProperty +21261 area-System.Numerics "Test: System.Numerics.Tests.GenericVectorTests/SquareRootSingle failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Numerics.Tests.GenericVectorTests/SquareRootSingle` has failed. Assert.Equal() Failure\r Expected: 43194.29\r Actual: 43194.3 Stack Trace: at System.Numerics.Tests.GenericVectorTests.<>c__DisplayClass533_0.b__0(Int32 index, Single val) at System.Numerics.Tests.GenericVectorTests.ValidateVector(Numerics.Vector vector, Action indexValidationFunc) at System.Numerics.Tests.GenericVectorTests.TestSquareRoot() at System.Numerics.Tests.GenericVectorTests.SquareRootSingle() at xunit.console.netcore!+0xa57d5d at xunit.console.netcore!+0x84efd3 at xunit.console.netcore!+0x84ee07 Build : Master - 20170620.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170620.01/workItem/System.Numerics.Vectors.Tests.Execution/analysis/xunit/System.Numerics.Tests.GenericVectorTests~2FSquareRootSingle +21263 area-System.Net Allow file Uris to terminate the host with '\' on Unix. Reverts part of https://github.com/dotnet/corefx/pull/20623 which discards these uris as BadAuthorityTerminator. With this change, these uris work the same as on Windows. CC @Priya91 @stephentoub @karelz +21267 area-Meta Command Line tokenization is done all over the place and inconsistently. They should be reconciled. "We have at least four separate implementations of command line tokenization/pasting: CoreCLR - Windows - **Environment.GetCommandLineArgs()** and create a String[] array to pass to Main() https://github.com/dotnet/coreclr/blob/master/src/utilcode/util.cpp#L2886 CoreRT - Windows - **Environment.GetCommandLineArgs()** and create a String[] array to pass to Main() https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Runtime/CommandLine.Windows.cs#L44 CoreFx - Unix - **System.Diagnostics.Process** - create String[] array to pass to Unix exec(). https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs#L450 CoreFx - AnyPlatform - **Environment.CommandLine** - untokenize String[] array back to a single String. https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Environment.cs#L64 There's also test infrastructure (https://github.com/dotnet/corefx/blob/master/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.Process.cs#L52) which implements a ""String[]""-based process invocation utility. It should also paste the arguments using the canonical standard but right it now, it doesn't even make a minimal attempt. While we can't easily share source for an algorithm that lives in three different repos and is written in two different languages, they should at least implement the same standard. It's a pity we never API'ized this in a usable way since every command line tool that parses a response file has to redo this work (and probably get it wrong.) That standard should probably be the CRT's **parse_cmdline()** routine which is what the full framework has emulated ever since .Net 4.0. The CoreCLR and CoreRT implementations are probably already good reference implementations to model (aside from some incorrect comments that imply the behavior is based on **CommandLineToArgvW()**. That may have been true once, but that behavior has diverged between it and the CRT.) The Unix tokenizer at has at least one bug related to zero-length arguments. And the repaster for Environment.CommandLine looks highly suspect (does not recognize that argv[0] is tokenized using special rules, and handling of the 2N/2N+1 backslash rule.) For reference here's also a good 3rd party overview of the sorry mess: http://www.windowsinspired.com/how-a-windows-programs-splits-its-command-line-into-individual-arguments/" +21268 area-System.Runtime Disable User and Machine environment api tests inside appcontainers. These require registry apis and we don't expect to support those inside appcontainers. +21269 area-System.Security [release/2.0] Make VerifyWithRevocation skip if the Online chain can't build "When the system doesn't have a current CRL cached for the entirety of the chain, and the CRL Distribution Point is offline (or there's a local network issue) then the test fails. This is tolerable for a manual run, but not for the automated runs. So unless the X.509 ""RunManualTests"" configuration is set, treat a failure of the online chain to be a skip. Ideally we'd throw a SkipTestException, or something of that ilk, but xunit doesn't support it. Port of https://github.com/dotnet/corefx/issues/21230. Fixes #21076 (in rel/2.0)" +21270 area-System.Drawing Add back some private constructors in System.Drawing.Common https://github.com/dotnet/corefx/commit/f6bb2b5bb5f8841e839fb99eb60118b7b37c4901 removed a few private constructors, because they are not interesting for .NET Core. We should add them back behind a flag, because mono needs them to stick around when they compile this code. @hughbe +21271 area-Infrastructure Build definition work to disable external publish via PipeBuild definition "Related: https://github.com/dotnet/core-eng/issues/626 This was informed by the MSRC work, where being able to selectively disable publish steps for all builds in the composed product was necessary. I did some work to allow disabling any given Pipebuild leg with the -d arg (e.g. “-d ""Regex:^Publish.*""”) but @dagood points out that there’s more to be done there since some repositories do things that need to be disabled in nearly every leg of their build. This issue tracks doing build definition refactoring work to factor functionality that needs to be optionally turned off out. There’s probably many ways to actually get this work done, but I’d suggest one of two: - Factor the optional behavior into independent pipelines (as defined by the pipelines.json for this repo) and disable them for servicing PIpebuild definitions as noted above - Establish Boolean properties that disable all undesirable behavior (publishing to feeds, etc) and set these properties in the -g section of the PipeBuild definition used. In both cases this work needs to be done in the repository using it, not in Pipebuild or other Engineering Services code. Simply disabling the publish leg in CoreFX helps, but it does mean we no longer get a VSTS Drop for each build and other tasks in the publish leg like symbol signing no longer run. It's not a huge deal to run a custom build later to do only the needed steps, but the team should decide what to do here. " +21272 area-System.Net Return Linux NetworkInterface speed in bits per second, not megabits. "On Linux, we retrieve the speed of a network interface ""xyz"" by looking at the file `/sys/class/net/xyz/speed`. This file contains the connection speed in **megabits** per second, but `NetworkInterface.Speed` specifies that it returns a value in **bits** per second. This is a small change that converts between those two units. @stephentoub @pawelgerr Fixes https://github.com/dotnet/corefx/issues/21226" +21273 area-System.IO [NetFx/Mono compat] File.Delete throws IOException on non-existing file on a read-only file system on Linux "Repro steps: ```bash $ sudo mkdir -p /mnt/readonlyfs $ sudo mount --bind / /mnt/readonlyfs $ sudo mount -o remount,ro,bind / /mnt/readonlyfs $ cd /mnt/readonlyfs && touch test.txt # just to be sure touch: cannot touch ‘test.txt’: Read-only file system ``` ```bash $ cd ~ $ dotnet new console ... add the following code in Main(): ... System.IO.File.Delete (""/mnt/readonlyfs/test.txt""); $ dotnet run Unhandled Exception: System.IO.IOException: Read-only file system at System.IO.UnixFileSystem.DeleteFile(String fullPath) at System.IO.File.Delete(String path) at test.Program.Main(String[] args) in /home/alexander/dev/test/Program.cs:line 10 ``` The same code works with Mono, i.e. throws no exception on the non-existent file as specified by MSDN: https://msdn.microsoft.com/en-us/library/system.io.file.delete(v=vs.110).aspx: > If the file to be deleted does not exist, no exception is thrown. --- Importantly, it also works with .NET Core/.NET Framework on Windows when you create a new partition and use `diskpart` to set it to read-only via `ATTRIBUTES VOLUME SET READONLY`. .NET Core version (same on Linux/Windows): ```bash $ dotnet --info .NET Command Line Tools (2.0.0-preview1-005977) Product Information: Version: 2.0.0-preview1-005977 Commit SHA-1 hash: 414cab8a0b Runtime Environment: OS Name: ubuntu OS Version: 14.04 OS Platform: Linux RID: ubuntu.14.04-x64 Base Path: /usr/share/dotnet/sdk/2.0.0-preview1-005977/ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983 ``` /cc @JeremyKuhne " +21274 area-System.Diagnostics System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute [FAIL] "Found in https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug_prtest/122/consoleFull#-4760281082d31e50d-1517-49fc-92b3-2ca637122019 Ran part of #21239. ``` System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute [FAIL] 15:48:45 Could not start C:\Users\dotnet-bot\AppData\Local\Temp\ProcessStartInfoTests_dc2ppurg.ww0\StartInfo_TextFile_ShellExecute_1010_2203599d.txt UseShellExecute=True 15:48:45 Association details for '.txt' 15:48:45 ------------------------------ 15:48:45 Open command: C:\Windows\system32\OpenWith.exe ""%1"" 15:48:45 ProgID: Didn't get expected HRESULT (1) when getting char count. HRESULT was 0x80070057 15:48:45 15:48:45 Expected: True 15:48:45 Actual: False 15:48:45 Stack Trace: 15:48:45 D:\j\workspace\outerloop_net---92aeb271\src\System.Diagnostics.Process\tests\ProcessStartInfoTests.cs(1022,0): at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute() 15:48:46 15:48:46 15:48:46 Usage: dotnet [options] 15:48:46 15:48:46 Usage: dotnet [path-to-application] 15:48:46 15:48:46 15:48:46 15:48:46 Options: 15:48:46 15:48:46 -h|--help Display help. 15:48:46 15:48:46 --version Display version. 15:48:46 15:48:46 15:48:46 15:48:46 path-to-application: 15:48:46 15:48:46 The path to an application .dll file to execute. 15:48:46 15:48:49 Finished: System.Diagnostics.Process.Tests 15:48:49 15:48:49 === TEST EXECUTION SUMMARY === 15:48:49 D:\j\workspace\outerloop_net---92aeb271\Tools\tests.targets(345,5): warning : System.Diagnostics.Process.Tests Total: 222, Errors: 0, Failed: 1, Skipped: 2, Time: 5.381s [D:\j\workspace\outerloop_net---92aeb271\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests.csproj] 15:48:49 Trying to find crash dumps for project: System.Diagnostics.Process.Tests 15:48:49 No new dump file was found in C:\Users\DOTNET~1\AppData\Local\Temp\CoreRunCrashDumps 15:48:49 Finished running tests. End time=15:48:48.97, Exit code = 1 15:48:49 D:\j\workspace\outerloop_net---92aeb271\Tools\tests.targets(345,5): warning MSB3073: The command ""D:\j\workspace\outerloop_net---92aeb271\bin/Windows_NT.AnyCPU.Debug/System.Diagnostics.Process.Tests/netstandard//RunTests.cmd D:\j\workspace\outerloop_net---92aeb271\bin/testhost/netcoreapp-Windows_NT-Debug-x64/"" exited with code 1. [D:\j\workspace\outerloop_net---92aeb271\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests.csproj] 15:48:49 D:\j\workspace\outerloop_net---92aeb271\Tools\tests.targets(353,5): error : One or more tests failed while running tests from 'System.Diagnostics.Process.Tests' please check D:\j\workspace\outerloop_net---92aeb271\bin/Windows_NT.AnyCPU.Debug/System.Diagnostics.Process.Tests/netstandard/testResults.xml for details! [D:\j\workspace\outerloop_net---92aeb271\src\System.Diagnostics.Process\tests\System.Diagnostics.Process.Tests.csproj] ```" +21275 area-Infrastructure RemoteExecutorTestBase on UAP waits for the remote process It looks like the UAP implementation of RemoteInvoke waits for the remote process to finish before continuing, blocking the main process. Some tests are timing out due to this, and others that are expecting concurrent processing are being run sequentially. Disabled tests: - https://github.com/dotnet/corefx/blob/master/src/System.Threading/tests/EventWaitHandleTests.cs#L179 - https://github.com/dotnet/corefx/blob/master/src/System.Threading/tests/SemaphoreTests.cs#L283 +21276 area-System.Threading RemoteInvoke + Both reading/writing to a file does not seem to work "The test is using FileCleanupTestBase.GetTestFilePath(), but it's getting the following exception from the remote process: ``` ERROR: System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic(prefix: ""dd63f96fc81d41239d884790ad70bd6c"") [FAIL] System.AggregateException : One or more errors occurred. (RemoteExecuter: System.Threading.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb b__15_1 dd63f96fc81d41239d884790ad70bd6ca4c011e6fad843faa29b09c69631e03f, ""C:\Users\\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\AC\Temp\MutexTests_s5jxc3bf.q23\CrossProcess_NamedMutex_ProtectedFileAccessAtomic_228_e009ac76"" System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NotSupportedException: The format of the path '""C:\Users\\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\AC\Temp\MutexTests_s5jxc3bf.q23\CrossProcess_NamedMutex_ProtectedFileAccessAtomic_228_e009ac76""' is not supported. at System.IO.Path.GetFullPath(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) at System.IO.StreamWriter..ctor(String path) at System.IO.File.WriteAllText(String path, String contents) at System.Threading.Tests.MutexTests.<>c.b__15_1(String m, String f) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData) Returned Error code: -4 Expected: True Actual: False) ---- RemoteExecuter: System.Threading.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb b__15_1 dd63f96fc81d41239d884790ad70bd6ca4c011e6fad843faa29b09c69631e03f, ""C:\Users\\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\AC\Temp\MutexTests_s5jxc3bf.q23\CrossProcess_NamedMutex_ProtectedFileAccessAtomic_228_e009ac76"" System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NotSupportedException: The format of the path '""C:\Users\\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\AC\Temp\MutexTests_s5jxc3bf.q23\CrossProcess_NamedMutex_ProtectedFileAccessAtomic_228_e009ac76""' is not supported. at System.IO.Path.GetFullPath(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) at System.IO.StreamWriter..ctor(String path) at System.IO.File.WriteAllText(String path, String contents) at System.Threading.Tests.MutexTests.<>c.b__15_1(String m, String f) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData) Returned Error code: -4 Expected: True Actual: False Stack Trace: at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__1() at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__2() at System.Threading.Tests.ThreadTestHelpers.RunTestInBackgroundThread(Action test) at System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic(String prefix) ----- Inner Stack Trace ----- at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`3 method, String arg1, String arg2, RemoteInvokeOptions options) at System.Threading.Tests.MutexTests.<>c__DisplayClass15_0.b__0() at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__0() ``` Disabled tests: - https://github.com/dotnet/corefx/blob/master/src/System.Threading/tests/MutexTests.cs#L176" +21278 area-System.Threading Add test for mutex creation hang in a context where creating a global… … mutex is not allowed Depends on https://github.com/dotnet/coreclr/pull/12381 Fixes dotnet/coreclr#11306 - Added test for mutex creation hang in a context where creating a global mutex is not allowed - Modified two tests to run in a separate thread to allow them to fail rather than hang if there's a bug - Disabled a few tests that are not working under UWP with issues filed +21279 area-System.Data Can't set SqlParameter.DbType to Date "Executing `parameter.DbType = DbType.Date;` sets `SqlParameter.DbType` to `DbType.DateTime` This results in an exception: ```C# System.Data.SqlTypes.SqlTypeException occurred HResult=0x80131930 Message=SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. Source= StackTrace: at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DateParameterBug.Program.Main(String[] args) in C:\Users\ansvyryd\source\repos\DateParameterBug\DateParameterBug\Program.cs:line 44 ``` when executing the following code ```C# using System; using System.Data; using System.Data.SqlClient; namespace DateParameterBug { class Program { static void Main(string[] args) { using (var conn = new SqlConnection(""Server=(localdb)\\mssqllocaldb;Database=master;Trusted_Connection=True"")) { conn.Open(); using (var command = conn.CreateCommand()) { command.CommandText = ""CREATE DATABASE DateParameterBug""; command.ExecuteNonQuery(); } } using (var conn = new SqlConnection(""Server=(localdb)\\mssqllocaldb;Database=DateParameterBug;Trusted_Connection=True"")) { conn.Open(); using (var command = conn.CreateCommand()) { command.CommandText = @""CREATE TABLE [Item] ( [Id] int NOT NULL IDENTITY, [Date] date NOT NULL, CONSTRAINT [PK_Item] PRIMARY KEY([Id]) );""; command.ExecuteNonQuery(); } using (var command = conn.CreateCommand()) { command.CommandText = @""INSERT [dbo].[Item] ([Date]) VALUES (@date)""; var parameter = new SqlParameter(); parameter.ParameterName = ""@date""; parameter.DbType = DbType.Date; parameter.Value = new DateTime(1605, 1, 15); command.Parameters.Add(parameter); command.ExecuteNonQuery(); } } } } } ``` Targeting `netcoreapp2.0` Referencing `System.Data.SqlClient 4.4.0-preview2-25405-01` " +21280 area-System.Net Change GetMethod binding flags for InternalSetName "CookieParser need to reflect on internal method ""InternalSetName"" and this was failing in UWP_AOT. I changed ""InternalSetName"" to be public , but forgot to change the GetMethod binding attributes" +21281 area-System.Memory Add initial Span/Buffer-based APIs across corefx With the advent of `Span` and `Buffer`, there are a multitude of improvements we’ll want to make to types across coreclr/corefx. Some of these changes include exposing `Span`/`Buffer`/`ReadOnlySpan`/`ReadOnlyBuffer` themselves and the associated operations on them. Other changes involve using those types internally to improve memory usage of existing code. This issue isn’t about either of those. Rather, this issue is about what new APIs we want to expose across corefx (with some implementations in coreclr/corert). A good approximation of a starting point is looking at existing APIs that work with arrays or pointers (and to some extent strings), and determining which of these should have `Span`/`Buffer`-based overloads (there will almost certainly be “new” APIs we’ll want to add that don’t currently have overloads, but for the most part those can be dealt with separately and one-off). There are ~3000 such methods that exist today in the corefx reference assemblies. We’re obviously not going to add ~3000 new overloads that work with `Span`/`Buffer`, nor should we. But many of these aren’t relevant for one reason or another, e.g. they’re in components considered to be legacy, they’re very unlikely to be used on hot paths where a span/buffer->array conversion would matter at all, etc. I’ve gone through the framework and identified a relatively small set of methods I believe we should start with and add together for the next release. This is dialable, of course, but I believe we need a solid set of these to represent enough mass that span/buffer permeate the stack and make sense to use in an application. All of these are cases where using a span or a buffer instead of an array makes a quantifiable difference in allocation, and thus can have a measurable impact on the overall memory profile of a consuming application, contributing to an overall improvement in performance. #### System.BitConverter BitConverter is used to convert between primitive types and bytes, but the current APIs force an unfortunate amount of allocation due to working with byte[]s. We can help to avoid much of that by adding overloads that work with `Span`, adding `CopyBytes` methods instead of `GetBytes` methods, and adding `To*` overloads that accept `ReadOnlySpan` instead of accepting `byte[]`. ```C# namespace System { public static class BitConverter { // Matching overloads for GetBytes. Copy to the destination span // rather than allocating a new byte[]. Return false if the destination // span isn't large enough, which can be determined before any copying. public static bool TryWriteBytes(Span destination, bool value); public static bool TryWriteBytes(Span destination, char value); public static bool TryWriteBytes(Span destination, double value); public static bool TryWriteBytes(Span destination, short value); public static bool TryWriteBytes(Span destination, int value); public static bool TryWriteBytes(Span destination, long value); public static bool TryWriteBytes(Span destination, float value); public static bool TryWriteBytes(Span destination, ushort value); public static bool TryWriteBytes(Span destination, uint value); public static bool TryWriteBytes(Span destination, ulong value); // matching overloads for To* public static bool ToBoolean(ReadOnlySpan value); public static char ToChar(ReadOnlySpan value); public static double ToDouble(ReadOnlySpan value); public static short ToInt16(ReadOnlySpan value); public static int ToInt32(ReadOnlySpan value); public static long ToInt64(ReadOnlySpan value); public static float ToSingle(ReadOnlySpan value); public static ushort ToUInt16(ReadOnlySpan value); public static uint ToUInt32(ReadOnlySpan value); public static ulong ToUInt64(ReadOnlySpan value); … } } ``` EDIT 7/18/2017: Updated based on API review. Separated out into https://github.com/dotnet/corefx/issues/22355 for implementation. #### System.Convert As with BitConverter, the Convert class is also used to convert arrays. Most of the members are about converting from individual primitives to other individual primitives, but several work with arrays, in particular those for working with Base64 data. We should add the following methods: ```C# namespace System { public class Convert { public static string ToBase64String(ReadOnlySpan bytes, Base64FormattingOptions options = Base64FormattingOptions.None); public static bool TryToBase64Chars(ReadOnlySpan bytes, Span chars, out int bytesConsumed, out int charsWritten, Base64FormattingOptions options = Base64FormattingOptions.None); public static bool TryFromBase64String(string s, Span bytes, out int charsConsumed, out int bytesWritten); public static bool TryFromBase64Chars(ReadOnlySpan chars, Span bytes, out int charsConsumed, out int bytesWritten); … } } ``` Separated out as https://github.com/dotnet/corefx/issues/22417 for implementation. #### System.Random The Random class provides a NextBytes method that takes a byte[]. In many situations, that’s fine, but in some you’d like to be able to get an arbitrary amount of random data without having to allocate such an array, and we can do that with spans. For example, here’s a case where we’re getting some random data only to then want a Base64 string from it: https://referencesource.microsoft.com/#System/net/System/Net/WebSockets/WebSocketHelpers.cs,366 ```C# namespace System { public class Random { public virtual void NextBytes(Span buffer); … } } ``` Separated out into https://github.com/dotnet/corefx/issues/22356 for implementation. #### Primitive Parse methods Related to BitConverter and Convert, it’s very common to want to parse primitive values out of strings. Today, that unfortunately often involves creating substrings representing the exact piece of text, and then passing it to a string-based TryParse method. Similarly, it's common to convert primitives to strings via a method like ToString. Instead, I suggest we add the following: ```C# namespace System { public struct Int16 { public short Parse(ReadOnlySpan chars, NumberStyles style = NumberStyles.Integer, NumberFormatInfo info = null); public bool TryParse(ReadOnlySpan chars, out short result, NumberStyles style = NumberStyles.Integer, NumberFormatInfo info = null); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } … // similar Parse/TryParse/TryFormat methods for each of: // Int32 // Int64 // UInt16 // UInt32 // UInt64 // Decimal // Double // Single // Boolean (no NumberStyle/NumberFormatInfo args) } ``` Separated out as https://github.com/dotnet/corefx/issues/22403 for implementation. Then we should also support parsing a few common types out of `ReadOnlySpan`: ```C# namespace System { public struct DateTime { public static DateTime Parse(ReadOnlySpan s, IFormatProvider provider = null, System.Globalization.DateTimeStyles styles = DateTimeStyles.None); public static DateTime ParseExact(ReadOnlySpan s, string format, IFormatProvider provider, DateTimeStyles style = DateTimeStyles.None); public static DateTime ParseExact(ReadOnlySpan s, string[] formats, IFormatProvider provider, DateTimeStyles style); public static bool TryParse(ReadOnlySpan s, out DateTime result, IFormatProvider provider = null, DateTimeStyles styles = DateTimeStyles.None); public static bool TryParseExact(ReadOnlySpan s, string format, IFormatProvider provider, DateTimeStyles style, out DateTime result); public static bool TryParseExact(ReadOnlySpan s, string[] formats, IFormatProvider provider, DateTimeStyles style, out DateTime result); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } public struct DateTimeOffset { public static DateTimeOffset Parse(ReadOnlySpan input, IFormatProvider formatProvider = null, System.Globalization.DateTimeStyles styles = DateTimeStyles.None); public static DateTimeOffset ParseExact(ReadOnlySpan input, string format, IFormatProvider formatProvider, DateTimeStyles styles = DateTimeStyles.None); public static DateTimeOffset ParseExact(ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, DateTimeStyles styles); public static bool TryParse(ReadOnlySpan input, out DateTimeOffset result, IFormatProvider formatProvider = null, DateTimeStyles styles = DateTimeStyles.None); public static bool TryParseExact(ReadOnlySpan input, string format, IFormatProvider formatProvider, DateTimeStyles styles, out DateTimeOffset result); public static bool TryParseExact(ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, DateTimeStyles styles, out DateTimeOffset result); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider formatProvider = null); … } public struct TimeSpan { public static TimeSpan Parse(ReadOnlySpan input, IFormatProvider formatProvider = null); public static TimeSpan ParseExact (ReadOnlySpan input, string format, IFormatProvider formatProvider, TimeSpanStyles styles = TimeSpanStyles.None); public static TimeSpan ParseExact (ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, TimeSpanStyles styles = TimeSpanStyles.None); public static bool TryParse(ReadOnlySpan input, out TimeSpan result, IFormatProvider formatProvider = null); public static bool TryParseExact (ReadOnlySpan input, string format, IFormatProvider formatProvider, out TimeSpan result, TimeSpanStyles styles = TimeSpanStyles.None); public static bool TryParseExact (ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, out TimeSpan result, TimeSpanStyles styles = TimeSpanStyles.None); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } public class Version { public static Version Parse(ReadOnlySpan input); public static bool TryParse(ReadOnlySpan input, out Version result); public bool TryFormat(Span destination, out int charsWritten, int fieldCount = 4); … } } ``` EDIT 7/18/2017: Updated per API review DateTime{Offset} separated out as https://github.com/dotnet/corefx/issues/22358 for implementation. TimeSpan separated out as https://github.com/dotnet/corefx/issues/22375 for implementation. Version separated out as https://github.com/dotnet/corefx/issues/22376 for implementation. #### System.Guid Guids are often constructed from byte[]s, and these byte[]s are often new’d up, filled in, and then provided to the Guid, e.g. https://referencesource.microsoft.com/#mscorlib/system/guid.cs,b622ef5f6b76c10a,references We can avoid such allocations with a Span ctor, with the call sites instead creating a Span from 16 bytes of stack memory. Guids are also frequently converted to byte[]s to be output, e.g. https://referencesource.microsoft.com/#mscorlib/system/guid.cs,94f5d8dabbf0dbcc,references and we can again avoid those temporary allocations by supporting copying the Guid’s data to a span: ```C# namespace System { public struct Guid { public Guid(ReadOnlySpan b); // correspond to Guid(byte[] b) public bool TryWriteBytes(Span destination); public static Guid Parse(ReadOnlySpan input); public static Guid ParseExact(ReadOnlySpan input, string format); public static bool TryParse(ReadOnlySpan input, out Guid result); public static bool TryParseExact(ReadOnlySpan input, string format, out Guid result); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } } ``` EDIT 7/18/2017: Updated per API review Separated out as https://github.com/dotnet/corefx/issues/22377 for implementation. #### System.String It’ll be very common to create strings from spans. We should have a ctor for doing so: ```C# namespace System { public class String { public String(ReadOnlySpan value); … } } ``` Separated out as https://github.com/dotnet/corefx/issues/22378 for implementation. In addition to the new ctor on String, we should also expose an additional Create method (not a ctor so as to support a generic method argument). One of the difficulties today with String being immutable is it’s more expensive for developers to create Strings with custom logic, e.g. filling a char[] and then creating a String from that. To work around that expense, some developers have taken to mutating strings, which is very much frowned upon from a BCL perspective, e.g. by using the String(char, int) ctor to create the string object, then using unsafe code to mutate it, and then handing that back. We could handle such patterns by adding a method like this: ```C# namespace System { public delegate void StringCreateAction(TState state, Span destination); public class String { public static string Create(int length, TState state, StringCreateAction action); … } } ``` Separated out as https://github.com/dotnet/corefx/issues/22380 for implementation. The value of overloads like this is amplified when you start using them together. For example, here’s an example of creating a random string: https://referencesource.microsoft.com/#System.Web.Mobile/UI/MobileControls/Adapters/ChtmlTextBoxAdapter.cs,62 This incurs the allocation of a byte[] to pass to Random, a char[] as a temporary from which to create the string, and then creating the string from that char[]; unnecessary copies and allocations. Finally, we may also want to provide string.Format support for `ReadOnlyBuffer` as an argument; although passing it as an object will box it, string.Format could write it to the generated string without needing an intermediary string created, so a smaller allocation and avoiding an extra copy. #### System.IO.Stream ```C# namespace System.IO { public class Stream { public virtual int Read(Span destination); public virtual ValueTask ReadAsync(Buffer destination, CancellationToken cancellationToken = default(CancellationToken)); public virtual void Write(ReadOnlySpan source); public virtual Task WriteAsync(ReadOnlyBuffer source, CancellationToken cancellationToken = default(CancellationToken)); … } } ``` EDIT 7/18/2017: Updated per API review. Separated out as https://github.com/dotnet/corefx/issues/22381 for implementation. The base `{ReadOnly}Buffer`-accepting methods can use TryGetArray to access a wrapped array if there is one, then delegating to the existing array-based overloads. If the buffer doesn’t wrap an array, then it can get a temporary array from ArrayPool, delegate and copy (for reads) or copy and delegate (for writes). The base `Span`-accepting methods can do the ArrayPool/delegation approach in all cases. We’ll then need to override these methods on all relevant streams: FileStream, NetworkStream, SslStream, DeflateStream, CryptoStream, MemoryStream, UnmanagedMemoryStream, PipeStream, NullStream, etc. to provide more efficient `Span`/`Buffer`-based implementations, which they should all be able to do. In a few corner cases, there are streams where the synchronous methods are actually implemented as wrappers for the asynchronous ones; in such cases, we may be forced to live with the ArrayPool/copy solution. However, in such cases, the synchronous implementation is already relatively poor, incurring additional costs (e.g. allocations, blocking a thread, etc.), and they’re that way in part because synchronous usage of such streams is discouraged and thus these haven’t been very optimized, so the extra overhead in these cases is minimal. Once these additional methods exist, we’ll want to use them in a variety of places in implementation around corefx, e.g. https://github.com/dotnet/corefx/blob/d6b11250b5113664dd3701c25bdf9addfacae9cc/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs#L1140 as various pieces of code can benefit not only from the use of `Span`/`Buffer`, but also from the async methods returning `ValueTask` instead of `Task`, and the corresponding reduced allocations for ReadAsync calls that complete synchronously. #### System.IO.BufferStream and System.IO.ReadOnlyBufferStream Just as we have a MemoryStream that works with `byte[]` and an UnmanagedMemoryStream that works with a `byte*` and a length, we need to support treating `Buffer` and `ReadOnlyBuffer` as streams. It’s possible we could get away with reimplementing `MemoryStream` on top of `Buffer`, but more than likely this would introduce regressions for at least some existing use cases. Unless demonstrated otherwise, we will likely want to have two new stream types for these specific types: ```C# namespace System.IO { public class BufferStream : Stream { public BufferStream(Buffer buffer); public BufferStream(Buffer buffer, bool publiclyVisible); public bool TryGetBuffer(out Buffer buffer); … // overrides of all members on Stream } public class ReadOnlyBufferStream : Stream { public ReadOnlyBufferStream(ReadOnlyBuffer buffer); public ReadOnlyBufferStream(ReadOnlyBuffer buffer, bool publiclyVisible); public bool TryGetBuffer(out ReadOnlyBuffer buffer); … // overrides of all members on Stream, with those that write throwing NotSupportedException } } ``` The name of BufferStream is unfortunately close to that of BufferedStream, and they mean very different things, but I’m not sure that’s important enough to consider a less meaningful name. Separated out as https://github.com/dotnet/corefx/issues/22404 for discussion and implementation. Optional: It’s also unfortunate that all of these various memory-based streams don’t share a common base type or interface; we may want to add such a thing, e.g. an interface that anything which wraps a `Buffer` can implement… then for example code that uses Streams and has optimizations when working directly with the underlying data can query for the interface and special-case when the underlying `Buffer` can be accessed, e.g. ```C# namespace System { public interface IHasBuffer { bool TryGetBuffer(out Buffer buffer); bool TryGetBuffer(out ReadOnlyBuffer buffer); } } ``` We could implement this not only on `BufferStream` and `ReadOnlyBufferStream`, but also on `MemoryStream`, `UnmanagedMemoryStream`, and even on non-streams, basically anything that can hand out a representation of its internals as buffers. Separated out as https://github.com/dotnet/corefx/issues/22404 for discussion and implementation. #### System.IO.TextReader and System.IO.TextWriter As with streams, we should add the relevant base virtuals for working with spans/buffers: ```C# namespace System.IO { public class TextReader { public virtual int Read(Span span); public virtual ValueTask ReadAsync(Buffer buffer); public virtual int ReadBlock(Span span); public virtual ValueTask ReadBlockAsync(Buffer buffer); … } public class TextWriter { public virtual void Write(ReadOnlySpan span); public virtual Task WriteAsync(ReadOnlyBuffer buffer, CancellationToken cancellationToken = default(CancellationToken)); public virtual void WriteLine(ReadOnlySpan span); public virtual Task WriteLineAsync(ReadOnlyBuffer buffer, CancellationToken cancellationToken = default(CancellationToken)); … } } ``` We’ll then also need to override these appropriately on our derived types, e.g. StreamReader, StreamWriter, StringReader, etc. Separated out as https://github.com/dotnet/corefx/issues/22406 for implementation. #### System.IO.BinaryReader and System.IO.BinaryWriter As with TextReader/Writer, we also want to enable the existing BinaryReader/Writer to work with spans: ```C# namespace System.IO { public class BinaryReader { public virtual int Read(Span span); public virtual int Read(Span span); … } public class BinaryWriter { public virtual int Write(ReadOnlySpan span); public virtual void Write(ReadOnlySpan span); … } } ``` The base implementations of these can work with the corresponding new methods on Stream. Separated out as https://github.com/dotnet/corefx/issues/22428 and https://github.com/dotnet/corefx/issues/22429 for implementation. #### System.IO.File EDIT 6/26/2017: For now I've removed these File methods, as it's unclear to me at this point that they actually meet the core need. If you're repeatedly reading and pass a span that's too small, you're going to need to read again after handling the read data, but with these APIs as defined, each read results in needing to open and the close the file again; similarly if you're using the write APIs to write a file in pieces. At that point you're better off just using FileStream and reading/writing spans and buffers. We should look to add helpers here when we can figure out the right helpers at the right level of abstraction, e.g. should we expose the ability to just create a SafeFileHandle and then have these helpers operate on SafeFileHandle rather than on a string path? ~~The File class provides helpers for reading/writing data from/to files. Today the various “read/write data as bytes” functions work with byte[]s, which mean allocating potentially very large byte[]s to store the data to be written or that’s read. This can be made much more efficient with spans, allowing the buffers to be pooled (in particular for file reads).~~ ``` // Previously proposed. API decision: Won't add for now. namespace System.IO { public static class File { public static int ReadAllBytes(string path, long offset, Span span, out long remaining); public static ValueTask<(int bytesRead, long bytesRemaining)> ReadAllBytesAsync(string path, long offset, Buffer buffer); public static void WriteAllBytes(string path, ReadOnlySpan span); public static Task WriteAllBytesAsync(string path, ReadOnlyBuffer buffer); public static void AppendAllBytes(string path, ReadOnlySpan span); public static Task AppendAllBytesAsync(string path, ReadOnlyBuffer buffer); … } } ``` #### System.Text.StringBuilder StringBuilder is at the core of lots of manipulation of chars, and so it’s a natural place to want to work with `Span` and `ReadOnlySpan`. At a minimum we should add the following APIs to make it easy to get data in and out of a StringBuilder without unnecessary allocation: ```C# namespace System.Text { public class StringBuilder { public StringBuilder Append(ReadOnlySpan value); public StringBuilder Insert(int index, ReadOnlySpan value); public void CopyTo(int sourceIndex, Span destination, int count); … } } ``` Separated out as https://github.com/dotnet/corefx/issues/22430. In addition to these, we’ll also want to consider a mechanism for exposing the one or more buffers StringBuilder internally maintains, allowing them to be accessed as `ReadOnlySpan`. This is covered separately by #21248. #### System.Text.Encoding The Encoding class already exposes a lot of methods for converting between chars/strings and bytes, and it includes overloads for both arrays and pointers. While it might seem onerous to add an additional set for spans, the number of new overloads needed is actually fairly small, and we can provide reasonable default base implementations in terms of the existing pointer-based overloads. These methods could potentially have optimized derived overrides, but more generally they will help the platform to have a consistent feel, avoiding the need for devs with spans to use unsafe code to access the pointer-based methods. ```C# namespace System.Text { public class Encoding { public virtual int GetByteCount(ReadOnlySpan chars); public virtual bool TryGetBytes(ReadOnlySpan chars, Span bytes, out int charsConsumed, out int bytesWritten); public virtual int GetCharCount(ReadOnlySpan bytes); public virtual bool TryGetChars(ReadOnlySpan bytes, Span chars, out int bytesConsumed, out int charsWritten); public virtual string GetString(ReadOnlySpan bytes); public virtual ReadOnlySpan Preamble { get; } … } } ``` Separated out as https://github.com/dotnet/corefx/issues/22431. #### System.Numerics ```C# namespace System.Numerics { public struct BigInteger { public BigInteger(ReadOnlySpan value); public int GetByteCount(); public bool TryWriteBytes(Span destination, out int bytesWritten); public static BigInteger Parse(ReadOnlySpan value, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); public static bool TryParse(ReadOnlySpan value, out BigInteger result, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); … } } ``` Separated out in https://github.com/dotnet/corefx/issues/22401 for implementation. Even with BigInteger being a less-commonly-used type, there are still places even in our own code where this would be helpful: https://source.dot.net/#System.Security.Cryptography.X509Certificates/Common/System/Security/Cryptography/DerSequenceReader.cs,206 In fact, BigInteger’s implementation itself could benefit from this, such as with parsing: https://referencesource.microsoft.com/#System.Numerics/System/Numerics/BigNumber.cs,411 #### System.Net.IPAddress It’s very common to create IPAddresses from data gotten off the network, and in high-volume scenarios. Internally we try to avoid creating `byte[]`s to pass to IPAddress when constructing them, such as by using an internal pointer-based ctor, but outside code doesn’t have that luxury. We should make it possible to go to and from IPAddress without additional allocation: ```C# namespace System.Net { public class IPAddress { public IPAddress(ReadOnlySpan address); public IPAddress(ReadOnlySpan address, long scopeid); public bool TryWriteBytes(Span destination, out int bytesWritten); public static IPAddress Parse(ReadOnlySpan ipChars); public static bool TryParse(ReadOnlySpan ipChars, out IPAddress address); public static bool TryFormat(Span destination, out int charsWritten); … } } ``` Even internally this will be useful in cases like these: https://source.dot.net/#System.Net.NetworkInformation/Common/System/Net/SocketAddress.cs,135 https://source.dot.net/#System.Net.NameResolution/Common/System/Net/Internals/IPAddressExtensions.cs,21 EDIT 7/25/2017: Updated based on API review Separated out as https://github.com/dotnet/corefx/issues/22607 for implementation. #### System.Net.Sockets This is one of the more impactful areas for spans and buffers, and having these methods will be a welcome addition to the Socket family. Today, there are lots of existing methods on sockets, e.g. an overload for sync vs async with the APM pattern vs async with Task vs async with SocketAsyncEventArgs, and overload for Send vs Receive vs SendTo vs ReceiveMessageFrom vs… etc. I do not think we should add an entire new set of span/buffer-based methods, and instead we should start with the most impactful. To me, that means adding the following two synchronous and two Task-based asynchronous overloads for sending and receiving: ```C# namespace System.Net.Sockets { public class Socket { public int Receive(Span buffer, SocketFlags flags); public int Receive(Span buffer, SocketFlags socketFlags, out SocketError errorCode); public int Send(ReadOnlySpan buffer, SocketFlags flags); public int Send(ReadOnlySpan buffer, SocketFlags flags, out SocketError errorCode); … } public class SocketTaskExtensions { public static ValueTask ReceiveAsync(this Socket socket, Buffer buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default(CancellationToken)); public static ValueTask SendAsync(this Socket socket, ReadOnlyBuffer buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default(CancellationToken)); … } } ``` Note that I’ve put the ReceiveAsync and SendAsync overloads on the SocketTaskExtensions class as that’s where the existing overloads live. We could choose to instead make these new overloads instance methods on Socket. In addition, the highest-performing set of APIs with sockets are based on SocketAsyncEventArgs. To support those, we should add the following: ```C# namespace System.Net.Sockets { public class SocketAsyncEventArgs { public void SetBuffer(Buffer buffer); public Buffer GetBuffer(); … } } ``` The implementation currently stores a `byte[]` buffer. We can change that to store a `Buffer` instead, and just have the existing `SetBuffer(byte[])` overload wrap the `byte[]` in a `Buffer`. There is an existing `Buffer { get; }` property as well. We can change that to just use TryGetArray on the internal buffer and return it if it exists, or else null. The `GetBuffer` method is then there to support getting the set `Buffer`, in case the supplied buffer wrapped something other than an array. EDIT 7/25/2017: Updated based on API review Separated out as https://github.com/dotnet/corefx/issues/22608 for implementation #### System.Net.WebSockets.WebSocket Similar to Socket is WebSocket, in that it’s desirable to be able to use these APIs with finer-grain control over allocations than is currently easy or possible, and in high-throughput situations. We should add the following members: ```C# namespace System.Net.WebSockets { public class WebSocket { public virtual ValueTask ReceiveAsync(Buffer buffer, CancellationToken cancellationToken = default(CancellationToken)); public virtual Task SendAsync(ReadOnlyBuffer buffer, CancellationToken cancellationToken = default(CancellationToken)); … } } ``` Note that ReceiveAsync is returning a ValueTask rather than a Task (to avoid that allocation in the case where the operation can complete synchronously), and it’s wrapping a ValueWebSocketReceiveResult instead of a WebSocketReceiveResult. The latter is the type that currently exists, but is a class. I’m suggesting we also add the following struct-based version, so that receives can be made to be entirely allocation-free in the case of synchronous completion, and significantly less allocating even for async completion. ```C# namespace System.Net.WebSockets { public struct ValueWebSocketReceiveResult { public ValueWebSocketReceiveResult(int count, WebSocketMessageType messageType, bool endOfMessage); public ValueWebSocketReceiveResult(int count, WebSocketMessageType messageType, bool endOfMessage, WebSocketCloseStatus? closeStatus, string closeStatusDescription); public WebSocketCloseStatus? CloseStatus { get; } public string CloseStatusDescription { get; } public int Count { get; } public bool EndOfMessage { get; } public WebSocketMessageType MessageType { get; } } } ``` EDIT 7/25/2017: Updated per API review Separated out as https://github.com/dotnet/corefx/issues/22610 for implementation #### System.Net.Http This area still needs more thought. My current thinking is at a minimum we add the following: ```C# namespace System.Net.Http { public class HttpClient { public ValueTask GetBytesAsync(Uri requestUri, Buffer buffer); … } public sealed class ReadOnlyBufferContent : HttpContent { public ReadOnlyBufferContent(ReadOnlyBuffer buffer); … // override relevant members of HttpContent } } ``` The GetBytesAsync overload avoids the need for allocating a potentially large byte[] to store the result, and the ReadOnlyBufferContent makes it easy to upload `ReadOnlyBuffer`s rather than just `byte[]`s. There is potentially more that can be done here, but I suggest we hold off on that until we investigate more deeply to understand what we’d need to plumb throughout the system. HttpClient is itself a relatively small wrapper on top of HttpClientHandler, of which there are multiple implementations (ours and others’), and to plumb a buffer all the way down through would involve new APIs and implementation in HttpClientHandler implementations. Definitely something to investigate. Separated out as https://github.com/dotnet/corefx/issues/22612 for implementation (ReadOnlyBufferContent... we decided against the GetBytesAsync helper for now in 7/25/2017 API review) #### System.Security.Cryptography namespace Several hashing-related types in System.Security.Cryptography would benefit from being able to work with data without allocating potentially large `byte[]`s. One is HashAlgorithm, which has several methods for processing an input `byte[]` and allocating/filling an output `byte[]`: ```C# namespace System.Security.Cryptography { public abstract class HashAlgorithm { public bool TryComputeHash(ReadOnlySpan source, Span destination, out int bytesWritten); protected virtual void HashCore(ReadOnlySpan source); protected virtual bool TryHashFinal(Span destination, out int bytesWritten); … } } ``` EDIT 7/25/2017: Updated per API review Separated out as https://github.com/dotnet/corefx/issues/22613 for implementation Similarly, several overloads would be beneficial on IncrementalHash: ```C# namespace System.Security.Cryptography { public sealed class IncrementalHash { public void AppendData(ReadOnlySpan data); public bool TryGetHashAndReset(Span destination, out int bytesWritten); … } } ``` EDIT 7/25/2017: Updated per API review Separated out as https://github.com/dotnet/corefx/issues/22614 for implementation Similarly, several encryption/signing related types would benefit from avoiding such `byte[]` allocations: ```C# namespace System.Security.Cryptography { public abstract class RSA : AsymmetricAlgorithm { public virtual bool TryDecrypt(ReadOnlySpan source, Span destination, RSAEncryptionPadding padding, out int bytesWritten); public virtual bool TryEncrypt(ReadOnlySpan source, Span destination, RSAEncryptionPadding padding, out int bytesWritten); protected virtual bool TryHashData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten); public virtual bool TrySignHash(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten); public virtual bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); public virtual bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); … } public abstract class DSA : AsymmetricAlgorithm { public virtual bool TryCreateSignature(ReadOnlySpan source, Span destination, out int bytesWritten); protected virtual bool TryHashData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm); public virtual bool VerifySignature(ReadOnlySpan rgbHash, ReadOnlySpan rgbSignature); … } public abstract class ECDsa : AsymmetricAlgorithm { protected virtual bool TryHashData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignHash(ReadOnlySpan source, Span destination, out int bytesWritten); public virtual bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm); public virtual bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signature); … } } ``` EDIT 7/25/2017: Update per API review Separated out of https://github.com/dotnet/corefx/issues/22615 for implementation One other place where we’d want to be able to use span is `ICryptoTransform`. Lots of APIs, mainly CreateEncryptor and CreateDecryptor, methods return ICryptoTransform, and it has one it a TransformBlock and TransformFinalBlock method that works with `byte[]`. We’d really like support in terms of `ReadOnlySpan` and `Span`. I see four options here: 1. Do nothing. 2. Add a second `ISpanCryptoTransform` interface, and a second set of differently-named CreateEncryptor/Decryptor methods for creating instances of these. 3. Add a second `ISpanCryptoTransform` interface that’s also implemented by our implementations, and have consuming code query for the interface and use it if it exists. 4. If we get support for default interface methods (https://github.com/dotnet/csharplang/issues/52), add these span-based overloads to the interface, with a default implementation in terms of the existing methods. My strong preference is for (4), but that’s based on a feature that doesn’t yet exist. As such, my suggestion is to hold off on this until it’s clear whether such a feature will exist: if it will, do (4) once it does, otherwise do (3). EDIT 7/25/2017: Decision: 4 if/when the feature exists, and 1 until then. #### Other namespaces There are some other namespaces that could likely benefit from Span/Buffer, but we should probably handle separately from this initial push: - System.Collections. It’s not clear to me to what extent we should add span/buffer-based APIs to collections. CopyTo overloads that take `Span`? Callback-based methods for exposing the internal storage via a `ReadOnlySpan` (if that makes sense for the relevant collection)? This needs more thought. - System.Collections.Immutable. Just as `T[]` has an implicit operator to a `Span`, we should consider adding an `ImmutableArray` operator for converting to a `ReadOnlySpan`. - System.Reflection.Metadata. It’s very specialized, and I’ve not included it in this issue. It can be handled separately. ### Known Open Issues There are several cross-cutting open issues that apply to many of these APIs: - How to handle cases where data is too large for the supplied span/buffer provided? Throw? Simply return a “not big enough” indication? Return how much data was written along with such an indication? Return how much data was written and attempt to return how much more space is needed if possible? Etc. Related to that, do we want to enable an approach where you can call the method with an empty output span and get back an upper bound for the maximum amount of space that will be needed, such that you can then call it again with a sufficient buffer? - Argument names. For overloads, should we generally name arguments “span” for `ReadOnlySpan` and `Span`, and “buffer” for `ReadOnlyBuffer` and `Buffer`? What if the existing overload uses a different name, like “input” or “b”? What about cases where currently there’s a single argument (e.g. “input”) and then returns an array, and the new overload will have two span args, one input and one output? ## Next Steps 1. Discussion of this “minimal” proposal. My goal is to quickly arrive at a minimal set; there may be additional APIs we want beyond these, but are there any here we shouldn’t have? Are there any absolutely critical ones missing? 2. API review. I want to review all of these en-mass to ensure we’re being consistent across all of these members. 3. Once the APIs are approved, open individual issues for each set that’ll be worked on by an individual together. 4. Implement them, test them, and expose them. +21282 area-System.Security WindowsIdentity.IsAuthenticated is false when running in an AppContainer Tracking special-casing UWP in NegotiateStream_StreamToStream_Authentication_Success and NegotiateStream_StreamToStream_Authentication_TargetName_Success. Since UAPAOT tests are not running in an AppContainer testing it will not exhibit the same problems. Fixing this is tracked by #18760. I've narrowed the behavior difference to WindowsIdentity.IsAuthenticated when running in UAP mode, within an AppContainer. +21283 area-System.Net Enabling System.Net.Security tests and fixing/disabling tests that currently fail in UAP / UAPAOT Adding workarounds for behavior differences when running in an AppContainer. Contributes to #20033 +21284 area-Infrastructure Update build tools version to 2.0.0-prerelease-01720-02 To include restore fix for https://github.com/dotnet/buildtools/pull/1577. PTAL @danmosemsft @mellinoe +21285 area-System.Net Manually run multi-machine Enterprise test scenarios - [ ] Several System.Net.Security can only be tested within a multi-machine environment. - [x] Manually re-enable and run tests disabled by the CI intermittent issue tracked by #16534 +21286 area-Infrastructure Update all the apicompat baselines With this change we are now re-enabling APICompat checks against netstandard, except the are no longer producing baseline files they will take a baseline file and produce errors if they are broken. We are still not doing the netcoreapp.netfx baseline automatically it is still behind the BaselineApiCompat property. PTAL @danmosemsft @joperezr +21287 area-Infrastructure Update UAP Xunit Runner to new version where UI logging is disabled cc: @danmosemsft @joperezr @tarekgh +21288 area-Serialization DCS Serialize ICollection Class Differently on Desktop and NetCore "The behavior difference is caused by the code difference in `CollectionDataContract.GetCollectionMethods`. On Desktop: ``` Type ienumerableInterface = interfaceType.GetInterface(""System.Collections.Generic.IEnumerable*""); ``` On NetCore: ``` Type ienumerableInterface = interfaceType.GetInterfaces().Where(t => t.FullName.StartsWith(""System.Collections.Generic.IEnumerable"")).FirstOrDefault(); ``` The implementation on Desktop is wrong. It would never find the IEnumerable`1 interface." +21289 area-Serialization Added a tests for ICollection`1 Types. DCS serialize ICollection`1 types differently on Desktop and NetCore. But DCS can de-serialize the payloads from both frameworks, so we don't need to change the behavior of either Desktop or NetCore. Fix #21288 +21290 area-System.Net [Port to 2.0] Support backslashes in Unix file URIs. fixes #20628 Master PR: #20623 #21263 #21482 With these changes, on Unix, file paths containing backslashes will be accepted. It is legal on Unix for filenames to have \\ char. Hence, we enable support for these in .NET Core. Cases like below will report the following on Unix. ``` file://authority\pathpart1/pathpart2?query#fragment -> file://authority/pathpart1/pathpart2?query#fragment file://authority/pathpart1\pathpart2?query#fragment -> file://authority/pathpart1%5Cpathpart2?query#fragment file:///pathpart1\pathpart2?query#fragment -> file:///pathpart1%5Cpathpart2?query#fragment \\host\pathpart1\pathpart1 -> file://host/pathpart1/pathpart2 ``` cc @tmds +21292 area-Serialization Reenable Ref Emit for XML Serializer in UAP Change #if uap in https://github.com/dotnet/corefx/pull/20783 to #if uapaot only. per discussion with @zhenlan we want to keep RefEmit support for Xml Serializer in the compiled case as it's proven and faster than reflection base serialization and also matches DCS Before this change, we had: Debug (uap): RefEmit Retail (uapaot): AOT optimization + RBS as fallback After this change, we have Debug (uap): RBS Retail (uapaot): AOT optimization + RBS as fallback we want to go back. +21293 area-System.Drawing Add back private ctors removed incorrectly in System.Drawing.Common Fixes #21270 +21294 area-System.Drawing "Test: System.Drawing.Tests.IconTests/ToBitmap_BitmapIcon_Success(icon: (Icon)) failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Drawing.Tests.IconTests/ToBitmap_BitmapIcon_Success(icon: (Icon))` has failed. System.ArgumentException : Parameter is not valid. Stack Trace: at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format) at System.Drawing.Icon.BmpFrame() at System.Drawing.Icon.ToBitmap() at System.Drawing.Tests.IconTests.ToBitmap_BitmapIcon_Success(Icon icon) Build : Master - 20170621.01 (Core Tests) Failing configurations: - Windows.81.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170621.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Tests.IconTests~2FToBitmap_BitmapIcon_Success(icon:%20(Icon)) +21296 area-System.Drawing Remove System.Drawing dead code Attached is a zip containing removed.htm which shows everything ILLink thinks is dead and all.htm which shows everything, with removed in red. Everything red should be safe to delete. [removed.zip](https://github.com/dotnet/corefx/files/1090302/removed.zip) @mellinoe @hughbe do you think it is safe for folks to do this without tests? +21297 area-System.IO UWP F5 tests: System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable Opened on behalf of @Jiayili1 The test `System.ComponentModel.Tests.AsyncOperationFinalizerTests/Finalizer_OperationCompleted_DoesNotCallOperationCompleted` has failed. System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.ComponentModel.Tests.AsyncOperationFinalizerTests.Finalizer_OperationCompleted_DoesNotCallOperationCompleted() Build : Master - 20170621.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170621.01/workItem/System.ComponentModel.EventBasedAsync.Tests/analysis/xunit/System.ComponentModel.Tests.AsyncOperationFinalizerTests~2FFinalizer_OperationCompleted_DoesNotCallOperationCompleted +21299 area-System.Linq "Test: System.Linq.Tests.ContainsTests/String failed with ""System.Reflection.MissingMetadataException""" Opened on behalf of @Jiayili1 The test `System.Linq.Tests.ContainsTests/String` has failed. System.Reflection.MissingMetadataException : This operation cannot be carried out because metadata for the following object was removed for performance reasons:\ \ EETypeRva:0x0003E2FC\ \ No further information is available. Rebuild in debug mode for better information.\ \ Stack Trace: at xunit.console.netcore!+0xc1c50e at xunit.console.netcore!+0xc1bb80 at xunit.console.netcore!+0xc28672 at xunit.console.netcore!+0x74188b at xunit.console.netcore!+0x73ac23 at xunit.console.netcore!+0x71d03c at xunit.console.netcore!+0x8f96df at xunit.console.netcore!+0x8ff385 at xunit.console.netcore!+0x8ff5da at xunit.console.netcore!+0xc1b731 at xunit.console.netcore!+0x7fcecb at xunit.console.netcore!+0x8030f9 at xunit.console.netcore!+0xa48210 Build : Master - 20170621.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170621.01/workItem/System.Linq.Tests/analysis/xunit/System.Linq.Tests.ContainsTests~2FString +21301 area-System.Reflection "Tests under: DispatchProxyTests.DispatchProxyTests failed with ""System.Reflection.DispatchProxyInstanceNotFoundException""" Opened on behalf of @Jiayili1 The test `DispatchProxyTests.DispatchProxyTests/Create_Proxy_Derives_From_DispatchProxy_BaseType` has failed. $BlockedFromReflection_0_48792822 : Exception of type 'EETypeRva:0x0003D150(System.Reflection.DispatchProxyInstanceNotFoundException)' was thrown. Stack Trace: at xunit.console.netcore!+0x7b1c48 at DispatchProxyTests.DispatchProxyTests.Create_Proxy_Derives_From_DispatchProxy_BaseType() at xunit.console.netcore!+0x8ab8a8 at xunit.console.netcore!+0x791d6c at xunit.console.netcore!+0x791bc4 Build : Master - 20170621.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170621.01/workItem/System.Reflection.DispatchProxy.Tests/analysis/xunit/DispatchProxyTests.DispatchProxyTests~2FCreate_Proxy_Derives_From_DispatchProxy_BaseType +21302 area-System.Runtime "Test: System.Tests.GetEnvironmentVariable/EnumerateEnvironmentVariables(target: User) failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Tests.GetEnvironmentVariable/EnumerateEnvironmentVariables(target: User)` has failed. System.IO.IOException : No more data is available Stack Trace: at xunit.console.netcore!+0x8a4a69 at xunit.console.netcore!+0xa24c2f at xunit.console.netcore!+0xa24b55 at xunit.console.netcore!+0xa24a2f at xunit.console.netcore!+0x7cefcf at xunit.console.netcore!+0x92046d at System.Tests.GetEnvironmentVariable.EnumerateEnvironmentVariables(EnvironmentVariableTarget target) at xunit.console.netcore!+0x995f0b at xunit.console.netcore!+0x83a05f at xunit.console.netcore!+0x839e93 Build : Master - 20170621.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170621.01/workItem/System.Runtime.Extensions.Tests.Execution/analysis/xunit/System.Tests.GetEnvironmentVariable~2FEnumerateEnvironmentVariables(target:%20User) +21303 area-System.IO Subclass of MemoryStream can cause a Debug.Assert to be hit in WindowsRuntimeBuffer ```cs [Fact] public void GetWindowsRuntimeBuffer_BufferWithLengthGreaterThanIntMax_Throws() { var memoryStream = new SubMemoryStream(10); WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(memoryStream, 0, 0); } public class SubMemoryStream : MemoryStream { public SubMemoryStream(int capacity) : base(capacity) { } public override long Length => long.MaxValue; } ``` Stack: ``` FailFast: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) at System.Diagnostics.Debug.Assert(Boolean condition) at System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(MemoryStre am underlyingStream, Int32 positionInStream, Int32 length) in C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtim e.WindowsRuntime\src\System\Runtime\InteropServices\WindowsRuntime\WindowsRuntimeBufferExtensions.cs:line 445 at System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeBufferExtensionsTests.GetWindowsRuntimeBuffer _BufferWithLengthGreaterThanIntMax_Throws() in C:\Users\hugh\Documents\GitHub\corefx\src\System.Runtime.WindowsRuntim e\tests\System\Runtime\InteropServices\WindowsRuntimeBufferExtensionsTests.cs:line 199 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] paramet ers, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) ``` +21304 area-System.Collections ObservableCollection.OnDeserialized NullRefs when called from JSON.Net When JSON.Net deserializes ObservableCollection it will call OnDeserialized on it with the below callstack: Newtonsoft.Json!Newtonsoft::Json::Serialization::JsonContract::<>c__DisplayClass1.b__0+0x57 Newtonsoft.Json!Newtonsoft::Json::Serialization::SerializationCallback.Invoke+0x25 Newtonsoft.Json!Newtonsoft::Json::Serialization::JsonContract.InvokeOnDeserialized+0x76 Newtonsoft.Json!Newtonsoft::Json::Serialization::JsonSerializerInternalReader.OnDeserialized+0xc4 Newtonsoft.Json!Newtonsoft::Json::Serialization::JsonSerializerInternalReader.PopulateList+0x268 The method will NullRef because the _monitor field is null. I'm guessing this was caused by #20643 . There seems to be a mismatch where we override OnDeserialized, but not OnDeserializing where would initialize the monitor. @justinvp @ViktorHofer +21305 area-System.Text RegEx: Support for POSIX character classes Is there any plan to support POSIX character classes? [:digit:] [:alnum:] etc. +21306 area-Infrastructure Crashes on shutdown from EventListener in various test projects We're continuing to be plagued by failures like this in netfx runs: ``` System.InvalidOperationException: Collection was modified; enumeration operation may not execute. at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) at System.Collections.Generic.List`1.Enumerator.MoveNextRare() at System.Diagnostics.Tracing.EventListener.DisposeOnShutdown(Object sender, EventArgs e) ``` e.g. https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netfx+CGroup_Release+AGroup_x86+TestOuter_false_prtest/102/. If we're not already on a version of netfx that includes the fix, we need to move CI to a newer version. And if we are on a sufficiently new version, then apparently the issue isn't fixed. +21308 area-System.Runtime Add Attribute tests in System.Runtime.InteropServices Had these in my backlog from last week - can now send in because it won't cause merge conflicts. The tests are pretty basic, just added for test coverage for constructors of attributes etc. etc. +21309 area-Infrastructure Provision CodeBase and NotificationAlias variables. Introducing `CodeBase` and `NotificationAlias` variables so that values of these can be passed through PipeBuild. `CodeBase` allows targeting security build for non-master branches. `NotificationAlias` enables TSA reports for non-dncsec users. +21310 area-System.Drawing [porting] SystemIcons.ShieldIcon fails with `Resource 'ShieldIcon.ico' cannot be found in class 'System.Drawing.SystemIcons'` "The code for `SystemIcons.Shield` is as follows ```c# Contract.Ensures(Contract.Result() != null); if (s_shield == null) { try { // IDI_SHIELD is defined in OS Vista and above if (Environment.OSVersion.Version.Major >= 6) { // we hard-code size here, to prevent breaking change // the size of _shield before this change is always 32 * 32 IntPtr hIcon = IntPtr.Zero; int result = SafeNativeMethods.LoadIconWithScaleDown(NativeMethods.NullHandleRef, SafeNativeMethods.IDI_SHIELD, 32, 32, ref hIcon); if (result == 0) s_shield = new Icon(hIcon); } } catch (Exception) { // we don't want to throw exception here. // If there is an exception, we will load an icon from file ShieldIcon.ico } } if (s_shield == null) { s_shield = new Icon(typeof(SystemIcons), ""ShieldIcon.ico""); } return s_shield; ``` The first error we get is an `EntrypointNotFoundException` for `LoadIconWithScaleDown` which is likely a bug The second error we get is constructing the icon: ```c# System.Drawing.Tests.SystemIconsTests.SystemIcons_Get_ReturnsExpected(iconThunk: Func`1 { Method = System.Drawing. Icon b__0_7(), Target = <>c { } }) [FAIL] System.ArgumentException : Resource 'ShieldIcon.ico' cannot be found in class 'System.Drawing.SystemIcons'. Stack Trace: at System.Drawing.Icon..ctor(Type type, String resource) at System.Drawing.SystemIcons.get_Shield() at System.Drawing.Tests.SystemIconsTests.<>c.b__0_7() at System.Drawing.Tests.SystemIconsTests.SystemIcons_Get_ReturnsExpected(Func`1 iconThunk) ``` This is likely because the logical name of the embedded resource icon is incorrect . I'll submit a fix for the first part" +21311 area-System.Diagnostics Convert docs to markdown Converted HTML docs to markdown. Used C# syntax highlight on the code sample. +21313 area-Infrastructure Nano only supports x64 so only test it for the x64 legs @MattGal @danmosemsft this should limit the Nano test runs to just x64. +21314 area-System.Net System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response "When a server returns a HTTP header which has a white space in the header name, then the `HttpClient` throws the following error: ``` System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() ``` I tried to create a simple ASP.NET Core application to reproduce this issue, but it seems that there is another bug in ASP.NET Core which causes a server issue when trying to set this HTTP header: ```csharp app.Run(async (ctx) => { ctx.Response.Headers.Add(""some -test"", ""abcdef""); await ctx.Response.WriteAsync(""Hello world""); }); ```" +21316 area-Infrastructure Changing binplace configurations so the default only contains TargetGroup and OSGroup Port of https://github.com/dotnet/corefx/pull/20839 cc @joperezr @danmosemsft @ViktorHofer +21317 area-System.Net Re-enabling CookieContainer test on uapaot Reverts dotnet/corefx#20484 since test has now been fixed based on @tijoytom 's comment here: https://github.com/dotnet/corefx/issues/20482#issuecomment-309962895 +21318 area-System.Net [release/2.0.0] Return Linux NetworkInterface speed as bits per second, not megabits. Direct port of #21272 to release/2.0.0. Pending approval, do not merge. +21319 area-System.Drawing Start using FEATURE_SYSTEM_EVENTS in System.Drawing.Common On the .NET Framework, types in System.Drawing will react to certain system events, like system fonts changing, or system colors changing. When such an event is encountered, the system fonts and colors are refreshed and re-cached, so that they stay up-to-date with the rest of the OS. On .NET Framework, these events are tracked through the `SystemEvents` class, located in System.dll. We don't have this functionality in .NET Core, but can consider adding it, perhaps directly in System.Drawing.Common.dll for now. All code using this is behind the `FEATURE_SYSTEM_EVENTS` flag. Note that this will probably only ever work on Windows, and not other operating systems. Another option is to simply delete the code, and document this as a minor quirk of the .NET Core version of the library. This would mean that, in very rare (incredibly rare?) circumstances, the colors and fonts returned by System.Drawing.Common would be out of sync with the rest of the system. @stephentoub @hughbe +21320 area-System.Net Unable to make https request when Oid lookup takes too long "This issue was discovered in .NET 4.6, but would also affect .NET core apps running on windows. Here is a link to the feedback I created on the connect website for this issue: https://connect.microsoft.com/VisualStudio/feedback/details/3136313 The solution is to use a different Oid constructor that prevents the potentially costly Oid friendly name lookup. What follows is a more detailed description of how issue we were seeing in our application. I support a desktop application that calls a WCF service hosted on our servers over https. A small number of our clients with the desktop application installed (~20/10000) have been reporting issues connecting to the WCF service since installing KB4014511. The exception being thrown is: System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host The error is misleading though. After quite a lot of troubleshooting, we were able to pinpoint the source of the problem. By decompiling the System.dll, I saw that the following 2 lines were added to the System.Net.Security.SecureChannel class shipped with KB4014511: private readonly Oid m_ServerAuthOid = new Oid(""1.3.6.1.5.5.7.3.1""); private readonly Oid m_ClientAuthOid = new Oid(""1.3.6.1.5.5.7.3.2""); The initialization of those Oid objects is triggering a system call to the CryptFindOIDInfo function to lookup the friendly name associated with the specified OID. When the machine is part of a domain, that call will perform the lookup against active directory (see the Remarks in the docs https://msdn.microsoft.com/en-us/library/windows/desktop/aa379938%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396). For our clients that are having issues connecting to our WCF service, this lookup is taking up to 15 seconds. Because these Oid lookups are happening after WCF has opened the TCP connection to our server, but before the SSL/TLS handshake has started, we are seeing the above error. So, the TCP connection is opened, 2 OID lookups happen taking up to 30 seconds, the application then attempts to start the SSL/TLS handshake, but by the time the SSL/TLS handshake is attempted, the TCP connection has already been reset by the server (in our case the server resets the connection after 10 seconds)." +21321 area-Infrastructure Enabling Multifile ILC Tests for uapaot-Release-x64 configuration cc: @danmosemsft @joshfree @tijoytom @botaberg @yizhang82 This will switch the Release-x64 configuration tests to run on multi-file mode instead of single-file. +21322 area-System.Collections Allow Json.NET deserialization of ObservableCollection Json.NET serializes the collection by enumerating it, without taking into account any of its fields like the binary serializer does, and deserializes it by adding the items back to the collection, without initializing the fields. However, it does still call the `OnSerializing`/`OnSerialized`/`OnDeserializing`/`OnDeserialized` methods. When it calls `OnDeserialized`, a NullRef exception is thrown when we try to access the `_monitor` field because the field has not been initialized, unlike with binary deserialization, where the field would have been initialized from the serialized binary data. A workaround is to simply check `if (_monitor != null)` before accessing it in `OnDeserialized`. Fixes #21304 cc: @vitek-karas, @ViktorHofer +21323 area-System.Data ConnectionPoolTest.ConnectionPool_Mars manual test hangs when running with SqlClient managed SNI with Encrypt=true CC @saurabh500 +21324 area-System.Data CommandCancelTest.TimeoutCancel fails when using managed SNI with Encrypt=true Test results: FAILURE: - unexpected non-open state after Execute! Expected: True Actual: False Stack Trace: System.Data.SqlClient\tests\ManualTests\SQL\CommandCancelTest\CommandCancelTest.cs(198,0): at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.VerifyConnection(SqlCommand cmd) System.Data.SqlClient\tests\ManualTests\SQL\CommandCancelTest\CommandCancelTest.cs(154,0): at System.Data.SqlClient.ManualTesting.Tests.CommandCancelTest.TimeoutCancel(String constr) CC @saurabh500 +21325 area-System.Net Fix HttpClientHandler.DefaultProxyCredential on NETFX This bug was discovered in internal testing when this code was being ported to .NET Framework vNext. Due to all these tests being previously disabled on NETFX, the bug was missed. The HttpClientHandler.DefaultProxyCredentials property is only used when an explicit proxy is not specified (HttpClientHandler.Proxy==null) but a proxy is still desired (HttpClientHandler.UseProxy==true). In this case, the semantics implied are to use the system default proxy settings to find a proxy. In that case, the credentials specified by DefaultProxyCredentials should be passed to the webrequest.Proxy object which, by default, points to the system proxy. +21327 area-System.Net Socket multicast will hang in AppContainer with loopback interface The description in #21018 is not correct. The test will hang if loopback interface is chosen. Since there is no problem using other interfaces for socket multicast, we move this issue to future. @davidsh @CIPop +21328 area-System.Net Re-enable a Sockets Functional test for UAP mode Contributes to: #21018 +21330 area-System.ComponentModel System.ComponentModel.CultureInfoConverter is changing UI culture during runtime System.ComponentModel.CultureInfoConverter in some cases is changing UI culture during the runtime which is causing problems on multithreaded scenarios: https://github.com/dotnet/corefx/blob/a957acc46d97c4e8b123f3d82891f5cf563a5a17/src/System.ComponentModel.TypeConverter/src/System/ComponentModel/CultureInfoConverter.cs#L93 https://github.com/dotnet/corefx/blob/a957acc46d97c4e8b123f3d82891f5cf563a5a17/src/System.ComponentModel.TypeConverter/src/System/ComponentModel/CultureInfoConverter.cs#L186 it is possible to avoid that +21331 area-System.ComponentModel Fix TypeConverter tests on UAP Fixes: https://github.com/dotnet/corefx/issues/21330 Background: Tests were flaky because TypeConverter (product) is temporarily changing UI culture which is making tests fail as they expect `CultureInfo.CurrentCulture != CultureInfo.InvariantCulture` This includes two fixes, each of them separately fixes the issue: - product fix to not do that - tests use RemoteExecutor and override culture from within I recommend looking at this diff with `&w=1` / `?w=1`: https://github.com/dotnet/corefx/commit/a246a010a20f4ecd70585527b7f15f8421fab724?w=1 cc: @tarekgh - Thank you a lot for help on this! +21332 area-System.Globalization IdnMappingIdnaConformanceTests.GetAscii_Invalid failing on our Nano image Don't know why this just started. We may need to remove this line from the IdnaTest_6.txt file. Unfortunately the test doesn't log what line it's on. ``` Windows.10.Nano.Amd64.Open-Debug-x64 Unhandled Exception of Type Xunit.Sdk.ThrowsException Message : Assert.Throws() Failure\r\nExpected: typeof(System.ArgumentException)\r\nActual: (No exception was thrown) Stack Trace : at System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Invalid() ``` OS=Microsoft Windows 10.0.14393 OSVer=Microsoft Windows NT 10.0.14393.0 OSArch=X64 Arch=X64 Framework=.NET Core 4.6.00001.0 +21333 area-System.Drawing Move Serialization-related code into partial class files for System.Drawing.Common This moves all `SerializableAttribute` and `ISerializable`-related code to partial files in System.Drawing.Common, and omits those files from the .NET Core build of the library. They will still be used for the mono configuration, because it supports these serialization features. * For classes and structs, I have moved the attribute declarations and, when applicable, the interface implementations into a *.Serializable.cs file. * For enums, I have removed the attribute entirely, as it was a no-op. * None of the new *.Serializable.cs files are included in the .NET Core build configuration. * All of the attributes and interfaces have been removed from the .NET Core reference assembly. @stephentoub @akoeplinger I chatted with both of you today about this. In the past, we have simply been deleting this code from corefx, since it's not used in the .NET Core implementation. However, we want to continue sharing these files with mono, and Alex mentioned this way was preferred. Mono already consumes a few of these files, so deleting the attributes outright would break some functionality. I'm open to tweaking this and using a different pattern if we find something that is easier to maintain. +21334 area-System.Security Fix temp keychain lifetime with macOS CopyWithPrivateKey Because macOS is the only platform that doesn't allow ephemeral keys to be associated with certificates we have a straightforward-yet-complex temporary keychain management system. In the new CopyWithPrivateKey methods, we end up messing with the refcounts and deleting too early because the input certificate got mutated by the call -- it believes it belongs to the keychain, even though it was subsequently removed from it. So when that cert handle disposes we DangerousRelease our shared lifetime handle even though we never did a DangerousAddRef. Since the new method is supposed to have no lasting side effects, and we've found one, change to use the Windows PAL approach: first clone the cert to disassociate it from mutation operations. The existing tests noticed this problem, which got the incorrect fix of a persisted field for the private key. But since PFX exporting is done within the keychain itself, if the keychain was deleted PFX export isn't possible. With the addition of PFX export tests from CopyWithPrivateKey we now have better ways of tracking that the keychain isn't deleted too early. Fixes (in master) #20272. +21335 area-System.ComponentModel .AsyncOperationTests.ThrowAfterAsyncComplete failed on Netfx I am assuming this is a latent bug in NETFX but opening this issue so we can track how often it happens. ``` 14:57:38 Starting: System.ComponentModel.EventBasedAsync.Tests 14:57:38 Finished running tests. End time=14:57:38.37, Exit code = 0 14:57:38 Using D:\j\workspace\netfx_windows---120b7803\bin\testhost\netfx-Windows_NT-Debug-x86\ as the test runtime folder. 14:57:38 Executing in D:\j\workspace\netfx_windows---120b7803\bin\AnyOS.AnyCPU.Debug\System.ComponentModel.Primitives.Tests\netstandard\ 14:57:38 Running tests... Start time: 14:57:38.48 14:57:38 System.ComponentModel.EventBasedAsync.Tests.AsyncOperationTests.ThrowAfterAsyncComplete [FAIL] 14:57:38 Assert.Throws() Failure 14:57:38 Expected: typeof(System.InvalidOperationException) 14:57:38 Actual: (No exception was thrown) 14:57:38 Stack Trace: 14:57:38 D:\j\workspace\netfx_windows---120b7803\src\System.ComponentModel.EventBasedAsync\tests\AsyncOperationTests.cs(40,0): at System.ComponentModel.EventBasedAsync.Tests.AsyncOperationTests.<>c.b__2_0() 14:57:38 at System.Threading.Tasks.Task.Execute() 14:57:38 --- End of stack trace from previous location where exception was thrown --- 14:57:38 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 14:57:38 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 14:57:38 at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 14:57:38 D:\j\workspace\netfx_windows---120b7803\src\System.ComponentModel.EventBasedAsync\tests\AsyncOperationTests.cs(34,0): at System.ComponentModel.EventBasedAsync.Tests.AsyncOperationTests.ThrowAfterAsyncComplete() 14:57:38 Finished: System.ComponentModel.EventBasedAsync.Tests ``` see https://github.com/dotnet/corefx/pull/1938/files +21337 area-System.Runtime Add tests for String.Contains overload with StringComparison Fix #20846 +21339 area-System.Diagnostics Handle empty arguments in argv in Process. "Implementing parsing """" empty arguments in argv which was ignored in Unix ParseArgv function. Unblocking PR #21196 cc @hughbe @danmosemsft @AtsushiKan @stephentoub " +21340 area-System.Drawing Add Graphics tests for handles and construction Let's see how the CI fares as some of these tests use HWNDs +21343 area-System.Security CreateChain_Hybrid failed on Debian.90.Amd64-x64-Debug ``` Debian.90.Amd64-x64-Debug Unhandled Exception of Type Xunit.Sdk.TrueException Message : Initial chain build: Initial chain error at depth 0: NotTimeValid\nExpected: True\nActual: False Stack Trace : at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.RunChain(X509Chain chain, X509Certificate2 cert, Boolean expectSuccess, String msg) in /root/corefx/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestChainTests.cs:line 312 at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateAndTestChain(AsymmetricAlgorithm rootPrivKey, AsymmetricAlgorithm intermed1PrivKey, AsymmetricAlgorithm intermed2PrivKey, AsymmetricAlgorithm leafPubKey) in /root/corefx/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestChainTests.cs:line 430 at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid() in /root/corefx/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateR ``` @bartonjs +21344 area-System.Globalization "Test: System.Globalization.Tests.IdnMappingIdnaConformanceTests/GetAscii_Invalid failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.IdnMappingIdnaConformanceTests/GetAscii_Invalid` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: (No exception was thrown) Stack Trace: at System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Invalid() Build : Master - 20170622.01 (Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170622.01/workItem/System.Globalization.Extensions.Tests/analysis/xunit/System.Globalization.Tests.IdnMappingIdnaConformanceTests~2FGetAscii_Invalid +21347 area-System.Runtime "Tests under: System.Tests.SetEnvironmentVariable failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.SetEnvironmentVariable/Default(target: Machine)` has failed. Assert.Equal() Failure\r Expected: (null)\r Actual: true Stack Trace: at System.Tests.SetEnvironmentVariable.<>c__DisplayClass6_0.b__0() at System.Tests.SetEnvironmentVariable.ExecuteAgainstTarget(EnvironmentVariableTarget target, Action action, Action cleanUp) at System.Tests.SetEnvironmentVariable.Default(EnvironmentVariableTarget target) at xunit.console.netcore!+0xc373d4 at xunit.console.netcore!+0xa4d643 at xunit.console.netcore!+0xa4d443 Build : Master - 20170622.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170622.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.SetEnvironmentVariable~2FDefault(target:%20Machine) +21348 area-System.Runtime "Test: System.Runtime.InteropServices.Tests.ComAwareEventInfoTests/Ctor_Type_EventName failed with ""System.NotImplementedException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.Tests.ComAwareEventInfoTests/Ctor_Type_EventName` has failed. System.NotImplementedException : The method or operation is not implemented. Stack Trace: at xunit.console.netcore!+0x82fc81 at System.Reflection.ParameterInfo.get_CustomAttributes() at xunit.console.netcore!+0xc1a010 at xunit.console.netcore!+0x756978 at System.Runtime.InteropServices.Tests.ComAwareEventInfoTests.Ctor_Type_EventName() at xunit.console.netcore!+0xaf9107 at xunit.console.netcore!+0x99cc43 at xunit.console.netcore!+0x99ca43 Build : Master - 20170622.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170622.01/workItem/System.Runtime.InteropServices.Tests/analysis/xunit/System.Runtime.InteropServices.Tests.ComAwareEventInfoTests~2FCtor_Type_EventName +21350 area-System.Runtime "Test: System.Tests.StringTests/Concat_String(values: [\""\""], expected: \""\"") failed with ""Xunit.Sdk.SameException""" "Opened on behalf of @Jiayili1 The test `System.Tests.StringTests/Concat_String(values: [\""\""], expected: \""\"")` has failed. Assert.Same() Failure\r Expected: \r Actual: Stack Trace: at System.Tests.StringTests.<>c__DisplayClass15_0.b__0(String result) at System.Tests.StringTests.Concat_String(String[] values, String expected) at xunit.console.netcore!+0x872eec at SharedLibrary!+0x7661d5 at SharedLibrary!+0x765f5e Build : Master - 20170622.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170622.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.StringTests~2FConcat_String(values:%20%5B%5C%22%5C%22%5D,%20expected:%20%5C%22%5C%22)" +21351 area-System.Runtime "Test: Windows.UI.Xaml.Media.Animation.Tests.RepeatBehaviorTests/Equals_Object_ReturnsExpected failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `Windows.UI.Xaml.Media.Animation.Tests.RepeatBehaviorTests/Equals_Object_ReturnsExpected(repeatBehaviour: , other: 00:00:00, expected: False)` has failed. Assert.Equal() Failure\r Expected: False\r Actual: True Stack Trace: at Windows.UI.Xaml.Media.Animation.Tests.RepeatBehaviorTests.Equals_Object_ReturnsExpected(UI.Xaml.Media.Animation.RepeatBehavior repeatBehaviour, Object other, Boolean expected) at xunit.console.netcore!+0x9b5cb4 at xunit.console.netcore!+0x972145 at xunit.console.netcore!+0x971ece Build : Master - 20170622.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170622.01/workItem/System.Runtime.WindowsRuntime.UI.Xaml.Tests/analysis/xunit/Windows.UI.Xaml.Media.Animation.Tests.RepeatBehaviorTests~2FEquals_Object_ReturnsExpected(repeatBehaviour:%20,%20other:%2000:00:00,%20expected:%20False) +21353 area-System.IO "Tests under: System.IO.Pipes.Tests failed with ""System.UnauthorizedAccessException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.NamedPipeTest_CreateServer/CreateWithNegativeOneServerInstances_DefaultsToMaxServerInstances` has failed. System.UnauthorizedAccessException : Access to the path is denied. Stack Trace: at System.IO.Pipes.NamedPipeServerStream.Create(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.NamedPipeServerStream..ctor(String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) at System.IO.Pipes.Tests.NamedPipeTest_CreateServer.CreateWithNegativeOneServerInstances_DefaultsToMaxServerInstances() Build : Master - 20170622.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Debug - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170622.01/workItem/System.IO.Pipes.Tests/analysis/xunit/System.IO.Pipes.Tests.NamedPipeTest_CreateServer~2FCreateWithNegativeOneServerInstances_DefaultsToMaxServerInstances +21356 area-System.ComponentModel System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Category failed in ci failed test: System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Category detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_debug/2836/testReport/System.ComponentModel.Tests/CategoryAttributeTests/Ctor_Category_category____Misc____expectedIsDefaultAttribute__True_/ MESSAGE: ~~~ Assert.Equal() Failure Expected: True Actual: False ~~~ STACK TRACE: ~~~ at System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Category(String category, Boolean expectedIsDefaultAttribute) in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_debug/src/System.ComponentModel.Primitives/tests/CategoryAttributeTests.cs:line 34 ~~~ +21357 area-Serialization Adding test to check if OnDeserialized doesn't throw if serialization… … fields aren't initialized yet. Relates to https://github.com/dotnet/corefx/pull/21322 +21358 area-System.IO [Regression] Previous valid NTFS paths are considered invalid in .NET Framework 4.6.2/.NET Core "1. Run the following code: ``` C# using System; using System.IO; class Program { static void Main(string[] args) { for (char c = (char)0; c < Char.MaxValue; c++) { if (char.IsWhiteSpace(c) && CanCreateFile(c)) { Console.WriteLine($""Valid Path Char: {ToCodePoint(c)} CanCreateFile: true CanGetFullPath: {CanGetFullPath(c)}""); } } } private static string ToCodePoint(char c) { return string.Format(""\\u{0:x4} "", (int)c); } private static bool CanGetFullPath(char c) { try { Path.GetFullPath(c.ToString()); return true; } catch (ArgumentException) { } return false; } private static bool CanCreateFile(char c) { try { string path = Path.Combine(@""c:\Temp"", c.ToString()); File.WriteAllText(path, """"); } catch (DirectoryNotFoundException) { // Handle ' ' and '\t', etc return false; } catch (ArgumentException) { return false; } return true; } } ``` **Expected (behavior in .NET Framework 4.6.1 and below):** ``` Valid Path Char: \u1680 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2000 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2001 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2002 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2003 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2004 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2005 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2006 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2007 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2008 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2009 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u200a CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2028 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u2029 CanCreateFile: true CanGetFullPath: True Valid Path Char: \u202f CanCreateFile: true CanGetFullPath: True Valid Path Char: \u205f CanCreateFile: true CanGetFullPath: True Valid Path Char: \u3000 CanCreateFile: true CanGetFullPath: True ``` **Actual (.NET Framework 4.6.2/.NET Core):** ``` Valid Path Char: \u1680 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2000 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2001 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2002 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2003 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2004 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2005 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2006 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2007 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2008 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2009 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u200a CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2028 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u2029 CanCreateFile: true CanGetFullPath: False Valid Path Char: \u202f CanCreateFile: true CanGetFullPath: False Valid Path Char: \u205f CanCreateFile: true CanGetFullPath: False Valid Path Char: \u3000 CanCreateFile: true CanGetFullPath: False ``` What Unicode considers as whitespace (via String.IsNullOrWhitespace) does not match what NTFS considers as whitespace.." +21359 area-Infrastructure .NET Core 2.0 Preview 1 - Could not load type 'System.Security.Permissions.ReflectionPermission' Testing out Preview 2 and some Nuget packages. One required adding the System.Security.Permissions Nuget package to get past the Permissions assembly not being found. https://www.nuget.org/packages/System.Security.Permissions/4.4.0-preview1-25305-02 But now I'm getting the following error: System.TypeLoadException occurred HResult=0x80131522 Message=Could not load type 'System.Security.Permissions.ReflectionPermission' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Source= StackTrace: at Newtonsoft.Json.Serialization.JsonTypeReflector.get_DynamicCodeGeneration() at Newtonsoft.Json.Serialization.JsonTypeReflector.get_ReflectionDelegateFactory() at Newtonsoft.Json.Serialization.DefaultContractResolver.GetDefaultCreator(Type createdType) at Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContract(JsonContract contract) at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateDictionaryContract(Type objectType) at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(Type type) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer) ... Is this a known issue? +21360 area-System.Drawing 4 specific System.Drawing.Common tests have started failing regularily on Windows 10 release mode - Ctor_InvalidIconHandle_SetsHandleToZero: ``` Unhandled Exception of Type Xunit.Sdk.ThrowsException Message : Assert.Throws() Failure\r\nExpected: typeof(System.ObjectDisposedException)\r\nActual: (No exception was thrown) Stack Trace : at System.Drawing.Tests.IconTests.Ctor_InvalidIconHandle_SetsHandleToZero() ``` - Save_InvalidHandle_ThrowsCOMException ``` Unhandled Exception of Type Xunit.Sdk.ThrowsException Message : Assert.Throws() Failure\r\nExpected: typeof(System.Exception)\r\nActual: (No exception was thrown) Stack Trace : at System.Drawing.Tests.IconTests.Save_InvalidHandle_ThrowsCOMException() ``` - Size_GetFromInvalidHandle_ReturnsZeroSize ``` Unhandled Exception of Type Xunit.Sdk.EqualException Message : Assert.Equal() Failure\r\nExpected: {Width=0, Height=0}\r\nActual: {Width=32, Height=32} Stack Trace : at System.Drawing.Tests.IconTests.Size_GetFromInvalidHandle_ReturnsZeroSize() ``` - ToBitmap_InvalidHandle_ThrowsArgumentException ``` Unhandled Exception of Type Xunit.Sdk.ThrowsException Message : Assert.Throws() Failure\r\nExpected: typeof(System.ArgumentException)\r\nActual: (No exception was thrown) Stack Trace : at System.Drawing.Tests.IconTests.ToBitmap_InvalidHandle_ThrowsArgumentException() ``` +21362 area-Infrastructure Update attribute-value in security build definition. Workaround for https://github.com/dotnet/core-eng/issues/1009 +21364 area-System.Linq We looked everywhere but we can't find your metadata - iteration 5493 Fixes https://github.com/dotnet/corefx/issues/21299 +21367 area-System.Drawing Properly dispose of all resources in System.Drawing tests I think the resources will be finalized, but this is good practice and it was mentioned this should be done +21368 area-System.Runtime Reenable test in System.Runtime.InteropServices for ILC Api is now implemented. Fixes https://github.com/dotnet/corefx/issues/20600 +21371 area-System.Net Faster SslStream SslStream apparently shows up as bottleneck in server-side scenarios. Info from @davidfowl offline: * Benchmarks observed: TechEmpower benchmark - see [results](https://msit.powerbi.com/view?r=eyJrIjoiMzFiNDdjNWEtODRiZS00ZDM3LTg4YWEtMGQ3OWQ2ZTc3MDUyIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9) * PlainText (with pipelining): 1.31M RPS * PlainText with Https (with pipelining): 156K RPS ... clear large ~10x overhead at this moment * [HttpsConnectionAdapter code](https://github.com/aspnet/KestrelHttpServer/blob/c83f606b220714fa7b1b6a6a91b16d78cee6005f/src/Microsoft.AspNetCore.Server.Kestrel.Https/HttpsConnectionAdapter.cs) in Kestrel * Idea: Compare SSL slowdown in competing technologies (incl. C) to get the idea where it could be potentially pushed. +21373 area-System.Net Fix DefaultProxyCredentials edge case on NETFX After my PR #21325, I discovered an edge case where we need to check for a non-null Proxy property in the underlying WebRequest. On .NET Framework, System.Net.Http is built on WebRequest (HttpWebRequest) and is subject to side-affects from it. The static property WebRequest.DefaultWebProxy affects the initial value of WebRequest.Proxy. So, it's possible that a developer may have set WebRequest.DefaultWebProxy to null prior to using System.Net.Http in the app. The net affect of this is that there won't be any proxy used as the system default proxy and thus the HttpClientHandler.DefaultProxyCredentials is ignored. On .NET Core, there is no relationship between System.Net.Http and System.Net.WebRequest. So, in all cases on .NET Core, where a developer has specified HttpClientHander.UseProxy=true and HttpClientHandler.Proxy = null (default values), the handler will always try to use the system default proxy (if configured). +21376 area-System.Runtime Fix failing System.Runtime.Interop.Tests on ILC "Fixes https://github.com/dotnet/corefx/issues/21348 Override all the remaining Reflection apis whose default implementation is ""throw"". This will increase the chance of success in the cases where the two CoreLib's have different dependencies on Reflection objects passed into them. We actually try very hard to avoid these but there are some cases where the cost of doing that is too high - CustomAttributeExtensions being one of them." +21377 area-System.Runtime InternalTestAotSubset is failing in ILC x86 only ``` Assert.Same() Failure\r\nExpected: \r\nActual: Stack Trace : at System.Tests.StringTests.InternalTestAotSubset() at xunit.console.netcore!+0xb808d1 at SharedLibrary!+0x7626f3 at SharedLibrary!+0x7624f3 ``` @AtsushiKan this is your test. Seems 32 bit specific? +21379 area-System.Runtime BinarySearchSZArray tests failing in ILC ``` BinarySearch_SZArray(array: [-32768, 0, 0, 32767], index: 0, length: 1, value: -32768, comparer: null, expected: 0) BinarySearch_SZArray(array: [-32768, 0, 0, 32767], index: 0, length: 4, value: -32768, comparer: null, expected: 0) BinarySearch_SZArray(array: [-32768, 0, 0, 32767], index: 1, length: 3, value: -32768, comparer: null, expected: -2) BinarySearch_SZArray(array: [-128, 0, 0, 127], index: 0, length: 1, value: -128, comparer: null, expected: 0) BinarySearch_SZArray(array: [-128, 0, 0, 127], index: 0, length: 4, value: -128, comparer: null, expected: 0) BinarySearch_SZArray(array: [-128, 0, 0, 127], index: 1, length: 3, value: -128, comparer: null, expected: -2) IndexOf_SZArray(array: [Min], value: Min, startIndex: 0, count: 1, expected: 0) ``` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170622.02/workItem/System.Runtime.Tests.Execution eg https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170622.02/workItem/System.Runtime.Tests.Execution/analysis/xunit/System.Tests.ArrayTests~2FBinarySearch_SZArray%3CInt16%3E(array:%20%5B-32768,%200,%200,%2032767%5D,%20index:%200,%20length:%201,%20value:%20-32768,%20comparer:%20null,%20expected:%200) @joshfree can you please assign to a dev on your side. +21380 area-System.IO Proposal: using ArrayPool in MemoryStream with new APIs When not constructed with a specific `byte[]`, `MemoryStream` allocates `byte[]s` every time it needs to grow. It would be tempting to just change the implementation to use `ArrayPool.Shared.Rent` to get that array, but this is problematic for a few reasons, mostly to do with existing code: 1. It's fairly common to not dispose MemoryStreams, as currently the Dispose is effectively a nop. But with wrapping buffers from `ArrayPool`, it's important to release the currently used buffer back to the pool when the stream is disposed. And it would be expensive to make MemoryStream finalizable to deal with this. 2. MemoryStream by default allows the buffers it creates to be exposed through its TryGetBuffer method. That means folks today could be taking and using these buffers, potentially even after the MemoryStream is disposed, which could lead to code using the array after the array is returned to the pool and potentially used by someone else. One solution would just be to introduce a new Stream type, e.g. ```C# namespace System.IO { public sealed class ArrayPoolStream : Stream { public ArrayPoolStream() : this(ArrayPool.Shared) { } public ArrayPoolStream(ArrayPool pool); ~ArrayPoolStream(); public ArraySegment DangerousGetArray(); ... // override all the relevant members on Stream } } ``` That has its own downsides, though. In particular, there's something nice about this just being a part of MemoryStream, being easily used in existing code that uses MemoryStreams, etc. Another option would be to just plumb this into MemoryStream, but in an opt-in manner, and accept some of the resulting limitations because they're opt-in: - Add a ctor: `public MemoryStream(ArrayPool pool)`. - When that ctor is used, buffers come from the pool rather than being new'd up. - If you don't Dispose, you leak the buffer, but since this only happens when you use the new ctor, we're at least not impacting existing code, and it's little different than just using the pool directly and not returning a buffer. - We either make TryGetBuffer return false, or as with Dispose we accept that you had to opt-in to this by using the new ctor. I'm leaning towards the second option: just add the new `MemoryStream(ArrayPool)` ctor, and allow TryGetBuffer to work; devs just need to know that when they create the stream with this ctor, they should dispose the stream, and they shouldn't use the array retrieved from TryGetBuffer after doing something else to the stream. +21381 area-System.Runtime Fix RuntimeInformation.FrameworkName for Uap and UapAot @sepidehMS found this while investigating System.ObjectModel.Tests which is caused by this. Fixes: https://github.com/dotnet/corefx/issues/18973 When refactoring from netcore50 to uap and netcore50aot in: https://github.com/dotnet/corefx/pull/16704 this was changed from netcore50aot to uap instead of uapaot. +21382 area-Infrastructure Add Outerloop tests to daily helix test runs for Uap and UapAot Currently we are not running Outerloop tests for uap and uapaot in our daily runs. cc: @danmosemsft @tijoytom @joshfree +21384 area-Infrastructure [Arm64/Unix] Add ARM64 Native builds to CI +21385 area-Infrastructure Enable uap F5 arm helix runs cc: @danmosemsft @weshaggard @safern @MattGal @Chrisboh Adding UWP F5 ARM runs in helix. I have submitted a private run to make sure this works as expected and although the run hasn't finished, things look promising(so far 110791 tests pass, 33 failures) Correlation ID for my private job is 97552c7b-36f4-48e5-98ba-9f0ef4bcdab7 +21386 area-System.Runtime SystemNative_SysConf Regression on Ubuntu 17.04 After further investigation of a bug that first manifested with powershell on Ubuntu 17.04, I have noticed that the SysConf method in System.Native is in some way allowing input that triggers its assertion. Running powershell in fact triggers this assertion immediately. +21389 area-System.Runtime Reenable System.Runtime.Interop.Test on ILC. Fix just went in. +21391 area-System.Net System.Net.Sockets.Tests.LoggingTest failed with TargetInvocationException in ILC mode Can't find related issue. Please close it if there is a dup. Type: System.Net.Sockets.Tests.LoggingTest+<>c Method: Int32 b__1_0() ``` Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.InRangeException: Assert.InRange() Failure Range: (1 - 2147483647) Actual: 0 at Xunit.Assert.InRange(Int32 actual, Int32 low, Int32 high, Collections.Generic.IComparer comparer) at Xunit.Assert.InRange(Int32 actual, Int32 low, Int32 high) at System.Net.Sockets.Tests.LoggingTest.<>c.b__1_0() at RemoteExecutorConsoleApp!+0xc5ce7a at RemoteExecutorConsoleApp!+0xa77023 at RemoteExecutorConsoleApp!+0xa76e23 --- End of inner exception stack trace --- at RemoteExecutorConsoleApp!+0xa76f6f at RemoteExecutorConsoleApp!+0xdbf53d at RemoteExecutorConsoleApp!+0xda481c at RemoteExecutorConsoleApp.Program.Main(String[] args) Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.InRangeException: Assert.InRange() Failure Range: (1 - 2147483647) Actual: 0 at Xunit.Assert.InRange(Int32 actual, Int32 low, Int32 high, Collections.Generic.IComparer comparer) at Xunit.Assert.InRange(Int32 actual, Int32 low, Int32 high) at System.Net.Sockets.Tests.LoggingTest.<>c.b__1_0() at RemoteExecutorConsoleApp!+0xc5ce7a at RemoteExecutorConsoleApp!+0xa77023 at RemoteExecutorConsoleApp!+0xa76e23 --- End of inner exception stack trace --- at RemoteExecutorConsoleApp!+0xa76f6f at RemoteExecutorConsoleApp!+0xdbf53d at RemoteExecutorConsoleApp!+0xda481c at RemoteExecutorConsoleApp.Program.Main(String[] args) at RemoteExecutorConsoleApp.Program.Main(String[] args) at RemoteExecutorConsoleApp!+0x7a1065 at RemoteExecutorConsoleApp!+0x7d7920 System.Net.Sockets.Tests.LoggingTest.EventSource_EventsRaisedAsExpected [FAIL] Assert.Equal() Failure Expected: 42 Actual: 255 Stack Trace: at xunit.console.netcore!+0xb5a139 at System.Net.Sockets.Tests.LoggingTest.EventSource_EventsRaisedAsExpected() at xunit.console.netcore!+0xc82347 at xunit.console.netcore!+0xa9f193 at xunit.console.netcore!+0xa9ef93 ``` +21392 area-System.IO Update NamedPipe tests to inject \LOCAL\ in the paths for UAP so they can be reenabled for UAP Uap has some access restrictions when creating a NamedPipe, we are still figuring out with the Windows guys how should we do this and through which Win Api. So we need to tweak this tests to pass for uap as they apparently can only create local named pipes to within the app container package location. I will disable this tests against this issue. cc: @danmosemsft @JeremyKuhne +21393 area-System.Net ClientWebSocket doesn't support client certificates in UWP "The current UWP implementation of ClientWebSocket.ConnectAsync (see [WinRTWebSocket](https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WinRTWebSocket.cs)) ignores the _ClientCertificates_ member of the app-provided _ClientWebSocketOptions_. This makes it impossible to establish connections with WSS endpoints that require mutual TLS authentication, which is blocking WCF scenarios in UWP. I'll be sending out a PR in the near future with a ""repro test"" (disabled for UAP) and will be working on fixing this shortcoming. Note that .NET Core also lacks support for client certificates during ClientWebSocket.ConnectAsync, but that falls outside of the scope of this issue." +21394 area-System.Net UWP Sockets Functional test work I have finished final check for Sockets Functional test. Besides, we are not able to remove dependencies on `ContextAwareResult.Uap.cs` and `CompletionPortHelper.Uap.cs`. They are important components for Sockets synchronous completion support. +21395 area-System.Memory String-like extension methods to ReadOnlySpan Epic As we look to support more efficient parsing/formatting/usage of `ReadOnlySpan` as slices of System.Strings, we're planning to add a variety of APIs across corefx that operate with `ReadOnlySpan` (https://github.com/dotnet/corefx/issues/21281). But for such APIs to be truly useful, and for `ReadOnlySpan` to be generally helpful as a string-like type, we need a set of extension methods on `ReadOnlySpan` that mirror the corresponding operations on string, e.g. Equals with various kinds of string comparisons, Trim, Replace, etc. We need to define, implement, test, and ship a core set of these (more can of course be added in the future), e.g. **Edit by @ahsonkhan - Updated APIs:** ```C# // All these do ordinal comparisons, and hence do not rely on StringComparison, and can live in System.Memory.dll public static class MemoryExtensions { // If we decide to add overloads to Trim in the future that are non-ordinal and take StringComparison // (similar to https://github.com/dotnet/corefx/issues/1244), they will be .NET Core specific. public static ReadOnlySpan Trim(this ReadOnlySpan span); public static ReadOnlySpan Trim(this ReadOnlySpan span, char trimChar); public static ReadOnlySpan Trim(this ReadOnlySpan span, ReadOnlySpan trimChars); public static ReadOnlySpan TrimStart(this ReadOnlySpan span); public static ReadOnlySpan TrimStart(this ReadOnlySpan span, char trimChar); public static ReadOnlySpan TrimStart(this ReadOnlySpan span, ReadOnlySpan trimChars); public static ReadOnlySpan TrimEnd(this ReadOnlySpan span); public static ReadOnlySpan TrimEnd(this ReadOnlySpan span, char trimChar); public static ReadOnlySpan TrimEnd(this ReadOnlySpan span, ReadOnlySpan trimChars); public static bool IsWhiteSpace(this ReadOnlySpan span); public static bool Remove(this ReadOnlySpan source, int startIndex, int count, Span destination); // Does exactly what string does today, i.e. ordinal, case-sensitive, culture-insensitive comparison public static bool Replace(this ReadOnlySpan source, ReadOnlySpan oldValue, ReadOnlySpan newValue, Span destination, out int bytesWritten); // To me, these are complementary to the Trim APIs and hence we should add them. public static bool PadLeft(this ReadOnlySpan source, int totalWidth, Span destination); public static bool PadLeft(this ReadOnlySpan source, int totalWidth, Span destination, char paddingChar); public static bool PadRight(this ReadOnlySpan source, int totalWidth, Span destination); public static bool PadRight(this ReadOnlySpan source, int totalWidth, Span destination, char paddingChar); } // Live in CoreLib and only available on .NET Core, exposed from System.Memory.dll // Atm, this class in corelib is called 'Span' and contains the .NET Core specific implementation of the extension methods public static class MemoryExtensions { public static bool Equals(this ReadOnlySpan span, ReadOnlySpan value, StringComparison comparison); public static int Compare(this ReadOnlySpan span, ReadOnlySpan value, StringComparison comparison); public static bool Contains(this ReadOnlySpan span, ReadOnlySpan value, StringComparison comparison); public static bool StartsWith(this ReadOnlySpan span, ReadOnlySpan value, StringComparison comparison); public static bool EndsWith(this ReadOnlySpan span, ReadOnlySpan value, StringComparison comparison); public static bool Replace(this ReadOnlySpan source, ReadOnlySpan oldValue, ReadOnlySpan newValue, StringComparison comparison, Span destination, out int bytesWritten); public static bool ToUpper(this ReadOnlySpan source, Span destination); public static bool ToUpper(this ReadOnlySpan source, Span destination, CultureInfo culture); public static bool ToUpperInvariant(this ReadOnlySpan source, Span destination); public static bool ToLower(this ReadOnlySpan source, Span destination); public static bool ToLower(this ReadOnlySpan source, Span destination, CultureInfo culture); public static bool ToLowerInvariant(this ReadOnlySpan source, Span destination); } ```
Original Proposal ```C# public static class SpanExtensions { public static ReadOnlySpan Trim(this ReadOnlySpan span); public static bool Equals(this ReadOnlySpan source, ReadOnlySpan value, StringComparison comparison); public static int Compare(this ReadOnlySpan source, ReadOnlySpan value, StringComparison comparison); public static bool StartsWith(this ReadOnlySpan source, ReadOnlySpan value, StringComparison comparison); public static ReadOnlySpan Remove(this ReadOnlySpan source, int startIndex, int count); // this will need to allocate if any chars are removed from the middle ... } ```
+21397 area-System.Diagnostics Disable StartInfo_TextFile_ShellExecute on Win8 Relates to https://github.com/dotnet/corefx/issues/20388 The feature works but for some reason (see issue) the shell association for .txt is not right on our images (works fine on new VM). Meanwhile, disabling for Win8 only. +21401 area-Infrastructure Error running UAP tests in clean repo: The Appx package's manifest is invalid. In the log, immediately after the linking stuff ``` Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. Cannot create a file when that file already exists. 1 file(s) copied. Got manifest file appxmanifest.xml FAILED 0x80080204 (The Appx package's manifest is invalid. ) The system cannot find the file specified. The system cannot find the file specified. The system cannot find the file specified. Finished running tests. End time= 9:31:39.88, Exit code = 1 ``` I'm running `msbuild /T:RebuildAndTest /P:TargetGroup=uap` Has anyone seen this before? +21403 area-System.Net Fix HttpClientHandler PreAuthenticate property for UAP "The HttpClientHandler for UAP does not properly implement the PreAuthenticate property. This is because on UAP, HttpClientHandler is built on the WinRT APIs which in turn are built on WinInet. And WinInet always uses authentication caching internally and this results in the net effect of PreAuthenticate always being ""true"". The default for .NET Framework and .NET Core (non-UAP) is ""false"". When this property was first added to .NET Core 1.1, the UAP version defaulted to true and the setter would throw PNSE. As part of .NET Core 2.0, API surface for networking APIs was expanded. This resulted in HttpWebRequest exposing and implementing a ""PreAuthenticate"" property, which is what it has historically done in .NET Framework. On .NET Core, HttpWebRequest is built on top of HttpClient. And so, HttpWebRequest was enhanced in .NET Core 2.0 to set the default of PreAuthenticate to false. But this later caused the PNSE exception to surface and this exception was caught in UWP app-compat testing. Essentially, we had now created the default HttpWebRequest to always throw an exception. So, in PR #18105, the PNSE in HttpClientHandler.PreAuthenticate was commented out and thus the setter became a no-op. This PR basically acknowledges this situation and removes the TODO from this change. Since there is no good way to implement the actual HttpClientHandler.PreAuthenticate property, I left the getter default to return ""true"" which is closer to reality of what happens on UAP (even though this default value is different from .NET Framework or the rest of .NET Core). And, in terms of the setter for the property, I opted to leave it as a no-op. This seems like the best compromise outcome for now and will generate less distraction for developers rather than throwing an exception all the time. The rest of this PR moves the ActiveIssue's from the class level to the method level as part of eventually solving all of them. In addition, I added a new test case to validate the HttpClientHandler constructor defaults that are different on the UAP platform. Fixes #18104" +21404 area-System.Runtime "Test: System.Tests.EnvironmentTests/FailFast_ExpectFailureExitCode failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/FailFast_ExpectFailureExitCode` has failed. response.Status = Failure\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.Tests.EnvironmentTests.FailFast_ExpectFailureExitCode() Build : Master - 20170623.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170623.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FFailFast_ExpectFailureExitCode +21406 area-Meta Provide APIs from WIndows IoT Extensions as .NET Core To enable .NET Core to be platform, which run on any device, it is necessary to provide support for diverse IoT scenarios. For example, we already have a set of APIs related to BLE, various sensors and GPIO. They all are implemented as a part of Windows IoT Extensions and unfortunately available for UWP only. How about implementing them as native .NET Core API and integrating them as standard ? #See also: https://github.com/dotnet/standard/issues/358 +21409 area-Meta Convert Assert.Throws to AssertExtensions.Throws across corefx I'm working on this now, as per @danmosemsft suggestion. There are a couple of places where I'd like to seek clarification: - ICollection tests: collections have different param names. is it worth adding an extensibility point for param names? @ianhays +21410 area-System.Runtime AppDomain.ProcessExit_Called failed as Appdomain ProcessExit did not fire +21415 area-System.Runtime Several Environment_Exit tests fail on UAP "Crashing at remote end but currently we don't get console output. ``` b__1_0 0\r\n\r\nReturned Error code: 0\r\nExpected: True\r\nActual: False]]> b__1_0 1\r\n\r\nReturned Error code: 1\r\nExpected: True\r\nActual: False]]> b__1_0 -1\r\n\r\nReturned Error code: -1\r\nExpected: True\r\nActual: False]]> b__1_0 -45\r\n\r\nReturned Error code: -45\r\nExpected: True\r\nActual: False]]> b__1_0 255\r\n\r\nReturned Error code: 255\r\nExpected: True\r\nActual: False]]> ```" +21420 area-System.Runtime "Test: System.Tests.DoubleTests/ToString(d: -1,79769313486232E+308, format: \""G\"", provider: null, expected: \""-1.79769313486232E+308\"") failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Tests.DoubleTests/ToString(d: -1,79769313486232E+308, format: \""G\"", provider: null, expected: \""-1.79769313486232E+308\"")` has failed. Assert.Equal() Failure\r ? (pos 2)\r Expected: -1.79769313486232E+308\r Actual: -1,79769313486232E+308\r ? (pos 2) Stack Trace: at System.Tests.DoubleTests.<>c__DisplayClass16_0.b__0() at System.Tests.Helpers.PerformActionWithCulture(CultureInfo culture, Action test) at System.Tests.DoubleTests.ToString(Double d, String format, IFormatProvider provider, String expected) Build : Master - 20170623.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170623.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.DoubleTests~2FToString(d:%20-1,79769313486232E+308,%20format:%20%5C%22G%5C%22,%20provider:%20null,%20expected:%20%5C%22-1.79769313486232E+308%5C%22)" +21421 area-System.Runtime "Test: System.Tests.LazyTests/Serialization_RefType failed with ""System.Runtime.Serialization.SerializationException""" Opened on behalf of @Jiayili1 The test `System.Tests.LazyTests/Serialization_RefType` has failed. System.Runtime.Serialization.SerializationException : Type 'System.Lazy`1[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]' in Assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(Type type) at System.Runtime.Serialization.FormatterServices.<>c.b__5_0(MemberHolder mh) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Boolean check) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.Clone[T](T obj) at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.Clone[T](Lazy`1 lazy) at System.Tests.LazyTests.Serialization_RefType() Build : Master - 20170623.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170623.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.LazyTests~2FSerialization_RefType +21422 area-System.Security "Test: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/Rc4AndCngWrappersDontMixTest failed with ""Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The request is not supported""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/Rc4AndCngWrappersDontMixTest` has failed. Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : The request is not supported Stack Trace: at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at System.Security.Cryptography.Pkcs.EnvelopedCms.Decrypt(X509Certificate2Collection extraStore) at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.Rc4AndCngWrappersDontMixTest() Build : Master - 20170623.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170623.01/workItem/System.Security.Cryptography.Pkcs.Tests/analysis/xunit/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests~2FRc4AndCngWrappersDontMixTest +21424 area-System.Xml "Test: System.Xml.Tests.TC_SchemaSet_Add_URL/bug298991Choice(size: 5000, xsdFileName: \""5000c.xsd\"") failed with ""System.UnauthorizedAccessException""" "Opened on behalf of @Jiayili1 The test `System.Xml.Tests.TC_SchemaSet_Add_URL/bug298991Choice(size: 5000, xsdFileName: \""5000c.xsd\"")` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\dotnetbuild\\work\\1cd97244-3cc5-4c55-8ff2-b9c00ad0c880\\Work\\977a282c-c7b8-4392-a807-03a6359163c7\\Unzip\\5000c.xsd' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.Xml.Tests.TC_SchemaSet_Add_URL.GenerateChoiceXsdFile(Int32 size, String xsdFileName) at System.Xml.Tests.TC_SchemaSet_Add_URL.bug298991Choice(Int32 size, String xsdFileName) Build : Master - 20170623.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170623.01/workItem/System.Xml.XmlSchemaSet.Tests/analysis/xunit/System.Xml.Tests.TC_SchemaSet_Add_URL~2Fbug298991Choice(size:%205000,%20xsdFileName:%20%5C%225000c.xsd%5C%22)" +21425 area-System.Globalization "Test: System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern/CurrencyNegativePattern_Get(locale: \""fa-IR\"") failed with ""Xunit.Sdk.ContainsException""" "Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern/CurrencyNegativePattern_Get(locale: \""fa-IR\"")` has failed. Assert.Contains() Failure Not found: 8 In value: Int32[] [1, 0] Stack Trace: Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoCurrencyNegativePattern~2FCurrencyNegativePattern_Get(locale:%20%5C%22fa-IR%5C%22)" +21426 area-System.Globalization "Test: System.Globalization.Tests.RegionInfoPropertyTests/MiscTest failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.RegionInfoPropertyTests/MiscTest(lcid: 1037, geoId: 117, currencyEnglishName: \""Israeli New Shekel\"", alternativeCurrencyEnglishName: \""Israeli New Sheqel\"", currenc...` has failed. Assert.Equal() Failure ? (pos 1) Expected: ??? Actual: ??? ??? ? (pos 1) Stack Trace: at System.Globalization.Tests.RegionInfoPropertyTests.MiscTest(Int32 lcid, Int32 geoId, String currencyEnglishName, String alternativeCurrencyEnglishName, String currencyNativeName, String threeLetterISORegionName, String threeLetterWindowsRegionName) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Globalization/tests/RegionInfo/RegionInfoTests.Properties.cs:line 119 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.RegionInfoPropertyTests~2FMiscTest(lcid:%201037,%20geoId:%20117,%20currencyEnglishName:%20%5C%22Israeli%20New%20Shekel%5C%22,%20alternativeCurrencyEnglishName:%20%5C%22Israeli%20New%20Sheqel%5C%22,%20currenc..." +21427 area-System.IO "Tests under: System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods failed with ""Xunit.Sdk.TrueException'" Opened on behalf of @Jiayili1 The test `System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods/ExtractToDirectoryExtension_Unicode` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods.ExtractToDirectoryExtension_Unicode() in /Users/buildagent/agent/_work/45/s/corefx/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs:line 184 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.IO.Compression.ZipFile.Tests/analysis/xunit/System.IO.Compression.Tests.ZipFileTest_ConvenienceMethods~2FExtractToDirectoryExtension_Unicode +21429 area-System.Net System.Net.Http.CurlException: SSL peer certificate or SSH remote key was not OK This exception only occurs in docker image microsoft/dotnet:1.1.2-runtime but not in microsoft/dotnet:1.1.2-runtime-nanoserver. Codes are the same. Our company is using GeoTrust G3 WildCart sign. +21430 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds failed with ""System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation.""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds(acceptedProtocol: None, requestOnlyThisProtocol: False)` has failed. System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 991 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 838 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 809 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 978 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 881 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 694 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 611 at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 161 at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 257 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.Test.Common.LoopbackServer.d__9.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 109 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass1_0.<b__0>d.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 46 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__1.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 44 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 248 at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 210 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 581 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118 at System.Net.Http.TLSCertificateExtensions.BuildNewChain(X509Certificate2 certificate, Boolean includeClientApplicationPolicy) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/src/System/Net/Http/TlsCertificateExtensions.cs:line 78 at System.Net.SafeDeleteSslContext.SetCertificate(SafeSslHandle sslContext, X509Certificate2 certificate) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 290 at System.Net.SafeDeleteSslContext.CreateSslContext(SafeFreeSslCredentials credential, Boolean isServer) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 100 at System.Net.SafeDeleteSslContext..ctor(SafeFreeSslCredentials credential, Boolean isServer) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 54 at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired, String targetName) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.OSX.cs:line 238 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False) +21431 area-System.Net "Tests under: System.Net.Security.Tests failed with ""System.Security.Authentication.AuthenticationException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success(serverProtocol: Tls)` has failed. System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 991 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 838 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 809 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 978 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 881 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 694 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 611 at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 161 at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 257 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs:line 154 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__9.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs:line 95 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 248 at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 210 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 581 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118 at System.Net.Http.TLSCertificateExtensions.BuildNewChain(X509Certificate2 certificate, Boolean includeClientApplicationPolicy) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/src/System/Net/Http/TlsCertificateExtensions.cs:line 78 at System.Net.SafeDeleteSslContext.SetCertificate(SafeSslHandle sslContext, X509Certificate2 certificate) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 290 at System.Net.SafeDeleteSslContext.CreateSslContext(SafeFreeSslCredentials credential, Boolean isServer) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 100 at System.Net.SafeDeleteSslContext..ctor(SafeFreeSslCredentials credential, Boolean isServer) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 54 at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired, String targetName) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.OSX.cs:line 238 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ServerAsyncAuthenticateTest~2FServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success(serverProtocol:%20Tls) +21432 area-System.Net Test failure: System.Net.Security.Tests.SslStreamStreamToStreamTest_Async/SslStream_StreamToStream_Successive_ClientWrite_Async_Success Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.SslStreamStreamToStreamTest_Async/SslStream_StreamToStream_Successive_ClientWrite_Async_Success` has failed. System.AggregateException : One or more errors occurred. (VirtualNetwork: Timeout reading the next frame.) (A call to SSPI failed, see inner exception.) ---- System.TimeoutException : VirtualNetwork: Timeout reading the next frame. ---- System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. -------- System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Security.Tests.SslStreamStreamToStreamTest_Async.DoHandshake(SslStream clientSslStream, SslStream serverSslStream) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs:line 391 at System.Net.Security.Tests.SslStreamStreamToStreamTest.d__7.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs:line 202 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace #1 (System.TimeoutException) ----- at System.Net.Test.Common.VirtualNetwork.ReadFrame(Boolean server, Byte[]& buffer) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/tests/System/Net/VirtualNetwork/VirtualNetwork.cs:line 39 at System.Net.Test.Common.VirtualNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs:line 119 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/FixedSizeReader.cs:line 56 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 728 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) ----- Inner Stack Trace #2 (System.Security.Authentication.AuthenticationException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 991 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 838 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 809 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 978 at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 1140 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 728 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) ----- Inner Stack Trace ----- at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 248 at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 210 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 581 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118 at System.Net.Http.TLSCertificateExtensions.BuildNewChain(X509Certificate2 certificate, Boolean includeClientApplicationPolicy) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/src/System/Net/Http/TlsCertificateExtensions.cs:line 78 at System.Net.SafeDeleteSslContext.SetCertificate(SafeSslHandle sslContext, X509Certificate2 certificate) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 290 at System.Net.SafeDeleteSslContext.CreateSslContext(SafeFreeSslCredentials credential, Boolean isServer) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 100 at System.Net.SafeDeleteSslContext..ctor(SafeFreeSslCredentials credential, Boolean isServer) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/Pal.OSX/SafeDeleteSslContext.cs:line 54 at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired, String targetName) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.OSX.cs:line 238 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamStreamToStreamTest_Async~2FSslStream_StreamToStream_Successive_ClientWrite_Async_Success +21433 area-System.Runtime "Tests under: System.Tests.TimeZoneInfoTests failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.TimeZoneInfoTests/ConvertTime_DateTimeOffset_NearMinMaxValue` has failed. Error: Expected value '01/01/0001 00:00:00' but got '01/01/0001 00:03:00', input value is '01/01/0001 18:00:00', Source TimeZone: Australia/Sydney, Dest. Time Zone: America/Los_Angeles Expected: True Actual: False Stack Trace: at System.Tests.TimeZoneInfoTests.VerifyConvert(DateTime inputTime, String sourceTimeZoneId, String destinationTimeZoneId, DateTime expectedTime) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs:line 1923 at System.Tests.TimeZoneInfoTests.ConvertTime_DateTimeOffset_NearMinMaxValue() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs:line 187 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.TimeZoneInfoTests~2FConvertTime_DateTimeOffset_NearMinMaxValue +21434 area-System.Net System.Net.WebSockets failed with Segfault on Ubuntu 16.10 [xUnit] [ERROR] - No test reports found for the metric 'xUnit.Net' with the resolved pattern 'bin/**/testResults.xml'. Configuration error?. detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu16.10_release/87/consoleFull#136046166483554902-aff0-4799-9e92-0ada24ce2a06 +21435 area-System.Security "Tests under: System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests failed with ""Interop+AppleCrypto+AppleCommonCryptoCryptographicException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests/DecryptKnownECB192` has failed. Interop+AppleCrypto+AppleCommonCryptoCryptographicException : The system cryptographic library returned error '-4305' of type 'CCCryptorStatus' Stack Trace: at Internal.Cryptography.AppleCCCryptor.ProcessInteropError(Int32 functionReturnCode, Int32 ccStatus) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/AppleCCCryptor.cs:line 222 at Internal.Cryptography.AppleCCCryptor.Reset() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/AppleCCCryptor.cs:line 201 at Internal.Cryptography.AppleCCCryptor.TransformFinal(Byte[] input, Int32 inputOffset, Int32 count) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/AppleCCCryptor.cs:line 65 at Internal.Cryptography.UniversalCryptoDecryptor.UncheckedTransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/src/Internal/Cryptography/UniversalCryptoDecryptor.cs:line 91 at Internal.Cryptography.UniversalCryptoTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/src/Internal/Cryptography/UniversalCryptoTransform.cs:line 101 at System.Security.Cryptography.CryptoStream.FlushFinalBlock() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/CryptoStream.cs:line 113 at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/CryptoStream.cs:line 564 at System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests.TestAesDecrypt(CipherMode mode, Byte[] key, Byte[] iv, Byte[] encryptedBytes, Byte[] expectedAnswer) in /Users/buildagent/agent/_work/45/s/corefx/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/AES/AesCipherTests.cs:line 578 Build : Master - 20170623.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Security.Cryptography.Algorithms.Tests/analysis/xunit/System.Security.Cryptography.Encryption.Aes.Tests.AesCipherTests~2FDecryptKnownECB192 +21436 area-System.Security "No test results generated under ""System.Security.Cryptography.X509Certificates.Tests """ "No test results generated under ""System.Security.Cryptography.X509Certificates.Tests "" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170623.01/workItem/System.Security.Cryptography.X509Certificates.Tests/wilogs ~~~ 2017-06-22 17:30:06,710: INFO: proc(54): run_and_log_output: Output: Discovering: System.Security.Cryptography.X509Certificates.Tests 2017-06-22 17:30:07,588: INFO: proc(54): run_and_log_output: Output: Discovered: System.Security.Cryptography.X509Certificates.Tests 2017-06-22 17:30:07,738: INFO: proc(54): run_and_log_output: Output: Starting: System.Security.Cryptography.X509Certificates.Tests 2017-06-22 17:30:09,731: INFO: proc(54): run_and_log_output: Output: Warning: unable to build chain to self-signed root for signer ""(null)"" System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChainExtraStoreUntrustedRoot [FAIL] 2017-06-22 17:30:09,734: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:09,742: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:09,920: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:09,921: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:09,922: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:09,922: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:09,923: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(222,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChainExtraStoreUntrustedRoot() 2017-06-22 17:30:10,768: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(verificationTime: 2014-10-14T23:59:59.0000000Z, shouldBeValid: False, kind: Utc) [FAIL] 2017-06-22 17:30:10,768: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:10,769: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:10,769: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:10,769: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:10,770: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:10,771: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:10,771: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(288,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(DateTime verificationTime, Boolean shouldBeValid, DateTimeKind kind) 2017-06-22 17:30:10,855: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(verificationTime: 2014-10-14T16:59:59.0000000-07:00, shouldBeValid: False, kind: Local) [FAIL] 2017-06-22 17:30:10,855: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:10,855: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:10,856: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:10,856: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:10,857: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:10,858: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:10,858: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(288,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(DateTime verificationTime, Boolean shouldBeValid, DateTimeKind kind) 2017-06-22 17:30:10,884: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.CertTests.TestVerify [FAIL] 2017-06-22 17:30:10,884: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:10,884: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:10,885: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:10,885: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:10,886: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:10,886: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:10,886: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs(626,0): at System.Security.Cryptography.X509Certificates.X509Certificate2.Verify() 2017-06-22 17:30:10,887: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/CertTests.cs(103,0): at System.Security.Cryptography.X509Certificates.Tests.CertTests.TestVerify() 2017-06-22 17:30:10,938: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(verificationTime: 2014-10-14T16:59:59.0000000, shouldBeValid: False, kind: Unspecified) [FAIL] 2017-06-22 17:30:10,938: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:10,939: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:10,939: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:10,940: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:10,940: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:10,941: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:10,941: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(288,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(DateTime verificationTime, Boolean shouldBeValid, DateTimeKind kind) 2017-06-22 17:30:11,044: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(verificationTime: 2016-10-16T00:00:00.0000000Z, shouldBeValid: False, kind: Utc) [FAIL] 2017-06-22 17:30:11,045: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:11,045: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:11,045: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:11,046: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:11,046: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:11,047: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:11,047: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(288,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(DateTime verificationTime, Boolean shouldBeValid, DateTimeKind kind) 2017-06-22 17:30:11,202: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(verificationTime: 2016-10-15T17:00:00.0000000-07:00, shouldBeValid: False, kind: Local) [FAIL] 2017-06-22 17:30:11,203: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:11,203: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:11,203: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:11,204: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:11,204: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:11,205: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:11,205: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(288,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(DateTime verificationTime, Boolean shouldBeValid, DateTimeKind kind) 2017-06-22 17:30:11,302: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(verificationTime: 2016-10-15T17:00:00.0000000, shouldBeValid: False, kind: Unspecified) [FAIL] 2017-06-22 17:30:11,302: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:11,302: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:11,303: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:11,303: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:11,304: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:11,304: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:11,304: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(288,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyExpiration_LocalTime(DateTime verificationTime, Boolean shouldBeValid, DateTimeKind kind) 2017-06-22 17:30:11,350: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_WithApplicationPolicy_NoMatch [FAIL] 2017-06-22 17:30:11,350: INFO: proc(54): run_and_log_output: Output: System.Security.Cryptography.CryptographicException : Error occurred during a cryptographic operation. 2017-06-22 17:30:11,351: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-06-22 17:30:11,351: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(248,0): at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) 2017-06-22 17:30:11,351: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(210,0): at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) 2017-06-22 17:30:11,352: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs(581,0): at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) 2017-06-22 17:30:11,352: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs(118,0): at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) 2017-06-22 17:30:11,353: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs(353,0): at System.Security.Cryptography.X509Certificates.Tests.ChainTests.BuildChain_WithApplicationPolicy_NoMatch() ~~~" +21437 area-System.Data "Test: System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureNoProtocolConnectionTest failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.TcpDefaultForAzureTest/NonAzureNoProtocolConnectionTest` has failed. Expected protocol Named Pipes Provider in the error message, but received: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)\r Expected: True\r Actual: False Stack Trace: at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.CheckConnectionFailure(String connString, String protocol) at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.NonAzureNoProtocolConnectionTest() at xunit.console.netcore!+0x10b2d00 at xunit.console.netcore!+0xe6c1f3 at xunit.console.netcore!+0xe6bff6 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.TcpDefaultForAzureTest~2FNonAzureNoProtocolConnectionTest +21438 area-System.Net "Test: System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest/GetAsync_RedirectResponseHasCookie_CookieSentToFinalUri failed with ""Xunit.Sdk.TrueException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest/GetAsync_RedirectResponseHasCookie_CookieSentToFinalUri(cookieUsePolicy: UseSpecifiedCookieContainer, cookieName: \""cookieName...` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at xunit.console.netcore!+0xa269e9 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x876781 at xunit.console.netcore!+0x8766ae at xunit.console.netcore!+0x876623 at xunit.console.netcore!+0x77b23a --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x876781 at xunit.console.netcore!+0x8766ae at xunit.console.netcore!+0x876623 at xunit.console.netcore!+0x8bf367 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x876781 at xunit.console.netcore!+0x8766ae at xunit.console.netcore!+0x876623 at xunit.console.netcore!+0x8bfa05 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Net.Http.WinHttpHandler.Functional.Tests/analysis/xunit/System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest~2FGetAsync_RedirectResponseHasCookie_CookieSentToFinalUri(cookieUsePolicy:%20UseSpecifiedCookieContainer,%20cookieName:%20%5C%22cookieName..." +21439 area-System.Runtime "Test: System.Runtime.InteropServices.RuntimeEnvironmentTests/RuntimeEnvironmentSysVersion failed with ""System.PlatformNotSupportedException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.RuntimeEnvironmentTests/RuntimeEnvironmentSysVersion` has failed. System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.Delegate.Equals(Object obj) at System.Runtime.InteropServices.RuntimeEnvironmentTests.RuntimeEnvironmentSysVersion() at xunit.console.netcore!+0x8fc92e at xunit.console.netcore!+0x7c051c at xunit.console.netcore!+0x7c0374 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Runtime.InteropServices.Tests/analysis/xunit/System.Runtime.InteropServices.RuntimeEnvironmentTests~2FRuntimeEnvironmentSysVersion +21440 area-System.Runtime "Tests under: System.Runtime.InteropServices.WindowsRuntime.Tests.EventRegistrationTokenTableTests failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.WindowsRuntime.Tests.EventRegistrationTokenTableTests/Ctor_NonDelegateType_ThrowsInvalidOperationException` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at System.Runtime.InteropServices.WindowsRuntime.Tests.EventRegistrationTokenTableTests.Ctor_NonDelegateType_ThrowsInvalidOperationException() at xunit.console.netcore!+0x543acf at SharedLibrary!+0x6017dc at SharedLibrary!+0x601634 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Runtime.InteropServices.WindowsRuntime.Tests/analysis/xunit/System.Runtime.InteropServices.WindowsRuntime.Tests.EventRegistrationTokenTableTests~2FCtor_NonDelegateType_ThrowsInvalidOperationException +21441 area-System.Runtime "Test: System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests/GetActivationFactory_NotExportedType_ThrowsArgumentException failed with ""System.Runtime.InteropServices.COMException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests/GetActivationFactory_NotExportedType_ThrowsArgumentException` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.Runtime.InteropServices.COMException): Class not registered (Exception from HRESULT: 0x80040154) Stack Trace: at SharedLibrary!+0x75670f at SharedLibrary!+0x756561 at SharedLibrary!+0x837926 at System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests.<>c.b__46_0() Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Runtime.InteropServices.WindowsRuntime.Tests/analysis/xunit/System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests~2FGetActivationFactory_NotExportedType_ThrowsArgumentException +21442 area-System.Runtime "Test: System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests/RemoveAllEventHandlers_RemoveMethodHasNoTarget_Success failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests/RemoveAllEventHandlers_RemoveMethodHasNoTarget_Success` has failed. System.ArgumentNullException : Value cannot be null. Stack Trace: at System.Runtime.CompilerServices.ConditionalWeakTable>.TryGetValue(Windows.Input.ICommand key, Runtime.InteropServices.WindowsRuntime.EventRegistrationTokenTable& value) at SharedLibrary!+0x610b48 at SharedLibrary!+0x8372e9 at SharedLibrary!+0x837283 at System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests.RemoveAllEventHandlers_RemoveMethodHasNoTarget_Success() at xunit.console.netcore!+0x543acf at SharedLibrary!+0x6017dc at SharedLibrary!+0x601634 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Runtime.InteropServices.WindowsRuntime.Tests/analysis/xunit/System.Runtime.InteropServices.WindowsRuntime.Tests.WindowsRuntimeMarshalTests~2FRemoveAllEventHandlers_RemoveMethodHasNoTarget_Success +21443 area-System.Runtime Test failure: System.Tests.GCExtendedTests/TryStartNoGCRegion_SettingLatencyMode_ThrowsInvalidOperationException Opened on behalf of @Jiayili1 The test `System.Tests.GCExtendedTests/TryStartNoGCRegion_SettingLatencyMode_ThrowsInvalidOperationException` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -323331298 Stack Trace: at xunit.console.netcore!+0x9a80cc at System.Tests.GCExtendedTests.TryStartNoGCRegion_SettingLatencyMode_ThrowsInvalidOperationException() at xunit.console.netcore!+0xb81531 at SharedLibrary!+0x7626f3 at SharedLibrary!+0x7624f3 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.GCExtendedTests~2FTryStartNoGCRegion_SettingLatencyMode_ThrowsInvalidOperationException +21444 area-System.Security Test failure: System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/Rc4AndCngWrappersDontMixTest Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests/Rc4AndCngWrappersDontMixTest` has failed. $BlockedFromReflection_0_fd24b54c : The request is not supported Stack Trace: at xunit.console.netcore!+0xa2cd93 at xunit.console.netcore!+0xa3ada3 at System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests.Rc4AndCngWrappersDontMixTest() at xunit.console.netcore!+0xb2fbc0 at xunit.console.netcore!+0x9d67a3 at xunit.console.netcore!+0x9d65a3 Build : Master - 20170623.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170623.01/workItem/System.Security.Cryptography.Pkcs.Tests/analysis/xunit/System.Security.Cryptography.Pkcs.EnvelopedCmsTests.Tests.EdgeCasesTests~2FRc4AndCngWrappersDontMixTest +21446 area-Infrastructure [release/2.0.0] Update buildtools +21447 area-Serialization Release/2.0.0 ObservableCollection serializiation compat with Json.NET Waiting for shiproom approval cc @justinvp @JamesNK +21448 area-System.IO Disable System.IO.FileSystem NamedPipe for UAP This cleans System.IO.FileSystem in UAP. +21449 area-System.IO Disable System.IO.Pipes.AccessControl.Tests for UAP Disabling NamedPipes tests. This cleans System.IO.Pipes,AccessControl.Tests in UAP. +21451 area-System.Drawing [porting] ToolboxBitmapAttribute throws StackOverflowException when all params are null The following code just completes successfully with netfx. In .NET Core, it throws a StackOverflowException ```cs var attribute = new ToolboxBitmapAttribute((string)null); attribute.GetImage(null, null, false); ``` +21452 area-System.Net Productize ManagedHandler for HttpClient We've checked in a prototype C# implementation of an HttpClientHandler. But there's lots of work left to do on it. - [x] Get all existing tests passing. - [ ] Add lots of additional protocol-related tests - [x] Add support for digest auth - [ ] Add support for NTLM auth - [ ] Add support for Negotiate auth - [x] Add better connection pooling support - [ ] Add HTTP/2 support - [ ] Add support for environment variables recognized by existing handlers - [ ] Lots of fit and finish - [x] Perf - [ ] Perf - [ ] Perf - [ ] Perf - [ ] ... you get the idea - [ ] Determine if/how it should be shipped initially +21454 area-System.Drawing Fix embedded resources in System.Drawing.Common Fixes #21451 Fixes #21310 I've added tests for ToolboxBitmapAttribute with this PR, as they failed before for a similar reason to #21310 +21457 area-System.Drawing Add EncoderParameter tests for System.Drawing.Common.Imaginig for #20711 Hi little chunk of tests for Imiaginig part. In EncoderParameterTests Ive used AnyEncoder propertie to inform that the value of this parameter in a particular case is irrelevant. What do you think about that, good or not. In our company we are using something like Autofixture for this case. +21458 area-System.Net Some more miscellaneous ManagedHandler cleanup - Consolidate lots of individual WriteCharAsync calls, and change some others to avoid unnecessary checks - Switch some unnecessary `ValueTask`s to just be `Task` cc: @geoffkizer +21459 area-System.Net System.Net.Ping assumes fixed size IPv4 header for Unix "When [SendIcmpEchoRequestOverRawSocket()](https://github.com/dotnet/corefx/blob/master/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs#L43) is used for ping in Linux, it assumes size of IPv4 header is fixed 20 bytes at [Ping.Unix.cs:19](https://github.com/dotnet/corefx/blob/master/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs#L19). In reality, size of IPv4 header can vary from 20 bytes to 60 bytes. Therefore `SendIcmpEchoRequestOverRawSocket()` works incorrectly when IPv4 header is larger than 20 bytes and fails to find a correct echoed packet due to wrong interpretation of a received packet. This failure is observed when running `System.Net.Ping.Functional.Tests.dll` on environment where IPv4 header is larger than 20 bytes and 12 tests are failed as below. ``` ``` I'm not expert in network implementation and looking forward any advice and comments on this issue. " +21460 area-System.Security [release/2.0] Fix temp keychain lifetime with macOS CopyWithPrivateKey Because macOS is the only platform that doesn't allow ephemeral keys to be associated with certificates we have a straightforward-yet-complex temporary keychain management system. In the new CopyWithPrivateKey methods, we end up messing with the refcounts and deleting too early because the input certificate got mutated by the call -- it believes it belongs to the keychain, even though it was subsequently removed from it. So when that cert handle disposes we DangerousRelease our shared lifetime handle even though we never did a DangerousAddRef. Since the new method is supposed to have no lasting side effects, and we've found one, change to use the Windows PAL approach: first clone the cert to disassociate it from mutation operations. The existing tests noticed this problem, which got the incorrect fix of a persisted field for the private key. But since PFX exporting is done within the keychain itself, if the keychain was deleted PFX export isn't possible. With the addition of PFX export tests from CopyWithPrivateKey we now have better ways of tracking that the keychain isn't deleted too early. Port of https://github.com/dotnet/corefx/pull/21334 to release/2.0 Fixes #20272. +21461 area-System.Net Align param name for Windows and Unix for Socket.Select Mentioned in #21409 +21462 area-System.Net Fix Ping.Unix.cs to handle various size of IPv4 header correctly Fix #21459 Size of IP header for IPv4 varies from 20 bytes to 60 bytes. +21464 area-System.Runtime Add misc tests for System.Runtime.InteropServices Final one in the Runtime.InteropServices backlog that can now be sent in without merge conflicts +21465 area-System.Runtime Fix System.Runtime.InteropServices.Tests from crashing in uap System.Runtime.InteropServices are crashing in uap with error: ``` System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.InteropServices.Tests, Version=4.2.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb'. Operation is not supported. (Exception from HRESULT: 0x80131515) File name: 'System.Runtime.InteropServices.Tests, Version=4.2.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb' ---> System.NotSupportedException: A Primary Interop Assembly is not supported in AppX. ``` @yizhang82 explained: _PrimaryInteropAssemblyAttributeTests.cs has PrimaryInteropAssemblyAttribute in it which makes the entire test assembly a PrimaryInteropAssembly that can’t be loaded under AppX. This test needs to be disabled under AppX and also excluded from build._ With this change they run fine but there are 7 tests failing with error: ``` System.Runtime.InteropServices.Tests.ComAwareEventInfoTests.AddEventHandler_NullSourceTypeEventInterface_ThrowsNullReferenceException [FAIL] System.Runtime.InteropServices.COMException : Creating an instance of the COM component with CLSID {7B9E38B0-A97C-11D0-8534-00C04FD8D503} using CoCreateInstanceFromApp failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). Please make sure your COM object is in the allowe d list of CoCreateInstanceFromApp. ``` @yizhang82 once my PR is merged could you take a look? Or should this tests be disabled? @weshaggard is this the best way to exclude it from the build or is there a better way than adding a build configuration? cc: @danmosemsft @tijoytom +21466 area-System.Net Add ClientWebSocket client certificate test Adding new test case that pins the UWP shortcoming tracked by issue #21393. This test case requires [special setup](https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/Net/Prerequisites/README.md) that is checked inside its ConditionalFact attribute. I've confirmed that it consistently passes in .NET Framework test runs and fails in UWP and .NET Core test runs (as expected). I'll enable it for UWP as part of the #21393 fix. Contributes to #21393 +21468 area-Serialization Removing serialization tests for lazy as we stripped the type from th… …e serialization bucket and it won't come back soon. Before I just disabled them with an ActiveIssue but it's better to remove them completely (Stephen also suggested that back then). Fixes https://github.com/dotnet/corefx/issues/21421 cc @danmosemsft +21469 area-System.Net Fix WebHeaderCollection for UAPAOT Change some Assert.Throws into AssertExtensions.Throws. This is needed since UAPAOT (via the ILC.EXE compiler) strips out strings for the parameter names for the exceptions that are thrown. Using the AssertExtensions class automatically knows not to look for parameter names to compare when on UAPAOT platform. Fixes #20465 +21470 area-System.Runtime Fixed System.Runtime.Extensions uap/uapaot/netfx tests (combined with Viktor's PR) Contributes to: https://github.com/dotnet/corefx/issues/18718 This is resolving conflicts with mostly overlapping changes with @danmosemsft's PR: https://github.com/dotnet/corefx/pull/21412 I've left original PR for comparison: https://github.com/dotnet/corefx/pull/19866 We might want to revert changes to src/System.Runtime.Extensions/tests/System/AppDomainTests.cs cc: @ViktorHofer Testing in progress so may fail CI +21471 area-System.Runtime Convert System.Runtime.Tests to use RemoteInvoke when changing CurrentCulture Fixes the flakiness in System.Runtime.Tests in UWP F5. That was caused by some tests changing CurrentCulture in the same process, so it could observe wrong value at times. cc: @tarekgh +21472 area-System.IO Add CopyToAsync with Func overload to Stream ## Latest proposal ```c# public abstract class Stream { public virtual void CopyTo(ReadOnlySpanAction callback, object state, int bufferSize); public virtual Task CopyToAsync(Func, CancellationToken, Task> callback, object state, int bufferSize, CancellationToken cancellationToken); ... } ``` See https://github.com/dotnet/corefx/issues/21472#issuecomment-321669769 for details. ## Original Proposal Today `Stream` as `CopyToAsync` which acts more like a write operation than a read operation but it can also be used as a way to have a `Stream` push data to a consumer. Instead of forcing people to write a dummy `Stream` implementation that handles incoming data on `WriteAsync`, a callback could be provided to get the data that `Stream` has to hand out. API shape: ```C# public class Stream { public Task CopyToAsync(Func, Task> callback, object state); public Task CopyToAsync(Func, CancellationToken, Task> callback, CancellationToken cancellationToken, object state); public Task CopyToAsync(Func, CancellationToken, Task> callback, Int32 bufferSize, CancellationToken cancellationToken, object state); } ``` The underlying implementation would just have a dummy stream that forwarded to callback on calls to `WriteAsync`: ```C# CopyToAsync(new InternalCopyToAsyncStream(callback, state), bufferSize, cancellationToken); ``` /cc @stephentoub +21474 area-System.Xml Some Xml OuterLoop tests are failing because files are not found "
``` Discovering: System.Xml.XmlSchemaSet.Tests Discovered: System.Xml.XmlSchemaSet.Tests Starting: System.Xml.XmlSchemaSet.Tests System.Xml.Tests.TC_SchemaSet_Add_URL.bug298991Sequence(size: 1000, xsdFileName: \""1000s.xsd\"") [FAIL] System.IO.FileNotFoundException : Could not find file 'd:\corefx4\bin\Windows_NT.AnyCPU.Debug\System.Xml.XmlSch emaSet.Tests\netcoreapp\1000s.xsd'. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 buffe rSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 buffe rSize) d:\corefx4\src\System.Private.Xml\src\System\Xml\XmlDownloadManager.cs(26,0): at System.Xml.XmlDownloadManag er.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) d:\corefx4\src\System.Private.Xml\src\System\Xml\XmlUrlResolver.cs(62,0): at System.Xml.XmlUrlResolver.GetEn tity(Uri absoluteUri, String role, Type ofObjectToReturn) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs(633,0): at System.Xml.XmlTextRead erImpl.FinishInitUriString() d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs(611,0): at System.Xml.XmlTextRead erImpl..ctor(String uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlReaderSettings.cs(422,0): at System.Xml.XmlReaderSe ttings.CreateReader(String inputUri, XmlParserContext inputContext) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlReader.cs(1771,0): at System.Xml.XmlReader.Create(S tring inputUri, XmlReaderSettings settings, XmlParserContext inputContext) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlReader.cs(1761,0): at System.Xml.XmlReader.Create(S tring inputUri, XmlReaderSettings settings) d:\corefx4\src\System.Private.Xml\src\System\Xml\Schema\XmlSchemaSet.cs(333,0): at System.Xml.Schema.XmlSche maSet.Add(String targetNamespace, String schemaUri) d:\corefx4\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_Add_URL.cs(377,0): at System.Xml .Tests.TC_SchemaSet_Add_URL.verifyXsd(String file) d:\corefx4\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_Add_URL.cs(395,0): at System.Xml .Tests.TC_SchemaSet_Add_URL.bug298991Sequence(Int32 size, String xsdFileName) System.Xml.Tests.TC_SchemaSet_Add_URL.bug298991Choice(size: 5000, xsdFileName: \""5000c.xsd\"") [FAIL] System.IO.FileNotFoundException : Could not find file 'd:\corefx4\bin\Windows_NT.AnyCPU.Debug\System.Xml.XmlSch emaSet.Tests\netcoreapp\5000c.xsd'. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 buffe rSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 buffe rSize) d:\corefx4\src\System.Private.Xml\src\System\Xml\XmlDownloadManager.cs(26,0): at System.Xml.XmlDownloadManag er.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) d:\corefx4\src\System.Private.Xml\src\System\Xml\XmlUrlResolver.cs(62,0): at System.Xml.XmlUrlResolver.GetEn tity(Uri absoluteUri, String role, Type ofObjectToReturn) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs(633,0): at System.Xml.XmlTextRead erImpl.FinishInitUriString() d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlTextReaderImpl.cs(611,0): at System.Xml.XmlTextRead erImpl..ctor(String uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlReaderSettings.cs(422,0): at System.Xml.XmlReaderSe ttings.CreateReader(String inputUri, XmlParserContext inputContext) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlReader.cs(1771,0): at System.Xml.XmlReader.Create(S tring inputUri, XmlReaderSettings settings, XmlParserContext inputContext) d:\corefx4\src\System.Private.Xml\src\System\Xml\Core\XmlReader.cs(1761,0): at System.Xml.XmlReader.Create(S tring inputUri, XmlReaderSettings settings) d:\corefx4\src\System.Private.Xml\src\System\Xml\Schema\XmlSchemaSet.cs(333,0): at System.Xml.Schema.XmlSche maSet.Add(String targetNamespace, String schemaUri) d:\corefx4\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_Add_URL.cs(377,0): at System.Xml .Tests.TC_SchemaSet_Add_URL.verifyXsd(String file) Finished: System.Xml.XmlSchemaSet.Tests d:\corefx4\src\System.Private.Xml\tests\XmlSchema\XmlSchemaSet\TC_SchemaSet_Add_URL.cs(408,0): at System.Xml .Tests.TC_SchemaSet_Add_URL.bug298991Choice(Int32 size, String xsdFileName) ```
cc: @sepidehMS " +21476 area-Serialization reenable ref emit for xml serializer in UAP Fixes: https://github.com/dotnet/corefx/issues/21292 Related to: https://github.com/dotnet/corefx/pull/20783 +21481 area-System.IO WinRtToNetFxStreamAdapter.Flush seems to be blocked when waiting for WinRT stream's FlushAsync Hi, we are seeing an issue where an in app that uses the WinRT StreamSocket API to implement a webserver and listens/responds to connection requests. The issue we are seeing is the app (acting as the webserver) stops responding because there are 500 worker threads accumulated over time that are hanging, which reached the threadpool limit for the process. We noticed that the hanging threads all have an identical stack, which shows that WinRtToNetFxStreamAdapter.Flush is calling the WinRTStream's flushASync and waiting forever for it. However on the WinRT side, the FlushAsync seems to be completing if called outside of the .NET context. We further noticed that this only repros with Debug build of the app, either using F5 debug or a standalone debug build without the debugger attached. On release builds, the issue does not repro. I have the repro app. Please email me when needed and I'll send you the zip. +21482 area-System.Net Escape '\' on Unix file uris to '%5C' for canonical form. On Unix it is valid for filenames to have char '\\'. According to URI RFC, on the wire, the backslash needs to be in percent-encoded form as %5C. Hence we are converting all '\\' and '%5C' in unix file uris to be '%5C' in Uri.AbsolutePath and Uri.AbsoluteUri. These return the canonical URI values. Also note, the Uri.LocalPath will return these unescaped as before. Fixes #20628 cc @tmds @CIPop @wfurt @karelz +21483 area-System.Console [RS5] Reenable Console tests related to OutputEncoding ``` kernel32!SetConsoleOutputCP kernel32!GetConsoleOutputCP ``` are currently not available on UAP but are on RS3, reenable once this is available I believe our CIs already use RS3 although most of the people don't so let's keep them disabled until this works locally too +21486 area-System.Net UWP work for S.N.NetworkInformation Completely removed dependencies on WinRT implementation. Fix: #20014 #9675 #17992 #17993 #19314 +21489 area-System.Threading System.Threading.Tasks.Tests.TaskRtTests_Core.RunTaskWaitAllTests [FAIL] I'm hitting this test failure in multiple flavors while running outerloop tests as part of #21466: - OuterLoop netcoreapp Windows_NT Release x64 ([results](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_release_prtest/29/)) - OuterLoop netcoreapp Windows_NT Debug x64 ([results](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug_prtest/134/)) - OuterLoop netcoreapp Ubuntu16.10 Debug x64 ([results](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu16.10_debug_prtest/20/)) - OuterLoop netcoreapp OSX10.12 Debug x64 ([results](https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_osx_debug_prtest/56/)) > MESSAGE: > Assert.Equal() Failure\nExpected: (null)\nActual: tasks > +++++++++++++++++++ > STACK TRACE: > at System.AssertExtensions.Throws[T](String paramName, Action action) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_debug_prtest/src/Common/tests/System/AssertExtensions.cs:line 48 at System.Threading.Tasks.Tests.TaskRtTests_Core.RunTaskWaitAllTests() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_osx_debug_prtest/src/System.Threading.Tasks/tests/Task/TaskRtTests_Core.cs:line 1326 +21491 area-Meta Convert Assert.Throws to AssertExtensions This one was a little easier :D Contributes to #21409 +21492 area-System.Drawing Cleanup Bitmap/Icon Now that these classes are well tested we can clean them up a bit +21503 area-Infrastructure QUESTION: Enabling New OS for CoreFX "Currently working on the CoreFX section of [this issue](https://github.com/dotnet/core-setup/issues/1651) and I've parsed the following issues for information… - dotnet/corefx#6770 - - dotnet/coreclr#917 (specifically [this comment](https://github.com/dotnet/coreclr/issues/917#issuecomment-229827373)) …but need additional clarification/information: 1. Are there published (gist or issue) steps for what is needed for a PR enabling CoreFX for a new platform? 2. Should I be able to generate Android-specific nuget packages for CoreFX as an end goal or is there additional work needed? 3. The main user doing the bulk of the work to bring up CoreFX/dotnet for Alpine was deleted; is there an Alpine ""team"" or maintainer whom I could contact? 4. Who are the maintainers for packaging and other bits of the CoreFX repo (I'll create a PR for a CODE_OWNERS.TXT file along the lines of [this](https://github.com/dotnet/coreclr/blob/master/CODE_OWNERS.TXT) with the info provided) cc @janvorli, @jkotas and @schellap " +21507 area-Serialization BinaryFormatter - Reenable sanity check 1. DataSet and DataTable produced different blobs on Unix machines as their serialized payload contains line breaks: \r\n vs \n. 2. CookieContainer sets the machines domain to a field. Overwrote with reflection. 3. CompareInfo sets a SortVersion which is Windows OS machine dependent. Overwrote with reflection. 4. CookieCollection didn't contain a serializable field (m_version) probably because it was wrapped in pragmas and had its default value but only in CI, locally it was in the payload. The serialized value was also not 100% correct as the value should be the amount of cookies and not the default value of int. This isn't a breaking change as netfx doesn't use the value anymore for any operations. But with the change it's now always in the serialization payload. +21509 area-System.Net ManagedWebSocket needs resource strings Everything has TODO: ``` System.Net.WebSockets.WebSocketException (0x80004005): TODO, RESX: net_WebSockets_InvalidState; (CloseSent,Open, CloseReceived) at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.SendAsync(ArraySegment`1 buffer, WebSocketMessageType messageType, Boolean endOfMessage, CancellationToken cancellationToken) ``` +21510 area-System.Net HttpClientHandler.UseDefaultCredentials default value different on UAP "HttpClientHandler.UseDefaultCredentials should default to FALSE. On UAP, it is currently returning TRUE. Using default credentials on UAP also requires EnterpriseAuthentication capability on the UWP App, which is a capability that only certain approved Windows Store app developers can put onto their app. Usually this is allowed for developers with corporate Windows Store developer accounts (instead of individual). So, the flag 'UseDefaultCredentials' isn't really the only thing controlling whether default credentials actually gets sent. Also, regardless, default credentials are only sent along to endpoints that are considered ""intranet"". This is controlled automatically by the WinRT Windows.Web.Http APIs via the native Windows WinInet HTTP stack. For consistency with the other platforms, this #property should return FALSE by default. However, we already shipped the default of TRUE in prior UAP packages, so we should consider whether we should change this." +21511 area-System.Net Fix some HttpClientHandler properties for UAP Due to platform differences on UAP and the current use of WinRT APIs to implement that HTTP stack, a few properties won't have the same defaults or behavior. Similar to the decision made in PR #21403, don't throw PNSE. Instead just no-op. Fixes #18036 #17812 +21515 area-Infrastructure Can't run UAP and non UAP tests serially because wrong remoteeexcutor is used CoreFx.Private.TestUtilities.dll is target framework specific (there is a separate binary for UAP, UAPAOT, netcore, and netfx). However it gets copied only once to the test folder. So eg. if I run UAP tests for console, using /p:targetgroup=uap, I get the UAP one in my test folder: C:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Console.Tests\netstandard\CoreFx.Private.TestUtilities.dll then if I try to run tests again, without /p:targetgroup=uap, the tests fail because it's trying to use the UAP copy of it. This binary comes from the test package (xunit.runtime.depproj) and I'm unsure how to modify that to fix it. @tarekgh / @weshaggard ? +21518 area-System.Console Fix occasional 'The data area passed to a system call is too small.' When running Console tests on one of my machines I sometimes get this error when it tries to get a console title of >1000 characters. GetConsoleTitle, is supposed to return the length of the buffer it wants, but sometimes instead it returns 0 and ERROR_INSUFFICIENT_BUFFER. I don't know why: I found mention on the web of this also. To fix this, in such a case, progressively try larger buffers until we hit our limit or it works. This makes the test pass on my laptop. Also I added +1 when we pass in the length of the StringBuilder. @JeremyKuhne pointed out (also documented [here](https://docs.microsoft.com/en-us/dotnet/framework/interop/default-marshaling-for-strings)) that .Capacity does not include the trailing null that the marshaler includes in the buffer it passes to the native call. +21520 area-Infrastructure AttributeError: DumplingConfig instance has no attribute 'dbgpath' "https://mc.dot.net/#/user/hughbe/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/a808e4f4bb61ed8002200c969d132a54769b2328/workItem/System.Runtime.InteropServices.Tests/wilogs ``` 2017-06-25 06:28:18,063: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/dd100005-e671-46fb-892b-4e743335ba82/Work/10f58f6f-862f-44af-9628-ca1652b6bf2e/Unzip/RunTests.sh: line 87: 2365 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-25 06:28:47,204: INFO: proc(54): run_and_log_output: Output: processing dump file /home/helixbot/dotnetbuild/work/dd100005-e671-46fb-892b-4e743335ba82/Work/10f58f6f-862f-44af-9628-ca1652b6bf2e/Unzip/core 2017-06-25 06:28:47,204: INFO: proc(54): run_and_log_output: Output: creating dumpling dump cf4c07f3f46a55e83f477e7c7164bcf510fa4343 2017-06-25 06:28:47,204: INFO: proc(54): run_and_log_output: Output: uploading artifact cf4c07f3f46a55e83f477e7c7164bcf510fa4343 core 2017-06-25 06:28:47,204: INFO: proc(54): run_and_log_output: Output: Traceback (most recent call last): 2017-06-25 06:28:47,204: INFO: proc(54): run_and_log_output: Output: File ""/home/helixbot/.dumpling/dumpling.py"", line 1128, in 2017-06-25 06:28:47,205: INFO: proc(54): run_and_log_output: Output: main(sys.argv) 2017-06-25 06:28:47,205: INFO: proc(54): run_and_log_output: Output: File ""/home/helixbot/.dumpling/dumpling.py"", line 1123, in main 2017-06-25 06:28:47,205: INFO: proc(54): run_and_log_output: Output: cmdProc.Process(config) 2017-06-25 06:28:47,205: INFO: proc(54): run_and_log_output: Output: File ""/home/helixbot/.dumpling/dumpling.py"", line 529, in Process 2017-06-25 06:28:47,205: INFO: proc(54): run_and_log_output: Output: self.Upload(config) 2017-06-25 06:28:47,206: INFO: proc(54): run_and_log_output: Output: File ""/home/helixbot/.dumpling/dumpling.py"", line 624, in Upload 2017-06-25 06:28:47,206: INFO: proc(54): run_and_log_output: Output: self.UploadDump(config) 2017-06-25 06:28:47,206: INFO: proc(54): run_and_log_output: Output: File ""/home/helixbot/.dumpling/dumpling.py"", line 644, in UploadDump 2017-06-25 06:28:47,206: INFO: proc(54): run_and_log_output: Output: self._triage_dump(dumpid, config.dumppath, config) 2017-06-25 06:28:47,206: INFO: proc(54): run_and_log_output: Output: File ""/home/helixbot/.dumpling/dumpling.py"", line 812, in _triage_dump 2017-06-25 06:28:47,206: INFO: proc(54): run_and_log_output: Output: if config.dbgpath is None: 2017-06-25 06:28:47,207: INFO: proc(54): run_and_log_output: Output: AttributeError: DumplingConfig instance has no attribute 'dbgpath' 2017-06-25 06:28:47,219: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-25 06:28:47,219: INFO: proc(54): run_and_log_output: Output: Uploading dump file: /home/helixbot/dotnetbuild/work/dd100005-e671-46fb-892b-4e743335ba82/Work/10f58f6f-862f-44af-9628-ca1652b6bf2e/Unzip/core 2017-06-25 06:28:47,224: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/dd100005-e671-46fb-892b-4e743335ba82/Work/10f58f6f-862f-44af-9628-ca1652b6bf2e/Unzip ``` @mellinoe " +21524 area-System.Drawing Add LinearGradientBrush tests Had this one lying around for a week or so but it can now be sent in without pesky merge conflicts +21525 area-Infrastructure Dumpling can't find dumps on some Linux distros eg suse and fedora 25. It says ` (core dumped) ` but where is it? https://mc.dot.net/#/user/danmosemsft/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/575ab2eecbb50ef3f8978cc2d6bebc13ec045002/workItem/System.Runtime.InteropServices.Tests/wilogs ``` 2017-06-25 07:52:48,811: INFO: proc(54): run_and_log_output: Output: Finished: System.Runtime.InteropServices.Tests 2017-06-25 07:52:49,390: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip/RunTests.sh: line 87: 23380 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-25 07:52:49,430: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-25 07:52:49,431: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip 2017-06-25 07:52:49,433: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip 2017-06-25 07:52:49,434: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=07:52:49. Return value was 139 2017-06-25 07:52:49,436: INFO: proc(58): run_and_log_output: Exit Code: 139 ``` @mellinoe +21526 area-System.Runtime System.Runtime.InteropServices.Tests segfaulting on some Linux So far Fedora 25 and Suse https://mc.dot.net/#/user/danmosemsft/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/575ab2eecbb50ef3f8978cc2d6bebc13ec045002/workItem/System.Runtime.InteropServices.Tests/wilogs Unfortunately we aren't getting dumps. But it's happened several times on one PR. ``` 2017-06-24 23:37:59,432: INFO: proc(54): run_and_log_output: Output: Starting: System.Runtime.InteropServices.Tests 2017-06-24 23:38:00,184: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/4f944e98-7c0d-4ef5-af27-296b5e3e76a7/Work/66044e6b-eaf9-4f01-97f9-f1ffbd73a701/Unzip/RunTests.sh: line 87: 3291 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-24 23:38:00,214: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-24 23:38:00,214: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/4f944e98-7c0d-4ef5-af27-296b5e3e76a7/Work/66044e6b-eaf9-4f01-97f9-f1ffbd73a701/Unzip ``` +21528 area-System.Net HttpClienthandler code cleanup for UAP This file had never been formatted according to CoreFx style guidelines when the code was first ported into GitHub. Now that we are doing NETStandard2.0 work, I wanted to clean up this file to avoid distractions as I add features. +21530 area-System.Data Large performance gap in SqlCommand.ExecuteNonQuery between net461 and netcoreapp "Sharing the following code on a full framework net461 Console application and a netcoreapp Console app, I am seeing huge gaps in performance when executing `SqlCommand.ExecuteNonQuery` with `SqlConnection`. It doesn't matter if I use it within a transaction or not. public async Task AddDataWithADO(int id, string name) { SqlConnection connection = this.transaction.Connection; SqlCommand command = new SqlCommand(""INSERT INTO TestTable ( Id, Name ) VALUES ( @Id, @name )"", connection, this.transaction); command.Parameters.AddWithValue(""@id"", id); command.Parameters.AddWithValue(""@name"", name); await command.ExecuteNonQueryAsync(); } When I run this on my local machine against a LocalDb, I see an average insertion time of 19.89ms in netcoreapp1.0 and 1.1. When I run the same code in full framework net461, then I see insertion times of 0.83ms. It's a shared NetStandard1.4 class library with a reference to `System.Data.SqlClient` 4.3.1. My current .Net Core runtime is 1.1.0 I was moving my Azure Functions which ran on net461 over to ASP.net Core when I saw this gap. Why is there such a huge difference in performance? I have a repro repository that you can look at here (originally thought this was [a Dapper issue](https://github.com/StackExchange/Dapper/issues/810), turned out to be ADO.Net): https://github.com/scionwest/DapperRepro/tree/ADO_net_issue You can publish the Sql database project that's in the solution to a LocaLDb and then run the two console apps to see the difference." +21531 area-System.Net Re-enable some System.Net.Mail tests for UAPAOT With the recent implementation of System.Net.NetworkInformation for UWP, we can re-enable some tests. Also, the latest plan of record for serialization support in .NET Core is such that serializing these exception types are not supported. So, removing the test for that. FYI, the actual implementation of the serialization overrides in the SmtpException class are already no-ops in the code and simply call the base method. Fixes #19604 +21532 area-System.Net Disable WinHttpHandler tests on UAP/UAPAOT System.Net.Http.WinHttpHandler is only meant for use on .NET Framework and .NET Core but not for UWP apps. Fixes #21438 +21533 area-System.Net Announcement: Networking stack - Technical roadmap See https://github.com/dotnet/designs/issues/9 +21534 area-System.ComponentModel ForeignKeyAttribute: can we have a params string[] constructor? Since C# 6, we have the `nameof` operator which makes it great to pass the names of properties, methods, types, and so forth into attributes. The `ForeignKeyAttribute`, however, requires us to pass in a comma-separated string to specify multiple property names. Could we have a new constructor that accepts a `params string[]` and performs the concatenation, so that we can cleanly use the `ForeignKeyAttribute` with `nameof` to specify multiple names? +21537 area-System.Net Add WebSocket.CreateFromConnectedStream Several corefx components pull in the internal [ManagedWebSocket implementation](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs), both System.Net.WebSockets.Client on Unix and System.Net.HttpListener on Unix, and with https://github.com/dotnet/corefx/issues/9503 the plan is to use it in System.Net.WebSockets.Client on Windows 7 as well. Plus, ASP.NET uses the same implementation, via [source cloning](https://github.com/aspnet/WebSockets/blob/dev/src/Microsoft.AspNetCore.WebSockets/Internal/fx/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs). We should stop building this multiple times and instead expose it out through an API that anyone can use to wrap an established stream for a websockets connection. ```C# public abstract class WebSocket { public static WebSocket CreateFromConnectedStream( Stream stream, bool isServer, string subprotocol, TimeSpan keepAliveInterval, int receiveBufferSize, ArraySegment? receiveBuffer = null); ... } ``` Related to https://github.com/dotnet/corefx/issues/13663#issuecomment-265879275 Related to https://github.com/dotnet/corefx/issues/21509#issuecomment-310862176 Once this is added, we can stop compiling it into the various projects and just use the exposed API. Alternative: WebSocket currently exposes the following API: ```C# [EditorBrowsable(EditorBrowsableState.Never)] public static WebSocket CreateClientWebSocket(Stream innerStream, string subProtocol, int receiveBufferSize, int sendBufferSize, TimeSpan keepAliveInterval, bool useZeroMaskingKey, ArraySegment internalBuffer) ``` We could remove that EditorBrowsable(Never) and add a corresponding CreateServerWebSocket API. Both would effectively use CreateFromConnectedStream, just with a different value for isServer. However, it's not clear we could overload the meaning of CreateClientWebSocket in corefx to be what we need, given its current semantics on desktop, in particular as on desktop it uses WPSC and is documented as such. EDIT 9/26/2017: ```C# // System.Net.WebSockets.Protocol.dll, with a netstandard2.0 build // (and subsequently specialized for netcoreapp2.1) namespace System.Net.WebSockets { public static class WebSocketProtocol { public static WebSocket CreateFromConnectedStream( Stream stream, bool isServer, string subprotocol, TimeSpan keepAliveInterval, int receiveBufferSize, int sendBufferSize, // hints as to desired size ArraySegment? buffer = null); // buffer space to use however the implementation wants } } ``` +21539 area-System.Security .net 4.6.2 signedXml.CheckSignature(); problem with rsa2 "_From @zchpit on June 21, 2017 12:24_ After upgrade to .net 4.6.2 I have problem with signedXml.CheckSignature(); with RSA2 For signing I use CryptoConfig.AddAlgorithm(typeof(RSAPKCS1SHA256SignatureDescription), ""http://www.w3.org/2001/04/xmldsig-more#rsa-sha256""); It works on my machine but don't work on test serwer. Error: System.Security.Cryptography.CryptographicException SignatureDescription could not be created for the signature algorithm supplied. at System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) at System.Security.Cryptography.Xml.SignedXml.CheckSignature(AsymmetricAlgorithm key) at System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm& signingKey) at ePR.Biz.Security.Signature.Veryfier.EprDsigSimpleVerifier.VerifyXml(XmlDocument doc, X509Certificate2& cert) at ePR.Biz.Security.Signature.Veryfier.EprDsigSimpleVerifier.Verify(FileContentInfo fci, X509Certificate2& cert, String& stringSignature) at ePR.Biz.Security.Signature.SignatureManager.ValidateSignatureCore(ISignatureVeryfier veryfier, FileContentInfo fci) at ePR.Biz.Security.Signature.SignatureManager.ValidateSignature(XmlDocument doc) P.S. In my comuper I work as administator and run as Console App., in test serwer there is custom profile created and run as a Windows Service _Copied from original issue: Microsoft/dotnet#430_" +21540 area-System.Net Update uri correctly in BypassOnLocal_MemberData uri is always null as it is not updated. +21541 area-System.Runtime Test failure: System.Tests.StringTests/IndexOf_TurkishI on UAP Opened on behalf of @danmosemsft ``` The test `System.Tests.StringTests/IndexOf_TurkishI` has failed. RemoteExecuter: System.Runtime.Tests, Version=4.2.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb b__45_0 \r System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Xunit.Sdk.EqualException: Assert.Equal() Failure\r Expected: 19\r Actual: 4\r at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer)\r at System.Tests.StringTests.<>c.b__45_0()\r --- End of inner exception stack trace ---\r at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)\r at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)\r at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)\r at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData)\r Returned Error code: -4\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.Tests.StringTests.IndexOf_TurkishI() Build : Master - 20170626.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug ``` +21544 area-Infrastructure Update Xunit.Netcore.Extensions version to get new UapNotUapAot TFM To ingest: https://github.com/dotnet/buildtools/pull/1583 Fixes: https://github.com/dotnet/corefx/issues/20349 Thanks @danmosemsft for taking care of adding the new TFM. +21547 area-System.Text "No test result generated under ""System.Text.RegularExpressions.Tests"" on UWP F5 tests" "No test result generated under ""System.Text.RegularExpressions.Tests"" on UWP F5 tests Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170626.01/workItem/System.Text.RegularExpressions.Tests/wilogs COnfigurations: Windows.10.Amd64.ClientRS3-x86:Debug Windows.10.Arm64-arm:Debug Windows.10.Arm64-arm:Release ~~~ 2017-06-26 01:02:46,563: INFO: proc(54): run_and_log_output: Output: Got manifest file appxmanifest.xml 2017-06-26 01:02:46,611: INFO: proc(54): run_and_log_output: Output: Removing any previous installation... 2017-06-26 01:02:46,611: INFO: proc(54): run_and_log_output: Output: Installing the application... 2017-06-26 01:02:47,361: INFO: proc(54): run_and_log_output: Output: Package ID is 5cd54353-3ed7-4a6e-a72f-db349f28867c_1.0.0.0_x86__v52bfwc2c21ha 2017-06-26 01:02:47,375: INFO: proc(54): run_and_log_output: Output: Starting the application... 2017-06-26 01:02:47,375: INFO: proc(54): run_and_log_output: Output: Resolved Folder Path: C:\Users\DotNetTestRunner\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\ 2017-06-26 01:02:47,625: INFO: proc(54): run_and_log_output: Output: Waiting for the application to exit... ~~~" +21548 area-System.Console "Test: NegativeTesting/OpenStandardErrorNegativeTests_Uap failed with ""Xunit.Sdk.SameException""" Opened on behalf of @Jiayili1 The test `NegativeTesting/OpenStandardErrorNegativeTests_Uap` has failed. Assert.Same() Failure\r Expected: $BlockedFromReflection_1_5dff0413 { CanRead = True, CanSeek = True, CanTimeout = False, CanWrite = True, Length = 0, ... }\r Actual: $BlockedFromReflection_0_931ac17f { CanRead = False, CanSeek = False, CanTimeout = False, CanWrite = True, Length = (throws NotSupportedException), ... } Stack Trace: at NegativeTesting.OpenStandardErrorNegativeTests_Uap() at xunit.console.netcore!+0x90f108 at xunit.console.netcore!+0x7c89ac at xunit.console.netcore!+0x7c8804 Build : Master - 20170626.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170626.01/workItem/System.Console.Tests/analysis/xunit/NegativeTesting~2FOpenStandardErrorNegativeTests_Uap +21549 area-System.Net Timeouts with SslStream are fatal [The documentation for SslStream](https://docs.microsoft.com/en-us/dotnet/api/system.net.security.sslstream?view=netcore-2.0) contains the following sentences: ``` SslStream assumes that a timeout along with any other IOException when one is thrown from the inner stream will be treated as fatal by its caller. Reusing a SslStream instance after a timeout will return garbage. An application should Close the SslStream and throw an exception in these cases. ``` Consider modifying to SslStream to treat timeouts as non-fatal, like a normal NetworkStream - there are various scenarios where network timeouts can be (relatively) normal events and reconnecting the socket after them is a heavy and unwieldy workaround. +21550 area-System.Net Consider adding SslStream.DataAvailable NetworkStream provides a [DataAvailable property](https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.networkstream.dataavailable?view=netcore-2.0#System_Net_Sockets_NetworkStream_DataAvailable) which allows non-blocking style usage by examining whether a read would block. Consider providing the same for SslStream. +21552 area-System.Drawing Add FontFamily and FontCollection tests +21554 area-System.Diagnostics System.Diagnostics.Tests.StackTraceTests failed with Xunit.Sdk.NullException detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_debug/96/testReport/System.Diagnostics.Tests/StackTraceTests/Ctor_SkipFrames_FNeedFileInfo_skipFrames__0__fNeedFileInfo__True_/ MESSAGE: ~~~ Assert.Null() Failure Expected: (null) Actual: D:\\j\\workspace\\outerloop_net---92764178\\src\\System.Diagnostics.StackTrace\\tests\\StackTraceTests.cs ~~~ STACK TRACE: ~~~ at System.Diagnostics.Tests.StackTraceTests.VerifyFrames(StackTrace stackTrace, Boolean hasFileInfo) in D:\j\workspace\outerloop_net---92764178\src\System.Diagnostics.StackTrace\tests\StackTraceTests.cs:line 375 at System.Diagnostics.Tests.StackTraceTests.Ctor_SkipFrames_FNeedFileInfo(Int32 skipFrames, Boolean fNeedFileInfo) in D:\j\workspace\outerloop_net---92764178\src\System.Diagnostics.StackTrace\tests\StackTraceTests.cs:line 94 ~~~ failed test: System.Diagnostics.Tests.StackTraceTests.Ctor_SkipFrames_FNeedFileInfo System.Diagnostics.Tests.StackTraceTests.Ctor_ThrownException_GetFramesReturnsExpected System.Diagnostics.Tests.StackTraceTests.Ctor_FNeedFileInfo System.Diagnostics.Tests.StackTraceTests.Ctor_Exception_SkipFrames_FNeedFileInfo System.Diagnostics.Tests.StackFrameTests.Ctor_FNeedFileInfo System.Diagnostics.Tests.StackFrameTests.Ctor_SkipFrames_FNeedFileInfo +21555 area-System.Xml "Test: CoreXml.Test.XLinq.FunctionalTests/RunTests failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `CoreXml.Test.XLinq.FunctionalTests/RunTests` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at Microsoft.Test.ModuleCore.TestException.ToString() at System.IO.TextWriter.WriteLine(Object value) at xunit.console.netcore!+0xf4b5c7 at xunit.console.netcore!+0xd52e93 at Microsoft.Test.ModuleCore.TestCase.Execute() at Microsoft.Test.ModuleCore.TestCase.Execute() at Microsoft.Test.ModuleCore.TestModule.Execute() at CoreXml.Test.XLinq.FunctionalTests.RunTests() at xunit.console.netcore!+0xe01e78 at xunit.console.netcore!+0xb43dec at xunit.console.netcore!+0xb43c44 Build : Master - 20170626.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170626.01/workItem/System.Xml.Linq.xNodeBuilder.Tests/analysis/xunit/CoreXml.Test.XLinq.FunctionalTests~2FRunTests +21556 area-System.Runtime System.Tests.Perf_String.Contains failed in CI failed test: System.Tests.Perf_String.Contains detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_centos7.1_release/89/testReport/System.Tests/Perf_String/Contains_comparisonType__CurrentCultureIgnoreCase__size___10__/ MESSAGE: ~~~ System.ArgumentException : Object of type 'System.Object[]' cannot be converted to type 'System.Int32'. ~~~ STACK TRACE: ~~~ at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig) at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Xunit.Performance.BenchmarkTestInvoker.<>c__DisplayClass1_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Xunit.Performance.Internal.BenchmarkIterator.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +21557 area-Infrastructure Update 'debugging using vscode' doc "The documentation on debugging using vscode is a bit out-dated and can be improved: https://github.com/dotnet/corefx/blob/master/Documentation/debugging/unix-instructions.md#using-visual-studio-code > Open the folder containing the source you want to debug in VS Code Can this be the toplevel corefx folder? Or does this need to be a folder with a csproj? Is debugging limited to source code in that folder? > set program to the full path to corerun in the test directory There is no corerun in the test directory. > set args to the command line arguments to pass to the test something like: [ ""xunit.console.netcore.exe"", "".dll"", ""-notrait"", .... ] An example launch configuration (e.g. for Linux including typical traits) would be nice." +21558 area-System.Drawing [porting] PrivateFontCollection has different argument validation in netfx and netcoreapp "```cs [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void AddFontFile_NullFileName_ThrowsArgumentNullException() { using (var fontCollection = new PrivateFontCollection()) { AssertExtensions.Throws(""path"", () => fontCollection.AddFontFile(null)); } } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void AddFontFile_InvalidPath_ThrowsArgumentException() { using (var fontCollection = new PrivateFontCollection()) { AssertExtensions.Throws(null, () => fontCollection.AddFontFile(string.Empty)); } } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void AddFontFile_NoSuchFilePath_ThrowsArgumentException() { using (var fontCollection = new PrivateFontCollection()) { Assert.Throws(() => fontCollection.AddFontFile(""fileName"")); } } [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void AddFontFile_LongFilePath_ThrowsPathTooLongException() { using (var fontCollection = new PrivateFontCollection()) { Assert.Throws(() => fontCollection.AddFontFile(new string('a', 261))); } } ``` These tests pass with netfx. On .NET core, they fail with: ``` Discovering: System.Drawing.Common.Tests Discovered: System.Drawing.Common.Tests Starting: System.Drawing.Common.Tests System.Drawing.Tests.BrushTests.Dispose_NoSuchEntryPoint_SilentyCatchesException [SKIP] Condition(s) not met: \""IsWindowsNanoServer\"" System.Drawing.Text.Tests.PrivateFontCollectionTests.AddFontFile_InvalidPath_ThrowsArgumentException [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: typeof(System.IO.FileNotFoundException): File not found. Stack Trace: at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status) at System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename) at System.Drawing.Text.Tests.PrivateFontCollectionTests.<>c__DisplayClass3_0.b__0() System.Drawing.Text.Tests.PrivateFontCollectionTests.AddFontFile_LongFilePath_ThrowsPathTooLongException [FAIL] Assert.Throws() Failure Expected: typeof(System.IO.PathTooLongException) Actual: typeof(System.IO.FileNotFoundException): File not found. Stack Trace: at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status) at System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename) at System.Drawing.Text.Tests.PrivateFontCollectionTests.<>c__DisplayClass5_0.b__0() System.Drawing.Text.Tests.PrivateFontCollectionTests.AddFontFile_NullFileName_ThrowsArgumentNullException [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentNullException) Actual: typeof(System.ArgumentException): Parameter is not valid. Stack Trace: at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status) at System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename) at System.Drawing.Text.Tests.PrivateFontCollectionTests.<>c__DisplayClass2_0.b__0() System.Drawing.Printing.Tests.PageSettingsTests.Clone_Success [SKIP] Condition(s) not met: \""AnyInstalledPrinters\"" Finished: System.Drawing.Common.Tests ```" +21559 area-System.Net `SystemUri.Compare` requires query string parameters to be in the same order. "**The Issue** When comparing two URIs, we get a non-zero result if two URIs are functionally identical, but with query string parameters ordered differently. For example: ```c# var uriComponentsOptions = UriComponents.AbsoluteUri; var uriFormatOptions = UriFormat.SafeUnescaped; var stringComparisonOptions = StringComparison.OrdinalIgnoreCase; var uriX = ""https://example.com/demo?param1=abc¶m2=xyz""; var uriY = ""https://example.com/demo?param2=xyz¶m1=abc""; //calling this URI would have the same affect as calling the above var result = Uri.Compare(uriX, uriY, uriComponentsOptions, uriFormatOptions, stringComparisonOptions); //yet this returns a non-zero value ``` **Suggestion** It would be helpful if there were a value for [UriComponents](https://msdn.microsoft.com/en-us/library/7767559y(v=vs.110).aspx) called `QueryIgnoreOrder` (or equivalent), allowing the query string of the URL to be compared without taking the order of the parameters into account. **Use Case** In automated test code, sometimes we need to compare URIs to ensure the correct URI is being generated. However, we don't care about the order of the parameters there, since that has no functional impact. We could code our tests to use fixed orders, but this would mean that any change to our code which altered that order would break our unit tests, creating more work to recode those strings for no real benefit. Currently I have this scenario / have had to code a workaround where my tests sort the parameters in key order before making a comparison (see https://stackoverflow.com/questions/44751296/uri-comparer-ignoring-query-string-order/44757683#44757683); but I'd hope that this would be something offerred by the .Net framework itself, as it feels a fairly common scenario / one of the key benefits of using Uri's Compare over a string comparison. Related Method: https://github.com/dotnet/corefx/blob/7df6b74cc4aeebc86e76b5c7901a59fa7fa793f6/src/System.Private.Uri/src/System/UriExt.cs" +21560 area-System.Drawing Fix invalid icon tests Fixes #21360 Firstly, generate a random handle first - this gives us 4 billion different values of the handle instead of the 1 previously. But if we're *really* unlucky, then keep going and repeat 100 times. Quite simply, if my analysis of the cause of the issue is correct, this should never fail. +21564 area-Serialization SQLString adding missing typeforward to correctly serializable blobs … …between netfx and core This wasn't failing before during deserialization with netfx461 because we had a System.Data.Common.dll with the respective type in our runtime folder: `~\corefx\bin\testhost\netfx-Windows_NT-Debug-x64`. This was the only failing test for netfx451! +21565 area-Serialization Release/2.0.0 sanity blobs and sql string This is the last planned part of serialization changes for 2.0. ## Production code changes - CookieCollection serialization field - SqlString TypeForward attribute for enum ## Other code changes - Enable sanity check for blobs. This will help us in the future to guarantee that our defined core types stay serializable as their integrity gets tested in CI. +21566 area-System.Runtime Two fixes to System.Runtime.Tests.dll "- The already weakened interning guarantees on AoT are even weaker on multifile builds. There's more than one literal empty string. - Compare_LongString test Test is called the ""Compare_LongString"" test, not the ""CanYourTextEditorHandleRidiculouslyLongLines"" test. VS IDE testing is on the other side of the street..." +21568 area-System.Net New HttpClient API design Following the discussion here https://github.com/dotnet/designs/issues/9 there are several issues with current `HttpClient` implementation. The idea with this issue is to discuss the design of a proposed _new_ implementation and API surface for `HttpClient` as part of the original issue. Some points discussed on that issue: 1. There are 2 different implementations of `HttpClient`. One on Windows (based on WinHttp) and other on *NIX world (based on libcurl) 2. It does not release all resources right away as most of people expect by a class implementing `IDisposable` (the TCP socket still leaking for a while by default for 240s due to `TIME_WAIT` state which makes you run out of available socket connections under high load) 3. There could be a internal pool similar to what exist in `SqlConnection`. However, it would probably hit worse issues with DNS cache, since it is managed by the OS networking stack and this implementation try to be 100% managed on top of the new *Foundation* layer proposed on the previous issue. +21569 area-System.Console Fix negative testing in System.Console.Tests Fixes https://github.com/dotnet/corefx/issues/21548 Stream.Null is supposed to be deaf, dumb and mute: https://msdn.microsoft.com/en-us/library/system.io.stream.null(v=vs.110).aspx and it is across CoreCLR, Desktop and N. Also, the test disabling attributes didn't match the stated intent in the comments. +21570 area-System.Net Make NetworkStream compatible with non-blocking I/O The predominant way to perform I/O is async. However, in some scenarios non-blocking I/O (or polling) is better adapted - the ability to read or write as much as possible, along with a guarantee that the call would not block. This allows retaining a very deterministic, single-thread model where I/O occurs opportunistically where the application chooses, rather than launching an asynchronous operation that may occur in parallel with other processes, require synchronization etc. Note that non-blocking is quite a common pattern in Unix (but not in Windows, which may explain the lack of support in .NET). Non-blocking I/O is currently supported at the Socket level by setting Blocking to true, and then calling Send and Receive. However, trying to construct a NetworkStream over a non-blocking socket throws an IOException (`The operation is not allowed on a non-blocking Socket`). Note that .NET's `Stream.Write()` returns void (unlike the [Linux write system call](http://man7.org/linux/man-pages/man2/write.2.html)). This probably means that the introduction of a new API element would be required to support non-blocking *writing*. +21571 area-Infrastructure Enabling CI for UWP F5 runs cc: @weshaggard @mmitche @danmosemsft @safern Now that our UWP F5 test run is clean, we are ready for adding this CI leg for uap tests. The only thing missing now is that the actual open target queue for ClientRS2 doesn't exist yet, but should be created very soon. Once that queue is ready, this PR will be ready to merge. +21572 area-System.Net Re-enable some socket tests, and delete some dead code Re-enable tests since #21158 has been fixed. I found that there are more dead code should be removed with PR #21486. +21574 area-System.Net improve SslStream read buffering SslStream is currently reading from the underlying stream piece-wise; that is, it first does a 5 byte read to get the frame header, then a second read to get the frame body, whose size is defined in the header. This results in multiple kernel calls to receive socket data. Add some smarter read buffering logic to improve this. Now, we try to read as much as we can at once into the read buffer, and then process it until we run out of data. Contributes to #21371 @stephentoub @CIPop +21575 area-System.Runtime Fix System.Tests.Perf_String.Contains Fix #21556 +21576 area-System.Net Fix some more low-hanging fruit in ManagedHandler - Setting the Host header in the request object incurs a variety of allocations. We can skip that and just write the header directly to the output. - Rather than writing strings char by char, if the whole string fits in the output buffer, we can just store the chars rather than doing an async write for each. - Use cached header name strings, reason phrases, and some value strings, rather than always allocating a string for each - Remove several of the intermediary async methods in the handler chain (though we should really try to remove them all... SendAsync is pretty much always going to yield, so this is adding measurable allocations on every call, even if it results in cleaner code) - Use ContinueWith instead of async/await in a few places where ContinueWith results in less allocation - Clean up the ManagedHandler class a bit, including ensuring arg validation is happening the same as in CurlHandler - Fix several issues from the initial PR feedback cc: @geoffkizer +21577 area-System.Net HttpClient: Add API to change cipher suites offered in SSL/TLS handshake Depends on SslStream API proposal: #24588 Re-opening a previously closed issue (https://github.com/dotnet/corefx/issues/15157) with a supporting use case. For US government compliance (FIPS, CNSA, etc), the set of allowed ciphers over TLS is mandated. There does not seem to be any mechanism for .NET Core on Linux to adjust the cipher suite offered when using HttpClient and friends, and therefore .NET Core cannot currently be used in most government installations. This is a key blocker to adoption for us. [EDIT] Add dependency on SslStream issue by @karelz +21579 area-System.Reflection Added GetCustomAttributes method to ModuleInfo (#20345) Adds `ModuleInfo.GetCustomAttributes` method according to approved API in #20345. Closes #20345. @tmat i guess you will review :) +21580 area-System.Runtime Disable GetActivationFactory negative test on UAPAOT We dont have a way to check if a type is WinRT reliably in AOT without reflection enabling the type in question. @yizhang82 +21584 area-System.Net Fix use of Cookie.InternalSetName The System.Net.Primitives UAPAOT test run was failing in SetCookies_InvalidData_Throws. The reflection wasn't working as expected. However, this same CookieParser.cs file is included in the System.Net.HttpListener library. And that reflection was working. It seems that reflecting on a type (Cookie) from within the same library (System.Net.Primitives) doesn't work from another type in that same library (CookieParser). It turns out that we can optimize this anyways and not use reflection when the file is included directly in System.Net.Primitives. Fixes #20482 +21585 area-System.Threading ReaderWriterLockSlim.AcquireWriterLock timing out does not wake up waiting readers in uapaot related issue: #3364 cc: @kouvel corefx test ReleaseReadersWhenWaitingWriterTimesOut is hanging in uapaot test runs causing our ARM machines (which are physical machines) to hang forever. It's very possible that this issue is simply some change that was made to coreclr that fixed this and needs to be mirrored to corert. This issue is to track the work of fixing and enabling that test once its fixed. +21587 area-System.Net Remove outdated TODO in HttpClientHandler for UAP "The current behavior for .NET Core (Windows, *Nix, and UAP) is to use a default HTTP version if none or an illegal version is specified on the HttpRequestMessage.Version On .NET Framework, an exception is thrown in these cases, ""Only HTTP/1.0 and HTTP/1.1 version requests are currently supported."" This error message wouldn't make sense now anyways since HTTP/2 is supported in .NET Core. So, it is better to use a default version than to throw an exception. This difference between .NET Core and .NET Framework will be document here: https://github.com/dotnet/corefx/wiki/ApiCompat Fixes #7878" +21588 area-System.IO Read-only delete fix for Linux. Fixed error with read-only file system, non-existing files being deleted. Tested manually, automated tests in progress. cc @akoeplinger Addresses issue #21273 +21589 area-System.Drawing Standardize all XML comments in System.Drawing & minor formatting fixes "This is part of #20706 > * Clean up the formatting of the XML doc comments. They are using some defunct syntax that doesn't work or make sense anymore. > * Normalize comment style (lots of weird ""block-style"" header comments, weird comment spacing, etc.) This was a very rote cleanup. I just went through all of the files and did the following: * Change all XML comments to be of normal form, with `` tags, etc. There were a TON of comments that were empty, or just contained junk. I removed those. Others were of the correct form, but were formatted really strangely -- I fixed those up, too. * Removed duplicate comments. There were lots of comments right above the XML comment blocks which essentially said the exact same thing. I just removed these when I saw them. * Inside methods: cleaned up weird comment blocks where I saw them, deleted useless comments, empty comments, etc. * As I went, I also moved the ""using"" blocks up outside of the namespace, like all of the other files in corefx. This isn't related to the comments -- I just figured I would clean that up at the same time. There are no functional changes here. This is all code style cleanup. @hughbe @stephentoub Could you give this a quick look over? I know that it is quite large, but the changes are all very straightforward and formulaic. I've only touched comment blocks, so I don't think the entire thing needs to be examined, just a small section to make sure it looks reasonable." +21590 area-System.Drawing Delete PrintingPermission code from Drawing.Common. This code is already in S.Security.Permissions, and isn't even being compiled into the System.Drawing.Common assembly. Part of #20706 +21591 area-Infrastructure Adding Amazon Linux to the Runtime IDs I'd like to add Amazon Linux to list of Runtime IDs (RID). What are the steps to achieve this? 1. Does adding new Amazon Linux RIDs in [runtime.json](https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json) suffice? Are there any other steps involved? 2. The logic to create the RID string for a given Linux distro resides here in corehost [pal::get_current_os_rid_platform](https://github.com/dotnet/core-setup/blob/master/src/corehost/common/pal.unix.cpp#L295) , is that correct? @Petermarcu, this is based on the discussion you and @normj had at NDC Oslo. +21594 area-System.Console Reenable some console tests on rs3 Fixes: https://github.com/dotnet/corefx/issues/21483 +21595 area-System.Net Enable some System.Net.Requests tests for UAP/UAPAOT Tests that use RemoteExecutor are now working on both UAP and UAPAOT. Contributes to #20136 +21597 area-System.IO "Test: System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests/PropertiesOfValidDrive failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests/PropertiesOfValidDrive` has failed. Assert.Equal() Failure Expected: Fixed Actual: Unknown Stack Trace: at System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests.PropertiesOfValidDrive() in /Users/buildagent/agent/_work/78/s/corefx/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Unix.Tests.cs:line 67 Build : Master - 20170627.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170627.01/workItem/System.IO.FileSystem.DriveInfo.Tests/analysis/xunit/System.IO.FileSystem.DriveInfoTests.DriveInfoUnixTests~2FPropertiesOfValidDrive +21598 area-System.Data Test failure: System.Data.SqlClient.Tests.SqlConnectionBasicTests/IntegratedAuthConnectionTest Opened on behalf of @danmosemsft The test `System.Data.SqlClient.Tests.SqlConnectionBasicTests/IntegratedAuthConnectionTest` has failed. System.DllNotFoundException : Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.Data.SqlClient.SNINativeMethodWrapper.UnmanagedIsTokenRestricted(IntPtr token, Boolean& isRestricted) at System.Data.Win32NativeMethods.IsTokenRestrictedWrapper(IntPtr token) at System.Data.ProviderBase.DbConnectionPoolIdentity.GetCurrent() at System.Data.ProviderBase.DbConnectionPoolGroup.GetConnectionPool(DbConnectionFactory connectionFactory) at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPool(DbConnection owningObject, DbConnectionPoolGroup connectionPoolGroup) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.SqlClient.Tests.SqlConnectionBasicTests.IntegratedAuthConnectionTest() Build : Master - 20170627.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Release +21600 area-System.Net Fix unhandled exception when UWP ClientWebSocket loses connection to server "The UWP implementation of ClientWebSocket uses WinRT MessageWebSocket APIs internally. If a connection-related or message-processing failure occurs, WinRT raises a MessageReceived event that throws an exception containing the failure's details when GetDataReader() is called. Unfortunately, ClientWebSocket isn't handling those exceptions inside its MessageReceived event handler, so they end up bringing down the entire process. These changes add basic handling of GetDataReader() exceptions. They also contain a new functional test that pins the current behavior of all ClientWebSocket implementations around the ""connection is prematurely closed"" scenario. Without the proposed product code changes, this new test case reproduces the crash tracked by #17317. Fixes #17317" +21602 area-System.Runtime String IndexOf and LastIndexOf in CoreRT do not support InvariantCulture/InvariantCultureIgnoreCase "Opened on behalf of @Jiayili1 The test `System.Tests.StringTests/Contains(s: \""Hello\"", value: \""ELL\"", comparisonType: InvariantCulture, expected: False)` has failed. System.ArgumentException : NotSupported_StringComparison. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: at xunit.console.netcore!+0xbddaa4 at System.Tests.StringTests.Contains(String s, String value, StringComparison comparisonType, Boolean expected) at xunit.console.netcore!+0xcdb431 at xunit.console.netcore!+0xc8aa25 at xunit.console.netcore!+0xc8a7ae Build : Master - 20170627.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170627.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.StringTests~2FContains(s:%20%5C%22Hello%5C%22,%20value:%20%5C%22ELL%5C%22,%20comparisonType:%20InvariantCulture,%20expected:%20False)" +21605 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandlerTest/GetAsync_IPBasedUri_Success(address: ::1) failed with ""System.Net.Http.CurlException : Couldn't connect to server""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/GetAsync_IPBasedUri_Success(address: ::1)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : Couldn't connect to server Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /Users/buildagent/agent/_work/108/s/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass28_0.<b__0>d.MoveNext() in /Users/buildagent/agent/_work/108/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 226 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/buildagent/agent/_work/108/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 58 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__28.MoveNext() in /Users/buildagent/agent/_work/108/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 224 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /Users/buildagent/agent/_work/108/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 641 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /Users/buildagent/agent/_work/108/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 875 Build : 2.0.0 - 20170627.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170627.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FGetAsync_IPBasedUri_Success(address:%20::1) +21609 area-System.Threading "Test: System.Threading.Tests.MutexTests/Ctor_TryCreateGlobalMutexTest_Uwp failed with ""System.AggregateException""" Opened on behalf of @Jiayili1 The test `System.Threading.Tests.MutexTests/Ctor_TryCreateGlobalMutexTest_Uwp` has failed. System.AggregateException : One or more errors occurred. (Assert.Throws() Failure\r Expected: typeof(System.UnauthorizedAccessException)\r Actual: (No exception was thrown))\r ---- Assert.Throws() Failure\r Expected: typeof(System.UnauthorizedAccessException)\r Actual: (No exception was thrown) Stack Trace: at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass5_0.b__1() at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__2() at System.Threading.Tests.ThreadTestHelpers.RunTestInBackgroundThread(Action test) at System.Threading.Tests.MutexTests.Ctor_TryCreateGlobalMutexTest_Uwp() at xunit.console.netcore!+0xba9b67 at xunit.console.netcore!+0xa24333 at xunit.console.netcore!+0xa24133 ----- Inner Stack Trace ----- at System.Threading.Tests.MutexTests.<>c.b__6_0() at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__0() Build : Master - 20170627.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170627.01/workItem/System.Threading.Tests/analysis/xunit/System.Threading.Tests.MutexTests~2FCtor_TryCreateGlobalMutexTest_Uwp +21612 area-System.Net reuse httpclient failed on windows. "The following code works fine under full framework and Linux, but failed on windows .net core. csproj: ```xml Exe netcoreapp2.0 ``` Program.cs ```csharp using System; using System.Net.Http; using System.Threading.Tasks; namespace HttpClientIssue { class Program { static void Main(string[] args) { Run().Wait(); Console.Read(); } static async Task Run() { HttpClient client = new HttpClient() { BaseAddress = new Uri(""http://www.github.com"") }; await client.PostAsXmlAsync("""", new object()); await client.PostAsXmlAsync("""", new object()); } } } ``` Exception: Unhandled Exception: System.AggregateException: One or more errors occurred. (Error while copying content to a stream.) ---> System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: The write operation failed, see inner exception. ---> System.Net.Http.WinHttpException: The connection with the server was terminated abnormally ![image](https://user-images.githubusercontent.com/1818225/27579992-34be4366-5ade-11e7-82a0-a2e56e493ab3.png) please see the screenshot of fiddler, it seems there are some bytes left in the request stream buffer that cause the second request header parsing failed. System.Net.Http.Formatting.dll include many useful extension methods of HttpClient which has not been include in corefx. The aspnetwebstack project is not maintained. But i think corefx should be able to fix this issue as these code works well on Linux. " +21613 area-System.Xml XmlNodeReader not wotking Please, what is an alternative for using xmlNodeReader as it is not working at the moment for .net core? +21614 area-System.Data wrong implementation of the try pattern ? "Hi, I've just stumbled across the following code. ``` if (_state != State.Running) { Bid.PoolerTrace("" %d#, DbConnectionInternal State != Running.\n"", ObjectID); connection = null; return true; } ``` This is an snippet from the **TryGetConnection** method of class **DbConnectionPool** and I would expect a return value _false_ if the connection is null. " +21615 area-Meta Suggestion: Partner with SlickEdit I recently evaluated the SlickEdit code editor and was totally blown by its speed and feature-set. I installed it inside a VM running Ubuntu Desktop with 4GB ram/2 proc and honestly I couldn't sense a VM environment in any way. I highly recommend the team reach out and discuss .NET Core support. It would be super to have it as an additional cross-platform editor alongside other offerings like JetBrains Rider. https://www.slickedit.com +21616 area-System.Drawing Add Pen tests +21618 area-System.Collections Reenable EnumeratePastEndThenModify collection test Fixes #1170 (is already closed but the code was never cleaned up) According to the changes in MSDN accessing the `Enumerator.Current` after the collection is modified does not result in an exception. Therefore changing the test. +21619 area-System.Linq Reenable ConstantExpressions csharp test which was temporarily disabled Test was temporarily disabled. Reenabling. +21620 area-System.Collections Reenabling equality comparers tests after corert src change Fixes https://github.com/dotnet/corert/issues/1736 Passes locally for me. +21622 area-System.Security X509Chain doesn't detect cert with invalid signature on Ubuntu, properly detected on Windows I'm working UACTT test cases for the https://github.com/OPCFoundation/UA-.NETStandardLibrary. (VS2017 15.2/Ubuntu dotnet-dev-1.0.4) This is a cert with invalid signature: [opcuactt_incorrectsign.zip](https://github.com/dotnet/corefx/files/1105376/opcuactt_incorrectsign.zip) ``` // setup policy chain X509ChainPolicy policy = new X509ChainPolicy(); policy.RevocationFlag = X509RevocationFlag.EntireChain; policy.RevocationMode = X509RevocationMode.NoCheck; policy.VerificationFlags = X509VerificationFlags.NoFlag; // build chain. X509Chain chain = new X509Chain(); chain.ChainPolicy = policy; chain.Build(certificate); ``` On Windows, the chain status after this code for the attached cert contains `NotSignatureInvalid `and `UntrustedRoot`. However, on Ubuntu the chain status returned is just `UntrustedRoot`, so the cert with invalid signature can be used to start communication over a secure channel despite a security violation. Any issues with my code for the security check? Is this a bug in the calling code or in the X509Chain implementation? +21624 area-System.Net SetSocketOption throw Unknown error -1 exception on linux "When I call SetSocketOption on Windows it's work, but on Linux it throws > System.Net.Sockets.SocketException: Unknown error -1 at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Byte[] optionValue) I tried with dotnet v1.0.4 and debian 8.2. Example: ```c# using System; using System.Net; using System.Net.Sockets; namespace SetSocketOptionExample { class Program { static void Main(string[] args) { Console.WriteLine(""Configuration started""); byte[] groupIp = { 0xef, 0xc3, 0x01, 0x29 }; byte[] srcIp = { 0x5b, 0xcb, 0xfd, 0xe3 }; Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); byte[] membershipAddresses = new byte[12]; Buffer.BlockCopy(groupIp, 0, membershipAddresses, 0, 4); Buffer.BlockCopy(srcIp, 0, membershipAddresses, 4, 4); Buffer.BlockCopy(IPAddress.Any.GetAddressBytes(), 0, membershipAddresses, 8, 4); try { socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddSourceMembership, membershipAddresses); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine(""Configuration ended""); Console.ReadLine(); } } } ``` [EDIT] Add C# syntax highlighting by @karelz" +21626 area-System.Net HttpClient::GetStreamAsync() - Leaking handles on *nix when not disposing HttpResponse Hello Community, It seems that there's a leak using the short hand `GetStreamAsync()` on `HttpClient` The `HttpResponseMessage` is never disposed and therefore leaking handles on the cURL version used on *nix by default. Relevant: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClient.cs#L250-L256 https://github.com/dotnet/corefx/blob/4709a5cda50ec3d141b5b460bc05c8b576332659/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs#L84-L87 +21627 area-System.Net Implement HttpClientHandler ServerCertificateCustomValidationCallback for UWP Part of: https://github.com/dotnet/corefx/issues/20010 epic. +21628 area-System.Net Implement HttpClientHandler ClientCertificates for UWP Part of: #20010 epic. +21629 area-System.Memory InvalidProgramException with ReadOnlySpan ToString() "Invoking the ToString() method of the Span type results in a System.InvalidProgramException: Common Language Runtime detected an invalid program. I wouldn't expect the ToString method to work with Span, but I didn't expect this to be an invalid program. ```csharp string s = ""Hello, World!""; ReadOnlySpan span = s.AsSpan(); string s2 = span.ToString(); // exception: Unhandled Exception: System.InvalidProgramException: Common Language Runtime detected an invalid program. ``` See: https://github.com/christiannagel/SpanIssues for a test project " +21630 area-System.Net Fix some TLS related HttpClientHandler properties for UAP Due to platform differences on UAP and the current use of WinRT APIs to implement that HTTP stack, a few properties won't have the same defaults or behavior. CheckCertificateRevocationList default value is true for UAP and can't be changed. However, on UAP, revocation checking that results in an indeterminate status (i.e. revocation server offline) is treated the same as a valid result. This is the behavior of the underlying WinRT APIs. SslProtocols default value is SslProtocols.None which is the same as the rest of .NET Core. 'None' means to use the system default. However, changes to this property value will be ignored. Similar to the decision made in PR #21403, we don't throw PNSE for these differences. Instead we just no-op on the property setter. The behavior differences will be documented in: https://github.com/dotnet/corefx/wiki/ApiCompat Contributes to #18116. +21631 area-System.Security Fix cryptography errors on macOS 10.13 "This provides a long-term workaround for the behavior change in CCCryptorReset for ECB transforms (should the workaround be inadequate we'd catch it in testing at a future point... but since ECB is stateless it's fine). It provides a stable workaround for the appearance of a new status info field in the trust results. Unless ""StatusCodes"" became used to represent some new type of distinct error at a later date it seems ignorable. The TestResetMethod chain test is being disabled because it's segfaulting. It appears to be the sole test testing DSA-based certificate chains, which might indicate a DSA-based regression in the new OS version. Investigation will continue." +21636 area-System.IO add apfs to the filesystem list "Fixes #21597 Tests will pass on 10.13 as long as we recognize the name. OSX supports that via statfs() and adding Magic number does not seems needed. According to notes in the code, that is internal glibc code and it does not reflect type of the partition anyway. src/Native/Unix/System.Native/pal_mount.cpp: int result = statfs(name, &stats); #if HAVE_STATFS_FSTYPENAME || HAVE_STATVFS_FSTYPENAME #ifdef VFS_NAMELEN if (bufferLength < VFS_NAMELEN) #else if (bufferLength < MFSNAMELEN) #endif { result = ERANGE; *formatType = 0; } else { SafeStringCopy(formatNameBuffer, bufferLength, stats.f_fstypename); *formatType = -1; } #else assert(formatType != nullptr); *formatType = SignedCast(stats.f_type); SafeStringCopy(formatNameBuffer, bufferLength, """"); #endif " +21640 area-System.IO Need to write tests for Directory.Delete on non-existing directory, read-only file system in Linux From issue #21273 - File.Delete was throwing an IOException on non-existing files on a read-only file system. Need to write tests to check whether Directory.Delete behaves as documented for non-existing directories in a read-only file system. https://msdn.microsoft.com/en-us/library/fxeahc5f(v=vs.110).aspx From the documentation, Directory.Delete should throw a DirectoryNotFoundException for a non-existing directory and an IOException on a read-only directory. Need to write a test checking both these conditions to see that a DirectoryNotFoundException is thrown. +21642 area-Infrastructure Windows.winmd needs to be updated to Windows Insider SDK flight 16225 "The current UWP (UAP/UAPILC) implementations of System.Net.WebSockets.Client and System.Net.Http.HttpClient use WinRT APIs. The following high-priority **_.NET Standard 2.0 for UWP_** work requires us to consume new WinRT APIs that are part of the recently-flighted Windows Insider SDK 16225: #7877 #21393 #21102 In order to call these new APIs, we need to have the Windows.winmd file updated in the CoreFx repo and associated .NET Native toolchain. - Windows Insider SDK flight 16225 download page: https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewSDK Of course, we will call the new APIs only if they are present from a runtime perspective: ``` using Windows.Foundation.Metadata; if (ApiInformation.IsPropertyPresent(""Windows.Networking.Sockets.WebSockets.MyNewAPI"")) { // Use the new API if present… } ``` CC: @davidsh @weshaggard @yizhang82 @tijoytom @safern @DavidGoll @danmosemsft @joperezr " +21643 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds(acceptedProtocol: None, requestOnlyThisProtocol: False) failed with ""System.ComponentModel.Win32Exception : Cannot allocate memory""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds(acceptedProtocol: None, requestOnlyThisProtocol: False)` has failed. System.IO.IOException : The encryption operation failed, see inner exception. ---- System.ComponentModel.Win32Exception : Cannot allocate memory Stack Trace: at System.Net.Security.SslStreamInternal.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/40/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 443 at System.Net.Security.SslStreamInternal.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, LazyAsyncResult asyncResult) in /Users/buildagent/agent/_work/40/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 375 at System.Net.Security.SslStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback asyncCallback, Object asyncState) in /Users/buildagent/agent/_work/40/s/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 542 at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) at System.IO.Stream.BeginEndWriteAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.IO.StreamWriter.d__65.MoveNext() in /Users/buildagent/agent/_work/40/s/corefx/src/System.Runtime.Extensions/src/System/IO/StreamWriter.cs:line 1019 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.StreamWriter.d__52.MoveNext() in /Users/buildagent/agent/_work/40/s/corefx/src/System.Runtime.Extensions/src/System/IO/StreamWriter.cs:line 712 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.d__8.MoveNext() in /Users/buildagent/agent/_work/40/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 101 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.d__11.MoveNext() in /Users/buildagent/agent/_work/40/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 179 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass1_0.<b__0>d.MoveNext() in /Users/buildagent/agent/_work/40/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 46 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/buildagent/agent/_work/40/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 67 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__1.MoveNext() in /Users/buildagent/agent/_work/40/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 44 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- Build : Master - 20170628.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170628.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False) +21645 area-System.IO BinaryReaderTests.Read_InvalidEncoding() failing because CoreRT BinaryReader is outdated "This test is expecting: `AssertExtensions.Throws(""charsRemaining"", () => reader.Read(new char[10], 0, 10));` This does not exist in the BinaryReader in CoreRT. Compare corert\src\System.Private.CoreLib\src\System\IO\BinaryReader.cs and C:\git\coreclr\src\mscorlib\src\System\IO\BinaryReader.cs. The latter has an extra check `throw new ArgumentOutOfRangeException(nameof(charsRemaining))` The tes tcould be hacked to accommodate the older CoreRT sources. But the right tihng to do here is probably to change CoreRT to use the CoreCLR copy, by moving it into the 'shared' folder." +21646 area-System.Net Remove dead file Fix #20212 +21649 area-System.Numerics "Fireball: No test result generated under ""System.Numerics.Vectors.Performance.Tests"" " "Fireball on Windows.10.Arm64-arm:Debug No test result generated under ""System.Numerics.Vectors.Performance.Tests"" ~~~ 2017-06-27 19:15:09,954: INFO: proc(54): run_and_log_output: Output: C:\dotnetbuild\work\b3c1d3f3-b611-4622-a6c9-1ca7640c10ab\Work\d5cb91dc-ba88-4bf1-bf21-3166e429b17f\Unzip>call C:\dotnetbuild\work\b3c1d3f3-b611-4622-a6c9-1ca7640c10ab\Payload\Launcher\WindowsStoreAppLauncher.exe -test appxmanifest.xml System.Numerics.Vectors.Performance.Tests.dll -xml testResults.xml -parallel none -notrait category=nonuaptests -notrait category=nonwindowstests -notrait category=failing 2017-06-27 19:15:09,970: INFO: proc(54): run_and_log_output: Output: Got manifest file appxmanifest.xml 2017-06-27 19:15:10,063: INFO: proc(54): run_and_log_output: Output: Removing any previous installation... 2017-06-27 19:15:10,079: INFO: proc(54): run_and_log_output: Output: Installing the application... 2017-06-27 19:15:11,664: INFO: proc(54): run_and_log_output: Output: Package ID is 5cd54353-3ed7-4a6e-a72f-db349f28867c_1.0.0.0_arm__v52bfwc2c21ha 2017-06-27 19:15:11,696: INFO: proc(54): run_and_log_output: Output: Starting the application... 2017-06-27 19:15:11,696: INFO: proc(54): run_and_log_output: Output: Resolved Folder Path: C:\Users\DotNetTestRunner\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\ 2017-06-27 19:15:12,321: INFO: proc(54): run_and_log_output: Output: Waiting for the application to exit... ~~~" +21651 area-System.Runtime System.Runtime.InteropServices.GCHandleTests.Alloc_InvalidPinnedObject_ThrowsArgumentException failed with This [test](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.InteropServices/tests/System/Runtime/InteropServices/GCHandleTests.cs#L85) is failing with: ``` System.Runtime.InteropServices.Tests.GCHandleTests.Alloc_InvalidPinnedObject_ThrowsArgumentException(value: Object { }) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentException) Actual: (No exception was thrown) ``` Note that this only fails for when the parameter is `new object()` ([source code](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.InteropServices/tests/System/Runtime/InteropServices/GCHandleTests.cs#L69)) The thing here is that [GCHandleValidatePinnedObject](https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Runtime/InteropServices/GCHandle.cs#L271) is checking if the type is a valid pinned object, if not it should throw `ArgumentException` The only explanation here is that [eeType.MightBeBlittable()](https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Runtime/InteropServices/GCHandle.cs#L286) should return false for object so that it throws but seems to be returning true (not sure this is the case yet). Note that for the test input of `object[]` throws correctly, which makes it more weird that if it is an array of object it detects that is not valid pinned object and it throws, contrary to when the value is just a simple object instance it doesn't throw. cc: @danmosemsft @AtsushiKan +21652 area-System.Runtime Fix System.Runtime.InteropServices.Tests for Uap Fixing 3 tests and disabling 1. Fixes: https://github.com/dotnet/corefx/issues/21655 cc: @tijoytom +21655 area-System.Runtime "Test: System.Runtime.InteropServices.Tests.ComEventsHelperTests/Combine_NullRcwWindows_ThrowsArgumentNullException failed with ""System.PlatformNotSupportedException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.Tests.ComEventsHelperTests/Combine_NullRcwWindows_ThrowsArgumentNullException` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentNullException)\r Actual: typeof(System.PlatformNotSupportedException): Operation is not supported on this platform. Stack Trace: at System.Runtime.InteropServices.Tests.ComEventsHelperTests.<>c.b__5_0() at System.Action.Invoke() Build : Master - 20170628.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170628.01/workItem/System.Runtime.InteropServices.Tests/analysis/xunit/System.Runtime.InteropServices.Tests.ComEventsHelperTests~2FCombine_NullRcwWindows_ThrowsArgumentNullException +21656 area-System.Runtime "Test: System.Runtime.InteropServices.Tests.GCHandleTests/Alloc_InvalidPinnedObject_ThrowsArgumentException(value: Object { }) failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.Tests.GCHandleTests/Alloc_InvalidPinnedObject_ThrowsArgumentException(value: Object { })` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: (No exception was thrown) Stack Trace: at System.Runtime.InteropServices.Tests.GCHandleTests.Alloc_InvalidPinnedObject_ThrowsArgumentException(Object value) at xunit.console.netcore!+0x82899e at xunit.console.netcore!+0x7d52cf at xunit.console.netcore!+0x7d515a Build : Master - 20170628.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170628.01/workItem/System.Runtime.InteropServices.Tests/analysis/xunit/System.Runtime.InteropServices.Tests.GCHandleTests~2FAlloc_InvalidPinnedObject_ThrowsArgumentException(value:%20Object%20%7B%20%7D) +21658 area-System.Runtime Add Runtime.WindowsRuntime tests Did these about a week ago but forgot to ever send it in Fixes #21303 +21664 area-Infrastructure Create meta-package for .NET Framework support We have added a number of nuget packages to fill the API gaps in .NET Core and a lot of them are part of the Microsoft.NETCore.App but there are still a lot that aren't. To help folks with porting we should create another meta-package that will reference all the libraries that we have individual nuget packages that are above Microsoft.NETCore.App and are to help bridge the gap with .NET Framework. cc @Petermarcu @ericstj @terrajobst Proposed list of packages: ``` System.CodeDom System.ComponentModel.Annotations System.Configuration.ConfigurationManager System.Data.SqlClient System.DirectoryServices System.DirectoryServices.AccountManagement System.DirectoryServices.Protocols System.IO.FileSystem.AccessControl System.IO.Packaging System.IO.Pipes.AccessControl System.IO.Ports System.Numerics.Vectors System.Reflection.TypeExtensions System.Security.AccessControl System.Security.Cryptography.Cng System.Security.Cryptography.Pkcs System.Security.Cryptography.ProtectedData System.Security.Cryptography.Xml System.Security.Permissions System.Security.Principal.Windows System.ServiceProcess.ServiceController System.Text.Encoding.CodePages System.Threading.AccessControl System.Threading.Tasks.Dataflow ``` For reference all the extra nuget packages we produce can be seen at https://github.com/dotnet/versions/blob/master/build-info/dotnet/corefx/master/Latest_Packages.txt I've filtered that list to just things that already exist in the .NET Framework. +21667 area-Serialization Rd.xml Entry from XmlSerializer.Mode Caused Size-on-disk Regressions. XmlSerializer.Mode iss marked as required by the System.Private.Xml.rd.xml. Unfortunately, it pulls in the XmlSerializer type itself (has to), which in turn pulls in a whole lot of code through its static ctor dependencies. This caused some size-on-disk regressions. +21668 area-Serialization Move Entries from Library Rd.xml to Test Rd.xml. XmlSerializer.Mode iss marked as required by the System.Private.Xml.rd.xml. Unfortunately, it pulls in the XmlSerializer type itself (has to), which in turn pulls in a whole lot of code through its static ctor dependencies. This caused some size-on-disk regressions. As the property is used by our test project only, the fix is to move the entry from the library rd.xml to the test rd.xml. The fix also made the similar changes to DCS/DCJS. Fix #21667 +21670 area-System.Net Removing unused UAP code and SmtpClient HostName workaround 1. Miscellaneous clean up for uap (NetworkInformation now doesn't use WinRT implementation) 2. Fix: #19605 +21671 area-Infrastructure Add converter from IEnumerable to TheoryData Manipulating test input data in IEnumerable format is desirable, but a bit awkward to get into IEnumerable format that [Theory] expects. Add test project to new test project. :) Change a test in System.IO.FileSystem to theory with new extension. +21672 area-System.Net Clarify default credentials usage for HttpClientHandler on UAP "This PR clarifies how credential handling and specifically default logged-on credentials actually works on the UAP platform. First, ""default credentials"" are the current credentials of the logged-on user, typically on an enterprise network joined to an Active Directory domain. When these credentials are sent to a proxy or server, only Negotiate, Kerberos, or NTLM schemes are used. Those credentials can never be sent via other schemes like basic or digest. .NET Framework traditionally has two ways for developers to specify using default logged-on credentials to send to the server. Either set the .UseDefaultCredentials property to true or specify CredentialCache.DefaultCredentials to the .Credentials property. For proxy credentials, the developer could pass DefaultCredentials via the custom IProxy object or via the .DefaultProxyCredentials property. .NET Framework would send default credentials anywhere (intranet or internet) if specified by the developer. The UAP platform implementation of System.Net.Http uses a different set of rules for sending default credentials. It is based on whether the app has Enterprise Authentication capability as well as if the endpoint is specified in an intranet zone. This design is part of the base native WinInet and WinHTTP stacks. It was a design choice to provide optimum security as well as convenience for developers writing apps for enterprise scenarios. This PR does a few things. First, it keeps the .NET ICredentials properties stored separately so that they correctly round-trip on get and set. .NET NetworkCredential has 3 parameters (domain, user, password). But WinRT PasswordCredential only has 2 parameters (user, password). We now convert to the WinRT objects only when we need to use them. Second, this PR clarifies that the .UseDefaultCredentials property is basically a no-op because the API models of default credentials handling is different on the UAP platform as described above. These platform differences will be documented here: https://github.com/dotnet/corefx/wiki/ApiCompat Fixes #19642 Fixes #21510" +21673 area-System.Runtime Fix System.Runtime.Interop test for uapaot Fixes: https://github.com/dotnet/corefx/issues/21651 cc: @danmosemsft @tijoytom +21674 area-Infrastructure Disable performance tests for uap when running in arm Fixes: https://github.com/dotnet/corefx/issues/21649 cc: @joperezr @danmosemsft +21676 area-System.Runtime Documentation on `Marshal.GetLastWin32Error` should be updated. The documentation currently makes no mention that this method will return `errno` on Unix/Mac (or the conditions, if any, under which it will return `errno` on Windows). +21678 area-System.Runtime Add DispatcherQueue support in WindowsRuntimeSynchronizationContext This is a port of work we did on Desktop to support [DispatcherQueues](https://docs.microsoft.com/en-us/uwp/api/windows.system.dispatcherqueue) that are being introduced in Windows. It will ensure that when we post task continuations on dedicated DispatcherQueue threads, the continuations will run on the same thread. There will be a corresponding change that will go into CoreCLR when this gets in that will actually pass DispatcherQueues into `WinRTSynchronizationContextFactory.Create`. @yizhang82 @sergiy-k @kouvel @jkotas +21679 area-System.Net Several allocation improvements for HttpClient/ManagedHandler Some of these changes are specific to ManagedHandler, while others are applicable to HttpClient in general. ManagedHandler-specific: - We currently write out a host header with a port number by converting the port to a string. This changes it to just write out the digits directly without the intermediate string. - HttpRequestHeaders is currently always allocated, even if it's never accessed by the developer code. - Parsing the response very likely yields at least once, and currently it's a helper that's called from the main SendAsync. It's easy to combine them and avoid the extra allocations from the extra async layer. - We're going to need to revisit the connection pooling anyway, but for now I was seeing allocations related to the ConcurrentDictionary show up. ConcurrentyDictionary is optimized for many-reads-fewer-writes, but this usage is entirely writes. CD just does striped locking for writes internally, so I replaced it with a simple striped-lock-HashSet structure that doesn't allocate on every add. - We're currently incurring an array enumerator allocation on every header being written out. We can avoid that with a cast. HttpClient-general: - Currently GetStream/String/ByteArrayAsync all incur a task allocation for getting the response stream. But in most cases, the stream is available promptly (it's the reads on the stream that are likely to be async). We can employ ValueTask to minimize the need for this allocation. - HttpRequestHeaders has 9 reference fields dedicated to specific lazily-allocated collection properties, and HttpResponseHeaders has 5. That's 112 bytes of fields allocated per request on 64-bit that are often unneeded. This puts them into a lazily-allocated array to make them more pay for play: they're a bit more expensive when used (the space for the array's overhead plus a cast on each use), but we avoid having to pay for the allocations for the fields when they're not used. Both: - Both HttpRequestHeader and HttpResponseHeader currently promptly allocate another wrapped HttpGeneralHeaders object, but this is only really necessary in the implementation when various strongly-typed properties are accessed. We can make it lazily-allocated and more pay-for-play. This changes the headers to be lazily-allocated, and then modifies the ManagedHandler to avoid accessing them unless necessary. cc: @davidsh, @geoffkizer +21680 area-System.Runtime System.Runtime.Extensions failures on UAPAOT "Currently those tests are disabled and need to be investigated ``` ```" +21681 area-Infrastructure Update to the latest intellisense package PTAL @ericstj FYI @Petermarcu +21684 area-System.IO Read only file system delete tests Tests to validate behavior for directory and file delete for read only file systems on Unix. +21685 area-Infrastructure Update prerelease label to preview2 release/uwp6.0 is going to use preview1 for now +21687 area-System.Threading "Fireball: No test result generated under ""System.Threading.Tasks.Parallel.Tests""" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170629.01/workItem/System.Threading.Tasks.Parallel.Tests/wilogs Configuration: Windows.10.Nano.Amd64-x64:Release ~~~ 2017-06-29 01:28:38,927: INFO: proc(54): run_and_log_output: Output: Discovering: System.Threading.Tasks.Parallel.Tests 2017-06-29 01:28:39,069: INFO: proc(54): run_and_log_output: Output: Discovered: System.Threading.Tasks.Parallel.Tests 2017-06-29 01:28:39,147: INFO: proc(54): run_and_log_output: Output: Starting: System.Threading.Tasks.Parallel.Tests ~~~ +21688 area-Serialization Add desktop serialize test case @shmao Please help review the code. +21689 area-Microsoft.CSharp Length cannot be less than zero. thrown on nectoreapp2.0 when trying to invoke Action that accesses a property on the input class - works for anonymous types "_From @maumar on June 28, 2017 19:7_ repro: ```cs public class MyEntity { public int Id { get; set; } public string Name { get; set; } } [Fact] public virtual void Netcoreapp_bug() { Action workingElementAsserter = e => Console.WriteLine(""works""); Action failingElementAsserter = e => Console.WriteLine(e.Id); var dto = new MyEntity { Id = 1, Name = ""Foo"" }; var anonymous = new { Id = 1, Name = ""Foo"" }; workingElementAsserter(dto); //works failingElementAsserter(anonymous); //works failingElementAsserter.Invoke(dto); //fails } ``` exception: ``` System.ArgumentOutOfRangeException : Length cannot be less than zero. Parameter name: length Stack Trace: at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameManager.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetName(Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.GetArgumentType(ICSharpBinder p, CSharpArgumentInfo argInfo, Expression param, DynamicMetaObject arg, Int32 index) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.CreateArgumentArray(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder.FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindGetMember(GetMemberBinder binder) at System.Dynamic.GetMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at Microsoft.EntityFrameworkCore.Query.ComplexNavigationsQueryTestBase`2.<>c.b__247_1(Object e) at Microsoft.EntityFrameworkCore.Query.ComplexNavigationsQueryTestBase`2.Netcoreapp_bug() ``` I am unable to reproduce this in standalone app, this only happens in our test infrastructure (Entity Framework Core). Using xunit and we have generic and polymorphic test classes and tests are in multiple assemblies - maybe this has something to do with it, but so far we were unable to figure out the root cause. Let me know if you need any more info. dotnet --version: 2.0.0-preview3-006607 _Copied from original issue: dotnet/coreclr#12529_" +21691 area-System.Net Fix HttpClientHandler on UAP to use WinRT NoCache enum Since System.Net.Http APIs default to not using any cache, we need to turn off caching at the WinRT layer. If supported, we set the CacheControl.ReadBehavior to use the NoCache enum value. Otherwise, we use the next best enum option. Removed some unneeded try/catch handling when we previously needed to handle compiling with older SDKs and trap JIT errord. This is no longer needed for NETStandard20. Fixed some typos from a previous PR. Fixes #7877 +21692 area-Infrastructure Extract Resources from assemblies and write them into the runner's pri file for UAP - [x] Add MakePri.exe to buildtools package - [x] Modify [GenerateResourcesCode](https://github.com/dotnet/buildtools/blob/78260239e4db68ad5c2df774a27d5f9a54fd92e5/src/Microsoft.DotNet.Build.Tasks/GenerateResourcesCode.cs) to write the resources to a ResW file per assembly when building for UAP. This can be done through a parameter to the task when calling it in the build process. - [x] Bin place the ResW files to the runtime folder. - [x] Create test's assembly ResW file when building the test project and bin place it to the ResW runtime folder. - [x] Add task to merge ResW files to runner's PRI file using MakePri.exe - [x] Delete mklink for runner's PRI file from RunTests.cmd for UAP This are the steps that I will be following to extract the resources from the assemblies to merge them to the PRI file. cc: @tarekgh @danmosemsft @weshaggard +21696 area-Infrastructure UWP ILC Tests: Serveral tests have fireball on Windows.10.Amd64-arm Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170629.01 Configuration: Windows.10.Amd64-arm +21698 area-Infrastructure 2.0.0 Core Tests: Fire issues on Fedora.26.Amd64 Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170629.01 Several tests have fireball on Fedora.26.Amd64 +21699 area-System.IO test bug: test helper treats non-serial ports as serial ports "This is a tiny test issue that I hit on my box. The comparison made by the helper ended up treating some ports like ""COMPATIBLEBUS*"" as serial ports, and that broke the `AllHelperPortsAreInGetPortNames` test." +21700 area-System.IO ensure test helper do not treat non-serial ports as serial ports (fix #21699) Ensures that only serial ports are identified as such by the test helper fixing issue #21699 +21701 area-System.IO Got Illegal character error when the file name is encoded in GBK "Hi All, We just encountered an issue that the enumeration function reports error of illegal character when there's GBK Chinese character in the directory. We found this issue on RedHat 7.3 with $LANG and $LC_ALL set to ""zh_CN.GBK"". It works well with Chines character with UTF-8 encoding. The issue can be reproduced by following code: ```c# using System; using System.IO; namespace netcoretest { class Program { static void Main(string[] args) { foreach (var fileItem in Directory.EnumerateFileSystemEntries(""."", ""*"", SearchOption.TopDirectoryOnly)) { Console.WriteLine(fileItem); } } } } ``` It reports an error as following: ``` Unhandled Exception: System.ArgumentException: Illegal characters in path. Parameter name: path at System.IO.PathInternal.CheckInvalidPathChars(String path) at System.IO.Path.Combine(String path1, String path2) at System.IO.UnixFileSystem.FileSystemEnumerable`1.d__11.MoveNext() at netcoretest.Program.Main(String[] args) in /home/xtest/netcoretest/Program.cs:line 10 Aborted (core dumped) ``` GBK is an encoding standard defined by China. Does .Net Core framework have plan to support other encoding besides Unicode? If so, could you share your schedule? Thanks Emma" +21702 area-System.Net Test failed: System.Net.Sockets.Tests.TcpListenerTest / Accept_AcceptsPendingSocketOrClient failed test: System.Net.Sockets.Tests.TcpListenerTest.Accept_AcceptsPendingSocketOrClient detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu16.04_release/92/testReport/System.Net.Sockets.Tests/TcpListenerTest/Accept_AcceptsPendingSocketOrClient/ MESSAGE: ~~~ Assert.False() Failure Expected: False Actual: True ~~~ STACK TRACE: ~~~ at System.Net.Sockets.Tests.TcpListenerTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +21703 area-System.Runtime System.Runtime.InteropServices.Tests failed in ci /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_release/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.Runtime.InteropServices.Tests' please check /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_release/bin/AnyOS.AnyCPU.Release/System.Runtime.InteropServices.Tests/netstandard/testResults.xml for details! [/mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_release/src/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.Tests.csproj] detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_release/2981/consoleFull#72209969733fe3402-0c0f-45a7-a707-47164965bab5 +21704 area-System.Runtime [UWP6.0] Rect and Size in System.Runtime.WindowsRuntime has different exception thrown for size validation As suggested in #21658 - disabling tests against this issue. ``` Windows.Foundation.Tests.SizeTests.Ctor_NegativeHeight_ThrowsArgumentOutOfRangeException(height: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(51,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass3_0.b__0() Windows.Foundation.Tests.SizeTests.Ctor_NegativeHeight_ThrowsArgumentOutOfRangeException(height: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(51,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass3_0.b__0() Windows.Foundation.Tests.SizeTests.Height_SetNegative_ThrowsArgumentOutOfRangeException(height: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(91,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass7_0.b__0() Windows.Foundation.Tests.SizeTests.Height_SetNegative_ThrowsArgumentOutOfRangeException(height: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(91,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass7_0.b__0() Windows.Foundation.Tests.SizeTests.Ctor_NegativeWidth_ThrowsArgumentOutOfRangeException(width: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(43,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass2_0.b__0() Windows.Foundation.Tests.SizeTests.Ctor_NegativeWidth_ThrowsArgumentOutOfRangeException(width: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(43,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass2_0.b__0() Windows.Foundation.Tests.SizeTests.Width_SetNegative_ThrowsArgumentOutOfRangeException(width: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(71,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass5_0.b__0() Windows.Foundation.Tests.SizeTests.Width_SetNegative_ThrowsArgumentOutOfRangeException(width: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\SizeTests.cs(71,0): at Windows.Foundation.Tests.SizeTests.<>c__DisplayClass5_0.b__0() Windows.Foundation.Tests.RectTests.Ctor_NegativeHeight_ThrowsArgumentOutOfRangeException(height: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(66,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass3_0.b__0() Windows.Foundation.Tests.RectTests.Ctor_NegativeHeight_ThrowsArgumentOutOfRangeException(height: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(66,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass3_0.b__0() Windows.Foundation.Tests.RectTests.Height_SetNegative_ThrowsArgumentOutOfRangeException(height: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(188,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass16_0.b__0() Windows.Foundation.Tests.RectTests.Height_SetNegative_ThrowsArgumentOutOfRangeException(height: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(188,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass16_0.b__0() Windows.Foundation.Tests.RectTests.Ctor_NegativeWidth_ThrowsArgumentOutOfRangeException(width: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(58,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass2_0.b__0() Windows.Foundation.Tests.RectTests.Ctor_NegativeWidth_ThrowsArgumentOutOfRangeException(width: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(58,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass2_0.b__0() Windows.Foundation.Tests.RectTests.Width_SetNegative_ThrowsArgumentOutOfRangeException(width: -1) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(171,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass14_0.b__0() Windows.Foundation.Tests.RectTests.Width_SetNegative_ThrowsArgumentOutOfRangeException(width: -ì) [FAIL] Assert.Throws() Failure Expected: typeof(System.ArgumentOutOfRangeException) Actual: typeof(System.ArgumentException): Value does not fall within the expected range. Stack Trace: D:\repos\corefxCopy\corefx\src\System.Runtime.WindowsRuntime\tests\Windows\Foundation\RectTests.cs(171,0): at Windows.Foundation.Tests.RectTests.<>c__DisplayClass14_0.b__0() `` +21706 area-Serialization Cannot deserialize XML with DataContractSerializer "The following snippet throws exception: ```c# using System; using System.Runtime.Serialization; using System.Text; using System.Xml; namespace BugTest { class Program { static void Main(string[] args) { Console.WriteLine(""Hello World!""); var xml = @"" 88c02aba-f78c-4749-8665-0caddee08b8a 88c02aba-f78c-4749-8665-0caddee08b8a 0001-01-01T00:00:00 ""; const int buffSize = 1000000; int bytes = 0; int chars = 0; byte[] result = new byte[buffSize]; bool compl; Encoding.UTF8.GetEncoder().Convert(xml.ToCharArray(), 0, xml.Length, result, 0, buffSize, true, out chars, out bytes, out compl); var xmlReader = XmlDictionaryReader.CreateTextReader(result, 0, bytes, new XmlDictionaryReaderQuotas()); var sr = new DataContractSerializer(typeof(PingDataConfirmation)); var deserialized = sr.ReadObject(xmlReader); } } [DataContract(Namespace = ""http://mycompany.com/MyProduct/Operations"")] public class PingDataConfirmation { [DataMember(IsRequired = true)] public string SourceGuid { get; set; } [DataMember(IsRequired = true)] public string Guid { get; set; } [DataMember(IsRequired = true)] public DateTime CreationTime { get; set; } } } ``` Exception: > System.Runtime.Serialization.SerializationException: Error in line 1 position 86. 'Element' 'SourceGuid' from namespace 'http://mycompany.com/MyProduct/Operations' is not expected. Expecting element 'CreationTime' Ennviroment: CSPROJ: ```xml Exe netcoreapp1.1 ``` .NET CORE SDK > 1.0.4" +21707 area-System.Drawing Fix missing .NET Core argument validation for PrivateFontCollection.AddFontFile This is a cleaned up copy of the netfx source code. However, is the whole `IntSecurity.DemandReadFileIO(filename)` stuff necessary Or maybe I could just replace that with `filename = Path.GetFullPath(filename)` and delete `IntSecurity.cs` Fixes #21558 +21708 area-System.Drawing Fix memory leaks if native exception is thrown in GDI+ The main one is Bitmap.FromResource will always throw a DLLNotFoundException on Nano, for example. The other cases are unlikely to throw unless a DLL was deleted or something went badly wrong causing exceptions. However, it's good to be safe. In these situations, if a native exception is thrown, then the allocated memory will not be freed, which I believe is a memory leak. +21709 area-Serialization DataContractSerializer problem "```c# using System; using System.IO; using System.Xml.Linq; using System.Runtime.Serialization; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var xElement = XElement.Parse(""""); var sXmlOrig = xElement.ToString(); var serializer = new DataContractSerializer(typeof(XElement)); using (var stream2 = new MemoryStream()) { serializer.WriteObject(stream2, xElement); stream2.Flush(); stream2.Position = 0; var dXElement = (XElement)serializer.ReadObject(stream2); var sDXml = dXElement.ToString(); if (!string.Equals(sXmlOrig, sDXml)) { // != Console.WriteLine($""{sXmlOrig} != {sDXml}""); } } Console.ReadKey(); } } } ```" +21712 area-System.Runtime Reenable the CoreFx tests on ILC that got fixes yesterday. +21713 area-System.Net Move ManagedWebSocket from System.Net.WebSockets.Client to System.Net.WebSockets Contributes to https://github.com/dotnet/corefx/issues/21537. Regardless of which path we take for that issue, we'll want the managed implementation built into the System.Net.WebSockets.dll assembly. This PR moves it down from System.Net.WebSockets.Client, and changes ClientWebSocket on Unix to use the ManagedWebSocket via the existing CreateClientWebSocket method (which we can leave implemented like this regardless of what path we take for adding an additional API). cc: @davidsh, @cipop, @anurse, @geoffkizer, @Priya91 +21714 area-System.Reflection SRE AssemblyBuilder with ReferenceAssemblyAttribute can create instances. "`AssemblyBuilder` can be used to create object instances even if the AssemblyBuilder has the `ReferenceAssemblyAttribute` set: ```csharp using System; using System.Reflection; using System.Reflection.Emit; public class Program { public static void Main(String[] args) { var s = ""abcd""; var aName = new AssemblyName(s); var a = MakeAssembly (aName); var t = a.GetType(""Foo""); var o = Activator.CreateInstance(t); Console.WriteLine(""made object {0}"", o); var fi = t.GetField(""X""); fi.SetValue(o,123); Console.WriteLine(""field is set to: {0}"", fi.GetValue(o)); return; } private static Assembly MakeAssembly(AssemblyName an) { var ab = AssemblyBuilder.DefineDynamicAssembly(an, AssemblyBuilderAccess.Run); var mb = ab.DefineDynamicModule(an.Name); var conInfo = typeof(System.Runtime.CompilerServices.ReferenceAssemblyAttribute).GetConstructor(new Type[] { }); ab.SetCustomAttribute(conInfo, new byte[] { }); var tb = mb.DefineType(""Foo"", TypeAttributes.Public); tb.DefineDefaultConstructor(MethodAttributes.Public); var fb = tb.DefineField(""X"", typeof(int), FieldAttributes.Public); tb.CreateType(); return ab; } } ``` This runs and I get the following output: ``` made object Foo field is set to: 123 ```" +21715 area-System.Threading ActionBlock.Post fail We use many ActionBlock and create instances using constructors that accept only Action without any configurations. So it should be unbound. But in some cases method Post returns false. What can cause this issue? +21716 area-Serialization Need use base type property get method when the override property is internal When serialize the following derived type, it will throw “access method DerivedTypeWithDifferentOverrides.get_Name4() failed”. This is because the generated code is wrong and it try to access the internal Name4 property. ``` public class BaseType { public virtual string Name1 { get; set; } public string Name2 { get; set; } public string Name3 { get; set; } public string Name4 { get; set; } public string @Name5 { get; set; } } public class DerivedTypeWithDifferentOverrides : BaseType { public override string Name1 { get; set; } new public string Name2 { get; set; } new public string Name3 { get; set; } new internal string Name4 { get; set; } new public string Name5 { get; set; } } ``` +21717 area-System.Diagnostics Fix System.Diagnostics.StackTrace tests Fixes https://github.com/dotnet/corefx/issues/21554 cc: @danmosemsft +21718 area-System.Data ASP.Net Core 1.1 App running inside docker container cannot connect to Remote Sql Server on Windows "I have an ASP.Net Core Web API running on .Net Core 1.1 is not able to connect to a sql server which is in my network but outside of docker container. I always get connection time out error. `Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond;` App works fine when running outside of the docker container. Dockerfile: > FROM microsoft/aspnetcore:1.1 WORKDIR /contest EXPOSE 85 EXPOSE 1433 COPY /out . ENTRYPOINT [""dotnet"", ""contest.dll""] any help is appreciated. Thank you." +21719 area-Serialization Need generate the code to get base type property if the derived override property is internal @shmao @zhenlan @mconnew Fix #21716 +21720 area-System.Runtime Test failure: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/ValidateAgainstBlobs(obj: CookieContainer { Capacity = 10, Count = 1, MaxCookieSize = 1024, PerDomainCapacity = 5 }, blobs: [... Opened on behalf of @danmosemsft The test `System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/ValidateAgainstBlobs(obj: CookieContainer { Capacity = 10, Count = 1, MaxCookieSize = 1024, PerDomainCapacity = 5 }, blobs: [...` has failed. The stored blob for type System.Net.CookieContainer is outdated and needs to be updated. Stored blob: AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAaU3lzdGVtLk5ldC5Db29raWVDb250YWluZXIGAAAADW1fZG9tYWluVGFibGUPbV9tYXhDb29raWVTaXplDG1fbWF4Q29va2llcxVtX21heENvb2tpZXNQZXJEb21haW4HbV9jb3VudA5tX2ZxZG5NeURvbWFpbgMAAAAAARxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlCAgICAIAAAAJAwAAAAAEAAAKAAAABQAAAAEAAAAGBAAAAAAEAwAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AQAAAAoKAwAAAAkFAAAACQYAAAAQBQAAAAEAAAAGBwAAAAouMTI3LjAuMC4xEAYAAAABAAAACQgAAAAFCAAAABNTeXN0ZW0uTmV0LlBhdGhMaXN0AQAAAAZtX2xpc3QDLFN5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1N5bmNTb3J0ZWRMaXN0AgAAAAkJAAAABAkAAAAsU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QrU3luY1NvcnRlZExpc3QJAAAABV9saXN0BV9yb290D1NvcnRlZExpc3Qra2V5cxFTb3J0ZWRMaXN0K3ZhbHVlcxBTb3J0ZWRMaXN0K19zaXplElNvcnRlZExpc3QrdmVyc2lvbhNTb3J0ZWRMaXN0K2NvbXBhcmVyElNvcnRlZExpc3Qra2V5TGlzdBRTb3J0ZWRMaXN0K3ZhbHVlTGlzdAMCBQUAAAMDAx1TeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdAgIG1N5c3RlbS5Db2xsZWN0aW9ucy5Db21wYXJlciVTeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdCtLZXlMaXN0J1N5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1ZhbHVlTGlzdAkKAAAACQsAAAAJDAAAAAkMAAAAAAAAAAAAAAAJDQAAAAoKBAoAAAAdU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QHAAAABGtleXMGdmFsdWVzBV9zaXplB3ZlcnNpb24IY29tcGFyZXIHa2V5TGlzdAl2YWx1ZUxpc3QFBQAABAMDCAgkU3lzdGVtLk5ldC5QYXRoTGlzdCtQYXRoTGlzdENvbXBhcmVyAgAAACVTeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdCtLZXlMaXN0J1N5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1ZhbHVlTGlzdAkOAAAACQ8AAAABAAAAAQAAAAkQAAAACgkRAAAABAsAAAANU3lzdGVtLk9iamVjdAAAAAAQDAAAAAAAAAAEDQAAABtTeXN0ZW0uQ29sbGVjdGlvbnMuQ29tcGFyZXIBAAAAC0NvbXBhcmVJbmZvAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwkSAAAAEA4AAAAQAAAABhMAAAAFL3BhdGgNDxAPAAAAEAAAAAkUAAAADQ8FEAAAACRTeXN0ZW0uTmV0LlBhdGhMaXN0K1BhdGhMaXN0Q29tcGFyZXIAAAAAAgAAAAQRAAAAJ1N5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1ZhbHVlTGlzdAEAAAAKc29ydGVkTGlzdAMdU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QJCgAAAAQSAAAAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvAwAAAAZtX25hbWUNbV9Tb3J0VmVyc2lvbgdjdWx0dXJlAQMAIFN5c3RlbS5HbG9iYWxpemF0aW9uLlNvcnRWZXJzaW9uCAYWAAAABWVuLVVTCgkEAAAFFAAAABtTeXN0ZW0uTmV0LkNvb2tpZUNvbGxlY3Rpb24EAAAABm1fbGlzdAltX3ZlcnNpb24LbV9UaW1lU3RhbXAUbV9oYXNfb3RoZXJfdmVyc2lvbnMDAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QIDQECAAAACRcAAAABAAAAAAAAAAAAAAABBBcAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdAMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBQAACAgJGAAAAAEAAAABAAAAEBgAAAAEAAAACRkAAAANAwUZAAAAEVN5c3RlbS5OZXQuQ29va2llFQAAAAltX2NvbW1lbnQMbV9jb21tZW50VXJpD21fY29va2llVmFyaWFudAltX2Rpc2NhcmQIbV9kb21haW4RbV9kb21haW5faW1wbGljaXQJbV9leHBpcmVzBm1fbmFtZQZtX3BhdGgPbV9wYXRoX2ltcGxpY2l0Bm1fcG9ydA9tX3BvcnRfaW1wbGljaXQLbV9wb3J0X2xpc3QIbV9zZWN1cmUKbV9odHRwT25seQttX3RpbWVTdGFtcAdtX3ZhbHVlCW1fdmVyc2lvbgttX2RvbWFpbktleQ9Jc1F1b3RlZFZlcnNpb24OSXNRdW90ZWREb21haW4BBAQAAQAAAQEAAQAHAAAAAQABAAAKU3lzdGVtLlVyaQIAAAAYU3lzdGVtLk5ldC5Db29raWVWYXJpYW50AgAAAAEBDQEBCAEBDQgBAQIAAAAJBAAAAAoF5f///xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYcAAAACTEyNy4wLjAuMQAAAAAAAAAAAAYdAAAABW5hbWUxCRMAAAAACQQAAAABCgAAgFhsCQ2+tQgGIAAAAAV2YWx1ZQAAAAAJBwAAAAAACw== Generated runtime blob: AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAaU3lzdGVtLk5ldC5Db29raWVDb250YWluZXIGAAAADW1fZG9tYWluVGFibGUPbV9tYXhDb29raWVTaXplDG1fbWF4Q29va2llcxVtX21heENvb2tpZXNQZXJEb21haW4HbV9jb3VudA5tX2ZxZG5NeURvbWFpbgMAAAAAARxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlCAgICAIAAAAJAwAAAAAEAAAKAAAABQAAAAEAAAAGBAAAAAAEAwAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AQAAAAoKAwAAAAkFAAAACQYAAAAQBQAAAAEAAAAGBwAAAAouMTI3LjAuMC4xEAYAAAABAAAACQgAAAAFCAAAABNTeXN0ZW0uTmV0LlBhdGhMaXN0AQAAAAZtX2xpc3QDLFN5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1N5bmNTb3J0ZWRMaXN0AgAAAAkJAAAABAkAAAAsU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QrU3luY1NvcnRlZExpc3QJAAAABV9saXN0BV9yb290D1NvcnRlZExpc3Qra2V5cxFTb3J0ZWRMaXN0K3ZhbHVlcxBTb3J0ZWRMaXN0K19zaXplElNvcnRlZExpc3QrdmVyc2lvbhNTb3J0ZWRMaXN0K2NvbXBhcmVyElNvcnRlZExpc3Qra2V5TGlzdBRTb3J0ZWRMaXN0K3ZhbHVlTGlzdAMCBQUAAAMDAx1TeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdAgIG1N5c3RlbS5Db2xsZWN0aW9ucy5Db21wYXJlciVTeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdCtLZXlMaXN0J1N5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1ZhbHVlTGlzdAkKAAAACQsAAAAJDAAAAAkMAAAAAAAAAAAAAAAJDQAAAAoKBAoAAAAdU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QHAAAABGtleXMGdmFsdWVzBV9zaXplB3ZlcnNpb24IY29tcGFyZXIHa2V5TGlzdAl2YWx1ZUxpc3QFBQAABAMDCAgkU3lzdGVtLk5ldC5QYXRoTGlzdCtQYXRoTGlzdENvbXBhcmVyAgAAACVTeXN0ZW0uQ29sbGVjdGlvbnMuU29ydGVkTGlzdCtLZXlMaXN0J1N5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1ZhbHVlTGlzdAkOAAAACQ8AAAABAAAAAQAAAAkQAAAACgkRAAAABAsAAAANU3lzdGVtLk9iamVjdAAAAAAQDAAAAAAAAAAEDQAAABtTeXN0ZW0uQ29sbGVjdGlvbnMuQ29tcGFyZXIBAAAAC0NvbXBhcmVJbmZvAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwkSAAAAEA4AAAAQAAAABhMAAAAFL3BhdGgNDxAPAAAAEAAAAAkUAAAADQ8FEAAAACRTeXN0ZW0uTmV0LlBhdGhMaXN0K1BhdGhMaXN0Q29tcGFyZXIAAAAAAgAAAAQRAAAAJ1N5c3RlbS5Db2xsZWN0aW9ucy5Tb3J0ZWRMaXN0K1ZhbHVlTGlzdAEAAAAKc29ydGVkTGlzdAMdU3lzdGVtLkNvbGxlY3Rpb25zLlNvcnRlZExpc3QJCgAAAAQSAAAAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvAwAAAAZtX25hbWUNbV9Tb3J0VmVyc2lvbgdjdWx0dXJlAQMAIFN5c3RlbS5HbG9iYWxpemF0aW9uLlNvcnRWZXJzaW9uCAkEAAAACn8AAAAFFAAAABtTeXN0ZW0uTmV0LkNvb2tpZUNvbGxlY3Rpb24EAAAABm1fbGlzdAltX3ZlcnNpb24LbV9UaW1lU3RhbXAUbV9oYXNfb3RoZXJfdmVyc2lvbnMDAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QIDQECAAAACRcAAAABAAAAAAAAAAAAAAABBBcAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdAMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBQAACAgJGAAAAAEAAAABAAAAEBgAAAAEAAAACRkAAAANAwUZAAAAEVN5c3RlbS5OZXQuQ29va2llFQAAAAltX2NvbW1lbnQMbV9jb21tZW50VXJpD21fY29va2llVmFyaWFudAltX2Rpc2NhcmQIbV9kb21haW4RbV9kb21haW5faW1wbGljaXQJbV9leHBpcmVzBm1fbmFtZQZtX3BhdGgPbV9wYXRoX2ltcGxpY2l0Bm1fcG9ydA9tX3BvcnRfaW1wbGljaXQLbV9wb3J0X2xpc3QIbV9zZWN1cmUKbV9odHRwT25seQttX3RpbWVTdGFtcAdtX3ZhbHVlCW1fdmVyc2lvbgttX2RvbWFpbktleQ9Jc1F1b3RlZFZlcnNpb24OSXNRdW90ZWREb21haW4BBAQAAQAAAQEAAQAHAAAAAQABAAAKU3lzdGVtLlVyaQIAAAAYU3lzdGVtLk5ldC5Db29raWVWYXJpYW50AgAAAAEBDQEBCAEBDQgBAQIAAAAJBAAAAAoF5f///xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYcAAAACTEyNy4wLjAuMQAAAAAAAAAAAAYdAAAABW5hbWUxCRMAAAAACQQAAAABCgAAgFhsCQ2+tQgGIAAAAAV2YWx1ZQAAAAAJBwAAAAAACw== Expected: True Actual: False Stack Trace: at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.ValidateAgainstBlobs(Object obj, String[] blobs) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs:line 62 Build : Master - 20170626.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release - OSX.1012.Amd64-x64 - Release +21722 area-Infrastructure Turn netcore vs netfx apicompat checks into errors To help with compat issues like https://github.com/dotnet/corefx/pull/21388/files#r123627397 we need to turn the ApiCompat runs on all the time and make them errors. The start of this work is in branch https://github.com/weshaggard/corefx/tree/EnableNetFxApiCompat but it still needs some work before it passes. cc @ericstj @danmosemsft +21723 area-System.Threading Enable ReaderWriterLockSlim test for UapAot Fixes #21585 Actual issue fixed by PRs dotnet/coreclr#12530 and dotnet/corert#4018 +21724 area-Serialization DerivedTypeWithDifferentOverrides fail when running on desktop We need enable this test back on netfx once port #21716 on the desktop. +21725 area-System.Threading Add some debugging code to help diagnose an issue Issue #18058 +21726 area-System.Net Verify that Interop.Kernel32.SetFileCompletionNotificationModes is available in UAP Ensure that Interop.Kernel32.SetFileCompletionNotificationModes Win32 API is available in the Store Profile. Related to the discussion in #20212 +21727 area-System.Diagnostics Replace NtQueryInformationProcess with GetProcessID GetProcessID is in WACK We only use NtQueryInformationProcess in one place - GetProcessIdFromHandle so we can remove all use of it. @sepidehMS +21728 area-System.Diagnostics Throw PNSE for Process.Modules and Process.MainModule in UWP We cannot use K32EnumProcessModules in UWP as it's not on the approved list. It’s used by Process.Modules and Process.MainModule -- usage is low and there's workarounds so just throw PNSE for those in UWP only. +21729 area-System.Net Certain TcpClient (and potentially other class) constructors perform I/O Performing I/O in a constructor is not supported by the UWP policies if that constructor is called on an UI thread. We need to investigate if we need to change the implementation, obsolete the constructors or at least document this behavior. +21730 area-System.Runtime Initial commit of a .NET Standard status suite My team is working on tech to generate tests based on observations of real running applications. This first commit is an experiment to understand the value these tests will have an the cost. More to come. cc: @weshaggard @danmosemsft +21731 area-Serialization Fix DerivedTypeWithDifferentOverrides in reflectiononly mode Test DerivedTypeWithDifferentOverrides still fail in reflectiononly mode. #21716 +21732 area-System.Net Tracking ETW UAP test failures against a single issue. Global mutex is not supported in UAP. - Removing Global mutex bug# - it will not be supported in UAP. - Tracking all ETW UAP tests failures against a single issue. +21733 area-System.Data Add TestCommandBuilder() and TestInitialCatalogStandardValues() in SqlSchemaInfoTest TestCommandBuilder() and TestInitialCatalogStandardValues() need to be filled out after CommandBuilder and PropertyDescriptor become supported in .NET Core. +21735 area-Infrastructure Update intellisense rel Port https://github.com/dotnet/corefx/pull/21681 to release/2.0.0 PTAL @ericstj FYI @Petermarcu +21736 area-System.Security [release/2.0] Port HighSierra crypto fixes Port the bugfixes for crypto on macOS High Sierra from https://github.com/dotnet/corefx/pull/21631. Since the disabled test didn't eliminate the segfault in test execution it isn't being backported with this PR. +21737 area-System.Security [release/1.1] Address kCCUnimplemented in CCCryptoReset for ECB Backport from https://github.com/dotnet/corefx/pull/21631. This commit is the only one relevant to the 1.1 release. +21738 area-System.Net HttpClientEKUTest hang in UAP The HttpClientEKUTest tests require several prerequisites installed to run. I've noticed that the tests hang if the root CA is installed. The tests make use of most of the server certificate callback and client certificates so it may be that this issue is related to (or just a side effect of) #21627 and #21628 +21739 area-System.Net Enabling BypassOnLocal_MatchesExpected test after dependent contracts were fixed for UAP Fixes #20137 Fixes #17995 +21740 area-System.Runtime Fix intermittent failures in StringTests Fixes: https://github.com/dotnet/corefx/issues/21541 and also few issues which we haven't hit yet but were time bombs Root cause of failures: On UAP setting culture for the first time happens immediately. After the first set it may not happen immediately and the value is dependent on the fact if Windows has already changed it (this usually happens really quickly but is not quick enough for stress testing) Simple repro showing the issue: ```csharp for (int i = 0; i < 1000; i++) { foreach (var culture in cultures) { var c = culture; CultureInfo.CurrentCulture = c; Assert.Equal(c.LCID, CultureInfo.CurrentCulture.LCID); } } // example cultures are hu-HU, invariant, en-US ``` This has failed 100% of the time on my local box +21741 area-System.Runtime GCHandle double-free in GCHandleTests This case https://github.com/dotnet/corefx/blob/954d7199ffd45537e89aa1b15b3cc38df56f58e1/src/System.Runtime.InteropServices/tests/System/Runtime/InteropServices/GCHandleTests.cs#L125 is causing the GCHandle to be double-freed here https://github.com/dotnet/corefx/blob/954d7199ffd45537e89aa1b15b3cc38df56f58e1/src/System.Runtime.InteropServices/tests/System/Runtime/InteropServices/GCHandleTests.cs#L151 It leads to intermittent crashes with release CoreCLR build, and asserts with debug CoreCLR build. +21742 area-System.Net Removing ActiveIssue attributes. Adding component name to all WebClient tests. Fixes #20141 Fixes #18680 (removing ActiveIssue) +21743 area-System.Runtime Fix GCHandle double-free Fix https://github.com/dotnet/corefx/issues/21741, #21703, #21526 +21744 area-System.Runtime Using WindowsRuntimeBuffer should not require rd.xml From @yizhang82 in #21658 > @hughbe @safern The MissingMetadataException doesn't make sense to me. It looks like there is a bug in latest .NET native. We should not require people to add WindowsRuntimeBuffer in rd.xml. @tijoytom Can you help take a look? The exception diff seems to be a result of overly aggressive optimization. I remember @hoyMS mentioned something like this in the past. If we keep running into issues like these, we should consider turning off that particular optimization, at least in our testing. And if that optimization doesn't bring us a lot of value, we should consider simply turn it off in the compiler by default. The failing tests were fixed by updating the `rd.xml` file. The failing tests were: - IsSameData_Buffer_ReturnsExpected - AsStream_Buffer_Success +21745 area-System.Diagnostics Fix System.Diagnostic.Tracing Tests Running on UWP Various fixes to EventSource tests to enable them to run on UWP. +21746 area-System.Diagnostics Remove usage of NtQueryInformationProcess and K32EnumProcessModules from System.Diagnosctics.Process for UWP Fixes https://github.com/dotnet/corefx/issues/21727 Fixes https://github.com/dotnet/corefx/issues/21728 Replaces NtQueryInformationProcess with GetProcessId and converts usage of K32EnumProcessModules to use QueryFullProcessImageName instead for UWP. cc: @danmosemsft @stephentoub +21747 area-System.Drawing [porting] Image.FromFile has different argument validation from netfx "Following tests pass with netfx, fail with netcoreapp: ```cs [Fact] [ActiveIssue(21747, TestPlatforms.Windows)] public void FromFile_NullFileName_ThrowsArgumentNullException() { AssertExtensions.Throws(""path"", () => Image.FromFile(null)); AssertExtensions.Throws(""path"", () => Image.FromFile(null, useEmbeddedColorManagement: true)); } [Fact] [ActiveIssue(21747, TestPlatforms.Windows)] public void FromFile_EmptyFileName_ThrowsArgumentNullException() { AssertExtensions.Throws(""path"", null, () => Image.FromFile(string.Empty)); AssertExtensions.Throws(""path"", null, () => Image.FromFile(string.Empty, useEmbeddedColorManagement: true)); } [Fact] [ActiveIssue(21747, TestPlatforms.Windows)] public void FromFile_LongFile_ThrowsPathTooLongException() { string fileName = new string('a', 261); Assert.Throws(() => Image.FromFile(fileName)); Assert.Throws(() => Image.FromFile(fileName, useEmbeddedColorManagement: true)); } [Fact] [ActiveIssue(21747, TestPlatforms.Windows)] public void FromFile_NoSuchFile_ThrowsFileNotFoundException() { Assert.Throws(() => Image.FromFile(""NoSuchFile"")); Assert.Throws(() => Image.FromFile(""NoSuchFile"", useEmbeddedColorManagement: true)); } ``` I have a fix" +21748 area-System.Drawing Add Image.FromFile/Image.FromStream negative tests Fixes #21747 +21750 area-System.Net Enable a bunch of ManagedHandler tests Required a few fixes: - libcurl respects the http_proxy environment variable, and we had a test verifying that. I added basic support for this, but we'll want to go back and add some additional support. - DefaultProxyCredentials were being ignored. cc: @geoffkizer +21752 area-System.Net Enable more ManagedHandler tests Required a few small src fixes: - Special-case handling of count==0 reads - Wrap IOExceptions and InvalidOperationExceptions from SendAsync in HttpRequestException - Add a ToString override to SafeFreeContextBufferChannelBinding to output the value of the binding rather than the type name in order to match WinHttpHandler's binding's behavior (@davidsh, is this the right thing to do?) cc: @geoffkizer, @davidsh +21753 area-System.Runtime Move ValueTask and friends to Corelib We will need to be able to use these in APIs defined in Corelib, e.g. on Stream. +21754 area-Infrastructure Disabled Performance tests for UAP in arm have to be investigated and re-enabled System.Numerics.Vectors.Performance.Tests and System.Collections.Performance.Tests where hanging in official build for UAP in ARM. We need to investigate if it was an actual hang or just because the ARM computers are slower. They where disabled in: https://github.com/dotnet/corefx/pull/21674 cc: @joperezr @danmosemsft +21755 area-System.Net UWP ClientWebSocket.ReceiveAsync returns partial message data as it arrives With these changes, the UWP implementation of ClientWebSocket.ReceiveAsync hands partial WebSocket message data back to the app as soon as it arrives. This eliminates the behavioral difference between .NET Core and UWP tracked by issue #21102. This fix leverages WinRT APIs that are only present since Windows 10 Insider Preview Build 16215, so API presence checks are in place. The pre-fix behavior takes effect when running on older Windows builds. Fixes #21102 CC: @mconnew +21756 area-System.Collections Avoid boxing HashBucket This avoids the boxing cost of `ImmutableHashSet+HashBucket` and fixes equality checks during rebalancing so that the contents of any hash collisions are considered. This fixes: 1. performance 1. data corruption on AoT platforms 1. data corruption due to improper tree rebalancing on any platform in edge cases of hash collisions. At least in theory. I haven't written a test to prove it. This makes `ImmutableHashSet` follow the same pattern as `ImmutableDictionary` for equating `HashBucket` instances. Fixes #19044 +21758 area-System.Runtime Re-enable one System.Runtime.Extensions Evironment_Exit test and fix it for UAP Contributes: https://github.com/dotnet/corefx/issues/21415 The test CheckExitCode was failing because: 1. RemoteExecutor for UAP always checks that the invoke exit code is SuccessExitCode (42). Since the intention of this test was to check an specific exit code because we where manipulating the process through a parameter to tell it to set that exit code it was failing since it was different than 42. To solve this I added an ExpectedExitCode to the RemoteInvokeOptions class which defaults to SuccessExitCode but this allows testing to override that exit code if for some reason the test should expect for a different one. 2. Even after I fixed that they where failing with NullReferenceException because we where trying to access the exit code from RemoteExecutor's result process, but for UAP this process is set to true. So I decided to split the tests. cc: @tarekgh @joperezr @danmosemsft +21761 area-System.Net SslStream bug on Linux/OSX: Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error "**`dotnet --version` output:** 1.0.1 The bug is present on Ubuntu, but not on Windows 7. I suspect it is an **issue on both Linux and OSX, but not an issue on Windows**, because it doesn't use OpenSSL. I created a project where **I reproduce the issue**, you can find it here: https://github.com/nopara73/SslStreamBug/ It only consists of a `Program.cs` file. The **place** where the exceptions are thrown is at `AuthenticateAsClientAsync`: ``` Console.WriteLine(""Ssl authenticating as client...""); using (var stream = new NetworkStream(socket, ownsSocket: false)) using (SslStream httpsStream = new SslStream(stream, leaveInnerStreamOpen: true)) { httpsStream .AuthenticateAsClientAsync( uri.DnsSafeHost, new X509CertificateCollection(), SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, checkCertificateRevocation: true) .Wait(); } ``` **And the exception:** ``` Unhandled Exception: System.AggregateException: One or more errors occurred. (A call to SSPI failed, see inner exception.) ---> System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. ---> Interop+Crypto+OpenSslCryptographicException: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error --- End of inner exception stack trace --- at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) at System.Net.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ReadFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait() at SslStreamBug.Program.Main(String[] args) in /home/user/SslStreamBug/SslStreamBug/Program.cs:line 56 ``` **Might be related:** https://github.com/dotnet/corefx/issues/10858 https://stackoverflow.com/questions/38960081/asp-net-core-linux-ssl-ssl-read-bio-failed-with-openssl-error " +21762 area-Serialization Native case fix @huanwu @shmao Test case about #17302. Please help review the code. +21763 area-System.Net [Proposal] Change internal type name System.Net.WebFileStream to System.Net.FileWebStream After porting one of my projects from .NET Framework 4.6.1 to netcoreapp2.0 target I have noticed some failing tests due to a tests dependency on netfx internal type name System.Net.FileWebStream. This type has different name in .Net Core - [System.Net.WebFileStream](https://github.com/dotnet/corefx/blob/master/src/System.Net.Requests/src/System/Net/FileWebRequest.cs#L311). Although I am aware of consequences of taking dependencies on internal framework types (they are not guaranteed to not change in the future) I think that in this case it would be reasonable to use identical type names for types performing the very same functions across related frameworks. Going even further it could be quite useful to have this type exposed in public API as it is exposed publicly anyway as a return type of some framework methods i.e. ```C# public Stream System.Net.WebClient.OpenRead(Uri uri); ``` That change would allow safe use of return type in scenarios where it is used to differentiate source of data returned. +21764 area-System.Drawing Add Graphics property tests +21765 area-System.Linq Modernise C# style within System.Linq In particular, `is`-with patterns is applicable quite a few places. +21766 area-System.Data System.Data.SqlClient .NET Core 2.0 Preview 2 - Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) "I'm getting this error with .NET core 2.0 Preview 2. I'm running Windows 7 SP1 x64. When I run dotnot --version from my output directory I get _2.0.0-preview2-006497_ # Code Example: ```c# static void Main(string[] args) { using (var conn = new System.Data.SqlClient.SqlConnection()) { using (var cmd = new System.Data.SqlClient.SqlCommand(, conn)) { cmd.CommandType = System.Data.CommandType.Text; conn.Open(); // error happens here var reader = cmd.ExecuteReader(); while (reader.Read()) { // doesn't matter } } } System.Console.WriteLine(""Done""); } ``` # Repo steps using VS 15.3.0 Preview 3.0: Create new C# .NET Core console app Add System.Data.SqlClient from nuget (currently version 4.3.1) Copy/paste code from above Start debugging project # What should happen: It should just work. It works fine in a project that targets ""regular"" .NET # Exception I'm getting: System.TypeInitializationException occurred HResult=0x80131534 Message=The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. Source= StackTrace: at System.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at ConsoleApp1.Program.Main(String[] args) in C:\Users\joshua_lonberger\Desktop\TicketModeler\ConsoleApp1\Program.cs:line 17 Inner Exception 1: TypeInitializationException: The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. Inner Exception 2: DllNotFoundException: Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) " +21767 area-System.Diagnostics "Process.Start(""cmd.exe"") launches inside existing console window (on Windows)" "_From @danwalmsley on June 30, 2017 8:57_ I would expect this code to launch a separate console window. ``` using System; using System.Diagnostics; namespace console_test { class Program { static void Main(string[] args) { Process.Start(""cmd.exe""); Console.ReadKey(); } } } ``` _Copied from original issue: dotnet/coreclr#12571_" +21771 area-System.Threading Clean up ValueTask code in preparation for copying it to coreclr Contributes to #21753 @weshaggard, we should have deleted the temporary, hidden member previously, but neglected to do so. No one should be using it. Concerns about removing it? +21772 area-System.IO Port #21273: read-only file system delete fix Ports changes from #21588, tests from #21684 for issue #21273. +21773 area-Infrastructure Updating xUnit Performance Api and Performance Tests - This changes enable us to have a baseline and track performance changes in the product. (The benchmarks and the way we measured has changed and we did not have an appropriate way to compare release/1.1.0 vs. release/2..0 vs. master) +21774 area-System.Runtime Fix System.Runtime.Loader.DefaultContext on uap (and simplify test code) Fixes https://github.com/dotnet/corefx/issues/20303 Test is testing few things (only stuff related to this PR is mentioned): - ensuring assembly could not be loaded by simply providing its name - changing resolver - checking if assembly can be loaded Previous logic of the test was moving the test assembly to a different path to ensure that assembly can't be found by default. This logic was problematic on UAP since we don't have access to the assembly to rename it. This change is making renaming happen during the build. That has simplified the logic of the test and thus some tiny refactoring was added to clean it up. +21775 area-System.Runtime Improve test coverage for Array.Clone .NET Native prior to 1.6 used to have a bug around `Array.Clone` for multidimensional arrays: https://stackoverflow.com/questions/44850907/avoid-net-native-bugs This was fixed as a side effect of https://github.com/dotnet/corert/commit/90698bcde54ddc0eb7c1c452cef6641f8b73bbac (we no longer implement MdArrays as an object with a single field that is an SzArray that backs the MdArray's data (we forgot to override `Clone` on that object)). We might want to add a regression test for this. +21776 area-System.Data No testResults.xml for System.Data.Common.Tests in UAPAOT This tests are failing fast. I just investigated and the tests that are causing this to happen are: [SqlXmlTest](https://github.com/dotnet/corefx/blob/ad697e016a5ed01a698ba780ea9dda0ed5cee901/src/System.Data.Common/tests/System/Data/SqlTypes/SqlXmlTest.cs#L34) It seems like all of them cause this tests to fail fast and not produce testResults.xml My guess since they are failing fast and only in all the Debug runs is that a Debug.Assert is failing. cc: @saurabh500 @krwq @danmosemsft @joshfree +21777 area-System.IO AnonymousPipeTest_CrossProcess.PingPong fails with SEH exception on uap " The test was disabled. Output: ``` Args: System.IO.Pipes.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonuaptests -notrait category=nonwindowstests -notrait category=OuterLoop -notrait category=failing Discovering: System.IO.Pipes.Tests Discovered: System.IO.Pipes.Tests Starting: System.IO.Pipes.Tests ERROR: System.IO.Pipes.Tests.AnonymousPipeTest_CrossProcess.PingPong [FAIL] System.AggregateException : One or more errors occurred. (RemoteExecuter: System.IO.Pipes.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb PingPong_OtherProcess 2060, 2068 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.SEHException: External component has thrown an exception. at Interop.Kernel32.GetFileType(SafeHandle hFile) at System.IO.Pipes.PipeStream.ValidateHandleIsPipe(SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream.Init(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream..ctor(PipeDirection direction, String pipeHandleAsString) at System.IO.Pipes.Tests.AnonymousPipeTest_CrossProcess.PingPong_OtherProcess(String inHandle, String outHandle) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData) Returned Error code: -4 Expected: True Actual: False) ---- RemoteExecuter: System.IO.Pipes.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb PingPong_OtherProcess 2060, 2068 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.SEHException: External component has thrown an exception. at Interop.Kernel32.GetFileType(SafeHandle hFile) at System.IO.Pipes.PipeStream.ValidateHandleIsPipe(SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream.Init(PipeDirection direction, SafePipeHandle safePipeHandle) at System.IO.Pipes.AnonymousPipeClientStream..ctor(PipeDirection direction, String pipeHandleAsString) at System.IO.Pipes.Tests.AnonymousPipeTest_CrossProcess.PingPong_OtherProcess(String inHandle, String outHandle) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RunnerRemoteExecutionService.RemoteExecutor.HandleTheRequest(ValueSet message, ValueSet returnData) Returned Error code: -4 Expected: True Actual: False Stack Trace: at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__1() at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__2() at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.IO.Pipes.Tests.AnonymousPipeTest_CrossProcess.PingPong() ----- Inner Stack Trace ----- at System.Diagnostics.RemoteExecutorTestBase.<>c__DisplayClass14_0.b__1() at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__0() Finished: System.IO.Pipes.Tests D:\e\clr\corefx\Tools\tests.targets(346,5): warning : System.IO.Pipes.Tests Total: 140, Errors: 0, Failed: 1, Time: 0.696658 [D:\e\clr\corefx\src\System.IO.Pipes\tests\System.IO.Pipes.Tests.csproj] Finished running tests. End time=13:45:09.95, Exit code = 0 D:\e\clr\corefx\Tools\tests.targets(346,5): warning MSB3073: The command ""D:\e\clr\corefx\bin/Windows_NT.AnyCPU.Debug/System.IO.Pipes.Tests/netstandard//RunTests.cmd D:\e\clr\corefx\bin/testhost/uap-Windows_NT-Debug-x64/"" exited with code -1. [D:\e\clr\co refx\src\System.IO.Pipes\tests\System.IO.Pipes.Tests.csproj] D:\e\clr\corefx\Tools\tests.targets(354,5): error : One or more tests failed while running tests from 'System.IO.Pipes.Tests' please check D:\e\clr\corefx\bin/Windows_NT.AnyCPU.Debug/System.IO.Pipes.Tests/netstandard/testResults.xml for details! [D:\e\clr \corefx\src\System.IO.Pipes\tests\System.IO.Pipes.Tests.csproj] ```" +21778 area-System.Net Test failure: System.Net.Http.Functional.Tests failing on macOS HIgh Sierra specifically "Opened on behalf of @danmosemsft The test `System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/InvalidCertificateServers_CertificateValidationDisabled_Succeeds(url: \""https://wrong.host.badss...` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : SSL peer certificate or SSH remote key was not OK Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 68 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 636 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 875 Build : Master - 20170629.02 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release " +21779 area-System.Data Disable System.Data.Common.Tests.SqlXmlTest for uapaot This tests are still crashing in uap. See: https://github.com/dotnet/corefx/issues/19202 cc: @saurabh500 @danmosemsft +21780 area-Infrastructure Have the uap version of RemoteExecutorTestBase.RemoteInvoke wait in a… … background thread Fixes #21275 +21781 area-Infrastructure Delete the 4.5.0-preview2 packages from myget "We had a couple builds of master that used the post-2.0 versioning (4.5.0) with the preview2 string. This is bogus. The packages are causing problems for folks who try to ""get latest"" and are getting old builds. /cc @weshaggard @dagood can you help script this with your NuGet-CLI-fu?" +21782 area-System.Text Re-enable Regex tests on UAP and speed them up (more than 40x times) Fixes https://github.com/dotnet/corefx/issues/21547 Fixes https://github.com/dotnet/corefx/issues/21835 I could not repro original issue (tests hanging) at all locally but seems to me like regular timeout. **I'm leaving these tests running over the weekend in a loop to see if they will fail.** Currently running for several minutes and haven't failed yet. Timing change ``` System.Text.RegularExpressions.Tests.RegexGroupTests Before => 128.812s Now => 2.784 ``` Most of the time difference is due to not calling RemoteInvoke so many times +21785 area-Infrastructure Update branch name This prepares us for pushing info to dotnet/versions +21786 area-Infrastructure UWP test runner metadata needs to be updated to Windows Insider SDK flight 16225 The Windows.winmd files used by the CoreFX repo and associated .NET Native toolchain were updated this week to the Windows.winmd corresponding to Windows Insider SDK flight 16225. For full context, see #21642 I’m now working on #21102 (out for PR - #21755) and the new code that references new APIs compiles just fine. However, running the UWP tests (i.e., msbuild /t:rebuildandtest /p:TargetGroup=uap) leads to a bunch of MissingMethodExceptions, such as: > System.Exception: Unknown ---> System.MissingMethodException: Method not found: 'Void Window > s.Networking.Sockets.MessageWebSocketControl.put_ReceiveMode(Windows.Networking.Sockets.MessageWebSocketReceiveMode)' All new API calls are guarded by _IsPropertyPresent_ checks already, and the code is executing on a machine that contains the new APIs (which is why the new code attempts to use them). After some analysis, we realized that these exceptions are due to the test runner’s UWP app having been compiled against an old Windows 10 SDK. Could you please help us update the test runner to be compiled against the RS3 16225 SDK? :) Please, let me know how I can help. P.S. Compiling against pre-RS3 SDKs won’t be supported for NETStandard20, so this is just a test issue. P.P.S. All tests pass in UAPAOT mode, since they execute outside of a UWP package. CC: @davidsh @weshaggard @yizhang82 @tijoytom @safern @DavidGoll @danmosemsft @joperezr @joshfree @MattGal +21788 area-Meta Namespace resolution not working "I created a simple Console app using .Net Core project template using Visual Studio and give that project name ""Core.Console.CS1"". The default program.cs files looks like this ```c# using System; namespace Core.Console.CS1 { class Program { static void Main(string[] args) { Console.WriteLine(""Hello World!""); } } } ``` on building the project, i get the error: WriteLine not found in Core.Console namespace. However, the full Namespace here is Core.Console.CS1, so my program should compile here." +21790 area-System.Net Feature Request: leaveOpen in System.Net.Http.StreamContent Hi, recently I'm using `StreamContent` with `HttpClient` to perform some file uploading operations. When I tried to implement the retry logic, I found out that * The passed-in `HttpContent` contained in `HttpRequestMessage` got disposed in `HttpClient.SendAsync`. * The underlying `Stream` in `StreamContent` [got disposed](https://github.com/dotnet/corefx/blob/6bf1e7c3032d3c24d5a41bbd880549ef4a8de2da/src/System.Net.Http/src/System/Net/Http/StreamContent.cs#L85) in `StreamContent.Dispose()` invocation. This means that if I have passed in a `Stream` in `StreamContent`'s ctor, the very `Stream` will be inevitably disposed after the first `HttpClient.SendAsync` invocation. This is not good, especially if the `StreamContent`-user is agnostic about how to reconstruct another brand-new `Stream` instance (but still can seek the position so the `Stream` will be at the same position as it is in the first call, as long as its `CanSeek` is `true`). I ended up writing [my own version of `StreamContent`](https://github.com/CXuesong/WikiClientLibrary/blob/3a3ece77923beb31956afee973e72e17fe1d2f4f/WikiClientLibrary/HttpContentEx.cs#L65) that won't dispose the underlying `Stream` when disposed. Still, I hope there will be some `leaveOpen`-like parameter in the constructor of `StreamContent`, like [the constructor of `StreamReader`](https://github.com/dotnet/corefx/blob/6bf1e7c3032d3c24d5a41bbd880549ef4a8de2da/src/System.Runtime.Extensions/src/System/IO/StreamReader.cs#L140). +21792 area-System.Memory Rename AsSpan to AsReadOnlySpan Fix #20242 @ahsonkhan +21793 area-System.Net HttpClient.GetAsync() causes uncatchable CryptographicException on Linux in OpenSslX509ChainProcessor.MapVerifyErrorToChainStatus "System: Ubuntu 16.04 and Ubuntu 16.10 Dotnet release: dotnet-dev-1.0.4 apt list --installed | grep dotnet output: ``` dotnet-dev-1.0.4/yakkety,now 1.0.4-1 amd64 [installed] dotnet-host/yakkety,now 2.0.0-preview2-25407-01-1 amd64 [installed,automatic] dotnet-hostfxr-1.1.0/yakkety,now 1.1.0-1 amd64 [installed,automatic] dotnet-sharedframework-microsoft.netcore.app-1.1.2/yakkety,now 1.1.2-1 amd64 [installed,automatic] ``` apt list --installed | grep openssl output: ``` libgnutls-openssl27/yakkety-updates,yakkety-security,now 3.5.3-5ubuntu1.2 amd64 [installed] openssl/yakkety-updates,now 1.0.2g-1ubuntu9.3 amd64 [installed] ``` Repro Code: ``` using System; using System.Net.Http; using System.Threading.Tasks; namespace Repro { class Program { static void Main(string[] args) { Do().GetAwaiter().GetResult(); } static async Task Do() { var client = new HttpClient(); try { var response = await client.GetAsync((new Uri(""https://obr03.ru/""))); Console.WriteLine(""Ok""); } catch(Exception ex) { Console.WriteLine(""Catched""); } } } } ``` Result Windows: `Catched` Result Linux: ``` Unhandled Exception: System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation. at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.MapVerifyErrorToChainStatus(X509VerifyStatusCode code) at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.AddElementStatus(X509VerifyStatusCode errorCode, List`1 elementStatus, List`1 overallStatus) at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.AddElementStatus(List`1 errorCodes, List`1 elementStatus, List`1 overallStatus) at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.BuildChain(X509Certificate2 leaf, HashSet`1 candidates, HashSet`1 downloaded, HashSet`1 systemTrusted, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan& remainingDownloadTime) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) at System.Net.Security.CertificateValidation.BuildChainAndVerifyProperties(X509Chain chain, 509Certificate2 remoteCertificate, Boolean checkCertName, String hostName) at System.Net.Http.CurlHandler.SslProvider.VerifyCertChain(IntPtr storeCtxPtr, IntPtr curlPtr) at Interop.Http.MultiPerform(SafeCurlMultiHandle multiHandle) at System.Net.Http.CurlHandler.MultiAgent.WorkerBodyLoop() Aborted (core dumped) ``` " +21795 area-System.Linq Remove checked floating negate instructions from S.L.Expressions Since checked/unchecked context has no effect on floating-point operations, `NegateCheckedSingle` is effectively a duplicate of `NegateSingle` and `NegateCheckedDouble` of `NegateDouble`. Remove these duplicates, reducing code size and number of cached instruction instances. +21796 area-System.Net Deadlock between HttpClientHandler and HttpWebRequest Classic out of order lock. This issue exists in 4.1.1.1 but not the .net Framework version (4.0.0.0). Seems to be introduced by https://github.com/dotnet/corefx/commit/d24ddedc5edb10d4ed385a1eb8bfb2351a117cd5. Which is related to #11100 Thread 1: ``` [Managed to Native Transition] System.dll!System.Net.Connection.CloseOnIdle() !!! lock (this) !!! System.dll!System.Net.ConnectionGroup.PruneExcesiveConnections() System.dll!System.Net.ServicePoint.ResolveConnectionLimit() System.dll!System.Net.ServicePoint.ConnectionLimit.set(int value) !!! lock (this) !!! System.Net.Http.dll!System.Net.Http.HttpClientHandler.CreateAndPrepareWebRequest(System.Net.Http.HttpRequestMessage request) System.Net.Http.dll!System.Net.Http.HttpClientHandler.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) System.Net.Http.dll!System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) System.Net.Http.dll!System.Net.Http.HttpClient.SendAsync(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) System.Net.Http.dll!System.Net.Http.HttpClient.SendAsync(System.Net.Http.HttpRequestMessage request) ``` Thread 2: ``` [Managed to Native Transition] System.dll!System.Net.ServicePoint.IncrementConnection() !!! lock (this) !!! System.dll!System.Net.Connection.CheckNonIdle() System.dll!System.Net.Connection.StartRequest(System.Net.HttpWebRequest request, bool canPollRead) System.dll!System.Net.Connection.SubmitRequest(System.Net.HttpWebRequest request, bool forcedsubmit) !!! lock (this) !!! System.dll!System.Net.ServicePoint.SubmitRequest(System.Net.HttpWebRequest request, string connName) System.dll!System.Net.HttpWebRequest.SubmitRequest(System.Net.ServicePoint servicePoint) System.dll!System.Net.HttpWebRequest.GetResponse() ``` +21799 area-Infrastructure Move AssertExtensions to Corefx.Private.TestUtilities Can't do PlatformDetection right now as it requires a buildtools change for ConditionalFact/Theory to work. @tarekgh suggested this +21800 area-System.Drawing Add Font tests +21801 area-System.Security Prevent SslProvider exceptions from being thrown to native code When using HttpClient to communicate over SSL, a callback provided to OpenSSL invokes our managed verification callback which in turn calls back to OpenSSL to manipulate the server's cert. For certain kinds of bad certs, that manipulation may end up throwing an exception, which accidentally is allowed to propagate out of the managed callback back across the interop boundary, which is unsupported and ends up crashing. The fix is simply to expand the existing catch block to prevent such exceptions from propagating and instead appropriately marshal them to the request that should be failed. In addition, this particular failure triggers a debug fail fast in X509Certificates due to an unrecognized status code while trying to map error codes to chain status. I've added the particular error code to avoid the assert, but it looks like there are other missing codes as well, so we should subsequently review those missing codes to determine whether they should also be added. Contributes to https://github.com/dotnet/corefx/issues/21793 (fixes it, but we should aim to port the fix to 2.0 if possible, so keeping it open) cc: @bartonjs, @janvorli, @geoffkizer, @Qowy +21803 area-Meta Port Winforms to CoreFX As the porting of System.Drawing from the Mono code is in progress what are the possibilities to have Winforms ported to CoreFX? Not having an official supported portable GUI is the only single point in which Java is in advantage... What do you think? +21804 area-System.Linq System.Linq.Parallel.Tests crashing in UapAot when building in ret mode A bunch of tests are crashing when this tests are built in ret mode. If we build them in chk mode the tests run successfully. The exception thrown that is causing them to crash is the following: ``` Unhandled exception at 0x581410DF (mrt100_app.dll) in xunit.console.netcore.exe: 0xC0000005: Access violation reading location 0x00000000. ``` One place where I've got the debugger to break on this exception was: https://github.com/dotnet/corefx/blob/master/src/System.Linq.Parallel/src/System/Linq/Parallel/Utils/GrowingArray.cs#L27 Note that this only happens in ret mode for the following configurations: - Debug x86 - Release x86 - Release Arm - Debug Arm This seems to be a codegen bug when running optimization. cc: @kouvel @danmosemsft @joshfree +21805 area-System.Linq Fix System.Linq.Parallel.Tests for UapAot by building them on chk mode only Since they where a lot of tests to disable and the debugger just crashes I think this is the best workaround to have the tests running and producing testResults.xml - please see: https://github.com/dotnet/corefx/issues/21804 cc: @kouvel @danmosemsft @joshfree +21806 area-System.Linq Compile Boolean != as ^ in System.Linq.Expressions Boolean and lifted Boolean `!=` is identical to `^` in results. In the case of the interpreter this allows for one type, and its memoising field, to be removed, so do so. In the case of the compiler this allows for a slightly shorter CIL output. Detecting this adds to the compilation complexity, but also inlining `EmitUnliftedEquality` into `EmitUnliftedBinaryOp` can remove a branch on two tests so the nett result is simpler. +21807 area-Infrastructure Groovy failing in CI for Linux x64 Release Build `Caused: java.lang.IllegalArgumentException: Failed to prepare archiveArtifacts step` at https://ci3.dot.net/job/dotnet_corefx/job/master/job/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/741/console and other runs. +21808 area-System.Net Enable more ManagedHandler tests cc: @geoffkizer +21809 area-System.Runtime Proposal: CallerArgumentExpressionAttribute ## Rationale In order to facilitate the language feature at https://github.com/dotnet/csharplang/issues/287, which has been championed and discussed in the LDM, we should add `CallerArgumentExpressionAttribute` to the framework. The LDM notes seem to approve of getting this into the framework: see [here](https://github.com/dotnet/csharplang/blob/master/meetings/2017/LDM-2017-05-16.md#callerargumentexpression). ## Proposal ```cs namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public sealed class CallerArgumentExpressionAttribute : Attribute { public CallerArgumentExpressionAttribute(string parameterName); // Added in response to @svick's comment public string ParameterName { get; } } } ``` ## Notes - The name of the constructor argument is intentionally `parameterName` and not `argumentName`. Parameters refer to the variables declared inside the callee, while arguments are the values passed by the caller. ![image](https://user-images.githubusercontent.com/9159214/27773044-483c57ac-5f3e-11e7-9a87-50876915a518.png) +21810 area-Meta .NET Core should consider having the equivalent of Windows.Devices.* Filing based on feedback: https://docs.microsoft.com/en-us/uwp/api/ There are lots of basic device operations from GPIO, I2C, to Bluetooth that should be really easy to do on all devices when using .NET Core. +21811 area-System.Security DSA-SHA1 SignedXml issues .netcore 2.0 "I have a SAMLlibrary which I am trying to piece together on .net core 2.0, however I have hit an issue it some pre-existing tests. The tests pass fine on net461 but when using netcoreapp2.0 fail. All the test is doing is ```c# private static bool VerifySignature(XmlDocument assertion) { var signedXml = new SignedXml(assertion.DocumentElement); var nodeList = assertion.GetElementsByTagName(""Signature"", ""http://www.w3.org/2000/09/xmldsig#""); signedXml.LoadXml((XmlElement)nodeList[0]); Assert.NotNull(signedXml.Signature); return signedXml.CheckSignature(); } ``` The xml files that is being passed in is located in the tests here: [DSA-SHA1 Saml2Assertion_01](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) [DSA-SHA1 Saml2Assertion_02](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) All other non-DSA pass e.g. RSA1,RSA256 just these I believe to be completely valid XMLDSIGS validated online as well as on dotnet FF. Any help would be appreciated as this is a blocker for me/" +21813 area-System.Console "Test: System.ConsoleTests.Perf_Console/OpenStandardInput failed with ""System.IO.IOException"" Too many open files" Opened on behalf of @Jiayili1 The test `System.ConsoleTests.Perf_Console/OpenStandardInput` has failed. System.IO.IOException : Too many open files Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) at System.ConsolePal.OpenStandardInput() at System.ConsoleTests.Perf_Console.OpenStandardInput() Build : Master - 20170703.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170703.01/workItem/System.Console.Performance.Tests/analysis/xunit/System.ConsoleTests.Perf_Console~2FOpenStandardInput +21814 area-System.Net remove Linux SSL assert that's no longer true My previous change made this assert no longer valid. Remove it. @stephentoub +21815 area-System.Net FailFast: Expected offset 0 when decrypting in System.Net.Security.Tests Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170703.01/workItem/System.Net.Security.Tests/wilogs ~~~ 2017-07-02 17:29:52,725: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Security.Tests 2017-07-02 17:29:52,959: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Security.Tests 2017-07-02 17:29:53,105: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Security.Tests 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: FailFast: Expected offset 0 when decrypting 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.EncryptDecryptHelper(SafeDeleteContext securityContext, Byte[] input, Int32 offset, Int32 size, Boolean encrypt, Byte[]& output, Int32& resultSize) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 157 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.DecryptMessage(SafeDeleteContext securityContext, Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 64 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.Decrypt(Byte[] payload, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SecureChannel.cs:line 972 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PrivateDecryptData(Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 501 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.DecryptData(Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 496 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 795 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 776 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 747 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 733 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, BufferAsyncResult asyncResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 675 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.Read(Byte[] buffer, Int32 offset, Int32 count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 131 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ReadByte() in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 124 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStream.ReadByte() in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 512 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs:line 248 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.b__45_0() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1.InnerInvoke() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c.<.cctor>b__8_0(Object s) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Environment.FailFast(System.String, System.Exception) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.EncryptDecryptHelper(System.Net.Security.SafeDeleteContext, Byte[], Int32, Int32, Boolean, Byte[] ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.DecryptMessage(System.Net.Security.SafeDeleteContext, Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.Decrypt(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PrivateDecryptData(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.DecryptData(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartReading(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessRead(Byte[], Int32, Int32, System.Net.BufferAsyncResult) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.Read(Byte[], Int32, Int32) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ReadByte() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStream.ReadByte() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[]) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<b__1>d ByRef) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__1() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer+d__4.MoveNext() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.ExecutionTimer+d__4, xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__4 ByRef) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(System.Func`1) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__9.MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.ExceptionAggregator+d__9, xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__9 ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(System.Func`1) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+d__46[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestInvoker`1+d__46[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__46 ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InvokeTestMethodAsync(System.Object) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<b__45_0>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestInvoker`1+<b__45_0>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<b__45_0>d ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__45_0() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__10`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.ExceptionAggregator+d__10`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__10`1 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Func`1>) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner+d__4.MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.XunitTestRunner+d__4, xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__4 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(Xunit.Sdk.ExceptionAggregator) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__10`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.ExceptionAggregator+d__10`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__10`1 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Func`1>) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1+d__43[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestRunner`1+d__43[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__43 ByRef) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1+d__19[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCaseRunner`1+d__19[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__19 ByRef) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1+d__32[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestMethodRunner`1+d__32[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__32 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestCasesAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1+d__31[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestMethodRunner`1+d__31[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__31 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1+d__38[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestClassRunner`1+d__38[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__38 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestMethodsAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1+d__37[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestClassRunner`1+d__37[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__37 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1+d__28[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCollectionRunner`1+d__28[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__28 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestClassesAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1+d__27[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCollectionRunner`1+d__27[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__27 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler+<>c.<.cctor>b__8_0(System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(System.Threading.SendOrPostCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread+<>c.b__5_0(System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:56,113: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip/RunTests.sh: line 91: 8147 Aborted (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Net.Security.Tests.dll -xml testResults.xml -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=failing 2017-07-02 17:29:56,145: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Net.Security.Tests 2017-07-02 17:29:56,145: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip 2017-07-02 17:29:56,148: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip 2017-07-02 17:29:56,149: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=17:29:56. Return value was 134 2017-07-02 17:29:56,151: INFO: proc(58): run_and_log_output: Exit Code: 134 2017-07-02 17:29:56,152: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-07-02 17:29:56,152: ERROR: helix_test_execution(83): report_error: Error running xunit None ~~~ +21816 area-Infrastructure Update strong-name-signing.md Fixed broken markdown for a link +21817 area-System.Net 'System.Net.Http.Functional.Tests' failed in ci /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.Net.Http.Functional.Tests' please check /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug/bin/Unix.AnyCPU.Debug/System.Net.Http.Functional.Tests/netcoreapp/testResults.xml for details! [/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug/src/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj] detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/centos7.1_debug/3384/consoleFull#-9775515633fe3402-0c0f-45a7-a707-47164965bab5 +21818 area-System.Net "System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ClientCertificates_Test failed with ""Xunit.Sdk.ThrowsException"" in CI " failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ClientCertificates_Test.Manual_SSLBackendNotSupported_ThrowsPlatformNotSupportedException detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_centos7.1_release/95/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandler_ClientCertificates_Test/Manual_SSLBackendNotSupported_ThrowsPlatformNotSupportedException/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.PlatformNotSupportedException) Actual: (No exception was thrown) ~~~ STACK TRACE: ~~~ --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.d__5.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_release/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs:line 80 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +21820 area-System.ComponentModel 'System.ComponentModel.TypeConverter.Tests' failed in ci /mnt/resource/j/workspace/dotnet_corefx/master/debian8.4_release/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.ComponentModel.TypeConverter.Tests' please check /mnt/resource/j/workspace/dotnet_corefx/master/debian8.4_release/bin/AnyOS.AnyCPU.Release/System.ComponentModel.TypeConverter.Tests/netcoreapp/testResults.xml for details! [/mnt/resource/j/workspace/dotnet_corefx/master/debian8.4_release/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj] detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/debian8.4_release/3078/ +21821 area-System.Net 'System.Net.WebSockets.Client.Tests' failed in CI /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.Net.WebSockets.Client.Tests' please check /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/bin/Unix.AnyCPU.Debug/System.Net.WebSockets.Client.Tests/netstandard/testResults.xml for details! [/mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.WebSockets.Client/tests/System.Net.WebSockets.Client.Tests.csproj] detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/96/ +21823 area-System.IO System.IO.Tests.FileInfo_Delete failed with Xunit.Sdk.TrueException in CI failed test: System.IO.Tests.FileInfo_Delete.Unix_ExistingDirectory_ReadOnlyVolume detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu14.04_debug/95/testReport/System.IO.Tests/FileInfo_Delete/Unix_ExistingDirectory_ReadOnlyVolume/ MESSAGE: ~~~ Assert.True() Failure Expected: True Actual: False ~~~ STACK TRACE: ~~~ at System.IO.Tests.FileSystemTest.RunAsSudo(String commandLine) in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.IO.FileSystem/tests/FileSystemTest.cs:line 69 at System.IO.Tests.FileSystemTest.ReadOnly_FileSystemHelper(Action`1 testAction, String subDirectoryName) in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.IO.FileSystem/tests/FileSystemTest.cs:line 108 at System.IO.Tests.File_Delete.Unix_ExistingDirectory_ReadOnlyVolume() in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.IO.FileSystem/tests/File/Delete.cs:line 144 ~~~ +21824 area-System.Data Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' "While using the mssql extension for vscode (which uses SqlClient implementation for .Net Core), I am having an issue for querying linked servers. See [link](https://github.com/Microsoft/vscode-mssql/issues/909) Steps to Reproduce: Connect to a SQL Server with ""authenticationType"": ""Integrated"" Do a select request with a join on the table of a linked server The following error appears : Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' Other requests work correctly. This works correctly on SSMS so I guess it is not an issue linked to a bad configuration." +21825 area-System.Runtime FormatException for invalid dates should show the date and format that were passed in Currently, we just get an error like: > FormatException: String was not recognized as a valid DateTime. This is a pain as you don't know what actually went wrong where. For example, I'm parsing a CSV file and the dates it contains are constantly changing their formats. So when something goes wrong, it's unclear and I have to catch and rethrow the exception, taking note of the date and format +21826 area-System.Xml XmlResolver: remove workaround, BaseUriTests: fix test This includes the change that was in https://github.com/dotnet/corefx/pull/20564 but not included in https://github.com/dotnet/corefx/pull/20623. It also fixes a test which was added in https://github.com/dotnet/corefx/pull/20561. CC @sepidehMS +21829 area-System.Diagnostics System.Diagnostics.PerformanceCounterType enum missing values I think System.Diagnostics.PerformanceCounterType is missing some values. I think it should also include PrecisionSystemTimer = 541525248; Precision100NsTimer = 542573824; PrecisionObjectTimer = 543622400; to match all the values from the Win32 api. This is based off https://github.com/Microsoft/referencesource/blob/4fe4349175f4c5091d972a7e56ea12012f1e7170/System/compmod/microsoft/win32/NativeMethods.cs#L993 If that makes sense I can create a PR. +21830 area-Serialization Testing serialization errors in release/2.0.0 branch - NO MERGE testing https://github.com/dotnet/corefx/pull/21734/files +21832 area-System.Numerics Investigate using Span in BigInteger implementation "As already mentioned within #21281 the all-new Span should bring many benefits to BigInteger. * We currently use pointers to spare some index calculations (performance) and ""abstract"" the differences between ordinary arrays and stackalloc based stuff --> use spans instead * We currently copy the array containing the actual number after every operation to trim leading zeros --> use span.slice instead? * And maybe there's more... We cannot get grid of unsafe code completely since there are stack-vs-heap paths based on stackalloc, but all the pointer based stuff should gracefully disappear; I think. I'm interested to dive into this, after the summer or so. " +21833 area-System.Security .NET should expose a generalized ASN.1 reader/writer API A lot of features in cryptography and X.509 certificates rely on the ability to read or write ASN.1-structured data. Not only would a good API for ASN.1 reading/writing simplify some of our existing code, it's very handy when someone wants to try adding support for something we don't have inbox, like reading a new certificate extension. There are a couple of different aspects to the problem: ## 1) What do inputs/outputs look like? One of the harder parts to remember to get right is rejecting unexpected data. For example, from https://tools.ietf.org/html/rfc3280#section-4.1.1.2: ```asn AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } ``` The `AlgorithmIdentifier` structure defines two, and only two fields. If a third field is present the data is invalid. (In our current internal implementation this means you need `if (reader.HasData) throw new CryptographicException();` at the end of reading it). This means that we really don't want to have to resort to a ReadNext() type API, since it's easy to do it poorly. One strawman is to build on the model of existing serializers, so one would so something like ```C# [StructLayout(StructLayoutKind.Sequential)] internal struct AlgorithmIdentifier { internal ObjectIdentifier Algorithm; [Optional] internal ??? Parameters; } ``` The fact that the first example drew a need for a base class might be telling that it needs to be a Sequential-layout class instead of a struct. Or maybe ASN-ANY has to be a byte[] that gets reinterpreted by the caller (but the serializer validates that it was legally encoded). But sequential ordering on the type seems like a requirement. C-based libraries generally seem to solve this problem with macro-based template languages. So maybe a template is the way to go. But, maybe not. Needs to consider: * OPTIONAL (DER says never to write down ASN-NULL for an OPTIONAL value) * DEFAULT (DER says to never write down a default value) * Sometimes a default is on a complex type (like saying that a default AlgorithmIdentifier is SHA-2-256). * ANY * Context-specific tagging * And Application-specific, and Private. I suppose * That tags *technically* are not constrained to one-byte values. * Collections (arrays/etc) can be SEQUENCE OF (write them down in the order I gave you) or SET OF (write them down in a proscribed order) * This *could* be skipped in the encoder and declared to be a problem for the data provider; but since the sort order for SET OF frequently comes down to the data length (before data values) it is sort of hard for them to do it right. * ASN INTEGER is C# BigInteger. But also supporting Int32/Int64/etc has virtue. * There are lots of string encodings in ASN * I'm sure floating point is unpleasant. * DateTime values can be pretty weird. X.509 adds more restrictions than DER does. Is that an encoding? An attribute? A post-deserialization validation? * Any other quirks that exist when combining ITU-T X.680 (ASN), ITU-T X.690 (BER/CER/DER) and C#. ## 2) What encodings are supported? ITU-T X.690 defines 3 different encoding rulesets: * BER (Basic Encoding Rules) * CER (Canonical Encoding Rules) * DER (Distinguished Encoding Rules) Generally speaking; BER defines all the possibilities for representing data, CER describes a set of restrictions on BER, and DER describes even more restrictions. Occasionally CER and DER give conflicting recommendations, though. * Read-as-BER can read anything. * Read-as-CER (maybe) should reject an octet-string with a primitive encoding in excess of 1000 octets (ITU-T REC X.690 2015-08 section 9.2) * (Maybe there needs to be CER-strict and CER-flexible?) * Read-as-DER should (definitely) reject any indefinite length encoding (ITU-T REC X.690 2015-08 section 10.1). Almost all things in cryptography use DER, making DER a minimum bar. But, since [CMS / S/MIME / PKCS#7](https://tools.ietf.org/html/rfc2315) says that it's designed to allow BER indefinite length encodings, there are clearly cases where readers need to be more flexible. (Windows and OpenSSL both write all CMS objects with DER; macOS uses indefinite length encodings) ## 3) What does an API look like? Largely this comes out of the inputs/outputs section, but encodings need to be taken into account. ```C# public static AsnEncoding { public static ???? Encode(T value, AsnEncodingType type, Span output); public static ???? Decode(ReadOnlySpan input, } ``` If there's a base class then there could be an OnDeserialize()-style validation callback per hydrated member. If it's a convention that ends up being reflection, which isn't super fun. So maybe it's just up to the user... but that's somewhat annoying for embedded structures. Particularly through OPTIONAL. ----- It probably makes sense to try to design the API, and use it internally, and then eventually expose it (essentially letting internal consumption be the proving ground). +21835 area-System.Text System.Text.RegularExpressions.Tests.Match_SpecialUnicodeCharacters* is failing on UAP This test is failing because of combination of two windows bugs: - setting a culture to invariant does not always happen - turkish I should not be lowercased to i on en-US This test is being renamed to System.Text.RegularExpressions.Tests.Match_SpecialUnicodeCharacters_Invariant in https://github.com/dotnet/corefx/pull/21782 @tarekgh, could you provide details? +21837 area-System.Diagnostics some style fixes While working on the IntelliSense for EventCounter, I stumbled upon this topic. If the bold/italic styling is done inside a fenced block, it won't work. BTW, is this something we should transform in an official doc? There would be some work involved since this is written in a very informal way. I also don't know what you mean on item 3 (line 37). +21838 area-System.Security Fix segfault on chain build on macOS High Sierra When building a cert chain for self-issued certificates on High Sierra, Security.framework gets into a bad state. One minute after entering SecTrustEvaluate the function exits with the trust result set to Invalid and the return value (an OSStatus) set to success. Continuing to interact with that chain results in more slowdowns and/or a null-dereference triggering a segfault. Hopefully the underlying issue is fixed before 10.13 RTM, but for now we can be less destructive by throwing an exception instead of letting the native code terminate the process. This addresses #21436 in master, but we'll probably want to backport the fix to 2.0. See the issue for the saga of finding out where the problems arose. +21839 area-Serialization Fix BinaryFormatter UAPAOT build Fixes UAPAOT compilation for the System.Runtime.Serialization.Formatters test, which fails because a test struct has a field of type Span, but isn't marked IsByRefLike. +21841 area-System.Net Disable hostname check on macOS with non-SecureTransport backend. fixes #21778 cc @bartonjs @stephentoub @danmosemsft OSX 10.13 has LibreSsl as crypto backend. Disable hostname checks on certificates when using ```HttpClientHandler.DangerousAcceptAnyServerCertificateValidator``` as ```ServerCertificateCustomValidationCallback``` +21845 area-System.Drawing File locking during Drawing tests ``` 2017-07-04 00:21:19,194: INFO: proc(54): run_and_log_output: Output: System.Drawing.Tests.IconTests.Save_ClosedOutputStreamNoIconData_DoesNothing [FAIL] 2017-07-04 00:21:19,194: INFO: proc(54): run_and_log_output: Output: System.IO.IOException : The process cannot access the file 'C:\dotnetbuild\work\95163101-5a92-4162-b58e-e4103c9b9f6f\Work\1606da83-0c1a-4490-ad29-030060e6260d\Unzip\bitmaps\48x48_multiple_entries_4bit.ico' because it is being used by another process. 2017-07-04 00:21:19,210: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-07-04 00:21:19,273: INFO: proc(54): run_and_log_output: Output: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) 2017-07-04 00:21:19,273: INFO: proc(54): run_and_log_output: Output: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 2017-07-04 00:21:19,273: INFO: proc(54): run_and_log_output: Output: at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) 2017-07-04 00:21:19,273: INFO: proc(54): run_and_log_output: Output: at System.Drawing.Icon..ctor(String fileName, Int32 width, Int32 height) 2017-07-04 00:21:19,273: INFO: proc(54): run_and_log_output: Output: at System.Drawing.Icon..ctor(String fileName) 2017-07-04 00:21:19,273: INFO: proc(54): run_and_log_output: Output: at System.Drawing.Tests.IconTests.Save_ClosedOutputStreamNoIconData_DoesNothing() ``` +21846 area-System.Drawing Fix locking during drawing tests "Fix https://github.com/dotnet/corefx/issues/21845 FileStream.ctor and File.Open default for FileAccess is FileAccess.ReadWrite (unless FileMode.Append, then FileAccess.Write only). FileStream.ctor default for FileShare is FileShare.Read, but File.Open's default is FileShare.None. In Windows, FileAccess maps to GENERIC_READ and/or GENERIC_WRITE, and FileShare to FILE_SHARE_READ, FILE_SHARE_WRITE, and/or ""FILE_SHARE_NONE"". The valid combinations for CreateFile calls are shown here: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363874(v=vs.85).aspx. Essentially the file access required must be allowed by other handles' file share values. So if an existing handle has GENERIC_READ, other handles must all include FILE_SHARE_READ. I didn't look at Unix. In this case the tests opened the icon file with a FileStream using FileMode.Open passed, and therefore the defaults of FileAccess.ReadWrite and FileShare.Read. Other tests called the Icon constructor which opened the icon file with `new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)`. The FileAccess.ReadWrite is not compatible with the FileShare.Read, causing the error. The fix is to explicitly request FileAccess.Read in the tests. Also noticed a use of File.Open with the default values of FileAccess.ReadWrite and FileShare.None. Since it's just reading from the file, it seems reasonable to pass FileAccess.Read, FileShare.Read explicitly, so another notional process could read concurrently." +21847 area-System.IO Port fix to DriveInfo for apple FS Fixes #21597 Port #21636 to release/2.0.0 +21850 area-Infrastructure "No test result generated under ""System.Xml.RW.XmlWriterApi.Tests""" "No test result generated under ""System.Xml.RW.XmlWriterApi.Tests"" Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170704.01/workItem/System.Xml.RW.XmlWriterApi.Tests/wilogs Configuration: Windows.10.Amd64.ClientRS3-x86 Windows.10.Arm64-arm ~~~ 2017-07-03 19:42:18,296: INFO: proc(54): run_and_log_output: Output: Got manifest file appxmanifest.xml 2017-07-03 19:42:18,391: INFO: proc(54): run_and_log_output: Output: Removing any previous installation... 2017-07-03 19:42:18,391: INFO: proc(54): run_and_log_output: Output: Installing the application... 2017-07-03 19:42:19,578: INFO: proc(54): run_and_log_output: Output: Package ID is 5cd54353-3ed7-4a6e-a72f-db349f28867c_1.0.0.0_arm__v52bfwc2c21ha 2017-07-03 19:42:19,609: INFO: proc(54): run_and_log_output: Output: Starting the application... 2017-07-03 19:42:19,609: INFO: proc(54): run_and_log_output: Output: Resolved Folder Path: C:\Users\DotNetTestRunner\AppData\Local\Packages\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\ 2017-07-03 19:42:20,203: INFO: proc(54): run_and_log_output: Output: Waiting for the application to exit... 2017-07-03 19:42:31,871: INFO: proc(54): run_and_log_output: Output: Process has just exited with return code 255. 2017-07-03 19:42:31,871: INFO: proc(54): run_and_log_output: Output: Disabling the debugger... 2017-07-03 19:42:31,871: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:31,871: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:31,871: INFO: proc(54): run_and_log_output: Output: STDOUT & STDERR from imersive process: 2017-07-03 19:42:31,871: INFO: proc(54): run_and_log_output: Output: ================================================================================== 2017-07-03 19:42:31,887: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:31,887: INFO: proc(54): run_and_log_output: Output: ================================================================================== 2017-07-03 19:42:31,887: INFO: proc(54): run_and_log_output: Output: Removing the application... 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: SUCCESS 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: ExitCode 255 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: C:\dotnetbuild\work\074ab7a5-2eef-42da-8843-793c057a4837\Work\141c2691-75ba-443e-99a1-c81258f7bb52\Unzip>move C:\Users\DotNetTestRunner\Documents\TestResults\System.Xml.RW.XmlWriterApi.Tests.dll.xml .\testResults.xml 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: The system cannot find the file specified. 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: C:\dotnetbuild\work\074ab7a5-2eef-42da-8843-793c057a4837\Work\141c2691-75ba-443e-99a1-c81258f7bb52\Unzip>move C:\Users\DotNetTestRunner\Documents\TestResults\System.Xml.RW.XmlWriterApi.Tests.dll.txt .\logs.txt 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: The system cannot find the file specified. 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: C:\dotnetbuild\work\074ab7a5-2eef-42da-8843-793c057a4837\Work\141c2691-75ba-443e-99a1-c81258f7bb52\Unzip>type logs.txt 2017-07-03 19:42:33,437: INFO: proc(54): run_and_log_output: Output: The system cannot find the file specified. 2017-07-03 19:42:33,453: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=19:42:33.45, Exit code = 1 2017-07-03 19:42:33,453: INFO: proc(58): run_and_log_output: Exit Code: 1 2017-07-03 19:42:33,467: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-07-03 19:42:33,467: ERROR: helix_test_execution(83): report_error: Error running xunit None ~~~" +21851 area-System.Net System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromAsyncV6BoundToAnyV4_NotReceived failed in ci failed test: System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromAsyncV6BoundToAnyV4_NotReceived detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/97/testReport/System.Net.Sockets.Tests/DualModeConnectionlessReceiveMessageFrom/ReceiveMessageFromAsyncV6BoundToAnyV4_NotReceived/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.TimeoutException) Actual: typeof(Xunit.Sdk.EqualException): Assert.Equal() Failure Expected: ::1 Actual: ::ffff:127.0.0.1 ~~~ STACK TRACE: ~~~ at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromAsync_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2388 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.b__40_0() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2348 ~~~ +21852 area-System.Threading System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic failed with Xunit.Sdk.TrueException in ci failed test: System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu16.04_debug/95/testReport/System.Threading.Tests/MutexTests/CrossProcess_NamedMutex_ProtectedFileAccessAtomic_prefix____8bef4c7fff8f4893b56954031c2e7508___/ MESSAGE: ~~~ Assert.True() Failure Expected: True Actual: False ~~~ STACK TRACE: ~~~ at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__2() in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug/src/Common/tests/System/Threading/ThreadTestHelpers.cs:line 48 at System.Threading.Tests.ThreadTestHelpers.RunTestInBackgroundThread(Action test) in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug/src/Common/tests/System/Threading/ThreadTestHelpers.cs:line 100 at System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic(String prefix) in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu16.04_debug/src/System.Threading/tests/MutexTests.cs:line 228 ~~~ +21853 area-System.Net "Test: System.Net.WebSockets.Client.Tests.KeepAliveTest/KeepAlive_LongDelayBetweenSendReceives_Succeeds failed with ""System.Net.WebSockets.WebSocketException""" Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.KeepAliveTest/KeepAlive_LongDelayBetweenSendReceives_Succeeds` has failed. System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseSent, CloseReceived, Closed' Stack Trace: at xunit.console.netcore!+0x7efa6f at xunit.console.netcore!+0x7ef9bf at xunit.console.netcore!+0x7ef8fd --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x69714d at xunit.console.netcore!+0x6970a3 at xunit.console.netcore!+0x697035 at xunit.console.netcore!+0x5a4f37 at System.Net.WebSockets.Client.Tests.KeepAliveTest.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x69714d at xunit.console.netcore!+0x6970a3 at xunit.console.netcore!+0x697035 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x69714d at xunit.console.netcore!+0x6970a3 at xunit.console.netcore!+0x697035 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x69714d at xunit.console.netcore!+0x6970a3 at xunit.console.netcore!+0x697035 Build : Master - 20170704.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170704.01/workItem/System.Net.WebSockets.Client.Tests.Execution/analysis/xunit/System.Net.WebSockets.Client.Tests.KeepAliveTest~2FKeepAlive_LongDelayBetweenSendReceives_Succeeds +21854 area-System.Net System.Net.Mail.Tests.LoggingTest.EventSource_EventsRaisedAsExpected failed Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170704.01/workItem/System.Net.Mail.Functional.Tests/wilogs Configuration: OSX.1012.Amd64-x64 ~~~ 2017-07-03 17:51:35,990: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Mail.Functional.Tests 2017-07-03 17:51:36,121: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Mail.Functional.Tests 2017-07-03 17:51:36,184: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Mail.Functional.Tests 2017-07-03 17:52:36,718: INFO: proc(54): run_and_log_output: Output: System.Net.Mail.Tests.LoggingTest.EventSource_EventsRaisedAsExpected [FAIL] 2017-07-03 17:52:36,719: INFO: proc(54): run_and_log_output: Output: Timed out after 60000ms waiting for remote process 19702 2017-07-03 17:52:36,719: INFO: proc(54): run_and_log_output: Output: Expected: True 2017-07-03 17:52:36,719: INFO: proc(54): run_and_log_output: Output: Actual: False 2017-07-03 17:52:36,722: INFO: proc(54): run_and_log_output: Output: Stack Trace: 2017-07-03 17:52:36,813: INFO: proc(54): run_and_log_output: Output: /Users/buildagent/agent/_work/28/s/corefx/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs(208,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() ~~~ +21855 area-System.Net "Test: System.Net.Sockets.Tests.DualModeAcceptAsync/AcceptAsyncV6BoundToAnyV6_Success failed with ""System.TimeoutException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.DualModeAcceptAsync/AcceptAsyncV6BoundToAnyV6_Success` has failed. System.TimeoutException : Timed out while waiting for either of client and server connections... Stack Trace: at System.Net.Sockets.Tests.DualModeAcceptAsync.DualModeConnect_AcceptAsync_Helper(IPAddress listenOn, IPAddress connectTo) in /Users/buildagent/agent/_work/28/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 1016 Build : 2.0.0 - 20170704.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170704.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeAcceptAsync~2FAcceptAsyncV6BoundToAnyV6_Success +21856 area-System.Drawing Add SystemFonts tests +21857 area-System.IO Unix_NonExistentPath_ReadOnlyVolume failed in CI Failed on Debian 8.7 CI machine: https://mc.dot.net/#/user/stephentoub/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/be0145cb201f0154f7d5b2f878f9e495bdd29a83/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.FileInfo_Delete~2FUnix_NonExistentPath_ReadOnlyVolume ``` Unhandled Exception of Type Xunit.Sdk.TrueException Message : Assert.True() Failure\nExpected: True\nActual: False Stack Trace : at System.IO.Tests.FileSystemTest.RunAsSudo(String commandLine) in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_true_prtest/src/System.IO.FileSystem/tests/FileSystemTest.cs:line 70 at System.IO.Tests.FileSystemTest.ReadOnly_FileSystemHelper(Action`1 testAction, String subDirectoryName) in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_true_prtest/src/System.IO.FileSystem/tests/FileSystemTest.cs:line 102 ``` +21861 area-Infrastructure DO NOT MERGE - testing CI +21862 area-Serialization Disabling CookieContainer sanity check for release/2.0.0 "Fixes https://github.com/dotnet/corefx/issues/21720 Relates to https://github.com/dotnet/corefx/pull/21859 The errors are only happening in release/2.0.0 branch. For whatever reason this is not happening in master. Disabling the check as it isn't crucial for the 2.0 release. I will continue follow-up on the root cause. After a far too long investigation it seems (not 100% sure) that manipulating the field ""m_fqdnMyDomain"" via reflection after the CookieContainer object gets instantiated causes the field to appear at the top of the stack when calling `Type.GetFields`. ``` var cookieContainer = new CookieContainer(10, 5, 1024); // To avoid differences in generated blobs because of machine configuration (domain). typeof(CookieContainer) .GetField(""m_fqdnMyDomain"", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(cookieContainer, string.Empty); ``` After removing the manipulation the results look as expected." +21863 area-System.Drawing Expose and test SystemDrawingSection This was discussed in #20712 +21864 area-System.Drawing Cleanup uses of ClientUtils across Drawing.Common +21865 area-System.Net Zero byte Socket.ReceiveAsync does not complete when peer disconnects on Unix "When there is a pending Socket.ReceiveAsync for count==0 and the peer disconnects, the Completed event does not fire. This is caused by a workaround for macOS. When the peer disconnects, GetBytesAvailable returns 0. https://github.com/dotnet/corefx/blob/29fb3994aa493d68bb080063287f200a3a50167d/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs#L619-L640. CC @stephentoub repro: ```C# using System; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { new Program().Run(); } Thread _serverThread; Thread _clientThread; // used to synchronize between the threads TaskCompletionSource _serverListening = new TaskCompletionSource(); TaskCompletionSource _clientCompleted = new TaskCompletionSource(); public void Run() { _serverThread = new Thread(ServerThread); _clientThread = new Thread(ClientThread); var threads = new [] { _serverThread, _clientThread }; foreach (var thread in threads) { thread.Start(); } foreach (var thread in threads) { thread.Join(); } } public void ServerThread(object state) => ServerThreadAsync().Wait(); public void ClientThread(object state) => ClientThreadAsync().Wait(); public async Task ServerThreadAsync() { var listener = new TcpListener(IPAddress.Loopback, 0); listener.Start(); // clients can connect _serverListening.SetResult(listener.LocalEndpoint as IPEndPoint); var socket = await listener.AcceptSocketAsync(); System.Console.WriteLine($""{DateTime.Now}: Server: accept client""); socket.Dispose(); System.Console.WriteLine($""{DateTime.Now}: Server: dispose client""); } public async Task ClientThreadAsync() { // wait for the server to start var endpoint = await _serverListening.Task; Socket socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(endpoint); var sea = new SocketAsyncEventArgs(); sea.Completed += ReceiveCompleted; sea.SetBuffer(new byte[0], 0, 0); if (socket.ReceiveAsync(sea)) { System.Console.WriteLine($""{DateTime.Now}: Client: receive pending""); } else { System.Console.WriteLine($""{DateTime.Now}: Client: receive completed""); _clientCompleted.SetResult(null); } // wait for the client to complete await _clientCompleted.Task; } public void ReceiveCompleted(object sender, SocketAsyncEventArgs ae) { System.Console.WriteLine($""{DateTime.Now}: Client: receive completed""); _clientCompleted.SetResult(null); } } } ``` outputs ``` 7/4/17 5:59:56 PM: Client: receive pending 7/4/17 5:59:56 PM: Server: accept client 7/4/17 5:59:56 PM: Server: dispose client ```" +21866 area-System.Drawing Adding System.Drawing.Common.Drawing2D GraphicsPath tests. #20711 Converting mono GraphicsPath tests and adding few new. +21867 area-System.Security Question: how to store RSA piravate keys? With 2.0 now the private part of `RSAParameters` cannot be serialized any more, so what is the recommended way to store the private key? Thanks! +21870 area-System.Linq Test failure: System.Linq.Expressions.Tests.ArrayBoundsTests/SingleNegativeBoundErrorMessage(useInterpreter: True) Opened on behalf of @danmosemsft The test `System.Linq.Expressions.Tests.ArrayBoundsTests/SingleNegativeBoundErrorMessage(useInterpreter: True)` has failed. Assert.Equal() Failure\r Expected: (null)\r Actual: Arithmetic operation resulted in an overflow. Stack Trace: at System.Linq.Expressions.Tests.ArrayBoundsTests.SingleNegativeBoundErrorMessage(Boolean useInterpreter) at xunit.console.netcore!+0x16d75f8 at SharedLibrary!+0x753e93 at SharedLibrary!+0x753c93 Build : Master - 20170705.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Release - Debug +21873 area-Serialization Native case fix test no merge It is a test , please do not merge . +21875 area-System.Security "Test: System.Security.Cryptography.X509Certificates.Tests.CertTests/TestVerify failed with ""Interop+AppleCrypto+AppleCommonCryptoCryptographicException : No error.""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.X509Certificates.Tests.CertTests/TestVerify` has failed. Interop+AppleCrypto+AppleCommonCryptoCryptographicException : No error. Stack Trace: at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 207 at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/ChainPal.cs:line 581 at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Chain.cs:line 118 at System.Security.Cryptography.X509Certificates.X509Certificate2.Verify() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs:line 626 at System.Security.Cryptography.X509Certificates.Tests.CertTests.TestVerify() in /Users/buildagent/agent/_work/45/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/CertTests.cs:line 120 Build : Master - 20170705.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170705.01/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.CertTests~2FTestVerify +21876 area-System.Linq "Test: System.Linq.Parallel.Tests.ParallelQueryCombinationTests/SequenceEqual_OperationCanceledException(operation: SelectMany-ResultSelector) failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Linq.Parallel.Tests.ParallelQueryCombinationTests/SequenceEqual_OperationCanceledException(operation: SelectMany-ResultSelector)` has failed. Assert.Throws() Failure\r Expected: typeof(System.OperationCanceledException)\r Actual: (No exception was thrown) Stack Trace: at System.Linq.Parallel.Tests.AssertThrows.EventuallyCanceled(Action`2 query) at System.Linq.Parallel.Tests.ParallelQueryCombinationTests.SequenceEqual_OperationCanceledException(Labeled`1 operation) Build : Master - 20170705.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170705.01/workItem/System.Linq.Parallel.Tests/analysis/xunit/System.Linq.Parallel.Tests.ParallelQueryCombinationTests~2FSequenceEqual_OperationCanceledException(operation:%20SelectMany-ResultSelector) +21880 area-System.Threading "Provide common Task results for ""true"", ""false"", ""empty"", ""null"", etc" "It's extremely common both in the framework itself and applications built on top of the framework to statically cache your own versions of Task with common results retrieved via Task.FromResult, similar to: ``` C# /// /// Provides sentinel Tasks that represent commonly returned values. /// internal class TaskResult { /// /// Represents a Task that's completed successfully with the result of . /// public static readonly Task False = Task.FromResult(false); /// /// Represents a Task that's completed successfully with the result of . /// public static readonly Task True = Task.FromResult(true); } ``` Just a few examples in 5 minutes of searching, are: [AsyncTaskCache in mscorlib](http://referencesource.microsoft.com/#mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs,eb8b64a3166ac82a,references) [ADP in System.Data](http://referencesource.microsoft.com/#System.Data/System/Data/Common/AdapterUtil.cs,19bcf2b5a55bf1b3,references) [AsyncHelper in System.Xml](https://github.com/dotnet/corefx/blob/4f425df37377b5b2b8df750144695d89ceade51d/src/System.Private.Xml/src/System/Xml/AsyncHelper.cs#L11) [TplExtensions in Microsoft.VisualStudio.Threading](https://github.com/Microsoft/vs-threading/blob/v15.3/src/Microsoft.VisualStudio.Threading/TplExtensions.cs) [TaskResult in ProjectSystem](https://github.com/dotnet/project-system/blob/master/src/Microsoft.VisualStudio.ProjectSystem.Managed/Threading/Tasks/TaskResult.cs) Similar to what it did with Task.CompletedTask, the BCL should just provide these already cached values for common values, including true, false, empty string ("""") and null. " +21881 area-System.Threading "Test: System.Threading.Threads.Tests.ThreadTests/SleepTest failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Threading.Threads.Tests.ThreadTests/SleepTest` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.Threading.Threads.Tests.ThreadTests.SleepTest() in /root/corefx/src/System.Threading.Thread/tests/ThreadTests.cs:line 773 Build : 2.0.0 - 20170705.01 (Core Tests) Failing configurations: - Centos.73.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170705.01/workItem/System.Threading.Thread.Tests/analysis/xunit/System.Threading.Threads.Tests.ThreadTests~2FSleepTest +21883 area-System.Runtime Fix Environment.CommandLine to roundtrip with GetCommandLineArgs() Fix https://github.com/dotnet/corefx/issues/21267 +21886 area-System.Drawing MakeTransparent_GrayscalePixelFormat_ThrowsArgumentException failed in CI on desktop https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netfx+CGroup_Release+AGroup_x86+TestOuter_false_prtest/793/consoleText ``` ystem.Drawing.Tests.BitmapTests.MakeTransparent_GrayscalePixelFormat_ThrowsArgumentException [FAIL] Assert.Throws() Failure Expected: typeof(System.Runtime.InteropServices.ExternalException) Actual: (No exception was thrown) Stack Trace: D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Drawing.Common\tests\BitmapTests.cs(0,0): at System.Drawing.Tests.BitmapTests.MakeTransparent_GrayscalePixelFormat_ThrowsArgumentException() ``` +21887 area-System.Security [release/2.0] Fix segfault on chain build on macOS High Sierra When building a cert chain for self-issued certificates on High Sierra, Security.framework gets into a bad state. One minute after entering SecTrustEvaluate the function exits with the trust result set to Invalid and the return value (an OSStatus) set to success. Continuing to interact with that chain results in more slowdowns and/or a null-dereference triggering a segfault. Hopefully the underlying issue is fixed before 10.13 RTM, but for now we can be less destructive by throwing an exception instead of letting the native code terminate the process. Ports #21838 to release/2.0. Fixes #21436. +21888 area-System.Net release/2.0: Prevent SslProvider exceptions from being thrown to native code (#21801) Port #21801 to release/2.0.0 branch +21889 area-System.Net [release/2.0] Disable hostname check on macOS with non-SecureTransport backend. cc @bartonjs @stephentoub Master PR #21841 fixes #21778 @danmosemsft How to launch OSX 10.13 CI job? +21890 area-System.Data No testResults.xml generated for System.Data.*.Tests in UapAot when running in arm - System.Data.SqlClient.ManualTesting.Tests - System.Data.SqlClient.Stress.Tests - System.Data.SqlClient.Tests These tests are crashing in arm. @joperezr could you take a look at which tests are causing it to crash the arm machines? cc: @saurabh500 @danmosemsft @joshfree +21891 area-Infrastructure ILC is failing to compile multiple test projects - System.CodeDom.Tests - System.Collections.Concurrent.Tests - System.Collections.Immutable.Tests - System.Collections.NonGeneric.Test @joshfree who would be the right person to take a look at this? cc: @danmosemsft +21892 area-Infrastructure "tests periodically fail with ""too many open files"" on macOS machines" "We periodically have tests fail on our macOS machines with `System.IO.IOException : Too many open files` eg https://github.com/dotnet/corefx/issues/20226 https://github.com/dotnet/corefx/issues/21813 https://github.com/dotnet/corefx/issues/12503 https://github.com/dotnet/corefx/issues/18462 According to @MattGal "" For our OSX machines (which were basically set up once then cloned, as they are not VMs) ulimit -a shows 256 open files and 8 MB stack size, which is lower than the init-tools setting "" (this may be just because init tools wasn't run in that tab) We set `ulimit -n` (ie file descriptors) to 2048 in init-tools.sh on macOS only https://github.com/dotnet/corefx/blob/master/init-tools.sh#L27 . This is supposed to set both hard and soft limit - although I'm not sure this script is run as sudo. On my Ubuntu machine, `ulimit -n` shows 1024. This may not have actually applied until April (fixed in https://github.com/dotnet/corefx/pull/19363) We should either modify init-tools.sh to increase this limit and/or run `lsof` to try to figure out what the files are that are getting held open. @pjanotti perhaps you could try lsof a few times during a test run on macOS, see what number we typically get up to, and whether a leak stands out?" +21894 area-Infrastructure Display the contents of init-tools.log. https://github.com/dotnet/core-eng/issues/1096 Though `init-tools` command prepares a detailed log, the console output is minimal. To investigate a failure of `init-tools`, content of the log will be helpful. Hence this change attempts to display the content of `init-tools.log` to console. This is done by adding a task in build definition that does a `cat` or `type` of `init-tools.log`. This task runs only when a previous task that runs `init-tools` command fails. Another solution I thought was to update the command itself such that there is an option for verbose output, which I think is nicer, and costlier. @ellismg PTAL. +21895 area-System.Diagnostics Fix issues in ProcessManager.Win32 Issues are mentioned in https://github.com/dotnet/corefx/pull/21746. [System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Win32.cs](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Win32.cs) cc: @JeremyKuhne +21896 area-System.Diagnostics [release/2.0] Disable StartInfo_TextFile_ShellExecute on Win8 (#21397) Port disabling ShellExecute test for Win8. Porting PR #21397 +21897 area-System.Runtime Reactivate ILC tests that are no longer failing. +21899 area-System.Memory Should ReadOnlySpan.ToString() return the contents of the span? Trying out the new Spans for the first time and I was expecting `ReadOnlySpan.ToString()` to be an easy way to do a conversion. It just returns the default type name. I understand that `ReadOnlySpan` is an array-like structure but with https://github.com/dotnet/corefx/issues/21395 coming `ReadOnlySpan` is going to look string-like. Is their any precedent to `Something.ToString()` being special cased? +21902 area-System.Net UnknownHeaders_Success_Large() test will hang on Windows sometimes Please see the discussions here: https://github.com/dotnet/corefx/issues/19754#issuecomment-301313041 The `UnknownHeaders_Success_Large()` test are still disabled [(See here)](https://github.com/dotnet/corefx/blob/cd20a23b5225a51665d202e99a2a04fbf240f749/src/System.Net.HttpListener/tests/SimpleHttpTests.cs#L128) +21903 area-System.Net GetContext_InvalidRequest_DoesNotGetContext() throws ObjectDisposedException on UAP mode In System.Net.HttpListener, the GetContext_InvalidRequest_DoesNotGetContext() test will crash the UAP test runner. Below are the details in dump: ``` 0:035> !pe Exception object: 0000021504ba5150 Exception type: System.ObjectDisposedException Message: Cannot access a disposed object. InnerException: StackTrace (generated): SP IP Function 0000006BD2FFE3C0 00007FFA35B376BB System_Net_HttpListener!System.Net.HttpListenerResponse.CheckDisposed()+0x9b 0000006BD2FFE420 00007FFA35B3A04C System_Net_HttpListener!System.Net.HttpListenerResponse.get_OutputStream()+0x2c 0000006BD2FFE460 00007FFA35B40463 System_Net_HttpListener!System.Net.HttpListenerResponse+<>c.b__74_0(System.IAsyncResult)+0xa3 0000006BD2FFE4D0 00007FFA35B34962 System_Net_Sockets!System.Net.LazyAsyncResult.Complete(IntPtr)+0x292 0000006BD2FFE5D0 00007FFA35B34441 System_Net_Sockets!System.Net.ContextAwareResult.CompleteCallback()+0x71 0000006BD2FFE610 00007FFA35B343AF System_Net_Sockets!System.Net.ContextAwareResult+<>c.b__17_0(System.Object)+0x6f 0000006BD2FFE650 00007FFA6F5F37B1 System_Private_CoreLib!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x111 0000006BD2FFE6C0 00007FFA35B34207 System_Net_Sockets!System.Net.ContextAwareResult.Complete(IntPtr)+0x2e7 0000006BD2FFE7A0 00007FFA35B33CB3 System_Net_Sockets!System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)+0x253 0000006BD2FFE870 00007FFA35B33A41 System_Net_Sockets!System.Net.LazyAsyncResult.InvokeCallback(System.Object)+0x31 0000006BD2FFE8A0 00007FFA35B32733 System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32, System.Net.Sockets.SocketError)+0x73 0000006BD2FFE8E0 00007FFA35B323BE System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x5ae 0000006BD2FFEAD0 00007FFA6F7DDA43 System_Private_CoreLib!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x73 StackTraceString: HResult: 80131622 There are nested exceptions on this thread. Run with -nested for details ``` After running with -nested, the nested exception has the same StackTrace. ``` 0:035> !pe -nested Exception object: 0000021504ba5150 Exception type: System.ObjectDisposedException Message: Cannot access a disposed object. InnerException: StackTrace (generated): SP IP Function 0000006BD2FFE3C0 00007FFA35B376BB System_Net_HttpListener!System.Net.HttpListenerResponse.CheckDisposed()+0x9b 0000006BD2FFE420 00007FFA35B3A04C System_Net_HttpListener!System.Net.HttpListenerResponse.get_OutputStream()+0x2c 0000006BD2FFE460 00007FFA35B40463 System_Net_HttpListener!System.Net.HttpListenerResponse+<>c.b__74_0(System.IAsyncResult)+0xa3 0000006BD2FFE4D0 00007FFA35B34962 System_Net_Sockets!System.Net.LazyAsyncResult.Complete(IntPtr)+0x292 0000006BD2FFE5D0 00007FFA35B34441 System_Net_Sockets!System.Net.ContextAwareResult.CompleteCallback()+0x71 0000006BD2FFE610 00007FFA35B343AF System_Net_Sockets!System.Net.ContextAwareResult+<>c.b__17_0(System.Object)+0x6f 0000006BD2FFE650 00007FFA6F5F37B1 System_Private_CoreLib!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x111 0000006BD2FFE6C0 00007FFA35B34207 System_Net_Sockets!System.Net.ContextAwareResult.Complete(IntPtr)+0x2e7 0000006BD2FFE7A0 00007FFA35B33CB3 System_Net_Sockets!System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)+0x253 0000006BD2FFE870 00007FFA35B33A41 System_Net_Sockets!System.Net.LazyAsyncResult.InvokeCallback(System.Object)+0x31 0000006BD2FFE8A0 00007FFA35B32733 System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32, System.Net.Sockets.SocketError)+0x73 0000006BD2FFE8E0 00007FFA35B323BE System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x5ae 0000006BD2FFEAD0 00007FFA6F7DDA43 System_Private_CoreLib!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x73 StackTraceString: HResult: 80131622 Nested exception ------------------------------------------------------------- Exception object: 0000021504ba5150 Exception type: System.ObjectDisposedException Message: Cannot access a disposed object. InnerException: StackTrace (generated): SP IP Function 0000006BD2FFE3C0 00007FFA35B376BB System_Net_HttpListener!System.Net.HttpListenerResponse.CheckDisposed()+0x9b 0000006BD2FFE420 00007FFA35B3A04C System_Net_HttpListener!System.Net.HttpListenerResponse.get_OutputStream()+0x2c 0000006BD2FFE460 00007FFA35B40463 System_Net_HttpListener!System.Net.HttpListenerResponse+<>c.b__74_0(System.IAsyncResult)+0xa3 0000006BD2FFE4D0 00007FFA35B34962 System_Net_Sockets!System.Net.LazyAsyncResult.Complete(IntPtr)+0x292 0000006BD2FFE5D0 00007FFA35B34441 System_Net_Sockets!System.Net.ContextAwareResult.CompleteCallback()+0x71 0000006BD2FFE610 00007FFA35B343AF System_Net_Sockets!System.Net.ContextAwareResult+<>c.b__17_0(System.Object)+0x6f 0000006BD2FFE650 00007FFA6F5F37B1 System_Private_CoreLib!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x111 0000006BD2FFE6C0 00007FFA35B34207 System_Net_Sockets!System.Net.ContextAwareResult.Complete(IntPtr)+0x2e7 0000006BD2FFE7A0 00007FFA35B33CB3 System_Net_Sockets!System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)+0x253 0000006BD2FFE870 00007FFA35B33A41 System_Net_Sockets!System.Net.LazyAsyncResult.InvokeCallback(System.Object)+0x31 0000006BD2FFE8A0 00007FFA35B32733 System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32, System.Net.Sockets.SocketError)+0x73 0000006BD2FFE8E0 00007FFA35B323BE System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x5ae 0000006BD2FFEAD0 00007FFA6F7DDA43 System_Private_CoreLib!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x73 StackTraceString: HResult: 80131622 ``` +21904 area-System.Net User-provided SSL callback exceptions are rethrown incorrectly The current .NET Core code is behaving differently than .NET Framework when exceptions are thrown in a user-provided callback for the HttpClient ServerCertificateCustomValidationCallback. In .NET Framework, any exception bubbling out of a user-provided callback is trapped, saved, and placed as an inner exception to the main HttpRequestException that is thrown. This is the current behavior of HttpClient on .NET Framework. Even for HttpWebRequest on .NET Framework, the exception is placed as an inner exception to the top-level WebException. Currently, .NET Core is throwing a raw exception from the callback and propagating it as a top-level exception for HttpClient APIs. This bad pattern started with WinHttpHandler when I introduced (unknowingly) the bug. The behavior was then copied to the *Nix version. This current test is therefore invalid: ```c# [Fact] public async Task UseCallback_CallbackThrowsException_ExceptionPropagates() { // ... var handler = new HttpClientHandler(); using (var client = new HttpClient(handler)) { var e = new DivideByZeroException(); handler.ServerCertificateCustomValidationCallback = delegate { throw e; }; Assert.Same(e, await Assert.ThrowsAsync(() => client.GetAsync(Configuration.Http.SecureRemoteEchoServer))); } } ``` In my PR #21905 implementing ServerCertificateCustomValidationCallback for UWP, I have revised this test and disabled it on all platforms except UAP. +21905 area-System.Net Fix HttpClientHandler ServerCertificateCustomValidationCallback for UWP This PR implements the ServerCertificateCustomValidationCallback for UWP. While implementing this, I discovered that the behavior of the current .NET Core code is incorrect regarding how to propagate exceptions from the user provided callback. I opened up a new issue #21904 and revised the test as well. Fixes #21627 +21906 area-Infrastructure Build CoreFx with a mounted docker volume "For CoreFx Linux official builds, rather than starting a detached docker container and issuing commands to it; issue each docker command to a new docker container using a mounted volume. This method means that we share the disk drive between the Host machine and docker containers which allows us to grab logs / binaries /etc... whenever and not have to deal with the ""expose docker"" step which has been flakey and caused build warnings. /cc @MichaelSimons @weshaggard " +21907 area-System.Net Disable several ManagedHandler tests These were enabled as they weren't failing CI, but that's likely because they were being skipped rather than because they actually work. cc: @davidsh +21908 area-System.Net ClientWebSocket supports client certificates in UWP With these changes, the UWP implementation of ClientWebSocket.ConnectAsync takes the _ClientCertificates_ member of the app-provided _ClientWebSocketOptions_ into account. The first client cert that can be successfully converted into a WinRT client cert (if any) is configured on the underlying WinRT MessageWebSocket instance, leading to the cert being used for mutual TLS authentication when establishing connections with WSS endpoints. This fix leverages WinRT APIs that are only present since Windows 10 Insider Preview Build 16215, so API presence checks are in place. Fixes #21393 CC: @mconnew +21909 area-System.Security Make CertificateRequest chain tests pass under clock adjustments "The X509Chain objects built during CertificateRequest tests didn't set the chain.ChainPolicy.VerificationTime value, so they got ""now"". But if ""now"" changed (backwards) between when the test asked for the NotBefore values and when the chain was built, then NotTimeValid will be produced when success is expected. A quick audit of the X509Chains built in the test library showed that these were effectively the only ones which didn't set their VerificationTime value, and by having NotBefore be ""now"" when the certs are created, they were very sensitive to backwards clock adjustments. Addresses #21343 in master (since it's a test-only noise-reduction we'll likely want to fix in rel/2.0, too)" +21911 area-System.Drawing Add basic tests for AdjustableArrowCap Chipping in with some very basic validation for AdjustableArrowCap. There's more stuff to test on the base CustomLineCap class; this just tests the properties in AdjustableArrowCap itself. +21913 area-Serialization Make GetMember to read from base type if the property is internal in derived type but public in base type When a property in internal in derived type but public in base type, the GetMember need read from base type. Fix #21731 @shmao @mconnew @zhenlan +21914 area-System.Net Some S.N.HttpListener tests will break UWP test runner on Windows managed implementation `AcceptWebSocketAsync_ValidSubProtocol_Success()`, `AcceptWebSocketAsync_ValidWebSocket_SetsUpContextProperties()`, and `AcceptWebSocketAsync_AuthorizationInHeaders_ThrowsNotImplementedException()`, would throw a exception caught by runtime, and break UWP test runner. ``` Loading unloaded module list .. This dump file has an exception of interest stored in it. The stored exception information can be accessed via .ecxr. (e428.651c): Unknown exception - code c000027b (first/second chance not available) KERNELBASE!RaiseFailFastException+0x74: 00007ffa`d405f204 803d3d3c1b0000 cmp byte ptr [KERNELBASE!BasepIsSecureProcess (00007ffa`d4212e48)],0 ds:00007ffa`d4212e48=00 0:027> .ecxr rax=000000c96e8fe390 rbx=000000c96e8fe930 rcx=000000c96e8fe390 rdx=0000000000000000 rsi=0000000000000002 rdi=000000c96e8fe390 rip=00007ffad405f204 rsp=000000c96e8fe2b0 rbp=000000c96e8fe980 r8=0000000000000000 r9=0000000000000006 r10=0000000000000000 r11=00007ffad6e25a17 r12=00007ffad6825330 r13=0000000000000000 r14=00007ffad6822440 r15=0000000000000000 iopl=0 nv up ei pl zr na po nc cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000244 KERNELBASE!RaiseFailFastException+0x74: 00007ffa`d405f204 803d3d3c1b0000 cmp byte ptr [KERNELBASE!BasepIsSecureProcess (00007ffa`d4212e48)],0 ds:00007ffa`d4212e48=00 ``` EDIT: removed call stack since it contains line numbers. cc: @davidsh @DavidGoll @CIPop +21917 area-System.Net System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds failed in CI failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/99/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds_acceptedProtocol__Tls11__requestOnlyThisProtocol__False_/ MESSAGE: ~~~ System.Net.Http.HttpRequestException : could not establish SSL connection ---- System.IO.IOException : Authentication failed because the remote party has closed the transport stream. ~~~ STACK TRACE: ~~~ at System.Net.Http.HttpConnectionHandler.d__9.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 89 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__10.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 105 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__8.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 59 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.CookieHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/CookieHandler.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/AutoRedirectHandler.cs:line 28 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 104 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 66 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 102 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 884 at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 1102 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 745 at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 717 at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 132 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnectionHandler.d__9.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 79 ~~~ +21918 area-System.Runtime BinaryFormatter incompatibility regarding base class values between Desktop and Core "Given the following serializable classes: ```csharp [Serializable] class BaseClass { public const string DefaultValue = ""hello""; public string MissingValue { get; } = DefaultValue; } [Serializable] class FinalClass : BaseClass { } ``` When serializing `FinalClass` on Desktop .NET (4.6.1) and deserializing on .NET Core 2.0 Preview 2, `FinalClass.MissingValue` will always be unset. ## Test Case https://github.com/sandyarmstrong/BinaryFormatterSubclassTest ## Runtimes tested * .NET Core 2.0.0-preview2-006497 * .NET 4.6.1 (MS.NET and Mono 5.2.0.179) " +21920 area-System.IO "Test: System.IO.Tests.DirectoryInfo_Delete_bool/Unix_NotFoundDirectory_ReadOnlyVolume failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_Delete_bool/Unix_NotFoundDirectory_ReadOnlyVolume` has failed. Assert.True() Failure Expected: True Actual: False Stack Trace: at System.IO.Tests.FileSystemTest.RunAsSudo(String commandLine) in /root/corefx/src/System.IO.FileSystem/tests/FileSystemTest.cs:line 69 at System.IO.Tests.FileSystemTest.ReadOnly_FileSystemHelper(Action`1 testAction, String subDirectoryName) in /root/corefx/src/System.IO.FileSystem/tests/FileSystemTest.cs:line 98 at System.IO.Tests.Directory_Delete_str.Unix_NotFoundDirectory_ReadOnlyVolume() in /root/corefx/src/System.IO.FileSystem/tests/Directory/Delete.cs:line 214 Build : Master - 20170706.01 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170706.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Delete_bool~2FUnix_NotFoundDirectory_ReadOnlyVolume +21921 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest/GetAsync_IPBasedUri_Success failed with ""System.Net.Sockets.SocketException : No route to host""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest/GetAsync_IPBasedUri_Success(address: fe80::1%1)` has failed. System.Net.Http.HttpRequestException : could not connect ---- System.Net.Sockets.SocketException : No route to host Stack Trace: at System.Net.Http.ConnectHelper.d__0.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/ConnectHelper.cs:line 38 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__10.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 99 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__8.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 59 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.CookieHandler.d__3.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/CookieHandler.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/AutoRedirectHandler.cs:line 28 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass31_0.<b__0>d.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 278 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/buildagent/agent/_work/48/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 67 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__31.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 276 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Sockets.Socket.BeginConnectEx(EndPoint remoteEP, Boolean flowContext, AsyncCallback callback, Object state) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 4981 at System.Net.Sockets.Socket.BeginConnect(IPAddress address, Int32 port, AsyncCallback requestCallback, Object state) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2227 at System.Net.Sockets.TcpClient.BeginConnect(IPAddress address, Int32 port, AsyncCallback requestCallback, Object state) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs:line 295 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) at System.Net.Sockets.TcpClient.ConnectAsync(IPAddress address, Int32 port) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs:line 276 at System.Net.Http.ConnectHelper.d__0.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/ConnectHelper.cs:line 27 Build : Master - 20170706.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170706.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest~2FGetAsync_IPBasedUri_Success(address:%20fe80::1%251) +21922 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ServerCertificates_Test/UseCallback_ValidCertificate_ExpectedValuesDuringCallback failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ServerCertificates_Test/UseCallback_ValidCertificate_ExpectedValuesDuringCallback(url: https://corefx-net.cloudapp.net/Echo.as...` has failed. Assert.Equal() Failure Expected: None Actual: RemoteCertificateChainErrors Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.<>c__DisplayClass4_0.b__0(HttpRequestMessage request, X509Certificate2 cert, X509Chain chain, SslPolicyErrors errors) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 132 at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback, ProtocolToken& alertToken) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SecureChannel.cs:line 1036 at System.Net.Security.SslState.CompleteHandshake(ProtocolToken& alertToken) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 1022 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 817 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 801 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 970 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 873 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 830 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 801 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 970 at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 1102 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 720 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnectionHandler.d__9.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 89 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__10.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 105 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__8.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 59 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.CookieHandler.d__3.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/CookieHandler.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/Managed/AutoRedirectHandler.cs:line 28 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__4.MoveNext() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 138 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170706.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170706.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ServerCertificates_Test~2FUseCallback_ValidCertificate_ExpectedValuesDuringCallback(url:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.as... +21923 area-System.Net System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds failed in CI failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test.GetAsync_AllowedSSLVersion_Succeeds detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/99/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds_acceptedProtocol__Tls12__requestOnlyThisProtocol__False_/ MESSAGE: ~~~ System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- Interop+OpenSsl+SslException : SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. -------- Interop+Crypto+OpenSslCryptographicException : error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number ~~~ STACK TRACE: ~~~ at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 983 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 810 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 800 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 969 at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 924 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 872 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 685 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 603 at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 160 at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 257 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 257 at System.Net.Test.Common.LoopbackServer.d__11.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 167 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 104 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 66 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 102 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs:line 153 at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 128 ----- Inner Stack Trace ----- ~~~ +21924 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_NoSpecifiedProtocol_DefaultsToTls12 failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_NoSpecifiedProtocol_DefaultsToTls12` has failed. Assert.Equal() Failure Expected: Tls12 Actual: Tls Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c.<b__9_1>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.d__11.MoveNext() in /root/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 179 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass9_1.<b__0>d.MoveNext() in /root/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 173 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /root/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 67 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__9.MoveNext() in /root/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 171 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170706.01 (Core Tests) Failing configurations: - SLES.12.Amd64-x64 - Release - Debug - suse.422.amd64-x64 - Release - Debug - Ubuntu.1704.Amd64-x64 - Release - Debug - Ubuntu.1610.Amd64-x64 - Release - Debug - Ubuntu.1604.Amd64-x64 - Release - Debug - Ubuntu.1404.Amd64-x64 - Release - Debug - Debian.90.Amd64-x64 - Release - Debug - Debian.87.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170706.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test~2FGetAsync_NoSpecifiedProtocol_DefaultsToTls12 +21925 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_UnsupportedSSLVersion_Throws failed with ""Xunit.Sdk.ThrowsException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_UnsupportedSSLVersion_Throws(name: \""SSLv3\"", url: \""https://www.ssllabs.com:10300/\"")` has failed. Assert.Throws() Failure\r Expected: typeof(System.Net.Http.HttpRequestException)\r Actual: (No exception was thrown) Stack Trace: --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170706.01 (Core Tests) Failing configurations: - Windows.81.Amd64-x86 - Release - Windows.7.Amd64-x86 - Release - Windows.81.Amd64-x64 - Release - Windows.7.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170706.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test~2FGetAsync_UnsupportedSSLVersion_Throws(name:%20%5C%22SSLv3%5C%22,%20url:%20%5C%22https:~2F~2Fwww.ssllabs.com:10300~2F%5C%22)" +21926 area-System.Security "Test: System.Security.Cryptography.X509Certificates.Tests.ChainTests/VerifyWithRevocation failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Security.Cryptography.X509Certificates.Tests.ChainTests/VerifyWithRevocation` has failed. Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: at System.Security.Cryptography.X509Certificates.Tests.ChainTests.VerifyWithRevocation() in /Users/buildagent/agent/_work/48/s/corefx/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs:line 590 Build : Master - 20170706.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170706.01/workItem/System.Security.Cryptography.X509Certificates.Tests/analysis/xunit/System.Security.Cryptography.X509Certificates.Tests.ChainTests~2FVerifyWithRevocation +21927 area-System.Net System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test.GetAsync_NoSpecifiedProtocol_DefaultsToTls12 failed in CI failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test.GetAsync_NoSpecifiedProtocol_DefaultsToTls12 detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_debug/99/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_NoSpecifiedProtocol_DefaultsToTls12/ MESSAGE: ~~~ System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.IO.IOException : Unable to transfer data on the transport connection: Connection reset by peer. -------- System.Net.Sockets.SocketException : Connection reset by peer ~~~ STACK TRACE: ~~~ at System.Net.Http.HttpConnection.d__29.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnection.cs:line 885 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpConnectionHandler.d__8.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 60 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.CookieHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/CookieHandler.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/AutoRedirectHandler.cs:line 28 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass9_1.<b__0>d.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 173 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 66 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__9.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs:line 171 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Security.SslStreamInternal.EndRead(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 174 at System.Net.Security.SslStream.EndRead(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 537 at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.HttpConnection.<>c.b__42_0(Task`1 completed, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnection.cs:line 1089 at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.d__45.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnection.cs:line 1120 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnection.d__29.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnection.cs:line 724 ----- Inner Stack Trace ----- ~~~ +21928 area-System.Net Fix Socket.ReceiveAsync not completing for 0-byte receive on peer disconnect on Unix. Fixes https://github.com/dotnet/corefx/issues/21865 +21929 area-System.Runtime "Tests under: System.Tests.Array17Tests failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Tests.Array17Tests/CreateInstance_Type_Int_Int_Int_Invalid` has failed. Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: typeof(System.ArgumentException): The type 'System.Collections.Generic.List`1[T]' may not be used as an array element type. Stack Trace: at xunit.console.netcore!+0xd09eec at xunit.console.netcore!+0xd17eae at xunit.console.netcore!+0x808f51 at xunit.console.netcore!+0xd0846d at xunit.console.netcore!+0x81e83a at System.Array.CreateInstance(Type elementType, Int32 length1, Int32 length2, Int32 length3) at System.Tests.Array17Tests.<>c.b__12_2() at System.Func.Invoke() Build : Master - 20170706.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Debug - Windows.10.Amd64.ClientRS3-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170706.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.Array17Tests~2FCreateInstance_Type_Int_Int_Int_Invalid +21931 area-System.Runtime "Tests under: System.Tests.ArrayNetcoreappTests failed with ""System.InvalidOperationException""" Opened on behalf of @Jiayili1 The test `System.Tests.ArrayNetcoreappTests/CreateInstance_Type_Int_Int_Int_Invalid` has failed. Assert.Throws() Failure\r Expected: typeof(System.ArgumentException)\r Actual: typeof(System.InvalidOperationException): InvalidOperation_ArrayCreateInstance_NotARuntimeType. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: at xunit.console.netcore!+0x81e822 at System.Array.CreateInstance(Type elementType, Int32 length1, Int32 length2, Int32 length3) at System.Tests.ArrayNetcoreappTests.<>c__DisplayClass2_0.b__0() at System.Func.Invoke() Build : Master - 20170706.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Debug - Windows.10.Amd64.ClientRS3-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170706.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.ArrayNetcoreappTests~2FCreateInstance_Type_Int_Int_Int_Invalid +21932 area-System.Runtime Test failure: System.Tests.ArrayTests/CreateInstance_NotSupportedType_ThrowsNotSupportedException(elementType: typeof(GenericClass`1)) Opened on behalf of @Jiayili1 The test `System.Tests.ArrayTests/CreateInstance_NotSupportedType_ThrowsNotSupportedException(elementType: typeof(GenericClass`1))` has failed. Assert.Throws() Failure\r Expected: typeof(System.NotSupportedException)\r Actual: typeof(System.PlatformNotSupportedException): PlatformNotSupported_NoTypeHandleForOpenTypes. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: at xunit.console.netcore!+0xc92e74 at System.Tests.ArrayNetcoreappTests.<>c__DisplayClass0_0.b__0() at System.Func.Invoke() Build : Master - 20170706.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Debug - Windows.10.Amd64.ClientRS3-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170706.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.ArrayTests~2FCreateInstance_NotSupportedType_ThrowsNotSupportedException(elementType:%20typeof(GenericClass%601)) +21933 area-System.Net Port Uri.CheckForUnicode rewrite to desktop Visual Studio uses Uri to verify and check paths due to some limitations in the Path APIs. Uri.CheckForUnicode, (which appears to be have been rewritten in CoreFx to not allocate), is a cause of a [large amount of data](http://referencesource.microsoft.com/#System/net/System/UriExt.cs,258) in certain scenarios. Can we please port this rewrite to desktop? Here's an example of a trace taken just opening (http://github.com/dotnet/project-system) in Visual Studio, this one method is the cause of 3.7% of all data allocated: ![image](https://user-images.githubusercontent.com/1103906/27902230-4ee93376-6278-11e7-8602-6169e3fcef55.png) +21934 area-System.IO File System watcher Filters dont work on Linux So when I set: fileSystemWatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite; The created event is raised even when its a folder being created. Im on ubuntu 17.04, ``` .NET Command Line Tools (2.0.0-preview2-006497) Product Information: Version: 2.0.0-preview2-006497 Commit SHA-1 hash: 06a2093335 Runtime Environment: OS Name: ubuntu OS Version: 17.04 OS Platform: Linux RID: linux-x64 Base Path: /usr/share/dotnet/sdk/2.0.0-preview2-006497/ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview2-25407-01 Build : 40c565230930ead58a50719c0ec799df77bddee9 ``` +21936 area-System.Net Detect connection closed in ManagedHandler pooling We still need a real connection pooling implementation, but this change at least helps mitigate the case where the server closes the connection. When we take a connection from the pool, we now poll to see if it's readable, and if it is (meaning either it's been shutdown or there's data available to read), we discard it as it's unusable. cc: @geoffkizer +21937 area-System.Net release/2.0: Fix Socket.ReceiveAsync not completing for 0-byte receive on peer disconnect on Unix Port #21928 to release/2.0 branch. Fixes #21865. cc: @geoffkizer, @tmds +21938 area-System.Net Wrap CurlHandler cert validation callback exceptions in HttpRequestException Contributes to https://github.com/dotnet/corefx/issues/21904 (https://github.com/dotnet/corefx/issues/21905 is fixing the corresponding test, so for now in this PR I've just marked the associated test as ActiveIssue, and we'll just need to resolve the merge conflict accordingly based on whichever change is merged first.) cc: @davidsh, @geoffkizer +21940 area-System.Net handle Connection: close on response @stephentoub, @wfurt, @Priya91 +21941 area-Serialization Area-Serialization Sprint 121 The issue is for tracking issues to be done in sprint 121 (due by 7/27/2017) +21942 area-Serialization XmlSerializer works inconsistently with XmlTextAttribute on derived classes "For some reason XmlText only works on string properties on derived classes, while it can properly convert other types if the class is not derived. This seems weird and inconsistent. ```CSharp using System; using System.Xml.Serialization; namespace CoreXmlTextTest { public enum TestEnum { Off, On, Both } public class EnumTestUnderived { [XmlText] public TestEnum Test { get; set; } } public class EnumTestBase { } public class EnumTestDerived : EnumTestBase { [XmlText] public TestEnum Test { get; set; } } public class Program { public static void Main(string[] args) { var ser = new XmlSerializer(typeof(EnumTestUnderived)); var sw = new System.IO.StringWriter(); ser.Serialize(sw, new EnumTestUnderived() { Test = TestEnum.On }); Console.WriteLine(sw.ToString()); try { new XmlSerializer(typeof(EnumTestDerived)); } catch (Exception e) { Console.WriteLine(e); return; } } } } ``` The code above outputs: ``` On System.InvalidOperationException: There was an error reflecting type 'CoreXmlTextTest.EnumTestDerived'. ---> System.InvalidOperationException: Cannot serialize object of type 'CoreXmlTextTest.EnumTestDerived'. Consider changing type of XmlText member 'CoreXmlTextTest.EnumTestDerived.Test' from CoreXmlTextTest.TestEnum to string or string array. at System.Xml.Serialization.StructMapping.SetContentModel(TextAccessor text, Boolean hasElements) at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter) --- End of inner exception stack trace --- at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter) at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type) at CoreXmlTextTest.Program.Main(String[] args) in c:\Users\kb\Documents\Visual Studio 2015\Projects\Test\CoreXmlTextTest\Program.cs:line 31 ``` Note that the only difference whether it succeeds or not is whether the class derives from Object or from another class. .net Core version: 2.0.0-preview2-25407-01 NB: This issue is also present in the full .NET Framework." +21943 area-System.Data Change System.Data.Common to build with System.Xml.Private For uapaot, SqlXml needs to have access to the XmlReader.CreateSqlReader via reflection. The options are to disable reflect block on System.Xml.* which may cause the application size to be larger. To get past this issue, the recommendation is to change the CreateSqlReader visibility to public in System.Private.Xml and take a dependency on the private assembly. Fixes #19202 cc @tijoytom @stephentoub @joperezr @danmosemsft @jkotas +21944 area-System.Drawing Add license header to AdjustableArrowCapTests.cs I forgot to add the license header to this file. +21945 area-System.Net Interactions between different UAP HttpClient SSL tests causes failures "While working on PR #21905, I discovered some test failures on UAP. The failures occur in two different tests, but only if both tests are enabled. Running each test separately while disabling the other makes the tests pass. The problem is actually due to a known issue in WinRT Windows.Web.Http.HttpClient layer. The WinRT layer uses native WinInet and there are some things that WinInet caches per-process and not per-session handle. That means that there is unintended sharing of some state between separate HttpClient objects. In particular, this shared state is about TCP connections and specifically if SSL connections were made using cert error ignore flags. We have two tests were the tests are testing against connecting to servers with bad certificates. ```c# public static readonly object[][] CertificateValidationServers = { new object[] { Configuration.Http.ExpiredCertRemoteServer }, new object[] { Configuration.Http.SelfSignedCertRemoteServer }, new object[] { Configuration.Http.WrongHostNameCertRemoteServer }, }; [OuterLoop] // TODO: Issue #11345 [ConditionalTheory(nameof(ClientSupportsDHECipherSuites))] [MemberData(nameof(CertificateValidationServers))] public async Task NoCallback_BadCertificate_ThrowsException(string url) { using (var client = new HttpClient()) { await Assert.ThrowsAsync(() => client.GetAsync(url)); } } [OuterLoop] // TODO: Issue #11345 [ConditionalTheory(nameof(BackendSupportsCustomCertificateHandlingAndClientSupportsDHECipherSuites))] [MemberData(nameof(CertificateValidationServersAndExpectedPolicies))] public async Task UseCallback_BadCertificate_ExpectedPolicyErrors(string url, SslPolicyErrors expectedErrors) ``` In one test, we use no callback and expect to get errors. In another test, we connect to the same servers and pass it a callback. We use the callback to analyze the certificate errors from the X509Chain we get back. The problem occurs in the no_callback test where we expect to get an HttpRequestException back. But we don't because the other test which ran in parallel or just before already used ignore flags, made good connections at the TCP/SSL layer, so Wininet caches those connections for later use. So, the no_callback test fails because the connections are already there. One way to work around this problem in the tests is to isolate each of the two tests into separate processes using the RemoteExecutor. In a previous release of Windows 10, the WinRT HttpClient APIs added a new method to the HttpBaseProtocolFilter: https://docs.microsoft.com/en-us/uwp/api/windows.web.http.filters.httpbaseprotocolfilter That new method ```c# public void ClearAuthenticationCache() ``` allows developers to clear out any cached connection information if their app is running long-term and they need to do ""log off"" scenarios. However, at the System.Net.Http layer, we don't have that control, nor do we expect it since the assumption is that connections are cached per HttpClient. So, this is a difference in behaviors, unfortunately, for now. " +21946 area-System.Diagnostics Remove use of NtQuerySystemInformation for UWP We can't use NtQuerySystemInformation in an app. It will fail WACK. At this point, we should stop using it in our UWP binaries. That means API that enumerates and examines arbitrary processes should be stubbed to thrown PNSE with a nice message. Please factor the process class so that it doesn't appear in the UAP build and so you can remove it from src\System.Diagnostics.Process\src\PinvokeAnalyzerExceptionList.analyzerdata.uap +21948 area-System.IO Fix uap package clrcompression import The UAP AOT packages were taking a clrcompression that did not have the appx bit enabled. @joperezr @ericstj +21950 area-System.Net GetAsync_IPBasedUri_Success test fails on some Unixes with ManagedHandler and link-local addresses e.g. ``` MESSAGE: System.Net.Http.HttpRequestException : could not connect\n---- System.Net.Sockets.SocketException : Invalid argument +++++++++++++++++++ STACK TRACE: at System.Net.Http.ConnectHelper.d__0.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/ConnectHelper.cs:line 38 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__10.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 99 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 61 at System.Net.Http.HttpConnectionHandler.d__8.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 59 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.CookieHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/CookieHandler.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/AutoRedirectHandler.cs:line 28 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass31_0.<b__0>d.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 278 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 66 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__31.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 276 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Sockets.Socket.BeginConnectEx(EndPoint remoteEP, Boolean flowContext, AsyncCallback callback, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 4986 at System.Net.Sockets.Socket.UnsafeBeginConnect(EndPoint remoteEP, AsyncCallback callback, Object state, Boolean flowContext) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2132 at System.Net.Sockets.Socket.BeginConnect(EndPoint remoteEP, AsyncCallback callback, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2108 at System.Net.Sockets.Socket.BeginConnect(IPAddress address, Int32 port, AsyncCallback requestCallback, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2227 at System.Net.Sockets.TcpClient.BeginConnect(IPAddress address, Int32 port, AsyncCallback requestCallback, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs:line 297 at System.Net.Sockets.TcpClient.<>c.b__27_0(IPAddress targetAddess, Int32 targetPort, AsyncCallback callback, Object state) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs:line 277 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state) at System.Net.Sockets.TcpClient.ConnectAsync(IPAddress address, Int32 port) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs:line 276 at System.Net.Http.ConnectHelper.d__0.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/src/System/Net/Http/Managed/ConnectHelper.cs:line 28 ``` +21951 area-System.Net Fix ManagedHandler to support connecting to IPv6 servers Also use IdnHost instead of Host, in case the Host isn't DNS-safe. Fixes https://github.com/dotnet/corefx/issues/21950 cc: @geoffkizer +21953 area-System.Net Some tests in System.Net.HttpListener HttpRequestStreamTests.cs will break UWP test runner with System.IO.IOException "Those are sample test cases will break the test runner: `Read_NullBuffer_ThrowsArgumentNullException()`, `Read_InvalidOffset_ThrowsArgumentOutOfRangeException()`, `EndRead_NullAsyncResult_ThrowsArgumentNullException()`, ..... ``` CLR exception type: System.IO.IOException ""Unable to read data from the transport connection: A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call."" ntdll!ZwWaitForMultipleObjects+0x14: 00007ffa`d6e1f8d4 c3 ret 0:019> !pe Exception object: 0000018fd824b8d0 Exception type: System.IO.IOException Message: Unable to read data from the transport connection: A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call. InnerException: System.Net.Sockets.SocketException, Use !PrintException 0000018fd824aee8 to see more. StackTrace (generated): SP IP Function 00000049660FC2E0 00007FFA3F2EBD07 System_Net_Sockets!System.Net.Sockets.NetworkStream.BeginRead(Byte[], Int32, Int32, System.AsyncCallback, System.Object)+0x447 00000049660FE780 00007FFA3F2F1E24 System_Net_HttpListener!System.Net.HttpConnection.OnReadInternal(System.IAsyncResult)+0x394 00000049660FE880 00007FFA3F2F19CE System_Net_HttpListener!System.Net.HttpConnection.OnRead(System.IAsyncResult)+0x9e 00000049660FE8E0 00007FFA3F2F1532 System_Net_Sockets!System.Net.LazyAsyncResult.Complete(IntPtr)+0x292 00000049660FE9E0 00007FFA3F2F1231 System_Net_Sockets!System.Net.ContextAwareResult.CompleteCallback()+0x71 00000049660FEA20 00007FFA3F2F119F System_Net_Sockets!System.Net.ContextAwareResult+<>c.b__17_0(System.Object)+0x6f 00000049660FEA60 00007FFA70A837B1 System_Private_CoreLib!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x111 00000049660FEAD0 00007FFA3F2F0E57 System_Net_Sockets!System.Net.ContextAwareResult.Complete(IntPtr)+0x2e7 00000049660FEBB0 00007FFA3F2F0B03 System_Net_Sockets!System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)+0x253 00000049660FEC80 00007FFA3F2F0841 System_Net_Sockets!System.Net.LazyAsyncResult.InvokeCallback(System.Object)+0x31 00000049660FECB0 00007FFA3F2EF5A3 System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionCallback(Int32, System.Net.Sockets.SocketError)+0x73 00000049660FECF0 00007FFA3F2EF22E System_Net_Sockets!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x5ae 00000049660FEEE0 00007FFA70C6DA43 System_Private_CoreLib!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x73 StackTraceString: HResult: 80131620 There are nested exceptions on this thread. Run with -nested for details ``` @davidsh @DavidGoll @CIPop " +21954 area-Meta Application Manifest File does not build correctly In a .NET Core project, add an Application Manifest File to the project and build the solution. An error of `CS1926 Error opening Win32 manifest file c:\app1.manifest -- Could not find file 'c:\app1.manifest'.` In .NET Framework projects, adding this file works and builds without any modification. +21955 area-System.IO Convert Tests to Theory Converting tests from Fact to Theory to make it easier to recognize which tests are failing instead of spending time sorting through ambiguous test output. +21957 area-System.Diagnostics Remove NtQuerySystemInformation from Uap Resolves https://github.com/dotnet/corefx/issues/21946 Since we can't use NtQuerySystemInformation in Uap, to enumerate/examine processes, I'm using `PerformanceCounterLib` as we do for remote machines. +21958 area-System.Net System.Net.HttpListener switch to managed implementation for UAP Fix: #17910 +21959 area-System.Xml Fix System.Xml.Linq.xNodeBuilder.Tests for UapAot Fixes: https://github.com/dotnet/corefx/issues/21555 ArgumentNullException.ParamName is set to null in ILC ret mode by nutc optimizations so this was causing the tests to crash with a NullReferenceException in https://github.com/dotnet/corefx/compare/master...safern:FixXnodeBuilderTests?expand=1#diff-970dcd231e06d46b9ed9524632984fb0R97 This was caused because we are actually testing for the `exception.ParamName` and since it was different than the expected this tests throw a `TestException` and prints it out. So when `TestException.ToString()` was called `Actual` was `null` and `Actual.GetType()` was causing the `NullReferenceException` cc: @danmosemsft @tijoytom +21961 area-System.Xml Unexpected KeyNotFoundException in XmlSerializerNamespaces.Namespaces I'm converting a project to netstandard2.0 and run into a KeyNotFoundException from the internals of XmlSerializer (full stack trace below). I tracked it down from: https://github.com/dotnet/corefx/blob/release/2.0.0/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationWriter.cs#L1405 to: https://github.com/dotnet/corefx/blob/release/2.0.0/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializerNamespaces.cs#L108 When looking at the reference source at: https://referencesource.microsoft.com/#System.Xml/System/Xml/Serialization/XmlSerializerNamespaces.cs,99 'Namespaces' changed from a Hashtable to a Dictionary, which now causes a KeyNotFoundException on non-existing namespaces. XmlSerializer relies on the fact it can return null. This could be problematic in other places as well if they rely on a Hashtable. Probably, all references of 'Namespaces' should be checked and corrected with TryGetValue, or go back to using a Hashtable. Full stack trace: ``` Failed UblSharp.Tests.SampleTests.UBLInvoice20ExampleNS2Test Error Message: System.InvalidOperationException : There was an error generating the XML document. ---- System.Collections.Generic.KeyNotFoundException : The given key was not present in the dictionary. Stack Trace: at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces) at UblSharp.BaseDocumentExtensions.Save[T](T document, XmlWriter writer) in C:\Projects\UblSharp2\src\UblSharp\BaseDocumentExtensions.cs:line 65 at UblSharp.BaseDocumentExtensions.Save[T](T document, Stream stream) in C:\Projects\UblSharp2\src\UblSharp\BaseDocumentExtensions.cs:line 34 at UblSharp.Tests.SampleTests.ToXDocument[T](T document) in C:\Projects\UblSharp2\src\UblSharp.Tests\SampleTests.cs:line 96 at UblSharp.Tests.SampleTests.TestDocument[T](String documentFilename, Func`1 factory) in C:\Projects\UblSharp2\src\UblSharp.Tests\SampleTests.cs:line 47 at UblSharp.Tests.SampleTests.UBLInvoice20ExampleNS2Test() in C:\Projects\UblSharp2\src\UblSharp.Tests\Samples\SampleTests.partial.cs:line 157 ``` ``` ----- Inner Stack Trace ----- at System.ThrowHelper.ThrowKeyNotFoundException() at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at System.Xml.Serialization.XmlSerializationWriter.WriteNamespaceDeclarations(XmlSerializerNamespaces xmlns) at System.Xml.Serialization.XmlSerializationWriter.WriteStartElement(String name, String ns, Object o, Boolean writePrefixed, XmlSerializerNamespaces xmlns) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterInvoiceType.Write330_InvoiceType(String n, String ns, InvoiceType o, Boolean isNullable , Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterInvoiceType.Write331_Invoice(Object o) Skipped UblSharp.Tests.SampleTests.UBLInvoice20EnvelopedTest Standard Output Messages: ``` +21962 area-System.IO Increased timeout Increased timeout for deleting a read only file system as sudo. Fixes #21823. +21963 area-System.Net Intermittent Failure in ServicePointManager tests Intermittent failure, see details below. System.Net.Tests.TlsSystemDefault.ServicePointManager_SecurityProtocolDefault_Ok() [failed](https://mc.dot.net/#/user/nchikanov/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/ccff43e892dac662b67327aad3d7e20625f3f2bc/workItem/System.Net.ServicePoint.Tests/analysis/xunit/System.Net.Tests.TlsSystemDefault~2FServicePointManager_SecurityProtocolDefault_Ok): Assert.Equal() Failure\r\nExpected: SystemDefault\r\nActual: Tls11 +21964 area-System.Net [release/2.0] Unable to make https request when Oid lookup takes too long (#21320) Port EKU Oid lookup fix which is causing hangs in TLS/SSL network connections. Fix was verified by customers in (master) branch. The same fix is being discussed for .NET Framework servicing. Porting PR #21320 +21970 area-System.ComponentModel Added new params constructor to ForeignKeyAttribute Added new params constructor to System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute to enable support for passing in multiple names rather than requiring developers to concatenate them. +21971 area-System.Diagnostics "Tests under: BasicEventSourceTests.TestsWrite failed with ""System.Reflection.MissingMetadataException""" Opened on behalf of @Jiayili1 The test `BasicEventSourceTests.TestsWrite/Test_Write_T_EventListener` has failed. System.Reflection.MissingMetadataException : This operation cannot be carried out because metadata for the following object was removed for performance reasons:\ \ \ \ No further information is available. Rebuild in debug mode for better information.\ \ Stack Trace: at xunit.console.netcore!+0xe0b68b at xunit.console.netcore!+0xa05b16 at xunit.console.netcore!+0xdf6e1c at xunit.console.netcore!+0xa571b4 at xunit.console.netcore!+0xa57146 at xunit.console.netcore!+0xa570ba at xunit.console.netcore!+0xa56f33 at xunit.console.netcore!+0xa5594d at xunit.console.netcore!+0xa5514b at xunit.console.netcore!+0x79c88a at xunit.console.netcore!+0xae5d3d at BasicEventSourceTests.TestsWrite.<>c__DisplayClass3_0.b__0() at BasicEventSourceTests.EventTestHarness.RunTests(Collections.Generic.List tests, Listener listener, Diagnostics.Tracing.EventSource source, FilteringOptions options) at BasicEventSourceTests.TestsWrite.Test_Write_T(Listener listener) at BasicEventSourceTests.TestsWrite.Test_Write_T_EventListener() at xunit.console.netcore!+0xcdc467 at xunit.console.netcore!+0xb7cf83 at xunit.console.netcore!+0xb7cd83 Build : Master - 20170707.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170707.01/workItem/System.Diagnostics.Tracing.Tests/analysis/xunit/BasicEventSourceTests.TestsWrite~2FTest_Write_T_EventListener +21973 area-System.Runtime Test failure: System.Tests.DBNullTests/Convert_IsDBNull_ReturnsExpected Opened on behalf of @Jiayili1 The test `System.Tests.DBNullTests/Convert_IsDBNull_ReturnsExpected` has failed. $BlockedFromReflection_0_ce6e468c : This object cannot be invoked because it was metadata-enabled for browsing only: 'System.DBNull.ToString()' For more information, please visit http://go.microsoft.com/fwlink/?LinkID=616867 Stack Trace: at xunit.console.netcore!+0xc91930 at xunit.console.netcore!+0xc91816 at xunit.console.netcore!+0xd4c7c7 at xunit.console.netcore!+0xd0dc09 at xunit.console.netcore!+0xd0df8d Build : Master - 20170707.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170707.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.DBNullTests~2FConvert_IsDBNull_ReturnsExpected +21974 area-System.Runtime "Test: System.Tests.GCTests/GetAllocatedBytesForCurrentThread failed with ""System.MissingMethodException""" Opened on behalf of @Jiayili1 The test `System.Tests.GCTests/GetAllocatedBytesForCurrentThread(size: 1000)` has failed. System.MissingMethodException : Method 'GC.GetAllocatedBytesForCurrentThread()' was not included in compilation, but was referenced in GCTests.GetAllocatedBytesForCurrentThread(int). There may have been a missing assembly, or a dependency on a more recent Windows SDK release. Stack Trace: at System.Tests.GCTests.GetAllocatedBytesForCurrentThread(Int32 size) at xunit.console.netcore!+0xae9db3 at SharedLibrary!+0x754013 at SharedLibrary!+0x753e13 Build : Master - 20170707.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170707.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.GCTests~2FGetAllocatedBytesForCurrentThread(size:%201000) +21975 area-Serialization Serialization test case DCS_BasicRoundtripDCRDefaultCollections failed in ReflectionOnly "The tset case named DCS_BasicRoundtripDCRDefaultCollections failed in project System.Runtime.Serialization.Xml.ReflectionOnly.Tests. Error message : 1. **expected**: <_arrayList z:Id=""2"" **z:Size=""1""** xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays\""> **actual**: <_arrayList z:Id=""2"" xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays\""> 2. **expected**: <_hashtable z:Id=""6"" **z:Size=""1""** xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays\""> **actual**: <_hashtable z:Id=""6"" xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays\"">" +21976 area-Meta Proposal: Provide API/class library to play music stored in strings, like QBasic "QBasic has ""play"" command to play music which is stored in strings, why VB and C# can't? I hope that VB and C# have the same ability to play music without a music file. If I only have a music score and do not have any music files, I wish to write a program to play it. I can translate the music score to strings manually, according to specific rules, just like QBasic." +21981 area-System.Net HttpListenerFactory: improve port selection This speeds up test execution of System.Net.HttpListener.Tests by about 15 seconds. Pre: ``` System.Net.HttpListener.Tests Total: 638, Errors: 0, Failed: 0, Skipped: 16, Time: 141.388s ``` Post: ``` System.Net.HttpListener.Tests Total: 638, Errors: 0, Failed: 0, Skipped: 16, Time: 127.527s ``` +21982 area-System.Runtime Dynamically Loading .NET Core Assemblies "I've published an ASP.NET Core project to a folder and I'm trying to dynamically load the assembly containing the ASP.NET Core `Startup` class. I then want to instantiate the `Startup` class and hand it over to the `TestHost` API, so I can start the site in memory. I've written the following code: ```c# var directoryPath = @""C:\Dlls""; var assemblyFilePath = Path.Combine(directoryPath, ""Foo.dll""); var assemblyName = AssemblyLoadContext.GetAssemblyName(assemblyFilePath); var assembly = new AssemblyLoader(directoryPath).LoadFromAssemblyName(assemblyName); var startupType = assembly.ExportedTypes .FirstOrDefault(x => string.Equals(x.Name, ""Startup"")); var webHostBuilder = new WebHostBuilder() .UseStartup(startupType) .UseUrls(new string[] { ""http://localhost"" }); using (var testServer = new TestServer(webHostBuilder)) { var response = testServer.CreateClient().GetAsync(""/""); } public class AssemblyLoader : AssemblyLoadContext { private readonly string directoryPath; public AssemblyLoader(string directoryPath) => this.directoryPath = directoryPath; protected override Assembly Load(AssemblyName assemblyName) { var dependencyContext = DependencyContext.Default; var compilationLibraries = dependencyContext .CompileLibraries .Where(x => x.Name.Contains(assemblyName.Name)) .ToList(); if (compilationLibraries.Count > 0) { return Assembly.Load(new AssemblyName(compilationLibraries.First().Name)); } else { var file = new FileInfo($""{this.directoryPath}{Path.DirectorySeparatorChar}{assemblyName.Name}.dll""); if (File.Exists(file.FullName)) { var asemblyLoader = new AssemblyLoader(file.DirectoryName); return asemblyLoader.LoadFromAssemblyPath(file.FullName); } } return Assembly.Load(assemblyName); } } ``` This works when I publish the app as a self contained application, however, I'd like to avoid dealing with runtime identifiers (RID's) if possible. When I publish normally the code throws a `TypeLoadException` when `assembly.ExportedTypes` is called. The full stack trace: ``` System.TypeLoadException occurred HResult=0x80131522 Message=Method 'ConfigureServices' in type 'Foo.Startup' from assembly 'Foo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation. Source= StackTrace: at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes) at System.Reflection.RuntimeAssembly.GetExportedTypes() ``` How can I dynamically load the .NET Core runtime in the `AssemblyLoader` class? [Related StackOverflow question](https://stackoverflow.com/questions/44545544/dynamically-loading-an-asp-net-core-assembly). [EDIT] @karelz changes: formatting code with c# syntax (\`\`\`c#) and stack trace in \`\`\` block." +21986 area-System.Xml System.Xml.Linq.Events.Tests crash on UapAot This tests are crashing with following error: ``` Unhandled exception thrown: read access violation. pContext->pRbx was nullptr. ``` I've seen this failed in several places, one of them is: https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriter.cs#L138 Note that this only happens in ret mode, if I build the test project in chk then this doesn't happen anymore. cc: @tijoytom +21987 area-System.Net [release/1.1] Unable to make https request when Oid lookup takes too long (#21320) Port EKU Oid lookup fix which is causing hangs in TLS/SSL network connections. Porting PR #21320 +21989 area-System.Net [release/1.0] Unable to make https request when Oid lookup takes too long (#21320) Port EKU Oid lookup fix which is causing hangs in TLS/SSL network connections. Porting PR #21320 +21990 area-System.Net Avoid HttpClient substring allocations for number parsing This both avoids substring allocations and is faster than the current calls, at least in microbenchmarks. cc: @geoffkizer, @davidsh +21991 area-System.Net SslStream incorrectly handles SslProtocols.None on Unix "This should run successfully on Linux, as it does on Windows. Instead it fails with the exception: ``` Unhandled Exception: System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. ---> Interop+Crypto+OpenSslCryptographicException: error:1408A10B:SSL routines:ssl3_get_client_hello:wrong version number --- End of inner exception stack trace --- at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Test.d__1.MoveNext() in /home/stoub/tmpapp/Program.cs:line 39 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Repro: ``` using System; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; class Test { static void Main() => MainAsync().GetAwaiter().GetResult(); static async Task MainAsync() { var serverCert = new X509Certificate2(s_testcertpfx, ""testcertificate""); using (Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { listener.Bind(new IPEndPoint(IPAddress.Loopback, 0)); listener.Listen(1); Task connectTask = Task.Run(() => client.Connect(listener.LocalEndPoint)); using (Socket server = listener.Accept()) { await connectTask; using (var serverStream = new SslStream(new NetworkStream(server, true), false, delegate { return true; })) using (var clientStream = new SslStream(new NetworkStream(client, true), false, delegate { return true; })) { Task t1 = serverStream.AuthenticateAsServerAsync(serverCert, false, SslProtocols.Tls12, false); Task t2 = clientStream.AuthenticateAsClientAsync(""localhost"", null, SslProtocols.None, false); await await Task.WhenAny(t1, t2); await Task.WhenAll(t1, t2); } } } } private static readonly byte[] s_testcertpfx = Convert.FromBase64String( @""MIIVBAIBAzCCFMAGCSqGSIb3DQEHAaCCFLEEghStMIIUqTCCCooGCSqGSIb3DQEHAaCCCnsEggp3 MIIKczCCCm8GCyqGSIb3DQEMCgECoIIJfjCCCXowHAYKKoZIhvcNAQwBAzAOBAhCAauyUWggWwIC B9AEgglYefzzX/jx0b+BLU/TkAVj1KBpojf0o6qdTXV42drqIGhX/k1WwF1ypVYdHeeuDfhH2eXH ImwPTw+0bACY0dSiIHKptm0sb/MskoGI8nlOtHWLi+QBirJ9LSUZcBNOLwoMeYLSFEWWBT69k/sW rc6/SpDoVumkfG4pZ02D9bQgs1+k8fpZjZGoZp1jput8CQXPE3JpCsrkdSdiAbWdbNNnYAy4C9Ej /vdyXJVdBTEsKzPYajAzo6Phj/oS/J3hMxxbReMtj2Z0QkoBBVMc70d+DpAK5OY3et872D5bZjvx hjAYh5JoVTCLTLjbtPRn1g7qh2dQsIpfQ5KrdgqdImshHvxgL92ooC1eQVqQffMnZ0/LchWNb2rM Da89K9CtAefEIF4ve2bOUZUNFqQ6dvd90SgKq6jNfwQf/1u70WKE86+vChXMMcHFeKso6hTE9+/z uUPNVmbRefYAtDd7ng996S15FNVdxqyVLlmfcihX1jGhTLi//WuMEaOfXJ9KiwYUyxdUnMp5QJqO 8X/tiwnsuhlFe3NKMXY77jUe8F7I+dv5cjb9iKXAT+q8oYx1LcWu2mj1ER9/b2omnotp2FIaJDwI 40Tts6t4QVH3bUNE9gFIfTMK+WMgKBz/JAGvC1vbPSdFsWIqwhl7mEYWx83HJp/+Uqp5f+d8m4ph San2rkHEeDjkUaoifLWHWDmL94SZBrgU6yGVK9dU82kr7jCSUTrnga8qDYsHwpQ22QZtu0aOJGep SwZU7NZNMiyX6QR2hI0CNMjvTK2VusHFB+qnvw+19DzaDT6P0KNPxwBwp07KMQm3HWTRNt9u6gKU mo5FHngoGte+TZdY66dAwCl0Pt+p1v18XlOB2KOQZKLXnhgikjOwYQxFr3oTb2MjsP6YqnSF9EpY pmiNySXiYmrYxVinHmK+5JBqoQCN2C3N24slZkYq+AYUTnNST7Ib2We3bBICOFdVUgtFITRW40T+ 0XZnIv8G1Kbaq/1avfWI/ieKKxyiYp/ZNXaxc+ycgpsSsAJEuhb83bUkSBpGg9PvFEF0DXm4ah67 Ja1SSTmvrCnrOsWZXIpciexMWRGoKrdvd7Yzj9E8hiu+CGTC4T6+7FxVXJrjCg9zU9G2U6g7uxzo yjGj1wqkhxgvl9pPbz6/KqDRLOHCEwRF4qlWXhsJy4levxGtifFt6n7DWaNSsOUf8Nwpi+d4fd7L Q7B5tW/y+/vVZziORueruCWO4LnfPhpJ70g18uyN7KyzrWy29rpE46rfjZGGt0WDZYahObPbw6Hj cqSOuzwRoJMxamQb2qsuQnaBS6Bhb5PAnY4SEA045odf/u9uC7mLom2KGNHHz6HrgEPas2UHoJLu xYvY1pza/29akuVQZQUvMA5yMFHHGYZLtTKtCGdVGwX0+QS6ovpV93xux4I/5TrD5U8z9RmTdAx0 3R3MUhkHF7Zbv5egDNsVar+41YWG4VkV1ZXtsZRKJf0hvKNvrpH0e7fVKBdXljm5PXOSg2Vdtkhh OpnKKSMcv6MbGWVi/svWLnc7Qim4A4MDaz+bFVZmh3oGJ7WHvRQhWIcHUL+YJx+064+4IKXZJ/2a /+b2o7C8mJ3GGSBx831ADogg6MRWZx3UY19OZ8YMvpzmZEBRZZnm4KgNpj+SQnf6pGzD2cmnRhzG 60LSNPb17iKbdoUAEMkgt2tlMKXpnt1r7qwsIoTt407cAdCEsUH7OU/AjfFmSkKJZ7vC5HweqZPn hgJgZ6LYHlfiRzUR1xeDg8JG0nb0vb7LUE4nGPy39/TxIGos7WNwGpG1QVL/8pKjFdjwREaR8e5C STlQ7gxHV+G3FFvFGpA1p8cRFzlgE6khDLrSJIUkhkHMA3oFwwAzBNIKVXjToyxCogDqxWya0E1H w5rVCS/zOCS1De2XQbXs//g46TW0wTJwvgNbs0xLShf3XB+23meeEsMTCR0+igtMMMsh5K/vBUGc JA27ru/KM9qEBcseb/tqCkhhsdj1dnH0HDmpgFf5DfVrjm+P6ickcF2b+Ojr9t7XHgFszap3COpE PGmeJqNOUTuU53tu/O774IBgqINMWvvG65yQwsEO06jRrFPRUGb0eH6UM4vC7wbKajnfDuI/EXSg vuOSZ9wE8DeoeK/5We4pN7MSWoDl39gI/LBoNDKFYEYuAw/bhGp8nOwDKki4a16aYcBGRClpN3ym rdurWsi7TjyFHXfgW8fZe4jXLuKRIk19lmL1gWyD+3bT3mkI2cU2OaY2C0fVHhtiBVaYbxBV8+kj K8q0Q70zf0r+xMHnewk9APFqUjguPguTdpCoH0VAQST9Mmriv/J12+Y+fL6H+jrtDY2zHPxTF85p A4bBBnLA7Qt9TKCe6uuWu5yBqxOV3w2Oa4Pockv1gJzFbVnwlEUWnIjbWVIyo9vo4LBd03uJHPPI QbUp9kCP/Zw+Zblo42/ifyY+a+scwl1q1dZ7Y0L92yJCKm9Qf6Q+1PBK+uU9pcuVTg/Imqcg5T7j FO5QCi88uwcorgQp+qoeFi0F9tnUecfDl6d0PSgAPnX9XA0ny3bPwSiWOA8+uW73gesxnGTsNrtc 1j85tail8N6m6S2tHXwOmM65J4XRZlzzeM4D/Rzzh13xpRA9kzm9T2cSHsXEYmSW1X7WovrmYhdO h9K3DPwSyG4tD58cvC7X79UbOB+d17ieo7ZCj+NSLVQO1BqTK0QfErdoVHGKfQG8Lc/ERQRqj132 Mhi2/r5Ca7AWdqD7/3wgRdQTJSFXt/akpM44xu5DMTCISEFOLWiseSOBtzT6ssaq2Q35dCkXp5wV bWxkXAD7Gm34FFXXyZrJWAx45Y40wj/0KDJoEzXCuS4Cyiskx1EtYNNOtfDC5wngywmINFUnnW0N kdKSxmDJvrT6HkRKN8ftik7tP4ZvTaTS28Z0fDmWJ+RjvZW+vtF6mrIzYgGOgdpZwG0ZOSKrXKrY 3xpMO16fXyawFfBosLzCty7uA57niPS76UXdbplgPanIGFyceTg1MsNDsd8vszXd4KezN2VMaxvw +93s0Uk/3Mc+5MAj+UhXPi5UguXMhNo/CU7erzyxYreOlAI7ZzGhPk+oT9g/MqWa5RpA2IBUaK/w gaNaHChfCcDj/J1qEl6YQQboixxp1IjQxiV9bRQzgwf31Cu2m/FuHTTkPCdxDK156pyFdhcgTpTN y7RPLDGB3TATBgkqhkiG9w0BCRUxBgQEAQAAADBdBgkrBgEEAYI3EQExUB5OAE0AaQBjAHIAbwBz AG8AZgB0ACAAUwB0AHIAbwBuAGcAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8A dgBpAGQAZQByMGcGCSqGSIb3DQEJFDFaHlgAQwBlAHIAdABSAGUAcQAtADcAOQA4AGUANQA4AGIA NQAtAGMAOQA2ADQALQA0ADcAZQA2AC0AYQAzADIAOQAtADAAMQBjAGEAZABmADcANgAyAGEANgA5 MIIKFwYJKoZIhvcNAQcGoIIKCDCCCgQCAQAwggn9BgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAO BAh+t0PMVhyoagICB9CAggnQwKPcfNq8ETOrNesDKNNYJVXnWoZ9Qjgj9RSpj+pUN5I3B67iFpXC lvnglKbeNarNCzN4hXD0I+ce+u+Q3iy9AAthG7uyYYNBRjCWcBy25iS8htFUm9VoV9lH8TUnS63W b/KZnowew2HVd8QI/AwQkRn8MJ200IxR/cFD4GuVO/Q76aqvmFb1BBHItTerUz7t9izjhL46BLab JKx6Csqixle7EoDOsTCA3H1Vmy2/Hw3FUtSUER23jnRgpRTA48M6/nhlnfjsjmegcnVBoyCgGaUa dGE5OY42FDDUW7wT9VT6vQEiIfKSZ7fyqtZ6n4+xD2rVySVGQB9+ROm0mywZz9PufsYptZeB7AfN OunOAd2k1F5y3qT0cjCJ+l4eXr9KRd2lHOGZVoGq+e08ylBQU5HB+Tgm6mZaEO2QgzXOAt1ilS0l Dii490DsST62+v58l2R45ItbRiorG/US7+HZHjHUY7EsDUZ+gn3ZZNqh1lAoli5bC1xcjEjNdqq0 knyCAUaNMG59UhCWoB6lJpRfVEeQOm+TjgyGw6t3Fx/6ulNPc1V/wcascmahH3kgHL146iJi1p2c 2yIJtEB+4zrbYv7xH73c8qXVh/VeuD80I/+QfD+GaW0MllIMyhCHcduFoUznHcDYr5GhJBhU62t6 sNnSjtEU1bcd20oHrBwrpkA7g3/Mmny33IVrqooWFe876lvQVq7GtFu8ijVyzanZUs/Cr7k5xX3z jh6yUMAbPiSnTHCl+SEdttkR936fA6de8vIRRGj6eAKqboRxgC1zgsJrj7ZVI7h0QlJbodwY2jzy zcC5khn3tKYjlYeK08iQnzeK5c9JVgQAHyB4uOyfbE50oBCYJE7npjyV7LEN2f7a3GHX4ZWI3pTg bUv+Q1t8BZozQ4pcFQUE+upYucVL3Fr2T8f7HF4G4KbDE4aoLiVrYjy0dUs7rCgjeKu21UPA/BKx 4ebjG+TZjUSGf8TXqrJak1PQOG4tExNBYxLtvBdFoOAsYsKjTOfMYpPXp4vObfktFKPcD1dVdlXY XvS5Dtz3qEkwmruA9fPQ6FYi+OFjw0Pkwkr5Tz+0hRMGgb1JRgVo8SVlW/NZZIEbKJdW5ZVLyMzd d1dC0ogNDZLPcPR/HENe2UXtq+0qQw0ekZ+aC2/RvfAMr5XICX8lHtYmQlAFGRhFNuOysHj7V2AJ TuOx2wCXtGzrTPc6eyslsWyJign8bD1r+gkejx/qKBwwTvZF1aSmiQmFnmMm0jLj7n8v7v6zHCFT uKF1bHZ44eIwMaUDl6MAgHDdvkPl56rYgq/TM3dKuXnu47GLiRei0EXTT9OMCKcI6XYICsge81ET 3k15VfLyI1LNufgqAsafnwl31yqntscXW0NsxW6SkmyXaW1mndxejLBQRjik3civBGTgxgKQbZaO 9ZGOrjsSogcCSne+s0zLDxEFjmaYYtpIaU8SFWDja5jyo0jvM3OHUwvElvndZJgreFGG5cKHgwgG KdkYgx6YAvucrgQwqKE/+nxuhkKWtV9D4h9qFAqZbWc9jOPtWx9h3U3gX3NTLY/4Z4iy/FXR9KnK UtCmD1MSRRIOiMca1sNTga3mP/+qSS5u+pyon5c4c/jLdEW0GapDz/yvQcc0MP/21vSoeIkUN+w/ RzUBvxrawhHGx+FeLlI249+LBKNBQu4Fbw6G9AYpPJf3PdNc0GRMnantA4B7Rm2NsSGdqqrEMuCw 1XxzR6ki4jbLC/ASbcVMr54YsBw+45sggenFshRrYm0QXoUM5XoqEtesby6YfPAjBldyB/QcuULV 6QyAeL44YmxOnKD5E5qQwgfcZUxN01eBgbeSS7bZI3zpFwAMdMQ+dtwHXMuhVXuUGLmNTvNe9Dup fPGKbaM8louY1Xw4fmg4PaY7MP2mdYQlEXvSg2geICJVuGRBirH+Xv8VPr7lccN++LXv2NmggoUo /d18gvhY8XtOrOMon1QGANPh7SzBjR3v19JD170Z6GuZCLtMh681YkKwW/+Em5rOtexoNQRTjZLN STthtMyLfAqLk6lZnbbh+7VdCWVfzZoOzUNV+fVwwvyR9ouIzrvDoZ5iGRZU8rEuntap6rBrf9F3 FMsz4mvPlCAMp15sovLFpVI8t+8OmKmqQH3LOwd03s6iMJ+0YEWrCaTQYu3kEKoOWC3uhGE8XLSj ZBqc3kwVIlzVzOBr97SGjG88JYVDW2FrjQbIv+1yTzOYzMnCDUW3T8GMtfYEQbN6ZtBaD9i4ZeZl QCdkfGuNC6OYO98L7fU4frgff8nNfeka8kHtvNMn4CosFKBRXA5y+kqEE0Qk5feZhfM8NX9x3O0C Jobm4HC57VxJ3c0jTe2SA0gAfB4g0keghmDzYgjQAuIY/o1LMKFiBNue4fnXlhU1L402Zlx/lzKD era6o3Xgh9IXj3ZqyFlXa9bkyKDtek0ephTZulLc3NLeb1a3KZxId8OmplR8OcZsHluEu+Z3Der0 j8Ro7X7kOnNkUxuTV2blqZ4V8DsYKATeKv4ffc1Ub8MLBd9hMs8ehjmC5jkYApM5HvXl4411mPN6 MrF8f2hPVgqrd3p/M80c8wNWjvWIvPLr9Tjqk71hKBq3+Hu0oI1zuoTY2BOhBLyvpjM+mvRd8Ulr FJTLGTyCAXvAhIDRIVyrGuscO5Y0sfDc+82Bvrua4FyhZkjb1r8GrGciH0V5HHKjg5dewWnr21qf 4q96yf2/ZjoldFFvKiCd8wum9ZV1OaTbjjg46oSpIyBzxl4qpfrgT1ZX1MvGW4uAJ7WQHjSAex7V Gr1Sl+ghe5PQBbURyFiu9PnBRMOMjGYkI2lngd3bdehc+i2fPnNe5LgdsBbmUKmEJH96rlkFT8Co +NYBWKBUsBXyfC+kwXDRyNrt2r7VafWWz/cwK0/AJ/Ucq4vz8E0mzy03Gs+ePW+tP9JOHP6leF0T LhbItvQl3DJy0gj6TyrO9S077EVyukFCXeH1/yp04lmq4G0urU+pUf2wamP4BVNcVsikPMYo/e75 UI330inXG4+SbJ40q/MQIfYnXydhVmWVCUXkfRFNbcCu7JclIrzS1WO26q6BOgs2GhA3nEan8CKx a85h/oCaDPPMGhkQtCU75vBqQV9Hk2+W5zMSSj7R9RiH34MkCxETtY8IwKa+kiRAeMle8ePAmT6H fcBOdTsVGNoRHQAOZewwUycrIOYJ/54WOmcy9JZW9/clcgxHGXZq44tJ3BDHQQ4qBgVd5jc9Qy9/ fGS3YxvsZJ3iN7IMs4Jt3GWdfvwNpJaCBJjiiUntJPwdXMjAeUEZ16Tmxdb1l42rjFSCptMJS2N2 EPSNb36+staNgzflctLLpmyEK4wyqjA7MB8wBwYFKw4DAhoEFIM7fHJcmsN6HkU8HxypGcoifg5M BBRXe8XL349R6ZDmsMhpyXbXENCljwICB9A=""); } ``` This is particularly problematic now that None is the default that's meant to mean ""use whatever the system thinks is best"". cc: @bartonjs, @Priya91, @geoffkizer " +21993 area-System.Linq Invalid RD.XML in System.Linq.Expression The embedded RD.XML in System.Linq.Expression doesn't conform to the schema and causes compilation warnings on UWP: ``` System.Linq.Expressions.Resources.System.Linq.Expressions.rd.xml(158-158): warning : ILTransform : warning ILT0027: The 'Dynamic' attribute is invalid - The value 'Required' is invalid according to its datatype 'http://schemas.microsoft.com/netfx/2013/01/metadata:applicabilitySpec' - The Enumeration constraint failed. [D:\dd\PN1\src\QA\ToF\tests\ToolChain\Analysis\SimpleFlow.csproj] ``` What we need to investigate is why there are no failing tests (a badly specified RD.XML does nothing) - is this directive needed? Do we need more tests? Also, the RD.XML needs to be fixed or all users will see this warning in VS. +21995 area-System.Net NullReferenceException from SocketAsyncEventArgs.InnerStartOperationReceiveMessageFrom I was working on a UDP library when I hit this miserable exception. Attached is the minimal project I can think of to reproduce the exception. [SocketAsyncClose.zip](https://github.com/dotnet/corefx/files/1132479/SocketAsyncClose.zip) Compile and run this project with no debugger attached, and you should see the exception details, ``` System.NullReferenceException: Object reference not set to an instance of an object. at System.Net.Sockets.SocketAsyncEventArgs.InnerStartOperationReceiveMessageFrom() at System.Net.Sockets.Socket.ReceiveMessageFromAsync(SocketAsyncEventArgs e) at SocketAsyncClose.Program.<>c__DisplayClass1_0.
b__0() in c:\users\lextm\documents\visual studio 2017\Projects\SocketAsyncClose\SocketAsyncClose\Program.cs:line 36 ``` This piece of code tries to reuse `SocketAsyncEventArgs` objects. And it works fine if `Socket.ReceiveAsync` or `Socket.ReceiveFromAsync` is used. I tested it on Windows 10 (latest patches, .NET Core 1.0 and 1.1), and both cases give the same exception. I tested on macOS (latest stable. .NET Core 1.0 and 1.1), and cannot reproduce the exception. Not surprised, as it should be something wrong in `SocketAsyncEventArgs.Windows.cs` I think and is Windows only. +21996 area-System.Net Fix handling of SslStream.None on Linux "First commit refactors and augments SslStreamSystemDefaultTests to test not only default-to-default, but also default-to-other stuff and both explicitly and implicitly specifying the default. The tests fail on Linux before the second commit. Second commit makes two changes: - Currently if None is specified, we end up disabling all protocols! OpenSSL will then end up negotiating something very limited, and for example using None on the client won't be able to connect to a Tls12 server. - If an explicit version is used, on the server we end up only allowing connections from clients sending that specific version's hello message, which means a client sending an earlier version but with support for upgrading to a newer is explicitly denied, which means on Unix a None can't connect to a Tls12, for example. The fix for the first issue is to simply allow None to mean what was intended, the system default, and not override OpenSSL's default if None is specified. The fix for the second issue is to simplify how protocol limitation is done. Currently we both select the ""proper"" version method and then set context options. Instead, we always use SSLv23_method, which the docs recommend, and then just use the context options to restrict the allowed protocol. Contributes to #21991 (fix should be ported to 2.0) cc: @bartonjs, @geoffkizer, @davidsh, @cipop, @Priya91 " +21997 area-System.Data Making UAP SqlClient sni.dll independent The changes include moving the code around, so that the SNI.dll is not a dependency for SqlClient. The new code that has been added is in LocalDB.Windows.cs and LocalDBAPI.uap.cs to get the message function pointer without using sni.dll. cc @corivera @joperezr Fixes https://github.com/dotnet/corefx/issues/21890 +21998 area-Serialization Enable Xml_DefaultValueAttributeSetToNaNTest in UWP. @shmao @zhenlan @mconnew +21999 area-Infrastructure RemoteExecutorTestBase can't be used with Theory tests While working on a PR, I needed to use RemoteInvoke to isolate some tests to run in their process. The tests were using ConditionalTheory. After modifying the test with RemoteInvoke, it threw exceptions: ``` Assert.All() Failure: 2 out of 3 items in the collection did not pass. [1]: Xunit.Sdk.TrueException: Field marshaling is not supported by RemoteInvoke: expectedErrors Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) at System.Diagnostics.RemoteExecutorTestBase.<>c.b__11_0(FieldInfo fi) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) [0]: Xunit.Sdk.TrueException: Field marshaling is not supported by RemoteInvoke: url Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) at System.Diagnostics.RemoteExecutorTestBase.<>c.b__11_0(FieldInfo fi) at Xunit.Assert.All[T](IEnumerable`1 collection, Action`1 action) Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.GetMethodInfo(Delegate d) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__19.MoveNext() ``` +22000 area-System.Net Modify some HttpClient tests to use RemoteInvoke on UAP A few of the HttpClient tests were failing and needed to be isolated into their own process. This is due to the UAP stack using per-process connection pooling. Fixes #21945 +22002 area-System.Net Disable ManagedHandler negative test failing on older Windows 10 builds Fixes https://github.com/dotnet/corefx/issues/21925 +22003 area-Infrastructure DO NOT MERGE - testing CI +22008 area-System.IO Improve code coverage of System.IO.FileSystem.AccessControl (84.3%) Another pull request for the issue #15808 to increase the code coverage. +22011 area-System.IO About FileShare.Read behavior? "Create two Write FileStream with **FileShare.Read**, but have no exception. ```xml Exe netcoreapp1.1 ``` ```c# Console.WriteLine (typeof(FileStream).GetTypeInfo().Assembly.FullName); var f1 = new FileStream (""/tmp/a"", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read, 1); var f2 = new FileStream (""/tmp/a"", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read, 1); f1.Write( new byte[]{ (byte)'a', (byte)'a', (byte)'a'},0,3); f2.Write( new byte[]{ (byte)'b'},0,1); Console.WriteLine(""Hello World! NET1.0 ""); ``` ``` user@ubuntu:~/net/n1$ dotnet --version 1.0.4 user@ubuntu:~/net/n1$ uname -a Linux ubuntu 3.13.0-32-generic 57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux user@ubuntu:~/net/n1$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release: 14.04 Codename: trusty user@ubuntu:~/net/n1$ dotnet run System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Hello World! NET1.0 ``` What expected. ``` Unhandled Exception: System.IO.IOException: Sharing violation on path /tmp/a at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in :0 ``` [EDIT] by karelz - fixed formatting of code & log blocks" +22012 area-System.Net Fix lifetime handling of ReceiveMessageFromAsync buffer on Windows When a ReceiveMessageFromAsync is first used with a SocketAsyncEventArgs instance, it initializes the _wsaMessageBuffer. Then in order to use the buffer, it pins it, storing both a GCHandle and a pointer to the target object. But if the SAEA's buffer is ever changed with, for example, a SetBuffer call, a routine is invoked on the SocketAsyncEventArgs that frees all of its pinned data, including these for the _wsaMessageBuffer. Then the next time ReceiveMessageFromAsync is used, this handle ends up not getting recreated, and we end up dereferencing a null pointer. The essentially-one-line fix is to separate the creation of the buffer from the creation of the pinning handle, lazily initializing each independently. If the pinning handle is freed due to SetBuffer, the next invocation will reinitialize it. I also consolidated and augmented the existing ReceiveMessageFromAsync tests to test multiple receives with the same SocketAsyncEventArgs in order to catch this case. The test now fails before the fix and passes after. Contributes to https://github.com/dotnet/corefx/issues/21995 (hoping to port fix to 2.0 branch) cc: @davidsh, @cipop, @geoffkizer +22013 area-System.Net release/2.0: Fix lifetime handling of ReceiveMessageFromAsync buffer on Windows Port #22012 to release/2.0 branch Fixes https://github.com/dotnet/corefx/issues/21995 +22014 area-System.IO Race in NamedPipeClientStream.TryConnect leads to unexpected exception "The Windows version of [`TryConnect`](https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.Windows.cs#L25) first calls `WaitNamedPipe` and if it returns ""file not found"" it tries again until the timeout expires. If `WaitNamedPipe` succeeds then the code calls `CreateNamedPipeClient` (`CreateFile`) and if that returns any error other than ""pipe busy"" it throws an exception. If the server dies between the call to `WaitNamedPipe` and `CreateNamedPipeClient` you'll end up with an unexpected `FileNotFoundException`. IMO `TryConnect` should just call `CreateNamedPipeClient` first and fall back to `WaitNamedPipe` if it returns ""file not found"" or ""pipe busy""." +22016 area-Serialization EqualityComparer binary serialization test failures on uapaot "An EqualityComparer test which uses byte as the generic argument is currently failing on uapaot. ``` +0x10d66cf at xunit.console.netcore!+0x1064945 at xunit.console.netcore!+0x10646d1]]> ``` coreclr serializes `EqualityComparer.Default`, corert to `System.Collections.Generic.GenericEqualityComparer1[[System.Byte, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]`: https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Collections/Generic/EqualityComparer.cs#L19 @morganbr @tarekgh Is it intentional that byte doesn't have its own optimized equality comparer in corert? Others like int or string are returning the same type as coreclr. cc @danmosemsft" +22018 area-Meta Cleanup casing of Culture=neutral These are the leftovers in corefx. +22019 area-System.Drawing System.Drawing.Tests.FontTests failing locally on master "These tests are failing locally on my machine (Windows 10 Fall Creators Update, 16232.1004): ``` ``` " +22021 area-System.Net Crash in loopback server using ssl and client certificates during HttpClient testing While working on a PR to implement HttpClientHandler.ClientCertificates for UAP, I discovered a crash in the loopback server. It doesn't seem to crash for non-UAP scenarios. ```c# ERROR: System.Net.Http.Functional.Tests.HttpClientHandler_ClientCertificates_Test.Manual_CertificateSentMatchesCertificateReceived_Success(numberOfRequest s: 6, reuseClient: False) [FAIL] System.IO.IOException : Authentication failed because the remote party has closed the transport stream. Stack Trace: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, ``` +22022 area-System.Net Implement client certificates for HttpClient on UAP Added code for HttpClientHandler.ClientCertificates on UAP. Moved code duplicated in several places into a common helper class, CertificateHelper. Then I discovered a bug introduced into GetEligibleCertificates (from PR #21908) that doesn't properly filter by EKU or KeyUsage if there is only one cert (this was failing the WinHttpHandler Unit tests). So, I removed that optimization. Used the new Azure test endpoint for client certificates. I did not use the loopback server because there is a problem using it with HttpClient in UAP. There is a crash in the SslStream.AuthenticateAsServer that I was not able to diagnose yet. It will require a lot of time debugging and I wanted to get this HttpClientHandler feature done now. Tracking that investigation with #22021. Fixes #21628 Contributes to #14542 +22026 area-System.Drawing GraphicsPathIterator.CopyData throws EntrypointNotFoundException - does not on netfx ```cs using System.Drawing; using System.Drawing.Drawing2D; namespace Test { public class Program { public static void Main() { // Throw ArgumentException. //CopyData_StartEndIndexesOutOfRange_ReturnsExpeced(new PointF[3], new byte[3], -1, 2); //CopyData_StartEndIndexesOutOfRange_ReturnsExpeced(new PointF[3], new byte[3], 0, 3); // Return 0 CopyData_StartEndIndexesOutOfRange_ReturnsExpeced(new PointF[3], new byte[3], int.MinValue, 2); CopyData_StartEndIndexesOutOfRange_ReturnsExpeced(new PointF[3], new byte[3], 0, int.MaxValue); CopyData_StartEndIndexesOutOfRange_ReturnsExpeced(new PointF[3], new byte[3], 2, 0); } public static void CopyData_StartEndIndexesOutOfRange_ReturnsExpeced(PointF[] points, byte[] types, int startIndex, int endIndex) { PointF[] resultPoints = new PointF[points.Length]; byte[] resultTypes = new byte[points.Length]; using (GraphicsPath gp = new GraphicsPath(points, types)) using (GraphicsPathIterator gpi = new GraphicsPathIterator(gp)) { gpi.CopyData(ref resultPoints, ref resultTypes, startIndex, endIndex); } } } } ``` This runs fine with netfx. With netcoreapp, an EntrypointNotFoundException is thrown. +22030 area-System.Xml xpath concat not working. "```c# using System; using System.Xml.Linq; using System.Xml.XPath; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var xElement = XElement.Parse(@"" 1 2 ""); var xPathEvaluate = xElement.XPathEvaluate(""/t/concat(a, b)""); Console.ReadKey(); } } } ``` System.Xml.XPath.XPathException: ""'/t/concat(a, b)' has an invalid token."" [EDIT] @karelz formatting change - code indentation for easier reading" +22032 area-Infrastructure Can't install nuget package of library developed by .net 4.7 full on .net core 2 app "I've a .NET core 2 app and when I add nuget packages of a library which has .NET 4.7 binaries only, I receive following error: Package XYZ 1.2.3.4 is not compatible with netcoreapp2.0 But when I open %userprofile%\.nuget\packages folder and in ""lib"" folder of that package, I rename ""net47"" to ""net45"". After this small change, everything works fine and apps work properly. App is using same .net 4.7 dlls, so a folder name is a only change. What should I do? is there any incompatibility between .net 4.7 & .net core 2 ? Thanks in advance" +22033 area-Serialization Type forwarded cleanup update blobs for TimeZoneInfo Relates to #22025 @jkotas @stephentoub whoever is first up pls review +22034 area-Microsoft.CSharp Simplify Microsoft.CSharp.RuntimeBinder.Semantics.ExprFactory Move more logic into constructors, and when this allows properties to be init-only, do so. Remove unsused types, unused parameters, and other dead code. Rename variables with Hungarian prefixes (and prefixes apparently referring to C++ pointers at that). +22038 area-System.Net WinHttpHandler stops possible chain of handlers Very simple (at first glance) fix, please make WinHttpHandler inherit DelegatingHandler instead of HttpMessageHandler, so inner handlers can be passed and chained appropriately. +22040 area-System.Threading System.Linq.Parallel.Tests crashing in UapAot when building in ret mode on ARM Forked from #21804. At present we are forcing chk build in src/System.Linq.Parallel/tests/System.Linq.Parallel.Tests.csproj. +22042 area-System.Xml System.Xml.Tests.XmlWriterTestModule.TCFullEndElement failing in uap test runs TCFullEndElement has been crashing the execution of tests in all archs for most runs lately. The problem seems to be related to WindowsRuntimeResourceManager. Crash is happening because of an unhandeled System.ArgumentException, here is the callstack: ``` Value does not fall within the expected range. at Windows.ApplicationModel.Resources.Core.ResourceContext.get_Languages() at System.Resources.WindowsRuntimeResourceManager.GlobalResourceContextChanged(Object sender, IMapChangedEventArgs`1 e) ``` cc: @krwq @tarekgh +22043 area-System.Xml Skipping test that is crashing UAP Outerloop runs cc: @krwq @tarekgh @safern This test has been crashing our outerloop runs which is causing results to not be produced, so skipping for now with an activeissue +22044 area-Infrastructure Remove calls to display init-tools.log in groovy scripts https://github.com/dotnet/corefx/pull/21894 will display `init-tools.log` when `init-tools` command runs into an error. This PR removes the calls to display `init-tools.log` when an exception occurs while running `init-tools` in `.groovy` scripts. +22045 area-System.Net Follow-up feedback from PR #22022 PR feedback: #22022 Additional items to be done: - [ ] Dispose certificates that are not owned by the caller - [ ] Stop using the Find() APIs and iterate directly which might be more efficient since it will generate less objects to be finalized. - [ ] Replace GetEligibleClientCertificate() overload with https://github.com/Microsoft/referencesource/blob/90b323fe52bec428fe4bd5f007e9ead6b265d553/System/net/System/Net/UnsafeNativeMethods.cs#L1679 - [ ] Add new Azure endpoint for client certificates to prerequisites folder https://github.com/dotnet/corefx/tree/master/src/Common/tests/System/Net/Prerequisites +22046 area-System.IO Created admin helper file Moved run as admin helper to test project. +22048 area-System.Net NetworkInterface.GetIsNetworkAvailable fails with exception that can't be caught "Reproduced in Bash/WSL on Ubuntu on Windows. 1. Create .Net Core Console App with the following code: ```cs static void Main(string[] args) { try { if (NetworkInterface.GetIsNetworkAvailable()) { Console.WriteLine(""Available!""); } else { Console.WriteLine(""Unavailable!""); } } catch (Exception) { Console.WriteLine(""Crashed!""); } } ``` 2. Open bash and execute ""dotnet run"" **Actual** Application crashes with `FileNotFoundException`: ```cs Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/proc/sys/net/ipv4/conf/eth0/forwarding'. at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStr at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, File at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.IO.File.ReadAllText(String path) at System.Net.NetworkInformation.StringParsingHelpers.ParseRawIntFile(String filePath) at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties.GetIsForwardingEnabled() at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties..ctor(LinuxNetworkInterface linuxNetworkInterface) at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni) at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__2(String name, LinkLayerAddressInfo* l at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDis at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() at System.Net.NetworkInformation.NetworkInterfacePal.GetIsNetworkAvailable() at DotNetCoreGetNetworkLoad.Program.Main(String[] args) in /mnt/d/Work/Temp/DotNetCoreGetNetworkLoad/DotNetCoreGetNetworkLoad/Program.cs:line 11 ``` **Expected** Console prints either `Available!` or `Unavailable!`" +22050 area-System.Net System.Net.HttpListener HttpListenerRequestTests class takes too long to finish in UAP mode After enable all test cases in HttpListenerRequestTests, it takes about 2 minutes to run all tests in this particular class in UAP mode. We need to mark some test cases in this file as [OuterLoop] to improve test performance. @davidsh @CIPop +22053 area-System.Net Partial send support for ClientWebSocket on UWP The UWP implementation of ClientWebSocket (WinRTWebSocket.cs) buffers the entire message before it can pass it to the underlying WinRT MessageWebSocket. This is due to missing support for sending partial messages in WinRT MessageWebSocket. #21102 improved the receive path of partial messages in UWP, but the existing WinRT APIs still lack partial message support in the send path. System.Net.HttpListener HttpListenerWebSocketTests will hang in UAP mode. +22054 area-System.Net HttpListener HttpListenerWebSocketTests hang on UAP Tracking the investigation for HttpListenerWebSocketTests hanging on UAP. +22055 area-System.Net System.Net.Tests.HttpListenerPrefixCollectionTests.CopyTo_NonZeroLowerBoundArray_ThrowsIndexOutOfRangeException throws PNSE on UAPAOT ```System.Net.Tests.HttpListenerPrefixCollectionTests.CopyTo_NonZeroLowerBoundArray_ThrowsIndexOutOfRangeException [FAIL] System.PlatformNotSupportedException : Arg_NotSupportedNonZeroLowerBound. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: at xunit.console.netcore!+0x9b7bfb at xunit.console.netcore!+0x9b7a97 at System.Array.CreateInstance(Type elementType, Int32[] lengths, Int32[] lowerBounds) at System.Net.Tests.HttpListenerPrefixCollectionTests.CopyTo_NonZeroLowerBoundArray_ThrowsIndexOutOfRangeException() at xunit.console.netcore!+0xc52f67 at xunit.console.netcore!+0xad4113 at xunit.console.netcore!+0xad3f16 ``` +22056 area-System.Net Some of the HttpListenerResponseCookiesTests are failing with NullReferenceException in UAPAOT System.Net.Tests.HttpListenerResponseCookiesTests.SetCookie_CookieDoesntExist_ThrowsArgumentException [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at xunit.console.netcore!+0xb456d0 at xunit.console.netcore!+0xb453ed at System.Net.Tests.HttpListenerResponseCookiesTests.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x95a051 at xunit.console.netcore!+0x959fee at xunit.console.netcore!+0x959f63 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x95a051 at xunit.console.netcore!+0x959fee at xunit.console.netcore!+0x959f63 --- End of stack trace from previous location where exception was thrown --- at xunit.console.netcore!+0x95a051 at xunit.console.netcore!+0x959fee at xunit.console.netcore!+0x959f63 +22057 area-System.Net Tracking HttpListenerResponseTests.Headers.cs disabled tests These tests were originally tracked by 17462 (UAP related) but against .Net Core (non-UAP). - [ ] AddHeader_LongName_ThrowsArgumentOutOfRangeException - [ ] AppendHeader_LongName_ThrowsArgumentOutOfRangeException - [ ] Headers_SetRestricted_ThrowsArgumentException - [ ] Headers_SetLongName_ThrowsArgumentOutOfRangeException - [ ] Headers_SetRequestHeader_ThrowsInvalidOperationException +22059 area-System.Data Transaction code porting from Framwork for TransactionScope / TransactionBinding support Code related to SQL transaction was ported from NET Framework for supporting TransactionScope and TransactionBinding. +22060 area-Microsoft.CSharp Replace RETAILVERIFY in MS.CSharp with Debug.Assert There are two such methods. One simplifies to a call to `Debug.Assert` and so can obviously be replace with it, reducing retail builds. The other would throw `RuntimeBinderInternalCompilerException` but all calls do seem more reasonable as asserts than runtime checks. +22062 area-Infrastructure Stabilize corefx packages shipping with .NET Core 2.0 cc @Petermarcu +22063 area-System.Net System.Net.Tests.HttpListenerRequestTests.ContentEncoding_GetProperty_ReturnsExpected throws MissingMetadataException on UAPAOT ``` System.Reflection.MissingMetadataException : This operation cannot be carried out because metadata for the following object was removed for performance reasons:\n\n EETypeRva:0x00077110\n\nNo further information is available. Rebuild in debug mode for better information.\n\n Stack Trace: at xunit.console.netcore!+0x894406 at xunit.console.netcore!+0xdbc7ae at xunit.console.netcore!+0x9766a2 at xunit.console.netcore!+0x97f9b1 ``` +22064 area-System.Security [release/1.1] Bump runtime AppleCrypto package version and add package to build Changes to this package aren't being effective since the package was not registered for building in the servicing state. Based on https://github.com/dotnet/corefx/commit/0a9aec134587f04932556c91c33618adbc536be8. +22065 area-System.Net Remove some ActiveIssue labels for HttpListener Contributes to: #22053 Fixes: #21902 +22066 area-System.Net System.Net.Tests.HttpRequestStreamTests.CanWrite_Get_ReturnsFalse and CanRead_Get_ReturnsFalse fails on UAPAOT: NotSupported_UnwritableStream/NotSupported_UnreadableStream ``` System.Net.Tests.HttpRequestStreamTests.CanWrite_Get_ReturnsFalse [FAIL] Assert.Throws() Failure Expected: typeof(System.InvalidOperationException) Actual: typeof(System.NotSupportedException): NotSupported_UnwritableStream. For more information, visit http://go.microsoft.com/fwlink/?Lin kId=623485 Stack Trace: at xunit.console.netcore!+0xa35f68 at System.Net.Tests.HttpRequestStreamTests.<>c__DisplayClass16_0.b__1() System.Net.Tests.HttpResponseStreamTests.CanRead_Get_ReturnsFalse [FAIL] Assert.Throws() Failure Expected: typeof(System.InvalidOperationException) Actual: typeof(System.NotSupportedException): NotSupported_UnreadableStream. For more information, visit http://go.microsoft.com/fwlink/?Lin kId=623485 Stack Trace: at xunit.console.netcore!+0xb41398 at System.Net.Tests.HttpResponseStreamTests.<>c__DisplayClass12_0.b__1() System.Net.Tests.HttpResponseStreamTests.Write_NullBuffer_ThrowsArgumentNullException [FAIL] ``` +22068 area-System.Security Add X509SubjectAlternativeName as a rich type SubjectAltName is an extension from RFC 3280 that's fairly important to the people who need it. Currently applications make programmatic decisions for it via `ToString()` which has a couple of problems: * It's localized on Windows * It's not the same on Windows and !Windows. Rather than exposing the whole GeneralName concept (and dealing with X400Address) the type would * Exist * Allow enumerating the DNSName entries * Maybe allow enumerating the IPAddress entries * Probably have a `MatchesHostname(string)` method * Maybe have a `MatchesIPAddress(IPAddress)` method. It might make sense to put `MatchesHostname` on X509Certificate2, just to make things easier. +22072 area-System.Net Re-enabling ClientWebSocket close and cancel tests in UWP "Re-enabling ClientWebSocket's CloseTest and CancelTest runs for UWP. All of these tests pass after a minor behavioral fix, where the ""cancel pending ReceiveAsync"" scenario was resulting in a different exception type compared to .NET Framework and non-UWP .NET Core. The following CancelTest test cases caught the bad behavior that I'm fixing as part of this PR: - ReceiveAsync_CancelThenReceive_ThrowsOperationCanceledException - ReceiveAsync_ReceiveThenCancel_ThrowsOperationCanceledException - ReceiveAsync_AfterCancellationDoReceiveAsync_ThrowsWebSocketException Contributes to #20132" +22073 area-System.ComponentModel Add Container tests and fix a debug assertion +22074 area-Microsoft.CSharp Remove InputFile and KAID from Microsoft.CSharp `InputFile` relates to source files in Rotor and doesn't affect behaviour in dynamic code. Related to this, a type cannot be unresolved in dynamic code, as it comes from existing types, so there's no need to track it. Our starting point is the runtime type, so the references to assemblies are not necessary as with static compilation, hence e.g. `PredefinedTypes._aidMsCorLib` being calculated and then never used. Trimming out unused elements related to this, and the elements those removals make unused, results in `KAID` being removed completely. Also remove some unused method parameters. +22075 area-System.Net Fix HttpClientHandler UAP to use a filtered set of client certs My earlier PR #22022 refactored the GetEligibleClientCertificates code into a Common method. However, I neglected to actually use it in the UAP HttpClientHandler! Fixed the handler to properly filter down the set of client certificates. Added new tests to verify functionality. While doing this, I discovered that the tests need to run in an isolated process due to the per-process caching behavior of the UAP HTTP stack. So, I used the RemoteInvoke method. I had to duplicate some of the new tests using Fact instead of using Theory. This is because the RemoteInvoke doesn't allow non-string parameters and I had to pass in X509Certificate2 objects. So, I separated out each variant into its own Fact test. +22076 area-System.Runtime LoadUnmanagedDllFromPath / LoadUnmanagedDll is not working on linux if .so file is present in any other path other than application output directory Hi , i am not sure whether the issue exists in coreclr or corefx. So notifying the issue here https://github.com/dotnet/coreclr/issues/12707 Thanks, Prashanth. +22077 area-System.Data "Test: System.Data.SqlClient.Tests.DiagnosticTest/ConnectionOpenAsyncErrorTest failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.DiagnosticTest/ConnectionOpenAsyncErrorTest` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Data.SqlClient.Tests.DiagnosticTest.ConnectionOpenAsyncErrorTest() Build : Master - 20170711.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170711.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.DiagnosticTest~2FConnectionOpenAsyncErrorTest +22079 area-System.IO "Test: System.IO.Tests.FileStream_LockUnlock/OverlappingRegionsFromOtherProcess_ThrowsException failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.FileStream_LockUnlock/OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 4, secondLength: 5)` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(Int64 fileLength, Int64 firstPosition, Int64 firstLength, Int64 secondPosition, Int64 secondLength) Build : Master - 20170711.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170711.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.FileStream_LockUnlock~2FOverlappingRegionsFromOtherProcess_ThrowsException(fileLength:%2010,%20firstPosition:%203,%20firstLength:%205,%20secondPosition:%204,%20secondLength:%205) +22080 area-System.Runtime "Tests under: System.Runtime.Extensions.Tests failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.AppDomainTests/SetThreadPrincipal` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() Build : Master - 20170711.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170711.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.AppDomainTests~2FSetThreadPrincipal +22081 area-System.Runtime "Tests under: System.Runtime.Tests failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.DecimalTests/Test_ToString` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Tests.DecimalTests.Test_ToString() Build : Master - 20170711.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170711.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.DecimalTests~2FTest_ToString +22082 area-System.Runtime "Tests under: System.Runtime.Tests failed with ""System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable""" Opened on behalf of @Jiayili1 The test `System.Tests.StringTests/IndexOf_CyrillicE_EnglishUSCulture` has failed. System.AggregateException : One or more errors occurred. (RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable)\r ---- System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable Stack Trace: at System.Threading.ThreadTestHelpers.<>c__DisplayClass3_0.b__1() at System.Threading.ThreadTestHelpers.<>c__DisplayClass3_0.b__2() at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Tests.StringTests.IndexOf_CyrillicE_EnglishUSCulture() ----- Inner Stack Trace ----- at System.Diagnostics.RemoteExecutorTestBase.<>c__DisplayClass14_0.b__1() at System.Threading.ThreadTestHelpers.<>c__DisplayClass3_0.b__0() Build : Master - 20170711.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170711.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.StringTests~2FIndexOf_CyrillicE_EnglishUSCulture +22083 area-System.Data "Test: System.Data.Tests.DataTableReadWriteXmlTest/TestReadXml failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Data.Tests.DataTableReadWriteXmlTest/TestReadXml` has failed. ``` Assert.Equal() Failure\r ? (pos 380)\r Expected: ···:element name=\""Main\"" msdata:Prefix=\""\"">\\r\ \\r\ \\r\ ···\r ? (pos 380) Stack Trace: at System.Data.Tests.DataTableReadWriteXmlTest.TestReadXml() in E:\A\_work\286\s\corefx\src\System.Data.Common\tests\System\Data\DataTableReadWriteXmlTest.cs:line 364 ``` Build : Master - 20170711.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170711.01/workItem/System.Data.Common.Tests/analysis/xunit/System.Data.Tests.DataTableReadWriteXmlTest~2FTestReadXml" +22084 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds failed with ""System.ComponentModel.Win32Exception """ Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol: Tls11, requestOnlyThisProtocol: False)` has failed. System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception.\r ---- System.ComponentModel.Win32Exception : The client and server cannot communicate, because they do not possess a common algorithm Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.Test.Common.LoopbackServer.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.<>c__DisplayClass4_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- Build : Master - 20170711.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Release - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test~2FGetAsync_AllowedSSLVersion_Succeeds(acceptedProtocol:%20Tls11,%20requestOnlyThisProtocol:%20False) +22085 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_SupportedSSLVersion_Succeeds failed with ""System.ComponentModel.Win32Exception : The function requested is not supported""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test/GetAsync_SupportedSSLVersion_Succeeds(sslProtocols: Tls11, url: \""https://www.ssllabs.com:10302/\"")` has failed. System.Net.Http.HttpRequestException : could not establish SSL connection\r ---- System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception.\r -------- System.ComponentModel.Win32Exception : The function requested is not supported Stack Trace: at System.Net.Http.HttpConnectionHandler.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() at System.Net.Http.HttpConnectionHandler.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() at System.Net.Http.HttpConnectionHandler.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.CookieHandler.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnectionHandler.d__9.MoveNext() ----- Inner Stack Trace ----- Build : Master - 20170711.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x64 - Release - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_SslProtocols_Test~2FGetAsync_SupportedSSLVersion_Succeeds(sslProtocols:%20Tls11,%20url:%20%5C%22https:~2F~2Fwww.ssllabs.com:10302~2F%5C%22)" +22087 area-System.IO "Test: System.IO.Tests.Directory_GetFiles_str_str_so/PatternTests_DosStarOddSpace failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.IO.Tests.Directory_GetFiles_str_str_so/PatternTests_DosStarOddSpace(pattern: \""fooooo*.\"", sourceFiles: [\""foooooo.\"", \""foooooo. \"", \""foooooo. \""], expected: [\""foooooo.\"", \""foooooo...` has failed. Assert.Equal() Failure\r Expected: OrderedEnumerable [\""foooooo.\"", \""foooooo. \"", \""foooooo. \""]\r Actual: OrderedEnumerable [\""foooooo.\""] Stack Trace: Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - windows.10.amd64.iot-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.Directory_GetFiles_str_str_so~2FPatternTests_DosStarOddSpace(pattern:%20%5C%22fooooo*.%5C%22,%20sourceFiles:%20%5B%5C%22foooooo.%5C%22,%20%5C%22foooooo.%20%5C%22,%20%5C%22foooooo.%20%20%5C%22%5D,%20expected:%20%5B%5C%22foooooo.%5C%22,%20%5C%22foooooo..." +22088 area-System.IO "Tests under: System.IO.Tests.Directory_Move failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.Directory_Move/MoveFile_TrailingSourceAltSlash_Windows` has failed. Assert.Throws() Failure\r Expected: typeof(System.IO.IOException)\r Actual: (No exception was thrown) Stack Trace: at System.IO.Tests.Directory_Move.MoveFile_TrailingSourceAltSlash_Windows() Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - windows.10.amd64.iot-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.Directory_Move~2FMoveFile_TrailingSourceAltSlash_Windows +22089 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds failed with ""System.Net.Http.CurlException : SSL connect error""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/SetDelegate_ConnectionSucceeds(acceptedProtocol: Tls, requestOnlyThisProtocol: False)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : SSL connect error Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /Users/buildagent/agent/_work/41/s/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass1_0.<b__0>d.MoveNext() in /Users/buildagent/agent/_work/41/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 46 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/buildagent/agent/_work/41/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 57 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__1.MoveNext() in /Users/buildagent/agent/_work/41/s/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs:line 44 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /Users/buildagent/agent/_work/41/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 644 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /Users/buildagent/agent/_work/41/s/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 869 Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20requestOnlyThisProtocol:%20False) +22090 area-System.Net "Test: System.Net.Tests.HttpListenerPrefixCollectionTests/Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd failed with ""System.Net.HttpListenerException""" "Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerPrefixCollectionTests/Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd(uriPrefix: \""http://localhost/invalid%path/\"")` has failed. System.Net.HttpListenerException : The request is not supported. Stack Trace: at System.Net.HttpEndPointManager.GetEPListener(String host, Int32 port, HttpListener listener, Boolean secure) at System.Net.HttpEndPointManager.RemovePrefixInternal(String prefix, HttpListener listener) at System.Net.HttpEndPointManager.RemoveListener(HttpListener listener) at System.Net.HttpListener.Close(Boolean force) at System.Net.HttpListener.Dispose() at System.Net.HttpListener.System.IDisposable.Dispose() at System.Net.HttpListener.Close() at System.Net.Tests.HttpListenerFactory.Dispose() at System.Net.Tests.HttpListenerPrefixCollectionTests.Add_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd(String uriPrefix) Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerPrefixCollectionTests~2FAdd_InvalidPrefixAlreadyStarted_ThrowsHttpListenerExceptionOnAdd(uriPrefix:%20%5C%22http:~2F~2Flocalhost~2Finvalid%25path~2F%5C%22)" +22091 area-System.Runtime "Test: System.IO.Tests.PathTests/GetFullPath_Windows_83Paths failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetFullPath_Windows_83Paths` has failed. Assert.Equal() Failure\r ? (pos 3)\r Expected: C:\\\windows\\\TEMP\\\f40b550e58b649b192051d3d0b05···\r Actual: C:\\\Windows\\\TEMP\\\f40b550e58b649b192051d3d0b05···\r ? (pos 3) Stack Trace: at System.IO.Tests.PathTests.GetFullPath_Windows_83Paths() Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - windows.10.nanolatest.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetFullPath_Windows_83Paths +22092 area-System.Runtime "Test: System.IO.Tests.PathTests/GetInvalidFileNameChars_OtherCharsValid failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetInvalidFileNameChars_OtherCharsValid` has failed. Assert.Equal() Failure\r ? (pos 3)\r Expected: C:\\\data\\\helix\\\work\\\7f8bdd16-0b15-4851-a5b2-d···\r Actual: C:\\\Data\\\helix\\\work\\\7f8bdd16-0b15-4851-a5b2-d···\r ? (pos 3) Stack Trace: at System.IO.Tests.PathTests.GetInvalidFileNameChars_OtherCharsValid() Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - windows.10.amd64.iot-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetInvalidFileNameChars_OtherCharsValid +22093 area-System.Runtime "Test: System.Tests.EnvironmentTests/GetSystemDirectory failed with ""Xunit.Sdk.NotEqualException""" "Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/GetSystemDirectory` has failed. Assert.NotEqual() Failure\r Expected: Not \""C:\\\\\\\windows\\\\\\\system32\""\r Actual: \""C:\\\\\\\windows\\\\\\\system32\"" Stack Trace: Build : 2.0.0 - 20170711.01 (Core Tests) Failing configurations: - windows.10.amd64.iot-x64 - Release - windows.10.nanolatest.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170711.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetSystemDirectory" +22094 area-System.Threading "Test: System.Threading.Threads.Tests.ThreadTests/ApartmentStateTest_ChangeBeforeThreadStarted_Windows failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Threading.Threads.Tests.ThreadTests/ApartmentStateTest_ChangeBeforeThreadStarted_Windows(getApartmentState: Func`2 { Method = System.Threading.ApartmentState ` instead. Split possible paths into separate functions, for simpler iterators. +22096 area-Microsoft.CSharp Iterate TypeArray's inner array instead of TypeArray when safe. "Rewrite enumerations of `TypeArray`s in Microsoft.CSharp to instead enumerate on the inner array, allowing bounds check eliminations and removing some indirection. This could be done in more places, but for now conservatively only done where the ""translation"" is direct, so more easily confirmed as safely equivalent to the existing code, and no local holds the array and no slip-up could overwrite an element." +22098 area-System.Net Uri.TryCreate(string, UriKind, out Uri) now considers /path as valid absolute paths on Linux/macOS "When porting [my OIDC server framework from ASP.NET Core 1.0 to 2.0](https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/issues/449), I discovered a very strange behavior change in `Uri.TryCreate(string, UriKind, out Uri)` that now considers `/path` as valid absolute paths on Linux and macOS (but not on Windows). This can be reproduced using the latest CLI/runtime bits: ```xml Exe netcoreapp2.0 ``` ```csharp using System; namespace UriConsoleApp { public static class Program { public static void Main(string[] args) { if (Uri.TryCreate(""/path"", UriKind.Absolute, out Uri uri)) { Console.WriteLine(""The '/path' string is considered as a valid absolute URI.""); } else { Console.WriteLine(""The '/path' string is not considered as a valid absolute URI.""); } Console.ReadLine(); } } } ``` On Windows: > The '/path' string is not considered as a valid absolute URI. On Ubuntu 14.04.3 LTS: > The '/path' string is considered as a valid absolute URI. Is this inconsistency/behavior change expected? /cc @karelz " +22100 area-System.Net Update MediaTypeHeaderValue.cs Fixed an issue only occuring when running on net45, but compield with net46. See: https://stackoverflow.com/questions/30558827/method-not-found-system-string-system-string-formatsystem-iformatprovider-sy +22102 area-System.Runtime Reenable AppDomain test on ILC Part of https://github.com/dotnet/corefx/issues/21680 +22103 area-System.Runtime Proposal: Create method Guid.NewSequentialGuid() Make a new method to create a sequential Guid. +22105 area-Infrastructure Add RIDs for Amazon Linux. "PR to add Amazon Linux RIDs to runtime.json. Related to #21591. - /etc/os-release is available on Amazon Linux. Here is an example. ``` NAME=""Amazon Linux AMI"" VERSION=""2017.03"" ID=""amzn"" ID_LIKE=""rhel fedora"" VERSION_ID=""2017.03"" PRETTY_NAME=""Amazon Linux AMI 2017.03"" ANSI_COLOR=""0;33"" CPE_NAME=""cpe:/o:amazon:linux:2017.03:ga"" HOME_URL=""http://aws.amazon.com/amazon-linux-ami/"" ``` - VERSION_ID is always in the form _year.month_ . " +22106 area-Microsoft.CSharp Remove dead error case from MS.CSharp and test some other error cases. `Error.BindExplicitConversionRequireOneArgument` is triggered if `RuntimeBinder.BindExplicitConversion` is called with any number of arguments other than 1, but this is only called by `CSharpConvertBinder.DispatchPayload` which takes its arguments from the `args` and `parameters` passed to `RuntimeBinder.BindCore` which is called by `RuntimeBinder.Bind` which is called by `BinderHelper.Bind` which is called by `CSharpConvertBinder.FallbackConvert` with a single argument. So tracing that lot through shows that this is dead code. `BindImplicitConversionRequireOneArgument` has a path that is much as the above and another from `RuntimeBinder.BindCall` which also always sets a single argument, so again this is dead code. Remove these dead methods, and add tests covering some of the other error methods. +22107 area-System.Net Re-enabling ClientWebSocketUnitTest runs in UWP "Re-enabling ClientWebSocket's unit tests for UWP. Note that the following code fails in UAPAOT without the ResourceHelper change proposed in this PR, even though it's already using AssertExtensions: ``` AssertExtensions.Throws( () => cws.CloseOutputAsync(WebSocketCloseStatus.Empty, """", new CancellationToken()).GetAwaiter().GetResult(), ResourceHelper.GetExceptionMessage(""net_WebSockets_NotConnected"")); ``` **Exception message from ResourceHelper (pre-changes):** _The WebSocket is not connected._ **Actual exception message:** _net_WebSockets_NotConnected. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485_ Contributes to #20132" +22108 area-System.Data Fix SNI version issues in Named Pipes tests in SqlClient functional tests Error messages sometimes differ when using Native & Managed SNI, so these changes check the SNI version before running these tests. +22110 area-System.Net System.Net.HttpListener tests hanging in UAPAOT Some of the HttpListener tests are hanging in AOT mode only. The failures are intermittent and the following may not be a complete list: - [ ] 7 tests in HttpRequestStreamTests.cs - [x] 2 test in HttpResponseStreamTests.cs +22112 area-System.Collections Fix failed in System.Collections.Tests on ILC Fixes https://github.com/dotnet/corefx/issues/20888 +22113 area-System.ComponentModel Invalid Rd.xml in System.ComponentModel.TypeConverter The embedded RD.XML in System.ComponentModel.TypeConverter doesn't conform to the schema and causes compilation warnings on UWP: ``` System.ComponentModel.TypeConverter.Resources.System.ComponentModel.TypeConverter.rd.xml(26-26): warning : ILTransform : warning ILT0027: The 'Dynamic' attribute is invalid - The value 'Required Public' is invalid according to its datatype 'http://schemas.microsoft.com/netfx/2013/01/metadata:memberApplicabilitySpec' - The Enumeration constraint failed. [E:\ProjectN_2\src\ndp\pntoolchain\ilc\ilc_selfhosted.proj] ``` What we need to investigate is why there are no failing tests (a badly specified RD.XML does nothing) - is this directive needed? Do we need more tests? Also, the RD.XML needs to be fixed or all users will see this warning in VS. +22114 area-System.Net Enabling some HttpListener tests. Disabling UAP and UAPAOT tests against individual classes of bugs. Fixing test string AOT lookups. Contributes to #17462. +22115 area-System.Drawing Add tests for CustomLineCap This adds some standard validation for `System.Drawing.Drawing2D.CustomLineCap`. +22117 area-Microsoft.CSharp Fix bug in MS.CSharp handling non-generic classes nested in generic Such types are still generic but don't have a tick in their name, which the name lookup expects all generic types' names to have. Handle this case correctly. Fixes #21689 +22118 area-System.ComponentModel Fix invalid rd.xml. Fixes https://github.com/dotnet/corefx/issues/22113 +22120 area-System.Net Add rd.xml for not removing metadata in HttpListenerRequestTests on ILC Fixes: #22063 +22123 area-System.Runtime Reenable System.Runtime Enum test on ILC. +22127 area-System.Net Re-enabling ClientWebSocketUnitTest runs in UWP "Re-enabling ClientWebSocket's unit tests for UWP. Note that the following code fails in UAPAOT, even though it's already using AssertExtensions, which is why the exception message comparisons are being placed behind a ""!IsNetNative"" check: ``` AssertExtensions.Throws( () => cws.CloseOutputAsync(WebSocketCloseStatus.Empty, """", new CancellationToken()).GetAwaiter().GetResult(), ResourceHelper.GetExceptionMessage(""net_WebSockets_NotConnected"")); ``` **Exception message from ResourceHelper:** _The WebSocket is not connected._ **Actual exception message:** _net_WebSockets_NotConnected. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485_ Note that my previous attempt to improve the ResourceHelper to special-case .NET Native was unsuccessful (see #22107). Contributes to #20132" +22128 area-System.Security API checker issue with CheckTokenMembershipEx [CheckTokenMembershipEx](https://msdn.microsoft.com/en-us/library/windows/desktop/hh448479(v=vs.85).aspx) is documented to have an entrypoint in kernel32.dll but the checker places it in advapi32.dll. As a workaround I have temporarily added CheckTokenMembershipEx to the ignore file. ``` Getting error BCL0015: kernel32.dll!CheckTokenMembershipEx is not supported on one\more targeted platforms.Consider using advapi32.dll!CheckTokenMembershipEx instead which doesn't exist. Using advapi32.dll!CheckTokenMembershipEx will give out a runtime error: System.EntryPointNotFoundException : Unable to find an entry point named 'CheckTokenMembershipEx' in DLL 'advapi32.dll'. ``` +22129 area-System.Security Fixing WindowsIdentity.IsAuthenticated for UWP and removing test workarounds. Apps running in a container need to call [CheckTokenMembershipEx ](https://msdn.microsoft.com/en-us/library/windows/desktop/hh448479(v=vs.85).aspx) instead of CheckTokenMembership passing the `CTMF_INCLUDE_APPCONTAINER` flag for authentication validation to work. A potential Windows SDK issue is misplacing the new API. I'm tracking the temporary workaround with #22128. (/cc @danmosemsft @AlexGhiondea ) Fixes #21282. +22134 area-System.Runtime "Test: System.Tests.AppDomainTests/SetData_SameKeyMultipleTimes_ReplacesOldValue failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.AppDomainTests/SetData_SameKeyMultipleTimes_ReplacesOldValue` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -323331298 Stack Trace: at xunit.console.netcore!+0xb071ee at System.Tests.AppDomainTests.SetData_SameKeyMultipleTimes_ReplacesOldValue() at xunit.console.netcore!+0xbb23b7 at xunit.console.netcore!+0x9ed0a3 at xunit.console.netcore!+0x9ecea3 Build : Master - 20170712.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Release - Debug Detail:https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170712.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.AppDomainTests~2FSetData_SameKeyMultipleTimes_ReplacesOldValue +22135 area-System.Globalization How can I add an unsupported culture/locale? I need to support several cultures/locales currently unsupported in .NET Core. Is there any way? | Culture | Description | |:-:|:-:| | 'ckb-IQ' | Which is 'ku-arab-IQ' in .NET's culture notation, but only working on Windows platform. https://github.com/dotnet/coreclr/issues/12759 | | 'mai-IN' and 'sat-IN' | Which are in ISO639-2 specification, but not supported in .NET Core. http://www.loc.gov/standards/iso639-2/php/langcodes_name.php?code_ID=278 http://www.loc.gov/standards/iso639-2/php/langcodes_name.php?code_ID=388| | 'tu-IN' | Which are not in ISO639 specification, but need to support. | +22139 area-System.Xml Xslt recursion incorrect result "Hi, We have come across an issue when using the Xslt 1.0 implementation in .Net Core 2.0.0-preview2-006497. I have committed a sample project at the following location: https://github.com/ymor/NetCore2-XSLTIssue If you run the tests you will see the test ""TestNetCore_InlineCalculation_ReturnsHelloWorld"" fails as the output is 'Hllo World' instead of 'Hello World'. The .net framework 4.6.2 version of this test passes correctly. If you compare the outputs from the two tests, you will see that on iteration 2 of the .net core version the result is incorrect. I have noticed that if you do the ""calculation"" outside of the with-param, the .Net Core test will pass. (ExternalCalculation.xslt). I hope the example is sufficient to help diagnose the issue. Many thanks." +22141 area-System.IO Named pipe stream endpoint cannot be created under application directory In order to preserve application's permissions also on the created pipe, I have to create a directory under the temp path. However it will be much easier not to create one, and just use the path of the current running dotnet app. Currently I'm w/a this by overriding : https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.Unix.cs#L28 Can dotnet provide a way to set _path ? +22142 area-System.Runtime System.Runtime.Loader not copied to output directory Hi, I'm using 2.0.0-preview1-25305-02 and I have an issue with mixed netstandard and net462 projects in the same solution. Not sure if I'm doing something wrong or if there's something else. I have a net462 app that loads another net462 dll containing some Unity hosting code. That in turn loads some other dlls, some of which are netstandard2. On app startup I'm getting: ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. I had thought this was part of netstandard, but either way I've added it as a NuGet package dependency to the Unity project (seeing as that's the one that does dynamic loading), but for some reason it's not ending up in either the Unity project bin folder or the exe one. Do you know why this dll is not being deployed to the bin folder? Thanks, Ben Young +22144 area-System.Net Fix memory leak in ReceiveMessageFromAsync I found this via code inspection while working on a separate change to remove some fields from SocketAsyncEventArgs. When using ReceiveMessageFromAsync multiple times with the same SocketAsyncEventArgs and buffer, it ends up allocating a pinning handle on every call and not freeing one that might already exist. This results in leaking a GCHandle per call. As verification, I ran essentially the test at https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/tests/FunctionalTests/ReceiveMessageFromAsync.cs#L37 but with an infinite number of iterations rather than with 5. Prior to the fix, memory usage climbs consistently and quickly. After the fix, it quickly levels off. cc: @davidsh, @cipop, @geoffkizer +22145 area-System.ComponentModel ComponentResourceManager seems to have different behaviour than netfx "From #22138 ```cs [Fact] public void ApplyResources_IComponentWithDesignModeSite_Success() { var resourceManager = new ComponentResourceManager(typeof(global::Resources.TestResx)) { IgnoreCase = true }; var value = new TestComponent { Site = new TestSite { DesignMode = true } }; resourceManager.ApplyResources(value, ""Object""); Assert.Equal(""One"", value.GetSetProperty); } private class TestSite : ISite { public bool DesignMode { get; set; } public IComponent Component => throw new NotImplementedException(); public IContainer Container => throw new NotImplementedException(); public string Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public object GetService(Type serviceType) => null; } ``` This test passes with `netcoreapp`, but throws with `netfx`: ``` System.ComponentModel.Tests.ComponentResourceManagerTests.ApplyResources_IComponentWithDesignModeSite_Success [FA IL] System.NotImplementedException : The method or operation is not implemented. Stack Trace: C:\Users\hugh\Documents\GitHub\corefx\src\System.ComponentModel.TypeConverter\tests\ComponentResourceManagerT ests.cs(154,0): at System.ComponentModel.Tests.ComponentResourceManagerTests.TestSite.get_Container() at System.ComponentModel.ReflectTypeDescriptionProvider.GetExtenderProviders(Object instance) at System.ComponentModel.ReflectTypeDescriptionProvider.GetExtendedProperties(Object instance) at System.ComponentModel.TypeDescriptor.GetPropertiesImpl(Object component, Attribute[] attributes, Boolea n noCustomTypeDesc, Boolean noAttributes) at System.ComponentModel.ComponentResourceManager.ApplyResources(Object value, String objectName, CultureI nfo culture) C:\Users\hugh\Documents\GitHub\corefx\src\System.ComponentModel.TypeConverter\tests\ComponentResourceManagerT ests.cs(145,0): at System.ComponentModel.Tests.ComponentResourceManagerTests.ApplyResources_IComponentWithDesignModeS ite_Success() ```" +22148 area-System.Threading Reenable Threading ETW's on UAPAOT Fixes https://github.com/dotnet/corefx/issues/20592 +22149 area-System.Security Add missing return statement in test VerifyWithRevocation skip path. "When revocation couldn't be checked (due to network or other issues) the VerifyWithRevocation test is supposed to print ""SKIP"" and exit successfully. Due to a missing return statement it prints SKIP, then fails. Addresses https://github.com/dotnet/corefx/issues/21926 in master." +22150 area-System.Security Disable tests on High Sierra which trigger corrupt chains "Whatever bad loop is currently present on High Sierra with building self-signed chains with revocation enabled seems to be inside a critical section, so any other tests running concurrently have a chance of hitting the ""took too long"" internal timeout and reporting an invalid chain, too. Avoiding calling Verify on a self-signed cert in TestVerify and avoiding TestResetMethod (whose first chain has revocation enabled) results in all tests passing with parallelism enabled across ~60 sequential runs on High Sierra Beta2. Addresses https://github.com/dotnet/corefx/issues/21875 in master." +22152 area-System.Net NullReferenceException thrown from WinHttpResponseStream.CancelPendingResponseStreamReadOperation() An [AppVeyor build failed](https://ci.appveyor.com/project/aspnetci/signalr/build/1.0.1264) for one of the iterations of https://github.com/aspnet/SignalR/pull/657 due to a NullReferenceException apparently thrown from WinHttpResponseStream.CancelPendingResponseStreamReadOperation() with the following stack trace: ``` [xUnit.net 00:00:03.1857362] Stack Trace: [xUnit.net 00:00:03.1867768] at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException) [xUnit.net 00:00:03.1868651] C:\projects\signalr\src\Microsoft.AspNetCore.Sockets.Client.Http\ServerSentEventsTransport.cs(128,0): at Microsoft.AspNetCore.Sockets.Client.ServerSentEventsTransport.d__13.MoveNext() [xUnit.net 00:00:03.1869721] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1870194] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1870795] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1871896] C:\projects\signalr\src\Microsoft.AspNetCore.Sockets.Client.Http\HttpConnection.cs(385,0): at Microsoft.AspNetCore.Sockets.Client.HttpConnection.d__42.MoveNext() [xUnit.net 00:00:03.1872998] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1873450] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1874010] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1874476] C:\projects\signalr\src\Microsoft.AspNetCore.SignalR.Client\HubConnection.cs(91,0): at Microsoft.AspNetCore.SignalR.Client.HubConnection.d__20.MoveNext() [xUnit.net 00:00:03.1875257] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1875684] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1876090] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1876622] at Microsoft.AspNetCore.SignalR.Tests.Common.TaskExtensions.d__2.MoveNext() [xUnit.net 00:00:03.1877018] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1877398] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1878073] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1878519] at Microsoft.AspNetCore.SignalR.Client.FunctionalTests.HubConnectionTests.d__3.MoveNext() [xUnit.net 00:00:03.1878920] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1879332] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1879915] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1880318] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1880732] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1881324] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1881687] --- End of stack trace from previous location where exception was thrown --- [xUnit.net 00:00:03.1882134] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [xUnit.net 00:00:03.1882686] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:00:03.1883055] ----- Inner Stack Trace ----- [xUnit.net 00:00:03.1883462] at System.Net.Http.WinHttpResponseStream.CancelPendingResponseStreamReadOperation() [xUnit.net 00:00:03.1883993] at System.Net.Http.WinHttpResponseStream.<>c.b__18_0(Object s) [xUnit.net 00:00:03.1884418] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) [xUnit.net 00:00:03.1884825] at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException) ``` NETStandard library version: NETStandard.Library 2.0.0-preview3-25505-01 Runtime - netcoreapp2.0 So far, I saw the failure only once which indicates that this might be due to a race somewhere and it will likely happen again. Looking at the code the issue is likely on this line: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpResponseStream.cs#L321. It seems that the stream was disposed (we do [dispose the stream](https://github.com/aspnet/SignalR/blob/cd5d4fbdaf73f9c364a84fd800d40c24ae47358d/src/Microsoft.AspNetCore.Sockets.Client.Http/ServerSentEventsTransport.cs#L120) but this should happen only after the cancellationToken passed to [CopyAsync (via pipelines)](https://github.com/aspnet/SignalR/blob/cd5d4fbdaf73f9c364a84fd800d40c24ae47358d/src/Microsoft.AspNetCore.Sockets.Client.Http/ServerSentEventsTransport.cs#L74) was cancelled. +22155 area-System.Net Re-enable and fix Http tests for UAP * Removed ActiveIssue from a bunch of Http tests. * Converted some ActiveIssue to SkipOnTargetFramework due to platform differences. * Change some tests to use RemoteInvoke to get process isolation since UAP will cache connections per-process. * Removed a duplicate ChannelBinding test. There is already the same test in HttpClientHandlerTest.ServerCertificates.cs (PostAsync_Post_ChannelBinding_ConfiguredCorrectly). And that test checks more things. Contributes to #20010 +22156 area-System.Net [NO MERGE] Test PR HttpListener for UAP test The purpose of this PR is to test CI for running HttpListener tests in UAP mode. Tests passed locally on my machine. @CIPop @davidsh @DavidGoll +22158 area-System.Net HttpClientHandler test GetAsync_IPv6LinkLocalAddressUri_Success fails on UAP "Exception being thrown from GetAsync() on the tests: >ArgumentException: The given System.Uri cannot be converted into a Windows.Foundation.Uri. Please see http://go.microsoft.com/fwlink/?LinkID=215849 for details. Need to debug this more. Most likely a bug in Windows.Foundation.Uri or the interop layer between System.Uri and Windows.Foundation.Uri. Using Ipv6 link-local addresses in uri's in browsers (IE, Edge, Chrome) works. example Uri: http://[fe80::3df1:c851:8775:4c5b]:1693/ Moie stack information: ``` StackTrace "" at System.StubHelpers.UriMarshaler.CreateNativeUriInstanceHelper(Char* rawUri, Int32 strLen)\r\n at System.StubHelpers.UriMarshaler.CreateNativeUriInstance(String rawUri)\r\n at Windows.Web.Http.HttpRequestMessage..ctor(HttpMethod method, Uri uri)\r\n at System.Net.Http.HttpHandlerToFilter.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Net.Http.HttpHandlerToFilter.d__4.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Net.Http.HttpClientHandler.d__86.MoveNext()"" string ```" +22159 area-System.Net SendAsync_Cancel_CancellationTokenPropagates throw wrong exception on UAP HttpClientHandler test SendAsync_Cancel_CancellationTokenPropagates() is throwing OperationCanceledException on UAP. But it throws TaskCanceledException on .NET Core. +22161 area-System.Net SendAsync_SendRequestUsingMethodToEchoServerWithNoContent_MethodCorrectlySent test throws on UAP "Throws when run on UAP and UAPAOT. >System.Net.Http.Functional.Tests.HttpClientHandlerTest.SendAsync_SendRequestUsingMethodToEchoServerWithNoContent_MethodCorrectlySent(method: ""TRACE "", secureServer: False) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Runtime.InteropServices.COMException : The text associated with this error code could not be found. The requested operation is invalid" +22163 area-System.Net GetAsync_StatusCode99_ExpectedException fails on UAP Running the test with a statuscode value of '99' fails the test on UAP. On UAP, the GetAsync() does not throw an exception. On .NET Core, it throws. >ERROR: System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_StatusCodeOutOfRange_ExpectedException(statusCode: 99) [FAIL] Assert.Throws() Failure Expected: typeof(System.Net.Http.HttpRequestException) Actual: (No exception was thrown) Need to investigate to know which behavior is correct. +22164 area-System.Net HttpListenerWebSocketTests.SendAsync_SendWholeBuffer_Success hangs in UAP/UAPAOT on Windows 10 Version 1703 Tracking further investigation for this hang in Windows 10 Version 1703 but not vNext. This is most likely related to the Windows vNext enhancements for WebSocket buffer management. /cc @Diego-Perez-Botero +22166 area-System.Linq Simplify some S.L.Expressions branch compilation methods #### Simplify `EmitExpressionAndBranch` method `EmitExpressionAndBranch` is called from non-lifted non-method `AndAlso` and `OrElse` expressions, from `Conditional` and from `Switch` expressions' use of `Equal`, and from calls which originate with itself, all of which mean the node's type is boolean. Removing the test for `node.Type == typeof(bool)` allows for the rest of the method to be simplified and no longer need a `try`…`finally`. Also include tests covering the `EmitBranchNot` case. Contributes to #11409 #### Reduce if-else ladders in `EmitAndAlsoBinaryExpression` and `EmitOrElseBinaryExpression` Handle all cases in 2 tests, instead of between 2 and 4. #### Simplify IL produced for `EmitMethodAndAlso` and `EmitMethodOrElse` These methods `dup` the lhs operand, then if not short-circuiting store it, then obtain the rhs and store than, the retrieve lhs and rhs and call the method. Instead just `dup` the lhs and if not short-circuiting leave it on the stack, obtain the rhs and call the method. +22169 area-Infrastructure Create Windows PDBs from Portable PDBs during symbol archive Update buildtools to get https://github.com/dotnet/buildtools/pull/1605, which automatically creates converted Windows PDBs for any Portable PDBs in the symbol archive build leg. I changed the target used for master branch builds to `GetAllSymbolFilesToPublish` rather than `UnzipSymbolPackagesForPublish` so that we create converted symbols even if we aren't going to archive them. (We index them on symweb using VSTS Symbol.) On a current CoreFX master build, this new extra target takes ~14 seconds. Windows builds produce Windows PDBs right now, so it only converted PDBs for the Linux and OSX symbol packages. This is part of https://github.com/dotnet/core-eng/issues/698. Note: the converted symbols won't be put on MyGet yet. https://github.com/dotnet/core-eng/issues/1132 tracks that. +22170 area-System.Net Remove 6 IntPtr fields from SocketAsyncEventArgs on Windows "In the Windows implementation of SocketAsyncEventArgs, we're currently storing in six IntPtr fields values that we can efficiently recreate at run time, and by removing the fields, we save 48 bytes per SocketAsyncEventArgs instance (on 64-bit). Unfortunately SocketAsyncEventArgs is currently quite large, so that's ""only"" 7%, but it's a good start. cc: @geoffkizer, @davidsh, @cipop" +22171 area-System.Threading Can we delete ValueTask.CreateAsyncMethodBuilder? https://github.com/dotnet/corefx/blob/5a6d8ca975b512eeeea7404c740afcf865128405/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs#L156-L161 This CreateAsyncMethodBuilder function was used as part of the initial C# compiler design for supporting arbitrary async return types, but the final design switched away from needing it. Unfortunately we neglected to then remove the method prior to shipping the library as stable. The method is hidden from IntelliSense, and there's no good reason for someone to call it. Can we remove it? +22173 area-System.Security Enable X509Certificates tests to run on uap and uapaot fixes #17764 cc: @bartonjs @jkotas @steveharter Enabling test run for uap and uapaot for X509Certificates tests which were not running before. +22174 area-System.Diagnostics S.D.Process tests are failing on uap "Currently all S.D.Process tests are disabled (https://github.com/dotnet/corefx/issues/20948). I'm planning to reenable not failing tests and substitute that issue so that only relevant tests are disabled.
List of failing tests on uap ``` ERROR: System.Diagnostics.Tests.ProcessCollectionTests.TestThreadCollectionBehavior [FAIL] ERROR: System.Diagnostics.Tests.ProcessModuleTests.Modules_Get_ContainsHostFileName [FAIL] ERROR: System.Diagnostics.Tests.ProcessStandardConsoleTests.TestChangesInConsoleEncoding [FAIL] ERROR: System.Diagnostics.Tests.ProcessStartInfoTests.TestCreateNoWindowProperty(value: True) [FAIL] ERROR: System.Diagnostics.Tests.ProcessStartInfoTests.TestCreateNoWindowProperty(value: False) [FAIL] ERROR: System.Diagnostics.Tests.ProcessStartInfoTests.Verbs_GetWithExeExtension_ReturnsExpected [FAIL] ERROR: System.Diagnostics.Tests.ProcessStartInfoTests.TestWorkingDirectoryProperty [FAIL] ERROR: System.Diagnostics.Tests.ProcessStartInfoTests.TestEnvironmentOfChildProcess [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestAsyncErrorStream [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncStreams [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestAsyncOutputStream [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncOutputStream [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestStreamNegativeTests [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestManyOutputLines [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestAsyncHalfCharacterAtATime [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestEOFReceivedWhenStdInClosed [FAIL] ERROR: System.Diagnostics.Tests.ProcessStreamReadTests.TestSyncErrorStream [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPeakWorkingSet [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestVirtualMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_EmptyMachineName_ThrowsArgumentException [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestSessionId [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.StartInfo_GetFileName_ReturnsExpected [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPeakVirtualMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestProcessName [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestMainModuleOnNonOSX [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessName_ReturnsExpected [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestId [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.MainWindowHandle_NoWindow_ReturnsEmptyHandle [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.Process_StartTest [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestVirtualMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPagedMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPriorityClassWindows [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.HandleCountChanges [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestNonpagedSystemMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestExitTime [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestWorkingSet64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPagedMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPrivateMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPeakPagedMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents(enable: True) [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents(enable: False) [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestEnableRaiseEvents(enable: null) [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NullMachineName_ThrowsArgumentNullException [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.CloseMainWindow_NotStarted_ThrowsInvalidOperationException [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.CloseMainWindow_NoWindow_ReturnsFalse [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.Process_StartWithArgumentsTest [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestGetProcesses [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPrivateMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestProcessStartTime [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestHasExited [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestMaxWorkingSet [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_NoSuchProcess_ReturnsEmpty [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPagedSystemMemorySize [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestMachineName [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPagedSystemMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestGetProcessById [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.MainWindowTitle_NoWindow_ReturnsEmpty [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPeakPagedMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.StartInfo_SetOnRunningProcess_ThrowsInvalidOperationException [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPeakWorkingSet64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(machineName: ""."") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(machineName: ""."") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.GetProcessesByName_ProcessNameMachineName_ReturnsExpected(machineName: ""krwq-win10"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPeakVirtualMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestProcessorTime [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestExitCode [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.Process_StartWithInvalidUserNamePassword [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""abc\"" d e"", expectedArgv: ""abc,d,e"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""b d \""\""a\""\"" "", expectedArgv: ""b,d,a"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""\""a\""\"" b d"", expectedArgv: ""a,b,d"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""\""c \""\""b\""\"" d\""\\"", expectedArgv: ""c,b,d\\"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""c\""\""\""\"" b \""\""\\"", expectedArgv: ""c\"",b,\\"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""\""\""\"" b c"", expectedArgv: ""\"",b,c"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""\"" b \""\"""", expectedArgv: "",b,"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""\\a\\\"" \\\\\""\\\\\\ b c"", expectedArgv: ""\\a\"" \\\\\\\\,b,c"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""a b c\""def"", expectedArgv: ""a,b,cdef"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""a\""b c\""d e\""f g\""h i\""j k\""l"", expectedArgv: ""ab cd,ef gh,ij kl"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""a\\\\\\\\\""b c\"" d e"", expectedArgv: ""a\\\\b c,d,e"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""a\\\\\\\""b c d"", expectedArgv: ""a\\\""b,c,d"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\\ \\\\ \\\\\\"", expectedArgv: ""\\,\\\\,\\\\\\"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""a\\\\b d\""e f\""g h"", expectedArgv: ""a\\\\b,de fg,h"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""abc\""\t\td\te"", expectedArgv: ""abc,d,e"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\""abc\"" d e"", expectedArgv: ""abc,d,e"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""\\\""\\\""a\\\""\\\"" b d"", expectedArgv: ""\""\""a\""\"",b,d"") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestArgumentParsing(inputArguments: ""b d \\\""\\\""a\\\""\\\"""", expectedArgv: ""b,d,\""\""a\""\"""") [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestSafeHandle [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestBasePriorityOnWindows [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestWorkingSet [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestPriorityBoostEnabled [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestHandleCount [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestMinWorkingSet [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestNonpagedSystemMemorySize64 [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestProcessorAffinity [FAIL] ERROR: System.Diagnostics.Tests.ProcessTests.TestProcessOnRemoteMachineWindows [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.TestCommonPriorityAndTimeProperties [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.TestStartTimeProperty [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.TestThreadCount [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.Threads_GetMultipleTimes_ReturnsSameInstance [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.TestStartAddressProperty [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.TestPriorityLevelProperty [FAIL] ERROR: System.Diagnostics.Tests.ProcessThreadTests.TestThreadStateProperty [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_EnableRaisingEvents_CorrectExitCode(exitCode: 0) [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_EnableRaisingEvents_CorrectExitCode(exitCode: 1) [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_EnableRaisingEvents_CorrectExitCode(exitCode: 127) [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.WaitForPeerProcess [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_CopiesShareExitInformation [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.MultipleProcesses_StartAllKillAllWaitAll [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.MultipleProcesses_ParallelStartKillWait [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.WaitChain [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_TryWaitMultipleTimesBeforeCompleting [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.MultipleProcesses_SerialStartKillWait [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_WaitAfterExited(addHandlerBeforeStart: False) [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.SingleProcess_WaitAfterExited(addHandlerBeforeStart: True) [FAIL] ERROR: System.Diagnostics.Tests.ProcessWaitingTests.WaitForSelfTerminatingChild [FAIL] ```
They are related to RemoteInvoke not giving back process handle" +22175 area-System.Net Fix null dereference in WinHttpResponseStream If the response stream is disposed of while an operation like CopyToAsync is in flight, a subsequent cancellation request can trigger a null dereference in CancelPendingResponseStreamReadOperation. While this may not be desirable interaction, we should be more robust against it. Fixes https://github.com/dotnet/corefx/issues/22152 cc: @davidsh, @moozzyk @moozzyk, I'm not entirely sure how the access pattern you highlighted could have triggered this, but obviously something did, so hopefully this addresses it. Regardless of whether it does, it's a worthwhile change IMHO. +22177 area-System.Net Building tests not successful on Mac OSX "Hi, I was trying to build core fx tests on my Macbook with OSX 10.12.3 and it failed to build the tests. I cloned corefx yesterday, I was able to build successfully. But when I built and ran the test using build-tests.sh I ran into errors. Here is the test execution summary. I have also attached the relevant files. [Archive.zip](https://github.com/dotnet/corefx/files/1143416/Archive.zip) ``` /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(346,5): warning : System.Net.NameResolution.Pal.Tests Total: 17, Errors: 0, Failed: 2, Skipped: 0, Time: 17.235s [/Users/Surya/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj] ~/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests Finished running tests. End time=11:11:21. Return value was 1 /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(346,5): warning MSB3073: The command ""/Users/Surya/code/dotnet2/corefx/bin/Unix.AnyCPU.Debug/System.Net.NameResolution.Pal.Tests/netcoreapp/RunTests.sh /Users/Surya/code/dotnet2/corefx/bin/testhost/netcoreapp-OSX-Debug-x64/"" exited with code 1. [/Users/Surya/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj] /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.Net.NameResolution.Pal.Tests' please check /Users/Surya/code/dotnet2/corefx/bin/Unix.AnyCPU.Debug/System.Net.NameResolution.Pal.Tests/netcoreapp/testResults.xml for details! [/Users/Surya/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj] /Users/Surya/code/dotnet2/corefx/dir.traversal.targets(77,5): error : (No message specified) [/Users/Surya/code/dotnet2/corefx/src/tests.builds] Build FAILED. /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(346,5): warning : System.Net.WebProxy.Tests Total: 21, Errors: 0, Failed: 1, Skipped: 0, Time: 5.925s [/Users/Surya/code/dotnet2/corefx/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj] /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(346,5): warning MSB3073: The command ""/Users/Surya/code/dotnet2/corefx/bin/AnyOS.AnyCPU.Debug/System.Net.WebProxy.Tests/netstandard/RunTests.sh /Users/Surya/code/dotnet2/corefx/bin/testhost/netcoreapp-OSX-Debug-x64/"" exited with code 1. [/Users/Surya/code/dotnet2/corefx/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj] /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(346,5): warning : System.Net.NameResolution.Pal.Tests Total: 17, Errors: 0, Failed: 2, Skipped: 0, Time: 17.235s [/Users/Surya/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj] /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(346,5): warning MSB3073: The command ""/Users/Surya/code/dotnet2/corefx/bin/Unix.AnyCPU.Debug/System.Net.NameResolution.Pal.Tests/netcoreapp/RunTests.sh /Users/Surya/code/dotnet2/corefx/bin/testhost/netcoreapp-OSX-Debug-x64/"" exited with code 1. [/Users/Surya/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj] /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.Net.WebProxy.Tests' please check /Users/Surya/code/dotnet2/corefx/bin/AnyOS.AnyCPU.Debug/System.Net.WebProxy.Tests/netstandard/testResults.xml for details! [/Users/Surya/code/dotnet2/corefx/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj] /Users/Surya/code/dotnet2/corefx/Tools/tests.targets(354,5): error : One or more tests failed while running tests from 'System.Net.NameResolution.Pal.Tests' please check /Users/Surya/code/dotnet2/corefx/bin/Unix.AnyCPU.Debug/System.Net.NameResolution.Pal.Tests/netcoreapp/testResults.xml for details! [/Users/Surya/code/dotnet2/corefx/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj] /Users/Surya/code/dotnet2/corefx/dir.traversal.targets(77,5): error : (No message specified) [/Users/Surya/code/dotnet2/corefx/src/tests.builds] 4 Warning(s) 3 Error(s) Time Elapsed 00:03:42.99 Command execution failed with exit code 1. ``` " +22178 area-System.Diagnostics Re-enable not failing S.D.Process tests on uap Fixes: https://github.com/dotnet/corefx/issues/20948 Opens: https://github.com/dotnet/corefx/issues/22174 Currently all S.D.Process tests are disabled on uap, now only relevant failing tests. While quickly reviewing the code I noticed that most of the tests (but not all) fail because RemoteInvoke does not give back Process handle on uap (also we do not have a way of creating remote process without starting it) I have also decreased timeout for remote processes from 10 minutes to 10 seconds +22179 area-System.Runtime Fix RepeatBehavior GetHashCode test on Uap Resolves https://github.com/dotnet/corefx/issues/21351 The test case `new object[] { new RepeatBehavior { Type = RepeatBehaviorType.Forever + 1 }, new RepeatBehavior { Type = RepeatBehaviorType.Count + 1 }, false };` fails on [this line](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.WindowsRuntime.UI.Xaml/tests/Windows/UI/Xaml/Media/Animation/RepeatBehaviorTests.cs#L177). The test seems to be failing because the first behavior type argument passed is invalid and thus gets ValueType.HashCode()=0 as hash code by default, and the second one is of behavior type Duration, which has 0 time span and as a result, returns 0 for hash code. I'm not 100% sure what the purpose of the test was, but looks like to me the failure should be expected given the input. So, enforcing non-zero timespan for the second arg. cc: @hughbe @tijoytom +22180 area-System.Security [release/2.0] Disable tests on High Sierra which trigger corrupt chains "Whatever bad loop is currently present on High Sierra with building self-signed chains with revocation enabled seems to be inside a critical section, so any other tests running concurrently have a chance of hitting the ""took too long"" internal timeout and reporting an invalid chain, too. Avoiding calling Verify on a self-signed cert in TestVerify and avoiding TestResetMethod (whose first chain has revocation enabled) results in all tests passing with parallelism enabled across ~60 sequential runs on High Sierra Beta2. Port #22150 to release/2.0. Fixes #21875." +22181 area-Serialization release/2.0.0 - Disabling CompareInfo serialization blob sanity test which is failing on OSX Somebody please sign-off. cc @Petermarcu @tarekgh +22182 area-System.Security [release/2.0] Add missing return statement in test VerifyWithRevocation skip path. "When revocation couldn't be checked (due to network or other issues) the VerifyWithRevocation test is supposed to print ""SKIP"" and exit successfully. Due to a missing return statement it prints SKIP, then fails. Port #22149 to release/2.0. Fixes #21926" +22183 area-System.Net Pinning correct WebSocketState.Closed behavior As part of the #20362 investigation, it has been determined that the non-UWP .NET Core behavior around WebSocketState.Closed is incorrect. These changes pin the correct (.NET Framework) behavior. After these changes, there will be no remaining UAP-specific ActiveIssue or SkipOn* annotations in the entire System.Net.WebSockets* namespace. Contributes to #20362 #20132 +22184 area-System.Data Cannot access Kerberos ticket. Ensure Kerberos has been initialized with 'kinit'. Hello, I have mssql-server installed on Debian 8. I'm using 2.0.0-preview2-final packages. When it's trying to connect to local mssql server, I'm getting the following error: ``` Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0] An unhandled exception has occurred: Cannot access Kerberos ticket. Ensure Kerberos has been initialized with 'kinit'. ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - An invalid status code was supplied (SPNEGO cannot find mechanisms to negotiate). at System.Net.Security.NegotiateStreamPal.GssInitSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags, Int32& isNtlmUsed) at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) at System.Data.SqlClient.SNI.SNIProxy.GenSspiClientContext(SspiClientContextStatus sspiClientContextStatus, Byte[] receivedBuff, Byte[]& sendBuff, Byte[] serverName) at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.GenerateSspiClientContext(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength, Byte[] _sniSpnBuffer) at System.Data.SqlClient.TdsParser.SNISSPIData(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength) System.Data.SqlClient.SqlException (0x80131904): Cannot access Kerberos ticket. Ensure Kerberos has been initialized with 'kinit'. ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - An invalid status code was supplied (SPNEGO cannot find mechanisms to negotiate). at System.Net.Security.NegotiateStreamPal.GssInitSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags, Int32& isNtlmUsed) at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) at System.Data.SqlClient.SNI.SNIProxy.GenSspiClientContext(SspiClientContextStatus sspiClientContextStatus, Byte[] receivedBuff, Byte[]& sendBuff, Byte[] serverName) at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.GenerateSspiClientContext(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength, Byte[] _sniSpnBuffer) at System.Data.SqlClient.TdsParser.SNISSPIData(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() ``` I successfully connected to the mssql server remotely using the same net core app from Windows. But I can't connect to the server when it's running locally on Linux. The question: what's going wrong? Why do I need to install and setup a Kerberos client (as far as I understand). What I need to do? +22187 area-System.Net GetAsync_RequestHeadersAddCustomHeaders_HeaderAndValueSent failing on UAP "The HttpClientHandler test GetAsync_RequestHeadersAddCustomHeaders_HeaderAndValueSent is failing on UAP. It fails when it tries to send a custom header with an empty value: ```c# public static readonly object[][] HeaderValueAndUris = { new object[] { ""X-CustomHeader"", ""x-value"", Configuration.Http.RemoteEchoServer }, new object[] { ""X-Cust-Header-NoValue"", """" , Configuration.Http.RemoteEchoServer }, // FAILS new object[] { ""X-CustomHeader"", ""x-value"", Configuration.Http.RedirectUriForDestinationUri( secure:false, statusCode:302, destinationUri:Configuration.Http.RemoteEchoServer, hops:1) }, new object[] { ""X-Cust-Header-NoValue"", """" , Configuration.Http.RedirectUriForDestinationUri( secure:false, statusCode:302, destinationUri:Configuration.Http.RemoteEchoServer, // FAILS hops:1) }, }; ``` This is a bug in WinRT HttpClient. Opened internal bug 12743908 " +22188 area-System.Data Skip NonAzureNoProtocolConnectionTest on UAP, since the UseManagedSNI flag it uses cannot be checked via reflection on UAP Fixes https://github.com/dotnet/corefx/issues/21437 +22189 area-System.Net Add PlatformDetection.PartialMessagesSupported and disable Arrays with non-zero lower bounds on not supported platform Fixes #22164 Fixed #22055 +22190 area-System.IO Update tests for long path support in CoreCLR Update tests to correspond to dotnet/coreclr#12786. See #8655 After we get CoreCLR bits into CoreFX, I can come back and remove the ActiveIssue. Also, at that time, I would like to flesh out the tests a bit more to cover some more cases that should be lit up then. cc @JeremyKuhne +22191 area-System.Net PostAsync_RedirectWith307_LargePayload test fails on UAP >ERROR: System.Net.Http.Functional.Tests.HttpClientHandlerTest.PostAsync_RedirectWith307_LargePayload [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Runtime.InteropServices.COMException : The text associated with this error code could not be found. The HTTP redirect request must be confirmed by the user +22192 area-System.Net SendAsync_SendRequestUsingNoBodyMethodToEchoServerWithContent_NoBodySent fails in UAP "The HttpClientHandler test fails with using the TRACE verb. >ERROR: System.Net.Http.Functional.Tests.HttpClientHandlerTest.SendAsync_SendRequestUsingNoBodyMethodToEchoServerWithContent_NoBodySent(method: ""TRACE"", secureServer: False) [FAIL] System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Runtime.InteropServices.COMException : The text associated with this error code could not be found. The requested operation is invalid Needs investigation. Most likely a WinRT HttpClient behavior difference." +22193 area-System.Net Adjust Http tests for UAP behavior differences Made changes to some UAP tests due to known platform differences. Differences will be documented in the AppCompat docs. Opened some new issues for bugs to investigate. Fixes #22159 Fixes #22163 Fixes #22192 +22195 area-System.Net "Parallel requests with WinHttpHandler throws exception ""The server returned an invalid or unrecognized response""" "According to different recommendations I use only one instance of HttpClient in my app. I need to make HTTP/2 calls, so I use WinHttpHandler. I noticed that when I run several requests simultaneously some of them fail with > System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response > at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) > at System.Net.Http.WinHttpHandler.d__105.MoveNext() > --- End of inner exception stack trace --- > at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpClient.d__58.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() > at WinHttpRaceCondition.Program.d__2.MoveNext() in D:\dev\test-projects\WinHttpRaceCondition\WinHttpRaceCondition\Program.cs:line 76 The following code reproduces this issue. ``` using System; using System.Collections.Generic; using System.Threading.Tasks; namespace WinHttpRaceCondition { using System.Net.Http; using System.Security.Authentication; class Program { private static HttpClient _httpClient; static void Main(string[] args) { var httpHandler = new WinHttpHandler { SslProtocols = SslProtocols.Tls12 }; _httpClient = new HttpClient(httpHandler, true); var numberOfRequests = 5; if (args.Length == 2) { var sharedClient = args[0] == ""SharedClient=true""; var parallelExecution = args[1] == ""ParallelExecution=true""; if (parallelExecution) { var tasks = new Task[numberOfRequests]; for (var i = 0; i < numberOfRequests; i++) { tasks[i] = SendToApple(sharedClient, i.ToString()); } Task.WaitAll(tasks); for (var i = 0; i < numberOfRequests; i++) { Console.WriteLine(tasks[i].Result + ""\n""); } } else { for (var i = 0; i < numberOfRequests; i++) { Console.WriteLine(SendToApple(sharedClient, i.ToString()).Result + ""\n""); } } } else { Console.WriteLine(""Wrong arguments""); } } private static async Task SendToApple(bool shareHttpClient, string postfix) { HttpClient httpClient; if (shareHttpClient) { httpClient = _httpClient; } else { var httpHandler = new WinHttpHandler { SslProtocols = SslProtocols.Tls12 }; httpClient = new HttpClient(httpHandler, true); } using (var request = new HttpRequestMessage(HttpMethod.Post, ""https://api.push.apple.com:443/3/device/"" + postfix)) { request.Content = new StringContent(""Test""); ; request.Version = new Version(2, 0); try { using (var httpResponseMessage = await httpClient.SendAsync(request)) { var responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); return $""status: {(int) httpResponseMessage.StatusCode} content: {responseContent}""; } } catch (Exception e) { return e.ToString(); } } } } } ``` SharedClient parameter controls if requests will use shared (true) or separate httpClients (false), ParallelExecution controls if requests will be executed in parallel (true) or sequentually (true). If you run it with SharedClient=true ParallelExecution=true the program will use shared httpClient for requests and make 5 requests in parallel. In that case it is very probable that a few of these requests fail with ""System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response"" exception. The program with other combinations of parameters works fine." +22196 area-System.Net Fix UAP HttpClient to match behaviors with other platforms regarding invalid status codes Reference: comment in PR https://github.com/dotnet/corefx/pull/22193 The test currently skips the behavior difference on UAP due to WinRT (wininet) behavior differences. ```c# public async Task GetAsync_StatusCodeOutOfRange_ExpectedException(int statusCode) { if (PlatformDetection.IsUap && statusCode == 99) { // UAP platform allows this status code due to historical reasons. return; } ``` Is it possible to workaround this difference and fix it in the .NET layer, i.e. to throw exception when receiving invalid status codes from a server? +22197 area-System.ComponentModel Add BindingList tests and fix a debug assertion +22199 area-System.Drawing Adding System.Drawing.Common.Drawing2D PathGradientBrush tests. #20711 Converting mono **PathGradientBrush** tests and adding few new. #20711 +22201 area-System.Net Reconcile behavior of MaxRequestContentBufferSize across .NET Core The HttpClientHandler property, MaxRequestContentBufferSize, has been deprecated. This PR reconciles the behavior of the getter and setter of the property. Similar to other decisions in HttpClient PRs with these kinds of behavior differences, we are not going to throw PNSE. We will document the differences in the AppCompat docs. Fixes #7879 +22203 area-System.IO "Test: System.IO.Tests.StreamReaderTests/DetectEncoding_EncodingRoundtrips failed with ""System.Reflection.MissingMetadataException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.StreamReaderTests/DetectEncoding_EncodingRoundtrips` has failed. System.Reflection.MissingMetadataException : This operation cannot be carried out because metadata for the following object was removed for performance reasons:\ \ EETypeRva:0x0005EE58\ \ No further information is available. Rebuild in debug mode for better information.\ \ Stack Trace: at xunit.console.netcore!+0xd392c3 at xunit.console.netcore!+0xd384d9 at xunit.console.netcore!+0xd3e0b7 at xunit.console.netcore!+0x88dede at xunit.console.netcore!+0x88502d at V System.Collections.Concurrent.ConcurrentUnifier`2.GetOrAdd(K) + 0x6a at xunit.console.netcore!+0xc04188 at xunit.console.netcore!+0xc045eb at xunit.console.netcore!+0xd37d9c at xunit.console.netcore!+0x96ab02 at xunit.console.netcore!+0x97347d Build : Master - 20170713.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170713.01/workItem/System.IO.Tests/analysis/xunit/System.IO.Tests.StreamReaderTests~2FDetectEncoding_EncodingRoundtrips +22204 area-Serialization "Test: XmlSerializerTests/Xml_VerifyCompilationIssueOnly failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `XmlSerializerTests/Xml_VerifyCompilationIssueOnly` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at T Xunit.Assert.Throws[T](Action) + 0x3b at Void XmlSerializerTests.AssertSerializationFailure[T, ExceptionType]() + 0xab at XmlSerializerTests.Xml_VerifyCompilationIssueOnly() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x51 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x43 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x183 Build : Master - 20170713.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170713.01/workItem/System.Xml.XmlSerializer.ReflectionOnly.Tests/analysis/xunit/XmlSerializerTests~2FXml_VerifyCompilationIssueOnly +22205 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessTests/TestExitTime failed with ""TestExitTime is incorrect""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessTests/TestExitTime` has failed. TestExitTime is incorrect. TimeBeforeStart 7/13/17 12:51:12 AM Ticks=636355038728165136, ExitTime=7/13/17 12:51:12 AM, Ticks=636355038727555168, ExitTimeUniversal 7/13/17 12:51:12 AM Ticks=636355038727555168, NowUniversal 7/13/17 12:51:12 AM Ticks=636355038727559263 Expected: True Actual: False Stack Trace: at System.Diagnostics.Tests.ProcessTests.TestExitTime() in /root/corefx/src/System.Diagnostics.Process/tests/ProcessTests.cs:line 149 Build : 2.0.0 - 20170713.01 (Core Tests) Failing configurations: - Ubuntu.1610.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170713.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FTestExitTime +22206 area-Infrastructure Editor support on Linux / macOS "During a meetup together with @karelz on July 11th I did a talk on contributing to .NET Core. In my talk I talked about the editors you can use with the code base. My conclusion was that on Windows its all fine with Visual Studio, but on other platforms the experience is quite limiting. The contributor docs currently suggest using Visual Studio for Mac on macOS, but it doesn't want to open the project files at all. It gives me the following error: ``` Error while trying to load the project 'corefx/src/System.Security.Cryptography.Algorithms/ref/System.Security.Cryptography.Algorithms.csproj': Project does not support framework '.NETPortable, Version=v4.5' ``` My best bet currently is Visual Studio Code since I can at least open and edit the files. Unfortunately there's no IntelliSense support there, due to the following error: ``` [info]: OmniSharp.MSBuild.MSBuildProjectSystem Loading project: /Users/jmezach/Projects/open-source/dotnet/corefx/src/System.Security.Cryptography.Algorithms/ref/System.Security.Cryptography.Algorithms.csproj [warn]: OmniSharp.MSBuild.MSBuildProjectSystem Failed to load project file '/Users/jmezach/Projects/open-source/dotnet/corefx/src/System.Security.Cryptography.Algorithms/ref/System.Security.Cryptography.Algorithms.csproj'. /Users/jmezach/Projects/open-source/dotnet/corefx/src/System.Security.Cryptography.Algorithms/ref/System.Security.Cryptography.Algorithms.csproj(1,1) Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project ""/Users/jmezach/.vscode/extensions/ms-vscode.csharp-1.11.0/bin/xbuild/Microsoft/Portable/v4.5/Microsoft.Portable.CSharp.targets"" was not found. Also, tried to find ""Microsoft/Portable/v4.5/Microsoft.Portable.CSharp.targets"" in the fallback search path(s) for $(MSBuildExtensionsPath32) - ""/Library/Frameworks/Mono.framework/External/xbuild/"" . These search paths are defined in ""/Users/jmezach/.vscode/extensions/ms-vscode.csharp-1.11.0/bin/omnisharp/OmniSharp.exe.config"". Confirm that the path in the declaration is correct, and that the file exists on disk in one of the search paths. /Users/jmezach/Projects/open-source/dotnet/corefx/Tools/FrameworkTargeting.targets at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject (System.String errorSubCategoryResourceName, Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, System.Object[] args) [0x00067] in :0 at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject (Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, System.Object[] args) [0x00001] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].ThrowForImportedProjectWithSearchPathsNotFound (Microsoft.Build.Evaluation.ProjectImportPathMatch searchPathMatch, Microsoft.Build.Construction.ProjectImportElement importElement) [0x000ae] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].ExpandAndLoadImports (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x0027f] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].EvaluateImportElement (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x00001] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].PerformDepthFirstPass (Microsoft.Build.Construction.ProjectRootElement currentProjectOrImport) [0x0036c] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].EvaluateImportElement (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x00031] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].PerformDepthFirstPass (Microsoft.Build.Construction.ProjectRootElement currentProjectOrImport) [0x0036c] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].EvaluateImportElement (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x00031] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].PerformDepthFirstPass (Microsoft.Build.Construction.ProjectRootElement currentProjectOrImport) [0x0036c] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].EvaluateImportElement (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x00031] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].PerformDepthFirstPass (Microsoft.Build.Construction.ProjectRootElement currentProjectOrImport) [0x0036c] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].EvaluateImportElement (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x00031] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].PerformDepthFirstPass (Microsoft.Build.Construction.ProjectRootElement currentProjectOrImport) [0x0036c] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].Evaluate () [0x00055] in :0 at Microsoft.Build.Evaluation.Evaluator`4[P,I,M,D].Evaluate (Microsoft.Build.Evaluation.IEvaluatorData`4[P,I,M,D] data, Microsoft.Build.Construction.ProjectRootElement root, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings, System.Int32 maxNodeCount, Microsoft.Build.Collections.PropertyDictionary`1[T] environmentProperties, Microsoft.Build.BackEnd.Logging.ILoggingService loggingService, Microsoft.Build.Evaluation.IItemFactory`2[S,T] itemFactory, Microsoft.Build.Evaluation.IToolsetProvider toolsetProvider, Microsoft.Build.Evaluation.ProjectRootElementCache projectRootElementCache, Microsoft.Build.Framework.BuildEventContext buildEventContext, Microsoft.Build.Execution.ProjectInstance projectInstanceIfAnyForDebuggerOnly) [0x0001a] in :0 at Microsoft.Build.Evaluation.Project.Reevaluate (Microsoft.Build.BackEnd.Logging.ILoggingService loggingServiceForEvaluation, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x0003c] in :0 at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary (Microsoft.Build.BackEnd.Logging.ILoggingService loggingServiceForEvaluation, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x00040] in :0 at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary (Microsoft.Build.BackEnd.Logging.ILoggingService loggingServiceForEvaluation) [0x00001] in :0 at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary () [0x00008] in :0 at Microsoft.Build.Evaluation.Project.Initialize (System.Collections.Generic.IDictionary`2[TKey,TValue] globalProperties, System.String toolsVersion, System.String subToolsetVersion, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x00108] in :0 at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary`2[TKey,TValue] globalProperties, System.String toolsVersion, System.String subToolsetVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x000bb] in :0 at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary`2[TKey,TValue] globalProperties, System.String toolsVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x00000] in :0 at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary`2[TKey,TValue] globalProperties, System.String toolsVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection) [0x00000] in :0 at Microsoft.Build.Evaluation.ProjectCollection.LoadProject (System.String fileName, System.Collections.Generic.IDictionary`2[TKey,TValue] globalProperties, System.String toolsVersion) [0x00135] in :0 at Microsoft.Build.Evaluation.ProjectCollection.LoadProject (System.String fileName, System.String toolsVersion) [0x00001] in :0 at Microsoft.Build.Evaluation.ProjectCollection.LoadProject (System.String fileName) [0x00001] in :0 at OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.LoadProject (System.String filePath, System.String solutionDirectory, System.String sdksPath, Microsoft.Extensions.Logging.ILogger logger, OmniSharp.Options.MSBuildOptions options, System.Collections.Generic.ICollection`1[T] diagnostics, System.Collections.Immutable.ImmutableArray`1[System.String]& targetFrameworks) [0x00062] in <4547000d373140b29fc6ad48137693ba>:0 at OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.Create (System.String filePath, System.String solutionDirectory, System.String sdksPath, Microsoft.Extensions.Logging.ILogger logger, OmniSharp.Options.MSBuildOptions options, System.Collections.Generic.ICollection`1[T] diagnostics) [0x0000a] in <4547000d373140b29fc6ad48137693ba>:0 at OmniSharp.MSBuild.MSBuildProjectSystem.LoadProject (System.String projectFilePath) [0x0003f] in <4547000d373140b29fc6ad48137693ba>:0 ``` Karel encouraged me to post the issue here to see what we can do about this. My guess is that it's not going to be an easy fix since it has do with the project system. Someone at the meetup did make a remark that JetBrains Rider can open the project files, but I haven't yet tried that myself." +22207 area-System.Drawing Cleanup interop code in System.Drawing +22210 area-Infrastructure Add xunit.analyzers to corefx infrastructure I just saw a PR in Roslyn: https://github.com/dotnet/roslyn/pull/20814 The Anlayzer found multiple missing facts, etc. Etc. This could benefit corefx as well. I'm not sure how to integrate this in a non-intrusive way - VS integration by default would be a super plus +22211 area-System.Security The type 'ECCurve' exists in both 'System.Core' and 'System.Security.Cryptography.Algorithms' when targeting .NET Framework 4.7 I'm currently porting my ASP.NET Core OIDC server from 1.0 to 2.0 and I'm facing a strange error that appears in a class library targeting `netstandard2.0`, `netcoreapp2.0` and `net47` and using the new `ECCurve` type (introduced in `netstandard1.6` and `net47`): > The type 'ECCurve' exists in both 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'System.Security.Cryptography.Algorithms, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' https://github.com/PinpointTownes/AspNet.Security.OpenIdConnect.Server/blob/31f43c4769d5400ab0f09760a5bb631807916a75/src/AspNet.Security.OpenIdConnect.Server/AspNet.Security.OpenIdConnect.Server.csproj https://ci.appveyor.com/project/aspnet-contrib/aspnet-security-openidconnect-server/build/1.0.0-rtm-1262#L353 I spent a few hours trying to make a repro, but unsuccessfully. Any tips that would allow me to determine why this compilation error occurs when targeting `net47` would be much appreciated! :sweat_smile: +22215 area-Infrastructure Cannot install Microsoft.NETCore.UniversalWindowsPlatform as NuGet dependency for .NET Core Library "I suppose this is more of a ""known issue"" or even possibly a ""by design,"" but according to the breakdown chart of the different .NET frameworks and how everything fits together with .NET Core 1.0 and now 2.0, shouldn't `Microsoft.NETCore.UniversalWindowsPlatform` be available as a package that can be installed as a dependency for any .NET Core project, though only available on Windows? As it currently stands, creating a .NET Framework library in Visual Studio 2017 (15.3 preview), setting to netstandard1.3, and then attempting to install `Microsoft.NETCore.UniversalWindowsPlatform` leads to package install errors." +22217 area-System.IO Fix System.IO.Tests failure on ILC. More xunit/metadata interaction. +22222 area-Infrastructure ILC Failed to compile to test projects in multi file mode ILC failed to compile System.Linq.Expressions.Tests and System.Runtime.Tests in multi file mode. Multi file is enabled in: - Release-x64 - Debug-x86 cc: @joshfree +22223 area-System.Linq Remove unnecessary store/loads from in S.L.Expression Cases in `EmitNonNullableToNullableConversion` and `EmitNullableToNullableConversion` where values are stored just to be loaded again. +22225 area-System.Linq Have S.L.Expressions produce shorter IL for integral NegateChecked When non-nullable there's an unnecessary cast of 0 for short and sbyte, and an unnecessary store/load that can be removed. When nullable the output is roughly like: ``` T? temp = Evaluate(operand); T? zero = (T?)(T)0; result = temp.HasValue & zero.HasValue ? (T?)(zero.GetValueOrDefault() - temp.GetValueOrDefault()) : default(T?); ``` Instead produce code closer to: ``` T? temp = Evaluate(operand); result = temp.GetValueOrDefault() != 0 ? (T?)(0 - temp.GetValueOrDefault()) : temp; +22228 area-System.Net [Port to 2.0] Fix failing tests on OSX 2.0 branch. cc @Petermarcu @bartonjs fixes #22089 #22090 +22229 area-System.Security RSAKeyValue.LoadXml not working when XmlElement input has namespace prefix. "Hello, guys! When I used the method LoadXml from RSAKeyValue.cs, I was always receiving the following exception: `System.Security.Cryptography.CryptographicException: 'Root element must be KeyValue element in namepsace http://www.w3.org/2000/09/xmldsig#'` After searching for some bug, I've found that the second IF statement inside LoadXml is verifying if value.Name (instead of value.LocalName) is different from ""KeyValue"". Because of that, when this method receives any XmlElement that has namespace prefix, it will throw the exception above. Code with the bug: ```csharp if (value.Name != KeyValueElementName || value.NamespaceURI != SignedXml.XmlDsigNamespaceUrl) { throw new CryptographicException($""Root element must be {KeyValueElementName} element in namepsace {SignedXml.XmlDsigNamespaceUrl}""); } ``` How I think it should be: ```csharp if (value.LocalName != KeyValueElementName || value.NamespaceURI != SignedXml.XmlDsigNamespaceUrl) { throw new CryptographicException($""Root element must be {KeyValueElementName} element in namepsace {SignedXml.XmlDsigNamespaceUrl}""); } ``` By the way, you could also fix the ""namepsace"" inside the CryptographicException message hehe. Thanks!" +22232 area-System.Drawing Remove System.Security.Permissions dependency from System.Drawing.Common. We do not care about these attributes in .NET Core, and by removing them we can remove the dependency on System.Security.Permissions. Part of https://github.com/dotnet/corefx/issues/20706 @akoeplinger Does mono care about these security attributes? I can accommodate that, if necessary. +22233 area-System.Drawing Consider removing ConfigurationManager dependency from System.Drawing.Common "The only usage of ConfigurationManager is in this internal class: https://github.com/dotnet/corefx/blob/master/src/System.Drawing.Common/src/System/Drawing/BitmapSelector.cs#L33 In turn, `BitmapSelector` is only used by one public type: https://github.com/dotnet/corefx/blob/master/src/System.Drawing.Common/src/System/Drawing/ToolboxBitmapAttribute.cs There is already a ""graceful"" fallback path if there is no ""system.drawing"" ConfigurationSection defined, so we can easily just delete it. I find it extremely unlikely that anybody would ever care about this functionality going away: it looks incredibly obscure, and not that useful in the first place. The main use case seems to be for UI designers (like the VS WinForms designer), to select different bitmaps with. The .NET Core version of the library likely won't ever be used for that. Thoughts @hughbe @stephentoub ?" +22235 area-System.Net Fixing ClientWebSockets event source in ILC These changes unblock reflection for the ClientWebSockets event source by following @brianrob's guidance (see #20470 for full context). I have confirmed that _Microsoft-System-Net-WebSockets-Client_ logging works fine on UAPAOT post-fix and the LoggingTest passes as well. I'll do the same thing for the other System.Net event sources if/when this PR is approved. Contributes to #20470 +22236 area-System.Data SqlClient - ManagedSNI doesn't work on Windows? "In **System.Data.SqlClient** solution in **System.Data.SqlClient.Tests** I created a small simple test with the following code: ``` [Fact] public static void SimpleTest() { string cs = @""Server=.\SQLEXPRESS;Database=...;User Id=...;Password=...;""; using (var connection = new SqlConnection(cs)) { connection.Open(); } } ``` the SQL Server is running and the test passes. But if I go to the TdsParserStateObjectFactory.Windows.cs and change `UseManagedSNI = false` to `true` -- the tests fails with ``` System.Net.Sockets.SocketException: 'An existing connection was forcibly closed by the remote host' at DoBeginReceiveFrom(...) ``` Am I doing something wrong or ManagedSNI mode doesn't work on Windows at the moment?" +22237 area-System.Net Enabling ILC reflection for certain types in System.Net.Primitives. System.Net.HttpListener is temporarily (actual fix tracked by #13607) relying on reflection to access internal Cookie and CookieCollection members from System.Net.Primitives. This is allowing the temporary workaround in UWPAOT. /cc @Priya91 Fixes #20482 Fixes #22056 +22239 area-System.Net Port TFS WinRT interop tests for HttpClient for UAP Bring over the last of the WinRT interop tests for HttpClient. These tests deal with interop between WinRT stream classes and .NET stream classes. Fixes #9044 +22241 area-System.Data Add more uapaot #if checks in SqlXml to exclude unnecessary code that's causing debug assert failures during uap test runs. There was some unnecessary code leftover from this SqlXml commit, which was causing some debug asserts to fail during uap test runs. https://github.com/dotnet/corefx/commit/9e36f6355340336f9950987d18f76e398fd4f5ef +22242 area-System.Net Use a shared MultiAgent in CurlHandler when using LibreSSL backend on macOS LibreSSL needs locks initialized in order to be used safely from multiple threads, which happens when multiple HttpClients are used. But we don't currently have a good way to perform that initialization as we do for OpenSSL. As a workaround, add a shared MultiAgent that's initialized when LibreSSL is used on macOS, and use that same MultiAgent from all CurlHandler instances rather than giving each their own. Since MultiAgent is 1:1 with a thread, all HttpClient's will then end up sharing the same libcurl event loop thread, and we'll serialize all of our interactions with libcurl and thus hopefully with LibreSSL. cc: @bartonjs, @geoffkizer, @nguerrera, @Petermarcu +22243 area-System.Net release/2.0: Use a shared MultiAgent in CurlHandler when using LibreSSL backend on macOS LibreSSL needs locks initialized in order to be used safely from multiple threads, which happens when multiple HttpClients are used. But we don't currently have a good way to perform that initialization as we do for OpenSSL. As a workaround, add a shared MultiAgent that's initialized when LibreSSL is used on macOS, and use that same MultiAgent from all CurlHandler instances rather than giving each their own. Since MultiAgent is 1:1 with a thread, all HttpClient's will then end up sharing the same libcurl event loop thread, and we'll serialize all of our interactions with libcurl and thus hopefully with LibreSSL. cc: @bartonjs, @geoffkizer, @nguerrera, @Petermarcu +22244 area-System.Diagnostics UAPAOT: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False) Failed in Outerloop during validation for #22237: https://mc.dot.net/#/user/CIPop/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/343581b48553b789c3a92222e109b9d4b07927c1/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_NotepadWithContent(useShellExecute:%20False) ``` Windows.10.Amd64.ClientRS2.Open-Debug-x64 Unhandled Exception of Type System.InvalidOperationException Message : System.InvalidOperationException : WaitForInputIdle failed. This could be because the process does not have a graphical interface. Stack Trace : at System.Diagnostics.Process.WaitForInputIdleCore(Int32 milliseconds) at System.Diagnostics.Process.WaitForInputIdle(Int32 milliseconds) at System.Diagnostics.Process.WaitForInputIdle() at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) ``` +22245 area-System.IO Add a replacement for IsPathRooted that actually returns if a path is relative "As [mentioned previously](https://github.com/dotnet/corefx/issues/21933), for better or worse, we use Uri over the Path APIs in Visual Studio due to two main reasons, this represents the first reason. Windows [docs state](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx) (emphasis mine) and IsPathRooted implements this behavior: > **Fully Qualified vs. Relative Paths** > For Windows API functions that manipulate files, file names can often be relative to the current directory, while some APIs require a fully qualified path. _**A file name is relative to the current directory if it does not begin**_ with one of the following: > - A UNC name of any format, which always start with two backslash characters (""\\""). For more information, see the next section. > - A disk designator with a backslash, for example ""C:\"" or ""d:\"". > - **_A single backslash, for example, ""\directory"" or ""\file.txt"". This is also referred to as an absolute path._** However, that last point is incorrect. A path of `\directory' or '\file.txt' is treated as _relative_ to the root of the current directory as this clearly demonstrates: ``` C# Environment.CurrentDirectory = @""C:\Temp""; Console.WriteLine(Path.GetFullPath(@""\Foo"")); Environment.CurrentDirectory = @""D:\""; Console.WriteLine(Path.GetFullPath(@""\Foo"")); ``` Which outputs: ``` C:\Foo D:\Foo ``` Inside VS we need to answer; _will this path change based on the current directory?_. IsPathRooted does not supply that - whereas, Uri does: ``` C# Console.WriteLine(""Path.IsPathRooted: "" + Path.IsPathRooted(@""\Foo"")); Console.WriteLine(""Uri.TryCreate: "" + Uri.TryCreate(@""\Foo"", UriKind.Absolute, out Uri result)); ``` Which outputs: ``` Path.IsPathRooted: True Uri.TryCreate: False ``` I suspect what Windows docs is referring to and what IsPathRooted is actually handling, is the _device namespace_, such as `\Device\HarddiskVolume4` but as far as I'm aware you cannot use that syntax via Win32, you need to prepend; `\\.\`." +22246 area-System.Linq Don't double-cast in nullable-to-nullable coalesce S.L.Expressions If a coalesce of a nullable has the same type as the expression (e.g. `x ?? y` if both `x` and `y` are int?) then not looking for this case means if the lhs isn't null it's cast to non-nullable then back to nullable again. Instead catch this case and just use the left hand value as the result. +22247 area-System.Security Add net47 configuration to System.Security.Cryptography.Algorithms Fix NETStandard.Library.NETFramework package targets Update the VerifyDuplicateTypes target to include framework assemblies to ensure we don't have any conflicting types between the framework and our OOBs. cc @bartonjs @ericstj Fixes #22211 +22248 area-System.Security Add net47 configuration to System.Security.Cryptography.Algorithms Fix NETStandard.Library.NETFramework package targets Update the VerifyDuplicateTypes target to include framework assemblies to ensure we don't have any conflicting types between the framework and our OOBs. cc @bartonjs @ericstj Fixes #22211 Port of https://github.com/dotnet/corefx/pull/22247. Preparing PR in case we can take it for 2.0 but don't have approval yet. +22251 area-System.Net InvalidCastException randomly thrown in WinHttpHandler I haven't been able to repro this since it occured, but am looking into seeing what caused this. Moved from https://github.com/aspnet/Diagnostics/issues/394 ``` fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0] An unhandled exception has occurred while executing the request System.InvalidCastException: [A]<>f__AnonymousType0`3[System.Net.Http.HttpRequestMessage,System.Guid,System.Int64] cannot be cast to [B]<>f__AnonymousType0`3[System.Net.Http.HttpRequestMessage,System.Guid,System.Int64]. Type A originates from 'System.Net.Http.WinHttpHandler, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' in the context 'Default' at location 'C:\Users\hugh\.nuget\packages\system.net.http.winhttphandler\4.3.0\runtimes\win\lib\netstandard1.3\System.Net.Http.WinHttpHandler.dll'. Type B originates from 'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' in the context 'Default' at location 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.2\System.Net.Http.dll'. at Microsoft.ApplicationInsights.DependencyCollector.Implementation.PropertyFetcher.PropertyFetch.TypedFetchProperty`2.Fetch(Object obj) at Microsoft.ApplicationInsights.DependencyCollector.Implementation.HttpCoreDiagnosticSourceListener.OnNext(KeyValuePair`2 evnt) at System.Diagnostics.DiagnosticListener.Write(String name, Object value) at System.Net.Http.HttpHandlerDiagnosticListenerExtensions.LogHttpRequestCore(DiagnosticListener diagnosticListener, HttpRequestMessage request) at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetStringAsync(Uri requestUri) at System.Net.Http.HttpClient.GetStringAsync(String requestUri) at Facebook.GraphClient.d__20`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Facebook.GraphClient.d__18`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at AsiaChat.Controllers.PageController.d__19.MoveNext() in C:\Users\hugh\Documents\GitHub\asia-chat\src\backend\AsiaChat.WebAPI\Controllers\PageController.cs:line 232 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at AsiaChat.Controllers.PageController.d__16.MoveNext() in C:\Users\hugh\Documents\GitHub\asia-chat\src\backend\AsiaChat.WebAPI\Controllers\PageController.cs:line 176 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__24.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ExceptionContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__20.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext() info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 1851.0059ms 500 text/html; charset=utf-8 ``` +22252 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessCollectionTests/TestThreadCollectionBehavior failed with ""System.PlatformNotSupportedException : GetProcessInfoNotSupported""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessCollectionTests/TestThreadCollectionBehavior` has failed. System.PlatformNotSupportedException : GetProcessInfoNotSupported. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485 Stack Trace: at ProcessInfo System.Diagnostics.ProcessManager.GetProcessInfo(Int32, String) + 0x7c at Void System.Diagnostics.Process.EnsureState(Process+State) + 0x94 at System.Diagnostics.Process.get_Threads() at System.Diagnostics.Tests.ProcessCollectionTests.TestThreadCollectionBehavior() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x37 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x43 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x183 Build : Master - 20170714.02 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170714.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessCollectionTests~2FTestThreadCollectionBehavior +22253 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessTests/CloseMainWindow_NotStarted_ThrowsInvalidOperationException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessTests/CloseMainWindow_NotStarted_ThrowsInvalidOperationException` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidOperationException)\r Actual: (No exception was thrown) Stack Trace: at System.Diagnostics.Tests.ProcessTests.CloseMainWindow_NotStarted_ThrowsInvalidOperationException() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x37 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x43 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x183 Build : Master - 20170714.02 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170714.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FCloseMainWindow_NotStarted_ThrowsInvalidOperationException +22254 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessTests/HandleCountChanges failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessTests/HandleCountChanges` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -323331298 Stack Trace: at Void System.Diagnostics.RemoteExecutorTestBase+RemoteInvokeHandle.Dispose() + 0xce at System.Diagnostics.Tests.ProcessTests.HandleCountChanges() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x37 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x43 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x183 Build : Master - 20170714.02 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170714.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FHandleCountChanges +22256 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/InvalidCertificateServers_CertificateValidationDisabled_Succeeds(url: \""https://expired.badssl.c... failed with ""System.Net.Http.WinHttpException : The handle is invalid""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test/InvalidCertificateServers_CertificateValidationDisabled_Succeeds(url: \""https://expired.badssl.c...` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : The handle is invalid Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : 2.0.0 - 20170714.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170714.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FInvalidCertificateServers_CertificateValidationDisabled_Succeeds(url:%20%5C%22https:~2F~2Fexpired.badssl.c..." +22257 area-Serialization Feature request: async DataContractSerializer methods As for now, `DataContractSerializer` does serialization/deserialization in synchronous style. But, `Stream`, `TextWriter` and `TextReader` does have async methods. As async programming is widely used today, to serialize/deserialize data contracts, developer should manually schedule background task to achieve async data contracts serialization/deserialization on stream (which itself does support async I/O out of the box!) I propose extend DataContractSerializer to have built-in task-based async serialization/deserialization methods. +22258 area-Microsoft.CSharp Make Microsoft.CSharp.RuntimeBinder.Semantics.CType.StripNubs virtual and not loop The `T??` case can't happen since we're basing our types on actual existing so there are only two cases; it's called on `NullableType`, in which case we return `UnderlyingType` or it's called on something else, in which case we return `this`. We can also report with boolean instead of int in the overload that reports on number of times is stripped a nullable, and so replace a dependent loop with a branch. +22259 area-Microsoft.CSharp Remove CType.isSpecialByRefType in Microsoft.CSharp Always false, so remove it and branches that depend on it being true. +22264 area-System.Diagnostics System.Diagnostics.Process.MainModule.FileName has junk characters in the prefix on UAP (Test case will be added soon, creating issue so that I can disable that in the PR) Junk characters might be BOM or Xunit display error ``` ERROR: System.Diagnostics.Tests.ProcessTests.TestMainModuleOnNonOSX [FAIL] Assert.EndsWith() Failure: Expected: xunit.runner.uap.exe Actual: ┬╖┬╖┬╖XUnit.Runner.Uap.exe ``` +22266 area-System.Diagnostics [S.D.Process] TestProcessStartTime throws NRE on UAP (Test case will be added soon, creating issue so that I can disable that in the PR) ``` ERROR: System.Diagnostics.Tests.ProcessTests.TestProcessStartTime [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. ``` +22267 area-System.Net Make ManagedHandler ConnectionPoolingTest clean itself up ManagedHandler_HttpClientHandler_ConnectionPooling_Test didn't assert IDisposable (though did have a Dispose method), so it didn't clear the environment variable that says to use the prototype managed handler in tests. This means that any tests which should still be using the curl provider end up using the managed provider until another managed test runs. So now it's disposable, and a failure we were expecting, but not seeing, on macOS 10.13 is asserting itself again. Solves the conundrum from https://github.com/dotnet/corefx/issues/22089#issuecomment-315383328. +22268 area-System.Diagnostics [S.D.Process] CloseMainWindow_NotStarted_ThrowsInvalidOperationException does not throw (Test case will be added soon, creating issue so that I can disable that in the PR) I believe we should be able to throw even on UAP since we can detect that process is not started. On the other hand we might need to be consistent with non throwing behavior because MainWindowHandle is not supported ``` ERROR: System.Diagnostics.Tests.ProcessTests.CloseMainWindow_NotStarted_ThrowsInvalidOperationException [FAIL] Assert.Throws() Failure Expected: typeof(System.InvalidOperationException) Actual: (No exception was thrown) ``` +22269 area-System.Diagnostics System.Diagnostics.Tests.ProcessWaitingTests.WaitForPeerProcess fails with NRE on UAP (Test case will be added soon, creating issue so that I can disable that in the PR) ``` ERROR: System.Diagnostics.Tests.ProcessWaitingTests.WaitForPeerProcess [FAIL] System.AggregateException : One or more errors occurred. (Object reference not set to an instance of an object.) (Object reference not s et to an instance of an object.) ---- System.NullReferenceException : Object reference not set to an instance of an object. ---- System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: ----- Inner Stack Trace #1 (System.NullReferenceException) ----- at System.Diagnostics.Tests.ProcessWaitingTests.WaitForPeerProcess() ----- Inner Stack Trace #2 (System.NullReferenceException) ----- at System.Diagnostics.Tests.ProcessTestBase.Dispose(Boolean disposing) at System.IO.FileCleanupTestBase.Dispose() at ReflectionAbstractionExtensions.DisposeTestClass(ITest test, Object testClass, IMessageBus messageBus, ExecutionTimer timer, Can cellationTokenSource cancellationTokenSource) ``` +22270 area-System.Diagnostics Fix all S.D.Process tests on UAP Fixes: https://github.com/dotnet/corefx/issues/22174 (fixes/disables with better reason around 90 tests) Possibly fixes: https://github.com/dotnet/corefx/issues/18210 (need to check if testcase is passing on uapaot after changes) Opened: - https://github.com/dotnet/corefx/issues/22264 - https://github.com/dotnet/corefx/issues/22266 - https://github.com/dotnet/corefx/issues/22268 - https://github.com/dotnet/corefx/issues/22269 Related issues: - https://github.com/dotnet/corefx/issues/21483 @tarekgh thank you for great help debugging issues Currently some of the test cases are not applicable on uap because RemoteInvoke does not return Process back. Most of the tests do not require to run RemoteInvoke against UAP. This PR adds tiny implementation of RemoteInvoke which runs remotely as netfx inside app container and thus many scenarios are easily unblocked +22271 area-System.IO Enable NamedPipe tests against updated Windows build When fixing #21392 we discovered a regression that was made after RS1 on the `WaitNamedPipe()` PInvoke when running inside an appcontainer. This has now been fixed for RS3, but since we are running our CI tests in RS2 then those tests will hang forever. I have already validated that in RS3 all the tests disabled by this issue are passing succesfully. This issue is to track the work of re-enabling those tests once we are running our CI on RS3. This bug will obviously go beyond ZBB. cc: @JeremyKuhne @AlexGhiondea @joshfree +22272 area-Infrastructure Enable UWP multi-file test runs for the ARM32 Release configuration #21154 calls for the enabling of Multi-File x86 and ARM runs - x86 Multi-File has already been added so the only thing left to do is ARM. I verified this on my local machine by building uapaot arm release and checking to see if the Shared Assembly is present in the TestILC path. I also verified that the Shared Assembly is not present after building ARM debug. +22273 area-System.IO Move NamedPipe tests to use Local prefix Fixes #21392 Opens #22271 cc: @JeremyKuhne @stephentoub - Fix NamedPipes tests when running in AppContainer so that they use Local as a prefix - Disable tests that depend on WaitNamedPipe since there was a regression after RS1 on kernel32.dll. I have validated that the fix that will com on RS3 will pass all of the tests disabled by this PR. +22276 area-System.IO IOException message for ERROR_SHARING_VIOLATION should say which process ID(s) are holding the file "It would be great that instead of saying: >The process cannot access the file '{0}' because it is being used by another process."" The error message would be: >The process cannot access the file '{0}' because it is being used by process ID {1}."" Originally by @stephentoub had written code that could do this for the article ""Restart Manager and Generic Method Compilation"" https://msdn.microsoft.com/sl-si/magazine/mt149362?author=stephen+toub https://web.archive.org/web/20140403112957/https://msdn.microsoft.com/en-us/magazine/cc163450.aspx" +22279 area-System.Net Disable ping tests against specific issue Updating ActiveIssue annotations to point to the specific issue that's tracking System.Net.NetworkInformation.Ping not working inside an AppContainer. Contributes to #19583 +22281 area-System.Data Make DataCommonEventSource members public on uapaot, since reflection needed for EventSource functionality is blocked in UAP for nonpublic members. Fixes https://github.com/dotnet/corefx/issues/20589 The EventName for the DataCommonEventSource is retrieved via reflection, which is blocked for nonpublic members on UAP. This leads to failures in the above test, since the TestEventListener enables an event only if its name matches the expected EventSource name. TestEventListener code: https://github.com/dotnet/corefx/blob/master/src/Common/tests/System/Diagnostics/Tracing/TestEventListener.cs#L81 This change is similar to changes in other EventSources. For example: https://github.com/dotnet/corefx/pull/22235 No contract changes are required for this change. +22282 area-System.Net Implementing Stream.*Async overrides in HttpResponseStream/HttpRequestStream Fixes #22066 Contributes to #22110 For #22110: HttpResponseStreamTests will pass on my machine without hanging after my changes; however, HttpRequestStreamTests will still hang. As @CIPop [has mentioned, ](https://github.com/dotnet/corefx/issues/22110#issuecomment-315476167)it's hard to diagnose the hang because we can't trace. +22283 area-System.Threading Enable reflection for DataflowEtwProvider and fix #20592. +22284 area-System.Diagnostics [DiagnosticsSource] http correlation protocol should not force to make Request-Id unique "Http correlation protocol is designed defensively to protect from bad callers. Many tracing systems are used in enclosed systems with trusted callers. These systems may benefit having shorter identifiers. Proposal is to 1. change protocol description and 2. provide a way to enable ""trusted callers"" mode in built-in .NET instrumentation [HTTP Correlation Protocol](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/HttpCorrelationProtocol.md) states: > When Request-Id is provided by upstream service, there is no guarantee that it is unique within the entire system. Implementation SHOULD make it unique by adding small suffix to incoming Request-Id to represent internal activity and use it for outgoing requests, see more details in Hierarchical Request-Id document. [Hierarchical request format](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/HierarchicalRequestId.md) states: > Implementation SHOULD make it unique by adding small suffix to incoming Request-Id to represent internal activity and use it for outgoing requests. If implementation does not trust incoming Request-Id in the least, suffix may be as long as Root Request Id. We recommend appending random string of 8 characters length (e.g. 32-bit hex-encoded random integer). CC: @jacpull @lmolkova @vancem " +22286 area-Serialization Fixes for CollectionDataContract in ReflectionOnly Mode. PR #21688 uncovered a few issues with CollectionDataContract in ReflectionOnly mode. The PR is to fix those issues. See the tests in [DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes_FailInReflectionOnly](https://github.com/dotnet/corefx/pull/21688/files#diff-842d4b05f36c1089c037e1b2e53908ecR3479). The PR fixed the following issues: 1. When writing collection object the element type of the collection was not correctly set, which caused the type info was not correctly written in the payload. Test type: `SampleListTExplicitWithoutDC`. The fix is ported from `XmlFormatWriterGenerator.CriticalHelper.WriteCollection`. 2. DCS couldn't correctly de-serialize generic dictionary in certain cases. Test type: `MyGenericIDictionaryKVContainsPublicDC`. 3. DCS couldn't de-serialize collection type with private `Add` method. Test type: `CDC_PrivateAdd`. 4. DCS couldn't de-serialize collection type with private constructor. Test type: `CDC_PrivateDefaultCtor`. With the PR, the tests in that method should all pass. +22289 area-Infrastructure "Use POSIX ""command"" instead of non-standard ""which""" Re-apply https://github.com/dotnet/coreclr/pull/8823 that got somehow lost +22292 area-System.IO System.IO.Compression.ZipArchiveEntry: Add Crc32 Property "ZipArchiveEntry should get a ""Crc"" Propery. # Rationale and Usage ZIP Files are frequently used as a Backup Medium. To rapidly check the ZIP Contents against other File-Copies it would be most efficient to expose the already existing _crc32 Field as a Read-Only Property. This would save having to extract and compare File Contents Byte-wise when checking whether a File has different Content. # Proposed API-Addition and Implementation: ```c# class ZipArchiveEntry { public uint Crc { get } // return _crc32; } ``` EDIT: Added code formatting + added class to the API proposal by @karelz" +22293 area-System.Runtime How can I detect my code is running on top of .net core? "```csharp public class PlatformUtilities { public static bool IsRunningOnMono { get { return Type.GetType(""Mono.Runtime"") != null; // I need something like this. } } public static bool IsRunningOnDotNetCore { get { // What should I return here? } } } ``` Thanks in advance." +22294 area-Infrastructure Detected package downgrade "Hi. I have encountered the following issue. `Detected package downgrade: Microsoft.NETCore.App from 2.0.0-preview3-25514-02 to 2.0.0-preview2-006497` while executing `dotnet restore` over a project with following csproj: ```xml netcoreapp2.0 portable true FoodgetWebapp Exe FoodgetWebapp FoodgetWebapp-c23d27a4-eb88-4b18-9b77-2a93f3b15119 2.0.0-preview2-006497 true All All ``` I am doing something wrong? [EDIT] Fixed formatting as xml - @karelz" +22298 area-System.Drawing Add BufferedGraphics tests And fix faulty debug assertions, and some code cleanup +22299 area-System.Diagnostics [System.Diagnostics.Process]::Start() doesn't return error on Unix if fileName is directory "Repro: Using PowerShell: ```powershell PS> [System.Diagnostics.Process]::Start(""/home"") ``` Expected: error that `/home` isn't valid or access denied Actual: New forked powershell process " +22300 area-Microsoft.CSharp Microsoft.CSharp does not see interfaces as derived from object when doing member lookup "A variant of #14752, with a related but not quite identical cause. Given: ```C# string s = """"; dynamic d = s; IEnumerable c = s; Console.WriteLine(c.Equals(d)); ``` We would expect output of `True`, but instead we get a `RuntimeBinderException` with a message of > 'System.Collections.Generic.IEnumerable' does not contain a definition for 'Equals' " +22301 area-Microsoft.CSharp Have Microsoft.CSharp correctly handle statically-typed interface types' inherited methods ### Include base interfaces on lookup when dynamic is an argument to a call When a variable is statically typed to an interface type that implements another interface and an inherited method or indexer is called with a dynamic argument, then the method or indexer will not be found by the binder. Change both the initial adding of methods to the table, and the subsequent lookup, to fix this. Fixes #14752 ### Include `System.Object` as base of interfaces on lookup when dynamic is an argument to a call When a variable is statically typed to an interface and the `Equals` method inherited from `object` is called with a dynamic argument, then the method will not be found by the binder. Change both the initial adding of methods to the table, and the subsequent lookup, to fix this. Fixes #22300 Also optimise `CreateInheritanceHierarchyList` so it makes fewer copies internal to `List`. +22302 area-System.Security Security crypto - Roadmap See https://github.com/dotnet/designs/issues/11 +22303 area-System.Net Assert more details in Http SSL test failure +22304 area-System.Net Remove a few allocations from SslStream Minor, as they only affect the AuthenticateAsClient/Server paths, which generally happen only once per stream, but every little bit helps: - If no client certificates are provided, the code is currently allocating an empty collection. That's not necessary. - Begin and End delegates are currently being allocated for each call. We can avoid that by passing `this` in as instance state. cc: @geoffkizer, @Drawaes, @cipop +22305 area-System.Net Skip asserts in Http SSL test on macOS Closes https://github.com/dotnet/corefx/issues/21922 cc: @bartonjs +22309 area-System.Drawing System.Drawing.Imaging.ImageAttributes.SetColorKey() is set but not applied. "I am writing test for `System.Drawing.Imaging.ImageAttributes` #20711: ```c# private readonly Rectangle _rectangle = new Rectangle(0, 0, 64, 64); [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void SetColorKey_Success() { using (var bitmap = new Bitmap(_rectangle.Width, _rectangle.Height)) using (var graphics = Graphics.FromImage(bitmap)) using (var imageAttr = new ImageAttributes()) { imageAttr.SetColorKey(Color.FromArgb(50, 50, 50), Color.FromArgb(150, 150, 150)); bitmap.SetPixel(0, 0, Color.FromArgb(255, 100, 100, 100)); graphics.DrawImage(bitmap, _rectangle, _rectangle.X, _rectangle.Y, _rectangle.Width, _rectangle.Height, GraphicsUnit.Pixel, imageAttr); Assert.Equal(Color.FromArgb(0, 0, 0, 0), bitmap.GetPixel(0, 0)); } } ``` Expected: Color.FromArgb(0, 0, 0, 0) Actual: Color.FromArgb(255, 100, 100, 100) I am running the test on `netfx` and `netcoreapp` and it fails on both. Looks like transparency isn't get applied. [EDIT] Fixed code formatting - @karelz" +22313 area-Microsoft.CSharp Remove paths for types being anonymous from Microsoft.CSharp Since in running code no types are anonymous (though they may have unspeakable names), `SetAnonymousType` is only ever called with `false`. Remove `_isAnonymousType` and all branches for it being true, including `TypeContainsAnonymousTypes` (only branches returning true is removed or depends on recursive call hitting removed branch) and `GenerateMembersArray` (never hit). +22314 area-Microsoft.CSharp "Remove ""Missing"" name check in Microsoft.CSharp.RuntimeBinder.Semantics.SymFactoryBase" This name is never produced, except to create tests for it having been produced. (We can't have a parser error if our source isn't a parser). +22316 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds failed with ""System.Net.Http.CurlException : Failure when receiving data from the peer""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : Failure when receiving data from the peer Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /root/corefx-865334/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__15.MoveNext() in /root/corefx-865334/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 261 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) in /root/corefx-865334/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 655 at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) in /root/corefx-865334/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs:line 877 Build : Master - 20170717.01 (Core Tests) Failing configurations: - RedHat.72.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170717.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FNoCallback_RevokedCertificate_NoRevocationChecking_Succeeds +22318 area-System.Net Hang/Race-condition observed in Sockets We are using Sockets and using `BufferedStream` of size [8 * 1024](https://github.com/harshjain2/vstest/blob/fe6fbc50699511baf8bc838bfc23ff5278fb5de3/src/Microsoft.TestPlatform.CommunicationUtilities/SocketCommunicationManager.cs). We are observing an intermittent hang because of which the test execution doesn't complete as expected. Is this a known issue? We tried debugging, but couldn't find anything wrong. Repro steps : 1. Clone the repositroy : https://github.com/harshjain2/vstest 2. Checkout branch hangrepro. 3. From the root of repo, invoke `build.cmd -noloc` 4. From the root of repo, invoke `test.cmd` For reproing this issue consistently, I have increased the buffer size to 1024 * 1024. cc: @codito +22321 area-Infrastructure Failed to download package 'Microsoft.NETCore.Targets.1.0.1' in CI Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_debug/125/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_fedora24_release/lastCompletedBuild/ Failed to generate the test report /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/Tools/dotnetcli/sdk/2.0.0-preview1-005977/NuGet.targets(97,5): error : Failed to download package 'Microsoft.NETCore.Targets.1.0.1' from 'https://api.nuget.org/v3-flatcontainer/microsoft.netcore.targets/1.0.1/microsoft.netcore.targets.1.0.1.nupkg'. [/mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/external/test-runtime/XUnit.Runtime.depproj] [/mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/external/test-runtime/XUnit.Runtime.depproj] +22324 area-System.Data GDPR + Always Encrypted Hi, please read this EU regulation [GDPR](http://ec.europa.eu/justice/data-protection/reform/files/regulation_oj_en.pdf). We will need functional support for SQL **Always Encrypted** before **25. may 2018** . When it will be implemented in **EF Core**? (Please, give it priority. It will be before 25 may 2018?) Thanks +22325 area-System.Globalization Add architecture doc on globalization invariant mode +22328 area-System.Net Undo Stream.*Async overrides in HttpResponseStream/HttpRequestStream PR #22282 is just a bandaid for lots of Stream-derived types in the wild don't override Read/WriteAsync. Once Read/WriteAsync in Stream is fixed on ILC, the code should be undone. +22331 area-Microsoft.CSharp Microsoft.CSharp binder not prepared for mis-called static calls. "If we set up a dynamic call-site as follows; ```C# var site = CallSite>.Create( Binder.InvokeMember( CSharpBinderFlags.None, ""Equals"", null, GetType(), new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.IsStaticType, null), CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null), CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) } ) ); Func target = site.Target; ``` Then `target` can now be used to call a static method called `Equals` as in e.g. `target(site, typeof(object), ""A"", ""A"")` returning true. The binder is not prepared for the consumer incorrectly calling it with a non-type as the second argument, throwing `RuntimeBinderInternalCompilerException` with a message of ""An unexpected exception occurred while binding a dynamic operation"", or in debug mode triggering an assertion. Rather than an exception that ""represents a malfunctioning of the runtime binder itself"", it should be an `ArgumentException` (or arguably a `RuntimeBinderException`, but AE matches some similar cases)." +22332 area-System.Linq Span and friends may require work in Linq.Expression/DLR and dynamic binders It is not permitted to box these types and expressions/binders would need to know about that. Otherwise there could be some relatively trivial ways to cause failures such as dynamically invoking a Span-returning method by name. That would easily result in a Span being boxed, which might fail very ungracefully. +22333 area-Microsoft.CSharp Microsoft.CSharp: Catch passing non-type as type for bound static call "If something other than a `Type` is passed as the second argument (first after the `CallSite`) then catch this and throw an explanatory `ArgumentException`, rather than a `RuntimeBinderInternalCompilerException` describing it as ""unexpected"". Also remove assertion this cannot happen, as it clearly can. Conversely, replace check that would throw `RuntimeBinderInternalCompilerException` for this case in `CreateCallingObjectForCall` with just an assertion, as the above check will have happened before this point could be reached. Fixes #22331" +22335 area-System.Diagnostics Investigate Ways to Reduce Dependence on Reflection for EventSource EventSources currently require reflection for both manifest-based logging and tracelogging. The latter is required, because there is no concept of subclasses or event methods - just calls to Write public methods on EventSources. However, we can do better with manifest-based logging. There is currently an IL transform in the toolchain that triggers for a well-known set of EventSources in the framework and pre-generates metadata for them so that reflection is not used at runtime. We should consider expanding this transform for two cases: 1. Automatically detect reflection blocked types and pre-generate metadata for them, rather than having to explicitly opt the types in. 2. Support localized resources (the current transform does not support this). +22336 area-System.Security Fixed issue #22229, where RSAKeyValue.LoadXml was throwing a CryptographicException when receiving a XmlElement with namespace prefix as input Fixed bug on element name check in RSAKeyValue which caused error when element had a namespace prefix; Implemented a test case. Fixes #22229 [EDIT] Fixes #abc added by @karelz to [auto-close issue upon merge](https://help.github.com/articles/closing-issues-using-keywords/) +22337 area-System.Xml Port: Fix usage of XmlSerializerNamespaces.Namespaces dictionary Ports https://github.com/dotnet/corefx/pull/22006 to 2.0. [Approved by shiproom] Fixes https://github.com/dotnet/corefx/issues/21961 cc: @danmosemsft FYI: @remcoros +22338 area-System.Net Throw PNSE on Ping.Send* in UWP Win32 Icmp* APIs fail with E_ACCESSDENIED when called from UWP due to Windows OS limitations. Ping will not work on UWP in this OS release, so I'm updating Ping.Send* to throw PNSE instead of E_ACCESSDENIED for now. Contributes to #19583 +22339 area-System.Diagnostics [DiagnosticsSource] http correlation protocol should optionally support intrinsic sort "Related to issue #22284 The current version of the Hierarchical Request Format mandates uniqueness. But analytics on tracing formats which are vector clock based, also rely on the format providing a sort without depending on other event properties such as Time. To provide such a sort as well as provide uniqueness, the elements in the vector have to support a monotonic sequence. The current protocol is cited as follows: > Suffix MUST be unique for every outgoing HTTP request sent while processing the incoming request; monotonically incremented number of outgoing request within the scope of this incoming operation, is a good candidate. But there is insufficient information if the value is actually a monotonic sequence. Also, a benefit of explicitly supporting a numeric format incremented from 0 is improved wire cost when compared to a randomly generated suffix. The proposed changes are follows: - Distinguish vector elements to be either a number (on which a sort is possible) or an entropy element, using a prefix character: ""#"". Number can be typed to unsigned 64 bit max. - Provide a way to enable ""atomic increments"" mode in the built-in .NET implementation. If enabled, this would create atomic increments of the current vector element on the outgoing path, as opposed to simply generating randomized suffixes and the prefix character described above would be applied on the latter case. - If the ""atomic increments"" mode is turned on for a component that is initializing a root request id, it should generate X.0. - Similarly, if the ""atomic increments"" mode is turned on, and if the incoming value of the Request Id is ""X."", then the value should be ""X.0"" (if the ""trusted caller"" mode is on as per #22284) or ""X.[Entropy_0]"" otherwise. @vancem, @lmolkova, @SergeyKanzhelev" +22341 area-System.IO Update tests for pending whitespace trimming changes Update tests for pending whitespace trimming changes (see: https://github.com/dotnet/coreclr/pull/12862) +22343 area-System.Runtime AppDomain events have wrong sender ``` AppDomain.UnhandledExceptionEventHandler AppDomain.AssemblyLoadEventHandler AppDomain.ResolveEventHandler AppDomain.FirstChanceException AppDomain.ProcessExit ... ``` The sender argument for these events should be AppDomain.CurrentDomain, but it is actually the internal AppDomain object. #22330 fixed this for FirstChanceException event on uapaot only. This should be fixed for all of the events and for both CoreCLR and CoreRT. Also, tests should be added. We may consider fixing this by moving AppDomain back to CoreLib. Having it in CoreFX seems to have less and less value. +22345 area-System.IO Add method IsPathFullyQualified() to replace IsPathRooted() for returning if a path is relative "A common mistake is to assume that `IsPathRooted()` paths cannot be relative. To make the distinction between rooted and relative clear, `Path` should implement a `IsPathFullyQualified()` method that returns whether or not changing the current directory will change the path. Details in issue #22245 ## Rationale and Usage Currently, `IsPathRooted()` does not answer the question of whether changing the current directory will change a given path. Adding `IsPathFullyQualified()` will more explicitly and correctly address this question. Note: `IsPathRelative()` may seem like a more intuitive name for the method to be added. However, `IsPathRelative()` suggests that the method determines whether or not the path contains '.' or '..', which is not true. `IsPathFullyQualified()` is broader and addresses whether the path will change based on the current directory. This terminology is also consistent with [documentation.](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#fully_qualified_vs._relative_paths) ## Proposed API ``` c# /// /// Returns false if the path specified is relative to the current drive or working directory. /// Returns true if the path is fixed to a specific drive or UNC path. This method does no /// validation of the path (URIs will be returned as relative as a result). /// /// /// Handles paths that use the alternate directory separator. It is a frequent mistake to /// assume that rooted paths (Path.IsPathRooted) are not relative. This isn't the case. /// ""C:a"" is drive relative- meaning that it will be resolved against the current directory /// for C: (rooted, but relative). ""C:\a"" is rooted and not relative (the current directory /// will not be used to modify the path). /// public static bool IsPathFullyQualified(string path) ``` ## Details Doesn't handle URIs (will say all URIs are relative). ## Open Questions N/A ## Pull Request N/A ## Updates " +22347 area-Infrastructure CI issue: Error during cleanup: java.io.IOException: in OSX Debug https://ci3.dot.net/job/dotnet_corefx/job/master/job/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/1318/console https://ci3.dot.net/job/dotnet_corefx/job/master/job/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/1316/console and a few more in the last couple of hours. +22348 area-System.Runtime System.Runtime.Serialization.Formatters.Tests failing in UapAot Tests are failing with error: ``` The stored blob for type System.TimeZoneInfo+AdjustmentRule is outdated and needs to be updated.\r\nStored blob: AAEAAAD/////AQAAAAAAAAAEAQAAACJTeXN0ZW0uVGltZVpvbmVJbmZvK0FkanVzdG1lbnRSdWxlBwAAAAlEYXRlU3RhcnQHRGF0ZUVuZA1EYXlsaWdodERlbHRhF0RheWxpZ2h0VHJhbnNpdGlvblN0YXJ0FURheWxpZ2h0VHJhbnNpdGlvbkVuZBJCYXNlVXRjT2Zmc2V0RGVsdGEVTm9EYXlsaWdodFRyYW5zaXRpb25zAAAAAwMAAA0NDCJTeXN0ZW0uVGltZVpvbmVJbmZvK1RyYW5zaXRpb25UaW1lIlN5c3RlbS5UaW1lWm9uZUluZm8rVHJhbnNpdGlvblRpbWUMAQBAVyBTBVEIAEDGiJPMjwgA0IjDEAAAAAT+////IlN5c3RlbS5UaW1lWm9uZUluZm8rVHJhbnNpdGlvblRpbWUGAAAACVRpbWVPZkRheQVNb250aARXZWVrA0RheQlEYXlPZldlZWsPSXNGaXhlZERhdGVSdWxlAAAAAAMADQICAhBTeXN0ZW0uRGF5T2ZXZWVrAQDQiMMQAAAAAgEDBP3///8QU3lzdGVtLkRheU9mV2VlawEAAAAHdmFsdWVfXwAIAAAAAAEB/P////7///8A0IjDEAAAAAMBBAH7/////f///wAAAAABAAAAAAAAAAAACw==\r\nGenerated runtime blob: AAEAAAD/////AQAAAAAAAAAEAQAAACJTeXN0ZW0uVGltZVpvbmVJbmZvK0FkanVzdG1lbnRSdWxlBgAAAAlEYXRlU3RhcnQHRGF0ZUVuZA1EYXlsaWdodERlbHRhF0RheWxpZ2h0VHJhbnNpdGlvblN0YXJ0FURheWxpZ2h0VHJhbnNpdGlvbkVuZBJCYXNlVXRjT2Zmc2V0RGVsdGEAAAADAwANDQwiU3lzdGVtLlRpbWVab25lSW5mbytUcmFuc2l0aW9uVGltZSJTeXN0ZW0uVGltZVpvbmVJbmZvK1RyYW5zaXRpb25UaW1lDABAVyBTBVEIAEDGiJPMjwgA0IjDEAAAAAT+////IlN5c3RlbS5UaW1lWm9uZUluZm8rVHJhbnNpdGlvblRpbWUGAAAACVRpbWVPZkRheQVNb250aARXZWVrA0RheQlEYXlPZldlZWsPSXNGaXhlZERhdGVSdWxlAAAAAAMADQICAhBTeXN0ZW0uRGF5T2ZXZWVrAQDQiMMQAAAAAgEDBP3///8QU3lzdGVtLkRheU9mV2VlawEAAAAHdmFsdWVfXwAIAAAAAAEB/P////7///8A0IjDEAAAAAMBBAH7/////f///wAAAAABAAAAAAAAAAAL\r\nExpected: True\r\nActual: False ``` Stack Trace: ``` at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.SanityCheckBlob(Object obj, String[] blobs) at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.ValidateAgainstBlobs(Object obj, String[] blobs) at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetVII[T0, T1](Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x6f at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x55 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x171 ``` https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170717.02/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FValidateAgainstBlobs(obj:%20AdjustmentRule%20%7B%20DateEnd%20=%201955-12-31T00:00:00.0000000,%20DateStart%20=%201900-01-01T00:00:00.0000000,%20Da... +22349 area-System.Net Converted sudo commands to class helper Use new sudo admin helper class. +22350 area-System.Threading System.Threading.Tasks.Tests are failing in UapAot - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.FaultedTaskExceptions - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.TaskMethodBuilderT_ValidateFaultedTask - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.TaskMethodBuilder_ValidateFaultedTask - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.Tcs_ValidateFaultedTask - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.TrackedSyncContext_ValidateException This tests are failing with error: ``` Assert.Contains() Failure\r\nNot found: End of stack trace\r\nIn value: at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.TrackedSyncContext_ValidateException()\r\n at xunit.console.netcore!+0x1\r\n at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21\r\n at Void System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.b__7_0(Object) + 0x1e\r\n at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.TrackOperationsSynchronizationContext.Post(Threading.SendOrPostCallback callback, Object state)\r\n ``` Stack Trace: ``` at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.ValidateException(Exception e) at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.TrackedSyncContext_ValidateException() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x50 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x43 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x183 ``` cc: @joshfree +22351 area-System.Runtime System.Runtime.ExceptionServices.Tests.ExceptionDispatchInfoTests/StaticThrow_UpdatesStackTraceAppropriately failed in UapAot https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170717.02/workItem/System.Runtime.Tests/analysis/xunit/System.Runtime.ExceptionServices.Tests.ExceptionDispatchInfoTests~2FStaticThrow_UpdatesStackTraceAppropriately Message : ``` Assert.Equal() Failure\r\nExpected: 1\r\nActual: 0 ``` Stack Trace ``` at System.Runtime.ExceptionServices.Tests.ExceptionDispatchInfoTests.StaticThrow_UpdatesStackTraceAppropriately() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x51 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x43 at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x183 ``` cc: @danmosemsft +22352 area-System.Net Adding more documentation and better error messages for Networking multi-machine setup A few glitches found while working on #21285. +22353 area-System.Runtime Expose Span from System.Runtime contract Span needs to be exposed from System.Runtime so that other types exposed from System.Runtime can use it in public APIs. cc: @ahsonkhan, @KrzysztofCwalina +22354 area-System.Runtime Move {ReadOnly}Buffer to System.Private.CoreLib, expose from System.Runtime contract Needed for new Stream methods to use `Buffer` in public APIs. cc: @ahsonkhan, @KrzysztofCwalina +22355 area-System.Runtime Add BitConverter Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr (it's ""shared"" with corert) - [x] Expose from System.Runtime.Extensions contract in corefx - [x] Add tests to System.Runtime.Extensions tests in corefx ```C# namespace System { public static class BitConverter { // Matching overloads for GetBytes. Copy to the destination span // rather than allocating a new byte[]. Return false if the destination // span isn't large enough, which can be determined before any copying. public static bool TryWriteBytes(Span destination, bool value); public static bool TryWriteBytes(Span destination, char value); public static bool TryWriteBytes(Span destination, double value); public static bool TryWriteBytes(Span destination, short value); public static bool TryWriteBytes(Span destination, int value); public static bool TryWriteBytes(Span destination, long value); public static bool TryWriteBytes(Span destination, float value); public static bool TryWriteBytes(Span destination, ushort value); public static bool TryWriteBytes(Span destination, uint value); public static bool TryWriteBytes(Span destination, ulong value); // Matching overloads for To*. As with existing To* methods, throw if not // enough data in the source span. public static bool ToBoolean(ReadOnlySpan value); public static char ToChar(ReadOnlySpan value); public static double ToDouble(ReadOnlySpan value); public static short ToInt16(ReadOnlySpan value); public static int ToInt32(ReadOnlySpan value); public static long ToInt64(ReadOnlySpan value); public static float ToSingle(ReadOnlySpan value); public static ushort ToUInt16(ReadOnlySpan value); public static uint ToUInt32(ReadOnlySpan value); public static ulong ToUInt64(ReadOnlySpan value); … } } ```" +22356 area-System.Runtime Add Random Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr (corert shares the same file) - [x] Expose from System.Runtime.Extensions contract in corefx - [x] Add tests to System.Runtime.Extensions tests in corefx ```C# namespace System { public class Random { public virtual void NextBytes(Span buffer); … } } ``` Implementation should be in terms of `Next()`. The `NextBytes(byte[])` base method is implemented in terms of `InternalSample`, but `NextBytes(Span)` shouldn't be implemented in terms of that, as it's not public and thus an existing derived type couldn't have overridden it, and thus the new virtual wouldn't pick up existing behaviors. It also shouldn't be in terms of `NextBytes(byte[])`, as that would require allocating/copying an array, largely defeating the purpose of the method (at least for the base class). But since `Next()` on the base class just delegates to `InternalSample()`, `Next()` is a reasonable thing to base the implementation on, e.g. ```C# public virtual void NextBytes(Span buffer) { for (int i = 0; i < buffer.Length; i++) { buffer[i] = (byte)(Next() & 0xFF); } } ``` +22358 area-System.Runtime Add DateTime{Offset} Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr (corert shares the same files) - [x] Expose from System.Runtime contract in corefx - [x] Add tests to System.Runtime tests in corefx ```C# namespace System { public struct DateTime { public static DateTime Parse(ReadOnlySpan s, IFormatProvider provider = null, System.Globalization.DateTimeStyles styles = DateTimeStyles.None); public static DateTime ParseExact(ReadOnlySpan s, string format, IFormatProvider provider, DateTimeStyles style = DateTimeStyles.None); public static DateTime ParseExact(ReadOnlySpan s, string[] formats, IFormatProvider provider, DateTimeStyles style); public static bool TryParse(ReadOnlySpan s, out DateTime result, IFormatProvider provider = null, DateTimeStyles styles = DateTimeStyles.None); public static bool TryParseExact(ReadOnlySpan s, string format, IFormatProvider provider, DateTimeStyles style, out DateTime result); public static bool TryParseExact(ReadOnlySpan s, string[] formats, IFormatProvider provider, DateTimeStyles style, out DateTime result); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } public struct DateTimeOffset { public static DateTimeOffset Parse(ReadOnlySpan input, IFormatProvider formatProvider = null, System.Globalization.DateTimeStyles styles = DateTimeStyles.None); public static DateTimeOffset ParseExact(ReadOnlySpan input, string format, IFormatProvider formatProvider, DateTimeStyles styles = DateTimeStyles.None); public static DateTimeOffset ParseExact(ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, DateTimeStyles styles); public static bool TryParse(ReadOnlySpan input, out DateTimeOffset result, IFormatProvider formatProvider = null, DateTimeStyles styles = DateTimeStyles.None); public static bool TryParseExact(ReadOnlySpan input, string format, IFormatProvider formatProvider, DateTimeStyles styles, out DateTimeOffset result); public static bool TryParseExact(ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, DateTimeStyles styles, out DateTimeOffset result); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider formatProvider = null); … } } ``` +22360 area-System.Data "Test: System.Data.Tests.SqlTypes.SqlBooleanTest/ToSqlInt64 failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Data.Tests.SqlTypes.SqlBooleanTest/ToSqlInt64` has failed. Assert.Equal() Failure\r Expected: 1\r Actual: 0 Stack Trace: at System.Data.Tests.SqlTypes.SqlBooleanTest.ToSqlInt64() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2c at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x3a at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x122 Build : Master - 20170718.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170718.01/workItem/System.Data.Common.Tests.Execution/analysis/xunit/System.Data.Tests.SqlTypes.SqlBooleanTest~2FToSqlInt64 +22362 area-System.Linq "Tests under: System.Linq.Expressions.Tests.ConvertCheckedTests failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Linq.Expressions.Tests.ConvertCheckedTests/ConvertCheckedNullableByteToNullableEnumLongTest(useInterpreter: True)` has failed. Assert.Equal() Failure\r Expected: A\r Actual: B Stack Trace: at System.Linq.Expressions.Tests.ConvertCheckedTests.VerifyCheckedNullableByteToNullableEnumLong(Nullable value, Boolean useInterpreter) at System.Linq.Expressions.Tests.ConvertCheckedTests.ConvertCheckedNullableByteToNullableEnumLongTest(Boolean useInterpreter) at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetVI[T0](Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x5c at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x3a at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x122 Build : Master - 20170718.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170718.01/workItem/System.Linq.Expressions.Tests.Execution/analysis/xunit/System.Linq.Expressions.Tests.ConvertCheckedTests~2FConvertCheckedNullableByteToNullableEnumLongTest(useInterpreter:%20True) +22364 area-System.Threading "Tests under: System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests failed with ""Xunit.Sdk.ContainsException""" Opened on behalf of @Jiayili1 The test `System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests/FaultedTaskExceptions` has failed. Assert.Contains() Failure\r Not found: End of stack trace\r In value: at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.<>c.b__29_18()\r at Void System.Threading.Tasks.Task`1.InnerInvoke() + 0x36\r at Void System.Threading.Tasks.Task.Execute() + 0x1c\r at xunit.console.netcore!+0x1\r at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x18\r at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x66\r at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x5c\r at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.<>c__DisplayClass31_0.b__0()\r at Xunit.Assert.RecordException(Action testCode)\r Stack Trace: at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.ValidateException(Exception e) at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.ValidateFaultedTask(Threading.Tasks.Task t) at System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests.FaultedTaskExceptions() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x48 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x3a at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x122 Build : Master - 20170718.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170718.01/workItem/System.Threading.Tasks.Tests.Execution/analysis/xunit/System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests~2FFaultedTaskExceptions +22367 area-System.Drawing System.Drawing.Imaging.ImageAttributes.SetOutputChannelColorProfile() Throws System.Runtime.InteropServices.ExternalException on netcoreapp - does not on netfx (#20711) "The test: ``` c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void SetOutputChannelColorProfile_Null_ThrowsArgumentNullException() { using (var imageAttr = new ImageAttributes()) { Assert.Throws(() => imageAttr.SetOutputChannelColorProfile(null)); Assert.Throws(() => imageAttr.SetOutputChannelColorProfile(null, ColorAdjustType.Default)); } } ``` **Expected:** `ArgumentNullException` **Actual:** `netfx` - `ArgumentNullException` `netcoreapp` - `System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.` (#20711)" +22372 area-System.Drawing Validate the focus and scale parameters in managed code Validate the focus and scale parameters in managed code, because libgdiplus does not validate them. This would cause issues when using System.Drawing.Common on Linux or within Mono. +22373 area-System.Xml Diff between Core 2.0 and legacy Fx: XslTransform fails on custom function "This came about when working on #21201. The test for `XslTransform` using `XsltArgumentList` with a custom implementation crashes with the following stack on Core 2.0: ``` Unhandled Exception: System.Xml.XPath.XPathException: Function 'ext:distinct()' has failed. ---> System.InvalidCastException: Invalid cast from 'System.Double' to 'System.Xml.XPath.XPathNodeIterator'. at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider) at System.Xml.Xsl.XsltOld.XsltCompileContext.XsltFunctionImpl.ToNumeric(Object argument, Type type) at System.Xml.Xsl.XsltOld.XsltCompileContext.XsltFunctionImpl.ConvertToXPathType(Object val, XPathResultType xt, Type type) at System.Xml.Xsl.XsltOld.XsltCompileContext.FuncExtension.Invoke(XsltContext xsltContext, Object[] args, XPathNavigator docContext) at MS.Internal.Xml.XPath.FunctionQuery.Evaluate(XPathNodeIterator nodeIterator) --- End of inner exception stack trace --- at MS.Internal.Xml.XPath.FunctionQuery.Evaluate(XPathNodeIterator nodeIterator) at System.Xml.Xsl.XsltOld.Processor.StartQuery(XPathNodeIterator context, Int32 key) at System.Xml.Xsl.XsltOld.ForEachAction.Execute(Processor processor, ActionFrame frame) at System.Xml.Xsl.XsltOld.ActionFrame.Execute(Processor processor) at System.Xml.Xsl.XsltOld.Processor.Execute() at System.Xml.Xsl.XsltOld.Processor.Execute(TextWriter writer) at System.Xml.Xsl.XslTransform.Transform(XPathNavigator input, XsltArgumentList args, TextWriter output) at Legacy_ExtObjDistinctFunction.Program.Main(String[] args) in C:\projects\XmlDistinctInvestigation\repro\Program.cs:line 31 ``` On legacy Fx v2.0.50727 and v4.7.2046.0 the same code produces the expected results. For convenience the code with the isolated repro is below but the respective test is going to be marked with the # of this issue too. Note: the order of elements returned in the transformed xml between different versions of the Fx is different, the test perhaps should sort the elements to avoid issues with that. ```c# using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; using System.Xml.XPath; using System.Xml.Xsl; #pragma warning disable 0618 namespace Legacy_ExtObjDistinctFunction { class Program { static void Main(string[] args) { XsltArgumentList xsltArg = new XsltArgumentList(); xsltArg.AddExtensionObject(""http://foo.com"", new MyXsltExtension()); XslTransform xslTransform = new XslTransform(); using (StringReader streamReader = new StringReader(c_xsl)) using (XmlTextReader xmlReader = new XmlTextReader(streamReader)) xslTransform.Load(xmlReader); using (StringWriter streamWriter = new StringWriter()) using (StringReader streamReader = new StringReader(c_xml)) using (XmlTextReader xmlReader = new XmlTextReader(streamReader)) { XPathDocument xpathDoc = new XPathDocument(xmlReader); xslTransform.Transform(xpathDoc.CreateNavigator(), xsltArg, streamWriter); streamWriter.Flush(); Console.WriteLine(streamWriter.GetStringBuilder()); } Console.WriteLine(""It read the doc without issues!!!""); } #region Files const string c_xsl = @"" , ""; const string c_xml = @"" ""; #endregion } internal class MyXsltExtension { public XPathNodeIterator distinct(XPathNodeIterator nodeset) { Hashtable nodelist = new Hashtable(); while (nodeset.MoveNext()) { if (!nodelist.Contains(nodeset.Current.Value)) { nodelist.Add(nodeset.Current.Value, nodeset.Current.Clone()); } } return new MyArrayIterator(new ArrayList(nodelist.Values)); } } internal class MyArrayIterator : XPathNodeIterator { protected ArrayList array; protected int index; public MyArrayIterator(ArrayList array) { this.array = array; this.index = 0; } public MyArrayIterator(MyArrayIterator it) { this.array = it.array; this.index = it.index; } public override XPathNodeIterator Clone() { return new MyArrayIterator(this); } public override bool MoveNext() { if (index < array.Count) { index++; return true; } return false; } public override XPathNavigator Current { get { return (index > 0) ? (XPathNavigator)array[index - 1] : null; } } public override int CurrentPosition { get { return index; } } public override int Count { get { return array.Count; } } public void Reset() { index = 0; } // BUGBUG: DCR 104760 public override IEnumerator GetEnumerator() { MyArrayIterator it = (MyArrayIterator)this.Clone(); it.Reset(); return (IEnumerator)it; } } } ```" +22374 area-System.Security Move cross-platform-crypto doc +22375 area-System.Runtime Add TimeSpan Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Private.CoreLib in coreclr (corert shares the same files) - [ ] Expose from System.Runtime contract in corefx - [ ] Add tests to System.Runtime tests in corefx ```C# namespace System { public struct TimeSpan { public static TimeSpan Parse(ReadOnlySpan input, IFormatProvider formatProvider = null); public static TimeSpan ParseExact (ReadOnlySpan input, string format, IFormatProvider formatProvider, TimeSpanStyles styles = TimeSpanStyles.None); public static TimeSpan ParseExact (ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, TimeSpanStyles styles = TimeSpanStyles.None); public static bool TryParse(ReadOnlySpan input, out TimeSpan result, IFormatProvider formatProvider = null); public static bool TryParseExact (ReadOnlySpan input, string format, IFormatProvider formatProvider, out TimeSpan result, TimeSpanStyles styles = TimeSpanStyles.None); public static bool TryParseExact (ReadOnlySpan input, string[] formats, IFormatProvider formatProvider, out TimeSpan result, TimeSpanStyles styles = TimeSpanStyles.None); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } } ``` +22376 area-System.Runtime Add Version Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr (corert shares the same files) - [ ] Expose from System.Runtime contract in corefx - [ ] Add tests to System.Runtime tests in corefx ```C# namespace System { public class Version { public static Version Parse(ReadOnlySpan input); public static bool TryParse(ReadOnlySpan input, out Version result); public bool TryFormat(Span destination, out int charsWritten, int fieldCount = 4); … } } ``` --- EDIT 8/17/2017: We'd approved: ```C# public bool TryFormat(Span destination, out int charsWritten, int fieldCount = 4); ``` as a way to avoid needing to add two TryFormat overloads based on whether it takes a fieldCount or not, but it turns out that deviates from the ToString()/ToString(fieldCount) behavior, where the former doesn't always use fieldCount == 4 but rather dynamically determines the value based on the instance, so we should add both: ```C# public bool TryFormat(Span destination, out int charsWritten); public bool TryFormat(Span destination, int fieldCount, out int charsWritten); ``` +22377 area-System.Runtime Add Guid Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr - [x] Implement in System.Private.CoreLib in corert (if Guid isn't yet ""shared"" between coreclr and corert) - [x] Expose from System.Runtime contract in corefx - [x] Add tests to System.Runtime tests in corefx ```C# namespace System { public struct Guid { public Guid(ReadOnlySpan b); // correspond to Guid(byte[] b) public bool TryWriteBytes(Span destination); public static Guid Parse(ReadOnlySpan input); public static Guid ParseExact(ReadOnlySpan input, string format); public static bool TryParse(ReadOnlySpan input, out Guid result); public static bool TryParseExact(ReadOnlySpan input, string format, out Guid result); public bool TryFormat(Span destination, out int charsWritten, string format = null); … } } ```" +22378 area-System.Runtime Add String Span-based ctor "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr - [x] Implement in System.Private.CoreLib in corert (unless string is ""shared"" by then) - [x] Expose from System.Runtime contract in corefx - [x] Add tests to System.Runtime tests in corefx ```C# namespace System { public class String { public String(ReadOnlySpan value); … } } ```" +22380 area-System.Runtime Add String Span-based method for writing into String's buffer "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr - [x] Implement in System.Private.CoreLib in corert (if string isn't yet ""shared"" between coreclr and corert) - [x] Expose from System.Runtime contract in corefx - [x] Add tests to System.Runtime tests in corefx ```C# namespace System { public delegate void StringCreateAction(TState state, Span destination); public class String { public static string Create(int length, TState state, StringCreateAction action); … } } ``` Mostly approved, but open issue around the delegate, its name, what namespace it lives in (or nested type within String), etc. A custom delegate is needed as span can't be used as a generic type argument with one of the built-in action types." +22381 area-System.IO Add Stream Span/Buffer-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement span-based APIs in System.Private.CoreLib in coreclr - [x] Implement buffer-based APIs in System.Private.CoreLib in coreclr - [x] Implement span-based APIs in System.Private.CoreLib in corert (if Stream isn't yet in ""shared"") - [x] Implement buffer-based APIs in System.Private.CoreLib in corert (if Stream isn't yet in ""shared"") - [x] Expose span-based APIs from System.Runtime contract in corefx - [ ] Expose buffer-based APIs from System.Runtime contract in corefx - [x] Add span-based APIs tests to System.Runtime tests in corefx - [ ] Add buffer-based APIs tests to System.Runtime tests in corefx ```C# namespace System.IO { public class Stream { public virtual int Read(Span destination); public virtual ValueTask ReadAsync(Buffer destination, CancellationToken cancellationToken = default(CancellationToken)); public virtual void Write(ReadOnlySpan source); public virtual Task WriteAsync(ReadOnlyBuffer source, CancellationToken cancellationToken = default(CancellationToken)); … } } ```" +22382 area-System.Threading Fixes for ConcurrentDictionary for weak memory model hardware There was possibility to observe partially constructed object (Node) in ConcurrentDictionary on architectures with weak hardware memory model (e.g. ARM). Volatile.Write protects us from exposing reference to partially constructed Node object. +22383 area-System.Data "SqlConnection GetSchema(""DataTypes"") method returns wrong datatype for tinyint" "SqlConnection's method GetSchema(""DataTypes"") returns following results for ""tinyint"" data type - DataType: System.SByte - IsUnsigned:True This result is inconsistent and it seems it should return System.Byte as DataType, because SQLServer's tinyint data type is defined to be mapped to .NET byte type (0-254) ### Example code to reproduce problems ``` CSharp var conn = new SqlConnection(@""Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=TestDB;Integrated Security=True;""); conn.Open(); var rows = conn.GetSchema(DbMetaDataCollectionNames.DataTypes) .Rows .OfType() .Where(p=>(string)p[""TypeName""]== ""tinyint""); foreach (var row in rows) { Console.WriteLine(String.Format(""TypeName:{0,-25} DataType:{1,-30} IsUnsigned:{2,-15}"", row[""TypeName""], row[""DataType""], row[""IsUnsigned""] )); } //Output: //TypeName:tinyint DataType:System.SByte IsUnsigned:True ``` ### Root cause of problems It seems SqlConnection GetSchema(""DataTypes"") method return results from following xml definition file. ### Reproducible environments I've confirmed this problem occurs following environments - .NET 4.6.1 - .NET Core 2.0 with System.Data.SqlClient/4.4.0-preview2-25405-01 ### Note It seems following issue mentioned this wrong tinyint datatype. " +22384 area-System.IO Add support for disabled short path generation to System.IO.Tests.Directory_GetFileSystemEntries_str.PatternTests_DosStarOddSpace() ```PatternTests_DosStarOddSpace()``` currently tests for pattern-matching behavior on files that, according to inline documentation in the test source, is due to a preexisting bug in the Windows stack. However, the exhibited behavior is intended on systems that have short path alias generation enabled because the pattern is matched against both the full file name and the shortened alias generated by Windows. Consequentially, this test fails on systems that do not have short path alias generation enabled. Expected behavior is as follows: - If the system has short path alias generation enabled, then the current set of expected results should be used. - If the system has short path alias generation disabled, then the set of results labeled as ```// Really should be:``` should be expected. +22385 area-System.Threading System.Collections.Concurrent.Tests not producing testResults.xml in UapAot This tests haven't produced testResults.xml in Debug-x64 and Release-x64 for UapAot in the past days. I tried to repro locally but wasn't lucky. I just missed to use the Helix repro tool, but hadn't have time for that. +22386 area-System.IO Override new Span/Buffer-based APIs on FileStream Dependent on https://github.com/dotnet/corefx/issues/22381. +22387 area-System.Net Override new Span/Buffer-based APIs on NetworkStream Dependent on #22381. - [X] Override span-based Read/Write methods - [x] Override buffer-based ReadAsync/WriteAsync methods +22388 area-System.IO Override new Span/Buffer-based APIs on MemoryStream Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22389 area-System.IO Override new Span/Buffer-based APIs on UnmanagedMemoryStream Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22390 area-System.IO Override new Span/Buffer-based APIs on DeflateStream Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22391 area-System.Security Override new Span/Buffer-based APIs on CryptoStream Dependent on #22381. +22392 area-System.IO Override new Span/Buffer-based APIs on GZipStream Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22393 area-System.IO Fix test assertions for long paths We don't preemptively check path length any more. The OS errors we get back can either be PathTooLong or NotFound depending on the environment and requested path. See #22368 +22394 area-System.IO Investigate overriding new Span/Buffer-based APIs on streams used in ZipArchive There are a bunch of internal stream types. They may or may not benefit from having their Span/Buffer-based APIs overridden (depends on how they're consumed and what optimizations are possible). Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22395 area-System.IO Override new Span/Buffer-based APIs on PipeStream Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22396 area-System.Net Override new Span/Buffer-based APIs on streams used in System.Net.Http Dependent on #22381. +22397 area-System.IO Override new Span/Buffer-based APIs on BufferedStream Dependent on #22381. - [X] Override span-based Read/Write methods - [ ] Override buffer-based ReadAsync/WriteAsync methods +22398 area-System.Net Override new Span/Buffer-based APIs on SslStream Dependent on #22381. - [ ] Override Read(Span) - [ ] Override Write(ReadOnlySpan) - [ ] Override ReadAsync(Memory) - [x] Override WriteAsync(ReadOnlyMemory) (https://github.com/dotnet/corefx/pull/24295) +22399 area-System.Net Override new Span/Buffer-based APIs on NegotiateStream Dependent on #22381. +22400 area-System.Data Adding error message for inaccessible SQL Server Browser I added error message for the exception caused by inaccessible sql server browser. +22401 area-System.Numerics Add BigInteger Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Runtime.Numerics - [x] Expose from System.Runtime.Numerics ref - [x] Test in System.Runtime.Numerics.Tests ```C# namespace System.Numerics { public struct BigInteger { public BigInteger(ReadOnlySpan value); public int GetByteCount(); public bool TryWriteBytes(Span destination, out int bytesWritten); public static BigInteger Parse(ReadOnlySpan value, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); public static bool TryParse(ReadOnlySpan value, out BigInteger result, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); public static bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } } ``` +22403 area-System.Runtime Add primitive type Span-based Parse/TryParse/TryFormat methods "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement parsing in System.Private.CoreLib in coreclr - [x] Implement parsing in System.Private.CoreLib in corert (unless primitive types are ""shared"" by then) - [x] Expose parsing from System.Runtime contract in corefx - [x] Add parsing tests to System.Runtime tests in corefx - [x] Implement formatting in System.Private.CoreLib in coreclr - [x] Implement formatting in System.Private.CoreLib in corert (unless primitive types are ""shared"" by then) - [x] Expose formatting from System.Runtime contract in corefx - [x] Add formatting tests to System.Runtime tests in corefx ```C# namespace System { public struct Int16 { public short Parse(ReadOnlySpan s, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); public bool TryParse(ReadOnlySpan s, out short result, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); public bool TryFormat(Span destination, out int charsWritten, string format = null, IFormatProvider provider = null); … } … // similar Parse/TryParse/TryFormat methods for each of: // Int32 // Int64 // UInt16 // UInt32 // UInt64 // Decimal // Double // Single // Boolean (but no NumberStyle/NumberFormatInfo args) } ```" +22404 area-System.Memory Consider adding {ReadOnly}BufferStream types Just as we have a MemoryStream that works with `byte[]` and an UnmanagedMemoryStream that works with a `byte*` and a length, we should support treating `Buffer` and `ReadOnlyBuffer` as streams. It’s possible we could get away with reimplementing `MemoryStream` on top of `Buffer`, but more than likely this would introduce regressions for at least some existing use cases, and it doesn't work with `ReadOnlyBuffer`. It would be nice if we could potentially write something ala: ```C# Stream s = buffer.TryGetArray(out var segment) ? new MemoryStream(segment.Array, segment.Offset, segment.Count) : new UnmanagedMemoryStream(&buffer.DangerousGetPinnableReference(), buffer.Length); ``` but it's possible that TryGetArray could return false but the wrapped memory not inherently pinned, in which case the UnmanagedMemoryStream case would be wrapping a pointer to memory that could get moved. To pin it and keep track of the pinning, you'd need a wrapper Stream type anyway. So, we could have two new stream types for these specific types: ```C# namespace System.IO { public class BufferStream : Stream { public BufferStream(Buffer buffer); public BufferStream(Buffer buffer, bool publiclyVisible); public bool TryGetBuffer(out Buffer buffer); … // overrides of all members on Stream } public class ReadOnlyBufferStream : Stream { public ReadOnlyBufferStream(ReadOnlyBuffer buffer); public ReadOnlyBufferStream(ReadOnlyBuffer buffer, bool publiclyVisible); public bool TryGetBuffer(out ReadOnlyBuffer buffer); … // overrides of all members on Stream, with those that write throwing NotSupportedException } } ``` The name of BufferStream is unfortunately close to that of BufferedStream, and they mean very different things, but I’m not sure that’s important enough to consider a less meaningful name. Alternatively, we could hide these behind a factory, e.g. ```C# public static Stream ToStream(this Buffer buffer) => new BufferStream(buffer); public static Stream ToStream(this ReadOnlyBuffer buffer) => new ReadOnlyBufferStream(buffer); ``` to keep them from needing to be public. Especially if we do the latter, we would want to consider either adding TryGetBuffer virtuals to the base Stream class, or introducing an interface that could be queried for and which exposing such methods. Then for example code that uses Streams and has optimizations when working directly with the underlying data can query for the interface and special-case when the underlying `Buffer` can be accessed, e.g. ```C# namespace System { public interface IHasBuffer { bool TryGetBuffer(out Buffer buffer); bool TryGetBuffer(out ReadOnlyBuffer buffer); } } ``` We could implement this not only on `BufferStream` and `ReadOnlyBufferStream`, but also on `MemoryStream`, `UnmanagedMemoryStream`, and even on non-streams, basically anything that can hand out a representation of its internals as buffers. +22405 area-System.Runtime Consider adding BitConverter overloads that accept endian option #22355 lists APIs we're planning to add that use `Span` instead of `byte[]`. These and the existing methods also use the current machine's endianness. We should separately consider overloads that accept the endianness to use, rather than always using that of the current machine, e.g. ```C# public static bool TryWriteBytes(Span destination, long value, bool? littleEndian); public static long ToInt64(ReadOnlySpan value, bool? littleEndian); // null littleEndian means current machine's ``` or ```C# public enum Endianness { Current, Little, Big } public static bool TryWriteBytes(Span destination, long value, Endianness endianness); public static long ToInt64(ReadOnlySpan value, Endianness endiannes); ```` cc: @bartonjs +22406 area-System.Runtime Add TextReader and TextWriter Span/Buffer-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Runtime.Extensions - [x] Expose from System.Runtime.Extensions contract - [x] Add tests to System.Runtime.Extensions.Tests ```C# namespace System.IO { public class TextReader { public virtual int Read(Span destination); public virtual ValueTask ReadAsync(Buffer destination, CancellationToken cancellationToken = default(CancellationToken)); public virtual int ReadBlock(Span destination); public virtual ValueTask ReadBlockAsync(Buffer destination, CancellationToken cancellationToken = default(CancellationToken)); … } public class TextWriter { public virtual void Write(ReadOnlySpan source); public virtual Task WriteAsync(ReadOnlyBuffer source, CancellationToken cancellationToken = default(CancellationToken)); public virtual void WriteLine(ReadOnlySpan source); public virtual Task WriteLineAsync(ReadOnlyBuffer source, CancellationToken cancellationToken = default(CancellationToken)); … } } ``` EDIT 7/25/2017: Updated with CancellationTokens per API review. +22407 area-System.IO Tweak path related tests Needed to update a few tests for unix whitespace behavior. +22408 area-System.IO Override new Span/Buffer-based APIs on StreamReader Depends on https://github.com/dotnet/corefx/issues/22406. +22409 area-System.IO Override new Span/Buffer-based APIs on StreamWriter Depends on #22406. +22410 area-System.IO Override new Span/Buffer-based APIs on StringReader Depends on #22406. +22411 area-System.IO Override new Span/Buffer-based APIs on StringWriter Depends on #22406. +22412 area-System.Runtime Add TransformationStatus enum from corefxlab Based on corefxlab work, will be used by a variety of new corefx Span-based APIs. We need to re-review to make sure it's exactly what we want to bake in to the core of the framework ```C# namespace System.Buffers // System? { public enum TransformationStatus // TransformStatus? TransformResult? { Done, // Success? Complete? Ok? DestinationTooSmall, NeedMoreSourceData, // SourceTooSmall? InvalidData } } ``` cc: @terrajobst, @bartonjs, @KrzysztofCwalina, @ahsonkhan +22415 area-System.IO System.IO.MemoryMappedFiles.MemoryMappedView.CreateView(...) check for sufficient virtual memory is incomplete "The static factory method of the internal MemoryMappedView is typically called from MemoryMappedFile.CreateViewAccessor(...) after a user has created a MemoryMappedFile. An overload of CreateViewAccessor() with no parameters is provided for the common case that the view is to cover the entire file. That overload results in a DefaultSize value of zero being passed to the size parameter of MemoryMappedView.CreateView(). Line 38 of the file MemoryMappedView.Windows.cs calls a check, preceded by a comment: // if request is >= than total virtual, then MapViewOfFile will fail with meaningless error message // ""the parameter is incorrect""; this provides better error message in advance Interop.CheckForAvailableVirtualMemory(nativeSize); The problem is that ""nativeSize"" as implemented is zero under the (most?) common case just mentioned, such that the check (in Interop.Windows.cs) is not very probative: if (nativeSize >= totalVirtual) { throw new IOException(SR.IO_NotEnoughMemory); } Now the one caller (MemoryMappedFile) of MemoryMappedView.CreateView() has the actual file length (from its FileStream, or from a native call). On line 152 of MemoryMappedFile it ensures that the filestream.length is meaningful under the default capacity/size scenario, so it could readily provide it to MemoryMappedView.CreateView() to enable an accurate lower-bound expected memory consumption calculation and check before the Pinvoke call to MapViewOfFile. (By considering both the system page size as well as the allocation granularity it is straightforward to calculate a value that matches the viewInfo.RegionSize that is later returned by the existing VirtualQuery call.) Given that this problem is not resulting in a catastrophic failure (only a ""meaningless error message,"" per the comment in the code) and that it may not be all that common to be mapping views of large files exceeding the available virtual memory, I'm unsure where this fits in the grand scheme of priorities. However, I wanted to log it given that I found myself adding a remedy today in my own specialized implementation in case someone eventually logs a bug on this. I'm new here, almost a first time participant, so please let me know to what extent this falls below (or above) the current level of relevance/urgency." +22416 area-System.Data System.Data.SqlClient.Tests crash on UapAot in Release-x86 This seems to be a codegen bug as this only happens when ILC built in ret mode, if we build them as chk mode then they don't crash. There are various tests crashing and they seem to be flaky, once every 3 runs aprox. This is one of the tests I've seen crash: - System.Data.SqlClient.Tests.SqlErrorCollectionTest.CopyTo_Throws Error: ``` Unhandled exception at 0x0F4456D1 (mrt100_app.dll) in xunit.console.netcore.exe: 0xC0000005: Access violation reading location 0x000003E8. ``` Stack Trace: ``` > xunit.console.netcore.dll!$18_System::Data::SqlClient::SessionData..ctor() Line 72 Unknown xunit.console.netcore.dll!$18_System::Data::SqlClient::SqlInternalConnectionTds..ctor($18_System::Data::ProviderBase::DbConnectionPoolIdentity & identity, $18_System::Data::SqlClient::SqlConnectionString & connectionOptions, System::Object & providerInfo, bool redirectedUserInstance, $18_System::Data::SqlClient::SqlConnectionString & reconnectSessionData, $18_System::Data::SqlClient::SessionData & applyTransientFaultHandling, bool) Line 323 Unknown xunit.console.netcore.dll!$18_System::Data::SqlClient::SqlConnectionFactory.CreateConnection($18_System::Data::Common::DbConnectionOptions & options, $18_System::Data::Common::DbConnectionPoolKey & poolKey, System::Object & poolGroupProviderInfo, $18_System::Data::ProviderBase::DbConnectionPool & pool, $17_System::Data::Common::DbConnection & owningConnection, $18_System::Data::Common::DbConnectionOptions & userOptions) Line 136 Unknown xunit.console.netcore.dll!$18_System::Data::ProviderBase::DbConnectionFactory.CreateNonPooledConnection($17_System::Data::Common::DbConnection & owningConnection, $18_System::Data::ProviderBase::DbConnectionPoolGroup & poolGroup, $18_System::Data::Common::DbConnectionOptions & userOptions) Line 100 Unknown xunit.console.netcore.dll!$18_System::Data::ProviderBase::DbConnectionFactory.TryGetConnection($17_System::Data::Common::DbConnection & owningConnection, System::Threading::Tasks::TaskCompletionSource$1<$18_System::Data::ProviderBase::DbConnectionInternal> & retry, $18_System::Data::Common::DbConnectionOptions & userOptions, $18_System::Data::ProviderBase::DbConnectionInternal & oldConnection, $18_System::Data::ProviderBase::DbConnectionInternal & & connection) Line 278 Unknown xunit.console.netcore.dll!$18_System::Data::ProviderBase::DbConnectionInternal.TryOpenConnectionInternal($17_System::Data::Common::DbConnection & outerConnection, $18_System::Data::ProviderBase::DbConnectionFactory & connectionFactory, System::Threading::Tasks::TaskCompletionSource$1<$18_System::Data::ProviderBase::DbConnectionInternal> & retry, $18_System::Data::Common::DbConnectionOptions & userOptions) Line 691 Unknown xunit.console.netcore.dll!$18_System::Data::ProviderBase::DbConnectionClosed.TryOpenConnection($17_System::Data::Common::DbConnection & outerConnection, $18_System::Data::ProviderBase::DbConnectionFactory & connectionFactory, System::Threading::Tasks::TaskCompletionSource$1<$18_System::Data::ProviderBase::DbConnectionInternal> & retry, $18_System::Data::Common::DbConnectionOptions & userOptions) Line 1902 Unknown xunit.console.netcore.dll!$18_System::Data::SqlClient::SqlConnection.TryOpen(System::Threading::Tasks::TaskCompletionSource$1<$18_System::Data::ProviderBase::DbConnectionInternal> & retry) Line 1031 Unknown xunit.console.netcore.dll!$18_System::Data::SqlClient::SqlConnection.Open() Line 598 Unknown xunit.console.netcore.dll!$19_System::Data::SqlClient::Tests::SqlErrorCollectionTest.CreateCollection() Line 144 Unknown xunit.console.netcore.dll!$19_System::Data::SqlClient::Tests::SqlErrorCollectionTest.ValidateCopyToThrows(System::Action$3<$18_System::Data::SqlClient::SqlErrorCollection,$18_System::Data::SqlClient::SqlError[],System::Int32> & copyTo, System::Action$1<$18_System::Data::SqlClient::SqlErrorCollection> & additionalValidation) Line 93 Unknown xunit.console.netcore.dll!$19_System::Data::SqlClient::Tests::SqlErrorCollectionTest.CopyTo_Throws() Line 75 Unknown ``` I will force the tests to be built as chk for ILC towards getting a clean build in the .csproj adding a comment linked to this issue so that whenever this issue is solved we remove that line I will add. cc: @joshfree +22417 area-System.Runtime Add Convert Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr (""shared"" with corert) - [x] Expose from System.Runtime.Extensions contract in corefx - [x] Add tests to System.Runtime.Extensions tests in corefx ```C# namespace System { public class Convert { public static string ToBase64String(ReadOnlySpan bytes, Base64FormattingOptions options = Base64FormattingOptions.None); public static TransformationStatus ToBase64Chars(ReadOnlySpan bytes, Span chars, out int bytesConsumed, out int charsWritten, Base64FormattingOptions options = Base64FormattingOptions.None); public static TransformationStatus FromBase64(string s, Span destination, out int charsConsumed, out int bytesWritten, Base46FormattingOptions options = ...); public static TransformationStatus FromBase64(ReadOnlySpan s, Span destination, out int charsConsumed, out int bytesWritten, Base46FormattingOptions options = ...); … } } ``` Mostly approved, but needed to re-verify approach with TransformationStatus. Depends on https://github.com/dotnet/corefx/issues/22412." +22420 area-Microsoft.CSharp Skip interpreting arithmetic operands if the left argument is null The arithmetic operations have an optimisation where they read from the stack directly rather than popping and pushing. This can be extended to skip reading the right operand if the left is null (the result will always be the same as leaving the current null value on the stack) and reducing field accesses, so do so. +22421 area-System.Data Make DataCommonEventSource members public on uapaot, since reflection needed for EventSource functionality is blocked in UAP for nonpublic members. Fixes https://github.com/dotnet/corefx/issues/20589 The DataCommonEventSource members need to be marked public on uapaot in order for EventSource reflection to work. TestEventListener in DataCommonEventSourceTest enables events based on the event name, which is retrieved via reflection. Not enabling any events is what is causing the test failures in the above issue. I tried the ILTransform solution mentioned by @brianrob in https://github.com/dotnet/corefx/issues/20589, but the test runs fail since the event method at https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DataCommonEventSource.cs#L69 has a non-void return type. According to Brian, Events normally shouldn't work at all with a non-void return type, but so far this is the only issue we've seen with that event method. Marking the event source members public is less invasive than changing all the calls to DataCommonEventSource.EnterScope() that would be needed to make the ILTransform fix work +22422 area-System.Diagnostics Fixed races in EventCounters There were a number of races in EventCounters. Did an audit and fixed these. Also added the Dispose() method so that you can make counters for transient objects (e.g. files) Also turned on and beefed up the testing. Fixed tests. @brianrob, @stephentoub +22425 area-System.Console Test failure: System.ConsoleTests.Perf_Console/OpenStandardInput Opened on behalf of @v-haren The test `System.ConsoleTests.Perf_Console/OpenStandardInput` has failed. System.IO.IOException : Too many open files Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) at System.ConsolePal.OpenStandardInput() at System.ConsoleTests.Perf_Console.OpenStandardInput() Build : Master - 20170719.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release +22427 area-System.Data System.IO.FileNotFoundException when opening connection in UWP "I try to get SQL Client to work in UWP. When I try to connect to a localdb I get an error. In debug mode: System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Win32.Registry, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.' In release mode: System.TypeLoadException: 'Unresolved P/Invoke method 'RegOpenKeyEx!api-ms-win-core-registry-l1-1-0.dll' from this method. Please look for this method in build warnings for more details. ' It fails on the open command ``` using (SqlConnection conn = new SqlConnection()) { // Create the connectionString // Trusted_Connection is used to denote the connection uses Windows Authentication //conn.ConnectionString = ""Server=(localdb)\\MSSQLLocalDB;Database=Northwind;Trusted_Connection=true""; conn.ConnectionString = ""Server=(localdb)\\MSSQLLocalDB;Database=Northwind;Persist Security Info=False;User ID = test123; Password = xxxxxxx""; conn.Open(); } ``` 4.5.0-preview2-25518-02 of System.Data.SqlClient " +22428 area-System.IO Add BinaryReader Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Private.CoreLib in coreclr - [ ] Implement in System.Private.CoreLib in corert (if BinaryReader isn't yet in ""shared"") - [ ] Expose from System.IO contract in corefx - [ ] Add tests to System.IO tests in corefx ```C# namespace System.IO { public class BinaryReader { public virtual int Read(Span destination); public virtual int Read(Span destination); … } } ```" +22429 area-System.IO Add BinaryWriter Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Private.CoreLib in coreclr - [ ] Implement in System.Private.CoreLib in corert (if BinaryWriter isn't yet in ""shared"") - [ ] Expose from System.IO contract in corefx - [ ] Add tests to System.IO tests in corefx ```C# namespace System.IO { public class BinaryWriter { public virtual void Write(ReadOnlySpan value); public virtual void Write(ReadOnlySpan value); … } } ```" +22430 area-System.Runtime Add StringBuilder Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Private.CoreLib in coreclr (""shared"" with corert) - [x] Expose from System.Runtime contract in corefx - [x] Add tests to System.Runtime tests in corefx ```C# namespace System.Text { public class StringBuilder { public StringBuilder Append(ReadOnlySpan value); public StringBuilder Insert(int index, ReadOnlySpan value); public void CopyTo(int sourceIndex, Span destination, int count); … } } ```" +22431 area-System.Text Add Encoding Span-based APIs "Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Private.CoreLib in coreclr (""shared"" with corert) - [ ] Expose from System.Text.Encoding contract in corefx - [ ] Add tests to System.Text.Encoding tests in corefx ```C# namespace System.Text { public class Encoding { public virtual int GetByteCount(ReadOnlySpan chars); public virtual int GetBytes(ReadOnlySpan chars, Span bytes); public virtual int GetCharCount(ReadOnlySpan bytes); public virtual int GetChars(ReadOnlySpan bytes, Span chars); public string GetString(ReadOnlySpan bytes); public virtual ReadOnlySpan Preamble { get; } … } } ```" +22434 area-System.Net Test failure: System.Net.Security.Tests.NegotiateStreamTest / NegotiateStream_* ## Types of failures Affected tests: * NegotiateStream_StreamToStream_AuthToHttpTarget_Success * NegotiateStream_StreamToStream_KerberosAuthWithoutRealm_Success * NegotiateStream_StreamToStream_KerberosAuthentication_Success * NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success * NegotiateStream_EchoServer_ClientWriteRead_Successive_Sync_Success * NegotiateStream_StreamToStream_KerberosAuthDefaultCredentials_Success ### GSSAPI operation failed with error Invalid status: * Preauthentication failed - Ubuntu17.04-17.10, Debian90 * Decrypt integrity check failed - Fedora25, Debian87, Ubuntu16.04-16.10 ``` System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- System.ComponentModel.Win32Exception : GSSAPI operation failed with error - An invalid status code was supplied (Decrypt integrity check failed). at System.Net.Security.NegoState.ValidateCreateContext(String package, Boolean isServer, NetworkCredential credential, String servicePrincipalName, ChannelBinding channelBinding, ProtectionLevel protectionLevel, TokenImpersonationLevel impersonationLevel) in /root/corefx-1134723/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 207 at System.Net.Security.NegotiateStream.BeginAuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel, AsyncCallback asyncCallback, Object asyncState) in /root/corefx-1134723/src/System.Net.Security/src/System/Net/Security/NegotiateStream.cs:line 101 at System.Net.Security.NegotiateStream.BeginAuthenticateAsClient(NetworkCredential credential, String targetName, AsyncCallback asyncCallback, Object asyncState) in /root/corefx-1134723/src/System.Net.Security/src/System/Net/Security/NegotiateStream.cs:line 61 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) in /root/coreclr/src/mscorlib/src/System/Threading/Tasks/FutureFactory.cs:line 1081 at System.Net.Security.NegotiateStream.AuthenticateAsClientAsync(NetworkCredential credential, String targetName) in /root/corefx-1134723/src/System.Net.Security/src/System/Net/Security/NegotiateStream.cs:line 247 at System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_EchoServer_ClientWriteRead_Successive_Async_Success() in /root/corefx-1134723/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs:line 356 ----- Inner Stack Trace ----- at System.Net.Security.NegotiateStreamPal.AcquireCredentialsHandle(String package, Boolean isServer, NetworkCredential credential) in /root/corefx-1134723/src/Common/src/System/Net/Security/NegotiateStreamPal.Unix.cs:line 313 at System.Net.NTAuthentication.Initialize(Boolean isServer, String package, NetworkCredential credential, String spn, ContextFlagsPal requestedContextFlags, ChannelBinding channelBinding) in /root/corefx-1134723/src/Common/src/System/Net/NTAuthentication.Common.cs:line 127 at System.Net.Security.NegoState.ValidateCreateContext(String package, Boolean isServer, NetworkCredential credential, String servicePrincipalName, ChannelBinding channelBinding, ProtectionLevel protectionLevel, TokenImpersonationLevel impersonationLevel) in /root/corefx-1134723/src/System.Net.Security/src/System/Net/Security/NegoState.cs:line 203 ``` ## History of failures Day | Build | OS | Error message -- | -- | -- | -- 7/18-9/18 | N/A | \* | 178 failures -- GSSAPI operation failed with error 9/12-9/18 | N/A | \* | 109 failures -- Win32Exception : No such file or directory (Invalid argument on Suse422) 9/20-10/18 | N/A | \* | 28 failures -- Assert 10/23-10/31 | N/A | \* | 11 failures -- GSSAPI operation failed with error 11/1 | 20171101.03 | Ubuntu17.04 | 11/12 | 20171112.01 | Fedora25 | 11/12 | 20171112.01 | Fedora25 | 11/13 | 20171113.01 | Fedora25 | 11/13 | 20171113.01 | Fedora25 | 11/13 | 20171113.02 | Fedora25 | 2/6 | 20180206.04 | Debian90 | all 6 tests failed 2/15 | 20180215.04 | Ubuntu16.04 | 2x all 6 tests failed 3/1 | 20180301.04 | Fedora26 | 2x all 6 tests failed +22437 area-System.Security Extensibility for X509Certificate2 It would be really nice to have an extensibility point around `X509Certificate2` that allows certificates backed by other crypto providers. The existing implementation of `X509Certificate2` is pretty much hard-coded to use `RSACryptoServiceProvider` or `DSACryptoServiceProvider` on Windows. Not sure about the other platforms. My use case is that I'd like a way to support Azure Key Vault-backed certificates in a clean way and that appears impossible today. There is virtually nothing on the base class that can be overridden and the extension methods `GetRSAPublicKey` and `GetRSAPrivateKey` are pretty much hard-coded to `RSACng` and `RSACryptoServiceProvider` right now. My ideal goal is that I could create an `AzureKeyVaultX509Certificate` class that derives from `X509Certificate2` and that end users can work with the same as existing certificates. The constructor would take a `KeyVaultClient` and `KeyBundle` so that it would know the key identifier and public key. Sign and Decrypt operations would go to the Key Vault client instead of any native API. Calls to the `GetRSAPrivateKey` would get a custom implementation of `RSA` that knows how to call into Key Vault. +22440 area-System.Numerics Add more Math operation support System.Numerics.Vectors Support for some SIMD instructions are missing in Numerics.Vectors Vector.RootN //Only SquareRoot is implemented Vector.Exp //Every element of the result is exp(a,b) where a,b are input vectors Vector.LShift //Shift elements in a by elements in b Vector.RShift //Like above would simulate a = b >> c for all elements It wondsers me because Or and XOr is there but not shift. Code where Vectors would be perfect but are not supported yet: ``` while (pbuf < pend) { uint tx = x ^ (x << 11); uint ty = y ^ (y << 11); uint tz = z ^ (z << 11); uint tw = w ^ (w << 11); *(pbuf++) = x = w ^ (w >> 19) ^ (tx ^ (tx >> 8)); *(pbuf++) = y = x ^ (x >> 19) ^ (ty ^ (ty >> 8)); *(pbuf++) = z = y ^ (y >> 19) ^ (tz ^ (tz >> 8)); *(pbuf++) = w = z ^ (z >> 19) ^ (tw ^ (tw >> 8)); } ``` +22443 area-System.IO StackOverflow in System.IO.Tests.Directory_CreateDirectory.DirectoryLongerThanMaxLongPathWithExtendedSyntax_ThrowsException @JeremyKuhne your change 0721434 looks most relevant here. Not sure whether its unterminated or just too much recursion. I don't have symbols so I can't tell which path exactly. https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/259/consoleText System.IO.Tests.Directory_CreateDirectory.DirectoryLongerThanMaxLongPathWithExtendedSyntax_ThrowsException ``` System.IO.FileSystem.dll!Interop.Kernel32.FindFirstFile(string fileName, ref Interop.Kernel32.WIN32_FIND_DATA data) Unknown System.IO.FileSystem.dll!System.IO.Win32FileSystem.RemoveDirectoryHelper(string fullPath, bool recursive, bool throwOnTopLevelDirectoryNotFound) Unknown System.IO.FileSystem.dll!System.IO.Win32FileSystem.RemoveDirectoryHelper(string fullPath, bool recursive, bool throwOnTopLevelDirectoryNotFound) Unknown ... System.IO.FileSystem.dll!System.IO.Win32FileSystem.RemoveDirectoryHelper(string fullPath, bool recursive, bool throwOnTopLevelDirectoryNotFound) Unknown System.IO.FileSystem.dll!System.IO.Win32FileSystem.RemoveDirectoryHelper(string fullPath, bool recursive, bool throwOnTopLevelDirectoryNotFound) Unknown System.IO.FileSystem.dll!System.IO.Win32FileSystem.RemoveDirectory(string fullPath, bool recursive) Unknown System.IO.FileSystem.dll!System.IO.Directory.Delete(string path, bool recursive) Unknown CoreFx.Private.TestUtilities.dll!System.IO.FileCleanupTestBase.Dispose(bool disposing) Unknown CoreFx.Private.TestUtilities.dll!System.IO.FileCleanupTestBase.Dispose() Unknown ``` I don't know the directory, but this is the test directory. C:\Users\dotnet-bot\AppData\Local\Temp\Directory_CreateDirectory_4y5i43q1.nod +22444 area-System.ComponentModel System.ComponentModel.ComponentResourceManager.ApplyResources separator conflicts in uwp "Since UWP apps merge their resources into a pri file given the '.' separator for [ApplyResources](https://github.com/dotnet/corefx/blob/master/src/System.ComponentModel.TypeConverter/src/System/ComponentModel/ComponentResourceManager.cs#L70-L200) our costumers could potentially hit a MakePri failure when compiling their application. The reason why costumers could hit this is if they add into their Application's resources or consume a library that their resources have key/values like the example below: ```xml Object ObjectGetSetProperty ObjectNoSuchProperty ``` Where a resource is the Prefix of the full property name (Class.PropertyName). If we have this resources structure inside a UWP app when building it will fail with an error similar to this one: ``` error PRI175 : 0x80073b0f - Processing Resources failed with error : Duplicate Entry. error PRI278: 0xdef00531 - 'Resources.TestResx/Object' or one if its parents is defined as both resource and scope, which is not allowed. ``` We will need to provide an additional separator to our customers to have a valid workaround here rather than changing the ""Default"" resource (I suggest '-'). With this separator our customers will be able to have resources in the following structure: ```xml Default DefaultGetSetProperty DefaultNoSuchProperty DefaultGetOnlyProperty DefaultPrivateProperty ``` cc: @weshaggard @tarekgh " +22446 area-Microsoft.CSharp Replace Microsoft.CSharp methods for casting CType with normal operations. Lighter, allows for pattern-matching, avoids repeated field accesses and casts by moving more into locals. +22448 area-System.IO Nested directories were too deep Nesting directories with Windows paths were over 800 levels deep, causing intermittent issues with stack overflows. Making directory segments longer to mitigate. Remove a test that wasn't providing any real value but was complicating the helper methods and allocating a ton of memory. Fixes #22443 +22449 area-System.IO Remove ActiveIssue(21358) on WhiteSpace changes Changes fully merged in, no longer active issue +22450 area-Infrastructure Display the contents of init-tools.log Port of https://github.com/dotnet/corefx/pull/21894 to release/1.0.0 /cc @ravimeda +22451 area-Infrastructure Display the contents of init-tools.log Port of https://github.com/dotnet/corefx/pull/21894 to release/1.1.0 /cc @ravimeda +22452 area-System.Diagnostics [DiagnosticsSource] Hierarchical Request-Id to support unbounded traces "@vancem, @lmolkova, @SergeyKanzhelev The current version of the Request-Id is specified to have a max length of 1024 bytes. > Request-Id is a string up to 1024 bytes length. It contains only Base64 and ""-"" (hyphen), ""|"" (vertical bar), ""."" (dot), and ""_"" (underscore) characters. This max length is designed to accommodate the hierarchical request format which maintains a growing vector of elements. Assuming an average of two digit increments for outgoing paths, each stage requires 12 bytes : - 9 bytes (8 random characters + '_') - 2 digits - '.' This translates to about 83 vector elements after taking into account the root. While this may seem plentiful, it is still bounded and a kb is considerable overhead for tracking correlation on a web request. To address this, can we consider the following: - Allow for unbounded growth by resetting the vector. So when the vector at max length is received on the incoming path, the suffix is hashed and the Request-Id reinitialized with the first element being the hashed value. We can rely on a standard 64 bit hash to distinguish this from a regular element. - Reduce the max length to something like 128 bytes (which incidentally is the same max length for the cV 2.0) which should be sufficient for approximately 8 stages before being reset. For context, the cV does not support reset semantics. But this would allow for shorter max lengths and unbounded traces which are desirable traits for the next version." +22453 area-System.Security SqlConnection.Open fails with SSL error on macOS High Sierra (10.13) "SqlClient connections to any SQL Server instance fails on macOS High Sierra. The repro for this is below. This is impacting users of the MSSQL extension for VSCode - see https://github.com/Microsoft/vscode-mssql/issues/954 for the original bug report. I've created a .Net only repo below that's very simple. @saurabh500 @corivera @karelz could you please take a look and let us know if you need anything more? We naturally would like to get this into the next Preview of .Net Core 2.0 and we'll update our MSSQL release to include that as otherwise when High Sierra goes GA, users will start to run into this problem more often. **Repro steps** 1. Ensure you have a SQL Server instance running. In this example I'm using [localhost in Docker per MSSQL Docs](https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker) 2. install dotnet core 2.0 SDK on a mac 3. Create a new console application and add SqlClient dependency: ``` Exe netcoreapp2.0 ``` 4. Update the `Program.cs` file to call `SqlConnection.Open` ``` using System; using System.Data.SqlClient; namespace hwapp { class Program { static void Main(string[] args) { try { using (SqlConnection con = new SqlConnection(""Data Source=localhost;Initial Catalog=master;User=sa;Password=Yukon900"")) { con.Open(); } } catch (Exception e) { Console.WriteLine(e); } } } } ``` **Expected** Connection is opened successfully **Actual** SSL handshake error occurs: ``` System.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed) ---> System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation. at Internal.Cryptography.Pal.SecTrustChainPal.ParseResults(SafeX509ChainHandle chainHandle, X509RevocationMode revocationMode) at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) at System.Net.CertificateValidationPal.VerifyCertificateProperties(SafeDeleteContext securityContext, X509Chain chain, X509Certificate2 remoteCertificate,Boolean checkCertName, Boolean isServer, String hostName) at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback, ProtocolToken& alertToken) at System.Net.Security.SslState.CompleteHandshake(ProtocolToken& alertToken) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options) at System.Data.SqlClient.SNI.SNIProxy.EnableSsl(SNIHandle handle, UInt32 options) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at hwapp.Program.Main(String[] args) in /Users/kevincunnane/hwapp/Program.cs:line 15 ClientConnectionId:85d1abe2-b84a-4773-8205-c3bb87312975 ``` " +22454 area-System.Threading Minor fixes to concurrent collections from port to CoreCLR See https://github.com/dotnet/coreclr/pull/12939 +22455 area-System.Data Re-enable IntegratedAuthConnectionTest, since the failures no longer repro on the latest uapaot test runs. Related to https://github.com/dotnet/corefx/issues/20718 +22457 area-Microsoft.CSharp Replace Microsoft.CSharp methods for casting Symbol with normal operations Lighter, allows for pattern-matching, avoids repeated field accesses and casts by moving more into locals. +22458 area-System.Data SqlClient FunctionalTests fail due to missing System.Private.Interop.dll The SqlClient functional tests are failing on a clean build of the latest master branch. SqlClient ManualTests are fine. Test output: Running tests... Start time: 16:41:07.42 Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Private.Interop, Ver sion=999.999.999.999, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified . at System.ConsolePal.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded) at System.ConsolePal.set_ForegroundColor(ConsoleColor value) in C:\SqlProjects\CoreFx\src\System.Console\src\Sy stem\ConsolePal.Windows.cs:line 504 at System.Console.set_ForegroundColor(ConsoleColor value) in C:\SqlProjects\CoreFx\src\System.Console\src\Syste m\Console.cs:line 181 at Xunit.ConsoleClient.Program.Main(String[] args) Finished running tests. End time=16:41:41.72, Exit code = -532462766 Seems like the failures happen before the tests even get run. +22461 area-Serialization Fix BinaryFormatter AoT test differences Fix serialization tests to handle a couple of AoT differences: 1. AoT doesn't return ByteEqualityComparer from EqualityComparer.Default, so create it with reflection instead 2. CoreCLR changes the _version field of List differently than both AoT and NetFX, so pass arrays to the IEnumerable constructor of a few collections, which causes the _version fields to agree. Also updates the stored blobs to reflect this. +22462 area-System.Net Improve connection pooling in ManagedHandler Add support for purging stale connections from the pool and for a max number of connections per server. cc: @geoffkizer +22463 area-System.Net Integrated authentication failing when attempting to connect to SQL Server from macOS Sierra "This issue is originally discussed [here](https://github.com/Microsoft/vscode-mssql/issues/356#issuecomment-316166467). Following the [Kerberos Setup Instructions](https://github.com/Microsoft/vscode-mssql/blob/380cfb4e8acce9d9d8368d2a5f32cfff9c73a933/KERBEROS_HELP.md). Steps 1 through 3 work perfectly. However, when attempting step 4 I get the following: ``` mssql: Failed to connect: Cannot access Kerberos ticket. Ensure Kerberos has been initialized with 'kinit'. [3:36:58 PM] Error connecting to server ""[ServerName]"". Details: Cannot access Kerberos ticket. Ensure Kerberos has been initialized with 'kinit'. ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - An unsupported mechanism was requested (unknown mech-code 0 for mech unknown). at System.Net.Security.NegotiateStreamPal.GssInitSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags, Int32& isNtlmUsed) at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) at System.Data.SqlClient.SNI.SNIProxy.GenSspiClientContext(SspiClientContextStatus sspiClientContextStatus, Byte[] receivedBuff, Byte[]& sendBuff, Byte[] serverName) at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.GenerateSspiClientContext(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength, Byte[] _sniSpnBuffer) at System.Data.SqlClient.TdsParser.SNISSPIData(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength) ``` Per @kevcunnane request, I'm submitting an issue here. The only other thing I've noticed since the other issue, is that if I run the `klist` command without first running the `kinit` command I have several other entries: ``` Credentials cache: API:ED70540F-329F-44FB-9C08-059260828BBB Principal: me@DOMAIN.COMPANY.COM Issued Expires Principal Jul 19 22:31:24 2017 Jul 20 08:31:24 2017 krbtgt/DOMIAN.COMPANY.COM@DOMIAN.COMPANY.COM Jul 19 22:31:41 2017 Jul 20 08:31:24 2017 host/COMPANYSERVER.DOMIAN.COMPANY.COM@DOMIAN.COMPANY.COM Jul 19 22:31:41 2017 Jul 20 08:31:24 2017 HTTP/COMPANYSERVER.DOMIAN.COMPANY.COM@DOMIAN.COMPANY.COM ``` We do use the [Jamf Casper Suite](https://www.jamf.com/products/jamf-pro/) to manage our Macs, and I'm assuming that's what those other entries are from. Finally, I also setup a .Net Core Console app to see if integrated security would run from there, following along the same lines as [this issue](https://github.com/dotnet/corefx/issues/22453) and I received the same exception as the one the VS Code is giving me with the mssql extension. > macOS 10.12.5 > dotnet 2.0.0-preview2-006497" +22464 area-System.Net Test: System.Net.WebSockets.Client.Tests.CloseTest / CloseAsync_DuringConcurrentReceiveAsync_ExpectedStates Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.CloseTest/CloseAsync_DuringConcurrentReceiveAsync_ExpectedStates(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Closed') for this operation. Valid states are: 'Open, CloseReceived, CloseSent' Stack Trace: at Void System.Net.WebSockets.WinRTWebSocket.CheckValidState(WebSocketState[]) + 0x82 at Void System.Net.WebSockets.WinRTWebSocket.InterlockedCheckAndUpdateCloseState(WebSocketState, WebSocketState[]) + 0x26 at Void System.Net.WebSockets.WinRTWebSocket+d__43.MoveNext() + 0x1b2 --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x18 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x66 at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x5c at TResult System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() + 0x1e at System.Net.WebSockets.Client.Tests.CloseTest.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x18 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x66 at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x5c at Void Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d.MoveNext() + 0x1dc --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x18 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x66 at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x5c --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x18 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x66 at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x5c Build : Master - 20170720.91 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170720.91/workItem/System.Net.WebSockets.Client.Tests.Execution/analysis/xunit/System.Net.WebSockets.Client.Tests.CloseTest~2FCloseAsync_DuringConcurrentReceiveAsync_ExpectedStates(server:%20wss:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +22468 area-System.IO System.IO.Compression.ZipFile contents not available on Android platforms Hello, After installing the official NuGet package `System.IO.Compression.ZipFile`, version 4.3.0, on a Xamarin Android project, the `System.IO.Compression.ZipFile` assembly is not made available, even though the `System.IO.Compression` is there. The Nuget package actually only contains the library for the `net46` and `netstandard1.3` frameworks. The other 'supported' frameworks (all mobile specific) does not contain the library. So even if I've made sure that my android project is NetStandard compatible, I'll get the empty `MonoAndroid10` libraries. +22469 area-System.ComponentModel .NET Core 2 type load exception when using full .net framework dll "We've developed an app on top of ""Full .NET/Owin"". We managed to run that app on top of ""Full .NET/ASP.NET Core"" very easily. Then we started to test that on .net core 2 as it accepts referencing full .net assemblies. Interestingly lots of things are working (signalr, web api, static files middleware etc). Now we're working on ""ASP.NET Web API / OData"" as it has no suitable equivalent in .net core world). In web api parts, we've used swagger, and by running its UI, I received an interesting exception: ``` ""System.TypeLoadException"",""Message"":""Could not load type 'System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider' from assembly 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToke n=31bf3856ad364e35' ``` This is a link of repository which contains the sample app you need to reproduce the problem: https://github.com/ysmoradi/WebApiOwinSwaggerProblemOnDotNetCore2Preview Run http://localhost:5000/api/swagger and you'll see that exception in console. Note that swagger itself works(!). You can fix this problem by commenting BadController class easily. You'll see GoodController methods in swagger ui and you can invoke them. I think there is a problem in .NET full shim in .NET Core 2." +22470 area-Microsoft.CSharp Remove checks for impossible conditions from Microsoft.CSharp #22456 removed some error codes that were never used, but there is other code in Microsoft.CSharp that checks for conditions that are irrelevant (can only happen when defining a type, constant operations, or other cases that only come up in static code) or impossible (lacking a mscorlib, types like `int` and `object` aren't available, in which case there would have been a fatal error before the code had a chance to run). The removal of this dead code of course needs to be careful of removing a condition that actually could happen, in which case a test cases that hit it should be added or if that's difficult for some reason the condition should be clearly documented in a comment. This issue is to track that. The following is a list of all errors not currently hit during testing. This isn't a perfect to-do list (the same error could have both possible and impossible paths to it) and it includes some cases that I think should definitely be reachable (but they should be covered by tests anyway for #14345 and marked off as soon as confirmed as reachable, and besides I could be wrong), but it will serve as a gauge. There could also be cases that cannot be hit but should be, as per #22534) - [x] CS0031 ConstOutOfRange (#25825) - [x] CS0035 AmbigUnaryOp (#22549) - [x] CS0038 WrongNestedThis (#26417) - [x] CS0120 ObjectRequired (#22682) - [x] CS0123 MethDelegateMismatch (#25217) - [ ] CS0131 AssgLvalueExpected - [x] CS0143 NoConstructors (#23069) - [x] CS0148 BadDelegateConstructor (#23371) - [x] CS0176 ObjectProhibited (#22682) - [x] CS0192 RefReadonly (#25042) - [ ] CS0198 AssgReadonlyStatic - [x] CS0199 RefReadonlyStatic (#25042) - [x] CS0205 AbstractBaseCall (#22518) - [x] CS0206 RefProperty (#25042) - [x] CS0218 MustHaveOpTF (#22782) - [x] CS0221 ConstOutOfRangeChecked (#25825) - [x] CS0229 AmbigMember (#25827) - [x] CS0233 SizeofUnsafe (#22519) - [x] CS0245 CallingFinalizeDepracated (#22518) - [x] CS0250 CallingBaseFinalizeDeprecated (#22518) - [x] CS0306 BadTypeArgument (#23286) - [x] CS0307 TypeArgsNotAllowed (#23069) - [x] CS0312 GenericConstraintNotSatisfiedNullableEnum (#23069) - [x] CS0313 GenericConstraintNotSatisfiedNullableInterface (#23069) - [x] CS0314 GenericConstraintNotSatisfiedTyVar (#23287) - [x] CS0403 TypeVarCantBeNull (#23278) - [x] CS0407 BadRetType (#23371) - [x] CS0428 MethGrpToNonDel (#23371) - [x] CS0452 RefConstraintNotSatisfied (#22549) - [x] CS0518 PredefinedTypeNotFound (#22471) - [ ] CS0570 BindToBogus - [x] CS0571 CantCallSpecialMethod (#22549) - [x] CS0648 BogusType (#22537) - [x] CS0656 MissingPredefinedMember (#22541) - [x] CS0664 LiteralDoubleCast (#22533) - [x] CS0716 ConvertToStaticClass (#22549) - [x] CS0718 GenericArgIsStaticClass (#23286) - [x] CS0762 PartialMethodToDelegate (#22548) - [x] CS1061 NoSuchMemberOrExtension (#22999) - [x] CS1113 ValueTypeExtDelegate (#22999) - [x] CS1503 BadArgType (#22748) - [x] CS1510 RefLvalueExpected (#25042) - [x] CS1545 BindToBogusProp2 (Should be used but wasn't, fixed in #22537) - [x] CS1546 BindToBogusProp1 (Should be used but wasn't, fixed in #22537) - [x] CS1594 BadDelArgTypes (#25218) - [x] CS1604 AssgReadonlyLocal (#25042) - [x] CS1605 RefReadonlyLocal (#25042) - [x] CS1612 ReturnNotLValue (#26370) - [x] CS1615 BadArgExtraRef (#22748) - [x] CS1620 BadArgRef (#22748) - [x] CS1648 AssgReadonly2 (#26370) - [x] CS1649 RefReadonly2 (#25042) - [x] CS1650 AssgReadonlyStatic2 (#26370) - [x] CS1651 RefReadonlyStatic2 (#25042) - [x] CS1656 AssgReadonlyLocalCause (#25214) - [x] CS1657 RefReadonlyLocalCause (#25042) - [x] CS1728 DelegateOnNullable (#23371) - [x] CS1729 BadCtorArgCount (#23069) - [x] CS1740 DuplicateNamedArgument (Enum value 5005) (#23281) - [x] CS1744 NamedArgumentSpecificationBeforeFixedArgument (Enum value 5002) (#23281) - [x] CS1928 BadExtensionArgTypes (#22999) - [x] CS1929 BadInstanceArgType (#22748) - [x] CS1950 BadArgTypesForCollectionAdd (#22525) - [x] CS1954 InitializerAddHasParamModifiers (#22525) +22471 area-Microsoft.CSharp Microsoft.CSharp PredefinedTypes remove dead code and tidy up "* Remove unused parameters from `PredefinedTypeInfo` ctor * Remove concept of ""required"" from `PredefinedTypes` If this code is running somewhere without a predefined type available (due to faulty or missing mscorlib) then it can't get as far as creating the `PredefinedTypeInfo` instance that will be used to determine that it is a required type and its absence requires a different error message! Contributes to #22470 Replace the `GetOptPredef…` and `GetReqPredef…` methods with single `GetPredef…` version as this is all they differ on. * Use shorter ctor on `PredefinedTypeInfo` when applicable. If we've a shorter override, we may as well use it consistently. * Simpler, branchless `IsSimpleType` * Single-pass `PredefinedType` name lookup. Use `TryGet` instead of `Contains` followed by indexer. * Only store `PredefinedType` in `PredefinedTypeInfo` in Debug Is only used to assert the ordering is correct; not needed in Release * More C# idiomatic names. Contributes to #16664 * Remove null-check from `DelayLoadPredefSym` Aside from it being unreachable, if a bug did cause a null here, the null-check is just moving where the exception will be thrown further away from where the problem was encountered, so it will be harder to debug. * Add `FirstNonSimpleType` to `PredefinedType` enum, aliasing `PT_INTPTR` Makes `IsSimpleType` check more self-documenting. " +22474 area-System.Data SqlConnectionStringBuilder - several keywords are not supported "I am wondering why [these keywords](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionStringBuilder.cs#L873-L887) are marked as ""not supported"" in SqlConnectionStringBuilder? Is it by design or just is not yet implemented? Especially: - 'Network Library' - 'asynchronous processing' - 'connection reset' I tried to run mono System.Data tests using corefx sources (Passed: 2347, Failures: 36) and the most popular failure is `The keyword 'XX' is not supported on this platform.` For example, the following code works in .NET 4.6 but fails with NIE in .NET Core: `var builder = new SqlConnectionStringBuilder(""SERVER=localhost;Network=DBMSSOCN"");`" +22475 area-System.Security Unaccounted forced unoptimized build of System.Security.Cryptography.X509Certificates tests The tests are forced to run unoptimized with ILC but there's no issue I can find tracking an underlying codegen issue: https://github.com/dotnet/corefx/pull/22173#issuecomment-316449128. These either shouldn't be forced to run unoptimized, or there should be a UWP6.0 bug that codegen people are looking at. +22476 area-System.Collections Disable hanging Collections.Concurrent test on x86 too. It hangs on x86 too (just not consistently.) +22479 area-System.Net NullReferenceException from System.Uri "Sometimes `Uri.TryCreate` returns an invalid Uri when given a file path with a trailing slash. The `MinimalUriInfoSet` flag is set, but `m_Info` is null, so most of the methods and properties of the Uri throw `NullReferenceException`. The behavior is not deterministic; for the same input I sometimes get a working Uri. I can reproduce this (sometimes) with the following code in a unit test: ``` Uri result; string input = @""C:\users\jodavis\Documents\Visual Studio 2017\WebApplication1\WebApplication1\""; Uri.TryCreate(input, UriKind.Absolute, out result); Assert.AreEqual(""file://"", result.GetComponents(UriComponents.SchemeAndServer, UriFormat.SafeUnescaped)); ``` It doesn't reproduce every time. It seems to happen more frequently when built for Release. It also seems more frequent if I step into the `Uri.TryCreate` method; but if I step in any deeper than that, then it never reproduces." +22480 area-Infrastructure CodeCoverage runs are failing with various test faults "The last 8 runs have failed with the message ""NuGet hit a corrupted cache on this machine. Please email @jaredpar with a link to this run.""" +22481 area-System.Threading Enable Tasks.Extensions tests on uap +22482 area-Infrastructure .NET Core 2.0 test should support Windows IoT Core checking We are testing .NET Core 2.0 on Windows IoT Core in response to the growing popularity of developing managed apps on IoT Core platforms. Currently there is only one test flag 'IsNanoServer' to test .NET Core 2.0 for both Nano Server and IoT Core platforms. Because there is no specific flag for Windows IoT Core, it results in at least 2 false test failures. We suggest to add a specific test flag for Windows IoT Core, or OneCore UAP, in the CoreFx testing framework. +22483 area-System.Net ETW collection typo. +22484 area-System.Data System.Data.SqlClient doesn't work with System.Transactions.Transaction "I understand that there's no support for ambient transactions, but even explicit transactions don't seem to work. I have a middle tier which I'm porting to .NET Core. I simply want to make sure that the in-memory update is committed with the SQL update as an atomic operation. I had been using ambient transactions, but decided to move to explicit after reading that ambient wasn't supported. So I have: this.committableTransaction = new CommittableTransaction(); this.committableTransaction.EnlistVolatile(VolatileTransaction.Current, EnlistmentOptions.None); this.sqlConnection = new SqlConnection(""...""); sqlConnection.Open(); sqlConnection.EnlistTransaction(this.committableTransaction); **VolatileTransaction.Current** is my own implementation of the **IEnlistmentNotification** interface. When I run this, I get: _System.NotSupportedException: 'Enlisting in Ambient transactions is not supported.'_ If there's a different way to support a two-phase commit then I'll use it, just let me know how I'm supposed to do this basic operation. " +22485 area-Infrastructure ./build-native.sh fails to build after adding openssl function if run from root "On a clean Ubuntu 14.04 LTS machine with only the prereq's for .netcore and with the entire thing building first..... If I add a function to the opensslshim.h such as PER_FUNCTION_BLOCK(CRYPTO_set_ex_data, true) \ with adding the pointer as well #define CRYPTO_set_data_ex CRYPTO_set_data_ex_ptr and then run ./build-native.sh from the ""corefx"" root folder I get the following output https://gist.github.com/Drawaes/7b2011e7b9eda9c6adea4e4fdac0c9b4 However if I run it from /corefx/src/Native folder it works fine... ? " +22486 area-Serialization Pass right context in delegate Need use the context passed into the delegate not the context passed into the method. #21975 The test code is in https://github.com/dotnet/corefx/compare/master...JimboWei:iobjectfix#diff-842d4b05f36c1089c037e1b2e53908ecR3038 @shmao @zhenlan @mconnew +22488 area-System.IO NamedPipeClientStream high cpu usage when server unavailable "_From @coderb on July 20, 2017 11:31_ NamedPipeClientStream does a tight infinite loop (spins without blocking) if Connect(Timeout.Infinite) is called and the server is unavailable (not running or the pipe is busy). I would suggest that the retry loop should yield the cpu (Thread.Sleep/Task.Delay) for say 250ms. ``` public void Connect(int timeout) { CheckConnectOperationsClient(); if (timeout < 0 && timeout != Timeout.Infinite) { throw new ArgumentOutOfRangeException(""timeout"", SR.GetString(SR.ArgumentOutOfRange_InvalidTimeout)); } UnsafeNativeMethods.SECURITY_ATTRIBUTES secAttrs = PipeStream.GetSecAttrs(m_inheritability); int _pipeFlags = (int)m_pipeOptions; if (m_impersonationLevel != TokenImpersonationLevel.None) { _pipeFlags |= UnsafeNativeMethods.SECURITY_SQOS_PRESENT; _pipeFlags |= (((int)m_impersonationLevel - 1) << 16); } // This is the main connection loop. It will loop until the timeout expires. Most of the // time, we will be waiting in the WaitNamedPipe win32 blocking function; however, there are // cases when we will need to loop: 1) The server is not created (WaitNamedPipe returns // straight away in such cases), and 2) when another client connects to our server in between // our WaitNamedPipe and CreateFile calls. int startTime = Environment.TickCount; int elapsed = 0; do { // Wait for pipe to become free (this will block unless the pipe does not exist). if (!UnsafeNativeMethods.WaitNamedPipe(m_normalizedPipePath, timeout - elapsed)) { int errorCode = Marshal.GetLastWin32Error(); // Server is not yet created so let's keep looping. if (errorCode == UnsafeNativeMethods.ERROR_FILE_NOT_FOUND) { continue; } ``` _Copied from original issue: Microsoft/dotnet#445_" +22489 area-System.Data Throw a PlatformNotSupported exception when trying to connect to LocalDB with SqlClient on UAP, since UAP does not have the registry functionality needed for LocalDB connectivity. Also moved includes of Microsoft.Win32.Registry.dll and Interop.LoadLibraryEx.cs to non-uap Windows builds. The Registry dll does not exist in UWP, and the LoadLibrary interop is not used in uap since we just throw a NotSupportedException. Fixes https://github.com/dotnet/corefx/issues/22427 +22490 area-System.Numerics Adding tests for the new 'Floating-Point Classification APIs'. FYI. @mellinoe This also updates cases where we were using `IsInfinity || IsNaN` to be `!IsFinite` instead. +22491 area-System.Drawing Adding System.Drawing.Common.Imaging ImageAttributes tests. #20711 Converting old tests for ` System.Drawing.Common.Imaging.ImageAttributes` and adding new. +22492 area-System.IO "Test: System.IO.Tests.PathTests/GetFullPath_NonControlWhiteSpaceStays failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetFullPath_NonControlWhiteSpaceStays(component: \"" \"")` has failed. Assert.Equal() Failure\r ? (pos 7)\r Expected: C:\\Test?\r Actual: C:\\Test\r ? (pos 7) Stack Trace: at System.IO.Tests.PathTests.GetFullPath_NonControlWhiteSpaceStays(String component) at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetVI[T0](Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x56 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2f at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x11a Build : Master - 20170721.91 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170721.91/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetFullPath_NonControlWhiteSpaceStays(component:%20%5C%22%C2%85%5C%22)" +22493 area-System.IO "Test: System.IO.Tests.PathTests/GetDirectoryName_NonControl failed with ""System.ArgumentException """ "Opened on behalf of @Jiayili1 The test `System.IO.Tests.PathTests/GetDirectoryName_NonControl(path: \"" \"")` has failed. System.ArgumentException : The path is empty.\r Parameter name: path Stack Trace: at String System.IO.Path.GetDirectoryName(String) + 0xb8 at System.IO.Tests.PathTests.GetDirectoryName_NonControl(String path) at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetVI[T0](Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x56 at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2f at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x11a Build : Master - 20170721.91 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170721.91/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.IO.Tests.PathTests~2FGetDirectoryName_NonControl(path:%20%5C%22%C2%A0%5C%22)" +22494 area-Microsoft.CSharp Remove dead symbol and symbol kinds from Microsoft.CSharp * Remove `UnresolvedAggregateSymbol` No path by which it is ever created. * Remove unused symbol masks, and redundant casts in definition. * Remove redundant switch cases on `SYMKIND`, and then remove any `SYMKIND` this leaves unused. * Simplify `ErrArgSymKind` `AssemblyQualifiedNamespaceSymbol`s are only ever created with the empty string for their name, so the re-write within `ErrArgSymKind` will always result in `SK_ExternalAliasDefinitionSymbol` being set. This is only ever used in `UserStringBuilder.ErrSK` where `SK_AssemblyQualifiedNamespaceSymbol` and `SK_ExternalAliasDefinitionSymbol` are both cases judged to be unreachable. Remove the rewrite from `ErrArgSymKind` just let `SK_AssemblyQualifiedNamespaceSymbol` hit the same default case that `SK_ExternalAliasDefinitionSymbol` would have. Remove `SK_ExternalAliasDefinitionSymbol` as it is now not used. +22495 area-System.Net Disable default proxy credentials tests for managed handler One of these tests is now hanging on Unix after the updated connection pooling changes went in. Disabling for now to unblock CI. cc: @geoffkizer +22498 area-Infrastructure Update CoreClr, CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25525-01, preview1-25525-01, preview1-25525-03, rel-25525-00, rel-25525-00, preview1-25524-01, respectively (release/uwp6.0) +22499 area-System.Data Implement QuoteIdentifier and UnquoteIdentifier in OdbcCommandBuilder `QuoteIdentifier(..)` and `UnquoteIdentifier(..)` in `OdbcCommandBuilder` are not implemented and throw NIE - I copy-pasted code from [reference-sources](http://referencesource.microsoft.com/#System.Data/System/Data/Odbc/OdbcCommandBuilder.cs,240) to fill the gaps and added tests. It also fixes few tests in mono as part of https://github.com/mono/mono/pull/4893 +22500 area-Microsoft.CSharp Microsoft.CSharp does not identify indexer properties correctly "The dynamic binder assumes that all indexers are called `Item` with the exception of that on `string`. So for example: ```C# public class AllTheIntegers { [IndexerName(""Integers"")] public int this[int x] => x; } var i = new AllTheIntegers(); dynamic d = i; int staticAnswer = i[42]; // 42 int dynamicAnswer = d[42]; // RuntimeBinderException: // Cannot apply indexing with [] to an expression of type 'AllTheIntegers'" +22501 area-Microsoft.CSharp Have Microsoft.CSharp lookup indexers using DefaultMemberAttribute Fixes #22500 +22502 area-System.IO System.IO.FileSystem.Tests.*.LongPathSegment failed in UapAot All LongPathSegment tests under System.IO.FileSystem failed in UapAot with error: ``` Expected one of: (System.IO.IOException, System.IO.PathTooLongException) -> Actual: (System.IO.DirectoryNotFoundException) ``` Failing Tests: - System.IO.Tests.FileInfo_Create.LongPathSegment - System.IO.Tests.File_Create_str.LongPathSegment - System.IO.Tests.File_Create_str_i.LongPathSegment - System.IO.Tests.File_Create_str_i_fo/LongPathSegment https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170721.02/workItem/System.IO.FileSystem.Tests cc: @danmosemsft +22503 area-System.IO Recursive directory deletion doesn't scale On Windows in particular, as paths can be ~32K characters long. It is quite possible to have directories nested 1000 levels deep. (#22443) On Windows the P/Invoke is suboptimal- the WIN32_FIND_DATA struct isn't blittable, causing multiple managed and unmanaged heap allocations in addition to eating up space on the stack. Making this blittable and passing it in by ref would relieve a large chunk of the stack pressure. [RemoveDirectoryHelper](https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/Win32FileSystem.cs#L449-L601) +22506 area-System.Runtime [uapaot] AsyncTaskMethodBuilder.SetStateMachine throws when 'm_moveNextAction' is uninitialized "It's a difference from CoreCLR behavior, the exception occurs here: https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncMethodBuilder.cs#L874 The following test was temporarily disabled for uapaot in PR https://github.com/dotnet/corefx/pull/22481: - AsyncValueTaskMethodBuilderTests.SetStateMachine_InvalidArgument_ThrowsException Test: ```c# AsyncValueTaskMethodBuilder b = ValueTask.CreateAsyncMethodBuilder(); AssertExtensions.Throws(""stateMachine"", () => b.SetStateMachine(null)); // The following line throws InvalidOperationException on uapaot b.SetStateMachine(new DelegateStateMachine()); ```" +22507 area-Serialization Disabling adjustmentrule blob sanity check till code is converged Fixes https://github.com/dotnet/corefx/issues/22348 @tarekgh and I agreed that we will disable the blob check for TimeZoneInfo.AdjustmentRule till code is converged into shared folder for coreclr/corert. This fixes the last uapaot serialization failure. Disabling the test is safe as the difference in the blob is a field which exists in coreclr but not in corert which handles Unix daylightsavings scenarios. For UWP6.0 this isn't required and therefore disabling the test case till the TimeZoneInfo is fully converged isn't an issue. +22508 area-System.Reflection Value 0x0010 for DllCharacteristics is missing In corefx/src/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEFileFlags.cs, there is no value for 0x0010 listed. I cannot find it documented anywhere, however if I build a native DLL with cl.exe and pass /APPCONTAINER to the linker, this bit is present in the resulting PE file's DllCharacteristics field. While the link.exe documentation for /APPCONTAINER isn't clear whether it actually applies to DLLs, the fact that the C# compiler only has a single /out:library option as opposed to separate /out:winexe and /out:appcontainerexe options would seem to indicate that it doesn't apply. Can someone check with the Visual C++ compiler team to find out what the value of 0x0010 is in DllCharacteristics and if it has anything to do with building a DLL with /APPCONTAINER, or is just a coincidence as a result of /APPCONTAINER activating other options in the reuslting output? +22509 area-Infrastructure Overriding the RID for build.sh I'm building the coreclr, corefx, and cli repos for Amazon Linux. When I build the corefx repo I run into issues because the build scripts and tools don't handle the RID 'amzn.2015.09-x64' properly. I originally tried to fix the build scripts in the corefx repo to override the RID, instead of deriving from /etc/os-release. But there are scripts and tools that get downloaded as part of the build that reference the /etc/os-release file too. The temporary workaround I'm using is to change the /etc/os-release file to make the tools think they're running on 'rhel.7-x64', since Amazon Linux is closest to that distro. When I change /etc/os-release the build and tests work. That's not a long term solution though, since it's not safe to change that file permanently. Do you have any suggestions on how to override the RID globally for the duration of the build? +22511 area-Microsoft.CSharp Some optimisations for Microsoft.CSharp.RuntimeBinder.SymbolTable * Merge ClearCache() into ctor * Switch in IsOperator Don't keep hitting virtual property, and don't repeat checks. * Only get name property once per method when hunting conversions. * Make two never-used return types void. * Add parameter conversions during AddNamesOnType rather than looping twice * Don't create store results in AddNamesInInheritanceHierarchy (not needed any more) * Don't call GetRuntimeEvents unless we've processed a member. If we won't use it, we don't need it. * Only iterate through members once * Add to _namesLoadedForEachType before further work. Skip if already done * Avoid some double type checks +22512 area-System.Xml Fix GetTypeCode mistake in XsltCompileContext Fixes https://github.com/dotnet/corefx/issues/22373 This was a mistake when porting Xml. Looked at the history and confirmed that only two places were affected. This PR fixes those, re-enables tests and adds sort for the result xml, and finally does some cleanup. cc: @danmosemsft +22515 area-System.Net SslStream.AuthenticateAsClient takes a long time to throw given invalid remote cert on macOS High Sierra "Starting in macOS 10.13, some Kestrel tests that expect `SslStream.AuthenticateAsClient[Async] to fail got dramatically slower. The reason for this that the call to AuthenticateAsClient takes much longer on 10.13 than it does in previous versions of macOS. To demonstrate this, run the following console app against a website with an invalid cert. If you don't have such a website easily available, feel free to use [Kestrel's SampleApp](https://github.com/aspnet/KestrelHttpServer/tree/rel/2.0.0-preview2/samples/SampleApp). ``` using System; using System.Diagnostics; using System.Net; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; namespace ClientApp { class Program { static void Main(string[] args) { using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { socket.Connect(new IPEndPoint(IPAddress.Loopback, 5001)); using (var rawStream = new NetworkStream(socket)) using (var sslStream = new SslStream(rawStream)) { Console.WriteLine(""Calling SslStream.AuthenticateAsClient with a list of enabled SslProtocols.""); Exception authenticationEx = null; var stopWatch = new Stopwatch(); stopWatch.Start(); try { sslStream.AuthenticateAsClient(""127.0.0.1"", new X509CertificateCollection(), SslProtocols.Tls11 | SslProtocols.Tls12, checkCertificateRevocation: true); } catch (Exception ex) { authenticationEx = ex; } Console.WriteLine(""SslStream.AuthenticateAsClient completed in {0} ms. Ex: {1}"", stopWatch.ElapsedMilliseconds, authenticationEx); } } Console.WriteLine(); Console.WriteLine(); using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { socket.Connect(new IPEndPoint(IPAddress.Loopback, 5001)); using (var rawStream = new NetworkStream(socket)) using (var sslStream = new SslStream(rawStream)) { Console.WriteLine(""Calling SslStream.AuthenticateAsClient without extra arguments.""); Exception authenticationEx = null; var stopWatch = new Stopwatch(); stopWatch.Start(); try { sslStream.AuthenticateAsClient(""127.0.0.1""); } catch (Exception ex) { authenticationEx = ex; } Console.WriteLine(""SslStream.AuthenticateAsClient completed in {0} ms. Ex: {1}"", stopWatch.ElapsedMilliseconds, authenticationEx); } } } } } ``` Here's the output of the script on macOS 10.13 (High Sierra): ``` bash-3.2$ ~/.dotnet/dotnet run Calling SslStream.AuthenticateAsClient with a list of enabled SslProtocols. SslStream.AuthenticateAsClient completed in 40709 ms. Ex: Interop+AppleCrypto+AppleCommonCryptoCryptographicException: No error. at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime verificationTime, Boolean allowNetwork, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationFlag revocationFlag) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate, Boolean throwOnException) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) at System.Net.CertificateValidationPal.VerifyCertificateProperties(SafeDeleteContext securityContext, X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, Boolean isServer, String hostName) at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback, ProtocolToken& alertToken) at System.Net.Security.SslState.CompleteHandshake(ProtocolToken& alertToken) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at ClientApp.Program.Main(String[] args) in /Users/aspnetci/KestrelHttpServer/samples/ClientApp/Program.cs:line 30 Calling SslStream.AuthenticateAsClient without extra arguments. SslStream.AuthenticateAsClient completed in 10173 ms. Ex: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost) at ClientApp.Program.Main(String[] args) in /Users/aspnetci/KestrelHttpServer/samples/ClientApp/Program.cs:line 56 ``` And here's the output of the script on macOS 10.12 (Sierra) for comparison: ``` bash-3.2$ ~/.dotnet/dotnet run Calling SslStream.AuthenticateAsClient with a list of enabled SslProtocols. SslStream.AuthenticateAsClient completed in 90 ms. Ex: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at ClientApp.Program.Main(String[] args) in /Users/asplab/KestrelHttpServer/samples/ClientApp/Program.cs:line 30 Calling SslStream.AuthenticateAsClient without extra arguments. SslStream.AuthenticateAsClient completed in 20 ms. Ex: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost) at ClientApp.Program.Main(String[] args) in /Users/asplab/KestrelHttpServer/samples/ClientApp/Program.cs:line 56 ```" +22518 area-Microsoft.CSharp Remove guards against inappropriate base or Finalize calls from Microsoft.CSharp There's no way to construct a dynamic call to a base method (the static compiler raises CS1971 on such attempts, and there's no way to indicate it in hand-coding against the binding methods). As such all paths for the flags indicating a base call are dead code. As such the exception for base-calling an abstract class or a destructor cannot be reached, so remove the error codes for them. Also remove the error code for calling a finaliser directly as likewise impossible to express (calling another object's finaliser is separately blocked due to access). Contributes to #22470 +22519 area-Microsoft.CSharp Consolidate overloads of checkUnsafe in Microsoft.CSharp One is only ever called by the other, so merge them into a single method and remove paths this rules out. This shows an assert using `ErrorCode.ERR_SizeofUnsafe` to be unnecessary and it was the only use of that code, so remove it. Contributes to #22470 +22520 area-System.Linq Request: Consider displaying count in debugger display when known for System.Linq iterators "Today I was debugging an xUnit theory that accepted an `IEnumerable`. In my test data method, I was generating the enumerable via `Enumerable.Range`. When I looked at the enumerable in the debugger, it was stringified to `{System.Linq.RangeIterator}`. I needed to evaluate the enumerable via 'Results View' and count the number of elements displayed to find the count. Can we consider just displaying the count in the debugger display if we know it already? We can even consider adding more information for a few iterators, where there's not a risk of stringifying a really long collection or evaluating user-supplied functions. For example, we can show `Start = x, Count = y` in the debugger display for `Range` and `Element = ..., Count = x` for `Repeat`." +22525 area-Microsoft.CSharp Remove Microsoft.CSharp paths for collection initialization There's no way to express this to the dynamic binder (any use of `dynamic` in an initializer is turned into `Add` calls at the static compilation stage), so `BindMethodGroupToArgumentsCore` is only ever called with `bindingCollectionAdd` as false). Remove this parameter and those paths that depend on it being true. Entails the deletion of `ERR_BadArgTypesForCollectionAdd` and `ERR_InitializerAddHasParamModifiers`, contributes to #22470 +22527 area-Infrastructure Project URL isn't meaningful Our packages all point to `http://dot.net` which isn't a very meaningful location. Instead, the packages should probably point to their proper GitHub repos, e.g. `https://github.com/dotnet/corefx`. +22528 area-Microsoft.CSharp RuntimeBinderException could provide a useful HelpLink Many causes of `RuntimeBinderException` being thrown are directly analogous to causes of compile-time errors when compiling C#. These errors all have some, often copious, information available about them on the web, and roslyn already has a mechanism for guiding developers to a Bing search, which could be easily piggy-backed on to provide a `HelpLink` that has a good chance of beating the results found by copy-pasting the error message into a search engine. +22529 area-Microsoft.CSharp Add HelpLink to RuntimeBinderException when error relates to C# error Closes #22528 +22533 area-Microsoft.CSharp Remove two checks for EXPRFLAG values in Microsoft.CSharp that are never set * Remove checks for implicit this. We never have an implicit this within a dynamic expression (if an argument to an expression with implicit this has a dynamic argument, then the static binder has already selected the correct object or type argument), so don't check for it when checking static-ness (*stasis*? :wink:) is correct * Remove check for literal constant. Literal status is never set (and rather meaningless after static compilation), so remove branch depending on it. Entails removal of `ERR_LiteralDoubleCast`, contributes to #22470 +22534 area-Microsoft.CSharp Microsoft.CSharp does not report CS1545 or CS1546 "If a type has property with parameters that is not its indexer property, then attempting to index it in C# will cause either CS1545 if it has both a getter and setter (""Property, indexer, or event 'XXX' is not supported by the language; try directly calling accessor methods 'get_XXX' or 'set_XXX'"") or CS1546 if it has only one of those (""Property, indexer, or event 'XXX' is not supported by the language; try directly calling accessor method 'get_XXX'""). If the same thing happens with dynamic code, it throws an exception equivalent to a less helpful (and slightly misleading) CS0570 with a message of ""'TheType' is not supported by the language"". There's code to report CS1545 or CS1546, but it fails to identify the situation when that code should be run." +22535 area-System.Net ClientWebSocket throws exception when connecting after abort "The [documentation ](https://msdn.microsoft.com/en-us/library/system.net.websockets.clientwebsocket.abort(v=vs.110).aspx) of `ClientWebSocket.Abort()` says: > Aborts the connection and cancels any pending IO operations. But after calling `Abort`, one can no longer connect with that ClientWebSocket. The following snippet throws an ObjectDisposedException (""Cannot access a disposed object""): ``` CancellationTokenSource src = new CancellationTokenSource(); ClientWebSocket socket = new ClientWebSocket(); socket.ConnectAsync(new Uri(""wss://echo.websocket.org""), src.Token).Wait(); socket.Abort(); socket.ConnectAsync(new Uri(""wss://echo.websocket.org""), src.Token).Wait(); ``` I understand that this exception is thrown when trying to reconnect after a `Dispose` call (since the documentation states that unmanaged resources are released), but why is it also thrown after `Abort`?" +22536 area-Microsoft.CSharp Constructor Using Dynamic Type Not Visible When Using InternalsVisibleTo "_From @adamrodger on July 23, 2017 16:35_ I have a class in `ClassLibrary1` like this: ```csharp [assembly: InternalsVisibleTo(""OtherLibrary"")] public class Foo { internal Foo(dynamic bar) { Console.WriteLine(bar.Bar); } } ``` And then in `OtherLibrary` I have a test: ```csharp [Fact] public void Test1() { dynamic bar = new { Bar = ""Success!"" }; Foo x = new Foo(bar); } ``` **Expected Result**: Running the test passes and ""Success!"" is written to the console **Actual Result**: ``` Microsoft.CSharp.RuntimeBinder.RuntimeBinderException : 'ClassLibrary1.Foo.Foo(object)' is inaccessible due to its protection level at CallSite.Target(Closure , CallSite , Type , Object ) at CallSite.Target(Closure , CallSite , Type , Object ) at OtherProject.UnitTest1.Test1() ``` If I change the constructor to take an explicitly typed object (e.g. pass a string directly) then the test passes. If I make the constructor public then the test also passes. It's only when `Foo` has an internal constructor with a `dynamic` argument. _Copied from original issue: dotnet/coreclr#12988_" +22537 area-Microsoft.CSharp "Remove most use of ""Bogus"" from Microsoft.CSharp and fix remaining" * Remove concept of bogus from types and most symbols. Since bogus types can't get as far as the dynamic binder, the only case where bogus can be true is when a non-indexer parametrized property, defined in a language where that is allowed, is encountered. In other cases computing bogosity involves recursive checks that always hit false. Give `PropertySymbol` a separate `Bogus` property to use where it could be set, and remove all other uses of `GetBogus` and similar. Entails removal of `ERR_BogusType`, contributes to #22470 * Identify indexer properties correctly in `AddPropertyToSymbolTable` `AddPropertyToSymbolTable` assumes any property with parameters is an indexer, which makes the subsequent check that only indexers can have parameters tautologous. Check `DefaultMemberAttribute` instead. * Remove `useMethInstead` from property symbols and consider always true. `useMethInstead` should be set in `AddPropertyToSymbolTable` when bogus is set, but is not. However, the only time it is looked for the only possible value is true as that is the only condition under which a symbol can be bogus, so remove it, and the path for it being false. This now means that `ErrorCode.ERR_BindToBogusProp1` or `ErrorCode.ERR_BindToBogusProp2` will be used when appropriate (contributes to #22470). Fixes #22534 * Tests for accessing non-indexer parameter properties * Remove bogus check within PredefinedMembers Predefined properties cannot be bogus. +22538 area-System.Data Increase code coverage from 70.8% to 74.9% on System.Data.Common.DataColumnMappingCollection Hi, I had some time so here are a few more unit tests. If you have any questions or comments, please let me know. Thanks, Michael +22539 area-System.Net add test variations for simulating sync operations over a nonblocking socket On non-Windows platforms, once non-blocking is turned on (either explicitly or by performing an async operation), we always stay in non-blocking mode. Therefore, any subsequent sync operation have to be simulated via async and explicit blocking. Add some test variations that cover this scenario. Also fix the Send timeout test to actually test for Send timeout. @stephentoub +22541 area-Microsoft.CSharp Remove some deadcode from Microsoft.CSharp's predefined members * Remove predefined methods the dynamic compiler never uses * Remove null-check from `GetMethod` and merge `GetOptionalMethod` into it. Predefined methods can't be unexpectedly missing if the code is running. * Don't look for setter for predefined property. The only example doesn't have one. * Change `LoadProperty` order to always load property first, ensuring method loads correctly immediately. * Remove error check from `GetProperty` as it cannot happen for only value it is ever called with. * Remove `ReportError` as the two overloads that called it are gone. Entails removal of `ERR_MissingPredefinedMember`, contributes to #22470 * Remove `PP_FIRST` Acts as a guard value, but starting from zero works just as well and without waste. * Remove `PM_FIRST` Acts as a guard, but 0 or `PM_COUNT` works as well without waste. +22542 area-System.Data "Test: System.Data.SqlClient.Tests.AmbientTransactionFailureTest/TestSqlException failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.AmbientTransactionFailureTest/TestSqlException(connectAction: Action`1 { Method = $BlockedFromReflection_4_851c0221 { Attributes = ReuseSlot, Assembly, HideBySig, C...` has failed. Assert.Throws() Failure\r Expected: typeof(System.Data.SqlClient.SqlException)\r Actual: typeof(System.ArgumentNullException): Value cannot be null.\r Parameter name: name Stack Trace: at System.Resources.ResourceManager.GetString() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Resources\ResourceManager.cs:line 1036 at System.SR.GetResourceString() in E:\A\_work\887\s\corefx\src\Common\src\System\SR.cs:line 28 at System.Data.SqlClient.TdsParser.ProcessSNIError() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs:line 1169 at System.Data.SqlClient.TdsParser.Connect() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs:line 329 at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1573 at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1275 at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1184 at System.Data.SqlClient.SqlInternalConnectionTds..ctor() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 355 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnectionFactory.cs:line 135 at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs:line 113 at System.Data.ProviderBase.DbConnectionPool.CreateObject$catch$3() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 755 at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 1606 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection$catch$1() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 1132 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 1044 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs:line 289 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs:line 700 at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionClosed.cs:line 69 at System.Data.SqlClient.SqlConnection.TryOpen() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 1031 at System.Data.SqlClient.SqlConnection.Open$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 606 at System.Data.SqlClient.Tests.AmbientTransactionFailureTest.<>c.<.cctor>b__13_0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\tests\FunctionalTests\AmbientTransactionFailureTest.cs:line 22 at System.Data.SqlClient.Tests.AmbientTransactionFailureTest.<>c.<.cctor>b__13_4() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\tests\FunctionalTests\AmbientTransactionFailureTest.cs:line 49 at System.Threading.Tasks.TaskToApm.<>c__DisplayClass3_0.b__0() in f:\dd\ndp\fxcore\CoreRT\src\Common\src\System\Threading\Tasks\TaskToApm.cs:line 126 Build : Master - 20170724.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170724.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.AmbientTransactionFailureTest~2FTestSqlException(connectAction:%20Action%601%20%7B%20Method%20=%20$BlockedFromReflection_4_851c0221%20%7B%20Attributes%20=%20ReuseSlot,%20Assembly,%20HideBySig,%20C... +22543 area-System.Data "Tests under: System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNoProtocolConnectionTest failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.TcpDefaultForAzureTest/AzureNoProtocolConnectionTest` has failed. Expected error message A network-related or instance-specific error occurred while establishing a connection to SQL Server., but received: Value cannot be null.\r Parameter name: name\r Expected: True\r Actual: False Stack Trace: at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.CheckConnectionFailure() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\tests\FunctionalTests\TcpDefaultForAzureTest.cs:line 101 at System.Data.SqlClient.Tests.TcpDefaultForAzureTest.AzureNoProtocolConnectionTest() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\tests\FunctionalTests\TcpDefaultForAzureTest.cs:line 65 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV() at System.InvokeUtils.CalliIntrinsics.Call() at System.InvokeUtils.CallDynamicInvokeMethod() in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170724.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170724.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.TcpDefaultForAzureTest~2FAzureNoProtocolConnectionTest +22544 area-System.IO "Test: System.IO.Tests.DirectoryInfo_EnumFSI_str_str/SearchPatternLongPath failed with ""System.IO.DirectoryNotFoundException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_EnumFSI_str_str/SearchPatternLongPath` has failed. System.IO.DirectoryNotFoundException : Could not find a part of the path 'C:\\Users\\DotNetTestRunner\\AppData\\Local\\Temp\\DirectoryInfo_EnumFSI_str_str_hdeqoqwz.xbj\\SearchPatternLongPath_635_6d7c9ccc\\kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk'. Stack Trace: at System.IO.FileStream.OpenHandle() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\shared\System\IO\FileStream.WinRT.cs:line 54 at System.IO.FileStream..ctor() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\shared\System\IO\FileStream.cs:line 228 at System.IO.Tests.Directory_GetFileSystemEntries_str_str.SearchPatternLongPath() in E:\A\_work\887\s\corefx\src\System.IO.FileSystem\tests\Directory\GetFileSystemEntries_str_str.cs:line 651 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV() at System.InvokeUtils.CalliIntrinsics.Call() at System.InvokeUtils.CallDynamicInvokeMethod() in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170724.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170724.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_EnumFSI_str_str~2FSearchPatternLongPath +22545 area-System.Threading "Test: System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests/AwaitOnCompleted_InvokesStateMachineMethods failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests/AwaitOnCompleted_InvokesStateMachineMethods(awaitUnsafe: False)` has failed. Assert.Equal() Failure\r Expected: System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+DelegateStateMachine\r Actual: (null) Stack Trace: at System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests.d__7.MoveNext() in E:\A\_work\887\s\corefx\src\System.Threading.Tasks.Extensions\tests\AsyncValueTaskMethodBuilderTests.cs:line 112 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 119 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : Master - 20170724.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170724.01/workItem/System.Threading.Tasks.Extensions.Tests/analysis/xunit/System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests~2FAwaitOnCompleted_InvokesStateMachineMethods(awaitUnsafe:%20False) +22548 area-Microsoft.CSharp Remove check against delegate creation from partial in Microsoft.CSharp At runtime a method is never partial, so this can never be hit. Contributes to #22470 +22551 area-System.Net 'secure' cookies missing in HTTPS WebSocket upgrade request (ClientWebSocket) "Cookies with 'secure' flag set are not sent by ClientWebSocket in the HTTPS WebSocket upgrade request. **Actual result:** When sharing the CookieContainer between a HttpClient and ClientWebSocket, only the cookies with secure=false are sent in the HTTPS WebSocket upgrade request. **Expected result:** When sharing the CookieContainer between a HttpClient and ClientWebSocket, all shared cookies are sent in the HTTPS WebSocket upgrade request, including the ones with secure=true. Test secure websocket server available at https://test.circuitsandbox.net/api UWP C# code below and also available in repo: https://github.com/rogeru/corefx-cookie-issue ```csharp public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); Run(); } private async void Run() { // Save cookies for use in ClientWebSocket CookieContainer sharedCookies = new CookieContainer(); HttpClientHandler handler = new HttpClientHandler(); handler.CookieContainer = sharedCookies; var client = new HttpClient(handler); // response contains AWSELB cookie (secure=false) and connect.sid cookie (secure=true) var response = await client.GetAsync(""https://test.circuitsandbox.net""); // Only cookies without 'secure' flag are sent on WebSocket upgrade request // I.e. AWSELB cookie is sent, but connect.sid is not sent // Expected result: connect.sid is also send in HTTPS WebSocket upgrade request var socket = new ClientWebSocket(); socket.Options.Cookies = sharedCookies; await socket.ConnectAsync(new Uri(""wss://test.circuitsandbox.net/api""), CancellationToken.None); } } ``` Initial issue opened with https://github.com/Microsoft/dotnet/issues/395" +22552 area-System.Runtime Tests for not calling AssemblyResolve event for CoreLib resources Part of fix for dotnet/coreclr#12668 Depends on https://github.com/dotnet/coreclr/pull/12999 +22553 area-System.Runtime Tests for not calling AssemblyResolve event for CoreLib resources Port of https://github.com/dotnet/corefx/pull/22552 to release/2.0.0 Depends on https://github.com/dotnet/coreclr/pull/13003 Fixes dotnet/coreclr#12668 +22554 area-System.Runtime Remove some workarounds for ILC bugs in S.R.E.Tests The bug has been fixed in Project N. +22555 area-System.Runtime [uapaot] Investigate AssemblyResolve event raising for CoreLib resources .NET Core PRs: https://github.com/dotnet/coreclr/pull/12999 https://github.com/dotnet/corefx/pull/22552 +22557 area-Meta Update UAP pinvoke baselines (#22516) * readding 1 API and updating buildtools * removing more APIs that were added +22558 area-Serialization Load the assembly from the same location as the type assembly @shmao @zhenlan @mconnew +22559 area-System.Runtime Expose ValueTask from System.Runtime in netcoreapp ValueTask will be used/exposed by types in System.Runtime, so it also needs to be exposed from there. This also requires pulling down a few related types. Fixes https://github.com/dotnet/corefx/issues/21753 Depends on updated runtimes being consumed into corefx cc: @weshaggard +22560 area-System.Data Remove resource string checking in SqlClient UWP ILC tests The resource strings are retrieved via reflection in the SqlClient tests, and this reflection is blocked on UWP ILC. This causes NullReference and ArgumentNullExceptions to be thrown when trying to retrieve the strings. +22562 area-Microsoft.CSharp Remove ExprEvent from Microsoft.CSharp `RuntimeBinder.BindProperty` is only ever called with false for `fEventsPermitted`. Remove it and paths that depend on it being true, which removes `ExprEvent` (such expressions aren't used in dealing with the events' accessors). +22564 area-System.Net Linux Sockets: Close with pending synchronous Receive hangs If you issue a blocking Receive on a connected socket, and then try to Close it from another thread, the Close call will hang and the Receive will never complete. This works properly on Windows -- the Close succeeds and the Receive throws a SocketException with errorCode = ConnectionAborted. +22565 area-System.Globalization Allow Current Cultures behave in UWP as it does in none-UWP While running inside UWP, CultureInfo.CurrentCulture/CurrentUICulture will behave differently than when running outside UWP apps. In UWP get or set the current culture from/to Windows.ApplicationModel.Resources.Core.ResourceManager.Current.DefaultContext.Languages. This causes the current cultures global to the whole app. In the none-UWP app, the current cultures are tied to the running thread. Which means setting current culture will affect the current thread and is not global to the whole apps. The request here is, Allow a way for UWP apps to force the behavior of the none-UWP apps to have the current culture tied to the thread instead to be global to the whole app. Initial thoughts to support that uses a config switch the app can declare to force this new desired behavior. The other idea is to provide some new API to force this behavior but I think the API would have some serious problems. +22566 area-System.Data Adding SqlConnectionStringBuilder.Enlist to public method contract I added `SqlConnectionStringBuilder.Enlist` to public method contract, and also add more unit tests for `SqlConnectionStringBuilder.Enlist` +22567 area-System.IO Fix System.IO.FileSystem.Tests for UapAot Fixes: https://github.com/dotnet/corefx/issues/22544 +22568 area-Infrastructure Ubuntu16.10 is EOL so remove it form our test queues cc @stephentoub @MattGal @danmosemsft +22569 area-System.Net Uri.ReCreateParts allocates a char[] that could be avoided Accessing a property like Uri.PathAndQuery not only allocates the resulting string, but also a char[] that's often larger than necessary and which is then used to create that resulting string. Whenever/wherever possible, it'd be good to avoid that allocation. As an example of the impact of this allocation, that one char[] array is currently showing up as ~14% of the memory allocated when making a simple get request with ManagedHandler. Related to https://github.com/dotnet/corefx/pull/16456 cc: @safern, @geoffkizer, @cipop +22570 area-System.Net Several improvements to ManagedHandler The main change is to switch how reading is done so that the core logic is handed back a line at a time to parse rather than having to parse byte-by-byte. I also separated classes out into their own files to make the solution a bit more manageable, and employed several others perf tweaks, like using a single empty response stream when possible, using Span instead of ArraySegment where possible, etc. For simple get requests, this improves throughput by 5-10%. cc: @geoffkizer +22571 area-System.Drawing Add Unix implementation for System.Drawing.Common "This PR adds a Unix implementation for System.Drawing.Common. This implementation has been taken from the mono codebase, and implements the majority of its image-processing and graphics functionality in a native library called ""libgdiplus"". This library is available on all of the Linux distributions we support, as well as macOS through homebrew. Up until the final commit, the code pulled into this repository is identical to the implementation in mono. The final commit makes a large change to the mono codebase due to its reliance on the DllMap feature, which is not supported in .NET Core. To fix this, I have removed all of the PInvoke declarations for GDI+ functions, and replaced them with manual function loading. Please see [this commit description](https://github.com/mellinoe/corefx/commit/48e96d5ac2e51a7a388aa5d066c9f516faa22e2d) for a more thorough explanation of the process. Functionally, the behavior should be identical to before my change, but the library loading mechanism will be more flexible and resilient. Currently, a large number of tests are disabled on Unix by this PR. A large chunk of the test failures are due to differences in argument validation or exception behavior, which can be fixed within the managed implementation. There is an unknown number of behavioral problems inherent to the libgdiplus implementation we are using, which will be much more problematic to solve. There will be a long process of understanding these behavioral differences as we go forward. The CI machines have been updated with the new ""libgdiplus"" dependency, so there should be no more blockers for merging this work. @qmfrederik @akoeplinger @marek-safar @stephentoub @stephentoub I'd appreciate any input on the function-loading approach I've taken; it is in the final commit. Fixes https://github.com/dotnet/corefx/issues/20712" +22573 area-System.Net Re-enable some HttpListener tests for UAPAOT Closes #22066 Contributes to #22110 ~~For now, HttpListener tests don't run for[ UAPAOT and UAP mode](https://github.com/dotnet/corefx/pull/22340#discussion_r129180860), but I have tested locally.~~ I have pushed new commit to fix the issue. +22576 area-System.Data "Test: System.Data.SqlClient.ManualTesting.Tests.LocalDBTest/LocalDBNotSupportedOnUapTest failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.ManualTesting.Tests.LocalDBTest/LocalDBNotSupportedOnUapTest` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Data.SqlClient.ManualTesting.Tests.AssemblyResourceManager.TryGetResourceValue() in E:\A\_work\532\s\corefx\src\System.Data.SqlClient\tests\ManualTests\DataCommon\AssemblyResourceManager.cs:line 59 at System.Data.SqlClient.ManualTesting.Tests.AssemblyResourceManager.TryGetMember() in E:\A\_work\532\s\corefx\src\System.Data.SqlClient\tests\ManualTests\DataCommon\AssemblyResourceManager.cs:line 39 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetOIR() at System.InvokeUtils.CalliIntrinsics.Call() at System.InvokeUtils.CallDynamicInvokeMethod() in CallDynamicInvokeMethod:line 16707566 at xunit.console.netcore!+0x1 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Linq.Expressions.Interpreter.ExceptionHelpers.UnwrapAndRethrow() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\Utilities.cs:line 172 at System.Linq.Expressions.Interpreter.ByRefMethodInfoCallInstruction.Run$catch$1() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\CallInstruction.cs:line 450 at System.Linq.Expressions.Interpreter.Interpreter.Run() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\Interpreter.cs:line 61 at System.Linq.Expressions.Interpreter.LightLambda.Run() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\LightLambda.cs:line 417 at System.Linq.Expressions.Interpreter.CallInstruction.InterpretLambdaInvoke() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\CallInstruction.cs:line 289 at System.Linq.Expressions.Interpreter.MethodInfoCallInstruction.Run() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\CallInstruction.cs:line 342 at System.Linq.Expressions.Interpreter.EnterTryCatchFinallyInstruction.Run() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\ControlFlowInstructions.cs:line 345 at System.Linq.Expressions.Interpreter.Interpreter.Run() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\Interpreter.cs:line 61 at System.Linq.Expressions.Interpreter.LightLambda.Run() in E:\A\_work\532\s\corefx\src\System.Linq.Expressions\src\System\Linq\Expressions\Interpreter\LightLambda.cs:line 417 at Newtonsoft.Json.Utilities.MethodCall$2.InvokeObjectArrayThunk() at System.Func$3.Invoke() in Invoke:line 16707566 at System.Data.SqlClient.ManualTesting.Tests.LocalDBTest.LocalDBNotSupportedOnUapTest() in E:\A\_work\532\s\corefx\src\System.Data.SqlClient\tests\ManualTests\SQL\LocalDBTest\LocalDBTest.cs:line 65 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV() at System.InvokeUtils.CalliIntrinsics.Call() at System.InvokeUtils.CallDynamicInvokeMethod() in CallDynamicInvokeMethod:line 16707566 Build : UWP 6.0 - 20170722.02 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Filc~2F/build/20170722.02/workItem/System.Data.SqlClient.ManualTesting.Tests/analysis/xunit/System.Data.SqlClient.ManualTesting.Tests.LocalDBTest~2FLocalDBNotSupportedOnUapTest +22578 area-Infrastructure Core Tests (Master): All work items has fireball on Ubuntu.1610.Amd64-x64 Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170725.01 All work items has fireball on Ubuntu.1610.Amd64-x64 +22579 area-System.Data Add helper function for retrieving SniContext enum names, since SniContext is an internal enum and its name cannot be retrieved via reflection on uapaot. Also changed TdsParser.ProcessSNIError() to always use this helper function, since it will be faster than retrieving the enum name via reflection. Fixes this issue: https://github.com/dotnet/corefx/issues/22542 +22580 area-System.Data Move LocalDBNotSupportedOnUapTest to Functional tests, since it does not require a test server. +22582 area-System.Text "Encoding ""iso-8859-4"" throws encoding not supported exception." "I tried below code on Net standard 2.0, ``` var res = Encoding.GetEncoding( ""iso-8859-4"", new EncoderReplacementFallback(), new DecoderReplacementFallback()); ``` ``` _threw an exception of type 'System.ArgumentException' Data: {System.Collections.ListDictionaryInternal} HResult: -2147024809 HelpLink: null InnerException: null Message: ""'iso-8859-4' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.\r\nParameter name: name"" ParamName: ""name"" Source: ""System.Private.CoreLib"" StackTrace: "" at System.Globalization.EncodingTable.internalGetCodePageFromName(String name)\r\n at System.Globalization.EncodingTable.GetCodePageFromName(String name)\r\n at System.Text.Encoding.GetEncoding(String name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)"" TargetSite: {Int32 internalGetCodePageFromName(System.String)}_ ``` But samething works on .Net framework, class library 4.5.2 Same exception comes for other encoding names, 'iso-8859-2, 'iso-8859-3, till 'iso-8859-9. Only'iso-8859-1 is supported. Please let me know if am missing something with this code." +22583 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandlerTest/PostAsync_CallMethod_EmptyContent failed with ""System.Exception : Operation aborted""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/PostAsync_CallMethod_EmptyContent(remoteServer: http://corefx-net.cloudapp.net/Echo.ashx)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Exception : Operation aborted (Exception from HRESULT: 0x80004004) Stack Trace: at System.Net.Http.HttpClientHandler.d__109.MoveNext$catch$1() in E:\A\_work\643\s\corefx\src\System.Net.Http\src\uap\System\Net\HttpClientHandler.cs:line 604 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable$1.ConfiguredTaskAwaiter.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.HttpClient.d__58.MoveNext$catch$0() in E:\A\_work\643\s\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable$1.ConfiguredTaskAwaiter.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__76.MoveNext() in E:\A\_work\643\s\corefx\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.cs:line 1455 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 119 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable$1.ConfiguredTaskAwaiter.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.HttpHandlerToFilter.d__11.MoveNext$catch$1() in E:\A\_work\643\s\corefx\src\System.Net.Http\src\uap\System\Net\HttpHandlerToFilter.cs:line 70 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable$1.ConfiguredTaskAwaiter.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.HttpClientHandler.d__109.MoveNext() in E:\A\_work\643\s\corefx\src\System.Net.Http\src\uap\System\Net\HttpClientHandler.cs:line 595 Build : Master - 20170725.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170725.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FPostAsync_CallMethod_EmptyContent(remoteServer:%20http:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx) +22587 area-System.Net Linux Sockets: Send/Receive timeouts take too long If you set a timeout and then perform a (synchronous) Send or Receive, it will timeout eventually, but the timeout period is much larger than what was requested -- Send timeout seems to be 3x what was requested, Receive is 2x. If you force the socket into nonblocking mode (e.g. socket.Blocking = false; socket.blocking = true;) then the timeouts are as expected. +22588 area-System.Net Linux Sockets: fix timeout handling by forcing into nonblocking mode Fixes #22587 Currently, we can't reliably support send/receive timeouts because we can't distinguish between an EAGAIN caused by a nonblocking socket, and one caused by a timeout on a synchronous system call. Fix this by forcing us into AsyncContext mode when a timeout is set. This handles the timeout semantics correctly. @stephentoub +22589 area-System.Net Dns.GetHostEntryAsync is faulty on Windows "When calling `Dns.GetHostEntryAsync()` an `AggregateException` is always thrown with information of: > System.AggregateException was unhandled > Source=System.Private.CoreLib > InnerException: > HResult=-2147467259 > Message=Either the application has not called WSAStartup, or WSAStartup failed > NativeErrorCode=10093 > Source=System.Net.NameResolution > StackTrace: > at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) > at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) > at System.Net.Dns.<>c.b__15_1(IAsyncResult asyncResult) > at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) > It seems that the method does not correctly initialize Winsock through `WSAStartup()`. A hacky ""fix"" at this moment is asking for a response from a WebRequest first to ensure that Winsock is initialized: ``` var req = WebRequest.Create(""http://xxxxxx.com""); var res = req.GetResponseAsync().Result; IPHostEntry hostInfo = Dns.GetHostEntryAsync(hostIPAddress).Result; ```" +22591 area-System.Collections Min/Max properties for SortedDictionary The `SortedDictionary` does not provide any way to efficiently access the minimum and maximum key values, despite being built upon `SortedSet`, which provides `Min` and `Max` properties for this purpose. It would be useful if similar properties for accessing the minimum and maximum keys were available for the SortedDictionary, perhaps via similar `Min` and `Max` properties to follow the naming in SortedSet, or via `MinKey`/`MaxKey` to be explicit. +22593 area-System.Net Buffer Overflow Exception in WinHttpHandler "My application has crashed due to the following exception: ERROR_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application. EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application. EXCEPTION_CODE_STR: c0000409 The error was thrown from the following callstack: [InlinedCallFrame: address] Interop+WinHttp.WinHttpSendRequest(SafeWinHttpHandle, System.Text.StringBuilder, UInt32, IntPtr, UInt32, UInt32, IntPtr) [InlinedCallFrame: address] Interop+WinHttp.WinHttpSendRequest(SafeWinHttpHandle, System.Text.StringBuilder, UInt32, IntPtr, UInt32, UInt32, IntPtr) DomainBoundILStubClass.IL_STUB_PInvoke(SafeWinHttpHandle, System.Text.StringBuilder, UInt32, IntPtr, UInt32, UInt32, IntPtr) System.Net.Http.WinHttpHandler.InternalSendRequestAsync(System.Net.Http.WinHttpRequestState) System.Net.Http.WinHttpHandler+d__105.MoveNext() System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[[System.Net.Http.WinHttpHandler+d__105, System.Net.Http.WinHttpHandler]](d__105 ByRef) System.Net.Http.WinHttpHandler.StartRequest(System.Object) Looking at the code for WinHttpHandler.InternalSendRequestAsync: ```cs private RendezvousAwaitable InternalSendRequestAsync(WinHttpRequestState state) { lock (state.Lock) { state.Pin(); if (!Interop.WinHttp.WinHttpSendRequest( state.RequestHandle, null, 0, IntPtr.Zero, 0, 0, state.ToIntPtr())) { int lastError = Marshal.GetLastWin32Error(); Debug.Assert((unchecked((int)lastError) != Interop.WinHttp.ERROR_INSUFFICIENT_BUFFER && unchecked((int)lastError) != unchecked((int)0x80090321)), // SEC_E_BUFFER_TOO_SMALL $""Unexpected async error in WinHttpRequestCallback: {unchecked((int)lastError)}""); // Dispose (which will unpin) the state object. Since this failed, WinHTTP won't associate // our context value (state object) to the request handle. And thus we won't get HANDLE_CLOSING // notifications which would normally cause the state object to be unpinned and disposed. state.Dispose(); throw WinHttpException.CreateExceptionUsingError(lastError); } } return state.LifecycleAwaitable; } ``` So the Debug.Assert makes me thing that this error is not unexpected. Is that true? Can I get some more info on what this error means and how to prevent it? Thanks." +22595 area-System.Net Fix httplistener test project configuration file According to : https://github.com/dotnet/corefx/pull/22340#issuecomment-317673253 +22596 area-System.IO Improve directory deletion stack pressure Recursive directory deletion used particularly large frames and would easily stack overflow with deeply nested directories (especially so when running unoptimized bits). Reduced the stack frame size by passing the native struct used by ref and removing unnecessary throw/catch blocks. Other optimizations and logic clarifications. Made the native struct blittable and introduced a helper struct set for fixed size blittable strings. See #22443 +22597 area-System.Security Unable to construct X509Certificate2 object from byte array on UWP "The WCF team has a test infrastructure which creates new short lived client certificates for each run. In our scenario test code we fetch the bytes for a certificate from our test server and instantiate an X509Certificate2 object to then install in the local user MY certificate store. This works fine on all platforms except UWP where we get a WindowsCryptographicException with the message `Access denied`. This is the code we're trying to run: ```csharp var certificate = new X509Certificate2(certBytes, ""test"", X509KeyStorageFlags.PersistKeySet); ``` It throws the following exception: ```csharp Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException : Access denied Stack Trace: at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags) at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) ``` If I change the constructor to use `X509KeyStorageFlags.EphemeralKeySet | X509KeyStorageFlags.Exportable`, instead I get the same exception but with the message `Bad Data`. An example of the certificate we're using [is here](https://github.com/dotnet/corefx/files/1174392/wcf-client-cert.zip). It's created with bouncy castle as we need to control CRL's for our testing. " +22598 area-System.Drawing System.Drawing.Imaging.Metafile(filename) throws wrong Exception when filename is Null on netcoreapp "The test: ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Ctor_NullString_ThrowsArgumentNullException() { AssertExtensions.Throws(""path"", () => new Metafile((string)null)); } ``` **Expected:** `System.ArgumentNullException` **Actual:** netfx `System.ArgumentNullException` netcoreapp `System.ArgumentException` (#20711)" +22599 area-System.Drawing System.Drawing types lost ISerializable This is showing up in /src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt ``` Compat issues with assembly System.Drawing: CannotRemoveBaseTypeOrInterface : Type 'System.Drawing.Bitmap' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. CannotMakeTypeAbstract : Type 'System.Drawing.BufferedGraphicsManager' is abstract in the implementation but is not abstract in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Drawing.Font' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Drawing.Icon' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Drawing.Image' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Drawing.Imaging.Metafile' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Drawing.Printing.InvalidPrinterException..ctor(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)' does not exist in the implementation but it does exist in the contract. ``` For types we don't support binary serializing, like these, we are implementing the interface but throwing PNSE. This at least allows casting to work. Eg., ```c# private Enumerator(SerializationInfo info, StreamingContext context) { throw new PlatformNotSupportedException(); } void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { throw new PlatformNotSupportedException(); } ``` We should do thes ame for drawing and then msbuild src/shims /p:baselineapicompat=true to remove the errors. +22601 area-Infrastructure "Remove invalid ""BaselineVersion"" entries from PackageIndex.json for packages which are not building." See https://github.com/dotnet/wcf/pull/2097#issuecomment-317825845 +22606 area-Infrastructure Port of https://github.com/dotnet/corefx/pull/22568 to release/2.0.0 Discontinue Ubuntu 16.10 runs in corefx release 2.0.0. +22607 area-System.Net Add IPAddress Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Net.Primitives in corefx - [ ] Expose from System.Net.Primitives contract in corefx - [ ] Add tests to System.Net.Primitives tests in corefx ```C# namespace System.Net { public class IPAddress { public IPAddress(ReadOnlySpan address); public IPAddress(ReadOnlySpan address, long scopeid); public bool TryWriteBytes(Span destination, out int bytesWritten); public static IPAddress Parse(ReadOnlySpan ipChars); public static bool TryParse(ReadOnlySpan ipChars, out IPAddress address); public static bool TryFormat(Span destination, out int charsWritten); … } } ``` +22608 area-System.Net Add Socket Span/Buffer-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [X] Implement/expose/test span-based methods in System.Net.Sockets in corefx - [x] Implement/expose/test buffer-based methods in System.Net.Sockets in corefx ```C# namespace System.Net.Sockets { public class Socket { public int Receive(Span buffer); public int Receive(Span buffer, SocketFlags flags); public int Receive(Span buffer, SocketFlags socketFlags, out SocketError errorCode); public int Send(ReadOnlySpan buffer); public int Send(ReadOnlySpan buffer, SocketFlags flags); public int Send(ReadOnlySpan buffer, SocketFlags flags, out SocketError errorCode); … } public class SocketTaskExtensions { public static ValueTask ReceiveAsync(this Socket socket, Buffer buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default(CancellationToken)); public static ValueTask SendAsync(this Socket socket, ReadOnlyBuffer buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default(CancellationToken)); … } public class SocketAsyncEventArgs { public void SetBuffer(Buffer buffer); public Buffer GetBuffer(); … } } ``` +22610 area-System.Net Add WebSocket Buffer-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Net.WebSockets in corefx - [ ] Expose from System.Net.WebSockets contract in corefx - [ ] Add tests to System.Net.WebSockets tests in corefx ```C# namespace System.Net.WebSockets { public abstract class WebSocket { public virtual ValueTask ReceiveAsync(Buffer buffer, CancellationToken cancellationToken = default(CancellationToken)); public virtual Task SendAsync(ReadOnlyBuffer buffer, CancellationToken cancellationToken = default(CancellationToken)); … } [StructLayout(LayoutKind.Auto)] public struct ValueWebSocketReceiveResult { public ValueWebSocketReceiveResult(int count, WebSocketMessageType messageType, bool endOfMessage); public ValueWebSocketReceiveResult(int count, WebSocketMessageType messageType, bool endOfMessage, WebSocketCloseStatus? closeStatus, string closeStatusDescription); public WebSocketCloseStatus? CloseStatus { get; } public string CloseStatusDescription { get; } public int Count { get; } public bool EndOfMessage { get; } public WebSocketMessageType MessageType { get; } } } ``` +22611 area-System.Net Override new WebSocket.Receive/SendAsync methods on ClientWebSocket Depends on https://github.com/dotnet/corefx/issues/22610 +22612 area-System.Net Add ReadOnlyBufferContent for HttpClient Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement in System.Net.Http in corefx - [x] Expose from System.Net.Http contract in corefx - [x] Add tests to System.Net.Http tests in corefx ```C# namespace System.Net.Http { public sealed class ReadOnlyBufferContent : HttpContent { public ReadOnlyBufferContent(ReadOnlyBuffer buffer); … // override relevant members of HttpContent } } ``` +22613 area-System.Security Add HashAlgorithm Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Security.Cryptography.Primitives in corefx - [ ] Expose from System.Security.Cryptography.Primitives contract in corefx - [ ] Add tests to System.Security.Cryptography.Primitives tests in corefx ```C# namespace System.Security.Cryptography { public abstract class HashAlgorithm { public bool TryComputeHash(ReadOnlySpan source, Span destination, out int bytesWritten); protected virtual void HashCore(ReadOnlySpan source); protected virtual bool TryHashFinal(Span destination, out int bytesWritten); … } } ``` These methods should then be overridden as-is appropriate on the implementations for: - [ ] MD5 - [ ] SHA1 - [ ] SHA256 - [ ] SHA384 - [ ] SHA512 +22614 area-System.Security Add IncrementalHash Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [ ] Implement in System.Security.Cryptography.Algorithms in corefx - [ ] Expose from System.Security.Cryptography.Algorithms contract in corefx - [ ] Add tests to System.Security.Cryptography.Algorithms tests in corefx ```C# namespace System.Security.Cryptography { public sealed class IncrementalHash { public void AppendData(ReadOnlySpan data); public bool TryGetHashAndReset(Span destination, out int bytesWritten); … } } ``` +22615 area-System.Security Add AssymetricAlgorithm Span-based APIs Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes. - [x] Implement/expose/test RSA methods - [x] Implement/expose/test DSA methods - [ ] Implement/expose/test ECDsa methods ```C# namespace System.Security.Cryptography { public abstract class RSA : AsymmetricAlgorithm { public virtual bool TryDecrypt(ReadOnlySpan source, Span destination, RSAEncryptionPadding padding, out int bytesWritten); public virtual bool TryEncrypt(ReadOnlySpan source, Span destination, RSAEncryptionPadding padding, out int bytesWritten); protected virtual bool TryHashData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten); public virtual bool TrySignHash(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten); public virtual bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); public virtual bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); … } public abstract class DSA : AsymmetricAlgorithm { public virtual bool TryCreateSignature(ReadOnlySpan source, Span destination, out int bytesWritten); protected virtual bool TryHashData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm); public virtual bool VerifySignature(ReadOnlySpan rgbHash, ReadOnlySpan rgbSignature); … } public abstract class ECDsa : AsymmetricAlgorithm { protected virtual bool TryHashData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignData(ReadOnlySpan source, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten); public virtual bool TrySignHash(ReadOnlySpan source, Span destination, out int bytesWritten); public virtual bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm); public virtual bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signature); … } } ``` This includes not only adding the virtuals but also providing meaningful and efficient implementations on the internal concrete implementations returned from the various Create methods. +22616 area-System.Runtime Use primitive TryFormat methods in StringBuilder Currently StringBuilder.Append(primitiveType) first does a ToString on that type and then appends the resulting characters. Once https://github.com/dotnet/corefx/issues/22403 is implemented, we should use that support in StringBuilder to avoid the intermediate strings. +22617 area-System.Data Adding unexposed method to public contract I added more unexposed methods, which was implemented already, to public contract. +22618 area-System.Data Fix SqlClient UapAot test failures caused by blocked reflection of internal types Reflection of internal members is blocked in UapAot, so retrieving error messages with SystemDataResourceManager fails. Resource string checking has been skipped in UapAot ManualTests in this change by just using empty strings for the expected error messages (our tests check that the exception contains the expected message, not equals). All the functional DiagnosticTests also use blocked reflection when retrieving runtime PropertyInfo data, so these tests have been disabled on UapAot. Fixes this issue: https://github.com/dotnet/corefx/issues/22560 +22619 area-Microsoft.CSharp Lighten Operators lookup in Microsoft.CSharp * Use array instead of dictionary to store `OPINFO`s. Dictionary indexed by a contiguous integral value may as well be an array, and lookup is faster. * Remove arity parameter to `OPINFO`, that is never used. * Rename `OPKIND` to `OperatorKind` and rename its fields. * Replace `OperatorOfMethodName` and the several calls following with single dictionary lookup. * Expression-body methods +22620 area-Infrastructure Create a docker file for RHEL 6 distro Per @Petermarcu @janvorli As part of the plan to be able to ship .NET Core 2.0 that supports RHEL 6, we need build machines for that distro. This is necessary as RHEL 6 is super ancient w.r.t. the libraries that we depend on. So if we build on RHEL 7, which was our minimum supported distro, the binary will get dependencies on versions of some symbols that are not present on RHEL 6. As a result, to run dotnet core on RHEL 6, it has to be built on RHEL 6, which requires the corresponding docker to be created. RHEL 6 is NOT free, so we should create equivalent CentOS 6 docker instead. We already have CentoOS docker file available, which can be used as the starting point for the CentOS 6 one. +22622 area-System.Net Account for differences in WebSocket minimum buffer sizes between Core and Framework Client.WebSocketOptions.SetBuffer(...) has different validation between the .Net Core and Framework versions. The previous tests assumed that ClientWebSocket.Options.SetBuffer would accept a minimum buffer size of one, which is not the case in the Framework implementation. Unlike .Net core, the Framework expects a minimum size of 16 for the send buffer and 256 for the receive buffer. This meant that tests intended to pass a _valid_ minimum receive buffer size (of 1) and an _invalid_ minimum send buffer size (of 0) would trigger an exception with the wrong message, as the (accidentally) incorrect minimum receive buffer size of 1 failed validation. Additionally, the test would fail because of a slight difference in the name used for the internal buffer, and as such a conditional was added to ensure that the correct name is checked on each version. Fix: #20358 +22624 area-System.Data Failing Debug Assert in TdsParserStateObject.ReadAsyncCallback Fails in SqlClient manual tests when running with Managed SNI in debug mode. https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParserStateObject.cs#L2686 +22625 area-System.Collections Add ImmutableArray Span-based APIs @stephentoub You did not open a tracking issue for this in https://github.com/dotnet/corefx/issues/21281, although from the notes at https://github.com/dotnet/apireviews/pull/40 it seems like this was approved (:tada:). So I took the liberty of moving the proposal here: ```cs namespace System.Collections.Immutable { public struct ImmutableArray { public static implicit operator ReadOnlySpan(ImmutableArray array); } } ``` Since the API seems to have been approved, this is intended to be a tracking issue for work towards implementing it. +22626 area-System.Security HashAlgorithm.Create throws PNSE on .NET Core 2 If you need to call `HashAlgorithm.Create` to create an instance without knowing the concrete type, it throws PNSE on .NET Core 2. Workaround is to call `(HashAlgorithm)CryptoConfig.CreateFromName(string)`, though calling `CryptoConfig` directly is generally discouraged. +22627 area-System.Net Test: System.Net.Tests.HttpWebRequestTest / Timeout_SetTenMillisecondsOnLoopback_ThrowsWebException Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpWebRequestTest/Timeout_SetTenMillisecondsOnLoopback_ThrowsWebException` has failed. Assert.InRange() Failure\r Range: (1 - 15000)\r Actual: 0 Stack Trace: at System.Net.Tests.HttpWebRequestTest.<>c.b__31_0() in E:\A\_work\552\s\corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 294 at Newtonsoft.Json.Utilities.MethodCall$2.Invoke() in Invoke:line 16707566 at System.Net.Test.Common.LoopbackServer.CreateServerAsync() in E:\A\_work\552\s\corefx\src\Common\tests\System\Net\Http\LoopbackServer.cs:line 63 at xunit.console.netcore!+0x1 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Net.Tests.HttpWebRequestTest.d__31.MoveNext() in E:\A\_work\552\s\corefx\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 16707566 at xunit.console.netcore!+0x1 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at xunit.console.netcore!+0x1 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at xunit.console.netcore!+0x1 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : UWP 6.0 - 20170725.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Filc~2F/build/20170725.01/workItem/System.Net.Requests.Tests/analysis/xunit/System.Net.Tests.HttpWebRequestTest~2FTimeout_SetTenMillisecondsOnLoopback_ThrowsWebException +22628 area-Microsoft.CSharp Remove code in Microsoft.CSharp related to extension and external methods * Remove paths for extension methods. Dynamic doesn't support extension methods, except for static-style calls, so `isExtension` is never true. Remove it and all paths that depend on it being true. * Remove error conditions relating to extension methods. Demonstrated unreachable. Contributes to #22470 * Remove MethodSymbol.isExternal Never set to true. Remove it and all paths depending on it. +22629 area-System.Drawing "Test failure: System.Drawing.Tests.FontFamilyTests/Ctor_GenericFamily(genericFamily: SansSerif, expectedName: \""Microsoft Sans Serif\"")" "Opened on behalf of @Jiayili1 The test `System.Drawing.Tests.FontFamilyTests/Ctor_GenericFamily(genericFamily: SansSerif, expectedName: \""Microsoft Sans Serif\"")` has failed. Assert.Equal() Failure\r ? (pos 0)\r Expected: Microsoft Sans Serif\r Actual: Arial\r ? (pos 0) Stack Trace: at System.Drawing.Tests.FontFamilyTests.Ctor_GenericFamily(GenericFontFamilies genericFamily, String expectedName) Build : Master - 20170726.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Release - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Tests.FontFamilyTests~2FCtor_GenericFamily(genericFamily:%20SansSerif,%20expectedName:%20%5C%22Microsoft%20Sans%20Serif%5C%22)" +22630 area-System.Drawing "Test: System.Drawing.Tests.FontFamilyTests/Ctor_Name failed with ""System.ArgumentException""" "Opened on behalf of @Jiayili1 The test `System.Drawing.Tests.FontFamilyTests/Ctor_Name(name: \""Microsoft Sans Serif\"", expectedName: \""Microsoft Sans Serif\"")` has failed. System.ArgumentException : Font 'Microsoft Sans Serif' cannot be found. Stack Trace: at System.Drawing.FontFamily.CreateFontFamily(String name, FontCollection fontCollection) at System.Drawing.Tests.FontFamilyTests.Ctor_Name(String name, String expectedName) Build : Master - 20170726.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Release - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Tests.FontFamilyTests~2FCtor_Name(name:%20%5C%22Microsoft%20Sans%20Serif%5C%22,%20expectedName:%20%5C%22Microsoft%20Sans%20Serif%5C%22)" +22631 area-System.Drawing "Test: System.Drawing.Tests.FontTests/GetHeight_Dpi_ReturnsExpected failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Drawing.Tests.FontTests/GetHeight_Dpi_ReturnsExpected(dpi: -1, expected: -0.1571995)` has failed. Assert.Equal() Failure\r Expected: -0.1572 (rounded from -0.157199501991272)\r Actual: -0.15971 (rounded from -0.159708678722382) Stack Trace: at System.Drawing.Tests.FontTests.GetHeight_Dpi_ReturnsExpected(Single dpi, Single expected) Build : Master - 20170726.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Release - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Tests.FontTests~2FGetHeight_Dpi_ReturnsExpected(dpi:%20-1,%20expected:%20-0.1571995) +22632 area-System.Drawing "Tests under: System.Drawing.Tests.IconTests failed with ""System.ComponentModel.Win32Exception : The specified module could not be found""" "Opened on behalf of @Jiayili1 The test `System.Drawing.Tests.IconTests/Ctor_FilePath_Size(fileName: \""256x256_one_entry_32bit.ico\"", size: {Width=0, Height=0}, expectedSize: {Width=256, Height=256})` has failed. System.ComponentModel.Win32Exception : The specified module could not be found Stack Trace: at System.Drawing.Icon.Initialize(Int32 width, Int32 height) at System.Drawing.Icon..ctor(String fileName, Int32 width, Int32 height) at System.Drawing.Tests.IconTests.Ctor_FilePath_Size(String fileName, Size size, Size expectedSize) Build : Master - 20170726.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Release - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Tests.IconTests~2FCtor_FilePath_Size(fileName:%20%5C%22256x256_one_entry_32bit.ico%5C%22,%20size:%20%7BWidth=0,%20Height=0%7D,%20expectedSize:%20%7BWidth=256,%20Height=256%7D)" +22634 area-System.Drawing "Test: System.Drawing.Tests.IconTests/ToBitmap_PngIconNotSupportedInSwitches_ThrowsArgumentOutOfRangeException failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Drawing.Tests.IconTests/ToBitmap_PngIconNotSupportedInSwitches_ThrowsArgumentOutOfRangeException` has failed. Assert.Equal() Failure\r Expected: 42\r Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Drawing.Tests.IconTests.ToBitmap_PngIconNotSupportedInSwitches_ThrowsArgumentOutOfRangeException() Build : Master - 20170726.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Release - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Tests.IconTests~2FToBitmap_PngIconNotSupportedInSwitches_ThrowsArgumentOutOfRangeException +22635 area-System.Net [Desktop] Test failed: System.Net.WebSockets.Client.Tests.CancelTest / ReceiveAsync_ReceiveThenCancel_ThrowsOperationCanceledException Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.CancelTest/ReceiveAsync_ReceiveThenCancel_ThrowsOperationCanceledException(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. Assert.Throws() Failure\r Expected: typeof(System.OperationCanceledException)\r Actual: typeof(System.InvalidOperationException): This operation is only allowed using a successfully authenticated context. Stack Trace: at System.Net.Security.SslState.CheckThrow(Boolean authSuccessCheck, Boolean shutdownCheck) at System.Net.Security.SslState.get_SecureStream() at System.Net.TlsStream.EndRead(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.WebSocketConnectionStream.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.WebSocketBase.WebSocketOperation.d__19.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.WebSocketBase.d__45.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170726.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64.Core-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170726.01/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Client.Tests.CancelTest~2FReceiveAsync_ReceiveThenCancel_ThrowsOperationCanceledException(server:%20wss:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +22637 area-System.Security API Proposal: Add *Async operations to signing abstract types The abstract types `RSA` and `ECDSA` have synchronous operations for signing, verifying, and in the case of RSA specifically, encryption and decryption. For custom implementations of these types, it would be nice if there were *Async versions of these APIs. For example, an [implementation](https://github.com/onovotny/RSAKeyVaultProvider) that uses Azure Key Vault can do this asynchronously. I would propose these types be virtual, and if no inheritor overrides them, delegates to the synchronous version in the similar fashion that some of the IO Stream types do. Going forward, it would be nice then if the core framework used those asynchronous APIs when possible. This also allows other user implementations to take an `RSA` type and get the benefit of async if the inheritor chooses to implement a real async version. Sample idea: ```csharp public virtual Task SignDataAsync( byte[] data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding ) { return Task.FromResult(this.SignData(data, hashAlgorithm, padding)); } ``` +22638 area-System.Net Cannot get Header value back when it includes special chars. "Just encountered an issue when trying to get azure blob's properties, that it cannot get the property value back when the value string includes special chars like ""<"" or "">"" with following code: ```c# HttpClient client = new HttpClient(); HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Head, ""http://emmahk2.blob.core.windows.net/container1/overwritetest/Program.cs""); httpRequestMessage.Headers.Add(""x-ms-version"", ""2017-04-17""); HttpResponseMessage response = client.SendAsync(httpRequestMessage).Result; response.EnsureSuccessStatusCode(); Console.WriteLine(response.Content.Headers.Contains(""ContentDisposition"")); ``` Value for ""ContentDisposition"" is ""\"". From the response got from fiddler, Azure Storage Server returns the value correctly, while the value is null in `HttpResponseMessage response` of the above codes. I can get the value back with following code: ```c# HttpWebRequest req = WebRequest.CreateHttp(new Uri(""http://emmahk2.blob.core.windows.net/container1/overwritetest/Program.cs"")); req.Method = ""HEAD""; req.Headers[""x-ms-version""] = ""2017-04-17""; var result = req.GetResponseAsync().Result; Console.WriteLine(result.Headers[""Content-Disposition""]); ``` It seems weird that the behavior of `HttpClient `and `HttpWebRequest` is different. Could anyone help to take a look? [EDIT] Add C# syntax highlighting by @karelz" +22640 area-System.Drawing System.Drawing.Imaging.Metafile(filename) throws wrong Exception when filename is not valid on netcoreapp "**Test:** ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Ctor_InvalidPath_ThrowsArgumentException() { string fileNameTooLong = new string('a', 261); AssertExtensions.Throws(null, () => new Metafile(string.Empty)); // fails on netcoreapp AssertExtensions.Throws(null, () => new Metafile(@""fileNo*-//\\#@(found"")); // fails on netcoreapp AssertExtensions.Throws(null, () => new Metafile(fileNameTooLong)); // fails on netcoreapp } ``` Expected: `System.ArgumentException` Actual: netfx `System.ArgumentException` netcoreapp `typeof(System.Runtime.InteropServices.ExternalException): A generic error occurred in GDI+` (#20711) " +22642 area-System.Net "System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest.GetAsync_ServerNeedsAuthAndNoCredential_StatusCodeUnauthorized failed with ""Xunit.Sdk.EqualException""" Failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest.GetAsync_ServerNeedsAuthAndNoCredential_StatusCodeUnauthorized Configuration: OuterLoop_netcoreapp_rhel7.2_debug MESSAGE: ~~~ Assert.Equal() Failure\nExpected: 42\nActual: -117 ~~~ STACK TRACE: ~~~ at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_debug/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs:line 175 at System.Net.Http.Functional.Tests.HttpClientHandlerTest.GetAsync_ServerNeedsAuthAndNoCredential_StatusCodeUnauthorized() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 433 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_rhel7.2_debug/121/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandlerTest/GetAsync_ServerNeedsAuthAndNoCredential_StatusCodeUnauthorized/ +22646 area-System.Text Null ref thrown in System.Text RegEx The user posted an image with issue here: https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/649 @krwq: wrote regex stack trace by hand from the picture for easier grep ``` System.Text.RegularExpressions.Regex.Lookup.LookupCachedAndUpdate(CachedCodeEntryKey key) System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, TimeSpan ... ... (irrelevant) ``` +22647 area-System.Diagnostics Add EventCounter.Dispose() "Today EventCounters have a very simple API. You can Create one, and you can write a metric (floating point value) to one). This works well for 'static' counters (that get created early and live forever), but does not allow for counters that are specific to objects that come and go. For example. There may be a counter for the I/O operations for a request. Thus you would like a counter that gets created when request is received, update, and then destroyed when the request is complete. Adding a Dispose() method on EventCounter allows this. Thus the proposed API change is to add the Dispose method and make EventCounter IDisposeable ```c# public class EventCounter : *IDisposable* { public EventCounter(string name, EventSource eventSource) { } public void WriteMetric(float value) { } *public void Dispose() { }* } ``` I can be used like this ```c# request.ioCounter = new EventCounter(""I/O Operations: "" + request.url, logger); ..... counterForRequest.WriteMetric(ioSize); // Do this at the appropriate point. .... ``` And in the code that cleans up a request request.ioCounter.Dispose(); request.ioCounter =- null; **Dispose is an optional API**. If you don't call it the EventCounter will be cleaned up, but only when the EventSource it is attached to is dead, and this is perfectly fine for many uses.. [EDIT] Code formatting by @karelz" +22648 area-Infrastructure Add quotes for uapaot TargetQueues This should fix official build break https://github.com/dotnet/core-eng/issues/1328. https://github.com/dotnet/corefx/pull/22572/files#diff-c9539d529b27144215b930ab94c59342R215 added a `,` but no quotes, where all other TargetQueues had quotes. This causes msbuild to fail, saying: ``` MSBUILD : error MSB1006: Property is not valid. Switch: Windows.10.Amd64.Core ``` +22654 area-System.IO Add Stream and {Unmanaged}MemoryStream Span-based APIs - Add the new Span-based Read/Write overloads to the refs - Add tests for the new methods Depends on https://github.com/dotnet/coreclr/pull/13058 and https://github.com/dotnet/corert/pull/4231; will fail CI until those are merged and consumed into corefx. (The test changes for UnmanagedMemoryStream look more extensive than they actually are, as I moved some tests between files to enable more easily reusing them for both the span-based and array-based read/write overloads.) Contributes to dotnet/corefx#22381, dotnet/corefx#22388, and dotnet/corefx#22389. cc: @jkotas, @JeremyKuhne, @KrzysztofCwalina +22656 area-System.Drawing Disable System.Drawing tests expected to fail on Server Core "• All the Drawing tests fail. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.03/workItem/System.Drawing.Common.Tests I assume this is because GDI doesn’t exist, like on Nano. Currently these all have [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] Which we should bulk edit now to [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotHeadlessWindows))] after https://github.com/dotnet/corefx/pull/22653/files " +22658 area-Infrastructure Is it possible to package assemblies during build into individual packages i.e. System.Numerics Tried to find code which would allow to pack assemblies in a standard way and in addition each assembly individually - without success. Is it possible or do I have to create additional build code to get it done? I need to get normal build output plus all assemblies packaged each in it's own NuGet package. +22660 area-System.Diagnostics How to get Common System Hardware information across platforms @heartlocker commented on [Mon Jul 24 2017](https://github.com/dotnet/core/issues/769) As the .NET Core project could run on Windows, Linux and Mac OS. Is it possible for me to get the PhysicalMemory size of the running machine on these three OS. Just like in .NET framework, by using `Microsoft.VisualBasic.Devices.ComputerInfo` to get the Physical Memory information of the windows machine --- @Petermarcu commented on [Wed Jul 26 2017](https://github.com/dotnet/core/issues/769#issuecomment-318125530) @AlexGhiondea , should this issue be moved to CoreFX to make an API proposal? --- @AlexGhiondea commented on [Wed Jul 26 2017](https://github.com/dotnet/core/issues/769#issuecomment-318127409) @Petermarcu yes -- I will move it. +22661 area-System.Data Memory overconsumption on SqlClient with MARS I have a simple web api application which connects to SQLServer with MARS enabled. I have noticed that the application consumes a lot of memory and never release any of it. However, when MARS is disabled everything works fine and memory is properly released. Memory increases constantly until it reaches the maximum physical limit, after that it starts writing on swap. The same application works as expected on Windows. Actually on Windows memory consumption goes to **~300MB** and then stops increasing. OS: **ubuntu 16.04** (and on docker) dotnet version: **preview1-final** +22663 area-System.Runtime AssemblyName ctor throws on Core when version number does not have 4 parts - works on full Framework "This code succeeds on Desktop but throws on Core. Can we either make this work, or be more helpful? ``` Unhandled Exception: System.IO.FileLoadException: The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) at System.Reflection.AssemblyName.nInit(RuntimeAssembly& assembly, Boolean forIntrospection, Boolean raiseResolveEvent) at System.Reflection.AssemblyName..ctor(String assemblyName) at ConsoleApp2.Program.Main(String[] args) in C:\dotnet.2\1\Program.cs:line 11 ``` ```c# using System; using System.Reflection; namespace ConsoleApp2 { class Program { static void Main(string[] args) { var assemblyName = new AssemblyName(""asdfasdfa, Version=1.0, Culture=neutral, PublicKeyToken=null""); } } } ``` @morganbr is this expected?" +22664 area-System.IO Use new WinRT APIs for SpecialFolders Starting in master, then I'll port to UWP. +22665 area-Infrastructure Add .NET Framework compat package This meta-package will make it easier for .NET Core developers to add a set of library packages to help them port code from .NET Framework to .NET Core. resolves https://github.com/dotnet/corefx/issues/21664. PTAL @ericstj @Petermarcu @terrajobst +22668 area-System.Data Add helper function for retrieving SniContext enum names, since SniContext is an internal enum and its name cannot be retrieved via reflection on uapaot. (#22579) Porting change to release/UWP6.0 +22669 area-System.Data Port System.Data.DataSetExtensions from desktop to Core "Waiting on feedback for naming conventions -- initial idea to change the port name to System.Data.Extensions since the port removed 2 APIs (AsDataView) /tests has one ""Smoke Test"" currently that validates that the project is ready for tests to be added. I still need to find the existing tests, those will be included soon. Otherwise, looking for any feedback 👍 (Related to #19771)" +22670 area-Infrastructure Identify the set of packages we need to ship for UWP60 Ideally we would only ship the UWP platform package with the UWP6 release and avoid having to ship any of the other library nuget packages. We should do some analysis to see if there are any additional packages that have uwp specific assets in them that we need to ship. If we do have such packages we need to test to make sure they don't have netcoreapp specific assets as well as we need to ensure they still work on .NET Core 2.0. cc @Petermarcu @danmosemsft +22673 area-System.Runtime Expose and test new String(ReadOnlySpan) ctor cc: @jkotas, @KrzysztofCwalina Contributes to https://github.com/dotnet/corefx/issues/22378 Depends on https://github.com/dotnet/coreclr/pull/13075 being merged and consumed into corefx before this PR will pass CI. +22674 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandlerTest/Proxy_BypassFalse_GetRequestGoesThroughCustomProxy failed with ""System.AggregateException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds: NetworkCredential { Domain = \""\"", Password = \""password\"", SecurePassword = Se...` has failed. System.AggregateException : One or more errors occurred. (An error occurred while sending the request.) (An error occurred while sending the request.) (One or more errors occurred. (An error occurred while sending the request.))\r ---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r -------- System.Net.Http.WinHttpException : The handle is invalid\r ---- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r -------- System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response\r ---- System.AggregateException : One or more errors occurred. (An error occurred while sending the request.)\r -------- System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ------------ System.Net.Http.WinHttpException : The server returned an invalid or unrecognized response Stack Trace: at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.Proxy_BypassFalse_GetRequestGoesThroughCustomProxy(ICredentials creds, Boolean wrapCredsInCache) ----- Inner Stack Trace #1 (System.Net.Http.HttpRequestException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.LoopbackGetRequestHttpProxy.d__2.MoveNext() ----- Inner Stack Trace ----- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() at System.Net.Http.WinHttpHandler.SetRequestHandleRedirectionOptions(SafeWinHttpHandle requestHandle) at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) at System.Net.Http.WinHttpHandler.d__105.MoveNext() ----- Inner Stack Trace #2 (System.Net.Http.HttpRequestException) ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ----- Inner Stack Trace #3 (System.AggregateException) ----- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c.b__87_0(Task`1 t) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : 2.0.0 - 20170726.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FProxy_BypassFalse_GetRequestGoesThroughCustomProxy(creds:%20NetworkCredential%20%7B%20Domain%20=%20%5C%22%5C%22,%20Password%20=%20%5C%22password%5C%22,%20SecurePassword%20=%20Se..." +22676 area-System.Net Implement digest authentication for ManagedHandler. "cc @geoffkizer @stephentoub @karelz Implemented following the rules listed in [RFC 7616](https://tools.ietf.org/html/rfc7616). Verified the correctness of the implementation using a third party digest authentication validator [here](http://pernau.at/kd/sipdigest.php). The header field values are set as expected. While performing a real Http scenario test using httpbin, digest authentication returns Unauthorized on .NET Core. Note that this bug reproes even when not using ManagedHandler. Whereas, on full framework the httpbin test with digest auth passes. I'm not sure what's wrong, used the following code to test. @CIPop Is Digest authentication expected to work with .NET Core HttpClient? ```c# using (HttpClientHandler handler = new HttpClientHandler()) { handler.Credentials = new NetworkCredential(""user"", ""passwd""); using (HttpClient client = new HttpClient(handler)) { using (HttpResponseMessage m = client.GetAsync(""http://httpbin.org/digest-auth/auth/user/passwd/MD5"").Result) Console.WriteLine(m.StatusCode); } } ``` Update: 1. Figured out httpbin test failure, httpbin expects the cookie header to also be sent during digest auth to pass digest authentication. By hacking my test to always send a cookie header with the digest auth, passed the httpbin test. This issue is already reported to httpbin, and was closed as by design. https://github.com/kennethreitz/httpbin/issues/124 2. Tested the following scenarios: - qop: auth, algorithm: MD5 - qop: auth-int, algorithm: MD5 - qop: auth, algorithm: MD5-sess - qop: auth-int, algorithm: MD5-sess - qop: auth, algorithm: SHA-256 - qop: auth-int, algorithm: SHA-256 - qop: auth, algorithm: SHA-256-sess - qop: auth-int, algorithm: SHA-256-sess - Multiple requests with same username, password - updates nonce count Pending: 1. Figure out why httpbin test fails - Done. 2. Support Proxy-Authorization header for digest authentication as response to Proxy-Authenticate challenge from server. Stretch scenarios: 1. Support for username* - to be used when userhash=false, and username has reserved characters 2. Parsing Authorization-Info, ProxyAuthorization-Info that the server may send in response to request containing successful Authorization header values. " +22683 area-Microsoft.CSharp Remove pIsMatchingStatic out parameter from AdjustMemberObject If this parameter is ever set to false it is either set to true again before the method returns, or an exception is thrown which is not caught at the caller. Remove it, and all paths for it being false. +22684 area-Microsoft.CSharp Make Expr.Type in Microsoft.CSharp non-virtual. Since those types that compute this do so in a limited number of places and can pre-emptively do so, and since only a small number never set it, the advantage of having the member virtual is low. Conversely, since the property is accessed a very large number of times the advantage of having the getter a simple (hidden) field access which would be fast and more easily inlined, is greater. +22687 area-System.Reflection Expose Assembly.GetForwardedTypes() and add tests. Fix https://github.com/dotnet/corefx/issues/19789 +22688 area-System.Memory Mark System.Memory package as stable for 2.1 cc: @KrzysztofCwalina, @ahsonkhan +22689 area-System.Numerics Add Span-based APIs to BigInteger Adds: ```C# public BigInteger(ReadOnlySpan value); public int GetByteCount(); public static BigInteger Parse(ReadOnlySpan value, NumberStyles style, IFormatProvider provider); public static bool TryParse(ReadOnlySpan value, out BigInteger result, NumberStyles style, IFormatProvider provider); public bool TryWriteBytes(Span destination, out int bytesWritten); ``` Rather than duplicate a lot of logic, existing code paths were changed to use {ReadOnly}Span, with string and array-based overloads targeting them as well. cc: @axelheer, @mellinoe, @bartonjs Fixes https://github.com/dotnet/corefx/issues/22401 +22690 area-System.Security Add RandomNumberGenerator.GetBytes(Span) Currently RandomNumberGenerator provides a GetBytes method that takes a byte[]. We should add one that takes a Span. ```C# namespace System.Security.Cryptography { public abstract class RandomNumberGenerator { public virtual void GetBytes(Span data); ... } } ``` cc: @bartonjs +22691 area-Serialization Area-Serialization Sprint 122 The issue is for tracking issues to be done in sprint 122 (due by 8/17/2017) +22695 area-Microsoft.CSharp Poor wording of error message if first argument to dynamic constructor binding isn't a type. #22333 fixed an issue with Microsoft.CSharp not handling erroneous calls to static methods well (#22331). In doing so it also fixed a similar issue with calls to constructors. Unfortunately the error message added in #22333 specifically refers to static methods. While the two cases could be distinguished, just rewording to cover both cases would probably suffice. +22696 area-Microsoft.CSharp M.CSharp: Improve error handling with CSharpInvokeConstructorBinder * Better message for ctor called by non-type. `TypeArgumentRequiredForStaticCall` can be used for constructor calls as well as static type calls, so reword to cover that case. Fixes #22695 * Refactor `GetTypeForErrorMetaObject` We only need to extract the first item in `args` in one case, so pass the array rather than that first element. Replace `as` used just as test with `is`. In `action is CSharpInvokeConstructorBinder` branch, first argument is guaranteed to be a Type, or there would have been an `ArgumentException` earlier, so no need to guard against it being otherwise. +22697 area-System.Net Random exceptions with System.Net.Http.WinHttpHandler _From @hanabi1224 on July 27, 2017 18:34_ It randomly(at very low chance) throws 'An item with the same key has already been added.' when SendAsync being called, and same issue never happen after removing WinHttpHandler Package version: 4.3.1 .Net version: 4.6.2 OS: Azure guest OS 5-* Http version: 2.0 _Copied from original issue: dotnet/coreclr#13086_ +22700 area-System.Net ManagedHandler: Failing AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection test Discovered while working on PR #22702. The managed handler is not changing/keeping the correct HTTP methods on the various redirect status codes: AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection +22701 area-System.Diagnostics [BLOCKED] Add event counter Dispose() This is associated with issue #22647 I also made some test names clearer. +22702 area-System.Net Fix HttpClient redirection logic on UAP This PR changes the implementation of sending requests in HttpClient for UAP when dealing with redirection. In the past, we would let the WinRT layer handle auto redirection logic. However, due to #9003, the cookies were getting lost on 3xx responses since the .NET layer didn't see them. So, this PR implements the redirection ourselves. One important part of redirection is that we need to drop credentials. The WinRT layer did this for us. However, we are unable to use a single WinRT HttpBaseProtocolFilter object since we need to remove the credential after the first redirect. So, we need to maintain a second filter that uses no credentials and keep it in sync regarding all the other properties of the primary filter. With this PR, the behavior of other aspects (such as controlling max number of redirects, etc.) now matches .NET Framework. So, some tests were adjusted to remove the UAP specific behavior checks. Fixes #9003 Fixes #22191 +22704 area-Infrastructure Update package index Add the latest stable versions Update baseline versions to match the latest stable versions. +22705 area-System.Xml Xml test case disabled on UAP needs to be reenabled on RS4 This is a Windows issue and will likely be fixed on RS4. It is related to frequently changing culture. Converting this test case to use RemoteInvoke is significantly increasing test execution time (from seconds to minutes). ``` at Windows.ApplicationModel.Resources.Core.ResourceContext.get_Languages() at System.Resources.WindowsRuntimeResourceManager.SetGlobalResourceContextDefaultCulture(CultureInfo ci) at System.Globalization.CultureInfo.set_CurrentCulture(CultureInfo value) at System.Xml.Tests.TCFullEndElement.TCWriteValue.writeValue_27(XmlWriterUtils utils, Int32 param, String sourceStr, String destStr, Boolean isValid, Object expVal) ``` _change is still pending in the PR_ +22706 area-System.Runtime Reenable cloning of serializable object for uapaot Fixes https://github.com/dotnet/corefx/issues/18942 Local test verification build is still running. No failures yet. Please do not merge till it's finished. +22707 area-System.Net AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection failing "AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection(statusCode: 300, oldMethod: \""POST\"", newMethod: \""GET\"") PR #22702 and the added tests has exposed that CurlHandler is not changing HTTP method verbs appropriately for certain redirect status codes. Ref: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/2621566904aabc833bf3515748c9c6253f5d37bc/workItem/System.Net.Http.Functional.Tests " +22709 area-System.Data Add MarsConnection cleanup in disposal of TdsParserStateObject when using managed SNI. This prevents connections from accumulating forever in the static SNIMarsManager singleton. Issue would show up when using MARS in managed SNI with Pooling=false. Connectons would keep getting added to the MarsManager, but were never getting removed. Also did some misc cleanup: 1) Removed an unnecessary using in SNIMarsManager 2) Made SNIMarsManager's constructor private, since it's supposed to be a singleton class Fixes: https://github.com/dotnet/corefx/issues/22661 +22710 area-System.Data Force connection pooling in SqlClient manual tests that rely on connection pooling. Started seeing some test failures when doing some ad-hoc manual testing with Pooling=false in my connection string. +22711 area-System.Runtime Add more performance tests for double.ToString() Per https://github.com/dotnet/coreclr/pull/12894#issuecomment-318065901 and https://github.com/dotnet/coreclr/pull/12894#issuecomment-318425886 , we need to add more tests to cover all scenarios of double.ToString(). So that when new implementation of double.ToString() included by CoreFX, we can know the exact performance gain. Current double.ToString() performance tests are not enough: https://github.com/dotnet/corefx/blob/master/src/System.Runtime/tests/Performance/Perf.Double.cs I'm going to add following tests to CoreFX: https://github.com/mazong1123/doubleperftest/blob/master/src/DoubleToStringTest.cs +22713 area-Infrastructure All 2.1.0 branches create Microsoft.NETCore.Platforms with the same fixed version `master`, `release/uwp6.0`, and ~~`release/defaultintf`~~`dev/defaultintf` all produce `Microsoft.NETCore.Platforms 2.1.0-preview1-25324-02`: [build-info/dotnet/corefx/master/Last_Build_Packages.txt#L2](https://github.com/dotnet/versions/blob/356894fb584a6a16010f894f7723176b18166dd9/build-info/dotnet/corefx/master/Last_Build_Packages.txt#L2) [build-info/dotnet/corefx/release/uwp6.0/Last_Build_Packages.txt#L2](https://github.com/dotnet/versions/blob/356894fb584a6a16010f894f7723176b18166dd9/build-info/dotnet/corefx/release/uwp6.0/Last_Build_Packages.txt#L2) [build-info/dotnet/corefx/dev/defaultintf/Last_Build_Packages.txt#L2](https://github.com/dotnet/versions/blob/356894fb584a6a16010f894f7723176b18166dd9/build-info/dotnet/corefx/dev/defaultintf/Last_Build_Packages.txt#L2) This is making publish fail now that the package feed is set to forbid overwrites. (Even if only master were building, this version doesn't seem to correspond to the build and would still cause problems.) It looks like this is because of [Microsoft.NETCore.Platforms.pkgproj#L6](https://github.com/dotnet/corefx/blob/c708a0af2550fc2aa4d246b8160588bda6060cdb/pkg/Microsoft.NETCore.Platforms/Microsoft.NETCore.Platforms.pkgproj#L6) using the `PlatformPackageVersion` from [dependencies.props#L24](https://github.com/dotnet/corefx/blob/c708a0af2550fc2aa4d246b8160588bda6060cdb/dependencies.props#L24), but I don't know the intent behind it. @weshaggard @ericstj ? FYI @joshfree (release/uap6.0 impact) +22714 area-System.Runtime Added more perf tests for double.ToString() Added tests to cover NaN, +inf, -inf, +0.0, -0.0, subnormal and etc. Fix #22711 +22716 area-Infrastructure Dump remote exception better "When a spawned test process throws currently we dump it verbosely to the console, but in the test log, and thus in bug reports, we have useless info: ``` Assert.Equal() Failure Expected: 42 Actual: -532462766 Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() at System.Drawing.Tests.IconTests.ToBitmap_PngIconNotSupportedInSwitches_ThrowsArgumentOutOfRangeException() ``` The number just means ""unhandled exception"" and the stack is not relevant to the failure. It is necessary to navigate through MC to the console output and figure out which callstack in there was the matching one. With this change the test log (and thus bug reports) contain the actual exception. The console is cleaned up also. Example output: ``` Child exception: System.IO.IOException: The data area passed to a system call is too small at System.ConsolePal.get_Title() in C:\git\corefx\src\System.Console\src\System\ConsolePal.Windows.cs:line 6 23 at System.Console.get_Title() in C:\git\corefx\src\System.Console\src\System\Console.cs:line 284 at WindowAndCursorProps.<>c.b__11_0(String lengthOfTitleString) in C:\git\corefx\src\Syst em.Console\tests\WindowAndCursorProps.cs:line 157 Child process: System.Console.Tests, Version=4.1.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb WindowAndCursorProps+ <>c Int32 b__11_0(System.String) Child arguments: 1024 ``` The information is passed using a temp file, rather than redirecting console output, as the latter is reserved for tests to do if they wish." +22719 area-System.Data "System.Data.SqlClient.Tests.AmbientTransactionFailureTest.TestSqlException failed with ""System.InvalidOperationException"" in CI" Failed Test: System.Data.SqlClient.Tests.AmbientTransactionFailureTest.TestSqlException Configuration: outerloop_netcoreapp_rhel7.2_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_rhel7.2_release/122/testReport/System.Data.SqlClient.Tests/AmbientTransactionFailureTest/TestSqlException_connectAction__Action_1___Method___Void___cctor_b__13_0_System_String___Target_____c________connectionString____Data_Source_605a0eb5_7c51_414a_b735_afb0f076140d________/ MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Data.SqlClient.SqlException) Actual: typeof(System.InvalidOperationException): Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. ~~~ STACK TRACE: ~~~ at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_release/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 318 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_release/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionInternal.cs:line 700 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_release/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 1062 at System.Data.SqlClient.SqlConnection.Open() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_release/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 606 at System.Data.SqlClient.Tests.AmbientTransactionFailureTest.<>c.<.cctor>b__13_0(String connectionString) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_rhel7.2_release/src/System.Data.SqlClient/tests/FunctionalTests/AmbientTransactionFailureTest.cs:line 22 ~~~ +22720 area-System.Net WebRequest.DefaultWebProxy: Set doesn't work without a previous Get Unless we do an unnecessary Get() on WebRequest.DefaultWebProxy, any Set() done will not be honored. This is especially a problem on Linux, where DefaultWebProxy throws PlatformNotSupportedException(). This in turn breaks libraries like WindowsAzure.Storage which fail unless the Get() is called first and then WebRequest.DefaultWebProxy is set to null. This fix avoids the unnecessary Get() by setting the already initialized flag sent to the LazyInitializer. @davidsh +22721 area-Infrastructure The release/1.1.0 branch produces old stable-versioned Compression packages 4.3.0 versions of `runtime.[non-windows].runtime.native.System.IO.Compression` are being produced and pushed to MyGet dotnet-core. ([build-info/dotnet/corefx/release/1.1.0/Latest_Packages.txt](https://github.com/dotnet/versions/blob/9ad683d7d73031d00f0d2a60d9ebc1feea57781f/build-info/dotnet/corefx/release/1.1.0/Latest_Packages.txt)) This is now causing build failures because overwriting is disabled on the MyGet feed. Right now, `runtime.debian.8-x64.runtime.native.system.io.compression.4.3.0.nupkg` has different contents on the NuGet gallery vs. the MyGet dev feed. I think the package version upgrade was missed when enabling these packages to build during servicing. @weshaggard @ericstj +22722 area-Microsoft.CSharp Remove BoundLambdaType from Microsoft.CSharp A dead type that is never used (methods aren't really anonymous in running code). Also remove the orphaned `TypeKind` values for `UnboundLambdaType` and `NaturalIntegerType`, as well as that for `BoundLambdaType`. +22723 area-System.Drawing System.Drawing.Imaging.Metafile(filename, referenceHdc) throws wrong Exception when filename is not valid on netcoreapp "**Test Invalid path:** ```c# [ConditionalTheory(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] [InlineData(@""fileNo*-//\\#@(found"")] [InlineData("""")] public void Ctor_InvalidPathI_ThrowsArgumentException(string fileName) { using (var bufferGraphics = Graphics.FromHwndInternal(IntPtr.Zero)) { IntPtr referenceHdc = bufferGraphics.GetHdc(); AssertExtensions.Throws(null, () => new Metafile(fileName, referenceHdc)); AssertExtensions.Throws(null, () => new Metafile(fileName, referenceHdc, EmfType.EmfOnly)); AssertExtensions.Throws(null, () => new Metafile(fileName, referenceHdc, EmfType.EmfOnly, ""description"")); } } ``` **Expected:** `System.ArgumentException` **Actual:** netfx `System.ArgumentException` netcoreapp `typeof(System.Runtime.InteropServices.ExternalException): A generic error occurred in GDI+.` **Test Path Too Long:** ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Ctor_PathTooLong_ThrowsPathTooLongException() { string fileName = Helpers.GetTestBitmapPath(new string('a', 261)); using (var bufferGraphics = Graphics.FromHwndInternal(IntPtr.Zero)) { IntPtr referenceHdc = bufferGraphics.GetHdc(); Assert.Throws(() => new Metafile(fileName, referenceHdc)); Assert.Throws(() => new Metafile(fileName, referenceHdc, EmfType.EmfOnly)); Assert.Throws(() => new Metafile(fileName, referenceHdc, EmfType.EmfOnly, ""description"")); } DeleteFile(fileName); } ``` **Expected:** `System.IO.PathTooLongException` **Actual:** netfx `System.IO.PathTooLongException` netcoreapp `typeof(System.Runtime.InteropServices.ExternalException): A generic error occurred in GDI+.` **Test Null Path:** ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Ctor_NullPath_ThrowsArgumentNullException() { using (var bufferGraphics = Graphics.FromHwndInternal(IntPtr.Zero)) { IntPtr referenceHdc = bufferGraphics.GetHdc(); AssertExtensions.Throws(""path"", () => new Metafile((string)null, referenceHdc)); AssertExtensions.Throws(""path"", () => new Metafile((string)null, referenceHdc, EmfType.EmfOnly)); AssertExtensions.Throws(""path"", () => new Metafile((string)null, referenceHdc, EmfType.EmfOnly, ""description"")); } } ``` **Expected:** `System.ArgumentNullException` **Actual:** netfx `System.ArgumentNullException` netcoreapp `System.ArgumentException` (#20711)" +22724 area-System.Collections ConcurrentQueue 128-byte cache line +22725 area-System.Data Cannot connect to SQL Server from UWP: HResult=0x80131904 "When trying to connect to SQL from UWP I get an exception. Same code works from a console. Tried local database and 1 in azure. System.Data.SqlClient.SqlException occurred HResult=0x80131904 Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) Source=Core .Net SqlClient Data Provider StackTrace: at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at SQLTest.MainPage..ctor() in C:\Users\mahoekst\source\repos\SQLTest\SQLTest\MainPage.xaml.cs:line 34 at SQLTest.SQLTest_XamlTypeInfo.XamlTypeInfoProvider.Activate_0_MainPage() in C:\Users\mahoekst\source\repos\SQLTest\SQLTest\obj\x86\Debug\XamlTypeInfo.g.cs:line 226 at SQLTest.SQLTest_XamlTypeInfo.XamlUserType.ActivateInstance() in C:\Users\mahoekst\source\repos\SQLTest\SQLTest\obj\x86\Debug\XamlTypeInfo.g.cs:line 382 Inner Exception 1: TypeLoadException: Could not load type 'System.Runtime.CompilerServices.IAsyncStateMachine' from assembly 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. This is the code: ~~~~ using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = ""Server=tcp:XXXX.database.windows.net,1433;Initial Catalog=AdventureWorks;Persist Security Info=False;User ID=XXXX;Password=XXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;""; conn.Open(); SqlCommand command = new SqlCommand(""SELECT * FROM SalesLT.Customer"", conn); using (SqlDataReader reader = command.ExecuteReader()) { Console.WriteLine(""FirstColumn\tSecond Column\t\tThird Column\t\tForth Column\t""); while (reader.Read()) { Console.WriteLine(String.Format(""{0} \t | {1} \t | {2} \t | {3}"", reader[0], reader[1], reader[2], reader[3])); } } Console.WriteLine(""Data displayed!""); } Console.ReadLine(); ~~~~ VS version: Version 15.4.0 Preview 1.0 [30319.200.d15prstg3] UWP: 6.0.0-preview2-25512-03 or 6.0.0-preview2-25527-02 System.Data.SqlClient: 4.5.0-preview2-25527-02 " +22726 area-Infrastructure Revert PackageBaseline 1.0.0 stabilization Always produce a prerelease to represent versions produced in the latest servicing build. Without this change, release/1.0.0 always produces 1.0.0, which makes the official build fail when MyGet feed overwrites are disabled. +22728 area-System.Data Adding SqlConnectionStringBuilder.Enlist to public method contract (#22566) This PR is for merging the change to release/uwp6.0 branch. *** Original PR: https://github.com/dotnet/corefx/pull/22566 I added `SqlConnectionStringBuilder.Enlist` to public method contract, and also add more unit tests for `SqlConnectionStringBuilder.Enlist` +22735 area-System.Net HttpClient test SendAsync_RequestVersion20_ResponseVersion20 fails See discussion in PR #22702: Outerloop tests for .NET Core and UWP are failing on this test: https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_true_prtest/16/ >SendAsync_RequestVersion20_ResponseVersion20(server: https://www.microsoft.com/) It looks like the www.microsoft.com server is not using HTTP/2.0 protocol today. Our tests assume that this server always uses HTTP/2 protocol. Don't know if this is temporary problem. We might need to switch to a different HTTP/2 test server. I also confirmed using the Chrome browser that www.microsoft.com is not using HTTP/2. +22737 area-System.Net Enabling HttpClient EKU tests. For UWP, the tests require both the Root as well as all the client certificates to be correctly installed. These tests require client side prerequisites and cannot be executed in CI at this time. Fixes #21738 +22741 area-System.Drawing System.Drawing.Imaging.Metafile(Stream) throws wrong Exception when Stream is Null on netcoreapp "**Test Null Stream:** ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Ctor_NullStream_ThrowsArgumentException() { AssertExtensions.Throws(null, () => new Metafile((Stream)null)); } ``` Expected: `System.ArgumentException` Actual: netfx `System.ArgumentException` netcoreapp `System.ArgumentNullException` **Edit** Forgot to reference related issue (#20711) " +22744 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest/SendAsync_RequestVersion20_ResponseVersion20(server: https://www.microsoft.com/) Opened on behalf of @joshfree The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/SendAsync_RequestVersion20_ResponseVersion20(server: https://www.microsoft.com/)` has failed. Assert.Equal() Failure\r Expected: 2.0\r Actual: 1.1 Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__91.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : UWP 6.0 - 20170729.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Windows.10.Arm64-arm - Release - Debug - Windows.10.Amd64.ClientRS3-x64 - Release +22745 area-System.IO Test failure: System.IO.Tests.Perf_FileStream/Write(useAsync: False, bufferSize: 1, totalSize: 200000) Opened on behalf of @joshfree The test `System.IO.Tests.Perf_FileStream/Write(useAsync: False, bufferSize: 1, totalSize: 200000)` has failed. System.UnauthorizedAccessException : Access to the path 'C:\\Users\\DotNetTestRunner\\AppData\\Local\\Packages\\5cd54353-3ed7-4a6e-a72f-db349f28867c_v52bfwc2c21ha\\AC\\Temp\\Perf_FileStream_bnuz2qjb.aqh\\Write_104_e160e71a' is denied. Stack Trace: at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.Tests.Perf_FileStream.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Xunit.Performance.BenchmarkTestInvoker.<>c__DisplayClass1_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Xunit.Performance.Internal.BenchmarkIterator.d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : UWP 6.0 - 20170729.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Debug +22746 area-System.Net Test failure: System.Net.WebSockets.Client.Tests.KeepAliveTest/KeepAlive_LongDelayBetweenSendReceives_Succeeds Opened on behalf of @joshfree The test `System.Net.WebSockets.Client.Tests.KeepAliveTest/KeepAlive_LongDelayBetweenSendReceives_Succeeds` has failed. System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseSent, CloseReceived, Closed' Stack Trace: at System.Net.WebSockets.WinRTWebSocket.CheckValidState() in E:\A\_work\779\s\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinRTWebSocket.cs:line 547 at System.Net.WebSockets.WinRTWebSocket.InterlockedCheckValidStates() in E:\A\_work\779\s\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinRTWebSocket.cs:line 490 at System.Net.WebSockets.WinRTWebSocket.d__43.MoveNext() in E:\A\_work\779\s\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinRTWebSocket.cs:line 343 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.TaskAwaiter$1.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.WebSockets.Client.Tests.KeepAliveTest.d__1.MoveNext() in E:\A\_work\779\s\corefx\src\System.Net.WebSockets.Client\tests\KeepAliveTest.cs:line 30 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : UWP 6.0 - 20170729.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release +22747 area-System.Drawing System.Drawing.Imaging.Metafile.GetMetafileHeader(String) throws wrong Exception when String is not valid path on netcoreapp "**Test Path Too Long:** ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Static_GetMetafileHeader_PathTooLong_ThrowsPathTooLongException() { Assert.Throws(() => Metafile.GetMetafileHeader(GetPath(new string('a', 261)))); } ``` **Expected**: `System.IO.PathTooLongException` **Actual:** netfx `System.IO.PathTooLongException` netcoreapp `System.ArgumentException` **Test Null path:** ```c# [ConditionalFact(nameof(PlatformDetection) + ""."" + nameof(PlatformDetection.IsNotWindowsNanoServer))] public void Static_GetMetafileHeader_NullString_ThrowsArgumentNullException() { AssertExtensions.Throws(""path"", () => Metafile.GetMetafileHeader((string)null)); } ``` **Expected**: `System.ArgumentNullException` **Actual:** netfx `System.ArgumentNullException` netcoreapp `System.ArgumentException` (#20711)" +22748 area-Microsoft.CSharp Refactor Microsoft.CSharp's error handling. Reduces a lot of complexity inherited from the static compiler, particularly to enable different approaches to error reporting (nothing but throwing an exception makes sense in a dynamic context) or report multiple errors (again, not meaningful with dynamic binding) and report on source code positions. Removes some errors that in static compilation could be reported after another error, but hence can't for dynamic; contributes to #22470 +22749 area-Microsoft.CSharp Apply FlagsAttribute to internal flag enums in Microsoft.CSharp +22750 area-System.Data Increase code coverage from 74.9% to 77.8% on System.Data.Common.DataColumnMappingCollection Hi, Here are a couple more tests for the class. If you have any questions or comments, please let me know. Thanks, Michael +22753 area-System.Drawing Adding System.Drawing.Common.Imaging Metafile tests. (#20711) Adding System.Drawing.Common.Imaging.Metafile tests. (#20711) +22754 area-Microsoft.CSharp Remove unnecessary predefined types from Microsoft.CSharp Any that aren't looked up by the `PredefinedType` enum don't offer any benefits. +22755 area-System.Text TextEncoder misses last BMP character after surrogate pair "**Version:** 2.0.0-preview2-final ```C# string url = System.Text.Encodings.Web.UrlEncoder.Default.Encode(""𐌺X""); string html = System.Text.Encodings.Web.HtmlEncoder.Default.Encode(""𐌺X""); string js = System.Text.Encodings.Web.JavaScriptEncoder.Default.Encode(""𐌺X""); ``` **Expected:** ``` url = ""%F0%90%8C%BAX"" html = ""𐌺X"" js = ""\uD800\uDF3AX"" ``` **Actual:** ``` url = ""%F0%90%8C%BA"" html = ""𐌺"" js = ""\uD800\uDF3A"" ```" +22756 area-Microsoft.CSharp Remove redundancy from ExprZeroInit in MicrosoftCSharp * Remove `ExprZeroInit.IsConstructor` Only ever false (in static code this could be e.g. `new int()` or similar for any value type without an explicit nullary ctor, but in dynamic code we won't see that as different to any other way to get the default as we're receiving the result of that). * Remove `ExprZeroInit.OptionalConstructorCall` Only ever null * Remove `ExprZeroInit.OptionalArgument` Only ever null. * Don't create `ExprClass` for `CreateZeroInit` only to discard it. Create only if it's used. * Remove unreachable branch. We're in a branch for `type.fundType()` being `FT_PTR` and comparing that with something that will always be `FT_REF`, so that branch is unreachable. * Remove error branch in `CreateZeroInit` Could only happen if called with a type like void that doesn't have a fundamental type, but no callsite attempts this. Add appropriate assertion in this regard. +22759 area-System.Net [release/uwp6.0] Fix HttpClient redirection logic on UAP (#22702) Port #22702 from master to release/uwp6.0 Fix HttpClient redirection logic on UAP This PR changes the implementation of sending requests in HttpClient for UAP when dealing with redirection. In the past, we would let the WinRT layer handle auto redirection logic. However, due to #9003, the cookies were getting lost on 3xx responses since the .NET layer didn't see them. So, this PR implements the redirection ourselves. One important part of redirection is that we need to drop credentials. The WinRT layer did this for us. However, we are unable to use a single WinRT HttpBaseProtocolFilter object since we need to remove the credential after the first redirect. So, we need to maintain a second filter that uses no credentials and keep it in sync regarding all the other properties of the primary filter. With this PR, the behavior of other aspects (such as controlling max number of redirects, etc.) now matches .NET Framework. So, some tests were adjusted to remove the UAP specific behavior checks. Fixes #9003 Fixes #22191 +22760 area-Microsoft.CSharp Simplify symbol factory in Microsoft.CSharp down to a single type. * Remove `MiscSymFactory`, moving functionality into `SymFactory` No benefit to the split. * Remove `SymFactoryBase` Only has one derived type, so move its functionality into that. * Rename some locals and members local to `SymFactory` +22761 area-Microsoft.CSharp Refactor init methods into ctors in Microsoft.CSharp Move `BSYMMGR` init methods into ctor Move `TypeManager` init method into ctor Remove no-op calls to `TypeManager.InitType` +22762 area-Microsoft.CSharp Tidy some nullable-handling in Microsoft.CSharp * Remove paths for `Nullable` not having `Value` property or ctor Will only fail if `Nullable` is so broken that we can't run anyway. * Fix `NullableType.GetAts` calls Remove unused parameter, move all implementation into check for memoised result, and remove paths for it returning null, which can't happen. * Remove unnecessary looping to cast `T??` +22763 area-System.Text Fix last character check in TextEncoder.EncodeIntoBuffer Fixes #22755 +22764 area-System.Net Socket.BeginAccept does not allow socket reuse If you call socket.Disconnect(true) and then try to BeginAccept into that socket, you get InvalidOperationException. If you use SocketAsyncEventArgs to do the Accept, it succeeds. This is Windows-only and not a common scenario at all, but I found it while adding tests so I thought we should at least track it. +22765 area-System.Net Linux sockets: async connect on already connected socket does not throw If you do a ConnectAsync on an already connected socket, no exception is thrown. Synchronous Connect correctly throws a SocketException with errorcode SocketError.IsConnected. +22766 area-System.Net refactor some Socket test code into SocketTestHelper, and modify some existing tests to use this Refactor the existing logic in SendReceive.cs for abstracting across sync/APM/Task/etc and generalize it. Also, update existing Accept and Connect tests to use this. Some existing Accept/Connect tests that are specific to SocketAsyncEventArgs are moved to SocketAsyncEventArgsTests.cs. PR is split into two commits: first has all the changes, second is just file renaming/reorganization. @stephentoub @davidsh @CIPop @Priya91 @wfurt +22767 area-Microsoft.CSharp Microsoft.CSharp does not validate binding arguments well. Say for example we have a binder from: ```C# BinaryOperationBinder binder = Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation( CSharpBinderFlags.None, ExpressionType.Add, GetType(), new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null), CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)} ) as BinaryOperationBinder; ``` Then if called with: ```C# binder.FallbackBinaryOperation(null, null); ``` We get a `NullReferenceException` rather than an `ArgumentNullException`, and if called with: ```C# binder.FallbackBinaryOperation( new DynamicMetaObject(Expression.Parameter(typeof(object)), BindingRestrictions.Empty), new DynamicMetaObject(Expression.Parameter(typeof(object)), BindingRestrictions.Empty)) ``` We get a `RuntimeBinderInternalCompilerException` rather than an `ArgumentException` or any other exception that reflects the issue. In a debug build, an assertion fails. +22768 area-Microsoft.CSharp Validate arguments to Bind in Microsoft.CSharp Fixes #22767 +22770 area-Microsoft.CSharp Remove OpenTypePlaceholderType from Microsoft.CSharp Not part of the type of any value, the instance of this type is only used in a branch that depends on first encountering an instance of this type, and so never used. +22771 area-System.Runtime String.IndexOfAny is slower than hand-written naive implementation on x86 See: https://github.com/NuGet/NuGet.Client/pull/1590#discussion_r130262373 and https://github.com/aspnet/Mvc/issues/5362. On short strings and only two char arrays, `String.IndexOfAny` is significantly slower than a hard-coded version, and on x86 (non-RyuJIT) even slower than a hand-written naive implementation where there is no matches. Method | Job | Jit | Platform | Input | Mean | Error | StdDev | Scaled | ScaledSD |Faster? ------------------------------------------ |------------- |---------- |--------- |------------------------- |-----------:|------------:|------------:|-------:|---------:|:---:| IndexOfAny_Baseline | LegacyJitX64 | LegacyJit | X64 | This is a short string. | 3,690.3 us | 43.6378 us | 36.4396 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | LegacyJitX64 | LegacyJit | X64 | This is a short string. | 2,276.0 us | 27.5134 us | 25.7360 us | 0.62 | 0.01 |✓ IndexOfAny_HandWrittenLoop | LegacyJitX64 | LegacyJit | X64 | This is a short string. | 6,550.1 us | 123.8535 us | 96.6966 us | 1.78 | 0.03 | IndexOfAny_Baseline | LegacyJitX86 | LegacyJit | X86 | This is a short string. | 6,552.9 us | 65.9870 us | 61.7243 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | LegacyJitX86 | LegacyJit | X86 | This is a short string. | 2,314.6 us | 48.8886 us | 71.6603 us | 0.35 | 0.01 |✓ IndexOfAny_HandWrittenLoop | LegacyJitX86 | LegacyJit | X86 | This is a short string. | 5,143.8 us | 51.0904 us | 47.7900 us | 0.79 | 0.01 |✓ IndexOfAny_Baseline | RyuJitX64 | RyuJit | X64 | This is a short string. | 3,666.7 us | 61.5387 us | 57.5634 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | RyuJitX64 | RyuJit | X64 | This is a short string. | 2,400.2 us | 22.9174 us | 21.4370 us | 0.65 | 0.01 |✓ IndexOfAny_HandWrittenLoop | RyuJitX64 | RyuJit | X64 | This is a short string. | 6,126.5 us | 118.1990 us | 116.0872 us | 1.67 | 0.04 | IndexOfAny_Baseline | LegacyJitX64 | LegacyJit | X64 | /This is a short string. | 1,196.7 us | 8.0287 us | 7.1172 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | LegacyJitX64 | LegacyJit | X64 | /This is a short string. | 206.3 us | 1.3898 us | 1.3000 us | 0.17 | 0.00 |✓ IndexOfAny_HandWrittenLoop | LegacyJitX64 | LegacyJit | X64 | /This is a short string. | 464.2 us | 8.2176 us | 7.2847 us | 0.39 | 0.01 |✓ IndexOfAny_Baseline | LegacyJitX86 | LegacyJit | X86 | /This is a short string. | 1,668.2 us | 11.5627 us | 10.8158 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | LegacyJitX86 | LegacyJit | X86 | /This is a short string. | 233.1 us | 0.7199 us | 0.6734 us | 0.14 | 0.00 |✓ IndexOfAny_HandWrittenLoop | LegacyJitX86 | LegacyJit | X86 | /This is a short string. | 350.4 us | 1.5306 us | 1.3568 us | 0.21 | 0.00 |✓ IndexOfAny_Baseline | RyuJitX64 | RyuJit | X64 | /This is a short string. | 1,344.7 us | 35.3044 us | 49.4918 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | RyuJitX64 | RyuJit | X64 | /This is a short string. | 236.6 us | 1.6766 us | 1.4001 us | 0.18 | 0.01 |✓ IndexOfAny_HandWrittenLoop | RyuJitX64 | RyuJit | X64 | /This is a short string. | 384.6 us | 5.8540 us | 5.1894 us | 0.29 | 0.01 |✓ IndexOfAny_Baseline | LegacyJitX64 | LegacyJit | X64 | This is a/short string. | 2,074.6 us | 14.7860 us | 13.1074 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | LegacyJitX64 | LegacyJit | X64 | This is a/short string. | 920.1 us | 14.5393 us | 12.1410 us | 0.44 | 0.01 |✓ IndexOfAny_HandWrittenLoop | LegacyJitX64 | LegacyJit | X64 | This is a/short string. | 3,059.0 us | 26.8631 us | 20.9729 us | 1.47 | 0.01 | IndexOfAny_Baseline | LegacyJitX86 | LegacyJit | X86 | This is a/short string. | 3,821.6 us | 22.9191 us | 20.3171 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | LegacyJitX86 | LegacyJit | X86 | This is a/short string. | 1,256.0 us | 7.6582 us | 7.1635 us | 0.33 | 0.00 |✓ IndexOfAny_HandWrittenLoop | LegacyJitX86 | LegacyJit | X86 | This is a/short string. | 3,824.8 us | 36.8087 us | 34.4309 us | 1.00 | 0.01 | IndexOfAny_Baseline | RyuJitX64 | RyuJit | X64 | This is a/short string. | 2,096.2 us | 15.8659 us | 14.8410 us | 1.00 | 0.00 | IndexOfAny_HandWrittenLoop_HardcodedChars | RyuJitX64 | RyuJit | X64 | This is a/short string. | 1,045.3 us | 12.6123 us | 11.7975 us | 0.50 | 0.01 |✓ IndexOfAny_HandWrittenLoop | RyuJitX64 | RyuJit | X64 | This is a/short string. | 3,116.7 us | 62.2240 us | 103.9623 us | 1.49 | 0.05 | ``` C# [MethodImpl(MethodImplOptions.NoInlining)] public static int IndexOfAny(string value, char[] array) { return value.IndexOfAny(array); } [MethodImpl(MethodImplOptions.NoInlining)] public static int IndexOfAny_HandWrittenLoop_HardcodedChars(string value) { for (int i = 0; i < value.Length; i++) { char c = value[i]; if (c == '/' || c == '\\') { return i; } } return -1; } [MethodImpl(MethodImplOptions.NoInlining)] public static int IndexOfAny_HandWrittenLoop(string value, char[] array) { if (array.Length == 0) return 0; for (int i = 0; i < value.Length; i++) { char c = value[i]; foreach (var ch in array) { if (c == ch) return i; } } return -1; } ``` Benchmark is here (using BenchmarkDotNet): https://gist.github.com/davkean/dab5c068e3f907709f57a757a7e7fb3a. @benaadams Seems to think that the code [creates a probabilistic map](https://github.com/dotnet/coreclr/blob/master/src/classlibnative/bcltype/stringnative.cpp#L480-L532) is over kill for a two char array. **Updated:** Add a few more test cases, and updated handwritten loop to handle empty chars. +22773 area-System.Runtime "Cleanup test workaround for: System.Reflection.Tests.AssemblyNetCoreAppTests/AssemblyGetForwardedTypes failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Reflection.Tests.AssemblyNetCoreAppTests/AssemblyGetForwardedTypes` has failed. Assert.Equal() Failure\r Expected: Type[] [typeof(string), typeof(TypeInForwardedAssembly), typeof(TypeInForwardedAssembly+PublicInner), typeof(TypeInForwardedAssembly+PublicInner+PublicInnerInner)]\r Actual: Type[] [typeof(TypeInForwardedAssembly), typeof(TypeInForwardedAssembly+PublicInner), typeof(TypeInForwardedAssembly+PublicInner+PublicInnerInner)] Stack Trace: at System.Reflection.Tests.AssemblyNetCoreAppTests.AssemblyGetForwardedTypes() in E:\A\_work\435\s\corefx\src\System.Runtime\tests\System\Reflection\AssemblyTests.netcoreapp.cs:line 30 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV() at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2c at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x124 Build : Master - 20170731.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170731.01/workItem/System.Runtime.Tests/analysis/xunit/System.Reflection.Tests.AssemblyNetCoreAppTests~2FAssemblyGetForwardedTypes +22775 area-Infrastructure Roslyn Error MSB3883: Unexpected exception: when build is run "Hi, Im having problems building corefx, using build-managed. When the ..\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5) file is loaded, a series of ""System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified"" are thrown. Each of the files reported missing are present and the VS command-prompt is run with Administrator privileges. See below for csc command and output. Enviroment is: OS: Win 10 Pro 10.0.14393 Build 14393 VS: 15.2 (26430.16) Release Visual C# Compiler version 2.2.0.61624 Thanks Brian 24>CoreCompile: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /warn:4 /define:DEBUG;TRACE;DEBUGRESOURCES;SIGNED /reference:""D:\Development\C#\Forked\corefx\bin/ref/netstandard/netstandard.dll"" /debug+ /debug:full /delaysign+ /keyfile:""D:\Development\C#\Forked\corefx\Tools/MSFT.snk"" /optimize- /out:""D:\Development\C#\Forked\corefx\bin/obj/ref/Microsoft.VisualBasic/10.0.0.0/netstandard/Microsoft.VisualBasic.dll"" /ruleset:""D:\Development\C#\Forked\corefx\CodeAnalysis.ruleset"" /target:library /warnaserror+ /utf8output /analyzer:""D:\Development\C#\Forked\corefx\Tools/net46/analyzers/Microsoft.DotNet.CodeAnalysis.dll"" Microsoft.VisualBasic.cs ""D:\Development\C#\Forked\corefx\bin/obj/ref/Microsoft.VisualBasic/10.0.0.0/netstandard/_AssemblyInfo.cs"" ""D:\Development\C#\Forked\corefx\Tools\/BlockReflectionAttribute.cs"" @""D:\Development\C#\Forked\corefx\Tools\checksum.rsp"" Using shared compilation with compiler from directory: D:\Development 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error MSB3883: Unexpected exception: [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 23>CoreCompile: Using shared compilation with compiler from directory: D:\Development 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error : System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error : at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error : at System.Diagnostics.Process.Start() [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error : at Microsoft.Build.Utilities.ToolTask.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error : at Microsoft.CodeAnalysis.BuildTasks.ManagedCompiler.HandleResponse(BuildResponse response, String pathToTool, String responseFileCommands, String commandLineCommands) [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 24>D:\Development\C#\Forked\corefx\Tools\net46\roslyn\tools\Microsoft.CSharp.Core.targets(72,5): error : at Microsoft.CodeAnalysis.BuildTasks.ManagedCompiler.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj] 24>Done Building Project ""D:\Development\C#\Forked\corefx\src\Microsoft.VisualBasic\ref\Microsoft.VisualBasic.csproj"" (Build target(s)) -- FAILED. " +22776 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes_FailedInuapaot_IncludeDataSet failed when targeting uapaot This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes , it was failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class include **DataSet** will fail when serialization. **Error Message** : System.Runtime.Serialization.InvalidDataContractException : Type 'System.Data.DataSet' does not have a static method 'GetDataSetSchema' that takes a parameter of type 'System.Xml.Schema.XmlSchemaSet' as specified by the XmlSchemaProviderAttribute attribute. +22777 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes_FailedInuapaot_InheritedFromIList failed when targeting uapaot This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes , it failed when **targeting `uapaot `**, so we move these scenarios into a new case. **Detail** : the class in these scenarios inherit from **IList** will fail when serialization. **Error Message** : System.Runtime.Serialization.InvalidDataContractException : Collection type 'SerializationTestTypes.SampleListTExplicitWithoutDC' does not have a valid Add method. **Note** : I checked the test classes they already implement interface explicitly and have a method named **`ICollection<..>.Add`**. +22778 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes_FailedInuapaot_InheritedFromIList_CanPassInReflectionOnly failed when targeting uapaot This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes , it failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class in these scenarios inherit from **IList** will fail when serialization, but it can pass in project ReflectionOnly. **Error Message** : System.Runtime.Serialization.InvalidDataContractException : Collection type 'SerializationTestTypes.SampleListExplicitWithoutDC' does not have a valid Add method. **Note** : I checked the test classes they already implement interface **IList** explicitly and have a method named **IList.Add**. +22779 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_Collections_FailedInuapaot_InCollections failed when targeting uapaot "This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_Collections , it failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class in these scenarios has **DataMember attribute decorate Collections type** ,has different result with baseline when serialization. **Baseline** : … … **Actual**: …… **Missing assembly information of the List**." +22780 area-Serialization Cleanup serialization code in unsupported types Mainly test code but in a few cases also production code. E.g. https://github.com/dotnet/corefx/blob/master/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs#L42 cc @morganbr @danmosemsft @stephentoub +22781 area-Infrastructure System.Net.Http package 4.3.2 - redirect to 4.2.0.0, assembly loading failure "I know there's been a few issues with System.Net.Http, but after some searching I couldn't find anything that seems to relate to, or remedy, my issue. I'll be happy to move this somewhere else, provide more details, etc, as necessary. I have some .NET Framework 4.6.1 class libraries and ASP.NET MVC projects which reference this package: When they run, I get: ``` System.BadImageFormatException : Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Net.Http.dll' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Cannot load a reference assembly for execution. ``` My workaround is to manually overwrite the assembly redirects which seem to be automatically generated very frequently whenever I update a number of NuGet references, with this: ``` ``` I'd like to either be able to use this latest version of the package without manually doing this, to understand why 4.2.0.0 is not working by design, or do whatever reconfiguration is necessary to stop the workaround being overwritten. If it's a helpful clue, netfx.force.conflict also appears in my bin folder at certain time (nuget restore?). A clean does not clear it away, but manually deleting the bin folder lets the project run successfully. Most of all, I'd like to feel less helpless / have the tools or knowledge to work out why this is happening by a logical process of elimination / deduction. I've been using and trying to find a way to get us on board the .NET Core train for quite a while. This is our first production project and is utilising some new .NET Core / .NET Standard libraries we have for some parts, and .NET Framework for others. It's been a very difficult experience so far, specifically any time .NET Framework assemblies are referencing netstandard ones. Through bashing against this kind of error for several weeks, I am piecing together facts and workarounds for NuGet versioning, redirects, reference assemblies, type forwarding, build file flags and a myriad of other nuggets. However, my knowledge is still evidently full of gaps. Is there a single place - or even a recommended set of places - where I can learn everything I need to know to have a project set up in this way? The knowledge set required to diagnose build and runtime errors in this kind of scenario so far seems huge, but I/we need to build this expertise internally. (Visual Studio 2017 15.3 Preview 6)" +22785 area-Serialization Remove unused serialization members Fixes https://github.com/dotnet/corefx/issues/22780 Not sure what the intent of those types is. Their sole purpose is to serialize something. What should be do about them? - https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs - https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs - https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs +22786 area-Infrastructure Converge root scripts for Unix and Windows This is intended to be more a question than an issue. Currently we have to the following scripts with each two flavors for Unix and Windows: - build-managed - build-native - build-packages - build-tests - build - clean - init-tools - publish-packages - (run-test.sh) - run - sync Are there any plans to converge them? If yes, will we use the dotnet-cli for that? If not, what about using cross-platform powershell scripts? @weshaggard @ericstj +22787 area-Meta Enable RHEL6 and CentOS 6 RID detection in build This change adds RHEL6 and CentOS 6 RID detection to src/Native/build-native.sh. These distros don't have the /etc/os-release file and so we need to use another source - the /etc/redhat-release file. It is an exact copy of the same change merged in for CoreCLR. +22788 area-System.Linq Removes unused SortQueryOperatorEnumerator field +22789 area-System.Runtime Add support for System.Runtime.WindowsRuntime to .NETCore We have a need to develop tooling using .NETCore to do hardware validation scenarios. .NETCore currently has no ways to talk to hardware. Exposing System.Runtime.WindowsRuntime would enable us to perform many query and validation scenarios on hardware devices. +22790 area-System.Runtime A mechanism for specifying alignment on a field or struct should be supported. "### Rationale In certain high performance or specialized data structures/algorithms, it is desirable to enforce an alignment for structs, fields, or locals. Today, CoreFX provides several specialized data structures for which the runtime either has special alignment handling (`System.Numerics.Vector`) or for which they have some specialized padding (https://github.com/dotnet/corefx/pull/22724). As such, the framework/runtime should provide a mechanism for encforcing a specified alignment for structs and fields. Locals should also be included if that is feasible (I'm not sure if that is readily possible today given that attributes cannot be specified on locals). ### Additional Thoughts It might be worthwhile to additionally expose this on the existing `StructLayoutAttribute` as an `Alignment` property. An alignment of `0` should be treated as ""Automatic"" (the current behavior of letting the runtime decide alignment). A mechanism for aligning to the cache would be ideal (https://github.com/dotnet/corefx/pull/22724#issuecomment-319075196). This could perhaps be a special value that would otherwise be invalid (such as `Alignment=-1`). Other special alignments could also be allowed in a similar manner. If a field specifies an alignment less than that of the struct, it should be aligned to the alignment of the struct. For example, if you do `Alignment=8` on a `Vector4` (which has an `Alignment=16`), the field should be treated as `Alignment=16`. [Design Decision] If a struct specifies an alignment less than that of its first field it should either: A. Align the struct as specified and add the appropriate padding so that the first field is also aligned as specified -or- B. Align the struct as per the requirements of the first field [EDIT] Make reference to the PR a link by @karelz" +22791 area-System.Diagnostics BasicEventSourceTests.TestEventCounter.Test_Write_Metric_EventListener fails on UWP. Test failure on UWP: BasicEventSourceTests.TestEventCounter.Test_Write_Metric_EventListener This failure appears to be caused by #22422. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170726.01/workItem/System.Diagnostics.Tracing.Tests/analysis/xunit/BasicEventSourceTests.TestEventCounter~2FTest_Write_Metric_EventListener +22794 area-System.Net Changing System.Net.Primitives AOT related conditions from uap to uapaot Discovered while working on uapaot stuff: https://github.com/dotnet/corefx/pull/22706#issuecomment-319158261 cc @morganbr @davidsh +22795 area-System.IO IsPathFullyQualified() Tests, public API Added tests for Path.IsPathFullyQualified() for Windows and Unix, made IsPathFullyQualified() public. +22796 area-System.Net System.Net.Sockets.SendPacketsElement should have Int64 offset # Latest Proposal ```c# public partial class SendPacketsElement { // Existing APIs public SendPacketsElement(string filepath, int offset, int count) { } public SendPacketsElement(string filepath, int offset, int count, bool endOfPacket) { } public int Offset { get; } // New APIs: public SendPacketsElement(string filepath, long offset, int count) { } public SendPacketsElement(string filepath, long offset, int count, bool endOfPacket) { } public long OffsetLong { get; } } ``` # Original Proposal The [_offset field](https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/SendPacketsElement.cs#L12) in SendPacketsElement defines the offset to start sending from, in the byte buffer or the filename. In the former case an `int` is fine, but in the latter it would be great to allow `int64` to allow offsets beyond the 2Gb mark in large files. The winsock API accepts an int64 too: https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/Windows/Winsock/Interop.WinsockAsync.cs#L70 and https://msdn.microsoft.com/en-us/library/windows/desktop/ms740570(v=vs.85).aspx In case the offset means an offset in a byte buffer, there is validation in place already to check that the offset is not out of bounds. Perhaps it is enough to make the field into an `int64` and add another constructor overload taking a filename and `int64` offset. +22798 area-System.Net WebRequest.DefaultWebProxy: Set doesn't work without a previous Get Iteration1: https://github.com/dotnet/corefx/pull/22720. Added test case as per comments in iteration1. Unless we do an unnecessary Get() on WebRequest.DefaultWebProxy, any Set() done will not be honored. This is especially a problem on Linux, where DefaultWebProxy throws PlatformNotSupportedException(). This in turn breaks libraries like WindowsAzure.Storage which fail unless the Get() is called first and then WebRequest.DefaultWebProxy is set to null. This fix avoids the unnecessary Get() by setting the already initialized flag sent to the LazyInitializer. @davidsh @stephentoub +22800 area-System.Reflection Partially disable System.Runtime test on ILC This fails in shared assembly mode. +22801 area-System.Net Slow Performance using AspNetCore Kestrel Host\WebAPI\HttpClient.SendAsync "Sample code: ```c# [Route(""api/[controller]"")] public class ValuesController : Controller { private static readonly HttpClient client = InitHttpClient(); [HttpGet] public async Task Get() { var r = await HttpInternal(); return r; } private async Task HttpInternal() { string uuid = Guid.NewGuid().ToString(); var request = new HttpRequestMessage(HttpMethod.Get, $""http://www.bing.com/?uuid={uuid}""); try { var sw = new Stopwatch(); sw.Start(); // This appears to be the location of the delay; with greater load, the worse random delays var response = await client.SendAsync(request); sw.Stop(); // Logging code removed… return sw.ElapsedMilliseconds; } catch (Exception) { // swallow } return -1; } ``` Some sample data which might be helpful as well (using Visual Studio Load Test Project to generate load) 10x User Load for 6000 Request: AVG: 472 Milliseconds and Max: 10 Seconds As load increases these numbers get worse: 100x User Load for 6000 Request: AVG: 3.7 Seconds and MAX: 33 Seconds *I can provide sample project and load project as well. Question: Are we calling the HttpClient correctly? Is there anyway to avoid the spike in call time accessing: var response = await client.SendAsync(request);? What are we missing here? [EDIT] Code formatting markdown added by @karelz" +22802 area-Microsoft.CSharp Refactor Better Conversion Picking in Microsoft.CSharp Mostly straightforward reduction of duplicates or code with unused results, but also guards against a branch that would throw an NRE and not ruled out as definitely unreachable. +22803 area-System.Data Add tests to System.Data.DataSetExtensions and create pkgproj Recently ported System.Data.DataSetExtensions to Core (see #22669) Still need to add relevant tests to ensure full coverage, and later create a package. +22804 area-System.Net Fix HttpListener test hang on ILC "In test file HttpRequestStreamTests, most of test cases do: 1. Get the HttpListenerContext: `Task contextTask = _listener.GetContextAsync();`. 2. Using a HttpClient to Send a POST request to the specified Uri HttpListener listening on: `Task clientTask = client.PostAsync(_factory.ListeningUrl, ""hello"");`. 3. Get the `HttpListenerRequest request` from HttpListenerContext.Request, and do some testings and validations. 4. Use `context.Response.Close();` to finish the operation. The `public async Task GetRequest(bool chunked)` in `GetContextHelper.cs` causes problem because: For the `PostAsync` operation, the returned Task object will complete after the whole response (including content) is read. We use `context.Response.Close()` to send the response to the client by closing the response. Above procedures worked well on netcore. However, on ILC, we need to explicitly `await clientTask` to finish. (First few runs are working, but if run the test case for many times, i.e a test case has many inline data, it will hang.) Fix #22110" +22806 area-System.Net HttpClient Encoding problem "## my code ``` c# public async Task test_6() { var client = new HttpClient(); var multipartContent = new MultipartFormDataContent(""-------boundary""); var fileStream2 = File.Open(@""H:\开源的项目\新建文本文档.txt"", FileMode.Open); var streamContent2 = new StreamContent(fileStream2); multipartContent.Add(streamContent2, ""files"", ""新建文本文档.txt""); var output = new MemoryStream(); await multipartContent.CopyToAsync(output); output.Seek(0, SeekOrigin.Begin); string result = new StreamReader(output).ReadToEnd(); return result; } ``` ## result:output ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- I want to use httpclient to upload files. When the name of the file is Chinese, the garbled code appears. I want to be able to upload Chinese files correctly. For example: `filename=“新建文本文档.txt“` instead of: `filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""` I want to encode the Content.header with UTF-8 and calculate the length instead of using DefaultHttpEncoding (Encoding.GetEncoding (28591)). The source code is: src/System.Net.Http/src/System/Net/Http/HttpRuleParser.cs System.Net.Http.HttpRuleParser ``` c# internal static readonly Encoding DefaultHttpEncoding = Encoding.GetEncoding(28591); ``` [EDIT] Fix readability by @karelz" +22807 area-System.Net [Desktop] Test failed: System.Net.Tests.HttpListenerAuthenticationTests / NoAuthenticationGetContextAsync_AuthenticationProvided_ReturnsForbiddenStatusCode "Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerAuthenticationTests/NoAuthenticationGetContextAsync_AuthenticationProvided_ReturnsForbiddenStatusCode(headerType: \""NTLM\"")` has failed. System.ApplicationException : The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) Stack Trace: at System.Threading.ThreadPool.BindIOCompletionCallbackNative(IntPtr fileHandle) at System.Threading.ThreadPool.BindHandle(IntPtr osHandle) at System.Net.HttpListener.EnsureBoundHandle() at System.Net.ListenerAsyncResult.QueueBeginGetContext() at System.Net.HttpListener.BeginGetContext(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Net.HttpListener.GetContextAsync() at System.Net.Tests.HttpListenerAuthenticationTests.d__37.MoveNext() in E:\A\_work\124\s\corefx\src\System.Net.HttpListener\tests\HttpListenerAuthenticationTests.cs:line 427 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.HttpListenerAuthenticationTests.d__8.MoveNext() in E:\A\_work\124\s\corefx\src\System.Net.HttpListener\tests\HttpListenerAuthenticationTests.cs:line 63 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170801.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170801.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerAuthenticationTests~2FNoAuthenticationGetContextAsync_AuthenticationProvided_ReturnsForbiddenStatusCode(headerType:%20%5C%22NTLM%5C%22)" +22808 area-System.Net [Desktop] Test failed: System.Net.Sockets.Tests.AcceptTask / Accept_WithTargetSocket_ReuseAfterDisconnect_Success on Desktop Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.AcceptTask/Accept_WithTargetSocket_ReuseAfterDisconnect_Success(reuseSocket: False)` has failed. ``` Assert.Throws() Failure\r Expected: typeof(System.Net.Sockets.SocketException)\r Actual: typeof(System.InvalidOperationException): acceptSocket: The socket must not be bound or connected. at System.Net.Sockets.Socket.DoBeginAccept(Socket acceptSocket, Int32 receiveSize, AcceptOverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginAccept(Socket acceptSocket, Int32 receiveSize, AsyncCallback callback, Object state) at System.Net.Sockets.SocketTaskExtensions.<>c.b__1_0(Socket socketForAccept, Int32 receiveSize, AsyncCallback callback, Object state) in E:\A\_work\301\s\corefx\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.netfx.cs:line 24 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory`1.FromAsync[TArg1,TArg2](Func`5 beginMethod, Func`2 endMethod, TArg1 arg1, TArg2 arg2, Object state) at System.Net.Sockets.SocketTaskExtensions.AcceptAsync(Socket socket, Socket acceptSocket) in E:\A\_work\301\s\corefx\src\System.Net.Sockets\src\System\Net\Sockets\SocketTaskExtensions.netfx.cs:line 23 at System.Net.Sockets.Tests.SocketHelperTask.AcceptAsync(Socket s, Socket acceptSocket) in E:\A\_work\301\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\SocketTestHelper.cs:line 133 at System.Net.Sockets.Tests.SocketTestHelperBase`1.AcceptAsync(Socket s, Socket acceptSocket) in E:\A\_work\301\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\SocketTestHelper.cs:line 249 at System.Net.Sockets.Tests.Accept`1.<>c__DisplayClass4_1.b__0() in E:\A\_work\301\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\Accept.cs:line 219 ``` Build : Master - 20170801.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Debug - Windows.10.Amd64-x86 - Debug - Windows.10.Amd64.Core-x64 - Debug - Windows.10.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170801.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.AcceptTask~2FAccept_WithTargetSocket_ReuseAfterDisconnect_Success(reuseSocket:%20False) +22809 area-System.Collections Does SortedSet.UnionWith need to optimize for another SortedSet? Hi, I'm in the middle of trying to clean up the `SortedSet` code. Over [here](https://github.com/jamesqo/corefx/blob/9f892eb60e68916d24670190ecc070eb22b6973e/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L927-L989), in both `UnionWith` and `IntersectWith`, there is a huge 60-line block of code that checks if the other enumerable is a `SortedSet` and if so does a mergesort on it, all inline. I'm wondering why this optimization was added in the first place: is it a common case to call `UnionWith` with a `SortedSet`? And were there perf problems with a naive implementation like ```cs foreach (T item in other) { Add(item); } ``` ? I checked the earliest version of `SortedSet.cs` on the [referencesource repo](https://github.com/Microsoft/referencesource/blob/9da503f9ef21e8d1f2905c78d4e3e5cbb3d6f85a/System/compmod/system/collections/generic/sortedset.cs#L1005), and the optimization was still there. If possible, can a maintainer with access to the TFS history please go back and see why it was added? /cc @ianhays @safern +22811 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/UseCallback_ValidCertificate_ExpectedValuesDuringCallback failed with ""System.OperationCanceledException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/UseCallback_ValidCertificate_ExpectedValuesDuringCallback(url: https://corefx-net.cloudapp.net/Echo.ashx, checkRevoca...` has failed. System.OperationCanceledException : The operation was canceled. Stack Trace: at System.Net.Http.HttpClient.HandleFinishSendAsyncError(Exception e, CancellationTokenSource cts) in /root/corefx-896831/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 508 at System.Net.Http.HttpClient.d__58.MoveNext() in /root/corefx-896831/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 463 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__10.MoveNext() in /root/corefx-896831/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 180 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170801.01 (Core Tests) Failing configurations: - Ubuntu.1710.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170801.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FUseCallback_ValidCertificate_ExpectedValuesDuringCallback(url:%20https:~2F~2Fcorefx-net.cloudapp.net~2FEcho.ashx,%20checkRevoca... +22812 area-System.Net "Test: System.Net.WebSockets.Client.Tests.SendReceiveTest/SendReceive_VaryingLengthBuffers_Success failed with ""System.OperationCanceledException""" Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.SendReceiveTest/SendReceive_VaryingLengthBuffers_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. System.OperationCanceledException : Aborted ---- System.IO.IOException : Unable to transfer data on the transport connection: Operation canceled. -------- System.Net.Sockets.SocketException : Operation canceled Stack Trace: at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /root/corefx-896831/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 740 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.WebSockets.Client.Tests.SendReceiveTest.d__9.MoveNext() in /root/corefx-896831/src/System.Net.WebSockets.Client/tests/SendReceiveTest.cs:line 309 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebSockets.ManagedWebSocket.d__70.MoveNext() in /root/corefx-896831/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1141 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /root/corefx-896831/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 647 ----- Inner Stack Trace ----- Build : Master - 20170801.01 (Core Tests) Failing configurations: - Ubuntu.1710.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170801.01/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Client.Tests.SendReceiveTest~2FSendReceive_VaryingLengthBuffers_Success(server:%20ws:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +22813 area-System.Runtime Please provide a weak reference version of ArrayPool This kind of WeakArrayPool should only hold the weak reference of every array, so the arrays in the pool could be collected by GC, and could be reused before GC. It would be a self-balanced array cache mechanism. +22814 area-System.Net Test failure: System.Net.Sockets.Tests.SendReceiveSync / Receive0ByteReturns_WhenPeerDisconnects ## History of failures Day | Build | OS -- | -- | -- 7/11 | 20170711.03 | Win10 7/15 | 20170715.02 | Win8.1 7/23 | 20170723.01 | Win7 9/16 | 20170916.02 | Win10 9/17 | 20170917.01 | Win10 11/4 | 20171104.02 | Win10 11/16 | 20171116.01 | Win8.1 # Original report Failed test: System.Net.Sockets.Tests.SendReceiveSync.Receive0ByteReturns_WhenPeerDisconnects Configuration: OuterLoop_netcoreapp_windows_nt_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_release/122/testReport/System.Net.Sockets.Tests/SendReceiveSync/Receive0ByteReturns_WhenPeerDisconnects/ MESSAGE: ~~~ System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host ~~~ STACK TRACE: ~~~ at System.Net.Sockets.Tests.SendReceiveSync.<>c__DisplayClass3_0.b__0() in D:\j\workspace\outerloop_net---7a39cc82\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs:line 1025 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Sockets.Tests.SendReceive.d__27.MoveNext() in D:\j\workspace\outerloop_net---7a39cc82\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs:line 726 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +22818 area-System.Security Deserialization of Claim blows up, if Properties was set "The following code snippet causes the de-serialization of [serialized] claim to blow up: ```c# private static void T_22() { var c2 = new Claim(ClaimTypes.Actor, ""Test"", ClaimValueTypes.String, ""Test"", ""Test""); c2.Properties[""Prop1""] = ""Value1""; c2.Properties[""Prop2""] = ""Value2""; var b0 = T_22_Encode((stream, writer) => { c2.WriteTo(writer); writer.Flush(); return stream.ToArray(); }); var y0 = T_22_Decode(b0, reader => new Claim(reader)); } private static byte[] T_22_Encode(Func func) { using (var m0 = new MemoryStream()) using (var w0 = new BinaryWriter(m0)) return func.Invoke(m0, w0); } private static T T_22_Decode(byte[] encoded, Func func) where T : class { using (var m0 = new MemoryStream(encoded)) using (var r0 = new BinaryReader(m0)) return func.Invoke(r0); } ``` With the following exception: ``` System.IO.EndOfStreamException occurred HResult=0x80070026 Message=Unable to read beyond the end of the stream. Source= StackTrace: at System.IO.__Error.EndOfFile() at System.IO.BinaryReader.ReadByte() at System.IO.BinaryReader.Read7BitEncodedInt() at System.IO.BinaryReader.ReadString() at System.Security.Claims.Claim..ctor(BinaryReader reader, ClaimsIdentity subject) at System.Security.Claims.ClaimsIdentity.CreateClaim(BinaryReader reader) at System.Security.Claims.ClaimsIdentity.Initialize(BinaryReader reader) at System.Security.Claims.ClaimsIdentity..ctor(BinaryReader reader) at System.Security.Claims.ClaimsPrincipal.CreateClaimsIdentity(BinaryReader reader) at System.Security.Claims.ClaimsPrincipal..ctor(BinaryReader reader) ``` There is no issue if the properties are not used. [EDIT] Fixed code markdown by @karelz" +22819 area-System.Drawing System.Drawing.Color considers 0 a known, system color. On desktop `Color.FromKnownColor(0).IsKnownColor` and `Color.FromKnownColor(0).IsSystemColor` both return false. In CoreFX they both return true. +22820 area-System.Drawing System.Drawing.KnownColor exposes internal names When `System.Drawing.KnownColor` was made internal-only it had convenience values of `First` and `Last` added. When it was made public again these were not removed. The ref assembly doesn't include them, but they can be found in calls to `Enum.GetNames()` and `Enum.GetValues()` includes `First` and doubles up on `MenuHighlight`. +22822 area-System.Drawing Adding System.Drawing.Common.tests.Imaging PropertyItem tests. Adding System.Drawing.Common.tests.Imaging PropertyItem tests. This is a small one... (#20711) +22825 area-System.Security API checker: remove special case of CheckTokenMembershipEx in UWP Fixes #22128 +22826 area-Infrastructure Re-enable corefx multifile test configurations once nutc error is fixed A recent change in PN side has broken the build for the uapaot configurations that use the multifile test configuration. In order to unblock the full official build, we turned off the multifile test configurations from corefx/master, but we should re-enable them once the fix has been checked in to PN. cc: @joshfree @trylek +22831 area-System.Drawing Retarget System.Drawing.Common to netcoreapp2.0 "We would like to be able to ship a preview version of System.Drawing.Common that works on .NET Core 2.0, so that customers can easily test out the library without needing to upgrade their entire runtime to version 2.1. For the most part, the library can be easily retargeted, with a few small caveats. I'm filing this issue to document the things that will need to change for us to target .NET Core 2.0. * Work around missing types in other .NET Core 2.0 assemblies. Almost everything that has been added is isolated to the System.Drawing.Common assembly, but there are a few types that were added or modified elsewhere: * `KnownColor` is now public in System.Drawing.Primitives. * `Color` exposes several previously-private members as public. * `InvalidEnumArgumentException` was exposed publically, and is thrown by System.Drawing.Common. * `SystemDrawingSection` was added to ConfigurationManager. * Testing plan. We can test the .NET Core 2.0 configuration against the current-built runtime, but we won't be able to do that easily if we also add a .NET Core 2.1 configuration. This is because the test project will just select the ""most applicable version"", which would be .NET Core 2.1, if both existed. We can potentially work around this limitation, but it would be messy. For the time being, let's just support the .NET Core 2.0 configuration when testing. I plan to tackle the code changes in this way: * `KnownColor`: Add an internal copy of KnownColor into System.Drawing.Common. This type is an implementation detail anyways -- it's identity doesn't leak out of the library. We should share the source code with System.Drawing.Primitives to avoid duplication. * `Color`: Access the private members through reflection. These are already implemented in .NET Core 2.0, they just aren't public. The only change I made for .NET Core 2.1 was changing the accessibility. * `InvalidEnumArgumentException`: Add an internal version of this exception to be thrown instead. The tests will need to be modified to allow for the base-type to be thrown, though, because this exception will not have the same identity as the one from System.ComponentModel.Primitives. * `SystemDrawingSection`: Stop reading from ConfigurationManager for these settings. In both cases, there is already reasonable behavior if no configuration value is read." +22833 area-System.Drawing Change System.Drawing.Common's target to netcoreapp2.0 "There are two parts to this PR: 1. Add a ""netcoreapp"" project to the ""external"" folder. This restores the .NET Core 2.0 targeting pack, so that assemblies can target and be built against it. 2. Change the TargetGroup for System.Drawing.Common to netcoreapp2.0. Fix the minor incompatibilities mentioned in this issue: #22831. @ericstj @weshaggard Could you take a look at the build configuration stuff that I have changed?" +22839 area-System.Collections Cleanup code in SortedSet This is a continuation of https://github.com/dotnet/corefx/pull/16061. I found that I had a bunch of changes made after that PR stashed, but forgot about them until now. +22841 area-System.Net Support username* and Proxy-Authorization for digest auth. cc @stephentoub @geoffkizer @mconnew +22843 area-System.Runtime Exploration of API Look and Feel for x86 SSE Platform Intrinsics "**NOTE:** This is currently more of an exploration for API look and feel than an actual proposal. Recently, the design document for `.NET Platform Dependent Intrinsics` was published (https://github.com/dotnet/designs/blob/master/accepted/platform-intrinsics.md). One of the things that still needs to be determined is the exact ""look and feel"" of the exposed APIs. Given the requirements put forth in the design doc, I explored what exposing the x86 SSE intrinsics might look like. I believe we need a minimum of 3 attributes: * `Intrinsic` identifies a method as exposing an intrinsic * It might be worthwhile letting the constructor take a set of strings that indicates alternative aliases for the function * `Literal` identifiers a parameter that is required to be a literal (there are a few instructions that require this) * Ideally this would cause `modreq literal` to be emitted and would have compiler supports * This could probably go in `System.Runtime.CompilerServices` rather than `S.R.CS.Intrinsics` * `Alignment` enforces an alignment for a struct. * I have a separate proposal for such an attribute here https://github.com/dotnet/corefx/issues/22790. * This can probably go in `System.Runtime.InteropServices` where it makes more sense For SSE, there are 4 different register sizes: 64, 128, 256, and 512. * These are separate rather than a generic 'Vector` type so that the user can explicitly dictate which register size they are using (and therefore also control clearing of upper bits, etc) * These expose an `IsSupported` property so the user can determine whether the CPU supports that register size (for example, this can indicate support for https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_cvtss&expand=1809). * These structs are currently generic and do not expose the underlying fields (which should not be accessed directly anyways) * It might be worthwhile seeing if we can enforce these to be ""stack only"". Ideally users would always guarantee they have a software fallback and create their types as such as well. That is, they would never declare `Simd128` as a field, and instead would declare `float x, y, z, w` and would explicitly call `Load` and `Store` to get a `Simd128` The SSE static class exposes all the instructions supported by the SSE CPUID bit flag: * Methods which do not have a software implementation are marked as 'extern' * The runtime should throw a PNSE if IsSupported is false * This forces any consumers (such as AOT compilers) to understand the method * Most of the method names can be differentiated by overload * For some method names, we have to append 'Scalar', since the packed and scalar forms both take `Simd128` and just treat the parameter differently. * Some of the names may not be ideal, I just chose something that made some sense ```C# namespace System.Runtime.CompilerServices.Intrinsics { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] internal sealed class IntrinsicAttribute : Attribute { // Indicates that a method is an intrinsic // Optional. Allow users to specify useful metadata such as the corresponding C/C++ intrinsic or hardware instruction } [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public sealed class LiteralAttribute : Attribute { // Indicates that a parameter is required to be literal. // Should be emitted as a `modreq literal` } [AttributeUsage(AttributeTargets.Struct, AllowMultiple = false, Inherited = false)] public sealed class AlignmentAttribute : Attribute { // Indicates the required alignment of a type. public AlignmentAttribute(int value) { } } [Alignment(8)] public struct Simd64 { // This should be recognized by the JIT as a constant // This indicates whether the hardware supports holding values of T public static bool IsSupported { get; } } [Alignment(16)] public struct Simd128 { // This should be recognized by the JIT as a constant // This indicates whether the hardware supports holding values of T public static bool IsSupported { get; } } [Alignment(32)] public struct Simd256 { // This should be recognized by the JIT as a constant // This indicates whether the hardware supports holding values of T public static bool IsSupported { get; } } [Alignment(64)] public struct Simd512 { // This should be recognized by the JIT as a constant // This indicates whether the hardware supports holding values of T public static bool IsSupported { get; } } namespace x86 { public static unsafe class SSE { // This should be recognized by the JIT as a constant // This indicates whether the hardware supports this instruction set. public static bool IsSupported { get; } #region Data Transfer Instructions [Intrinsic] // MOVAPS, _mm_load_ps public static extern Simd128 LoadAligned(float* address); [Intrinsic] // MOVAPS, _mm_store_ps public static extern void StoreAligned(float* address, Simd128 value); [Intrinsic] // MOVUPS, _mm_loadu_ps public static extern Simd128 LoadUnaligned(float* address); [Intrinsic] // MOVUPS, _mm_storeu_ps public static extern void StoreUnaligned(float* address, Simd128 value); [Intrinsic] // MOVHPS, _mm_loadh_pi public static extern Simd128 LoadHigh(Simd128 value, float* address); [Intrinsic] // MOVHPS, _mm_storeh_pi public static extern void StoreHigh(float* address, Simd128 value); [Intrinsic] // MOVHLPS, _mm_movehl_ps public static extern Simd128 MoveHighLow(Simd128 a, Simd128 b); [Intrinsic] // MOVLPS, _mm_loadl_pi public static extern Simd128 LoadLow(Simd128 value, float* address); [Intrinsic] // MOVLPS, _mm_storel_pi public static extern void StoreLow(float* address, Simd128 value); [Intrinsic] // MOVLHPS, _mm_movelh_ps public static extern Simd128 MoveLowHigh(Simd128 a, Simd128 b); [Intrinsic] // MOVMSKPS, _mm_movemask_ps public static extern int MoveMask(Simd128 value); [Intrinsic] // MOVSS, _mm_cvtss_f32 public static extern float ToSingle(Simd128 value); [Intrinsic] // MOVSS, _mm256_cvtss_f32 public static extern float ToSingle(Simd256 value); [Intrinsic] // MOVSS, _mm512_cvtss_f32 public static extern float ToSingle(Simd512 value); [Intrinsic] // MOVSS, _mm_load_ss public static extern Simd128 Load(float* address); [Intrinsic] // MOVSS, _mm_move_ss public static extern Simd128 Move(Simd128 a, Simd128 b); [Intrinsic] // MOVSS, _mm_store_ss public static extern void Store(float* address, Simd128 value); #endregion #region Arithmetic Instructions [Intrinsic] // ADDPS, _mm_add_ps public static extern Simd128 Add(Simd128 a, Simd128 b); [Intrinsic] // ADDSS, _mm_add_ss public static extern Simd128 AddScalar(Simd128 a, Simd128 b); [Intrinsic] // SUBPS, _mm_sub_ps public static extern Simd128 Subtract(Simd128 a, Simd128 b); [Intrinsic] // SUBSS, _mm_sub_ss public static extern Simd128 SubtractScalar(Simd128 a, Simd128 b); [Intrinsic] // MULPS, _mm_mul_ps public static extern Simd128 Multiply(Simd128 a, Simd128 b); [Intrinsic] // MULSS, _mm_mul_ss public static extern Simd128 MultiplyScalar(Simd128 a, Simd128 b); [Intrinsic] // DIVPS, _mm_div_ps public static extern Simd128 Divide(Simd128 a, Simd128 b); [Intrinsic] // DIVSS, _mm_div_ss public static extern Simd128 DivideScalar(Simd128 a, Simd128 b); [Intrinsic] // RCPPS, _mm_rcp_ps public static extern Simd128 Reciprocal(Simd128 value); [Intrinsic] // RCPSS, _mm_rcp_ss public static extern Simd128 ReciprocalScalar(Simd128 value); [Intrinsic] // SQRTPS, _mm_sqrt_ps public static extern Simd128 Sqrt(Simd128 value); [Intrinsic] // SQRTSS, _mm_sqrt_ss public static extern Simd128 SqrtScalar(Simd128 value); [Intrinsic] // RSQRTPS, _mm_rsqrt_ps public static extern Simd128 ReciprocalSqrt(Simd128 value); [Intrinsic] // RSQRTSS, _mm_rsqrt_ss public static extern Simd128 ReciprocalSqrtScalar(Simd128 value); [Intrinsic] // MAXPS, _mm_max_ps public static extern Simd128 Max(Simd128 a, Simd128 b); [Intrinsic] // MAXSS, _mm_max_ss public static extern Simd128 MaxScalar(Simd128 a, Simd128 b); [Intrinsic] // MINPS, _mm_min_ps public static extern Simd128 Min(Simd128 a, Simd128 b); [Intrinsic] // MINSS, _mm_min_ss public static extern Simd128 MinScalar(Simd128 a, Simd128 b); #endregion #region Comparison Instructions [Intrinsic] // CMPPS, _mm_cmpeq_ps public static extern Simd128 CompareEqual(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpge_ps public static extern Simd128 CompareGreaterOrEqual(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpgt_ps public static extern Simd128 CompareGreater(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmple_ps public static extern Simd128 CompareLessOrEqual(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmplt_ps public static extern Simd128 CompareLess(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpneq_ps public static extern Simd128 CompareNotEqual(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpnge_ps public static extern Simd128 CompareNotGreaterOrEqual(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpngt_ps public static extern Simd128 CompareNotGreater(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpnle_ps public static extern Simd128 CompareNotLessOrEqual(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpnlt_ps public static extern Simd128 CompareNotLess(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpord_ps public static extern Simd128 CompareOrdered(Simd128 a, Simd128 b); [Intrinsic] // CMPPS, _mm_cmpunord_ps public static extern Simd128 CompareUnordered(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpeq_ss public static extern Simd128 CompareEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpge_ss public static extern Simd128 CompareGreaterOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpgt_ss public static extern Simd128 CompareGreaterScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmple_ss public static extern Simd128 CompareLessOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmplt_ss public static extern Simd128 CompareLessScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpneq_ss public static extern Simd128 CompareNotEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpnge_ss public static extern Simd128 CompareNotGreaterOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpngt_ss public static extern Simd128 CompareNotGreaterScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpnle_ss public static extern Simd128 CompareNotLessOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpnlt_ss public static extern Simd128 CompareNotLessScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpord_ss public static extern Simd128 CompareOrderedScalar(Simd128 a, Simd128 b); [Intrinsic] // CMPSS, _mm_cmpunord_ss public static extern Simd128 CompareUnorderedScalar(Simd128 a, Simd128 b); [Intrinsic] // COMISS, _mm_comieq_ss public static extern bool OrderedCompareEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // COMISS, _mm_comige_ss public static extern bool OrderedCompareGreaterOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // COMISS, _mm_comigt_ss public static extern bool OrderedCompareGreaterScalar(Simd128 a, Simd128 b); [Intrinsic] // COMISS, _mm_comile_ss public static extern bool OrderedCompareLessOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // COMISS, _mm_comilt_ss public static extern bool OrderedCompareLessScalar(Simd128 a, Simd128 b); [Intrinsic] // COMISS, _mm_comineq_ss public static extern bool OrderedCompareNotEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // UCOMISS, _mm_ucomieq_ss public static extern bool UnorderedCompareEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // UCOMISS, _mm_ucomige_ss public static extern bool UnorderedCompareGreaterOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // UCOMISS, _mm_ucomigt_ss public static extern bool UnorderedCompareGreaterScalar(Simd128 a, Simd128 b); [Intrinsic] // UCOMISS, _mm_ucomile_ss public static extern bool UnorderedCompareLessOrEqualScalar(Simd128 a, Simd128 b); [Intrinsic] // UCOMISS, _mm_ucomilt_ss public static extern bool UnorderedCompareLessScalar(Simd128 a, Simd128 b); [Intrinsic] // UCOMISS, _mm_ucomineq_ss public static extern bool UnorderedCompareNotEqualScalar(Simd128 a, Simd128 b); #endregion #region Logical Instructions [Intrinsic] // ANDPS, _mm_and_ps public static extern Simd128 And(Simd128 a, Simd128 b); [Intrinsic] // ANDNPS, _mm_andnot_ps public static extern Simd128 AndNot(Simd128 a, Simd128 b); [Intrinsic] // ORPS, _mm_or_ps public static extern Simd128 Or(Simd128 a, Simd128 b); [Intrinsic] // XORPS, _mm_xor_ps public static extern Simd128 XOr(Simd128 a, Simd128 b); #endregion #region Shuffle and Unpack Instructions [Intrinsic] // SHUFPS, _mm_shuffle_ps public static extern Simd128 Shuffle(Simd128 a, Simd128 b, [Literal] byte imm8); [Intrinsic] // UNPCKHPS, _mm_unpackhi_ps public static extern Simd128 UnpackHigh(Simd128 a, Simd128 b); [Intrinsic] // UNPCKLPS, _mm_unpacklo_ps public static extern Simd128 UnpackLow(Simd128 a, Simd128 b); #endregion #region Conversion Instructions [Intrinsic] // CVTPI2PS, _mm_cvt_pi2ps, _mm_cvtpi32_ps public static extern Simd128 ToPackedSingle(Simd128 a, Simd64 b); [Intrinsic] // CVTSI2SS, _mm_cvt_si2ss, _mm_cvtsi32_ss public static extern Simd128 ToPackedSingle(Simd128 a, int b); [Intrinsic] // CVTSI2SS, _mm_cvtsi64_ss public static extern Simd128 ToPackedSingle(Simd128 a, long b); [Intrinsic] // CVTPS2PI, _mm_cvt_ps2pi, _mm_cvtps_pi32 public static extern Simd64 ToPackedInt32(Simd128 value); [Intrinsic] // CVTTPS2PI, _mm_cvtt_ps2pi, _mm_cvttps_pi32 public static extern Simd64 ToPackedInt32Truncated(Simd128 value); [Intrinsic] // CVTSS2SI, _mm_cvt_ss2si, _mm_cvtss_si32 public static extern int ToInt32(Simd128 value); [Intrinsic] // CVTSS2SI, _mm_cvtss_si64 public static extern long ToInt64(Simd128 value); [Intrinsic] // CVTTSS2SI, _mm_cvvt_ss2si, _mm_cvttss_si32 public static extern int ToInt32Truncated(Simd128 value); [Intrinsic] // CVTTSS2SI, _mm_cvttss_si64 public static extern long ToInt64Truncated(Simd128 value); #endregion #region MXCSR State Management Instructions [Intrinsic] // LDMXCSR, _mm_setcsr public static extern void SetControlStatus(uint a); [Intrinsic] // STMXCSR, _mm_getcsr public static extern uint GetControlStatus(); #endregion #region 64-bit Integer Instructions [Intrinsic] // PAVGB, _mm_avg_pu8, _m_pavgb public static extern Simd64 Average(Simd64 a, Simd64 b); [Intrinsic] // PAVGW, _mm_avg_pu16, _m_pavgw public static extern Simd64 Average(Simd64 a, Simd64 b); [Intrinsic] // PEXTRW, _mm_extract_pi16, _m_pextrw public static extern short Extract(Simd64 a, [Literal] byte imm8); [Intrinsic] // PINSRW, _mm_insert_pi16, _m_pinsrw public static extern Simd64 Insert(Simd64 a, short i, [Literal] byte imm8); [Intrinsic] // PMAXUB, _mm_max_pu8, _m_pmaxub public static extern Simd64 Max(Simd64 a, Simd64 b); [Intrinsic] // PMAXSW, _mm_max_pu16, _m_pmaxuw public static extern Simd64 Max(Simd64 a, Simd64 b); [Intrinsic] // PMINUB, _mm_min_pu8, _m_pminub public static extern Simd64 Min(Simd64 a, Simd64 b); [Intrinsic] // PMINSW, _mm_min_pu16, _m_pminuw public static extern Simd64 Min(Simd64 a, Simd64 b); [Intrinsic] // PMOVMSKB, _mm_movemask_pi8, _m_pmovmskb public static extern int MoveMask(Simd64 value); [Intrinsic] // PMULHUWm _mm_mulhi_pu16, _m_pmulhuw public static extern Simd64 MultiplyHigh(Simd64 a, Simd64 b); [Intrinsic] // PSADBW, _mm_sad_pu8, _m_psadbw public static extern Simd64 AbsoluteSumOfDifferences(Simd64 a, Simd64 b); [Intrinsic] // PSHUFW, _mm_shuffle_pi16, _m_pshufw public static extern Simd64 Shuffle(Simd64 value, [Literal] byte imm8); #endregion #region Cacheability Control, Prefetch, and Instruction Ordering Instructions [Intrinsic] // MASKMOVQ, _mm_maskmove_si64, _m_maskmovq public static extern void MaskMove(Simd64 a, Simd64 mask, byte* address); [Intrinsic] // MOVNTQ, _mm_stream_pi public static extern void Stream(long* address, Simd64 value); [Intrinsic] // MOVNTPS, _mm_stream_ps public static extern void Stream(float* address, Simd128 value); [Intrinsic] // PREFETCHNTA, PREFETCH0, PREFETCH1, PREFETCH2, _mm_prefetch public static extern void Prefetch(byte* p, int i); [Intrinsic] // SFENCE, _mm_sfence public static extern void StoreFence(); #endregion } } } ```" +22844 area-System.Net "Test: System.Net.Sockets.Tests.AcceptSyncForceNonBlocking/Accept_ConcurrentAcceptsAfterConnects_Success failed with ""System.Net.Sockets.SocketException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.AcceptSyncForceNonBlocking/Accept_ConcurrentAcceptsAfterConnects_Success(numberAccepts: 2)` has failed. System.Net.Sockets.SocketException : A non-blocking socket operation could not be completed immediately Stack Trace: at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) at System.Net.Sockets.Socket.Accept() at System.Net.Sockets.Tests.SocketHelperSyncForceNonBlocking.<>c__DisplayClass0_0.b__0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__276_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Sockets.Tests.Accept`1.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170802.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170802.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.AcceptSyncForceNonBlocking~2FAccept_ConcurrentAcceptsAfterConnects_Success(numberAccepts:%202) +22845 area-System.Net "System.Net.WebSockets.Client.Tests.SendReceiveTest.SendReceive_VaryingLengthBuffers_Success failed with ""System.ObjectDisposedException""" Failed test: System.Net.WebSockets.Client.Tests.SendReceiveTest.SendReceive_VaryingLengthBuffers_Success Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_opensuse42.1_release/126/testReport/System.Net.WebSockets.Client.Tests/SendReceiveTest/SendReceive_VaryingLengthBuffers_Success_server__wss___corefx_net_cloudapp_net_WebSocket_EchoWebSocket_ashx_/ MESSAGE: ~~~ System.OperationCanceledException : Aborted ---- System.ObjectDisposedException : Cannot access a disposed object. Object name: 'SslStream'. ~~~ STACK TRACE: ~~~ at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 740 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.SendReceiveTest.d__9.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/System.Net.WebSockets.Client/tests/SendReceiveTest.cs:line 309 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.CheckThrow(Boolean authSuccessCheck, Boolean shutdownCheck) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 446 at System.Net.Security.SslState.get_SecureStream() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 384 at System.Net.Security.SslStream.EndRead(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 556 at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__70.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1141 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_opensuse42.1_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 708 ~~~ +22847 area-System.Net Test: System.Net.WebSockets.Client.Tests.ConnectTest.EchoBinaryMessage_Success failed in CI Failed test: System.Net.WebSockets.Client.Tests.ConnectTest.EchoBinaryMessage_Success Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_portablelinux_release/126/testReport/System.Net.WebSockets.Client.Tests/ConnectTest/EchoBinaryMessage_Success_server__ws___corefx_net_cloudapp_net_WebSocket_EchoWebSocket_ashx_/ Configuration: OuterLoop_netcoreapp_portablelinux_release MESSAGE: ~~~ System.Net.WebSockets.WebSocketException : The remote party closed the WebSocket connection without completing the close handshake. ---- System.IO.IOException : Unable to transfer data on the transport connection: Connection reset by peer. -------- System.Net.Sockets.SocketException : Connection reset by peer ~~~ STACK TRACE: ~~~ at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_portablelinux_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 740 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__67.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_portablelinux_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1049 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.WebSocketHelper.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_portablelinux_release/src/System.Net.WebSockets.Client/tests/WebSocketHelper.cs:line 56 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.ConnectTest.d__2.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_portablelinux_release/src/System.Net.WebSockets.Client/tests/ConnectTest.cs:line 40 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__70.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_portablelinux_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1141 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_portablelinux_release/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 647 ----- Inner Stack Trace ----- ~~~ +22848 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds failed with ""System.Net.Http.WinHttpException : The operation timed out"" in CI" Failed test: System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.GetAsync_SupportedSSLVersion_Succeeds Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug/124/testReport/System.Net.Http.Functional.Tests/HttpClientHandler_SslProtocols_Test/GetAsync_SupportedSSLVersion_Succeeds_sslProtocols__Tls11__url____https___www_ssllabs_com_10302____/ MESSAGE: ~~~ System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The operation timed out ~~~ STACK TRACE: ~~~ at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_SslProtocols_Test.d__6.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.SslProtocols.cs:line 149 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Runtime.Extensions\src\System\Environment.cs:line 174 at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) in D:\j\workspace\outerloop_net---dbe8fad8\src\Common\src\System\Runtime\ExceptionServices\ExceptionStackTrace.cs:line 23 at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) in D:\j\workspace\outerloop_net---dbe8fad8\src\Common\src\System\Net\Http\WinHttpException.cs:line 51 at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 312 at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 104 at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 47 --- End of stack trace from AddCurrentStack --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() in D:\j\workspace\outerloop_net---dbe8fad8\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs:line 62 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 856 ~~~ +22849 area-System.Net "System.Net.Tests.HttpWebRequestTest.GetResponseAsync_PostRequestStream_ContainsData failed with ""System.Net.Http.WinHttpException : The operation timed out"" in CI" Failed test: System.Net.Tests.HttpWebRequestTest.GetResponseAsync_PostRequestStream_ContainsData Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug/124/testReport/System.Net.Tests/HttpWebRequestTest/GetResponseAsync_PostRequestStream_ContainsData_remoteServer__http___corefx_net_cloudapp_net_Echo_ashx_/ MESSAGE: ~~~ System.Net.WebException : An error occurred while sending the request. The operation timed out ---- System.Net.Http.HttpRequestException : An error occurred while sending the request. -------- System.Net.Http.WinHttpException : The operation timed out ~~~ STACK TRACE: ~~~ at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Requests\src\System\Net\HttpWebRequest.cs:line 1261 at System.Net.WebRequest.<>c.b__68_2(IAsyncResult iar) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Requests\src\System\Net\WebRequest.cs:line 550 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.HttpWebRequestTest.d__95.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Requests\tests\HttpWebRequestTest.cs:line 995 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__59.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 489 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.HttpWebRequest.d__194.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Requests\src\System\Net\HttpWebRequest.cs:line 1207 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Requests\src\System\Net\HttpWebRequest.cs:line 1257 ----- Inner Stack Trace ----- at System.Environment.get_StackTrace() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Runtime.Extensions\src\System\Environment.cs:line 174 at System.Runtime.ExceptionServices.ExceptionStackTrace.AddCurrentStack(Exception exception) in D:\j\workspace\outerloop_net---dbe8fad8\src\Common\src\System\Runtime\ExceptionServices\ExceptionStackTrace.cs:line 23 at System.Net.Http.WinHttpException.CreateExceptionUsingError(Int32 error) in D:\j\workspace\outerloop_net---dbe8fad8\src\Common\src\System\Net\Http\WinHttpException.cs:line 51 at System.Net.Http.WinHttpRequestCallback.OnRequestError(WinHttpRequestState state, WINHTTP_ASYNC_RESULT asyncResult) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 312 at System.Net.Http.WinHttpRequestCallback.RequestCallback(IntPtr handle, WinHttpRequestState state, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 104 at System.Net.Http.WinHttpRequestCallback.WinHttpCallback(IntPtr handle, IntPtr context, UInt32 internetStatus, IntPtr statusInformation, UInt32 statusInformationLength) in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpRequestCallback.cs:line 47 --- End of stack trace from AddCurrentStack --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() in D:\j\workspace\outerloop_net---dbe8fad8\src\Common\src\System\Threading\Tasks\RendezvousAwaitable.cs:line 62 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in D:\j\workspace\outerloop_net---dbe8fad8\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 856 ~~~ +22850 area-System.Net "Test: System.Net.Tests.InvalidClientRequestTests/GetContext_InvalidRequest_DoesNotGetContext failed with ""System.Net.Internals.SocketExceptionFactory+ExtendedSocketException""" Opened on behalf of @Jiayili1 The test `System.Net.Tests.InvalidClientRequestTests/GetContext_InvalidRequest_DoesNotGetContext` has failed. System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Connection refused 127.0.0.1:1561 Stack Trace: at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 4529 at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 825 at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 930 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 940 at System.Net.Sockets.Socket.Connect(String host, Int32 port) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 889 at System.Net.Tests.HttpListenerFactory.GetConnectedSocket() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.HttpListener/tests/HttpListenerFactory.cs:line 156 at System.Net.Tests.InvalidClientRequestTests.d__6.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.HttpListener/tests/InvalidClientRequestTests.cs:line 100 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170802.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170802.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.InvalidClientRequestTests~2FGetContext_InvalidRequest_DoesNotGetContext +22851 area-System.Net "Test: System.Net.WebSockets.Client.Tests.ConnectTest/EchoTextMessage_Success failed with ""System.OperationCanceledException""" Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.ConnectTest/EchoTextMessage_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. System.OperationCanceledException : Aborted ---- System.IO.IOException : Unable to transfer data on the transport connection: Operation canceled. -------- System.Net.Sockets.SocketException : Operation canceled Stack Trace: at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /root/corefx-899391/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 740 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__67.MoveNext() in /root/corefx-899391/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1049 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.WebSocketHelper.d__3.MoveNext() in /root/corefx-899391/src/System.Net.WebSockets.Client/tests/WebSocketHelper.cs:line 56 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.ConnectTest.d__3.MoveNext() in /root/corefx-899391/src/System.Net.WebSockets.Client/tests/ConnectTest.cs:line 47 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__70.MoveNext() in /root/corefx-899391/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1141 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ManagedWebSocket.d__61.MoveNext() in /root/corefx-899391/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 647 ----- Inner Stack Trace ----- Build : Master - 20170802.01 (Core Tests) Failing configurations: - Ubuntu.1710.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170802.01/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Client.Tests.ConnectTest~2FEchoTextMessage_Success(server:%20ws:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +22852 area-System.Runtime Add StringBuilder Span-based APIs Contributes to https://github.com/dotnet/corefx/issues/22430 Depends on https://github.com/dotnet/coreclr/pull/13163 - Add span-based Append/Insert/CopyTo methods to StringBuilder - Add unit tests for the new methods +22853 area-Serialization DataContractSerializer doesn't invoke the Dispose()-Method of IEnumerable I use the DataContractSerializer (System.Runtime.Serialization.dll v4.6.2) for serializing a own thread-safe Collection. My collection implements IEnumerable and therefore it returns my own thread-safe Enumerator. The enumerator uses the ReaderWriterLockSlim-Class and enters the READ-lock while retrieving it over GetEnumerator() and exits the lock when the Dispose()-Method is invoked. This works normally fine - but not with the DataContractSerializer. When the DataContractSerializer serializes my collection it retrieves the enumerator but after serializing it doesn't invoke the Dispose()-Method. As a result my other threads can't change the Collection any more. I know, that I'm writing this issue at a the wrong project (.NET-Core) but the C#-Code here is very similar to the big framework and I hope somebody could help me. (https://github.com/dotnet/corefx/blob/master/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSerializer.cs) This issue was already posted at social.msdn.microsoft.com but the unqualified answer of the forum answerer was not very helpful. (https://social.msdn.microsoft.com/Forums/azure/en-US/b0097ab1-b0e6-4d0b-9a4d-5a09de2c3024/datacontractserializer-not-calling-dispose-on-ienumerator?forum=csharpgeneral) +22855 area-System.Data Null value in string array in DataRow causes DataRowComparer to throw NRE, but only if it is the first parameter "The following test demonstrates this bug. It is present in both netfx and netcoreapp. We could fix this in netcoreapp by allowing the comparison to succeed. I'd expect row1 and row2 to be equal, and row1 and row3 to be unequal, but this crashes. ```cs [Fact] public void Equals_NullStringValueInStringArrayInRightColumn_ThrowsNullReferenceException() { var table = new DataTable(""Table""); DataColumn column = table.Columns.Add(""Column""); column.DataType = typeof(Array); DataRow row1 = table.Rows.Add(new object[] { new string[] { null } }); DataRow row2 = table.Rows.Add(new object[] { new string[] { null } }); DataRow row3 = table.Rows.Add(new object[] { new string[] { ""abc"" } }); Assert.Throws(() => DataRowComparer.Default.Equals(row1, row2)); Assert.Throws(() => DataRowComparer.Default.Equals(row2, row1)); Assert.Throws(() => DataRowComparer.Default.Equals(row1, row3)); Assert.False(DataRowComparer.Default.Equals(row3, row1)); } ```" +22857 area-System.Threading Proposal: Add Task.WhenAny(Task,Task) overload to avoid Task[] allocation public static Task WhenAny(Task task1, Task task2); or public static Task WhenEither(Task task1, Task task2); The scenario is of multiple independent worker tasks observing one control task. Currently, each worker needs to allocate an Array which appears wasteful. +22858 area-System.Security Fixing binary serialization EndOfStream exception Instantiating a Claim object with a BinaryReader as argument failed because it tried to read over the length of the Stream. Fixing https://github.com/dotnet/corefx/issues/22818 and adding test The bug also exists in .NET Framework 4.7: https://referencesource.microsoft.com/#mscorlib/system/security/claims/Claim.cs,477 How to transport the fix into the next version (or a servicing release) of .NET Framework? @Petermarcu Should this be integrated into the first servicing release of .NET Core 2.0 or into the final .NET Core 2.0 bits? cc @karelz @danmosemsft +22862 area-Serialization Remove unused NonSerializable attributes from non serializable types minor changes - just cleanup through the entire repo. +22866 area-System.Reflection Add a way to opt out of TargetInvocationException wrapping on late-bound invokes. "Late-bound invokes through Reflection wrap exceptions thrown by the target in a `TargetInvocationException`. In many cases, this behavior is not desired and counter-productive. For those who want the actual exception, it requires unwrapping the `TargetInvocationException` to rethrow the inner exception and to retrieve the full call stack. The fact that every exception is ""caught"" hampers the normal debugging experience. It'd be useful to have a way to opt out of this wrapping. We can do this without adding lots of new overloads by adding a new member to the `BindingFlags` enum: `BindingFlag.DoNotWrapExceptions`. Setting this bit would disable the wrapping behavior. Here is a fiddle of the code sample included below: https://dotnetfiddle.net/o9qUht ```C# public class Program { public static void Main() { try { var bf = BindingFlags.Static | BindingFlags.Public | BindingFlags.InvokeMethod; bf |= BindingFlags.DoNotWrapExceptions; typeof(Program).InvokeMember(""LateBoundTarget"", bf, null, null, null); } catch(TargetInvocationException e) { Console.WriteLine(""fail""); } catch(InvalidOperationException e) { Console.WriteLine(""success""); } } public static void LateBoundTarget() { throw new InvalidOperationException(); } } ``` ### Apis that would be affected: ```c# public static class Activator { public static object CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture); public static object CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes); } public class Type { public object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args); public object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, CultureInfo culture); public abstract object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters); } public class Assembly { public virtual object CreateInstance(string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes); } public abstract class ConstructorInfo : MethodBase { public abstract object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture); } public abstract class MethodBase : MemberInfo { public abstract object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture); } public abstract class PropertyInfo : MemberInfo { public abstract object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture); public abstract void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture); } ``` [EDIT] Added C# syntax highlight by @karelz" +22867 area-System.Net Add basic EventSource tracing to ManagedHandler cc: @geoffkizer +22869 area-System.Drawing Add nuget package configuration for System.Drawing.Common This adds a nuget package for System.Drawing.Common, which can be referenced in any .NET Core 2.0 or .NET Framework project. As part of it, I've added in the `netfx` build configurations for System.Drawing.Common, which are just pure facades over the System.Drawing assembly. I've also updated buildtools to avoid a validation error (see https://github.com/dotnet/buildtools/pull/1622). @ericstj Could you take a look? +22870 area-System.Reflection Allow Type.MakeGenericType to further instantiate partially instantiated Types "Currently `Type.MakeGenericType` will throw for types for which `Type.IsGenericTypeDefinition` is `false`. I'd like to lift that restriction and allow Type.MakeGenericType to further instantiate partially instantiated types. For example, given a `type` representing `Foo` where `T0` represents the first generic type parameter then the type `Foo` could be constructed by calling `type.MakeGenericType(typeof(string))`. Here is a fiddle of a slightly more complicated example which is copied below: https://dotnetfiddle.net/HYGMv9. A few ""food for thought"" cases: * If fewer types are supplied to `MakeGenericType` then the missing generic parameters are assumed to be the existing substitutions. Thus `type.MakeGenericType(new Type[] { })` would always succeed and return `type`. * `MakeGenericType` may accept fewer than or an equal number of types than `GenericTypeParameters.Length` but never more. * If all types have been substituted then `type.MakeGenericType(...)` will succeed (if an equal or fewer number of types than there are generic parameters are supplied) and return `type` * If no type parameters exist for a given substitution than that substitution is ignored. * `null` can be passed as a substitution argument to `MakeGenericType` if there no long exist any generic parameters which would be substituted for the position `null` occupies. * Although type parameters from other types can be used to instantiate a type only the type parameters for the type be instantiated are substituted. ``` C# using System; public class Foo { } public class Program { public static void Main() { var type = typeof(Foo<,,>); var genericArguments = type.GetGenericArguments(); var T0 = genericArguments[0]; var T1 = genericArguments[1]; var T2 = genericArguments[2]; var type_Int_T2_T1 = type.MakeGenericType(typeof(int), T2, T1); var type_Int_T1_Short = type.MakeGenericType(typeof(int), T0, typeof(short)); // Currently throws; Wish for it to succeed if (type_Int_T1_Short == type_Int_T2_T1.MakeGenericType( null, // T0 replacement => typeof(int) typeof(short), // T1 replacement T0) // T2 replacement ) Console.WriteLine(""success""); } }" +22871 area-System.Data SqlConnection.WorkstationId is null "Case 1: ``` var conn = new SqlConnection(@""Server=X;Database=master;User Id=Y;Password=Z""); Console.WriteLine(conn.WorkstationId); Console.WriteLine(Environment.MachineName); ``` in .NET 4.6 and mono it prints: > EGORBOPC > EGORBOPC in .NET Core it prints > (null) > EGORBOPC Case 2: ``` var conn = new SqlConnection(@""Server=X;Database=master;User Id=Y;Password=Z;Workstation Id=Desktop""); conn.Dispose(); Console.WriteLine(conn.WorkstationId); Console.WriteLine(Environment.MachineName); ``` in .NET 4.6 and mono it prints: > EGORBOPC > EGORBOPC in .NET Core it prints > """" (empty string) > EGORBOPC Windows 10 x86/64" +22872 area-System.Net Remove char[] allocation from Uri.HexEscape cc: @cipop, @davidsh +22873 area-System.Net Remove UriShim from HttpClient - Uri's members are now back in core; it can just use those directly. - Rather than calling HexEscape per character, which allocates a string per character, we can just encode directly to the StringBuilder. cc: @davidsh, @cipop, @geoffkizer, @Priya91 +22874 area-System.IO Expand Deflate64 WindowSize The WindowSize being used in the old managed deflate implementation that I modified to decompress Deflate64 is too small. Deflate64 can have lengths up to 64kb as well as distances up to 64kb when doing lookback. In my initial implementation I disregarded the increased length, allowing potentially 64kb of data to be written to an outputwindow that only has as little as 258 bytes of open space. This causes the previously inflated yet-to-be-flushed data to be overwritten, causing invalid output. The fix is simple: increase the WindowSize to fit the new length/distance maximums. Becuase of the way our managed Deflate implementation is written, it's not possible to simply flush the OutputWindow after already determining the lookback without a large rewrite, so I opted for the increased WindowSize solution instead. Testing is unfortunately not simple because it's rare that a file will need such a high length/distance and we do not have a Deflate64 deflater so we have to rely on other programs for generating test input. I've got a file that allows reproduction of the failure, but it's 3gb and doesn't experience data loss until a little under the 1gb mark. Because of the large size of the test file, I've left it out. I also took the chance to cleanup the s_extraLengthBits field. Currently, we attempt to read extra bits from input when given an invalid symbol for determining length. By shortening the arrays to only valid values, we instead throw an InvalidDataException early. cc: @stephentoub +22875 area-System.Data Removed SNIMarsManager, and modified TdsParserStateObjectManaged so that it manages its own SNIMarsConnection if MARS is enabled. This prevents SNIMarsConnections from accumulating forever in a static SNIMarsManager singleton. (#22709) Porting fix to release/uwp6.0 +22876 area-System.Data SqlCommand EndExecuteXmlReader is private I know the missing API stuff in System.Data is listed here https://github.com/dotnet/corefx/issues/17126 but in this particular case the [method](https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlCommand.cs#L1299) is fully implemented but it's private ([public](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.endexecutexmlreader(v=vs.110).aspx) in .NET 4.6) it looks like it can be easily fixed ;-) the full list of private members: ``` - IAsyncResult BeginExecuteNonQuery(System.AsyncCallback callback, object stateObject) - System.IAsyncResult BeginExecuteXmlReader(System.AsyncCallback callback, object stateObject) - int EndExecuteNonQuery(System.IAsyncResult asyncResult) - SqlDataReader EndExecuteReader(System.IAsyncResult asyncResult) - XmlReader EndExecuteXmlReader(System.IAsyncResult asyncResult) ``` +22877 area-System.Net HttpClientHandler not Correctly Setting Cookie on UAP WCF changed to use HttpClientHandler on UAP recently. One test (see https://github.com/dotnet/wcf/issues/2140) started failing on UAP. The issue is that the `HttpClientHandler` did not correctly set the associated `CookieContainer`. I did some investigation. To me, the bug seems to be in [`CookieTokenizer.FindNext`](https://github.com/dotnet/corefx/blob/e30fdc38e60f6fa2ed8e7e103d1f8c44655438cd/src/System.Net.Http/src/uap/System/Net/cookie.cs#L1264). See the code below, ```c# if (!Eof) { switch (m_tokenStream[m_index]) { case ';': token = CookieToken.EndToken; break; case '=': token = CookieToken.Equals; break; default: m_cookieLength = m_index - m_cookieStartIndex; token = CookieToken.EndCookie; break; } ++m_index; } else { m_cookieLength = m_index - m_cookieStartIndex; } ``` Consider the very last cookie in the cookie header, `m_cookieLength` would not be set for it. The above code probably should be, ```c# if (!Eof) { switch (m_tokenStream[m_index]) { case ';': token = CookieToken.EndToken; break; case '=': token = CookieToken.Equals; break; default: m_cookieLength = m_index - m_cookieStartIndex; token = CookieToken.EndCookie; break; } ++m_index; } if (Eof) // <--- Change here { m_cookieLength = m_index - m_cookieStartIndex; } ``` +22879 area-System.Data SqlConnection doesn't support empty values "``` var cn = new SqlConnection(""Timeout=""); Console.WriteLine(cn.ConnectionTimeout); ``` .NET 4.6 (and mono) prints: > 15 .NET Core: > System.ArgumentNullException: 'Value cannot be null.' I suspect it happens with other parameters too, for example - ""packet Size=""" +22880 area-Infrastructure Stop buildling Ubuntu 16.10 in all branches +22882 area-System.Data SqlConnection GetSchema throws NullReferenceException ``` SqlConnection cn = new SqlConnection(); cn.GetSchema(); ``` .NET 4.6 (and mono): > System.InvalidOperationException: 'Invalid operation. The connection is closed.' .NET Core: > NullReferenceException I guess NRE is not really user friendly +22883 area-System.Net Sockets: ensure InnerReleaseHandle is called exactly once In SafeCloseSocket, InnerReleaseHandle often gets called twice today -- once by CloseAsIs, once by ReleaseHandle. This can in rare occasions lead to deadlocks in the SocketAsyncContext code, deadlocked on the queuelock by multiple threads calling InnerReleaseHandle. Ensure that InnerReleaseHandle is called exactly once, and is consistently called before the innerSocket is released. @stephentoub @wfurt @Priya91 @davidsh @CIPop +22884 area-System.Net Sockets: disable unreliable new test Accept_ConcurrentAcceptsAfterConnects_Success isn't reliable in the ForceNonBlocking case, for the same reason as Accept_ConcurrentAcceptsBeforeConnects_Success, which is already disabled. @stephentoub @wfurt @Priya91 @davidsh @CIPop +22885 area-System.Net Test issue: Race condition with SocketHelperSyncForceNonBlocking.AcceptAsync SocketHelperSyncForceNonBlocking.AcceptAsync always toggles the Blocking setting on the listen socket. This results in a race condition if you do multiple concurrent accepts on a listen socket. Instead of toggling the listen socket's Blocking in AcceptAsync, we need a separate call to configure the listen socket to be nonblocking before we do the accepts. +22886 area-System.Data Backport Mars cleanup fix PR #22709 to release/2.0.0 This change should be backported to 2.0.0, if possible. PR: https://github.com/dotnet/corefx/pull/22709 Original issue: https://github.com/dotnet/corefx/issues/22661 +22887 area-System.IO [WIP] UWP support for serial port This is still in progress for #21156 and I want to get better coverage with tests on my box before moving ahead with this change, but, anyway I wanted to get this PR in place to get some feedback. There is still the issue about enumerating the COM ports in UWP, for now I didn't fix that but hard coded it for tests. +22888 area-System.Net Clean up usage of UriHelper Some more debt I noticed: we've got some duplication in UriHelper of functions that are again available on Uri, so remove the duplication and clean up the call sites. We've also got a dead UriHelper file copy in System.Net.Http that's no longer needed. And while cleaning that up, I noticed a few functions that could be made faster, e.g. Uri.IsHexDigit, Uri.FromHex, and Uri.IsHexEncoding... the changes make them 10-20% faster in microbenchmarks that just repeatedly call them with various inputs. cc: @davidsh, @cipop +22891 area-System.Threading Proposal/discussion: Task/Task implementing IObservable? When Task/Task were initially introduced, we went back and forth on whether they should implement IObservable. The remnants of this are even still visible in the desktop code, e.g. http://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Future.cs,75 http://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Future.cs,1598 If I remember correctly (and I might not), the reason we eventually didn't implement it was for layering concerns at the time, but given that both Task and IObservable are in corelib on all platforms, and in System.Runtime, I don't think there are any such layering concerns remaining. The main benefit to implementing these interfaces is that then combinators for IObservable would then also work for Task, e.g. making it easier to stream together the results from arbitrary numbers of async operations. This would raise the question of whether a Task would also implement an IAsyncEnumerable if/when such an interface exists, and if not, why it would implement IObservable. There's also the question of whether both `Task` and `Task` would implement the interface, and if so, what would the type `T` be in `IObservable`, e.g. ```C# public class Task : Task, IObservable { ... } public class Task : IObservable { ... } ``` or ```C# public class Task : Task, IObservable> { ... } public class Task : IObservable { ... } ``` or ```C# public class Task : Task, IObservable { ... } public class Task : IObservable { ... } ``` or ```C# public class Task : Task, IObservable { ... } public class Task { ... } ``` with the oddity compounded by `Task` implementing both the `IObservable` interface it implements and the `IObservable` its base Task implements, if the latter does so. +22892 area-System.Data Add initial tests to System.Data.DataSetExtensions Integrated new tests as well as existing tests from Mono. Still going through and adding tests, this is initial PR. Re: #22803 +22893 area-System.Drawing Remove SystemDrawingSection typeforward from our System.Drawing.dll shim cc: @joshfree @Petermarcu @weshaggard Removing SystemDrawingSection from ConfigurationManager's ref so that System.Drawing shim won't type forward to it. +22895 area-System.Net System.Net.CookieParser to Support Cookie String with Trailing Semicolon The issue was that if a cookie string has trailing semicolon, `System.Net.CookieParser.GetString()` returns empty string. The issue was found on UAP/UAPAOT runs as `System.Net.CookieParser.GetString()` was used on those platforms. We would also need to port the fix to UWP6.0 branch. Fix #22877 +22896 area-System.Net Fixing abort race condition in ClientWebSocket for UWP. I was able to force a repro by queuing a ReadAsync task while, on another thread, scheduling two SendAsync operations that would Abort the WebSocket. Exceptions are now handled through `AbortInternal` instead of checking the state of the socket after the ReadAsync operation. I've also added `ConfigureAwait` statements to `await`s. Fixes #22746 +22898 area-System.Net Fix ManagedHandler environment proxy setting handling Missing a clause resulting in test failures. cc: @geoffkizer +22900 area-System.Net "Test: System.Net.Sockets.Tests.AcceptSyncForceNonBlocking/Accept_ConcurrentAcceptsAfterConnects_Success failed with ""System.Net.Sockets.SocketException : Resource temporarily unavailable""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.AcceptSyncForceNonBlocking/Accept_ConcurrentAcceptsAfterConnects_Success(numberAccepts: 5)` has failed. System.Net.Sockets.SocketException : Resource temporarily unavailable Stack Trace: at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) in /root/corefx-901735/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5272 at System.Net.Sockets.Socket.Accept() in /root/corefx-901735/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 1059 at System.Net.Sockets.Tests.SocketHelperSyncForceNonBlocking.<>c__DisplayClass0_0.b__0() in /root/corefx-901735/src/System.Net.Sockets/tests/FunctionalTests/SocketTestHelper.cs:line 74 at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Sockets.Tests.Accept`1.d__2.MoveNext() in /root/corefx-901735/src/System.Net.Sockets/tests/FunctionalTests/Accept.cs:line 125 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170803.01 (Core Tests) Failing configurations: - suse.422.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170803.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.AcceptSyncForceNonBlocking~2FAccept_ConcurrentAcceptsAfterConnects_Success(numberAccepts:%205) +22901 area-System.Runtime "Test: System.Tests.TypeTestsExtended/GetTypeByName failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Tests.TypeTestsExtended/GetTypeByName` has failed. System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options, Boolean pasteArguments) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.Tests.TypeTestsExtended.GetTypeByName() Build : Master - 20170803.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170803.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.TypeTestsExtended~2FGetTypeByName +22902 area-System.Runtime "Test: System.Tests.StringTests/Ctor_CharSpan failed with ""System.NullReferenceException"" & ""System.OutOfMemoryException""" "Opened on behalf of @Jiayili1 The test `System.Tests.StringTests/Ctor_CharSpan(valueArray: ['a', 'b', 'c', 'd', 'e', ...], startIndex: 0, length: 12, expected: \""abcdefgh\\0ijk\"")` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.String.Ctor() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\String.cs:line 15732480 at System.Tests.StringTests.Ctor_CharSpan() in E:\A\_work\305\s\corefx\src\System.Runtime\tests\System\StringTests.netcoreapp.cs:line 32 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetVIIII() at System.InvokeUtils.CalliIntrinsics.Call() at System.InvokeUtils.CallDynamicInvokeMethod() in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170803.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170803.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.StringTests~2FCtor_CharSpan(valueArray:%20%5B'a',%20'b',%20'c',%20'd',%20'e',%20...%5D,%20startIndex:%200,%20length:%2012,%20expected:%20%5C%22abcdefgh%5C%5C0ijk%5C%22)" +22904 area-System.Net Test: System.Net.WebSockets.Client.Tests.CancelTest / CloseAsync_Cancel_Success Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.CancelTest/CloseAsync_Cancel_Success(server: wss://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. Assert.Equal() Failure\r Expected: Aborted\r Actual: Open Stack Trace: at System.Net.WebSockets.Client.Tests.ClientWebSocketTestBase.d__8.MoveNext$catch$0() in E:\A\_work\825\s\corefx\src\System.Net.WebSockets.Client\tests\ClientWebSocketTestBase.cs:line 66 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Net.WebSockets.Client.Tests.CancelTest.d__4.MoveNext() in E:\A\_work\825\s\corefx\src\System.Net.WebSockets.Client\tests\CancelTest.cs:line 80 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : UWP 6.0 - 20170803.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Filc~2F/build/20170803.01/workItem/System.Net.WebSockets.Client.Tests.Execution/analysis/xunit/System.Net.WebSockets.Client.Tests.CancelTest~2FCloseAsync_Cancel_Success(server:%20wss:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +22905 area-Infrastructure Add documentation on how to use one's corefx build I forgot how to use the corefx binaries for testing in a console app, after not making PRs for a while. I've added documentation on how to do this in case I ever get stuck on that again, and hopefully prevent others from wasting time. **To Do** - [x] Add link to document in `Documentation/README.md` +22909 area-System.Linq Include and ThenInclude not working after groupBy with OrderBy Core 2.0 AspNetCore.All 2.1.0-preview1-26462 Navigation property ICollection is null, Core 1.1 work fine +22910 area-System.Net HttpListener Cookie issue "This is my code : var cookies=new string[]{ ""SP_GUEST=; domain=xx.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT"", ""SP_F=sadfsdfsdf; domain=xx.com; path=/; expires=Sat, 02-Sep-2017 08:41:07 GMT"", ""SP_RETURN_USER=ssdfsdf; domain=xx.com; path=/; expires=Sat, 02-Sep-2017 08:41:07 GMT"" } foreach (var c in cookies) { HttpListenerResponse.Headers.Add(""Set-Cookie"",c); } In windows the response cookie is : Set-Cookie: SP_GUEST=; domain=xx.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT Set-Cookie: SP_F=sadfsdfsdf; domain=xx.com; path=/; expires=Sat, 02-Sep-2017 08:41:07 GMT Set-Cookie: SP_RETURN_USER=ssdfsdf; domain=xx.com; path=/; expires=Sat, 02-Sep-2017 08:41:07 GMT but in Centos7.3 return: Set-Cookie: SP_GUEST=; domain=xx.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT, SP_F=sadfsdfsdf; domain=xx.com; path=/; expires=Sat, 02-Sep-2017 08:41:07 GMT, SP_RETURN_USER=ssdfsdf; domain=xx.com; path=/; expires=Sat, 02-Sep-2017 08:41:07 GMT cookie connected together dotnet --version 2.0.0-preview2-006497" +22911 area-System.Data sqlclient not Found Exception get exception on sqlconnection open. UWP Visual Studio preview, Windows 10 Creators update referenced 6.0.0-preview2-25602-02 sqlclient 4.5.0-preview2-25603-01 System.IO.FileNotFoundException ist aufgetreten. HResult=0x80070002 Nachricht = Could not load file or assembly 'System.Threading.Thread, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Das System kann die angegebene Datei nicht finden. Quelle = Stapelüberwachung: bei System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) bei System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) bei System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) bei System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) bei System.Data.SqlClient.SqlConnection.Open() bei ADO.NETSharp.MainPage.Button_Click(Object sender, RoutedEventArgs e) in c:\win10\ADO.NETSharp\ADO.NETSharp\MainPage.xaml.cs: Zeile37 +22921 area-System.Net [release/uwp6.0] Fixing abort race condition in ClientWebSocket for UWP. (#22896) Port #22896 to release/uwp6.0. I was able to force a repro #22746 by queuing a ReadAsync task while, on another thread, scheduling two SendAsync operations that would Abort the WebSocket. Exceptions are [now ](https://github.com/dotnet/corefx/commit/5573a9e3d4151642e8e2ff477eba2f2eda954fb4) handled through AbortInternal instead of checking the state of the socket after the ReadAsync operation. I've also added ConfigureAwait statements to awaits. +22922 area-System.Data Plain zero insertion error when SqlBulkCopy `SqlDecimal` 0 has precision *1* scale *0*. When the scale is adjusted by n *(n>0)*, currently, n is just added up to both prevision and scale, which makes precision 1+n and scale 0+n. Adjusting scale by 2 converts `SqlDecimal` 0 (precision 1, scale 0) into 0.00 with precision 3 and scale 2. This caused an issue on `SqlBulkcopy`, when a row with `SqlDecimal` 0 in `DataTable` was being inserted to a table which has *decimal(2,2)* type in the corresponding column. +22923 area-System.IO System.IO.Compression is using managed rather than zlib crc32 implementation The FEATURE_ZLIB flag stopped getting set in https://github.com/dotnet/corefx/commit/45b4c71bff924245d8962035bd751d65c45bf31d#diff-c6b38c104d8ce4d33770fa26bcb7c315L9 cc: @ericstj, @ianhays +22924 area-Infrastructure Add linux-arm64 to official builds This is needed for validation now that we support the linux-arm64 RID. +22925 area-System.Net CookieParser.Get() not Returning Cookie Correctly. I have a cookie string as shown below, `cookie_name1=cookie_value1;cookie_name2=cookie_value2` I have the following test code, ```c# var parser = new CookieParser(cookieString); while (true) { Cookie cookie = parser.Get(); if (cookie == null) { break; } cookieCount++; } ``` I expected the cookieCount to be the count of the cookies in the string. For the example, I expected the count to be 2. But the actual value was 1. If I used parser.GetServer() instead of Get() in the test code, the cookieCount is as expected. So I wondered if the behavior is as expected. Please see test CookieParserGet_SetCookieHeaderValue_Success. The test failed due to the issue. +22926 area-System.Data Fix plain zero insertion error when SqlBulkCopy This is a fix for https://github.com/dotnet/corefx/issues/22922 *** `SqlDecimal` 0 has precision *1* scale *0*. When the scale is adjusted by n *(n>0)*, currently, n is just added up to both prevision and scale, which makes precision 1+n and scale 0+n. Adjusting scale by 2 converts `SqlDecimal` 0 (precision 1, scale 0) into 0.00 with precision 3 and scale 2. This caused an issue on `SqlBulkcopy`, when a row with `SqlDecimal` 0 in `DataTable` was being inserted to a table which has *decimal(2,2)* type in the corresponding column. +22928 area-System.Data Fix SqlClient UapAot test failures caused by blocked reflection of internal types (#22618) Porting test fix to release/uwp6.0 +22929 area-Meta Publish non-allocating coding patterns found during PR review. PR review is a rare window of opportunity to identify common coding pitfalls in production code. Since over-allocation has proved to have negative impact on .NET programs I suggest documenting common coding patterns seen in PR which avoid over-allocation. I believe this type of knowledge would be very hard to gather later on; therefore I suggest this be added as a goal to PR review. +22930 area-System.IO Use new WinRT APIs for SpecialFolders (#22664) Ports #22664. This addresses #20782. * Use new WinRT APIs for SpecialFolders * Update tests * Update test package Fix test verification * Clean up project files * Add back test skip condition * Add comments and fallback Windows dir. +22931 area-Serialization Add more parameters, functions in SGEN Need add the following parameters, functions, which existed in desktop version. ? help nologo silent - silently fail verbose - more error message debug - keep pdb keep - keep cs files parsableerrors assembly // For command line apps, cmd.exe cannot display right-to-left languages currently. Change the // CurrentUICulture to meet their needs, falling back to our invariant resources. SetConsoleUICulture WriteHelp, WriteHeader methods +22932 area-Serialization Review the parameters in csc command Review the csc parameters. +22933 area-System.Net System.Net.Sockets hang on Fedora 26 / amd64 Fedora.26.Amd64.Open:Release-x64 Details from Job fc812eef-160b-4fd1-bf70-32716ed58c2f ExitCode: -3 Ran on Machine: dnbfed26p0000YO ``` 2017-08-03 13:58:01,087: INFO: proc(54): run_and_log_output: Output: total elapsed time 0:00:00.156145 2017-08-03 13:58:01,184: INFO: proc(54): run_and_log_output: Output: xUnit.net console test runner (64-bit .NET Core) 2017-08-03 13:58:01,184: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-08-03 13:58:01,185: INFO: proc(54): run_and_log_output: Output: 2017-08-03 13:58:01,249: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Sockets.Tests 2017-08-03 13:58:01,620: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Sockets.Tests 2017-08-03 13:58:01,940: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Sockets.Tests ``` ``` 2017-08-03 14:18:00,691: ERROR: executor(350): _execute_command: Executor timed out after 1200 seconds and was killed. 2017-08-03 14:18:00,692: INFO: event(43): send: Sending event type WorkItemTimeout 2017-08-03 14:18:00,725: INFO: saferequests(90): request_with_retry: Response complete with status code '201' 2017-08-03 14:18:00,726: INFO: executor(368): _execute_command: Finished _execute_command, exit code: -3 ``` https://mc.dot.net/#/user/CIPop/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Frelease~2Fuwp6.0~2F/test~2Ffunctional~2Fcli~2F/1066b07f751912f2f7bdbb0734a8fcf4a784ad9f/workItem/System.Net.Sockets.Tests/wilogs +22934 area-Serialization Use immediate path instead of output path +22935 area-Serialization Handle the errors from CSC Handle the errors from csc, need let customer know either warnings or errors if fail to generate the cs file, fail to compile +22936 area-Serialization Enable the auto build scenario when download the SGEN package The prototype is done. Now we manually rename the exe to dll. And manually put the files into the package. Need make it in the corefx. +22937 area-Serialization Allow the customer to pass the additional parameter through the config Currently, in our prototype, we hard code the sgen command. Need allow the customer to pass the additional parameter through the config. +22938 area-Serialization Display one warning when fail to generate the serialization code for some types. Display one warning when fail to generate the serialization code for some types Put the details in the log +22939 area-System.Net [release/uwp6.0] System.Net.CookieParser to Support Cookie String with Trailing Semicolon The issue was that if a cookie string has trailing semicolon, System.Net.CookieParser.GetString() returns empty string. The issue was found on UAP/UAPAOT runs as System.Net.CookieParser.GetString() was used on those platforms. Fix #22877 +22940 area-System.Runtime API Proposal: Add Intel hardware intrinsic functions and namespace "This proposal adds intrinsics that allow programmers to use managed code (C#) to leverage Intel® SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA, LZCNT, POPCNT, BMI1/2, PCLMULQDQ, and AES instructions. ## Rationale and Proposed API ### Vector Types Currently, .NET provides `System.Numerics.Vector` and related intrinsic functions as a cross-platform SIMD interface that automatically matches proper hardware support at JIT-compile time (e.g. `Vector` is size of 128-bit on SSE2 machines or 256-bit on AVX2 machines). However, there is no way to simultaneously use different size `Vector`, which limits the flexibility of SIMD intrinsics. For example, on AVX2 machines, XMM registers are not accessible from `Vector`, but certain instructions have to work on XMM registers (i.e. SSE4.2). Consequently, this proposal introduces `Vector128` and `Vector256` in a new namespace `System.Runtime.Intrinsics` ```csharp // Types.cs namespace System.Runtime.Intrinsics { // 128 bit types [StructLayout(LayoutKind.Sequential, Size = 16)] public struct Vector128 where T : struct {} // 256 bit types [StructLayout(LayoutKind.Sequential, Size = 32)] public struct Vector256 where T : struct {} } ``` This namespace is platform agnostic, and other hardware could provide intrinsics that operate over them. For instance, `Vector128` could be implemented as an abstraction of XMM registers on SSE capable processor or as an abstraction of Q registers on NEON capable processors. Meanwhile, other types may be added in the future to support newer SIMD architectures (i.e. adding 512-bit vector and mask vector types for AVX-512). In addition, this namespace would contain conversion functions between the existing SIMD type (`Vector`) and new `Vector128` and `Vector256` types, which enable legacy SIMD programs that use `Vector` to be further optimized for specific hardware. ### Intrinsic Functions The current design of `System.Numerics.Vector` abstracts away the specifics of processor details. While this approach works well in many cases, developers may not be able to take full advantage of the underlying hardware. Intrinsic functions allow developers to access full capability of processors on which their programs run. One of the design goals of intrinsics APIs is to provide one-to-one correspondence to [Intel C/C++ intrinsics](https://software.intel.com/sites/landingpage/IntrinsicsGuide/). That way, programmers already familiar with C/C++ intrinsics can easily leverage their existing skills. Another advantage of this approach is that we leverage the existing body of documentation and sample code written for C/C++ instrinsics. Intrinsic functions that manipulate `Vector128/256` will be placed in a platform-specific namespace `System.Runtime.Intrinsics.X86`. Intrinsic APIs will be separated to several static classes based-on the instruction sets they belong to. ```csharp // Avx.cs namespace System.Runtime.Intrinsics.X86 { public static class Avx { public static bool IsSupported {get;} // __m256 _mm256_add_ps (__m256 a, __m256 b) [Intrinsic] public static Vector256 Add(Vector256 left, Vector256 right) { throw new NotImplementedException(); } // __m256d _mm256_add_pd (__m256d a, __m256d b) [Intrinsic] public static Vector256 Add(Vector256 left, Vector256 right) { throw new NotImplementedException(); } // __m256 _mm256_addsub_ps (__m256 a, __m256 b) [Intrinsic] public static Vector256 AddSubtract(Vector256 left, Vector256 right) { throw new NotImplementedException(); } // __m256d _mm256_addsub_pd (__m256d a, __m256d b) [Intrinsic] public static Vector256 AddSubtract(Vector256 left, Vector256 right) { throw new NotImplementedException(); } ...... } } ``` Some of intrinsics benefit from C# generic and get simpler APIs: ```csharp // Sse2.cs namespace System.Runtime.Intrinsics.X86 { public static class Sse { public static bool IsSupported {get;} // __m128 _mm_castpd_ps (__m128d a) // __m128i _mm_castpd_si128 (__m128d a) // __m128d _mm_castps_pd (__m128 a) // __m128i _mm_castps_si128 (__m128 a) // __m128d _mm_castsi128_pd (__m128i a) // __m128 _mm_castsi128_ps (__m128i a) [Intrinsic] public static Vector128 StaticCast(Vector128 value) where T : struct where U : struct { throw new NotImplementedException(); } ...... } } ``` Each instruction set class contains an `IsSupported` property which stands for whether the underlying hardware supports the instruction set. Programmers use these properties to ensure that their code can run on any hardware via platform-specific code path. For JIT compilation, the results of capability checking are JIT time constants, so dead code path for the current platform will be eliminated by JIT compiler (conditional constant propagation). For AOT compilation, compiler/runtime executes the CPUID checking to identify corresponding instruction sets. Additionally, the intrinsics do not provide software fallback and calling the intrinsics on machines that has no corresponding instruction sets will cause `PlatformNotSupportedException` at runtime. Consequently, we always recommend developers to provide software fallback to remain the program portable. Common pattern of platform-specific code path and software fallback looks like below. ```csharp if (Avx2.IsSupported) { // The AVX/AVX2 optimizing implementation for Haswell or above CPUs } else if (Sse41.IsSupported) { // The SSE optimizing implementation for older CPUs } ...... else { // Scalar or software-fallback implementation } ``` The scope of this API proposal is not limited to SIMD (vector) intrinsics, but also includes scalar intrinsics that operate over scalar types (e.g. int, short, long, or float, etc.) from the instruction sets mentioned above. As an example, the following code segment shows `Crc32` intrinsic functions from `Sse42` class. ```csharp // Sse42.cs namespace System.Runtime.Intrinsics.X86 { public static class Sse42 { public static bool IsSupported {get;} // unsigned int _mm_crc32_u8 (unsigned int crc, unsigned char v) [Intrinsic] public static uint Crc32(uint crc, byte data) { throw new NotImplementedException(); } // unsigned int _mm_crc32_u16 (unsigned int crc, unsigned short v) [Intrinsic] public static uint Crc32(uint crc, ushort data) { throw new NotImplementedException(); } // unsigned int _mm_crc32_u32 (unsigned int crc, unsigned int v) [Intrinsic] public static uint Crc32(uint crc, uint data) { throw new NotImplementedException(); } // unsigned __int64 _mm_crc32_u64 (unsigned __int64 crc, unsigned __int64 v) [Intrinsic] public static ulong Crc32(ulong crc, ulong data) { throw new NotImplementedException(); } ...... } } ``` ### Intended Audience The intrinsics APIs bring the power and flexibility of accessing hardware instructions directly from C# programs. However, this power and flexibility means that developers have to be cognizant of how these APIs are used. In addition to ensuring that their program logic is correct, developers must also ensure that the use of underlying intrinsic APIs are valid in the context of their operations. For example, developers who use certain hardware intrinsics should be aware of their data alignment requirements. Both aligned and unaligned memory load and store intrinsics are provided, and if aligned loads and stores are desired, developers must ensure that the data are aligned appropriately. The following code snippet shows the different flavors of load and store intrinsics proposed: ```csharp // Avx.cs namespace System.Runtime.Intrinsics.X86 { public static class Avx { ...... // __m256i _mm256_loadu_si256 (__m256i const * mem_addr) [Intrinsic] public static unsafe Vector256 Load(sbyte* address) { throw new NotImplementedException(); } // __m256i _mm256_loadu_si256 (__m256i const * mem_addr) [Intrinsic] public static unsafe Vector256 Load(byte* address) { throw new NotImplementedException(); } ...... [Intrinsic] public static Vector256 Load(ref T vector) where T : struct { throw new NotImplementedException(); } // __m256i _mm256_load_si256 (__m256i const * mem_addr) [Intrinsic] public static unsafe Vector256 LoadAligned(sbyte* address) { throw new NotImplementedException(); } // __m256i _mm256_load_si256 (__m256i const * mem_addr) [Intrinsic] public static unsafe Vector256 LoadAligned(byte* address) { throw new NotImplementedException(); } ...... // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) [Intrinsic] public static unsafe Vector256 LoadDqu(sbyte* address) { throw new NotImplementedException(); } // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) [Intrinsic] public static unsafe Vector256 LoadDqu(byte* address) { throw new NotImplementedException(); } ...... // void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) [Intrinsic] public static unsafe void Store(sbyte* address, Vector256 source) { throw new NotImplementedException(); } // void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) [Intrinsic] public static unsafe void Store(byte* address, Vector256 source) { throw new NotImplementedException(); } ...... public static void Store(ref T vector, Vector256 source) where T : struct { throw new NotImplementedException(); } // void _mm256_store_si256 (__m256i * mem_addr, __m256i a) [Intrinsic] public static unsafe void StoreAligned(sbyte* address, Vector256 source) { throw new NotImplementedException(); } // void _mm256_store_si256 (__m256i * mem_addr, __m256i a) [Intrinsic] public static unsafe void StoreAligned(byte* address, Vector256 source) { throw new NotImplementedException(); } ...... // void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) [Intrinsic] public static unsafe void StoreAlignedNonTemporal(sbyte* address, Vector256 source) { throw new NotImplementedException(); } // void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) [Intrinsic] public static unsafe void StoreAlignedNonTemporal(byte* address, Vector256 source) { throw new NotImplementedException(); } ...... } } ``` ### IMM Operands Most of the intrinsics can be directly ported to C# from C/C++, but certain instructions that require immediate parameters (i.e. imm8) as operands deserve additional consideration, such as `pshufd`, ` vcmpps`, etc. C/C++ compilers specially treat these intrinsics which throw compile-time errors when non-constant values are passed into immediate parameters. Therefore, CoreCLR also requires the immediate argument guard from C# compiler. We suggest an addition of a new ""compiler feature"" into Roslyn which places `const` constraint on function parameters. Roslyn could then ensure that these functions are invoked with ""literal"" values on the `const` formal parameters. ```csharp // Avx.cs namespace System.Runtime.Intrinsics.X86 { public static class Avx { ...... // __m256 _mm256_blend_ps (__m256 a, __m256 b, const int imm8) [Intrinsic] public static Vector256 Blend(Vector256 left, Vector256 right, const byte control) { throw new NotImplementedException(); } // __m256d _mm256_blend_pd (__m256d a, __m256d b, const int imm8) [Intrinsic] public static Vector256 Blend(Vector256 left, Vector256 right, const byte control) { throw new NotImplementedException(); } // __m128 _mm_cmp_ps (__m128 a, __m128 b, const int imm8) [Intrinsic] public static Vector128 Compare(Vector128 left, Vector128 right, const FloatComparisonMode mode) { throw new NotImplementedException(); } // __m128d _mm_cmp_pd (__m128d a, __m128d b, const int imm8) [Intrinsic] public static Vector128 Compare(Vector128 left, Vector128 right, const FloatComparisonMode mode) { throw new NotImplementedException(); } ...... } } // Enums.cs namespace System.Runtime.Intrinsics.X86 { public enum FloatComparisonMode : byte { EqualOrderedNonSignaling, LessThanOrderedSignaling, LessThanOrEqualOrderedSignaling, UnorderedNonSignaling, NotEqualUnorderedNonSignaling, NotLessThanUnorderedSignaling, NotLessThanOrEqualUnorderedSignaling, OrderedNonSignaling, ...... } ...... } ``` ## Semantics and Usage The semantic is straightforward if users are already familiar with [Intel C/C++ intrinsics](https://software.intel.com/sites/landingpage/IntrinsicsGuide/). Existing SIMD programs and algorithms that are implemented in C/C++ can be directly ported to C#. Moreover, compared to `System.Numerics.Vector`, these intrinsics leverage the whole power of Intel SIMD instructions and do not depend on other modules (e.g. `Unsafe`) in high-performance environments. For example, SoA (structure of array) is a more efficient pattern than AoS (array of structure) in SIMD programming. However, it requires dense `shuffle` sequences to convert data source (usually stored in AoS format), which is not provided by `Vector`. Using `Vector256` with AVX shuffle instructions (including shuffle, insert, extract, etc.) can lead to higher throughput. ```csharp public struct Vector256Packet { public Vector256 xs {get; private set;} public Vector256 ys {get; private set;} public Vector256 zs {get; private set;} // Convert AoS vectors to SoA packet public unsafe Vector256Packet(float* vectors) { var m03 = Avx.ExtendToVector256(Sse2.Load(&vectors[0])); // load lower halves var m14 = Avx.ExtendToVector256(Sse2.Load(&vectors[4])); var m25 = Avx.ExtendToVector256(Sse2.Load(&vectors[8])); m03 = Avx.Insert(m03, &vectors[12], 1); // load higher halves m14 = Avx.Insert(m14, &vectors[16], 1); m25 = Avx.Insert(m25, &vectors[20], 1); var xy = Avx.Shuffle(m14, m25, 2 << 6 | 1 << 4 | 3 << 2 | 2); var yz = Avx.Shuffle(m03, m14, 1 << 6 | 0 << 4 | 2 << 2 | 1); var _xs = Avx.Shuffle(m03, xy, 2 << 6 | 0 << 4 | 3 << 2 | 0); var _ys = Avx.Shuffle(yz, xy, 3 << 6 | 1 << 4 | 2 << 2 | 0); var _zs = Avx.Shuffle(yz, m25, 3 << 6 | 0 << 4 | 3 << 2 | 1); xs = _xs; ys = _ys; zs = _zs; } ...... } public static class Main { static unsafe int Main(string[] args) { var data = new float[Length]; fixed (float* dataPtr = data) { if (Avx2.IsSupported) { var vector = new Vector256Packet(dataPtr); ...... // Using AVX/AVX2 intrinsics to compute eight 3D vectors. } else if (Sse41.IsSupported) { var vector = new Vector128Packet(dataPtr); ...... // Using SSE intrinsics to compute four 3D vectors. } else { // scalar algorithm } } } } ``` Furthermore, conditional code is enabled in vectorized programs. Conditional path is ubiquitous in scalar programs (`if-else`), but it requires specific SIMD instructions in vectorized programs, such as compare, blend, or andnot, etc. ```csharp public static class ColorPacketHelper { public static IntRGBPacket ConvertToIntRGB(this Vector256Packet colors) { var one = Avx.Set1(1.0f); var max = Avx.Set1(255.0f); var rsMask = Avx.Compare(colors.xs, one, FloatComparisonMode.GreaterThanOrderedNonSignaling); var gsMask = Avx.Compare(colors.ys, one, FloatComparisonMode.GreaterThanOrderedNonSignaling); var bsMask = Avx.Compare(colors.zs, one, FloatComparisonMode.GreaterThanOrderedNonSignaling); var rs = Avx.BlendVariable(colors.xs, one, rsMask); var gs = Avx.BlendVariable(colors.ys, one, gsMask); var bs = Avx.BlendVariable(colors.zs, one, bsMask); var rsInt = Avx.ConvertToVector256Int(Avx.Multiply(rs, max)); var gsInt = Avx.ConvertToVector256Int(Avx.Multiply(gs, max)); var bsInt = Avx.ConvertToVector256Int(Avx.Multiply(bs, max)); return new IntRGBPacket(rsInt, gsInt, bsInt); } } public struct IntRGBPacket { public Vector256 Rs {get; private set;} public Vector256 Gs {get; private set;} public Vector256 Bs {get; private set;} public IntRGBPacket(Vector256 _rs, Vector256 _gs, Vector256_bs) { Rs = _rs; Gs = _gs; Bs = _bs; } } ``` As previously stated, traditional scalar algorithms can be accelerated as well. For example, CRC32 is natively supported on SSE4.2 CPUs. ```csharp public static class Verification { public static bool VerifyCrc32(ulong acc, ulong data, ulong res) { if (Sse42.IsSupported) { return Sse42.Crc32(acc, data) == res; } else { return SoftwareCrc32(acc, data) == res; // The software implementation of Crc32 provided by developers or other libraries } } } ``` ## Implementation Roadmap Implementing all the intrinsics in JIT is a large-scale and long-term project, so the current plan is to initially implement a subset of them with unit tests, code quality test, and benchmarks. The first step in the implementation would involve infrastructure related items. This step would involve wiring the basic components, including but not limited to internal data representations of `Vector128` and `Vector256`, intrinsics recognition, hardware support checking, and external support from Roslyn/CoreFX. Next steps would involve implementing subsets of intrinsics in classes representing different instruction sets. ## Complete API Design [Add Intel hardware intrinsic APIs to CoreFX #23489](https://github.com/dotnet/corefx/pull/23489) [Add Intel hardware intrinsic API implementation to mscorlib #13576](https://github.com/dotnet/coreclr/pull/13576) ## Update 08/17/2017 - Change namespace `System.Runtime.CompilerServices.Intrinsics` to `System.Runtime.Intrinsics` and `System.Runtime.CompilerServices.Intrinsics.X86` to `System.Runtime.Intrinsics.X86`. - Change ISA class name to match CoreFX naming convention, e.g., using `Avx` instead of `AVX`. - Change certain pointer parameter names, e.g., using `address` instead of `mem`. - Define `IsSupport` as properties. - Add `Span` overloads to the most common memory-access intrinsics (`Load`, `Store`, `Broadcast`), but leave other alignment-aware or performance-sensitive intrinsics with original pointer version. - Clarify that these intrinsics will not provide software fallback. - Clarify `Sse2` class design and separate small calsses (e.g., `Aes`, `Lzcnt`, etc.) into individual source files (e.g., `Aes.cs`, `Lzcnt.cs`, etc.). - Change method name `CompareVector*` to `Compare` and get rid of `Compare` prefix from `FloatComparisonMode`. 08/22/2017 - Replace `Span` overloads by `ref T` overloads. 09/01/2017 - Minor changes from API code review. " +22941 area-System.Drawing Clean up path validation related issues in System.Drawing.Common There were several places in the .NET Framework codebase for System.Drawing which called `IntSecurity.DemandReadFileIO(string);`. On first glance, this looks to be a CAS-related call, which isn't interesting in .NET Core. What isn't obvious is that this also ends up calling `Path.GetFullPath` on the string passed in, and that call may throw argument validation exceptions. If the path is `null`, for example, the security demand will result in an ArgumentNullException. These calls were omitted from the .NET Core version when I trimmed out all of the security demands. I've added these back, and fixed up several test cases which validated the behavior, and were previously disabled. Path.GetFullPath in .NET Core now correctly sets the `ParamName` property on its ArgumentException, so the assertions have been augmented to expect that. There were several tests which also expected some methods to result in a `PathTooLongException` being thrown from `Path.GetFullPath`. However, .NET Core no longer eagerly throws that exception from `Path.GetFullPath`. I have removed those test cases. @hughbe @KostaVlev +22943 area-System.Net BufferBuilder: Avoid unnecessary char[] and byte[] allocations Use `GetByteCount` and the overload of `GetBytes` that avoids the unnecessary `char[]` and `byte[]` allocations. +22944 area-Infrastructure Add retry to PDB conversion official build step "This brings in https://github.com/dotnet/buildtools/pull/1623, which adds a retry to the official build step that converts Portable PDBs to Windows PDBs. This will fix an occasional build error in the ""Symbol Publish"" leg: https://github.com/dotnet/core-eng/issues/1273." +22946 area-System.Net HttpDateParse: Avoid unnecessary char[] allocation and cleanup Avoid calling `ToCharArray` and just operate on the string directly to avoid the unnecessary `char[]` allocation. Also, cleaned the formatting and naming in the file while making changes here. cc: @davidsh, @CIPop, @Priya91 +22949 area-Infrastructure How to build self-contained app on archlinux? https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json I can not find any define in runtime.json but i can really run dotnet run to exec my app. I read full https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli But not find how to build on archlinux would you please add a archlinux.x64 to runtime.json? +22952 area-System.Net "Test: System.Net.WebSockets.Client.Tests.CloseTest/CloseOutputAsync_ClientInitiated_CanReceive_CanClose failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.CloseTest/CloseOutputAsync_ClientInitiated_CanReceive_CanClose(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. Assert.Equal() Failure\r Expected: 17\r Actual: 0 Stack Trace: at System.Net.WebSockets.Client.Tests.CloseTest.d__7.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170804.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170804.01/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Client.Tests.CloseTest~2FCloseOutputAsync_ClientInitiated_CanReceive_CanClose(server:%20ws:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +22953 area-System.IO "Test: System.IO.Tests.DirectoryInfo_Delete_bool/RecursiveDelete_DeepNesting failed with ""System.IO.PathTooLongException""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.DirectoryInfo_Delete_bool/RecursiveDelete_DeepNesting` has failed. System.IO.PathTooLongException : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. Stack Trace: at System.IO.PathHelper.GetFullPathName() at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) at System.IO.Path.GetFullPathInternal(String path) at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost) at System.IO.Tests.Directory_Delete_str_bool.RecursiveDelete_DeepNesting() in E:\A\_work\398\s\corefx\src\System.IO.FileSystem\tests\Directory\Delete.cs:line 276 Build : Master - 20170804.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Windows.10.Amd64.Core-x86 - Debug - Windows.10.Amd64-x86 - Debug - Windows.10.Amd64.Core-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170804.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Delete_bool~2FRecursiveDelete_DeepNesting +22956 area-System.Net "System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest.PostAsync_RedirectWith302_LargePayload failed with ""System.OperationCanceledException"" in CI" Failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest.PostAsync_RedirectWith302_LargePayload Configuration: OuterLoop_netcoreapp_ubuntu14.04_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu14.04_debug/131/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandlerTest/PostAsync_RedirectWith302_LargePayload/ MESSAGE: ~~~ System.OperationCanceledException : The operation was canceled. ~~~ STACK TRACE: ~~~ at System.Net.Http.HttpClient.HandleFinishSendAsyncError(Exception e, CancellationTokenSource cts) in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 508 at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 463 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__83.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 1582 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__82.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_debug/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 1566 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +22957 area-System.Runtime Expose an `Unsafe.CallIndirect` method. "### Rationale Today, in C#, you can only invoke an unmanaged function pointer by first calling `Marshal.GetDelegateForFunctionPointer` and then invoking the resulting delegate that is created. This not only comes with the increased overhead of the call (`Marshal.GetDelegateForFunctionPointer`) itself, but it also incurs a heap allocation and a 4-6x memory increase, not including internal runtime allocations/overhead -- the `MulticastDelegate` type has an `object` and an `IntPtr` field and the base `Delegate` type itself has two `object` and two `IntPtr` fields -- Invoking the method also has some increased overhead as it goes through the `Delegate.Invoke` call rather than as a direct invocation. The C# language has planned support for `static delegates` in the future (https://github.com/dotnet/csharplang/blob/c5de26f52019ca0e1e79d88584f75bfe530ee986/proposals/static-delegates.md), but those may still be a way off and could potentially not come at all. Other languages may also face similar issues if they do not provide equivalent support. ### Proposal We should expose a new method on the `System.Runtime.CompilerServices.Unsafe` type that functions as an equivalent to the `calli` instruction. ```C# namespace System.Runtime.CompilerServices { public static class Unsafe { // Potential other names include: Call, Invoke, InvokeIndirect, Calli, etc... public static TResult CallIndirect(IntPtr ptr, params object[] args); } } ``` The runtime should treat this as an equivalent to the `calli` instruction with a signature matching `TDelegate`. The runtime should validate that `TResult`/`args` matches the return/input type of `TDelegate`. ### Other Thoughts Using generics means that pointers are harder to use, there would have to be support to interpret `IntPtr` and `UIntPtr` args (those passed to `CallIndirect`) as equivalent to a pointer (as declared for the corresponding field in `TDelegate`). The current proposal (using `params object[]`) means boxing for arguments, maybe having explicit ``, `` overloads would be better? * I can provide some details for the min/max/avg number of args the interop delegates take (at least for DirectX). I think, for either case, `out` and `ref` would not be readily supported unless `Unsafe.AsRef` were used internally (also having special handling to interpret `IntPtr` and `UIntPtr` as `ref` equivalents). ### Example Usage A user might have a manually authored interop type such as: ```C# [Guid(""7B7166EC-21C7-44AE-B21A-C9AE321AE369"")] unsafe public /* blittable */ struct IDXGIFactory { #region Fields public readonly Vtbl* lpVtbl; #endregion #region Delegates [SuppressUnmanagedCodeSecurity] [UnmanagedFunctionPointer(CallingConvention.ThisCall, BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = false, ThrowOnUnmappableChar = false)] [return: ComAliasName(""HRESULT"")] public /* static */ delegate int EnumAdapters( [In] IDXGIFactory* This, [In, ComAliasName(""UINT"")] uint Adapter, [Out] IDXGIAdapter** ppAdapter ); [SuppressUnmanagedCodeSecurity] [UnmanagedFunctionPointer(CallingConvention.ThisCall, BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = false, ThrowOnUnmappableChar = false)] [return: ComAliasName(""HRESULT"")] public /* static */ delegate int MakeWindowAssociation( [In] IDXGIFactory* This, [In, ComAliasName(""HWND"")] void* WindowHandle, [In, ComAliasName(""UINT"")] uint Flags ); [SuppressUnmanagedCodeSecurity] [UnmanagedFunctionPointer(CallingConvention.ThisCall, BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = false, ThrowOnUnmappableChar = false)] [return: ComAliasName(""HRESULT"")] public /* static */ delegate int GetWindowAssociation( [In] IDXGIFactory* This, [Out, ComAliasName(""HWND"")] void** pWindowHandle ); [SuppressUnmanagedCodeSecurity] [UnmanagedFunctionPointer(CallingConvention.ThisCall, BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = false, ThrowOnUnmappableChar = false)] [return: ComAliasName(""HRESULT"")] public /* static */ delegate int CreateSwapChain( [In] IDXGIFactory* This, [In] IUnknown* pDevice, [In] DXGI_SWAP_CHAIN_DESC* pDesc, [Out] IDXGISwapChain** ppSwapChain ); [SuppressUnmanagedCodeSecurity] [UnmanagedFunctionPointer(CallingConvention.ThisCall, BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = false, ThrowOnUnmappableChar = false)] [return: ComAliasName(""HRESULT"")] public /* static */ delegate int CreateSoftwareAdapter( [In] IDXGIFactory* This, [In, ComAliasName(""HMODULE"")] void* Module, [Out] IDXGIAdapter** ppAdapter ); #endregion #region Structs public /* blittable */ struct Vtbl { #region Fields public IDXGIObject.Vtbl BaseVtbl; public IntPtr EnumAdapters; public IntPtr MakeWindowAssociation; public IntPtr GetWindowAssociation; public IntPtr CreateSwapChain; public IntPtr CreateSoftwareAdapter; #endregion } #endregion } ``` In order to invoke `EnumAdapters` today, the user would code something similar to: ```C# var EnumAdapters = Marshal.GetDelegateForFunctionPointer(pFactory->lpVtbl->EnumAdapters); IDXGIAdapter* pAdapter; for (var adapterIndex = 0u; DXGI_ERROR_NOT_FOUND != EnumAdapters(pFactory, adapterIndex, &pAdapter); adapterIndex++) { // Check if the adapter supports D3D12 } ``` Under the proposal, someone would now declare: ```C# IDXGIAdapter* pAdapter; for (var adapterIndex = 0u; DXGI_ERROR_NOT_FOUND != Unsafe.CallIndirect(pFactory->lpVtbl->EnumAdapters, pFactory, adapterIndex, pAdapter); adapterIndex++) { // Check if the adapter supports D3D12 } ```" +22963 area-System.Security [release/1.1] Add newer shim package reference for Algorithms tests The Helix tests aren't seeing fixes made for macOS 10.13 because they are still using the 4.3.0 (RTM) native assets. This indicates that the servicing build is required. +22964 area-System.Globalization "Core test failure: System.Globalization.Tests.RegionInfoPropertyTests.DisplayName(name: \""en-US\"", expected: \""United States\"")" "If DisplayLanguage is not en-US the following test is failing: ``` System.Globalization.Tests.RegionInfoPropertyTests.DisplayName(name: \""en-US\"", expected: \""United States\"") [FAIL ] Assert.Equal() Failure  (pos 0) Expected: United States Actual: Vereinigte Staaten  (pos 0) Stack Trace: D:\git\corefx\src\System.Globalization\tests\RegionInfo\RegionInfoTests.Properties.cs(37,0): at System.Globa lization.Tests.RegionInfoPropertyTests.DisplayName(String name, String expected) ``` In my case I had just switched my display language to German and the test started to fail. The test should either be conditioned to only run when display language is en-US or be disabled completely. The related production code: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Globalization/RegionInfo.cs#L211 @tarekgh " +22965 area-Serialization Exception when serialize class contains Dictionary and DateTimeOffset via DataContractSerializer "@jiemon commented on [Fri Aug 04 2017](https://github.com/dotnet/core/issues/789) I try serialize via DataContractSerializer simple class by example: ``` public class SimpleExampleClass2 { private Dictionary _attributes1; public Dictionary Attributes1 => _attributes1; public DateTimeOffset TestDate { get; set; } } ``` Serialization code: ``` var test = new SimpleExampleClass2() { TestDate = DateTimeOffset.Now }; var ser = new DataContractSerializer(typeof(SimpleExampleClass2)); MemoryStream memoryStream = new MemoryStream(); ser.WriteObject(memoryStream, test); memoryStream.Seek(0, SeekOrigin.Begin); return File(memoryStream, ""application/xml"", $""test.xml""); ``` But on line ""ser.WriteObject(memoryStream, test)"" I get exception: > InvalidDataContractException: Type 'System.Runtime.Serialization.DateTimeOffsetAdapter' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types. Is this bug in DataContractSerializer? --- @Petermarcu commented on [Fri Aug 04 2017](https://github.com/dotnet/core/issues/789#issuecomment-320271980) @zhenlan @ViktorHofer @danmosemsft --- @ViktorHofer commented on [Fri Aug 04 2017](https://github.com/dotnet/core/issues/789#issuecomment-320273333) It's not related to binary serialization with BinaryFormatter. --- @Petermarcu commented on [Fri Aug 04 2017](https://github.com/dotnet/core/issues/789#issuecomment-320274307) @zhenlan Any thoughts? --- @zhenlan commented on [Fri Aug 04 2017](https://github.com/dotnet/core/issues/789#issuecomment-320295733) + @shmao " +22966 area-System.IO Serial port tests blocking when loopback is present with USB seria ports This is not related to code in corefx since I can repro it in Desktop framework. However, it makes the coverage of my local tests for serial ports very limited. The issue is that after certain tests the code trying to close the port gets blocked on closing the handle (it proceeds if I unplug the USB). I suspect that is related to the way that the tests are using threads to read/write and force exceptions to be throw. I tried with the driver automatically installed (2.12.24.0) latest from http://www.ftdichip.com/Drivers/VCP.htm (2.12.26.0) but no change. @JeremyKuhne @willdean let me know if you guys have any idea about this issue. For now blocks me from getting good coverage for adding serial ports to UWP (see #22887). +22967 area-System.Security Make OpenSSL verify self-issued signature integrity to match Windows Windows checks signatures on self-issued certificates (to prove they are self-signed), but OpenSSL doesn't by default, opting to save on the CPU. Before this change the behavior was: * Windows: NotSignatureValid * macOS: UntrustedRoot * Linux: UntrustedRoot With this change it becomes * Windows: NotSignatureValid * macOS: UntrustedRoot * Linux: NotSignatureValid | UntrustedRoot While additional work could be done to not report UntrustedRoot for Linux chains, it doesn't seem as worthwhile. macOS will continue not reporting NotSignatureValid, because there's no API to allow changing the behavior. Fixes #21622. +22968 area-System.Reflection Test class SRE GenericTypeParameterBuilderSetGenericParameterAttributes is wrong The `SetGenericParameterAttributes` test calls `GenericTypeParameterBuilder:SetGenericParameterAttributes` and then immediately accesses the `GenericParameterAttributes` property of the builder. According to https://msdn.microsoft.com/en-us/library/system.reflection.emit.generictypeparameterbuilder.setgenericparameterattributes(v=vs.110).aspx > Special constraints cannot be retrieved using methods of the GenericTypeParameterBuilder class. Once you have created the generic type that contains the type parameter, you can use its Type object to reflect the type parameters and their constraints. To get the type parameters of a completed generic type, use the Type.GetGenericArguments method. To get the special constraints for each type parameter, use the Type.GenericParameterAttributes property. So the test should first call `CreateType` on the generic class and then retrieve the parameter attributes. The test in question: https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetGenericParameterAttributes.cs#L28 +22969 area-Infrastructure [RHEL6] Port to release/2.0.0 Enable RHEL6 and CentOS 6 RID detection This change adds RHEL6 and CentOS 6 RID detection to src/Native/build-native.sh. These distros don't have the /etc/os-release file and so we need to use another source - the /etc/redhat-release file +22970 area-Infrastructure [RHEL6] Port to release/2.0.0 Add RHEL 6 official RID +22971 area-Infrastructure Add RHEL 6 official RID +22972 area-System.IO Consider providing an API like GetRandomFileName that also creates an empty file "Currently GetTempFileName() creates a file with a random file name but has the limit of ~65K files > The GetTempFileName method will raise an IOException if it is used to create more than 65535 files without deleting previous temporary files. GetRandomFileName() on the other hand, provides more entropy but > Unlike GetTempFileName, GetRandomFileName does not create a file. FYI: https://github.com/aspnet/Coherence-Signed/issues/510 An API that provides the ""cryptographically strong, random"" file name with as much as entropy as GetRandomFileName() but also creates a temporary file like GetTempFileName() can be useful. cc @Eilon " +22973 area-System.Net Update UAP test regarding 'TRACE' method Uap platform doesn't support the 'TRACE' verb. After discussion with Wininet team, the method is explicitly not allowed. So, removing the activeissue and just skipping that part of the test. Also made some nit fixes as part of delayed feedback from other PRs. Fixes #22161 +22974 area-Serialization DCS_TypeWithCollectionAndDateTimeOffset_ListIsNull Failed on Uapaot The test fails on uapaot when using UWP toolchain. We need to port the fix of #22975 to SG. +22975 area-Serialization Fixed Issue with DCS Serializing Get-Only Collection. Fixed Issue with DCS Serializing Get-Only Collection. Fix #22965 +22976 area-System.IO Add FSW file/directory event filtering to Linux Because we are using inotify as the underlying implemenation for FileSystemWatcher on Linux, we can not only raise events for files or only raise events for directories, so we have to allow events for both to be raised regardless of NotifyFilters. However, inotify does tell us that if an event occurred on a directory or on a file after the event has been raised. Since this is after filtering has already been done, we forward that event regardless of the NotifyFilters. This commit passes NotifyFilters to the RunningInstance that forwards the events and adds in some manual filtering after the fact. It isn't quite the same as filtering through the native call, but it does bring us closer to the Windows behavior. cc: @JeremyKuhne @stephentoub @danwalmsley resolves https://github.com/dotnet/corefx/issues/21934 +22977 area-System.Net Add HttpListenerWebSocketContext.WebSocket.Receive/Close throw ObjectDisposedException after disposal in managed implementation We should add a check `ThrowIfDisposed()` before checking for InvalidState in managed implementation. Fix: #20395 Close: #22057 Removed unused ContextHelper in HttpRequestStreamTests test class. +22978 area-System.Globalization Set CurrentUICulture before retrieving DisplayName in RegionInfo and isolate static thread changes Relates to https://github.com/dotnet/corefx/issues/22964 Will pass in CI as all the machines are currently set to en-US but will still fail on machines with different cultures like de-AT (my tested one). Requires a coreclr change from @tarekgh. +22979 area-Infrastructure No line numbers for test failures on Windows "This is happening in the test runs we do on Windows Server 2016 Core. It makes debugging problems harder than it should be. The official runs we do seem to all be ""Release"" configuration, but even when I manually copy a Debug runtime and tests into a VM, I still don't get line numbers." +22980 area-System.Collections Use expression-bodied members throughout ImmutableList This is still part of my old PR #15382 for `ImmutableList`; I am porting all of the style-only changes I made during that PR so there will be less noise while reviewing the actual changes. Most of the style changes I made were converting members to use expression-bodied form. This is a follow-up to https://github.com/dotnet/corefx/pull/22842. /cc @AArnott, @safern +22982 area-System.Drawing Fix missing ISerializable interface on some types in System.Drawing Fix missing ISerializable interface on some types in System.Drawing. Fixes #22599. +22985 area-Microsoft.CSharp Microsoft.CSharp binders' argument infos in arrays rather than lists Extra functionality of lists is not used. +22986 area-System.ComponentModel Conditional/scoped validation support in data annotations Hi, I'd like to request to extend the `ValidationAttribute` by adding a few properties that will enable conditional validation. I love the idea of validating by attributes, but it would be nice if we could extend the validation attribute a little bit. The downside of attributes, is that there are no generics, and no complex parameters so there is no nice way to extend the current behavior. So please add a few properties to the abstract `ValidationAttribute` class, there a many ways to think of how to gather the condition. Some of which are: - Expose a set of properties `PropertyName` and `IsEqualTo` that enables validation only when a property with the specified name equals the specified value. - Have the class implement an interface `IShouldValidate` etc. - Make it easier to attach/unattach metadata types for validation - Add a generic methods to `Validator` class, so it's easier to validate using `IValidatable` For example: `public ValidationResult ValidateValue(object value, Func setup = null);` Example usage (within `IValidatableObject.Validate`): yield return Validator.Validate(this.Name); (returns `ValidationResult`); yield return Validator.Validate(this.Age, () => new RangeAttribute(10, 20)); Would be also interesting to hear about more ideas and workarounds too. +22988 area-System.Net Add Span-based overloads to System.Net.Sockets Span-based synchronous overloads of: - Socket.Receive/Send - NetworkStream.Read.Write Contributes to https://github.com/dotnet/corefx/issues/22608 Contributes to https://github.com/dotnet/corefx/issues/22387 cc: @geoffkizer, @cipop, @davidsh, @KrzysztofCwalina (Buffer-based async overloads will be done later once `Buffer` is available.) +22992 area-System.Console Support for Console.MoveBufferArea() on Linux & Mac Is there a plan to support Console.MoveBufferArea() on Linux & Mac? Currently it throws a PlatformNotSupportedException on these platforms. Without this feature it seems to me not possible to write in the bottom right corner of the console without losing the first line of the buffer (due to the resulting jump to the next line of the cursor), which is not very useful for text user interfaces. +22996 area-System.Net HttpClient with a client certificate SSL Connection Error "I'm attempting to connect to a kubernetes api within the cluster with C#. I can do this with the Python and Go libraries, but would like to do it with C#. I would imagine what I'm doing will become more common as kubernetes grows in popularity and C# becomes more popular in that world. I'm getting some somewhat generic errors and I'm sorta stumped on how to debug this further and could use some pointers if anyone is able. The following curl commands works. ```bash curl -v --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H ""Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"" https://kubernetes/api/v1/services ``` Here is my C# attempt at trying to replicate the above ```csharp private HttpClient GetClient() { const string certPath = ""/var/run/secrets/kubernetes.io/serviceaccount/ca.crt""; const string tokenPath = ""/var/run/secrets/kubernetes.io/serviceaccount/token""; const string baseAddress = ""https://kubernetes/""; var handler = new HttpClientHandler { ClientCertificateOptions = ClientCertificateOption.Manual, SslProtocols = SslProtocols.Tls12 }; handler.ClientCertificates.Add( new X509Certificate2(certPath)); var token = File.ReadAllText(tokenPath); var httpClient = new HttpClient(handler) { BaseAddress = baseAddress, DefaultRequestHeaders = { {""Authorization"", $""Bearer {token}""} } }; return httpClient; } public void Test() { var client = GetClient(); var result = client.GetStringAsync(""api/v1/services"").GetAwaiter().GetResult(); Console.WriteLine(result); } ``` This is running in the ``microsoft/aspnetcore:1.1`` docker image. The exception that's being thrown isn't all that helpful to me ``` System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL connect error at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__32`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` I've seen a couple issues about things (possibly?) similar https://github.com/dotnet/corefx/issues/12871, and then https://github.com/dotnet/corefx/issues/12962; But I don't really know enough about SSL or this kubernetes certificate i'm using to know if I'm having the same issue or if I'm just configuring the ``HttpClient`` wrong. The certificate at ``/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`` looks something like this (I don't know what kind of certificate this is, but maybe somebody else does) ``` -----BEGIN CERTIFICATE----- MIIC2DCCAcCgAwIBAgIRAKKWzHRtGNDE41/XVtJZre0wDQYJKoZIhvcNAQELBQAw DqzylX68MAVdg+LF -----END CERTIFICATE----- ``` I""ve been stuck on this for a couple days now trying random variations of the above and trying to look at what the Go Client library does to get this to work (as far as I can tell..nothing really special). Hoping someone here can push me in the right direction to get this either working or figured out why it's not working. Thanks" +22997 area-System.Runtime Disable System.Runtime.Extensions tests expected to fail on Server Core • In one case ShGetKnownFolderPath returns a different value. It’s kind of bogus API on these platforms so I suggest just disabling it for Server Core. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170726.03/workItem/System.Runtime.Extensions.Tests https://github.com/dotnet/corefx/issues/22656 +22998 area-System.Net SslStream Improvements for Unix Performance "#21371 Changed the OpenSsl code to use a ""custom"" bio that uses the buffers from managed code directly rather than using an interim MemoryBio to stop extra copying. This alone didn't provide much performance however I have modified the encrypt side to write directly to the output buffer, if the content is too large it will then send that to the socket and return to get more of the frame/frames. This should setup the future for improvements on the read side and to react to Buffer/Span changes. The performance diff I see on my hardware using the Techempower plaintext on Ubuntu 14.04 with SSL turned on is as below these are unconfirmed numbers. There is a clear convergence of the new and old code as the send sizes get bigger, the numbers don't include the HTTP Header, so the 11 bytes == Hello World. The tests use 256 connections, and pipelining with a depth of 16 ![2017-08-06 22_28_44-new test results](https://user-images.githubusercontent.com/16406969/29007252-b9162fa6-7af6-11e7-9fdf-50431c4b4c94.png) " +22999 area-Microsoft.CSharp Remove code in Microsoft.CSharp related to extension and external methods * Remove paths for extension methods. Dynamic doesn't support extension methods, except for static-style calls, so `isExtension` is never true. Remove it and all paths that depend on it being true. * Remove error conditions relating to extension methods. Demonstrated unreachable. Contributes to #22470 * Remove MethodSymbol.isExternal Never set to true. Remove it and all paths depending on it. +23001 area-System.Drawing "Test: System.Drawing.Printing.Tests.PrintDocumentTests/Ctor_Default_Success failed with ""System.Drawing.Printing.InvalidPrinterException : No printers are installed.""" Opened on behalf of @Jiayili1 The test `System.Drawing.Printing.Tests.PrintDocumentTests/Ctor_Default_Success` has failed. System.Drawing.Printing.InvalidPrinterException : No printers are installed. Stack Trace: at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal(String printer) at System.Drawing.Printing.PageSettings.get_Bounds() at System.Drawing.Printing.Tests.PrintDocumentTests.AssertDefaultPageSettings(PageSettings pageSettings) at System.Drawing.Printing.Tests.PrintDocumentTests.Ctor_Default_Success() Build : Master - 20170807.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x64 - Release - Windows.10.Amd64.Core-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170807.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Printing.Tests.PrintDocumentTests~2FCtor_Default_Success +23002 area-System.Runtime "Test: System.Tests.EnvironmentTests/GetFolderPath_Windows failed with ""Xunit.Sdk.NotEmptyException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/GetFolderPath_Windows(folder: CDBurning)` has failed. Assert.NotEmpty() Failure Stack Trace: at System.Tests.EnvironmentTests.GetFolderPath_Windows(SpecialFolder folder) Build : Master - 20170807.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x64 - Release - Windows.10.Amd64.Core-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170807.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetFolderPath_Windows(folder:%20CDBurning) +23003 area-System.Runtime "Test: System.Tests.GetEnvironmentVariable/GetEnumerator_LinqOverDictionaryEntries_Success failed with ""System.IO.IOException : No more data is available""" Opened on behalf of @Jiayili1 The test `System.Tests.GetEnvironmentVariable/GetEnumerator_LinqOverDictionaryEntries_Success(target: User)` has failed. System.IO.IOException : No more data is available.\r Stack Trace: at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str) at Microsoft.Win32.RegistryKey.GetValueNames() at System.Environment.GetRegistryKeyNameValuePairs(RegistryKey registryKey) at System.Environment.GetEnvironmentVariables(EnvironmentVariableTarget target) at System.Tests.GetEnvironmentVariable.GetEnumerator_LinqOverDictionaryEntries_Success(Nullable`1 target) in E:\A\_work\398\s\corefx\src\System.Runtime.Extensions\tests\System\Environment.GetEnvironmentVariable.cs:line 175 Build : Master - 20170807.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170807.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.GetEnvironmentVariable~2FGetEnumerator_LinqOverDictionaryEntries_Success(target:%20User) +23005 area-System.Linq Linq Permutation Cross and Multiple variable for Zip and Join I would like to have linq `Zip` and `Join` can take more than 2 collections. May be up to 8 ```C# public static IEnumerable Zip(this IEnumerable c0,IEnumerable c1,IEnumerable c2,IEnumerable c3,Func func) public static IEnumerable Join(this IEnumerable c0,IEnumerable c1,IEnumerable c2,IEnumerable c3,Func outer,Func inner1,Func inner2,Func inner3,Func func) ``` And I would like to suggest addition function `Cross` (or any other name) that would yield permutations of collections ```C# public static IEnumerable Cross(this IEnumerable c0,IEnumerable c1,Func func) { foreach(var v0 in c0) foreach(var v1 in c1) yield return func(v0,v1); } var bools = new[] { false,true }; var ints = new[] { 0,1 }; bools.Cross(ints,(b,i) => (b,i)); // yield (false,0) (false,1) (true,0) (true,1) ``` Also `Cross` should has overload of multiple collections like `Zip` +23006 area-Infrastructure "Test: System.Globalization.Tests.RegionInfoPropertyTests/CurrentRegion failed with ""System.IO.IOException : RemoteExecutorConsoleApp test app isn't present in the test runtime directory""" Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.RegionInfoPropertyTests/CurrentRegion` has failed. System.IO.IOException : RemoteExecutorConsoleApp test app isn't present in the test runtime directory. Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, $RemoteInvokeOptions options, Boolean pasteArguments) in E:\A\_work\441\s\corefx\src\CoreFx.Private.TestUtilities\src\System\Diagnostics\RemoteExecutorTestBase.Process.cs:line 59 at System.Globalization.Tests.RegionInfoPropertyTests.CurrentRegion() in E:\A\_work\441\s\corefx\src\System.Globalization\tests\RegionInfo\RegionInfoTests.Properties.cs:line 17 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170807.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170807.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.RegionInfoPropertyTests~2FCurrentRegion +23007 area-System.Runtime "Test: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/Roundtrip_Exceptions failed with ""System.Runtime.Serialization.SerializationException""" Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/Roundtrip_Exceptions(expected: System.AggregateException: Aggregate exception message (Exception message) ---> System.Excepti...` has failed. System.Runtime.Serialization.SerializationException : Type '$BlockedFromReflection_0_6907734b' in Assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable. Stack Trace: at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(Type type) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\FormatterServices.cs:line 82 at System.Runtime.Serialization.FormatterServices.<>c.b__5_0($MemberHolder mh) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\FormatterServices.cs:line 177 at System.Func$2.Invoke(Int32 arg) in Invoke:line 16707566 at System.Collections.Concurrent.ConcurrentDictionary$2.GetOrAdd(__Canon key, Func$2<__Canon,__Canon> valueFactory) in E:\A\_work\441\s\corefx\src\System.Collections.Concurrent\src\System\Collections\Concurrent\ConcurrentDictionary.cs:line 989 at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\FormatterServices.cs:line 175 at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryObjectInfo.cs:line 242 at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, $ISurrogateSelector surrogateSelector, StreamingContext context, $SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, $ObjectWriter objectWriter, $SerializationBinder binder) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryObjectInfo.cs:line 115 at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, $ISurrogateSelector surrogateSelector, StreamingContext context, $SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, $ObjectWriter objectWriter, $SerializationBinder binder) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryObjectInfo.cs:line 70 at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write($WriteObjectInfo objectInfo, $NameInfo memberNameInfo, $NameInfo typeNameInfo) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryObjectWriter.cs:line 174 at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, $BinaryFormatterWriter serWriter, Boolean fCheck) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryObjectWriter.cs:line 98 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Boolean check) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\src\System\Runtime\Serialization\Formatters\Binary\BinaryFormatter.cs:line 87 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.Clone(__Canon obj) in E:\A\_work\441\s\corefx\src\Common\tests\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs:line 21 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterHelpers.AssertRoundtrips(__Canon expected, __Canon[] additionalGetters) in E:\A\_work\441\s\corefx\src\Common\tests\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs:line 39 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.Roundtrip_Exceptions(Exception expected) in E:\A\_work\441\s\corefx\src\System.Runtime.Serialization.Formatters\tests\BinaryFormatterTests.cs:line 168 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetVI(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170807.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170807.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FRoundtrip_Exceptions(expected:%20System.AggregateException:%20Aggregate%20exception%20message%20(Exception%20message)%20---%3E%20System.Excepti... +23009 area-System.Net HttpClient file descriptors leak running on docker I was doing some .NET CORE vs Golang performance testing and noticed that HttpClient keeps a lot of HTTP connections in TIME_WAIT state. I'm using Docker `microsoft/dotnet:2.0.0-preview2-sdk` image. 1. Running .NET CORE for 100s I got about **3000** HTTP connections in TIME_WAIT state. 2. Running Golang for 100s I got only 4 HTTP connections in TIME_WAIT state. Is this is a bug in HttpClient or this is normal behaviour? All source code can be found here https://github.com/anjmao/netcore-vs-golang with instructions how to run it. +23010 area-System.Security Add RandomNumberGenerator.GetBytes(Span) overload Fixes https://github.com/dotnet/corefx/issues/22690 cc: @bartonjs +23012 area-System.Net Repeated http requests get stuck and cause client-side timeout _From @myarichuk on August 7, 2017 9:37_ Repeated http calls get stuck and timeout after one or two requests when executed in a 4.6.1 project that references a netstandard 2.0 project. On my end, I've reproduced it here --> https://github.com/myarichuk/TestWebRequestGettingStuck (the steps to reproduce are in the readme) It reproduces each run reliably. It looks like a bug. _Copied from original issue: dotnet/coreclr#13247_ +23013 area-System.ComponentModel Add DesignerOptionService tests +23014 area-Infrastructure Automatically harvest dependencies for .NET Framework compat meta-package After https://github.com/dotnet/corefx/pull/22665 the updating and validation of the Microsoft.NETFramework.Compatibility meta-package is all manual. We should provide some mechanism to automatically consume the right set of packages. We should at a minimum provide a mechanism to validate that the package list and versions being referenced are correct. +23015 area-Infrastructure Move queues to the PB_TargetQueue parameter replacing ',' for '+'. This fixes: https://github.com/dotnet/core-eng/issues/1331 +23016 area-System.Net Send secure cookies with WSS upgrade request. Fixes: #22551 Adds WSS to the secure protocol check of CookieContainer so that cookies are sent along with the initial HTTP upgrade request used in the handshake of a secure WebSocket connection. Also modifies the current Websocket ConnectAsync_CookieHeaders_Success test to check that secure cookies are sent when they should be. +23018 area-Infrastructure Increment version to 2.0.1-servicing @weshaggard PTAL - is there a StabilizeVersion equivalent I need to set here? +23019 area-System.Memory System.Memory: how does the Xamarin.Mac dependency end up in the nuspec? "I just looked at the System.Memory package on https://www.nuget.org/packages/System.Memory and wondered why it has an explicit entry for Xamarin.Mac in the nuspec: ``` ``` I looked at the csproj's in corefx but couldn't figure out how this ends up there. @weshaggard ?" +23020 area-Microsoft.CSharp Microsoft.CSharp treats type name collisions poorly. Microsoft.CSharp cannot handle the case of two types which have the same full name being used in the same operation. Despite noting it as possible in a comment, the error thrown is `RuntimeBinderInternalCompilerException` and an assertion fails in debug mode. A `RuntimeBinderException` with an explanatory message should be thrown. +23021 area-Microsoft.CSharp Have Microsoft.CSharp treat type name collisions better. Throw `RuntimeBinderException` with an explanatory message instead of `RuntimeBinderInternalCompilerException` and assertion failure. Fixes #23020 +23022 area-System.Security Coreclr crash due to double freeing Openssl handles [1.0.x] Tracking issue to backport [corefx/issues/11107](https://github.com/dotnet/corefx/issues/11107) to 1.0.x. +23023 area-System.Security Simplify X509Chain building with OpenSSL [1.0.x/1.1.x] Tracking issue to backport [corefx/pull/19017](https://github.com/dotnet/corefx/pull/19017) to 1.0.x and 1.1.x. +23024 area-System.Xml "XDeclaration failed to display """" when using ToString()" " var xml = new XDocument( new XDeclaration(""1.0"", ""UTF-8"", ""yes""), new XElement(""Envelope"", """") ); It works when you do this. It showed < ? xml version=""1.0"" encoding=""utf-8"" standalone=""yes"" ? > in the text file. xml.Save(@""Xml\foooo.xml""); But it does not work when you do the ToString() object. It did NOT showed < ? xml version=""1.0"" encoding=""utf-8"" standalone=""yes"" ? > in xml string. var debug = xml.ToString(); " +23025 area-System.Diagnostics Add diagnostics to help understand issue This is to help investigate https://github.com/dotnet/corefx/issues/22791 This does not fix anything but will let get information to diagnose the issue. @brianrob +23026 area-System.Security Prevent unnecessary AIA fetches of trusted roots "The ""Simplify X509Chain"" change no longer used userRootCerts or systemRootCerts in FindCandidates. Since the eventual chain build would get them from the trusted path there's not a functional difference, but FindCandidates was doing an AIA fetch for the root certificates so it could complete it locally. This means that a lot of cert chain attempts use the network when they don't need to. So just keep those certs in the scan list to revert the network use regression." +23027 area-System.Net Avoid double dispose() check in ManagedWebSocket and ClientWebSocket From [comment in PR #22977 ](https://github.com/dotnet/corefx/pull/22977#discussion_r131529522): >ManagedWebSocket was originally written for use with ClientWebSocket, which already does such a disposal check: https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs#L164 We can wrap the ManagedWebSocket in HttpListener, and do the check in HttpListener instead. [Here is different approach.](https://github.com/dotnet/corefx/pull/22977#discussion_r131724567) +23028 area-Infrastructure Add DiaSymReader to list of included packages in test-runtime depproj. Depproj files do some filtering based on this ItemGroup. By adding this entry here, the native binary for DiaSymReader will be copied into the test shared framework, and we should get line numbers on all Windows runs. @danmosemsft @ericstj +23029 area-System.Drawing Unify implementations for System.Drawing.Pen and related types. I was hitting an intermittent test failure in the System.Drawing.Pens tests. The Unix implementation of Pens uses a pattern like this: ```C# public static Pen Green { get { if (green == null) { green = new Pen(Color.Green); green.isModifiable = false; } return green; } } ``` This is not thread-safe, and there is nothing stopping the underlying field from being assigned multiple times if two threads happen to run initialization code at the same time. I hit very occasional test failures where the same property returns two different values in the span of a test method, and an `Assert.Same` check fails. The Windows implementation already handles caching these variables in a thread-local storage location. I've simply deleted the Unix version of this code and switched the build configuration to use the Windows code. * Move the function imports into the shared Gdiplus.cs file, and remove the duplicated declarations from Gdiplus.Unix.cs and Gdiplus.Windows.cs. * Add basic argument validation into the shared code, so that we throw ArgumentExceptions up front, rather than as a result of a failure code from GDI+. * This change does affect the Windows version, but it should be functionally equivalent to before. +23033 area-System.Runtime Consider adding ArgumentIsNullOrEmptyException and ArgumentIsNullOrWhitespaceException to System Firstly, I tried to research if this had been proposed and did not find an existing issue. Of course, if one exists, please link to existing and close. I am aware that this usage can be captured by `ArgumentOutOfRangeException`, but these cases are so common that the System.String class itself has methods for just these checks, and they can provide a more specific default message when used like: `new ArgumentNullOrEmptyException(nameof(strParmeter));` then `ArgumentNullException` or `ArgumentOutOfRange` does. My proposal is that these would be subclasses of `ArgumentOutOfRangeException`. Of course, the momentum behind just using `ArgumentOutOfRangeException` may be so great to preclude the usefulness of such classes, but I believe the overall use cases they cover is common enough to warrant consideration. +23037 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest/SendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported(server: https://http2.akamai.com/) Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/SendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported(server: https://http2.akamai.com/)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : Operation was aborted by an application callback -------- Assert.Equal() Failure Expected: PartialChain Actual: NotSignatureValid Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /root/corefx-911209/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__93.MoveNext() in /root/corefx-911209/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 1874 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- ----- Inner Stack Trace ----- at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c.b__93_0(HttpRequestMessage msg, X509Certificate2 cert, X509Chain chain, SslPolicyErrors errors) in /root/corefx-911209/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs:line 1867 at System.Net.Http.CurlHandler.SslProvider.VerifyCertChain(SafeX509StoreCtxHandle storeCtx, EasyRequest easy) in /root/corefx-911209/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs:line 359 at System.Net.Http.CurlHandler.SslProvider.VerifyCertChain(IntPtr storeCtxPtr, IntPtr curlPtr) in /root/corefx-911209/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs:line 264 Build : Master - 20170808.01 (Core Tests) Failing configurations: - Debian.87.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170808.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FSendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported(server:%20https:~2F~2Fhttp2.akamai.com~2F) +23038 area-System.Net "Test: System.Net.WebSockets.Client.Tests.CancelTest/ReceiveAsync_AfterCancellationDoReceiveAsync_ThrowsWebSocketException failed with ""System.ObjectDisposedException""" Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.CancelTest/ReceiveAsync_AfterCancellationDoReceiveAsync_ThrowsWebSocketException(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. Assert.Throws() Failure Expected: typeof(System.Net.WebSockets.WebSocketException) Actual: typeof(System.ObjectDisposedException): Cannot access a disposed object. Object name: 'System.Net.WebSockets.ManagedWebSocket'. Stack Trace: at System.Net.WebSockets.ManagedWebSocket.ThrowIfDisposed() in /Users/buildagent/agent/_work/4/s/corefx/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 1291 at System.Net.WebSockets.ManagedWebSocket.ReceiveAsync(ArraySegment`1 buffer, CancellationToken cancellationToken) in /Users/buildagent/agent/_work/4/s/corefx/src/Common/src/System/Net/WebSockets/ManagedWebSocket.cs:line 309 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170808.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release - OSX.1012.Amd64-x64 - Release - fedora.25.amd64-x64 - Debug - Release - Fedora.26.Amd64-x64 - Debug - Release - SLES.12.Amd64-x64 - Debug - Release - suse.422.amd64-x64 - Debug - Release - Ubuntu.1604.Amd64-x64 - Debug - Release - Ubuntu.1710.Amd64-x64 - Debug - Release - Ubuntu.1704.Amd64-x64 - Debug - Release - Ubuntu.1404.Amd64-x64 - Debug - Release - RedHat.72.Amd64-x64 - Debug - Release - Debian.87.Amd64-x64 - Debug - Release - Debian.90.Amd64-x64 - Debug - Release - RedHat.73.Amd64-x64 - Debug - Release - Centos.73.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170808.01/workItem/System.Net.WebSockets.Client.Tests/analysis/xunit/System.Net.WebSockets.Client.Tests.CancelTest~2FReceiveAsync_AfterCancellationDoReceiveAsync_ThrowsWebSocketException(server:%20ws:~2F~2Fcorefx-net.cloudapp.net~2FWebSocket~2FEchoWebSocket.ashx) +23039 area-System.Runtime "Tests under: System.Tests.EnvironmentTests failed with ""System.MissingMethodException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/GetFolderPath_UapExistAndAccessible(folder: Cookies)` has failed. System.MissingMethodException : Method 'UserDataPaths.GetDefault()' from assembly 'Windows' was not included in compilation, but was referenced in Environment.GetFolderPathCoreCurrent(Environment.SpecialFolder). There may have been a missing assembly, or a dependency on a more recent Windows SDK release. Stack Trace: at System.Environment.GetFolderPathCore($SpecialFolder folder, $SpecialFolderOption option) in E:\A\_work\251\s\corefx\src\System.Runtime.Extensions\src\System\Environment.WinRT.cs:line 29 at System.Environment.GetFolderPath($SpecialFolder folder, $SpecialFolderOption option) in E:\A\_work\251\s\corefx\src\System.Runtime.Extensions\src\System\Environment.cs:line 158 at System.Tests.EnvironmentTests.GetFolderPath_UapExistAndAccessible($SpecialFolder folder) in E:\A\_work\251\s\corefx\src\System.Runtime.Extensions\tests\System\EnvironmentTests.cs:line 289 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetVI(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170808.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170808.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetFolderPath_UapExistAndAccessible(folder:%20Cookies) +23040 area-System.Net SslStream doesn't update its stored buffer, causing excess allocations [Here in `SslStream`](https://github.com/dotnet/corefx/blob/cb173f6004e9671793d1aff64bab78e2d5f701c3/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs#L419), `EncryptData` can update the passed `outBuffer`. However, since SslStream throws away this value and doesn't update the fields in the class, this can cause excessive allocations to occur. (The allocation itself occurs in [`SslStreamPal`](https://github.com/dotnet/corefx/blob/cb173f6004e9671793d1aff64bab78e2d5f701c3/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Windows.cs#L149)). At the moment I'm working around this by writing to the stream with very specifically-sized buffers (i.e. 4096-bytes), which means that the new allocation doesn't occur. Here's a little snapshot from a DotMemory session showing this behaviour (the numbers are bytes allocated, instances allocated, bytes collected, instances collected): ![image](https://user-images.githubusercontent.com/12575/29059530-56e11508-7c59-11e7-8b47-51f9e79781f2.png) +23041 area-System.Data Remove dead NET_4_5 We never defined it, but the tests inside seem valid. Also fixed spacing. +23043 area-System.Runtime Disable GetEnumerator_LinqOverDictionaryEntries_Success() for full framwork. Disable test GetEnumerator_LinqOverDictionaryEntries_Success() for full framework. https://github.com/dotnet/corefx/issues/23003 +23044 area-System.Runtime Disable test GetEnumerator_LinqOverDictionaryEntries_Success() for full framework Disable test GetEnumerator_LinqOverDictionaryEntries_Success() for full framework +23045 area-Microsoft.CSharp Don't atomise strings in Microsoft.CSharp "The static compiler sees a lot of identical strings in quick succession as it parses tokens, and as such benefits immensely from atomising. Dynamic compilation works with smaller units, and its atomising lives in memory forever, rather than for a compilation operation. As such the benefits of atomising are less and the costs greater. Use strings directly, instead. Since much of the benefit of the predefined names is in seeding this set, use strings directly in that case, too. It's hard to determine how best to measure performance impact. I used a case that did a few different dynamic operations: ```C# private static int dump; [Benchmark] public void TempPerformanceTest() { foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < 1000000; i++) { dynamic x = 23; dynamic y = 47; dynamic z = x * y; dynamic s = z.ToString(); dynamic bu = new Uri(""http://example.net/""); dynamic u = new Uri(bu, s + s.Length); dynamic p = u.AbsolutePath; dynamic b = string.IsNullOrWhiteSpace(p); dynamic r = b ? x : y; dump = r; } } } } ``` ### Before |Test Name|Metric|Iterations|AVERAGE|STDEV.S|MIN|MAX| |---------|------|----------|-------|-------|---|---| Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2878.11260689472|151.795343740538|2711.06853438242|3020.87581481642 Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2648.36714824399|10.0406400805859|2637.46739684668|2661.6017775862 Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2736.14701287239|124.428088134655|2665.10479426716|2922.5105092833 Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2718.26595309438|131.364382921837|2633.53285926681|2913.24330641109 Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|3|3407.81461799982|656.868131469811|2668.76362498082|3925.08470638618 |||||| |Ave, Max, Min of above|||2877.74146782106||2633.53285926681|3925.08470638618| ### After |Test Name|Metric|Iterations|AVERAGE|STDEV.S|MIN|MAX| |---------|------|----------|-------|-------|---|---| |Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2850.54017086362|182.223336989238|2735.97218859469|3122.08495970061| |Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2642.93826545393|43.5051180165349|2589.54291906861|2691.64449582264| |Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|3004.94557938328|231.242920652251|2830.25040807882|3341.45525641438| |Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2653.03935330645|61.1607418566276|2587.7883784191|2734.57779295487| |Microsoft.CSharp.RuntimeBinder.Tests.TempPerformance.TempPerformanceTest|Duration|4|2750.33040505584|165.351254692047|2588.9093997381|2935.01715120632| ||||||| |Ave, Max, Min of above|||2780.35875481262||2587.7883784191|3341.45525641438| The two are within each other's margin of error, but there is an average improvement of around 3%, along with the assembly no longer holding atomised strings in memory indefinitely, and the result being IMO simpler." +23049 area-Meta Add ref/tests for Span-based Encoding APIs cc: @KrzysztofCwalina, @tarekgh Fixes https://github.com/dotnet/corefx/issues/22431 Depends on https://github.com/dotnet/coreclr/pull/13269 +23054 area-Infrastructure Can we extend the timeout on the coverage builds? Timing out has always been common with them, and of the last 10 runs, 1 had a test failure and the other 9 timed out. The time required to run will generally tend to increase too (more tests are common and desired, ideas on how to make tests quicker much rarer). Most seem like they could well have completed (rather than being stuck somewhere). Could the time allowed for the run be increased? +23056 area-System.Data SqlException ... error occurred during the pre-login handshake. https://mc.dot.net/#/user/dotnet-maestro-bot/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Frelease~2Fuwp6.0~2F/test~2Ffunctional~2Fcli~2F/66720e5b118975058aa9ed007dec818755879412/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.SqlConnectionBasicTests~2FConnectionTest ``` System.Data.SqlClient.SqlException : A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught)\n---- System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception.\n-------- Interop+OpenSsl+SslException : SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.\n------------ Interop+Crypto+OpenSslCryptographicException : error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs:line 374 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionFactory.cs:line 136 at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 113 at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 755 at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 1606 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 1132 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionPool.cs:line 1043 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionFactory.cs:line 289 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/ProviderBase/DbConnectionInternal.cs:line 700 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 1062 at System.Data.SqlClient.SqlConnection.Open() in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnection.cs:line 606 at System.Data.SqlClient.Tests.SqlConnectionBasicTests.ConnectionTest() in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.cs:line 22 ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 978 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 825 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 796 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 965 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 868 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 825 at System.Net.Security.SslState.WriteCallback(IAsyncResult transportResult) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 1075 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 715 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs:line 324 ----- Inner Stack Trace ----- at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs:line 152 at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, Boolean isServer, Boolean remoteCertRequired) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 128 ----- Inner Stack Trace ----- ``` +23057 area-System.Text Proposal: Span-based methods on Encoder/Decoder In https://github.com/dotnet/corefx/issues/22431, we agreed on new span-based methods on Encoding, but we didn't discuss the lower-level Encoder/Decoder types. @jkotas reminded me of this in https://github.com/dotnet/coreclr/pull/13269#issuecomment-321020525, and upon taking a look, I expect methods like the following are the ones we'd want to add: ```C# namespace System.Text { public abstract class Encoder { public virtual void Convert(ReadOnlySpan chars, Span bytes, bool flush, out int charsUsed, out int bytesUsed, out bool completed); public virtual int GetByteCount(ReadOnlySpan chars, bool flush); public virtual int GetBytes(ReadOnlySpan chars, Span bytes, bool flush); ... } public abstract class Decoder { public virtual void Convert(ReadOnlySpan bytes, Span chars, bool flush, out int bytesUsed, out int charsUsed, out bool completed); public virtual int GetCharCount(ReadOnlySpan bytes, bool flush); public virtual int GetChars(ReadOnlySpan bytes, Span chars, bool flush); } } ``` @tarekgh, thoughts, both on exposing such methods and on the specific ones I've listed? These are basically just span-based versions of the existing pointer-based virtuals on those two types. +23058 area-System.Security Re-enable test disabled on High Sierra since the bug is fixed The latest beta release of High Sierra seems to have fixed the issue where doing a revocation check on a self-signed certificate caused the SecTrustRef to go into an invalid state, so re-enable the test we disabled due to that problem. +23059 area-System.Drawing Various fixes for Unix Pen and CustomLineCap. Pen changes * Fix behavior of Pen.CustomEndCap/StartCap on Unix. * Use a cached value for CustomEndCap, because a get accessor is not available via libgdiplus. * Try to match the exception behavior of Windows for these two properties. * Correctly clone CustomLineCap objects before storing them in set_CustomEndCap / set_CustomStartCap. * MultiplyTransform now explicitly checks for a disposed matrix before using it. libgdiplus does not ignored null matrix handles -- it throws an exception. * Re-enable all Pen tests on all platforms. CustomLineCap changes * Stop using unavailable GdipGetCustomLineCapType function on Unix * Allow AdjustableArrowCap objects to be successfully cloned despite the above +23062 area-Microsoft.CSharp Remove Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader.FCanLift Always returns true (flag for static compiling where nullable and hence lifting is not available). Remove, and paths for it being false. +23063 area-System.Runtime AppContext.TargetFrameworkName differs between CoreRT and CoreCLR "https://github.com/dotnet/coreclr/pull/13266#pullrequestreview-55061899 In CoreCLR, AppContext.TargetFrameworkName will always return null. On CoreRT/ProjectN, it will return attribute value from main exe https://github.com/dotnet/corert/blob/ff7eba504516fa0bc0a50357ad559c19b45d1d51/src/System.Private.CoreLib/src/System/AppContext.cs#L45 If we are OK with updating CoreCLR, we return ` return Assembly.GetEntryAssembly()?.GetCustomAttribute()?.FrameworkName; ` from AppDomainSetup.TargetFrameworkName this will cause AppContext to parse "".NETCoreApp,Version=v2.0"" and have an identifier and version instead of empty/null as it currently has and I don't know what that will do downstream." +23064 area-System.Net [Port to 1.1] Make HttpClient on Unix treat SslProtocols.None as meaning system defaults This fixes the segaults happening on OSX 10.13 in 1.1/1.0 branches, when doing https connections with default settings. fixes #23066 cc @danmosemsft @bartonjs @stephentoub +23066 area-System.Net Fix segfaults in release branches for OSX 10.13 System.Net.Http.Functional.Tests and System.Net.Requests.Tests seg fault in OSX 10.13 runs. +23067 area-System.Net [Port to 1.0] Make HttpClient on Unix treat SslProtocols.None as meaning system defaults This fixes the segaults happening on OSX 10.13 in 1.1/1.0 branches, when doing https connections with default settings. fixes #23066 cc @danmosemsft @bartonjs @stephentoub +23068 area-System.Collections ConcurrentBag containing a circular reference does not get garbage collected ConcurrentBag has [a ThreadLocal field](https://github.com/dotnet/corefx/blob/64eff9bb5a1c39caf6ade8413dbca175b93ee80c/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs#L35) that maintains references to whatever was added to it without being removed/cleared even after the ConcurrentBag itself becomes unreferenced. Use your favorite search engine to find references to ConcurrentBag leaking memory to see that this has been a gotcha for developers for a while now. I don't think it should be necessary to explicitly clear the ConcurrentBag when you're finished with it. @vancem @stephentoub +23070 area-Microsoft.CSharp Remove VSFAIL from Microsoft.CSharp Just a wrapper on `Debug.Fail` that won't be completely removed from release (but still won't do anything in release). Replace with `Debug.Fail` or, when possible, with a more explicit assertion. +23071 area-Microsoft.CSharp Some Microsoft.CSharp.RuntimeBinder.SymbolTable refactoring * Define `AddMethodToSymbolTable` as taking `MethodBase` `AddMethodToSymbolTable` is called with a `MemberInfo` that can be either a `MethodInfo` or a `ConstructorInfo`, and takes different paths for each. Much of what these paths do is a duplication of calls that are available through those types common `MethodBase` base. Change the parameter type to `MethodBase` and use it as much as possible. * Replace if-else ladder on Type with switch on `TypeCode` * Remove some unused locals and assignments +23072 area-System.Diagnostics "Test: System.Diagnostics.Tests.ActivityTests/DiagnosticSourceStartStop failed with ""Xunit.Sdk.InRangeException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ActivityTests/DiagnosticSourceStartStop` has failed. Assert.InRange() Failure\r Range: (00:00:00.0000001 - 00:00:00.1412301)\r Actual: 00:00:00.2089664 Stack Trace: at System.Diagnostics.Tests.ActivityTests.DiagnosticSourceStartStop() in /root/corefx-913927/src/System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs:line 469 Build : Master - 20170809.01 (Core Tests) Failing configurations: - Debian.90.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170809.01/workItem/System.Diagnostics.DiagnosticSource.Tests/analysis/xunit/System.Diagnostics.Tests.ActivityTests~2FDiagnosticSourceStartStop +23073 area-System.Memory "Test: System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests/GetNumericValue failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests/GetNumericValue` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Globalization.FormatProvider.IsSuffix(String source, String suffix) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Globalization\FormatProvider.cs:line 65 at System.Globalization.Tests.CharUnicodeInfoTestData.Parse(List$1<$CharUnicodeInfoTestCase> testCases, String line) in E:\A\_work\251\s\corefx\src\System.Globalization\tests\CharUnicodeInfo\CharUnicodeInfoTestData.cs:line 66 at System.Globalization.Tests.CharUnicodeInfoTestData.<>c.<.cctor>b__8_0() in E:\A\_work\251\s\corefx\src\System.Globalization\tests\CharUnicodeInfo\CharUnicodeInfoTestData.cs:line 20 at System.Lazy$1.ViaFactory(LazyThreadSafetyMode mode) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\shared\System\Lazy.cs:line 327 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Lazy$1.CreateValue() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\shared\System\Lazy.cs:line 439 at System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests.GetNumericValue() in E:\A\_work\251\s\corefx\src\System.Globalization\tests\CharUnicodeInfo\CharUnicodeInfoTests.cs:line 73 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170809.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170809.01/workItem/System.Globalization.Tests.Execution/analysis/xunit/System.Globalization.Tests.CharUnicodeInfoGetUnicodeCategoryTests~2FGetNumericValue +23074 area-System.Runtime "Test: System.Tests.AppDomainTests/SetThreadPrincipal failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Tests.AppDomainTests/SetThreadPrincipal` has failed. System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options, Boolean pasteArguments) at System.Tests.AppDomainTests.SetThreadPrincipal() Build : UWP 6.0 - 20170809.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170809.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.AppDomainTests~2FSetThreadPrincipal +23077 area-System.Net Proposed SslStream additions for ALPN and SNI "# Rationale --- SNI and ALPN have been hanging around for a while as requirements and are becoming more urgent for Kestrel as HTTP/2 approaches (ALPN) and it becomes an edge server (SNI). There was an initial API proposal in issue #4721 however this stalled from my reading because of two issues 1. It would break compat with desktop 2. It would make the AuthenticateAsXXXXX method overloads become unwieldy So I think the need has been established just not the API Design and therefore the implementation. #Proposed API change --- I would propose adding extension methods for SslStream. ``` csharp public static SslStreamExtensions { public delegate void ApplicationLayerProtocolCallback(object sender, string matchedProtocol); public delegate bool ServerNameIndiciationCallback(object sender, string serverName, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors); public void SetApplicationLayerProtocolNegotiation(this SslStream self, string[] supportedProtocols, ApplicationLayerProtocolNegotiationCallback callback) {} public void SetServerNameIndiciation(this SslStream self, Dictionary serverCertificates, ServerNameIndiciationCallback callback) {} } ``` One other potential idea is to move this off to a ""Builder"" method for SslStream. This might help in the server scenario as multiple SslStreams could be built from it and components that each can share could be reused (for instance SSL_CTX in openssl is only required 1x for the same settings rather than per connection). # Example Usage --- ``` csharp var supportedProtocols = new string[] {""http1.1"", ""h2""}; var supportedServerNames = new Dictionary() { ""www.myanimatedgifsrock.com"" , new X509Certificate(""secretpath"", ""secretpassword""), ""www.immoslesscoolgifs.com"", new X509Certificate(""expiredcertpath"", ""secretpassword2""), }; var SslStream stream = new SslStream(networkStream); stream.SetApplicationLayerProtocolNegotiation(supportedProtocols, MyAlpnHandler); stream.SetServerNameIndiciation(supportedServerNames, MySniHandler); //normal use resumes ``` # Referenced Issues --- #9608 SNI #4721 ALPN # Potential Issues --- The callback for SNI should need to (and does in above) provide the ability to validate the certificate. Consideration would need to be given to the concept that if the SNI callback provides this what happens if a callback is provided in the Authenticate method. Also should there be separate extension methods for client and for server? Maybe but really you probably want both to have the chance to decide if they are happy with the otherside based on the servername that they tried to connect to. The other issue with this pattern is that there is no ""state"" held in the SslStream. Once the callback has been called there is no real way to retrieve this information later and it would be up to the user to associate this information with the SslStream and carry it around. To this end perhaps an extension method/methods to later retrieve this information might be considered such as below ``` csharp public static bool TryGetApplicationLayerProtocol(this SslStream self, out string protocol); public static bool TryGetServerName(this SslStream self, out string serverName); ``` Thanks :)" +23080 area-System.Linq Suggestion: Enumerable.ToReadOnly Please include a LINQ extension `ToReadOnly` (and `ToReadOnlyAsync` (for `IQueryable`, in `System.Data.Entity.QueryableExtensions`), which should return a readonly list of the enumerated result. +23085 area-System.Runtime System.ValueTuple now supports .NET Framework 4.7 # Summary The NuGet package System.ValueTuple [has been updated](https://www.nuget.org/packages/System.ValueTuple/4.4.0) to support .NET Framework 4.7. # Details The NuGet package provides the `ValueTuple` types which are required for the C# tuple syntax. In .NET Framework 4.7 we've added the types directly to `mscorlib`. If you use both, the NuGet package, as well as .NET Framework 4.7 you'll end up seeing the same types multipe times. This results in issues like this one [reported on Stack Overflow](https://stackoverflow.com/questions/45339914/predefined-type-system-valuetuple-is-not-defined-or-imported-after-upgrading-t). We've updated the NuGet package to type forward the tuple types on .NET Framework 4.7 to `mscorlib`. This unifies the types and thus allows you to consume other libraries and NuGet packages that depend on `System.ValueTuple` while still targeting .NET Framework 4.7. +23086 area-Meta Consistency of sealed modifiers on methods of sealed classes The general style across corefx is that if a type is sealed, its virtual members are not also annotated as sealed. There are a few projects within the repo, however, where that is not maintained. We should be consistent across the repo. +23087 area-System.Data Add PkgProj for System.Data.DataSetExtensions Updated necessary descriptions and packaging for System.Data.DataSetExtensions (part of #22803) +23088 area-Infrastructure Enable rhel6 in both official builds and CI of corefx master Enable rhel6 in both official builds and CI of corefx master +23089 area-System.Drawing Add two tests for Graphics.DrawString. This adds two very simple tests for `Graphics.DrawString`. @hughbe @KostaVlev +23090 area-Serialization Add SGEN Automation. Fix #21147 @shmao @zhenlan @mconnew +23091 area-System.Net add HeaderDescriptor and use as key for header store "Today, HttpClient uses strings as the key for its header store. This makes lookup more expensive in certain circumstances, because we have to perform string hashes and compares. Replace this with a ""HeaderDescriptor"" struct, for which all known headers are predefined. This also allows us to quickly look up meta-information about known headers, such as their parser and which header collections they are valid for, and allows us to extend this meta-information in the future. @stephentoub @Priya91 @wfurt @davidsh @cipop Note I don't have perf data for this change yet, due to some issues with our perf testing infrastructure. Will update once I have this data." +23095 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_TextFile_ShellExecute failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_TextFile_ShellExecute` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute() Build : 2.0.0 - 20170810.02 (Core Tests) Failing configurations: - Windows.10.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170810.02/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_TextFile_ShellExecute +23096 area-System.Data Test failure: MonoTests.System.Data.DataRowExtensionsTest/Field_T_DBNullFieldValue Opened on behalf of @Jiayili1 The test `MonoTests.System.Data.DataRowExtensionsTest/Field_T_DBNullFieldValue` has failed. System.TypeInitializationException : A type initializer threw an exception. To determine which type, inspect the InnerException's StackTrace property.\r ---- System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun$catch$0() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 114 at System.Runtime.CompilerServices.ClassConstructorRunner.CheckStaticClassConstruction(Void* returnValue, StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 37 at System.Data.DataRowExtensions.Field>($DataRow row, String columnName) in E:\A\_work\801\s\corefx\src\System.Data.DataSetExtensions\src\System\Data\DataRowExtensions.cs:line 27 at MonoTests.System.Data.DataRowExtensionsTest.Field_T_DBNullFieldValue() in E:\A\_work\801\s\corefx\src\System.Data.DataSetExtensions\tests\Mono\DataRowExtensionsTest.cs:line 68 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtrForDynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 ----- Inner Stack Trace ----- at System.Data.DataRowExtensions.UnboxT$1>.Create(Type type) in E:\A\_work\801\s\corefx\src\System.Data.DataSetExtensions\src\System\Data\DataRowExtensions.cs:line 154 at System.Data.DataRowExtensions.UnboxT$1>..cctor() in E:\A\_work\801\s\corefx\src\System.Data.DataSetExtensions\src\System\Data\DataRowExtensions.cs:line 146 at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun(StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 92 Build : Master - 20170810.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64-x86 - Debug - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170810.01/workItem/System.Data.DataSetExtensions.Tests/analysis/xunit/MonoTests.System.Data.DataRowExtensionsTest~2FField_T_DBNullFieldValue +23097 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_TextFile_ShellExecute failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_TextFile_ShellExecute` has failed. Could not start C:\\\Users\\\DotNetTestRunner\\\AppData\\\Local\\\Temp\\\ProcessStartInfoTests_i1jilq44.ypx\\\StartInfo_TextFile_ShellExecute_1008_15160bef.txt UseShellExecute=True\r Association details for '.txt'\r ------------------------------\r Open command: C:\\\Windows\\\system32\\\NOTEPAD.EXE %1\r ProgID: txtfile\r \r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_TextFile_ShellExecute() Build : Master - 20170810.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170810.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_TextFile_ShellExecute +23098 area-System.Net "Test: System.Net.Security.Tests.NegotiateStreamTest/NegotiateStream_StreamToStream_KerberosAuthDefaultCredentials_Success failed with ""Interop+NetSecurityNative+GssApiException""" Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.NegotiateStreamTest/NegotiateStream_StreamToStream_KerberosAuthDefaultCredentials_Success` has failed. Interop+NetSecurityNative+GssApiException : Gss api operation failed with error : An invalid status code was supplied (Preauthentication failed). Stack Trace: at Microsoft.Win32.SafeHandles.SafeGssCredHandle.Create(String username, String password, Boolean isNtlmOnly) in /root/corefx-916510/src/Common/src/Microsoft/Win32/SafeHandles/GssSafeHandles.cs:line 105 at System.Net.Security.Tests.UnixGssFakeNegotiateStream.GetDefaultKerberosCredentials(String username, String password) in /root/corefx-916510/src/System.Net.Security/tests/FunctionalTests/UnixGssFakeNegotiateStream.cs:line 43 at System.Net.Security.Tests.NegotiateStreamTest.NegotiateStream_StreamToStream_KerberosAuthDefaultCredentials_Success() in /root/corefx-916510/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs:line 275 Build : Master - 20170810.01 (Core Tests) Failing configurations: - Debian.90.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170810.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.NegotiateStreamTest~2FNegotiateStream_StreamToStream_KerberosAuthDefaultCredentials_Success +23099 area-System.Net "Test: System.Net.Sockets.Tests.ConnectSyncForceNonBlocking/Connect_MultipleIPAddresses_Success failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.ConnectSyncForceNonBlocking/Connect_MultipleIPAddresses_Success(listenAt: 127.0.0.1)` has failed. Timed out while waiting for connection\r Expected: True\r Actual: False Stack Trace: at System.Net.Sockets.Tests.Connect`1.Connect_MultipleIPAddresses_Success(IPAddress listenAt) Build : Master - 20170810.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170810.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.ConnectSyncForceNonBlocking~2FConnect_MultipleIPAddresses_Success(listenAt:%20127.0.0.1) +23100 area-Serialization "Tests under: DataContractSerializerTests failed with ""Xunit.Sdk.TrueException""" "Opened on behalf of @Jiayili1 The test `DataContractSerializerTests/DCS_BasicPerSerializerRoundTripAndCompare_Collections` has failed. XML comparison is also failing Test failed for input: SerializationTestTypes.ObjectContainer Expected: <_data i:type=\""a:SerializationTestTypes.ContainsLinkedList***\"" xmlns:a=\""http://schemas.datacontract.org/2004/07/SerializationTestTypes.ContainsLinkedList***\"">11:59:59 PM11:59:59 PM11:59:59 PM11:59:59 PM11:59:59 PM11:59:59 PM<_data2 i:type=\""a:SerializationTestTypes.ContainsLinkedList***\"" xmlns:a=\""http://schemas.datacontract.org/2004/07/SerializationTestTypes.ContainsLinkedList***\""> Actual: <_data i:type=\""a:SerializationTestTypes.ContainsLinkedList***\"" xmlns:a=\""http://schemas.datacontract.org/2004/07/SerializationTestTypes.ContainsLinkedList***\"">23:59:5923:59:5923:59:5923:59:5923:59:5923:59:59<_data2 i:type=\""a:SerializationTestTypes.ContainsLinkedList***\"" xmlns:a=\""http://schemas.datacontract.org/2004/07/SerializationTestTypes.ContainsLinkedList***\""> Expected: True Actual: False Stack Trace: at DataContractSerializerTests.SerializeAndDeserialize[T](T value, String baseline, DataContractSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs:line 4014 at DataContractSerializerTests.TestObjectInObjectContainerWithSimpleResolver[T](T o, String baseline, Boolean skipStringCompare) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs:line 4057 at DataContractSerializerTests.DCS_BasicPerSerializerRoundTripAndCompare_Collections() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs:line 3527 Build : Master - 20170810.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170810.01/workItem/System.Runtime.Serialization.Xml.ReflectionOnly.Tests/analysis/xunit/DataContractSerializerTests~2FDCS_BasicPerSerializerRoundTripAndCompare_Collections" +23102 area-System.Net System.Net.Http.Functional.Tests.ManagedHandler_DiagnosticsTest.SendAsync_ExpectedDiagnosticSourceUrlFilteredActivityLogging failed in CI Failed test: System.Net.Http.Functional.Tests.ManagedHandler_DiagnosticsTest.SendAsync_ExpectedDiagnosticSourceUrlFilteredActivityLogging MESSAGE: ~~~ Exit code was 139 but it should have been 42\nExpected: True\nActual: False ~~~ STACK TRACE: ~~~ at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs:line 181 at System.Net.Http.Functional.Tests.DiagnosticsTest.SendAsync_ExpectedDiagnosticSourceUrlFilteredActivityLogging() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs:line 387 ~~~ +23107 area-System.Security [release/2.0] Re-enable test disabled on High Sierra since the bug is fixed The latest beta release of High Sierra seems to have fixed the issue where doing a revocation check on a self-signed certificate caused the SecTrustRef to go into an invalid state, so re-enable the test we disabled due to that problem. +23108 area-System.Diagnostics Activity paths for events collected via EventListener are incorrect for Stop events "Run the following program, targeting Core CLR 2.0: ```csharp class MySource : EventSource { [Event(1, Message = ""{0}"")] public void Message(string arg) { WriteEvent(1, arg); } [Event(2, Message = ""{0}"")] public void MyActivityStart(string arg) { WriteEvent(2, arg); } [Event(3, Message = ""{0}"")] public void MyActivityStop(string arg) { WriteEvent(3, arg); } public static MySource Logger = new MySource(); } class MyListener : EventListener { public const EventKeywords TasksFlowActivityIds = (EventKeywords)0x80; protected override void OnEventSourceCreated(EventSource eventSource) { if (eventSource.Name == ""MySource"") { EnableEvents(eventSource, EventLevel.Verbose); Console.WriteLine(""*** In MyListener: turning on MySource""); } else if (eventSource.Name == ""System.Threading.Tasks.TplEventSource"") { EnableEvents(eventSource, EventLevel.Verbose, TasksFlowActivityIds); Console.WriteLine(""*** In MyListener: turning on Task library Activity Flow""); } } protected override void OnEventWritten(EventWrittenEventArgs eventData) { // We expect the activity and relatedActities to be set properly, currently they are zero. Console.WriteLine(""MyListener: level {0}, message: {1} activity {2} related {3}"", eventData.Level, eventData.Message != null ? string.Format(eventData.Message, eventData.Payload.ToArray()) : """", eventData.ActivityId, eventData.RelatedActivityId); } } public class Program { public static void Main(string[] args) { MyListener listener = new MyListener(); // Currently the activityIDs generated in the OnEventWritten EventListener callback are always 0. // They should be non-zero during the activity. MySource.Logger.Message(""Before Start""); MySource.Logger.MyActivityStart(""MYTask""); MySource.Logger.Message(""In task""); MySource.Logger.MyActivityStop(""MYTask stop""); MySource.Logger.Message(""After task""); Console.ReadKey(); } } ``` Note that the activity GUID for the MyActivityStop event is a null GUID Expected: the activity GUID for the MyActivityStop event should be a valid activity ID, same as for MyActivityStart and ""In task"" events. @vancem and @brianrob think this is indeed an issue and not by design Originally reported by @ghelyar https://github.com/Azure/diagnostics-eventflow/issues/124 " +23110 area-System.Net HttpMethod.ToString(): Remove unnecessary string.ToString() call Avoid making a virtual function call when the code already has a string. I wasn't sure if I was supposed to propose this change on some other branch ('dev*') instead. Let me know. +23111 area-System.Data Fix MonoTests.System.Data.DataRowExtensionsTest on ILC Fixes https://github.com/dotnet/corefx/issues/23096 Unbox utility used Reflection on private members to unbox a Nullable. It's really a lot simpler just to... unbox it. +23115 area-System.Net Linux sockets: perform queued IO operations on threadpool, and rework queue locking "Currently, we perform all queued IO on the epoll thread, and then dispatch a workitem to the threadpool to call the user's completion callback. This makes the epoll thread a bottleneck. Instead, rework the queue processing logic so that we dispatch a workitem to the threadpool to perform the IO and then call the user's callback directly. This results in the same amount of ""thread-hopping"", but the actual IO work is moved off the epoll thread, which should hopefully make it less of a bottleneck. Additionally, rework the queue locking logic to ensure that our locking is as fine-grained and short-lived as possible. I don't have perf data on this change yet due to some infrastructure issues, will get this as soon as I can. @stephentoub @wfurt @Priya91 @pgavlin @vancem @dotnet-bot test Outerloop Linux x64 Debug Build @dotnet-bot test Outerloop Windows x64 Debug Build @dotnet-bot test Outerloop OSX x64 Debug Build " +23116 area-Infrastructure Packages built from master incorrectly target netcoreapp2.0 Opened with @ericstj Changes like https://github.com/dotnet/corefx/commit/1d3cc0417753bf0a436824abfeff9c3c1712f63f have moved components inbox for `netcoreapp2.0` but those components were not inbox in the actual 2.0 release. We need to retarget to `netcoreapp2.1` in master and audit these additions and move them to `netcoreapp2.1` /cc @weshaggard @mellinoe @JeremyKuhne +23119 area-Infrastructure Update package versions to service release/1.1 and 1.0 branches. I went through the history of the release/1.1 branch, this [commit](https://github.com/dotnet/corefx/commit/9e98f24f508d2cda97f10474a86052f51bc9c7e3), which is an update after the servicing release. From then these are the concrete product commits, 1. [Interop.MountPoints.cs](https://github.com/dotnet/corefx/commit/3d2debcf3f4fb7ce06f58c0b617348835e9036c8) by @wfurt 2. [WinHttpHandler](https://github.com/dotnet/corefx/commit/454bdeb2ef477344b8626307892f442bff2a3106) by @davidsh We need to update the package and assembly versions of the libs where these changes need to serviced for 1.1 release. refer pr #23113 +23121 area-System.Net Tests failed: System.Net.Sockets.Tests.DualModeConnectionless* / * ## Type of failures Note: The failures are less frequent after 10/25 (fix #24615 addressing `Connection timed out` failures) ### TimeoutException ``` System.TimeoutException : The operation has timed out. at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromAsync_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) in E:\A\_work\1811\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs:line 2337 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromAsyncV4BoundToSpecificV4_Success() in E:\A\_work\1811\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs:line 2238 ``` ### Connection failed ``` System.Net.Sockets.SocketException : A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) in E:\A\_work\1811\s\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs:line 5112 at System.Net.Sockets.Socket.ReceiveMessageFrom(Byte[] buffer, Int32 offset, Int32 size, SocketFlags& socketFlags, EndPoint& remoteEP, IPPacketInformation& ipPacketInformation) in E:\A\_work\1811\s\corefx\src\System.Net.Sockets\src\System\Net\Sockets\Socket.cs:line 1611 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFrom_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) in E:\A\_work\1811\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs:line 1994 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.ReceiveMessageFromV4BoundToSpecificMappedV4_Success() in E:\A\_work\1811\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs:line 1876 ``` ### [REMOVED] System.Net.Sockets.SocketException : Connection timed out This failure was pretty common (133 failures 7/30-10/26), but was fixed by #24615 on 10/25. No such failure appeared afterwards. ## History of failures Day | Build | OS | Error message | Test -- | -- | -- | -- | -- 6/4 | 20170604.03 | Win7 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 6/23 | 20170623.01 | Win10 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 6/28 | 20170628.05 | Win7 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 7/3 | 20170703.01 | Win7 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 7/26 | 20170726.03 | Win7 | Connection failed | ReceiveMessageFromV4BoundToAnyV6_Success 8/2 | 20170802.02 | Win10 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 8/9 | 20170809.02 | Win8.1 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 8/9 | 20170809.02 | Win8.1 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 8/11 | 20170811.01 | Ubuntu16.04 | TimeoutException | BeginReceiveMessageFromV4BoundToAnyV6_Success 8/11 | 20170811.02 | Win7 | TimeoutException | ReceiveMessageFromAsyncV6BoundToSpecificV6_Success 8/14 | 20170814.01 | Win7 | Connection failed | ReceiveMessageFromV4BoundToAnyMappedV4_Success 8/14 | 20170814.01 | Win7 | TimeoutException | BeginReceiveMessageFromV6BoundToSpecificV6_Success 8/14 | 20170814.01 | Win7 | TimeoutException | BeginReceiveMessageFromV4BoundToSpecificMappedV4_Success 8/14 | 20170814.01 | Win7 | TimeoutException | ReceiveMessageFromAsyncV6BoundToAnyV6_Success 8/18 | 20170818.02 | Win10 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 8/18 | 20170818.02 | Win7 | TimeoutException | ReceiveMessageFromAsyncV4BoundToAnyV4_Success 8/22 | 20170823.01 | Win10 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 8/30 | 20170830.01 | Win7 | TimeoutException | BeginReceiveFromV6BoundToSpecificV6_Success 8/30 | 20170830.02 | Win8.1 | TimeoutException | ReceiveMessageFromAsyncV4BoundToAnyMappedV4_Success 9/6 | 20170906.01 | Win10 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 9/8 | 20170908.02 | Win10 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 9/8 | 20170908.02 | Win10 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 9/14 | 20170914.02 | Win7 | TimeoutException | BeginReceiveMessageFromV4BoundToAnyV6_Success 10/4 | 20171004.01 | Win10 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 10/7 | 20171007.01 | Win10 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 10/9 | 20171009.02 | Win10 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 10/9 | 20171009.03 | Win7 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 10/9 | 20171009.03 | Win7 | Connection failed | ReceiveFromV4BoundToAnyV4_Success 10/14 | 20171014.02 | Win10 | Connection failed | ReceiveFromV4BoundToSpecificV4_Success 11/25 | 20171125.02 | Win7 | TimeoutException | ReceiveMessageFromAsyncV4BoundToAnyV4_Success 11/25 | 20171125.02 | Win7 | Connection failed | ReceiveMessageFromV4BoundToAnyMappedV4_Success 12/13 | 20171213.08 | Win7 | Connection failed | ReceiveMessageFromV4BoundToSpecificMappedV4_Success 12/13 | 20171213.08 | Win7 | TimeoutException | ReceiveMessageFromAsyncV4BoundToSpecificV4_Success 12/25 | 20171225.01 | Win7 | Connection failed | ReceiveMessageFromV4BoundToSpecificMappedV4_Success 1/13 | 20180113.01 | Win7 | TimeoutException | BeginReceiveMessageFromV4BoundToSpecificMappedV4_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180113.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom~2FBeginReceiveMessageFromV4BoundToSpecificMappedV4_Success) 1/13 | 20180113.01 | Win7 | TimeoutException | BeginReceiveMessageFromV6BoundToSpecificV6_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180113.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom~2FBeginReceiveMessageFromV6BoundToSpecificV6_Success) 1/13 | 20180113.01 | Win7 | Connection failed | ReceiveMessageFromV4BoundToAnyMappedV4_Success - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180113.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom~2FReceiveMessageFromV4BoundToAnyMappedV4_Success) 1/17 | 425dd3680cfc5b808a9b41b8d71c5a6a9c03a304 | Win7 | Connection failed | ReceiveMessageFromV4BoundToAnyMappedV4_Success # Original report Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom/BeginReceiveMessageFromV4BoundToAnyV6_Success` has failed. ``` System.TimeoutException : The operation has timed out. at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.BeginReceiveMessageFrom_Helper(IPAddress listenOn, IPAddress connectTo, Boolean expectedToTimeout) in /root/corefx-919057/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2208 at System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom.BeginReceiveMessageFromV4BoundToAnyV6_Success() in /root/corefx-919057/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs:line 2181 ``` Build : Master - 20170811.01 (Core Tests) Failing configurations: - Ubuntu.1604.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170811.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.DualModeConnectionlessReceiveMessageFrom~2FBeginReceiveMessageFromV4BoundToAnyV6_Success +23122 area-System.Diagnostics "Test: System.Diagnostics.Tests.StackFrameTests/Ctor_SkipFrames(skipFrames: -1) failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.StackFrameTests/Ctor_SkipFrames(skipFrames: -1)` has failed. Expected GetILOffset() 0 for BuildStackFrame at offset 96 in file:line:column :0:0\r to be greater than zero.\r Expected: True\r Actual: False Stack Trace: at System.Diagnostics.Tests.StackFrameTests.VerifyStackFrameSkipFrames(StackFrame stackFrame, Boolean isFileConstructor, Int32 skipFrames, MethodInfo expectedMethod, Boolean isCurrentFrame) in E:\A\_work\146\s\corefx\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs:line 171 at System.Diagnostics.Tests.StackFrameTests.VerifyStackFrame(StackFrame stackFrame, Boolean hasFileInfo, Int32 skipFrames, MethodInfo expectedMethod, Boolean isCurrentFrame) in E:\A\_work\146\s\corefx\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs:line 153 at System.Diagnostics.Tests.StackFrameTests.Ctor_SkipFrames(Int32 skipFrames) in E:\A\_work\146\s\corefx\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs:line 43 Build : Master - 20170811.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64.Core-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fdesktop~2Fcli~2F/build/20170811.01/workItem/System.Diagnostics.StackTrace.Tests/analysis/xunit/System.Diagnostics.Tests.StackFrameTests~2FCtor_SkipFrames(skipFrames:%20-1) +23123 area-System.Data "Test: System.Data.SqlClient.Tests.DiagnosticTest/ConnectionOpenAsyncErrorTest failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.DiagnosticTest/ConnectionOpenAsyncErrorTest` has failed. System.IO.IOException : RemoteInvoke cannot open the remote service. Open Service Status: AppUnavailable Stack Trace: at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(MethodInfo method, String[] args, RemoteInvokeOptions options, Boolean pasteArguments) at System.Diagnostics.RemoteExecutorTestBase.RemoteInvoke(Func`1 method, RemoteInvokeOptions options) at System.Data.SqlClient.Tests.DiagnosticTest.ConnectionOpenAsyncErrorTest() Build : UWP 6.0 - 20170810.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170810.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.DiagnosticTest~2FConnectionOpenAsyncErrorTest +23125 area-System.Collections System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]].Dispose() takes 17 ms to JIT Looking at some perf problems with MSBuild, [we're spending lots of time JITing](https://github.com/Microsoft/msbuild/issues/2419), this one in particular stood out: JitTime (msec) | ILSize | NativeSize | Method | BG | Module --- | --- | --- | --- | --- | --- 17.4 | 74 | 163 | System.Collections.Immutable.ImmutableList1+Enumerator[System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon]].Dispose() | JIT | System.Collections.Immutable.dll Almost all other methods are under 1ms. Can we simplify this method? +23127 area-System.ComponentModel DesignerOptionService.DesignerOptionCollection.Properties does not update cached version when children update "In System.ComponentModel.TypeConverters, DesignerOptionCollection caches the value of the `Properties` field. The cached value never updates, even if the properties would be different. In the example below, accessing `Properties` before adding a child causes the value of Properties to be cached and be out of date. Accessing `Properties` after adding a child causes the value to be correct ```cps [Fact] public void Properties_GetBeforeAddingChild_ReturnsEmpty() { var service = new TestDesignerOptionService(); Assert.Empty(service.Options.Properties); DesignerOptionService.DesignerOptionCollection options = service.DoCreateOptionCollection(service.Options, ""name"", ""value""); Assert.Empty(service.Options.Properties); } [Fact] public void Properties_GetAfterAddingChild_ReturnsNonEmpty() { var service = new TestDesignerOptionService(); DesignerOptionService.DesignerOptionCollection options = service.DoCreateOptionCollection(service.Options, ""name"", ""value""); Assert.NotEmpty(service.Options.Properties); } private class TestDesignerOptionService : DesignerOptionService { public object ShowDialogValue { get; set; } = ""Default""; public DesignerOptionCollection DoCreateOptionCollection(DesignerOptionCollection parent, string name, object value) { return CreateOptionCollection(parent, name, value); } protected override bool ShowDialog(DesignerOptionCollection options, object optionObject) { ShowDialogValue = optionObject; return true; } public bool DoShowDialog(DesignerOptionCollection options, object optionObject) { return base.ShowDialog(options, optionObject); } } ``` @safern (from #23013)" +23128 area-System.Net ManagedHandler: Sends client cert when it shouldn't "The Manual_SendClientCertificateWithServerAuthEKUToRemoteServer_Forbidden test is disabled for the ManagedHandler. According to the comment in the test, ""The managed handler is currently sending out client certificates when it shouldn't."" Needs to be investigated and either the src or the test fixed." +23129 area-System.Net ManagedHandler: Soliciting Ok instead of Unauthorized response with credential redirect test "The GetAsync_CredentialIsNetworkCredentialUriRedirect_StatusCodeUnauthorized is disabled for the ManagedHandler. According to the comment, ""The managed handler is currently getting Ok when it should be getting Unauthorized."" Either the src or the test needs to be fixed." +23130 area-System.Net [ManagedHandler] Implement support for trailing headers The implementation currently lacks this support and doesn't deal with with responses that have them. At the very least it needs to be able to ignore them, but right now requests with them fail. +23131 area-System.Net [ManagedHandler] Disposing the handler should initiate cancellation of requests "According to the comment, ""the ManagedHandler isn't correctly handling disposal of the handler. It should cause the outstanding requests to be canceled with OperationCanceledExceptions, whereas currently it's resulting in ObjectDisposedExceptions.""" +23132 area-System.Net ManagedHandler: Support 1.0 requests Currently the handler throws an exception for 1.0 requests. It needs to tolerate them. +23134 area-System.Net HTTP/2 support ManagedHandler should support HTTP/2. +23135 area-System.Net [ManagedHandler] Basic auth can't handle ':' in domain name Some of the theory inputs to Proxy_BypassFalse_GetRequestGoesThroughCustomProxy are failing as a result. +23136 area-System.Net [ManagedHandler] SSL proxy tunneling is not yet implemented It should be implemented. https://github.com/dotnet/corefx/blob/b265a0f0066dbce3cf4845c25444fe85266c81d0/src/System.Net.Http/src/System/Net/Http/Managed/HttpProxyConnectionHandler.cs#L62-L66 +23137 area-System.Net [ManagedHandler] ServerCertificateCustomValidationCallback returning unexpected errors "From the comment in UseCallback_BadCertificate_ExpectedPolicyErrors_Helper: ""This test is failing with the managed handler on the exact value of the managed errors, e.g. reporting ""RemoteCertificateNameMismatch, RemoteCertificateChainErrors"" when we only expect RemoteCertificateChainErrors."" The src or the test need to be fixed." +23138 area-System.Net [ManagedHandler] Several SSL version verification tests are failing GetAsync_AllowedSSLVersion_Succeeds GetAsync_SupportedSSLVersion_Succeeds +23139 area-System.Net Test failure: HttpClientEKUTest tests are disabled These tests are disabled due to failures. The failures need to be investigated to determine whether there's missing functionality, bugs, etc., or whether the tests should be fixed, aren't applicable, etc. +23140 area-System.Net ManagedHandler: ManagedHandler_DefaultCredentialsTest tests are disabled These tests are disabled for the managed handler. They need to be investigated and either src or tests fixed. +23141 area-System.Net [ManagedHandler] Improve cancellation support when sending/receiving data The ManagedHandler_CancellationTest tests are disabled because sockets don't support canceling individual operations. We might be able to address this once https://github.com/dotnet/corefx/issues/22608 is implemented and the associated cancellation support is enabled. We could also employ a variety of workarounds, including ending the whole request on cancellation by disposing of the connection, wrapping the operations in ones that can be canceled even though the underlying operation may continue running, etc. +23142 area-System.Net [ManagedHandler] Implement MaxResponseHeadersLength We currently don't track the amount of header data received, and thus don't enforce MaxResponseHeadersLength. +23143 area-System.Net ManagedHandler: Size overflow needs to be handled in ParseHexSize We should just see how WinHttpHandler and CurlHandler handle overflow here, and do the same. +23144 area-System.Net ManagedHandler: Support Expect: 100-continue We need to add support for this. +23145 area-System.Net ManagedHandler: Enable duplex communication Currently the ManagedHandler waits for all of the request content to be sent before parsing the response content. This prohibits duplex communication and needs to be fixed (both in general, and to be able to reuse the underlying types here in the managed ClientWebSocket implementation). +23146 area-System.Net ManagedHandler: Better cancellation support when transferring request body Currently cancellation is ignored while the request body is being transferred. +23147 area-System.Net [ManagedHandler] Avoid string allocations while parsing headers +23148 area-System.Net ManagedHandler: Move text into .resx There are currently strings littered throughout the code. If they'll be user visible (e.g. exception messages), we should move them into the .resx and unify them with the existing messages, avoiding duplication where possible. +23149 area-System.Net ManagedHandler: Improve timer management in HttpConnectionPools Currently the timer continues to run even if there are no active connections on any pool. +23150 area-System.Net [ManagedHandler] Support Windows & Unix environment variables for proxy configuration libcurl and other clients respect an established convention for environment variables used to configure proxies. We should respect these in ManagedHandler as well. +23151 area-System.Net ManagedHandler: Support canceling opening connections Right now we use the instance socket.ConnectAsync method, which doesn't give us a way to cancel the connection. We should investigate other approaches that would allow us to do so, e.g. with SocketAsyncEventArgs and its connection cancellation support, or worst case, disposing of the socket (though that might have reliability concerns). +23152 area-System.Net ManagedHandler: Use the managed handler in ClientWebSocket's managed implementation This depends on #23145. +23153 area-System.Net [ManagedHandler] Investigate adding NTLM auth support +23154 area-System.Net [ManagedHandler] Investigate adding Negotiate auth support +23155 area-System.Net Update TODOs in ManagedHandler "I cleaned up the TODOs in ManagedHandler, opening individual issues for each aspect and updating the comments to link to the associated issue. In the process of doing so, I found that some of the ""hangs"" reported were due to test issues, where the tests would hang if the HttpClient.GetAsync operation failed, so I fixed those such that we now see the actual reason for the failure rather than the test hanging. And I added a bit more tracing to ManagedHandler, in particular to see details about the established SSL connection. cc: @geoffkizer " +23156 area-System.Net [ManagedHandler] Investigate adding connection draining support Today when we cancel/dispose a response and we've not yet handled all of the expected response data from the server, we abandon the connection rather than putting it back into the pool. We should investigate adding support for draining the remaining data from the connection, and whether it's worthwhile from a performance perspective (maybe just for https, given the additional overhead associated with establishing the connection?). WinHttp drains up to 1MB by default. +23159 area-System.Net Test failed: DualModeConnectionlessBeginSendTo.BeginSendToV4IPEndPointToV4Host_Success https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netfx+CGroup_Release+AGroup_x86+TestOuter_false_prtest/2167/consoleText ``` System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV4IPEndPointToV4Host_Success [FAIL] System.Net.Sockets.SocketException : The requested address is not valid in its context Stack Trace: at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs(1243,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.DualModeBeginSendTo_EndPointToHost_Helper(IPAddress connectTo, IPAddress listenOn, Boolean dualModeServer, Boolean expectedToTimeout) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Net.Sockets\tests\FunctionalTests\DualModeSocketTest.cs(1196,0): at System.Net.Sockets.Tests.DualModeConnectionlessBeginSendTo.BeginSendToV4IPEndPointToV4Host_Success() ``` +23160 area-System.Net Handle invalid chunk size in ManagedHandler To match WinHttpHandler, support chunk sizes up to ulong.MaxValue in size, and throw exceptions for anything larger. Fixes #23143 cc: @geoffkizer +23162 area-System.Net Remove CancellationToken field from StreamContent This is a holdover from a previous design, isn't used, but is still taking up space in the StreamContent. Remove it. cc: @davidsh, @geoffkizer +23164 area-System.Runtime Expose and Add Tests for BitConverter APIs in Corefx Expose in System.Runtime.Extensions contract in corefx. Second part of issue #22355 Adding tests to verify correct implementation and exposure (https://msdn.microsoft.com/en-us/library/system.bitconverter_methods(v=vs.110).aspx) +23165 area-Infrastructure Master should remap `netfx` to `net471` Related #23116 We should also disable the majority of the `netfx` configurations for things inside netstandard as well as the support package since we aren't shipping them anymore. New versions of the 4.6.1 support package will come from servicing and every library in `netstandard2.0` is now part of `net4.7.1`. /cc @weshaggard @AlexGhiondea +23166 area-System.Net [ManagedHandler] Determine how to ship it, and implement that Opt-in/Opt-out? Enabled via an environment variable? Shipped as public API? Etc. We need a supported way to allow for granular use of ManagedHandler on per-instance basis and not just process-wide. +23167 area-System.Net Bump package version for release 1.0 branch cc @danmosemsft @weshaggard @ericstj I'm not able to fix the packaging errors with these changes. Putting up a PR with the proposed changes, @ericstj Can you please take a look at the correctness of the changes for packaging.. +23168 area-Infrastructure Move master to netcoreapp2.1 Fixes #23116 /cc @weshaggard @mellinoe @bartonjs +23171 area-System.Runtime Modify High Sierra Check and Fix TZ Test Fixes #21433 +23173 area-System.Net ManagedHandler: Moved exception strings to .resx resources. Fixes #23148 NOTE: I purposely ignored exceptions that had TODOs with active issues for functionality that is not implemented. cc @stephentoub +23174 area-System.Net ManagedHandler: Only run connection pool cleanup timer when needed Fixes #23149 cc: @stephentoub +23177 area-System.Net Proposed SslStream additions for ALPN "# Latest Proposal https://github.com/dotnet/corefx/issues/23177#issuecomment-332995338 ```c# namespace System.Net.Security { public partial class SslStream { public Task AuthenticateAsServerAsync(SslServerAuthenticationOptions options, CancellationToken cancellation) { } public Task AuthenticateAsClientAsync(SslClientAuthenticationOptions options, CancellationToken cancellation) { } public SslApplicationProtocol NegotiatedApplicationProtocol { get; } } public class SslServerAuthenticationOptions { public bool AllowRenegotiation { get; set; } public X509Certificate ServerCertificate { get; set; } public bool ClientCertificateRequired { get; set; } public SslProtocols EnabledSslProtocols { get; set; } public X509RevocationMode CheckCertificateRevocation { get; set; } public IList ApplicationProtocols { get; set; } public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } public EncryptionPolicy EncryptionPolicy { get; set; } } public class SslClientAuthenticationOptions { public bool AllowRenegotiation { get; set; } public string TargetHost { get; set; } public X509CertificateCollection ClientCertificates { get; set; } public LocalCertificateSelectionCallback LocalCertificateSelectionCallback { get; set; } public SslProtocols EnabledSslProtocols { get; set; } public X509RevocationMode CheckCertificateRevocation { get; set; } public IList ApplicationProtocols { get; set; } public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } public EncryptionPolicy EncryptionPolicy { get; set; } } public struct SslApplicationProtocol : IEquatable { public static readonly SslApplicationProtocol Http2; public static readonly SslApplicationProtocol Http11; // Adding other IANA values, is left based on customer input. public SslApplicationProtocol(byte[] protocol) { } public SslApplicationProtocol(string protocol) { } public ReadOnlyMemory Protocol { get; } public bool Equals(SslApplicationProtocol other) { } public override bool Equals(object obj) { } public override int GetHashCode() { } public override string ToString() { } public static bool operator ==(SslApplicationProtocol left, SslApplicationProtocol right) { } public static bool operator !=(SslApplicationProtocol left, SslApplicationProtocol right) { } } } ``` # Previous Proposal Change log: * Updated = Removed results object to keep new objects down * Updated = Meeting notes * Updated = Removed string overload as there is no clear way in code to tell the user that it's utf-8 and only adds a potential trap * Updated = Put that string overload back under protest, but decision was made in a review meeting References #23077 ## Rationale Server Name Indication and Application Layer Protocol Negotiation are two TLS extensions that are missing currently from SslStream. They are needed urgently to support Http/2 (ALPN) and the ability to run Kestrel as an edge server (SNI). There are also many other customer applications that require this, including Clients being able to use HTTP/2 (Mananed HttpClient has an Http/2 support open issue). These have been outstanding for a long period of time, for a number of reasons. One major reason is that any change will cause an increase in overloading of the Authenticate methods which have become unwieldy and are brittle when adding new options. There will be more options coming with other TLS extensions available now (max fragment size for restricted memory clients for instance) and having a mechanism to add these without major API changes seems like a sensible change. ## Proposed API Change Originally I suggested overloading the Authenticate methods, however discussions in #23077 have changed my mind. Thanks to @Tratcher for this concept ``` csharp public partial class SslStream { public Task AuthenticateAsServerAsync(SslServerAuthenticationOptions options, CancellationToken cancellation) { } public Task AuthenticateAsClientAsync(SslClientAuthenticationOptions options, CancellationToken cancellation) { } public SslApplicationProtocol NegotiatedApplicationProtocol {get;} } public class SslServerAuthenticationOptions { public bool AllowRenegotiation { get; set; } public X509Certificate ServerCertificate { get; set; } public bool ClientCertificateRequired { get; set; } public SslProtocols EnabledSslProtocols { get; set; } public X509RevocationMode CheckCertificateRevocation { get; set; } public IList ApplicationProtocols { get; set; } public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } public EncryptionPolicy EncryptionPolicy { get; set; } } public class SslClientAuthenticationOptions { public bool AllowRenegotiation { get; set; } public string TargetHost { get; set; } public X509CertificateCollection ClientCertificates { get; set; } public LocalCertificateSelectionCallback LocalCertificateSelectionCallback { get; set; } public SslProtocols EnabledSslProtocols { get; set; } public X509RevocationMode CheckCertificateRevocation { get; set; } public IList ApplicationProtocols { get; set; } public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } public EncryptionPolicy EncryptionPolicy { get; set; } } public struct SslApplicationProtocol : IEquatable { public static readonly SslApplicationProtocol Http2; public static readonly SslApplicationProtocol Http11; // Adding other IANA values, is left based on customer input. public SslApplicationProtocol(byte[] protocol) { } public SslApplicationProtocol(string protocol) { } // assumes utf-8 and public override public ReadOnlyMemory Protocol { get; } public bool Equals(SslApplicationProtocol other) { } public override bool Equals(object obj) { } public override int GetHashCode() { } public override string ToString() { } // For debugger. utf-8 or a string representation of the raw bytes. E.g. ""0x68 0x74 0x74 0x70 0x2f 0x31 0x2e 0x31"" public static bool operator ==(SslApplicationProtocol left, SslApplicationProtocol right) { } public static bool operator !=(SslApplicationProtocol left, SslApplicationProtocol right) { } } ``` ## Meeting Notes 22-Sep-2017 1. Add ToString() to SslApplicationProtocol to get string version of the bytes. 2. Add string ctor to SslApplicationProtocol for usability, this will assume it's utf8 string. 3. ReadOnlyMemory is not immutable, we need to copy the bytes in the ctor, so taking a byte[] instead of ReadOnlyMemory ## Meeting Notes 5-Sep-2017 1. Use the updated API proposal above with options bags on the Authenticate methods. 2. Introduce an ApplicationProtocol type so the ALPN values can be correctly defined as raw bytes, have shared constants, and have equality operators. 2. Disallow mixing calls between the old constructors and the new methods. Only the minimal constructors taking the inner stream and ownership bool will be supported. 3. There is still some pending discussion on the factory approach. ## Further Notes 1. This will mean future options can be added without causing binary compatibility issues (increasing properties on concrete classes rather than changing overloads) 1. Non async methods shouldn't be supported for the new methods as it is an async operation under the hood so hiding the threads goes against current framework thinking. Consumers can wrap the async methods with blocking if they so wish (see modern HttpClient ) 1. I snuck max fragment in for the client, but I am happy to have this dropped if it is a sticking point 1. Cancellation tokens are there for both methods as per current framework thinking 1. ValueTask wasn't considered because there will be very few times this doesn't cause async operations, but if the new standard is to use ValueTask that is fine as well 1. A static list of the Http 1.1, Http/2 and Http/2 over TLS should be provided to stop users having to look it up. 1. Helper methods on the auth results should be provided so users don't have to look up what the string representations are in this case I added one for IsHttp2. ## Potential Implementation Issues There are now a number of parameters that could be modified during an connection being created. One of these is the certificate dictionary. If the consumer changes these by accidentally reusing the config options for a differently configured connection you could run into a security issue. One option is to have a builder but this is frowned upon as an API pattern and instead mostly used in higher level libraries/frameworks (ASP.NET for instance). This is solvable via taking an internal snapshot of the options but will need to be considered in any threat modelling. ## Example Usage ``` var options = new ServerAuthenticationOptions() { EnabledProtocols = SslProtocols.Tls12 | SslPRotocols.Tls11, ApplicationProtocols = new List() { ApplicationProtocol.Http2, ApplicationProtocol.Http11 } }; var secureStream = new SslStream(innerStream); await secureStream(options, token); ``` ## References #9608 SNI #4721 ALPN #23077 Previous API proposal [RFC 7301 ALPN](https://tools.ietf.org/rfc/rfc7301.txt) [RFC 3546 SNI and Max fragment](https://www.ietf.org/rfc/rfc3546.txt) [IANA ALPN Protocol Ids](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids) [EDIT] Updated formatting by @karelz" +23180 area-System.Net Enable full duplex communication with ManagedHandler ManagedHandler currently waits for all of the request content to be sent before it processes any response content. While that matches with what many servers do (not sending any response content until all request content has been received), some sites and situations do benefit from or even require full duplex communication, such that the response can be processed even while the request content is being sent. This change is also a necessary step towards enabling Expect: 100-continue, as we need to be able to receive the response header before having sent the content, and even without Expect: 100-continue, this allows us to stop sending a large request body if a server quickly sends back a status indicating the transfer isn't needed (e.g. a redirect). This change also improves on the cancellation support for sending the request body. The send cancellation token is now embedded in the request content stream and uses that token for all operations. Fixes https://github.com/dotnet/corefx/issues/23145 Fixes https://github.com/dotnet/corefx/issues/23146 cc: @geoffkizer +23182 area-System.Drawing System.Drawing: Consolidate GraphicsContainer code accross Unix and Windows Use the `GraphicsContainer` class from the Windows implementation on both Windows and Unix. Consolidate the the P/Invoke-related code in `GdiPlusNative.cs` Remove a unused `PenAlignment.cs` file (the Windows implementation is used on both Windows and Unix). +23183 area-System.Drawing System.Drawing: Consolidate LinearGradientBrush and PathGradientBrush classes Use the Windows implementation of `LinearGradientBrush` and `PathGradientBrush` on all platforms, and consolidate the P/Invoke methods, too. +23186 area-System.Net HttpClient: several HeaderDescriptor-related improvements (1) Change managed handler parser to use HeaderDescriptor directly (2) Add known header values to HeaderDescriptor and define these for a few headers (3) Remove Parser field from HttpStoreItemInfo, since we can get it from the HeaderDescriptor instead (4) Remove some dead code This shows about a 3.5% improvement on the HttpClientPerf GET test. @stephentoub @davidsh @Priya91 @wfurt @dotnet-bot test Outerloop Linux x64 Debug Build @dotnet-bot test Outerloop Windows x64 Debug Build @dotnet-bot test Outerloop OSX x64 Debug Build +23189 area-System.Drawing System.Drawing: Consolidate the Matrix and Region classes Use the `Matrix` and `Region` classes from the Windows implementation on Unix as well. Move the P/Invoke methods to `GdiplusNative.cs` +23191 area-System.Drawing System.Drawing: Consolidate CopyPixelOperation and PrivateFontCollection classes Use the Windows implementation of `CopyPixelOperation` and `PrivateFontCollection` on both Windows and Unix. Update the P/Invoke declarations accordingly. +23193 area-System.Net Could not load file or assembly System.Net.Http Version=4.0.0.0 > System.IO.FileNotFoundException: Could not load file or assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. > File name: 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Does anyone have any experience with this kind of issue? It is a .net core 1.1 application, I have seen several solutions for similar problems, but they did not seem to work. +23194 area-System.Drawing System.Drawing: Consolidate the FontFamily class Use the Windows implementation of the `FontFamily` class for both Windows and Unix. Update the P/Invoke declarations accordingly. +23195 area-System.Drawing System.Drawing: Start consolidating the Graphics class A lot (but not all) of the code in the `Graphics` class can be shared across Windows & Unix. Start implementing this by implementing `Graphics` as a partial class, with the shared code in `Graphics.cs` and the platform-specific code in `Graphics.Windows.cs` and `Graphics.Unix.cs`. Update the P/Invoke code accordingly. +23196 area-System.Net Add Expect: 100-continue support to ManagedHandler Fixes https://github.com/dotnet/corefx/issues/23144 cc: @geoffkizer +23197 area-System.Runtime Need consistent way to get Runtime framework version "For applications that may run on multiple versions, it can be useful diagnostic info to output ("".NET Framework 4.7.1"" or "".NET Core App 2.0.1"", etc). As far as I can see, there's no way to do this since `TargetFrameworkAttribute` is not present on either `mscorlib` or `System.Private.CoreLib`. Putting those on would be very helpful as well. At least `mscorlib` has an `AssemblyFileVersion` of `4.7.2542.1`. I don't see any such thing on .NET Core app that maps to its ""real"" version. Instead, .NET Core App 1.0.5 has `[assembly: AssemblyFileVersion(""4.6.25211.02"")]`. The ask is to have a reliable way, at runtime, to get a value that says something like "".NET Framework v4.7.1"", "".NET Core App 2.0.1"" or ""UWP ..."". Possibly related to https://github.com/dotnet/corefx/issues/23063" +23198 area-Meta Typo +23201 area-System.Threading System.Threading.Tasks tests hanging In the last few weeks, CI runs have been timing out sporadically due to the System.Threading.Tasks test project hanging. It looks like it's due to the RunStackGuardTests test; this test is not new nor has it been changed recently. +23202 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandlerTest/AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection(statusCode: 302, oldMethod: \""HEAD\"", newMethod: \""HEAD\"") failed with ""Xunit.Sdk.FalseException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection(statusCode: 302, oldMethod: \""HEAD\"", newMethod: \""HEAD\"")` has failed. Faulted: System.AggregateException: One or more errors occurred. (An error occurred while sending the request.) ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The connection with the server was terminated abnormally\r at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r at System.Threading.Tasks.RendezvousAwaitable`1.GetResult()\r at System.Net.Http.WinHttpHandler.d__105.MoveNext()\r --- End of inner exception stack trace ---\r at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r at System.Net.Http.HttpClient.d__58.MoveNext()\r --- End of inner exception stack trace ---\r ---> (Inner Exception #0) System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The connection with the server was terminated abnormally\r at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r at System.Threading.Tasks.RendezvousAwaitable`1.GetResult()\r at System.Net.Http.WinHttpHandler.d__105.MoveNext()\r --- End of inner exception stack trace ---\r at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r at System.Net.Http.HttpClient.d__58.MoveNext()<---\r \r Expected: False\r Actual: True Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass46_1.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__279_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__46.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20170814.01 (Core Tests) Failing configurations: - Windows.10.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170814.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FAllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection(statusCode:%20302,%20oldMethod:%20%5C%22HEAD%5C%22,%20newMethod:%20%5C%22HEAD%5C%22)" +23204 area-System.Net Test: System.Net.WebSockets.Client.Tests.KeepAliveTest / KeepAlive_LongDelayBetweenSendReceives_Succeeds Opened on behalf of @Jiayili1 The test `System.Net.WebSockets.Client.Tests.KeepAliveTest/KeepAlive_LongDelayBetweenSendReceives_Succeeds` has failed. System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseReceived, CloseSent, Closed' Stack Trace: at System.Net.WebSockets.WinRTWebSocket.CheckValidState($WebSocketState[] validStates) in E:\A\_work\908\s\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinRTWebSocket.cs:line 546 at System.Net.WebSockets.WinRTWebSocket.InterlockedCheckAndUpdateCloseState($WebSocketState newState, $WebSocketState[] validStates) in E:\A\_work\908\s\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinRTWebSocket.cs:line 508 at System.Net.WebSockets.WinRTWebSocket.d__36.MoveNext() in E:\A\_work\908\s\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WinRTWebSocket.cs:line 259 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Net.WebSockets.Client.Tests.KeepAliveTest.d__1.MoveNext() in E:\A\_work\908\s\corefx\src\System.Net.WebSockets.Client\tests\KeepAliveTest.cs:line 33 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : UWP 6.0 - 20170813.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Filc~2F/build/20170813.01/workItem/System.Net.WebSockets.Client.Tests.Execution/analysis/xunit/System.Net.WebSockets.Client.Tests.KeepAliveTest~2FKeepAlive_LongDelayBetweenSendReceives_Succeeds +23207 area-System.Net "System.Net.Sockets.Tests.TimeoutTest.SendTimesOut_Throws failed with ""Xunit.Sdk.InRangeException""" Failed test: System.Net.Sockets.Tests.TimeoutTest.SendTimesOut_Throws Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_debug/178/testReport/System.Net.Sockets.Tests/TimeoutTest/SendTimesOut_Throws_forceNonBlocking__False_/ Configuration: outerloop_netcoreapp_win7_debug MESSAGE: ~~~ Assert.InRange() Failure\r\nRange: (1500 - 3000)\r\nActual: 3075.975 ~~~ STACK TRACE: ~~~ at System.Net.Sockets.Tests.TimeoutTest.SendTimesOut_Throws(Boolean forceNonBlocking) in D:\j\workspace\outerloop_net---92764178\src\System.Net.Sockets\tests\FunctionalTests\TimeoutTest.cs:line 128 ~~~ +23208 area-System.Xml System.Xml.Tests.CXmlResolverTest.XmlResolver7 failed in CI "Failed test: System.Xml.Tests.CXmlResolverTest.XmlResolver7 Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_debug/3994/testReport/System.Xml.Tests/CXmlResolverTest/XmlResolver7_xslInputType__URI__readerType__XmlValidatingReader__outputType__Stream__navType__XPathDocument_/ Configuration: innerloop_netcoreapp_windows_nt_debug MESSAGE: ~~~ System.Xml.Xsl.XslTransformException : An error occurred while loading document 'C:\\Users\\dotnet-bot\\AppData\\Local\\Temp\\xmlResolver_document_function.xml'. See InnerException for a complete description of the error. ---- System.IO.FileNotFoundException : Could not find file 'C:\\Users\\dotnet-bot\\AppData\\Local\\Temp\\xmlResolver_document_function.xml'. ~~~ STACK TRACE: ~~~ at System.Xml.Xsl.Runtime.XmlQueryContext.GetDataSource(String uriRelative, String uriBase) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\Xsl\Runtime\XmlQueryContext.cs:line 156 at (XmlQueryRuntime ) at Root(XmlQueryRuntime ) at Execute(XmlQueryRuntime ) at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\Xsl\XmlILCommand.cs:line 139 at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\Xsl\XmlILCommand.cs:line 114 at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results, XmlResolver documentResolver) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\Xslt\XslCompiledTransform.cs:line 450 at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, Stream results) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\Xslt\XslCompiledTransform.cs:line 316 a t System.Xml.Tests.XsltApiTestCaseBase2.Transform(String szXmlFile, OutputType outputType, NavType navType, Boolean errorCase) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\tests\Xslt\XslCompiledTransformApi\XsltApiV2.cs:line 543 at System.Xml.Tests.XsltApiTestCaseBase2.Transform(String szXmlFile, OutputType outputType, NavType navType) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\tests\Xslt\XslCompiledTransformApi\XsltApiV2.cs:line 524 at System.Xml.Tests.CXmlResolverTest.XmlResolver7(XslInputType xslInputType, ReaderType readerType, OutputType outputType, NavType navType) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\tests\Xslt\XslCompiledTransformApi\XslCompiledTransform.cs:line 636 ----- Inner Stack Trace ----- at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize) at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\XmlDownloadManager.cs:line 26 at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\XmlUrlResolver.cs:line 62 at System.Xml.Xsl.Runtime.XmlQueryContext.GetDataSource(String uriRelative, String uriBase) in D:\j\workspace\windows_nt_debug88592b53\src\System.Private.Xml\src\System\Xml\Xsl\Runtime\XmlQueryContext.cs:line 135 ~~~" +23209 area-System.Net Test failure: System.Net.Http.Functional.Tests.DiagnosticsTest / SendAsync_ExpectedDiagnosticCancelledLogging ## Types of failures Related to #26042 ## History of failures Day | Build | OS | Error message -- | -- | -- | -- 5/26 | 20170526.52 | Centos73 | Assert: Expected: 42, Actual: 134 5/31 | 20170531.02 | Suse42.2 | Assert: Expected: 42, Actual: 127 5/31 | 20170601.01 | Suse42.2 | Assert: Expected: 42, Actual: 134 6/7 | 20170607.02 | Suse42.2 | Assert: Expected: 42, Actual: 134 6/12 | 20170612.02 | Ubuntu16.04 | Assert: Expected: 42, Actual: 134 6/13 | 20170613.01 | SLES12 | Assert: Expected: 42, Actual: 134 6/17 | 20170617.01 | RedHat72 | Assert: Expected: 42, Actual: 134 6/19 | 20170619.01 | RedHat73 | Assert: Expected: 42, Actual: 134 6/19 | 20170619.01 | Ubuntu17.04 | Assert: Expected: 42, Actual: 127 6/22 | 20170622.03 | Suse42.2 | Assert: Expected: 42, Actual: 134 6/26 | 20170626.01 | RedHat73 | Assert: Expected: 42, Actual: 134 7/3 | 20170703.02 | RedHat72 | [ManagedHandler] Assert: Expected: 42, Actual: -122 7/7 | 20170707.01 | RedHat73 | [ManagedHandler] Assert: Expected: 42, Actual: -122 7/7 | 20170708.01 | Centos73 | [ManagedHandler] Assert: Expected: 42, Actual: -122 7/13 | 20170713.01 | Win7 | [ManagedHandler] Assert: Expected: 42, Actual: -532462766 7/14 | 20170714.02 | Ubuntu16.10 | [ManagedHandler] Assert: Expected: 42, Actual: -122 7/19 | 20170719.03 | Centos73 | Assert: Expected: 42, Actual: -122 7/20 | 20170720.02 | RedHat72 | [ManagedHandler] Assert: Expected: 42, Actual: -122 8/13 | 20170813.01 | Debian90 | Assert exit code: Expected: 42, Actual: 134 8/19 | 20170819.02 | Ubuntu17.10 | Assert exit code: Expected: 42, Actual: 134 8/20 | 20170820.02 | Debian90 | Assert exit code: Expected: 42, Actual: 134 8/29 | 20170829.01 | RedHat69 | Remote process failed with an unhandled exception. 8/29 | 20170829.01 | RedHat69 | Remote process failed with an unhandled exception. 8/29 | 20170829.02 | RedHat69 | Remote process failed with an unhandled exception. 8/29 | 20170829.02 | RedHat69 | Remote process failed with an unhandled exception. 9/11 | 20170911.01 | Win8.1 | [ManagedHandler] Remote process failed with an unhandled exception. # Original report Failed test: System.Net.Http.Functional.Tests.ManagedHandler_DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_release/134/testReport/System.Net.Http.Functional.Tests/ManagedHandler_DiagnosticsTest/SendAsync_ExpectedDiagnosticCancelledLogging/ Configuration: outerloop_netcoreapp_windows_nt_release MESSAGE: ~~~ System.Diagnostics.RemoteExecutorTestBase+RemoteInvokeHandle+RemoteExecutionException : Remote process failed with an unhandled exception. ~~~ STACK TRACE: ~~~ Child exception: Xunit.Sdk.TrueException: Cancellation was not logged within 1 second timeout. Expected: True Actual: False at System.Net.Http.Functional.Tests.DiagnosticsTest.<>c.b__5_0() in D:\j\workspace\outerloop_net---7a39cc82\src\System.Net.Http\tests\FunctionalTests\DiagnosticsTests.cs:line 300 Child process: System.Net.Http.Functional.Tests, Version=4.2.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb System.Net.Http.Functional.Tests.DiagnosticsTest+<>c Int32 b__5_0() ~~~ +23211 area-System.Data SqlClient v4.4.0 on .NET core 2.0 throws FileLoadException when property's set "(Using vs 2017, 15.3 preview 17.1, dotnet --version: 2.0.0-preview2-006497) This code: ```cs using System; using System.Data.SqlClient; namespace ConsoleApp3 { class Program { static void Main(string[] args) { var con = new SqlConnection(); con.ConnectionString = ""data source=;initial catalog=master;integrated security=SSPI;persist security info=False;packet size=4096""; con.Open(); con.Close(); } } } ``` using project file: ``` xml Exe netcoreapp2.0 ``` throws: ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception. ---> System.IO.FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Data.SqlClient.SqlConnection..cctor() --- End of inner exception stack trace --- at System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at ConsoleApp3.Program.Main(String[] args) in c:\users\frans\documents\visual studio 2017\Projects\ConsoleApp3\ConsoleApp3\Program.cs:line 11 Press any key to continue . . . ``` Looking into the v4.4.0 SqlClient package, it appears to contain SqlClient v4.2 dll. Not sure whether that's OK or not, but at least it's impossible to do anything with it on .net core 2.0 " +23213 area-System.Runtime Binary Serializing an object with a property of type 'Type' fails with SerializationException "(vs2017 15.3 preview 7.1. dotnet --version: 2.0.1-servicing-006924) This code: ```cs using System; using System.Data.SqlClient; using System.Diagnostics; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace ConsoleTester { class Program { static void Main(string[] args) { BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); var toSerialize = new Foo() {Bar = ""Bar"", T = typeof(string)}; formatter.Serialize(stream, toSerialize); stream.Seek(0, SeekOrigin.Begin); Foo deserialized = (Foo)formatter.Deserialize(stream); stream.Close(); Console.WriteLine(""Deserialized: "" + deserialized.Bar); } } [Serializable] public class Foo { public string Bar { get; set; } public Type T { get; set; } } } ``` results in: ``` Unhandled Exception: System.Runtime.Serialization.SerializationException: Type 'System.RuntimeType' in Assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' is not marked as serializable. at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, BinaryFormatterWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Boolean check) at ConsoleTester.Program.Main(String[] args) in C:\Myprojects\VS.NET Projects\LLBLGen Pro v5.3\UnitTests\LLBLGen Pro\LowLevelAPI\NUnitTests\SelfServicing\ConsoleTester\ConsoleTester\Program.cs:line 16 Press any key to continue . . . ``` Looking at RuntimeType in CoreCli, it indeed isn't Serializable, while the type RuntimeType in .NET full is serializable. This causes problems when porting code over from .NET full to .NET core 2.0 and using BinarySerialization. As the BinaryFormatter is available, one would assume it would work with normal arbitrary code like the simple class above. " +23216 area-System.Net Fix ManagedHandler redirect post->get behavior Fixes https://github.com/dotnet/corefx/issues/22700 cc: @geoffkizer, @davidsh +23218 area-System.Security [release/1.1] Simplify X509Chain building with OpenSSL Backport #19017 (and #23026) to release/1.1 so our X509Chain processing model is the same across all released versions. The change for 2.0 changed the signature of the shim function since it's a side-by-side model. For 1.1 a new shim function was added and the P/Invoke target changed as a defensive measure. This also includes the packaging changes necessary to service the X509Certificates library (which should pull up the native shim change through the package closure). Addresses #23023 for 1.1 +23219 area-System.Security [release/1.0] Prevent crash when Openssl's PKCS12_parse function fails. Backport #11147 to release/1.0. Packaging changes based off of #18365. Fixes #23022. +23220 area-Infrastructure Ensure build of netcoreapp vertical of CoreFx can be done without past packages Some recent changes cause us to require past shipped packages, see https://github.com/dotnet/corefx/pull/23168#discussion_r132996424. We should eliminate those. The only packages pulled down for netcoreapp vertical build should be buildtools (and its related closure), netstandard, desktop targeting packs, and the runtime. /cc @weshaggard @mellinoe +23221 area-System.Diagnostics FW link on release notes is broken in DiagnosticsSource https://preview.nuget.org/packages/System.Diagnostics.DiagnosticSource/ Release notes link https://go.microsoft.com/fwlink/?LinkID=799421 leads to 1.1 release notes https://github.com/dotnet/core/blob/master/release-notes/1.1/1.1.0-preview1.md +23223 area-System.Xml Fix intermittent issues caused by two different xsl tests accessing same file Fixes: https://github.com/dotnet/corefx/issues/23208 Seems like two different projects use the same temporary path and possibly run tests in parallel (parallelization is disabled per project but two different projects can run in parallel I believe) +23224 area-System.Net Add IPAddress Span-based APIs resolves #22607 This adds ```C# public IPAddress(ReadOnlySpan address) public IPAddress(ReadOnlySpan address, long scopeid) public bool TryWriteBytes(Span destination, out int bytesWritten) public static IPAddress Parse(ReadOnlySpan ipSpan) public static bool TryParse(ReadOnlySpan ipSpan, out IPAddress address) public bool TryFormat(Span destination, out int bytesWritten) ``` Assumption is that the use of `ReadOnlySpan` or `Span` overloads are by the most demanding use cases so where it makes sense the existing methods call the Span related methods or the internal helper methods have been converted to use spans. @stephentoub I think this is ready for review now +23229 area-Infrastructure Could not load file or assembly 'netfx.force.conflicts' I've compiled project with new release of VS 2015.3. Installed .Net Core 2.0 SDK. Project is a pretty old Asp.Net web application, where all project deps were converted to .Net Standard. No on every page load I get ``` [BadImageFormatException: Cannot load a reference assembly for execution.] [BadImageFormatException: Could not load file or assembly 'netfx.force.conflicts' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +225 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +110 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +22 System.Reflection.Assembly.Load(String assemblyString) +34 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48 [ConfigurationErrorsException: Could not load file or assembly 'netfx.force.conflicts' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +771 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +256 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +58 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +236 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +69 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +139 System.Web.Compilation.BuildManager.ExecutePreAppStart() +172 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +912 [HttpException (0x80004005): Could not load file or assembly 'netfx.force.conflicts' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +534 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +111 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +718 ``` How to resolve this? +23230 area-System.IO Tests in System.IO.Ports are terminating the runner for some test failures Some tests are starting threads and when these threads crash because of test failures the runner stops. It will be more productive to have individual tests failing since the full run of the tests is pretty long if either null modem or loopback are present. +23231 area-System.Net WebProxy_BypassOnLocal_MatchesExpected fails in Linux CI https://mc.dot.net/#/user/ericstj/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/58821d965b53932b09804845d6d0f752aff9c28d/workItem/System.Net.WebProxy.Tests/analysis/xunit/System.Net.Tests.WebProxyTest~2FWebProxy_BypassOnLocal_MatchesExpected Appears to be transient issue. Test leg was Ubuntu.1604.Amd64.Open-Release-x64. ``` Unhandled Exception of Type System.Net.Internals.SocketExceptionFactory+ExtendedSocketException Message : System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address Stack Trace : at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 46 at System.Net.Dns.ResolveCallback(Object context) in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 290 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 420 at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 562 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Linq/src/System/Linq/Select.cs:line 129 ``` +23232 area-System.Security [release/1.0] Simplify X509Chain building with OpenSSL Backport #23218 to release/1.0 so our X509Chain processing model is the same across all released versions. In the 1.1 version of this change the chain builder context used X509UpRef, which was added in 1.1 to reduce memory, since that isn't available in 1.0 this edition uses X509Duplicate. This also includes the packaging changes necessary to service the X509Certificates library (which should pull up the native shim change through the package closure). Addresses #23023 for 1.0. +23233 area-System.Security System.Security.Cryptography.Cng package needs Xamarin support Xamarin SDKs have custom System.Security.Cryptography.Cng facade because the underlying types exist in system assemblies but System.Security.Cryptography.Cng package is missing `_._` redirects to allow this facade to be used +23234 area-System.IO Test AbortOnErrorShouldBeClearedOnOpen is disabled on Uap and UapAot The current implementation of this test requires reflection that is not available for the internal type without adding the reflection for the whole serial ports (which increase the size of the assembly). So for now the test is being disabled. +23237 area-System.Collections Move argument validation for some ImmutableList functions to ImmutableList.Node I am still breaking up parts of https://github.com/dotnet/corefx/pull/15382 into different PRs to make reviewing easier. In this PR, I've removed argument validation for a couple of `ImmutableList` functions. I did this since I noticed many functions validated their arguments twice, once in `ImmutableList` and once in `ImmutableList.Node`. It's simpler if we just omit validation for the former and let the `Node` class take care of it. There were a few places where `ImmutableList` and `Node` validated arguments differently. For those cases, I copied and pasted the `ImmutableList` validation into the `Node` method to preserve exception behavior. /cc @safern, @ianhays, @AArnott +23240 area-System.Runtime Proposal: Enum.IsDefined() I am aware of the issues https://github.com/dotnet/corefx/issues/10692 and https://github.com/dotnet/corefx/issues/15453. However, https://github.com/dotnet/corefx/issues/10692 isn't a formal proposal, and https://github.com/dotnet/corefx/issues/15453 will take forever to get through because it has so much other stuff. I think this API is valuable enough that I am opening a new issue to expedite things. ## Proposal ```cs namespace System { public abstract class Enum : ValueType, IComparable, IConvertible, IFormattable { public bool IsDefined(); } } ``` ## Performance The new API doesn't need to have great performance. (Yes, it will still box.) 99% of the time I use this in `Debug.Assert`, so it has no effect on release perf. Also, as @benaadams mentions in the first issue, this is faster than the existing `IsDefined` method because > Enum.IsDefined(typeof(MyEnum), argument) is also quite slow as it needs to do lots of conversion checks etc; whereas if you already have the enum these don't need to be done. It's faster and terser than the existing method and it's used very often, so it seems reasonable to add this, no? **edit:** If for whatever reason the boxing becomes a performance problem, we can consider making the method an intrinsic to avoid it (just like https://github.com/dotnet/coreclr/pull/7895 avoided boxing for `Enum.GetHashCode`). +23242 area-System.Drawing Adding System.Drawing.Printing PrinterSettings tests. Adding System.Drawing.Printing PrinterSettings tests. (#23161) (#20711) +23243 area-System.Reflection Tests for fix to AssemblyName(string) version parsing Depends on https://github.com/dotnet/coreclr/pull/13373 Part of fix for https://github.com/dotnet/corefx/issues/22663 +23244 area-System.Net HttpWebRequest.Host throw WebException "Hi, I use .net core 2.0 with VS 15.3. This example work fine on Framework .net 6.4.2. This request work fine: ```C# string host = ""www.google.fr""; string url = ""https://"" + host; try { System.Net.HttpWebRequest request = System.Net.HttpWebRequest.CreateHttp(url); request.UserAgent = ""Mozilla/5.0 (compatible;)""; request.Timeout = 10000; //request.Host = uri.Host; HttpWebResponse response = request.GetResponse() as HttpWebResponse; } catch(Exception ex) { Console.WriteLine(ex.ToString()); } ``` But when a try to use Host with IP address. I obtains with exception: ```C# string host = ""www.google.fr""; string url = ""https://"" + host; try { Ping ping = new Ping(); PingReply reply = ping.Send(host); System.Net.HttpWebRequest request = System.Net.HttpWebRequest.CreateHttp(""https://"" + reply.Address.ToString()); request.UserAgent = ""Mozilla/5.0 (compatible;)""; request.Timeout = 10000; request.Host = host; HttpWebResponse response = request.GetResponse() as HttpWebResponse; } catch (Exception ex) { Console.WriteLine(ex.ToString()); } ``` **Exception:** > System.Net.WebException: An error occurred while sending the request. A security error occurred ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() > at System.Net.Http.WinHttpHandler.d__105.MoveNext() > --- End of inner exception stack trace --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() > at System.Net.Http.HttpClient.d__59.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() > at System.Net.HttpWebRequest.d__194.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() > at System.Net.HttpWebRequest.GetResponse() > --- End of inner exception stack trace --- > at System.Net.HttpWebRequest.GetResponse() > at HttpWebRequest.Program.Main(String[] args) in..Program.cs:line 38 " +23248 area-Microsoft.CSharp Remove unused properties from ErrorType `ErrorType` never has `TypeParent` set to anything except null, and either both the `nameText` is not null and the namespace parent is the root namespace, or both are null, so the tests for it can become tests on `nameText`. +23250 area-System.Net System.Net.WebSockets doesn't allow setting of socket options in any way. The current API surface of .NET core doesn't expose the underlying TCPSocket so there is no way to set socket options. My specific use cases requires me to disable naggle algorithm. If I don't there are stalls that make it unuseable in my application. I would really like it if we could either access the underlying TCP socket object or allow us to set the socket options in some way. Currently I am forced to disable naggle system wide... +23251 area-System.IO Prevent serial port test failures of aborting the run Not pretty but a way to get tests to run with the flaky driver/ports so runs with and without changes can be easily compared (i.e.: one could check if the set of failures is affected by the changes or not). Basically this change replaces `Thread` usage with `Task` and handle the failures on the test case directly. Notice that the default diff from GH is going to make this looks bigger than it is, I recommend ignoring whitespace diffs to better see this. This fixes #23230 +23253 area-System.IO Added BinaryWriter Span-based APIs Added tests for BinaryWriter Span-based APIs and exposed them from System.IO contract. Connected to https://github.com/dotnet/coreclr/pull/13378 +23255 area-Meta https://apisof.net/ is having certificate error ``` This site is not secure This might mean that someone's trying to fool you or steal any info you send to the server. You should close this site immediately The website's security certificate is not yet valid or has expired. Error Code: DLG_FLAGS_SEC_CERT_DATE_INVALID ``` Browser: Edge +23260 area-System.Runtime GetTypeFromProgID not working on NetStandard 2.0 "Hi folks, This piece of code works fine in 4.61 and later: ` public sealed class ComLoader { private string m_fullName; private Type m_t; private Object m_o; public ComLoader(string fullName) { m_fullName = fullName; } public void InvokeMethod(string name, object[] parameters, out string result) { m_t = Type.GetTypeFromProgID(m_fullName); if (m_t == null) throw new Exception(""'"" + name + ""' not found""); m_o = Activator.CreateInstance(m_t); var r = m_t.InvokeMember ( name, System.Reflection.BindingFlags.InvokeMethod, null, m_o, parameters ); if (r == null) result = null; else result = r.ToString(); } } ` I call it from console app (4.6.1 and later): ` var x = new ComLoader(""VBAInterop.myClass""); x.InvokeMethod(""myMethod"", null, out string r); ` When class ComLoader is within netstandard2.0 class library, code raises this exception: Retrieving the COM class factory for component with CLSID {9910CCF8-F352-4823-AF20-EE524E614D82} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) at m_o = Activator.CreateInstance(m_t); When class ComLoader is within net 4.6.1 and later class library, code works fine. Please can you help me?" +23261 area-System.IO Add support for serial port to UWP "Change in corefx: UWP support for serial port (#22887) * [WIP] add serial port to UWP update build and test tools * OpenCommPort signature fixes * [WIP] review feedback * [WIP] add missing files * fix packaging issue * [WIP] replaced ThreadPool.BindHandle Replaced calls to ThreadPool.BindHandle w/ ThreadPoolBoundHandle.BindHandle This is still working in progress due to issues in tests preventing full code coverage (same issues happening without the current changes). minor self-review * CR feedback * [WIP] System.IO.Ports NullModem running all tests * Finish UWP work to enable serial ports * Revert ""[WIP] System.IO.Ports NullModem running all tests"" This reverts commit a97edbaba463feb1871100cdcafc5f9d5f79663c. * add comment for conditional fact * changes for AbortOnError" +23262 area-System.Text GroupCollection should implement IReadOnlyDictionary interface to align with its Dictionary-Type Usage "```GroupCollection``` acts like a dictionary, but doesn't provide all of the familiar methods found on Dictionary collections. This makes it harder to inspect contents to make informed decisions on its contents to drive logic. For instance, determining if a key was present in a named capture group before trying to perform logic with the result. This can be seen as a follow-on to issue #271 (it was listed in the Open Questions section). Rationale and Usage ----------------------- This was something I stumbled upon when trying to make a RegEx expression in two forms, one with a lot of named parameters, but that were all optional. I wanted to check if the parameters existed before proceeding to perform logic with them but discovered that there was no method to check if a named capture group was actually captured. Currently, I can use an indexer to access a specific group name like ``` match.Groups[""options""] ``` But unlike a normal dictionary, I can't call ```match.Groups.ContainsKey('options"")``` to see if it exists first before retrieval if I have optional named capture groups. The current Contains method only checks on the **object** not the named key. Currently, the group if *not* captured returns an empty string, but that is a bit misleading, as the group could have been captured but contained no data. So, there's an ambiguous state. If we had methods to check if the capture was performed, we could leave the group out and have KeyNotFoundExceptions or nulls to differentiate from existence vs. no data. This would let us then do: ``` if (match.Groups.ContainsKey(""options"")) { // do something with match.Groups[""options""] } ``` OR ``` Group options; if (match.Groups.TryGetValue(""options"", out options)) { // do something with options group now. } ``` Proposed API --------------- ``` public GroupCollection : IReadOnlyDictionary, ... { bool ContainsKey(string key); bool TryGetValue(string key, out Group group); ... } ``` Details ------- - As mentioned, this was an Open Question of #271 that wasn't resolved. It should be a fairly straight-forward addition to the class. Updates --------- - 8/16/17 Updated request to align with review process format and changed to explicitly call out IReadOnlyDictionary interface. " +23264 area-System.IO UWP branch: remove warning suppression after build tools are updated. /cc @joperezr @JeremyKuhne Suppressing BCL0015 was needed in order to use `kernelbase.dll!OpenCommPort` on `release/UWP6.0` when merging we can check if build tools was updated to a version that does not require the suppression anymore. +23265 area-Serialization Update version to 9.9.9 Update the version to a fake one. @shmao @zhenlan +23267 area-System.Data Added Close() to DbDataReader contract. Also changed DbDataReader.Dispose() to call Close(), so as to match the Framework implementation. Ports DbDataReader.Close() changes from https://github.com/dotnet/corefx/commit/7888677b3c53596085c2fa53860d9a0519eeecfd to 1.1.0. Fixes issue: https://github.com/dotnet/corefx/issues/2249 Shiproom approval pending. +23268 area-System.Net [release/1.1.0] Do not service System.Net.Requests. cc @ericstj @danmosemsft @weshaggard @davidsh This change reverts servicing for System.Net.Requests, servicing is not required for assemblies depending on another serviced assembly. We ensure the System.Net.Requests tests pick the latest serviced System.Net.Http, by adding a direct project reference from the System.Net.Requests test assembly to the System.Net.Http pkgproj. +23269 area-System.Security Use Span overloads with Rfc2898DeriveBytes computations Change from ComputeHash(byte[])=>byte[] to TryComputeHash(src, dest) to reduce the number of allocations involved. For iteration counts of 1000, 10000, and 100000 it shows a 15% reduction in time, and almost entire elimination of GC (most of that 15%). Fixes https://github.com/dotnet/corefx/issues/16925. +23272 area-Microsoft.CSharp Remove dead code from CreateArray in Microsoft.CSharp & tidy the rest * Remove dead code from `BindArrayIndexCore` Is only ever called with expression typed `ArrayType` so remove path for other types. * Remove unused `BindingFlags` argument. * Include fallback within `ChooseArrayIndexType` `Int32` is always used when it fails to find a match, so move that logic into it, itself. * Remove branch for `CreateArrayIndex` called with non-array. Never happens. Also, element type was already found for unsafe check, so pass it in. * Move ArrayType flag setting into ArrayType ctor * Remove bindInder Only caller was removed as dead code. +23273 area-System.IO Address some of the feedback in PR for port SerialPort to UWP6.0 There was some good feedback while porting `SerialPort` to UWP6.0, this issue is to track it, refer to the comments at #23261. +23274 area-Infrastructure Update package/assembly versions for assemblies to be serviced 1.0 cc @danmosemsft @ericstj fixes #23119 @ericstj The System.IO.FileSystem.DriveInfo pkgproj doesn't have the last package version, and looking at nuget.org, the package version seems to be 4.3.0, but not sure which branch version is that. How do I update the package version of this lib here? +23277 area-System.Runtime Expose and test primitive span-based {Try}Parse methods Contributes to dotnet/corefx#22403 Depends on https://github.com/dotnet/coreclr/pull/13389 and https://github.com/dotnet/corert/pull/4327 cc: @jkotas, @KrzysztofCwalina, @tarekgh +23278 area-Microsoft.CSharp Remove dead code concernin TypeParameterType/Symbol from Microsoft.CSharp Most of this is code that relates to possibilities when compiling a generic method (including methods within generic types) that aren't relevant with the concrete types dynamic code works with. * Remove cases concerning `TypeParameterType` conversions Only relevant when compiling generic methods, not in dynamic code. Entails removal of `ERR_TypeVarCantBeNull`. Contributes to #22470 * Remove case for `TypeParameterType` in `AllPossibleInterfaces` Since both call sites ensure the type is a struct, class or interface type, it can only be called with an `AggregateType` or `NullableType` * Remove `_bHasRefBound`, `_bHasValBound` and `_pDeducedBaseClass` Only ever false, false and null respectively. * Remove base and boxing type parameter conversions. Only relevant when compiling generic methods, so never hit in dynamic code. * Don't consider type parameter types in `GetRefEqualSigs` Only comes up when statically compiling generic methods. * Remove unnecessary `goto`s * Don't consider type parameter types in `HasImplicitReferenceConversion` Only comes up when static compiling generic methods. * Reduce repeated checks within `HasImplicitReferenceConversion` (Some of these will become better still when some methods that only return true for `AggregateType` are made sealed and virtual within it) * Remove unnecessary identity check form `HasImplicitReferenceConversion`. Never true when it is called, and if it was true the method should return true anyway. * Move check that `pDest` is `AggregateType` As all true-returning branches depend on it in some way, and it simplifies the rest. * Replace if ladder on types of `AggregateType` into switch on symbol's `AggKind` * Remove `TypeParameterType` case from `MemberLookup.Lookup` Cannot happen outside of static compilation of generic method. * Remove type parameter case from `SearchSingleType` Cannot happen in dynamic code. * Remove `TypeVarsAllowed` and `ExtensionCall` from `MemLookFlags` Unused * Remove `GetInterfaceBounds` from `TypeParameterType` and `TypeParameterSymbol` Always null and no longer used. * Remove `GetEffectiveBaseClass` from `TypeParameterType` & `TypeParameterSymbol` Always null, and unused. (Removing either still results in null being the value that would be found, or removing a case that would throw if it was hittable). +23279 area-Infrastructure Core Tests (2.0.0): All work items have fireball issue for RHEL69 Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170815.02 Failed configurations: Centos.73.Amd64-x64 Debian.87.Amd64-x64 RedHat.69.Amd64-x64 RedHat.72.Amd64-x64 RedHat.73.Amd64-x64 SLES.12.Amd64-x64 Ubuntu.1404.Amd64-x64 Ubuntu.1604.Amd64-x64 suse.422.amd64-x64 +23282 area-System.Data "Test: System.Data.Tests.SqlTypes.SqlStringTest/SqlDateTimeToSqlString failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Data.Tests.SqlTypes.SqlStringTest/SqlDateTimeToSqlString` has failed. Assert.Equal() Failure\r ? (pos 0)\r Expected: 10/22/2002 9:52:30 AM\r Actual: 22/10/2002 9:52:30 AM\r ? (pos 0) Stack Trace: at System.Data.Tests.SqlTypes.SqlStringTest.SqlDateTimeToSqlString() Build : UWP 6.0 - 20170815.01 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170815.01/workItem/System.Data.Common.Tests/analysis/xunit/System.Data.Tests.SqlTypes.SqlStringTest~2FSqlDateTimeToSqlString +23283 area-Infrastructure FileLoadException when referencing log4net on Linux in netcoreapp2.0 "Looking at https://github.com/dotnet/corefx/issues/18088 I would expect to be able to reference log4net but I get downgrade warnings. So I updated the project as below: ``` Exe netcoreapp2.0 win7-x64;centos.7-x64 ``` Code is as simple as it could be. ``` using log4net; namespace ConsoleApp2 { class Program { private static readonly ILog Log = LogManager.GetLogger(typeof(Program)); static void Main(string[] args) { Log.Info(""Hello World""); } } } ``` Publish to win7-x64 and run and I get a working app. Publish to centos.7-x64 and I get the below exception. ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.IO.FileSystem, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Aborted ```" +23284 area-Infrastructure Updating CoreClr dependencies to servicing-25616-01 +23285 area-System.Runtime Set fixed culture for CookieContainer blob sanity check Fixes https://github.com/dotnet/corefx/issues/21720 Not defining a fixed culture causes various test cases to fail sometimes as the at runtime instantiated object isn't the same as the serialized stored one. RemoteExecutor isn't possible in this case as we can't let every test case (~300) invoke a new RemoteExecutor instance. Try-Finally pattern is also not possible as we are using yield return statements. For this method I think this is the best solution. +23286 area-Microsoft.CSharp Remove Microsoft.CSharp's checks on pointer or static type parameters. Since types come from live instances, and pointer operations are already prohibited, this case can't come up. Entails removal of `ERR_BadTypeArgument` and `ERR_GenericArgIsStaticClass`, contributes to #22470 +23287 area-Microsoft.CSharp Don't consider TypeParameterTypes in Microsoft.CSharp constraint checks Since we only consider constraints for calls on actual types (rather than we would if compiling a call from within a generic method), `arg` is never a `TypeParameterType`, so don't consider the case of it being so. Entails removal of `ERR_GenericConstraintNotSatisfiedTyVar`, contributes to #22470 +23291 area-System.Net Test failed: System.Net.Security.Tests.SslStreamCredentialCacheTest / SslStream_SameCertUsedForClientAndServer_Ok ## Types of failures ``` System.TimeoutException : Task timed out after 15000 at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Net.Security.Tests.SslStreamCredentialCacheTest.d__0.MoveNext() in E:\A\_work\1384\s\corefx\src\System.Net.Security\tests\FunctionalTests\SslStreamCredentialCacheTest.cs:line 42 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ``` ## History of failures History since 2017/6, when another unrelated problem was addressed in the test. Day | Build | OS | Details --- | --- | --- | --- 11/28 | 20171128.03 | Win7 | 12/18 | CI: 55314276e4392f81422c627c94b074f4da492ca7 | Unknown 12/30 | 20171230.02 | Win7 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171230.02/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamCredentialCacheTest~2FSslStream_SameCertUsedForClientAndServer_Ok) 1/3 | CI: ef02f28820e7b930dec93f66d5e7f349be3a80c3 | Win7 | 1/27 | 20180127.01 | Win7 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180127.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.SslStreamCredentialCacheTest~2FSslStream_SameCertUsedForClientAndServer_Ok) 3/16 | 20180316.01 | Win7 3/16 | 20180316.03 | Win7 3/23 | 20180323.03 | Win10 # Original report It timed out, but this test doesn't even use networking. https://github.com/dotnet/corefx/pull/23188 ``` System.Net.Security.Tests.SslStreamCredentialCacheTest.SslStream_SameCertUsedForClientAndServer_Ok [FAIL] System.TimeoutException : The operation has timed out. Stack Trace: D:\j\workspace\windows_nt_re---e95ab8b5\src\Common\tests\System\Threading\Tasks\TaskTimeoutExtensions.cs(23,0): at System.Threading.Tasks.TaskTimeoutExtensions.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---e95ab8b5\src\System.Net.Security\tests\FunctionalTests\SslStreamCredentialCacheTest.cs(49,0): at System.Net.Security.Tests.SslStreamCredentialCacheTest.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) D:\j\workspace\windows_nt_re---e95ab8b5\src\System.Net.Security\tests\FunctionalTests\SslStreamCredentialCacheTest.cs(23,0): at System.Net.Security.Tests.SslStreamCredentialCacheTest.SslStream_SameCertUsedForClientAndServer_Ok() ``` This was on 1.1, though, so maybe something has been fixed since then? +23292 area-System.Data Could not load type 'Microsoft.SqlServer.Server.SqlContext' from assembly 'System.Data, Version=4.0.0.0 I am getting this exception when i tried to restore the Data base using **c# , .Net core2 and VS2017 preview2 ,** here is the sample code SqlConnection sqlConnection = new SqlConnection(ConnectionString); // Error on the line below Microsoft.SqlServer.Management.Common.ServerConnection conn = new Microsoft.SqlServer.Management.Common.ServerConnection(sqlConnection); but this is working in console application . Did i miss anything ... Thanks Victor.A +23293 area-System.Security Updating CoreFx dependencies to servicing-25616-01, and make X509Certificates tests use newest shim. +23294 area-System.IO UWP: Implement SerialPort.GetPortNames Currently it is throws PNSE. When this is done the test `OpenDevices01` should be enabled for Uap, likely it would be able leverage enumeration via registry, unless we run tests on devices that do not have registry information that will be fine. See #21156 for more information. +23296 area-System.IO File.WriteAllTextAsync performance issues "System configuration: * `dotnet --version`: 2.0.0 * OS: Arch Linux I'm facing performance issues using `File.WriteAllTextAsync` in .NET core 2.0. I'm relatively new to .NET core, so I don't know if I'm doing something wrong here. For testing purposes, have written 3 methods that do the same thing in different ways: all of them write some content to a random file, and then delete it. ```c# static async Task WriteAllTextAsync() { string fileName = System.Guid.NewGuid().ToString(); await File.WriteAllTextAsync($""write/{fileName}.txt"", content); File.Delete($""write/{fileName}.txt""); } static void WriteAllText() { string fileName = System.Guid.NewGuid().ToString(); File.WriteAllText($""write/{fileName}.txt"", content); File.Delete($""write/{fileName}.txt""); } static async Task WriteWithStreamWriter() { string fileName = System.Guid.NewGuid().ToString(); using (StreamWriter outputFile = new StreamWriter($""write/{fileName}.txt"")) { await outputFile.WriteAsync(content); } File.Delete($""write/{fileName}.txt""); } ``` I am using the following loop to call these methods: ```c# for (int i = 0; i < 200; ++i) { //""method()"" or ""await async_method()"" } ``` I've noticed that `WriteAllTextAsync` is significantly slower than the other methods and results in higher disk usage (no fancy benchmarks here, the HDD led on my pc just stays turned on when using this method). Using `time` on each method gives the following results: ``` WriteAllTextAsync real 0m14.579s user 0m4.314s sys 0m0.460s WriteAllText real 0m4.244s user 0m4.116s sys 0m0.418s WriteWithStreamWriter real 0m4.243s user 0m4.133s sys 0m0.432s ``` As expected, the results using `File.WriteAllText` (synchronously) and StreamWriter.WriteAsync (asynchronously) are very close, but `File.WriteAllTextAsync` is much slower. " +23298 area-System.Runtime Random deviates from standard algortihm "A customer filed the following bug report on [Connect](https://connect.microsoft.com/VisualStudio/feedback/details/634761/system-random-serious-bug): > While investigating the period of various random number generators, I found a serious bug in Microsoft .NET System.Random implementation. > > [Microsoft Documentation](http://msdn.microsoft.com/en-us/library/system.random.aspx) says that the Random class is based on Donald E. Knuth's subtractive random number generator algorithm. For more information, see D. E. Knuth. ""The Art of Computer Programming, volume 2: Seminumerical Algorithms"". Addison-Wesley, Reading, MA, second edition, 1981. > > The problem was discovered when I use .NET Reflector to see what is actually implemented. Knuth was very specific about the lagged Fibonacci sequence coefficient (24 and 55). Somehow Microsoft mistyped the value to be 21 (this.inextp = 0x15 in public Random(int Seed) in source code), in place of 31 (=55-24). Due to this mistype, the random number generated no longer has the guanrantee on the period to be longer than (2^55-1). The Knuth version of lags (24, 55) has been tested by many people about the property of the generated numbers but not the one created by Microsoft. > > It is very easy to identify the typo. It seems that Microsoft just copied the routine (ran3) from Numerical Recipes v.2 page. 283 verbatim (even the variable names are copied), not from Knuth book which has a complete different way of initializing. You see that Numerical Recipe version uses 31 correctly, not 21 used by Microsoft. Looking at the [sources](https://github.com/dotnet/coreclr/blob/633f4ed3231fd3977976fa974d13038b338be325/src/mscorlib/shared/System/Random.cs#L90), it seems it's still the case today. I'm not sure what the implication of our deviation is. If we wanted to fix it, we'd likely would have to quirk the implementation on .NET Framework. For .NET Core, we can debate the merits of quirking, but it's likely we break customers with changing the seed. Thoughts? " +23299 area-Infrastructure corefx does not build on Ubuntu 17.04 This is because clang-3.5 is no longer available and system comes with 3.8 by default. The src/Native/ build script has option to specify different version but that is not exposed to top level scripts (build.sh and build-native.sh) This is somewhat unpleasant as for example we require minimum 3.9 for arm so available 3.8 should work just fine. I think there are two possible stages for fix: #1 expose clang option to root build script and make sure it works. #2 detect available clang and use closest desired match similar to way how coreclr does. +23300 area-Meta ASP.NET Core with Docker support: Connection refused "I have a ASP .NET Core (v2.0) app with Docker support. And I want to start a Oracle Database when starting my app. This is how my docker-compose file looks like: ``` version: '3' services: devarttestapp: image: devarttestapp build: context: ./DevartTestApp dockerfile: Dockerfile oracledb: image: sath89/oracle-12c ports: - ""1521:1521"" ``` I use Devart data provider dotConnect for Oracle. ```c# var conn = new Devart.Data.Oracle.OracleConnection(); conn.ConnectionString = Environment.GetEnvironmentVariable(""ORACLE_CONNECTION_STRING""); try { conn.Open(); } catch (Exception e) { Console.WriteLine(e); throw; } ``` But when I try to connect to the database of the created Oracle DB container I get following exception: > System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (Connection refused 127.0.0.1:1521) I also tried to include the `depends_on` as well as the `networks` option in my docker-compose file with the same results. What could be the cause of this exception? And how do I solve this problem? [EDIT] Add C# syntax highlight by @karelz" +23302 area-Infrastructure add option to specify clang and few minor improvements for Linux "fixes #23299 - build on Ubuntu 17.04 build-native.sh under src/Native already has option to specify clang but that is not exposed to top level and build.sh clang3.8 fails with complain about unknown option. The options are really inconsistent, some starting with --XX, some -YY and some ZZZ. To keep it consistent wit top level options and help I added -Clang=XYZ so one can pass any string without need to update script for every new clang version (which builds-managed.sh clangx.y does) There are also three more minor improvements: 1. -h works now same way as -? (it always did for src/Native/build-native.sh) 2. - we do not try to use options starting with '-' as directory. Preferably the check -d $1 should skip all options like normal scripts do or there should be explicit option for that. 3. we use ""$@"" instead of $* to properly handle arguments with spaces. I did this while back but it got rolled back because it exposed some other problem (which is fixed now) I did test build on Ubuntu 17.04 ./build.sh -Clang=clan3.8 I also did basic testing on OSX. ./build.sh -h ... [-ProducesTarget] MsBuild target that displays all of the artifacts this repo produces. [-DirectoryToBuild] MsBuild property used to set the directory to scope the build to things under that directory. => Default value: Please-Specify-A-Directory [-Clang] Specific version of Clang to use e.g. clang3.7, clang3.8, etc ... [-RunQuiet] Run tool specific setting. Set to True to only display output from the executing command. => Default value: false => Legal values: [true, false]. this should fix panda20 build problem @geoffkizer " +23303 area-Infrastructure Update CoreClr, CoreFx to servicing-25621-01, servicing-25621-01, respectively (release/2.0.0) +23304 area-Serialization Error running build-tests > CSC : error CS1504: Source file 'd:\dotnet\corefx\Microsoft.XmlSerializer.Generator.Tests.XmlSerializers.cs' could not be opened ('The system cannot find the file specified. ') [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\tests \Microsoft.XmlSerializer.Generator.Tests.csproj] +23305 area-Infrastructure Installation is not compatible with Windows 7 +23306 area-System.Net System.Net.Http redirect errors in VS 15.3.0 "As requested by @karelz a dedicated bug to the issue mistakingly reported in #22781. Story: - Existing .NET 4.6 application, including System.Threading.Tasks.Dataflow 4.7.0 nuget package and System.Net.Http 4.3.2 package, redirects for System.Net.Http are configured - Nuget offers update of Dataflow to V 4.8.0 - After update, redirects for System.Net.Http warn that I should redirect to V 4.2.0 Note: If I don't touch the nuget update at all, no build errors occur Steps to reproduce in a small repro: 1. Create .NET 4.6 project 2. Add reference to Nuget System.Net.Http (V 4.3.2) package 3. Add binding redirect to ```xml ``` 4. Compile (no warnings) 5. According to Project references the Assembly version of System.Net.Http.dll is 4.1.1.1 6. Add reference to one of (there are probably more packages) - System.Threading.Tasks.Dataflow nuget (V4.8.0) - System.Buffers (V4.4.0) 7. Compile Expected result: No warnings Actual result: Consider app.config remapping of assembly ""System.Net.Http, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" from Version ""4.1.1.1"" [c:\users\tornhoof\documents\visual studio 2017\Projects\NetHttpRepro\NetHttpRepro\bin\Debug\System.Net.Http.dll] to Version ""4.2.0.0"" [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Net.Http.dll] to solve conflict and get rid of warning. Workaround: - Do what it suggests and replace the redirect with ```xml ``` I don't know why the build suddenly uses a library from the VS program directory and not from the NuGet packages. Note: Of the packages released on August 11th, not all are affected, e.g. System.Diagnostics.DiagnosticSource V4.4.1 does not show the behaviour. [EDIT] Fixed bullet points formatting to improve readability by @karelz" +23307 area-System.Runtime Test Failure: UnloadingAndProcessExitTests on UAP not firing unloading events "Discovered failing test case in UWP CoreCLR x64 Debug Build (https://mc.dot.net/#/user/nchikanov/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/eea80bba9af50534e761788810fef3c3335cff4f/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.UnloadingAndProcessExitTests~2FUnloadingEventMustHappenBeforeProcessExitEvent) ` Xunit.Sdk.EqualException Windows.10.Amd64.ClientRS2.Open-Debug-x64 Unhandled Exception of Type Xunit.Sdk.EqualException Message : Assert.Equal() Failure\r\n ? (pos 0)\r\nExpected: \r\nActual: u0u1e0e1\r\n ? (pos 0) Stack Trace : at System.Tests.UnloadingAndProcessExitTests.UnloadingEventMustHappenBeforeProcessExitEvent() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Runtime.Extensions\tests\System\UnloadingAndProcessExitTests.netcoreapp.cs:line 34` **This test can be improved to help narrow down a repro:** 1. The Assert is backwards - expected is u0u1e0e1 2. Should dump ""s"" to the file before hooking the events and ""h"" after hooking- that way we could see if the events simply aren't firing. e.g. result should be ""shu0u1e0e1"" That will make it easier to follow up on continued failures" +23308 area-System.Data The type 'SqlDbType' is defined in both System.Data.SqlClient and netstandard 2.0 Noticed this while updating a library which uses Dapper (which is compatible with .NET standard 1.3+) Steps to reproduce: - Create library targeting .NET standard 2.0 - Reference Dapper - Add ``private SqlDbType _Type = SqlDbType.BigInt;`` to class in library Expected result: - No errors Actual result: CS0433 The type 'SqlDbType' exists in both 'System.Data.SqlClient, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' As far as I understand I should be able to reference any .NET standard library with a lower version number from 2.0. In this case Dapper. Dapper uses System.Data.SqlClient, but in 2.0 the SQL types moved into .NET Standard 2.0. I guess the ``System.Data.SqlClient`` nuget package is missing .NET standard 2.0 type forwards. +23310 area-Infrastructure Update CoreClr, CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25616-02, preview1-25619-01, preview1-25618-02, rel-25618-00, rel-25618-00, preview1-25618-01, respectively (release/uwp6.0) +23311 area-System.Security Array bounds error with CryptoStream.Write using DESCryptoServiceProvider "We have a simple text decryption function that uses classes in System.Security.Cryptography that works fine when targeting the full framework but throws an ArgumentException `Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.` on the `CryptoStream.Write` method. Here is the full extent of a console app recreating the error: ```c# using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var textToDecrypt = ""oZYdrxMbPKav5xewuT1PUw==""; // an encrypted form of ""test string 1"" var key = ""Test Encryption Key""; byte[] initializationVector = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }; byte[] byKey = Encoding.UTF8.GetBytes(key.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); inputByteArray = Convert.FromBase64String(textToDecrypt); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, initializationVector), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); // <--- ERROR IS THROWN HERE cs.FlushFinalBlock(); Encoding encoding = Encoding.UTF8; Console.WriteLine(encoding.GetString(ms.ToArray())); // <--- Expected to see ""test string 1"" in the console. } } } ``` The inputByteArray contains 16 elements (0-15), the offset is 0 and the length is 16. Not sure why I would get an index error here. Here is the stack trace from the error: ``` at System.Buffer.BlockCopy(Array src, Int32 srcOffset, Array dst, Int32 dstOffset, Int32 count) at Internal.NativeCrypto.CapiHelper.DecryptData(SafeKeyHandle hKey, Byte[] input, Int32 inputOffset, Int32 inputCount, Byte[] output, Int32 outputOffset, Int32 outputCount) at Internal.Cryptography.BasicSymmetricCipherCsp.Transform(Byte[] input, Int32 inputOffset, Int32 count, Byte[] output, Int32 outputOffset, Boolean isFinal) at Internal.Cryptography.BasicSymmetricCipherCsp.Transform(Byte[] input, Int32 inputOffset, Int32 count, Byte[] output, Int32 outputOffset) at Internal.Cryptography.UniversalCryptoDecryptor.UncheckedTransformBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[] outputBuffer, Int32 outputOffset) at Internal.Cryptography.UniversalCryptoTransform.TransformBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[] outputBuffer, Int32 outputOffset) at System.Security.Cryptography.CryptoStream.d__49.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Security.Cryptography.CryptoStream.Write(Byte[] buffer, Int32 offset, Int32 count) at ConsoleApp1.Program.Main(String[] args) in C:\Users\dslinn\Desktop\ConsoleApp1\ConsoleApp1\Program.cs:line 32 ``` [EDIT] Add C# syntax highlight by @karelz" +23312 area-System.IO Add Stream.CopyToAsync overload without buffer size "## Rationale and Usage Today, `Stream` has three `CopyToAsync` overloads: ```csharp public Task CopyToAsync(Stream destination) public Task CopyToAsync(Stream destination, Int32 bufferSize) public virtual Task CopyToAsync(Stream destination, Int32 bufferSize, CancellationToken cancellationToken) ``` If I want to pass a cancellation token, I'm forced to specify a buffer size: ```csharp // 81920 is the default buffer size... source.CopyToAsync(target, 81920, cancellationToken); ``` One issue with the code above is ""What does 81920 mean?"". For readability, you could also include argument names: ```csharp source.CopyToAsync(target, bufferSize: 81920, cancellationToken: cancellationToken); ``` This leads to some really verbose code, and in the majority of cases, I just want to stick with the default buffer size. With the proposed overload, the above code would end up looking like this: ```csharp source.CopyToAsync(target, cancellationToken); ``` I realize that this could be implemented as an extension method, but since the default buffer size constant is private, you end up having to copy it and future tweaks would not follow. There's also [various optimizations inside `CopyToAsync`](https://github.com/dotnet/coreclr/blob/a6045809b3720833459c9247aeb4aafe281d7841/src/mscorlib/src/System/IO/Stream.cs#L125-L152) that you'd have to reimplement. ## Proposed API ```diff namespace System.IO { public abstract class Stream : MarshalByRefObject, IDisposable { public Task CopyToAsync(Stream destination) public Task CopyToAsync(Stream destination, Int32 bufferSize) + public Task CopyToAsync(Stream destination, CancellationToken cancellationToken) public virtual Task CopyToAsync(Stream destination, Int32 bufferSize, CancellationToken cancellationToken) } } ``` ## Details - The implementation would just call into the (virtual) overload using the default buffer size." +23313 area-System.Net [ManagedHandler] Explore use of .netrc (config for authentication - general/proxy) https://ec.haxx.se/usingcurl-netrc.html it seems like curl can use it but I'm not sure if libcurl would on linux with c# The come up in are of configuring proxy, but there may possibly be more, like authentication details. +23315 area-Infrastructure Disable dumpling Seeing issues installing the dumpling package. This, combined with https://github.com/dotnet/buildtools/pull/1639 can be used to disable dumpling on cloud test runs +23316 area-System.IO Use FromApp APIs to allow brokered file access This changes our P/Invokes to use the FromApp variants, which allow for brokered file access on UAP. These are only included in the UAP build. Adds tests for the brokered IO WinRT functions and removes a dead option from movefile. This option was removed in Windows 8 and did not work correctly in prior OSes. (This was needed for this change.) This change depends on the referenced dll being packaged and added to our dependencies. There is a related change for CoreCLR that supports FileStream. Note: I broke out the struct defines and put all of the new P/Invokes in a single file. I want to keep them together and in the FileSystem dir to help keep them from creeping out and allow for easy disabling if required. There is one known issue at this point with setting of attributes in brokered locations. Everything else is to the point where it looks like our code is correct. +23317 area-System.Collections [Question] System.Collections.Immutable.ImmutableDictionary reorders "This is probably by design to help with the immutable types, but why does an ImmutableDictionary reorder keys after adding? For example compared to regular Dictionary: ```c# ImmutableDictionary.Builder isdBuilder = ImmutableDictionary.CreateBuilder(); isdBuilder.Add(""one"", false); isdBuilder.Add(""two"", true); isdBuilder.Add(""three"", false); isdBuilder.Add(""four"", false); ImmutableDictionary isd = isdBuilder.ToImmutableDictionary(); ``` **Not Expected**: The order by keys are ""two"", ""one"", ""three"", ""four"" ```c# Dictionary dic = new Dictionary(); dic.Add(""one"", false); dic.Add(""two"", true); dic.Add(""three"", false); dic.Add(""four"", false); ``` **As Expected**: ""one"", ""two"", ""three"", ""four"" I've tried the ImmutableSortedDictionary and appears to reorder by key. I would like to have it stay in the same order as they are added. Is there a way of making the ImmutableDictionary store KeyValuePairs in a specific order? [EDIT] Add C# syntax highlight by @karelz" +23319 area-System.Net "Test: System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest/SendAsync_SlowServerAndCancel_ThrowsTaskCanceledException failed with ""Xunit.Sdk.IsTypeException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest/SendAsync_SlowServerAndCancel_ThrowsTaskCanceledException` has failed. Assert.IsType() Failure\r Expected: System.Threading.Tasks.TaskCanceledException\r Actual: System.Net.Http.HttpRequestException Stack Trace: at System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : 2.0.0 - 20170816.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170816.01/workItem/System.Net.Http.WinHttpHandler.Functional.Tests/analysis/xunit/System.Net.Http.WinHttpHandlerFunctional.Tests.WinHttpHandlerTest~2FSendAsync_SlowServerAndCancel_ThrowsTaskCanceledException +23320 area-Meta HTTP Error 502.5 - Process Failure ASP.Net Core2 after update to Microsoft.EntityFrameworkCore -Version 2.0.0 #7462 ## Steps to reproduce [ARTSQLCORE.zip](https://github.com/dotnet/corefx/files/1230002/ARTSQLCORE.zip) ``` `dotnet --info` output: ARTNetCore> It was not possible to find any compatible framework version ARTNetCore> ARTNetCore> The specified framework 'Microsoft.NETCore.App', version '2.0.0' was not found. ARTNetCore> ARTNetCore> - Check application dependencies and target a framework version installed at: ARTNetCore> ARTNetCore> \ ARTNetCore> ARTNetCore> - Alternatively, install the framework version '2.0.0'. ARTNetCore> ARTNetCore> It was not possible to find any compatible framework version ARTNetCore> ARTNetCore> The specified framework 'Microsoft.NETCore.App', version '2.0.0' was not found. ARTNetCore> ARTNetCore> - Check application dependencies and target a framework version installed at: ARTNetCore> ARTNetCore> \ ARTNetCore> ARTNetCore> - Alternatively, install the framework version '2.0.0'. ARTNetCore> ARTNetCore> It was not possible to find any compatible framework version ARTNetCore> ARTNetCore> The specified framework 'Microsoft.NETCore.App', version '2.0.0' was not found. ARTNetCore> ARTNetCore> - Check application dependencies and target a framework version installed at: ARTNetCore> ARTNetCore> \ ARTNetCore> ARTNetCore> - Alternatively, install the framework version '2.0.0'. ARTNetCore> ARTNetCore> It was not possible to find any compatible framework version ARTNetCore> ARTNetCore> The specified framework 'Microsoft.NETCore.App', version '2.0.0' was not found. ARTNetCore> ARTNetCore> - Check application dependencies and target a framework version installed at: ARTNetCore> ARTNetCore> \ ARTNetCore> ARTNetCore> - Alternatively, install the framework version '2.0.0'. ``` I installed `Microsoft.NETCore.App -Version 2.0.0` yet when I run the app I get this msg, > HTTP Error 502.5 - Process Failure > > > Common causes of this issue: > > The application process failed to start > The application process started but then stopped > The application process started but failed to listen on the configured port > > Troubleshooting steps: > > Check the system event log for error messages > Enable logging the application process' stdout messages > Attach a debugger to the application process and inspect +23325 area-System.Net HttpListener: Use Encoding.Preamble Use the new `Encoding.Preamble` property to avoid unnecessary `byte[]` allocations for encodings that return cached instances from `Preamble` (e.g. all of the built-in encodings that have preambles). I debated whether to even submit this PR as the encoding used is `Encoding.Default` (line 277), which in .NET Core is always going to be UTF8 without a preamble. Since the code for handling a potential preamble is present here, I decided to go ahead and make the change to avoid the potential `byte[]` allocation if the encoding is ever changed to one that has a preamble. Reference: https://github.com/dotnet/coreclr/pull/13269 cc: @davidsh, @CIPop, @Priya91, @stephentoub +23327 area-System.Net "Test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest/AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection failed with ""System.IO.IOException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest/AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection(statusCode: 300, oldMethod: \""HEAD\"", newMethod: \""HEAD\"")` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.IO.IOException : The server returned an invalid or unrecognized response. Stack Trace: at System.Net.Http.HttpConnection.d__36.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.CookieHandler.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.AutoRedirectHandler.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass46_1.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__46.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.Http.HttpConnection.<>c.b__62_0(Task`1 completed, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.d__60.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() at System.Net.Http.HttpConnection.d__36.MoveNext() Build : Master - 20170817.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170817.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest~2FAllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection(statusCode:%20300,%20oldMethod:%20%5C%22HEAD%5C%22,%20newMethod:%20%5C%22HEAD%5C%22)" +23328 area-System.Collections "Test: System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Collections.Tests.CaseInsensitiveHashCodeProviderTests.Default_Compare_TurkishI() in E:\A\_work\394\s\corefx\src\System.Collections.NonGeneric\tests\CaseInsensitiveHashCodeProviderTests.cs:line 190 Build : Master - 20170817.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170817.01/workItem/System.Collections.NonGeneric.Tests/analysis/xunit/System.Collections.Tests.CaseInsensitiveHashCodeProviderTests~2FDefault_Compare_TurkishI +23329 area-System.Net avoid async overhead in ReadNextLineAsync Updated version of #23210 @stephentoub I'm blocked on getting perf data here for now, but I expect it to be similar to the previous PR. +23331 area-Infrastructure Cannot reference Foo(HttpResponseMessage) implemented in .NET Standard 2.0 library from .NET Framework 4.7 unit test library Create a .NET Standard 2.0 library with the following code: ```cs public static class Class1 { public static void Foo(HttpResponseMessage response) { } } ``` Then create a .NET Framework 4.7 unit test library with the following code: ```cs [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Class1.Foo(new HttpResponseMessage(System.Net.HttpStatusCode.OK)); } } ``` Expected result: test passes. Actual result: `Message: Test method UnitTestProject2.UnitTest1.TestMethod1 threw exception: System.MissingMethodException: Method not found: 'Void ClassLibrary1.Class1.Foo(System.Net.Http.HttpResponseMessage)'.` +23332 area-System.Net SslStream AuthenticateAsClientAsync throws when running under netcoreapp2.0 I have an app that I've been porting from net461 to netcoreapp2.0 over the last few days and I've come across a problem when using SslStream. If I run the ported application as netcoreapp2.0 I get the following exception when running on Windows 7 x64 A call to SSPI failed, see inner exception. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state) at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost) Inner exception details System.Security.Authentication.AuthenticationException occurred HResult=0x80131501 Message=A call to SSPI failed, see inner exception. Source= StackTrace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Inner Exception 1: Win32Exception: The function requested is not supported If I then run the same app on an linux-arm board I get the following exception Unable to transfer data on the transport connection: Connection reset by peer. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() If I run the app on Windows 7 as net461 it all works as excepted. On my Windows 7 machine I have OpenSSL installed and on path. It's version 1.0.2h On the Linux board I have version 1.0.2d In summary if I run the code as netcoreapp2.0 on linux-arm or Windows 7 I get an exception, if I run the same code but as net461 on Windows 7 everything works fine. I'm using the official release of the tooling from dot.net +23333 area-System.Net Managed Handler: add some basic protocol tests for status line handling @stephentoub @Priya91 @wfurt +23334 area-Serialization Warnings on compiling Microsoft.XmlSerializer.Generator.Tests.csproj On compiling the project directly, several CS0219 warnings. On compiling from `build-tests`: ``` CSC : warning CS1691: 'false' is not a valid warning number [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\tes ts\Microsoft.XmlSerializer.Generator.Tests.csproj] CSC : warning CS1691: 'true' is not a valid warning number [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\test s\Microsoft.XmlSerializer.Generator.Tests.csproj] +23335 area-Serialization WarningsAsErrors and DisabledWarnings are not boolean. Remove `WarningsAsErrors` and set `DisabledWarnings` to `219` as that warning is given in several places. Fixes #23334 +23336 area-Meta Unable to resolve service for type 'Core.Data.CoreContext' while attempting to activate 'Core.Data.Repositories.UnitOfWork' I have part of WebAPI application that I want to move to separate project as class library. It is common base structure that almost every app has so idea is to make it easy shareable. What I have done in that direction is created a project named Core and moved those shared elements there, including Base Entities (e.g. User, Settings, etc), CoreContext, UnitOfWork, Generic Repository, BaseRepositories,... In the Main project of app there are others Entities, AppContext that inherits CoreContext, more Repositories, and all Controllers, ... I was able to build the app but when after starting it get the following error: > InvalidOperationException: Unable to resolve service for type 'Core.Data.CoreContext' while attempting to activate 'Core.Data.Repositories.UnitOfWork'. >Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, ISet callSiteChain, ParameterInfo[] parameters, bool throwIfCallSiteNotFound)... Problem seems to be that `UnitOfWork` class is in Core project and in Main project is `Startup.cs` with method` ConfigureServices` that has `services.AddTransient();`. Is this a bug or am I just not configuring it correctly and how could it be achieved, if possible at all. ### Further technical details NetCore & EF Core version: 2.0 Database Provider: Microsoft.EntityFrameworkCore.SqlServer IDE: Visual Studio 2017 15.3 Operating system: Windows 10 +23337 area-Infrastructure Update CoreClr, CoreFx, ProjectNTfs, ProjectNTfsTestILC, Standard to preview2-25618-04, preview2-25618-02, beta-25618-00, beta-25618-00, preview1-25618-01, respectively (master) +23338 area-System.Runtime Expose/test span-based Version methods Depends on https://github.com/dotnet/coreclr/pull/13424 Fixes dotnet/corefx#22376 cc: @AlexGhiondea, @joperezr +23340 area-System.Security RSACrpytoServiceProvider throws exception when decrypting fOAEP padded data https://github.com/dotnet/corefx/blob/2d7ee255d3cdb1b13072176d4881e1b58453358b/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography/RSACryptoServiceProvider.Windows.cs#L269 This check throws an exception if the data is fOAEP padded, even if the real data is smaller than the key! +23341 area-System.Net Test failure: System.Net.Security crashed with System.ComponentModel.Win32Exception (0x80004005): The credentials supplied to the package were not recognized "Like https://github.com/dotnet/corefx/issues/19345 but the whole test library failed. ``` 2017-08-17 15:30:05,270: INFO: proc(54): run_and_log_output: Output: Copyright (C) 2014 Outercurve Foundation. 2017-08-17 15:30:05,270: INFO: proc(54): run_and_log_output: Output: 2017-08-17 15:30:05,520: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Security.Tests 2017-08-17 15:30:06,193: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Security.Tests 2017-08-17 15:30:06,286: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Security.Tests 2017-08-17 15:30:06,661: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.SslStreamEKUTest.SslStream_NoEKUServerAuth_Ok [SKIP] 2017-08-17 15:30:06,661: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsRootCertificateInstalled\"" 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.SslStreamEKUTest.SslStream_SelfSignedClientEKUClientAuth_Ok [SKIP] 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsRootCertificateInstalled\"" 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.SslStreamEKUTest.SslStream_NoEKUClientAuth_Ok [SKIP] 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsRootCertificateInstalled\"" 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.SslStreamEKUTest.SslStream_ServerEKUClientAuth_Fails [SKIP] 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsRootCertificateInstalled\"" 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: System.Net.Security.Tests.SslStreamEKUTest.SslStream_ClientEKUServerAuth_Fails [SKIP] 2017-08-17 15:30:06,677: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsRootCertificateInstalled\"" 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: FailFast: AcquireCredentialsHandle failed. 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: System.ComponentModel.Win32Exception (0x80004005): The credentials supplied to the package were not recognized 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.<>c__DisplayClass20_0.b__0() 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Security.Principal.WindowsIdentity.<>c__DisplayClass57_0`1.b__0() 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Security.Principal.WindowsIdentity.<>c__DisplayClass61_0.b__0(Object ) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Security.Principal.WindowsIdentity.RunImpersonatedInternal(SafeAccessTokenHandle token, Action action) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Security.Principal.WindowsIdentity.RunImpersonated[T](SafeAccessTokenHandle safeAccessTokenHandle, Func`1 func) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 2017-08-17 15:30:19,318: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.FixedSizeReader.d__1.MoveNext() 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(Action action, Boolean allowInlining, Task& currentTask) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1.TrySetResult(TResult result) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(TResult result) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(TResult result) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.CompleteSendReceive(Socket s, Int32TaskSocketAsyncEventArgs saea, Boolean isReceive) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.<>c.<.cctor>b__325_1(Object s, SocketAsyncEventArgs e) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object state) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncSuccess(Int32 bytesTransferred, SocketFlags flags) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__202_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Environment.FailFast(System.String, System.Exception) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse, SCHANNEL_CRED) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(System.Security.Cryptography.X509Certificates.X509Certificate, System.Security.Authentication.SslProtocols, System.Net.Security.EncryptionPolicy, Boolean) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[] ByRef) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.GenerateToken(Byte[], Int32, Int32, Byte[] ByRef) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.NextMessage(Byte[], Int32, Int32) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.StartSendBlob(Byte[], Int32, System.Net.AsyncProtocolRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.ProcessReceivedBlob(Byte[], Int32, System.Net.AsyncProtocolRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.StartReadFrame(Byte[], Int32, System.Net.AsyncProtocolRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PartialFrameCallback(System.Net.AsyncProtocolRequest) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.AsyncProtocolRequest.CompleteRequest(Int32) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.FixedSizeReader+d__1.MoveNext() 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.RunContinuations(System.Object) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TrySetResult(Int32) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(Int32) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetResult(Int32) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket.CompleteSendReceive(System.Net.Sockets.Socket, Int32TaskSocketAsyncEventArgs, Boolean) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.Socket+<>c.<.cctor>b__325_1(System.Object, System.Net.Sockets.SocketAsyncEventArgs) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(System.Object) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncSuccess(Int32, System.Net.Sockets.SocketFlags) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Net.Sockets.SocketAsyncEventArgs+<>c.<.cctor>b__202_0(UInt32, UInt32, System.Threading.NativeOverlapped*) 2017-08-17 15:30:19,334: INFO: proc(54): run_and_log_output: Output: at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) 2017-08-17 15:30:25,006: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=15:30:25.00, Exit code = -2146232797 2017-08-17 15:30:25,020: INFO: proc(58): run_and_log_output: Exit Code: -2146232797 2017-08-17 15:30:25,020: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created ``` https://mc.dot.net/#/user/justinvp/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/563aab7e14f70a99f38ff6ad48a72f2bb148ae40/workItem/System.Net.Security.Tests/wilogs" +23342 area-System.IO Capture PR feedback issues from UWP6.0 port. Fixes #23273 +23343 area-System.Xml XslCompiledTransform BadImageFormatException - Bad Method Token @ThuCommix commented on [Wed Aug 16 2017](https://github.com/dotnet/core/issues/845) # XslCompiledTransform BadImageFormatException When using XslCompiledTransform.Transform the framework throws a BadImageFormatException - Bad Method Token. It works fine with the full framework. # General I'm using the newest dot net core sdk available in combination with Visual Studio 2017.3 and Windows10. Steps to reproduce: 1. Adjust the directories in the attached project to point to the xsl and xml which are also in the zip. 2. Debug to transform.Transform -> Exception at System.Xml.Xsl.CompiledQuery.Query.{urn:schemas-microsoft-com:xslt-debug}init(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) at System.Xml.Xsl.CompiledQuery.Query.Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results) at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer) at System.Xml.Xsl.XslCompiledTransform.Transform(XmlReader input, XsltArgumentList arguments, Stream results) [Sample Project.zip](https://github.com/dotnet/core/files/1228103/Sample.Project.zip) --- @leecow commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/845#issuecomment-323117120) Moving issue to corefx repo +23345 area-System.Net Override Read/Write(span) on System.Net.Http streams These streams are all in the common portion of the build that's also compiled for netfx. We're going to be deleting that build of it, so rather than separating these out into separate partial files, I just followed the current convention in the project of using #if !NET46. cc: @davidsh, @geoffkizer +23347 area-Serialization Area-Serialization Sprint 123 The issue is for tracking issues to be done in sprint 123 (due by 9/8/2017) +23348 area-Serialization Improve Sgen package for better customer experience By adding more targets in the package, the app will to auto generate and compile the xmlserializer when download the nuget package. Fix the product issue so it won't generate an empty serializer code file. Fix #19426 #22936 @22935 #22934 #22932 @shmao @zhenlan @mconnew +23351 area-Serialization Verify Sgen End to End on Linux and Mac +23352 area-System.Data [System.Data] fix #22879 (SqlConnection doesn't support empty values) the PR fixes https://github.com/dotnet/corefx/issues/22879 + a small test. +23353 area-Serialization Set Sgen Package Version for Preview +23354 area-Serialization Check Public APIs Exposed by Sgen +23355 area-Infrastructure Mark UWP6.0 packages as stable Tracking issue for marking UWP6.0 as stable +23357 area-System.Data Removed SNIMarsManager, and modified TdsParserStateObjectManaged so that it manages its own SNIMarsConnection if MARS is enabled. This prevents SNIMarsConnections from accumulating forever in a static SNIMarsManager singleton. (#22709) Porting change to release/2.0.0. Shiproom approval pending. +23358 area-System.IO Override new Span/Buffer-based APIs on SerialStream +23360 area-Infrastructure unable to pass in build parameters with spaces to Linux build scripts "This is clone from #23302 @geoffkizer wrote: msbuild.sh /t:RebuildAndTest /p:XunitOptions=""-showprogress -parallel none"" I had similar problem see #1505 but it broke CI build as it did uncovered some other problems. This is probably trivial change but has high risk for existing building infrastructure and needs to be tested there. /cc @weshaggard @MattGal " +23361 area-System.Runtime Expose/test Encoder/Decoder span-based APIs Depends on https://github.com/dotnet/coreclr/pull/13409 being consumed into corefx. Fixes https://github.com/dotnet/corefx/issues/23057 cc: @tarekgh +23362 area-System.Net HttpClient don't send SSL server_name extension "Hi, The aim is to test a web farm. DNS is configured with one IP (behind there are several servers) and redirect to one web server. To test one server in web farm, in framework 4.6.2, I use with sample code: ```C# string host = ""www.ebay.fr""; IPHostEntry hostEntry; hostEntry = Dns.GetHostEntry(host); ///// HttpClient Test HttpClientHandler httpClientHandler = new HttpClientHandler(); HttpClient client = new HttpClient(httpClientHandler); client.BaseAddress = new Uri(""https://"" + hostEntry.AddressList[0].ToString()); client.DefaultRequestHeaders.UserAgent.ParseAdd(""Mozilla/5.0 (compatible;"" + DateTime.Now + "" "" + DateTime.Now.Millisecond + "")""); client.DefaultRequestHeaders.Host = host; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, client.BaseAddress); request.Headers.Host = host; request.Headers.UserAgent.ParseAdd(""Mozilla/5.0 (compatible;"" + DateTime.Now + "" "" + DateTime.Now.Millisecond + "")""); Task task = client.SendAsync(request); task.Wait(); HttpResponseMessage respones = task.Result; ``` With framework 4.6.2, it is work fine. **But in .net core 2**, with a test on IIS server web server, the connexion close when web client try to negociate SSL. Here I use ""ebay"" server but it is work on it. I don't found a IIS server on web. My web farm is not access from web. I debug the connection with WireShark to see the network data: **With .net core2** ![image](https://user-images.githubusercontent.com/20461115/29434016-b34561e2-83a1-11e7-81f8-2f2af5786660.png) **With Framework 4.6.2** ![image](https://user-images.githubusercontent.com/20461115/29434003-aa4457ba-83a1-11e7-9d9c-04dd54f65982.png) 📌 I think the issue is with .net core, **the extension server_name is not defined**. IIS server should need known the certificat to take. .net core 2 should define server_name from client.DefaultRequestHeaders.Host or request.Headers.Host (even if BaseAddress is an IP) ? **For more information:** [https://idea.popcount.org/2012-06-16-dissecting-ssl-handshake/](url) > TLS introduces a number of extensions. Most notably the server_name / Server Name Indication (SNI) extension is used to specify a remote host name. This allows the server to choose appropriate certificate based on the requested host name. With this extension one can host many SSL-enabled vhosts on a single IP address. " +23363 area-System.Net Test failure: System.Net.WebSockets.Client.Tests.CancelTest/CloseAsync_Cancel_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx) Opened on behalf of @safern The test `System.Net.WebSockets.Client.Tests.CancelTest/CloseAsync_Cancel_Success(server: ws://corefx-net.cloudapp.net/WebSocket/EchoWebSocket.ashx)` has failed. Assert.Equal() Failure\r Expected: Aborted\r Actual: Open Stack Trace: at System.Net.WebSockets.Client.Tests.ClientWebSocketTestBase.d__8.MoveNext$catch$0() in E:\A\_work\853\s\corefx\src\System.Net.WebSockets.Client\tests\ClientWebSocketTestBase.cs:line 66 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Net.WebSockets.Client.Tests.CancelTest.d__4.MoveNext() in E:\A\_work\853\s\corefx\src\System.Net.WebSockets.Client\tests\CancelTest.cs:line 80 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : UWP 6.0 - 20170816.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release +23364 area-System.Net Test failure: System.Net.Sockets.Tests.SendReceiveTask/SendRecv_Stream_TCP_AlternateBufferAndBufferList(listenAt: 127.0.0.1) Opened on behalf of @safern The test `System.Net.Sockets.Tests.SendReceiveTask/SendRecv_Stream_TCP_AlternateBufferAndBufferList(listenAt: 127.0.0.1)` has failed. System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter$1.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Sockets.Tests.SendReceive.d__22.MoveNext() in E:\A\_work\881\s\corefx\src\System.Net.Sockets\tests\FunctionalTests\SendReceive.cs:line 379 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 Build : UWP 6.0 - 20170816.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release +23365 area-System.Threading Delete bad test from AsyncValueTaskMethodBuilderTests. Port #23356 to release/uwp6.0 @safern +23366 area-Serialization Fix the sgen issue when use NaN as the default value. Fix the sgen issue when use NaN as the default value. Move the NaN test from XmlSerializerTest .runtimeonly to XmlSerializerTest so it will be included in Sgen test run. Fix #19724 @shmao @zhenlan @mconnew +23367 area-Infrastructure Script to retry a given command Introducing a script that will retry a given command. Script will retry the command until the command runs successfully or the specified number of retries are exhausted. This script will be useful in a build step that involves network operations such as `git clone`, which might run into intermittent issues. Refer https://github.com/dotnet/core-eng/issues/1438 Plan is to commit directly to servicing branches. Same script will also be made available in newer versions of BuildTools (tracked through https://github.com/dotnet/buildtools/issues/1640) so that all `master` or any future branches can upgrade to. +23368 area-System.Linq Linq.SequenceEqual: Improved performance for collections that support index based access This change avoids the Enumerator instantiations inside the SequenceEqual method for anything that implements IReadOnlyList. We get two more type casts in this situation but the comparison loop should be faster (plus lower memory footprint). +23369 area-Meta Fix TZ test on OSX High Sierra Fixes #21433 +23370 area-Infrastructure Update package/assembly versions for assemblies to be serviced 1.0 Builds on #23274. +23371 area-Microsoft.CSharp Remove code in Microsoft.CSharp for casting from method groups. As a method group cannot be cast to object, the casting from method group to delegate that can be done in static code is not relevant, and code related to such casts is never reached. Remove it. Includes removal of `ExprFuncPtr`, and `ERR_MethGrpToNonDel`, `ERR_BadRetType`, `ERR_DelegateOnNullable` & `ERR_BadDelegateConstructor`, contributes to #22470 +23372 area-System.Reflection MetadataReader API for getting content of embedded resources The metadata reader does not currently provide an easy way to get at the content of an embedded resource. # First draft API proposal ``` C# namespace System.Reflection.Metadata { public static class PEReaderExtensions // existing class { // new API Stream GetEmbeddedResourceStream(this PEReader peReader, ManifestResource resource); } } ``` # Sample implementation https://gist.github.com/nguerrera/6864d2a907cb07d869be5a2afed8d764 * DISCLAIMER: I wrote that a long time ago against pre-release API and did not re-test after simply fixing compilation errors. * Update: @safern got it working for him after one fix he sent me that I've applied to the gist. * InvalidDataException should be BadImageFormatException as should any arithmetic overflow caused by bad data. * We can make the code safer by using BlobReader for more than just the length. It was written before there was `PEMemoryBlock.GetReader()` and the use of BlobReader used to be direct pointer indirection, and I just changed it locally to fix an endianness bug (at the time S.R.M threw on big endian). # See also https://github.com/Microsoft/msbuild/pull/2254#discussion_r129891209 # Open questions #* Is `Stream` the right return type? That is what msbuild asked for and was also most convenient for me when I wrote that code a while ago. Should we have other overloads, PEMemoryBlock, ImmutableArray, byte[], BlobReader? We have a mix for other similar things and don't directly provide Streams. Maybe we just need ToStream() helper on PEMemoryBlock or BlobReader instead? cc @rainersigwald @ericstj @tmat +23373 area-Serialization Microsoft.XmlSerializer.Generator Preview Track the issues that need be solved by SGEN preview release +23374 area-Serialization Sgen test on Linux, OSX Sgen automation fail on Linux. Need try the customer scenario on the Linux and unblock the automation run on Linux and osx. +23375 area-Serialization Add help method in SGEN "The help method just shows ""in development"". Need fill the right content." +23376 area-Serialization Review the output message in SGEN Need review the output message in SGEN since lots of text just copied from desktop version. +23377 area-Meta Enterprise Library ,Unity and AntiXss support net core? AntiXss patterns & practices–Enterprise Library patterns & practices -Unity +23378 area-System.Data Bump SqlClient assembly & package versions for 2.0.0 servicing. Forgot to do SqlClient packaging changes for: https://github.com/dotnet/corefx/pull/23357 CC @weshaggard @ericstj +23379 area-Meta Razor Pages support ASP.Net server controls or have server controls? Razor Pages support ASP.Net server controls or have server controls? +23381 area-System.Console Bright console colors don't work correctly on Linux "Given the following C# code: ```csharp using System; using System.Linq; namespace colors { class Program { static void Main(string[] args) { Console.WriteLine(); var colors = Enum.GetValues(typeof(ConsoleColor)).Cast().ToList(); foreach (var fore in colors) { foreach (var back in colors) { Console.ForegroundColor = fore; Console.BackgroundColor = back; Console.Write("" *** ""); Console.ResetColor(); Console.Write("" ""); } Console.WriteLine(); } Console.WriteLine(); } } } ``` When run on Windows 10, it correctly prints out with bright foreground and background colors: ![Windows 10](https://user-images.githubusercontent.com/16944/29439952-20705a3c-8376-11e7-91ad-d0c16f76d7de.png) When run on Linux (in my example, Ubuntu Server 16.04), bright colors are shown dark: ![Ubuntu 16.04](https://user-images.githubusercontent.com/16944/29439966-32b45b12-8376-11e7-9d8a-6c37fc384ce1.png) I verified this with bug .NET Core 1.x and 2.0. The reason this came up is because I noticed that the color output from `dotnet xunit` was broken, as we rely on bright colors when writing our output. I have a temporary workaround in place which emits the correct ANSI codes when running on non-Windows machines. Here you can see the difference between the Windows and Linux outputs: ![dotnet xunit on Windows](https://user-images.githubusercontent.com/16944/29440113-15badfbc-8377-11e7-9ab6-03727d207e20.png) ![dotnet xunit on Ubuntu 16.04](https://user-images.githubusercontent.com/16944/29440114-17baaa5e-8377-11e7-9d4f-165e102fc605.png) ----- As an interesting postscript, the bug does not seem to affect Windows Subsystem for Linux: ![Windows Subsystem for Linux](https://user-images.githubusercontent.com/16944/29439988-5f954056-8376-11e7-9055-746886e91652.png) So when verifying this bug, it's important to use a real Linux installation (I used VMs in Hyper-V for my testing). /tag @karelz @terrajobst " +23382 area-Meta Do you support System.Web.UI.WebControls? System.Web.UI System.Web.UI.Adapters System.Web.UI.HtmlControls System.Web.UI.WebControls.Adapters System.Web.UI.WebControls.WebParts System.Web.UI.WebControls; +23385 area-System.Collections API Proposal: Set-like operations over dictionaries "### Rationale and Usage I've noticed, that quite often developers run into a case, when there's a need to perform Set-specific operations over dictionaries. Examples of such can be found in languages like [Elm's Dict module](http://package.elm-lang.org/packages/elm-lang/core/latest/Dict#combine), but there are also multiple questions about it on the C# tags of StackOverflow, pointing that this is a desired feature. Example: ```csharp var left = ImmutabeDictionary.CreateRange(new Dictionary { { ""a"", 1 }, { ""b"", 2 } }); var right = ImmutabeDictionary.CreateRange(new Dictionary { { ""b"", -1 }, { ""c"", 7 } }); var merged = left.Merge(right, (key, leftValue, rightValue) => leftValue + rightValue); // => { (""a"", 1), (""b"", 1), (""c"", 7) } var intersected = left.Intersect(right, (key, leftValue, rightValue) => leftValue + rightValue); // => { (""b"", 1) } var diff = left.Except(right); // => { (""a"", 1) } ``` ### Proposed API ```csharp interface IImmutableDictionary where TKey: IComparable { IImmutableDictionary Intersect(IImmutableDictionary other, Func onEqual); IImmutableDictionary Except(IImmutableDictionary other); IImmutableDictionary Merge(IImmutableDictionary other, Func onEqual); IImmutableDictionary Merge(IImmutableDictionary other, Func onEqual, Func onLeft, Func onRight); } ``` ### Details - `Intersect` and `Except` methods would work just like their equivalents in `IImmutableSet<>` API (distinct elements are recognized by key). In case of intersection, we need a method to resolve conflict between two different values in each dictionary (given the same key). - `Merge` method works like set union, but as we need to recognize distinct elements by key, we need to resolve conflicting values. This is the place for `onEqual` parameter. It takes a function, which for the given `key` and its values in current and merged dictionaries, will produce an output value. - Second `Merge` overload additionally allows to supply extra parameters which may be used to map key/value pair to output value in case, when a unique dictionary entry was found on either left or right side of the operation. This would allow to construct dictionaries from scratch using any arbitrary logic, just like in case of `ToImmutableDictionary` method. - It may be possible, that the `other` dictionary could be generalized even further into a `IEnumerable>`. - Potentially, the similar set of methods could be also applied to mutable `IDictionary<,>` interface (see `Intersect` and `Except` methods on `ISet<>` interface for reference)." +23386 area-System.Collections "Tests under: System.Collections.Generic.Tests.EqualityComparerTests/NullableEquals failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Collections.Generic.Tests.EqualityComparerTests/NullableEquals(left: 0, right: 128, expected: False)` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Nullable$1.get_HasValue() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Nullable.cs:line 31 at System.Collections.Generic.NullableEqualityComparer$1.Equals(Nullable$1<__UniversalCanon> x, Nullable$1<__UniversalCanon> y) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\Internal\IntrinsicSupport\EqualityComparerHelpers.cs:line 220 at Internal.Runtime.Augments.RuntimeAugments.CallDescrWorker(IntPtr callDescr) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\Internal\Runtime\Augments\RuntimeAugments.cs:line 949 at Internal.Runtime.TypeLoader.CallConverterThunk.InvokeTarget(Void* allocatedStackBuffer, $CallConversionParameters conversionParams) in InvokeTarget:line 16707566 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBufferInternal(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionInterpreterLocals context, ConservativelyReportedRegionDesc regionDesc) in RunFunctionWithConservativelyReportedBufferInternal:line 15732480 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBuffer(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionParameters context) in RunFunctionWithConservativelyReportedBuffer:line 16707566 at Internal.Runtime.TypeLoader.CallConverterThunk.CallConversionThunk(IntPtr callerTransitionBlockParam, IntPtr callConversionId) in CallConversionThunk:line 16707566 at Internal.Runtime.Augments.RuntimeAugments.CallDescrWorker(IntPtr callDescr) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\Internal\Runtime\Augments\RuntimeAugments.cs:line 949 at Internal.Runtime.TypeLoader.CallConverterThunk.InvokeTarget(Void* allocatedStackBuffer, $CallConversionParameters conversionParams) in InvokeTarget:line 16707566 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBufferInternal(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionInterpreterLocals context, ConservativelyReportedRegionDesc regionDesc) in RunFunctionWithConservativelyReportedBufferInternal:line 15732480 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBuffer(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionParameters context) in RunFunctionWithConservativelyReportedBuffer:line 16707566 at Internal.Runtime.TypeLoader.CallConverterThunk.CallConversionThunk(IntPtr callerTransitionBlockParam, IntPtr callConversionId) in CallConversionThunk:line 16707566 at System.Collections.Generic.Tests.EqualityComparerTests.NullableEquals(__UniversalCanon left, __UniversalCanon right, Boolean expected) in E:\A\_work\1104\s\corefx\src\System.Collections\tests\Generic\Comparers\EqualityComparer.Tests.cs:line 117 at Internal.Runtime.Augments.RuntimeAugments.CallDescrWorker(IntPtr callDescr) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\Internal\Runtime\Augments\RuntimeAugments.cs:line 949 at Internal.Runtime.TypeLoader.CallConverterThunk.InvokeTarget(Void* allocatedStackBuffer, $CallConversionParameters conversionParams) in InvokeTarget:line 16707566 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBufferInternal(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionInterpreterLocals context, ConservativelyReportedRegionDesc regionDesc) in RunFunctionWithConservativelyReportedBufferInternal:line 15732480 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBuffer(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionParameters context) in RunFunctionWithConservativelyReportedBuffer:line 16707566 at Internal.Runtime.TypeLoader.CallConverterThunk.CallConversionThunk(IntPtr callerTransitionBlockParam, IntPtr callConversionId) in CallConversionThunk:line 16707566 at Internal.Runtime.Augments.RuntimeAugments.CallDescrWorker(IntPtr callDescr) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\Internal\Runtime\Augments\RuntimeAugments.cs:line 949 at Internal.Runtime.TypeLoader.CallConverterThunk.InvokeTarget(Void* allocatedStackBuffer, $CallConversionParameters conversionParams) in InvokeTarget:line 16707566 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBufferInternal(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionInterpreterLocals context, ConservativelyReportedRegionDesc regionDesc) in RunFunctionWithConservativelyReportedBufferInternal:line 15732480 at Internal.Runtime.Augments.RuntimeAugments.RunFunctionWithConservativelyReportedBuffer(Int32 cbBuffer, IntPtr pfnTargetToInvoke, $CallConversionParameters context) in RunFunctionWithConservativelyReportedBuffer:line 16707566 at Internal.Runtime.TypeLoader.CallConverterThunk.CallConversionThunk(IntPtr callerTransitionBlockParam, IntPtr callConversionId) in CallConversionThunk:line 16707566 at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170818.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170818.01/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Generic.Tests.EqualityComparerTests~2FNullableEquals%3CByte%3E(left:%200,%20right:%20128,%20expected:%20False) +23387 area-Microsoft.CSharp Microsoft.CSharp bug when dynamically invoking a property of a F# Record with generic union input "### Short description Microsoft.CSharp bug when dynamically invoking a property (as a function) of a F# Record with generic union input. This used to work in ""classic"" .NET (net45) ### Details While porting [my library](https://github.com/Zaid-Ajaj/Fable.Remoting) from full classic .NET (net45) to .NET Core 2.0 I have come across a weird bug that occurs in Microsoft.CSharp when trying to invoke properties of a F# record dynamically from C# at runtime. I wrote [this static class](https://github.com/Zaid-Ajaj/Fable.Remoting/blob/master/Fable.Remoting.Reflection/FSharpRecord.cs) in C# to do this task and it worked just fine for all kinds of inputs. ```cs using System.Reflection; using Microsoft.CSharp; // etc... public static class FSharpRecord { static B Pipe(this A x, Func f) => f(x); public static dynamic Invoke(string methodName, object implementation, object arg, bool hasArg) { return implementation .GetType() .GetProperty(methodName) .GetValue(implementation, null) .Pipe((dynamic fsFunc) => hasArg ? fsFunc.Invoke((dynamic)arg) : fsFunc.Invoke(null)); } } ``` This class works very well with F# records and I have tested it before with net45 but the tests fail when the input is a generic union type from F# such as: ```fs type Maybe<'t> = | Just 't | Nothing ``` Here is my test suite from [this file](https://github.com/Zaid-Ajaj/Fable.Remoting/blob/master/Fable.Remoting.Server.Tests/ServerDynamicInvokeTests.fs#L18): Given the record type: ```fs type TestRec = { simpleMethod : string -> int listsMethod : int list -> int genericUnion: Maybe -> int } ``` And these tests (written with Expecto) ```fs let fsharpRecordTests = let invoke (methodName: string) (record: obj) (input: obj) (hasArg: bool) = FSharpRecord.Invoke(methodName, record, input, hasArg) let testRec = { genericUnion = function Just x -> x | _ -> 0 simpleMethod = fun input -> input.Length listsMethod = fun xs -> Seq.sum xs } testList ""FSharpRecord tests"" [ testCase ""Invoking listsMethod"" <| fun () -> let input = [1 .. 10] let output = invoke ""listsMethod"" testRec (box input) true equal 55 (unbox output) testCase ""Invoking simpleMethod"" <| fun () -> let input = ""hello"" let output = invoke ""simpleMethod"" testRec (box input) true equal 5 (unbox output) testCase ""Invkoing genericUnion on record dynamically works"" <| fun () -> let input = Just 5 let output = invoke ""genericUnion"" testRec (box input) true equal 5 (unbox output) ] ``` The test cases ""Invoking simpleMethod"" and ""Invoking listsMethod"" do pass but the last test case with the generic union input fails, here is the test log: ``` cmd /C dotnet Fable.Remoting.Server.Tests\bin\MCD\Release\netcoreapp2.\Fable.Remoting.Server.Tests.dll [08:02:18 INF] EXPECTO? Running tests... [08:02:18 DBG] FSharpRecord tests/Invoking listsMethod starting... [08:02:19 DBG] FSharpRecord tests/Invoking listsMethod passed in 00:00:00.6730000. [08:02:19 DBG] FSharpRecord tests/Invoking simpleMethod starting... [08:02:19 DBG] FSharpRecord tests/Invoking simpleMethod passed in 00:00:00.0100000. [08:02:19 DBG] FSharpRecord tests/Invkoing genericUnion on record dynamically works starting... [08:02:19 ERR] FSharpRecord tests/Invkoing genericUnion on record dynamically works errored in 00:00:00.0190000 System.ArgumentOutOfRangeException: Length cannot be less than zero. Parameter name: length at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameManager.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetName(Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.GetArgumentType(ICSharpBinder p, CSharpArgumentInfo argInfo, Expression param, DynamicMetaObject arg, Int32 index) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.CreateArgumentArray(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) at System.Dynamic.InvokeMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) at ServerDynamicInvokeTests.fsharpRecordTests@40-2.Invoke(Unit unitVar0) in C:\Projects\Fable.Remoting\Fable.Remoting.Server.Tests\ServerDynamicInvokeTests.fs:line 41 at Expecto.Impl.execTestAsync@859-1.Invoke(Unit unitVar) at Microsoft.FSharp.Control.AsyncBuilderImpl.callA@839.Invoke(AsyncParams`1 args) [08:02:20 INF] EXPECTO! 3 tests run in 00:00:01.5915904 - 2 passed, 0 ignored, 0 failed, 1 errored. ``` ### To reproduce the issue ``` git clone https://github.com/Zaid-Ajaj/Fable.Remoting.git RemotingRepo cd RemotingRepo .paket/paket.exe install # if windows build RestoreBuildRunServerTests # if linux packages/FAKE/tools/Fake.exe build.fsx RestoreBuildRunServerTests ```" +23389 area-Meta Please consider supporting 10.11 Some Mac users cannot upgrade to 10.12 due to Apple hardware requirements. This blocks users of Mac OS 10.11- from using dotnet core 2, which blocks use of Powershell 6 alpha. Please remove if this is a duplicate issue. +23390 area-Serialization CI failures from sgen ``` 2017-08-18 12:30:21,115: INFO: proc(54): run_and_log_output: Output: Discovering: Microsoft.XmlSerializer.Generator.Tests 2017-08-18 12:30:21,303: INFO: proc(54): run_and_log_output: Output: Discovered: Microsoft.XmlSerializer.Generator.Tests 2017-08-18 12:30:21,365: INFO: proc(54): run_and_log_output: Output: Starting: Microsoft.XmlSerializer.Generator.Tests 2017-08-18 12:30:22,069: INFO: proc(54): run_and_log_output: Output: Serialization Assembly Name: C:\dotnetbuild\work\57753adf-3a4b-4c3c-b08d-f00b471e81a3\Work\dbf6bd61-156e-4f2c-a79a-634499a6cd6b\Unzip\Microsoft.XmlSerializer.Generator.Tests.XmlSerializers.cs. 2017-08-18 12:30:22,069: INFO: proc(54): run_and_log_output: Output: Generated serialization assembly for assembly C:\dotnetbuild\work\57753adf-3a4b-4c3c-b08d-f00b471e81a3\Work\dbf6bd61-156e-4f2c-a79a-634499a6cd6b\Unzip\Microsoft.XmlSerializer.Generator.Tests.dll --> 'C:\dotnetbuild\work\57753adf-3a4b-4c3c-b08d-f00b471e81a3\Work\dbf6bd61-156e-4f2c-a79a-634499a6cd6b\Unzip\Microsoft.XmlSerializer.Generator.Tests.XmlSerializers.cs'. 2017-08-18 12:30:22,085: INFO: proc(54): run_and_log_output: Output: SGEN: error SGEN1: Missing required command-line argument: The name of the source assembly.. ``` https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netcoreapp+CGroup_Release+AGroup_x86+TestOuter_false_prtest/2389/ +23391 area-System.Runtime Setting binary serialization culture to invariant to avoid test machine diffs Fixes https://github.com/dotnet/corefx/issues/21720 +23392 area-System.Data Fix Test: System.Data.Tests.SqlTypes.SqlStringTest/SqlDateTimeToSqlString Implement fixes based on #23282 +23393 area-Meta Please introduce some location interfaces into .NET Standard @weitzhandler commented on [Mon Aug 07 2017](https://github.com/dotnet/standard/issues/436) For example the [`GeoCoordinate`](https://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate) class and the like. --- @dotMorten commented on [Wed Aug 09 2017](https://github.com/dotnet/standard/issues/436#issuecomment-321441857) If you were to do this, make sure this is heavily extensible and has custom implementations, as there are many ways of getting location, and also many types of metadata associated with the retrieved location, that in some cases are just as important as the longitude/latitude/altitude (not to mention it's not always longitude/latitude, and altitude can also mean many things). --- @weshaggard commented on [Fri Aug 18 2017](https://github.com/dotnet/standard/issues/436#issuecomment-323416413) This issue is better suited for the corefx repo. We won't put anything into the standard until it exists in .NET Core. +23394 area-System.Net Setting Http version when initialize HttpClient Right now, HttpClient will default to 1.1 on all requests, unless specifies directly on each `HttpRequestMessage` with `SendAsync()` (per [#4870](https://github.com/dotnet/corefx/issues/4870#issuecomment-289884130)). It would be nice if we can initialize the client with the Http version of choice once, and use it for every API that `HttpClient` provides. # Rejected API Proposal (attempt) Motivation: Change default Http protocol version to the latest supported version by default to get the best performance. ```diff public static class HttpVersion { public static readonly Version Unknown = new Version(0, 0); public static readonly Version Version10 = new Version(1, 0); public static readonly Version Version11 = new Version(1, 1); public static readonly Version Version20 = new Version(2, 0); + public static readonly Version Default = new Version(int.MaxValue, int.MaxValue); // Use the highest version that the platform supports } ``` Note: Similar to [`SecurityProtocolType.SystemDefault`](https://apisof.net/catalog/System.Net.SecurityProtocolType.SystemDefault) +23395 area-Meta "Undo ""goto return"" works-around" Issue to track following up on feedback at https://github.com/dotnet/coreclr/pull/13314#issuecomment-321586182 -- now that the JIT tries to pull early returns out of loops, find the code where `goto` has been added to work around its prior inability to do so, revert, and make sure the JIT gives the desired layout. +23396 area-System.Reflection Added GetAssemblyName API for AssemblyDefinition and AssemblyReference Also added GetAssemblyName() APIs on AssemblyReference and AssemblyDefinition This is my initial pull request. I am looking to get feedback. fixes #13295 cc: @safern @danmosemsft @tmat @nguerrera +23398 area-System.Data Make DBNull binary serializable We marked Datasets/DataTables as serializable but they can contain these. Note it needs some special treatment as it is singleton - see reference sources. See https://github.com/dotnet/corefx/issues/23213#issuecomment-323272756 cc @FransBouma +23400 area-Serialization Workaround sgen automation errors. The negative test will cause the CI failure. So just remove this test. And on some local machine, the CSC command will try to find the generated code from a root location. Still need understand why it happen. To workaround, just ignore the csc build error, and make the tests work without the generator. #23390 & #23304 @shmao @zhenlan @mconnew +23401 area-System.Net HttpClient Performance Slow Compared to .NET 4.7 "I have conducted a basic performance test of `HttpClient` in .NET Core 2.0 versus `HttpClient` in .NET Framework 4.7 and have noticed a gap in performance. The .NET Framework 4.7 `HttpClient/WebClient` outperforms .NET Core's `HttpClient` by ~1.5-2x in terms of how long it takes to complete a batch of _n_ requests. ### Testing The test is a console app (run in release mode on Windows 7 16GB 3.5GHz) with identical code for .NET Core/Framework that follows this sequence: 1. Create a single, shared HttpClient instance with a maximum of _n_ (for testing _n_=10,100) connections. ``` // .NET Core 2.0 var httpClient = new HttpClient(new HttpClientHandler { MaxConnectionsPerServer = 100 }); // .NET Framework 4.7 ServicePointManager.DefaultConnectionLimit = 100; var httpClient = new HttpClient(); // .NET Framework 4.7 - WebClient instance is created ONCE PER REQUEST ServicePointManager.DefaultConnectionLimit = 100; var webClient = new WebClient(); ``` 2. Start 10,000 simulataneous requests and time how long each request takes to complete + how long all take to complete. Here is code demonstrating how requests are made / timed. ``` private void RunTest(int count) { // requests is a list of Request data structures used to store individual request latency / responses var requests = Enumerable.Range(0, count).Select(j => CreateRequest(j)).ToList(); // this stopwatch is for duration of all requests var stopwatch = Stopwatch.StartNew(); // start all requests and wait for completion var requestTasks = requests.Select(MakeRequest).ToArray(); Task.WaitAll(requestTasks); stopwatch.Stop(); // total run time = stopwatch.ElapsedMilliseconds } private Task MakeRequest(Request request) { var stopwatch = Stopwatch.StartNew(); var response = await httpClient.GetStringAsync(request.Url); stopwatch.Stop(); // save request duration and response request.DurationMs = stopwatch.ElapsedMilliseconds; request.ResponseId = ParseResponse(response); } ``` I am testing against a basic python server that is well under capacity to rule out any server side bottlenecks. The server returns a simple JSON response containing an `id` field which is used to validate the HttpClient responses. ``` { ""id"": ""some_identifier"" } ``` JSON deserialization / response validation is NOT included in performance stats. ### Results These are average statistics (in milliseconds) of 5 separate runs of 10,000 requests each. It is worth mentioning that the actual time spent on each request was much less with .NET Core's HttpClient, it's just that the batch of requests takes longer to complete as a whole vs .NET Framework. | framework | total run time (ms) | avg req time (ms) | median req time (ms) | total time spent on requests (s) | |---------------|---------------------|-------------------|----------------------|----------------------------------| | .NET Core 2.0 | 5614 | 216 | 282 | 777 | | .NET 4.7 | 3055 | 1355 | 1339 | 10,585 |" +23402 area-Microsoft.CSharp Fix duplicate types exception on WinRT interfaces For certain WinRT types like `Windows.Foundation.Collections.IPropertySet`, when using the dynamic C# binder and calling a method, for example `Add(key, value)`, the binder creates the type hierarchy and tries to bind the base method. The existing code tries to bind implemented interfaces both in the AggregateType's t ype hierarchy and WinRT interfaces, and ends up with duplicates, which results in: ```Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: 'System.Collections.Generic.IDictionary.Add(string, object)' and 'System.Collections.Generic.IDictionary.Add(string, object)'``` The simple workaround for now is to use a `HashSet` to store these interfaces, so that we don't end up passing duplicates up the call chain. A smarter way of filtering out types that we know for sure are not applicable should be considered in the future. DevDiv #476163 +23404 area-System.Net FtpWebRequest on core does not reuse connections "FtpWebRequest on .net core connects and disconnects for every operation: ![image](https://user-images.githubusercontent.com/1697911/29480430-1aeaaf88-842d-11e7-8359-3e4f07b1e579.png) Eventually hitting connection rate limit: ![image](https://user-images.githubusercontent.com/1697911/29480440-2e2bbb6e-842d-11e7-99b9-0d55aebb2e35.png) Same code on net461 reuses connection: ![image](https://user-images.githubusercontent.com/1697911/29480455-43bcbcda-842d-11e7-8348-6b85efcc533a.png) Code: ``` c# var request = (FtpWebRequest) WebRequest.Create(address); request.Method = WebRequestMethods.Ftp.UploadFile; request.KeepAlive = true; request.UseBinary = true; request.Credentials = new NetworkCredential(publishingProfile.FtpUsername, publishingProfile.FtpPassword); request.ConnectionGroupName = ""group""; using (var fileStream = File.OpenRead(file.FullName)) { using (var requestStream = await request.GetRequestStreamAsync()) { await fileStream.CopyToAsync(requestStream); } } await request.GetResponseAsync(); ``` " +23405 area-Microsoft.CSharp Regression in dynamic method invocation in .NET Core 2.0 _From @DavidZidar on August 18, 2017 22:45_ I've discovered a regression where calling a generic method with a dynamic argument throws an exception in .NET Core 2.0 but not in previous versions. Here is a small program that cause the bug. https://github.com/DavidZidar/DynamicProblems/blob/ad51939ec05bd840bf441e9653d6fb608872e6ce/DynamicProblems/Program.cs#L7-L36 The problematic type signature is as follows `void HandleMessage(IQuery query)` As you can see in the example, invoking the method with TResult of `List<>` works fine but with `ImmutableList<>` the runtime binder throws the following exception. ``` Length cannot be less than zero. Parameter name: length at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameManager.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetName(Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeArrayFromTypes(IList`1 types) at Microsoft.CSharp.RuntimeBinder.SymbolTable.SetInterfacesOnAggregate(AggregateSymbol aggregate, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddAggregateToSymbolTable(NamespaceOrAggregateSymbol parent, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeArrayFromTypes(IList`1 types) at Microsoft.CSharp.RuntimeBinder.SymbolTable.SetInterfacesOnAggregate(AggregateSymbol aggregate, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddAggregateToSymbolTable(NamespaceOrAggregateSymbol parent, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.GetArgumentType(ICSharpBinder p, CSharpArgumentInfo argInfo, Expression param, DynamicMetaObject arg, Int32 index) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.CreateArgumentArray(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) at System.Dynamic.InvokeMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1) at DynamicProblems.Program.Main(String[] args) in c:\code\test\DynamicProblems\DynamicProblems\Program.cs:line 27 ``` If you change TargetFramework to netcoreapp1.1 in the csproj file then everything works as expected. _Copied from original issue: dotnet/coreclr#13478_ +23406 area-System.Memory Enable System.Runtime.CompilerServices.Unsafe and System.Memory tests for UAP We need to get targeted unit test for Span enabled. They are very likely uncover bugs that will be hard to track down otherwise (e.g. #23073). +23407 area-System.Data System.Data.DataSetExtensions Test Failures with Unbox Tests fail fast / crash when running ILCBuildType=ret in System.Data.DataSetExtensions on UapAot. Test do not fail when ILCBuildType=chk. This is likely a code gen bug. **Failure Location**: (One of many) https://github.com/dotnet/corefx/blob/73f62d06803d086ee7f6745b55dfde63e27be779/src/System.Data.DataSetExtensions/tests/Mono/EnumerableRowCollectionTest.cs#L99-L102 Then Field calls UnboxT, where there is a failure: `Exception Unhandled: Unhandled exception at 0x00007FFA233500A0 (xunit.console.netcore.dll) in xunit.console.netcore.exe: 0x80004005: Unspecified error.` https://github.com/dotnet/corefx/blob/73f62d06803d086ee7f6745b55dfde63e27be779/src/System.Data.DataSetExtensions/src/System/Data/DataRowExtensions.cs#L146 **Execution failed on:** Windows.10.Amd64.ClientRS3-x64:Release Windows.10.Amd64.ClientRS3-x64:Debug Windows.10.Amd64.ClientRS3-x86:Debug Windows.10.Amd64.ClientRS3-x86:Release Windows.10.Amd64-x86:Debug **Error message**: `Access Violation: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. The application will be terminated since this platform does not support throwing an AccessViolationException.` **Call stack**: ``` xunit.console.netcore.dll!$14_System::Data::DataRowExtensions::UnboxT$1..cctor() Line 146 xunit.console.netcore.dll!System::Runtime::CompilerServices::ClassConstructorRunner.EnsureClassConstructorRun(System::Runtime::CompilerServices::StaticClassConstructionContext * pContext) Line 92 xunit.console.netcore.dll!System::Runtime::CompilerServices::ClassConstructorRunner.CheckStaticClassConstruction(void * returnValue, System::Runtime::CompilerServices::StaticClassConstructionContext * pContext) Line 38 xunit.console.netcore.dll!$14_System::Data::DataRowExtensions.Field($13_System::Data::DataRow & InstParam, System::String & row) Line 27 xunit.console.netcore.dll!$15_MonoTests::System::Data::EnumerableRowCollectionTest::<>c.b__3_2($13_System::Data::DataRow & line) Line 161 [Inline Frame] xunit.console.netcore.dll!System::Func$2::Invoke(System::__Canon &) Line 16707565 xunit.console.netcore.dll!$26_System::Linq::Enumerable::SelectEnumerableIterator$2.MoveNext() Line 131 xunit.console.netcore.dll!$15_MonoTests::System::Data::EnumerableRowCollectionTest.QueryWhereSelectOrderByDescending() Line 135 ``` cc: @danmosemsft @safern +23409 area-System.Net [release/uwp6.0] Disable two flaky tests in System.Net.* Disabling this two flaky tests in the effort to have a clean build in the release branch. Related issues: https://github.com/dotnet/corefx/issues/22904 and https://github.com/dotnet/corefx/issues/23364 cc: @davidsh @danmosemsft +23411 area-Meta .NET Core 2.1 support .NET Framework 4.7? OR .NET Framework 4.6.2 .NET Core 2.1 support .NET Framework 4.7? OR .NET Framework 4.6.2 +23412 area-System.Data Make 4.4.1 SqlClient harvest the 4.3.1 SqlClient package for its netstandard1.3 bits, since the 4.3.0 SqlClient had a connection leak bug. The 4.4.0 SqlClient package used 4.3.0 for its netstandard1.3 bits, so harvesting 4.4.0 would continue the problem. Fixes this issue: https://github.com/dotnet/corefx/issues/13422 Shiproom approval pending. +23413 area-System.Collections [release/uwp6.0] Fix a uapaot hang in a ConcurrentQueue test Port https://github.com/dotnet/corefx/pull/23403 to release/uwp6.0. @stephentoub +23415 area-System.IO PlatformNotSupportedException when attempting to serialize DirectoryInfo instance with Newtonsoft.Json "Cross-posting with https://github.com/JamesNK/Newtonsoft.Json/issues/1404 to demonstrate the pain this can cause with 3rd party libraries that have historically relied on this behavior vs simply removing the API which would bring attention to the problem immediately, instead of at runtime. Please consider removing these APIs in the future ### Source/destination types ```csharp System.IO.DirectoryInfo ``` ### Source/destination JSON None/serialization fails. ### Expected behavior Serialization of the DirectoryInfo object to function how it works on .net 4.x ### Actual behavior ``` Message: System.PlatformNotSupportedException : Operation is not supported on this platform. at System.IO.FileSystemInfo.GetObjectData(SerializationInfo info, StreamingContext context) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeISerializable(JsonWriter writer, ISerializable value, JsonISerializableContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer) at CSDiscordService.EvalTests.d__15.MoveNext() in C:\src\CSDiscord\CSDiscordService.Tests\EvalTests.cs:line 88 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Result Message: System.PlatformNotSupportedException : Operation is not supported on this platform. ``` Appears to be related to a change made in the .net core implementation to no longer support serializing several types. https://github.com/dotnet/corefx/pull/20220 ### Steps to reproduce ``` PM> dotnet --info .NET Command Line Tools (2.0.1-servicing-006924) Product Information: Version: 2.0.1-servicing-006924 Commit SHA-1 hash: 1ed6be56ca Runtime Environment: OS Name: Windows OS Version: 10.0.16257 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.1-servicing-006924\ Microsoft .NET Core Shared Framework Host Version : 2.0.0 Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d ``` ```csharp var di = Directory.CreateDirectory(""C:\\this\\doesnt\\exist""); var json = JsonConvert.SerializeObject(di); Console.WriteLine(json); ``` ### Other Observations ### `SerializerSettings.Error = (s, e) => e.ErrorContext.Handled = true;` does not handle this exception setting `SerializerSettings.ContractResolver = new DefaultContractResolver { IgnoreSerializableInterface = true };` does not change this behavior " +23416 area-System.Net .NET Core 2.0 Ubuntu 16.04 SocketException 10040 MessageSize Ubuntu 16.04 SocketException 10040 MessageSize nioBuffers List> nioBuffers when nioBuffers is large (total 892913 byte) SocketException 10040 MessageSize SocketError errorCode; long localWrittenBytes = socket.Send(nioBuffers, SocketFlags.None, out errorCode); if (errorCode != SocketError.Success && errorCode != SocketError.WouldBlock) { throw new SocketException((int)errorCode); } ![29483441-fbe0779c-84d8-11e7-8963-383c88c35151](https://user-images.githubusercontent.com/3415285/29486311-61bdaf58-8515-11e7-9aa6-6e1730a78697.png) +23417 area-System.Security Add missing members to EncryptedXml. While importing `EncryptedXml` into Mono (https://github.com/mono/mono/pull/5273), it was noticed that its following members are missing: * [The `(XmlDocument, Evidence)` constructor.](https://msdn.microsoft.com/en-us/library/kc1kt87d(v=vs.110).aspx) * [The `DocumentEvidence` property.](https://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.encryptedxml.documentevidence(v=vs.110).aspx) This PR adds them. The implementation is taken from [.NET Framework](https://referencesource.microsoft.com/#System.Security/system/security/cryptography/xml/encryptedxml.cs). The behavior of the `EncryptedXmlTest.DecryptData_CipherReference_InvalidUri` test was changed. As far as I understand, both .NET Core and .NET Framework must behave the same way. According to [the documentation](https://msdn.microsoft.com/en-us/library/system.security.securitymanager.getstandardsandbox(v=vs.110).aspx), the `SecurityManager.GetStandardSandbox` must throw if the evidence is null. Previously, .NET Core wasn't throwing in this case, so this was changed as well. +23418 area-System.Collections Added Merge and Intersect methods to immutable dictionaries This PR is work in progress. I've made this as a reference point for further discussion for a new API methods proposed in #23385 : - ` IImmutableDictionary Intersect(IEnumerable> other, Func resolveValue)` - `IImmutableDictionary Merge(IEnumerable> other, Func resolveValue)` They aim to provide set-like intersection/union methods over dictionaries. Those two methods have specialized implementations for both `ImmutableDictionary` and `ImmutableSortedDictionary`, however I'm not yet much familiar with immutable collections internals. Also it would be great, if somebody could help me create some unit tests for those. +23419 area-System.Collections Proposal: ReverseComparer If you want to sort a `List` by descending, you have to create a Reverse IComparer class. My Proposal is to add a `ReverseComparer` class like System.Linq.Parallel.ReverseComparer and add extension method like ``` csharp public static IComparer Reverse(this IComparer comparer); public static IComparer Reverse(this IComparer comparer); ``` ## Usage This api is to make it simple to make a reverse comparer. ```csharp list.Sort(comparer.Reverse()); // you can use list.Sort((x,y)=>comparer.Compare(y,x)); insted var sorteddictionary = new SortedDictionary(comparer.Reverse()); //you can use (Comparer.Create((x,y)=> comprer.Compare(y,x))); ``` ## API ```csharp public class ReverseComparer: IComparer { public ReverseComparer(IComparer comparer); public int Compare(T x, T y); public static IComparer Reverse(this IComarer comparer); } ``` +23420 area-System.Data Increase code coverage from 39.1% to 50.8% on System.Data.Common.DataColumnMapping Hi, Here are some tests to increase code coverage. If you have any questions, please let me know. Thanks, Michael +23422 area-System.Net HttpWebRequest in .NET Core 2.0 throwing 301 Moved Permanently "The following single-line console program works just fine in .NET Framework 4.6.1: ```c# Console.WriteLine(XDocument.Load(""http://feeds.thisamericanlife.org/talpodcast"")); ``` However, in .NET Core 2.0 it throws the following exception: ``` Unhandled Exception: System.Net.WebException: The remote server returned an error: (301) Moved Permanently. at System.Net.HttpWebRequest.GetResponse() at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) at System.Xml.XmlTextReaderImpl.FinishInitUriString() at System.Xml.XmlTextReaderImpl..ctor(String uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver) at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext) at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings) at System.Xml.Linq.XDocument.Load(String uri, LoadOptions options) at System.Xml.Linq.XDocument.Load(String uri) at ConsoleApp1.Program.Main(String[] args) ``` This has always worked in the full .NET Framework, presumably because it automatically follows the redirection. However, it does not do that in .NET Core (it seems that AllowAutoRedirect is simply ignored), so I'm assuming this is a bug. Please let us know if there's a workaround. [EDIT] Fixed C# syntax highlight & exception code formatting by @karelz" +23423 area-Meta C# new operate bug? ```c# public class ListTest { public List MyList; public ListTest() { MyList = new List { 1, 2, 3 }; } } var listTest = new ListTest() { MyList = {4,5,6} }; ``` Do you know the value of listTest.MyList ??? It would be {1,2,3,4,5,6} (on .net framework 4.6.1) Someone can explain that?? [EDIT] Fixed proper code formatting by @karelz +23424 area-System.Xml Avoid unnecessary intermediate Version allocation Just a minor nit: `Version..ctor(string)` is [implemented](https://github.com/dotnet/coreclr/blob/a6045809b3720833459c9247aeb4aafe281d7841/src/mscorlib/shared/System/Version.cs#L81-L88) by calling `Version.Parse`, which allocates an intermediate `Version` instance. Avoid the unnecessary intermediate allocation by using `Version.Parse` directly in the two places `Version..ctor(string)` is used in CoreFX. Also, some minor cleanup to `XslCompiledTransform` while making changes here. cc: @krwq (for System.Xml) cc: @AlexGhiondea, @joperezr (for System.Runtime.Extensions) +23426 area-System.Net HttpClient specify interface to bind to / make requests from On a machine with multiple NICs, how can i specify (if possible) which interface IP to use for making requests? I am sometimes on a server where the default management interface is not connected to the internet, however there are multiple other NICs that are internet-facing that I would like to be able to use. With .NET Framework + ServicePointManager I believe you could use [BindIPEndPoint](https://msdn.microsoft.com/en-us/library/ms144146(v=vs.110).aspx). +23427 area-System.Net "Test: System.Net.Tests.HttpListenerResponseHeadersTests/StatusDescription_GetWithCustomStatusCode_ReturnsExpected failed with ""System.Net.Sockets.SocketException""" "Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpListenerResponseHeadersTests/StatusDescription_GetWithCustomStatusCode_ReturnsExpected(statusCode: 426, expectedDescription: \""Upgrade Required\"")` has failed. System.Net.Sockets.SocketException : Too many open files in system Stack Trace: at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) at System.Net.Tests.HttpListenerFactory.GetConnectedSocket() at System.Net.Tests.HttpListenerResponseTestBase..ctor() at System.Net.Tests.HttpListenerResponseHeadersTests..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) Build : 2.0.0 - 20170818.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0-msrc~2F/type/test~2Ffunctional~2Fcli~2F/build/20170818.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerResponseHeadersTests~2FStatusDescription_GetWithCustomStatusCode_ReturnsExpected(statusCode:%20426,%20expectedDescription:%20%5C%22Upgrade%20Required%5C%22)" +23428 area-System.Linq "Test: System.Linq.Parallel.Tests.FirstFirstOrDefaultTests/First_NoMatch_Longrunning failed with ""System.AggregateException""" Opened on behalf of @Jiayili1 The test `System.Linq.Parallel.Tests.FirstFirstOrDefaultTests/First_NoMatch_Longrunning(labeled: Enumerable.Range-Ordered, count: 65536, position: 0)` has failed. Assert.Throws() Failure Expected: typeof(System.InvalidOperationException) Actual: typeof(System.AggregateException): One or more errors occurred. (One or more errors occurred. (Object reference not set to an instance of an object.)) (One or more errors occurred. (Object reference not set to an instance of an object.)) (One or more errors occurred. (Object reference not set to an instance of an object.)) (One or more errors occurred. (Object reference not set to an instance of an object.)) (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.) (Object reference not set to an instance of an object.) Stack Trace: at System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/Scheduling/QueryTaskGroupState.cs:line 132 at System.Linq.Parallel.OrderPreservingSpoolingTask`2.Spool(QueryTaskGroupState groupState, PartitionedStream`2 partitions, Shared`1 results, TaskScheduler taskScheduler) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/Scheduling/OrderPreservingSpoolingTask.cs:line 123 at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/Merging/MergeExecutor.cs:line 93 at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/PartitionedStreamMerger.cs:line 61 at System.Linq.Parallel.FirstQueryOperator`1.WrapHelper[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, QuerySettings settings) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/Unary/FirstQueryOperator.cs:line 92 at System.Linq.Parallel.FirstQueryOperator`1.WrapPartitionedStream[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, Boolean preferStriping, QuerySettings settings) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/Unary/FirstQueryOperator.cs:line 70 at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/UnaryQueryOperator.cs:line 162 at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/ScanQueryOperator.cs:line 138 at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/UnaryQueryOperator.cs:line 132 at System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/QueryOperator.cs:line 166 at System.Linq.Parallel.QueryOpeningEnumerator`1.OpenQuery() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/QueryOpeningEnumerator.cs:line 164 at System.Linq.Parallel.QueryOpeningEnumerator`1.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/QueryOpeningEnumerator.cs:line 111 at System.Linq.ParallelEnumerable.GetOneWithPossibleDefault[TSource](QueryOperator`1 queryOp, Boolean throwIfTwo, Boolean defaultIfEmpty) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs:line 5349 at System.Linq.ParallelEnumerable.First[TSource](ParallelQuery`1 source, Func`2 predicate) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs:line 5467 at System.Linq.Parallel.Tests.FirstFirstOrDefaultTests.<>c__DisplayClass9_0.b__0() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Linq.Parallel/tests/QueryOperators/FirstFirstOrDefaultTests.cs:line 100 Build : Master - 20170821.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170821.01/workItem/System.Linq.Parallel.Tests/analysis/xunit/System.Linq.Parallel.Tests.FirstFirstOrDefaultTests~2FFirst_NoMatch_Longrunning(labeled:%20Enumerable.Range-Ordered,%20count:%2065536,%20position:%200) +23429 area-System.Net Test failure: System.Net.WebSockets.Client.Tests.SendReceiveTest / SendReceive_ConnectionClosedPrematurely_ReceiveAsyncFailsAndWebSocketStateUpdated ## Types of failures Affected tests: * `System.Net.WebSockets.Client.Tests.SendReceiveTest` / `SendReceive_ConnectionClosedPrematurely_ReceiveAsyncFailsAndWebSocketStateUpdated` - 2x * `System.Net.WebSockets.Client.Tests.ConnectTest` / `ConnectAsync_CookieHeaders_Success` - 1x ``` System.Net.WebSockets.WebSocketException : Unable to connect to the remote server ---- System.OperationCanceledException : The operation was canceled. -------- System.ObjectDisposedException : Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'. at System.Net.WebSockets.WebSocketHandle.d__24.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs:line 138 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.ClientWebSocket.d__16.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs:line 157 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.SendReceiveTest.<>c__DisplayClass11_1.<b__0>d.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/tests/SendReceiveTest.cs:line 384 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.SendReceiveTest.<>c__DisplayClass11_1.<b__10>d.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/tests/SendReceiveTest.cs:line 470 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in /Users/buildagent/agent/_work/30/s/corefx/src/Common/tests/System/Net/Http/LoopbackServer.cs:line 67 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.Client.Tests.SendReceiveTest.d__11.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/tests/SendReceiveTest.cs:line 466 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.WebSockets.WebSocketHandle.d__25.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs:line 175 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.WebSockets.WebSocketHandle.d__25.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs:line 190 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.WebSocketHandle.d__24.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs:line 87 ----- Inner Stack Trace ----- at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2434 at System.Net.Sockets.Socket.<>c.b__273_0(IAsyncResult iar) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 139 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.WebSockets.WebSocketHandle.d__25.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs:line 166 ``` ## History of failures Day | Build | OS | Test -- | -- | -- | -- 7/29 | 20170729.02 | Suse42.2 | ConnectAsync_CookieHeaders_Success 8/21 | 20170821.01 | OSX10.12 | SendReceive_ConnectionClosedPrematurely_ReceiveAsyncFailsAndWebSocketStateUpdated 8/30 | 20170830.01 | OSX10.12 | SendReceive_ConnectionClosedPrematurely_ReceiveAsyncFailsAndWebSocketStateUpdated +23430 area-System.Memory "System.SpanTests.ReadOnlySpanTests.OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared failed with ""Xunit.Sdk.TrueException"" in CI" Failed test: System.SpanTests.ReadOnlySpanTests.OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared COnfiguration: ubuntu16.10_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu16.10_release/3504/testReport/System.SpanTests/ReadOnlySpanTests/OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared/ MESSAGE: ~~~ Assert.True() Failure\nExpected: True\nActual: False ~~~ STACK TRACE: ~~~ at System.SpanTests.ReadOnlySpanTests.OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared() in /mnt/j/workspace/dotnet_corefx/master/ubuntu16.10_release/src/System.Memory/tests/ReadOnlySpan/SequenceEqual.T.cs:line 67 ~~~ +23431 area-System.Runtime "Test: System.Tests.DecimalTests/Parse_Invalid failed with ""System.ArgumentNullException""" Opened on behalf of @Jiayili1 The test `System.Tests.DecimalTests/Parse_Invalid(value: null, style: Float, provider: null, exceptionType: typeof(System.ArgumentNullException))` has failed. System.ArgumentNullException : Value cannot be null.\r Parameter name: s Stack Trace: at System.Tests.DecimalTests.Parse_Invalid(String value, NumberStyles style, IFormatProvider provider, Type exceptionType) in E:\A\_work\441\s\corefx\src\System.Runtime\tests\System\DecimalTests.cs:line 699 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetVIIII(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170821.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64-x86 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170821.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.DecimalTests~2FParse_Invalid(value:%20null,%20style:%20Float,%20provider:%20null,%20exceptionType:%20typeof(System.ArgumentNullException)) +23432 area-System.Runtime "Tests under: System.Tests.EnvironmentTests failed with ""System.InvalidOperationException""" Opened on behalf of @Jiayili1 The test `System.Tests.EnvironmentTests/GetFolderPath_UapExistAndAccessible(folder: Cookies)` has failed. System.InvalidOperationException : The process has no package identity. (Exception from HRESULT: 0x80073D54) Stack Trace: at System.Runtime.InteropServices.McgMarshal.ThrowOnExternalCallFailed(Int32 hr, RuntimeTypeHandle typeHnd) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Interop\src\Shared\McgMarshal.cs:line 1012 at __Interop.ComCallHelpers.Call($__ComObject __this, RuntimeTypeHandle __typeHnd, Int32 __targetIndex, Void* arg0) in Call:line 15732480 at __Interop.ForwardComStubs.Stub_1($__ComObject __this, Int32 __targetIndex) in Stub_1:line 16707566 at System.Environment.GetFolderPathCoreCurrent($SpecialFolder folder) in E:\A\_work\441\s\corefx\src\System.Runtime.Extensions\src\System\Environment.WinRT.cs:line 117 at System.Environment.GetFolderPath($SpecialFolder folder, $SpecialFolderOption option) in E:\A\_work\441\s\corefx\src\System.Runtime.Extensions\src\System\Environment.cs:line 159 at System.Tests.EnvironmentTests.GetFolderPath_UapExistAndAccessible($SpecialFolder folder) in E:\A\_work\441\s\corefx\src\System.Runtime.Extensions\tests\System\EnvironmentTests.cs:line 289 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetVI(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170821.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170821.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.EnvironmentTests~2FGetFolderPath_UapExistAndAccessible(folder:%20Cookies) +23433 area-System.Runtime "Tests under: System.Tests.MathFTests failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Tests.MathFTests/Round_Digits` has failed. Assert.Equal() Failure\r Expected: 3.42199993\r Actual: 0.00100000005 Stack Trace: at System.Tests.MathFTests.AssertEqual(Single expected, Single actual, Single variance) in E:\A\_work\441\s\corefx\src\System.Runtime.Extensions\tests\System\MathF.netcoreapp.cs:line 135 at System.Tests.MathFTests.Round_Digits() in E:\A\_work\441\s\corefx\src\System.Runtime.Extensions\tests\System\MathF.netcoreapp.cs:line 946 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170821.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170821.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.MathFTests~2FRound_Digits +23434 area-System.Runtime "Tests under: System.Tests.MathTests failed with ""System.MissingMethodException""" Opened on behalf of @Jiayili1 The test `System.Tests.MathTests/Clamp_Byte(value: 0, min: 1, max: 3, expected: 1)` has failed. System.MissingMethodException : Method 'Math.Clamp(byte, byte, byte)' from assembly 'System.Runtime.Extensions' was not included in compilation, but was referenced in MathTests.Clamp_Byte(byte, byte, byte, byte). There may have been a missing assembly, or a dependency on a more recent Windows SDK release. Stack Trace: at System.Tests.MathTests.Clamp_Byte(Byte value, Byte min, Byte max, Byte expected) at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetVIIII(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170821.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170821.01/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.MathTests~2FClamp_Byte(value:%200,%20min:%201,%20max:%203,%20expected:%201) +23435 area-System.Data "Test: System.Data.SqlClient.Tests.SqlConnectionBasicTests/IntegratedAuthConnectionTest failed with ""System.Data.SqlClient.SqlException""" Opened on behalf of @Jiayili1 The test `System.Data.SqlClient.Tests.SqlConnectionBasicTests/IntegratedAuthConnectionTest` has failed. System.Data.SqlClient.SqlException : Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=1; handshake=17; [Login] initialization=0; authentication=1; [Post-Login] complete=3998; \r ---- System.ComponentModel.Win32Exception : The wait operation timed out Stack Trace: at System.Data.SqlClient.SqlInternalConnection.OnError($SqlException exception, Boolean breakConnection, Action$1 wrapCloseInAction) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnection.cs:line 618 at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning($TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs:line 1107 at System.Data.SqlClient.TdsParserStateObject.ThrowExceptionAndWarning(Boolean callerHasConnectionLock, Boolean asyncClose) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 932 at System.Data.SqlClient.TdsParserStateObject.ReadSniError($TdsParserStateObject stateObj, UInt32 error) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 2572 at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 2107 at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 2032 at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 1077 at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParserStateObject.cs:line 1311 at System.Data.SqlClient.TdsParser.TryRun($RunBehavior runBehavior, $SqlCommand cmdHandler, $SqlDataReader dataStream, $BulkCopySimpleResultSet bulkCopyHandler, $TdsParserStateObject stateObj, Boolean& dataReady) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs:line 1590 at System.Data.SqlClient.TdsParser.Run($RunBehavior runBehavior, $SqlCommand cmdHandler, $SqlDataReader dataStream, $BulkCopySimpleResultSet bulkCopyHandler, $TdsParserStateObject stateObj) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\TdsParser.cs:line 1493 at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1005 at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin($ServerInfo serverInfo, Boolean ignoreSniOpenTimeout, $TimeoutTimer timeout, Boolean withFailover) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1591 at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1332 at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1184 at System.Data.SqlClient.SqlInternalConnectionTds..ctor($DbConnectionPoolIdentity identity, $SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, $SqlConnectionString userConnectionOptions, $SessionData reconnectSessionData, Boolean applyTransientFaultHandling) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 355 at System.Data.SqlClient.SqlInternalConnectionTds..ctor$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 374 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection($DbConnectionOptions options, $DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, $DbConnectionPool pool, $DbConnection owningConnection, $DbConnectionOptions userOptions) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnectionFactory.cs:line 135 at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection($DbConnectionPool pool, $DbConnection owningObject, $DbConnectionOptions options, $DbConnectionPoolKey poolKey, $DbConnectionOptions userOptions) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs:line 113 at System.Data.ProviderBase.DbConnectionPool.CreateObject$catch$3() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 755 at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest($DbConnection owningObject, $DbConnectionOptions userOptions, $DbConnectionInternal oldConnection) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 1606 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection$catch$1() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 1132 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection($DbConnection owningObject, TaskCompletionSource$1<$DbConnectionInternal> retry, $DbConnectionOptions userOptions, $DbConnectionInternal& connection) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionPool.cs:line 1044 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection($DbConnection owningConnection, TaskCompletionSource$1<$DbConnectionInternal> retry, $DbConnectionOptions userOptions, $DbConnectionInternal oldConnection, $DbConnectionInternal& connection) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionFactory.cs:line 289 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\ProviderBase\DbConnectionInternal.cs:line 700 at System.Data.SqlClient.SqlInternalConnectionTds.TryReplaceConnection($DbConnection outerConnection, $DbConnectionFactory connectionFactory, TaskCompletionSource$1<$DbConnectionInternal> retry, $DbConnectionOptions userOptions) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlInternalConnectionTds.cs:line 1902 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource$1<$DbConnectionInternal> retry) in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 1031 at System.Data.SqlClient.SqlConnection.Open$catch$0() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\src\System\Data\SqlClient\SqlConnection.cs:line 606 at System.Data.SqlClient.Tests.SqlConnectionBasicTests.IntegratedAuthConnectionTest() in E:\A\_work\887\s\corefx\src\System.Data.SqlClient\tests\FunctionalTests\SqlConnectionTest.cs:line 38 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtrForDynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 ----- Inner Stack Trace ----- Build : UWP 6.0 - 20170821.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Filc~2F/build/20170821.01/workItem/System.Data.SqlClient.Tests/analysis/xunit/System.Data.SqlClient.Tests.SqlConnectionBasicTests~2FIntegratedAuthConnectionTest +23436 area-Infrastructure System.Runtime.Extensions nuget package installs signed dll (v4.6.24705.1) When referencing System.Runtime.Extensions (4.3.0) (or anything that makes uses of it), the dll that gets downloaded/deployed seems to be v4.6.24705.1 as opposed to the standard unsigned version as per the rest of the system dlls. The results in issues such as the following when attempting to publish for ubuntu 16.04. ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.Extensions.CommandLineUtils.CommandLineApplication..ctor(Boolean throwOnUnexpectedArg) ``` Issue was not present when targeting .NET Core 1.1 and only presented itself after upgrading to .NET Core 2.0. Any advice on how to get around this? (Have attempted to clear nuget cache without any luck). [EDIT] Fixed exception formatting by @karelz [EDIT] Added details around affected version by @onematchfox. +23437 area-System.Runtime S.R.CS.Unsafe.AsRef remove unnecessary IL instructions for netcoreapp Fixes https://github.com/dotnet/coreclr/issues/13341 or at least the `Unsafe` part of this. WIP! Submitting PR to get feedback. @jkotas +23438 area-System.Collections ConcurrentDictionary: ApproximateCount ## Proposed API ```cs public class ConcurrentDictionary : ... { ... public int ApproximateCount { get; } ... } ``` ## Rationale and Usage Following the discussion from #3357, there seemed to be a consensus that an `ApproximateCount` property can fit plenty of use cases and can be implemented to be faster than `Count` (i.e avoid locking). For example, we might have a cache implementation that does some cleanup or flush-to-disk after reaching some arbitrarily defined X items in the dictionary: ```cs if (map.Count > 10000) cleanup(); ``` In this use-case it doesn't really matter what the exact value of X is, and is perfectly tolerable if some race condition causes it to be inaccurate once in a while, but the action itself might be called a lot and in quick succession (maybe even in a tight loop), so the cost of the lock in `Count` is not negligible, and the developer might prefer to write `if (map.ApproximateCount> 10000) cleanup();` instead to avoid that cost. Another use-case with similar rationale behind it might be when we want to construct a list from a dictionary (or multiple dictionaries/collections), and need to come up with a reasonable estimate of the list's capacity before-hand to avoid extra copies. We could then write something like: `List list = new List(map1.ApproximateCount + map2.ApproximateCount);`, if we believe that the cost of using `Count` would be greater than the occasional non-exact list capacity. +23440 area-System.IO Investigate rel OSX ZipFile failures Some ZipFile tests are failing on OSX in rel/1.0.0 and rel/1.1.0 because they're unable to match file names to entries in the FileData class. We need to investigate why they're only failing on rel e.g. if they're missing some recent test fixes and determine if there is something more insidious happening. PR's to disable the tests temporarily: https://github.com/dotnet/corefx/pull/23346 https://github.com/dotnet/corefx/pull/23359 +23441 area-System.Net System.Net.Tests.WebProxyTest/WebProxy_BypassOnLocal_MatchesExpected failure on SUSE https://mc.dot.net/#/user/dotnet-maestro-bot/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Frelease~2Fuwp6.0~2F/test~2Ffunctional~2Fcli~2F/f902382494decbafaa7eefe4935d2a074f926d15/workItem/System.Net.WebProxy.Tests/analysis/xunit/System.Net.Tests.WebProxyTest~2FWebProxy_BypassOnLocal_MatchesExpected Unhandled Exception of Type System.Net.Internals.SocketExceptionFactory+ExtendedSocketException Message : `System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address` Stack Trace: ``` at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 46 at System.Net.Dns.ResolveCallback(Object context) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 290 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 420 at System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 562 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() in /mnt/j/workspace/dotnet_corefx/release_uwp6.0/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Linq/src/System/Linq/Select.cs:line 129 ``` +23442 area-System.Data [release/uwp6.0] Wrap CultureCulture assignments in RemoteInvoke Setting current culture or UI culture should be set remotely in our tests. The change also removes class derivation from DataSetAssertion so as to force correct inheritance behavior. Related issue: #23282 PR of fix: #23392 (this fix was ported against release/uwp6.0 to make current PR) cc: @danmosemsft +23443 area-System.Data SqlClient Connection Pooling error Hello , I have an Webapi that connect to different sql servers, we enabled connection pooling for both connections. Recently we need to apply a patch to one server, so we need to restart it. The result was that the connection pool blow the whole application. Different ways it fails: - When app starts, and you try to do first query to initialized the pool. If the server is not available or cannot connect. - After app starts and one of the server is not available, the app will eventually crash. - After app starts and you get intermittent connection availability, the app will eventually crash. I test this on the new core 2.0 , and also on 1.1.2 both on windows and linux , same result. this is the stack error that I get on core 2.0 System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateException: One or more errors occurred. (Connection refused 10.40.40.106:1433) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: Connection refused 10.40.40.106:1433 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) at System.Net.Sockets.Socket.<>c.b__267_0(IAsyncResult iar) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SNI.SNITCPHandle.d__22.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait(TimeSpan timeout) at System.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, Int64 timerExpire, Object callbackObject, Boolean parallel) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.PoolCreateRequest(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadPoolWorkQueue.Dispatch() Aborted I wrote a simple console test that helps to reproduced the issue. [Test.txt](https://github.com/dotnet/corefx/files/1239779/Test.txt) The problem is that there is no way to catch the exception since it happens at the framework level, so the entire app crash. If we removed the Min Pool Size the app wont crash. +23444 area-System.IO Resetting attributes broken in brokered locations Related to PR: #23316 Setting attributes twice on a file in a brokered location under UAP doesn't work. Issue is understood, need a new drop of FileApiInterop to fix. +23447 area-System.IO Disable failing compression test on OSX High Sierra Port https://github.com/dotnet/corefx/pull/23276 to release/2.0.0 resolves https://github.com/dotnet/corefx/issues/21427 +23448 area-System.Numerics Update documentation for `System.Numerics.Vector` to be more explicit. This was raised in the dotnet/corefx gitter channel. It is not currently clear from the documentation that the types exposed by the `System.Numerics.Vectors` assembly are not meant for general purpose `Vector` operations and that the types are heavily tied to the underlying hardware. The documentation for this could be greatly improved. Some types, such as `Vector` should have explicit (and readily visible) documentation that its element count is limited to `Vector.Count`, and that certain methods (such as the [Vector(T[])](https://msdn.microsoft.com/en-us/library/dn877694(v=vs.111).aspx) constructor) will only use the first `Vector.Count` elements and ignore the remaining. +23449 area-System.Diagnostics PrivateMemorySize64 Writing code in Dotcore 2.0 and trying to use ```Process.GetCurrentProcess().PrivateMemorySize64``` on Linux will yield 0 as a result where by Windows OS's return the expected results. Is this intended ? +23450 area-Infrastructure "Replace ""Initialize tools"" to only download docker files" "This way ""Initialize tools"" will be done later INSIDE docker, instead of OUTSIDE. This fixes issue: https://github.com/dotnet/core-eng/issues/1544 The inline script is: if command -v curl > /dev/null; then curl --retry 10 -sSL -o cleanup-docker.sh $(PB_VsoDockerFileDirUrl)cleanup-docker.sh curl --retry 10 -sSL -o init-docker.sh $(PB_VsoDockerFileDirUrl)init-docker.sh else wget $(PB_VsoDockerFileDirUrl)cleanup-docker.sh -q -O cleanup-docker.sh wget $(PB_VsoDockerFileDirUrl)init-docker.sh -q -O init-docker.sh fi" +23452 area-System.Runtime Fix wrong SkipOnTargetFramework in EnvironmentTests which were incorrectly not sipped in uapaot Contributes to: https://github.com/dotnet/corefx/issues/23432 Will close the issue whenever is ported to release/uwp6.0 cc: @danmosemsft @tijoytom +23453 area-System.Data Disable SqlClient tests that use TestTdsServer, since TestTdsServer has issues that can cause connection test timeouts and other failures. The TestTdsServer sometimes doesn't get setup in a timely manner, leading to test timeouts when trying to connect to it (even though the test server endpoint is on the same machine). There are also some other issues like errors during RemoveInvokeHandle.Dispose, or a one-off issue with encryption protocol negotiation while connecting to TestTdsServer. Timeout issues: https://github.com/dotnet/corefx/issues/23435 https://github.com/dotnet/corefx/issues/23123 https://github.com/dotnet/corefx/issues/20441 https://github.com/dotnet/corefx/issues/18604 https://github.com/dotnet/corefx/issues/17088 RemoveInvokeHandle.Dispose() issue: https://github.com/dotnet/corefx/issues/17925 An SSL/TLS protocol issue when connecting to TestTdsServer: https://github.com/dotnet/corefx/issues/23056 Also renamed SqlConnectionTest.cs to match its actual class name. +23455 area-System.Diagnostics DiagnosticSource Needs Documentation As @NickCraver points out in #18114, we need documentation that describes how DiagnosticSource is supposed to work from event production to consumption. Further, this documentation should describe from a user's perspective what is required and expected. +23458 area-System.IO Port change #23316 Ports change #23316 which gives brokering support to System.IO.FileSystem. Depends on port of #23454. Two commits- 1 for the cherry-pick from master, 1 for changes to align with the rel branch. cc: @joperezr +23460 area-System.ComponentModel Enable Validation of entire graph Please implement a way to validate an entire graph of object, so validating the root object will walk throughout the entire object graph and validate all subsequent children and their properties: ``` public class Company { [Required] public string Name { get; set; } public ICollection Contacts { get; set; } } public class Contact { [Required] public string Name { get; set; } public string Address { get; set; } } public class Address { [Required] public string Street { get; set; } } ``` Usage: Validator.TryValidateObject(company, ...); The validation should walk thru the whole graph and validate both `Name` properties and the `Street` property. +23461 area-System.ComponentModel Enable MinLengthAttribute and MaxLengthAttribute in more collection types. Please implement a `ValidationAttribute` that validates that a collection-typed property has any elements. Maybe expand the `RangeAttribute` functionality to work with collection? ``` public class Contact { [Range(3, 10)] public ICollection Phones { get; set; } } ``` +23463 area-System.Net IPEndPoint should have Parse/TryParse methods IPAddress has this, but not IPEndPoint. +23466 area-System.Collections [WIP] Add FastEquals extension method on EqualityComparer to improve perf /cc @jkotas @benaadams This PR adds a new `ComparerUtilities` class, which adds an extension method `FastEquals` to `IEqualityComparer`. `FastEquals` checks if the comparer is the default equality comparer and if `T` is a well-known type, and if so avoids a virtual method call to `Equals()`. Similarly, `ComparerUtilities.DefaultEquals()` replaces usages of `EC.Default.Equals()`. After hours of tinkering this morning, I finally got the code in `DefaultEquals` / `FastEquals` to inline without regressing the asm for any of the test cases. That is, for well-known types it folds into a single instruction, while for other types it generates the exact same code as before. So, aside from the increased JIT time, the perf is essentially free. So far, I've modified nearly all the types in System.Collections to use this API. I also plan on doing the following before un-WIPing this PR: - [ ] Having System.Collections.{Concurrent,Immutable} and System.Linq use the API - [ ] Making sure there is no asm regression for desktop-- [it doesn't seem like it optimizes the `typeof` trick in generic methods](https://github.com/dotnet/coreclr/issues/13514#issuecomment-323987735) - [ ] Publishing perf measurements +23467 area-Infrastructure Allow build to work behind corporate proxy servers Many corporate proxies require default user credentials to be sent. This PR allows the CLI to be downloaded and the build to run to completion in those environments +23468 area-System.Net Name not legible IsSuccessStatusCode in HttpResponseMessage I believe that the attribute IsSuccessStatusCode could be more intuitive. +23469 area-System.IO Exception in Directory.CreateDirectory when folder name ends with whitespace "I'm getting inconsistent results when calling Directory.CreateDirectory in a .NETCoreApp 1.0 and 2.0 compared to .NETFramework 4.6.2. If the folder ends with a whitespace but doesn't contain any whitespaces in the name: `Directory.CreateDirectory(""c:\work\CreateDirectory\folder \inner"") Directory.CreateDirectory(""c:\work\CreateDirectory\ folder \inner"")` will throw an exception: at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Directory.CreateDirectory(String path) at TrailingNETCore.Program.ValidateCreate(String path, String netFrameworkResult) in C:\source\TrailingWhiteSpace\TrailingWhiteSpace\TrailingNETCore\Program.cs:line 55 If the folder ends with a whitespace but contains whitespaces in the name: `Directory.CreateDirectory(""c:\work\CreateDirectory\fold er \inner"") Directory.CreateDirectory(""c:\work\CreateDirectory\ fol der \inner"")` will get different results than .NETFramework. I attached an example program with various use cases and a comparison against .NETFramework [CreateDirectory.zip](https://github.com/dotnet/corefx/files/1242387/CreateDirectory.zip) " +23470 area-System.Diagnostics The throw keyword shows the wrong thrown exception line "Using .NETCore2.0, Win10, it seems the `throw` keywor Using the `throw` keyword loose all the initial stacktrace information. You can workaround with `ExceptionDispatchInfo.Capture(ex).Throw();`, but this seems like a bug to me. ``` using System; namespace ConsoleApp3 { class Program { static void Main(string[] args) { try { DoStuff(); } catch(Exception ex) { Console.WriteLine(ex.StackTrace); } } private static void DoStuff() { try { throw new Exception(""Boom!""); } catch(Exception ex) { throw; } } } } ``` Actual output: (Exception line 28) ``` at ConsoleApp3.Program.DoStuff() in c:\users\nicolasdorier\documents\visual studio 2017\Projects\ConsoleApp3\ConsoleApp3\Program.cs:line 28 at ConsoleApp3.Program.Main(String[] args) in c:\users\nicolasdorier\documents\visual studio 2017\Projects\ConsoleApp3\ConsoleApp3\Program.cs:line 11 ``` Expected output: (Exception line 24) ``` at ConsoleApp3.Program.DoStuff() in c:\users\nicolasdorier\documents\visual studio 2017\Projects\ConsoleApp3\ConsoleApp3\Program.cs:line 24 at ConsoleApp3.Program.Main(String[] args) in c:\users\nicolasdorier\documents\visual studio 2017\Projects\ConsoleApp3\ConsoleApp3\Program.cs:line 11 ``` Workaround using `ExceptionDispatchInfo.Capture(ex).Throw();`: ``` using System; using System.Runtime.ExceptionServices; namespace ConsoleApp3 { class Program { static void Main(string[] args) { try { DoStuff(); } catch(Exception ex) { Console.WriteLine(ex.StackTrace); } } private static void DoStuff() { try { throw new Exception(""Boom!""); } catch(Exception ex) { ExceptionDispatchInfo.Capture(ex).Throw(); throw; } } } } ```" +23471 area-System.Memory Remove Span(T[], int) ctor Span currently has these ctors with two parameters: - `public Span(T[], int)` - `public Span(void*, int)` - `internal Span(ref T, int)` (currently internal, but potentially public in the future) The usability issue is that the int parameter doesn't always mean the same thing: for the `void*` and `ref` ctors, it means length, but for the `T[]` ctor, it means offset. This leads to subtle bugs when switching back and forth between inputs, as a length can accidentally become an offset, or vice versa. We should remove the `public Span(T[], int)` ctor to avoid the confusion. We will still have the `public Span(T[])` ctor for cases where you want a span over the whole array, and we will still have the `public Span(T[], int, int)` ctor for cases where you want to specify the array, an offset, and a length, and for cases where you only want to specify the array and an offset, you can use `new Span(arr).Slice(offset)` without ambiguity. +23472 area-Infrastructure Add FileApiInterop.dll to uap corefx private package Porting change #23454 to release/uwp6.0 branch. This will add FileApiInterop.dll to the uap corefx private package. cc: @danmosemsft @JeremyKuhne @weshaggard @joshfree +23473 area-System.IO "Some IO tests now fail with ""The directory is not empty""" When running the System.IO.FileSystem tests locally, I sporadically hit the following error on Windows 10: ``` System.IO.Tests.DirectoryInfo_Delete_bool.RecursiveDelete_DeepNesting [FAIL] System.IO.IOException : The directory is not empty Stack Trace: C:\Users\stoub\Source\Repos\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs(542,0): at Syst em.IO.Win32FileSystem.RemoveDirectoryRecursive(String fullPath, WIN32_FIND_DATA& findData, Boolean topLevel) C:\Users\stoub\Source\Repos\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs(439,0): at Syst em.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) C:\Users\stoub\Source\Repos\corefx\src\System.IO.FileSystem\src\System\IO\DirectoryInfo.cs(431,0): at System .IO.DirectoryInfo.Delete(Boolean recursive) c:\Users\stoub\Source\Repos\corefx\src\System.IO.FileSystem\tests\DirectoryInfo\Delete.cs(40,0): at System.I O.Tests.DirectoryInfo_Delete_bool.Delete(String path, Boolean recursive) c:\Users\stoub\Source\Repos\corefx\src\System.IO.FileSystem\tests\Directory\Delete.cs(277,0): at System.IO.T ests.Directory_Delete_str_bool.RecursiveDelete_DeepNesting() ``` +23474 area-Infrastructure Update dogfooding instructions to copy native assets. Native assets aren't being copied when following the dogfooding instructions because the Microsoft.NETCore.App package is being preferred over the local CoreFX package. /cc @dsplaisted skip ci please +23475 area-System.Runtime Port fix of incorrect SkipOnTargetFramework in EnvironmentTests Fixes: https://github.com/dotnet/corefx/issues/23432 cc: @danmosemsft +23477 area-Infrastructure [Release/2.0.0] Mark packages stable for 2.0.1 +23478 area-Infrastructure [release/1.1.0] Mark packages stable for 1.1.3 cc @ericstj @bartonjs +23479 area-Infrastructure [release/1.0.0] Mark packages as stable for 1.0.6 cc @ericstj @bartonjs +23480 area-System.Data Disable SqlClient tests that use TestTdsServer, since TestTdsServer has some issues that can cause connection test timeouts and other failures. (#23453) Porting change to release/uwp6.0. Shiproom approval pending. +23481 area-System.IO Add tests for FileStream span-based overrides cc: @JeremyKuhne, @ianhays Depends on https://github.com/dotnet/coreclr/pull/13522 Contributes to https://github.com/dotnet/corefx/issues/22386 +23482 area-System.Diagnostics "Remove invalid ""bold"" syntax in EventCounter docs" The use of `**` to try to call out a piece of preformatted code as bold doesn't actually work, because the preformatted code block overrides any Markdown syntax in the block. The EventCounter docs use this to try to call out a section of preformatted code as bold, and it causes confusion, as the user may think that the `**` sequence is needed (when it is actually invalid). Small nit that confused me for a few minutes when trying to use EventCounters. Wanted to fix it to avoid further confusion by anyone else looking at these docs :). +23483 area-Infrastructure Occasional hangs of threading tests on CI machines Per https://github.com/dotnet/corefx/pull/23462#issuecomment-324078900 there is speculation this is related to them only having 2 CPU. We should loop the tests on a 2 CPU machine and see whether they are just getting starved and never complete in a reasonable time. If that's the case we should either adjust the tests or the product. Was in Suse: https://mc.dot.net/#/user/dotnet-maestro-bot/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/02a6e4efff40d87d98e92a4c8a5a0c8fb5ad1c96/workItem/System.Threading.Tasks.Tests/wilogs +23484 area-Infrastructure Add macOS 10.13 to CI options @danmosemsft commented on [Tue Aug 08 2017](https://github.com/dotnet/core-eng/issues/1460) Helix runs now include 10.13 (high sierra). Can we please add this an optional leg to Jenkins for corefx? Ideally for release/1.x and 2.0 branches also. --- @maririos commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321660036) FYI @mmitche --- @mmitche commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321667673) This is a product work item. @danmosemsft ci.dot.net has 4 10.13 nodes. They can be transferred to ci3.dot.net if needed (for pipeline support), but you should be good to add the legs in corefx. --- @danmosemsft commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321668051) OK. @tarekgh maybe you could add this CI support as part of your 10.13 work? We will want to port it into all the release branches. --- @tarekgh commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321668810) I'll look at that next week. is there any doc how I can do it? sorry I didn't do that before. --- @mmitche commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321671970) @tarekgh Here is the info on pipelines: https://github.com/dotnet/dotnet-ci/blob/dev/pipelinesupport/docs/CI-PIPELINES.md The existing corefx jobs are declared here: https://github.com/dotnet/corefx/blob/master/buildpipeline/pipelinejobs.groovy. The OSX jobs there call the osx.groovy file here: https://github.com/dotnet/corefx/blob/master/buildpipeline/osx.groovy You probably just want to parameterize this script so that the target OS here: https://github.com/dotnet/corefx/blob/master/buildpipeline/osx.groovy#L11 is passed in as a parameter to the script, then alter pipelinejobs.groovy so that it differentiates between 10.12 and 10.13 and passes the appropriate OS name in there. The rest of the build workflow will stay the same. I'll ensure that there are available 10.13 machines connected to the right CI server tomorrow or early next week. @weshaggard Any idea why we're not using Helix for the testing for OSX in CI? I think you put together that testing. --- @danmosemsft commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321672560) BTW @Priya91 @wfurt @bartonjs do we yet know to our satisfcation that Apple supports building on one version of OSX and deploying on another? (As Windows generally does). For a while we were guessing that it might be causing segfaults, but that wasn't the case. It would be nice to know it's actually supported and we can continue to do all our building on 10.12. --- @mmitche commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321673034) #1483 for moving a couple machines over. --- @weshaggard commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321679172) >@weshaggard Any idea why we're not using Helix for the testing for OSX in CI? I think you put together that testing. We don't want to build on 10.13 just test so as long as we have the necessary Open helix queue then we can add them. --- @mmitche commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321687380) We're not submitting through Helix today though....any idea why? --- @weshaggard commented on [Thu Aug 10 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-321691249) >We're not submitting through Helix today though....any idea why? I don't think there is any reason beyond the queues weren't ready when I updated it last. We should definitely start doing it. --- @mmitche commented on [Tue Aug 22 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-324111208) This has been completed --- @tarekgh commented on [Tue Aug 22 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-324114406) Thanks @mmitche. so there is no more actions needed from our side. right? --- @mmitche commented on [Tue Aug 22 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-324121653) The machines are available in the CI pools, but the jobs will need to be reworked to build using them,. That is something for the product team to do. --- @tarekgh commented on [Tue Aug 22 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-324132304) Reopen the issue as we still need to do some work from our side. --- @mmitche commented on [Tue Aug 22 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-324134639) @tarekgh I think this should go into the corefx/coreclr repos then. --- @tarekgh commented on [Tue Aug 22 2017](https://github.com/dotnet/core-eng/issues/1460#issuecomment-324135248) I didn't notice we are not on corefx :-) I'll move it there. +23485 area-System.Net SSLStream suffers degraded performance on Unix when completing writes sync If you make the write side of SslStream at any point in the code swap contexts/threads and reschedule you get a ~4x speed increase from plaintext tests on Kestrel. After looking at the CPU use and stats it would point towards a lock contention/deadlock scenario. As the number of threads/connections goes up the overall CPU use goes down quickly. We have tried replacing the PinnableBuffer pool for an ArrayPool and that made a small difference (a few percent but not enough to worry about) I will perform some more investigation and see if I can at least narrow the issue. +23486 area-System.Runtime Set InvariantCulture Local explicitely and improve error logging Fixes https://github.com/dotnet/corefx/issues/21720 Thanks @tarekgh for your tip. I found out that a few test records had no Locale set. I expect the different blobs now to be fixed. @danmosemsft Improved logging. +23487 area-System.Reflection Consider including AssemblyDefinition/AssemblyReference.GetAssemblyName in netstandard1.1 build The APIs added by https://github.com/dotnet/corefx/pull/23396 are currently only available in netstandard2.0. In order to include the APIs in netstandard1.1 we would need to work around the lack of AssemblyName.CultureName setter, which is not available in netstandard1.1. We can use a light-up. +23488 area-Meta update owners +23489 area-System.Runtime Add Intel hardware intrinsic APIs to CoreFX This PR is the complete design of [API Proposal: Add Intel hardware intrinsic functions and namespace #22940](https://github.com/dotnet/corefx/issues/22940). For building with the current code base, `const` parameter modifiers and `[intrinsic]` is temporarily removed. @russellhadley @terrajobst @CarolEidt @mellinoe +23490 area-System.Xml fix improperly generated method tokens in XSL IlGen Fixes: https://github.com/dotnet/corefx/issues/23343 Current implementation of Call instruction used when compiling XSL in debug mode is invalid and original desktop implementation can't be used due to lack of `System.Reflection.Emit.ModuleBuilder.GetMethodToken(MethodInfo)`. I've noted that this API is used only because of the workaround put in place related to really old bug (I could not find it in the database but based on the comments it seems that some platforms were missing LCG at that time) so I've decided to remove the workaround since I believe LCG is available for more than 10 years already. +23492 area-System.Collections Wrap CurrentCulture assignments in RemoteInvokes for Issue #23328 Wrap CurrentCulture assignments in RemoteInvokes for Issue #23328 to fix failures +23493 area-System.IO Override Stream.CopyTo in Streams that already override CopyToAsync Fixes https://github.com/dotnet/corefx/issues/12860 +23496 area-System.Diagnostics MSBuild Exec task broken with .NET Core 2.1 "I'm running into an issue [updating the .NET CLI to use .NET Core 2.1](https://github.com/dotnet/cli/pull/7478). My best guess currently is that this is a regression in .NET Core, because it is surfacing when I update to .NET Core 2.1 but worked with .NET Core 2.0. ## Repro steps - On a non-Windows OS - With a version of the .NET CLI that uses .NET Core 2.1 - Run `dotnet msbuild` with the following project ```xml ``` ## Expected Build succeeds ## Actual Build fails with the following: > Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. > > /bin/sh: 1: export LANG=en_US.UTF-8; export LC_ALL=en_US.UTF-8; . /tmp/tmp365c3d61708c464b9358f5adcdafd024.exec.cmd: not found /mnt/c/git/dotnet-cli-linux/artifacts/testexec/testexec.proj(6,9): error MSB3073: The command ""echo Hello World"" exited with code 127. ## Details The MSBuild Exec task [creates a script file in the temporary folder](https://github.com/Microsoft/msbuild/blob/080ef976a428f6ff7bf53ca5dd4ee637b3fe949c/src/Tasks/Exec.cs#L216) in order to [set encodings](https://github.com/Microsoft/msbuild/blob/080ef976a428f6ff7bf53ca5dd4ee637b3fe949c/src/Tasks/Exec.cs#L608-L612) for the launched process. After the command is executed, the temporary file [is deleted](https://github.com/Microsoft/msbuild/blob/080ef976a428f6ff7bf53ca5dd4ee637b3fe949c/src/Tasks/Exec.cs#L340). It appears that with .NET Core 2.1, the temporary script file is not visible to the launched process, resulting in a ""not found"" error. ## Building a CLI with .NET Core 2.1 Currently there isn't a version of the CLI available with .NET Core 2.1. To build one yourself in order to repro the issue: - Clone https://github.com/dsplaisted/cli - Check out the `update-runtime-to-2.1` branch - Set the `CLIBUILD_SKIP_TESTS` environment variable to `true` - Run `build.sh` from the repo root - To use the newly built CLI, run `dotnet` from the `artifacts/linux-x64/stage2` folder" +23498 area-System.IO "Test: System.IO.Tests.WinRT_BrokeredFunctions/CreateDirectory failed with ""System.IO.IOException : The directory is not empty""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.WinRT_BrokeredFunctions/CreateDirectory` has failed. System.IO.IOException : The directory is not empty Stack Trace: at System.IO.Win32FileSystem.RemoveDirectoryInternal(String fullPath, Boolean topLevel) in E:\A\_work\274\s\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 567 at System.IO.Win32FileSystem.RemoveDirectory(String fullPath, Boolean recursive) in E:\A\_work\274\s\corefx\src\System.IO.FileSystem\src\System\IO\Win32FileSystem.cs:line 426 at System.IO.Directory.Delete(String path) in E:\A\_work\274\s\corefx\src\System.IO.FileSystem\src\System\IO\Directory.cs:line 565 at System.IO.Tests.WinRT_BrokeredFunctions.CreateDirectory() in E:\A\_work\274\s\corefx\src\System.IO.FileSystem\tests\WinRT_BrokeredFunctions.cs:line 47 Build : Master - 20170823.04 (UWP F5 Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170823.04/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.WinRT_BrokeredFunctions~2FCreateDirectory +23499 area-System.ComponentModel "Tests under: System.ComponentModel.Design.Tests.DesignerOptionServiceTests failed with ""Xunit.Sdk.TrueException"" & ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.Design.Tests.DesignerOptionServiceTests/DesignerOptionConverterGetPropertiesSupported_Invoke_ReturnsTrue` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.ComponentModel.Design.Tests.DesignerOptionServiceTests.DesignerOptionConverterGetPropertiesSupported_Invoke_ReturnsTrue() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2e at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2c at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x124 The test `System.ComponentModel.Design.Tests.DesignerOptionServiceTests/DesignerOptionConverterGetProperties_ValidValue_ReturnsExpected` has failed. Assert.Equal() Failure\r Expected: 2\r Actual: 0 Stack Trace: at System.ComponentModel.Design.Tests.DesignerOptionServiceTests.DesignerOptionConverterGetProperties_ValidValue_ReturnsExpected() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2e at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2c at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x124 The test `System.ComponentModel.Design.Tests.DesignerOptionServiceTests/DesignerOptionConverter_ConvertToString_ReturnsExpected` has failed. Assert.Equal() Failure\r ? (pos 0)\r Expected: (Collection)\r Actual: \r ? (pos 0) Stack Trace: at System.ComponentModel.Design.Tests.DesignerOptionServiceTests.DesignerOptionConverter_ConvertToString_ReturnsExpected() at Object _$ILCT$+$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2e at Object System.InvokeUtils+CalliIntrinsics.Call(IntPtr, Object, IntPtr, InvokeUtils+ArgSetupState&, Boolean) + 0x2c at Object System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean) + 0x124 Build : Master - 20170823.04 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-x86 - Debug - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170823.04/workItem/System.ComponentModel.TypeConverter.Tests +23500 area-System.Net UrlEncoding with TextEncoding "_From @cilerler on August 20, 2017 22:13_ I have a text that retrieved from the web and saved into a file with encoding 1252. Text has URL's in it with some emoji's. However unless I get the result from method1 below, I can not be able to retrieve those pages. Since we don't have System.Web in dotnet-core and no support from System.Net.WebUtility for TextEncoding, I wonder, if you may provide me a simple example how to achieve this via new UrlEncoder. ``` var text = ""hello-world 💟""; Encoding sourceEncoding = Encoding.GetEncoding(1252); // method 1 // hello-world+%f0%9f%92%9f // <----- result, I would like to get System.Web.HttpUtility.UrlEncode(text, sourceEncoding).Dump(); // method 2 // hello-world+%c3%b0%c5%b8%e2%80%99%c5%b8 System.Web.HttpUtility.UrlEncode(text).Dump(); // method 3 // hello-world+%C3%B0%C5%B8%E2%80%99%C5%B8 System.Net.WebUtility.UrlEncode(text).Dump(); // method 4 // hello-world%20%C3%B0%C5%B8%E2%80%99%C5%B8 System.Uri.EscapeUriString(text).Dump(); ``` Thanks in advance 🤗 _Copied from original issue: aspnet/HtmlAbstractions#46_" +23501 area-System.Linq System.Linq.Parallel.Tests failed Failed Configuration: OuterLoop_netcoreapp_ubuntu14.04_debug OuterLoop_netcoreapp_windows_nt_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu14.04_debug/149/ https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_windows_nt_debug/143/ D:\j\workspace\outerloop_net---dbe8fad8\Tools\tests.taergets(453,5): error: One or more tests failed while running tests from 'System.Linq.Parallel.Tests' please check D:\j\workspace\outerloop_net---dbe8fad8\bin/AnyOS.AnyCPU.Debug/System.Linq.Parallel.Tests/netcoreapp/testResults.xml for details! [D:\j\workspace\outerloop_net---dbe8fad8\src\System.Linq.Parallel\tests\System.Linq.Parallel.Tests.csproj] +23502 area-System.Net Where is System.Security.Cryptography.Xml? Apologies for a dumb question, but as far as I can see System.Security.Cryptography.Xml is a part of .net core 2.0 release. How comes it is not included in dependencies of .net core 2.0 project? 1. Installed .net Core 2.0 SDK 2. Installed .net Core 2.0 runtime 3. Created .net Core 2.0 console application in Visual Studio 2017 (15.3) System.Security.Cryptography.Xml is nowhere to be found. +23503 area-System.Data SqlClient Should Support localhost in Connection Strings on Linux "When using a connection string containing `Data Source=localhost` on linux (in a Docker container in my case) I get the following error: ``` System.Data.SqlClient.SqlException occurred HResult=0x80131904 Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) Source=Core .Net SqlClient Data Provider StackTrace: at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.PoolCreateRequest(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.QueueUserWorkItemCallbackDefaultContext.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() Inner Exception 1: AggregateException: One or more errors occurred. (This protocol version is not supported.) Inner Exception 2: NotSupportedException: This protocol version is not supported. ``` I believe `localhost` should be supported as it's a common scenario and to smooth out the platform inconsistencies. My understanding is that you must use an IP address on linux at the moment. I can't seem to get a working connection to the SQL Server installation on my local machine. My local SQL Server instance does not accept remote connections at the moment, I suspect this is why I cannot connect. I can however, point to a SQL Server public IP address that works. As a workaround, I'm thinking I could programmatically replace `localhost` with the required IP address but I haven't been able to figure out how to do this. Here is a general idea of what I've tried: ``` private static string GetConnectionString(string connectionString) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { var ipAddress = NetworkInterface .GetAllNetworkInterfaces() .Where(x => x.NetworkInterfaceType == NetworkInterfaceType.Ethernet && x.OperationalStatus == OperationalStatus.Up) .SelectMany(x => x.GetIPProperties().DnsAddresses) .FirstOrDefault(); if (ipAddress != null) { connectionString = connectionString.Replace(""localhost"", ipAddress.ToString()); } } return connectionString; } ```" +23504 area-System.Net WinHttpResponseStream.CopyToAsyncCore sporadically throws IOException "I have an self-hosted (kestrel) asp net web api site, based on net core. On application startup i am using single instance of `HttpClient` (with ""Connection: keep-alive"") to touch `/post` endpoint (with different payloads) of that site, and after that mark it as healthy (so called warm up). `/post` endpoint uses its own `HttpClient` to send dto, serialized as string, to third party endpoint. During warm up, instead of third party endpoint, i use same site endpoint, like `http://localhost:80/fake-third-party-response/`, where i return sample string that is expected from third party. And there comes an Issue - during integration tests (i am using nunit, inside test self hosted kestrel site is started), `WarmupService` produce errors, not always, but in about 20% cases test is failed. Errors are caught inside `/post` endpoint, when it tries to do: `PostAsync(new StringContent(someText, System.Text.Encoding.UTF8, ""text/xml"")` with ""Connection: close"" headers, using `HttpClient`. `HttpClient` in `/post` endpoint is created each time new, and disposed. `HttpResponseMessage` as a result of `PostAsync` call is also disposed. Test itself making about 50 calls to `/post` endpoint (so overall calls could be 100). Issue appears on Windows OS, i tried with netcoreapp1.1 and netcoreapp2.0, System.Net.Http 4.3.0 and 4.3.2. Stack trace: ```csharp System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: The read operation failed, see inner exception. ---> System.Net.Http.WinHttpException: The operation completed successfully --- End of inner exception stack trace --- at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__48.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() ```" +23505 area-Infrastructure Should we stop using reference assemblies on desktop? See issues https://github.com/dotnet/sdk/issues/1522 and https://github.com/dotnet/corefx/issues/23229. We're seeing multiple issues where tools in the .NET framework build pipeline attempt to load reference assemblies in an execution context (Assembly.Load, LoadFrom, LoadFile). This fails for assemblies that have the ReferenceAssemblyAttribute. Build tools should **never** attempt to load references for execution: they may be running on totally different frameworks / platforms / versions. The problem is that not all tools (especially those for desktop) follow this practice. Largely because before System.Reflection.Metadata we didn't provide a safe way for build tools to do the right thing. They had to use the COM metadata APIs, CCI, LMR, or Cecil. Given that landscape and our desire to work in as many places as possible, should we remove the ReferenceAssemblyAttribute from any assembly which would apply to desktop? /cc @nguerrera @weshaggard @jkotas +23506 area-System.Net Invalid results of the function GetAttributeFromHeader in System.Net.HttpListenerRequest "https://github.com/dotnet/corefx/blob/ff7f4ba7ab0a9f50a0e4c1d3a3195165afd96d8f/src/System.Net.HttpListener/src/System/Net/HttpListenerRequest.cs#L293 For example, for parameters headerValue = `""multipart/form-data; boundary=abc; charset=UTF-8""` (from Content-Type header) and attrName = `""boundary""` The result will be >""abc;"" instead >""abc""" +23507 area-System.IO Make DisableMediaInsertionPrompt to be private struct to match CoreLib +23512 area-Microsoft.CSharp Porting a fix for #21689 to release/2.0.0 release/2.0.0 port of #22117 (Fix bug in MS.CSharp handling non-generic classes nested in generic) Such types are still generic but don't have a tick in their name, which the name lookup expects all generic types' names to have. Handle this case correctly. Fixes #21689 +23513 area-Infrastructure Make netfx mean net471 This maps netfx to net471 and removes the netfx support package and corresponding configurations from all projects. In the cases of packages that still support netfx I only kept a live configuration in the package if that package had type-defs. Otherwise I just harvested the past assets. Fixes #23165 +23515 area-System.Collections Remove code under FEATURE_RANDOMIZED_STRING_HASHING from corefx IIRC `string` does randomized hashing by default in .NET Core so the collections don't need to be modified to use a randomized equality comparer. [This code](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/HashSet.cs#L1249-L1253) doesn't even compile. +23516 area-System.Runtime Add tests for floating point and overridden Equals bug fix As discussed with @jkotas https://github.com/dotnet/coreclr/pull/13164#issuecomment-322919479 I'll add tests for the bug fixing of https://github.com/dotnet/coreclr/issues/11452 . My plan is to add the tests but disable them. After the new coreclr bits included in corefx, create another PR to enable them. The tests should cover double/float number (0.0, -0.0 and NaNs) issues as well as overridden `Equals` issues. +23517 area-Infrastructure [xUnit] [ERROR] - No test reports found for the metric 'xUnit.Net' with the resolved pattern 'bin/**/testResults.xml'. Configuration error? [xUnit] [ERROR] - No test reports found for the metric 'xUnit.Net' with the resolved pattern 'bin/**/testResults.xml'. Configuration error?. Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/fedora24_debug/3681/consoleFull#126823694079494335-f7bd-47d0-8771-8661e00c2db2 Configuration: fedora24_debug +23518 area-System.Net APNs + HTTP/2 + HttpClient + ClientCertificate throws WinHttpException "I'm trying to sent message to APNs using HttpClient and p12 certificate. Unfortunatelly I'm getting `The server returned an invalid or unrecognized response` error on `SendAsync`. Here is Code Example: ``` csharp public async Task SendAsync(ApnsHttp2Notification notification) { var url = string.Format(""https://{0}:{1}/3/device/{2}"", _options.Host, _options.Port, notification.DeviceToken); var uri = new Uri(url); using (var certificate = SecurityHelperMethods.GetCertificateFromFile(_options.CertificateFileName, _options.CertificatePassword)) using (var httpHandler = new HttpClientHandler { SslProtocols = SslProtocols.Tls12 }) { httpHandler.ClientCertificates.Add(certificate); using (var httpClient = new HttpClient(httpHandler, true)) using (var request = new HttpRequestMessage(HttpMethod.Post, url)) { request.Content = new StringContent(""Test""); request.Version = new Version(2, 0); try { using (var httpResponseMessage = await httpClient.SendAsync(request)) { var responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); var result = $""status: {(int)httpResponseMessage.StatusCode} content: {responseContent}""; } } catch (Exception e) { throw; } } } } ``` Exception: ``` {System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: The write operation failed, see inner exception. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__44.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.WinHttpHandler.d__131.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.WinHttpHandler.d__105.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at APNs.ApnService.d__4.MoveNext() in D:\projects\ipl\src\Services\Notifiers\IPL.APNsNotifier.Worker\APNs\ApnService.cs:line 69} Data: {System.Collections.ListDictionaryInternal} HResult: -2146232800 HelpLink: null InnerException: {System.IO.IOException: The write operation failed, see inner exception. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__44.MoveNext()} Message: ""Error while copying content to a stream."" Source: ""System.Net.Http"" StackTrace: "" at System.Net.Http.HttpContent.d__44.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Net.Http.WinHttpHandler.d__131.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Net.Http.WinHttpHandler.d__105.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Sys tem.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()\r\n at System.Net.Http.HttpClient.d__58.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at APNs.ApnService.d__4.MoveNext() in ...\\ApnService.cs:line 69"" TargetSite: {Void MoveNext()} ``` Target Framework: netcoreapp2.0 OS: Windows 10 OS Version: 1703 OS Build: 15063.332" +23519 area-System.Runtime Add Scalar Intel hardware intrinsic functions "This proposal extends #22940 to additionally cover intrinsics for the `scalar` forms of the x86 hardware instructions. ## Rationale Currently, CoreFX implicitly emits various SSE/SSE2 instructions when performing operations on scalar floating-point types. However, there is currently no way to explicitly emit specific optimized sequences of code to best take advantage of the underlying hardware. For example, the `System.Math` and `System.MathF` APIs are currently implemented as FCALLs to the underlying C Runtime implementation of the corresponding method. The underlying C Runtime implementations are most frequently implemented as hand-optimized assembly or C/C++ intrinsics to ensure that they provide the best throughput possible and that they take advantage of newer instruction sets when available (`cos`/`cosf`, for example, frequently have one code path for SSE and one for FMA3). Due to these methods depending on the underlying C Runtime implementation: * We are at a significantly delayed cadence for getting bug fixes * We often have to add hacks to workaround these bugs as we find them, decreasing perf * The implementations between platforms and architectures often differ * This leads to perf differences: https://github.com/dotnet/coreclr/issues/9373 * This leads to input/output differences between Operating Systems (Windows, Linux, Mac, etc) * This leads to input/output differences between Platforms (x86, x64, ARM, etc) * Updating these methods requires modifying the runtime By providing scalar intrinsics for the Intel hardware functions it becomes much easier to implement these functions in managed code, which: * Means fewer workarounds as bugs can be fixed directly * Keeps perf is more consistent * Keeps input/output differences minimal or non-existing between operating systems * Helps keep input/output are minimal between platforms * Allows most bug fixes to be made independent of the runtime Furthermore, with the addition of #22940, it may become more pertinent to also have these scalar intrinsics to ensure that the codegen when intermixing scalar and vectorized operations remains ""optimal"" for the end-users customized/hand-optimized algorithms. ## Proposed API The current design in #22940 creates a class per instruction set and exposes methods such as `Vector128 Sse2.Sqrt(Vector128)` which corresponds to the `__m128d _mm_sqrt_pd(__m128d)` C/C++ intrinsic`. This would additionally extend the surface area to expose the scalar forms of all the instructions with the same name as the vector intrinsic, but with a `Scalar` postfix. This is required to differentiate between the vector and scalar APIs due to them taking the same types as their inputs. For example, we would expose: ```csharp public static class Sse2 { // __m128d _mm_add_sd(__m128d a, __m128d b); public static Vector128 AddScalar(Vector128 left, Vector128 right); // ... // No corresponding C/C++ intrinsic, used when upper should be taken from `value` public static Vector128 SqrtScalar(Vector128 value); // __m128d _mm_sqrt_sd(__m128d a, __m128d b) public static Vector128 SqrtScalar(Vector128 upper, Vector128 value); // ... } ``` ## Other Thoughts Most of the remaining sections (Intended Audience, Semantics and Usage, Implementation Roadmap, etc) are the same as in #22940 " +23520 area-System.Runtime Serialized Exception and AggregateException may not exchange successfully between CoreRT and CoreCLR `AggregateException` has a field `_innerExceptions` in CoreRT but `m_innerExceptions` in CoreCLR. It does not implement ISerializable so I think it will not exchange correctly. `Exception` does implement ISerializable and from eyeball it looks like the de/serialization will work although I notice CoreRT does not implement `ExceptionMethod` and `WatsonBuckets` and it does not set `RemoteStackTrace` even though CoreCLR needs that (it reads `StackTrace` but then nulls it out in `[OnDeserialized]`). Similarly `RemoteStackIndex`. +23523 area-System.Runtime Adding cross framework serialization and blob sanity check for serializable Exception types Relates to https://github.com/dotnet/corefx/issues/23520 Relates to https://github.com/dotnet/corert/pull/4377 This enables cross serialization and blob sanity checks for exception types. Focused on Desktop to Core interchangeability. Also removed the duplicated Clone method in favor of a more flexible one in Common. +23526 area-Microsoft.CSharp Fix duplicate types exception on WinRT interfaces Porting PR #23402 to release branch. Pending approval. Not ready for merge. +23527 area-Microsoft.CSharp Fix duplicate types exception on WinRT interfaces Porting PR #23402 to release branch. Pending approval. Not ready for merge. +23528 area-System.IO Add tests to validate we don't fall over enumerating files that just … …cross the legacy MAX_PATH barrier. As we do special logic on Windows to support long paths this is an important boundary to test. While these path lengths don't have special meaning outside of Windows, we'll always run them they should still pass . https://github.com/dotnet/cli/issues/7508#issuecomment-324742361 +23529 area-System.Data Fixed a bug where SqlDataReader.GetSchemaTable() would throw an error with UDT queries. When calling SqlDataReader.GetSchemaTable() for a UDT query, a PlatformNotSupported exception gets thrown. SqlClient in Core returns UDTs as binary types currently, so this scenario should succeed. Also moved some UDT tests to a dedicated UdtTest class. +23531 area-System.Runtime release/uwp6.0 - Serialiazation globalization fix Fixes failing tests on OSX10.12 and 10.13: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170824.01/workItem/System.Runtime.Serialization.Formatters.Tests Waiting for shiproom approval. +23532 area-System.Runtime release/2.0.0 - Serialization test fixes Re-enables disabled serialization tests for CompareInfo, CookieContainer and language agnostics types. cc @danmosemsft waiting for shiproom approval +23533 area-System.Net flaky Socket Connect tests "## History of failures Day | Build | OS | Error message -- | -- | -- | -- 8/9 | 20170809.02 | Win8.1 | Assert time out 8/9 | 20170809.02 | Win10 | Assert time out 8/10 | 20170810.01 | Win10 | Assert time out 8/10 | 20170810.02 | Win7 | Assert time out 8/12 | 20170812.01 | Win7 | Assert time out 8/14 | 20170814.02 | Win10 | Assert time out 8/15 | 20170815.02 | Win7 | Assert time out 8/17 | 20170817.01 | Ubuntu17.10 | Assert time out 8/18 | 20170818.02 | Win10 | Assert time out 8/19 | 20170819.02 | Win8.1 | Assert time out 8/19 | 20170819.02 | Win7 | Assert time out 8/20 | 20170820.01 | Win10 | Assert time out 8/21 | 20170821.01 | Win10 | Assert time out 8/21 | 20170821.03 | Win8.1 | Assert time out 8/22 | 20170822.02 | Win8.1 | Assert time out 8/22 | 20170822.03 | Win10 | Assert time out 8/23 | 20170823.02 | Win8.1 | Assert time out 8/22 | 20170823.01 | Win10 | Assert time out 8/23 | 20170823.02 | Win10 | Assert time out 8/23 | 20170823.05 | Win10 | Assert time out 8/23 | 20170823.06 | Win10 | Assert time out 8/24 | 20170824.01 | Win10 | Assert time out 8/24 | 20170824.03 | Win8.1 | Assert time out 8/27 | 20170827.02 | Win8.1 | Assert time out 8/31 | 20170831.01 | Win10 | Assert time out 9/8 | 20170908.01 | Win10 | Assert time out 9/8 | 20170908.02 | Win10 | Assert time out 9/11 | 20170911.01 | Win10 | Assert time out 9/12 | 20170912.01 | Win7 | Assert time out 9/15 | 20170915.01 | Win10 | Assert time out 9/16 | 20170916.01 | Win8.1 | Assert time out 11/21 | 20171121.02 | Win7 | Assert time out 11/21 | N/A | N/A | Assert turned into TimeoutException in https://github.com/dotnet/corefx/commit/779171fea3d9f0b25d4058e281ca05b2b6eec323#diff-018414b4fffa636f2e5e9ef6099c07b0 11/22 | 20171122.01 | Win7 | Timeout 10,000 11/22 | 20171122.03 | Win8.1 | Timeout 10,000 11/24 | 20171124.02 | Win10 | Timeout 10,000 11/24 | 20171124.02 | Win7 | Timeout 10,000 11/25 | 20171125.01 | Win7 | Timeout 10,000 11/25 | 20171125.01 | RedHat69 | Timeout 10,000 11/25 | 20171125.02 | RedHat69 | Timeout 10,000 11/25 | 20171125.02 | Win7 | Timeout 10,000 11/27 | 20171127.01 | Win7 | Timeout 10,000 11/27 | 20171127.02 | Win10 | Timeout 10,000 11/27 | 20171127.02 | Win8.1 | Timeout 10,000 11/27 | 20171127.06 | Win7 | Timeout 10,000 11/28 | 20171128.01 | Win7 | Timeout 10,000 11/28 | 20171128.01 | Win7 | Timeout 10,000 11/28 | 20171128.03 | Win8.1 | Timeout 10,000 11/28 | 20171128.05 | Win7 | Timeout 10,000 11/28 | 20171128.07 | Win10 | Timeout 10,000 # Original report These tests are often failing in CI with ""Timed out while waiting for connection"": System.Net.Sockets.Tests.ConnectSyncForceNonBlocking: Connect_MultipleIPAddresses_Success(listenAt: 127.0.0.1) Connect_MultipleIPAddresses_Success(listenAt: ::1) " +23534 area-System.Data DllNotfound exception sni.dll All I did was publish an asp.net 2.0 project up from 1.1. using SqlConnection fails on open. An unhandled exception was thrown by the application. (560e7d32) System.DllNotFoundException: Unable to load DLL 'sni.dll' +23535 area-System.Net flaky Sockets tests in System.Net.Sockets.Tests.DualModeConnectionlessReceiveFrom "I've seen this one fail with ""connection timed out"". Other similar tests may have a similar timeout issue. ReceiveFromV6BoundToSpecificV6_Success" +23536 area-Meta Update DotNetHost version reference This change updates the version of the DotNetHost and DotNetHostPolicy to a newer version that's available for RHEL 6 too. +23537 area-System.Net Handle hostnotfound errors on Unix. fixes #23441 #23231 +23539 area-System.Console Handle EAGAIN in Console.Write on Unix If stdout/stderr is configured as a non-blocking file descriptor, Console.Write{Line} may fail if the descriptor is full and would block. With this commit, we instead poll in that case waiting for the ability to write and then retry. (This should workaround the issue seen in https://github.com/Microsoft/msbuild/issues/2153, though it'd be good to understand why stdout is being set as O_NONBLOCK in that scenario, who's doing it, etc.) cc: @joperezr, @wfurt, @CESARDELATORRE +23542 area-System.Data Consider porting System.Data.OleDb to .NET Core and include it in Windows Compatibility Pack how do using oledb? https://docs.microsoft.com/zh-cn/dotnet/api/system.data.oledb?view=netcore-2.0 +23544 area-System.Net [API] Add per request headers override to HttpClient convenience methods "## Motivation Custom per request http headers importance are on the rise due to their role in authentication and authentication in newer api security models. The way to send custom per request headers with `HttpClient` is via `SendAsync` and adding them to the `HttpRequestMessage`. However that isn't very discoverable and is a big jump from using the convenience methods `GetAsync`, `PostAsync`, etc This can lead people to changing the `DefaultRequestHeaders` on the `HttpClient` instead: [SO](https://stackoverflow.com/a/35910012/1109918), [SO](https://stackoverflow.com/q/42156953/1109918), [SO](https://stackoverflow.com/q/10679214/1109918), etc Which is very dangerous if the `HttpClient` is used as a static; which is [also an official suggested practice](https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client) > **HttpClient** is intended to be instantiated once and re-used throughout the life of an application. Especially in server applications, creating a new **HttpClient** instance for every request will exhaust the number of sockets available under heavy loads. This will result in **SocketException** errors. And in popular blogs [""You're using HttpClient wrong and it is destabilizing your software""](https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/) > This is dramatic. If you have any kind of load at all you need to remember these two things: > > 1. Make your HttpClient static. > 2. Do not dispose of or wrap your HttpClient in a using unless you explicitly are looking for a particular behaviour (such as causing your services to fail). Both changing `DefaultRequestHeaders` per request and concurrently making requests from a shared `HttpClient` will end *very* badly. ## Proposal Add overloads to the convenience methods `GetAsync`, `PostAsync`, etc to allow for customer headers on a per request basis from a shared `HttpClient` ```csharp public partial class HttpClient { Task DeleteAsync(string requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task DeleteAsync(string requestUri, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task DeleteAsync(Uri requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task DeleteAsync(Uri requestUri, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task GetAsync(string requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetAsync(string requestUri, HttpRequestHeaders requestHeaders, HttpCompletionOption completionOption) { throw null; } Task GetAsync(string requestUri, HttpRequestHeaders requestHeaders, HttpCompletionOption completionOption, CancellationToken cancellationToken) { throw null; } Task GetAsync(string requestUri, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task GetAsync(Uri requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetAsync(Uri requestUri, HttpRequestHeaders requestHeaders, HttpCompletionOption completionOption) { throw null; } Task GetAsync(Uri requestUri, HttpRequestHeaders requestHeaders, HttpCompletionOption completionOption, CancellationToken cancellationToken) { throw null; } Task GetAsync(Uri requestUri, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task GetByteArrayAsync(string requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetByteArrayAsync(Uri requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetStreamAsync(string requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetStreamAsync(Uri requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetStringAsync(string requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task GetStringAsync(Uri requestUri, HttpRequestHeaders requestHeaders) { throw null; } Task PostAsync(string requestUri, HttpContent content, HttpRequestHeaders requestHeaders) { throw null; } Task PostAsync(string requestUri, HttpContent content, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task PostAsync(Uri requestUri, HttpContent content, HttpRequestHeaders requestHeaders) { throw null; } Task PostAsync(Uri requestUri, HttpContent content, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task PutAsync(string requestUri, HttpContent content, HttpRequestHeaders requestHeaders) { throw null; } Task PutAsync(string requestUri, HttpContent content, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } Task PutAsync(Uri requestUri, HttpContent content, HttpRequestHeaders requestHeaders) { throw null; } Task PutAsync(Uri requestUri, HttpContent content, HttpRequestHeaders requestHeaders, CancellationToken cancellationToken) { throw null; } } ``` ## Notes There are also suggestions [for going further for increased safety](https://twitter.com/xoofx/status/900367218806063104) > I would opt for taking headers at construction time and freeze them, or allow to pass frozen headers through a param or TLS...etc Perhaps freezing the `DefaultRequestHeaders` on first request; and throwing an `InvalidOperationException` if they are modified after the first request has been initiated? As modifying the default headers while requests are being initiated in parallel will lead to nonsensical outcome; and modifying them and submitting a request can't be an atomic operation. /cc @davidsh, @CIPop, @Priya91 @xoofx @khellang " +23545 area-System.Data Failed to load sni.dll "Posted project here: https://github.com/foxjazz/gadgetWebApi.git Created asp.net 2.0 core app with a controller that opens a connection sqlConnection. when this happens error is here but only on a 2008 r2 server the app is published to. The app runs fine on developer machine. but does not publish correctly and even if code is copied, still failes on 2008R2 server. [ERR] Connection id """"0HL7B69PSCNQ2"""", Request id """"0HL7B69PSCNQ2:00000001"""": An unhandled exception was thrown by the application. (560e7d32) System.DllNotFoundException: Unable to load DLL 'sni.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Data.SqlClient.SNINativeMethodWrapper.UnmanagedIsTokenRestricted(IntPtr token, Boolean& isRestricted) at System.Data.Win32NativeMethods.IsTokenRestrictedWrapper(IntPtr token)" +23546 area-System.Runtime "Test: System.Runtime.InteropServices.MarshalTests/ValidateExceptionForHRAPI failed with ""System.Exception""" Opened on behalf of @Jiayili1 The test `System.Runtime.InteropServices.MarshalTests/ValidateExceptionForHRAPI` has failed. System.Exception : Exception from HRESULT: 0x80131D0B Stack Trace: at System.Runtime.InteropServices.MarshalTests.ValidateExceptionForHRAPI() in E:\A\_work\390\s\corefx\src\System.Runtime.InteropServices\tests\System\Runtime\InteropServices\MarshalTests.cs:line 264 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170825.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170825.01/workItem/System.Runtime.InteropServices.Tests/analysis/xunit/System.Runtime.InteropServices.MarshalTests~2FValidateExceptionForHRAPI +23547 area-System.Runtime "Tests under: System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests failed with ""System.NullReferenceException""" Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests/RoundtripManyObjectsInOneStream` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.d__19.MoveNext() in E:\A\_work\390\s\corefx\src\System.Runtime.Serialization.Formatters\tests\BinaryFormatterTestData.cs:line 104 at System.Collections.Generic.LargeArrayBuilder$1.AddRange(IEnumerable$1<__Canon> items) in E:\A\_work\390\s\corefx\src\Common\src\System\Collections\Generic\LargeArrayBuilder.cs:line 142 at System.Collections.Generic.EnumerableHelpers.ToArray(IEnumerable$1<__Canon> source) in E:\A\_work\390\s\corefx\src\Common\src\System\Collections\Generic\EnumerableHelpers.cs:line 84 at System.Linq.Enumerable.ToArray(IEnumerable$1<__Canon> source) in E:\A\_work\390\s\corefx\src\System.Linq\src\System\Linq\ToCollection.cs:line 18 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.SerializableObjects_MemberData() in E:\A\_work\390\s\corefx\src\System.Runtime.Serialization.Formatters\tests\BinaryFormatterTestData.cs:line 38 at System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests.RoundtripManyObjectsInOneStream() in E:\A\_work\390\s\corefx\src\System.Runtime.Serialization.Formatters\tests\BinaryFormatterTests.cs:line 136 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170825.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170825.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests~2FRoundtripManyObjectsInOneStream +23549 area-System.Security "SSL fails on linux if ""~/.dotnet"" directory unavailable" "Using SSL fails with ""Access to the path '/.dotnet/corefx/cryptography/x509stores/ca' is denied."" if .dotnet dir cannot be created. We're running a dotnet app as a phony user with no home direcotory of its own." +23551 area-Meta NETSTANDARD2_0 not support in .net framework project? ![qq 20170825220515](https://user-images.githubusercontent.com/5651857/29717447-c6b74b64-89e1-11e7-971a-865577006101.png) Why the code can't reach ? I use ASP.NET Core in .NET Framework 4.6.1. +23552 area-System.Reflection Reenable tests that are now working on ILC +23553 area-System.Diagnostics Make EventCounter test more robust It seems that Timer events may not fire promptly. Since EventCounters rely on timers to periodically send callbacks, then EventCounters also are not prompt. The tests bascially set the EventCounters to fire every 100 msec and expect at least 2 timer callbacks in 700 msec, which is pretty generous. However we have a case where this fails (we only got 1). Rather than simply make the time bigger (it is already very generous), I have created another use of Timer which simply counts how many 100msec ticks go off. If THIS timer does not register enough ticks, then we don't require EventCounter to do so either. This should make the test robust. @brianrob @Jiayili1 +23554 area-System.IO Conditionally run namedPipes tests in uap if windows version contains fix Cc @danmosemsft @joshfree @safern Adding tests back conditionally for new Windows version. This doesn't close the related issue yet, because there are two more tests still failing (pingpong_async and PingPong_sync). I'll continue investigating those to see why did we get that regression. +23555 area-System.Net Avoid byte[] allocations for IPAddress in System.Net.Sockets Use the new span-based overloads to avoid byte[] allocations when constructing IPAddresses in System.Net.Sockets. cc: @geoffkizer, @Priya91, @davidsh, @cipop +23556 area-System.IO UWP brokered locations do not work with FileStream in Release Brokered locations are folders that require capabilities to access- such as Pictures or Music. We have consumed FileApiInterop.dll from Windows to provide brokered functionality for CoreFX and CoreCLR. ProjectN still needs to be updated. cc: @safern, @joshfree, @joperezr, @danmosemsft This issue subsumes the prior issues #21025, #16422, and #15284. +23557 area-System.IO Don't use FromApp apis in UAP @safern will amend this PR with the package changes cc: @joshfree, @davidwrighton, @botaberg, @zamont, @nattress, @danmosemsft +23558 area-System.Memory Remove Span(T[],int) ctor from System.Runtime https://github.com/dotnet/corefx/pull/23530 removed the {ReadOnly}Span(T[],int) ctor from the System.Memory ref, but it missed removing it from the System.Runtime ref. corefx will fail to build against the latest coreclr without those being removed, too. cc: @ahsonkhan, @jkotas +23559 area-Infrastructure Update build tools Update to the latest buildtools and deal with compiler breaking changes. This is splitting out the buildtools update portion from https://github.com/dotnet/corefx/pull/23513. +23560 area-Serialization Clean up or pragma disable warnings 0169, 0414, and 0649 in Microsoft.XmlSerializer.Generator.csproj See https://github.com/dotnet/corefx/commit/84c6a81f7d1343a038850c6aa6286bd50f210a29#diff-47a9f2bd971e727d7993cdfad3d33f58R13 The new build of roslyn started catching unused fields. Microsoft.XmlSerializer.Generator.csproj had too many for me to fix. Please remove the warnings and either fix these by deleting the unused fields, or pragma disable and add a comment about how they are used if accessed through reflection or kept for serialization (for example). +23561 area-System.Xml Clean up or pragma disable warnings 0169, 0414, and 0649 in System.Private.Xml.csproj See https://github.com/dotnet/corefx/commit/84c6a81f7d1343a038850c6aa6286bd50f210a29#diff-f942094b67f3b93600fc4729053f8bccR9 The new build of roslyn started catching unused fields. System.Private.Xml.csproj had too many for me to fix. Please remove the warnings and either fix these by deleting the unused fields, or pragma disable and add a comment about how they are used if accessed through reflection or kept for serialization (for example). +23562 area-System.Drawing Remove some assertions from AssertDefaultPageSettings in PrintDocumentTests.cs. After some system update (or maybe some other system configuration change), these assertions started to fail for me on my machine. They seem to be system-dependent, and not some sort of global default, so I've just removed them. @KostaVlev +23566 area-System.IO Port rollback of System.IO DCR from release branch to master cc: @danmosemsft @joshfree +23568 area-Infrastructure /p:XunitOptions build option does not work properly on Unix "Run msbuild with a quoted /p:XunitOptions parameter on Unix, and it will fail because it's not properly handling the quoted parameter: ``` ../../../Tools/msbuild.sh /t:RebuildAndTest /p:Outerloop=true ""/p:XunitOptions=-showProgress -parallel none"" Microsoft (R) Build Engine version 15.1.523.56541 Copyright (C) Microsoft Corporation. All rights reserved. MSBUILD : error MSB1001: Unknown switch. Switch: -parallel ``` This works on Windows. I believe @wfurt knows how to fix this. " +23570 area-Meta Maintain release notes for corefx NuGet packages With corefx, it's great that development happens in the open and that pull requests are accepted. However, it is hard to know when various features or fixes actually make it out because the packages on NuGet.org do not specify release notes. For example, System.Collections.Immutable links it's release notes as https://github.com/dotnet/core/blob/master/release-notes/1.1/1.1.0-preview1.md, which isn't very helpful. It would be great if each package linked to a clear release notes page with a bulleted list of fixes and features linked to issues. A good example of a release notes page is https://github.com/JamesNK/Newtonsoft.Json/releases. +23572 area-System.Net Remove pinnable buffer from SslStream In testing underload and with different threading and programming models that the Pinnable buffer is either not percievably faster or significantly slower than just using the shared array pool. By removing this we remove a significant amount of code from this class and pave the way for other refactors. In the current state I see a small performance bump in SslStream underload on Unix on a NUMA based system. Maybe if he could be so kind @benaadams or someone with windows benchmarking could confirm the same on Windows. I see from 149k -> 160k over a number of test runs, it's just outside the margin of error but I think it's a low risk change that reduces code complexity and moves to the common ArrayPool that is heavily tested. +23574 area-System.Net HttpUtility.ParseQueryString incorrect if first item's name begins with a question mark "If a query-string's first name-value pair begins with a question mark then the initial question mark is stripped twice, so the name in the parsed collection is incorrect. E.g. with `??name=value&x=y` the result is a collection where `[""name""] == ""value""` while if it isn't the first element, as in `?x=y&?name=value` then it has the correct result of `[""?name""] == ""value""`" +23577 area-System.Drawing System.Drawing: Consolidate Clip-related code in Graphics - Move common Clip-related code from Graphics.Unix and Graphics.Windows to Graphics - Move P/Invoke methods to GdiplusNative +23578 area-System.Collections Make a new interface ICountable "### Description I often bump into scenarios where I have to evaluate an `IEnumerable` that might be either `ICollection`, `ICollection`, `IEnumerable` or `IEnumerable`, to get their size if available, so to avoid iterating on them to count them. The thing with `ICollection`, is that it doesn't inherit from `ICollection`, and there are types that inherit from `ICollection` but not from `ICollection` (for instance `HashSet`). Additionally, `ICollection` isn't co-variant, meaning not every `ICollection` is an `ICollection`, like `IEnumerable` is. I'm not arguing about this design, which is a good thing to avoid confusion and mis-adding of types. ### Motives The thing I do find annoying here, and I bump into it a lot, is the `Count` property, which is common to `ICollection` and `ICollection` and `IReadOnlyCollection`, but these interfaces don't overlap each other. Obtain a value from a generic type when the type argument is unknown at compile time is only possible with reflection. So in order to get the known size of a collection you'd have to do the following (see discussion [here](https://github.com/dotnet/corefx/pull/23664#discussion_r136200693)). And with the branching of the `TypeInfo` class, this gets even worse: ```c# //gets count if known int? GetCountIfKnown(IEnumerable collection) { if(collection is ICollection collection) return collection.Count; else { Type genericCol = value.GetType().GetTypeInfo().ImplementedInterfaces.Select(t => t.GetTypeInfo()).FirstOrDefault(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ICollection<>)); if (genericCol != null) retun (int)genericCol.GetTypeInfo().GetProperty(""Count"").GetValue(value); } return null; } ``` As pointed out later in [comments](https://github.com/dotnet/corefx/issues/23578#issuecomment-325664702) by @NightOwl888, the `IReadOnlyCollection` interface also exposes the `Count` property, but the reasons it doesn't address my issue is: - It's generic, so when the type is unknown at compile time, we can only evaluate it using reflection - `ICollection` doesn't inherit from it. - Not all collections with known size inherit from it There are many use cases of non-generic collections I bump into, the real reason we need non-generic support, is not because their not generic, but rather because their generic argument may not be known at runtime. I can't remember all of the scenarios I've encountered this demand as they are many, but I'll name a few. - When developing general tools (i.e. XAML converters) that are supposed to eat a wide variety of value types and work differently when the value is a collection. - We need to store a collection of `ICollection`s of a variety of types. When enumerating the main collection, the count of the items can only be achieved by acquiring the collection type with reflection. ### Solution My suggestion is then, to introduce a new interface `ICountable` (or `IReadOnlyCollection` - non generic) that its contract determines that a collection has a `Count` property and exposed the collection size regardless of its item type. This interface should be implemented by (please comment if you're aware of others): - `ICollection` - `ICollection` - `IReadOnlyCollection` The new interface should have one sole task: expose a known size of a collection via a `Count` property, with disregard to the collection type (`T`), editability (`ICollection` vs `IReadOnlyCollection`), or other features. ```c# int? GetCountIfKnown(IEnumerable enumerable) => (enumerable as IReadOnlyCollection)?.Count; ``` ### Concequences - Implicit implementations of `ICollection`, `ICollection` and `IReadOnlyCollection` will have to change the pattern to `ICountable` (or if we call it `IReadOnlyCollection` or anything else). - Implementations that call the property `Count` on `ICollection` (or the others) as ""declared"", will have to switch to either calling the runtime property, or call it on `ICountable` etc. Related: https://github.com/dotnet/corefx/issues/23700." +23579 area-System.Net Netcore2.0 Unix Socket Tcp Send Big Buffer Raise Error Message too long https://github.com/caozhiyuan/DotNetty/tree/dev/examples/SocketAsyncClient https://github.com/caozhiyuan/DotNetty/tree/dev/examples/SocketAsyncServer when nioBuffers total byte size big than 344064,will raise 10040 MessageSize Error(Message Too Long) ```c# SocketError errorCode; long localWrittenBytes = this.clientSocket.Send(nioBuffers, SocketFlags.None, out errorCode); if (errorCode != SocketError.Success && errorCode != SocketError.WouldBlock) { throw new SocketException((int)errorCode); } ``` +23580 area-System.ComponentModel Tests for System.ComponentModel.DataAnnotations * Check ValidationException throws PSNE on .NET Core serialisation. * Test multiple validation errors can be returned from same call. +23581 area-System.ComponentModel Some refactoring in System.ComponentModel.DataAnnotations * Use null propagation where appropriate. * Fix parameter reference in XML documentation. * Remove unnecessary `this.` qualifications. * Properties to auto-properties where possible. * Auto-properties get-only where appropriate. * Use `GetValueOrDefault` rather than `Value` when known that `HasValue` Avoids second check. * Make field `readonly`. * Remove unused parameter on private method. * Remove `CompareAttribute.IsPublic` Unused and private. * Don't check to avoid redundant write to `LocalizableString.Value` `LocalizableString.Value` protects itself from redundant writes with its current value, so checking from the outside is wasteful. * Use expression-bodied properties and methods throughout. * Remove unused `using`s. +23582 area-System.Net HttpUtility.ParseQueryString does HTML decoding first on CoreFX, but not on NetFX "The version of `HttpUtility.ParseQueryString` in CoreFX does HTML decoding first, differing from desktop: ```C# HttpUtility.ParseQueryString(""name=value&name2=value2"").ToString() // name=value&%3bname2=value2 on Desktop // name=value&name2=value2 on CoreFX HttpUtility.ParseQueryString(""?name=valué"")[""name""] // valu on Desktop // valué on CoreFX ``` #23573 is a knock-on effect of this. (Closing as such). #23574 is an indirect knock-on effect in that ? is stripped both before and after HTML decoding that shouldn't be done at all." +23583 area-System.Linq Enumerable.Generate ### Description `Enumerable.Repeat`, when used with a reference type, will generate an iteration of the specified count with reference sharing the same object. For example `Enumerable.Repeat(new Contact(), 10) will generate a single `Contact` and an iterator of 10 references to that single object. My suggestion is hereby to please introduce a new method in the `Enumerable` class, that generates a number of instances according to the desired one. ### Suggestion Please implement one of the following options: - Introduce a new method in the `Enumerable` class that generates a separate new reference type for each iteration - Add a new overload with a flag that specifies whether to activate a new one for each iteration or reuse them - Add a new overload that takes an `Action` that uses as an activation action, and is called upon each iteration - One of the above plus an `Action` where `int` is the current index. What I'm looking for is simply a shorthand for: Enumerable.Range(0, count).Select(i => new Contact { Id = i }); Looks like there is a demand for it, see [this](https://stackoverflow.com/questions/17865166/creating-a-list-filled-with-new-instances-of-an-object) and [this](https://stackoverflow.com/questions/13553022/how-can-i-use-linq-to-initialize-an-array-of-repeated-elements)) Additionally, as a syntactic sugar, please make an overload of `Enumerable.Repeat` without the [first argument](https://source.dot.net/#System.Linq/System/Linq/Repeat.cs,12), (instead, perhaps and the `where TResult: new()` constraint), and when called activate a new element of TResult without having to specify it. Related: #5078, #13909. +23584 area-System.Runtime PlatformNotSupportedException when attempting to deserialize exceptions not deriving directly from System.Exception "I suspect this is related to #19119, but it is unclear what ""partial serialization support"" means entirely. It seems like all exception types should be serializable/deserializable given the fact they are the most likely to cross application boundaries, but that doesn't seem to be the case. We have a test to verify exceptions can both serialize and deserialize. When adding support for .NET Standard 2.0, we have put the FEATURE_SERIALIZABLE compilation symbol back in, meaning these tests should now run (was that a mistake?). Here is what the test looks like: ```c# #if FEATURE_SERIALIZABLE using Lucene.Net.Attributes; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; namespace Lucene.Net.Support { /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the ""License""); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an ""AS IS"" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ [TestFixture] public class TestExceptionSerialization : ExceptionSerializationTestBase { public static IEnumerable ExceptionTestData { get { var exceptionTypes = typeof(Lucene.Net.QueryParsers.Classic.ICharStream).Assembly.GetTypes().Where(t => typeof(Exception).IsAssignableFrom(t)).Cast(); // If the assembly has no exceptions, just provide Exception so the test will pass if (!exceptionTypes.Any()) { return new Type[] { typeof(Exception) }; } return exceptionTypes; } } [Test, LuceneNetSpecific] public void AllExceptionsInLuceneNamespaceCanSerialize([ValueSource(""ExceptionTestData"")]Type luceneException) { var instance = TryInstantiate(luceneException); Assert.That(TypeCanSerialize(instance), string.Format(""Unable to serialize {0}"", luceneException.FullName)); } } } #endif ``` ```c# #if FEATURE_SERIALIZABLE using Lucene.Net.Util; using NUnit.Framework; using System; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace Lucene.Net.Support { /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the ""License""); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an ""AS IS"" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public abstract class ExceptionSerializationTestBase : LuceneTestCase { protected static bool TypeCanSerialize(T exception) { T clone; try { var binaryFormatter = new BinaryFormatter(); using (var serializationStream = new MemoryStream()) { binaryFormatter.Serialize(serializationStream, exception); serializationStream.Seek(0, SeekOrigin.Begin); clone = (T)binaryFormatter.Deserialize(serializationStream); } } #pragma warning disable 168 catch (SerializationException ex) #pragma warning restore 168 { return false; } return true; } protected static object TryInstantiate(Type type) { object instance = null; BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance; try { instance = Activator.CreateInstance(type, flags, null, new object[] { ""A message"" }, CultureInfo.InvariantCulture); } catch (MissingMethodException) { try { instance = Activator.CreateInstance(type, flags, null, null, CultureInfo.InvariantCulture); } catch (MissingMethodException) { Assert.Fail(""Can't instantiate type {0}, it's missing the necessary constructors."", type.FullName); } } return instance; } } } #endif ``` It passes for all tests that inherit `System.Exception` directly. However, it fails for exceptions that inherit `System.IO.IOException` and `System.NotSupportedException` on the line `clone = (T)binaryFormatter.Deserialize(serializationStream);`. ### Example Exception that Fails to Deserialize ```c# #if FEATURE_SERIALIZABLE [Serializable] #endif public class TooManyBasicQueries : System.IO.IOException { public TooManyBasicQueries(int maxBasicQueries) : this(""Exceeded maximum of "" + maxBasicQueries + "" basic queries."") { } // For testing public TooManyBasicQueries(string message) : base(message) { } #if FEATURE_SERIALIZABLE /// /// Initializes a new instance of this class with serialized data. /// /// The that holds the serialized object data about the exception being thrown. /// The that contains contextual information about the source or destination. public TooManyBasicQueries(SerializationInfo info, StreamingContext context) : base(info, context) { } #endif ``` ``` Test Name: AllExceptionsInLuceneNamespaceCanSerialize(Lucene.Net.QueryParsers.Surround.Query.TooManyBasicQueries) Test FullName: Lucene.Net.Support.TestExceptionSerialization.AllExceptionsInLuceneNamespaceCanSerialize(Lucene.Net.QueryParsers.Surround.Query.TooManyBasicQueries) Test Source: F:\Projects\lucenenet\src\Lucene.Net.Tests.QueryParser\Support\TestExceptionSerialization.cs : line 49 Test Outcome: Failed Test Duration: 0:00:00.032 Result StackTrace: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeConstructorInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context) at System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) at System.Runtime.Serialization.ObjectManager.DoFixups() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(BinaryParser serParser, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, Boolean check) at Lucene.Net.Support.ExceptionSerializationTestBase.TypeCanSerialize[T](T exception) in F:\Projects\lucenenet\src\Lucene.Net.TestFramework\Support\ExceptionSerializationTestBase.cs:line 42 at Lucene.Net.Support.TestExceptionSerialization.AllExceptionsInLuceneNamespaceCanSerialize(Type luceneException) in F:\Projects\lucenenet\src\Lucene.Net.Tests.QueryParser\Support\TestExceptionSerialization.cs:line 49 --PlatformNotSupportedException at System.SystemException..ctor(SerializationInfo info, StreamingContext context) at System.IO.IOException..ctor(SerializationInfo info, StreamingContext context) at Lucene.Net.QueryParsers.Surround.Query.TooManyBasicQueries..ctor(SerializationInfo info, StreamingContext context) in F:\Projects\lucenenet\src\Lucene.Net.QueryParser\Surround\Query\TooManyBasicQueries.cs:line 55 Result Message: System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. ----> System.PlatformNotSupportedException : Operation is not supported on this platform. Result StandardOutput: Culture: rof Time Zone: (UTC+04:30) Kabul Default Codec: Lucene3x (Lucene.Net.Codecs.Lucene3x.PreFlexRWCodec) Default Similarity: RandomSimilarityProvider(queryNorm=False,coord=no): ``` Note that if the above exception is changed to inherit `System.Exception` instead of `System.IO.IOException` the test will pass. However, we can't exactly work around this by inheriting `System.Exception` since we are porting from Java and the application relies heavily on catching the right exception types to go down the correct execution path (at least not without putting in a catch block for every single one of our custom exception types that inherits `System.IO.IOException`, etc.) What I am wondering is whether or not this is a bug, whether or not we shouldn't be relying on serialization yet in .NET Standard 2.0, and if this was intentional why such an odd choice to allow serialization on some exceptions but not others was made? ### Platform Microsoft Windows [Version 10.0.15063] (c) 2017 Microsoft Corporation. All rights reserved. .NET Command Line Tools (2.0.0) Product Information: Version: 2.0.0 Commit SHA-1 hash: cdcd1928c9 Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.0\ Microsoft .NET Core Shared Framework Host Version : 2.0.0 Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d " +23585 area-System.Text System.Text.Encodings.Web.Tests ForbidRange test failed on macOS in CI https://ci3.dot.net/job/dotnet_corefx/job/master/job/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/2743/consoleText ``` Microsoft.Framework.WebEncoders.TextEncoderSettingsTests.ForbidRange [FAIL] Assert.Equal() Failure Expected: True Actual: False Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Text.Encodings.Web/tests/TextEncoderSettingsTests.cs(277,0): at Microsoft.Framework.WebEncoders.TextEncoderSettingsTests.ForbidRange() ``` +23586 area-System.Numerics Several numeric operator tests failed on macOS in CI https://ci3.dot.net/job/dotnet_corefx/job/master/job/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/2743/consoleText ``` System.Numerics.Tests.ToStringTest.RunRegionSpecificStandardFormatToStringTests [FAIL] Unexpected Exception:Xunit.Sdk.TrueException: Assert.True() Failure Expected: True Actual: False at Xunit.Assert.True(Nullable`1 condition, String userMessage) at System.Numerics.Tests.ToStringTest.VerifyToString(String test, String format, IFormatProvider provider, Boolean expectError, String expectedResult) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/BigIntegerToStringTests.cs:line 1439 Expected: True Actual: False Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/BigIntegerToStringTests.cs(1448,0): at System.Numerics.Tests.ToStringTest.VerifyToString(String test, String format, IFormatProvider provider, Boolean expectError, String expectedResult) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/BigIntegerToStringTests.cs(1397,0): at System.Numerics.Tests.ToStringTest.VerifyToString(String test, String format, String expectedResult) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/BigIntegerToStringTests.cs(478,0): at System.Numerics.Tests.ToStringTest.RunStandardFormatToStringTests(Random random, String format, String negativeSign, Int32 precision, StringFormatter formatter) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/BigIntegerToStringTests.cs(253,0): at System.Numerics.Tests.ToStringTest.RunRegionSpecificStandardFormatToStringTests() System.Numerics.Tests.op_orTest.RunOrTests [FAIL] Assert.Equal() Failure ↓ (pos 240) Expected: ···6007339264329025061429377265939311317315953000824212942620456··· Actual: ···6007339264329025061465590802459251221408169200421330713897122··· ↑ (pos 240) Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/op_or.cs(126,0): at System.Numerics.Tests.op_orTest.VerifyOrString(String opstring) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/op_or.cs(25,0): at System.Numerics.Tests.op_orTest.RunOrTests() System.Numerics.Tests.op_rightshiftTest.RunRightShiftTests [FAIL] Assert.Equal() Failure ↓ (pos 2632) Expected: ···5000711332234539142747417137995476834885943827938409825669015··· Actual: ···5000711332234539142785686200374855839256444202561770627110816··· ↑ (pos 2632) Stack Trace: /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/op_rightshift.cs(167,0): at System.Numerics.Tests.op_rightshiftTest.VerifyRightShiftString(String opstring) /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Runtime.Numerics/tests/BigInteger/op_rightshift.cs(118,0): at System.Numerics.Tests.op_rightshiftTest.RunRightShiftTests() ``` +23587 area-System.Numerics Math.Sin(double) returning incorrect result on .NET Standard 2.0 I have put together a test case as proof. It passes on .NET Framework 4.5.1 and .NET Standard 1.5 (with a .NET Core 1.0 client), but fails on .NET Standard 2.0 (with a .NET Core 2.0 client). The test requires NUnit (I am using 3.7.1), but I have ruled out NUnit as the cause: ```c# public static readonly double DEGREES_TO_RADIANS = Math.PI / 180; public static readonly double RADIANS_TO_DEGREES = 1 / DEGREES_TO_RADIANS; [Test] public void CalcDistanceIncorrectOnNetStandard2_0() { double lat2 = 1.5707963267948966; double dist1 = DistHaversineRAD(0, 0, lat2, 0); double dist2 = ToDegrees(dist1); Assert.AreEqual(90, dist2, 0); } public static double DistHaversineRAD(double lat1, double lon1, double lat2, double lon2) { // Check for same position if (lat1 == lat2 && lon1 == lon2) return 0.0; double hsinX = Math.Sin((lon1 - lon2) * 0.5); double hsinY = Math.Sin((lat1 - lat2) * 0.5); double h = hsinY * hsinY + (Math.Cos(lat1) * Math.Cos(lat2) * hsinX * hsinX); return 2 * Math.Atan2(Math.Sqrt(h), Math.Sqrt(1 - h)); } public static double ToDegrees(double radians) { return radians * RADIANS_TO_DEGREES; } ``` The result of this line ```c# double hsinY = Math.Sin((lat1 - lat2) * 0.5); ``` is `-0.70710678118654746` on .NET Framework 4.5.1 and .NET Standard 1.5, but it is `-0.70710678118654757` on .NET Standard 2.0. I have confirmed the result of `(lat1 - lat2) * 0.5` is `-0.78539816339744828` in both cases (the value being passed into `Math.Sin(double)`). Note also the program is being ported from Java, and a similar test passes there with the same input and expected output. ## Environment .NET Command Line Tools (2.0.0) Product Information: Version: 2.0.0 Commit SHA-1 hash: cdcd1928c9 Runtime Environment: OS Name: Windows OS Version: 10.0.15063 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.0\ Microsoft .NET Core Shared Framework Host Version : 2.0.0 Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d +23588 area-Infrastructure Code coverage for System.Private.CoreLib is broken It appears we're no longer able to get code coverage of System.Private.CoreLib, even when using CoreCLROverridePath, even when using `set COMPlus_ZapDisable=1`. cc: @mellinoe, @danmosemsft +23589 area-System.IO Add BinaryReader Span-based APIs Contributes to https://github.com/dotnet/corefx/issues/22428 Depends on https://github.com/dotnet/coreclr/pull/13616, https://github.com/dotnet/corert/pull/4396 +23590 area-System.Threading Add conversion from Task -> CancellationToken method There should be a built in way to convert a task to a cancellation token. Tasks can be used to represent one shot events (see https://github.com/dotnet/corefx/issues/16221) and lots of manual code needs to be written to convert a Task to a CancellationToken. ```C# public class Connection { // This task will continue with the connection is terminated public Task ConnectionLifetime { get; } } var connection = new Connection(); var buffer = new byte[1024]; var cts = new CancellationTokenSource(); await Task FireToken() { await connection.ConnectionLifetime.NoThrow(); // I want this extension method too cts.Cancel(); } _ = FireToken(); await stream.ReadAsync(buffer, cts.Token); ``` I really just want to write something like: ```C# // This would require an implicit conversion to CancellationToken await stream.ReadAsync(buffer, connection.ConnectionLifetime); ``` It could also be a method (extension or otherwise): ```C# await stream.ReadAsync(buffer, connection.ConnectionLifetime.ToCancellationToken()); ``` The benefit of the method would be that you could pass options that determined how the token should fire (only on failure, on any completion etc). ```C# public class Task { ... public CancellationToken ToCancellationToken(); public CancellationToken ToCancellationToken(TaskContinuationOptions options); ... } ``` Another alternative might be to add an overload to `CancellationTokenSource` but that still sucks and isn't as nice to use as the above method: ```C# var cts = new CancealltionTokenSource(); cts.CancelAfter(task); ``` /cc @stephentoub +23591 area-System.Net Fix two issues in System.Web.HttpUtility * Don't HTML-decode in HttpUtility.ParseQueryString Fixes #23582 * Only strip initial ? in HttpUtility.ParseQueryString once. Fixes #23574 * Simplify ParseQueryString exit logic. Checks for exit conditions two ways, when just one suffices. * Inline private ParseQueryString into caller. Allows for avoiding allocation for initial ? * Add more HttpUtilityTests +23592 area-System.Diagnostics Add ProcessStartInfo.ArgumentList "Note: Updated into an API proposal, with feedback incorporated. # Rationale On Unix platforms, external executables (binaries) receive their arguments as an _array_ of string _literals_, which makes for robust, predictable passing of arguments (see [Linux system function `execvp()`](https://linux.die.net/man/3/execvp), for instance). Regrettably, in Windows there is no equivalent mechanism: a pseudo shell ""command line"" must be passed as a _single string_ encoding _all_ arguments, and it is up to the _target executable itself_ to parse that line into individual arguments. The `ProcessStartInfo` class currently only supports the _Windows_ approach directly, by exposing a `string Arguments` property that expects the whole command line. **On Unix platforms, this means that even if you start out with an array of arguments, you must currently artificially assemble its elements into a single pseudo shell command line, only to have CoreFX split that back into an array of individual arguments behind the scenes** so as to be able to invoke the platform-native process-creation function, which takes an _array_ of arguments. Not only is this an unnecessary burden on the user and inefficient, it is error-prone. It is easy to accidentally assemble a command-line string that does _not_ round-trip as expected. As a real-world use case, consider the [ongoing quoting woes PowerShell experiences](https://github.com/PowerShell/PowerShell/issues/1995). At least on Unix platforms, PowerShell should be able to simply pass the arguments that are the result of _its_ parsing _as-is_ to external utilities. Having the ability to pass an _array_ of arguments would be of benefit on Windows too, as it is fair to assume that the more typical use case is to build the desired arguments as a list / array rather than to piece together a single-string command line with intricate quoting. (The latter should only be needed if you're passing an preexisting string through or if you're invoking an executable that has custom argument-parsing rules.) # Proposed API **Add a `IReadOnlyList ArgumentList` property (conceptually, an array of argument string literals) to the `ProcessStartInfo` class**, to complement the existing `string Arguments` (pseudo shell command line) property, and let each update the other lazily, on demand, when accessed: * If `.Arguments` was (last) assigned to, do the following when `.ArgumentList` is accessed: Call [`ParseArgumentsIntoList()`](https://github.com/dotnet/corefx/blob/edecb1207cbe6194cb9a9f1bc862ef8d1ebb3ef4/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs#L481), which splits the string into individual arguments based on [the rules for MS C++ programs](https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments) and return the resulting list. * If `.ArgumentList` was (last) assigned to, do the following when `.Arguments` is accessed: Synthesize the pseudo shell command line from the individual arguments and assign the result to using the above rules _in reverse_ (enclose in `""...""` if a given argument has embedded whitespace, ..., as already implemented for internal use [in `System.PasteArguments.Paste()`](https://github.com/dotnet/corefx/blob/5d3e42f831ec3d4c5964040e235824f779d5db53/src/Common/src/System/PasteArguments.cs#L16)) and return the resulting `string`. * As @TSlivede proposes, it's worth extending the conversion algorithm to also double-quote arguments that contain `'` (single quotes) lest they be interpreted as having _syntactic_ function, which to some programs they do (e.g., Ruby, Cygwin). That way, both `.Arguments` and `.ArgumentList` can be assigned to, and the respective other property contains the equivalent in terms of the official (MS C++) parsing rules. A `ProcessStartInfo` instance constructed this way can therefore be used on all supported platforms: * On Windows, pass the `.Arguments` property value to the `CreateProcess()` / `ShellExecuteEx()` Windows API functions, as before. * On Unix platforms, pass the `.ArgumentList` property value via `.ToArray()` to [`ForkAndExecProcess()`](https://github.com/dotnet/corefx/blob/edecb1207cbe6194cb9a9f1bc862ef8d1ebb3ef4/src/Common/src/Interop/Unix/System.Native/Interop.ForkAndExecProcess.cs#L15). Additionally, to complement the suggested behind-the-scenes conversion between the array form and the single-string form, **public utility methods should be implemented** that perform these conversions explicitly, on demand. @AtsushiKan proposes the following signatures: ```csharp public static IReadOnlyList SplitArguments(String commandLine) { ... } public static String CombineArguments(IReadOnlyList argumentList) { ... } ``` # Open Questions * How exactly should the existing, currently (effectively) private utility methods referenced above be surfaced publicly (namespace, class, signature)? Currently, they're in different classes, and one of them is `internal` (`System.PasteArguments`); @AtsushiKan suggests making them public methods of the `System.Diagnostics.Process` class. # Usage ```csharp // The array of arguments to pass. string[] args = { ""hello"", ""sweet world"" }; // ---- New ProcessStartInfo.ArgumentList property. // Assign it to the new .ArgumentList property of a ProcessStartInfo instance. var psi = new ProcessStartInfo(); psi.ArgumentList = args; // Accessing .Arguments now returns the pseudo shell command line that is the // equivalent of the array of arguments: // @""hello """"sweet world"""""" string pseudoShellCommandLine = psi.Arguments; // ---- New utility methods for conversion on demand. // EXACT NAMES AND SIGNATURES TBD. // Arguments array (list) -> pseudo shell command line string[] args = { ""hello"", ""sweet world"" }; string pseudoShellCommandLine = System.Diagnostics.Process.CombineArguments(args); // Pseudo shell command line -> arguments array (list) IReadOnlyList argList = System.Diagnostics.Process.SplitArguments(@""hello """"sweet world""""""); ```" +23594 area-System.Runtime Expose/test TimeSpan span-based methods Two commits: 1. Adds a bunch of test validation, which all passes on the existing implementation. This boosts code coverage up to ~95% line and ~91% branch coverage for TimeSpan's parsing code. 2. Exposes the new span-based TimeSpan.{Try}Parse{Exact} and TryFormat methods and adds tests for them (largely copies of the existing string-based tests). Depends on https://github.com/dotnet/coreclr/pull/13619 Closes https://github.com/dotnet/corefx/issues/22375 cc: @AlexGhiondea, @joperezr, @tarekgh +23595 area-System.Net "Test: System.Net.Sockets.Tests.TimeoutTest/SendTimesOut_Throws failed with ""Xunit.Sdk.InRangeException""" Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.TimeoutTest/SendTimesOut_Throws(forceNonBlocking: True)` has failed. Assert.InRange() Failure\r Range: (1500 - 3000)\r Actual: 1428.4429 Stack Trace: at System.Net.Sockets.Tests.TimeoutTest.SendTimesOut_Throws(Boolean forceNonBlocking) in /root/corefx-952634/src/System.Net.Sockets/tests/FunctionalTests/TimeoutTest.cs:line 128 Build : Master - 20170828.01 (Core Tests) Failing configurations: - Ubuntu.1404.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170828.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.TimeoutTest~2FSendTimesOut_Throws(forceNonBlocking:%20True) +23596 area-System.Runtime Added tests for struct Equals issue. Added tests to cover following scenarios: - Compare 2 tightly packed struct instances with double/float fields. - Compare 2 tightly packed struct instances with nested struct which contains double/float fields. - Compare 2 struct instances with overridden Equals and GetHashCode. Fix #23516 +23597 area-System.Data [ADO.NET] Support changeUser for DbConnection https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/IDbConnection.cs Since we have supported change database, why not add change user support? This will be useful when develop an EF Core provider in change into master connection scenario. The php has already supoorted change user in mysqli: http://php.net/manual/en/mysqli.change-user.php +23599 area-System.Linq Add ParallelEnumerable.WithTaskScheduler Full .NET has internal method to do PLINQ with [custom scheduler](https://github.com/Microsoft/referencesource/blob/master/System.Core/System/Linq/ParallelEnumerable.cs#L303). Current .NET Core does not have such method in [ParallelEnumerable](https://github.com/dotnet/corefx/blob/a38c5000be0d4b98445ef43d642614d0e8d8f82d/src/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs). Could we have `WithTaskScheduler` public in `ParallelEnumerable` or any other viable alternative? I see that [underlying classes do have task scheduler configuration build in](https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Linq.Parallel/src/System/Linq/Parallel/QueryOperators/QuerySettings.cs#L28). Why this is needed? We have product which did not setup default task scheduler for whole process/appdomain. So we do that that manually. I am afraid to set scheduler process/appdomain wide to avoid regression. Same time I want to use PLINQ instead of Tasks/Parallel, where PLINQ is best fit. But I cannot use PLINQ as customer scheduler is must for us. Another possible reason for such api is virtual isolation. I have witnessed that applications do more and more isolation not on process/appdomain levels, but in process via type loading and di/ioc containers. Another level of isolation could be done with parallelism, but for this all API should accept custom schedulers. +23600 area-System.Text System.Text.Encodings.Web.TextEncoder throws NRE on constructing copy ```C# TextEncoder copyFrom = null; TextEncoder copy = new TextEncoder(copyFrom); // Throws NullReferenceException ``` Should really throw `ArgumentNullException`. +23601 area-System.Text Throw ANE for null TextEncoderSettings to TextEncoderSettings ctor Fixes #23600 Also further test to bring coverage for that class up to 100%. +23602 area-System.Text System.Text.Encodings.Web.HtmlEncoder.Create wrong parameter name on exception "If the overload of `System.Text.Encodings.Web.HtmlEncoder.Create` that takes a `TextEncoderSettings` argument is called with null, the `ArgumentNullException` thrown has a `ParamName` of `""filter""` though the parameter name is `""settings""`." +23603 area-System.Text Fix System.Text.Encodings.Web.HtmlEncoder.Create ParamName on exception Change argument name of `DefaultHtmlEncoder` ctor from `filter` to `settings` to match that of only public method that directly calls it, so any `ArgumentNullException` has the correct `ParamName` property. Fixes #23602 Also include tests bringing coverage of `DefaultHtmlEncoder` and `HtmlEncoder` up to 100%. +23604 area-Meta .net core 2 InvalidOperationException: Cannot resolve scoped service 'IFillDataService' from root provider. "i use asp.net core 2 and VS 2017 15.3.2 and windows 10 i declare middleware and in .net core 1.1 it run without any error, but in .net core 2 i get this error `InvalidOperationException: Cannot resolve scoped service 'IFillDataService' from root provider. ` ``` public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddSingleton(Configuration); services.AddScoped(); services.Configure (options => options.Level = CompressionLevel.Fastest); services.AddResponseCompression(options => { options.Providers.Add(); }); services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseDeveloperExceptionPage(); app.UseStatusCodePages(); loggerFactory.AddConsole(Configuration.GetSection(""Logging"")); loggerFactory.AddDebug(); app.UseFillDataService(); app.UseResponseCompression(); app.UseMvc(); } } ``` ``` public static IApplicationBuilder UseFillDataService(this IApplicationBuilder builder) { return builder.UseMiddleware(); } ``` ``` public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup() .ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; config.AddJsonFile(""appsettings.json"", optional: true, reloadOnChange: true) .AddJsonFile($""appsettings.{env.EnvironmentName}.json"", optional: true, reloadOnChange: true); config.AddEnvironmentVariables(); }) .Build(); } ``` `raw exception details` ``` System.InvalidOperationException: Cannot resolve scoped service 'IFillDataService' from root provider. at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator.ValidateResolution(Type serviceType, ServiceProvider serviceProvider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider) at Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass4_0.b__0(RequestDelegate next) at Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() ```" +23606 area-System.Net Move the write side of SslStream to AsyncAwait BUILDS on the removal of pinnable buffers so can't be merged until then..... (#23572) Changes the write side to async/await. Clears out a bunch of cruft from the APM model. Will move closer to allowing the SemaphoreSlim unix solution, as well as clarity on the flow that is required. Is a first step, readside would be next and then the underlying handshake/renegotiation. Benchmarks and traces to come, but it makes the flow a lot more readable (initial indications is that the aspnet core tests are about 5% faster and with traces I hope to show that is due to lower allocations). If I had my own way I would convert the sync methods to ReadAsync().GetAwaiter().GetResult() as it is truly async in nature and by not doing that two paths need to be maintained which leads to a higher cognitive load in a security library. That however is a decision that others need to think about. Cheers Tim +23609 area-System.Security SignedXml detailed failure feedback inaccessible I've got a simple test case where I sign a bit of XML and then try to verify its signature. Verification of the signature fails - `SignedXml.CheckSignature()` returns false. The problem is that I cannot find out *why* it fails. Does it fail while getting a public key, looking up a certificate, validating the certificate, or validating the signature? Did I do something wrong during signing and there's now necessary information missing? I don't know - all I get is a simple `false` return value. Looking at the source, `SignedXml` does extensive logging via `System.Diagnostics.TraceSource`, but it hides the actual `TraceSource` as a private static member of an internal logging helper class (`SignedXmlDebugLog`), so I can't modify the source. In the full framework, I could use an app.config file to configure the `TraceSource` externally, but as far as I can tell, this isn't possible in Core. The `TraceSource` that the debug log uses is initialized to default values and never changes. There seems to be no way to get detailed feedback from this (complex and brittle) validation process. I think such feedback is needed. +23611 area-Infrastructure Remove NetFx support libs Now that we've shipped the NETStandard support package we will no longer build its content from `master`. It will be serviced from the `release/2.0.0` branch and the only netfx builds in `master` will correspond to package content. /cc @weshaggard +23613 area-System.Security Fix output buffer assumptions in CSP symmetric transforms. The CAPI DecryptData and EncryptData methods made assumptions about the calling patterns, in particular that the output buffer would be perfectly sized for the desired output. This change adds tests which violate those assumptions, but work on netfx and with the corefx CNG implementation. Then follows up on making the tests pass. Fixes #23311. +23614 area-Infrastructure error PRI210: 0x80070020 from UWP CI See https://github.com/dotnet/corefx/pull/23611#issuecomment-325437628 It seems that when building UWP tests there is a race condition when building the pri file. I suspect two projects get in MakeCommonResourcesPriFile because the output doesn't exist yet, then they fight over writing the file. +23616 area-System.Drawing System.Drawing.Printing.Tests has 2 failures if run on a machine not using US Letter size. "`Ctor_Default_Success()` and `DefaultPageSettings_SetValue_ReturnsExpected()` both call into `AssertDefaultPageSettings()` which assumes that the default paper size found from the default printer will be ANSI/ASME Y14.1 A (""US Letter"") which is rare outside of the US, Canada, Mexico and the Dominican Republic. The test should also accept ISO 216 A4 size, which is the most common size in most other countries." +23617 area-System.Drawing Allow A4 as a default paper size in PrintDocument Tests. A common setting for the default size for the default printer. Fixes #23616 +23618 area-Infrastructure GenerateResourcesSource is skipped when OutputSourceFilePath is up to date, but NormalizedAssemblyName remapping is still done with an empty string "To reproduce, build repo for -targetGroup:uap. Go to any source project and build it again (note: not rebuild, just build). See: ``` GenerateResourcesSource: Skipping target ""GenerateResourcesSource"" because all output files are up-to-date with respect to the input files. CopyResxFilesToReswFiles: Copying file from ""F:\dotnet\corefx\src\Microsoft.CSharp\src\Resources\Strings.resx"" to ""F:\dotnet\corefx\bin/runtime /uap-Windows_NT-Debug-x64/resw/FxResources..SR.resw"". Touching ""F:\dotnet\corefx\bin/runtime/uap-Windows_NT-Debug-x64/resw/FxResources..SR.resw"". ``` This is because `GenerateResourcesSource` is skipped, however MSBuild still tries to evaluate the items inside the target because of [output inference](https://msdn.microsoft.com/en-us/library/ee264087.aspx#Anchor_0). As a result LogicalName metadata is set to FxResources.~~$(_NormalizedAssemblyName)~~.SR.resources (since _NormalizedAssemblyName never gets set as the task doesn't run). " +23620 area-Infrastructure Eliminate OpenSuSE 13.2 (EOL) +23621 area-Infrastructure Remove EOL'd OS's openSuSE 13.2 and Fedora 23 They have been EOL'd and are no longer usable/upgradeable in CI. +23622 area-Infrastructure Remove EOL'd OS's openSuSE 13.2 and Fedora 23 +23623 area-Infrastructure Eliminate OpenSuSE 13.2 (EOL) +23624 area-Infrastructure Eliminate OpenSuSE 13.2 (EOL) +23625 area-System.Net Fastpath same-object case in System.Net.CaseInsensitiveAscii.Equals The case gets hit running the tests for `System.Net.WebHeaderCollection` (and not for the both-null case, which is already pretty fast), so the benefit can be assumed to hit real code (interning probably makes it particularly common). Also, Remove `System.Net.CaseInsensitiveAscii.FastGetHashCode()`. Its checks are repeated in the loop, so do first-character check before loop (just in case it was successfully finding mismatches quickly) and don't do it in the loop itself. +23626 area-System.Data Connection pool fragmentation Customer reported connection pool fragmentation issue. Customer runs an Web Application, and they found 3000+ connection pools that have 0 connection for the same connection string in their memory dump. +23627 area-Meta Mac 不能安装sdk2.0 我的mac系统版本是11.6 安装sdk出现提醒:只能安装在10.12以后版本 这是为什么呢 +23628 area-System.Globalization "Test failure: System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"".\"", CurrencyGroupSeparator ..." "Opened on behalf of @Jiayili1 The test `System.Globalization.Tests.NumberFormatInfoNumberGroupSizes/NumberGroupSizes_Get(format: NumberFormatInfo { CurrencyDecimalDigits = 2, CurrencyDecimalSeparator = \"".\"", CurrencyGroupSeparator ...` has failed. Assert.Equal() Failure Expected: Int32[] [3, 2] Actual: Int32[] [3] Stack Trace: Build : Master - 20170829.01 (Core Tests) Failing configurations: - RedHat.69.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170829.01/workItem/System.Globalization.Tests/analysis/xunit/System.Globalization.Tests.NumberFormatInfoNumberGroupSizes~2FNumberGroupSizes_Get(format:%20NumberFormatInfo%20%7B%20CurrencyDecimalDigits%20=%202,%20CurrencyDecimalSeparator%20=%20%5C%22.%5C%22,%20CurrencyGroupSeparator%20..." +23629 area-System.Security General low level primitive for ciphers (AES-GCM being the first) "# Rationale There is a general need for a number of ciphers for encryption. Todays mix of interfaces and classes has become a little disjointed. Also there is no support for AEAD style ciphers as they need the ability to provide extra authentication information. The current designs are also prone to allocation and these are hard to avoid due to the returning arrays. # Proposed API A general purpose abstract base class that will be implemented by concrete classes. This will allow for expansion and also by having a class rather than static methods we have the ability to make extension methods as well as hold state between calls. The API should allow for recycling of the class to allow for lower allocations (not needing a new instance each time, and to catch say unmanaged keys). Due to the often unmanaged nature of resources that are tracked the class should implement IDisposable ``` csharp public abstract class Cipher : IDisposable { public virtual int TagSize { get; } public virtual int IVSize { get; } public virtual int BlockSize { get; } public virtual bool SupportsAssociatedData { get; } public abstract void Init(ReadOnlySpan key, ReadOnlySpan iv); public abstract void Init(ReadOnlySpan iv); public abstract int Update(ReadOnlySpan input, Span output); public abstract int Finish(ReadOnlySpan input, Span output); public abstract void AddAssociatedData(ReadOnlySpan associatedData); public abstract int GetTag(Span span); public abstract void SetTag(ReadOnlySpan tagSpan); } ``` # Example Usage (the input/output source is a mythical span based stream like IO source) ``` csharp using (var cipher = new AesGcmCipher(bitsize: 256)) { cipher.Init(myKey, nonce); while (!inputSource.EOF) { var inputSpan = inputSource.ReadSpan(cipher.BlockSize); cipher.Update(inputSpan); outputSource.Write(inputSpan); } cipher.AddAssociatedData(extraInformation); cipher.Finish(finalBlockData); cipher.GetTag(tagData); } ``` # API Behaviour 1. If get tag is called before finish a [exception type?] should be thrown and the internal state should be set to invalid 1. If the tag is invalid on finish for decrypt it should be an exception thrown 1. Once finished is called, a call to anything other than one of the Init methods will throw 1. Once Init is called, a second call without ""finishing"" will throw 1. If the type expects an key supplied (a straight ""new'd"" up instance) if the Initial ""Init"" call only has an IV it will throw 1. If the type was generated say from a store based key and you attempt to change the key via Init and not just the IV it will throw 1. If get tag is not called before dispose or Init should an exception be thrown? To stop the user not collecting the tag by accident? Reference #7023 # Updates 1. Changed nonce to IV. 1. Added behaviour section 1. Removed the single input/output span cases from finish and update, they can just be extension methods 1. Changed a number of spans to readonlyspan as suggested by @bartonjs 1. Removed Reset, Init with IV should be used instead" +23630 area-System.IO "Test: System.IO.Pipes.Tests.AnonymousPipeTest_Specific/Linux_BufferSizeRoundtrips failed with ""System.PlatformNotSupportedException""" Opened on behalf of @Jiayili1 The test `System.IO.Pipes.Tests.AnonymousPipeTest_Specific/Linux_BufferSizeRoundtrips` has failed. System.PlatformNotSupportedException : Operation is not supported on this platform. Stack Trace: at System.IO.Pipes.PipeStream.GetPipeBufferSize() in /root/corefx-954865/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.Unix.cs:line 396 at System.IO.Pipes.Tests.AnonymousPipeTest_Specific.Linux_BufferSizeRoundtrips() in /root/corefx-954865/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.Specific.cs:line 90 Build : Master - 20170829.01 (Core Tests) Failing configurations: - RedHat.69.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170829.01/workItem/System.IO.Pipes.Tests/analysis/xunit/System.IO.Pipes.Tests.AnonymousPipeTest_Specific~2FLinux_BufferSizeRoundtrips +23631 area-Infrastructure Native shim dependencies not correctly setup for running tests on Redhat69 Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.CancellationTest/GetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly(useTimeout: False, startResponseBody: False)` has failed. System.TypeInitializationException : The type initializer for 'System.Net.Http.CurlHandler' threw an exception. ---- System.TypeInitializationException : The type initializer for 'Http' threw an exception. -------- System.TypeInitializationException : The type initializer for 'HttpInitializer' threw an exception. ------------ System.DllNotFoundException : Unable to load DLL 'System.Net.Http.Native': The specified module or one of its dependencies could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: at System.Net.Http.CurlHandler..ctor() in /root/corefx-954865/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 136 at System.Net.Http.HttpClientHandler..ctor() in /root/corefx-954865/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs:line 30 at System.Net.Http.Functional.Tests.CancellationTest.d__2.MoveNext() in /root/corefx-954865/src/System.Net.Http/tests/FunctionalTests/CancellationTest.cs:line 40 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at Interop.Http.GetSupportedFeatures() at System.Net.Http.CurlHandler..cctor() in /root/corefx-954865/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs:line 164 ----- Inner Stack Trace ----- at Interop.HttpInitializer.Initialize() in /root/corefx-954865/src/Common/src/Interop/Unix/System.Net.Http.Native/Interop.Initialization.cs:line 47 at Interop.Http..cctor() in /root/corefx-954865/src/Common/src/Interop/Unix/System.Net.Http.Native/Interop.Initialization.cs:line 19 ----- Inner Stack Trace ----- at Interop.Http.GetSslVersionDescription() at Interop.HttpInitializer..cctor() in /root/corefx-954865/src/Common/src/Interop/Unix/System.Net.Http.Native/Interop.Initialization.cs:line 27 Build : Master - 20170829.01 (Core Tests) Failing configurations: - RedHat.69.Amd64-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170829.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.CancellationTest~2FGetAsync_ResponseContentRead_CancelUsingTimeoutOrToken_TaskCanceledQuickly(useTimeout:%20False,%20startResponseBody:%20False) +23632 area-System.Drawing Disable System.Drawing.Tests flaky test failing in CI Relates to: #21886 cc: @danmosemsft @mellinoe +23633 area-Infrastructure Add BinPlaceConfiguration for test projects to have a working directory per BuildConfiguration This changes depends on: https://github.com/dotnet/buildtools/pull/1652 and a BuildTools update once that is merged. Fixes: https://github.com/dotnet/buildtools/issues/1587 ## New Behavior with this change With this change we will have the next behavior when building/running tests: - When building the tests we will still bin place the test assets to the `OutputDirectory` (`corefx\bin\OSGroup.Configuration\TestProject\TargetGroup\`) - When running the tests we will bin place the tests assets to this new [`TestPath`](https://github.com/dotnet/corefx/pull/23633/files#diff-4de71e7a0fd952be821f8af2768281dcR34) which will be the `TestPath`. This new path will be the test's working directory where we will bin place the RunTests.cmd and necessary dependencies in tests.targets. Also the `testResults.xml` will be found here after the test execution. - `TestPath` is set to be `bin/tests///` (i.e `corefx\bin\tests\System.Collections.Immutable.Tests\netcoreapp-Windows_NT-Debug-x64`) in `dir.props` - This `TestPath` will be added to the `BinPlaceDir` in `FrameworkTargeting.targets` when `BinPlaceTest` is set to true. - Then in the [`BinPlaceFiles`](https://github.com/safern/buildtools/blob/4d39247ff2c152ac50ade6128a44afc6f9993ca2/src/Microsoft.DotNet.Build.Tasks/PackageFiles/FrameworkTargeting.targets#L243) target the test assets will be hardlinked to the `TestPath`. This will isolate every test execution per build configuration and will allow people to run the same test project for all of the supported configurations on the same repo without having to clean the repo. cc: @weshaggard @ericstj @joperezr FYI: @danmosemsft +23636 area-System.Drawing System.Drawing: Consolidate the Brushes class Use the Windows implementation of the `Brushes` class for both Windows and Unix. Update the P/Invoke declarations accordingly. +23639 area-System.Net IPAddress.Parse incorrectly parsing invalid IPv6 addresses "Prior to upgrading to .NET Core 2.0, this would throw a FormatException (note the extra character in the final hextet): IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:abcde""); Following the upgrade, the code above parses as if the first character were not there i.e as equivalent to: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:bcde""); Additional characters in any of the first seven hextets do still cause the expected FormatException to be thrown: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:affff:ffff""); Is this an intentional change of behavior from NetCoreApp1.1 and Net461?" +23640 area-System.Net Only strip initial ? in HttpUtility.ParseQueryString once. Fixes #23574 +23641 area-Infrastructure CI Failure: error: libunwind.so.8: cannot open shared object file: No such file or directory The `Linux x64 Release Build` CI failed when I ran this PR: https://github.com/dotnet/corefx/pull/23596 ```sh 2017-08-29 08:59:09,715: INFO: proc(54): run_and_log_output: Output: total elapsed time 0:00:00.160024 2017-08-29 08:59:09,766: INFO: proc(54): run_and_log_output: Output: Failed to load �J!�, error: libunwind.so.8: cannot open shared object file: No such file or directory 2017-08-29 08:59:09,766: INFO: proc(54): run_and_log_output: Output: Failed to bind to CoreCLR at '/home/helixbot/dotnetbuild/work/ba5f7733-09d1-46b9-bf98-58f68a1b0b8e/Payload/shared/Microsoft.NETCore.App/9.9.9/libcoreclr.so' 2017-08-29 08:59:09,787: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Data.SqlClient.Tests ``` Full log can be found at https://mc.dot.net/#/user/mazong1123/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/edb0e549ee2d27b9496f4d09731171a38ff6cb29/workItem/Microsoft.CSharp.Tests/wilogs Seems like an environment issue. +23642 area-System.Runtime Replace span-based optional arguments with fixed overloads When I outlined what span-based {Try}Parse methods I thought we should have on primitive types (int, long, etc.), I tried to keep the list of overloads short by using optional parameters. For example, Int32 has these string-based Parse methods: ```C# public static int Parse(string s); public static int Parse(string s, NumberStyles style); public static int Parse(string s, NumberStyles style, IFormatProvider provider); public static int Parse(string s, IFormatProvider provider); ``` and I suggested (and we agreed on and we now have) adding just one span-based one to cover them all: ```C# public static int Parse(ReadOnlySpan s, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); ``` For the most part, that’s seemed to work well, in terms of the experience I’ve had then consuming this in other code. However, it’s worked less well in my experience for TryParse. For TryParse, Int32 has: ```C# public static bool TryParse(string s, out int result); public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out int result); ``` and we’ve now added: ```C# public static bool TryParse(ReadOnlySpan s, out int result, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); ``` The problem is in the order of the arguments. Because the optional parameters need to come at the end of the signature, the `out int result` argument is now in the middle, differing from the corresponding long overload that works with a string. When converting code from being string-based to span-based, for me at least this has been jarring and hasn’t been a pit of success. For example, let’s say you’ve got code like this: https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.cs#L133-L138 ```C# string startingString = s.Substring(start, pos); if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress)) { string endingString = s.Substring(pos + 1, end - (pos + 1)); long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress); } ``` It’s pretty straightforward to replace the `.Substring` with `.AsReadOnlySpan().Slice`: ```C# ReadOnlySpan startingString = s.AsReadOnlySpan().Slice(start, pos); if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress)) { ReadOnlySpan endingString = s.AsReadOnlySpan().Slice(pos + 1, end - (pos + 1)); long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress); } ``` but then that doesn’t compile because the arguments are in the wrong order, and the developer needs to realize the problem and take the extra step of changing the code to be: ```C# ReadOnlySpan startingString = s.AsReadOnlySpan().Slice(start, pos); if (long.TryParse(startingString, out startingAddress, NumberStyles.HexNumber, CultureInfo.InvariantCulture)) { ReadOnlySpan endingString = s.AsReadOnlySpan().Slice(pos + 1, end - (pos + 1)); long.TryParse(endingString, out endingAddress, NumberStyles.HexNumber, CultureInfo.InvariantCulture); } ``` We should back away from the optional parameters here for TryParse, and add the same set of overloads as we have for strings. In most cases, it should mean adding only one or two more methods. +23643 area-System.Console Wrong text encoding on console apps I have a console app made in dotnet core which, among other things, receive text input using Console.ReadLine. This works fine except when entering words using non english characters (áéíóúñ) I can write such text without problem using Console.WriteLine and debugging I can see the text received have the usual marker for invalid character. This is happening in dotnet core 1.1.0 +23645 area-System.Runtime Runtime error with [OnDeserialized] in netstandard2.0 library running in framework461 project 1. Create new Project 1. Create net461 app (A) 1. Create netstandard2.0 class library with the below code (B) 1. Reference (B) in (A) 1. Try and compile ```cs using System; using System.Runtime.Serialization; namespace ClassLibraryNetStandard20 { [Serializable] public class SerializableClass : ISerializable { private readonly string _value; public SerializableClass(string value) { _value = value; } public SerializableClass(SerializationInfo info, StreamingContext context) { _value = info.GetString(nameof(Value)); } public string Value => _value; public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(nameof(Value), _value); } [OnDeserialized] private void OnDeserialized(StreamingContext context) { } } } ``` Runtime error of: > Type 'ClassLibraryNetStandard20.SerializableClass' in assembly 'ClassLibraryNetStandard20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' has method 'OnDeserialized' with an incorrect signature for the serialization attribute that it is decorated with. ------ N.B. this works fine if (B) targets net461 +23646 area-System.Net System.ServiceModel.BasicHttpBinding throwing InvalidOperationException in dotnet core 2.0 I am getting an invalid operation exception calling an external web service when setting the proxy settings on the BasicHttpBinding class. The error is: When using a non-null Proxy, the WindowsProxyUsePolicy property must be set to WindowsProxyUsePolicy.UseCustomProxy. (Source: System.Net.Http.WinHttpHandler) My code: ```c# var binder1 = new BasicHttpBinding(); binder1.UseDefaultWebProxy = false; binder1.ProxyAddress = proxyAddress; ``` Removing these two lines (so it uses the machines default proxy settings) results in a successful web service call. From Dudod's comments in https://github.com/dotnet/wcf/issues/1592 it seems it may be related to the WinHttpHandler implementation. I'm using Visual Studio 2017 version 15.3.0, my dll is targeting netstandard2.0 and I am using version 2.0.0 of the sdk. I'm testing this code using xunit tests targeting netcoreapp2.0. FYI if I switch the unit test target from netcoreapp2.0 to net461 the above code works. [EDIT[ Fix C# syntax highlighting by @karelz +23650 area-System.Drawing CopyFromScreen tests causing intermittent failures ``` System.Drawing.Tests.GraphicsTests.CopyFromScreen_ValidRange_AffectsGraphics(sourceX: 1, sourceY: 1, destinationX: 2, destinationY: 2, width: 3, height: 3) [FAIL] 20:39:03 System.ComponentModel.Win32Exception : The handle is invalid 20:39:03 Stack Trace: 20:39:03 at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation) 20:39:03 at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize) ``` I believe these tests are invalid, given that they are failing against the .NET Framework. We should give them some scrutiny, and potentially remove them. +23653 area-System.Net Add minimal handling for HTTP 1.0 requests to ManagedHandler More work may need to be done but this at least fixes issues covered by existing tests. We may add more checks to disable 1.1 extensions for 1.0 requests. fixes #23132 +23654 area-Infrastructure Blocking: Package restore failing with nuget errors. "As of this morning, any attempt to ""sync -p"" (master branch, synced to current bits, ""git clean -xdf"" done), aborts with this set of error messages (which seems to me like they should be warnings.) ``` c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: Microsoft.xunit.netcore.extensions 1.0.1-prerelease-01911-02 depends on System.Linq.Expressions (>= 4.0.11) but System.Linq.Expressions 4.0.11 was not found. An approximate best match of System.Linq.Expressions 4.1.0 was resolved. c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: Microsoft.xunit.netcore.extensions 1.0.1-prerelease-01911-02 depends on System.Text.RegularExpressions (>= 4.0.12) but System.Text.RegularExpressions 4.0.12 was not found. An approximate best match of System.Text.RegularExpressions 4.1.0 was resolved. c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: xunit.console.netcore 1.0.3-prerelease-00921-01 depends on System.Text.RegularExpressions (>= 4.0.12) but System.Text.RegularExpressions 4.0.12 was not found. An approximate best match of System.Text.RegularExpressions 4.1.0 was resolved. c:\dd\CoreFx\Tools\packageresolve.targets(42,5): error MSB3073: The command """"c:\dd\CoreFx\Tools/dotnetcli/dotnet.exe"" restore --packages ""c:\dd\CoreFx\packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj /p:TargetGroup=netstandard /p:ConfigurationGroup=Debug /p:ArchGrou p=x64 /p:OSGroup=AnyOS /p:TargetFramework=netstandard2.0 -r win10-x64 "" exited with code 1. [c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj] ``` Syncing back to commits that I knew worked yesterday and retrying just produces other nuget errors. This looks like something changed nuget configuration on my box althought I thought corefx was supposed to be insulated from that. Can anybody assist. @ericstj ; @weshaggard " +23656 area-System.Memory Using latest System.Memory package with netcoreapp2.0 fails due to S.N.V depenedency If we bump up the version of the packages we reference in corefxlab to: 4.5.0-preview2-25628-01 https://github.com/dotnet/corefxlab/blob/master/tools/dependencies.props#L6-L8 ..\.nuget\packages\microsoft.netcore.app\2.0.0\ref\netcoreapp2.0\System.Numerics.Vectors.dll has version ver 4:1:3:0 But the latest System.Memory depends on 4.1.4 .assembly extern System.Numerics.Vectors { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 4:1:4:0 } Our tests (which target netcoreapp2.0) fail with the following error: Failed System.Buffers.Tests.EqualityTests.SpansReferencingSameMemoryAreEqualInEveryAspect(bytes: [0, 0], start: 0, length: 2) Error Message: System.IO.FileNotFoundException : Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Stack Trace: at System.SpanHelpers.SequenceEqual(Byte& first, Byte& second, Int32 length) at System.Buffers.Tests.EqualityTests.SpansReferencingSameMemoryAreEqualInEveryAspect(Span`1 span, Span`1 pointingToSameMemory) in D:\GitHub\Fork\corefxlab\tests\System.Buffers.Primitives.Tests\EqualityTests.cs:line 163 at System.Buffers.Tests.EqualityTests.SpansReferencingSameMemoryAreEqualInEveryAspect(Byte[] bytes, Int32 start, Int32 length) in D:\GitHub\Fork\corefxlab\tests\System.Buffers.Primitives.Tests\EqualityTests.cs:line 45 cc @weshaggard, @ericstj, @KrzysztofCwalina, @shiftylogic, @mellinoe +23657 area-Infrastructure Unable to build the repo on my machine "Hi, I followed [these](https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md) directions, but when I'm building it fails. ## My setup - Windows 10.0.15063 Build 15063 x64 Home edition - VS 2017 (15.3.3) Community edition (only IDE) - Workloads: ![image](https://user-images.githubusercontent.com/2716316/29845753-bb02a0e6-8d1c-11e7-9025-06af8acda619.png) - Individual components: ![image](https://user-images.githubusercontent.com/2716316/29846084-00e4d3bc-8d1e-11e7-8d84-96cb050ecbb3.png) - Instructions from [here](https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md) ## Actual behavior Calling *build-native.cmd* (or *build.cmd*) gives the following output: ``` Tools are already initialized. Running: C:\Users\Shimmy\Source\Repos\corefx\src\Native\build-native.cmd x64 Debug Windows_NT --numproc 8 -portable toolSetDir=c:\tools\clr Tools are already initialized. Running: C:\Users\Shimmy\Source\Repos\corefx\Tools\msbuild.cmd /nologo /verbosity:minimal /clp:Summary /maxcpucount /nodeReuse:false /l:BinClashLogger,Tools\net46\Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /p:BuildPackages=false /p:GenerateNativeVersionInfo=true /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err C:\Users\Shimmy\Source\Repos\corefx\src\Native\..\../build.proj /t:GenerateVersionHeader Project file contains ToolsVersion=""14.0"". This toolset may be unknown or missing, in which case you may be able to res olve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVers ion for policy reasons. Treating the project as if it had ToolsVersion=""4.0"". For more information, please see http://g o.microsoft.com/fwlink/?LinkId=291333. Command execution succeeded. The system cannot find the path specified. Commencing build of native components Error: DIA SDK is missing at ""DIA SDK"". This is due to a bug in the Visual Studio installer. It does not install DIA SDK at """" but rather at VS install location of previous version. Workaround is to copy DIA SDK folder from VS install location of previous version to """" and then resume build. Visual Studio Express does not include the DIA SDK. You need Visual Studio 2015 or 2017 (Community is free). See: https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/developer-guide.md#prerequisites Command execution failed with exit code 1. ``` When calling *build-managed.cmd* however, [this](http://pasted.co/03cc0523/fullscreen.php?hash=46ea6283825f86890ec8711f16f2ed78&toolbar=true&linenum=false) is the output I'm getting. Any help please?" +23659 area-System.Reflection Expose IsByRefLike api. Api was approved today: Fixes https://github.com/dotnet/corefx/issues/17232 CoreRT/CoreCLR implementations were done some time ago (we needed them internally.) So this just exposes the api in the contract. +23661 area-System.Diagnostics BasicEventSourceTests.TestEventCounter.Test_Write_Metric_EventListener fails on NetFx when running on netstandard support libs. "Sync to eade3b36725c8d463a40589ff749af5bb0cab8f4 build -targetGroup:netfx cd src\System.Diagnostics.Tracing\tests msbuild /p:TargetGroup=netfx /t:BuildAndTest Expect: pass Actual: failure with following ``` FAILURE IN SUBTEST: ""EventCounter: Log 1 event, explicit poll at end"" ************* EXCEPTION INFO *************** Xunit.Sdk.EqualException: Assert.Equal() Failure Expected: 4 Actual: 0 at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\EqualityAsserts.cs:line 35 at BasicEventSourceTests.TestEventCounter.<>c.b__2_1(List`1 evts) in D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\TestEventCounter.cs:line 84 at BasicEventSourceTests.EventTestHarness.<>c__DisplayClass2_0.b__0(Event data) in D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\EventTestHarness.cs:line 72 at System.Diagnostics.Tracing.EventSource.DispatchToAllListeners(Int32 eventId, Guid* childActivityID, EventWrittenEventArgs eventCallbackArgs) *********** END EXCEPTION INFO ************* ************* LOGGING MESSAGES *************** 38:55.738 : STARTING Sub-Test EventCounter: Log 1 event, explicit poll at end 38:55.738 : Sending command MyEventSource to EventSource Enable Options c.b__2_1(List`1 evts) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.Tracing\tests\BasicEventSourceTest\Harness\EventTestHarness.cs(72,0): at BasicEventSourceTests.EventTestHarness.<>c__DisplayClass2_0.b__0(Event data) at System.Diagnostics.Tracing.EventSource.DispatchToAllListeners(Int32 eventId, Guid* childActivityID, EventWrittenEventArgs eventCallbackArgs) ``` I suspect that this is due to the test expecting behavior post fixes made in master after the release/2.0.0 fork. Any fixes made to the netfx build here were actually dead-ends since we don't intend to ship any of the dlls that make up netstandard.dll as out of band after release/2.0.0. Please evaluate this issue to determine if we need to either a) fix the test, or b) port changes to servicing/desktop. Related, but likely wrong issue: https://github.com/dotnet/corefx/issues/22791 /cc @brianrob @vancem " +23664 area-System.ComponentModel ICollection support in MinLengthAttribute and MaxLengthAttribute Fixes #23461. +23665 area-Microsoft.CSharp What should be done about byref-like types in Microsoft.CSharp Now that we have an API for detecting them consistently. The netfx handling of a set number of types, like typed references, gives us a model, and perhaps we should follow it, but perhaps not. (Will follow up with more details on that later, but opening this now before I forget). +23666 area-System.Text backport of REGEX_DEFAULT_MATCH_TIMEOUT Fixes https://github.com/dotnet/corefx/issues/15173 +23667 area-Infrastructure Add support for OpenSuse 42.2 in .NET CoreFx 1.1.0 This issue tracks ensuring that your team has considered how to handle OpenSuse 42.2 builds in your .NET Core 1.1.0 repositories. Since .NET Core 1.1 is an LTS release, per @leecow we need to support OpenSUSE 42.2 with it. Unfortunately, when 1.1 release branches were snapped, 42.1 was the used version. It turns out there was not even a RID (runtime identifier) that matches this build (In the 1.1 time frame, ‘opensuse.42.1-x64’ was used) Please use this issue to track addressing the issue for your specific repository. In some cases, little-to-no change will be required but lacking a previously-used RID we need to figure something out. @weshaggard FYI. +23668 area-System.Drawing Unify implementations of SystemFonts as much as possible. The implementation for these is still more-or-less diverged, but there is a small part that can be shared. I have also made a trimmed-down version of the existing test case that is not dependent on precise names of fonts, which can be run on Unix platforms. The existing test case is now Windows-specific, rather than having an active issue on Unix. @qmfrederik @hughbe +23671 area-System.Runtime WindowsRuntimeBufferExtensions.ToArray incorrectly checks Capacity The following code will throw an ArgumentException: ```c# var buffer = new Windows.Storage.Streams.Buffer(0); var array = buffer.ToArray(); ``` WindowsRuntimeBufferExtensions.ToArray checks the buffer capacity as a precondition, which isn't used in the method. Obviously the expected behavior would be to return an array of length zero. I also can't find a unit test for this case. +23672 area-System.Net Unix Socket Client Send WouldBlock Server Receive Data Error "```c# /// /// Exchange a message with the host. /// /// Message to send. /// Message sent by the host. internal void Send(string message) { if (!this.isContinue) { Console.WriteLine($""isContinue {this.isContinue}""); return; } if (this.connected) { var nioBuffers = new List>(); nioBuffers.Add(new ArraySegment(Encoding.UTF8.GetBytes(message))); SocketError errorCode; long localWrittenBytes = this.clientSocket.Send(nioBuffers, SocketFlags.None, out errorCode); if (errorCode != SocketError.Success && errorCode != SocketError.WouldBlock) { throw new SocketException((int)errorCode); } if (errorCode == SocketError.WouldBlock) { this.isContinue = false; Console.WriteLine(message); var sendArgs = new SocketAsyncEventArgs(); sendArgs.BufferList = nioBuffers; sendArgs.Completed += this.SendArgs_Completed; bool pending = this.clientSocket.SendAsync(sendArgs); if (!pending) { Console.WriteLine($""pending false BytesTransferred {sendArgs.BytesTransferred}""); } else { Console.WriteLine($""pending true""); } } else { Console.WriteLine($""{nioBuffers.Sum(n => n.Array.Length)} {localWrittenBytes}""); } } else { throw new SocketException((int)SocketError.NotConnected); } } ``` https://github.com/caozhiyuan/DotNetty/tree/dev/examples/SocketAsyncClient https://github.com/caozhiyuan/DotNetty/tree/dev/examples/SocketAsyncServer ![qq 20170830084137](https://user-images.githubusercontent.com/3415285/29850341-72317066-8d5f-11e7-9727-90cd239e0db0.png) [EDIT] Add C# syntax highlighting by @karelz" +23675 area-System.Net System.Net.Http: Remove unnecessary null validator check A null validator is never passed-in when creating `ObjectCollection` instances internally, so we can avoid the unnecessary null checks. cc: @davidsh, @CIPop, @Priya91 +23676 area-System.Net CurlHandler Does Not Respect MaxConnectionsPerServer Property Setting MaxConnectionsPerServer on an HttpClientHandler doesn't do anything on Unix systems. The property is propagated to CurlHandler which [stores it as an instance variable](https://github.com/dotnet/corefx/blob/a26de495ffa390a9d6b3a0d0f338e9d9f97ad5fe/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs#L371) but doesn't ever use it. This seems like an oversight since [documentation for libcurl](https://curl.haxx.se/libcurl/c/CURLMOPT_MAX_HOST_CONNECTIONS.html) shows it can be set, and there is already piping to set related settings [in CurlHandler.MultiAgent.cs](https://github.com/dotnet/corefx/blob/a27929935d2782cdc3e7be21653e8c4530274c6f/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.MultiAgent.cs#L232). +23677 area-System.Collections "Test: System.Collections.Generic.Tests.ComparerTests/NullableOfIComparableComparisonsShouldTryToCallLeftHandCompareToFirst failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Collections.Generic.Tests.ComparerTests/NullableOfIComparableComparisonsShouldTryToCallLeftHandCompareToFirst` has failed. Assert.Equal() Failure\r Expected: 0\r Actual: 1 Stack Trace: at System.Collections.Generic.Tests.ComparerTests.NullableOfIComparableComparisonsShouldTryToCallLeftHandCompareToFirst() in E:\A\_work\371\s\corefx\src\System.Collections\tests\Generic\Comparers\Comparer.Tests.cs:line 341 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170830.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64-arm - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170830.01/workItem/System.Collections.Tests.Execution/analysis/xunit/System.Collections.Generic.Tests.ComparerTests~2FNullableOfIComparableComparisonsShouldTryToCallLeftHandCompareToFirst +23678 area-Meta Load custom assembly to ASP .NET Core 2.0 project "_From @troncomputers on August 29, 2017 9:26_ Hi! I'm trying to load custom assembly (nip24Library.dll). This is the C# API for finding companies by VAT Number in Poland. ``` FileNotFoundException: Could not load file or assembly 'nip24Library, Version=1.3.1.0, Culture=neutral, PublicKeyToken=a3a1b0bb1b99a109'. Can not find the specified file. ``` VS added for me this entry to .csproj file ``` C:\OptimoKasiarz\OptimoKasiarz\bin\Debug\netcoreapp2.0\nip24Library.dll true ``` It looks like the web app doesn't know where this file is. How can I solve this problem? _Copied from original issue: aspnet/Home#2171_" +23679 area-System.Net "System.Net.Http.Functional.Tests.ManagedHandler_DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging failed with ""Timed out after 60000ms""" Failed test: System.Net.Http.Functional.Tests.ManagedHandler_DiagnosticsTest.SendAsync_ExpectedDiagnosticCancelledLogging MESSAGE: ~~~ Timed out after 60000ms waiting for remote process 4372\r\nExpected: True\r\nActual: False ~~~ STACK TRACE: ~~~ at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in D:\j\workspace\outerloop_net---15cfbbd5\src\CoreFx.Private.TestUtilities\src\System\Diagnostics\RemoteExecutorTestBase.cs:line 161 ~~~ +23680 area-System.Linq LINQ bug: ConcatNIterator.LazyToArray() produces incorrect results "Here's a repro: https://github.com/gulbanana/repro-corefx-concat-toarray ``` banana@forsyth MINGW64 /c/code/repro-corefx-concat-toarray (master) $ dotnet run -f netcoreapp1.0 A B C banana@forsyth MINGW64 /c/code/repro-corefx-concat-toarray (master) $ dotnet run -f netcoreapp2.0 A B A ``` The problem occurs when using Concat multiple times and then calling ToArray(). ```c# using System; using System.Collections.Generic; using System.Linq; class Program { class A { public override string ToString() => ""A""; } class B { public override string ToString() => ""B""; } class C { public override string ToString() => ""C""; } static void Main(string[] args) { var results = new List { new A() } .Concat(new List { new B() }) .Concat(new List { new C() }) .ToArray(); Console.WriteLine(string.Join(' ', results)); } } ``` This program should print ""A B C"", but it instead prints ""A B A"". I believe the problem is in the specialised implementation of concatenation for 3+-enumerables-of-collections. I ran into it in an actual project (an IEnumerable containing multiple subclass instances) but I've worked around the bug by using `ToList()` instead. [EDIT] Add C# syntax highlight by @karelz" +23681 area-System.Net Inconsistent certificate handling between Linux and Windows "The following code yields different results on Linux and Windows (STARTTLS in SMTP) On Windows the cert is handled correctly and the cert subj is printed to stdout. On Linux (Fedora 26, Debian 9) cert is null in the CertificateValidationCallbakc (null if printed to stdout) ```c# using System; using Newtonsoft.Json; using System.Net.Sockets; using System.Net.Security; using System.Security; using System.IO; using System.Security.Cryptography.X509Certificates; using System.Security.Authentication; using System.Text; namespace code3 { class Program { static void Main(string[] args) { var host = ""mail.galapp.net""; using (var c = new TcpClient(host, 587)) using (var s = c.GetStream()) using (var sw = new StreamWriter(s, Encoding.ASCII)) using (var sr = new StreamReader(s, Encoding.ASCII)) { var l = read(); sw.Write(""EHLO localhost\r\n""); sw.Flush(); var l1 = read(); sw.Write(""STARTTLS\r\n""); sw.Flush(); var l2 = read(); using (var ss = new SslStream(s, false, (snd, cert, chain, err) => { Console.WriteLine(cert == null ? ""null"": cert.Subject); return true; })) { ss.AuthenticateAsClient(host, new X509CertificateCollection(), SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, false); } // handle SMTP response string read() { byte[] buffer = new byte[1024]; int position = 0; bool lastLine = false; do { int readLength = s.Read(buffer, position, buffer.Length - position); if (readLength > 0) { int available = position + readLength - 1; if (available > 4 && (buffer[available] == '\n' || buffer[available] == '\r')) for (int index = available - 3; ; index--) { if (index < 0 || buffer[index] == '\n' || buffer[index] == '\r') { lastLine = buffer[index + 4] == ' '; break; } } position += readLength; if (position == buffer.Length) { byte[] newBuffer = new byte[buffer.Length * 2]; Array.Copy(buffer, 0, newBuffer, 0, buffer.Length); buffer = newBuffer; } } else { break; } } while (!lastLine); return Encoding.ASCII.GetString(buffer, 0, position - 1); } } } } } ``` [EDIT] Add C# syntax highlighting by @karelz" +23682 area-Infrastructure Remove EOL openSuSE 42.1 +23683 area-Infrastructure Remove EOL openSuSE 42.1 +23684 area-Infrastructure Remove EOL openSuSE 42.1 +23685 area-Infrastructure Remove EOL openSuSE 42.1 +23686 area-System.Security Rsa ToXmlString is not supported on .NET Core 2.0 "@myloveCc commented on [Sun Aug 20 2017](https://github.com/dotnet/core/issues/874) # rsa.ToXmlString(true) is not supported on .NET Core 2.0 ```csharp var rsa = RSA.Create(2048); var privateKey = rsa.ToXmlString(true); // //not supported exception ``` --- @bartonjs commented on [Mon Aug 21 2017](https://github.com/dotnet/core/issues/874#issuecomment-323742850) Yep. In .NET Framework networking, XML, and cryptography all live in one library (mscorlib). In .NET Core they're in three separate libraries, and making this method work requires a circle: * XML needs networking, because (even though we discourage it) DTDs can initiate downloads. * Networking needs cryptography because TLS/https have X.509 certificates. * Cryptography needs XML for ToXmlString/FromXmlString. The easiest link to snip is the ToXmlString/FromXmlString methods. Technically ToXmlString can be written without XML (like in [.NET Framework's implementation](http://referencesource.microsoft.com/#mscorlib/system/security/cryptography/rsa.cs,fd15a0bacd426550), but FromXmlString requires an XML parser. My recommendation would be to make a `public static string ToXmlString(this RSAParameters rsaParameters)` method, and a `public static RSAParameters FromXmlString(string xml)` method; borrowing from NetFx and [CoreFx's SignedXml](https://github.com/dotnet/corefx/blob/c88064e2054fca0789511410260906ff5ff0468d/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/RSAKeyValue.cs); and to ultimately try moving off of the XML representations. --- @myloveCc commented on [Mon Aug 21 2017](https://github.com/dotnet/core/issues/874#issuecomment-323894072) ### This feature is not difficult, and I have been achieved in my project。 ```csharp using System; using System.Security.Cryptography; using System.Xml; using Newtonsoft.Json; using NETCore.Encrypt.Shared; using NETCore.Encrypt.Internal; namespace NETCore.Encrypt.Extensions.Internal { internal static class RSAKeyExtensions { #region JSON internal static void FromJsonString(this RSA rsa, string jsonString) { Check.Argument.IsNotEmpty(jsonString, nameof(jsonString)); try { var paramsJson = JsonConvert.DeserializeObject(jsonString); RSAParameters parameters = new RSAParameters(); parameters.Modulus = paramsJson.Modulus != null ? Convert.FromBase64String(paramsJson.Modulus) : null; parameters.Exponent = paramsJson.Exponent != null ? Convert.FromBase64String(paramsJson.Exponent) : null; parameters.P = paramsJson.P != null ? Convert.FromBase64String(paramsJson.P) : null; parameters.Q = paramsJson.Q != null ? Convert.FromBase64String(paramsJson.Q) : null; parameters.DP = paramsJson.DP != null ? Convert.FromBase64String(paramsJson.DP) : null; parameters.DQ = paramsJson.DQ != null ? Convert.FromBase64String(paramsJson.DQ) : null; parameters.InverseQ = paramsJson.InverseQ != null ? Convert.FromBase64String(paramsJson.InverseQ) : null; parameters.D = paramsJson.D != null ? Convert.FromBase64String(paramsJson.D) : null; rsa.ImportParameters(parameters); } catch { throw new Exception(""Invalid JSON RSA key.""); } } internal static string ToJsonString(this RSA rsa, bool includePrivateParameters) { RSAParameters parameters = rsa.ExportParameters(includePrivateParameters); var parasJson = new RSAParametersJson() { Modulus = parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null, Exponent = parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null, P = parameters.P != null ? Convert.ToBase64String(parameters.P) : null, Q = parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null, DP = parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null, DQ = parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null, InverseQ = parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null, D = parameters.D != null ? Convert.ToBase64String(parameters.D) : null }; return JsonConvert.SerializeObject(parasJson); } #endregion #region XML public static void FromXmlString(this RSA rsa, string xmlString) { RSAParameters parameters = new RSAParameters(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); if (xmlDoc.DocumentElement.Name.Equals(""RSAKeyValue"")) { foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes) { switch (node.Name) { case ""Modulus"": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""Exponent"": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""P"": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""Q"": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""DP"": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""DQ"": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""InverseQ"": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; case ""D"": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break; } } } else { throw new Exception(""Invalid XML RSA key.""); } rsa.ImportParameters(parameters); } public static string ToXmlString(this RSA rsa, bool includePrivateParameters) { RSAParameters parameters = rsa.ExportParameters(includePrivateParameters); return string.Format(""{0}{1}

{2}

{3}{4}{5}{6}{7}
"", parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null, parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null, parameters.P != null ? Convert.ToBase64String(parameters.P) : null, parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null, parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null, parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null, parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null, parameters.D != null ? Convert.ToBase64String(parameters.D) : null); } #endregion } } ``` --- @Petermarcu commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/874#issuecomment-326073405) @danmosemsft can you get this moved over to dotnet/corefx to be tracked as an issue there? " +23687 area-System.Globalization More fixes for the failing tests on 2.0 Fixes #21425 #21426 +23688 area-System.Security SymmetricAlgorithm and CryptoStream.Write throws ArgumentException with DES and RC2 "Hi, I'm trying to port an class library to .net core 2.0, I have a class that uses SymmetricAlgorithm that Ciphers and deciphers some strings and files, in my unit tests when the Algorithm is DES or RC2 and try to decipher (cipher works OK ) the method CryptoStream.Write throws an argument exception with the message : ""Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection."" (TriplesDes and Rijndael works fine), the problem is in the following line ```c# using (CryptoStream cryptoStream = new CryptoStream(destinyStream, symmetric.CreateDecryptor(), CryptoStreamMode.Write)) { long total = sourceStream.Length; //// total number of bytes to read byte[] temporal = new byte[4096]; //// temporal storage long read = 0; //// number of bytes read in the cycle int actualRead; //// number of bytes actually read while (read < total) { actualRead = sourceStream.Read(temporal, 0, CipherBuffer); cryptoStream.Write(temporal, 0, actualRead); // <- here is the error read += actualRead; } cryptoStream.FlushFinalBlock(); } ``` I created a new project (File -> new Project -> Console Project) and I'm attaching the project where I can reproduce the issue, in this project I'm using a salt and IV with just zeroes (I don't know if that's the problem) Thanks a lot for your time Edit: I added a Console app to the solution with the full framework with the same code and the program runs fine. [ClassLibraryVer2.zip](https://github.com/dotnet/corefx/files/1264804/ClassLibraryVer2.zip) [EDIT] Fix code formatting, add C# syntax by @karelz" +23689 area-System.Runtime Invariant Arrays "# Rationale and Proposed Usage .NET arrays are covariant. These leads to many complexities in the implementation of the runtime for dealing with checking if assignments to the array are valid. For example, ```csharp object [] a = ...; //A a[1]= ""hello""; //B ``` The assignment labelled `//B` must check if the `a` allows `string`s to be stored in it. If the initialisation, had been: ```csharp object [] a = new Node[10]; ``` this would raise an exception at `//B`. There are clever/ugly workarounds to remove the runtime type checks, such as https://codeblog.jonskeet.uk/2013/06/22/array-covariance-not-just-ugly-but-slow-too/. But they do not provide nice interop as moving between covariant arrays and invariant arrays using this approach requires coping. Generics negates many of the reasons for covariant subtyping on arrays. Let's add arrays that are invariantly typed, and thus do not require type checks for assignments. This proposal is to wrap standard covariant arrays with a generic struct to make its use invariantly typed, and thus enable optimization at the runtime level. If we had ```csharp InvariantArray a = new InvariantArray(10); ``` We would simply not be allowed to cast it to a different type as generic parameters to classes and structs are invariant with respect to subtyping. I think an initially beneficiary of this addition would be `System.Collections.Generic.List`, where this is used to store lots of objects the runtime type checking can be noticeable. # Proposed API ```csharp public struct InvariantArray { public InvariantArray(T[] array) {} public InvariantArray(int length) {} public ref T this[int index] { get } public int Length { get; } public T[] AsArray() { return null; } public static implicit operator T[](InvariantArray ia) { return null; } public static void Copy(InvariantArray dst, U[] src) where U : S {} /// Other things from ArrayNative } ``` This should be expanded to cover most of the things in System.Array. # Implementation sketch I believe this could be implemented using similar tricks to those used in `Span`. ```csharp public struct InvariantArray { private T[] inner; public InvariantArray(T[] array) { if (array.GetType() == typeof(T[])) { inner = array; } else { throw new Exception(); } } public InvariantArray(int length) { inner = new T[length]; } public ref T this[int index] { get { // Replace with something like the following unverifiable code: // ldloc inner // ldloc index // readonly ldelema T return ref inner[index]; } } public int Length => inner.Length; public T[] AsArray() { return inner; } public static implicit operator T[](InvariantArray ia) { return ia.AsArray(); } public static void Copy(InvariantArray dst, U[] src) where U : S { // Implement array copy without requiring type checking } /// Other things from ArrayNative } ``` * This could be initially implemented as an internal struct inside CoreCLR, where a few collections could be ported to use it. Most notably `System.Collections.Generic.List`. This could demonstrate the performance benefits. * There may need to be an additional Jit helper to implement the index property efficiently, but I believe this may just work with unsafe IL. So it could be possible to prototype on Corefxlab as was done with Span. * This approach would allow zero allocation interop with existing array code, where covariant subtyping has not be used. It is wrapping the covariant array, rather than making an internal wrapper, hence the private field can be returned to get a standard array. # Issues * The API needs fleshing out to reach parity with System.Array, but I wanted to gauge if invariant arrays might be taken before doing that work. " +23690 area-System.Drawing "CentOS CI test machines need ""liberation-serif-fonts"" package installed" This package contains some fonts that are used by the System.Drawing.Common implementation. Other distros seem to bundle these fonts in elsewhere, because we only see test failures on CentOS. +23691 area-Serialization Need set the SGEN package version to the real version +23692 area-System.Runtime Random span-based API tests Added tests for Span API in Random class. References https://github.com/dotnet/corefx/issues/22356. Depends on https://github.com/dotnet/coreclr/pull/13708. +23693 area-System.Drawing Unify implementations of StringFormat. CharacterRange.cs is not new code -- it was was previously in StringFormat.cs. +23694 area-System.Net SslStream - Making the reset buffer logic clearer "These are to make the ""returning"" of the buffer logic clearer. Also the asserts caught the fact that the logic was a little odd. We don't need to resize the buffer anymore therefore we don't have to call the ""ensureinternalbuffersize"" on each read (for the header and the frame). So I have removed that, renamed to ""ResetReadBuffer"". Removed one of the extra checks on the if statement for ""if buffercount > 0 && bufferoffset >0"". So this has the buffercount removed and an assert added to make sure we only ever get here if the buffer is null or if it has data (if it doesn't have data it should be released). Finally I added an extra assert to double check there are no decrypted bytes left. Using @geoffkizer benchmark on Azure windows 4 cores I see no difference in the 256 byte test a slight uptick in the bigger buffer but nothing to write home about. " +23699 area-Infrastructure Generic linux-x64 RID for supported distros prevents shipping native dependencies in package I have a NuGet [package](https://github.com/libgit2/libgit2sharp.nativebinaries) that needs to ship a native library via the `runtimes//native` mechanism, and I need to vary the library by linux distro due to the dependencies it has, OpenSSL being the primary one. I want to be able to run on all of the supported linux distros listed [here](https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.md), but while testing them, I've noticed that when running `dotnet --info`, some of them show a specific RID, while others just have `linux-x64` listed as the RID. This makes it impossible to ensure the correct version of the library will be chosen. If I understand the dotnet CLI code correctly, it appears that the reason some of them are falling back to the generic RID is because the [runtime.json](https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json) file hasn't been updated for them. Here is the list of distros I have tested so far, and the RIDs that are displayed via `dotnet --info`: - CentOS 7 (centos.7-x64) - Fedora 25 (fedora.25-x64) - Fedora 26 (fedora.26-x64) - Debian 9 (linux-x64) - Ubuntu 14.04 (ubuntu.14.04-x64) - Ubuntu 16.04 (ubuntu.16.04-x64) - Ubuntu 17.04 (linux-x64) - Linux Mint 18.2 (linux-x64) - openSUSE 42.2 (linux-x64) Was this just an oversight, or is this an intentional change to stop updating this file? If it was intentional, can you explain the reasoning? I can't just ship a single library using the `linux-x64` RID because, for example, I need to compile a separate library for Debian and openSUSE. Right now, it appears that I don't have a way to do that. +23701 area-System.Memory Adding Memory, OwnedMemory, MemoryHandle, and IRetainable & Tests ~The CI will be green after the corresponding PR in coreclr gets merged: https://github.com/dotnet/coreclr/pull/13583~ [Done] ~**In Progress:** Working on adding tests (including those from corefxlab - https://github.com/dotnet/corefxlab/tree/master/tests/System.Buffers.Primitives.Tests).~ [Done] Part of https://github.com/dotnet/corefxlab/issues/1711 Adding the following types: - Memory\ - ReadOnlyMemory\ - OwnedMemory\ - MemoryHandle - IRetainable +Added Unit Tests. Order of changes: 1) Add to mscorlib (https://github.com/dotnet/coreclr/pull/13583). 2) After the type has been added to mscorlib, add impl (for portable) and type forwarders to System.Memory (this PR) and System.Runtime here in corefx. 3) Remove impl from corefxlab and update uses/references in Pipelines/Buffers.Experimental. 4) Other changes/additions like review/add APIs from MemoryExtensions cc @shiftylogic, @KrzysztofCwalina, @davidfowl, @jkotas, @stephentoub, @AtsushiKan +23702 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test / ProxyExplicitlyProvided_DefaultCredentials_Ignored Opened on behalf of @v-haren The test `System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test/ProxyExplicitlyProvided_DefaultCredentials_Ignored` has failed. ``` Assert.Equal() Failure\r ? (pos 0)\r Expected: rightusername:rightpassword\r Actual: wrongusername:wrongpassword\r ? (pos 0) Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.ProxyExplicitlyProvided_DefaultCredentials_Ignored() in E:\A\_work\1039\s\corefx\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.DefaultProxyCredentials.cs:line 73 ``` Build : Master - 20170831.01 (Full Framework Tests) Failing configurations: - Windows.10.Amd64-x64 - Debug - Windows.10.Amd64-x86 - Debug +23705 area-System.Diagnostics Improving UseShellExecute implementation on Process.Start Fixes both #19956 and #22299 +23706 area-Microsoft.CSharp The StackOverflow exception is raised if C# code contains a generic object that nests a hierarchy of generic types I created the following simple console application where the problem is reproduced: ```c# class Program { static void Main(string[] args) { dynamic arg = 5; new Builder().SomeMethod(arg); } } public class Builder : BuilderBaseEx> { public Builder SomeMethod(object arg) { return this; } } public class BuilderBaseEx : BuilderBase where T : BuilderBaseEx { } public class BuilderBase where T : BuilderBase { } ``` After running the program, I got the StackOverflowException. The exception occurs only when I send a dynamic type object to the SomeMethod. If I send a non-dynamic type object, no error occurs. [EDIT] Add C# syntax highlight by @karelz +23707 area-System.Console "System.Console should support ""Indentation Levels""" # Rationale It is often desired to print text that is properly indented to make it easy to read. However, in order to track indentation across method calls you have to either implement some wrapper class or pass the indentation level around. As such, `System.Console` should be extended to natively support indentation levels in a similar manner to `Sytem.Diagnostics.Debug` # Proposal `System.Console` should be extended to support the following APIs: ```csharp public static partial class Console { // The indentation character, defaults to ' ' (space) public static char IndentChar { get; set; } // The indentation level, defaults to and will not decrease below 0 public static int IndentLevel { get; set; } // The number of times `IndentChar` is repeated per `IndentLevel`, defaults to 4 public static int IndentSize { get; set; } // Increases `IndentLevel` by one public static void Indent(); // Decreases `IdentLevel` by one public static void Unindent(); } ``` Then, there are two sub-proposals: ## Proposal A Additionally expose a `public static void WriteIndented()` and `public static void WriteLineIndented()`, each with all of the corresponding overloads that `Console.Write` and `Console.WriteLine` have. ## Proposal B `System.Console` should internally track when the last `WriteLine` occurred and only prefix the indentation on the next `Write` or `WriteLine`. This may end up being confusing to some users initially, but reduces the overall new APIs considerably. +23708 area-Meta Add T4 support There is no any code generation solution except of Razor, but it's coupled with web context. Add T4 support for code generation. +23709 area-Infrastructure Remove retry to remove cloning hangs +23710 area-System.IO Ensure file path is in IO exception messages "Historically IO exceptions have often not contained the path often due to CAS. That is not a concern any more and it is certainly more helpful to get ""Access to the path '{0}' is denied."" rather than ""Access to the path is denied."" We fixed this in Corelib https://github.com/dotnet/coreclr/commit/6ba74dc2a7194f8d6c86c3aeab572a074ef645c8 .. we should do a similar pass over CoreFX. Look for strings like `Could not find a part of the path` `The specified file name or path is too long, or a component of the specified path is too long.` `Access to the path is denied` and insert the path where possible. Similarly `Illegal characters in path.`" +23711 area-Infrastructure [release/2.0.0] Remove reference assemblies from NetFx netstandard support package Multiple tools in .NETFramework projects are attempting to load references for execution which fails for reference assemblies. To work better with these tools, don't use reference assemblies in the support package. Note: this only fixes the problem in our support package, and this change will need to be ingested by SDK in order to work. We should also consider making a change to our standalone packages. /cc @weshaggard Related: https://github.com/dotnet/sdk/issues/1522 +23712 area-System.Net Fix IPv6 address parsing when last number is too long When given an IPv6 address where the last number has more than four digits, rather than failing the parse we end up just using the last four digits. The last commit fixes that. The first three commits add a bunch more test cases, fix some duplication, and fix a test issue recently introduced where the IPAddress parsing tests weren't running on netfx. Fixes https://github.com/dotnet/corefx/issues/23639 cc: @davidsh, @geoffkizer, @joseph-newton +23713 area-System.Console release/2.0: Handle EAGAIN in Console.Write (#23539) If stdout/stderr is configured as a non-blocking file descriptor, Console.Write{Line} may fail if the descriptor is full and would block. With this commit, we instead poll in that case waiting for the ability to write and then retry. Port of https://github.com/dotnet/corefx/pull/23539 to release/2.0 branch. +23714 area-Infrastructure Moving the Windows Performance runs from Server 2012 to Server 2016. +23715 area-System.Net Ssl Stream Async Write /cc @stephentoub @geoffkizer @benaadams This needs a bit of tidy still, but I want to check the idea, naming, if you are all cool with it I will start benchmarking and checking off any previous issues. I used a single struct for the write side as that way I really only need a single pointer in the sync case and a pointer for the sslState and the cancellation token on the async side. It also means I don't have to drag that token around but get cancellation :) +23716 area-System.Threading Proposal: Asynchronously cancel a CancellationTokenSource "## **Proposal**: Add a way to asynchronously cancel a CancellationTokenSource I would like to suggest adding a method to CancellationTokenSource: ```C# public Task CancelAsync() ``` The method would work like Cancel, with a difference: - If no callback is registered, then the method processes synchronously and returns a completed task - If callbacks are registered, then a task is created and returned. That task will execute the callbacks and propagate the exceptions if any (just like Cancel) Alternatively, it could just be fire-and-forget: ```C# public void CancelAsync() ``` ## **Use case:** Whenever a CancellationTokenSource is cancelled, all registration callbacks are executed synchronously. While this is OK in most cases, I ran into the following scenario: - I have a long-running thread that can't afford to be held for a long time. This thread is in charge of cancelling the token (among other things). The thread is part of a framework. - The CancellationToken is handed to client code, over which I have no control. So I can't make sure that all callbacks can execute in a short time My problem is: in this scenario, how to guarantee that the client code won't ever block my thread for a significant amount of time? The most obvious solution is to call Cancel in another thread: ```C# Task.Run(cts.Cancel); ``` This would work. However, I would end up queuing work to the threadpool everytime I cancel a token, even though most of the tokens won't have a callback registered. It feels wrong having to add a cost to the 99% case to handle the 1%. The ""CancelAsync"" method can't be implemented from outside: - To the best of my knowledge, there is no way to know whether a callback is registered on a CancellationToken - Even if there was, there would still be a race condition between the registration and the check I don't see any major obstacle to implementation, and I think it can be done without adding an additional field to the class. That said, I'm aware of how specific is the scenario I described, and I don't know if many applications would benefit from this. *** ## Past discussion This was moved from https://github.com/dotnet/coreclr/issues/13494 Copy of the discussion: *** #### davidfowl This is similar to dotnet/corefx#14903 (but for the actual cancellation call, not dispose). I think you need to be clear if you want to > The ""CancelAsync"" method can't be implemented from outside Sure it can be. See http://referencesource.microsoft.com/#System.Web/Util/CancellationTokenHelper.cs,cbfb354e962dfb2a for an example of how it could be done. There are some questions I have based on this request - Do you want the ability to wait on the callbacks? - Do you want wait on async callbacks? That is, if the user code you were calling was itself async, would you want to await that? *** #### kevingosse > Sure it can be. See http://referencesource.microsoft.com/#System.Web/Util/CancellationTokenHelper.cs,cbfb354e962dfb2a for an example of how it could be done. If I understand this code correctly, it always uses the threadpool to call `Cancel`. I was thinking of a way to use the threadpool only if there is a callback registered, and otherwise execute the call inline. The rationale being that in most cases there will be no callback (this is true for the codebase I work on, I'm not sure how representative it is). > Do you want the ability to wait on the callbacks? I don't need it in my scenario, that's why I also suggested the fire-and-forget version. In fact, I was first thinking of a `Cancel(bool executeCallbacksAsynchronously)` overload, but that's not possible because there's already a `Cancel(bool throwOnFirstException)`. Then I thought of `CancelAsync`. I'm not sure the task would actually be useful to anybody. > Do you want wait on async callbacks? That is, if the user code you were calling was itself async, would you want to await that? Same answer as above. " +23717 area-System.Console Handle EAGAIN in Console.Write Already fixed in master. https://github.com/dotnet/corefx/pull/23713 ports it to the release/2.0 branch and should be merged for 2.0.2. +23718 area-System.Data Enable SqlDataReader.GetValue() and GetSqlValue() for UDT types. Currently the UDT data is just returned as bytes. +23720 area-System.Security [release/2.0] Fix output buffer assumptions in CSP symmetric transforms. The CAPI DecryptData and EncryptData methods made assumptions about the calling patterns, in particular that the output buffer would be perfectly sized for the desired output. This change adds tests which violate those assumptions, but work on netfx and with the corefx CNG implementation. Then follows up on making the tests pass. NetFX idiosyncrasies: AesCryptoServiceProvider.CreateDecryptor on netfx guards against the key not being specified, but no other Aes class does. TripleDESCryptoServiceProvider on netfx doesn't check if the output buffer is too small, so the ArgumentOutOfRangeException ends up being a CryptographicException instead. Port of #23613 to release/2.0. Fixes #23311 in release/2.0 +23721 area-System.Data Connection pool fragmentation by connection string variation (case, space..etc) Connection String A: `Server=tcp:.;User ID=testuser;Password=test1234;pooling=true` Connection String B: `Server=tcp:.;User ID=testuser;Password=test1234; pooling=true` (notice a space where `pooling=true` starts) Connection String C: `Server=tcp:.;User ID=testuser;Password=test1234;pooling=True` Connection strings A, B, and C are indicating the same connection, but they creates separated connection pool for each of them although only one connection pool is supposed to be created. +23722 area-System.Data Fix connection pool & connection pool group fragmentation This is fix for https://github.com/dotnet/corefx/issues/23626 This issue is fixed by moving code part for the connection pool creation to synchronized (lock) block so that only one thread can create connection pool, and adds it to pool group. It will prevent the extra empty pool creation, which will save memory and CPU resource consumption. Addition unit test is not added since existing unit tests utilize the code spot this fix is applied on. +23723 area-System.Data Rollback UDT changes to SqlDataReader.GetValue() and GetSqlValue(), since they are expected to throw PlatformNotSupportedExceptions with UDTs. Rolls back changes from this commit: https://github.com/dotnet/corefx/commit/2b790aa855ef28c84711f4c8f8fc9e630548b207 Also adds a UDT test to verify the PlatformNotSupportedExceptions +23725 area-System.Linq "Tests under: System.Linq.Expressions.Tests failed with ""System.ArgumentException : The type 'System.Linq.Expressions.Tests.GenericClass`1[T]' may not be used as a type argument""" Opened on behalf of @Jiayili1 The test `System.Linq.Expressions.Tests.Assign/Left_InvalidType_ThrowsArgumentException` has failed. System.TypeInitializationException : A type initializer threw an exception. To determine which type, inspect the InnerException's StackTrace property.\r ---- System.ArgumentException : The type 'System.Linq.Expressions.Tests.GenericClass`1[T]' may not be used as a type argument. Stack Trace: at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun$catch$0() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 114 at System.Runtime.CompilerServices.ClassConstructorRunner.CheckStaticClassConstruction(Void* returnValue, StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 37 at System.Linq.Expressions.Tests.InvalidTypesData.d__2.MoveNext() in E:\A\_work\357\s\corefx\src\System.Linq.Expressions\tests\HelperTypes.cs:line 307 at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun(StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 92 at System.Runtime.CompilerServices.ClassConstructorRunner.CheckStaticClassConstruction(Void* returnValue, StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 37 at System.Linq.Expressions.Tests.InvalidTypesData.d__2.MoveNext() in E:\A\_work\357\s\corefx\src\System.Linq.Expressions\tests\HelperTypes.cs:line 307 at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun(StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 92 at System.Runtime.CompilerServices.ClassConstructorRunner.CheckStaticClassConstruction(Void* returnValue, StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 37 at System.Linq.Expressions.Tests.InvalidTypesData.d__2.MoveNext() in E:\A\_work\357\s\corefx\src\System.Linq.Expressions\tests\HelperTypes.cs:line 307 at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun(StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 92 at System.Runtime.CompilerServices.ClassConstructorRunner.CheckStaticClassConstruction(Void* returnValue, StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 37 at System.Linq.Expressions.Tests.InvalidTypesData.d__2.MoveNext() in E:\A\_work\357\s\corefx\src\System.Linq.Expressions\tests\HelperTypes.cs:line 307 ----- Inner Stack Trace ----- at System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo.ConstructedGenericTypeTable.Factory($UnificationKey key) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\General\TypeUnifier.cs:line 430 at System.Collections.Concurrent.ConcurrentUnifierWKeyed$2.GetOrAdd($UnificationKey key) in f:\dd\ndp\fxcore\CoreRT\src\Common\src\System\Collections\Concurrent\ConcurrentUnifierWKeyed.cs:line 136 at System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo.GetRuntimeConstructedGenericTypeInfo($RuntimeTypeInfo genericTypeDefinition, $RuntimeTypeInfo[] genericTypeArguments, RuntimeTypeHandle precomputedTypeHandle) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\General\TypeUnifier.cs:line 381 at System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo.MakeGenericType(Type[] typeArguments) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeTypeInfo.cs:line 16707566 at System.Linq.Expressions.Tests.InvalidTypesData..cctor() in E:\A\_work\357\s\corefx\src\System.Linq.Expressions\tests\HelperTypes.cs:line 303 at System.Runtime.CompilerServices.ClassConstructorRunner.EnsureClassConstructorRun(StaticClassConstructionContext* pContext) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\ClassConstructorRunner.cs:line 92 Build : Master - 20170901.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170901.01/workItem/System.Linq.Expressions.Tests/analysis/xunit/System.Linq.Expressions.Tests.Assign~2FLeft_InvalidType_ThrowsArgumentException +23726 area-System.Runtime "Test: System.Runtime.Serialization.Formatters.Tests.FormatterServicesTests/GetUninitializedObject_OpenGenericClass_ThrowsMemberAccessException failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `System.Runtime.Serialization.Formatters.Tests.FormatterServicesTests/GetUninitializedObject_OpenGenericClass_ThrowsMemberAccessException` has failed. System.ArgumentException : The type 'System.Runtime.Serialization.Formatters.Tests.FormatterServicesTests+GenericClass`1[T]' may not be used as a type argument. Stack Trace: at System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo.ConstructedGenericTypeTable.Factory($UnificationKey key) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\General\TypeUnifier.cs:line 430 at System.Collections.Concurrent.ConcurrentUnifierWKeyed$2.GetOrAdd($UnificationKey key) in f:\dd\ndp\fxcore\CoreRT\src\Common\src\System\Collections\Concurrent\ConcurrentUnifierWKeyed.cs:line 136 at System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo.GetRuntimeConstructedGenericTypeInfo($RuntimeTypeInfo genericTypeDefinition, $RuntimeTypeInfo[] genericTypeArguments, RuntimeTypeHandle precomputedTypeHandle) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\General\TypeUnifier.cs:line 381 at System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo.MakeGenericType(Type[] typeArguments) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeTypeInfo.cs:line 16707566 at System.Runtime.Serialization.Formatters.Tests.FormatterServicesTests.d__11.MoveNext() in E:\A\_work\357\s\corefx\src\System.Runtime.Serialization.Formatters\tests\FormatterServicesTests.cs:line 83 at System.Linq.Enumerable.SelectEnumerableIterator$2.MoveNext() in E:\A\_work\357\s\corefx\src\System.Linq\src\System\Linq\Select.cs:line 129 Build : Master - 20170901.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170901.01/workItem/System.Runtime.Serialization.Formatters.Tests/analysis/xunit/System.Runtime.Serialization.Formatters.Tests.FormatterServicesTests~2FGetUninitializedObject_OpenGenericClass_ThrowsMemberAccessException +23727 area-System.IO Improve StreamWriter Fixes #23874 Summary of main changes Use ArrayPool in StreamWriter * Rents **char** buffer on first `Write` or `WriteAsync` to backing buffer. * Rents **byte** buffer on first `Flush` or `FlushAsync` (can happen during `Write`s). * Returns **char** and **byte** buffer on `Stream` flush (doesn't always happen during `Flush` i.e. a mid `Write` flush. (Return once enforced using `Interlocked.Exchange`) Faster small Writes * Changed to using local vars for counts rather than class vars, for better register use Sync-Fast Paths * FlushAsync methods now have non-statemachine fast-paths when completing sync Code depue * Merged `Write(char[], int, int)` and `Write(char[])` to `WriteInternal(char[], int, int)` * Merged `Write(string)`/`Writeline(string)` main functionality to `WriteInternal(string)` No Copy Write/WriteAsync * It buffers and writes chunks to the stream in `bufferSize` **char** arrays (as before) * If **char** buffer is empty and the remaining chars to write is above the `DontCopyOnWriteThreshold` (512 bytes); it encodes directly to the byte array rather than via the **char** buffer, in up to `bufferSize` chunks, leaving the remaining in the **char** array (i.e. less than `DontCopyOnWriteThreshold`). For large arrays and `string`s; when there is data in the buffer, this will occur second time in loop etc. For the blocking `Write(char[])`/`Write(string)`/`Flush`s specifically: * Below the `RentFromPoolThreshold` (64 bytes) it uses `stackalloc` rather than renting a **byte** buffer. Effects * Small writes are faster <= 4 bytes * Medium writes a little slower (4 - 512 bytes) due to addition of lazy array pool acquisition, fast release * Large writes faster as no extra copy prior to transform * Allocations from creating and using `StreamWriter` from 5432 bytes, to 264 bytes Contributes to https://github.com/dotnet/corefx/issues/5598 /cc @stephentoub Fixes https://github.com/dotnet/corefx/issues/8376 /cc @GSPP @ianhays +23731 area-System.Net ClientWebSocket does not send SNI header on linux "When creating a ClientWebSocket to a `wss://` url on linux (Ubuntu 16.04), the SNI header is not set in the TLS handshake. This is in violation of the WebSockets RFC (And it breaks real world usage when SNI is actually required) https://tools.ietf.org/html/rfc6455#page-17 (End of point 5). Linux (Ubuntu 16.04-x64) ![image](https://user-images.githubusercontent.com/393086/29955833-af5bf956-8f36-11e7-8291-27b8f194c338.png) (`extension: server_name` is missing) Windows ![image](https://user-images.githubusercontent.com/393086/29955836-b7347e6e-8f36-11e7-818d-121752fe5a69.png) (`extension: server_name` is included) **Test code** This will succeed as SNI is not required for this server, however if you look at the packets in wireshark the SNI extension is not included. ```cs using System; using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; namespace HttpsTest { class Program { static void Main(string[] args) { Task.Run(WebSocketTask).Wait(); } static async Task WebSocketTask() { var ws = new ClientWebSocket(); Console.WriteLine(""Connecting""); await ws.ConnectAsync(new Uri(""wss://echo.websocket.org""), CancellationToken.None); Console.WriteLine(""Sending""); await ws.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes(""test hi"")), WebSocketMessageType.Text, true, CancellationToken.None); Console.WriteLine(""Receiving""); var res = await ws.ReceiveAsync(new ArraySegment(new byte[100]), CancellationToken.None); Console.WriteLine(""Received "" + res.Count); await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, String.Empty, CancellationToken.None); } } } ```" +23734 area-System.Runtime "Tests under: System.Tests.ValueTypeTests failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Tests.ValueTypeTests/StructWithDoubleFieldNotTightlyPackedNaNCompareTest` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Tests.ValueTypeTests.StructWithDoubleFieldNotTightlyPackedNaNCompareTest() in E:\A\_work\357\s\corefx\src\System.Runtime\tests\System\ValueTypeTests.cs:line 59 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in CallDynamicInvokeMethod:line 16707566 Build : Master - 20170901.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Debug - Release - Windows.10.Amd64.ClientRS3-x86 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170901.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.ValueTypeTests~2FStructWithDoubleFieldNotTightlyPackedNaNCompareTest +23738 area-System.Security "Tests under ""System.Security.Cryptography.X509Certificates.Tests"" failed with ""Interop+AppleCrypto+AppleCommonCryptoCryptographicException"" in CI" Failed tests: System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.ReOpen_IsOpenTrue System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.AddReadOnlyThrowsWhenCertificateExists System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.ReadMyCertificates System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Constructor_OpenFlags_StoreName System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Dispose_IsOpenFalse System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.AddDisposedThrowsCryptographicException System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.AddReadOnlyThrows System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Constructor_OpenFlags System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.RemoveReadOnlyThrowsWhenFound System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Constructor_OpenFlags_OpenAnyway System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.TestDispose System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.OpenMyStore System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Constructor_StoreHandle System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.Open_IsOpenTrue System.Security.Cryptography.X509Certificates.Tests.CertTests.X509Cert2ToStringVerbose MESSAGE: ~~~ Interop+AppleCrypto+AppleCommonCryptoCryptographicException : A default keychain could not be found. ~~~ STACK TRACE: ~~~ at Interop.AppleCrypto.SecKeychainCopyDefault() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.Keychain.cs:line 106 at Internal.Cryptography.Pal.StorePal.FromSystemStore(String storeName, StoreLocation storeLocation, OpenFlags openFlags) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/StorePal.cs:line 106 at System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509Store.cs:line 127 at System.Security.Cryptography.X509Certificates.Tests.X509StoreTests.ReOpen_IsOpenTrue() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/System.Security.Cryptography.X509Certificates/tests/X509StoreTests.cs:line 201 ~~~ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release/2971/testReport/ +23741 area-System.Reflection Add GenericMethodParameters and GenericMethodArguments to MethodBase "## Proposed Additions ``` class MethodBase { public virtual Type[] GenericMethodArguments => IsConstructedGenericMethod ? GetGenericArguments() : Array.Empty(); public virtual Type[] GenericMethodParameters => IsGenericMethodDefinition ? GetGenericArguments() : Array.Empty(); } ``` As with most Reflection methods, these are defined virtually to allow implementors to override with more efficient versions. CoreRT is well positioned to do this. ## Rationale ### Symmetry These properties exist on `TypeInfo` (as `GenericTypeArguments` and `GenericTypeParameters`). It is inconsistent for them to be missing on `MethodBase` With this addition, the api space would look like this: | Type/TypeInfo | MethodBase/MethodInto | | ---- | ---- | | IsGenericType | IsGenericMethod | | IsGenericTypeDefinition | IsGenericMethodDefinition | | GetGenericArguments | GetGenericArguments | | GetGenericTypeDefinition | GetGenericMethodDefinition | | MakeGenericType | MakeGenericMethod | | IsConstructedGenericType | IsConstructedGenericMethod | | ContainsGenericParameters | ContainsGenericParameters | | GenericTypeArguments | GenericMethodArguments [new] | | GenericTypeParameters | GenericMethodParameters [new] | @AtsushiKan > ### GetGenericArguments() is a code smell > Generic parameters and generic arguments are different things. The former are the ""type formals"" declared by the generic method definition. The latter are the actual (usually closed) types used to create an instantiation of the generic method definition. The 2.0 `GetGenericArguments()` api conflates the two, and while it's not the end of the world, some developers prefer to be explicit about their intentions. @kingces95 > ### GetGenericArguments() smells of roses > See [comment](https://github.com/dotnet/corefx/issues/23741#issuecomment-326705519) ## Why on MethodBase rather than MethodInfo The existing pattern in Reflection is to put apis pertaining to generics on `MethodBase` **unless** the api returns a method, in which case, it lives on `MethodInfo` so that the caller receives a `MethodInfo` without casting. Should .NET ever decide to support generic constructors, this bit of future proofing will pay off - in any case, it costs next to nothing to put it on `MethodBase`. The following apis already exist on `MethodBase`. - IsGenericMethodDefinition - IsConstructedGenericMethod - IsGenericMethod - GetGenericArguments ## Naming: GenericMethodParameters or GenericTypeParameters? While a case could be made that the word ""Type"" refers to the fact that generic parameters are ""**type** variables"", we did just introduce a new api named `Type.MakeGenericMethodParameter()`. So I'm inclined to roll with the ""Method"" names." +23742 area-System.Security WindowsIdentity ctor should pass authType to base This constructor passes null to base, should pass authType https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System/Security/Principal/WindowsIdentity.cs#L202 +23743 area-Infrastructure How can we maintain library packages for things that also ship in framework packages? "See https://github.com/dotnet/corefx/issues/23656, https://github.com/dotnet/corefx/pull/23719#issuecomment-326450314, and https://github.com/dotnet/corefx/commit/75962dae7f338445b57d7d276d018774e1dd2e46. Whenever we wish to expose portable surface area for a library we must do so through a package. If that library is also *inbox* in the framework the framework will carry an optimized version of the library that should take precedence. In all cases the library does not need to follow the netstandard rules (new API can only be in a new NETStandard version), since it is not part of netstandard. 1. In some cases the library can deliver its implementation completely out of band to all frameworks, so the library will want to add new API in a new package and make that API available to all platforms supporting some low version of netstandard say `netstandard1.1`. It needs to do this without regressing the inbox implementations on existing frameworks, and also without dropping support for those frameworks or causing missing member/type exceptions or loader exceptions. Examples of this sort of library are System.Collections.Immutable, System.Buffers, and System.Memory. The latter two are interesting in that they are coupled to the NETCore runtime and must preserve that implementation. 2. In other cases the library cannot deliver new implementation out of band to some frameworks: for example if the library is exposing types that already exist in desktop and we do not wish to (or cannot) deliver a replacement library out of band. In this case the library cannot add API to existing netstandard versions because those imply a version of desktop which will not have the new API. In these cases we should freeze the API and the assembly version, and ideally not even rebuild the library unless it contains actual code. We should also ensure our build system leads folks into this path so that we don't accidentally break these rules. Examples of this sort of library are Microsoft.CSharp and System.IO.Ports. We can refer to these two cases as ""OOB"" libraries and ""Anchored"" libraries for the purpose of this discussion. /cc @weshaggard @terrajobst @Petermarcu " +23744 area-System.Net release/2.0: Fix IPv6 address parsing when last number is too long Port https://github.com/dotnet/corefx/pull/23712 to release/2.0 (just the relevant commits). +23745 area-System.Net System.Net.Http.CurlException: Server returned nothing (no headers, no data) "Hi there, I'm getting an error `System.Net.Http.CurlException: Server returned nothing (no headers, no data)` when calling a https endpoint in .NET Core 1.1.2 only on Docker Container. Currently, it works on Windows running via Visual Studio, but it doesn't work inside my Linux Container. **As part of my customer environment, I have to add their CA certificates in our containers but it still doesn't work. Please, could you someone highlight any issue with my approach? **The details are below:** My docker file is - ``` FROM microsoft/aspnetcore:1.1.2 ADD /CA.crt /usr/local/share/ca-certificates/CA.crt RUN chmod 777 /usr/local/share/ca-certificates/CA.crt RUN apt-get update && apt-get install -y apt-transport-https ca-certificates RUN update-ca-certificates ............ ``` Code example: ```c# var clientCertificate = new X509Certificate2(""Certificates/my-certificate.pfx"", ""password""); var handler = new HttpClientHandler(); handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.SslProtocols = SslProtocols.Tls12; handler.ClientCertificates.Add(clientCertificate); var httpClient = new HttpClient(handler); httpClient.DefaultRequestHeaders.Add(""Authorization"", ""Basic XPTO""); var response = await http.SendAsync(request); ``` Exception: ``` System.Net.Http.CurlException: Server returned nothing (no headers, no data) app_1 | at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error) app_1 | at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult) ``` File Info for `HttpClient`: ``` app_1 | [16:13:20 DBG] File: /usr/share/dotnet/shared/Microsoft.NETCore.App/1.1.2/System.Private.CoreLib.ni.dll app_1 | InternalName: System.Private.CoreLib.ni.dll app_1 | OriginalFilename: System.Private.CoreLib.ni.dll app_1 | FileVersion: 4.6.25211.01 app_1 | FileDescription: System.Private.CoreLib app_1 | Product: Microsoft/x00ae .NET Framework app_1 | ProductVersion: 4.6.25211.01. Commit Hash: 7a35adb1a68baa02f542ed06b5d7a1b9167f32fb app_1 | Debug: False app_1 | Patched: False app_1 | PreRelease: False app_1 | PrivateBuild: False app_1 | SpecialBuild: False app_1 | Language: Language Neutral app_1 | app_1 | [16:13:20 DBG] File: /usr/share/dotnet/shared/Microsoft.NETCore.App/1.1.2/System.Net.Http.dll app_1 | InternalName: System.Net.Http.dll app_1 | OriginalFilename: System.Net.Http.dll app_1 | FileVersion: 4.6.25220.01 app_1 | FileDescription: System.Net.Http app_1 | Product: Microsoft┬« .NET Framework app_1 | ProductVersion: 4.6.25220.01. Commit Hash: 936d52df0532d56a19ff8486bc9aa7eac19860b3 app_1 | Debug: False app_1 | Patched: False app_1 | PreRelease: False app_1 | PrivateBuild: False app_1 | SpecialBuild: False app_1 | Language: Language Neutral ``` [EDIT] Add C# syntax highlighting by @karelz" +23746 area-Infrastructure Update CoreClr, CoreFx to servicing-25708-01, servicing-25708-01, respectively (release/2.0.0) +23747 area-System.Drawing Fix up Unix Icon implementation and enable more tests "* Move Unix Icon.cs file into regular source tree, as ""Icon.Unix.cs"". Rename existing Windows code to ""Icon.Windows.cs"". * These files are still separate for now, and code isn't being shared. It is likely that we could share a lot more of the code if we just made a fully-managed version. `.ico` isn't the most complicated format in the world; we could just create our own managed parser and use it everywhere. Icon.Unix.cs already has quite a bit of platform-agnostic logic like that, but it is not very robust. If we did this, we could get 100% behavior compat. * Add several corrections to the Unix implementation, mainly around argument validation and exception types. * Re-enable several test cases which were either fixed by the above bullet, or were fixed at some previous time (there were a few that just passed without me fixing anything). @qmfrederik @hughbe Compat notes from this work: # Icon * Icon(Stream, int, int) constructor does not work correctly if you specify a size which does not match the true size of the Icon in the stream. On Windows, this is permitted and handled silently. * Icon constructors will not throw the same exception types when given invalid data. Instead of ArgumentException, constructors may throw Win32Exceptions instead. * Icon.FromHandle must be given a valid native Icon handle. Windows gracefully handles invalid handles, but libgdiplus may crash or otherwise behave poorly. * Icon.Dispose, when called on an Icon created via Icon.ExtractAssociatedIcon, does not destroy the underlying handle. * Icon.ExtractAssociatedIcon does not return a null Icon when passed invalid parameters. It will throw a FileNotFoundException instead. * Icon.ExtractAssociatedIcon may throw a FileNotFoundException when given an invalid path, rather than an ArgumentException. * Icon.Save may throw a NullReferenceException instead of an ArgumentNullException when passed a null stream. * Icon.Save may throw an ArgumentException rather than an ObjectDisposedException if it is given a Closed or non-writable Stream." +23748 area-Meta Don't directly throw Exception When looking at https://github.com/Microsoft/dotnet/issues/471, I noticed that the thrown exception is `Exception`, not a type derived from `Exception`. I think this should not be done and [the Framework Design Guidelines](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/using-standard-exception-types#exception-and-systemexception) agree. Instead, some derived type should be thrown. This issue seems to happen in a few places in CoreFX: ``` $ git grep -n 'new Exception(' | grep -v tests | cut -d: -f1,2 Common/src/System/Drawing/ColorConverterCommon.cs:131 System.ComponentModel.TypeConverter/src/System/ComponentModel/BaseNumberConverter.cs:48 System.Configuration.ConfigurationManager/src/System/Configuration/GenericEnumConverter.cs:35 System.Configuration.ConfigurationManager/src/System/Configuration/GenericEnumConverter.cs:42 System.Configuration.ConfigurationManager/src/System/Configuration/GenericEnumConverter.cs:47 System.Configuration.ConfigurationManager/src/System/Configuration/ProtectedConfigurationSection.cs:58 System.Configuration.ConfigurationManager/src/System/Configuration/ProtectedConfigurationSection.cs:88 System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIProxy.cs:162 System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNIProxy.cs:166 System.Data.SqlClient/src/System/Data/SqlClient/SqlUtil.cs:191 System.Drawing.Common/src/System/Drawing/Graphics.cs:216 System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs:352 System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs:398 System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs:417 System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs:493 System.Net.Http/src/System/Net/Http/Unix/CurlHandler.CurlResponseMessage.cs:61 System.Net.Mail/src/System/Net/Mail/MailHeaderInfo.cs:79 System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.WinRT.cs:49 System.Private.DataContractSerialization/src/System/Runtime/Serialization/DiagnosticUtility.cs:83 System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonReader.cs:357 System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs:3217 System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs:3219 System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs:3609 System.Private.Xml/src/System/Xml/Serialization/XmlSerializationWriter.cs:1925 System.Private.Xml/src/System/Xml/Serialization/Xmlcustomformatter.cs:80 System.Private.Xml/src/System/Xml/Serialization/Xmlcustomformatter.cs:246 System.Private.Xml/src/System/Xml/Xsl/Xslt/XPathPatternBuilder.cs:331 System.Runtime.WindowsRuntime/src/System/Runtime/InteropServices/WindowsRuntime/WindowsRuntimeBuffer.cs:94 System.Runtime.WindowsRuntime/src/System/Threading/Tasks/TaskToAsyncInfoAdapter.cs:983 System.Security.AccessControl/src/System/Security/AccessControl/SecurityDescriptor.cs:675 System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs:1356 ``` There are also many cases where CoreFX tests throw `Exception`, but I think that's okay. +23749 area-System.Drawing Use string resources in Unix System.Drawing.Common The code from mono does not use string resources. We should go through and replace hard-coded strings with resources. Ideally, these resources should be shared with the Windows version where applicable. +23750 area-System.Net Respect UseProxy better in ManagedHandler To match CurlHandler, we should only be using environment variable-based proxy configuration if UseProxy is true, but we're currently using it regardless. This commit fixes that and adds a test for it. cc: @geoffkizer, @wfurt +23751 area-Infrastructure Updating CLI to 2.0.0 version cc: @weshaggard @ericstj Updating CLI version we use to the 2.0.0 version. +23752 area-System.Net Re-enable HTTP/2 test Turning back on the HTTP/2 test that relied on www.microsoft.com being HTTP/2 now that the HTTP/2 server farm processing those requests is working again. Fixes #22735 +23753 area-System.Drawing Delete Unix-specific ColorTranslator, KnownColor, SystemColors We can just replace all of these with the Windows implementation. As a consequence, I was able to re-enable all of the ColorTranslator tests which were previously failing. +23754 area-System.Net Enable disabled HttpClientEKUTests on ManagedHandler They appear to all be passing now. Closes https://github.com/dotnet/corefx/issues/23128 +23755 area-System.Drawing Re-enable SystemFonts test on Linux. #23690 should be fixed now, so I'm going to try re-enabling this test. +23756 area-System.IO System.IO.FileSystem.Tests failed with stack overflow on UWP System.IO.FileSystem.Tests https://mc.dot.net/#/user/justinvp/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/3163a1c0614fd48a1abcd0f9948ec4c143f537d2/workItem/System.IO.FileSystem.Tests/wilogs failed with stack overflow in master ``` 2017-09-01 19:26:47,180: INFO: proc(54): run_and_log_output: Output: Waiting for the application to exit... 2017-09-01 19:28:30,098: INFO: proc(54): run_and_log_output: Output: Process has just exited with return code -1073741571. 2017-09-01 19:28:30,098: INFO: proc(54): run_and_log_output: Output: Disabling the debugger... ``` We don't get dumpling for UWP. @safern can you please try looping this test locally? +23758 area-Serialization Use the dotnet and SGEN under RuntimePath @shmao @ericstj +23759 area-System.IO Need performance tests for creating and deleting directories We should have some performance tests for creating and deleting nested directories. I have a stress test that shows how to create deeply nested directories that can be used as a reference: https://github.com/dotnet/corefx/blob/1d3cc0417753bf0a436824abfeff9c3c1712f63f/src/System.IO.FileSystem/tests/Directory/Delete.cs#L256 There are limits to path lengths on some platforms. As such here are some suggested scenarios: **All Platforms** Create/Delete a directory that is 10 & 100 levels deep **Windows Only** Create/Delete a directory that is 1000 levels deep Creation and deletion should be separate tests. Call Create / Delete on a simple directory to ensure the code has been compiled before doing the core of the test. Tests should be in the performance test project in System.IO.FileSystem. +23762 area-System.Reflection Add GenericTypeParameters to Type # Proposed Additions ```` class Type { // implementation provided by TypeInfo override public virtual Type[] GenericTypeParameters => throw new NotImplementedException() } ```` # Rationale ## Unified Metadata/Runtime Type representation `Type.GenericTypeArguments` and `TypeInfo.GenericTypeParameters` were introduced during an effort to split `Type` into a runtime representation (`Type`) and a metadata representation (`TypeInfo`). In such a world, a type's generic arguments belonged on the runtime representation while a type's generic parameters belonged on the metadata representation. Hence, `GenericTypeArguments` was declared on `Type` and `GenericTypeParameters` on `TypeInfo`. Alas, the cleaving type into runtime/metadata representations didn't take root (see https://github.com/dotnet/coreclr/issues/13714#issuecomment-326300477), `TypeInfo` was deprecated (to the extent possible), and Type's original unified abstraction restored for the .NET Standard 2.0 release. In this new world, the metadata and runtime abstractions live next to each other. So `GenericTypeParameters`, the metadata representation, belongs next to it's runtime counterpart, `GenericTypeArguments`. ## Symmetry The 2.0 generic API was symmetric between `Type` and `MethodInfo` (see below). If we desire to maintain that symmetry then if/when `GenericMethodParameters` is added to `MethodBase` (see https://github.com/dotnet/corefx/issues/23741) `GenericTypeParameters` will need to be declared on `Type`. | Type | TypeInfo | MethodInfo | | ---- | ---- | ---- | | IsGenericType | | IsGenericMethod | | IsGenericTypeDefinition | | IsGenericMethodDefinition | | GetGenericArguments | | GetGenericArguments | | GetGenericTypeDefinition | | GetGenericMethodDefinition | | MakeGenericType | | MakeGenericMethod | | IsConstructedGenericType | | IsConstructedGenericMethod | | ContainsGenericParameters | | ContainsGenericParameters | | GenericTypeArguments | | GenericMethodArguments [new] | | GenericTypeParameters [new] | GenericTypeParameters | GenericMethodParameters [new] | +23763 area-System.Reflection Add GetGenericMethodDefinition and MakeGenericMethod to MethodBase # Proposed Additions ```` class MethodBase { public virtual MethodBase MakeGenericMethod(params Type[] typeArguments) => (this as MethodInfo)?.MakeGenericMethod(typeArguments) ?? throw new InvalidOperationException(); public virtual MethodBase GetGenericMethodDefinition() => (this as MethodInfo)?.GetGenericMethodDefinition() ?? throw new InvalidOperationException(); } ```` # Proposed Modifications These virtuals need to be made `new virtual`: ```` class MethodInfo { public new virtual MethodInfo MakeGenericMethod(params Type[] typeArguments) { ... } public new virtual MethodInfo GetGenericMethodDefinition() { ... } } ```` # Rationale ## Complete The Move Originally, generic APIs for methods were all added to `MethodInfo` as opposed to `MethodBase`. Subsequently, many, but not all of, the generic APIs on `MethodInfo` have been moved to `MethodBase`. We should complete the move for the same reason the move was initiated, whatever that was. ## Symmetry with `Type` If we wish to maintain the same symmetry in generic functionality that exists between `Type` and `MethodInfo` for `Type` and `MethodBase` then we need to add `MakeGenericMethod` and `GetGenericMethodDefinition` to `MethodBase`: | TypeInfo | MethodInfo | MethodBase | | ---- | ---- | ---- | | IsGenericType | IsGenericMethod | IsGenericMethod | | IsGenericTypeDefinition| IsGenericMethodDefinition | IsGenericMethodDefinition | | GetGenericArguments | GetGenericArguments | GetGenericArguments | | GetGenericTypeDefinition | GetGenericMethodDefinition | GetGenericMethodDefinition [new] | | MakeGenericType | MakeGenericMethod | MakeGenericMethod [new] | | IsConstructedGenericType | IsConstructedGenericMethod | IsConstructedGenericMethod | | ContainsGenericParameters | ContainsGenericParameters | ContainsGenericParameters | | GenericTypeArguments | GenericMethodArguments† | GenericMethodArguments† | | GenericTypeParameters‡ | GenericMethodParameters† | GenericMethodParameters† | †See #23741 ‡See #23762 ## Ease Of Use Algorithms are forced to cast to `MethodInfo` because some functionality, like `GetGenericTypeDefinition()`, is only available there. That might have been palatable when there was some reason, some invariant, like _functionality that doesn't exist on constructors lives on `MethodInfo`_ justified that design. But that invariant no longer exists (and good riddance IMHO!) so the cast just feels unnecessary. Moving the functionality down to `MethodBase` removes the need for the cast: ```` if (methodBase.IsGenericMethodDefinition) { var methodDefinition = ((MethodInfo)methodBase).GetGenericMethodDefinition(); // ... do something with methodDefinition } ```` could instead be ```` if (methodBase.IsGenericMethodDefinition) { var methodDefinition = methodBase.GetGenericMethodDefinition(); // ... do something with methodDefinition } ```` # New Virtuals on `MethodInfo` The existing methods on `MethodInfo` cannot directly override the new additions to `MethodBase` as the former return `MethodInfo` and the latter (should) return `MethodBase`. As such, the existing virtual methods need a new vtable slot. Hence the `new virtual`. While there may be objection to exposing `new virtual` methods, in practice, derivation of the reflection API is rare, and those that do derive tend to derive from `ConstructorInfo` and `MethodInfo` and not from `MethodBase` (e.g. `Reflection.Emit`). For those unicorns that did derive from `MethodBase`, they can still make due. But there is no need to go into those weeds. Unless, that is, someone can think of a customer doing this and suggest why they might not like the `new virtuals`. +23764 area-Infrastructure Building with local CoreFx build. Debugger: Module was built without symbols. "Hey, first of all I am sorry if this isn't the right place to ask this but this is pretty frustrating. I've been trying to make some modification to corefx and then use a locally built corefx with my test application, however after finally getting the build to work, it seems that the vscode debugger won't load/can't find the debugging symbols despite having a symbol file in the build folder. I followed these instructions to setup the nighly sdk and the locally built corefx: https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/dogfooding.md My simple helloworld project's csproj file looks like: ``` Exe netcoreapp2.1 Microsoft.Private.CoreFx.NETCoreApp;runtime.linux-x64.Microsoft.Private.CoreFx.NETCoreApp;$(PackageConflictPreferredPackages) linux-x64 ``` Well, I am currently out of ideas how I could get the debugging to work. ``` .NET Command Line Tools (2.1.0-preview1-007102) Product Information: Version: 2.1.0-preview1-007102 Commit SHA-1 hash: abaf4aebc9 Runtime Environment: OS Name: ubuntu OS Version: 17.04 OS Platform: Linux RID: linux-x64 Base Path: /usr/share/dotnet/sdk/2.1.0-preview1-007102/ Microsoft .NET Core Shared Framework Host Version : 2.1.0-preview2-25616-02 Build : 8aa34a95bad481e1b5e4c8286e5cb2d7cb6ed943 ``` vscode debugger output: ``` Loaded '/home/cynecx/.nuget/packages/runtime.linux-x64.microsoft.netcore.app/2.1.0-preview2-25616-02/runtimes/linux-x64/native/System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. Loaded '/home/cynecx/dev/test/bin/Debug/netcoreapp2.1/linux-x64/test.dll'. Module was built without symbols. Loaded '/home/cynecx/.nuget/packages/runtime.linux-x64.microsoft.private.corefx.netcoreapp/4.5.0-preview2-25731-0/runtimes/linux-x64/lib/netcoreapp2.1/System.Runtime.dll'. Module was built without symbols. Loaded '/home/cynecx/.nuget/packages/runtime.linux-x64.microsoft.private.corefx.netcoreapp/4.5.0-preview2-25731-0/runtimes/linux-x64/lib/netcoreapp2.1/System.Console.dll'. Module was built without symbols. Loaded '/home/cynecx/.nuget/packages/runtime.linux-x64.microsoft.private.corefx.netcoreapp/4.5.0-preview2-25731-0/runtimes/linux-x64/lib/netcoreapp2.1/System.Runtime.Extensions.dll'. Module was built without symbols. ``` The log says that the module has been built without symbols but in the same directory there is a test.pdb file." +23765 area-System.Net Test failed: System.Net.WebSockets.Client.Tests.SendReceiveTest / SendReceive_VaryingLengthBuffers_Success ## Types of failures Few of variants on Linux and Mac: ``` System.OperationCanceledException : Aborted ---- System.ObjectDisposedException : Cannot access a disposed object. Object name: 'SslStream'. System.OperationCanceledException : The operation was canceled. ---- System.ObjectDisposedException : Cannot access a disposed object. Object name: 'SslStream'. System.OperationCanceledException : The operation was canceled. ---- System.IO.IOException : Unable to transfer data on the transport connection: Operation canceled. -------- System.Net.Sockets.SocketException : Operation canceled ``` Windows: ``` System.OperationCanceledException : The operation was canceled. ``` ## History of failures (before test disabled on 2017/9/2) Day | Build | OS -- | -- | -- 8/1 | 20170801.01 | Ubuntu17.10 8/1 | 20170801.02 | Ubuntu17.10 8/1 | 20170801.03 | Ubuntu17.10 8/2 | 20170802.01 | Ubuntu17.10 8/4 | 20170804.01 | Ubuntu14.04 8/4 | 20170804.01 | Ubuntu17.10 8/4 | 20170804.01 | Win8.1 8/24 | 20170824.01 | RedHat73 8/24 | 20170824.01 | Fedora26 8/30 | 20170830.01 | OSX10.12 9/2 | 20170902.01 | RedHat72 9/2 | 20170902.02 | Fedora26 9/2 | 20170902.02 | RedHat73 9/3 | 20170903.01 | RedHat73 9/3 | 20170903.01 | Ubuntu16.04 9/3 | 20170903.01 | Centos73 9/3 | 20170903.01 | Debian87 9/3 | 20170903.01 | RedHat72 # Original report Test failed during PR run: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e Unhandled Exception of Type System.OperationCanceledException Message : System.OperationCanceledException : The operation was canceled. ---- System.IO.IOException : Unable to transfer data on the transport connection: Operation canceled. -------- System.Net.Sockets.SocketException : Operation canceled +23766 area-System.Net Test failed: WebProxy_BypassOnLocal_MatchesExpected ## Types of failures Error messages (ExtendedSocketException text) * Linux: No such device or address * OSX: Device not configured Build 20170902.01: ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) in /root/corefx-966039/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 46 System.Net.Dns.ResolveCallback(Object context) in /root/corefx-966039/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 290 --- End of stack trace from previous location where exception was thrown --- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) in /root/corefx-966039/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 420 System.Net.Dns.EndGetHostEntry(IAsyncResult asyncResult) in /root/corefx-966039/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 562 System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Tests.WebProxyTest.d__10.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() in /root/corefx-966039/src/System.Linq/src/System/Linq/Select.cs:line 129 ``` ## History of failures (before disabling on 2017/9/2) Note: The test was renamed in https://github.com/dotnet/corefx/commit/cd7ae0572ed600eb7c0ae3350a6f08653fc20946 (on 2017/6/29) from `BypassOnLocal_MatchesExpected` to `WebProxy_BypassOnLocal_MatchesExpected` Day | Build | OS -- | -- | -- 5/7 | 20170507.02 | Ubuntu16.04 5/28 | 20170528.02 | OSX10.12 6/9 | 20170609.01 | Ubuntu16.04 6/12 | 20170612.02 | Ubuntu16.04 6/17 | 20170617.01 | Ubuntu14.04 6/23 | 20170623.02 | Debian90 6/26 | 20170626.03 | Debian90 6/27 | 20170627.01 | Debian90 6/27 | 20170627.01 | Suse42.2 6/27 | 20170627.02 | Suse42.2 7/2 | 20170702.02 | OSX10.12 7/18 | 20170718.02 | Debian87 7/20 | 20170720.92 | OSX10.12 8/2 | 20170802.02 | Debian87 8/4 | 20170804.03 | Debian90 8/15 | 20170815.02 | Ubuntu14.04 8/16 | 20170816.01 | Suse42.2 8/20 | 20170820.02 | SLES12 8/21 | 20170821.01 | OSX10.12 8/21 | 20170821.02 | OSX10.12 8/23 | 20170823.06 | OSX10.12 8/24 | 20170824.02 | Debian90 8/30 | 20170830.01 | Debian90 9/2 | 20170902.01 | SLES12 # Original report Test failed during PR run: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e Unhandled Exception of Type System.Net.Internals.SocketExceptionFactory+ExtendedSocketException Message : System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address +23767 area-System.Net Test failure: System.Net.Sockets.Tests.TimeoutTest / ReceiveTimesOut_Throws ## Types of failures Similar to #24804 (`SendTimesOut_Throws`) Build 20170814.02: ``` Assert.InRange() Failure Range: (1500 - 3000) Actual: 1346.6928 at System.Net.Sockets.Tests.TimeoutTest.ReceiveTimesOut_Throws(Boolean forceNonBlocking) in /root/corefx-923915/src/System.Net.Sockets/tests/FunctionalTests/TimeoutTest.cs:line 83 ``` ## History of failures Day | Build | OS -- | -- | -- 8/14 | 20170814.02 | Debian90 # Original report Test failed during PR run: ReceiveTimesOut_Throws(forceNonBlocking: True) https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e ReceiveTimesOut_Throws(forceNonBlocking: True) (Ubuntu) ``` Assert.InRange() Failure Range: (1500 - 3000) Actual: -15521.3745 ``` +23768 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest / PostAsync_RedirectWith307_LargePayload ## History of failures Day | Build | OS | Error message -- | -- | -- | -- 8/1 | 20170801.02 | Ubuntu17.10 | TaskCanceledException: A task was canceled. 8/1 | 20170801.03 | Ubuntu16.04 | TaskCanceledException: A task was canceled. 8/2 | 20170802.01 | Ubuntu16.04 | TaskCanceledException: A task was canceled. 8/4 | 20170804.01 | Win7 | [ManagedHandler] TaskCanceledException: A task was canceled. 8/4 | 20170804.01 | Win7 | TaskCanceledException: A task was canceled. 8/16 | 20170816.01 | Debian90 | [ManagedHandler] OperationCanceledException: The operation was canceled. 9/1 | 20170901.01 | Debian90 | [ManagedHandler] OperationCanceledException: The operation was canceled. 9/1 | 20170901.02 | Ubuntu17.10 | [ManagedHandler] OperationCanceledException: The operation was canceled. 1/19 | | | Test re-enabled in PR #26399 1/21 | 20180121.02 | SLES12 | [ManagedHandler] OperationCanceledException : The operation was canceled. - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180121.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest~2FPostAsync_RedirectWith307_LargePayload) 1/22 | 20180122.02 | Ubuntu16.04 | [ManagedHandler] OperationCanceledException : The operation was canceled. - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180122.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandlerTest~2FPostAsync_RedirectWith307_LargePayload) # Original report Test failed during PR run: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e Unhandled Exception of Type System.Threading.Tasks.TaskCanceledException Message : System.Threading.Tasks.TaskCanceledException : A task was canceled. +23769 area-System.Net HttpClient test failed: AllowAutoRedirect_True_ValidateNewMethodUsedOnRedirection ## History of failures It failed **222x** during 8/12-9/1 (more than 10x/day) on Win7-Win10 # Original report Test failed during PR run: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e Unhandled Exception of Type System.Net.Http.HttpRequestException Message : System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.IO.IOException : The server returned an invalid or unrecognized response. +23770 area-System.Net HttpClient test failed: RequestVersion20_ResponseVersion20IfHttp2Supported Test failed during PR run: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e RequestVersion20_ResponseVersion20IfHttp2Supported(server: https://http2.akamai.com/) (Linux) Unhandled Exception of Type System.Net.Http.HttpRequestException Message : System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.CurlException : Operation was aborted by an application callback -------- Assert.Equal() Failure Expected: PartialChain Actual: NotSignatureValid +23771 area-System.Net [ManagedHandler] Test failed: DiagnosticsTest / SendAsync_HttpTracingEnabled_Succeeds Test failed during PR run: https://mc.dot.net/#/user/davidsh/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/169daaad2062ab623fdafa738c3fdbc778d3652e DiagnosticsTest/SendAsync_HttpTracingEnabled_Succeeds (Linux) (ManagedHandler) Unhandled Exception of Type Xunit.Sdk.TrueException Message : Exit code was 139 but it should have been 42 Expected: True Actual: False +23772 area-System.Net Disable some networking tests Disabling tests. #23765 #23766 #23767 #23768 #23769 #23770 #23771 +23773 area-System.Net SslStream Correct current size calculations "/cc @geoffkizer When attempting to remove the ""ref"" for the encrypt function I placed some Debug.Asserts and ran a lot fo testing. What I found is there was a lot of allocations on windows and a few on Linux. The windows ones I tracked down to the fact that even though the header/trailer could not be any bigger than 32 bytes SChannel claimed it needed more space. So I have changed the calculation instead to use the StreamSizes that we have (from Linux/OSX they are fixed from SChannel it is retrieved from the API for that connection based on it's requirements/session ciphers etc). This means we always now have the correct size on windows. So I could remove the allocations and the refs. I put in some Debug.Asserts to replace the code that checked the size and allocated. Onto Linux. Currently we had zero for Headers + Trailers and just a fixed MaxMessageSize. The message size is currently set to 32k. Which the description even says is arbitrary. As the max framesize for TLS is 16k if we set this to 32k we could need to output 16k * 2 + Overhead * 2. This means we can allocate in Linux/OSX whenever we go over the 16k boundary. As the frames are independent and it's not a Kernel call just native interop I have changed the this to 16k (reduces the buffer sizes in OpenSSL as well because it has to buffer the first completed frame). Next I added the 32byte overhead to the header to work with the new flow of sizes above. Last thing I fixed is the calculation of the ""max data"" we can send. Currently we are taking the max message size and subtracting the Head and Trailer. This is not what the API says for SChannel from my understanding and certainly isn't the logic from OpenSsl. > The length of the SecBuffer structure that contains the message must be no greater than cbMaximumMessage, which is obtained from the QueryContextAttributes (Schannel) (SECPKG_ATTR_STREAM_SIZES) function. However our data is the only thing that goes into that buffer there are separate buffers for the header and trailer so the max is the max. Once this has been done I did some testing with your tool @geoffkizer and there was pretty much no difference (it's only allocations) but I could see a drop in allocations on large scale stress tests :) " +23774 area-Infrastructure Building on Server Core According to this (https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md), building requires VS 2015 or 2017 installed. And the build script actually stops if they are not found. Then, according to this (https://www.visualstudio.com/en-us/productinfo/vs2017-system-requirements-vs), VS 2017 can't be installed on Windows Server Core (or can it?). Does this mean, we can't build dotnet on a Server Core? Specifically, I want to build from source in a docker container to have clean, reproducible environments. +23775 area-Infrastructure Enable detecting Red Hat distors in PlatformDetection Fixes #21920 and #23630 +23776 area-System.IO Expose/add tests for Memory-based Stream overloads in coreclr/corert Depends on: https://github.com/dotnet/coreclr/pull/13769 https://github.com/dotnet/corert/pull/4443 https://github.com/dotnet/corefx/pull/23701 Closes https://github.com/dotnet/corefx/issues/22381 Closes https://github.com/dotnet/corefx/issues/22388 Closes https://github.com/dotnet/corefx/issues/22389 Closes https://github.com/dotnet/corefx/issues/22386 cc: @JeremyKuhne, @pjanotti, @KrzysztofCwalina, @ahsonkhan +23777 area-System.Net "System.Net.Tests.TaskWebClientTest.UploadData_LargeData_Success failed with ""System.Net.WebException : The operation has timed out"" in CI" Failed test: System.Net.Tests.TaskWebClientTest.UploadData_LargeData_Success MESSAGE: ~~~ System.Net.WebException : The operation has timed out. ~~~ STACK TRACE: ~~~ at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_debian8.4_debug/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs:line 1261 at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_debian8.4_debug/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 256 at System.Net.WebClient.d__112.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_debian8.4_debug/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 269 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.WebClient.d__150.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_debian8.4_debug/src/System.Net.WebClient/src/System/Net/WebClient.cs:line 865 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.WebClientTestBase.d__21.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_debian8.4_debug/src/System.Net.WebClient/tests/WebClientTest.cs:line 657 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +23779 area-System.Net Test failure: System.Net.Sockets.Tests.SendFileTest/SendFile_APM(listenAt: ::1, sendPreAndPostBuffers: False, bytesToSend: 1024) Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.SendFileTest/SendFile_APM(listenAt: ::1, sendPreAndPostBuffers: False, bytesToSend: 1024)` has failed. Neither client nor server task completed within allowed time Expected: True Actual: False Stack Trace: at System.Net.Sockets.Tests.SendFileTest.SendFile_APM(IPAddress listenAt, Boolean sendPreAndPostBuffers, Int32 bytesToSend) in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Sockets/tests/FunctionalTests/SendFile.cs:line 233 Build : Master - 20170904.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170904.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SendFileTest~2FSendFile_APM(listenAt:%20::1,%20sendPreAndPostBuffers:%20False,%20bytesToSend:%201024) +23780 area-System.Security WindowsCryptographicException trying to read certificate from file "I have a problem adding the client certficate (that is included in the project) on my production environment. It works locally so I guess it is somehow machine related and also it works on our test server. It is trying to import the certificate file as seen below and I have no real help from the error message. I have tried adding more permission to the application pool user as well as file level permissions. Any ideas on what could be the cause? Or should I rewrite something? Production server is Windows 2012 R2. The error I get is: ``` WindowsCryptographicException: An internal error occurred Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags) Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, string fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) System.Security.Cryptography.X509Certificates.X509Certificate..ctor(string fileName, string password, X509KeyStorageFlags keyStorageFlags) ``` ``` ChannelFactory factory = null; BolagsverketServiceReference.XMLProdukt serviceProxy = null; BasicHttpsBinding binding = null; binding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; factory = new ChannelFactory(binding, new EndpointAddress(""https://eservice.bolagsverket.se/services/XMLProdukt"")); var pathToFile = hostingEnvironment.ContentRootPath + Path.DirectorySeparatorChar.ToString() + ""certificates"" + Path.DirectorySeparatorChar.ToString() + ""something.p12""; factory.Credentials.ClientCertificate.Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(pathToFile, ""hiddenpassword"", X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.PersistKeySet); serviceProxy = factory.CreateChannel(); return serviceProxy; ``` .Net/EF Core 2.0.0 VS 2017 15.3-latest Win 10" +23781 area-System.Net Truncate sendmsg/recvmsg to IOV_MAX Fixes https://github.com/dotnet/corefx/issues/23416 @stephentoub PTAL +23782 area-System.Net Linux HttpClient.SendAsync resets Content Stream position "In the past the stream was disposed after SendAsync call. Now it isn't : https://github.com/dotnet/corefx/pull/19082 However, on Linux the Stream.Position is reset to zero. On windows it remains on the last read position. The following program, i.e., set the MemoryStream position to last read position 3 in Windows, but to 0 in Linux OS : Windows 10 vs. Ubuntu16.04 .NetCore 2.0.0 ```c# using System; using System.IO; using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; namespace StreamShouldNotBeReset { internal class Program { internal class MyContent : HttpContent { private readonly Stream _stream; private readonly byte[] _buffer = new byte[4096]; internal MyContent(Stream ms) { _stream = ms; } protected async Task CopyToStreamAsync(Stream stream) { var count = await _stream.ReadAsync(_buffer, 0, _buffer.Length).ConfigureAwait(false); while (count > 0) { await stream.WriteAsync(_buffer, 0, count).ConfigureAwait(false); count = await _stream.ReadAsync(_buffer, 0, _buffer.Length).ConfigureAwait(false); } } protected override Task SerializeToStreamAsync(Stream stream, TransportContext context) { return CopyToStreamAsync(stream); } protected override bool TryComputeLength(out long length) { if (_stream.CanSeek) { length = _stream.Length; return true; } length = 0; return false; } protected override Task CreateContentReadStreamAsync() { return Task.FromResult(_stream); } } internal static async Task RequestHandler(HttpContext context) { var result = await context.Request.ReadFormAsync().ConfigureAwait(false); foreach (var keyValuePair in result) { Console.WriteLine(keyValuePair.Key + ""="" + keyValuePair.Value); } context.Response.StatusCode = (int)HttpStatusCode.OK; } internal class MyStartUp { public void Configure(IApplicationBuilder app, ILoggerFactory loggerfactory) { app.Run(RequestHandler); } } private static void Main() { const string url = ""http://127.0.0.1:8080""; var host = new WebHostBuilder() .UseKestrel() .UseStartup() .UseUrls(url).Build(); host.Start(); using (var client = new HttpClient(new HttpClientHandler())) using (var ms = new MemoryStream(new byte[] {1, 2, 3})) { client.BaseAddress = new Uri(url); client.SendAsync(new HttpRequestMessage { Method = HttpMethod.Put, Content = new MyContent(ms) }).Wait(); Console.WriteLine(ms.Position); } } } } ``` [EDIT] Add C# syntax highlighting by @karelz" +23783 area-System.Net System.URI fails to correctly parse URNs containing unicode characters System.URI fails to correctly parse URNs containing unicode characters. For reproduction steps, see this Gist: https://gist.github.com/richardprobert/99efb44a5a04613475d1b2f67e837c20 In the example above, the bug manifests in ToString(), but is apparent in other operations too. The bug seems to be triggered by the combination of both an URN, and one that contains unicode characters. I would have expected this to either work as expected, or throw some exception. +23784 area-Infrastructure Update CoreClr, CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview2-25708-01, preview2-25707-02, preview2-25707-02, beta-25708-00, beta-25708-00, preview1-25707-01, respectively (master) +23786 area-System.IO TextReader/Writer Span overloads and tests @stephentoub , @ianhays , @JeremyKuhne Appreciate your review feedback on the changes in this PR. In this PR, 1. New Span / ReadonlySpan overloads as mentioned in #22406. The buffer based overloads will be done when buffer is available. 2. Added TextReader and TextWriter tests as per comment [here](https://github.com/dotnet/corefx/issues/22406#issuecomment-325443936). Contributes to #22406. Thanks, Mandar +23787 area-System.Data Ported a missing SqlParameter constructor I've added a missing SqlParameter constructor per discussion on #17126. This is a direct port of the constructor located [here](https://msdn.microsoft.com/en-us/library/5a10hy4y(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2) from reference source located [here](https://github.com/dotnet/corefx/blob/master/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt). I tried to mirror my work off the similar PR #19544. @danmosemsft had originally suggested that I attempt to port the rest of SqlParameter's missing items as well, but since this is my first attempt at open source contribution I'm going to start small. (Plus, some of that work looked a bit out of my league.) I'm happy to make any changes or additions as necessary - please let me know! +23788 area-System.Net System.Net.Http.StreamContent.ReadOnlyStream size awareness "Streams typically returned by `HttpClient` (`StreamContent.ReadOnlyStream` - I am **explicitely** trying not to use buffered streams, so `MemoryStream` is out of question) are neither size nor position-aware. https://github.com/dotnet/corefx/blob/6bf1e7c3032d3c24d5a41bbd880549ef4a8de2da/src/System.Net.Http/src/System/Net/Http/HttpContent.cs#L248-L275 This is for obvious reasons: the `Content-Length` header is not actually required to be sent at all times (see [RFC](https://tools.ietf.org/html/rfc7230#section-3.3.3)). I guess I could return a wrapped stream which exposes `Content-Length`, if sent by the server. ~Additionally - because I'm not sure it's worth adding another issue for, when this is more of a question as of now than an actual ""pull request poll"", `System.IO.Compression.DeflateStream` does not support seek operations. Now, I will be the first to admit I don't exactly know how the deflate algorithm works. I was just curious of the reasoning behind that, since it is already memory-backed, and surely it should be easy enough to implement forward-seeking, by just quickly glancing at the current implementation. `SeekOrigin.End` may become problematic with `StreamContent.ReadOnlyStream` in regards to the fact that it does not expose the complete amount of bytes returned by the server, or would do so in an unusual way (regarding the point above).~ >Removed because actual code suggests it works a little differently. I guess my question here is: is adding a way to tell actual content-length inside a network stream something worth creating a pull request for? ~Additionally, is it worth trying to implement seek operations in `DeflateStream` ?~ " +23789 area-System.Net managedHandler does not respect all_proxy I did some testing with simple http client. On Linux curl based client does rest http_proxy as well as all_proxy environmental variable. new managedHandler only seems to pay attention yo http_proxy. +23790 area-System.Net NullReferenceException when setting TcpClient.SendTimeout We use netstandard2.0. See: http://issues.hibernatingrhinos.com/issue/RavenDB-8440 System.NullReferenceException occurred HResult=0x80004003 Message=Object reference not set to an instance of an object. Source= StackTrace: at System.Net.Sockets.TcpClient.set_SendTimeout(Int32 value) ![image](https://user-images.githubusercontent.com/629734/30052131-33ef6d30-922d-11e7-89aa-cb8b30cd266a.png) ![image](https://user-images.githubusercontent.com/629734/30052139-39982506-922d-11e7-80a9-0e3068ef4e45.png) +23791 area-System.Security Remove unused SSLv3_method This API is not used anymore, so remove it from the openssl shim. +23792 area-System.Numerics Add tests for double/single GetHashCode and Equals invariant fix. While fixing https://github.com/dotnet/coreclr/issues/6237 , we need to add tests to ensure: - All `System.Double.NaNs` have same hash code. - All `System.Single.NaNs` have same hash code. So that we can keep the `Equals` -> `GetHashCode` invariant. +23793 area-System.Numerics Added NaN and -NaN comparison. NaNs should have same hash code. The two exposed NaNs are NaN and -NaN. So we need to ensure these two NaNs have the same hash code. **NOTE: Do not merge this PR until https://github.com/dotnet/coreclr/pull/13781 included in corefx.** Fix #23792 +23794 area-System.Net Fix behavior of Dns.GetHost* with empty string On Windows, passing an empty string to gethostbyname/GetAddrInfoW results in the host's information being used; that behavior then bubble's up through (and is documented for) the Dns.GetHost* APIs in .NET. On Unix, the native functions being used don't provide that same behavior, instead returning an error. This just special-cases empty string in the Unix implementation. cc: @geoffkizer, @Priya91, @wfurt +23795 area-System.IO System.IO.Packaging attempt to delete non-existent property fails An attempt to delete a package property that was not previously defined fails in subsequent Dispose(). Lines 481-489 in [http://referencesource.microsoft.com/#WindowsBase/Base/MS/Internal/IO/Packaging/PartBasedPackageProperties.cs,2e226d8b23d00ee4](url) have no equivalent implementation in the corefx implementation https://github.com/dotnet/corefx/blob/release/2.0.0/src/System.IO.Packaging/src/System/IO/Packaging/PartBasedPackageProperties.cs#L400 A repro is available in https://github.com/OfficeDev/Open-XML-SDK/issues/235 +23796 area-System.Diagnostics Several StackFrameTests now failing with line number differences on netfx ``` System.Diagnostics.Tests.StackFrameTests.Ctor_FNeedFileInfo(fNeedFileInfo: True) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 7 Stack Trace: D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(166,0): at System.Diagnostics.Tests.StackFrameTests.VerifyStackFrameSkipFrames(StackFrame stackFrame, Boolean isFileConstructor, Int32 skipFrames, MethodInfo expectedMethod, Boolean isCurrentFrame) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(34,0): at System.Diagnostics.Tests.StackFrameTests.Ctor_FNeedFileInfo(Boolean fNeedFileInfo) System.Diagnostics.Tests.StackFrameTests.Ctor_FNeedFileInfo(fNeedFileInfo: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 7 Stack Trace: D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(166,0): at System.Diagnostics.Tests.StackFrameTests.VerifyStackFrameSkipFrames(StackFrame stackFrame, Boolean isFileConstructor, Int32 skipFrames, MethodInfo expectedMethod, Boolean isCurrentFrame) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(34,0): at System.Diagnostics.Tests.StackFrameTests.Ctor_FNeedFileInfo(Boolean fNeedFileInfo) System.Diagnostics.Tests.StackFrameTests.Ctor_SkipFrames_FNeedFileInfo(skipFrames: 0, fNeedFileInfo: True) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 8 Stack Trace: D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(166,0): at System.Diagnostics.Tests.StackFrameTests.VerifyStackFrameSkipFrames(StackFrame stackFrame, Boolean isFileConstructor, Int32 skipFrames, MethodInfo expectedMethod, Boolean isCurrentFrame) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(57,0): at System.Diagnostics.Tests.StackFrameTests.Ctor_SkipFrames_FNeedFileInfo(Int32 skipFrames, Boolean fNeedFileInfo) System.Diagnostics.Tests.StackFrameTests.Ctor_SkipFrames_FNeedFileInfo(skipFrames: 0, fNeedFileInfo: False) [FAIL] Assert.Equal() Failure Expected: 0 Actual: 8 Stack Trace: D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(166,0): at System.Diagnostics.Tests.StackFrameTests.VerifyStackFrameSkipFrames(StackFrame stackFrame, Boolean isFileConstructor, Int32 skipFrames, MethodInfo expectedMethod, Boolean isCurrentFrame) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\StackFrameTests.cs(57,0): at System.Diagnostics.Tests.StackFrameTests.Ctor_SkipFrames_FNeedFileInfo(Int32 skipFrames, Boolean fNeedFileInfo) ``` +23797 area-System.Drawing [System.Drawing] Add unit tests based on Mono's test suite When consolidating the Unix and Windows codebase for System.Drawing, I noticed some gaps in code coverage. For example, the various `Graphics.*Clip*` methods and properties did not have any coverage. As a result, I tried to port the Mono test suite for System.Drawing to corefx. This PR is the result of that. The tests uncovered a couple of bugs in the current implementation of System.Drawing: - The getter for `PathGradientBrush.Blend` returned inconsistent results across calls due to invalid P/Invoke code - https://github.com/dotnet/corefx/commit/3a6f13043b6790449cc2c0b1d4c44b3c7e15bc9b - The P/Invoke declaration for `GdipSaveImageToFile_delegate` was missing a `MarshalAs` attribute for the `filename` parameter, causing the filenames to be passed in ANSI format to a function which expected Unicode, resulting in unexpected filenames. - The `InvalidEnumArgumentException` exception class exists in both `System.Drawing` and `System.ComponentModel` +23799 area-System.Net Add_ReachedMaxCountWithExpiredCookies_Added failed in CI ``` Unhandled Exception of Type Xunit.Sdk.EqualException Message : Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace : at System.Net.Primitives.Unit.Tests.CookieContainerTest.d__38.MoveNext() in /mnt/j/workspace/dotnet_corefx/master/linux-TGroup_netcoreapp+CGroup_Release+AGroup_x64+TestOuter_false_prtest/src/System.Net.Primitives/tests/UnitTests/CookieContainerTest.cs:line 423 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` https://mc.dot.net/#/user/stephentoub/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/86ca19c92fccec47994700d09738fc4051fd18ab/workItem/System.Net.Primitives.UnitTests.Tests/analysis/xunit/System.Net.Primitives.Unit.Tests.CookieContainerTest~2FAdd_ReachedMaxCountWithExpiredCookies_Added +23803 area-System.Net Increase allowed timeout range in SendTimesOut_Throws Closes https://github.com/dotnet/corefx/issues/23595 +23804 area-System.Runtime Converge TimeZoneInfo sources (coreclr & corert) This is a reminder to finish the convergence of the TimeZoneInfo source files. WIP here: https://github.com/ViktorHofer/coreclr/tree/TimeZoneInfoConverganceBackup When finished, remove this line https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterHelper.cs#L139 and update the blobs. +23805 area-System.Net release/2.0: Truncate sendmsg/recvmsg to IOV_MAX (#23781) Port #23781 to release/2.0.0 branch. cc: @tmds, @geoffkizer +23807 area-Infrastructure Updates to RID graph are clunky and error-prone Updating the file https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json is clunky and error prone. Now ideally RIDs would have more strongly-typed semantics that have continuous (eg: version) or discrete (eg: architecture) values, along with relationships and precedence between them. Today we handle these by convention. At runtime the RID is just an opaque string that's related to other opaque strings. We should create a smaller representation of the RID graph and codify all of our conventions into a some code generation task. For example: OSFamily : linux Parent OSFamily: unix Versions: none Architectures: x64, x86, arm, armel, arm64 Additional qualifiers: none OSFamily : rhel Parent OSFamily: linux Versions: 6, 7, 7.0, 7.1, 7.2, 7.3, 7.4 Architectures: x64 Additional qualifiers: none We can also have a pass-through that merges runtime.json fragments for things we don't want to represent with a generator. Given this smaller set of information we should be able to generate the same RID graph we have today but in a less-error prone way. /cc @Petermarcu +23808 area-System.Runtime Fixing uap serialization errors for exceptions Fixes https://github.com/dotnet/corefx/issues/23547 Exceptions are reflection blocked in uapaot. +23809 area-System.Memory ReadOnlySpan and Span must be `readonly` structs. ReadOnlySpan and Span do not have any mutable fields and should be `readonly` just from the principle of least privilege. Also, being not readonly makes the code like the following an error: ```C# Span stackAllocated = stackalloc int[100]; Span returnableSpan = new int[100]; // error, compiler thinks that CopyTo could just do 'this = other' // there would be no danger if Span was `readonly` returnableSpan.CopyTo(stackAllocated); ``` Also see: https://github.com/dotnet/roslyn/issues/21911 For now I can assume that ReadOnlySpan and Span will be `readonly` and specialcase them to be `readonly` regardless of annotations. That would fix https://github.com/dotnet/roslyn/issues/21911 temporarily. Depending on the compiler used they should be either ```C# public readonly ref struct Span { ... } ``` or ```C# [S.R.CS.ReadOnlyAttribute] [S.R.CS.IsByRefLikeAttribute] public struct Span { ... } ``` +23810 area-System.IO TextWriter.Read base implementation fails with count == 0 Repro: ```C# using System.IO; class Program { static void Main() { var reader = new MyTextReader(); reader.Read(new char[0], 0, 0); } } class MyTextReader : TextReader { public override int Read() => 'a'; } ``` This throws an IndexOutOfRangeException, and repros on both netfx and .NET Core. The loop in Read currently looks like this: ```C# int n = 0; do { int ch = Read(); if (ch == -1) break; buffer[index + n++] = (char)ch; } while (n < count); return n; ``` It'd be better as something like: ```C# int n; for (n = 0; n < count; n++) { int ch = Read(); if (ch == -1) break; buffer[index + n] = (char)ch; } return n; ``` +23812 area-System.Net HttpClient virtual SendAsync is not properly called HttpClient has several overloads of SendAsync. Only the one that accepts a request and cancellation token is marked virtual. Looking at the implementations they all call the version that accepts the request, option and cancellation token. Inside this method it ultimately calls the SendAsync version that accepts a request and cancellation token but from the base class. The net result is that deriving from HttpClient and overriding the only virtual implementation of SendAsync doesn't impact anything unless you happen to call the version that accepts the given parameters. HttpClient should have an overload that can be called to hook into all the methods to allow pre/post request processing. Alternatively the existing implementation should be adjusted such that all the overloads eventually call the overridable implementation that then defers to the base implementation. ```public class MyHttpClient : HttpClient { public override Task SendAsync ( HttpRequestMessage request, CancellationToken cancellationToken ) { //Will never be called unless code explicitly calls this override return base.SendAsync(request, cancellationToken); } } ``` +23813 area-Infrastructure Update CoreClr, CoreFx to , servicing-25713-01, respectively (release/1.1.0) +23814 area-Infrastructure Updating CoreFx dependencies to servicing-25705-01 +23815 area-System.Runtime List.Reverse should not call Array.Reverse, or add Array.Reverse method and call it. From analysis of real profiles: List.Reverse should not call Array.Reverse, or add Array.Reverse method and call it. Here is List.Reverse implementation: ```c# // System.Collections.Generic.List public void Reverse(int index, int count) { .. Array.Reverse(._items, index, count); _version++; } ``` Notice Array.Reverse is not a generic method because there is no `Array.Reverse` method. It's implementing using boxing for custom struct and GetValue/SetValue calls. Super expensive. The whole JToken.get_Path method is expensive and it building a new string every time through StringBuilder. +23816 area-System.ComponentModel System.ComponentModel.Annotations Refactoring * Rename private static field to use `s_` prefix. * Favor `?:` over `if` … `else` * Replace `!= null && string.IsNullOrEmpty` with `?.Length == 0`. Only one null check, and can call length non-virtually. * Only obtain `stringValue` if `!AllowEmptyStrings` Otherwise is wasted. * Favour `.Length` or `.Count` over `.Any()` for collections Lighter call in each case. * Use as-available yield rather than building collections in some methods * Remove `breakOnFirstError` parameter. As methods are now enumerating directly, caller can just abort early. * Break `foreach` in `TryValidateXXX` methods into enumerator operations Allows separate path that only cares if there is a result to do less, and path for adding results to only test collection exists once. * Move null check to where it gives answer before accessing property. * Remove redundant intialisers. Inlining into out parameters where applicable. * Favour `OfType<>().FirstOrDefault()` over `FirstOrDefault` with type test. Avoids using delegate. * Use `is` patterns over `as` and check where appropriate. * Use lambda expressions instead of delegate keyword. * Rename consts to PascalCase * Remove redundant cast. * Use `??` instead of `if` for null checks. * Remove redundant base call * Internal properties to private fields when only used privately. * Explicit types rather than `var` (or inline variables in a few places). * Unused return type to `void` +23817 area-System.Linq Fix LargeArrayBuilder.CopyTo returning incorrect end-of-copy position Fixes #23680 Replaces #23730 cc @stephentoub @VSadov @jamesqo +23818 area-Infrastructure Updating CoreClr dependencies to stable +23820 area-System.Globalization Fix NumberFormatInfoNumberGroupSizes failed test Fixes #23628 +23821 area-System.Net Use only CredentialCache for authentication when redirecting Uris in ManagedHandler. fixes #23129 cc @geoffkizer @stephentoub @wfurt +23822 area-System.Net "Test: System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/UseCallback_BadCertificate_ExpectedPolicyErrors failed with ""Xunit.Sdk.EqualException""" "Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test/UseCallback_BadCertificate_ExpectedPolicyErrors(url: \""https://wrong.host.badssl.com/\"", expectedErrors: RemoteCertif...` has failed. Assert.Equal() Failure Expected: RemoteCertificateNameMismatch Actual: RemoteCertificateNameMismatch, RemoteCertificateChainErrors Stack Trace: at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.<>c__DisplayClass12_0.b__0(HttpRequestMessage request, X509Certificate2 cert, X509Chain chain, SslPolicyErrors errors) in /root/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 231 at System.Net.Http.CurlHandler.SslProvider.VerifyCertChain(SafeX509StoreCtxHandle storeCtx, EasyRequest easy) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs:line 359 at System.Net.Http.CurlHandler.SslProvider.VerifyCertChain(IntPtr storeCtxPtr, IntPtr curlPtr) in /root/corefx/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs:line 264 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in /root/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 462 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__12.MoveNext() in /root/corefx/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 235 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : 2.0.0 - 20170906.01 (Core Tests) Failing configurations: - SLES.12.Amd64-x64 - Debug - Release - suse.422.amd64-x64 - Debug - Release - Ubuntu.1604.Amd64-x64 - Debug - Release - Ubuntu.1704.Amd64-x64 - Debug - Release - Debian.90.Amd64-x64 - Debug - Release - Ubuntu.1404.Amd64-x64 - Debug - Release - Debian.87.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170906.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test~2FUseCallback_BadCertificate_ExpectedPolicyErrors(url:%20%5C%22https:~2F~2Fwrong.host.badssl.com~2F%5C%22,%20expectedErrors:%20RemoteCertif..." +23823 area-Infrastructure Update CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25801-01, stable, rel-25728-00, rel-25728-00, preview1-25729-01, respectively (release/uwp6.0) +23824 area-System.Net "Test: System.Net.NameResolution.Tests.GetHostByNameTest/DnsObsoleteBeginEndGetHostByName_EmptyString_ReturnsHostName failed with ""Xunit.Sdk.ContainsException""" Opened on behalf of @Jiayili1 The test `System.Net.NameResolution.Tests.GetHostByNameTest/DnsObsoleteBeginEndGetHostByName_EmptyString_ReturnsHostName` has failed. Assert.Contains() Failure Not found: DCI-Mac-Build-068.local In value: dci-mac-build-068.local Stack Trace: at System.Net.NameResolution.Tests.GetHostByNameTest.DnsObsoleteBeginEndGetHostByName_EmptyString_ReturnsHostName() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.NameResolution/tests/FunctionalTests/GetHostByNameTest.cs:line 115 Build : Master - 20170906.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170906.01/workItem/System.Net.NameResolution.Functional.Tests/analysis/xunit/System.Net.NameResolution.Tests.GetHostByNameTest~2FDnsObsoleteBeginEndGetHostByName_EmptyString_ReturnsHostName +23825 area-System.Data How to use DataTable and DataView in asp.net core 2.0 Hi All, I have using DataTable (https://blogs.msdn.microsoft.com/devfish/2017/05/15/exploring-datatable-and-sqldbadapter-in-asp-net-core-2-0/) in asp.net core but not work in DataTable (https://apisof.net/catalog/System.Data.DataTable ) and DataView(https://apisof.net/catalog/System.Data.DataView). I have already referred System.Data.Common, Version=4.3 assembly extension. could you please right me to proper way. thanks. +23826 area-System.Net Only truncate to IOV_MAX for stream sockets This fixes the change in behavior for non-stream sockets introduced by https://github.com/dotnet/corefx/pull/23781. CC @wfurt @stephentoub +23827 area-System.Net System.Net.Http httpClient ServerCertificateCustomValidationCallback does not include the intermediate certificates provided by the server "When we assign a callback to ServerCertificateCustomValidationCallback (SCCVC) (tested on Win7/Win8.1,) the passed ""chain"" arg only includes the server certificate but no intermediate certs passed by the server. The ""chain"" only has multiple ChainElements if the server cert is signed by a certificate, intermediate or root, that exists in the local store. If we have a cert signed by an intermediate CA and that cert is chained by the server, even if that CA cert is in turn signed by a root/intermediate CA that exists in the store, the chain will not include any of the intermediate certificates, and will show just the server certificate. In such a case where the root cert exists in the store and the intermediate cert is chained by the HTTPS server, the request will go through successfully when no callback is defined, yet show up in the callback with ChainElements.Count == 1 and SslPolicyErrors != none; which some might find a smidge ironic. The following are the current behaviors and the corresponding behavior in the ServerCertificateValidationCallback (SCVC) in .NET Framework which I assume should be the expected behavior here. 1) When the server passes a certificate chain and a given certificate is _different_ to the one in the store for the same CN/SAN, SCCVC gets the store cert, while SCVC (expected) gets the one passed by the server. 2) When the server passes a certificate chain which does not conflict with the store, SCCVC does not get any of the certificates passed to ""chain"" other than the server cert itself. Expected behavior per SCVC is to have the server intermediate certs passed along and ADDITIONAL certs, only if the final cert is not self-signed, added to the chain where appropriate. This is preventing us from using httpClient in production. We have our certs signed by an intermediate CA which we cannot install on target systems' local cert stores. Furthermore, we use an internal root CA for testing and we would prefer to compare the CA cert to the final cert in the chain in the validation callback, rather than installing and re-installing certs as test CAs pop in and out of existence." +23828 area-System.Threading Add CancellationTokenRegistration.Token property When registering with a CancellationToken, a common pattern is to then store the resulting CancellationTokenRegistration onto some object for later disposal when the associated asynchronous operation completes. It's also common to store the original CancellationToken, so that it can, for example, be passed to TaskCompletionSource.TrySetCanceled. But having to store the CancellationToken in addition to the CancellationTokenRegistration should be unnecessary, as the registration already knows with which CancellationToken it's associated... it just doesn't expose that information. We should expose it. ```C# public struct CancellationTokenRegistration { public CancellationToken Token { get; } ... } ``` This property now exists, it's just internal: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/CancellationTokenRegistration.cs#L44 We should simply make it public. This will allow us to shrink by a reference-sized field several objects that store the CT in addition to the CTR. +23829 area-System.Net Disable default proxy test on Desktop HttpClient test `ProxyExplicitlyProvided_DefaultCredentials_Ignored` has started failing on Desktop due to build system changes. Disabling for now. #23702 +23830 area-Infrastructure [Release/2.0.0] Reduce desktop targeted reference assemblies in 2.0 release See https://github.com/dotnet/corefx/issues/23505. The use of reference assemblies in 2.0 for desktop-targeted packages and netstandard support targets has resulted in a number of tooling issues. To help relieve these, we can dial back the number of reference assemblies we use. 1. Don't use reference assemblies at all for the support package / targets. - https://github.com/dotnet/corefx/pull/23711 - Will need to be ingested into SDK 2. For packages which have reference facades which are full facades, don't set the reference assembly bit. - https://github.com/dotnet/buildtools/pull/1663 - Needs to be ported to release/2.0.0 - The following packages will benefit from this: - Microsoft.Win32.Registry - System.CodeDom - System.ComponentModel.Annotations - System.Configuration.ConfigurationManager - System.Data.SqlClient - System.IO.Packaging - System.IO.Ports - System.Security.AccessControl - System.Security.Cryptography.Cng - for all but net461 see below - System.Security.Cryptography.Pkcs - System.Security.Cryptography.ProtectedData - System.Security.Cryptography.Xml - System.Security.Principal.Windows - System.ServiceProcess.ServiceController - System.Threading.Tasks.Extensions 3. For the remaining packages, consider excluding the desktop reference and instead using the implementation assembly as the reference (as we did in 1.x). These are the packages we shipped in 2.0 that contained reference assemblies with typedefs for desktop: - System.Numerics.Vectors - System.IO.FileSystem.AccessControl - System.IO.Pipes.AccessControl - System.Reflection.TypeExtensions - System.Security.Cryptography.Cng - only on net461 as a result of the netstandard remapping. Fix here is to drop those types from the reference for the netfx build. - System.Threading.AccessControl 1 is a must-fix for 2.0. For 2 and 3 we'd need to ship the individual packages and for that I'd like a shiproom read. +23831 area-Infrastructure Switch OSX CI runs to use Helix +23832 area-System.Xml Make Xunit detect tests from Xml custom test fx (no more outerloop tests in S.P.Xml) This improves debuggability of XML tests. Before this PR when one of the test cases failed you couldn't tell which one (one test case was a batch of hundreds to thousands tests). This PR makes it so that XML custom test framework is feeding Xunit's theory with inline data which is enough to execute test and show description of the test case - this way we can nicely see a failure Fixes https://github.com/dotnet/corefx/issues/14855 Contributes to https://github.com/dotnet/corefx/issues/3133 +23833 area-System.Linq LINQ Concat.ToArray outputs null elements when it shouldn't From @markples at https://github.com/dotnet/corefx/issues/23680#issuecomment-326906526 --- Here is a repro (from @vuminhle). It seems very specific - reducing the list sizes or changing the construction in various ways loses the repro. ```cs using System; using System.Collections.Generic; using System.Linq; namespace repro { internal class Program { private static void Main(string[] args) { A[] list = List1().Concat(List2()).Concat(List3()).ToArray(); foreach (A a in list) { Console.WriteLine(a.Value); } } internal static IEnumerable List1() { for (var i = 0; i < 4; i++) { yield return new A(i); } } internal static IEnumerable List2() { return Enumerable.Range(0, 2).Select(v => new A(v)); } internal static IEnumerable List3() { for (var i = 0; i < 5; i++) { yield return new A(i); } } internal class A { public A(int v) { Value = v; } public int Value { get; } } } } ``` +23834 area-Infrastructure Disable package builds for Microsoft.NETCore.Platforms and Microsoft.NETCore.Targets cc: @weshaggard @danmosemsft @ericstj Disabling two extra packages that won't be shipped for uwp6.0 release, and depending on released packages instead. +23835 area-Infrastructure How do I reference corefx libs with net.core 2 app "Hi there! I am happy to write here, thank you all <3!! Actually I cant understand how can I build a library and use it in to my project. There are not enought info or I cant understand base things. My steps are: -0 Add a new ""Hello World!"" method somewhere System.Collections library -1 Compile it (use cmd.exe build \src\System.Collections -os=Windows_NT) -2 Create an empty net.core 2.0 console app then add referece to obtained on prev step dll -3 Get an error ""the reference is invalid or unsupported"" (VS 2017 community) The question is: how can I use compiled libraries (or reference whole projects) from the repo in my net.core 2 projects ? Where is the trick ?" +23836 area-System.Memory Avoid downgrading to netstandard reference assembly Similar to 75962dae7f338445b57d7d276d018774e1dd2e46 but for the reference assembly. The reference assembly for System.Memory on netcoreapp2.1 is significantly different since types have been pushed down into System.Runtime. We need to make sure that is used on netcoreapp2.1 to avoid any type conflicts. /cc @weshaggard @ahsonkhan +23837 area-System.Memory Changes in master with respect to UWP @JeremyKuhne added System.Memory inbox on UWP with https://github.com/dotnet/corefx/commit/1d3cc0417753bf0a436824abfeff9c3c1712f63f but I don't think that made it to release/uwp6.0. @JeremyKuhne did you intend to ship that in UWP6? If not, we should probably make sure it isn't marked as inbox there. We should also retarget master to something after UWP6 so we don't let things get out of sync (like we did with netcoreapp2.1 and I had to clean up later with https://github.com/dotnet/corefx/pull/23168). /cc @joperezr @weshaggard +23838 area-System.Collections ConcurrentDictionary: Reduced branching during GrowTable() Oh well, just some micro optimization for the GrowTable() method. I essentially got rid of one branch without touching the semantics of the method. I think [line 1766 in the new code](https://github.com/dotnet/corefx/compare/master...dnickless:ConcDictGrow1?expand=1#diff-f1285172a2a161542ccf657778f0852cR1766) can be removed, too, in order to micro optimize things even further if thou so wisheth. This would result in a slightly bigger newLength than MaxArrayLength (214643507**3** vs 214643507**1** to be precise) if that's acceptable. But that line will really just be called once per instance anyway and only in the case that the dictionary is really maxed out in bucket size... +23839 area-System.Collections ConcurrentDictionary: Faster check if lock array should be grown once it shouldn't be grown anymore If there was such a thing as a nano optimization this would be it. ;) In `Grow()` I'm setting the - previously readonly - _growLockArray flag to false if the lock array is about to grow to its full allowed size. From that point onwards the check if it should be grown even further during a `Grow()` operation comes down to just checking this one boolean variable as opposed to comparing the `tables._locks.Length < MaxLockNumber` on top of the boolean. Small change, small effect... +23840 area-System.Runtime Expose and add tests for span-based Guid methods Added tests for span-based Guid methods (ctor, TryWriteBytes, and TryFormat), largely based on existing tests for ctor, ToByteArray, and ToString. Exposed new span-based methods in the contract. Depends on https://github.com/dotnet/coreclr/pull/13323 +23841 area-System.Memory Expose {ReadOnly}Memory from System.Runtime Part of https://github.com/dotnet/corefxlab/issues/1711 Adding the following types: - Memory\ - ReadOnlyMemory\ - OwnedMemory\ - MemoryHandle - IRetainable Order of changes: 1) Add to mscorlib (https://github.com/dotnet/coreclr/pull/13583). 2) After the type has been added to mscorlib, add impl (for portable) and type forwarders to System.Memory (https://github.com/dotnet/corefx/pull/23701) and System.Runtime (this PR) here in corefx. 3) Remove impl from corefxlab and update uses/references in Pipelines/Buffers.Experimental. 4) Other changes/additions like review/add APIs from MemoryExtensions cc @shiftylogic, @KrzysztofCwalina, @davidfowl, @jkotas, @stephentoub, @AtsushiKan, @ericstj +23843 area-System.Diagnostics DiagnosticSource does not install with nuget 2.8.6 DiagnosticSource [pkgproj](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj#L6) sets MinClientVersion to 2.8.6 ``` 2.8.6 ``` However nuget 2.8.6 does not support packages with netstandard target.: https://github.com/NuGet/Home/issues/3131 Minimum version that supports them is 2.12. The same problem is relevant for other packages that have 2.8.6 specified: https://github.com/dotnet/corefx/search?q=minClientVersion&type=Code&utf8=%E2%9C%93 Please advise what is the best way to fix that. Is there some default setting for minClientVersion? +23844 area-Serialization Make immutable collections serializable. All of the Immutable collections should support serialization. In particular they should support Data Contract Serialization so that they can be used with Service Fabric and other systems that require serialization. Hope this isn't a duplicate but I didn't see any other similar requests. +23846 area-System.Drawing CI: RHEL7, CentOS7 and Ubuntu 14.04 are running outdated versions of libgdiplus The CI servers running RHEL7, CentOS7 and Ubuntu 14.04 are running version 2.x of libgdiplus, causing some tests to fail because of bugs in that version of libgdiplus. These are currently being disabled on those OSes, but we should try to install a more recent version of libgdiplus on those machines. +23847 area-System.Runtime Some fields of RSAParameters are marked as NotSerialized "When RSAParameters is serialized by json.net, The private key is not included. It due to some fields of RSAParameters(D, Q, etc) are marked as NotSerialized. NotSerialized should means ""This field is meaningless for serialization"", not ""This field is too important so we couldn't do serialize for it""" +23849 area-System.Net Fix ArgumentException message in CookieContainer.Add . Currently the the method will throw the following exception when `cookie.Domain == null` ``` System.ArgumentException:“The parameter '{0}' cannot be an empty string.” ``` So I added `SR.Format` invocation to it. +23850 area-System.Security Expose Internal.Cryptography.KeyPropertyName publicly There are situations where they can come useful, for example https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/480#issuecomment-327745106/. The are defined as internal here: https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/System.Security.Cryptography.Cng/src/Internal/Cryptography/KeyPropertyName.cs#L13 And also here in `System.Security.Cryptograph.KeyPropertyName`, would be just as good to expose: https://github.com/Microsoft/referencesource/blob/90b323fe52bec428fe4bd5f007e9ead6b265d553/System.Core/System/Security/Cryptography/NCryptNative.cs#L139 +23851 area-System.Runtime remove dead strings (#23710) System.Runtime.Extensions\src\Resources\Strings.resx * Argument_PathFormatNotSupported * Arg_PathIllegal * Arg_PathIllegalUNC * InvalidOperation_Cryptography * Serialization_InsufficientState +23852 area-System.Reflection Ensure reflection APIs exist that can specify any single info _Carving this discussion out of #23762_ # Proposal Ensure methods exist that allow the user to specify a single info (specifically Method, Constructor, and Property) to reflection to activate and in so doing allow reflection to only activate and cache the minimum infos needed by the user. A bit of recent history: > This issue arose as part of a more general push to move useful APIs off of `TypeInfo` to more accessible locations. While considering what to do with the `TypeInfo.GetDeclaredXXX` family of APIs we though, if we do move them let's change their signatures so they're each able to specify each type of info they retrieve. The idea of moving the `GetDeclaredXXX` met with a lukewarm response and is not specifically what this issue is addressing. Here we address the proposal to ensure we have methods to return a single info. https://github.com/dotnet/corefx/issues/23762#issuecomment-327633532 @AtsushiKan --------------------- Right, I think we're on the same page. We want an api that lets you pass everything that guarantees a single (or zero) result. The existing api `Type.GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers)` comes pretty close. I know of at least two things it's missing: 1. Return type (e.g. the `operator explicit` case, though it's not limited to that of course.) 2. Custom modifiers on parameter types. You can overload on them too. The thing is, that for this to have any chance of getting approved, it really has to get it right. We've got so many overlapping apis to do the 99% job already - if it doesn't really solve something 100%, it's not going to be added. https://github.com/dotnet/corefx/issues/23762#issuecomment-327830616 @AtsushiKan --------------------- The uber-GetMethod is a much more ambitious effort (and much harder to justify on a cost-benefit basis - Reflection has been demented with regard to custom modifiers since its inception and it doesn't seem to have mattered much in the real world.) That can wait for another day. --------------------- So this may just be a place holder to collect any ideas about this for some future release. +23854 area-System.Reflection Move and make `TypeInfo.GetDeclaredXXX` APIs symmetric with `RuntimeReflectionExtensions.GetRuntimeXXX` _Carving this discussion out of #23762_ # Proposal Hold on. Let me try this again... +23855 area-Microsoft.CSharp NullReferenceException in ExpressionBinder.GroupToArgsBinder.LookForCandidates "**Repro Steps** Execute the following: * git clone -b updateToNetCore https://github.com/conniey/RazorEngine.git * cd RazorEngine * dotnet restore .\src\RazorEngine.NetCore.sln * dotnet build .\src\RazorEngine.NetCore.sln * dotnet test .\src\test\Test.RazorEngine.Core\Test.RazorEngine.Core.NetCore.csproj --no-build --filter ""FullyQualifiedName~RazorEngineService_TestEnumeratingDynamicObject"" --framework netcoreapp2.0 **Expected** It passes. It passes when executed on .NET 4.6.2 and used to work on .NET Core 2.0 preview. * dotnet test .\src\test\Test.RazorEngine.Core\Test.RazorEngine.Core.NetCore.csproj --no-build --filter ""FullyQualifiedName~RazorEngineService_TestEnumeratingDynamicObject"" **--framework net462** **Actual** Test fails with a NullReferenceException. I checked the output binaries for .NET 4.6.2 and .NET Core 2.0. They appear exactly the same, aside from references to .NET Framework in the first case and the .NET Core references in the other. (The files are output to a folder like: _%TEMP%\RazorEngine_\_.) ``` Test Name: RazorEngineService_TestEnumeratingDynamicObject Test FullName: Test.RazorEngine.RazorEngineServiceTestFixture.RazorEngineService_TestEnumeratingDynamicObject Test Source: D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\RazorEngineServiceTestFixture.cs : line 516 Test Outcome: Failed Test Duration: 0:00:00.114 Result Message: System.NullReferenceException : Object reference not set to an instance of an object. Result StackTrace: at Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder.GroupToArgsBinder.LookForCandidates() at Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder.BindMethodGroupToArgumentsCore(GroupToArgsBinderResult& pResults, BindingFlag bindFlags, ExprMemberGroup grp, Expr& args, Int32 carg, Boolean bindingCollectionAdd, Boolean bHasNamedArgumentSpecifiers) at Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder.BindMethodGroupToArguments(BindingFlag bindFlags, ExprMemberGroup grp, Expr args) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCall(ICSharpInvokeOrInvokeMemberBinder payload, Expr callingObject, ArgumentObject[] arguments, LocalVariableSymbol[] locals) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.DispatchPayload(RuntimeBinder runtimeBinder, ArgumentObject[] arguments, LocalVariableSymbol[] locals) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) at System.Dynamic.InvokeMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at RazorEngine.Compilation.ImpromptuInterface.Optimization.InvokeHelper.InvokeMemberTargetType[TTarget,TReturn](CallSite& callsite, Type binderType, Int32 knownType, LazyBinder binder, String_OR_InvokeMemberName name, Boolean staticContext, Type context, String[] argNames, TTarget target, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\InvokeHelper.cs:line 317 at RazorEngine.Compilation.ImpromptuInterface.Optimization.InvokeHelper.InvokeMember[TReturn](CallSite& callsite, Type binderType, Int32 knownType, LazyBinder binder, String_OR_InvokeMemberName name, Boolean staticContext, Type context, String[] argNames, Object target, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\InvokeHelper-Regular.cs:line 298 at RazorEngine.Compilation.ImpromptuInterface.Optimization.InvokeHelper.InvokeMemberCallSite(Object target, String_OR_InvokeMemberName name, Object[] args, String[] tArgNames, Type tContext, Boolean tStaticContext, CallSite& callSite) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\InvokeHelper-Regular.cs:line 445 at RazorEngine.Compilation.ImpromptuInterface.Impromptu.InvokeMember(Object target, String_OR_InvokeMemberName name, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\Impromtu.cs:line 179 at RazorEngine.Compilation.ImpromptuInterface.Dynamic.Invocation.Invoke(Object target, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\Invocation.cs:line 242 at RazorEngine.Compilation.ImpromptuInterface.Dynamic.Invocation.InvokeWithStoredArgs(Object target) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\Invocation.cs:line 302 at RazorEngine.Compilation.RazorDynamicObject.MarshalWrapper.GetResult(Invocation invocation) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\RazorDynamicObject.cs:line 140 at RazorEngine.Compilation.RazorDynamicObject.RemoteInvoke(Invocation invocation, Object& result) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\RazorDynamicObject.cs:line 462 at RazorEngine.Compilation.RazorDynamicObject.TryInvokeMember(InvokeMemberBinder binder, Object[] args, Object& result) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\RazorDynamicObject.cs:line 600 at CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at ActLike_IList`1_36f0a2eb9ada4306abe097de77b83502.System.Collections.IEnumerable.GetEnumerator() at CompiledRazorTemplates.Dynamic.RazorEngine_cab742326b86467eb2301cbfdbe904d9.d__1.MoveNext() in C:\Users\conniey\AppData\Local\Temp\RazorEngine_hudttqnr.3fz\CompiledRazorTemplates.Dynamic.RazorEngine_cab742326b86467eb2301cbfdbe904d9.cs:line 3 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at RazorEngine.Templating.TemplateBase.d__32.MoveNext() in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\TemplateBase.cs:line 230 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at RazorEngine.Templating.RazorEngineCore.d__12.MoveNext() in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineCore.cs:line 155 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineService.cs:line 278 at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineService.cs:line 257 at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\DynamicWrapperService.cs:line 102 at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 142 at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 254 at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 222 at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 254 at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String templateSource, String name, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 326 at Test.RazorEngine.RazorEngineServiceTestFixture.<>c.b__22_0(IRazorEngineService service) in D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\RazorEngineServiceTestFixture.cs:line 527 at Test.RazorEngine.RazorEngineServiceTestFixture.RunTestHelper(Action`1 test, Action`1 withConfig) in D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\RazorEngineServiceTestFixture.cs:line 49 at Test.RazorEngine.RazorEngineServiceTestFixture.RazorEngineService_TestEnumeratingDynamicObject() in D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\RazorEngineServiceTestFixture.cs:line 517 ```" +23856 area-Microsoft.CSharp ArgumentOutOfRangeException in RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) when invoking dynamic object "**Repro Steps** Execute the following: * git clone -b updateToNetCore https://github.com/conniey/RazorEngine.git * dotnet restore .\src\RazorEngine.NetCore.sln * dotnet build .\src\RazorEngine.NetCore.sln * dotnet test .\src\test\Test.RazorEngine.Core\Test.RazorEngine.Core.NetCore.csproj --no-build --filter ""FullyQualifiedName~Issue67_CollectionOfAnonymous"" --framework netcoreapp2.0 **Expected** It passes. It passes when executed on .NET 4.6.2 and used to work on .NET Core 2.0 preview. * dotnet test .\src\test\Test.RazorEngine.Core\Test.RazorEngine.Core.NetCore.csproj --no-build --filter ""FullyQualifiedName~Issue67_CollectionOfAnonymous"" **--framework net462** **Actual** Test fails with an ArgumentOutOfRangeException. I checked the output binaries for .NET 4.6.2 and .NET Core 2.0. They appear exactly the same, aside from references to .NET Framework in the first case and the .NET Core references in the other. (The files are output to a folder like: _%TEMP%\RazorEngine_\_.) ``` Test Name: Issue67_CollectionOfAnonymous Test FullName: RazorEngine.Tests.TestTypes.Issues.Release_3_6_TestFixture.Issue67_CollectionOfAnonymous Test Source: D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\Issues\Release_3_6_TestFixture.cs : line 81 Test Outcome: Failed Test Duration: 0:00:00.579 Result Message: System.ArgumentOutOfRangeException : Length cannot be less than zero. Parameter name: length Result StackTrace: at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameManager.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetName(Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.InitializeCallingContext(ICSharpBinder payload) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) at System.Dynamic.InvokeMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at RazorEngine.Compilation.ImpromptuInterface.Optimization.InvokeHelper.InvokeMemberTargetType[TTarget,TReturn](CallSite& callsite, Type binderType, Int32 knownType, LazyBinder binder, String_OR_InvokeMemberName name, Boolean staticContext, Type context, String[] argNames, TTarget target, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\InvokeHelper.cs:line 317 at RazorEngine.Compilation.ImpromptuInterface.Optimization.InvokeHelper.InvokeMember[TReturn](CallSite& callsite, Type binderType, Int32 knownType, LazyBinder binder, String_OR_InvokeMemberName name, Boolean staticContext, Type context, String[] argNames, Object target, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\InvokeHelper-Regular.cs:line 298 at RazorEngine.Compilation.ImpromptuInterface.Optimization.InvokeHelper.InvokeMemberCallSite(Object target, String_OR_InvokeMemberName name, Object[] args, String[] tArgNames, Type tContext, Boolean tStaticContext, CallSite& callSite) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\InvokeHelper-Regular.cs:line 445 at RazorEngine.Compilation.ImpromptuInterface.Impromptu.InvokeMember(Object target, String_OR_InvokeMemberName name, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\Impromtu.cs:line 179 at RazorEngine.Compilation.ImpromptuInterface.Dynamic.Invocation.Invoke(Object target, Object[] args) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\Invocation.cs:line 242 at RazorEngine.Compilation.ImpromptuInterface.Dynamic.Invocation.InvokeWithStoredArgs(Object target) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\DynamicObject\Impromtu\Invocation.cs:line 302 at RazorEngine.Compilation.RazorDynamicObject.MarshalWrapper.GetResult(Invocation invocation) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\RazorDynamicObject.cs:line 140 at RazorEngine.Compilation.RazorDynamicObject.RemoteInvoke(Invocation invocation, Object& result) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\RazorDynamicObject.cs:line 462 at RazorEngine.Compilation.RazorDynamicObject.TryInvokeMember(InvokeMemberBinder binder, Object[] args, Object& result) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Compilation\RazorDynamicObject.cs:line 600 at CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at ActLike_IEnumerator`1_9c672819f42145cd95938ca2764cccd5.MoveNext() at CompiledRazorTemplates.Dynamic.RazorEngine_2b03143873ed48859513f94d70844003.d__1.MoveNext() in C:\Users\conniey\AppData\Local\Temp\RazorEngine_0mbewxcu.exl\CompiledRazorTemplates.Dynamic.RazorEngine_2b03143873ed48859513f94d70844003.cs:line 1 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at RazorEngine.Templating.TemplateBase.d__32.MoveNext() in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\TemplateBase.cs:line 230 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at RazorEngine.Templating.RazorEngineCore.d__12.MoveNext() in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineCore.cs:line 155 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineService.cs:line 278 at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineService.cs:line 257 at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\DynamicWrapperService.cs:line 102 at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 142 at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 254 at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 222 at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 254 at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String templateSource, String name, Type modelType, Object model, DynamicViewBag viewBag) in D:\git\conniey\RazorEngine\src\source\RazorEngine.Core\Templating\RazorEngineServiceExtensions.cs:line 326 at RazorEngine.Tests.TestTypes.Issues.Release_3_6_TestFixture.<>c.b__1_0(IRazorEngineService service) in D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\Issues\Release_3_6_TestFixture.cs:line 95 at Test.RazorEngine.RazorEngineServiceTestFixture.RunTestHelper(Action`1 test, Action`1 withConfig) in D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\RazorEngineServiceTestFixture.cs:line 49 at RazorEngine.Tests.TestTypes.Issues.Release_3_6_TestFixture.Issue67_CollectionOfAnonymous() in D:\git\conniey\RazorEngine\src\test\Test.RazorEngine.Core\Issues\Release_3_6_TestFixture.cs:line 82 ```" +23857 area-Serialization Area-Serialization Sprint 124 The issue is for tracking issues to be done in sprint 124 (due by 9/29/2017) +23859 area-Serialization Documentation of Sgen on Core Preview We need to have documentation for the SGEN on Core preview. Per our discussion, here's the action items for this issue, - [x] Create a .md file in https://github.com/dotnet/core/tree/master/samples for instruction and samples. - [x] Open an issue in [dotnet/announcements](https://github.com/dotnet/announcements) for the announcement of SGen. The issue would be locked for discussion. - [x] Open an issue in [dotnet/corefx](https://github.com/dotnet/corefx) for discussion and user feedback. +23861 area-System.Text release/2.0.0 backport of REGEX_DEFAULT_MATCH_TIMEOUT (#23666) Change #23666 Fixed #15173 waiting for shiproom approval +23862 area-System.Memory Productizing APIs for {ReadOnly}Memory and friends "**Open issues to resolve as part of productizing:** 1. We changed the AsSpan() method into an abstract property named Span. - When do we intend to use properties versus methods for span/memory related conversions? 2. Should we add the ""bulk"" operations that are available on Span\ to Memory\ as well such as the ones listed below: - Where would the extension methods for Memory go? Its own MemoryExtensions class like SpanExtensions or should we merge them both into one? Given these are extension methods (and the classes won't appear in user code), I would say they should go in separate MemoryExtensions class. ```C# // instance methods public struct Memory { public void CopyTo(Memory destination); public bool TryCopyTo(Memory destination); public void Fill(T value); public void Clear(); } public struct ReadOnlyMemory { public void CopyTo(Memory destination); public bool TryCopyTo(Memory destination); } // extension methods public static class MemoryExtensions { public static int IndexOf(this Memory memory, T value); public static int IndexOf(this Memory memory, ReadOnlyMemory value); public static int IndexOf(this ReadOnlyMemory memory, T value); public static int IndexOf(this ReadOnlyMemory memory, ReadOnlyMemory value); public static bool SequenceEqual(this Memory first, ReadOnlyMemory second); public static bool SequenceEqual(this ReadOnlyMemory first, ReadOnlyMemory second); public static void CopyTo(this T[] array, Memory destination); public static Memory AsMemory(this T[] array); public static Memory AsMemory(this ArraySegment arraySegment); public static ReadOnlyMemory AsReadOnlyMemory(this T[] array); public static ReadOnlyMemory AsReadOnlyMemory(this ArraySegment arraySegment); } ```
Here are the Memory APIs that have already gone through API review They were added here: - https://github.com/dotnet/coreclr/pull/13583 (mscorlib) - https://github.com/dotnet/corefx/pull/23701 (System.Memory) - https://github.com/dotnet/corefx/pull/23841 (System.Runtime) ```C# namespace System { public struct Memory { public static Memory Empty { get; } public Memory(T[] array); public Memory(T[] array, int start, int length); public bool IsEmpty { get; } public int Length { get; } [EditorBrowsable(EditorBrowsableState.Never)] public override bool Equals(object obj); public bool Equals(Memory other); [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode(); public static implicit operator Memory(T[] array); public static implicit operator Memory(ArraySegment arraySegment); public static implicit operator ReadOnlyMemory(Memory memory); public Memory Slice(int start); public Memory Slice(int start, int length); public Span Span { get;} public unsafe Buffers.MemoryHandle Retain(bool pin = false); public T[] ToArray(); public bool TryGetArray(out ArraySegment arraySegment); } public struct ReadOnlyMemory { public static ReadOnlyMemory Empty { get;} public ReadOnlyMemory(T[] array); public ReadOnlyMemory(T[] array, int start, int length); internal ReadOnlyMemory(Buffers.OwnedMemory owner, int index, int length); public bool IsEmpty { get;} public int Length { get;} [EditorBrowsable(EditorBrowsableState.Never)] public override bool Equals(object obj); public bool Equals(ReadOnlyMemory other); [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode(); public static implicit operator ReadOnlyMemory(T[] array); public static implicit operator ReadOnlyMemory(ArraySegment arraySegment); public ReadOnlyMemory Slice(int start); public ReadOnlyMemory Slice(int start, int length); public ReadOnlySpan Span { get;} public unsafe Buffers.MemoryHandle Retain(bool pin = false); public T[] ToArray(); [EditorBrowsable(EditorBrowsableState.Never)] public bool DangerousTryGetArray(out ArraySegment arraySegment); } } ``` ```C# namespace System.Buffers { public unsafe struct MemoryHandle : IDisposable { public MemoryHandle(IRetainable owner, void* pointer = null, GCHandle handle = default(GCHandle)); public void* Pointer { get; } public bool HasPointer { get; } public void Dispose(); } public interface IRetainable { bool Release(); void Retain(); } public abstract class OwnedMemory : IDisposable, IRetainable { public Memory Memory { get; } public abstract bool IsDisposed { get; } protected abstract bool IsRetained { get; } public abstract int Length { get; } public abstract Span Span { get; } public void Dispose(); protected abstract void Dispose(bool disposing); public abstract MemoryHandle Pin(); public abstract bool Release(); public abstract void Retain(); protected internal abstract bool TryGetArray(out ArraySegment arraySegment); } } ```
(https://github.com/dotnet/corefx/blob/master/src/System.Memory/ref/System.Memory.cs#L149) cc @weshaggard, @KrzysztofCwalina, @shiftylogic, @stephentoub, @terrajobst, @karelz, @jkotas, @davidfowl " +23863 area-System.Memory Create usage guidelines for lifetime management of Memory From: https://github.com/dotnet/corefx/pull/23701#discussion_r136669166 The architecture overview doc will clarify the semantics and usage of MemoryHandle and OwnedMemory\ Retain, Release, and Dipose. cc @KrzysztofCwalina, @shiftylogic +23865 area-System.Linq Fix LargeArrayBuilder.CopyTo returning incorrect end-of-copy position Porting #23817 to release 2.0 branch. Fixes #23680 +23866 area-Serialization Enable SgenTests Enable Sgen Test. +23867 area-System.Xml Xml schema dependency removal for AOT compilers This changes fixes a size issue in AOT compiled code which uses XmlReader. Using XmlReader for just reading XML without validation still pulls in all of the XmlSchema code. This makes the AOT compilation slow (it's more than 400KB of IL) and the resulting app is larger (.NET Native X86 measures the difference at more than 800KB of native code). The change relies on an assumption, that apps which don't need validation will not call the XmlReaderSettings.ValidationType setter. As such it can be reduced away and the change then ties all the dependencies needed for validation to that setter. So if the setter itself is not called XmlSchema is not pulled in. Verified that the change does reduce the app size and that XmlSchema is not in final app anymore. +23868 area-System.Net Remove duplicate bug ids in source code. fixes #23140 These tests will anyways be skipped by failing the conditional theory on each individual test in the base test class. +23869 area-Serialization Fix 4 Serialization Tests Fix 4 serialization tests. Please see details in each individual issues. Fix #22776 Fix #22777 Fix #22778 Fix #22779` +23870 area-System.Memory DCR: Review ReferenceCountedDisposable as an alternative to IRetainable _From @ahsonkhan on September 7, 2017 20:26_ Design Change Request (DCR) From https://github.com/dotnet/coreclr/pull/13583#issuecomment-325162865: > :bulb: My strongest recommendation here would be to carefully review the semantics of [`ReferenceCountedDisposable`](https://github.com/dotnet/roslyn/blob/master/src/Workspaces/Core/Portable/Utilities/ReferenceCountedDisposable.cs) in Roslyn and consider how they might be usable in these scenarios as an alternative to `IRetainable`. This type provides strong guarantees in concurrent code and eliminates many concerns related to ownership when both `IDisposable` and `IRetainable` are at play. It also provides a weak reference type with strong semantic guarantees. cc @KrzysztofCwalina, @shiftylogic _Copied from original issue: dotnet/coreclr#13840_ +23872 area-System.Runtime Expose/test String.Create span-based method Depends on https://github.com/dotnet/coreclr/pull/13849 and https://github.com/dotnet/corert/pull/4467 Fixes https://github.com/dotnet/corefx/issues/22380 +23873 area-System.Linq Faster Any() Linq query _From @banjouuid on September 7, 2017 15:38_ # Could Any() query be faster? Currently the Any() Linq query as shown in the [source](https://source.dot.net/#System.Linq/System/Linq/AnyAll.cs) calls a using and then gets the enumerator. I'm just guessing if it makes sense to add this extension to ICollection that would be faster: `public static bool Any(this ICollection source) { if (source == null) => throw Error.ArgumentNull(nameof(source)); return source.Count > 0; }` Regards. _Copied from original issue: dotnet/core#949_ +23874 area-System.IO [API] StreamWriter .ctor pooling overloads ## Motivation As `StreamWriter` requires buffers that live longer than a function lifetime (i.e. buffer lifetime is longer than single entry function scope - class field vs local); there isn't a way to transparently use the `ArrayPool` without regressing either performance or safety. As a result of this the option is to make buffer pooling a conscious opt-in choice by the user; so it is safe by default and can be more performant on the opt-in. ## Proposal https://github.com/dotnet/corefx/issues/23874#issuecomment-333624280 ```csharp public partial class StreamWriter { static int DefaultBufferSize { get; } static int DefaultFileBufferSize { get; } static Encoding DefaultEncoding { get; } StreamWriter(Stream stream, Encoding encoding = DefaultEncoding, int bufferSize = DefaultBufferSize, bool leaveOpen = false, ArrayPool charPool = null, ArrayPool bytePool = null); } ``` ### Previous proposal ```csharp public partial class StreamWriter { StreamWriter(Stream stream, bool useBufferPooling) StreamWriter(Stream stream, bool useBufferPooling, Encoding encoding) StreamWriter(Stream stream, bool useBufferPooling, Encoding encoding, int bufferSize) StreamWriter(Stream stream, bool useBufferPooling, Encoding encoding, int bufferSize, bool leaveOpen) } ``` ## Comment Similar pattern could be extended to other areas with longer lived buffers, like `FileStream` etc /cc @stephentoub @JeremyKuhne @jkotas @KrzysztofCwalina +23875 area-System.Reflection Does CoreFX library support NI file, including both FNV and R2R ? Does CoreFX library support NI file, including both FNV and R2R? If not, what types of file does CoreFX library support for reflection ? e.g. C# managed dll, native dll(Windows), and etc. For example, such as `PEReader.GetMetadataReader` or `GetCustomAttributes` is supporting NI file? If PEReader accepts a stream from a pe file and the pe file is FNV or R2R NI file, all corefx apis are handling the case? p.s. the reason why I ask about that, `System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests.TestCustomAttributeDecoder` in `System.Reflection.Metadata.Tests'` always is failed on NI overlay + NI TC-FNV&R2R. And some tcs are failed like it. /cc @dotnet/arm32-contrib @parjong @hqueue +23876 area-System.Net "Test: System.Net.NetworkInformation.Tests.PingTest/SendPings_ReuseInstance_Hostname failed with ""System.Net.NetworkInformation.PingException : An exception occurred during a Ping request""" Opened on behalf of @Jiayili1 The test `System.Net.NetworkInformation.Tests.PingTest/SendPings_ReuseInstance_Hostname` has failed. System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. ---- System.Net.NetworkInformation.PingException : An exception occurred during a Ping request. Stack Trace: at System.Net.NetworkInformation.Ping.d__48.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs:line 364 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Tests.PingTest.d__15.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs:line 349 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Net.NetworkInformation.Ping.d__60.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs:line 210 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__58.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.NetworkInformation.Ping.d__48.MoveNext() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs:line 353 Build : Master - 20170908.01 (Core Tests) Failing configurations: - OSX.1012.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170908.01/workItem/System.Net.Ping.Functional.Tests/analysis/xunit/System.Net.NetworkInformation.Tests.PingTest~2FSendPings_ReuseInstance_Hostname +23877 area-System.Drawing System.Drawing.Common.Tests failed Failed to generate the test results. Failed configuration: OuterLoop_netcoreapp_ubuntu14.04_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_ubuntu14.04_release/lastCompletedBuild/ /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_release/Tools/tests.targets(483,5): error: One or more tests failed while running tests from 'System.Drawing.Common.Tests' please check /mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_release/bin/tests/System.Drawing.Common.Tests/netcoreapp-Linux-Release-x64/testResults.xml for details! [mnt/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_ubuntu14.04_release/src/System.Drawing.Common/tests/System.Drawing.Common.Tests.csproj] +23878 area-System.Data System.Data.SqlClient.Stress.Tests failed to generate the test result System.Data.SqlClient.Stress.Tests failed to generate the test result Failed configuration: Windows.10.Amd64-arm Detail: https://mc.dot.net/#/product/netcore/uwp60/source/official~2Fcorefx~2Frelease~2Fuwp6.0~2F/type/test~2Ffunctional~2Filc~2F/build/20170908.01/workItem/System.Data.SqlClient.Stress.Tests/wilogs ~~~ 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : Unhandled Exception: System.InvalidOperationException: Method failed with unexpected error code 122. 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Security.AccessControl.NativeObjectSecurity.Persist(SafeHandle handle, AccessControlSections includeSections, Object exceptionContext) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Security.AccessControl.NativeObjectSecurity.Persist(SafeHandle handle, AccessControlSections includeSections) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Security.AccessControl.RegistrySecurity.Persist(SafeRegistryHandle hKey, String keyName) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.Win32.RegistryKey.SetAccessControl(RegistrySecurity registrySecurity) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.RegistryPropertyBag.SetAccessControl(RegistryKey key) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.RegistryPropertyBag.<>c__DisplayClass14_0.b__0() 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.RegistryPropertyBag.SafeRegistryCall(Action action) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.RegistryPropertyBag.SetProperty(String propertyName, Object value) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.RegistryPropertyBag.SetProperty(String propertyName, String value) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.MACInformationProvider.<>c__DisplayClass13_0.b__0(String data) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at Microsoft.VisualStudio.Telemetry.ProcessTools.<>c__DisplayClass1_0.b__1(Object sender, EventArgs e) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Diagnostics.Process.OnExited() 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Diagnostics.Process.RaiseOnExited() 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Diagnostics.Process.CompletionCallback(Object context, Boolean wasSignaled) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Threading._ThreadPoolWaitOrTimerCallback.WaitOrTimerCallback_Context(Object state, Boolean timedOut) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Threading._ThreadPoolWaitOrTimerCallback.WaitOrTimerCallback_Context_f(Object state) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 2017-09-08 02:00:15,917: INFO: proc(54): run_and_log_output: Output: MSBUILD : error : at System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(Object state, Boolean timedOut) ~~~ +23879 area-System.Memory Support casting ReadOnlyMemory to Memory # Latest Proposal From https://github.com/dotnet/corefx/issues/23879#issuecomment-340861229 ```C# namespace System.Runtime.InteropServices { public static class MemoryMarshal { public static bool TryGetArray(ReadOnlyMemory readOnlyMemory, out ArraySegment arraySegment); public static Memory AsMemory(ReadOnlyMemory readOnlyMemory); } } ``` # Original Proposal We already have `DangerousTryGetArray(...)` on `ReadOnlyMemory`, as well as `rom.Span.DangerousGetPinnableReference()`, so it's possible to get writable access to the underlying data. But there's currently no efficient way to get a `Memory` from a `ReadOnlyMemory`. This is relevant for cases where a shared data structure or API needs to be usable from APIs that work with either `Memory` or `ReadOnlyMemory`. For example, Socket.SendAsync will take a `ReadOnlyMemory`, but the underlying SocketAsyncEventArgs type only works with `Memory`, because it needs to support both read and write APIs. If there's no way to efficiently convert a `ReadOnlyMemory` to a `Memory`, we'll need to increase the size of such objects to store both, and potentially add branching in a variety of places to make sure the right underlying field is being used. I propose we add the following method to `ReadOnlyMemory`: ```C# public Memory DangerousAsMemory(); ``` cc: @KrzysztofCwalina, @ahsonkhan +23881 area-System.Memory ReadOnlySpan.DangerousGetPinnableReference should return a readonly reference Should ```csharp namespace System { public struct ReadOnlySpan { public ref T DangerousGetPinnableReference() ``` be ```csharp public ref readonly T DangerousGetPinnableReference() ↑ ``` ? That would make it slightly less dangerous. +23882 area-System.Reflection Expose the recently approved Reflection apis in contracts Fixes https://github.com/dotnet/corefx/issues/22866 Fixes https://github.com/dotnet/corefx/issues/16567 +23883 area-System.Reflection Add IsGenericTypeParameter and IsGenericMethodParameter to System.Type "# Proposed apis ```c# class Type { public virtual bool IsGenericTypeParameter => IsGenericParameter && DeclaringMethod == null; public virtual bool IsGenericMethodParameter => IsGenericParameter && DeclaringMethod != null; } class TypeDelegator (and TypeBuilder,GenericTypeParameterBuilder,EnumBuilder) { public override bool IsGenericTypeParameter { get; } public override bool IsGenericMethodParameter { get; } } ``` These properties distinguish between generic parameters introduced by types and generic parameters introduced by methods. # Rationale Currently, the only way to distinguish generic parameters on types from generic parameters on methods is by testing whether `DeclaringMethod` returns null. This idiom will not work with the recently added Signature Types (https://github.com/dotnet/corefx/issues/16567) as these types do not have a `MethodInfo` to return and will always throw on a `DeclaringMethod` call. While one could work around this today by writing this: ```c# IsGenericMethodParameter => IsGenericParameter && (IsSignatureType || DeclaringMethod != null) ``` this is not very intuitive, nor is it future-proof as it's not inconceivable that in the future, we may add the ability to create signature types representing unbounded generic type parameters. Even for regular types, these new properties are more succinct, expressive and allow properly factored underlying implementations (CoreRT) to override with the maximally performant ""return true/false"" implementations, eliminating a virtual call. Signature Types, of course, will have to override. # Naming Naming is consistent with the recently added ```c# Type MakeGenericMethodParameter(int position) ``` api." +23884 area-System.Memory Support casting ReadOnlySpan to Span # Proposal ``` struct ReadOnlySpan { public Span DangerousAsSpan(); } ``` I have not found a workable way to do this (at least one that works across both fast and slow Span.) This functionality is needed to bridge code that uses ReadOnlySpan with code that supports both reading and writing (Span). +23886 area-System.Net WebRequest.DefaultWebProxy: Set doesn't work without a previous Get Unless we do an unnecessary Get() on WebRequest.DefaultWebProxy, any Set() done will not be honored. This is especially a problem on Linux, where DefaultWebProxy throws PlatformNotSupportedException(). This in turn breaks libraries like WindowsAzure.Storage which fail unless the Get() is called first and then WebRequest.DefaultWebProxy is set to null. This fix avoids the unnecessary Get() by setting the already initialized flag sent to the LazyInitializer. // bug created to track 2.0 port https://github.com/dotnet/corefx/pull/22720 +23887 area-System.Diagnostics Process.ProcessName is expensive on Windows It causes an enumeration of all processes just to get the name of the current process https://source.dot.net/#System.Diagnostics.Process/System/Diagnostics/Process.cs,900 https://source.dot.net/#System.Diagnostics.Process/System/Diagnostics/ProcessManager.Windows.cs,53 On Windows it could call just GetProcessName. There may be other places it could avoid examining all processes just to get information about the current process. (All this is arguably fallout of giving the Process class three responsibilities -- spawning processes, representing the current process, and accessing general process information) Feedback from internal service that calls `Process.ProcessName` often for logging on Windows. +23889 area-Infrastructure Tests for OOB packages in NETFX need to run against OOB binaries. "@davidsh words: ""This test is failing now because it is running against the ""Full Framework"". But for System.Net.Http tests, even running against ""Full Framework"" means that it should use the OOB System.Net.Http and not the inbox System.Net.Http from the .NET Framework. Something has changed in how the test binaries are laid out and consumed. The tests appear to be using the inbox System.Net.Http binary and not the OOB System.Net.Http binary (net46 build from package). I think this all broke when individual packages for contracts (such as System.Net.Http) went away and were replaced with mega-packages."" Please see: https://github.com/dotnet/corefx/issues/23702#issuecomment-326674472 cc: @weshaggard @ericstj @karelz " +23890 area-Infrastructure Move Windows performance jobs to Windows Server 2016 machine pool. +23891 area-Infrastructure Move Windows performance jobs to Windows Server 2016. +23892 area-System.Net Disable sockets test always failing on Desktop "System.Net.Sockets.Tests.AcceptTask Accept_WithTargetSocket_ReuseAfterDisconnect_Success ""System.InvalidOperationException : acceptSocket: The socket must not be bound or connected."" #22808" +23893 area-System.Runtime Add more DateTime parsing tests As part of adding span support to DateTime, I'm adding some more tests. This increases code coverage of DateTimeParse from a bit over 40% to a bit over 60%. cc: @tarekgh, @joperezr, @AlexGhiondea +23894 area-Infrastructure Automatic updating of buildtools version. With this change, BuildTools will automatically be updated to the latest available version. +23895 area-Infrastructure Revert PreReleaseLabel CC @weshaggard +23896 area-Infrastructure Reset list of built packages for 1.0.7 servicing cc: @weshaggard +23897 area-System.Runtime DbNull serialization with tests and forward Fixes https://github.com/dotnet/corefx/issues/23398 Waiting for new coreclr build ingestion: https://github.com/dotnet/coreclr/pull/13845 +23898 area-System.Threading Task.Yield() is missing a .ConfigureAwait(bool) option As there are legitimate uses of `Task.Yield()` and legit uses of `Task.ConfigureAwait(false)`, it's odd that there is no API to allow `await Task.Yield().ConfigureAwait(false);`. Anyone who must yield back to the caller but does not want to resume on the caller's `SynchronizationContext` has no convenient API to enable that. In [vs-threading we just filled this gap](https://github.com/Microsoft/vs-threading/pull/182/files) ourselves, but it seems like a worthwhile addition to .NET itself. See also: https://stackoverflow.com/questions/28309185/task-yield-in-library-needs-configurewaitfalse # Proposal ```C# public struct YieldAwaitable { public ConfiguredYieldAwaitable ConfigureAwait(bool continueOnCapturedContext); } ``` Or an equivalent extension method as we've defined in vs-threading. +23899 area-System.Data IDbDataParameter.Precision is broken for SqlClient 4.3.0 The implementations of IDbParameter.Precision and IDBParameter.Scale in System.Data.Common.DbParameter got replaced with dummy implementations by commit 7888677b3c53596085c2fa53860d9a0519eeecfd. This demo application reproduces the problem in .NET Core 2.0 but works just fine in .NET Core 1.1. Expected output: 19; got 0. [Program.zip](https://github.com/dotnet/corefx/files/1289338/Program.zip) +23900 area-Infrastructure Reset package list for 1.1.4 servicing release cc: @weshaggard +23901 area-System.Memory Adding log message containing actual number of compares for Span API tests This will help us get more info about intermittent failures like: https://github.com/dotnet/corefx/issues/23430 cc @AtsushiKan, @shiftylogic +23902 area-System.Data Fix IDbParamter.Precision for SqlClient Fixes #23899 +23905 area-System.Memory Enable S.R.CS.Unsafe and System.Memory tests for UAP "Fixes https://github.com/dotnet/corefx/issues/23406 **The Span tests fail for uapaot when we try to access the elements of a Span of a reference type like string using the provided indexer:** ```C# public static void TestingSpanReferenceTypeForUAPAOT() { ReadOnlySpan span1 = new byte[] { 1 }; byte temp1 = span1[0]; // successful ReadOnlySpan span2 = new string[] { ""1"" }; string temp2 = span2[0]; // fails with IndexOutOfRangeException } ``` ```xml span1) in D:\GitHub\Fork\corefx\src\System.Memory\tests\ReadOnlySpan\CtorArray.cs:line 66 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean wrapInTargetInvocationException, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall, Boolean parametersNeedCopyBack, ArgSetupState argSetupState, Object[] parametersOld, Object[] nullableCopyBackObjectsOld, Int32 curIndexOld, Object targetMethodOrDelegateOld, BinderBundle binderBundleOld, Object[] customBinderProvidedParametersOld, Object result, Exception e, Int32 i) in CallDynamicInvokeMethod:line 16707566 ]]> ``` **The Unsafe.RefAreSame test fails on uapaot:** ```C# public static void RefAreSame() { long[] a = new long[2]; Assert.True(Unsafe.AreSame(ref a[0], ref a[0])); // successful Assert.False(Unsafe.AreSame(ref a[0], ref a[1])); // fails } ``` ```xml ``` I am not sure why Span\ indexer (`ref T this[int index]`) and Unsafe.AreSame\(ref T left, ref T right) are failing on uapaot. Any ideas? cc @jkotas, @safern, @danmosemsft " +23907 area-System.Data Break out System.Data.DataSet and DataTable from System.Data.Common Most projects using System.Data.SqlClient have no need or use of DataSet or DataTable classes. It is to them about half a megabyte of junk they do not need and will never try to use, but it gets loaded because all this stuff references it. Most projects are better off using DataReader directly or EntityFramework which uses DataReader. The classes along with whatever depends on them should be broken out into another dll such as System.Data.DataSet. SqlDataAdapter would also need to get broken out into its own dll or it defeats the purpose. There is no point arguing this will break backwards compatibility. Backwards compatibility of System.Data.Common is already broken. Better to fix this soon before too much depends on it. +23908 area-System.Memory Marking {ReadOnly}Span as readonly structs Fixes issue https://github.com/dotnet/corefx/issues/23809 Related PR for coreclr: https://github.com/dotnet/coreclr/pull/13886 cc @KrzysztofCwalina, @VSadov +23911 area-System.Reflection Add a Create method overload for the System.Reflection.Dispatchpro… Add a Create method overload for the System.Reflection.Dispatchproxy class +23912 area-Infrastructure Intermittent build failure: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' _From @sdmaclea on September 9, 2017 0:24_ CoreCLR is referencing CoreFX 13b5345 Building managed on Ubuntu AMD64 results in the following error. The type or namespace name 'Policy' does not exist in the namespace 'System.Security' _Copied from original issue: dotnet/coreclr#13881_ +23913 area-System.Diagnostics ProcessStartInfo.UseShellExecute documentation is inconsistent with behavior "The documentation for the `UseShellExecute` property in the `ProcessStartInfo` class states the following: > Gets or sets a value indicating whether to use the operating system shell to start the process. Returns: true if the shell should be used when starting the process; false if the process should be created directly from the executable file. **The default is true**. This seems to be inconsistent with the actual behavior. ```cs using System; using System.Diagnostics; namespace Example { class Program { static void Main(string[] args) { var info = new ProcessStartInfo() { // UseShellExecute = true, }; Console.WriteLine($""UseShellExecute: {info.UseShellExecute}""); } } } ``` Which prints out: > UseShellExecute: False Reference: https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.Unix.cs#L41" +23915 area-System.IO CoreFx #22409 StreamWriter Span based API and tests This PR is for the Span based API for StreamWriter. Please note that this PR is dependent on PR #23786 for successful compilation. @stephentoub @danmosemsft kindly review. Fixes #22409. Thanks, Mandar +23916 area-System.Runtime S.R.CS.Unsafe and read-only references Most (if not all) APIs today are defined to accept references with `ref` rather than `ref readonly`. This includes all methods of the `Unsafe` class. This proposal is to provide a method to turn a `ref readonly T` into a `ref T`, so that read-only references can be passed to methods that use `ref` but are known to be only reading them. ```diff public static partial class Unsafe { ... + public static ref T AsRef(ref readonly T source) } ```
Original proposals (click to expand) A few proposals for APIs related to the System.Runtime.CompilerServices.Unsafe class and read-only references. **Proposal 1:** Change `ref T` to `ref readonly T` where possible: ```diff public static class Unsafe { public static ref T AddByteOffset(ref T source, System.IntPtr byteOffset) public static ref T Add(ref T source, int elementOffset) public static void* Add(void* source, int elementOffset) public static ref T Add(ref T source, System.IntPtr elementOffset) - public static bool AreSame(ref T left, ref T right) + public static bool AreSame(ref readonly T left, ref readonly T right) - public static void* AsPointer(ref T value) + public static void* AsPointer(ref readonly T value) public static ref T AsRef(void* source) public static T As(object o) where T : class public static ref TTo As(ref TFrom source) - public static System.IntPtr ByteOffset(ref T origin, ref T target) + public static System.IntPtr ByteOffset(ref readonly T origin, ref readonly T target) - public static void CopyBlock(ref byte destination, ref byte source, uint byteCount) + public static void CopyBlock(ref byte destination, ref readonly byte source, uint byteCount) public static void CopyBlock(void* destination, void* source, uint byteCount) - public static void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount) + public static void CopyBlockUnaligned(ref byte destination, ref readonly byte source, uint byteCount) public static void CopyBlockUnaligned(void* destination, void* source, uint byteCount) - public static void Copy(void* destination, ref T source) + public static void Copy(void* destination, ref readonly T source) public static void Copy(ref T destination, void* source) public static void InitBlock(ref byte startAddress, byte value, uint byteCount) public static void InitBlock(void* startAddress, byte value, uint byteCount) public static void InitBlockUnaligned(ref byte startAddress, byte value, uint byteCount) public static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount) public static T Read(void* source) public static T ReadUnaligned(void* source) - public static T ReadUnaligned(ref byte source) + public static T ReadUnaligned(ref readonly byte source) public static int SizeOf() public static ref T SubtractByteOffset(ref T source, System.IntPtr byteOffset) public static ref T Subtract(ref T source, int elementOffset) public static void* Subtract(void* source, int elementOffset) public static ref T Subtract(ref T source, System.IntPtr elementOffset) public static void Write(void* destination, T value) public static void WriteUnaligned(void* destination, T value) public static void WriteUnaligned(ref byte destination, T value) } ``` **Proposal 2:** `Unsafe` but every `ref T` is a `ref readonly T`: ```diff +public static class UnsafeReadOnly +{ + public static ref readonly T AddByteOffset(ref readonly T source, System.IntPtr byteOffset) + public static ref readonly T Add(ref readonly T source, int elementOffset) + public static void* Add(void* source, int elementOffset) + public static ref readonly T Add(ref readonly T source, System.IntPtr elementOffset) + public static bool AreSame(ref readonly T left, ref readonly T right) + public static void* AsPointer(ref readonly T value) + public static ref readonly T AsRef(void* source) + public static T As(object o) where T : class + public static ref readonly TTo As(ref readonly TFrom source) + public static System.IntPtr ByteOffset(ref readonly T origin, ref readonly T target) + public static void CopyBlock(ref readonly byte destination, ref readonly byte source, uint byteCount) + public static void CopyBlock(void* destination, void* source, uint byteCount) + public static void CopyBlockUnaligned(ref readonly byte destination, ref readonly byte source, uint byteCount) + public static void CopyBlockUnaligned(void* destination, void* source, uint byteCount) + public static void Copy(void* destination, ref readonly T source) + public static void Copy(ref readonly T destination, void* source) + public static void InitBlock(ref readonly byte startAddress, byte value, uint byteCount) + public static void InitBlock(void* startAddress, byte value, uint byteCount) + public static void InitBlockUnaligned(ref readonly byte startAddress, byte value, uint byteCount) + public static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount) + public static T Read(void* source) + public static T ReadUnaligned(void* source) + public static T ReadUnaligned(ref readonly byte source) + public static int SizeOf() + public static ref readonly T SubtractByteOffset(ref readonly T source, System.IntPtr byteOffset) + public static ref readonly T Subtract(ref readonly T source, int elementOffset) + public static void* Subtract(void* source, int elementOffset) + public static ref readonly T Subtract(ref readonly T source, System.IntPtr elementOffset) + public static void Write(void* destination, T value) + public static void WriteUnaligned(void* destination, T value) + public static void WriteUnaligned(ref readonly byte destination, T value) +} ``` **Proposal 3:** A method to turn a `ref readonly T` into a `ref T`: ```diff public static partial class Unsafe { ... + public static ref T AsRef(ref readonly T source) } ``` **Potential problems:** Passing a `ref readonly T` argument does not look different from passing a `T` argument, so the following code is legal but very surprising: ```csharp byte[] buffer = new byte[16]; Unsafe.CopyBlockUnaligned(ref buffer[0], 123, 16); // what does this copy? ```
+23917 area-System.Runtime S.R.CS.Unsafe: Aligned vs Unaligned method name suffix "The new Intel Intrinsic APIs (https://github.com/dotnet/corefx/pull/23489) follow the convention of using the suffix `Aligned` for methods that require alignment. E.g.: ```csharp public static unsafe Vector256 Load(byte* address) public static unsafe Vector256 LoadAligned(byte* address) ``` The System.Runtime.CompilerServices.Unsafe class currently does the opposite. E.g.: ```csharp public unsafe static T Read(void* source) public unsafe static T ReadUnaligned(void* source) ``` Should the Unsafe class switch? Benefit: ease of use. Methods without a suffix feel like the ""default""; methods with a suffix feel like special cases that can be ignored most of the time. Unaligned access is a much better default than aligned access. ```diff public static partial class Unsafe { public static ref T AddByteOffset(ref T source, System.IntPtr byteOffset) public static ref T Add(ref T source, int elementOffset) public static void* Add(void* source, int elementOffset) public static ref T Add(ref T source, System.IntPtr elementOffset) public static bool AreSame(ref T left, ref T right) public static void* AsPointer(ref T value) public static ref T AsRef(void* source) public static T As(object o) where T : class public static ref TTo As(ref TFrom source) public static System.IntPtr ByteOffset(ref T origin, ref T target) - public static void CopyBlock(ref byte destination, ref byte source, uint byteCount) - public static void CopyBlock(void* destination, void* source, uint byteCount) + public static void CopyBlockAligned(ref byte destination, ref byte source, uint byteCount) + public static void CopyBlockAligned(void* destination, void* source, uint byteCount) - public static void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount) - public static void CopyBlockUnaligned(void* destination, void* source, uint byteCount) + public static void CopyBlock(ref byte destination, ref byte source, uint byteCount) + public static void CopyBlock(void* destination, void* source, uint byteCount) public static void Copy(void* destination, ref T source) public static void Copy(ref T destination, void* source) - public static void InitBlock(ref byte startAddress, byte value, uint byteCount) - public static void InitBlock(void* startAddress, byte value, uint byteCount) + public static void InitBlockAligned(ref byte startAddress, byte value, uint byteCount) + public static void InitBlockAligned(void* startAddress, byte value, uint byteCount) - public static void InitBlockUnaligned(ref byte startAddress, byte value, uint byteCount) - public static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount) + public static void InitBlock(ref byte startAddress, byte value, uint byteCount) + public static void InitBlock(void* startAddress, byte value, uint byteCount) - public static T Read(void* source) + public static T ReadAligned(void* source) - public static T ReadUnaligned(void* source) - public static T ReadUnaligned(ref byte source) + public static T Read(void* source) + public static T Read(ref byte source) public static int SizeOf() public static ref T SubtractByteOffset(ref T source, System.IntPtr byteOffset) public static ref T Subtract(ref T source, int elementOffset) public static void* Subtract(void* source, int elementOffset) public static ref T Subtract(ref T source, System.IntPtr elementOffset) - public static void Write(void* destination, T value) + public static void WriteAligned(void* destination, T value) - public static void WriteUnaligned(void* destination, T value) - public static void WriteUnaligned(ref byte destination, T value) + public static void Write(void* destination, T value) + public static void Write(ref byte destination, T value) } ``` " +23918 area-System.Net [release/2.0.0] Fix Desktop app-compat issues with System.Web.HttpUtility Fixes #23582, fixes #23574 Port of commits from #23591. +23919 area-System.Net Web requests abnormally slow "Hi, in my current project, I'm trying to make a web request in C# by using the following code (a bit modified for the sake of this post): ```c# private static void WithWebRequest() { Stopwatch sw = new Stopwatch(); sw.Start(); var request = WebRequest.Create(""http://www.dot.net""); using (WebResponse response = request.GetResponse()) { using (StreamReader sr = new StreamReader(response.GetResponseStream())) { string content = sr.ReadToEnd(); sw.Stop(); Console.WriteLine(content); Console.WriteLine($""Response got in {sw.ElapsedMilliseconds / 1000}""); } } } ``` I'm pretty sure it used to work pretty well when I was using ASP.NET Core 2.0 but since I upgraded to ASP.NET Core 2.1 (2.1.0-preview1-26907) (because I need it to use SignalR Core), it seems that requests take for ages to execute. As you can see, I used `Stopwatch` to measure the duration of the call and it is generally about 45 seconds, give or take. I usually have the time to open a new browser instance and navigate to the URL by myself while the request is called. I also tried with `HttpClient`: ```c# private static void WithHttpClient() { Stopwatch sw = new Stopwatch(); sw.Start(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(""http://www.dot.net""); var content = client.GetStringAsync(string.Empty).Result; sw.Stop(); Console.WriteLine(content); Console.WriteLine($""Response got in {sw.ElapsedMilliseconds / 1000}""); } } ``` And I obtain approximately the same result. I also tried to use ""async"" execution and it didn't solve it. [EDIT] Added C# syntax highlight by @karelz" +23920 area-System.Net Disable brittle WebSockets.Client test "System.Net.WebSockets.Client.Tests.KeepAliveTest/KeepAlive_LongDelayBetweenSendReceives_Succeeds ""System.Net.WebSockets.WebSocketException : The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseReceived, CloseSent, Closed'"" #23204" +23921 area-System.Net System.Web.HttpUtility Refactoring Some refactoring of the `HttpUtility` class. Removal of dead code and an extra test brings coverage up to 100% lines, 98.4% branching (two branches implicit to `fixed` are left uncoverable). * Use named arguments instead of comments. * Remove `ignoreAscii` parameter from `UrlEncodeUnicode` method Only ever `false`. * Remove `alwasyCreateNewReturnValue` from `UrlEncodeNonAscii` Always `false`. * Remove `ValidateUrlEncodingParameters` check from `UrlEncodeNonAscii` Cases covered can't happen as bytes comes from `Encoding.GetBytes` call and sizes are based on that. * Remove `string.IsnullOrEmpty` and `e == null` branches from `UrlEncodeNonAscii` Guaranteed by only caller not to be hit. Replace with assertions. * Remove `bytes == null` branch from `UrlDecodeToBytes` Exists in a `bytes != null` branch, so never `true`. * Remove `sb.Length` test from `HttpQSCollection.ToString()` In a path for which there will always be at least one value added, so always true, so just use offset & length overload of `ToString`. * Remove check that `authorityIndex != -1`. Cannot be `false` in the branch it is in. * Change `JavaScriptStringEncode` call to avoid unnecessary branch. Can just call `HttpEncoder.JavaScriptStringEncode` directly. * Move switch for determining js escape into first `CharRequiresJavaScriptEncoding` branch. Removes need for double-check. * Add test for `JavaScriptStringEncode` with `false` for `addDoubleQuotes` * Always have braces in `if` * Remove redundant casts. * Use explicit types. * Use expression-body syntax * Use PascalCase for constant. +23922 area-System.Runtime Roundtripping DateTime with mn-MN FullDateTimePattern on Windows 8.1 fails ``` Unhandled Exception of Type System.FormatException Message : System.FormatException : The string was not recognized as a valid DateTime. There is an unknown word starting at index 16. Stack Trace : at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.Tests.DateTimeTests.Parse_ValidInput_Suceeds(String input, CultureInfo culture, Nullable`1 expected) ``` +23923 area-System.Runtime Roundtripping DateTime with he-IL and HebrewCalendar fails with some formats on Unix See DateTimeTests.cs for examples (search for this issue number). +23925 area-System.Diagnostics [Feature request] Debugger.Break on condition "It would be nice to have an opportunity to break when a condition is true. Sample use case: Current look: ```c# List cObjects = new List { 1, 2, 3, ""Hello World"", null }; cObjects.ForEach(x => { if (x is int) Debugger.Break(); }); ``` After such a feature fot added: ```c# List cObjects = new List { 1, 2, 3, ""Hello World"", null }; cObjects.ForEach(x => { Debugger.Break(x is int); }); ``` It doesnt make the code shorter but i think it looks cleaner after such an addition. Related: https://github.com/dotnet/coreclr/issues/13889 [EDIT] Added C# syntax hihglight by @karelz" +23926 area-System.Net Only truncate to IOV_MAX for stream sockets (#23826) Port of https://github.com/dotnet/corefx/pull/23826 to release/2.0.0 branch +23927 area-System.Data Enlisting in Ambient transactions is not supported +23928 area-System.Globalization GetAscii_Invalid failing in release branches The System.Globalization.Tests.IdnMappingIdnaConformanceTests.GetAscii_Invalid test is causing lots of PRs to fail in the release branches. It's also why the Windows 8.1 line at https://github.com/dotnet/corefx/tree/release/2.0.0 is red across the board. cc: @danmosemsft, @karelz, @tarekgh, @Petermarcu +23932 area-System.Numerics Make BigInteger ctor opt path for == int.MinValue reachable. The `BigInteger(ReadOnlySpan value)` ctor contains an optimised path for value being larger than 4 bytes and the result being equal to `int.MinValue`. However this path is inside a test that precludes that value, so can never be reached. Restructure so that the path is reachable. +23937 area-System.Reflection System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests.TestCustomAttributeDecoder is failed if tc is a native image file (This tc is in `System.Reflection.Metadata.Tests` which built with `/p:Outerloop=True`) It is failed on x64/arm32/armel(I've checked it on only three arches) ``` System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests.TestCustomAttributeDecoder [FAIL] Assert.Empty() Failure Stack Trace: /home/dragon/dotnet/x64-dotnet/corefx/src/System.Reflection.Metadata/tests/Metadata/Decoding/CustomAttributeDecoderTests.cs(36,0): at System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests.TestCustomAttributeDecoder() ``` How to make ni for testing this issue ``` # crossgen /Platform_Assemblies_Paths $overlay ./System.Reflection.Metadata.Tests.dll ~/dotnet/x64-dotnet/tmp/nopatch_latest/overlay/crossgen /Platform_Assemblies_Paths ~/dotnet/x64-dotnet/tmp/nopatch_latest/overlay ./System.Reflection.Metadata.Tests.dll ``` In fact, there are more failed tcs if they are ni files. ``` # in AnyOS.AnyCPU.$BuildMode/System.Runtime.Loader.RefEmitLoadContext.Tests /p:Outerloop=True System.Runtime.Loader.Tests.RefEmitLoadContextTests.LoadRefEmitAssembly # in AnyOS.AnyCPU.$BuildMode/System.Runtime.Tests /p:Outerloop=True System.Reflection.Tests.AssemblyTests.AssemblyLoadFromBytes System.Reflection.Tests.AssemblyTests.LoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssemblies # in Unix.AnyCPU.Release.$BuildMode/System.Runtime.Extensions.Tests /p:Outerloop=True System.Tests.AppDomainTests.AssemblyLoad System.Tests.AppDomainTests.Load System.Tests.AppDomainTests.GetAssemblies ``` The above tcs use Reflection methods, so I think this issue may solve them. If the tcs are failed after this issue is solved, they should be submmited as new issues. +23938 area-System.Net Controlling TRUSTED_ISSUERS in SslStream (platform differences between Unix & Windows) This is related to https://github.com/dotnet/corefx/issues/17226 and https://github.com/aspnet/KestrelHttpServer/issues/1802 On Windows, when using `SslStream` and requiring client certificates using `AuthenticateAsServer` an empty list of trusted issuers will be sent. This can be seen when running: `penssl s_client -connect 192.168.1.11:8080` The results on Windows include ``` No client certificate CA names sent ``` On Linux, however, the server will send a list of all the trusted issuers on the system. This is actually handled by CoreFX directly, in this method: https://github.com/dotnet/corefx/blob/0fd3d2c5bcb1a83e7ebd8025e4810e11e231ce03/src/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs#L323 The code there is explicitly adding the registered certificates. On some machines, this can be a VERY big list. However, the calling code has no control over that and has to accept the machine state. This is problematic, and a solution that will allow us to control what are the trusted issuers would be much better for us. The underlying reason is that currently a user may specify a certificate, but get an error that no such certificate was used, which is really confusing and require to dig into which is the trusted issuer, what is going on and a lot of other annoyances. There is also now way for us to inject any behavior into the system to control it. Another overload on `SslStream` that would allow configuring the ssl context directly before use would be much better, but anything that would allow us to avoid sending the full issuers list all the time would be sufficent. This seems to impact quite a few people and it is the cause of very hard to diagnose issues. +23940 area-System.Runtime Cleanup code in System.Runtime.Serialization.Formatters.Tests @krwq if you have time it would be nice if you can review my changes as you contributed a fair amount of code to it :) Motivation for changes: 1. Get rid of BinaryFormatterHelper.cs in favor of BinaryFormatterHelpers.cs (Common) 2. Move code to read and write from/to base64strings and byte arrays to common to be able to test serialization code in different packages. +23942 area-Infrastructure Update run-test.sh to follow up recent change Because layout of CoreFX test has been changed, run-test.sh should be updated too. +23943 area-System.Diagnostics TraceListener.TraceOptions ignores TraceOutputOptions.LogicalOperationStack You can set the `TraceOutputOptions.LogicalOperationStack` flag on the `TraceOptions` of a `TraceListener` and in Desktop .NET, that will cause it to include the logical operation stack for each trace output. But in .NET Core, this flag is ignored. There doesn't seem to be a good reason for this flag not to work: the underlying mechanism it relies on (the correlation manager in `Trace`) appears to be present and works as required, so it's not as this this requires some base functionality that is missing in .NET Core. This seems similar to the issue fixed by https://github.com/dotnet/corefx/pull/18185 and with a very similar underlying reason. https://github.com/dotnet/corefx/issues/10880#issuecomment-291763962 in the issue for that PR notes refers to https://github.com/dotnet/corefx/issues/17773#issuecomment-290952601 that points out the difference between Desktop .NET and .NET Core that led to the descrepancy in #10880. You can see a similar difference for `TraceListener` between Desktop .NET: https://referencesource.microsoft.com/#System/compmod/system/diagnostics/TraceListener.cs,417 and the corresponding `WriteFooter` implementation in .NET Core: https://source.dot.net/#System.Diagnostics.TraceSource/System/Diagnostics/TraceListener.cs,414 As you can see .NET Core just doesn't have the code that handles this flag. It looks like the underlying `Trace.CorrelationManager.LogicalOperationStack` works as expected under .NET Core so there doesn't seem to be any obvious reason for this feature to be missing from `TraceListener` (any more than there was any reason for the corresponding feature to be missing from `DelimitedListTraceListener` before that was fixed by https://github.com/dotnet/corefx/pull/18185 +23945 area-Infrastructure Use linker from ILLink.Tasks This tasks package contains the newest version of the linker, which comes with an msbuild task. The corefx targets have been updated to use the new msbuild task instead of running illink in a new process. +23947 area-Serialization Add /casesensitive parameter so the command works on linux when the path contains capital letter "On linux, the output folder Debug contains ""D"", without adding /casesitive, it will try to reach folder debug, which doesn't exist. @shmao @zhenlan @mconnew " +23948 area-System.Drawing libcups PInvokes need manual loading "See: https://github.com/dotnet/corefx/blob/master/src/System.Drawing.Common/src/Unix/System.Drawing.Printing/PrintingServicesUnix.cs#L950 These functions need to be manually loaded in the same way that GDI+ functions are. Mono has a default Dllmap which maps ""libcups"" to ""libcups.so.2"". This is required on Ubuntu 16.04, at the very least. I will probably fix this as part of consolidating / cleaning up the printing implementation." +23949 area-Serialization Fix the output message in SGEN. "Using word ""file"" instead of ""assembly"" since the sgen will generate a cs file not an assembly. Fix #23376 @shmao @zhenlan @mconnew " +23951 area-System.Net Fix WinHttpHandler when building certificate chain Unlike SslStream, WinHttpHandler was not using all the certificates obtained from the TLS/SSL handshake when building the chain. In addition to the end-entity server certificate, there were other certs available in the native cert handle that could be passed along to the chain build operation. As part of fixing this, I refactored the Common schannel and crypto interop code so that it can be used in both SslStream and WinHttpHandler. I tested this manually because this cannot be easily tested in the CI system. Added traces in WinHttpHandler to support this. Fixes #23827 Fixes #4473 +23952 area-System.Memory [uapaot] Span indexer fails with IndexOutOfRangeException for reference types "Test disabled in: https://github.com/dotnet/corefx/pull/23905 **The Span tests fail for uapaot when we try to access the elements of a Span of a reference type like string using the provided indexer:** ```C# public static void TestingSpanReferenceTypeForUAPAOT() { ReadOnlySpan span1 = new byte[] { 1 }; byte temp1 = span1[0]; // successful ReadOnlySpan span2 = new string[] { ""1"" }; string temp2 = span2[0]; // fails with IndexOutOfRangeException } ``` ```xml span1) in D:\GitHub\Fork\corefx\src\System.Memory\tests\ReadOnlySpan\CtorArray.cs:line 66 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean wrapInTargetInvocationException, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall, Boolean parametersNeedCopyBack, ArgSetupState argSetupState, Object[] parametersOld, Object[] nullableCopyBackObjectsOld, Int32 curIndexOld, Object targetMethodOrDelegateOld, BinderBundle binderBundleOld, Object[] customBinderProvidedParametersOld, Object result, Exception e, Int32 i) in CallDynamicInvokeMethod:line 16707566 ]]> ```" +23953 area-System.Runtime [uapaot] Unsafe RefAreSame test fails for uapaot "Test disabled in: https://github.com/dotnet/corefx/pull/23905 **The Unsafe.RefAreSame test fails on uapaot:** ```C# public static void RefAreSame() { long[] a = new long[2]; Assert.True(Unsafe.AreSame(ref a[0], ref a[0])); // successful Assert.False(Unsafe.AreSame(ref a[0], ref a[1])); // fails } ``` ```xml ```" +23954 area-System.Collections Provide the way to control how HashSet and Dictionary grows Is it possible to provide the way to control how HashSet and Dictionary expand their storage? Now it always doubles current size and takes next prime number as capacity. Sometimes it is too wasteful and even if you know capacity from the beginning it doesn't prevent from wasting a lot of memory ([here](https://stackoverflow.com/questions/46068944/how-to-avoid-extra-space-allocation-when-using-standard-collections-and-storing)) It would be nice to provide something like this: ``` class HashSet { // ... protected virtual void IncreaseCapacity() {...} } class Dictionary { // ... protected virtual void Resize() {...} } ``` I don't see any performance concerns, because single virtual call followed by memory allocation and copy is almost nothing imo. The only thing that comes into my mind is that now it must be checked that after IncreaseCapacity/Resize the capacity actually increased. +23956 area-System.Drawing System.Drawing - Fix and simplify PathGradientBrush.Blend and GdipSaveImageToFile_delegate PInvoke code Fixes/cleans up some of the P/Invoke code in System.Drawing, as a result of bugs that surfaced when porting Mono's test to netfx. * PathGradientBrush: Let the runtime marshal the `float` arrays instead of manually reading unmanaged memory * `GdipSaveImageToFile_delegate`: Marshal `filename` as `LPWStr` +23957 area-System.Drawing Simplify P/Invoke logic in PathGradientBrush.InterpolationColors and SurroundColors Let the runtime marshal the float[] array instead of processing unmanaged memory ourselves. Fixes libgdiplus interop issues surfaced by Mono's tests. Do additional parameter validation in managed code, for libgdiplus compatibility. +23958 area-System.Drawing System.Drawing - Simplify Pen.get_DashPattern P/Invoke code Let the runtime marshal the `float` arrays instead of manually processing unmanaged memory. Fixes libgdiplus compatibility. +23959 area-System.Runtime Add DbNull to DataTable Serialization test +23960 area-System.Net System.Net.Tests.HttpListenerResponseCookiesTests/Cookies_GetSet_ReturnsExpected failed on OSX https://mc.dot.net/#/user/qmfrederik/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/e9bd0a167b8bb087d01f73993641808601c05829/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpListenerResponseCookiesTests~2FCookies_GetSet_ReturnsExpected ``` Unhandled Exception of Type System.Net.Internals.SocketExceptionFactory+ExtendedSocketException System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Connection refused 127.0.0.1:1191 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 4592 at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 824 at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 929 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 940 at System.Net.Sockets.Socket.Connect(String host, Int32 port) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 889 at System.Net.Tests.HttpListenerFactory.GetConnectedSocket() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.HttpListener/tests/HttpListenerFactory.cs:line 155 at System.Net.Tests.HttpListenerResponseTestBase..ctor() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_false_prtest/src/System.Net.HttpListener/tests/HttpListenerResponseTests.cs:line 22 at System.Net.Tests.HttpListenerResponseCookiesTests..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions) ``` +23961 area-System.Runtime release/2.0.0 - Make DBNull serializable and adding tests Requires: https://github.com/dotnet/coreclr/pull/13906 Issue: dotnet/corefx#23398 Docs update: https://github.com/dotnet/docs/pull/3116 **Blobs need to be updated after coreclr change is merged.** @weshaggard I'm disabling the typeforward in the release/2.0.0 branch for uap/uapaot. waiting for shiproom approval. +23964 area-System.Drawing Fix, clean up and re-organize System.Drawing.Printing code "* Previously, `PrintingServices` had an implementation which was hidden behind a layer of indirection, one for Windows and one for Unix. Realistically, the types involved with this were purely static, and the indirection was never useful at runtime. By that, I mean that the implementation was known at build time -- it is either Windows or Unix. * I've removed the layer of indirection and deleted all of mono's Win32-specific code from the System.Drawing.Printing namespace. Mono's Win32 builds should just use our code from the .NET Framework. Code included in the Unix build configuration has an implicit assumption that it is running on Unix. * Correct some issues in the Printing tests. The condition in `Helpers.IsAnyInstalledPrinters` was backwards -- tests were disabled when they should have been enabled, and vice-versa. This uncovered some issues in the assertions used. * Move `FunctionWrapper` into a common file, so that it can be re-used to load libcups functions as well. * Load all libcups functions manually. Fixes #23948 * Move Unix files into the regular directory structure. Add a "".Windows"" suffix to the existing Windows files there. For what it's worth, I have also done some more manual testing with Printing components on Unix, because the library can't really be fully exercised in the automated tests. The implementation seems to be able to dispatch a printing job to the office printer here, and I'm also able to print to a virtual PDF printer successfully." +23966 area-Serialization Add help method for SGEN. Fix #23375 @shmao @zhenlan @mconnew The generated help information is like: ``` Generates serialization code for use with XmlSerializer. The utility allows developers to pre-generate code for serialization building and deploying the assemblies with the application. Usage: dotnet dotnet-Microsoft.XmlSerializer.Generator [[/assembly:] | []] [/type:] [/debug]. Developer options: /assembly: Assembly location or display name. Short form is '/a:'. /type: Generate code for serialization/deserialization of the specified type from the input assembly. Short form is '/t:'. /proxytypes Generate serialization code only for proxy classes and web method parameters. Short form is '/p'. /debug Generate image which can be used under a debugger. Short form is '/d'. /force Forces overwrite of a previously generated assembly. Short form is '/f'. /out: Output directory name (default: target assembly location). Short form is '/o:'. Miscellaneous options: /? or /help Show this message ``` +23968 area-Infrastructure what differentiates the System.Runtime.dlls in the corefx build output directory? "I built 2.0 coreclr, corefx, and core-setup repos from scratch on a linux machine. In the Corefx build output directory, there are multiple copies of dll's with the same name. Some are obviously targeting different environments (Unix/AnyOS or netstandard/netcoreapp) and some dlls are not fully processed(pregenfacades, pretrim, etc.). However, I still don't quiet understand where the size differences come from: ``` -rw-r--r-- 1 29K Jul 7 06:15 ./AnyOS.AnyCPU.Release/netfx/netcoreapp/System.Runtime.dll -rw-r--r-- 1 29K Jul 7 06:15 ./AnyOS.AnyCPU.Release/netstandard/netstandard/System.Runtime.dll -rw-r--r-- 1 242K Sep 8 04:38 ./obj/ref/System.Runtime/4.2.0.0/netcoreapp/System.Runtime.dll -rw-r--r-- 1 17K Sep 8 04:41 ./obj/Unix.AnyCPU.Release/System.Runtime/netcoreapp/PreGenFacades/System.Runtime.dll -rw-r--r-- 1 33K Sep 8 04:41 ./obj/Unix.AnyCPU.Release/System.Runtime/netcoreapp/PreTrim/System.Runtime.dll -rw-r--r-- 1 33K Sep 8 04:41 ./obj/Unix.AnyCPU.Release/System.Runtime/netcoreapp/System.Runtime.dll -rw-r--r-- 2 242K Sep 8 04:38 ./ref/netcoreapp/System.Runtime.dll -rw-r--r-- 2 29K Jul 7 06:15 ./ref/netfx/System.Runtime.dll -rw-r--r-- 2 29K Jul 7 06:15 ./ref/netstandard/System.Runtime.dll -rw-r--r-- 2 242K Sep 8 04:38 ./ref/System.Runtime/4.2.0.0/netcoreapp/System.Runtime.dll -rw-r--r-- 3 33K Sep 8 04:41 ./runtime/netcoreapp-Linux-Release-x64/System.Runtime.dll -rw-r--r-- 3 33K Sep 8 04:41 ./testhost/netcoreapp-Linux-Release-x64/shared/Microsoft.NETCore.App/9.9.9/System.Runtime.dll -rw-r--r-- 3 33K Sep 8 04:41 ./Unix.AnyCPU.Release/System.Runtime/netcoreapp/System.Runtime.dll ``` Notice that some dlls are of size 240KB and others range from 17KB to 33KB. Using dotpeek tool, I noticed that the big dlls contains far more namespaces and APIs compared to System.Runtime.dll under dotnet/shared on my windows machine. Why is this the case? I expected the dlls to be very close to what's officially distributed. Is it related to the fact that these 240KB dlls are under ""ref"" directory and targeting netcoreapp? If so, what does ""ref"" indicate and why aren't netfx/netstandard dlls as big as the netcoreapp dll?" +23969 area-System.Diagnostics Check if we can open the directory on Linux when UseShellExecute is set "I am creating this issue to track if we can open the directory on Linux when having ShellExecute is set. - Ideally we would want to throw exception only when UseShellExecute option was false. - In OSX, the program ""open"" successfully opens folder using ""finder"". - But Linux needs extra effort to be able to open a folder here. In Linux, xdg-open cannot open folder, so I decided to throw when startInfo.FileName is a directory, regardless of UseShellExecute option being true or false. Probably the failure happens when the OS doesnt have the installed libraries to open. The current behavior in Linux is captured [here](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/tests/ProcessTests.Unix.cs#L67L71) Part of this goal is to keep a consistent behavior with Windows. - When UseShellExecute is set on windows desktop, Process Start opens directory using File Explorer. - Also, the current behavior in Windows running on .NET Core is captured [here](https://github.com/dotnet/corefx/blob/e670fd396d1c2a6ae99f2bb0ec24a81e30c668e7/src/System.Diagnostics.Process/tests/ProcessTests.cs#L134-L149 ) Code Sample: ``` var startInfo = new ProcessStartInfo { UseShellExecute = true, FileName = Environment.CurrentDirectory }; using (var px = Process.Start(startInfo)) { ... } ``` @tarekgh " +23970 area-Infrastructure Error in .NET Standard 2.0-library: The type 'X' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. "Hello everyone! I've been trying to find an open case just like mine but all I found so far has been references to preview versions. I'm currently using production-ready .NET Standard 2.0 and in my project I get the following errors: `The type 'IList<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.` and `The type 'IEnumerable<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.` This happens on the marked line as you can see on the screenshot below: ![capture](https://user-images.githubusercontent.com/29184014/30317343-27a08186-97aa-11e7-9a95-0303d5130cf3.PNG) It doesn't really matter if I change to a different method. The same thing happens. My project file looks like the following: ```xml netstandard2.0 False bin\debug\ Cache bin\release\ obj ``` Q1: How do I resolve this error? Q2: In addition to the above, I cant find the ""Add""-method for the IHeaderDictionary shown in the screenshot. Is there any special Nuget-package that I need? " +23972 area-System.Diagnostics "When Process.Start is used to open a program, ProcessName value is incorrectly set as ""dotnet"" on OSX " "When using Process.Start in order to open a program: - On OSX, the ProcessName value is dotnet for some reason, which I believe is wrong behavior. - But on Linux, the ProcessName value is correctly set as the input program to Process.Start. Code Sample: ``` // string programToOpenWith = ""/usr/bin/open"" or ""/usr/bin/nano"" for OSX or // string programToOpenWith = ""nano"" or ""vi"" for Linux using (var px = Process.Start(programToOpenWith, fileToOpen)) { Console.WriteLine($""in OSX, {nameof(programToOpenWith)} is {programToOpenWith}, while {nameof(px.ProcessName)} is {px.ProcessName}.""); // Assert.Equal(programToOpenWith, px.ProcessName); // on OSX, process name is dotnet for some reason } ```" +23974 area-System.Memory Add MemoryHandle.HasPointer @stephentoub ran into cases where he needed to check if a handle has a pinned pointer. Today, it can be done using unsafe code (get the PinnedPinter and check if it's null). This new API would allow the same check in safe code. +23975 area-System.Net Fix Socket Shutdown_TCP_CLOSED_Success test This test has been failing at times with an exception being generated from the client socket due to the loopback server terminating the connection with RST instead of FIN. The problem is that the server socket needs to use Shutdown() before Dispose() to ensure a clean FIN after the data gets sent back to the client. Fixes #13539 +23976 area-System.Net Fix check for in_pktinfo and ip_mreqn This change fixes the check for in_pktinfo and ip_mreqn. It was broken and was always succeeding even on platforms where these structs were not present. The reason was that the statements worked as forward declarations instead of usage of the structs. +23977 area-System.Net Disable unreliable Http diagnostics logging test The Http test, SendAsync_ExpectedDiagnosticCancelledLogging, has been failing at times. I am going to disable this test until it can be made more robust. It is not a reliable test because cancellation cannot be guaranteed to occur with a certain time especially on a busy machine. #23209 +23978 area-Serialization Re-enable XmlSerializer.Generator tests Please see individual commits. In a nutshell this re-enables the tests and ensures they run on the test framework rather than the tool framework. +23979 area-System.Net Disable broken HttpWebRequest timeout test The HttpWebRequest test, Timeout_SetTenMillisecondsOnLoopback_ThrowsWebException, doesn't work reliably. It's trying to test timeouts on requests but doesn't actually create stable conditions with the loopback server (i.e. to make it slow to respond). #22627 +23980 area-System.Net Move Socket UDP related tests to OuterLoop The DualModeConnectionless* tests have been unreliable in CI. Moving them to OuterLoop pending further analysis. #17681 +23984 area-System.Data Failed to Connect to Sql Server with MultiSubnetFailover .netCore 2.0 "I'm running a .NET Core App 2.0 in a container against a SqlServer 12 database with MultiSubnetFailover. My connection string looks like this... Data Source=***.***.***.com;Initial Catalog=DATABASENAME;User ID=USER_ID;Password=""USER_PASSWORD"";Connect Timeout=60;MultiSubnetFailover=True When i try to connect, it fails with the following error Message=""A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. Same issue is documented here for 1.1 https://github.com/dotnet/corefx/issues/14978" +23985 area-System.Runtime Error trying to deserialize TimeZoneInfo on OS X "#### Details + .NET Core 2.0 + macOS 10.12.6 #### Minimal Reproduction ``` let anyZone = TimeZoneInfo.FindSystemTimeZoneById(""America/New_York"") let deflated = anyZone.ToSerializedString() Zone.FromSerializedString deflated = anyZone ``` #### Expected Behavior No error. Last expression returns `true`. #### Actual Behavior ``` Error: System.Runtime.Serialization.SerializationException : An error occurred while deserializing the object. The serialized data is corrupt. ---- System.InvalidTimeZoneException : The elements of the AdjustmentRule array must be in chronological order and must not overlap. Stack Trace: at System.TimeZoneInfo.StringSerializer.GetDeserializedTimeZoneInfo(String source) at quickpbt.Teaser.days should equal hours() in /Users/pblasucci/Developer/quickpbt/quickpbt_fs/Teaser.fs:line 25 ----- Inner Stack Trace ----- at System.TimeZoneInfo.ValidateTimeZoneInfo(String id, TimeSpan baseUtcOffset, AdjustmentRule[] adjustmentRules, Boolean& adjustmentRulesSupportDst) at System.TimeZoneInfo..ctor(String id, TimeSpan baseUtcOffset, String displayName, String standardDisplayName, String daylightDisplayName, AdjustmentRule[] adjustmentRules, Boolean disableDaylightSavingTime) at System.TimeZoneInfo.StringSerializer.GetDeserializedTimeZoneInfo(String source) ``` #### Additional Notes On a recent build of Windows 10, everything behaves correctly. And I've not tested this on _any_ build of Linux. " +23986 area-System.Runtime add FreeBSD among platforms. This is small part so other repos can be fixed. They use this often as if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.OSX)) { .... } This allows to follow same pattern for FreeBSD +23987 area-System.IO Override memory-based Read/WriteAsync APIs on System.IO streams BufferedStream, PipeStream, DeflateStream, and GZipStream Fixes https://github.com/dotnet/corefx/issues/22397 Fixes https://github.com/dotnet/corefx/issues/22392 Fixes https://github.com/dotnet/corefx/issues/22390 Fixes https://github.com/dotnet/corefx/issues/22395 cc: @JeremyKuhne, @ianhays, @KrzysztofCwalina, @ahsonkhan +23988 area-Infrastructure System.Runtime.CompilerServices.Unsafe causing issues with ASP.NET Core 2.0.0 and netcoreapp2.1 I'm getting assembly load failures like the following trying to use ASP.NET Core 2.0.0 with netcoreapp2.1 ```System.IO.FileLoadException: Could not load file or assembly 'System.R untime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly 's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ``` I'm not sure if this is the right place for this issue, but the `System.Runtime.CompilerServices.Unsafe` assembly recently moved from a package (netcoreapp2.0) into the shared runtime (netcoreapp2.1) and it appears to not be working gracefully with bits that were compiled against it in 2.0.0 (which ASP.NET Core does). **Repro** `git clone aspnet/JitBench` `git checkout rel/2.0.0` Follow steps 1-4 https://github.com/aspnet/JitBench/blob/rel/2.0.0/README.md `dotnet run` At this point you'll see a bunch of exception messages as it can't load the `System.Runtime.CompilerServices.Unsafe` assembly /cc @eerhardt @ericstj +23989 area-System.Runtime Add OSPlatform.FreeBSD API "### Rationale and Usage There is code all around core-setup, cli and perhaps elsewhere which looks like ```c# if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform( System.Runtime.InteropServices.OSPlatform.OSX)) { .... } ``` We would like to also target FreeBSD as a platform. FreeBSD is not officially supported but partial support is sprinkled through coreclr and corefx at least. ### Proposed API This adds FreeBSD property same way as it is done for current OSes. (Windows, Linux and OSX) ```diff namespace System.Runtime.InteropServices { public struct OSPlatform : IEquatable { private readonly string _osPlatform; + public static OSPlatform FreeBSD { get; } = new OSPlatform(""FREEBSD""); + public static OSPlatform Linux { get; } = new OSPlatform(""LINUX""); public static OSPlatform OSX { get; } = new OSPlatform(""OSX""); public static OSPlatform Windows { get; } = new OSPlatform(""WINDOWS""); private OSPlatform(string osPlatform) { if (osPlatform == null) throw new ArgumentNullException(nameof(osPlatform)); if (osPlatform.Length == 0) throw new ArgumentException(SR.Argument_EmptyValue, nameof(osPlatform)); _osPlatform = osPlatform; } ``` We may consider adding other BSD flavors or other operating systems but reasonable support is probably not anywhere close. For FreeBSD, there is some community interest. ### Pull Request #23986 " +23990 area-System.Runtime Possible race condition in ICommand WinRT adapter I'm been digging through some more interop code in CoreFX and came across this: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.WindowsRuntime/src/System/Runtime/InteropServices/WindowsRuntime/MarshalingHelpers.cs#L380 This line looks to be a race condition: GetValueFromEquivalentKey method loops through the table entries in a foreach loop and it doesn't lock the table before doing so. I believe that if you happen to add an entry to the table on another thread by calling add_CanExecuteChanged method on any instance of ICommand, the enumerator would get invalidated and it would throw an exception. +23991 area-System.Drawing Re-organize and clean up some Unix Drawing code. "A little bit of miscellaneous cleanup. * There are a bunch of X11 functions defined in the ""gdipFunctions.cs"" file. I moved them into a LibX11Functions.cs file. * There was a bunch of other random stuff in the gdipFunctions.cs file, like structure definitions, helper methods, etc. I moved them into appropriately-named files and static classes. * ContentAlignment.cs was a simple enum, but not shared between the builds. I've deleted the file under ""Unix"", and included the other file in all builds. * Moved GdiPlusStreamHelper into its own file, and it is no longer nested in the static GDIPlus class (no reason for it to be). cc @qmfrederik @akoeplinger " +23992 area-Infrastructure Clean Enlistment Test Failures After installing Windows 10 on a Parallels VM (on a MacPro), installing VS 2015, cloning, then running `build`, and `build-tests` from a `VS 2015 Developer Command Prompt` I consistently get the following errors: Verified fixed by #24052 > ~C:\git\corefx\Tools\tests.targets(483,5): error : One or more tests failed while running tests from 'System.Globalization.Tests' please check [C:\git\corefx\bin/tests/System.Globalization.Tests/netcoreapp-Windows_NT-Debug-x64/testResults.xml](https://gist.github.com/kingces95/3185ea528c5330a7c815a6013bb99507) for details! [C:\git\corefx\src\System.Globalization\tests\System.Globalization.Tests.csproj]~ Verified fixed by #24016 >~C:\git\corefx\Tools\tests.targets(483,5): error : One or more tests failed while running tests from 'System.Console.Tests' please check [C:\git\corefx\bin/tests/System.Console.Tests/netcoreapp-Windows_NT-Debug-x64/testResults.xml](https://gist.github.com/kingces95/960d8ad1e5e2285050d76f51f2117da6) for details! [C:\git\corefx\src\System.Console\tests\System.Console.Tests.csproj]~ Verified fixed by #24147 >~C:\git\corefx\Tools\tests.targets(483,5): error : One or more tests failed while running tests from 'System.Net.NameResolution.Functional.Tests' please check [C:\git\corefx\bin/tests/System.Net.NameResolution.Functional.Tests/netcoreapp-Windows_NT-Debug-x64/testResults.xml](https://gist.github.com/kingces95/8bc9bb1890f922e71cf8e8dfc13c94fc) for details! [C:\git\corefx\src\System.Net.NameResolution\tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj]~ Verified fixed by #24009 and #24097 >~C:\git\corefx\Tools\tests.targets(483,5): error : One or more tests failed while running tests from 'System.Drawing.Common.Tests' please check [C:\git\corefx\bin/tests/System.Drawing.Common.Tests/netcoreapp-Windows_NT-Debug-x64/testResults .xml](https://gist.github.com/kingces95/915a8ab2b69fc39746092dd6e9148b3c) for details! [C:\git\corefx\src\System.Drawing.Common\tests\System.Drawing.Common.Tests.csproj]~ [The console log](https://gist.github.com/kingces95/519f568299dfa8590662fc3c12f7b0ba). +23994 area-Infrastructure NuGet package compability issue Some .NET packages are not supported on UWP, but they declare to support .NET Standard on NuGet.org. For example, System.Net.Security on NuGet says it supports .NET Standard, but it doesn't work on UWP. A ,NET standard package is supposed to be compatible with all platforms that supports .NET standard. But this isn't compatible with UWP. Even I know this package doesn't work with UWP, any .NET standard packages may include reference to these packages. They compile but don't work. It's hard for a developer to check compatibility for every packages. So, these packages shouldn't declare it supports .NET Standard. +23995 area-System.Net Make tests reliable around osx ping6 bug. fixes #19435 cc @danmosemsft +23996 area-System.Collections "Test: System.Collections.Tests.Dictionary_Generic_Tests_int_int/ICollection_Generic_Add_ToReadOnlyCollection failed with ""System.OutOfMemoryException""" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.Dictionary_Generic_Tests_int_int/ICollection_Generic_Add_ToReadOnlyCollection(count: 0)` has failed. System.OutOfMemoryException : Exception of type 'System.OutOfMemoryException' was thrown. Stack Trace: at System.Collections.Tests.ICollection_Generic_Tests`1.ICollection_Generic_Add_ToReadOnlyCollection(Int32 count) Build : 2.0.0 - 20170913.01 (Core Tests) Failing configurations: - windows.10.amd64.iot-x64 - Release Detail: https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170913.01/workItem/System.Collections.Tests/analysis/xunit/System.Collections.Tests.Dictionary_Generic_Tests_int_int~2FICollection_Generic_Add_ToReadOnlyCollection(count:%200) +23999 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessTests/ProcessStart_TryOpenFolder_UseShellExecuteIsTrue_DoesNotThrow failed with ""System.ComponentModel.Win32Exception""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessTests/ProcessStart_TryOpenFolder_UseShellExecuteIsTrue_DoesNotThrow` has failed. System.ComponentModel.Win32Exception : No application is associated with the specified file for this operation Stack Trace: at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Tests.ProcessTests.ProcessStart_TryOpenFolder_UseShellExecuteIsTrue_DoesNotThrow() Build : Master - 20170913.01 (Core Tests) Failing configurations: - Windows.10.Amd64.Core-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170913.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FProcessStart_TryOpenFolder_UseShellExecuteIsTrue_DoesNotThrow +24000 area-System.Net setup-kdc.sh is not installing Kerberos on some distros causing System.Net.Security.Tests.NegotiateStreamTests to no-op Opened on behalf of @Jiayili1 The test `System.Net.Security.Tests.NegotiateStreamTest/NegotiateStream_EchoServer_NTLM_ClientWriteRead_Successive_Async_Success` has failed. System.ComponentModel.Win32Exception : Invalid argument Stack Trace: at Interop.Sys.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Int32& lpChildPid, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean shouldThrow) in /root/corefx-987254/src/Common/src/Interop/Unix/System.Native/Interop.ForkAndExecProcess.cs:line 43 at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) in /root/corefx-987254/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs:line 291 at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) in /root/corefx-987254/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs:line 1248 at System.Net.Security.Tests.KDCSetup.CheckAndClearCredentials(ITestOutputHelper output) in /root/corefx-987254/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs:line 78 at System.Net.Security.Tests.NegotiateStreamTest..ctor(KDCSetup fixture, ITestOutputHelper output) in /root/corefx-987254/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamTestForUnix.cs:line 151 Build : Master - 20170913.01 (Core Tests) Failing configurations: - suse.422.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170913.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.NegotiateStreamTest~2FNegotiateStream_EchoServer_NTLM_ClientWriteRead_Successive_Async_Success +24001 area-System.IO Enhance API to work with temporary files and directories "## Rationale In [PowerShell repo](https://github.com/PowerShell/PowerShell) we have a feature request to create temporary files with custom extension (not "".tmp""). Also we internally have to implement a function to create a directory for temporary files. Windows has [GPO option](https://technet.microsoft.com/en-us/library/cc732258%28WS.10%29.aspx) to create session-based temporary directories. Creating temporary files/directories is security-related (specially on Unix) so it would be right to implement this in .Net Core. Unix has very power [mkstemps](http://man7.org/linux/man-pages/man3/mkstemp.3.html) fuction. It makes sense to give users its full functionality. ## Proposed API ## ```c# // if NewSubDir==true create new temporary directory as subdirectory in default temporary directory public static string GetTempPath(bool newSubDir) // Create new temp directory in 'InDirectory' directory public static string GetTempPath(string inDirectory) // Create a temp file with 'Suffix' extention public static string GetTempFileName(string suffix) // Create a temp file in 'InTempDirectory' directory public static string GetTempFileName(string inTempDirectory) // Optionally expose Unix 'mkstemps' function features and etc. public static string GetTempFileName(string prefix) public static string GetTempFileName(string prefix, string suffix) public static string GetTempFileName(string prefix, string suffix, int variableLength) public static string GetTempFileName(string prefix, string suffix, int variableLength, string inTempDirectory) ``` " +24002 area-System.Net Incorrectly closed websockets are throwing unobserved task exceptions Hello. We've stumbled upon unobserved task exceptions caused specifically by incorrectly closed websockets by the other side. The recorded stacktrace is: ``` 2017-09-12 20:06:55|dotnet-3673|FATAL|ASF|OnUnobservedTaskException() System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. (The remote party closed the WebSocket connection without completing the close handshake.) ---> System.Net.WebSockets.WebSocketException: The remote party closed the WebSocket connection without completing the close handshake. ---> System.IO.IOException: Unable to transfer data on the transport connection: Broken pipe. ---> System.Net.Sockets.SocketException: Broken pipe --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.SslStreamInternal.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStreamInternal.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, LazyAsyncResult asyncResult) at System.Net.Security.SslStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) at System.IO.Stream.BeginEndWriteAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.Net.WebSockets.ManagedWebSocket.SendFrameLockAcquiredNonCancelableAsync(MessageOpcode opcode, Boolean endOfMessage, ArraySegment`1 payloadBuffer) --- End of inner exception stack trace --- --- End of inner exception stack trace --- ---> (Inner Exception #0) System.Net.WebSockets.WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake. ---> System.IO.IOException: Unable to transfer data on the transport connection: Broken pipe. ---> System.Net.Sockets.SocketException: Broken pipe --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.SslStreamInternal.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStreamInternal.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, LazyAsyncResult asyncResult) at System.Net.Security.SslStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) at System.IO.Stream.BeginEndWriteAsync(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Stream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken) at System.Net.WebSockets.ManagedWebSocket.SendFrameLockAcquiredNonCancelableAsync(MessageOpcode opcode, Boolean endOfMessage, ArraySegment`1 payloadBuffer)<--- ``` The original issue was reproduced on **[Arch Linux](https://aur.archlinux.org/packages/dotnet/)**, but I believe that the OS doesn't have any say in this. We're trying to reproduce the issue also on one of the official builds, perhaps Windows. Based on my discussion with the library devs that are utilizing websockets, it looks like the issue might be connected with **[this](https://github.com/SteamRE/SteamKit/issues/452#issuecomment-329069703)**: > This might actually be a bug in .NET Core itself. [This function](https://source.dot.net/#System.Net.WebSockets/Common/System/Net/WebSockets/ManagedWebSocket.cs,519) is invoked by a timer and the task is not observed. All other code paths appear to be properly awaited. Thank you in advance. ``` Microsoft .NET Core Shared Framework Host Version : 2.0.0 Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d ``` References: https://github.com/JustArchi/ArchiSteamFarm/issues/612#issuecomment-329015761 https://github.com/SteamRE/SteamKit/issues/452 +24004 area-System.Linq Getting a property in an interpreted expression always calls the setter with the retrieved value ## Use case I'm not directly using .NET Core in this use case, but I'm working with UWP (which uses this underneath). **Functional**: search for a string value in all the properties of an object **Technical**: I have a compiled (so in .NET Core, that means _interpreted_) expression that loops through an object and retrieves all its string properties. It then does `.Contains()` on them with a value. ## What is happening The code on the referenced line (2305) does the following: 1. Retrieve the value of a property (`get`) 1. Verify if the property if writable 1. If so, write the retrieved value to the property https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightCompiler.cs#L2305 ## What I expected I didn't expect the expression to call the setter of my property. This has implications and triggers a lot of other code that is not related to retrieving the property. ## Workaround Immediately return the setter if the previous value equals the new value. +24005 area-System.Net Fix return value of partially successful Socket.Send Fixes https://github.com/dotnet/corefx/issues/23672 CC @stephentoub +24006 area-System.Net Add ReadOnlyMemoryContent to System.Net.Http Allows `{ReadOnly}Memory`s to be uploaded in HttpClient requests. Fixes https://github.com/dotnet/corefx/issues/22612 Contributes to https://github.com/dotnet/corefx/issues/22404 cc: @geoffkizer, @davidsh, @KrzysztofCwalina, @ahsonkhan +24008 area-System.Net MulticastInterface_Set_AnyInterface_Succeeds test hangs on Fedora +24009 area-System.Drawing Fix a spurious test failure in System.Drawing.Common.Tests Also, add a better message to another failure being hit. +24010 area-System.Net Disable MulticastInterface_Set_AnyInterface_Succeeds test on Fedora All Fedora runs hang because of this. https://github.com/dotnet/corefx/issues/24008 cc: @geoffkizer, @tmds +24012 area-Infrastructure System.Runtime.CompilerServices.Unsafe does not have Windows file metadata Due to the way we build ilproj files, System.Runtime.CompilerServices.Unsafe.dll does not have Windows file metadata. ![image](https://user-images.githubusercontent.com/8918977/30396460-8c7e8b0a-987e-11e7-87f9-761af0d91d51.png) We do have the equivalent managed attributes defined in IL: https://github.com/dotnet/corefx/blob/master/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il#L12-L17. https://github.com/dotnet/corefx/blob/master/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il#L40 Apparently, getting the Windows file metadata embedded can be accomplished using a .res file. We could easily pass that file into the parameters of ILAsm (/RESOURCE:), assuming the option is supported everywhere -- including non-Windows platforms. I'm not sure there is an easy way to generate this resource file, though. @eerhardt +24013 area-System.Security Provide SignXml class without XmlDocument components. This is for Enhancement only. Our development team at my company is unable to use `SignXml` class because it require `XmlDocument` component. This `XmlDocument` does NOT work with the invalid xml data which contains about 6,000 xml-nametag. This invalid xml data is provided by 3rd party company that is last updated 12 years ago and it won't modify this invalid xml because of their integration mess. Looking at `SignXml.cs` source code in this GitHub, I discovered that it is only a xml builder that use varieties of Crypography stuff that get assigned as xml's value. This show that is is possible to use Cryptography without XmlDocument somehow. We have no control over telling `XmlDocument` to ignore invalid xml data for this to work. +24015 area-Serialization Remove ContinueAsError in sgen test @shmao +24018 area-Infrastructure System.Runtime.Serialization.Primitives version 4.2.0.0 "I recently started migrating some library projects to .NET Standard 2.0. In my solution, I have a .NET 4.6.1 WPF application, a .NET 4.6.1 test project, and a handful of .NET Standard 1.4 and .NET Standard 2.0 class libraries. Since targeting .NET Standard 2.0, tests are failing with the following error: ``` System.IO.FileLoadException : Could not load file or assembly 'System.Runtime.Serialization.Primitives, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ----> System.IO.FileLoadException : Could not load file or assembly 'System.Runtime.Serialization.Primitives, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ``` I had many headaches with System.Runtime.Serialization.Primitives and binding redirects when first targeting .NET Standard 1.4 (ref: #16823). I was able to resolve most issues by installing System.Runtime.Serialization.Primitives package version 4.3.0 explicitly in pretty much every project and adding the following binding redirect: ``` ``` Now I'm not sure what to do to move forward. I can't seem to find a package available that provides System.Runtime.Serialization.Primitives version 4.2.0.0, and attempting to update the binding redirect to downgrade from 4.2.0.0 to 4.1.2.0 has no effect (I don't think the test runner honors the project's binding redirects)." +24021 area-System.Net Make ping tests reliable on OSX. fixes #23876 #19514 cc @danmosemsft +24022 area-System.Data Data Column returns wrong data type Basically my SqlCommand selects from a view in the SQL server database, using SqlDataAdapter I fill a DataTable, all data seems to be returned, however columns that with datetime2 type are returned as strings. What it seems like datetime2 fields are mapped to string. +24025 area-Infrastructure Use Portable PDBs and turn on SourceLink This pull request, as well as its companion in the CoreClr repository are tiny (they basically set an MSBUILD variable), but the result is that we generate Portable PDBs rather than MS-PDBs during the build). The immediate value of this change is that we can turn on SourceLink support which allows Visual Studio to 'just work' and step into source it fetches from this Github repository. This is an important step in getting this working for our shipped builds. It is possible to get SourceLink working without generating Portable PDBs but I believe we want to move in this direction sooner rather than later because. 1. ASP.NET ships this way (and we expect most code will ship using Portable PDBs) 2. This is the way we ship on Linux 3. VSCode only supports portable PDBs (at least in my experimentation). 4. Because of (1) we already have support for generating MS-PDBs from the portable ones and uploading them to Microsoft Symbol Servers (which currently only support In short, uniformity is good, and this makes us significantly more uniform. The only issue is what 'breaks'. Because of (4), it is not clear that any important scenario is actually broken by the change. To the degree that we publish PDBs via the MS symbol server, those were converted before publication so things will work as the do now. For private builds, VS works with portable PDBs. Tests should be using portable (so they can run on Linux too). Now I am sure that we might break something, but we are likely to be close enough that it is easier/better to simply try it and clean it up (or revert it), if we run into issues. But I have marked this NO-MERGE for the time being so that we can vet any concerns. If after several days of vetting we have addressed all concerns we would be in a position to proceed. Please include anyone you believe may be impacted by this. @dagood @mikem8361 @ericstj @jkotas @lt72 @Petermarcu @markwilkie @weshaggard @tmat @Eilon @karelz @danmosemsft +24026 area-System.Runtime Please provide an API to locate an assembly file by name without loading I'm using the MetadataReader to generate public API surface files such as https://pastebin.com/nLSzWPBA. For the most part, it's a breeze. When it comes to deserializing enum attribute arguments, the System.Reflection.Metadata API requires me to provide the underlying type and then of course I want to be able to output that as the appropriate field name rather than as an integer cast to the enum's name. This requires me to look up an assembly on disk given (1) the path to the assembly I'm currently examining and (2) an AssemblyName instance which I create from the AssemblyReferenceHandle. It's easy enough to use `Assembly.ReflectionOnlyLoad` and non-Metadata reflection API to locate the enum field, but I see even `ReflectionOnlyLoad` as undesirable: - It keeps the assembly in memory - It slows the process down by reading and processing more than it absolutely needs to - It loads in the context of the generating process, not the assembly being examined which might be anywhere on disk, so it might resolve to the wrong file - In the process of examining multiple assemblies, it might try to load different versions of an assembly with the same name and no strong name - It forces me to switch from doing everything with the MetadataReader to reimplementing the same logic with ‘normal’ reflection for enums defined outside the assembly being examined Would you please expose an API which locates the assembly that would be loaded if the running process were the assembly being examined, given the `AssemblyName`, and passes back a file path which I can then open with the MetadataReader? Is there a better way to achieve what I want without this API, and without the list of issues that I see with `Load` and `ReflectionOnlyLoad`? I'm imagining it could be something like this: [updated per [comment](https://github.com/dotnet/corefx/issues/24026#issuecomment-329531864)] ```cs class System.Runtime.Loader.AssemblyLoadContext { public static string Locate(AssemblyName assemblyString, string baseDirectory); } ```` Or if it could be useful to the location logic to know not only the base path but some metadata in the assembly that the assembly reference came from: ```cs class System.Runtime.Loader.AssemblyLoadContext { public static string Locate(AssemblyName assemblyString, string forAssemblyPath); } ```` +24027 area-System.Net release/2.0: Fix return value of partially successful Socket.Send (#24005) Port https://github.com/dotnet/corefx/pull/24005 to release/2.0.0. cc: @tmds, @geoffkizer, @davidsh +24028 area-System.Runtime stack smashing detected "when I was debuging the project with VSCode on ubuntu16.04,I met with the ""stack smashing detected"" exception and the project paused immediately.This exception occurs when the program try to load a .so file that is programed in C and compiled by GCC on ubuntu16.04 .The program attempt to access a function defined in the .so file and then the ""stack smashing detected"" exception comes along.I try to fix it but failed ## the code is here: `[DllImport(""TripleDES.dll"", CallingConvention = CallingConvention.Cdecl)] static extern int data_convert([MarshalAs(UnmanagedType.LPArray)]byte[] indata, int in_len, [MarshalAs(UnmanagedType.LPArray)]byte[] outdata, int flag, [MarshalAs(UnmanagedType.LPArray)] byte[] key);` ## I use the data_convert function here: `byte[] toEncrypt = Encoding.UTF8.GetBytes(this.GetString(strString)); byte[] key = Encoding.UTF8.GetBytes(this.GetKeyCode(this.Keys)); byte[] result = new byte[256]; int count = data_convert(toEncrypt, en_len, result, 1, key); byte[] resultBytes = new byte[count]; Array.Copy(result, 0, resultBytes, 0, count)` ## the data_convert function in the .c file : `int data_convert(unsigned char *in,int in_len,unsigned char * out,char flag,unsigned char *key)`" +24029 area-Infrastructure Linux cross build break for ARM "When cross building for ARM on x64 host, following error is observed. ``` $ ./build-managed.sh -release -buildArch=arm -RuntimeOS=ubuntu.14.04 -BuildTests=True -SkipTests=True -BuildPackages=False -- /p:Outerloop=True ... Microsoft.XmlSerializer.Generator.Tests -> /opt/code/github/hqueue/corefx/bin/AnyOS.AnyCPU.Release/Microsoft.XmlSerializer.Generator.Tests/netcoreapp/Microsoft.XmlSerializer.Generator.Tests.dll /lib/ld-linux-armhf.so.3: No such file or directory /opt/code/github/hqueue/corefx/src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj(57,5): error MSB3073: The command ""/opt/code/github/hqueue/corefx/bin/testhost/netcoreapp-Linux-Release-arm/dotnet /opt/code/github/hqueue/corefx/bin/AnyOS.AnyCPU.Release/Microsoft.XmlSerializer.Generator.Tests/netcoreapp/dotnet-Microsoft.XmlSerializer.Generator.dll /opt/code/github/hqueue/corefx/bin/AnyOS.AnyCPU.Release/Microsoft.XmlSerializer.Generator.Tests/netcoreapp/Microsoft.XmlSerializer.Generator.Tests.dll /force /casesensitive"" exited with code 255. ``` " +24030 area-Serialization Disable building Microsoft.XmlSerializer.Generator.Tests for ARM Fix #24029 `Microsoft.XmlSerializer.Generator.Tests` has been enabled for Linux from #23978. However there is a build break when cross building for ARM, because it tries to use target `dotnet` which is ARM binary when building. So simply disable building this test for ARM. +24033 area-System.Security Des decrypt raised 'Offset and length were out of bounds... ' " My code like below. It works fine in .net framework4.6.1, But it raised exception in .net core 2.0. The exception raised in the line ` cs.Write(inputByteArray, 0, inputByteArray.Length); ` . The message is `System.ArgumentException:“Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.” `. Anyone help? ```c# using System; using System.Security.Cryptography; using System.Text; namespace ConsoleApp2 { class Program { public static string Md5Hash(string input) { MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString(""x2"")); } return sBuilder.ToString().ToUpper(); } public static string Decrypt(string Text, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); int len = 0; len = Text.Length / 2; byte[] inputByteArray = new byte[len]; int x = 0; int i = 0; for (x = 0; x <= len - 1; x++) { i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); inputByteArray[x] = Convert.ToByte(i); } des.Key = ASCIIEncoding.ASCII.GetBytes(Md5Hash(sKey).Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(Md5Hash(sKey).Substring(0, 8)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Encoding.Default.GetString(ms.ToArray()); } static void Main(string[] args) { var s = Decrypt(""973335E697BFF06DC9F9481008526545458CCEB78D8717561617C2414464DBF451E44D4071EB03788CAA6B4560BA127493EF142A95AEF87349F4ADFDA82C5810FA2319F45E275057700474332D438849F7F26B63063EE6A3BD9D15354922C8E5965D20F075060C23FEFDF8C013A74D8640EE59D9DA687BD30CFD41B861F4DCF0294A4A4AF699738C8E6387275B742CE647EE733B572A8EDEAA099E854D11095D"", ""buyongji""); Console.WriteLine(s); } } } ```" +24034 area-Infrastructure Disable binplacing test framework when -BuildTests=false This change disables syncing and binplacing of test framework when the -BuildTests option passed to build.sh or sync.sh is set to false. This is helpful when bootstrapping a new platform where the core-setup is not built yet and so the Microsoft.NETCore.DotNetHost and Microsoft.NETCore.DotNetAppHost packages that are required for the test running don't exist yet. +24035 area-Infrastructure Enable end to end Alpine corefx build This change enables full end to end build of corefx including managed code on Alpine Linux. +24036 area-Infrastructure Update CI Fedora firewall rules We had some issue in the past where MulticastInterface_Set_AnyInterface_Succeeds was hanging on Fedora CI. This was discussed here: https://github.com/dotnet/corefx/issues/13323. Resolution was to update the firewall rules to make the test pass: > find the local port range by executing sysctl net.ipv4.ip_local_port_range to allow a udp port range do something like this: firewall-cmd --zone=public --add-port=4990-4999/udp adding the --permanent flag will make this persistent. You need to restart the firewall to make it use the permanent rule. This test is now hanging again and is disabled on Fedora: https://github.com/dotnet/corefx/pull/24010 Perhaps the new Fedora CI machines (Fedora 25 and 26) are not configuring the firewall? CC @stephentoub @Priya91 @MattGal +24039 area-System.IO Proposal: Add protected {Unmanaged}MemoryStream.Read/WriteSpan method We've added new virtual `Read(Span)` and `Write(ReadOnlySpan)` methods to Stream, and overridden them on MemoryStream and UnmanagedMemory stream. However, these new overrides can't just directly write to the in-memory storage: existing types derived from these that override the existing Read/Write virtuals would have their logic skipped until they also overrode the new property. To address that, these overrides check the concrete type of the stream (e.g. `if (GetType() == typeof(MemoryStream)`), writing directly to the storage of it's not a derived type, and delegating to the existing virtuals if it is a derived type. This, however, causes a potential perf issue for a derived type. It's often the case with such derived types that they do a bit of work and then delegate to the base implementation, but that base implementation will then proceed to see that it's a derived type and skip the efficient path. To re-enable that efficiency, we need a way for the derived type overriding the new virtuals to call the efficient implementation and skip the type check. I propose we add the following: ```C# class MemoryStream & class UnmanagedMemoryStream { protected void WriteSpan(ReadOnlySpan source); protected int ReadSpan(Span destination); } ``` to both MemoryStream and UnmanagedMemoryStream. cc: @JeremyKuhne, @ianhays, @KrzysztofCwalina, @ahsonkhan +24040 area-System.IO NamedPipeServerStream: Provide support for WRITE_DAC When creating a `NamedPipeServerStream` on Windows, `WRITE_DAC` on `CreateNamedPipe` will always be unset. On netfx we had a constructor that took a `PipeSecurity` object with ACL info but we had to take that out for netcore/netstandard. We should add a new entry on netcoreapp to the `PipeOptions` enum to set WRITE_DAC: ``` [Flags] public enum PipeOptions { None = 0x0, WriteThrough = unchecked((int)0x80000000), // corresponds to FILE_FLAG_WRITE_THROUGH Asynchronous = unchecked((int)0x40000000), // corresponds to FILE_FLAG_OVERLAPPED, WriteDac = unchecked((int)0x00040000L), // corresponds to WRITE_DAC } ``` cc: @bartonjs @stephentoub @jaredpar +24041 area-Serialization Microsoft.XmlSerializer.Generator need output the assembly The SGEN tool can only output the serialization c# code. You cannot use it directly to output the assembly. You have to use it together with the .csproj so as to output the assembly. Need find way to compile it as an assembly. +24043 area-System.Net HttpUtility - Add Mono copyright line We forgot to add Mono copyright lines to HttpUtility.cs when we reused the code. See https://github.com/dotnet/corefx/pull/23918#issuecomment-329558714 for more details. +24045 area-System.Net Fix Dns tests on OSX. fixes #23824 cc @danmosemsft +24046 area-System.Security Add env var to enable overriding the OpenSSL version Recently there were several reports of problems that people were having on Debian due to having two libssl libraries with sonames libssl.so.1.0.0 and libssl.so.1.0.2 installed at once. In case the installed libcurl was build against libssl.so.1.0.2, we end up having both versions of libssl loaded in the process. And only the one with version 1.0.0 gets the locks initialized and so we end up crashing due to the infamous multithreading issue. Since our SSL shim doesn't know which version of SSL the CURL uses, I think that it would make sense to add an env variable that would enable overriding the OpenSSL version .NET core uses. That way, people could workaround this problem if they hit it. +24048 area-System.Diagnostics When using Process.Start with UseShellExecute,the process is null on some windows runtimes "**Summary**: using Process.Start when UseShellExecute is set, returns null process on some windows runtimes when it is used to open a file. Code sample ``` using (var px = Process.Start(new ProcessStartInfo { UseShellExecute = true, FileName = fileToOpen })) { ... /* px is null */ } ``` Refer to existing test in corefx ([here](https://github.com/dotnet/corefx/blob/a16368dc4694c0334a8794107a9e868020f0bed5/src/System.Diagnostics.Process/tests/ProcessTests.cs#L182)): *ProcessStart_UseShellExecute_OnWindows_DoesNotThrow(isFolder:false)* Process px was null using ([logs](https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows_prtest/56/consoleFull#19963278882d31e50d-1517-49fc-92b3-2ca637122019)): ``` ProductType=8InstallationType=Server OS=Microsoft Windows 6.3.9600 OSVer=Microsoft Windows NT 6.2.9200.0 OSArch=X64 Arch=X64 Framework=.NET Core 4.6.25714.01 ``` but when running the same test on another Windows NT machine (Win 10) locally, the process is not null: ``` ProductType=4InstallationType=Client OS=Microsoft Windows 10.0.15063 OSVer=Microsoft Windows NT 6.2.9200.0 OSArch=X64 Arch=X64 Framework=.NET Core 4.6.25714.01 ``` Code sample to help with debugging: ``` private void DumpRuntimeInformationToConsole() { // Not really a test, but useful to dump to the log to // sanity check that the test run or CI job // was actually run on the OS that it claims to be on string dvs = PlatformDetection.GetDistroVersionString(); string osd = RuntimeInformation.OSDescription.Trim(); string osv = Environment.OSVersion.ToString(); string osa = RuntimeInformation.OSArchitecture.ToString(); string pra = RuntimeInformation.ProcessArchitecture.ToString(); string frd = RuntimeInformation.FrameworkDescription.Trim(); Console.WriteLine($@""{dvs} OS={osd} OSVer={osv} OSArch={osa} Arch={pra} Framework={frd}""); } ```" +24049 area-Serialization Cannot build Core FX tests on Linux "I encountered the following error while building FX tests: ``` $ ./build-managed.sh -release -SkipTests -- /maxcpucount:4 /p:BinPlaceNETCoreAppPackage=true ... Microsoft.XmlSerializer.Generator.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/Microsoft.XmlSerializer.Generator.Tests/netcoreapp/Microsoft.XmlSerializer.Generator.Tests.dll System.Collections.Immutable.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.Collections.Immutable.Tests/netcoreapp/System.Collections.Immutable.Tests.dll System.Collections.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.Collections.Tests/netcoreapp/System.Collections.Tests.dll System.Composition.Convention.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.Composition.Convention.Tests/netcoreapp/System.Composition.Convention.Tests.dll System.ComponentModel.Annotations.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.ComponentModel.Annotations.Tests/netcoreapp/System.ComponentModel.Annotations.Tests.dll System.ComponentModel.TypeConverter.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.ComponentModel.TypeConverter.Tests/netcoreapp/System.ComponentModel.TypeConverter.Tests.dll System.Diagnostics.Debug.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.Diagnostics.Debug.Tests/netcoreapp/System.Diagnostics.Debug.Tests.dll System.Diagnostics.Tracing.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.Diagnostics.Tracing.Tests/netcoreapp/System.Diagnostics.Tracing.Tests.dll System.Drawing.Primitives.Tests -> /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/AnyOS.AnyCPU.Release/System.Drawing.Primitives.Tests/netcoreapp/System.Drawing.Primitives.Tests.dll Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'System.Native': The specified module or one of its dependencies could not be found. (Exception from HRESULT: 0x8007007E) at Interop.Sys.Dup(SafeFileHandle oldfd) at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) at System.ConsolePal.OpenStandardError() at System.Console.<>c.b__27_0() at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target, Object& syncLock, Func`1 valueFactory) at Microsoft.XmlSerializer.Generator.Sgen.WriteError(Exception e) at Microsoft.XmlSerializer.Generator.Sgen.Run(String[] args) at Microsoft.XmlSerializer.Generator.Sgen.Main(String[] args) Aborted (core dumped) /var/jenkins/workspace/FX/FX_Managed_Release/repo/code/src/Microsoft.XmlSerializer.Generator/tests/Microsoft.XmlSerializer.Generator.Tests.csproj(57,5): error MSB3073: The command ""/var/jenkins/workspace/FX/FX_Managed_Release/repo/code/bin/testhost/netcoreapp-Linux-Release-x64/dotnet ... ``` Is there any requirement to build this test on Linux? I couldn't understand why it failed to find ``System.Native``." +24053 area-System.Runtime BigInteger based random testing of System.Decimal New comprehensive tests are needed for a significantly improved managed decimal implementation: https://github.com/dotnet/corert/pull/4452#issuecomment-328376473, at first in CoreRT, but hopefully later shared with CoreCLR. These tests compare `System.Decimal` cmp/add/mul/div results against a `BigInteger` based reference implementation using ~1000 different random decimals covering every scale and sign with ~20 different bit-patterns each (about 950k combinations). It adds about 1-2 seconds to `System.Runtime` test execution time (from 10s to 12s) - is this acceptable? +24054 area-Serialization Add warning by default in SGEN Output the warning by default when the customer try to run our tool directly. Add a parameter quiet to suppress this message when using it in the .csproj. @shmao @zhenlan @mconnew +24055 area-System.Net Ignore unhandled exceptions from ManagedWebSocket keep-alive pings ManagedWebSocket has configurable timer-based keep-alive pings it sends to the remote server. If such calls fail, such as due to the connection getting closed, we just swallow the exception. But the way the exception is currently being swallowed results in a faulted task whose exception is never observed, resulting in the unobserved exception event being raised. Since our intention is to eat these errors and completely ignore them, we don't want the event raised. This commit just observes any such exceptions. Fixes https://github.com/dotnet/corefx/issues/24002 (or, at least, it fixes the only potential cause of it I currently see in the actual library code) cc: @geoffkizer, @Priya91 +24056 area-System.Net Add Socket.Send/Receive concurrency test Help validate that on Unix we're able to invoke Send/Receive multiple times to run concurrently on the same socket instance. We already have similar tests for Send/ReceiveAsync, so this just adds one for the synchronous Send/Receive. cc: @geoffkizer, @wfurt +24057 area-System.Net Add logging to ManagedWebSocket We currently don't do any logging with NetEventSource. We should. +24060 area-System.Diagnostics Refactoring code. No changes made to logic. Applying code review comments requested from pr #24060 cc: @danmosemsft @safern @joperezr +24062 area-Meta ObsoleteAttribute does not cause error when message is null "```csharp private static void Foo() { Foo1(); // warning CS0612 Foo2(); // error CS0619 } [Obsolete(null, error: true)] private static void Foo1() { } [Obsolete("""", error: true)] private static void Foo2() { } ``` Tested with .NET Core 1.1.0 Where is this behaviour documented? " +24064 area-System.ComponentModel "Test: System.ComponentModel.DataAnnotations.Tests.MaxLengthAttributeTests/GetValidationResult_ValueNotStringOrICollection_ThrowsInvalidCastException failed with ""System.Reflection.MissingMetadataException""" Opened on behalf of @Jiayili1 The test `System.ComponentModel.DataAnnotations.Tests.MaxLengthAttributeTests/GetValidationResult_ValueNotStringOrICollection_ThrowsInvalidCastException` has failed. Assert.Throws() Failure\r Expected: typeof(System.InvalidCastException)\r Actual: typeof(System.Reflection.MissingMetadataException): This operation cannot be carried out because metadata for the following object was removed for performance reasons:\ \ EETypeRva:0x0003A200\ \ No further information is available. Rebuild in debug mode for better information.\ \ Stack Trace: at System.Reflection.Runtime.TypeInfos.RuntimeNoMetadataNamedTypeInfo.get_InternalFullNameOfAssembly() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeBlockedTypeInfo.cs:line 229 at System.Reflection.Runtime.BindingFlagSupport.PropertyPolicies.CoreGetDeclaredMembers($RuntimeTypeInfo type, $NameFilter optionalNameFilter, $RuntimeTypeInfo reflectedType) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\BindingFlagSupport\PropertyPolicies.cs:line 23 at System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList$1.Create($RuntimeTypeInfo type, String optionalNameFilter, Boolean ignoreCase) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\BindingFlagSupport\QueriedMemberList.cs:line 123 at System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo.TypeComponentsCache.PerNameQueryCache$1.Factory(String key) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeTypeInfo.TypeComponentsCache.cs:line 124 at System.Collections.Concurrent.ConcurrentUnifier$2.GetOrAdd(__Canon key) in f:\dd\ndp\fxcore\CoreRT\src\Common\src\System\Collections\Concurrent\ConcurrentUnifier.cs:line 112 at System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo.Query(String optionalName, BindingFlags bindingAttr, Func$2<__Canon,Boolean> optionalPredicate) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeTypeInfo.BindingFlags.cs:line 192 at System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeTypeInfo.BindingFlags.cs:line 122 at System.ComponentModel.DataAnnotations.CountPropertyHelper.TryGetCount(Object value, Int32& count) in E:\A\_work\690\s\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\MaxLengthAttribute.cs:line 132 at System.ComponentModel.DataAnnotations.MaxLengthAttribute.IsValid(Object value) in E:\A\_work\690\s\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\MaxLengthAttribute.cs:line 78 at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, $ValidationContext validationContext) in E:\A\_work\690\s\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\ValidationAttribute.cs:line 380 at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, $ValidationContext validationContext) in E:\A\_work\690\s\corefx\src\System.ComponentModel.Annotations\src\System\ComponentModel\DataAnnotations\ValidationAttribute.cs:line 424 at System.ComponentModel.DataAnnotations.Tests.MaxLengthAttributeTests.<>c.b__10_0() in E:\A\_work\690\s\corefx\src\System.ComponentModel.Annotations\tests\MaxLengthAttributeTests.cs:line 124 at System.Func$1.Invoke() in Invoke:line 16707566 Build : Master - 20170915.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release - Debug - Windows.10.Amd64.ClientRS3-x64 - Release - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170915.01/workItem/System.ComponentModel.Annotations.Tests/analysis/xunit/System.ComponentModel.DataAnnotations.Tests.MaxLengthAttributeTests~2FGetValidationResult_ValueNotStringOrICollection_ThrowsInvalidCastException +24065 area-System.Net Test: System.Net.Tests.HttpRequestStreamTests / EndRead_InvalidAsyncResult_ThrowsArgumentException Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpRequestStreamTests/EndRead_InvalidAsyncResult_ThrowsArgumentException(chunked: True)` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Exception : Exception from HRESULT: 0x80072EFE Stack Trace: at System.Net.Http.HttpClientHandler.d__111.MoveNext$catch$1() in E:\A\_work\690\s\corefx\src\System.Net.Http\src\uap\System\Net\HttpClientHandler.cs:line 616 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter$1.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.HttpClient.d__58.MoveNext$catch$0() in E:\A\_work\690\s\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter$1.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Tests.HttpRequestStreamTests.d__21.MoveNext() in E:\A\_work\690\s\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs:line 571 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter$1.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.HttpHandlerToFilter.d__15.MoveNext$catch$1() in E:\A\_work\690\s\corefx\src\System.Net.Http\src\uap\System\Net\HttpHandlerToFilter.cs:line 100 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter$1.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.Net.Http.HttpClientHandler.d__111.MoveNext() in E:\A\_work\690\s\corefx\src\System.Net.Http\src\uap\System\Net\HttpClientHandler.cs:line 607 Build : Master - 20170915.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170915.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpRequestStreamTests~2FEndRead_InvalidAsyncResult_ThrowsArgumentException(chunked:%20True) +24066 area-System.Diagnostics "System.Diagnostics.Tests.ProcessTests.ProcessStart_UseShellExecute_OnUnix_ThrowsIfNoProgramInstalled failed with ""System.ComponentModel.Win32Exception : No such file or directory"" in CI" Failed test: System.Diagnostics.Tests.ProcessTests.ProcessStart_UseShellExecute_OnUnix_ThrowsIfNoProgramInstalled Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_centos7.1_debug/169/testReport/System.Diagnostics.Tests/ProcessTests/ProcessStart_UseShellExecute_OnUnix_ThrowsIfNoProgramInstalled_isFolder__True_/ Failed configuration: OuterLoop_netcoreapp_centos7.1_debug MESSAGE: ~~~ System.ComponentModel.Win32Exception : No such file or directory ~~~ STACK TRACE: ~~~ at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Unix.cs:line 270 at System.Diagnostics.Process.Start() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs:line 1205 at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs:line 1248 at System.Diagnostics.Tests.ProcessTests.ProcessStart_UseShellExecute_OnUnix_ThrowsIfNoProgramInstalled(Boolean isFolder) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_centos7.1_debug/src/System.Diagnostics.Process/tests/ProcessTests.Unix.cs:line 100 ~~~ +24067 area-System.Memory Few questions about the Memory Hello guys! I am currently trying to update my blog post/presentation about Span. I read the code and I have few questions. I hope that you can help me to get a better understanding. 1. One of the reasons for making `Span` and `ReadOnlySpan` a stack-only types was to avoid struct tearing. `Memory` is a struct and it consist of 3 fields. By design it's not stack-only. Is it not going to suffer from struct tearing? Why is it not a class? 2. `ReadOnlyMemory.DangerousTryGetArray` is breaking the encapsulation by exposing `ArraySegment` which allows to modify the content via indexer (it has a setter). It's hidden from the IDE via `EditorBrowsable` attribute and has a name that indicates the consequences. Is this method really needed? Why not to introduce new type like `ReadOnlyArraySegment` ? cc @KrzysztofCwalina @jkotas +24068 area-System.Net Zero Width Space Hei guys, for some reason you are using [Zero Width Spaces](https://www.compart.com/en/unicode/U+200B) in your source code. Here is what my editor shows: ```csharp using RTWeb<200b>Socket<200b>Error = Windows.Networking.Sockets.Web<200b>Socket<200b>Error; ``` Even the github syntax highlighter breaks; https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WinRTWebSocket.cs#L25 Does the original source of RT have them too? I did a blame and it seems @Diego-Perez-Botero commited in #21600 the zero width space unicode chars. +24069 area-System.Net Do not use zero width spaces Fixes #24068 +24070 area-System.Diagnostics Process.MainModule doesn't return the proper module in some cases "TL;DR - the System.Diagnostics.Process.MainModule returns other module than the main one in some cases. When trying to build CoreCLR in Alpine docker container, I have bumped into a strange issue when msbuild would fail with internal error when forking another copy of itself. strace revealed that it was calling ""access"" syscall with ""Tools/dotnetcli/shared/Microsoft.NETCore.App/2.0.0-preview1-002111-00/System.Private.CoreLib.ni.dll"" file as a parameter. Looking at where that syscall came from, it turned out it was SystemNative_ForkAndExecProcess in System.Native.so, which was called from a call chain stemming from Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.LaunchNode. This function was passing in a result of the System.Diagnostics.Process.MainModule and it was returning that dll instead of the actual main module. It turns out that the System.Diagnostics.Process.MainModule relies on the main module being the first module listed in the /proc/self/maps. But in the Alpine container, it was not the case. I can see two ways to fix that. Either ensure that the modules ProcessManager.GetModules always returns the main module as the first one or change the System.Diagnostics.Process.MainModule to search for the main exe by looping through all the modules and comparing their FileName to the Process.GetExePath(). And probably caching the result. I've verified that the second approach works. " +24072 area-System.Memory Span extension method to slice off of a string instance # [Current API proposal](https://github.com/dotnet/corefx/issues/24072#issuecomment-347610584) TODO (see https://github.com/dotnet/corefx/issues/24072#issuecomment-349412729): Add array overloads. Consider ArraySegment overloads for consistency. ```cs public static class MemoryExtensions { public static ReadOnlySpan AsReadOnlySpan(this string text, int start); public static ReadOnlySpan AsReadOnlySpan(this string text, int start, int length); public static ReadOnlyMemory AsReadOnlyMemory(this string text, int start); public static ReadOnlyMemory AsReadOnlyMemory(this string text, int start, int length); } ``` ---- # Original post I expected to see these: ```cs class System.SpanExtensions { public static ReadOnlySpan Slice(this string text, int start); public static ReadOnlySpan Slice(this string text, int start, int length); } ``` But now I also see a proposal for a non-stack-only [`StringSegment`](https://github.com/dotnet/corefx/issues/20378) type. So I have two questions. 1. Is there a clearly preferable return type for such an extension method? 2. Is the most efficient way to slice a string `str.AsReadOnlySpan().Slice(...)`, or is there a single method call I can make that I haven't found yet? That's a little verbose for my liking, even if the two calls are inlined. +24074 area-System.Net Error while copying content to a stream. "my Desktop Code is follow: ```c# HttpResponseMessage response = await Client.GetAsync(ActionStringBase + ""/"" + id.ToString()); var sinstal = await response.Content.ReadAsStringAsync(); //var sinstal=await Client.GetStringAsync(ActionStringBase + ""/"" + id.ToString()); var jsspp = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }; var _Data = JsonConvert. DeserializeObject(sinstal, jsspp); ``` webapi code is follow: if code is that ```c# public IActionResult Get(int id) { var table = _dbContext.Cmodel3Ds.Find(id); return json(table); } ``` return no problem if code add Include or _dbcontext.entity(x).collection(r=>r.inve....) then on Desktop Throw ""Error while copying content to a stream."" o,db in property of table is contain some binary(max) [EDIT] Add C# syntax highlighting by @karelz" +24076 area-Infrastructure Updating corefx to use new roslyn compiler cc: @weshaggard @ericstj FYI: @ahsonkhan @RussKeldorph @VSadov since you were interested in corefx using a newer compiler This PR will update the version of the roslyn compiler that we use in corefx. +24077 area-System.Net Editing list of System.Net.* SMEs Cristian Pop (GitHub cipop) is no longer on the NCL team. +24078 area-System.Diagnostics Fixing build failure on CI happening on Centos fixes #24066 +24079 area-Serialization Include the generated serializer in the package. @shmao @zhenlan @mconnew +24080 area-System.Net Add copyright header from Mono to HttpUtility.cs Fixes #24043 Copied from Mono: https://github.com/mono/mono/blob/0af1ea70c29a66a59765183b45d6b75fa6c3d8fa/mcs/class/System.Web/System.Web/HttpUtility.cs#L3-L30 +24081 area-System.IO Failed FileStream construction truncates files on Linux "On Linux, the second `FileStream` construction below truncates the file and throws an `IOException`: ```cs using System.IO; using System.Text; class Program { static void Main(string[] args) { var filename = ""file""; using (var fs1 = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None)) { fs1.Write(Encoding.ASCII.GetBytes(""fs1""), 0, 3); fs1.Flush(); // throws IOException: file being used by another process using (var fs2 = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None)) { } } } } ``` I understand `FileMode.Create` specifies truncation of extant files, and that Linux file locking is advisory, but this behavior seems incorrect to me. If it can be known the file is in use, why not throw before truncating it? The exception is also misleading in that it implies an external process has locked the file and that lock has been respected, i.e. the file has not been modified, when in fact the file has been destructively modified. " +24082 area-Serialization Include the fwlink in the warning. @shmao @zhenlan @mconnew +24083 area-System.IO Use buffer pooling in System.IO.Compression Here are some candidates: https://github.com/dotnet/corefx/blob/8d40fac24b4a1fdaacd46ae923f3258da1996e16/src/System.IO.Compression/src/System/IO/Compression/DeflateManaged/DeflateManagedStream.cs#L106 https://github.com/dotnet/corefx/blob/8d40fac24b4a1fdaacd46ae923f3258da1996e16/src/System.IO.Compression/src/System/IO/Compression/DeflateManaged/DeflateManagedStream.cs#L123 https://github.com/dotnet/corefx/blob/8d40fac24b4a1fdaacd46ae923f3258da1996e16/src/System.IO.Compression/src/System/IO/Compression/DeflateManaged/FastEncoderWindow.cs#L69-L71 https://github.com/dotnet/corefx/blob/8d40fac24b4a1fdaacd46ae923f3258da1996e16/src/System.IO.Compression/src/System/IO/Compression/DeflateManaged/HuffmanTree.cs#L127 https://github.com/dotnet/corefx/blob/8d40fac24b4a1fdaacd46ae923f3258da1996e16/src/System.IO.Compression/src/System/IO/Compression/DeflateManaged/OutputWindow.cs#L24 Consider reusing some of these arrays in a buffer pool. +24084 area-Serialization Generate Microsoft.XmlSerializer.Generator.props. Generate the props file on the fly so that the file can use the correct reference version. +24085 area-System.Diagnostics HierarchicalRequestId in .net core applications? I want to make use of HierarchicalRequestId/Http Correlation protocol for the application I am working on. What are the different ways of implementing it? Do I need to use DiagnosticsSource or it can be achieved in ILogger also? Another question, Can I extend ILogger to include addition details in the trace? Please help. I am very new on this +24086 area-System.Drawing "Consolidate more code in the ""System.Drawing"" namespace." "* Remove all remaining Win32 codepaths from the mono codebase. All of this code now implicitly assumes that it will be run on a Unix platform. * Consolidate the rest of the gdipFunctions.cs file into Gdip.cs and GdipNative.Unix.cs * Consolidate the GraphicsUnit and ImageType enumerations -- they were duplicated. * Remove the mono Status enum and use the Windows constants instead in all Unix code. * Move all files into the regular directory structure. Suffix them with "".Unix"" and "".Windows"" when there are collisions. @qmfrederik @akoeplinger This is a fairly large change to some of the mono code files. All win32-specific codepaths have been ripped out, with the assumption that the Windows build configuration covers everything that we need there. I'd like to hear some feedback on that general approach, because to me it doesn't make sense to keep the Win32 codepaths around." +24087 area-System.Threading Reenable Task stack guard tests Fixed by https://github.com/dotnet/coreclr/pull/14015 Reenables tests in and closes https://github.com/dotnet/corefx/issues/23201 +24089 area-System.Drawing Dispose_IconData_DestroysHandle failed in CI https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netfx+CGroup_Release+AGroup_x86+TestOuter_false_prtest/3360/consoleText ``` System.Drawing.Tests.IconTests.Dispose_IconData_DestroysHandle [FAIL] System.IO.IOException : The process cannot access the file 'D:\j\workspace\windows-TGrou---2a8f9c29\bin\tests\System.Drawing.Common.Tests\netfx-Windows_NT-Release-x86\bitmaps\48x48_multiple_entries_4bit.ico' because it is being used by another process. Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.Drawing.Icon..ctor(String fileName, Int32 width, Int32 height) D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Drawing.Common\tests\IconTests.cs(327,0): at System.Drawing.Tests.IconTests.Dispose_IconData_DestroysHandle() ``` It looks like one of the tests isn't properly disposing of the Icon, or holding onto the FileStream or something like that. Should be pretty straightforward to diagnose. +24090 area-Infrastructure ASP.NET MVC 2.0 apps don't work on 2.1 runtime ## Repro Steps 1. `dotnet new mvc`. Make sure your app targets `netcoreapp2.0`. 2. `dotnet build` 3. Install the latest shared framework somewhere. I installed `2.1.0-preview1-25714-02` 4. `/path/to/dotnet --fx-version 2.1.0-preview1-25714-02 bin\Debug\netcoreapp2.0\RollForwardTest.dll` ## Expected results The app should run successfully ## Actual results An error is thrown: ``` fail: Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider[48] An error occurred while reading the key ring. System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' at System.SpanHelpers.IndexOf[T](T& searchSpace, T value, Int32 length) at System.SpanExtensions.IndexOf[T](ReadOnlySpan`1 span, T value) at System.FixedBufferExtensions.GetFixedBufferStringLength(ReadOnlySpan`1 span) at System.FixedBufferExtensions.GetStringFromFixedBuffer(ReadOnlySpan`1 span) at System.IO.SearchResultHandler.FileSystemInfoResultHandler.IsResultIncluded(String fullPath, String userPath, WIN32_FIND_DATA& findData, FileSystemInfo& result) at System.IO.Win32FileSystemEnumerableIterator`1.IsResultIncluded(WIN32_FIND_DATA& findData, TSource& result) at System.IO.Win32FileSystemEnumerableIterator`1.CommonInit() at System.IO.Win32FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler) at System.IO.Win32FileSystem.EnumerateFileSystemInfos(String fullPath, String searchPattern, SearchOption searchOption, SearchTarget searchTarget) at System.IO.DirectoryInfo.EnumerateFileSystemInfos(String searchPattern, SearchOption searchOption) at Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository.d__11.MoveNext() at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository.GetAllElements() at Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.GetAllKeys() at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider.CreateCacheableKeyRingCore(DateTimeOffset now, IKey keyJustAdded) at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider.Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.ICacheableKeyRingProvider.GetCacheableKeyRing(DateTimeOffset now) at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider.GetCurrentKeyRingCore(DateTime utcNow) ``` ## Notes See related issue https://github.com/dotnet/corefx/issues/23988 for why this error is being thrown. We will need to address this issue in the context of when 2.0 apps are run on 2.1 runtime. /cc @Petermarcu @ericstj @weshaggard +24092 area-System.Net Native build fails on CentOS 6 This PR https://github.com/dotnet/corefx/pull/23976 introduced a slightly different declaration for `in_pktinfo`. Unfortunately, the CentOS build is detecting the wrong configuration for `HAVE_LINUX_IN_H`, which is causing the wrong `SOCKET_INCLUDES` to be set. Instead of linux/in.h, netinet/in.h is being used. On CentOS, linux/in.h contains the definition for `in_pktinfo`. This causes us to emit the struct declaration even though it is already defined in a header. @janvorli +24093 area-System.Runtime Introducing System.Rune "Inspired by the discussion here: https://github.com/dotnet/corefxlab/issues/1751 One of the challenges that .NET faces with its Unicode support is that it is rooted on a design that is nowadays obsolete. The way that we represent characters in .NET is with `System.Char` which is a 16-bit value, one that is insufficient to represent Unicode values. .NET developers need to learn about the arcane Surrogate Pairs: https://msdn.microsoft.com/en-us/library/xcwwfbb8(v=vs.110).aspx Developers rarely use this support, mostly because they are not familiar enough with Unicode, and let alone what .NET has to offer for them. I propose that we introduce a `System.Rune` that is backed by 32 bit integer and which corresponds to a codePoint and that we surface in C# the equivalent `rune` type to be an alias to this type. `rune` would become the preferred replacement for `char` and serve as the foundation for proper Unicode and string handling in .NET. As for why the name rune, the inspiration comes from Go: https://blog.golang.org/strings The section ""Code points, characters, and runes"" provides the explanation, a short version is: > ""Code point"" is a bit of a mouthful, so Go introduces a shorter term for the concept: rune. The term appears in the libraries and source code, and means exactly the same as ""code point"", with one interesting addition. *Update* I now have an implementation of `System.Rune` here: https://github.com/migueldeicaza/NStack/blob/master/NStack/unicode/Rune.cs With the following API: ``` public struct Rune { public Rune (uint rune); public Rune (char ch); public static ValueTuple DecodeLastRune (byte [] buffer, int end); public static ValueTuple DecodeLastRune (NStack.ustring str, int end); public static ValueTuple DecodeRune (byte [] buffer, int start, int n); public static ValueTuple DecodeRune (NStack.ustring str, int start, int n); public static int EncodeRune (Rune rune, byte [] dest, int offset); public static bool FullRune (byte [] p); public static bool FullRune (NStack.ustring str); public static int InvalidIndex (byte [] buffer); public static int InvalidIndex (NStack.ustring str); public static bool IsControl (Rune rune); public static bool IsDigit (Rune rune); public static bool IsGraphic (Rune rune); public static bool IsLetter (Rune rune); public static bool IsLower (Rune rune); public static bool IsMark (Rune rune); public static bool IsNumber (Rune rune); public static bool IsPrint (Rune rune); public static bool IsPunctuation (Rune rune); public static bool IsSpace (Rune rune); public static bool IsSymbol (Rune rune); public static bool IsTitle (Rune rune); public static bool IsUpper (Rune rune); public static int RuneCount (byte [] buffer, int offset, int count); public static int RuneCount (NStack.ustring str); public static int RuneLen (Rune rune); public static Rune SimpleFold (Rune rune); public static Rune To (Case toCase, Rune rune); public static Rune ToLower (Rune rune); public static Rune ToTitle (Rune rune); public static Rune ToUpper (Rune rune); public static bool Valid (byte [] buffer); public static bool Valid (NStack.ustring str); public static bool ValidRune (Rune rune); public override bool Equals (object obj); [System.Runtime.ConstrainedExecution.ReliabilityContractAttribute((System.Runtime.ConstrainedExecution.Consistency)3, (System.Runtime.ConstrainedExecution.Cer)2)] protected virtual void Finalize (); public override int GetHashCode (); public Type GetType (); protected object MemberwiseClone (); public override string ToString (); public static implicit operator uint (Rune rune); public static implicit operator Rune (char ch); public static implicit operator Rune (uint value); public bool IsValid { get; } public static Rune Error; public static Rune MaxRune; public const byte RuneSelf = 128; public static Rune ReplacementChar; public const int Utf8Max = 4; public enum Case { Upper, Lower, Title } } ``` *Update Known Issues* - [x] Some APIs above take a uint, need to take a Rune. - [ ] Need to implement IComparable family - [ ] RuneCount/RuneLen need better names, see docs (they should be perhaps Utf8BytesNeeded?) - [ ] Above, the ""ustring"" APIs reference my UTF8 API, this is really not part of the API, but we should consider whether there is a gateway to System.String in some of those, or to Utf8String." +24095 area-System.IO NamedPipeClientStream.ReadAsync poor cancellation in the face of concurrent reads In general, concurrent asynchronous reads on the same Stream isn't supported. However, due to the underlying implementations on Windows, FileStream actually does allow for this when opened in asynchronous mode, as does NamedPipeClientStream. On Unix, to enable cancelable ReadAsyncs, we queue a work item that does a polling loop, to give the code opportunity to see a cancellation request, but this breaks down when there are potentially multiple outstanding read requests on the same stream: they'll all successfully poll and proceed to issue the synchronous read, at which point some may block indefinitely until more data is available, negating the extra effort made to enable cancellation. The right solution, once it's available, is simply to take advantage of the new Socket.ReceiveAsync overload that takes a CancellationToken in https://github.com/dotnet/corefx/issues/22608 and just pass the token through. It's then up to the Socket's implementation to appropriately respect cancellation. If that solution isn't available soon enough, we should enforce serialized reads via a SemaphoreSlim. +24096 area-Serialization Add the target to copy the serializer to publish folder. @shmao @zhenlan @mconnew +24097 area-System.Drawing Remove an assertion from PrintDocumentTests.cs. There are tons of PaperKinds (like 100+), so it's not really reasonable to make an assertion about every single one of them. The two we have above this seem to be the most common and are probably okay to check explicitly. I added some logging to see what kind of printer was in use in https://github.com/dotnet/corefx/issues/23992, but it turned out to be `PaperKind.Custom`. I don't think we can make any reasonable guesses about what the size of that is supposed to be, so I'm just going to remove this block here. +24098 area-System.Net Disable NegotiateStreamTest fixture for distros without working Kerberos because setup-kdc.sh is broken on some distros and this is failing 350 tests. Relates to https://github.com/dotnet/corefx/issues/24000 +24099 area-System.Net Increase some networking test timeouts In response to ongoing failures. I do not know whether the increased timeouts will help, and the numbers are arbitrary. Relates to #18907 #23533 #23099 etc. +24100 area-System.Net Fix RHEL6 linux/in.h file detection On RHEL6, the build got broken by my recent fix of the in_pktinfo / ip_mreqn detection fix. The reason is that on that platform, linux/in.h cannot be included on its own, the sys/socket.h needs to be included before that to provide definitions of some structures. In fact, Linux doc states that the sys/socket.h should be included before the linux/in.h. So I am fixing that by adding that include to the detection code. I have verified that it works on RHEL 6, Ubuntu 14.04, Alpine Linux and FreeBSD. +24101 area-System.ComponentModel Data-annotations length fix Fixes #24064 See [this](https://github.com/dotnet/corefx/issues/24064#issuecomment-330002471) comment. +24103 area-System.Memory Add Overlaps/Within extension methods for ReadOnlySpan This proposal adds utility methods for checking spans for overlaps or if a span is within in another span. For previous discussions see https://github.com/dotnet/corefx/issues/17793, https://github.com/dotnet/corefxlab/issues/827 and https://github.com/dotnet/corefx/issues/18750. And a closed PR https://github.com/dotnet/corefx/pull/18731. ### Proposed API Add two sets of extension methods `Overlaps` and `Within` for `ReadOnlySpan` in `SpanExtensions`: ```csharp public static class SpanExtensions { public static bool Overlaps(this ReadOnlySpan first, ReadOnlySpan second); public static bool Overlaps(this ReadOnlySpan first, ReadOnlySpan second, out int elementOffset); public static bool Within(this ReadOnlySpan first, ReadOnlySpan second); public static bool Within(this ReadOnlySpan first, ReadOnlySpan second, out int elementOffset);} } ``` * If `second` span does not match the alignment of `first` span an `ArgumentException` is thrown. * `out int elementOffset` is the relative offset or index of the start of the `second` span to the start of the `first` span. * `elementOffset` is only valid if the check in question returns `true`. ### Rationale and Usage For `Overlaps` the scenario can involve algorithms that transform elements from `first` to `second` span, if the spans overlap the result might be wrong depending on the algorithm. To be able to detect this the `Overlaps` method can be called. For `Within` the scenario can involve buffer pool management, where spans are leased from a buffer and later needs to be returned to a given buffer. Calling `Within` allows checking for which buffer the given span is within and thus where it must be returned to. #### Expected Results - **A**: `first` entirely before `second`, no overlap ``` first: [--------) xRef xRef + xLength second: [------------) yRef yRef + yLength ``` - **B**: `first` starts before `second` and ends inside `second` ``` first: [------------) xRef xRef + xLength second: [------------) yRef yRef + yLength ``` - **C**: `first` is entirely within `second` ``` first: [-----------------------) xRef xRef + xLength second: [--------------------------) yRef yRef + yLength ``` - **D**: `first` starts inside target `second` and ends after `second` end ``` first: [------) xRef xRef + xLength second: [-------) yRef . yRef + yLength ``` - **E**: `first` entirely after `second`, no overlap ``` first: [------------) xRef xRef + xLength second: [--------) yRef yRef + yLength ``` - **F**: `first` starts before `second` and ends after `second`, i.e. `second` is contained in `first` ``` first: [-------------------------------) xRef xRef + xLength second: [--------------------------) yRef yRef + yLength ``` - **G**: `first` is same as `second` ``` first: [--------------------------) xRef xRef + xLength second: [--------------------------) yRef yRef + yLength ``` - **H**: `first` is empty within `second` ``` first: [) xRef second: [--------------------------) yRef yRef + yLength ``` - **I**: `first` is empty before `second` ``` first: [) xRef second: [--------------------------) yRef yRef + yLength ``` - **J**: `first` is empty after `second` ``` first: [) xRef second: [--------------------------) yRef yRef + yLength ``` In table below `Overlaps => first.Overlaps(second)` or `Within => first.Within(second)`. `x => first` and `y => second`. | |`Overlaps` |`Within` |Extra checks/comment | |--------|-----------|-----------|---------------| |**A**/**E** |`false` |`false` |No way to know which case from these methods alone.| |**B** |`true` |`false` |`elementOffset > 0`| |**C** |`true` |`true` | | |**D** |`true` |`false` |`elementOffset < 0`| |**F** |`true` |`false` |`elementOffset >= 0 && xLength >= (elementOffset + yLength)`| |**G** |`true` |`true` |`elementOffset == 0 && xLength == yLength`| |**H** |`true` |`true` |`xLength == 0`| |**I**/**J** |`false` |`false` |No way to know which case from these methods alone.| #### Examples ```csharp public static void RepeatEvenIndices(ReadOnlySpan src, Span dst) { if (src.Overlaps(dst, out var elementOffset) && elementOffset >= -1) { throw new ArgumentException(); } for (int i = 0; i < src.Length / 2; i++) { dst[i + 0] = src[i * 2]; dst[i + 1] = src[i * 2]; } } ``` ### Open Questions Could this API be expressed differently, perhaps with an all encompassing `Overlap` method returning an enum? Performance downsides? Naming of the methods should be reviewed. ### Updates UPDATE 1: Rename `Contains` to `Within` with reversed `first`/`second` relationship, due to naming confusion. Rename `elementIndex` to `elementOffset` latter considered better. `elementOffset` only valid if check returns `true`. Revise table and add empty cases. cc: @ektrah @mgravell @ahsonkhan @shiftylogic @jkotas +24104 area-System.Net HttpWebRequest hits 1s timeout when resolving http://localhost on Win10 (.NET Framework is fast) "Consider the following method (error/exception handling omitted for brevity: ```c# public virtual string MakeHttpRequest(Uri fullUri, string httpMethod, string requestBody) { string responseString = string.Empty; HttpWebRequest request = HttpWebRequest.Create(fullUri) as HttpWebRequest; request.Method = httpMethod; request.Timeout = 30000; request.Accept = ""application/json,image/png""; if (request.Method == ""POST"") { string payload = requestBody; byte[] data = Encoding.UTF8.GetBytes(payload); request.ContentType = ""application/json;charset=utf-8""; Stream requestStream = request.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); } HttpWebResponse webResponse = request.GetResponse() as HttpWebResponse; using (Stream responseStream = webResponse.GetResponseStream()) using (StreamReader responseStreamReader = new StreamReader(responseStream, Encoding.UTF8)) { responseString = responseStreamReader.ReadToEnd(); } return responseString; } ``` Executing this method against a server running on localhost yields wildly different execution times when run via the full .NET Framework vs. .NET Core. I have a [demo project](https://github.com/jimevans/NetCoreHttpPerfDemo) that shows the discrepancy, making calls to a locally running HTTP server, that server being the Chromium project's `chromedriver.exe`, used to automate the Chrome browser. When running the executables created by that project, you can see the following typical outputs (as run on Windows 10, build 16288): Run against .NET Core 2.0: >Starting test... Starting ChromeDriver 2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a) on port 9515 Only local connections are allowed. Started session 946394531499259b7442073c0e26060d Navigating to http://www.google.com Navigation complete Making 10 HTTP calls to localhost, logging the elapsed time... Elapsed time for HTTP call: 1038 milliseconds Elapsed time for HTTP call: 1016 milliseconds Elapsed time for HTTP call: 1015 milliseconds Elapsed time for HTTP call: 1011 milliseconds Elapsed time for HTTP call: 1012 milliseconds Elapsed time for HTTP call: 1024 milliseconds Elapsed time for HTTP call: 1013 milliseconds Elapsed time for HTTP call: 1027 milliseconds Elapsed time for HTTP call: 1013 milliseconds Elapsed time for HTTP call: 1014 milliseconds Test finished. Press to exit. Running against the full .NET Framework 4.5: >Starting test... Starting ChromeDriver 2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a) on port 9515 Only local connections are allowed. Started session 81c2bbd21a0d89354b2dead8d52ee982 Navigating to http://www.google.com Navigation complete Making 10 HTTP calls to localhost, logging the elapsed time... Elapsed time for HTTP call: 35 milliseconds Elapsed time for HTTP call: 7 milliseconds Elapsed time for HTTP call: 12 milliseconds Elapsed time for HTTP call: 5 milliseconds Elapsed time for HTTP call: 4 milliseconds Elapsed time for HTTP call: 7 milliseconds Elapsed time for HTTP call: 4 milliseconds Elapsed time for HTTP call: 6 milliseconds Elapsed time for HTTP call: 5 milliseconds Elapsed time for HTTP call: 5 milliseconds Test finished. Press to exit. I would expect similar performance between framework versions. Absent that, I would expect there to be settings to modify to the `HttpWebRequest` object that would yield similar performance as a workaround. [EDIT] C# syntax highlighing by @karelz" +24105 area-System.Memory Change ReadOnlySpan indexer to return ref readonly ```diff namespace System { public struct ReadOnlySpan { ... - public T this[int index] { get; } + public ref readonly T this[int index] { get; } ... } } ``` See https://github.com/dotnet/corefx/issues/23881#issuecomment-328741859. +24106 area-System.Diagnostics Ensure ProcessModule for main executable is first in modules list Fixes https://github.com/dotnet/corefx/issues/24070 @janvorli, can you verify this fixes the issue you were seeing on Alpine in docker? +24107 area-System.Net Wrap cert callback leaked exceptions in WinHttpHandler Wrap cert callback leaked exceptions in WinHttpHandler Similar to the fix done for CurlHandler (#21938), fix WinHttpHandler so that leaked exceptions from the user-provided certificate callback are properly wrapped. The ManagedHandler still needs to be fixed since it is not wrapping properly. Contributes to #21904 +24108 area-Infrastructure Installing System.ValueTuple 4.4.0 from Nuget into UWP project causes reference conflicts Version 4.3.1 works fine. The warning is: ```1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1987,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.``` I've attached a detailed build log containing the conflicts: [Build.txt](https://github.com/dotnet/corefx/files/1309403/Build.txt) And for comparison, a build log with 4.3.1: [Working.txt](https://github.com/dotnet/corefx/files/1309408/Working.txt) I can't quite tell what the problem is. Hopefully you can. :-) +24109 area-System.Drawing Fix multiplying TextureBrush with a disposed matrix on Unix Also fixed in Libgdiplus here: https://github.com/mono/libgdiplus/pull/80 Also enabling a test that should work +24110 area-System.Linq LINQ OrderBy performance drops by bazillion times in some cases ### **Input data:** `List list = new List();` ### **Prepare data:** **random:** `var rnd = new Random(); for (var i = 0; i < n; i++) list.Add(rnd.Next());` **desc:** `for (var i = 0; i < n; i++) list.Add(n - i);` **asc:** ` for (var i = 0; i < n; i++) list.Add(n - i);` **desc+asc:** `for (var i = 0; i < n / 2; i++) list.Add(n - i); for (var i = n / 2; i < n; i++) list.Add(i);` **asc+desc:** `for (var i = 0; i < n / 2; i++) list.Add(i); for (var i = n / 2; i < n; i++) list.Add(n - i);` ### **Sorting functions:** **List:** `List SortByList() { var result = list.ToList(); result.Sort(); return result; };` **LINQ:** `List SortByLINQ() => list.OrderBy(x => x).ToList();` **LINQOptimizer (https://github.com/nessos/LinqOptimizer):** `List SortByLINQOptimizer() => list.AsQueryExpr().OrderBy(x => x).Run().ToList();` ### **Results:** **10,000 items** ``` LINQOptimizer LINQ List random 00:00:00.0016349 00:00:00.0031569 00:00:00.0007014 asc 00:00:00.0012643 00:00:00.0014618 00:00:00.0001882 desc 00:00:00.0013321 00:00:00.0014991 00:00:00.0002963 desc+asc 00:00:00.0018149 00:00:00.0118873 00:00:00.0007774 asc+desc 00:00:00.0020868 00:00:00.2250114 00:00:00.0008123 ``` **100,000 items** ``` LINQOptimizer LINQ List random 00:00:00.0149506 00:00:00.0341792 00:00:00.0087713 asc 00:00:00.0084689 00:00:00.0184448 00:00:00.0019559 desc 00:00:00.0130457 00:00:00.0190296 00:00:00.0037221 desc+asc 00:00:00.0177337 00:00:00.4118966 00:00:00.0115277 asc+desc 00:00:00.0178328 00:00:19.7172326 00:00:00.0109617 ``` **1,000,000 items** ``` LINQOptimizer LINQ List random 00:00:00.1587396 00:00:00.1570763 00:00:00.1013578 asc 00:00:00.0809392 00:00:00.0828751 00:00:00.0228805 desc 00:00:00.1027216 00:00:00.1947723 00:00:00.0423382 desc+asc 00:00:00.1941634 00:02:09.9069785 00:00:00.1331413 asc+desc 00:00:00.1919311 ---------------- 00:00:00.1365317 ``` Waiting about **30 MINUTES** on 1,000,000 items test with asc+desc data but LINQ is still sorting... (1 core 100% used) P.S.: Tests for LINQ and List - .Net Core 2.0, LINQOptimizer - .Net Framework 4.7. Windows 7 x64 +24111 area-System.Net Wrap exceptions from ManagedHandler's server validation callback To match other handlers' behaviors. Contributes to #21904 cc: @davidsh, @geoffkizer (If this goes in before https://github.com/dotnet/corefx/pull/24107, https://github.com/dotnet/corefx/pull/24107/files#diff-ef1e42079489db8304cd3b3aac08d8c4R211 should be removed. If that PR goes in first, I'll remove it in this one.) +24112 area-System.Collections Documentation Error in System.Collections.Immutable.ImmutableInterlocked The summary of `TryPop` in [ImmutableInterlocked](https://github.com/dotnet/corefx/blob/master/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableInterlocked.cs) is a copy of `Push` which is obviously wrong. As this is a very small change and I'm new to corefx I would correct this quickly. +24113 area-System.Collections #24112 Documentation Error in System.Collections.Immutable.ImmutableInterlocked +24114 area-System.Net "Test: System.Net.Sockets.Tests.SocketOptionNameTest / MulticastInterface_Set_AnyInterface_Succeeds failed with ""Xunit.Sdk.TrueException""" ## History of failures (after 11/9) Date | Build | OS | Details -- | -- | -- | -- 12/7 | 20171207.01 | Fedora25 & RedHat72 & RedHat73 | 12/7 | 20171207.02 | Fedora25 & RedHat72 & RedHat73 | 12/7 | 20171207.04 | Fedora25 | 12/8 | 20171207.05 | Fedora25 | 12/13 | 20171213.01 | Fedora25 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171213.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/13 | 20171213.08 | RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171213.08/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/13 | 20171213.09 | RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171213.09/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/13 | 20171213.10 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171213.10/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/13 | 20171213.11 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171213.11/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/14 | 20171214.02 | Fedora25 & RedHat72 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171214.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/14 | 20171214.03 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171214.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/15 | 20171215.01 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171215.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/15 | 20171215.02 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171215.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/15 | 20171215.05 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171215.05/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/15 | 20171215.06 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171215.06/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/15 | 20171215.08 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171215.08/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/15 | 20171215.09 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171215.09/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/16 | 20171216.01 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/16 | 20171216.02 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/16 | 20171216.03 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.03/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/16 | 20171216.04 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.04/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/16 | 20171216.05 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.05/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/16 | 20171216.05 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171216.05/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/17 | 20171217.01 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171217.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/17 | 20171217.02 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171217.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/18 | 20171218.01 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171218.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) 12/18 | 20171218.02 | Fedora25 & RedHat72 & RedHat73 | [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171218.02/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds) # Original report Opened on behalf of @Jiayili1 The test `System.Net.Sockets.Tests.SocketOptionNameTest/MulticastInterface_Set_AnyInterface_Succeeds` has failed. ``` Waiting for received data timed out Expected: True Actual: False Stack Trace: at System.Net.Sockets.Tests.SocketOptionNameTest.d__8.MoveNext() in /root/corefx-998057/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs:line 140 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Sockets.Tests.SocketOptionNameTest.d__6.MoveNext() in /root/corefx-998057/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs:line 96 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Build : Master - 20170918.01 (Core Tests) Failing configurations: - RedHat.69.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170918.01/workItem/System.Net.Sockets.Tests/analysis/xunit/System.Net.Sockets.Tests.SocketOptionNameTest~2FMulticastInterface_Set_AnyInterface_Succeeds +24115 area-System.Runtime Proposal: Add Array.Sort(T[], int, int, Comparison) overload The PR https://github.com/dotnet/coreclr/pull/8504 changed Array.Sort to be based internally on the `Comparison` delegate rather than on the `IComparer` interface, as delegate dispatch is faster than interface dispatch and it enabled consolidating two implementations. That means if an `IComparer` is provided, its Compare method is wrapped in a `Comparison` delegate. However, there is no overload of Array.Sort that takes the array, offset, length, and comparison delegate (the only overload that takes a delegate is `Sort(T[], Comparison)`: https://github.com/dotnet/corefx/blob/155a46c0c59fddefc009c2a4affd0fd2b3bac2b3/src/System.Runtime/ref/System.Runtime.cs#L305-L309 so if you have a delegate and need to provide offset+length, you first need to allocate an object implementing `IComparer` to wrap it so you can call the right overload, and then the implementation will wrap that with an allocated `Comparison`; that's two allocations and multiple levels of indirection when none of that is necessary. Instead, we should just add this overload: ```C# public static void Sort(T[] array, int index, int length, Comparison comparer); ``` cc: @mikedn, @jkotas, @joperezr, @AlexGhiondea +24116 area-System.Linq Use Array.Sort instead of custom QuickSort implementation in LINQ's OrderBy Fixes https://github.com/dotnet/corefx/issues/24110 The first commit just moves the various QuickSort implementations to the derived sealed class, to avoid some virtual dispatch for some of the comparison operations. The second commit then addresses the core of the problem, by using Array.Sort (an IntroSort implementation) instead of the custom QuickSort implementation used today; stability is provided by comparison operator utilizing the provided indices. It'll be easiest to review the commits individually. cc: @JonHanna, @VSadov, @OmarTawfik, @maxzav +24117 area-System.Net IPAddress.GetHashCode allocates a string for IPv6 In order to return a hash code for IPv6 IPAddress calls (and caches) `ToString` and returns the result's hash code: ```csharp public override int GetHashCode() { if (IsIPv6) { if (_hashCode == 0) { _hashCode = StringComparer.OrdinalIgnoreCase.GetHashCode(ToString()); } return _hashCode; } else { // ... } } ``` These allocations constantly show up high on our list when we analyze our product's performance (even though the results are cached). Is there any reason not to just calculate the hash code from the internal `ushort[] _numbers` and `_addressOrScopeId`? A trivial implementation would be to simply xor all the values (but I can use something more complicated): ```csharp public override int GetHashCode() { if (IsIPv6) { if (_hashCode == 0) { int hashCode = (int)PrivateScopeId; for (int i = 0; i < NumberOfLabels; i += 2) { hashCode ^= _numbers[i] << 16 | _numbers[i + 1]; } _hashCode = hashCode; } return _hashCode; } else { // ... } } ``` I might be missing something obvious, but if not, I would love to remove these unnecessary allocations. +24120 area-System.Data Sql Connection Pooling "We are having issues when connecting from .net core application to sql server. The connections opened by application was not closed/ connection pooling was not happening as expected. Below is the sample code used to open a sql connection. ``` using (var conn = new SqlConnection(_connStr)) { var query = @""INSERT INTO dbo.user ([uid],[email_address],[create_datetime],[created_by],[last_update_datetime],[last_updated_by]) VALUES(@Userid,@EmailAddress,SYSUTCDATETIME(),@UserId,SYSUTCDATETIME(),@UserId);""; await conn.ExecuteAsync(query, new { UserId = request.UserId, EmailAddress = request.EmailAddress }); } ``` On an average 200-400 inactive connections are opened in a day. In couple of weeks, inactive connections count reaching SQL max connection limits. Which brings the application down. Current work Around: Restart application service to close all inactive connections. Current System Specs: Application Server : OS: Ubuntu 16.0.4 LTS App : Asp.Net Core 1.1 ORM: Dapper Sql Server: Version : SQL server Enterprise 2012 OS: Windows 2012 Ent., " +24123 area-System.Drawing Fix libgdiplus function loading on OSX. "Since switching to manual function loading, the OSX configuration of System.Drawing has been broken, because it tries to load functions from ""libgdiplus.so"", rather than ""libgdiplus.dylib"". The fix is fairly straightforward -- we just load a different file name when on OSX." +24124 area-System.Drawing [Question] What is the most efficient way to read/write `Vector` from/to managed memory? I'm optimizing floating-point color conversion methods for the [ImageSharp](https://github.com/SixLabors/ImageSharp) library, using the .NET Core 1.1 runtime for my experiments. I have to do several arithmetic operations using SIMD vectors and scatter the elements of the result vectors to different memory locations. I tried two approaches for this: 1. Read the input as `Vector` -> calculate -> [copy the vectors into an another struct on the stack, and use it for further operations](https://github.com/SixLabors/ImageSharp/blob/84944e2db9b74f4b5f226de33b3c8a5787dc8dc4/src/ImageSharp/Formats/Jpeg/Common/Decoder/JpegColorConverter.FromYCbCr.cs#L117). (Note: This is an AVX2 only execution path.) 2. [Do everything with `Vector4`.](https://github.com/SixLabors/ImageSharp/blob/343a8920d806d9d92efeb45c2f43f103fadfdbd4/src/ImageSharp/Formats/Jpeg/Common/Decoder/JpegColorConverter.FromYCbCr.cs#L95) With the first approach I was only able to reach a small (~`2x`) speedup compared to the scalar code, but the speedup was really significant with the second, `Vector4`-only solution. This is not what I expected. Correct me if I am wrong, but I started to think that the way I read/write `Vector` might prevent the JIT from generating optimized code. I ended up having the following question: Is there any difference in the quality of the generated machine code for this: ```C# ref FooStruct fooRef = ref GetFooRef(); // can be heap or stack reference Vector v = Unsafe.As>(ref fooRef); v+= new Vector(42); Unsafe.As>(ref fooRef) = v; ``` VS this: ```C# ref FooStruct fooRef = ref GetFooRef(); // can be heap or stack reference ref Vector vRef = Unsafe.As>(ref fooRef); vRef+= new Vector(42); ``` VS this: ```C# FooStruct* fooPtr = GetFooPtr(); // can be heap or stack pointer Vector v = Unsafe.Read>(fooPtr); v+= new Vector(42); Unsafe.Write>(fooPtr, v); ``` VS this? ```C# FooStruct* fooPtr = GetFooPtr(); // can be heap or stack pointer Vector v = Unsafe.ReadUnaligned>(fooPtr); v+= new Vector(42); Unsafe.WriteUnaligned>(fooPtr, v); ``` I'm interested in both: - Reading/writing `Vector` from/to unalinged managed heap locations - Reading/writing to a `struct` located on the stack Any hints? Is there something wrong with my approach? Should I ask this on `coreclr` instead? Thanks! +24128 area-Serialization Port the assembly load path change into 2.0 branch Port the change https://github.com/dotnet/corefx/commit/49f89e475fbba3b64650cafbec27830829450414#diff-963a351caa5eb7b91c08bd702b437637 to 2.0 branch. Fix #24179 @shmao @zhenlan @mconnew +24129 area-Infrastructure Port to 2.0.0 - Update DotNetHost version refererence This change updates the version of the DotNetHost and DotNetHostPolicy to a newer version that's available for RHEL 6 too. +24132 area-Infrastructure Update UAP Runner to get new uap runner's logging cc: @danmosemsft @tarekgh @joperezr +24133 area-System.Net "System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ServerCertificates_Test.NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds failed with ""System.Net.Internals.SocketExceptionFactory+ExtendedSocketException"" in CI" Failed test: System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_ServerCertificates_Test.NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds Configuration: OuterLoop_netcoreapp_fedora24_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_fedora24_release/173/testReport/System.Net.Http.Functional.Tests/ManagedHandler_HttpClientHandler_ServerCertificates_Test/NoCallback_RevokedCertificate_NoRevocationChecking_Succeeds/ MESSAGE: ~~~ System.Net.Http.HttpRequestException : Connection refused [::ffff:4.79.142.205]:443 ---- System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Connection refused [::ffff:4.79.142.205]:443 ~~~ STACK TRACE: ~~~ at System.Net.Http.ConnectHelper.d__0.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/ConnectHelper.cs:line 25 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() at System.Net.Http.HttpConnectionHandler.d__6.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 88 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() at System.Net.Http.HttpConnectionPool.d__11.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionPool.cs:line 121 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() at System.Net.Http.HttpConnectionHandler.d__4.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnectionHandler.cs:line 42 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.CookieHandler.d__3.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/CookieHandler.cs:line 31 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.AutoRedirectHandler.d__5.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/AutoRedirectHandler.cs:line 65 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_ServerCertificates_Test.d__15.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs:line 265 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2494 at System.Net.Sockets.Socket.DoMultipleAddressConnectCallback(Object result, MultipleAddressConnectAsyncResult context) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5218 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.DoMultipleAddressConnectCallback(Object result, MultipleAddressConnectAsyncResult context) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5237 at System.Net.Sockets.Socket.MultipleAddressConnectCallback(IAsyncResult result) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 5193 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Sockets/src/System/Net/Sockets/Socket.cs:line 2494 at System.Net.Sockets.Socket.<>c.b__275_0(IAsyncResult iar) in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 171 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.ConnectHelper.d__0.MoveNext() in /mnt/resource/j/workspace/dotnet_corefx/master/outerloop_netcoreapp_fedora24_release/src/System.Net.Http/src/System/Net/Http/Managed/ConnectHelper.cs:line 18 ~~~ +24135 area-System.Memory BadImageFormatException with Span with xUnit.net `Span` has been so special, that a strange runtime exception can occur. Reported to xUnit.net already, https://github.com/xunit/xunit/issues/1457 but not sure if the issue is merely caused by xUnit.net. I hope a better exception as well as more meaningful call stack can be thrown if possible. +24137 area-System.Net "Test: System.Net.Http.Functional.Tests.CancellationTest/ReadAsStreamAsync_ReadAsync_Cancel_TaskCanceledQuickly failed with ""System.IO.IOException""" Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.CancellationTest/ReadAsStreamAsync_ReadAsync_Cancel_TaskCanceledQuickly(startResponseBody: True)` has failed. Assert.Throws() Failure\r Expected: typeof(System.OperationCanceledException)\r Actual: typeof(System.IO.IOException): Exception from HRESULT: 0x80072EF1 Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.IO.WinRtToNetFxStreamAdapter.d__43.MoveNext$catch$0() in E:\A\_work\491\s\corefx\src\System.Runtime.WindowsRuntime\src\System\IO\WinRtToNetFxStreamAdapter.cs:line 843 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable$1.ConfiguredTaskAwaiter.GetResult() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 477 at System.IO.BufferedStream.d__50.MoveNext() in E:\A\_work\491\s\corefx\src\System.Runtime.Extensions\src\System\IO\BufferedStream.cs:line 739 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : Master - 20170918.03 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170918.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.CancellationTest~2FReadAsStreamAsync_ReadAsync_Cancel_TaskCanceledQuickly(startResponseBody:%20True) +24138 area-Infrastructure Needs to check corefx-utcs consider some situations when they are native images made by using crossgen "I've recently tested coreclr/corefx utcs which are native images made by using crossgen `FNV` or `R2R`. I found some problems. I need to get feedback from you by sharing this. One of them is `System.Reflection.Tests.ModuleTests.Name`. ``` System.Reflection.Tests.ModuleTests.Name [FAIL] Assert.Equal() Failure ↓ (pos 21) Expected: ···ystem.runtime.tests.dll Actual: ···ystem.Runtime.Tests.ni.dll ↑ (pos 21) Stack Trace: at System.Reflection.Tests.ModuleTests.Name() ``` Code of `System.Reflection.Tests.ModuleTests.Name`. ```cs [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, ""Module.Name does not indicate file location on UwpAot"")] public void Name() { Assert.Equal(""system.runtime.tests.dll"", Module.Name, ignoreCase: true); } ``` When the tc is a native image, the `Module.Name` is `System.Runtime.Tests.ni.dll` while the expeced `Module.Name` is `System.Runtime.Tests.dll`. This causes because some tcs assume that the loaded assembly is only `.dll` file although it can be a native image such as `.ni.dll`. We can think corefx-utc doesn't need to be native image itself. However an application could be native image. In my opinion, some tcs need to be fixed to consider this situation. @dotnet/arm32-contrib " +24139 area-System.Net WinHttpException: Not enough storage is available to process this command "Hello, I have an ASP.Net Core 2.0 server (Kestrel) on Windows Server 2016 [Standard D2s v3 (2 vcpus, 8 GB memory)] in Azure. I am trying to load test an endpoint which just sends 2 ""get"" and 2 ""post"" http requests to NoSQL database. For load testing I use https://github.com/tsenart/vegeta from 3 computers. Throughput was approximately 15.000 rpm. Approximately every minute it throws a lot of these exceptions and then it works correctly for a while and after some time again throws exceptions: ``` fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id ""0HL7UO2PLN0UI"", Request id ""0HL7UO2PLN0UI:00000001"": An unhandled exception was thrown by the appl cation. System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpExceptio : Not enough storage is available to process this command at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() ``` here are screenshots of graphs: ![screen shot 2017-09-19 at 08 34 30](https://user-images.githubusercontent.com/3832960/30578809-1213639e-9d16-11e7-9d99-26fbe6285152.png) ![screen shot 2017-09-19 at 08 34 42](https://user-images.githubusercontent.com/3832960/30578815-1abb1082-9d16-11e7-9383-f7698e5c3e15.png) Is this just some mistake in configuration or is the problem somewhere else?" +24142 area-System.Net "Multi-threaded TopicSession use on OSX causes unmanaged ""pointer being freed was not allocated"" error" "This issue was filed [here](https://github.com/Azure/azure-service-bus-dotnet/issues/306) but recommended that I file here. I am making use of the Azure service bus client lib on OSX. When I receive messages from a topic subscription that are a part of a session (~300 sessions with 1-5 messages per session), and do so in parallel, I consistently (but in random locations) get an unmanaged ""pointer being freed was not allocated"" error (typically only 10-20ish sessions get processed). Using the same code, I do not get a crash on Windows 10. Based on the backtrace, this appears to be happening within the bowels of System.Net.Security.SSLStreamInternal, which granted, is documented to not be threadsafe (and is being re-entered). But in any case, I am doing as suggested and filing here. Environment: charles-benedicts-macbook:~ chuck_benedict$ dotnet --info .NET Command Line Tools (2.0.0) Product Information: Version: 2.0.0 Commit SHA-1 hash: cdcd1928c9 Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/2.0.0/ Microsoft .NET Core Shared Framework Host Version : 2.0.0 Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d NuGet package version or commit ID: ""Microsoft.Azure.ServiceBus/1.0.0"": { ""dependencies"": { ""Microsoft.Azure.Amqp"": ""2.1.0"", ""NETStandard.Library"": ""2.0.0"", ""System.Runtime.Serialization.Xml"": ""4.3.0"" Backtrace: ``` (lldb) sos DumpStack OS Thread Id: 0x16c6855 (38) TEB information is not available so a stack size of 0xFFFF is assumed Current frame: libsystem_malloc.dylib!malloc_error_break Child-SP RetAddr Caller, Callee 00007000109E1F50 00007fffaa2b6f6e libsystem_malloc.dylib!free + 0x199, calling libsystem_malloc.dylib!malloc_error_break 00007000109E1FA0 00007fff9ae58b41 Security!SSLRecordServiceWriteQueueInternal + 0x80, calling Security!sslFree 00007000109E1FE0 00007fff9ac8bc3b Security!SSLServiceWriteQueue + 0xf 00007000109E1FF0 00007fff9ac8f441 Security!SSLRead + 0x99, calling Security!SSLServiceWriteQueue 00007000109E2090 00000001085e5bf4 System.Security.Cryptography.Native.Apple.dylib!AppleCryptoNative_SslRead + 0x34, calling System.Security.Cryptography.Native.Apple.dylib!SSLRead 00007000109E20D0 00000001146eeee5 (MethodDesc 0000000114ac6f88 + 0xa5 DomainBoundILStubClass.IL_STUB_PInvoke(System.Net.SafeSslHandle, Byte*, Int32, Int32 ByRef)) 00007000109E2110 00000001146eeee5 (MethodDesc 0000000114ac6f88 + 0xa5 DomainBoundILStubClass.IL_STUB_PInvoke(System.Net.SafeSslHandle, Byte*, Int32, Int32 ByRef)) 00007000109E2170 00000001149d318a (MethodDesc 0000000114aa0510 + 0x8a System.Net.Security.SslStreamPal.DecryptMessage(System.Net.Security.SafeDeleteContext, Byte[], Int32 ByRef, Int32 ByRef)), calling 00000001146df528 (stub for Interop+AppleCrypto.SslRead(System.Net.SafeSslHandle, Byte*, Int32, Int32 ByRef)) 00007000109E21E0 00000001149c1667 (MethodDesc 000000011494ab68 + 0xd7 System.Net.Security.SecureChannel.Decrypt(Byte[], Int32 ByRef, Int32 ByRef)), calling (MethodDesc 0000000114aa0510 + 0 System.Net.Security.SslStreamPal.DecryptMessage(System.Net.Security.SafeDeleteContext, Byte[], Int32 ByRef, Int32 ByRef)) 00007000109E21F0 00000001149bf69a (MethodDesc 000000011494aa88 + 0x1a System.Net.Security.SecureChannel.get_IsValidContext()) 00007000109E2250 00000001149c90a8 (MethodDesc 0000000114ac5880 + 0x98 System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)), calling (MethodDesc 000000011494ab68 + 0 System.Net.Security.SecureChannel.Decrypt(Byte[], Int32 ByRef, Int32 ByRef)) 00007000109E2260 00000001149b798d (MethodDesc 0000000114aa3070 + 0x5d System.Net.FixedSizeReader.ReadPacketAsync(System.IO.Stream, System.Net.AsyncProtocolRequest)), calling (MethodDesc 0000000114aa3308 + 0 System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[[System.Net.FixedSizeReader+d__1, System.Net.Security]](d__1 ByRef)) 00007000109E22F0 00000001149c8fc3 (MethodDesc 0000000114ac5870 + 0x123 System.Net.Security.SslStreamInternal.StartFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)), calling (MethodDesc 0000000114ac5880 + 0 System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)) 00007000109E2340 00000001149c8e82 (MethodDesc 0000000114ac5860 + 0xc2 System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)), calling (MethodDesc 0000000114ac5870 + 0 System.Net.Security.SslStreamInternal.StartFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)) 00007000109E2380 00000001149c8da2 (MethodDesc 0000000114ac5850 + 0x112 System.Net.Security.SslStreamInternal.StartReading(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)), calling (MethodDesc 0000000114ac5860 + 0 System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)) 00007000109E23D0 00000001149c8b49 (MethodDesc 0000000114ac5840 + 0xe9 System.Net.Security.SslStreamInternal.ProcessRead(Byte[], Int32, Int32, System.Net.BufferAsyncResult)), calling (MethodDesc 0000000114ac5850 + 0 System.Net.Security.SslStreamInternal.StartReading(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)) 00007000109E2420 00000001149c438a (MethodDesc 0000000114946da0 + 0x8a System.Net.Security.SslStream.BeginRead(Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 0000000114ac5840 + 0 System.Net.Security.SslStreamInternal.ProcessRead(Byte[], Int32, Int32, System.Net.BufferAsyncResult)) 00007000109E2470 0000000111b9448e (MethodDesc 00000001116c1038 + 0xce System.Threading.Tasks.TaskFactory`1[[System.Int32, System.Private.CoreLib]].FromAsyncTrim[[System.__Canon, System.Private.CoreLib],[System.IO.Stream+ReadWriteParameters, System.Private.CoreLib]](System.__Canon, ReadWriteParameters, System.Func`5, System.Func`3)) 00007000109E24E0 0000000111b4de8a (MethodDesc 00000001116f5ae8 + 0x18a System.IO.Stream.BeginEndReadAsync(Byte[], Int32, Int32)), calling (MethodDesc 00000001116c1038 + 0 System.Threading.Tasks.TaskFactory`1[[System.Int32, System.Private.CoreLib]].FromAsyncTrim[[System.__Canon, System.Private.CoreLib],[System.IO.Stream+ReadWriteParameters, System.Private.CoreLib]](System.__Canon, ReadWriteParameters, System.Func`5, System.Func`3)) 00007000109E2500 0000000114b3fc8d (MethodDesc 0000000114642ce0 + 0xdd Microsoft.Azure.Amqp.AmqpConnectionBase.OnReceiveFrameBuffer(Microsoft.Azure.Amqp.ByteBuffer)) 00007000109E2550 0000000111b4dcd9 (MethodDesc 00000001116f5ac8 + 0x29 System.IO.Stream.ReadAsync(Byte[], Int32, Int32, System.Threading.CancellationToken)), calling (MethodDesc 00000001116f5ae8 + 0 System.IO.Stream.BeginEndReadAsync(Byte[], Int32, Int32)) 00007000109E2570 0000000111b4dca8 (MethodDesc 00000001116f5ab8 + 0x28 System.IO.Stream.ReadAsync(Byte[], Int32, Int32)) 00007000109E2590 00000001146efec7 (MethodDesc 000000011494a580 + 0x67 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 00000001116f5ab8 + 0 System.IO.Stream.ReadAsync(Byte[], Int32, Int32)) 00007000109E25F0 00000001146efdce (MethodDesc 0000000114944cb0 + 0xae Microsoft.Azure.Amqp.Transport.TlsTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 000000011494a580 + 0 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)) 00007000109E2660 00000001146f2eee (MethodDesc 0000000114ac8f10 + 0x5e Microsoft.Azure.Amqp.Sasl.SaslTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E26A0 0000000114b39eaa (MethodDesc 0000000114b27b60 + 0x13a Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E2740 0000000114b3f62d (MethodDesc 0000000114b27b50 + 0xcd Microsoft.Azure.Amqp.AsyncIO+AsyncReader.OnReadBufferComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114b27b60 + 0 Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E27C0 00000001146ef2cf (MethodDesc 0000000114944d30 + 0x20f Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E2890 00000001146f0be8 (MethodDesc 0000000114944d00 + 0xd8 Microsoft.Azure.Amqp.Transport.TlsTransport.OnReadComplete(System.IAsyncResult)), calling (MethodDesc 0000000114944d30 + 0 Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E28E0 00000001146f0aeb (MethodDesc 0000000114ac7368 + 0x16b Microsoft.Azure.Amqp.TaskHelpers+<>c__DisplayClass8_0`1[[System.Int32, System.Private.CoreLib]].b__1(System.Threading.Tasks.Task`1)) 00007000109E2970 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E29C0 0000000111b46945 (MethodDesc 00000001116f5428 + 0x1f5 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E29F0 00000001149bd66e (MethodDesc 000000011494c2c0 + 0x6e System.Net.LazyAsyncResult.get_CompletedSynchronously()) 00007000109E2A10 00000001032f3045 libcoreclr.dylib!JIT_GetSharedGCThreadStaticBase(unsigned long, unsigned int) + 0x35 00007000109E2A80 0000000111c7a808 (MethodDesc 0000000111716ce0 + 0x48 System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116f5408 + 0 System.Threading.Tasks.Task.ExecuteEntryUnsafe()) 00007000109E2AC0 0000000111b7a148 (MethodDesc 00000001116fa5c8 + 0xb8 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E2B00 0000000111bb5090 (MethodDesc 0000000111701bb8 + 0x60 System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116fa5c8 + 0 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E2B30 0000000111b48f45 (MethodDesc 00000001116f49e0 + 0x175 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116fbfb8 + 0 System.Threading.Tasks.StandardTaskContinuation.Run(System.Threading.Tasks.Task, Boolean)) 00007000109E2B90 0000000111b4c8d6 (MethodDesc 00000001116f57a0 + 0x106 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f49e0 + 0 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E2C00 0000000111b4c933 (MethodDesc 00000001116f5790 + 0x43 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f57a0 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E2C40 00000001146f04e0 (MethodDesc 0000000114ac7040 + 0x1c0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)), calling (MethodDesc 00000001116f5790 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E2CE0 00000001146efedc (MethodDesc 000000011494a580 + 0x7c Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 0000000114ac7040 + 0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)) 00007000109E2D40 00000001146efdce (MethodDesc 0000000114944cb0 + 0xae Microsoft.Azure.Amqp.Transport.TlsTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 000000011494a580 + 0 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)) 00007000109E2DB0 00000001146f2eee (MethodDesc 0000000114ac8f10 + 0x5e Microsoft.Azure.Amqp.Sasl.SaslTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E2DF0 0000000114b39eaa (MethodDesc 0000000114b27b60 + 0x13a Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E2E90 0000000114b3f62d (MethodDesc 0000000114b27b50 + 0xcd Microsoft.Azure.Amqp.AsyncIO+AsyncReader.OnReadBufferComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114b27b60 + 0 Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E2F10 00000001146ef2cf (MethodDesc 0000000114944d30 + 0x20f Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E2FE0 00000001146f0be8 (MethodDesc 0000000114944d00 + 0xd8 Microsoft.Azure.Amqp.Transport.TlsTransport.OnReadComplete(System.IAsyncResult)), calling (MethodDesc 0000000114944d30 + 0 Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E3030 00000001146f0aeb (MethodDesc 0000000114ac7368 + 0x16b Microsoft.Azure.Amqp.TaskHelpers+<>c__DisplayClass8_0`1[[System.Int32, System.Private.CoreLib]].b__1(System.Threading.Tasks.Task`1)) 00007000109E30C0 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E30D0 00000001149b7f5d (MethodDesc 000000011494c958 + 0x2d System.Net.AsyncProtocolRequest.CompleteUser(Int32)), calling (MethodDesc 000000011494c300 + 0 System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)) 00007000109E3110 0000000111b46945 (MethodDesc 00000001116f5428 + 0x1f5 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E3160 00000001032f3045 libcoreclr.dylib!JIT_GetSharedGCThreadStaticBase(unsigned long, unsigned int) + 0x35 00007000109E31D0 0000000111c7a808 (MethodDesc 0000000111716ce0 + 0x48 System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116f5408 + 0 System.Threading.Tasks.Task.ExecuteEntryUnsafe()) 00007000109E3210 0000000111b7a148 (MethodDesc 00000001116fa5c8 + 0xb8 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E3250 0000000111bb5090 (MethodDesc 0000000111701bb8 + 0x60 System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116fa5c8 + 0 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E3280 0000000111b48f45 (MethodDesc 00000001116f49e0 + 0x175 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116fbfb8 + 0 System.Threading.Tasks.StandardTaskContinuation.Run(System.Threading.Tasks.Task, Boolean)) 00007000109E32E0 0000000111b4c8d6 (MethodDesc 00000001116f57a0 + 0x106 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f49e0 + 0 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E3350 0000000111b4c933 (MethodDesc 00000001116f5790 + 0x43 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f57a0 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E3390 00000001146f04e0 (MethodDesc 0000000114ac7040 + 0x1c0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)), calling (MethodDesc 00000001116f5790 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E3430 00000001146efedc (MethodDesc 000000011494a580 + 0x7c Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 0000000114ac7040 + 0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)) 00007000109E3490 00000001146efdce (MethodDesc 0000000114944cb0 + 0xae Microsoft.Azure.Amqp.Transport.TlsTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 000000011494a580 + 0 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)) 00007000109E3500 00000001146f2eee (MethodDesc 0000000114ac8f10 + 0x5e Microsoft.Azure.Amqp.Sasl.SaslTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E3540 0000000114b39eaa (MethodDesc 0000000114b27b60 + 0x13a Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E35E0 0000000114b3f62d (MethodDesc 0000000114b27b50 + 0xcd Microsoft.Azure.Amqp.AsyncIO+AsyncReader.OnReadBufferComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114b27b60 + 0 Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E3660 00000001146ef2cf (MethodDesc 0000000114944d30 + 0x20f Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E3730 00000001146f0be8 (MethodDesc 0000000114944d00 + 0xd8 Microsoft.Azure.Amqp.Transport.TlsTransport.OnReadComplete(System.IAsyncResult)), calling (MethodDesc 0000000114944d30 + 0 Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E3780 00000001146f0aeb (MethodDesc 0000000114ac7368 + 0x16b Microsoft.Azure.Amqp.TaskHelpers+<>c__DisplayClass8_0`1[[System.Int32, System.Private.CoreLib]].b__1(System.Threading.Tasks.Task`1)) 00007000109E3810 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E3860 0000000111b46945 (MethodDesc 00000001116f5428 + 0x1f5 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E3890 00000001149bd66e (MethodDesc 000000011494c2c0 + 0x6e System.Net.LazyAsyncResult.get_CompletedSynchronously()) 00007000109E38B0 00000001032f3045 libcoreclr.dylib!JIT_GetSharedGCThreadStaticBase(unsigned long, unsigned int) + 0x35 00007000109E3920 0000000111c7a808 (MethodDesc 0000000111716ce0 + 0x48 System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116f5408 + 0 System.Threading.Tasks.Task.ExecuteEntryUnsafe()) 00007000109E3960 0000000111b7a148 (MethodDesc 00000001116fa5c8 + 0xb8 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E39A0 0000000111bb5090 (MethodDesc 0000000111701bb8 + 0x60 System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116fa5c8 + 0 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E39D0 0000000111b48f45 (MethodDesc 00000001116f49e0 + 0x175 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116fbfb8 + 0 System.Threading.Tasks.StandardTaskContinuation.Run(System.Threading.Tasks.Task, Boolean)) 00007000109E3A30 0000000111b4c8d6 (MethodDesc 00000001116f57a0 + 0x106 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f49e0 + 0 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E3AA0 0000000111b4c933 (MethodDesc 00000001116f5790 + 0x43 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f57a0 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E3AE0 00000001146f04e0 (MethodDesc 0000000114ac7040 + 0x1c0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)), calling (MethodDesc 00000001116f5790 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E3B80 00000001146efedc (MethodDesc 000000011494a580 + 0x7c Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 0000000114ac7040 + 0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)) 00007000109E3BE0 00000001146efdce (MethodDesc 0000000114944cb0 + 0xae Microsoft.Azure.Amqp.Transport.TlsTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 000000011494a580 + 0 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)) 00007000109E3C50 00000001146f2eee (MethodDesc 0000000114ac8f10 + 0x5e Microsoft.Azure.Amqp.Sasl.SaslTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E3C90 0000000114b39eaa (MethodDesc 0000000114b27b60 + 0x13a Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E3D30 0000000114b3f62d (MethodDesc 0000000114b27b50 + 0xcd Microsoft.Azure.Amqp.AsyncIO+AsyncReader.OnReadBufferComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114b27b60 + 0 Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E3DB0 00000001146ef2cf (MethodDesc 0000000114944d30 + 0x20f Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E3E80 00000001146f0be8 (MethodDesc 0000000114944d00 + 0xd8 Microsoft.Azure.Amqp.Transport.TlsTransport.OnReadComplete(System.IAsyncResult)), calling (MethodDesc 0000000114944d30 + 0 Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E3ED0 00000001146f0aeb (MethodDesc 0000000114ac7368 + 0x16b Microsoft.Azure.Amqp.TaskHelpers+<>c__DisplayClass8_0`1[[System.Int32, System.Private.CoreLib]].b__1(System.Threading.Tasks.Task`1)) 00007000109E3F60 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E3F70 00000001149b7f5d (MethodDesc 000000011494c958 + 0x2d System.Net.AsyncProtocolRequest.CompleteUser(Int32)), calling (MethodDesc 000000011494c300 + 0 System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)) 00007000109E3FB0 0000000111b46945 (MethodDesc 00000001116f5428 + 0x1f5 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E4000 00000001032f3045 libcoreclr.dylib!JIT_GetSharedGCThreadStaticBase(unsigned long, unsigned int) + 0x35 00007000109E4070 0000000111c7a808 (MethodDesc 0000000111716ce0 + 0x48 System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116f5408 + 0 System.Threading.Tasks.Task.ExecuteEntryUnsafe()) 00007000109E40B0 0000000111b7a148 (MethodDesc 00000001116fa5c8 + 0xb8 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E40F0 0000000111bb5090 (MethodDesc 0000000111701bb8 + 0x60 System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116fa5c8 + 0 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E4120 0000000111b48f45 (MethodDesc 00000001116f49e0 + 0x175 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116fbfb8 + 0 System.Threading.Tasks.StandardTaskContinuation.Run(System.Threading.Tasks.Task, Boolean)) 00007000109E4180 0000000111b4c8d6 (MethodDesc 00000001116f57a0 + 0x106 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f49e0 + 0 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E41F0 0000000111b4c933 (MethodDesc 00000001116f5790 + 0x43 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f57a0 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E4230 00000001146f04e0 (MethodDesc 0000000114ac7040 + 0x1c0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)), calling (MethodDesc 00000001116f5790 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E42D0 00000001146efedc (MethodDesc 000000011494a580 + 0x7c Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 0000000114ac7040 + 0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)) 00007000109E4330 00000001146efdce (MethodDesc 0000000114944cb0 + 0xae Microsoft.Azure.Amqp.Transport.TlsTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 000000011494a580 + 0 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)) 00007000109E43A0 00000001146f2eee (MethodDesc 0000000114ac8f10 + 0x5e Microsoft.Azure.Amqp.Sasl.SaslTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E43E0 0000000114b39eaa (MethodDesc 0000000114b27b60 + 0x13a Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E4480 0000000114b3f62d (MethodDesc 0000000114b27b50 + 0xcd Microsoft.Azure.Amqp.AsyncIO+AsyncReader.OnReadBufferComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114b27b60 + 0 Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E4500 00000001146ef2cf (MethodDesc 0000000114944d30 + 0x20f Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E45D0 00000001146f0be8 (MethodDesc 0000000114944d00 + 0xd8 Microsoft.Azure.Amqp.Transport.TlsTransport.OnReadComplete(System.IAsyncResult)), calling (MethodDesc 0000000114944d30 + 0 Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E4620 00000001146f0aeb (MethodDesc 0000000114ac7368 + 0x16b Microsoft.Azure.Amqp.TaskHelpers+<>c__DisplayClass8_0`1[[System.Int32, System.Private.CoreLib]].b__1(System.Threading.Tasks.Task`1)) 00007000109E46B0 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E4700 0000000111b46945 (MethodDesc 00000001116f5428 + 0x1f5 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E4730 00000001149bd66e (MethodDesc 000000011494c2c0 + 0x6e System.Net.LazyAsyncResult.get_CompletedSynchronously()) 00007000109E4750 00000001032f3045 libcoreclr.dylib!JIT_GetSharedGCThreadStaticBase(unsigned long, unsigned int) + 0x35 00007000109E47C0 0000000111c7a808 (MethodDesc 0000000111716ce0 + 0x48 System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116f5408 + 0 System.Threading.Tasks.Task.ExecuteEntryUnsafe()) 00007000109E4800 0000000111b7a148 (MethodDesc 00000001116fa5c8 + 0xb8 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E4840 0000000111bb5090 (MethodDesc 0000000111701bb8 + 0x60 System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116fa5c8 + 0 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E4870 0000000111b48f45 (MethodDesc 00000001116f49e0 + 0x175 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116fbfb8 + 0 System.Threading.Tasks.StandardTaskContinuation.Run(System.Threading.Tasks.Task, Boolean)) 00007000109E48D0 0000000111b4c8d6 (MethodDesc 00000001116f57a0 + 0x106 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f49e0 + 0 System.Threading.Tasks.Task.ContinueWithCore(System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E4940 0000000111b4c933 (MethodDesc 00000001116f5790 + 0x43 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)), calling (MethodDesc 00000001116f57a0 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskScheduler, System.Threading.CancellationToken, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E4980 00000001146f04e0 (MethodDesc 0000000114ac7040 + 0x1c0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)), calling (MethodDesc 00000001116f5790 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].ContinueWith(System.Action`1>, System.Threading.Tasks.TaskContinuationOptions)) 00007000109E4A20 00000001146efedc (MethodDesc 000000011494a580 + 0x7c Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)), calling (MethodDesc 0000000114ac7040 + 0 Microsoft.Azure.Amqp.TaskHelpers.ToAsyncResult[[System.Int32, System.Private.CoreLib]](System.Threading.Tasks.Task`1, System.AsyncCallback, System.Object)) 00007000109E4A80 00000001146efdce (MethodDesc 0000000114944cb0 + 0xae Microsoft.Azure.Amqp.Transport.TlsTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 000000011494a580 + 0 Microsoft.Azure.Amqp.StreamExtensions.BeginRead(System.IO.Stream, Byte[], Int32, Int32, System.AsyncCallback, System.Object)) 00007000109E4AF0 00000001146f2eee (MethodDesc 0000000114ac8f10 + 0x5e Microsoft.Azure.Amqp.Sasl.SaslTransport.ReadAsync(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E4B30 0000000114b39eaa (MethodDesc 0000000114b27b60 + 0x13a Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E4BD0 0000000114b3f62d (MethodDesc 0000000114b27b50 + 0xcd Microsoft.Azure.Amqp.AsyncIO+AsyncReader.OnReadBufferComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114b27b60 + 0 Microsoft.Azure.Amqp.AsyncIO+AsyncReader.ReadBuffer()) 00007000109E4C50 00000001146ef2cf (MethodDesc 0000000114944d30 + 0x20f Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E4D20 00000001146f0be8 (MethodDesc 0000000114944d00 + 0xd8 Microsoft.Azure.Amqp.Transport.TlsTransport.OnReadComplete(System.IAsyncResult)), calling (MethodDesc 0000000114944d30 + 0 Microsoft.Azure.Amqp.Transport.TlsTransport.HandleOperationComplete(System.IAsyncResult, Boolean, Boolean)) 00007000109E4D70 00000001146f0aeb (MethodDesc 0000000114ac7368 + 0x16b Microsoft.Azure.Amqp.TaskHelpers+<>c__DisplayClass8_0`1[[System.Int32, System.Private.CoreLib]].b__1(System.Threading.Tasks.Task`1)) 00007000109E4E00 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E4E50 0000000111b46945 (MethodDesc 00000001116f5428 + 0x1f5 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E4E80 00000001032a7ceb libcoreclr.dylib!ThreadNative::GetThreadState(ThreadBaseObject*) + 0x18b, calling libcoreclr.dylib!Frame::PopIfChained() 00007000109E4EA0 00000001032f3045 libcoreclr.dylib!JIT_GetSharedGCThreadStaticBase(unsigned long, unsigned int) + 0x35 00007000109E4F10 0000000111c7a808 (MethodDesc 0000000111716ce0 + 0x48 System.Threading.Tasks.ThreadPoolTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116f5408 + 0 System.Threading.Tasks.Task.ExecuteEntryUnsafe()) 00007000109E4F50 0000000111b7a148 (MethodDesc 00000001116fa5c8 + 0xb8 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E4F90 0000000111bb5090 (MethodDesc 0000000111701bb8 + 0x60 System.Threading.Tasks.TaskContinuation.InlineIfPossibleOrElseQueue(System.Threading.Tasks.Task, Boolean)), calling (MethodDesc 00000001116fa5c8 + 0 System.Threading.Tasks.TaskScheduler.TryRunInline(System.Threading.Tasks.Task, Boolean)) 00007000109E4FC0 0000000111b47c85 (MethodDesc 00000001116f5590 + 0x1f5 System.Threading.Tasks.Task.RunContinuations(System.Object)) 00007000109E4FD0 00000001149bd6d1 (MethodDesc 000000011494c2c8 + 0x21 System.Net.LazyAsyncResult.get_IsCompleted()) 00007000109E4FF0 00000001149bdd93 (MethodDesc 000000011494c360 + 0x193 System.Net.LazyAsyncResult.WaitForCompletion(Boolean)) 00007000109E5070 0000000111b4c250 (MethodDesc 00000001116f5708 + 0x60 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].TrySetResult(Int32)), calling (MethodDesc 00000001116f5580 + 0 System.Threading.Tasks.Task.FinishContinuations()) 00007000109E5090 0000000111bb824c (MethodDesc 00000001117027e8 + 0x3c System.Threading.Tasks.TaskFactory`1+FromAsyncTrimPromise`1[[System.Int32, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib]].Complete(System.__Canon, System.Func`3, System.IAsyncResult, Boolean)), calling (MethodDesc 00000001116f5708 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].TrySetResult(Int32)) 00007000109E50D0 00000001149bdab9 (MethodDesc 000000011494c330 + 0x159 System.Net.LazyAsyncResult.Complete(IntPtr)) 00007000109E5130 00000001149bd8ca (MethodDesc 000000011494c300 + 0xea System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)) 00007000109E5140 00000001032b0e4b libcoreclr.dylib!Buffer::BlockCopy(ArrayBase*, int, ArrayBase*, int, int) + 0x2fb, calling libcoreclr.dylib!memmove 00007000109E5170 00000001149b7f5d (MethodDesc 000000011494c958 + 0x2d System.Net.AsyncProtocolRequest.CompleteUser(Int32)), calling (MethodDesc 000000011494c300 + 0 System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)) 00007000109E5190 00000001149c91e6 (MethodDesc 0000000114ac5880 + 0x1d6 System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)), calling (MethodDesc 000000011494c958 + 0 System.Net.AsyncProtocolRequest.CompleteUser(Int32)) 00007000109E51A0 0000000111b86532 (MethodDesc 00000001116fb858 + 0x62 System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef)) 00007000109E5230 00000001149c979b (MethodDesc 0000000114ac58e0 + 0x5b System.Net.Security.SslStreamInternal.ReadFrameCallback(System.Net.AsyncProtocolRequest)), calling (MethodDesc 0000000114ac5880 + 0 System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest)) 00007000109E5260 00000001149b7e68 (MethodDesc 000000011494c918 + 0x38 System.Net.AsyncProtocolRequest.CompleteRequest(Int32)) 00007000109E5280 00000001149b7bce (MethodDesc 0000000114aa31a0 + 0x22e System.Net.FixedSizeReader+d__1.MoveNext()), calling (MethodDesc 000000011494c918 + 0 System.Net.AsyncProtocolRequest.CompleteRequest(Int32)) 00007000109E5320 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E5370 0000000111b86532 (MethodDesc 00000001116fb858 + 0x62 System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef)) 00007000109E53A0 0000000111b47b8e (MethodDesc 00000001116f5590 + 0xfe System.Threading.Tasks.Task.RunContinuations(System.Object)), calling (MethodDesc 00000001116fb858 + 0 System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean, System.Threading.Tasks.Task ByRef)) 00007000109E5450 0000000111b4c250 (MethodDesc 00000001116f5708 + 0x60 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].TrySetResult(Int32)), calling (MethodDesc 00000001116f5580 + 0 System.Threading.Tasks.Task.FinishContinuations()) 00007000109E5470 0000000111b95044 (MethodDesc 00000001116fd9a0 + 0x184 System.Threading.Tasks.TaskFactory`1[[System.Int32, System.Private.CoreLib]].FromAsyncCoreLogic(System.IAsyncResult, System.Func`2, System.Action`1, System.Threading.Tasks.Task`1, Boolean)), calling (MethodDesc 00000001116f5708 + 0 System.Threading.Tasks.Task`1[[System.Int32, System.Private.CoreLib]].TrySetResult(Int32)) 00007000109E5490 0000000111b94f1d (MethodDesc 00000001116fd9a0 + 0x5d System.Threading.Tasks.TaskFactory`1[[System.Int32, System.Private.CoreLib]].FromAsyncCoreLogic(System.IAsyncResult, System.Func`2, System.Action`1, System.Threading.Tasks.Task`1, Boolean)), calling (MethodDesc 00000001116fd9a0 + 0xa5 System.Threading.Tasks.TaskFactory`1[[System.Int32, System.Private.CoreLib]].FromAsyncCoreLogic(System.IAsyncResult, System.Func`2, System.Action`1, System.Threading.Tasks.Task`1, Boolean)) 00007000109E54A0 00000001146e2684 (MethodDesc 00000001147b4fe0 + 0x34 Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs.System.IAsyncResult.get_CompletedSynchronously()), calling (MethodDesc 00000001147b4f50 + 0 Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs.get_CompletedSynchronously()) 00007000109E54E0 00000001146e25d6 (MethodDesc 0000000114946620 + 0x106 Microsoft.Azure.Amqp.Transport.TransportStream.CompleteOperation(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E5560 00000001146e4cce (MethodDesc 0000000114946610 + 0x9e Microsoft.Azure.Amqp.Transport.TransportStream.OnIOComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)), calling (MethodDesc 0000000114946620 + 0 Microsoft.Azure.Amqp.Transport.TransportStream.CompleteOperation(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs)) 00007000109E55A0 00000001146e4777 (MethodDesc 00000001148fe398 + 0x527 Microsoft.Azure.Amqp.Transport.TcpTransport.HandleReadComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs, Boolean, Boolean)) 00007000109E55B0 00007fffaa34b4ce libsystem_pthread.dylib!_pthread_cond_signal + 0x285, calling libsystem_pthread.dylib!_pthread_cond_updateval 00007000109E5710 00000001146e4185 (MethodDesc 00000001148fe378 + 0xb5 Microsoft.Azure.Amqp.Transport.TcpTransport.OnReadComplete(System.Object, System.Net.Sockets.SocketAsyncEventArgs)), calling (MethodDesc 00000001148fe398 + 0 Microsoft.Azure.Amqp.Transport.TcpTransport.HandleReadComplete(Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs, Boolean, Boolean)) 00007000109E5760 0000000114841996 (MethodDesc 00000001147b8180 + 0x36 System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs)) 00007000109E5780 000000011484201d (MethodDesc 00000001147b82f8 + 0x1d System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(System.Object)) 00007000109E5790 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E57E0 0000000114843237 (MethodDesc 00000001147b8478 + 0x57 System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncSuccess(Int32, System.Net.Sockets.SocketFlags)), calling (MethodDesc 00000001116edae8 + 0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E5800 0000000114844984 (MethodDesc 00000001147b8708 + 0x14 System.Net.Sockets.SocketAsyncEventArgs.CompletionCallback(Int32, System.Net.Sockets.SocketFlags, System.Net.Sockets.SocketError)), calling (MethodDesc 00000001147b8478 + 0 System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncSuccess(Int32, System.Net.Sockets.SocketFlags)) 00007000109E5810 00000001032f452f libcoreclr.dylib!JIT_ChkCastAny + 0x1f, calling libcoreclr.dylib!ObjIsInstanceOfNoGC 00007000109E5820 00000001148438ce (MethodDesc 00000001147b8598 + 0x2e System.Net.Sockets.SocketAsyncEventArgs.TransferCompletionCallbackCore(Int32, Byte[], Int32, System.Net.Sockets.SocketFlags, System.Net.Sockets.SocketError)), calling (MethodDesc 00000001147b8708 + 0 System.Net.Sockets.SocketAsyncEventArgs.CompletionCallback(Int32, System.Net.Sockets.SocketFlags, System.Net.Sockets.SocketError)) 00007000109E5830 000000011484ff7b (MethodDesc 0000000114aa4488 + 0x2b System.Net.Sockets.SocketAsyncContext+ReceiveOperation.InvokeCallback()) 00007000109E5840 000000011484fd7d (MethodDesc 00000001148fac68 + 0x1d System.Net.Sockets.SocketAsyncContext+AsyncOperation+<>c.b__14_0(System.Object)) 00007000109E5850 0000000111b0d051 (MethodDesc 00000001116edae8 + 0x71 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)) 00007000109E58A0 0000000111b87ce0 (MethodDesc 00000001116fbf80 + 0x1a0 System.Threading.ThreadPoolWorkQueue.Dispatch()) 00007000109E58E0 00000001030c5296 libcoreclr.dylib!CorUnix::CSynchCache::Get(CorUnix::CPalThread*, int, CorUnix::CSynchWaitController**) + 0x76, calling libcoreclr.dylib!CorUnix::InternalLeaveCriticalSection(CorUnix::CPalThread*, _CRITICAL_SECTION*) 00007000109E5910 00000001033a0911 libcoreclr.dylib!CallDescrWorkerInternal + 0x7c 00007000109E5930 00000001032907ed libcoreclr.dylib!MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 0x3ad, calling libcoreclr.dylib!CallDescrWorkerInternal 00007000109E5A20 00000001032904f5 libcoreclr.dylib!MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 0xb5, calling libcoreclr.dylib!ArgIteratorTemplate::SizeOfArgStack() 00007000109E5B00 00000001032ab0d5 libcoreclr.dylib!QueueUserWorkItemManagedCallback(void*) + 0xa5, calling libcoreclr.dylib!MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) 00007000109E5C10 00000001032526da libcoreclr.dylib!ManagedThreadBase_DispatchOuter(ManagedThreadCallState*) + 0x17a 00007000109E5D30 0000000103252d93 libcoreclr.dylib!ManagedThreadBase::ThreadPool(ADID, void (*)(void*), void*) + 0x33, calling libcoreclr.dylib!ManagedThreadBase_DispatchOuter(ManagedThreadCallState*) 00007000109E5D70 0000000103247a0c libcoreclr.dylib!ManagedPerAppDomainTPCount::DispatchWorkItem(bool*, bool*) + 0x10c, calling libcoreclr.dylib!ManagedThreadBase::ThreadPool(ADID, void (*)(void*), void*) 00007000109E5D90 00007fffaa16a2af libsystem_c.dylib!clock_gettime + 0xc6, calling libsystem_c.dylib!_mach_boottime_usec 00007000109E5E20 000000010324739a libcoreclr.dylib!PerAppDomainTPCountList::GetAppDomainIndexForThreadpoolDispatch() + 0x7a 00007000109E5E60 0000000103271d40 libcoreclr.dylib!ThreadpoolMgr::WorkerThreadStart(void*) + 0x3f0 00007000109E5E70 00000001032da281 libcoreclr.dylib!EEHeapFreeInProcessHeap(unsigned int, void*) + 0x31, calling libcoreclr.dylib!HeapFree 00007000109E5EC0 00000001030cedd8 libcoreclr.dylib!CorUnix::CPalThread::ThreadEntry(void*) + 0x148 00007000109E5EF0 00007fffaa34c93b libsystem_pthread.dylib!_pthread_body + 0xb4 00007000109E5F10 00007fffaa34c887 libsystem_pthread.dylib!_pthread_body, calling libsystem_pthread.dylib!_pthread_body 00007000109E5F50 00007fffaa34c08d libsystem_pthread.dylib!thread_start + 0xd, calling libsystem_pthread.dylib!_pthread_start (lldb) ```" +24143 area-System.Net Allow receiving a Socket from a file handle It would be nice to have the ability to receive a socket from a file handle and be able to call Accept() on it. This is useful to enable functionality like [systemd socket activation](http://0pointer.de/blog/projects/socket-activation.html). Ex. ```cs var listeningSocket = Socket.FromFileHandle(handle); //socket is already bound by the service manager var connectionScoket = listeningSocket.Accept(); //Send data through connectionSocket ``` +24145 area-System.Text Consider Span overloads on Regex classes **edit by @ViktorHofer, moved initial post down.** Spanifying Regex removes (a) unnecessary string allocations that tend to decrease perf and (b) allows different types of Memory to be processed. **API proposal and implementation:** https://github.com/ViktorHofer/corefx/pull/1 ## Proposed APIs This diff contains the Memory overloads and the MatchEvaluator overloads. See discussion above if we should introduce new ref types for Match, Group & Capture. ```diff namespace System.Text.RegularExpressions { public partial class Capture { internal Capture() { } public int Index { get { throw null; } } public int Length { get { throw null; } } public string Value { get { throw null; } } + public ReadOnlySpan ValueSpan { get { throw null; } } public override string ToString() { throw null; } } public partial class Match : System.Text.RegularExpressions.Group { internal Match() { } public static System.Text.RegularExpressions.Match Empty { get { throw null; } } public virtual System.Text.RegularExpressions.GroupCollection Groups { get { throw null; } } public System.Text.RegularExpressions.Match NextMatch() { throw null; } public virtual string Result(string replacement) { throw null; } + public virtual bool TryResult(string replacement, Span destination, out int charsWritten) { throw null; } public static System.Text.RegularExpressions.Match Synchronized(System.Text.RegularExpressions.Match inner) { throw null; } } public partial class Regex : System.Runtime.Serialization.ISerializable { + public ref struct SplitEnumerator + { + public ReadOnlySpan Current { get { throw null; } } + public SplitEnumerator GetEnumerator() { throw null; } + public bool MoveNext() { throw null; } + } protected internal System.Collections.Hashtable caps; protected internal System.Collections.Hashtable capnames; protected internal int capsize; protected internal string[] capslist; protected internal System.Text.RegularExpressions.RegexRunnerFactory factory; public static readonly System.TimeSpan InfiniteMatchTimeout; protected internal System.TimeSpan internalMatchTimeout; protected internal string pattern; protected internal System.Text.RegularExpressions.RegexOptions roptions; protected Regex() { } protected Regex(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { } public Regex(string pattern) { } public Regex(string pattern, System.Text.RegularExpressions.RegexOptions options) { } public Regex(string pattern, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { } public static int CacheSize { get { throw null; } set { } } [System.CLSCompliant(false)] protected System.Collections.IDictionary Caps { get { throw null; } set { } } [System.CLSCompliant(false)] protected System.Collections.IDictionary CapNames { get { throw null; } set { } } public System.TimeSpan MatchTimeout { get { throw null; } } public System.Text.RegularExpressions.RegexOptions Options { get { throw null; } } public bool RightToLeft { get { throw null; } } public static string Escape(string str) { throw null; } + public static bool TryEscape(ReadOnlySpan str, Span destination, out int charsWritten) { throw null; } public string[] GetGroupNames() { throw null; } public int[] GetGroupNumbers() { throw null; } public string GroupNameFromNumber(int i) { throw null; } public int GroupNumberFromName(string name) { throw null; } protected void InitializeReferences() { } public bool IsMatch(string input) { throw null; } + public bool IsMatch(ReadOnlySpan input) { throw null; } public bool IsMatch(string input, int startat) { throw null; } public static bool IsMatch(string input, string pattern) { throw null; } public static bool IsMatch(string input, string pattern, System.Text.RegularExpressions.RegexOptions options) { throw null; } public static bool IsMatch(string input, string pattern, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { throw null; } + public static bool IsMatch(ReadOnlySpan input, string pattern, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None, System.TimeSpan? matchTimeout = null) { throw null; } public System.Text.RegularExpressions.Match Match(string input) { throw null; } + public System.Text.RegularExpressions.Match Match(ReadOnlyMemory input) { throw null; } public System.Text.RegularExpressions.Match Match(string input, int startat) { throw null; } public System.Text.RegularExpressions.Match Match(string input, int beginning, int length) { throw null; } public static System.Text.RegularExpressions.Match Match(string input, string pattern) { throw null; } public static System.Text.RegularExpressions.Match Match(string input, string pattern, System.Text.RegularExpressions.RegexOptions options) { throw null; } public static System.Text.RegularExpressions.Match Match(string input, string pattern, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { throw null; } + public static System.Text.RegularExpressions.Match Match(ReadOnlyMemory input, string pattern, System.Text.RegularExpressions.RegexOptions options = RegexOptions.None, System.TimeSpan? matchTimeout = null) { throw null; } public System.Text.RegularExpressions.MatchCollection Matches(string input) { throw null; } + public System.Text.RegularExpressions.MatchCollection Matches(ReadOnlyMemory input) { throw null; } public System.Text.RegularExpressions.MatchCollection Matches(string input, int startat) { throw null; } public static System.Text.RegularExpressions.MatchCollection Matches(string input, string pattern) { throw null; } public static System.Text.RegularExpressions.MatchCollection Matches(string input, string pattern, System.Text.RegularExpressions.RegexOptions options) { throw null; } public static System.Text.RegularExpressions.MatchCollection Matches(string input, string pattern, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { throw null; } + public static System.Text.RegularExpressions.MatchCollection Matches(ReadOnlyMemory input, string pattern, System.Text.RegularExpressions.RegexOptions options = RegexOptions.None, System.TimeSpan? matchTimeout = null) { throw null; } public string Replace(string input, string replacement) { throw null; } public string Replace(string input, string replacement, int count) { throw null; } + public bool TryReplace(ReadOnlySpan input, string replacement, Span destination, out int charsWritten, int count = -1) { throw null; } public string Replace(string input, string replacement, int count, int startat) { throw null; } public static string Replace(string input, string pattern, string replacement) { throw null; } public static string Replace(string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options) { throw null; } public static string Replace(string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { throw null; } + public static bool TryReplace(ReadOnlySpan input, string pattern, string replacement, Span destination, out int charsWritten, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None, System.TimeSpan? matchTimeout = null) { throw null; } public static string Replace(string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator) { throw null; } public static string Replace(string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options) { throw null; } public static string Replace(string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { throw null; } + public static bool TryReplace(ReadOnlySpan input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, Span destination, out int charsWritten, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None, System.TimeSpan? matchTimeout = null) { throw null; } public string Replace(string input, System.Text.RegularExpressions.MatchEvaluator evaluator) { throw null; } public string Replace(string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count) { throw null; } + public bool TryReplace(ReadOnlySpan input, System.Text.RegularExpressions.MatchEvaluator evaluator, Span destination, out int charsWritten, int count = -1) { throw null; } public string Replace(string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count, int startat) { throw null; } public string[] Split(string input) { throw null; } public string[] Split(string input, int count) { throw null; } public string[] Split(string input, int count, int startat) { throw null; } + public SplitEnumerator Split(ReadOnlySpan input, int count = 0) { throw null; } public static string[] Split(string input, string pattern) { throw null; } public static string[] Split(string input, string pattern, System.Text.RegularExpressions.RegexOptions options) { throw null; } public static string[] Split(string input, string pattern, System.Text.RegularExpressions.RegexOptions options, System.TimeSpan matchTimeout) { throw null; } + public static SplitEnumerator Split(ReadOnlySpan input, string pattern, RegexOptions options = RegexOptions.None, TimeSpan? matchTimeout = null) { throw null; } void System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo si, System.Runtime.Serialization.StreamingContext context) { } public override string ToString() { throw null; } public static string Unescape(string str) { throw null; } + public static bool TryUnescape(ReadOnlySpan str, Span destination, out int charsWritten) { throw null; } protected bool UseOptionC() { throw null; } protected bool UseOptionR() { throw null; } protected internal static void ValidateMatchTimeout(System.TimeSpan matchTimeout) { } } } ``` ## Discussion points ### Ref struct for Match and siblings (Capture & Group). I had a discussion with Jan offline and he pointed out that we might want to introduce a `ref struct MatchValue` type that is returned by APIs that take Span/Memory as an input. > The problem with just using the current `class Match` is that it gives you unsecure access to the Span. For example, you can send the Match object to other thread and start working on the Span there, while the current thread unwinds and frees the memory. ref struct MatchValue would avoid this issue (And also saved the alllocation) The issues with that is that we currently have the following hiearchy: Match --> Group --> Capture and that Groups and Match contain collections of Captures/Groups. > Yes, the flip from class to valuetype tends to be like this. E.g. when we have introduced ValueTask to CoreFX, a bunch of parallel ValueSomething types went with it. It is a topic for API review discussion One option is to just not have Span version of the APIs that returns these collections or have callbacks ### startat overload > For things like Regex.Replace, the startat argument means copy everything up to startat to the destination Span, and then run regular Replace that does not take startat method. So this looks like a convenience method to me - it saves you from typing a tiny bit of code in rare cases to achieve the same effect. Should we add these startat convenience overloads for Span also? If yes, this commit should be reverted https://github.com/ViktorHofer/corefx/pull/1/commits/bf7d7f986faaa212476ceeac09ab71c8ab6c7fd5 ### RegexSplitEnumerator RTL yield order If you call the Span version of Regex.Split and pass `RegexOptions.RightToLeft` to it the yield order of the enumerator will also be right to left as we start looking for matches from right to left. The current implementation (which is not an enumerator!) reverses the captured strings before returning. ### RegexSplitEnumerator GetEnumerator (see ref diff) > I'm not aware of any other cases in the BCL where we have a GetEnumerator method like this on a struct enumerator. I understand you want it to be able to directly foreach the results without introducing an enumerable struct to serve as the return type, but I'm not sure this is a pattern we want to introduce. You should be sure to highlight this as part of any API review discussion. +24147 area-System.Net Remove invalid NameResolution tests The Dns_GetHostEntryAsync_* tests are fundamentally invalid because it's possible for the broadcast address, 255.255.255.255, to have a DNS mapping via manually modifying the hosts file. This was actually happening on Mac systems as well as a virtual environment running on top of that (i.e. Windows on Parallels). Ref: https://github.com/dotnet/corefx/issues/23992#issuecomment-330250642 Contributes to #23992 +24148 area-System.Data 2nd connection to mirrored server with timeout==0 hangs forever. Customer reported a bug for hanging connection to mirrored SQL Server. When customer creates and opens ***2 connections*** one after another to ***mirrored server*** with ***connection timeout set to 0***, the 2nd connection hangs infinitely. +24150 area-System.Drawing System.Drawing - Add Graphics tests based on Mono's test suite Adds unit tests for System.Drawing.Graphics based on Mono's test suite. +24151 area-System.Drawing Add unit tests for System.Drawing.Imaging.Metafile based on Mono's unit tests - Import tests for the `Metafile` class based on Mono's unit test +24152 area-System.Drawing System.Drawing - Add tests for Bitmap based on Mono's unit test suite +24153 area-Infrastructure Perf tests are broken when run from project test directory I'm trying to build and run the System.Collections perf tests. Following the instructions at https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md, I did a: ``` git clean -xdf build -release ``` from the root of my repo, and then from `src\System.Collections\tests\Performance` did: ``` msbuild /t:BuildAndTest /p:Performance=true /p:ConfigurationGroup=Release /p:TargetOS=Windows_NT ``` and I get the error: ``` The application to execute does not exist: 'corefx\bin\tests\System.Collections.Performance.Tests\netcoreapp-Windows_NT-Release-x64\PerfRunner.exe' +24156 area-System.Collections Have HashSet implement ICollection ### Motive The `ICollection` (non-generic) interface, is a pathway to getting the `Count` property of a collection in a non-generic way. This is very common in converters or some other types that take in any object and has to deal with it differently if it's a collection. Most common collections in .NET (`List`, `Dictionary`, `Collection`, also implement `ICollection`, so it falls through the '[countable](https://github.com/dotnet/corefx/issues/23578)' criteria. However, the [`HashSet`](https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/HashSet.cs) class doesn't. So as explained in #23578, in order to obtain the `Count` of a `HashSet`, we'll have to use reflection if we don't know `T` at compile time (for example we have an `object` typed variable that we know it contains a `HashSet`, but `T` can be anything, and is irrelevant to be able to get the count. ### Suggestion I'd prefer seeing this issue addressed as it should be in the first place, which is having a non-generic middle interface that signifies the `Count` property, but meanwhile, having the `HashSet` implement `ICollection` will bring the `HashSet` to this countable group as well, even as a temporary solution. ### Things to consider - If we do implement `ICountable`, we have another class to take care of before getting rid of the `ICollection` part, if we want to. - Please comment on [EDIT] Fixed code link by @karelz +24157 area-System.ComponentModel Dataannotations length fix - Formatting exception Fixes #24064. +24158 area-System.Text Port Regex.Compiled in-memory compilation of regex patterns from Desktop ## Changes - Reenabled compilation of regex patterns when compiled flag is set - Cleanup ref sources as they aren't compiled against netstandard anymore - Reenable more tests for uap/uapaot ## Issues The `CompileToAssembly` API (RegexTypeCompiler.cs) depends on `System.Reflection.Emit.AssemblyBuilder.Save` (https://github.com/dotnet/corefx/issues/4491) which isn't in Core yet. => No pre-compilation of regex patterns into assembly possible ## Potential future optimization The current Regex implementation produces a lot of HEAP pressure. Using the static Regex methods doesn't reduce the number of allocations as they are just creating a new Regex object underneath and calling its instance method. Something to investigate further but not scope of this change. ## Performance number Release configuration on my machine (i7 2 physical cores) with the latest regex-redux benchmark: Compiled: ``` TotalSeconds : 11.731449 (varies between 11.5 and 15.5) ``` Non-Compiled: ``` TotalSeconds : 35.3416494 (varies between 35 and 42) ``` 31.19s on benchmarkgame with 4 physical core +24159 area-System.IO "Test: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ValidArgumentCombinationsWithPath_ModesOpenOrCreate failed with ""System.IO.IOException""" Failed test: System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ValidArgumentCombinationsWithPath_ModesOpenOrCreate Configuration: outerloop_netcoreapp_win7_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_release/252/testReport/System.IO.MemoryMappedFiles.Tests/MemoryMappedFileTests_CreateFromFile/ValidArgumentCombinationsWithPath_ModesOpenOrCreate_mode__Open__mapName__null__capacity__10000__access__CopyOnWrite_/ MESSAGE: ~~~ System.IO.IOException : The operation completed successfully ~~~ STACK TRACE: ~~~ at System.IO.MemoryMappedFiles.MemoryMappedView.Flush(UIntPtr capacity) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedView.Windows.cs:line 125 at System.IO.MemoryMappedFiles.MemoryMappedViewAccessor.Dispose(Boolean disposing) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.IO.MemoryMappedFiles\src\System\IO\MemoryMappedFiles\MemoryMappedViewAccessor.cs:line 44 at System.IO.MemoryMappedFiles.Tests.MemoryMappedFilesTestBase.CreateAndValidateViews(MemoryMappedFile mmf, Int64 capacity, MemoryMappedFileAccess access) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFilesTestsBase.cs:line 123 at System.IO.MemoryMappedFiles.Tests.MemoryMappedFilesTestBase.ValidateMemoryMappedFile(MemoryMappedFile mmf, Int64 expectedCapacity, MemoryMappedFileAccess expectedAccess, HandleInheritability expectedInheritability) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFilesTestsBase.cs:line 96 at System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_CreateFromFile.ValidArgumentCombinationsWithPath_ModesOpenOrCreate(FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CreateFromFile.Tests.cs:line 323 ~~~ +24160 area-System.IO Support folder names ending with a period? "I have an issue related to Windows folder names that end with a period. In my case this was caused by a cloud storage desktop sync application where creating folders in the cloud like ""Some Corp Ltd."" is possible. Since there was already work done to support long filenames in .NET Core (see https://github.com/dotnet/corefx/issues/645) I thought it might be feasible that this issue might be addressed as well. I'm aware of libraries like [AlphaFS](http://alphafs.alphaleonis.com/) (using [LongFullPath](http://alphafs.alphaleonis.com/doc/2.1/api/html/5E9EE47E.htm)) that work with the full framework, but I wondering if anything is planned for .NET Core (I'm assuming this isn't an issue for Linux). I understand that it's an edge case, but currently using Directory.Exists in this situation returns false which is a misleading IMHO. @JeremyKuhne is it possible to support folders with names ending with a period in System.IO.FileSystem? " +24161 area-System.Linq Please implement SymmetricExceptWith in LINQ ## Motive `HashSet` provides a wonderful method that allows getting the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) of two collections, that is, only the values that exists in either one of the collections, but not in both. ## Use case Imagine you have an existing store entity and a client entity that just came in to be saved. The entity has a collection of related entities (1 to M). You want to mess with those related entities that were either added or removed, but not the others. ## Implementation Add the following methods to the `Enumerable` class: ```c# public static SymmetricExceptWith(this IEnumerable collection, IEnumerable other); public static SymmetricExceptWith(this IEnumerable collection, IEnumerable other, IEqualityComparer comparer); ``` If this is approved, I'm willing to implement this. Area: System.Linq [EDIT] Add C# syntax highlight by @karelz +24163 area-System.IO Add testing of FileStream not truncating files when opening fails Test of #24081 (succeeds after dotnet/coreclr#14043) +24165 area-System.Runtime Should we allow multiply TimeSpan with number? Instead of ```C# var day = TimeSpan.FromDay(1) var twoDay = TimeSpan.FromDay(2); var halfDay = TimeSpan.FromDay(0.5f); var eDay = TimeSpan.FromDay(Math.E); var goldenDay = TimeSpan.FromDay((1 + Math.Sqrt(5)) / 2); ``` If we could multiply TimeSpan with number it would be easier ```C# var day = TimeSpan.FromDay(1); var twoDay = 2 * day; var halfDay = day / 2; var eDay = day * Math.E; var goldenDay = day * (1 + Math.Sqrt(5)) / 2; ``` +24166 area-System.Drawing Fix HatchBrush constructor validation, renable more passing tests on Unix +24167 area-System.Drawing HatchStyle.Max is incorrect "In the docs for HatchStyle, `HatchStyle.Max` is documented as ""Specifies hatch style SolidDiamond."" https://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.hatchstyle(v=vs.110).aspx However, in [corefx](https://github.com/dotnet/corefx/blob/c0f506dc24f9c682fd69441b4fb3259b1a5f55d3/src/System.Drawing.Common/src/System/Drawing/Drawing2D/HatchStyle.cs#L65), it is defined as `LargeGrid` Is this a bug in corefx/.NET framework, or the documentation? I think the value of `Max` should be fixed to match the value in GDI+, and to actually be the largest value of `HatchStyle`" +24169 area-Meta .NET Core Version of System.Web.UI.HtmlTextWriter Does such a thing exist? What is the alternative? I'm using this type to do XSL transforms like so: ```c# private static Stream XslTransform(XDocument document, XmlReader xslReader) { var xslTransform = new XslCompiledTransform(); var stringBuilder = new StringBuilder(); using (var stringWriter = new StringWriter(stringBuilder)) { using (var htmlWriter = new HtmlTextWriter(stringWriter)) { xslTransform.Load(xslReader); xslTransform.Transform(document.CreateReader(), new XsltArgumentList(), htmlWriter); htmlWriter.Flush(); } } return new MemoryStream(Encoding.UTF8.GetBytes(stringBuilder.ToString())); } ``` [EDIT] Add C# syntax highlighting by @karelz +24171 area-System.Security Fix ECDsa ExportParameters segfault ECDSa.Export(Explicit)Parameters(includePrivateParameters:true) on an EC object containing only a public key will currently segfault on Linux. It is supposed to throw a CryptographicException, so this commit changes it to do so. cc: @bartonjs @morganbr 1.0, 1.1, and 2.0 PR's to come after merging this one. +24173 area-System.Net Provide an (at least temporary) non-global ManagedHandler opt-in mechanism Right now the only way to opt-in to using ManagedHandler is via an environment variable. That requires a process-wide setting which makes it impossible to create an individual HttpClient{Handler} that uses ManagedHandler; another thread could be instantiating one at the same time and would pick up the setting. This is why we had to disable parallel execution of our System.Net.Http test suite. We still haven't yet figured out the final model via which we'll enable usage of ManagedHandler. For now, though, I'm adding a thread-local switch, to allow opting in a single HttpClientHandler construction. This makes it possible to re-enable our test parallelism, which this PR also does (and in the process drops outerloop execution time by 3x on my machine), but it also enables us to make progress on https://github.com/dotnet/corefx/issues/23152, which is blocked by having a global-only setting. cc: @geoffkizer, @davidsh, @wfurt, @Priya91 +24174 area-Meta Deliver SignalR Dependencies SignalR just released an alpha using several components from corefxlab. We need to productize these components: - [x] [System.Binary](https://github.com/dotnet/corefxlab/tree/master/src/System.Binary) Issue: #24144 PR: #24400 - [x] [System.Binary.Base64](https://github.com/dotnet/corefxlab/tree/master/src/System.Binary.Base64) Issue: #24568 - [x] [System.Text.Primitives](https://github.com/dotnet/corefxlab/tree/master/src/System.Text.Primitives) Issue: #24607 - [x] [System.Threading.Tasks.Channels](https://github.com/dotnet/corefxlab/tree/master/src/System.Threading.Tasks.Channels) Issue: #24823 - [x] [System.IO.Pipelines](https://github.com/dotnet/corefxlab/tree/master/src/System.IO.Pipelines) Issue: #24824 - ~[System.Text.Encodings.Web.Utf8](https://github.com/dotnet/corefxlab/tree/master/src/System.Text.Encodings.Web.Utf8) Issue: #24825~ - [x] [System.IO.Compression.Brotli](https://github.com/dotnet/corefxlab/tree/master/src/System.IO.Compression.Brotli) Issue: #24826 - [x] [System.Collections.Sequences](https://github.com/dotnet/corefxlab/tree/master/src/System.Collections.Sequences) Issue: #25105 - ~[System.Text.Formatting](https://github.com/dotnet/corefxlab/tree/master/src/System.Text.Formatting) Issue: #25249~ Edit: Not needed by SignalR +24175 area-System.Data SqlClient: Connection to Sql Server over network with named instance fails to connect "When attempting to connect to a Sql Server instance over the network, with named instances, SqlConnection throws error 26 on .NET Core with the SqlClient nuget library. ### Sample Code ```csharp using System; using System.Data.SqlClient; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var sqlString = ""Data Source=192.168.0.3\\SQLEXPRESS;Initial Catalog=Database;User ID=sa;Password=""; var conn = new SqlConnection(sqlString); conn.Open(); conn.Close(); Console.WriteLine(""Hello World!""); } } } ``` This sample code was tested working on .NET 4.5 and 4.6.1, but breaks on .NET Core 2.0, 1.1 and 1.0, along with versions 4.4, 4.3, and 4.1 of the System.Data.SqlClient library on nuget. I've been able to only reproduce this on Windows. The server is configured for remote access as I'm able to connect to the remote instance using the same sample code full .NET Framework. The expected output should just be `Hello World!` and the program terminating, which happens on the full framework. However the following exception gets thrown instead on .NET Core: ``` System.Data.SqlClient.SqlException occurred HResult=0x80131904 Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) Source=Core .Net SqlClient Data Provider StackTrace: at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at TestSqlAccess.Program.Main(String[] args) in C:\src\PlaneStatus\TestSqlAccess\Program.cs:line 9 ``` ### Temporary Workaround I figured out for now was using `hostname,port` instead of the `hostname\\instance` works and connects as intended, however I'd like to use a named instance instead of having to rely on ports. This workaround does not work for Linux, at least according to my tests, as it throws other exceptions even with this workaround, mostly being able to not connect. I haven't checked Mac since I don't have access to one." +24176 area-System.IO Fix memory map imports "Imports lost the last error attribute. Add it back and change the results to be the more correct ""bool"". Tweak the usage based on the new return type. #24159" +24177 area-Infrastructure Update build to clang/llvm 3.9 Update scripts, docs and build pipeline docker images to clang/llvm/lldb 3.9 +24179 area-Serialization Port the assembly load path change into 2.0 branch #22558 This change need be ported into 2.0 branch so SGEN support 2.0 +24180 area-System.Memory Provide a stateful reader writer of span's "ref #24144 When using span to read/write a block of memory you often end up with the following pattern ```c# var myspan = [someplace a span is allocated] span.Write[TBD](someValue); span = span.Slice(sizeof(typeof(someValue)); span.Write[TBD](someOtherValue); span = span.Slice(....... ``` Now obviously that code is not 100% representative of real code but the overall pattern is. I have used span in a couple of real world apps and the pattern ends up being a mess. Write/Read then slice, Write/Read then slice again. It seems that as it is a very common pattern (from my use anyway) the abstraction that is often come up with is a struct wrapper that can ""hide"" that slicing away and instead ""advance"" the span on writes. Something like ```c# public struct BigEndianWriter { private Span _innerSpan; public BigEndianWriter(Span innerSpan) => _innerSpan; } public struct LittleEndianWriter { private Span _innerSpan; public LittleEndianWriter(Span innerSpan) => _innerSpan; } public struct BigEndianReader { private ReadOnlySpan _innerSpan; public BigEndianReader(ReadOnlySpan innerSpan) => _innerSpan; } public struct LittleEndianReader { private ReadOnlySpan _innerSpan; public LittleEndianReader(ReadOnlySpan innerSpan) => _innerSpan; } ``` The kinds of methods you would want to see on such a struct would be ```c# //Readers only public byte ReadByte(); public sbyte ReadByteS(); public short ReadInt16(); public ushort ReadUInt16(); public uint ReadUInt32(); public int ReadInt32(); public long ReadInt64(); public ulong ReadUInt64(); //Writers only public void WriteByte(byte value); public void WriteSByte(sbyte value); public void WriteUInt16(ushort value); public void WriteInt16(short value); public void WriteInt32(int value); public void WriteUInt32(uint value); public void WriteInt64(long value); public void WriteUInt64(ulong value); //Common public int Length => _innerSpan.Length; public Span Span => _innerSpan; public void Advance(int count); ``` If you want to ""peek/poke"" then you can just get out the span via `reader.Span` there is no need to provide them on the type. [EDIT] Add C# syntax highlight by @karelz [EDIT] Updated to more concrete design" +24181 area-System.Data Fix for 2nd Connection hangs in Mirroring Environment This is a fix for Issue: https://github.com/dotnet/corefx/issues/24148 Customer reported a bug for hanging connection to mirrored SQL Server. When customer creates and opens ***2 connections*** one after another to ***mirrored server*** with ***connection timeout set to 0***, the 2nd connection hangs infinitely. +24182 area-System.Net SFTP connection throws 'Device not Configured' Error "Hi, I am trying to connect to an SFTP server and I receive the following error: nerException [Exception]:{System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (0x00000005): Device not configured\n at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)\n at System.Net.Dns.ResolveCallback(Object context)\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)\n at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult)\n at System.Net.Sockets.Socket.DoDnsCallback(IAsyncResult result, MultipleAddressConnectAsyncResult context)\n at System.Net.Sockets.Socket.DnsCallback(IAsyncResult result)\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)\n at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult)\n at System.Net.Sockets.TcpClient.<>c.... InnerExceptions [ReadOnlyCollection]:Count = 1 Message [string]:""One or more errors occurred. (Device not configured)"" Source [string]:""System.Private.CoreLib"" StackTrace [string]:"" at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)\n at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\n at System.Threading.Tasks.Task.Wait()\n at DayForceImportValidator.FileOperations.SFTP.d__1.MoveNext() in /Users/richblumer/Projects/DayForceImport/DayForceImportValidator/FileOperations/SFTP.cs:line 24"" I have also tried to connect to the Test SFTP provided here, [http://www.sftp.net/public-online-sftp-servers] . That was also unsuccessful. I get a similar error on Windows 10. The error message is **Host is Unknown**. Here is my local environment info: .NET Command Line Tools (2.0.0) Product Information: Version: 2.0.0 Commit SHA-1 hash: cdcd1928c9 Runtime Environment: OS Name: Mac OS X OS Version: 10.12 OS Platform: Darwin RID: osx.10.12-x64 Base Path: /usr/local/share/dotnet/sdk/2.0.0/ Microsoft .NET Core Shared Framework Host Version : 2.0.0 Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d Thanks in advance!" +24183 area-System.Data Adding System.Data.Odbc package and including in metapackage +24185 area-Infrastructure Codeformatter Tool We also use the .NET Codeformatter Tool to ensure the code base maintains a consistent style over time, the tool automatically fixes the code base to conform to the guidelines outlined above. Can this be true if the codeformatter tool had it's last commit on Nov 11, 2016? (Some Issues over there are preventing the use of this tool, just check the issues there.) +24188 area-System.Net IPAddress.GetHashCode based on Marvin instead of ToString This addresses #24117. I've used [`System.Numerics.Hashing.HashHelpers`](https://github.com/dotnet/corefx/blob/master/src/Common/src/System/Numerics/Hashing/HashHelpers.cs) instead of writing a custom implementation as it's deemed good enough for the various `ValueTuple`s. I've used BenchmarkDotNet to compare the current and suggest implementations without caching the results on `GetHashCode` or `ToString` as that represents the more interesting scenario: Invoking `GetHashCode` on a constant stream of new `IPAddress` instances. The differences become less relevant the more instances are being reused. The code for the comparison is [here](https://gist.github.com/i3arnon/e9f85402790fcbd1d14450540f7ec496) and the results are: ``` ini BenchmarkDotNet=v0.10.9, OS=Windows 10 Redstone 2 (10.0.15063) Processor=Intel Core i7-7600U CPU 2.80GHz (Kaby Lake), ProcessorCount=4 Frequency=2835941 Hz, Resolution=352.6166 ns, Timer=TSC .NET Core SDK=2.0.0 [Host] : .NET Core 2.0.0 (Framework 4.6.00001.0), 64bit RyuJIT DefaultJob : .NET Core 2.0.0 (Framework 4.6.00001.0), 64bit RyuJIT ``` | Method | Mean | Error | StdDev | Gen 0 | Allocated | |----------------------- |-----------:|----------:|----------:|-------:|----------:| | GetHashCodeToString | 182.927 ns | 3.5535 ns | 3.4900 ns | 0.0341 | 72 B | | GetHashCodeHashHelpers | 6.685 ns | 0.1681 ns | 0.1936 ns | - | 0 B | +24189 area-System.Security AddIssuerSerial method to KeyInfoX509Data class, does not allow option to specify decimal value instead of default hexadecimal value "The X509Certificate's SerialNumber is ""4F4B6C4CF95644EB850AB136B6ECE012"" When using `KeyInfoX509Data` builder as part of `KeyInfo` class that get assigned to 'KeyInfo' object in `SignedXml` class. The issue is there's no option to encode the SerialNumber as decimal value instead of hexadecimal value. The 3rd party company require it be in decimal value, not hexadecimal value. ```c# var keyInfo = new KeyInfo(); keyInfoData.AddIssuerSerial( x509Certificate2.Issuer, new BigInteger( x509Certificate2.GetSerialNumber() ).ToString(); // This is decimal value ); keyInfo.AddClause(keyInfoData); signedXml.KeyInfo = keyInfo; ``` As a workaround, I had to do this to make it work. ```c# var keyInfo = new KeyInfo(); var xmlDoc2 = new XmlDocument(); var x509IssuerName = xmlDoc2.CreateElement(""X509IssuerName""); x509IssuerName.InnerText = x509Certificate2.Issuer; var x509SerialNumber = xmlDoc2.CreateElement(""X509SerialNumber""); x509SerialNumber.InnerText = new BigInteger(x509Certificate2.GetSerialNumber()).ToString(); var x509IssuerSerial = xmlDoc2.CreateElement(""X509IssuerSerial""); x509IssuerSerial.AppendChild(x509IssuerName); x509IssuerSerial.AppendChild(x509SerialNumber); var x509Data = xmlDoc2.CreateElement(""X509Data""); x509Data.AppendChild(x509IssuerSerial); var keyInfoNode = new KeyInfoNode(); keyInfoNode.Value = x509Data; keyInfo.AddClause(keyInfoNode); signedXml.KeyInfo = keyInfo; ``` This source code in `KeyInfoX509Data.cs` class, line # 165 showed that `NumberStyles.AllowHexSpecifier` is hardcoded that give us non-decimal value as `out h` output value. Also line # 174 would somehow make this possible, as a workaround, but it is marked as internal. :-(" +24190 area-System.Net Need a thread safe mechanism to opt in to ManagedHandler for a single instance of HttpClientHandler The recent changes in HttpClientHandler on OSX to use the native security libraries has caused server certificate validation callbacks to not be supported. The ManagedHandler does support this, but is missing other functionality needed. WCF needs a way to instantiate a single HttpClientHandler instance to explicitly use ManagedHandler. If an instance of a WCF ChannelFactory has been configured to use certificate authentication, we need to be able to use a custom certificate validation callback so need to use ManagedHandler for that instance. If in the same process a different authentication mechanism is requested for a different instance of a WCF ChannelFactory, that instance needs to use the libcurl based HttpClientHandler implementation as it is more feature complete. While we can set the relevant environment variable before calling the HttpClientHandler constructor and then restore it to it's previous state, this isn't thread safe as we could interfere with an instantiation happening outside of WCF on another thread. +24191 area-Serialization Should not Pack Generated Serialization Assembly The serialization assembly generated by SGen should not be packed into the library's nupkg. +24192 area-System.Text System.Text.Encoding.Unicode Performance Slower than .NETFramework2.0 Not sure if this is the correct place but after profiling a library I'm working on I found that System.Text.Encoding.Unicode.GetString was 10x slower in .NETCore/>=.NETFramework4.0. However I found that this was not the case in <=.NETFramework3.5 on my machine. Maybe the performance degregadation could be attributed to something else but it was equivalent benchmarking code ran on .NET Core and >=.NETFramework4.0 and .NETFramework2.0-3.5. The .NETFramework 2.0 was faster for only the System.Text.Encoding.Unicode.GetString which seemed very peculiar. Everything else in the benchmark ran as expected. +24194 area-System.Drawing "[Drawing] Move remaining ""Unix"" files into regular directory structure" "There are only a few files remaining in the ""Unix"" partition of System.Drawing.Common. This PR just does the final relocation of those files into the regular directory structure (e.g. under ""src/System/Drawing/...""). I haven't done much of an attempt to share code between the two versions of these files yet, but I did notice that ImageFormat.cs was easy to share, and did so. It's just a bunch of GUID's, and has nothing platform-specific. I deleted the ""Unix"" version and switched over to the ""Windows"" version everywhere." +24195 area-System.Drawing Don't depend on X11 in the MetafileTests This will allow us to re-enable most tests on Unix. +24196 area-System.Threading Generalized WhenAll, WhenAny, etc. for awaitables. Currently, when I have a number of `Task` instances where I want to perform aggregate operations across all of them (waiting for all of them to complete, for any of them to complete, etc.), I like to use the static `WhenAll`, `WhenAny`, etc. methods. I also like to use `ValueTask` as well for areas where I don't need the heap allocation that a `Task` brings. That said, I can't currently use `WhenAll`, `WhenAny`, etc. because they take sequences of `Task`. While there *are* workarounds, all of them fall short in some way: * I could call `AsTask`, but then that allocates a `Task` and call the existing methods on `Tasks` but the allocations is the situation I was trying to avoid in the first place. * I could write my own, but [the coreclr implementation is quite robust](https://github.com/dotnet/coreclr/blob/eb2e9f90ba3679fa8386c4130f81c8061e8d4ca4/src/mscorlib/src/System/Threading/Tasks/Task.cs#L5501), and I'd certainly miss situations that are coded for in there. This specific example is for `ValueTask` but it really applies to any awaitable type. I also think we'd need a new signature for `WhenAny`; the current implementation returns a `Task`, and the pattern to figure out *which* task finished is to do an equality comparison on the reference returned. I don't really agree that [checking the result as `ValueTask` does](https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs#L90) is the right way (imagine waiting on signals for `true`/`false` results from multiple votes, checking equality on the result won't work here). +24198 area-System.Diagnostics Make GetProcessInfo() for a single PID cheaper on Windows "Fixes #23887 Here we go then. Nothing spectactular, really, but should get the job done. I was wondering how to go about the PID filter parameter and I ended up using the dreaded ""default value: magic number"" approach to disable the PID filter and return all information about all processes like so: `private const int AllProcessIds = -1;` `internal static ProcessInfo[] GetProcessInfos(int processId = AllProcessIds)` Other alternatives I considered were a `Predicate` based one and a `params int[]` based one - none of which seemed particularly more readable or fast. Also, coming up with an entirely new piece of code for the single position retrieval didn't seem like a great idea since the `Interop.NtDll.NtQuerySystemInformation` seems to return one big blob of information about all processes anyway so I would have had to duplicate lots of code." +24199 area-Serialization Remove the line that will copy the generated serializer to the pack. #24191 @shmao @zhenlan +24200 area-Infrastructure Reference assemblies should not be loaded for execution I am getting this build error after upgrading to .net core 2 'Could not load file or assembly 'System.Data.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken= ***' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)' +24201 area-System.Runtime New tests covering GC.TryStartNoGCRegion Regression tests for https://github.com/dotnet/coreclr/pull/14088 and https://github.com/dotnet/coreclr/issues/13736. These tests will fail without the coreclr PR and may fail on other runtimes. cc @sergiy-k @Maoni0 @adityamandaleeka @shimingsg +24202 area-Meta Moving Microsoft.ServiceModel.Syndication from wcf to corefx. The PR is moving Microsoft.ServiceModel.Syndication from wcf to corefx. +24203 area-System.Memory Adding {ReadOnly}Memory debugger view Related PR: https://github.com/dotnet/coreclr/pull/14130 Adding: - MemoryDebugView - ReadOnlyMemoryDebugView Updating Span DebuggerDisplay string and adding the missing DebuggerTypeProxy to ReadOnlySpan. ~Updating implementation of ToArray() so it doesn't have to go through the Span when not necessary.~ Adding workaround for a bug that prevents us from using ToArray() in the debugger type proxy. cc @KrzysztofCwalina, @stephentoub, @shiftylogic +24205 area-System.Collections Add StructuralComparer Quite a few APIs can take an `IEqualityComparer` (most notably `HashSet`, `Dictionary` and `ConcurrentDictionary` ) and having a structural comparer for those would be quite useful. In fact, the non-generic `StructuralComparisons.StructuralEqualityComparer` even already exists! So how about adding the obvious dumb typed implementation on top of it? Pretty much: ```c# public class StructuralComparer : IEqualityComparer { public static IEqualityComparer Default { get; } = new StructuralComparer(); public bool Equals(T x, T y) => StructuralComparisons.StructuralEqualityComparer.Equals(x, y); public int GetHashCode(T obj) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(obj); } ``` And that's all we need :) [EDIT] Add C# syntax highlighting by @karelz +24206 area-System.Data calls to sql server query from EfCore / Ado.net timesout in 100seconds HI, when we run queries from Efcore, with underlying ado.net for sql server ! queries take more than 100seconds, are retried after 100 seconds untill command timeout ot connection timeout. but they do not wiat untill the query executes. i've a sp which runs more than 2 minutes, and they sp is executed several times , before timeout happens i configured command timeout as 600, it gets retried for 6 times. but not waiting until it gets ececuted. finally error is trows i migrated to Efcocre 2.0 if this could be resolved but it does not happen. in Efcore 2.0 the timeout is 100 can some one help me with this ? i have a data load of more than a billion records on wich i operate. +24209 area-System.Security X509Chain under heavy load causes System.IO.IOException: Too many open files Having a lot of connections to the web api. API by itself doesn't open any files. But it makes a lot of https connections to another service. From time to time we are having container restarted because of exception. Microsoft.AspNetCore.Mvc **1.1.4** Docker image: **aspnetcore-build:1.1.2** ``` Unhandled Exception: System.IO.IOException: Too many open files at System.IO.UnixFileSystem.FileSystemEnumerable`1.OpenDirectory(String fullPath) at System.IO.UnixFileSystem.FileSystemEnumerable`1.Enumerate() at System.IO.UnixFileSystem.FileSystemEnumerable`1..ctor(String userPath, String searchPattern, SearchOption searchOption, SearchTarget searchTarget, Func`3 translateResult) at System.IO.UnixFileSystem.EnumerateFileSystemInfos(String fullPath, String searchPattern, SearchOption searchOption, SearchTarget searchTarget) at System.IO.DirectoryInfo.InternalEnumerateFiles(String searchPattern, SearchOption searchOption) at System.IO.DirectoryInfo.EnumerateFiles() at Internal.Cryptography.Pal.StorePal.LoadMachineStores() at Internal.Cryptography.Pal.StorePal.FromSystemStore(String storeName, StoreLocation storeLocation, OpenFlags openFlags) at System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags) at Internal.Cryptography.Pal.OpenSslX509ChainProcessor.FindCandidates(X509Certificate2 leaf, X509Certificate2Collection extraStore, HashSet`1 downloaded, HashSet`1 systemTrusted, TimeSpan& remainingDownloadTime) at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean useMachineContext, ICertificatePal cert, X509Certificate2Collection extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, DateTime verificationTime, TimeSpan timeout) at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2 certificate) at System.Net.Security.CertificateValidation.BuildChainAndVerifyProperties(X509Chain chain, X509Certificate2 remoteCertificate, Boolean checkCertName, String hostName) at System.Net.Http.CurlHandler.SslProvider.VerifyCertChain(IntPtr storeCtxPtr, IntPtr curlPtr) at Interop.Http.MultiPerform(SafeCurlMultiHandle multiHandle) at System.Net.Http.CurlHandler.MultiAgent.WorkerBodyLoop() ``` +24211 area-System.Net HttpClient is not able to send Client certificate unless the cert is in Windows Cert Store "HttpClient is using HttpClientHandler to attach a client certificate to the request sent to a server. The certificate isn't being attached when ClientCertificateOptions is set to `Manual` mode and the client cert is not in the Windows Certificate Store. I looked through the code in GitHub and it looks that the provided client cert is always being verified for WinRT against a ""MY"" local windows cert store. The call is made to https://github.com/dotnet/corefx/blob/472b8d8ec212c2afb107dea305b4624c4989a79f/src/Common/src/System/Net/Security/CertificateHelper.Uap.cs line 35 in from this code https://github.com/dotnet/corefx/blob/f7bc8b413406e94549f21be79e67641f11ae8266/src/System.Net.Http/src/uap/System/Net/HttpClientHandler.cs Please see the sample code below: `using System; using System.Net.Http; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; namespace CertClient { public class Program { private static async Task Main(string[] args) { var result = await GetSecureApiResultsAsync(); Console.WriteLine(result); Console.WriteLine(""Press any key to continue...""); Console.ReadKey(); } public static async Task GetSecureApiResultsAsync() { //create an HttpClient handler using (var handler = new HttpClientHandler()) { //we need to configure the handler with client certificate. //This is where it gets interesting //set client certificate to manual mode so we can provide a client certificate we want. handler.ClientCertificateOptions = ClientCertificateOption.Manual; //NOTE: this is a gotcha of the Microsoft implementation requiring client certs to be stored in a cert store. var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); //for some reason the cert collection .Find(...) method can't find a cert by thumprint so we created our own. var clientCert = FindCert(store, ""5162b416b44f854e2571ffa86d4430dcdb83d723""); store.Dispose(); //add the cert to the handler handler.ClientCertificates.Add(clientCert); //create an HttpClient and pass a handler to it using (var httpClient = new HttpClient(handler)) { //make an API call return await httpClient.GetStringAsync(@""https://localhost:4430/api/values""); } } } private static X509Certificate2 FindCert(X509Store store, string thumbprint) { foreach (var cert in store.Certificates) if (cert.Thumbprint.Equals(thumbprint, StringComparison.CurrentCultureIgnoreCase)) return cert; return null; } } }`" +24213 area-System.Drawing Allow loading libgdiplus from NuGet packages "I just kicked off a first test run of our software, migrating from CoreCompat.System.Drawing to System.Drawing.Common. On Mac, all unit tests which use System.Drawing are currently red because `libgdiplus.dylib` cannot be located. Although `libgdiplus.dylib` can be acquired via Homebrew, we try to make it a ""plug & play"" experience and ship `libgdiplus.dylib` as part of our self-contained app. `libgdiplus.dylib` therefore is not preinstalled on our CI servers; we acquire it via the `runtime.osx.10.10-x64.CoreCompat.System.Drawing/1.0.1-beta004` package. The same holds true for our end user's desktops - it is currently not a requirement that they run `brew install libgdiplus` before launching our self-contained app. It appears that the `dlopen` call which is used to load `libgdiplus.dylib` does not use same search path as an `[DllImport]` statement - apparently the NuGet packages are not being searched. I'm no expert in this area but it seems the values we're looking for are stored in [m_NativeDllSearchDirectories](https://github.com/dotnet/coreclr/search?utf8=%E2%9C%93&q=m_NativeDllSearchDirectories&type=) I'd be happy to submit a PR that fixes this behavior but I'm currently not entirely sure where we would fetch the search paths that need to be passed to `dlopen`, hence the issue. On Linux, this isn't that much of an issue for us because we use, say, `dotnet-rpm` to create RPM packages on CentOS and we can express the libgdiplus dependency in the RPM package - so when installing our package, libgdiplus is automatically installed by the package manager. On Windows, this isn't an issue at all as GDI+ is always there." +24215 area-Infrastructure "Revert ""Update build to clang/llvm 3.9 (#24177)""" This reverts commit 21e008a3401a4d76ef5123df8f072e9f3c7823bb. +24216 area-System.Net Updated link to HTTP Protocol proposal and minor fixes +24217 area-System.IO UWP - System.IO.File Tests failing on outerloop The test is just hanging on two unrelated PR's https://mc.dot.net/#/user/Drawaes/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/46a30dd69c4652f1c4b4a09f645ed893136b5b9f/workItem/System.IO.FileSystem.Tests/wilogs #23715 #24116 +24219 area-Infrastructure NOMERGE: failing some tests intentionally to see call stacks cc: @MattGal Do not merge this PR as it is only to validate right call stacks on failing tests. This is an investigation related to issue #22979 +24221 area-System.Net SSLStream : Fixed spelling mistake in file name (extra a) In all the reviews, I seemed to have missed a spelling mistake and the file was in the incorrect folder level for the new classes +24224 area-System.Net IPAddress: Change to faster algo to bigendian->littleendian flip of numbers As per my comment in CoreFXLabs, its also identified there that the IPAddress methods are a lot slower (The version I have submitted is the (2) versions of the algo below) [Ref Issue from CoreFxLab](https://github.com/dotnet/corefxlab/pull/1779#issuecomment-331647487) |Test|AVERAGE | STDEV.S | MIN | MAX| |---|---|---|----|----| |MeasureReverse| 200.318 | 4.356 | 195.937 | 217.856| |MeasureReverse2|165.578 | 1.875 | 162.408 | 172.572| MeasureReverseUsingNtoH| 562.256 | 5.355 | 554.489 | 579.212| |MeasureReverseLong| 331.710 | 1.982 | 327.835 | 336.525| |MeasureReverseLong2|264.985 | 1.956 | 260.660 | 270.584| |MeasureReverseUsingNtoHLong|1241.993 | 59.340 | 1189.954 | 1361.043| +24225 area-System.Security X509Certificate2/CommonCrypto: Unable to open PKCS#12 files with no password and valid MAC "If you have a PKCS#12 file which is not protected with a password, and which does have a MAC entry, opening the file will work on Windows and Linux but fails on Mac (which use CommonCrypto). This is a regression on macOS as this worked with .NET Core 1.x (when using OpenSSL) and no longer works with .NET Core 2.0. The following unit test reproduces the behavior: ```csharp using System; using System.Security.Cryptography.X509Certificates; using Xunit; namespace temp { public class UnitTest1 { [Fact] public void Test1() { var cert = new X509Certificate(""my_pkcs12.pfx""); Assert.NotNull(cert); } } } ``` The test passes on Windows & Linux but fails on macOS with the following error message: ``` Failed certs.UnitTest1.Test1 Error Message: Interop+AppleCrypto+AppleCommonCryptoCryptographicException : MAC verification failed during PKCS12 import (wrong password?) Stack Trace: at Interop.AppleCrypto.X509ImportCertificate(Byte[] bytes, X509ContentType contentType, SafePasswordHandle importPassword, SafeKeychainHandle keychain, Boolean exportable, SafeSecIdentityHandle& identityHandle) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName) at certs.UnitTest1.Test1() in /Users/quamotion/scratch/certs/UnitTest1.cs:line 12 ``` `my_pkcs12.pfx` can be generated using the following script, use an empty password when prompted: ``` openssl genrsa -out my_key.key 2048 openssl req -new -key my_key.key -out my_request.csr openssl x509 -req -days 3650 -in my_request.csr -signkey my_key.key -out my_cert.crt openssl pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in my_cert.crt -inkey my_key.key -out my_pkcs12.pfx -name ""my-name"" ``` This is not the same as #11046, that one was about p12 stores where the MAC is absent; in this case there is a valid MAC." +24226 area-System.Security X509Certificate2/CommonCrypto: Exporting a certificate without a private key to a PKCS12 store with a password fails "If you have a `X509Certificate2` object which represents a certificate without a private key, exporting that certificate to a Pkcs12 store will work on Windows and Linux but fails on Mac (which use CommonCrypto). This is a regression on macOS as this worked with .NET Core 1.x (when using OpenSSL) and no longer works with .NET Core 2.0. The following unit test reproduces the behavior: ```csharp using System; using System.Security.Cryptography.X509Certificates; using Xunit; namespace temp { public class UnitTest1 { [Fact] public void Test1() { var cert = new X509Certificate2(""my_cert.crt""); var data = cert.Export(X509ContentType.Pkcs12, ""password""); Assert.NotNull(data); } } } ``` The test passes on Windows & Linux but fails on macOS with the following error message: ``` Failed certs.UnitTest1.Test1 Error Message: Interop+AppleCrypto+AppleCommonCryptoCryptographicException : One or more parameters passed to a function were not valid. Stack Trace: at Interop.AppleCrypto.X509Export(X509ContentType contentType, SafeCreateHandle cfPassphrase, IntPtr[] certHandles) at Interop.AppleCrypto.X509ExportPfx(IntPtr[] certHandles, SafePasswordHandle exportPassword) at Internal.Cryptography.Pal.StorePal.AppleCertificateExporter.ExportPkcs12(SafePasswordHandle password) at Internal.Cryptography.Pal.StorePal.AppleCertificateExporter.Export(X509ContentType contentType, SafePasswordHandle password) at System.Security.Cryptography.X509Certificates.X509Certificate.Export(X509ContentType contentType, String password) at certs.UnitTest1.Test1() in /Users/quamotion/scratch/certs/UnitTest1.cs:line 13 ``` my_cert.crt can be generated using the following script: ``` openssl genrsa -out my_key.key 2048 openssl req -new -key my_key.key -out my_request.csr openssl x509 -req -days 3650 -in my_request.csr -signkey my_key.key -out my_cert.crt ``` " +24227 area-Meta System.Management.Automation support on .NET Core Are there any plans to support running PowerShell runspaces/commands from within a .NET Core, this is the last thing preventing us from moving all our project to .NET Core. Thanks! @terrajobst +24228 area-System.IO AnonymousPipeClientStream.ReadAsync does not seem to support cancellation "Hi. After some experimentation, it seems to me that unlike `NamedPipeClientStream`, `AnonymousPipeClientStream` (or `AnonymousPipeServerStream` for that matter) does not support cancellation (because there's no way to open the pipe in async mode and so `Stream.ReadAsync` is used instead of `PipeStream.ReadAsyncCore`). This is a little painful because it means there's no way to ""unblock"" a pending read or write on that stream when the stream contains no data. Here's a simple repro that shows what I'm trying to do. It works for named pipes, but not for anonymous ones: ```csharp NamedPipeServerStream source = new NamedPipeServerStream(""pipe-test"", PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); NamedPipeClientStream destination = new NamedPipeClientStream(""."", ""pipe-test"", PipeDirection.In, PipeOptions.Asynchronous); await destination.ConnectAsync(); CancellationTokenSource cancellationSource = new CancellationTokenSource(); byte[] buffer = new byte[10]; Task readTask = destination.ReadAsync(buffer, 0, buffer.Length, cancellationSource.Token); // Right now, readTask is blocked waiting for data. Task timeout = Task.Delay(TimeSpan.FromSeconds(1)); Task winner = await Task.WhenAny(readTask, timeout); Assert.Equal(timeout, winner); cancellationSource.Cancel(); // readTask will now fault with TaskCanceledException timeout = Task.Delay(TimeSpan.FromSeconds(5)); winner = await Task.WhenAny(readTask, timeout); Assert.Equal(readTask, winner); // Prove that it was canceled via the correct CancellationToken TaskCanceledException cancelled = await Assert.ThrowsAsync(() => readTask); Assert.Equal(cancellationSource.Token, cancelled.CancellationToken); ``` Is this by design, or simply something nobody has gotten around to, yet? Because it looks like it should be possible to implement by constructing the base `PipeStream` with `isAsync: true` to use the [correct code-path](https://github.com/dotnet/corefx/blob/1f434a9665d666542497250a0b4e211ce20b40df/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.cs#L164-L175)." +24229 area-System.Runtime System.Data.SqlClient throwing System.PlatformNotSupportedException when loaded via reflection "System.Data.SqlClient does not work when loading the external library (.NET Standard DLL) at runtime through reflection except if the library has been published for a specific platform (rid). Trying to execute a SQL query against a SQL Server instance throws ""System.PlatformNotSupportedException: System.Data.SqlClient is not supported on this platform"" exception. Repro steps and Visual studio solution can be found here: https://github.com/softeering/NETStandardSQLClientRepro I'm pretty sure this can be explained but I don't get why it doesn't work" +24232 area-System.Net HttpClient with Certificates not supported "**system: centos 7.3 runtime: dotnet core 2.0.0** Code: ``` var x509Certificate2 = new X509Certificate2(); // Replace this class instantation with actual X509Certificate2 data var httpClientHandler = new HttpClientHandler(); httpClientHandler.ClientCertificates.Add(x509Certificate2); using (var httpClient = new HttpClient(httpClientHandler)) { // Post } ``` Error: ``` fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0] An unhandled exception has occurred: The handler does not support client authentication certificates with this combination of libcurl (7.29.0) and its SSL backend (""NSS/3.28.4""). System.PlatformNotSupportedException: The handler does not support client authentication certificates with this combination of libcurl (7.29.0) and its SSL backend (""NSS/3.28.4""). at System.Net.Http.CurlHandler.SslProvider.SetSslOptionsForUnsupportedBackend(EasyRequest easy, ClientCertificateProvider certProvider) at System.Net.Http.CurlHandler.SslProvider.SetSslOptions(EasyRequest easy, ClientCertificateOption clientCertOption) at System.Net.Http.CurlHandler.EasyRequest.InitializeCurl() at System.Net.Http.CurlHandler.MultiAgent.ActivateNewRequest(EasyRequest easy) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() ```" +24233 area-System.ComponentModel CategoryAttributeTests.Ctor_Default failed on netfx in CI https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netfx+CGroup_Release+AGroup_x86+TestOuter_false_prtest/3615/consoleText ``` Discovering: System.ComponentModel.Primitives.Tests Discovered: System.ComponentModel.Primitives.Tests Starting: System.ComponentModel.Primitives.Tests System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Default [FAIL] Assert.True() Failure Expected: True Actual: False Stack Trace: D:\j\workspace\windows-TGrou---2a8f9c29\src\System.ComponentModel.Primitives\tests\CategoryAttributeTests.cs(18,0): at System.ComponentModel.Tests.CategoryAttributeTests.Ctor_Default() ``` +24234 area-System.Runtime Adding UTF8 Marshalling API tests +24237 area-System.Diagnostics Removing unnecessary Console.WriteLine that is spamming the CI build Applying remaining code review comment from #24078 cc: @danmosemsft @stephentoub +24238 area-System.Drawing Fix multiplying a matrix by the same matrix +24239 area-Infrastructure [Do Not Merge] Force a crash in the System.AppContext tests. This causes a deliberate access violation in the System.AppContext tests, so we can test out some fixes being made to our crash dump debugging experience. @DrewScoggins +24240 area-System.IO No successful code coverage CI run since July https://ci.dot.net/job/dotnet_corefx/job/master/job/code_coverage_windows/ :frowning: +24242 area-System.IO RecursiveDelete_DeepNesting fails due to StackOverflowException under Code Coverage This happens on our CI machines, at least. Call stack from a recent Code Coverage run: ![image](https://user-images.githubusercontent.com/8918977/30832720-02d303a4-a201-11e7-8667-7bf06a6b653a.png) @JeremyKuhne +24244 area-System.Net Make ConnectHelper.ConnectAsync return ValueTask Minor optimization via playing a bit better perf-wise with changes being made in coreclr in https://github.com/dotnet/coreclr/pull/14178. cc: @geoffkizer +24246 area-System.Collections Add method RemoveOrUpdate to ConcurrentDictionary It would be very useful to have the ability to conditionally remove or update `ConcurrentDictionary` entry. It already has `AddOrUpdate`. Right now I can't use `ConcurrentDictionary` in ref counting scenarios, because I can't check reference count and remove it if value is 0 and forced to use common `Dictionary` with `lock`. +24248 area-System.Net Fix some missing ConfigureAwaits in ManagedHandler cc: @geoffkizer +24249 area-System.Net Managed WebSocket implementation on Windows 7? Recently we've stumbled upon particular issue of Windows 7 SP1 not supporting WebSockets natively, as they were introduced in Windows 8 / Server 2012. Check out https://github.com/SteamRE/SteamKit/issues/455 as a reference of original issue. Since there is managed implementation of websocket that is apparently **[already possible to be used on Windows](https://github.com/dotnet/corefx/blob/master/src/System.Net.WebSockets.Client/src/System.Net.WebSockets.Client.csproj#L7-L9)**, would it make sense to use it on Windows 7 as a platform that does not support WinSocket Windows stack natively? Or maybe it's already possible? Thank you in advance. +24250 area-System.IO System.IO.Directory.Delete should check for the name surrogate bit on reparse tags before deciding if it should enumerate directories with reparse points "Copied from internal bug 402782 System.IO.Directory.Delete recursive delete will not recurse through directory placeholders as it should (directory placeholders are a feature of GvFlt and the container filter). Christian Allred [callred] found that the Delete code ""will avoid trying to enumerate directories that are any kind of reparse point, rather than just name surrogates ... It should be fixed to check for the name surrogate bit on the reparse tag, same as rmdir /s does"" See: http://ddindex/?rightProject=mscorlib&file=system%5cio%5cdirectory.cs&line=1324) rmdir code // // We now enumerate and delete children iff: // directory and not reparse/namesurrogate // if (IsDirectory( find_data.dwFileAttributes ) && !(IsReparse( find_data.dwFileAttributes ) && IsReparseTagNameSurrogate( find_data.dwReserved0 ))) { ... // (Enumerate, deleting files and recursing into directories) ... } return RemoveDirectoryForce(pszDirectory); ... Rmdir /s checks the name surrogate bit using IsReparseTagNameSurrogate, which is in ntifs.h. It is defined as: #define IsReparseTagNameSurrogate(_tag) ( \ ((_tag) & 0x20000000) \ ) If you're doing a FindFirst/FindNext, the _tag value is the dwReserved0 field of the WIN32_FIND_DATA structure. That is how rmdir /s does its check: // // We now enumerate and delete children iff: // directory and not reparse/namesurrogate // if (IsDirectory( find_data.dwFileAttributes ) && !(IsReparse( find_data.dwFileAttributes ) && IsReparseTagNameSurrogate( find_data.dwReserved0 ))) { ... // (Enumerate, deleting files and recursing into directories) ... } return RemoveDirectoryForce(pszDirectory); ... Forgot to mention, the name surrogate bit is set on directory junctions, symlinks, etc. So having this check correctly identifies other types of reparse points that a recursive delete would not want to recurse in to." +24251 area-System.Console System.Console intellisense text not localized ![image](https://user-images.githubusercontent.com/8228359/30842958-e506af44-a23a-11e7-8679-de08a01ef3d2.png) +24252 area-System.Net Return condition directly instead of `if (condition) return true; els… Return condition directly instead of `if (condition) return true; else return false;` +24253 area-System.Net StatusCode in HttpRequestException "When the `EnsureSuccessStatusCode` method in the `HttpResponseMessage` throws a `HttpRequestException` exception it is not possible to determine the status code. Add a new property named `StatusCode` to the `HttpRequestException` class which gets set by the `EnsureSuccessStatusCode` method of the `HttpResponseMessage` class. ## Rationale and Usage Allows you to determine the status code which triggered the exception. ```cs try { DoSomeHttp(); } catch (HttpRequestException e) { Log($""Request failed with status code: {e.StatusCode}.""); } private void DoSomeHttp() { // ... message.EnsureSuccessStatusCode(); } ``` ## Proposed API ```cs public class HttpRequestException : Exception { // ... public HttpRequestException(string message, StatusCode statusCode); public HttpRequestException(string message, Exception inner, StatusCode statusCode); // ... public StatusCode StatusCode { get; } // ... } ``` ## Open Questions Should the property have a setter? Should the exception have a constructor that sets the property? Should the property be nullable?" +24255 area-Infrastructure Unable to run tests on FreeBSD Hi, I've compiled CoreCLR and CoreFX (both managed and native parts). Also did build-tests.cmd and copied them over to FreeBSD box. Now when trying to run the tests I get errors like: `Cannot find /home/sec/core/corefx/bin/tests/Canonicalization.Tests/netcoreapp-FreeBSD-Debug-x64/RunTests.sh` I'm missing something? I tried reading docs, but they seem little not up-to-date? +24256 area-System.Collections GetValueOrDefault available for IReadOnlyDictionary but not IDictionary The `CollectionExtensions` extension class provides the `GetValueOrDefault` extension method. However it extends classes that implement the `IReadOnlyDictionary` interface, hence its usable from `ReadOnlyDictionary` but not from a normal `Dictionary`. Why isn't this extension method also available for the `Dictionary`? Wouldn't it be nice if it were? Perhaps another extension method that extends classes that implement the `IDictionary` interface ought to be inserted into the `CollectionExtensions` class? +24257 area-System.Net [ManagedHandler] Respect DNS TTL See #11224 for details on the issue +24259 area-System.Console FreeBSD: System.Console is not working right This is because terminfo database is missing in default installation. I tried to add ncurses package from ports. That only creates /usr/local/share/misc/terminfo.db And the terminal information is kept in hashed form. We shall investigate. +24263 area-System.Drawing Re-enable InstalledFontCollection tests on Unix. These pass on my Ubuntu 16.04 box -- I'd like to see how all our other distros behave. It's possible these were disabled because our CI machines didn't have fonts installed (they should now). @qmfrederik I looked at the mono test cases for System.Drawing.Text and found that our coverage was equal or better, but these tests are disabled. This should cover that namespace from your large PR. +24264 area-Serialization Add Tests for Type Having Primitive Types as Known Types A user reported an issue with DataContractSerializer serializing types having primitive types as known types on UWP. The existing tests did not cover this scenario. We should add tests for this. +24265 area-Serialization DCS Failed to Serialize Types Having Primitive Types as Known Types on UWP A user reported an issue with DataContractSerializer serializing types having primitive types as known types on UWP. We need to make fix for this in UWP toolchain. +24268 area-System.Drawing PrintingServices.Unix.cs is not thread safe The function `LoadPrinters` is called in multiple places within this class, and modifies a static Hashtable storing the system's discovered printers. This function may also be called multiple times (even after initialization) if the system does not have any installed printers. It is possible for multiple calls to this function to occur at the same time, which will result in unpredictable problems, because access to the hashtable is not synchronized in any way. This is unlikely to be a problem in real app code, because it can generally only occur during initialization, and because you need specific circumstances to trigger any issues. I have seen a local test run fail because of this. +24269 area-System.Drawing Enable ImageAttributes tests which pass on Unix System.Drawing. I have found that only the `Clone_Success` test causes a crash on libgdiplus. The rest are able to run, but a large number still have other issues. Namely, many of these receive a NotImplemented status from libgdiplus. +24271 area-System.Runtime Cyclic (but not cyclic) generic structure results in ReflectionTypeLoadException In the full .NET platform, the following is a non-issue, however in .NET Core/Standard, it results in a ReflectionTypeLoadException (with a fairly useless exception message) Given the following structures: ```c# public struct GenericStruct where T : struct { public IntPtr Ptr; } public struct StructA { public GenericStruct B; } public struct StructB { public GenericStruct A; } ``` Notice that StructA has a reference to StructB, and vice versa, however neither structure actually implements a field containing either. (They boil down to `IntPtr Ptr`) In the full framework, these types of things are allowed, and (at least personally) used heavily in certain interop scenarios to help with native code interfaces that use a lot of templates. Loading the assembly via `AssemblyLoadContext.Default.LoadFromAssemblyPath` and calling `GetTypes` on it results in the following ReflectionTypeLoadException: > Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. Could not load type 'GenericStructureTest.StructB' from assembly 'GenericStructureTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Could not load type 'GenericStructureTest.StructA' from assembly 'GenericStructureTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. [EDIT] Add C# syntax highlighting by @karelz +24273 area-System.Diagnostics EventCounters not reporting data in 2.0 "I have a sample app that uses EventCounters: https://github.com/anurse/EventCounterTest In the app, I write to an event counter every 100ms, and I configure a listener to aggregate event counters every 1s: ```csharp using System; using System.Collections.Generic; using System.Diagnostics.Tracing; namespace EventCounterTest { class Program { static void Main(string[] args) => AsyncMain(args).Wait(); static async Task AsyncMain(string[] args) { var cts = new CancellationTokenSource(); Console.CancelKeyPress += (sender, a) => { cts.Cancel(); a.Cancel = true; }; var listener = new HostingEventSourceListener(); Console.WriteLine(""Press Ctrl-C to stop""); for (var i = 0; !cts.Token.IsCancellationRequested; i++) { var url = $""https://localhost/?iter={i}""; MinimalEventCounterSource.Log.Request(url, i); try { await Task.Delay(100, cts.Token); } catch (OperationCanceledException) { return; } } } } [EventSource(Name = ""Samples-EventCounterDemos-Minimal"")] public sealed class MinimalEventCounterSource : EventSource { public static MinimalEventCounterSource Log = new MinimalEventCounterSource(); private EventCounter _requestCounter; private MinimalEventCounterSource() { _requestCounter = new EventCounter(""request"", this); } /// /// Call this method to indicate that a request for a URL was made which tool a particular amount of time /// public void Request(string url, float elapsedMSec) { WriteEvent(1, url, elapsedMSec); // This logs it to the event stream if events are on. _requestCounter.WriteMetric(elapsedMSec); // This adds it to the EventCounter called 'Request' if PerfCounters are on } } public class HostingEventSourceListener : EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { if (eventSource.Name.Equals(""Samples-EventCounterDemos-Minimal"")) { EnableEvents(eventSource, EventLevel.LogAlways, EventKeywords.All, new Dictionary() { { ""EventCounterIntervalSec"", ""1"" } }); } } protected override void OnEventWritten(EventWrittenEventArgs eventData) { Console.WriteLine($""{eventData.EventName}""); foreach (var payload in eventData.Payload) { if (payload is IDictionary payloadDictionary) { foreach (var data in payloadDictionary) { Console.WriteLine($"" {data.Key} - {data.Value}""); } } } } } } ``` When I run the app in `netcoreapp1.1`, I get the following output:"" ``` Press Ctrl-C to stop Request Request Request Request Request Request Request Request Request Request EventCounters Name - request Mean - 4.5 StandardDerivation - 2.872281 Count - 10 Min - 0 Max - 9 IntervalSec - 1.015035 Request ... ``` So the EventCounter is firing at the requested interval. However, if I switch the target framework to `netcoreapp2.0` and re-run the app, I get this output: ``` Press Ctrl-C to stop Request Request Request Request Request Request Request Request Request Request Request ... ``` The EventCounters event is never fired. The same behavior is seen with out-of-process monitoring in PerfView. The only difference between the projects is the target framework. I investigated a little further and noticed that [in 2.0.0](https://github.com/dotnet/corefx/blob/release/2.0.0/src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventCounter.cs#L246) the code that attaches the EventCounter to the EventSource is `#ifdef`ed: https://github.com/dotnet/corefx/blob/653cb2fc7844dddeff43b03638bc0140bc4fc61c/src/System.Diagnostics.Tracing/src/System/Diagnostics/Tracing/EventCounter.cs#L248 However, when I view the assembly in my 2.0.0 shared runtime folder in ILspy, I see that the method is empty (Looking at ""C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0\System.Diagnostics.Tracing.dll"", and I verified against the DLL in the ZIP on https://dot.net as well): ![image](https://user-images.githubusercontent.com/7574/30891472-71614b18-a2e8-11e7-944e-ad74cd5bce02.png) Looking at 1.1.x, I see the code is present (Looking at ""C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.4\System.Diagnostics.Tracing.dll""): ![image](https://user-images.githubusercontent.com/7574/30891490-8c0bf346-a2e8-11e7-8c09-6bfb7250ceee.png) It looks like maybe this code was `#ifdef`ed out of the 2.0 build :( /cc @DamianEdwards @davidfowl @JunTaoLuo @vancem " +24274 area-System.Drawing "Test: System.Drawing.Imaging.Tests.EncoderParameterTests/Ctor_Encoder_NegativeNumberOfValues_Type_Value_OutOfMemoryException failed with ""Xunit.Sdk.ThrowsException""" Opened on behalf of @Jiayili1 The test `System.Drawing.Imaging.Tests.EncoderParameterTests/Ctor_Encoder_NegativeNumberOfValues_Type_Value_OutOfMemoryException(numberOfValues: -1)` has failed. Assert.Throws() Failure Expected: typeof(System.OutOfMemoryException) Actual: (No exception was thrown) Stack Trace: at System.Drawing.Imaging.Tests.EncoderParameterTests.Ctor_Encoder_NegativeNumberOfValues_Type_Value_OutOfMemoryException(Int32 numberOfValues) in /root/corefx-1017977/src/System.Drawing.Common/tests/Imaging/EncoderParameterTests.cs:line 324 Build : Master - 20170927.01 (Core Tests) Failing configurations: - Ubuntu.1710.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170927.01/workItem/System.Drawing.Common.Tests/analysis/xunit/System.Drawing.Imaging.Tests.EncoderParameterTests~2FCtor_Encoder_NegativeNumberOfValues_Type_Value_OutOfMemoryException(numberOfValues:%20-1) +24275 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandlerTest / GetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized "## History of failures Day | Build | OS | Error message -- | -- | -- | -- 6/15 | 20170615.03 | Win8.1 | The handle is invalid 9/27 | 20170927.01 | Win7 | A certificate is required to complete client authentication 10/4 | 20171004.02 | Win8.1 | The operation has been canceled 10/16 | 20171016.01 | Win8.1 | The operation has been canceled 10/21 | 20171021.02 | Win8.1 | The operation has been canceled 11/23 | 20171123.02 | Win7 | The handle is invalid 12/31 | 20171231.01 | Win7 | The handle is invalid - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171231.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FGetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized(authHeaders:%20%5C%22WWW-Authenticate:%20CustomAuth%5C%5Cr%5C%5Cn%5C%22)) # Original report Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.HttpClientHandlerTest/GetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized(authHeaders: \""WWW-Authenticate: CustomAuth\\r\\n\"")` has failed. System.Net.Http.HttpRequestException : An error occurred while sending the request.\r ---- System.Net.Http.WinHttpException : A certificate is required to complete client authentication Stack Trace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.<>c__DisplayClass44_0.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__279_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandlerTest.d__44.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() Build : Master - 20170927.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170927.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandlerTest~2FGetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized(authHeaders:%20%5C%22WWW-Authenticate:%20CustomAuth%5C%5Cr%5C%5Cn%5C%22)" +24276 area-System.Net Test failure: System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test / SetDelegate_ConnectionSucceeds ## Types of failures ### WinHttpException Failure in build 20171215.06: ``` System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Net.Http.WinHttpException : The handle is in the wrong state for the requested operation at System.Net.Http.HttpClient.d__58.MoveNext() in E:\A\_work\772\s\corefx\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass3_1.<b__0>d.MoveNext() in E:\A\_work\772\s\corefx\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.AcceptAllCerts.cs:line 54 --- End of stack trace from previous location where exception was thrown --- at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in E:\A\_work\772\s\corefx\src\Common\tests\System\Net\Http\LoopbackServer.cs:line 67 at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() in E:\A\_work\1517\s\src\mscorlib\src\System\Threading\Tasks\TaskContinuation.cs:line 59 at System.Threading.Tasks.Task.<>c.<.cctor>b__278_1(Object obj) in E:\A\_work\1517\s\src\mscorlib\src\System\Threading\Tasks\Task.cs:line 2480 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) in E:\A\_work\1517\s\src\mscorlib\shared\System\Threading\ExecutionContext.cs:line 151 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) in E:\A\_work\1517\s\src\mscorlib\src\System\Threading\Tasks\Task.cs:line 2440 --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() in E:\A\_work\772\s\corefx\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.AcceptAllCerts.cs:line 52 --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ----- Inner Stack Trace ----- at System.Net.Http.WinHttpException.ThrowExceptionUsingLastError() in E:\A\_work\772\s\corefx\src\Common\src\System\Net\Http\WinHttpException.cs:line 44 at System.Net.Http.WinHttpHandler.SetRequestHandleClientCertificateOptions(SafeWinHttpHandle requestHandle, Uri requestUri) in E:\A\_work\772\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 1145 at System.Net.Http.WinHttpHandler.SetRequestHandleOptions(WinHttpRequestState state) in E:\A\_work\772\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 956 at System.Net.Http.WinHttpHandler.d__105.MoveNext() in E:\A\_work\772\s\corefx\src\System.Net.Http.WinHttpHandler\src\System\Net\Http\WinHttpHandler.cs:line 831 ``` ### Win32Exception: The Local Security Authority cannot be contacted Failure in build 20171020.01: ``` System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception. ---- System.ComponentModel.Win32Exception : The Local Security Authority cannot be contacted at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsServer(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.<>c.b__47_1(X509Certificate arg1, Boolean arg2, SslProtocols arg3, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) at System.Net.Test.Common.LoopbackServer.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass3_1.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- ``` ### IOException: Authentication failed because the remote party has closed the transport stream ``` System.IO.IOException : Authentication failed because the remote party has closed the transport stream. E:\A\_work\1477\s\corefx\src\System.Net.Security\src\System\Net\Security\SslState.cs(873,0): at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) E:\A\_work\1477\s\corefx\src\System.Net.Security\src\System\Net\Security\SslState.cs(1096,0): at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- E:\A\_work\1477\s\corefx\src\System.Net.Security\src\System\Net\Security\SslState.cs(735,0): at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) E:\A\_work\1477\s\corefx\src\System.Net.Security\src\System\Net\Security\SslState.cs(708,0): at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) E:\A\_work\1477\s\corefx\src\System.Net.Security\src\System\Net\Security\SslStream.cs(248,0): at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) E:\A\_work\1477\s\corefx\src\System.Net.Security\src\System\Net\Security\SslStream.cs(407,0): at System.Net.Security.SslStream.<>c.b__47_2(IAsyncResult iar) E:\A\_work\2009\s\src\mscorlib\src\System\Threading\Tasks\FutureFactory.cs(533,0): at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- E:\A\_work\1477\s\corefx\src\Common\tests\System\Net\Http\LoopbackServer.cs(164,0): at System.Net.Test.Common.LoopbackServer.d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- E:\A\_work\1477\s\corefx\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.AcceptAllCerts.cs(54,0): at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.<>c__DisplayClass3_1.<b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- E:\A\_work\1477\s\corefx\src\Common\tests\System\Net\Http\LoopbackServer.cs(67,0): at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) E:\A\_work\2009\s\src\mscorlib\src\System\Threading\Tasks\TaskContinuation.cs(59,0): at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() E:\A\_work\2009\s\src\mscorlib\src\System\Threading\Tasks\Task.cs(2480,0): at System.Threading.Tasks.Task.<>c.<.cctor>b__278_1(Object obj) E:\A\_work\2009\s\src\mscorlib\shared\System\Threading\ExecutionContext.cs(151,0): at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) E:\A\_work\2009\s\src\mscorlib\src\System\Threading\Tasks\Task.cs(2440,0): at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- E:\A\_work\1477\s\corefx\src\System.Net.Http\tests\FunctionalTests\HttpClientHandlerTest.AcceptAllCerts.cs(52,0): at System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- --- End of stack trace from previous location where exception was thrown --- ``` ## History of failures Day | Build | OS | Error message -- | -- | -- | -- 9/27 | 20170927.01 | Win7 | Win32Exception: The Local Security Authority cannot be contacted 9/27 | 20170927.01 | Win7 | WinHttpException: The handle is in the wrong state for the requested operation 10/5 | 20171005.01 | Win7 | Win32Exception: The Local Security Authority cannot be contacted 10/20 | 20171020.01 | Win7 | Win32Exception: The Local Security Authority cannot be contacted 10/20 | 20171020.01 | Win7 | WinHttpException: The handle is invalid 10/23 | 20171020.52 | Win7 | WinHttpException: The operation has been canceled 10/31 | 20171030.05 | Win7 | WinHttpException: The handle is invalid 11/28 | 20171128.01 | Win7 | WinHttpException: The handle is invalid 12/13 | 20171213.09 | Win7 | WinHttpException: The operation has been canceled 12/15 | 20171215.06 | Win7 | WinHttpException: The handle is in the wrong state for the requested operation 12/30 | 20171230.01 | Win7 | IOException: Authentication failed because the remote party has closed the transport stream - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171230.01/workItem/System.Net.Http.Functional.Tests/wilogs) 1/5 | 20180105.01 | Win7 | WinHttpException: The handle is invalid - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180105.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20Tls11,%20Tls12,%20requestOnlyThisProtocol:%20True)) 1/16 | 20180116.01 | Win7 | WinHttpException: The handle is invalid - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180116.03/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20True)) 1/18 | 20180118.01 | Win7 | Win32Exception: The Local Security Authority cannot be contacted - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180118.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20Tls11,%20Tls12,%20requestOnlyThisProtocol:%20False)) 1/29 | 20180129.01 | Win8.1 | WinHttpException: The operation has been canceled - only in [catastrophic failure logs](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180129.01/workItem/System.Net.Http.Functional.Tests/wilogs) 1/31 | 20180131.05 | Win8.1 | WinHttpException: The operation has been canceled - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180131.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False)) 1/31 | 20180131.05 | Win7 | WinHttpException: The handle is invalid - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180131.05/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20Tls11,%20Tls12,%20requestOnlyThisProtocol:%20True)) 2/1 | 20180201.01 | Win7 | WinHttpException: The handle is in the wrong state for the requested operation - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180201.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False)) 2/5 | 20180205.01 | Win7 | WinHttpException: The handle is invalid - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180205.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False)) 2/6 | 20180206.04 | Win7 | WinHttpException: The handle is invalid - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180206.04/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20None,%20requestOnlyThisProtocol:%20False)) 2/25 | 20180225.02 | Win8.1 | WinHttpException: The operation has been canceled - [link](https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20180225.02/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.HttpClientHandler_DangerousAcceptAllCertificatesValidator_Test~2FSetDelegate_ConnectionSucceeds(acceptedProtocol:%20Tls,%20Tls11,%20Tls12,%20requestOnlyThisProtocol:%20True)) 2/28 | 20180228.08 | Win7 | WinHttpException: The operation has been canceled 3/2 | 20180302.06 | Win7 | WinHttpException: The operation has been canceled 3/15 | 20180315.02 | Win7 | WinHttpException: The operation has been canceled 3/19 | 20180319.01 | Win7 | WinHttpException: The operation has been canceled WinHttpExceptions are similar to #25896 / #25902 / #25912 and others +24277 area-System.Net System.Net.Http.Functional.Tests.CancellationTest.ReadAsStreamAsync_ReadAsync_Cancel_BodyNeverStarted_TaskCanceledQuickly failed in CI Failed test: System.Net.Http.Functional.Tests.CancellationTest.ReadAsStreamAsync_ReadAsync_Cancel_BodyNeverStarted_TaskCanceledQuickly Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_release/268/testReport/System.Net.Http.Functional.Tests/CancellationTest/ReadAsStreamAsync_ReadAsync_Cancel_BodyNeverStarted_TaskCanceledQuickly/ Configuration: OuterLoop_netcoreapp_win7_release MESSAGE: ~~~ Elapsed time 00:00:59.8682196 should be less than 30 seconds, was 59.8682196\r\nExpected: True\r\nActual: False ~~~ STACK TRACE: ~~~ at System.Net.Http.Functional.Tests.CancellationTest.<>c__DisplayClass4_1.<b__0>d.MoveNext() in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Http\tests\FunctionalTests\CancellationTest.cs:line 157 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Test.Common.LoopbackServer.<>c__DisplayClass3_0.b__0(Task t) in D:\j\workspace\outerloop_net---15cfbbd5\src\Common\tests\System\Net\Http\LoopbackServer.cs:line 67 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.Functional.Tests.CancellationTest.d__4.MoveNext() in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Http\tests\FunctionalTests\CancellationTest.cs:line 114 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +24280 area-Meta Object Can't Cast to Itself Message=[A]Donn.EAM.Archives.Entity.Asset cannot be cast to [B]Donn.EAM.Archives.Entity.Asset. Type A originates from 'Donn.EAM.Archives.Entity, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'D:\MainServer\bin\Debug\netcoreapp2.0\Donn.EAM.Archives.Entity.dll'. Type B originates from 'Donn.EAM.Archives.Entity, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'D:\MainServer\bin\Debug\netcoreapp2.0\Donn.EAM.Archives.Entity.dll'. All assemblies and types are loaded by assembly. Load when the program is started An error occurs when an object created by reflection is converted to a target object through the AS. What is the difference between loading assemblies between NET Framework and net Core app, +24281 area-System.Security X509Stores, HttpClient: Support custom CA bundle via environment variables Something similar to curl's CURL_CA_BUNDLE. from man curl: > --cacert (TLS) Tells curl to use the specified certificate file to verify the peer. The file may contain multiple CA certificates. The certificate(s) must be in PEM format. Normally curl is built to use a default file for this, so this option is typically used to alter that default file. curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is set, and uses the given path as a path to a CA cert bundle. This option overrides that variable. This provides a global way to provide custom CA for all dotnet application. It avoids applications breaking and having to implement their own. This is in particular useful in corporate environments where the https proxy is signed by a custom CA. @stephentoub @davidsh @geoffkizer @wfurt @karelz +24282 area-System.Data Enlisting in Ambient transactions is not supported " using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { SqlCommand cmd = new SqlCommand(""ProcedureName"", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue(""Name"", ""upendra""); cmd.Parameters.AddWithValue(""EmailId"", ""a@a.com""); cmd.Parameters.AddWithValue(""MobileNumber"", ""384747848""); con.Open(); cmd.ExecuteNonQuery(); scope.Complete(); } **Error: Enlisting in Ambient transactions is not supported**" +24285 area-Infrastructure Enable CI for RHEL.6 +24288 area-System.Net Use ManagedHandler in managed ClientWebSocket ClientWebSocket's managed implementation currently has its own basic Socket-based code for establishing a websocket connection. This change switches it to use ManagedHandler instead, and in doing so benefits from improvements made to ManagedHandler thus far and in the future. For example, currently the managed ClientWebSocket doesn't support ClientWebSocketOptions.Proxy or ClientWebSocketOptions.Credentials, but since ManagedHandler does, now the managed ClientWebSocket does, too. As part of this, there are several additional commits: - Making some tweaks to how ManagedWebSocket works: not using the ArrayPool for receive buffers (doing so ends up not being particularly useful in real scenarios and ends up draining the corresponding pool bucket for other users of it), and reducing spurious completions to try to return complete received messages when possible. - Reducing some unnecessary allocations from ClientWebSocketOptions. - Fixing several tests that were either unreliable or super long running. cc: @geoffkizer, @Priya91, @wfurt, @anurse Fixes https://github.com/dotnet/corefx/issues/23152 +24291 area-Serialization Cache regexes for assembly name check in DataContract "Not sure how often `IsAssemblyFriendOfSerialization(Assembly)` is being hit but it looks like at least multiple times. This PR reduces heap allocation and therefore GC pressure by ""caching"" two regex objects statically instead of always creating new ones for every method invocation. @shmao I'm not familiar with the codebase. If you think the method is easily hit over 1000 times we could also add the Compiled flag to it. cc @danmosemsft " +24292 area-System.Diagnostics FreeBSD: implement System.Diagnostic.Process This is missing on FreeBSD (so as System.Diagnostic.ProcessManager) This is essential for many of the tools to work - as minimum they are trying to get path of the process running. This is part of https://github.com/dotnet/corefx/issues/1626 +24294 area-Infrastructure Add targets to download CoreCLR symbols Depends on: https://github.com/dotnet/buildtools/pull/1700 cc: @danmosemsft @mellinoe @weshaggard +24295 area-System.Net SSLStream : Add Async write overloads Added Async overloads on the write side. This includes a ReadOnlyMemory overload. This required a pushing of readonly memory right through the layers. This is in the effort to simplify and remove old code from SslStream and modernise the internals. It vastly simplifies the chained method calls, (byte[] buffer, int offset, int count becomes ReadOnlyMemory buffer). It also removes a lot of duplicated bounds checks because it's taken care of in the memory struct. If the changes look close to good I will be happy to start the benchmarking process. Cheers Tim +24296 area-System.Memory Memory and ReadOnlyMemory validation errors not matching "**Updated as per the suggestion of a create method** **Updated with design from @stephentoub which allows all cases to be covered** **Updated with design change from @benaadams to allow type inference for T** **Put in namespace and removed the Create to leave only the Dangerous Create** **Added question around moving current Dangerous Create Method** # Rationale A major use case of [ReadOnly]Span/Memory is to replace handing around array buffers and their offsets and count. One of the major benifits of the design as I see it as it moves bounds checks out to where the buffer is created which is excellent. However when upgrading legacy code there seems to be a blocker in that stream defines the triplet to be ` public int SomeMethod(byte[] buffer, int offset, int count); ` This is normally then teamed up with checks on 1. ""is buffer null"" == null argument exception 2. ""is offset negative or past the end of the buffer?"" == argument out of range exception with offset as field referenced 3. ""is count > than buffer.length, or < 0 or count +offset > buffer.length"" == argument out of range exception The issue with the way it currently is, that for anything that takes that triplet you have to manually do validation on the inputs before creating a Memory or risk having exceptions with names that don't match. This causes double validation to take place, once in the legacy code and once in the Memory creation. As Memory is often used on the ""hot paths"" of code it is a penalty for using memory. # Proposal Add ""unsafe"" methods to create memory and readonly memory that avoid the extra checks. Then the checks can be maintained in the code with the same error messages and the double check penalty doesn't have to be paid. ``` c# namespace System.Runtime.InteropServices { public static class Span { public static Span DangerousCreate(T[] array, int start, int length); ... } // ... same for ReadOnlySpan public static class Memory { public static Memory DangerousCreate(T[] array, int start, int length); } // ... same for ReadOnlyMemory } ```` # Usage ``` csharp byte[] buffer; var span = Span.DangerousCreate(buffer, offset, count); // vs var span = Span.DangerousCreate(buffer, offset, count); ``` # Outstanding Questions Should the existing method ``` c# [MethodImpl(MethodImplOptions.AggressiveInlining)] [EditorBrowsable(EditorBrowsableState.Never)] public static Span DangerousCreate(object obj, ref T objectData, int length) ``` Be moved to the new types and should the IDE hiding be removed? # References #24295 The Code this came up in (It means an extra validation path without it) Below no longer matters as the legacy code can maintain it's own named validation. ~~~Survey of the Async methods on classes you can see there are a couple of classes that don't conform but mostly it does.~~ |Class|ArrayName|Start|Length| |---|---|---|---| |FileStream|buffer|offset|count| |NetworkStream|buffer|offset|count| |BufferedStream|buffer|offset|count| |MemoryStream|buffer|offset|count| |StreamReader|buffer|index|count| |StreamWriter|buffer|index|count| |Stream|buffer|offset|count| |SslStream|buffer|offset|count| " +24298 area-System.Globalization "Tests under ""System.Globalization.Tests"" failed with ""Xunit.Sdk.TrueException""" System.Globalization.Tests.RegionInfoPropertyTests.DisplayName failed Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release/3216/testReport/System.Globalization.Tests/RegionInfoPropertyTests/DisplayName_name____en_US____expected____United_States___/ Configuration: osx10.12_release MESSAGE: ~~~ Exit code was 131 but it should have been 42\nExpected: True\nActual: False ~~~ STACK TRACE: ~~~ at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs:line 189 ~~~ +24303 area-Infrastructure Nobody but the developer should ever modify a GIT-tracked file. "I regularly keep GIT-tracked files as read-only, both so I can browse them in editors with peace and so I can catch things that try to do what this thing is doing: https://github.com/dotnet/corefx/blob/a989d4f91cf4208b7a2481d120498a581328eb1d/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props#L144 ``` ``` In a word, **no**. **Only** the developer should ever alter a GIT-tracked file. If GIT reports a change to a file I didn't make, I will ""git reset --hard."" This is precisely one of the benefits of source control - to alert me to unauthorized changes. " +24304 area-System.IO Port fixes for RHEL69 tests to 2.0 https://mc.dot.net/#/product/netcore/200/source/official~2Fcorefx~2Frelease~2F2.0.0~2F/type/test~2Ffunctional~2Fcli~2F/build/20170927.01 @tarekgh since you made these fixes would you mind porting so this goes green? Look like trivial disablings, although a few lines need pasting into PlatformDetection, as it's moved around since 2.0 branched. +24308 area-Serialization Area-Serialization Sprint 125 +24309 area-Serialization Microsoft.XmlSerializer.Generator RTM +24312 area-System.Net IPPacketInformation.Interface Hi! Could you please specify the meaning of the value of IPPacketInformation.Interface? I thought it was an index into the array returned by NetworkInterface.GetAllNetworkInterfaces(), but it is not the case. It isn't a random number, but it's definitely not the proper index either. Thanks, Tamás +24317 area-System.Memory Memory.Retain returns invalid PinnedPointer if backed by OwnedMemory `memory.Slice(10).Retain(true).PinnedPointer` would return pointer to first element of original memory instead of being offset by `10`. /cc @ahsonkhan @KrzysztofCwalina +24318 area-System.IO UWP: 2 System.IO.Pipes failing after enabling other tests on same project ``` System.IO.Pipes.Tests.NamedPipeTest_Specific.Windows_GetImpersonationUserName_Succeed [FAIL] GetNamedPipeHandleState failed Expected: True Actual: False Stack Trace: at System.IO.Pipes.Tests.NamedPipeTest_Specific.d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x7e at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x53 at Void Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d.MoveNext() + 0x2ea --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x7e at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x53 --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x7e at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x53 System.IO.Pipes.Tests.NamedPipeTest_RunAsClient.RunAsClient_Windows [FAIL] Expected delegate to have been invoked Expected: True Actual: False Stack Trace: at System.IO.Pipes.Tests.NamedPipeTest_RunAsClient.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x7e at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x53 at Void Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d.MoveNext() + 0x2ea --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x7e at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x53 --- End of stack trace from previous location where exception was thrown --- at Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21 at Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x7e at Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x53 xUnit.net console test runner (64-bit .NET Core) Copyright (C) 2014 Outercurve Foundation. ``` +24320 area-Infrastructure Announcement: Moving minimum VS support to 2017 and msbuild 15 For the core repo's (standard, corefx, coreclr, core-setup) we are planning to stop supporting VS2015 and msbuild 14 and raising the minimum version to VS2017 and msbuild 15. The reason for this is that there are a number of new features in VS 2017 in the compiler and msbuild that we want to start taking advantage of. Before we make that move we wanted to let folks know and give everyone a chance to speak up if there are any issues with moving. @dotnet/dnceng note that this will require updating our CI and official build machines. Please let me know what needs to happen for that to proceed. @karelz what set of alias' would be best to ping on this issue to raise awareness? +24321 area-Serialization Move XmlSerializer CodeGen from SGen to S.P.Xml. The PR is moving the CodeGen code of XmlSerializer from SGen back to System.Private.Xml. +24322 area-Serialization Add more parameters support in SGEN. Add following four parameters. nologo - Prevents displaying of logo. silent - Prevents displaying of success messages. verbose - List types from the target assembly that cannot be serialized. This is related to #22938 parsableerrors - Print errors in a format similar to those reported by compilers. Fix #22931 Fix #22938 @shmao @zhenlan @mconnew +24323 area-System.Memory Adding MemoryHandle AddOffset to fix Memory.Retain impl Fixes https://github.com/dotnet/corefx/issues/24317 - AddOffset throws if PinnedPointer is null. Should it fail silently and do nothing? - Would it be better to create a setter for PinnedPointer instead of the AddOffset API? Related PR: https://github.com/dotnet/coreclr/pull/14248 cc @pakrym, @KrzysztofCwalina, @stephentoub, @davidfowl, @jkotas +24327 area-System.Linq TakeLast on empty list throws InvalidOperationException (Empty Queue) "**Repro steps** ```csharp var x = new List(); var y = x.TakeLast(100); Console.WriteLine(""Any()="" + y.Any()); ```` **Expected Result** The same as the `Take()`, i.e, the Any() returns false **Actual Result** An exception is thrown ``` Unhandled Exception: System.InvalidOperationException: Queue empty. at System.Collections.Generic.Queue`1.ThrowForEmptyQueue() at System.Collections.Generic.Queue`1.Dequeue() at System.Linq.Enumerable.d__208`1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source) ``` " +24328 area-System.Linq Fix handling of empty inputs to TakeLast It currently ends up trying to remove an element from an empty queue, causing an exception. Fixes https://github.com/dotnet/corefx/issues/24327 cc: @JonHanna, @jamesqo, @VSadov, @OmarTawfik, @bfcamara +24331 area-Infrastructure Fix RHEL.6 CI build I have missed msbuild options separator in the build.sh invocation when adding the /p:PortableBuild=false option. I have also missing the -runtimeos option at all scripts invocations. +24332 area-System.Drawing Unable to use .NET Framework library that uses System.Drawing Hello! Apologies if the answer is obvious, but I'm attempting to use a .NET Framework library (ZedGraph) that uses System.Drawing in my .NET Core 2 application and am having difficulties doing so. I added a reference to the new System.Drawing.Common package, but while it lets me use System.Drawing classes (like Graphics) it doesn't seem to transfer to the .NET Framework library I'm using. If I attempt to call a method in the library that takes in or returns a System.Drawing object such as Graphics, I get a compile error like the following: ``` CS7069: Reference to type 'Graphics' claims it is defined in 'System.Drawing', but it could not be found ``` Any clue what's going on? I tried recompiling the library to .NET Framework 4.5.1 (it was previous compiled for 3.5), to no avail. Thanks! Steps to reproduce: 1. Create a ,NET Core 2 class library 2. Add references to System.Drawing.Common and ZedGraph 3. Call a ZedGraph method whose signature involves a System.Drawing class, such as this: `new ZedGraph.GraphPane().Draw(out System.Drawing.Graphics g);` +24333 area-System.Text Regex performance compare with other programming languages There is a [mariomka/regex-benchmark](https://github.com/mariomka/regex-benchmark) repo that run regex benchmark for different programming languages. I'm just wondered why **C#** `Regex` performance is the last and way slower than any other programming languages. Is there any way to speed up `Regex` performance in .NET or any reason why .NET `Regex` is that slow? +24334 area-Meta INstalling application using clickonce Hi, we have a application built with clcikonce deployment. Whe we are trying to install using https:// it is returning the below error. Please suggest. ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * Activation of https://imastest.testweb.bp.com/iMASApplication/iMAS-TEST.application resulted in exception. Following failure messages were detected: + Downloading https://imastest.testweb.bp.com/iMASApplication/iMAS-TEST.application did not succeed. + The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. + The remote certificate is invalid according to the validation procedure. COMPONENT STORE TRANSACTION FAILURE SUMMARY No transaction error was detected. WARNINGS There were no warnings during this operation. OPERATION PROGRESS STATUS * [9/29/2017 5:20:16 PM] : Activation of https://imastest.testweb.bp.com/iMASApplication/iMAS-TEST.application has started. ERROR DETAILS Following errors were detected during this operation. * [9/29/2017 5:20:17 PM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype) - Downloading https://imastest.testweb.bp.com/iMASApplication/iMAS-TEST.application did not succeed. - Source: System.Deployment - Stack trace: at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState, X509Certificate2 clientCertificate) at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) --- Inner Exception --- System.Net.WebException - The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. - Source: System - Stack trace: at System.Net.HttpWebRequest.GetResponse() at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) --- Inner Exception --- System.Security.Authentication.AuthenticationException - The remote certificate is invalid according to the validation procedure. - Source: System - Stack trace: at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) +24335 area-System.Diagnostics Port System.Diagnostics.PerformanceCounters to .NET Core This change ports the Windows PerformanceCounters library to Core. +24336 area-System.Data SqlClient fails to generate SSPI context in UWP 6.0 "Hello! I'm testing UWP with SqlClient on Win10 and can't resolve this weird error. I'll provide details on the software I'm using first: Windows 10 build 16299 (preview for the Fall Creator's update) Visual Studio 2017 version 15.4.0 Preview 3.0 .NET core 2.0 SDK/runtime Nuget Packages for project: Microsoft.EntityFrameworkCore.SqlServer v2.0 Microsoft.NETCore.UniversalWindowsPlatform v6.0.0-preview-25706-01 The project targets and has as the minimum Windows build 16278 an (the previous update before 16299 installed this morning). I can connect to and query the database using a .NET core console application, and also within Visual Studio's Server Explorer. The exception is as follows: `System.Data.SqlClient.SqlException: 'Failed to generate SSPI context. ErrorCode=NoCredentials.` The code to connect to the database is as follows (it is in the code-behind for a control on the main page.) ``` ... using System.Data.SqlClient; ... this.InitializeComponent(); using(SqlConnection helpdeskTest = new SqlConnection()) { helpdeskTest.ConnectionString = ""Data Source = xxx.xxx.xxx; Initial Catalog = whd; Integrated Security = True""; helpdeskTest.Open(); // Exception occurs here. SqlCommand getAssets = new SqlCommand(""SELECT * FROM ASSET"") { Connection = helpdeskTest }; using(SqlDataReader result = getAssets.ExecuteReader()) { while(result.Read()) { asset_list.Items.Add(result[""ASSET_NUMBER""]); } } } ``` Should this work? The connection string is identical to the one in server explorer. If this is the wrong place for this question / bug, please let me know!" +24337 area-System.Collections Improve performance of Immutable/SecureObjectPool/AllocFreeConcurrentStack @karelz could you assign this to me? +24339 area-Serialization Make SGEN public methods be internal +24340 area-System.Globalization Fix/disable RedHat System.Globalization, System.IO.Pipes, System.IO.FileSystem failures Fixes: https://github.com/dotnet/corefx/issues/24304 Fixes: https://github.com/dotnet/corefx/issues/23628 Fixes: https://github.com/dotnet/corefx/issues/23630 (port disable from master) Contributes to: https://github.com/dotnet/corefx/issues/21920 Original fix made by @tarekgh will require changes to CoreCLR (add ICU version detection to native code) which is likely not appropriate as servicing change which does not fix any product bugs. This PR replaces https://github.com/dotnet/corefx/pull/24338 which was against dev/release/2.0.0 +24342 area-System.Diagnostics Merge System.Diagnostics.Tracing.EventCounter fix to release System.Diagnostics.Tracing.EventCounter relies on a relatively new callback added to System.Diagnostics.Tracing.EventSource. Due to an build configuration problem the code that calls this callback was #ifdefed out in the .NET Core 2.0 release. This was fixed months ago but the fix has not made it into the release branches. The result is that EventCounters can't be turned on (that is if you signal to the EventSource that you want EventCounter data, it is ignored). This makes the type useless. This PR merges the fix from the master branch for this issue. It also fixes a number of races associated with the code that happened to be fixed in the same PR as well as beefed up the testing. The change is safe because it only affect EventCounter (or its testing), and currently EventCounter is pretty broken . +24343 area-System.Memory Add SpanExtensions.AsVector # Final/Approved Proposal https://github.com/dotnet/corefx/issues/24343#issuecomment-349418624 ```c# namespace System.Numerics { public struct Vector { // Existing API public Vector(T[] values); // Proposed API public Vector(Span values); } } ``` # Original Proposal It's quite common to want to convert a Span to Vector. It's possible to open code such conversion, but the code is a bit tricky and people do it commonly enough that we shoudl just add a helper to SpanExtensions ```C# public static Vector AsVector(this Span slice) { if (slice.Length < Vector.Count) throw new ArgumentOutOfRangeException(); return Unsafe.ReadUnaligned>(ref Unsafe.As(ref slice.DangerousGetPinnableReference())); } ``` cc: @jkotas, @mellinoe, @ahsonkhan, @benaadams, @stephentoub +24344 area-System.Diagnostics Port System.Diagnostics.EventLog to .NET Core Adding Eventlog to .Net Core +24345 area-Serialization Make the public class be internal in sgen. Fix #24339 @shmao @zhenlan @mconnew +24346 area-System.Runtime S.R.Intrinsics.X86 for .NET Standard? I've been loosely following the S.R.Intrinsics.X86 feature; apologies if this has been discussed before. As far as I know, S.R.Intrinsics.X86 requires support both from the hardware and from the CLR. Currently, the `IsSupported` properties indicate whether hardware support is present. This allows users to write code like this: ```csharp if (Sse2.IsSupported) { // fast path } else { // slow path } ``` The S.R.Intrinsics.X86 package is currently only available for `netcoreapp2.1`. This means if users want to target .NET Standard, they have to compile two versions of their library; one for .NET Core 2.1 and one for .NET Standard: ```csharp #if NETCOREAPP2_1 if (Sse2.IsSupported) { // fast path } else { #endif // slow path #if NETCOREAPP2_1 } #endif ``` Could the package be changed to target .NET Standard and the `IsSupported` properties be changed to indicate whether both hardware support and CLR support is available? Then users could simply target .NET Standard and any environment that has the right hardware and CLR would automatically take the fast path, without users having to compile their library individually for every CLR that supports the feature now or in the future. +24347 area-Infrastructure Update build to clang/llvm 3.9 Update scripts, docs and build pipeline docker images to clang/llvm/lldb 3.9 +24352 area-System.Net SSLStream : Removed sync lock method "Looking at the code, because this method is basically never actually blocked on (only if a renegotiation takes place during a write) there is no need for a second ""sync"" method. Instead we can block on the Async method as it is controlled via a TCS anyway and doesn't go down to a ""real blocking method"" at the OS level so no extra threads should be generated from the original. This again simplifies the code maintenance going forward and refactoring SslState" +24353 area-System.Drawing "Tests under: MonoTests.System.Drawing.Imaging.PngCodecTest failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `MonoTests.System.Drawing.Imaging.PngCodecTest/Bitmap1bitFeatures` has failed. Assert.Equal() Failure Expected: 0 Actual: 1 Stack Trace: at MonoTests.System.Drawing.Imaging.PngCodecTest.Bitmap1bitFeatures() in /root/corefx-1027731/src/System.Drawing.Common/tests/mono/System.Drawing.Imaging/PngCodecTesst.cs:line 78 Build : Master - 20170930.01 (Core Tests) Failing configurations: - SLES.12.Amd64-x64 - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170930.01/workItem/System.Drawing.Common.Tests/analysis/xunit/MonoTests.System.Drawing.Imaging.PngCodecTest~2FBitmap1bitFeatures +24354 area-System.Drawing "Tests under: MonoTests.System.Drawing.Imaging.PngCodecTest failed with ""System.ArgumentException""" Opened on behalf of @Jiayili1 The test `MonoTests.System.Drawing.Imaging.PngCodecTest/Bitmap2bitData` has failed. System.ArgumentException : Parameter is not valid. Stack Trace: at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status) in /root/corefx-1027731/src/System.Drawing.Common/src/System/Drawing/Gdiplus.cs:line 269 at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm) in /root/corefx-1027731/src/System.Drawing.Common/src/System/Drawing/Bitmap.Unix.cs:line 128 at System.Drawing.Bitmap..ctor(String filename) in /root/corefx-1027731/src/System.Drawing.Common/src/System/Drawing/Bitmap.Unix.cs:line 105 at MonoTests.System.Drawing.Imaging.PngCodecTest.Bitmap2bitData() in /root/corefx-1027731/src/System.Drawing.Common/tests/mono/System.Drawing.Imaging/PngCodecTesst.cs:line 343 Build : Master - 20170930.01 (Core Tests) Failing configurations: - SLES.12.Amd64-x64 - Debug - Release - Ubuntu.1704.Amd64-x64 - Debug - Release - Debian.90.Amd64-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170930.01/workItem/System.Drawing.Common.Tests/analysis/xunit/MonoTests.System.Drawing.Imaging.PngCodecTest~2FBitmap2bitData +24355 area-System.Net Tests failures: System.Net.NameResolution.Tests / DnsObsolete* & Dns_GetHostEntry* ## Type of failures Affected tests: * `System.Net.NameResolution.Tests.GetHostByNameTest` (both always fail together) * `DnsObsoleteGetHostByName_EmptyString_ReturnsHostName` * `DnsObsoleteBeginEndGetHostByName_EmptyString_ReturnsHostName` * `System.Net.NameResolution.Tests.GetHostEntryTest` (both always fail together) * `Dns_GetHostEntry_HostString_Ok` * `Dns_GetHostEntryAsync_HostString_Ok` Failure text: * OSX: **Device not configured** * Linux: **No such device or address** ``` System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Device not configured OR System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : No such device or address at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) in /Users/buildagent/agent/_work/34/s/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 46 at System.Net.Dns.GetHostByName(String hostName) in /Users/buildagent/agent/_work/34/s/corefx/src/System.Net.NameResolution/src/System/Net/DNS.cs:line 41 at System.Net.NameResolution.Tests.GetHostByNameTest.DnsObsoleteGetHostByName_EmptyString_ReturnsHostName() in /Users/buildagent/agent/_work/34/s/corefx/src/System.Net.NameResolution/tests/FunctionalTests/GetHostByNameTest.cs:line 108 ``` Note: * `Dns_GetHostEntryAsync_HostString_Ok` fails almost always with same error twice, wrapped in `System.AggregateException`. ### Older failure on OSX (prior to 2017/9/15) ``` Assert.Contains() Failure Not found: DCI-Mac-Build-068.local In value: dci-mac-build-068.local at System.Net.NameResolution.Tests.GetHostByNameTest.DnsObsoleteGetHostByName_EmptyString_ReturnsHostName() in /Users/buildagent/agent/_work/30/s/corefx/src/System.Net.NameResolution/tests/FunctionalTests/GetHostByNameTest.cs:line 108 ``` ## History of failures Each test couple always fails or passes - maybe bad machine setup? Day | Build | OS | Test -- | -- | -- | -- 9/6 | 20170906.01 | OSX10.12 | DnsObsolete* 9/10 | 20170910.01 | Ubuntu14.04 | DnsObsolete* & Dns_GetHostEntry* 9/13 | 20170913.02 | OSX10.12 | DnsObsolete* 9/15 | 20170915.01 | OSX10.12 | DnsObsolete* 9/20 | 20170920.03 | Debian90 | DnsObsolete* & Dns_GetHostEntry* 9/30 | 20170930.01 | OSX10.12 | DnsObsolete* & Dns_GetHostEntry* 10/2 | 20171002.01 | Debian87 | DnsObsolete* & Dns_GetHostEntry* 10/21 | 20171021.01 | Debian87 | DnsObsolete* & Dns_GetHostEntry* 10/26 | 20171026.01 | Suse42.2 | DnsObsolete* & Dns_GetHostEntry* 11/13 | 20171113.03 | OSX10.12 | DnsObsolete* & Dns_GetHostEntry* 11/16 | 20171116.51 | SLES12 | DnsObsolete* & Dns_GetHostEntry* 11/26 | 20171126.02 | Suse42.2 | DnsObsolete* & Dns_GetHostEntry* Similar failures to #20245, but at different times (probably runs on different worker machine). +24356 area-System.Net "Tests under: System.Net.Security.Tests.ServerAsyncAuthenticateTest failed with ""System.ComponentModel.Win32Exception""" Failed tests: System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_EachSupportedProtocol_Success System.Net.Security.Tests.ServerAsyncAuthenticateTest.ServerAsyncAuthenticate_MismatchProtocols_Fails Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netcoreapp_win7_release/272/testReport/System.Net.Security.Tests/ServerAsyncAuthenticateTest/ServerAsyncAuthenticate_AllClientVsIndividualServerSupportedProtocols_Success_serverProtocol__Tls_/ Configuration: outerloop_netcoreapp_win7_release MESSAGE: ~~~ System.ComponentModel.Win32Exception : The client and server cannot communicate, because they do not possess a common algorithm ~~~ STACK TRACE: ~~~ at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) in D:\j\workspace\outerloop_net---15cfbbd5\src\Common\src\Interop\Windows\sspicli\SSPIWrapper.cs:line 167 at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs:line 408 at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslStreamPal.Windows.cs:line 131 at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs:line 677 at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs:line 784 at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SecureChannel.cs:line 707 at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 749 at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 965 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 868 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 681 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslState.cs:line 598 at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 161 at System.Net.Security.SslStream.<>c.b__35_1(X509Certificate arg1, Boolean arg2, SslProtocols arg3, AsyncCallback callback, Object state) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 273 at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2,TArg3](Func`6 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3, Object state, TaskCreationOptions creationOptions) at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\src\System\Net\Security\SslStream.cs:line 274 at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__11.MoveNext() in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs:line 154 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAsyncAuthenticateTest.d__9.MoveNext() in D:\j\workspace\outerloop_net---15cfbbd5\src\System.Net.Security\tests\FunctionalTests\ServerAsyncAuthenticateTest.cs:line 95 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ~~~ +24357 area-System.Diagnostics [System.Diagnostics.Process]::GetProcesses(computer) returns local processes "Repro in PowerShell Core 6 ```powershell [System.Diagnostics.Process]::GetProcesses(""not existing computer"") ``` Expected ```none error not able to connect to computer ``` Actual ```none local processes returned ``` " +24358 area-System.Net Test: System.Net.Tests.HttpRequestStreamTests / Read_NullBuffer_ThrowsArgumentNullException Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpRequestStreamTests/Read_NullBuffer_ThrowsArgumentNullException(chunked: True)` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Net.Tests.HttpRequestStreamTests.d__17.MoveNext$fin$0() in E:\A\_work\327\s\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs:line 16707566 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : Master - 20170930.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170930.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpRequestStreamTests~2FRead_NullBuffer_ThrowsArgumentNullException(chunked:%20True) +24360 area-System.Xml XmlDocument The name 'debuggerDisplayProxy' does not exist in the current context When I create a new XmlDocument the local variable is showing the following error error CS0103: The name 'debuggerDisplayProxy' does not exist in the current context ![image](https://user-images.githubusercontent.com/7502746/31047927-f6ac56ee-a5d8-11e7-9123-d7342f1a1dcc.png) +24361 area-System.Net Problem with HttpClient after updating my project from net461 to netcoreapp2.0 I have a piece of code that makes a httpRequest in a page in a domain www.example.gr i am redirected in a page (auth.example.gr) to login. I post some data to login and get the right cookies, so i can use the admin page. This code works fine with .net framework 461. When i test it with netcore 2.0, when i post the data to Login i get this error. > **The operation has been canceled** > **The read operation failed, see inner exception.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() > **Error while copying content to a stream.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() I don't know what else to provide to help you more. Please inform me. Thank you. +24362 area-System.Linq release/2.0: Fix handling of empty inputs to TakeLast (#24328) Fixes #24327 Port https://github.com/dotnet/corefx/pull/24328 to release/2.0.0 branch. +24363 area-System.Net WinHttpHandler not respecting case sensitivity of request `Connection` header (`Keep-Alive`) "The `WinHttpHandler` class (and I'm assuming WinHTTP) has an issue when sending the `Connection` HTTP header. The problem is that any requests sent through `WinHttpHandler` that are intended to be keep-alive always emit a header that reads `Connection: Keep-Alive` (note the casing of the header value). I am also looking for a workaround / alternatives, as I have no control over the server I am sending requests to (the server chokes on `Connection: Keep-Alive` but not `Connection: keep-alive`). Setup: - Dotnet Core 2.0.0 - Windows 10 Creators Update Notes: - Dotnet Core 2.0.0 on Ubuntu 16.04.2 LTS with `CurlHandler` does not exhibit this problem Unit Test: ``` public sealed class WinHttpHandlerTests { [Theory] [InlineData(""keep-alive"")] [InlineData(""KEEP-ALIVE"")] [InlineData(""Keep-Alive"")] [InlineData(""KEEP_ALIVE"")] public async Task ShouldRespectConnectionCaseSensitivity(string expectedHeaderValue) { using (var listener = new EchoingHttpListener()) using (var request = new HttpRequestMessage(HttpMethod.Get, $""http://localhost:{listener.Port}"")) { request.Headers.TryAddWithoutValidation(""Connection"", expectedHeaderValue); using (var client = new HttpClient(new WinHttpHandler())) using (var response = await client.SendAsync(request)) { var body = await response.Content.ReadAsStringAsync(); var actualHeaderValue = Regex.Match(body, ""Connection: (.*)\r\n"").Groups[1].Value; Assert.Equal(expectedHeaderValue, actualHeaderValue); } } } } internal sealed class EchoingHttpListener : IDisposable { private readonly CancellationTokenSource _cts = new CancellationTokenSource(); private readonly TcpListener _listener = new TcpListener(IPAddress.Any, 0); private readonly Task _listenTask; public EchoingHttpListener() { _listener.Start(); Port = ((IPEndPoint) _listener.LocalEndpoint).Port; var token = _cts.Token; _listenTask = Task.Run(async () => await Listen(token)); } private async Task Listen(CancellationToken token) { while (!token.IsCancellationRequested) { using (var client = await _listener.AcceptTcpClientAsync()) { var stream = client.GetStream(); var encoding = new UTF8Encoding(false); using (var reader = new StreamReader(stream, encoding, false, 2048, true)) using (var writer = new StreamWriter(stream, encoding, 2048, true)) { var request = await ReadRequestAsync(reader); await writer.WriteLineAsync(""HTTP/1.1 200 OK""); await writer.WriteLineAsync(""Connection: close""); await writer.WriteLineAsync(""Content-Type: text/plain; charset=utf-8""); await writer.WriteLineAsync($""Content-Length: {encoding.GetByteCount(request)}""); await writer.WriteLineAsync(); await writer.WriteAsync(request); } } } } private static async Task ReadRequestAsync(TextReader reader) { var sb = new StringBuilder(); string line; do { line = await reader.ReadLineAsync(); sb.AppendLine(line); } while (line != string.Empty); return sb.ToString(); } public int Port { get; } public void Dispose() { _listener.Stop(); _cts.Cancel(); try { _listenTask.Wait(); } catch { // ignored } _cts.Dispose(); } } ```" +24364 area-System.Diagnostics Static PerformanceCounterLib.GetPerformanceCounterLib is not thread-safe Outside of any locks GetPerformanceCounterLib both reads and writes to a normal. static `Dictionary<>`. https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs#L74-L78 +24365 area-System.Collections Proposal: BoundedConcurrentQueue "`ConcurrentQueue` is an unbounded, thread-safe queue, where the primary operations are Enqueue and TryDequeue. It's one of the more valuable concurrent collection types. However, unbounded collections aren't always desirable. For example, consider wanting to use a concurrent queue for object pooling. If you want to ensure you don't store more than N objects, this is difficult or impossible to achieve efficiently with `ConcurrentQueue`, which will automatically grow its storage to store the item being added if there's insufficient room. `ConcurrentQueue`, however, is actually implemented as a wrapper for a bounded queue, internally called `ConcurrentQueue.Segment`. https://github.com/dotnet/corefx/blob/9c468a08151402a68732c784b0502437b808df9f/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentQueue.cs#L820 In essence, `ConcurrentQueue.Segment` provides the bounded queue behavior, and `ConcurrentQueue` layers on top of that unbounded semantics. We should clean up the `Segment` APIs and expose it as ```C# namespace System.Collections.Concurrent { public sealed class BoundedConcurrentQueue { public BoundedConcurrentQueue(int capacity); // capacity must a power of 2 that's >= 2 public int Capacity { get; } public int Count { get; } public bool IsEmpty { get; } public bool TryEnqueue(T item); public bool TryDequeue(out T item); } } ``` The current implementation is fast, and is able to achieve that speed in part by eschewing some functionality that would weigh it down non-trivially, e.g. enumeration. That's why it doesn't implement any interfaces like `IEnumerable` or `IReadOnlyCollection` that would force us to add such behavior and slow it down. This collection would be very specialized and used purely for its ability to have items enqueued and dequeued quickly. (Methods like TryPeek, ToArray, CopyTo, GetEnumerator, etc., all require the ability to look at data in the queue without removing it, and in the current implementation, that requires marking the segment as ""preserving for observation"", which means nothing will ever be removed from the queue; this has the effect of continuing to allow enqueues until the segment is full, but since dequeues don't end up removing data, at that point nothing further can be enqueued, even if everything is dequeued. `ConcurrentQueue` deals with this simply by creating a new segment, but that doesn't work for the segment itself.)" +24366 area-Infrastructure GenerateDepsJson task failed with ArgumentException "I did a clean, sync, build locally and hit this (it succeeded on a subsequent attempt): ``` c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: The ""GenerateDepsJson"" task failed unexpectedly. c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: System.ArgumentException: Can not add property runtimes/win-x64/lib/netcoreapp2.0/mscorlib.dll to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object. c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Newtonsoft.Json.Linq.JObject.ValidateToken(JToken o, JToken existing) c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Newtonsoft.Json.Linq.JContainer.InsertItem(Int32 index, JToken item, Boolean skipParentCh eck) c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Newtonsoft.Json.Linq.JObject.InsertItem(Int32 index, JToken item, Boolean skipParentCheck ) c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Newtonsoft.Json.Linq.JContainer.AddInternal(Int32 index, Object content, Boolean skipPare ntCheck) c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Newtonsoft.Json.Linq.JContainer.Add(Object content) c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Newtonsoft.Json.Linq.JObject.Add(String propertyName, JToken value) c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Microsoft.DotNet.Build.Tasks.GenerateDepsJson.Execute() c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Exec ute() c:\Users\stoub\Source\Repos\corefx\src\src.builds(30,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() ``` cc: @ericstj " +24367 area-System.Xml Fix DebuggerDisplay for XmlNode "Somewhere along the way XmlNode's debuggerDisplayProxy property was removed. That doesn't break the build, as it's only used via reflection, but it does break the debugger display tooltip. This just copy-and-pastes the corresponding implementation from reference source to fix it. The only other change I made was renaming ""node"" to ""_node"" and making it readonly. Fixes https://github.com/dotnet/corefx/issues/24360 cc: @krwq, @pjanotti, @angelcalvasp (Subsequently we should ideally add tests for these debugger displays like we have elsewhere in corefx, so that we don't inadvertently break them again. We may even find we have similar issues elsewhere.)" +24368 area-System.Net CookieContainer doesn't return all relevant cookies "Adding a new non-matching cookie can prevent matching cookies from being found. ```c# var uri1 = new Uri(""http://www.example.com/""); var uri2 = new Uri(""http://www.example.com/level1/""); var uri3 = new Uri(""http://www.example.com/level1/level2a""); var uri4 = new Uri(""http://www.example.com/level1/level2b""); var cookieContainer = new CookieContainer(); cookieContainer.Add(new Cookie(""cookie1"", ""value1"", uri1.AbsolutePath, uri1.Host)); cookieContainer.Add(new Cookie(""cookie2"", ""value2"", uri2.AbsolutePath, uri2.Host)); cookieContainer.Add(new Cookie(""cookie3"", ""value3"", uri3.AbsolutePath, uri3.Host)); var beforeCount = cookieContainer.GetCookies(uri3).Count; Console.WriteLine(beforeCount); // 3 cookieContainer.Add(new Cookie(""cookie4"", ""value4"", uri4.AbsolutePath, uri4.Host)); var afterCount = cookieContainer.GetCookies(uri3).Count; Console.WriteLine(afterCount); // 2 ```" +24369 area-System.Net Change CookieContainer to return all relevant cookies Test case and fix for #24368. Adding a new non-matching cookie could cause matching cookies to not be returned. +24370 area-System.Security Proposal: Make Utils.BuildBagOfCerts an extension point Currently, both `SignedXml` and `EncryptedXml` (in `System.Security.Cryptography.Xml`) call into `Utils.BuildBagOfCerts` to retrieve certificates for Decryption or Validation. The `BuildBagOfCerts` is hardwired to use `X509Store` (user/machine store). I'd like to do my own handling of Certificates in my application. I would thus like a new virtual method `X509Certificate2Collection BuildBagOfCerts(KeyInfoX509Data keyInfoX509Data, CertUsage certUsageType)` in both `SignedXml` and `EncryptedXml` that I can use to do my own handling. As `CertUsage` is internal, this would either need to be public, or a simple `bool needsPrivateKey = false` to indicate that we need the private key, or omit it since it's clear which class needs which. SignedXml already has a private `BuildBagOfCerts` method which could call into it's virtual method, and EncryptedXml only calls it in `DecryptEncryptedKey`. Proposal: ```cs public class SignedXml { protected virtual X509Certificate2Collection BuildBagOfCerts(KeyInfoX509Data x509Data) { return Utils.BuildBagOfCerts(x509Data, CertUsageType.Verification) } private X509Certificate2Collection BuildBagOfCerts() { X509Certificate2Collection collection = new X509Certificate2Collection(); if (KeyInfo != null) { foreach (KeyInfoClause clause in KeyInfo) { KeyInfoX509Data x509Data = clause as KeyInfoX509Data; if (x509Data != null) collection.AddRange(BuildBagOfCerts(x509Data)); } } return collection; } } public class EncryptedXml { protected virtual X509Certificate2Collection BuildBagOfCerts(KeyInfoX509Data x509Data) { return Utils.BuildBagOfCerts(x509Data, CertUsageType.Decryption) } public virtual byte[] DecryptEncryptedKey(EncryptedKey encryptedKey) { // snip... kiX509Data = keyInfoEnum.Current as KeyInfoX509Data; if (kiX509Data != null) { X509Certificate2Collection collection = BuildBagOfCert(kiX509Data); foreach (X509Certificate2 certificate in collection) // snip... } } ``` +24371 area-System.Data Data.SqlClient : Intermittent Kerberos issues on Linux Hi, I'm using the new IntegratedAuthentication feature in the SqlClient (version 4.4 of the Data.SqlClient package and dotnetcore 2.0) on RHEL7 in a docker image. It usually works, but I do get intermittent failures of ``` Wcm.ServiceModel.Net.InterServiceException: One or more errors occurred. (Cannot access Kerberos ticket. Ensure Kerberos has been initialized with 'kinit'. ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - An invalid status code was supplied (SPNEGO cannot find mechanisms to negotiate). at System.Net.Security.NegotiateStreamPal.GssInitSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags, Int32& isNtlmUsed) at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags) at System.Data.SqlClient.SNI.SNIProxy.GenSspiClientContext(SspiClientContextStatus sspiClientContextStatus, Byte[] receivedBuff, Byte[]& sendBuff, Byte[] serverName) at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.GenerateSspiClientContext(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength, Byte[] _sniSpnBuffer) at System.Data.SqlClient.TdsParser.SNISSPIData(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength)) ``` It then starts working again after a while. No restart of the program is required. And yes, I did run kinit before starting the application. Due to the intermittent nature of this failure I'm not really sure what's wrong and I was hoping someone here might have an idea. [EDIT] Fix callstack formatting by @karelz +24372 area-System.Net Add Last-Modified to HttpResponseHeaders +24373 area-System.Net Give access to raw list of headers in HttpResponseHeaders "If a header is not accessible through HttpResponseHeaders (in my case Last-Modified) it would be convenient to have access to the raw list of headers: response.Headers.Values(""Last-Modified"") Currently this does not give a result, although I put the header in the response (as I can check by testing it in Postman)." +24374 area-System.Data transactionScope Error. Enlisting in Ambient transactions is not supported "> Enlisting in Ambient transactions is not supported I get this error when dedugging the code below in .net core 2 console app on my win 10 PC with VS 2017 15.3.2 (System.Data.SqlClient v4.4.0) ``` using (TransactionScope scope = new TransactionScope()) { using (SqlConnection connection1 = new SqlConnection(_configuration[""ConnectionString""])) { connection1.Open(); } scope.Complete(); } ``` Transactionscope is part of the .net standard 2 and the code above was taken from microsoft's documentation https://docs.microsoft.com/en-gb/dotnet/api/system.transactions.transactionscope?view=netcore-2.0" +24375 area-System.Security RSAKeyValue.LoadXml not working when XmlElement input has namespace prefix Are there any know workaround for issue #22229 with digital signatures? +24376 area-System.IO Drive formatting APIs I searched a lot about this topic, and I think that drive formatting should be supported in .NET Core. I understand that these APIs may seem unnecessary and dangerous, but there are use cases for it. ## Use Cases My use case is preparing USB drives to boot, in a cross platform way and avoiding the creation of separate processes (which would require a separate application, not managed). There are probably other use cases, but I can't think of any at the moment. ## Proposed APIs I suggest something like this: ```cs namespace System.IO { [Flags] public enum FileSystemType { NTFS, FAT32 // others } public class DriveInfo { // Flags or IEnumerable ? public FileSystemType SupportedFileSystems { get; } public void Format(FileSystemType fileSystemType); public Task FormatAsync(FileSystemType fileSystemType); } } ``` ## Open Questions This would be a dangerous method, what security checks should be done? +24377 area-System.Xml Add test to prevent removal of display debugger type Idea is to prevent future repeates of #24367: add tests for these debugger displays like we have elsewhere in corefx +24378 area-Infrastructure Add auto dependency flow repo API Implement [auto dependency flow repo API](https://github.com/dotnet/source-build/blob/dev/release/2.0/Documentation/auto-dependency-flow/api.md). https://github.com/dotnet/source-build/issues/199 The new BuildTools package provides a common implementation for most of the args (https://github.com/dotnet/buildtools/pull/1707), but some changes are required: * The `dir.props` source changes are because BuildTools now provides a default value of `RestoreSources` based on repo API args. BuildTools also now automatically flows the property into the restore command. * In `dependencies.props`, I globally standardized package version property names so they are overridden by the `DotNetPackageVersionPropsPath` file without any special handling. +24379 area-System.Net Why does not HttpClientHandler throw an exception when adding only public portion of client certificate? "To attach a client certificate to the request one could write following code on the client side: ```c# var cert = //TODO - load certificate var requestHandler = new HttpClientHandler(); requestHandler.SslProtocols = SslProtocols.Tls12; requestHandler.ClientCertificateOptions = ClientCertificateOption.Manual; requestHandler.ClientCertificates.Add(cert); HttpClient client = new HttpClient(requestHandler); HttpResponseMessage response = client.GetAsync(""https://www.example.com/api/values"").Result; response.EnsureSuccessStatusCode(); ``` In asp.net core 2.0 server side, one could write following code to extract the certificate (typically in a middleware component): ```c# var cert = this.HttpContext.Connection.GetClientCertificateAsync().Result; ``` The above 'cert' variable will be non-null if client attached a certificate that has a private key in it (though private key portion is not transmitted to the server). However if the client attached only a public portion of the certificate to requestHandler.ClientCertificates.Add(cert) call, the server side will return null for the extracted certificate. If I added a client certificate to HttpClientHandler (and set it to Manual, which means no other certificate should be inspected for sending a client certificate), it is clear what my intent is. During the call execution, it should have thrown an error because I added a file that does not include a private key. Am I wrong to expect this behavior? [EDIT] Add C# syntax highlighting by @karelz" +24380 area-System.Net HttpClient: The HTTP redirect request failed Hi, all. I try to port a VimeoDotNet library to .NET Core but I have the problem. I have the request: ``` PUT https://1512435594.cloud.vimeo.com/upload?ticket_id=108999278&video_file_id=842140596&signature=0766cfcc58ec6815425054fd2f31c2ab&v6=1 HTTP/1.1 Connection: Keep-Alive Content-Range: bytes */* Accept: application/vnd.vimeo.*+json; version=3.2, application/json Accept-Encoding: gzip, deflate Content-Length: 0 Host: 1512435594.cloud.vimeo.com ``` and the response: ``` HTTP/1.1 308 Resume Incomplete Server: Vimeo/2.0 Content-Type: text/plain Access-Control-Allow-Origin: * Timing-Allow-Origin: * Access-Control-Expose-Headers: Range Access-Control-Allow-Headers: Content-Type, Content-Range, X-Requested-With X-Requested-With: XMLHttpRequest Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS Content-Length: 0 Connection: close Range: bytes=0-5510872 Date: Mon, 02 Oct 2017 18:57:37 GMT X-Backend-Server: kopiluwak ``` It's worked on Full framework but on .NET Core I have exception: ``` The HTTP redirect request failed at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.WinHttpHandler.d__105.MoveNext() ``` How can I workaround it? +24382 area-System.IO Allow directory not empty errors If we've successfully removed all of the file content without errors we should allow for directory not empty to allow for active file handles to close. Fixes #23473. +24384 area-System.Memory [uapaot] OwnedMemoryRetainWithPinningAndSlice fails due to bug in Retain impl "Test temporarily disabled in: https://github.com/dotnet/corefx/pull/24385 **This test is failing for uapaot since the fix for the bug in the implementation of Retain does not seem to have been consumed yet.** ```xml ``` cc @jkotas, @KrzysztofCwalina, @stephentoub, @safern, @leekir" +24385 area-System.Memory Re-enabling disabled Span/Memory tests for uapaot The tests that were disabled in https://github.com/dotnet/corefx/pull/23905 can now be re-enabled since the bugs have been fixed for uapaot. Opened a new issue and disabled the new tests that are failing still: https://github.com/dotnet/corefx/issues/24384 cc @jkotas, @safern, @jfree, @KrzysztofCwalina, @crummel, @leekir +24386 area-System.Net FreeBSD: System.Net.NetworkInformation is missing This is part of https://github.com/dotnet/corefx/issues/1626 Many tests failing System.Net.Ping.Functional.Tests.dll, 7 System.Net.NetworkInformation.Functional.Tests.dll, 31 System.Net.Mail.Functional.Tests.dll, 40 +24387 area-System.Net ManagedHandler: AuthenticationHandler clears the wrong credentials field on redirect "https://github.com/dotnet/corefx/blob/f74844b5b90ca9f3fda8439349071f549df03d43/src/System.Net.Http/src/System/Net/Http/Managed/AuthenticationHandler.cs#L48-L54 The AuthenticationHandler checks if the result was a redirect, and if so it clears the _credentials field. However, the lifetime of the AuthenticationHandler object and the _credentials field is not per request, it's for the entire lifetime of the HttpClient and associated handlers pipeline. The first request to experience a redirect ends up clearing the credentials for all subsequent requests, not just for the redirect. The other handlers have similar logic but they maintain a per-request state object with a copy of _credentials that can be cleared per request. This redirect detection logic also needs to be moved to the bottom of the method so it also detects redirects from the secondary login requests. Repro code: dotnet --version: 2.1.0-preview1-007228 Output for Non-ManagedHandler: 401 and then 200. Output for ManagedHandler: 401 and 401. ``` using System; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace ConsoleApp16 { class Program { static void Main(string[] args) { var listener = new HttpListener(); listener.Prefixes.Add(""http://localhost:5001/""); listener.Start(); RunServer(listener); RunClient().Wait(); } private static async Task RunClient() { var handler = new HttpClientHandler(); handler.Credentials = new NetworkCredential(""foo"", ""bar""); var client = new HttpClient(handler); var response = await client.GetAsync(""http://localhost:5001/redirect""); Console.WriteLine(response); Console.WriteLine(await response.Content.ReadAsStringAsync()); var response2 = await client.GetAsync(""http://localhost:5001/basic""); Console.WriteLine(response2); Console.WriteLine(await response2.Content.ReadAsStringAsync()); } private static async void RunServer(HttpListener listener) { while (true) { var context = await listener.GetContextAsync(); if (context.Request.Url.AbsolutePath.Equals(""/basic"")) { var authHeader = context.Request.Headers[""Authorization""]; if (!string.IsNullOrEmpty(authHeader) && authHeader.StartsWith(""Basic "")) { var bytes = Encoding.UTF8.GetBytes($""Auth header after login: {authHeader}""); await context.Response.OutputStream.WriteAsync(bytes, 0, bytes.Length); } else { // Not authenticated context.Response.StatusCode = 401; context.Response.Headers[HttpResponseHeader.WwwAuthenticate] = ""Basic""; } } else if (context.Request.Url.AbsolutePath.Equals(""/redirect"")) { context.Response.Redirect(""/basic""); } else { context.Response.StatusCode = 404; } context.Response.Close(); } } } } ```" +24389 area-System.Net Add ALPN support for SslStream. cc @stephentoub @bartonjs @geoffkizer @wfurt @karelz @Drawaes @Tratcher fixes #23177 In this PR, only ALPN support is added. This PR does not include: 1. CancellationToken implementation 2. AllowRenegotiation 3. SNI I'll file issues separately for followup on above items at the time of merging this PR. +24390 area-System.Reflection Proposal for high-performance codegen-less Reflection factory APIs /cc @jkotas # Background There are certain scenarios today - largely involving activation, serialization, and DI - where library authors perform codegen in order to perform operations on arbitrary types. The primary reason for this is performance. The standard Reflection APIs are too slow to be used in the code paths targeted by these library authors, and though codegen has a large upfront cost it performs considerably better when amortized over the lifetime of the application. This approach generally works well, but the .NET Framework is considering scenarios where it must operate in environments which do not allow codegen. This renders ineffective the existing performance improvement techniques used by these library authors. We are uniquely positioned to provide a set of APIs which can cover the majority of scenarios traditionally involving reflection-based codegen. The general idea is that library authors can rely on the APIs we provide to work correctly _both_ in codegen-enabled _and_ in codegen-disallowed environments. Alternatively, the library authors can detect at runtime whether codegen is enabled, and if so they can use their existing highly-optimized codegen logic, falling back to the new API surface if codegen is disallowed. # Sample API surface ```csharp namespace System.Reflection { public delegate ref TField FieldAccessor(object target); public delegate ref TField FieldAccessor(ref TTarget target); /// /// Provides factories that can be used by serializers, formatters, and DI systems /// to perform reflection-like activities in performance-critical code paths. /// [SecurityCritical] public static class ReflectionServices { public static bool IsCodegenAllowed { get; } /* * FIELD ACCESSORS, GETTERS, AND SETTERS */ public static FieldAccessor CreateFieldAccessor(FieldInfo fieldInfo); public static FieldAccessor CreateFieldAccessor(FieldInfo fieldInfo); public static Func CreateFieldGetter(FieldInfo fieldInfo); public static Func CreateFieldGetter(FieldInfo fieldInfo); public static Func CreateFieldGetter(FieldInfo fieldInfo); public static Action CreateFieldSetter(FieldInfo fieldInfo); public static Action CreateFieldSetter(FieldInfo fieldInfo); // TTarget must not be value type; field must be an instance field. public static Action CreateFieldSetter(FieldInfo fieldInfo); /* * PARAMETERLESS OBJECT CREATION */ public static Func CreateInstanceFactory(Type type); public static Func CreateInstanceFactory(); /* * PARAMETERFUL OBJECT CREATION */ public static Func CreateInstanceFactory(ConstructorInfo constructorInfo); public static Func CreateInstanceFactory(ConstructorInfo constructorInfo); public static Delegate CreateInstanceFactoryTyped(ConstructorInfo constructorInfo, Type delegateType); /* * PROPERTY GETTERS AND SETTERS * TODO: How would indexed properties be represented? Using the normal method invocation routines? */ public static Func CreatePropertyGetter(PropertyInfo propertyInfo); public static Func CreatePropertyGetter(PropertyInfo propertyInfo); public static Func CreatePropertyGetter(PropertyInfo propertyInfo); public static Action CreatePropertySetter(PropertyInfo propertyInfo); public static Action CreatePropertySetter(PropertyInfo propertyInfo); // TTarget must not be value type; property must be an instance property. public static Action CreatePropertySetter(PropertyInfo propertyInfo); /* * METHODS */ public static Func CreateMethodInvoker(MethodInfo methodInfo); // If instance method, 'delegateType' must be open over 'this' parameter. public static Delegate CreateMethodInvoker(MethodInfo methodInfo, Type delegateType); /* * EVENTS */ public static Action CreateEventSubscriber(EventInfo eventInfo); // Event must be an instance event. public static Action CreateEventSubscriber(EventInfo eventInfo); public static Action CreateEventUnsubscriber(EventInfo eventInfo); // Event must be an instance event. public static Action CreateEventUnsubscriber(EventInfo eventInfo); } } ``` # Goals and non-goals * These APIs **are not** geared toward standard application developers who are already comfortable using the existing Reflection API surface. They are instead geared toward advanced library developers who need to perform Reflection operations in performance-sensitive code paths. * These APIs **must** work in a codegen-disallowed execution environment. (Are there exceptions?) * These APIs **do not** need to cover all scenarios currently allowed by the existing methods on `MethodInfo` and related types. For example, constructors that take `ref` or `out` parameters are sufficiently rare that we don't need to account for them. They can be invoked via the standard Reflection APIs. * These APIs **do not** need to have the same observable behavior as using the Reflection APIs; e.g., we may determine that these APIs should not throw `TargetInvocationException` on failure. But these APIs **must** provide consistent behavior regardless of whether they're running within a codegen-enabled or a codegen-disallowed environment. * Delegate creation **does not** need to be particularly optimized since there will be many checks performed upfront and we will ask callers to cache the returned delegate instances. However, once the delegates are created their invocation **must** be faster than calling the existing Reflection APIs. (Exception: if codegen is disallowed, then delegate invocation **should** be faster than calling the existing Reflection APIs wherever possible, and it **must not** be slower.) * It is an explicit **goal** to get serialization library authors to prefer this system over hand-rolling codegen for most member access scenarios. The selling points of this API would be ease of use (compared to hand-rolling codegen), performance, and the ability to work in a wide variety of execution environments. * It is an explicit **non-goal** to have performance characteristics equal to or better than a library's own custom codegen. For example, a DI system might choose to codegen a single method that both queries a service provider to get dependency instances and calls `newobj` on the target constructor. Such a system will always outperform these generalized APIs, but the API performance should be good enough that library authors would be generally satisfied using them over Reflection as a fallback in these scenarios. * These APIs **do not** need to support custom implementations of `MemberInfo`. Only support for CLR-backed members is required. +24394 area-System.Net "UWP HttpListener Read_Disposed_ReturnsZero test failed with ""The text associated with this error code could not be found.""" https://mc.dot.net/#/user/stephentoub/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/ead0778f7763f6852cd3f7124a9838950a39033b/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpRequestStreamTests~2FRead_Disposed_ReturnsZero(transferEncodingChunked:%20True) ``` Unhandled Exception of Type System.Net.Http.HttpRequestException Message : System.Net.Http.HttpRequestException : An error occurred while sending the request. ---- System.Exception : The text associated with this error code could not be found. The connection with the server was reset Stack Trace : at System.Net.Http.HttpClientHandler.d__113.MoveNext() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Net.Http\src\uap\System\Net\HttpClientHandler.cs:line 616 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClient.d__58.MoveNext() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Net.Http\src\System\Net\Http\HttpClient.cs:line 464 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Net.Tests.HttpRequestStreamTests.d__13.MoveNext() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs:line 351 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ----- Inner Stack Trace ----- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpHandlerToFilter.d__15.MoveNext() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Net.Http\src\uap\System\Net\HttpHandlerToFilter.cs:line 103 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at System.Net.Http.HttpClientHandler.d__113.MoveNext() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Net.Http\src\uap\System\Net\HttpClientHandler.cs:line 607 ``` +24395 area-System.Runtime Please introduce IEnumerable constructor in System.String Hi, ### Motive In order to initialize a `string` from an `IEnumerable` via LINQ etc., we must first manually create an array by calling `ToArray` or other means. ### Desired API ```c# IEnumerable chars = GetChars(); string str = new string(chars); ``` Achievable by adding another constructor overload that copies the enumerable of chars into a new string. +24396 area-System.Threading Expose/test ThreadPool.QueueUserWorkItem(..., bool preferLocal) Fixes https://github.com/dotnet/corefx/issues/12442 cc: @tarekgh, @kouvel +24397 area-System.Memory Expose MemoryStream.Read/WriteAsync(Memory) from ref MemoryStream's other Read/Write{Async} overrides are exposed from the ref, but these two were missing. The lack of them causes stream's derived from MemoryStream that then call down to the base methods to skip these and go instead to Stream's implementation. cc: @ianhays, @ViktorHofer +24398 area-System.Runtime Add string.Concat(IEnumerable) tests Exercise char special paths in string.Concat. Related to https://github.com/dotnet/coreclr/pull/14298 cc: @joperezr, @AlexGhiondea +24399 area-System.Diagnostics System.Diagnostics.StackTrace.Tests failed in the CI " https://ci3.dot.net/job/dotnet_corefx/job/master/job/windows-TGroup_netfx+CGroup_Release+AGroup_x86+TestOuter_false_prtest/3813/console ``` 17:25:31 D:\j\workspace\windows-TGrou---2a8f9c29\Tools\tests.targets(473,5): warning : System.Diagnostics.StackTrace.Tests Total: 76, Errors: 0, Failed: 3, Skipped: 0, Time: 0.385s [D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\System.Diagnostics.StackTrace.Tests.csproj] 17:25:31 D:\j\workspace\windows-TGrou---2a8f9c29\Tools\tests.targets(473,5): warning MSB3073: The command ""D:\j\workspace\windows-TGrou---2a8f9c29\bin/tests/System.Diagnostics.StackTrace.Tests/netfx-Windows_NT-Release-x86//RunTests.cmd D:\j\workspace\windows-TGrou---2a8f9c29\bin/testhost/netfx-Windows_NT-Release-x86/"" exited with code 1. [D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\System.Diagnostics.StackTrace.Tests.csproj] 17:25:31 D:\j\workspace\windows-TGrou---2a8f9c29\Tools\tests.targets(481,5): error : One or more tests failed while running tests from 'System.Diagnostics.StackTrace.Tests' please check D:\j\workspace\windows-TGrou---2a8f9c29\bin/tests/System.Diagnostics.StackTrace.Tests/netfx-Windows_NT-Release-x86/testResults.xml for details! [D:\j\workspace\windows-TGrou---2a8f9c29\src\System.Diagnostics.StackTrace\tests\System.Diagnostics.StackTrace.Tests.csproj] 17:25:31 D:\j\workspace\windows-TGrou---2a8f9c29\dir.traversal.targets(77,5): error : (No message specified) [D:\j\workspace\windows-TGrou---2a8f9c29\src\tests.builds] 17:25:31 2 Warning(s) 17:25:31 2 Error(s) ``` " +24400 area-System.Memory Add Span Binary Reader/Writer APIs From https://github.com/dotnet/corefx/issues/24144 (part of https://github.com/dotnet/corefx/issues/24174) **Edit:** Addressed changes from the [API review](https://github.com/dotnet/apireviews/tree/master/2017/10-03-System.Binary). ```C# // System.Memory.dll namespace System.Buffers.Binary { public static class BinaryPrimitives { public static T ReadMachineEndian(ReadOnlySpan buffer) where T : struct; public static short ReadInt16BigEndian(ReadOnlySpan buffer); public static short ReadInt16LittleEndian(ReadOnlySpan buffer); public static int ReadInt32BigEndian(ReadOnlySpan buffer); public static int ReadInt32LittleEndian(ReadOnlySpan buffer); public static long ReadInt64BigEndian(ReadOnlySpan buffer); public static long ReadInt64LittleEndian(ReadOnlySpan buffer); public static ushort ReadUInt16BigEndian(ReadOnlySpan buffer); public static ushort ReadUInt16LittleEndian(ReadOnlySpan buffer); public static uint ReadUInt32BigEndian(ReadOnlySpan buffer); public static uint ReadUInt32LittleEndian(ReadOnlySpan buffer); public static ulong ReadUInt64BigEndian(ReadOnlySpan buffer); public static ulong ReadUInt64LittleEndian(ReadOnlySpan buffer); public static byte ReverseEndianness(byte value); public static short ReverseEndianness(short value); public static int ReverseEndianness(int value); public static long ReverseEndianness(long value); public static sbyte ReverseEndianness(sbyte value); public static ushort ReverseEndianness(ushort value); public static uint ReverseEndianness(uint value); public static ulong ReverseEndianness(ulong value); public static bool TryReadMachineEndian(ReadOnlySpan buffer, out T value) where T : struct; public static bool TryReadInt16BigEndian(ReadOnlySpan buffer, out short value); public static bool TryReadInt16LittleEndian(ReadOnlySpan buffer, out short value); public static bool TryReadInt32BigEndian(ReadOnlySpan buffer, out int value); public static bool TryReadInt32LittleEndian(ReadOnlySpan buffer, out int value); public static bool TryReadInt64BigEndian(ReadOnlySpan buffer, out long value); public static bool TryReadInt64LittleEndian(ReadOnlySpan buffer, out long value); public static bool TryReadUInt16BigEndian(ReadOnlySpan buffer, out ushort value); public static bool TryReadUInt16LittleEndian(ReadOnlySpan buffer, out ushort value); public static bool TryReadUInt32BigEndian(ReadOnlySpan buffer, out uint value); public static bool TryReadUInt32LittleEndian(ReadOnlySpan buffer, out uint value); public static bool TryReadUInt64BigEndian(ReadOnlySpan buffer, out ulong value); public static bool TryReadUInt64LittleEndian(ReadOnlySpan buffer, out ulong value); public static bool TryWriteInt16BigEndian(Span buffer, short value); public static bool TryWriteInt16LittleEndian(Span buffer, short value); public static bool TryWriteInt32BigEndian(Span buffer, int value); public static bool TryWriteInt32LittleEndian(Span buffer, int value); public static bool TryWriteInt64BigEndian(Span buffer, long value); public static bool TryWriteInt64LittleEndian(Span buffer, long value); public static bool TryWriteUInt16BigEndian(Span buffer, ushort value); public static bool TryWriteUInt16LittleEndian(Span buffer, ushort value); public static bool TryWriteUInt32BigEndian(Span buffer, uint value); public static bool TryWriteUInt32LittleEndian(Span buffer, uint value); public static bool TryWriteUInt64BigEndian(Span buffer, ulong value); public static bool TryWriteUInt64LittleEndian(Span buffer, ulong value); public static void WriteMachineEndian(Span buffer, ref T value) where T : struct; public static void WriteInt16BigEndian(Span buffer, short value); public static void WriteInt16LittleEndian(Span buffer, short value); public static void WriteInt32BigEndian(Span buffer, int value); public static void WriteInt32LittleEndian(Span buffer, int value); public static void WriteInt64BigEndian(Span buffer, long value); public static void WriteInt64LittleEndian(Span buffer, long value); public static void WriteUInt16BigEndian(Span buffer, ushort value); public static void WriteUInt16LittleEndian(Span buffer, ushort value); public static void WriteUInt32BigEndian(Span buffer, uint value); public static void WriteUInt32LittleEndian(Span buffer, uint value); public static void WriteUInt64BigEndian(Span buffer, ulong value); public static void WriteUInt64LittleEndian(Span buffer, ulong value); public static bool TryWriteMachineEndian(Span buffer, ref T value) where T : struct; } } ``` cc @KrzysztofCwalina, @stephentoub, @GrabYourPitchforks, @jkotas, @safern Code Coverage when running on a Little Endian machine: !~[image](https://user-images.githubusercontent.com/6527137/31154109-be357218-a859-11e7-9f48-77ec9c8b7374.png)~ ![image](https://user-images.githubusercontent.com/6527137/31422673-36e0d4aa-ae04-11e7-88bc-c067161feb61.png) +24402 area-System.Diagnostics Process.Start() fails when a directory exists in the working directory with the same name as the executable "_From @ahsonkhan on September 29, 2017 2:48_ ## Steps to reproduce 1. Clone corefxlab repo https://github.com/dotnet/corefxlab 2. Run ./build.sh 3. Observe failure to restore pacakges (only on OSX and Ubuntu, package restore works fine on Windows). From: https://github.com/dotnet/corefxlab/pull/1787 https://ci.dot.net/job/dotnet_corefxlab/job/master/job/ubuntu16.04_release_prtest/807/consoleFull#7440085258bb52e59-de52-4f1c-b131-470db4c594cd ```bash echo ""Restoring all packages"" ./$dotnetExePath restore $myFile /p:VersionSuffix=""$BuildVersion"" ret=$? if [ $ret -ne 0 ]; then echo ""Failed to restore packages."" exit -1 fi ``` ## Expected behavior Package restore succeeds on all configurations. Previous CLI version (2.1.0-preview1-007191) was working as expected. ## Actual behavior Package restore failing with System.ComponentModel.Win32Exception. 18:50:13 System.ComponentModel.Win32Exception (0x80004005): The FileName property should not be a directory unless UseShellExecute is set. 18:50:13 at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) 18:50:13 at System.Diagnostics.Process.Start() 18:50:13 at Microsoft.DotNet.Cli.Utils.ProcessStartInfoExtensions.Execute(ProcessStartInfo startInfo) 18:50:13 at Microsoft.DotNet.Tools.MSBuild.MSBuildForwardingApp.Execute() 18:50:13 at Microsoft.DotNet.Tools.Restore.RestoreCommand.Run(String[] args) 18:50:13 at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient) 18:50:13 at Microsoft.DotNet.Cli.Program.Main(String[] args) 18:50:13 ## Environment data dotnet cli version 2.1.0-preview1-007228 _Copied from original issue: dotnet/cli#7726_" +24403 area-Infrastructure sync does not restore all packages during the UAP build /cc @joperezr - The sync step during the UAP legs of the official build do not include all the dependencies upfront. The System.Globalization.Calenders project supports only uap, so during the build of uapaot it causes a restore of uap on runtime.depproj which requires different resources than uapaot. - The optional tooling is brought down only during build. +24404 area-System.Runtime NoGC parameter validations tests failing occasionally on Linux E.g. this: https://ci3.dot.net/job/dotnet_corefx/job/master/job/linux-TGroup_netcoreapp+CGroup_Debug+AGroup_x64+TestOuter_true_prtest/78/ Need to monitor these to see if they are flaky and potentially identify the source of the flakiness. +24405 area-System.Diagnostics EventSource.Redist Nuget Package Create a new Microsoft.Diagnostics.Tracing.EventSource.Redist nuget package targeting net46. The following work items need to be completed before this PR is ready for merge: - [X] Create project and solution file for Microsoft.Diagnostics.Tracing.EventSource.Redist. - [x] Copy the code into CoreFX and make it build. - [X] Produce a nuget package. +24406 area-System.IO Make FileSystemWatcher tests tolerant of spurious/extra events. This changes ExecuteAndVerifyEvents in src/System.IO.FileSystem.Watcher/tests/Utility/FileSystemWatcherTest.cs to use what was previously the OSX behaviour on all platforms. Fixes dotnet/coreclr#14154. +24407 area-System.Net SSLStream Zero Test Coverage for Renegotiate There is a fair amount of complex code inside SSLStream to handle the case of renegotiation, including 1. What happens to partial data inflight 2. What happens to data encrypted with the old key 3. A lot of locking But there is zero testing in the inner or outerloop which makes it possible that during refactoring someone could break it and no one would know until its released. As there is no way to trigger a renegotiation from .net I would say a website on IIS with a client cert required for a certain path in an outerloop test should kick off a renegotiation? /cc @stephentoub, @Priya91 and @geoffkizer ref #24352 +24408 area-System.Collections Proposal for unordered remove API's for List "First time contributor, long time lurker. I have a background in gamedev, and while it might be some time before Unity uses Core I wanted to contribute early! A common pattern in game dev to keep lists of objects of a certain type so they can be quickly iterated over eg to call some Update function. Objects register / deregister when created / destroyed. A direct implementation would be: ```C# void OnCreate() { All.Add(this); } void OnDestroy() { All.Remove(this); } ``` However, when a (part of) the world gets destroyed, lots of objects deregister at once. Each Remove has to move over the backing array. A common way to prevent this additional move is to use a remove with a swap back: ```C# All[index] = All[All.Count - 1]; All.RemoveAt(All.Count - 1); ``` Unreal engine has specific API's for their ""List"" Implementation to do a swap remove: https://docs.unrealengine.com/latest/INT/API/Runtime/Core/Containers/TArray/RemoveAtSwap/index.html I think it could be helpful to introduce the following extension methods: ```C# class ListExtensions { public void RemoveAtUnordered(this List list, int index); public void RemoveUnordered(this List list, T element); public void RemoveAllUnordered(this List list, Predicate match); public void RemoveRangeUnordered(this List list, int index, int count); } ``` Implementing them as extension methods prevents code bloat as lists are instantiated quite often. The naming uses Unordered instead of Swap because I think it communicates the difference vs a normal remove more clearly. **Benchmarks** List of N items. 10% of items are removed at random indices. The Small value type is 16 bytes. The large value type is 64 bytes. **RemoveAt**, Best case scenario if you know the index beforehand: ``` ini BenchmarkDotNet=v0.10.9, OS=Windows 10 Redstone 2 (10.0.15063) Processor=Intel Core i7-4790K CPU 4.00GHz (Haswell), ProcessorCount=8 Frequency=3906249 Hz, Resolution=256.0001 ns, Timer=TSC .NET Core SDK=2.0.0 [Host] : .NET Core 2.0.0 (Framework 4.6.00001.0), 64bit RyuJIT Job-UOEMAQ : .NET Core 2.0.0 (Framework 4.6.00001.0), 64bit RyuJIT InvocationCount=1 LaunchCount=1 TargetCount=100 UnrollFactor=1 WarmupCount=10 ``` | Method | N | Mean | Error | StdDev | Median | |---------------------------- |------ |---------------:|----------------:|----------------:|---------------:| | **RemoveAtRef** | **100** | **829.4 ns** | **44.3143 ns** | **130.6616 ns** | **729.6 ns** | | RemoveAtUnorderedRef | 100 | 384.0 ns | 0.0000 ns | 0.0000 ns | 384.0 ns | | RemoveAtValueSmall | 100 | 691.2 ns | 0.0000 ns | 0.0000 ns | 691.2 ns | | RemoveAtUnorderedValueSmall | 100 | 303.3 ns | 43.8459 ns | 128.5923 ns | 179.2 ns | | RemoveAtValueLarge | 100 | 861.3 ns | 50.4064 ns | 147.0378 ns | 934.4 ns | | RemoveAtUnorderedValueLarge | 100 | 362.5 ns | 44.4507 ns | 130.3661 ns | 460.8 ns | | **RemoveAtRef** | **1000** | **11,229.1 ns** | **234.9079 ns** | **650.9286 ns** | **11,174.4 ns** | | RemoveAtUnorderedRef | 1000 | 1,577.6 ns | 46.0818 ns | 132.9567 ns | 1,689.6 ns | | RemoveAtValueSmall | 1000 | 12,644.7 ns | 287.8187 ns | 811.7978 ns | 12,569.6 ns | | RemoveAtUnorderedValueSmall | 1000 | 1,484.8 ns | 0.0000 ns | 0.0000 ns | 1,484.8 ns | | RemoveAtValueLarge | 1000 | 68,777.9 ns | 1,617.6589 ns | 4,693.1217 ns | 69,004.8 ns | | RemoveAtUnorderedValueLarge | 1000 | 1,984.0 ns | 0.0000 ns | 0.0000 ns | 1,984.0 ns | | **RemoveAtRef** | **10000** | **971,682.6 ns** | **14,307.3651 ns** | **41,050.5125 ns** | **964,288.3 ns** | | RemoveAtUnorderedRef | 10000 | 13,795.2 ns | 84.2591 ns | 230.6580 ns | 13,721.6 ns | | RemoveAtValueSmall | 10000 | 1,888,886.2 ns | 25,194.7093 ns | 71,473.1969 ns | 1,880,000.5 ns | | RemoveAtUnorderedValueSmall | 10000 | 13,050.1 ns | 72.3786 ns | 205.3259 ns | 13,171.2 ns | | RemoveAtValueLarge | 10000 | 9,647,115.0 ns | 126,638.1818 ns | 371,407.8652 ns | 9,617,845.7 ns | | RemoveAtUnorderedValueLarge | 10000 | 16,399.6 ns | 95.6210 ns | 266.5530 ns | 16,268.8 ns | **Remove**, first finding the item: | Method | N | Mean | Error | StdDev | Median | |---------------------------- |------ |---------------:|--------------:|--------------:|---------------:| | **RemoveRef** | **100** | **2.801 us** | **0.1060 us** | **0.3040 us** | **2.701 us** | | RemoveUnorderedRef | 100 | 2.390 us | 0.1167 us | 0.3366 us | 2.483 us | | RemoveValueSmall | 100 | 12.682 us | 0.8923 us | 2.6170 us | 11.917 us | | RemoveUnorderedValueSmall | 100 | 13.222 us | 0.9460 us | 2.7293 us | 12.326 us | | RemoveValueLarge | 100 | 14.382 us | 0.9318 us | 2.6584 us | 13.952 us | | RemoveUnorderedValueLarge | 100 | 13.580 us | 0.8255 us | 2.3419 us | 13.517 us | | **RemoveRef** | **1000** | **179.429 us** | **4.7003 us** | **12.9459 us** | **177.715 us** | | RemoveUnorderedRef | 1000 | 164.773 us | 3.1782 us | 9.0675 us | 163.814 us | | RemoveValueSmall | 1000 | 1,116.633 us | 32.5813 us | 94.5243 us | 1,106.842 us | | RemoveUnorderedValueSmall | 1000 | 1,167.612 us | 30.4712 us | 87.9164 us | 1,163.559 us | | RemoveValueLarge | 1000 | 1,441.630 us | 43.5135 us | 124.8483 us | 1,426.906 us | | RemoveUnorderedValueLarge | 1000 | 1,320.419 us | 35.7561 us | 103.1646 us | 1,309.952 us | | **RemoveRef** | **10000** | **17,427.345 us** | **145.7787 us** | **425.2433 us** | **17,418.411 us** | | RemoveUnorderedRef | 10000 | 16,445.359 us | 173.2089 us | 502.5103 us | 16,380.599 us | | RemoveValueSmall | 10000 | 108,541.970 us | 644.3526 us | 1,848.7683 us | 108,544.937 us | | RemoveUnorderedValueSmall | 10000 | 114,086.368 us | 752.6536 us | 2,171.5778 us | 114,107.856 us | | RemoveValueLarge | 10000 | 137,065.974 us | 1,006.2662 us | 2,951.2045 us | 136,833.469 us | | RemoveUnorderedValueLarge | 10000 | 128,156.691 us | 1,053.0958 us | 3,071.9300 us | 128,141.114 us | **RemoveAll** Here on average 5 random items match the predicate: | Method | N | Mean | Error | StdDev | Median | |----------------------------- |------ |------------:|--------------:|--------------:|------------:| | **RemoveAllRef** | **100** | **704.0 ns** | **0.0000 ns** | **0.0000 ns** | **704.0 ns** | | RemoveAllUnorderedRef | 100 | 550.4 ns | 43.4116 ns | 128.0000 ns | 460.8 ns | | RemoveAllValueSmall | 100 | 517.1 ns | 60.6822 ns | 178.9227 ns | 409.6 ns | | RemoveAllUnorderedValueSmall | 100 | 422.4 ns | 0.0000 ns | 0.0000 ns | 422.4 ns | | RemoveAllValueLarge | 100 | 620.4 ns | 48.4392 ns | 141.2994 ns | 704.0 ns | | RemoveAllUnorderedValueLarge | 100 | 537.6 ns | 45.1315 ns | 133.0713 ns | 652.8 ns | | **RemoveAllRef** | **1000** | **4,515.6 ns** | **148.7692 ns** | **417.1648 ns** | **4,518.4 ns** | | RemoveAllUnorderedRef | 1000 | 2,432.0 ns | 0.0000 ns | 0.0000 ns | 2,432.0 ns | | RemoveAllValueSmall | 1000 | 3,112.5 ns | 66.8587 ns | 193.9693 ns | 3,212.8 ns | | RemoveAllUnorderedValueSmall | 1000 | 2,562.7 ns | 39.1437 ns | 112.9384 ns | 2,496.0 ns | | RemoveAllValueLarge | 1000 | 5,377.5 ns | 133.9996 ns | 364.5558 ns | 5,312.0 ns | | RemoveAllUnorderedValueLarge | 1000 | 4,181.6 ns | 49.1519 ns | 141.0259 ns | 4,262.4 ns | | **RemoveAllRef** | **10000** | **43,763.8 ns** | **1,835.5378 ns** | **4,931.0531 ns** | **44,416.0 ns** | | RemoveAllUnorderedRef | 10000 | 21,523.3 ns | 111.9587 ns | 306.4852 ns | 21,414.4 ns | | RemoveAllValueSmall | 10000 | 42,740.4 ns | 2,502.4247 ns | 7,098.9625 ns | 40,601.6 ns | | RemoveAllUnorderedValueSmall | 10000 | 24,007.6 ns | 243.4599 ns | 674.6261 ns | 23,961.6 ns | | RemoveAllValueLarge | 10000 | 52,489.9 ns | 2,107.8894 ns | 5,805.7396 ns | 52,364.8 ns | | RemoveAllUnorderedValueLarge | 10000 | 38,643.8 ns | 777.8369 ns | 2,116.1625 ns | 37,798.4 ns | Few observations: -If you know the index beforehand, it's O(n) vs O(n^2) so the results are quite dramatic. The larger the stored item the worse the extra memory copy becomes. -RemoveUnordered on ref types is at best ~10% faster than Remove. Do note however that the worst case is hit if the items are added FIFO - as they would be in a common use case in Unity. If they are, the benchmarks look quite similair to the RemoveAt benchmark. An unordered remove guarantees performance is consistent. -RemoveAllUnordered is 10-50% faster in these benchmarks. Project used to generate these benchmarks: [NetCoreDev.zip](https://github.com/dotnet/corefx/files/1356989/NetCoreDev.zip) **Current Workarounds:** Projects use their own extension methods/static helpers to implement this on List **Discussion:** For non high-performance applications having two slightly different ways to remove elements is confusing, and it is not great to have these additional methods show up in intellisense. It could be argued List is just an inherently ordered data type and for unordered data some other structure should be used. The problem is that many other API's want you to pass in a List." +24409 area-System.Memory Passing null to an method that takes a ReadOnlySpan throws, but default(ReadOnlySpan) does not This is because default(ReadOnlySpan) results in a zero-length span, null is treated as a T[] which is implicitly converted to ReadOnlySpan and triggers a [null check](https://github.com/dotnet/corefx/blob/8d212b41126baff94fc025e4438d6f4e8cbff7e9/src/System.Memory/src/System/Span.cs#L32-L33) in the constructor. It's non-intuitive for an implicit operator to throw. It violates the [API design guidelines](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/operator-overloads) as well: >X DO NOT throw exceptions from implicit casts. It is very difficult for end users to understand what is happening, because they might not be aware that a conversion is taking place. /cc @ahsonkhan @KrzysztofCwalina +24410 area-Meta "Port ""not-deprecated"" System.Workflow.Activities.Rules components to .Net Standard components" Issue: The .net rules engine (System.Workflow.Activities.Rules.RuleEngine) is not compatible with .NetStandard 2.0. Proposal: Update the existing code to create the following .NetStandard library components (**removing all deprecated code**) for runtime rules generation, execution, and serialization/deserialization: - System.Workflow.Activities.Rules.dll - System.Workflow.ComponentModel.Serialization.dll - System.ComponentModel.Design.Serialization.dll Also add the following component .NETFramework assembly because it requires WinForms designer for rules management: - DotNetStandard.Workflow.Activities.Rules.Design.dll Please find a working preview solution [here](https://github.com/BlaiseD/WFRulesToNetStandard) The nuget package is [here](https://www.nuget.org/packages/NetStandardPort-System.Workflow.Activities.Rules/4.4.0-preview03) or [here](https://www.nuget.org/packages/NetStandardPort-System.Workflow.Activities.Rules.Design/4.4.0-preview03) if the designer is required. OK to do a PR at https://github.com/dotnet/corefx? Thanks. +24412 area-System.ComponentModel Revert bad PR that was merged to soon See #24064. The checked in fix is wrong because it changes the behavior when .NET Native is being used such that a nonsensical exception will be thrown which would never be thrown when .NET Native is not being used. These kinds of errors are really hard for developers to debug. Instead we will let .NET Native fail in the normal way when rd.xml data is not available. This will direct people to add metadata appropriately when they need to get this to work. +24416 area-System.Runtime Proposal for System.Runtime.CompilerServices.ICastable .NET Core public API We need the System.Runtime.CompilerServices.ICastable for building the CoreCLR version of [System.Private.Interop](https://github.com/dotnet/corert/blob/master/src/System.Private.Interop/src/System.Private.Interop.CoreCLR.csproj). **Current Workarounds:** Today we use a hack by publishing the System.Private.ICastable.dll though myget and consume it from CoreRT. **Discussion:** The ideal solution would be to expose it as a public .NET Core API possibly in System.Runtime.InteropServices.dll +24417 area-System.Data "OdbcParameter error: ""Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter.""" "Customer reported a bug for error in `OdbcParameter`. Customer was trying to get a `VARCHAR(8000)` type return value (output) from SQL Server stored procedure by `OdbcCommand`, and got exception thrown with error message: ``` [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid parameter 2 (''): Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter. Deprecated types are not supported as output parameters. Use current large object types instead. ``` Customer was not able to receive any string output longer than 3,999 characters from the stored procedure. ``` OdbcCommand command = new OdbcCommand(sql, con, trn); command.Parameters.Clear(); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(""@v1"", OdbcType.VarChar, 8000); //Input //Output. The error will not occur when 4000 is 3999. command.Parameters.Add(""@v2"", OdbcType.VarChar, 4000); command.Parameters.Add(""@v3"", OdbcType.Int); command.Parameters.Add(""@v4"", OdbcType.Int); command.Parameters[""@v1""].Direction = ParameterDirection.Input; command.Parameters[""@v2""].Direction = ParameterDirection.Output; ``` ``` CREATE PROCEDURE testCSProc1 ( @v1 VARCHAR(8000), @v2 VARCHAR(8000) OUT, @v3 INTEGER OUT, @v4 INTEGER OUT ) AS BEGIN SET @v2 = @v1 + @v1; SET @v3 = datalength(@v1); SET @v4 = datalength(@v2); END; GO ```" +24420 area-System.Net WinRT WebSocket ignores Set-Cookie header in handshake response The issues affects UWP implementation of `ClientWebSocket`. Cookie is set in request, but never read from response. So calling `clientWebSocket.Options.Cookies.GetCookieHeader(uri)` return empty string regardless of Set-Cookie header present in handshake response. +24422 area-System.Net Executing [NetworkInterface.GetAllNetworkInterfaces()] in AWS throws FileNotFoundException "**Problem** The method `NetworkInterface.GetAllNetworkInterfaces()` throws always a `FileNotFoundException` if executed in an AWS Lambda environment. **Analysis** This function: using System.Net.NetworkInformation; [assembly: Amazon.Lambda.Core.LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] namespace CheckerLambda { public class Function { public string FunctionHandler(Amazon.Lambda.Core.ILambdaContext context) { // Here we get an ""System.IO.FileNotFoundException: Could not find file '/sys/class/net/lo/mtu'."" var adapters = NetworkInterface.GetAllNetworkInterfaces(); // do something with 'adapters' return ""This point is never reached""; } } } Leads to this exception if executed in an AWS Lambda environment. Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/sys/class/net/lo/mtu'. 2017-47-04 15:47:21: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-47-04 15:47:21: at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) 2017-47-04 15:47:21: at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) 2017-47-04 15:47:21: at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 2017-47-04 15:47:21: at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent) 2017-47-04 15:47:21: at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 2017-47-04 15:47:21: at System.IO.File.InternalReadAllText(String path, Encoding encoding) 2017-47-04 15:47:21: at System.Net.NetworkInformation.StringParsingHelpers.ParseRawIntFile(String filePath) 2017-47-04 15:47:21: at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties..ctor(LinuxNetworkInterface linuxNetworkInterface) 2017-47-04 15:47:21: at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni) 2017-47-04 15:47:21: at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name) 2017-47-04 15:47:21: at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name) 2017-47-04 15:47:21: at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.b__2(String name, LinkLayerAddressInfo* llAddr) 2017-47-04 15:47:21: at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound) 2017-47-04 15:47:21: at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces() 2017-47-04 15:47:21: at CheckerLambda.Function.FunctionHandler(ILambdaContext context) 2017-47-04 15:47:21: at lambda_method(Closure , Stream , Stream , ContextInfo ) Any idea what to do? It could be related to https://github.com/dotnet/corefx/issues/12969 " +24423 area-Infrastructure Fix init-tools.sh for Alpine Linux The URL used to get the dotnet sdk for Alpine was accidentally left unchanged when the URL for other targets was modified. I have fixed that and also unified the creation of the dotnet-sdk-XXX part of the URL for all platforms. +24424 area-System.Runtime Bring back exception serialization support We see strong customer demand for being able to serialize Exceptions with BinaryFormatter or DCS. The following actions are required: - [x] Make coreclr exception types serializable, add typeforwards and bring back serialization implementation (https://github.com/dotnet/coreclr/pull/14311) - [x] Mirror in corert - [x] Make corefx exception types serializable, add typeforwards and bring back serialization implementation (https://github.com/dotnet/corefx/pull/24427) - [x] Add typeforwards for internal types (https://github.com/dotnet/corefx/pull/24427) - [x] Add tests in System.Runtime.Serialization.Formatters.Tests - [x] Port to release branches - [x] Update docs cc @jkotas @stephentoub @danmosemsft +24425 area-System.Text Current Regex cache structure is ineffecient and inflexible For larger cache lanes the current Cache structure isn't optimized as its operates with O(n). We see internal demand to optimize the current structure to me more flexible for both - small and large cache length - cases. Furthermore the current cache stores only parts of the instantiated Regex object. There might be some value in investigating if whole Regex objects can be stored in it to reduce GC pressure when using static Regex methods in a loop. The timeout instance field could be problematic as it does not change the Regex Tree but is stored in the instance --> reusing. cc @vancem @danmosemsft +24426 area-System.Memory Rename MemoryHandle.PinnedPointer to Pointer +24427 area-System.Runtime Make corefx exceptions serializable and add typeforwards Related: https://github.com/dotnet/corefx/issues/24424 Exceptions that are partially supported: - LicenseException - ReflectionTypeLoadException - SecurityException - SqlException Exceptions that aren't supported: - XamlParseException - InvalidPrinterException - XPathCompileException - CryptoSignedXmlRecursionException - ElementNotAvailableException - ElementNotEnabledException +24429 area-System.Net Plumb Memory into Socket's implementation https://github.com/dotnet/corefx/issues/22608 adds public API to Socket types that work with `{ReadOnly}Memory`. We can expose the API without plumbing these types into the core of the implementation, but plumbing it through adds a lot of value, in particular for instances that wrap things other than arrays. This issue represents doing the latter so that #22608 can just be for the first part. +24430 area-System.Net Plumb cancellation into Socket's implementation #22608 adds public API to Socket types that accept CancellationToken. We can implement the APIs to just do an upfront check, but the real value is when cancellation is plumbed through to support canceling the actual I/O. This issue represents doing that work. +24431 area-System.Net Add Memory-based APIs to Sockets and NetworkStream Fixes https://github.com/dotnet/corefx/issues/22387 Fixes https://github.com/dotnet/corefx/issues/22608 @geoffkizer, I separated https://github.com/dotnet/corefx/issues/24429 out into a separate issue to avoid colliding with the changes you're making in the guts of Socket. These changes stop just below the surface of SocketAsyncEventArgs; once your changes go in, we can then push the use of `Memory` further down, whereas these changes just extract the array from it (and throw for now if there is no array). cc: @geoffkizer, @Priya91, @wfurt, @davidsh, @KrzysztofCwalina, @ahsonkhan +24435 area-System.Net Linux HttpClient doesn't send request body when it receives an early response "Thanks to @markvincze for reporting this issue at https://github.com/aspnet/KestrelHttpServer/issues/2095. He made a solid repro app here: https://github.com/markvincze/KestrelRequestTimeout > @markvincze Thanks for the awesome repro. It made it very easy to track down the issue. I captured a network trace using wireshark, and it looks like there is a bug in the Linux HttpClient. > > In your repro, Kestrel is sending a 200 response without sending a ""HTTP/1.1 100 Continue"" response or waiting for the first request body to even start uploading. This itself is not a bug, but this is what triggers the HttpClient issue. > > At this point, HttpClient should either upload the first request body before reusing the TCP connection for new requests or simply close the TCP connection. Instead, HttpClient on Linux is attempting to immediately send the following request without ever sending the 7000 byte response body for the first request. > > Kestrel interprets this ""new request"" as the body of the first request. The bytes and the very end of the the ""new request"" are interpreted as the beginning (i.e. start line) of the second request. Since Kestrel never technically receives a complete second request, it eventually times out and sends a 408 response. > > ![image](https://user-images.githubusercontent.com/54385/31205225-0a2da638-a925-11e7-925c-079039d83aa5.png) https://github.com/aspnet/KestrelHttpServer/issues/2095#issuecomment-334322361" +24439 area-System.Net System.Uri handles '%' characters in local path incorrectly "@agr reported this issue here: https://github.com/dotnet/core/issues/1004 .NET Core 2.0, Windows 10: ``` using System; namespace uri_from_path_test { class Program { static void Main(string[] args) { var uri = new Uri(@""e:\%41foo%20bar%25.baz""); Console.WriteLine(""{0} {1}"", uri.AbsoluteUri, uri.LocalPath); } } } ``` produces the following output: ``` file:///e:/Afoo%20bar%2525.baz e:\Afoo bar%25.baz ``` while the expected output would be: ``` file:///e:/%2541foo%2520bar%2525.baz e:\%41foo%20bar%25.baz ```" +24440 area-System.ComponentModel DisplayFormatAttribute not used while rendering control "@johanskoldekrans opened this issue here: https://github.com/dotnet/core/issues/1000 We have two datecontrols (startdate and enddate) that we used the attribute DisplayFormatAttriute with a DataFormatString(""{0:d}"") as well as ApplyFormatInEditMode = true. This was rendered as an input with type date in the past but now is rendered as a datetime-local input. So the user has to enter the time as well. Code from View: ```
Från
Till
``` Code From Class (ViewModel): ``` [Required] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = ""{0:d}"")] public DateTime StartDate { get; set; } [Required] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = ""{0:d}"")] public DateTime EndDate { get; set; } ``` Usings in the ViewModel: ``` using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; ``` Have you changed the behaviour for this? Using: VS 2017 15.3.5 .Net Core 2.0.0 " +24441 area-System.Runtime ArraySegment null check is throwing ArgumentNullException @serkantkaraca reported this issue here: https://github.com/dotnet/core/issues/994 SDK 2.0 breaks null check on type value contract for ArraySegment. var arraySegment = new ArraySegment(new byte[10]); // This throws as below. Should be False as per C# spec. Works on 4.6.2 var isNull = arraySegment == null; System.ArgumentNullException occurred HResult=0x80004003 Message=Value cannot be null. Source= StackTrace: at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument) at System.ArraySegment`1.op_Implicit(T[] array) at ConsoleApp.Program.Main(String[] args) in +24442 area-System.Net SocketTaskExtensions as instance methods In #22608, we agreed to add two new async socket methods, ReceiveAsync and SendAsync, that work with Memory instead of ArraySegment. The existing ArraySegment-based methods were added as extension methods, and thus we added the new methods as extensions, too. Feedback was provided that these would be better as instance methods. However, we can't just add the new overloads as instance methods; we would also need to add the existing signatures as instance methods, effectively obsoleting the extensions. That's because of how the C# compiler binding works; once it finds an appropriate instance method, it'll no longer consider extension methods, and so the new methods as instance methods can result in compilation errors for existing uses of the existing extensions: an array segment can be implicitly converted to a memory, so it can use the new APIs, but then there will be a different return type (`ValueTask` instead of `Task`), and any usage of that return type other than `await` can fail to compile. Thus code like `Task t = s.ReceiveAsync(arraySegment, socketFlags);` will now fail to compile due to trying to convert a `ValueTask` to `Task`. So, two choices: 1. Leave the new methods as extensions. 2. Make the new methods be instance methods, and also add corresponding instance methods for the existing extensions. We need to make and address this for 2.1; otherwise we'll implicitly do (1), since that's what's in https://github.com/dotnet/corefx/pull/24431. +24443 area-System.Threading Please add Task continuation function with async await "`Task` class was made before async/await syntax so I understand why there are `ContinueWith` function exist. But now I think we should have the same function in async/await syntax Currently now I write extension method for it like this ```C# public static async Task Then(this Task task,Func func) { return func(await task); } public static async Task ThenAsync(this Task task,Func> func) { return await func(await task); } //usage Task taskInt; var result = await taskInt.Then(async(i) => await HttpGet(url + ""/"" + i)); ``` I don't know what it should be named but please add this to BCL" +24444 area-System.Runtime Recommended way of exposing C++ data and interfaces to .NET core Since there is no C++/CLI, what is the recommended way of exposing C++ data and interfaces to .NET core? Is it C style functions and P/Invoke (for cross platform apps, how would you reference different dynamic library names)? Some kind of (inter-process) communication? +24445 area-System.Collections Add Dictionary.Capacity to let you resize map after created [edited by @danmosemsft to put into review format] ## Latest Proposal See https://github.com/dotnet/corefx/issues/24445#issuecomment-352869027 ```c# public partial class Dictionary : ... { // Makes sure that capacity is at least that capacity, ie, the dictionary can accept this many items without resizing its internal data structures public int EnsureCapacity(int capacity); public void TrimExcess(); // Calls the other passing Count public void TrimExcess(int capacity); } ``` ## Issue While I can set the initial capability of a dictionary when it's created, I cannot resize it after it's created. Please add `Dictionary.Capacity` property or an `EnsureCapacity` method so that that you can. ## Rationale MSBuild, are resizing multiple times during Add that they cannot avoid without recreating the dictionary: https://github.com/Microsoft/msbuild/issues/2587. Another case came up in an Azure service profile today, where a dictionary was being copied into another dictionary which had already been constructed and resize CPU and allocation cost was high. ## Proposal (old) ```c# public partial class Dictionary : ... { public Dictionary(int capacity) { } // existing constructor public int Capacity { get { } set { } } } ``` The name `Capacity` is chosen to match the parameter name of the existing constructor. Setting Capacity to `value` causes the Dictionary to ensure it can have up to `value` elements without resizing. Behind the scenes if `value` is less than the existing capacity it calls Resize to increase the backing storage to the smallest Prime that is not less than the requested `value`. The getter is probably not terribly useful (debugging?) but a setter without a getter is strange. ## Discussion Implementation of this looks like it will be straightforward, not significantly increase the instantiated size of Dictionary's, and not affect code paths that do not call it. The resizing codepath obviously already exists, although right now it is never given a desired size: it starts with doubling. +24447 area-System.Threading Current CancellationToken? "What about to add sort of ""CancellationToken.Current"" which would pass token automatically? In case of [the passed point of no cancellation](https://blogs.msdn.microsoft.com/andrewarnottms/2014/03/19/recommended-patterns-for-cancellationtoken/), CancellationToken will be set to ""CancellationDenied"". So that developers do not have to pass it manually. (Maybe the question has been already answered somewhere, however I am unable to find it.)" +24449 area-System.Runtime Add DateTime.UnixEpoch and DateTimeOffset.UnixEpoch fields Occasionally I come across a point in my code where it'd be useful to have a `DateTime.UnixEpoch` field as opposed to specifying my own with `new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)`. Usually this is when I'm calculating expiration dates for web tokens where the expiration property is the number of seconds since the Unix epoch (see https://en.wikipedia.org/wiki/Unix_time for definition). ## Proposed API ```diff namespace System { public struct DateTime { + public static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); } public struct DateTimeOffset { + public static readonly DateTimeOffset UnixEpoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); } } ``` ## Example Usage ```c# public class TokenIntrospectionResponse { public int ExpirationInSeconds { get => (int)((ExpirationUtc - DateTime.UnixEpoch).TotalSeconds); set => ExpirationUtc = DateTime.UnixEpoch.AddSeconds(value); } public DateTime ExpirationUtc { get; set; } } ``` +24452 area-Infrastructure [release/1.1.0] Backport PreferInbox=true to dead-end packages Many of our packages are no longer produced in 2.0.0 because they were absorbed into .NETStandard. As a result, there is no new version of those packages with fixes that were only put into the 2.0 codebase. One example of such a change is https://github.com/dotnet/corefx/pull/18307 (issue https://github.com/dotnet/corefx/issues/15112). There may be others. We should backport these changes if they apply to any package that we're no longer shipping in 2.0 so that folks get the changes. When backporting we should also make sure to ship the complete set of packages impacted. +24453 area-System.Net Removed obsolete System.Net.Http NETFX related files "Due to PR #23611, the master branch no longer builds a NETFX binary for System.Net.Http. Instead this is now handled only in the release/2.0.0 branch as part of the ""NETStandard support package"". This effectively means that we have already stopped OOB'ing System.Net.Http on .NET Framework platforms as of .NET 4.7.1 since that version of .NET Framework supports all NETStandard2.0 APIs. And .NET Framework versions prior to that (4.6.x, etc.) are handled with the OOB System.Net.Http.dll that is part of the NETStandard support package." +24454 area-System.Net SslStream not working with ephemeral keys This issue was opened as result of the discussion in issue #19888. I have a .net core 2.0 application which hosts a service and secures it via SSL. My key material is a a key pair where I have the certificate and the private keys in two files. So I load the cert and the keys from disk and use the X509Certificate2.CopyWithPrivateKey method to construct a certificate with a private key. That works as it should. However, if I pass this certificate to an SslStream via SslStream.AuthenticateAsServer, I get this error: ``` System.ComponentModel.Win32Exception (0x80004005): No credentials are available in the security package at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) at System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.<>c__DisplayClass35_0.b__0(AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync(Func`3 beginMethod, Action`1 endMethod, Object state) at System.Net.Security.SslStream.AuthenticateAsServerAsync(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation) ``` @bartonjs suggested that the SslStream on Windows might not support certificates with an ephemeral key, so this might be the issue here. Everything works fine on Linux. +24455 area-System.Net [release/2.0.0] Disable System.Net.Http tests due to #7812 Porting the same logic from master branch to disable these tests on systems that don't have the fix to SCHANNEL regarding DHE cipher suites. Addresses #23822 +24457 area-System.IO System.IO.Packaging part stream has a memory leak when writing a large stream "This was found through the DocumentFormat.OpenXML library which uses System.IO.Packaging extensively (original issue: https://github.com/OfficeDev/Open-XML-SDK/issues/244). The issue logged there is trying to generate a large Excel document which uses a working set of around 10mb on .NET 4.7, while it grows quite quickly until hitting a OutOfMemoryException. I've simplified the issue to remove the dependency on DocumentFormat.OpenXML and it appears to be isolated to writing to a `Part` within a `Package`. ### Source ```csharp using System; using System.IO; using System.IO.Packaging; namespace MemoryRepro { class Program { static void Main(string[] args) { using (var fs = new FileStream(Path.GetTempFileName(), FileMode.Create, FileAccess.ReadWrite)) using (var package = Package.Open(fs, FileMode.Create)) { var part = package.CreatePart(new Uri(""/part"", UriKind.Relative), ""something/sometype""); using (var stream = part.GetStream()) using (var writer = new StreamWriter(stream)) { for (var i = 0; i < int.MaxValue; i++) { writer.Write(""hello""); } } } } } } ``` ### Project ```xml Exe net47 ``` This repro code appears to have a working set of around 60mb running on .NET 4.7, while it grows very quickly on .NET Core 2.0 The error on .NET Core 2.0 is: ``` Unhandled Exception: System.IO.IOException: Stream was too long. at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Compression.WrappedStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) at System.IO.StreamWriter.Write(String value) at MemoryRepro.Program.Main(String[] args) in c:\users\tasou\source\repos\MemoryRepro\MemoryRepro\Program.cs:line 21 ``` " +24462 area-System.Security Different exceptions being throw in Unix and OSX in HashProviderDispenser I didn't check if that is also the case for other locations but we have different exceptions between OSX and Unix for the same issue: https://github.com/dotnet/corefx/blob/b6ef0f1458bbbb43465eaef04ca396e192ff19ed/src/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/HashProviderDispenser.OSX.cs#L30 https://github.com/dotnet/corefx/blob/b6ef0f1458bbbb43465eaef04ca396e192ff19ed/src/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/HashProviderDispenser.Unix.cs#L30 +24463 area-Infrastructure Update CentOS 6 and 7 docker images The images now contain clang 3.9 with PGO support +24464 area-System.Drawing Give a meaningful exception message when FunctionWrapper targets are not successfully loaded. @danmosemsft This should fix the issue you just brought up to me. If libgdiplus is missing, the exception should now include this message: `Unable to load DLL 'libgdiplus': The specified module could not be found.` @safern It's a big diff, but I've just added an extra parameter to all of the function wrapper calls, so that the exception message can include the name of the library being wrapped. +24466 area-System.Runtime Add tests for randomized hashing We need tests that randomized string hashing is working correctly on all platforms. One minimal test would be to launch a child process, and check that some string's GetHashCode() gives a different result than it does in the test's own process (maybe with a retry in case of 4 billion : 1 bad luck) https://github.com/dotnet/coreclr/blob/da8b7181dbe362fbfe64c7ef72ff3a4a7db68f24/src/mscorlib/src/System/String.Comparison.cs#L971 Ideally we would also test that Dictionary resorts to randomized hash codes when it's hitting a lot of collisions. This is hard to test without somehow generating a lot of strings that collide with the non randomized hash code. I suggest using reflection to force `HashHelpers.HashCollisionThreshold` to zero and then check that Comparer on the dictionary changes to the standard EqualityComparer.Default. https://github.com/dotnet/coreclr/blob/da8b7181dbe362fbfe64c7ef72ff3a4a7db68f24/src/mscorlib/src/System/Collections/Generic/Dictionary.cs#L454 Dictionary is the only collection that specially uses non randomized string hashcodes. All others just get the regular string randomized one. +24467 area-Infrastructure initial Freebsd support. This also add System.Diagnostic.Process so test can run. +24469 area-System.Net [release/2.0.0] Port missing System.Net.Http NETFX fixes Issue #23702 showed some Http test failures on NETFX. This was because PRs, #21325 and #21373 are missing from the release/2.0.0 branch. These fixes are needed for the OOB System.Net.Http.dll that is being built for the NETStandard Support Package. This package is used when NETStandard is targeted and the platform is NETFX but less than .NET 4.7.1. +24470 area-System.Runtime Expose/test DateTime{Offset}'s Span-based {Try}Parse{Exact} and TryFormat methods Depends on https://github.com/dotnet/coreclr/pull/14352 Fixes https://github.com/dotnet/corefx/issues/22358 cc: @tarekgh, @AlexGhiondea, @joperezr +24472 area-System.Net "HttpClient post request throws exception ""Couldn't connect to server"" in ubuntu server" "The deployment I'm doing in ubuntu server in pair of Kestrel, Nginx e.t.c. All the steps from this documentation: https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x **Ubuntu information:** Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial So, the problem as I see from the stack trace is exactly on the HttpClient initialization .cs line 34 > Oct 06 05:43:12 smsassist smsassistservice[21050]: at SmsAssistKitchen.Managers.AccountManager.d__2.MoveNext() in D:\Startup projects\smsassistservice\SmsAssistKitchen\SmsAssistKitchen\Managers\AccountManager.cs:line 34 **Full stack trace:** > -- Logs begin at Thu 2017-10-05 11:34:12 UTC. -- > Oct 06 05:43:12 smsassist smsassistservice[21050]: at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() > Oct 06 05:43:12 smsassist smsassistservice[21050]: at System.Net.Http.HttpClient.d__58.MoveNext() > Oct 06 05:43:12 smsassist smsassistservice[21050]: --- End of stack trace from previous location where exception was thrown --- > Oct 06 05:43:12 smsassist smsassistservice[21050]: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > Oct 06 05:43:12 smsassist smsassistservice[21050]: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > Oct 06 05:43:12 smsassist smsassistservice[21050]: at SmsAssistKitchen.Managers.AccountManager.d__2.MoveNext() in D:\Startup projects\smsassistservice\SmsAssistKitchen\SmsAssistKitchen\Managers\AccountManager.cs:line 34 > Oct 06 05:43:12 smsassist smsassistservice[21050]: --- End of stack trace from previous location where exception was thrown --- > Oct 06 05:43:12 smsassist smsassistservice[21050]: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > Oct 06 05:43:12 smsassist smsassistservice[21050]: at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > Oct 06 05:43:12 smsassist smsassistservice[21050]: at SmsAssistKitchen.Controllers.AccountController.d__5.MoveNext() in D:\Startup projects\smsassistservice\SmsAssistKitchen\SmsAssistKitchen\Controllers\AccountController.cs:line 129 > **Here is example how I'm doing the request**: This static method is placed in static class so called AccountManager and this method is doing post request to another service to register an account. This method is invoked from the post async controller you can see it a little below ``` public static async Task RegisterAsync(AccountModel account) { using (var httpClient = new HttpClient()) { var jsonEntity = JsonConvert.SerializeObject(account); var content = new StringContent(jsonEntity, Encoding.UTF8); content.Headers.ContentType = new MediaTypeHeaderValue(""application/json""); var response = await httpClient.PostAsync(""http://127.0.0.1:8080/account/register"", content); return response; } } ``` ``` [HttpPost] public async Task Register(AccountModel account) { try { logger.LogDebug(""ModelState is valid? {0}"", ModelState.IsValid); if (!ModelState.IsValid) { logger.LogDebug(""Going to response with a json result""); Response.StatusCode = (int)HttpStatusCode.Conflict; var jsonResult = new JsonResult(JsonConvert.SerializeObject(new RegistrationResponseModel { Message = ""Model state is invalid"" })); logger.LogDebug(""Json result with serialized object. {0}"", jsonResult.Value); return jsonResult; } logger.LogDebug(""Going to register new account {0}"", account.Email); var responseMessage = await AccountManager.RegisterAsync(logger, account); logger.LogDebug(""Response for account registration is: ""); logger.LogDebug(""StatusCode: {0}"", responseMessage.StatusCode.ToString()); logger.LogDebug(""ReasonPhrase: {0}"", responseMessage.ReasonPhrase); logger.LogDebug(""IsSuccessStatusCode: {0}"", responseMessage.IsSuccessStatusCode); switch (responseMessage.StatusCode) { case HttpStatusCode.OK: { var content = await responseMessage.Content.ReadAsStringAsync(); var responseModel = JsonConvert.DeserializeObject(content); HttpContext.Session.Set(""access.token"", Encoding.UTF8.GetBytes(responseModel.AccessToken.TokenString)); Response.StatusCode = (int)HttpStatusCode.OK; var jsonResult = new JsonResult(JsonConvert.SerializeObject(new RegistrationResponseModel { Message = responseModel.Message, AccessToken = responseModel.AccessToken })); return jsonResult; } case HttpStatusCode.Conflict: { var content = await responseMessage.Content.ReadAsStringAsync(); var responseModel = JsonConvert.DeserializeObject(content); Response.StatusCode = (int)HttpStatusCode.Conflict; var jsonResult = new JsonResult(JsonConvert.SerializeObject(new RegistrationResponseModel { Message = responseModel.Message, AccessToken = responseModel.AccessToken })); return jsonResult; } default: { var content = await responseMessage.Content.ReadAsStringAsync(); var responseModel = JsonConvert.DeserializeObject(content); Response.StatusCode = (int)HttpStatusCode.InternalServerError; var jsonResult = new JsonResult(JsonConvert.SerializeObject(new RegistrationResponseModel { Message = responseModel.Message, AccessToken = responseModel.AccessToken })); return jsonResult; } } } catch (Exception e) { logger.LogError(""Was thrown an exception {0}"", e.ToString()); logger.LogDebug(""Going to response with a json result""); Response.StatusCode = (int)HttpStatusCode.InternalServerError; var jsonResult = new JsonResult(JsonConvert.SerializeObject(new RegistrationResponseModel { Message = e.Message, AccessToken = null })); logger.LogDebug(""Json result with serialized object. {0}"", jsonResult.Value); return jsonResult; } } ``` " +24473 area-System.Runtime Serialization error in .net core 2.0, same code was working in .net core 1.1 "@chintan3100 commented on [Mon Sep 11 2017](https://github.com/dotnet/core/issues/959) public class CustomClass { [Required] public System.Guid? clientId { get; set; } } `""\""bb2f3da7-bf79-4d14-9d54-0a1f7ff5f902\""""` system.argumentexception Could not cast or convert from System.String to System.Guid. newtonsoft.json at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) --- @chintan3100 commented on [Mon Sep 11 2017](https://github.com/dotnet/core/issues/959#issuecomment-328666671) I can not change client call who calling API with `""\""bb2f3da7-bf79-4d14-9d54-0a1f7ff5f902\""""`. Client has code freeze. --- @chintan3100 commented on [Tue Sep 12 2017](https://github.com/dotnet/core/issues/959#issuecomment-328758137) Hi .net core 1.1 : When we return string from api it like ""bb2f3da7-bf79-4d14-9d54-0a1f7ff5f902"" .net core 2.0 `""\""bb2f3da7-bf79-4d14-9d54-0a1f7ff5f902\""""` --- @Petermarcu commented on [Tue Sep 12 2017](https://github.com/dotnet/core/issues/959#issuecomment-328893753) @ViktorHofer @danmosemsft can you take a look? --- @ViktorHofer commented on [Tue Sep 12 2017](https://github.com/dotnet/core/issues/959#issuecomment-328913996) @chintan3100 I spent some time trying to reproduce your issue but I don't have enough information to understand what's going on here. Please post a small reproduction code. I don't know which APIs you are using (even it they aren't .NET Core related but Json.NET). --- @Petermarcu commented on [Fri Oct 06 2017](https://github.com/dotnet/core/issues/959#issuecomment-334623526) @ViktorHofer can you move this issue over to dotnet/corefx to track it? " +24474 area-System.Runtime Expose/test Span-based Convert methods Depends on https://github.com/dotnet/coreclr/pull/14358 Fixes https://github.com/dotnet/corefx/issues/22417 cc: @AlexGhiondea, @joperezr +24475 area-System.Net Proposal: SmtpClient.SendMailAsync overload with cancellation ## Problem Right now there's a `SendAsyncCancel` method which is used to cancel the event-based pre-TPL `SendAsync`. `SendMailAsync` is implemented as a wrapper around `SendAsync` ([code](https://github.com/dotnet/corefx/blob/e6084de42bbef119027a8ac4eb7a60789b153b51/src/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs#L782-L805)) but for some reason neglects to take and apply the customary cancellation token. This means people who want cancellation currently need to add a using statement: ```cs using (cancellationToken.Register(smtpClient.SendAsyncCancel)) { await smtpClient.SendMailAsync(message); } ``` Extension method for convenience, in case you want to operate on the original Task without wrapping in an async state machine: ```cs public static Task SendMailAsync(this SmtpClient client, MailMessage message, CancellationToken cancellationToken) { if (client == null) throw new ArgumentNullException(nameof(client)); if (message == null) throw new ArgumentNullException(nameof(message)); var cancellationRegistration = cancellationToken.Register(client.SendAsyncCancel); var task = client.SendMailAsync(message); task.ConfigureAwait(false).GetAwaiter().OnCompleted(cancellationRegistration.Dispose); return task; } ``` The difficulty is that there's no guarantee that `SendMailAsync` will continue to be implemented in terms of `SendAsync` under the covers and that `SendAsyncCancel` will have any effect. Rather than an extension method, it's more future-proof to bring the responsibility of this coupling much closer to where it belongs: as a detail inside the implementation of `SmtpClient`. ## Proposal I propose adding these two overloads, copies of the existing overloads but appending a `CancellationToken` parameter: ```diff class System.Net.Mail.SmtpClient { public Task SendMailAsync(string from, string recipients, string subject, string body) + public Task SendMailAsync(string from, string recipients, string subject, string body, CancellationToken cancellationToken) public Task SendMailAsync(MailMessage message) + public Task SendMailAsync(MailMessage message, CancellationToken cancellationToken) } ``` Implementation would likely be straightforward, with the non-cancellable overloads delegating to the cancellable ones and the `SendCompletedEventHandler` disposing the cancellation registration. +24477 area-System.Net .Net WebClient.DownloadData api result in different behavior in some kind of project @treeicnliu commented on [Sat May 27 2017](https://github.com/dotnet/core/issues/664) I got different http packages by fiddler4 when i call the same fucntion WebClient.DownloadData(string uri) api with the same param uri on web proj and console proj. I found that webclient will auto decode uri in web proj,and keep the origin uri in console proj. is it a .net issue ? The uri below can't access,but it can be used for test http://objstore.qa.nt.ctripcorp.com/smartemailstorage/2017%5C4%5C6%5Cf809530b-0ded-49b4-8532-002c7ad73b41%5C%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C.pdf?AWSAccessKeyId=D1NNJCXLEF0O7JIB2U3L&Expires=1511426288&Signature=iJjQCreO6F7avac86Tg2S4e4Miw%3D --- @karelz commented on [Sun Jun 11 2017](https://github.com/dotnet/core/issues/664#issuecomment-307703162) Do both of your projects use the same .NET Core 2.0-preview1 version? The class is in `System.Net` namespace, if you still have troubles, please file it in CoreFX repo. --- @richlander commented on [Sat Jul 01 2017](https://github.com/dotnet/core/issues/664#issuecomment-312471536) @treeicnliu can you share the before and after of the return value in both cases. Can you share how this property is set in both cases? https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.encoding?view=netcore-2.0#System_Net_WebClient_Encoding --- @richlander commented on [Mon Jul 03 2017](https://github.com/dotnet/core/issues/664#issuecomment-312734798) @treeicnliu can you share a repro? I'm not quite sure what to test based on your description. --- @treeicnliu commented on [Fri Aug 11 2017](https://github.com/dotnet/core/issues/664#issuecomment-321776665) [test.docx](https://github.com/dotnet/core/files/1217516/test.docx) @richlander , i want to dowdload data from the url(with fixed signature) in .net web proj ,it doesn't work since the url has changed(broke the signature),but worked in console proj. see the file test.docx i uploaded. btw, both proj based on .net 4 framework. +24478 area-System.Drawing The type initializer for 'System.Drawing.KnownColors' threw an exception @lianggx commented on [Mon Apr 17 2017](https://github.com/dotnet/core/issues/594) debian.8.x.x64 if you throw The type initializer for 'System.Drawing.KnownColors' threw an exception to do:apt-get install libgdiplus I hope some one can fix it! --- @richlander commented on [Mon Jul 03 2017](https://github.com/dotnet/core/issues/594#issuecomment-312744247) @lianggx can you share a sample? --- @MeetOct commented on [Mon Jul 24 2017](https://github.com/dotnet/core/issues/594#issuecomment-317357160) i found this in docker images(microsoft/dotnet:1.1.2-runtime) when i used EPPlus.Core ``` The type initializer for 'System.Drawing.KnownColors' threw an exception. at System.Drawing.KnownColors.FromKnownColor(KnownColor kc) at System.Drawing.Color.get_White() ``` +24480 area-System.Data Toooooo slow interacting with MS sql server under Ubuntu 16.04 (both using EF or SQLDataReader) "@gorsand commented on [Fri Aug 11 2017](https://github.com/dotnet/core/issues/802) # Issue Title Toooooo slow interacting with MS sql server under Ubuntu 16.04 (either by EF or SQLDataReader) # General I have a web API application on dotnet under Core 2.0, Ubuntu 16.04, and an MS SQL server as data storage (totally < 1Gb of data there). Core i5 with 8 GB memory laptop, SSD 120 GB. Both the app and the server run on same machine (localhost). Under windows the same code requires about 2 sec (provided that the server is also running under windows). When loading a table of about 150 000 rows (about 10 columns) from sql server I get about 300 sec time! Smaller tables also loaded in such a big time (proportionally to the number of rows). All requests are sync (async versions never used). This happens for both the EF approach or with direct using of SQLDataReader, so the problem is NOT in the EF. As a workaround I simply run sqlcmd tool with the sql request as a separate process and parse its output as a cvs file. This takes about 2 sec (not 300 sec) for the same tables. MS SQL server was installed in a pretty ""normal"" way following the official instructions (https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu). I use typical code for DB reading in C# by EF where-style request or just with SQLDataReader: using (var connection = new SqlConnection(DataConString)) { var command = new SqlCommand(query, connection); command.Connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) parse_the_line(reader); } My gues is that Core 2.0 handles the connection in some bad manner (eg. disconnects and connects on each row of table) or there's something in deserialization (though I think just any kind of deserialization woldn't be that bad) or maybe Core 2.0 switches to async methods under the hood (which in turn set a kind of timer and wakes on receiving each piece of data) or so on, but these are only my guesses. Maybe it's somehow connected with the well known MS SQL server bug (feature?) under linux: sqlcmd tool becomes toooo slow when the output is redirected to a file by '>' in the command line. (Note: I don't redirect the output when using sqlcmd tool as a workaround, just read the process output line by line.) So maybe Core 2.0 works with MS SQL server the same bad way as sqlcmd tool does when redirected to a file. But again these are only my guesses. **Upd:** The problem is on Core side, not with the SQL server. I just tried connecting to Windows-hosted server, the problem still remains (about 300 sec for 150K rows). Though the same code under Windows works fine (about 2-3 sec). --- @Ataden commented on [Sat Aug 12 2017](https://github.com/dotnet/core/issues/802#issuecomment-321964793) I confirm such an issue. On Windows EF Core and SQL library work great but on Linux they are way too slow. It is almost imposible to use them on Linux at all. --- @ayurjev commented on [Sat Aug 12 2017](https://github.com/dotnet/core/issues/802#issuecomment-321965303) I noticed the same slow performance while I was trying to use Core 2.0 on MacOS... It had been taking 40-50 seconds to execute simple query.... " +24481 area-System.Linq Strange generic expressions type check behavior "@chrbaeu commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856) The following code prints with netcoreapp1.0 and net461: ``` IsExpression: True IsExpression: True ``` And with netcoreapp2.0: ``` IsExpression: False IsExpression: True ``` I think netcoreapp2.0 should show the same results as the other. ``` namespace ExpressionBugTest { class Program { static void Main(string[] args) { Expression> predicate = x => x != null; Console.WriteLine(""IsExpression: "" + (predicate.GetType().GetGenericTypeDefinition() == typeof(Expression<>))); Console.WriteLine(""IsExpression: "" + (typeof(Expression>).GetGenericTypeDefinition() == typeof(Expression<>))); Console.ReadKey(); } } } ``` --- @svick commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323069527) As far as I can tell, the reason for this is that `predicate.GetType().GetGenericTypeDefinition()` returns the internal type [`Expression1`](https://github.com/dotnet/corefx/blob/43f78840284de81bfd1b5fe4deceedf95c673cf8/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs#L358), which inherits from `Expression` and was introduced as an optimization in https://github.com/dotnet/corefx/pull/13133. I'm not sure what is the best way to correctly check that a `Type` is an `Expression`. --- @stephentoub commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323075860) cc: @bartdesmet, @VSadov " +24482 area-System.Net HttpClient Coding problem "@tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782) # HttpClient Coding problem Problems with Chinese Fonts # General ```c# var client = new HttpClient(); var multipartContent = new MultipartFormDataContent(""-------boundary""); var fileStream2 = File.Open(@""H:\开源的项目\新建文本文档.txt"", FileMode.Open); var streamContent2 = new StreamContent(fileStream2); multipartContent.Add(streamContent2, ""files"", ""新建文本文档.txt""); var output = new MemoryStream(); await multipartContent.CopyToAsync(output); output.Seek(0, SeekOrigin.Begin); string result = new StreamReader(output).ReadToEnd(); return result; ``` result string: ``` filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?="" filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ``` ``` ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- ``` @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-318999778) ``` ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- ``` @karelz commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319013205) What is the key problem in your repro? Is it the Unicode file name? Is it the content of the file? Can you please clarify what is expected vs. current output? @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319125019) I want to use httpclient to upload files. When the name of the file is Chinese, the garbled code appears. I want to be able to upload Chinese files correctly. For example: filename=“新建文本文档.txt“ instead of: filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?="" @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319131940) I want to encode the Content.header with UTF-8 and calculate the length instead of using DefaultHttpEncoding (Encoding.GetEncoding (28591)). The source code is: System.Net.Http.HttpRuleParser ```c# internal static readonly Encoding DefaultHttpEncoding = Encoding.GetEncoding(28591); ``` [EDIT] Changed code formatting for readability by @karelz" +24484 area-System.Security cannot import X509Certificate from file in .net core 2.0 "@xingzhougmu commented on [Sat Sep 02 2017](https://github.com/dotnet/core/issues/932) # Issue Title cannot import X509Certificate from file in .net core 2.0 # General The following code works perfectly in .net core 1.0, however, does not in .net core 2.0. `X509Certificate clientCert = new X509Certificate(Directory.GetCurrentDirectory() + ""/Certs/Production/CN_Certificate.crt"");` Under .net core 2.0, the exception is as below: > {Interop+AppleCrypto+AppleCommonCryptoCryptographicException: Unknown format in import. > at Interop.AppleCrypto.X509ImportCertificate(Byte[] bytes, X509ContentType contentType, SafePasswordHandle importPassword, SafeKeychainHandle keychain, Boolean exportable, SafeSecIdentityHandle& identityHandle) > at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) > at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) > at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName) > at Test.Program.Main(String[] args) in /Users/xzhou/Projects/Test/Program.cs:line 40} > For some issues, you will get a quicker and better response if you file it at a more specific [.NET repo](https://github.com/dotnet/core/blob/master/Documentation/core-repos.md). For example, if the problem is with ASP.NET Core, you are encouraged to use the [aspnet/home repo](https://github.com/aspnet/home/issues). " +24485 area-System.Net SmtpClient throws NullReferenceException on Dispose() "@sibvic commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/912) I'm using: netcoreapp2.0 The next code throws an exception: using (var client = new SmtpClient(""smtp.mail.ru"", 465)) { client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(Options.EmailSenderUser, Options.EmailSenderPassword); client.SendAsync(emailMessage, new object()); }//throws an exception here!!! NullReferenceException: Object reference not set to an instance of an object. System.Net.Mail.SmtpConnection.ReleaseConnection() System.Net.Mail.SmtpClient.Dispose(bool disposing) System.Net.Mail.SmtpClient.Dispose() --- @Petermarcu commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/912#issuecomment-326046972) @Priya91, can you copy this over to corefx and maybe take a look? --- @shalaka198 commented on [Thu Sep 21 2017](https://github.com/dotnet/core/issues/912#issuecomment-331329224) Is there any update on this issue? I am facing the same. --- @msvprogs commented on [Sun Sep 24 2017](https://github.com/dotnet/core/issues/912#issuecomment-331741350) +1, I have the same problem. OS CentOS 7, .NET Core 2.0 " +24486 area-System.Net .Net Core :HttpClient fails with : The server returned an invalid or unrecognized response on every request "@savkris commented on [Wed Aug 16 2017](https://github.com/dotnet/core/issues/844) **HttpClient fails with: The server returned an invalid or unrecognized response** > StackTrace: > System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() > at System.Net.Http.WinHttpHandler.d__105.MoveNext() # General By requesting an API endpoint that, the first call succeeded but never again. The page loads on any browser otherwise. Using Fiddler to inspect to try and find out what is going on: I am getting this response back with 200 Status code and data loaded as XML: > HTTP/1.1 200 OK > Accept-Ranges: bytes > Age: 4 > Cache-Control: no-cache > Content-Type: application/xml; charset=utf-16 > Date: Wed, 16 Aug 2017 07:50:04 GMT > Expires: -1 > Pragma: no-cache > X-Trace-Id: 246493.030-507962550 > Content-Length: 858120 > Connection: keep-alive > X-Iinfo: 5-4932445-4935132 NNNN CT(0 -1 0) RT(1502869770814 33059) q(0 0 0 -1) r(0 0) U5 > X-CDN: Incapsula I am running on: > .NET Command Line Tools (2.1.0-preview1-006958) > > Product Information: > Version: 2.1.0-preview1-006958 > Commit SHA-1 hash: 51567d7641 > > Runtime Environment: > OS Name: Windows > OS Version: 10.0.15063 > OS Platform: Windows > RID: win10-x64 > Base Path: C:\Program Files\dotnet\sdk\2.1.0-preview1-006958\ > > Microsoft .NET Core Shared Framework Host > Version : 2.0.0 Here is the simple code : ``` try { var response = await CronwBetClient.GetAsync(""https://api.beteasy.com.au/RacingFeed/api/feed""); } catch (HttpRequestException e) { Console.WriteLine(e); throw; } ``` --- @karelz commented on [Tue Aug 22 2017](https://github.com/dotnet/core/issues/844#issuecomment-324090088) You are using preview1 bits. Do you get the same error on RTM bits (released on 8/14)? If you can, please post code which has chance to compile - `CronwBetClient` above is not part of Framework. Thanks! " +24487 area-Infrastructure Need good diagnostics for missing dependencies Where ever .NET Core has a requirement on some dependency, we should document it, and far as possible when at runtime it should indicate how to fix the problem. 1. Build time dependencies documented with good errors if not found (focus on CoreFX/CoreCLR repo): - [ ] RHEL/Centos ([here](https://github.com/dotnet/core/blob/master/Documentation/build-and-install-rhel6-prerequisites.md)) - [ ] Fedora - [ ] Debian - [ ] Ubuntu - [ ] Mint - [ ] openSUSE, SLES - [ ] macOS - [ ] Windows ([here](https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md)) 2. Run time dependencies documented with good errors if not found: - [ ] RHEL/Centos - [ ] Fedora - [ ] Debian - [ ] Ubuntu - [ ] Mint - [ ] openSUSE, SLES - [ ] macOS - [ ] Windows - [ ] RaspberryPi ([here](https://github.com/dotnet/core/blob/master/samples/RaspberryPiInstructions.md)) - [ ] FreeBSD (pending) - [x] System.Drawing (libgdiplus) #24464 - [ ] System.Data.ODBC (unixODBC) * Some of this information can be mined from our [docker files](https://github.com/dotnet/dotnet-docker). * CoreFX build docs for Unix/macOS [here[](https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md) and Windows [here](https://github.com/dotnet/corefx/blob/master/Documentation/building/windows-instructions.md) * Out of date information: [1](https://github.com/dotnet/core/blob/master/Documentation/prereqs.md) * Need to check on what the SDK/CLI documents and warns for. +24491 area-Serialization Support Reference Assemblies in SGEN. "Customer can define the reference assemblies as well as the related types that need pregenerated serializer as the followings. ``` MyData06.Class1;MyData06.Class3 MyData07.Class5;MyData07.Class6 ``` Fix #22937 @shmao @mconnew @zhenlan " +24492 area-System.Net SSLStream - Fix write renegotiation and make a single function for it I was taking a hard look at the code for triggering the callback after an async renegotiation for both read and write. The write side is currently missing the TaskCompletionSource call that was added, but seemed to drop out of my PR. I have put this in and moved the duplicate code to a single function which is what I was prototyping on the read side to make that full async. +24495 area-System.Net .net core 1.1 IFormFileCollection files Performance issue @chintan3100 commented on [Sun Sep 03 2017](https://github.com/dotnet/core/issues/934) public async Task Put(IFormFileCollection files) { return await UpdateFile(file); } I have hosted application in azure PAAS and analysis log of server. 6 second are taking to get file on server. file size 10 MB. Ref Link:http://weblogs.thinktecture.com/pawel/2017/03/aspnet-core-webapi-performance.html +24496 area-System.Net System.Net.Http.HttpContent.ReadAsStringAsync fails for ISO-8859-15 (Latin-9) "I'm trying to read the HTTP response from a web service, where the content type header is: ``` Content-Type: text/html; charset=ISO-8859-15 ``` When invoking `System.Net.Http.HttpContent.ReadAsStringAsync()` my app fails with `System.InvalidOperationException` ""*The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set.*"" `ISO-8859-15` (Latin-9) though is a valid charset, and the problem seems to be in the incomplete list of charsets hardcoded in .NET (System.Globalization I think). Is this a bug? Is there another way to read content encoded with this (or any other) charset, other than going lower level into the data stream?" +24497 area-System.Net SSLStream - Make read side async, and remove a bunch of allocations Includes bug fix from writeside. (#24492) Benches/Traces to follow. +24498 area-System.Diagnostics Allow ProcessStart when folder in CurDirectory has same name as file in ExecDirectory Allow ProcessStart when folder in current directory has same name as file in execution directory cc: @danmosemsft @stephentoub @livarcocc @ahsonkhan +24499 area-System.Net Linux Memory Leak using DefaultRequestHeaders.ConnectionClose = true We've been investigating a memory leak for a while now and have finally found the cause. Originally, due to some requirements we were forced to close connections after each request, so we set HttpClient.DefaultRequestHeaders.ConnectionClose to true on our HttpClient singleton. The leak was exposed under a load test. We added a setting around ConnectionClose and simply leaving it at false stops the leak. This leak can be reproduced under centos7 environment using a load test on this basic core 2.0 project : https://github.com/psyonix-luis/CloseConnectionLeak We are unable to reproduce this in Windows, memory stays relatively constant : https://i.imgur.com/IBD0CFQ.jpg After a test of 300k requests using the sample project in linux, the app was taking up about 5.5GB : https://i.imgur.com/qZM5K7W.jpg Comparison true vs false : https://i.imgur.com/Z6Z6CSG.png I would expect some performance difference not reusing connections, but not a _killer_ difference. +24500 area-System.Collections Adding System.Collections.NonGenerics ArrayList performance tests. (#18765) Adding ArrayList performance tests (#18765) +24502 area-System.Data Cannot use DBDataReader as Structured SQL Parameter with 2.0 Update "@Coder3333 commented on [Thu Sep 21 2017](https://github.com/dotnet/core/issues/983) This article details how to use a DBDataReader as a Structured input parameter to a SQL query: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/table-valued-parameters This worked just fine with Core 1.1, but since I updated to Core 2.0, it no longer works. If I use DataTable as input, instead of a DBDataReader, the exact same code works. The error I get is: ""Specified method is not supported"" at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() --- @nil4 commented on [Sun Oct 08 2017](https://github.com/dotnet/core/issues/983#issuecomment-335007721) Confirmed, same here. " +24504 area-System.Threading "System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic failed with ""Xunit.Sdk.TrueException"" in CI" Failed test: System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic Configuration: osx10.12_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug/3255/testReport/System.Threading.Tests/MutexTests/CrossProcess_NamedMutex_ProtectedFileAccessAtomic_prefix____d3e87b891666440cbeba7116a70ac17d___/ MESSAGE: ~~~ Assert.True() Failure\nExpected: True\nActual: False ~~~ STACK TRACE: ~~~ at System.Threading.Tests.ThreadTestHelpers.<>c__DisplayClass3_0.b__2() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug/src/Common/tests/System/Threading/ThreadTestHelpers.cs:line 48 at System.Threading.Tests.ThreadTestHelpers.RunTestInBackgroundThread(Action test) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug/src/Common/tests/System/Threading/ThreadTestHelpers.cs:line 100 at System.Threading.Tests.MutexTests.CrossProcess_NamedMutex_ProtectedFileAccessAtomic(String prefix) in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug/src/System.Threading/tests/MutexTests.cs:line 227 ~~~ +24505 area-System.IO "Test: System.IO.Tests.FileStream_BeginEndWrite_AsyncWrites/WriteAsyncMiniStress failed with ""System.IO.IOException : No space left on device""" Opened on behalf of @Jiayili1 The test `System.IO.Tests.FileStream_BeginEndWrite_AsyncWrites/WriteAsyncMiniStress` has failed. System.IO.IOException : No space left on device Stack Trace: at System.IO.FileStream.WriteNative(ReadOnlySpan`1 source) in /root/coreclr/src/mscorlib/shared/System/IO/FileStream.Unix.cs:line 621 at System.IO.FileStream.WriteSpan(ReadOnlySpan`1 source) in /root/coreclr/src/mscorlib/shared/System/IO/FileStream.Unix.cs:line 607 at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count) in /root/coreclr/src/mscorlib/shared/System/IO/FileStream.cs:line 412 at System.IO.Stream.<>c.b__49_0(Object ) in /root/coreclr/src/mscorlib/src/System/IO/Stream.cs:line 484 at System.Threading.Tasks.Task`1.InnerInvoke() in /root/coreclr/src/mscorlib/src/System/Threading/Tasks/future.cs:line 616 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) in /root/coreclr/src/mscorlib/shared/System/Threading/ExecutionContext.cs:line 151 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) in /root/coreclr/src/mscorlib/src/System/Threading/Tasks/Task.cs:line 2440 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in /root/coreclr/src/mscorlib/src/System/Runtime/ExceptionServices/ExceptionServicesCommon.cs:line 130 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in /root/coreclr/src/mscorlib/src/System/Runtime/CompilerServices/TaskAwaiter.cs:line 152 at System.IO.Stream.EndWrite(IAsyncResult asyncResult) in /root/coreclr/src/mscorlib/src/System/IO/Stream.cs:line 554 at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) in /root/coreclr/src/mscorlib/src/System/Threading/Tasks/FutureFactory.cs:line 533 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in /root/coreclr/src/mscorlib/src/System/Runtime/ExceptionServices/ExceptionServicesCommon.cs:line 130 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in /root/coreclr/src/mscorlib/src/System/Runtime/CompilerServices/TaskAwaiter.cs:line 152 at System.IO.Tests.FileStream_AsyncWrites.d__24.MoveNext() in /root/corefx-1046379/src/System.IO.FileSystem/tests/FileStream/WriteAsync.cs:line 412 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in /root/coreclr/src/mscorlib/src/System/Runtime/ExceptionServices/ExceptionServicesCommon.cs:line 130 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in /root/coreclr/src/mscorlib/src/System/Runtime/CompilerServices/TaskAwaiter.cs:line 152 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in /root/coreclr/src/mscorlib/src/System/Runtime/ExceptionServices/ExceptionServicesCommon.cs:line 130 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in /root/coreclr/src/mscorlib/src/System/Runtime/CompilerServices/TaskAwaiter.cs:line 152 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in /root/coreclr/src/mscorlib/src/System/Runtime/ExceptionServices/ExceptionServicesCommon.cs:line 130 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in /root/coreclr/src/mscorlib/src/System/Runtime/CompilerServices/TaskAwaiter.cs:line 152 Build : Master - 20171009.01 (Core Tests) Failing configurations: - Fedora.26.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171009.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.FileStream_BeginEndWrite_AsyncWrites~2FWriteAsyncMiniStress +24508 area-System.Console FailFast in System.ConsolePal.WindowsConsoleStream.WriteFileNative "While debugging OpenCover, which invoked xunit.console, if I select in the console (to block console output) I sometimes get a failfast as below. In this case, writeSuccess is true, but count == 50 and numBytesWritten is 100. The string to write is 50 characters: ""xUnit.net console test runner (64-bit .NET Core).\n"". MSDN seems clear that count is in bytes, however. Note: this is on RS3. MSDN says >If the pipe buffer is full when an application uses the WriteFile function to write to a pipe, the write operation may not finish immediately. The write operation will be completed when a read operation (using the ReadFile function) makes more system buffer space available for the pipe. When writing to a non-blocking, byte-mode pipe handle with insufficient buffer space, WriteFile returns TRUE with *lpNumberOfBytesWritten < nNumberOfBytesToWrite. Of course, this is the reverse situation but perhaps the assert would fail in this case also. I assume that WriteFile wants you to call it again for the remainder in this case (which we don't do) Console.OutputEncoding.CodePage=437 (OEM) ``` if (useFileAPIs) { int numBytesWritten; writeSuccess = (0 != Interop.Kernel32.WriteFile(hFile, p + offset, count, out numBytesWritten, IntPtr.Zero)); Debug.Assert(!writeSuccess || count == numBytesWritten); <<<<< } ``` ``` Cannot instrument C:\git\corefx\bin\testhost\netcoreapp-Windows_NT-Debug-x64\shared\Microsoft.NETCore.App\9.9.9\System.Private.CoreLib.dll as no PDB/MDB could be loaded xUnit.net console test runner (64-bit .NET Core) FailFast: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) in E:\A\_work\1111\s\src\mscorlib\shared\System\Diagnostics\Debug.cs:line 97 at System.Diagnostics.Debug.Assert(Boolean condition) in E:\A\_work\1111\s\src\mscorlib\shared\System\Diagnostics\Debug.cs:line 80 at System.ConsolePal.WindowsConsoleStream.WriteFileNative(IntPtr hFile, Byte[] bytes, Int32 offset, Int32 count, Boolean useFileAPIs) in C:\git\corefx\src\System.Console\src\System\ConsolePal.Windows.cs:line 1210 at System.ConsolePal.WindowsConsoleStream.Write(Byte[] buffer, Int32 offset, Int32 count) in C:\git\corefx\src\System.Console\src\System\ConsolePal.Windows.cs:line 1131 at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) in C:\git\corefx\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 260 at System.IO.StreamWriter.WriteLine(String value) in C:\git\corefx\src\System.Runtime.Extensions\src\System\IO\StreamWriter.cs:line 554 at System.IO.SyncTextWriter.WriteLine(String value) in C:\git\corefx\src\System.Console\src\System\IO\SyncTextWriter.cs:line 280 at System.IO.TextWriter.WriteLine(String format, Object arg0, Object arg1) in C:\git\corefx\src\System.Runtime.Extensions\src\System\IO\TextWriter.cs:line 484 at System.Console.WriteLine(String format, Object arg0, Object arg1) in C:\git\corefx\src\System.Console\src\System\Console.cs:line 566 at Xunit.ConsoleClient.Program.Main(String[] args) at System.Environment.FailFast(System.String, System.Exception) at System.Diagnostics.Debug.ShowAssertDialog(System.String, System.String, System.String) at System.Diagnostics.Debug.Assert(Boolean, System.String, System.String) at System.Diagnostics.Debug.Assert(Boolean) at System.ConsolePal+WindowsConsoleStream.WriteFileNative(IntPtr, Byte[], Int32, Int32, Boolean) at System.ConsolePal+WindowsConsoleStream.Write(Byte[], Int32, Int32) at System.IO.StreamWriter.Flush(Boolean, Boolean) at System.IO.StreamWriter.WriteLine(System.String) at System.IO.SyncTextWriter.WriteLine(System.String) at System.IO.TextWriter.WriteLine(System.String, System.Object, System.Object) at System.Console.WriteLine(System.String, System.Object, System.Object) at Xunit.ConsoleClient.Program.Main(System.String[]) C ```" +24509 area-System.Net [ManagedHandler] System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_DefaultProxyCredentials_Test/ProxySetViaEnvironmentVariable_DefaultProxyCredentialsUsed failed Opened on behalf of @Jiayili1 The test `System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_DefaultProxyCredentials_Test/ProxySetViaEnvironmentVariable_DefaultProxyCredentialsUsed(useProxy: True)` has failed. System.Diagnostics.RemoteExecutorTestBase+RemoteInvokeHandle+RemoteExecutionException : Remote process failed with an unhandled exception. Stack Trace: Child exception: System.AggregateException: One or more errors occurred. (Error while copying content to a stream.) (One or more errors occurred. (Error while copying content to a stream.)) ---> System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to transfer data on the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.FillAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnection.d__68.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.ContentLengthReadStream.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.HttpConnectionContent.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__49.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__49.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of inner exception stack trace --- at System.ThrowHelper.ThrowAggregateException(List`1 exceptions) at System.Threading.Tasks.Task.WaitAllCore(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.<>c.b__3_0(String useProxyString, String useManagedHandlerString) ---> (Inner Exception #0) System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to transfer data on the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.FillAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnection.d__68.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.ContentLengthReadStream.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.HttpConnectionContent.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__49.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__49.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext()<--- ---> (Inner Exception #1) System.AggregateException: One or more errors occurred. (Error while copying content to a stream.) ---> System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to transfer data on the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.FillAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnection.d__68.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.ContentLengthReadStream.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.HttpConnectionContent.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__49.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__49.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result() at System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test.<>c.b__3_1(Task`1 t) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__280_1(Object obj) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ---> (Inner Exception #0) System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to transfer data on the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.FillAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnection.d__68.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.ContentLengthReadStream.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpConnection.HttpConnectionContent.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContent.d__49.MoveNext() --- End of inner exception stack trace --- at System.Net.Http.HttpContent.d__49.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext()<--- <--- Child process: System.Net.Http.Functional.Tests, Version=4.2.1.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb System.Net.Http.Functional.Tests.HttpClientHandler_DefaultProxyCredentials_Test+<>c Int32 b__3_0(System.String, System.String) Child arguments: True, True Build : Master - 20171009.01 (Core Tests) Failing configurations: - Windows.7.Amd64-x86 - Release - Windows.81.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171009.01/workItem/System.Net.Http.Functional.Tests/analysis/xunit/System.Net.Http.Functional.Tests.ManagedHandler_HttpClientHandler_DefaultProxyCredentials_Test~2FProxySetViaEnvironmentVariable_DefaultProxyCredentialsUsed(useProxy:%20True) +24510 area-System.Memory test failures 'System.Span<>' is missing metadata Opened on behalf of @Jiayili1 The test `System.Tests.TypeTestsNetcore/TestIsByRefLike` has failed. System.Reflection.MissingMetadataException : 'System.Span<>' is missing metadata. For more information, please visit http://go.microsoft.com/fwlink/?LinkID=392859 Stack Trace: at System.Reflection.Runtime.TypeInfos.RuntimeBlockedTypeInfo.get_TypeRefDefOrSpecsForDirectlyImplementedInterfaces() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeBlockedTypeInfo.cs:line 229 at System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo.get_GenericTypeParameters() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.Reflection.Core\src\System\Reflection\Runtime\TypeInfos\RuntimeTypeInfo.cs:line 348 Build : Master - 20171009.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x86 - Debug - Release - Windows.10.Amd64.ClientRS3-x64 - Debug - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20171009.01/workItem/System.Runtime.Tests/analysis/xunit/System.Tests.TypeTestsNetcore~2FTestIsByRefLike +24514 area-System.Net "Possible Bug in ""System.Net.Mail.SmtpClient"" when using ""UseDefaultCredentials"" property" "Hi, it seems weird, and after looking a few minutes at your source code, i can not really say why, but it plays a role if the property ""UseDefaultCredentials"" is set before or after the property ""Credentials"" of class ""SmtpClient"" in the Namespace ""System.Net.Mail"". At least with our mail provider. Framework: asp.net core Version: 2.0 Example1: var client = new SmtpClient(""asmtp.mail.hostpoint.ch"", 587); client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(""our_usr"", ""our_pwd""); client.EnableSsl = true; //... Create MailMessage in variable ""message"" client.Send(message); Example2: var client = new SmtpClient(""asmtp.mail.hostpoint.ch"", 587); client.Credentials = new NetworkCredential(""our_usr"", ""our_pwd""); client.UseDefaultCredentials = false; client.EnableSsl = true; //... Create MailMessage in variable ""message"" client.Send(message); Result: Example1 works like a charm, while Example2 fails with this Exception: ""System.Net.Mail.SmtpException: 'Mailbox unavailable. The server response was: You are not authenticated. Try to activate SMTP Authentication in your mail'"" There is really no difference, just the switch of that 2 lines of code. We tested this in a clean new asp.net core test project. We simply could reproduce it as often as we want, just by switching this 2 lines. VERY weird ! :) Our provider for the mail is ""Hostpoint"" from Swizzerland (see host above in SmtpClient() constructor). Its not possible for me (security reasons) to offer you more information, like users, passwords, etc. so you can test. Sorry. But maybe the problem exists with other Mail providers like GMail etc. and you can reproduce it there. I didnt tested that. Maybe it is some really special thing with our Mail provider. But it seems definitelly worth for you to look at, i think. Or at least for me, to inform you about that :) Just want let you know about that strange issue. Best regards, Marcel" +24515 area-System.Net Update System.Net.Http to use Memory-based Stream methods - Overrides Read/WriteAsync(Memory, ...) on streams - Updates calls where relevant to use ReadAsync(Memory, ...) to avoid task allocation when possible - Removed NET46 #ifdefs in files I was touching Fixes https://github.com/dotnet/corefx/issues/22396 cc: @geoffkizer, @davidsh +24517 area-Infrastructure Consuming types in System.Security.Permissions fails for test projects targeting netfx "System.Security.Permissions only has a netstandard ref configuration and as such will bin-place that into the ref/netfx folder when building the netfx vertical. This library seems to be the last one that is still using PackageAsRefAndLib https://github.com/dotnet/corefx/blob/1a8531aa3c511d78a1520c40f4595334a8ba3ada/src/System.Security.Permissions/src/System.Security.Permissions.csproj#L9. We should remove that and instead add a netfx configurations for the ref so that our own projects can correctly consume this library. As a temp workaround test projects can add the: ``` ```" +24521 area-System.Net Fix null ref exception when Dispose'ing SmtpClient If SmtpClient is disposed after a failed send and no successful sends, it attempts to call Close on a null NetworkStream field. I can't reproduce the exact situation called out in https://github.com/dotnet/corefx/issues/24485, but this fixes the issue I noted in that thread, and I expect it'll fix the original issue as well. cc: @Priya91, @Petermarcu Fixes https://github.com/dotnet/corefx/issues/24485 (Separately, it looks like the connection mgmt in core's SmtpMail could be cleaned up; since a new connection is created per send, it's not clear to me why this close call is required at all.) +24522 area-System.Runtime Add core-setup's RuntimeEnvironment (platform detection) logic to RuntimeInformation Currently we have multiple pieces of code used for detection OS and its version: https://github.com/dotnet/corefx/blob/master/src/CoreFx.Private.TestUtilities/src/System/PlatformDetection.cs https://github.com/dotnet/core-setup/blob/master/src/managed/Microsoft.DotNet.PlatformAbstractions/RuntimeEnvironment.cs this logic is non-trivial to get correctly and thus we should not duplicate this logic. I believe RuntimeInformation is the most intuitive place where platform detection code should live. +24524 area-System.Security Support RFC 5816 and RFC 3161 trusted timestamping API proposal: ```C# namespace System.Security.Cryptography.Pkcs { public sealed partial class Rfc3161TimestampRequest { private Rfc3161TimestampRequest() { } public int Version => throw null; public ReadOnlyMemory GetMessageHash() => throw null; public Oid HashAlgorithmId => throw null; public Oid RequestedPolicyId => throw null; public bool RequestSignerCertificate => throw null; public ReadOnlyMemory? GetNonce() => throw null; public bool HasExtensions => throw null; public X509ExtensionCollection GetExtensions() => throw null; public byte[] Encode() => throw null; public bool TryEncode(Span destination, out int bytesWritten) => throw null; public Rfc3161TimestampToken ProcessResponse( ReadOnlyMemory responseBytes, out int bytesConsumed) => throw null; public static Rfc3161TimestampRequest CreateFromData( ReadOnlySpan data, HashAlgorithmName hashAlgorithm, Oid requestedPolicyId = null, ReadOnlyMemory? nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection extensions = null) => throw null; public static Rfc3161TimestampRequest CreateFromHash( ReadOnlyMemory hash, HashAlgorithmName hashAlgorithm, Oid requestedPolicyId = null, ReadOnlyMemory? nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection extensions = null) => throw null; public static Rfc3161TimestampRequest CreateFromHash( ReadOnlyMemory hash, Oid hashAlgorithmId, Oid requestedPolicyId = null, ReadOnlyMemory? nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection extensions = null) => throw null; public static Rfc3161TimestampRequest CreateFromSignerInfo( SignerInfo signerInfo, HashAlgorithmName hashAlgorithm, Oid requestedPolicyId = null, ReadOnlyMemory? nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection extensions = null) => throw null; public static bool TryDecode( ReadOnlyMemory encodedBytes, out Rfc3161TimestampRequest request, out int bytesConsumed) => throw null; } public sealed partial class Rfc3161TimestampToken { private Rfc3161TimestampToken() { } public Rfc3161TimestampTokenInfo TokenInfo => throw null; public SignedCms AsSignedCms() => throw null; public bool VerifySignatureForHash( ReadOnlySpan hash, HashAlgorithmName hashAlgorithm, out X509Certificate2 signerCertificate, X509Certificate2Collection extraCandidates = null) => throw null; public bool VerifySignatureForHash( ReadOnlySpan hash, Oid hashAlgorithmId, out X509Certificate2 signerCertificate, X509Certificate2Collection extraCandidates = null) => throw null; public bool VerifySignatureForData( ReadOnlySpan data, out X509Certificate2 signerCertificate, X509Certificate2Collection extraCandidates = null) => throw null; public bool VerifySignatureForSignerInfo( SignerInfo signerInfo, out X509Certificate2 signerCertificate, X509Certificate2Collection extraCandidates = null) => throw null; public static bool TryDecode( ReadOnlyMemory encodedBytes, out Rfc3161TimestampToken token, out int bytesConsumed) => throw null; } public sealed partial class Rfc3161TimestampTokenInfo { public Rfc3161TimestampTokenInfo( Oid policyId, Oid hashAlgorithmId, ReadOnlyMemory messageHash, ReadOnlyMemory serialNumber, DateTimeOffset timestamp, long? accuracyInMicroseconds=null, bool isOrdering=false, ReadOnlyMemory? nonce=null, ReadOnlyMemory? timestampAuthorityName=null, X509ExtensionCollection extensions =null) { throw null; } public int Version => throw null; public Oid PolicyId=> throw null; public Oid HashAlgorithmId => throw null; public ReadOnlyMemory GetMessageHash() { throw null; } public ReadOnlyMemory GetSerialNumber() { throw null; } public DateTimeOffset Timestamp => throw null; public long? AccuracyInMicroseconds => throw null; public bool IsOrdering => throw null; public ReadOnlyMemory? GetNonce() { throw null; } public ReadOnlyMemory? GetTimestampAuthorityName() { throw null; } public bool HasExtensions => throw null; public X509ExtensionCollection GetExtensions() { throw null; } public byte[] Encode() => throw null; public bool TryEncode(Span destination, out int bytesWritten) => throw null; public static bool TryDecode( ReadOnlyMemory encodedBytes, out Rfc3161TimestampTokenInfo timestampTokenInfo, out int bytesConsumed) { throw null; } } } ``` https://tools.ietf.org/html/rfc5816#section-1 https://tools.ietf.org/html/rfc3161 https://en.wikipedia.org/wiki/Trusted_timestamping +24525 area-System.Drawing Seg fault in System.Drawing.Common tests on Unix "We've been plagued by seg faults on Linux in the System.Drawing.Common tests, e.g. this one on SUSE: https://mc.dot.net/#/user/stephentoub/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/91ec984d64908b3ab312bef6f6fa599f5ea1cee7/workItem/System.Drawing.Common.Tests/wilogs ``` 2017-10-09 19:45:10,371: INFO: proc(54): run_and_log_output: Output: Discovering: System.Drawing.Common.Tests 2017-10-09 19:45:12,085: INFO: proc(54): run_and_log_output: Output: Discovered: System.Drawing.Common.Tests 2017-10-09 19:45:12,654: INFO: proc(54): run_and_log_output: Output: Starting: System.Drawing.Common.Tests 2017-10-09 19:45:13,601: INFO: proc(54): run_and_log_output: Output: System.Drawing.Printing.Tests.PrinterSettingsTests.MaximumCopies_ReturnsExpected [SKIP] 2017-10-09 19:45:13,601: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsAnyInstalledPrinters\"" 2017-10-09 19:45:13,604: INFO: proc(54): run_and_log_output: Output: System.Drawing.Printing.Tests.PrinterSettingsTests.LandscapeAngle_ReturnsExpected [SKIP] 2017-10-09 19:45:13,604: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsAnyInstalledPrinters\"" 2017-10-09 19:45:13,606: INFO: proc(54): run_and_log_output: Output: System.Drawing.Printing.Tests.PrinterSettingsTests.Collate_Default_ReturnsExpected [SKIP] 2017-10-09 19:45:13,606: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsAnyInstalledPrinters\"" 2017-10-09 19:45:13,620: INFO: proc(54): run_and_log_output: Output: System.Drawing.Printing.Tests.PrinterSettingsTests.IsPlotter_ReturnsExpected [SKIP] 2017-10-09 19:45:13,620: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsAnyInstalledPrinters\"" 2017-10-09 19:45:13,629: INFO: proc(54): run_and_log_output: Output: System.Drawing.Printing.Tests.PrinterSettingsTests.Static_InstalledPrinters_ReturnsExpected [SKIP] 2017-10-09 19:45:13,629: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""IsAnyInstalledPrinters\"" 2017-10-09 19:45:14,110: INFO: proc(54): run_and_log_output: Output: MonoTests.System.Drawing.Imaging.PngCodecTest.Bitmap2bitData [SKIP] 2017-10-09 19:45:14,110: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""GetRecentGdiPlusIsAvailable2\"" 2017-10-09 19:45:14,110: INFO: proc(54): run_and_log_output: Output: MonoTests.System.Drawing.Imaging.PngCodecTest.Bitmap2bitFeatures [SKIP] 2017-10-09 19:45:14,110: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""GetRecentGdiPlusIsAvailable2\"" 2017-10-09 19:45:14,111: INFO: proc(54): run_and_log_output: Output: MonoTests.System.Drawing.Imaging.PngCodecTest.Bitmap2bitPixels [SKIP] 2017-10-09 19:45:14,111: INFO: proc(54): run_and_log_output: Output: Condition(s) not met: \""GetRecentGdiPlusIsAvailable2\"" 2017-10-09 19:45:15,499: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/c092864f-24dd-40c6-a4ad-db55569616e0/Work/af3a10a9-a3b8-4472-893f-3ef12b40a6c4/Unzip/RunTests.sh: line 87: 4576 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Drawing.Common.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-10-09 19:45:15,540: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Drawing.Common.Tests 2017-10-09 19:45:15,540: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/c092864f-24dd-40c6-a4ad-db55569616e0/Work/af3a10a9-a3b8-4472-893f-3ef12b40a6c4/Unzip 2017-10-09 19:45:15,542: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/c092864f-24dd-40c6-a4ad-db55569616e0/Work/af3a10a9-a3b8-4472-893f-3ef12b40a6c4/Unzip 2017-10-09 19:45:15,543: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=19:45:15. Return value was 139 2017-10-09 19:45:15,544: INFO: proc(58): run_and_log_output: Exit Code: 139 2017-10-09 19:45:15,545: ERROR: scriptrunner(87): _main: Error: No exception thrown, but XUnit results not created 2017-10-09 19:45:15,545: ERROR: helix_test_execution(83): report_error: Error running xunit None ``` This has been happening frequently for months, but I can't find an existing issue for it." +24529 area-System.Data "Fix for OdbcParameter Error ""Data type 0x23 is a deprecated large object...""" "This is fix for the issue https://github.com/dotnet/corefx/issues/24417 *** Customer reported a bug for error in `OdbcParameter`. Customer was trying to get a `VARCHAR(8000)` type return value (output) from SQL Server stored procedure by `OdbcCommand`, and got exception thrown with error message: ``` [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid parameter 2 (''): Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter. Deprecated types are not supported as output parameters. Use current large object types instead. ``` Customer was not able to receive any string output longer than 3,999 characters from the stored procedure. ``` OdbcCommand command = new OdbcCommand(sql, con, trn); command.Parameters.Clear(); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(""@v1"", OdbcType.VarChar, 8000); //Input //Output. The error will not occur when 4000 is 3999. command.Parameters.Add(""@v2"", OdbcType.VarChar, 4000); command.Parameters.Add(""@v3"", OdbcType.Int); command.Parameters.Add(""@v4"", OdbcType.Int); command.Parameters[""@v1""].Direction = ParameterDirection.Input; command.Parameters[""@v2""].Direction = ParameterDirection.Output; ``` ``` CREATE PROCEDURE testCSProc1 ( @v1 VARCHAR(8000), @v2 VARCHAR(8000) OUT, @v3 INTEGER OUT, @v4 INTEGER OUT ) AS BEGIN SET @v2 = @v1 + @v1; SET @v3 = datalength(@v1); SET @v4 = datalength(@v2); END; GO ```" +24531 area-Infrastructure [follow-up] Use RedHat code detection from Microsoft.DotNet.PlatformAbstractions This PR is a follow up on my PR against release/2.0.0 which cleaned up bunch of code related to RedHat: https://github.com/dotnet/corefx/pull/24340/files This also addresses feedback from @eerhardt about reusing core-setup code. Changes included here: - rename/join PlatformDetection properties: ``` IsRedHat => IsRedHatFamily IsRedHat69 => IsRedHatFamily6 IsNotRedHat69 => IsNotRedHatFamily6 IsCentos7 => IsRedHatFamily7 IsNotFedoraOrRedHatOrCentos => IsNotFedoraOrRedHatFamily ``` - replace parsing code for distro detection so that it calls into https://github.com/dotnet/core-setup/blob/master/src/managed/Microsoft.DotNet.PlatformAbstractions/RuntimeEnvironment.cs +24535 area-System.Data Improve messaging when odbc dependency is not installed Fixes a part of #17405 cc: @corivera @danmosemsft +24536 area-System.Net Fix hang when SmtpClient.SendAsync fails to connect If Send{Mail}Async fails to connect, an exception gets thrown/eaten, and the completion callback is never invoked / the returned Task is never completed. (Ignore the first commit; it's just #24521, which this builds upon. I'll squash it away when merging this.) cc: @Priya91 Fixes #24485 +24537 area-System.ComponentModel System.ComponentModel.Tests.AsyncOperationFinalizerTests.Finalizer_OperationNotCompleted_CompletesOperation failed in CI Failed test: System.ComponentModel.Tests.AsyncOperationFinalizerTests.Finalizer_OperationNotCompleted_CompletesOperation Configuration: osx10.12_debug Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_debug/3273/testReport/System.ComponentModel.Tests/AsyncOperationFinalizerTests/Finalizer_OperationNotCompleted_CompletesOperation/ MESSAGE: ~~~ Exit code was 131 but it should have been 42\nExpected: True\nActual: False ~~~ STACK TRACE: ~~~ at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug/src/CoreFx.Private.TestUtilities/src/System/Diagnostics/RemoteExecutorTestBase.cs:line 191 at System.ComponentModel.Tests.AsyncOperationFinalizerTests.Finalizer_OperationNotCompleted_CompletesOperation() in /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_debug/src/System.ComponentModel.EventBasedAsync/tests/AsyncOperationFinalizerTests.cs:line 42 ~~~ +24538 area-System.Drawing FreeBSD: System.Drawing.Printing tests are failing === TEST EXECUTION SUMMARY === System.Drawing.Common.Tests Total: 1731, Errors: 0, Failed: 31, Skipped: 1327, Time: 1.415s ~/git/corefx/bin/tests/System.Drawing.Common.Tests/netcoreapp-FreeBSD-Debug-x64 ---- System.TypeInitializationException : The type initializer for 'System.Drawing.Printing.LibcupsNative' threw an exception. -------- System.DllNotFoundException : Unable to load DLL 'libdl': The specified module or one of its dependencies could not be found. (Exception from HRESULT: 0x8007007E) Stack Trace: /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs(88,0): at System.Drawing.Printing.PrintingServices.get_DefaultPrinter() /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/PrinterSettings.Unix.cs(70,0): at System.Drawing.Printing.PrinterSettings..ctor() /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/tests/Printing/PrinterSettingsTests.cs(224,0): at System.Drawing.Printing.Tests.PrinterSettingsTests.MaximumPage_SetValue_ReturnsExpected(Int32 maximumPage) ----- Inner Stack Trace ----- /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs(44,0): at System.Drawing.Printing.LibcupsNative.cupsGetDefault() /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs(107,0): at System.Drawing.Printing.PrintingServices.CheckCupsInstalled() /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs(64,0): at System.Drawing.Printing.PrintingServices..cctor() ----- Inner Stack Trace ----- at Interop.Libdl.dlopen(String fileName, Int32 flag) /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs(17,0): at System.Drawing.Printing.LibcupsNative.LoadLibcups() /home/furt/git/wfurt2-corefx/src/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs(12,0): at System.Drawing.Printing.LibcupsNative..cctor() This is because FreeBSD has dlopen in libc instead of libdl. This may be simple as updating src/Common/src/Interop/Unix/Interop.Libraries.cs libcups.so seems to exit but no testing has been done. This is part of https://github.com/dotnet/corefx/issues/1626 +24539 area-System.Threading "Test: System.Threading.Tasks.Tests.Status.TaskStatusTests/TaskStatus10 failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Threading.Tasks.Tests.Status.TaskStatusTests/TaskStatus10` has failed. Expecting Child Task final Status to be Canceled, while getting RanToCompletion Expected: True Actual: False Stack Trace: at System.Threading.Tasks.Tests.Status.TaskStatusTest.RealRun() in /root/corefx-1049346/src/System.Threading.Tasks/tests/Task/TaskStatusTest.cs:line 257 Build : Master - 20171010.02 (Core Tests) Failing configurations: - fedora.25.amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20171010.02/workItem/System.Threading.Tasks.Tests/analysis/xunit/System.Threading.Tasks.Tests.Status.TaskStatusTests~2FTaskStatus10 +24541 area-System.Net Add CipherSuite property to HttpClientHandler It's really nice to have opportunity to change CipherSuite per connection, when HttpClientHandler is using. At this time there is only possibility to define SslProtocol. I have read issues and this topic appeared few times. ## **Proposed API** ``` namespace System.Net.Http public class HttpClientHandler: HttpMessageHandler { // Other properties... public CipherSuite CipherSuite { get; } } ``` ## **Example Usage** ``` var handler = new HttpClientHandler { CipherSuite = CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA } ``` This API review is strongly connected with: https://github.com/dotnet/corefx/issues/21577 +24542 area-System.Diagnostics System.Diagnostics.Process.StartTime can be improved in Windows When Process instance is created using Process.GetProcesses() , it calls GetProcessInfos method inside. In WIndows it calls to internal [NtQuerySystemInformation](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Win32.cs) which returns process creation time. [ProcessInfo](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessInfo.cs) can be initialized using this value and pass it into Process. This allows getting StartTime property without any exception thrown. +24547 area-System.Threading Can something be done about the Microsoft.Tpl.Dataflow package? "[The `Microsoft.Tpl.Dataflow` package](https://www.nuget.org/packages/Microsoft.Tpl.Dataflow/) is outdated and generally shouldn't be used anymore. The replacement is [the `System.Threading.Tasks.Dataflow` package](https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/). But people keep using the old package (see e.g. https://github.com/dotnet/corefx/issues/202#issuecomment-335470737), not knowing they should switch to the new one. Is there something that can be done to help those people? Some options I considered: 1. Add an analyzer to [dotnet/platform-compat](https://github.com/dotnet/platform-compat) that will consider `Microsoft.Tpl.Dataflow` deprecated. 2. Release a new version of `Microsoft.Tpl.Dataflow` that will contain no code of its own and will ""redirect"" to `System.Threading.Tasks.Dataflow` by having a dependency on it. (And then keep releasing a new version every time `System.Threading.Tasks.Dataflow` updates?) cc: @stephentoub " +24548 area-Infrastructure Issues in CoreFx build and opening particular solution in VS 2017 community edition. "I am seeing following issue in build and opening System.Runtime.Extension solution in VS 2017 Community edition IDE. About three (plus) weeks back these issues were not seen. Last weekend, I sync'd my fork with latest code in dotnet/master and since then these issues have been happening consistently. Not only on my branch for #22409 but also on the master branch in my fork. I also recreated my local git repo, but no luck. Issues are, a. On firing ""build.cmd"" / ""build-managed.cmd"" execution is stuck at below line seen on console for about 10 - 15 mins and, at that time network activity kicks in. I see download at about 300kBps from the server ""blob.byaprdstr06a.store.core.windows.net"". Roughly 50MB of stuff is downloaded and then the build proceeds. The line on console after which download begins is as below: ```D:\WinCPP\corefx\packages\Microsoft.TargetingPack.NETFramework.v4.6.1\1.0.1\lib\net461\sysglobl.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> D:\WinCPP\corefx\bin\AnyOS.AnyCPU.Release\netfx\netcoreapp\sysglobl.dll``` b. On opening System.Runtime.Extension in VS 2017 Community edition IDE, it gets stuck at ""Preparing Solution"" for similar duration (10 - 15 mins). In this case too, network activity kicks in and devenv.exe appears to be downloading data from same server ""blob.byaprdstr06a.store.core.windows.net"". Alt+Tab into VS 2017 Community IDE at that point gives a pop up at lower right saying VS is busy and information has been sent to ""Visual Studio Experience Improvement Program""... Both the above issues repeat on each run of build command or each time the solution is opened in VS IDE. Primarily the problem is that 50MB per build (or even on opening VS) translates to 500 MB if I were to build / open VS for about 10 times during one coding session; a number that can be easily exceeded. Secondly, the 10-15 min delay holds up build / opening VS IDE. Kindly help. I am wondering if the download is not able to write some sort of "".complete"" file because of which the entire download is repeated every time I run build command or open the solution? This could very well be an issue with my setup that got introduced after I rebased about a month's data from dotnet/master. @karelz @weshaggard created this issue as per our discussion on gitter." +24550 area-System.Net HttpListener cannot recognize Websocket request from firefox "When establishing websocket connection, firefox sends such `Connection` header: `Connection: keep-alive, Upgrade` and `System.Net.HttpListener` can't recognize the `Upgrade` It can be tested with inserting this test case ```csharp [InlineData(""Connection: keep-alive, Upgrade\r\nUpgrade: websocket"", true)] ``` to the `IsWebSocketRequest_GetProperty_ReturnsExpected` test of `HttpListenerRequestTests.cs`" +24551 area-Infrastructure Need to build new 2.0.x Microsoft.NETCore.Platforms package We've made changes to the RID graph in the release/2.0.0 servicing branch. Specifically we [added support for RHEL 6](https://github.com/dotnet/corefx/pull/22970). However, we aren't producing a `2.0.x` version of the `Microsoft.NETCore.Platforms` package that contains these changes. In order to fully support RHEL 6, we need a new Platforms package with these changes in it. @weshaggard @Petermarcu @ericstj +24552 area-System.Security [debian9] libssl1.0.0 and libssl1.0.2 can end up loaded in same process causing crashes "On Debian 9, curl depends on libssl1.0.2. When the libssl1.0.0 and libssl1.0.2 packages are both installed on a machine, `System.Security.Cryptography.Native.Openssl` will preferentially load `libssl.so.1.0.0`. `System.Net.Http.Native`, however, loads `libcurl.so`, which in turn loads `libssl.so.1.0.2`. ### Repro Some combination (as yet undetermined; the repro is ""open PowerShell 6.0.0-beta.8, wait a while"") of interacting with the members of these assemblies, or of passing SSL contexts between System.Net.Http and System.Security.Cryptography.Openssl will trigger a segmentation violation and subsequent termination. ### Dependency Graph ``` * System.Net.Http.Native * libcurl.so.4 * libssl.so.1.0.2 * System.Security.Cryptography.Native.Openssl * libssl.so.1.0.0 ``` ### Resolution Not sure. * Probe for libssl symbols, fall back to dlopen if none are found? * Prefer `libssl.so.1.0.2`?" +24553 area-System.Net SNI API for SslStream ## Rationale The SNI extension allows for multiple hostnames to be served from a single IP address/port combo. This is needed for Kestrel to be able to be a true web facing internet server using TLS. The client side already supports sending a hostname so requires no change. The serverside should have a callback that gives the correct certificate/chain depending on a host name or returns null if none are available. If no certificate is returned the handshake should fail. This requires the ALPN Api to be completed first. ## API Shape ``` c# namespace System.Net.Security { public class SslServerAuthenticationOptions { public ServerCertificateSelectionCallback ServerCertificateSelectionCallback { get; set; } } public delegate System.Security.Cryptography.X509Certificates.X509Certificate ServerCertificateSelectionCallback(object sender, string hostName); } ``` Additional API information: - When host name could not be found the `hostName` value will be `null` when callback is called - `hostName` will never be an empty string - When caller returns null certificate we will throw `AuthenticationException` **Open questions:** - `ReadOnlySpan` vs. `string` for `hostName` - for server API it might be appropriate to make callback with `ReadOnlySpan` - this way server does not have to make two allocations on each request (1 for UTF8 conversion and 1 for IDN conversion) - server could potentially do conversion beforehand and then do byte compare - for client we chose hostName but in the client case it is less important and should be more user friendly - If we choose `ReadOnlySpan`, should we add API to convert to `string`? (and where) # References ALPN/Optionbag Dependent issue #23177 and PR #24389 /cc @Priya91 @Tratcher @geoffkizer @benaadams EDIT (@krwq): updated API proposal, added open questions +24554 area-System.Net Unit tests are failing if IPv6 is not configured I bump to this while running test on FreeBSD, however this issue is not OS specific. Some tests make silent assumption about IPv6 and they fail if system is not configured to meet that. This is unpleasant for anybody from community to run tests and get good pass. The easy repro for Linux is: sysctl -w net.ipv6.conf.all.disable_ipv6=1 ./build-tests.sh The expected behavior would be that tests needing IPv6 would be skipped. Right now, some tests even hang for very long time. +24555 area-System.Runtime Add Microseconds and Nanoseconds to TimeStamp, DateTime, and DateTimeOffset "Currently, the value of a single `Tick` in .NET is 100ns, however there is no API surface for accessing microseconds or nanoseconds other than using `Ticks` to manually calculate these numbers. Seems like this could be done in a minor version since it would be adding API surface, not changing existing API's, and functionality would be unchanged. # Proposed API ```C# namespace System { public struct DateTime { /// When microseconds is not between 0 and 999. public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds); /// When microseconds is not between 0 and 999. public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds, System.DateTimeKind kind); /// When microseconds is not between 0 and 999. public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds, System.Globalization.Calendar calendar); /// The microseconds component, expressed as a value between 0 and 999. public int Microsecond { get; } /// The nanoseconds component, expressed as a value between 0 and 900. public int Nanosecond { get; } /// The resulting DateTime is less than DateTime.MinValue or greater than DateTime.MaxValue. public DateTime AddMicroseconds(int microseconds); } public struct DateTimeOffset { /// When microseconds is not between 0 and 999. public DateTimeOffset(int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds, System.TimeSpan offset); /// When microseconds is not between 0 and 999. public DateTimeOffset(int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds, System.TimeSpan offset, System.Globalization.Calendar calendar); /// The microseconds component, expressed as a value between 0 and 999. public int Microsecond { get; } /// The nanoseconds component, expressed as a value between 0 and 900. public int Nanosecond { get; } /// The resulting DateTimeOffset is less than DateTimeOffset.MinValue or greater than DateTimeOffset.MaxValue. public DateTimeOffset AddMicroseconds(int microseconds); } public struct TimeSpan { public const long TicksPerMicrosecond = 10L; public const double TicksPerNanosecond = 0.01D; /// When microseconds is not between 0 and 999. public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds, int microseconds); /// The microseconds component, expressed as a value between 0 and 999. public int Microseconds { get; } /// The nanoseconds component, expressed as a value between 0 and 900. public int Nanoseconds { get; } /// The total number of microseconds represented by this instance. public double TotalMicroseconds { get; } /// The total number of nanoseconds represented by this instance. /// When value starts to approach TimeSpan.MinValue or TimeSpan.MaxValue. public double TotalNanoseconds { get; } /// When value is less than TimeSpan.MinValue or greater than TimeSpan.MaxValue. public static TimeSpan FromMicroseconds(double value); } } ``` # Example Usage ```csharp public class Samples { public void DateTimeSamples() { new DateTime(0001, 01, 01, 00, 00, 00, 00, 999).Ticks; // 9990 DateTime.Parse(""0001-01-01 00:00:00.0009990"").Microsecond; // 999 DateTime.Parse(""0001-01-01 00:00:00.0000009"").Nanosecond; // 900 DateTime.Zero.AddMicroseconds(999).Ticks; // 9990 } public void DateTimeOffsetSamples() { new DateTimeOffset(0001, 01, 01, 00, 00, 00, 00, 999, TimeSpan.FromHours(-7)).Ticks; // 9990 DateTimeOffset.Parse(""0001-01-01 00:00:00.0009990 -7"").Microsecond; // 999 DateTimeOffset.Parse(""0001-01-01 00:00:00.0000009 -7"").Nanosecond; // 900 new DateTimeOffset().AddMicroseconds(999).Ticks; // 9990 } public void TimeSpanSamples() { new TimeSpan(999 * TimeSpan.TicksPerMicrosecond).Ticks; // 9990 new TimeSpan((long)(900 * TimeSpan.TicksPerNanosecond)).Ticks; // 9 new TimeSpan(0001, 01, 01, 00, 00, 00, 00, 999).Ticks; // 9990 TimeSpan.Parse(""0001-01-01 00:00:00.0009990"").Microsecond; // 999 TimeSpan.Parse(""0001-01-01 00:00:00.0000009"").Nanosecond; // 900 TimeSpan.Zero.AddMicroseconds(999).Ticks; // 9990 } } ``` ## Notes - `TimeSpan.TotalMicroseconds` and `TimeSpan.TotalNanoseconds` return double still since that is what the other `Total` properties return. This could be long but I kept it as double for consistency. - `TimeSpan.FromMicroseconds` takes a double to keep the API consistent with the other `From` methods." +24557 area-System.Net HttpClient does not follow 302 redirects "Run the following console application in .NET Core 2.0 and in .NET Full Framework. ```c# class Program { static void Main(string[] args) { MainAsync().Wait(); } static async Task MainAsync() { var httpClient = new HttpClient(); var response = await httpClient.GetAsync( ""https://icons.better-idea.org/icon?url=kayak.com&size=16..24..32""); Console.WriteLine(response.StatusCode); Console.ReadLine(); } } ``` - In .NET Full Framework, this writes `OK` (200). - In .NET Core 2.0 this writes `Redirect` (302). I cannot get .NET Core 2.0 to follow the 302 redirect even if I explicitly do: ```c# var httpClient = new HttpClient(new HttpClientHandler { AllowAutoRedirect = true, MaxAutomaticRedirections = 20 }); ``` I always get `Redirect` (302)." +24558 area-Infrastructure Enable Conditional Publish Behaviors for Azure and MyGet storage "**Note: As we are trying very hard to not break the release builds this week I have marked with * NO MERGE ***, this is just showing how it would be done and make it possible to get rid of extra branches which exist just to do this. Introduces two new build definition variables, PublishToBlobStorage and PublishToMyGet, and makes various steps that do these sorts of publishes conditional on them. See [the VSTS docs](https://docs.microsoft.com/en-us/vsts/build-release/concepts/process/conditions#examples) on Conditional Task Expressions for more info on this. In addition to these changes merging, we'd also need to do the following: - add ""-b 3.2"" to update the API Version used to talk to the VSTS API when hydrating build definitions. - Add PublishToBlobStorage and PublishToMyGet variables to the Pipebuild defintion used to kick off the build. " +24559 area-System.Globalization Is not possible to create custom cultures in .Net Core @carcarbe commented on [Tue Oct 10 2017](https://github.com/dotnet/core/issues/1020) Is not possible to create custom cultures in .Net Core In .Net framework is possible to create custom cultures, e.g en-US-NY (English from New York). using CultureAndRegionInfoBuilder class as is describe in this example http://www.c-sharpcorner.com/UploadFile/GemingLeader/creatingextending-a-culture/ . Are there any plans to implement this in .Net Core? In the project were I am working at the moment we need this to be able to create different localizations for different dialects of the same language. +24562 area-System.Net Disposing Socket then rebinding fails with SocketError.AddressAlreadyInUse on Unix ".NET Core 2.0.0 runtime macOS 10.12.6 Seirra and Ubuntu 16.04.2 LTS (Xenial Xerus) ```C# using System; using System.Net; using System.Net.Sockets; namespace SocketRebind { class Program { static void Main(string[] args) { for (var i = 0;; i++) { Console.WriteLine(""Iteration #{0}"", i); var serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(IPAddress.Loopback, 5000)); serverSocket.Listen(512); var clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.Connect(IPAddress.Loopback, 5000); var acceptSocket = serverSocket.Accept(); acceptSocket.Dispose(); clientSocket.Dispose(); serverSocket.Dispose(); } } } } ``` #### Expected behavior: Program should iterate indefinitely. This is what happens on Windows. #### Actual behavior: After the first iteration, Socket.Bind throws ""SocketException: Address already in use"" #### Output (identical on macOS and Ubuntu): ``` $ dotnet run Iteration #0 Iteration #1 Unhandled Exception: System.Net.Sockets.SocketException: Address already in use at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at SocketRebind.Program.Main(String[] args) in /Users/shalter/source/halter73/SocketRebind/Program.cs:line 16 $ $ $ dotnet run Iteration #0 Unhandled Exception: System.Net.Sockets.SocketException: Address already in use at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at SocketRebind.Program.Main(String[] args) in /Users/shalter/source/halter73/SocketRebind/Program.cs:line 16 ```" +24563 area-System.Collections ImmutableDictionary.CreateBuilder(IEqualityComparer) allocates unneeded enumerator We have code that does this: ``` C# ImmutableDictionary.CreateBuilder(StringComparer.OrdinalIgnoreCase); ``` This allocates an unnecessary boxed `ImmutableDictionary.Enumerator`. This produces 0.2% of all allocations in some scenarios in MSbuild: ![image](https://user-images.githubusercontent.com/1103906/31417602-4fc623bc-ae7c-11e7-8183-6bad76ccf647.png) +24564 area-System.Memory Add explicit conversion APIs for Span to ROSpan and Memory to ROMemory ## Rationale From https://github.com/dotnet/corefx/issues/23862#issuecomment-328097809 ```C# public static implicit operator ReadOnlyMemory(Memory memory); public static implicit operator ReadOnlySpan (Span span); ``` This is the only way to convert from `Span` to `ReadOnlySpan and `Memory` to `ReadOnlyMemory`. [Framework Design Guildelines say](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/operator-overloads): > ✓ CONSIDER providing methods with friendly names that correspond to each overloaded operator. Specifically, F# does not support implicit operators, but allows calling them as `op_Implicit`. The only way to convert from `Memory` to `ReadOnlyMemory` in F# would be the following? ```F# let memoryToReadOnlyMemory (memory : Memory<'a>) : ReadOnlyMemory<'a> = Memory<'a>.op_Implicit memory ``` ## Proposed API Therefore, add these explicit conversion APIs to `Span` and `Memory`: ```C# public static ReadOnlyMemory AsReadOnlyMemory(this Memory memory); public static ReadOnlySpan AsReadOnlySpan(this Span span); ``` cc @svick, @KrzysztofCwalina, @jkotas, @terrajobst +24565 area-System.Collections Avoid generic interface GetEnumerator empty allocations in immutable collections Fixes https://github.com/dotnet/corefx/issues/24563 cc: @davkean, @AArnott +24566 area-System.Net "System.Net.Sockets.Tests.IPPacketInformationTest.Equals_NonDefaultValue_Success failed with ""Xunit.Sdk.TrueException""" System.Net.Sockets.Tests.IPPacketInformationTest.Equals_NonDefaultValue_Success [FAIL] 18:26:35 Assert.True() Failure 18:26:35 Expected: True 18:26:35 Actual: False 18:26:35 Stack Trace: 18:26:35 downloaded dumpling.py 18:26:35 total elapsed time 0:00:00.156276 18:26:35 downloaded dumpling.py 18:26:35 total elapsed time 0:00:00.155070 18:26:35 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/System.Net.Sockets/tests/FunctionalTests/IPPacketInformationTest.cs(76,0): at System.Net.Sockets.Tests.IPPacketInformationTest.GetNonDefaultIPPacketInformation() 18:26:35 /Users/dotnet-bot/j/workspace/dotnet_corefx/master/osx10.12_release/src/System.Net.Sockets/tests/FunctionalTests/IPPacketInformationTest.cs(32,0): at System.Net.Sockets.Tests.IPPacketInformationTest.Equals_NonDefaultValue_Success() Configuration: osx10.12_release Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release/3312/ Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/osx10.12_release/3312/consoleFull#-14347295752d31e50d-1517-49fc-92b3-2ca637122019 +24567 area-System.IO Strange behavior of Directory.CreateDirectory "I found strange behaviors in `Directory.CreateDirectory` in my .net core2.0 app. My test code looks like: ```c# var length255 = new string(Enumerable.Repeat('a', byte.MaxValue).ToArray()); var lastLength = 225; var last = new string(Enumerable.Repeat('a', lastLength).ToArray()); var path = Path.Combine(@""D:\"", Path.Combine(Enumerable.Repeat(length255, 127).ToArray()), last); try { Console.WriteLine(path.Length); Directory.CreateDirectory(path); } catch (Exception e) { Console.WriteLine(e.GetType()); Console.WriteLine(Directory.Exists(path)); } ``` I change the value of `lastLength` a few times, here is the question: Q1: `lastLength = 224, path.Length = 32739` everything is working fine. What's the magic of 32739? Q2: `225 <= lastLength <= 247, 32740 <= path.Length <= 32762` throws `System.IO.PathTooLongException`, meanwhile `Directory.Exists` prints `False`. However I can see the first few level directories are created(not all directories), which means the creation is partially done with an exception. Why? Q3: `248 <= lastLength <= 251, 32763 <= path.Length <= 32766` cases are almost the same as those in Q2, except the exception is `System.IO.DirectoryNotFoundException`, why? `lastLength > = 252, path.Length >= 32767` fails with `System.IO.PathTooLongException`, no directory is created, which is as expected. [EDIT] Add C# syntax highlight by @karelz" +24568 area-System.Memory Add Base64 conversion APIs that support UTF-8 for Span "## Updated API Proposal Details https://github.com/dotnet/corefx/issues/24568#issuecomment-338833370 ```C# // System.Memory.dll namespace System.Buffers.Text { public static class Base64 { public static OperationStatus EncodeToUtf8(ReadOnlySpan bytes, Span utf8, out int consumed, out int written, bool isFinalBlock = true); public static OperationStatus EncodeToUtf8InPlace(Span buffer, int dataLength, out int written); public static int GetMaxEncodedToUtf8Length(int length); public static OperationStatus DecodeFromUtf8(ReadOnlySpan utf8, Span bytes, out int consumed, out int written, bool isFinalBlock = true); public static OperationStatus DecodeFromUtf8InPlace(Span buffer, int dataLength, out int written); public static int GetMaxDecodedFromUtf8Length(int length); } } ```
Details and Usage from previously proposed API ## Rationale These API allow for encoding of a Span\ into UTF-8 Base64 encoded span (binary to text operation) and decoding of a UTF-8 Base64 encoded span to Span\ (text to binary operation). They will be used by SignalR (for example [here](https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Core/Infrastructure/DefaultProtectedData.cs#L22), [here](https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Core/Infrastructure/DataProtectionProviderProtectedData.cs#L40), and [here](https://github.com/aspnet/SignalR/blob/dev/src/Microsoft.AspNetCore.SignalR.Common/Internal/Encoders/Base64Encoder.cs)). A prototype of the API is available in corefxlab: https://github.com/dotnet/corefxlab/tree/master/src/System.Binary.Base64 Part of https://github.com/dotnet/corefx/issues/24174 Previous review: https://github.com/dotnet/apireviews/tree/master/2017/06-16-System.Text.Buffers ## Usage For valid input data: ```C# Span input; // input buffer to be encoded containing binary data Span encodedBytes = new byte[Base64.BytesToUtf8Length(input.Length)]; OperationStatus status = Base64.BytesToUtf8(input, encodedBytes, out int consumed, out int encodedBytesCount); // status == OperationStatus.Done // encodedBytes.Length == encodedBytesCount // consumed == input.Length ``` ```C# Span input; // input buffer to be decoded containing textual data Span decodedBytes = new byte[Base64.Utf8ToBytesLength(input.Length)]; OperationStatus status = Base64.Utf8ToBytes(input, decodedBytes, out int consumed, out int decodedByteCount); // status == OperationStatus.Done // decodedBytes.Length >= decodedByteCount // consumed == input.Length ``` Using these new APIs, we can take the following code snippet (from [here](https://github.com/aspnet/SignalR/blob/dev/src/Microsoft.AspNetCore.SignalR.Common/Internal/Encoders/Base64Encoder.cs)): ```C# public byte[] Decode(byte[] payload) { var buffer = new ReadOnlyBuffer(payload); LengthPrefixedTextMessageParser.TryParseMessage(ref buffer, out var message); return Convert.FromBase64String(Encoding.UTF8.GetString(message.ToArray())); } ``` And re-write it as follows (if we want to keep the input/output as byte arrays): ```C# public byte[] Decode(byte[] payload) { var buffer = new ReadOnlyBuffer(payload); LengthPrefixedTextMessageParser.TryParseMessage(ref buffer, out var message); // assume message.Span is UTF-8 encoded (for instance, using the upcoming UTF8 encoder APIs) Span bytes = new byte[Utf8ToBytesLength(message.Span.Length)]; Base64.Utf8ToBytes(message.Span, bytes, out int consumed, out int written); return bytes.Slice(0, written).ToArray(); } ``` For potentially invalid (or incomplete) input, the user can check the returned status. For example, change the above code as follows: ```C# Span bytes = new byte[Utf8ToBytesLength(message.Span.Length)]; OperationStatus status = Base64.Utf8ToBytes(message.Span, bytes, out int consumed, out int written); return status == OperationStatus.Done ? bytes.Slice(0, written).ToArray() : ; } ``` ## Proposed API ```C# // System.Memory.dll namespace System.Buffers.Text { public static class Base64 { public static OperationStatus BytesToUtf8(ReadOnlySpan bytes, Span utf8, out int consumed, out int written, bool isFinalBlock = true); public static OperationStatus BytesToUtf8InPlace(Span buffer, int bytesLength, out int written, bool isFinalBlock = true); public static int BytesToUtf8Length(int bytesLength); // public static int BytesToUtf8Length(ReadOnlySpan utf8, bool isFinalBlock); public static OperationStatus Utf8ToBytes(ReadOnlySpan utf8, Span bytes, out int consumed, out int written, bool isFinalBlock = true); public static OperationStatus Utf8ToBytesInPlace(Span buffer, out int consumed, out int written, bool isFinalBlock = true); public static int Utf8ToBytesLength(int utf8Length); // public static int Utf8ToBytesLength(ReadOnlySpan utf8, bool isFinalBlock); } } ``` **Note:** OperationStatus is the same as TransformationStatus (https://github.com/dotnet/corefx/issues/22412). ## Open Questions ### 1 For computing length, another approach could be to add the following overloads, which give the ""actual"", precise length: ```C# public static int BytesToUtf8Length(ReadOnlySpan utf8, bool isFinalBlock); public static int Utf8ToBytesLength(ReadOnlySpan utf8, bool isFinalBlock); ``` The behavior of the currently proposed APIs is similar to the ones listed above for when isFinalBlock is true. For example: ```C# // input = ABC DEF G BytesToUtf8Length(input, false); // returns 8 BytesToUtf8Length(input, true); // returns 12 == BytesToUtf8Length(input.Length) ``` ### 2 To extend the functionality of the currently proposed APIs to include new line support (for example, for the MIME variant of Base64), we could add the following overloads that take a ParsedFormat parameter: ```C# public static OperationStatus BytesToUtf8(ReadOnlySpan bytes, Span utf8, out int consumed, out int written, ParsedFormat format, bool isFinalBlock = true); public static OperationStatus BytesToUtf8InPlace(Span buffer, int bytesLength, out int written, ParsedFormat format, bool isFinalBlock = true); public static OperationStatus Utf8ToBytes(ReadOnlySpan utf8, Span bytes, out int consumed, out int written, ParsedFormat format, bool isFinalBlock = true); public static OperationStatus Utf8ToBytesInPlace(Span buffer, out int consumed, out int written, ParsedFormat format, bool isFinalBlock = true); public static int BytesToUtf8Length(int bytesLength, ParsedFormat format); public static int Utf8ToBytesLength(int utf8Length, ParsedFormat format); ``` Which creates a dependency on ParsedFormat (https://github.com/dotnet/corefx/issues/24607) The usage would then look like: ```C# ParsedFormat format = new ParsedFormat('N', 76); int requiredSize = Base64.BytesToUtf8Length(source.Length, format); Span encodedBytes = new byte[outputSize]; Base64.BytesToUtf8(source, encodedBytes, out int consumed, out int written, format); ``` ### 3 Should we rename `Utf8ToBytesLength(int utf8Length)` to `Utf8ToBytesMaxLength` to indicate it isn't the precise length (but rather could be a few bytes larger)? Same with `BytesToUtf8Length(int bytesLength)`?
cc @KrzysztofCwalina, @GrabYourPitchforks, @davidfowl, @terrajobst, @karelz " +24574 area-System.Net How to default to WinHTTP proxy not the WinINet for a .Net core app _From @rohitshrivastava04 on October 11, 2017 10:50_ # Issue Title How to set proxy settings for a .Net Core application # General We have a .Net Core Windows Service which makes few calls to AWS or other internet services. For this, it needs to use proxy settings. There are two options either we configure each call to use proxy server or set proxy setting machine wide. Setting WinHTTP proxy configuration is easier than WinINet. However .net core process uses wininet as default proxy policy. How can I set it to default to WinHTTP than WinINet for the whole app rather than changing in each WinHttpHandler? _Copied from original issue: dotnet/core#1023_ +24575 area-System.Numerics Make BigInteger BigEndian-friendly The current state of BigInteger accepts a `byte[]` (and now a `ReadOnlySpan`) as a little-endian signed value, and the writer APIs (`ToByteArray()` and `TryWriteBytes`) only emit as a signed little-endian value. Various wire protocols may dictate either of 1) an unsigned value in transmission or 2) big-endian transmission. Both of these protocol choices result in the application/library needing to understand the translation of protocol bytes to BigInteger bytes, at a cost to performance and risk to reliability. ## Proposal ```C# partial class BigInteger { // Augment existing public BigInteger( ReadOnlySpan value, bool isBigEndian=false, bool isUnsigned=false) => throw null; // Augment existing public bool TryWriteBytes( System.Span destination, out int bytesWritten, bool isBigEndian=false, bool isUnsigned=false) => throw null; // New overload. public byte[] ToByteArray(bool isBigEndian=false, bool isUnsigned=false) => throw null; } ``` Since the span-based APIs have not yet released, I propose that they be augmented with the default-value-parameters. For `ToByteArray` an overload will have to be added, but the existing method can just forward to `ToByteArray(false, false)`. A byte[]-based ctor overload may also be warranted if Span and BigInteger may have different velocities to .NET Framework (or the implicit cast causes too much cognitive overload). ## Behavior Given `byte[] data = { 0xFE, 0x80 };` * `new BigInteger(data, isBigEndian: false, isUnsigned: false)` => `(short)0x80FE` => `-32514` * `new BigInteger(data, isBigEndian: true, isUnsigned: false)` => `(short)0xFE80` => `-384` * `new BigInteger(data, isBigEndian: false, isUnsigned: true)` => `(int)0x000080FE` => `33022` * `new BigInteger(data, isBigEndian: true, isUnsigned: true)` => `(int)0x0000FE80` => `65152` When the most significant byte of the input data does not have the most significant bit set the `isUnsigned` value has no meaning. Emitting values (reminder, parameter order is `isBigEndian, isUnsigned`; `isBigEndian` label removed to prevent bulleted list from gaining line-wraps) * `new BigInteger(-32514).ToByteArray(false, isUnsigned: false)` => ` {0xFE, 0x80 }` * `new BigInteger(-32514).ToByteArray(true, isUnsigned: false)` => `{ 0x80, 0xFE }` * `new BigInteger(-32514).ToByteArray(false, isUnsigned: true)` => exception * `new BigInteger(-32514).ToByteArray(true, isUnsigned: true)` => exception * `new BigInteger(33022).ToByteArray(false, isUnsigned: false)` => `{ 0xFE, 0x80, 0x00 }` * `new BigInteger(33022).ToByteArray(true, isUnsigned: false)` => `{ 0x00, 0x80, 0xFE }` * `new BigInteger(33022).ToByteArray(false, isUnsigned: true)` => `{ 0xFE, 0x80 }` * `new BigInteger(33022).ToByteArray(true, isUnsigned: true)` => `{ 0x80, 0xFE }` +24576 area-Infrastructure Update CentOS 6 docker image This update fixes problem with git not supporting https protocol +24577 area-System.Net Change System.Net.Http to throw exception for HTTPS -> HTTP redirects Currently, .NET Core will ignore automatic HTTPS -> HTTP redirects in HttpClientHandler. This is already a different behavior from .NET Framework (which allows automatic HTTPS -> HTTP redirects). .NET Core is different from .NET Framework in this manner in order to provide a more secure behavior pattern. However, currently .NET Core simply ignores the HTTPS -> HTTP redirect. It leaves the final response with the 3xx response. This has caused a lot of developer confusion when troubleshooting issues. This issue is now tracking to make a behavior change to .NET Core. Instead of ignoring HTTPS -> HTTP redirects, it will instead throw an HttpRequestException with a suitable inner exception and error message. +24579 area-System.Diagnostics Port System.Diagnostics.PerformanceCounters to .NET Core This change adds System.Diagnostics.PerformanceCounters to .NET Core. It also adds two tests for the library. +24580 area-System.Net HttpClient status code - different behavior (Windows / CENT OS) DotNet version - 1.0.1 OS - CENT OS URL - http://www.switchboard.com ![image](https://user-images.githubusercontent.com/554039/31459668-d775c758-ae91-11e7-9159-34737c344cd2.png) DotNet version - 1.0.1 OS - Windows 10 OS URL - http://www.switchboard.com ![image](https://user-images.githubusercontent.com/554039/31459224-8a20d728-ae90-11e7-95d1-85bc99f72b8f.png) Basically the app does return a status code and redirected URL. In windows it work as expected (return MovedPermanently with redirected URL). However, In linux the HttpClient library return different status code (MethodNotAllowed) and does not return any redirected URL. Also, tried to verify the same URL in a [third party app ](http://redirectdetective.com/)which work same as Windows version. ![image](https://user-images.githubusercontent.com/554039/31460192-8d58db86-ae93-11e7-82a2-feecb704f275.png) Any help would be appreciated. +24582 area-System.Data Extremely slow queries when when running on Linux with SQL 2017 on the same machine "Moved from https://github.com/aspnet/EntityFrameworkCore/issues/10043 submitted by @sdb-dev I am experiencing 5-10x slower queries on a fresh dedicated server with Ubuntu 16.04 and SQL Server 2017. This issue is ONLY happening when the SQL Server and the .NET Core application is running on the same linux machine (Ubuntu). I created a simple application which does a .ToList() on 2 tables (one with 500 records, another with 10,000) Running the .NET Core application on my local computers, connecting to the SQL Server remotely, I get the following results: ``` Loaded (Table 1) 500 in 851.00 ms Reloading context. Loaded (Table 1) 500 in 95.00 ms Loaded (Table 2) 10000 in 262.00 ms` ``` Running the same .NET Core application on the remote machine with SQL Server on it (localhost) ``` Loaded (Table 1) 500 in 2,362.00 ms Reloading context. Loaded (Table 1) 500 in 1,524.00 ms Loaded (Table 2) 10000 in 42,976.00 ms ```` If I run the same .NET Core application on the machine which experiences the slow-down with another remote server, it runs perfectly fine - it seems to only occur when both SQL and the .NET app are on the same machine. For whatever reason, there seems to be a huge send queue from SQL to my application, which leads me to believe EF Core may be very slow materializing the data from sql - SQL sends the data perfectly fine. For reference, here is the testing code: ```Console.WriteLine(""Starting...""); var sw = new Stopwatch(); sw.Start(); var db = new MyDbContext(""connString""); var attrs = db.TableOne.ToList(); sw.Stop(); Console.WriteLine($""Loaded (Table 1) {attrs.Count} in {sw.ElapsedMilliseconds:N2} ms""); Console.WriteLine(""Reloading context.""); db.Dispose(); sw.Reset(); sw.Start(); db = new MyDbContext(""connString""); attrs = db.TableOne.ToList(); Console.WriteLine($""Loaded (Table 1) {attrs.Count} in {sw.ElapsedMilliseconds:N2} ms""); sw.Stop(); sw.Reset(); sw.Start(); var items = db.TableTwo.ToList(); Console.WriteLine($""Loaded (Table 2) {items.Count} in {sw.ElapsedMilliseconds:N2} ms""); sw.Stop(); Console.WriteLine(""Press any key to continue.""); Console.Read();``` " +24583 area-Serialization Fix the sgen generated code error for a type with mismatched attribute and property. Fix #19726 @shmao @zhenlan @mconnew +24584 area-Infrastructure Enable publishing to azure feed This is the initial set of changes to move release/2.0.0 to blob storage feed. /cc @weshaggard @MattGal +24585 area-System.Linq Perf optimization for FirstOrDefault of List Extension method FirstOrDefault that takes predicate as parameter could use native List implementation by calling method Find of an object instance. So, I propose to add the code below to Enumerable.FirstOrDefault(predicate): ``` List simpleList = source as List; if(simpleList != null) return simpleList.Find(item => predicate(item)); ``` +24586 area-System.Data System.Data.Sqlient isn't supported on this platform error in Update-Database "@deanilvincent commented on [Tue Oct 10 2017](https://github.com/dotnet/core/issues/1018) # Title: System.Data.Sqlient isn't supported on this platform error # General **Environment specifications:** Visual Studio 2017 15.3 Installed 2.0 .Net Core I'm trying to use the command ""update-database -context NameOfMyContext"" but somehow I got this error message that says ""System.Data.Sqlient isn't supported on this platform error"" Here's my connection string ` services.AddDbContext(options => options.UseSqlServer(@""data source=ipaddress;initial catalog=testingdbcore;user id=username;password=password;integrated security=false;""));` To add up, I successfully added a migration and everything is working fine but then suddenly when I trigger the command for updating my database, I got this issues. Thank you in advance! ![bugerrorcore](https://user-images.githubusercontent.com/10904957/31386641-11c0dfc6-adfa-11e7-944d-7518e8404183.PNG) --- @Petermarcu commented on [Tue Oct 10 2017](https://github.com/dotnet/core/issues/1018#issuecomment-335690327) @divega would this be an issue that should be in the EF repo or @saurabh500 should this issue go to corefx? --- @saurabh500 commented on [Wed Oct 11 2017](https://github.com/dotnet/core/issues/1018#issuecomment-335743403) It should go to Corefx --- @deanilvincent commented on [Wed Oct 11 2017](https://github.com/dotnet/core/issues/1018#issuecomment-335792089) What should I do now guys? Is there any option? --- @saurabh500 commented on [Wed Oct 11 2017](https://github.com/dotnet/core/issues/1018#issuecomment-335888411) What is your OS that you are running the above steps on @deanilvincent ? --- @saurabh500 commented on [Wed Oct 11 2017](https://github.com/dotnet/core/issues/1018#issuecomment-335889026) @deanilvincent From the screen shot it is Windows. " +24588 area-System.Net SSLStream Allow Configuration of CipherSuites "# Rationale Today you can only configure the available CipherSuites (if at all) on a Machine Wide (maybe process maybe not) Level. This is problematic let me give you a basic example I have a webservice, it needs to connect to an internal ""Legacy"" service so I have to support some old or slow (DHE at large key sizes for instance) set of ciphers. But this means now my webserver has to support clients connecting to it with the same bad crypto. # Solution Add a method to the SslStream Options bag that is a ""list"" of supported ciphers. Existing behaviour (System wide settings) would be used if the Cipher Suite List is unsupported. Also add a few ""sets"" of industry standard suites to allow users to ""fall into the pit of success"". API (With some ideas from @PeterSmithRedmond) ``` csharp public class SslServerAuthenticationOptions { public ReadOnlyCollection {get;set;} } public class SslClientAuthenticationOptions { public ReadOnlyCollection {get;set;} } public struct CipherSuite { public CipherSuite(string cipherSuiteName); public static ReadOnlyCollection FipsCipherSuite2017 {get;} public static ReadOnlyCollection MozillaModernCipherSuite {get;} public static ReadOnlyCollection MozillaIntermediateCipherSuite {get;} public static ReadOnlyCollection MozillaOldCipherSuite {get;} public static ReadOnlyColleciton OSStrongCipherSuite {get;} } ``` The last one I am not 100% on. The ""defaults"" will help people select the right choice. # Refs #24389 This depends on the OptionBag in this issue #21577 This feature wanted on the HttpClient/Handler which this would facilitate #15157 A previous request " +24591 area-System.Threading Add bit manipulation methods to Interlocked class The methods on the `Interlocked` class currently only allow arithmetic operations (addition, subtraction) and exchange operations. These are sufficient for normal arithmetic needs but are somewhat difficult to use by callers who need to perform interlocked manipulation of fields that are intended to be bitwise flags. As an example, consider ASP.NET's internal `CancellationTokenHelper` class, which uses several calls to `Interlocked.CompareExchange` within a `switch` statement in order to mimic performing flag manipulation of a field. (http://referencesource.microsoft.com/#System.Web/Util/CancellationTokenHelper.cs,71) Or consider how `System.Threading.Task` uses `Interlocked.CompareExchange` in a loop to mimic the `InterlockedAnd` operation. (http://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Task.cs,865) While it's possible for callers to implement interlocked bitwise operations in terms of interlocked arithmetic operations, it's a bit difficult to get right, and the framework should make this easier for the power developers who need it. ## Proposed API additions ```csharp namespace System.Threading { public static class Interlocked { public static int And(ref int location1, int value); public static long And(ref long location1, long value); public static int Or(ref int location1, int value); public static long Or(ref long location1, long value); public static int Xor(ref int location1, int value); public static long Xor(ref long location1, long value); } } ``` ## Behavior Like their arithmetic counterparts, these APIs perform the operation atomically and return the _original_ value to the caller. At the IL level, these APIs can be implemented in terms of the existing APIs on the `Interlocked` class. Ideally the JITter could special-case when the caller discards the return value without inspection, and this would turn in to a `lock and` or similar instruction instead of a standard `lock cmpxchg`. The proposed APIs should have the same memory fence semantics that the arithmetic operations have today. (I believe it's a full fence?) ## Samples The `System.Threading.Task` code from earlier, as it exists today: ```csharp // Atomically clear the END_AWAIT_NOTIFICATION bit SpinWait sw = new SpinWait(); while (true) { int oldFlags = m_stateFlags; int newFlags = oldFlags & (~TASK_STATE_WAIT_COMPLETION_NOTIFICATION); if (Interlocked.CompareExchange(ref m_stateFlags, newFlags, oldFlags) == oldFlags) break; sw.SpinOnce(); } ``` Could be written as such with the new primitives (n.b. caller doesn't care about return value, so JIT optimization described earlier could kick in): ```csharp // Atomically clear the END_AWAIT_NOTIFICATION bit Interlocked.And(ref m_stateFlags, ~TASK_STATE_WAIT_COMPLETION_NOTIFICATION); ``` +24594 area-System.IO NamedPipeClientStream depends on WaitNamedPipe, which is not supported in Windows Containers `NamedPipeClientStream.TryConnect` calls into native `WaitNamedPipe` first to make sure the pipe is available and only then into native `CreateNamedPipeClient`. The problem is that currently `WaitNamedPipe` is not supported from inside of Windows Containers (however `CreateNamedPipeClient` works ok). It fails with `ERROR_FILE_NOT_FOUND`. As such, managed code using `NamedPipeClientStream` is broken in Windows Containers due to the ordering of the calls. This includes Docker.Dotnet library and projects depending on it. Since both these calls happen in a loop which is making sure that the given timeout is not exceeded, we could swap them and call `WaitNamedPipe` only if `CreateNamedPipeClient` fails in a predicable manner first. diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index d282019898..35a01a04ef 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -11,6 +11,7 @@ + @@ -60,11 +61,19 @@ + + + + PreserveNewest + + + + diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs b/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs index d44f191fde..dae8da119c 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs @@ -657,7 +657,7 @@ private void CrossValidationOn(string dataPath) // Train the model. var model = pipeline.Fit(split.TrainSet); // Compute quality metrics on the test set. - var metrics = mlContext.MulticlassClassification.Evaluate(model.Transform(split.TestSet)); + var metrics = mlContext.MulticlassClassification.Evaluate(model.Transform(split.TestSet, TransformerScope.Everything)); Console.WriteLine(metrics.MicroAccuracy); // Now run the 5-fold cross-validation experiment, using the same pipeline. diff --git a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs index fdef9d0513..47a503a247 100644 --- a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs @@ -86,7 +86,7 @@ public void TrainAndPredictIrisModelWithStringLabelTest() Assert.True(prediction.PredictedPlant == "Iris-versicolor"); // Evaluate the trained pipeline - var predicted = trainedModel.Transform(testData); + var predicted = trainedModel.Transform(testData, TransformerScope.Everything); var metrics = mlContext.MulticlassClassification.Evaluate(predicted, topKPredictionCount: 3); Assert.Equal(.98, metrics.MacroAccuracy); diff --git a/test/Microsoft.ML.Tests/TextClassificationTests.cs b/test/Microsoft.ML.Tests/TextClassificationTests.cs index 866ebb3baa..74c90d59a1 100644 --- a/test/Microsoft.ML.Tests/TextClassificationTests.cs +++ b/test/Microsoft.ML.Tests/TextClassificationTests.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Microsoft.Data.Analysis; using Microsoft.ML.Data; using Microsoft.ML.RunTests; using Microsoft.ML.Runtime; @@ -29,6 +30,11 @@ private class TestSingleSentenceData public string Sentiment; } + private class TestSingleSentenceDataNoLabel + { + public string Sentence1; + } + private class TestDoubleSentenceData { public string Sentence; @@ -82,11 +88,11 @@ public void TestSingleSentence2Classes() Sentiment = "Negative" } })); - var estimator = ML.Transforms.Conversion.MapValueToKey("Label", "Sentiment") + var chain = new EstimatorChain(); + var estimator = chain.Append(ML.Transforms.Conversion.MapValueToKey("Label", "Sentiment"), TransformerScope.TrainTest) .Append(ML.MulticlassClassification.Trainers.TextClassification(outputColumnName: "outputColumn")) .Append(ML.Transforms.Conversion.MapKeyToValue("outputColumn")); - TestEstimatorCore(estimator, dataView); var estimatorSchema = estimator.GetOutputSchema(SchemaShape.Create(dataView.Schema)); Assert.Equal(5, estimatorSchema.Count); @@ -96,20 +102,79 @@ public void TestSingleSentence2Classes() var transformer = estimator.Fit(dataView); var transformerSchema = transformer.GetOutputSchema(dataView.Schema); - Assert.Equal(6, transformerSchema.Count); - Assert.Equal("outputColumn", transformerSchema[4].Name); - Assert.Equal(TextDataViewType.Instance, transformerSchema[4].Type); + var filteredModel = transformer.GetModelFor(TransformerScope.Scoring); + + Assert.Equal(5, transformerSchema.Count); + Assert.Equal("outputColumn", transformerSchema[3].Name); + Assert.Equal(TextDataViewType.Instance, transformerSchema[3].Type); + + var dataNoLabel = ML.Data.LoadFromEnumerable( + new List(new TestSingleSentenceDataNoLabel[] { + new () + { // Testing longer than 512 words. + Sentence1 = "ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community . ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community . ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community . ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .ultimately feels as flat as the scruffy sands of its titular community .", + }, + new () + { + Sentence1 = "with a sharp script and strong performances", + }, + new () + { + Sentence1 = "that director m. night shyamalan can weave an eerie spell and", + }, + new () + { + Sentence1 = "comfortable", + }, + new () + { + Sentence1 = "does have its charms .", + }, + new () + { + Sentence1 = "banal as the telling", + }, + new () + { + Sentence1 = "faithful without being forceful , sad without being shrill , `` a walk to remember '' succeeds through sincerity .", + }, + new () + { + Sentence1 = "leguizamo 's best movie work so far", + } + })); - var predictedLabel = transformer.Transform(dataView).GetColumn>(transformerSchema[4].Name); + var predictedLabel = filteredModel.Transform(dataNoLabel).GetColumn>(transformerSchema[3].Name); // Make sure that we can use the multiclass evaluate method - var metrics = ML.MulticlassClassification.Evaluate(transformer.Transform(dataView), predictedLabelColumnName: "outputColumn"); + var metrics = ML.MulticlassClassification.Evaluate(transformer.Transform(dataView, TransformerScope.Everything), predictedLabelColumnName: "outputColumn"); Assert.NotNull(metrics); - // Not enough training is done to get good results so just make sure the count is right and are negative. + // Not enough training is done to get good results so just make sure the count is right. var a = predictedLabel.ToList(); Assert.Equal(8, a.Count()); - Assert.True(predictedLabel.All(value => value.ToString() == "Negative")); + } + + // To run the TestTextClassificationWithBigDataOnGpu, set the EnableRunningGpuTest property to true and in the csproj enable the package TorchSharp-cuda-windows and disable libtorch-cpu-win-x64. + private static bool EnableRunningGpuTest => false; + + [ConditionalFact(nameof(EnableRunningGpuTest))] + public void TestTextClassificationWithBigDataOnGpu() + { + var mlContext = new MLContext(); + mlContext.GpuDeviceId = 0; + mlContext.FallbackToCpu = false; + var df = DataFrame.LoadCsv(@"Data\github-issues-train.tsv", separator: '\t', header: true, columnNames: new[] { "ID", "Label", "Title", "Description" }); + var trainTestSplit = mlContext.Data.TrainTestSplit(df, testFraction: 0.2); + var pipeline = + mlContext.Transforms.Conversion.MapValueToKey("Label") + .Append(mlContext.MulticlassClassification.Trainers.TextClassification(sentence1ColumnName: "Title", sentence2ColumnName: "Description", maxEpochs: 10, batchSize: 8)) + .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel")); + var model = pipeline.Fit(trainTestSplit.TrainSet); + var predictionIdv = model.Transform(trainTestSplit.TestSet); + var metrics = mlContext.MulticlassClassification.Evaluate(predictionIdv); + Assert.True(metrics.MacroAccuracy > .69); + Assert.True(metrics.MicroAccuracy > .70); } [Fact] diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/MetalinearEstimators.cs b/test/Microsoft.ML.Tests/TrainerEstimators/MetalinearEstimators.cs index e026ff0a9e..ba4b27d05b 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/MetalinearEstimators.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/MetalinearEstimators.cs @@ -95,7 +95,7 @@ public void MetacomponentsFeaturesRenamed() }); var pipeline = new ColumnConcatenatingEstimator(Env, "Vars", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth") - .Append(new ValueToKeyMappingEstimator(Env, "Label"), TransformerScope.TrainTest) + .Append(new ValueToKeyMappingEstimator(Env, "Label")) .Append(ML.MulticlassClassification.Trainers.OneVersusAll(sdcaTrainer)) .Append(new KeyToValueMappingEstimator(Env, "PredictedLabel")); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs index 6188b7e34b..2384545fa0 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using System.Threading.Tasks; using Microsoft.ML.Calibrators; using Microsoft.ML.Data; using Microsoft.ML.Internal.Utilities; @@ -18,6 +19,7 @@ using Microsoft.ML.Trainers.LightGbm; using Microsoft.ML.Transforms; using Xunit; +using FluentAssertions; namespace Microsoft.ML.Tests.TrainerEstimators { @@ -498,7 +500,7 @@ private void LightGbmHelper(bool useSoftmax, double sigmoid, out string modelStr { var host = (mlContext as IHostEnvironment).Register("Training LightGBM..."); - using (var gbmNative = WrappedLightGbmTraining.Train(ch, pch, gbmParams, gbmDataSet, numIteration: numberOfTrainingIterations)) + using (var gbmNative = WrappedLightGbmTraining.Train(host, ch, pch, gbmParams, gbmDataSet, numIteration: numberOfTrainingIterations)) { int nativeLength = 0; unsafe @@ -992,6 +994,28 @@ public void FastForestBinaryClassificationTestSummary() Done(); } + [Fact] + public void FastTreeMultiClassificationCancellationTest() + { + // verify that FastForest can be canceled after training start. + // we need to create a new context for cancellation. + var context = new MLContext(seed: 1); + var (pipeline, dataView) = GetMulticlassPipeline(); + var estimator = pipeline.Append(context.MulticlassClassification.Trainers.OneVersusAll(context.BinaryClassification.Trainers.FastTree())); + + context.Log += (o, e) => + { + + if (e.Source.StartsWith("FastTreeTraining")) + { + context.CancelExecution(); + } + }; + + var action = () => estimator.Fit(dataView); + action.Should().Throw(); + } + [LightGBMFact] public void LightGbmBinaryClassificationTestSummary() { @@ -1017,5 +1041,61 @@ public void LightGbmBinaryClassificationTestSummary() CheckSummary(modelParameters, trainedTreeEnsemble.Bias, trainedTreeEnsemble.TreeWeights, trainedTreeEnsemble.Trees); Done(); } + + [LightGBMFact] + public void LightGbmBinaryClassificationCancellationTest() + { + var context = new MLContext(seed: 1); + context.Log += (o, e) => + { + if (e.Message.Contains("LightGBM objective")) + { + context.CancelExecution(); + } + }; + + var (pipeline, dataView) = GetOneHotBinaryClassificationPipeline(); + + // Attention: Do not set NumberOfThreads here, left this to use default value to avoid test crash. + // Details can be found here: https://github.com/dotnet/machinelearning/pull/4918 + var trainer = pipeline.Append(context.BinaryClassification.Trainers.LightGbm( + new LightGbmBinaryTrainer.Options + { + NumberOfIterations = 1000, + NumberOfLeaves = 5, + UseCategoricalSplit = true + })); + + var action = () => trainer.Fit(dataView); + action.Should().Throw(); + } + + [LightGBMFact] + public void LightGbmMultiClassificationCancellationTest() + { + var context = new MLContext(seed: 1); + context.Log += (o, e) => + { + if (e.Message.Contains("LightGBM objective")) + { + context.CancelExecution(); + } + }; + + var (pipeline, dataView) = GetMulticlassPipeline(); + + // Attention: Do not set NumberOfThreads here, left this to use default value to avoid test crash. + // Details can be found here: https://github.com/dotnet/machinelearning/pull/4918 + var trainer = pipeline.Append(context.MulticlassClassification.Trainers.LightGbm( + new LightGbmMulticlassTrainer.Options + { + NumberOfIterations = 1000, + NumberOfLeaves = 5, + UseCategoricalSplit = true + })); + + var action = () => trainer.Fit(dataView); + action.Should().Throw(); + } } } diff --git a/test/Microsoft.ML.Tokenizers.Tests/BpeTests.cs b/test/Microsoft.ML.Tokenizers.Tests/BpeTests.cs new file mode 100644 index 0000000000..d0f1116976 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/BpeTests.cs @@ -0,0 +1,278 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.ML.Tokenizers; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.Json; +using Xunit; + +namespace Microsoft.ML.Tokenizers.Tests +{ + public class BpeTests + { + private const string UnknownToken = "[unk]"; + + public static IEnumerable BpeData + { + get + { + // vocab, merges, sentence, offsets, ids, expectedTokens, fuseUnknownToken + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 } }, + null, + "c", + new (int, int)[] { (0, 1) }, + new int[] { 0 }, + new string[] { UnknownToken }, + false, + "[unk]" + }; + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 } }, + null, + "a", + new (int, int)[] { (0, 1) }, + new int[] { 1 }, + new string[] { "a" }, + false, + "a" + }; + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 } }, + null, + "b", + new (int, int)[] { (0, 1) }, + new int[] { 2 }, + new string[] { "b" }, + false, + "b" + }; + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 } }, + null, + "abc", + new (int, int)[] { (0, 1), (1, 2), (2, 3) }, + new int[] { 1, 2, 0 }, + new string[] { "a", "b", UnknownToken }, + false, + "ab[unk]" + }; + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 } }, + null, + "a b c", + new (int, int)[] { (0, 1), (2, 3), (4, 5) }, + new int[] { 1, 2, 0 }, + new string[] { "a", "b", UnknownToken }, + false, + "ab[unk]" + }; + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 }, { "ab", 3 } }, + new (string, string)[] { ("a", "b") }, + "ab c", + new (int, int)[] { (0, 2), (3, 4) }, + new int[] { 3, 0 }, + new string[] { "ab", UnknownToken }, + false, + "ab[unk]" + }; + yield return new object?[] + { + new Dictionary() { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "ab", 4 }, { "abc", 5 } }, + new (string, string)[] { ("a", "b"), ("ab", "c") }, + "abc", + new (int, int)[] { (0, 3) }, + new int[] { 5 }, + new string[] { "abc" }, + false, + "abc" + }; + yield return new object?[] + { + new Dictionary(), + null, + "abc", + new (int, int)[] { (0, 1), (1, 2), (2, 3) }, + new int[] { 0, 0, 0 }, + new string[] { UnknownToken, UnknownToken, UnknownToken }, + false, + "[unk][unk][unk]" + }; + yield return new object?[] + { + new Dictionary(), + null, + "abc", + new (int, int)[] { (0, 3) }, + new int[] { 0 }, + new string[] { UnknownToken }, + true, + "[unk]" + }; + } + } + + [Theory] + [MemberData(nameof(BpeData))] + public void SimpleTestWithUnknownToken(Dictionary vocab, (string, string)[]? merges, string sentence, (int, int)[] offsets, int[] ids, string[] expectedTokens, bool fuseUnknownToken, string decodedTokens) + { + string vocabFile = WriteToVocabFile(vocab); + string? mergesFile = merges is null ? null : WriteToMergeFile(merges); + + try + { + Bpe bpe = new Bpe(vocabFile, mergesFile, UnknownToken); + bpe.FuseUnknownTokens = fuseUnknownToken; + + Assert.Equal(vocab.Count + 1u, bpe.GetVocabSize()); + Tokenizer tokenizer = new Tokenizer(bpe); + + TokenizerResult encoding = tokenizer.Encode(sentence); + + Assert.Equal(expectedTokens.Length, encoding.Tokens.Count); + Assert.Equal(offsets.Length, encoding.Offsets.Count); + Assert.Equal(ids.Length, encoding.Ids.Count); + Assert.Equal(decodedTokens, tokenizer.Decode(encoding.Ids)); + + for (int i = 0; i < encoding.Tokens.Count; i++) + { + Assert.Equal(expectedTokens[i], encoding.Tokens[i]); + Assert.Equal(offsets[i], encoding.Offsets[i]); + Assert.Equal(ids[i], encoding.Ids[i]); + Assert.Equal(encoding.Tokens[i], tokenizer.Model.IdToToken(encoding.Ids[i])); + Assert.Equal(encoding.Ids[i], tokenizer.Model.TokenToId(encoding.Tokens[i])); + Assert.Equal(encoding.Tokens[i], tokenizer.Decode(encoding.Ids[i])); + } + } + finally + { + Utils.DeleteFile(vocabFile); + if (mergesFile is not null) + { + Utils.DeleteFile(mergesFile); + } + } + } + + public static IEnumerable BpeTestData + { + get + { + // string to tokenize, produced tokens, the token offsets + yield return new object?[] + { + "the brown fox jumped over the lazy dog!", + new string[] {"the", "brown", "fox", "jumped", "over", "the", "lazy", "dog", "!"}, + new (int, int)[] {(0, 3), (4, 9), (10, 13), (14, 20), (21, 25), (26, 29), (30, 34), (35, 38), (38, 39)} + }; + yield return new object?[] + { + "he traveled to Egypt during the summer, the weather was hot and ammunition." , + new string[] {"he", "traveled", "to", "Egypt", "during", "the", "summer", ",", "the", "weather", "was", "hot", "and", "ammunition", "."}, + new (int, int)[] {(0, 2), (3, 11), (12, 14), (15, 20), (21, 27), (28, 31), (32, 38), (38, 39), (40, 43), (44, 51), (52, 55), (56, 59), (60, 63), (64, 74), (74, 75)} + }; + yield return new object?[] + { + "She played many games and she felt exhausted afterward", + new string[] {"She", "played", "many", "games", "and", "she", "felt", "exhausted", "afterward"}, + new (int, int)[] {(0, 3), (4, 10), (11, 15), (16, 21), (22, 25), (26, 29), (30, 34), (35, 44), (45, 54)} + }; + yield return new object?[] + { + "Hello, y'all! How are you 😁 ?", + new string[] {"Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"}, + new (int, int)[] {(0, 5), (5, 6), (7, 8), (8, 9), (9, 12), (12, 13), (14, 17), (18, 21), (22, 25), (26, 28), (29, 30)} + }; + } + } + + [Fact] + public void TestTrainingLoadingVocabFile() + { + string trainingFilePath = Utils.SaveEmbeddedResourceFile("wiki.test.raw"); + string prefix = Guid.NewGuid().ToString(); + string vocabFilePath = Path.GetTempPath() + Path.DirectorySeparatorChar + prefix + "-vocab.json"; + string mergeFilePath = Path.GetTempPath() + Path.DirectorySeparatorChar + prefix + "-merges.txt"; + + try + { + // + // Training + // + + Tokenizer tokenizer = new Tokenizer(new Bpe()); + Trainer bpeTrainer = new BpeTrainer(specialTokens: new List() { "[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]" }, minFrequency: 0, vocabSize: 50_000); + tokenizer.TrainFromFiles(bpeTrainer, null, trainingFilePath); + + tokenizer.Model.Save(Path.GetTempPath(), prefix); + + Assert.True(File.Exists(mergeFilePath)); + Assert.True(File.Exists(vocabFilePath)); + + // + // Create the tokenizer using the generated vocab and merges files + // + + tokenizer = new Tokenizer(new Bpe(vocabFilePath, mergeFilePath)); + Assert.True(tokenizer.Model.GetVocab().TryGetValue("[UNK]", out int unkId)); + Assert.Equal(0, unkId); + + foreach (object?[] arguments in BpeTestData) + { + TokenizerResult enc = tokenizer.Encode((string)arguments[0]!); + Assert.Equal((string)arguments[0]!, enc.OriginalString); + Assert.Equal((string[])arguments[1]!, enc.Tokens); + (int, int)[] offsets = ((int, int)[])arguments[2]!; + for (int i = 0; i < offsets.Length; i++) + Assert.Equal(offsets[i], enc.Offsets[i]); + + Assert.Equal(enc.Tokens.Count, enc.Ids.Count); + + IReadOnlyDictionary vocab = tokenizer.Model.GetVocab(); + for (int i = 0; i < enc.Ids.Count; i++) + { + Assert.Equal(vocab[enc.Tokens[i]], enc.Ids[i]); + } + } + } + finally + { + Utils.DeleteFile(trainingFilePath); + Utils.DeleteFile(mergeFilePath); + Utils.DeleteFile(vocabFilePath); + } + } + + private static string WriteToMergeFile((string, string)[] mergeEntries) + { + string fileName = Utils.CreateTemporaryFile("txt"); + using StreamWriter file = new(fileName); + foreach ((string s1, string s2) in mergeEntries) + { + file.WriteLine($"{s1} {s2}"); + } + + return fileName; + } + + private static string WriteToVocabFile(Dictionary dic) + { + string fileName = Utils.CreateTemporaryFile("json"); + File.WriteAllText(fileName, JsonSerializer.Serialize>(dic), Encoding.UTF8); + return fileName; + } + } +} + diff --git a/test/Microsoft.ML.Tokenizers.Tests/Data/wiki.test.raw b/test/Microsoft.ML.Tokenizers.Tests/Data/wiki.test.raw new file mode 100644 index 0000000000..18dd31ae53 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/Data/wiki.test.raw @@ -0,0 +1,4366 @@ + + = Robert Boulter = + + Robert Boulter is an English film , television and theatre actor . He had a guest @-@ starring role on the television series The Bill in 2000 . This was followed by a starring role in the play Herons written by Simon Stephens , which was performed in 2001 at the Royal Court Theatre . He had a guest role in the television series Judge John Deed in 2002 . In 2004 Boulter landed a role as " Craig " in the episode " Teddy 's Story " of the television series The Long Firm ; he starred alongside actors Mark Strong and Derek Jacobi . He was cast in the 2005 theatre productions of the Philip Ridley play Mercury Fur , which was performed at the Drum Theatre in Plymouth and the Menier Chocolate Factory in London . He was directed by John Tiffany and starred alongside Ben Whishaw , Shane Zaza , Harry Kent , Fraser Ayres , Sophie Stanton and Dominic Hall . + In 2006 , Boulter starred alongside Whishaw in the play Citizenship written by Mark Ravenhill . He appeared on a 2006 episode of the television series , Doctors , followed by a role in the 2007 theatre production of How to Curse directed by Josie Rourke . How to Curse was performed at Bush Theatre in the London Borough of Hammersmith and Fulham . Boulter starred in two films in 2008 , Daylight Robbery by filmmaker Paris Leonti , and Donkey Punch directed by Olly Blackburn . In May 2008 , Boulter made a guest appearance on a two @-@ part episode arc of the television series Waking the Dead , followed by an appearance on the television series Survivors in November 2008 . He had a recurring role in ten episodes of the television series Casualty in 2010 , as " Kieron Fletcher " . Boulter starred in the 2011 film Mercenaries directed by Paris Leonti . + + = = Career = = + + + = = = 2000 – 2005 = = = + + In 2000 Boulter had a guest @-@ starring role on the television series The Bill ; he portrayed " Scott Parry " in the episode , " In Safe Hands " . Boulter starred as " Scott " in the play Herons written by Simon Stephens , which was performed in 2001 at the Royal Court Theatre . A review of Boulter 's performance in The Independent on Sunday described him as " horribly menacing " in the role , and he received critical reviews in The Herald , and Evening Standard . He appeared in the television series Judge John Deed in 2002 as " Addem Armitage " in the episode " Political Expediency " , and had a role as a different character " Toby Steele " on The Bill . + He had a recurring role in 2003 on two episodes of The Bill , as character " Connor Price " . In 2004 Boulter landed a role as " Craig " in the episode " Teddy 's Story " of the television series The Long Firm ; he starred alongside actors Mark Strong and Derek Jacobi . Boulter starred as " Darren " , in the 2005 theatre productions of the Philip Ridley play Mercury Fur . It was performed at the Drum Theatre in Plymouth , and the Menier Chocolate Factory in London . He was directed by John Tiffany and starred alongside Ben Whishaw , Shane Zaza , Harry Kent , Fraser Ayres , Sophie Stanton and Dominic Hall . Boulter received a favorable review in The Daily Telegraph : " The acting is shatteringly intense , with wired performances from Ben Whishaw ( now unrecognisable from his performance as Trevor Nunn 's Hamlet ) , Robert Boulter , Shane Zaza and Fraser Ayres . " The Guardian noted , " Ben Whishaw and Robert Boulter offer tenderness amid the savagery . " + + = = = 2006 – present = = = + + In 2006 Boulter starred in the play Citizenship written by Mark Ravenhill . The play was part of a series which featured different playwrights , titled Burn / Chatroom / Citizenship . In a 2006 interview , fellow actor Ben Whishaw identified Boulter as one of his favorite co @-@ stars : " I loved working with a guy called Robert Boulter , who was in the triple bill of Burn , Chatroom and Citizenship at the National . He played my brother in Mercury Fur . " He portrayed " Jason Tyler " on the 2006 episode of the television series , Doctors , titled " Something I Ate " . Boulter starred as " William " in the 2007 production of How to Curse directed by Josie Rourke . How to Curse was performed at Bush Theatre in the London Borough of Hammersmith and Fulham . In a review of the production for The Daily Telegraph , theatre critic Charles Spencer noted , " Robert Boulter brings a touching vulnerability to the stage as William . " + Boulter starred in two films in 2008 , Daylight Robbery by filmmaker Paris Leonti , and Donkey Punch directed by Olly Blackburn . Boulter portrayed a character named " Sean " in Donkey Punch , who tags along with character " Josh " as the " quiet brother ... who hits it off with Tammi " . Boulter guest starred on a two @-@ part episode arc " Wounds " in May 2008 of the television series Waking the Dead as character " Jimmy Dearden " . He appeared on the television series Survivors as " Neil " in November 2008 . He had a recurring role in ten episodes of the television series Casualty in 2010 , as " Kieron Fletcher " . He portrayed an emergency physician applying for a medical fellowship . He commented on the inherent difficulties in portraying a physician on television : " Playing a doctor is a strange experience . Pretending you know what you 're talking about when you don 't is very bizarre but there are advisers on set who are fantastic at taking you through procedures and giving you the confidence to stand there and look like you know what you 're doing . " Boulter starred in the 2011 film Mercenaries directed by Paris Leonti . + + = = Filmography = = + + + = = = Film = = = + + + = = = Television = = = + + + = = = Theatre = = = + + + + = Du Fu = + + Du Fu ( Wade – Giles : Tu Fu ; Chinese : 杜甫 ; 712 – 770 ) was a prominent Chinese poet of the Tang dynasty . Along with Li Bai ( Li Po ) , he is frequently called the greatest of the Chinese poets . His greatest ambition was to serve his country as a successful civil servant , but he proved unable to make the necessary accommodations . His life , like the whole country , was devastated by the An Lushan Rebellion of 755 , and his last 15 years were a time of almost constant unrest . + Although initially he was little @-@ known to other writers , his works came to be hugely influential in both Chinese and Japanese literary culture . Of his poetic writing , nearly fifteen hundred poems have been preserved over the ages . He has been called the " Poet @-@ Historian " and the " Poet @-@ Sage " by Chinese critics , while the range of his work has allowed him to be introduced to Western readers as " the Chinese Virgil , Horace , Ovid , Shakespeare , Milton , Burns , Wordsworth , Béranger , Hugo or Baudelaire " . + + = = Life = = + + Traditional Chinese literary criticism emphasized the life of the author when interpreting a work , a practice which Burton Watson attributes to " the close links that traditional Chinese thought posits between art and morality " . Since many of Du Fu 's poems feature morality and history , this practice is particularly important . Another reason , identified by the Chinese historian William Hung , is that Chinese poems are typically concise , omitting context that might be relevant , but which an informed contemporary could be assumed to know . For modern Western readers , " The less accurately we know the time , the place and the circumstances in the background , the more liable we are to imagine it incorrectly , and the result will be that we either misunderstand the poem or fail to understand it altogether " . Stephen Owen suggests a third factor particular to Du Fu , arguing that the variety of the poet 's work required consideration of his whole life , rather than the " reductive " categorizations used for more limited poets . + + = = = Early years = = = + + Most of what is known of Du Fu 's life comes from his poems . His paternal grandfather was Du Shenyan , a noted politician and poet during the reign of Empress Wu . Du Fu was born in 712 ; the exact birthplace is unknown , except that it was near Luoyang , Henan province ( Gong county is a favourite candidate ) . In later life , he considered himself to belong to the capital city of Chang 'an , ancestral hometown of the Du family . + Du Fu 's mother died shortly after he was born , and he was partially raised by his aunt . He had an elder brother , who died young . He also had three half brothers and one half sister , to whom he frequently refers in his poems , although he never mentions his stepmother . + The son of a minor scholar @-@ official , his youth was spent on the standard education of a future civil servant : study and memorisation of the Confucian classics of philosophy , history and poetry . He later claimed to have produced creditable poems by his early teens , but these have been lost . + In the early 730s , he travelled in the Jiangsu / Zhejiang area ; his earliest surviving poem , describing a poetry contest , is thought to date from the end of this period , around 735 . In that year , he took the civil service exam , likely in Chang 'an . He failed , to his surprise and that of centuries of later critics . Hung concludes that he probably failed because his prose style at the time was too dense and obscure , while Chou suggests his failure to cultivate connections in the capital may have been to blame . After this failure , he went back to traveling , this time around Shandong and Hebei . + His father died around 740 . Du Fu would have been allowed to enter the civil service because of his father 's rank , but he is thought to have given up the privilege in favour of one of his half brothers . He spent the next four years living in the Luoyang area , fulfilling his duties in domestic affairs . + In the autumn of 744 , he met Li Bai ( Li Po ) for the first time , and the two poets formed a friendship . David Young describes this as " the most significant formative element in Du Fu 's artistic development " because it gave him a living example of the reclusive poet @-@ scholar life to which he was attracted after his failure in the civil service exam . The relationship was somewhat one @-@ sided , however . Du Fu was by some years the younger , while Li Bai was already a poetic star . We have twelve poems to or about Li Bai from the younger poet , but only one in the other direction . They met again only once , in 745 . + In 746 , he moved to the capital in an attempt to resurrect his official career . He took the civil service exam a second time during the following year , but all the candidates were failed by the prime minister ( apparently in order to prevent the emergence of possible rivals ) . He never again attempted the examinations , instead petitioning the emperor directly in 751 , 754 and probably again in 755 . He married around 752 , and by 757 the couple had had five children — three sons and two daughters — but one of the sons died in infancy in 755 . From 754 he began to have lung problems ( probably asthma ) , the first of a series of ailments which dogged him for the rest of his life . It was in that year that Du Fu was forced to move his family due to the turmoil of a famine brought about by massive floods in the region . + In 755 , he received an appointment as Registrar of the Right Commandant 's office of the Crown Prince 's Palace . Although this was a minor post , in normal times it would have been at least the start of an official career . Even before he had begun work , however , the position was swept away by events . + + = = = War = = = + + The An Lushan Rebellion began in December 755 , and was not completely suppressed for almost eight years . It caused enormous disruption to Chinese society : the census of 754 recorded 52 @.@ 9 million people , but ten years later , the census counted just 16 @.@ 9 million , the remainder having been displaced or killed . During this time , Du Fu led a largely itinerant life unsettled by wars , associated famines and imperial displeasure . This period of unhappiness was the making of Du Fu as a poet : Even Shan Chou has written that , " What he saw around him — the lives of his family , neighbors , and strangers – what he heard , and what he hoped for or feared from the progress of various campaigns — these became the enduring themes of his poetry " . Even when he learned of the death of his youngest child , he turned to the suffering of others in his poetry instead of dwelling upon his own misfortunes . Du Fu wrote : + Brooding on what I have lived through , if even I know such suffering , the common man must surely be rattled by the winds . + In 756 , Emperor Xuanzong was forced to flee the capital and abdicate . Du Fu , who had been away from the city , took his family to a place of safety and attempted to join the court of the new emperor ( Suzong ) , but he was captured by the rebels and taken to Chang 'an . In the autumn , his youngest son , Du Zongwu ( Baby Bear ) , was born . Around this time Du Fu is thought to have contracted malaria . + He escaped from Chang 'an the following year , and was appointed Reminder when he rejoined the court in May 757 . This post gave access to the emperor but was largely ceremonial . Du Fu 's conscientiousness compelled him to try to make use of it : he caused trouble for himself by protesting the removal of his friend and patron Fang Guan on a petty charge . He was arrested but was pardoned in June . He was granted leave to visit his family in September , but he soon rejoined the court and on December 8 , 757 , he returned to Chang 'an with the emperor following its recapture by government forces . However , his advice continued to be unappreciated , and in the summer of 758 he was demoted to a post as Commissioner of Education in Huazhou . The position was not to his taste : in one poem , he wrote : + I am about to scream madly in the office / Especially when they bring more papers to pile higher on my desk . + He moved on in the summer of 759 ; this has traditionally been ascribed to famine , but Hung believes that frustration is a more likely reason . He next spent around six weeks in Qinzhou ( now Tianshui , Gansu province ) , where he wrote more than sixty poems . + + = = = Chengdu = = = + + In December 759 , he briefly stayed in Tonggu ( modern Gansu ) . He departed on December 24 for Chengdu ( Sichuan province ) , where he was hosted by local Prefect and fellow poet Pei Di . Du subsequently based himself in Sichuan for most of the next five years . By the autumn of that year he was in financial trouble , and sent poems begging help to various acquaintances . He was relieved by Yan Wu , a friend and former colleague who was appointed governor general at Chengdu . Despite his financial problems , this was one of the happiest and most peaceful periods of his life . Many of Du 's poems from this period are peaceful depictions of his life at " thatched hut " . In 762 , he left the city to escape a rebellion , but he returned in summer 764 when he was appointed an advisor to Yan , who was involved in campaigns against the Tibetan Empire . + + = = = Last years = = = + + Luoyang , the region of his birthplace , was recovered by government forces in the winter of 762 , and in the spring of 765 Du Fu and his family sailed down the Yangtze , apparently with the intention of making their way there . They traveled slowly , held up by his ill @-@ health ( by this time he was suffering from poor eyesight , deafness and general old age in addition to his previous ailments ) . They stayed in Kuizhou ( in what is now Baidicheng , Chongqing ) at the entrance to the Three Gorges for almost two years from late spring 766 . This period was Du Fu 's last great poetic flowering , and here he wrote 400 poems in his dense , late style . In autumn 766 , Bo Maolin became governor of the region : he supported Du Fu financially and employed him as his unofficial secretary . + In March 768 , he began his journey again and got as far as Hunan province , where he died in Tanzhou ( now Changsha ) in November or December 770 , in his 58th year . He was survived by his wife and two sons , who remained in the area for some years at least . His last known descendant is a grandson who requested a grave inscription for the poet from Yuan Zhen in 813 . + Hung summarises his life by concluding that , " He appeared to be a filial son , an affectionate father , a generous brother , a faithful husband , a loyal friend , a dutiful official , and a patriotic subject . " + Below is an example of one of Du Fu 's later works , To My Retired Friend Wei ( Chinese : 贈衛八處士 ) . Like many other poems in the Tang it featured the theme of a long parting between friends , which was often due to officials being frequently transferred to the provinces : + + = = Works = = + + Criticism of Du Fu 's works has focused on his strong sense of history , his moral engagement , and his technical excellence . + + = = = History = = = + + Since the Song dynasty , critics have called Du Fu the " poet historian " ( 詩史 shī shǐ ) . The most directly historical of his poems are those commenting on military tactics or the successes and failures of the government , or the poems of advice which he wrote to the emperor . Indirectly , he wrote about the effect of the times in which he lived on himself , and on the ordinary people of China . As Watson notes , this is information " of a kind seldom found in the officially compiled histories of the era " . + Du Fu 's political comments are based on emotion rather than calculation : his prescriptions have been paraphrased as , " Let us all be less selfish , let us all do what we are supposed to do " . Since his views were impossible to disagree with , his forcefully expressed truisms enabled his installation as the central figure of Chinese poetic history . + + = = = Moral engagement = = = + + A second favourite epithet of Chinese critics is that of " poet sage " ( 詩聖 shī shèng ) , a counterpart to the philosophical sage , Confucius . One of the earliest surviving works , The Song of the Wagons ( from around 750 ) , gives voice to the sufferings of a conscript soldier in the imperial army and a clear @-@ sighted consciousness of suffering . These concerns are continuously articulated in poems on the lives of both soldiers and civilians produced by Du Fu throughout his life . + Although Du Fu 's frequent references to his own difficulties can give the impression of an all @-@ consuming solipsism , Hawkes argues that his " famous compassion in fact includes himself , viewed quite objectively and almost as an afterthought " . He therefore " lends grandeur " to the wider picture by comparing it to " his own slightly comical triviality " . + Du Fu 's compassion , for himself and for others , was part of his general broadening of the scope of poetry : he devoted many works to topics which had previously been considered unsuitable for poetic treatment . Zhang Jie wrote that for Du Fu , " everything in this world is poetry " , Du wrote extensively on subjects such as domestic life , calligraphy , paintings , animals , and other poems . + + = = = Technical excellence = = = + + Du Fu 's work is notable above all for its range . Chinese critics traditionally used the term 集大成 ( jídàchéng- " complete symphony " ) , a reference to Mencius ' description of Confucius . Yuan Zhen was the first to note the breadth of Du Fu 's achievement , writing in 813 that his predecessor , " united in his work traits which previous men had displayed only singly " . He mastered all the forms of Chinese poetry : Chou says that in every form he " either made outstanding advances or contributed outstanding examples " . Furthermore , his poems use a wide range of registers , from the direct and colloquial to the allusive and self @-@ consciously literary . This variety is manifested even within individual works : Owen identifies the , " rapid stylistic and thematic shifts " in poems which enable the poet to represent different facets of a situation , while Chou uses the term " juxtaposition " as the major analytical tool in her work . Du Fu is noted for having written more on poetics and painting than any other writer of his time . He wrote eighteen poems on painting alone , more than any other Tang poet . Du Fu 's seemingly negative commentary on the prized horse paintings of Han Gan ignited a controversy that has persisted to the present day . + The tenor of his work changed as he developed his style and adapted to his surroundings ( " chameleon @-@ like " according to Watson ) : his earliest works are in a relatively derivative , courtly style , but he came into his own in the years of the rebellion . Owen comments on the " grim simplicity " of the Qinzhou poems , which mirrors the desert landscape ; the works from his Chengdu period are " light , often finely observed " ; while the poems from the late Kuizhou period have a " density and power of vision " . + Although he wrote in all poetic forms , Du Fu is best known for his lǜshi , a type of poem with strict constraints on form and content , for example : + About two thirds of Du Fu 's 1500 extant works are in this form , and he is generally considered to be its leading exponent . His best lǜshi use the parallelisms required by the form to add expressive content rather than as mere technical restrictions . Hawkes comments that , " it is amazing that Tu Fu is able to use so immensely stylized a form in so natural a manner " . + + = = Influence = = + + According to the Encyclopædia Britannica , Du Fu 's writings are considered by many literary critics to be among the greatest of all time , and it states " his dense , compressed language makes use of all the connotative overtones of a phrase and of all the intonational potentials of the individual word , qualities that no translation can ever reveal . " + In his lifetime and immediately following his death , Du Fu was not greatly appreciated . In part this can be attributed to his stylistic and formal innovations , some of which are still " considered extremely daring and bizarre by Chinese critics . " There are few contemporary references to him — only eleven poems from six writers — and these describe him in terms of affection , but not as a paragon of poetic or moral ideals . Du Fu is also poorly represented in contemporary anthologies of poetry . + However , as Hung notes , he " is the only Chinese poet whose influence grew with time " , and his works began to increase in popularity in the ninth century . Early positive comments came from Bai Juyi , who praised the moral sentiments of some of Du Fu 's works ( although he found these in only a small fraction of the poems ) , and from Han Yu , who wrote a piece defending Du Fu and Li Bai on aesthetic grounds from attacks made against them . Both these writers showed the influence of Du Fu in their own poetic work . By the beginning of the 10th century , Wei Zhuang constructed the first replica of his thatched cottage in Sichuan . + It was in the 11th century , during the Northern Song era that Du Fu 's reputation reached its peak . In this period a comprehensive re @-@ evaluation of earlier poets took place , in which Wang Wei , Li Bai and Du Fu came to be regarded as representing respectively the Buddhist , Daoist and Confucian strands of Chinese culture . At the same time , the development of Neo @-@ Confucianism ensured that Du Fu , as its poetic exemplar , occupied the paramount position . Su Shi famously expressed this reasoning when he wrote that Du Fu was " preeminent ... because ... through all his vicissitudes , he never for the space of a meal forgot his sovereign " . His influence was helped by his ability to reconcile apparent opposites : political conservatives were attracted by his loyalty to the established order , while political radicals embraced his concern for the poor . Literary conservatives could look to his technical mastery , while literary radicals were inspired by his innovations . Since the establishment of the People 's Republic of China , Du Fu 's loyalty to the state and concern for the poor have been interpreted as embryonic nationalism and socialism , and he has been praised for his use of simple , " people 's language " . + Du Fu 's popularity grew to such an extent that it is as hard to measure his influence as that of Shakespeare in England : it was hard for any Chinese poet not to be influenced by him . While there was never another Du Fu , individual poets followed in the traditions of specific aspects of his work : Bai Juyi 's concern for the poor , Lu You 's patriotism , and Mei Yaochen 's reflections on the quotidian are a few examples . More broadly , Du Fu 's work in transforming the lǜshi from mere word play into " a vehicle for serious poetic utterance " set the stage for every subsequent writer in the genre . + In the 20th century , he was the favourite poet of Kenneth Rexroth , who has described him as " the greatest non @-@ epic , non @-@ dramatic poet who has survived in any language " , and commented that , " he has made me a better man , as a moral agent and as a perceiving organism " . + + = = = Influence on Japanese literature = = = + + Du Fu 's poetry has made a profound impact on Japanese literature , especially on the literature from the Muromachi period and on scholars and poets in the Edo period , including Matsuo Bashō , the very greatest of all haiku poets . Even in modern Japanese , the term Saint of Poetry ( 詩聖 , shisei ) is mostly synonymous with Du Fu . + Until the 13th century , the Japanese preferred Bai Juyi above all poets and there were few references to Du Fu , although his influence can be seen in some kanshi ( " Chinese poetry made by Japanese poets " ) anthologies such as Bunka Shūreishū in the 9th century . The first notable Japanese appreciator of Du Fu 's poetry was Kokan Shiren ( 1278 – 1346 ) , a Rinzai Zen patriarch and one of the most prominent authors of the literature of the Five Mountains ; he highly praised Du Fu and made a commentary on some poems of Du Fu from the perspective of a Zen priest in Vol . 11 of Saihokushū . His student Chūgan Engetsu composed many kanshi which were clearly stated " influenced by Du Fu " in their prefaces . Chūgan 's student Gidō Shūshin had close connection with the Court and Ashikaga Shogunate and propagated Du Fu 's poetry in the mundane world ; one day Nijō Yoshimoto , the Kampaku regent of the Court and the highest authority of renga poetry , asked Gidō , " Should I learn the poetry of Du Fu and Li Bai ? " Gidō dared to reply , " Yes if you do have enough capability . No if do not . " Since then , there had been many seminars on Du Fu 's poetry both in Zen temples and in the aristocratic society , and as a result his poetry was often cited in Japanese literature in the Muromachi period , e.g. , Taiheiki , a historical epic in the late 14th century , and some noh plays such as Hyakuman , Bashō , and Shunkan . + During the Kan 'ei era of the Edo period ( 1624 – 1643 ) , Shào Chuán ( 邵傳 ) of the Ming Dynasty 's Collective Commentary on Du Fu 's Lǜshi ( 杜律集解 , Toritsu Shikkai ) was imported into Japan , and it gained explosive popularity in Confucian scholars and chōnin ( townspeople ) class . The commentary established Du Fu 's fame as the highest of all poets ; for instance , Hayashi Shunsai , a notable Confucian scholar , commented in Vol . 37 of Gahō Bunshū that Zǐměi [ Du Fu ] was the very best poet in history and praised Shào Chuán 's commentary for its simplicity and readability , while he criticized old commentaries during the Yuan Dynasty were too unfathomable . Matsuo Bashō , the greatest haiku poet , was also strongly influenced by Du Fu ; in Oku no Hosomichi , his masterpiece , he cites the first two lines of A Spring View ( 春望 ) before a haiku as its introduction and also many of his other haiku have similar wording and themes . It is said that when he died in Osaka during a long travel , a copy of Du Fu 's poetry was found with him as one of a few precious items which he was able to carry around . + + = = Translation = = + + A variety of styles have been used in efforts to translate Du Fu 's work into English . As Burton Watson remarks in The Selected Poems of Du Fu , " There are many different ways to approach the problems involved in translating Du Fu , which is why we need as many different translations as possible " ( p. xxii ) . The translators have had to contend with bringing out the formal constraints of the original without sounding laboured to a Western ear ( particularly when translating regulated verse , or lǜshi ) , and accommodating the complex allusions contained particularly in the later works ( Hawkes writes that " his poems do not as a rule come through very well in translation " — p. ix ) . One extreme on each issue is represented by Kenneth Rexroth 's One Hundred Poems From the Chinese . His are free translations , which seek to conceal the parallelisms through enjambement and expansion and contraction of the content ; his responses to the allusions are firstly to omit most of these poems from his selection , and secondly to " translate out " the references in those works which he does select . + Other translators have placed much greater weight on trying to convey a sense of the poetic forms used by Du Fu . Vikram Seth in Three Chinese Poets uses English @-@ style rhyme schemes , whereas Keith Holyoak in Facing the Moon approximates the Chinese rhyme scheme ; both use end @-@ stopped lines and preserve some degree of parallelism . In The Selected Poems of Du Fu , Burton Watson follows the parallelisms quite strictly , persuading the western reader to adapt to the poems rather than vice versa . Similarly , he deals with the allusion of the later works by combining literal translation with extensive annotation . + In 2015 , Stephen Owen published translations , with facing Chinese texts , of the complete poetry of Du Fu in six volumes , with extensive scholarly apparatus , which emphasized literalness . + + + = Kiss You ( One Direction song ) = + + " Kiss You " is a song recorded by English @-@ Irish boy band One Direction for their second studio album , Take Me Home ( 2012 ) . It was released as the record 's second single in Germany and the third overall single on 7 January 2013 . The song was composed by Kristoffer Fogelmark , Kristian Lundin , Albin Nedler , Savan Kotecha , Shellback and its producers , Carl Falk and Rami Yacoub . " Kiss You " is an upbeat power pop song with electronic effects ; the lyrics detail a protagonist 's infatuation with a significant other . Critics praised the song for its production , calling it a stand @-@ out track on Take Me Home . + The track became the group 's sixth top @-@ ten hit in Ireland and the United Kingdom , while attaining top @-@ forty positions in both Belgian territories ( Flanders and Wallonia ) , as well as in Australia , Canada , Denmark , France , New Zealand , and the Netherlands . The single peaked at number 46 on the US Billboard Hot 100 and has been certified gold by the Recording Industry Association of America ( RIAA ) for shipments of 500 @,@ 000 copies . One Direction performed " Kiss You " on both the UK and US versions of The X Factor and 3 major concert tours : Take Me Home Tour ( 2013 ) , Where We Are Tour ( 2014 ) and On the Road Again Tour ( 2015 ) . + An accompanying music video , designed to display the group 's comedic timing , was directed by Vaughan Arnell , who had previously worked with the group on two other music videos . The clip depicts the band shooting various scenes via a green screen , which include sequences reminiscent of iconic music videos of songs such as the Beach Boys ' " Surfer Girl " , Elvis Presley 's " Jailhouse Rock " and Rammstein 's " Mein Land " . The music video received 10 @.@ 4 million views in a 24 @-@ hour period and positive commentary from reviewers , who appreciated its carefree , jubilant nature . + The song was included in the dancing game Just Dance 2014 , and is also one of the select songs available on the demo version . Additionally , it is the final main track on the US edition of Now That 's What I Call Music ! 46 . + + = = Background and release = = + + " Kiss You " was written by Kristoffer Fogelmark , Kristian Lundin , Albin Nedler , Savan Kotecha , Shellback , and its producers , Carl Falk and Rami Yacoub . Falk , Kotecha , and Yacoub had collaboratively composed One Direction 's previous hit singles , " What Makes You Beautiful " , " One Thing " , and " Live While We 're Young " . In April 2012 , The Independent reported that Simon Cowell , the group 's manager , had challenged prominent songwriters to compete for space on One Direction 's second album . Falk said , " It 's important to get their personalities on the music . " In addition , the article reported that Syco Records was working on candidates that included Max Martin and Lundin . + " Kiss You " was chosen as the second US single and third international from their second studio album , Take Me Home . Liam Payne , a group member , in a November 2012 interview with MTV News , explained why they chose " Kiss You " as the album 's second single in the US . Payne was quoted as saying : " With the album , that 's the first one that we listened to and we were like , ' Yeah , we love this song ' " . According to a MTV News article , the number was released digitally in the United States on 17 November 2012 . By 18 January 2013 , the song had not been officially promoted to US radio stations . The track , however , was released by Sony Music Entertainment on 8 February 2013 , as the record 's second single in Germany . + + = = Composition and reception = = + + " Kiss You " is an uptempo , upbeat power pop song which runs for a duration of 3 : 04 ( 3 minutes , four seconds ) . The track features electronic effects , colossal hooks , a " na na na " breakdown , and a Motown @-@ tinged melody . One Direction 's vocal range in the song span from the note of E4 to C ♯ 6 . Instrumentation includes guitar strings , piano lines and vocals . Written in the key of E major , the beat is set in common time and moves at a quick 90 beats per minute , according to the digital sheet music published at Musicnotes.com by Sony / ATV Music Publishing . Likewise , Matt Collar from Allmusic noted that the track is " frenetically hyper " . The lyrical content regards the protagonist 's infatuation with a significant other , and incorporates euphemisms for sexual intercourse in the lines " If you don ’ t wanna take it slow / And you just wanna take me home / Baby say yeah , yeah , yeah , yeah , yeah . " + " Kiss You " was well received by contemporary music critics , who centred on its quality of production . Both Rolling Stone 's Jon Dolan , who praised its effectiveness , and Chris Payne of Billboard , who appreciated the melody , described " Kiss You " as one of the album 's highlights . Alexis Petridis for The Guardian commended the track 's chorus as " hard to dislodge from your brain " . Robert Copsey of Digital Spy noted the song 's possibility to become an international hit , applauding it sonically . A reviewer for MTV News described the track 's lyricism as " butterflies @-@ inducing " , and Sam Lansky of Idolator wrote that " Kiss You " is noticeably a stand @-@ out track on its parent album . Melinda Newman , writing for HitFix , regarded the song as " a bouncy , electronic infectious ditty , " while Chris Younie , a critic from 4Music , deemed it an " amazing pop song " , lauding the group 's falsetto and its " head @-@ banging anthemic " chorus . + + = = Commercial performance = = + + The single made its Irish Singles Chart debut at number 24 on the week ending 13 December 2012 . It peaked at number seven on the week ending 17 January 2013 , marking their sixth top ten appearance in Ireland . " Kiss You " entered at number 152 in the UK Singles Chart on 24 November 2012 . It peaked at number nine on the UK Singles Chart on 26 January 2013 , becoming One Direction 's sixth top ten hit in the United Kingdom . On the week ending 18 November 2012 , " Kiss You " debuted at number 90 on the United States Billboard Hot 100 due to digital download sales from its parent album . As a result of an " end @-@ of @-@ year download rush " on the week ending 30 December 2012 , the track re @-@ entered the Hot 100 at number 83 . After the accompanying music video was released , the song re @-@ entered the Hot 100 at number 65 . " Kiss You " had sold 207 @,@ 000 digital downloads in the US by 18 January 2013 . The single ultimately peaked at number 46 on the Hot 100 and was certified gold by the Recording Industry Association of America ( RIAA ) on 25 April 2013 , denoting shipments of 500 @,@ 000 copies . + The song became One Direction 's fourth top @-@ forty hit on the Canadian Hot 100 , peaking at number 30 . The single bowed at number 13 on the Australian Singles Chart on 27 January 2013 , marking its peak position and the group 's fourth top twenty hit in Australia . The song has been certified platinum by the Australian Recording Industry Association ( ARIA ) for shipments of 70 @,@ 000 copies . The track entered the New Zealand Singles Chart at number 17 on 11 January 2013 . It peaked at number 13 in its third and fourth charting weeks , becominh the group 's sixth top @-@ forty appearance in New Zealand . " Kiss You " has received a gold certification from the Recording Industry Association of New Zealand ( RIANZ ) , indicating sales of 7 @,@ 500 copies . The track also reached the top 40 in both Belgian territories ( Flanders and Wallonia ) , as well as in the Czech Republic , Denmark , France , the Netherlands , and South Korea . In addition , " Kiss You " received gold certifications from the IFPI Norway and Denmark associations , signifying collective shipments of 20 @,@ 000 units . + + = = Music video = = + + The accompanying music video , directed by Vaughan Arnell , who had previously directed One Direction 's music videos for " Live While We 're Young " and " Little Things " , was designed to showcase the group 's comedic timing . Inspired by the Beach Boys , cult surfing films , old Hollywood , and British cinema , the music video incorporates " a technicolor vibe and a British kind of romp " , as noted by Arnell in a MTV News interview . + Shot by November 2012 , the music video was characterised , in several MTV News interviews , as " bigger than anything we 've done before " by Zayn Malik , as " a lot of hard work " by Payne , as " pure stupidity " by Louis Tomlinson , and as " I wouldn 't say [ it 's ] comedy , it 's all tongue @-@ in @-@ cheek " by Arnell . Premiering worldwide on Vevo on 7 January 2013 , the music video depicts the band shooting different scenes via a green screen , dressed as sailors , surfers , skiers and jailers . The video features scenes reminiscent of the films South Pacific , To Catch a Thief , Jailhouse Rock and Beach Blanket Bingo , as well as the iconic music videos of songs such as The Beach Boys ' " Surfer Girl " , Elvis Presley 's " Blue Hawaii " and Rammstein 's " Mein Land " , among others . + The music video garnered 10 @.@ 4 million views in a 24 @-@ hour period , failing to attain the Vevo record held by Justin Bieber 's " Beauty and a Beat " music video ( 10 @.@ 6 million ) . Despite a 34 % gain in weekly activity to their Vevo channel , with the clip 's success and preceding teaser videos earning 38 million views during the week , One Direction held at number two on the Billboard 's Social 50 chart A 15 % rise in Facebook reaction gave way to a 154 @,@ 000 increase in Facebook likes during the week . 191 @,@ 000 Twitter followers added contributed to their overall fan base increase as well . + Melinda Newman , a contributor for HitFix , favoured the clip as having " everything a video by a boy band should be " and found group 's careless tone delightful . Rebecca Macatee of E ! Online praised its " intentionally cheesy and utterly adorable " sequences , and MTV News 's Jocelyn Vena described the clip as " conquering old Hollywood " . Molly Chance , writing for Zap2it , was convinced that upon watching the " adorable " music video , the viewer should have a hard time disliking the group . Mikael Wood , the critic for Los Angeles Times , commended the group for " having a genuinely great time " , rather than going through the motions . + + = = Live performances = = + + As part of its promotion , One Direction performed the song on televised programmes and during their worldwide Take Me Home Tour ( 2013 ) . One Direction performed the track on The Today Show at the Rockefeller Center on 13 November 2012 , to a record crowd estimated at 15 @,@ 000 . " Kiss You " was included in the set list of the group 's 3 December 2012 sold @-@ out show at New York City 's Madison Square Garden . One Direction delivered a performance of " Kiss You " , in front of a video game @-@ themed set , on the final of the ninth series of The X Factor UK on 10 December 2012 . According to the Daily Mail , their " energetic rendition " of " Kiss You " proved that the group have an elusive quality . On 12 December 2012 , the group also performed the number on the final of the second season of The X Factor USA . Considering One Direction the " franchise 's biggest success story " , an editor for The Huffington Post opined that the boy band 's prominent presence on both the US and UK versions of The X Factor seemed fitting . Not only Take Me Home Tour , they also performance in Where We Are Tour ( 2014 ) & On the Road Again Tour ( 2015 ) + + = = Track listing = = + + CD single + " Kiss You " – 3 : 04 + " Little Things " – 3 : 42 + + = = Credits and personnel = = + + Carl Falk — writing , production , programming , instruments , guitar , background vocals + Kristoffer Fogelmark — background vocals + Niall Horan — additional guitar + Savan Kotecha — writing , background vocals + Kristian Lundin — writing + Albin Nedler — writing , background vocals + Shellback — writing + Rami Yacoub — writing , production , programming , instruments , bass + Credits adapted from Take Me Home 's liner notes . + + = = Charts = = + + + = = Certifications = = + + + = = Release history = = + + + + = Ise @-@ class battleship = + + The Ise @-@ class battleships ( 伊勢型戦艦 , Ise @-@ gata senkan ) were a pair of dreadnought battleships built for the Imperial Japanese Navy ( IJN ) during World War I. Originally intended to be repeats of the preceding Fusō class , they were redesigned before construction began . Both ships carried supplies for the survivors of the Great Kantō earthquake in 1923 . They were modernized in 1934 – 37 with improvements to their armour and machinery and a rebuilt superstructure in the pagoda mast style . Afterwards they played a minor role in the Second Sino @-@ Japanese War . + Despite the expensive reconstructions , both vessels were considered obsolete by the eve of the Pacific War , and neither saw significant action in the early years of the war . Following the loss of most of the IJN 's large aircraft carriers during the Battle of Midway in mid @-@ 1942 , they were rebuilt with a flight deck replacing the rear pair of gun turrets to give them the ability to operate an air group of floatplanes . A lack of aircraft and qualified pilots , however , meant that they never actually operated their aircraft in combat . While awaiting their air group the sister ships were sometimes used to ferry troops and material to Japanese bases . They participated in the Battle of Cape Engaño in late 1944 , where they decoyed the American carrier fleet supporting the invasion of Leyte away from the landing beaches . Afterwards both ships were transferred to Southeast Asia ; in early 1945 they participated in Operation Kita , where they transported petrol and other strategic materials to Japan . The sisters were then reduced to reserve until they were sunk during American airstrikes in July . After the war they were scrapped in 1946 – 47 . + + = = Background = = + + The design of the Fusō @-@ class battleships was shaped both by the ongoing international naval arms race and a desire among Japanese naval planners to maintain a fleet of capital ships powerful enough to defeat the United States Navy in an encounter in Japanese territorial waters . The IJN 's fleet of battleships had proven highly successful in 1905 , the last year of the Russo @-@ Japanese War , which culminated in the destruction of the Russian Second and Third Pacific Squadrons at the Battle of Tsushima . + In the aftermath , the Japanese Empire immediately turned its focus to the two remaining rivals for imperial dominance in the Pacific Ocean : Britain and the United States . Satō Tetsutarō , a Japanese Navy admiral and military theorist , speculated that conflict would inevitably arise between Japan and at least one of its two main rivals . To that end , he called for the Japanese Navy to maintain a fleet with at least 70 % as many capital ships as the US Navy . This ratio , Satō theorized , would enable the Imperial Japanese Navy to defeat the US Navy in one major battle in Japanese waters in any eventual conflict . Accordingly , the 1907 Imperial Defence Policy called for the construction of a battle fleet of eight modern battleships , 20 @,@ 000 long tons ( 20 @,@ 321 t ) each , and eight modern armoured cruisers , 18 @,@ 000 long tons ( 18 @,@ 289 t ) each . This was the genesis of the Eight @-@ Eight Fleet Program , the development of a cohesive battle line of sixteen capital ships . + The launch of HMS Dreadnought in 1906 by the Royal Navy raised the stakes , and complicated Japan 's plans . Displacing 17 @,@ 900 long tons ( 18 @,@ 200 t ) and armed with ten 12 @-@ inch ( 30 @.@ 5 cm ) guns , Dreadnought rendered all existing battleships obsolete by comparison . The launch of the battlecruiser HMS Invincible the following year was a further setback for Japan 's quest for parity . When the two new Satsuma @-@ class battleships and two Tsukuba @-@ class armoured cruisers , launched by 1911 , were outclassed by their British counterparts , the Eight @-@ Eight Fleet Program was restarted . + The first battleships built for the renewed Eight @-@ Eight Fleet Program were the two dreadnoughts of the Kawachi class , ordered in 1907 and laid down in 1908 . In 1910 , the Navy put forward a request to the Diet ( parliament ) to secure funding for the entirety of the program at once . Because of economic constraints , only four battlecruisers and a single battleship of the Fusō class were ultimately approved by the Diet . Three more Fusō @-@ class ships ( Yamashiro , Ise , and Hyūga ) were approved and all three were ordered in April 1913 . While Yamashiro was laid down later that year , the IJN lacked the funding to proceed with the construction of Ise and Hyūga until the Diet authorized additional funding for the ships in July 1914 . + + = = Design and description = = + + The progress of Fusō 's construction , while the IJN waited for the funding to be released and foreign developments , caused the IJN to reassess the Fusō @-@ class design . The distribution of the midships gun turrets was the most obvious flaw as they complicated the protection of the midships magazine and exposed more of the ship to the blast effects of the guns when they fired . Another issue was that Japanese sailors had problems maintaining a high rate of fire with the 45 @.@ 36 @-@ kilogram ( 100 @.@ 0 lb ) shells used in the manually loaded 152 @-@ millimetre ( 6 in ) secondary guns used in the Fusō class and earlier designs . To resolve this issue , the IJN designed a smaller 140 @-@ millimetre ( 5 @.@ 5 in ) gun that offset its lighter shell weight with a higher rate of fire . It also decided that the barbette armour of the earlier ships was too thin and wanted a modest increase in speed to partially counter the higher speeds of the latest foreign ships like the British Queen Elizabeth @-@ class battleships and Russian Borodino @-@ class battlecruisers . For financial reasons more powerful engines could not be ordered so the new design was lengthened slightly and the boiler rooms enlarged to increase speed by 0 @.@ 5 knots ( 0 @.@ 93 km / h ; 0 @.@ 58 mph ) to 23 knots ( 43 km / h ; 26 mph ) . To save weight the forecastle deck was shortened so that the lower midships gun turret was lower than in the Fusō class . This reduced the crew 's accommodations despite a significant increase in the crew 's numbers and naval historian Fukui Shizuo believed that these ships had the worst habitability of any Japanese capital ship . The final design was designated A @-@ 92 by the IJN and differed enough from the A @-@ 64 design of the Fusō class that it was considered a separate class . + The ships had a length of 208 @.@ 18 metres ( 683 ft 0 in ) overall , a beam of 28 @.@ 65 metres ( 94 ft 0 in ) and a draught of 8 @.@ 93 metres ( 29 ft 4 in ) at deep load . They displaced 36 @,@ 500 long tons ( 37 @,@ 100 t ) at deep load , roughly 650 long tons ( 660 t ) more than the preceding class . Their crew consisted of 1 @,@ 360 officers and enlisted men . They had a metacentric height of 1 @.@ 737 metres ( 5 ft 8 @.@ 4 in ) at deep load . + During the ships ' modernization during the 1930s , their forward superstructures were enlarged with multiple platforms added to their tripod foremasts . Both ships were also given torpedo bulges to improve their underwater protection and to compensate for the weight of the additional armour . In addition , their sterns were lengthened by 7 @.@ 62 metres ( 25 @.@ 0 ft ) . These changes increased their overall length to 213 @.@ 8 metres ( 701 ft ) , their beam to 31 @.@ 75 metres ( 104 ft 2 in ) and their draft to 9 @.@ 45 metres ( 31 ft 0 in ) . Their displacement increased over 5 @,@ 000 long tons ( 5 @,@ 100 t ) to 42 @,@ 001 long tons ( 42 @,@ 675 t ) at deep load . The crew now numbered 1 @,@ 376 officers and enlisted men . + + = = = Propulsion = = = + + The Ise @-@ class ships had two sets of direct @-@ drive steam turbines , each of which drove two propeller shafts with 3 @.@ 429 @-@ metre ( 11 ft 3 in ) propellers . The high @-@ pressure turbines drove the wing shafts while the low @-@ pressure turbines drove the inner shafts . The turbines were designed to produce a total of 40 @,@ 000 or 45 @,@ 000 shaft horsepower ( 30 @,@ 000 or 34 @,@ 000 kW ) ( Hyūga and Ise respectively ) , using steam provided by 24 Kampon Ro Gō water @-@ tube boilers at working pressures of 13 – 16 @.@ 9 kg / cm2 ( 1 @,@ 275 – 1 @,@ 657 kPa ; 185 – 240 psi ) . Both ships comfortably exceeded their designed speed of 23 knots ( 43 km / h ; 26 mph ) during their sea trials ; Ise reached 23 @.@ 6 knots ( 43 @.@ 7 km / h ; 27 @.@ 2 mph ) from 56 @,@ 498 shp ( 42 @,@ 131 kW ) and Hyūga exceeded that with 24 knots ( 44 km / h ; 28 mph ) from 63 @,@ 211 shp ( 47 @,@ 136 kW ) . Each of the boilers consumed a mixture of coal and oil and the ships had a stowage capacity of 4 @,@ 607 long tons ( 4 @,@ 681 t ) of coal and 1 @,@ 411 long tons ( 1 @,@ 434 t ) of fuel oil , which gave them a range of 9 @,@ 680 nautical miles ( 17 @,@ 930 km ; 11 @,@ 140 mi ) at a speed of 14 knots ( 26 km / h ; 16 mph ) . Ise and Hyūga had three generators of 150 kilowatts ( 200 hp ) capacity and two 250 @-@ kilowatt ( 340 hp ) turbo generators at 225 volts . + During their 1930s modernization , the boilers on each ship were replaced by eight new Kampon oil @-@ fired boilers , fitted into the former aft boiler room , and the forward funnel was removed . The turbines were replaced by four geared Kampon turbines with a designed output of 80 @,@ 000 shp ( 60 @,@ 000 kW ) intended to increase their speed to 24 @.@ 5 knots ( 45 @.@ 4 km / h ; 28 @.@ 2 mph ) . On her trials , Ise reached a top speed of 25 @.@ 26 knots ( 46 @.@ 78 km / h ; 29 @.@ 07 mph ) from 81 @,@ 050 shp ( 60 @,@ 440 kW ) . The fuel storage of the ships was increased to a total of 5 @,@ 113 long tons ( 5 @,@ 195 t ) of fuel oil that gave them a range of 7 @,@ 870 nautical miles ( 14 @,@ 580 km ; 9 @,@ 060 mi ) at a speed of 16 knots ( 30 km / h ; 18 mph ) . + + = = = Armament = = = + + The twelve 45 @-@ calibre 35 @.@ 6 cm ( 14 @.@ 0 in ) Type 41 guns of the Ise class were mounted in three pairs of twin @-@ gun , superfiring turrets . Numbered one through six from front to rear , each turret weighed 655 long tons ( 666 t ) . The hydraulically powered turrets had an elevation capability of − 5 / + 20 degrees . The guns had a rate of fire of 1 @.@ 5 – 2 rounds per minute and could be loaded at any angle between -3 and + 20 degrees . In 1921 the elevation was increased to + 30 degrees and then to + 43 degrees during their mid @-@ 1930s modernization , except for No. 6 turret as its supporting structure could not be lowered . The recoil mechanism of the guns was also changed from a hydraulic to a pneumatic system , which allowed for a faster firing cycle of the main guns . + By World War II , the guns used Type 91 armour @-@ piercing , capped shells . Each of these shells weighed 673 @.@ 5 kilograms ( 1 @,@ 485 lb ) and was fired at a muzzle velocity of 770 – 775 metres per second ( 2 @,@ 530 – 2 @,@ 540 ft / s ) . They had a maximum range of 25 @,@ 000 metres ( 27 @,@ 000 yd ) at + 20 degrees of elevation and 35 @,@ 450 meters ( 38 @,@ 770 yd ) at + 43 degrees after modernization . Also available was a 625 @-@ kilogram ( 1 @,@ 378 lb ) high @-@ explosive shell that had a muzzle velocity of 805 metres per second ( 2 @,@ 640 ft / s ) . A special Type 3 Sanshikidan incendiary shrapnel shell was developed in the 1930s for anti @-@ aircraft use . + The ships ' secondary armament consisted of twenty 50 @-@ calibre 14 @-@ centimetre Type 3 . Eighteen of these were mounted in casemates in the forecastle and superstructure and the remaining pair were mounted on the deck above them and protected by gun shields . They had a maximum elevation of + 20 degrees which gave them ranges of 16 @,@ 300 metres ( 17 @,@ 800 yd ) . Each gun had a rate of fire of up to 10 rounds per minute . Anti @-@ aircraft defence was provided by four 40 @-@ calibre 3rd Year Type 8 @-@ centimetre AA guns in single mounts . The 7 @.@ 62 @-@ centimetre ( 3 in ) high @-@ angle guns had a maximum elevation of + 75 degrees , and had a rate of fire of 13 to 20 rounds per minute . They fired a 6 kg ( 13 lb ) projectile with a muzzle velocity of 680 m / s ( 2 @,@ 200 ft / s ) to a maximum height of 7 @,@ 500 metres ( 24 @,@ 600 ft ) . The ships were also fitted with six submerged 53 @.@ 3 @-@ centimetre ( 21 @.@ 0 in ) torpedo tubes , three on each broadside . They carried twelve to eighteen 6th Year Type torpedoes which had a 200 @-@ kilogram ( 440 lb ) warhead . They had three settings for range and speed : 15 @,@ 000 metres ( 16 @,@ 000 yd ) at 26 knots ( 48 km / h ; 30 mph ) , 10 @,@ 000 metres ( 11 @,@ 000 yd ) at 32 knots ( 59 km / h ; 37 mph ) , or 7 @,@ 000 metres ( 7 @,@ 700 yd ) at 37 knots ( 69 km / h ; 43 mph ) . + In 1931 – 33 the AA guns were replaced with eight 40 @-@ caliber 12 @.@ 7 cm ( 5 @.@ 0 in ) Type 89 dual @-@ purpose guns , fitted on both sides of the forward superstructures in four twin @-@ gun mounts . When firing at surface targets , the guns had a range of 14 @,@ 700 metres ( 16 @,@ 100 yd ) ; they had a ceiling of 9 @,@ 440 metres ( 30 @,@ 970 ft ) at their maximum elevation of + 90 degrees . Their maximum rate of fire was 14 rounds a minute , but their sustained rate of fire was around eight rounds per minute . Two twin @-@ gun mounts for license @-@ built Vickers two @-@ pounder light AA guns were also added . These guns had a maximum elevation of + 80 degrees and a rate of fire of 200 rounds per minute . The pair of 14 cm guns on the upper deck were removed at this time . + During the mid @-@ 1930s reconstruction the torpedo tubes were removed and the Vickers two @-@ pounders were replaced by twenty license @-@ built Hotchkiss 25 mm Type 96 light AA guns in 10 twin @-@ gun mounts . This was the standard Japanese light AA gun during World War II , but it suffered from severe design shortcomings that rendered it a largely ineffective weapon . According to historian Mark Stille , the twin and triple mounts " lacked sufficient speed in train or elevation ; the gun sights were unable to handle fast targets ; the gun exhibited excessive vibration ; the magazine was too small , and , finally , the gun produced excessive muzzle blast " . These 25 @-@ millimetre ( 0 @.@ 98 in ) guns had an effective range of 1 @,@ 500 – 3 @,@ 000 metres ( 1 @,@ 600 – 3 @,@ 300 yd ) , and an effective ceiling of 5 @,@ 500 metres ( 18 @,@ 000 ft ) at an elevation of 85 degrees . The maximum effective rate of fire was only between 110 and 120 rounds per minute because of the frequent need to change the fifteen @-@ round magazines . In addition the forward pair of 14 cm guns in the forecastle were removed at this time and the maximum elevation of the remaining guns was increased to + 30 degrees . + + = = = Protection = = = + + The Ise @-@ class ships ' waterline protective belt had a maximum thickness of 299 mm ( 11 @.@ 8 in ) of Vickers cemented armour amidships ; below it was a strake of 100 mm ( 3 @.@ 9 in ) armour . The upper armoured deck consisted of two layers of high @-@ tensile steel 55 mm ( 2 @.@ 2 in ) thick and the lower armoured deck also consisted of two layers of high @-@ tensile steel , but only 30 mm ( 1 @.@ 2 in ) thick . The sides of this deck sloped downwards to meet the bottom of the lower strake of the belt armour . The ends of the belt armour were closed off by bulkheads that ranged in thickness from 203 to 102 mm ( 8 to 4 in ) . The turrets were protected with an armour thickness of 254 mm ( 10 in ) on the face and 76 mm on the roof . The casemate armour was 149 mm ( 5 @.@ 9 in ) thick and that of the barbettes was 299 mm thick rather than the originally planned 305 mm . The sides of the conning tower were 305 mm thick . + The Ise class were the only Japanese battleships to place the powder magazine above the shell magazine as the IJN wished to put as much space as possible between the highly flammable propellant and mine and torpedo detonations . The danger from plunging shells at long distances was not appreciated until the fatal magazine explosions of three British battlecruisers during the 1916 Battle of Jutland graphically demonstrated the point . To further protect the magazines the depth of the double bottom was increased to a total of 3 @.@ 58 metres ( 11 ft 9 in ) underneath the barbettes and magazines . Additionally , the vessels contained 660 watertight compartments to preserve buoyancy in the event of battle damage . In addition to the torpedo bulge added when the ships were modernized , the deck armour over the machinery and magazines was increased to a total thickness of 140 mm . Inside the original skin of the ships , two torpedo bulkheads were also added and the turret roofs were increased to a total of 152 millimetres ( 6 in ) of armour . + + = = = Fire control and sensors = = = + + While the details of the ship 's fire @-@ control instruments are not fully available , it is known that the ships were fitted with a fire @-@ control director after completion . No computer was fitted at that time and data from the rangefinders had to be processed manually . Turrets 2 , 3 , and 5 were built with imported 6 @-@ metre ( 19 ft 8 in ) Bausch & Lomb rangefinders . These were felt to be inferior to the British Barr & Stroud instruments used on other ships and were removed in 1920 . They were replaced by either the British rangefinders or domestically built instruments of 6 or 8 metres ( 19 ft 8 in or 26 ft 3 in ) length . In the late 1920s the fire @-@ control systems were upgraded and additional platforms were added to the foremast to accommodate them . A pair of directors for the 12 @.@ 7 cm AA guns were added , one on each side of the forward superstructure , in the early 1930s . The fire @-@ control systems were again upgraded in the mid @-@ 1930s and directors were added for the 25 mm AA guns . Both ships had 10 @-@ metre ( 32 ft 10 in ) rangefinders installed at the top of the pagoda mast at that time . Type 21 air @-@ search radars were installed aboard the sisters in mid @-@ 1942 . + + = = = Aircraft = = = + + Ise was briefly fitted with an aircraft flying @-@ off platform for a Mitsubishi 1MF3 fighter on Turret No. 2 in 1927 . It was replaced by a platform on Turret No. 5 for a Yokosuka E1Y reconnaissance floatplane in 1928 – 29 . A catapult and a collapsible 4 @-@ tonne ( 3 @.@ 9 @-@ long @-@ ton ) crane were fitted on the stern during the mid @-@ 1930s modernization , and the ships were equipped to operate three floatplanes , although no hangar was provided . The initial Nakajima E4N2 biplanes were replaced by Nakajima E8N2 biplanes in 1938 . + + = = Conversion to hybrid carriers = = + + The sinking of the British capital ships Prince of Wales and Repulse by Japanese land @-@ based aircraft on 10 December 1941 led the IJN to realize that battleships could not operate in the face of enemy aircraft and required friendly air support to protect them . The loss of four Japanese aircraft carriers during the Battle of Midway in June 1942 severely limited the ability of the IJN to provide any air cover and alternatives were sought . Earlier proposals to convert one or more battleships into carriers had been made and rejected at the beginning of the war , but they were revived after Midway . Plans for more elaborate conversions were rejected on the grounds of expense and , most critically , time , and the IJN settled on removing the rear pair of turrets and replacing them with a flight deck equipped with two catapults to launch floatplanes . The Ise @-@ class ships were selected for the conversion because Hyūga had suffered an explosion in Turret No. 5 in early May that virtually destroyed the turret and their Turret No. 6 could not elevate to the full + 43 degrees deemed necessary for the long @-@ range engagement anticipated by the IJN . The Fusōs were scheduled to follow once the first two were completed . + + = = = Armament changes = = = + + The rear turrets , the barbettes and their supporting structures were removed beginning in early 1943 and the openings in the middle deck were covered by 152 mm plates salvaged from the turret armour . All of the 14 cm guns were removed and the casemate openings sealed off . Four additional twin 12 @.@ 7 cm mounts were added , one pair abreast the funnel and the other abreast the conning tower . The original ten twin 25 mm gun mounts were replaced by triple mounts and nine new triple mounts were added , a total of 57 guns . Two each Type 94 and Type 95 AA directors were added to control the additional guns . The ammunition for these new guns was stored in the magazines originally used for the 14 cm guns and for Turret No. 5 . During 1944 , the ships ' AA defences were reinforced with an additional dozen triple and eleven single 25 mm gun mounts , for a total of 104 barrels , and a pair of Type 13 early warning radars were added . In September six 30 @-@ round AA rocket launchers were added on the sides of the flight deck . + + = = = Flight deck arrangements = = = + + A 70 @-@ metre @-@ long ( 229 ft 8 in ) flight deck was built above the stern and stretched forward to the rebuilt aft superstructure . The flight deck was 29 metres ( 95 ft 2 in ) wide at its forward end and 13 metres ( 42 ft 8 in ) at the stern . It overhung the stern and increased the overall length of the ships to 219 @.@ 62 metres ( 720 ft 6 in ) . A pair of rotating gunpowder @-@ propelled catapults were fitted on the sides of the hull , forward of the aft superstructure where they partially restricted the arc of fire of the two amidships turrets . They could launch aircraft up to 4 @,@ 600 kilograms ( 10 @,@ 100 lb ) in weight and required 30 seconds to launch each aircraft . The flight deck had eight permanent storage positions connected by rails to the catapults and the hydraulically operated aircraft lift that brought the aircraft up from the hangar below on the trolleys used to move the floatplanes about . Two aircraft were intended to be stowed on the catapults and three more in temporary positions on the flight deck for a total of thirteen . + The 40 @-@ metre @-@ long ( 131 ft 3 in ) hangar was 20 metres ( 65 ft 7 in ) wide forward and 11 metres ( 36 ft 1 in ) at the rear . It was 6 metres ( 19 ft 8 in ) high and designed to stow nine aircraft . It was fitted with fire fighting foam and carbon dioxide dispensers as a result of wartime experience . The ' T ' -shaped lift was 12 @.@ 1 metres ( 39 ft 8 in ) wide at its forward end and 6 @.@ 6 metres ( 21 ft 8 in ) wide at the its aft end . It was 12 @.@ 1 metres long and had a capacity of 6 tonnes ( 5 @.@ 9 long tons ) . Petrol storage tanks with a capacity of 76 tonnes ( 75 long tons ) were installed in the former magazine of Turret No. 6 to provide each aircraft with enough fuel for three sorties . To recover the aircraft the collapsible crane formerly on the stern was moved up to the port side of the flight deck . Another crane was intended on the starboard side , but it was never fitted . + The ships had an air group of 11 each of Yokosuka D4Y dive bombers ( Allied reporting name " Judy " ) and Aichi E16A reconnaissance aircraft ( Allied reporting name " Paul " ) Both aircraft had development problems and neither air group ever had all of its intended aircraft . Coupled with a shortage of trained pilots , neither ship ever used its aircraft during combat . + + = = = Other changes = = = + + After the loss of the fast battleship Hiei at the Naval Battle of Guadalcanal in late 1942 to rudder damage , the IJN decided to reinforce the protection of the steering compartment and to create an auxiliary steering compartment . The protection of the former was strengthened by the addition of a concrete wall at least 1 metre ( 3 ft 3 in ) in thickness and some of the armour removed from the turrets was used to protect the latter . The double bottom below the former positions of aft turrets was converted to hold fuel oil ; this increased the ships ' endurance to 9 @,@ 500 nautical miles ( 17 @,@ 600 km ; 10 @,@ 900 mi ) at a speed of 16 knots . A pair of Type 22 surface @-@ search radars were also fitted during the conversion . + The removal of the secondary armament , the rear turrets and their supporting structures was generally compensated by the addition of the flight deck , hangar , AA guns and more fuel , and the metacentric height increased .23 metres ( 9 @.@ 1 in ) to 2 @.@ 81 metres ( 9 ft 3 in ) at full load as a result of the reduction in the displacement by over 2 @,@ 000 tonnes ( 2 @,@ 000 long tons ) to 40 @,@ 444 tonnes ( 39 @,@ 805 long tons ) . This also reduced the draught to 9 @.@ 03 metres ( 29 ft 8 in ) . The overhang of the flight deck at the stern increased the overall length to 219 @.@ 62 metres ( 720 ft 6 in ) and the beam was slightly reduced to 31 @.@ 71 metres ( 104 ft 0 in ) . + + = = Ships = = + + + = = Service = = + + Upon commissioning , the sister ships were assigned to the 1st Battleship Division of the 1st Fleet . Hyūga had an explosion in one of her main gun turrets that killed 11 men and injured 25 in 1919 ; the following year she accidentally collided with and sank a schooner , losing two crewmen . Before the start of the Pacific War , both ships frequently exercised off the coasts of the Soviet Union , Korea and China in addition to training in Japanese waters . Ise hosted Edward , Prince of Wales , and his aide @-@ de @-@ camp Lieutenant Louis Mountbatten in 1922 during the prince 's visit to Japan . In Korea Bay when the 1923 Great Kantō earthquake struck , they sailed to Kyushu where they loaded supplies from for the victims on 4 September . Together with two other battleships and a pair of light cruisers , Ise sank the destroyer Yayoi in 1926 during gunnery practice . Ise 's AA armament was upgraded in 1931 and Hyūga 's two years later . The latter ship was modernized in 1934 – 36 and Ise in 1935 – 37 , both at Kure Naval Arsenal . During the Second Sino @-@ Japanese War , the sisters frequently patrolled the Chinese coast in support of the blockade imposed by Japan . In August 1937 Hyūga ferried two battalions of Special Naval Landing Forces to Port Arthur . Three years later , she served as the flagship for the Emperor of the puppet state of Manchukuo , Henry Pu @-@ yi , during his state visit to Japan in June 1940 . On 15 November the ships were transferred to the 2nd Battleship Division of the 1st Fleet . The sisters were refitted in late 1940 in preparation for war , which included the fitting of external degaussing coils and additional AA directors . + + = = = World War II = = = + + When Japan began the Pacific War on 8 December , the sisters sortied for the Bonin Islands with four other battleships and the light carrier Hōshō as distant cover for the fleet attacking Pearl Harbor , and returned six days later . On 11 March 1942 Ise and Hyūga sortied from their anchorage at Hashirajima to join the unsuccessful search for the American carrier force that had attacked Marcus Island a week earlier . Similarly they pursued but did not catch the American carriers that had launched the Doolittle Raid on 18 April . + During gunnery training on 5 May , there was a premature detonation in the left gun of Hyūga 's Turret No. 5 that disabled both guns and killed 51 crewmen . Both aft magazines were flooded to douse the resulting fire and save the ship . She received temporary repairs during which the turret was removed and replaced by a circular armour plate on which three triple 25 mm gun mounts were positioned . On 11 May a valve in Ise 's No. 2 engine room stuck in the open position and flooded the engine room . While under repair at Kure , both ships received prototype Type 21 radars . Commanded by Vice @-@ Admiral Shirō Takasu , the 2nd Battleship Division set sail with the Aleutian Support Group on 28 May , at the same time that most of the Imperial Fleet began an attack on Midway Island ( Operation MI ) . + They returned home on 14 June and the IJN began preliminary planning to replace the lost carriers with hybrid carriers converted from battleships . The sisters were selected for conversion and detached from the division on 14 July in preparation . They remained on " standby alert " until the actual conversions began . Ise was converted at Kure Naval Arsenal from 23 February to 5 September 1943 and Hyūga at Sasebo Naval Arsenal from 2 May to 30 November . + After completing her sea trials , Ise was attached to the Imperial Japanese Naval Academy at Etajima and ferried troops and munitions to the naval base at Truk in October . In November the ship began working up , joined by the newly completed Hyūga the following month , and both rejoined the 2nd Battleship Division . On 1 May 1944 , the sisters were transferred to Rear Admiral Matsuda Chiaki 's reformed Fourth Carrier Division of the 3rd Fleet . The division 's 634th Naval Air Group was formed that same day and conducted its first catapult launches in late June . + + = = = = Battle of Cape Engaño = = = = + + Shortages of aircraft and serviceability problems greatly retarded pilot training and the ships only had a total of 17 D4Ys and 18 E16As on hand on 1 October ; of these , only 6 and 16 were operational , respectively . The Japanese plan for the defence of the Philippines envisioned that the surviving carriers would be used to lure the American carrier forces away from the invasion area to a position where the carriers could be attacked by land @-@ based aircraft and the transports by the rest of the IJN . The other carrier air groups were not in much better shape and the Japanese decided to retain the aircraft ashore for use against the American carriers . The Fourth Carrier Division was assigned to the Northern Force under the command of Vice Admiral Jisaburō Ozawa and the sisters sailed from Yashima on 20 October . On the morning of 24 October , the bulk of the few aircraft aboard were launched to attack the American carriers as a distraction . They inflicted no damage and caused the Americans to search in the direction from which they had attacked . The Americans finally spotted the Japanese carriers at 16 : 40 , some 200 miles ( 320 km ) east of Cape Engaño , the northeastern tip of Luzon . The American carriers were spread out and it was very late in the day to launch an airstrike , so Admiral William Halsey , commander of the Third Fleet decided to mass his carriers in a position to attack the following morning . Ozawa reversed course during the night , correctly believing that the Americans would follow him north . + Although they had lost contact during the night , the Americans did find the Japanese carriers at 07 : 35 . They had already launched an airstrike of 180 aircraft that was orbiting 50 miles ( 80 km ) ahead of the American carriers while waiting for the Japanese ships to be located . This was just the first of a total of five airstrikes that the Americans launched that day . The sisters were not heavily engaged by the early airstrikes which are focusing on the group 's aircraft carriers . Ise claimed to have shot down five attacking dive bombers from the second wave and one small bomb detonated on Turret No. 2 . Hyūga was lightly damaged by near misses that rupture some hull plating in her bulge and pepper her superstructure with splinters . She took on a 5 @-@ degree list that was quickly corrected before she was ordered to tow the crippled carrier Chiyoda to safety . Her attempt was unsuccessful and Chiyoda had to be abandoned to her fate . + Ise was attacked by 80 @-@ odd aircraft from the fourth wave , but they failed to inflict any serious damage . She dodged 11 torpedoes and was only hit by a bomb once , on the bulge outboard of the port catapult . Some 34 other bombs near missed her , spraying her with splinters and ruptured some hull plates that contaminated some fuel oil and caused leaks in her port boiler rooms . While an exact total of her casualties is not available , it has been estimated that 5 men were killed and some 111 – 121 crewmen were wounded during this attack . Hyūga was unsuccessfully attacked by an American submarine at 18 : 43 . Around 19 : 00 Ozawa learned about a force of destroyers and cruisers that drove off the Japanese destroyers rescuing survivors from some of the carriers lost earlier in the day and sank Chiyoda . He ordered the Fourth Carrier Division to reverse course and engage the Americans , but the battleships were unable to find them , and Ozawa ordered them to reverse course and head for Amami Ōshima . When they arrived on 27 October , Ozawa transferred to Hyūga and hoisted his flag aboard her . While en route for Kure , the division was unsuccessfully attacked by another submarine . + In early November the catapults were removed from both ships , and they loaded troops and munitions later that month . While en route they were diverted to the Spratly Islands upon reports of heavy air raids at Manila . After off @-@ loading their cargo , they sailed for Lingga Island , near Singapore , on 20 November . They transferred to Cam Ranh Bay , French Indochina and Hyūga became flagship of the 5th Fleet there on 14 December . The division sailed for Singapore on 30 December and Vice Admiral Kiyohide Shima transferred his flag to the light cruiser Ōyodo on arrival there the following day . The division continued onwards to Lingga . Its planned return to Japan was delayed by attacks by the American Third Fleet on targets in Indochina and southern China that sank two oil tankers that were intended to refuel the division . + The IJN then decided to use the sisters and their escorts to bring a load of petrol , rubber , tin and other strategic minerals back to Japan after the American carriers departed the South China Sea ( Operation Kita ) . They loaded their cargoes beginning on 6 February at Singapore and departed four days later . Also carrying some 1 @,@ 150 oilfield workers , they were escorted by Ōyodo and three destroyers . Decrypted Japanese radio signals revealed the Japanese plan to the Allies , and 15 submarines were positioned along their anticipated route in an attempt to intercept and sink the ships . An additional 11 were moved into position while the group was en route , but only three were ultimately able to attack . None of them were successful before the Japanese reached Kure on 20 February . The Fourth Carrier Division was disbanded on 1 March and the sisters were reduced to 1st rank reserve ships . On 19 March Kure was attacked by aircraft from Task Force 58 and Hyūga was hit three times by bombs that killed 37 men and wounded 52 . Her gunners claimed to have shot down one American dive bomber during the attack . Ise was hit twice during the attack , but her casualties , if any , are unknown . + The ships were turned into floating AA batteries over the next several months although it availed them little when they were attacked again by American carrier aircraft in July . On the 24th Ise was struck by five bombs and near missed multiple times ; all told she lost 50 crewmen killed and many others wounded . The bombs started numerous leaks and Ise began to settle by the bow , although she was returned to an even keel after three @-@ days pumping . Hyūga was a primary focus of the attack and she received 10 direct hits and up to 30 near misses . She was badly damaged with some 200 @-@ odd crewmen killed and 600 wounded during the attack . She slowly foundered over the next two days and was not attacked when the Americans returned four days later . This time it was Ise 's turn and she was struck 11 or more times with many near misses that put her on the bottom in shallow water with a 15 degree list . The sisters were struck off the Navy List in November and their wrecks were scrapped after the war . + + + = Dick Rifenburg = + + Richard Gale " Dick " Rifenburg ( August 21 , 1926 – December 5 , 1994 ) was an American football player and a pioneering television broadcaster for the forerunner to WIVB @-@ TV in Buffalo . He played college football for the University of Michigan Wolverines in 1944 and from 1946 to 1948 . He was a consensus selection at end on the 1948 College Football All @-@ America Team . Rifenburg played professionally in the National Football League ( NFL ) with the Detroit Lions for one season in 1950 . After retiring from football he settled in Buffalo and became a sports broadcaster . He worked as a color commentator and as a play @-@ by @-@ play announcer for the Buffalo Bulls . He hosted various television and radio sports shows and was eventually inducted into the Buffalo Broadcasters Hall of Fame . + In college , he led the Big Ten Conference in single season receptions during his senior year and set Michigan Wolverines receptions records for both career touchdown and single @-@ season touchdowns . He had also been a Michigan High School Athletic Association ( MHSAA ) state champion in both basketball and track and field . His college career was interrupted by World War II service , and his high school career was also affected by the war due to the MHSAA 's cancellation of state championships in all sports in 1943 . + + = = High school = = + + Rifenburg was born in Petoskey , Michigan , and raised in Kalamazoo , Michigan before his family moved to Saginaw , Michigan . Rifenburg was a star athlete at Saginaw 's Arthur Hill High School in football , basketball , and track and field . In 1943 , Michigan canceled boys high school tournaments in all sports due to World War II , and they did not return until the fall of 1944 . In 1944 , he led Arthur Hill High to the MHSAA Class A high school basketball championship ( over Kalamazoo Central High School ) , scoring 24 points , including 17 in the second half , of the championship game . Rifenburg was also the state champion in 1944 in both the shot put 46 feet 11 inches ( 14 @.@ 30 m ) and high jump 5 feet 8 @.@ 5 inches ( 1 @.@ 74 m ) . He also led Arthur Hill in football , and his high school accomplishments are featured in Glory : The history of Saginaw County sports by Jack Tany ( ASIN B0006RH9Z6 ) , which is a book on high school sports in Saginaw County , Michigan . Rifenburg was named All State in football , basketball and track . + It is ironic that Rifenburg was born in Petoskey , Michigan in 1926 for several reasons . Ted Petoskey preceded Rifenburg as an All @-@ American end on the University of Michigan football team . Petoskey had excelled as a representative of Saginaw County in MHSAA competition . Petoskey posted significant football accomplishments in 1926 making 1926 a significant year for himself as well . Achieving All @-@ American status as an end at Michigan would be Rifenburg 's next step after excelling in MHSAA competition . + + = = College = = + + In the fall of 1944 , Rifenburg enrolled at the University of Michigan . The United Press syndicate ran a feature article about Rifenburg in September 1944 that opened as follows : " Another great end has made his appearance on the Big Ten football horizon in the person of Dick Rifenburg , 18 @-@ year @-@ old Michigan freshman . Every so often a great offensive end comes along , a player who has to learn how to play defense , but who has the natural speed , smooth actions , height and big hands that is the mark of an outstanding pass receiver . Rifenburg has laid claim to that rating . A loose @-@ limbed 180 @-@ pound freshman from Saginaw , Mich . , Rifenberg is being boomed as the Big Ten 's next ' freshman sensation . ' " As a freshman , he caught two touchdown passes in his first college football game against Iowa . In an article titled " Teens and TNT , " Time reported on Rifenburg 's performance : " Of the few teams already in action , Michigan 's teens rang the freshman bell loudest last week by winning their opener , 12 -to @-@ 7 , against the strong Iowa Seahawks ( Naval Pre @-@ Flight ) ; 6 @-@ ft . 4 Freshman End Dick Rifenburg caught passes and ran for both Michigan touchdowns . " + Rifenburg 's college career was interrupted by World War II service in the United States Navy , but after missing the 1945 season , he returned to play for the Wolverines from 1946 to 1948 . Rifenburg played for the Wolverines in consecutive undefeated National Championship seasons in 1947 and 1948 . He started nine games for the 1947 team . The 1947 team referred to as " Michigan 's Mad Magicians " is considered to be the greatest University of Michigan football team of all time . Rifenberg and teammate Len Ford had the reputation as the team practical jokers . During the 1947 game against Wisconsin , Rifenburg started calling signals for the Badgers . Wisconsin 's offense protested to officials , who " prowled the Wolverines secondary but never caught their man . " Rifenburg continued to scramble Badger signals , as Rifenburg 's teammates laughed at his scheme . In the January 1 , 1948 Rose Bowl that season , Michigan rolled to a 49 – 0 victory over USC , and they outgained the Trojans 491 yards to 133 . Rifenburg caught a 29 @-@ yard pass for the game 's final score . + In the 1948 championship season , Rifenburg scored eight touchdowns , caught 22 passes , and gained 610 yards ( 508 receiving and 102 rushing ) . Rifenburg was the second highest scoring end in the nation in 1948 , and he was a consensus All @-@ American as a senior , being selected as first team on nine of the 11 All @-@ American teams . Rifenburg led the Big Ten in receptions . + Although Rifenburg finished fourth among midwestern Heisman voters in 1948 , he did not finish among the top eight . By comparison , Notre Dame end Leon Hart won the Heisman Trophy in 1949 but made only eight of the 11 All @-@ American teams . It is not clear why Rifenburg did not finish higher . However , it is fairly clear that sportswriters of that era had a bias against Michigan . In the Associated Press poll at the end of the 1947 season , the Notre Dame Fighting Irish were ranked ahead of the University of Michigan , though both teams were undefeated . Some noted that every Southern AP voter had voted for Notre Dame , which had yet to integrate , whereas three of Michigan 's star players ( Bob Mann , Gene Derricotte , and Len Ford ) were African @-@ American . The Southern schools refused even to schedule games against schools that played African @-@ American players . + Rifenburg was considered one of the greatest Wolverine 's of the 1940s . In four seasons with the Michigan Wolverines , Rifenburg played in 32 games and had over 1 @,@ 000 yards of total offense . Rifenburg held the University of Michigan 's single season and career record for touchdown receptions ( eight in a season ; sixteen career ) until his records were broken by Anthony Carter in 1980 . + + = = Professional career = = + + In 1948 , Rifenburg was drafted by the Philadelphia Eagles in the 15th round of the NFL draft , and he was also drafted by the New York Yankees of the All @-@ America Football Conference . He had intended to play in 1949 with the Yankees , but suffered a knee injury in a practice session for the August 1949 Chicago College All @-@ Star Game . Press accounts at the time noted that the injury " will probably keep him out of pro football all season , if not forever . " The incident led to a debate as to whether NFL owners should " bar their men from playing with the college all @-@ stars . " + Rifenburg landed a job at WJR radio in Detroit , but he left his sportscaster 's job to join the Detroit Lions . In the 1950 NFL season , Rifenburg came back from his injury to play for the Detroit Lions . He played in 12 games and had ten receptions for 96 yards and one touchdown for the 1950 Lions . Rifenburg recalled that his playing time with the Lions was limited because the Lions also signed 1949 Heisman Trophy winner Leon Hart , who played the same position . + In May 1951 , he announced he was retiring from professional football to become sports director at a radio station in Buffalo . He was hired as a sportscaster by WBEN ( now known as WIVB ) , which had just started the first television station in Buffalo and the only one serving Southern Ontario . This was an early foray into television by the Buffalo Evening News . In the 1950s , Rifenburg hosted a popular panel show called " Let 's Talk Sports " in Buffalo and also pioneered an early morning exercise program . He also worked for WBEN ( AM ) and WBEN ( FM ) and as the sideline announcer for Buffalo Bills games along with Van Miller , the long time Bills play @-@ by @-@ play announcer . In addition , he served as the play @-@ by @-@ play announcer for the University of Buffalo Bulls football team . As a radio broadcaster , he is remembered for things ranging from ski reports , to 17 years worth of " Breakfast At — " programs live from various local restaurants , to 27 years as the WBEN @-@ AM All Night Show host . + After 30 years with WBEN and a change in ownership for the station , his show was replaced with the Mutual Network 's The Larry King Show . In the 1980s , Rifenburg taught communications at Buffalo 's Medaille College and served as a disc jockey on Public Broadcasting 's radio station WEBR ( now WDCZ ) . He also sold ads for Buffalo Evening News competitor , Buffalo Courier @-@ Express . Rifenburg 's final employer was Erie County , who hired him as an inmate training supervisor at the Erie County Correctional Facility . + Rifenburg was posthumously inducted into the Buffalo Broadcasters Hall of Fame in September 2007 . He was given the Golden Age Award which is reserved for " those who did it first , the people who had no pattern to follow . " The Hall of Fame award was presented to Rifenburg 's wife , Jane . In her acceptance speech , Jane Rifenburg observed that despite all of her late husband 's achievements , there was one thing he had never received : " He had a great career , but he never had a trophy . And now he has . " + + = = Family = = + + Rifenburg lived 37 of his years in Buffalo . His wife , the former Jane Morris , was the head of the Buffalo Jills cheerleaders when they met . Rifenburg , who was survived by three sons , ( Douglas A. , Gary R. , and Bruce R. ) one daughter ( Wendy J. Colf ) and two grandchildren , died in Cheektowaga , New York in December 1994 ; he was 68 years old . Doug was a 1988 first team football All @-@ Western New York linebacker for Clarence High School . + + + = 1933 Treasure Coast hurricane = + + The 1933 Treasure Coast hurricane was the second @-@ most intense tropical cyclone to strike the United States during the active 1933 Atlantic hurricane season . The eleventh tropical storm , fifth hurricane , and the third major hurricane of the season , it formed east @-@ northeast of the Leeward Islands on August 31 . The tropical storm moved rapidly west @-@ northwestward , steadily intensifying to a hurricane . It acquired peak winds of 140 miles per hour ( 225 km / h ) and passed over portions of the Bahamas on September 3 , including Eleuthera and Harbour Island , causing severe damage to crops , buildings , and infrastructure . Winds over 100 mph ( 161 km / h ) affected many islands in its path , especially those that encountered its center , and many wharves were ruined . + Subsequently , it weakened and made landfall at Jupiter , Florida , early on September 4 with winds of 125 mph ( 201 km / h ) . The hurricane moved across the state , passing near Tampa before moving into Georgia and dissipating . In Florida , the strong winds of the cyclone blew buildings off their foundations , and numerous trees were prostrated in citrus groves . The Treasure Coast region received the most extensive destruction , and Stuart , Jupiter , and Fort Pierce were heavily damaged . Inland , the cyclone weakened rapidly but produced prodigious amounts of rain , causing a dam to collapse near Tampa . The storm caused $ 3 million in damage ( 1933 USD ) after damaging or destroying 6 @,@ 848 homes . + Unusually , the storm hit Florida less than 24 hours before another major hurricane bearing 125 @-@ mile @-@ per @-@ hour ( 201 km / h ) winds struck South Texas ; never have two major cyclones hit the United States in such close succession . + + = = Meteorological history = = + + The origins of the hurricane were from a tropical wave that possibly spawned a tropical depression on August 27 , although there was minimal data over the next few days as it tracked to the west @-@ northwest . On August 31 , a nearby ship reported gale force winds , which indicated that a tropical storm had developed to the east @-@ northeast of the Lesser Antilles . Based on continuity , it is estimated the storm attained hurricane status later that day . Moving quickly to the west @-@ northwest , the storm passed north of the Lesser Antilles and Puerto Rico . Early on September 2 , a ship called the Gulfwing reported a barometric pressure of 978 mbar ( 28 @.@ 88 inHg ) , which confirmed that the storm attained hurricane status . After passing north of the Turks and Caicos islands , the hurricane struck Eleuthera and Harbour Island in the Bahamas on September 3 , the latter at 1100 UTC . A station on the latter island reported a pressure of 27 @.@ 90 inHg ( 945 mb ) during the 30 minute passage of the eye . Based on the pressure and the small size of the storm , it is estimated the hurricane struck Harbour Island with peak winds of 140 mph ( 225 km / h ) , making it the equivalent of a modern Category 4 hurricane on the Saffir @-@ Simpson scale . Interpolation suggested that the storm reached major hurricane status , or Category 3 status , on September 2 . + The hurricane initially followed the course of another hurricane that passed through the area in late August , which ultimately struck Cuba and Texas . This hurricane instead maintained a general west @-@ northwest track . After moving through the northern Bahamas , the hurricane weakened slightly before making landfall at Jupiter , Florida , at 0500 UTC on September 4 . A station there reported a pressure of 27 @.@ 98 inHg ( 948 mb ) during a 40 minute period of the eye 's passage ; this suggested a landfall strength of 125 mph ( 201 km / h ) . At the time , the radius of maximum winds was 15 mi ( 24 km ) , which was smaller than average . After landfall , the hurricane weakened rapidly while crossing the state . It briefly emerged into the Gulf of Mexico as a tropical storm early on September 5 . A few hours later while continuing to the northwest , it made another landfall near Rosewood — a ghost town in Levy County , east of Cedar Key — with winds of about 65 mph ( 105 km / h ) . Turning to the north , the storm slowly weakened as it crossed into Georgia , dissipating on September 7 near Augusta . + + = = Preparations and impact = = + + On September 2 , a fleet of eight aircraft evacuated all white residents from West End , Grand Bahama , to Daytona Beach , Florida . While the storm was near peak intensity on September 3 , the Weather Bureau issued hurricane warnings from Miami to Melbourne , Florida , with storm warnings extending northward to Jacksonville . Later that day , storm warnings , were issued from Key West to Cedar Key . About 2 @,@ 500 people evacuated by train from areas around Lake Okeechobee . By evening on September 3 , high tides sent sea spray over coastal seawalls in Palm Beach County as residents boarded up buildings ; structures on Clematis Street in West Palm Beach were said to be a " solid front " of plywood . Along the coast , observers reported very rough seas as the eye neared land . + The powerful hurricane moved over or near several islands in the Bahamas . Winds on Spanish Wells and Harbour Island were both estimated at around 140 mph ( 225 km / h ) . Winds reached 110 mph ( 177 km / h ) at Governor 's Harbour , 100 mph ( 161 km / h ) on Eleuthera , and 120 mph ( 193 km / h ) on the Abaco Islands . The storm was farther away from Nassau , where winds reached 61 mph ( 98 km / h ) . The hurricane damaged a lumber mill on Abaco , washing away a dock . Heavy damage occurred on Harbour Island , including to several roofs , the walls of government buildings , and the water system . The hurricane destroyed four churches and 37 houses , leaving 100 people homeless . A 1 @.@ 5 mi ( 2 @.@ 4 km ) road on Eleuthera was destroyed . Several islands sustained damage to farms , including the total loss of various fruit trees on Russell Island . Despite Category 4 winds on Spanish Wells , only five houses were destroyed , although most of the remaining dwellings lost their roofs . Collectively between North Point , James Cistern , and Gregory Town on Eleuthera , the storm destroyed 55 houses and damaged many others . On Grand Bahama , where a 9 to 12 ft ( 2 @.@ 7 to 3 @.@ 7 m ) storm surge was reported , half of the houses were destroyed , as were 13 boats and two planes , and most docks were wrecked . + When the storm moved ashore in Florida , winds reached an estimated 125 mph ( 201 km / h ) in Jupiter ; these occurred after the eye passed . In West Palm Beach , anemometers measured at least 80 @-@ mile @-@ per @-@ hour ( 129 km / h ) winds with gusts to 100 mph ( 161 km / h ) ; barometers ranged from 28 @.@ 64 to 28 @.@ 78 inHg ( 970 to 975 mb ) . The storm produced the strongest winds in the city since the 1928 Okeechobee hurricane . Winds were not as strong farther from the center ; 40 to 45 mph ( 64 to 72 km / h ) winds were observed in Miami to the south , Titusville to the north , and Tampa on the west coast . Fort Pierce estimated peak winds of 80 to 90 mph ( 129 to 145 km / h ) , and pressures dipped to 29 @.@ 14 inHg ( 987 mb ) . Inland , winds near Lake Okeechobee peaked at only 60 mph ( 97 km / h ) . The hurricane dropped heavy rainfall along its path , peaking at 17 @.@ 8 in ( 450 mm ) in Clermont . + At West Palm Beach , the majority of the damage was confined to vegetation . Several coconut and royal palms that withstood the 1928 hurricane snapped , littering streets with broken trunks . Winds downed road signs on many streets , and floodwaters covered the greens on a local golf course . Some garages and isolated structures , mostly lightweight , were partly or totally destroyed , along with a lumber warehouse . Some homes that lost roofing shingles had water damage to their interiors as well . Nearby Lake Worth sustained extensive breakage of windows , including plate glass , and loss of tile and shingle roofing , but preparations reduced losses to just several thousand dollars , and no post @-@ storm accidents took place . Strong winds snapped many light poles in the city , and trees and shrubs were broken or uprooted . As in Lake Worth , officials in West Palm Beach credited preparations and stringent building codes with reducing overall damage . The city had learned from previous experience with severe storms in 1926 , 1928 , and 1929 . High tides eroded Ocean Boulevard at several spots and disrupted access to several bridges on the Lake Worth Lagoon . Winter estates and hotels on Palm Beach generally sustained little material damage , except to vegetation , and county properties went largely unscathed . + In Martin and St. Lucie counties , the storm was considered among the worst on record . The storm leveled some homes and swept many others off their foundations . At Stuart , winds removed or badly damaged 75 % of the roofs in town . The storm destroyed the third floor of the building that housed a bowling alley and the Stuart News , a local newspaper . At Olympia , an abandoned settlement also known as Olympia Beach , strong winds leveled the old Olympia Inn , a gas station , and the second floor of a pharmaceutical building . Winds also tore the roof off an ice plant . A bridge leading to the barrier island from Olympia was partly wrecked ; the bridge tender survived by gripping the railing during the storm . Winds leveled his nearby home . According to the Monthly Weather Review , some of the most severe damage from the storm in Florida was at Olympia . The storm left many homes in Hobe Sound uninhabitable , forcing crews to tear them down . Winter estates on the island , however , were better built and little damaged . While Stuart and Hobe Sound sustained significant damage , Port Salerno suffered minimally . In Stuart , the storm left 400 to 500 people homeless , up to nearly 10 % of the population , which was 5 @,@ 100 at the time . Between Jupiter and Fort Pierce , the storm knocked down power and telegraph lines . In the latter city , high waves washed out a portion of the causeway . In the 1980s , an elderly resident recalled that the storm was the most severe on record in Fort Pierce . + Crop damage was worst along the Indian River Lagoon ; several farms in Stuart experienced total losses , and statewide , 16 % of the citrus crop , or 4 million boxes , were destroyed . Many chicken coops in Stuart were destroyed , and the local chicken population was scattered and dispersed as far as Indiantown . Across southeastern Florida , the hurricane damaged 6 @,@ 465 houses and destroyed another 383 , causing over $ 3 million in damage . One person , an African American farm worker , was killed when his shack blew down in Gomez , a brakeman died after seven railcars derailed , and a child was killed by airborne debris . + High rainfall caused flooding across Florida , notably near Tampa where waters reached 9 ft ( 2 @.@ 7 m ) deep . High rainfall of over 7 in ( 180 mm ) caused a dam operated by Tampa Electric Co. to break 3 mi ( 4 @.@ 8 km ) northeast of Tampa along the Hillsborough River . The break resulted in severe local damage , flooding portions of Sulphur Springs . Workers attempted to save the dam with sandbags , and after the break , most residents in the area were warned of the approaching flood . Over 50 homes were flooded , forcing about 150 people to evacuate . Outside Florida , the storm produced winds of 48 and 51 mph ( 78 and 81 km / h ) in Savannah , Georgia and Charleston , South Carolina , respectively . In the latter city , the storm spawned a tornado , which caused about $ 10 @,@ 000 in property damage . Heavy rainfall occurred along the Georgia and South Carolina coasts , reaching over 12 in ( 300 mm ) . Light rainfall also extended into North Carolina . + + = = Aftermath = = + + In the Bahamas after the storm , a boat sailed from Nassau to deliver food and building materials to Eleuthera . + After the storm , the National Guard offered shelters for at least 400 homeless residents in Stuart . Of the 7 @,@ 900 families adversely affected by the hurricane , 4 @,@ 325 required assistance from the American Red Cross . Farmers in Texas , also affected by a major hurricane , requested growers in Florida wait 15 days so they could sell their citrus crop that fell . The damaged dam near Tampa initially resulted in waters from the Hillsborough River being pumped into the city 's water treatment plant , and a new dam was eventually built in 1944 . + + + = Second Battle of Naktong Bulge = + + The Second Battle of Naktong Bulge was an engagement between United Nations ( UN ) and North Korean ( NK ) forces early in the Korean War from September 1 to September 15 , 1950 , along the Naktong River in South Korea . It was a part of the Battle of Pusan Perimeter , and was one of several large engagements fought simultaneously . The battle ended in a victory for the United Nations after large numbers of United States ( US ) and Republic of Korea ( ROK ) troops repelled a strong North Korean attack . + After the First Battle of Naktong Bulge , the US Army 's 2nd Infantry Division was moved to defend the Naktong River line . The division , which was untried in combat , was struck with a strong attack by several divisions of the Korean People 's Army which crossed the river and struck all along the division 's line . The force of the attack split the US 2nd Infantry Division in half , and the North Koreans were able to penetrate to Yongsan , promoting a fight there . + The urgency of the threat to Pusan Perimeter prompted the US Marine Corps 1st Provisional Marine Brigade to be brought in to reinforce the US Army troops . In two weeks of heavy fighting , the US forces were able to force the North Koreans out of the Naktong Bulge region . The North Koreans were further repulsed after the UN counterattack at Inchon , which culminated in the virtual destruction of the North Korean army . + + = = Background = = + + + = = = Pusan Perimeter = = = + + From the outbreak of the Korean War and the invasion of South Korea by the North , the North Korean People 's Army had enjoyed superiority in both manpower and equipment over both the Republic of Korea Army and the United Nations forces dispatched to South Korea to prevent it from collapsing . The North Korean strategy was to aggressively pursue UN and ROK forces on all avenues of approach south and to engage them aggressively , attacking from the front and initiating a double envelopment of both flanks of the unit , which allowed the North Koreans to surround and cut off the opposing force , which would then be forced to retreat in disarray , often leaving behind much of its equipment . From their initial June 25 offensive to fights in July and early August , the North Koreans used this strategy to effectively defeat any UN force and push it south . However , when the UN forces , under the Eighth United States Army , established the Pusan Perimeter in August , the UN troops held a continuous line along the peninsula which North Korean troops could not flank , and their advantages in numbers decreased daily as the superior UN logistical system brought in more troops and supplies to the UN army . + When the North Koreans approached the Pusan Perimeter on August 5 , they attempted the same frontal assault technique on the four main avenues of approach into the perimeter . Throughout August , the NK 6th Division , and later the NK 7th Division engaged the US 25th Infantry Division at the Battle of Masan , initially repelling a UN counteroffensive before countering with battles at Komam @-@ ni and Battle Mountain . These attacks stalled as UN forces , well equipped and with plenty of reserves , repeatedly repelled North Korean attacks . North of Masan , the NK 4th Division and the US 24th Infantry Division sparred in the Naktong Bulge area . In the First Battle of Naktong Bulge , the North Korean division was unable to hold its bridgehead across the river as large numbers of US reserve forces were brought in to repel it , and on August 19 , the NK 4th Division was forced back across the river with 50 percent casualties . In the Taegu region , five North Korean divisions were repulsed by three UN divisions in several attempts to attack the city during the Battle of Taegu . Particularly heavy fighting took place at the Battle of the Bowling Alley where the NK 13th Division was almost completely destroyed in the attack . On the east coast , three more North Korean divisions were repulsed by the South Koreans at P 'ohang @-@ dong during the Battle of P 'ohang @-@ dong . All along the front , the North Korean troops were reeling from these defeats , the first time in the war their strategies were not working . + + = = = September push = = = + + In planning its new offensive , the North Korean command decided any attempt to flank the UN force was impossible thanks to the support of the UN navy . Instead , they opted to use frontal attack to breach the perimeter and collapse it as the only hope of achieving success in the battle . Fed by intelligence from the Soviet Union the North Koreans were aware the UN forces were building up along the Pusan Perimeter and that it must conduct an offensive soon or it could not win the battle . A secondary objective was to surround Taegu and destroy the UN and ROK units in that city . As part of this mission , the North Korean units would first cut the supply lines to Taegu . + On August 20 , the North Korean commands distributed operations orders to their subordinate units . The North Koreans called for a simultaneous five @-@ prong attack against the UN lines . These attacks would overwhelm the UN defenders and allow the North Koreans to break through the lines in at least one place to force the UN forces back . Five battle groupings were ordered . The center attack called for the NK 9th Division , NK 4th Division , NK 2nd Division , and NK 10th Division break through the US 2nd Infantry Division at the Naktong Bulge to Miryang and Yongsan . + + = = Battle = = + + During the North Koreans ' September 1 offensive , the US 25th Infantry Division 's US 35th Infantry Regiment was heavily engaged in the Battle of Nam River north of Masan . On the 35th Regiment 's right flank , just north of the confluence of the Nam River and the Naktong River , was the US 9th Infantry Regiment , US 2nd Infantry Division . There , in the southernmost part of the 2nd Infantry Division zone , the 9th Infantry Regiment held a sector more than 20 @,@ 000 yards ( 18 @,@ 000 m ) long , including the bulge area of the Naktong where the First Battle of Naktong Bulge had taken place earlier in August . Each US infantry company on the river line here had a front of 3 @,@ 000 feet ( 910 m ) to 4 @,@ 000 feet ( 1 @,@ 200 m ) and they held only key hills and observation points , as the units were extremely spread out along the wide front . + During the last week of August , US troops on these hills could see minor North Korean activity across the river , which they thought was North Koreans organizing the high ground on the west side of the Naktong against a possible American attack . There were occasional attacks on the 9th Infantry 's forward positions , but to the men in the front lines this appeared to be only a standard patrol action . On August 31 , the UN forces were alerted to a pending attack when much of the Korean civilian labor force fled the front lines . Intelligence officers reported an attack was coming . + On the west side of the Naktong , North Korean Major General Pak Kyo Sam , commanding the NK 9th Division , issued his operations order to the division on August 28 . Its mission in the forthcoming attack was to outflank and destroy the US troops at Naktong Bulge by capturing the Miryang and Samnangjin areas to cut off the US 2nd Division 's route of supply and withdrawal between Taegu and Pusan . However , the North Koreans weren 't aware that the US 2nd Infantry Division had recently replaced the US 24th Infantry Division in positions along the Naktong River . Consequently , they expected lighter resistance ; the 24th troops were exhausted from months of fighting but the 2nd Division men were fresh and newly arrived in Korea . They had only recently been moved into the line . The North Koreans began crossing the Naktong River under cover of darkness at certain points . + + = = = Battle of Agok = = = + + On the southern @-@ most flank of the 9th Infantry river line , just above the junction of the Nam River with the Naktong , A Company of the 1st Battalion was dug in on a long finger ridge paralleling the Naktong that terminates in Hill 94 at the Kihang ferry site . The river road from Namji @-@ ri running west along the Naktong passes the southern tip of this ridge and crosses to the west side of the river at the ferry . A small village called Agok lay at the base of Hill 94 and 300 yards ( 270 m ) from the river . A patrol of tanks and armored vehicles , together with two infantry squads of A Company , 9th Infantry , held a roadblock near the ferry and close to Agok . On the evening of August 31 , A Company moved from its ridge positions overlooking Agok and the river to new positions along the river below the ridge line . + That evening Sergeant Ernest R. Kouma led the patrol of two M26 Pershing tanks and two M19 Gun Motor Carriages in Agok . Kouma placed his patrol on the west side of Agok near the Kihang ferry . At 20 : 00 a heavy fog covered the river , and at 22 : 00 mortar shells began falling on the American @-@ held side of the river . By 22 : 15 this strike intensified and North Korean mortar preparation struck A Company 's positions . American mortars and artillery began firing counterbattery . Some of the A Company men reported they heard noises on the opposite side of the river and splashes in the water . + At 22 : 30 the fog lifted and Kouma saw that a North Korean pontoon bridge was being laid across the river directly in front of his position . Kouma 's four vehicles attacked this structure , and after about a minute of heavy fire the bridge collapsed , and the ponton boats used to hold the bridge in place were sunk . At 23 : 00 a small arms fight flared around the left side of A Company north of the tanks . This gunfire had lasted only two or three minutes when the A Company roadblock squads near the tanks received word by field telephone that the company was withdrawing to the original ridge positions and that they should do likewise . + Kouma 's patrol was then ambushed by a group of North Koreans dressed in US military uniforms . Kouma was wounded and the other three vehicles had to withdraw , but he held the Agok site until 07 : 30 the next morning with his single tank . In the attack against A Company , the North Koreans hit the 1st Platoon , which was near Agok , but they did not find the 2nd Platoon northward . + The NK 9th Division 's infantry crossing of the Naktong and attack on its east side near midnight quickly overran the positions of C Company , north of A Company . There the North Koreans assaulted in force , signaled by green flares and blowing of whistles . The company held its positions only a short time and then attempted to escape . Many of the men moved south , a few of them coming into A Company 's ridge line positions near Agok during the night . Most of C Company moved all the way to the 25th Division positions south of the Naktong . On September 1 that division reported that 110 men of C Company had come into its lines . + + = = = North Korean crossing = = = + + Meanwhile , 5 miles ( 8 @.@ 0 km ) north of Agok and A Company 's position , B Company , 9th Infantry , held a similar position on Hill 209 overlooking the Paekchin ferry crossing of the river . This ferry was located at the middle of the Naktong Bulge where the Yongsan road came down to the Naktong and crossed it . The US 2nd Infantry Division had planned a reconnaissance mission to start from there the night of August 31 , the same night that the NK I Corps offensive rolled across the river . + Near the end of the month two reconnaissance patrols from the 9th Infantry had crossed to the west side of the Naktong and observed North Korean tank and troop activity 2 miles ( 3 @.@ 2 km ) west of the river . Information obtained later indicated it was in fact the command post of the NK 9th Division . On August 25 , 9th Infantry commander Colonel John G. Hill outlined projected " Operation Manchu , " which was to be a company @-@ sized combat patrol to cross the river , advance to the suspected North Korean command post and communications center , destroy it , capture prisoners , and collect intelligence . + The 9th Infantry Regiment had planned Task Force Manchu on orders from the 2nd Division commander Major General Laurence B. Keiser , which in turn had received instructions from Eighth United States Army commander Lieutenant General Walton Walker for aggressive patrolling . Keiser decided the patrol should cross the river at the Paekchin ferry . The 9th Infantry reserve , E Company , reinforced with one section of light machine guns from H Company , was to be the attack force . The 1st Platoon , 2nd Engineer Combat Battalion , was to transport it across the river in assault boats the night of August 31 . Two heavy weapons companies , D and H , were each to furnish one section of heavy machine guns , one section of 81 @-@ mm. mortars , and one section of 75 @-@ mm. recoilless rifles for supporting fires . A platoon of 4 @.@ 2 @-@ inch mortars was also to give support . + After dark on August 31 , First Lieutenant Charles I. Caldwell of D Company and First Lieutenant Edward Schmitt of H Company , 9th Infantry , moved their men and weapons to the base of Hill 209 , which was within B Company 's defense sector and overlooked the Paekchin ferry crossing of the Naktong River . The raiding force , E Company , was still in its regimental reserve position about 2 miles ( 3 @.@ 2 km ) west of Yongsan , getting ready with the engineer platoon to move to the crossing site . Colonel Hill went forward in the evening with the 4 @.@ 2 @-@ inch mortar platoon to its position at the base of Hill 209 where the mortarmen prepared to set up their weapons . + By 21 : 00 , the closest front line unit was B Company on top of Hill 209 , 1 mile ( 1 @.@ 6 km ) north of the river road which curved around the hill 's southern base . The regimental chaplain , Captain Lewis B. Sheen , had gone forward in the afternoon to B Company to hold services . On top of Hill 209 , Chaplain Sheen and men in B Company after dark heard splashing in the water below them . They soon discovered a long line of North Korean soldiers wading the river . + The first North Korean crossing at the Paekchin ferry caught the Heavy Mortar Platoon unprepared in the act of setting up its weapons . It also caught most of the D and H Company men at the base of Hill 209 , .5 miles ( 0 @.@ 80 km ) from the crossing site . The North Koreans killed or captured many of the troops there . Hill was there , but escaped to the rear just before midnight , together with several others , when the division canceled Operation Manchu because of the attacks . The first heavy weapons carrying party was on its way up the hill when the North Korean attack engulfed the men below . It hurried on to the top where the advance group waited and there all hastily dug in on a small perimeter . This group was not attacked during the night . + From 21 : 30 until shortly after midnight the NK 9th Division crossed the Naktong at a number of places and climbed the hills quietly toward the 9th Infantry river line positions . Then , when the artillery barrage preparation lifted , the North Korean infantry were in position to launch their assaults . These began in the northern part of the regimental sector and quickly spread southward . At each crossing site the North Koreans would overwhelm local UN defenders before building pontoon bridges for their vehicles and armor . + At 02 : 00 , B Company was attacked . A truck stopped at the bottom of the hill , a whistle sounded , then came a shouted order , and North Korean soldiers started climbing the slope . The hills on both sides of B Company were already under attack as was also Hill 311 , a rugged terrain feature a 1 @.@ 5 miles ( 2 @.@ 4 km ) from the river and the North Koreans ' principal immediate objective . The North Koreans apparently were not aware of the Task Force Manchu group lower down on the hill and it was not attacked during the night . But higher up on Hill 209 the North Koreans drove B Company from its position , inflicting very heavy casualties on it . Sheen led one group of soldiers back to friendly lines on 4 September . + At 03 : 00 , 1 September , the 9th Infantry Regiment ordered its only reserve , E Company to move west along the Yongsan @-@ Naktong River road and take a blocking position at the pass between Cloverleaf Hill and Obong @-@ ni Ridge , 3 miles ( 4 @.@ 8 km ) from the river and 6 miles ( 9 @.@ 7 km ) from Yongsan . This was the critical terrain where so much heavy fighting had taken place in the first battle of the Naktong Bulge . Fighting began at the pass at 02 : 30 when an American medium tank of A Company , 72nd Tank Battalion , knocked out a T @-@ 34 at Tugok , also called Morisil . E Company never reached its blocking position . A strong North Korean force surprised and delivered heavy automatic fire on it at 03 : 30 from positions astride the road east of the pass . The company suffered heavy casualties , including the company commander and Keiser 's aide who had accompanied the force . With the critical parts of Cloverleaf Hill and Obong @-@ ni Ridge , the best defensive terrain between Yongsan and the river , the North Koreans controlled the high ground . The US 2nd Infantry Division now had to base its defense of Yongsan on relatively poor defensive terrain , the low hills at the western edge of the town . + + = = = US 23rd Infantry attacked = = = + + North of the 9th Infantry sector of the 2nd Infantry Division front along the Naktong , the US 23rd Infantry Regiment on August 29 had just relieved the 3rd Battalion of the US 38th Infantry Regiment , which in turn had only a few days before relieved the US 21st Infantry Regiment of the US 24th Infantry Division . On August 1 , the 23rd Regiment was in a new sector of which it had only a limited knowledge . It took over a 16 @,@ 000 yards ( 15 @,@ 000 m ) Naktong River front without its 3rd Battalion which had been attached to the US 1st Cavalry Division to the north . Colonel Paul L. Freeman , the regimental commander , deployed the 1st Battalion on the high ground along the river with the three companies abreast . The 1st Battalion , under US Lieutenant Colonel Claire E. Hutchin , Jr . , outposted the hills with platoons and squads . He placed the 2nd Battalion in a reserve position 8 miles ( 13 km ) behind the 1st Battalion and in a position where it commanded the road net in the regimental sector . On August 31h the 2nd Division moved E Company south to a reserve position in the 9th Infantry sector . + Two roads ran through the regimental sector from the Naktong River to Changnyong . The main road bent south along the east bank of the river to Pugong @-@ ni and then turned northeast to Changnyong . A northern secondary road curved around marshland and lakes , the largest of which was Lake U @-@ p 'o , to Changnyong . In effect , the 1st Battalion of the 23rd Regiment guarded these two approach routes to Changnyong . + The 42 men of the 2nd Platoon , B Company , 23rd Infantry held outpost positions on seven hills covering a 2 @,@ 600 yards ( 2 @,@ 400 m ) front along the east bank of the Naktong north of Pugong @-@ ni . Across the river in the rice paddies they could see , in the afternoon of August 31 , two large groups of North Korean soldiers . Occasionally artillery fire dispersed them . Just before dark , the platoon saw a column of North Koreans come out of the hills and proceed toward the river . They immediately reported to the battalion command post . The artillery forward observer , who estimated the column at 2 @,@ 000 people , thought they were refugees . Freeman immediately ordered the artillery to fire on the column , reducing its number . However the North Koreans continued their advance . + At 21 : 00 the first shells of what proved to be a two @-@ hour North Korean artillery and mortar preparation against the American river positions of 2nd Platoon . As the barrage rolled on , North Korean infantry crossed the river and climbed the hills in the darkness under cover of its fire . At 23 : 00 the barrage lifted and the North Koreans attacked 2nd Platoon , forcing it from the hill after a short fight . Similar assaults took place elsewhere along the battalion outpost line . + On the regimental left along the main Pugong @-@ ni @-@ Changnyong road North Korean soldiers completely overran C Company by 0300 September 1 . Only seven men of C Company could be accounted for , and three days later , after all the stragglers and those cut off behind North Korean lines had come in , there were only 20 men in the company . As the North Korean attack developed during the night , 1st Battalion succeeded in withdrawing a large part of its force , less C Company , just north of Lake U @-@ p 'o and the hills there covering the northern road into Changnyong , 3 miles ( 4 @.@ 8 km ) east of the river and 5 miles ( 8 @.@ 0 km ) west of the town . B Company lost heavily in this action . + When word of the disaster that had overtaken 1st Battalion reached regimental headquarters , Freeman obtained the release of G and F Companies from 2nd Division reserve and sent the former to help 1st Battalion and the latter on the southern road toward Pugong @-@ ni and C Company . Major Lloyd K. Jenson , executive officer of the 2nd Battalion , accompanied F Company down the Pugong @-@ ni road . This force was unable to reach C Company , but Jenson collected stragglers from it and seized high ground astride this main approach to Changnyong near Ponch 'o @-@ ri above Lake Sanorho , and went into a defensive position there . The US 2nd Division released E Company to the regiment and the next day it joined F Company to build up what became the main defensive position of the 23d Regiment in front of Changnyong . North Korean troops during the night passed around the right flank of 1st Battalion 's northern blocking position and reached the road three miles behind him near the division artillery positions . The 23rd Infantry Headquarters and Service Companies and other miscellaneous regimental units finally stopped this penetration near the regimental command post 5 miles ( 8 @.@ 0 km ) northwest of Changnyong . + + = = = US 2nd Division split = = = + + Before the morning of 1 September had passed , reports coming in to US 2nd Division headquarters made it clear that North Koreans had penetrated to the north @-@ south Changnyong @-@ Yongsan road and cut the division in two ; the 38th and 23d Infantry Regiments with the bulk of the division artillery in the north were separated from the division headquarters and the 9th Infantry Regiment in the south . Keiser decided that this situation made it advisable to control and direct the divided division as two special forces . Accordingly , he placed the division artillery commander , Brigadier General Loyal M. Haynes , in command of the northern group . Haynes ' command post was 7 miles ( 11 km ) north of Changnyong . Task Force Haynes became operational at 10 : 20 , September 1 . Southward , in the Yongsan area , Keiser placed Brigadier General Joseph S. Bradley , Assistant Division Commander , in charge of the 9th Infantry Regiment , the 2nd Engineer Combat Battalion , most of the 72nd Tank Battalion , and other miscellaneous units of the division . This southern grouping was known as Task Force Bradley . + All three regiments of the NK 2nd Division @-@ the 4th , 17th , and 6th , in line from north to south @-@ crossed during the night to the east side of the Naktong River into the 23rd Regiment sector . The NK 2nd Division , concentrated in the Sinban @-@ ni area west of the river , had , in effect , attacked straight east across the river and was trying to seize the two avenues of advance into Changnyong above and below Lake U @-@ p 'o . On August 31 , 1950 , Lake U @-@ p 'o was a large body of water although in most places very shallow . + At dawn September 1 , Keiser at 2nd Division headquarters in Muan @-@ ni , 7 miles ( 11 km ) east of Yongsan on the Miryang road , felt his division was in the midst of a crisis . The massive North Korean attack had made deep penetrations everywhere in the division sector except in the north in the zone of the 38th Infantry . The NK 9th Division had effected major crossings of the Naktong at two principal points against the US 9th Infantry ; the NK 2nd Division in the meantime had made three major crossings against the US 23rd Infantry ; and the NK 10th Division had begun crossing more troops in the Hill 409 area near Hyongp 'ung in the US 38th Infantry sector . At 08 : 10 Keiser telephoned Eighth Army headquarters and reported the heaviest and deepest North Korean penetrations were in the 9th Infantry sector . + Liaison planes rose from the division strip every hour to observe the North Korean progress and to locate US 2nd Infantry Division front @-@ line units . Communication from division and regimental headquarters to nearly all the forward units was broken . Beginning at 09 : 30 and continuing throughout the rest of the day , the light aviation section of the division artillery located front @-@ line units cut off by the North Koreans , and made fourteen airdrops of ammunition , food , water , and medical supplies . As information slowly built up at division headquarters it became apparent that the North Koreans had punched a hole 6 miles ( 9 @.@ 7 km ) wide and 8 miles ( 13 km ) deep in the middle of the division line and made less severe penetrations elsewhere . The front @-@ line battalions of the US 9th and 23rd Regiments were in various states of disorganization and some companies had virtually disappeared . Keiser hoped he could organize a defense along the Changnyong @-@ Yongsan road east of the Naktong River , and prevent North Korean access to the passes eastward leading to Miryang and Ch 'ongdo . + + = = = Reinforcements = = = + + At 09 : 00 Walker requested the US Air Force to make a maximum effort along the Naktong River from Toksong @-@ dong , just above the US 2nd Division boundary , southward and to a depth of 15 miles ( 24 km ) west of the river . He wanted the Air Force to isolate the battlefield and prevent further North Korean reinforcements and supplies from moving across the river in support of the North Korean spearhead units . The Far East Command requested the US Navy to join in the air effort , and the US Seventh Fleet turned back from its strikes in the Inch 'on @-@ Seoul area and sped southward at full steam toward the southern battle front . Walker came to the US 2nd Division front at 12 : 00 and ordered the division to hold at all costs . He had already ordered ground reinforcements to the Yongsan area . + During the morning of 1 September , Walker weighed the news coming in from his southern front , wavering in a decision as to which part of the front most needed his Pusan Perimeter reserves . Since midnight the NK I Corps had broken his Pusan Perimeter in two places @-@ the NK 2nd and 9th Divisions in the US 2nd Division sector , and the NK 7th Division and NK 6th Division in the US 25th Division sector , below the junction of the Nam and Naktong Rivers . In the US 2nd Division sector North Korean troops were at the edge of Yongsan , the gateway to the corridor leading 12 miles ( 19 km ) eastward to Miryang and the main Pusan @-@ Mukden railroad and highway . + Eighth Army had in reserve three understrength infantry regiments and the 2 @-@ battalion British 27th Infantry Brigade which was not yet completely equipped and ready to be placed in line : The 1st Provisional Marine Brigade at Changwon , 6 miles ( 9 @.@ 7 km ) northeast of Masan , preparing for movement to the port of Pusan ; the US 27th Infantry Regiment of the 25th Division which had arrived at Masan only the night before at 20 : 30 to relieve the 5th Regimental Combat Team , which was then to join the 24th Division in the Taegu area ; and the US 19th Infantry Regiment of the US 24th Infantry Division , then with that division 's headquarters at Kyongsan southeast of Taegu . Walker alerted both the 24th Division headquarters , together with its 19th Regiment , and the 1st Provisional Marine Brigade to move at a moment 's notice ; the 24th Division either to the 2nd or 25th Division fronts , and the marines to an unannounced destination . + As the morning passed , General Walker decided that the situation was most critical in the Naktong Bulge area of the US 2nd Division sector . There the North Koreans threatened Miryang and with it the entire Eighth Army position . At 11 : 00 Walker ordered US Marine Corps Brigadier General Edward A. Craig , commanding the 1st Provisional Marine Brigade , to prepare the marines to move at once . The marines made ready to depart for the Naktong Bulge at 13 : 30 . + + = = = North Korean advance = = = + + The situation on the front was chaotic during the day September 1 . The North Koreans at one place had crossed at the Kihang ferry , captured Agok , and scattered A Company , 9th Infantry at its positions from Agok northward . A Company withdrew to positions on the ridge line back of the river . From there at daylight the men could see North Korean soldiers on many of the ridges surrounding them , most of them moving east . After several hours , 2nd Platoon of A Company sent a patrol down the hill to Agok to obtain supplies abandoned there during the night , returning later with much needed water , rations , and ammunition . + Later in the morning North Korean barges crossed the Naktong below A Company . The company sent a squad with a light machine gun to the southern tip of the ridge overlooking Agok to take these troops under fire . When the squad reached the tip of the ridge they saw that a North Korean force occupied houses at its base . The company hit these houses with artillery . The North Koreans broke from the houses , running for the river . At this the light machine gun at the tip of the ridge took them under fire , as did another across the Naktong to the south in the US 25th Infantry Division sector . Proximity fuze artillery fire decimated this group . Combined fire from all weapons inflicted an estimated 300 casualties on this North Korean force . In the afternoon , US aircraft dropped food and ammunition to the company ; only part of it was recovered . The 1st Battalion ordered A Company to withdraw the company that night . + During the withdraw , however , A Company ran into a sizable North Korean force and had scattered in the ensuing fight . Most of the company , including its commander were killed at close range . In this desperate action , Private First Class Luther H. Story , a weapons squad leader , fought so tenaciously that he was awarded the Medal of Honor . Badly wounded , Story refused to be a burden to those who might escape , and when last seen was still engaging North Korean at close range . Of those in the company , approximately ten men escaped to friendly lines . The next morning , under heavy fog , the group made its way by compass toward Yongsan . From a hill at 12 : 00 , after the fog had lifted , the men looked down on the Battle of Yongsan which was then in progress . That afternoon 20 survivors of the company merged into the lines of the 72nd Tank Battalion near Yongsan . Stragglers from this position continued to stream in the next few days as well . + + = = = The end of Task Force Manchu = = = + + In the meantime , Task Force Manchu was still holding its position along the Naktong River , about 5 miles ( 8 @.@ 0 km ) north of where A Company had been destroyed on the southern end of the line . The perimeter position taken by the men of D and H Companies , 9th Infantry , who had started up the hill before the North Koreans struck , was on a southern knob of Hill 209 , 0 @.@ 5 miles ( 0 @.@ 80 km ) south of B Company 's higher position . In addition to the D and H Company men , there were a few from the Heavy Mortar Platoon and one or two from B Company . Altogether , 60 to 70 men were in the group . The group had an SCR @-@ 300 radio , a heavy machine gun , two light machine gun , a M1918 Browning Automatic Rifle , about 20 M1 Garand rifles , and about 40 carbines or pistols . Schmitt assumed command of the group . + During the night Schmitt established radio communication with the 1st Battalion , 9th infantry . When daylight came Schmitt and his group saw that they were surrounded by North Koreans . One force occupied the higher knob half a mile above them , formerly held by B Company . Below them , North Koreans continued crossing the river and moving supplies forward to their combat units , some of them already several miles eastward . The North Koreans quickly discovered Task Force Manchu group . They first attacked it at 14 : 00 that afternoon , and were repulsed . That night an estimated company attacked three times , pressing the fight to close quarters , but failed each time to penetrate the tight US perimeter . Daylight of the second day disclosed many North Korean dead on the steep slopes outside the perimeter . + In the afternoon of September 2 Schmitt radioed 1st Battalion for an airdrop of supplies . A US plane attempted the drop , but the perimeter was so small and the slopes so steep that virtually all the supplies went into North Korean hands . The men in the perimeter did , however , recover from a drop made later at 19 : 00 some supplies and ammunition . Private First Class Joseph R. Ouellette , of H Company , left the perimeter to gather weapons , ammunition , and grenades from the North Korean dead . On several occasions he was attacked , and on one such occasion a North Korean soldier suddenly attacked Ouellette , who killed the North Korean in hand @-@ to @-@ hand combat . + That same afternoon , the North Koreans sent an American prisoner up the hill to Schmitt with the message , " You have one hour to surrender or be blown to pieces . " Failing in frontal infantry attack to reduce the little defending force , the North Koreans now meant to take it under mortar fire . Only 45 minutes later North Korean antitank fire came in on the knob and two machine guns from positions northward and higher on the slope of Hill 209 swept the perimeter . Soon , mortars emplaced on a neighboring high finger ridge eastward registered on Schmitt 's perimeter and continued firing until dark . The machine gun fire forced every man to stay in his foxhole . The lifting of the mortar fire after dark was the signal for renewed North Korean infantry attacks , all of which were repulsed . But the number of killed and wounded within the perimeter was growing , and supplies were diminishing . There were no medical supplies except those carried by one aid man . + The third day , September 3 , the situation worsened . The weather was hot and ammunition , food and supplies were nearly completely exhausted . Since the previous afternoon , North Korean mortar barrages had alternated with infantry assaults against the perimeter . Survivors later estimated there were about twenty separate infantry attacks repulsed . Two North Korean machine guns still swept the perimeter whenever anyone showed himself . Dead and dying US troops were in almost every foxhole . Mortar fragments destroyed the radio and this ended all communication with other US units . Artillery fire and air strikes requested by Schmitt never came . Some North Koreans worked their way close to the perimeter and threw grenades into it . Six times Ouellette leaped from his foxhole to escape grenades thrown into it . In this close action Ouellette was killed . Most of the foxholes of the perimeter received one or more direct mortar hits in the course of the continuing mortar fire . One of these killed Schmitt on September 3 . The command passed now to First Lieutenant Raymond J. McDoniel of D Company , senior surviving officer . + At daylight on the morning of 4 September only two officers and approximately half the men who had assembled on the hill , were alive . As the day passed , with ammunition down to about one clip per man and only a few grenades left and no help in sight , McDoniel decided to abandon the position that night . When it got dark the survivors would split into small groups and try to get back to friendly lines . That evening after dark the North Koreans launched another weak attack against the position . At 22 : 00 , McDoniel and Caldwell and 27 enlisted men slipped off the hill in groups of four . Master Sergeant Travis E. Watkins , still alive in his paralyzed condition , refused efforts of evacuation , saying that he did not want to be a burden to those who had a chance to get away . He asked only that his carbine be loaded and placed on his chest with the muzzle under his chin . Like Oullette , he would also win the Medal of Honor for his actions . Of the 29 men who came off the hill the night of September 4 , 22 escaped to friendly lines , many of them following the Naktong downstream , hiding by day and traveling by night , until they reached the lines of the US 25th Infantry Division . + Members of Task Force Manchu who escaped from Hill 209 brought back considerable intelligence information of North Korean activity in the vicinity of the Paekchin ferry crossing site . At the ferry site the North Koreans had put in an underwater bridge . A short distance downstream , each night they placed a pontoon bridge across the river and took it up before dawn the next morning . Carrying parties of 50 civilians guarded by four North Korean soldiers crossed the river continuously at night , an estimated total of 800 @-@ 1 @,@ 000 carriers being used at this crossing site . + + = = = Changyong = = = + + North of the US 9th Infantry and the battles in the Naktong Bulge and around Yongsan , the US 23d Infantry Regiment after daylight of September 1 was in a very precarious position . Its 1st Battalion had been driven from the river positions and isolated 3 miles ( 4 @.@ 8 km ) westward . Approximately 400 North Koreans now overran the regimental command post , compelling Freeman to withdraw it about 600 yards ( 550 m ) . There , 5 miles ( 8 @.@ 0 km ) northwest of Changnyong , the US 23rd Infantry Headquarters and Headquarters Company , miscellaneous regimental units , and regimental staff officers checked the North Koreans in a 3 @-@ hour fight . + The North Koreans advanced to Changnyong itself during the afternoon of September 2 , and ROK National Police withdrew from the town . North Koreans were in Changnyong that evening . With his communications broken southward to the 2nd Infantry Division headquarters and the 9th Infantry , Haynes during the day decided to send a tank patrol down the Yongsan road in an effort to re @-@ establish communication . C Company , 72nd Tank Battalion , led its tanks southward . They had to fight their way down the road through several roadblocks . Of the three tanks that started , only the lead tank got through to Yongsan . There , it delivered an overlay of Task Force Haynes ' positions to Bradley . + Still farther northward in the zone of the US 38th Infantry the North Koreans were also active . After the North Korean breakthrough during the night of August 31 , Keiser had ordered the 2nd Battalion , 38th Infantry , to move south and help the 23rd Infantry establish a defensive position west of Changnyong . In attempting to do this , the battalion found North Korean troops already on the ridges along the road . They had penetrated to Hill 284 overlooking the 38th Infantry command post . This hill and Hill 209 dominated the rear areas of the regiment . At 06 : 00 September 3 , 300 North Koreans launched an attack from Hill 284 against the 38th Regiment command post . The regimental commander organized a defensive perimeter and requested a bombing strike which was denied him because the enemy target and his defense perimeter were too close to each other . But the Air Force did deliver rocket and strafing strikes . + This fight continued until September 5 . On that day F Company captured Hill 284 killing 150 North Koreans . From the crest he and his men watched as many more North Koreans ran into a village below them . Directed artillery fire destroyed the village . Among the abandoned North Korean materiel on the hill , Schauer 's men found twenty @-@ five American BARs and submachine guns , a large American radio , thirty boxes of unopened American fragmentation and concussion grenades , and some American rations . + + = = = 1 @-@ 23rd Infantry isolated = = = + + Meanwhile , during these actions in its rear , the 1st Battalion , 23rd Infantry , was cut off 3 miles ( 4 @.@ 8 km ) west of the nearest friendly units . On September 1 the regiment ordered it to withdraw to the Changnyong area . At 14 : 00 a tank @-@ infantry patrol was sent down the road , but it reported that an estimated North Korean battalion held the mountain pass just eastward of the battalion 's defense perimeter . Upon receiving this report the battalion commander requested permission by radio to remain in his present position and try to obstruct the movement of North Korean reinforcements and supplies . That evening Freeman approved this request , and 1st Battalion spent three days in the isolated positions . During this time C @-@ 47 Skytrain planes supplied the battalion by airdrops . + On the morning of September 1 , 3rd Battalion , 38th Infantry moved in an attack westward from the 23rd Regiment command post near Mosan @-@ ni to open the road to the 1st Battalion . On the second day of the fighting at the pass , the relief force broke through the roadblock with the help of air strikes and artillery and tank fire . The advanced elements of the battalion joined 1st Battalion at 17 : 00 September 2 . That evening , North Koreans strongly attacked the 3rd Battalion , 38th Infantry , on Hill 209 north of the road and opposite 1st Battalion , driving one company from its position . + On September 4 , Haynes changed the boundary between the 38th and 23rd Infantry Regiments , giving the northern part of the 23rd 's sector to the 38th Infantry , thus releasing 1st Battalion for movement southward to help the 2nd Battalion defend the southern approach to Changnyong . The 1st Battalion , 23rd Infantry , about 1 @,@ 100 men strong when the attack began , was now down to a strength of approximately 600 men . The 23rd Infantry now made plans to concentrate all its troops on the position held by its 2nd Battalion on the Pugong @-@ ni @-@ Changnyong road . The 1st Battalion moved there and took a place on the left flank of the 2nd Battalion . At the same time the regimental command post moved to the rear of this position . In this regimental perimeter , the 23rd Infantry fought a series of hard battles . Simultaneously it had to send combat patrols to its rear to clear infiltrating North Koreans from Changnyong and from its supply road . + + = = = Battle of Yongsan = = = + + On the morning of September 1 the 1st and 2nd Regiments of the NK 9th Division , in their first offensive of the war , stood only a few miles short of Yongsan after a successful river crossing and penetration of the American line . The 3rd Regiment had been left at Inch 'on , but division commander Major General Pak Kyo Sam felt the chances of capturing Yongsan were strong . + On the morning of September 1 , with only the shattered remnants of E Company at hand , the US 9th Infantry Regiment , US 2nd Infantry Division had virtually no troops to defend Yongsan . Keiser in this emergency attached the 2nd Engineer Combat Battalion to the regiment . The US 72nd Tank Battalion and the 2nd Division Reconnaissance Company also were assigned positions close to Yongsan . The regimental commander planned to place the engineers on the chain of low hills that arched around Yongsan on the northwest . + A Company , 2nd Engineer Combat Battalion , moved to the south side of the Yongsan @-@ Naktong River road ; D Company of the 2nd Engineer Battalion was on the north side of the road . Approximately 2 miles ( 3 @.@ 2 km ) west of Yongsan an estimated 300 North Korean troops engaged A Company in a fire fight . M19 Gun Motor Carriages of the 82nd AAA Battalion supported the engineers in this action , which lasted several hours . Meanwhile , with the approval of General Bradley , D Company moved to the hill immediately south of and overlooking Yongsan . A platoon of infantry went into position behind it . A Company was now ordered to fall back to the southeast edge of Yongsan on the left flank of D Company . There , A Company went into position along the road ; on its left was C Company of the Engineer battalion , and beyond C Company was the 2nd Division Reconnaissance Company . The hill occupied by D Company was in reality the western tip of a large mountain mass that lay southeast of the town . The road to Miryang came south out of Yongsan , bent around the western tip of this mountain , and then ran eastward along its southern base . In its position , D Company not only commanded the town but also its exit , the road to Miryang . + North Koreans had also approached Yongsan from the south . The US 2nd Division Reconnaissance Company and tanks of the 72nd Tank Battalion opposed them in a sharp fight . In this action , Sergeant First Class Charles W. Turner of the Reconnaissance Company particularly distinguished himself . He mounted a tank , operated its exposed turret machine gun , and directed tank fire which reportedly destroyed seven North Korean machine guns . Turner and this tank came under heavy North Korean fire which shot away the tank 's periscope and antennae and scored more than 50 hits on it . Turner , although wounded , remained on the tank until he was killed . That night North Korean soldiers crossed the low ground around Yongsan and entered the town from the south . + At 09 : 35 September 2 , while the North Koreans were attempting to destroy the engineer troops at the southern edge of Yongsan and clear the road to Miryang , Walker spoke by telephone with Major General Doyle O. Hickey , Deputy Chief of Staff , Far East Command in Tokyo . He described the situation around the Perimeter and said the most serious threat was along the boundary between the US 2nd and US 25th Infantry Divisions . He described the location of his reserve forces and his plans for using them . He said he had started the 1st Provisional Marine Brigade toward Yongsan but had not yet released them for commitment there and he wanted to be sure that General of the Army Douglas MacArthur approved his use of them , since he knew that this would interfere with other plans of the Far East Command . Walker said he did not think he could restore the 2nd Division lines without using them . Hickey replied that MacArthur had the day before approved the use of the US Marines if and when Walker considered it necessary . A few hours after this conversation Walker , at 13 : 15 , attached the 1st Provisional Marine Brigade to the US 2nd Division and ordered a co @-@ ordinated attack by all available elements of the division and the marines , with the mission of destroying the North Koreans east of the Naktong River in the 2nd Division sector and of restoring the river line . The marines were to be released from 2nd Division control as soon as this mission was accomplished . + A decision was reached that the marines would attack west at 08 : 00 on September 3 astride the Yongsan @-@ Naktong River road ; the 9th Infantry , B Company of the 72nd Tank Battalion , and D Battery of the 82d AAA Battalion would attack northwest above the marines and attempt to re @-@ establish contact with the US 23rd Infantry ; the 2nd Engineer Combat Battalion , remnants of the 1st Battalion , 9th Infantry , and elements of the 72nd Tank Battalion would attack on the left flank , or south , of the marines to reestablish contact with the 25th Division . Eighth Army now ordered the US 24th Infantry Division headquarters and the US 19th Infantry Regiment to move to the Susan @-@ ni area , 8 miles ( 13 km ) south of Miryang and 15 miles ( 24 km ) east of the confluence of the Nam River and the Naktong River . There it was to prepare to enter the battle in either the 2nd or 25th Division zone . + The American counteroffensive of September 3 – 5 west of Yongsan , according to prisoner statements , resulted in one of the bloodiest debacles of the war for a North Korean division . Even though remnants of the NK 9th Division , supported by the low strength NK 4th Division , still held Obong @-@ ni Ridge , Cloverleaf Hill , and the intervening ground back to the Naktong on September 6 , the division 's offensive strength had been spent at the end of the American counterattack . The NK 9th and 4th divisions were not able to resume the offensive . + + = = = NK 2nd Division destroyed = = = + + The NK 2nd Division made a new effort against the 23rd Infantry 's perimeter in the predawn hours of September 8 , in an attempt to break through eastward . This attack , launched at 02 : 30 and heavily supported with artillery , penetrated F Company . It was apparent that unless F Company 's position could be restored the entire regimental front would collapse . When all its officers became casualties , First Lieutenant Ralph R. Robinson , adjutant of the 2nd Battalion , assumed command of the company . With North Koreans rapidly infiltrating his company 's position and gaining its rear , Robinson in the darkness made his way through them 500 yards ( 460 m ) to A Company 's position . There he obtained that company 's reserve platoon and brought it back to F Company . He accomplished the dangerous and difficult task of maneuvering it into the gap in F Company 's lines in darkness and heavy rain . + The attack tapered off with the coming of daylight , but that night it resumed . The North Koreans struck repeatedly at the defense line . This time they continued the fighting into the daylight hours of 9 September . The Air Force then concentrated strong air support over the regimental perimeter to aid the ground troops . Casualties came to the aid stations from the infantry companies in an almost steady stream during the morning . All available men from Headquarters Company and special units were formed into squads and put into the fight at the most critical points . At one time , the regimental reserve was down to six men . When the attack finally ceased shortly after 12 : 00 the 23rd Regiment had an estimated combat efficiency of only 38 percent . + This heavy night and day battle cost the NK 2nd Division most of its remaining offensive strength . The medical officer of the NK 17th Regiment , 2nd Division , captured a few days later , said that the division evacuated about 300 men nightly to a hospital in Pugong @-@ ni , and that in the first two weeks of September the 2nd Division lost 1 @,@ 300 killed and 2 @,@ 500 wounded in the fighting west of Changnyong . Even though its offensive strength was largely spent by September 9 , the division continued to harass rear areas around Changnyong with infiltrating groups as large as companies . Patrols daily had to open the main supply road and clear the town . + North Korean and US troops remained locked in combat along the Naktong River for several more days . The North Koreans ' offensive capability was largely destroyed , and the US troops resolved to hold their lines barring further attack . + + = = = North Korean withdrawal = = = + + The UN counterattack at Inchon collapsed the North Korean line and cut off all their main supply and reinforcement routes . On September 19 the UN discovered the North Koreans had abandoned much of the Pusan Perimeter during the night , and the UN units began advancing out of their defensive positions and occupying them . Most of the North Korean units began conducting delaying actions attempting to get as much of their army as possible into North Korea . The North Koreans withdrew from the Masan area first , the night of September 18 – 19 . After the forces there , the remainder of the North Korean armies withdrew rapidly to the North . The US units rapidly pursued them north , passing over the Naktong River positions , which were no longer of strategic importance . + + = = Aftermath = = + + The North Korean 2nd and 9th Divisions were almost completely destroyed in the battles . The 9th Division had numbered 9 @,@ 350 men at the beginning of the offensive on September 1 . The 2nd Division numbered 6 @,@ 000 . Only a few hundred from each division returned to North Korea after the fight . The majority of the North Korean troops had been killed , captured or deserted . All of NK II Corps was in a similar state , and the North Korean army , exhausted at Pusan Perimeter and cut off after Inchon , was on the brink of defeat . + By this time , the US 2nd Infantry Division suffered 1 @,@ 120 killed , 2 @,@ 563 wounded , 67 captured and 69 missing during its time at Pusan Perimeter . This included about 180 casualties it suffered during the First Battle of Naktong Bulge the previous month . American forces were continually repulsed but able to prevent the North Koreans from breaking the Pusan Perimeter . The division had numbered 17 @,@ 498 on September 1 , but was in excellent position to attack despite its casualties . The 1st Provisional Marine Brigade suffered 185 killed and around 500 wounded during the Battle of Pusan Perimeter , most of which probably occurred at Yongsan . + Of all the North Korean attacks along the Pusan Perimeter , the Second Battle of Naktong Bulge is seen by historians as the most serious threat . It was the battle in which the North Koreans made the most substantial gains , splitting the US 2nd Infantry Division in half and briefly capturing Yongsan , where they were very close to breaching through to the US forces ' supply lines and threatening other divisions ' rear areas . However , once again the fatal weakness of the North Korean Army had cost it victory after an impressive initial success — its communications and supply were not capable of exploiting a breakthrough and of supporting a continuing attack in the face of massive air , armor , and artillery fire that could be concentrated against its troops at critical points . By September 8 , the North Korean attacks in the area had been repulsed . + + + = Hed PE = + + Hed PE , also known as ( hed ) Planet Earth and stylized as ( həd ) p.e. , is an American rock band from Huntington Beach , California . Formed in 1994 , the band performs a style of music which it refers to as " G @-@ punk " , a fusion of punk rock and gangsta rap . + After releasing three albums on Jive Records , Hed PE left the label to record independently , eventually signing with Suburban Noize Records in 2006 . Since 2006 , the band has become known for its involvement in the 9 / 11 Truth movement , referencing it in many of their song lyrics and concerts , as well as the concept of the album New World Orphans . To date , they have released nine studio albums , one live album and two compilation albums . + + = = History = = + + + = = = Formation and major @-@ label debut ( 1994 – 1999 ) = = = + + The band was formed by vocalist Jared Gomes , formerly of The Clue , also known as " M.C.U.D. " ( MC Underdog ) , and guitarist Wes Geer , who became friends amidst the Orange County hardcore punk scene . Gomes and Geer recruited guitarist Chizad , bassist Mawk , drummer B.C. Vaught and DJ Product © 1969 . They named the group " Hed " , which stands for " higher education " . The band built a following with their energetic performances at local venues , and released the self @-@ financed extended play , Church of Realities . Legal issues forced Hed to change their name , adding " PE " , which stood for " Planet Earth " . + Hed PE signed with Jive Records , releasing their self @-@ titled debut album in 1997 . In his review of the album , Allmusic 's Steve Huey wrote " There are some slow and / or unfocused moments [ ... ] but overall , its aggression will probably play well with late- ' 90s metal and punk fans . " Due to the label 's contractual terms and the disappointing sales of the album , the band found themselves unable to repay the cash advances given to them by Jive . Gomes is quoted as saying " We had these romantic visions of the music industry , and we thought it would be cool to be a punk band on a rap label . So we fulfilled that dream , but it was also probably the worst thing that could have happened . [ ... ] We 've had offers from Sony and others that we can 't take because we owe Jive so much money . " + + = = = Broke and Blackout ( 2000 – 2004 ) = = = + + On June 6 , 2000 , Hed PE appeared on the tribute album Nativity in Black II , covering Black Sabbath 's " Sabbra Cadabra " . Hed PE released their second studio album , Broke on August 22 , 2000 . It peaked at No. 63 on the Billboard 200 , while its first single , " Bartender " , peaked at No. 23 on the Billboard Mainstream Rock Tracks chart and at No. 27 on the Modern Rock Tracks chart . Allmusic 's Jason D. Taylor wrote : " Broke may have not found as much success in the competitive mainstream market as some would have liked , and even despite its distinct departure from the group 's debut , it is an album that shows more vision than other rap @-@ tinged rock albums to come out in 2000 . " The most negative response to the album came from critics who viewed its lyrics as misogynistic . + On October 27 , 2000 , Gomes was arrested for possession of marijuana while the band was performing in Waterbury , Connecticut . He was released on a US $ 1 @,@ 500 bond . In 2001 , Hed PE performed on the Ozzfest tour alongside bands such as Korn , Static @-@ X , and System of a Down . A music video for " Killing Time " , the second single from Broke , was produced in promotion of the film 3000 Miles to Graceland , which featured the song on its soundtrack . + Hed PE released their third studio album , Blackout , on March 18 , 2003 . It peaked at No. 33 on the Billboard 200 , while its title track peaked at No. 21 on the Mainstream Rock Tracks chart and at No. 32 on the Modern Rock Tracks chart . Allmusic 's Johnny Loftus wrote that " While it expands on melodic elements that had previously played a supporting role in the band 's sound , Blackout also delivers truckloads of crushing guitar and pounding rhythm . And whether or not it is the presence of a top @-@ line producer , ( hed ) pe have figured out a way to imbue their aggressive mix of heavy rock and hip @-@ hop with some serious hooks . " Guitarist Jaxon joined the band in early 2004 . He is the fourth person to fill this position . + + = = = Only in Amerika ( 2004 ) = = = + + Hed PE left Jive Records , releasing their fourth studio album , Only in Amerika , on Koch Records on October 19 , 2004 . It peaked at No. 20 on the Top Independent Albums chart and at No. 186 on the Billboard 200 . In his review of the album , Johnny Loftus wrote " It wants to be a confrontational megaphone in the ear of conservatives , but Jahred 's torrential rhetoric is too messy and blatantly offensive to incite anything but superficial anger , and the music -- though occasionally explosive -- takes a backseat to the ranting . " + + = = = Suburban Noize Records and New Album Evolution ( 2006 – 2015 ) = = = + + In 2006 , Hed PE signed with Suburban Noize Records , recording their fifth studio album , Back 2 Base X. The album was intended as a return to the basics of rock music , and did not rely as heavily on studio enhancement as previous releases . The album was released on June 6 , 2006 , the same day as The Best of ( həd ) Planet Earth , a compilation album produced by Jive Records without the band 's authorization or consent . Back 2 Base X peaked at No. 12 on the Independent Albums chart , and at No. 154 on the Billboard 200 . Allmusic 's Rob Theakston wrote that " Back 2 Base X suffers from the same problems as Amerika : it tries to be conceptual in thought à la Tool and vicious in its political commentary à la Fugazi or System of a Down , but somehow falls short by sounding like an angry stoner on a soapbox . It won 't win any new fans , but existing fans of ( hed ) pe 's work won 't be turning their backs away from the band in anger anytime soon , either . " + On June 26 , 2007 , the band released their sixth studio album , Insomnia . It peaked at No. 16 on the Independent Albums chart , and at No. 138 on the Billboard 200 . The album 's lead single , " Suffa " , became one of the most requested tracks at Sirius Satellite Radio 's Hard Attack , while the song 's music video was voted one of the Top 10 of 2007 on MTV 's Headbangers Ball . Hed PE released their first live album , The D.I.Y. Guys , in 2008 . On January 13 , 2009 , they released their seventh studio album , New World Orphans . It was released in three different versions ; each contains a different set of bonus tracks . In 2009 , drummer Trauma joined the band . He is the sixth person to fill this position . The band 's eighth studio album , Truth Rising , was released on October 26 , 2010 to mixed reviews . Hed pe played the " Local Heroes Tour " in the fall of 2012 and played with Flipsyde in San jose on Sunday October 7 , 2012 . In an interview , frontman Jared Gomes stated that their album for 2013 titled Ascension would be released within the first half of 2014 . Towards the end of 2013 , DJ Product mysteriously left the band with no explanation and no comment from the other members . On 1 / 1 / 2014 , Frontman Jahred Gomes stated on the band 's official Facebook that the new upcoming ( hed ) PE album will be named " Evolution " and to be released within the year . + On May 13 , 2014 , On the band 's official Facebook page , they released the official announcement of when the band 's new album Evolution will hit stores . The album is set for release July 22 , 2014 . They also released a teaser of the tone of the new album on their Facebook page and soon after , the track " One More Body " . + In 2015 , it was confirmed that 12 @-@ year guitarist Jaxon Benge and original bassist Mark Young had left the band . They were replaced by guitarist Greg " Gregzilla " Harrison and bassist Kurt Blankenship , leaving vocalist and founding member Jared Gomes as the group 's only remaining original talent . + + = = Style = = + + + = = = Music and lyrics = = = + + Hed PE performs a style of music which they have referred to as " G @-@ punk " , a phrase inspired by the term " G @-@ funk " , itself a reference to the P @-@ Funk collective . Hed PE 's music is a fusion of styles ranging from hip hop , reggae , and ska to hard rock , punk , and heavy metal . Other elements that have been incorporated into this style include blues , funk , jazz and industrial . Jared Gomes ' vocal style ranges from melodic singing to rapping , screaming , and death growls . The band 's lyrics draw from a number of subjects , including the existence of extraterrestrial life , criticism of organized religion , the 9 / 11 Truth movement , cannabis use and sexual intercourse . + Gomes , in addition to the 9 / 11 Truth movement , has expressed support for social liberal politicians such as Nancy Pelosi and president Barack Obama . Previously however , Gomes ' 2004 lyrics for Only in Amerika expressed support for nationalism , and called for retaliation against Al Qaeda for the 9 / 11 terrorist attacks . + + = = = Influences = = = + + The band 's influences include HEM , Beastie Boys , Black Sabbath , Bob Marley , Led Zeppelin , Nine Inch Nails , Snoop Dogg , Cypress Hill , Notorious B.I.G. and Rage Against the Machine . Hed PE 's second album , Broke , incorporated classic rock and world music influences , while Back 2 Base X was influenced by classic punk bands such as the Sex Pistols and the Clash , Insomnia was influenced by thrash metal bands such as Slayer , and New World Orphans was influenced by Suicidal Tendencies and Minor Threat . Guitarist Jaxon has been credited for encouraging a heavier , hardcore punk @-@ influenced musical style . + + = = Band members = = + + Jared ( Paulo Sergio Gomes ) — lead vocals ( 1994 – current ) + Major Trauma ( Jeremiah Stratton ) — drums ( 2008 – current ) + Gregzilla ( Greg Harrison ) — guitar ( 2015 – current ) + Kid Bass ( Kurt Blankenship ) — bass ( 2015 – current ) + + = = = Former members = = = + + Ken Sachs ( The Finger ) — keyboard ( 1994 – 1996 ) + Chad Benekos ( Chizad ) — guitar ( 1994 – 2002 ) + Wesley Geer ( Wesstyle , Wes Geer ) — guitar ( 1994 – 2003 ) + Ben C. Vaught ( B.C. ) — drums ( 1994 – 2003 ) + Doug Boyce ( DJ Product © 1969 ) — turntables , samples ( 1994 – 2013 ) + Mark Young ( Mawk ) — bass ( 1994 – 2015 ) + Sonny Mayo — guitar ( 2002 – 2003 ) + Jackson Benge ( Jaxon ) — guitar ( 2004 – 2015 ) + Christopher Hendrich — drums ( 2004 ) + Mark " Moke " Bistany — drums ( 2004 – 2006 ) + Devin Lebsack — drums ( 2006 – 2007 ) + Anthony " Tiny Bubz " Biuso — drums ( 2007 – 2008 ) + + = = = Timeline = = = + + + = = Discography = = + + Studio albums + Church of Realities ( 1995 ) + Hed PE ( 1997 ) + Broke ( 2000 ) + Blackout ( 2003 ) + Only in Amerika ( 2004 ) + Back 2 Base X ( 2006 ) + Insomnia ( 2007 ) + New World Orphans ( 2009 ) + Truth Rising ( 2010 ) + Evolution ( 2014 ) + Forever ! ( 2016 ) + + + = Ironclad warship = + + An ironclad is a steam @-@ propelled warship protected by iron or steel armor plates used in the early part of the second half of the 19th century . The ironclad was developed as a result of the vulnerability of wooden warships to explosive or incendiary shells . The first ironclad battleship , Gloire , was launched by the French Navy in November 1859 . The British Admiralty had been considering armored warships since 1856 and prepared a draft design for an armored corvette in 1857 ; in early 1859 the Royal Navy started building two iron @-@ hulled armored frigates , and by 1861 had made the decision to move to an all @-@ armored battle fleet . After the first clashes of ironclads ( both with wooden ships and with one another ) took place in 1862 during the American Civil War , it became clear that the ironclad had replaced the unarmored ship of the line as the most powerful warship afloat . This type of ship would come to be very successful in the American Civil War . + Ironclads were designed for several roles , including as high seas battleships , coastal defense ships , and long @-@ range cruisers . The rapid evolution of warship design in the late 19th century transformed the ironclad from a wooden @-@ hulled vessel that carried sails to supplement its steam engines into the steel @-@ built , turreted battleships and cruisers familiar in the 20th century . This change was pushed forward by the development of heavier naval guns ( the ironclads of the 1880s carried some of the heaviest guns ever mounted at sea ) , more sophisticated steam engines , and advances in metallurgy which made steel shipbuilding possible . + The quick pace of change meant that many ships were obsolete as soon as they were finished , and that naval tactics were in a state of flux . Many ironclads were built to make use of the ram or the torpedo , which a number of naval designers considered the important weapons of naval combat . There is no clear end to the ironclad period , but towards the end of the 1890s the term ironclad dropped out of use . New ships were increasingly constructed to a standard pattern and designated battleships or armored cruisers . + + = = The ironclad = = + + The ironclad became technically feasible and tactically necessary because of developments in shipbuilding in the first half of the 19th century . According to naval historian J. Richard Hill : " The ( ironclad ) had three chief characteristics : a metal @-@ skinned hull , steam propulsion and a main armament of guns capable of firing explosive shells . It is only when all three characteristics are present that a fighting ship can properly be called an ironclad . " Each of these developments was introduced separately in the decade before the first ironclads . + + = = = Steam propulsion = = = + + In the 18th and early 19th centuries fleets had relied on two types of major warship , the ship of the line and the frigate . The first major change to these types was the introduction of steam power for propulsion . While paddle steamer warships had been used from the 1830s onwards , steam propulsion only became suitable for major warships after the adoption of the screw propeller in the 1840s . + Steam @-@ powered screw frigates were built in the mid @-@ 1840s , and at the end of the decade the French Navy introduced steam power to its line of battle . The desire for change came from the ambition of Napoleon III to gain greater influence in Europe , which required a challenge to the British at sea . The first purpose @-@ built steam battleship was the 90 @-@ gun Napoléon in 1850 . Napoléon was armed as a conventional ship @-@ of @-@ the @-@ line , but her steam engines could give her a speed of 12 knots ( 22 km / h ) , regardless of the wind conditions : a potentially decisive advantage in a naval engagement . + The introduction of the steam ship @-@ of @-@ the @-@ line led to a building competition between France and Britain . Eight sister ships to Napoléon were built in France over a period of ten years , but the United Kingdom soon managed to take the lead in production . Altogether , France built ten new wooden steam battleships and converted 28 from older ships of the line , while the United Kingdom built 18 and converted 41 . + + = = = Explosive shells = = = + + The era of the wooden steam ship @-@ of @-@ the @-@ line was brief , because of new , more powerful naval guns . In the 1820s and 1830s , warships began to mount increasingly heavy guns , replacing 18- and 24 @-@ pounder guns with 32 @-@ pounders on sailing ships @-@ of @-@ the @-@ line and introducing 68 @-@ pounders on steamers . Then , the first shell guns firing explosive shells were introduced following their development by the French Général Henri @-@ Joseph Paixhans , and by the 1840s were part of the standard armament for naval powers including the French Navy , Royal Navy , Imperial Russian Navy and United States Navy . It is often held that the power of explosive shells to smash wooden hulls , as demonstrated by the Russian destruction of an Ottoman squadron at the Battle of Sinop , spelled the end of the wooden @-@ hulled warship . The more practical threat to wooden ships was from conventional cannon firing red @-@ hot shot , which could lodge in the hull of a wooden ship and cause a fire or ammunition explosion . Some navies even experimented with hollow shot filled with molten metal for extra incendiary power . + + = = = Iron armor = = = + + The use of iron instead of wood as the primary material of ships ' hulls began in the 1830s ; the first " warship " with an iron hull was the gunboat Nemesis , built by Laird for the East India Company in 1839 . There followed , also from Laird , the first full @-@ blown warships with metal hulls , the 1842 steam frigates Guadelupe and Montezuma for the Mexican navy . But a thin iron skin , while not being susceptible to fire or lethal splintering like wood , was not the same thing as providing iron armor calculated to stop enemy gunfire . + Following the demonstration of the power of explosive shells against wooden ships at the Battle of Sinop , and fearing that his own ships would be vulnerable to the Paixhans guns of Russian fortifications in the Crimean War , Emperor Napoleon III ordered the development of light @-@ draft floating batteries , equipped with heavy guns and protected by heavy armor . Experiments made during the first half of 1854 proved highly satisfactory , and on 17 July 1854 , the French communicated to the British Government that a solution had been found to make gun @-@ proof vessels and that plans would be communicated . After tests in September 1854 , the British Admiralty agreed to build five armoured floating batteries on the French plans , establishing the important Thames and Millwall Iron Works within the docks . + The French floating batteries were deployed in 1855 as a supplement to the wooden steam battle fleet in the Crimean War . The role of the battery was to assist unarmored mortar and gunboats bombarding shore fortifications . The French used three of their ironclad batteries ( Lave , Tonnante and Dévastation ) in 1855 against the defenses at the Battle of Kinburn on the Black Sea , where they were effective against Russian shore defences . They would later be used again during the Italian war in the Adriatic in 1859 . The British floating batteries Glatton and Meteor arrived too late to participate to the action at Kinburn . The British planned to use theirs in the Baltic Sea against the well @-@ fortified naval base at Kronstadt . + The batteries have a claim to the title of the first ironclad warships but they were capable of only 4 knots ( 7 km / h ) under their own power : they operated under their own power at the Battle of Kinburn , but had to be towed for long range transit . They were also arguably marginal to the work of the navy . The brief success of the floating ironclad batteries convinced France to begin work on armored warships for their battlefleet . + + = = Early ironclad ships and battles = = + + By the end of the 1850s it was clear that France was unable to match British building of steam warships , and to regain the strategic initiative a dramatic change was required . The result was the first ocean @-@ going ironclad , the Gloire , begun in 1857 and launched in 1859 . + Gloire 's wooden hull was modelled on that of a steam ship of the line , reduced to one deck , sheathed in iron plates 4 @.@ 5 inches ( 110 mm ) thick . She was propelled by a steam engine , driving a single screw propeller for a speed of 13 knots ( 24 km / h ) . She was armed with thirty @-@ six 6 @.@ 4 @-@ inch ( 160 mm ) rifled guns . France proceeded to construct 16 ironclad warships , including two more sister ships to Gloire , and the only two @-@ decked broadside ironclads ever built , Magenta and Solférino . + The Royal Navy had not been keen to sacrifice its advantage in steam ships of the line , but was determined that the first British ironclad would outmatch the French ships in every respect , particularly speed . A fast ship would have the advantage of being able to choose a range of engagement which could make her invulnerable to enemy fire . The British specification was more a large , powerful frigate than a ship @-@ of @-@ the @-@ line . The requirement for speed meant a very long vessel , which had to be built from iron . The result was the construction of two Warrior @-@ class ironclads ; HMS Warrior and HMS Black Prince . The ships had a successful design , though there were necessarily compromises between ' sea @-@ keeping ' , strategic range and armour protection ; their weapons were more effective than that of Gloire , and with the largest set of steam engines yet fitted to a ship they could steam at 14 @.@ 3 knots ( 26 @.@ 5 km / h ) . Yet the Gloire and her sisters had full iron @-@ armour protection along the waterline and the battery itself . Warrior and Black Prince ( but also the smaller Defence and Resistance ) were obliged to concentrate their armour in a central ' citadel ' or ' armoured box ' , leaving many main deck guns and the fore and aft sections of the vessel unprotected . The use of iron in the construction of Warrior also came with some drawbacks ; iron hulls required more regular and intensive repairs than wooden hulls , and iron was more susceptible to fouling by marine life . + By 1862 , navies across Europe had adopted ironclads . Britain and France each had sixteen either completed or under construction , though the British vessels were larger . Austria , Italy , Russia , and Spain were also building ironclads . However , the first battles using the new ironclad ships involved neither Britain nor France , and involved ships markedly different from the broadside @-@ firing , masted designs of Gloire and Warrior . The use of ironclads by both sides in the American Civil War , and the clash of the Italian and Austrian fleets at the Battle of Lissa , had an important influence on the development of ironclad design . + + = = = First battles between ironclads : the U.S. Civil War = = = + + The first use of ironclads in action came in the U.S. Civil War . The U.S. Navy at the time the war broke out had no ironclads , its most powerful ships being six steam @-@ powered unarmoured frigates . Since the bulk of the Navy remained loyal to the Union , the Confederacy sought to gain advantage in the naval conflict by acquiring modern armored ships . In May 1861 , the Confederate Congress voted that $ 2 million be appropriated for the purchase of ironclads from overseas , and in July and August 1861 the Confederacy started work on construction and converting wooden ships . + On 12 October 1861 , the CSS Manassas became the first ironclad to enter combat , when she fought Union warships on the Mississippi during the Battle of the Head of Passes . She had been converted from a commercial vessel in New Orleans for river and coastal fighting . In February 1862 , the larger CSS Virginia joined the Confederate Navy , having been rebuilt at Norfolk . Constructed on the hull of USS Merrimack , Virginia originally was a conventional warship made of wood , but she was converted into an iron @-@ covered casemate ironclad gunship , when she entered the Confederate navy . By this time , the Union had completed seven ironclad gunboats of the City class , and was about to complete the USS Monitor , an innovative design proposed by the Swedish inventor John Ericsson . The Union was also building a large armored frigate , the USS New Ironsides , and the smaller USS Galena . + The first battle between ironclads happened on 9 March 1862 , as the armored Monitor was deployed to protect the Union 's wooden fleet from the ironclad ram Virginia and other Confederate warships . In this engagement , the second day of the Battle of Hampton Roads , the two ironclads repeatedly tried to ram one another while shells bounced off their armor . The battle attracted attention worldwide , making it clear that the wooden warship was now out of date , with the ironclads destroying them easily . + The Civil War saw more ironclads built by both sides , and they played an increasing role in the naval war alongside the unarmored warships , commerce raiders and blockade runners . The Union built a large fleet of fifty monitors modeled on their namesake . The Confederacy built ships designed as smaller versions of the Virginia , many of which saw action , but their attempts to buy ironclads overseas were frustrated as European nations confiscated ships being built for the Confederacy — especially in Russia , the only country to openly support the Union through the war . Only CSS Stonewall was completed , and she arrived in American waters just in time for the end of the war . + Through the remainder of the war , ironclads saw action in the Union 's attacks on Confederate ports . Seven Union monitors , including USS Montauk , as well as two other ironclads , the ironclad frigate New Ironsides and a light @-@ draft USS Keokuk , participated in the failed attack on Charleston ; one was sunk . Two small ironclads , CSS Palmetto State and CSS Chicora participated in the defence of the harbor . For the later attack at Mobile Bay , the Union assembled four monitors as well as 11 wooden ships , facing the CSS Tennessee , the Confederacy 's most powerful ironclad and the gunboats CSS Morgan , CSS Gaines , CSS Selma . + On the western front , the Union built a formidable force of river ironclads , beginning with several converted riverboats and then contracting engineer James Eads of St. Louis , Missouri to build the City @-@ class ironclads . These excellent ships were built with twin engines and a central paddle wheel , all protected by an armored casement . They had a shallow draft , allowing them to journey up smaller tributaries , and were very well suited for river operations . Eads also produced monitors for use on the rivers , the first two of which differed from the ocean @-@ going monitors in that they contained a paddle wheel ( the USS Neosho and USS Osage ) . + Arguably Eads vessels were some of the better ironclads of the Western Flotilla , but there were a number of other vessels that served valiantly with the fleet . All were of varying design , some more successful than others , and some were similar to standard riverboats but with armored side @-@ mounted paddle wheels . All were armed with various smoothbore and some rifled guns . If nothing else the experience of the American Civil War and its wild variety of competing ironclad designs , some more successful ( or disastrous ) than others , confirmed the emerging trade @-@ off or compromises required in applying the latest technological advances in iron armour manufacture , ship construction and gun design — to name a few — also going on in Europe . There was no such thing as a ' perfect ' ironclad which could be invincible in every possible encounter ; ship duels , standing up to forts , Brown & Blue @-@ water operations . + The Union ironclads played an important role in the Mississippi and tributaries by providing tremendous fire upon Confederate forts , installations and vessels with relative impunity to enemy fire . They were not as heavily armored as the ocean @-@ going monitors of the Union , but they were adequate for their intended use . More Western Flotilla Union ironclads were sunk by torpedoes ( mines ) than by enemy fire , and the most damaging fire for the Union ironclads was from shore installations , not Confederate vessels . + + = = = Lissa : First fleet battle = = = + + The first fleet battle , and the first ocean battle , involving ironclad warships was the Battle of Lissa in 1866 . Waged between the Austrian and Italian navies , the battle pitted combined fleets of wooden frigates and corvettes and ironclad warships on both sides in the largest naval battle between the battles of Navarino and Tsushima . + The Italian fleet consisted of 12 ironclads and a similar number of wooden warships , escorting transports which carried troops intending to land on the Adriatic island of Lissa . Among the Italian ironclads were seven broadside ironclad frigates , four smaller ironclads , and the newly built Affondatore — a double @-@ turretted ram . Opposing them , the Austrian navy had seven ironclad frigates . + The Austrians believed their ships to have less effective guns than their enemy , so decided to engage the Italians at close range and ram them . The Austrian fleet formed into an arrowhead formation with the ironclads in the first line , charging at the Italian ironclad squadron . In the melée which followed both sides were frustrated by the lack of damage inflicted by guns , and by the difficulty of ramming — nonetheless , the effective ramming attack being made by the Austrian flagship against the Italian attracted great attention in following years . + The superior Italian fleet lost its two ironclads , Re d 'Italia and Palestro , while the Austrian unarmoured screw two @-@ decker SMS Kaiser remarkably survived close actions with four Italian ironclads . The battle ensured the popularity of the ram as a weapon in European ironclads for many years , and the victory won by Austria established it as the predominant naval power in the Adriatic . + The battles of the American Civil War and at Lissa were very influential on the designs and tactics of the ironclad fleets that followed . In particular , it taught a generation of naval officers the misleading lesson that ramming was the best way to sink enemy ironclads . + + = = Armament and tactics = = + + The adoption of iron armor meant that the traditional naval armament of dozens of light cannon became useless , since their shot would bounce off an armored hull . To penetrate armor , increasingly heavy guns were mounted on ships ; nevertheless , the view that ramming was the only way to sink an ironclad became widespread . The increasing size and weight of guns also meant a movement away from the ships mounting many guns broadside , in the manner of a ship @-@ of @-@ the @-@ line , towards a handful of guns in turrets for all @-@ round fire . + + = = = Ram craze = = = + + From the 1860s to the 1880s many naval designers believed that the development of the ironclad meant that the ram was again the most important weapon in naval warfare . With steam power freeing ships from the wind , and armor making them invulnerable to shellfire , the ram seemed to offer the opportunity to strike a decisive blow . + The scant damage inflicted by the guns of Monitor and Virginia at Battle of Hampton Roads and the spectacular but lucky success of the Austrian flagship SMS Erzherzog Ferdinand Max sinking the Italian Re d 'Italia at Lissa gave strength to the ramming craze . From the early 1870s to early 1880s most British naval officers thought that guns were about to be replaced as the main naval armament by the ram . Those who noted the tiny number of ships that had actually been sunk by ramming struggled to be heard . + The revival of ramming had a significant effect on naval tactics . Since the 17th century the predominant tactic of naval warfare had been the line of battle , where a fleet formed a long line to give it the best fire from its broadside guns . This tactic was totally unsuited to ramming , and the ram threw fleet tactics into disarray . The question of how an ironclad fleet should deploy in battle to make best use of the ram was never tested in battle , and if it had been , combat might have shown that rams could only be used against ships which were already stopped dead in the water . + The ram finally fell out of favour in the 1880s , as the same effect could be achieved with a torpedo , with less vulnerability to quick @-@ firing guns . + + = = = Development of naval guns = = = + + The armament of ironclads tended to become concentrated in a small number of powerful guns capable of penetrating the armor of enemy ships at range ; calibre and weight of guns increased markedly to achieve greater penetration . Throughout the ironclad era navies also grappled with the complexities of rifled versus smoothbore guns and breech @-@ loading versus muzzle @-@ loading . + HMS Warrior carried a mixture of 110 @-@ pounder 7 inch ( 180 mm ) breech @-@ loading rifles and more traditional 68 @-@ pounder smoothbore guns . Warrior highlighted the challenges of picking the right armament ; the breech @-@ loaders she carried , designed by Sir William Armstrong , were intended to be the next generation of heavy armament for the Royal Navy , but were shortly withdrawn from service . + Breech @-@ loading guns seemed to offer important advantages . A breech @-@ loader could be reloaded without moving the gun , a lengthy process particularly if the gun then needed to be re @-@ aimed . The Warrior 's Armstrong guns also had the virtue of being lighter than an equivalent smoothbore and , because of their rifling , more accurate . Nonetheless , the design was rejected because of problems which plagued breech @-@ loaders for decades . + The weakness of the breech @-@ loader was the obvious problem of sealing the breech . All guns are powered by the explosive conversion of gunpowder into gas . This explosion propels the shot or shell out of the front of the gun , but also imposes great stresses on the gun @-@ barrel . If the breech — which experiences some of the greatest forces in the gun — is not entirely secure , then there is a risk that either gas will discharge through the breech or that the breech will break . This in turn reduces the muzzle velocity of the weapon and can also endanger the gun crew . The Warrior 's Armstrong guns suffered from both problems ; the shells were unable to penetrate the 4 @.@ 5 in ( 118 mm ) armor of Gloire , while sometimes the screw which closed the breech flew backwards out of the gun on firing . Similar problems were experienced with the breech @-@ loading guns which became standard in the French and German navies . + These problems influenced the British to equip ships with muzzle @-@ loading weapons of increasing power until the 1880s . After a brief introduction of 100 @-@ pounder or 9 @.@ 5 @-@ inch ( 240 mm ) smoothbore Somerset Gun , which weighed 6 @.@ 5 tons ( 6 @.@ 6 t ) , the Admiralty introduced 7 @-@ inch ( 178 mm ) rifled guns , weighing 7 tons . These were followed by a series of increasingly mammoth weapons — guns weighing 12 , 25 , 25 , 38 and finally 81 tons , with calibre increasing from 8 @-@ inch ( 203 mm ) to 16 @-@ inch ( 406 mm ) . + The decision to retain muzzle @-@ loaders until the 1880s has been criticised by historians . However , at least until the late 1870s , the British muzzle @-@ loaders had superior performance in terms of both range and rate of fire than the French and Prussian breech @-@ loaders , which suffered from the same problems as had the first Armstrong guns . + From 1875 onwards , the balance between breech- and muzzle @-@ loading changed . Captain de Bange invented a method of reliably sealing a breech , adopted by the French in 1873 . Just as compellingly , the growing size of naval guns made muzzle @-@ loading much more complicated . With guns of such size there was no prospect of hauling in the gun for re @-@ loading , or even re @-@ loading by hand , and complicated hydraulic systems were required for re @-@ loading the gun outside the turret without exposing the crew to enemy fire . In 1882 , the 81 @-@ ton , 16 @-@ inch ( 406 mm ) guns of HMS Inflexible fired only once every 11 minutes while bombarding Alexandria during the Urabi Revolt . The 100 @-@ ton , 450 mm ( 17 @.@ 72 inch ) guns of Caio Duilio could each fire a round every 15 minutes . + In the Royal Navy , the switch to breech @-@ loaders was finally made in 1879 ; as well as the significant advantages in terms of performance , opinion was swayed by an explosion on board HMS Thunderer caused by a gun being double @-@ loaded , a problem which could only happen with a muzzle @-@ loading gun . + The calibre and weight of guns could only increase so far . The larger the gun , the slower it would be to load , the greater the stresses on the ship 's hull , and the less the stability of the ship . The size of the gun peaked in the 1880s , with some of the heaviest calibres of gun ever used at sea . HMS Benbow carried two 16 @.@ 25 @-@ inch ( 413 mm ) breech @-@ loading guns , each weighing 110 tons — no British battleship would ever carry guns as large . The Italian 450 mm ( 17 @.@ 72 inch ) guns would be larger than any gun fitted to a battleship until the 18 @.@ 1 @-@ inch ( 460 mm ) armament of the Japanese Yamato class of World War II . One consideration which became more acute was that even from the original Armstrong models , following the Crimean War , range and hitting power far exceeded simple accuracy , especially at sea where the slightest roll or pitch of the vessel as ' floating weapons @-@ platform ' could negate the advantage of rifling . American ordnance experts accordingly preferred smoothbore monsters whose round shot could at least ' skip ' along the surface of the water . Actual effective combat ranges , they had learned during the Civil War , were comparable to those in the Age of Sail — though a vessel could now be smashed to pieces in only a few rounds . Smoke and the general chaos of battle only added to the problem . As a result , many naval engagements in the ' Age of the Ironclad ' were still fought at ranges within easy eyesight of their targets , and well below the maximum reach of their ships ' guns . + Another method of increasing firepower was to vary the projectile fired or the nature of the propellant . Early ironclads used black powder , which expanded rapidly after combustion ; this meant cannons had relatively short barrels , to prevent the barrel itself slowing the shell . The sharpness of the black powder explosion also meant that guns were subjected to extreme stress . One important step was to press the powder into pellets , allowing a slower , more controlled explosion and a longer barrel . A further step forward was the introduction of chemically different brown powder which combusted more slowly again . It also put less stress on the insides of the barrel , allowing guns to last longer and to be manufactured to tighter tolerances . + The development of smokeless powder , based on nitroglycerine or nitrocellulose , by the French inventor Paul Vielle in 1884 was a further step allowing smaller charges of propellant with longer barrels . The guns of the pre @-@ Dreadnought battleships of the 1890s tended to be smaller in calibre compared to the ships of the 1880s , most often 12 in ( 305 mm ) , but progressively grew in length of barrel , making use of improved propellants to gain greater muzzle velocity . + The nature of the projectiles also changed during the ironclad period . Initially , the best armor @-@ piercing projectile was a solid cast @-@ iron shot . Later , shot of chilled iron , a harder iron alloy , gave better armor @-@ piercing qualities . Eventually the armor @-@ piercing shell was developed . + + = = = Positioning of armament = = = + + + = = = = Broadside ironclads = = = = + + The first British , French and Russian ironclads , in a logical development of warship design from the long preceding era of wooden ships of the line , carried their weapons in a single line along their sides and so were called " broadside ironclads . " Both Gloire and HMS Warrior were examples of this type . Because their armor was so heavy , they could only carry a single row of guns along the main deck on each side rather than a row on each deck . + A significant number of broadside ironclads were built in the 1860s , principally in Britain and France , but in smaller numbers by other powers including Italy , Austria , Russia and the United States . The advantages of mounting guns on both broadsides was that the ship could engage more than one adversary at a time , and the rigging did not impede the field of fire . + Broadside armament also had disadvantages , which became more serious as ironclad technology developed . Heavier guns to penetrate ever @-@ thicker armor meant that fewer guns could be carried . Furthermore , the adoption of ramming as an important tactic meant the need for ahead and all @-@ round fire . These problems led to broadside designs being superseded by designs that gave greater all @-@ round fire , which included central @-@ battery , turret , and barbette designs . + + = = = = Turrets , batteries and barbettes = = = = + + There were two main design alternatives to the broadside . In one design , the guns were placed in an armoured casemate amidships : this arrangement was called the ' box @-@ battery ' or ' centre @-@ battery ' . In the other , the guns could be placed on a rotating platform to give them a broad field of fire ; when fully armored , this arrangement was called a turret and when partially armored or unarmored , a barbette . + The centre @-@ battery was the simpler and , during the 1860s and 1870s , the more popular method . Concentrating guns amidships meant the ship could be shorter and handier than a broadside type . The first full @-@ scale centre @-@ battery ship was HMS Bellerophon of 1865 ; the French laid down centre @-@ battery ironclads in 1865 which were not completed until 1870 . Centre @-@ battery ships often , but not always , had a recessed freeboard enabling some of their guns to fire directly ahead . + The turret was first used in naval combat on the USS Monitor in 1862 , with a type of turret designed by the Swedish engineer John Ericsson . A competing turret design was proposed by the British inventor Cowper Coles with a prototype of this installed on HMS Trusty in 1861 for testing and evaluation purposes . Ericsson 's turret turned on a central spindle , and Coles 's turned on a ring of bearings . Turrets offered the maximum arc of fire from the guns , but there were significant problems with their use in the 1860s . The fire arc of a turret would be considerably limited by masts and rigging , so they were unsuited to use on the earlier ocean @-@ going ironclads . The second problem was that turrets were extremely heavy . Ericsson was able to offer the heaviest possible turret ( guns and armour protection ) by deliberately designing a ship with very low freeboard . The weight thus saved from having a high broadside above the waterline was diverted to actual guns and armour . Low freeboard , however , also meant a smaller hull and therefore a smaller capacity for coal storage — and therefore range of the vessel . In many respects , the turreted , low @-@ freeboard Monitor and the broadside sailer HMS Warrior represented two opposite extremes in what an ' Ironclad ' was all about . The most dramatic attempt to compromise these two extremes , or ' squaring this circle ' , was designed by Captain Cowper Phipps Coles : HMS Captain , a dangerously low freeboard turret ship which nevertheless carried a full rig of sail , and which subsequently capsized not long after her launch in 1870 . Her half @-@ sister HMS Monarch was restricted to firing from her turrets only on the port and starboard beams . The third Royal Navy ship to combine turrets and masts was HMS Inflexible of 1876 , which carried two turrets on either side of the centre @-@ line , allowing both to fire fore , aft and broadside . + A lighter alternative to the turret , particularly popular with the French navy , was the barbette . These were fixed armored towers which held a gun on a turntable . The crew was sheltered from direct fire , but vulnerable to plunging fire , for instance from shore emplacements . The barbette was lighter than the turret , needing less machinery and no roof armor — though nevertheless some barbettes were stripped of their armor plate to reduce the top @-@ weight of their ships . The barbette became widely adopted in the 1880s , and with the addition of an armored ' gun @-@ house ' , transformed into the turrets of the pre @-@ Dreadnought battleships . + + = = = Torpedoes = = = + + The ironclad age saw the development of explosive torpedoes as naval weapons , which helped complicate the design and tactics of ironclad fleets . The first torpedoes were static mines , used extensively in the American Civil War . That conflict also saw the development of the spar torpedo , an explosive charge pushed against the hull of a warship by a small boat . For the first time , a large warship faced a serious threat from a smaller one — and given the relative inefficiency of shellfire against ironclads , the threat from the spar torpedo was taken seriously . The U.S. Navy converted four of its monitors to become turretless armored spar @-@ torpedo vessels while under construction in 1864 – 5 , but these vessels never saw action . Another proposal , the towed or ' Harvey ' torpedo , involved an explosive on a line or outrigger ; either to deter a ship from ramming or to make a torpedo attack by a boat less suicidal . + A more practical and influential weapon was the self @-@ propelled or Whitehead torpedo . Invented in 1868 and deployed in the 1870s , the Whitehead torpedo formed part of the armament of ironclads of the 1880s like HMS Inflexible and the Italian Caio Duilio and Enrico Dandolo . The ironclad 's vulnerability to the torpedo was a key part of the critique of armored warships made by the Jeune Ecole school of naval thought ; it appeared that any ship armored enough to prevent destruction by gunfire would be slow enough to be easily caught by torpedo . In practice , however , the Jeune Ecole was only briefly influential and the torpedo formed part of the confusing mixture of weapons possessed by ironclads . + + = = Armor and construction = = + + The first ironclads were built on wooden or iron hulls , and protected by wrought iron armor backed by thick wooden planking . Ironclads were still being built with wooden hulls into the 1870s . + + = = = Hulls : iron , wood and steel = = = + + Using iron construction for warships offered advantages for the engineering of the hull . However , unarmored iron had many military disadvantages , and offered technical problems which kept wooden hulls in use for many years , particularly for long @-@ range cruising warships . + Iron ships had first been proposed for military use in the 1820s . In the 1830s and 1840s , France , Britain and the United States had all experimented with iron @-@ hulled but unarmored gunboats and frigates . However , the iron @-@ hulled frigate was abandoned by the end of the 1840s , because iron hulls were more vulnerable to solid shot ; iron was more brittle than wood , and iron frames more likely to fall out of shape than wood . + The unsuitability of unarmored iron for warship hulls meant that iron was only adopted as a building material for battleships when protected by armor . However , iron gave the naval architect many advantages . Iron allowed larger ships and more flexible design , for instance the use of watertight bulkheads on the lower decks . Warrior , built of iron , was longer and faster than the wooden @-@ hulled Gloire . Iron could be produced to order and used immediately , in contrast to the need to give wood a long period of seasoning . And , given the large quantities of wood required to build a steam warship and the falling cost of iron , iron hulls were increasingly cost @-@ effective . The main reason for the French use of wooden hulls for the ironclad fleet built in the 1860s was that the French iron industry could not supply enough , and the main reason why Britain built its handful of wooden @-@ hulled ironclads was to make best use of hulls already started and wood already bought . + Wooden hulls continued to be used for long @-@ range and smaller ironclads , because iron nevertheless had a significant disadvantage . Iron hulls suffered quick fouling by marine life , slowing the ships down — manageable for a European battlefleet close to dry docks , but a difficulty for long @-@ range ships . The only solution was to sheath the iron hull first in wood and then in copper , a laborious and expensive process which made wooden construction remain attractive . Iron and wood were to some extent interchangeable : the Japanese Kongō and Hiei ordered in 1875 were sister @-@ ships , but one was built of iron and the other of composite construction . + After 1872 , steel started to be introduced as a material for construction . Compared to iron , steel allows for greater structural strength for a lower weight . The French Navy led the way with the use of steel in its fleet , starting with the Redoutable , laid down in 1873 and launched in 1876 . Redoutable nonetheless had wrought iron armor plate , and part of her exterior hull was iron rather than steel . + Even though Britain led the world in steel production , the Royal Navy was slow to adopt steel warships . The Bessemer process for steel manufacture produced too many imperfections for large @-@ scale use on ships . French manufacturers used the Siemens @-@ Martin process to produce adequate steel , but British technology lagged behind . The first all @-@ steel warships built by the Royal Navy were the dispatch vessels Iris and Mercury , laid down in 1875 and 1876 . + + = = = Armor and protection schemes = = = + + Iron @-@ built ships used wood as part of their protection scheme . HMS Warrior was protected by 4 @.@ 5 in ( 114 mm ) of wrought iron backed by 15 in ( 381 mm ) of teak , the strongest shipbuilding wood . The wood played two roles , preventing spalling and also preventing the shock of a hit damaging the structure of the ship . Later , wood and iron were combined in ' sandwich ' armor , for instance in HMS Inflexible . + Steel was also an obvious material for armor . It was tested in the 1860s , but the steel of the time was too brittle and disintegrated when struck by shells . Steel became practical to use when a way was found to fuse steel onto wrought iron plates , giving a form of compound armor . This compound armor was used by the British in ships built from the late 1870s , first for turret armor ( starting with HMS Inflexible ) and then for all armor ( starting with HMS Colossus of 1882 ) . The French and German navies adopted the innovation almost immediately , with licenses being given for the use of the ' Wilson System ' of producing fused armor . + The first ironclads to have all @-@ steel armor were the Italian Caio Duilio and Enrico Dandolo . Though the ships were laid down in 1873 their armor was not purchased from France until 1877 . The French navy decided in 1880 to adopt compound armor for its fleet , but found it limited in supply , so from 1884 the French navy was using steel armor . Britain stuck to compound armor until 1889 . + The ultimate ironclad armor was case hardened nickel @-@ steel . In 1890 , the U.S. Navy tested steel armor hardened by the Harvey process and found it superior to compound armor . For several years ' Harvey steel ' was the state of the art , produced in the U.S. , France , Germany , Britain , Austria and Italy . In 1894 , the German firm Krupp developed gas cementing , which further hardened steel armor . The German Kaiser Friedrich III , laid down in 1895 , was the first ship to benefit from the new ' Krupp armor ' and the new armor was quickly adopted ; the Royal Navy using it from HMS Canopus , laid down in 1896 . By 1901 almost all new battleships used Krupp armor , though the U.S. continued to use Harvey armor alongside until the end of the decade . + The equivalent strengths of the different armor plates was as follows : 15 in ( 381 mm ) of wrought iron was equivalent to 12 in ( 305 mm ) of either plain steel or compound iron and steel armor , and to 7 @.@ 75 in ( 197 mm ) of Harvey armor or 5 @.@ 75 in ( 146 mm ) of Krupp armor . + Ironclad construction also prefigured the later debate in battleship design between tapering and ' all @-@ or @-@ nothing ' armour design . Warrior was only semi @-@ armoured , and could have been disabled by hits on the bow and stern . As the thickness of armor grew to protect ships from the increasingly heavy guns , the area of the ship which could be fully protected diminished . Inflexible 's armor protection was largely limited to the central citadel amidships , protecting boilers and engines , turrets and magazines , and little else . An ingenious arrangement of cork @-@ filled compartments and watertight bulkheads was intended to keep her stable and afloat in the event of heavy damage to her un @-@ armored sections . + + = = Propulsion : steam and sail = = + + The first ocean @-@ going ironclads carried masts and sails like their wooden predecessors , and these features were only gradually abandoned . Early steam engines were inefficient ; the wooden steam fleet of the Royal Navy could only carry " 5 to 9 days coal " , and the situation was similar with the early ironclads . Warrior also illustrates two design features which aided hybrid propulsion ; she had retractable screws to reduce drag while under sail ( though in practice the steam engine was run at a low throttle ) , and a telescopic funnel which could be folded down to the deck level . + Ships designed for coastal warfare , like the floating batteries of the Crimea , or USS Monitor and her sisters , dispensed with masts from the beginning . The British HMS Devastation , started in 1869 , was the first large , ocean @-@ going ironclad to dispense with masts . Her principal role was for combat in the English Channel and other European waters ; and while her coal supplies gave her enough range to cross the Atlantic , she would have had little endurance on the other side of the ocean . The Devastation and the similar ships commissioned by the British and Russian navies in the 1870s were the exception rather than the rule . Most ironclads of the 1870s retained masts , and only the Italian navy , which during that decade was focused on short @-@ range operations in the Adriatic , built consistently mastless ironclads . + During the 1860s , steam engines improved with the adoption of double @-@ expansion steam engines , which used 30 – 40 % less coal than earlier models . The Royal Navy decided to switch to the double @-@ expansion engine in 1871 , and by 1875 they were widespread . However , this development alone was not enough to herald the end of the mast . Whether this was due to a conservative desire to retain sails , or was a rational response to the operational and strategic situation , is a matter of debate . A steam @-@ only fleet would require a network of coaling stations worldwide , which would need to be fortified at great expense to stop them falling into enemy hands . Just as significantly , because of unsolved problems with the technology of the boilers which provided steam for the engines , the performance of double @-@ expansion engines was rarely as good in practice as it was in theory . + During the 1870s the distinction grew between ' first @-@ class ironclads ' or ' battleships ' on the one hand , and ' cruising ironclads ' designed for long @-@ range work on the other . The demands on first @-@ class ironclads for very heavy armor and armament meant increasing displacement , which reduced speed under sail ; and the fashion for turrets and barbettes made a sailing rig increasingly inconvenient . HMS Inflexible , launched in 1876 but not commissioned until 1881 , was the last British battleship to carry masts , and these were widely seen as a mistake . The start of the 1880s saw the end of sailing rig on ironclad battleships . + Sails persisted on ' cruising ironclads ' for much longer . During the 1860s , the French navy had produced the Alma and La Galissonnière classes as small , long @-@ range ironclads as overseas cruisers and the British had responded with ships like HMS Swiftsure of 1870 . The Russian ship General @-@ Admiral , laid down in 1870 and completed in 1875 , was a model of a fast , long @-@ range ironclad which was likely to be able to outrun and outfight ships like Swiftsure . Even the later HMS Shannon , often described as the first British armored cruiser , would have been too slow to outrun General @-@ Admiral . While Shannon was the last British ship with a retractable propellor , later armored cruisers of the 1870s retained sailing rig , sacrificing speed under steam in consequence . It took until 1881 for the Royal Navy to lay down a long @-@ range armored warship capable of catching enemy commerce raiders , HMS Warspite , which was completed in 1888 . While sailing rigs were obsolescent for all purposes by the end of the 1880s , rigged ships were in service until the early years of the 20th century . + The final evolution of ironclad propulsion was the adoption of the triple @-@ expansion steam engine , a further refinement which was first adopted in HMS Sans Pareil , laid down in 1885 and commissioned in 1891 . Many ships also used a forced draught to get additional power from their engines , and this system was widely used until the introduction of the steam turbine in the mid @-@ 1900s ( decade ) . + + = = Fleets = = + + While ironclads spread rapidly in navies worldwide , there were few pitched naval battles involving ironclads . Most European nations settled differences on land , and the Royal Navy struggled to maintain a deterrent parity with at least France , while providing suitable protection to Britain 's commerce and colonial outposts worldwide . Ironclads remained , for the British Royal Navy , a matter of defending the British Isles first and projecting power abroad second . Those naval engagements of the latter half of the 19th @-@ century which involved ironclads normally involved colonial actions or clashes between second @-@ rate naval powers . But these encounters were often enough to convince British policy @-@ makers of the increasing hazards of strictly naval foreign intervention , from Hampton Roads in the American Civil War to the hardening combined defences of naval arsenals such as Kronstadt and Cherbourg . + There were many types of ironclads : + Seagoing ships intended to " stand in the line of battle " ; the precursors of the battleship . + Coastal service and riverine vessels , including ' floating batteries ' and ' monitors' + Vessels intended for commerce raiding or protection of commerce , called ' armoured cruisers' + + = = = Navies = = = + + The United Kingdom possessed the largest navy in the world for the whole of the ironclad period . The Royal Navy was the second to adopt ironclad warships , and it applied them worldwide in their whole range of roles . In the age of sail , the British strategy for war depended on the Royal Navy mounting a blockade of the ports of the enemy . Because of the limited endurance of steamships , this was no longer possible , so the British at times considered the risk @-@ laden plan of engaging an enemy fleet in harbor as soon as war broke out . To this end , the Royal Navy developed a series of ' coast @-@ defence battleships ' , starting with the Devastation class . These ' breastwork monitors ' were markedly different from the other high @-@ seas ironclads of the period and were an important precursor of the modern battleship . As long @-@ range monitors they could reach Bermuda unescorted , for example . However , they were still armed with only four heavy guns and were as vulnerable to mines and obstructions ( and enemy monitors ) as the original monitors of the Union Navy proved to be during the Civil War . The British prepared for an overwhelming mortar bombardment of Kronstadt by the close of the Crimean War , but never considered running the smoke @-@ ridden , shallow @-@ water gauntlet straight to St. Petersburg with ironclads . Likewise , monitors proved acutely unable to ' overwhelm ' enemy fortifications single @-@ handed during the American conflict , though their low @-@ profile and heavy armour protection made them ideal for running gauntlets . Mines and obstructions , however , negated these advantages — a problem the British Admiralty frequently acknowledged but never countered throughout the period . The British never laid down enough Devastation @-@ class ' battleships ' to instantly overwhelm Cherbourg , Kronstadt or even New York City with gunfire . Although throughout the 1860s and 1870s the Royal Navy was still in many respects superior to its potential rivals , by the early 1880s widespread concern about the threat from France and Germany culminated in the Naval Defence Act , which promulgated the idea of a ' two @-@ power standard ' , that Britain should possess as many ships as the next two navies combined . This standard provoked aggressive shipbuilding in the 1880s and 1890s . + British ships did not participate in any major wars in the ironclad period . The Royal Navy 's ironclads only saw action as part of colonial battles or one @-@ sided engagements like the bombardment of Alexandria in 1882 . Defending British interests against Ahmed ' Urabi 's Egyptian revolt , a British fleet opened fire on the fortifications around the port of Alexandria . A mixture of centre @-@ battery and turret ships bombarded Egyptian positions for most of a day , forcing the Egyptians to retreat ; return fire from Egyptian guns was heavy at first , but inflicted little damage , killing only five British sailors . Few Egyptian guns were actually dismounted , on the other hand , and the fortifications themselves were typically left intact . Had the Egyptians actually utilised the heavy mortars that were at their disposal , they might have quickly turned the tide , for the attacking British ironclads found it easy ( for accuracy 's sake ) to simply anchor whilst firing — perfect targets for high @-@ angle fire upon their thinly armoured topdecks . + The French navy built the first ironclad to try to gain a strategic advantage over the British , but were consistently out @-@ built by the British . Despite taking the lead with a number of innovations like breech @-@ loading weapons and steel construction , the French navy could never match the size of the Royal Navy . In the 1870s , the construction of ironclads ceased for a while in France as the Jeune Ecole school of naval thought took prominence , suggesting that torpedo boats and unarmored cruisers would be the future of warships . Like the British , the French navy saw little action with its ironclads ; the French blockade of Germany in the Franco @-@ Prussian War was ineffective , as the war was settled entirely on land . + Russia built a number of ironclads , generally copies of British or French designs . Nonetheless , there were real innovations from Russia ; the first true type of ironclad armored cruiser , the General @-@ Admiral of the 1870s , and a set of remarkably badly designed circular battleships referred to as ' popovkas ' ( for Admiral Popov , who conceived the design ) . The Russian Navy pioneered the wide @-@ scale use of torpedo boats during the Russo @-@ Turkish War of 1877 – 1878 , mainly out of necessity because of the superior numbers and quality of ironclads used by the Turkish navy . Russia expanded her navy in the 1880s and 1890s with modern armored cruisers and battleships , but the ships were manned by inexperienced crews and politically appointed leadership , which enhanced their defeat in the Battle of Tsushima on 27 May 1905 . + The U.S. Navy ended the Civil War with about fifty monitor @-@ type coastal ironclads ; by the 1870s most of these were laid up in reserve , leaving the USA virtually without an ironclad fleet . Another five large monitors were ordered in the 1870s . The limitations of the monitor type effectively prevented the USA from projecting power overseas , and until the 1890s the USA would have come off badly in a conflict with even Spain or the Latin American powers . The 1890s saw the beginning of what became the Great White Fleet , and it was the modern pre @-@ Dreadnoughts and armored cruisers built in the 1890s which defeated the Spanish fleet in the Spanish – American War of 1898 . This started a new era of naval warfare . + Ironclads were widely used in South America . Both sides used ironclads in the Chincha Islands War between Spain and the combined forces of Peru and Chile in the early 1860s . The powerful Spanish Numancia participated in the Battle of Callao but was unable to inflict significant damage to the Callao defences . Besides , Peru was able to deploy two locally built ironclads based on American Civil War designs , the Loa ( a wooden ship converted into a casemate ironclad ) and the Victoria ( a small monitor armed with a single 68 @-@ pdr gun ) , as well as two British @-@ built ironclads : Independencia , a centre @-@ battery ship , and the turret ship Huáscar . Numancia was the first ironclad to circumnavigate the world , arriving in Cádiz on 20 September 1867 , and earning the motto : " Enloricata navis que primo terram circuivit " [ " First ironclad ship to sail around the world " ] ) . In the War of the Pacific in 1879 , both Peru and Chile had ironclad warships , including some of those used a few years previously against Spain . While the Independencia ran aground early on , the Peruvian ironclad ' Huáscar made a great impact against Chilean shipping , delaying Chilean ground invasion by six months . She was eventually caught by two more modern Chilean centre @-@ battery ironclads , the Blanco Encalada and the Almirante Cochrane at the Battle of Angamos Point . + Ironclads were also used from the inception of the Imperial Japanese Navy . The Kōtetsu ( Japanese : 甲鉄 , literally " Ironclad " , later renamed Azuma 東 , " East " ) had a decisive role in the Naval Battle of Hakodate Bay in May 1869 , which marked the end of the Boshin War , and the complete establishment of the Meiji Restoration . The IJN continued to develop its strength and commissioned a number of warships from British and European shipyards , first ironclads and later armored cruisers . These ships engaged the Chinese Beiyang fleet which was superior on paper at least at the Battle of the Yalu River . Thanks to superior short @-@ range firepower , the Japanese fleet came off better , sinking or severely damaging eight ships and receiving serious damage to only four . The naval war was concluded the next year at the Battle of Weihaiwei , where the strongest remaining Chinese ships were surrendered to the Japanese . + + = = End of the ironclad warship = = + + There is no clearly defined end to the ironclad , besides the transition from wood hulls to all @-@ metal . Ironclads continued to be used in World War I. Towards the end of the 19th century , the descriptions ' battleship ' and ' armored cruiser ' came to replace the term ' ironclad ' . + The proliferation of ironclad battleship designs came to an end in the 1890s as navies reached a consensus on the design of battleships , producing the type known as the pre @-@ Dreadnought . These ships are sometimes covered in treatments of the ironclad warship . The next evolution of battleship design , the dreadnought , is never referred to as an ' ironclad ' . + Most of the ironclads of the 1870s and 1880s served into the 1900s ( decade ) . For instance , a handful of US navy monitors laid down in the 1870s saw active service in World War I. Pre @-@ Dreadnought battleships and cruisers of the 1890s saw widespread action in World War I and in some cases through to World War II . + + = = = Legacy = = = + + The example of the ironclads had some bearing on the history of the tank , as ironclad warships became an inspiration for ideas of landships and other armored vehicles . H. G. Wells , in his short story The Land Ironclads , published in The Strand Magazine in December 1903 , described the use of large , armoured cross @-@ country vehicles , armed with cannon and machine guns , and equipped with pedrail wheels + + = = Today = = + + A number of ironclads have been preserved or reconstructed as museum ships . + Parts of USS Monitor have been recovered and are being conserved and displayed at the Mariners ' Museum in Newport News , Virginia + HMS Warrior is today a fully restored museum ship in Portsmouth , England + Huáscar is berthed at the port of Talcahuano , Chile , on display for visitors . + The City @-@ class ironclad USS Cairo is currently on display in Vicksburg , Mississippi . + Northrop Grumman in Newport News constructed a full @-@ scale replica of USS Monitor . The replica was laid down in February 2005 and completed just two months later . + The Dutch Ramtorenschip ( Coastal ram ) Zr . Ms. Buffel is currently under display in the Maritime Museum Rotterdam . + The Dutch Ramtorenschip ( Coastal ram ) Zr . Ms. Schorpioen is a museum ship at Den Helder . + The complete , recovered wooden hull of the CSS Neuse , a casemate ram ironclad , is on view in Kinston , North Carolina , and , in another part of town on the Neuse River , the recreated ship , named CSS Neuse II , is nearly built and can be visited . + The hull of the casemate ironclad CSS Jackson can be seen in the National Civil War Naval Museum at Port Columbus , Georgia . + The new United States Navy Zumwalt @-@ class guided missile destroyer has been described as bearing resemblance to ironclads . + + + = Little Gidding ( poem ) = + + Little Gidding is the fourth and final poem of T. S. Eliot 's Four Quartets , a series of poems that discuss time , perspective , humanity , and salvation . It was first published in September 1942 after being delayed for over a year because of the air @-@ raids on Great Britain during World War II and Eliot 's declining health . The title refers to a small Anglican community in Huntingdonshire , established by Nicholas Ferrar in the 17th century and scattered during the English Civil War . + The poem uses the combined image of fire and Pentecostal fire to emphasise the need for purification and purgation . According to the poet , humanity 's flawed understanding of life and turning away from God leads to a cycle of warfare , but this can be overcome by recognising the lessons of the past . Within the poem , the narrator meets a ghost that is a combination of various poets and literary figures . Little Gidding focuses on the unity of past , present , and future , and claims that understanding this unity is necessary for salvation . + + = = Background = = + + Following the completion of the third Four Quartets poem , The Dry Salvages , Eliot 's health declined and he stayed in Shamley Green , Surrey while he recovered . During this time , Eliot started writing Little Gidding . The first draft was completed in July 1941 but he was dissatisfied with it . He believed the problems with the poem lay with his own inability to write , and that , precipitated by air raids on London , he had started the poem with too little preparation and had written it too quickly . After the first draft was written , he set the poem aside , and he left in September to lecture throughout Great Britain . + After months of not working on the poem , Eliot began to feel compelled to finish it ; it was not until August 1942 , however , that he started working on it again . In total , there were five drafts . The poem was finished by 19 September 1942 and published in the October New English Weekly . Little Gidding was intended to conclude the Four Quartets series , summarising Eliot 's views expressed in this series of poems . + Little Gidding was the home of an Anglican community established in 1626 by Nicholas Ferrar . The Ferrar household lived a Christian life according to High Church principles and the Book of Common Prayer . The religious community was dispersed during the English Civil War between Parliamentarians and Royalists but reformed , ending with the death of John Ferrar in 1657 . Eliot had visited the site in May 1936 . + Unlike the other locations mentioned in the titles of the Four Quartets poems , Eliot had no direct connection to the original Christian community . As such , the community is supposed to represent almost any religious community . + + = = Poem = = + + Critics classify Little Gidding as a poem of fire with an emphasis on purgation and the Pentecostal fire . The beginning of the poem discusses time and winter , with attention paid to the arrival of summer . The images of snow , which provoke desires for a spiritual life , transition into an analysis of the four classical elements of fire , earth , air and water and how fire is the primary element of the four . Following this is a discussion on death and destruction , things unaccomplished , and regret for past events . + While using Dante 's terza rima style , the poem continues by describing the Battle of Britain . The image of warfare merges with the depiction of Pentecost , and the Holy Spirit is juxtaposed with the air @-@ raids on London . In the second section , a ghost , representing the poets of the past stuck between worlds , begins talking to the narrator of the poem . The ghost discusses change , art in general , and how humankind is flawed . The only way to overcome the problematic condition of humanity , according to the ghost , is to experience purgation through fire . The fire is described in a manner similar to Julian of Norwich 's writing about God 's love and discussed in relationship to the shirt of Nessus , a shirt that burns its wearer . Little Gidding continues by describing the eternalness of the present and how history exists in a pattern . The poem concludes by explaining how sacrifice is needed to allow an individual to die into life and be reborn , and that salvation should be the goal of humankind . + + = = Themes = = + + In terms of renewal , Eliot believed that suffering was needed for all of society before new life could begin . The original Little Gidding community was built for living on monastic lines , but the community was damaged and dispersed by Puritan forces during the English Civil War in 1646 . The church , the centre of the community , was restored in 1714 and again in 1853 . The image of religious renewal is combined with the image of the London air @-@ raids and the constant fighting and destruction within the world . This compound image is used to discuss the connection of holy places with the Holy Spirit , Pentecost , communion with the dead , and the repetition of history . The theme is also internal to Eliot 's own poems ; the image of the rose garden at the end Little Gidding is the image that begins Burnt Norton and the journey is made circular . Also , the depiction of time within the poem is similar to the way time operates within The Family Reunion . + Like the other poems making up the Four Quartets , Little Gidding deals with the past , present , and future , and humanity 's place within them as each generation is seemingly united . In the second section , there is a ghost who is the compilation of various poets , including Dante , Swift , Yeats , and others . When the ghost joins the poet , the narrator states " Knowing myself yet being someone other " . This suggests that the different times merge at the same time that the different personalities begin to merge , allowing a communication and connection with the dead . Later , in the fourth section , humanity is given a choice between the Holy Spirit or the bombing of London ; redemption or destruction . God 's love allows humankind to be redeemed and escape the living hell through purgation by fire . The end of the poem describes how Eliot has attempted to help the world as a poet . He parallels his work in language with working on the soul or working on society . + The ghost , a combination of many literary figures , was originally addressed in the poem as " Ser Brunetto " before being revised as an ambiguous " you " . " Ser Brunetto " was Dante 's way of addressing Brunetto Latini , a former mentor whom he meets in Hell to which he has been condemned for sodomy . Eliot , in a letter to John Hayward dated 27 August 1942 , explained why he changed the wording : + I think you will recognise that it was necessary to get rid of Brunetto for two reasons . The first is that the visionary figure has now become somewhat more definite and will no doubt be identified by some readers with Yeats though I do not mean anything so precise as that . However , I do not wish to take the responsibility of putting Yeats or anybody else into Hell and I do not want to impute to him the particular vice which took Brunetto there . Secondly , although the reference to that Canto is intended to be explicit , I wish the effect of the whole to be Purgatorial which is more appropriate . That brings us to the reference to swimming in fire which you will remember at the end of Purgatorio 26 where the poets are found . + The theme of swimming through flames is connected to the depiction of Guido Guinizelli , a poet that influenced Dante , seeking such a state in Purgatorio XXVI . However , the depiction of swimming was transformed into an image of dancing , an act that appears throughout Yeats 's poetry , within purgatorial flames . The critic Dominic Manganiello suggests that , in combining the image of dancing with purgation , Eliot merges Dante 's and Yeats 's poetic themes . + + = = Reception = = + + Critics such as Malcolm Cowley and Delmore Schwartz describe mixed emotions about the religiosity of the poem . Cowley emphasised the mystical nature of the poem and how its themes were closer to Buddhism than Anglicanism while mentioning his appreciation of many of the passages . Schwartz also mentioned the Buddhist images and his admiration for many of the lines in Little Gidding . F. B. Pinion believed that the fourth section of the poem costs " Eliot more trouble and vexation than any passage of the same length he ever wrote , and is his greatest achievement in the Four Quartets . " E. M. Forster did not like Eliot 's emphasis on pain and responded to the poem : " Of course there 's pain on and off through each individual 's life ... You can 't shirk it and so on . But why should it be endorsed by the schoolmaster and sanctified by the priest until the fire and the rose are one when so much of it is caused by disease and bullies ? It is here that Eliot becomes unsatisfactory as a seer . " Writing in 2003 , Roger Scruton wrote that in " Little Gidding " Eliot achieved " that for which he envies Dante — namely , a poetry of belief , in which belief and words are one , and in which the thought cannot be prized free from the controlled and beautiful language " . + + + = The Portage to San Cristobal of A.H. = + + The Portage to San Cristobal of A.H. is a 1981 literary and philosophical novella by George Steiner , in which Jewish Nazi hunters find a fictional Adolf Hitler ( A.H. ) alive in the Amazon jungle thirty years after the end of World War II . The book generated considerable controversy after its publication because in it , Steiner , who is Jewish , allows Hitler to defend himself when he is put on trial in the jungle by his captors . There Hitler maintains that Israel owes its existence to the Holocaust and that he is the " benefactor of the Jews " . + The Portage to San Cristobal of A.H. was a 1983 finalist in the PEN / Faulkner Award for Fiction . It was adapted for the theatre by British playwright Christopher Hampton and was staged in London in April 1982 with Alec McCowen playing the part of Adolf Hitler . It was also staged in Hartford , Connecticut in the United States in 1983 and starred John Cullum as Hitler . + + = = Plot summary = = + + From his base in Tel Aviv , Holocaust survivor Emmanuel Lieber directs a group of Jewish Nazi hunters in search of Adolf Hitler . Lieber believes that the former Führer is still alive , and following rumours and hearsay , he tracks Hitler 's movements through South America , until after months of wading through swamps in the Amazon jungle , the search party finds the 90 @-@ year @-@ old alive in a clearing . Lieber flies to San Cristóbal where he awaits the group 's return with their captive . But getting the old man out of the jungle alive is more difficult than getting in , and their progress is further hampered by heavy thunderstorms . + Meanwhile , broken and incoherent radio messages between Lieber and the search party are intercepted by intelligence agents tracking their progress , and rumours begin to spread across the world of Hitler 's capture . Debates flare up over his impending trial , where it will be held and under whose jurisdiction . Orosso is identified as the nearest airfield to the last known location of the search party , and aircraft begin arriving at the hitherto unknown town . But when the search party loses radio contact with Lieber , they must make a decision : do they sit out the storms and deliver their captive to Lieber later , or do they try Hitler in the jungle before their prize is snatched from them by the world at large , who they know will be waiting ? Their decision is the latter , and against Lieber 's advice ( " You must not let him speak ... his tongue is like no other " ) they prepare for a trial with a judge , prosecution and defence attorneys selected from the members of the search party . Teku , a local Indian tracker , is asked to observe the trial as an independent witness . + The attention Hitler is receiving , however , renews his strength , and when the trial begins , he brushes aside his " defence attorney " and begins a long speech in four parts in his own defence : + Firstly , Hitler claims he took his doctrines from the Jews and copied the notion of the master race from the Chosen people and their need to separate themselves from the " unclean " . " My racism is a parody of yours , a hungry imitation . " + Hitler justifies the Final Solution by maintaining that the Jews ' God , purer than any other , enslaves its subjects , continually demanding more than they can give and " blackmailing " them with ideals that cannot be attained . The " virus of utopia " had to be stopped . + Hitler states that he was not the originator of evil . " [ Stalin ] had perfected genocide when I was still a nameless scribbler in Munich . " Further , Hitler asserts that the number of lives lost due to his actions are dwarfed by various world atrocities , including those in Russia , China and Africa . + Lastly , Hitler maintains that the Reich begat Israel and suggests that he is the Messiah " whose infamous deeds were allowed by God in order to bring His people home . " He closes by asking , " Should you not honour me who have made ... Zion a reality ? " + At the end of his speech , Teku is the first to react and jumps up shouting " Proven " , only to be drowned out by the appearance of a helicopter over the clearing . + + = = Main characters = = + + Emmanuel Lieber – Jewish Holocaust survivor and director of the search party to find Hitler ; after crawling out of a death pit in Bialka he never took the time to mend and embarked on a life @-@ consuming obsession to bring those responsible for the genocide to justice . + Search party ( all Jewish with family ties to the Holocaust , except for John Asher ) + Simeon – search party leader and " presiding judge " at Hitler 's trial ; he is Lieber 's confidant and torn between leading the party into " unmapped quicksand and green bogs " and turning his back on the " quiet mania of Lieber 's conviction " . + Gideon Benasseraf – falls ill and dies before the trial begins ; during one of his fever @-@ induced ramblings he suggests that Hitler is Jewish ; he had sought out Lieber after being released from a sanatorium and spending three years recuperating in Paris where the care @-@ free living consumed him with guilt . + Elie Barach – Orthodox Jew and " prosecution attorney " at the trial ; he is the moral compass of the group , but his convictions are disturbed by Gideon Benasseraf 's fever @-@ induced assertions that Hitler is Jewish and ends up believing that Hitler may be the second Messiah . + Isaac Amsel – an 18 @-@ year @-@ old boy and witness at the trial ; he is the son of Isaac Amsel senior , former member of the search party killed earlier in a skirmish in São Paulo ; he joined the party to avenge his father 's death . + John Asher – half @-@ Jewish and reluctant " defence attorney " at the trial ; fascinated by the capture of Bormann and the rumours circulating that Hitler may be alive , he had approached Nazi hunter Wiesenthal who directed him to Lieber ; despite being an " outsider " ( no ties to the Holocaust ) Lieber assigned him to the search party because of his military training and his clear @-@ headedness ( " no metaphysical lusts , no cravings for retribution " ) . + Teku – local Indian tracker and independent witness at the trial ; previously the search party 's guide who had abandoned them when they insisted on entering uncharted regions of the jungle , he continued tracking them from a distance before revealing himself . + Adolf Hitler – now 90 years old , the former leader of the Third Reich had not died in the Führerbunker in Berlin , but escaped to South America and hid in the Amazon jungle . + + = = Background and publication = = + + George Steiner , literary critic for The New Yorker and The New York Times , had written about the Holocaust in some of his previous books , including Anno Domini ( 1964 ) , Language and Silence ( 1967 ) and In Bluebeard 's Castle ( 1971 ) . Many of the ideas Steiner expresses in The Portage to San Cristobal of A.H. were reworked from these earlier works . Steiner told New York Times editor D. J. R. Bruckner that this book arose out of his lifelong work on language . " Central to everything I am and believe and have written is my astonishment ... that you can use human speech both to bless , to love , to build , to forgive and also to torture , to hate , to destroy and to annihilate . " + Commenting on the controversy the book generated , Steiner admitted to literary journalist and critic Ron Rosenbaum ( author of Explaining Hitler ) that he too was disturbed by it , adding that his fictional Hitler had gotten the better of him , " golem- or Frankenstein @-@ like " . He said that it felt like the book " wrote me " . Steiner also pointed out that the novella is not only about his thoughts on the Holocaust , but also about the horrific events that took place in countries like Cambodia , Vietnam , El Salvador and Burundi : " My feeling is that one has to grapple with the abyss if one can . " + Steiner wrote The Portage to San Cristobal of A.H. in 1975 and 1976 in Geneva , Switzerland , and the 120 @-@ page work originally appeared in the Spring 1979 issue of the United States literary magazine , The Kenyon Review . It also appeared in the Spring 1980 issue of Granta , the British literary magazine . Its first publication in book form , with minor revisions by Steiner , was in May 1981 by Faber and Faber in the United Kingdom — and as requested by Steiner , it was a paperback original . The first United States edition was published in hardcover in April 1982 by Simon & Schuster . + + = = Adaptations = = + + The Portage to San Cristobal of A.H. was adapted for the theatre in 1982 by British playwright Christopher Hampton . It was staged in April 1982 at London 's Mermaid Theatre under the direction of John Dexter with Alec McCowen playing the part of Adolf Hitler . McCowen won the 1982 Evening Standard Theatre Award for best actor for this performance . In 1983 the production moved to the United States where it played at the Hartford Stage Company in Hartford , Connecticut , directed by Mark Lamos and starring John Cullum as Hitler . + This book is the only work of fiction by Steiner to have been adapted for the stage . + + = = Reception = = + + Reaction to The Portage to San Cristobal of A.H. was mixed . Anthony Burgess in The Observer called it " astonishing " , Christopher Booker of The Daily Telegraph described it as a " powerful piece " , and English author A. S. Byatt said it was a " masterpiece " . In Explaining Hitler , Ron Rosenbaum called The Portage " A Frankenstein story " , referring to Steiner 's fictive Hitler has having taken on a life of its own . Writing in Time magazine , Otto Friedrich described the book " a philosophic fantasy of remarkable intensity " , adding that by not refuting Hitler 's speech , Steiner deviates from the horrors of traditional Holocaust literature and ends the book " on a note of bleak ambiguity " . + Morris Dickstein of The New York Times was more critical of the book , calling it " a misconceived and badly executed novel , a sideshow distraction from the serious business of thinking through the unspeakable horrors of the Nazi era . " He described it as " wearisome " that is " suffocate [ d ] " by too much " fine writing " ( belles @-@ lettres ) . He also complained that the characters are lifeless , and while they each have detailed histories , they are only " verbal figments " that do not separate them from one another . Finally Dickstein noted that because almost all the points of Hitler 's speech are drawn from some of Steiner 's earlier works , he " unwittingly creates sympathy for Hitler by making him old and pathetic yet also lucid and brilliant — at once absurdly harmless and unconvincingly dangerous . " + In another review in The New York Times John Leonard wrote that while the book has its strong points , " some wit , a catholic disdain , multiplicity of character and a South American swamp @-@ life that terrifies " , its weaknesses are that " the characters are really ideas , ... the symbols clash and there are too many echoes of better books by Kafka and Proust " . But Leonard 's biggest criticism of the book was Hitler 's speech , which he called " obscene " , and Steiner 's decision to end the book at that point , which Leonard said " not only denies the power of art to arrange and transcend , but ... makes me sick to my stomach . " + Writing in the American literary magazine Salmagundi , Alvin H. Rosenfeld called The Portage a " breakthrough work " that " astonishes " . He was struck by the book 's interplay between the landscape of swamp and jungle , and the " landscape of speech " — the former being " brilliantly registered " with its " immense feeling of physicality " , and the latter , " even more dramatic " in the way it exposes " the dark underside of words " and how its use and misuse reveals the true nature of a person . He was particularly impressed by the depiction of Nazi hunter Emmanuel Lieber and his role as representative of the Jewish consciousness . Rosenfeld noted that while Holocaust literature often either soars to " expostulation and apostrophe " , or sinks to " a dwindling sob of elegiac lament " , Steiner 's Lieber " mediates between these two extremes , ... simultaneously records and mourns , coldly enumerates yet carries an immense affect " . What did concern the reviewer , however , was the way Steiner used ideas from his earlier works , that he had put them " virtually verbatim " into Hitler 's mouth , creating the impression that " Steiner 's understanding of Hitler were identical with the latter 's self @-@ understanding " . Rosenfeld also questioned why the book had to end with Hitler 's speech . He said that Steiner 's fictive Hitler plays " the devil 's game of language subversion " , making " madness [ sound ] like music " , something the real Hitler had perfected . By stopping at this point , Rosenfeld felt that Steiner " succumb [ s ] , rhetorically , to the seductive eloquence of negation " , which undermines his own " high standards of moral intelligence " . But overall Rosenfeld said The Portage " must be counted among the most vigorous attempts to portray the presence and meaning of Hitler " , forcing us to confront him " in a way hardly seen before in fiction " . + The Portage to San Cristobal of A.H. was a finalist in the 1983 PEN / Faulkner Award for Fiction . + + = = Controversy = = + + The book generated considerable controversy because of its apparent " admiration for Hitler " . The controversy grew further when the faithful stage adaptation ( " too faithful " , according to Steiner ) was performed in the United Kingdom and the United States . + Hitler 's speech at the end of the book disturbed many readers and critics . Steiner not only lets Hitler justify his past , he allows him the ( almost ) last word before the outside world invades . The fact that Steiner is Jewish made this speech in particular even more contentious . One critic , while acknowledging that Steiner always saw Hitler as " the incarnation of unprecedented and unparalleled evil " , felt that there was no clear distinction in the book between Steiner 's own views and those of his fictional Hitler , even going so far as to accuse Steiner , who rejects Jewish nationalism and is a critic of Israel 's treatment of the Palestinians , of anti @-@ Semitism . + In contrast , a Time magazine article at the time felt that Steiner 's intention for the Hitler speech was to use it to explore his previously stated belief " that Hitler wielded language as an almost supernatural force " , drawing attention to Nazi hunter Emmanuel Lieber 's warning from the book regarding Hitler : " There shall come a man who ... will know the grammar of hell and teach it to others . He will know the sounds of madness and loathing and make them seem music . " + Steiner responded to criticism that Hitler 's speech in this book is unchallenged by saying that it had been done before : for example Satan 's speech in Milton 's Paradise Lost ( 1667 ) , and The Grand Inquisitor 's speech in Dostoyevsky 's The Brothers Karamazov ( 1880 ) . He also reminded the reader that Hitler 's speech is balanced out earlier in the book by Lieber 's long monologue on the horrors of the Holocaust . Finally , Steiner said that his Hitler ( A. H. ) is " a fictive figure " , and that it is not he who has the last word , but Teku , the Indian tracker , who shouts " Proven " . Teku is also the Hebrew word used to indicate that " there are issues here beyond our wisdom to answer or decide . " + + + = Temnospondyli = + + Temnospondyli ( from Greek τέμνειν ( temnein , " to cut " ) and σπόνδυλος ( spondylos , " vertebra " ) ) is a diverse subclass of extinct small to giant tetrapods — often considered primitive amphibians — that flourished worldwide during the Carboniferous , Permian , and Triassic periods . A few species continued into the Cretaceous . Fossils have been found on every continent . During about 210 million years of evolutionary history , they adapted to a wide range of habitats , including fresh water , terrestrial , and even coastal marine environments . Their life history is well understood , with fossils known from the larval stage , metamorphosis , and maturity . Most temnospondyls were semiaquatic , although some were almost fully terrestrial , returning to the water only to breed . These temnospondyls were some of the first vertebrates fully adapted to life on land . Although temnospondyls are considered amphibians , many had characteristics , such as scales , claws , and armour @-@ like bony plates , that distinguish them from modern amphibians . + Temnospondyls have been known since the early 19th century , and were initially thought to be reptiles . They were described at various times as batrachians , stegocephalians , and labyrinthodonts , although these names are now rarely used . Animals now grouped in Temnospondyli were spread out among several amphibian groups until the early 20th century , when they were found to belong to a distinct taxon based on the structure of their vertebrae . Temnospondyli means " cut vertebrae " , as each vertebra is divided into several parts . + Experts disagree over whether temnospondyls were ancestral to modern amphibians ( frogs , salamanders , and caecilians ) , or whether the whole group died out without leaving any descendants . Different hypotheses have placed modern amphibians as the descendants of temnospondyls , another group of early tetrapods called lepospondyls , or even as descendants of both groups ( with caecilians evolving from lepospondyls and frogs and salamanders evolving from temnospondyls ) . Recent studies place a family of temnospondyls called the amphibamids as the closest relatives of modern amphibians . Similarities in teeth , skulls , and hearing structures link the two groups . + + = = Description = = + + Many temnospondyls are much larger than living amphibians , and superficially resemble crocodiles . Others are smaller and resemble salamanders . Most have broad , flat heads that are either blunt ( brevirostrine ) or elongated ( longirostrine ) . The skulls are rounded or triangular in shape when viewed from above , and are usually covered in pits and ridges . The rugged surfaces of bones may have supported blood vessels , which could transfer carbon dioxide to the bones to neutralize acidic build up in the blood ( early semiaquatic tetrapods would have had difficulty expelling carbon dioxide from their bodies while on land , and these dermal bones may have been an early solution to the problem ) . Many temnospondyls also have canal @-@ like grooves in their skulls called sensory sulci . The sulci , which usually run around the nostrils and eye sockets , are part of a lateral line system used to detect vibrations in water . As semiaquatic animals , most temnospondyls have small limbs with four toes on each front foot and five on each hind foot . Terrestrial temnospondyls have larger , thicker limbs , and some even have claws . One unusual terrestrial temnospondyl , Fayella , has relatively long limbs for its body , and probably lived as an active runner able to chase prey . + Homologues of most of the bones of temnospondyls are also seen in other early tetrapods , aside from a few bones in the skull , such as interfrontals , internasals , and interparietals , that have developed in some temnospondyl taxa . Most temnospondyls have tabular horns in the backs of their skulls , rounded projections of bone separated from the rest of the skull by indentations called otic notches ; in some temnospondyls , such as Zatrachys , they are pointed and very prominent . Among the most distinguishing features of temnospondyls are the interpterygoid vacuities , two large holes in the back of the palate . Another pair of holes , choanae , are present in front of these vacuities , and connect the nasal passage with the mouth . Temnospondyls often have teeth on their palates , as well as in their jaws . Some of these teeth are so large , they are referred to as tusks . In some temnospondyls , such as Nigerpeton , tusks in the lower jaw pierce the palate and emerge through openings in the top of the skull . + Very little is known of the soft tissue of temnospondyls . A block of sandstone , described in 2007 from the Early Carboniferous Mauch Chunk Formation of Pennsylvania , included impressions of the bodies of three temnospondyls . These impressions show , when alive , they had smooth skin , robust limbs with webbed feet , and a ridge of skin on their undersides . Trackways referable to small temnospondyls have also been found in Carboniferous and Permian rocks . The trackways , called batrachichni , are usually found in strata deposited around freshwater environments , suggesting the animals had some ties to the water . + Unlike modern amphibians , many temnospondyls are covered in small , closely packed scales . The undersides of most temnospondyls are covered in rows of large ventral plates . During early stages of development , they first have only small , rounded scales . Fossils show , as the animals grew , the scales on the undersides of their bodies developed into large , wide ventral plates . The plates overlap each other in a way that allows a wide range of flexibility . Later semiaquatic temnospondyls , such as trematosaurs and capitosaurs , have no evidence of scales . They may have lost scales to make movement easier under water or to allow cutaneous respiration , the absorption of oxygen through the skin . + Several groups of temnospondyls have large bony plates on their backs . One temnospondyl , Peltobatrachus , has armour @-@ like plating that covers both its back and underside . The temnospondyl Laidleria also has extensive plating on its back . Most members of the family Dissorophidae also have armor , although it only covers the midline of the back with two narrow rows of plates . Other temnospondyls , such as Eryops , have been found with small , disc @-@ like bony scutes that were in life probably embedded in the skin . All of these temnospondyls were adapted to a terrestrial lifestyle . Armor may have offered protection from predators in the case of Peltobatrachus . The scutes may have provided stability for the spine , as they would have limited flexibility and may have been connected by strong ligaments . Temnospondyls such as Sclerothorax and Eryops that may have been at least partly terrestrial also have long neural spines on top of their vertebrae that would have stabilized the spine . Bony scutes are also seen in plagiosaurs , but unlike Peltobatrachus , Laidleria , Eryops , and dissorophids , these animals are thought to have been fully aquatic . Plagiosaurs may have inherited their armor from a terrestrial ancestor , as both Peltobatrachus and Laidleria have been considered close relatives of the group . + Temnospondyls ' vertebrae are divided into several segments . In living tetrapods , the main body of the vertebra is a single piece of bone called the centrum , but in temnospondyls , this region was divided into a pleurocentrum and intercentrum . Two types of vertebrae are recognized in temnospondyls : stereospondylous and rhachitomous vertebrae . In rhachitomous vertebrae , the intercentra are large and wedge @-@ shaped , and the pleurocentra are relatively small blocks that fit between them . Both elements support a spine @-@ like neural arch , and well @-@ developed interlocking projections called zygapophyses strengthen the connections between vertebrae . The strong backbone and strong limbs of many ratchitomous temnospondyls allowed them to be partially , and in some cases fully , terrestrial . In stereospondylous vertebrae , the pleurocentra have been lost entirely , with the intercentra enlarged as the main body of the vertebrae . This weaker type of backbone indicates the stereospondylous temnospondyls spent more time in water . + + = = History of study = = + + Temnospondyli was named by German palaeontologist Karl Alfred von Zittel in his second edition of Handbuch der Palaeontologie , published in 1888 . Temnospondyl remains were known since the early part of the 19th century , however . The earliest described temnospondyl was Mastodonsaurus , named by Georg Friedrich Jaeger in 1828 . Jaeger named Mastodonsaurus from a single tooth , and considered it a reptile . Mastodonsaurus means " breast tooth lizard " after the nipple @-@ like shape of the tip of the tooth . + The naming of these first specimens was disputed , however . Leopold Fitzinger named the animal Batrachosaurus in 1837 . In 1841 , English palaeontologist Richard Owen referred to the genus as Labyrinthodon to describe its highly folded or labyrinthine teeth . Owen thought the name Mastodonsaurus " ought not to be retained , because it recalls unavoidably the idea of the mammalian genus Mastodon , or else a mammilloid form of the tooth ... and because the second element of the word , saurus , indicates a false affinity , the remains belonging , not to the Saurian , but to the Batrachian order of Reptiles . " Owen recognized the animal was not a " saurian " reptile , yet he also referred Jaeger 's Phytosaurus to the genus . Although the two genera both have similarly sized conical teeth , Phytosaurus was later found to be a crocodile @-@ like reptile . Additional material , including skulls , firmly placed Labyrinthodon as an amphibian . Jaeger also named Salamandroides giganteus in 1828 , basing it on partial occiput , or back portion of the skull . In 1833 , he described a complete skull of S. giganteus that had the same teeth as his Mastodonsaurus , making it the first known complete skull of a temnospondyl . Because Mastodonsaurus was named first , it has precedence over the other names as a senior subjective synonym . Batrachosaurus is still used as the name of an unrelated brachyopid temnospondyl . + Mastodonsaurus and other similar animals were referred to as labyrinthodonts , named like Labyrinthodon for teeth that were highly folded in cross section . Owen 's " Labyrinthodon Jaegeri " was later found at Guy 's Cliffe , England by paleontologist William Buckland . Other specimens were found in the red sandstone of Warwickshire . As more fossils were uncovered in England , Owen depicted these labyrinthodonts as the " highest " form of batrachian and compared them to crocodiles , which he considered the highest form of reptiles . He also noted the large labyrinthodonts of the Keuper ( a unit of rocks that dates to the Late Triassic ) were younger than more advanced reptiles in the Magnesian and Zechstein , which are Late Permian in age . Owen used these fossils to counter the notion that reptiles evolved from a sequential progression from early amphibians ( what he called " metamorphosed fishes " ) . + In addition to Mastodonsaurus , some of the earliest named genera included Metopias and Rhombopholis in 1842 , Zygosaurus in 1848 , Trematosaurus in 1849 , Baphetes and Dendrerpeton in 1853 , Capitosaurus in 1858 , and Dasyceps in 1859 . Baphetes is now placed as an early tetrapod outside Temnospondyli , and Rhombopholis is now considered a prolacertiform reptile . + Later in the 19th century , temnospondyls were classified as various members of Stegocephalia , a name coined by American paleontologist Edward Drinker Cope in 1868 . Cope placed stegocephalians in the class Batrachia , the name then used for Amphibia . Stegocephalia means " roof @-@ headed " in Greek , a reference to the wide , flat heads of temnospondyls and other early tetrapods . During this time , palaeontologists considered temnospondyls to be amphibians because they possessed three main features : gill arches in juvenile skeletons , indicating they were amphibious for at least the first part of their lives ; ribs that do not connect at the underside of the rib cage ; and deep pits in the skull that were interpreted as space for mucous glands . + Several suborders of stegocephalians were recognized in the late 19th and early 20th centuries . Animals now regarded as temnospondyls were primarily labyrinthodonts , but some were classified in the Branchiosauria . Branchiosaurs were small @-@ bodied and had simple conical teeth , while labyrinthodonts were larger and had complex , folded dentin and enamel in their teeth . Branchiosauria included only a few forms , such as Branchiosaurus from Europe and Amphibamus from North America , that had poorly developed bones , external gills , and no ribs . Some skeletons of Amphibamus were later found with long ribs , prompting its reassignment to Microsauria ( although more detailed studies found it to be a temnospondyl ) . Soft tissue , such as scales and external gills , were found in many well @-@ preserved branchiosaur fossils from Germany . In the early 20th century , branchiosaurs would be recognized as larval forms of temnospondyls lacking many of the typical features that define the group , and is no longer recognized as a distinct group . + Other animals that would later be classified as temnospondyls were placed in a group called Ganocephala , characterized by plate @-@ like skull bones , small limbs , fish @-@ like scales , and branchial arches . Unlike labyrinthodonts , they did not have parietal foramena , small holes in their skulls behind their eye sockets . Archegosaurus , Dendrerpeton , Eryops and Trimerorhachis were placed in this group and were considered to be the most primitive members of Reptilia . Their rhachitomous vertebrae , notochord , and lack of occipital condyles ( which attached the head to the neck ) were features that were also shared with fishes . Thus , they were considered a link between early fishes and more advanced forms such as stegocephalians . + Another group called Microsauria was named by Cope in 1868 . Cope classified Microsauria as a subgroup of Labyrinthodontia , placing many small , amphibian @-@ like animals within it . Among them were Dendrerpeton , once placed in Ganocephala . Dendrerpeton was later placed as a labyrinthodont with other temnospondyls , but confusion existed for many years over the classification of small amphibians . + By the end of the 19th century , most of what are today regarded as temnospondyls were placed in the suborder Labyrinthodonta . American paleontologist Ermine Cowles Case called it Labyrinthodonta vera or " true labyrinthodonts " . The names Stegocephalia and Labyrinthodontia were used interchangeably to refer to the order in which it belonged . The labyrinthodontian suborders Microsauria and Branchiosauria , both of which contain temnospondyls , were distinct from Labyrinthodonta . Within Labyrinthodonta were the groups Rhachitomi , Labyrinthodonti , and Embolerimi . Members of Rhachitomi , such as Archegosaurus and Eryops , had rhachitomous vertebrae with enlarged intercentra that displaced the pleurocentra . Labyrinthodonti , such as Mastodonsaurus , Trematosaurus , and Micropholis , had lost their pleurocentra , and the intercentra made up the entire body of the vertebrae . Embolerimi had intercentra and pleurocentra that were of equal size . Embolomeres are now identified as reptiliomorphs distantly related to temnospondyls . + In 1888 , von Zittel divided stegocephalians among three taxa : Lepospondyli , Temnospondyli , and Stereospondyli . He placed microsaurs in Lepospondyli , a group which he characterized as having simple , spool @-@ shaped vertebral centra . Temnospondyli included forms with the centra divided into pleurocentra and intercentra . All members of Stereospondyli had amphicoelous centra composed only of the intercentra . Cope objected to von Zittel 's classification , considering the vertebrae of lepospondyls and stereospondyls indistinguishable because each had a simple spool shape . He continued to use Ganocephala and Labyrinthodonta ( which he alternatively referred to as Rhachitomi ) to distinguish animals based on the absence or presence of occipital condyles . + Temnospondyli became a commonly used name at the turn of the century . Paleontologists included both embolomeres and rhachitomes in the group . Cope 's Ganocephala and Labyrinthodonta fell out of use . In 1919 , British paleontologist D. M. S. Watson proposed that the evolutionary history of these large amphibians could be seen through changes in their vertebrae . Embolomerous forms in the Carboniferous graded into rhachitomous forms in the Permian , and finally into stereospondyls in the Triassic . More importantly , Watson began using the term Labyrinthodontia to refer to these groups . The name Temnospondyli was rarely used in the decades that followed . Swedish paleontologist Gunnar Säve @-@ Söderbergh removed embolomeres from the group , narrowing its scope to rhachitomes and stereospondyls . His classification of labyrinthodonts was based heavily on characteristics of the skull rather than the vertebrae . + American paleontologist Alfred Romer brought the name Temnospondyli back into use in the later 20th century . Säve @-@ Söderbergh used the name Labyrinthodontia in a strict sense ( sensu stricto ) to refer to Rhachitomi and Stereospondyli , excluding Embolomeri . Romer agreed with this classification , but used the name Temnospondyli to avoid confusion with Labyrinthodontia in its wider sense ( sensu lato ) . Unlike modern temnospondyl classification , however , Romer included the primitive Ichthyostegalia in the group . + + = = Evolutionary history = = + + + = = = Carboniferous and Early Permian = = = + + Temnospondyls first appeared in the Early Carboniferous around 330 million years ago ( Mya ) . During the Carboniferous , temnospondyls included basal medium @-@ sized forms such as Dendrerpeton or large semiaquatic forms such as Cochleosaurus . Other , more derived temnospondyls , such as the amphibamids , were smaller and more terrestrial . They resembled salamanders , and some taxa , such as the genus Branchiosaurus , even retained external gills like the modern @-@ day axolotl . During the latest Carboniferous and Early Permian around 300 Mya , several groups , such as the dissorophids and trematopids evolved strong , robust limbs and vertebrae and became adapted to life on land while others such as the eryopids , developed into large semiaquatic predators . The dvinosaurs , a group of small aquatic temnospondyls , evolved from terrestrial ancestors in the Late Carboniferous . + + = = = Late Permian = = = + + During the Late Permian , increasing aridity and the diversification of reptiles contributed into a decline in terrestrial temnospondyls , but semiaquatic and fully aquatic temnospondyls continued to flourish , including the large Melosaurus of Eastern Europe . Other temnospondyls , such as archegosaurids , developed long snouts and a close similarity to crocodiles , although they lacked the armor characteristic of the latter group . These temnospondyls included the largest known amphibian , the 9 @-@ m @-@ long Prionosuchus of Brazil . + + = = = Mesozoic = = = + + As temnospondyls continued to flourish and diversify in the Late Permian ( 260 @.@ 4 - 251 @.@ 0 Mya ) , a major group called Stereospondyli became more dependent on life in the water . The vertebrae became weak , the limbs small , and the skull large and flat , with the eyes facing upwards . During the Triassic period , these animals dominated the freshwater ecosystems , evolving in a range of both small and large forms . During the Early Triassic ( 251 @.@ 0 - 245 @.@ 0 Mya ) one group of successful long @-@ snouted fish @-@ eaters , the trematosauroids , even adapted to a life in the sea , the only known amphibians to do so with the exception of the modern crab @-@ eating frog . Another group , the capitosauroids , included medium- and large @-@ sized animals 2 @.@ 3 to 4 m ( 7 @.@ 5 to 13 @.@ 1 ft ) in length , with large and flat skulls that could be over a meter long in the largest forms such as Mastodonsaurus . These animals spent most or all their lives in water as aquatic predators , catching their prey by a sudden opening of the upper jaw and sucking in fish or other small animals . + In the Carnian stage of the Late Triassic ( 228 @.@ 0 - 216 @.@ 5 Mya ) , capitosauroids were joined by the superficially very similar Metoposauridae . Metoposaurids are distinguished from capitosauroids by the positioning of their eye sockets near the front of their skulls . Another group of stereospondyls , the plagiosaurs , had wide heads with external gills , and adapted to life at the bottom of lakes and rivers . By this time , temnospondyls had become a common and widespread component of semiaquatic ecosystems . Some temnospondyls , such as Cryobatrachus and Kryostega , even inhabited Antarctica , which was covered in temperate forests at the time . + Triassic temnospondyls were often the dominant semiaquatic animals in their environments . Large assemblages of metoposaurs with hundreds of individuals preserved together have been found in the southwestern United States . They have often been interpreted as mass death events caused by droughts in floodplain environments . Recent studies show these dense assemblages were instead probably the result of currents accumulating dead individuals in certain areas . These environments seem to have had little diversity , as they were inhabited almost exclusively by metoposaurs . + The Triassic @-@ Jurassic extinction event around 199 @.@ 6 Mya led to the extinction of most Mesozoic temnospondyls . The brachyopoids survived , as well as a few capitosauroids and trematosauroids . While the latter two groups soon became extinct , brachyopoids persisted and grew to large sizes during the Jurassic . Among brachyopoids , the brachyopids flourished in China and the chigutisaurids became common in Gondwana . The most recent known temnospondyl was the giant chigutisaurid Koolasuchus , known from the Early Cretaceous of Australia . It survived in rift valleys that were too cold in the winter for crocodiles that normally would have competed with them . Koolasuchus was one of the largest of the brachyopoids , with an estimated weight of 500 kg ( 1 @,@ 100 lb ) . + + = = Classification = = + + Originally , temnospondyls were classified according to the structure of their vertebrae . Early forms , with complex vertebrae consisting of a number of separate elements , were placed in the suborder Rachitomi , and large Triassic aquatic forms with simpler vertebrae were placed in the suborder Stereospondyli . With the recent growth of phylogenetics , this classification is no longer viable . The basic rhachitomous condition is found in many primitive tetrapods , and is not unique to one group of temnospondyls . Moreover , the distinction between rhachitomous and stereospondylous vertebrae is not entirely clear . Some temnospondyls have rhachitomous , semirhachitomous , and sterospondylous vertebrae at different points in the same vertebral column . Other taxa have intermediate morphologies that do not fit into any category . Rachitomi is no longer recognized as a group , but Stereospondyli is still considered valid . Below is a simplified taxonomy of temnospondyls showing currently recognized groups : + Class Amphibia + Order Temnospondyli + Superfamily Edopoidea + Family Cochleosauridae ( Chenoprosopidae ) + Family Edopidae + Family Dendrerpetontidae + Suborder Euskelia + Superfamily Dissorophoidea + Family Amphibamidae + Family Branchiosauridae + Family Dissorophidae + Family Micromelerpetontidae + Superfamily Eryopoidea + Family Eryopidae + Family Parioxyidae + Family Zatrachydidae + Clade Limnarchia + Clade Stereospondylomorpha + Superfamily Archegosauroidea + Family Actinodontidae + Family Archegosauridae + Family Intasuchidae ( placement is uncertain ) + Family Sclerocephalidae + Suborder Stereospondyli + Family Peltobatrachidae + Family Lapillopsidae + Family Rhinesuchidae + Family Lydekkerinidae + Clade Capitosauria + Superfamily Mastodonsauroidea ( Capitosauroidea ) + Family Heylerosauridae + Family Mastodonsauridae + Family Stenotosauridae + Infraorder Trematosauria + Superfamily Trematosauroidea + Superfamily Metoposauroidea + Superfamily Plagiosauroidea + Superfamily Brachyopoidea + Superfamily Rhytidosteoidea + + = = = Phylogeny = = = + + In one of the earliest phylogenetic analyses of the group , Gardiner ( 1983 ) recognized five characteristics that made Temnospondyli a clade : a bone at the back of the skull , the parasphenoid , is connected to another bone on the underside of the skull , the pterygoid ; large openings called interpterygoid vacuities are present between the pterygoids ; the stapes ( a bone involved in hearing ) is connected to the parasphenoid and projects upward ; the cleithrum , a bone in the pectoral girdle , is thin ; and part of the vertebra called the interdorsal attaches to the neural arch . Additional features were given by Godfrey et al . ( 1987 ) , including the contact between the postparietal and exoccipital at the back of the skull , small projections ( uncinate processes ) on the ribs , and a pelvic girdle with each side having a single iliac blade . These shared characteristics are called synapomorphies . + Temnospondyls are placed as basal tetrapods in phylogenetic analyses , with their exact positioning varying between studies . Depending on the classification of modern amphibians , they are either included in the crown group Tetrapoda or the stem of Tetrapoda . Crown @-@ group tetrapods are descendants of the most recent common ancestor of all living tetrapods and stem tetrapods are forms that are outside the crown group . Modern amphibians have recently been suggested as descendants of temnospondyls , which would place them within crown Tetrapoda . Below is a cladogram from Ruta et al . ( 2003 ) placing Temnospondyli within crown Tetrapoda : + Other studies place modern amphibians as the descendants of lepospondyls and place temnospondyls in a more basal position within the stem of Tetrapoda . Below is a cladogram from Laurin and Reisz ( 1999 ) placing Temnospondyli outside crown Tetrapoda : + Most phylogenetic analyses of temnospondyl interrelationships focus on individual families . One of the first broad @-@ scale studies of temnospondyl phylogeny was conducted by paleontologist Andrew Milner in 1990 . A 2007 study made a " supertree " of all temnospondyl families , combining the family @-@ level trees of previous studies . The following cladogram is modified from Ruta et al . ( 2007 ) : + 1 Temnospondyli , 2 Edopoidea , 3 Dvinosauria , 4 Euskelia , 5 Eryopoidea , 6 Dissorophoidea , 7 Limnarchia , 8 Archegosauroidea , 9 Stereospondyli , 10 Rhytidostea , 11 Brachyopoidea , 12 Capitosauria , 13 Trematosauria , 14 Metoposauroidea + The most basal group of temnospondyls is the superfamily Edopoidea . Edopoids have several primitive or plesiomorphic features , including a single occipital condyle and a bone called the intertemporal that is absent in other temnospondyls . Edopoids include the Late Carboniferous genus Edops and the family Cochleosauridae . Dendrerpetontidae has also been included in Edopoidea , and is the oldest known temnospondyl family . Balanerpeton woodi is the oldest species , having been present over 330 million years ago during the Viséan stage of the Early Carboniferous . Recent analyses place Dendrerpetontidae outside Edopoidea in a more derived position . Other primitive temnospondyls include Capetus and Iberospondylus . Saharastega and Nigerpeton , both described in 2005 from Niger , are also primitive yet come from the Late Permian . They are almost 40 million years younger than other basal temnospondyls , implying a long ghost lineage of species that are not yet known in the fossil record . + In 2000 , paleontologists Adam Yates and Anne Warren produced a revised phylogeny of more derived temnospondyls , naming several new clades . Two major clades were Euskelia and Limnarchia . Euskelia includes the temnospondyls that were once called rhachitomes and includes two subfamilies , the Dissorophoidea and the Eryopoidea . Dissorophoids include small , mostly terrestrial temnospondyls that may be the ancestors of modern amphibians . Eryopoids include larger temnospondyls like Eryops . The second major clade , Limnarchia , includes most Mesozoic temnospondyls , as well as some Permian groups . Within Limnarchia are the superfamily Archegosauroidea and the most derived temnospondyls , the stereospondyls . + Yates and Warren also named Dvinosauria , a clade of small aquatic temnospondyls from the Carboniferous , Permian , and Triassic . They placed Dvinosauria within Limnarchia , but more recent studies disagree on their position . For example , a 2007 study places them even more basal than euskelians , while a 2008 study keeps them as basal limnarchians . + Within Stereospondyli , Yates and Warren erected two major clades : Capitosauria and Trematosauria . Capitosaurs include large semiaquatic temnospondyls like Mastodonsaurus with flat heads and eyes near the back of the skull . Trematosaurs include a diversity of temnospondyls , including large marine trematosauroids , aquatic plagiosaurs , brachyopoids that survived into the Cretaceous , and metoposauroids with eyes near the front of their heads . In 2000 , paleontologists Rainer Schoch and Andrew Milner named a third major clade of stereospondyls , the Rhytidostea . This group included more primitive stereospondyls that could not be placed in either Capitosauria or Trematosauria , and included groups like Lydekkerinidae , Rhytidosteidae , and Brachyopoidea . While Capitosauria and Trematosauria are still widely used , Rhytidostea is not often supported as a true clade in recent analyses . Rhytidosteids and brachyopoids are now grouped with trematosaurians , but lydekkerinids are still considered to be a primitive family of stereospondyls . + A new phylogeny of temnospondyls was offered by paleontologist Rainer Schoch in 2013 . It supported many of the clades that were found by Yates and Warren , but it did not find support for their division of derived stereospondyls into Euskelia and Limnarchia . Eryopids were found to be more closely related to stereospondyls than to dissorophoids , which were grouped with dvinosaurs . The clade including Eryopidae and Stereospondylomorpha was named Eryopiformes . In addition , Schoch named the clade containing all temnospondyls except edopoids Eutemnospondyli and reinstated the name Rhachitomi for the clade containing all temnospondyls except edopoids and dendrerpetontids . Below is the cladogram from Schoch 's analysis : + + = = = Relationship to modern amphibians = = = + + Modern amphibians ( frogs , salamanders , and caecilians ) are classified in Lissamphibia . Lissamphibians appear to have arisen in the Permian . Molecular clock estimates place the first lissamphibian in the Late Carboniferous , but the first member of Batrachia ( frogs and salamanders , but not caecilians ) is estimated to have appeared in the Middle Permian using the same technique . Using fossil evidence , there are three main theories for the origin of modern amphibians . + One is that they evolved from dissorophoid temnospondyls . Another is that they evolved from lepospondyls , most likely the lysorophians . A third hypothesis is that caecilians descended from lepospondyls and frogs and salamanders evolved from dissorophoids . + Recently , the theory that temnospondyls were the ancestors of all lissamphibians has gained wide support . The skull morphology of some small temnospondyls has been compared to those of modern frogs and salamanders , but the presence of bicuspid , pedicellate teeth in small , paedomorphic or immature temnospondyls has been cited as the most convincing argument in favor of the temnospondyl origin of lissamphibians . Seen in lissamphibians and many dissorophoid temnospondyls , pedicellate teeth have calcified tips and bases . During the development of most tetrapods , teeth begin to calcify at their tips . Calcification normally proceeds downward to the base of the tooth , but calcification from the tip stops abruptly in pedicellate teeth . Calcification resumes at the base , leaving an area in the center of the tooth uncalcified . This pattern is seen in living amphibians and fossils . + The dissorophoid family Amphibamidae is thought to be most closely related to Lissamphibia . In 2008 , an amphibamid called Gerobatrachus hottoni was named from Texas and was nicknamed the " frogamander " for its frog @-@ like head and salamander @-@ like body . It was thought to be the most closely related temnospondyl to lissamphibians and was placed as the sister taxon of the group in a phylogenetic analysis . Another species of amphibamid called Doleserpeton annectens is now thought to be even more closely related to lissamphibians . Unlike Gerobatrachus , Doleserpeton was known since 1969 , and the presence of pedicellate teeth in its jaws has led some paleontologists to conclude soon after its naming that it was a relative of modern amphibians . It was first described as a " protolissamphibian " , and the specific name annectens means " connecting " in reference to its inferred transitional position between temnospondyls and lissamphibians . The structure of its tympanum , a disk @-@ like membrane that functions like an ear drum , is similar to that of frogs and has also been used as evidence for a close relationship . Other features including the shape of the palate and the back of the skull , the short ribs , and the smooth skull surface also point to it being a closer relative of lissamphibians than is Gerobatrachus . Below is a cladogram modified from Sigurdsen and Bolt ( 2010 ) showing the relationships of Gerobatrachus , Doleserpeton , and Lissamphibia : + + = = Paleobiology = = + + + = = = Feeding = = = + + Although the earliest temnospondyls were primarily semiaquatic , they had the ability to feed on land . Later , eryopoids and dissorophoids , some well adapted to terrestrial life , also fed on land . Some eryopoids became better adapted toward life in water , and shifted their diets toward aquatic organisms . The first primarily aquatic feeders were archegosaurs in the Permian . Trematosaurs and capitosaurs became independently aquatic and also returned to this type of feeding . + Most aquatic stereospondyls have flattened heads . When feeding , they probably opened their mouths by lifting their skulls instead of lowering their lower jaws . The jaw mechanics of the plagiosaurid Gerrothorax is well known , and is one of the most highly adapted . Gerrothorax is thought to have lifted its skull to around 50 ° above horizontal through the flexing of the atlanto @-@ occipital joint between the occipital condyles of the skull and the atlas vertebra of the neck . As the skull is raised , the quadrate bone pushes forward and causes the lower jaw to protrude outward . Other stereospondyls probably also lifted their skulls , but they are not as well adapted for such movement . D.M.S. Watson was the first to suggest skull lifting as a means of feeding in temnospondyls . He envisioned that Mastodonsaurus , a much larger temnospondyl than Gerrothorax , was able to make the same movement . Paleontologist A.L. Panchen also supported the idea in 1959 , suggesting that Batrachosuchus also fed in this way . At the time it was thought that these temnospondyls lifted their heads with strong jaw muscles , but it is now thought that they used larger muscles in the neck that were attached to the large pectoral girdle . Plagiosuchus , a close relative of Gerrothorax , also has a hyobranchial skeleton that muscles may have attached to . Plagiosuchus has very small teeth and a large area for muscle attachment behind the skull , suggesting that it could suction feed by rapidly opening its mouth . + Unlike semiaquatic temnospondyls , terrestrial temnospondyls have skulls that are adapted for biting land @-@ living prey . The sutures between the bones of the skull in the dissorophoid Phonerpeton are able to withstand a high degree of compression . Compressive forces would have been experienced when biting down on prey . Earlier aquatic tetrapods and tetrapod ancestors differ from temnospondyls like Phonerpeton in that their skulls were also built to withstand tension . This tension would have been experienced during suction feeding underwater . Temnospondyls like Phonerpeton were among the first tetrapods that were almost exclusively terrestrial and fed by biting . + + = = = Reproduction = = = + + Temnospondyls , like all amphibians , reproduced in aquatic environments . Most temnospondyls probably reproduced through external fertilization . Like most living frogs , female temnospondyls would have laid masses of eggs in water while males released sperm to fertilize them . Several fossils were described from the Early Permian of Texas in 1998 that may be egg masses of dissorophoid temnospondyls . They were the first known fossils of amphibian eggs . The fossils consist of small disks with thin membranes that are probably vitelline membranes and halo @-@ like areas surrounding them that are most likely mucous coatings . They are attached to plant fossils , suggesting that these temnospondyls laid eggs on aquatic plants much like modern frogs . The mucous membranes show that the eggs were laid by amphibians , not fish ( their eggs lack mucous ) , but the type of amphibian that laid them cannot be known because no body fossils are preserved with the eggs . The eggs are thought to be from dissorophoids because they are likely to be close relatives of modern amphibians , and probably had similar reproductive strategies . They are also the most common amphibians from the deposit in which the eggs were found . + One temnospondyl , the dvinosaur Trimerorhachis , may have brooded young in an area between the gills called the pharyngeal pouch . Small bones belonging to younger Trimerorhachis individuals have been found in these pouches . The living Darwin 's Frog is also a mouth brooder and would be the closest modern analogue to Trimerorhachis if it cared for its young in this way . An alternative possibility is that Trimerorhachis was cannibalistic , eating its young like many amphibians do today . If this was the case , the bones of these smaller individuals were originally located in the throat and were pushed into the pharyngeal pouch as the animal fossilized . + Body impressions of Early Carboniferous temnospondyls from Pennsylvania suggest that some terrestrial temnospondyls mated on land like some modern amphibians . They reproduced through internal fertilization rather than mating in water . The presence of three individuals in one block of sandstone shows that the temnospondyls were gregarious . The head of one individual rests under the tail of another in what may be a courtship display . Internal fertilization and similar courtship behavior are seen in modern salamanders . + + = = = Growth = = = + + While most types of temnospondyls are distinguished on the basis of features in mature specimens , several are known from juvenile and larval specimens . Metamorphosis is seen in dissorophoids , eryopids , and zatrachydids , with aquatic larvae developing into adults capable of living on land . Several types of dissorophoids do not fully metamorphose , but retain features of juveniles such as gills and small body size in what is known as neoteny . Dvinosaurians and the plagiosaurid Gerrothorax were also neotenic because they retained gills , but they are only known from adult specimens . + Temnospondyl larvae are often distinguished by poorly developed bones and the presence of a hyobranchial apparatus , a series of bones that gills would attach to in life . However , some fully mature temnospondyls also possess hyobranchial bones but did not have external gills . A dense covering of scales is also seen in larvae and adults . Major body changes occur in metamorphosis , including the reshaping and strengthening of skull bones , the thickening of postcranial bones , and an increase in body size . + Temnospondyls like Sclerocephalus are known from both large adult specimens and small larvae , showing an extreme change in body shape . In these species , the shape and proportions of skull bones change in the early stages of development . The ornamentation on the surface of the skull roof also develops at this time . Small , regularly spaced pits are the first to form , followed by larger ridges . As development continues , the external gills disappear . Small teeth that once covered the palate are lost . The postcranial skeleton does not develop at the same rate as the skull , with ossification ( the replacement of cartilage by bone ) happening more slowly . Vertebrae and limb bones are poorly developed , ribs and fingers are absent in the early stages , and the scapulocoracoid and ischium are entirely absent through most of development . Once maturity is reached , most bones have fully formed and growth rate slows . The bones of some temnospondyls like Dutuitosaurus show growth marks , possibly an indication that growth rate varied with the change in seasons . Fossils of temnospondyls like Metoposaurus and Cheliderpeton show that individuals grew larger past maturity . The oldest individuals usually have more pitting on their skulls with deeper sulci . + One group of temnospondyls , the Branchiosauridae , is also known from larval specimens . Branchiosaurids like Branchiosaurus and Apateon are represented by many fossils preserving skin and external gills . An entire growth series is exhibited in the wide range of sizes among specimens , but the lack of terrestrially adapted adult forms suggests that these temnospondyls were neotenic . Unlike other temnospondyls , their postcranial skeletons developed quickly but were still partly cartilaginous when fully mature . Adults likely had an aquatic lifestyle similar to juveniles . Recently , large specimens of Apateon gracilis were described with adaptations toward a terrestrial lifestyle , indicating that not all branchiosaurs were neotenic . + While most temnospondyls are aquatic in early stages of life , most metoposaurids appear to have been terrestrial in their juvenile stage . Like other Mesozoic temnospondyls , adult metoposaurids were adapted to a semiaquatic lifestyle . Their bones are not highly developed for movement on land . The cross @-@ sectional thickness of limb bones in adult metoposaurids shows that they could not withstand the stress of terrestrial locomotion . Juvenile individuals have bones that are thick enough to withstand this stress , and could probably move about on land . To maintain a terrestrial lifestyle , a temnospondyl 's limb bones would have to thicken with positive allometry , meaning that they would grow at a greater rate than the rest of the body . This is not the case in metoposaurids , meaning that as their bodies grew larger they became less adapted toward a terrestrial lifestyle . + + = = = Hearing = = = + + Temnospondyls and other early tetrapods have rounded otic notches in the back of the skull that project into the cheek region . In life , the otic notch would have been covered by a membrane called the tympanum , which is seen as a disk @-@ like area in living frogs . The tympanum is involved in hearing , and is similar to the ear drum of more advanced tetrapods . It was traditionally thought that the tympanum developed very early in tetrapod evolution as a hearing organ and progressed to form the ear drum of amniotes . Thus , temnospondyls possessed a hearing system supposedly ancestral to that of living amphibians and reptiles . + Frogs and all other living tetrapods have a rod @-@ like bone called the stapes that aids in hearing by transferring vibrations from the ear drum — or homologous tympanum — to the inner ear . Temnospondyls also have a stapes , which projects into the otic cavity . The stapes likely evolved from the hyomandibula of lobe @-@ finned fishes . The positioning of the stapes and the shape of the otic region suggests that the tympani of temnospondyls and frogs are homologous , but the tympani of these amphibians are no longer considered homologous with the hearing systems of reptiles , birds , and mammals . Therefore , ear structures in temnospondyls were not ancestral to those of all other tetrapods . + The ability of the tympanum and stapes to effectively transmit vibrations is called impedance matching . Early tetrapods like temnospondyls have thick stapes with poor impedance matching , so it is now thought that they were not used for hearing . Instead , these thick stapes may have functioned to support the tissue that covers the otic notch . Early temnospondyls like Dendrerpeton could not hear airborne sound but would have been able to detect vibration in the ground . Later temnospondyls like Doleserpeton had otic regions adapted to hearing . Doleserpeton has a structure in the inner ear called the perilymphatic duct , which is also seen in frogs and is associated with hearing . Its stapes is also a better transmitter of sound . The hearing system of Doleserpeton and related temnospondyls was able to detect airborne sound and may have been ancestral to that of living amphibians . + + + = Osbert de Bayeux = + + Osbert de Bayeux ( floruit 1121 to 1184 ) was a medieval English cleric and archdeacon in the Diocese of York . A relative of Thurstan , the Archbishop of York , Osbert probably owed his ecclesiastical positions to this relative . After Thurstan 's death , Osbert was opposed to one of the candidates for the archbishopric , William fitzHerbert , and worked to secure fitzHerbert 's deposition and replacement by Henry Murdac . After Murdac 's death in 1153 , Osbert tried to prevent the return of fitzHerbert , but these attempts were unsuccessful . When fitzHerbert died suddenly in 1154 , Osbert was accused of murdering the newly returned archbishop . Although he was never convicted of the murder in either a secular or an ecclesiastical court , he was stripped of his clerical status and became a layman before 1158 . He died after 1184 , perhaps even after 1194 . + + = = Early life = = + + Osbert was first mentioned in the historical record between 1121 and 1128 when he appears in a charter , which although likely a forgery , probably contains an authentic witness list . This document lists him as " Osbert archdeacon " , which means that he probably held the archdeaconry of Richmond . He was the nephew of Thurstan , who was Archbishop of York from 1114 to 1140 . Presumably he owed his position as archdeacon to his uncle and was probably appointed at a young age . A charter of Thurstan 's , dating to around 1138 , names Osbert explicitly as Thurstan 's nephew . + + = = Opposition to William fitzHerbert = = + + Osbert was opposed to the election of William fitzHerbert as Archbishop of York and supported William 's rival and successor Henry Murdac . Although he remained a supporter of Murdac after 1147 , he did oppose Murdac 's interventions in Selby Abbey , where Murdac had deposed one abbot and appointed another . In 1153 , Osbert deposed Murdac 's choice as abbot of Selby and appointed another abbot . Originally , Osbert had supported Elias Paynel , Murdac 's choice for abbot , but then changed his stance and helped with the deposition . + After Murdac 's death in 1153 , Osbert was opposed to William 's return as archbishop , but was unsuccessful in his attempts to prevent William 's reappointment . William died a week after his return to York , however , and Osbert , along with Robert of Ghent , the Dean of York , secured the quick election of the new archbishop , Roger de Pont L 'Évêque . + + = = Poisoning accusations = = + + Osbert was accused of murdering William , specifically by poisoning him through the communion chalice . A fellow cleric , Symphorian , who had been a chaplain of the deceased archbishop , brought murder charges against Osbert . Symphorian obtained a hearing on the charges at a royal council presided over by King Stephen of England at Michaelmas in 1154 , but Stephen 's subsequent death prevented a resolution . Osbert attempted to have the trial switched to an ecclesiastical court and was supported in his efforts by Archbishop Theobald of Canterbury . A trial was finally held in 1156 and Osbert 's accuser did not produce any witnesses , but Osbert was unable to prove his innocence , prompting the transfer of the case to a papal court . No record of any judgment exists , but Osbert apparently appeared before two popes , Adrian IV and Alexander III . A further appeal to the papal court was referred to papal judges @-@ delegate between 1175 and 1180 . + The case attracted commentary by two contemporary writers . John of Salisbury , who was a secretary for Theobald , added information about Osbert in a letter to Alexander III on unrelated business . In the section of the letter , John pointed out to the pope that no matter what others might say about Osbert , he had failed to secure other clergy willing to swear that he was innocent . Another contemporary , Gilbert Foliot , who was Bishop of Hereford , wrote to the pope to remind him that although Osbert 's accuser had offered to prove his accusations by undergoing a trial by ordeal , this was essentially meaningless since canon law forbade the clergy from the ordeal . + + = = Later life and death = = + + Osbert was no longer archdeacon by 1158 , as his successor is attested by that point . Osbert , however , continued to call himself " archdeacon " even though he held land as a secular lord , including lands in Lacy and Skipton . He also acted as a steward for Hugh de Tilly . Osbert was still alive in 1184 , as he was a witness to a document at York then , and may have been alive as late as 1194 , when Hugh Bardulf was responsible for the farm of Osbert 's lands , as the record of that transaction in the escheat roll is unclear if Osbert was alive at that time or dead . + Osbert had two sons , William de Bayeux and Turstin de Baius . Osbert was a benefactor to a number of monasteries , including Drax Priory , Pontefract Priory and Gisborough Priory . He also gave land to a hospital in York and to the Templars and Hospitallers . + + + = Dvorak technique = + + The Dvorak technique ( developed between 1969 and 1984 by Vernon Dvorak ) is a widely used system to estimate tropical cyclone intensity ( which includes tropical depression , tropical storm , and hurricane / typhoon / intense tropical cyclone intensities ) based solely on visible and infrared satellite images . Within the Dvorak satellite strength estimate for tropical cyclones , there are several visual patterns that a cyclone may take on which define the upper and lower bounds on its intensity . The primary patterns used are curved band pattern ( T1.0 @-@ T4.5 ) , shear pattern ( T1.5 @-@ T3.5 ) , central dense overcast ( CDO ) pattern ( T2.5 @-@ T5.0 ) , central cold cover ( CCC ) pattern , banding eye pattern ( T4.0 @-@ T4.5 ) , and eye pattern ( T4.5 - T8.0 ) . + Both the central dense overcast and embedded eye pattern use the size of the CDO . The CDO pattern intensities start at T2.5 , equivalent to minimal tropical storm intensity ( 40 mph , 65 km / h ) . The shape of the central dense overcast is also considered . The eye pattern utilizes the coldness of the cloud tops within the surrounding mass of thunderstorms and contrasts it with the temperature within the eye itself . The larger the temperature difference is , the stronger the tropical cyclone . Once a pattern is identified , the storm features ( such as length and curvature of banding features ) are further analyzed to arrive at a particular T @-@ number . The CCC pattern indicates little development is occurring , despite the cold cloud tops associated with the quickly evolving feature . + Several agencies issue Dvorak intensity numbers for tropical cyclones and their precursors , including the National Hurricane Center 's Tropical Analysis and Forecast Branch ( TAFB ) , the NOAA / NESDIS Satellite Analysis Branch ( SAB ) , and the Joint Typhoon Warning Center at the Naval Meteorology and Oceanography Command in Pearl Harbor , Hawaii . + + = = Evolution of the method = = + + The initial development of this technique occurred in 1969 by Vernon Dvorak , using satellite pictures of tropical cyclones within the northwest Pacific ocean . The system as it was initially conceived involved pattern matching of cloud features with a development and decay model . As the technique matured through the 1970s and 1980s , measurement of cloud features became dominant in defining tropical cyclone intensity and central pressure of the tropical cyclone 's low @-@ pressure area . Use of infrared satellite imagery led to a more objective assessment of the strength of tropical cyclones with eyes , using the cloud top temperatures within the eyewall and contrasting them with the warm temperatures within the eye itself . Constraints on short term intensity change are used less frequently than they were back in the 1970s and 1980s . The central pressures assigned to tropical cyclones have required modification , as the original estimates were 5 @-@ 10 hPa ( 0 @.@ 15 @-@ 0 @.@ 29 inHg ) too low in the Atlantic and up to 20 hPa ( 0 @.@ 59 inHg ) too high in the northwest Pacific . This led to the development of a separate wind @-@ pressure relationship for the northwest Pacific , devised by Atkinson and Holliday in 1975 , then modified in 1977 . + As human analysts using the technique lead to subjective biases , efforts have been made to make more objective estimates using computer programs , which have been aided by higher @-@ resolution satellite imagery and more powerful computers . Since tropical cyclone satellite patterns can fluctuate over time , automated techniques use a six @-@ hour averaging period to lead to more reliable intensity estimates . Development of the objective Dvorak technique began in 1998 , which performed best with tropical cyclones that had eyes ( of hurricane or typhoon strength ) . It still required a manual center placement , keeping some subjectivity within the process . By 2004 , an advanced objective Dvorak technique was developed which utilized banding features for systems below hurricane intensity and to objectively determine the tropical cyclone 's center . A central pressure bias was uncovered in 2004 relating to the slope of the tropopause and cloud top temperatures which change with latitude that helped improve central pressure estimates within the objective technique . + + = = Details of the method = = + + In a developing cyclone , the technique takes advantage of the fact that cyclones of similar intensity tend to have certain characteristic features , and as they strengthen , they tend to change in appearance in a predictable manner . The structure and organization of the tropical cyclone are tracked over 24 hours to determine if the storm has weakened , maintained its intensity , or strengthened . Various central cloud and banding features are compared with templates that show typical storm patterns and their associated intensity . If infrared satellite imagery is available for a cyclone with a visible eye pattern , then the technique utilizes the difference between the temperature of the warm eye and the surrounding cold cloud tops to determine intensity ( colder cloud tops generally indicate a more intense storm ) . In each case a " T @-@ number " ( an abbreviation for Tropical Number ) and a Current Intensity ( CI ) value are assigned to the storm . These measurements range between 1 ( minimum intensity ) and 8 ( maximum intensity ) . The T @-@ number and CI value are the same except for weakening storms , in which case the CI is higher . For weakening systems , the CI is held as the tropical cyclone intensity for 12 hours , though research from the National Hurricane Center indicates that six hours is more reasonable . The table at right shows the approximate surface wind speed and sea level pressure that corresponds to a given T @-@ number . The amount a tropical cyclone can change in strength per 24 ‑ hour period is limited to 2 @.@ 5 T @-@ numbers per day . + + = = = Pattern types = = = + + Within the Dvorak satellite strength estimate for tropical cyclones , there are several visual patterns that a cyclone may take on which define the upper and lower bounds on its intensity . The primary patterns used are curved band pattern ( T1.0 @-@ T4.5 ) , shear pattern ( T1.5 @-@ T3.5 ) , central dense overcast ( CDO ) pattern ( T2.5 @-@ T5.0 ) , banding eye pattern ( T4.0 @-@ T4.5 ) , eye pattern ( T4.5 - T8.0 ) , and central cold cover ( CCC ) pattern . Both the central dense overcast and embedded eye pattern utilize the size of the CDO . The CDO pattern intensities start at T2.5 , equivalent to minimal tropical storm intensity ( 40 miles per hour ( 64 km / h ) ) . The shape of the central dense overcast is also considered . The farther the center is tucked into the CDO , the stronger it is deemed . Tropical cyclones with maximum sustained winds between 65 miles per hour ( 105 km / h ) and 100 miles per hour ( 160 km / h ) can have their center of circulations obscured by cloudiness within visible and infrared satellite imagery , which makes diagnosis of their intensity a challenge . + The CCC pattern , with its large and quickly developing mass of thick cirrus clouds spreading out from an area of convection near a tropical cyclone center within a short time frame , indicates little development . When it develops , rainbands and cloud lines around the tropical cyclone weaken and the thick cloud shield obscures the circulation center . While it resembles a CDO pattern , it is rarely seen . + The eye pattern utilizes the coldness of the cloud tops within the surrounding mass of thunderstorms and contrasts it with the temperature within the eye itself . The larger the temperature difference is , the stronger the tropical cyclone . Winds within tropical cyclones can also be estimated by tracking features within the CDO using rapid scan geostationary satellite imagery , whose pictures are taken minutes apart rather than every half @-@ hour . + Once a pattern is identified , the storm features ( such as length and curvature of banding features ) are further analyzed to arrive at a particular T @-@ number . + + = = Usage = = + + Several agencies issue Dvorak intensity numbers for tropical cyclones and their precursors . These include the National Hurricane Center 's Tropical Analysis and Forecast Branch ( TAFB ) , the National Oceanic and Atmospheric Administration 's Satellite Analysis Branch ( SAB ) , and the Joint Typhoon Warning Center at the Naval Pacific Meteorology and Oceanography Center in Pearl Harbor , Hawaii . + The National Hurricane Center will often quote Dvorak T @-@ numbers in their tropical cyclone products . The following example is from discussion number 3 of Tropical Depression 24 ( eventually Hurricane Wilma ) of the 2005 Atlantic hurricane season : + BOTH TAFB AND SAB CAME IN WITH A DVORAK SATELLITE INTENSITY ESTIMATE OF T2.5 / 35 KT . HOWEVER ... OFTENTIMES THE SURFACE WIND FIELD OF LARGE DEVELOPING LOW PRESSURE SYSTEMS LIKE THIS ONE WILL LAG ABOUT 12 HOURS BEHIND THE SATELLITE SIGNATURE . THEREFORE ... THE INITIAL INTENSITY HAS ONLY BEEN INCREASED TO 30 KT . + Note that in this case the Dvorak T @-@ number ( in this case T2.5 ) was simply used as a guide but other factors determined how the NHC decided to set the system 's intensity . + The Cooperative Institute for Meteorological Satellite Studies ( CIMSS ) at the University of Wisconsin – Madison has developed the Objective Dvorak Technique ( ODT ) . This is a modified version of the Dvorak technique which uses computer algorithms rather than subjective human interpretation to arrive at a CI number . This is generally not implemented for tropical depressions or weak tropical storms . The China Meteorological Agency ( CMA ) is expected to start using the standard 1984 version of Dvorak in the near future . The Indian Meteorological Department ( IMD ) prefers using visible satellite imagery over infrared imagery due to a perceived high bias in estimates derived from infrared imagery during the early morning hours of convective maximum . The Japan Meteorological Agency ( JMA ) uses the infrared version of Dvorak over the visible imagery version . Hong Kong Observatory and JMA continue to utilize Dvorak after tropical cyclone landfall . Various centers hold on to the maximum current intensity for 6 – 12 hours , though this rule is broken when rapid weakening is obvious . + Citizen science site Cyclone Center uses a modified version of the Dvorak technique to categorize post @-@ 1970 tropical weather . + Satellite Images of Selected Tropical Storms and Associated T @-@ Number + + = = Benefits and disadvantages = = + + The most significant benefit of the use of the technique is that it has provided a more complete history of tropical cyclone intensity in areas where aircraft reconnaissance is neither possible nor routinely available . Intensity estimates of maximum sustained wind are currently within 5 miles per hour ( 8 @.@ 0 km / h ) of what aircraft are able to measure half of the time , though the assignment of intensity of systems with strengths between moderate tropical @-@ storm force ( 60 miles per hour ( 97 km / h ) ) and weak hurricane- or typhoon @-@ force ( 100 miles per hour ( 160 km / h ) ) is the least certain . Its overall precision has not always been true , as refinements in the technique led to intensity changes between 1972 and 1977 of up to 20 miles per hour ( 32 km / h ) . The method is internally consistent in that it constrains rapid increases or decreases in tropical cyclone intensity . Some tropical cyclones fluctuate in strength more than the 2 @.@ 5 T numbers per day limit allowed by the rule , which can work to the technique 's disadvantage and has led to occasional abandonment of the constraints since the 1980s . Systems with small eyes near the limb , or edge , of a satellite image can be biased too weakly using the technique , which can be resolved through use of polar @-@ orbiting satellite imagery . Subtropical cyclone intensity cannot be determined using Dvorak , which led to the development of the Hebert @-@ Poteat technique in 1975 . Cyclones undergoing extratropical transition , losing their thunderstorm activity , see their intensities underestimated using the Dvorak technique . This led to the development of the Miller and Lander extratropical transition technique which can be used under these circumstances . + + + = New York State Route 31B = + + New York State Route 31B ( NY 31B ) was a state highway in central New York in the United States . It served as a connector between NY 31 , its parent route , in the Cayuga County village of Weedsport and NY 5 in the Onondaga County town of Elbridge . NY 31B was assigned c . 1933 , replacing New York State Route 293 , a route assigned as part of the 1930 renumbering of state highways in New York . The NY 31B designation was removed in 1980 and replaced by County Route 31B ( CR 31B ) in Cayuga County and CR 99 in Onondaga County . + + = = Route description = = + + NY 31B began at an intersection with its parent route , NY 31 , in the Cayuga County village of Weedsport . The highway went eastward , intersecting with NY 34 less than 0 @.@ 1 miles ( 0 @.@ 2 km ) later . Much of Weedsport was urbanized , with the highway passing residential homes and businesses as it progressed eastward through the village . The highway intersected with CR 12B before leaving Weedsport and entering the town of Brutus as Brutus Road . + In Brutus , NY 31B continued to the east through the rural town , intersecting CR 136A and passing the Weedsport Rural Cemetery before turning to the southeast . After a short distance , the highway went through an isolated area of homes , where it intersected with CR 14 and CR 15A . NY 31B continued on , intersecting several local highways before crossing into Onondaga County and terminating at an intersection with NY 5 in the town of Elbridge . + + = = History = = + + What became NY 31B was originally designated as NY 293 as part of the 1930 renumbering of state highways in New York . NY 293 was renumbered to NY 31B c . 1933 , allowing the NY 293 designation to be transferred to another highway in Orange County . NY 31B remained unchanged until January 2 , 1980 , when the NY 31B designation was removed . + Ownership and maintenance of NY 31B 's former routing was gradually transferred to the counties it went through , namely Cayuga and Onondaga . The first section to be transferred was the portion within Onondaga County , which was given to the county on April 1 , 1980 , and designated as CR 99 . The Cayuga County section of former NY 31B was transferred to the county one year later on April 1 , 1981 , and designated as CR 31B for the state route that preceded it . + + = = Major intersections = = + + + + = Ben Amos = + + Benjamin Paul " Ben " Amos ( born 10 April 1990 ) is an English professional footballer who plays as a goalkeeper for Bolton Wanderers . Born in Macclesfield , Cheshire , Amos began his career with Crewe Alexandra 's youth academy , but joined Manchester United at the age of 11 . He has spent time on loan at Peterborough United , Molde , and Oldham Athletic . Additionally , Amos is an England youth international , having represented his country at every level from Under @-@ 16 to Under @-@ 21 . + + = = Club career = = + + + = = = Crewe Alexandra = = = + + Amos was born in Macclesfield , Cheshire and was a member of the Crewe Alexandra academy until he was released at the age of 10 . While at Crewe , he also played for another local team , Bollington United , as a centre midfielder . One year later , Amos was playing for his local team against the team at the top of the table , and they needed to win the match to win the league . Amos ' team 's goalkeeper was injured during the game , and as the tallest on the team , Amos was put in goal ; however , he had also been the team 's regular penalty taker all season , so when they were awarded a penalty , he went all the way up the pitch to take the kick . He scored , and his team went on to win the game 3 – 2 , together with the league title . After the game , his parents told him that a Manchester United scout had been watching him and that he had been invited for trials . Amos joined Manchester United at the age of 11 . + + = = = Manchester United = = = + + In his first season at Manchester United , Amos became a regular starter for the club 's Under @-@ 13 team , playing in 19 out of 27 matches in the 2001 – 02 season . Amos was named as an unused substitute for the Under @-@ 18 side for the first time on 8 January 2005 , for a league game against Manchester City . His first appearance for the Under @-@ 18s came exactly nine months later , on 8 October 2005 , coming on as a substitute for Danny Rose after starting goalkeeper Ron @-@ Robert Zieler was sent off in a 2 – 0 defeat to Bolton Wanderers . He was regularly named as an unused substitute during the 2005 – 06 season – including for two reserve team matches – but became a frequent starter for the Under @-@ 18s in 2006 – 07 after signing a trainee contract in July 2006 . However , he missed the final of the 2006 – 07 FA Youth Cup with a dislocated shoulder . + He retained his place in the Under @-@ 18 team for 2007 – 08 , in addition to making his debut for the reserve team against Wigan Athletic on 7 November 2007 , and during the season he impressed enough to be selected to go on the first @-@ team 's 2008 summer tour of South Africa . Amos was named as a substitute for all three matches of the tour , but did not play . En route back from South Africa , United stopped off in Nigeria to play against Portsmouth on 27 July 2008 , with Amos replacing Tomasz Kuszczak after 76 minutes . He made his competitive first @-@ team debut on 23 September 2008 in a 3 – 1 win at home to Middlesbrough in the third round of the League Cup . On 14 December 2008 , Amos travelled to Japan with the Manchester United squad for the 2008 FIFA Club World Cup , having been called up as a late replacement for Ben Foster , who had suffered a hand injury while training . + + = = = Loans to Peterborough and Molde = = = + + On 29 October 2009 , Amos signed for the Championship team Peterborough United on a month 's loan as cover for Peterborough 's suspended first @-@ choice goalkeeper Joe Lewis . He made his only appearance on 31 October in a 2 – 1 defeat against Barnsley . After returning to Manchester United , Amos was again sent out on loan in March 2010 , this time to Norwegian side Molde FK , where he remained on loan until 30 June 2010 . + + = = = Return to Manchester United = = = + + Following the departure of Ben Foster from Manchester United to Birmingham City , United manager Alex Ferguson declared that Amos would be Manchester United 's third @-@ choice goalkeeper for the 2010 – 11 season behind Edwin van der Sar and Tomasz Kuszczak . He made his first appearance of the season on 26 October 2010 , starting in goal for United 's 3 – 2 win over Wolverhampton Wanderers in the fourth round of the League Cup . + In United 's final Champions League group match on 7 December 2010 , Amos was picked to start against Valencia at Old Trafford . Pablo Hernández scored Valencia 's only goal past him after 32 minutes of the match – the first goal United had conceded in the Champions League that season – as the two sides played out a 1 – 1 draw . + + = = = Loan to Oldham Athletic = = = + + With the signing of Danish goalkeeper Anders Lindegaard , Manchester United allowed Amos to join Oldham Athletic on loan for the remainder of the season on 7 January 2011 , although he would continue to train with Manchester United once a week . He made his debut against Swindon Town the next day and kept a clean sheet . However , three days later , he conceded all six goals in a 6 – 0 defeat at home to Southampton ; he allowed Adam Lallana 's 20 @-@ yard shot underneath his body for the second goal , and he was rounded by Lee Barnard for the sixth . + On 15 March 2011 , Lindegaard was ruled out for five weeks following a knee injury , so Amos was recalled from Oldham to cover for Edwin van der Sar and Tomasz Kuszczak . + + = = = Return to Manchester United = = = + + Amos made his first start of the 2011 – 12 season in a third round League Cup tie at Elland Road against Leeds United . He kept a clean sheet as United cruised through to the next round winning 3 – 0 . He played again in the following round away at Aldershot Town , a game which United also won 3 – 0 and advanced to the quarter finals . He was in goal again for United 's League Cup game in a defeat against Championship club Crystal Palace on 30 November . It also seemed that he had moved above last season 's second choice Tomasz Kuszczak in the pecking order , but was now third choice behind Anders Lindegaard and David de Gea . He made his first Premier League start in a 2 – 0 home win against Stoke City on 31 January 2012 , keeping a clean sheet on his debut . + On 30 May 2012 , Amos signed a three @-@ year contract extension with Manchester United , which will keep him at the club until at least 2015 . + + = = = Loan to Hull City = = = + + On 31 July 2012 , Amos joined Championship team Hull City on a season @-@ long loan from Manchester United . Before the loan deal was completed , he had joined Hull on their pre @-@ season training camp in Portugal . He made his debut on 11 August 2012 in 7 – 6 penalty shoot @-@ out victory over Rotherham United in the first round of the 2012 – 13 Football League Cup . However , after 19 appearances , including two in the League Cup , Amos returned to Manchester United on 3 January 2013 . + + = = = Loan to Carlisle United = = = + + On 15 November 2013 , Amos joined League One team Carlisle United on a month @-@ long loan from Manchester United . + + = = = Loan to Bolton Wanderers = = = + + On 30 January 2015 he joined Championship club Bolton Wanderers on a month 's loan to provide competition for Andy Lonergan after Ádám Bogdán was ruled out with an ankle injury picked up in training . On 21 February 2015 he made his Bolton debut as a substitute for the injured Lonergan as Wanderers lost 4 – 1 to Nottingham Forest at the City Ground . He played nine Championship games for Bolton before his loan expired on 4 April . + + = = = Return to Manchester United = = = + + Ben Amos returned to Manchester United after his loan spell at Bolton Wanderers , but on 10 June 2015 , it was announced on Manchester United website that Ben Amos has been released from the club along with four other players . + + = = = Bolton Wanderers = = = + + On 1 July 2015 , Amos returned to Bolton Wanderers following his release from Manchester United , signing a four @-@ year contract with the club . + + = = International career = = + + Amos is an England youth international , having played for his country at the Under @-@ 16 , Under @-@ 17 , Under @-@ 18 , Under @-@ 19 , Under @-@ 20 and Under @-@ 21 levels . He was called up to the Under @-@ 21 squad in 2011 for their friendly match against Iceland , but he was an unused substitute . + + = = Career statistics = = + + As of 1 December 2015 + + = = Honours = = + + + = = = Club = = = + + Manchester United + FIFA Club World Cup ( 1 ) : 2008 + + = = Personal life = = + + Amos attended Fallibroome High School , where he earned 11 GCSEs at grade C or above . + + + = Clayton Kershaw = + + Clayton Edward Kershaw ( born March 19 , 1988 ) is an American professional baseball pitcher for the Los Angeles Dodgers of Major League Baseball ( MLB ) . A left @-@ handed starting pitcher , Kershaw has played in the major leagues since 2008 , and his career earned run average ( ERA ) and Walks and hits per innings pitched average ( WHIP ) are the lowest among starters in the live @-@ ball era with a minimum of 1 @,@ 000 innings pitched . With his Career Hits Allowed Per Nine Innings Pitched average ( 6 @.@ 64 ) Which is the second lowest in MLB History , a three @-@ time Cy Young Award winner , the 2014 National League Most Valuable Player and Los Angeles Dodgers All Time Leader in walks and hits per innings pitched ( 1 @.@ 01 ) and hits allowed per nine innings pitched ( 6 @.@ 64 ) , Kershaw is considered by many to be the best pitcher in MLB . + Kershaw was drafted seventh overall in the 2006 MLB draft . He worked his way through the Dodgers ' farm system in just one full season , and reached the majors at 20 years old . When he debuted in 2008 , he was the youngest player in MLB , a title he held for one full year . In 2011 , he won the pitching Triple Crown and the National League Cy Young Award , becoming the youngest pitcher to accomplish either of these feats since Dwight Gooden in 1985 . Kershaw pitched a no @-@ hitter on June 18 , 2014 , becoming the 22nd Dodger to do so . Being a left @-@ handed strikeout pitcher and playing for the Los Angeles Dodgers , Kershaw has often been compared to Hall of Fame pitcher Sandy Koufax . He became the first pitcher in history to lead MLB in ERA for four consecutive years when he did so in the 2011 through 2014 seasons . + Off the field , Kershaw is an active participant in volunteer work . He and his wife , Ellen , launched " Kershaw 's Challenge " and wrote the book Arise to raise money to build an orphanage in Zambia . He has been honored with the Roberto Clemente Award and the Branch Rickey Award for his humanitarian work . + + = = Early life = = + + Kershaw was born in Dallas , Texas on March 19 , 1988 . His parents divorced when he was 10 , and he was raised by his mother . He played in youth sports leagues as a child , including Little League Baseball . + Kershaw attended nearby Highland Park High School , where he played baseball and was also the center for quarterback Matthew Stafford on the football varsity . After a growth spurt and further development of his pitches , he established himself as an elite high school prospect in 2006 when he posted a 13 – 0 record with an earned run average ( ERA ) of 0 @.@ 77 , and recorded 139 strikeouts in 64 innings pitched . In a playoff game against Northwest High School of Justin , Texas , Kershaw pitched an all @-@ strikeout perfect game . He struck out all 15 batters he faced in the game , which was shortened because of the mercy rule . He also pitched for USA Baseball 's Junior National Team in the Pan Am Championship . Kershaw was selected by USA Today as " High School Baseball Player of the Year " , and was also the Gatorade National Player of the Year for baseball . + Entering the 2006 Major League Baseball ( MLB ) draft , Kershaw was considered the top high @-@ school pitcher available . The Los Angeles Dodgers selected Kershaw with the seventh overall pick in the draft . He had committed to Texas A & M University , but turned down the scholarship offer to sign with the Dodgers , with a bonus estimated at $ 2 @.@ 3 million . The bonus was the largest to any Dodgers draft pick at the time , and was eventually topped by Zach Lee in the 2010 draft . + + = = Professional career = = + + + = = = Minor Leagues = = = + + Kershaw began his career with the Gulf Coast League ( GCL ) Dodgers . He pitched in 37 innings in which he struck out 54 batters ( walking only 5 ) , while compiling a record of 2 – 0 with a 1 @.@ 95 ERA . He featured a fastball that topped out at 96 miles per hour ( 154 km / h ) and he was rated as the top prospect in the GCL , and the Dodgers ' second best prospect by Baseball America behind third baseman Andy LaRoche . + Kershaw was promoted to the Great Lakes Loons in 2007 , where he recorded a record of 7 – 5 with a 2 @.@ 77 ERA . He was selected to play on the East Team in the Midwest League All @-@ Star Game and on the USA team in the All @-@ Star Futures Game . On August 6 , he was promoted to the Double @-@ A Jacksonville Suns in the Southern League , where he produced a 1 – 2 record and 3 @.@ 65 ERA in five starts and was selected as the top prospect in the Dodgers organization heading into the 2008 season . + During spring training in a game against the Boston Red Sox , Kershaw gained much attention for throwing a curveball to Sean Casey that started behind Casey but at the end looped into the strike zone and struck him out looking . Kershaw was 0 – 3 and had a 2 @.@ 28 ERA with 47 strikeouts through 431 ⁄ 3 innings pitched in his first stint of the year with the Suns . He was then called up to the majors on May 28 , 2008 , but optioned back to Jacksonville on July 2 . + Kershaw pitched 18 innings during his second trip to Jacksonville ( two starts and one seven inning relief appearance ) , winning two games . During this stretch , he allowed only two runs earned runs , lowering his ERA to 1 @.@ 91 . He was recalled on July 22 . + + = = = Los Angeles Dodgers = = = + + + = = = = 2008 – 2010 seasons : Early career = = = = + + On May 24 , 2008 , the Dodgers bought Kershaw 's minor @-@ league contract , and he was added to the active roster . Sportswriter Tony Jackson called Kershaw 's debut the most anticipated start by a Dodgers pitcher since Hideo Nomo 's major league debut during the 1995 season . He made his debut on May 25 , starting against the St. Louis Cardinals . He struck out the first batter he faced , Skip Schumaker , the first of seven strikeouts in the game , in which he pitched six innings and allowed two runs . When he debuted , Kershaw was the youngest player in MLB , a title he held for one full year . + Kershaw won his first major league game against the Washington Nationals on July 27 , 2008 . He pitched six @-@ plus shutout innings , allowing four hits , a walk , and he struck out five . Kershaw finished his rookie season 5 – 5 , with a 4 @.@ 26 ERA in 22 games ( 21 starts ) . He also pitched two innings out of the bullpen for the Dodgers in the 2008 National League Championship Series ( NLCS ) against the Philadelphia Phillies . + On April 15 , 2009 , Kershaw pitched seven innings , striking out 13 batters while allowing only one hit ( a solo home run ) against the rival San Francisco Giants . He was the youngest Dodger to ever strikeout 13 or more batters in a game since Sandy Koufax did it in the 1955 season . On May 17 , 2009 , Kershaw did not allow a hit against the Florida Marlins through 7 innings , then gave up a lead @-@ off double to Florida 's Cody Ross . In 2009 , despite an 8 – 8 record , he led the major leagues in opposing batting average ( .200 ) , opposing slugging percentage ( .282 ) , and hits per nine innings ( 6 @.@ 26 ) . He also posted an ERA of 2 @.@ 79 and 185 strikeouts . Kershaw also walked 91 batters , which was second most in the National League ( NL ) . + Kershaw made his playoff starting debut against the St. Louis Cardinals in the 2009 National League Division Series ( NLDS ) . He went 62 ⁄ 3 innings , striking out 4 , walking 1 , and ended up getting a no @-@ decision ( the Dodgers went on to win the game in the 9th inning ) . At 21 years old , he started the opener of the 2009 NLCS against the Philadelphia Phillies and was the third youngest pitcher to ever start a playoff series opener , behind only Fernando Valenzuela in the 1981 NLDS and Rick Ankiel in the 2000 NLDS . + Kershaw started the 2010 season by posting a 3 @.@ 07 ERA in April , but did so by walking 22 batters in 29 innings . On May 4 , he had his worst start of his career against the Milwaukee Brewers at Dodger Stadium , throwing just 57 pitches in 11 ⁄ 3 innings , while retiring only four of the 13 batters he faced — including the pitcher . He was booed loudly upon being pulled from the game . Kershaw said after the game , " I didn 't give our team any kind of chance . It 's just not a good feeling to let your teammates down , let everybody down . It stings , it hurts . I 've got to figure things out . " + Kershaw rebounded his next start by pitching an 8 inning two @-@ hitter and out @-@ dueling the then undefeated Ubaldo Jiménez . He credited his control of the slider being the major turning point for him . Later in the season , he was suspended for five games after hitting Aaron Rowand of the Giants with a pitch in a game on July 20 . The incident occurred after both teams were given a warning following Giants ace Tim Lincecum hitting Matt Kemp earlier in the game . He threw his first career complete game shutout on September 14 , 2010 also against San Francisco and finished the season with a record of 13 – 10 and a 2 @.@ 91 ERA in 32 starts , pitching 2041 ⁄ 3 innings and recording 212 strikeouts . + + = = = = 2011 season : 1st Cy Young Award = = = = + + After finishing the 2010 season strong , the Dodgers named Kershaw as the Opening Day Starter for the 2011 season . On May 29 , he pitched the second complete @-@ game shutout of his career , striking out 10 while winning a two @-@ hitter against the Florida Marlins , 8 – 0 ; he also had two singles and an RBI , scoring twice in the game . He produced his third career shutout on June 20 , a two @-@ hit , 11 @-@ strikeout effort against the Detroit Tigers . Kershaw became the first Dodgers starter to strike out the side in the 9th inning since Sandy Koufax 's perfect game . In his next start , on June 26 , Kershaw pitched another complete game ( against the Los Angeles Angels of Anaheim ) . He became the first Dodger starter to have back @-@ to @-@ back complete game victories since Jeff Weaver in the 2005 season and the first Dodger to have double @-@ digit strikeouts in consecutive starts since Chan @-@ Ho Park in the 2000 season . He was awarded the National League Player of the Week award for the week of June 20 – 26 as a result of those two starts . Midway through June , Kershaw had amassed 32 career victories , a 3 @.@ 15 ERA and 593 career strikeouts in 568 @.@ 2 innings . According to the Elias Sports Bureau , Kershaw was the first 23 @-@ year @-@ old pitcher to have that many victories , an ERA that low and an average of more than one strikeout per inning since ERA became an official statistic in 1910 . + Kershaw was selected to the National League team for the 2011 Major League Baseball All @-@ Star Game , his first All @-@ Star selection . In the month of July , Kershaw was 4 – 1 with a 2 @.@ 02 ERA and NL @-@ leading 45 strikeouts , earning him the National League Pitcher of the Month Award . On August 23 , he struck out Matt Holliday of the St. Louis Cardinals for his 200th strikeout of the season and became the 10th Dodger pitcher to record back @-@ to @-@ back 200 strikeout seasons and the first since Chan @-@ Ho Park did it in the 2001 season . + Kershaw finished the 2011 season by leading the NL with 21 wins , 248 strikeouts and a 2 @.@ 28 ERA , winning the NL pitching Triple Crown , the first Triple Crown winner since Jake Peavy of the 2007 San Diego Padres and the first Dodger since Sandy Koufax won it in the 1966 season . Justin Verlander of the Detroit Tigers won the American League Triple Crown the same season , marking the first major @-@ league season since 1924 to feature Triple Crown @-@ winning pitchers in both leagues . Kershaw 's 21 wins were the most by a Dodger pitcher since Orel Hershiser won 23 during the 1988 season . His ERA was the lowest by a Dodger since Hershiser 's 2 @.@ 03 in the 1985 season , his strikeouts were the most by a Dodger since Koufax 's 317 in 1966 and his 233 1 ⁄ 3 innings pitched were the most since Chan Ho Park pitched 234 in 2001 . Since 1965 when Koufax did it , Peavy and Kershaw are only two pitchers in the National League have led the league in wins , strikeouts , ERA , and WHIP ( walks plus hits per inning pitched ) . Kershaw also became just the second lefthander to have a 240 @-@ plus strikeouts in a season before the age of 24 , joining Vida Blue . + After the season , Kershaw was awarded the Warren Spahn Award as the best left @-@ handed pitcher in 2011 , the Players Choice Award for Most Outstanding National League pitcher , the Gold Glove Award as the top fielding pitcher in the NL and the Sporting News ( TSN ) National League Pitcher of the Year . He was additionally selected as the starting pitcher for the TSN NL All @-@ Star Team . On November 17 , he was honored with the National League Cy Young Award , making him the youngest Cy Young winner since Dwight Gooden of the 1985 New York Mets . He was the 8th Dodger pitcher to win the award , the first since Éric Gagné in the 2003 season . + + = = = = 2012 season : Cy Young runner @-@ up = = = = + + On February 7 , 2012 , Kershaw and the Dodgers agreed on a two @-@ year , $ 19 million contract . The contract was the second highest for a player in his first year of arbitration ( after Tim Lincecum 's $ 23 million 2 @-@ year contract in 2010 ) . + Kershaw was the Dodgers ' Opening Day starter for the second year in a row , where he pitched three innings of shutout ball against the San Diego Padres at Petco Park before being removed from the game due to flu @-@ like symptoms . On April 27 , he was able to last through eight innings for his second win of the season against the Washington Nationals . The win was also his 12th straight home win , tying him with Ed Roebuck ( June 1960 – August 1962 ) and Orel Hershiser ( September 1984 – October 1985 ) for the longest home winning streak since the Dodgers moved to Los Angeles . Kershaw won the National League 's Player of the Week Award for the week of May 14 – 20 after he made two starts during that week and pitched 16 scoreless innings , including his fourth career shutout . Kershaw was selected to appear in the 2012 Major League Baseball All @-@ Star Game , the second straight year he made the team . On August 11 , he went over 200 innings on the season , becoming the 12th Los Angeles Dodger pitcher with three or more seasons of 200 or more innings , and the first since Hershiser did it five times from 1985 to 1989 . Kershaw also became just the fifth Dodger pitcher with three straight 200 strikeout seasons . + Kershaw finished 2012 with a 14 – 9 record , a 2 @.@ 53 ERA ( leading the league ) , 229 strikeouts , and 2272 ⁄ 3 innings pitched , coming second in both categories . He became the first pitcher to lead the league in ERA in consecutive seasons since Arizona 's Randy Johnson in 2001 – 02 . This was also marked his fourth year in a row with a sub @-@ 3 @.@ 00 ERA , making him the first to do this since Randy Johnson from 1999 – 2002 . He finished second for the NL Cy Young behind R. A. Dickey , receiving two first place votes . + + = = = = 2013 season : 2nd Cy Young Award = = = = + + Kershaw made his third straight opening day start for the Dodgers in the 2013 season , the first Dodger starter to do so since Derek Lowe ( 2005 – 2007 ) . In that opening day start he pitched a complete game , four hit , shutout over the Giants and also hit his first career home run . He was the first pitcher to throw a shutout and hit a home run on opening day since Bob Lemon of the Cleveland Indians did so against the Chicago White Sox on April 14 , 1953 . Kershaw picked up his 1,000th career strikeout on April 17 , 2013 , when he struck out Yonder Alonso of the Padres . He was the second youngest Dodger to reach that mark , behind only Fernando Valenzuela . On May 14 , Kershaw passed the 1 @,@ 000 inning mark for his career . His ERA of 2 @.@ 70 at the time was the fifth best of the live @-@ ball era at the 1 @,@ 000 inning mark and the best career mark . He also threw 130 pitches that day , the most of his career and the most by a Dodger pitcher since Odalis Pérez in the 2003 season . + Kershaw was selected to the 2013 Major League Baseball All @-@ Star Game , his third straight selection . In July , he compiled a 4 – 1 record and 1 @.@ 34 ERA in six starts and was awarded his second National League Pitcher of the Month Award . On September 2 , Kershaw picked up his 200th strikeout of 2013 , joining Hall of Famers Sandy Koufax and Don Drysdale as the only starters in Dodgers history with at least 4 consecutive seasons of more than 200 strikeouts . + Kershaw finished the season with a 16 @-@ 9 record , 236 innings pitched ( a career high ) , and a Major League best 1 @.@ 83 ERA and 0 @.@ 92 WHIP . He was the third player in history to lead the Majors in ERA three years in a row , joining Greg Maddux ( 1993 – 95 ) and Lefty Grove ( 1929 – 31 ) . His ERA was the first sub @-@ 2 @.@ 00 ERA since Roger Clemens did it in the 2005 season and the lowest overall since Pedro Martínez in the 2000 season . He was only the third Dodger pitcher to have an ERA under 3 @.@ 00 in five consecutive seasons ( Koufax and Nap Rucker ) . + Kershaw struck out 12 batters in seven innings in the first game of the 2013 National League Division Series . That was the third most strikeouts by a Dodger pitcher in the playoffs , behind only Koufax ( 15 in the 1963 World Series ) and Carl Erskine ( 14 in the 1953 World Series ) . His six straight strikeouts in the game tied a MLB postseason record set by Tim Belcher in the second game of the 1988 World Series . He picked up his first career postseason victory in that game . + Kershaw won the Warren Spahn Award for 2013 , the second time he had won the award , which honors the best left @-@ handed pitcher in the Major Leagues . He was also selected to the Sporting News NL All @-@ Star team , the fourth Dodger pitcher to be named to the team twice ( after Koufax , Valenzuela and Don Newcombe ) . On November 13 , he won the NL Cy Young Award for the second time in three seasons . He became just the sixth pitcher in history to finish in the top two in voting three seasons in a row . + After the season , Kershaw and the Dodgers agreed on a seven @-@ year , $ 215 million , contract extension . The deal was the richest in MLB history for a pitcher , eclipsing the seven @-@ year , $ 180 million , contract signed by Justin Verlander the previous year . The average annual value of $ 30 @.@ 7 million was also the largest ever for a baseball player , beating the $ 28 million Roger Clemens received in 2007 and the 10 @-@ year , $ 275 million contract that Alex Rodriguez signed that same year . + + = = = = 2014 season : MVP and 3rd Cy Young Award = = = = + + Kershaw made his fourth straight opening day start for the Dodgers in 2014 , only the fourth Dodger ever to do so . This season the game was played at the Sydney Cricket Ground in Australia . Before his second start , Kershaw felt some pain in his back and was placed on the disabled list for the first time in his career . He did not rejoin the Dodgers until early May . On June 18 , he pitched a complete game no @-@ hitter against the Colorado Rockies and struck out a career @-@ high 15 batters . The only batter to reach base was due to an error in the top of the seventh inning , costing Kershaw a perfect game . He is the only pitcher in MLB history with 15 strikeouts in a game while allowing no hits and no walks . Kershaw was 6 @-@ 0 with an 0 @.@ 82 ERA in June and was awarded with his third career Pitcher of the Month award . He was selected to the National League squad at the 2014 Major League Baseball All @-@ Star Game , his fourth straight selection . He was the sixth Dodger pitcher , and the first since Fernando Valenzuela to make the All @-@ Star team four years in a row . + Kershaw had a 41 inning scoreless inning streak that ended in the top of the sixth inning on July 10 when , with two outs , Chase Headley homered to left field at Dodger Stadium . Kershaw 's streak was , at the time , tied for the fifteenth longest scoreless inning streak in MLB history . He won the pitcher of the month award again in July , the third Dodger ( along with Don Sutton and Burt Hooton ) to win it two months in a row . He was 4 – 0 with a 1 @.@ 10 ERA in the month with 48 strikeouts and only 10 walks . He picked up his 200th strikeout of the season on September 2 , the fifth year in a row he had reached that number , trailing only the six seasons in a row for Sandy Koufax among Dodger starters . He also became just the fourth pitcher since 1893 to have at least five 200 @-@ strikeout seasons through an age @-@ 26 season ( Bert Blyleven , Walter Johnson and Sam McDowell are the others ) . + Kershaw finished the season 21 – 3 with a 1 @.@ 77 ERA in 27 starts . He led the National League in numerous categories once again , such as ERA , ERA + , Wins , Win % , WHIP , IP / GS , SO / 9 , Strikeout @-@ to @-@ walk ratio , complete games , FIP , and Wins Above Replacement for both pitchers and all NL players . He also finished third in strikeouts despite missing most of the first month of the season . He was the first pitcher in history to win four consecutive ERA titles . Many experts called his 2014 season one of the best pitching seasons in recent memory . + However , in his first start of the playoffs , in Game 1 of the Division Series against the Cardinals , Kershaw became the first pitcher in history to strike out 10 while allowing eight runs . He had cruised through the first six innings while allowing only two hits ( both solo homers ) and surrendered six runs in the seventh . He did tie Koufax for the only Dodgers pitchers with multiple double digit strikeout games in the playoffs . He was also the first pitcher in history to give up at least seven runs in back @-@ to @-@ back postseason starts ( his previous one was Game 6 of the 2013 National League Championship Series ) . Pitching on short rest in Game 4 , he would again be dominant , but again would take the loss after giving up a 3 @-@ run home run to Matt Adams in the 7th inning . It was the first home run Kershaw had allowed in his career to a left @-@ handed batter off his curveball . + Kershaw was honored after the season with player of the year awards from both The Sporting News and Baseball America . He won three awards at the Players Choice Awards including Outstanding NL Pitcher , Player of the Year and the Marvin Miller Man of the Year Award . He also won his third ( and second straight ) Warren Spahn Award . On November 12 , he was awarded his third Cy Young Award in four seasons ( a unanimous vote ) . The following day , he was elected as the NL MVP , the first National League pitcher to win the award since Bob Gibson in 1968 and the first Dodgers player to win the award since Kirk Gibson in 1988 . + + = = = = 2015 season : 300 @-@ strikeout season = = = = + + Kershaw made his fifth straight opening day start in 2015 , the first Dodgers pitcher to do so since Hall of Famer Don Sutton started seven in a row from 1972 through 1978 . He recorded his 1,500th career strikeout on May 10 when he fanned Drew Stubbs of the Colorado Rockies . Kershaw picked up his 100th career win on May 15 against the Rockies . He became the 22nd pitcher in franchise history and the second youngest active pitcher to reach that mark . Kershaw won his sixth career NL player of the week award for the week of June 1 – 7 , 2015 , when he allowed only two runs on 10 baserunners in 15 innings while striking out 18 in two starts that week . Kershaw did not make the initial NL roster for the 2015 All @-@ Star Game , though he was included on the Final Vote ballot , which he lost to Cardinals pitcher Carlos Martinez . However , he was added to the roster to replace Nationals pitcher Max Scherzer , who was unavailable due to pitching the Sunday before the game . It became his fifth straight all @-@ star selection , joining Sandy Koufax and Fernando Valenzuela as the only Dodgers pitchers to accomplish that feat . Kershaw struck out a season high 14 batters in eight shutout innings on July 18 against the Washington Nationals . He became the first Dodgers starter with back @-@ to @-@ back games of at least 13 strikeouts since Chan Ho Park in 2000 and the first Dodgers pitcher with back @-@ to @-@ back games of double @-@ digit strikeouts and no walks since Dazzy Vance in 1930 . He shared the NL player of the week honors with his teammate Zack Greinke for the week of July 13 – 19 and won NL pitcher of the month for July . + Kershaw picked up his 200th strikeout of the season on August 12 , tying Hideo Nomo 's 1995 season for the fastest to that mark in Dodgers history at 156 innings . This was the sixth straight 200 strikeout season for Kershaw , tying Sandy Koufax for the most in Dodgers franchise history . On October 4 , Kershaw became the 11th player in Major League history to strike out 300 batters in a season , the first player since Randy Johnson did it in 2002 . He finished the season with a 16 – 7 record , a 2 @.@ 13 ERA , and 301 strikeouts in 232 2 ⁄ 3 innings . + In Game One of the 2015 National League Division Series , Kershaw struck out 11 in 6 2 ⁄ 3 innings but allowed three runs for his fifth straight postseason loss . He and New York Mets starter Jacob deGrom were the first pair of starters to each throw at least 11 strikeouts in the same postseason game in MLB history . He rebounded in game four , earning the win on three days ' rest by allowing one run and three hits against eight strikeouts in seven innings on October 13 . Kershaw finished third in the National League Cy Young Award voting , behind Jake Arrieta and teammate Zack Greinke . In mid @-@ December 2015 , Kershaw participated in an expedition to Cuba composed of MLB officials and players , including former Dodgers manager Joe Torre . It was the first visit by MLB since 1999 , and one anticipated as an important step to help normalize relations with the United States that had begun to ease earlier in the year . + + = = = = 2016 = = = = + + Kershaw made his sixth straight opening day start in 2016 as the Dodgers won 15 – 0 . It also marked the first time the Dodgers had won six straight opening day games , all of which he started . On May 12 against the New York Mets , he struck out 13 while pitching a three @-@ hit complete game shutout . He set an MLB record with six consecutive starts with at least 10 strikeouts and no more than one walk and a club record with six consecutive starts with at least 10 strikeouts . He picked up his 100th strikeout on May 29 , while only walking five batters within that period . That was the lowest walk total for a pitcher reaching 100 strikeouts in the modern era , beating Cliff Lee who had seven walks in the 2010 season . On June 30 , 2016 , Kershaw was placed on the 15 @-@ day disabled list due to back pain . He received an MRI , which revealed that there was a mild herniated disc in the back , and received an epidural injection to treat the pain . He was named to the 2016 All @-@ Star team but was unable to pitch in the game due to his injury . On July 20 , the Dodgers shut down Kershaw for an indefinite period of time . He continued to feel discomfort in his back after a simulated game . + + = = Pitching style = = + + Kershaw 's pitching style relies on deception . He keeps the ball hidden so that it is hard for the batter to pick up the ball and has a consistent overhand delivery on all of his pitches . Out of the windup , Kershaw lowers his right foot vertically with a slight pause before moving it forward toward the plate . The motion was described during the 2015 National League Division Series as a " kickstand move " drawing comparison with one setting a kickstand on a bicycle . Out of the stretch , he uses a slide step as it makes it difficult for the base runner at first base to get a read on him . He has stated many times that he has modeled his pitching mechanics after his favorite pitcher growing up , Roger Clemens . + Kershaw 's repertoire includes a four @-@ seam fastball that sits anywhere from 92 miles per hour ( 148 km / h ) to 95 miles per hour ( 153 km / h ) and tops out at 98 miles per hour ( 158 km / h ) with late movement , a slider at 84 miles per hour ( 135 km / h ) – 87 miles per hour ( 140 km / h ) , a 12 – 6 curveball between 72 miles per hour ( 116 km / h ) – 76 miles per hour ( 122 km / h ) , and a seldom thrown changeup ( under 3 % ) . As of late in the 2015 season , he is believed to be experimenting with the use of a cutter . He is also known for having one of the better pickoff moves to first base and is considered one of the better fielding pitchers in the game . + + = = = Preparation = = = + + According to many teammates , Kershaw is a noted perfectionist . A.J. Ellis describes his preparation and perfectionism during bullpens before each start : + Three fastballs when I 'm standing up . I sit , and three fastballs down the middle . Then three fastballs either side . Three changeups away . Fastball inside . Three curveballs to the middle . Fastball inside . Three sliders to the middle . Then he goes to the stretch position . Two fastballs inside , two fastballs away , two changeups , one fastball inside , two curveballs , one fastball inside , two sliders . Back to the windup , and one fastball inside , one fastball away . Thirty @-@ four pitches in all . + + = = Awards and accomplishments = = + + + = = = Awards = = = + + + = = = Annual statistical achievements = = = + + Notes : Through 2015 season . Per Baseball @-@ Reference.com. + + = = Personal life = = + + Kershaw grew up in Dallas , Texas and attended school with quarterback Matthew Stafford and fellow pitchers Jordan Walden and Shawn Tolleson . One of his favorite players growing up was former Texas Rangers first baseman Will Clark , and the main reason he wears number 22 is to honor Clark . + He is the great @-@ nephew of astronomer Clyde Tombaugh , the discoverer of Pluto . Kershaw 's mother , born Marianne Tombaugh , is the daughter of Clyde Tombaugh 's younger brother . His father , Christopher George Kershaw , was a musician and won a Clio Award for his work . The elder Kershaw remarried after his divorce from Marianne and died in 2013 . + On December 4 , 2010 , Kershaw married his girlfriend of seven years , Ellen Melson . On January 23 , 2015 , Ellen gave birth to the couple 's first child , daughter Cali Ann . He is a Methodist with strong religious faith . + Kershaw made a cameo appearance in " Prince " , a Season 3 episode of New Girl which originally aired following FOX 's telecast of Super Bowl XLVIII . + + = = = Humanitarian work = = = + + Prior to the 2011 season , Kershaw visited Zambia with his wife as part of a Christian mission organized by Dallas @-@ based Arise Africa . After the trip , Kershaw announced his dream of building an orphanage in Lusaka , Zambia , which he called " Hope 's Home " after 11 @-@ year @-@ old Hope , an HIV @-@ positive child Kershaw met while in Zambia . To accomplish his goal , Kershaw pledged a donation of $ 100 per strikeout recorded in 2011 . With Kershaw 's career high of 248 strikeouts thrown during the 2011 season , he donated $ 492 @,@ 300 toward his $ 70 @,@ 000 goal . When Kershaw won the 2011 Players Choice Award , he donated $ 260 @,@ 000 to Hope 's Home . He and his wife returned to Zambia in 2012 . Kershaw donated $ 100 for every strikeout in the 2012 season to Kershaw 's Challenge , calling that season 's incarnation of the project " Strike Out To Serve . " Seventy percent of the money raised in 2012 went to Arise Africa , with 10 percent each going to the Peacock Foundation in Los Angeles , Mercy Street in Dallas , and I Am Second . In 2014 , Kershaw continued to support the children of Zambia , with partnership with CURE International , raising funds to pay for 170 children 's surgeries and new medical equipment for CURE hospital in Lusaka . Kershaw has continued his partnership with CURE International in 2015 , setting a goal of funding 100 surgeries for CURE 's hospital in the Dominican Republic . + In addition to Hope 's Home and Kershaw 's Challenge , he has also helped with other programs in Los Angeles , such as helping Habitat for Humanity demolish and rehabilitate a house in Lynwood , California . He is also a supporter of the Peacock Foundation , which provides animal @-@ assisted interventions and activities for at risk youth by partnering with mental health practitioners , public service agencies and community organizations . + + = = = Author = = = + + Kershaw and his wife , Ellen , co @-@ authored a book named Arise : Live Out Your Faith and Dreams on Whatever Field You Find Yourself about their Christian faith and their humanitarian efforts . The book was released on January 10 , 2012 through Regal Press . + + = = = Endorsements = = = + + Kershaw is a celebrity endorser for www.FantasyDraft.com , Wilson Sporting Goods ( glove ) , Under Armour ( shoes ) , Muscle Milk , and Subway . + + + = Josepha Petrick Kemarre = + + Josepha Petrick Kemarre ( born ca . 1945 or ca . 1953 , date uncertain ) is an Anmatyerre @-@ speaking Indigenous Australian from Central Australia . Since first taking up painting around 1990 , her works of contemporary Indigenous Australian art have been acquired by several major collections including Artbank and the National Gallery of Victoria . Her paintings portray bush plum " dreaming " and women ’ s ceremonies ( known as Awelye ) . One of her paintings sold at a charity auction for A $ 22 @,@ 800 . Josepha Petrick 's works are strongly coloured and formalist in composition and regularly appear at commercial art auctions in Australia . Her art appears to have survived the huge contraction of the primary art market in Australia since 2008 . There is no existing Catalogue raisonné of Josepha Petrick 's artworks , to date , no fakes have been cited . + + = = Personal background = = + + Josepha Petrick Kemarre is an Anmatyerre @-@ speaking Indigenous Australian , born around 1945 or 1953 at the Santa Teresa Mission , near Alice Springs in Australia 's Northern Territory . + When Josepha Petrick began painting for Mbantua Gallery in central Australia , she indicated that her name was Josepha rather than Josie , and that this was how she henceforth wished to be known ; however Mbantua 's biography is the only source that has used that version of her name . + After marrying Robin Petyarre , brother of artist Gloria Petyarre , Josepha Petrick moved to the region of Utopia , north @-@ east of Alice Springs , which is where she was living when she began painting around 1990 . They had seven children , one of whom , Damien Petrick , went on to become an artist like his mother . By 2008 , Josie Petrick 's husband had died , and Petrick was dividing her time between Alice Springs and Harts Range , to its north @-@ east . + + = = Professional background = = + + Contemporary Indigenous art of the western desert began in 1971 when Indigenous men at Papunya created murals and canvases using western art materials , assisted by teacher Geoffrey Bardon . Their work , which used acrylic paints to create designs representing body painting and ground sculptures , rapidly spread across Indigenous communities of central Australia , particularly after the introduction of a government @-@ sanctioned art program in central Australia in 1983 . By the 1980s and ' 90s , such work was being exhibited internationally . The first artists , including all of the founders of the Papunya Tula artists ' company , were men , and there was resistance among the Pintupi men of central Australia to women also painting . However , many of the women wished to participate , and in the 1990s many of them began to paint . In the western desert communities such as Utopia , Kintore , Yuendumu , Balgo , and on the outstations , people were beginning to create art works expressly for exhibition and sale . + + = = = Career = = = + + Josepha Petrick began painting about 1990 or 1992 as part of the contemporary Indigenous art movement that had begun at Papunya in the 1970s . By 1998 her work was being collected by both private and public institutions , such as Charles Sturt University , and in 2005 a work was purchased by the National Gallery of Victoria . Her career received a significant boost when her work was included in the National Gallery of Victoria 's 2006 Landmarks exhibition and its catalogue ; her painting was printed opposite that of Yannima Tommy Watson , who was by this time famous , particularly for his contribution to the design of a new building for the Musée du quai Branly . Petrick 's paintings have been included at exhibitions in several private galleries in Melbourne and Hong Kong , as well as at the Australian embassy in Washington in 2001 . + In 2006 a commissioned work by Petrick was exhibited at Shalom College at the University of New South Wales as part of a charity fundraising exhibition . It sold for A $ 22 @,@ 000 . As of the end of 2008 , the highest recorded auction price for an item of Petrick 's work was $ 22 @,@ 800 , set in May 2007 . An image based on a triptych by Petrick , Bush Berries , appears on the cover of a book on the visual perception of motion , Motion Vision . + Central Australian artists frequently paint particular " dreamings " , or stories , for which they have responsibility or rights . These stories are used to pass " important knowledge , cultural values and belief systems " from generation to generation . Paintings by Petrick portray two different groups of dreamings , rendered in two distinct styles . Bush plum dreaming represents a plant of the central Australian desert which is " a source of physical and spiritual sustenance , reminding [ the local Indigenous people ] of the sacredness of [ their ] country " . These paintings are undertaken with red , blue and orange dots that represent the fruit at different stages in its development . She also paints women ’ s ceremonies ( Awelye ) and dreamings , and these are created using rows of coloured dots and include representations of women 's ceremonial iconography . + Journalist Zelda Cawthorne described Petrick as one of the " finest contemporary Aboriginal artists " . Art consultant Adrian Newstead has ranked her as amongst the country 's top 200 Indigenous artists , noting that she has become " known for innovative works that create a sense of visual harmony through fine variegated fields of immaculately applied dotting " . Her style is described by Indigenous art writers Birnberg and Kreczmanski as an " interesting , modern interpretation of landscape " . + Petrick 's work is held in a variety of public and private collections , including Artbank , the Charles Sturt University Collection , the Holmes a Court Collection , and the National Gallery of Victoria . + + + = Head VI = + + Head VI is an oil @-@ on @-@ canvas painting by the Irish @-@ born English figurative artist Francis Bacon , the last of six panels making up his " 1949 Head " series . It shows a bust view of a single figure , modeled on Diego Velázquez 's Portrait of Innocent X. Bacon applies forceful , expressive brush strokes , and places the figure within a glass cage structure , behind curtain @-@ like drapery . This gives the effect of a man trapped and suffocated by his surroundings , screaming into an airless void . + Head VI was the first of Bacon 's paintings to reference Velázquez , whose portrait of Pope Innocent X haunted him throughout his career and inspired his series of " screaming popes " , a loose series of which there are around 45 surviving individual works . Head VI contains many motifs that were to reappear in Bacon 's work . The hanging object , which may be a light switch or curtain tassel , can be found even in his late paintings . The geometric cage is a motif that appears as late as his 1985 – 86 masterpiece , Study for a Self @-@ Portrait — Triptych . + Head VI was first exhibited in November 1949 at the Hanover Gallery in London , in a showing organised by one of the artist 's early champions , Erica Brausen . At the time , Bacon was a highly controversial but respected artist , best known for his 1944 Three Studies for Figures at the Base of a Crucifixion , which made him the enfant terrible of British art . Head VI drew a mixed reaction from art critics ; John Russell , later Bacon 's biographer , at the time dismissed it as a cross between " an alligator shorn of its jaws and an accountant in pince @-@ nez who has come to a bad end " . In 1989 Lawrence Gowing wrote that the " shock of the picture , when it was seen with a whole series of heads ... was indescribable . It was everything unpardonable . The paradoxical appearance at once of pastiche and iconoclasm was indeed one of Bacon 's most original strokes . " Art critic and curator David Sylvester described it as a seminal piece from Bacon 's unusually productive 1949 – 50 period , and one of Bacon 's finest popes . + + = = 1949 Head series = = + + Bacon 's output is characterised by sequences of images . He told Sylvester that his imagination was stimulated by sequences and that " images breed other images in me " . His series were not always planned or painted in sequence ; sometimes paintings are grouped for convenience but vary in execution and tone . The idea for the head series came after he returned penniless , late in 1948 , from a stay in Tangier . In the previous three years he had been unable to find a voice ; the last surviving canvas from this period is his Painting ( 1946 ) . Although he continued to paint , he was a ruthless self critic , given to slashing canvases with blades , and no works survive from between 1947 and the winter of 1948 . Gallerist Erica Brausen offered Bacon the opportunity of a solo show for the opening of her new Hanover Gallery . He agreed , but had nothing in reserve to hang . In following years , Brausen became perhaps the most important of Bacon 's early champions ; she arranged this showing — his debut solo exhibition — publicised him widely and organised viewings for international buyers . + Already 40 years old , Bacon viewed the exhibition as his last chance and applied himself to the task with determination . Because he had destroyed all his out of the last three years , he had little choice but to present new works . He did not have a grand plan when he agreed to the show , but eventually found themes that interested him in his Head I of the previous year , and executed five progressively stronger variants in the final weeks before the November exhibition , completing the series barely in time for the opening . + The paintings depict isolated figures enclosed in spaces that are undefined , overwhelmingly claustrophobic , reductive and eerie . Coming early in Bacon 's career , they are uneven in quality , but show a clear progression especially in how they utilise and present ideas he was still clearly developing and coming to terms with . Head I ( actually begun in the winter of 1948 ) and Head II show formless pieces of flesh that broadly resemble human heads ; they have half @-@ open eyes and a pharynx , though it is positioned much higher than would be expected in a human . Heads III , IV and V show fully formed busts recognisable as men , and are characterised by a haunted atmosphere . These two broad ideas coalesce in Head VI , which is as physiologically tortured as the first two paintings , and as spectral as the middle three . In Head VI the figure has developed and is now shown wearing vestments , the first indication in Bacon 's work of the influence of Velázquez , while the focus has become the open mouth and the study of the human scream . + Bacon said that chance played a significant role in his work , and that he often approached a canvas without having a clear idea of what might emerge . This was especially the case in the mid to late 1940s , a period when he was drinking heavily and spending most nights in Soho casinos and poker rooms . The following morning he would often approach his canvas " in a bad mood of drinking ... under tremendous hangovers and drink ; I sometimes hardly knew what I was doing . " He incorporated his appetite for chance into his work : an image often would morph mid @-@ way through into something quite different from what he had first intended . He actively sought out this freedom and felt it crucial to his progression as an artist . To him , lifestyle and art were intertwined ; he said that " perhaps the drink helped me to be a bit freer . " This is very evident in the 1949 series , which began as a rather morbid study of a collapsed head , but evolved over the six surviving panels into a reworking of Velázquez masterpieces , and arrived at an image that was to preoccupy Bacon for the subsequent 20 years . + The series marks Bacon 's first attempt at depicting lone figures in rooms . For him , the key aspect was that it appeared that the subject felt isolated , unobserved , and had abandoned the need to present an outward face . He believed that under these circumstances all pretence falls away , and the social being becomes the sum of its neuroses , which Bacon attempted to convey by reducing the subject to its bare @-@ bones features : a mouth , ears , eyes , a jaw . According to Russell , " the view out front ceases to be the only one , and our person is suddenly adrift , fragmented , and subject to strange mutation . " Russell observed that while the depiction of figures in rooms is common through all eras of painting , the figures are always posed , and usually seemingly aware that they are being portrayed . This conceit is abandoned in Bacon 's series . + Head I , completed late in 1948 , is considered more successful than Head II . Although it is well @-@ regarded critically , Head II is seen as something of a creative cul @-@ de @-@ sac , while Heads III , IV and V are usually considered as merely intermediate steps towards Head VI . It is exceptional in Bacon 's oeuvre that works of their relative poor quality survive ; he was ruthlessly self @-@ critical and often slashed or abandoned canvasses before they were completed . When pressed again by Brausen in 1953 to produce works for a New York show that she had been publicising for a year , he was full of doubt and destroyed most of what he had been working on , including several other popes . + Brausen commissioned another showing to be held in 1950 , for which Bacon painted three large popes modelled on Velázquez 's portrait . The gallery advertised the show as " Francis Bacon : Three Studies from the Painting of Innocent X by Velázquez " , but in the end Bacon was dissatisfied with the works and destroyed them before the show opened . + + = = Description = = + + The figure is clearly identifiable as a pope from his clothing . It seems trapped and isolated within the outlines of an abstract three @-@ dimensional glass cage . This framing device , described by Sylvester as a " space @-@ frame " , was to feature heavily throughout the artist 's career . A cord hangs from the upper edge of the glass case , falling just in front of the pope 's face and partially covering his eyes . It is too indistinctly drawn to identify with certainty , but given the presence of similar objects in Bacon 's later works , may be either the end of a hanging light switch or the tassel of a curtain ; the hanging cord was to become a signature for the artist . Apart from its symbolic meaning , it has a compositional function , framing the painting with a further set of vertical lines . Such an object reappears most prominently in the centre panel of his 1973 Triptych , May – June 1973 , where it is clearly a dangling light bulb . For Bacon , these elements were intended to make the figure waver in and out of sight for the viewer , alluding to the fact that bulbs can be on or off , curtains open or closed . + The figure 's mouth is opened wide as if screaming , an expression Bacon took from a still he kept of the nurse screaming in Sergei Eisenstein 's Odessa Steps massacre sequence in his 1925 silent film Battleship Potemkin . In 1984 , the broadcaster Melvyn Bragg asked Bacon about the still , and observed that in his earlier career the artist seemed preoccupied with the physicality of the human mouth . Bacon replied , " I had always thought that I would be able to make the mouth with all the beauty of a Monet landscape though I never succeeded in doing so . " When Bragg asked why he thought he had failed , Bacon said , " It should be all much more colour , should have got more of the interior of the mouth , with all the colours of the interior of the mouth , but I didn 't happen to get it . " His interest in the mouth was further stimulated by a medical textbook of diseased oral cavities bought in a second @-@ hand bookshop , kept in his studio and to which he often referred to . + The glass cage might imply a vacuum that the figure 's voice is unable to escape ; as if it is screaming in silence . Rueful later in life , Bacon said that he had " wanted to paint the scream more than the horror . I think , if I had really thought about what causes somebody to really scream , it would have made the scream ... more successful " . The work evokes memories of the Second World War . The glass enclosure of his 1949 Chicago Study for a Portrait is often seen as prophesying photographs of Adolf Eichmann 1961 trial before a Jerusalem District Court , when he was held within a similar cage . Bacon strongly resisted literal comparisons though , and stated that he used the device so he could frame and " really see the image – for no other reason . I know it 's been interpreted as being many other things . " Other critics saw similarities between the glass case and the radio booths of late 1930s broadcasters who warned against the impending calamity . Denis Farr notes that Bacon was sympathetic to George Orwell and referred in interviews to Orwellian " shouting voices ... and trembling hands ... convey [ ing ] the harsh atmosphere of an interrogation . " + + = = Influences = = + + The so @-@ called " space frame " had already been used by Alberto Giacometti in the 1930s , and the two artists became friends in the 1960s . However Giacometti had by 1949 used it only in surrealist contexts before Bacon 's adaption , and in turn influenced his use in " The Cage " of 1950 . A similar two dimensional construct is found in Henry Moore 's works , notably his " Maguette for King and Queen " , constructed three years after Bacon 's Head . It is difficult to untangle how these artists influenced and informed each other . What is notable is that Bacon continued to use the motif , with intervals until the end of his life . Sylvester suggests his finest example is the 1970 Three Studies of the Male Back . + The full @-@ length golden curtain @-@ like folds painted in heavy brush strokes are in part influenced by Degas but also similar to Titian 's 1558 Portrait of Cardinal Filippo Archinto . Bacon adapts the Old Master 's device to isolate and distance the sitter from the viewer ; the black ground @-@ paint is visible through the folds , making the separation all the more affecting . Bacon had already used similar forms in his Chicago panel , and they were to become a feature of his most acclaimed 1950s works , especially in his " screaming popes " . He became fascinated with the veil or curtain as a motif in painting , and collected many reproductions of works by Titian and Degas in which it is employed . He had begun his career as an interior decorator and designer of furniture and rugs in the mid @-@ 1930s , and later said that he liked " rooms hung all round with just curtains hung in even folds " . Veils or curtains appear in Bacon 's earliest works , notably the 1949 Study from the Human Body , always in portraits and always in front of , rather than behind , the figure . + Head VI is closely modelled on Velázquez 's c . 1650 Portrait of Innocent X , today in the Doria Pamphilj Gallery , Rome . Bacon cautiously avoided seeing the original , even when he spent three months in Rome in 1954 . Critics speculate he was afraid of being disappointed , or thought that an intimate knowledge of the painting would dull his imagination . Yet his fascination was all @-@ consuming and he reproduced variants of it obsessively for almost two decades ; an examination and homage described as " without parallel in the history of art " . Bacon 's approach differs to Velázquez 's in a number of ways : both artists were expressive , yet Bacon 's broad brush @-@ strokes and freedom with paint contrast with Velázquez 's tight and controlled treatment . He adapts Velázquez 's positioning of the pope to place him above the viewer 's point of view , elevating and distancing him . This was already a common technique in commercial , promotional photography but in Bacon 's hands , Schmied argues , the angle places the pope on a kind of stage for the viewer to coldly observe . + Although Bacon revered Velázquez 's portrait , he did not try and reproduce the earlier painting . In interviews , he said that he saw flaws in Velázquez 's work and that he viewed that social structure and order as , according to art historian Wieland Schmied , " obsolete and decayed " . Bacon 's approach was to elevate his subject so he could knock him down again , thereby making a sly comment on the treatment of royalty in both old master and contemporary painting . Yet Velázquez 's influence is apparent in many aspects of the painting . The sitter 's pose closely echoes the original , as does the violet and white colouring of his cope , which is built up through broad , thick , brush @-@ strokes . The influence can be further seen in the gold @-@ coloured ornaments on the back of the seat that extend on both sides of the figure . Art historian Armin Zweite describes the work as a mixture of reverence and subversion that pays tribute to Velázquez , while at the same time deconstructs his painting . + Sylvester detects the influence of late works by Titian in other aspects , especially in the deep and rich colouring , Velázquez 's portrayals of Philip IV , and agrees with identification of pastels of Edgar Degas as a source . He believes Bacon borrowed from Degas the use of parallel heavy folds to create the illusion of what Degas described as " shuttering " , as seen in the earlier artist 's After the Bath , Woman drying herself . Sylvester makes a further direct link between the folds and the transparent veil in Titian 's Portrait of Cardinal Filippo Archinto . He believes the folds serve to " push the viewer back " , creating a distance from the subject , an effect he sees as similar to the separation between and orchestra and setting ; others view the folds as more closely resembling the bars of a prison . Sylvester describes them as an accentuation of background verticals into stripes that are made to appear as if they pass through the sitter . In his " Interviews with Francis Bacon " series of books , he asked Bacon why he found the effect so poignant . The artist replied , " Well , it means that the sensation doesn 't come straight out at you but slides slowly and gently through the gaps . " + When asked why he was compelled to revisit the Velázquez so often , Bacon replied that he had nothing against popes per se , but merely sought " an excuse to use these colours , and you can 't give ordinary clothes that purple colour without getting into a sort of false fauve manner . " Schmied sees Head VI as a reaction against Velázquez , and a commentary on how the papacy is " obsolete and decayed " , with a pope resistant to both modernisation and secularisation . To him , the figure seems to " resist the maltreatment of image and tries to halt the impending collapse of the established work order . He screams and grimaces , clutching at arms of his throne . " Sylvester notes that Bacon was impressed by Picasso 's figuration and handling of paint , especially in Picasso 's 1930s works ; and suggests that the white blobs around the pope 's cape may be influenced by the 1913 Woman in a Slip Seated in an Armchair . + + = = Critical reception = = + + When Bacon undertook the series late in 1948 he was something of a two @-@ hit wonder . He had success in 1944 with Three Studies for Figures at the Base of a Crucifixion and to a lesser extent with Painting ( 1946 ) , both of which were highly regarded but viewed as sensationalist . The exhibition was a success , and marked his critical breakthrough . Until then , he had been highly regarded but capable of only occasional brilliance . The full show established him in the minds of critics as , according to Michael Peppiatt , " more of a force to be reckoned with in the contemporary scene " . While some found his images horrifying and unnerving , they wrote about him all the same , sealing his reputation as the enfant terrible of post @-@ war British art . The critic for The Observer wrote , " The recent paintings ... horrifying as they are , cannot be ignored . Technically they are superb , and the masterly handling of large areas of pearly grey , flushed with a sudden pink or green , only makes me regret the more that the artist 's gift should have been brought to subjects so esoteric " . + Most critics focused on Heads I and VI , remarking favourably on the progression between the two . While some found the inherent violence of the paintings distasteful , Brausen was a skilled publicist and turned the bad press into notoriety , and brought Bacon 's work to national attention . Peppiatt notes that the exhibition showed Bacon no longer needed sensationalist material to make an impact , and was now capable of creating an intense emotional response through more subtle means , and had found a way of presenting the human condition in the way he had sought , by presenting his sitter " in a vestigial setting , a cage or [ behind ] a parted curtin ... the rest , the most essential , lay in the manipulation of the infinitely suggestive medium of oil paint " . After the showing Bacon gradually became " less the outsider with an occasional image of horrifying brilliance and more a force to be reckoned with on the contemporary scene " . His reputation and the value of his panels rose dramatically , and after the showing he was sought after by European , American and African collectors and galleries , commanding prices as high as £ 400 for single works , unusual for a contemporary British artist of the time . + + = = Provenance = = + + Head VI was first exhibited at the Hanover Gallery , London , in 1949 . It was acquired by the Arts Council 's Hayward Gallery in 1952 . The Hayward has loaned it out a number of times since , including for major retrospectives at the Grand Palais , Paris in 1971 , and the Hugh Lane Gallery , Dublin , in 2000 . + In May 1996 , the National Gallery took on loan Velázquez 's Innocent X portrait and hung it alongside four Bacon paintings ; Head VI , Pope I ( 1951 ) , Pope 1961 and Pope 1965 . Peppiatt believes that Bacon would have disapproved of such a showing with a work he considered one of the finest ever painted , but writes that two , including Head VI , " stood up to it , and even enhanced its authority as one of the most penetrating studies of human nature and human power " . + + + = Imagism = + + Imagism was a movement in early 20th @-@ century Anglo @-@ American poetry that favored precision of imagery and clear , sharp language . + Imagism has been described as the most influential movement in English poetry since the activity of the Pre @-@ Raphaelites . As a poetic style it gave Modernism its start in the early 20th century , and is considered to be the first organized Modernist literary movement in the English language . Imagism is sometimes viewed as ' a succession of creative moments ' rather than any continuous or sustained period of development . René Taupin remarked that ' It is more accurate to consider Imagism not as a doctrine , nor even as a poetic school , but as the association of a few poets who were for a certain time in agreement on a small number of important principles ' . + The Imagists rejected the sentiment and discursiveness typical of much Romantic and Victorian poetry , in contrast to their contemporaries , the Georgian poets , who were generally content to work within that tradition . In contrast , Imagism called for a return to what were seen as more Classical values , such as directness of presentation and economy of language , as well as a willingness to experiment with non @-@ traditional verse forms . Imagists use free verse . + Imagist publications appearing between 1914 and 1917 featured works by many of the most prominent modernist figures , both in poetry and in other fields . The Imagist group was centered in London , with members from Great Britain , Ireland and the United States . Somewhat unusually for the time , a number of women writers were major Imagist figures . + A characteristic feature of Imagism is its attempt to isolate a single image to reveal its essence . This feature mirrors contemporary developments in avant @-@ garde art , especially Cubism . Although Imagism isolates objects through the use of what Ezra Pound called " luminous details " , Pound 's Ideogrammic Method of juxtaposing concrete instances to express an abstraction is similar to Cubism 's manner of synthesizing multiple perspectives into a single image . + + = = Pre @-@ Imagism = = + + Well @-@ known poets of the Edwardian era of the 1890s , such as Alfred Austin , Stephen Phillips , and William Watson , had been working very much in the shadow of Tennyson , producing weak imitations of the poetry of the Victorian era . They continued to work in this vein into the early years of the 20th century . As the new century opened , Austin was still the serving British Poet Laureate , a post which he held up to 1913 . In the century 's first decade , poetry still had a large audience ; volumes of verse published in that time included Thomas Hardy 's The Dynasts , Christina Rossetti 's posthumous Poetical Works , Ernest Dowson 's Poems , George Meredith 's Last Poems , Robert Service 's Ballads of a Cheechako and John Masefield 's Ballads and Poems . Future Nobel Prize winner William Butler Yeats was devoting much of his energy to the Abbey Theatre and writing for the stage , producing relatively little lyric poetry during this period . In 1907 , the Nobel Prize for Literature was awarded to Rudyard Kipling . + The origins of Imagism are to be found in two poems , Autumn and A City Sunset by T. E. Hulme . These were published in January 1909 by the Poets ' Club in London in a booklet called For Christmas MDCCCCVIII . Hulme was a student of mathematics and philosophy ; he had been involved in the setting up of the club in 1908 and was its first secretary . Around the end of 1908 , he presented his paper A Lecture on Modern Poetry at one of the club 's meetings . Writing in A. R. Orage 's magazine The New Age , the poet and critic F. S. Flint ( a champion of free verse and modern French poetry ) was highly critical of the club and its publications . From the ensuing debate , Hulme and Flint became close friends . In 1909 , Hulme left the Poets ' Club and started meeting with Flint and other poets in a new group which Hulme referred to as the " Secession Club " ; they met at the Eiffel Tower restaurant in London 's Soho to discuss plans to reform contemporary poetry through free verse and the tanka and haiku and the removal of all unnecessary verbiage from poems . The interest in Japanese verse forms can be placed in a context of the late Victorian and Edwardian revival of interest in Chinoiserie and Japonism as witnessed in the 1890s vogue for William Anderson 's Japanese prints donated to the British Museum , performances of Noh plays in London , and the success of Gilbert and Sullivan 's operetta The Mikado ( 1885 ) . Direct literary models were available from a number of sources , including F. V. Dickins 's 1866 Hyak nin is 'shiu , or , Stanzas by a Century of Poets , Being Japanese Lyrical Odes , the first English @-@ language version of the Hyakunin isshu , a 13th @-@ century anthology of 100 waka , the early 20th @-@ century critical writings and poems of Sadakichi Hartmann , and contemporary French @-@ language translations . + The American poet Ezra Pound was introduced to the group in April 1909 and found that their ideas were close to his own . In particular , Pound 's studies of Romantic literature had led him to an admiration of the condensed , direct expression that he detected in the writings of Arnaut Daniel , Dante , and Guido Cavalcanti , amongst others . For example , in his 1911 – 12 series of essays I gather the limbs of Osiris , Pound writes of Daniel 's line " pensar de lieis m 'es repaus " ( " it rests me to think of her " ) ( from the canzone En breu brizara 'l temps braus ) : " You cannot get statement simpler than that , or clearer , or less rhetorical " . These criteria of directness , clarity and lack of rhetoric were to be amongst the defining qualities of Imagist poetry . Through his friendship with Laurence Binyon , Pound had already developed an interest in Japanese art by examining Nishiki @-@ e prints at the British Museum , and he quickly became absorbed in the study of related Japanese verse forms . + In an article in La France , 1915 , the French critic , Remy de Gourmont described the Imagists as descendants of the French Symbolistes and in a 1928 letter to the French critic and translator René Taupin , Pound was keen to emphasise another ancestry for Imagism , pointing out that Hulme was indebted to a Symbolist tradition , linking back via William Butler Yeats , Arthur Symons and the Rhymers ' Club generation of British poets to Mallarmé. and the Symbolist source was amplified further in Taupin 's study published in 1929 , in which he concluded however great the divergence of technique and language ' between the image of the Imagist and the ' symbol ' of the Symbolists there is a difference only of precision ' . In 1915 , Pound edited the poetry of another 1890s poet , Lionel Johnson for the publisher Elkin Mathews . In his introduction , he wrote + + = = Early publications and statements of intent = = + + In 1911 , Pound introduced two other poets to the Eiffel Tower group : his former fiancée Hilda Doolittle ( who had started signing her work H.D. ) and her future husband Richard Aldington . These two were interested in exploring Greek poetic models , especially Sappho , an interest that Pound shared . The compression of expression that they achieved by following the Greek example complemented the proto @-@ Imagist interest in Japanese poetry , and , in 1912 , during a meeting with them in the British Museum tea room , Pound told H.D. and Aldington that they were Imagistes and even appended the signature H.D. Imagiste to some poems they were discussing . + When Harriet Monroe started her Poetry magazine in 1911 , she had asked Pound to act as foreign editor . In October 1912 , he submitted thereto three poems each by H.D. and Aldington under the Imagiste rubric , ( published in the November 1912 second issue thereof ) with a note which described Aldington as ' one of the ' Imagistes ' . This note , along with the appendix note ( ' The Complete Works of T. S. Hulme ' ) in Pound 's book ( also published in Autumn 1912 ) entitled Ripostes are considered to be first appearances of the word Imagiste ( later anglicised to ' Imagists ' ) in print . + Aldington 's poems , Choricos , To a Greek Marble , and Au Vieux Jardin , were in the November issue of Poetry , and H.D. ' s , Hermes of the Ways , Priapus , and Epigram , appeared in the January 1913 issue ; Imagism as a movement was launched . Poetry 's April issue published what came to be seen as " Imagism 's enabling text " , the haiku @-@ like poem of Ezra Pound entitled " In a Station of the Metro " : + The apparition of these faces in the crowd ; + Petals on a wet , black bough . + The March 1913 issue of Poetry contained A Few Don 'ts by an Imagiste and the essay entitled Imagisme both written by Pound , with the latter being attributed to Flint . The latter contained this succinct statement of the group 's position : + Direct treatment of the " thing " , whether subjective or objective . + To use absolutely no word that does not contribute to the presentation . + As regarding rhythm : to compose in sequence of the musical phrase , not in sequence of the metronome . + Pound 's note opened with a definition of an image as " that which presents an intellectual and emotional complex in an instant of time " . Pound goes on to state , " It is better to present one Image in a lifetime than to produce voluminous works " . His list of " don 'ts " reinforced his three statements in " Imagism " , while warning that they should not be considered as dogma but as the " result of long contemplation " . Taken together , these two texts comprised the Imagist programme for a return to what they saw as the best poetic practice of the past . F.S. Flint commented " we have never claimed to have invented the moon . We do not pretend that our ideas are original . " + The 1916 preface to Some Imagist Poets comments " Imagism does not merely mean the presentation of pictures . Imagism refers to the manner of presentation , not to the subject . " + + = = Des Imagistes = = + + Determined to promote the work of the Imagists , and particularly of Aldington and H.D. , Pound decided to publish an anthology under the title Des Imagistes . It was first published in Alfred Kreymborg 's little magazine The Glebe and was later published in 1914 by Alfred and Charles Boni in New York and by Harold Monro at the Poetry Bookshop in London . It became one of the most important and influential English @-@ language collections of modernist verse . Included in the thirty @-@ seven poems were ten poems by Aldington , seven by H.D. , and six by Pound . The book also included work by F.S. Flint , Skipwith Cannell , Amy Lowell , William Carlos Williams , James Joyce , Ford Madox Ford , Allen Upward and John Cournos.Max Michelson was also another included in the important 1963 anthology by William Pratt The Imagist Poem Modern Poetry in miniature . + Pound 's editorial choices were based on what he saw as the degree of sympathy that these writers displayed with Imagist precepts , rather than active participation in a group as such . Williams , who was based in the United States , had not participated in any of the discussions of the Eiffel Tower group . However , he and Pound had long been corresponding on the question of the renewal of poetry along similar lines . Ford was included at least partly because of his strong influence on Pound , as the younger poet made the transition from his earlier , Pre @-@ Raphaelite @-@ influenced style towards a harder , more modern way of writing . The inclusion of a poem by Joyce , I Hear an Army , which was sent to Pound by W.B. Yeats , took on a wider importance in the history of literary modernism , as the subsequent correspondence between the two led to the serial publication , at Pound 's behest , of A Portrait of the Artist as a Young Man in The Egoist . Joyce 's poem is not written in free verse , but in rhyming quatrains . However , it strongly reflects Pound 's interest in poems written to be sung to music , such as those by the troubadours and Guido Cavalcanti . The book met with little popular or critical success , at least partly because it had no introduction or commentary to explain what the poets were attempting to do , and a number of copies were returned to the publisher . + + = = Some Imagist Poets = = + + The following year , Pound and Flint fell out over their different interpretations of the history and goals of the group arising from an article on the history of Imagism written by Flint and published in The Egoist in May 1915 . Flint was at pains to emphasise the contribution of the Eiffel Tower poets , especially Edward Storer . Pound , who believed that the " Hellenic hardness " that he saw as the distinguishing quality of the poems of H.D. and Aldington was likely to be diluted by the " custard " of Storer , was to play no further direct role in the history of the Imagists . He went on to co @-@ found the Vorticists with his friend , the painter and writer Wyndham Lewis . + Around this time , the American Imagist Amy Lowell moved to London , determined to promote her own work and that of the other Imagist poets . Lowell was a wealthy heiress from Boston whose brother Abbott Lawrence Lowell was President of Harvard University from 1909 @-@ 1933 . She loved Keats and cigars . She was also an enthusiastic champion of literary experiment who was willing to use her money to publish the group . Lowell was determined to change the method of selection from Pound 's autocratic editorial attitude to a more democratic manner . This new editorial policy was stated in the Preface to the first anthology to appear under her leadership : " In this new book we have followed a slightly different arrangement to that of our former Anthology . Instead of an arbitrary selection by an editor , each poet has been permitted to represent himself by the work he considers his best , the only stipulation being that it should not yet have appeared in book form . " The outcome was a series of Imagist anthologies under the title Some Imagist Poets . The first of these appeared in 1915 , planned and assembled mainly by H.D. and Aldington . Two further issues , both edited by Lowell , were published in 1916 and 1917 . These three volumes featured most of the original poets , ( also including imagist poetry by the American poet John Gould Fletcher ) , with the exception of Pound , who had tried to persuade her to drop the Imagist name from her publications and who sardonically dubbed this phase of Imagism " Amy @-@ gism . " + Lowell persuaded D. H. Lawrence to contribute poems to the 1915 and 1916 volumes , making him the only writer to publish as both a Georgian poet and an Imagist . Marianne Moore also became associated with the group during this period . However , with World War I as a backdrop , the times were not easy for avant @-@ garde literary movements ( Aldington , for example , spent much of the war at the front ) , and the 1917 anthology effectively marked the end of the Imagists as a movement . + + = = Imagists after Imagism = = + + In 1929 , Walter Lowenfels jokingly suggested that Aldington should produce a new Imagist anthology . Aldington , by now a successful novelist , took up the suggestion and enlisted the help of Ford and H.D. The result was the Imagist Anthology 1930 , edited by Aldington and including all the contributors to the four earlier anthologies with the exception of Lowell , who had died , Cannell , who had disappeared , and Pound , who declined . The appearance of this anthology initiated a critical discussion of the place of the Imagists in the history of 20th @-@ century poetry . + Of the poets who were published in the various Imagist anthologies , Joyce , Lawrence and Aldington are now primarily remembered and read as novelists . Marianne Moore , who was at most a fringe member of the group , carved out a unique poetic style of her own that retained an Imagist concern with compression of language . William Carlos Williams developed his poetic along distinctly American lines with his variable foot and a diction he claimed was taken " from the mouths of Polish mothers " . Both Pound and H.D. turned to writing long poems , but retained much of the hard edge to their language as an Imagist legacy . Most of the other members of the group are largely forgotten outside the context of the history of Imagism . + + = = Legacy = = + + Despite the movement 's short life , Imagism would deeply influence the course of modernist poetry in English . Richard Aldington , in his 1941 memoir , writes : " I think the poems of Ezra Pound , D.H. , Lawrence , and Ford Madox Ford will continue to be read . And to a considerable extent T. S. Eliot and his followers have carried on their operations from positions won by the Imagists . " + On the other hand , Wallace Stevens found shortcomings in the Imagist approach : " Not all objects are equal . The vice of imagism was that it did not recognize this . " With its demand for hardness , clarity and precision and its insistence on fidelity to appearances coupled with its rejection of irrelevant subjective emotions Imagism had later effects that are demonstratable in T. S. Eliot 's ' Preludes ' and ' Morning at the Window ' and in D. H. Lawrence 's animal and flower pieces . The rejection of conventional verse forms in the nineteen @-@ twenties owed much to the Imagists repudiation of the Georgian Poetry style . + The influence of Imagism can be seen clearly in the work of the Objectivist poets , who came to prominence in the 1930s under the auspices of Pound and Williams . The Objectivists worked mainly in free verse . Clearly linking Objectivism 's principles with Imagism 's , Louis Zukofsky insisted , in his introduction to the 1931 Objectivist issue of Poetry , on writing " which is the detail , not mirage , of seeing , of thinking with the things as they exist , and of directing them along a line of melody . " Zukofsky was a major influence on the Language poets , who carried the Imagist focus on formal concerns to a high level of development . Basil Bunting , another Objectivist poet , was a key figure in the early development of the British Poetry Revival , a loose movement that also absorbed the influence of the San Francisco Renaissance poets . + Imagism influenced a number of poetry circles and movements.With the Imagists Free verse became a discipline and acquired status as a legitimate poetic form . In the 1950s , especially , with the Beat generation , the Black Mountain poets , and others associated with the San Francisco Renaissance . In his seminal 1950 essay Projective Verse , Charles Olson , the theorist of the Black Mountain group , wrote " ONE PERCEPTION MUST IMMEDIATELY AND DIRECTLY LEAD TO A FURTHER PERCEPTION " ; his credo derived from and supplemented the Imagists . + Among the Beats , Gary Snyder and Allen Ginsberg in particular were influenced by the Imagist emphasis on Chinese and Japanese poetry . William Carlos Williams was another who had a strong effect on the Beat poets , encouraging poets like Lew Welch and writing an introduction for the book publication of Ginsberg 's Howl ( 1955 ) . + + + = Operation Eastern Exit = + + Operation Eastern Exit was the codename given to the military evacuation of the United States embassy in Mogadishu , the capital of Somalia , in January 1991 . In late December 1990 , violence quickly enveloped the city as armed militants began clashing with government soldiers . On 1 January 1991 , the US Ambassador to Somalia , James Keough Bishop , contacted the Department of State requesting an evacuation of the embassy , which was approved the following day . United States Central Command began planning and mobilizing forces that evening . The initial plan was to evacuate with a military transport plane through the Mogadishu International Airport , but this was later abandoned . A helicopter evacuation via the USS Guam and USS Trenton was the remaining option . + On the morning of 5 January , a 60 @-@ person Marine and Navy SEAL security detail was dispatched from Guam aboard two CH @-@ 53E Super Stallion helicopters to secure the embassy and prepare for the main evacuation . The two helicopters returned to Guam with the first 61 evacuees . Throughout the day , foreign diplomats and civilians sought refuge at the embassy . Four waves of five CH @-@ 46 Sea Knight helicopters each evacuated the embassy compound shortly after midnight on 6 January . The evacuees were transported to Muscat , Oman , where they disembarked on 11 January . In total , 281 diplomats and civilians from 30 countries were evacuated , including 12 heads of missions ( eight ambassadors and four chargés d 'affaires ) . + + = = Background = = + + In the late 1980s , there was increasing rebellion against the rule of Somali President Siad Barre , a military dictator who maintained tight control of power and had a record of human rights abuses . By 1990 , what began as civil disobedience evolved into a civil war , with several militias organized to overthrow the central government . + In July 1989 , the embassy moved to a new , 80 @-@ acre ( 32 ha ) compound , 6 miles ( 9 @.@ 7 km ) from the previous embassy and James K. Bishop was appointed as the United States ' ambassador to Somalia . Ambassador Bishop had significant experience in crisis management at US embassies . In 1967 , he was at the US Embassy in Beirut , Lebanon when the Six @-@ Day War erupted . About 3 @,@ 600 Americans were evacuated in 33 hours ; Bishop was one of 26 diplomats and soldiers that remained in the city . As deputy assistant secretary of state for Africa from 1981 – 87 , Bishop chaired several task forces for crises and gained experience in the State Department 's operations center as evacuations were carried out during several coups d 'etat . During his previous assignment as Ambassador to Liberia ( 1987 – 90 ) , Bishop was overseeing the voluntary evacuation of embassy staff and civilians as a civil war in Liberia spread , when he left in March 1990 . Soon after returning to Washington to prepare for his new appointment to Somalia , he was appointed to a taskforce to deal with the crisis in Liberia , which included a gradual evacuation of American civilians and a rapid closure of the embassy in August . + On 1 August , before leaving the US to take up his post in Mogadishu , Ambassador Bishop visited United States Central Command — the military command for the Middle East and northeast Africa — where he spent most of the day with its commander , Gen. Norman Schwarzkopf . Ambassador Bishop , aware of the ongoing strife , believed " the odds were better than even that we would have to leave Mogadishu under less than favorable circumstances . " Ambassador Bishop understood from his past experiences in Beirut and Liberia the importance of being prepared to deal with emergencies and spent the afternoon working with military experts to review the embassy 's Emergencies and Evacuation ( E & E ) plan until he was " satisfied ... that [ Central Command ] realized that it might have to conduct an evacuation from Mogadishu and was prepared to do that . " In its analysis of Operation Eastern Exit , the Center for Naval Analyses cited the Ambassador Bishop 's previous experience and " clear understanding of his role " in the operation as one of the reasons Operation Eastern Exit went so well . + Hours after Ambassador Bishop 's visit to Central Command , Iraq invaded Kuwait . In 1979 , the US negotiated access to an airport and port in both Mogadishu and Berbera ; because of limited access the US had to locations in the Persian Gulf area , maintaining this access was a main interest for the Mogadishu embassy to pursue as the US mobilized to intervene in Kuwait . + An increasing level of criminal violence prompted Ambassador Bishop to request the voluntary evacuation of dependents ( e.g. children and spouses of staff ) and non @-@ essential staff in early December , although fighting between the government and the United Somali Congress ( a rebel militia ) remained no less than about 100 miles ( 160 km ) away . The voluntary evacuation later became a mandatory evacuation . By 19 December , the number of official US personnel in the city was reduced from 147 to 37 ; around the same time , fighting between the government and rebels came within about 40 miles ( 64 km ) of Mogadishu . + + = = = Collapse of the Barre government = = = + + On 30 December , violence escalated " an order of magnitude " as militants entered Mogadishu , which was quickly enveloped by a general state of lawlessness . On 30 – 31 December , diplomats , including many stationed in offices elsewhere in the city , were collected and housed in the embassy compound , except two volunteers who remained in the embassy 's K @-@ 7 residential apartments located across Afgoy Road from the embassy . The volunteers in the K @-@ 7 building would be needed as look @-@ outs for the embassy compound 's main gate . On the morning of 31 December , the defense attaché was nearly killed when his vehicle was sprayed with bullets and that evening , a soldier at a roadblock shot the tires of a vehicle carrying another defense official . Attempts by the US and other nations ' diplomats , in particular the Italian embassy , to negotiate a ceasefire for foreigners to leave were unsuccessful . Afgoy Road became a " shooting gallery , " preventing those in safe @-@ havens outside the embassy from reaching it . On New Year 's Day , the first American civilians began to seek refuge at the embassy . + Ambassador Bishop requested an evacuation of the American community on 1 January , indicating that the evacuation could be with the planned Italian , French , or German evacuation efforts , but preferred an evacuation by the US military . The State Department authorized the evacuation on 2 January and on that day , Ambassador Bishop specifically requested an evacuation by the US military , thereby initiating Operation Eastern Exit . Ambassador Bishop had spent a considerable amount of time discussing contingency plans for evacuation with other diplomatic posts . Ultimately , ten heads of missions — eight ambassadors and two chargés d 'affaires — along with their staff sought refuge in the US embassy compound and were evacuated . + + = = Plans , mobilization , and escalating violence = = + + Ambassador Bishop had visited Central Command in August 1990 , where he worked with military experts to update the embassy 's E & E plan . The first notice that an evacuation of the Mogadishu embassy would be needed came on the morning of 1 January , when the top naval commander at Central Command sent a message to his naval operations staff : " Better have Amphib crowd take a look at a helo NEO of Mogadishu ! time / distance to get there from Masirah OP area . " Following the ambassador 's 2 January evacuation request , the commander of Central Command ordered Air Force aircraft to the region , the movement of amphibious ships to Mogadishu , and requested United States Special Operations Command to prepare for a noncombatant evacuation operation . + The initial plan was to evacuate via Mogadishu International Airport . Soon after the evacuation request , the United States Air Force deployed C @-@ 130 transport planes and an AC @-@ 130 , for gunfire support , to Nairobi , Kenya , awaiting clearances to enter Somalia and the ability to safely transfer evacuees from the embassy to the airport . However , the US and other foreign embassies were unable to contact anyone within the government to obtain clearances . It also became apparent that the rebels had an ineffective command @-@ and @-@ control structure , making it impossible to negotiate any ceasefire or guarantee of safe passage . Likewise , government troops faced a command @-@ and @-@ control problem ; reports indicated that army units were separating along clan lines , in some cases soldiers shot officers of a different clan when given orders they disagreed with . Thus , it became clear that safe passage to the airport would not be possible . Several other nations also had aircraft mobilized to reach Mogadishu , but faced the same problems of landing and transit of evacuees to the airport . + On 4 January , several incidents , including a couple exchanges of gunfire , suggested that the embassy 's security detail was insufficient to hold off armed Somalis until the USS Guam and USS Trenton arrived with their helicopters and soldiers , at that time scheduled to arrive on 7 January . The embassy had just six Marine guards , whose job was limited to protecting the chancery . Ambassador Bishop made an urgent request to Washington for two platoons of soldiers to parachute into the embassy to defend it until the ships arrived . The request was denied , but the Ambassador was told that an advance element from the vessels would reach the embassy the following morning . + USS Guam and USS Trenton began transit from the coast of Oman towards Mogadishu at 22 : 30 ( 23 : 30 Oman time ) on 2 January . The commander of Amphibious Group Two had initially proposed a seven @-@ ship Amphibious Task Group , composed of vessels anchored at Masirah Island ( off Oman ) and Dubai and including four amphibious ships so that the full range of amphibious capabilities would be available for the operation . However , intervention in Kuwait seemed imminent and the commander of naval forces at Central Command did not want to divert that many ships from the Persian Gulf , thus the decision to send two of the closest ships . Although the two vessels were selected by mid @-@ afternoon on 2 January , the transfer of some personnel from Dubai to Masirah caused a delay of eight to ten hours . Guam and Trenton carried forces from the 4th Marine Expeditionary Brigade , including a detachment of CH @-@ 53E Super Stallion helicopters — the largest helicopters operated by the US military — and two squadrons of CH @-@ 46 Sea Knight helicopters . + Planning began in earnest as the ships got underway , with a combined command center on Guam . On the morning of 3 January , the task force 's command questioned why they were not given the option of an amphibious landing and requested a tank landing ship be added to the task force ; the request was denied . A warrant officer who had previously served as a Marine Security Guard at the Mogadishu embassy during the mid @-@ 1980s was found . Despite Ambassador Bishop 's planning with Central Command , the task force was provided outdated information . The former MSG told planners that a new embassy had been planned and was under construction several years prior . In fact , the new embassy was located further inland and , after receiving updated information , task force commanders determined that a beach landing , requiring troops to fight their way across the city , was too risky . Initial plans had the ships launch their helicopters at 01 : 00 on 7 January . However , in response to indications from Ambassador Bishop that conditions in Mogadishu were deteriorating , planners considered 1 @,@ 050 @-@ nautical @-@ mile ( 1 @,@ 940 km ; 1 @,@ 210 mi ) and , later , 890 @-@ nautical @-@ mile ( 1 @,@ 650 km ; 1 @,@ 020 mi ) flights with the CH @-@ 53Es while the ships were still located in the northern Arabian Sea . The situation in Mogadishu stabilized somewhat and the mission was delayed until 5 January . + + = = Evacuation = = + + On the evening of 4 January , the final execute order was issued for a 02 : 45 launch of two CH @-@ 53E Super Stallions to arrive at the embassy at dawn . The 60 soldiers selected for the security detail were issued weapons and ammunition . Two Marine Corps KC @-@ 130 refueling tankers were mobilized closer to the operation , from Bahrain to Oman , to refuel the helicopters en route to Mogadishu and the two helicopters transferred from Trenton to Guam . + + = = = Security detail and first evacuees = = = + + Two CH @-@ 53E Super Stallions carrying a 60 @-@ man security detail — 51 Marines and nine Navy SEALs — departed Guam at 02 : 47 , 466 nautical miles ( 863 km ; 536 mi ) from the embassy , and were expected to arrive at 06 : 20 . They performed two aerial refuelings . During the first refueling , a pipe burst on one of the helicopters , dousing soldiers in fuel and nearly forcing a return to the Guam ; problems with the helicopters ' navigation system also complicated the refueling rendezvous . The helicopters arrived in Mogadishu at dawn , crossing the coast just south of the harbor at 25 – 50 feet ( 7 @.@ 6 – 15 @.@ 2 m ) in altitude on a route that was planned to avoid areas of more intense violence reported in the northern parts of the city . On their arrival in Mogadishu , the crew of the helicopters were using an outdated 1969 map , which showed the embassy in an isolated area . Furthermore , they had been told the embassy could be discerned by its white stucco perimeter wall and golf course . The embassy was , in fact , surrounded by new development and the crew saw white stucco walls around many buildings in the city . The helicopters were flying too low to spot a strobe light which was placed on the embassy 's water tower ( the highest point within the embassy compound ) and the golf course in the embassy compound had a black , oil @-@ coated surface — not the familiar green grass that the helicopter crew would recognize.After breaking radio silence ( their only direct communication with the embassy was unencrypted ) to contact the embassy , they were able to discern it and land at 07 : 10 . As they arrived , a group of about 100 to 150 Somalis were attempting to enter the embassy compound via ladders on the wall , but scattered as the helicopters arrived . + The security detail moved to establish a perimeter around the embassy compound and the Air Force 's AC @-@ 130 arrived to provide overhead support . Ambassador Bishop gave the security detail clear instructions on the rules of engagement : they could only use deadly force if people came over the embassy compound 's walls with obvious hostile intent . He also identified three zones of defense , stating a preference to retreat to the third zone before the use of deadly force : + the entire embassy compound + the Chancery , Joint Administrative Office ( JAO ) building , Marine House , and the helicopter landing zone ( HLZ ) + the chancery and JAO buildings ( the two " safehaven " buildings where the evacuees were held ) + Ambassador Bishop clearly explained his rationale to the security detail , which was to avoid any impression that they were intervening in the violence in Mogadishu . He feared that the embassy would be targeted by organized attacks if any group involved in the clashes got the impression that the US was intervening in the conflict . To this effect , he requested the Voice of America and BBC broadcast announcements that the forces were present only to evacuate the embassy and would not interfere in the conflict . The Marines who had been doused in fuel during the refueling were able to take a shower and wash their clothes . + After an hour on the ground , the helicopters left with the first 61 evacuees , including all American civilians and four heads of mission . Evacuees were provided blankets on one of the flights to remain warm . Complications with the only in @-@ flight refueling on the return nearly prevented refueling , which would have forced the helicopters to divert to the Somali desert and await a rescue . At 9 : 40 , the helicopters arrived on Guam and unloaded the evacuees . + + = = = Embassy during the day = = = + + No threats came upon the embassy during the day , although truckloads of armed Somalis frequently drove by the embassy along Afghoy Road . Only one incident seemed to directly target the embassy . A sniper and a spotter were positioned on the embassy 's water tower ( the highest structure in the compound ) and came under fire ; they were ordered to not return fire and soon thereafter ordered to leave their position on the water tower . + The Office of Military Cooperation , just one and a half blocks from the embassy , required evacuation . Despite its proximity to the embassy , an armed convoy was needed to evacuate persons trapped there by the unrest . A convoy of vehicles with several Marines and SEALs left the embassy at 8 : 47 and returned ten minutes later with 22 persons from the OMC ( four Americans , a Filipino , and 17 Kenyans ) . This was the only excursion outside the embassy by the security detail . Throughout the day , foreign diplomats contacted the embassy desiring to be evacuated ; the US welcomed these requests , but required all of them to find their own transportation to the embassy . + A Somali officer who had a previous relationship with the embassy , Major Siad , agreed to travel to rescue the German chargé d 'affaires and British ambassador ( junior staff from the British embassy had previously come to the US embassy ) . The Soviet Union was unable to land a plane in Mogadishu the previous day and the Soviet ambassador asked Ambassador Bishop if he and his staff could be rescued ; Ambassador Bishop , a tennis partner of his Soviet counterpart , agreed but only if they found their own way to the embassy . Seeing the helicopters on the morning of 5 January , they realized the Americans would not remain in the city much longer . At the request of Ambassador Bishop , Major Siad agreed to transport the Soviets , but only if he was paid enough ; the US embassy paid Major Siad , who returned with the Soviet ambassador and 38 of his staff . The brother of President Barre , who was also a Major General and Chief of Police , showed up at the embassy in the afternoon with 25 members of his family requesting to be evacuated , but was turned away after a vocal conversation with the ambassador . + The operation did not include soldiers to handle the evacuation control center ( ECC ) , which was set up in the JAO . A 44 @-@ person force consisting primarily of soldiers to handle the ECC was planned for insertion with the CH @-@ 53E Super Stallions after they had returned to the Guam . However , this was cancelled over objections from the commander of the security detail . The deficit was partially handled by embassy staff who assisted a few soldiers from the security detail . The evacuees were grouped into 15 @-@ person " sticks " to be loaded onto the helicopters and were limited to one piece of luggage apiece . Some attempted to bring more , resulting in problems coordinating their evacuation . Furthermore , many evacuees had pets they wanted to bring , which were not allowed . Most pets were killed by their owners ; some were given poison . Meanwhile , the soldiers were allowed to consume anything they wanted from the embassy 's commissary , such as candy , sodas , and souvenirs ( most had been stationed on ships for several months ) . They were also allowed use or take anything they needed from the embassy ; the medic filled several bags with medical supplies to return to the ship . + As evening approached , work began to prepare the HLZ for the main evacuation . The area was used as a parking lot and several vehicles were left without keys by staff that had already been evacuated . Some cars had to be broken into to be moved . Chemical lights were placed in the HLZ in a NATO " Y " pattern . The entire mission would be conducted with night vision goggles , which required all lights in the embassy compound to be turned off . + + = = = Main evacuation = = = + + The main evacuation occurred in the early morning hours of 6 January and consisted of four waves of five CH @-@ 46 helicopters . The timing of this phase was determined by range of the CH @-@ 46 Sea Knight , which lack aerial refueling capability ; the ships were about 350 – 380 nautical miles ( 650 – 700 km ; 400 – 440 mi ) away during this phase . An AC @-@ 130 was sent from Saudi Arabia to provide gunfire support during the evacuation and two UH @-@ 1 Iroquois helicopters were on standby to provide gunfire support , but were not deployed . + The first wave departed Guam at 23 : 43 . As the second wave landed , Major Siad arrived at the embassy gate accompanied by two truckloads of soldiers and held a grenade in one hand and a radio in the other . His request to speak with the ambassador was granted . Major Siad demanded that the evacuation cease immediately because the Somali government had not granted the US permission to carry out such a military operation . He claimed that he would radio soldiers to shoot down the helicopters if the operation continued . The second and third waves were able to depart without incident as the ambassador negotiated with the Major , who finally agreed to settle the matter for several thousand dollars in cash and keys to the ambassador 's armored car . Ambassador Bishop remained engaged in conversation with the Major until he reached the helicopter landing zone to depart with the final wave to prevent the Major from reneging on the deal . The final wave departed the embassy at 1 : 49 and landed on Guam at 2 : 23 ; twenty minutes later , Ambassador Bishop declared the evacuation complete . + + = = = Aftermath at the embassy = = = + + Armed looters were observed entering the embassy compound as the final wave departed . The doors of the chancery — the main building of the embassy — were reportedly blown open by RPGs within two hours of the embassy 's evacuation . Somali employees of the embassy — known as foreign service nationals ( FSNs ) — could not be evacuated . Ambassador Bishop tried unsuccessfully to have these employees airlifted to safer parts of Somalia . Many of the FSNs had sought refuge in the embassy with their families and about 30 were hired as guards and protected the embassy throughout the ordeal . Local banks had been closed for some time and the embassy was unable to pay the FSNs . The Ambassador left the FSNs with keys to the commissary and warehouse on the embassy compound and they were permitted to take anything they needed . + + = = = Return to Oman = = = + + A total of 281 evacuees were taken from the embassy , including 12 heads of missions ( eight ambassadors and four chargés d 'affaires ) and 61 Americans ( including Ambassador Bishop and 36 embassy staff ) . The heads of mission were the ambassadors of the United States , Kenya , Nigeria , Soviet Union , Sudan , Turkey , United Arab Emirates , and United Kingdom and the chargés of the embassies of Germany , Kuwait , Oman , and Qatar . + Rather than disembark in nearby Mombasa , as originally thought by the evacuees , the ships were ordered back to Oman — a five @-@ day journey . The sailors and marines made way for the evacuees to share living quarters . When the chaplain of Guam asked crew to sign up as guides for the evacuees while aboard the vessel , two hundred signed up within an hour , and some of the sailors even dressed up as clowns to ease the ordeal for children . At the request of the ambassadors , a formal session with the ships ' senior officers was held to express their thanks . On 11 January , the evacuees were offloaded at Muscat , Oman . That afternoon , the American evacuees were flown to Frankfurt , Germany , from where they continued home . + + + = 2010 Claxton Shield = + + The 2010 Claxton Shield was the 57th Claxton Shield tournament , the premier baseball competition in Australia , and was held from 6 November 2009 to 7 February 2010 . It was hailed as the precursor to the new Australian Baseball League that will start in the place of the Claxton Shield in late 2010 to early 2011 . The Victoria Aces defeated South Australia two games to nil in the championship series to win the tournament ; this was the 22nd time the Claxton Shield had been awarded to a Victorian team . The competition was sponsored by Domino 's Pizza . + At the conclusion of the regular season , the Victoria Aces finished in first place with a 17 – 7 record , earning home @-@ field advantage for the three @-@ game championship series . South Australia hosted the three @-@ game semi @-@ final series against the New South Wales Patriots . Both teams finished with a 14 – 10 record . The Perth Heat ( 12 – 12 ) and Queensland Rams ( 3 – 21 ) both failed to qualify for the finals . + + = = Overview = = + + In June 2009 , it was announced that the rights to the Claxton Shield had been sold to a new Australian Baseball League ( ABL ) , with ownership split between Major League Baseball 's 75 percent share and the 25 percent share owned by the Australian Baseball Federation . The 2010 tournament was considered preparation for the inaugural ABL season starting in 2010 – 11 . It varied from the 2009 Claxton Shield by expanding the season to include ten rounds . Since an uneven number ( five ) teams were involved , four teams paired off for each round and played a three @-@ game series , while the remaining team took a bye . During the season , each team had two bye rounds and played two rounds against each other team , one at home and one away . In total , the schedule allowed for 24 regular @-@ season games per team before a postseason similar to the 2009 edition : the first @-@ place team directly qualified for the championship series and played against the winner of a playoff series between the second- and third @-@ place teams . + During the regular season , games were played on a Friday night and a doubleheader on Saturday ; in each doubleheader one of the two games was shortened to seven innings . The exception to this was when Perth played their home games ; they played on a Thursday night instead of a doubleheader on Saturday . Each postseason series was scheduled for a Friday , Saturday and Sunday . + + = = Teams = = + + + = = = Rosters = = = + + The 2010 series allowed each team to make use of a 19 @-@ man active roster . Exceptions were made in two cases that allowed teams ' active rosters to expand to 21 players , both times for the same reason . Two games during the season had to be postponed because of poor weather . Both games involved teams meeting for the first time during the season ; make @-@ up games were scheduled at the start of the return series between the teams , and this resulted in two four @-@ game series . In both cases , the teams had a 19 @-@ man roster for the make @-@ up game , and an expanded 21 @-@ man roster for the originally scheduled series . + + = = = Venues = = = + + The 2010 Claxton Shield was contested between five teams from around Australia . In previous years , many of the teams had played their home games at multiple venues . This season each team held their home games at only one venue . There was one scheduled exception to this at the start of the season : the New South Wales Patriots ' final home series against the Perth Heat was held at Gilchrist Oval , whereas all of their other home games were held at Blacktown Baseball Stadium . + As a result of poor attendance at Geelong Baseball Park , game one of the fifth @-@ round series between New South Wales and the Victoria Aces was moved to La Trobe University , Melbourne . Although the Geelong games had attracted crowds of no more than 500 , the moved game had an attendance of 2 @,@ 200 . Though no further regular season games were moved , the finals series hosted by the Aces was held at La Trobe University as well . + The venues are as follows : + + = = Regular season = = + + † — A game postponed from Round 7 , held in Round 8 , was played with Victoria Aces as the away team and Queensland Rams as the home team , despite being played at Geelong Baseball Park , Geelong , Victoria . + ‡ — A game postponed from Round 3 , held in Round 9 , was played with South Australia as the away team and Victoria Aces as the home team , despite being played at Norwood Oval , Adelaide , South Australia . + The Queensland Rams were the first team to be eliminated from contention for the finals , after being swept four games to nil by the Victoria Aces in round 8 . The following round saw South Australia clinch a position in the finals , despite finishing the round in second position . It was not until the final round that the last two spots in the finals were decided : the Aces clinched top spot by sweeping the Perth Heat , which combined with the New South Wales Patriots sweep of the Rams eliminated Perth from contention and secured the last finals spot for the Patriots . + + = = = Statistical leaders = = = + + + = = Finals series = = + + The 2010 Claxton Shield made use of the same finals structure as had been used in the 2009 season . The top three teams at the conclusion of the ten rounds of regular @-@ season games qualified . The second- and third @-@ place teams faced in each other in a best @-@ of @-@ three series hosted by the second @-@ place team . The winner of that series then faced the first @-@ place team for a best @-@ of @-@ three series . South Australia hosted the New South Wales Patriots at Norwood Oval , Adelaide , while the Victoria Aces hosted the championship series at La Trobe University , Melbourne . In the finals , the home team and away team alternated during each of the series . As a result , South Australia was officially the away team for game two of its series against New South Wales , as was Victoria in the championship series . + After defeating the Patriots two games to one in the semi @-@ final series , South Australia progressed to the championship series against the Aces . There they were defeated two games to nil . After game two of the championship series , Victoria 's Matthew Blackmore was named both Claxton Shield Final Series MVP and Pitcher of the Year . + + = = = Semi @-@ final series = = = + + + = = = Championship series = = = + + + = = Awards = = + + At the conclusion of the finals series , the winner of two awards were announced . Matthew Blackmore won both the Pitcher of the Year award and the Finals Series MVP award . At the Baseball Australia Diamond Awards , held on 6 March at the Hotel Grand Chancellor , Adelaide , Wayne Lundgren was announced as the 35th winner of the Helms Award ; the Claxton Shield 's Most Valuable Player award . Lundgren was the first pitcher to win since 1986 . Runners @-@ up by two votes were Paul Mildren and Michael Collins . + + + = Independiente ( Ricardo Arjona album ) = + + Independiente is the thirteenth Spanish @-@ language studio album by Guatemalan singer @-@ songwriter Ricardo Arjona , released on 23 September 2011 . Recorded in the United States and Mexico , it was produced by Arjona with Dan Warner , Lee Levin and Puerto Rican singer @-@ songwriter Tommy Torres . The album — the first independent release by Arjona after he was signed by Sony Music in 1993 and Warner Music in 2008 — was issued by his own label , Metamorfosis . + Composed and written in a year , the record marks Arjona and Torres ' fourth collaboration . For Independiente , Arjona returns to his trademark sound after his stylistic departure for Poquita Ropa ( 2010 ) . While producing the latter , he had used fewer instruments to simplify his sound , having introduced what had been called a " stripped @-@ down acoustic effort " in his music . Independiente has been compared to his earlier recordings , Historias ( 1994 ) and Animal Nocturno ( 1993 ) . + Independiente became Arjona 's fourth number @-@ one album on the Billboard Top Latin Albums where it debuted for the week ending 22 October 2011 . For thirteen non @-@ consecutive weeks it topped the Latin Pop Albums chart , and reached number one on the Mexican Albums Chart . It is his fifth consecutive album to chart on the Billboard 200 ( reaching number sixty @-@ five ) , and his fourth album to chart in Spain ( peaking at number sixty @-@ eight ) . Within one week after its release Independiente was certified gold in Chile , the United States and Mexico and certified platinum in Venezuela and Argentina . + Five singles have been released from the album . The lead single , " El Amor " , became a commercial success in several Latin American countries and was number one on the Billboard Latin Songs and Latin Pop Songs charts . It was followed by " Fuiste Tú " ( featuring Gaby Moreno ) , which reached number one on the Latin Pop Songs , number two on the Latin Songs charts and topped several other national charts . " Mi Novia Se Me Está Poniendo Vieja " was released in May 2012 ; " Te Quiero " in July 2012 , and " Si Tu No Existieras " in November 2012 . To promote Independiente , Arjona embarked on his Metamorfosis World Tour . + + = = Background = = + + In 2010 , Arjona wanted to change his musical style ; after experimenting with using as few instruments as possible , he obtained a sound similar to an a capella performance ( simplifying his sound ) and introduced what he called a " stripped @-@ down acoustic effort " to his music . This was heard on his twelfth studio album , Poquita Ropa . Arjona produced the album with Dan Warner , who has worked with Shakira , Celine Dion and Christina Aguilera . When promoting the album Arjona said , " [ songs ] are like women ; they get things up and are so concerned about this that they forget that the less clothes , more beauty . The songs are often overwhelmed by ourselves , because we saturate them with arrangements looking to exalt their qualities and we end up hiding them " . Poquita Ropa became the first album since Adentro which Arjona recorded without Torres . + Weeks before the release of Independiente , Arjona issued a letter raising the issue of his past relationships with recording companies . He revealed the circumstances of his first contract : " a producer , friend of mine , told them [ the record label ] that if they did not sign me in , they won 't sign two artists he had [ at that time ] " . Arjona further explained that he received the " minimum royalty percentage " from his most successful albums . Independiente is Arjona 's first independent release through his own label : Metamorfosis , a company he created to refocus his career . The company is presided by Arjona and several friends ( including photographer @-@ director Ricardo Calderón , Universal Music México executive Humberto Calderon and BMG 's Miriam Sommerz ) , and is based in Miami and Mexico City . Arjona commented that his independence represented compromise more than freedom , stating that " Inside the word ' Independent ' , even when it sounds like extreme freedom , there 's a big amount of compromise and the responsibility of being able to administrate , in the best way possible , such independence " . Billboard notes that , although other groups have released independent albums following contracts with major labels , Arjona is the most important Latin pop artist to do so . Although the album is marketed within the new label , distribution was handled by Warner Music . + + = = Production and recording = = + + Independiente marked Arjona 's fourth collaboration with Torres . The latter was a composer and producer , also receiving background @-@ vocal credit . The musicians first worked together in 2005 , when Arjona released his tenth studio album ( Adentro ) . He stated that he first " tested " Torres by sending him the " hookiest and darkest tracks " on the album : " Acompañame A Estar Solo " and " Iluso " . Torres then " went all out on the first demo , hiring a full band that included a string orchestra " . In Quién Dijo Ayer ( 2007 ) , Torres produced the singles " Quién " and " Quiero " and provided background vocals on the remastered versions of Arjona 's past hits . In 5to Piso ( 2008 ) , Torres produced several tracks ; one was the lead single " Como Duele " , considered Arjona 's " biggest hit in years " by Jason Birchmeier of Allmusic . + The album was composed over a one @-@ year period . Most of its production was handled by three producers familiar with Arjona 's work : Dan Warner , Lee Levin and Dan Rudin . Tommy Torres also produced three tracks : the lead single " El Amor " , second single " Fuiste Tú " and " Hay Amores " . Victor Patrón produced two songs , ( " Caudillo " and the piano version of " Mi Novia Se Me Está Poniendo Vieja " ) and Julio Chávez aided in the production of " Reconciliación " . Arjona wrote all the songs except " El Amor " ( which was co @-@ written with Torres ) . The album was recorded and produced in several cities in the United States and Mexico . Independiente was mixed at the Blue Grotto in Nashville , Tennessee , and mastered by Tom Coyne and Aya Merrill at Sterling Sound in New York City . With Torres ' return to producing Arjona regained the classic , trademark sound which Torres helped develop since 2005 . + + = = Composition = = + + Independiente opens with " Lo Que Está Bien Está Mal " , a Latin pop song and the only track composed by Dan Warner instead of Arjona ( who wrote the lyrics ) . " El Amor " was motivated by Arjona 's desire to examine " those big , dark events within love that nobody talks about " ; he continued , " [ the ] dark sides of love are extremely fundamental to understand its great value . " Arjona added , " So many good things abould love has been shown that somebody had to turn it around and tell the bad ones " . In a February 2012 interview , Arjona stated that " El Amor " was the " most tawdry " song he had released to date , explaining that their choice of the song was a " contradiction " because it was not " the song which could better represent the entire album " . He described it as " very strong " and " a bit dark " . The single marked Arjona 's return to his signature , mainstream sound after the Cuban music influenced Poquita Ropa 's lead single " Puente " , a mixture of salsa and merengue which failed to make an impact in the United States . + The album includes " Fuiste Tú " , a duet with Guatemalan singer Gaby Moreno . Its instrumentation consists of piano , violin , guitars , drums and other percussion . Although Arjona stated that he " had the possibilities to record this song with very well known people " he expressed his happiness with Moreno , revealing that " the possibilities of doing it with her , for me , are a celebration " . He described Moreno as " incredibly talented " , a " countrywoman " and a " fantastic human being " . Arjona named " Fuiste Tú " as one of the most important songs on the album . " Mi Novia Se Me Está Poniendo Vieja " took two years to complete and Arjona dedicated it to his mother , Noemí Morales . He stated that he wrote it " as a gift for my mom on Mother 's Day " and that he thought " the idea of including it on the album was very good " . As with his single " Señora De Las Cuatro Decadas " ( on 1994 's Historias ) , at first he never thought to include the song on an album . " Caudillo " evokes " the image of some friends " Arjona had at college ; he asserted that he " appears constantly there because sometimes we transform ourselves into a contradiction of all those things we fought in those moments . It 's the history of a student leader that becomes a president " . Arjona dedicated the album to his father , who died in 2011 . + + = = Release and promotion = = + + Independiente was first digitally released in some South American countries on 23 September 2011 as a special edition , dubbed the Cono Sur Edition . This version included a different mix of " Reconciliación " . On 30 September , the digital download for the standard edition of the album was released in several Latin American and European countries . On 4 October , the album was officially released as a digital download and compact disc in most of these same markets as well as North America ; an iTunes edition was released as a digital download on the iTunes music store . This version included an album @-@ only video , entitled " Independiente " . In Germany , the album was first available on the Kiwi label on 4 October and on 11 October through Warner Music . In Canada and Spain , the compact @-@ disc version of the album was available on 25 October . + Arjona appeared on a television special in 2011 to promote Independiente . The special featured guest appearances by Gaby Moreno , Ricky Muñoz ( of the Mexican band Intocable ) and Paquita la del Barrio . Broadcast by Televisa , the program showcased the fourteen songs on Independiente . Muñoz said that he was " happy to do things for Ricardo [ Arjona ] " , elaborating that they met each other " some time ago " and it was " a very special situation " . The show was later rebroadcast on 5 November by Canal de las Estrellas . + + = = Singles = = + + The first single from Independiente is " El Amor " , released on 23 August 2011 . In the United States it reached number one on the Billboard Top Latin Songs chart ( Arjona 's fourth number one on that chart , following " Desnuda " , " Cuando " and " El Problema " ) and number one on the Billboard Latin Pop Songs chart . It was also a hit in Latin America , reaching number one in Argentina , Mexico , Colombia , Venezuela , Chile , Costa Rica , Panama and Guatemala . The music video for " El Amor " , filmed in black @-@ and @-@ white , was released on 8 September 2011 . It was directed by Ricardo Calderón ( who also directed Arjona 's music video for " Como Duele " ) and filmed in Mexico City . The second single from the album is " Fuiste Tú " , a duet with Guatemalan singer Gaby Moreno . The music video for the song was shot in Guatemala ( around the tropical areas of Antigua Guatemala , Río Dulce , the Atitlán lake , Semuc Champey and the Tikal ruins ) and directed by Argentine director Joaquín Cambre . Arjona commented that " this video recreates the battle on the couple when someone starts to talk ' is the beginning of the end ' " . " Fuiste Tú " reached number two on the Billboard Top Latin Songs and number one on the Latin Pop Songs charts . + " Mi Novia Se Me Está Poniendo Vieja " was released as the third single . Arjona wrote the song for his mother , Noemí Morales . The music video for the song , released in April 2012 , was filmed at Universal Studios in Los Angeles . It features Arjona and his son , Ricardo Arjona Jr . , and was directed by Robert García . The song was used by American telecommunications corporation AT & T for a Nokia Lumia 900 smartphone commercial featuring Arjona and was released in music stores in May 2012 . The fourth single from the album , " Te Quiero " , was released in July 2012 . The music video for the song was filmed during Arjona 's concerts at Vélez Stadium in Buenos Aires , Argentina during his Metamorfosis World Tour . It marks Arjona 's first music video taken from a live performance . The song reached number ten in Mexico and number one on both the Billboard Latin Songs and Latin Pop Songs chart . " Si Tu No Existieras " was released in November 2012 as the set 's fifth and final single , and was intended to promote the re @-@ release of the album . The song , which music video was similar to that of " Te Quiero " , managed to peak at number 14 in Mexico . + + = = Tour = = + + Beginning on 27 January 2012 in Toluca , Mexico , Arjona embarked on a world tour to promote the album . The Metamorfosis World Tour was announced in December 2011 , and visited the Americas . The show consisted of four theatrical sets on a revolving stage ; Arjona performed on each in turn , as it relateed to each song . Fellow Guatemalan singer @-@ songwriter Gaby Moreno appeared in several performances , joining Arjona for " Fuiste Tú " . The tour was praised by critics and fans . Natalie Torres of Dia a Dia reported , " Arjona knows how to handle his ' girls ' , with a mix of attitudes from a ' rough ' male and seductive lyrics " . + Jon Pareles of The New York Times commented that " Arjona is one of Latin pop ’ s finest lyricists : observant , nuanced , sometimes wry , sometimes melancholy and especially fond of the play of opposites " . He added , " unlike some of his fellow Latin pop stars , Mr. Arjona is no saccharine lover boy " . The tour broke records for ticket sales , commercial gross and attendance . In Buenos Aires it was the most popular show at Velez Stadium , with a total attendance of more than 160 @,@ 000 for four consecutive sold @-@ out concerts . In Guatemala City Arjona was the first artist with two consecutive sold @-@ out concerts at Mateo Flores Stadium , with a combined attendance of more than 50 @,@ 000 . As of October 2012 , the tour has been performed for close to one million people in more than eight countries . + + = = Commercial performance = = + + Independiente debuted at the top of the Billboard Top Latin Albums for the week ending 22 October 2011 , and remained at that position the following week . It was the third album by Arjona to remain for more than a week at number one , after Galería Caribe ( 2000 ) and 5to Piso . Independiente became his fourth chart @-@ topper , following Poquita Ropa ( 2010 ) . For its third week it fell to number two , replaced by Chino & Nacho 's Supremo . The album also debuted at number one on the Latin Pop Albums chart for the week ending 22 October , becoming Arjona 's fifth album to do so . It remained at number one the following week ; for its third week , it was replaced by Supremo . The album reached number one again for the week ending 12 November , and later for the week ending 11 February 2012 . For its second run it remained three weeks at the top before being replaced by Maná 's Drama y Luz for a week ; for its third run at number one , it remained at the top spot for five weeks . For the week ending 2 June 2012 , Independiente returned again to number one . + For the week it debuted atop both the Latin Albums and Latin Pop Albums charts , Independiente also appeared as number 65 on the Billboard 200 . It is Arjona 's fifth consecutive album to chart on that list ( following Adentro , Quién Dijo Ayer , 5to Piso and Poquita Ropa ) , although it has only charted higher than Adentro . In Mexico , Independiente debuted at number one for the week ending 9 October 2011 . The following week it fell to number two , replaced at the top by Espinoza Paz ' Canciones Que Duelen . For its third week , the album fell to number three . In Argentina , Independiente debuted at number one for the week ending 9 October 2011 ; it remained at the top position for a single week , dropping to number five the following week . The album also charted on Spain , reaching number 76 . The following week it fell off the chart but later re @-@ entered , reaching its peak at number 68 . Independiente is Arjona 's fourth album to chart in Spain , following Adentro , 5to Piso and Poquita Ropa . On the 2011 year @-@ end charts , Independiente was the 50th best @-@ selling album on the Latin Albums chart and the 15th best @-@ seller on the Latin Pop Albums chart . In Mexico , it was the 19th best @-@ selling album of 2011 . + Independiente was certified platinum by the Argentine Chamber of Phonograms and Videograms Producers in recognition of 40 @,@ 000 copies sold . It was also certified gold and platinum by the Mexican Association of Producers of Phonograms and Videograms for 90 @,@ 000 copies shipped . In the United States , Independiente was certified Latin platinum by the Recording Industry Association of America for 100 @,@ 000 copies shipped . In Venezuela , the album was certified double platinum for more than 40 @,@ 000 copies sold . It was certified gold in Chile for 5 @,@ 000 copies shipped , and in Colombia for 10 @,@ 000 copies sold . As of November 2012 , Independiente has sold 75 @,@ 000 copies in the United States . + + = = Critical reaction and awards = = + + David Jeffries of Allmusic gave the album a mildly positive review , citing Arjona 's return to his more mainstream style after the " stripped @-@ down acoustic effort " Poquita Ropa . He compared ( as did Arjona and other critics ) the production values and musical style of Independiente with past albums Animal Nocturno and Historias . Finally , he stated that " Returning fans will revel in this combination of freedom and growth , and appreciate the return of producer Tommy Torres , the man who has been behind the boards for quite a few of Arjona 's most popular releases " ( referring to Torres ' absence from the production of Poquita Ropa ) . + A contributor to the Colombian website CMI commented that " listening to Independiente is a labyrinth to go through , each song is a huge path that seems to have no end , because it involves imagination , it invites you to dream , to charm , to bewitch . But neither leaves behind the problematic requirements of love , its loopholes , hideouts and concerns , as well as its bad times in this joke that 's life " . Independiente was nominated at the Premios Juventud of 2012 for the " Lo Toco Todo ( I Play It All ) " award . On 25 September 2012 , the album received two nominations at the 13th Annual Latin Grammy Awards : Album of the Year and Best Singer @-@ songwriter album . On 3 December 2012 , Independiente received a nomination for " Pop Album of the Year " at the 2013 Premios Lo Nuestro awards . It also received a nomination for Grammy Award for Best Latin Pop Album at the Grammy Awards of 2013 . Arjona does not win the latter award since 2005 with Adentro in a shared win with Mexican singer Julieta Venegas . In February 2013 , Independiente received a nomination for " Latin Pop Album of the Year " at the Billboard Latin Music Awards of 2013 . + + = = Track listing = = + + All songs written and composed by Ricardo Arjona , except where noted . + + = = Personnel = = + + Credits are taken from Independiente liner notes . + + = = Chart performance = = + + + = = Certifications = = + + + = = Release history = = + + + + = 2003 Pacific typhoon season = + + The 2003 Pacific typhoon season was a slightly below average yearlong period of tropical cyclogenesis exhibiting the development of 31 tropical depressions , of which 21 became named storms ; of those , 14 became typhoons . Though every month with the exception of February and March featured tropical activity , most storms developed from May through October . During the season , tropical cyclones affected the Philippines , Japan , China , the Korean Peninsula , Indochina , and various islands in the western Pacific . + The season ran year @-@ round , with the first storm , Yanyan , developing west of the Marshall Islands on January 15 . In April , Typhoon Kujira became one of the longest @-@ lasting Pacific typhoons in history and attained climatological records for its unusually early impacts . Typhoon Imbudo in July caused several deaths and extensive damage across the Philippines and China . In September , Typhoon Maemi became one of the costliest typhoons in recorded history after striking South Korea ; Maemi was also the most intense tropical cyclone of the season with a minimum barometric pressure of 910 mbar ( hPa ; 26 @.@ 87 inHg ) . In late November , Typhoon Lupit devastated areas of Yap State in the Federated States of Micronesia . The season closed with the dissipation of a tropical depression east of the Philippines on December 27 . + The scope of this article is limited to the Pacific Ocean , north of the equator and west of the International Date Line . Storms that form east of the date line and north of the equator are called hurricanes ; see 2003 Pacific hurricane season . Tropical Storms formed in the entire west Pacific basin are assigned a name by the Tokyo Typhoon Center . Tropical depressions in this basin monitored by the Joint Typhoon Warning Center ( JTWC ) have the " W " suffix added to their number . Tropical depressions that enter or form in the Philippine area of responsibility are assigned a name by the Philippine Atmospheric , Geophysical and Astronomical Services Administration or PAGASA . This can often result in the same storm having two names . + + = = Seasonal forecasts = = + + On March 5 , 2003 , meteorologists from the University College London at the Tropical Storm Risk ( TSR ) Consortium issued an extended range forecast for the typhoon season , noting the likelihood of near average tropical cyclone activity as a result of projected neutral sea surface temperatures . The forecast indicated the potential for 26 @.@ 2 tropical storms , compared to the 10 – and 30 @-@ year average of 27 @.@ 8 and 26 @.@ 3 storms , respectively . The following month , the group raised their forecast for tropical storms to 26 @.@ 7 , indicating a slightly above average season . Over next two months , however , fluctuations in sea surface temperatures , particularly those in the Central Pacific , caused the group to revise their predictions downward and indicated the probability for a slightly below average typhoon season in their June forecast . A rise in sea surface temperatures in the following months prompted the forecasting group to once again raise their forecasts to indicate a near @-@ average season in their final August forecast update , which predicted 27 tropical storms . The group was very accurate in their forecasts , with their April and August forecasts being the most accurate . + Similarly , meteorologists working with the City University of Hong Kong issued a seasonal projection on April 24 , 2003 , indicating the likelihood of a normal or below normal season with 29 total tropical cyclones , 26 tropical storms , and 16 typhoons . As with the TSR , the group primarily based their forecast numbers on the prevailing status of the El Niño @-@ Southern Oscillation . The City University of Hong Kong revised their forecasts on June 24 , 2003 , indicating a slight increase of total tropical cyclones to 30 . The group was also accurate in their forecasts for the entirety of the Northwest Pacific , though their specialized forecasts for the South China Sea were substantially off . + During the year , the Japan Meteorological Agency ( JMA ) issued advisories on tropical cyclones west of the International Date Line to the Malay Peninsula , and north of the equator ; this was due to the agency 's status as the official Regional Specialized Meteorological Center , as designated by the World Meteorological Organization in 1989 . The JMA issued forecasts and analyses four times a day , beginning at 0000 UTC and continuing every six hours . The JMA issued forecasts based on a climatological tropical cyclone forecast model . The agency estimated 10 minute sustained winds and barometric pressure based on the Dvorak technique and numerical weather prediction . The JTWC also issued warnings on storms within the basin , operating from Pearl Harbor in Hawaii to represent the interests of the United States Armed Forces in the Indian and Pacific Oceans . + + = = Season summary = = + + Throughout the season , sea surface temperatures within the western equatorial Pacific were above normal , including those in the South China Sea . Areas of convection persisted year @-@ round in the lower latitudes , particularly around the Philippines . Atmospheric divergence was also prevalent in the same regions , resulting in enhanced tropical cyclogenesis east of the Philippines in 2003 ; the mean region of development of tropical systems during the year was more southwest than the 1971 – 2000 30 @-@ year average . In 2003 , the JMA monitored 21 tropical cyclones of at least tropical storm intensity ; of those , 14 reached typhoon intensity . Though the number of tropical storms was below average , the ratio between tropical storms and typhoons was 66 % greater than normal . The Philippine Atmospheric , Geophysical and Astronomical Services Administration ( PAGASA ) monitored three additional cyclones of at least tropical storm intensity that were not monitored by the JMA . + The season began with the formation of Tropical Storm Yanyan on January 15 . After its dissipation five days later , no tropical cyclones of at least tropical storm intensity developed over the next two months . This period of inactivity ended with the formation of Typhoon Kujira in mid @-@ April ; Kujira was one of the longest lived Pacific storms on record and was the first typhoon with 1 @-@ minute sustained winds of at least 240 km / h ( 150 mph ) in April since Typhoon Isa in 1997 . Tropical activity was enhanced from May to June , and during this period the JMA monitored four tropical storms , while the PAGASA monitored a fifth storm off the eastern Philippines . Three of the four tropical storms monitored by the JMA approached or hit Japan , including Typhoon Soudelor , which brought heavy rainfall and wind across the Ryukyu Islands and the Korean Peninsula . + Tropical activity once again declined towards the second half of June and first half of July . The second half of July , however , featured the development of typhoons Imbudo and Koni , which both tracked westward across the Philippines before striking areas near Saipan and other regions of southeastern China . Imbudo caused the deaths of 78 people and US $ 383 million in damage . August was a highly active month for tropical cyclogenesis , with a total of six tropical storms monitored by the JMA , JTWC , and PAGASA . This included typhoons Krovanh and Dujuan , which also struck southeastern China . Typhoon Etau earlier in the month made landfall in Japan , resulting in 17 deaths . + Activity was somewhat below average in September , with only one tropical cyclone making landfall , Maemi . However , Maemi was the strongest tropical cyclone of the season and was the costliest with roughly US $ 4 @.@ 8 billion in damage , mostly in South Korea . Tropical cyclogenesis and activity continued to decline after August , with October featuring only three tropical storms . However , two , Ketsana and Parma , reached typhoon intensity ; both stayed away from land . November featured less storms but was climatologically average , with two typhoons developing . The second typhoon , Lupit , devastated portions of Yap State , resulting in approximately $ 1 @.@ 7 million in damage . In December , the JTWC and PAGASA monitored a sole tropical system east of the Philippines , though the JMA did not monitor or classify any tropical cyclones during the month . + + = = Storms = = + + In storm information below , wind @-@ speed advisories differ from the Joint Typhoon Warning Center ( JTWC ) to the JMA as the JTWC uses the United States criteria of 1 @-@ minute mean to designate maximum sustained winds , while the JMA uses the 10 @-@ minute mean wind criteria to designate tropical cyclone maximum sustained winds . This difference generally results in JTWC maximum winds appearing higher than the maximum winds described by the JMA for the same cyclone . + + = = = Tropical Storm Yanyan = = = + + On January 11 , the JTWC began monitoring the disturbance that would eventually develop into Yanyan near the International Date Line . As the system tracked westward , it gradually moved into a more favorable environment for tropical cyclogenesis . On January 14 , surface observations indicated that the low @-@ pressure area had developed a closed , low @-@ level circulation center indicative of a tropical cyclone , satellite imagery remained inconclusive . Nonetheless , the JMA classified the pressure area as a tropical depression west of the Marshall Islands at 0600 UTC on January 15 . The JTWC would follow suit by classifying the storm as such at 1800 UTC later that day . At the time , the depression was tracking west @-@ northwest under the influence of a subtropical ridge to the north . Over the next day the system waned in convective activity before resuming its previous track and accelerating . At 0000 UTC on January 17 , the JTWC upgraded the system to tropical storm intensity , though the storm remained nameless as the JMA continued to classify it as a tropical depression . + Throughout January 17 the tropical storm would again oscillate in strength , resulting in a brief downgrade by the JTWC to tropical depression intensity . However , an increase in deep convection resulted in its reclassification as a tropical storm at 1800 UTC that day , followed by the JMA upgrading the system to tropical storm intensity at 1200 UTC on January 18 . As such , the storm received the name Yanyan . At roughly the same time , the tropical cyclone began to stall east of the Mariana Islands and curve sharply northeastward . Whilst the JTWC indicated that Yanyan peaked in strength late on January 18 with 1 @-@ minute sustained winds of 60 km / h ( 37 mph ) , the JMA considered the system to have maintained the same intensity throughout its stint as a tropical storm . Steered by the same nearby subtropical ridge , Yanyan would continue to track towards the northeast into a less favorable tropical cyclone environment . The JMA downgraded Yanyan to tropical depression at 1200 UTC on January 20 before the storm transitioned into an extratropical cyclone as its low @-@ level circulation center decoupled from the primary mass of convection due to strong wind shear . At 0000 UTC , both the JTWC and JMA discontinued the monitoring of Yanyan . + + = = = Typhoon Kujira ( Amang ) = = = + + Kujira developed from a broad area of disturbed weather as a tropical depression on April 9 well removed from any landmasses . Shortly after development , Kujira quickly intensified in its early stages , and was upgraded to a tropical storm just two days after cyclogenesis . Strengthening slowed afterwards , though the storm attained typhoon intensity on April 14 . Intensification continued and late on April 15 , Kujira reached its peak intensity with winds of 165 km / h ( 105 mph ) and a minimum barometric pressure of 930 mbar ( hPa ; 27 @.@ 46 inHg ) . Following peak intensity , Kujira would begin to track northwest and oscillate in strength , cresting an additional two times in intensity . On April 21 , the typhoon was downgraded to tropical storm intensity and began to track erratically for several days east of Taiwan . However , on April 24 , Kujira would resume a northward track and begin to weaken , and on April 24 was downgraded to tropical depression strength as it made landfall on Kyushu . Following landfall , Kujira transitioned into an extratropical cyclone on April 25 , which persisted until crossing the International Dateline towards the end of April 2003 . + Shortly after developing , Kujira caused two fatalities in Pohnpei in addition to minor agricultural and infrastructural damage ; similar effects were felt in Guam . Several days later , the typhoon prompted cyclone warnings and other precautionary measures in the Philippines after forecasts indicated the potential for strong winds and rain . However , ultimately any effects in the archipelago associated with Kujira remained minimal . The typhoon also prompted warning products in Taiwan , making it the first April typhoon since 1978 to cause such a feat . Unlike in the Philippines , however , Kujira would bring significant rainfall to Taiwan . Effects from the typhoon were most significant in Japan , particularly in the Ryukyu Islands . Strong winds , rain , and waves caused US $ 230 @,@ 000 ( ¥ 27 @.@ 8 million ) in agricultural damage on Ishigaki Island . One person was killed due to injuries resulting from the waves . In Kyushu , heavy rainfall , peaking at 196 mm ( 7 @.@ 7 in ) in Ōita Prefecture , was reported . Overall , despite its distance away from land and weak intensity at the time of its sole landfall , Kujira resulted in three fatalities . + + = = = Typhoon Chan @-@ hom = = = + + Midday on May 18 , the JTWC began to monitor an area of persistent disturbed weather associated with a broad low @-@ pressure area southwest of Chuuk . Within highly conductive conditions , the disturbance quickly organized and became classified as a tropical depression at 0000 UTC the following day . In its initial stages , the depression tracked slowly northeastwards . However , a shortwave trough forced a weakness in a nearby ridge , allowing for the storm to take a more streamlined , northward path . At 1200 UTC on May 20 , the JMA upgraded the depression to Tropical Storm Chan @-@ hom . Following the system 's naming , Chan @-@ hom temporarily meandered towards the northwest before resuming its northeasterly track . The next day , the storm began to develop an eye ; this was reflected with an upgrade by the JMA to typhoon status at 0600 UTC on May 23 . Gradual intensification followed , and at 1800 UTC that day Chan @-@ hom reached its peak intensity with maximum sustained winds of 155 km / h ( 100 mph ) and a minimum pressure of 940 mbar ( hPa ; 27 @.@ 76 inHg ) . + Following peak intensity , Chan @-@ hom began to intake dry air beginning on May 25 . At roughly the same time , the typhoon began to weaken and accelerate towards the northeast . Conditions continued to worsen as the storm moved further north , and as the cyclone passed east of Minamitorishima , it was downgraded to tropical storm classification . By this time , Chan @-@ hom had lost much of its convection due to wind shear . Early on May 27 , Chan @-@ hom had fully transitioned into an extratropical cyclone , and these remnants continued to track towards the northeast . These extratropical remnants dissipated south of the Aleutian Islands the following day . Early in the typhoon 's existence , Chan @-@ hom posed a potential threat to Guam , but remained well east of the island . However , after passing to the northeast , winds from the typhoon fanned volcanic ash from the recently erupting Anatahan volcano towards the island , prompting precautionary measures in Guam . Ashfalls were reported on the island , forcing the cancellation of several flights . As a tropical storm , Chan @-@ hom caused some damage to homes and crops on Chuuk , mostly due to heavy rains brought forth by the storm . Offshore , a 1 @,@ 040 ton fishing vessel , the Nien Feioch , sank during the storm . The ship was valued at $ 16 million . + + = = = Severe Tropical Storm Linfa ( Chedeng ) = = = + + Tropical Storm Linfa developed as a tropical depression just off the western coast of Luzon on May 25 . The disturbance quickly intensified to reach tropical storm intensity a few hours after cyclogenesis . However , intensification leveled off as Linfa executed a small clockwise loop before a subsequent landfall on Luzon on May 27 . Due to land interaction the storm temporarily weakened and decoupled before reforming in the Philippine Sea . Afterwards Linfa began reintensifying and reached its peak intensity on May 29 with maximum sustained winds of 100 km / h ( 65 mph ) and a barometric pressure of 980 mbar ( hPa ; 28 @.@ 94 inHg ) . Following its peak the tropical storm began to deteriorate and transitioned into an extratropical cyclone on May 30 ; these extratropical remnants continued to track northward through Japan before dissipating in the Sea of Okhotsk on June 4 . + The erratic and slow movement of Linfa off the western Philippines was the catalyst for extreme rainfall and flooding , killing 41 persons in the archipelago . Precipitation peaked at 723 mm ( 28 @.@ 5 in ) near Dagupan . Rising floodwaters resulted in the temporary shutdown of government offices and numerous mudslides . In addition , strong winds caused widespread power outages . Overall damage from Linfa in the Philippines amounted to ₱ 192 @.@ 3 million ( US $ 3 @.@ 65 million ) . The floods also displaced 8 @,@ 367 people in 1 @,@ 686 families and destroyed 178 homes . Linfa and its extratropical remnants later brought torrential rainfall and widespread flooding to Japan , particularly in southwestern regions . Rainfall there peaked at 727 mm ( 28 @.@ 62 in ) . Flood damage was worst in Kōchi and Tokushima Prefectures , where several buildings were destroyed by floodwater . Other locations in Japan experienced considerable agricultural damage as well as numerous landslides . Overall , Linfa caused roughly $ 28 @.@ 2 million in damage , much of which occurred in Japan , though the entirety of deaths associated with the cyclone took place in the Philippines . + + = = = Severe Tropical Storm Nangka ( Dodong ) = = = + + In late May , an area of disturbed weather began to persist in the South China Sea . The JTWC began to monitor the storm cluster on May 29 . The following day , the JMA reclassified the system as a tropical depression ; initially the system remained highly disorganized due to the lack of deep convection . Persistent moderate wind shear and dry air prevented the cyclone from strengthening significantly in the storm 's early stages . These conditions abated as the depression tracked northeast , and at 0000 UTC on June 1 , the JMA upgraded the system to Tropical Storm Nangka . Throughout the course of the day , Nangka continued to strengthen as it accelerated northeast , and peaked in strength with a barometric pressure of 985 mbar ( hPa ; 29 @.@ 09 inHg ) and maximum sustained winds of 95 km / h ( 60 mph ) , making it a severe tropical storm . + However , upon moving through the Bashi Channel , conditions began to deteriorate due to increased wind shear , weakening the system and resulting in its downgrade to tropical depression status by the JMA at 1200 UTC on June 3 . Nangka continued to become increasingly disorganized as it moved further north , and late that day , the depression transitioned to an extratropical cyclone . The resulting remnants continued to track well east of Japan before dissipating on June 7 . Due to its track away from landmasses , damage remained minimal ; however , as Nangka passed to the south and east of Japan , the storm brought light rainfall to the country , peaking at 81 mm ( 3 @.@ 2 in ) in Minamidaitō , Okinawa . + + = = = Typhoon Soudelor ( Egay ) = = = + + A tropical disturbance persisted in the monsoon trough northwest of Pohnpei on June 7 , and moved westward without development due to wind shear . On June 11 , the shear decreased enough to allow the convection to organize , and the next day the JMA classified it as a tropical depression northeast of Palau . On June 13 , the JMA upgraded it to Tropical Storm Soudelor to the east of the Philippines , and PAGASA gave it the local name " Egay " . Soudelor moved to the northwest and later to the north , parallel to the eastern Philippines , and on June 17 , the JMA upgraded it to typhoon status . The storm rapidly intensified to the east of Taiwan as it developed a well @-@ defined eye , and while doing so passed over the Japanese island of Iriomote @-@ jima at around 2030 UTC on June 17 . At 0600 UTC on June 18 , the JTWC estimated peak 1 minute winds of 215 km / h ( 135 mph ) , while the JMA estimated peak 10 minute winds of 150 km / h ( 90 mph ) . Increased shear weakened the typhoon to tropical storm strengthen on June 19 , and later that day the JMA declared the storm as extratropical near the Oki Islands . The extratropical remnants of Soudelor continued to the northeast , crossing northern Japan on June 20 and dissipating on June 24 . + While offshore the Philippines , Soudelor dropped heavy rainfall that caused flooding and left thousands homeless . The storm caused ₱ 131 million ( PHP , $ 2 @.@ 46 million USD ) in damage and 12 deaths . On the Japanese island of Iriomote @-@ jima , where wind gusts reached 204 km / h ( 127 mph ) . It also affected Taiwan , where floods covered highways and caused mudslides . In Japan , the storm caused widespread power outages , although damage was minimal , and there were 21 injuries . In South Korea , there was $ 12 @.@ 1 million in damage and two deaths . + + = = = Typhoon Imbudo ( Harurot ) = = = + + On July 15 , the JMA estimated that a tropical depression formed , and the next day the JTWC initiated advisories on Tropical Depression 09W about 665 km ( 415 mi ) east of Yap . A subtropical ridge near Okinawa steered the nascent depression to the west @-@ northwest for much of its duration . With warm waters and favorable upper @-@ level conditions , the depression quickly organized , first to Tropical Storm Imbudo on July 17 , and to typhoon status two days later , when PAGASA begin issuing advisories on Typhoon Harurot . Around that time , Imbudo was rapidly intensifying , developing a well @-@ defined eye . At 1200 UTC on July 20 , the JMA estimated peak 10 minute sustained winds of 165 km / h ( 105 mph ) , and the same time , the JTWC estimated 1 minute sustained winds of 240 km / h ( 150 mph ) , making it a super typhoon . Imbudo maintained peak winds for about 12 hours , before undergoing an eyewall replacement cycle . At 0300 UTC on July 22 , Imbudo struck northern Luzon , with 1 minute winds estimated at 205 km / h ( 125 mph ) by the JTWC . It weakened over land , but re @-@ intensified in the South China Sea , striking southern China near Yangjiang , Guangdong on July 24 . Imbudo rapidly weakened , dissipating on July 25 . + In the Philippines , officials evacuated over 14 @,@ 000 people . Imbudo was the strongest typhoon to strike since Typhoon Zeb five years prior , The typhoon left widespread areas flooded for several days . Damage was heaviest in the Cagayan Valley , where over 80 @,@ 000 people were displaced by the storm . In Isabela , high winds wrecked most of the banana crop and severely damaged other crops . Throughout the Philippines , Imbudo damaged or destroyed 62 @,@ 314 houses , causing P4.7 billion ( 2003 PHP , $ 86 million 2003 USD ) in damage . There were 64 deaths in the country . In southern China in Yangjiang , more than 30 @,@ 000 people evacuated ahead of the storm , and more than half of the trees in the city fell due to strong winds . High winds killed a man in Hong Kong after knocking him off a platform . Throughout Guangdong , Imbudo destroyed 595 @,@ 000 houses and caused eight deaths . Heavy rains spread across southern China , peaking at 343 mm ( 13 @.@ 5 in ) at Hepu County in Guangxi province . There , 12 people died from the storm . Overall damage in China was about ¥ 4 @.@ 45 billion ( CNY , $ 297 million USD ) . + + = = = Severe Tropical Storm Koni ( Gilas ) = = = + + Koni originated from a tropical depression situated within the monsoon trough to the east of the Philippines on July 15 . Tracking westward , intensification was slow and the system remained a tropical depression as it moved across the central Philippines on July 17 . Upon moving into the South China Sea , conditions allowed for quicker strengthening , and the cyclone reached tropical storm status on July 18 before reaching its peak intensity with maximum sustained winds of 110 km / h ( 70 mph ) , making it a severe tropical storm . However , atmospheric conditions began to deteriorate as Koni made landfall on Hainan on July 21 , weakening the system . The tropical storm continued to weaken as it moved over the Gulf of Tonkin prior to a final landfall near Hanoi , Vietnam the following day . Tracking inland , the combination of land interaction and wind shear caused Koni to dissipate over Laos on July 23 . + Shortly after development , Koni tracked through the Philippines , killing two people . After moving into the South China Sea , turbulence produced by the storm resulted in an aviation incident involving a commercial airliner off the western Philippines . Three of the plane 's occupants received minor injuries . In Hainan , Koni caused heavy rainfall , peaking at 189 mm ( 7 @.@ 44 in ) at a station on Wuzhi Mountain . The rains resulted in the collapse of 1 @,@ 400 homes and an estimated CN ¥ 140 @.@ 27 million ( US $ 16 @.@ 9 million ) in direct economic losses . Effects were worst in Vietnam , where three people were killed . Widespread power outages occurred , and strong winds resulted in agricultural and infrastructural damage , particularly in Vietnam 's northern provinces . + + = = = Tropical Storm Morakot ( Juaning ) = = = + + Morakot spawned from an area of disturbed weather in the Philippine Sea on July 31 . Tracking northwest , favorable conditions allowed for the intensification of the system to tropical storm strength on August 2 . Morakot reached peak intensity later that day with winds of 85 km / h ( 50 mph ) and a minimum barometric pressure of 992 mbar ( hPa ; 28 @.@ 29 inHg ) . This intensity was held for several hours until less conducive atmospheric conditions slightly weakened the system ; this was followed by Morakot making landfall on southern Taiwan on August 3 . Subsequently , the storm weakened and moved into the Taiwan Strait before making its final landfall near Quanzhou , China the next day . The storm quickly weakened over the Chinese mainland , and dissipated entirely several hours after landfall . + In Taiwan , where Morakot first made landfall , heavy rainfall resulted in flooding . Commercial flights , schools , and rail service in some areas was cancelled in advance of the storm . Precipitation there peaked at 653 mm ( 25 @.@ 71 in ) over a period of nearly two days in Taitung County . Crop damage also resulted from the rainfall , and was estimated at over NT $ 70 million ( US $ 2 million ) . In China , record rainfall was reported . The worst impacted city was Quanzhou , where losses due to Morakot reached CN ¥ 240 million ( US $ 29 million ) and one death was reported . Power outages were also widespread across southeastern China . Due to preexisting drought conditions , 703 cloud seeding operations took place in order to artificially generate added rainfall ; such operations resulted in moderate precipitation over the targeted area . Overall , Morakot caused roughly $ 31 million in damage and three deaths . + + = = = Typhoon Etau ( Kabayan ) = = = + + A tropical depression developed on August 2 southeast of Guam , and gradually intensified while moving to the northwest , becoming a tropical storm on August 3 and a typhoon a day later . Etau formed an eye and became a large storm by the time it approached Okinawa on August 7 . The typhoon attained peak winds of 155 km / h ( 100 mph ) before weakening slightly while turning to the northeast . Etau made landfall on the Japanese island of Shikoku on August 8 , and later moved across portions of Honshu and Hokkaido . After weakening to tropical storm status , the cyclone became extratropical on August 9 and dissipated three days later . + While passing northeast of the Philippines , the typhoon caused light damage in the archipelago . The eye crossed over Okinawa , where Etau left 166 @,@ 800 people without power and caused 10 injuries . Near where Etau first struck Japan , Muroto reported a peak wind gust of 166 km / h ( 103 mph ) , at the time the third strongest on record there . The typhoon also dropped torrential rainfall peaking at 683 mm ( 26 @.@ 9 in ) . The combination of winds and rainfall caused landslides , particularly on Hokkaido . Nationwide , Etau killed 20 people , destroyed 708 houses , and caused ¥ 35 @.@ 1 billion ( JPY , $ 294 @.@ 8 million USD ) in damage . + + = = = Typhoon Krovanh ( Niña ) = = = + + Krovanh originated from a tropical disturbance within the monsoon trough east of Chuuk State on August 13 . Despite rather favorable conditions , the initial tropical depression did not intensify significantly and degenerated into a remnant low on August 18 . However , these remnants were able to reorganize and the system was reclassified as a tropical cyclone a day later . Intensification was rather rapid upon the storm 's reformation – the depression reached tropical storm status on August 20 and then typhoon intensity two days later . Shortly after , Krovanh made landfall on Luzon at peak intensity with winds of 120 km / h ( 75 mph ) . The typhoon emerged into the South China Sea as a much weaker tropical storm , though it was able to restrengthen over warm waters . Once again at typhoon intensity , Krovanh clipped Hainan before moving over the Leizhou Peninsula on its way to a final landfall near Cẩm Phả , Vietnam on August 25 . Quick weakening due to land interaction occurred as Krovanh moved across northern Vietnam , where the storm met its demise the following day . + Krovanh first struck the Philippines , resulting in heavy rainfall and displacing approximately 1 @,@ 000 families . The flooding caused severe damage and killed one person . Krovanh 's effects were much more severe in China . In Hong Kong , eleven people were injured and isolated flooding occurred as a result of the typhoon 's outer rainbands . However , Guangdong Province , Hainan Province , and Guangxi were the Chinese regions most extensively impacted . The typhoon brought record wind gusts into Guangxi . In those three regions combined , 13 @,@ 000 homes were estimated to have collapsed and a large swath of farmland was damaged . Two people were killed in China and economic losses approximated to ¥ 2 @.@ 1 billion ( US $ 253 million ) . Due to its positioning and track , of all areas in Vietnam only the country 's more northern regions were impacted by Krovanh . Flash flooding occurred in earnest in those regions , and 1 @,@ 000 homes were flattened . One person was killed and five others were injured in Vietnam . Overall , the typhoon was responsible for the deaths of four persons . + + = = = Tropical Storm Vamco ( Manang ) = = = + + The monsoon trough spawned several tropical disturbances in the middle of August , one of which became Tropical Depression Lakay near the Philippines . On August 18 , an area of convection persisted on the southern side of a circulation , developing into a tropical depression east of Luzon . It moved quickly northward and later to the northwest in an area generally unfavorable for strengthening , such as the presence of wind shear and land interaction . On August 19 , the JMA upgraded the depression to Tropical Storm Vamco to the east of Taiwan . Later that day , the circulation passed just 55 km ( 35 mi ) north of Taipei , although the convection was exposed that time . On August 20 , the JMA assessed Vamco as dissipating in the Taiwan Strait , although the JTWC continued advisories until the storm moved ashore in southeastern China . + Rainfall in Taiwan reached 69 mm ( 2 @.@ 7 in ) in Ilan County . On the island , the storm left several hundred houses without power due to a lightning strike . On mainland China , rainfall peaked at 101 mm ( 4 @.@ 0 in ) in Wenzhou , Zhejiang , which were largely beneficial in easing drought conditions , while winds gusted to 100 km / h ( 62 mph ) . The storm damaged or destroyed 5 @,@ 880 houses and flooded 1 @,@ 287 ha ( 3 @,@ 180 acres ) of paddy fields , causing ¥ 38 @.@ 6 million ( CNY , $ 4 @.@ 7 million USD ) in damage . + + = = = Typhoon Dujuan ( Onyok ) = = = + + On August 27 , a tropical depression developed about 520 km ( 325 mi ) northwest of Guam , which initially drifted to the southwest before turning to the northwest . On August 29 , the JMA upgraded it to Tropical Storm Dujuan , and that day PAGASA began issuing advisories on Tropical Storm Onyok . The storm quickly intensified into a typhoon , after developing an eye in the center . On September 1 , the JMA estimated Dujuan attained peak 10 minute winds of 150 km / h ( 90 mph ) , and the JTWC assessed peak 1 – minute winds of 230 km / h ( 145 mph ) . While near peak intensity , the center of Dujuan passed about 45 km ( 30 mi ) south of the southern tip of Taiwan . The typhoon weakened steadily and was a severe tropical storm by the time it made landfall on September 2 just east of Hong Kong . The JTWC estimated landfall winds of 185 km / h ( 115 mph ) , making it the strongest typhoon to strike the Pearl River Delta since Typhoon Hope in 1979 . Dujuan rapidly weakened while continuing westward through China , dissipating on September 3 over Guangxi . + In the Philippines , Dujuan interacted with the monsoon to produce heavy rainfall , killing one person . While in the vicinity , Dujuan produced gusts of 100 km / h ( 62 mph ) on Yonaguni , a Japanese subdivision of Okinawa . Heavy rainfall in Taiwan reached 628 mm ( 24 @.@ 7 in ) in Pingtung County , and winds peaked at 176 km / h ( 109 mph ) on Orchid Island before the anemometer was destroyed . The caused about NT $ 200 ( NWD , $ 115 million USD ) in crop damage , and killed three people . Damage was minor in Hong Kong , and four fishermen were missing and presumed drowned after their boat sank . On the Chinese mainland , strong winds left 90 % of the city of Shenzen without power , and killed 16 construction workers due to a half @-@ finished building collapsing . Across Guangdong , the typhoon damaged crops and destroyed 54 @,@ 000 homes were destroyed . Overall damage in China was estimated at ¥ 2 @.@ 3 billion ( CNY , $ 277 million USD ) , and across Guangdong , the typhoon killed 40 people . + + = = = Typhoon Maemi ( Pogi ) = = = + + Typhoon Maemi formed on September 4 from the monsoon trough in the western Pacific Ocean . It slowly intensified into a tropical storm while moving northwestward , and Maemi became a typhoon on September 8 . That day , it quickly intensified due to favorable conditions , developing a well @-@ defined eye and reaching peak maximum sustained winds of 195 km / h ( 120 mph ) . While near peak intensity , Maemi was decelerating and began turning to the north @-@ northeast . The eyewall soon after passed over the Japanese island of Miyako @-@ jima on September 10 , producing the fourth lowest pressure on record in Japan after a pressure of 912 mbar ( 26 @.@ 9 inHg ) was recorded . With warm waters , Maemi was able to maintain much of its intensity before it made landfall just west of Busan , South Korea on September 12 . On Jeju Island , Maemi produced a peak wind gust of 216 km / h ( 134 mph ) and a minimum pressure of 950 mbar ( 28 inHg ) , both setting records for the country , and making it the most powerful typhoon to strike South Korea since record @-@ keeping began in the country in 1904 . The typhoon became extratropical in the Sea of Japan the next day , although the remnants persisted for several more days , bringing strong winds to northern Japan . + The typhoon first affected the Ryukyu Islands of Japan . On Miyako @-@ jima , strong winds damaged 104 buildings , and 95 % of residents lost power . Maemi dropped heavy rainfall there , including rates of 58 @.@ 5 mm ( 2 @.@ 30 in ) in an hour , and 402 @.@ 5 mm ( 15 @.@ 85 in ) in 24 hours , the latter setting a record . One person died on Miyako @-@ jima after being struck by flying glass . Elsewhere in Japan , the storm caused flights to be canceled , while rainfall @-@ induced landslides blocked roads . There were two other deaths in Japan , and damage totaled ¥ 11 @.@ 3 billion ( JPY , $ 96 million USD ) . Damage was heaviest in South Korea , notably where it moved ashore . Winds in Busan near the landfall location reached 154 km / h ( 96 mph ) , the second @-@ highest on record . There , the port sustained heavy damage , causing disruptions to exports in the months following the storm . Nationwide , the high winds destroyed about 5 @,@ 000 houses and damaged 13 @,@ 000 homes and businesses , leaving 25 @,@ 000 people homeless . About 1 @.@ 47 million lost power , and widespread crop damage occurred , resulting in the worst rice crop in 23 years . Across South Korea , Maemi killed 117 people , and overall damage totaled ₩ 5 @.@ 52 trillion won ( $ 4 @.@ 8 billion USD ) . + + = = = Typhoon Choi @-@ wan ( Roskas ) = = = + + In the middle of September , the monsoon trough spawned a rapidly organizing disturbance east @-@ northeast of Luzon , with weak wind shear and favorable conditions . On September 16 , the JMA classified it as a tropical depression , and the JTWC initiated advisories the next day . The system moved to the northwest due to the subtropical ridge to the northeast and later to the north . On September 18 , the JMA upgraded the depression to Tropical Storm Choi @-@ wan , the same day that PAGASA classified it as Tropical Storm Roskas . An eastward @-@ moving trough turned the storm to the northeast , bringing the track over Okinawa and Amami Ōshima on September 19 . Choi @-@ wan continued gradually intensifying , becoming a typhoon on September 20 to the southeast of Japan . That day , the JMA estimated peak winds of 130 km / h ( 80 mph ) , and the JTWC estimated peak 1 minute winds of 185 km / h ( 115 mph ) on September 21 , after Choi @-@ wan developed a well @-@ defined eye . The typhoon weakened due to increasing wind shear , deteriorating to severe tropical storm status on September 22 before JMA declared it extratropical on September 23 . The remnants of Choi @-@ wan continued to the northeast , exited the basin on September 24 , and eventually struck southern Alaska on September 25 . + Wind gusts in Okinawa reached 115 km / h ( 72 mph ) , while on the volcanic island of Hachijō @-@ jima , gusts reached 214 km / h ( 133 mph ) . On the Japanese mainland , winds gusted to 126 km / h ( 78 mph ) at Chōshi , Chiba . Choi @-@ wan dropped heavy rainfall while near Japan , peaking at 316 mm ( 12 @.@ 4 in ) on Miyake @-@ jima . In Okinawa , Choi @-@ wan flooded a boat , forcing its occupants to be rescued by the Coast Guard . Also on the island , heavy rainfall caused landslides and flooded houses . In Amami Ōshima , the storm left 10 @,@ 810 people without power . On Hachijō , wind gusts of 214 km / h ( 133 mph ) damaged about 200 houses . Nationwide , Choi @-@ wan destroyed 191 homes , injured 9 people , and left about ¥ 300 million ( JPY , $ 2 @.@ 5 million USD ) . + + = = = Typhoon Koppu ( Sikat ) = = = + + Towards the end of September , the monsoon trough spawned a tropical disturbance east @-@ northeast of Yap , which became a tropical depression on September 24 . There were initially several circulations , with a tropical upper tropospheric trough to the northeast increasing outflow . After slowing and turning to the northeast , the depression intensified into Tropical Storm Koppu on September 26 . After the storm developed a large eye feature , the JTWC upgraded it to typhoon status on September 27 , although the JMA did not follow suit until the following day while near Chichi @-@ jima . Also that day , Koppu passed 95 km ( 60 mi ) west of Iwo Jima , and the JMA estimated peak 10 minute winds of 130 km / h ( 80 mph ) . The JTWC estimated peak 1 minute winds of 165 km / h ( 105 mph ) , before an approaching trough caused the typhoon to accelerate northeastward . The convection diminished near the center , causing Koppu to become extratropical on September 30 . The remnants continued generally northeastward through the Aleutian Islands , eventually passing south of mainland Alaska on October 7 . + On Chichi @-@ jima , Typhoon Koppu produced sustained winds of 102 km / h ( 63 mph ) , with gusts to 200 km / h ( 124 mph ) , which was the third strongest on record for the station . Rainfall there reached 183 mm ( 7 @.@ 2 in ) . Wind gusts on Iwo Jima peaked at 109 km / h ( 68 mph ) . + + = = = Typhoon Ketsana ( Tisoy ) = = = + + In the middle of October , an area of convection persisted along the monsoon trough between Luzon and Guam , developing into a tropical depression on October 17 . The same monsoon trough later spawned Typhoon Parma to the east . For several days , the system remained disorganized while drifting to the west @-@ northwest due to weak steering currents south of the subtropical ridge . On October 19 , the JMA upgraded the depression to Tropical Storm Ketsana , and by that time the storm had begun drifting to the northeast . With favorable outflow , Ketsana quickly intensified into a typhoon on October 20 after developing an eye , and two days later , the JMA estimated peak winds of 165 km / h ( 105 mph ) . The JTWC estimated peak 1 minute winds of 230 km / h ( 145 mph ) around the time the well @-@ defined eye had expanded to 37 km ( 23 mi ) . Subsequently , the typhoon accelerated northeastward into the westerlies and began weakening due to increasing wind shear and dry air . On October 26 , Ketsana became extratropical to the east of Japan and dissipated the next day . The passage of the typhoon caused surface chlorophyll a concentration in the ocean to increase 30 @-@ fold . + + = = = Typhoon Parma = = = + + The same monsoon trough that spawned Typhoon Koppu also produced an area of convection to the north @-@ northeast of Guam , becoming a tropical depression on October 19 . The system moved northwestward and later turned to the northeast around the subtropical ridge . With low wind shear and favorable outflow , the convection became better organized , and the JMA upgraded it to Tropical Storm Parma on October 21 . After an eye began to form , Parma was upgraded to typhoon status the next day . An approaching trough caused Parma to accelerate northeastward while also increasing outflow . On October 24 , the JMA estimated peak winds of 175 km / h ( 110 mph ) while the JTWC estimated winds of 240 km / h ( 150 mph ) , an unusually high intensity for 30 ° N. Subsequently , Parma rounded the subtropical ridge and began moving to the east @-@ southeast , beginning a nearly week @-@ long loop . The cold front had passed to the north and failed to bring the typhoon northeastward . + Increasing wind shear weakened the convection , and Parma deteriorated into a severe tropical storm on October 26 . The next day , it began moving westward while passing about 345 km ( 215 mi ) north of Wake Island . A large eye of 110 km ( 70 mi ) in diameter developed , and on October 28 , the JMA re @-@ upgraded Parma to typhoon status . The next day , the typhoon turned to the northeast due to another approaching trough . With decreasing wind shear and warmer waters , Parma re @-@ intensified significantly on October 29 , reaching a secondary peak of 165 km / h ( 105 mph ) according to JMA , and 215 km / h ( 135 mph ) according to JTWC . The storm moved very closely along the track it took several days prior . Increasing wind shear on October 30 caused rapid weakening , resulting in the eye dissipating . By the next day , the center was exposed , and Parma became extratropical , later exiting the basin on November 1 . The remnants weakened , later turning to the southeast and dissipating on November 11 southwest of California . + + = = = Severe Tropical Storm Melor ( Viring ) = = = + + Late in October , an area of convection persisted northwest of Palau and quickly organized into a tropical depression on October 29 . Moving west @-@ northwestward toward the Philippines due to a ridge to the east , the depression intensified into Tropical Storm Melor on October 30 . With minimal wind shear , the storm strengthened further and developed a large eye . The JTWC upgraded Melor to typhoon status on October 31 , estimating peak 1 minute winds of 140 km / h ( 85 mph ) , although the JMA estimated the storm only attained peak 10 minute winds of 95 km / h ( 60 mph ) . Early on November 1 , Melor made landfall on northeastern Luzon in the Philippines , south of Palanan . The storm weakened over land and emerged into the South China Sea . By that time , it was moving northward along the periphery of the ridge to the east . On November 2 , Melor turned to the northeast , passing just east of Taiwan . The next day , it weakened to tropical depression status , and after meandering offshore eastern Taiwan , Melor continued northeastward . It became extratropical on November 5 and dissipated the next day near southern Japan . + In the Philippines , Melor dropped about 150 mm ( 6 in ) of rainfall , which flooded the Cagayan River and killed four people . In Taiwan , rainfall reached 554 mm ( 21 @.@ 8 in ) in Pingtung County . On the Japanese island of Hateruma , rainfall totaled 197 mm ( 7 @.@ 8 in ) , which broke the hourly and daily record for the station in November . + + = = = Typhoon Nepartak ( Weng ) = = = + + A tropical depression developed near Yap on November 11 . The system intensified gradually as it tracked quickly westward toward the Philippines . An anticyclone aloft allowed for strengthening , and the JMA upgraded the depression to Tropical Storm Nepartak on November 12 . Simultaneously , the cyclone entered the area of responsibility of the Philippine Atmospheric , Geophysical and Astronomical Services Administration , which named it Tropical Storm Weng . At around 1600 UTC on November 13 , Nepartak made landfall on northern Samar Island in the Philippines before traversing the remainder of the archipelago from east to west . The cyclone emerged into the South China Sea weakened but quickly re @-@ intensified while continuing to the west @-@ northwest . The JTWC estimated peak winds of 140 km / h ( 85 mph ) on November 16 , and later that day , the JMA upgraded the storm to typhoon status , estimating peak 10 @-@ minute winds of 120 km / h ( 75 mph ) . On November 18 , Nepartak passed near southwestern Hainan and weakened , with the convection diminishing from the circulation . By the next day , the system weakened to tropical depression status , and dissipated shortly after moving ashore over Beihai , China . + In the Philippines , Nepartak produced strong winds , heavy rainfall , and rough seas . The storm caused widespread power outages and ferry disruptions . According to the PAGASA in its post @-@ storm report , a total of 13 people lost their lives during the storm . On Hainan , the storm helped end one of the worst summer droughts in almost 65 years , although it also left heavy crop damage , wrecking 64 @,@ 000 ha ( 160 @,@ 000 acres ) of fields and killing 400 head of livestock . With about 800 homes destroyed , damage on Hainan amounted to $ 197 million ( 2003 USD ) . Effects were minor in mainland China . + + = = = Typhoon Lupit ( Yoyoy ) = = = + + Typhoon Lupit formed on November 18 from the monsoon trough to the west of the Marshall Islands . Early in its duration , it moved generally to the west or west @-@ southwest . On November 21 , the depression intensified into Tropical Storm Lupit , and two days later , it strengthened into a typhoon , developing an eye . Lupit later began a prolonged movement to the northwest , during which it passed near several islands in Yap State . The typhoon reached peak intensity on November 26 , with peak 10 – minute sustained winds of 185 km / h ( 115 mph ) . It later weakened due to a variety of unfavorable conditions , and after recurving to the northeast , Lupit became extratropical south of Japan on December 2 . + Typhoon Lupit first affected Pohnpei with gusty winds , and later it damaged or destroyed about 200 homes in Chuuk State . There , high waves flooded roads and homes , while high winds damaged crops . Damage was heaviest in Yap State , mostly in the small Ulithi atoll and Fais Island . On both islands , the typhoon contaminated the water supply and wrecked the crops . Rainfall reached 263 mm ( 10 @.@ 35 in ) on Ulithi , and gusts reached 158 km / h ( 98 mph ) . Throughout the FSM , damage totaled about $ 1 @.@ 7 million , although there were no deaths . The damage prompted the FSM government to declare two states as disaster areas , as well as a disaster declaration from the United States federal government . While Lupit was becoming extratropical , it became the first typhoon in December to threaten Japan in 13 years . The storm dropped rainfall that resulted in mudslides and flight cancellations . + + = = = Other storms = = = + + An area of convection formed on May 16 to the southwest of Palau , located within an area of weak wind shear . The next day , the JMA and the JTWC both classified the system as a tropical depression . The convection was disorganized in association with multiple circulation centers , although it gradually organized . Moving westward initially , the depression turned more to the north into an area of increasing wind shear . On May 19 , the JTWC upgraded the system to Tropical Storm 03W , and on the same day , PAGASA classified it as Tropical Depression Batibot . Soon after , the convection decreased from the center , and by May 20 , all warning agencies had discontinued advisories . + On July 9 , PAGASA classified a system as Tropical Depression Falcon , off the west coast of the Philippines . The JMA also briefly initiated advisories before dropping them later on July 9 . Later in the month , PAGASA briefly issued advisories on Tropical Depression Ineng on July 30 off the east coast of Mindanao . The depression dissipated the next day , causing about P8 million ( PHP , $ 145 @,@ 000 USD ) in damage . The monsoon trough spawned a tropical depression north of Luzon on August 18 , with PAGASA naming it Lakay . There were several circulations in the region , with Tropical Storm Vamco to the northeast near Taiwan , and the overall system moved generally westward . PAGASA briefly classified Lakay as a tropical storm on August 19 before ending advisories the next day . The system spread rainfall across China , reaching 82 @.@ 4 mm ( 3 @.@ 24 in ) in Xiamen , Fujuan . + On September 5 , former Hurricane Jimena crossed the International Date Line into the basin . By that time , the circulation was largely exposed from the convection , and the center quickly dissipated . Later in the month , the monsoon trough spawned a disturbance east of the Philippines that PAGASA classified as Tropical Depression Quiel on September 15 . The system moved westward but never intensified , dissipating west of Luzon on September 19 . The broad system also spawned Typhoon Choi @-@ wan . + In October , the JTWC classified Tropical Depression 18W early in the month off the west coast of Luzon . With weak steering currents , the system moved slowly southwestward before looping to the northwest . On October 10 , the depression dissipated just off the coast of southern China . On October 5 , the JMA monitored a tropical depression southeast of Taiwan that later passed near the island , producing heavy rainfall that peaked at 153 mm ( 6 @.@ 0 in ) in Ilan County . A few days later , the JTWC monitored Tropical Depression 19W , which developed on October 12 after an extratropical storm produced an area of convection . Described as a subtropical low , the depression moved generally northeastward toward Japan due to an approaching cold front . The depression moved through Kyushu and Honshu before dissipating on October 13 . The depression dropped 285 mm ( 11 @.@ 2 in ) of rainfall in Kōchi , while strong winds associated reached 217 km / h ( 135 mph ) through a storm @-@ produced downburst . The winds knocked over two cranes , killing two people , and left about 9 @,@ 000 homes without power . The depression also killed two people due to drownings . On October 16 , the JMA briefly classified a tropical depression to the east of the Marianas Islands . On October 22 , a tropical depression developed in the South China Sea , classified by PAGASA as Ursula . The system moved eastward and crossed Palawan before dissipating on October 24 . In the Philippines , the depression killed one person and caused minor damage . Also in October , the monsoon trough spawned a tropical depression in the Gulf of Thailand , which moved northwestward and crossed into the Indian Ocean , dropping heavy rainfall in Thailand . + In mid @-@ November , the JMA briefly tracked a weak tropical depression near Wake Island . The agency also briefly tracked a tropical depression off the coast of Vietnam on December 16 . It finally dissipated on December 17 , with the pressure and winds unknown . The final system of the year was a tropical depression that originated out of the monsoon trough on December 24 east of the Philippines . After initially moving to the west , it turned to the south , and the JTWC estimated the depression intensified into a tropical storm . During this time , PAGASA classified it as Tropical Storm Zigzag . The system made landfall in northeastern Mindanao and dissipated on December 27 , bringing heavy rainfall . + + = = Storm names = = + + Within the North @-@ western Pacific Ocean , both the Japan Meteorological Agency ( JMA ) and the Philippine Atmospheric , Geophysical and Astronomical Services Administration assign names to tropical cyclones that develop in the Western Pacific , which can result in a tropical cyclone having two names . The Japan Meteorological Agency 's RSMC Tokyo — Typhoon Center assigns international names to tropical cyclones on behalf of the World Meteorological Organization 's Typhoon Committee , should they be judged to have 10 @-@ minute sustained windspeeds of 65 km / h , ( 40 mph ) . While the Philippine Atmospheric , Geophysical and Astronomical Services Administration assigns names to tropical cyclones which move into or form as a tropical depression in their area of responsibility located between 135 ° E and 115 ° E and between 5 ° N @-@ 25 ° N even if the cyclone has had an international name assigned to it . The names of significant tropical cyclones are retired , by both PAGASA and the Typhoon Committee . Should the list of names for the Philippine region be exhausted then names will be taken from an auxiliary list of which the first ten are published each season . Unused names are marked in gray . + + = = = International names = = = + + During the season 21 named tropical cyclones developed in the Western Pacific and were named by the Japan Meteorological Agency , when it was determined that they had become tropical storms . These names were contributed to a list of a 140 names submitted by the fourteen members nations and territories of the ESCAP / WMO Typhoon Committee . + + = = = Philippines = = = + + The Philippine Atmospheric , Geophysical and Astronomical Services Administration uses its own naming scheme for tropical cyclones in their area of responsibility . PAGASA assigns names to tropical depressions that form within their area of responsibility and any tropical cyclone that might move into their area of responsibility . Should the list of names for a given year prove to be insufficient , names are taken from an auxiliary list , the first 10 of which are published each year before the season starts . The names not retired from this list will be used again in the 2007 season . Names that were not assigned are marked in gray . + + = = = Retirement = = = + + The names Imbudo and Maemi were retired by the ESCAP / WMO Typhoon Committee . The names Molave and Mujigae were chosen to replace Imbudo and Maemi respectively . While Yanyan was requested by Hong Kong to be removed in the list , and was replaced by Dolphin . The Philippine Atmospheric , Geophysical and Astronomical Services Administration ( PAGASA ) announced that the name Harurot had its name retired due to extensive damage . The name Hanna was chosen to replace Harurot . Also , the name " Koni " was replaced by " Goni " , after it was found that Koni was a misspelling . + + = = Storm effects = = + + The following table provides basic meteorological and impact information for each tropical cyclone from the 2003 Pacific typhoon season in tabular format ; unnamed tropical cyclones are not included . PAGASA names for storms are provided in parentheses . Storms entering from the Central Pacific only include their information while in the western Pacific , and are noted with an asterisk * . + + + = Oxaziridine = + + An oxaziridine is an organic molecule that features a three @-@ membered heterocycle containing oxygen , nitrogen , and carbon . In their largest application , oxazidines are intermediates in the industrial production of hydrazine . Oxaziridine derivatives are also used as specialized reagents in organic chemistry for a variety of oxidations , including alpha hydroxylation of enolates , epoxidation and aziridination of olefins , and other heteroatom transfer reactions . Oxaziridines also serve as precursors to amides and participate in [ 3 + 2 ] cycloadditions with various heterocumulenes to form substituted five @-@ membered heterocycles . Chiral oxaziridine derivatives effect asymmetric oxygen transfer to prochiral enolates as well as other substrates . Some oxaziridines also have the property of a high barrier to inversion of the nitrogen , allowing for the possibility of chirality at the nitrogen center . + + = = History = = + + Oxaziridine derivatives were first reported in the mid @-@ 1950s by Emmons and subsequently by Krimm and Horner and Jürgens . Whereas oxygen and nitrogen typically act as nucleophiles due to their high electronegativity , oxaziridines allow for electrophilic transfer of both heteroatoms . This unusual reactivity is due to the presence of the highly strained three membered ring and the relatively weak N @-@ O bond . Nucleophiles tend to attack at the aziridine nitrogen when the nitrogen substituent is small ( R1 = H ) , and at the oxygen atom when the nitrogen substituent has greater steric bulk . The unusual electronics of the oxaziridine system may be exploited to perform a number of oxygen and nitrogen transfer reactions including , but not limited to : α @-@ hydroxylation of enolates , epoxidation of alkenes , selective oxidation of sulfides and selenides , amination of N @-@ nucleophiles and N @-@ acylamidation . + The Peroxide process for the industrial production of hydrazine through the oxidation of ammonia with hydrogen peroxide in the presence of ketones was developed in the early 1970s . + Chiral camphorsulfonyloxaziridines proved useful in the syntheses of complex natural product , such as taxol which is marketed as a chemotherapy agent . Both the Holton Taxol total synthesis and the Wender Taxol total synthesis feature asymmetric α @-@ hydroxylation with camphorsulfonyloxaziridine . + + = = Synthesis = = + + + = = = N @-@ H , N @-@ Alkyl , N @-@ Aryloxaziridines = = = + + The two main approaches to synthesis of N @-@ H , N @-@ alkyl , and N @-@ aryloxaziridines are oxidation of imines with peracids ( A ) and amination of carbonyls ( B ) . + Additionally , oxidation of chiral imines and oxidation of imines with chiral peracids may yield enantiopure oxaziridines . Some oxaziridines have the unique property of configurationally stable nitrogen atoms at room temperature due to an inversion barrier of 24 to 31 kcal / mol . Enantiopure oxaziridines where stereochemistry is entirely due to configurationally stable nitrogen are reported . + + = = = N @-@ Sulfonyloxaziridines = = = + + In the late 1970s and early 1980s Franklin A. Davis synthesized the first N @-@ sulfonyloxaziridines , which act exclusively as oxygen transfer reagents , and are the most predominantly used class of oxaziridines today . While originally synthesized with mCPBA and the phase transfer catalyst benzyltrimethylammonium chloride , an improved synthesis using oxone as the oxidant is now most prevalent . + Many N @-@ sulfonyloxaziridines are used today , each with slightly different properties and reactivity . These reagents are summarized in the table below . + + = = = Perfluorinated oxaziridines = = = + + With highly electron withdrawing perfluoroalkyl substituents , oxaziridines exhibit reactivity more similar to that of dioxiranes than typical oxaziridines . Notably , perfluoroalkyloxaziridines hydroxylate certain C @-@ H bonds with high selectivity . Perfluorinated oxaziridines may be synthesized by subjecting a perfluorinated imine to perfluoromethyl fluorocarbonyl peroxide and a metal fluoride to act as an HF scavenger . + + = = Reactions of oxaziridines = = + + + = = = Hydrazine production = = = + + Oxaziridines are intermediates in the Peroxide process for the production of hydrazine . Many millions of kilograms of hydrazine are produced annually by this method that involves a step wherein ammonia is oxidized in the presence of methyl ethyl ketone to give the oxaziridine : + Me ( Et ) C = O + NH3 + H2O2 → Me ( Et ) CONH + H2O + In subsequent steps the oxaziridine is converted to the hydrazone , which is the immediate en route to hydrazine : + Me ( Et ) CONH + NH3 → Me ( Et ) C = NNH2 + H2O + + = = = Oxygen transfer = = = + + + = = = = α @-@ Hydroxylation of enolates = = = = + + α @-@ Hydroxyketones , or acyloins , are an important synthetic motifs present in many natural products. α @-@ Hydroxyketones have been synthesized in many ways , including reduction of α @-@ diketones , substitution of a hydroxyl for a leaving group and direct oxidation of an enolate . Oxodiperoxymolybdenum ( pyridine ) - ( hexamethylphosphoric triamide ) ( MoOPH ) and N @-@ sulfonyloxaziridines are the most common electrophilic sources of oxygen implemented in this process . One advantage of using N @-@ sulfonyloxaziridines is that higher chiral induction is almost invariably observed relative to MoOPH and other oxidants . High yield ( 77 @-@ 91 % ) and dr ( 95 : 5 - 99 : 1 ) are reported for α @-@ hydroxylation with the Evans ' chiral auxiliary with N @-@ sulfonyloxaziridine as the electrophile . Chiral induction has been demonstrated with many other chiral ketones and ketones with chiral auxiliaries , including SAMP and RAMP . + Extensive work has been reported on asymmetric hydroxylation of prochiral enolates with camphorsulfonyloxaziridine derivatives , achieving moderate to high enantiomeric excess . The commonly accepted proposed transition state that justifies this stereochemical outcome involves an open transition state where the steric bulk of R1 determines the face of approach . + The selectivity of some hydroxylations may be drastically improved in some cases with the addition of coordinating groups alpha to the oxaziridine ring as oxaziridines 3b and 3c in the table above . In these instances it is proposed that the reaction proceeds through a closed transition state where the metal oxyanion is stabilized by chelation from the sulfate and coordinating groups on the camphor skeleton . + α @-@ Hydroxylation with oxaziridines has been widely implemented in total synthesis . It is a key step in both the Holton Taxol total synthesis and the Wender Taxol total synthesis . Additionally , Forsyth implemented the transformation in his synthesis of the C3 @-@ C14 ( Substituted 1 @,@ 7 @-@ Dioxaspiro [ 5 @.@ 5 ] undec @-@ 3 @-@ ene ) System of Okadaic acid . + + = = = = Epoxidation of alkenes = = = = + + Epoxidation of alkenes is a common reaction because epoxides can be derivatized in a number of useful ways . Classically , laboratory epoxidation is carried out with mCPBA or other peracids . Oxaziridines have been found to be useful for the formation of highly acid sensitive epoxides . ( − ) -Chaetominine was synthesized via oxaziridine epoxidation as a late stage transformation as seen below . + Another transformation of high synthetic utility is asymmetric epoxidation . A number of asymmetric epoxidations exist : the Sharpless epoxidation , the Jacobsen @-@ Katsuki epoxidation , and the Juliá @-@ Colonna Epoxidation . These methods require specific functionality in order to achieve selectivity . The Sharpless epoxidation is specific to allylic alcohols , the Jacobsen epoxidation requires cis @-@ disubstituted aryl alkenes , and the Juliá epoxidation requires α @-@ β unsaturated ketones . Chiral oxaziridines act stereospecifically on many unfunctionalized alkenes . It has even possible to effect stereospecific epoxidation catalytically in the oxaziridine chiral unit . Further investigation into these reactions may be required before levels of enantiometic excess become practical for large scale synthesis . Lusinichi et al. have investigated asymmetric epoxidation with a chiral oxaziridinium salt using oxone as the stoichiometric oxidant seen below . + + = = = = Hydroxylation of unactivated hydrocarbons = = = = + + Perfluorinated oxaziridines are known to hydroxylate unactivated hydrocarbons with remarkable regio , and diastereospecificity . This is a highly coveted transformation , and similar reactivity and specificity is seldom rivaled , especially considering the nonmetallic nature of the oxidant . Perfluorinated oxaziridines show high selectivity toward tertiary hydrogens . Hydroxylation of primary carbons and dihydroxylation of a compound with two oxidizable sites have never been observed . Retention of stereochemistry is very high , often 95 - 98 % . ( retenton of stereochemistry may be further enhanced by the addition of a fluoride salt ) . + + = = = Nitrogen transfer = = = + + Oxaziridines with unsubstituted or acylated nitrogens are capable of nitrogen atom transfer , although this reactivity has received considerably less attention . + + = = = = Amination of N @-@ nucleophiles = = = = + + Amination of nucleophiles with N @-@ unsubstituted oxaziridines is quite versatile in the breadth of possible nucleophiles and corresponding products . Hydrazines may be derived from the amination of secondary or tertiary amines , hydroxylamine and thiohydroxamines may be formed from their corresponding alcohols and thiols , sulfimides may be formed from thioethers and α @-@ aminoketones may be formed by attack of corresponding enolates . + + = = = = N @-@ acylamidation = = = = + + The transfer of acylated amines is more difficult than that of unsubstituted amines , although , unlike amine transfer by oxaziridines , there are no alternative methods that directly transfer acylated amines . Acylamine transfer has primarily been performed using amines and hydrazines as nucleophiles . Very few transfers of acylated nitrogens to carbon nucleophiles have been successfully performed , although some do exist in the literature . + + = = = Rearrangements = = = + + Oxaziridines have been found to undergo rearrangement reactions via a radical mechanism when irradiated with UV light or in the presence of a single electron transfer reagent such as CuI. spirocylic oxaziridines undergo ring expansions to the corresponding lactam . Interestingly , the migrating substituent is determined by a stereoelectronic effect where the group trans to the lone pair on the nitrogen will always be the predominant migration product . In light of this effect , it is possible to take advantage of the chiral nitrogen due to high inversion barrier to direct the rearrangement . This phenomenon is demonstrated by observed selectivities in the rearrangements below . In the rearrangement on the left the thermodynamically unfavorable product is observed exclusively , while in the reaction on the right the product derived from the less stable radical intermediate is favored . + Aubé takes advantage of this rearrangement as the key step in his synthesis of ( + ) -yohimbine , a natural medicine classified by the NIH as possibly effective in the treatment of erectile dysfunction and the sexual problems caused by selective serotonin reuptake inhibitors . + It is also notable that oxaziridines will thermally rearrange to nitrones . Cis @-@ trans selectivity of the resulting nitrone is poor , however , yields are good to excellent . It is thought that some oxaziridines racemize over time through a nitrone intermediate . + + = = = Cycloaddions with heterocumulenes = = = + + Oxaziridines undergo cycloaddition reactions with heterocumulenes to afford a number of unique five membered heterocycles , as depicted in the figure below . This reactivity is due to the strained three membered ring and weak N @-@ O bond . + + + = Battle of Dürenstein = + + The Battle of Dürenstein ( also known as the Battle of Dürrenstein , Battle of Dürnstein and Battle of Diernstein ; German : Gefecht bei Dürrenstein ) , on 11 November 1805 was an engagement in the Napoleonic Wars during the War of the Third Coalition . Dürenstein ( modern Dürnstein ) is located in the Wachau Valley , on the River Danube , 73 kilometers ( 45 mi ) upstream from Vienna , Austria . The river makes a crescent @-@ shaped curve between Dürnstein and nearby Krems an der Donau and the battle was fought in the flood plain between the river and the mountains . + At Dürenstein a combined force of Russian and Austrian troops trapped a French division commanded by Théodore Maxime Gazan . The French division was part of the newly created VIII Corps , the so @-@ called Corps Mortier , under command of Édouard Mortier . In pursuing the Austrian retreat from Bavaria , Mortier had over @-@ extended his three divisions along the north bank of the Danube . Mikhail Illarionovich Kutuzov , commander of the Coalition force , enticed Mortier to send Gazan 's division into a trap and French troops were caught in a valley between two Russian columns . They were rescued by the timely arrival of a second division , under command of Pierre Dupont de l 'Étang . The battle extended well into the night . Both sides claimed victory . The French lost more than a third of their participants , and Gazan 's division experienced over 40 percent losses . The Austrians and Russians also had heavy losses--close to 16 percent--but perhaps the most significant was the death in action of Johann Heinrich von Schmitt , one of Austria 's most capable chiefs of staff . + The battle was fought three weeks after the Austrian capitulation at Ulm and three weeks before the Russo @-@ Austrian defeat at the Battle of Austerlitz . After Austerlitz Austria withdrew from the war . The French demanded a high indemnity and Francis II abdicated as Holy Roman Emperor , releasing the German states from their allegiance to the Holy Roman Empire . + + = = Background = = + + In a series of conflicts from 1803 @-@ 15 known as the Napoleonic Wars , various European powers formed five coalitions against the First French Empire . Like the wars sparked by the French Revolution ( 1789 ) , these further revolutionized the formation , organization and training of European armies and led to an unprecedented militarization , mainly due to mass conscription . Under the leadership of Napoleon , French power rose quickly as the Grande Armée conquered most of Europe , and collapsed rapidly after the disastrous invasion of Russia in 1812 . Napoleon 's empire ultimately suffered complete military defeat in the 1813 – 14 campaigns , resulting in the restoration of the Bourbon monarchy in France . Although Napoleon made a spectacular return in 1815 , known as the Hundred Days , his defeat at the Battle of Waterloo , the pursuit of his army and himself , his abdication and banishment to the Island of Saint Helena concluded the Napoleonic Wars . + + = = Danube campaign = = + + From 1803 @-@ 06 the Third Coalition fought the First French Empire and its client states ( see table at right ) . Although several naval battles determined control of the seas , the outcome of the war was decided on the continent , predominantly in two major land operations in the Danube valley : the Ulm campaign in the upper Danube and the Vienna campaign , in the middle Danube valley . + Political conflicts in Vienna delayed Austria 's entry into the Third Coalition until 1805 . After hostilities of the War of the Second Coalition ended in 1801 , Archduke Charles--the emperor 's brother--took advantage of the subsequent years of peace to develop a military restructuring plan . He carefully put this plan into effect beginning in 1803 – 04 , but implementation was incomplete in 1805 when Karl Mack , Lieutenant Field Marshal and Quartermaster @-@ General of the Army , implemented his own restructuring . Mack bypassed Charles ' methodical approach . Occurring in the field , Mack 's plan also undermined the overall command and organizational structure . Regardless , Mack sent an enthusiastic report to Vienna on the military 's readiness . Furthermore , after misreading Napoleon 's maneuvers in Württemberg , Mack also reported to Vienna on the weakness of French dispositions . His reports convinced the war party advising the emperor , Francis II , to enter the conflict against France , despite Charles ' own advice to the contrary . Responding to the report and rampant anti @-@ French fever in Vienna , Francis dismissed Charles from his post as generalissimo and appointed his Francophobic brother @-@ in @-@ law , Archduke Ferdinand , as commander . + The inexperienced Ferdinand was a poor choice of replacement for the capable Charles , having neither maturity nor aptitude for the assignment . Although Ferdinand retained nominal command , day @-@ to @-@ day decisions were placed in the hands of Mack , equally ill @-@ suited for such an important assignment . When Mack was wounded early in the campaign , he was unable to take full charge of the army . Consequently , command further devolved to Lieutenant Field Marshal Karl Philipp , Prince of Schwarzenberg , an able cavalry officer but inexperienced in the command of such a large army . + + = = = Road to Ulm = = = + + The campaign in the upper Danube valley began in October , with several clashes in Swabia . Near the Bavarian town of Wertingen , 40 kilometers ( 25 mi ) northwest of Augsburg , on 8 October the 1st Regiment of dragoons , part of Murat 's Reserve Cavalry Corps , and grenadiers of Lannes ' V Corps surprised an Austrian force half its size . The Austrians were arrayed in a line and unable to form their defensive squares quickly enough to protect themselves from the 4 @,@ 000 dragoons and 8 @,@ 000 grenadiers . Nearly 3 @,@ 000 Austrians were captured and over 400 were killed or wounded . A day later , at another small town , Günzburg--immediately south of the Danube River--the French 59th Regiment of the Line stormed a bridge over the Danube and , humiliatingly , chased two large Austrian columns toward Ulm . + The campaign was not entirely bad news for Vienna . At Haslach , Johann von Klenau arranged his 25 @,@ 000 infantry and cavalry in a prime defensive position and , on 11 October , the overly confident General of Division Pierre Dupont de l 'Étang attacked Klenau 's force with fewer than 8 @,@ 000 men . The French lost 1 @,@ 500 men killed and wounded . Aside from taking the Imperial Eagles and guidons of the 15th and 17th Dragoons , Klenau 's force also captured 900 men , 11 guns and 18 ammunition wagons . + Klenau 's victory was a singular success . On 14 October Mack sent two columns out of Ulm in preparation for a breakout to the north : one under Johann Sigismund Riesch headed toward Elchingen to secure the bridge there , and the other under Franz von Werneck went north with most of the heavy artillery . Recognizing the opportunity , Marshal Michel Ney hurried the rest of his VI Corps forward to re @-@ establish contact with Dupont , who was still north of the Danube . In a two @-@ pronged attack Ney sent one division to the south of Elchingen on the right bank of the Danube . This division began the assault at Elchingen . At the same time another division crossed the river to the east and moved west against Riesch 's position . After clearing Austrian pickets from a bridge , the French attacked and captured a strategically located abbey at the top of the hill at bayonet point . The Austrian cavalry unsuccessfully tried to fend off the French , but the Austrian infantry broke and ran . In this engagement alone , the Austrians lost more than half their reserve artillery park , 6 @,@ 000 ( out of 8 @,@ 000 total participants ) dead , wounded or captured and four colors . Reisch 's column also failed to destroy the bridges across the Danube . + Napoleon 's lightning campaign exposed the Austrian indecisive command structure and poor supply apparatus . Mack completely misread the French dispositions and scattered his forces ; as the French defeated each unit separately , the surviving Austrians withdrew toward the Ulm fortifications . Napoleon arrived to take personal command of close to 80 @,@ 000 men . At Ulm on 16 October Karl Mack surrendered his encircled army of 20 @,@ 000 infantry and 3 @,@ 273 cavalry . The officers were released on the condition that they not serve against France until formally exchanged for French officers captured by the Austrians , an agreement to which they held . + + = = Prelude to battle = = + + The few Austrian corps not trapped at Ulm withdrew toward Vienna , with the French in close pursuit . A Russian army under Gen. Mikhail Kutuzov also maneuvered away from the French , withdrawing to the east . At the Ill river on 22 October it joined with the retreating Austrian corps commanded by Michael von Kienmayer . On 5 November the Coalition forces held a successful rearguard action in Amstetten . On 7 November the Russians arrived in St. Pölten and crossed the Danube river the next day . Late on 9 November they destroyed the bridges across the Danube , holding the last one at the hamlet of Stein , near the village Krems , until the late afternoon . + + = = = Battlefield = = = + + To the east of Stein , 2 kilometers ( 1 @.@ 2 mi ) down an old road , lay Krems , with its small population of a few hundred , at the confluence of the stream of that name and the Danube . To the west of Stein the Danube made a large curve , creating a crescent @-@ shaped floodplain between it and the mountains . At the far western end of the floodplain , where the mountains came down almost to the river 's edge , was Dürenstein with its castle , known as Schloss Dürenstein . The castle had served as a prison for Richard I of England in 1193 . In 1645 – 46 , during the Thirty Years War , the Swedes had fortified the castle and then demolished it when they withdrew . It stands at 159 meters ( 522 ft ) , on the highest ridge of a mountain fissured with clefts and pinnacles of granite . Because the mountain was sparsely vegetated , it was difficult to distinguish the ruins from the rocks . Narrow canyons cut through the mountain , and widen into the plain below . Between Dürenstein and Stein , on the flood plain , lay the hamlets of Oberloiben and Unterloiben . Near the hamlets , the Loiben flood plain was at its widest , extending at the most 762 meters ( 2 @,@ 500 ft ) from the base of the Loibenberg mountain to the bank of the river . + The region was known for its wine . Since the 15th century the local inhabitants practiced viticulture and the wine producers formed St. Paul Vintners ' Guild in 1447 , the oldest such guild in the German @-@ speaking world . Terraced vineyards extended up the sides of the Krems River until it became a mountain stream and terrain was unsuitable for cultivation . The Loiben plain supported both viticulture and agriculture . As the terrain became steeper , the vines grew in terraces built from the dark Urgestein , primordial rock . From Dürenstein to Krems the river makes its wide curve ; the mountains and the steeply terraced slopes prevent clear line @-@ of @-@ sight between the two towns . + + = = = Dispositions = = = + + Napoleon had calculated that Kutuzov would withdraw toward Vienna , expecting reinforcements from Russia ; he envisioned that the armies would engage in a great battle at Vienna , and that this battle would decide the war . Consequently , Napoleon drew divisions from four of the other seven corps of the Grande Armée to create a new VIII Corps . This corps was to secure the north shore of the Danube , block any of the Austrian or Russian groups from reinforcing one another and , more importantly , prevent Kutuzov from crossing the river and escaping to Russia . + The new VIII Corps , under the overall command of Édouard Mortier , included three infantry divisions and a division of cavalry ( see Order of Battle below ) . Corps Mortier , as it was known , crossed the Danube at Linz and Passau in early November 1805 and marched east , on the north bank of the Danube . Operating independently , the corp 's cavalry conducted reconnaissance ahead of them and on the flanks . Gen. Gazan 's division ( about 6 @,@ 000 men ) took the lead ; Mortier was with them . They were followed by Gen. Dupont 's division ( another 4 @,@ 000 ) about one day 's march behind . Jean @-@ Baptiste Dumonceau 's division ( another 4 @,@ 000 ) , marching another day behind Dupont , brought up the rear . A flotilla of 50 boats acquired at Passau provided communications across the Danube . Before sending Mortier on his mission , Napoleon instructed him to protect his north flank at all times against possible Russian reinforcements , advice he reiterated in subsequent written orders . Napoleon also advised Mortier to secure all crossings of the Danube between Linz and Vienna . + On 9 November Gazan 's division reached Marbach an der Donau and covered the 50 kilometers ( 31 mi ) to Dürenstein by early on the following afternoon . Here it skirmished with some Russian patrols to the east of the town and expelled them . Feeling confident , the French established a forward post just upstream from Stein . In Dürenstein itself Mortier set up his command post and directed the establishment of a small field hospital . Although the position seemed secure , he had ignored Napoleon 's strict instructions and neglected to protect his left ( north ) flank . + This failure was an important factor when Mortier lost his corps ' so @-@ called " eyes " : after he and Gazan had crossed the Danube , the French dragoons had veered to the northwest , leaving only three squadrons of the 4th Dragoons available for reconnaissance . These had left the division and were operating independently of Gazan 's command . Consequently , Mortier and Gazan marched blindly through the narrow canyon west of Dürenstein , not knowing what lay ahead of them . Kutuzov had led the Coalition army across the Danube at Krems , a short distance past Stein , and destroyed the bridge behind him . His actions deprived the French commanders of a possible route across the Danube , putting the deployment of the entire French division at further risk in the case of retreat . In this decision Kutuzov abandoned Vienna to the French , who were converging on the Austrian capital from the north , west and southwest , for the security of uniting with reinforcements from Galicia . Kutuzov chose a military solution over a political one . + Unknown to either Gazan or Mortier , the Coalition had concentrated a force of approximately 24 @,@ 000 men ( mostly Russians and a few Austrians ) within a few kilometers of the French position at Dürenstein . In comparison , Gazan 's division had only 6 @,@ 000 men . The Austro @-@ Russian force was a mixture of infantry , Jägers ( usually deployed as skirmishers ) , Russian musketeers and Russian and Austrian cavalry , accompanied by more than 68 artillery pieces . Kutuzov , who had learned the military arts under the tutelage of the legendary Russian Generalissimo Suvorov , had overall command . The Russian cavalry , units of the greatly feared Cossacks , were well @-@ suited for patrolling the river bank ; indeed , on 9 November they had taken 40 French soldiers as prisoners . Furthermore , reinforcements stood in Moravia , less than two weeks ' march away . If the main body of the French army crossed the river , they would require time to prepare . Kutuzov would have ample warning of any large @-@ scale French movement . + After the afternoon 's initial skirmishing with the French , Kutuzov held a council of war on the evening of 10 November at Melk , at the great abbey there . He knew several things . First , he knew the positions of the French from prisoners his Cossacks had captured . He also knew that Gazan had crossed at Linz and was well ahead of any French reinforcements : Dupont had crossed at Passau and , by 10 November , stood at Marbach , 50 kilometers ( 31 mi ) upstream , and Dumonceau was another 7 kilometers ( 4 mi ) further behind him . Kutuzov knew the size of the French force--its division strength--and its positions , and he knew that most of the dragoons were not covering the French flank but had turned north . He also knew , or had made a good supposition , about Napoleon 's orders , so he knew what to offer Mortier and Gazan as bait . + + = = = Battle plan = = = + + In addition to the Russian generals , the council included Austrian commanders Lieutenant Field Marshal Johann Heinrich von Schmitt and Friedrich Karl Wilhelm , Fürst zu Hohenlohe . Schmitt , who had retired from the military in 1800 , had been recalled into service after the Ulm debacle and had come to Kutuzov highly recommended by the Emperor . He was an experienced tactician and strategist and had served in a variety of posts in the Habsburg military ; he had been Archduke Charles ' trusted adviser during the campaigns from 1796 to 1800 and had assisted in planning several of Charles ' victories . Upon his recall , Schmitt was appointed Chief of the Quartermaster General Staff of the Coalition Army . The generals had found among the Austrian force one Capt. Christoph Freiherr von Stiebar ( 1753 – 1824 ) , who had knowledge of the local geography . + Together , Schmitt , Kutuzov and the other generals , with von Stiebar 's advice on the local terrain , concocted a plan to encircle the French at Dürenstein . Russian commander Mikhail Andreyevich Miloradovich would approach Gazan 's division from the east , supported by Petr Bagration 's corps , and pin the French in place . Three additional columns , commanded by Dmitry Dokhturov ( Doctorov ) , Maj. Gen. Strik and Schmitt , would outflank the French from the west and the north . They would offer , as bait , a rumor : the Russian army was retreating into Moravia and only a rearguard would be left at Krems . + + = = Battle = = + + On the night of 10 – 11 November a Russian column under Strik 's command began its passage through the narrow canyons , intent on arriving at Dürenstein by noon ; two more columns , under Dokhtorov and Schmitt , moved in wider semicircles , planning to pass through the mountains and attack the French , who were extended along the river bank . According to the plan , in late morning Strik 's column would emerge from the mountains first and launch a flanking assault on the French right . This flanking attack , combined with Miloradovich 's frontal assault from Stein , would force the French into a vise ; encircled , they would have no option but to surrender--or die . To ensure the success of the plan , the second and third columns , under Dokhtorov and Schmitt , would arrive in early and mid @-@ afternoon and support the earlier assaults . In this way , even if the French tried to retreat west to Marbach , they would not escape the vise @-@ like grip of the Coalition army . + Mortier accepted the bait of a rumored Russian retreat . In the early morning of 11 November he and Gazan departed from Dürenstein to seize Stein and Krems , presuming the Russians had either abandoned the settlements or left only a small rear @-@ guard behind . As they approached Stein , a column of Miloradovich 's troops attacked the French forward positions . Thinking this force was the rumored Russian rear guard , Mortier ordered Gen. Gazan to counterattack and push east towards the town of Stein . Fighting spread though the villages of Oberloiben , Unterloiben and the farm at Rothenhof . Instead of withdrawing , as a rear guard would , more and more Russian troops appeared and engaged the French column . + Initially Gazan made rapid progress , but he quickly recognized that the opposing force was much stronger than the typical rear guard of a retreating army . Realizing he had been duped and that Gazan 's troops were tiring rapidly , Mortier sent orders to Dupont 's division to hurry forward . By mid @-@ morning the French momentum had stalled ; Mortier committed most of his remaining forces to driving Miloradovich back , leaving a single battalion--perhaps 300 troops--to cover his northern flank , and sent the rest to attack the Russian right . Within 30 minutes he achieved the superiority of numbers he sought . His 4 @,@ 500 French opposed 2 @,@ 600 Russians and forced them back toward Stein while pressing an attack along the river . Miloradovich had no option , for neither Strik 's nor Dokhtorov 's flanking columns were to be seen . + At this stage of the battle fighting paused . Mortier and Gazan waited for Dupont 's arrival while Kutuzov and Miloradovich waited for Strik 's and Dokhturov 's . Schmitt 's column was expected to be the last to join the fight because it had to march the greatest distance . The timing of the respite varies , depending on whose reports are consulted : fighting paused at around 12 : 00 or 14 : 00 . Strik arrived first and immediately assaulted Gazan 's line with three battalions , pushing the French out of Dürenstein . Caught between two strong forces , Gazan attempted to push his way back through Dürenstein , to reach the river where the flotilla could evacuate his exhausted troops . Withdrawing through the narrow Danube canyon and fighting off the Russian force at their rear , Gazan and his division were trapped when more of Strik 's Russians appeared to block their retreat . The narrow defiles hampered the Russians ; Strik 's men had to march out of the canyons , form ranks and attack in waves . Despite Strik 's continuous assault in the next two to three hours , Mortier and Gazan pushed the Russians back up the narrow fissure in the hillside . At this point , Dokhturov 's column appeared behind the French line and joined the battle . The French were outnumbered more than three to one , assaulted in the front by Miloradovich 's column , in the middle by Strik 's and in the rear by Dokhturov . + Earlier in the morning Dupont had proceeded with his column south and east along the river , from Marbach , according to instructions . Even before the arrival of Mortier 's courier , he heard the sound of artillery in the distance and sent riders ahead to discover the cause . They came back to report that a Russian column ( Dokhturov 's ) was descending from the mountains to take the road to Dürenstein . Realizing this would separate him from the forward division , Dupont hustled his troops toward the sound of battle and deployed them to take the Russians in the flank . The French assault , heralded by cannon fire , caused Dokhturov 's troops to turn their attention from Gazan 's beleaguered force to face these new assailants . Although superior in numbers , Dokhturov 's column had no supporting artillery , and the narrow space prevented them from taking advantage of their size . It was Dokhturov 's turn to face attackers at his front and rear , until the arrival of Schmitt 's column , which had wended its way through the mountains in the west . + Schmitt arrived at dusk , and the action continued well after dark ; in mid @-@ November night falls at close to 17 : 00 in the upper Danube climes . Despite the darkness , Schmitt descended out of the defiles and deployed his troops to assail Dupont 's flank . As his Russians entered the fray , they came between a battalion of French and another of Russians . With the additional force , the French were overwhelmed , but most of the shooting subsided when the combatants could not tell apart friend from foe in the dark . Under the cover of darkness , Mortier used the French flotilla to evacuate his exhausted troops to the south bank . The French and Russians continued to skirmish fitfully into the night as sentries encountered one another in the dark . Portions of Gazan 's force provided any necessary rear guard action , and the following morning the remaining men were evacuated from the north shore of the Danube , while they maintained possession of only Spitz and Weissenkirchen on the north bank . + + = = = Losses = = = + + The losses were staggering : Gazan lost close to 40 percent of his division to death and wounds . Aside from losing five guns , 47 officers and 895 men under his command were captured , bringing the loss of effectives closer to 60 percent ; furthermore , he lost the eagles of the 4th Infantry Regiment ( France ) and the eagle and guidon of the 4th Dragoons . The Russians lost around 4 @,@ 000 , about 16 percent of their force , and two regimental colors . The Austrian Lieutenant Field Marshal Schmitt was killed as the battle concluded , probably by Russian musketry in the confused melee . The vineyards and the villages of Ober- and Unterloiben were destroyed , as was most of Dürenstein and Stein . Krems was heavily damaged ; the French plundered the town at least twice , and " barbarously handled " its inhabitants . + + = = Aftermath = = + + Both sides claimed victory . Although losses were fairly equal in terms of numbers--4,000 wounded or dead on each side--the Coalition forces went into battle with 24 @,@ 000 men while the French started with Gazan 's division of about 6 @,@ 000 , which grew close to 8 @,@ 000 when Dupont 's men joined the fighting in the afternoon . Regardless , Gazan 's division was nearly destroyed ; the 30 percent losses experienced by the French fell predominantly on his division . Clearly for both sides , the fighting was hard . The weather had been cold ; an early storm had left slick icy mud in the roadways , and icicles " like chandeliers " hung from the trees . + For the Coalition , the Russians were secure on the north bank of the Danube , awaiting reinforcements from Galicia ; the bridges between Linz and Vienna had been destroyed , making French access to the Austrian capital more difficult , but not impossible . After six months of fighting in which the Austrians had enjoyed little good news , the Coalition could claim a difficult and timely victory . The French had retreated from the field with a badly mauled division and Kutuzov had secured the right flank . Indeed , Francis was so pleased with the outcome at Dürenstein that he awarded Kutuzov the Military Order of Maria Theresa . + For the French , the survival of the Corps Mortier seemed nothing short of a miracle . The remainder of Gazan 's division crossed the river the next morning and eventually recuperated in Vienna , which the French acquired by deception later in the month . More importantly for them , the French force had performed well over difficult terrain and under terrible combat conditions . Initially there had been some panic and parts of at least one French battalion had tried to escape on the flotilla craft . They had lost control of the boats in the current and smashed into the pillars of the burned bridge at Krems , overturning their boats . Tossed into the icy river , most had drowned . Despite this initial panic , Gazan 's column retained its cohesion , and responded well to various difficult demands . Dupont had demonstrated his tactical acumen : when he heard cannon fire , he directed his troops toward it to support the French division . In terms of French staffing , Mortier 's failure to guard his flank , especially in the face of Napoleon 's direct advice , adversely influenced his relationship with his commander . However , in the immediate weeks ahead , the flamboyant Murat did more to annoy Napoleon than Mortier had . In assessing the battle and its aftermath , historians have laid the blame and credit for its outcome not only on Mortier and Gazan : " Napoleon , aware of Mortier 's danger and his own culpability for it , vented his frustration on Murat , whom he unjustly accused of abandoning Mortier for the empty glory of riding through Vienna . " + After the victory at Austerlitz , Napoleon dispersed the VIII Corps and reassigned Mortier . However disappointed he may have been with Mortier , Napoleon was pleased with Gazan 's performance . As recognition of his conduct in what the French called " the immortal Battle of Dürenstein " , Gazan received the Officer 's Grand Cross of the Legion of Honor . + The loss of Schmitt was a significant blow to the Austrian military organization . Called out of retirement for this specific task , he was one of their most experienced general staff officers , other than the Archduke Charles . From the summer of 1796 until his retirement in 1800 he had been Chief of the Quartermaster General Staff of the Army , the Lower Rhine , the Rhine and the Army of Germany . Furthermore , he was a trusted member of Archduke Charles ' staff . He had helped to design several of Charles ' more important victories at Emmendingen , Schliengen , the sieges at Kehl and Hünigen , the battles at Ostrach and Stockach , and the northern Swiss Campaign of 1799 that included battles at Winterthur and Zürich . An experienced officer and excellent tactician , he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the Battle of Austerlitz than his eventual replacement , Franz von Weyrother . In Schmitt 's absence Weyrother , the architect of the Austrian catastrophe at Hohenlinden in 1800 , was chosen to develop the general battle plan of Coalition action at Austerlitz . Schmitt , undoubtedly a far better tactician than Weyrother , and possessed of superior training and mapping skills , would have developed a more realistic Coalition plan for Austerlitz . Schmitt 's presence would probably not have been enough to turn that defeat into a victory , but it would have mitigated the magnitude of the Coalition 's losses ; Austerlitz was considered one of Napoleon 's finest triumphs . + In the broader picture , despite the important major naval engagements , the outcome of the War of the Third Coalition was determined on the Continent , predominantly in the two major land operations . In the Ulm campaign , the Habsburgs achieved some minor victories , such as Klenau 's at Haslach @-@ Jungingen , but ultimately lost an entire army and an officer corps . The latter would not resume arms against France until formally exchanged . This condition crippled the Austrian military leadership and forced the recall of such pensioners as Schmitt out of retirement . After the capitulation at Ulm , isolated portions of the Austrian military evaded capture and joined with their Russian allies ; Michael von Kienmayer 's corps slipped out of the encirclement and joined Kutuzov 's force . A few other small forces refused to capitulate and seemingly melted into the Bavarian mountains and the Thurgingian forests , to reappear in Bohemia for Austerlitz . Sixteen hundred cavalry , including Archduke Ferdinand and Prince Schwarzenberg , broke out of Ulm before its capitulation . Maximilian , Count of Merveldt , led his column back through the mountains into Austria , fighting rear guard actions against pursuing French forces at the Steyer ( Steyr ) and Mariazell . These elusive units were insufficient to balance heavy losses at key battles in which the Austrians could not hold their own against the French . Between the Ulm capitulation and the Austrian and Russian defeat at Austerlitz , there were other minor achievements : a successful skirmish between the cavalry that escaped from Ulm and the French near the town of Nördlingen , the contested victory at Dürenstein , and another within days at Schöngrabern . + The second determining event , the decisive French victory at the Battle of Austerlitz over the combined Russian and Austrian armies , forced the Austrian withdrawal from the Coalition . The subsequent Peace of Pressburg , signed on 26 December 1805 , reinforced the earlier treaties of Campo Formio and Lunéville . Furthermore , Austria ceded land to Napoleon 's German allies , and paid an indemnity of 40 million francs . Victory at Austerlitz also gave Napoleon the latitude to create a buffer zone of German states between France and the states of Prussia , Russia , and Austria . These measures did not establish a lasting peace on the continent . Prussian worries about growing French influence in Central Europe sparked the War of the Fourth Coalition in 1806 , in which Austria did not participate . + + = = Battlefield commemorations = = + + Until 1805 , Dürenstein was probably best known as the village in which crusader Richard the Lionheart was held by Leopold V , Duke of Austria . In 1741 , during the War of the Austrian Succession , several hundred local villagers had held off the French and Bavarian armies , intent on capturing Vienna , by painting drain pipes to look like cannons , and beating on drums , thus suggesting the presence of a large force . + After 1805 , the exploits of 40 @,@ 000 French , Russian , and Austrian soldiers excited the European imagination . General Schmitt 's grave has never been found , but in 1811 a monument for him was erected at the Stein Tor , the gate leading from the old village of Krems to the hamlet of Stein . The house in which Captain von Stiebar lived was marked with a bronze plate commemorating his contribution to the battle . In 1840 , a Spanish lithographer created an image of the battle , which was later expanded by English lithographer John Outhwaite . The image depicts the evacuation of French troops via the Danube flotilla ( see Infobox image ) on a moonlit night . In fact , the moon was in its last quarter phase 48 hours later , and on 11 November probably did not provide as much light as depicted in the image . + In 1836 , Jean Antoine Siméon Fort ( French , 1793 – 1861 ) , a historical painter , created a watercolor of the battle , Combat de Dürnstein le 11 novembre 1805 ( ( English ) Battle of Dürenstein of 11 November 1805 ) , which is in the Trianon collection at Versailles . + In the Russian novel War and Peace , Leo Tolstoy devoted several pages to the battle , its prelude , and its aftermath , and the delivery of its news to the Tsar by Prince Andrew . Between Dürenstein and Rossatz , at the edge of the Loiben plain , stands the " Little Frenchman " memorial ( see image ) erected in 1905 to commemorate the battle ; it bears the names of Mortier , Gazan , Kutuzov , Schmitt , and others on a copper @-@ engraved plate . + + = = Orders of battle = = + + + = = = French VIII . Corps ( Corps Mortier ) = = = + + On 6 November , Édouard Adolphe Mortier commanded the following forces : + 1st Division under command of Pierre Dupont de l 'Étang ( formerly 1st Division of VI . Corps ) , six battalions , three squadrons , and three guns , most of which were involved in the fighting after mid @-@ day . + 2nd Division under command of Honoré Théodore Maxime Gazan de la Peyrière ( formerly 2nd Division of the V. Corps ) , nine battalions , three squadrons , three guns . + 3rd Division under command of Jean @-@ Baptiste Dumonceau ( Batavian Division , formerly 3rd Division of the II . Corps ) . The 3rd Division was not involved in the fighting . + Dragoon Division under command of Louis Klein . Klein 's division included the 1st , 2nd , 4th , and 14th Regiments of Dragoons . They were not involved in the fighting . + Danube fleet of fifty boats , under the command of Frigate Captain Lostange . + Total : fifteen battalions , six squadrons , six guns , approximately 12 @,@ 000 men , not all of which were involved in the fighting . + + = = = Coalition columns = = = + + First Column , commanded by General of Brigade Prince Pyotr Ivanovich Bagration , included three battalions of infantry , three grenadier battalions , and three Jäger battalions , ten squadrons of Hussars . + Second Column , Lieutenant General Essen , included six battalions of infantry , three battalions of grenadiers , and five squadrons of Hussars . + Third Column , commanded by Lieutenant General Dokhturov , including six battalions of infantry , one battalion from the 8th Jäger regiment , and ten squadrons of the Hussar Regiment Mariupol . + Fourth Column , commanded by Lieutenant General Schepelev , nine battalions of infantry . + Fifth Column , Lieutenant General Freiherr von Maltitz , nine battalions of infantry . + Sixth Column , Lieutenant General Freiherr von Rosen , with six battalions of Infantry and ten squadrons of cavalry . The Sixth Column did not take part in the fighting . + Austrian Infantry Brigade , Major General Johann Nepomuk von Nostitz @-@ Rieneck , four battalions of Border Infantry , including the highly decorated 9th Regiment Peterwardeiner . + Austrian Cavalry Division , Lieutenant Field Marshal Friedrich Karl Wilhelm , Fürst zu Hohenlohe , twenty @-@ two squadrons of cavalry . + Total : fifty @-@ eight battalions , sixty @-@ two squadrons , fourteen artillery batteries , approximately 24 @,@ 000 men and 168 guns . + + + = Brock Lesnar = + + Brock Edward Lesnar / ˈlɛznər / ( born July 12 , 1977 ) is an American Canadian professional wrestler , mixed martial artist , and former amateur wrestler and professional American football player . He is currently signed to WWE on the Raw brand . He is a four @-@ time WWE ( World Heavyweight ) Champion , a former UFC Heavyweight Champion , and an NCAA Division I Heavyweight Wrestling Champion . He is also a one @-@ time IWGP Heavyweight Champion , making him a five @-@ time world champion in professional wrestling . As of July 14 , 2016 , he is # 8 in official UFC heavyweight rankings . + After his successful amateur wrestling career at Bismarck State College and the University of Minnesota ( 106 wins and 5 losses ) , Lesnar signed with WWE ( then the World Wrestling Federation ) in 2000 . He was assigned to its developmental promotion Ohio Valley Wrestling ( OVW ) , where he was a three @-@ time OVW Southern Tag Team Champion with Shelton Benjamin . After debuting on WWE 's main roster in 2002 , he won the WWE Championship on three separate occasions with victories over The Rock and Kurt Angle ( twice ) . Lesnar won his first WWE Undisputed Championship five months after his main roster debut at the age of 25 , becoming the youngest champion in the title 's history . He was also the 2002 King of the Ring and the 2003 Royal Rumble winner , making him the youngest King of the Ring and Royal Rumble winner as well . Following his match with Goldberg at WrestleMania XX , Lesnar left the WWE and pursued a career in the National Football League ( NFL ) . He was named a defensive tackle for the Minnesota Vikings but was cut prior to the start of the 2004 – 05 season . In 2005 , Lesnar returned to professional wrestling and signed with New Japan Pro Wrestling ( NJPW ) , where he won the IWGP Heavyweight Championship in his first match . After a contractual dispute with NJPW , he also wrestled as IWGP Heavyweight Champion in the Inoki Genome Federation ( IGF ) . + In 2006 , Lesnar pursued a career in mixed martial arts . He signed with Hero 's and won his first fight , against Min @-@ Soo Kim , in June 2007 . He then signed with the Ultimate Fighting Championship ( UFC ) the following October . Lesnar lost in his UFC debut against Frank Mir and then won his second fight against Heath Herring . In November 2008 , Lesnar defeated Randy Couture to become the UFC Heavyweight Champion . Shortly after a successful title defense in a rematch with Mir , Lesnar was sidelined due to diverticulitis . He would return at UFC 116 to defeat Interim UFC Heavyweight Champion Shane Carwin and unify the heavyweight championships , becoming the Undisputed Heavyweight Champion . Lesnar then lost the championship to Cain Velasquez at UFC 121 . In 2011 , he was once again sidelined due to diverticulitis and underwent surgery . Lesnar returned at UFC 141 in December , losing to Alistair Overeem and promptly retiring from MMA . Lesnar was a box office sensation in UFC . He took part in a few of the best selling pay @-@ per @-@ views in UFC history , including UFC 100 and UFC 200 . + In April 2012 , Lesnar once again returned to professional wrestling , rejoining WWE after an eight @-@ year hiatus . Two years later , at WrestleMania XXX , Lesnar defeated The Undertaker to end his undefeated streak at the premier annual event . Lesnar has been managed by Paul Heyman throughout the majority of his professional wrestling career . He has headlined numerous pay @-@ per @-@ view events for both the WWE and UFC , including WrestleMania XIX , WrestleMania 31 , UFC 100 , and UFC 116 . In 2015 , an ESPN.com article referred to Lesnar as " the most accomplished athlete in pro wrestling history " . + + = = Early life = = + + Lesnar was born in Webster , South Dakota , on July 12 , 1977 . He was raised on a Webster dairy farm owned by his parents , Stephanie and Richard Lesnar . He is of German descent . He has two older brothers named Troy and Chad , and a younger sister named Brandi . At age 17 , he joined the National Guard , where he was assigned to an office job after his red @-@ green colorblindness was deemed hazardous to his desire to work with explosives . He lost this job after failing a computer typing test , and later worked for a construction company . + Lesnar attended Webster High School , where he played football and competed in amateur wrestling , placing third in the state championships his senior year . He then attended Bismarck State College , where he won the National Junior College Athletic Association ( NJCAA ) heavyweight wrestling championship in his sophomore year . He transferred to the University of Minnesota on a wrestling scholarship for his junior and senior college years . There , he was roommates with future WWE colleague Shelton Benjamin , who was also his assistant coach . + Lesnar won the 2000 National Collegiate Athletic Association ( NCAA ) Division I heavyweight wrestling championship his senior year after being the runner @-@ up to Stephen Neal the year prior . He finished his amateur career as a two @-@ time NJCAA All @-@ American , the 1998 NJCAA Heavyweight Champion , two @-@ time NCAA All @-@ American , two @-@ time Big Ten Conference Champion , and the 2000 NCAA Heavyweight Champion , with a record of 106 – 5 overall in four years of college . + + = = Professional wrestling career = = + + + = = = World Wrestling Federation / Entertainment = = = + + + = = = = Training and debut ( 2000 – 2002 ) = = = = + + In 2000 , Lesnar signed with the World Wrestling Federation ( WWF ) . He was sent to its developmental territory , Ohio Valley Wrestling . There , Lesnar first met future friend and manager Paul Heyman . He formed a tag team known as " The Minnesota Stretching Crew " with his former college roommate , Shelton Benjamin . Lesnar and Benjamin won the OVW Southern Tag Team Championship on three separate occasions . Lesnar wrestled several dark matches in 2001 and 2002 before being called up to the main roster . + Lesnar debuted on WWF television on the March 18 , 2002 , episode of Raw , coming through the crowd and attacking Al Snow , Maven and Spike Dudley during their match . He was accompanied by Paul Heyman , who was seen giving instructions to Lesnar . When the brand extension was introduced in the WWF , Lesnar was drafted to the Raw brand . Later , Heyman was confirmed to be Lesnar 's agent and gave Lesnar the nickname " The Next Big Thing " . Lesnar 's first feud was with the Hardy Boyz . Lesnar and Jeff Hardy squared off at Backlash in Lesnar 's first official televised match . He won the match by knockout after Hardy was unable to respond to referee Theodore Long . The next night on Raw , Lesnar faced off against Jeff Hardy 's brother , Matt Hardy , and defeated him in the same fashion . + + = = = = WWE Championship reigns ( 2002 – 2004 ) = = = = + + In June 2002 , Lesnar won the King of the Ring tournament , defeating Bubba Ray Dudley in the first round , Booker T in the quarter @-@ finals , Test in the semi @-@ finals , and Rob Van Dam in the finals , earning him a shot at the WWE Undisputed Championship at SummerSlam . On July 22 , Lesnar joined the SmackDown ! brand . After a quick feud with Hollywood Hulk Hogan in August 2002 , Lesnar defeated WWE Undisputed Champion , The Rock at SummerSlam to become the WWE Undisputed Champion and youngest WWE Champion at age 25 , a record previously held by The Rock . He also became the second fastest wrestler to win the WWE Championship since his debut ( 126 days ) behind only Ric Flair ( 113 days ) . At the time , the Undisputed WWE Championship was being defended on both brands , so Raw General Manager Eric Bischoff expected Lesnar to return to Raw the following night . However , SmackDown ! General Manager Stephanie McMahon announced that Lesnar was only required to defend the title on SmackDown ! , forcing Bischoff to institute a new championship for Raw ( the World Heavyweight Championship ) . The WWE Undisputed Championship was then renamed the WWE Championship . + Lesnar 's rapid rise to the top of WWE in 2002 led to a feud with The Undertaker , which involved a match at Unforgiven . The match ended in a double disqualification resulting in Lesnar retaining the title . Lesnar faced The Undertaker again , at No Mercy , this time in a Hell in a Cell match . Leading up to the match , in the storyline , Lesnar broke the Undertaker 's hand with a propane tank . Despite Heyman begging McMahon not to let The Undertaker use his cast as a weapon , the request was denied and the match went on as planned . In a match that saw both wrestlers and even Heyman covered in blood , it ended when Lesnar reversed an attempted Tombstone Piledriver into his finishing F @-@ 5 maneuver for the win . Six days after his Hell in a Cell match with The Undertaker , Lesnar successfully retained his WWE title in a handicap match with Heyman at the Rebellion pay @-@ per @-@ view against Edge . + Lesnar 's next opponent was Big Show . Heyman was convinced more than anyone that Lesnar could not win , trying to talk him out of defending the title . Lesnar refused and faced Big Show in Madison Square Garden at the Survivor Series pay @-@ per @-@ view . Towards the end of the match , Lesnar delivered an F @-@ 5 to Big Show , but when he went for the pin , Heyman pulled the referee out of the ring . This allowed Big Show to capitalize and proceeded to chokeslam Lesnar on a steel chair . Show went on to pin Lesnar and win the title . This loss was Lesnar 's first pinfall loss in WWE and led Lesnar to turn for the first time in his career into a fan favorite . Following Survivor Series , Heyman made it clear that Lesnar would not get a rematch , and had snuck a special clause saying so into his contract . In order to gain his revenge on Big Show and Heyman , Lesnar interfered in his first title defense , which came against Kurt Angle the next month at Armageddon . Lesnar hit the F @-@ 5 on the champion , which enabled Angle to pin him and win the title . On the following episode of SmackDown ! , however , Angle introduced Heyman as his manager and , despite promising Lesnar a title shot earlier in the evening , declared that Lesnar still would not get it . Lesnar was beaten down by Big Show and Angle after the main event , but would get his revenge after the show went off the air . He eventually knocked the Big Show out with a steel chair , leaving Angle alone with Lesnar . Lesnar then chased the champion out of the ring and resumed his assault that culminated when Lesnar used the F @-@ 5 to propel Angle 's right knee into the steel ringpost . As paramedics tended to a screaming Angle , Lesnar finished off the assault with a kneebreaker on the ringside barricade , breaking the champion 's leg in storyline . + With Angle temporarily put out of action , Lesnar 's rivalry with Heyman and the Big Show resumed , which culminated in a match at the Royal Rumble in January 2003 with the winner being placed into the Royal Rumble later in the evening . Lesnar would defeat Big Show and entered the Royal Rumble as the # 29 entry , the second to last competitor to enter the match . He eliminated Matt Hardy and The World 's Greatest Tag Team , which was composed of Charlie Haas and his former OVW teammate , Shelton Benjamin , who were mentored by Angle . Lesnar would then eliminate The Undertaker last and win the Royal Rumble , which guaranteed him a title match at WrestleMania XIX . + After the Royal Rumble , Lesnar and Chris Benoit faced off against Angle , Haas , and Benjamin at No Way Out the following month and Lesnar 's team won the match . During the match at WrestleMania , Lesnar botched a shooting star press , a move he 'd done numerous times in developmental matches , and jammed his head and neck . This stunned Lesnar and forced Angle and Lesnar to improvise the finish of the match . Lesnar would defeat Angle , after delivering an F @-@ 5 , to win his second WWE Championship . Lesnar was diagnosed with a legitimate concussion from the botched shooting star press . + After WrestleMania , Lesnar turned his attention to John Cena , who had returned from injury in February 2003 and who had been F @-@ 5'd into a ringpost in the same manner Angle had been . Cena claimed Lesnar nearly ended his career and even named his new finishing move the " F.U. " as a jab at the new champion . The feud ended in a match at Backlash when Lesnar defeated Cena . On the following episode of SmackDown ! , Lesnar returned to his rivalry with Big Show after he injured Rey Mysterio badly during their match at Backlash . Show 's attack resulted in Mysterio being carried out on a stretcher and back board and Big Show took Mysterio off the stretcher and swung the back board into the ringpost , compounding the injury . Lesnar called out the Big Show , who demanded that Lesnar put his title on the line against him . This led to a stretcher match at Judgment Day for the title . Lesnar successfully retained his title with help from Rey Mysterio and a forklift . During the scripted rivalry , on SmackDown , Lesnar lifted Big Show off the top @-@ rope in a superplex which caused the ring to collapse on impact . + As Lesnar and Big Show continued their rivalry , Kurt Angle returned from his neck surgery and he and Lesnar began to form a more friendly rivalry , as the two were allies yet contenders for the title . At the first ever SmackDown brand @-@ exclusive pay @-@ per @-@ view in July , Vengeance , Lesnar took on Angle and Big Show in a No Disqualification triple threat match for his title , which ended after Angle hit the Angle Slam on both Big Show and Lesnar , pinning the champion to become WWE Champion for a fourth time . + Lesnar continued to aggressively pursue the WWE title despite his friendship with Angle . Mr. McMahon found his way into the angle , at first berating Lesnar , who had involved himself in McMahon 's rivalry with Zach Gowen , for losing to Angle . This all turned out to be a swerve that came into focus on the August 7 , 2003 SmackDown ! in Kelowna , British Columbia . That night , Lesnar and McMahon were to face each other in a steel cage match with Angle as the special guest referee as per McMahon 's orders on the previous week 's program . During the match , Lesnar had passed out due to a staged backstage incident and McMahon was set to pin him , but Angle refused to allow McMahon to win that way . As the two men began to argue , Lesnar rose to his feet , revealing the ruse to the crowd , and F @-@ 5'd Angle . He then brutally beat Angle while McMahon watched , and celebrated with him afterwards , turning heel in the process . At SummerSlam , Lesnar lost to Angle when Angle made Lesnar tap out to the ankle lock . After that , Lesnar would cement his heel turn by brutalizing smaller wrestlers and attacking his rivals on a more consistent basis . He returned to using the F @-@ 5 to propel his opponents ' legs into the ringpost , as he did to Spanky and Gowen , and interfered in Angle 's matches on two separate occasions . On the September 18 , 2003 episode of SmackDown ! , Lesnar received his third shot at Angle in as many months when he faced the champion in a sixty @-@ minute Iron Man match for the title . Lesnar won the match and his third WWE Championship by a final count of five to four . + Lesnar successfully defended his newly won title against the debuting Paul London on October 9 edition of SmackDown ! . He returned to feuding with The Undertaker . Lesnar had previously cost Undertaker the title in a match against then @-@ champion Kurt Angle , which granted him a shot at Lesnar 's title . At No Mercy , Lesnar defeated Undertaker in a Biker Chain match . The rivalry then came to an end after The Undertaker chose to focus on Mr. McMahon . + After Paul Heyman returned to WWE as general manager of SmackDown ! , Lesnar aligned himself with his former manager . With Survivor Series coming up , Lesnar decided to challenge Angle to a traditional Survivor Series elimination tag team match . Lesnar chose Big Show as his first teammate , with Heyman adding a returning Nathan Jones and a debuting Matt Morgan to bring the team number to four . Angle chose Chris Benoit and The APA to join his team . However , Faarooq was injured during a match with Lesnar and Angle 's team was forced to find a replacement for him . Lesnar 's team picked A @-@ Train to fill the fifth and final spot for them after he attacked John Cena , who refused to accept an invitation to join Lesnar 's team . Cena instead joined Angle 's team , and Angle added Hardcore Holly as the fifth member ; Lesnar had injured Holly the year before and he hadn 't wrestled since . In the climax of the match , Chris Benoit became the only second wrestler to make Lesnar tap out . Lesnar faced Benoit in a singles bout two weeks later for the WWE Championship on SmackDown ! , where Lesnar won after Benoit passed out to Lesnar 's debuting Brock Lock submission hold . + The Survivor Series event marked the first time Lesnar met Goldberg from the Raw brand . After Lesnar claimed in a backstage interview that he could beat anybody in the world , Goldberg interrupted the interview and introduced himself to Lesnar , shaking hands with him before leaving with a staredown . Lesnar followed this rivalry with a feud involving Hardcore Holly . In the storyline , Holly wanted revenge on Lesnar for legitimately injuring his neck during a previous match between the two in 2002 which left Holly in need of neck surgery and out of action for a year . At the Royal Rumble in 2004 , Lesnar defeated Holly to retain the WWE Championship . Later in the Royal Rumble match , Lesnar attacked Goldberg and delivered an F @-@ 5 , enabling Kurt Angle to eliminate him . + + = = = = Final storylines and departure ( 2004 ) = = = = + + In February , Lesnar faced Eddie Guerrero for the WWE title at No Way Out . Late in the match , Goldberg delivered a spear to Lesnar while the ref was unconscious . Afterwards , Guerrero went to pin Lesnar but Lesnar kicked out at two . Lesnar then attempted to F @-@ 5 Guerrero but Guerrero reversed it into a DDT . Guerrero then hit a frog splash ; pinning Lesnar to win the WWE Championship . An angry Lesnar then began feuding with Goldberg , blaming him for losing his title , and a match was set up between the two at WrestleMania XX . During the feud with Goldberg , Lesnar was also at odds with Stone Cold Steve Austin , who was shown suggesting to Goldberg that he attack Lesnar at No Way Out . After Lesnar attacked Austin on Raw and stole his four @-@ wheeler , Austin was inserted as the special guest referee for the WrestleMania match . On the March 4 episode of SmackDown , Lesnar defeated Hardcore Holly in his last match on a weekly WWE televised show . Behind the scenes , it was widely known that the match was Goldberg 's last in WWE . Only a week before WrestleMania , rumors surfaced that Lesnar , too , was leaving to pursue a career in the National Football League ( NFL ) . As a result , Lesnar 's match with Goldberg became a fiasco as the fans at Madison Square Garden jeered and heckled both wrestlers vociferously . Goldberg gained victory after delivering a Jackhammer to Lesnar and both men subsequently received Stone Cold Stunners from Austin . + + = = = New Japan Pro Wrestling ( 2005 – 2007 ) = = = + + On October 8 , 2005 , Lesnar won the IWGP Heavyweight Championship on his debut match in a three @-@ way match with Kazuyuki Fujita and Masahiro Chono at a New Japan Pro Wrestling ( NJPW ) show in the Tokyo Dome . Lesnar is one of the few American wrestlers to have held this title . He won the match by pinning Masahiro Chono after an F @-@ 5 , which he had renamed the Verdict since WWE owns the trademark on the F @-@ 5 name . After the match , Lesnar stated that this name was referring to his lawsuit against WWE . + On December 6 , WWE filed a motion for a temporary restraining order to prevent Lesnar from continuing to work with NJPW , but the court did not grant it . Following that , he had two non @-@ title victories against Manabu Nakanishi and Yuji Nagata . Lesnar successfully defended his championship on January 4 , 2006 , against former champion Shinsuke Nakamura . On January 13 , WWE once again filed an injunction against Lesnar to stop him from defending the IWGP Heavyweight Championship which was also not enforced as he went on to retain his championship against former Sumo Wrestling Grand Champion Akebono on March 19 , at the Sumo Hall . Lesnar had another successful title defense against Giant Bernard on May 3 , 2006 . This was the first American vs. American title match in NJPW since Vader vs. Stan Hansen in 1990 . + On July 15 , 2006 , New Japan Pro Wrestling announced Lesnar would not return to defend the IWGP Heavyweight Championship due to " visa issues " and had been stripped of the title . A tournament was held on July 16 to determine the new champion which was won by Hiroshi Tanahashi . Lesnar continued to possess the physical IWGP Championship belt until late June 2007 . + Approximately one year later on June 29 , 2007 , Lesnar defended his IWGP Heavyweight Championship against TNA World Heavyweight Champion Kurt Angle in a champion versus champion match . Inoki Genome Federation promoter Antonio Inoki had stated Lesnar was the " proper " IWGP Heavyweight Champion as he was not defeated for the title . Angle would defeat Lesnar by forcing him to tap out to the Angle lock to win the IWGP Heavyweight Championship as recognized by IGF and Total Nonstop Action Wrestling ( TNA ) . This was Lesnar 's last match as a professional wrestler until 2012 , when he re @-@ signed with WWE . + + = = = = Lawsuit = = = = + + Lesnar had previously signed a non @-@ compete clause in order to be released from his contract with WWE , which prohibited him from working for any other professional wrestling companies before June 2010 . However , he decided to challenge this ruling in court . WWE responded with a counterclaim after Lesnar breached the agreement by appearing at a New Japan Pro Wrestling show in 2004 . In July 2005 , the two sides dropped their claims and entered negotiations to renew their relationship . WWE had offered Lesnar a contract , but on August 2 , 2005 , WWE 's official website reported that Lesnar had withdrawn from any involvement with the company . The lawsuit began to enter settlement talks on September 21 , but did not get solved . + On January 14 , 2006 , Judge Christopher Droney stated that unless WWE gave him a good argument between then and the 25th , he would rule in favor of Lesnar , giving him a summary judgment . This would have enabled Lesnar to work anywhere , immediately . WWE was later granted a deadline postponement . On April 24 , WWE announced on WWE.com that both parties had reached a settlement . On June 12 , a federal judge dismissed the case at the request of both legal parties . + + = = = Return to WWE = = = + + + = = = = Feud with Triple H and ending the Streak ( 2012 – 2014 ) = = = = + + Lesnar returned to the WWE on April 2 , 2012 , on Raw , as a heel by confronting and delivering an F @-@ 5 to John Cena . The following week on Raw , general manager John Laurinaitis revealed that he signed Lesnar to bring " legitimacy " back to the WWE and become the " new face of the WWE " . Laurinaitis also announced that Lesnar would face Cena at Extreme Rules with the Extreme Rules stipulation later added to the match . Lesnar was dominant throughout the match until Cena punched Lesnar in the face with a steel chain wrapped around his fist . Cena then delivered the Attitude Adjustment to Lesnar onto steel steps and Lesnar lost the match . + The following night on Raw , WWE 's Chief Operating Officer Triple H refused to give in to Lesnar 's unreasonable contract demands ( which included being given his own personal jet and having Raw renamed to Monday Night Raw Starring Brock Lesnar ) , resulting in Lesnar attacking him and breaking his arm with a Kimura lock in storyline . The next week on Raw , Paul Heyman made his return as Lesnar 's legal representative and claimed that Lesnar was quitting WWE . He later announced a lawsuit against WWE for breach of contract . At No Way Out in June , Triple H challenged Lesnar , who was not present , to a match at SummerSlam which Lesnar refused . Stephanie McMahon would later goad Heyman into accepting the match on Lesnar 's behalf on July 23 at Raw 1000 . On August 19 , at SummerSlam , Lesnar defeated Triple H in a No Disqualification match via submission after once again breaking his arm in storyline . The following night on Raw , Lesnar declared himself the new " King of Kings " and said that he would depart from WWE after his victory over Triple H , stating that he had conquered everything in the company . + Lesnar returned on the January 28 , 2013 episode of Raw , confronting Vince McMahon who was about to fire Heyman , and Despite Heyman 's pleas , Lesnar hit McMahon with an F @-@ 5 , breaking McMahon 's pelvis in storyline . The following week , during The Miz 's MizTV talk show , Raw Managing Supervisor Vickie Guerrero revealed herself as the one who signed Lesnar to a new contract to impress McMahon . On the February 25 episode of Raw , Lesnar once again attempted to attack McMahon , only to get into a brawl with the returning Triple H , which resulted in Lesnar legitimately having his head split open and requiring eighteen stitches . The following week , Triple H issued a challenge to Lesnar , requesting a rematch with him at WrestleMania 29 , which Lesnar accepted but only after Triple signed a contract and Lesnar named the stipulation . The following week , after Triple H signed the contract and assaulted Heyman , the stipulation was revealed as No Holds Barred with Triple H 's career on the line . Lesnar ended up losing the match after Triple H hit him with a Pedigree onto the steel steps . On the April 15 episode of Raw , Lesnar attacked 3MB ( Heath Slater , Drew McIntyre , and Jinder Mahal ) before Heyman challenged Triple H to face Lesnar in a steel cage match at Extreme Rules , which Triple H accepted the following week . On May 19 at the pay @-@ per @-@ view , after interference from Heyman , he defeated Triple H and ended their feud . Lesnar returned on the June 17 episode of Raw , attacking Heyman 's fellow client CM Punk with an F @-@ 5 . Despite the accusations from Punk , Heyman claimed that he was not behind Lesnar 's attack on him . However , in July , Heyman turned on Punk , and claimed that Punk could not beat Lesnar , which led to Lesnar making his return and attacking Punk on the July 15 episode of Raw . The following week on Raw , Punk challenged Lesnar to a match at SummerSlam , where Lesnar defeated Punk in a no disqualification match . + On the December 30 episode of Raw , Lesnar returned with Heyman to announce his intentions to challenge the winner of the upcoming WWE World Heavyweight Championship match between Randy Orton and John Cena at the Royal Rumble . Lesnar then dared any wrestler who disapproved of that notion to challenge him , which was answered by Mark Henry , and a brawl would ensue , ending with Lesnar delivering an F @-@ 5 to Henry . The following week on Raw , Henry challenged Lesnar again , only to have Lesnar dislocate his elbow with the Kimura lock in storyline , and this led Big Show to came out afterwards to confront Lesnar , thus starting a feud which was settled at Royal Rumble , where Lesnar defeated the Big Show after attacking him with a steel chair before the match began . On the February 24 , 2014 episode of Raw , after Heyman stated that Lesnar had requested a match for the WWE World Heavyweight Championship at WrestleMania XXX , instead receiving an open contract to face anyone else of his choosing , The Undertaker then returned and chokeslammed Lesnar through a table , setting up their match at WrestleMania . Lesnar defeated Undertaker after executing three F @-@ 5s , ending his undefeated WrestleMania streak at 21 , a feat that was described by Sports Illustrated as being " the most shocking result since the Montreal Screwjob " . + + = = = = WWE World Heavyweight Champion ( 2014 – 2015 ) = = = = + + On the July 21 , 2014 episode of Raw , Triple H announced that Lesnar would face John Cena at SummerSlam for the WWE World Heavyweight Championship . At SummerSlam , Lesnar defeated Cena to become the WWE World Heavyweight Champion , and during the match he delivered sixteen suplexes ( most of which were German suplexes ) and two F @-@ 5s to Cena , who barely managed any offense . On the August 19 episode of Main Event , Triple H announced that Cena was invoking his championship rematch clause against Lesnar at Night of Champions , where Lesnar was disqualified due to Seth Rollins interfering , but retained his championship , which could not be lost via disqualification . Later in the year , after Rollins reunited with The Authority , he was added to Lesnar and Cena 's championship match at Royal Rumble , making it a triple threat match , which Lesnar won despite suffering a storyline broken rib during the match . + Lesnar 's next challenger was Roman Reigns , who won the Royal Rumble match to earn the right to face Lesnar for the title at WrestleMania 31 . During his main @-@ event match against Reigns , Lesnar delivered multiple suplexes and was heard exclaiming , " Suplex City , bitch ! " , and thereafter " Suplex City " became one of his signature catchphrases and merchandise motifs . After Lesnar and Reigns traded a few false finishes , Rollins cashed in his Money in the Bank contract while the match was in progress , making it a triple threat ; Rollins then pinned Reigns to win the title . The following night on Raw , Lesnar tried to invoke his rematch clause and subsequently attacked commentators Booker T , John " Bradshaw " Layfield , and Michael Cole , as well as a cameraman after Rollins refused the rematch , which led to Stephanie McMahon suspending Lesnar indefinitely in storyline . + Lesnar returned on the June 15 episode of Raw as a fan favorite , being chosen by The Authority as the number one contender to Rollins ' WWE World Heavyweight Championship at Battleground . On July 4 , Lesnar made his first non @-@ televised wrestling appearance for WWE since his 2012 return , defeating Kofi Kingston at The Beast in the East live event in Tokyo in a quick winning effort ; he also delivered F @-@ 5s to Kingston 's New Day stablemates Big E and Xavier Woods after the match . On July 19 at Battleground , Lesnar dominated Rollins , delivering 13 suplexes ; mid @-@ pinfall , after performing an F @-@ 5 , he was attacked by The Undertaker , who incapacitated Lesnar with a chokeslam and two Tombstone Piledrivers ; this ended the match , with Lesnar winning by disqualification and Rollins retaining the championship . + + = = = = Various feuds and storylines ( 2015 – present ) = = = = + + The following night on Raw , Undertaker explained that he had attacked Lesnar not for ending his WrestleMania streak , but rather for Lesnar allowing Heyman to constantly taunt Undertaker about it ; this led to the two brawling throughout the arena and a WrestleMania rematch being scheduled for SummerSlam on August 23 , where Undertaker would controversially defeat Lesnar ; during the match , Undertaker tapped out to a Kimura lock by Lesnar and the timekeeper rang the bell , but the referee did not see the tapout and demanded that the match continue , which saw Undertaker then hitting Lesnar with a low blow and Lesnar passed out to Undertaker 's submission hold , Hell 's Gate . The following night on Raw , Lesnar and Heyman challenged Undertaker to an immediate rematch , only to be confronted by Bo Dallas , who mocked Lesnar about his defeat ; Lesnar then responded by delivering 3 German suplexes and an F @-@ 5 to Dallas . + During Night of Champions , it was announced that Lesnar would face The Undertaker at the Hell in a Cell pay @-@ per @-@ view , where Lesnar defeated The Undertaker after a low blow and F @-@ 5 onto the exposed ring floor , ending their feud . The match was later voted " Match of the Year " during the 2015 Slammy Awards . On the January 11 episode of Raw , Lesnar returned , attacking The New Day , The League of Nations ( Sheamus , King Barrett , Rusev , and Alberto Del Rio ) , and Kevin Owens , before giving an F @-@ 5 to Roman Reigns . The following week on Raw , Lesnar would brawl with Reigns until they were both attacked by The Wyatt Family . At the Royal Rumble , Lesnar was the 23rd entrant , eliminating four competitors before being eliminated by Bray Wyatt with help from the rest of The Wyatt Family . + On the January 25 episode of Raw , Stephanie McMahon announced that the main event of Fastlane would be a triple threat match between Lesnar , Roman Reigns , and Dean Ambrose to determine who would face Triple H for the WWE World Heavyweight Championship at WrestleMania 32 . In the following weeks , Lesnar would be continuously provoked by Ambrose , with Reigns saving him from the subsequent attacks by Lesnar . At Fastlane , Lesnar dominated most of the match before he was put through two announce tables by Ambrose and Reigns ; he would ultimately lose the match after Reigns pinned Ambrose . Because of this , Lesnar attacked Ambrose in the parking lot as he was arriving at the arena for Raw , but Ambrose would return later in the night , having hijacked an ambulance , and he challenged Lesnar to a No Holds Barred Street Fight match at WrestleMania 32 , where Lesnar defeated Ambrose . On the July 7 edition of SmackDown , it was announced that Lesnar would be facing the returning Randy Orton at SummerSlam . On July 19 , at the 2016 WWE Draft , Lesnar was drafted to Raw . + + = = Football career = = + + After his match at WrestleMania XX , Lesnar sidelined his career in WWE to pursue a career in the National Football League ( NFL ) despite not playing American football since high school . The WWE issued this statement on their official website , WWE.com , following his departure : + Brock Lesnar has made a personal decision to put his WWE career on hold to prepare to tryout for the National Football League this season . Brock has wrestled his entire professional career in the WWE and we are proud of his accomplishments and wish him the best in his new endeavor . + Lesnar later told a Minnesota radio show that he had " three wonderful years " in WWE , but had grown unhappy and always wanted to play pro football , adding that he did not want to be 40 years old and wondering if he could have " made it " in football . In an interview about the NFL , he stated : + This is no load of bull ; it 's no WWE stunt . I am dead serious about this . I ain 't afraid of anything and I ain 't afraid of anybody . I 've been an underdog in athletics since I was five . I got zero college offers for wrestling . Now people say I can 't play football , that it 's a joke . I say I can . I 'm as good an athlete as a lot of guys in the NFL , if not better . I 've always had to fight for everything . I wasn 't the best technician in amateur wrestling but I was strong , had great conditioning , and a hard head . Nobody could break me . As long as I have that , I don 't give a damn what anybody else thinks . + Lesnar had a great showing at the NFL Combine . On April 17 , 2004 , a minivan collided with his motorbike ; he suffered a broken jaw and left hand , a bruised pelvis , and a pulled groin . Several NFL teams expressed interest in watching Lesnar work out . The Minnesota Vikings worked out Lesnar on June 11 , 2004 but he was hampered by the groin injury suffered in the April motorcycle accident . On July 24 it was reported that he was nearly recovered from his groin injury . He signed with the Vikings on July 27 and played in several preseason games for the team . He was released by the Vikings on August 30 , 2004 . Lesnar received an invitation to play as a representative for the Vikings in NFL Europa but declined due to his desire to stay in the United States with his family . He had several football cards produced of him during his time with the Vikings . + + = = Mixed martial arts career = = + + + = = = Hero 's ( 2007 ) = = = + + On April 29 , 2006 , after the final match of the K @-@ 1 World Grand Prix 2006 in Las Vegas , Lesnar announced his intent to join K @-@ 1 's mixed martial arts league , Hero 's . He trained with Minnesota Martial Arts Academy under Greg Nelson and Minnesota Assistant Head wrestling coach Marty Morgan . Lesnar announced on August 12 in Las Vegas that he had signed a deal with the K @-@ 1 promotion . His first fight was scheduled against Choi Hong @-@ man of Korea on June 2 , 2007 , at the K @-@ 1 Dynamite ! ! USA show . However , prior to the match , Hong @-@ Man was replaced by Min Soo Kim . Lesnar submitted Soo Kim with strikes in 1 : 09 of the first round to win his first official MMA match . + + = = = Ultimate Fighting Championship ( 2008 – 2011 ) = = = + + During UFC 77 , it was announced that Lesnar had reached a deal to fight with the Ultimate Fighting Championship ( UFC ) . On February 2 , 2008 , Lesnar made his debut with the promotion in an event titled UFC 81 : Breaking Point against former UFC Heavyweight Champion , Frank Mir . Due to his large hands , Lesnar was wearing 4XL gloves for the fight , making him the second man in Nevada 's combat sports history to wear such gloves after Choi Hong @-@ man . Lesnar secured an early takedown and began landing numerous punches but was docked a point after a punch hit Mir on the back of the head . Following another takedown by Lesnar , Mir managed to secure a kneebar and force a submission at 1 : 30 of the first round and Lesnar lost in his UFC debut . At UFC 82 , former UFC Heavyweight Champion and Hall of Famer Mark Coleman was announced to fight Lesnar at UFC 87 . However , Coleman withdrew from the fight due to an injury and was replaced by Heath Herring . Lesnar defeated Herring by unanimous decision . + Lesnar would then face Randy Couture for the UFC Heavyweight Championship at UFC 91 on November 15 . Lesnar would beat Couture via a technical knockout ( TKO ) in the second round to become the new UFC Heavyweight Champion . + On December 27 , 2008 , at UFC 92 , Frank Mir defeated Antônio Nogueira for the Interim Heavyweight Championship and was to face Lesnar for the Undisputed UFC Heavyweight Championship at UFC 98 . Immediately after winning the Interim Heavyweight title , Mir found Lesnar in the crowd and shouted , " You 've got my belt " . Due to a knee injury to Mir , the title unification match with Lesnar that was originally slated to be the UFC 98 main event was postponed . Lesnar won the postponed rematch with Mir at UFC 100 on July 11 , 2009 , via technical knockout in the second round . The win earned Lesnar Beatdown of the Year honors , with Anderson Silva , from Sherdog for 2009 . During his post @-@ match celebration , Lesnar flipped off the crowd who had been booing him . Lesnar also made a disparaging comment about the pay @-@ per @-@ view 's primary sponsor Bud Light , claiming they " won 't pay me nothin ' " and promoted Coors Light instead . Lesnar later apologized for his remarks at the post @-@ fight press conference , where he held a bottle of Bud Light and endorsed their product . + On July 1 , 2009 , it was reported that the winner of the Shane Carwin vs. Cain Velasquez fight at UFC 104 would face Lesnar but the match was scrapped and Lesnar was scheduled to defend his belt against Shane Carwin at UFC 106 on November 21 . On October 26 , 2009 , it was announced that Lesnar pulled out of his Carwin bout due to an illness . UFC President Dana White said Lesnar had been ill for three weeks , claiming he had never been this sick in his life and that it would take him a while to recover ; his fight with Carwin was rescheduled for UFC 108 on January 2 , 2010 . Lesnar initially sought treatment in Canada , but later told reporters that he had received " Third World treatment " at a hospital in Brandon , Manitoba , and that seeking better treatment in the U.S. saved his life . Lesnar went on to criticize Canadian health care further and stated that he shared his experience in an effort to speak " on the behalf of the doctors in the United States that don 't want health care reform to happen " . + On November 4 , it was confirmed that Lesnar was suffering from mononucleosis and that his bout with Carwin would have to wait a bit longer and the fight for Lesnar 's heavyweight championship was cancelled . On November 14 , at the UFC 105 post @-@ fight conference , Dana White stated , " [ Lesnar ] ' s not well and he 's not going to be getting well anytime soon " and that an interim title match might need to be set up . In addition to mononucleosis , it was revealed that he was suffering from a serious case of diverticulitis , an intestinal disorder , which required surgery . After further diagnosis , Lesnar underwent surgery on November 16 to close a perforation in his intestine that had been leaking fecal matter into his abdomen , causing pain , abscesses , and overtaxing his immune system to the point that he contracted mononucleosis . From the level of damage to Lesnar 's system , the surgeon estimated that the intestinal condition had been ongoing for around a year . + In January 2010 , Lesnar announced on ESPN 's SportsCenter that he was scheduled to make a return to the UFC in the summer . A match between Frank Mir and Shane Carwin took place on March 27 at UFC 111 to determine the Interim Heavyweight Champion , and Lesnar 's next opponent . Shane Carwin defeated Mir via knockout in the first round , becoming the new Interim Champion . After the fight , Lesnar came into the ring and stated , " It was a good fight but he 's wearing a belt that 's a make @-@ believe belt . I 've got the real championship belt " . Lesnar faced Carwin at UFC 116 to unify the heavyweight titles . Early in the first round , Carwin knocked Lesnar down with punch , gave him a cut above his left eye , and used a ground and pound attack the rest of the round . In the next round , Lesnar was able to take Carwin down , attain a full mount , then move into side @-@ control and finish the fight with an arm triangle choke . With the victory , Lesnar became the Undisputed UFC Heavyweight Champion , earning his first Submission of the Night and giving Carwin his first loss . The win also tied a UFC record for most consecutive successful Heavyweight Championship defenses . + Lesnar 's next defense was against undefeated top contender Cain Velasquez on October 23 , at the Honda Center in Anaheim , California at UFC 121 . Dana White announced via SportsNation that the UFC would bring back UFC Primetime to hype the fight . He was defeated by Velasquez for the title by TKO in the first round . + On January 11 , 2011 , Lesnar was announced as a coach of The Ultimate Fighter Season 13 , opposite Junior dos Santos , with the two expected to fight on June 11 at UFC 131 , however , he was struck with another bout of diverticulitis and had to withdraw from the fight on May 12 . He was replaced by Shane Carwin , who ended up losing against dos Santos . Lesnar underwent surgery on May 27 to help battle his problems with diverticulitis . Dana White said that he had a 12 @-@ inch piece of his colon removed . + In its May 2011 issue , ESPN 's magazine published a story listing the highest paid athlete based on base salary and earnings for the most recent calendar year or most recent season in 30 sports . Lesnar topped the list for MMA at $ 5 @.@ 3 million , which included his reported bout salaries and estimated pay @-@ per @-@ view bonuses . + In the summer of 2011 , Lesnar announced that he was returning to action , stating , " I feel like a new man . Healthy . Strong . I feel like I used to feel " . His return match was scheduled to be at UFC 141 on December 30 in Las Vegas against former Strikeforce heavyweight champion Alistair Overeem . Overeem won the fight by way of technical knockout in the first round . The result of the fight remains controversial , as Overeem tested positive for elevated levels of testosterone prior to his next fight . Lesnar then announced his retirement from MMA , mentioning his struggles with diverticulitis and saying " tonight was the last time you 'll see me in the octagon " . + Speculation about a return to MMA lasted until March 24 , 2015 , when Lesnar announced in an interview on SportsCenter that he had re @-@ signed with WWE and officially closed the door on a return to MMA , even though he was offered a deal " ten times more " than what he had made previously in his MMA career . He further elaborated that , while he was training for months for a return to the UFC , he felt " physically great but something was lacking mentally " . Lesnar added that " [ he 's ] an older caveman now , so [ he ] makes smarter caveman decisions " and that he chose to sign with WWE instead of returning to MMA because he could " work part @-@ time with full @-@ time pay " . + + = = = UFC 200 ( 2016 ) = = = + + Though Lesnar said he was " closing the door on MMA " in March 2015 , UFC announced on June 4 , 2016 , that he would return at UFC 200 on July 9 . WWE confirmed it had granted Lesnar " a one @-@ off opportunity " to compete at UFC 200 before he would return to the company for SummerSlam on August 21 . + Lesnar , representing Canada for the first time in his career , defeated Mark Hunt by unanimous decision ( 29 @-@ 27 ) , avoiding 19 of Hunt 's 30 attempted standing strikes , and taking him down four times to land 43 significant ground strikes , 32 in the final round . He also won a UFC @-@ record $ 2 @.@ 5 million purse . + On July 15 , Lesnar was notified of a potential anti @-@ doping policy violation by the United States Anti @-@ Doping Agency ( USADA ) stemming from an undisclosed banned substance in an out @-@ of @-@ competition sample collected on June 28 . Shortly after this was announced , WWE said Lesnar 's match with Randy Orton at SummerSlam would still take place . Hunt told UFC to either pay him half of Lesnar 's purse or let him out of his contract . He later changed his mind on Twitter , and asked for the whole purse . UFC has not yet publicly responded to Hunt . Lesnar told the Associated Press , " We will get to the bottom of this . " On July 19 , the UFC announced that a second sample taken in @-@ competition on July 9 tested positive for the same banned substance discovered in the previous out @-@ of @-@ competition sample . + + = = = UFC pay @-@ per @-@ views = = = + + + = = Personal life = = + + Lesnar married Rena Greek , better known as Sable , on May 6 , 2006 . They reside on a farm in Maryfield , Saskatchewan , having previously lived in Maple Plain , Minnesota . They have two sons : Turk ( born June 3 , 2009 ) and Duke ( born July 21 , 2010 ) . Lesnar also has twins with his former fiancée , Nicole McClain , the first being a son named Luke ( born Brock Jr . ) and the second a daughter named Mya Lynn ( born April 10 , 2002 ) . Mya is 10 minutes older than Luke . Lesnar has full custody of the twins , and is the stepfather of Mariah , Greek 's daughter with her late husband . + Lesnar is a conservative and a supporter of the Republican Party . He is a member of the National Rifle Association , and made an appearance at their annual meeting in May 2011 to discuss his passion for hunting and his role as a spokesman for Fusion Ammunition . + During his first run in WWE , Lesnar developed addictions to both alcohol and painkillers , allegedly drinking a bottle of vodka per day and taking hundreds of Vicodin pills per month to manage the pain caused by wear and tear on his body ; he named his accident at WrestleMania XIX as a particular source of pain . Lesnar claims that , as a result of his addiction and mental exhaustion , he does not remember " an entire two years " of his WWE career . + In January 2001 , Lesnar was arrested by police in Louisville , Kentucky for suspicion of possessing large amounts of anabolic steroids . The charges were dropped when it was discovered that the substances were a legal growth hormone . His lawyer described it as a " vitamin type of thing " . + On December 15 , 2011 , Lesnar was charged with hunting infractions on a trip to Alberta on November 19 , 2010 . Two charges were dropped , but Lesnar pleaded guilty to the charge of improper tagging of an animal . He was fined $ 1 @,@ 725 and given a six @-@ month hunting suspension . + As of July 2016 , Lesnar 's eldest son , Brock Jr. is ranked # 1 in Saskatchewan and # 4 in all of Canada in amateur wrestling . + + = = Other media = = + + Lesnar appears in the video games WWE SmackDown ! Shut Your Mouth , WWE SmackDown ! Here Comes the Pain , Madden NFL 06 , UFC 2009 Undisputed , UFC Undisputed 2010 , WWE ' 12 , WWE ' 13 , WWE 2K14 , WWE 2K15 , WWE 2K16 , and WWE 2K17 . + In 2003 , WWE Home Video released a DVD chronicling Lesnar 's career entitled Brock Lesnar : Here Comes the Pain . It was re @-@ released in 2012 as a three @-@ disc DVD and two @-@ disc Blu @-@ ray collector 's edition to tie in with Lesnar 's WWE return . It was also expanded to include new matches and interviews . + Lesnar was featured on the covers of Flex and Muscle & Fitness magazine in 2004 , and Minneapolis ' City Pages in 2008 . + In 2009 , Lesnar signed an endorsement deal with Dymatize Nutrition . A CD containing footage of Lesnar training was included with Dymatize 's " Xpand " product . + In 2011 , Lesnar published an autobiography titled Death Clutch : My Story of Determination , Domination , and Survival ( ISBN 978 @-@ 0062023117 ) . It was co @-@ written with Paul Heyman . + In a 2013 post on his blog , Attack on Titan author Hajime Isayama revealed that he drew inspiration from Lesnar for the character of the Armored Titan . + Lesnar has also appeared in multiple comedic Instagram and Vine videos by actor Eric Stonestreet . + + = = Filmography = = + + + = = = Television = = = + + + = = = Video games = = = + + + = = In wrestling = = + + Finishing moves + Brock Lock ( Over @-@ the @-@ shoulder single leg Boston crab ) – 2002 – 2004 + F @-@ 5 ( WWE ) / Verdict ( NJPW / IGF ) ( Fireman 's carry facebuster ) – 2002 – 2006 ; 2012 – present + Kimura lock – 2012 – present + Shooting star press – OVW ; only used once in WWE + Signature moves + Backbreaker + Fallaway slam + Gorilla press slam + Knee lifts to the opponent 's midsection + Multiple suplex variations + Belly @-@ to @-@ back , sometimes to two opponents at once + Fisherman 's , sometimes while delaying + Overhead belly @-@ to @-@ belly , sometimes into or out of the ring + Release / Rolling German + Snap + Vertical + Multiple turnbuckle thrusts + Powerslam + Rear naked choke + Running powerbomb + Standing double leg takedown followed by mounted punches + Triple non @-@ release powerbomb + Managers + Mr. McMahon + Sable + Paul Heyman + Nicknames + " The Anomaly " + " The Beast ( Incarnate ) " + " The Conqueror " + " The Freak " + " The Next Big Thing " + " The One in 21 – 1 / 22 @-@ 1 " + " The Nightmare of Suplex City " + Entrance themes + Ultimate Fighting Championship + " Enter Sandman " by Metallica + " Nickel Size Hail ( And the Damaging Winds ) " by Sunny Ledfurd + World Wrestling Entertainment / WWE + " Enforcer " by Jim Johnston ( April 8 , 2002 – June 3 , 2002 ) + " Next Big Thing " by Jim Johnston ( June 10 , 2002 – March 14 , 2004 ; April 2 , 2012 – August 20 , 2012 ) + " Next Big Thing ( Remix ) " by Jim Johnston ( January 28 , 2013 – present ) + + = = Mixed martial arts record = = + + + = = Championships , awards , and honors = = + + + = = = Collegiate wrestling = = = + + National Collegiate Athletic Association + NCAA Division I All @-@ American ( 1999 , 2000 ) + NCAA Division I Heavyweight Champion ( 2000 ) + Big Ten Conference Champion ( 1999 , 2000 ) + National Junior College Athletic Association + NJCAA All @-@ American ( 1997 , 1998 ) + NJCAA Heavyweight Champion ( 1998 ) + North Dakota State University Bison Tournament Champion ( 1997 – 1999 ) + + = = = Mixed martial arts = = = + + Inside Fights + Biggest Draw ( 2008 ) + Rookie of the Year ( 2008 ) + Sherdog Awards + Beatdown of the Year ( 2009 ) + Sports Illustrated + Top Newcomer of the Year ( 2008 ) + Ultimate Fighting Championship + UFC Heavyweight Championship ( 1 time ) + Submission of the Night ( 1 time ) + World MMA Awards + Breakthrough Fighter of the Year ( 2009 ) + Wrestling Observer Newsletter + Best Box Office Draw ( 2008 – 2010 ) + MMA Most Valuable Fighter ( 2008 – 2010 ) + + = = = Professional wrestling = = = + + Guinness World Records + World record : Youngest person to win the WWE Championship ( aged 25 years , 44 days ) + Inoki Genome Federation + IWGP Heavyweight Championship ( 1 time ) 1 + New Japan Pro Wrestling + IWGP Heavyweight Championship ( 1 time ) 1 + Ohio Valley Wrestling + OVW Southern Tag Team Championship ( 3 times ) – with Shelton Benjamin + Pro Wrestling Illustrated + Feud of the Year ( 2003 ) vs. Kurt Angle + Feud of the Year ( 2015 ) vs. The Undertaker + Match of the Year ( 2003 ) vs. Kurt Angle in an Iron Man match on SmackDown ! on September 16 + Most Improved Wrestler of the Year ( 2002 ) + Wrestler of the Year ( 2002 , 2014 ) + Ranked # 1 of the top 500 singles wrestlers in the PWI 500 in 2003 + Wrestling Observer Newsletter + Best Brawler ( 2003 ) + Best Wrestling Maneuver ( 2002 ) F @-@ 5 + Feud of the Year ( 2003 ) vs. Kurt Angle + Most Improved Wrestler ( 2002 , 2003 ) + Wrestling Observer Newsletter Hall of Fame ( Class of 2015 ) + World Wrestling Entertainment / WWE + WWE Championship ( 4 times ) 2 + King of the Ring ( 2002 ) + Royal Rumble ( 2003 ) + Slammy Awards ( 5 times ) + Hashtag of the Year ( 2015 ) – # SuplexCity + Match of the Year ( 2015 ) – vs The Undertaker at Hell in a Cell + Rivalry of the Year ( 2015 ) – vs The Undertaker + " Tell Me You Didn 't Just Say That " Moment of the Year ( 2015 ) – Coining " Suplex City " at WrestleMania 31 + The OMG Shocking Moment of the Year ( 2014 ) – Ending The Undertaker 's WrestleMania streak at WrestleMania XXX + 1 ^ Lesnar 's IWGP Heavyweight Championship reign at IGF is considered a continuation of his reign from NJPW . + 2 ^ When Lesnar won the title for the first time it was known as the WWE Undisputed Championship . His next two reigns were as simply WWE Champion , while his final one was as WWE World Heavyweight Champion . + + + = Constant k filter = + + Constant k filters , also k @-@ type filters , are a type of electronic filter designed using the image method . They are the original and simplest filters produced by this methodology and consist of a ladder network of identical sections of passive components . Historically , they are the first filters that could approach the ideal filter frequency response to within any prescribed limit with the addition of a sufficient number of sections . However , they are rarely considered for a modern design , the principles behind them having been superseded by other methodologies which are more accurate in their prediction of filter response . + + = = History = = + + Constant k filters were invented by George Campbell . He published his work in 1922 , but had clearly invented the filters some time before , as his colleague at AT & T Co , Otto Zobel , was already making improvements to the design at this time . Campbell 's filters were far superior to the simpler single element circuits that had been used previously . Campbell called his filters electric wave filters , but this term later came to mean any filter that passes waves of some frequencies but not others . Many new forms of wave filter were subsequently invented ; an early ( and important ) variation was the m @-@ derived filter by Zobel who coined the term constant k for the Campbell filter in order to distinguish them . + The great advantage Campbell 's filters had over the RL circuit and other simple filters of the time was that they could be designed for any desired degree of stop band rejection or steepness of transition between pass band and stop band . It was only necessary to add more filter sections until the desired response was obtained . + The filters were designed by Campbell for the purpose of separating multiplexed telephone channels on transmission lines , but their subsequent use has been much more widespread than that . The design techniques used by Campbell have largely been superseded . However , the ladder topology used by Campbell with the constant k is still in use today with implementations of modern filter designs such as the Tchebyscheff filter . Campbell gave constant k designs for low @-@ pass , high @-@ pass and band @-@ pass filters . Band @-@ stop and multiple band filters are also possible . + + = = Terminology = = + + Some of the impedance terms and section terms used in this article are pictured in the diagram below . Image theory defines quantities in terms of an infinite cascade of two @-@ port sections , and in the case of the filters being discussed , an infinite ladder network of L @-@ sections . Here " L " should not be confused with the inductance L – in electronic filter topology , " L " refers to the specific filter shape which resembles inverted letter " L " . + The sections of the hypothetical infinite filter are made of series elements having impedance 2Z and shunt elements with admittance 2Y . The factor of two is introduced for mathematical convenience , since it is usual to work in terms of half @-@ sections where it disappears . The image impedance of the input and output port of a section will generally not be the same . However , for a mid @-@ series section ( that is , a section from halfway through a series element to halfway through the next series element ) will have the same image impedance on both ports due to symmetry . This image impedance is designated ZiT due to the " T " topology of a mid @-@ series section . Likewise , the image impedance of a mid @-@ shunt section is designated ZiΠ due to the " Π " topology . Half of such a " T " or " Π " section is called a half @-@ section , which is also an L @-@ section but with half the element values of the full L @-@ section . The image impedance of the half @-@ section is dissimilar on the input and output ports : on the side presenting the series element it is equal to the mid @-@ series ZiT , but on the side presenting the shunt element it is equal to the mid @-@ shunt ZiΠ . There are thus two variant ways of using a half @-@ section . + Parts of this article or section rely on the reader 's knowledge of the complex impedance representation of capacitors and inductors and on knowledge of the frequency domain representation of signals . + + = = Derivation = = + + The building block of constant k filters is the half @-@ section " L " network , composed of a series impedance Z , and a shunt admittance Y. The " k " in " constant k " is the value given by , + + Thus , k will have units of impedance , that is , ohms . It is readily apparent that in order for k to be constant , Y must be the dual impedance of Z. A physical interpretation of k can be given by observing that k is the limiting value of Zi as the size of the section ( in terms of values of its components , such as inductances , capacitances , etc . ) approaches zero , while keeping k at its initial value . Thus , k is the characteristic impedance , Z0 , of the transmission line that would be formed by these infinitesimally small sections . It is also the image impedance of the section at resonance , in the case of band @-@ pass filters , or at ω = 0 in the case of low @-@ pass filters . For example , the pictured low @-@ pass half @-@ section has + . + Elements L and C can be made arbitrarily small while retaining the same value of k . Z and Y however , are both approaching zero , and from the formulae ( below ) for image impedances , + . + + = = = Image impedance = = = + + See also Image impedance # Derivation + The image impedances of the section are given by + + and + + Given that the filter does not contain any resistive elements , the image impedance in the pass band of the filter is purely real and in the stop band it is purely imaginary . For example , for the pictured low @-@ pass half @-@ section , + + The transition occurs at a cut @-@ off frequency given by + + Below this frequency , the image impedance is real , + + Above the cut @-@ off frequency the image impedance is imaginary , + + + = = = Transmission parameters = = = + + The transmission parameters for a general constant k half @-@ section are given by + + and for a chain of n half @-@ sections + + For the low @-@ pass L @-@ shape section , below the cut @-@ off frequency , the transmission parameters are given by + + That is , the transmission is lossless in the pass @-@ band with only the phase of the signal changing . Above the cut @-@ off frequency , the transmission parameters are : + + + = = = Prototype transformations = = = + + The presented plots of image impedance , attenuation and phase change correspond to a low @-@ pass prototype filter section . The prototype has a cut @-@ off frequency of ωc + = 1 rad / s and a nominal impedance k = + 1 Ω . This is produced by a filter half @-@ section with inductance L + = 1 henry and capacitance C = + 1 farad . This prototype can be impedance scaled and frequency scaled to the desired values . The low @-@ pass prototype can also be transformed into high @-@ pass , band @-@ pass or band @-@ stop types by application of suitable frequency transformations . + + = = Cascading sections = = + + Several L @-@ shape half @-@ sections may be cascaded to form a composite filter . Like impedance must always face like in these combinations . There are therefore two circuits that can be formed with two identical L @-@ shaped half @-@ sections . Where a port of image impedance ZiT faces another ZiT , the section is called a Π section . Where ZiΠ faces ZiΠ the section so formed is a T section . Further additions of half @-@ sections to either of these section forms a ladder network which may start and end with series or shunt elements . + It should be borne in mind that the characteristics of the filter predicted by the image method are only accurate if the section is terminated with its image impedance . This is usually not true of the sections at either end , which are usually terminated with a fixed resistance . The further the section is from the end of the filter , the more accurate the prediction will become , since the effects of the terminating impedances are masked by the intervening sections . + + + = The Snowmen = + + " The Snowmen " is an episode of the British science fiction television series Doctor Who , first broadcast on Christmas Day 2012 on BBC One . It is the eighth Christmas special since the show 's 2005 revival and the first to be within a series . It was written by head writer and executive producer Steven Moffat and directed by Saul Metzstein . + The episode is set in the Victorian era and sees the Doctor ( Matt Smith ) brooding with the assistance of Silurian Madame Vastra ( Neve McIntosh ) , her wife Jenny Flint ( Catrin Stewart ) and Sontaran Strax ( Dan Starkey ) , after the loss of companions Amy Pond and Rory Williams in the previous episode , " The Angels Take Manhattan " . He is forced out of hiding to investigate mysterious , sentient snowmen that are building themselves and meets Clara Oswald ( Jenna @-@ Louise Coleman ) , a governess also investigating the snowmen . They discover that the snowmen are being animated by the Great Intelligence ( voice of Ian McKellen ) with the help of a man named Dr Simeon ( Richard E. Grant ) . + Building upon the character 's surprise introduction in " Asylum of the Daleks " , " The Snowmen " introduces Clara as the Doctor 's new companion , though ultimately it would be a third version of her character that would travel with the Doctor starting with " The Bells of Saint John " . In addition to Clara , " The Snowmen " also introduces a redesigned TARDIS , revised title sequence and theme music , and sees changes to the Doctor 's costume . The special was produced in August 2012 , with location filming in Newport , Wales and Bristol . It received final ratings of 9 @.@ 87 million viewers in the UK , becoming the fourth most @-@ watched programme of Christmas Day . " The Snowmen " was met with mostly positive reviews from critics , most of whom received the introduction and character of Clara well . However , some felt that Grant and McKellen were underused as villains or the plot was slight because of the focus on characterisation . + + = = Plot = = + + + = = = Prequels = = = + + To promote the special , three prequels were released . The first was broadcast during the 2012 Children in Need telethon on 16 November 2012 , titled " The Great Detective " . The Silurian Madame Vastra , her human wife Jenny Flint , and the Sontaran Strax ( all returning from " A Good Man Goes to War " ) describe a number of strange phenomena to a shadowed fourth detective . The fourth detective reveals himself to be the Doctor , and tells the group that he has retired . + A second prequel , titled " Vastra Investigates " , was released online on 17 December 2012 . At the end of a case , Vastra and Jenny converse with an officer from Scotland Yard and apologise for Strax 's violent wishes for the culprit 's punishment . Vastra explains Strax 's alien origin as well as her own to the officer , much to his astonishment . Vastra reveals that she was awoken by an extension to the London Underground and initially disliked humans , though that changed when she fell in love with Jenny . On the carriage ride home , Jenny notices it is beginning to snow and Vastra notes that the snow should be impossible because there are no clouds in the sky . + A third prequel , titled " The Battle of Demon 's Run — Two Days Later " was released on the United States iTunes and Amazon Video stores on 25 March 2013 . Two days after the events of " A Good Man Goes to War " , Vastra and Jenny convince Strax that he is not mortally wounded and invite him to accompany them back to 1800s London . The scene had been filmed as an extra due to the anticipation that fans would ask how Strax was resurrected and came to be in Vastra 's employ . + + = = = Synopsis = = = + + In 1842 England , a young boy builds a snowman , but refuses to play with the other children . The snowman starts speaking to the boy , repeating his assertions that the other children are silly . Fifty years later , the boy has grown up to be Dr. Walter Simeon , proprietor of the Great Intelligence Institute . He hires men to collect samples of snow , which he places in a large snow @-@ filled globe in his laboratory before feeding the men to a group of animated snowmen . The Doctor , still despondent after losing his former companions Amy Pond and Rory Williams , has parked his TARDIS above Victorian London among the clouds . He uses his allies Vastra , Jenny , and Strax to keep people away from him . They also fill their time investigating mysteries throughout the city . + Elsewhere , barmaid Clara Oswin Oswald investigates a disturbance outside the tavern she works at and finds the Doctor walking by . He attempts to leave discreetly , but Clara follows him to a coach . Not wishing to become involved in matters , the Doctor instructs Strax to bring him a memory worm that will erase the last hour of Clara 's memories with just a touch . Before they can do so , they are surrounded by snowmen created from snow with psychic properties who attack the group . The Doctor realises that Clara 's thoughts are creating the snowmen and ends the threat by instructing her to think of them melting . Clara cautions the Doctor that if he wipes her memory , she will forget how to deal with the snowmen . The Doctor reluctantly allows her to go and ascends a staircase to the sky to return to the TARDIS . Clara follows him and knocks on the door , but she hides and flees down the staircase when the Doctor answers . Clara returns to her other job as governess for the children of Captain Latimer . She learns that Latimer 's daughter has been having horrible dreams about their previous governess returning from the dead . Clara realises that the pond that contains the old governess ' body is the only thing still frozen around them . She attempts to track down the Doctor but instead attracts the attention of Jenny , who takes her to see Vastra . Vastra tells Clara she gets only one word to impress the Doctor with if she wants his help . Clara chooses the word " Pond " , which shocks the Doctor and arouses his interest . + Acting on a tip from Strax , the Doctor visits the Great Intelligence Institute posing as Sherlock Holmes . He confronts Dr. Simeon and find a large glass globe in Simeon 's office that contains psychic snow . The Doctor speaks to the Great Intelligence , the entity that has been speaking to Dr. Simeon since he was a boy . He learns that the Great Intelligence has been controlling the snowmen and has taken interest in Latimer 's pond . The Doctor visits the pond and deduces that the Great Intelligence is using the old governess ' body as a DNA blueprint to form an ice creature that will retain its form and not melt . While Clara is putting the children to bed , the frozen body of the governess breaks into the house . The Doctor fights her off and is joined by Vastra , Jenny and Strax . Dr. Simeon arrives with more snowmen and tells them he wants the governess ' ice body . The Doctor flees with Clara to the roof of the mansion and then to the TARDIS hovering overhead . They are pursued by the ice governess , whom the Doctor traps under a layer of frozen ice crystals . Inside the TARDIS the Doctor gives Clara a TARDIS key , but the ice governess arrives and pulls Clara down off the cloud . + The Doctor picks up Clara and takes her back to Latimer 's mansion , placing her under medical care of Strax . He collects the ice fragments from the governess and places them in a souvenir London Underground biscuit tin . He and Vastra travel to Simeon 's lab , where the Doctor notes the Intelligence 's plan to replace humanity with ice creatures and holds up the tin with the necessary DNA . Dr Simeon grabs the tin and opens it only to find the memory worm , which latches on to him . The Doctor states that the Great Intelligence , which has been existing as a mirror of Dr Simeon 's thoughts , will vanish with the erasure of Simeon 's memories . Instead , the Intelligence reveals that it existed long enough that it can now control Simeon 's body , which it uses to attack Vastra and the Doctor . The influence of the Great Intelligence quickly wanes , and Simeon falls dead . Outside , a salt @-@ water rain has started , and the Doctor sees that another psychic ability has taken control of the snow from the Great Intelligence : the Latimer family , crying for Clara . Strax informs the Doctor upon his return to the Latimer mansion that Clara only has moments left , and she passes away as the Doctor returns the TARDIS key to her . At her funeral , the Doctor reads Clara 's full name on her tombstone and realises she is the woman he met in " Asylum of the Daleks " who became a Dalek , whom he refers to as " Soufflé Girl " . He gleefully announces that a person dying twice is an impossibility and , bidding farewell to his allies for now , the Doctor departs in the TARDIS to investigate and find Clara . The episode concludes in contemporary times , where a young woman resembling Clara walks through the same graveyard , pausing by Clara 's tombstone . + + = = = Continuity = = = + + The Second Doctor previously encountered the Great Intelligence in the serials The Abominable Snowmen ( 1967 ) , set in the 1930s , and The Web of Fear ( 1968 ) , set in the 1960s . In these stories , the Great Intelligence uses robot Yeti as its physical presence . The events of The Web of Fear are alluded to by the Doctor in " The Snowmen " when he presents the London Underground biscuit tin to the Great Intelligence in Dr Simeon 's laboratory ; the Intelligence states , " I do not understand these markings " , in reference to the 1967 London Underground map design on the tin . The Doctor remarks that the Underground is a " key strategic weakness in metropolitan living " , referring to ( and possibly setting in motion ) the future Yeti attack on London via the Underground . + Coleman previously played Oswin Oswald in " Asylum of the Daleks " , though the connection between the two characters is not clarified until Clara reveals she has an interest in soufflés , a trait that Oswin 's character also had . The Doctor , after meeting Clara , wistfully replies " those were the days " when she asks why he isn 't staying to get acquainted with her , which are the same words he tells Craig Owens ( " Closing Time " ) when Craig comments that the Doctor always wins . The final scenes at the graveyard establish that Clara shares the same name as Oswin , leading the Doctor to surmise they are the same person . As seen on her gravestone , Clara 's birthdate is 23 November , the date Doctor Who was first transmitted in 1963 . + + = = Production = = + + + = = = Writing and design changes = = = + + Writer Steven Moffat stated that he wanted an " epic " quality to the Christmas special . The story would also show how the Doctor had responded to losing his previous companions ; Moffat said that " I think he 's probably reached the point in his life where he 's saying , ' Friendship for me is just postponed bereavement — I want to be on my own for a while ' . " Moffat compared the withdrawn Doctor seen at the onset of the episode to the first appearances of the First Doctor ( William Hartnell ) in 1963 and the Ninth Doctor ( Christopher Eccleston ) in 2005 . He also attributed the idea of a retired Doctor to a plot proposed by Douglas Adams in the 1970s , but rejected by the production team at the time . Continuing the theme introduced with the series ' first five episodes , " The Snowmen " was promoted like a movie . A movie poster was released in the Radio Times , showing the Doctor and Clara ascending the ladder to the TARDIS . + The episode saw several major design changes for the series . " The Snowmen " is the debut of a redesigned TARDIS interior , as well as a new title sequence and variation of the theme tune . The new title sequence features a brief glimpse of the Doctor 's face , the first time since Survival , the final serial of the classic series in 1989 , that the Doctor 's face has been seen in the title sequence . Moffat had noticed that the TARDIS ' design was getting " progressively whimsical " and resembled more of a " magical place " rather than a machine . It was designed by series production designer Michael Pickwood , who stated that the new interior was also supposed to be " darker and moodier " and provide an easier access to the " gallery " of the ship when shooting . + The Doctor also wears a one @-@ off costume , Victorian @-@ themed , which Smith described as " a bit Artful Dodger meets the Doctor " . Moffat described the new outfit as a " progression " as the Doctor was in " a different phase of his life now " and felt more " grown @-@ up " and fatherlike . The costume was designed by Howard Burden for this episode . " The Snowmen " also contains several references to Sherlock Holmes , including the Doctor dressing up as him . Moffat is co @-@ creator of the BBC series Sherlock , for which Smith auditioned for the role of Doctor Watson before being cast as the Doctor . In addition , the incidental music during the scene bears a resemblance to the Sherlock theme . + + = = = Casting = = = + + This episode marks the return of Jenna @-@ Louise Coleman , who previously appeared in the series opener , " Asylum of the Daleks " . Coleman was cast because of her chemistry with Matt Smith , and especially because she was able to talk faster than him . She auditioned for the role of Clara , not Oswin from " Asylum " , as the concept of the two characters being the same only occurred to Moffat whilst casting for Clara . The production team requested that the press and fans who attended advanced screenings keep Coleman 's appearance a secret until " Asylum " was broadcast ; the effort was ultimately successful . Moffat stated that the introduction of a new companion made " the show feel different " and brought the story to " a new beginning " with a different person meeting the Doctor . Smith said that Clara was different from her predecessor Amy Pond ( Karen Gillan ) , which allowed the audience to see a different side of the Doctor . Coleman described her as resourceful and not intimidated , citing the reason for following the Doctor at the beginning as pursuing answers . The Clara who would become a travelling companion of the Doctor would not debut until the Spring premiere , " The Bells of Saint John " ; save for a brief cameo at the end of " The Snowmen " . Coleman stated that she played each version as individuals with " trust that there would be a payoff " to her mystery . + Also returning to the series are Neve McIntosh as Madame Vastra , Dan Starkey as Strax and Catrin Stewart as Jenny . All three previously appeared in " A Good Man Goes to War " and reprised their roles both in this episode and in the prequels . They returned due to the popularity of Vastra and Jenny ; Moffat considered a spin @-@ off featuring them , though he did not have the time to do it . Instead , he decided to bring them back in the main series . Richard E. Grant had previously played the Doctor on two occasions , as an alternative Tenth Doctor in the spoof charity special Doctor Who and the Curse of Fatal Death , which was written by Moffat and as an alternative Ninth Doctor in the animated story Scream of the Shalka which had been intended to be a continuation of the series before it was revived in 2005 . Smith commented that Grant was " born to be a Who villain . He pitches it on that perfect level and tone " . Grant 's appearance in Doctor Who was teased by the BBC via Twitter , announcing his appearance at midnight 5 August 2012 . Tom Ward was drawn to his role because of the quality of the script , and also stated his young children were pleased that he appeared in the programme . The Great Intelligence was voiced by Sir Ian McKellen . The two children Clara is governess to , Digby and Francesca , were played by real @-@ life brother and sister Joseph and Ellie Darcey @-@ Alden . + + = = = Filming and effects = = = + + " The Snowmen " was originally intended to be produced in the fourth production block of the series and be the first episode Coleman shot as her character ; however , it did not begin filming until the week of 6 August 2012 , after Coleman had worked on later episodes while Moffat was writing the Christmas special . The read @-@ through had taken place on 2 August 2012 . This was the first Christmas special to be filmed in BBC Wales ' new Roath Lock studios . Scenes featuring Coleman and several guest stars in a Victorian setting were filmed in Newport , Wales , while Coleman and Smith were also spotted filming in Bristol two weeks later on 21 August . Some scenes which used snow props were filmed in Portland Square , Bristol , where filming took place overnight on 21 – 22 August 2012 . Bristol was chosen because it had Victorian @-@ era architecture . Pickwood stated that his favourite set is the London Street with the back of the pub , which he said was based on a sixteenth @-@ century building in Oxford . The locations were blocked off and sprayed with fake snow . + The TARDIS on the cloud was achieved through a mix of fog on the studio floor and post @-@ production special effects . Director Saul Metzstein explained that it was difficult to achieve the desired look for the snowmen ; the first ones he likened to Zippy from Rainbow which was too " cute " of an appearance , and so the effects team created more menacing CGI faces . Clara 's introduction to the TARDIS introduced two novel effects for the show . The first was a single @-@ shot camera tracking from a few feet away from the TARDIS to its interior , with the implication of the TARDIS 's trans @-@ dimensional nature shown to the audience . In the following shot , the camera does a complete circle of the TARDIS console , an effect not seen since the early days of the show . Metzstein wanted to include this shot to further emphasize the " bigger on the inside than the outside " nature of the time machine . + In addition to the three prequel mini @-@ episodes , the cast also filmed an additional promotional video , " Songtaran Carols , " which the BBC uploaded during the days leading up to the broadcast . The video featured Starkey singing modified versions of several Christmas songs in character as Strax as his castmates look on , before everyone breaks character and begins laughing . + + = = Broadcast and reception = = + + " The Snowmen " aired on BBC One on 25 December 2012 at 5 : 15 pm , the same day on BBC America in the US and Space in Canada and the next day on ABC1 in Australia and on Prime in New Zealand . UK overnight ratings showed that the special had been watched by 7 @.@ 6 million viewers , coming in sixth for the night . Final consolidated figures ( not including BBC iPlayer viewers ) showed that the episode was watched by 9 @.@ 87 million viewers , coming in fourth for the night . It also received an Appreciation Index figure of 87 , higher than most of the Doctor Who Christmas specials . The iPlayer version had 1 @,@ 467 @,@ 220 views , making it the most popular TV show on iPlayer over Christmas . The US airing was seen by 1 @.@ 43 million viewers , with a 0 @.@ 6 rating in the demographic of adults aged 18 – 49 . + + = = = Critical reception = = = + + The episode received mostly positive reviews . Dan Martin of The Guardian called it " actually the best Christmas Special since ' The Christmas Invasion ' " and the first to be " actually scary " , with " everything we like " about Doctor Who and Christmas . He praised Coleman 's introduction as Clara and the gang of Vastra , Jenny , and Strax . IGN 's Matt Risley gave " The Snowmen " a score of 9 @.@ 4 out of 10 , describing it as " a rollicking , riveting masterclass in storytelling " which " refreshingly " lacked traditional Christmas references " in favour of some sparkling dialogue , gorgeous set design and fascinating characterisation " . While he felt that Grant and McKellen were underused , he was very positive towards Coleman 's " unpredictable " Clara . Radio Times reviewer Patrick Mulkern was pleased with the return of the Great Intelligence despite an inconsistency in the timeline he found , and praised the " lovely images " and direction of the special , though he felt the variation of the theme music " lacks the menace " of the original . While he was positive towards Clara , he was " unmoved by her death " as it was " plainly silly " that she did not look injured . + Nick Setchfield of SFX gave the special four and a half out of five stars , writing that " the power of emotion saves the day again " was appropriate in light of the festivities and many fairytales referenced in the story . Setchfield was positive towards the " terrific " comedy with Strax , Coleman and the " surprisingly underused " Grant , as well as the new title sequence and TARDIS . While he wrote that the subtle callback of the Great Intelligence was " a tad more interesting than the usual ' So , we meet again ! ' schtick " , he ultimately felt their threat " never quite comes into sharp relief " . Neela Debnath of The Independent wrote that " The Snowmen " was stronger than the previous year 's " The Doctor , the Widow , and the Wardrobe " as it was connected to the overall story of the series , but " still has a way to go if it is to live up to ' A Christmas Carol ' " . Despite feeling that it was " enjoyable " , she noted that " the story feels truncated and rushed " + The Mirror 's Jon Cooper also praised Coleman and the new side of the Doctor that was shown , comparing it to Rose Tyler ( Billie Piper ) challenging the Ninth Doctor ( Christopher Eccleston ) . However , he felt the character @-@ heavy story was to the detriment of the plot , which was " a classic Who set @-@ up that ultimately suffers from a lack of explanation [ and ] more set @-@ pieces than a coherent whole " . He felt that the episode may not have been accessible for casual viewers , but offered much for fans in time for the programme 's fiftieth anniversary . Dominic Cavendish of The Daily Telegraph gave " The Snowmen " three out of five stars , disappointed that it was not as scary as it had been hyped to be . While he was positive towards Smith and the TARDIS on the cloud , he criticised Strax and the " Sudoku @-@ like complexity " of the script . + The episode was nominated for the 2013 Hugo Award for Best Dramatic Presentation ( Short Form ) , alongside " Asylum of the Daleks " and " The Angels Take Manhattan " , but lost to the Game of Thrones episode " Blackwater " . + + = = DVD release = = + + " The Snowmen " was initially released as a standalone on DVD and Blu @-@ ray in the UK and North America . It was later included as part of the DVD / Blu @-@ ray box set Doctor Who : The Complete Seventh Series in September 2013 . + It has subsequently been reissued in several box set compilations , most recently alongside the Christmas specials between " The Christmas Invasion " and " Last Christmas " inclusive in a boxset titled Doctor Who – The 10 Christmas Specials on 19 October 2015 . + + = = Soundtrack = = + + Selected pieces of score from " The Snowmen " and the preceding Christmas special , as composed by Murray Gold , were included on a soundtrack released on 21 October 2013 by Silva Screen Records . + + + = No. 20 Squadron RAAF = + + No. 20 Squadron is a Royal Australian Air Force ( RAAF ) support squadron . Coming under the control of No. 96 Wing , it is responsible for the management of the airfield at RAAF Base Woomera , South Australia . The squadron originated as a maritime patrol unit during World War II . Raised in August 1941 , it operated PBY Catalina and Short Empire flying boats from bases in New Guinea , Queensland and the Northern Territory , conducting search @-@ and @-@ rescue , mine @-@ laying , anti @-@ submarine and bombing missions against Japanese targets in the Pacific theatre . Following the conclusion of hostilities , the squadron was disbanded in March 1946 . It was reactivated as an airfield support squadron in April 2015 . + + = = History = = + + + = = = World War II = = = + + No. 20 Squadron was formed at Port Moresby , New Guinea , on 1 August 1941 for a general reconnaissance role , under the command of Squadron Leader W.N. Gibson . Its establishment was six PBY Catalina flying boats and 133 personnel , but only five aircraft ( all transferred from No. 11 Squadron ) and 55 personnel were available initially . The squadron conducted long @-@ range patrols between bases scattered around the islands to Australia 's north in conjunction with No. 11 Squadron . On 18 November , No. 20 Squadron 's Catalinas were augmented by two Short Empire flying boats transferred from No. 11 Squadron . + On 25 November 1941 , following the loss of HMAS Sydney , one of No. 20 Squadron 's Catalinas was despatched to Western Australia to join a No. 11 Squadron Catalina in search @-@ and @-@ rescue missions , but they found only oil slicks . By the outbreak of war in the Pacific , No. 20 Squadron had a strength of six Catalinas and two Empire flying boats . Its personnel at the beginning of December numbered 14 officers and 118 men . The squadron undertook its first sortie of the Pacific War on 8 December ; a Catalina located three Japanese luggers in the vicinity of Thursday Island , Queensland . Later in the month it commenced anti @-@ submarine patrols and , in January 1942 , bombing raids against Japanese bases . As the Japanese advanced into the South West Pacific , No. 20 Squadron was also responsible for evacuating white civilians from areas threatened by invasion . On 21 January , one of its Catalinas located the Japanese fleet steaming for Rabaul and signalled a warning to the town 's Australian defenders before being shot down by anti @-@ aircraft fire ; it was the squadron 's first combat loss . + In the wake of the fall of Rabaul , the Catalinas of Nos. 11 and 20 Squadrons became the RAAF 's only offensive weapon against the Japanese . Their raids on Rabaul did little to stem the Japanese advance , and in the following months Port Moresby itself was subjected to increasingly frequent attacks , which destroyed aircraft , facilities , and squadron records . In February 1942 , the Short Empires operated by Nos. 11 and 20 Squadrons were transferred to the newly formed No. 33 ( Transport ) Squadron . No. 20 Squadron lost two Catalinas during patrols on 4 and 6 May ; the nine crewmen of the first were later found to have been captured and beheaded ; the crew of the second were also captured and subsequently disappeared without trace . + In response to the threat of invasion at Port Moresby , Nos. 11 and 20 Squadrons moved to Bowen , Queensland , on 7 May 1942 . They were soon attacking Japanese targets in Lae , Salamaua and Rabaul . On 27 June , each squadron contributed an aircraft to a four @-@ hour raid over Lae and Salamaua during which , as well as bombs , the RAAF crews dropped beer bottles to disrupt the enemy soldiers ' sleep — the sound they made falling through the air was , according to the official history , " something between a shrill whistle and a scream " . By 1 July , No. 20 Squadron 's strength was six Catalinas and 175 personnel , out of a planned establishment of nine aircraft and 415 personnel . Its prime responsibility in early 1942 was maritime reconnaissance as far as New Guinea , the Solomon Islands , and New Caledonia ; the latter half of the year saw a greater focus on night bombing . Now comprising 252 officers and men , the squadron relocated to Cairns on 11 November 1942 . From Cairns it continued to conduct reconnaissance , anti @-@ submarine and occasional bombing operations over the waters around New Guinea . Between December 1942 and March 1943 , No. 20 Squadron 's aircraft flew a total of 9 @,@ 629 hours and dropped 227 tons of bombs . The squadron 's role changed in June 1943 when it commenced mine @-@ laying operations over the Netherlands East Indies and the Philippines , though it continued to make some bombing raids and supply drops . + In September 1944 , No. 20 Squadron became part of No. 76 Wing RAAF , along with Nos. 42 and 43 Squadrons , and moved to Darwin , Northern Territory . All three squadrons operated Catalinas , their primary purpose being mine @-@ laying . On the night of 30 September , a Catalina of No. 20 Squadron was shot down while attacking a ship at Pomelaa in the Dutch East Indies ; the loss was compounded by the fact that one of the coordinators of the mining campaign , Lieutenant Commander P.E. Carr of the Royal Australian Navy , was aboard the plane and was captured by the Japanese . Another of the squadron 's Catalinas went down on the night of 27 / 28 January 1945 , possibly in a cyclone over the Timor Sea , during the campaign to mine Surabaya . In March , a detachment of four No. 20 Squadron aircraft , along with four from No. 43 Squadron , laid mines off the coast of southern China and Formossa as part of a No. 76 Wing offensive in this area ; these operations were conducted from Leyte Gulf in the Philippines . One of No. 20 Squadron 's Catalinas was lost on the night of 7 / 8 March , most likely owing to bad weather rather than enemy action . Three of the squadron 's aircraft mined the entrance to Hong Kong harbour on 8 April and , on 26 May , four of its Catalinas mined Wenchow harbour in China , the furthest north that any Australian aircraft infiltrated during the war in the Pacific . Three of its aircraft flew the RAAF 's last mine @-@ laying mission on 30 July . + No. 20 Squadron 's final wartime sortie was a patrol on 14 August 1945 . Following the end of the war , the squadron operated in the transport role and ferried Australian prisoners of war home from various locations in South East Asia . It relocated to RAAF Station Rathmines , New South Wales , on 21 November . No. 20 Squadron flew its last mission , a transport flight to Balikpapan , on 21 January 1946 , and disbanded at Rathmines on 27 March . + + = = = Post @-@ war re @-@ establishment = = = + + No. 20 Squadron was reactivated on 1 April 2015 to support airfield operations at RAAF Base Woomera , South Australia . Consisting of nine uniformed personnel and one Australian Public Service member under the command of Squadron Leader Simon Bartlett , the squadron formed part of No. 96 Wing , a component of Combat Support Group ( CSG ) . The airfield had previously been managed under the auspices of Aerospace Operational Support Group , but a command @-@ and @-@ control review commissioned by the Chief of Air Force recommended that , in common with other RAAF airfields , it should be administered by CSG . RAAF Base Woomera , incorporating Woomera Village , was one of two Air Force units formally established on 12 January 2015 as part of a reorganisation of the Woomera Range Complex , the other unit being RAAF Woomera Test Range . + The design of the reactivated squadron 's crest includes a wedge @-@ tailed eagle to denote courage and nobility , a woomera spear thrower to symbolise the town and its indigenous heritage , Sturt 's Desert Pea to represent South Australia , and the Pleiades star cluster , which features in the folklore of the local Kokatha people . + + + = Light Tank Mk VII Tetrarch = + + The Light Tank Mk VII ( A17 ) , also known as the Tetrarch , was a British light tank produced by Vickers @-@ Armstrongs in the late 1930s and deployed during the World War II . The Tetrarch was originally designed as the latest in the line of light tanks built by the company for the British Army . It improved upon its predecessor , the Mk VIB Light Tank , by introducing the extra firepower of a 2 @-@ pounder gun . The War Office ordered 70 tanks , an order that eventually increased to 220 . Production was delayed by several factors , and as a consequence , only 100 to 177 of the tanks were produced . + The tank 's design flaws , combined with the decision by the War Office not to use light tanks in British armoured divisions , ruled out the use of Tetrarchs in the North African Campaign . As a result , the majority of the tanks remained in Britain , although 20 were sent to the USSR as part of the Lend @-@ Lease program . In early 1941 , the Royal Armoured Corps formed three squadrons for use in overseas amphibious operations , one of which was equipped with Tetrarchs . In May 1942 , a small number of Tetrarchs formed part of the British force which participated in the invasion of Madagascar , and , in June 1942 , Tetrarchs were attached to the 1st Airborne Division after it was decided that the design allowed its use as an air @-@ portable light tank to support British airborne forces . The Tetrarchs were transported and landed in specially designed General Aircraft Hamilcar gliders . A lack of gliders prevented their participation in the Allied invasion of Sicily in 1943 ; instead they were attached to the new 6th Airborne Division and became part of the 6th Airborne Armoured Reconnaissance Regiment . + The division used approximately 20 Tetrarchs during the British airborne landings in Normandy in June 1944 . The tanks were successfully landed by glider , but they did not perform well . Several were lost in accidents , and those that did see action proved to be inferior in firepower and armour to the armoured fighting vehicles of the German forces . A few days after the beginning of the operation , the tanks were removed from direct engagement with German armour and used only to provide fire support . By August 1944 , most of the Tetrarchs in action were replaced with Cromwell cruiser tanks , and the remainder were replaced by the M22 Locust in December 1944 . + Tetrarchs did not see any further combat and were deemed obsolete by 1946 ; the last was retired in 1950 . There were several variations on the Tetrarch design , including the Alecto self @-@ propelled gun and the Light Tank Mk VIII , but none of these were ever used in active service with the British Army . + + = = Development history = = + + + = = = Initial development = = = + + The prototype of the Light Tank Mk VII ( A17 ) , nicknamed ' Purdah ' , was first developed in 1937 by Vickers @-@ Armstrongs as a private venture , and was intended to be sold either to the British Army or to foreign militaries . It was to be the latest in a series of light tanks produced by the company . The tank was designed to overcome the shortcomings of insufficient armament in earlier light tanks that were fitted only with machine guns . Vickers @-@ Armstrong installed on the Mk VIIs a 2 @-@ pounder 40 @-@ millimetre ( 1 @.@ 6 in ) main gun paired with a 7 @.@ 92 @-@ millimetre ( 0 @.@ 312 in ) Besa machine gun , and mounted the two guns in a two @-@ man turret . The tank possessed a maximum of 14 millimetres ( 0 @.@ 55 in ) of armour . The prototype weighed approximately 16 @,@ 800 pounds ( 7 @,@ 600 kg ) and was powered by a 165 @-@ horsepower ( 123 kW ) Meadows engine . Suspension was on eight road wheels , four per side , with no separate driver or idler wheels and it was capable of a 40 miles per hour ( 64 km / h ) top speed . The Mk VII design relied on an unusual steering method and a mechanical system incorporated into earlier Vickers models . The front wheels could be steered to allow for gentle turns by bending the tracks . For sharper turns , the system returned to the conventional method of braking one track to turn the tank ; the dual system of turning was designed to lessen mechanical strain on the MkVII and reduce its power wastage . The suspension system was also a new design that relied on struts with pockets of air for springing and cushions of oil for damping , and each of the wheels was independently sprung . + The War Office examined the design and put the prototype through a series of trials during May and June 1938 ; the model was tested as a possible " light cruiser " since War Office light tank needs were already met by its predecessor , the Mark VI . The War Office then took the view that the tank was not acceptable as a light cruiser because the Nuffield A13 offered better speed and obstacle crossing performance . Despite this , it was decided that it was essential for some Tetrarchs to be produced , and it was suggested that they be brought in at the end of the light tank program . Accordingly , the War Office gave the Tetrarch the official General Staff specification number A17 , and , in November 1938 , accepted it for limited production after requesting a few minor changes which included the fitting of an external fuel tank to increase the tank 's range . + + = = = Production = = = + + The number to be produced was subject to fluctuation as the War Office vacillated in their demand ; in July 1938 , it requested that 70 of the tanks be produced , then increased the request to 120 after a three @-@ day conference in November . Production was to begin in July 1940 , but meanwhile the War Office temporarily returned to its original order of 70 before increasing the number to 100 . The number further increased to 220 after Metropolitan Cammell Carriage and Wagon , a company part owned by Vickers @-@ Armstrong that would be producing the tanks , indicated it had already ordered armour plating for that many tanks . + Production of the tank was delayed by a number of factors . The War Office put their order on hold in a post @-@ Battle of France decision to focus military production on infantry and cruiser tanks , due to the poor performance of British light tanks during that battle . Due to the shortage of more suitable tanks , light tanks that were not designed for use against German armour , were nevertheless deployed against them ; the resulting high casualties led the War Office to re @-@ evaluate the suitability of the light tank design . The pre @-@ war role of the light tank , that of reconnaissance , meanwhile had been found to be better suited to scout cars that used smaller crews and had better cross @-@ country abilities . Further delays were caused by the bombing raids of the Luftwaffe during May 1941 against the factories where the tanks were assembled . + The cumulative effect of these delays resulted in the production of only a small number of Mk VIIs ; estimates place the final total produced to be between 100 and 177 . The name ' Tetrarch ' was given to the Mk VII , on 22 September 1941 , on the orders of the War Office . The last of the tanks were built in the first quarter of 1942 and delivered at the end of the year . + + = = = Transfer to airborne role = = = + + The War Office and the Army were concluding , at this point , that light tanks were a liability and too vulnerable for use in further combat , and the Tetrarch was considered to be obsolete . This decision may have marked the end for the Tetrarch in active service ; several of the tanks destined to be deployed to the Eighth Army in the Middle East for the North African Campaign were left in Britain when their cooling systems were determined to be unable to cope with the intense North African heat . + The demise of Tetrarch was prevented by a decision made by the War Office in mid @-@ 1941 , as it was considering the equipment to be used by Britain 's fledgling airborne forces , formed in June 1940 under the orders of the Prime Minister , Winston Churchill . When selecting the equipment for the airborne forces , officials at the War Office concluded that gliders would be an integral component ; gliders would transport troops and heavy equipment , which , by 1941 , was to include artillery and some form of tank . Plans to transport a tank went through a number of revisions , but , by May 1941 , the feasibility of a 5 @.@ 5 metric tons ( 5 @.@ 4 long tons ) tank to be carried for 350 miles ( 560 km ) in a glider was accepted , although the aircraft would have to be specifically designed for the task . In a conference held on 16 January 1941 , it was decided that the General Aircraft Hamilcar , currently under development , would be used to transport a single Tetrarch tank or two Universal Carriers . The Tetrarch was chosen because it was an obsolete design , and was therefore available to be used by the airborne forces . + Beginning in January 1944 , training exercises were conducted carrying the Tetrarchs and their crews inside Hamilcar gliders . These exercises were successful ; during the training by ' C ' Squadron of the Glider Pilot Regiment , which specialised in flying the Hamilcars , over 2 @,@ 800 lifts were made with an average of 50 lifts per crew . Only three incidents resulted in fatalities or injuries , with seven pilots killed during the training . When the Tetrarch was re @-@ designated as an airborne tank , several changes were made to its design . A number of tanks had their 2 pounder guns replaced with a 76 @.@ 2 @-@ millimetre ( 3 @.@ 00 in ) infantry support howitzer ; these tanks were then designated as Tetrarch 1 CS ( Close Support ) . Additionally , Littlejohn adaptors were added to those Tetrarchs which still possessed their 2 pounders to increase their muzzle velocity and armour penetration . + The Tetrarch experienced several setbacks throughout its development and deployment with the Army and airborne forces . One of the major problems was the limited number of these tanks that existed after production ended in 1942 , which particularly affected the airborne forces . The transport of 20 of the tanks to the USSR under the Lend @-@ Lease Act depleted the number available for use by airborne forces , as did the loss of several more during Operation Ironclad , the invasion of Madagascar . A Royal Armoured Corps report issued in December 1942 stated that approximately 50 Tetrarchs were available for use . In a memorandum , dated January 1943 , by Major General George F. Hopkinson , commander of the 1st Airborne Division , Hopkinson complained that he had been informed that 70 of the tanks were available , whereas only 50 actually remained , with no reserves to replace those lost in combat . This lack of sufficient replacement reserves , combined with a War Office report that some 287 airborne tanks would be required for the 1st Airborne Division and an unnamed airborne division to be formed in India , led to the Tetrarch 's eventual replacement by the US M22 Locust . + + = = Performance = = + + A number of design faults of the Tetrarch were revealed through its operational use . Its size limited the possible crew to three , a driver in the hull and a gunner and commander in the turret , resulting in too few crew members to operate the Tetrarch effectively . The gunner or commander , in addition to his own duties , had to act as loader for the 2 pounder , which caused delays in combat . A report on the tank written in January 1941 stated that as the commander had to both fight and control the tank , controlling a troop of Tetrarchs during combat would be almost impossible . + Problems were also found with the Littlejohn adaptor fitted to the 2 @-@ pounder to increase its range and penetration power ; after they had been fitted the adapters could not be removed , and could only fire specially designed armour @-@ piercing rounds , which took time to manufacture . + The War Office also considered the Tetrarch 's cooling system faulty , making the tank unsuitable for service in hotter climates , such as the Middle East and North Africa . + + = = Operational history = = + + + = = = Lend @-@ lease = = = + + The first Tetrarchs were delivered to the Army in November 1940 , and were initially deployed with the 1st Armoured Division ( which was being refitted after losing the majority of its previous tanks during the Battle of France ) and the newly formed 6th Armoured Division . However , the faults discovered with the Tetrarch cooling system precluded them from being integrated into units that were sent to the Middle East to participate in the North African Campaign . Shortly after , all light tanks were discarded from the establishments of British armoured divisions as not suitable for further service . + The Tetrarchs remained in Britain , and would probably have been used as training vehicles before being retired from service , but on 22 June 1941 the German invasion of the USSR , Operation Barbarossa began , and the USSR became an ally of Britain . The Lend @-@ Lease program , begun in March 1941 by the United States of America to supply defensive materials to Britain and China , was therefore extended to the USSR . As part of the program , the British government began supplying war materials to the USSR , which in early 1942 , included a shipment of 20 Tetrarchs , as well as a number of Valentine and Matilda Mk I Infantry tanks . The Soviet military utilised a greater number of light tanks than the British , and so could use the Tetrarchs . When the tanks arrived in the USSR , however , it was apparent that the design problems with the cooling system were also present in cold conditions ; additionally , the cold weather had a deleterious effect on the tank 's suspension and tracks . Additional testing of the Tetrarchs was conducted by the Soviet military and the design was admired for its controllability , manoeuvrability , and speed , as well its ability to run on low @-@ quality fuel , unlike contemporary Soviet designs . The thinness of the Tetrarch 's armour was found to be a problem and one which could not be solved , as the weight of extra armour plating caused an unacceptable reduction in the tank 's speed . Despite these drawbacks in the Tetrarch 's design , Soviet authorities believed it to be comparable to the T @-@ 70 light tank in use at the time , and decided that it was suitable to be used in combat . A number of Tetrarchs were sent to Tank Training Schools which were subsequently sent into battle , and in September 1943 two were assigned to the 132nd Separated Tank Battalion , which was attached to the 5th Guards Tank Brigade ; both tanks were destroyed in combat , one on 30 September and the other on 2 October , the latter a casualty of artillery fire . Several were also used for propaganda purposes , appearing in photographs of Soviet troops who were fighting in the Caucasus region . + + = = = Operation Ironclad = = = + + In mid @-@ 1941 , the Royal Armoured Corps in Britain created three tank squadrons for special overseas operations , known as ' A ' , ' B ' and ' C ' Special Service Squadrons . Both ' A ' and ' B ' Squadrons were equipped with Valentine Infantry tanks and Mark VIc light tanks , but ' C ' Squadron was equipped with twelve Tetrarchs transferred from the 2nd Armoured Brigade , 1st Armoured Division . On 31 July 1941 , ' C ' Squadron was officially activated and immediately received orders to prepare for overseas service alongside ' A ' and ' B ' Squadrons in an unspecified tropical climate . All three squadrons were transported to Inverary in Scotland for intensive training that focused on embarkation and disembarkation from ships and landing craft to prepare them for action in potential amphibious operations . In early September , elements of ' C ' Squadron , including six Tetrarchs , formed part of a force which sailed for Freetown in West Africa ; during this period of the war there were fears that the Spanish government might enter the conflict on the side of Germany , and the force was readied to capture a number of Spanish islands off the coast of Africa if this occurred . These fears proved groundless , and in March 1942 , the unit returned to Britain to join the rest of the squadron in training . + The next assignment , Operation Ironclad , was the invasion of Madagascar , the third largest island in the world and then under Vichy French control . The Prime Minister and the Combined Chiefs of Staff decided that Madagascar should be occupied as rapidly as possible to deny the port of Antsirane to Japanese naval forces , which had recently advanced into the Indian Ocean . Operation Ironclad was under the command of Major General Robert G. Sturges and consisted of No. 5 Commando , 29th Independent Brigade Group , and the 17th and 13th brigade groups from 5th Infantry Division . The 29th Brigade formed the core of the invasion force due to its training in amphibious operations , and under its command was ' B ' Special Service Squadron , created by amalgamating six Valentines from ' B ' Squadron and six Tetrarchs from ' C ' Squadron into a single unit . The squadron was formed into four troops , one Headquarters troop of three Valentines and one Tetrarch , one of four Valentines , and two formed from the remaining five Tetrarchs . The invasion force assembled off the west coast of the northern tip of Madagascar on 4 May , near Antsirane and the bay of Diego Suarez . The invasion plan called for an amphibious assault landing on four beaches on the west side of the tip , which would allow the British forces to advance approximately 20 miles ( 32 km ) and approach Antsirane from the rear . Information about the landing beaches , the defences possessed by the port , and the Vichy French defending forces was limited and vague , although it was believed that the defenders had no weapons capable of penetrating the armour of a Valentine tank . + The landings began at 04 : 30 on 5 May , with 5 Commando landing at Courrier Bay and the three infantry brigades and ' B ' Squadron landing at Ambararata Bay . The objective of the infantry brigades and their armoured support was to take control of Antsirane and a nearby town , but although the infantry landed successfully , ' B ' Squadron had more trouble ; the area of beach designated for its landing craft was blocked for several hours after a Tetrarch came loose from a landing craft and became stuck in the sand . The infantry brigades advanced toward Antsirane without the squadron , but eventually two Valentines and a single Tetrarch were dispatched in support , catching up with the lead elements of the infantry near the town of Anamakia . Here the invasion force encountered the first French defences , consisting of camouflaged trenches and pillboxes dug in along a ridge . The tanks attempted to breach them , but the rocky ground made manoeuvring difficult and they could not close with the pillboxes and trenches ; they engaged a number of targets with 2 pounder and machine @-@ gun fire , but the line had to be cleared by an infantry assault later in the day . The tanks were ordered to outflank the defences and advance further into the island , and they were soon joined by two other Tetrarchs dispatched from the beaches ; the small force continued to advance until it encountered the Vichy French main line of defence . This had been built prior to the First World War and included camouflaged pillboxes , machine @-@ gun nests and dug @-@ in 75 mm artillery pieces ; the latter , although not specifically designed for an anti @-@ tank role , could penetrate the armour of both the Tetrarchs and the Valentines . The two Valentines advanced first but were knocked out by artillery fire , and two Tetrarchs that were moving behind them suffered the same fate ; the third Tetrarch retreated in order to report on the French resistance , machine gunning a motorcycle combination and a truck it encountered on the way back . + The commander of the Tetrarch made his report , and was then ordered to take command of four Valentines and two Tetrarchs which had recently arrived and once again attempt to breach the French defences . The tanks followed the road leading to the defensive line and then attempted to out @-@ flank the line by advancing from the right @-@ hand side , using several hills as cover ; the artillery pieces were able to turn and face the assault , however , and one Valentine and one Tetrarch were hit and destroyed . The remaining tanks exchanged several volleys of fire with the artillery pieces before retreating back to their original positions . The French line was eventually broken by 29th Brigade , aided by an amphibious assault by Royal Marines ; the remaining tanks of ' B ' Squadron , two Valentines and three Tetrarchs , remained in defensive positions until the afternoon of 6 May , coming under sporadic artillery fire which disabled another Valentine . The squadron played no further part in the battle , as the Vichy French authorities negotiated a formal surrender the following day , although French troops would continue to engage the British occupying force in guerrilla warfare until late November . ' C ' Squadron suffered heavy casualties during the invasion ; only one Valentine and three Tetrarchs out of twelve tanks were functional by 7 May , and the squadron had suffered seven killed and six wounded . It remained in Madagascar until early 1943 , when it was shipped to India and took part in the Burma Campaign as part of 29th Brigade . + + = = = Operation Tonga = = = + + Because of a lack of equipment training facilities in mid @-@ 1940 , when the British airborne establishment was formed , the War Office was able to accept only 500 volunteers for training as airborne troops . Progress in setting up proper training facilities and acquiring suitable transport aircraft was so slow that the first British airborne operation , Operation Colossus , was conducted by a retrained Commando unit . By 1942 , there existed specifically trained airborne units , including the 1st Airborne Division , and on 19 January 1942 the War Office decided that a light tank unit would be one of the support units attached to the division . This unit , designated the Light Tank Squadron , was to be formed of nineteen light tanks and would operate to the fore of the division , using their tanks ' speed to capture objectives and then holding them until relieved by other units . The obvious unit for conversion was ' C ' Special Services Squadron , as it was trained to act as an independent tank unit and , more importantly , was the only unit that was still using Tetrarchs ; it had been re @-@ designated as an airborne tank by the War Office . ' C ' Squadron was officially transferred to the 1st Airborne Division on 24 June 1942 , bringing with it seven Tetrarchs among its other vehicles . The unit immediately began training , but was not attached to the 1st Airborne Division for long ; during mid @-@ 1943 , the division was transported to the Middle East so it could participate in the Allied invasion of Sicily . ' C ' Squadron remained in Britain , as not enough Hamilcar gliders had been built by the time the division departed to transport its Tetrarchs ; the squadron was transferred to the 6th Airborne Division , which had been raised in April 1943 , and ' C ' Squadron remained with it for the rest of the conflict . The squadron continued to train as an air @-@ portable unit , and participated in a number of exercises to prepare for its new duties , including reconnaissance of enemy positions and counter @-@ attacking enemy infantry and armour . + On 13 December 1943 , the War Office decided to expand the squadron into a regiment equipped with a combination of light tanks and conventional reconnaissance vehicles such as scout cars , and on 1 April 1944 , it was re @-@ designated as the 6th Airborne Armoured Reconnaissance Regiment . The regiment consisted of a Headquarters Squadron , a Light Tank Squadron and a Reconnaissance Squadron ; two Tetrarchs , the Mark 1 CS variation , were attached to the Headquarters Squadron , but the Light Tank Squadron , also known as ' A ' Squadron , received the majority of the Tetrarchs . ' A ' Squadron had approximately nineteen Tetrarchs split between six troops , two of which were of the CS variation and the rest were armed with 2 pounders fitted with Littlejohn adaptors . On 24 May 1944 , after participating in a further series of exercises and manoeuvres , ' A ' Squadron moved from their training area to a transit camp at Tarrant Rushton airfield , while the rest of the regiment moved to RAF Brize Norton airfield the next day ; from these two airfields , the regiment would be transported from to participate in the British airborne landings in Normandy . The operation began on the night of 5 June , with the deployment of 6th Airborne Division to eastern Normandy . It was tasked with protecting the eastern flank of the Allied seaborne landings , securing strategically important areas east of Caen , capturing several important bridges over the Caen Canal and River Dives , and destroying a coastal artillery battery . Insufficient transport aircraft were available to land all three of the division 's brigades simultaneously ; one would have to be landed in a second lift later in the day . Major General Richard Gale had initially intended for the 6th Airlanding Brigade , to which the 6th Airborne Armoured Reconnaissance Regiment was attached , to be landed first ; however , aerial photography revealed that anti @-@ glider poles had been erected in the landing zone selected for the brigade . Therefore , Gale decided that the 3rd Parachute Brigade and 5th Parachute Brigade ( which did not utilise gliders ) should land in the first lift to clear the landing zones , allowing the 6th Airlanding Brigade to land in the second lift . + The Horsa and Hamilcar gliders of the brigade landed at 21 : 00 on 6 June in a landing zone cleared of obstructions by the 5th Parachute Brigade . The primary tasks of the brigade were to bring in reinforcements and supplies , and to aid the two parachute brigades in consolidating the area held by the division ; the 6th Airborne Armoured Reconnaissance Squadron was to aid in the latter task , acting as a reconnaissance force to scout out German positions and impede the movement of German forces attempting to counter @-@ attack . The Tetrarchs of ' A ' Squadron were to play an integral part in this reconnaissance role due to their speed , but the squadron 's strength of twenty tanks was severely depleted by the time it landed in Normandy . It lost one tank before the formation landed when the Tetrarch broke loose of its shackles and crashed through the nose of the glider that was carrying it , causing both to fall into the sea mid @-@ flight . The squadron 's strength was further weakened when two gliders collided with each other in the landing zone , destroying themselves and the Tetrarchs they carried ; a third Hamilcar hit another Tetrarch as it was being unloaded and flipped the tank upside down , rendering it unusable , although the crew escaped without injury . The surviving tanks were then rendered temporarily immobile when parachute rigging lines became tangled in their suspensions , forcing their crews to cut the lines away with welding torches . + The squadron retrieved all of the remaining Tetrarchs and advanced to the south of the landing zone to link up with the rest of the regiment ; there , they received orders to support the 8th Parachute Battalion in the Bois de Bavent area and conduct reconnaissance duties . After linking with the battalion , the squadron began reconnoitring , and engaged German infantry and armour they encountered . By the end of 7 June , two Tetrarchs had been lost to enemy action , one destroyed by a German self @-@ propelled gun and the second by hitting a mine . The division was reinforced by British troops who were advancing from the invasion beaches and it began to push through Normandy , while the squadron continued its reconnaissance duties . At this time , Gale decided to avoid , when possible , engaging the Tetrarchs with German armour , as they proved to be completely outclassed by the German tanks and self @-@ propelled guns , such as the Panzer IV and the Sturmgeschütz III . Instead , when the division required armoured support , it summoned it from armoured units outside the division , and the Tetrarchs were used to support infantry patrols and provide fire support . By August , in the division 's preparation for the planned breakout from the Normandy bridgehead , the majority of Tetrarchs in ' A ' Squadron were replaced with Cromwell fast cruiser tanks ; only three Tetrarchs remained , assigned to the Headquarters troop of ' A ' Squadron . + + = = = Post @-@ war = = = + + Operation Tonga was the last that Tetrarchs saw of active combat . During the first week of October 1944 , the 6th Airborne Armoured Reconnaissance Regiment underwent an extensive reorganization , in which it was completely restructured , and all the remaining Tetrarchs were retired . They were replaced with the M22 Locust , a purpose @-@ built airborne light tank of American design ; eight Locusts were used by the regiment in March 1945 during Operation Varsity , the airborne operation to cross the river Rhine . A report issued by the Director ( Air ) of the War Office in January 1946 confirmed that the Tetrarch design was considered obsolete , and any light tanks used in post @-@ war airborne formations would be entirely new in design . A small number of Tetrarchs remained in service with the 3rd Hussars until 1949 ; a Hamilcar glider flight was stationed at RAF Fairford , and a troop of Tetrarchs was kept by the regiment for training exercises with the gliders . However , glider training by the regiment was stopped in 1950 and the Tetrarchs withdrawn from service . + + = = Variants = = + + There were several variants of the Tetrarch design . The first was the Light Tank Mk VIII , Vickers @-@ Armstrong 's proposed successor to the Tetrarch . The Mark VIII was also known as the Harry Hopkins , named after President Roosevelt 's chief diplomatic advisor , and was given the General Staff design number A25 by the War Office . The Mark VIII was intended to improve upon the design of the Tetrarch in a number of areas . It had thicker armour than the Tetrarch , with the front hull and turret armour increased to a thickness of 38 millimetres ( 1 @.@ 5 in ) and the side armour to 17 millimetres ( 0 @.@ 67 in ) , and the turret and hull given more sloped surfaces to help deflect shells fired at the tank . The dimensions of the Tetrarch were also changed ; the Mark VIII was longer by 6 inches ( 0 @.@ 15 m ) , wider by 1 foot 3 inches ( 0 @.@ 38 m ) and heavier . The new tank was no longer air @-@ portable , as it was too heavy to be carried by a Hamilcar . The 12 @-@ cylinder engine of the Tetrarch was fitted to the Mark VIII , although the increased weight meant that its maximum speed decreased to 30 miles per hour ( 48 km / h ) ; its armament also remained the same as that of the Tetrarch . The War Office authorised the construction of three prototype models in April 1941 . The new design was considered a success , and the Tank Board of the War Office ordered 1 @,@ 000 to be constructed in September . However , problems were encountered with further tests of the prototypes , and a report issued in December 1942 stated that production of the Mark VIII had been delayed due to developmental problems . These problems continued to persist into 1943 , when the War Office decided against using the tank in active service ; approximately 100 Mark VIIIs were produced by 1945 , when production ended . + A second variant on the Tetrarch design was the Tetrarch Duplex Drive ( " Tetrarch DD " ) . The Duplex Drive system was invented by Nicholas Straussler , and was designed to allow a tank to ' swim ' through water and participate in amphibious operations . The system functioned by erecting a large waterproof canvas screen around the tank above its tracks , which was supported by thirty @-@ six inflatable tubes and steel struts ; this gave the tank sufficient buoyancy to float , and was then propelled along by a small propeller powered by the tank 's engine . The screen could be collapsed by using a small explosive charge once the tank reached land . The system was fitted during June 1941 , as the Tetrarch was the lightest light tank available at the time ; the converted tank was successfully tested on a number of lakes and reservoirs , allowing the Duplex Drive system to be tested on heavier tanks , such as the Valentine . The system would be used during Operation Overlord , when M4 Sherman medium tanks would land on the invasion beaches . + + + = QuackShot = + + QuackShot , known in Japan as I Love Donald Duck : Georgia Ou no Hihou ( Japanese : アイラブドナルドダック グルジア王の秘宝 , Hepburn : Ai Rabu Donarudo Dakku Gurujia Ō no Hihō ) , is a 1991 platforming video game developed and published by Sega for the Sega Genesis . The game was released in Europe in 1991 , in North America on December 19 , 1991 and in Japan on December 20 , 1991 . QuackShot stars Donald Duck and his three nephews , Huey , Dewey , and Louie , as treasure @-@ hunters , and is part of a series of games published by Sega that were based on Walt Disney cartoon characters . + QuackShot was released to mostly positive reviews from video game journalists . The game was universally lauded for its graphics , with magazines like Sega Pro describing them as " some of the best graphics around . " The game was also praised for its music and puzzles , as well as their clever use in the game . However , QuackShot was criticized for its controls , being described by IGN as " float @-@ y " and making certain segments of the game unnecessarily difficult . The game was also criticized for its lack of difficulty overall as well as its lack of speech samples , which several other Genesis games of the time had . + + = = Gameplay = = + + The player , as Donald , ventures through a variety of side @-@ scrolling levels . Generally , each level is divided into an overland part and a dungeon , such as the Maharajah 's palace or the temple in which the Great Duck Treasure resides . Although the player may choose any order to play the overland sections , various obstacles prevent the player from entering the dungeons outside of a specific order . In addition to this , some levels provide the player with vital clues which solve puzzles needed to progress in later sections . Once Donald has completed the overland section of an area , he may leave by calling his nephews ' biplane , and will return to the dungeon entrance of that area if the player chooses to return . + Donald is armed with a special gun that can shoot plungers , popcorn or bubble gum . Donald has unlimited plungers which can only temporarily stun enemies ( though bosses can still be damaged with plungers ) , and can collect popcorn and gum along the way or get the latter from Gyro Gearloose . Later in the game , the plunger is upgraded to act as a temporary platform to climb walls with and , when stuck to a passing bird , allows Donald to traverse longer distances . In Duckburg , India and Egypt , Donald can also pick up chili peppers which increase his temper , eventually temporarily allowing him to become invincible , increase his speed and knock out enemies in his path . + + = = Plot = = + + While Donald is flipping through some books in Scrooge McDuck 's library , a map falls out of a book relating to the treasure of King Garuzia , ruler of the Great Duck Kingdom in ancient times . The map leads to the location of the king 's most prized possession , hidden in a secret place shortly before his death . Donald thinks this is his path to riches . Unfortunately Big Bad Pete overhears and pursues Donald throughout the game hoping to steal the treasure . + Teamed with his nephews Huey , Dewey , and Louie , and using the partial map from the library , Donald begins his search in Duckburg , with the trail being directed to an Aztec pyramid in Mexico . Outside the pyramid , he is directed by a " sweet seniorita " to obtain a " hero key " from an explorer back in Duckburg to open the pyramid . Inside the pyramid , Donald meets Goofy , who gives him a strange note and a plunger to help him reach higher places , and tells him that Gyro Gearloose is looking for him back in Duckburg . Travelling across the rooftops of Duckburg to meet Gyro , Donald is given Gyro 's latest invention , bubblegum ammo that can break through walls . The last location on the partial map is Count Dracula 's castle in Transylvania , where Donald encounters a ghost who tells him that the Count carries the real treasure map . + After defeating Dracula , Donald receives a more complete map . In India , Donald enters the palace of the Maharajah , where she challenges him to defeat the tiger in her garden in exchange for a Sphinx Tear . Donald succeeds and receives the Sphinx Tear , which is the key to open a temple in Egypt . Donald is able to solve the " Riddle of the Sphinx " using the note Goofy had given him , and obtains the Scepter of Ra before escaping in a mine cart . From there , he journeys to the South Pole , where he finds a key frozen in ice , and uses the Scepter of Ra to melt the ice and grab the key . The key unlocks the hold of a Viking ship , which contains an ancient diary with the secret to locating the treasure . The ship is haunted by ghosts , and the Viking captain sends Donald below decks to get rid of them . After defeating a skeletal Viking warrior , Donald returns to the deck , where the captain informs him that the diary is hidden in ice near the South Pole , and gives him an " ancient Viking plunger " that attaches to flying creatures . Donald then returns to the South Pole , hitching a ride on one of Pete 's bird minions to reach the diary . + However , upon finding the diary , Pete shows up , holding Donald 's nephews hostage in exchange for the diary . After giving Pete the diary , Donald travels to Pete 's hideout to defeat Pete and get the diary back . The diary reveals that the map , when dipped in water , will reveal the location of the Great Duck Treasure . Donald flies to the island where the treasure is hidden and manages to evade its traps in order to reach the treasure vault . After defeating the ancient spirit guarding the treasure , Donald opens the vault only to find a simple stone statue . When the disappointed Donald returns home , Huey , Dewey and Louie accidentally break the statue , which reveals a golden jeweled necklace was hidden inside . Donald gives the necklace to Daisy and the two fly off into the sunset together . + + = = Development and release = = + + QuackShot was developed and published by Sega for the Sega Genesis as part of a series of games that were based on Walt Disney cartoon characters . The game was released in Europe in 1991 , in North America on December 19 , 1991 and in Japan on December 20 , 1991 . QuackShot was later released as part of a bundle called The Disney Collection for Genesis in 1996 alongside Castle of Illusion . The game was also ported to the Sega Saturn and released exclusively in Japan alongside Castle of Illusion again as part of the Sega Ages series in 1998 , entitled Sega Ages : I Love Mickey Mouse . + + = = Reception = = + + QuackShot received a mostly positive response from critics upon release . GameRankings , an aggregator for video game reviews , assigned the game a score of 77 % based on 2 reviews . Mega placed the game at # 7 in their " Top Mega Drive Games of All Time " list . MegaTech magazine praised the game 's graphics , but criticized the game 's easy difficulty level , explaining simply that " the graphics are excellent , but the game is easy to complete . " Damian Butt from Sega Pro also praised the graphics , stating that the game has " without [ a ] doubt some of the best graphics around " and that " the sprites and backgrounds are consistently excellent . " He also noted the game 's various puzzles and their use in the game , explaining that " [ e ] ven if the ideas are not original , the way they are strung together to accelerate the pace to overload is nothing short of breath @-@ taking . " Levi Buchanan from IGN gave QuackShot a 7 @.@ 3 / 10 , also lauding the graphics and animation as excellent and saying the music was pleasing . + Butt criticized Donald 's controls in certain situations in the game , as well as the difficulty of some levels and puzzles . Buchanan also criticized the controls , calling them " float @-@ y " and noted the difficulty in executing precision jumps , explaining that " [ i ] t 's far too easy to over- or under @-@ shoot a narrow column and slip to your doom . " Butt was also " dubious of the number of credits , " stating that the game may seem easy with unlimited continues , but that the player will " still need considerable skill to reach the treasure island . " Buchanan was disappointed with the lack of speech samples , explaining that it 's " a bit of a drag with a character that is so defined by his voice . " Ultimately , Butt said that " [ y ] ounger players will instantly be enthralled by Donald 's quest " and that " QuackShot is everything a cartoon game should be and more . " Buchanan summed up the game as being a " good platformer tripped up by some questionable controls " and recommended the game as " a mildly enjoyable 16 @-@ bit platformer that would fit nicely in your Genesis collection . " + + + = Olmec colossal heads = + + The Olmec colossal heads are at least seventeen monumental stone representations of human heads sculpted from large basalt boulders . The heads date from at least before 900 BC and are a distinctive feature of the Olmec civilization of ancient Mesoamerica . All portray mature men with fleshy cheeks , flat noses , and slightly crossed eyes ; their physical characteristics correspond to a type that is still common among the inhabitants of Tabasco and Veracruz . The backs of the monuments often are flat . The boulders were brought from the Sierra de los Tuxtlas mountains of Veracruz . Given that the extremely large slabs of stone used in their production were transported over large distances , requiring a great deal of human effort and resources , it is thought that the monuments represent portraits of powerful individual Olmec rulers . Each of the known examples has a distinctive headdress . The heads were variously arranged in lines or groups at major Olmec centres , but the method and logistics used to transport the stone to these sites remain unclear . + The discovery of a colossal head at Tres Zapotes in the nineteenth century spurred the first archaeological investigations of Olmec culture by Matthew Stirling in 1938 . Seventeen confirmed examples are known from four sites within the Olmec heartland on the Gulf Coast of Mexico . Most colossal heads were sculpted from spherical boulders but two from San Lorenzo Tenochtitlán were re @-@ carved from massive stone thrones . An additional monument , at Takalik Abaj in Guatemala , is a throne that may have been carved from a colossal head . This is the only known example from outside the Olmec heartland . + Dating the monuments remains difficult because of the movement of many from their original contexts prior to archaeological investigation . Most have been dated to the Early Preclassic period ( 1500 – 1000 BC ) with some to the Middle Preclassic ( 1000 – 400 BC ) period . The smallest weigh 6 tons , while the largest is variously estimated to weigh 40 to 50 tons , although it was abandoned and left unfinished close to the source of its stone . + + = = Olmec civilization = = + + The Olmec civilization developed in the lowlands of southeastern Mexico between 1500 and 400 BC . The Olmec heartland lies on the Gulf Coast of Mexico within the states of Veracruz and Tabasco , an area measuring approximately 275 kilometres ( 171 mi ) east to west and extending about 100 kilometres ( 62 mi ) inland from the coast . The Olmecs are regarded as the first civilization to develop in Mesoamerica and the Olmec heartland is one of six cradles of civilization worldwide , the others being the Norte Chico culture of South America , the Erlitou culture of China 's Yellow River , the Indus Valley Civilization of south Asia , the civilization of ancient Egypt and the Sumerian civilization of ancient Iraq . Of these , only the Olmec civilization developed in a lowland tropical forest setting . + The Olmecs were the first inhabitants of the Americas to construct monumental architecture and to settle in towns and cities . They were also the first people in the Americas to develop a sophisticated style of stone sculpture . In the first decade of the 21st century evidence emerged of Olmec writing , with the earliest examples of Olmec hieroglyphs dating to around 650 BC . Examples of script have been found on roller stamps and stone artefacts ; the texts are short and have been partially deciphered based on their similarity to other Mesoamerican scripts . The evidence of complex society developing in the Olmec heartland has led to the Olmecs being regarded as the " Mother Culture " of Mesoamerica , although this concept remains controversial . + Some of the Olmecs ' rulers seem to have served religious functions . The city of San Lorenzo was succeeded as the main centre of the civilization by La Venta in about 900 BC , with Tres Zapotes and Laguna de los Cerros possibly sharing the role ; other urban centres were much less significant . The nature and degree of the control exercised by the centres over a widespread rural population remains unclear . Very fine Olmec art , much clearly made for an elite , survives in several forms , notably Olmec figurines , and larger sculptures such as The Wrestler . The figurines have been recovered in large numbers and are mostly in pottery ; these were presumably widely available to the population . Together with these , of particular relevance to the colossal heads are the " Olmec @-@ style masks " in stone , so called because none have yet been excavated in circumstances that allow the proper archaeological identification of an Olmec context . These evocative stone face masks present both similarities and differences to the colossal heads . Two thirds of Olmec monumental sculpture represents the human form , and the colossal heads fall within this major theme of Olmec art . + + = = Dating = = + + The colossal heads cannot be precisely dated . However , the San Lorenzo heads were buried by 900 BC , indicating that their period of manufacture and use was earlier still . The heads from Tres Zapotes had been moved from their original context before they were investigated by archaeologists and the heads from La Venta were found partially exposed on the modern ground surface . The period of production of the colossal heads is therefore unknown , as is whether it spanned a century or a millennium . Estimates of the time span during which colossal heads were produced vary from 50 to 200 years . The San Lorenzo heads are believed to be the oldest , and are the most skillfully executed . All of the stone heads have been assigned to the Preclassic period of Mesoamerican chronology , generally to the Early Preclassic ( 1500 – 1000 BC ) , although the two Tres Zapotes heads and the La Cobata Head are attributed to the Middle Preclassic ( 1000 – 400 BC ) . + + = = Characteristics = = + + Olmec colossal heads vary in height from 1 @.@ 47 to 3 @.@ 4 metres ( 4 @.@ 8 to 11 @.@ 2 ft ) and weigh between 6 and 50 tons . All of the Olmec colossal heads depict mature men with flat noses and fleshy cheeks ; the eyes tend to be slightly crossed . The general physical characteristics of the heads are of a type that is still common among people in the Olmec region in modern times . The backs of the heads are often flat , as if the monuments were originally placed against a wall . All examples of Olmec colossal heads wear distinctive headdresses that probably represent cloth or animal hide originals . Some examples have a tied knot at the back of the head , and some are decorated with feathers . A head from La Venta is decorated with the head of a bird . There are similarities between the headdresses on some of the heads that has led to speculation that specific headdresses may represent different dynasties , or perhaps identify specific rulers . Most of the heads wear large earspools inserted into the ear lobes . + All of the heads are realistic , unidealised and frank descriptions of the men . It is likely that they were portraits of living ( or recently deceased ) rulers well known to the sculptors . Each head is distinct and naturalistic , displaying individualised features . They were once thought to represent ballplayers although this theory is no longer widely held ; it is possible , however , that they represent rulers equipped for the Mesoamerican ballgame . Facial expressions depicted on the heads vary from stern through placid to smiling . The most naturalistic Olmec art is the earliest , appearing suddenly without surviving antecedents , with a tendency towards more stylised sculpture as time progressed . Some surviving examples of wooden sculpture recovered from El Manatí demonstrate that the Olmecs are likely to have created many more perishable sculptures than works sculpted from stone . + In the late nineteenth century , José Melgar y Serrano described a colossal head as having " Ethiopian " features and speculations that the Olmec had African origins resurfaced in 1960 in the work of Alfonso Medellín Zenil and in the 1970s in the writings of Ivan van Sertima . Such speculation is not taken seriously by Mesoamerican scholars such as Richard Diehl and Ann Cyphers . + Although all the colossal heads are broadly similar , there are distinct stylistic differences in their execution . One of the heads from San Lorenzo bears traces of plaster and red paint , suggesting that the heads were originally brightly decorated . Heads did not just represent individual Olmec rulers ; they also incorporated the very concept of rulership itself . + + = = Manufacture = = + + The production of each colossal head must have been carefully planned , given the effort required to ensure the necessary resources were available ; it seems likely that only the more powerful Olmec rulers were able to mobilise such resources . The workforce would have included sculptors , labourers , overseers , boatmen , woodworkers and other artesans producing the tools to make and move the monument , in addition to the support needed to feed and otherwise attend to these workers . The seasonal and agricultural cycles and river levels needed to have been taken into account to plan the production of the monument and the whole project may well have taken years from beginning to end . + Archaeological investigation of Olmec basalt workshops suggest that the colossal heads were first roughly shaped using direct percussion to chip away both large and small flakes of stone . The sculpture was then refined by retouching the surface using hammerstones , which were generally rounded cobbles that could be of the same basalt as the monument itself , although this was not always the case . Abrasives were found in association with workshops at San Lorenzo , indicating their use in the finishing of fine detail . Olmec colossal heads were fashioned as in @-@ the @-@ round monuments with varying levels of relief on the same work ; they tended to feature higher relief on the face and lower relief on the earspools and headdresses . Monument 20 at San Lorenzo is an extensively damaged throne with a figure emerging from a niche . Its sides were broken away and it was dragged to another location before being abandoned . It is possible that this damage was caused by the initial stages of re @-@ carving the monument into a colossal head but that the work was never completed . + All seventeen of the confirmed heads in the Olmec heartland were sculpted from basalt mined in the Sierra de los Tuxtlas mountains of Veracruz . Most were formed from coarse grained dark grey basalt known as Cerro Cintepec basalt after a volcano in the range . Investigators have proposed that large Cerro Cintepec basalt boulders found on the southeastern slopes of the mountains are the source of the stone for the monuments . These boulders are found in an area affected by large lahars ( volcanic mudslides ) that carried substantial blocks of stone down the mountain slopes , which suggests that the Olmecs did not need to quarry the raw material for sculpting the heads . Roughly spherical boulders were carefully selected to mimic the shape of a human head . The stone for the San Lorenzo and La Venta heads was transported a considerable distance from the source . The La Cobata head was found on El Vigia hill in the Sierra de los Tuxtlas and the stone from Tres Zapotes Colossal Head 1 and Nestepe Colossal Head 1 ( also known as Tres Zapotes Monuments A and Q ) came from the same hill . + The boulders were transported over 150 kilometres ( 93 mi ) from the source of the stone . The exact method of transportation of such large masses of rock are unknown , especially since the Olmecs lacked beasts of burden and functional wheels , and they were likely to have used water transport whenever possible . Coastal currents of the Gulf of Mexico and in river estuaries might have made the waterborne transport of monuments weighing 20 tons or more impractical . Two badly damaged Olmec sculptures depict rectangular stone blocks bound with ropes . A largely destroyed human figure rides upon each block , with their legs hanging over the side . These sculptures may well depict Olmec rulers overseeing the transport of the stone that would be fashioned into their monuments . When transport over land was necessary , the Olmecs are likely to have used causeways , ramps and roads to facilitate moving the heads . The regional terrain offers significant obstacles such as swamps and floodplains ; avoiding these would have necessitated crossing undulating hill country . The construction of temporary causeways using the suitable and plentiful floodplain soils would have allowed a direct route across the floodplains to the San Lorenzo Plateau . Earth structures such as mounds , platforms and causeways upon the plateau demonstrate that the Olmec possessed the necessary knowledge and could commit the resources to build large @-@ scale earthworks . + The flat backs of many of the colossal heads represented the flat bases of the monumental thrones from which they were reworked . Only four of the seventeen heartland heads do not have flattened backs , indicating the possibility that the majority were reworked monuments . Alternatively , the backs of many of these massive monuments may have been flattened to ease their transport , providing a stable form for hauling the monuments with ropes . Two heads from San Lorenzo have traces of niches that are characteristic of monumental Olmec thrones and so were definitely reworked from earlier monuments . + + = = Known monuments = = + + Seventeen confirmed examples are known . An additional monument , at Takalik Abaj in Guatemala , is a throne that may have been carved from a colossal head . This is the only known example outside of the Olmec heartland on the Gulf Coast of Mexico . Possible fragments of additional colossal heads have been recovered at San Lorenzo and at San Fernando in Tabasco . Crude colossal stone heads are also known in the Southern Maya area where they are associated with the potbelly style of sculpture . Although some arguments have been made that they are pre @-@ Olmec , these latter monuments are generally believed to be influenced by the Olmec style of sculpture . + + = = = San Lorenzo = = = + + The ten colossal heads from San Lorenzo originally formed two roughly parallel lines running north @-@ south across the site . Although some were recovered from ravines , they were found close to their original placements and had been buried by local erosion . These heads , together with a number of monumental stone thrones , probably formed a processional route across the site , powerfully displaying its dynastic history . Two of the San Lorenzo heads had been re @-@ carved from older thrones . + San Lorenzo Colossal Head 1 ( also known as San Lorenzo Monument 1 ) was lying facing upwards when excavated . The erosion of a path passing on top of the monument uncovered its eye and led to the discovery of the Olmec site . Colossal Head 1 is 2 @.@ 84 metres ( 9 @.@ 3 ft ) high ; it measures 2 @.@ 11 metres ( 6 @.@ 9 ft ) wide and it weighs 25 @.@ 3 tons . The monument was discovered partially buried at the edge of a gully by Matthew Stirling in 1945 . When discovered it was lying on its back , looking upwards . It was associated with a large number of broken ceramic vessels and figurines . The majority of these ceramic remains have been dated to between 800 and 400 BC ; some pieces have been dated to the Villa Alta phase ( Late Classic period , 800 – 1000 AD ) . The headdress possesses a plain band that is tied at the back of the head . The upper portion of the headdress is decorated with a U @-@ shaped motif . This element descends across the front of the headdress , terminating on the forehead . On the front portion it is decorated with five semicircular motifs . The scalp piece does not meet the horizontal band , leaving a space between the two pieces . On each side of the face a strap descends from the headdress and passes in front of the ear . The forehead is wrinkled in a frown . The lips are slightly parted without revealing the teeth . The cheeks are pronounced and the ears are particularly well executed . The face is slightly asymmetric , which may be due to error on the part of the sculptors or may accurately reflect the physical features of the portrait 's subject . The head has been moved to the Museo de Antropología de Xalapa ( " Anthropological Museum of Xalapa " ) . + San Lorenzo Colossal Head 2 ( also known as San Lorenzo Monument 2 ) was reworked from a monumental throne . The head stands 2 @.@ 69 metres ( 8 @.@ 8 ft ) high and measures 1 @.@ 83 metres ( 6 @.@ 0 ft ) wide by 1 @.@ 05 metres ( 3 @.@ 4 ft ) deep ; it weighs 20 tons . Colossal Head 2 was discovered in 1945 when Matthew Stirling 's guide cleared away some of the vegetation and mud that covered it . The monument was found lying on its back , facing the sky , and was excavated in 1946 by Stirling and Philip Drucker . In 1962 the monument was removed from the San Lorenzo plateau in order to put it on display as part of " The Olmec tradition " exhibition at the Museum of Fine Arts in Houston in 1963 . San Lorenzo Colossal Head 2 is currently in the Museo Nacional de Antropología in Mexico City . The head was associated with a number of ceramic finds ; they have been dated to the Early Preclassic and Late Classic periods . Colossal Head 2 wears a complex headdress that sports a horizontal band tied at the back of the head ; this is decorated with three bird 's heads that are located above the forehead and temples . The scalp piece is formed from six strips running towards the back of the head . The front of the headdress above the horizontal band is plain . Two short straps hang down from the headdress in front of the ears . The ear jewellery is formed by large squared hoops or framed discs . The left and right ornaments are different , with radial lines on the left earflare , a feature absent on the right earflare . The head is badly damaged due to an unfinished reworking process . This process has pitmarked the entire face with at least 60 smaller hollows and 2 larger holes . The surviving features appear to depict an ageing man with the forehead creased into a frown . The lips are thick and slightly parted to reveal the teeth ; the head has a pronounced chin . + San Lorenzo Colossal Head 3 is also known as San Lorenzo Monument 3 . The head measures 1 @.@ 78 metres ( 5 @.@ 8 ft ) high by 1 @.@ 63 metres ( 5 @.@ 3 ft ) wide by 0 @.@ 95 metres ( 3 @.@ 1 ft ) deep and weighs 9 @.@ 4 tons . The head was discovered in a deep gully by Matthew Stirling in 1946 ; it was found lying face down and its excavation was difficult due to the wet conditions in the gully . The monument was found 0 @.@ 8 kilometres ( 0 @.@ 50 mi ) southwest of the main mound at San Lorenzo , however , its original location is unknown ; erosion of the gully may have resulted in significant movement of the sculpture . Head 3 has been moved to the Museo de Antropología de Xalapa . The headdress is complex , with the horizontal basal band being formed by four horizontal cords , with diagonal folds above each eye . A small skullcap tops the headdress . A large flap formed of four cords drops down both sides of the head , completely covering the ears . The face has a typically frowning brow and , unusually , has clearly defined eyelids . The lips are thick and slightly parted ; the front of the lower lip has broken away completely , and the lower front of the headdress is pitted with 27 irregularly spaced artificial depressions . + San Lorenzo Colossal Head 4 ( also known as San Lorenzo Monument 4 ) weighs 6 tons and has been moved to the Museo de Antropología de Xalapa . Colossal Head 4 is 1 @.@ 78 metres ( 5 @.@ 8 ft ) high , 1 @.@ 17 metres ( 3 @.@ 8 ft ) wide and 0 @.@ 95 metres ( 3 @.@ 1 ft ) deep . The head was discovered by Matthew Stirling in 1946 , 550 metres ( 600 yd ) northwest of the principal mound , at the edge of a gully . When excavated , it was found to be lying on its right @-@ hand side and in a very good state of preservation . Ceramic materials excavated with the head became mixed with ceramics associated with Head 5 , making ceramic dating of the monument difficult . The headdress is decorated with a horizontal band formed of four sculpted cords , similar to those of Head 3 . On the right @-@ hand side , three tassels descend from the upper portion of the headdress ; they terminate in a total of eight strips that hang down across the horizontal band . These tassels are judged to represent hair rather than cords . Also on the right hand side , two cords descend across the ear and continue to the base of the monument . On the left @-@ hand side , three vertical cords descend across the ear . The earflare is only visible on the right hand side ; it is formed of a plain disc and peg . The face is that of an ageing man with a creased forehead , low cheekbones and a prominent chin . The lips are thick and slightly parted . + San Lorenzo Colossal Head 5 is also known as San Lorenzo Monument 5 . The monument stands 1 @.@ 86 metres ( 6 @.@ 1 ft ) high and measures 1 @.@ 47 metres ( 4 @.@ 8 ft ) wide by 1 @.@ 15 metres ( 3 @.@ 8 ft ) deep . It weighs 11 @.@ 6 tons . The head was discovered by Matthew Stirling in 1946 , face down in a gully to the south of the principal mound . The head is particularly well executed and is likely to have been found close to its original location . Ceramics recovered during its excavation became mixed with those from the excavation of Head 4 . The mixed ceramics have been dated to the San Lorenzo and Villa Alta phases ( approximately 1400 – 1000 BC and 800 – 1000 AD respectively ) . Colossal Head 5 is particularly well preserved , although the back of the headdress band was damaged when the head was moved from the archaeological site . The band of the headdress is set at an angle and has a notch above the bridge of the nose . The headdress is decorated with jaguar paws ; this general identification of the decoration is contested by Beatriz de la Fuente since the " paws " have three claws each ; she identifies them as the claws of a bird of prey . At the back of the head , ten interlaced strips form a net decorated with disc motifs . Two short straps descend from the headdress in front of the ears . The ears are adorned with disc @-@ shaped earspools with pegs . The face is that of an ageing man with wrinkles under the eyes and across the bridge of the nose , and a forehead that is creased in a frown . The lips are slightly parted . Colossal Head 5 has been moved to the Museo de Antropología de Xalapa . + San Lorenzo Colossal Head 6 ( also known as San Lorenzo Monument 17 ) is one of the smaller examples of colossal heads , standing 1 @.@ 67 metres ( 5 @.@ 5 ft ) . It measures 1 @.@ 41 metres ( 4 @.@ 6 ft ) wide by 1 @.@ 26 metres ( 4 @.@ 1 ft ) deep and is estimated to weigh between 8 and 10 tons . The head was discovered by a local farmworker and was excavated in 1965 by Luis Aveleyra and Román Piña Chan . The head had collapsed into a ravine under its own weight and was found face down on its left hand side . In 1970 it was transported to the Metropolitan Museum of Art in New York for the museum 's centenary exhibition . After its return to Mexico , it was placed in the Museo Nacional de Antropología in Mexico City . It is sculpted with a net @-@ like head covering joined together with sculpted beads . A covering descends from under the headdress to cover the back half of the neck . The headband is divided into four strips and begins above the right ear , extending around the entire head . A short strap descends from either side of the head to the ear . The ear ornaments are complex and are larger at the front of the ear than at the back . The face is that of an ageing male with the forehead creased in a frown , wrinkles under the eyes , sagging cheeks and deep creases on either side of the nose . The face is somewhat asymmetric , possibly due to errors in the execution of the monument . + San Lorenzo Colossal Head 7 ( also known as San Lorenzo Monument 53 ) measures 2 @.@ 7 metres ( 8 @.@ 9 ft ) high by 1 @.@ 85 metres ( 6 @.@ 1 ft ) wide by 1 @.@ 35 metres ( 4 @.@ 4 ft ) deep and weighs 18 tons . San Lorenzo Colossal Head 7 was reworked from a monumental throne ; it was discovered by a joint archaeological project by the Instituto Nacional de Antropología e Historia and Yale University , as a result of a magnetometer survey . It was buried at a depth of less than 1 metre ( 3 @.@ 3 ft ) and was lying facing upwards , leaning slightly northwards on its right hand side . The head is poorly preserved and has suffered both from erosion and deliberate damage . The headdress is decorated with a pair of human hands ; a feathered ornament is carved at the back of the headband and two discs adorn the front . A short strap descends from the headband and hangs in front of the right ear . The head sports large earflares that completely cover the earlobes , although severe erosion makes their exact form difficult to distinguish . The face has wrinkles between the nose and cheeks , sagging cheeks and deep @-@ set eyes ; the lips are badly damaged and the mouth is open , displaying the teeth . In 1986 the head was transported to the Museo de Antropología de Xalapa . + San Lorenzo Colossal Head 8 ( also known as San Lorenzo Monument 61 ) stands 2 @.@ 2 metres ( 7 @.@ 2 ft ) high ; it measures 1 @.@ 65 metres ( 5 @.@ 4 ft ) wide by 1 @.@ 6 metres ( 5 @.@ 2 ft ) deep and weighs 13 tons . It is one of the finest examples of an Olmec colossal head . It was found lying on its side to the south of a monumental throne . The monument was discovered at a depth of 5 metres ( 16 ft ) during a magnetometer survey of the site in 1968 ; it has been dated to the Early Preclassic . After discovery it was initially reburied ; it was moved to the Museo de Antropología de Xalapa in 1986 . The headdress is decorated with the talons or claws of either a jaguar or an eagle . It has a headband and a cover that descends from under the headdress proper behind the ears . Two short straps descend in front of the ears . The head sports large ear ornaments in the form of pegs . The face is that of a mature male with sagging cheeks and wrinkles between these and the nose . The forehead is gathered in a frown . The mouth is slightly parted to reveal the teeth . Most of the head is carved in a realistic manner , the exception being the ears . These are stylised and represented by one question mark shape contained within another . The head is very well preserved and displays a fine finish . + San Lorenzo Colossal Head 9 is also known as San Lorenzo Monument 66 . It measures 1 @.@ 65 metres ( 5 @.@ 4 ft ) high by 1 @.@ 36 metres ( 4 @.@ 5 ft ) wide by 1 @.@ 17 metres ( 3 @.@ 8 ft ) deep . The head was exposed in 1982 by erosion of the gullies at San Lorenzo ; it was found leaning slightly on its right hand side and facing upwards , half covered by the collapsed side of a gully and washed by a stream . Although it was documented by archaeologists , it remained for some time in its place of discovery before being moved to the Museo de Antropología de Xalapa . The headdress is of a single piece without a distinct headband . The sides display features that are possibly intended to represent long hair trailing to the bottom of the monument . The earflares are rectangular plates with an additional trapezoid element at the front . The head is also depicted wearing a nose @-@ ring . The face is smiling and has wrinkles under the eyes and at the edge of the mouth . It has sagging cheeks and wide eyes . The mouth is closed and the upper lip is badly damaged . The sculpture suffered some mutilation in antiquity , with nine pits hollowed into the face and headdress . + San Lorenzo Colossal Head 10 ( also known as San Lorenzo Monument 89 ) has been moved to the Museo Comunitario de San Lorenzo Tenochtitlán near Texistepec . It stands 1 @.@ 8 metres ( 5 @.@ 9 ft ) tall and measures 1 @.@ 43 metres ( 4 @.@ 7 ft ) wide by 0 @.@ 92 metres ( 3 @.@ 0 ft ) deep ; it weighs 8 tons . The head was discovered by a magnetometer survey in 1994 ; it was found buried , lying face upwards in the bottom of a ravine and was excavated by Ann Cyphers . The headdress is formed of 92 circular beads that completely cover the upper part of the head and descend across the sides and back . Above the forehead is a large element forming a three @-@ toed foot with long nails , possibly the foot of a bird . The head wears large earspools that protrude beyond the beads of the headdress . The spools have the form of a rounded square with a circular sunken central portion . The face is that of a mature man with the mouth closed , sagging cheeks and lines under the eyes . The mouth is sensitively carved and the head possesses a pronounced chin . + + = = = La Venta = = = + + Three of the La Venta heads were found in a line running east @-@ west in the northern Complex I ; all three faced northwards , away from the city centre . The other head was found in Complex B to the south of the Great Pyramid , in a plaza that included a number of other sculptures . The latter , the first of the La Venta heads to be discovered , was found during archaeological exploration of La Venta in 1925 ; the other three remained unknown to archaeologists until a local boy guided Matthew Stirling to them while he was excavating the first head in 1940 . They were located approximately 0 @.@ 9 kilometres ( 0 @.@ 56 mi ) to the north of Monument 1 . + La Venta Monument 1 is speculated to have been the portrait of La Venta 's final ruler . Monument 1 measures 2 @.@ 41 metres ( 7 @.@ 9 ft ) high by 2 @.@ 08 metres ( 6 @.@ 8 ft ) wide by 1 @.@ 95 metres ( 6 @.@ 4 ft ) deep ; it weighs 24 tons . The front of the headdress is decorated with three motifs that apparently represent the claws or fangs of an animal . Above these symbols is an angular U @-@ shaped decoration descending from the scalp . On each side of the monument a strap descends from the headdress , passing in front of the ear . Each ear has a prominent ear ornament that descends from the earlobe to the base of the monument . The features are those of a mature man , with wrinkles around the mouth , eyes and nose . Monument 1 is the best preserved head at La Venta but has suffered from erosion , particularly at the back . The head was first described by Franz Blom and Oliver La Farge who investigated the La Venta remains on behalf of Tulane University in 1925 . When discovered it was half @-@ buried ; its massive size meant that the discoverers were unable to excavate it completely . Matthew Stirling fully excavated the monument in 1940 , after clearing the thick vegetation that had covered it in the intervening years . Monument 1 has been moved to the Parque @-@ Museo La Venta in Villahermosa . The head was found in its original context ; associated finds have been radiocarbon dated to between 1000 and 600 BC . + La Venta Monument 2 measures 1 @.@ 63 metres ( 5 @.@ 3 ft ) high by 1 @.@ 35 metres ( 4 @.@ 4 ft ) wide by 0 @.@ 98 metres ( 3 @.@ 2 ft ) deep ; the head weighs 11 @.@ 8 tons . The face has a broadly smiling expression that reveals four of the upper teeth . The cheeks are given prominence by the action of smiling ; the brow that is normally visible in other heads is covered by the rim of the headdress . The face is badly eroded , distorting the features . In addition to the severe erosion damage , the upper lip and a part of the nose have been deliberately mutilated . The head was found in its original context a few metres north of the northwest corner of pyramid @-@ platform A @-@ 2 . Radiocarbon dating of the monument 's context dates it to between 1000 and 600 BC . Monument 2 has suffered erosion damage from its exposure to the elements prior to discovery . The head has a prominent headdress but this is badly eroded and any individual detail has been erased . A strap descends in front of the ear on each side of the head , descending as far as the earlobe . The head is adorned with ear ornaments in the form of a disc that covers the earlobe , with an associated clip or peg . The surviving details of the headdress and earflares are stylistically similar to those of Tres Zapotes Monument A. The head has been moved to the Museo del Estado de Tabasco in Villahermosa . + La Venta Monument 3 stands 1 @.@ 98 metres ( 6 @.@ 5 ft ) high and measures 1 @.@ 6 metres ( 5 @.@ 2 ft ) wide by 1 metre ( 3 @.@ 3 ft ) deep ; it weighs 12 @.@ 8 tons . Monument 3 was located a few metres to the east of Monument 2 , but was moved to the Parque @-@ Museo La Venta in Villahermosa . Like the other La Venta heads , its context has been radiocarbon dated to between 1000 and 600 BC . It appears unfinished and has suffered severe damage through weathering , making analysis difficult . It had a large headdress that reaches to the eyebrows but any details have been lost through erosion . Straps descend in front of each ear and continue to the base of the monument . The ears are wearing large flattened rings that overlap the straps ; they probably represent jade ornaments of a type that have been recovered in the Olmec region . Although most of the facial detail is lost , the crinkling of the bridge of the nose is still evident , a feature that is common to the frowning expressions of the other Olmec colossal heads . + La Venta Monument 4 measures 2 @.@ 26 metres ( 7 @.@ 4 ft ) high by 1 @.@ 98 metres ( 6 @.@ 5 ft ) wide and 1 @.@ 86 metres ( 6 @.@ 1 ft ) deep . It weighs 19 @.@ 8 tons . It was found a few metres to the west of Monument 2 and has been moved to the Parque @-@ Museo La Venta . As with the other heads in the group , its archaeological context has been radiocarbon dated to between 1000 and 600 BC . The headdress is elaborate and , although damaged , various details are still discernible . The base of the headdress is formed by three horizontal strips running over the forehead . One side is decorated with a double @-@ disc motif that may have been repeated on the other ; if so , damage to the right side has obliterated any trace of it . The top of the headdress is decorated with the clawed foot of a bird of prey . Either straps or plaits of hair descend on either side of the face , from the headdress to the base of the monument . Only one earspool survives ; it is flat , in the form of a rounded square , and is decorated with a cross motif . The ears have been completely eroded away and the lips are damaged . The surviving features display a frown and creasing around the nose and cheeks . The head displays prominent teeth . + + = = = Tres Zapotes = = = + + The two heads at Tres Zapotes , with the La Cobata head , are stylistically distinct from the other known examples . Beatriz de la Fuente views them as a late regional survival of an older tradition while other scholars argue that they are merely the kind of regional variant to be expected in a frontier settlement . These heads are sculpted with relatively simple headdresses ; they have squat , wide proportions and distinctive facial features . The two Tres Zapotes heads are the earliest known stone monuments from the site . The discovery of one of the Tres Zapotes heads in the nineteenth century led to the first archaeological investigations of Olmec culture , carried out by Matthew Stirling in 1938 . + Tres Zapotes Monument A ( also known as Tres Zapotes Colossal Head 1 ) was the first colossal head to be found , discovered by accident in the middle of the nineteenth century , 1 kilometre ( 0 @.@ 62 mi ) to the north of the modern village of Tres Zapotes . After its discovery it remained half @-@ buried until it was excavated by Matthew Stirling in 1939 . At some point it was moved to the plaza of the modern village , probably in the early 1960s . It has since been moved to the Museo Comunitario de Tres Zapotes . Monument A stands 1 @.@ 47 metres ( 4 @.@ 8 ft ) tall ; it measures 1 @.@ 5 metres ( 4 @.@ 9 ft ) wide by 1 @.@ 45 metres ( 4 @.@ 8 ft ) deep , and is estimated to weigh 7 @.@ 8 tons . The head is sculpted with a simple headdress with a wide band that is otherwise unadorned , and wears rectangular ear ornaments that project forwards onto the cheeks . The face is carved with deep creases between the cheeks and the nose and around the mouth ; the forehead is creased into a frown . The upper lip has suffered recent damage , with the left portion flaking away . + Tres Zapotes Monument Q ( also known as the Nestape Head and Tres Zapotes Colossal Head 2 ) measures 1 @.@ 45 metres ( 4 @.@ 8 ft ) high by 1 @.@ 34 metres ( 4 @.@ 4 ft ) wide by 1 @.@ 26 metres ( 4 @.@ 1 ft ) deep and weighs 8 @.@ 5 tons . Its exact date of discovery is unknown but is estimated to have been some time in the 1940s , when it was struck by machinery being used to clear vegetation from Nestape hill . Monument Q was the eleventh colossal head to be discovered . It was moved to the plaza of Santiago Tuxtla in 1951 and remains there to this day . Monument Q was first described by Williams and Heizer in an article published in 1965 . The headdress is decorated with a frontal tongue @-@ shaped ornament , and the back of the head is sculpted with seven plaits of hair bound with tassels . A strap descends from each side of the headdress , passing over the ears and to the base of the monument . The face has pronounced creases around the nose , mouth and eyes . + + = = = La Cobata = = = + + The La Cobata region was the source of the basalt used for carving all of the colossal heads in the Olmec heartland . The La Cobata colossal head was discovered in 1970 and was the fifteenth to be recorded . It was discovered in a mountain pass in the Sierra de los Tuxtlas , on the north side of El Vigia volcano near to Santiago Tuxtla . The head was largely buried when found ; excavations uncovered a Late Classic ( 600 – 900 AD ) offering associated with the head consisting of a ceramic vessel and a 12 @-@ centimetre ( 4 @.@ 7 in ) long obsidian knife placed pointing northwards towards the head . The offering is believed to have been deposited long after the head was sculpted . The La Cobata head has been moved from its original location to the main plaza at Santiago . + The La Cobata head is more or less rounded and measures 3 by 3 metres ( 9 @.@ 8 by 9 @.@ 8 ft ) by 3 @.@ 4 metres ( 11 ft ) high , making it the largest known head . This massive sculpture is estimated to weigh 40 tons . It is stylistically distinct from the other examples , and Beatriz de la Fuente placed it late in the Olmec time frame . The characteristics of the sculpture have led to some investigators suggesting that it represents a deceased person . Norman Hammond argues that the apparent stylistic differences of the monument stem from its unfinished state rather than its late production . The eyes of the monument are closed , the nose is flattened and lacks nostrils and the mouth was not sculpted in a realistic manner . The headdress is in the form of a plain horizontal band . + The original location of the La Cobata head was not a major archaeological site and it is likely that the head was either abandoned at its source or during transport to its intended destination . Various features of the head suggest that it was unfinished , such as a lack of symmetry below the mouth and an area of rough stone above the base . Rock was not removed from around the earspools as on other heads , and does not narrow towards the base . Large parts of the monument seem to be roughed out without finished detail . The right hand earspool also appears incomplete ; the forward portion is marked with a sculpted line while the rear portion has been sculpted in relief , probably indicating that the right cheek and eye area were also unfinished . The La Cobata head was almost certainly carved from a raw boulder rather than being sculpted from a throne . + + = = = Takalik Abaj = = = + + Takalik Abaj Monument 23 dates to the Middle Preclassic period , and is found in Takalik Abaj , an important city in the foothills of the Guatemalan Pacific coast , in the modern department of Retalhuleu . It appears to be an Olmec @-@ style colossal head re @-@ carved into a niche figure sculpture . If originally a colossal head then it would be the only known example from outside the Olmec heartland . + Monument 23 is sculpted from andesite and falls in the middle of the size range for confirmed colossal heads . It stands 1 @.@ 84 metres ( 6 @.@ 0 ft ) high and measures 1 @.@ 2 metres ( 3 @.@ 9 ft ) wide by 1 @.@ 56 metres ( 5 @.@ 1 ft ) deep . Like the examples from the Olmec heartland , the monument features a flat back . Lee Parsons contests John Graham 's identification of Monument 23 as a re @-@ carved colossal head ; he views the side ornaments , identified by Graham as ears , as rather the scrolled eyes of an open @-@ jawed monster gazing upwards . Countering this , James Porter has claimed that the re @-@ carving of the face of a colossal head into a niche figure is clearly evident . + Monument 23 was damaged in the mid @-@ twentieth century by a local mason who attempted to break its exposed upper portion using a steel chisel . As a result , the top is fragmented , although the broken pieces were recovered by archaeologists and have been put back into place . + + = = Collections = = + + All of the 17 confirmed colossal heads remain in Mexico . Two heads from San Lorenzo are on permanent display at the Museo Nacional de Antropología in Mexico City . Seven of the San Lorenzo heads are on display in the Museo de Antropología de Xalapa . Five of them are in Sala 1 , one is in Sala 2 and one is in Patio 1 . The remaining San Lorenzo head is in the Museo Comunitario de San Lorenzo Tenochtitlán near Texistepec . All four heads from La Venta are now in Villahermosa , the state capital of Tabasco . Three are in the Parque @-@ Museo La Venta and one in the Museo del Estado de Tabasco . Two heads are on display in the plaza of Santiago Tuxtla ; one from Tres Zapotes and the La Cobata Head . The other Tres Zapotes head is in the Museo Comunitario de Tres Zapotes . + Several colossal heads have been loaned to temporary exhibitions abroad ; San Lorenzo Colossal Head 6 was loaned to the Metropolitan Museum of Art in New York in 1970 . San Lorenzo colossal heads 4 and 8 were lent to the Olmec Art of Ancient Mexico exhibition in the National Gallery of Art , Washington , D.C. that ran from 30 June to 20 October 1996 . San Lorenzo Head 4 was again loaned in 2005 , this time to the de Young Museum in San Francisco . The de Young Museum was loaned San Lorenzo colossal heads 5 and 9 for its Olmec : Colossal Masterworks of Ancient Mexico exhibition , which ran from 19 February to 8 May 2011 . + + = = = Vandalism = = = + + On 12 January 2009 , at least three people , including two Mexicans and one American , entered the Parque @-@ Museo La Venta in Villahermosa and damaged just under 30 archaeological pieces , including the four La Venta colossal heads . The vandals were all members of an evangelical church and appeared to have been carrying out a supposed pre @-@ Columbian ritual , during which salts , grape juice and oil were thrown on the heads . It was estimated that 300 @,@ 000 pesos ( US $ 21 @,@ 900 ) would be needed to repair the damage , and the restoration process would last four months . The three vandals were released soon after their arrest after paying 330 @,@ 000 pesos each . + + = = = Replicas = = = + + Although not all of the replicas were placed by him , the majority of replicas around the world were placed under the leadership of Miguel Alemán Velasco , former governor of the state of Veracruz . The following is a list of replicas and their locations within the United States : + Austin , Texas . A replica of San Lorenzo Head 1 was placed in the Teresa Lozano Long Institute of Latin American Studies at the University of Texas in November 2008 . + Chicago , Illinois . A replica of San Lorenzo Head 8 made by Ignacio Perez Solano was placed in the Field Museum of Natural History in 2000 . + Covina , California . A replica of San Lorenzo Head 5 was donated to Covina in 1989 , originally intended to be placed in Jalapa Park . Due to concerns over potential vanadalism it was instead installed outside the police station . It was removed in 2011 and relocated to Jobe 's Glen , Jalapa Park in June 2012 . + McAllen , Texas . A replica of San Lorenzo Head 8 is located in the International Museum of Art & Science . The specific date placement is unknown , but it was dedicated by Fidel Herrera Beltrán , then governor of Veracruz , during his time in office between 2004 – 2010 . + New York . A replica of San Lorenzo Head 1 was placed next to the main plaza in the grounds of Lehman College in the Bronx , New York . It was installed in 2013 to celebrate the first anniversary of the CUNY Institute of Mexican Studies , housed at the college . The replica was a gift by the government of Verazruz state , Cumbre Tajín and Mexico Trade ; it was first plazed in Dag Hammerskjold Park , outside the United Nations , in 2012 . + San Francisco , California . A replica of San Lorenzo Head 1 created by Ignacio Perez Solano was placed in San Francisco City College , Ocean Campus in October 2004 . + Washington , D.C. A replica of San Lorenzo Head 4 sculpted by Ignacio Perez Solano was placed near the Constitution Avenue entrance of the Smithsonian National Museum of Natural History in October 2001 . + West Valley City , Utah . A replica of San Lorenzo Head 8 was placed in the Utah Cultural Celebration Center in May 2004 . + Mexico donated a resin replica of an Olmec colossal head to Belgium ; it is on display in the Musée du Cinquantenaire in Brussels . + In February 2010 , the Mexican Secretaría de Relaciones Exteriores ( Secretariat of Foreign Affairs ) announced that the Instituto Nacional de Antropología e Historia would be donating a replica Olmec colossal head to Ethiopia , to be placed in Plaza Mexico in Addis Ababa . + + + = Brad Stevens = + + Bradley Kent " Brad " Stevens ( born October 22 , 1976 ) is an American professional basketball head coach for the Boston Celtics of the NBA . He was previously the head coach at Butler University in Indianapolis . A former basketball player , he grew up in Zionsville , Indiana , where he starred on the Zionsville Community High School basketball team , setting four school records . After high school , he attended DePauw University , where he played basketball and earned a degree in economics . He made the all @-@ conference team multiple times and was a three @-@ time Academic All @-@ America nominee . + Stevens joined the Butler basketball program as a volunteer prior to the 2000 – 01 season after quitting his job at Eli Lilly and Company . He was promoted to a full @-@ time assistant coaching position for the 2001 – 02 season . On April 4 , 2007 , he became the head coach after Todd Lickliter left to coach the Iowa Hawkeyes . In his first year , Stevens led Butler to 30 wins , becoming the third @-@ youngest head coach in NCAA Division I history to have a 30 @-@ win season . + In 2010 , his third year as head coach , Stevens broke the NCAA record for most wins in a coach 's first three years , exceeding the previous record by eight . In the postseason , Stevens coached Butler to the first Final Four in school history . At 33 years old , Stevens became the second @-@ youngest head coach to make a NCAA National Championship game , losing 61 – 59 to Duke . Shortly after the season ended , he signed a contract extension with Butler through the 2011 – 12 season . With the 2010 – 11 team making the Final Four , Stevens became the youngest coach to go to two Final Fours . Stevens coached the Bulldogs in their second consecutive national championship game on April 4 , 2011 , where the team lost to the Huskies of the University of Connecticut . + Stevens is known for a calm , focused coaching style . He spends a lot of time analyzing opponents using statistical analysis , adding new wrinkles to his team 's play each game . He puts a strong emphasis on defensive and team oriented basketball . Butler 's success against teams with superior athletes has been attributed to Stevens ' coaching style and calm demeanor . Stevens has twice been named the Horizon League Coach of the Year and won collegeinsider.com 's Hugh Durham Award mid @-@ season honors in January 2009 . He has also been both a Hugh Durham Award and Jim Phelan Award finalist all three years of his career . Stevens has been called a coaching prodigy and compared to John Wooden . He is married with two young children . In July 2013 , he signed a six @-@ year , 22 million dollar contract to become the head coach of the Boston Celtics in the NBA . In April 2015 , Stevens led the Celtics to the NBA Playoffs as the 7th seed in the Eastern Conference with a 40 – 42 record . + + = = Early life = = + + Bradley Kent Stevens grew up in Zionsville , Indiana , where he developed his love for basketball . Starting at age five , Stevens would watch taped basketball games " before he went to afternoon kindergarten " . His father would often drive him to Bloomington , to watch Indiana Hoosiers games . " It 's hard not to be [ in love with basketball ] when you 're a kid growing up in Indiana " , Stevens later said . + For his eighth birthday , Stevens received a new basketball hoop . " It ’ s so much fun to dream in your driveway , " he later remarked . " That ’ s where my friends and I hung out . It was a lot of fun to grow up in that era . " When a friend , Brandon Monk , had a basketball court installed in his back yard , Stevens " appeared instantaneously . " He was so dedicated to the game that he would bring the unprepared ingredients for grilled cheese sandwiches over to Monk 's house , so that he would not waste time waiting for the sandwiches to cook . + Monk 's court soon became a gathering place , where Zionsville kids and kids from the surrounding areas would hold pickup games . These games helped develop Stevens ' competitive streak . Besides playing basketball , the young Stevens also enjoyed solving puzzles , a skill he later applied to analyzing opposing teams to find their weaknesses . + Stevens attended Zionsville Community High School , where he became a star basketball player . He wore No. 31 in high school in honor of Indiana Pacers guard Reggie Miller . During his freshman year , he would get up early to practice shooting at a local gym before school . The hard work paid off as Stevens made the varsity team that same year . By the time his high school career was complete , Stevens had set school records for career scoring , assists , steals , and three @-@ point field goals . As of 2010 , he still holds the records for points ( 1508 ) , assists ( 444 ) , and steals ( 156 ) , as well as the single @-@ season points record ( 644 in 1995 ) . Stevens was named to the all @-@ conference team three times . In 1995 , he was named the sectional MVP and was the leading scorer in state sectional play ( 32 @.@ 3 ppg ) . + Stevens made the academic all @-@ state first team and received the Straight A Gold Medal Award all four years . He was a member of the National Honor Society , graduating seventh in his class of 165 . He earned three letters in basketball , three in track , and one in baseball during his days at Zionsville . During summers , he traveled the country playing AAU basketball . + Although Stevens had a strong passion for the game , he realized that his basketball skills were modest and not likely to get him very far . As such , he chose to attend academically oriented DePauw University for college . During his stay , he played in all 101 DePauw games , earning four varsity letters . He earned multiple all @-@ conference and academic all @-@ conference awards , and was a three @-@ time Academic All @-@ America nominee . He was a team captain his senior year , and averaged more than 8 points per game three of his four years . His career highs were 24 points and 8 rebounds in a game . After his senior year , Stevens received the Coaches ’ Award . Coach Bill Fenlon later described Stevens as " one of the most selfless , team @-@ oriented person [ sic ] I 've ever been around . " + While at DePauw , Stevens was a member of the Management Fellows Honors Program and the DePauw Community Services ’ Sports Night executive board . He was also a brother of the Alpha Tau Omega fraternity . During summer vacations , Stevens spent time teaching at Butler basketball camps . He was named to the Dean 's list and graduated in 1999 with a degree in economics . + + = = College career = = + + In the summer of 2000 , Stevens was offered the opportunity to volunteer in the Butler basketball office . He ran the idea of quitting his job at Eli Lilly by then @-@ longtime girlfriend Tracy Wilhelmy . She thought about it for two hours before telling him to go for it . " Now , it looks like a great idea , " Stevens later remarked . " At the time , I thought it was something I really wanted to try . " Tracy went back to school to get a law degree that could support the couple if things did not work out for Brad . " We were 23 and realized this was our chance , " Tracy later said . " Five years down the road , we were probably not going to be in a position to do that . The more success you had at Lilly , the harder it would be to leave . " + Stevens planned to live in a friend 's basement and took a job at Applebee ’ s to pay the bills . Before he started training at Applebee 's , he was offered a low @-@ paying administrative position as coordinator of basketball operations under then @-@ coach Thad Matta . The position had opened up when assistant coach Jamal Meeks resigned after being arrested on solicitation and drug charges , of which he was later acquitted . Years later , Matta recalled , " [ Stevens ] was just a hungry young kid that was desperate to get into coaching . He had a great passion and was willing to take a risk to get into the coaching profession . " + After Matta left the school following the 2000 – 01 season , new head coach Todd Lickliter promoted Stevens to a full @-@ time assistant coach . Under Lickliter , Stevens was active in every aspect of the game : skills instruction , game preparation , in @-@ game coaching , and recruiting . Butler was 131 – 61 during Stevens ' time as an assistant coach . + + = = = Named head coach = = = + + On April 2 , 2007 , Lickliter resigned in order to take the head @-@ coaching position at the University of Iowa . The Butler players had a meeting with athletic director Barry Collier , urging him to promote from within . Collier , having spent the entire season observing the assistant coaches ' interaction with the team , agreed . The day after Lickliter resigned Stevens and Butler 's two other assistant coaches interviewed for the job . Within 24 hours of the interviews Stevens was named Butler 's new head coach . According to Collier , Stevens had something older , outside candidates could never match : six years of experience learning the Butler system , dubbed " The Butler Way " by Collier . " Age wasn 't a factor because I 'd seen his ability shine through during the course of the season , " Collier said . + + = = = 2007 – 08 season = = = + + At the start of the 2007 – 08 season , Stevens was the second youngest coach in Division I basketball . He got off to a fast start , winning his first eight games before falling to Wright State 43 – 42 . Legendary coach Bob Knight , whose Texas Tech team was an early victim , said " I wish we played as smart as they do . " Virginia Tech coach Seth Greenberg added " they 've got toughness about them and they expect to win . " + Midway through Stevens ' first season , with the Bulldogs at 12 – 1 , The New York Times wrote " so far , Stevens has made the transition [ to head coach ] look easy . " The Times went on to state that Stevens had the calm and composure of a seasoned veteran . " You ’ ve got a lot of people always looking for the next step . And that ’ s not what I was doing . I was just trying to figure out a way to win the next game and think like a head coach . " Stevens said . + Butler ended the regular season with a 27 – 3 record , taking first place in the Horizon League with a 16 – 2 in conference mark . The team beat Illinois @-@ Chicago 66 – 50 and Cleveland State 70 – 55 to claim the league 's tournament title and an automatic bid to the 2008 NCAA tournament . Butler was awarded the seven seed in the East Regional . They beat tenth @-@ seeded South Alabama 81 – 61 in the first round , before falling to second @-@ seeded Tennessee 76 – 71 in overtime . + Stevens ended up with a school and Horizon league record 30 wins , beating several big name schools – Michigan , Texas Tech , Florida State , Ohio State – along the way . In so doing , he became the third @-@ youngest head coach in NCAA Division I history to lead a team to 30 wins in a season , and became the fourth @-@ winningest first @-@ year coach . Butler was nationally ranked for a school and league record 19 consecutive weeks . Butler 's 30 – 4 record was the best among teams that did not reach the Final Four . Stevens was a finalist for the Hugh Durham Award , losing to Keno Davis of Drake , and a finalist for the Jim Phelan National Coach of the Year Award , losing to Bo Ryan . + At the conclusion of the season , Butler signed Stevens to a seven @-@ year contract . " We are extremely excited to reach this long @-@ term agreement to have Brad continue to lead our program , " Collier remarked . + + = = = 2008 – 09 season = = = + + Butler lost four starters after the 2007 – 08 season , and was picked to finish fifth in the Horizon league during the 2008 – 09 season . The team got off to a 12 – 1 start that won Stevens the Hugh Durham mid @-@ season coaching award . On February 5 , Stevens notched his 50th win as Butler beat Detroit 66 – 61 . In so doing , Stevens became the sixth head coach in NCAA history to reach 50 wins in 56 games or fewer . Butler finished first in the Horizon League with a 15 – 3 in conference record , defying preseason expectations . Butler lost the Horizon League tournament final 57 – 54 to Cleveland State , but made the NCAA tournament as an at @-@ large selection . The team received the nine seed in the South Regional , and lost to eighth @-@ seeded Louisiana State in the first round by a score of 75 – 71 to finish the year at 26 – 6 overall . + Stevens ' 56 – 10 two @-@ year record places him second only to Bill Guthridge ( 58 ) in total wins during one 's first two years as head coach . Stevens was a finalist for both the Hugh Durham and Jim Phelan Awards for the second straight year and was named the Horizon League Coach of the Year . He was also named as a finalist for the Henry Iba Coach of the Year Award . Stevens was given a one @-@ year contract extension at the conclusion of the season . + + = = = 2009 – 10 season = = = + + Fueled in large part by Gordon Hayward 's and Shelvin Mack 's roles in leading Team USA to the gold medal in the FIBA Under @-@ 19 World Championship during the off @-@ season , Butler began the season ranked 10th in the Coaches ' Poll and 11th in the AP Poll . A few commentators picked the Bulldogs as a possible " sleeper team " to make the Final Four . Stevens was not so sure , privately telling his father , " We have a really good team , and I ’ m not sure how far we can go this year , but next year , we ought to go really far . " + Butler got off to a mediocre start , losing twice in the 76 Classic 82 – 73 to 22nd @-@ ranked Minnesota and to 19th @-@ ranked Clemson 70 – 69 . After the tournament Butler 's record stood at 4 – 2 and the team dropped to # 23 in the AP Poll and # 20 in the Coaches ' Poll . Butler won its next two games before falling to 13th @-@ ranked Georgetown 72 – 65 in the Jimmy V Classic . The team won its next two games beating # 15 Ohio State 74 – 66 and edging out former conference rival Xavier 69 – 68 , both at home . After losing 67 – 57 at UAB three days later , Butler stood at 9 – 4 and fell out of the AP rankings . However , the team remained in the Coaches Poll at # 23 . + Stevens rallied the team , and they proceeded to win 16 straight games before facing Siena in a BracketBusters game . Butler beat Siena 70 – 53 and Stevens tied the NCAA record for most wins ( 81 ) by a head coach in his first three seasons set by Mark Few of Gonzaga in 2002 and tied by Mark Fox of Nevada in 2007 . + On February 26 , 2010 , Butler traveled to Valparaiso for their regular season finale . Leading scorer Gordon Hayward was sidelined with lower back pain , but the team still won 74 – 69 . In so doing , Stevens broke the coaching record he had tied the prior week and Butler completed an 18 – 0 undefeated conference schedule . It was Butler 's first undefeated conference record since joining the Horizon League , and first since Joe Sexson led the 1978 team to a 6 – 0 record in the now defunct Indiana Collegiate Conference . Stevens earned his third straight regular @-@ season conference championship . + In the Horizon league tournament , Stevens ' Bulldogs used their home @-@ court advantage to beat Milwaukee 68 – 59 in the semi @-@ finals and to beat Wright State 70 – 45 in the finals . The win earned the team an automatic bid into the 2010 NCAA tournament , and completed a 20 – 0 run through league play . Stevens became the first coach to lead a Horizon League team to both an undefeated regular season and conference tournament since the league was formed in 1979 . Stevens was also the only coach in Division I to lead his team to an undefeated conference schedule during the 2009 – 10 season . + + = = = = NCAA tournament = = = = + + For their season , the Bulldogs were ranked 8th in the final pre @-@ NCAA tournament Coaches ' Poll and 11th in the corresponding AP Poll . On Selection Sunday , the Bulldogs were seeded fifth in the West regional of the NCAA tournament and given a first @-@ round match up with twelfth seeded UTEP on March 18 . + Many basketball commentators picked UTEP to pull the upset , and at halftime it looked like they might be right , as UTEP led 33 – 27 . Stevens made a number of halftime adjustments , and the Bulldogs came out firing on all cylinders in the second half . The team dominated the second half and won the game 77 – 59 . Butler next faced off with thirteenth seeded Murray State . The game was close throughout , but Butler emerged victorious 54 – 52 when Hayward deflected a Murray State pass into the back court with less than five seconds on the clock . The win gave Stevens the first Sweet Sixteen appearance of his career . + On March 25 , 2010 , Butler faced top @-@ seeded Syracuse . The Bulldogs got off to a good start , jumping out to a 12 – 1 lead and a 35 – 25 halftime advantage . Syracuse rallied in the second half , taking its first lead of the game , 40 – 39 , off a Wes Johnson three @-@ pointer . Stevens called timeout and Butler regained the lead on its next possession , stopping the run . At the 5 : 32 mark , Syracuse got a rare fast break opportunity that ended with a dunk and 54 – 50 lead . Stevens again called time out and re @-@ focused the team . Butler responded by holding Syracuse scoreless for the next 5 minutes , taking a 60 – 54 lead with 0 : 59 to go . Butler held on to win 63 – 59 , advancing to the Elite Eight for the first time in school history . + Two days later , Stevens ' Bulldogs met second @-@ seeded Kansas State in the regional finals . Perhaps feeling the effects of their double overtime 101 – 96 win two days prior , Kansas State got off to a slow start , scoring just 20 points in the first half to trail 27 – 20 . Butler kept the lead in the upper single digits for most of the second half , before Kansas State went on a 13 – 2 run and took a 52 – 51 lead . Stevens immediately called time out and re @-@ focused the team . " Play your game . Just play your game , " he told them . On the ensuing possession , Butler regained the lead for good . They outscored Kansas State 12 – 4 the rest of the way and won the game 63 – 56 . In the post game celebration , Stevens and walk @-@ on forward Emerson Kampen connected on a flying back @-@ bump that became one of the iconic images of the tournament . + The win earned the Bulldogs a trip back to Indianapolis for the first Final Four appearance in school and Horizon League history . The win made Stevens , at age 33 , the youngest coach to lead a team to the Final Four since Bob Knight made his first Final Four appearance at age 32 in 1973 . Butler became the smallest school ( enrollment 4 @,@ 200 ) to make the Final Four since seeding began in 1979 . + + = = = = = Final Four = = = = = + + On April 3 , Brad Stevens and the Butler Bulldogs faced off with Michigan State in the national semi @-@ finals . Michigan State took an early 14 – 7 lead , and Matt Howard got in early foul trouble , sitting most the first half . Stevens kept the team focused with a " next man up " attitude and the game was tied at 28 at halftime . The second half was dominated by tight defense for both sides . With 2 : 45 to go in the game , the score was 47 – 44 Butler . Michigan State called a time out to set up a play . Stevens correctly anticipated the play call and had Ronald Nored , the team 's best defender , switch onto Korie Lucious off a screen . Nored stole the ball and Shawn Vanzant got fouled on the resulting run out , hitting 1 of 2 . Trailing 50 – 49 with under 30 seconds remaining , Michigan State came up empty and was forced to foul . Nored hit both foul shots , giving Butler a 52 – 49 lead . After a Michigan State time out , Stevens had his team foul Lucious with 2 seconds remaining to prevent a potentially game tying 3 @-@ pointer . After making the first , Lucious intentionally missed the second free throw . Hayward came down with the rebound to seal the victory . Butler became the first team since the shot clock was adopted for the 1985 – 86 season to hold five straight tournament opponents under 60 points . + On April 5 , 2010 , Butler and Duke faced off in what The New York Times called " the most eagerly awaited championship game in years " . Late in the first half , Duke went on an 8 – 0 run to take a 26 – 20 lead . Stevens called a timeout . With starters Matt Howard and Ronald Nored on the bench in foul trouble , Stevens was forced to call on backup center Avery Jukes who came up big for Butler . Jukes scored 10 first half points , tying his season high . At half time , Duke 's lead stood at 33 – 32 . + The second half was played very closely , with neither team taking a substantial lead . With 3 : 16 to play , Duke took a 60 – 55 lead on two made free throws by Nolan Smith . Butler cut the lead to one point in the final minute and , after a missed Kyle Singler jump shot with 36 seconds remaining , got a chance to retake the lead . Butler was unable to initiate their offense and Stevens called a timeout to set up a play . A failed inbounds attempt and a timeout later , Hayward missed a baseline fade @-@ away jumper and Brian Zoubek came down with the rebound for Duke . He was quickly fouled with less than 4 seconds remaining . Hayward narrowly missed a desperation half @-@ court shot court as time expired , making the final margin 61 – 59 . + The loss snapped Butler 's 25 @-@ game winning streak , the longest in school history . Butler became the smallest school to play for a National Championship since Jacksonville in 1970 . Stevens became the second @-@ youngest head coach to coach in the NCAA National Championship Game , behind Branch McCracken who led the Indiana Hoosiers to the 1940 National Championship at age 31 . Stevens was named as both a Hugh Durham and Jim Phelan Award finalist for the third consecutive year , losing to Mike Young and Jamie Dixon respectively . He was also a finalist for the Skip Prosser Man of the Year Award , which was won by Bob Marlin . + Butler finished the year ranked # 2 in the Coaches ' Poll , the highest ranking in school history . The school was ranked for 19 consecutive weeks , tying the school record . + + = = = 2010 off @-@ season = = = + + After the end of the 2009 – 10 season , Brad Stevens and Butler continued to attract considerable attention . President Barack Obama personally called Stevens to congratulate him on Butler 's season . David Letterman had Stevens on his show for a guest appearance . Butler admissions inquiries shot up 67 % . Stevens received fan letters from around the world , and his phone rang off the hook . He was invited to throw the ceremonial first pitch before the Chicago Cubs vs. Florida Marlins game in Chicago on May 10 . " It 's all been very surreal , " Stevens said . " If you are the runner @-@ up , you don 't expect to talk to the president . " " It 's been a little overwhelming , because I 'm a pretty simple guy , " he added . + The 2009 – 10 season also helped increase Butler 's recruiting profile . Asked if the increased fame would change things , Stevens said it better not spoil him or the university . " I look at this new challenge of not changing and sticking to your core values and making sure you remain humble as a great coaching opportunity . " + + = = = 2010 – 11 season = = = + + Rankings by ESPN 's Andy Katz and Fox Sports ' Jeff Goodman released shortly after the 2010 Championship game both had Butler third for the 2010 – 2011 season . Duke coach Mike Krzyzewski agreed , saying Butler would be " right up there , No. 1 or No. 2 ... They 'll be a favorite next year . " However , Hayward chose to leave early for the NBA Draft and Butler went through a rough patch early in the season , at one point losing three straight games and having a 6 – 5 conference record . Bolstered by the emergence of Andrew Smith at center and Matt Howard 's success as a perimeter forward , Butler ended up winning a share of the conference title at 13 – 5 . The Bulldogs then won the Horizon League Tournament to secure an automatic NCAA tournament bid , and received an 8 seed . + Picked by many to lose a first @-@ round match @-@ up against Old Dominion , Butler advanced on a last @-@ second tip @-@ in by Howard . Howard was also clutch in their next game , hitting a free throw with a less than one second remaining to beat Pitt in a dramatic finish . Shelvin Mack scored 30 points in the win . Butler won their next game when they defeated Wisconsin . On March 26 , 2011 , the Bulldogs beat Florida 74 – 71 in overtime to earn back @-@ to @-@ back trips to the Final Four . On April 2 , Butler beat fellow Cinderella team VCU 70 – 62 to make it to a second consecutive national championship game . For the second consecutive year , the Bulldogs fell in the national championship game , this time to Connecticut . + + = = = Coaching future = = = + + On April 8 , 2010 , Stevens signed a long @-@ term deal with Butler , extending his contract through the 2021 – 22 season . Financial terms of the contract were not disclosed ; however , Butler president Bobby Fong had publicly stated that the university could afford to increase Stevens ' base salary to approximately US $ 1 @,@ 000 @,@ 000 a few days prior . Stevens had previously made US $ 395 @,@ 000 plus benefits in base salary , a relatively low figure for a successful Division I head basketball coach . His total compensation for 2009 – 10 was estimated at US $ 750 @,@ 000 . Stevens had received a raise after each of his three seasons at Butler and his contract contains a buyout clause estimated in the high six or low seven figures . + By re @-@ signing with Butler , Stevens temporarily ended speculation that he would leave the university for a higher paying job . Oregon , Clemson , and Wake Forest were all said to be interested in offering Stevens multi @-@ million dollar contracts to leave Butler . " First and foremost , I ’ m loyal to Butler , " Stevens said . When asked if he would ever leave Butler , Stevens replied " I guess if they kicked me out . " + After the 2011 – 12 season , Stevens was pursued vigorously by Illinois to fill their coaching vacancy before he declined their offer . + In March 2013 , UCLA reportedly offered Stevens between $ 2 @.@ 5 and $ 3 million a year to leave Butler . Rumors circulated that Stevens was in contract negotiations with UCLA , but ultimately the rumors proved false and Stevens stayed at Butler . Commenting on the situation , a source close to Stevens said " Brad doesn 't understand why people would assume he 's leaving . " A few days later , Stevens reiterated that he was very happy at Butler and had no intentions to leave as long as he had the support of the university to continue running the program the " right way " . + + = = NBA = = + + + = = = Boston Celtics = = = + + On July 3 , 2013 , Stevens was signed as the head coach by the Boston Celtics . Reports state that his new contract is a six @-@ year , $ 22 million deal . In April 2015 , Stevens led the Celtics to the NBA Playoffs as the 7th seed in the Eastern Conference with a 40 – 42 record . On April 21 , 2015 , it was announced that Stevens finished fourth in voting for the NBA 's Coach of the Year Award . On March 1 , 2016 , Stevens was named the Eastern Conference Coach of the Month for games played during February . In April 2016 , Brad Stevens led the Celtics to their second consecutive playoff appearance under his tenure as the 5th seed in the 2016 NBA Playoffs finishing the season with a 48 – 34 record . On June 1 , 2016 , Stevens received a contract extension . + + = = Coaching style = = + + According to Stevens , in one of his first games as head coach , he was nervous and " felt like our team played on edge " because of it . He decided that a team 's play will reflect the mood of its coach ; a calm coach means a team that will remain poised in difficult game situations , while a nervous coach means a team that plays on edge . " I don ’ t want to lose a game because of my approach , " he told himself . Accordingly , he developed a strategy of always remaining calm and focused during games . He rarely raises his voice or gets emotional , instead quietly observing on the sideline with folded arms . He does not get upset about bad calls by referees or player mistakes , preferring to focus on " the next play " rather than what just happened . Butler player Willie Veasley explained Butler 's 2010 Final Four run by saying , " When those big runs [ by Syracuse and Kansas State ] came , Coach called a timeout and said a few calm words . Then he said he believes in us , he loves us and we 're going to win the game . " On the rare occasion Stevens feels the need to correct a player , he does it with " positive reinforcement , just at a little louder decibel " , according to former assistant coach Matthew Graves . Above all , Stevens wants his players to be confident , not living in fear of being yanked for making a bad play . + Externally , Stevens is always calm , but internally he is far from it . " I 'm not as calm as everybody thinks , " Stevens says . His wife Tracy adds , " He ’ s calm and collected , but he ’ s fiercely competitive . He ’ s always thinking about how he can beat you . " Former player Joel Cornette says " Everyone sees Brad as a level @-@ headed , calm and cool coach , but he ’ s about as competitive of a guy as I know . We would get into it constantly , whether playing two @-@ on @-@ two or arguing about players ’ having better college careers . " + Stevens spends a lot of time preparing for each game , and always tries to add a few new wrinkles specific to that game 's opponent . Sports Illustrated calls Stevens an expert " on breaking down tape and looking at statistical trends to find opponents ' weaknesses . " Former player Ronald Nored agrees : " We know everything we need to about our opponents , all their tendencies are broken down " ahead of time . + Stevens is a proponent of using statistical analysis to enhance his coaching decisions , spending almost as much time looking at statistics as watching game film . " I think it 's a unique way of looking at the game that may be able to help best communicate to your players " , he explains . For example , when Butler was slumping in late 2010 , Stevens challenged his team : " this [ 46 % defensive field goal percentage ] is where we are . This isn 't acceptable to get to where we want to go . But what does that really mean ? It 's not just get better defensively , it is , if we give up 3 less baskets a game , then we will be at 40 percent field goal percentage defense which will be top 20 in the country " . The team got the message , improved throughout the season , and ultimately went on a March run fueled by defense . In 2012 , Stevens became the first college coach to hire someone solely for statistical research when he added Drew Cannon to the staff . If he had the resources , Stevens says he would hire a team of statisticians to analyze the teams play . + Stevens ' teams are built around solid basketball fundamentals and good team work , rather than individual basketball skill . His teams are known for their defense , forcing opponents into uncharacteristic mistakes . The secret to basketball – and life – is " just to do the job to the best of your ability and don 't worry about anything else , " Stevens says . " Win the next game . Win the next possession . That 's our focus . It 's boring . It 's also the way championships are won " , he says . In short , Stevens is a strong believer in " The Butler Way " – doing all the little things that transform a group of good basketball players into a great basketball team . " I tell the players ' the Butler Way ' isn 't easy to define , " Stevens says , " but you can see it on the floor when we share the basketball , play with great energy and defend . " + Stevens prefers to recruit strong team players instead of going after " top recruits . " " The guys we [ have ] recruited , most of them weren 't very highly ranked , " Stevens says . " They had very good high school careers or careers at other places ( transfers ) , but for one reason or the other they weren 't seen as great players . But they all had intangibles . " Stevens puts a strong emphasis on education and has said he would only recruit a " one and done " player if he was committed to getting his degree while playing professionally . + Stevens has often been referred to as a coaching prodigy , but is not interested in self @-@ promotion . He instead prefers to deflect the praise he receives to the players , athletic department , and his mentors . He has not been known to posture for more money , or to leak his name for open coaching positions . He has been described as humble , modest , and not " about the money " . + The New York Times , USA Today , ESPN , and other commentators have attributed Butler 's success against teams with superior athletes to Stevens ' coaching style . The Times remarks , " the Bulldogs are very well prepared for their opponents , and they do not rattle easily " , and says that the resulting confidence has led to the team 's success . " He coaches to his personality and to his strengths , " Collier says . " Obviously , he has great rapport and communication ability with his team . " Yahoo ! Sports compared Stevens to legendary coach John Wooden writing " Brad Stevens is winning at Butler the Wooden way – calm and composed on the sideline . " Wooden agreed , saying , " I enjoy watching [ Stevens ] and very much enjoy [ Butler 's ] style of play . " + + = = Personal life = = + + Brad Stevens is known for his youthful looks , often being described as " baby @-@ faced " . One commentator remarked , " Stevens looks like he checks the mirror every morning to see if it 's time to start shaving . " On occasion , he has been mistaken for a player . He is also known for projecting a professional , " corporate " look from the sidelines . Asked what his life would be like if he had never taken up coaching , he replies " If everything else remained the same , I would have been as happy as heck ... Friends and family and faith , they 're going to take the cake over all this stuff . " Stevens met his wife , Tracy ( née Wilhelmy ) , while attending DePauw University . Tracy , who played soccer for DePauw , quickly learned of Brad 's love for basketball ; on their third date he drove her an hour and a half to attend a high school basketball game . Tracy graduated from Rocky River High School in 1995 , and from DePauw in 1999 . She returned to school in 2000 , driving five hours from Case Western 's law school to Indianapolis on weekends to see Brad . She finished her final year of law school in Indianapolis , and the couple married in August 2003 . Tracy works as a labor and employment lawyer . Tracy also serves as Brad 's agent . + Brad and Tracy Stevens are involved with the American Cancer Society 's Coaches Vs . Cancer . Brad says that the cause really hit home for them after Tracy 's mother died of the disease in June 2004 . The day before Butler 's 2010 Final Four appearance , they hosted a fundraiser for the organization . Brad Stevens has also volunteered his time to the Jukes Foundation for Kids , a charity benefiting Ugandan children run by former Butler player Avery Jukes . Stevens remains in close touch with the Butler basketball family ; he notably took a one @-@ game leave from the Celtics in January 2016 to visit with Andrew Smith , a player on both of Butler 's Final Four teams who was dying of cancer ; Smith died less than a week later . At the request of Andrew 's widow , Sam , Brad delivered the eulogy at the memorial service on January 17 , 2016 . + Stevens ' father , Mark , is an orthopedic surgeon in Indianapolis and former Indiana Hoosiers football player . His mother , Jan , is a university professor . She has previously taught at Butler . + + = = Head coaching record = = + + + = = = College = = = + + + = = = NBA = = = + + + = = = Awards and nominations = = = + + Henry Iba Coach of the Year Award finalist ( 2009 ) + Horizon League Coach of the Year ( 2009 , 2010 ) + Hugh Durham Award for Mid @-@ major Coach of the Year finalist ( 2008 , 2009 , 2010 ) + Hugh Durham Award Mid @-@ season honors ( 2009 ) + Jim Phelan National Coach of the Year Award finalist ( 2008 , 2009 , 2010 ) + Skip Prosser Man of the Year Award finalist ( 2010 ) + + + = Shackleton ( crater ) = + + Shackleton is an impact crater that lies at the south pole of the Moon . The peaks along the crater 's rim are exposed to almost continual sunlight , while the interior is perpetually in shadow ( a Crater of eternal darkness ) . The low @-@ temperature interior of this crater functions as a cold trap that may capture and freeze volatiles shed during comet impacts on the Moon . Measurements by the Lunar Prospector spacecraft showed higher than normal amounts of hydrogen within the crater , which may indicate the presence of water ice . The crater is named after Antarctic explorer Ernest Shackleton . + + = = Description = = + + The rotational axis of the Moon lies within Shackleton , only a few kilometers from its center . The crater is 21 km in diameter and 4 @.@ 2 km deep . From the Earth , it is viewed edge @-@ on in a region of rough , cratered terrain . It is located within the South Pole @-@ Aitken basin on a massif . The rim is slightly raised about the surrounding surface and it has an outer rampart that has been only lightly impacted . No significant craters intersect the rim , and it is sloped about 1 @.@ 5 ° toward the direction 50 – 90 ° from the Earth . The age of the crater is about 3 @.@ 6 billion years and it has been in the proximity of the south lunar pole for at least the last two billion years . + Because the orbit of the Moon is tilted only 5 ° from the ecliptic , the interior of this crater lies in perpetual darkness . Estimates of the area in permanent shadow were obtained from Earth @-@ based radar studies . Peaks along the rim of the crater are almost continually illuminated by sunlight , spending about 80 – 90 % of each lunar orbit exposed to the Sun . Continuously illuminated mountains have been termed peaks of eternal light and have been predicted to exist since the 1900s . + The shadowed portion of the crater was imaged with the Terrain Camera of the Japanese SELENE spacecraft using the illumination of sunlight reflected off the rim . The interior of the crater consists of a symmetrical 30 ° slope that leads down to a 6 @.@ 6 km diameter floor . The handful of craters along the interior span no more than a few hundred meters . The bottom is covered by an uneven mound @-@ like feature that is 300 to 400 m thick . The central peak is about 200 m in height . + The continuous shadows in the south polar craters cause the floors of these formations to maintain a temperature that never exceeds about 100 K. For Shackleton , the average temperature was determined to be about 90 K , reaching 88 K at the crater floor . Under these conditions , the estimated rate of loss from any ice in the interior would be 10 − 26 to 10 − 27 m / s . Any water vapor that arrives here following a cometary impact on the Moon would lie permanently frozen on or below the surface . However , the surface albedo of the crater floor matches the lunar far @-@ side , suggesting that there is no exposed surface ice . + This crater was named after Ernest Henry Shackleton , an Anglo @-@ Irish explorer of Antarctica from 1901 until his death in 1922 . The name was officially adopted by the International Astronomical Union in 1994 . Nearby craters of note include Shoemaker , Haworth , de Gerlache , Sverdrup , and Faustini . Somewhat farther away , on the eastern hemisphere of the lunar near side , are the larger craters Amundsen and Scott , named after two other early explorers of the Antarctic continent . + + = = Exploration = = + + From the perspective of the Earth , this crater lies along the southern limb of the Moon , making observation difficult . Detailed mapping of the polar regions and farside of the Moon did not occur until the advent of orbiting spacecraft . Shackleton lies entirely within the rim of the immense South Pole @-@ Aitken basin , which is one of the largest known impact formations in the Solar System . This basin is over 12 kilometers deep , and an exploration of its properties could provide useful information about the lunar interior . + A neutron spectrometer on board the Lunar Prospector spacecraft detected enhanced concentrations of hydrogen close to the northern and southern lunar poles , including the crater Shackleton . At the end of this mission in July 1999 , the spacecraft was crashed into the nearby crater Shoemaker in the hope of detecting from Earth @-@ based telescopes an impact @-@ generated plume containing water vapor . The impact event did not produce any detectable water vapor , and this may be an indication that the hydrogen is not in the form of hydrated minerals , or that the impact site did not contain any ice . Alternatively , it is possible that the crash did not excavate deeply enough into the regolith to liberate significant quantities of water vapor . + From Earth @-@ based radar and spacecraft images of the crater edge , Shackleton appears to be relatively intact ; much like a young crater that has not been significantly eroded from subsequent impacts . This may mean that the inner sides are relatively steep , which may make traversing the sides relatively difficult for a robotic vehicle . In addition , it is possible that the interior floor might not have collected a significant quantity of volatiles since its formation . However other craters in the vicinity are considerably older , and may contain significant deposits of hydrogen , possibly in the form of water ice . ( See Shoemaker ( lunar crater ) , for example . ) + Radar studies preceding and following the Lunar Prospector mission demonstrate that the inner walls of Shackleton are similar in reflective characteristics to those of some sunlit craters . In particular , the surroundings appear to contain a significant number of blocks in its ejecta blanket , suggesting that its radar properties are a result of surface roughness , and not ice deposits , as was previously suggested from a radar experiment involving the Clementine mission . This interpretation , however , is not universally agreed upon within the scientific community . Radar images of the crater at a wavelength of 13 cm show no evidence for water ice deposits . + Optical imaging inside the crater was done for the first time by the Japanese lunar orbiter spacecraft Kaguya in 2007 . It did not have any evidence of significant amount of water ice , down to the image resolution of 10 m per pixel . + On November 15 , 2008 , a 34 @-@ kg probe made a hard landing near the crater . The moon impact probe ( MIP ) was launched from the Indian Chandrayaan @-@ I spacecraft and reached the surface 25 minutes later . The probe carried a radar altimeter , video imaging system , and a mass spectrometer , which will be used to search for water . + + = = Potential uses = = + + Some sites along Shackleton 's rim receive almost constant illumination . At these locales sunlight is almost always available for conversion into electricity using solar panels , potentially making them good locations for future Moon landings . The temperature at this site is also more favorable than at more equatorial latitudes as it does not experience the daily temperature extremes of 100 ° C when the Sun is overhead , to as low as − 150 ° C during the lunar night . + While scientific experiments performed by Clementine and Lunar Prospector could indicate the presence of water in the polar craters , the current evidence is far from definitive . There are doubts among scientists as to whether or not the hydrogen is in the form of ice , as well as to the concentration of this " ore " with depth below the surface . Resolution of this issue will require future missions to the Moon . The presence of water suggests that the crater floor could potentially be " mined " for deposits of hydrogen in water form , a commodity that is expensive to deliver directly from the Earth . + This crater has also been proposed as a future site for a large infrared telescope . The low temperature of the crater floor makes it ideal for infrared observations , and solar cells placed along the rim could provide near @-@ continuous power to the observatory . About 120 kilometers from the crater lies the 5 @-@ km tall Malapert Mountain , a peak that is perpetually visible from the Earth , and which could serve as a radio relay station when suitably equipped . + NASA has named the rim of Shackleton as a potential candidate for its lunar outpost , slated to be up and running by 2020 and continuously staffed by a crew by 2024 . The location would promote self @-@ sustainability for lunar residents , as perpetual sunlight on the south pole would provide energy for solar panels . Furthermore , the shadowed polar regions are believed to contain the frozen water necessary for human consumption and could also be harvested for fuel manufacture . + + + = American Beauty ( 1999 film ) = + + American Beauty is a 1999 American drama film directed by Sam Mendes and written by Alan Ball . Kevin Spacey stars as Lester Burnham , a 42 @-@ year @-@ old advertising executive who has a midlife crisis when he becomes infatuated with his teenaged daughter 's best friend , Angela ( Mena Suvari ) . Annette Bening co @-@ stars as Lester 's materialistic wife , Carolyn , and Thora Birch plays their insecure daughter , Jane . Wes Bentley , Chris Cooper , and Allison Janney also feature . The film is described by academics as a satire of American middle @-@ class notions of beauty and personal satisfaction ; analysis has focused on the film 's explorations of romantic , and paternal love , sexuality , beauty , materialism , self @-@ liberation , and redemption . + Ball began writing American Beauty as a play in the early 1990s , partly inspired by the media circus around the Amy Fisher trial in 1992 . He shelved the play after realizing the story would not work on stage . After several years as a television screenwriter , Ball revived the idea in 1997 when attempting to break into the film industry . The modified script had a cynical outlook that was influenced by Ball 's frustrating tenures writing for several sitcoms . Producers Dan Jinks and Bruce Cohen took American Beauty to DreamWorks ; the then @-@ fledgling film studio bought Ball 's script for $ 250 @,@ 000 , outbidding several other production bodies . DreamWorks financed the $ 15 million production and served as its North American distributor . American Beauty marked acclaimed theater director Mendes ' film debut ; courted after his successful productions of the musicals Oliver ! and Cabaret , Mendes was , nevertheless , only given the job after 20 others were considered and several " A @-@ list " directors turned down the opportunity . + Spacey was Mendes ' first choice for the role of Lester , though DreamWorks had urged the director to consider better @-@ known actors ; similarly , the studio suggested several actors for the role of Carolyn until Mendes offered the part to Bening without DreamWorks ' knowledge . Principal photography took place between December 1998 and February 1999 on soundstages at the Warner Bros. backlot in Burbank , California , and on location in Los Angeles . Mendes ' dominant style was deliberate and composed ; he made extensive use of static shots and slow pans and zooms to generate tension . Cinematographer Conrad Hall complemented Mendes ' style with peaceful shot compositions to contrast with the turbulent on @-@ screen events . During editing , Mendes made several changes that gave the film a less cynical tone than the script . + Released in North America on September 17 , 1999 , American Beauty was positively received by critics and audiences ; it was the best @-@ reviewed American film of the year and grossed over $ 356 million worldwide . Reviewers praised most aspects of the production , with particular emphasis on Mendes , Spacey , and Ball ; criticism focused on the familiarity of the characters and setting . DreamWorks launched a major campaign to increase the film 's chances of Academy Award success ; at the 72nd Academy Awards the following year , the film won Best Picture , Best Director , Best Actor ( for Spacey ) , Best Original Screenplay , and Best Cinematography . It was nominated for and won many other awards and honors , mainly for the direction , writing , and acting . + + = = Plot = = + + Lester Burnham is a middle @-@ aged advertising executive and magazine writer who despises his job . He is unhappily married to Carolyn , a neurotic yet fiercely ambitious real estate broker ; their teenaged daughter , Jane , abhors her parents and has low self @-@ esteem . The Burnhams ' new neighbors are retired United States Marine Corps Colonel Frank Fitts and his near @-@ catatonic wife , Barbara . Their teenaged son , Ricky , constantly films his surroundings with a camcorder , collecting hundreds of recordings on videotapes in his bedroom . His job as a part @-@ time bar caterer serves as a front for his secret marijuana dealing . Col. Fitts is a strict disciplinarian who previously sent Ricky to a military school and briefly committed him to a psychiatric hospital . Jim Olmeyer and Jim Berkley , a gay couple who live nearby , welcome the family to the neighborhood ; the homophobic Col. Fitts angrily asks Ricky " why these faggots have to rub it in your face . " + Lester becomes infatuated with Jane 's vain friend , Angela Hayes , after seeing her perform a half @-@ time dance routine at a high school basketball game . He starts having sexual fantasies about Angela , in which red rose petals are a recurring motif . Carolyn begins an affair with her married business rival , Buddy Kane . When Lester 's boss , Brad , tells him that he is to be laid off , Lester instead blackmails him for $ 60 @,@ 000 and quits his job . Lester takes a minimum @-@ wage job at a fast @-@ food restaurant , trades in his Toyota Camry for his dream car , a 1970 Pontiac Firebird , and starts working out after he overhears Angela tell Jane that she would find him sexually attractive if he got in shape . He begins smoking marijuana supplied by Ricky . The girls ' friendship wanes after Jane starts a relationship with Ricky . Jane and Ricky bond over what Ricky considers the most beautiful imagery he has filmed : a plastic bag being blown in the wind . + Lester discovers Carolyn 's infidelity , but reacts indifferently . Buddy ends the affair , fearing an expensive divorce . Col. Fitts becomes suspicious of Lester and Ricky 's friendship when he finds his son 's footage of Lester lifting weights while nude , which Ricky captured by chance , leading him to believe that Ricky is gay . After spying on Ricky and Lester through Lester 's garage window , the colonel mistakenly concludes the pair is sexually involved . He later confronts and beats Ricky for the supposed affair and accuses him of being gay . Ricky falsely admits the charges and goads his father into kicking him out of their home . Meanwhile , Carolyn is sitting in her car in the rain , taking a gun out of the glove box while a voice on the radio talks about not being a victim . Ricky goes to Jane 's bedroom , finding her arguing with Angela about Angela 's flirtation with Lester . Ricky convinces Jane to flee with him to New York City and assures Angela that she is ugly , boring , and ordinary . + Col. Fitts confronts Lester and attempts to kiss him ; Lester rebuffs the colonel , who tearfully flees . Carolyn puts the gun in her handbag , shouting , " I refuse to be a victim ! " Lester finds a distraught Angela sitting alone in the dark ; she asks him to tell her she is beautiful . He does , and they kiss . + Carolyn drives through the rain , rehearsing a confession to Lester . Just as Lester and Angela are about to have sex , she admits that she is a virgin , and Lester changes his mind . He instead comforts her and the pair bond over their shared frustrations . Angela goes to the bathroom and Lester smiles at a family photograph in his kitchen . An unseen figure raises a gun to the back of his head , a gunshot sounds , and blood sprays on the wall . Ricky and Jane find Lester 's body , while Carolyn breaks down crying in the closet . A bloodied Col. Fitts returns home , where a gun is shown to be missing from his collection . Lester 's closing narration describes meaningful experiences during his life ; he says that , despite his death , he is happy because there is " so much beauty " in the world . + + = = Themes and analysis = = + + + = = = Multiple interpretations = = = + + Scholars and academics have offered many possible readings of American Beauty ; film critics are similarly divided , not so much about the quality of the film , as their interpretations of it . Described by many as about " the meaning of life " or " the hollow existence of the American suburbs " , the film has defied categorization by even the filmmakers . Mendes is indecisive , saying the script seemed to be about something different each time he read it : " a mystery story , a kaleidoscopic journey through American suburbia , a series of love stories ; [ ... ] it was about imprisonment , [ ... ] loneliness , [ and ] beauty . It was funny ; it was angry , sad . " The literary critic and author Wayne C. Booth concludes that the film resists any one interpretation : " [ American Beauty ] cannot be adequately summarized as ' here is a satire on what 's wrong with American life ' ; that plays down the celebration of beauty . It is more tempting to summarize it as ' a portrait of the beauty underlying American miseries and misdeeds ' , but that plays down the scenes of cruelty and horror , and Ball 's disgust with our mores . It cannot be summarized with either Lester or Ricky 's philosophical statements about what life is or how one should live . " He argues that the problem of interpreting the film is tied with that of finding its center — a controlling voice who " [ unites ] all of the choices " . He contends that in American Beauty 's case , it is neither Mendes nor Ball . Mendes considers the voice to be Ball 's , but even while the writer was " strongly influential " on set , he often had to accept deviations from his vision , particularly ones that transformed the cynical tone of his script into something more optimistic . With " innumerable voices intruding on the original author 's , " Booth says , those who interpret American Beauty " have forgotten to probe for the elusive center " . According to Booth , the film 's true controller is the creative energy " that hundreds of people put into its production , agreeing and disagreeing , inserting and cutting " . + + = = = Imprisonment and redemption = = = + + Mendes called American Beauty a rite of passage film about imprisonment and escape from imprisonment . The monotony of Lester 's existence is established through his gray , nondescript workplace and characterless clothing . In these scenes , he is often framed as if trapped , " reiterating rituals that hardly please him " . He masturbates in the confines of his shower ; the shower stall evokes a jail cell and the shot is the first of many where Lester is confined behind bars or within frames , such as when he is reflected behind columns of numbers on a computer monitor , " confined [ and ] nearly crossed out " . The academic and author Jody W. Pennington argues that Lester 's journey is the story 's center . His sexual reawakening through meeting Angela is the first of several turning points as he begins to " [ throw ] off the responsibilities of the comfortable life he has come to despise " . After Lester shares a joint with Ricky , his spirit is released and he begins to rebel against Carolyn . Changed by Ricky 's " attractive , profound confidence " , Lester is convinced that Angela is attainable and sees that he must question his " banal , numbingly materialist suburban existence " ; he takes a job at a fast @-@ food outlet , which allows him to regress to a point when he could " see his whole life ahead of him " . + When Lester is caught masturbating by Carolyn , his angry retort about their lack of intimacy is the first time he says aloud what he thinks about her . By confronting the issue and Carolyn 's " superficial investments in others " , Lester is trying to " regain a voice in a home that [ only respects ] the voices of mother and daughter " . His final turning point comes when Angela and he almost have sex ; after she confesses her virginity , he no longer thinks of her as a sex object , but as a daughter . He holds her close and " wraps her up " . Mendes called it " the most satisfying end to [ Lester 's ] journey there could possibly have been " . With these final scenes , Mendes intended to show Lester at the conclusion of a " mythical quest " . After Lester gets a beer from the refrigerator , the camera pushes toward him , then stops facing a hallway down which he walks " to meet his fate " . Having begun to act his age again , Lester achieves closure . As he smiles at a family photo , the camera pans slowly from Lester to the kitchen wall , onto which blood spatters as a gunshot rings out ; the slow pan reflects the peace of Lester 's death . His body is discovered by Jane and Ricky . Mendes said that Ricky 's staring into Lester 's dead eyes is " the culmination of the theme " of the film : that beauty is found where it is least expected . + + = = = Conformity and beauty = = = + + Like other American films of 1999 — such as Fight Club , Bringing Out the Dead , and Magnolia , American Beauty instructs its audience to " [ lead ] more meaningful lives " . The film argues the case against conformity , but does not deny that people need and want it ; even the gay characters just want to fit in . Jim and Jim , the Burnhams ' other neighbors , are a satire of " gay bourgeois coupledom " , who " [ invest ] in the numbing sameness " that the film criticizes in heterosexual couples . The feminist academic and author Sally R. Munt argues that American Beauty uses its " art house " trappings to direct its message of nonconformity primarily to the middle classes , and that this approach is a " cliché of bourgeois preoccupation ; [ ... ] the underlying premise being that the luxury of finding an individual ' self ' through denial and renunciation is always open to those wealthy enough to choose , and sly enough to present themselves sympathetically as a rebel . " + Professor Roy M. Anker argues that the film 's thematic center is its direction to the audience to " look closer " . The opening combines an unfamiliar viewpoint of the Burnhams ' neighborhood with Lester 's narrated admission that he will soon die , forcing audiences to consider their own mortality and the beauty around them . It also sets a series of mysteries ; Anker asks , " from what place exactly , and from what state of being , is he telling this story ? If he 's already dead , why bother with whatever it is he wishes to tell about his last year of being alive ? There is also the question of how Lester has died — or will die . " Anker believes the preceding scene — Jane 's discussion with Ricky about the possibility of his killing her father — adds further mystery . Professor Ann C. Hall disagrees ; she says by presenting an early resolution to the mystery , the film allows the audience to put it aside " to view the film and its philosophical issues " . Through this examination of Lester 's life , rebirth and death , American Beauty satirizes American middle class notions of meaning , beauty and satisfaction . Even Lester 's transformation only comes about because of the possibility of sex with Angela ; he therefore remains a " willing devotee of the popular media 's exaltation of pubescent male sexuality as a sensible route to personal wholeness " . Carolyn is similarly driven by conventional views of happiness ; from her belief in " house beautiful " domestic bliss to her car and gardening outfit , Carolyn 's domain is a " fetching American millennial vision of Pleasantville , or Eden " . The Burnhams are unaware that they are " materialists philosophically , and devout consumers ethically " who expect the " rudiments of American beauty " to give them happiness . Anker argues that " they are helpless in the face of the prettified economic and sexual stereotypes [ ... ] that they and their culture have designated for their salvation . " + The film presents Ricky as its " visionary , [ ... ] spiritual and mystical center " . He sees beauty in the minutiae of everyday life , videoing as much as he can for fear of missing it . He shows Jane what he considers the most beautiful thing he has filmed : a plastic bag , tossing in the wind in front of a wall . He says capturing the moment was when he realized that there was " an entire life behind things " ; he feels that " sometimes there 's so much beauty in the world I feel like I can 't take it ... and my heart is going to cave in . " Anker argues that Ricky , in looking past the " cultural dross " , has " [ grasped ] the radiant splendor of the created world " to see God . As the film progresses , the Burnhams move closer to Ricky 's view of the world . Lester only forswears personal satisfaction at the film 's end . On the cusp of having sex with Angela , he returns to himself after she admits her virginity . Suddenly confronted with a child , he begins to treat her as a daughter ; in doing so , Lester sees himself , Angela , and his family " for the poor and fragile but wondrous creatures they are " . He looks at a picture of his family in happier times , and dies having had an epiphany that infuses him with " wonder , joy , and soul @-@ shaking gratitude " — he has finally seen the world as it is . + According to Patti Bellantoni , colors are used symbolically throughout the film , none more so than red , which is an important thematic signature that drives the story and " [ defines ] Lester 's arc " . First seen in drab colors that reflect his passivity , Lester surrounds himself with red as he regains his individuality . The American Beauty rose is repeatedly used as symbol ; when Lester fantasizes about Angela , she is usually naked and surrounded by rose petals . In these scenes , the rose symbolizes Lester 's desire for her . When associated with Carolyn , the rose represents a " façade for suburban success " . Roses are included in almost every shot inside the Burnhams ' home , where they signify " a mask covering a bleak , unbeautiful reality " . Carolyn feels that " as long as there can be roses , all is well " . She cuts the roses and puts them in vases , where they adorn her " meretricious vision of what makes for beauty " and begin to die . The roses in the vase in the Angela – Lester seduction scene symbolize Lester 's previous life and Carolyn ; the camera pushes in as Lester and Angela get closer , finally taking the roses — and thus Carolyn — out of the shot . Lester 's epiphany at the end of the film is expressed by rain and the use of red , building to a crescendo that is a deliberate contrast to the release Lester feels . The constant use of red " lulls [ the audience ] subliminally " into becoming used to it ; consequently , it leaves the audience unprepared when Lester is shot and his blood spatters on the wall . + + = = = Sexuality and repression = = = + + Pennington argues that American Beauty defines its characters through their sexuality . Lester 's attempts to relive his youth are a direct result of his lust for Angela , and the state of his relationship with Carolyn is in part shown through their lack of sexual contact . Also sexually frustrated , Carolyn has an affair that takes her from " cold perfectionist " to a more carefree soul who " [ sings ] happily along with " the music in her car . Jane and Angela constantly reference sex , through Angela 's descriptions of her supposed sexual encounters and the way the girls address each other . Their nude scenes are used to communicate their vulnerability . By the end of the film , Angela 's hold on Jane has weakened until the only power she has over her friend is Lester 's attraction to her . Col. Fitts reacts with disgust to meeting Jim and Jim ; he asks , " How come these faggots always have to rub it in your face ? How can they be so shameless ? " To which Ricky replies , " That 's the thing , Dad — they don 't feel like it 's anything to be ashamed of . " Pennington argues that Col. Fitts ' reaction is not homophobic , but an " anguished self @-@ interrogation " . + With other turn @-@ of @-@ the @-@ millennium films such as Fight Club , In the Company of Men ( 1997 ) , American Psycho ( 2000 ) , and Boys Don 't Cry ( 1999 ) , American Beauty " raises the broader , widely explored issue of masculinity in crisis " . Professor Vincent Hausmann charges that in their reinforcement of masculinity " against threats posed by war , by consumerism , and by feminist and queer challenges " , these films present a need to " focus on , and even to privilege " aspects of maleness " deemed ' deviant ' " . Lester 's transformation conveys " that he , and not the woman , has borne the brunt of [ lack of being ] " and he will not stand for being emasculated . Lester 's attempts to " strengthen traditional masculinity " conflict with his responsibilities as a father . Although the film portrays the way Lester returns to that role positively , he does not become " the hypermasculine figure implicitly celebrated in films like Fight Club " . Hausmann concludes that Lester 's behavior toward Angela is " a misguided but nearly necessary step toward his becoming a father again " . + Hausmann says the film " explicitly affirms the importance of upholding the prohibition against incest " ; a recurring theme of Ball 's work is his comparison of the taboos against incest and homosexuality . Instead of making an overt distinction , American Beauty looks at how their repression can lead to violence . Col. Fitts is so ashamed of his homosexuality that it drives him to murder Lester . Ball said , " The movie is in part about how homophobia is based in fear and repression and about what [ they ] can do . " The film implies two unfulfilled incestuous desires : Lester 's pursuit of Angela is a manifestation of his lust for his own daughter , while Col. Fitts ' repression is exhibited through the almost sexualized discipline with which he controls Ricky . Consequently , Ricky realizes that he can only hurt his father by falsely telling him he is homosexual , while Angela 's vulnerability and submission to Lester reminds him of his responsibilities and the limits of his fantasy . Col. Fitts represents Ball 's father , whose repressed homosexual desires led to his own unhappiness . Ball rewrote Col. Fitts to delay revealing him as homosexual , which Munt reads as a possible " deferment of Ball 's own patriarchal @-@ incest fantasies " . + + = = = Temporality and music = = = + + American Beauty follows a traditional narrative structure , only deviating with the displaced opening scene of Jane and Ricky from the middle of the story . Although the plot spans one year , the film is narrated by Lester at the moment of his death . Jacqueline Furby says that the plot " occupies [ ... ] no time [ or ] all time " , citing Lester 's claim that life did not flash before his eyes , but that it " stretches on forever like an ocean of time " . Furby argues that a " rhythm of repetition " forms the core of the film 's structure . For example , two scenes have the Burnhams sitting down to an evening meal , shot from the same angle . Each image is broadly similar , with minor differences in object placement and body language that reflect the changed dynamic brought on by Lester 's new @-@ found assertiveness . Another example is the pair of scenes in which Jane and Ricky film each other . Ricky films Jane from his bedroom window as she removes her bra , and the image is reversed later for a similarly " voyeuristic and exhibitionist " scene in which Jane films Ricky at a vulnerable moment . + Lester 's fantasies are emphasized by slow- and repetitive @-@ motion shots ; Mendes uses double @-@ and @-@ triple cutbacks in several sequences , and the score alters to make the audience aware that it is entering a fantasy . One example is the gymnasium scene — Lester 's first encounter with Angela . While the cheerleaders perform their half @-@ time routine to " On Broadway " , Lester becomes increasingly fixated on Angela . Time slows to represent his " voyeuristic hypnosis " and Lester begins to fantasize that Angela 's performance is for him alone . " On Broadway " — which provides a conventional underscore to the onscreen action — is replaced by discordant , percussive music that lacks melody or progression . This nondiegetic score is important to creating the narrative stasis in the sequence ; it conveys a moment for Lester that is stretched to an indeterminate length . The effect is one that Stan Link likens to " vertical time " , described by the composer and music theorist Jonathan Kramer as music that imparts " a single present stretched out into an enormous duration , a potentially infinite ' now ' that nonetheless feels like an instant " . The music is used like a visual cue , so that Lester and the score are staring at Angela . The sequence ends with the sudden reintroduction of " On Broadway " and teleological time . + According to Drew Miller of Stylus , the soundtrack " [ gives ] unconscious voice " to the characters ' psyches and complements the subtext . The most obvious use of pop music " accompanies and gives context to " Lester 's attempts to recapture his youth ; reminiscent of how the counterculture of the 1960s combated American repression through music and drugs , Lester begins to smoke cannabis and listen to rock music . Mendes ' song choices " progress through the history of American popular music " . Miller argues that although some may be over familiar , there is a parodic element at work , " making good on [ the film 's ] encouragement that viewers look closer " . Toward the end of the film , Thomas Newman 's score features more prominently , creating " a disturbing tempo " that matches the tension of the visuals . The exception is " Don 't Let It Bring You Down " , which plays during Angela 's seduction of Lester . At first appropriate , its tone clashes as the seduction stops . The lyrics , which speak of " castles burning " , can be seen as a metaphor for Lester 's view of Angela — " the rosy , fantasy @-@ driven exterior of the ' American Beauty ' " — as it burns away to reveal " the timid , small @-@ breasted girl who , like his wife , has willfully developed a false public self " . + + = = Production = = + + + = = = Development = = = + + In 1997 , Alan Ball resolved to move into the film industry after several frustrating years writing for the television sitcoms Grace Under Fire and Cybill . He joined the United Talent Agency , where his representative , Andrew Cannava , suggested he write a spec script to " reintroduce [ himself ] to the town as a screenwriter " . Ball pitched three ideas to Cannava : two conventional romantic comedies and American Beauty , which he had originally conceived as a play in the early 1990s . Despite the story 's lack of an easily marketable concept , Cannava selected American Beauty because he felt it was the one for which Ball had the most passion . While developing the script , Ball created another television sitcom , Oh , Grow Up . He channeled his anger and frustration at having to accede to network demands on that show — and during his tenures on Grace Under Fire and Cybill — into writing American Beauty . + Ball did not expect to sell the script , believing it would act as more of a calling card , but American Beauty drew interest from several production bodies . Cannava passed the script to several producers , including Dan Jinks and Bruce Cohen , who took it to DreamWorks . With the help of executives Glenn Williamson and Bob Cooper , and Steven Spielberg in his capacity as studio partner , Ball was convinced to develop the project at DreamWorks ; he received assurances from the studio — known at the time for its more conventional fare — that it would not " iron the [ edges ] out " . In an unusual move , DreamWorks decided not to option the script ; instead , in April 1998 , the studio bought it outright for $ 250 @,@ 000 , outbidding Fox Searchlight Pictures , October Films , Metro @-@ Goldwyn @-@ Mayer , and Lakeshore Entertainment . DreamWorks planned to make the film for $ 6 – 8 million . + Jinks and Cohen involved Ball throughout the film 's development , including casting and director selection . The producers met with about 20 interested directors , several of whom were considered " A @-@ list " at the time . Ball was not keen on the more well @-@ known directors because he believed their involvement would increase the budget and lead DreamWorks to become " nervous about the content " . Nevertheless , the studio offered the film to Mike Nichols and Robert Zemeckis ; neither accepted . In the same year , Mendes ( then a theater director ) revived the musical Cabaret in New York with fellow director Rob Marshall . Beth Swofford of the Creative Artists Agency arranged meetings for Mendes with studio figures in Los Angeles to see if film direction was a possibility . Mendes came across American Beauty in a pile of eight scripts at Swofford 's house , and knew immediately that it was the one he wanted to make ; early in his career , he had been inspired by how the film Paris , Texas ( 1984 ) presented contemporary America as a mythic landscape and he saw the same theme in American Beauty , as well as parallels with his own childhood . Mendes later met with Spielberg ; impressed by Mendes ' productions of Oliver ! and Cabaret , Spielberg encouraged him to consider American Beauty . + Mendes found that he still had to convince DreamWorks ' production executives to let him direct . He had already discussed the film with Jinks and Cohen , and felt they supported him . Ball was also keen ; having seen Cabaret , he was impressed with Mendes ' " keen visual sense " and thought he did not make obvious choices . Ball felt that Mendes liked to look under the story 's surface , a talent he felt would be a good fit with the themes of American Beauty . Mendes ' background also reassured him , because of the prominent role the playwright usually has in a theater production . Over two meetings — the first with Cooper , Walter Parkes , and Laurie MacDonald , the second with Cooper alone — Mendes pitched himself to the studio . The studio soon approached Mendes with a deal to direct for the minimum salary allowed under Directors Guild of America rules — $ 150 @,@ 000 . Mendes accepted , and later recalled that after taxes and his agent 's commission , he only earned $ 38 @,@ 000 . In June 1998 , DreamWorks confirmed that it had contracted Mendes to direct the film . + + = = = Writing = = = + + Ball was partly inspired by two encounters he had in the early 1990s . In about 1991 – 92 , Ball saw a plastic bag blowing in the wind outside the World Trade Center . He watched the bag for 10 minutes , saying later that it provoked an " unexpected emotional response " . In 1992 , Ball became preoccupied with the media circus around the Amy Fisher trial . Discovering a comic book telling of the scandal , he was struck by how quickly it had become commercialized . He said he " felt like there was a real story underneath [ that was ] more fascinating and way more tragic " than the story presented to the public , and attempted to turn the idea into a play . Ball produced around 40 pages , but stopped when he realized it would work better as a film . He felt that because of the visual themes , and because each character 's story was .. " intensely personal " , it could not be done on a stage . All the main characters appeared in this version , but Carolyn did not feature strongly ; Jim and Jim instead had much larger roles . + Ball based Lester 's story on aspects of his own life . Lester 's re @-@ examination of his life parallels feelings Ball had in his mid @-@ 30s ; like Lester , Ball put aside his passions to work in jobs he hated for people he did not respect . Scenes in Ricky 's household reflect Ball 's own childhood experiences . Ball suspected his father was homosexual and used the idea to create Col. Fitts , a man who " gave up his chance to be himself " . Ball said the script 's mix of comedy and drama was not intentional , but that it came unconsciously from his own outlook on life . He said the juxtaposition produced a starker contrast , giving each trait more impact than if they appeared alone . + In the script that was sent to prospective actors and directors , Lester and Angela had sex ; by the time of shooting , Ball had rewritten the scene to the final version . Ball initially rebuffed counsel from others that he change the script , feeling they were being puritanical ; the final impetus to alter the scene came from DreamWorks ' then @-@ president Walter Parkes . He convinced Ball by indicating that in Greek mythology , the hero " has a moment of epiphany before [ ... ] tragedy occurs " . Ball later said his anger when writing the first draft had blinded him to the idea that Lester needed to refuse sex with Angela to complete his emotional journey — to achieve redemption . Jinks and Cohen asked Ball not to alter the scene right away , as they felt it would be inappropriate to make changes to the script before a director had been hired . Early drafts also included a flashback to Col. Fitts ' service in the Marines , a sequence that unequivocally established his homosexual leanings . In love with another Marine , Col. Fitts sees the man die and comes to believe that he is being punished for the " sin " of being gay . Ball removed the sequence because it did not fit the structure of the rest of the film — Col. Fitts was the only character to have a flashback — and because it removed the element of surprise from Col. Fitts ' later pass at Lester . Ball said he had to write it for his own benefit to know what happened to Col. Fitts , though all that remained in later drafts was subtext . + Ball remained involved throughout production ; he had signed a television show development deal , so had to get permission from his producers to take a year off to be close to American Beauty . Ball was on @-@ set for rewrites and to help interpret his script for all but two days of filming . His original bookend scenes — in which Ricky and Jane are prosecuted for Lester 's murder after being framed by Col. Fitts — were excised in post @-@ production ; the writer later felt the scenes were unnecessary , saying they were a reflection of his " anger and cynicism " at the time of writing ( see " Editing " ) . Ball and Mendes revised the script twice before it was sent to the actors , and twice more before the first read @-@ through . + The shooting script features a scene in Angela 's car in which Ricky and Jane talk about death and beauty ; the scene differed from earlier versions , which set it as a " big scene on a freeway " in which the three witness a car crash and see a dead body . The change was a practical decision , as the production was behind schedule and they needed to cut costs . The schedule called for two days to be spent filming the crash , but only half a day was available . Ball agreed , but only if the scene could retain a line of Ricky 's where he reflects on having once seen a dead homeless woman : " When you see something like that , it 's like God is looking right at you , just for a second . And if you 're careful , you can look right back . " Jane asks : " And what do you see ? " Ricky : " Beauty . " Ball said , " They wanted to cut that scene . They said it 's not important . I said , ' You 're out of your fucking mind . It 's one of the most important scenes in the movie ! ' [ ... ] If any one line is the heart and soul of this movie , that is the line . " Another scene was rewritten to accommodate the loss of the freeway sequence ; set in a schoolyard , it presents a " turning point " for Jane in that she chooses to walk home with Ricky instead of going with Angela . By the end of filming , the script had been through 10 drafts . + + = = = Casting = = = + + Mendes had Spacey and Bening in mind for the leads from the beginning , but DreamWorks executives were unenthusiastic . The studio suggested several alternatives , including Bruce Willis , Kevin Costner , or John Travolta to play Lester , and Helen Hunt or Holly Hunter to play Carolyn . Mendes did not want a big star " weighing the film down " ; he felt Spacey was the right choice based on his performances in the 1995 films The Usual Suspects and Seven , and 1992 's Glengarry Glen Ross . Spacey was surprised ; he said , " I usually play characters who are very quick , very manipulative and smart . [ ... ] I usually wade in dark , sort of treacherous waters . This is a man living one step at a time , playing by his instincts . This is actually much closer to me , to what I am , than those other parts . " Mendes offered Bening the role of Carolyn without the studio 's consent ; although executives were upset at Mendes , by September 1998 , DreamWorks had entered negotiations with Spacey and Bening . + Spacey loosely based Lester 's early " schlubby " deportment on Walter Matthau . During the film , Lester 's physique improves from flabby to toned ; Spacey worked out during filming to improve his body , but because Mendes shot the scenes out of chronological order , Spacey varied postures to portray the stages . Before filming , Mendes and Spacey analyzed Jack Lemmon 's performance in The Apartment ( 1960 ) , because Mendes wanted Spacey to emulate " the way [ Lemmon ] moved , the way he looked , the way he was in that office and the way he was an ordinary man and yet a special man " . Spacey 's voiceover is a throwback to Sunset Boulevard ( 1950 ) , which is also narrated in retrospect by a dead character . Mendes felt it evoked Lester 's — and the film 's — loneliness . Bening recalled women from her youth to inform her performance : " I used to babysit constantly . You 'd go to church and see how people present themselves on the outside , and then be inside their house and see the difference . " Bening and a hair stylist collaborated to create a " PTA president coif " hairstyle , and Mendes and production designer Naomi Shohan researched mail @-@ order catalogs to better establish Carolyn 's environment of a " spotless suburban manor " . To help Bening get into Carolyn 's mindset , Mendes gave her music that he believed Carolyn would like . He lent Bening the Bobby Darin version of the song " Don 't Rain on My Parade " , which she enjoyed and persuaded the director to include it for a scene in which Carolyn sings in her car . + For the roles of Jane , Ricky , and Angela , DreamWorks gave Mendes carte blanche . By November 1998 , Thora Birch , Wes Bentley , and Mena Suvari had been cast in the parts — in Birch 's case , despite the fact she was underage for her nude scene . As Birch was 16 at the time she made the film , and thus classified as a minor in the United States , her parents had to approve her brief topless scene in the movie . Child labor representatives and they were on the set for the shooting of the scene . Bentley overcame competition from top actors under the age of 25 to be cast . The 2009 documentary My Big Break followed Bentley , and several other young actors , before and after he landed the part . To prepare , Mendes provided Bentley with a video camera , telling the actor to film what Ricky would . Peter Gallagher and Alison Janney were cast ( as Buddy Kane and Barbara Fitts ) after filming began in December 1998 . Mendes gave Janney a book of paintings by Edvard Munch . He told her , " Your character is in there somewhere . " Mendes cut much of Barbara 's dialogue , including conversations between Colonel Fitts and her , as he felt that what needed to be said about the pair — their humanity and vulnerability — was conveyed successfully through their shared moments of silence . Chris Cooper plays Colonel Fitts , Scott Bakula plays Jim Olmeyer , and Sam Robards plays Jim Berkley . Jim and Jim were deliberately depicted as the most normal , happy — and boring — couple in the film . Ball 's inspiration for the characters came from a thought he had after seeing a " bland , boring , heterosexual couple " who wore matching clothes : " I can 't wait for the time when a gay couple can be just as boring . " Ball also included aspects of a gay couple he knew who had the same forename . + Mendes insisted on two weeks of cast rehearsals , although the sessions were not as formal as he was used to in the theater , and the actors could not be present at every one . Several improvisations and suggestions by the actors were incorporated into the script . An early scene showing the Burnhams leaving home for work was inserted later on to show the low point that Carolyn and Lester 's relationship had reached . Spacey and Bening worked to create a sense of the love that Lester and Carolyn once had for one another ; for example , the scene in which Lester almost seduces Carolyn after the pair argues over Lester 's buying a car was originally " strictly contentious " . + + = = = Filming = = = + + Principal photography lasted about 50 days from December 14 , 1998 , to February 1999 . American Beauty was filmed on soundstages at the Warner Bros. backlot in Burbank , California , and at Hancock Park and Brentwood in Los Angeles . The aerial shots at the beginning and end of the film were captured in Sacramento , California , and many of the school scenes were shot at South High School in Torrance , California ; several extras in the gym crowd were South High students . The film is set in an upper middle @-@ class neighborhood in an unidentified American town . Production designer Naomi Shohan likened the locale to Evanston , Illinois , but said , " it 's not about a place , it 's about an archetype . [ ... ] The milieu was pretty much Anywhere , USA — upwardly mobile suburbia . " The intent was for the setting to reflect the characters , who are also archetypes . Shohan said , " All of them are very strained , and their lives are constructs . " The Burnhams ' household was designed as the reverse of the Fitts ' — the former a pristine ideal , but graceless and lacking in " inner balance " , leading to Carolyn 's desire to at least give it the appearance of a " perfect all @-@ American household " ; the Fitts ' home is depicted in " exaggerated darkness [ and ] symmetry " . + The production selected two adjacent properties on the Warner backlot 's " Blondie Street " for the Burnham and Fitts ' homes . The crew rebuilt the houses to incorporate false rooms that established lines of sight — between Ricky and Jane 's bedroom windows , and between Ricky 's bedroom and Lester 's garage . The garage windows were designed specifically to obtain the crucial shot toward the end of the film in which Col. Fitts — watching from Ricky 's bedroom — mistakenly assumes that Lester is paying Ricky for sex . Mendes made sure to establish the line of sight early on in the film to make the audience feel a sense of familiarity with the shot . The house interiors were filmed on the backlot , on location , and on soundstages when overhead shots were needed . The inside of the Burnhams ' home was shot at a house close to Interstate 405 and Sunset Boulevard in Los Angeles ; the inside of the Fitts ' home was shot in the city 's Hancock Park neighborhood . Ricky 's bedroom was designed to be cell @-@ like to suggest his " monkish " personality , while at the same time blending with the high @-@ tech equipment to reflect his voyeuristic side . The production deliberately minimized the use of red , as it was an important thematic signature elsewhere . The Burnhams ' home uses cool blues , while the Fitts ' is kept in a " depressed military palette " . + Mendes ' dominating visual style was deliberate and composed , with a minimalist design that provided " a sparse , almost surreal feeling — a bright , crisp , hard edged , near Magritte @-@ like take on American suburbia " ; Mendes constantly directed his set dressers to empty the frame . He made Lester 's fantasy scenes " more fluid and graceful " , and Mendes made minimal use of steadicams , feeling that stable shots generated more tension . For example , when Mendes used a slow push in to the Burnhams ' dinner table , he held the shot because his training as a theater director taught him the importance of putting distance between the characters . He wanted to keep the tension in the scene , so he only cut away when Jane left the table . Mendes did use a hand @-@ held camera for the scene in which Col. Fitts beats Ricky . Mendes said the camera provided the scene with a " kinetic [ ... ] off @-@ balance energy " . He also went hand @-@ held for the excerpts of Ricky 's camcorder footage . Mendes took a long time to get the quality of Ricky 's footage to the level he wanted . For the plastic @-@ bag footage , Mendes used wind machines to move the bag in the air . The scene took four takes ; two by the second unit did not satisfy Mendes , so he shot the scene himself . He felt his first take lacked grace , but for the last attempt , he changed the location to the front of a brick wall and added leaves on the ground . Mendes was satisfied by the way the wall gave definition to the outline of the bag . + Mendes avoided using close @-@ ups , as he believed the technique was overused ; he also cited Spielberg 's advice that he should imagine an audience silhouetted at the bottom of the camera monitor , to keep in mind that he was shooting for display on a 40 @-@ foot ( 10 m ) screen . Spielberg — who visited the set a few times — also advised Mendes not to worry about costs if he had a " great idea " toward the end of a long working day . Mendes said , " That happened three or four times , and they are all in the movie . " Despite Spielberg 's support , DreamWorks and Mendes fought constantly over the schedule and budget , although the studio interfered little with the film 's content . Spacey , Bening and Hall worked for significantly less than their usual rates . American Beauty cost DreamWorks $ 15 million to produce , slightly above their projected sum . Mendes was so dissatisfied with his first three days ' filming that he obtained permission from DreamWorks to reshoot the scenes . He said , " I started with a wrong scene , actually , a comedy scene . And the actors played it way too big : [ ... ] it was badly shot , my fault , badly composed , my fault , bad costumes , my fault [ ... ] ; and everybody was doing what I was asking . It was all my fault . " Aware that he was a novice , Mendes drew on the experience of Hall : " I made a very conscious decision early on , if I didn 't understand something technically , to say , without embarrassment , ' I don 't understand what you 're talking about , please explain it . ' " + Mendes encouraged some improvisation ; for example , when Lester masturbates in bed beside Carolyn , the director asked Spacey to improvise several euphemisms for the act in each take . Mendes said , " I wanted that not just because it was funny [ ... ] but because I didn 't want it to seem rehearsed . I wanted it to seem like he was blurting it out of his mouth without thinking . [ Spacey ] is so in control — I wanted him to break through . " Spacey obliged , eventually coming up with 35 phrases , but Bening could not always keep a straight face , which meant the scene had to be shot 10 times . The production used small amounts of computer @-@ generated imagery . Most of the rose petals in Lester 's fantasies were added in post @-@ production , although some were real and had the wires holding them digitally removed . When Lester fantasizes about Angela in a rose @-@ petal bath , the steam was real , save for in the overhead shot . To position the camera , a hole had to be cut in the ceiling , through which the steam escaped ; it was instead added digitally . + + = = = Editing = = = + + American Beauty was edited by Christopher Greenbury and Tariq Anwar ; Greenbury began in the position , but had to leave halfway through post @-@ production because of a scheduling conflict with Me , Myself and Irene ( 2000 ) ( in which Chris Cooper also starred ) . Mendes and an assistant edited the film for 10 days between the appointments . Mendes realized during editing that the film was different from the one he had envisioned . He believed he had been making a " much more whimsical , [ ... ] kaleidoscopic " film than what came together in the edit suite . Instead , Mendes was drawn to the emotion and darkness ; he began to use the score and shots he had intended to discard to craft the film along these lines . In total , he cut about 30 minutes from his original edit . The opening included a dream in which Lester imagines himself flying above the town . Mendes spent two days filming Spacey against bluescreen , but removed the sequence as he believed it to be too whimsical — " like a Coen brothers movie " — and therefore inappropriate for the tone he was trying to set . The opening in the final cut reused a scene from the middle of the film where Jane tells Ricky to kill her father . This scene was to be the revelation to the audience that the pair was not responsible for Lester 's death , as the way it was scored and acted made it clear that Jane 's request was not serious . However , in the portion he used in the opening — and when the full scene plays out later — Mendes used the score and a reaction shot of Ricky to leave a lingering ambiguity as to his guilt . The subsequent shot — an aerial view of the neighborhood — was originally intended as the plate shot for the bluescreen effects in the dream sequence . + Mendes spent more time recutting the first 10 minutes than the rest of the film taken together . He trialled several versions of the opening ; the first edit included bookend scenes in which Jane and Ricky are convicted of Lester 's murder , but Mendes excised these in the last week of editing because he felt they made the film lose its mystery , and because they did not fit with the theme of redemption that had emerged during production . Mendes believed the trial drew focus away from the characters and turned the film " into an episode of NYPD Blue " . Instead , he wanted the ending to be " a poetic mixture of dream and memory and narrative resolution " . When Ball first saw a completed edit , it was a version with truncated versions of these scenes . He felt that they were so short that they " didn 't really register " . Mendes and he argued , but Ball was more accepting after Mendes cut the sequences completely ; Ball felt that without the scenes , the film was more optimistic and had evolved into something that " for all its darkness had a really romantic heart " . + + = = = Cinematography = = = + + Conrad Hall was not the first choice for director of photography ; Mendes believed he was " too old and too experienced " to want the job , and he had been told that Hall was difficult to work with . Instead , Mendes asked Fred Elmes , who turned the job down because he did not like the script . Hall was recommended to Mendes by Tom Cruise , because of Hall 's work on Without Limits ( 1998 ) , which Cruise had executive produced . Mendes was directing Cruise 's then @-@ wife Nicole Kidman in the play The Blue Room during preproduction on American Beauty , and had already storyboarded the whole film . Hall was involved for one month during preproduction ; his ideas for lighting the film began with his first reading of the script , and further passes allowed him to refine his approach before meeting Mendes . Hall was initially concerned that audiences would not like the characters ; he only felt able to identify with them during cast rehearsals , which gave him fresh ideas on his approach to the visuals . + Hall 's approach was to create peaceful compositions that evoked classicism , to contrast with the turbulent on @-@ screen events and allow audiences to take in the action . Hall and Mendes first discussed the intended mood of a scene , but he was allowed to light the shot in any way he felt necessary . In most cases , Hall first lit the scene 's subject by " painting in " the blacks and whites , before adding fill light , which he reflected from beadboard or white card on the ceiling . This approach gave Hall more control over the shadows while keeping the fill light unobtrusive and the dark areas free of spill . Hall shot American Beauty in a 2 @.@ 39 : 1 aspect ratio in the Super 35 format , using Kodak Vision 500T 5279 35 mm film stock . He used Super 35 partly because its larger scope allowed him to capture elements such as the corners of the petal @-@ filled pool in its overhead shot , creating a frame around Angela within . He shot the whole film at the same T @-@ stop ( T1.9 ) ; given his preference for shooting that wide , Hall favored high @-@ speed stocks to allow for more subtle lighting effects . He used Panavision Platinum cameras with the company 's Primo series of prime and zoom lenses . Hall employed Kodak Vision 200T 5274 and EXR 5248 stock for scenes with daylight effects . He had difficulty adjusting to Kodak 's newly introduced Vision release print stock , which , combined with his contrast @-@ heavy lighting style , created a look with too much contrast . Hall contacted Kodak , who sent him a batch of 5279 that was 5 % lower in contrast . Hall used a 1 / 8 inch Tiffen Black ProMist filter for almost every scene , which he said in retrospect may not have been the best choice , as the optical steps required to blow Super 35 up for its anamorphic release print led to a slight amount of degradation ; therefore , the diffusion from the filter was not required . When he saw the film in a theater , Hall felt that the image was slightly unclear and that had he not used the filter , the diffusion from the Super 35 – anamorphic conversion would have generated an image closer to what he originally intended . + A shot where Lester and Ricky share a cannabis joint behind a building came from a misunderstanding between Hall and Mendes . Mendes asked Hall to prepare the shot in his absence ; Hall assumed the characters would look for privacy , so he placed them in a narrow passage between a truck and the building , intending to light from the top of the truck . When Mendes returned , he explained that the characters did not care if they were seen . He removed the truck and Hall had to rethink the lighting ; he lit it from the left , with a large light crossing the actors , and with a soft light behind the camera . Hall felt the consequent wide shot " worked perfectly for the tone of the scene " . Hall made sure to keep rain , or the suggestion of it , in every shot near the end of the film . In one shot during Lester 's encounter with Angela at the Burnhams ' home , Hall created rain effects on the foreground cross lights ; in another , he partly lit the pair through French windows to which he had added material to make the rain run slower , intensifying the light ( although the strength of the outside light was unrealistic for a night scene , Hall felt it justified because of the strong contrasts it produced ) . For the close @-@ ups when Lester and Angela move to the couch , Hall tried to keep rain in the frame , lighting through the window onto the ceiling behind Lester . He also used rain boxes to produce rain patterns where he wanted without lighting the entire room . + + = = = Music = = = + + Thomas Newman 's score was recorded in Santa Monica , California . He mainly used percussion instruments to create the mood and rhythm , the inspiration for which was provided by Mendes . Newman " favored pulse , rhythm , and color over melody " , making for a more minimalist score than he had previously created . He built each cue around " small , endlessly repeating phrases " — often , the only variety through a " thinning of the texture for eight bars " . The percussion instruments included tablas , bongos , cymbals , piano , xylophones , and marimbas ; also featured were guitars , flute , and world music instruments . Newman also used electronic music and on " quirkier " tracks employed more unorthodox methods , such as tapping metal mixing bowls with a finger and using a detuned mandolin . Newman believed the score helped move the film along without disturbing the " moral ambiguity " of the script : " It was a real delicate balancing act in terms of what music worked to preserve [ that ] . " + The soundtrack features songs by Newman , Bobby Darin , The Who , Free , Eels , The Guess Who , Bill Withers , Betty Carter , Peggy Lee , The Folk Implosion , Gomez , and Bob Dylan , as well as two cover versions — The Beatles ' " Because " performed by Elliott Smith , and Neil Young 's " Don 't Let It Bring You Down " performed by Annie Lennox . Produced by the film 's music supervisor Chris Douridas , an abridged soundtrack album was released on October 5 , 1999 , and went on to be nominated for a Grammy Award for Best Soundtrack Album . An album featuring 19 tracks from Newman 's score was released on January 11 , 2000 , and won the Grammy Award for Best Score Soundtrack Album . Filmmaker considered the score to be one of Newman 's best , saying it " [ enabled ] the film 's transcendentalist aspirations " . In 2006 , the magazine chose the score as one of 20 essential soundtracks it believed spoke to the " complex and innovative relationships between music and screen storytelling " . + + = = Release = = + + + = = = Publicity = = = + + DreamWorks contracted Amazon.com to create the official website , marking the first time that Amazon had created a special section devoted to a feature film . The website included an overview , a photo gallery , cast and crew filmographies , and exclusive interviews with Spacey and Bening . The film 's tagline — " look closer " — originally came from a cutting pasted on Lester 's workplace cubicle by the set dresser . DreamWorks ran parallel marketing campaigns and trailers — one aimed at adults , the other at teenagers . Both trailers ended with the poster image of a girl holding a rose . Reviewing the posters of several 1999 films , David Hochman of Entertainment Weekly rated American Beauty 's highly , saying it evoked the tagline ; he said , " You return to the poster again and again , thinking , this time you 're gonna find something . " DreamWorks did not want to test screen the film ; according to Mendes , the studio was pleased with it , but he insisted on one where he could question the audience afterward . The studio reluctantly agreed and showed the film to a young audience in San Jose , California . Mendes claimed the screening went very well . + + = = = Theatrical run = = = + + The film had its world premiere on September 8 , 1999 , at Grauman 's Egyptian Theatre in Los Angeles . Three days later , the film appeared at the Toronto International Film Festival . With the filmmakers and cast in attendance , it screened at several American universities , including the University of California at Berkeley , New York University , the University of California at Los Angeles , the University of Texas at Austin , and Northwestern University . + On September 15 , 1999 , American Beauty opened to the public in limited release at three theaters in Los Angeles and three in New York . More theaters were added during the limited run , and on October 1 , the film officially entered wide release by screening in 706 theaters across North America . The film grossed $ 8 @,@ 188 @,@ 587 over the weekend , ranking third at the box office . Audiences polled by the market research firm CinemaScore gave American Beauty a " B + " grade on average . The theater count hit a high of 1 @,@ 528 at the end of the month , before a gradual decline . Following American Beauty 's wins at the 57th Golden Globe Awards , DreamWorks re @-@ expanded the theater presence from a low of 7 in mid @-@ February , to a high of 1 @,@ 990 in March . The film ended its North American theatrical run on June 4 , 2000 , having grossed $ 130 @.@ 1 million . + American Beauty had its European premiere at the London Film Festival on November 18 , 1999 ; in January 2000 , it began to screen in various territories outside North America . It debuted in Israel to " potent " returns , and limited releases in Germany , Italy , Austria , Switzerland , the Netherlands and Finland followed on January 21 . After January 28 opening weekends in Australia , the United Kingdom , Spain and Norway , American Beauty had earned $ 7 million in 12 countries for a total of $ 12 @.@ 1 million outside North America . On February 4 , American Beauty debuted in France and Belgium . Expanding to 303 theaters in the United Kingdom , the film ranked first at the box office with $ 1 @.@ 7 million . On the weekend of February 18 — following American Beauty 's eight nominations for the 72nd Academy Awards — the film grossed $ 11 @.@ 7 million from 21 territories , for a total of $ 65 @.@ 4 million outside North America . The film had " dazzling " debuts in Hungary , Denmark , the Czech Republic , Slovakia , and New Zealand . + As of February 18 , the most successful territories were the United Kingdom ( $ 15 @.@ 2 million ) , Italy ( $ 10 @.@ 8 million ) , Germany ( $ 10 @.@ 5 million ) , Australia ( $ 6 million ) , and France ( $ 5 @.@ 3 million ) . The Academy Award nominations meant strong performances continued across the board ; the following weekend , American Beauty grossed $ 10 @.@ 9 million in 27 countries , with strong debuts in Brazil , Mexico , and South Korea . Other high spots included robust returns in Argentina , Greece , and Turkey . On the weekend of March 3 , 2000 , American Beauty debuted strongly in Hong Kong , Taiwan , and Singapore , markets traditionally " not receptive to this kind of upscale fare " . The impressive South Korean performance continued , with a return of $ 1 @.@ 2 million after nine days . In total , American Beauty grossed $ 130 @.@ 1 million in North America and $ 226 @.@ 2 million internationally , for $ 356 @.@ 3 million worldwide . + + = = = Home media = = = + + American Beauty was released on VHS on May 9 , 2000 , and on DVD with the DTS format on October 24 , 2000 . Before the North American rental release on May 9 , Blockbuster Video wanted to purchase hundreds of thousands of extra copies for its " guaranteed title " range , whereby anyone who wanted to rent the film would be guaranteed a copy . Blockbuster and DreamWorks could not agree on a profit @-@ sharing deal , so Blockbuster ordered two @-@ thirds the number of copies it originally intended . DreamWorks made around one million copies available for rental ; Blockbuster 's share would usually have been about 400 @,@ 000 of these . Some Blockbuster stores only displayed 60 copies , and others did not display the film at all , forcing customers to ask for it . The strategy required staff to read a statement to customers explaining the situation ; Blockbuster claimed it was only " [ monitoring ] customer demand " due to the reduced availability . Blockbuster 's strategy leaked before May 9 , leading to a 30 % order increase from other retailers . In its first week of rental release , American Beauty made $ 6 @.@ 8 million . This return was lower than would have been expected had DreamWorks and Blockbuster reached an agreement . In the same year , The Sixth Sense made $ 22 million , while Fight Club made $ 8 @.@ 1 million , though the latter 's North American theatrical performance was just 29 % that of American Beauty . Blockbuster 's strategy also affected rental fees ; American Beauty averaged $ 3 @.@ 12 , compared with $ 3 @.@ 40 for films that Blockbuster fully promoted . Only 53 % of the film 's rentals were from large outlets in the first week , compared with the usual 65 % . + The DVD release included a behind @-@ the @-@ scenes featurette , film audio commentary from Mendes and Ball , and a storyboard presentation with discussion from Mendes and Hall . In the film commentary , Mendes refers to deleted scenes he intended to include in the release . However , these scenes are not on the DVD , as he changed his mind after recording the commentary ; Mendes felt that to show scenes he previously chose not to use would detract from the film 's integrity . + On September 21 , 2010 , Paramount Home Entertainment released American Beauty on Blu @-@ ray , as part of Paramount 's Sapphire Series . All the extras from the DVD release were present , with the theatrical trailers upgraded to HD . + + = = Critical reception = = + + American Beauty was widely considered the best film of 1999 by the American press . It received overwhelming praise , chiefly for Spacey , Mendes and Ball . Variety reported that " no other 1999 movie has benefited from such universal raves . " It was the best @-@ received title at the Toronto International Film Festival ( TIFF ) , where it won the People 's Choice award after a ballot of the festival 's audiences . TIFF 's director , Piers Handling , said , " American Beauty was the buzz of the festival , the film most talked @-@ about . " + Writing in Variety , Todd McCarthy said the cast ensemble " could not be better " ; he praised Spacey 's " handling of innuendo , subtle sarcasm , and blunt talk " and the way he imbued Lester with " genuine feeling " . Janet Maslin in The New York Times said Spacey was at his " wittiest and most agile " to date , and Roger Ebert of the Chicago Sun @-@ Times singled Spacey out for successfully portraying a man who " does reckless and foolish things [ but who ] doesn 't deceive himself " . Kevin Jackson of Sight & Sound said Spacey impressed in ways distinct from his previous performances , the most satisfying aspect being his portrayal of " both sap and hero " . Writing in Film Quarterly , Gary Hentzi praised the actors , but said that characters such as Carolyn and Col. Fitts were stereotypes . Hentzi accused Mendes and Ball of identifying too readily with Jane and Ricky , saying the latter was their " fantasy figure " — a teenaged boy who 's an absurdly wealthy artist able to " finance [ his ] own projects " . Hentzi said Angela was the most believable teenager , in particular with her " painfully familiar " attempts to " live up to an unworthy image of herself " . Maslin agreed that some characters were unoriginal , but said their detailed characterizations made them memorable . Kenneth Turan of the Los Angeles Times said the actors coped " faultlessly " with what were difficult roles ; he called Spacey 's performance " the energy that drives the film " , saying the actor commanded audience involvement despite Lester not always being sympathetic . " Against considerable odds , we do like [ these characters ] , " Turan concluded . + Maslin felt that Mendes directed with " terrific visual flair " , saying his minimalist style balanced " the mordant and bright " and that he evoked the " delicate , eroticized power @-@ playing vignettes " of his theater work . Jackson said Mendes ' theatrical roots rarely showed , and that the " most remarkable " aspect was that Spacey 's performance did not overshadow the film . He said that Mendes worked the script 's intricacies smoothly , to the ensemble 's strengths , and staged the tonal shifts skillfully . McCarthy believed American Beauty a " stunning card of introduction " for film débutantes Mendes and Ball . He said Mendes ' " sure hand " was " as precise and controlled " as his theater work . McCarthy cited Hall 's involvement as fortunate for Mendes , as the cinematographer was " unsurpassed " at conveying the themes of a work . Turan agreed that Mendes ' choice of collaborators was " shrewd " , naming Hall and Newman in particular . Turan suggested that American Beauty may have benefited from Mendes ' inexperience , as his " anything 's possible daring " made him attempt beats that more seasoned directors might have avoided . Turan felt that Mendes ' accomplishment was to " capture and enhance [ the ] duality " of Ball 's script — the simultaneously " caricatured [ ... ] and painfully real " characters . Hentzi , while critical of many of Mendes and Ball 's choices , admitted the film showed off their " considerable talents " . + Turan cited Ball 's lack of constraint when writing the film as the reason for its uniqueness , in particular the script 's subtle changes in tone . McCarthy said the script was " as fresh and distinctive " as any of its American film contemporaries , and praised how it analyzed the characters while not compromising narrative pace . He called Ball 's dialogue " tart " and said the characters — Carolyn excepted — were " deeply drawn " . One other flaw , McCarthy said , was the revelation of Col. Fitts ' homosexuality , which he said evoked " hoary Freudianism " . Jackson said the film transcended its clichéd setup to become a " wonderfully resourceful and sombre comedy " . He said that even when the film played for sitcom laughs , it did so with " unexpected nuance " . Hentzi criticized how the film made a mystery of Lester 's murder , believing it manipulative and simply a way of generating suspense . McCarthy cited the production and costume design as pluses , and said the soundtrack was good at creating " ironic counterpoint [ s ] " to the story . Hentzi concluded that American Beauty was " vital but uneven " ; he felt the film 's examination of " the ways which teenagers and adults imagine each other 's lives " was its best point , and that although Lester and Angela 's dynamic was familiar , its romantic irony stood beside " the most enduring literary treatments " of the theme , such as Lolita . Nevertheless , Hentzi believed that the film 's themes of materialism and conformity in American suburbia were " hackneyed " . McCarthy conceded that the setting was familiar , but said it merely provided the film with a " starting point " from which to tell its " subtle and acutely judged tale " . Maslin agreed ; she said that while it " takes aim at targets that are none too fresh " , and that the theme of nonconformity did not surprise , the film had its own " corrosive novelty " . Ebert awarded American Beauty four stars out of four , and Turan said it was layered , subversive , complex , and surprising , concluding it was " a hell of a picture " . + A few months after the film 's release , reports of a backlash appeared in the American press , and the years since have seen its critical regard wane . In 2005 , Premiere named American Beauty as one of 20 " most overrated movies of all time " ; Mendes accepted the inevitability of the critical reappraisal , saying , " I thought some of it was entirely justified — it was a little overpraised at the time . " + Currently , the film holds an 88 % score on Rotten Tomatoes based on 180 reviews , with an average rating of 8 @.@ 2 / 10 ; the critical consensus reads , " Flawlessly cast and brimming with dark , acid wit , American Beauty is a smart , provocative high point of late ' 90s mainstream Hollywood film . " Metacritic gives the film a score of 86 , based on 33 reviews , indicating " universal acclaim . " + + = = Accolades = = + + American Beauty was not considered an immediate favorite to dominate the American awards season . Several other contenders opened at the end of 1999 , and US critics spread their honors among them when compiling their end @-@ of @-@ year lists . The Chicago Film Critics Association and the Broadcast Film Critics Association named the film the best of 1999 , but while the New York Film Critics Circle , the National Society of Film Critics and the Los Angeles Film Critics Association recognized American Beauty , they gave their top awards to other films . By the end of the year , reports of a critical backlash suggested American Beauty was the underdog in the race for Best Picture ; however , at the Golden Globe Awards in January 2000 , American Beauty won Best Film , Best Director and Best Screenplay . + As the nominations for the 72nd Academy Awards approached , a frontrunner had not emerged . DreamWorks had launched a major campaign for American Beauty five weeks before ballots were due to be sent to the 5 @,@ 600 Academy Award voters . Its campaign combined traditional advertising and publicity with more focused strategies . Although direct mail campaigning was prohibited , DreamWorks reached voters by promoting the film in " casual , comfortable settings " in voters ' communities . The studio 's candidate for Best Picture the previous year , Saving Private Ryan , lost to Shakespeare in Love , so the studio took a new approach by hiring outsiders to provide input for the campaign . It hired three veteran consultants , who told the studio to " think small " . Nancy Willen encouraged DreamWorks to produce a special about the making of American Beauty , to set up displays of the film in the communities ' bookstores , and to arrange a question @-@ and @-@ answer session with Mendes for the British Academy of Film and Television Arts . Dale Olson advised the studio to advertise in free publications that circulated in Beverly Hills — home to many voters — in addition to major newspapers . Olson arranged to screen American Beauty to about 1 @,@ 000 members of the Actors Fund of America , as many participating actors were also voters . Bruce Feldman took Ball to the Santa Barbara International Film Festival , where Ball attended a private dinner in honor of Anthony Hopkins , meeting several voters who were in attendance . + In February 2000 , American Beauty was nominated for eight Academy Awards ; its closest rivals , The Cider House Rules and The Insider , received seven nominations each . In March 2000 , the major industry labor organizations all awarded their top honors to American Beauty ; perceptions had shifted — the film was now the favorite to dominate the Academy Awards . American Beauty 's closest rival for Best Picture was still The Cider House Rules , from Miramax . Both studios mounted aggressive campaigns ; DreamWorks bought 38 % more advertising space in Variety than Miramax . On March 26 , 2000 , American Beauty won five Academy Awards : Best Picture , Best Director , Best Actor ( Spacey ) , Best Original Screenplay and Best Cinematography . At the 53rd British Academy Film Awards , American Beauty won six of the 14 awards for which it was nominated : Best Film , Best Actor , Best Actress ( Bening ) , Best Cinematography , Best Film Music and Best Editing . In 2000 , the Publicists Guild of America recognized DreamWorks for the best film publicity campaign . In September 2008 , Empire named American Beauty the 96th " Greatest Movie of All Time " after a poll of 10 @,@ 000 readers , 150 filmmakers , and 50 film critics , the fourth @-@ highest ranked movie from 1999 ( behind Fight Club , The Matrix , and Magnolia ) . In 2013 , the Writers Guild of America ranked the screenplay number 38 on its list of 101 greatest screenplays . + The film was nominated for AFI 's 100 Years ... 100 Movies ( 10th Anniversary Edition ) in 2007 . + + + = Christopher Gore = + + Christopher Gore ( September 21 , 1758 – March 1 , 1827 ) was a prominent Massachusetts lawyer , Federalist politician , and U.S. diplomat . Born into a family divided by the American Revolution , Gore sided with the victorious Patriots , established a successful law practice in Boston , and built a fortune by purchasing Revolutionary government debts at a discount and receiving full value for them from the government . + Gore entered politics in 1788 , serving briefly in the Massachusetts legislature before being appointed U.S. District Attorney for Massachusetts . He was then appointed by President George Washington to a diplomatic commission dealing with maritime claims in Great Britain . He returned to Massachusetts in 1804 and reentered state politics , running unsuccessfully for governor several times before winning in 1809 . He served one term , losing to Democratic @-@ Republican Elbridge Gerry in 1810 . He was appointed to the US Senate by Governor Caleb Strong in 1813 , where he led opposition to the War of 1812 . + Gore invested his fortune in a variety of businesses , including important infrastructure projects such as the Middlesex Canal and a bridge across the Charles River . He was a major investor in the early textile industry , funding the Boston Manufacturing Company and the Merrimack Manufacturing Company , whose business established the city of Lowell , Massachusetts . Gore was involved in a variety of charitable causes , and was a major benefactor of Harvard College , where the first library was named in his honor . His palatial mansion in Waltham , Massachusetts , now known as Gore Place , is one of the finest extant examples of Federalist architecture , and has been declared a National Historic Landmark . + + = = Early years = = + + Christopher Gore was born in Boston on September 21 , 1758 , one of many children of Frances and John Gore , a successful merchant and artisan . He was the youngest of their three sons to survive to adulthood . He attended Boston Latin School , and entered Harvard College at the young ( even for the time ) age of thirteen . At the outset of the American Revolutionary War and the Siege of Boston in 1775 , Harvard 's buildings were occupied by the Continental Army , and Gore temporarily continued his studies in Bradford until Harvard could resume operations in Concord . While at Harvard Gore participated in a speaking club , and formed significant lifelong friendships with Rufus King and John Trumbull . + Gore graduated in 1776 , and promptly enlisted in the Continental artillery regiment of his brother @-@ in @-@ law Thomas Crafts , where he served as a clerk until 1778 . The Gore family was divided by the war : Gore 's father was a Loyalist who left Boston when the British Army evacuated the city in March 1776 . Gore was consequently called upon to support his mother and three sisters , who remained in Boston . In 1779 Gore successfully petitioned the state for the remaining family 's share of his father 's seized assets . + + = = Early legal career = = + + After his military service Gore studied law with John Lowell , and was admitted to the bar in 1778 after a comparatively brief tutelage . Gore 's law practice flourished , in part because many Loyalist lawyers had fled Massachusetts . Gore 's clients included Loyalists seeking to recover some of their assets , as well as London @-@ based British merchants with claims to pursue . His briefs were generally well @-@ reasoned , and he was seen as a successful trial lawyer . + Gore grew his fortune by investing carefully in revolutionary currency and bonds . The securities he purchased were paper that had been given to Continental Army soldiers in lieu of pay , which they often sold at a steep discount . One batch of securities he purchased , for instance , cost him about $ 3 @,@ 700 but had a face value of $ 25 @,@ 000 . In 1785 he married Rebecca Amory Payne , daughter of a wealthy merchant , maritime insurer , and director of the Bank of Massachusetts . The couple were known for their social graces and became prominent members of Boston society . + In 1786 Gore became concerned about a rise in anti @-@ lawyer sentiment in Massachusetts . Grievances over harsh policies pursued by Governor James Bowdoin blossomed into Shays ' Rebellion , which required militia action to crush in 1787 . Gore was one of several high @-@ profile lawyers assigned to defend participants in the rebellion ( included in this group were Theodore Sedgwick , Caleb Strong , James Sullivan , Levi Lincoln , Sr. , and Thomas Dawes ) . Although many rebels were ultimately convicted , a large number received amnesty . In 1788 , Gore was elected a delegate to the 1789 Massachusetts convention that ratified the United States Constitution . His election was contested because Boston , where he lived , was at the time more inclined toward state power . Gore nonetheless was strongly Federalist , urging support of the new Constitution . + + = = Legislator , banker , and speculator = = + + In 1788 Gore was elected to the Massachusetts House of Representatives . He took a leading role in adopting the state 's rules for actions required of it by the new federal constitution . By his proposal the legislature decided that presidential electors would be chosen by a joint session . He also proposed that the state House and Senate agree by separate votes on choices for the United States Senate , a process that would significantly reduce popular input to the choice . His choice was ultimately rejected in favor of a process whereby the House selected a slate of candidates , from which the Senate would choose one . In 1789 Gore decided to stand for reelection , but lost , owing to strong anti @-@ nationalist fervor in Boston at the time . He managed to win a seat later , when a special election was held after resignations opened several seats . + Gore 's financial speculations in the late 1780s significantly multiplied his wealth . In 1788 he and Andrew Craigie , a Boston businessman who had retained Gore for legal services , entered into a secret agreement to purchase Continental securities with a face value of $ 100 @,@ 000 in a speculative bid that their value would rise . By late October of that year , the pair had met this goal : Gore had purchased $ 90 @,@ 000 worth of paper for about $ 20 @,@ 000 , and encouraged Craigie to purchase more than the $ 11 @,@ 000 he had acquired if his funding would allow for it . Gore also purchased Massachusetts war @-@ related debts , and lobbied Massachusetts Congressmen for the U.S. government to assume those as well . + Gore 's windfall was realized when in 1790 the United States Congress , acting on a proposal made by Alexander Hamilton and supported by Gore 's friend Rufus King , passed legislation that exchanged Continental and state paper for new U.S. paper at face value . Not only did Gore win on this exchange , but the paper he received appreciated in value before he sold it . The exact amount he made is unclear from the surviving documents : John Quincy Adams wrote that Gore 's speculations made him the wealthiest lawyer in the country . + The success of Gore 's speculations prompted him to enter a partnership with Craigie , William Duer and Daniel Parker in an attempt to acquire U.S. foreign debt obligations on favorable terms . Parker was a business partner of Craigie 's , and Duer was an influential New York businessman and Treasury Department official whose lavish lifestyle impressed Gore . The partnership promoted sales of U.S. lands in Europe , and sought to acquire U.S. obligations to France . Although Gore sank $ 10 @,@ 000 into this venture , it failed : more powerful and experienced Dutch bankers outmaneuvered the Americans . Gore also engaged in other ventures with these partners , but apparently carefully stayed with financial speculations , and avoided the partners ' less successful land ventures . + Much of Gore 's financial activity was mediated through the Bank of Massachusetts , where his father @-@ in @-@ law was a director . Gore himself was elected to its board in 1785 , when he also became a shareholder . During his time on the board the bank tightened its regulations on loan repayments , a move that improved the stability of its capital . Gore used the bank for most of his personal deposits , but also drew on lines of credit for as much as several thousand dollars . The bank shares he held paid relatively high dividends until 1791 , when the bank received serious competition from the First Bank of the United States . + The Bank of the United States was established by Alexander Hamilton to provide stable banking services on a national scale , and sought to open a branch in Boston . Hamilton recruited heavily in the Bank of Massachusetts , and Gore decided to make the move . He sold his shares in the Massachusetts bank , and became a director of the Boston branch of the U.S. Bank . He also purchased 200 shares in the new bank , a relatively large investment . Gore was influential in making hiring decisions for the branch , and sought to merge state @-@ chartered banks into the organization , arguing that only a nationally chartered bank could provide consistent and stable service . Gore resigned from the board in 1794 , citing the demands of his law practice . + Gore 's financial successes enabled him to join the elite society of Boston . In 1789 he purchased a large mansion on fashionable Bowdoin Square , and also bought a country estate in Waltham that grew over time to 300 acres ( 120 ha ) . He had a house built on the estate , most of which he operated as a gentleman farmer . He and other similarly @-@ situated Federalists formed the Massachusetts Society for Promoting Agriculture , of which he served as a trustee for several years ; the organization was not seen as significantly contributing to advances in agriculture . + + = = District attorney and diplomat = = + + In 1789 President George Washington appointed Gore the first United States Attorney for Massachusetts as a reward for his support . Gore controversially refused to resign from the state legislature , arguing that the state constitution 's prohibitions against holding multiple offices did not apply to federal posts . He eventually resigned the legislative seat under protest because of pressure from his fellow legislators . + Gore served as district attorney until 1796 . His principal matter of concern was the enforcement of U.S. neutrality with respect to the French Revolutionary Wars . He attempted several times to prosecute the French consul in Boston , Antoine Duplaine , for arming and operating privateers out of the Port of Boston , but he was stymied by local juries that sympathized with the French . Duplaine was eventually expelled on orders from President George Washington based on evidence provided by Gore . + Gore also promoted anti @-@ French sentiment with political writings in Massachusetts newspapers . Writing under the pseudonym " Manlius " , he denounced the formation of " Democratic Societies " formed to oppose Federalist policy and support pro @-@ French positions . He suggested to President Washington that someone be sent to England to negotiate with the British . John Jay traveled to London in 1794 and negotiated the Jay Treaty , whose ratification Gore vocally supported . Although Gore was hostile to French policy , he was on friendly terms with individual Frenchmen : he hosted the future French statesman Talleyrand when he visited the U.S. + In 1796 Washington appointed him as a commissioner representing the United States to handle maritime claims under the terms the Jay Treaty . As a result the Gores moved to England that year , establishing a residence in the fashionable Hyde Park area . The commission was established to arbitrate claims emanating from British seizures of American vessels and cargoes , and from British claims relating to violations of American neutrality in the ongoing French Revolutionary Wars . It consisted of three Americans ( Gore , William Pinkney , and John Trumbull ) and two British commissioners ( John Nicoll and Nicholas Astley ) ; Trumbull was chosen by the other four because he was deemed to sufficiently " fair @-@ minded " to cast deciding votes in the event of disagreements . That year he was also elected a Fellow of the American Academy of Arts and Sciences . + Although Gore was well received by the British establishment , the work suffered from what Gore called a " tediousness of process " , and he considered requesting a transfer in 1798 . In 1800 it ground to a halt because another board established by the treaty to resolve outstanding Revolutionary War claims against the United States had not yet met , and the British stopped the claims processing until resolution of the other issues got underway . Gore used this break to briefly return to America and assess the condition of his Waltham estate , where the house had been largely destroyed by fire in 1799 . After his return to London , with the commission work still stopped , he and Rebecca embarked on a tour of Europe . They visited Holland , Belgium , and Switzerland , and spent six months in Paris . During this trip , and later ones in England and Scotland , they took note of the architecture of country estates , and began planning a new house for their Waltham property . + The commission resumed its work in early 1802 , and had resolved all outstanding claims by August 1803 . It awarded $ 110 @,@ 000 to British claimants and over $ 6 million to American claimants . The lopsided result is due to the vastly larger number of American claims , but also to some key early decisions that favored American interpretations in the processing of the claims , and by a British administration that sought to remain in America 's good graces . + The Gore 's social circle in England revolved around his good friend Rufus King , who was appointed Ambassador to Great Britain in 1796 , along with other Massachusetts expatriates . When King left his post in May 1803 he named Gore to head the London embassy as chargé d 'affaires . Although President Thomas Jefferson never issued a formal appointment , the British government accepted his role for the two @-@ month interval between King 's departure and the arrival of James Monroe as King 's replacement . The Gores sailed for Boston in the spring of 1804 . + Rebecca Gore used their exposure to European country estates to design a lavish new building for their Waltham estate during their English sojourn . Designed with the assistance of French architect Joseph @-@ Guillaume Legrand and probably also influenced by the works of English architect Sir John Soane , the house that was built upon their return to the United States in 1804 ( now known as Gore Place ) is one of the finest extant examples of Federalist architecture . + + = = Lawyer and state legislator = = + + Soon after his return to the United States , Gore reentered state politics , winning election to the Massachusetts Senate . He was active in the state Federalist Party organization , sitting on its secret central committee . He resumed his law practice , in which he took on as a student Daniel Webster . One of the highest profile cases he took on was the 1807 defense of Thomas Selfridge , accused of murdering Charles Austin . Selfridge , an older Federalist attorney , had been retained to assist in the collection of a debt from Austin 's Republican father . In the politically charged atmosphere of the day in Boston , Selfridge , fearing for his own safety , had armed himself with a dueling pistol . The younger Austin had , apparently on his own initiative , sought to beat Selfridge with a cane , and Selfridge fatally shot him in the encounter . Selfridge was prosecuted by Attorney General ( and future Gore gubernatorial opponent ) James Sullivan , and the defense also included arch @-@ Federalist Harrison Gray Otis . Gore argued Selfridge acted in self @-@ defense ; Selfridge was acquitted of murder by a jury whose foreman was Patriot and Federalist Paul Revere after fifteen minutes ' deliberation . + Gore also resumed business activities upon his return . He invested in a wide variety of businesses and infrastructure , spurring economic activity in the state . His investments ranged widely , including maritime insurance ( where is father @-@ in @-@ law had made his fortune ) , bridges , locks , canals , and textiles . He was a major investor in the Middlesex Canal , the Craigie Bridge ( the first to connect Boston to Cambridge ) , and the Boston Manufacturing Company , whose factory proving the single @-@ site production of textiles was in Waltham near his estate . Not all of his ventures panned out : the canal was in the long run a financial failure , as were efforts with other collaborators to develop Lechmere Point , the Cambridge side of the Craigie Bridge . The textile mill , however , was a success , and Gore invested in the Merrimack Manufacturing Company . When it decided to locate in what is now Lowell , Massachusetts , Gore purchased shares in the Proprietors of Locks and Canals , which operated ( and still owns today ) the Lowell canals . + In 1806 Gore won election to the State Senate . That year the Republicans were in the majority , and the election for governor was close enough to require a recount . The legislature scrutinized the ballots in a partisan manner ( for example , retaining ballots containing misspelled versions of Republican James Sullivan 's name and discarding similar ballots marked for Federalist Caleb Strong ) . Gore and other Federalists raised a public outcry , and the legislature relented , eventually certifying Strong as the winner . + Gore ran unsuccessfully for Governor of Massachusetts in 1807 and 1808 against a rising tide of Republicanism in the state , losing both times to moderate Republican James Sullivan . The Federalists gained control of the state legislature in 1808 in a backlash against Republican economic policies , but Gore was criticized for his failure to aggressively support state protests against the Embargo Act of 1807 , which had a major negative effect on the state 's large merchant fleet . Gore was in 1808 elected to the Massachusetts House of Representatives , where he successfully led Federalist efforts to ensure the selection of a Federalist slate of presidential electors . He also spearheaded actions to drive Senator John Quincy Adams from the Federalist Party over his support of Thomas Jefferson 's foreign policy . The legislature elected Adams ' successor nine months early , and gave Adams sufficiently distasteful instructions that he resigned the post and joined with the Republicans . + + = = Governor = = + + Gore led the Federalists to victory in 1809 against Sullivan 's successor , Levi Lincoln , Sr. , who had taken over as acting governor upon Sullivan 's death late in 1808 . During Gore 's term the principal domestic issue occupying state politics was a banking crisis stimulated by the federal policy of embargoing trade with Great Britain and France , then embroiled in the Napoleonic Wars . Although the crisis caused a number of bank failures in New England , Massachusetts banks largely escaped unscathed . + Foreign policy played a major role in Gore 's administration . The legislature passed resolves opposing the federal government 's hardline policy against trade and diplomatic relations with the United Kingdom ( then embroiled in the Napoleonic Wars ) , and Gore in early 1810 invited Francis James Jackson , who had been rejected as the UK 's ambassador to the US , to visit the state . This pressure may have played a role in President James Madison 's decision to renew relations with the UK and accept Jackson 's credentials . + The lessening of the war threat , and the choice by the Republicans of the popular Elbridge Gerry as their candidate brought a challenge to Federalist control of Massachusetts in the 1810 elections . The unostentatious Gerry and Republican partisans criticized Gore for his lavish lifestyle , including his palatial Waltham residence and pompous activities he organized as governor , and highlighted his Loyalist family connections while emphasizing Gerry 's unimpeachable patriotism . Gerry won the election . Jackson did visit Boston , but he was greeted not by Gore , but Gerry . Gore ran against Gerry again in 1811 , but lost in another acrimonious campaign . + Gore was granted an honorary law degree from Harvard in 1809 . He served on the college 's Board of Overseers from 1810 to 1815 and as a Fellow from 1816 to 1820 . Harvard 's first library building , a Gothic structure built in 1838 of Quincy granite , was named in his honor , but was demolished when Widener Library was built in its place in 1915 . ( This structure is found on the seal of the city of Cambridge . ) One of the residential Winthrop House 's buildings is called Gore Hall in his honor . + + = = United States Senator = = + + In the spring of 1813 , he was appointed by Governor Caleb Strong to fill the U.S. Senate seat vacated by the resignation of Senator James Lloyd . He served from May 5 , 1813 to May 30 , 1816 , winning reelection to the seat in 1814 . He opposed the ongoing War of 1812 in these years , with his earlier diplomatic experience providing valuable knowledge to Federalist interests . He expressed approval of the 1814 Hartford Convention in which the New England states aired grievances concerning Republican governance of the country and the conduct of the war . + Gore assented to the Treaty of Ghent that ended the war , but was unhappy that the nation had not gained anything from the war . He resigned in June 1816 , unhappy with the politics of Washington and suffering from poor health . Although he was no longer active in politics , he continued to express opinions on the subjects of the day , opposing the 1820 Missouri Compromise and bemoaning the " great moderation & mediocrity " of Federalist Governor John Brooks . + + = = Later years and legacy = = + + Gore remained active in the administration of Harvard , and was active in a number of organizations , including the American Academy of Arts and Sciences and the Massachusetts Historical Society ( whose president he was from 1806 to 1818 ) . He was also elected a member of the American Antiquarian Society in 1814 . Gore spent most of his later years at his country estate in Waltham , suffering from worsening rheumatoid arthritis that made walking increasingly difficult . His declining health and lack of social scene in Waltham led him in 1822 to return to Boston in the winters . He died on March 1 , 1827 in Boston and is buried in its Granary Burying Ground . + Gore 's wife died in 1834 ; the couple had no children . The major beneficiary of the Gore estate was Harvard ( which received an estimated $ 100 @,@ 000 ) , although bequests were also made to the American Academy of Arts and Sciences and the Massachusetts Historical Society . The Waltham estate passed through several hands and was subdivided over time . The mansion was saved from demolition by the Gore Place Society ( established for the purpose of preserving it ) , which now operates it as a museum . It was declared a National Historic Landmark in 1970 . + + + = Nero = + + Nero ( / ˈnɪəroʊ / ; Latin : Nerō Claudius Caesar Augustus Germanicus ; 15 December 37 AD – 9 June 68 AD ) was Roman Emperor from 54 to 68 , and the last in the Julio @-@ Claudian dynasty . Nero was adopted by his grand @-@ uncle Claudius to become his heir and successor , and succeeded to the throne in 54 following Claudius ' death . + Nero focused much of his attention on diplomacy , trade and enhancing the cultural life of the empire , but according to the historian Tacitus he was viewed by the Roman people as compulsive and corrupt . He ordered theatres built and promoted athletic games . During his reign , the redoubtable general Corbulo conducted a successful war and negotiated peace with the Parthian Empire . His general Suetonius Paulinus crushed a revolt in Britain . Nero annexed the Bosporan Kingdom to the empire and began the First Jewish – Roman War . + In 64 AD , most of Rome was destroyed in the Great Fire of Rome , which many Romans believed Nero himself had started in order to clear land for his planned palatial complex , the Domus Aurea . In 68 , the rebellion of Vindex in Gaul and later the acclamation of Galba in Hispania drove Nero from the throne . Facing a false report of being denounced as a public enemy who was to be executed , he committed suicide on 9 June 68 ( the first Roman emperor to do so ) . His death ended the Julio @-@ Claudian dynasty , sparking a brief period of civil wars known as the Year of the Four Emperors . Nero 's rule is often associated with tyranny and extravagance . He is known for many executions , including that of his mother , and the probable murder by poison of his stepbrother Britannicus . + Nero was rumored to have had captured Christians dipped in oil and set on fire in his garden at night as a source of light . This view is based on the writings of Tacitus , Suetonius and Cassius Dio , the main surviving sources for Nero 's reign , but a few surviving sources paint Nero in a more favourable light . Some sources , including some mentioned above , portray him as an emperor who was popular with the common Roman people , especially in the East . Some modern historians question the reliability of ancient sources when reporting on Nero 's tyrannical acts . + + = = Early life = = + + + = = = Family = = = + + Lucius Domitius Ahenobarbus , Nero , was born on 15 December 37 in Antium ( modern Anzio and Nettuno ) , near Rome . He was the only son of Gnaeus Domitius Ahenobarbus and Agrippina the Younger , sister of Emperor Caligula . + Nero 's father , Gnaeus , was the son of Lucius Domitius Ahenobarbus ( consul 16 BC ) and Antonia Major . Gnaeus was thus the grandson of Gnaeus Domitius Ahenobarbus ( consul 32 BC ) and probably Aemilia Lepida on his father 's side , and the grandson of Mark Antony and Octavia Minor on his mother 's side . Thus , Nero had as his paternal grandmother Antonia Major , and also claimed more remote descent from Antonia Minor as a great @-@ grandson — later grandson after Claudius adopted him . + Through Octavia , Nero was the great @-@ nephew of Caesar Augustus . Nero 's father had been employed as a praetor and was a member of Caligula 's staff when the latter travelled to the East ( some apparently think Suetonius refers to Augustus 's adopted son Gaius Caesar here , but this is not likely ) . + Nero 's father was described by Suetonius as a murderer and a cheat who was charged by Emperor Tiberius with treason , adultery and incest . Tiberius died , allowing him to escape these charges . Nero 's father died of edema ( " dropsy " ) in 39 when Nero was two . + Nero 's mother was Agrippina the Younger , a great @-@ granddaughter of Caesar Augustus and his wife Scribonia through their daughter Julia the Elder and her husband Marcus Vipsanius Agrippa . Agrippina 's father , Germanicus , was a grandson of Augustus 's wife , Livia , on one side and to Mark Antony and Octavia on the other . Germanicus ' mother Antonia Minor , was a daughter of Octavia Minor and Mark Antony . Octavia was Augustus ' elder sister . Germanicus was also the adopted son of Tiberius . Agrippina poisoned her second husband Passienus Crispus , so many ancient historians also accuse her of murdering her third husband , the emperor Claudius . + + = = = Ancestry and family = = = + + + = = = Rise to power = = = + + Nero was not expected to become Emperor because his maternal uncle , Caligula , had begun his reign at the age of 24 with enough time to produce his own heir . Nero 's mother , Agrippina , lost favour with Caligula and was exiled in 39 after her husband 's death . Caligula seized Nero 's inheritance and sent him to be brought up by his less wealthy aunt , Domitia Lepida , who was the mother of Valeria Messalina , Claudius 's third wife . Caligula , his wife Caesonia and their infant daughter Julia Drusilla were murdered on 24 January 41 . These events led Claudius , Caligula 's uncle , to become emperor . Claudius allowed Agrippina to return from exile . + Claudius had married twice before marrying Valeria Messalina . His previous marriages produced three children including a son , Drusus , who died at a young age . He had two children with Messalina – Claudia Octavia ( born 40 ) and Britannicus ( born 41 ) . Messalina was executed by Claudius in the year 48 . + In 49 AD , Claudius married a fourth time , to Nero 's mother Agrippina , despite her being his niece . To aid Claudius politically , young Nero was adopted in 50 and took the name Nero Claudius Caesar Drusus Germanicus ( see adoption in Rome ) . Nero was older than his stepbrother Britannicus , and thus became heir to the throne . + Nero was proclaimed an adult in 51 at the age of 14 . He was appointed proconsul , entered and first addressed the Senate , made joint public appearances with Claudius , and was featured in coinage . In 53 , he married his stepsister Claudia Octavia . + + = = Emperor ( 54 – 68 AD ) = = + + + = = = Early rule = = = + + Claudius died in 54 and Nero , taking the name Nero Claudius Caesar Augustus Germanicus , was established as Emperor . Though accounts vary , many ancient historians state Agrippina poisoned Claudius . According to Pliny the Elder , she used poison mushrooms . It is not known how much Nero knew or if he was even involved in the death of Claudius . + Suetonius wrote " ... for even if he was not the instigator of the emperor 's death , he was at least privy to it , as he openly admitted ; for he used afterwards to laud mushrooms , the vehicle in which the poison was administered to Claudius , as " the food of the gods , " as the Greek proverb has it . At any rate , after Claudius ' death he vented on him every kind of insult , in act and word , charging him now with folly and now with cruelty ; for it was a favourite joke of his to say that Claudius had ceased " to play the fool " among mortals , lengthening the first syllable of the word morari , and he disregarded many of his decrees and acts as the work of a madman and a dotard . Finally , he neglected to enclose the place where his body was burned except with a low and mean wall . " + According to Suetonius ; Nero became Emperor at the age of 17 when the news of Claudius ' death was made known , making him the youngest emperor at that time Although , what Suetonius may have meant is that he was in his seventeenth year as his date of birth , also listed by Suetonius , would have made him 16 at the time of Claudius ' death . Tacitus , in book XIII of his Annals , describes Nero as being ' scarcely out of his boyhood ' at the time he became emperor . Ancient historians describe Nero 's early reign as being strongly influenced by his mother , Agrippina , his tutor Lucius Annaeus Seneca , and the Praetorian Prefect Sextus Afranius Burrus , especially in the first year . Other tutors were less often mentioned , such as Alexander of Aegae . + Very early in Nero 's rule , problems arose from competition for influence between Agrippina and Nero 's two main advisers , Seneca and Burrus . Agrippina also attempted to influence the young Nero . Agrippina also is mentioned by ancient sources as " scheming for her son ( Nero ) " . This scheming continued as is evidenced by the coin of the both of them . It is extremely unusual to see a women 's face on a coin in the ancient world . It is because of this position of power Agrippina felt jealous as Seneca in particular rose up in Nero 's court as he offered the advice Nero wanted to hear unlike his mother . + In 54 , Agrippina tried to sit down next to Nero while he met with an Armenian envoy , but Seneca stopped her and prevented a scandalous scene ( as it was unimaginable at that time for a woman to be in the same room as men doing official business ) . Nero 's friends also mistrusted Agrippina and told Nero to beware of his mother . + Nero was reportedly unsatisfied with his marriage to Octavia and entered into an affair with Claudia Acte , a former slave . In 55 , Agrippina attempted to intervene in favor of Octavia and demanded that her son dismiss Acte . Nero , with the support of Seneca , resisted the intervention of his mother in his personal affairs . + With Agrippina 's influence over her son severed , she reportedly began pushing for Britannicus , Nero 's stepbrother , to become emperor . Nearly fourteen @-@ year @-@ old Britannicus , heir @-@ designate prior to Nero 's adoption , was still legally a minor , but was approaching legal adulthood . According to Tacitus , Agrippina hoped that with her support , Britannicus , being the blood son of Claudius , would be seen as the true heir to the throne by the state over Nero . However , the youth died suddenly and suspiciously on 12 February 55 , the very day before his proclamation as an adult had been set . + Nero claimed that Britannicus died from an epileptic seizure , but ancient historians all claim Britannicus ' death came from Nero 's poisoning him . Supposedly , he enlisted the services of Locusta , a woman who specialized in the manufacture of poisons . She devised a mixture to kill Britannicus , but after testing it unsuccessfully on a slave , Nero angrily threatened to have her put to death if she did not come up with something usable . Locusta then devised a new concoction that she promised would " kill swifter than a viper . " + Her promise was fulfilled after Britannicus consumed it at a dinner party from water used to cool his wine , which had already been tasted , and succumbed within minutes . After the death of Britannicus , Agrippina was accused of slandering Octavia and Nero ordered her out of the imperial residence . + + = = = Matricide and consolidation of power = = = + + Over time , Nero became progressively more powerful , freeing himself of his advisers and eliminating rivals to the throne . In 55 , he removed Marcus Antonius Pallas , an ally of Agrippina , from his position in the treasury . Pallas , along with Burrus , was accused of conspiring against the Emperor to bring Faustus Sulla to the throne . Seneca was accused of having relations with Agrippina and embezzlement . Seneca succeeded in having himself , Pallas and Burrus acquitted . According to Cassius Dio , at this time , Seneca and Burrus reduced their role in governing from careful management to mere moderation of Nero . + In 58 , Nero became romantically involved with Poppaea Sabina , the wife of his friend and future emperor Otho . Reportedly because a marriage to Poppaea and a divorce from Octavia did not seem politically feasible with Agrippina alive , Nero ordered the murder of his mother in 59 . A number of modern historians find this an unlikely motive as Nero did not marry Poppaea until 62 . + Additionally , according to Suetonius , Poppaea did not divorce her husband until after Agrippina 's death , making it unlikely that the already married Poppaea would be pressing Nero for marriage . Some modern historians theorize that Nero 's execution of Agrippina was prompted by her plotting to set Rubellius Plautus on the throne . According to Suetonius , Nero tried to kill his mother through a shipwreck planned by his freedman tutor Anicetus . Instead , it took the life of Agrippina 's friend , Acerronia Polla . When Agrippina survived , he had her executed by Anicetus and framed it as a suicide . The incident is also recorded by Tacitus . + In 62 , Nero 's adviser , Burrus , died . Additionally , Seneca was again faced with embezzlement charges . Seneca asked Nero for permission to retire from public affairs . Nero divorced and banished Octavia on grounds of infertility , leaving him free to marry the pregnant Poppaea . After public protests , Nero was forced to allow Octavia to return from exile , but she was executed shortly after her return . + Nero also was reported to have kicked Poppaea to death in 65 before she could have his second child . However , modern historians , noting Suetonius , Tacitus and Cassius Dio 's possible bias against Nero and the likelihood that they did not have eyewitness accounts of private events , postulate that Poppaea may have died because of complications of miscarriage or childbirth . + Accusations of treason being plotted against Nero and the Senate first appeared in 62 . The Senate ruled that Antistius , a praetor , should be put to death for speaking ill of Nero at a party . Later , Nero ordered the exile of Fabricius Veiento who slandered the Senate in a book . Tacitus writes that the roots of the conspiracy led by Gaius Calpurnius Piso began in this year . To consolidate power , Nero executed a number of people in 62 and 63 including his rivals Pallas , Rubellius Plautus and Faustus Sulla . According to Suetonius , Nero " showed neither discrimination nor moderation in putting to death whomsoever he pleased " during this period . + Nero 's consolidation of power also included a slow usurping of authority from the Senate . In 54 , Nero promised to give the Senate powers equivalent to those under Republican rule . By 65 , senators complained that they had no power left and this led to the Pisonian conspiracy . + + = = = Other relationships = = = + + When Nero 's wife Poppaea Sabina died in 65 , Nero went into deep mourning . Her body was not cremated , it was stuffed with spices , embalmed and put in the Mausoleum of Augustus . She was given a state funeral . Nero praised her during the funeral eulogy and gave her divine honors . It is said that Nero " burned ten years ' worth of Arabia 's incense production at her funeral . + In the beginning of 66 , he married Statilia Messalina . She was already married when she became Nero 's mistress in 65 AD , with Statilia 's husband being driven to suicide in 66 , so Nero could marry Statilia . She was one of the few of Nero 's courtiers who survived the fall of his reign . + In 67 , Nero ordered a young freedman , Sporus , to be castrated and then married him . According to Dion Cassius , Sporus bore an uncanny resemblance to Sabina , and Nero even called him by his dead wife 's name . + + = = = Administrative policies = = = + + Over the course of his reign , Nero often made rulings that pleased the lower class . Nero was criticized as being obsessed with personal popularity . + Nero began his reign in 54 by promising the Senate more autonomy . In this first year , he forbade others to refer to him with regard to enactments , for which he was praised by the Senate . Nero was known for spending his time visiting brothels and taverns during this period . + In 55 , Nero began taking on a more active role as an administrator . He was consul four times between 55 and 60 . During this period , some ancient historians speak fairly well of Nero and contrast it with his later rule . + Under Nero , restrictions were put on the amount of bail and fines . Also , fees for lawyers were limited . There was a discussion in the Senate on the misconduct of the freedmen class , and a strong demand was made that patrons should have the right of revoking freedom . Nero supported the freedmen and ruled that patrons had no such right . + The Senate tried to pass a law in which the crimes of one slave applied to all slaves within a household . Despite riots from the people , Nero supported the Senate on their measure , and deployed troops to organise the execution of 400 slaves affected by the law . However , he vetoed strong measures against the freedmen affected by the case . + After tax collectors were accused of being too harsh to the poor , Nero transferred collection authority to lower commissioners . Nero banned any magistrate or procurator from exhibiting public entertainment for fear that the venue was being used as a method to sway the populace . Additionally , there were many impeachments and removals of government officials along with arrests for extortion and corruption . + When further complaints arose that the poor were being overly taxed , Nero attempted to repeal all indirect taxes . The Senate convinced him this action would bankrupt the public treasury . As a compromise , taxes were cut from 4 @.@ 5 % to 2 @.@ 5 % . Additionally , secret government tax records were ordered to become public . To lower the cost of food imports , merchant ships were declared tax @-@ exempt . + In imitation of the Greeks , Nero built a number of gymnasiums and theatres . Enormous gladiatorial shows were also held . Nero also established the quinquennial Neronia . The festival included games , poetry , and theater . Historians indicate that there was a belief that theatre led to immorality . Others considered that to have performers dressed in Greek clothing was old fashioned . Some questioned the large public expenditure on entertainment . + In 64 , Rome burned . Nero enacted a public relief effort as well as significant reconstruction . A number of other major construction projects occurred in Nero 's late reign . Nero had the marshes of Ostia filled with rubble from the fire . He erected the large Domus Aurea . In 67 , Nero attempted to have a canal dug at the Isthmus of Corinth . Ancient historians state that these projects and others exacerbated the drain on the State 's budget . + The cost to rebuild Rome was immense , requiring funds the state treasury did not have . Nero devalued the Roman currency for the first time in the Empire 's history . He reduced the weight of the denarius from 84 per Roman pound to 96 ( 3 @.@ 85 grams to 3 @.@ 35 grams ) . He also reduced the silver purity from 99 @.@ 5 % to 93 @.@ 5 % — the silver weight dropping from 3 @.@ 83 grams to 3 @.@ 4 grams . Furthermore , Nero reduced the weight of the aureus from 40 per Roman pound to 45 ( 8 grams to 7 @.@ 2 grams ) . + Between 62 and 67 , according to Plinius the Elder and Seneca , Nero promoted an expedition to discover the sources of the Nile River . It was the first exploration of equatorial Africa from Europe in history . However , Nero 's expedition up the Nile failed upon reaching the impenetrable Sudd of present @-@ day South Sudan . + The economic policy of Nero is a point of debate among scholars . According to ancient historians , Nero 's construction projects were overly extravagant and the large number of expenditures under Nero left Italy " thoroughly exhausted by contributions of money " with " the provinces ruined . " Modern historians , though , note that the period was riddled with deflation and that it is likely that Nero 's spending came in the form of public works projects and charity intended to ease economic troubles . + + = = = Great Fire of Rome ( 64 AD ) = = = + + The Great Fire of Rome erupted on the night of 18 July to 19 July 64 . The fire started at the southeastern end of the Circus Maximus in shops selling flammable goods . + The extent of the fire is uncertain . According to Tacitus , who was nine at the time of the fire , it spread quickly and burned for over five days . It destroyed three of fourteen Roman districts and severely damaged seven . The only other historian who lived through the period and mentioned the fire is Pliny the Elder , who wrote about it in passing . Other historians who lived through the period ( including Josephus , Dio Chrysostom , Plutarch and Epictetus ) make no mention of it in what remains of their work . + It is uncertain who or what actually caused the fire — whether accident or arson . Suetonius and Cassius Dio favor Nero as the arsonist , so he could build a palatial complex . Tacitus mentions that Christians confessed to the crime , but it is not known whether these confessions were induced by torture . However , accidental fires were common in ancient Rome . In fact , Rome suffered other large fires in 69 and in 80 . + It was said by Suetonius and Cassius Dio that Nero sang the " Sack of Ilium " in stage costume while the city burned . Popular legend claims that Nero played the fiddle at the time of the fire , an anachronism based merely on the concept of the lyre , a stringed instrument associated with Nero and his performances . ( The fiddle was not invented until the 10th century . ) Tacitus 's account , however , has Nero in Antium at the time of the fire . Tacitus also said that Nero playing his lyre and singing while the city burned was only rumor . + According to Tacitus , upon hearing news of the fire , Nero returned to Rome to organize a relief effort , which he paid for from his own funds . Nero 's contributions to the relief extended to personally taking part in the search for and rescue of victims of the blaze , spending days searching the debris without even his bodyguards . After the fire , Nero opened his palaces to provide shelter for the homeless , and arranged for food supplies to be delivered in order to prevent starvation among the survivors . + In the wake of the fire , he made a new urban development plan . Houses after the fire were spaced out , built in brick , and faced by porticos on wide roads . Nero also built a new palace complex known as the Domus Aurea in an area cleared by the fire . This included lush artificial landscapes and a 30 @-@ meter @-@ tall statue of himself , the Colossus of Nero . The size of this complex is debated ( from 100 to 300 acres ) . To find the necessary funds for the reconstruction , tributes were imposed on the provinces of the empire . + Tacitus , in one of the earliest non @-@ Christian references to the origins of Christianity , notes that the population searched for a scapegoat and rumors held Nero responsible . To deflect blame , Nero targeted Christians . He ordered Christians to be thrown to dogs , while others were crucified and burned . + + = = = Public performances = = = + + Nero enjoyed driving a one @-@ horse chariot , singing to the lyre and poetry . He even composed songs that were performed by other entertainers throughout the empire . At first , Nero only performed for a private audience . + In 64 AD . , Nero began singing in public in Neapolis in order to improve his popularity . He also sang at the second quinquennial Neronia in 65 . It was said that Nero craved the attention , but historians also write that Nero was encouraged to sing and perform in public by the Senate , his inner circle and the people . Ancient historians strongly criticize his choice to perform , calling it shameful . + Nero was persuaded to participate in the Olympic Games of 67 in order to improve relations with Greece and display Roman dominance . As a competitor , Nero raced a ten @-@ horse chariot and nearly died after being thrown from it . He also performed as an actor and a singer . Though Nero faltered in his racing ( in one case , dropping out entirely before the end ) and acting competitions , he won these crowns nevertheless and paraded them when he returned to Rome . The victories are attributed to Nero bribing the judges and his status as emperor . + + = = = War and peace with Parthia = = = + + Shortly after Nero 's accession to the throne in 54 , the Roman vassal kingdom of Armenia overthrew their Iberian prince Rhadamistus and he was replaced with the Parthian prince Tiridates . This was seen as a Parthian invasion of Roman territory . There was concern in Rome over how the young Emperor would handle the situation . Nero reacted by immediately sending the military to the region under the command of Gnaeus Domitius Corbulo . The Parthians temporarily relinquished control of Armenia to Rome . + The peace did not last and full @-@ scale war broke out in 58 . The Parthian king Vologases I refused to remove his brother Tiridates from Armenia . The Parthians began a full @-@ scale invasion of the Armenian kingdom . Commander Corbulo responded and repelled most of the Parthian army that same year . Tiridates retreated and Rome again controlled most of Armenia . + Nero was acclaimed in public for this initial victory . Tigranes , a Cappadocian noble raised in Rome , was installed by Nero as the new ruler of Armenia . Corbulo was appointed governor of Syria as a reward . + In 62 , Tigranes invaded the Parthian province of Adiabene . Again , Rome and Parthia were at war and this continued until 63 . Parthia began building up for a strike against the Roman province of Syria . Corbulo tried to convince Nero to continue the war , but Nero opted for a peace deal instead . There was anxiety in Rome about eastern grain supplies and a budget deficit . + The result was a deal where Tiridates again became the Armenian king , but was crowned in Rome by Emperor Nero . In the future , the king of Armenia was to be a Parthian prince , but his appointment required approval from the Romans . Tiridates was forced to come to Rome and partake in ceremonies meant to display Roman dominance . + This peace deal of 63 was a considerable victory for Nero politically . Nero became very popular in the eastern provinces of Rome and with the Parthians as well . The peace between Parthia and Rome lasted 50 years until Emperor Trajan of Rome invaded Armenia in 114 . + + = = = Other major power struggles and rebellions = = = + + The war with Parthia was not Nero 's only major war but he was both criticized and praised for an aversion to battle . Like many emperors , Nero faced a number of rebellions and power struggles within the empire . + British Revolt of 60 – 61 ( Boudica 's Uprising ) + In 60 , a major rebellion broke out in the province of Britannia . While the governor Gaius Suetonius Paulinus and his troops were busy capturing the island of Mona ( Anglesey ) from the druids , the tribes of the southeast staged a revolt led by queen Boudica of the Iceni . Boudica and her troops destroyed three cities before the army of Paulinus could return , receive reinforcements , and quell the rebellion in 61 . Fearing Paulinus himself would provoke further rebellion , Nero replaced him with the more passive Publius Petronius Turpilianus . + The Pisonian Conspiracy of 65 + In 65 , Gaius Calpurnius Piso , a Roman statesman , organized a conspiracy against Nero with the help of Subrius Flavus and Sulpicius Asper , a tribune and a centurion of the Praetorian Guard . According to Tacitus , many conspirators wished to " rescue the state " from the emperor and restore the Republic . The freedman Milichus discovered the conspiracy and reported it to Nero 's secretary , Epaphroditos . As a result , the conspiracy failed and its members were executed including Lucan , the poet . Nero 's previous advisor , Seneca was ordered to commit suicide after admitting he discussed the plot with the conspirators . + The First Jewish War of 66 – 70 + In 66 , there was a Jewish revolt in Judea stemming from Greek and Jewish religious tension . In 67 , Nero dispatched Vespasian to restore order . This revolt was eventually put down in 70 , after Nero 's death . This revolt is famous for Romans breaching the walls of Jerusalem and destroying the Second Temple of Jerusalem . + + = = = The revolt of Vindex and Galba and the death of Nero = = = + + In March 68 , Gaius Julius Vindex , the governor of Gallia Lugdunensis , rebelled against Nero 's tax policies . Lucius Verginius Rufus , the governor of Germania Superior , was ordered to put down Vindex 's rebellion . In an attempt to gain support from outside his own province , Vindex called upon Servius Sulpicius Galba , the governor of Hispania Tarraconensis , to join the rebellion and further , to declare himself emperor in opposition to Nero . + At the Battle of Vesontio in May 68 , Verginius ' forces easily defeated those of Vindex and the latter committed suicide . However , after putting down this one rebel , Verginius ' legions attempted to proclaim their own commander as Emperor . Verginius refused to act against Nero , but the discontent of the legions of Germany and the continued opposition of Galba in Spain did not bode well for him . + While Nero had retained some control of the situation , support for Galba increased despite his being officially declared a public enemy . The prefect of the Praetorian Guard , Gaius Nymphidius Sabinus , also abandoned his allegiance to the Emperor and came out in support for Galba . + In response , Nero fled Rome with the intention of going to the port of Ostia and , from there , to take a fleet to one of the still @-@ loyal eastern provinces . According to Suetonius , Nero abandoned the idea when some army officers openly refused to obey his commands , responding with a line from Vergil 's Aeneid : " Is it so dreadful a thing then to die ? " Nero then toyed with the idea of fleeing to Parthia , throwing himself upon the mercy of Galba , or to appeal to the people and beg them to pardon him for his past offences " and if he could not soften their hearts , to entreat them at least to allow him the prefecture of Egypt " . Suetonius reports that the text of this speech was later found in Nero 's writing desk , but that he dared not give it from fear of being torn to pieces before he could reach the Forum . + Nero returned to Rome and spent the evening in the palace . After sleeping , he awoke at about midnight to find the palace guard had left . Dispatching messages to his friends ' palace chambers for them to come , he received no answers . Upon going to their chambers personally , he found them all abandoned . When he called for a gladiator or anyone else adept with a sword to kill him , no one appeared . He cried , " Have I neither friend nor foe ? " and ran out as if to throw himself into the Tiber . + Returning , Nero sought for some place where he could hide and collect his thoughts . An imperial freedman , Phaon , offered his villa , located 4 miles outside the city . Travelling in disguise , Nero and four loyal freedmen , Epaphroditos , Phaon , Neophytus , and Sporus , reached the villa , where Nero ordered them to dig a grave for him . + At this time , a courier arrived with a report that the Senate had declared Nero a public enemy and that it was their intention to execute him by beating him to death and that armed men had been sent to apprehend him for the act to take place in the Forum . The Senate actually was still reluctant and deliberating on the right course of action as Nero was the last member of the Julio @-@ Claudian Family . Indeed , most of the senators had served the imperial family all their lives and felt a sense of loyalty to the deified bloodline , if not to Nero himself . The men actually had the goal of returning Nero back to the Senate , where the Senate hoped to work out a compromise with the rebelling governors that would preserve Nero 's life , so that at least a future heir to the dynasty could be produced . + Nero , however , did not know this , and at the news brought by the courier , he prepared himself for suicide , pacing up and down muttering " Qualis artifex pereo " which translates to English as " What an artist dies in me . " Losing his nerve , he first begged for one of his companions to set an example by first killing himself . At last , the sound of approaching horsemen drove Nero to face the end . However , he still could not bring himself to take his own life but instead he forced his private secretary , Epaphroditos , to perform the task . + When one of the horsemen entered , upon his seeing Nero all but dead he attempted to stop the bleeding in vain . Nero 's final words were " Too late ! This is fidelity ! " He died on 9 June 68 , the anniversary of the death of Octavia , and was buried in the Mausoleum of the Domitii Ahenobarbi , in what is now the Villa Borghese ( Pincian Hill ) area of Rome . + With his death , the Julio @-@ Claudian dynasty ended . The Senate , when news of his death reached Rome , posthumously declared Nero a public enemy to appease the coming Galba ( as the Senate had initially declared Galba as a public enemy ) and proclaimed Galba the new emperor . Chaos would ensue in the year of the Four Emperors . + + = = = Post mortem = = = + + According to Suetonius and Cassius Dio , the people of Rome celebrated the death of Nero . Tacitus , though , describes a more complicated political environment . Tacitus mentions that Nero 's death was welcomed by Senators , nobility and the upper class . The lower @-@ class , slaves , frequenters of the arena and the theater , and " those who were supported by the famous excesses of Nero " , on the other hand , were upset with the news . Members of the military were said to have mixed feelings , as they had allegiance to Nero , but were bribed to overthrow him . + Eastern sources , namely Philostratus II and Apollonius of Tyana , mention that Nero 's death was mourned as he " restored the liberties of Hellas with a wisdom and moderation quite alien to his character " and that he " held our liberties in his hand and respected them . " + Modern scholarship generally holds that , while the Senate and more well @-@ off individuals welcomed Nero 's death , the general populace was " loyal to the end and beyond , for Otho and Vitellius both thought it worthwhile to appeal to their nostalgia . " + Nero 's name was erased from some monuments , in what Edward Champlin regards as an " outburst of private zeal " . Many portraits of Nero were reworked to represent other figures ; according to Eric R. Varner , over fifty such images survive . This reworking of images is often explained as part of the way in which the memory of disgraced emperors was condemned posthumously ( see damnatio memoriae ) . Champlin , however , doubts that the practice is necessarily negative and notes that some continued to create images of Nero long after his death . + The civil war during the year of the Four Emperors was described by ancient historians as a troubling period . According to Tacitus , this instability was rooted in the fact that emperors could no longer rely on the perceived legitimacy of the imperial bloodline , as Nero and those before him could . Galba began his short reign with the execution of many allies of Nero and possible future enemies . One such notable enemy included Nymphidius Sabinus , who claimed to be the son of Emperor Caligula . + Otho overthrew Galba . Otho was said to be liked by many soldiers because he had been a friend of Nero 's and resembled him somewhat in temperament . It was said that the common Roman hailed Otho as Nero himself . Otho used " Nero " as a surname and reerected many statues to Nero . Vitellius overthrew Otho . Vitellius began his reign with a large funeral for Nero complete with songs written by Nero . + After Nero 's suicide in 68 , there was a widespread belief , especially in the eastern provinces , that he was not dead and somehow would return . This belief came to be known as the Nero Redivivus Legend . + The legend of Nero 's return lasted for hundreds of years after Nero 's death . Augustine of Hippo wrote of the legend as a popular belief in 422 . + At least three Nero imposters emerged leading rebellions . The first , who sang and played the cithara or lyre and whose face was similar to that of the dead emperor , appeared in 69 during the reign of Vitellius . After persuading some to recognize him , he was captured and executed . Sometime during the reign of Titus ( 79 – 81 ) , another impostor appeared in Asia and sang to the accompaniment of the lyre and looked like Nero but he , too , was killed . Twenty years after Nero 's death , during the reign of Domitian , there was a third pretender . He was supported by the Parthians , who only reluctantly gave him up , and the matter almost came to war . + + = = Physical appearance = = + + In his book The Lives of the Twelve Caesars , Suetonius describes Nero as " about the average height , his body marked with spots and malodorous , his hair light blonde , his features regular rather than attractive , his eyes blue and somewhat weak , his neck over thick , his belly prominent , and his legs very slender . " + + = = Historiography = = + + The history of Nero 's reign is problematic in that no historical sources survived that were contemporary with Nero . These first histories at one time did exist and were described as biased and fantastical , either overly critical or praising of Nero . The original sources were also said to contradict on a number of events . Nonetheless , these lost primary sources were the basis of surviving secondary and tertiary histories on Nero written by the next generations of historians . A few of the contemporary historians are known by name . Fabius Rusticus , Cluvius Rufus and Pliny the Elder all wrote condemning histories on Nero that are now lost . There were also pro @-@ Nero histories , but it is unknown who wrote them or for what deeds Nero was praised . + The bulk of what is known of Nero comes from Tacitus , Suetonius and Cassius Dio , who were all of the senatorial class . Tacitus and Suetonius wrote their histories on Nero over fifty years after his death , while Cassius Dio wrote his history over 150 years after Nero 's death . These sources contradict on a number of events in Nero 's life including the death of Claudius , the death of Agrippina , and the Roman fire of 64 , but they are consistent in their condemnation of Nero . + A handful of other sources also add a limited and varying perspective on Nero . Few surviving sources paint Nero in a favourable light . Some sources , though , portray him as a competent emperor who was popular with the Roman people , especially in the east . + Cassius Dio + Cassius Dio ( c . 155 – 229 ) was the son of Cassius Apronianus , a Roman senator . He passed the greater part of his life in public service . He was a senator under Commodus and governor of Smyrna after the death of Septimius Severus ; and afterwards suffect consul around 205 , and also proconsul in Africa and Pannonia . + Books 61 – 63 of Dio 's Roman History describe the reign of Nero . Only fragments of these books remain and what does remain was abridged and altered by John Xiphilinus , an 11th @-@ century monk . + Dio Chrysostom + Dio Chrysostom ( c . 40 – 120 ) , a Greek philosopher and historian , wrote the Roman people were very happy with Nero and would have allowed him to rule indefinitely . They longed for his rule once he was gone and embraced imposters when they appeared : + Indeed the truth about this has not come out even yet ; for so far as the rest of his subjects were concerned , there was nothing to prevent his continuing to be Emperor for all time , seeing that even now everybody wishes he were still alive . And the great majority do believe that he still is , although in a certain sense he has died not once but often along with those who had been firmly convinced that he was still alive . + Epictetus + Epictetus ( c . 55 – 135 ) was the slave to Nero 's scribe Epaphroditos . He makes a few passing negative comments on Nero 's character in his work , but makes no remarks on the nature of his rule . He describes Nero as a spoiled , angry and unhappy man . + Josephus + The historian Josephus ( c . 37 – 100 ) , while calling Nero a tyrant , was also the first to mention bias against Nero . Of other historians , he said : + But I omit any further discourse about these affairs ; for there have been a great many who have composed the history of Nero ; some of which have departed from the truth of facts out of favour , as having received benefits from him ; while others , out of hatred to him , and the great ill @-@ will which they bore him , have so impudently raved against him with their lies , that they justly deserve to be condemned . Nor do I wonder at such as have told lies of Nero , since they have not in their writings preserved the truth of history as to those facts that were earlier than his time , even when the actors could have no way incurred their hatred , since those writers lived a long time after them . + Lucan + Though more of a poet than historian , Lucanus ( c . 39 – 65 ) has one of the kindest accounts of Nero 's rule . He writes of peace and prosperity under Nero in contrast to previous war and strife . Ironically , he was later involved in a conspiracy to overthrow Nero and was executed . + Philostratus + Philostratus II " the Athenian " ( c . 172 – 250 ) spoke of Nero in the Life of Apollonius Tyana ( Books 4 – 5 ) . Though he has a generally bad or dim view of Nero , he speaks of others ' positive reception of Nero in the East . + Pliny the Elder + The history of Nero by Pliny the Elder ( c . 24 – 79 ) did not survive . Still , there are several references to Nero in Pliny 's Natural Histories . Pliny has one of the worst opinions of Nero and calls him an " enemy of mankind . " + Plutarch + Plutarch ( c . 46 – 127 ) mentions Nero indirectly in his account of the Life of Galba and the Life of Otho . Nero is portrayed as a tyrant , but those that replace him are not described as better . + Seneca the Younger + It is not surprising that Seneca ( c . 4 BC – 65 ) , Nero 's teacher and advisor , writes very well of Nero . + Suetonius + Suetonius ( c . 69 – 130 ) was a member of the equestrian order , and he was the head of the department of the imperial correspondence . While in this position , Suetonius started writing biographies of the emperors , accentuating the anecdotal and sensational aspects . + Tacitus + The Annals by Tacitus ( c . 56 – 117 ) is the most detailed and comprehensive history on the rule of Nero , despite being incomplete after the year 66 . Tacitus described the rule of the Julio @-@ Claudian emperors as generally unjust . He also thought that existing writing on them was unbalanced : + The histories of Tiberius , Caius , Claudius and Nero , while they were in power , were falsified through terror , and after their death were written under the irritation of a recent hatred . + Tacitus was the son of a procurator , who married into the elite family of Agricola . He entered his political life as a senator after Nero 's death and , by Tacitus ' own admission , owed much to Nero 's rivals . Realising that this bias may be apparent to others , Tacitus protests that his writing is true . + Girolamo Cardano + In 1562 Girolamo Cardano published in Basel his Encomium Neronis , which was one of the first historical references of the Modern era to portray Nero in a positive light . + + = = Nero in Jewish and Christian tradition = = + + + = = = Jewish tradition = = = + + At the end of 66 , conflict broke out between Greeks and Jews in Jerusalem and Caesarea . According to the Talmud , Nero went to Jerusalem and shot arrows in all four directions . All the arrows landed in the city . He then asked a passing child to repeat the verse he had learned that day . The child responded , " I will lay my vengeance upon Edom by the hand of my people Israel " ( Ez . 25 @,@ 14 ) . Nero became terrified , believing that God wanted the Temple in Jerusalem to be destroyed , but would punish the one to carry it out . Nero said , " He desires to lay waste His House and to lay the blame on me , " whereupon he fled and converted to Judaism to avoid such retribution . Vespasian was then dispatched to put down the rebellion . + The Talmud adds that the sage Reb Meir Baal HaNess , Rabbi Meir or Rabbi Meir Baal HaNes ( Rabbi Meir the miracle maker ) was a Jewish sage who lived in the time of the Mishna a prominent supporter of the Bar Kokhba rebellion against Roman rule . He was considered one of the greatest of the Tannaim of the third generation ( 139 @-@ 163 ) . According to the Talmud , his father was a descendant of the Roman Emperor Nero who had converted to Judaism . His wife Bruriah is one of the few women cited in the Gemara . He is the third most frequently mentioned sage in the Mishnah . + Roman and Greek sources nowhere report Nero 's alleged trip to Jerusalem or his alleged conversion to Judaism . There is also no record of Nero having any offspring who survived infancy : his only recorded child , Claudia Augusta , died aged 4 months . + + = = = Christian tradition = = = + + Non @-@ Christian historian Tacitus describes Nero extensively torturing and executing Christians after the fire of 64 . Suetonius also mentions Nero punishing Christians , though he does so because they are " given to a new and mischievous superstition " and does not connect it with the fire . + Christian writer Tertullian ( c . 155 – 230 ) was the first to call Nero the first persecutor of Christians . He wrote , " Examine your records . There you will find that Nero was the first that persecuted this doctrine " . Lactantius ( c . 240 – 320 ) also said that Nero " first persecuted the servants of God " . as does Sulpicius Severus . However , Suetonius writes that , " since the Jews constantly made disturbances at the instigation of Chrestus , he [ emperor Claudius ] expelled them from Rome " ( " Iudaeos impulsore Chresto assidue tumultuantis Roma expulit " ) . These expelled " Jews " may have been early Christians , although Suetonius is not explicit . Nor is the Bible explicit , calling Aquila of Pontus and his wife , Priscilla , both expelled from Italy at the time , " Jews " . + + = = = = Martyrdoms of Peter and Paul = = = = + + The first text to suggest that Nero ordered the execution of an apostle is a letter by Clement to the Corinthians traditional dated to around 96 A.D. The apocryphal Ascension of Isaiah , a Christian writing from the 2nd century says , " the slayer of his mother , who himself ( even ) this king , will persecute the plant which the Twelve Apostles of the Beloved have planted . Of the Twelve one will be delivered into his hands " was interpreted to mean Nero . + Bishop Eusebius of Caesarea ( c . 275 – 339 ) was the first to write explicitly that Paul was beheaded in Rome during the reign of Nero . He states that Nero 's persecution led to Peter and Paul 's deaths , but that Nero did not give any specific orders . However , several other accounts going back to the 1st century have Paul surviving his two years in Rome and travelling to Hispania , before facing trial in Rome again prior to his death . + Peter is first said to have been crucified upside @-@ down in Rome during Nero 's reign ( but not by Nero ) in the apocryphal Acts of Peter ( c . 200 ) . The account ends with Paul still alive and Nero abiding by God 's command not to persecute any more Christians . + By the 4th century , a number of writers were stating that Nero killed Peter and Paul . + + = = = = The Antichrist = = = = + + The Sibylline Oracles , Book 5 and 8 , written in the 2nd century , speak of Nero returning and bringing destruction . Within Christian communities , these writings , along with others , fueled the belief that Nero would return as the Antichrist . In 310 , Lactantius wrote that Nero " suddenly disappeared , and even the burial place of that noxious wild beast was nowhere to be seen . This has led some persons of extravagant imagination to suppose that , having been conveyed to a distant region , he is still reserved alive ; and to him they apply the Sibylline verses " , Lactantius maintains that it is not right to believe this . + In 422 , Augustine of Hippo wrote about 2 Thessalonians 2 : 1 – 11 , where he believed Paul mentioned the coming of the Antichrist . Though he rejects the theory , Augustine mentions that many Christians believed that Nero was the Antichrist or would return as the Antichrist . He wrote , " so that in saying , ' For the mystery of iniquity doth already work , ' he alluded to Nero , whose deeds already seemed to be as the deeds of Antichrist . " + Some modern biblical scholars such as Delbert Hillers ( Johns Hopkins University ) of the American Schools of Oriental Research and the editors of the Oxford & Harper Collins Study Bibles , contend that the number 666 in the Book of Revelation is a code for Nero , a view that is also supported in Roman Catholic Biblical commentaries . + The concept of Nero as the Antichrist is often a central belief of Preterist eschatology . + + + = Manila = + + Manila ( / məˈnɪl.ə / ) is the capital city of the Philippines , founded on June 24 , 1571 by Spanish conquistador Miguel López de Legazpi . It is one of the oldest cities in the country and was the seat of power for most of the colonial rules of the Philippines . It is situated on the eastern shore of Manila Bay and contains a multitude of landmarks , some of which date back to the 16th century , such as the Spanish colonial era Walled City of Intramuros . + Manila is the second most populous city in the Philippines after the former capital Quezon City with a population of 1 @,@ 780 @,@ 148 in 2015 . Because of its small land area and huge population , Manila is regarded as one of the most densely populated cities in the world with 42 @,@ 857 people per square kilometer . Manila is one of the sixteen cities and a municipality that make up Metro Manila , the National Capital Region of the Philippines . In 2012 , Globalization and World Cities Research Network listed Manila as a global city . + Manila has six representative districts for the lower house of the Philippine Congress . Furthermore , the city is composed of 16 districts , namely : Binondo , Ermita , Intramuros , Malate , Paco , Pandacan , Port Area , Quiapo , Sampaloc , San Andres , San Miguel , San Nicolas , Santa Ana , Santa Cruz , Santa Mesa and Tondo . + The Kingdom of Tondo once ruled in the vicinity of Manila before it briefly became a province of the Hindu Majapahit Empire . During the Brunei invasion of the Philippines , Sultan Bolkiah of Brunei captured Seludong ( a village in modern @-@ day Manila ) and renamed it Maynilà , a Tagalog term referring to the presence of the Nila shrub . Maynila was a vassal state of Brunei , established to overpower Tondo . Maynilà had been Indianized since the sixth century CE and earlier . It had become partly Islamic and Hindu @-@ animist by the 15th century CE . + In 1571 Spanish Conquistadors arrived from Mexico , from across the Pacific , and founded present @-@ day Manila in what today is Intramuros . Spanish missionaries soon Christianized the city and incorporated Tondo under Manila and then built some of the oldest churches in the country , including San Agustin Church . The Conquistadors renamed the area Nuevo Reino de Castilla ( New Kingdom of Castille ) and shortened the name to Manila . + Manila became the center of Spanish activity in the Far East and one end of the Manila @-@ Acapulco Galleon trade route , linking Spanish America with Asia , one of the earliest examples of globalization . Due to the central location in the Pacific sea trade routes , Manila received the moniker of the " Pearl of the Orient " . Spanish rule of Manila and the entire Philippine archipelago lasted for over three centuries , until 1898 . At different times during the long Spanish period there were local revolts , Chinese insurrections , massive pirate attacks , great earthquakes , Dutch raids and invasion attempts , and a British occupation of the city during their unsuccessful attempt to conquer the Philippines . Order was usually quickly restored and the city returned to the business of trade . In the 19th century Manila was one of the most modern cities in Asia . Before the Spanish – American War , Manila saw the rise of the Philippine Revolution . Under the American rule following the Spanish – American War , the United States changed the official language from Spanish to English and made some changes in education , local laws and urban planning . Towards the end of World War II , during the Battle of Manila most of the city was flattened by intensive aerial bombardment by the United States Air Force . As a result , relatively little remains of Manila 's prewar and colonial architecture , although there are ongoing restoration projects , especially within the old walled city , Intramuros . + + = = History = = + + The earliest evidence of human life in and around the area of Manila is the nearby Angono Petroglyphs dated to around 3000 BC . Furthermore , negritos , a class of Australoid peoples , became the aboriginal inhabitants of the Philippines . They were found across Luzon before the Malayo @-@ Polynesians migrated in and assimilated them . + The Kingdom of Tondo flourished during the latter half of the Ming Dynasty as a result of direct trade relations with China . Tondo district was maintained as the traditional capital of the empire , with its rulers as sovereign kings and not mere chieftains , and were addressed variously as panginuan ln Meranau or panginoón in Tagalog ( " lords " ) ; anák banwa ( " son of heaven " ) ; or lakandula ( " lord of the palace " ) , the Emperor of China considered the Lakans ( rulers of ancient Manila ) " 王 " ( Kings ) . + In the 13th century , Manila consisted of a fortified settlement and trading quarter at the shores of the Pasig River , on top of previous older towns . Manila was then settled by the Indianized empire of Majapahit as referenced in the epic eulogy poem Nagarakretagama which inscribed its conquest by Maharaja Hayam Wuruk . Selurong " षेलुरोन ् ग ् " which is a historical name for the city of Manila is listed in Canto 14 alongside Sulot , which is now Sulu , and Kalka . + During the reign of Sultan Bolkiah from 1485 to 1521 , the Bruneian Empire invaded , wanting to take advantage of Tondo 's China trade by attacking its environs and establishing " كوتا سلودوڠ Kota Saludong " ( The Kingdom of Maynila ) . They ruled under and gave yearly tribute to the Sultanate of Brunei as its satellite state . They established a new dynasty under the local leader who accepted Islam and became Rajah Salalila or Tariq Sulayman I. He also established a trading challenge to the already rich House of Lakan Dula in Tondo . Islam was further strengthened by the arrival of Muslim traders from the Arab @-@ Indian area and Southeast Asia . Manila was temporarily besieged by the invasion of Chinese pirate @-@ warlord Limahong ( 1574 ) but was thwarted by the local inhabitants , before it became the seat of the colonial government of Spain . + On June 24 , 1571 , Spanish conquistador Miguel López de Legazpi arrived from New Spain ( now Mexico ) , and then exercised rule of the Spanish city of Manila as a territory of New Spain with the establishment of a city council in what today is the district of Intramuros . López de Legazpi had the local royalty executed or exiled , after the failure of the Tondo Conspiracy ; a plot wherein an alliance between Japanese merchants , Luzon 's Huangs with several Datus and Rajahs plus the Bruneian Empire would band together to execute the Spaniards and their Latin @-@ American mercenaries , and Visayan allies . At the conclusion of which , the victorious Spaniards made Manila the capital of the Spanish East Indies and of the Philippines , which the empire would control for the next three centuries , from 1565 to 1898 . + Manila then became famous during the Manila @-@ Acapulco Galleon trade which lasted for three centuries and brought goods from Europe , Africa and Latin America across the Pacific Islands to Southeast Asia ( Which was already an entrepot for goods coming from India , Indonesia and China ) and trade also flowed vice versa . Silver that was mined in Mexico and Peru were exchanged for Chinese silk , Indian gems , and the spices of the Southeast Asia , some of which even flowed to Europe . Likewise wines and olives grown from Europe and North Africa were transshipped via Mexico towards Manila . + Manila was occupied by British forces for twenty months , from 1762 to 1764 , and used as a base for an unsuccessful attempt to conquer the Philippines during the Seven Years ' War . Eventually , the British withdrew from Manila as per agreements in the 1763 Treaty of Paris . The Chinese were punished for supporting the British invasion , and the small fortress @-@ city of Intramuros , mostly populated by Europeans and Mexicans , kept its cannons pointed at Binondo , the world 's oldest Chinatown . + Mexican Independence in 1821 necessitated direct rule from Spain . Under direct Spanish rule , banking , industry and education flourished more than it had in the previous two centuries . The opening of the Suez Canal in 1869 facilitated direct trade and communications with Spain . + The growing wealth and education attracted indigenous , Chinese , Indians , Latinos , and Europeans from the provinces to Manila , all of whom elected a nascent Filipino citizenship regardless of ethnicity . The developments also facilitated the rise of an illustrado class which espoused liberal ideas , the ideological foundations of the Philippine Revolution which sought independence from Spain . + After the Battle of Manila ( 1898 ) , Spain ceded the surrendered city of Manila to the United States . The First Philippine Republic based at nearby Bulacan fought against the Americans for control of the city of Manila . The Americans defeated the First Philippine Republic and captured president Emilio Aguinaldo who announced allegiance to the United States on April 1 , 1901 . + Upon drafting a new charter for Manila in June 1901 , the Americans made official what had long been tacit : that the City of Manila was not Intramuros alone but also all its arrabales . The new city charter proclaimed that Manila was composed of eleven municipal districts — presumably Tondo , Binondo , Santa Cruz , Sampaloc , San Miguel , Pandacan , Santa Ana , Paco , Malate , Ermita and Intramuros . In addition to these , the Church recognized five parishes as Manileno — namely , Gagalangin , Trozo , Balic @-@ Balic , Santa Mesa and Singalong . Later times would add two more : Balut and San Andres Bukid . + Under American control , a new civilian oriented Insular Government headed by then Governor @-@ General William Howard Taft invited city planner Daniel Burnham for the transformation of Manila , to adapt the old city to changed times and modern needs . The Burnham Plan included development of the road system , the use of waterways for transportation , and beautification of Manila with the improvement of waterfronts , construction of parks , parkways and various building for various activities . + The latter included a government center occupying all of Wallace Field , which extends from Luneta to the present Taft Avenue . The Philippine Capitol was to rise at the Taft Avenue end of the field , facing toward the sea , and would form , with the buildings of different government bureaus and departments , a quadrangle , lagoon in the center , and a monument to José Rizal at its Luneta end . Of Burnham 's proposed government center , only three units — the Legislative Building and the building of the Finance and Agricultural departments — were completed when World War II erupted . + Due to the Japanese occupation of the Philippines , American soldiers were ordered to withdraw from the city and all military installations were removed on December 24 , 1941 . General Douglas MacArthur declared Manila an open city to prevent further death and destruction ; despite this , the Japanese warplanes continued to bomb the city . Manila was occupied by the Japanese forces on January 2 , 1942 . + Manila was also the site of the bloodiest battle in the Pacific theater during the Second World War . After falling to the Empire of Japan on January 2 , 1942 , it was recaptured by joint American and Filipino troops from February 3 to March 3 , 1945 . Some 100 @,@ 000 civilians were killed in Manila in February 1945 . It was the second most devastated city in the world after Warsaw during the Second World War . At the end of World War II , almost all of the structures in the city , particularly Intramuros , were destroyed but after the war , reconstruction took place . + In 1948 , President Elpidio Quirino moved the seat of government of the Philippines to Quezon City , a new capital city in the suburbs and fields northeast of Manila , created in 1938 by former President Manuel L. Quezon , which was named after him . The move ended any implementation of the Burnham Plan 's intent for the government centre to be at Luneta . + With the Visayan @-@ born Arsenio Lacson as its first elected mayor in 1952 ( all mayors were appointed prior to this ) , Manila underwent The Golden Age , once again earning its status as the " Pearl of the Orient " , a moniker it earned before the Second World War . After Lacson 's term in the 1950s , Manila was led by Antonio Villegas for most of the 1960s . Ramon Bagatsing ( an Indian @-@ Filipino ) was mayor for nearly the entire 1970s until the 1986 People Power Revolution . Mayors Lacson , Villegas , and Bagatsing are often collectively considered as the " Big Three of Manila " less for their rather long tenures as the city 's chief executive ( continuously for over three decades , from 1952 – 1986 ) , but more for their indelible contribution to the development and progress of the city and their lasting legacy in uplifting the quality of life and welfare of the people of Manila . + During the administration of President Ferdinand Marcos , the region of the Metro Manila was created as an integrated unit with the enactment of Presidential Decree No. 824 on November 7 , 1975 . The area encompassed four cities and thirteen adjoining towns , as a separate regional unit of government . On the 405th anniversary of the city 's foundation on June 24 , 1976 , Manila was reinstated by Marcos as the capital of the Philippines for its historical significance as the seat of government since the Spanish Period . Presidential Decree No. 940 states that Manila has always been to the Filipino people and in the eyes of the world , the premier city of the Philippines being the center of trade , commerce , education and culture . + During the martial law era , Manila became a hot @-@ bed of resistance activity as youth and student demonstrators repeatedly clashed with the police and military which were subservient to the Marcos regime . After decades of resistance , the non @-@ violent People Power Revolution ( predecessor to the peaceful @-@ revolutions that toppled the iron @-@ curtain in Europe ) , ousted the authoritarian Marcos from power . + In 1992 , Alfredo Lim was elected mayor , the first Chinese @-@ Filipino to hold the office . He was known for his anti @-@ crime crusades . Lim was succeeded by Lito Atienza , who served as his vice @-@ mayor . Atienza was known for his campaign ( and city slogan ) " Buhayin ang Maynila " ( Revive Manila ) , which saw the establishment of several parks and the repair and rehabilitation of the city 's deteriorating facilities . He was the city 's mayor for 3 terms ( 9 years ) before being termed out of office . + Alfredo Lim once again ran for mayor and defeated Atienza 's son Ali in the 2007 city election and immediately reversed all of Atienza 's projects claiming Atienza 's projects made little contribution to the improvements of the city . The relationship of both parties turned bitter , with the two pitting again during the 2010 city elections in which Lim won against Atienza . + Lim was sued by councilor Dennis Alcoreza on 2008 over human rights , charged with graft over the rehabilitation of public schools , and was heavily criticized for his haphazard resolution of the Rizal Park hostage taking incident , one of the deadliest hostage crisis in the Philippines . Later on , Vice Mayor Isko Moreno and 28 city councilors filed another case against Lim in 2012 , stating that Lim 's statement in a meeting were " life @-@ threatening " to them . On the 2013 elections , former President Joseph Estrada defeated Lim in the mayoral race . During his term , Estrada has paid the city 's over ₱ 5 billion debts , increase revenues by 2 @.@ 35 times from ₱ 6 @.@ 2 billion in 2012 to ₱ 14 @.@ 6 billion by 2016 , spent from 2013 to 2016 an unprecedented ₱ 6 @.@ 76 billion for the city 's infrastructure , built and or renovated seven city public markets , built 22 schools , increased teachers ' incomes , modernized the six city hospitals and bought dialysis machines and magnetic resonance imaging scanners , increased the efficiency of the police force and reduced crime . Manila has become the most competitive city in the Philippines by 2015 , making the city the best place for doing business and for living in . + Despite his achievements and unprecedented feat as the Mayor of Manila , however , Estrada was re @-@ elected as Manila mayor in the 2016 election against Lim and Amado Bagatsing , only winning by an infinitesimal 2 @,@ 830 votes . + + = = Geography = = + + Manila is located on the eastern shores of Manila bay , which rests on the western shores of Luzon . Manila lies 800 miles ( 1 @,@ 300 kilometers ) from mainland Asia . The Pasig River bisects Manila . + Almost all of Manila sits on top of centuries of prehistoric alluvial deposits built by the waters of the Pasig and on some land reclaimed from Manila Bay . Manila 's land has been altered substantially by human intervention , with considerable land reclamation along the waterfronts since the American colonial times . Some of the natural variations in topography have been evened out due to the urbanization of the city . As of 2013 , Manila has a total area of 42 @.@ 88 square kilometres ( 16 @.@ 56 sq mi ) . + + = = = Earthquakes = = = + + Manila sits astride the Pacific typhoon belt and is criss @-@ crossed by several fault lines . This led to Manila and its metropolitan region to be ranked as the second riskiest capital ( city ) to live in according to Swiss Re . The seismically active Marikina Valley Fault System poses a threat to Manila and the surrounding regions . + Manila has endured several deadly earthquakes , notably in 1645 and in 1677 which destroyed the stone and brick medieval city . The Earthquake Baroque style was used by the Colonial architects during the Spanish colonial period in order to adapt to the frequent earthquakes . + + = = = Climate = = = + + Under the Köppen climate classification system , Manila features a tropical savanna climate ( Köppen climate classification Aw ) . Together with the rest of the Philippines , Manila lies entirely within the tropics . Its proximity to the equator means that the temperature range is very small , rarely going below 20 ° C ( 68 ° F ) or above 38 ° C ( 100 ° F ) . Temperature extremes have ranged from 14 @.@ 5 ° C ( 58 @.@ 1 ° F ) on January 11 , 1914 to 38 @.@ 6 ° C ( 101 @.@ 5 ° F ) on May 7 , 1915 . + Humidity levels are usually very high all year round . Manila has a distinct dry season from December through May , and a relatively lengthy wet season that covers the remaining period with slightly cooler temperatures . In the rainy season it rarely rains all day but the rainfall is very heavy during short periods . Typhoons usually occur from June to September . + + = = = Environment = = = + + Due to industrial waste and automobiles , Manila suffers from air pollution , affecting 98 % of the population . Annually , the air pollution causes more than 4 @,@ 000 deaths . Ermita is Manila 's most air polluted district due to open dump sites and industrial waste . According to a report in 2003 , The Pasig River is one of the most polluted rivers in the world with 150 tons of domestic waste and 75 tons of industrial waste dumped daily . + Annually , Manila is hit with 6 to 7 typhoons creating floods . In 2009 , Typhoon Ketsana struck Philippines . In the aftermath of Typhoon Ketsana , the lack of infrastructure led to one of the worst floodings in the Philippines and creating a significant amount of pollution . Following the aftermath of Typhoon Ketsana , the city began to dredge its rivers and improve its drainage network . The Pasig River Rehabilitation Commission is in charge of cleaning up the Pasig River and tributaries for transportation , recreation and tourism purposes . Rehabilitation efforts have resulted in the creation of parks along the riverside , along with stricter pollution controls . + + = = Cityscape = = + + + = = = Architecture = = = + + Manila has architecturally significant buildings in a wide range of styles spanning distinct historical and cultural periods . Architectural styles reflect American , Spanish , Chinese , and Malay influences . Prominet Filipino architects such as Antonio Toledo , Felipe Roxas , Juan M. Arellano and Tomás Mapúa have designed significant buildings in Manila such as churches , government offices , theaters , mansions , schools and universities . + Manila is known for its distinct Art Deco theaters which are designed by National Artists such as Juan Nakpil and Pablo Antonio . The historic Escolta Street in Binondo features many buildings of neo @-@ classical and beaux @-@ arts architectural style , many of which were designed by prominent Filipino architects during the American Rule in the 1920s to the late 1930s . Many architects , artists , historians and heritage advocacy groups are pushing for the revival of Escolta Street , which was once the premier street of the Philippines . + Unfortunately , much of Manila 's prewar and Spanish colonial architecture was destroyed during World War II . Reconstruction took place afterwards , replacing the destroyed historic Spanish @-@ era buildings with modern ones , erasing much of the city 's character . Some buildings destroyed by the war have been reconstructed , such as the Old Legislative Building ( National Museum ) , Ayuntamiento de Manila ( Bureau of the Treasury ) and the currently under construction San Ignacio Church ( Museo de Intramuros ) . Plans have been laid out to rehabilitate several neglected historic buildings and places such as Plaza Del Carmen , San Sebastian Church and the Manila Metropolitan Theater and soon Spanish @-@ era shops and houses in Quiapo , Binondo , and San Nicolas will be restored to its former splendor , as a part of a movement to restore Manila to its former glory . + Since Manila is prone to earthquakes , the Spanish colonial architects invented the style called Earthquake Baroque which the churches and government buildings during the Spanish colonial period adopted . As a result , succeeding earthquakes of the 18th and 19th centuries barely affected Manila , although it did periodically level the surrounding area . Modern buildings in and around Manila are designed or have retrofitted to withstand an 8 @.@ 2 magnitude quake in accordance to the country 's building code . + + = = = Barangays and districts = = = + + Manila is composed of fourteen districts according to Republic Act No. 409 , otherwise known as the Revised Charter of the City of Manila . Two were later added , which are Santa Mesa ( partitioned off from Sampaloc ) and San Andres ( partitioned off from Santa Ana ) . + The city has 896 barangays that are known by sequential numbers instead of names . These barangays are further group into 100 zones for administrative and municipal purposes . + + = = = Military and national security = = = + + The headquarters of the Philippine Coast Guard is located at the South Harbor in Port Area near Intramuros and Ermita . The Philippine Navy on the other hand has its headquarters in Naval Station Jose Andrada located along Roxas Boulevard in Malate . Furthermore , the AFP Joint Task Force @-@ National Capital Region was created in 2012 to ensure peace and stability in Metro Manila , of which Manila is a part . It bears the same functions of the deactivated National Capital Regional Command , although it operates on a much smaller size than its predecessor . + + = = = Slums = = = + + There are an estimated 4 million slum dwellers living in Manila as of 2014 . + + = = Demographics = = + + According to the 2015 census , the population of the city was 1 @,@ 780 @,@ 148 , making it the second most populous city in the Philippines . + Manila is the most densely populated city in the world with 43 @,@ 079 inhabitants per km2 . District 6 is listed as being the most dense with 68 @,@ 266 inhabitants per km2 , followed by District 1 with 64 @,@ 936 and District 2 with 64 @,@ 710 , respectively . District 5 is the least densely populated area with 19 @,@ 235 . + Manila 's population density dwarfs that of Kolkata ( 27 @,@ 774 inhabitants per km2 ) , Mumbai ( 22 @,@ 937 inhabitants per km2 ) , Paris ( 20 @,@ 164 inhabitants per km2 ) , Dhaka ( 19 @,@ 447 inhabitants per km2 ) , Shanghai ( 16 @,@ 364 inhabitants per km2 , with its most dense district , Nanshi , having a density of 56 @,@ 785 inhabitants per km2 ) , and Tokyo ( 10 @,@ 087 inhabitants per km2 ) . + The vernacular language is Filipino , based mostly on the Tagalog of surrounding areas , and this Manila form of speaking Tagalog has essentially become the lingua franca of the Philippines , having spread throughout the archipelago through mass media and entertainment . Meanwhile , English is the language most widely used in education , business , and heavily in everyday usage throughout the Metro Manila region and the Philippines itself . + A number of older residents can still speak basic Spanish , which used to be a mandatory subject in the curriculum of Philippine universities and colleges , and many children of Japanese Filipino , Indian Filipino , and other migrants or expatriates also speak their parents ' languages at home , aside from English and / or Filipino for everyday use . Minnan Chinese ( known as Lannang @-@ oe ) is spoken by the city 's Chinese @-@ Filipino community . + + = = Economy = = + + The city is a major center for commerce , banking and finance , retailing , transportation , tourism , real estate , new media as well as traditional media , advertising , legal services , accountancy , insurance , theater , fashion , and the arts in the Philippines . + The Cities and Municipalities Competitiveness Index , published by the National Competitiveness Council of the Philippines , ranks the cities , municipalities and provinces of the country according to their economic dynamism , government efficiency and infrastructure . Manila placed third in the Highly Urbanized City ( HUC ) category . Previously , Manila was the country 's most competitive city in 2015 , making it the best place to live in and do business . + The Port of Manila is the largest seaport in the Philippines , making it the premier international shipping gateway to the country . The Philippine Ports Authority is government agency responsible to oversee the operation and management of the ports . The International Container Terminal Services Inc. cited by the Asian Development Bank as one of the top five major maritime terminal operators in the world has its headquarters and main operations on the ports of Manila . Another port operator , the Asian Terminal Incorporated , has its corporate office and main operations in the Manila South Harbor and its container depository located in Santa Mesa . + Binondo , the oldest and one of the largest Chinatown in the world , was the center of commerce and business activities in the city . Numerous residential and office skyscrapers are found within its medieval streets . Plans to make the Chinatown area into a business process outsourcing ( BPO ) hub progresses and is aggressively pursued by the city government of Manila . 30 buildings are already identified to be converted into BPO offices . These buildings are mostly located along the Escolta Street of Binondo , which are all unoccupied and can be converted into offices . + Divisoria in Tondo is dubbed as the " shopping mecca of the Philippines " . Numerous shopping malls are located in this place , which sells products and goods at bargain price . Small vendors occupies several roads that causes pedestrian and vehicular traffic . A famous landmark in Divisoria is the Tutuban Center , a large shopping mall that is a part of the Philippine National Railways ' Main Station . It attracts 1 million people every month , but is expected to add another 400 @,@ 000 people when the LRT @-@ 2 West Extension is constructed , making it Manila 's busiest transfer station . + Diverse manufacturers within the city produce industrial @-@ related products such as chemicals , textiles , clothing , and electronic goods . Food and beverages and tobacco products also produced . Local entrepreneurs continue to process primary commodities for export , including rope , plywood , refined sugar , copra , and coconut oil . The food @-@ processing industry is one of the most stable major manufacturing sector in the city . + The Pandacan Oil Depot houses the storage facilities and distribution terminals of the three major players in the country 's petroleum industry , namely Caltex Philippines , Pilipinas Shell and Petron Corporation . The oil depot has been a subject of various concerns , including its environmental and health impact to the residents of Manila . The Supreme Court has ordered that the oil depot to be relocated outside the city by July 2015 , but it failed to meet this deadline . It is currently being demolished which is expected to be finished before the year 2016 ends , and plans have been set up to turn this 33 hectare facility into a transport hub or even a food park . + Manila is a major publishing center in the Philippines . Manila Bulletin , the Philippines ' largest broadsheet newspaper by circulation , is headquartered inside Intramuros . Other major publishing companies in the country like The Manila Times , The Philippine Star and Manila Standard Today are headquartered inside the Port Area . The Chinese Commercial News , the Philippines ' oldest existing Chinese @-@ language newspaper , and the country 's third @-@ oldest existing newspaper is headquartered in Binondo . + Manila serves as the headquarters of the Central Bank of the Philippines which is located along Roxas Boulevard . Some universal banks in the Philippines that has its headquarters in the city are the Landbank of the Philippines and Philippine Trust Company . Philam Life Insurance Company , currently the largest life insurance company in the Philippines in terms of assets , net worth , investment and paid @-@ up capital , has its headquarters along United Nations Avenue in Ermita . Unilever Philippines has its corporate office along United Nations Avenue in Paco . Toyota , a company listed in the Forbes Global 2000 also has its regional office along UN Avenue . + + = = = Tourism = = = + + Tourism is a vital industry in Manila , and it welcomes approximately over 1 million tourists each year . Major destinations include the walled city of Intramuros , the National Theater at the Cultural Center of the Philippines , Manila Ocean Park , Binondo , Ermita , Malate , Manila Zoo , National Museum of the Philippines and Rizal Park . + Rizal Park , also known as Luneta Park , is the national park of the country and has an area of 58 hectares ( 140 acres ) , making it the largest urban park in Asia . In the Tourism Act of 2009 , Rizal Park along with Intramuros are designated as flagship destination to become a tourism enterprise zone . A new attraction called Paseo de Manila is expected to rise in the park . The park was constructed as an honor and dedication to the country 's national hero José Rizal , who was executed by the Spaniards on charges of subversion . The flagpole west of the Rizal Monument is the Kilometer Zero marker for distances to the rest of the country . + Intramuros is the historic center of Manila . Originally , it was considered to be Manila itself at the time when the Philippines was under the Spanish Empire colonial rule . Owing to its history and cultural value , Intramuros and Rizal Park are designated as flagship destination to become a tourism enterprise zone in the Tourism Act of 2009 . Intramuros is managed by the Intramuros Administration ( IA ) . + The architecture of Intramuros reflects the Spanish colonial style and the American neoclassical architectural style , since the Philippines was a colony of Spain and the United States before it is granted its independence in 1946 . Kalesa is a popular mode of transportation in Intramuros and nearby places such as Binondo , Ermita and the Rizal Park . + Popular tourist destinations in Intramuros include the Baluarte de San Diego , Club Intramuros Golf Course , Cuartel de Santa Lucia , Fort Santiago , Manila Cathedral , Palacio Arzobispal , Palacio de Santa Potenciana , Palacio del Gobernador , Plaza Mexico , Plaza de Roma , San Agustin Church and the Ayuntamiento de Manila . + Some of the country 's oldest schools are founded in Intramuros , these are the University of Santo Tomas ( 1611 ) , Colegio de San Juan de Letran ( 1620 ) , and Ateneo de Manila University ( 1859 ) . Only Colegio de San Juan de Letran remains at Intramuros ; the University of Santo Tomas transferred to a new campus at Sampaloc in 1927 , and Ateneo left Intramuros for Loyola Heights , Quezon City ( while still retaining " de Manila " in its name ) in 1952 . Other prominent educational institutions include the Manila High School and the University of the City of Manila . + The Department of Tourism designates Manila as the pioneer of medical tourism , expecting it to generate $ 1 billion in revenue annually . However , lack of progressive health system , inadequate infrastructure and the unstable political environment are seen as hindrances for its growth . + + = = = Shopping centers = = = + + Manila is a well @-@ known shopping hub of the country and it has been named as one of the best shopping destinations in Asia . Major shopping malls , markets and bazaars thrives in Manila . + Robinsons Place Manila is the largest shopping mall in the city . The mall was the second and by @-@ far , the largest Robinson Mall ever built by John Gokongwei . SM Supermall maintains presence in the city . One of their shopping mall is the SM City Manila , the first SM Supermall in the city featuring major SM brands like The SM Store , SM Supermarket , SM Cinemas and SM Foodcourt . It is located right beside the Manila City Hall . SM City San Lazaro is the second SM Supermall in Manila . It is located in Santa Cruz . SM City San Lazaro was constructed on the site of the former San Lazaro Hippodrome . The building of the former Manila Royal Hotel in Quiapo which is famed for its revolving restaurant atop is now the SM Clearance Center which was established in 1972 . The site of the first SM Store is located at Carlos Palanca Sr. ( formerly Echague ) Street in San Miguel . + Quiapo is referred as the " Old Downtown " where tiangges , markets , botique shops , music and electronics stores are common . C.M. Recto Avenue is where lots of department stores are located . One of Recto Avenue 's famous destination is Divisoria , home to numerous shopping malls in the city . It is also dubbed as the shopping mecca of the Philippines where everything is sold at bargain price . Binondo , the oldest Chinatown in the world , is the city 's center of commerce and trade for all types of businesses run by Filipino @-@ Chinese merchants with a wide variety of Chinese and Filipino shops and restaurants . + + = = Arts , culture and religion = = + + + = = = Religion = = = + + + = = = = Christianity = = = = + + As a result of Spanish cultural influence , Manila is a predominantly Christian ( Catholic ) city . As of 2010 , Roman Catholics comprises 83 @.@ 5 % of the population , followed by adherents of the Philippine Independent Church ( 2 @.@ 4 % ) ; Iglesia ni Cristo ( 1 @.@ 9 % ) ; various Protestant churches ( 1 @.@ 8 % ) ; and Buddhists ( 1 @.@ 1 % ) . Members of Islam and other religions comprises the remaining 10 @.@ 4 % of the city 's population . + Manila is the site of prominent Catholic churches and institutions . The Manila Cathedral is the seat of the Roman Catholic Archdiocese of Manila and the oldest established church in the country . Aside from the Manila Cathedral , there are also three other basilicas in the city : Quiapo Church , Binondo Church , and the Minor Basilica of San Sebastián . The San Agustín Church in Intramuros is a UNESCO World Heritage Site and is one of the two fully air @-@ conditioned Catholic churches in the city . Manila also has other parishes located throughout the city , with some of them dating back to the Spanish Colonial Period when the city serves as the base for numerous Catholic missions both within the Philippines and to Asia beyond . + Several Mainline Protestant denominations are headquartered in the city . St. Stephen 's Parish pro @-@ cathedral in the Sta . Cruz district is the see of the Episcopal Church in the Philippines ' Diocese of Central Philippines , while align Taft Avenue are the main cathedral and central offices of the Iglesia Filipina Independiente ( also called the Aglipayan Church , a national church that was a product of the Philippine Revolution ) . Other faiths like The Church of Jesus Christ of Latter @-@ day Saints maintains a presence in the city . + The indigenous Iglesia ni Cristo has several locales ( akin to parishes ) in the city , including its very first chapel ( now a museum ) in Punta , Sta . Ana . Evangelical , Pentecostal and Seventh @-@ day Adventist denominations also thrives within the city . The headquarters of the Philippine Bible Society is in Manila . Also , the main campus of the Cathedral of Praise is located along Taft Avenue . Jesus Is Lord Church also has several branches and campuses in Manila , and celebrates its anniversary yearly at the Burnham Green and Quirino Grandstand in Rizal Park . + + = = = = Other faiths = = = = + + The city also hosts other religions . There are many Buddhist and Taoist temples serving the Chinese Filipino community . Quiapo is home to a sizable Muslim population which worships at Masjid Al @-@ Dahab . Members of the Indian expatriate population have the option of worshiping at the large Hindu temple in the city , or at the Sikh gurdwara along United Nations Avenue . The National Spiritual Assembly of the Bahá 'ís of the Philippines , the governing body of the Filipino Bahá 'í community , is headquartered near Manila 's eastern border with Makati . + + = = = Annual cultural events and religious festivities = = = + + Manila celebrates civic and national holidays . Manila Day , which celebrates the city 's founding on June 24 , 1571 , was first proclaimed by Herminio A. Astorga ( then Vice Mayor of Manila ) on June 24 , 1962 and has been annually commemorated , under the patronage of John the Baptist . Locally , each of the city 's barangays also have their own festivities guided by their own patron saint . The city is also the host to the Feast of the Black Nazarene , held every January 9 , which draws millions of Catholic devotees . Another religious feasts held in Manila was the Feast of the Nuestra Señora de los Desamparados de Manila ( Our Lady of the Abandoned ) , the patron saint of Santa Ana and was held every May 12 . Non @-@ religious holidays include the New Year 's Day , National Heroes ' Day , Bonifacio Day and Rizal Day . + + = = = Museums and art galleries = = = + + As the cultural center of the Philippines , Manila is the home to a number of museums . The National Museum of the Philippines Complex , which include the National Museum of Fine Arts , Museum of Anthropology and the Museum of Natural History , is located on the northeast part of Rizal Park facing Taft Avenue. proposed national government center during the American time . Museums established by educational institutions include the Mabini Shrine , the Museum of Contemporary Art and Design , UST Museum of Arts and Sciences , and the UP Museum of a History of Ideas . + Bahay Tsinoy , one of Manila 's most prominent museums , documents the Chinese lives and contributions in the history of the Philippines . The Intramuros Light and Sound Museum chronicles the Filipinos desire for freedom during the revolution under Rizal 's leadership and other revolutionary leaders . The Metropolitan Museum of Manila exhibits the Filipino arts and culture . + Other museums in the city are the Museum of Manila , the city @-@ owned museum that exhibits the city 's culture and history , Museo Pambata , a children 's museum , the Museum of Philippine Political History , which exhibits notable political events in the country , the Parish of the Our Lady of the Abandoned and the San Agustin Church Museum , which houses religious artifacts , and Plaza San Luis , a public museum . + + = = Sports = = + + Sports in Manila have a long and distinguished history . The city 's , and in general the country 's main sport is basketball , and most barangays have a makeshift basketball court , with court markings drawn on the streets . Larger barangays have covered courts where interbarangay leagues are held every summer ( April to May ) . + The city has several well @-@ known sports venues , such as the Rizal Memorial Sports Complex and San Andres Gym , the home of the now defunct Manila Metrostars . The Rizal Memorial Sports Complex houses the Rizal Memorial Track and Football Stadium , the Baseball Stadium , Tennis Courts , Memorial Coliseum and the Ninoy Aquino Stadium ( the latter two are indoor arenas ) . + The Rizal complex had hosted several multi @-@ sport events , such as the 1954 Asian Games and the 1934 Far Eastern Games . Whenever the country hosts the Southeast Asian Games , most of the events are held at the complex , but in the 2005 Games , most events were held elsewhere . The 1960 ABC Championship and the 1973 ABC Championship , forerunners of the FIBA Asia Championship , was hosted by the complex , with the national basketball team winning on both tournaments . The 1978 FIBA World Championship was held at the complex although the latter stages were held in the Araneta Coliseum in Quezon City , Southeast Asia 's largest indoor arena at that time . + Manila also hosts several well @-@ known sports facilities such as the Enrique M. Razon Sports Center and the University of Santo Tomas Sports Complex , both of which are private venues owned by a university ; collegiate sports are also held , with the University Athletic Association of the Philippines and the National Collegiate Athletic Association basketball games held at Rizal Memorial Coliseum and Ninoy Aquino Stadium , although basketball events had transferred to San Juan 's Filoil Flying V Arena and the Araneta Coliseum in Quezon City . Other collegiate sports are still held at the Rizal Memorial Sports Complex . Professional basketball also used to play at the city , but the Philippine Basketball Association now holds their games at Araneta Coliseum and Cuneta Astrodome at Pasay ; the now defunct Philippine Basketball League played some of their games at the Rizal Memorial Sports Complex . + The Manila Storm are the city 's rugby league team training at Rizal Park ( Luneta Park ) and playing their matches at Southern Plains Field , Calamba , Laguna . + Previously a widely played sport in the city , Manila is now the home of the only sizable baseball stadium in the country , at the Rizal Memorial Baseball Stadium . The stadium hosts games of Baseball Philippines ; Lou Gehrig and Babe Ruth were the first players to score a home run at the stadium at their tour of the country on December 2 , 1934 . + Another popular sport in the city are cue sports , and billiard halls are a feature in most barangays . The 2010 World Cup of Pool was held at Robinsons Place Manila . + The Rizal Memorial Track and Football Stadium hosted the first FIFA World Cup qualifier in decades when the Philippines hosted Sri Lanka in July 2011 . The stadium , which was previously unfit for international matches , had undergone a major renovation program prior to the match . The Football Stadium now regularly hosts matches of the United Football League . The stadium also hosted its first rugby test when it hosted the 2012 Asian Five Nations Division I tournaments . + + = = Government and politics = = + + The government of Manila is divided into three branches : executive , legislative and judiciary . The judicial branch is administered solely by the Supreme Court of the Philippines under the Metro Manila judicial region . The city government have control of the executive and legislative branch . Manila employs 11 @,@ 919 personnel at the end of 2014 . + The current Mayor of Manila is Joseph Estrada , who served as the President of the Philippines from 1998 @-@ 2001 . He is also the head of the executive department of the city . The legislative arm which is composed of six elected city councilors , is headed by the Vice Mayor . Former actor Isko Moreno currently serves as the city 's vice mayor . Altogether they are assisted by the Manila City Council , the local President of the Association of Barangay Captains , and the President of the Sangguniang Kabataan . Their offices are located at the Manila City Hall . + + = = = Finance = = = + + On September 25 , 2014 , the Commission on Audit released its 2013 Annual Financial Report citing the city 's income at ₱ 10 @.@ 1 billion with an asset worth of ₱ 18 @.@ 6 billion . Its local income stood at ₱ 5 @.@ 41 billion and its national government allocation was ₱ 1 @.@ 74 billion , having an annual regular income ( ARI ) of an estimated ₱ 7 @.@ 15 billion . Manila 's net income stood at ₱ 3 @.@ 54 billion in 2014 . + Among the local government units , Manila has the highest budget allocation to health . It was also one of the cities with the highest tax and internal revenue . Tax revenue accounts for 46 % of the city 's income in 2012 . + + = = = Districts and barangays = = = + + Manila has six legislative districts that serve as the constituencies for the election of the city 's representatives to the lower house of the Congress of the Philippines and of the regular members to the Sangguniang Panlungsod ( SP ; City Council ) . Each district elects one representative to the House of Representatives and six SP members to the council . The city , along with the rest of the nation , elects 12 senators as one at @-@ large district . + Manila is politically divided into 896 barangays , the smallest unit of local government in the Philippines . Each barangay has its own chairperson and councilors . For administrative convenience , all the barangays in Manila are grouped into 100 zones . These zones have no form of local government . + The 1st District ( 2015 population : 415 @,@ 906 ) is Manila 's ( and the country 's ) most densely populated congressional district . It covers the western portion of Tondo that lies along Manila Bay . + The 2nd District ( 2015 population : 215 @,@ 457 ) covers the eastern inland portion of Tondo , a neighborhood or sub @-@ district known as Gagalangin . + The 3rd District ( 2015 population : 197 @,@ 242 ) covers Binondo , Quiapo , San Nicolas and Santa Cruz . + The 4th District ( 2015 population : 265 @,@ 046 ) covers Sampaloc . + The 5th District ( 2015 population : 366 @,@ 714 ) covers Ermita , Malate , Port Area , Intramuros , San Andres Bukid , and a portion of Paco ( except Zone 90 ) . + The 6th District ( 2007 population : 295 @,@ 245 ) covers Paco ( Zone 90 only ) , Pandacan , San Miguel , Santa Ana and Santa Mesa . + Manila has the most number of barangays of any city or municipality in the Philippines . Attempts at reducing its number have not prospered despite local legislation — Ordinance 7907 , passed on 23 April 1996 — reducing the number from 897 to 150 by merging existing barangays , because of the failure to hold a plebiscite . + + = = = National government = = = + + Manila , being the seat of political power of the Philippines , has several national government offices headquartered at the city . Planning for the development for being the center of government started during the early years of American colonization to the country when they envisioned a well @-@ designed city outside the walls of Intramuros . The strategic location chosen was Bagumbayan , a former town which is now the Rizal Park to become the center of government and a design commission was given to Daniel Burnham to create a master plan for the city patterned after Washington D.C .. These improvements were eventually abandoned under the Commonwealth Government of Manuel L. Quezon . + A new government center was to be built on the hills northeast of Manila , or what is now Quezon City . Several government agencies have set up their headquarters in Quezon City but several key government offices still reside in Manila . However , many of the plans were substantially altered after the devastation of Manila during World War II and by subsequent administrations . + The city , as the capital , still hosts the Office of the President , as well as the president 's official residence . Aside from these , important institutions such as the Supreme Court , the Court of Appeals , the Bangko Sentral ng Pilipinas , the Departments of Budget and Management , Finance , Health , Justice , Labor and Employment and Public Works and Highways still call the city home . Manila also hosts important national institutions such as the National Library , National Archives , National Museum and the Philippine General Hospital . + Congress previously held office at the Old Congress Building . In 1972 , due to declaration of martial law , Congress was dissolved ; its successor , the unicameral Batasang Pambansa , held office at the new Batasang Pambansa Complex . When a new constitution restored the bicameral Congress , the House of Representatives stayed at the Batasang Pambansa Complex , while the Senate remained at the Old Congress Building . In May 1997 , the Senate transferred to a new building it shares with the Government Service Insurance System at reclaimed land at Pasay . + + = = Infrastructure = = + + + = = = Utilities = = = + + + = = = = Water and electricity = = = = + + Water services used to be provided by the Metropolitan Waterworks and Sewerage System , which served 30 % of the city with most other sewage being directly dumped into storm drains , septic tanks , or open canals . MWSS was privatized in 1997 which split the water concession into the east and west zones . The Maynilad Water Services took over the west zone of which Manila is a part . It now provides the supply and delivery of potable water and sewerage system in Manila , but it does not provide service to the southeastern part of the city which belongs to the east zone that is served by Manila Water . Electric services are provided by Meralco , the sole electric power distributor in Metro Manila . + + = = = Transportation = = = + + One of the more famous modes of transportation in Manila is the jeepney . Patterned after U.S. army jeeps , these have been in use since the years immediately following World War II . The Tamaraw FX , the third generation Toyota Kijang , which competed directly with jeepneys and followed fixed routes for a set price , once plied the streets of Manila . + On a for @-@ hire basis , the city is served by numerous taxicabs , " tricycles " ( motorcycles with sidecars , the Philippine version of the auto rickshaw ) , and " trisikads " or " sikads " ( bicycles with a sidecars , the Philippine version of pedicabs ) . In some areas , especially in Divisoria , motorized pedicabs are popular . Spanish @-@ era horse @-@ drawn calesas are still a popular tourist attraction and mode of transportation in the streets of Binondo and Intramuros . All types of public road transport are privately owned and operated under government franchise . + The city is serviced by the LRT @-@ 1 and LRT @-@ 2 which forms the LRTA system , as distinct from the MRT @-@ 3 which is under the MRTC system that services other parts of Metro Manila . Development of the railway system began in the 1970s under the Marcos administration , making it the first light rail transport in Southeast Asia . These systems are currently undergoing a multibillion @-@ dollar expansion . LRT Line 1 runs along the length of Taft Avenue ( R @-@ 2 ) and Rizal Avenue ( R @-@ 9 ) , and the LRT Line 2 runs along Claro M. Recto Avenue ( C @-@ 1 ) and Ramon Magsaysay Boulevard ( R @-@ 6 ) from Santa Cruz , through Quezon City , up to Santolan in Marikina . + The main terminal of the Philippine National Railways lies within the city . One commuter railway within Metro Manila is in operation . The line runs in a general north @-@ south direction from Tutuban ( Tondo ) toward Laguna . The Port of Manila , located in the vicinity of Manila Bay is the chief seaport of the Philippines . The Pasig River Ferry Service which runs on the Pasig River is another form of transportation . The city is also served by the Ninoy Aquino International Airport and Clark International Airport . + In 2006 , Forbes magazine ranked Manila " the world 's most congested city " . Manila has become notorious for its frequent traffic jams and high densities . The government has undertaken several projects to alleviate the traffic in the city . Some of the projects include : the construction of a new flyover at Sampaloc , the construction of the Metro Manila Skyway Stage 3 , the proposed LRT Line 2 ( west ) extension from Recto to Tondo or the Port Area , and the expansion of several national and local roads . However , such projects have yet to make any meaningful impact , and the traffic jams and congestion continue unabated . The urban planning of the Manila and the whole metropolis was based on the Metro Manila Dream Plan , which seeks to address the problems of Metro Manila 's urban planning and transportation . It consists of a list of short term priority projects and medium to long term infrastructure projects that will last up to 2030 . + + = = Healthcare = = + + The Manila Health Department is responsible for the planning and implementation of the health care programs provided by the city government . It operates 59 health centers and six city @-@ run hospitals , which are free of charge . The six public city @-@ run hospitals are the Ospital ng Maynila Medical Center , Ospital ng Sampaloc , Gat Andres Bonifacio Memorial Medical Center , Ospital ng Tondo , Sta . Ana Hospital , and Justice Jose Abad Santos General Hospital . Manila is also the site of the Philippine General Hospital , the tertiary state @-@ owned hospital administered and operated by the University of the Philippines Manila . + Manila 's healthcare is also provided by private corporations . Private hospitals that operates in the city are the Manila Doctors Hospital , Chinese General Hospital and Medical Center , Dr. José R. Reyes Memorial Medical Center , Metropolitan Medical Center , Our Lady of Lourdes Hospital , and the University of Santo Tomas Hospital . + The Department of Health has its main office in Manila . The national health department also operates the San Lazaro Hospital , a special referral tertiary hospital . Manila is also the home to the headquarters of the World Health Organization Regional Office for the Western Pacific and the World Health Organization Country Office for the Philippines . + + = = Education = = + + The center of education since the colonial period , Manila — particularly Intramuros — is home to several Philippine universities and colleges as well as its oldest ones . It served as the home of the University of Santo Tomas ( 1611 ) , Colegio de San Juan de Letran ( 1620 ) , Ateneo de Manila University ( 1859 ) , Lyceum of the Philippines University and the Mapua Institute of Technology . Only Colegio de San Juan de Letran ( 1620 ) remains at Intramuros ; the University of Santo Tomas transferred to a new campus at Sampaloc in 1927 , and Ateneo left Intramuros for Loyola Heights , Quezon City ( while still retaining " de Manila " in its name ) in 1952 . + The University of the City of Manila ( Pamantasan ng Lungsod ng Maynila ) located at Intramuros , and Universidad de Manila located just outside the walled city , are both owned and operated by the Manila city government . The national government controls the University of the Philippines Manila , the oldest of the University of the Philippines constituent universities and the center of health sciences education in the country . The city is also the site of the Polytechnic University of the Philippines , the largest university in the country in terms of student population . + The University Belt refers to the area where there is a high concentration or a cluster of colleges and universities in the city and it is commonly understood as the one where the San Miguel , Quiapo and Sampaloc districts meet . Generally , it includes the western end of España Boulevard , Nicanor Reyes St. ( formerly Morayta St. ) , the eastern end of Claro M. Recto Avenue ( formerly Azcarraga ) , Legarda Avenue , Mendiola Street , and the different side streets . Each of the colleges and universities found here are at a short walking distance of each other . Another cluster of colleges lies along the southern bank of the Pasig River , mostly at the Intramuros and Ermita districts , and still a smaller cluster is found at the southernmost part of Malate near the border with Pasay such as the private co @-@ educational institution of De La Salle University , the largest of all De La Salle University System of schools . + The Division of the City Schools of Manila , a branch of the Department of Education , refers to the city 's three @-@ tier public education system . It governs the 71 public elementary schools , 32 public high schools . + The city also contains the Manila Science High School , the pilot science high school of the Philippines ; the National Museum , where the Spoliarium of Juan Luna is housed ; the Metropolitan Museum of Manila , a museum of modern and contemporary visual arts ; the Museo Pambata , the Children 's Museum , a place of hands @-@ on discovery and fun learning ; and , the National Library , the repository of the country 's printed and recorded cultural heritage and other literary and information resources . + + = = Global outreach = = + + + = = = Twin towns – Sister cities = = = + + Sister cities of Manila + + = = = = Asia / Pacific Rim = = = = + + + = = = = North America = = = = + + + + = Attalea ( palm ) = + + Attalea is a large genus of palms native to Mexico , the Caribbean , Central and South America . This pinnately leaved , non @-@ spiny genus includes both small palms lacking an aboveground stem and large trees . The genus has a complicated taxonomic history , and has often been split into four or five genera based on differences in the male flowers . Since the genera can only be distinguished on the basis of their male flowers , the existence of intermediate flower types and the existence of hybrids between different genera has been used as an argument for keeping them all in the same genus . This has been supported by a recent molecular phylogeny . + Somewhere between 29 and 67 species are recognised in the genus , with estimates of as many as 100 . Incomplete herbarium collections make it difficult to determine whether certain groups represent single species , or groups of similar species . Attalea species have a long history of human use , and include economically important sources of palm oil and fibre . Many species are fire tolerant and thrive in disturbed habitats . Their seeds are animal dispersed , including some which are thought to have been adapted for dispersal by now @-@ extinct Pleistocene megafauna . + + = = Description = = + + The genus Attalea has pinnately compound leaves — rows of leaflets emerge on either side of the axis of the leaf in a feather @-@ like or fern @-@ like pattern . Species are also non @-@ spiny palms and includes both large trees with stout stems up to 30 metres ( 98 ft ) tall and acaulescent palms ( one which lack an aboveground stem ) . The number of leaves per individual varies from about three to thirty @-@ five ; larger plants tend to have more and longer leaves . + Inflorescences are large , branched and borne among the leaves . The inflorescence consists of a main axis — the peduncle and the rachis — and a series of smaller branches , the rachillae . The rachillae , which bear the flowers , emerge from the rachis . The peduncle is the main stalk , connecting the rachis with the stem . Inflorescences either consist entirely of male flowers , or are predominantly female with a few male flowers . Fruit usually have two or three seeds , although fewer or more are present in some species , and are usually brown , yellow , orange @-@ brown or purple when mature . + Four different types of male flowers exist . On the basis of these flower types , the genus has often been split into four genera — a more narrowly defined Attalea , Orbignya , Maximiliana and Scheelea . The species sometimes referred to Orbignya have coiled anthers , while the other groups have straight ones . The petals of those placed in Maximiliana are much shorter than the stamens , while those placed in Scheelea and a more narrowly defined Attalea have petals that are longer than the stamens . Five species do not fit easily into any of these groups ; this fact has been used as an argument in favour of considering this group a single genus . + + = = Taxonomy = = + + Attalea has been placed in the subfamily Arecoideae , the tribe Cocoseae and the subtribe Attaleinae , together with the genera Allagoptera , Beccariophoenix , Butia , Cocos , Jubaea , Jubaeopsis , Lytocaryum , Parajubaea , Syagrus and Voanioala . Within this subtribe , Attalea has been found to be a monophyletic group , and sister to the clade containing Allagoptera , Polyandrococos , Parajubaea , Butia and Jubaea . + Disagreement exists as to whether Attalea should be considered a single genus , or a group of related genera . In their 1996 Field Guide to the Palms of the Americas , Andrew Henderson , Gloria Galeano and Rodrigo Bernal combined all the species in the subtribe Attaleinae ( as it was then defined ) into a single genus , Attalea . In his 1999 Taxonomic Treatment of Palm Subtribe Attaleinae , American botanist Sidney F. Glassman divided the group into five genera — a more narrowly defined Attalea , Orbignya , Maximiliana , Scheelea and Ynesa . Rafäel Govaerts and John Dransfield recognised a single genus in their 2005 World Checklist of Palms , and Jean @-@ Christophe Pintaud continued this usage in his 2008 review of the genus . + The multi @-@ genus approach is based solely on the structure of the male flowers ; no other characters could be consistently associated with one genus or another . Four of the genera — Attalea ( in a narrow sense ) , Orbignya , Maximiliana and Scheelea — correspond to four different types of male flowers found within the genus . However , a few species have flowers that are intermediate between these four types , including A. colenda ( which Glassman placed in its own genus , Ynesa ) and this has been used as an argument for the single @-@ genus approach . In addition , there are several hybrids between species that would be considered different genera under Glassman 's five @-@ genus system , which has also been used as an argument for placing them in a single genus . In 2009 Alan Meerow and colleagues published a molecular phylogeny of the subtribe which found that some species placed in Orbignya were actually more closely related to species placed in Scheelea than they were to other members of that genus ( if the five @-@ genus approach was used ) , while A. crassispatha , placed in Orbignya by Glassman , was actually a sister to both Scheelea and Orbignya . + + = = = History = = = + + The genus Attalea was first described Carl Sigismund Kunth in 1816 based on specimens collected by Alexander von Humboldt and Aimé Bonpland , although older , pre @-@ Linnaean descriptions exist , including Charles Plumier 's 1703 description of A. crassispatha . The genus was named for Attalus III Philometor , king of Pergamon , known for his interest in medicinal plants . The type species is A. amygdalina , a Colombian endemic . The genera Maximiliana and Orbignya were described by Carl Friedrich Philipp von Martius in 1826 and 1837 respectively . Scheelea was described by Hermann Karsten in 1857 , and Ynesa by Orator F. Cook in 1942 . + + = = = Species = = = + + Experts disagree about the number of species in the genus Attalea ( broadly defined ) . In 1965 , Dutch taxonomist Jan Gerard Wessels Boer estimated that there may be as many as 100 species in the genus . In their 1996 Field Guide to the Palms of the Americas Andrew Henderson and coauthors recognised 29 species in the genus , while Sidney Glassman recognised 65 species in his 1999 treatment of the group . Largely following Glassman 's lead , Rafaël Govaerts and John Dransfield recognised 67 species in their 2005 World Checklist of Palms . An important element of this disagreement is the decision by Glassman to define species more narrowly than Henderson . As a result , what Henderson interpreted as variation within species , Glassman took as differences between morphologically similar species . This problem is complicated by the fact that many of these species are poorly represented in herbarium collections . The large size of the leaves , inflorescences and fruit of many Attalea species makes them difficult to collect . In addition , many important collections , including type specimen , have been lost or destroyed . Sparse or incomplete collections make it difficult to differentiate variation within a single species from variation between different species . + The three recent treatments ( Henderson and coauthors , Glassman , and Govaerts and Dransfield ) recognised a total of 73 species , but only 20 species are accepted by all of them . The remainder account for either nine species or more than 40 . For example , what Andrew Henderson considered a single species , Attalea attaleoides , other authors have considered a species complex consisting of four or five species . Glassman doubted the validity of A. attaleoides as a species , and described four new species from material that had previously been attributed to A. attaleoides — A. camopiensis , A. degranvillei , A. guianensis and A. maripensis . Govaerts and Dransfield accepted both Glassman 's four species and A. attaleoides . However , Jean @-@ Christophe Pintaud was of the opinion that A. guianensis , A. maripensis and A. attaleoides were all very similar , and thought it likely that they all represented the same species . + Another species complex in Attalea includes A. speciosa and related species . Henderson ( 1995 ) recognised A. speciosa and A. spectabilis , considering the latter to either be an acaulescent form of A. speciosa or a hybrid between it and A. microcarpa . Govaerts and Dransfield accepted A. spectabilis , but Glassman considered it a dubious taxon . Attalea vitrivir was recognised as a distinct species by Michael Balick and coauthors ; Glassman and Govaerts and Dransfield concurred , but Henderson considered it part of A. speciosa . Glassman also described a fourth member of this group , A. brejinhoensis , and it is accepted by Govaerts and Dransfield . + + = = Reproduction and growth = = + + Attalea species are monoecious — male and female flowers are separate , but are borne by the same plant . Various species have been described as being insect @-@ pollinated , including A. phalerata , while pollination in A. colenda and A. speciosa , has been attributed both to insects and wind . + Seed germination is remote tubular — during germination , as the cotyledon expands it pushes the young shoot away from the seed . After germination , the stem initially grows downward before turning to grow upward and produce the aboveground stem . This produces a " saxophone shaped " belowground portion of the stem . The fact that the shoot tips of Attalea seedlings are underground it likely to contribute to their fire @-@ tolerance . + + = = Distribution = = + + Species range across the Neotropics from Mexico in the north to Bolivia , Paraguay , and southern Brazil in the south . According to Govaerts and coauthors , three species are found in Mexico , four in Central America , and 62 in South America . Three species are present in the Caribbean — two in Trinidad and Tobago , along the southern edge of the region , and one in Haiti . + + = = Habitat and ecology = = + + Attalea includes both large trees and small acaulescent palms which occupy a number of different ecological niches . Dense stands of some of the larger species are conspicuous elements on the landscape , while smaller species are found in both in the forest understorey and in savannas . + Disturbance has been implicated in the formation of vegetation dominated by large Attalea species . In seasonally dry Amazonian forests the density of large adult A. maripa palms was correlated with canopy openness ; the species also dominates savannas formed by repeated forest fires in Trinidad and Tobago . Attalea speciosa forms pure stands in many parts of Brazil where natural forest vegetation has been cleared . Similarly , stands of A. funifera in Bahia , Brazil ( which are cultivated for piassava fibre ) are managed using fire — the seedlings survive cutting and burning , and are able to dominate burned forest patches . + The fruit are dispersed by animals ; fruit which are not dispersed frequently suffer seed predation by bruchid beetles . Certain species of Attalea have been mentioned as examples of " anachronistic " species which are adapted for dispersal by now @-@ extinct Pleistocene megafauna . On Maracá Island , Roraima , in the Brazilian Amazon , Attalea maripa fruit were consumed by tapirs , collared peccaries , deer and primates . Rodents , including agoutis , fed upon the fruit and , as the fruit availability declined , they fed on the seeds . Other dispersers of Attalea fruit include Crested Caracaras which consume the fruit and disperse the seeds of A. phalerata in the Brazilian Pantanal . + + = = Uses = = + + Attalea species have a long history of human utilisation . Carbonised Attalea maripa seeds have been found in archaeological sites in Colombia dating back to 9000 BP . A variety of species remain important sources of edible oil , thatch , edible seeds and fibre . The leaves of Attalea butyracea and A. maripa are used extensively for thatching . Several species are oil palms , with A. speciosa among the most important economically . Products extracted from A. speciosa were reported to support over 300 @,@ 000 households in the Brazilian state of Maranhão in 2005 , and in 1985 it was estimated to support over 450 @,@ 000 households throughout the Brazil . Piassava fibres , extracted from the leaf bases of A. funifera , are commercially important , and generated about US $ 20 million in annual income to Brazilian farmers in 1996 . + + + = The Heart of Ezra Greer = + + The Heart of Ezra Greer is a 1917 American silent drama film produced by the Thanhouser Company and directed by Emile Chautard . The film focuses on Ezra Greer , a successful middle @-@ aged man who searches for his college age daughter , Mary . The wayward Mary was romanced and abandoned by Jack Denbeigh , later bearing his child . Once Ezra becomes broke he finds employment as the valet for Jack Denbeigh . After Jack 's engagement to a cabaret girl , Mary becomes upset and leaves her child at Jack 's home . Contrary to Jack 's wishes , Ezra keeps the child and Jack ultimately reveals that the child is his own . Ezra convinces Jack to make things right and Ezra convinces the cabaret girl to leave Jack . After a carriage accident in which the baby is injured , Ezra and Jack rush to the hospital and find Mary as a nurse crying over the child . The film ends with the marriage of Jack and Mary . The film was released by Pathé on October 7 , 1917 . The film was the final release from Thanhouser and was deemed to be an average film by most reviewers . Criticism for the film hinged on far @-@ fetched coincidences to drive the plot . The film is presumed lost . + + = = Plot = = + + The film follows Ezra Greer , a middle @-@ aged man who has worked hard since his youth . He cares deeply for his motherless daughter , Mary , but was unable to attend the annual commencement at her co @-@ educational college . He awaits for her to return from college , but Mary leaves with her romantic interest , Jack Denbeigh . On promise of marriage and wealth , Mary is romanced and gives birth to a fatherless child . Without word from his daughter , Ezra resigns from his job and attempts to seek her out and finds a poor motherless child , Marie . With Ezra 's money exhausted he seeks employment and finds it as the valet of Jack . + One day , Mary seeks an announcement of Jack 's engagement to a cabaret girl known as " The Baby Vamp " . Bitter over the prospect of her child 's future , she leaves the child at Jack 's home during his absence with a note . Jack orders Ezra to take the baby to an orphanage , but Marie begs Ezra to keep him . After continually seeing the child , Jack is overcome with remorse and explains to Ezra and seeks his advice . Not knowing he was making the case for his own daughter , Ezra convinces Jack to seek out Mary and forget the Baby Vamp . The Baby Vamp seeks out Jack , but finds Ezra who convinces her to leave Jack . Jack 's son is later injured in a coach accident and is taken to the hospital . Jack and Ezra rush to the hospital and find Mary , as a nurse , crying over the injured child . Ezra is enraged upon learning that his own daughter was mistreated by Jack , but Mary steps between the two men . Jack apologizes and wants to make it right . The film concludes with Jack and Mary . + + = = Cast = = + + Frederick Warde as Ezra Greer + Leila Frost as Mary + George Forth as Jack Denbeigh + Thomas A. Curran as Denbeigh 's guardian + Lillian Mueller as Amy Devers + Carey L. Hastings as Denbeigh 's housekeeper + Helen Badgley as the poor little girl + Gerald Badgley as the millionaire 's baby + W. Ray Johnston + + = = Production = = + + The film was the final production and release of the Thanhouser Company and it was to be released through Pathé . Numerous factors would play into the winding down and eventual closing of the Thanhouser Film Corporation with much advance notice by Edwin Thanhouser . Q. David Bowers writes that it was easy to understand Thanhouser 's decision to retire due to numerous aspects including that releases through Pathé were based on their decision to release or discard the work , the New Rochelle studio was 2 @,@ 500 miles from the center of the trade activity and the slump in industry tied to World War I. Weeks before the film was released , Variety told of the winding down of the Thanhouser with the studio 's staff consisting of Edwin Thanhouser and the bookkeeper , Jessie B. Bishop . The article concluded with the announcement that Lloyd F. Lonergan , the scenario writer of the company , had retired from the company . As it wound down , the Thanhouser Company was announced to have no liabilities would close with a positive bank balance . Little is known of the production of this final film , but it was directed by Emile Chautard from a scenario written by Lloyd F. Lonergan . The cameraman was Jacques Bizeul . + + = = Release and reception = = + + The five reel film was released through the Pathé Exchange as a Pathé Gold Rooster Play on October 7 , 1917 . Charles E. Wagner of the Exhibitor 's Trade Review found it to be a good film with great direction and photography , but was concerned that the stunt in which the baby appeared to be involved in the accident was too real . Wagner stated the film had sufficient action and pathos without sexual suggestiveness ; which should prove a strong program for the Pathé program . Frances Agnew of The Morning Telegraph found it to be an average picture that was not exceptional for audiences , but it would hold sentimental appeal for the average viewer . A reviewer for the The New York Dramatic Mirror found the film 's excessive use of coincidental meetings to be highly improbable , but found Warde 's performance to be excellent and the rest of the cast give good performances . The reviewer said that Emile Chautard had made the improbable story more plausible . + Like many American films of the time , The Heart of Ezra Greer was subject to cuts by city and state film censorship boards . The Chicago Board of Censors required the cutting in Reel 2 of a letter stating , " I cannot face my father , " etc . , and two closeups of gambling scenes ; and in Reel 5 a change of the intertitle " Because it means her whole future " to " Because she is his wife " . + + + = Free Derry = + + Free Derry ( Irish : Saor Dhoire ) was a self @-@ declared autonomous nationalist area of Derry , Northern Ireland , that existed between 1969 and 1972 . Its name was taken from a sign painted on a gable wall in the Bogside in January 1969 which read , " You are now entering Free Derry " . The area , which included the Bogside and Creggan neighbourhoods , was secured by community activists for the first time on 5 January 1969 following an incursion into the Bogside by members of the Royal Ulster Constabulary ( RUC ) . Residents built barricades and carried clubs and similar arms to prevent the RUC from entering . After six days the residents took down the barricades and RUC patrols resumed , but tensions remained high over the following months . + Violence reached a peak on 12 August 1969 , culminating in the Battle of the Bogside — a three @-@ day pitched battle between residents and the RUC . On 14 August units of the British Army were deployed at the edge of the Bogside and the RUC were withdrawn . The Derry Citizens Defence Association ( DCDA ) declared their intention to hold the area against both the RUC and the British Army until their demands were met . The British Army made no attempt to enter the area . The situation continued until October 1969 when , following publication of the Hunt Report , military police were allowed in . + The Irish Republican Army ( IRA ) began to re @-@ arm and recruit after August 1969 . In December 1969 it split into the Official IRA and the Provisional IRA . Both were supported by the people of the Free Derry area . Meanwhile , relations between the British Army and the nationalist community , which were initially good , deteriorated . In July 1971 there was a surge of recruitment into the IRA after two young men were shot and killed by British troops . The government introduced internment on 9 August 1971 , and in response , barricades went up once more in the Bogside and Creggan . This time , Free Derry was a no @-@ go area , defended by armed members of both the Official and Provisional IRA . From within the area they launched attacks on the British Army , and the Provisionals began a bombing campaign in the city centre . As before , unarmed ' auxiliaries ' manned the barricades , and crime was dealt with by a voluntary body known as the Free Derry Police . + Support for the IRA increased further after Bloody Sunday in January 1972 , when thirteen unarmed men and boys were shot dead by the British Army 's Parachute Regiment at a march in the Bogside ( a 14th man was wounded and died 4 ½ months later ) . The support began to wane after the killing by the Official IRA of a local youth who was home on leave from the British Army . After a Provisional IRA ceasefire , during which it entered talks with the British government , broke down , the British took the decision to move against the " no @-@ go " areas . Free Derry came to an end on 31 July 1972 , when thousands of British troops moved in with armoured cars and bulldozers to occupy the area . + + = = Background = = + + Derry City lies near the border between Northern Ireland and the Republic of Ireland . It has a majority nationalist population , and nationalists won a majority of seats in the 1920 local elections . Despite this , the Ulster Unionist Party controlled the local council , Londonderry Corporation , from 1923 onwards . The Unionists maintained their majority , firstly , by manipulating the constituency boundaries ( gerrymandering ) so that the South Ward , with a nationalist majority , returned eight councillors while the much smaller North Ward and Waterside Ward , with unionist majorities , returned twelve councillors between them ; secondly , by allowing only ratepayers to vote in local elections , rather than one man , one vote , so that a higher number of nationalists , who did not own homes , were disenfranchised ; and thirdly , by denying houses to nationalists outside the South Ward constituency . The result was that there were about 2 @,@ 000 nationalist families , and practically no unionists , on the housing waiting list , and that housing in the nationalist area was crowded and of a very poor condition . The South Ward comprised the Bogside , Brandywell , Creggan , Bishop Street and Foyle Road , and it was this area that would become Free Derry . + The Derry Housing Action Committee ( DHAC ) was formed in March 1968 by members of the Derry Branch of the Northern Ireland Labour Party and the James Connolly Republican Club , including Eamonn McCann and Eamon Melaugh . It disrupted a meeting of Londonderry Corporation in March 1968 and in May blocked traffic by placing a caravan that was home to a family of four in the middle of the Lecky Road in the Bogside and staging a sit @-@ down protest at the opening of the second deck of the Craigavon Bridge . After the meeting of Londonderry Corporation was again disrupted in August , Eamon Melaugh telephoned the Northern Ireland Civil Rights Association ( NICRA ) and invited them to hold a march in Derry . The date chosen was 5 October 1968 , an adhoc committee was formed ( although in reality most of the organizing was done by McCann and Melaugh ) and the route was to take the marchers inside the city walls , where nationalists were traditionally not permitted to march . The Minister of Home Affairs , William Craig , made an order on 3 October prohibiting the march on the grounds that the Apprentice Boys of Derry were intending to hold a march on the same day . In the words of Martin Melaugh of CAIN " this particular tactic ... provided the excuse needed to ban the march . " When the marchers attempted to defy the ban on 5 October they were stopped by a Royal Ulster Constabulary ( RUC ) cordon . The police drew their batons and struck marchers , including Stormont MP Eddie McAteer and Westminster MP Gerry Fitt . Subsequently the police " broke ranks and used their batons indiscriminately on people in Duke Street " . Marchers trying to escape met another party of police and " these police also used their batons indiscriminately . " Water cannons were also used . The police action caused outrage in the nationalist area of Derry , and at a meeting four days later the Derry Citizens ' Action Committee ( DCAC ) was formed , with John Hume as chairman and Ivan Cooper as vice @-@ chairman . + + = = The first barricades = = + + Another group formed as a result of the events of 5 October was People 's Democracy , a group of students in Queen 's University Belfast . They organised a march from Belfast to Derry in support of civil rights , starting out with about forty young people on 1 January 1969 . The march met with violent opposition from loyalist counter @-@ demonstrators at several points along the route . Finally , at Burntollet Bridge , five miles outside Derry , they were attacked by a mob of about two hundred wielding clubs — some of them studded with nails — and stones . Half of the attackers were later identified from press photographs as members of the B @-@ Specials . The police , who were at the scene , chatted to the B @-@ Specials as they prepared their ambush , and then failed to protect the marchers , many of whom ran into the river and were pelted with stones from the bank . Dozens of marchers were taken to hospital . The remainder continued on to Derry where they were attacked once more on their way to Craigavon Bridge before they finally reached Guildhall Square , where they held a rally . Rioting broke out after the rally . Police drove rioters into the Bogside , but did not come after them . In the early hours of the following morning , 5 January , members of the RUC charged into St. Columb 's Wells and Lecky Road in the Bogside , breaking windows and beating residents . In his report on the disturbances , Lord Cameron remarked that " for such conduct among members of a disciplined and well @-@ led force there can be no acceptable justification or excuse " and added that " its effect in rousing passions and inspiring hostility towards the police was regrettably great . " + That afternoon over 1 @,@ 500 Bogside residents built barricades , armed themselves with steel bars , wooden clubs and hurleys , and told the police that they would not be allowed into the area . DCAC chairman John Hume told a meeting of residents that they were to defend the area and no @-@ one was to come in . Groups of men wearing armbands patrolled the streets in shifts . John ' Caker ' Casey , a local activist , painted " You are now entering Free Derry " in white paint on the gable wall of a house on the corner of Lecky Road and Fahan Street . That corner , which was a popular venue for meetings , later became known as " Free Derry Corner " . On 7 January , the barricaded area was extended to include the Creggan , another nationalist area on a hill overlooking the Bogside . A clandestine radio station calling itself " Radio Free Derry " began broadcasting to residents , playing rebel songs and encouraging resistance . On a small number of occasions law @-@ breakers attempted crimes , but were dealt with by the patrols . Despite all this , the Irish Times reported that " the infrastructure of revolutionary control in the area has not been developed beyond the maintenance of patrols . " Following some acts of destruction and of violence late in the week , members of the DCAC including Ivan Cooper addressed residents on Friday , 10 January and called on them to dismantle the barricades . The barricades were taken down the following morning . + + = = April 1969 = = + + Over the next three months there were violent clashes , with local youths throwing stones at police . Violence came to a head on Saturday , 19 April after a planned march from Burntollet Bridge to the city centre was banned . A protest in the city centre led to clashes with " Paisleyites " — unionists in sympathy with the anti @-@ civil rights stance of Ian Paisley . Police attempting to drive the protesters back into the Bogside were themselves driven back to their barracks . A series of pitched battles followed , and barricades were built , often under the supervision of Bernadette Devlin , newly elected MP for Mid Ulster . Police pursuing rioters broke into a house in William Street and severely beat the occupant , Samuel Devenny , his family and two friends . Devenny was brought to hospital " bleeding profusely from a number of head wounds . " At midnight four hundred RUC men in full riot gear and carrying riot shields occupied the Bogside . Convoys of police vehicles drove through the area with headlights blazing . + The following day , several thousand residents , led by the DCAC , withdrew to the Creggan and issued an ultimatum to the RUC — withdraw within two hours or be driven out . With fifteen minutes of the two hours remaining , the police marched out through the Butcher 's Gate , even as the residents were entering from the far side . The barricades were not maintained on this occasion , and routine patrols were not prevented . + Samuel Devenny suffered a heart attack four days after his beating . On 17 July he suffered a further heart attack and died . Thousands attended his funeral , and the mood was sufficiently angry that it was clear the annual Apprentice Boys ' parade , scheduled for 12 August , could not take place without causing serious disturbance . + + = = August – October 1969 = = + + The Apprentice Boys ' parade is an annual celebration by unionists of the relief of the Siege of Derry in 1689 , which began when thirteen young apprentice boys shut the city 's gates against the army of King James . At that time the parade was held on 12 August each year . Participants from across Northern Ireland and Britain marched along the city walls above the Bogside , and were often openly hostile to the residents . On 30 July 1969 the Derry Citizens Defence Association ( DCDA ) was formed to try to preserve peace during the period of the parade , and to defend the Bogside and Creggan in the event of an attack . The chairman was Seán Keenan , an Irish Republican Army ( IRA ) veteran ; the vice @-@ chairman was Paddy Doherty , a popular local man sometimes known as " Paddy Bogside " and the secretary was Johnnie White , another leading republican and leader of the James Connolly Republican Club . Street committees were formed under the overall command of the DCDA and barricades were built on the night of 11 August . The parade took place as planned on 12 August . As it passed through Waterloo Place , on the edge of the Bogside , hostilities began between supporters and opponents of the parade . Fighting between the two groups continued for two hours , then the police joined in . They charged up William Street against the Bogsiders , followed by the ' Paisleyites ' . They were met with a hail of stones and petrol bombs . The ensuing battle became known as the Battle of the Bogside . Late in the evening , having been driven back repeatedly , the police fired canisters of CS gas into the crowd . Youths on the roof of a high @-@ rise block of flats on Rossville Street threw petrol bombs down on the police . Walkie @-@ talkies were used to maintain contact between different areas of fighting and DCDA headquarters in Paddy Doherty 's house in Westland Street , and first aid stations were operating , staffed by doctors , nurses and volunteers . Women and girls made milk @-@ bottle crates of petrol bombs for supply to the youths in the front line and " Radio Free Derry " broadcast to the fighters and their families . On the third day of fighting , 14 August , the Northern Ireland Government mobilised the Ulster Special Constabulary ( B @-@ Specials ) , a force greatly feared by nationalists in Derry and elsewhere . Before they engaged , however , British troops were deployed at the scene , carrying automatic rifles and sub @-@ machine guns . The RUC and B @-@ Specials withdrew , and the troops took up positions outside the barricaded area . + A deputation that included Eamonn McCann met senior army officers and told them that the army would not be allowed in until certain demands were met , including the disarming of the RUC , the disbandment of the B @-@ Specials and the abolition of Stormont ( the Parliament and Government of Northern Ireland ) . The officers agreed that neither troops nor police would enter the Bogside and Creggan districts . A ' peace corps ' was formed to maintain law and order . When the British Home Secretary , Jim Callaghan , visited Northern Ireland and announced his intention to visit the Bogside on 28 August , he was told that he would not be allowed to bring either police or soldiers with him . Callaghan agreed . Accompanied by members of the Defence Committee , he was " swept along by a surging crowd of thousands " up Rossvile Street and into Lecky Road , where he " took refuge " in a local house , and later addressed crowds from an upstairs window . In preparation for Callaghan 's visit the " Free Derry " wall was painted white and the " You are now entering Free Derry " sign was professionally re @-@ painted in black lettering . + Following Callaghan 's visit , some barricades were breached , but the majority remained while the people awaited concrete evidence of reform . Still the army made no move to enter the area . Law and order was maintained by a ' peace corps ' — volunteers organised by the DCDA to patrol the streets and man the barricades . There was very little crime . Punishment , in the words of Eamonn McCann , " as often as not consisted of a stern lecture from Seán Keenan on the need for solidarity within the area . " In September the barricades were replaced with a white line painted on the road . + The Hunt Report on the future of policing in Northern Ireland was presented to the Stormont cabinet in early October . Jim Callaghan held talks with the cabinet in Belfast on 10 October , following which the report 's recommendations were accepted and made public . They included the recommendation that the RUC should be ' ordinarily ' unarmed , and that the B @-@ Specials should be phased out and replaced by a new force . The new RUC Chief Constable , Arthur Young , an Englishman , was announced , and travelled to Belfast with Callaghan . The same day , Seán Keenan announced that the DCDA was to be dissolved . On 11 October Callaghan and Young visited Free Derry , and on 12 October the first military police entered the Bogside , on foot and unarmed . + + = = IRA resurgence = = + + The Irish Republican Army ( IRA ) had been inactive militarily since the end of the Border Campaign in 1962 . It was low in both personnel and equipment — Chief of Staff Cathal Goulding told Seán Keenan and Paddy Doherty in August 1969 that he " couldn 't defend the Bogside . I haven 't the men nor the guns to do it . " During the 1960s the leadership of the republican movement had moved to the left . Its focus was on class struggle and its aim was to unite the Irish nationalist and unionist working classes in order to overthrow capitalism , both British and Irish . Republican Clubs were formed in Northern Ireland , where Sinn Féin was proscribed . These clubs were involved in the formation of NICRA in 1967 . In Derry , the James Connolly Republican Club worked closely with Labour Party radicals , with whom they set up the Derry Housing Action Committee and Derry Unemployed Action Committee . The Derry Citizens ' Defence Association was formed initially by republicans , who then invited other nationalists to join . Although there were tensions between the younger leaders like Johnnie White and the older , traditional republicans such as Seán Keenan , both sides saw the unrest of 1968 @-@ 69 as a chance to advance republican aims , and the two shared the platform at the Easter Rising commemoration in April 1969 . + The events of August 1969 in Derry , and more particularly in Belfast where the IRA was unable to prevent loss of life or protect families burned out of their homes , brought to a head the divisions that had already appeared within the movement between the radicals and the traditionalists , and led to a split in December 1969 into the Official IRA and the Provisional IRA . Initially , both armies organised for defensive purposes only , although the Provisionals were planning towards an offensive campaign . In Derry there was far less hostility between the two organisations than elsewhere and householders commonly paid subscriptions to both . When rioters were arrested after the Official 's Easter parade in March 1970 , Officials and Provisionals picketed their trial together . At the start the Officials attracted most of the younger members . Martin McGuinness , who in August 1969 had helped defend the barricades , initially joined the Officials , but a few months later left to join the Provisionals . + Relations between the British Army and the residents had steadily decayed since the first appearance of troops in August 1969 . In September , after clashes between nationalist and unionist crowds that led to the death of a Protestant man , William King , the British Army erected a ' peace ring ' to enclose the nationalist population in the area they had previously controlled . Roads into the city centre were closed at night and people were prevented from walking on certain streets . Although some moderate nationalists accepted this as necessary , there was anger among young people . Clashes between youths and troops became more frequent . The riot following the Officials ' Easter parade in March 1970 marked the first time that the army used ' snatch squads ' , who rushed into the Bogside wielding batons to make arrests . The snatch squads soon became a common feature of army arrest operations . There was also a belief that they were arresting people at random , sometimes days after the alleged offence , and based on the identification of people that they had seen from a considerable distance . The rioters were condemned as hooligans by moderates , who saw the riots as hampering attempts to resolve the situation . The Labour radicals and Official republicans , still working together , tried to turn the youth away from rioting and create socialist organizations — one such organization was named the Young Hooligans Association — but to no avail . The Provisionals , while disapproving of riots , viewed them as the inevitable consequence of British occupation . This philosophy was more attractive to rioters , and some of them joined the Provisional IRA . The deaths of two leading Provisionals in a premature explosion in June 1970 resulted in young militants becoming more prominent in the organization . Nevertheless , up to July 1971 the Provisional IRA remained numerically small . + Two men , Séamas Cusack and Desmond Beattie , were shot dead in separate incidents in the early morning and afternoon of 8 July 1971 . They were the first people to be killed by the British Army in Derry . In both cases the British Army claimed that the men were attacking them with guns or bombs , while eyewitnesses insisted that both were unarmed . The Social Democratic and Labour Party ( SDLP ) , the newly formed party of which John Hume and Ivan Cooper were leading members , withdrew from Stormont in protest , but among residents there was a perception that moderate policies had failed . The result was a surge of support for the IRA . The Provisionals held a meeting the following Sunday at which they called on people to " join the IRA " . Following the meeting , people queued up to join , and there was large @-@ scale rioting . The British Army post at Bligh 's Lane came under sustained attack , and troops there and around the city came under fire from the IRA . + + = = Internment and the third Free Derry = = + + The increasing violence in Derry and elsewhere led to increasing speculation that internment without trial would be introduced in Northern Ireland , and on 9 August 1971 hundreds of republicans and nationalists were arrested in dawn raids . In Derry , residents came out onto the streets to resist the arrests , and fewer people were taken there than elsewhere ; nevertheless leading figures including Seán Keenan and Johnnie White were interned . In response , barricades were erected once again and the third Free Derry came into existence . Unlike its predecessors , this Free Derry was marked by a strong IRA presence , both Official and Provisional . It was defended by armed paramilitaries — a no @-@ go area , one in which British security forces were unable to operate . + Gun attacks on the British Army increased . Six soldiers were wounded in the first day after internment , and shortly afterwards a soldier was killed — the first to be killed by either IRA in Derry . The army moved in in force on 18 August to dismantle the barricades . A gun battle ensued in which a young Provisional IRA officer , Eamonn Lafferty , was killed . A crowd staging a sit @-@ down protest was hosed down and the protesters , including John Hume and Ivan Cooper , arrested . With barricades re @-@ appearing as quickly as they were removed , the army eventually abandoned their attempt . + The Derry Provisionals had little contact with the IRA elsewhere . They had few weapons ( about twenty ) which they used mainly for sniping . At the same time , they launched their bombing campaign in Derry . Unlike in Belfast , they were careful to avoid killing or injuring innocent people . Eamonn McCann wrote that " the Derry Provos , under Martin McGuinness , had managed to bomb the city centre until it looked as if it had been hit from the air without causing any civilian casualties . " + Although both IRAs operated openly , neither was in control of Free Derry . The barricades were manned by unarmed ' auxiliaries ' . Crime was dealt with by a volunteer force called the Free Derry Police , which was headed by Tony O 'Doherty , a Derry footballer and Northern Ireland International . + + = = Bloody Sunday = = + + An anti @-@ internment protest organised by the Northern Ireland Civil Rights Association ( NICRA ) at Magilligan Camp in January 1972 was met with violence from the 1st Battalion , The Parachute Regiment ( 1 Para ) . NICRA had organised a march from the Creggan to Derry city centre , in defiance of a ban , on the following Sunday , 30 January 1972 . Both IRAs were asked , and agreed , to suspend operations on that day to ensure the march passed off peacefully . The British Army erected barricades around the Free Derry area to prevent marchers from reaching the city centre . On the day , march organisers turned the march away from the barriers and up to Free Derry Corner , but some youths proceeded to the barrier at William Street and stoned soldiers . Troops from 1 Para then moved into Free Derry and opened fire , killing thirteen people , all of whom were subsequently found to be unarmed . A fourteenth shooting victim died four months later in June 1972 . Like the killing of Cusack and Beattie the previous year , Bloody Sunday had the effect of hugely increasing recruitment to the IRA , even among people who previously would have been ' moderates ' . + + = = February - July 1972 = = + + Both the Provisional and Official IRA stepped up attacks after Bloody Sunday , with the tacit support of the residents . Local feelings changed , however , with the killing of Ranger William Best by the Official IRA . Best was a 19 @-@ year @-@ old local man who was home on leave from the British Army at his parents ' house in the Creggan . He was abducted , interrogated and shot . The following day 500 women marched to the Republican Club offices in protest . Nine days later , on 29 May , the Official IRA declared a ceasefire . The Provisional IRA initially stated that they would not follow suit , but after informal approaches to the British Government they announced a ceasefire from 26 June . Martin McGuinness was the Derry representative in a party of senior Provisionals who travelled to London for talks with William Whitelaw , the Secretary of State for Northern Ireland . The talks were not resumed after the ending of the truce following a violent confrontation in Belfast when troops prevented Catholic families from taking over houses in the Lenadoon estate . + Political pressure for the action against the " no @-@ go " areas increased after the events of Bloody Friday in Belfast . A British Army attack was considered inevitable , and the IRA took the decision not to resist it . On 31 July 1972 , Operation Motorman was launched when thousands of British troops , equipped with armoured cars and armoured bulldozers ( AVREs ) , dismantled the barricades and occupied the area . + + = = Subsequent history = = + + After Operation Motorman , the British Army controlled the Bogside and Creggan by stationing large numbers of troops within the area , by conducting large @-@ scale ' search ' operations that were in fact undertaken for purposes of intelligence gathering , and by setting up over a dozen covert observation posts . Over the following years IRA violence in the city was contained to the point where it was possible to believe ' the war was over ' in the area , although there were still frequent street riots . Nationalists — even those who did not support the IRA — remained bitterly opposed to the army and to the state . + Many of the residents ' original grievances were addressed with the passing of the Local Government ( Northern Ireland ) Act , 1972 , which redrew the electoral boundaries and introduced universal adult suffrage based on the single transferable vote . Elections were held in May 1973 . Nationalists gained a majority on the council for the first time since 1923 . Since then the area has been extensively redeveloped , with modern housing replacing the old houses and flats . The Free Derry era is commemorated by the Free Derry wall , the murals of the Bogside Artists and the Museum of Free Derry . + + + = Come What ( ever ) May = + + Come What ( ever ) May is the second studio album by American alternative metal band Stone Sour . It was recorded and produced by the band and Nick Raskulinecz at Studio 606 in Los Angeles , California , and was released on August 1 , 2006 , through Roadrunner Records . Writing for the album began as early as 2003 when vocalist Corey Taylor and guitarist James Root were writing material for their other band , Slipknot . In January 2006 Stone Sour began recording the follow @-@ up to their 2002 debut album Stone Sour , during which time drummer Joel Ekman left the band due to family constraints . He was eventually replaced by ex @-@ Soulfly drummer Roy Mayorga who played on all but two tracks on the album . + Following the release of the album , Stone Sour went on to promote it for over a year ; releasing five singles and touring in several regions , including the United States , Canada , Japan and several countries in Europe . The album received generally positive reviews . It was praised for showing a progression in the band 's song writing ability and musical style . It was also certified Gold in the United States and Canada and the single " 30 / 30 @-@ 150 " was nominated for Best Metal Performance at the 49th Grammy Awards . On June 26 , 2007 Stone Sour released a special edition version of the album , it included six previously unreleased tracks and a bonus DVD which featured three music videos and a complete live performance of the band in Moscow . It remains their best @-@ selling album to date , mostly due to the success of the single " Through Glass . " + + = = Production = = + + In September 2005 , lead singer Corey Taylor announced that Stone Sour would return with a second album . He said that they had written over 30 songs , some during the writing process of Vol . 3 : ( The Subliminal Verses ) , the third album by vocalist Taylor and guitarist James Root 's other band Slipknot , and that they were working on demoing the tracks before entering the studio . Dave Fortman was originally slated to produce the album , however , on January 22 , 2006 Stone Sour began working on the album with producer Nick Raskulinecz at Dave Grohl 's personal studio ( Studio 606 ) , in Los Angeles . Time in the studio began with a week of pre @-@ production , during which guitarist Josh Rand says producer Raskulinecz " pushed [ the band ] to the brink and back " to help fine @-@ tune the songs they had previously written . Though Rand and Taylor wrote most of the music and lyrics for the first album , respectively , writing for Come What ( ever ) May was done by all members . + Following this , the band set out to record 18 tracks and work began on recording Joel Ekman 's drum tracks . However , Ekman was forced to leave the studio after four weeks due to his young son 's diagnosis of a brainstem glioma . With the fate of the album in jeopardy , Stone Sour recruited ex @-@ Soulfly member Roy Mayorga as a session drummer . Mayorga recorded drums for all but two tracks on the album , Godsmack drummer Shannon Larkin performed on the track " 30 / 30 @-@ 150 " and guitarist Root performed drums on the bonus track " The Day I Let Go . " In an interview with Revolver during the recording process vocalist Taylor talked about the differences between this album and their previous album , Stone Sour . He said that pressures from fans and the record label were much larger ; also noting that he " thrives on the pressure , because it gets [ him ] going . " While promising that " the album 's gonna be miles above the first one , " Taylor explained that it is " more melodic and darker " . In late March 2006 , drummer Joel Ekman officially left Stone Sour and the band was talking with a few drummers who could replace him . On April 7 , 2006 the recording sessions for Come What ( ever ) May concluded . A month later session drummer Roy Mayorga joined Stone Sour on a full @-@ time basis . + + = = Promotion = = + + It was announced in March 2006 that Stone Sour 's second album , which was tentatively titled " Come What May , " would be released on July 18 , 2006 . However , the release date for the album was pushed back until August 22 . Due to the delay Stone Sour released a music video for the track " Reborn " , which featured footage of the band working on the album in the studio . The cover artwork from the album was released online on May 20 , 2006 . Shortly after , it was confirmed by a representative from the band 's record label Roadrunner that the release date had been brought forward , and the official release date would be August 1 , 2006 . On July 31 , 2006 , the day before its release the album was made available online for streaming in its entirety through AOL . + On May 22 , 2006 the first single from the album , " 30 / 30 @-@ 150 " , was made available online as a free MP3 download . A music video for the single was shot with director P.R. Brown in Los Angeles , the video received a premier on MTV 's Headbangers Ball on June 3 , 2006 . Prior to the release of the second single from the album , " Through Glass " , radio stations throughout the US showed high support for the song . A music video for the single was shot with director Tony Petrossian and was released on June 9 , 2006 online through Yahoo ! . The third single from the album , " Sillyworld " , began receiving radio airplay in November 2006 . A music video for the single was shot in January 2007 and was released online on March 8 , 2007 . The fourth single from the album , " Made of Scars " , featured a music video which was recorded live on April 7 , 2007 and was posted online on June 5 , 2007 . The fifth and final single from the album , " Zzyzx Rd . " , started receiving radio airplay in Fall 2007 and no music video was made for the single . + The band began touring in support of the album prior to its release , initiating touring with several free shows in the US . Followed by multiple appearances at festivals in Europe . They then joined Korn for their 2006 edition of Family Values Tour across the US , which featured 33 dates across 3 months . On August 8 , 2006 Stone Sour made a special guest appearance on The Tonight Show with Jay Leno to promote and perform their second single " Through Glass . " They also performed at the Japanese festival Summer Sonic midway through the Family Values Tour . Then through November and December 2006 , Stone Sour joined Disturbed for their Music as a Weapon Tour . In January 2007 Stone Sour joined Evanescence for a Canadian tour , followed by a headlining tour of Europe . They then headlined the Spring 2007 Jägermeister Music Tour across the US , followed by headlining tours in Australia and Japan . They then started a tour in Europe playing festivals and select headline shows . They wrapped up touring in support of the album with a headlining tour in the US through August and September in 2007 . + + = = = Special edition = = = + + On June 26 , 2007 , Stone Sour released a special edition version of the album with six previously unreleased tracks and a bonus DVD . The DVD featured a full concert performance by the band from October 2006 in Moscow and the music videos for " 30 / 30 @-@ 150 , " " Through Glass , " and " Sillyworld . " When talking about the special edition , vocalist Taylor said , " we really wanted to do something which was really cool , " saying that this shows the band 's different musical elements and them in their live element , which he says " people really gravitate towards . " In addition to this , Stone Sour released a live album of their concert in Moscow exclusively on iTunes , entitled Live in Moscow . + + = = Musical style = = + + In an interview with MTV in 2006 , vocalist Corey Taylor said that Come What ( ever ) May was a return to the roots of the band , stating it is " a lot more from the spirit of what the band started with in 1992 . " Noting how some songs were " very atmospheric , " while others maintained " the hard rock and the heavy stuff . " Jon Wiederhorn of MTV said that " for every thrash riff there 's a tunefully grungy passage , for every flailing guitar line there 's a rock @-@ radio hook . " When talking about the track " 30 / 30 @-@ 150 " , he said parts are " bludgeoning , barbed and heavy , " while others are " soaring and triumphant , " with the production of Raskulinecz helping balance the album 's heaviness with its radio @-@ accessibility . Come What ( ever ) May 's lyrics include themes of " pain , pleasure , happiness , and grief . " The diversity in subjects is evident throughout the album , songs including " Come What ( ever ) May " were politically influenced while the track " Socio " is about " social anxiety attacks " that vocalist Taylor suffered . " Zzyzx Rd " is a love song written to Taylor 's wife for helping him in his struggles against alcoholism and contemplation of suicide . " I 've never written anything like that before , but it was very important for me to tell the world not only how much she saved me , but how much she means to me , " said Taylor . Taylor said there is a common thread with the lyrics throughout the album , saying that they are " about never forgetting where you came from , who you are and why you do this . " + + = = Reception = = + + Come What ( ever ) May was met with generally positive critical reviews . Several reviewers noted on how it helped to further establish Stone Sour . Chad Bower of About.com stated that the band had " progressed a lot since their debut " , noting that the album was " very diverse and [ allows ] the band to show many different sides of their musical personality . " Megan Frye of Allmusic opens her review of the album by distinguishing what sets Stone Sour apart musically , stating " [ it 's their ] ability to create smooth , radio @-@ friendly alternative metal songs while simultaneously not boring the people who have heard way too much from post @-@ grunge groups . " On a similar note , Michael Melchor of 411mania said " the band is much better at the craft of songwriting than many of their peers . " However , in contrast , reviewer William Fry of IGN criticized the album , saying " Stone Sour doesn 't do anything inspired , original , or fresh here " even calling the album " completely misdirected , and stonewalled . " A particular point of interest for reviewers was how Come What ( ever ) May is more melodic than their previous album Stone Sour . Melchor of 411mania said the album is " much more liberal with the balladry and acoustic sounds than its predecessor , " noting on the track " Sillyworld " he said " it sounds like what Nickelback could be if Chad Kroeger could write a good melody " . In his review , Chad Bower labeled Come What ( ever ) May as a " very melodic and accessible album " stating that " it has a little something for everyone . " Similarly , Megan Frye triumphed the album as an " unyielding effort from a promising talent " . + Come What ( ever ) May sold over 80 @,@ 000 copies in its first week and debuted at the fourth spot on the Billboard 200 in the United States , and went on to be certified gold in the UK , Canada and the United States . In 2007 , the single " 30 / 30 @-@ 150 " was nominated for Best Metal Performance at the 49th Grammy Awards . + + = = Track listing = = + + All lyrics written by Corey Taylor , all music composed by Stone Sour . + On the iTunes deluxe version , the pop version of " Zzyzx Rd . " replaced the original version as the 12th track . + + = = = Special edition DVD = = = + + + = = Personnel = = + + + = = Chart positions = = + + + + = Chad at the 2008 Summer Olympics = + + Chad sent a delegation of two athletes to compete at the 2008 Summer Olympics in Beijing , China : Moumi Sébergué , who competed in the men 's 100 meters , and Hinikissia Albertine Ndikert , who competed in the women 's 100 meters and also bore the Chadian flag during ceremonies . The appearance of this delegation marked the tenth appearance of Chad at the Summer Olympics , the first been in 1964 Summer Olympics in Tokyo , Japan , and its seventh appearance since its Olympic hiatus between 1976 and 1980 . Both Sébergué and Ndikert ranked seventh in their respective heats and did not advance past the qualification round . As of the end of the 2012 London Olympics , there have been no medalists from Chad . + + = = Background = = + + Chad is a landlocked country in Africa whose northern region lies within the eastern reaches of the Sahara Desert and whose southern region lies within the eastern portion of the Sahel . It borders Libya to the south , Niger to the east , Sudan to the west , and the Central African Republic to the north . Chad was originally part of French West Africa until 1960 , when it declared independence . Some four years later , the former French colony made its début at the 1964 Summer Olympics in Tokyo , Japan . For the next three decades , Chad became embroiled in civil war and experienced invasions by Libya and upheavals by Sudanese @-@ backed rebels ; the civil war ended in 1990 , although rebel threats had persisted between then and 2008 . During Chad 's greatest era of instability , athletes from the country did not attend the 1976 Summer Olympics in Montréal , Canada or the 1980 Summer Olympics in Moscow , USSR , although delegations were sent to all other games between 1964 and 2008 . + The largest Chadian delegation to reach the Olympics appeared in the 1988 Summer Olympics in Seoul , South Korea and at the 1992 Summer Olympics in Barcelona , Spain ; each time , Chad 's National Olympic Committee sent six athletes . During the 1992 games , the NOC sent the nation 's first female Olympian . Since then ( and up to the Beijing games ) , at least one woman has been a part of the Chadian delegation . The smallest contingency of Chadian Olympians occurred during the 2004 Summer Olympics in Athens , Greece , when only Kaltouma Nadjina competed on the country 's behalf . The delegation that arrived in Beijing consisted of two athletes — one man ( 30 @-@ year @-@ old Moumi Sébergué ) and one woman ( 15 @-@ year @-@ old Hinikissia Albertine Ndikert ) , both participants in track events . Ndikert was Chad 's flagbearer at the ceremonies . Up to and including the Beijing games , there has yet to have been a medalist from Chad . + + = = Athletics = = + + Competitors in athletics events could qualify for the next round of competition in two ways . Qualifying by right was posting a high result in their own heat , and qualifying by result was posting a high result in overall standings . Ranks shown are thus those within each heat , not in overall standings . + Moumi Sébergué represented Chad at the Beijing Olympics in the men 's 100 meters dash . Born in 1977 , Sébergué first participated in the Olympics at age 22 when he raced in the men 's 100 meters at the 2000 Summer Olympics in Sydney , Australia , placing seventh in his qualification heat and not progressing to later rounds . He did not attend the 2004 Summer Olympics in Athens , Greece , but returned to the Olympics at Beijing at the age of 30 . During the course of the August 14 , 2008 races in his event , when the qualification round took place , Sébergué competed in the tenth heat against seven other athletes . He finished the race in 11 @.@ 14 seconds , placing seventh in the heat ahead of Tuvalu 's Okinali Tinilau ( 11 @.@ 48 seconds ) and behind Gabon 's Wilfried Bingangoye ( 10 @.@ 87 seconds ) in a heat led by the Netherlands Antilles ' Churandy Martina ( 10 @.@ 35 seconds ) and Japan 's Naoki Tsukahara ( 10 @.@ 39 seconds ) . Of the 80 athletes who participated in the events , the Chadian sprinter ranked 70th . He did not advance to later rounds . + Hinikissia Albertine Ndikert competed on Chad 's behalf as the national delegation 's only female athlete at the Beijing games . She participated in the women 's 100 meters dash , and was 15 years old at the time of the competition . Ndikert had not previously competed in any Olympic games . During the qualification round of the event , which took place on August 15 , 2008 , Ndikert competed in the eighth heat against seven other athletes . She finished the race in 12 @.@ 55 seconds , placing seventh ; she defeated the Democratic Republic of the Congo 's Franka Magali ( 12 @.@ 57 seconds ) and fell behind Papua New Guinea 's Mae Koime ( 11 @.@ 68 seconds ) in a heat led by Nigeria 's Damola Osayomi ( 11 @.@ 13 seconds ) and the Bahamas ' Debbie Ferguson @-@ McKenzie ( 11 @.@ 17 seconds ) . Of the event 's 85 competitors , Ndikert finished in 64th place . Therefore , Ndikert did not advance to round two and beyond . + Key + Note – Ranks given for track events are within the athlete 's heat only + Q + = Qualified for the next round + q = + Qualified for the next round as a fastest loser or , in field events , by position without achieving the qualifying target + NR + = National record + N / A = + Round not applicable for the event + Bye = Athlete not required to compete in round + + + = View of the World from 9th Avenue = + + View of the World from 9th Avenue ( sometimes A Parochial New Yorker 's View of the World , A New Yorker 's View of the World or simply View of the World ) is a 1976 illustration by Saul Steinberg that served as the cover of the March 29 , 1976 , edition of The New Yorker . The work presents the view from Manhattan of the rest of the world showing Manhattan as the center of the world . + View of the World has been parodied by Ted Rall , Columbia Pictures , The New Yorker , The Economist and Mad Magazine , among others . The work has been imitated and printed without authorization in a variety of ways . The Columbia parody led to a ruling by the United States District Court for the Southern District of New York in Steinberg v. Columbia Pictures Industries , Inc. in favor of Steinberg because of copyright violations by Columbia Pictures . The work is regarded as one of the greatest magazine covers of recent generations and is studied by art students around the world . + + = = Background = = + + Saul Steinberg created 85 covers and 642 internal drawings and illustrations for The New Yorker , including its March 29 , 1976 cover , titled " View of the World from 9th Avenue " . This is regarded as his most famous work . It is considered an example of unintentional fame : Steinberg has noted that the type of fame that resulted from the work has diminished his significance to " the man who did that poster " . The work is sometimes referred to as A Parochial New Yorker 's View of the World or A New Yorker 's View of the World because it depicts a map of the world as seen by self @-@ absorbed New Yorkers . At one point The New Yorker applied for a copyright from the United States Copyright Office for the work . It assigned the copyright to Steinberg and subsequently reproduced posters of the painting . + + = = Detail = = + + The illustration is split in two parts , with the bottom half of the image showing Manhattan 's 9th Avenue , 10th Avenue , and the Hudson River ( appropriately labeled ) , and the top half depicting the rest of the world . It is a westward view over 10th Avenue . The rest of the United States is the size of the three New York City blocks and is drawn as a rectangle bounded by North American neighbors Canada and Mexico , with a thin brown strip along the Hudson representing " Jersey " , the names of five cities ( Los Angeles ; Washington , D.C. ; Las Vegas ; Kansas City ; and Chicago ) and three states ( Texas , Utah , and Nebraska ) scattered among a few rocks for the United States beyond New Jersey , which is in bolder font than the rest of the country beyond the Hudson . Washington , D.C. is depicted as a remote location near Mexico . The Pacific Ocean , slightly wider than the Hudson , separates the United States from three flattened land masses labeled China , Japan and Russia . Notably , the image depicts the world with a back turned to Europe , which is absent from the painting . + The work is composed in ink , pencil , colored pencil , and watercolor on paper and measures 28 by 19 inches ( 71 cm × 48 cm ) . When exhibiting this work along with alternate versions and sketches , the University of Pennsylvania summarized the work as a " bird 's @-@ eye view of the city from Ninth Avenue in a straight line westward , with space becoming ever more condensed ... " They also described the work as a tongue @-@ in @-@ cheek view of the world . New York interpreted the New York @-@ centric mind 's view of the rest of the world as a set of outer boroughs as iconic . National Post journalist Robert Fulford described the perspective as one in which the entire world is a suburb of Manhattan . + + = = Parodies = = + + View of the World has been imitated without authorization in a variety of ways . The work has been imitated in postcard format by numerous municipalities , states and nations . Steinberg had stated that he could have retired on royalties from the many parodies made of the painting , had they been paid , a motivation for his eventual copyright lawsuit for the Moscow on the Hudson use . Fulford , writing in The National Post , noted that the metaphor of the world as a suburb of Manhattan was " understood and borrowed " by the whole world . Local artists , especially poster artists , presented similarly compelling depictions of their own provincial perceptions . Fulford demonstrated the prominence of this work by mentioning that a high school in suburban Ottawa made imitating View of the World an assignment in its graphic arts class . He also noted that the results of this assignment was a worldwide variety of global foci from which the students viewed the world . + The illustration — humorously depicting New Yorkers ' self @-@ image of their place in the world , or perhaps outsiders ' view of New Yorkers ' self @-@ image — inspired many similar works , including the poster for the 1984 film Moscow on the Hudson ; that movie poster led to a lawsuit , Steinberg v. Columbia Pictures Industries , Inc . , 663 F. Supp . 706 ( S.D.N.Y. 1987 ) , which held that Columbia Pictures violated the copyright Steinberg held on his work . + On June 5 , 2003 , during the first term of George W. Bush 's presidency , Ted Rall presented A View of the World from Pennsylvania Avenue as a Parody of View of the World from 9th Avenue in a Universal Press Syndicate editorial cartoon . He replaced the letters representing The New Yorker with The Bushie . + The cover was later satirized by Barry Blitt for the cover of The New Yorker on October 6 , 2008 . The cover featured Sarah Palin looking out of her window seeing only Alaska , with Russia in the far background . + The March 21 , 2009 The Economist included a story entitled " How China sees the World " that presents a parody that is also an homage to the original image , but depicting the viewpoint from Beijing 's Chang 'an Avenue instead of Manhattan . A caption above the illustration reads " Illustration by Jon Berkeley ( with apologies to steinberg and The New Yorker ) " . It accompanied an article that discussed the burgeoning Chinese economy at the time of the contemporary financial crisis . + The October 1 , 2012 cover of Mad Magazine satirized the problems with the September release of Apple Inc . ' s iOS 6 mobile operating system which included Apple Maps , a replacement for Google Maps . The work presents what View of the World might look like if one had relied upon the September 2012 version of Apple Maps to locate various landmarks . + + = = Critical review = = + + On October 17 , 2005 , American Society of Magazine Editors unveiled its list of the top 40 magazine covers of the prior 40 years and ranked View of the World from 9th Avenue in fourth place . The listing stated that the work " ... has come to represent Manhattan 's telescoped perception of the country beyond the Hudson River . The cartoon showed the supposed limited mental geography of Manhattanites . " + + + = Bintulu = + + Bintulu / biːnˈtuːluː / ( Chinese : 民都魯 ; pinyin : Míndūlǔ ; Pe ̍ h @-@ ōe @-@ jī : Bîn @-@ to ͘ -ló ͘ ) is a coastal town on the island of Borneo in the central region of Sarawak , Malaysia . Bintulu is located 610 kilometres ( 380 mi ) northeast of Kuching , 216 kilometres ( 134 mi ) northeast of Sibu , and 200 kilometres ( 120 mi ) southwest of Miri . With a population of 114 @,@ 058 as of 2010 , Bintulu is the capital of the Bintulu District of the Bintulu Division of Sarawak , Malaysia . + The name of Bintulu was derived from the local native language " Mentu Ulau " ( picking heads ) . Bintulu was a small fishing village when Rajah James Brooke acquired it in 1861 . Brooke later built a fort there in 1862 . In 1867 , the first General Council meeting ( now Sarawak State Legislative Assembly ) was convened in Bintulu . It is the earliest state legislature system in Malaysia . The construction of the earliest airstrip in Bintulu began in 1934 but was halted in 1938 due to financial difficulties . During World War II , the airstrip was heavily bombed by Allied forces . The British later rebuilt the airstrip , and it became fully operational in 1955 . The old airport was replaced by a new airport in 2002 . Bintulu remained a fishing village until 1969 when oil and gas reserves were discovered off the coast . Since then , Bintulu has become the centre of energy intensive industries such as a Malaysia LNG plant , a Shell Middle Distillate Synthesis plant , and a Bintulu combined cycle power plant . The economy has also expanded into oil palm and forest plantations , palm oil processing , wood @-@ waste processing , and cement manufacturing . The port of Bintulu is the busiest in Sarawak . The town is also a gateway to Samalajau Industrial Park . + Among the tourist attractions in Bintulu are Similajau National Park , Tumbina Park , Tanjung Batu beach , Jepak village , Kuan Yin Tong temple , Assyakirin mosque , Council Negri monument , Tamu Bintulu , and Pasar Utama markets . The Borneo International Kite Festival is held annually in the town . + + = = Etymology = = + + During the 16th century , Bintulu was named " River de Burulu " by Portuguese cartographers . There are several legends surrounding the name Bintulu . During the Brooke dynasty , the indigenous Iban people practised headhunting to maintain their social status in the community . They threw the heads into the Kemena River , after which the heads had to be collected from the river . The practice of collecting the heads was known as " Mentu Ulau " ( picking heads ) in the local native language . Another story relates that two Iban warriors named Bernik and Jelab built houses along the river . They and their followers frequently carried out preservation of severed heads near a small river stream branching off from Sebezaw River because the river bank was flat and wide . Therefore , the small river stream was named " Mentu Ulau " river . Outsiders who came to Bintulu subsequently pronounced the name as " Mentulau " , and later the name evolved into " Bentulu " and , finally , " Bintulu " . + + = = History = = + + + = = = Brooke dynasty = = = + + James Brooke was appointed the White Rajah of Sarawak ( now known as Kuching ) by the Bruneian Empire in 1841 . In 1861 , the Sultanate of Brunei ceded the Bintulu region to Brooke . Bintulu was a small settlement at that time . A wooden fort named Fort Keppel was built in the village , named after Sir Henry Keppel , who was a close friend of the Rajah James and Charles Brooke . Sir Henry Keppel was responsible for crushing the Dayak piracy in the Saribas between 1840 and 1850 . Meanwhile , Charles Brooke was a nephew of James Brooke and would later become the latter 's successor as the second Rajah of Sarawak . Odoardo Beccari , an Italian botanist , visited Bintulu in 1867 . On 4 August , he started his journey on a gunboat named " Heartsease " , which was to send $ 6 @,@ 000 to Brunei for concessions being made to James Brooke in the Mukah and Bintulu regions . He went to Labuan before coming back to Bintulu . He dropped off at Kemena River on 13 August 1867 . His observations of the village were recorded as follows : + The fort of Bintulu which was built entirely of wood , was in somewhat ruinous condition . It stood nearly on the sea @-@ shore , and just behind it , at a distance of few paces , the primeval forests commenced ... Some chinamen had settled at the vicinity of the fort and had built a small bazaar ; but the village is chiefly formed by the houses of the Melanau beyond the Chinese kampong ( village ) . These Melanaus used to live further up the river , but since the construction of the fort , and the installation of an officer of the Rajah near the mouth of the river , they came to settle near the sea – a thing they would never have dared to do in former days for fear of the attacks of the Lanun pirates and Dayak pirates . + The houses of the Melanau people were built in rows on both sides of the Kemena River , mostly furnished by Nipah and Sago palms . Each house had its own shed projection into the entrance of the river , which was used for the processing of Sago palms . On 8 September 1867 , the first Sarawak General Council meeting ( now Sarawak State Legislative Assembly ) took place here . It was made up of 21 elected local community members ( five British officers and 16 Malay and Melanau local chiefs ) . The Council was formed by Raja Muda Charles Brooke under orders from Rajah James Brooke . The Council is the oldest state legislative assembly in Malaysia . + + = = = Japanese occupation = = = + + During World War II , Rajah Charles Vyner Brooke ordered the construction of airstrips in Kuching , Oya , Mukah , Bintulu , and Miri . Construction of the Bintulu airstrip was started in 1934 under the direction of C. W. Bailey , a Works and Building Inspector for the British Royal Air Force ( RAF ) . All the airstrips were completed except for the Bintulu airstrip , where construction was discontinued in October 1938 due to financial reasons . Japanese forces landed in Miri on 16 December 1941 . Sarawak fell into Japanese hands when they conquered Kuching on 24 December 1941 . When the Japanese invaded Sarawak , Charles Vyner Brooke already left for Sydney ( Australia ) before the attack while his officers were captured by the Japanese and interned at the Batu Lintang camp . During the Japanese occupation , the Japanese used the airstrip for military purposes . However , the airstrip was heavily bombed by Allied forces . The British began reconstruction of the airstrip after the war ; during the project many unexploded bombs were unearthed . + On 5 September 1942 , Japanese Field Marshal Prince Maida ( 前田利为 ) boarded a plane from Kuching to Labuan to officiate an airport that bears his name . However , he never arrived . One month later , the plane was found to have crashed off the coast of Tanjung Datu , Bintulu . The cause of the plane crash was not known . The Japanese later set up a wooden pole memorial made up of Belian wood in Bintulu . The wooden pole was later taken back to Japan by the family of Prince Maida . + Chinese sawmill owners at Sibu and Bintulu were instructed by the Japanese to produce timber for repairs at oil fields and ship building . During the Japanese occupation , sawmills at Bintulu produced a total of 4 @,@ 000 tons of sawn timber . + + = = = Post @-@ war period = = = + + In the 1950s , major economic activities in Bintulu were the timber extraction industry , fishing , and Sago processing . In the 1960s , Bintulu was still a small fishing village , with a population of 5 @,@ 000 . No roads were constructed in Bintulu until 1969 when the first untarred road was built to connect Bintulu to Miri . The first bus that serviced the Miri – Bintulu route was owned by Majlis Amanah Rakyat ( MARA ) . The MARA bus line was an initiative by the Malaysian federal government to provide public transportation for the people . The Iban villagers paid the bus driver with " vegetables , chickens , bamboo shoots , and other items " . Before 1960 , Bintulu was connected to Kuching by sea through a ship named " Swee Joo " . After 1960 , the ship " Chin Chin " was added to the route . It took around 36 to 48 hours to reach Bintulu from Kuching , depending on the sea conditions . Due to lack of food supplies from Kuching , the villagers had to make do with limited food , and several villagers resorted to hunting in the jungles to supplement the food supply . + In 1960 there were only three primary schools in Bintulu . These schools provided classes until Primary 3 level . There were no secondary schools . Villagers could pursue their secondary school studies at either Miri or Kuching by using small boats as there were no roads connecting Bintulu to either Miri or Kuching . Bintulu Government Secondary School was opened in 1964 . In 1967 Bintulu celebrated the first 100 years of the Council Negri meeting ( Sarawak State Legislative Assembly ) . A stone monument was built in front of a government rice storeroom to commemorate the event . Bintulu was a sub @-@ district of Miri Division in the 1970s . The sub @-@ district was upgraded into a district in 1987 . + + = = = Discovery of oil and gas reserves = = = + + Large reserves of natural gas were discovered off the coast of Bintulu in 1969 . Following this , a feasibility study was done in 1975 , and Tanjung Kidurong was found to be a suitable site for a deep @-@ water port . On 14 June 1978 , Malaysia LNG Sdn Bhd ( MLNG Satu ) was established by Petronas , a Malaysian national oil and gas company for Liquefied Natural Gas ( LNG ) processing at Bintulu . On 8 July 1978 , the Bintulu Development Authority ( BDA ) was established by the Sarawak state government for infrastructure development and to promote industrial investment in the area . On 15 August 1981 , the Bintulu Port Authority was established at Tanjung Kidurong , starting operation on 1 January 1983 . Since the establishment of Sarawak Corridor of Renewable Energy ( SCORE ) in 2008 , Bintulu become the gateway to Samalajau Industrial Park , which is located 62 kilometres ( 39 mi ) away from Bintulu . The industrial park is a centre of heavy , energy @-@ intensive industry . Among the companies that started their operations in the industrial park are Tokuyama Malaysia Sdn Bhd , Press Metal Bintulu Sdn Bhd , and OM Materials Sdn Bhd . + Rural – urban migration is significant in Bintulu because of greater job availability in the town . Since 2007 , new residents have started several squatter areas in Bintulu due to inability to find affordable housing , around Kidurong Industrial estate and Sungai Sebatang . To address the issue , several low @-@ cost housing projects were initiated by BDA and Sarawak state government to relocate the squatters . The state government planned to achieve zero squatters status by the year 2020 . Bintulu also saw the rise in the number of residential and commercial properties such as double @-@ storeyed terraced houses , terraced shopoffices , Kidurong Commercial Centre , and Time Square Shopping Mall . Residential properties has shown a 20 % price increase from 2011 to 2013 . + + = = Governance = = + + Bintulu is represented by Bintulu parliamentary seat ( P. 217 ) in the Parliament of Malaysia . The town is also represented by three state assembly seats – Jepak , Kidurong ( later was split by two state assembly namely Tanjung Batu and Samalaju ) , and Kemena – in the Sarawak State Legislative Assembly . + + = = = Local authorities = = = + + Since 1978 the town of Bintulu has been administered by the Bintulu Development Authority ( BDA ) , with offices located along Jalan Tanjung Kidurong . The town is located within the boundary of Bintulu District , with a population of 183 @,@ 402 and a total area of 7 @,@ 220 @.@ 40 square kilometres ( 2 @,@ 787 @.@ 81 sq mi ) . Bintulu Division was formerly a Bintulu District under the jurisdiction of Miri Division . The former Bintulu District was upgraded to Bintulu Division on 1 January 1987 . At the same time , Bintulu sub @-@ district was upgraded to the present @-@ day Bintulu District . Both the Bintulu Resident and District offices are located inside Wisma Residen , Pisang Keling Street , Bintulu . + + = = Geography = = + + Bintulu is located 610 kilometres ( 380 mi ) northeast of Kuching 216 kilometres ( 134 mi ) northeast of Sibu , and 200 kilometres ( 120 mi ) southwest of Miri . Bintulu is located near the mouth of the Kemena River , in the coastal region of central Sarawak . Geology of the coastal area was formed during the Pleistocene period ; silt , clay , and gravel can be found here . Geological formation from the Oligocene period is found in the inland area , which contains limestone , siltstone , and sandstone . The soil is generally soft . + + = = = Climate = = = + + There are two monsoon seasons in the Bintulu : the northeast moonsoon ( November to March ) and the southwest moonsoon ( May to September ) . The calm period between these two moonsoons is known as the transitional period . In the coastal region , maximum rainfall occurs in the month of January , while minimal rainfall occurs from the period June to August . Rainfall is more evenly distributed in the inland areas . The annual rainfall of the Bintulu region is about 3 @,@ 750 mm ( 148 in ) annually . The mean daily hours of sunshine at Bintulu is about 5 @.@ 0 to 5 @.@ 5 hours . Bintulu receives on average 14 to 15 mJ / m2 of radiation throughout the year . Bintulu 's relative humidity is 85 % . + + = = Demographics = = + + The growth of Bintulu 's population is shown below : + The issue of gangsters in Bintulu was first raised in 2007 by the member of parliament ( MP ) for Bintulu . The gangsters may have run businesses related to illegal logging , controlling the prices of diesel , eggs , fertiliser and gas cylinders . Bintulu police have been cracking down on gangster activities in the town . Unscrupulous businessmen who seek cheap labour have caused a rise in the number of illegal immigrants in Bintulu . The number may have reached 50 @,@ 000 in 2009 . Bintulu immigration department has performed several operations to deport illegal immigrants back to their home country . + + = = = Ethnicity = = = + + As of the 2010 Malaysian census , the population of the town of Bintulu is 114 @,@ 058 . Indigenous people accounted for the largest proportion of the town population ( 61 @.@ 2 % , 69 @,@ 782 ) , followed by Chinese ( 25 @.@ 0 % , 28 @,@ 512 ) , Non @-@ Malaysians ( 13 @.@ 1 % , 14 @,@ 939 ) , and Indians ( 0 @.@ 28 % , 319 ) . Among the indigenous groups , there are Iban ( 32 @,@ 992 ) , Malay ( 14 @,@ 945 ) , Melanau ( 14 @,@ 179 ) , Bidayuh ( 1 @,@ 598 ) , and other indigenous tribes ( 6 @,@ 068 ) . According to government sources , there are 229 Iban longhouses in the Bintulu District . The Ibans moved into Kemena and Tatau basins in the mid @-@ 19th and early 20th century with permission of the Brooke government . Other indigenous tribes that form the minority are Kayan , Kenyah , and Punan . The Chinese in Bintulu are mainly composed of dialect groups such as Hakka , Fuzhou , and Teochews . The Chinese have been living in the town of Tatau since the era of Bruneian Empire . Later , Fuzhou Chinese from Sibu moved in , dominating the timber and plantation businesses in Bintulu . There is also a large number of foreigners working there . Most of them come from Britain , Australia , the Netherlands , Germany , South Africa , New Zealand , Japan , China , the United States , and Indonesia . + + = = = Languages = = = + + While Malay is the official language of Sarawak ; English is widely spoken there . Local ethnic languages and Chinese dialects are spoken by the respective ethnic groups . Standard Chinese is also spoken by ethnic Chinese in Bintulu . Bintulu is spoken by communities living along the Kemena River , with 4 @,@ 200 native speakers . These speakers are now recognised as part of the Melanau ethnic group , where their main language is Malay . Bintulu is classified as one of the endangered languages in Sarawak because of the isolated usage of the language in a small community . + + = = = Religion = = = + + The majority of the Bintulu population are adherents of Christian denominations due to Christian missionaries operating during the Brooke dynasty ; followed by Islam , Buddhism , and Hinduism . Among the notable places of worship in Bintulu are the Bintulu Mosque ( Masjid Assyakirin ) , Masjid Jepak , Tua Pek Kong Temple , Eng Kwang Methodist Church , and St. Thomas Church . The respective religious groups are free to hold processions in the town . + + = = Economy = = + + There are five industrial estates in Bintulu . They are : Kemena Industrial Estate ( for wood @-@ based industries ) , Jepak Industries Estate ( wood @-@ based industries ) , Kidurong Industrial Area ( for medium and light industries ) , Kidurong Light Industrial Estate ( medium and light industries ) , and Bintulu Light Industrial Estate ( light industry ) . + + = = = Oil and gas = = = + + Malaysia LNG is a Liquefied Natural Gas ( LNG ) manufacturing complex located in Bintulu that currently contains eight LNG trains with a ninth one currently under construction . The complex was built by the Malaysian national oil and gas company , Petronas . The manufacturing complex has a production capacity of 25 @.@ 7 million tonnes per annum . Petronas is also planning to open Floating LNG ( FLNG ) offshore Bintulu , which is used specifically to harvest natural gas from small and isolated gas fields . Transportation of natural gas from the neighouring state of Kimanis , Sabah , to the LNG complex at Bintulu is facilitated by a 512 @-@ kilometre ( 318 mi ) pipeline known as the " Sabah Sarawak Gas Pipeline " . Currently , 45 % of Malaysian natural gas is found at Central Luconia off the coast of Bintulu . The largest importers of Malaysia LNG productions are Japan ( 62 % ) , Korea ( 17 % ) , Taiwan ( 12 % ) , and China ( 9 % ) . + The Sarawak Shell Bintulu Plant ( SSBP ) , formerly known as Bintulu Crude Oil Terminal ( BCOT ) , was established in 1979 . It consists of three crude oil storage tanks , each with a capacity of 410 @,@ 000 barrels . It has three major areas of operation : Crude Oil Operations , Condensate Stabilisation , and Gas Sales Facilities . Royal Dutch Shell started to establish the world 's first Shell Middle Distillate Synthesis plant ( Shell MDS ) in 1993 . It is also known as Bintulu Gas @-@ To @-@ Liquid plant ( Bintulu GTL ) . The plant has a production capacity of 14 @,@ 770 barrels per day with a total investment of over US $ 1 billion as of the year 2010 . The plant is staffed with 380 people , of whom 93 % are Malaysians , with 80 % of the staff coming from Sarawak . + + = = = Wood @-@ based industries and plantations = = = + + Since the opening up of the Bintulu – Miri road in the 1970s , large @-@ scale plantations of oil palm and cocoa has been developed in rural areas of Bintulu Division . Currently , there are 57 @,@ 740 hectares ( 577 @.@ 4 km2 ( 223 sq mi ) ) of oil palm , 2 @,@ 000 hectares ( 200 km2 ( 77 sq mi ) ) of Rattan , and 815 hectares ( 8 @.@ 15 km2 ( 3 sq mi ) ) of pepper plantations . + The first Bintulu palm oil refinery , Bintulu Edible Oil Sdn Bhd , was established in June 1991 . Bintulu currently has four palm oil refineries : Bintulu Edible Oils Sdn Bhd ( operated under PGEO Group , a subsidiary of Wilmar International ) , Sime Darby Austral Edible Oil Sdn Bhd , Kirana Palm Oil Refinery Sdn Bhd , and Sarawak Oil Palm Bhd . However , as of 2015 , Wilmar no longer buys raw palm oil produced from cleared forests and peat swamps in Sarawak because of environmental concerns . + The Bintulu Division has been designated as a Planted Forests Zone ( PFZ ) by the Sarawak state government since 1998 . As of 30 June 2011 , a total of 124 @,@ 618 hectares ( 1 @,@ 246 @.@ 18 km2 ( 481 sq mi ) ) has been planted with acacia trees . Other trees that are planned for plantations are kelampayan , engkabang , durian , batai , eucalyptus , and rubber trees . Sarawak Planted Forest Sdn Bhd , a company wholly owned by the Sarawak state government , has been granted a license to replant forests for 60 years . However , the company has been suffering financial losses from 2009 to 2011 . + There are three mills in Bintulu that process wood @-@ waste products . Two are Medium @-@ density fibreboard ( MDF ) plants and the third is a charcoal briquette plant , with a total installed capacity of 246 @,@ 000 cubic metres ( 8 @,@ 700 @,@ 000 cu ft ) per year . MDF plants utilise wood waste purchased from sawmills and plywood mills in the Bintulu area and occasionally from the Tanjung Manis timber processing zone located at the mouth of the Rajang River . Synthetic resins , which are required to hold wood dust together , constituted 20 % of the total production cost of the wood panel products . MDF plants in Bintulu are operated by Daiken Sarawak Sdn Bhd , which was founded on 15 February 1994 . The briquette plant is operated by Cipta Briquette Sdn Bhd . A glue / adhesive factory in Bintulu is owned by Bintulu Adhesive & Chemicals Sdn Bhd . It produces urea formaldehyde resin and phenol formaldehyde resin for plywood and chipboard manufacturing at Kemena Industrial Estate . Urea precondensate is also produced to supply ASEAN Bintulu Fertiliser ( ABF ) plant . + + = = = Others = = = + + The Bintulu Port Authority was established in 1981 . It started port operation in 1983 at Tanjung Kidurong . Following a privatisation exercise , Bintulu Port Sdn Bhd ( BPSB ) was founded on 23 December 1992 and commenced operation on 1 January 1993 . BPA is currently responsible for regulatory exercises and security of the port . Meanwhile , BPSB is responsible for cargo handling at the Bintulu International Container Terminal ( BICT ) . The port also provides Vessel traffic service to shipping vessels . The annual total cargo throughput is 45 @.@ 4 million tonnes , consisting of 58 % LNG and 42 % non @-@ LNG products . As of 31 December 2014 , it generated a total revenue of RM 552 @.@ 3 million per year . Bintulu Port is the busiest port in Sarawak . + The ASEAN Bintulu Fertiliser plant is the anhydrous ammonia and granular plant operated by ASEAN Bintulu Fertiliser Sdn Bhd ( ABF ) , which is partly owned by Petronas . The company was formed on 6 December 1980 . The plant started operation on 1 October 1985 . It is also one of the largest granular urea plants in Asia . It is a joint venture by five ASEAN countries : Malaysia ( 63 @.@ 5 % shares ) , Thailand ( 13 % ) , Indonesia ( 13 % ) , the Philippines ( 9 @.@ 5 % ) , and Singapore ( 1 % ) . + Cahya Mata Sarawak Berhad ( CMSB ) , one of the largest publicly traded companies in Sarawak , set up a cement plant in Bintulu at Kidurong Industrial Estate . The plant , manned by 40 people , produces ordinary Portland cement and Portland blast furnace cement . It currently has a combined production capacity of 2 @.@ 75 million MT ( million tonnes ) . + The Bintulu combined cycle power plant was started in early 2010 with a capacity of 317 megawatts . The power plant is registered under the United Nations Clean Development Management ( CDM ) scheme as of 18 September 2010 . The plant is built to ensure efficient use of energy and reduce green house gas emissions . It is the first CDM power plant in Malaysia , currently operated by Sarawak Power Generation Sdn Bhd ( SPG ) , a wholly owned subsidiary of Sarawak Energy . + + = = Transportation = = + + + = = = Land = = = + + All roads in Bintulu are maintained by the Bintulu Development Authority ( BDA ) . Bintulu is connected to Miri and Sibu by the Pan Borneo Highway . Bintulu is also connected to Mukah and Samalaju Industrial Park . Kemena Bridge crosses the Kemena River . It is the second bridge in Malaysia built using the incremental launch method . Keppel Road in Bintulu is named after a friend of James Brooke , Sir Henry Keppel . + + = = = = Public transportation = = = = + + Bintulu has a long @-@ distance bus station , located at Medan Jaya , 5 km ( 3 mi ) northeast of the town centre . Among the areas served by the bus station are : Miri , Sibu , Kuching , Mukah , Sarikei , Oya , Dalat , Balingian , and Pontianak , Indonesia . The bus companies that serve the station are the Syarikat Baram Sdn . Bhd , MTC , Biaramas , and Suria bus lines . There are also buses that serve the town area . Taxi service is also available . + + = = = Air = = = + + The old Bintulu airport was built in 1955 in the town centre . It once held the Guinness World Record of nearest airport to town . On 19 December 2002 , the airport was replaced by a new airport , which is located 23 km ( 14 mi ) away from the town centre . The surroundings of the old airport were developed into commercial and residential projects while the runaway is reserved for Bintulu International Kite Festival . The new airport has a runway measuring 2 @,@ 745 m ( 9 @,@ 006 ft ) , capable of handling planes as large as the Airbus A330 . The airport currently serves three major airlines : Malaysia Airlines ( MAS ) , Air Asia , and MASwings , connecting to domestic destinations such as : Sibu , Miri , Kuching , Kuala Lumpur , and Kota Kinabalu . + + = = = Water = = = + + There is a wharf terminal at Bintulu that serves the rural areas of Bintulu Division . Among the destinations that can be reached by express boat from Bintulu are : Sebauh , Pandan , Labang , Tubau , and Binyo . + + = = Other utilities = = + + + = = = Courts of law and legal enforcement = = = + + The current court complex is located at Pisang Emas Road . It comprises the High Court , the Sessions Court , and the Magistrate Court . Bintulu also has Syariah Subordinate Court , located at Tanjung Kidurong , whose area of jurisdiction covers Bintulu District and Tatau districts . The Bintulu central police station is located at Tun Hussein Onn Road , with other police stations located at Tanjung Kidurong , Tubau , and Sebauh . There is also a central prison in Bintulu , which doubles as a correctional centre . + + = = = Healthcare = = = + + Bintulu Hospital started operation in 1968 . It is located at Nyabau Road , 12 km ( 7 @.@ 5 mi ) from the town centre . Following renovations completed on 21 May 2000 , the hospital is now equipped with 200 beds . As of 2011 , the hospital provides speciality services in seven medical disciplines . Bintulu also has one polyclinic , Polyclinic Bintulu . There are two private hospitals in Bintulu : Columbia Asia Hospital and Bintulu Medical Centre . + + = = = Education = = = + + There are about 50 primary and eight secondary schools in Bintulu . All the schools under the National Education System are managed by the Bintulu District Education Office . The oldest primary schools in Miri are St Anthony 's Primary School ( Roman Catholic Mission School ) , Chung Hua Primary School , and the Orang Kaya Mohammad Primary School , which were established in the early 1960s . The Bintulu Government Secondary School was built in 1964 . It is now known as SMK Bintulu , the oldest secondary school in the town . Bintulu also has one Chinese independent school , Kai Dee Middle School ( 开智中学 ) . The Shell Oil Company established the Kidurong International School in 1982 to meet the primary education needs of Shell employees ' children . The school provides English National Curriculum ( ENC ) for literacy and numeracy and International Primary Curriculum ( IPC ) for other subjects . + UPM Bintulu Sarawak Campus was started as the National Resource Training Centre , Kuching , in 1974 . The oldest campus in Sarawak , it was relocated to Bintulu in 1987 as a branch campus of the Universiti Pertanian Malaysia ( UPM ) . The campus was closed down in 1992 before reopening in 2001 as Universiti Putra Malaysia ( UPM ) . During this period of closure , the campus was used as the site for Maktab Perguruan Sains Bintulu ( Bintulu Science Teachers ' Training College ) from 1994 to July 1999 when it was moved to Kota Samarahan as Institut Pendidikan Guru Kampus Tun Abdul Razak ( Tun Abdul Razak Teachers ' Training Institute Campus ) . The UPM campus is currently located 13 km ( 8 mi ) away from the town centre , occupying 715 ha ( 1 @,@ 767 acres ) , which can accommodate up to 2 @,@ 200 students . This branch campus currently has only one faculty , the Faculty of Agriculture and Food Sciences , consisting of five academic departments . In 2015 UPM was ranked 41st in the UI @-@ Greenmetric World University rankings . SEDAMAI College , established in November 1999 , offers courses in business , information technology , language , and engineering . + There is also a technical school located 15 km ( 9 mi ) away from the town , near Tanjung Kidurong , occupying 20 ha ( 49 acres ) of land . The school was built in 1982 with a maximum capacity of 900 students . Among the courses offered are : automotive , mechanical and civil engineering , commerce , and fashion . Gulf Golden International Flying Academy ( GGIFA ) , the first and only flying academy in Sarawak , was closed in 2012 due to financial difficulties . + + = = = Libraries = = = + + The first public library in Bintulu was built in 1971 by Bintulu District Council ( BDC ) . In 1988 the library was demolished to make way for car parks . Books from the library were moved into the former BDC building . On 29 May 2000 , the Bintulu Development Authority ( BDA ) public library was built near the Bintulu Civic Centre , which is 2 km ( 1 @.@ 2 mi ) from the town . The public library has three branches : at Kidurong , Tatau , and Sebauh . + + = = Culture and leisure = = + + + = = = Attractions and recreational spots = = = + + + = = = = Cultural = = = = + + Kampung Jepak ( Jepak village ) is a Melanau fishing village in Bintulu located near Kemena River . Among the daily activities in this village are Sago processing , fish drying , and the manufacturing of Belacan , Cencaluk ( salted shrimp ) , Terendak ( Melanau headgear ) , and Tutop ( a type of food cover ) . Kuan Yin Tong temple is located at KM2 Jalan Sultan Iskandar . It has a structural design with a rock garden courtyard , man @-@ made waterfall , and dragon fencing . Assyakirin mosque , meaning " Gratefulness to God " , has a man @-@ made waterfall , a fountain , and a landscape planted with flowers . The Borneo International Kite Festival has been held yearly since 2005 at the old Bintulu airport runway . It usually lasts for four to five days in September . + + = = = = Historical = = = = + + In 1987 a clock tower and a fountain were erected at Council Negri Monument . A centenary stone that was erected in 1967 to commemorate the event is kept under the clock tower . The Bintulu Tua Pek Kong temple ( near Tamu Bintulu ) is believed to have been built in the 1890s to purge the town from evil spirits . The temple survived World War II , and was rebuilt after the discovery of oil and gas reserves offshore . + + = = = = Leisure and conservation areas = = = = + + Similajau National Park is located 30 km ( 19 mi ) northeast of the town . The park was gazetted in 1976 , covering an area of 8 @,@ 996 ha ( 22 @,@ 230 acres ) ( 89 @.@ 96 km2 ( 35 sq mi ) with sandy beaches , rocky headlands , jungle streams , and forests . Other national parks that can be accessed along the Miri – Bintulu road are the Lambir Hills National Park and Niah National Park . + Tanjung Batu beach ( Temasya beach ) is located 3 km ( 1 @.@ 9 mi ) from the town centre . Meanwhile , Taman Tumbina ( Tumbina Park ) is located 4 km ( 2 @.@ 5 mi ) from the town centre . The park has a hornbill aviary , a butterfly garden , and a mini @-@ zoo . + + = = = = Other attractions = = = = + + Kidurong Tower is an observation tower located at Tanjung Kidurong . It offers a view of the Bintulu oil and gas facilities shortly after nightfall . Bintulu Promenade is a 3 @-@ kilometre ( 2 mi ) walkway along the Bintulu coastline with the Kemena River mouth as its focal point . It has the observation points offering sunset views . There is also an 18 @-@ hole golf course at Bintulu . + + = = = = Shopping = = = = + + There are several shopping malls in Bintulu : ParkCity Mall , City Point , Ngiu Kee Departmental Stores , Farley shopping complex , Sing Kwong Supermarkets , and MDS @-@ Mart . Time Square Mall is currently under development in Bintulu , with Everrise as the anchor tenant . + Tamu Bintulu and Pasar Utama are the two main markets in the town . Both places have a unique cone @-@ shaped roof that symbolises the traditional Melanau headgear named Terendak . Tamu Bintulu offers items ranging from jungle produce to native home @-@ made specialties such as Belacan . Meanwhile , Pasar Utama houses both wet market and dry market under one roof , providing fresh vegetables , fruits , fish , and dairy products . The first floor of Pasar Utama offers a variety of fast food such as Laksa , Kolok Mee , Jawa Mee , Pulut Panggang , ais batu campur , cendol , and teh tarik . The Bintulu night market is located on Kampung Dagang road . There are over 150 stalls selling a variety of items such as garments , electric goods , vegetables , fruits , food and drinks . + + + = Zrinski Battalion = + + The Zrinski Battalion ( Croatian : Bojna Zrinski ) was a special forces unit of the Croatian National Guard ( Zbor narodne garde – ZNG ) and later of the Croatian Army ( Hrvatska vojska – HV ) established in Kumrovec on 18 May 1991 , during the Croatian War of Independence . The unit drew personnel from the special police forces and a former French Foreign Legion troops serving as its core . The battalion was set up and initially commanded by Ante Roso , while Major Miljenko Filipović took over as the commanding officer in August . + The Zrinski Battalion trained volunteer troops in Vukovar in June 1991 before it saw action in Hrvatska Kostajnica , the Battle of Gospić and near Slano in 1991 . By the end of 1991 , the unit 's personnel were tasked with setting up an additional special forces unit of the HV . The next year its elements took part in the Battle of Kupres and Operation Tiger aimed at lifting the Siege of Dubrovnik . It also and helped develop and train the Croatian Defence Council ( Hrvatsko vijeće obrane – HVO ) , setting up a training camp in Tomislavgrad . In 1993 , the battalion took part in Operation Maslenica . In February 1994 , the Zrinski Battalion was amalgamated with several other HV special forces units into the 1st Croatian Guards Brigade ( 1 @.@ hrvatski gardijski zdrug ) , a component of the 1st Croatian Guards Corps ( 1 @.@ hrvatski gardijski zbor ) . + + = = Background = = + + In 1990 , following the electoral defeat of the government of the Socialist Republic of Croatia , ethnic tensions between Croats and Croatian Serbs worsened . The Yugoslav People 's Army ( Jugoslavenska narodna armija – JNA ) believed Croatia would use the Croatian Territorial Defence Force 's ( Teritorijalna obrana – TO ) equipment to build its own army and confront the JNA itself . In order to minimize the expected resistance , the JNA confiscated the TO weapons . On 17 August , the tensions escalated into an open revolt of the Croatian Serbs . + In the beginning of 1991 , Croatia had no regular army . In an effort to bolster its defence , Croatia doubled the size of its police force to about 20 @,@ 000 . The most effective part of the force was the 3 @,@ 000 @-@ strong special police that were deployed in 12 battalions , adopting military organisation . In addition there were 9 @,@ 000 – 10 @,@ 000 regionally organised reserve police . The reserve police were set up in 16 battalions and 10 companies , but they lacked weapons needed to arm many of the troops . + Preparations to set up the Croatian National Guard ( Zbor narodne garde – ZNG ) began on 12 April 1991 . Establishment of the ZNG as a police force with military capabilities was thought necessary by the Croatian authorities following armed clashes in Pakrac and at Plitvice Lakes in March and due to the possibility of further confrontation with the JNA . The ZNG , formally established on 23 April , was tasked with protection of the constitutional order , maintenance of public order , anti @-@ terrorist operations , protection of Croatia 's borders , territory , coast and territorial waters , as well as the protection of high @-@ value structures and high @-@ profile persons . + + = = Service = = + + On 18 May 1991 , the Zrinski Battalion was established as a special forces unit of the ZNG . The core of the unit consisted of 27 volunteers drawn from the Kumrovec Special Police Unit ( SPU ) . Initially , it relied on former French Foreign Legion troops . The most senior among the former legionnaires was Ante Roso , previously a Sous @-@ Officier ( non @-@ commissioned officer – NCO ) in the 4th Foreign Regiment . In consequence , Roso was tasked with setting up the unit as its initial commander . Major Miljenko Filipović , likewise a former French Foreign Legion member , was assigned the battalions deputy commander . The unit was based in the village of Kumrovec in the region of Hrvatsko Zagorje , on the grounds of the former " Josip Broz Tito " political school . The site , adjacent to the border of Slovenia , was selected to be inaccessible to Yugoslav Air Force raids without violation of Slovene or possibly Austrian airspace . In June 1991 , the Kumrovec SPU was transferred to Sljeme Peak north of Zagreb leaving Kumrovec base to the Zrinski Battalion , as well as the second special forces unit , the Frankopan Battalion . + The Zrinski Battalion was deployed for the first time on 15 June . It was stationed in Vukovar , tasked with preparation of city defences and organisation of volunteer troops . In August , Filipović took over command of the battalion from Roso . The same month , the Zrinski Battalion was deployed to the Banovina , where it pushed the Croatian Serb forces out of the town of Hrvatska Kostajnica . In September , the battalion was deployed to Gospić , where it took part in battle to control Gospić against the JNA . Troops assigned to the battalion captured Kaniža barracks in Gospić . During combat in Gospić , 30 troops of the Zrinski Battalion , assisted by Lučko SPU , captured JNA Major General Trajče Krstevski , along with three armoured personnel carriers ( APCs ) and 32 soldiers . The unit was deployed to Metković on 28 October , tasked with recapturing Slano from the JNA . After the deployment to Gospić , a part of the unit personnel left to Bosnia and Herzegovina anticipating further conflict there , while the remainder of the unit returned to Kumrovec . The ZNG was renamed the Croatian Army ( Hrvatska vojska – HV ) on 3 November 1991 . In late 1991 , personnel of the Zrinski Battalion set up another special forces unit of the HV — the Matija Vlačić Battalion based in Opatija . + In 1992 , elements of the Zrinski Battalion took part in the Battle of Kupres , before setting up a training camp in the town of Tomislavgrad . There the battalion personnel assisted in setting up and trained the Croatian Defence Council ( Hrvatsko vijeće obrane – HVO ) . Later that year , elements of the battalion took part in Operation Tiger — aimed at lifting of the Siege of Dubrovnik . In 1993 , elements of the Zrinski Battalion took part in Operation Maslenica , fighting in the area of Škabrnja . The Central Intelligence Agency assessed the Zrinski Battalion as one of the best units of the HV . + + = = Amalgamation = = + + On 25 February 1994 , the Zrinski Battalion was amalgamated with parts of other special forces units of the HV : Frankopan Battalion , Ban Jelačić Battalion , Matija Vlačić Battalion , Ferdo Sučić Battalion and part of 8th Light Assault Brigade forming the 1st Croatian Guards Brigade ( 1 @.@ hrvatski gardijski zdrug ) , a component of the 1st Croatian Guards Corps ( 1 @.@ hrvatski gardijski zbor ) , directly subordinated to the Ministry of Defence rather than the General Staff of the Armed Forces of the Republic of Croatia . + + + = Weevils Wobble But They Don 't Go Down = + + " Weevils Wobble But They Don 't Go Down " is the nineteenth and penultimate episode of the third season of the American mystery television series Veronica Mars , and the 63rd episode overall . Written by Phil Klemmer and directed by Jason Bloom , the episode premiered on The CW on May 22 , 2007 . The series depicts the adventures of Veronica Mars ( Kristen Bell ) as she deals with life as a college student while moonlighting as a private detective . + In this episode , Weevil ( Francis Capra ) enlists Veronica 's help in proving his innocence when he is implicated in creating fake student IDs . Meanwhile , Veronica and Piz ( Chris Lowell ) come to terms with Veronica 's FBI internship , and a sex tape of this couple is released on the internet . Logan ( Jason Dohring ) beats up Piz , thinking that he posted it . In addition , Keith ( Enrico Colantoni ) and Vinnie ( Ken Marino ) debate on Piz 's radio show about the upcoming Sheriff 's election in which they are running against each other . + " Weevils Wobble But They Don 't Go Down " features the reappearance of Weevil after an absence of five episodes ; during filming of the third season , Capra was undergoing medical treatment . Series creator Rob Thomas pointed out Logan and Piz 's fight scene as one of the highlights of the episode and the season . In its original broadcast , the episode received mostly positive reviews from television critics , with many praising the case @-@ of @-@ the @-@ week . + + = = Synopsis = = + + In a checkout line , Veronica and Mac ( Tina Majorino ) discuss her relationship with Piz and what her FBI internship will mean for them . They then see someone getting arrested by the campus police for a fake debit card . Weevil injures himself , but finds himself unable to receive adequate benefits . Veronica gets Piz to accept her leaving for the internship . At the Sheriff ’ s station , Weevil is called out by several students as being the one who gave them the fake cards . Weevil is put in the jail cell , but he tells Veronica that he think they targeted him after he was showcased in the criminology class . She investigates several of the owners of the student IDs , who do seem genuine in accusing Weevil . Weevil gets bail , but Keith informs him that a student ID printing machine was found in the locker next to Weevil ’ s . Veronica and Wallace speak to a mechanical engineering professor , who says that it would be impossible for Weevil to be the culprit . Piz invites Keith to appear on his show in an election special before Keith informs Veronica that Weevil ’ s fingerprints were found all over the investigation . + Keith and Vinnie debate on Piz ’ s radio show , and Vinnie gathers some support about his lax underage drinking policy . Wallace notices someone following him , and the student wants to recruit him for a secret society . Vinnie insults Keith ’ s handling of his home life , and Veronica hits him on the head lightly . She helps Weevil retrace his steps and notices one of her criminology classmates , Jenny ( Dianna Agron ) , involved with one of Weevil ’ s clients . Veronica deduces that Jenny and her circle of friends are responsible for creating the fake student IDs , disseminating them , and implicating Weevil . Logan and Dick ( Ryan Hansen ) go surfing , and they run into Veronica , Piz , and Mac helping Wallace ( Percy Daggs III ) with his final project for a class . Veronica learns that one of Jenny ’ s group lives in the same town in Georgia where the student ID machines are made . + Veronica is called into a room in the library by Jenny ’ s group , who try to bribe her into not turning them in to the Hearst police . However , she denies and records their conversation as further proof . They are hiding a third ID machine , and Veronica tells Weevil to go and find it . Dick shows Logan a sex tape of Piz and Veronica that has been circulating in an email . Because Logan thinks Piz posted the tape , he attacks Piz and hits him incessantly . Weevil does have a student ID machine , and Logan walks into Mars Investigations with Piz ’ s blood on him . + + = = Production = = + + " Weevils Wobble But They Don 't Go Down " was written by Phil Klemmer and directed by Jason Bloom , marking Klemmer 's fifteenth and final writing credit and Bloom 's fourth and final directing credit for Veronica Mars , after " Green @-@ Eyed Monster " , " Nevermind the Buttocks " , and " Charlie Don 't Surf " . The episode features the final appearance of Dianna Agron , famous for her role as Quinn Fabray on Glee , as Jenny Budosh , Veronica ’ s classmate . Agron had previously appeared in the episode “ President Evil ” . The episode prominently features Weevil ( Francis Capra ) , who appears after a five episode hiatus . During the third season , Capra was struggling with a medical condition , and the medication he took for this illness caused his face and neck to swell and break out with acne . + Series creator Rob Thomas included the scene in which Logan attacks Piz on his list of highlights from the third season . When Thomas first viewed the scene with his wife , she emitted an audible groan when she saw Logan walking through the cafeteria towards Piz , anticipating the fight that was about to come . Thomas thought that most fight scenes on the show were not well @-@ done , as they are filmed quickly and without a second unit . However , he was pleased with the final cut , stating that there was only one punch that he thought looked fake . + + = = Reception = = + + + = = = Ratings = = = + + In its original broadcast , “ Weevils Wobble But They Don ’ t Go Down ” received 1 @.@ 78 million viewers , ranking 77th of 85 in the weekly rankings . This was a decrease from the previous episode , “ I Know What You 'll Do Next Summer ” , which garnered 2 @.@ 10 million watchers . + + = = = Reviews = = = + + Eric Goldman , writing for IGN , graded the episode a 9 @.@ 0 out of 10 , indicating that it was “ amazing ” . His very positive review focused on the ambiguous nature of the main plot and the subplots of Dick and Logan . He praised the presence of the majority of the main cast members , also stating that Dick ’ s reaction to dealing with his brother was realistic for him and in character . The reviewer called the conclusion to the case @-@ of @-@ the @-@ week a “ fun and satisfying one ” that highlighted the moral ambiguity of main characters , something “ that the show had been lacking for a while . ” He highlighted this ambiguity in both Weevil in Logan , elaborating that Logan attacking Piz showed an interesting side to his personality that had not been present all season . The reviewer also lauded the cliffhanger ending , stating , “ it was a reminder of how exciting and intense this show can be at its best . ” Television Without Pity did not grant the episode a rating but lauded the characterization of Weevil , stating , “ This is the most consistently written character on the show , bar none . ” + Kelly West of Cinema Blend focused primarily on the series finale in her review but referred to this episode as containing a solid case @-@ of @-@ the @-@ week . “ Overall it was a good mystery @-@ of @-@ the @-@ week but seeing as it was the second to last episode , the only thing I cared about was that we finally got more Weevil ! ” Rowan Kaiser of The A.V. Club gave the episode a mixed review , stating that the case @-@ of @-@ the @-@ week was an oversimplification of the overall themes of Veronica Mars . The reviewer enjoyed the potential for Logan and Dick ’ s character development , although he felt that it was blunted by the knowledge that the series was about to end . “ As fun as this episode is , the lack of the fourth season stops me from fully enjoying it . [ … ] But the knowledge that this might be the last time we see them puts a damper on things . Still , better to go out with good episodes than bad . ” + + + = Temple Beth Israel ( Eugene , Oregon ) = + + Temple Beth Israel ( Hebrew : בית ישראל ) is a Reconstructionist synagogue located at 1175 East 29th Avenue in Eugene , Oregon . Founded in the early 1930s as a Conservative congregation , Beth Israel was for many decades the only synagogue in Eugene . + The congregation initially worshipped in a converted house on West Eighth Street . It constructed its first building on Portland Street in 1952 , and occupied its current LEED @-@ compliant facilities in 2008 . + In the early 1990s conflict between feminist and traditional members led to the latter leaving Beth Israel , and forming the Orthodox Congregation Ahavas Torah . Beth Israel came under attack from neo @-@ Nazi members of the Volksfront twice , in 1994 and again in 2002 . In both cases the perpetrators were caught and convicted . + Services were lay @-@ led for decades . Marcus Simmons was hired as the congregation 's first rabbi in 1959 , but left in 1961 . After a gap of two years , Louis Neimand became rabbi in 1963 , and served until his death in 1976 . He was followed by Myron Kinberg , who served from 1977 to 1994 , and Kinberg in turn was succeeded by Yitzhak Husbands @-@ Hankin . Maurice Harris joined Husbands @-@ Hankin as associate rabbi in 2003 , and served until 2011 , when he was succeeded by Boris Dolin . As of 2014 , led by Husbands @-@ Hankin and Dolin , Beth Israel had approximately 400 member households , and was the largest synagogue in Eugene . + + = = Early history = = + + Small numbers of German Jews began settling in Eugene in the late 19th century , but most moved on . In the early 20th century the first Eastern European Jews settled there , and by the 1920s Eugene 's Jewish community began gathering prayer quorums for holding Friday night and Jewish holiday services in individuals ' homes . Historian Steven Lowenstein writes that " [ a ] fter Hymen Rubenstein 's death in 1933 , his home at 231 West Eighth Street was remodeled and named Temple Beth Israel " . It was a traditional Conservative synagogue , and from that time until the 1990s it was the only synagogue in Eugene . + In 1952 , the congregation constructed a one @-@ story synagogue building on an almost 1 acre ( 0 @.@ 40 ha ) property at 2550 Portland Street . Designed by architect and Holocaust @-@ survivor Heinrich Hormuth ( H.H. ) Waechter , the building featured an interior courtyard that provided natural lighting , and " a network of ceiling beams painted with symbols and shapes " by Waechter . + Temple Beth Israel 's services and religious functions were lay @-@ led for decades . Its first rabbi was Marcus Simmons . Originally from England , he was a graduate of University of London and Oxford University , and was ordained at the Hebrew Theological Seminary . He emigrated to the United States in 1957 , and joined Beth Israel in 1959 . The members were not , however , agreed that a full @-@ time rabbi was required , and in 1961 , he accepted a rabbinical position in Downey , California . + Following a hiatus of two years , Louis Neimand was hired as rabbi in 1963 . Born in New York City in 1912 to immigrant parents , he was a graduate of City University of New York and was ordained at the Jewish Institute of New York . He had previously worked for the United Jewish Appeal , and from 1959 to 1963 was the first Hillel rabbi at Syracuse University . There was some concern about Neimand 's hiring , as he had a police record as a result of his involvement in freedom marches in the African @-@ American Civil Rights Movement ( 1955 – 1968 ) . He served until his death in 1976 . + + = = Kinberg era = = + + Myron Kinberg was hired as rabbi in 1977 . Ordained in Reform Judaism , he had previously served as a rabbi in Topeka , Kansas for two years , then lived in Israel for two years , before coming to Eugene . Kinberg was known for his support for minority rights and gay rights , anti @-@ nuclear and anti @-@ war activism , support of reconciliation between Israel and the Palestinians , and outreach to non @-@ observant members of Eugene 's Jewish community . + Kinberg attempted to revive the Biblical concept of the " ger toshav " in his approach to intermarriage . He was willing to officiate at an intermarriage if the non @-@ Jewish partner , after discussions with the rabbi , agreed of his or her own free will to fulfill a set of commitments , including " a commitment to a Jewish home life , participation in Jewish life and tradition , and raising future children as Jews " . The non @-@ Jewish partner making this commitment became a " ger toshav " , or " non @-@ Jewish member of the Jewish people " . + Kinberg 's wife Alice was a strong feminist , and during the 1980s he and his wife supported a number of changes to the liturgy and ritual . These included allowing women to read from the Torah and lead the prayers , and changing prayers to be more gender inclusive - for example , using gender @-@ neutral terms and pronouns for God , and adding references to the Biblical matriarchs in prayers like the Amidah , which traditionally only mentioned the Biblical patriarchs . While most congregation members approved of these changes , a minority resisted them . + + = = = Schism = = = + + By the early 1990s serious divisions developed among the members of the congregation over a number of issues , including personal antagonisms , the rabbi 's activism and " advocacy of ' ultra @-@ liberal ' causes " , political differences over the Israeli – Palestinian conflict , and + a myriad of additional Jewish cultural / religious issues , such as the acceptance of intermarried couples , adherence to kosher dietary laws , the use of modern language and music during worship services , rewriting of certain prayers such as the Aleynu to make them less ethnocentric , and so on . + However , the biggest source of division , which underlay all others , was " the roles and rights of men and women in the synagogue . " + In the early 1990s a group of newly observant members began holding more traditional services in a back room of the synagogue , complete with a mechitza , a partition separating men and women . The " more feminist @-@ minded " members strongly objected to having a mechitza anywhere in the Temple Beth Israel building , even if it were not in the services they attended . The latter group eventually circulated a petition which stated that either the mechitza would have to be taken down , or those members who wanted it would have to leave . Kinberg also signed the petition . Faced with this opposition , in 1992 the Orthodox members left , renting new premises and hiring their own rabbi , creating Eugene 's second synagogue , originally called " The Halachic Minyan " , and in 1998 renamed " Congregation Ahavas Torah " . + Kinberg held himself responsible , and the schism led to his " reassessment of the needs of Temple Beth Israel and his role as a rabbi " . As a result , he left Beth Israel in 1994 to lead a synagogue on Long Island . During his tenure at Beth Israel , membership rose from 118 to 350 families . Kinberg died two years later at age 51 . + + = = Husbands @-@ Hankin era = = + + Yitzhak Husbands @-@ Hankin succeeded Kinberg in 1995 . Husbands @-@ Hankin began his involvement at Temple Beth Israel first as a congregant , then as cantor , and then as an assistant rabbi . He was active in forming the Jewish Renewal movement , and was ordained by its leader Zalman Schachter @-@ Shalomi . + The congregation decided to leave the Conservative movement in 1995 , and for a year had no affiliation . In late 1996 , after considering both Reform and Reconstructionist as alternatives , the congregation affiliated with the Reconstructionist movement . By 1999 , membership had grown to around 370 families . + Husbands @-@ Hankin was instrumental in developing the concept of " Ethical Kashrut " , the idea that one should only purchase goods that are produced in an ethical way . His essay , " Ethical Kashrut , " was selected for publication in Arthur Kurzweil 's Best Jewish Writing 2003 . A singer , cello and guitar player , he composes and performs Jewish music . + Husbands @-@ Hankin has had four assistant or associate rabbis working with him . Shoshana Spergel joined Temple Beth Israel in 1998 as interim rabbi when Husbands @-@ Hankins went on a sabbatical ; Jonathan Seidel was assistant rabbi from 2001 to 2003 . Maurice Harris , a 2003 graduate of the Reconstructionist Rabbinical College , joined as assistant rabbi in 2003 . He is one of the signators of The Open Letter Concerning Religion and Science From American Rabbis , part of the Clergy Letter Project which " encourages and embraces the teaching of evolution in schools " . In 2011 , Boris Dolin joined the congregation as its newest associate rabbi . + + = = = Attacks by neo @-@ Nazis = = = + + On March 20 , 1994 , Chris Lord , an individual associated with the Volksfront and American Front , fired ten rounds with an assault rifle into the temple , damaging the interior . The attacks were prompted by a newspaper article about several members of Eugene 's Jewish community , including a lesbian . Community organizations , including a local gay rights group , responded by standing vigil outside the synagogue during Passover services . Lord and an associate were caught and convicted , and Lord was sentenced to four and a half years in prison . + On October 25 , 2002 Jacob Laskey , his brother Gabriel Laskey , Gerald Poundstone , Jesse Baker , and one other man , all members of the Volksfront , drove to Beth Israel with the intent of intimidating the congregants . While a service with 80 members attending was taking place , the men threw rocks etched with Nazi swastikas through the synagogue 's stained glass windows , then sped off . The men were caught , pleaded guilty , and were convicted . They served sentences ranging from a 6 @-@ month work release term and five years probation , to eleven years and three months in federal prison for the ringleader , Jacob Laskey . + + = = = East 29th Avenue building = = = + + Originally sized for 75 families , Temple Beth Israel 's Portland Street building had been renovated and enlarged over the years to 7 @,@ 500 square feet ( 700 m2 ) to accommodate 250 families and 150 students . Despite these additions and the loss of members to Congregation Ahavas Torah , the synagogue was not large enough , particularly during the High Holidays , when extra space had to be rented . In 1997 the congregation purchased the property of the University Street Christian Church for $ 500 @,@ 000 ( today $ 740 @,@ 000 ) , and began planning for a new facility . The members considered renovating the existing building on the property , but felt a new building would better suit their requirements , and razed the church . + In 2003 the congregation got a permit to begin construction of a new facility on the now @-@ vacant 1 @.@ 37 @-@ acre ( 0 @.@ 55 ha ) plot of land at the northwest corner of East 29th Avenue and University Street . An initial capital campaign raised more than $ 1 @.@ 8 million , which fully paid for the land , and by August 2007 an additional $ 1 @.@ 7 million had been raised towards anticipated overall project costs of $ 5 million . + The environmentally sensitive building was designed by Mel Solomon and Associates of Kansas City and local company TBG Architects & Planners , and built by McKenzie Commercial Construction of Eugene . The building used " energy efficient heating , ventilation and lighting " : specific design issues with the building 's energy efficiency included the fact that the largest room in the building , the sanctuary , was also the least @-@ used , and , in accord with Jewish tradition , had to face east ( towards Jerusalem ) . + On June 8 , 2008 the congregation dedicated its new building at 1175 East 29th Avenue . At approximately 25 @,@ 000 square feet ( 2 @,@ 300 m2 ) , the facility included a sanctuary , commercial kitchen , banquet facilities , and classrooms , and housed the synagogue , the Lane County Jewish Federation , and the local Jewish Family Service . The project ended up costing $ 6 million , of which $ 4 million had been raised . + Made of concrete , steel , and wood , the building achieved Leadership in Energy and Environmental Design compliance " through the integration of stormwater management strategies , high efficiency irrigation , the use of recycled and / or recyclable materials , and drought tolerant plantings . " Completely recyclable materials used in the structure included carpeting and wood beams . + + = = Recent events = = + + In 2008 , Temple Beth Israel participated in Banners Across America , an " interfaith witness against torture coordinated by the National Religious Campaign Against Torture , " as part of the Jewish Campaign Against Torture . Organized by Rabbis for Human Rights — North America in honor of Torture Awareness Month , the Jewish campaign included over 25 synagogues which hung banners protesting " the use of abusive interrogation techniques by the American military and intelligence community " . That year , congregational membership reached almost 400 families , and the Talmud Torah and pre @-@ school had about 200 and 40 students respectively . + The congregation sold the old synagogue building on Portland Street to Security First ( Portland Street ) Child Development Center for $ 815 @,@ 000 in 2009 , carrying the Center 's financing . The building was converted for use as an educational center , while retaining some of the original architectural elements . Difficult economic conditions forced the Child Development Center to give up the building in 2011 , and Eugene 's Network Charter School planned to move into it in autumn 2011 . + Harris announced he would be stepping down as rabbi in 2011 , and the synagogue hired Boris Dolin as his successor . Born and raised in Oregon , Dolin had worked at Temple Beth Israel as a teacher and youth group adviser from 1999 to 2001 . A graduate of the University of Oregon , with a master 's degree in Jewish Education from the Jewish Theological Seminary , he was ordained by the Reconstructionist Rabbinical College . + As of 2011 , Temple Beth Israel was the largest synagogue in Eugene . It was a member of the Community of Welcoming Congregations , " an Oregon and SW Washington interfaith ministry and advocacy organization working toward full inclusion and equality for transgender , lesbian , bisexual , gay and questioning persons . " The rabbis were Yitzhak Husbands @-@ Hankin and Boris Dolin . + + + = New York State Route 93 = + + New York State Route 93 ( NY 93 ) is a 43 @.@ 08 @-@ mile ( 69 @.@ 33 km ) state highway in western New York in the United States . The route begins at an intersection with NY 18F in the village of Youngstown and runs in a general northwest – southeast direction across Niagara and Erie counties to its east end at an intersection with NY 5 in the town of Newstead , just south of the village of Akron . NY 93 serves as a connector between several major arterials , including NY 104 in Cambria , NY 31 just west of the city of Lockport , and NY 78 south of the city . + The route was assigned as part of the 1930 renumbering of state highways in New York . Although it began in Youngstown and ended in Newstead as it does today , the initial routing of NY 93 deviated from the modern path in the vicinity of the city of Lockport . From Cambria to Lockport 's eastern suburbs , the highway originally used NY 425 , Lower Mountain Road , Akron Road , and a series of streets in Lockport . NY 93 was moved onto NY 104 and Junction Road in Cambria in the 1940s , and altered to bypass Lockport to the south on a new highway and Robinson and Dysinger roads in 1991 . In 2006 , NY 93 was realigned west of Lockport to continue south on Junction Road to NY 31 . The change removed NY 93 from Upper Mountain Road , a county @-@ owned highway that had been part of the route since the 1930s . + + = = Route description = = + + + = = = West of Lockport = = = + + NY 93 begins at an intersection with NY 18F ( Main Street ; co @-@ designated but not signed as County Route 907 or CR 907 ) in the center of the village of Youngstown . The route proceeds eastward through the village as a two @-@ lane road named Lockport Street , serving two blocks of commercial areas before bending to the northeast and passing into the residential eastern portion of Youngstown . At the eastern village limits , NY 93 briefly widens to four lanes as it enters a partial cloverleaf interchange with the Niagara Scenic Parkway . Past the junction , the highway reverts to a two @-@ lane road and changes names to Youngstown – Lockport Road as it runs across the town of Porter . The residential surroundings continue to the hamlet of Towers Corners , where NY 93 connects to NY 18 ( Creek Road ) . + After NY 18 , NY 93 curves to the southeast , serving another residential stretch ahead of a junction with Youngstown – Wilson Road ( CR 36 ) on the eastern edge of Towers Corners . After this intersection , the homes give way to farms as the road heads into rural areas of the town . The route continues on a southeast track through Porter , passing a mixture of rural and residential areas on its way into the hamlet of Porter Center , where NY 93 enters an intersection with Porter Center Road ( CR 57 ) . Another southeastward stretch brings the route across Twelvemile Creek and into the hamlet of Ransomville , where NY 93 becomes the community 's main street . Through Ransomville , NY 93 retains the Youngstown – Lockport Road name , intersecting with Ransomville Road ( CR 17 ) in the hamlet 's business district . + Just outside Ransomville , NY 93 leaves the town of Porter for the town of Wilson . It continues generally southeastward across mostly open terrain , meeting Randall Road ( CR 83 ) and Church Street ( CR 56 ) on its way to the town of Cambria . NY 93 becomes North Ridge Road at the town line , and it soon enters the hamlet of North Ridge , a community built up around the route 's intersection with NY 425 ( Cambria – Wilson Road ) . The hamlet 's residential surroundings continue to the adjacent community of Molyneaux Corners , where NY 93 becomes concurrent with NY 104 ( Ridge Road ) . NY 93 and NY 104 proceed northeast across lightly populated areas for 2 miles ( 3 @.@ 2 km ) to the hamlet of Warren Corners , at which point NY 93 splits from NY 104 and heads southward along Town Line Road . It immediately intersects with Stone Road ( CR 19 ) before leaving the hamlet . + + = = = Lockport area = = = + + Outside of Warren Corners , the route heads across rural areas along the Cambria – Lockport town line . It soon enters the small hamlet of Hickory Corners , where the road passes under Lower Mountain Road ( CR 902 ) . Access to the highway is made by way of Town Line Road Spur ( CR 114 ) , a connector leading to Lower Mountain Road . NY 93 continues southward along the town line , changing names to Junction Road at an intersection with Upper Mountain Road ( CR 5 ) west of the city of Lockport . From here , the route crosses over CSX Transportation 's Lockport Subdivision rail line at the hamlet of Lockport Junction before intersecting with NY 31 ( Saunders Settlement Road ) and NY 270 ( Campbell Boulevard ) just south of the community . NY 270 begins straight ahead to the south while NY 93 turns northeast onto Saunders Settlement Road , beginning a concurrency with NY 31 . + Now fully in the town of Lockport , NY 31 and NY 93 proceed northeast through an open area of the town as a four @-@ lane divided highway . The two routes continue to the western edge of the city of Lockport , where they intersect with Upper Mountain Road and the Lockport Bypass . The overlap ends here as NY 93 turns southeastward onto the two @-@ lane bypass . Along the bypass , NY 93 briefly enters the city limits as it runs past several industrial facilities and intersects with Hinman Road ( CR 903 ) just ahead of a bridge over the Erie Canal . Past the waterway , the bypass takes a more southerly course through an undeveloped part of the town of Lockport to a junction with Robinson Road ( CR 123 ) on the Lockport – Pendleton town line . The Lockport Bypass ends here , leaving NY 93 to turn eastward onto Robinson Road . + The route initially serves a line of homes as it heads along Robinson Road ; however , it soon enters a commercial district surrounding the road 's intersection with NY 78 ( Transit Road ) . At this point , the Lockport – Pendleton town line turns south to follow NY 78 , leaving NY 93 fully within the town of Lockport as it runs eastward past another stretch of homes . Not far from NY 78 , NY 93 changes names to Dysinger Road at an intersection with Beattie Avenue ( CR 14 ) and Raymond Road ( CR 85 ) . The junction also marks a shift in the road 's surroundings as the homes give way to open , rolling terrain . NY 93 continues eastward for several miles to the town of Royalton , where it meets Riddle Road ( CR 35 ) and Akron Road ( CR 142 ) at adjacent intersections just east of the town line . + + = = = East of Lockport = = = + + NY 93 takes over Akron Road 's name and right @-@ of @-@ way , continuing eastward past a line of scattered homes to reach the sparsely developed hamlet of Dysinger . Here , the route turns southward at a junction with Bunker Hill Road ( CR 136 ) . Outside of Dysinger , NY 93 heads southeastward across undeveloped areas of Royalton , connecting to Block Church Road ( CR 110 ) as it approaches Tonawanda Creek and the Niagara – Erie county line . The road runs along the northern edge of the creek for about 1 @.@ 5 miles ( 2 @.@ 4 km ) prior to curving southward at an intersection with Wolcottsville Road ( CR 122 ) . The turn brings NY 93 across Tonawanda Creek and into the Erie County town of Newstead , where it becomes known as Maple Road and immediately intersects with CR 260 ( Koepsel Road ) . + Continuing southward , NY 93 runs across open , rolling terrain , meeting CR 259 ( Tonawanda Creek Road ) on its way to the hamlet of Swifts Mills . Here , the rural surroundings briefly give way to residential areas as NY 93 intersects with CR 255 ( Swift Mills Road ) in the center of the community . South of Swifts Mills , the road serves only intermittent stretches of homes for 2 miles ( 3 @.@ 2 km ) , including a cluster of residences around its closely spaced intersections with CR 253 ( Carney Road ) and CR 42 ( Rapids Road ) . It continues on a southward track past the eastern terminus of CR 218 ( Hunts Corner – Akron Road ) to the outskirts of the village of Akron , where the highway turns east onto Lewis Road and soon enters the village limits . NY 93 runs past a line of homes before intersecting Cedar Street , a road maintained by Erie County as CR 261 north of the village . + The route turns south at Cedar Street , following the residential street into downtown Akron . Here , NY 93 intersects with CR 573 ( John Street ) at a junction that was once the western terminus of NY 267 . At this intersection , NY 93 heads west on John Street for one block before continuing south on Buffalo Street for another block to Main Street . NY 93 turns westward again , following Main Street through the westernmost part of Akron 's central business district prior to curving southwestward at a junction with Mechanic Street . The highway takes on the Mechanic Street name as it crosses over Murder Creek and leaves downtown Akron . Just south of the creek , NY 93 changes names to Buell Street at an intersection with Jackson Street . + As the route continues southward through the southern part of Akron , it serves mostly residential areas , save for an industrial complex at NY 93 's intersection with CR 163 ( Clarence Center Road ) and CR 167 ( Parkview Drive ) . NY 93 exits Akron a short distance south of the junction , at which point the route heads into another area of open fields while retaining the Buell Street name . It continues on a southward track for about 1 mile ( 1 @.@ 6 km ) to a commercialized intersection with NY 5 ( Main Road ) , where Buell Street and NY 93 both come to an end . + + = = History = = + + + = = = Designation and early changes = = = + + NY 93 was established as part of the 1930 renumbering of state highways in New York , connecting the cities and villages of Youngstown , Lockport , and Akron . While the termini of NY 93 have remained the same to this day , several portions of the route have been realigned since that time . When NY 93 was first assigned , it turned south at the hamlet of North Ridge and overlapped with NY 425 along Cambria – Wilson Road to Lower Mountain Road , then part of NY 3 . NY 425 went west from this junction while NY 93 headed eastward , following NY 3 along Lower Mountain , Gothic Hill , Upper Mountain , and Saunders Settlement roads to the city of Lockport . At Locust Street , NY 93 left NY 3 and exited the city along Locust , High , and Akron streets and Akron Road . It met its current alignment southeast of the city in Royalton . + NY 3 was realigned c . 1932 to follow Saunders Settlement Road between Shawnee Road ( NY 425 ) and Upper Mountain Road . The former routing of NY 3 along Shawnee , Lower Mountain , Gothic Hill , and Upper Mountain roads was redesignated as NY 3A even though all of NY 3 's former routing was already part of either NY 425 or NY 93 . The NY 3A designation was eliminated c . 1935 when NY 3 was truncated eastward to a new western terminus in central New York . In the early 1940s , NY 93 was altered to follow North Ridge Road , U.S. Route 104 ( now NY 104 ) , and Junction Road between North Ridge and Lower Mountain Road . + Around the same time that NY 93 was rerouted , NY 270 was also extended northward along Junction Road from NY 31 to US 104 . As a result , NY 93 overlapped NY 270 between Lower Mountain Road and US 104 . The overlap with NY 270 remained in place until c . 1963 when NY 270 was truncated southward to the intersection of Lower Mountain and Junction roads . NY 93 was realigned in the late 1970s to bypass Lower Mountain and Gothic Hill Roads on Junction and Upper Mountain roads , replacing NY 270 along Junction Road . The Lower Mountain Road portion of NY 93 's former routing is now maintained by Niagara County as County Route 902 ( CR 902 ) . + + = = = Lockport realignments = = = + + The Lockport Bypass , a highway bypassing downtown Lockport to the southwest , was opened to traffic on July 26 , 1991 . The highway cost $ 7 @.@ 7 million ( equivalent to $ 13 @.@ 4 million in 2016 ) to construct and extended from the junction of NY 31 and NY 93 west of the city to Robinson Road south of downtown . NY 93 was realigned to follow the new bypass south to Robinson Road , where it turned east and followed Robinson Road ( CR 123 ) and Dysinger Road ( CR 133 ) to Akron Road in Royalton . The portion of Akron Road ( NY 93 's former routing ) east of the Lockport city limits became NY 954M , an unsigned reference route . + Ownership and maintenance of Robinson Road from the bypass to NY 78 was transferred from Niagara County to the state of New York on September 1 , 1990 , as part of a highway maintenance swap between the two levels of government . The portion of NY 93 between NY 78 and Akron Road became state @-@ maintained on October 1 , 1998 , as part of another swap that also transferred ownership and maintenance of Akron Road to Niagara County . Akron Road is now CR 142 . + On November 1 , 2005 , the Niagara County Legislature voted on a measure to allow the county to ask the New York State Department of Transportation ( NYSDOT ) to remove the NY 93 designation from Upper Mountain Road , a county @-@ maintained highway , and reassign it to Junction Road ( NY 270 ) and Saunders Settlement Road ( NY 31 ) . The impetus for the change came from a resident of Upper Mountain Road , who demanded that trucks should be removed from the roadway . This part of the agenda was passed . NYSDOT obliged to the request in 2006 , rerouting NY 93 as proposed and truncating NY 270 southward to NY 31 . + + = = Major intersections = = + + + + = Operation USA = + + Operation USA ( OpUSA , Operation California , or OpCal ) is a non profit humanitarian organization dedicated to helping communities alleviate the effects of disaster , disease , and endemic poverty throughout the world by providing privately funded relief , reconstruction , humanitarian aid and development aid . It is exclusively privately funded , receiving no assistance from the United States Federal Government . OPUSA had a revenue of over $ 22 million in fiscal year 2012 and has shipped over $ 425 million worth of " high @-@ priority medical , nutritional and shelter supplies " since its inception , including shipments to Haiti , Japan , Chile , Kenya and Pakistan in 2011 and 2011 . + + = = Awards and affiliations = = + + Operation USA was part of the International Campaign to Ban Landmines in 1997 when it won the Nobel Peace Prize . Operation California was also the winner of the 1983 President 's Volunteer Action Award . Operation USA has been named one of America 's Best 100 Charities by Worth Magazine and , in October 2008 , was named the top @-@ rated " exclusively privately funded charity in the U.S. " by Charity Navigator . Operation USA collaborated with NASA 's Jet Propulsion Laboratory and the US National Laboratories at Lawrence Livermore and Los Alamos to develop new approaches to land mine detection , is a member of InterAction , and is an AlertNet news partner . In 2014 Operation USA 's CEO Richard M. Walden received the Honeywell Hometown Hero Award from the Honeywell Corp. + + = = History = = + + Operation California began in 1979 as " a relief organization created to provide aid to Vietnamese Boat People and Cambodian refugees " , founded by Richard Walden ( still active as President & CEO ) and Llewellyn Werner ( who left in early 1980 ) . The organization flew " the first international relief airlift to Cambodia since 1975 " , delivering medicine to Phnom @-@ Penh . Operation California had airlifted more than $ 3 million worth of aid by October 1979 . + Since then , Operation USA has become a highly acclaimed aid organization that is involved in helping people in different ways around the world . In 1982 , Operation California sent " the first private airlift from the U.S. to Poland " , delivering 200 @,@ 000 lbs. of medical supplies and medicine ; that year Operation California also airlifted medical supplies to Lebanon . In 1983 , Operation California delivered aid to the children of Vietnam and Cambodia . Operation California provided aid to the earthquake victims in Mexico City in 1985 , as well as working in cooperation with the Unitarian Universalist Service Committee and Oxfam America , to deliver $ 250 @,@ 000 worth of medical aid to Nicaragua . In 1986 Operation California , in conjunction with Medical Aid to El Salvador , sent " [ t ] wo cargo planes carrying $ 500 @,@ 000 worth of relief supplies to earthquake @-@ stricken El Salvador " . + In 1988 , Operation California began using the name Operation USA because it better described the effort and intent of the organization to represent the entire American people . In 1989 Operation USA facilitated operations on children in Vietnam who had cleft palates by a Los Angeles @-@ based plastic surgeon , Dr Stanley Frileck . Medical aid effort was delivered to Mexico in 1990 , by OPUSA in conjunction with USSR relief workers . In 1991 OPUSA delivered aid to Bangladesh . OpUSA delivered aid to war torn Somali 's in 1993 . In 1994 OpUSA provided earthquake relief . In 1995 the organization provided aid to Hurricane Mitch survivors in Honduras and Nicaragua . In 1999 OpUSA supplied aid to storm victims in Mexico . In 2003 OpUSA delivered aid to Iraq War victims in the Persian Gulf . The tsunami victims in Sri Lanka and Indonesia were aided by OpUSA in 2004 , as well as the Mexico City Flood victims . + In 2008 , OpUSA has delivered aid to Myanmar cyclone victims as well as Chinese earthquake victims and flood victims in the Midwest , USA . + In 2015 , OpUsa partners with UniversalGiving to raise fund for its project , which is to deliver recovery aid to Nepal Earthquake victims . + + = = Celebrity affiliates = = + + Operation USA , since the early 1980s , has relied on fundraising efforts featuring singers and celebrities . These include concerts , dinners , and other events . These promotions have featured : + Barbra Streisand + Bonnie Raitt + Carol Burnett + Crosby , Stills & Nash + Don Henley + Ed Asner + Frank Sinatra + Jack Elliot + Jackson Browne + James Garner + John Denver + Julie Andrews + Kirk Douglas + Michael Jackson + New American Orchestra + Plácido Domingo + Ricardo Montalban + Ry Cooder + Sharon Stone + The Buena Vista Social Club + Tony Adams + Rosario Dawson travelled with Operation USA to Nicaragua in 2008 . George Hamilton assisted with relief to The Philippines Typhoon Haiyan in 2013 as did Barbra Streisand , Rosario Dawson , Jackson Browne , Bill Maher and Judd Apatow . + + = = Film and theater projects = = + + Operation USA also relies on film and theater promotions to generate funds that pay for aid , including : + Because We Care ( CBS Television Special ) + Beyond Borders ( Hollywood ) + Buena Vista Social Club ( film ) ( Hollywood & Havana ) + Fidel ( film ) ( Hollywood for Showtime ) + Mary Poppins ( musical ) ( London stage ) + Miss Saigon ( Hollywood ) + Roll Bounce + The Killing Fields ( film ) ( Hollywood & Cambodia ) + Victor / Victoria ( Broadway ) + Eloise at The Plaza ( Disney TV ) + + + = Typhoon Krosa ( 2013 ) = + + Typhoon Krosa , known in the Philippines as Typhoon Vinta , was a typhoon that made landfall in the northern Philippines in late October 2013 . Forming on October 27 near Guam , the storm slowly intensified while moving westward . Krosa developed an eye and became a typhoon before striking Luzon on October 31 . The storm weakened over land , but re @-@ intensified over the South China Sea , reaching peak winds of 150 km / h ( 90 mph ) on November 2 off the southeast coast of China . Typhoon Krosa stalled and encountered unfavorable conditions , resulting in quick weakening . By November 3 , it had weakened to tropical storm status , and was no longer being warned on by the next day . In northern Luzon , Krosa damaged 32 @,@ 000 houses , including 3 @,@ 000 that were destroyed , and caused four fatalities . High winds and rainfall left P277 million ( PHP , $ 6 @.@ 4 million USD ) in damage . + + = = Meteorological history = = + + On October 27 , an area of convection with a broad circulation persisted southeast of Guam , and slowly consolidated due to moderate wind shear and westerly outflow . That day , the Japan Meteorological Agency ( JMA ) classified the system as a tropical depression about 380 km ( 235 mi ) to the southeast of Hagåtña , Guam . At 2100 UTC on October 28 , the Philippine Atmospheric , Geophysical and Astronomical Services Administration ( PAGASA ) began issuing advisories on the depression , giving it the local name Vinta . The next day , the JMA upgraded the depression to Tropical Storm Krosa ( 1329 ) , and the Joint Typhoon Warning Center ( JTWC ) also classified it as Tropical Depression 29W . By that time , the storm was moving steadily westward due to the subtropical ridge to the north . With the warm waters of the Philippine Sea , lessening wind shear , and improving outflow , Krosa gradually strengthened , and the JTWC also upgraded Krosa to tropical storm status on October 30 after an eye feature developed . + While approaching northern Luzon on October 29 , Krosa quickly intensified as the initial eye feature organized into a well @-@ defined eye . Late on October 30 , the JTWC upgraded Krosa to typhoon status , and the next day , both PAGASA and JMA followed suit . On October 31 , Krosa made landfall in northeastern Luzon near Cagayan , and developed a symmetric eyewall while initially moving over land . Land interaction weakened the eye by the time Krosa emerged into the South China Sea late on October 31 . The next day , PAGASA discontinued advisories after the typhoon exited the region . Convection rebuilt around the center , with continued favorable conditions allowing for restrengthening . + Late on November 1 , a large eye redeveloped , and the JTWC estimated Krosa attained peak 1 minute sustained winds of 185 km / h ( 115 mph ) . Early the next day , the JMA also estimated the typhoon reached peak 10 minute winds of 140 km / h ( 85 mph ) . Later , increasing wind shear caused the eye to deteriorate , and Krosa began slowing about 260 km ( 160 mi ) east @-@ southeast of Hong Kong after reaching the western edge of the subtropical ridge . After remaining nearly stationary , Krosa began moving steadily to the west @-@ southwest due to a new ridge . The convection continued to weaken due to continued shear and cooler waters from upwelling , and Krosa deteriorated to tropical storm status on November 3 . The next day , the JTWC issued its final advisory after the circulation became exposed from the convection . Also on November 4 , the JMA downgraded Krosa to tropical depression status off the northeast Vietnam coast . The system dissipated at 0000 UTC on November 5 . + + = = Preparations and impact = = + + Before Krosa struck the Philippines , PAGASA issued a number 3 warning signal for portions of northern Luzon , where winds were expected to reach over 100 km / h ( 60 mph ) . The agency noted for the potential for flooding and landslides . High winds knocked down trees across Luzon , and left about 80 % of Cagayan province without power , as well as some areas without internet or cellphone service . Portions of the Pan @-@ Philippine Highway were blocked , and in Lal @-@ Lo , Cagayan , a car crashed into a gasoline truck due to power outages . Agriculture damage was estimated at P273 million ( PHP , $ 6 @.@ 3 million USD ) , occurring just before the start of the harvest . Across the island , the typhoon damaged 32 @,@ 745 houses , including 3 @,@ 837 that were destroyed , forcing 65 @,@ 648 people to evacuate to storm shelters . Overall , Krosa killed four people in the Philippines , and left P273 million ( PHP , $ 6 @.@ 4 million USD ) in damage . After the storm , workers quickly restored power lines , while the government provided monetary assistance to storm @-@ ravaged families , after Cagayan was declared a state of calamity . Members of the Philippine military and Department of Public Works and Highways worked to clean up following the storm . + The China National Meteorological Centre issued a " yellow alert " , the second @-@ lowest of the four level warning system , for Hainan due to the threat of the storm . The agency recommended boats to return to port . Agencies in Vietnam also warned for the potential of heavy rainfall due to the dissipating Tropical Depression Krosa , and released water from three dams to prevent overflow . + + + = Kirby 's Block Ball = + + Kirby 's Block Ball is a 1995 action video game , a spin @-@ off from the Kirby series for the Game Boy portable console . It is a Breakout clone ; the player controls paddles along the screen 's edge to knock a bouncing ball , Kirby , into destructible bricks . The game 's 55 levels include power @-@ ups , bonus rounds , and minigames . Kirby 's Block Ball was developed by HAL Laboratory and Nintendo R & D1 . The team spent half a year revising the gameplay to match Kirby 's signature characteristics . Kirby 's Block Ball was published by Nintendo first in Japan in 1995 , later in Europe , and last in North America in 1996 . + Reviewers considered the game an improvement on the Breakout formula and praised its gameplay craftsmanship and incorporation of the Kirby series . It was included in multiple top Game Boy game lists and was later emulated on the Nintendo 3DS Virtual Console . + + = = Gameplay = = + + The player controls paddles along the screen 's edges to knock a bouncing ball , Kirby , into destructible bricks . The player loses a life if Kirby hits the edge of the screen . Each of the game 's eleven stages include five rounds of increasingly complex block patterns for Kirby to clear . The ten different block types vary in durability and points value . A well @-@ timed hit of the paddle gives Kirby a powerful bounce to break through harder blocks . Another block type turns the remaining blocks into a bonus round that rewards the player for clearing the screen in the least amount of time . The player can find warp stars that lead to minigames , such as air hockey , where the player can earn extra lives . The rounds also include enemies to attack and avoid . Some enemies contain bonus items . Each stage ends in a boss fight . + With stone , needle , flame , and spark power @-@ ups , Kirby can transform to interact with blocks differently . For instance , the spark power @-@ up lets Kirby break through otherwise indestructible blocks , and the needle lets Kirby hit spikes once without losing a life . The game has a themed frame and uses a wide palette of colors in @-@ game when played with the Super Game Boy . + + = = Development = = + + The game was developed by HAL Laboratory with Gunpei Yokoi 's Nintendo R & D1 , and published by Nintendo . At one point in development , HAL decided that the game did not feel like a Kirby game . The team spent six months completely revising the game under explicit instructions on how Kirby should move . Kirby games contain elements of unrestricted , creative movement as a general theme . Kirby 's Block Ball was released for the Game Boy first in Japan in 1995 and later in Europe ( 1995 ) and North America ( May 1996 ) . It was later emulated on the Nintendo 3DS Virtual Console , and released first in Japan ( October 2011 ) and later in Europe ( February 2012 ) and North America ( May 2012 ) . + + = = Reception and legacy = = + + On release , the four reviewers of Electronic Gaming Monthly applauded Kirby 's Block Ball for modifying the Breakout formula to create a new and enjoyable game . They especially praised the unique power @-@ ups , though Crispin Boyer and Sushi X also felt the game was too short and easy . Nintendo Power said they enjoyed Block Ball and its number of stages , but wondered how its eight megabits of memory were being used . The magazine found the parts where Kirby eats the unbreakable blocks to be innovative . All six of the magazine 's reviewers recommended the game . + IGN wrote that the game was primarily remembered as " an Arkanoid or Breakout clone skinned with the Kirby franchise " . IGN calculated an average reviewer score of 7 @.@ 4 / 10 . The Kirby series became known for its number of non @-@ platformer spin @-@ offs , of which Block Ball was one , like Kirby 's Pinball Land and Kirby 's Dream Course . Kirby 's spherical shape lent itself towards ball @-@ like roles . IGN wrote that Block Ball was the first " truly out there " Kirby spin @-@ off , but that the game was too short . + Planet Game Boy called it one of the original Game Boy 's ten " all @-@ time classics " and GamesRadar placed it among the top 25 Game Boy games released . They considered Kirby 's Block Ball an improvement upon Alleyway , a Game Boy launch title and Breakout clone . IGN recommended the game upon its 3DS rerelease both in general and for Breakout fans . Nintendo World Report recommended the game to players who like score attack games and called it the best version of Breakout released . Retrospective reviewers found the game enjoyable and praised the craft behind the gameplay and Kirby themes . Alternatively , Kirby 's Block Ball received the lowest rating on Tim Rogers 's 2004 " Yamanote Scoring System for Portable Games " ( a metric by which he played a game while counting stops on the circular Yamanote train line until he lost interest ) with a score of " one " stop . He called it " too damned bland " . + In a retrospective review , Jeuxvideo.com had high praise for the level design , graphics , and animations . They also found the music excellent in comparison to the annoying and repetitive soundtrack of most Breakout clones . The magazine also liked how the game fit the Kirby universe , apart from its increased difficulty — Jeuxvideo.com occasionally had trouble hitting the slow @-@ paced ball with precision . + + + = Hannah Dodd = + + Hannah Dodd ( born 27 April 1992 ) is an Australian Grade IV equestrian and 2 @.@ 0 point wheelchair basketball player who represented Australia in equestrian at the 2012 Summer Paralympics in London , coming 11th and 12th in her events . Switching to wheelchair basketball , she made her debut with the national team at the Osaka Cup in February 2015 . + In 2008 , Dodd was the Australian national Grade IV para @-@ equestrian champion . She was runner @-@ up in 2009 , and won the Australian national championships again in 2011 , along with the Oceania Championships and the National Titles team events . By 2012 , she was the top @-@ ranked Australian competitor in her event and class . + After the London Paralympics , Dodd took up wheelchair basketball . She started playing for the Sydney University Flames in the Women 's National Wheelchair Basketball League in 2013 , made her debut with the national team at the Osaka Friendship Games in Osaka in February 2015 , winning bronze , and was part of the Under 25 team at the 2015 Women 's U25 Wheelchair Basketball World Championship in Beijing in July 2015 , winning silver . + + = = Personal = = + + Hannah Dodd was born on 27 April 1992 , and is from Arcadia , New South Wales . She has sacral agenesis and spina bifida with upper limb dystonia , and is missing four vertebrae in her back . When she was about a year old , her kidneys started failing . Her entire renal system needed to be reconstructed . She has two older brothers . She can walk with the aide of a caliper , and also uses a wheelchair . As of 2012 , she is a horse riding teacher and student at the University of Western Sydney where she is majoring in sports and exercise science . + + = = Equestrian = = + + Dodd is a Grade IV equestrian competitor , coached by Peter Turner . Due to her sacral agenesis , when she rides her horse , she dislocates several bones every time , but as a result of anti @-@ doping rules , she has had to find alternative ways of coping with pain associated with riding . + Dodd has been around horses since she was four months old , and was able to ride on her own by the time she was two years old , before she learned to walk . The sport gave her a degree of independence . She started competing in 2005 , and first represented Australia in 2006 , winning her first test in England that year.In 2008 , she became the youngest @-@ ever winner of the Australian national championships . She finished first at the March 2009 inter @-@ schools cup at the St Ives Showground , and second at the 2009 Australian national championships , but her horse , Lucifer 's Dream , was injured in 2009 . In 2009 and 2010 , she searched for another horse to assist her in getting through Paralympic qualification . She won the Australian national championships again in 2011 , along with the Oceania Championships and the National Titles team events . By 2012 , she was the top @-@ ranked Australian competitor in her event and class . + Dodd was selected to represent Australia at the 2012 Summer Paralympics in London in equestrian events with her horse Waikiwi . These Games were her first , and she was the youngest Australian equestrian competitor . A fund raiser was organised by Arcadia , New South Wales , residents . While her own costs and the cost of her horse were covered by Australian Paralympic Committee and Equestrian Australia , funds were required for her coach . She was placed 12th in the Individual Championship Test – Grade IV , and 11th in the Individual Freestyle Test – Grade IV and Team Test – Grade IV . + + = = Wheelchair basketball = = + + After the London Paralympics , Dodd took up wheelchair basketball . She started for the Sydney University Flames in the Women 's National Wheelchair Basketball League in 2013 . She has to strap her fingers and wrists , and usually dislocates a shoulder during a game . " I 've had a few bangs and scrapes and been tipped out of my chair a few times , " she concedes , " but it 's really fun . The fast pace really gives you an adrenalin kick and the girls I play with are awesome . " " If I have chose between my two sports for Rio , " she said , " I will go with basketball . " She made her debut with the national team , known as the Gliders , at the Osaka Cup in Osaka in February 2015 . The Gliders won bronze . In June 2015 , Dodd was selected as part of the under 25 team ( known as the Devils ) for the 2015 Women 's U25 Wheelchair Basketball World Championship in Beijing in July . The Devils won silver . By this time her health had deteriorated . She had to use a wheelchair much of the time , and her classification had dropped to a 2 @.@ 5 point player . In 2015 , she was reclassified a 2 @.@ 0 . + + + = Commonwealth War Graves Commission = + + The Commonwealth War Graves Commission ( CWGC ) is an intergovernmental organisation of six independent member states whose principal function is to mark , record and maintain the graves and places of commemoration of Commonwealth of Nations military service members who died in the two World Wars . The Commission is also responsible for commemorating Commonwealth civilians who died as a result of enemy action during World War II . The Commission was founded by Fabian Ware and constituted through Royal Charter in 1917 named the Imperial War Graves Commission . The change to the present name took place in 1960 . + The Commission , as part of its mandate , is responsible for commemorating all Commonwealth war dead individually and equally . To this end , the war dead are commemorated by name on a headstone , at an identified site of a burial , or on a memorial . War dead are commemorated uniformly and equally , irrespective of military or civil rank , race or creed . + The Commission is currently responsible for the continued commemoration of 1 @.@ 7 million deceased Commonwealth military service members in 153 countries . Since its inception , the Commission has constructed approximately 2 @,@ 500 war cemeteries and numerous memorials . The Commission is currently responsible for the care of war dead at over 23 @,@ 000 separate burial sites and the maintenance of more than 200 memorials worldwide . In addition to commemorating Commonwealth military service members , the Commission maintains , under arrangement with applicable governments , over 40 @,@ 000 non @-@ Commonwealth war graves and over 25 @,@ 000 non @-@ war military and civilian graves . The Commission operates through the continued financial support of the member states : United Kingdom , Canada , Australia , New Zealand , India and South Africa . The current President of the Commonwealth War Graves Commission is Prince Edward , Duke of Kent . + + = = History = = + + + = = = World War I = = = + + On the outbreak of World War I in 1914 , Fabian Ware , a director of the Rio Tinto Company , found that at 45 years old he was too old to join the British Army . He used the influence of Rio Tinto chairman , Viscount Milner , to become the commander of a mobile unit of the British Red Cross . He arrived in France in September 1914 and whilst there was struck by the lack of any official mechanism for documenting or marking the location of graves of those who had been killed and felt compelled to create an organisation within the Red Cross for this purpose . In March 1915 , with the support of Nevil Macready , Adjutant @-@ General of the British Expeditionary Force , Ware 's work was given official recognition and support by the Imperial War Office and the unit was transferred to the British Army as the Graves Registration Commission . The new Graves Registration Commission had over 31 @,@ 000 graves of British and Imperial soldiers registered by October 1915 and 50 @,@ 000 registered by May 1916 . + When municipal graveyards began to overfill Ware began negotiations with various local authorities to acquire land for further cemeteries . Ware began with an agreement with France to build joint British and French cemeteries under the understanding that these would be maintained by the French government . Ware eventually concluded that it was not prudent to leave the maintenance responsibilities solely to the French government and subsequently arranged for France to purchase the land , grant it in perpetuity , and leave the management and maintenance responsibilities to the British . The French government agreed under the condition that cemeteries respected certain dimensions , were accessible by public road , were in the vicinity of medical aid stations and were not too close to towns or villages . Similar negotiations were started with the Belgian government . + As reports of the grave registration work became public , the Commission began to receive letters of enquiry and requests for photographs of graves from relatives of deceased soldiers . By 1917 , 17 @,@ 000 photographs had been dispatched to relatives . In March 1915 , the Commission , with the support of the Red Cross , began to dispatch photographic prints and cemetery location information in answer to the requests . The Graves Registration Commission became the Directorate of Graves Registration and Enquiries in the spring of 1916 in recognition of the fact that the scope of work began to extend beyond simple grave registration and began to include responding to enquiries from relatives of those killed . The directorate 's work was also extended beyond the Western Front and into other theatres of war , with units deployed in Greece , Egypt and Mesopotamia . + + = = = Formal establishment = = = + + As the war continued , Ware and others became concerned about the fate of the graves in the post @-@ war period . Following a suggestion by the British Army , the National Committee for the Care of Soldiers ' Graves was appointed by the British government in January 1916 , with Edward , Prince of Wales agreeing to serve as president . The National Committee for the Care of Soldiers ' Graves was created with the intention of taking over the work of the Directorate of Graves Registration and Enquiries after the war . The government felt that it was more appropriate to entrust the work to a specially appointed body rather than to any existing government department . By early 1917 a number of members of the committee believed a formal imperial organisation would be needed to care for the graves . With the help of Edward , Prince of Wales , Ware submitted a memorandum to the Imperial War Conference in 1917 suggesting that an imperial organisation be constituted . The suggestion was accepted and on 21 May 1917 the Imperial War Graves Commission was established by Royal Charter , with the Prince of Wales serving as president , Secretary of State for War Lord Derby as chairman and Ware as vice @-@ chairman . The Commission 's undertakings began in earnest at the end of the First World War . Once land for cemeteries and memorials had been guaranteed , the enormous task of recording the details of the dead could begin . By 1918 , some 587 @,@ 000 graves had been identified and a further 559 @,@ 000 casualties were registered as having no known grave . + The scale , and associated high number of casualties , of the war produced an entirely new attitude towards the commemoration of war dead . Previous to World War I , individual commemoration of war dead was often on an ad hoc basis and was almost exclusively limited to commissioned officers . However , the war required mobilisation of a significant percentage of the population , either as volunteers or through conscription . An expectation had consequently arisen that individual soldiers would expect to be commemorated , even if they were low @-@ ranking members of the military . A committee under Frederic Kenyon , Director of the British Museum , presented a report to the Commission in November 1918 detailing how it envisioned the development of the cemeteries . Two key elements of this report were that bodies should not be repatriated and that uniform memorials should be used to avoid class distinctions . Beyond the logistical nightmare of returning home so many corpses , it was felt that repatriation would conflict with the feeling of brotherhood that had developed between serving ranks . + An article in The Times on 17 February 1919 by Rudyard Kipling carried the Commission 's proposal to a wider audience and described what the graves would look like . The article entitled War Graves : Work of Imperial Commission : Mr. Kipling 's Survey was quickly republished as an illustrated booklet , Graves of the Fallen . The illustrated booklet was intended to soften the impact of Kenyon 's report as it included illustrations of cemeteries with mature trees and shrubs ; contrasting the bleak landscapes depicted in published battlefield photos . There was an immediate public outcry following the publication of the reports , particularly with regards to the decision to not repatriate the bodies of the dead . The reports generated considerable discussion in the press which ultimately led to a heated debate in Parliament on 4 May 1920 . Sir James Remnant started the debate , followed by speeches by William Burdett @-@ Coutts in favour of the Commission 's principles and Robert Cecil speaking for those desiring repatriation and opposing uniformity of grave markers . Winston Churchill closed the debate and asked that the issue not proceed to a vote . Remnant withdrew his motion , allowing the Commission to carry out its work assured of support for its principles . + + = = = First cemeteries and memorials to the missing = = = + + Three of the most eminent architects of their day , Sir Herbert Baker , Sir Reginald Blomfield , and Sir Edwin Lutyens were commissioned to design the cemeteries and memorials . Rudyard Kipling was appointed literary advisor for the language used for memorial inscriptions . + In 1920 , the Commission built three experimental cemeteries at Le Treport , Forceville and Louvencourt , following the principles outlined in the Kenyon report . Of these , the Forceville Communal Cemetery and Extension was agreed to be the most successful . Having consulted with garden designer Gertrude Jekyll , the architects created a walled cemetery with uniform headstones in a garden setting , augmented by Blomfield 's Cross of Sacrifice and Lutyens ' Stone of Remembrance . After some adjustments , Forceville became the template for the Commission 's building programme . Adjustments were required because all three experimental cemeteries went over budget . To ensure future cemeteries remained within their budget the Commission decided to not build shelters in cemeteries that contained less than 200 graves , to not place a Stone of Remembrance in any cemetery with less than 400 graves , and to limit the height of cemetery walls to 1 metre ( 3 @.@ 3 ft ) . + At the end of 1919 , the Commission had spent £ 7 @,@ 500 , and this figure rose to £ 250 @,@ 000 in 1920 as construction of cemeteries and memorials increased . By 1921 , the Commission had established 1 @,@ 000 cemeteries which were ready for headstone erections , and burials . Between 1920 and 1923 , the Commission was shipping 4 @,@ 000 headstones a week to France . In many cases small cemeteries were closed and the graves concentrated in larger ones . By 1927 , when the majority of construction had been completed , over 500 cemeteries had been built , with 400 @,@ 000 headstones , a thousand Crosses of Sacrifice , and 400 Stones of Remembrance . + The Commission had also been mandated to individually commemorate each soldier who had no known grave , which amounted to 315 @,@ 000 in France and Belgium alone . The Commission initially decided to build 12 monuments on which to commemorate the missing ; each memorial being located at the site of an important battle along the Western Front . After resistance from the French committee responsible for the approvals of memorials on French territory , the Commission revised their plan and reduced the number of memorials , and in some cases built memorials to the missing in existing cemeteries rather than as separate structures . + Reginald Blomfield 's Menin Gate was the first memorial to the missing located in Europe to be completed , and was unveiled on 24 July 1927 . The Menin Gate ( Menenpoort ) was found to have insufficient space to contain all the names as originally planned and 34 @,@ 984 names of the missing were instead inscribed on Herbert Baker 's Tyne Cot Memorial to the Missing . Other memorials followed : the Helles Memorial in Gallipoli designed by John James Burnet ; the Thiepval Memorial on the Somme and the Arras Memorial designed by Edwin Lutyens ; and the Basra Memorial in Iraq designed by Edward Prioleau Warren . The Dominions and India also erected memorials on which they commemorated their missing : the Neuve @-@ Chapelle Memorial for the forces of India , the Vimy Memorial by Canada , the Villers @-@ Bretonneux Memorial by Australia , the Delville Wood Memorial by South Africa and the Beaumont @-@ Hamel Memorial by Newfoundland . The programme of commemorating the dead of the Great War was considered essentially complete with the inauguration of the Thiepval Memorial in 1932 , though the Vimy Memorial would not be finished until 1936 , the Villers @-@ Bretonneux Memorial until 1938 and stonemasons were still conducting work on the Menin Gate when Germany invaded Belgium in 1940 . + The only memorial created by the Commission that was not in the form of a monument or cemetery was the Opththalmic Institute at Giza , Egypt — complete with library , and bacteriology and pathology departments — as its memorial to men of the Egyptian Labour Corps and Camel Transport Corps . Its erection was agreed with local political pressure . + + = = = World War II = = = + + From the start of the Second World War in 1939 , the Commission organised grave registration units and , planning ahead based on the experience gained from the First World War , earmarked land for use as cemeteries . When the war began turning in favour of the Allies , the Commission was able to begin restoring its First World War cemeteries and memorials . It also began the task of commemorating the 600 @,@ 000 Commonwealth casualties from the Second World War . In 1949 , the Commission completed Dieppe Canadian War Cemetery , the first of 559 new cemeteries and 36 new memorials . Eventually , over 350 @,@ 000 new headstones were erected . Many were made from Hopton Wood stone . The wider scale of World War II , coupled with manpower shortages and unrest in some countries , meant that the construction and restoration programmes took much longer . Following the war , the Commission implemented a five @-@ year horticultural renovation programme . The horticultural neglect was largely addressed by 1950 but there were necessary structural repairs to be made . These , together with the backlog of maintenance tasks from before the war , took a further 10 years to complete and the programme was not completed until the 1960s . + With the increased number of civilian casualties compared with the World War I , Winston Churchill agreed to Ware 's proposal that the Commission also maintain a record of Commonwealth civilian war deaths . A supplemental chapter was added to the Imperial War Graves Commission 's charter on 7 February 1941 , empowering the organisation to collect and record the names of civilians who died from enemy action during the Second World War , which resulted in the creation of the Civilian War Dead Roll of Honour . The roll eventually contained the names of nearly 67 @,@ 000 civilians . The Commission and the Dean of Westminster reached an agreement that the roll would eventually be placed in Westminster Abbey but not until the roll was complete and hostilities had ended . The Commission handed over the first six volumes to the Dean of Westminster on 21 February 1956 ; the final volume was added to the showcase in 1958 . + + = = = Post – World War II = = = + + Following World War II the Commission recognised that the word ' Imperial ' within its name was no longer appropriate . In the spirit of strengthening national and regional feelings the organisation 's name was changed to Commonwealth War Graves Commission in 1960 . + More recent conflicts have sometimes made it impossible for the Commission to care for cemeteries in a given region or resulted in the destruction of sites altogether . Zehrensdorf Indian Cemetery in Germany was unkempt after the end of World War II and until the German reunification because it was located in an area occupied by Russian forces and was not entirely rebuilt until 2005 . The Six @-@ Day War and War of Attrition resulted in the destruction of Port Tewfik Memorial and Aden Memorial , and the death of a Commission gardener at Suez War Memorial Cemetery . During the Lebanese Civil War two cemeteries in Beirut were destroyed and had to be rebuilt . The maintenance of war graves and memorials in Iraq has remained difficult since Iran – Iraq War in the 1980s , with regular maintenance being impractical since after the Gulf War . + The Commission has , and continues to , also provide support for war graves outside its traditional mandate . In 1982 , the British Ministry of Defence requested the Commission 's assistance to design and construct cemeteries in the Falkland Islands for those killed during the Falklands War . Although these cemeteries are not Commonwealth War Graves Commission cemeteries , the Commission manages the administrative responsibilities of these cemeteries . Since 2005 , the Commission has carried out similar management duties on behalf of the British Ministry of Defence for cemeteries and graves of British and Imperial soldiers who died during the Second Boer War . In 2003 , Veterans Affairs Canada employed the Commission to develop an approach to locate grave markers for which the Canadian Minister of Veterans Affairs has responsibility . As of 2011 , the Commission conducts a twelve @-@ year cyclical inspection programme of Canadian veterans ' markers installed at the expense of the Government of Canada . + In 2008 , an exploratory excavation discovered mass graves on the edge of Pheasant Wood outside of Fromelles . Two @-@ hundred and fifty British and Australian bodies were excavated from five mass graves which were interred in the newly constructed Fromelles ( Pheasant Wood ) Military Cemetery . This was the first new Commonwealth War Graves Commission cemetery in more than 50 years , the last such cemeteries having been built after the Second World War . + + = = Burial sites and memorials = = + + The Commission is currently responsible for the continued commemoration of 1 @.@ 7 million deceased Commonwealth military service members in 153 countries and approximately 67 @,@ 000 civilians who died as a result of enemy action during World War II . Commonwealth military service members are commemorated by name on either a headstone , at an identified site of a burial , or on a memorial . As a result , the Commission is currently responsible for the care of war dead at over 23 @,@ 000 separate burial sites and maintenance of more than 200 memorials worldwide . The vast majority of burial sites are pre @-@ existing communal or municipal cemeteries and parish churchyards located in the United Kingdom , however the Commission has itself constructed approximately 2 @,@ 500 war cemeteries worldwide . The Commission has also constructed or commissioned memorials to commemorate the dead who have no known grave ; the largest of these is the Thiepval Memorial . + + = = = Qualifications for inclusion = = = + + The Commission only commemorates those who have died during the designated war years , while in Commonwealth military service or of causes attributable to service . The applicable periods of consideration are 4 August 1914 to 31 August 1921 for the First World War and 3 September 1939 to 31 December 1947 for the Second World War . The end date for the First World War period is the official end of the war , while for the Second World War the Commission selected a date approximately the same period after VE Day as the official end of the First World War was after the 1918 Armistice . + Civilians who died as a result of enemy action during the Second World War are commemorated differently from those that died as a result of military service . They are commemorated by name through the Civilian War Dead Roll of Honour located in St George 's Chapel in Westminster Abbey . In addition to its mandated duties , the Commission maintains , under arrangement with applicable governments , over 40 @,@ 000 non @-@ Commonwealth war graves and over 25 @,@ 000 non @-@ war military and civilian graves . + + = = = Architects and sculptors = = = + + As well as the main Principal Architects for France and Belgium ( Baker , Blomfield and Lutyens ) , there were Principal Architects appointed for other regions as well . Sir Robert Lorimer was Principal Architect for Italy , Macedonia and Egypt , while Sir John James Burnet was Principal Architect for Palestine and Gallipoli , assisted by Thomas Smith Tait . The Principal Architect for Mesopotamia was Edward Prioleau Warren . + As well as these senior architects , there was a team of Assistant Architects who were actually responsible for many of the cemetery and memorial designs . These architects were younger , and many of them had served in the war . The Assistant Architects were : George Esselmont Gordon Leith , Wilfred Clement von Berg , Charles Henry Holden ( who in 1920 became a Principal Architect ) , William Harrison Cowlishaw , William Bryce Binnie , George Hartley Goldsmith , Frank Higginson , Arthur James Scott Hutton , Noel Ackroyd Rew , and John Reginald Truelove . Other architects that worked for the Commission , or won competitions for the Commission memorials , included George Salway Nicol , Harold Chalton Bradshaw , Verner Owen Rees , Gordon H. Holt , and Henry Philip Cart de Lafontaine . + In January 1944 , Edward Maufe was appointed Principal Architect for the UK . Maufe worked extensively for the Commission for 25 years until 1969 , becoming Chief Architect and also succeeding Kenyon as Artistic Advisor . Together with Maufe , the other Principal Architects appointed during and after the Second World War were Hubert Worthington , Louis de Soissons , Philip Hepworth and Colin St Clair Oakes . + Leading sculptors that worked on the memorials and cemeteries after the First World War included Eric Henri Kennington , Charles Thomas Wheeler , Gilbert Ledward , and Charles Sargeant Jagger . Other sculptors , both in the inter @-@ war period and after the Second World War , included William Reid Dick , Ernest Gillick , Basil Gotto , Alfred Turner , Laurence A. Turner , Walter Gilbert , Henry Poole , Vernon Hill , Robert Anning Bell , Ferdinand Victor Blundstone , Joseph Armitage , and Gilbert Bayes . + + = = = Cemetery design = = = + + + = = = = Common architectural design features = = = = + + Structural design has always played an important part in the Commission 's cemeteries . Apart from a few exceptions , due to local geological conditions , the cemeteries follow the same design and uniform aesthetic all over the world . This makes the cemeteries easily recognisable and distinguishes them from war graves administered by other groups or countries . + A typical cemetery is surrounded by a low wall or hedge and with a wrought @-@ iron gate entrance . For cemeteries in France and Belgium , a land tablet near the entrance or along a wall identifies the cemetery grounds as having been provided by the French or Belgian governments . All but the smallest cemeteries contain a register with an inventory of the burials , a plan of the plots and rows , and a basic history of the cemetery . The register is located within a metal cupboard that is marked with a cross located in either the wall near the cemetery entrance or in a shelter within the cemetery . More recently , in larger sites , a stainless steel notice gives details of the respective military campaign . The headstones within the cemetery are of a uniform size and design and mark plots of equal size . + The cemetery grounds are , except in drier climates , grass covered with a floral border around the headstones . There is also an absence of any paving between the headstone rows which is intended to make the cemetery feel like a traditional walled garden where visitors could experience a sense of peace . However , Carter and Jackson argue that the uniform aesthetics are designed to evoke a positive experience which deliberately masks and sanitises the nature of the war deaths . + + = = = = Cross of Sacrifice and Stone of Remembrance = = = = + + Typically , cemeteries of more than 40 graves contain a Cross of Sacrifice designed by architect Reginald Blomfield . This cross was designed to imitate medieval crosses found in churchyards in England with proportions more commonly seen in the Celtic cross . The cross is normally a freestanding four @-@ point limestone Latin cross , mounted on an octagonal base , and ranging in height from 14 to 32 feet . A bronze longsword , blade down , is embedded on the face of the cross . This cross represents the faith of the majority of the dead and the sword represents the military character of the cemetery , intended to link British soldiers and the Christian concept of self @-@ sacrifice . + Cemeteries with more than 1000 burials typically have a Stone of Remembrance , designed by Edwin Lutyens with the inscription " Their Name Liveth for Evermore " . The concept of the Stone of Remembrance stone was developed by Rudyard Kipling to commemorate those of all faiths and none respectively . In contrast to the Cross of Sacrifice , the design for the stone deliberately avoided " shapes associated with particular religions " . The geometry of the structure was based on studies of the Parthenon . Each stone is 3 @.@ 5 metres ( 11 ft ) long and 1 @.@ 5 metres ( 4 @.@ 9 ft ) high . The shape of the stone has been compared both to that of a sarcophagus and an altar . The feature was designed using the principle of entasis . The subtle curves in the design , if extended , would form a sphere 1 @,@ 801 feet 8 inches ( 549 @.@ 15 m ) in diameter . + + = = = = Headstones = = = = + + Every grave is marked with a headstone . Each headstone contains the national emblem or regimental badge , rank , name , unit , date of death and age of each casualty inscribed above an appropriate religious symbol and a more personal dedication chosen by relatives . The headstones use a standard upper case lettering designed by MacDonald Gill . Individual graves are arranged , where possible , in straight rows and marked by uniform headstones , the vast majority of which are made of Portland stone . The original headstone dimensions were 76 centimetres ( 30 in ) tall , 38 cm ( 15 in ) wide , and 7 @.@ 6 cm ( 3 @.@ 0 in ) thick . + Most headstones are inscribed with a cross , except for those deceased known to be atheist or non @-@ Christian . In the case of burials of Victoria Cross or George Cross recipients , the regimental badge is supplemented by the Victoria Cross or George Cross emblem . Sometimes a soldier employed a pseudonym because they were too young to serve or were sought by law enforcement ; in such cases their primary name is shown along with the notation " served as " . Many headstones are for unidentified casualties ; they consequently bear only what could be discovered from the body . The epitaph , developed by Rudyard Kipling , that appears on the graves of unidentified soldiers for which no details are known is " A Soldier of the Great War known unto God " . Some headstones bear the text " believed to be buried in this cemetery " when they are believed to be buried in the cemetery but the exact location of the grave is not known . In some cases soldiers were buried in collective graves and distinguishing one body from another was not possible and thus one headstone covers more than one grave . The headstone does not denote any specific details of the death except for its date , and even then only if it is known , and are deliberately ambiguous about the cause of death . + Due to local conditions it was sometimes necessary for the Commission to deviate from its standard design . In places prone to extreme weather or earthquakes , such as Thailand and Turkey , stone @-@ faced pedestal markers are used instead of the normal headstones . These measures are intended to prevent masonry being damaged during earthquakes or sinking into sodden ground . In Italy headstones were carved from Chiampo Perla limestone because it was in more plentiful supply . In Struma Military Cemetery , in Greece , to avoid risk of earthquake damage , small headstones are laid flat on the ground . The smaller size of the markers mean that they often lack unit insignia . + + = = = = Horticulture = = = = + + Commission cemeteries are distinctive in treating floriculture as an integral part of the cemetery design . Originally , the horticultural concept was to create an environment where visitors could experience a sense of peace in a setting , in contrast to traditionally bleak graveyards . Recommendations given by Arthur William Hill , the Assistant Director of the Royal Botanical Gardens at Kew enabled the Commission to develop cemetery layouts and architectural structures that took into account the placement of suitable plant life . Combining structural and horticultural elements was not unfamiliar to the Commission 's architects . Sir Edwin Lutyens furthered his long @-@ standing working relationship with horticulturist Gertrude Jekyll , whose devotion to traditional cottage garden plants and roses greatly influenced the appearance of the cemeteries . Where possible , indigenous plants were utilised to enhance sentimental associations with the gardens of home . + Variety in texture , height and timing of floral display were equally important horticultural considerations . The beds around each headstone are planted with a mixture of floribunda roses and herbaceous perennials . Low @-@ growing plants are chosen for areas immediately in front of headstones , ensuring that inscriptions are not obscured and preventing soil from splashing back during rain . In cemeteries where there are pedestal grave markers , dwarf varieties of plants are used instead . + The absence of any form of paving between the headstone rows contributes to the simplicity of the cemetery designs . Lawn paths add to the garden ambiance , and are irrigated during the dry season in countries where there is insufficient rain . Where irrigation is inappropriate or impractical , dry landscaping is an ecological alternative favoured by the Commission 's horticulturists , as is the case in Iraq . Drier areas require a different approach not only for lawns , but also to plants and styles of planting . Similarly , there are separate horticultural considerations in tropical climates . When many cemeteries are concentrated within a limited area , like along the Western Front or Gallipoli peninsula , mobile teams of gardeners operate from a local base . Elsewhere , larger cemeteries have their own dedicated staff while small cemeteries are usually tended by a single gardener working part @-@ time . + + = = Organisation = = + + + = = = Commissioners = = = + + The affairs of the CWGC are overseen by a Board of Commissioners . The president of the board is Prince Edward , Duke of Kent , the chairman is United Kingdom Secretary of State for Defence Michael Fallon and the vice @-@ chairman Vice @-@ Admiral Tim Laurence . The members are : the High Commissioner for New Zealand to the United Kingdom Lockwood Smith , the High Commissioners of Australia to the United Kingdom Alexander Downer , the Acting High Commissioner of the Republic of South Africa to the United Kingdom Obed Mlaba , the High Commissioner for India to the United Kingdom Ranjan Mathai , the High Commissioner for Canada to the United Kingdom Gordon Campbell , Hew Strachan , Keith Simpson , Kevan Jones , Edward Chaplin , Robert Fox , Ros Kelly and Lieutenant General Bill Rollo . Victoria Wallace is the Director @-@ General of the CWGC and serves as secretary . The board also has an Honorary Artistic Adviser , Peter Inskip . + + = = = Functional structure = = = + + The CWGC is headquartered in Maidenhead , England . Offices or agencies that are each responsible for a specific geographical area manage the worldwide affairs of the organisation . They are : + France Area is headed by a director and is responsible for France ( including the island of Corsica ) , Monaco and Switzerland . + Northern Europe Area , headed by a director and responsible for Austria , Belgium , Czech Republic , Denmark , Estonia , Germany , Hungary , Latvia , Lithuania , Luxembourg , Netherlands , Norway , Poland and Sweden . + United Kingdom Area , headed by a director and responsible for Channel Islands , Faroe Islands , Iceland , Ireland , Isle of Man and the United Kingdom + Mediterranean Area headed by a director and responsible for Albania , Algeria , Azerbaijan , Azores , Bahrain , Canary Islands , Croatia , Cyprus , Egypt , Gibraltar , Greece , Israel and Palestine , Italy , Jordan , Lebanon , Libya , Macedonia , Madeira , Malta , Mauritania , Morocco , Oman , Portugal , San Marino , Saudi Arabia , Serbia , Spain , Syria , Tunisia , Turkey , United Arab Emirates and Yemen + Canadian Agency is headed by a secretary @-@ general and responsible for Canada , the entire Americas ( including the Caribbean ) + Australia , managed by the Office of Australian War Graves in the Australian Department of Veterans Affairs on behalf of the CWGC , is responsible for Australia , Norfolk Island , Papua New Guinea and the Solomon Islands + New Zealand , managed by the New Zealand Ministry of Culture and Heritage on behalf of the CWGC , is responsible for New Zealand , New Caledonia , Samoa , Society Islands , Tonga and Vanuatu + South Africa Agency is headed by a secretary and is responsible for Republic of South Africa , Namibia , Saint Helena and Ascension Island + Africa , Asia and Pacific Area is headed by a director and is responsible for areas not covered by any of the other bodies . + + = = = Financing = = = + + The CWGC 's work is funded predominantly by grants from the governments of the six member states . In the fiscal year 2012 / 13 , these grants amounted to £ 58 @.@ 6 million of the organisation 's £ 66 @.@ 5 million of income . This equates to an approximate cost of C $ 85 per commemorated war dead . The contribution from each country is proportionate to the number of graves the CWGC maintains on behalf of that country . The percentage of total annual contributions for which each country is responsible is United Kingdom 78 @.@ 4 % , Canada 10 @.@ 1 % , Australia 6 @.@ 1 % , New Zealand 2 @.@ 1 % , South Africa 2 @.@ 1 % and India 1 @.@ 2 % . + + = = Ongoing projects and issues = = + + + = = = War Graves Photographic Project = = = + + A project is underway to photograph the graves of and memorials to all service personnel from 1914 to the present day and make the images available to the public . The work is being carried out by The War Graves Photographic Project in conjunction with the CWGC . As of August 2013 , the project has recorded 1 @.@ 7 million photographs for posterity . + + = = = Reburials and identifications = = = + + Immediately following the First World War , the British Army remained responsible for the exhumation of remains . The Western Front was divided into sectors and combed for bodies by 12 @-@ man exhumation units . Between the Armistice and September 1921 , the exhumation units reburied 204 @,@ 695 bodies . After 1921 , no further widespread search for bodies was undertaken and in February 1921 responsibility of the cemeteries was transferred to the Commission . Despite the rigorous searches , bodies continued to be discovered in numbers . In the three years following the conclusion of the general search 38 @,@ 000 bodies were discovered . In the mid 1920s , 20 to 30 bodies were being discovered weekly . + The discovery of remains of First and Second World War casualties remains a common occurrence with approximately 30 bodies discovered annually . For example , in 2006 eight bodies of Canadian soldiers from the 78th Battalion ( Winnipeg Grenadiers ) , CEF were discovered in a backyard in Hallu , France . In April 2013 , the remains of four British soldiers discovered by a French farmer clearing land with metal detector in 2009 were re @-@ interred at H.A.C. Cemetery near Arras , France . In March 2014 , the remains of 20 Commonwealth and 30 German soldiers were discovered in Vendin @-@ le @-@ Vieil , France with the Commonwealth soldiers being subsequently reburied at Loos British Cemetery . + When the remains of a Commonwealth soldier from the First or Second World War is discovered the Commission is notified and a Commission burial officer tries to collect any associated artifacts that may help in identify the remains . The details are then registered and archived at the Commission 's headquarters. the collection of evidence can include artifacts with the remains , anthropological data and DNA . The archival records of the commission are open to the public to permit individuals to conduct their own research . Investigation of archival records by members of the public periodically result in the identification of previously buried casualties . In December 2013 , it was discovered that Second Lieutenant Philip Frederick Cormack , who was previously commemorated on the Arras Flying Services Memorial , had in fact been buried in a French military cemetery in Machelen , East @-@ Flanders in Belgium . Sergeant Leonard Maidment was identified in 2013 after a visitor to Marfaux British Cemetery discovered a headstone of an unknown sergeant with the Hampshire Regiment killed on 20 July 1918 and was subsequently able to show that only one sergeant from that regiment had been killed in France on that date . + + = = = Vandalism = = = + + Cemeteries , including those of war dead , are targets for vandalism . The gravestones , cemeteries and buildings of the Commission are no exception . The Commission believes that graffiti and damage to stonework are usually the pursuits partaken by young people , noting the number of incidents increases when schoolchildren are on school holidays . Determined thieves will also steal the bronze swords off the Cross of Sacrifice , which are now replaced with identical ones made in fibreglass . + The vandalism of Commission cemeteries has also been connected to the participation of Commonwealth countries in contemporary conflicts . In the 1970s , in The Troubles , Commission cemeteries in Ireland experienced vandalism . Vandals defaced the central memorial of the Étaples Military Cemetery in northern France with anti @-@ British and anti @-@ American graffiti on 20 March 2003 immediately after the beginning of the Iraq War . On 9 May 2004 , thirty @-@ three headstones were demolished in the Gaza cemetery , which contains 3 @,@ 691 graves , allegedly in retaliation for the Abu Ghraib prisoner abuse scandal . On 24 February 2012 , during the Libyan Civil War , an Islamist militia damaged over 200 headstones in the Benghazi war cemetery as well as the central memorial . + + + = Tatwine = + + Tatwine or Tatwin ( Tatuini or Tadwinus ; c . 670 – 734 ) was the tenth Archbishop of Canterbury from 731 to 734 . Prior to becoming archbishop , he was a monk and abbot of a Benedictine monastery . Besides his ecclesiastical career , Tatwine was a writer , and riddles he composed survive . Another work he composed was on the grammar of the Latin language , which was aimed at advanced students of that language . He was subsequently considered a saint . + + = = Biography = = + + Tatwine was a Mercian by birth . His epigraph at Canterbury stated that when he died he was in old age , so perhaps he was born around 670 . He became a monk at the monastery at Breedon @-@ on @-@ the @-@ Hill in the present @-@ day County of Leicestershire , and then abbot of that house . Through the influence of King Æthelbald he was appointed as Archbishop of Canterbury in 731 and was consecrated on 10 June 731 . He was one of a number of Mercians who were appointed to Canterbury during the 730s and 740s . Apart from his consecration of the Bishops of Lindsey and Selsey in 733 , Tatwine 's period as archbishop appears to have been uneventful . He died in office on 30 July 734 . Later considered a saint , his feast day is 30 July . + + = = Writings = = + + Bede 's commentary on Tatwine calls him a " vir religione et Prudentia insignis , sacris quoque literis nobiliter instructus " ( a man notable for his prudence , devotion and learning ) . These qualities were displayed in the two surviving manuscripts of his riddles and four of his Ars Tatuini . The Ars is one of only two surviving 8th @-@ century Latin grammars from England , and was based on the works of Priscian and Consentius . The riddles deal with such diverse topics as philosophy and charity , the five senses and the alphabet , and a book and a pen . The riddles are formed in acrostics . The grammar is a reworking of Donatus 's Ars Minor with the addition of information drawn from other grammarians . It was not designed for a newcomer to the Latin language , but is designed for more advanced students . It covers the eight parts of speech through illustrations drawn from classical scholars , although not directly but through other grammatical works . There are also some examples drawn from the Psalms . The work was completed before he became archbishop , and was used not only in England but also on the continent . A recent edition of his works is Tatuini Opera omnia , published in 1968 with some translations into English and German from the original Latin . + + + = German Type UB I submarine = + + The Type UB I was a class of small coastal submarines ( U @-@ boats ) built in Germany at the beginning of the First World War . 20 boats were constructed , most of which went into service with the German Imperial Navy . Boats of this design were also operated by the Austro @-@ Hungarian Navy ( Kaiserliche und Königliche Kriegsmarine or K.u.K. Kriegsmarine ) and the Bulgarian Navy . The group is sometimes known as the UB @-@ 1 class after SM UB @-@ 1 , the class leader . In the Austro @-@ Hungarian Navy , it was called the U @-@ 10 class . + Built to meet the need for small maneuverable submarines able to operate in the narrow , shallow seas off Flanders , the vessels were intended to be quickly constructed , then shipped by rail and assembled at their port of operation . The design effort began in mid @-@ August 1914 and by mid @-@ October the first 15 boats were ordered from two German shipyards . The German Imperial Navy subsequently ordered an additional pair of boats to replace two sold to Austria @-@ Hungary , who ordered a further three boats in April 1915 . A total of 20 UB Is were built . Construction of the first boats for Germany began in early November 1914 ; all 20 were completed by October 1915 . Several of the first boats underwent trials in German home waters , but the rest were assembled and tested at either Antwerp or Pola . The German boats operated primarily in the Flanders , Baltic , and Constantinople Flotillas . The boats were about 28 metres ( 92 ft ) long and displaced 127 tonnes ( 125 long tons ) when surfaced and 142 tonnes ( 140 long tons ) while submerged . All had two bow torpedo tubes and two torpedoes , and were equipped with a deck @-@ mounted machine gun . + In 1918 four of the surviving German boats were converted into coastal minelayers . Of the seventeen boats in German service , two were sold to Austria @-@ Hungary , one was sold to Bulgaria , and nine were lost during the war . One of the five Austro @-@ Hungarian boats was sunk and another mined and not repaired . The five surviving German boats , the four surviving Austro @-@ Hungarian boats , and the Bulgarian boat were all turned over to the Allies after the end of the war and were broken up . + + = = Design = = + + In the earliest stages of the First World War the German Army 's rapid advance along the North Sea coast found the German Imperial Navy without submarines suitable to operate in the narrow and shallow seas off Flanders . By 18 August 1914 , two weeks after the German invasion of Belgium , the planning of a series of small coastal submarines had already begun . + The German Imperial Navy stipulated that the submarines must be transportable by rail , which imposed a maximum diameter of 3 @.@ 15 metres ( 10 ft 4 in ) . The rushed planning effort — which had been assigned the name " Project 34 " — resulted in the Type UB I design , created specifically for operation from Flanders . The boats were to be about 28 metres ( 92 ft ) long and to displace about 125 tonnes ( 123 long tons ) with two bow torpedo tubes . + Boats of the Type UB I design were built by two manufacturers , Germaniawerft of Kiel and AG Weser of Bremen , which led to some variations in boats from the two shipyards . The eight Germaniawerft @-@ built boats were slightly longer at 28 @.@ 10 metres ( 92 ft 2 in ) length overall , while the twelve Weser @-@ built boats came in 22 centimetres ( 8 @.@ 7 in ) shorter than their counterparts . All were 3 @.@ 15 metres ( 10 ft 4 in ) abeam and had a draft of 3 @.@ 03 metres ( 9 ft 11 in ) . The boats all displaced 127 tonnes ( 125 long tons ) while surfaced , but differed slightly in displacement submerged . The slightly longer Germaniawerft boats displaced 142 tonnes ( 140 long tons ) while submerged , as they weighed 1 tonne ( 0 @.@ 98 long tons ) more than the Weser boats . + The drivetrain of the boats consisted of a single propeller shaft driven by a Daimler ( Germaniawerft ) or Körting ( Weser ) diesel engine on the surface , or a Siemens @-@ Schuckert electric motor for underwater travel . The Weser boats were capable of nearly 7 @.@ 5 knots ( 13 @.@ 9 km / h ; 8 @.@ 6 mph ) on the surface and a little more than 6 knots ( 11 km / h ; 6 @.@ 9 mph ) submerged . The Germaniawerft boats were about 1 knot ( 1 @.@ 9 km / h ; 1 @.@ 2 mph ) slower than their Bremen @-@ made counterparts . The boats were equipped with two 45 @-@ centimetre ( 17 @.@ 7 in ) bow torpedo tubes and carried two torpedoes . They were also armed with a single 8 @-@ millimetre ( 0 @.@ 31 in ) machine gun affixed to the deck . + + = = Construction = = + + The German Imperial Navy ordered its first fifteen Type UB I boats on 15 October 1914 . Eight boats — numbered UB @-@ 1 to UB @-@ 8 — were ordered from Germaniawerft of Kiel , and seven boats — numbered UB @-@ 9 to U @-@ 15 — from AG Weser of Bremen . After two of the class , UB @-@ 1 and UB @-@ 15 , were sold in February 1915 to ally Austria @-@ Hungary ( becoming U @-@ 10 and U @-@ 11 in the Austro @-@ Hungarian Navy ) , the German Imperial Navy ordered UB @-@ 16 and UB @-@ 17 from Weser . A further three for Austria @-@ Hungary — U @-@ 15 , U @-@ 16 , and U @-@ 17 — had been ordered from Weser by April , bringing the total number constructed to 20 . + UB @-@ 1 and UB @-@ 2 were laid down on 1 November 1914 at the Germaniawerft yard at Kiel . UB @-@ 1 was launched on 22 January 1915 , just 75 working days later . UB @-@ 2 's launch followed on 13 February . Among the Weser boats , UB @-@ 9 was laid down first , on 6 November 1914 , and launched on 6 February 1915 , a week ahead of UB @-@ 2 . These first three boats launched underwent trials in home waters , but most of the other members of the class were shipped via rail and underwent trials at their assembly point . + The process of shipping the submarines by rail involved breaking the submarines down into what was essentially a knock down kit . Each boat was broken into approximately fifteen pieces and loaded on to eight railway flatcars . Type UB I boats destined for service with the Flanders Flotilla made a five @-@ day journey to Antwerp for the two- to three @-@ week assembly process . After assembly at Antwerp the boats were towed by barge to Bruges for trials . Boats selected for service in the Mediterranean were sent to the Austro @-@ Hungarian port of Pola for assembly . The total time from departure of the railcars from the shipyard to operational readiness for the boats was about six weeks . + By July 1915 all seventeen of the German Imperial Navy Type UB Is had been completed . + + = = Service = = + + During their trials the Type UB Is were found to be too small and too slow and had a reputation for being underpowered ; one commander compared his Type UB I to a " sewing machine " . According to authors R. H. Gibson and Maurice Prendergast in their 1931 book The German Submarine War , 1914 – 1918 , the UBs did not have enough power to chase down steamers while surfaced and lacked the endurance to spend any extended amount of time underwater , exhausting their batteries after little over an hour 's running . In @-@ service use revealed another problem : with a single propeller shaft / engine combination , if either component failed , the U @-@ boat was almost totally disabled . + Another reported problem with the Type UB Is was the tendency to break trim after the firing of torpedoes . The boats were equipped with compensating tanks designed to flood and offset the loss of the C / 06 torpedo 's 1 @,@ 700 @-@ pound ( 770 kg ) weight , but this system did not always function properly ; as a result , when firing from periscope depth the boat could broach after firing or , if too much weight was taken on , plunge to the depths . When UB @-@ 15 torpedoed and sank Italian submarine Medusa in June 1915 , the tank failed to properly compensate , forcing the entire crew to run to the stern to offset the trim imbalance . + Despite the problems , the " tin tadpoles " , as the Germans referred to them , were in active service from March 1915 through the end of the war , with half of the 20 boats lost during the war . Boats of the class served in three navies : the German Imperial Navy , the Austro @-@ Hungarian Navy , and the Bulgarian Navy . In German service , they served primarily in the Flanders Flotilla , the Baltic Flotilla , and the Constantinople Flotilla . + + = = = German Imperial Navy = = = + + + = = = = Flanders Flotilla = = = = + + The first Type UB I to enter service was UB @-@ 10 , which formed the nucleus of the Flanders Flotilla , on 27 March 1915 . By the end of April five more Type UB I boats had become operational . UB @-@ 10 was eventually joined in the Flanders Flotilla by UB @-@ 2 , UB @-@ 4 , UB @-@ 5 , UB @-@ 6 , UB @-@ 12 , UB @-@ 13 , UB @-@ 16 , and UB @-@ 17 ; of these , only UB @-@ 2 made the journey to Flanders by sea rather than rail . + UB @-@ 4 departed on the first patrol from Flanders on 9 April , and was responsible for sinking the first ship sent down by the flotilla . The Type UB I boats of the Flanders Flotilla originally patrolled the area between the United Kingdom and the Netherlands , but began patrolling the English Channel after UB @-@ 6 pioneered a route past British antisubmarine nets and mines in the Straits of Dover in late June . + Over the Type UB Is ' first year of service , UB @-@ 4 and UB @-@ 13 were both lost , and UB @-@ 2 and UB @-@ 5 were transferred to the Baltic Flotilla . In March 1917 , UB @-@ 6 ran aground in Dutch waters and was interned for the rest of the war , along with her crew . The four remaining Type UB Is in Flanders — UB @-@ 10 , UB @-@ 12 , UB @-@ 16 , UB @-@ 17 — were all converted to minelayers by 1918 , having their torpedo tubes removed and replaced with chutes to carry up to eight mines . All but UB @-@ 10 were lost in 1918 ; UB @-@ 10 , in poor repair and out of service , was scuttled in October 1918 when the Germans evacuated from Flanders . + + = = = = Baltic Flotilla = = = = + + UB @-@ 9 was initially assigned to the Baltic Flotilla , and was joined by UB @-@ 2 and UB @-@ 5 in early 1916 . All three became training boats at Kiel in 1916 , joining UB @-@ 11 in that duty . Little information is available about the Type UB I boats operating in the Baltic . + + = = = = Constantinople Flotilla = = = = + + Four of the German Imperial Navy boats — UB @-@ 3 , UB @-@ 7 , UB @-@ 8 , and UB @-@ 14 — were selected for service with the Constantinople Flotilla . All were sent to Pola for assembly and trials there as part of the Pola Flotilla before sailing on to join the Constantinople Flotilla . UB @-@ 3 disappeared en route to Constantinople in May 1915 , but the other three arrived there by mid @-@ June . + The three Type UB I boats of the Constantinople Flotilla seem to have patrolled primarily in the Black Sea . UB @-@ 8 was transferred to the Bulgarian Navy in May 1916 , and UB @-@ 7 disappeared in the Black Sea in October 1916 , leaving UB @-@ 14 as the sole remaining German Type UB I in the flotilla ; she was surrendered at Sevastopol in November 1918 to French armies stationed there during the Russian Civil War . + + = = = Austro @-@ Hungarian Navy = = = + + UB @-@ 1 and the still incomplete UB @-@ 15 were sold to the Austria @-@ Hungary in February 1915 ; both were dismantled and shipped to Pola in May . After one cruise under the German flag , each boat was commissioned into the Austro @-@ Hungarian Navy . The pair — renamed U @-@ 10 and U @-@ 11 , respectively — were joined by U @-@ 15 , U @-@ 16 , and U @-@ 17 in October . Known as the U @-@ 10 or the Okarina ( English : Ocarina ) class as a part of the Austro @-@ Hungarian Navy , the five boats operated primarily in the Adriatic in patrols off Italy and Albania . U @-@ 10 ( ex UB @-@ 1 ) hit a mine in July 1918 and was beached , but had not been repaired by the end of the war . U @-@ 16 was sunk after she torpedoed an Italian destroyer in October 1916 , and the remaining three ( and the unrepaired U @-@ 10 ) were ceded to Italy at the end of the war . + + = = = Bulgarian Navy = = = + + After UB @-@ 8 was transferred to the Bulgarian Navy in May 1916 , she was renamed Podvodnik No. 18 ( in Cyrillic : Пoдвoдник No. 18 ) . She was Bulgaria 's first submarine , and was engaged primarily in coastal defense duties off Bulgaria 's main Black Sea port of Varna . Podvodnik No. 18 survived the war and was ceded to France after the Treaty of Neuilly @-@ sur @-@ Seine . + + = = List of Type UB I submarines = = + + 20 Type UB I submarines were built , 17 for the German Imperial Navy and three for the Austro @-@ Hungarian Navy . Two of the German submarines — UB @-@ 1 and UB @-@ 15 — were sold to Austria @-@ Hungary and commissioned into the Austro @-@ Hungarian Navy as U @-@ 10 and U @-@ 11 , respectively . Those two and a further three built by AG Weser comprised the virtually identical U @-@ 10 class for the Austro @-@ Hungarian Navy . Another of the German submarines , UB @-@ 8 , was sold to Bulgaria in May 1916 , becoming Podvodnik No. 18 . + + = = = German Imperial Navy = = = + + SM UB @-@ 1 ( became the Austro @-@ Hungarian U @-@ 10 , July 1915 ) + SM UB @-@ 2 + SM UB @-@ 3 + SM UB @-@ 4 + SM UB @-@ 5 + SM UB @-@ 6 + SM UB @-@ 7 + SM UB @-@ 8 ( became the Bulgarian Podvodnik No. 18 , May 1916 ) + SM UB @-@ 9 + SM UB @-@ 10 + SM UB @-@ 11 + SM UB @-@ 12 + SM UB @-@ 13 + SM UB @-@ 14 + SM UB @-@ 15 ( became the Austro @-@ Hungarian U @-@ 11 , June 1915 ) + SM UB @-@ 16 + SM UB @-@ 17 + + = = = Austro @-@ Hungarian Navy = = = + + In the Austro @-@ Hungarian Navy the Type UB I boats were known as the U @-@ 10 class , which consisted of two former German Type UB I boats and three built specifically for Austria @-@ Hungary . + SM U @-@ 10 ( the former German UB @-@ 1 ) + SM U @-@ 11 ( the former German UB @-@ 15 ) + SM U @-@ 15 ( Austria @-@ Hungary ) + SM U @-@ 16 ( Austria @-@ Hungary ) + SM U @-@ 17 ( Austria @-@ Hungary ) + In addition , four of the German Type UB Is assigned to the Pola Flotilla based at the Austro @-@ Hungarian Navy 's main naval base at Pola were assigned Austro @-@ Hungarian designations . + SM UB @-@ 3 ( as U @-@ 9 ) + SM UB @-@ 7 ( as U @-@ 7 ) + SM UB @-@ 8 ( as U @-@ 8 ) + SM UB @-@ 14 ( as U @-@ 26 ) + These four boats remained under commission in the German Imperial Navy , retained German crews and commanders , and received orders from the German flotilla commander at Pola . + + = = = Bulgarian Navy = = = + + Germany and Bulgaria negotiated the purchase of two UB I boats for the Bulgarian Navy , UB @-@ 7 and UB @-@ 8 , in 1916 . Two crews of Bulgarian sailors were sent to Kiel for training . Before the purchase could be completed , UB @-@ 7 was sunk , leaving only one boat for Bulgaria . On 25 May 1916 , UB @-@ 8 was officially transferred to Bulgaria for the remainder of the war . + Podvodnik No. 18 ( the former German UB @-@ 8 ) + Key + + + = Military history of Gibraltar during World War II = + + The military history of Gibraltar during World War II exemplifies Gibraltar 's position as a British fortress since the early 18th century and as a vital factor in British military strategy , both as a foothold on the continent of Europe , and as a bastion of British sea power . During World War II , Gibraltar served a vital role in both the Atlantic Theatre and the Mediterranean Theatre , controlling virtually all naval traffic into and out of the Mediterranean Sea from the Atlantic Ocean . + In addition to its commanding position , Gibraltar provided a strongly defended harbour from which ships could operate in both the Atlantic and the Mediterranean . Force H , under the command of Vice @-@ Admiral James Somerville was based in Gibraltar and had the task of maintaining naval superiority and providing a strong escort for convoys to and from the besieged island of Malta . During the course of the war , Gibraltar came under aerial bombardment from Vichy French aircraft and from aircraft of the Italian Royal Air Force ( Regia Aeronautica ) based on Sardinia . Additionally , the fortress was the focus of underwater attacks by the Italian Royal Navy ( Regia Marina ) commando frogman unit ( Decima Flottiglia MAS ) and their human torpedoes . This Italian unit was based on the interned Italian ship SS Olterra in the nearby Spanish harbour of Algeciras . A number of attacks were also carried out by Spanish and Gibraltarian agents acting on behalf of the German Abwehr . + Inside the Rock of Gibraltar itself , miles of tunnels were excavated from the limestone . Masses of rock were blasted out to build an " underground city " . In huge man @-@ made caverns , barracks , offices , and a fully equipped hospital were constructed , complete with an operating theatre and X @-@ ray equipment . + Operation Torch , the Allied invasion of French North Africa in November 1942 , was coordinated from the " Rock " . General Dwight D. Eisenhower , who was given command of the operation , set up his headquarters in Gibraltar during the planning phases of the operation . Following the successful completion of the North African campaign and the surrender of Italy in 1943 , Gibraltar 's role shifted from a forward operating base to a rear @-@ area supply position . The harbour continued to operate dry docks and supply depots for the convoy routes through the Mediterranean until V @-@ E Day in 1945 . + + = = Prelude and evacuation = = + + World War II dramatically changed the lives of Gibraltarians . The decision to enforce mass evacuation in order to increase the strength of the Rock with more military and naval personnel meant that most Gibraltarians ( some for up to ten years ) had nowhere to call ' home ' . Only those civilians with essential jobs were allowed to stay but it gave the entire community a sense of being ' British ' by sharing in the war effort . + In early June 1940 , about 13 @,@ 500 evacuees were shipped to Casablanca in French Morocco . However , following the capitulation of the French to the German armies later in June 1940 , the new Pro @-@ German French Vichy Government found the presence of Gibraltarian evacuees in Casablanca an embarrassment and sought opportunities for their removal . The opportunity soon arose when 15 British cargo vessels arrived under Commodore Crichton , repatriating 15 @,@ 000 French servicemen who had been rescued from Dunkirk . Once their own rescued servicemen had disembarked , the ships were interned until they agreed to take away all the evacuees . Although Crichton was unable to obtain permission to clean and restock his ships ( and contrary to British Admiralty orders which forbade the taking on of evacuees ) , when he saw the mass of civilians pouring through the dockyards , he opened up his gangways for boarding . Just beforehand , the British fleet had destroyed a number of French warships at Mers el @-@ Kebir in order to prevent them ending up in German hands . The attack , during which 1 @,@ 297 French sailors died , led to high tensions , which were evident when families were forced at bayonet point by French troops to board taking only what they could carry , leaving many possessions behind . However , when they arrived at Gibraltar , the Governor would not allow them to land , fearing that once the evacuees were back on the Rock , it would be virtually impossible to evacuate them a second time . Crowds gathered in John Mackintosh Square in the centre of Gibraltar as the news broke , speeches were made and two City Councillors accompanied by the Acting President of the Exchange and Commercial Library went to see the Governor ( Sir Clive Liddell ) to ask that the evacuees be allowed to land . After receiving instructions from London , a landing was allowed as long as the evacuees returned when other ships arrived to take them away from the Rock , and by 13 July the re @-@ evacuation back to Gibraltar had been completed . + British conservative politician Oliver Stanley agreed to accept the evacuees in the United Kingdom , but he argued with Gibraltar over the number of people involved . The Governor , he declared , had given the number of evacuees first as 13 @,@ 000 , then as 14 @,@ 000 and finally as 16 @,@ 000 . He asked for the situation to be clarified , stressing the shortage of accommodation in Britain and insisting that only 13 @,@ 000 could be accepted , 2 @,@ 000 of whom were to be sent to the Portuguese Atlantic island of Madeira . The situation , replied General Liddell on 19 July , " is that this is a fortress liable to heavy and immediate attack and there should be no civilians here whereas there are 22 @,@ 000 . The 13 @,@ 000 was the number sent to Morocco , and more would have been sent had the situation there not altered . " In London the evacuees were placed in the hands of the Ministry of Health , and many were housed in Kensington area . Concern for them in Gibraltar mounted as the air raids against London intensified , coupled with the arrival of harrowing letters , describing the circumstances in which the evacuees were living . + In September rumours were already circulating among the evacuees , and in Gibraltar , that the possibility of re @-@ evacuating the Gibraltarians once more was being mooted , this time the destination being Jamaica , in the West Indies . After much contention , it was decided to send a party directly from Gibraltar to the island , and 1 @,@ 093 evacuees left for Jamaica direct , on 9 October , with more following later on . However petitions followed and the demands were met , partly for strategic reasons and the lack of available shipping . The situation at the end of 1940 , therefore , was that approximately 2 @,@ 000 evacuees were in Jamaica and a lesser number in Madeira , with the bulk of around 10 @,@ 000 housed in the London area . + + = = Royal Air Force involvement : 1939 – 1941 = = + + Construction of a solid surface runway began in late 1939 and in 1940 it was proposed to extend the existing runway to a length of 1 @,@ 550 yards ( 1 @,@ 417 m ) . The land reclamation commenced towards the end of 1941 along with the construction of an RAF camp at the " North Front " , now RAF Gibraltar . The RAF dispatched their next squadron to Gibraltar at this time and it was in September 1939 that war with Germany was declared and the strong possibility of German submarines concentrating in the Strait of Gibraltar and using Spanish port facilities , loomed large in Admiralty thinking . So at 09 : 00 ( UTC ) on the 9 September 1939 , No. 202 Squadron RAF was ordered to Gibraltar , loaded to the gunwales with equipment . + On 25 September 1939 , No 200 ( Coastal ) Group was formed as a subordinate formation to HQ RAF Mediterranean in control of No 202 Sqn . The Group 's function was the control of Royal Air Force units operating from Gibraltar . In late 1940 the Group was transferred to Coastal Command . Later a combined HQ was formed which commenced operations in early 1942 . + + = = Vichy French attacks : 1940 = = + + On 18 July 1940 , after the attack on the French Fleet at Mers @-@ el @-@ Kébir by the British , the Vichy government authorized a bombing raid of Gibraltar as a response . Little damage was reported to have been done . + On Tuesday , 24 September , the Italian Stefani news agency reported : " As a reprisal for the bombardment of Dakar yesterday morning , one @-@ hundred @-@ and @-@ twenty French aircraft based in Morocco attacked Gibraltar . " On the same day , the United Press Agency reported : " The French government has issued an official denial of reports , according to which French aircraft were said to have attacked Gibraltar . Up until now , no reprisals have been undertaken . " But the United Press report ended on an ominous note with : " French reprisals are imminent . " + Again , on the same day , the Vichy French government issued orders for the naval base and city of Gibraltar to be bombarded . As a result , six bomber squadrons of the Vichy French Air Force ( Armée de l 'Air de Vichy ) and four squadrons of the Vichy French Navy ( Marine nationale de Vichy ) were employed in the operation . The 64 bombers flew from bases in Oran , Tafaroui ( in Algeria ) , Meknes , Mediouna , and Port Lyautey ( in Morocco ) . The French action was approved by both the German Armistice Commission and the Italian Armistice Commission . + No British aircraft were encountered and much damage was done in the area south of the fortress . The South Mole and a large ship in the harbour were heavily damaged . In the northern part of Gibraltar , fires broke out . + On 25 September , the French returned with a larger force of eighty @-@ three bombers to cause additional damage to the naval base and harbour installations . Again , aircraft of the British Royal Air Force made no appearance . However , the French crews did report encountering heavy anti @-@ aircraft fire . One LeO 451 bomber was lost and 13 other aircraft were lightly damaged during the two days of bombing attacks . The British armed trawler HMT Stella Sirius was sunk by bombs . + The air attack on 25 September was the last by Vichy forces on Gibraltar . + + = = Operation Felix : 1940 – 1941 = = + + The Rock came through the war relatively unscathed but , given its strategic importance , Germany made plans to capture Gibraltar . Codenamed " Felix " , the plan which was signed by Adolf Hitler himself was formulated at the highest level of command . With or without permission , Germany would take entry through Spain and attack Gibraltar driving the British out of the Western Mediterranean . The Strait would be effectively closed to the Allies once Gibraltar was in German hands , forcing Asia @-@ bound Allied shipping to steam all the way around Africa rather than to proceed to the east via the shorter route through the Mediterranean and the Suez Canal . The Rock was to be heavily dive bombed by planes leaving France but landing afterward at Spanish air bases . To deny a possible Spanish capture of the base , the German planners decided that the final attack to seize Gibraltar was to be made by German troops alone . + Diplomatic failure at the highest levels of government prevented the operation from occurring at the beginning of 1941 which had been drawn up in detail by the Wehrmacht in the summer and autumn of 1940 . + General Ludwig Kübler 's XLIX Corps would conduct the actual attack on the Rock . The assault forces would comprise the Infantry Regiment Großdeutschland , the 98th Regiment of the 1st Mountain Division , 26 medium and heavy artillery battalions , three observation battalions , three engineer battalions , two smoke battalions , a detachment of 150 Brandenburgers , and up to 150 miniature remote controlled demolition vehicles ( Goliaths ) , packed with high explosives . + As part of a combined @-@ force operation , the German Air Force ( Luftwaffe ) would contribute Ju 88As , Stukas , Messerschmitts , three light AA battalions , and three heavy AA battalions . Nazi Germany 's Kriegsmarine would cooperate by using U @-@ boats to interfere with British naval movement and emplacing coastal batteries to further discourage the Royal Navy . + On 10 March 1941 , with Operation Barbarossa looming , Felix was amended to Operation Felix @-@ Heinrich , whereby German troops would be withdrawn from the USSR to capture Gibraltar . As a result of Spanish dictator Francisco Franco 's intransigence , the operation was postponed , modified , and ultimately abandoned . + + = = Italian bombing of Gibraltar = = + + From Sardinia , Italian Piaggio P.108 bombers attacked Gibraltar several times , mainly in 1942 . The last raids on Gibraltar were done during the 1943 Allied landing in Algeria , when those bombers hit successfully even the Oran port . + The only unit of the Regia Aeronautica ( Royal Air Force ) ever to fly the Piaggio P.108 was the " 274th Long @-@ Range Bombardment Squadron " . This unit was formed in May 1941 around the first machines that came off the assembly lines . The training of the crews lasted far longer than anticipated and only in June 1942 the 274th became operational . The most spectacular raids with the P. 108 bombers were flown in October 1942 when several night attacks against Gibraltar were undertaken from Sardinia . + After the armistice of Cassibile ( 8 September ) , the German @-@ allied Italian Social Republic launched at least two raids on Gibraltar : one on the night of 4 – 5 June 1944 with ten SM.79bis aircraft and another on 6 June with nine aircraft . Both sorties were undertaken by the Gruppo Aerosiluranti " Buscaglia – Faggioni " . + + = = Italian frogmen raids 1940 – 1943 = = + + Known as the " Floating Trojan Horse of Gibraltar " , Decima Flottiglia MAS , an Italian commando frogman unit created during the Fascist government , engaged in numerous attacks against the harbour at Gibraltar . + Gibraltar was a very tempting target for the Italians , who saw it as a refuge for British warships and allied merchant shipping . The Italian frogmen originally used a Spanish villa ( Villa Carmela ) located two miles ( 3 km ) from Gibraltar owned by an Italian officer who had married a Spanish woman named Conchita Ramognino . Their base was shifted later to the Italian tanker SS Olterra , interned in Algeciras . + + = = Abwehr saboteurs from Spain = = + + Lesser known than the Italian actions were the sabotage operations and limpet @-@ mine attacks carried out by Spanish and Gibraltarian agents recruited in the Campo de Gibraltar by the Germans . The Abwehr contacted a Spanish staff officer from Campo de Gibraltar , Lieutenant Colonel Eleuterio Sánchez Rubio , a Spanish officer , member of the Falange and coordinator of the intelligence operations in the Campo , to establish a network of saboteurs with access to Gibraltar . Sánchez Rubio designated Emilio Plazas Tejera , also a member of Falange , as operations chief of the organisation . Most of the recruits for the sabotage operations were Spaniards from the Campo . A combination of financial reward , ideological commitment and some threats and intimidation were used to gather a significant number of agents . According to the British intelligence , there were at least 183 Spaniards and Gibraltarians involved in the espionage and sabotage operations against Gibraltar . + Sabotage operations were ordered from Berlin in the late autumn of 1940 , but actual work did not start until early 1941 . The first operations were unsuccessful . A first attempt to smuggle a bomb into Gibraltar was aborted , as the timing device was faulty . In February there was a large explosion in the North Tunnel , and in April a bomb blew up near the airfield . In June 1941 , however , the British intelligence foiled a new attempt , by a German agent , to attach a mine alongside an Allied cargo ship . Another attempt failed when Plazas placed a bomb inside an ammunition store but was not able to bring the explosive . It was not until 1942 that the operations begun to succeed . In January 1942 , two Spanish agents manage to destroy two aircraft at the North Front landing strip . + Financed , trained and equipped by the Germans , the saboteurs sank the armed trawler HMT Erin , and destroyed the auxiliary minesweeper HMT Honju , which resulted in the deaths of six British seamen on 18 January 1942 . Plazas was assisted by the Spanish naval commander of Puente Mayorga , Manuel Romero Hume , who allowed him to beach a rowboat there . The British intelligence was able however to counteract the sabotage operations . In March 1942 , a Gibraltarian , José Key , one of the most prominent agents working for the Germans , responsible for the collection of information on military movements for the Abwehr was arrested and executed in Wandsworth Prison in late 1942 . By September 1942 , Plazas , whose activities were closely monitored by the British at that time , resigned and left Carlos Calvo , his second in command , in charge of the operations . In late 1942 , the German headquarters in Berlin ordered the sabotage operations being expanded . In early 1943 , the arrival of an experienced head of Abwehr operations in Spain improved the outreach of the operations . + In March 1943 an ammunition dump was blown up by Calvo 's agents . The British , growing suspicious of some of the saboteurs , banned them from entering Gibraltar . This forced the Abwehr to ask Calvo for new personnel . A Spaniard working on the Rock , José Martín Muñoz , was responsible for the explosion and fire at a large fuel tank at Coaling Island on 30 June 1943 ; this mission , however , would be the first and the last for Muñoz , because he was cornered and arrested by British authorities in August , when he tried to smuggle a bomb into a weapons magazine inside Ragged Staff Cave . After being sentenced to death , he was hanged on 11 January 1944 in Gibraltar by British executioner Albert Pierrepoint . A member of an unrelated Abwehr sabotage network , Luis López Cordón @-@ Cuenca ( also arrested in 1943 ) was executed by Pierrepoint on the same day . Calvo himself was put under arrest by the Spanish police and neutralized . He would be a free man again in December , when he rejoined the Abwehr in Madrid , under direct orders of Wolfgang Blaum , aka Baumann , head of the sabotage section in Spain . After a Falangist attempt against the life of pro @-@ allied General José Enrique Varela , perpetrated by Sánchez Rubio network 's agent Juan José Domínguez and a meeting between Anthony Eden and the Spanish ambassador at London , Jacobo Fitz @-@ James Stuart , Abwehr activities around Gibraltar came to an end . + + = = Operation Tracer : 1941 – 1942 = = + + Operation Tracer was a top @-@ secret British stay @-@ behind spying mission that was only to be implemented if Gibraltar was captured by the Axis Powers . Six men were to be sealed in a cave and left with only enough supplies for a year . The volunteers — two doctors , three signalmen and their leader — would run an observation post with one 12 @-@ inch ( 300 mm ) by 6 @-@ inch ( 150 mm ) slit looking over the harbour and a concealed outdoor terrace over the Mediterranean . The team would then wire back all shipping movements to the British Admiralty . + They were told there would be no way out and anyone who died within the chamber would have to be embalmed and cemented into the brick floor . Only if Germany was defeated within their first year would they be released . + As the threat of invasion was clearly felt in late 1941 , an idea for a series of secret observation posts ( first in Gibraltar and later in other places like Malta and Aden ) was put together under Operation Tracer . + Work in Gibraltar began immediately under Commander Geoffrey Birley and his chief engineer Colonel Fordham . The site chosen at Lord Airey 's Battery on the southern tip of the Rock already had an existing tunnelling scheme for a shelter . Extensive trials of the equipment began in January 1942 under the eye of MI6 radio expert Colonel Richard Gambier @-@ Parry . Much thought was also given to the type of men needed for such a strange and demanding task . A member of Scott ’ s ill @-@ fated expedition to the Antarctic , George Murray Levick was called up as Surgeon @-@ Commander to advise on survival techniques . There were practical matters such as diet , exercise , sanitation , and clothing to consider as well as vital " psychology of the personnel " . The full team was in place by the end of summer 1942 and their cavern fully equipped and ready for occupation . A comprehensive manual was prepared on all aspects of the operation and it was considered that similar secret lookout posts should be prepared throughout the world in the event of future wars . However , Operation Tracer was never needed , as Adolf Hitler turned his attention away from Gibraltar and towards the Eastern Front . + The operation had been clouded in mystery until the discovery of papers at the Public Record Office in Kew UK . Previously in the 1960s , details of the story were told to a journalist by his intelligence service contacts and he wrote these up as " Operation Monkey " , yet facts were very sparse . + In 1997 " Stay Behind Cave " ( as it was nicknamed ) was discovered in Gibraltar by the Gibraltar Caving Group , but no account was ever obtained from anyone associated with the mission . The discovery came about when the group encountered a strong gust of wind in a tunnel . Further searching led them to break through a wall into chambers which had never been used and had remained sealed for over 50 years . + In November 2006 Jim Crone and Sergeant Major Pete Jackson , senior tunnel guide with the Royal Gibraltar Regiment , met possibly the only member of Operation Tracer still alive when they travelled to meet Dr. W. A. Bruce Cooper at his home in England . Cooper , 92 at the time , provided an opportunity to shed light on the operation with his direct involvement in the mission as a Surgeon @-@ Lieutenant in the Royal Navy Volunteer Reserve ( RNVR ) . He recalled stories about his colleagues , his training , and his feelings about the task . + + = = Mediterranean U @-@ boat Campaign : 1941 – 1944 = = + + The Mediterranean U @-@ boat Campaign lasted approximately from 21 September 1941 to May 1944 . The Kriegsmarine tried to isolate Gibraltar , Malta , and Suez and disrupt Britain 's trade routes . More than sixty U @-@ boats were sent to interdict Allied shipping in the Mediterranean Sea . Many of these U @-@ boats were themselves attacked negotiating the Strait of Gibraltar controlled by Britain . Nine U @-@ boats were sunk while attempting passage and ten more were damaged . + + = = North African Campaign : 1942 = = + + Plans for the Allied counter offensive after the attack on Pearl Harbor were ongoing by mid @-@ 1942 . An invasion of Europe in 1943 would be unworkable , but the allies could attack the " soft underbelly of Europe " through the Mediterranean , as Prime Minister Winston Churchill put it . Devised by President Franklin Roosevelt and Churchill and code named Operation Torch , the plan was to occupy French North Africa : Morocco , Algeria , and Tunisia . From these French colonies , attacks could be launched that would drive Italy out of the war . + In July 1942 , Lieutenant General Dwight D. Eisenhower was appointed Allied Commander @-@ in @-@ Chief of Operation Torch . Churchill placed Gibraltar under the command of General Eisenhower as the temporary headquarters for this , the first large @-@ scale Anglo @-@ American operation of the war . He arrived in Gibraltar on 5 November 1942 to take over , not just command of Operation Torch itself , but also military command of Gibraltar . + General Eisenhower stayed at The Convent , the official Governor 's residence , but his operational headquarters were in a small chamber in a tunnel in the heart of the Rock . In his memoirs General Eisenhower wrote : + The subterranean passages under the Rock provided the sole available office space , and in them was located the signal equipment by which we expected to keep in touch with the commanders of the three assault forces . The eternal darkness of the tunnels was here and there partially pierced by feeble electric bulbs . Damp , cold air in block @-@ long passages was heavy with stagnation and did not noticeably respond to the clattering efforts of electric fans . Through the arched ceilings came a constant drip , drip , drip of surface water that faithfully but drearily ticked off the seconds of the interminable , almost unendurable , wait which always occurs between completion of a military plan and the moment action begins . + One hundred thousand soldiers on the high seas in a multitude of transports converged on Gibraltar . More than 400 aircraft of all types were crammed into the dispersal areas around the Gibraltar runway . Fighters had been shipped in crates and assembled on the airfield . Every available area of storage was taken up with ammunition , fuel , and other essential supplies . 168 American pilots were housed in the RAF messes at North Front . + On 8 November 1942 , 466 aircraft from Gibraltar landed on captured North African airfields . + From their headquarters in Gibraltar , General Eisenhower and Admiral Sir Andrew Browne Cunningham directed Operation Torch , the first major combined combat operation during World War II involving American and British forces . + + = = = War tunnels = = = + + Given that Gibraltar was a small town with only a few defences protecting it , the solution was to build a massive series of tunnels and chambers inside the natural protection of the Rock of Gibraltar . This " town " inside the Rock contained its own power station , water supply , and hospital . Some soldiers posted here would not see the light of day for months on end . Two Canadian engineer companies , the only soldiers with diamond @-@ tipped drills and 5 British engineer companies , added some 30 miles ( 48 km ) of such tunnels , a feat thought impossible at the time . That was enough to hold all 30 @,@ 000 troops on the rock . Today , the rock has more underground tunnels than roads . + + = = Death of Władysław Sikorski : 1943 = = + + On 4 July 1943 , a Liberator bomber from RAF Transport Command took off from Gibraltar for England . On board was General Władysław Sikorski , Prime Minister of Poland 's London @-@ based government in exile and Commander @-@ in @-@ Chief of its armed forces , returning from visiting Polish troops in the Middle East . + The aircraft climbed normally from the runway , levelled off to gather speed but then suddenly lost height and crashed into the harbour . The 62 @-@ year @-@ old general died , along with 15 others . The sole survivor was the Czech @-@ born pilot , Eduard Prchal , who was rescued by an RAF launch . The bodies of five passengers and crew , including Sikorski 's daughter , were never found . + The coffins of General Sikorski and his Chief @-@ of @-@ Staff , General Kilimecki , were draped in the Polish National Flag and lay in state in the Cathedral of St. Mary the Crowned . After a Requiem Mass , the bodies were carried in procession to the H.M. Dockyard with full Military Honours to be shipped to London in anticipation that General Sikorski 's remains would one day be returned to a liberated Poland . The route to the dockyard was lined by British troops and the coffins carried and escorted by Polish Servicemen . + + = = = Investigation = = = + + In 1943 a British Court of Inquiry investigated the crash of Sikorski 's Liberator II AL523 , but was unable to determine the probable cause , finding only that it was an accident and the " aircraft became uncontrollable for reasons which cannot be established " . A popular theory was insufficient technical maintenance leading to jamming aircraft controls . Despite this finding , the political context of the event , coupled with a variety of curious circumstances , immediately gave rise to speculation that Sikorski 's death had been no accident , and may in fact have been the direct result of a Soviet , British or even Polish conspiracy . + + = = Aftermath = = + + The surrender of Italy in September 1943 lifted any possible objections to the return of the evacuees to the Rock . As a result , a Resettlement Board was established in November , and at a meeting of the Board on 8 February 1944 repatriation priorities were finally agreed . On 6 April 1944 the first group of 1 @,@ 367 repatriates arrived on the Rock directly from the United Kingdom and on 28 May , the first repatriation party left Madeira , and by the end of 1944 only 520 non @-@ priority evacuees remained on the island . + In London , home @-@ comers were making claims on the evacuees ’ wartime accommodation and 500 Gibraltarians were re @-@ evacuated to Scotland and 3 @,@ 000 to camps in Northern Ireland . Although the Governor , Lt. General Sir Noel Mason @-@ MacFarlane , fought valiantly on behalf of the evacuees and did not accept the lack of accommodation as a sufficient reason for the delays . As late as 1947 there were still 2 @,@ 000 in Northern Irish camps . The last of the evacuees did not see the Rock again until 1951 . + + = = See Also = = + + Military history of the British Commonwealth in the Second World War + + + = Nerva = + + Nerva ( Latin : Marcus Cocceius Nerva Caesar Augustus ; 8 November , 30 AD – 27 January , 98 AD ) was Roman Emperor from 96 to 98 . Nerva became Emperor at the age of sixty @-@ five , after a lifetime of imperial service under Nero and the rulers of the Flavian dynasty . Under Nero , he was a member of the imperial entourage and played a vital part in exposing the Pisonian conspiracy of 65 . Later , as a loyalist to the Flavians , he attained consulships in 71 and 90 during the reigns of Vespasian and Domitian respectively . + On 18 September 96 , Domitian was assassinated in a palace conspiracy involving members of the Praetorian Guard and several of his freedmen . On the same day , Nerva was declared emperor by the Roman Senate . This was the first time the Senate elected a Roman Emperor . As the new ruler of the Roman Empire , he vowed to restore liberties which had been curtailed during the autocratic government of Domitian . + Nerva 's brief reign was marred by financial difficulties and his inability to assert his authority over the Roman army . A revolt by the Praetorian Guard in October 97 essentially forced him to adopt an heir . After some deliberation Nerva adopted Trajan , a young and popular general , as his successor . After barely fifteen months in office , Nerva died of natural causes on 27 January 98 . Upon his death he was succeeded and deified by Trajan . + Although much of his life remains obscure , Nerva was considered a wise and moderate emperor by ancient historians . Nerva 's greatest success was his ability to ensure a peaceful transition of power after his death , thus founding the Nerva – Antonine dynasty . + + = = Early career = = + + + = = = Family = = = + + Marcus Cocceius Nerva was born in the village of Narni , 50 kilometers north of Rome , to the family of Marcus Cocceius Nerva , Suffect Consul in 40 , and Sergia Plautilla . Ancient sources report the date as either 30 or 35 . He had at least one attested sister , named Cocceia , who married Lucius Salvius Titianus Otho , the brother of the future Emperor Otho . + Like Vespasian , the founder of the Flavian dynasty , Nerva was a member of the Italian nobility rather than one of the elite of Rome . Nevertheless , the Cocceii were among the most esteemed and prominent political families of the late Republic and early Empire , attaining consulships in each successive generation . The direct ancestors of Nerva on his father 's side , all named Marcus Cocceius Nerva , were associated with imperial circles since the time of Emperor Augustus ( 27 BC – AD 14 ) . + His great @-@ grandfather was Consul in 36 BC ( in replacement , and abdicated ) , and Governor of Asia in the same year . His grandfather became Consul Suffect in July of either 21 or 22 , and was known as a personal friend of Emperor Tiberius ( AD 14 – 37 ) , accompanying the emperor during his voluntary seclusion on Capri from 23 onwards , dying in 33 . Nerva 's father , finally , attained the consulship in 40 under emperor Caligula ( 37 – 41 ) . The Cocceii were connected with the Julio @-@ Claudian dynasty through the marriage of Sergia Plautilla 's brother Octavius Laenas , and Rubellia Bassa , the great @-@ granddaughter of Tiberius . + + = = = Imperial service = = = + + Not much of Nerva 's early life or career is recorded , but it appears he did not pursue the usual administrative or military career . He was praetor @-@ elect in the year 65 and , like his ancestors , moved in imperial circles as a skilled diplomat and strategist . As an advisor to Emperor Nero , he successfully helped detect and expose the Pisonian conspiracy of 65 . Exactly what his contribution to the investigation was is not known but his services must have been considerable , since they earned him rewards equal to those of Nero 's guard prefect Tigellinus . He received triumphal honors — which was usually reserved for military victories — and the right to have his statues placed throughout the palace . + According to the contemporary poet Martial , Nero also held Nerva 's literary abilities in high esteem , hailing him as the " Tibullus of our time " . Another prominent member of Nero 's entourage was Vespasian , an old and respected general who had celebrated military triumphs during the 40s . It appears Vespasian befriended Nerva during his time as an imperial advisor , and may have asked him to watch over Vespasian 's youngest son Domitian when Vespasian departed for the Jewish war in 67 . + The suicide of Nero on 9 June 68 brought the Julio @-@ Claudian dynasty to an end , leading to the chaotic Year of the Four Emperors , which saw the successive rise and fall of the emperors Galba , Otho and Vitellius , until the accession of Vespasian on 21 December 69 . Virtually nothing is known of Nerva 's whereabouts during 69 , but despite the fact that Otho was his brother @-@ in @-@ law , he appears to have been one of the earliest and strongest supporters of the Flavians . + For services unknown , he was rewarded with a consulship early in Vespasian 's reign in 71 . This was a remarkable honour , not only because he held this office early under the new regime , but also because it was an ordinary consulship ( instead of a less prestigious suffect consulship ) , making him one of the few non @-@ Flavians to be honoured in this way under Vespasian . After 71 Nerva again disappears from historical record , presumably continuing his career as an inconspicuous advisor under Vespasian ( 69 – 79 ) and his sons Titus ( 79 – 81 ) and Domitian ( 81 – 96 ) . + He re @-@ emerges during the revolt of Saturninus in 89 . On 1 January , 89 , the governor of Germania Superior , Lucius Antonius Saturninus , and his two legions at Mainz , Legio XIV Gemina and Legio XXI Rapax , revolted against the Roman Empire with the aid of a tribe of the Chatti . The governor of Germania Inferior , Lappius Maximus , moved to the region at once , assisted by the procurator of Rhaetia , Titus Flavius Norbanus . Within twenty @-@ four days the rebellion was crushed , and its leaders at Mainz savagely punished . The mutinous legions were sent to the front of Illyricum , while those who had assisted in their defeat were duly rewarded . + Domitian opened the year following the revolt by sharing the consulship with Nerva . Again , the honour suggested Nerva had played a part in uncovering the conspiracy , perhaps in a fashion similar to what he did during the Pisonian conspiracy under Nero . Alternatively , Domitian may have selected Nerva as his colleague to emphasise the stability and status @-@ quo of the regime . The revolt had been suppressed , and the Empire could return to order . + + = = Emperor = = + + + = = = Accession = = = + + On 18 September , 96 , Domitian was assassinated in a palace conspiracy organised by court officials . The Fasti Ostienses , the Ostian Calendar , records that the same day the Senate proclaimed Marcus Cocceius Nerva emperor . Despite his political experience , this was a remarkable choice . Nerva was old and childless , and had spent much of his career out of the public light , prompting both ancient and modern authors to speculate on his involvement in Domitian 's assassination . + According to Cassius Dio , the conspirators approached Nerva as a potential successor prior to the assassination , which indicates that he was at least aware of the plot . Suetonius by contrast does not mention Nerva , but he may have omitted his role out of tactfulness . Considering the works of Suetonius were published under Nerva 's direct descendants Trajan and Hadrian , it would have been less than sensitive of him to suggest the dynasty owed its accession to murder . On the other hand , Nerva lacked widespread support in the Empire , and as a known Flavian loyalist his track record would not have recommended him to the conspirators . The precise facts have been obscured by history , but modern historians believe Nerva was proclaimed Emperor solely on the initiative of the Senate , within hours after the news of the assassination broke . + Although he appeared to be an unlikely candidate on account of his age and weak health , Nerva was considered a safe choice precisely because he was old and childless . Furthermore , he had close connections with the Flavian dynasty and commanded the respect of a substantial part of the Senate . Nerva had seen the anarchy which had resulted from the death of Nero ; he knew that to hesitate even for a few hours could lead to violent civil conflict . Rather than decline the invitation and risk revolts , he accepted . The decision may have been hasty so as to avoid civil war , but neither the Senate nor Nerva appears to have been involved in the conspiracy against Domitian . + Following the accession of Nerva as emperor , the Senate passed damnatio memoriae on Domitian : his coins and statues were melted , his arches were torn down and his name was erased from all public records . In many instances , existing portraits of Domitian , such as those found on the Cancelleria Reliefs , were simply recarved to fit the likeness of Nerva . This allowed quick production of new images and recycling of previous material . In addition , the vast palace which Domitian had erected on the Palatine Hill , known as the Flavian Palace , was renamed the " House of the People " , and Nerva himself took up residence in Vespasian 's former villa in the Gardens of Sallust . + + = = = Administration = = = + + The change of government was welcome particularly to the senators , who had been harshly persecuted during Domitian 's reign . As an immediate gesture of goodwill towards his supporters , Nerva publicly swore that no senators would be put to death as long as he remained in office . He called an end to trials based on treason , released those who had been imprisoned under these charges , and granted amnesty to many who had been exiled . + All properties which had been confiscated by Domitian were returned to their respective families . Nerva also sought to involve the Senate in his government , but this was not entirely successful . He continued to rely largely on friends and advisors that were known and trusted , and by maintaining friendly relations with the pro @-@ Domitianic faction of the Senate , he incurred hostility which may have been the cause for at least one conspiracy against his life . + Having been proclaimed emperor solely on the initiative of the Senate , Nerva had to introduce a number of measures to gain support among the Roman populace . As was custom by this time , a change of emperor was expected to bring with it a generous payment of gifts and money to the people and the army . Accordingly , a congiarium of 75 denarii per head was bestowed upon the citizens , while the soldiers of the Praetorian Guard received a donativum which may have amounted to as much as 5000 denarii per person . This was followed by a string of economic reforms intended to alleviate the burden of taxation from the most needy Romans . + To the poorest , Nerva granted allotments of land worth up to 60 million sesterces . He exempted parents and their children from a 5 % inheritance tax , and he made loans to Italian landowners on the condition that they pay interest of 5 % to their municipality to support the children of needy families ; alimentary schemes which were later expanded by Trajan , Antoninus Pius , and Marcus Aurelius . Furthermore , numerous taxes were remitted and privileges granted to Roman provinces . Namely , he probably abolished the Fiscus Iudaicus , the additional tax which all Jews throughout the Empire had to pay : some of his coins bear the legend FISCI IUDAICI CALUMNIA SUBLATA ( abolition of malicious prosecution regarding the Jewish tax ) . + Before long , Nerva 's expenses strained the economy of Rome and , although perhaps not ruinous to the extent once suggested by Syme , necessitated the formation of a special commission of economy to drastically reduce expenditures . The most superfluous religious sacrifices , games and horse races were abolished , while new income was generated from Domitian 's former possessions , including the auctioning of ships , estates , and even furniture . Large amounts of money were obtained from Domitian 's silver and gold statues , and Nerva forbade that similar images be made in his honor . + Because he reigned only briefly , Nerva 's public works were few , instead completing projects which had been initiated under Flavian rule . This included extensive repairs to the Roman road system and the expansion of the aqueducts . The latter program was headed by the former consul Sextus Julius Frontinus , who helped to put an end to abuses and later published a significant work on Rome 's water supply , De Aquis Urbis Romae . The only major landmarks constructed under Nerva were a granary , known as the Horrea Nervae , and a small Imperial Forum begun by Domitian , which linked the Forum of Augustus to the Temple of Peace . Little remains , partly because the Via dei Fori Imperiali cuts across it . + + = = = Crisis of succession = = = + + Despite Nerva 's measures to remain popular with the Senate and the Roman people , support for Domitian remained strong in the army , which had called for his deification immediately after the assassination . In an attempt to appease the soldiers of the Praetorian Guard , Nerva had dismissed their prefect Titus Petronius Secundus — one of the chief conspirators against Domitian — and replaced him with a former commander , Casperius Aelianus . + Likewise , the generous donativum bestowed upon the soldiers following his accession was expected to swiftly silence any protests against the violent regime change . The Praetorians considered these measures insufficient , however , and demanded the execution of Domitian 's assassins , which Nerva refused . Continued dissatisfaction with this state of affairs would ultimately lead to the gravest crisis of Nerva 's reign . + While the swift transfer of power following Domitian 's death had prevented a civil war from erupting , Nerva 's position as an emperor soon proved too vulnerable , and his benign nature turned into a reluctance to assert his authority . Upon his accession , he had ordered a halt to treason trials , but at the same time allowed the prosecution of informers by the Senate to continue . This measure led to chaos , as everyone acted in his own interests while trying to settle scores with personal enemies , leading the consul Fronto to famously remark that Domitian 's tyranny was ultimately preferable to Nerva 's anarchy . Early in 97 , a conspiracy led by the senator Gaius Calpurnius Piso Crassus Frugi Licinianus failed , but once again Nerva refused to put the conspirators to death , much to the disapproval of the Senate . + The situation was further aggravated by the absence of a clear successor , made more pressing because of Nerva 's old age and sickness . He had no natural children of his own and only distant relatives , who were unsuited for political office . A successor would have to be chosen from among the governors or generals in the Empire and it appears that , by 97 , Nerva was considering to adopt Marcus Cornelius Nigrinus Curiatius Maternus , the powerful governor of Syria . This was covertly opposed by those who supported the more popular military commander Marcus Ulpius Traianus , commonly known as Trajan , a general of the armies at the German frontier . + In October 97 these tensions came to a head when the Praetorian Guard , led by Casperius Aelianus , laid siege to the Imperial Palace and took Nerva hostage . He was forced to submit to their demands , agreeing to hand over those responsible for Domitian 's death and even giving a speech thanking the rebellious Praetorians . Titus Petronius Secundus and Parthenius , Domitian 's former chamberlain , were sought out and killed . Nerva was unharmed in this assault , but his authority was damaged beyond repair . + He realized that his position was no longer tenable without the support of an heir who had the approval of both the army and the people . Shortly thereafter , he announced the adoption of Trajan as his successor , and with this decision all but abdicated . Trajan was formally bestowed with the title of Caesar and shared the consulship with Nerva in 98 : + Contrary to the view here popularized by Cassius Dio , however , Nerva had in fact little choice with regard to his successor . Faced with a major crisis , he desperately needed the support of a man who could restore his damaged reputation . The only candidate with sufficient military experience , consular ancestry , and connections was Trajan . Likewise , Edward Gibbon 's assertion that Nerva hereby established a tradition of succession through adoption among the Five Good Emperors has found little support among modern historians . + + = = Death and legacy = = + + On 1 January , 98 , at the start of his fourth consulship , Nerva suffered a stroke during a private audience . Shortly thereafter he was struck by a fever and died at his villa in the Gardens of Sallust , on 28 January . He was deified by the Senate , and his ashes were laid to rest in the Mausoleum of Augustus . + Nerva was succeeded without incident by his adopted son Trajan , who was greeted by the Roman populace with much enthusiasm . According to Pliny the Younger , Trajan dedicated a temple in honour of Nerva , yet no trace of it has ever been found ; nor was a commemorative series of coins for the Deified Nerva issued until ten years after his death . According to Cassius Dio , however , the Guard prefect responsible for the mutiny against Nerva , Casperius Aelianus , was ' dismissed ' upon Trajan 's accession . + Due to the lack of written sources on this period , much of Nerva 's life has remained obscure . The most substantial surviving account of the reign of Nerva was written by the 3rd @-@ century historian Cassius Dio . His Roman History , which spans nearly a millennium , from the arrival of Aeneas in Italy until the year 229 , was composed more than one hundred years after Nerva had died . Further details are added by an abridged biography from the Epitome de Caesaribus , a work alleged to have been authored by the 4th @-@ century historian Aurelius Victor . + A more comprehensive text , presumed to describe the life of Nerva in closer detail , is the Histories , by the contemporary historian Tacitus . The Histories is an account of the history of Rome covering three decades from the suicide of emperor Nero in 69 until the death of Domitian in 96 . Unfortunately , a substantial part of the work has been lost , with only the first five books covering the Year of the Four Emperors remaining . In the introduction to his biography of Gnaeus Julius Agricola however , Tacitus speaks highly of Nerva , describing his reign as " the dawn of a most happy age , [ when ] Nerva Caesar blended things once irreconcilable , sovereignty and freedom " . + The surviving histories speak equally positively of Nerva 's brief reign , although none offer a substantial commentary on his policies . Both Cassius Dio and Aurelius Victor emphasize his wisdom and moderation , with Dio commending his decision to adopt Trajan as his heir . These views were later popularized by the 18th @-@ century historian Edward Gibbon in his History of the Decline and Fall of the Roman Empire . Gibbon considered Nerva the first of the Five Good Emperors , five successive rulers under whom the Roman Empire " was governed by absolute power , under the guidance of wisdom and virtue " from 96 until 180 . Nevertheless , even Gibbon notes that , compared to his successors , Nerva may have lacked the necessary qualifications for a successful reign : + Modern history has expanded upon this sentiment , characterizing Nerva as a well @-@ intentioned but weak and ineffectual ruler . The Roman Senate enjoyed renewed liberties under his rule , but Nerva 's mismanagement of the state finances and lack of authority over the army ultimately brought Rome near the edge of a significant crisis . The mutiny led by Casperius Aelianus was never intended as a coup , but a calculated attempt to put pressure on the emperor . The adoption of Trajan expanded his power base with a respected , reliable general as his successor . Murison concludes that Nerva 's real talents were in fact ill @-@ suited to the emperorship : + His place in Roman history is therefore summarized as a necessary , if tumultuous stop @-@ gap before the Trajanic @-@ Antonine dynasties . It is a fact of irony that even the only major public work completed during his reign , the Forum of Nerva , ultimately became known as the Forum Transitorium , or transitional forum . + Two modern statues which commemorate Nerva can be found in towns associated with him . There is an equestrian statue in Gloucester , England , a town which was founded in his honour . It is at the entrance to Southgate Street . There is also a statue at his alleged birthplace , Narni in Italy , at Cocceio Nerva street . + + = = Nerva – Antonine family tree = = + + + = = In popular culture = = + + Nerva was played by Norman Wooland in the 1951 film Quo Vadis . + He was also played by Giuliano Gemma in the 1964 film Revolt of the Praetorians . + + = = = Secondary material = = = + + Narnia web links , International links ' , International links from Narnia.it web site + Wend , David ( 1998 ) . " Nerva ( 96 – 98 A.D. ) " . De Imperatoribus Romanis . Retrieved 2007 @-@ 08 @-@ 11 . + Pelham , Henry Francis ( 1911 ) . " Nerva , Marcus Cocceius " . In Chisholm , Hugh . Encyclopædia Britannica 19 ( 11th ed . ) . Cambridge University Press. pp. 393 – 394 . + + = The Hustler ( film ) = + + The Hustler is a 1961 American drama film directed by Robert Rossen from Walter Tevis 's 1959 novel of the same name , adapted for the screen by Rossen and Sidney Carroll . It tells the story of small @-@ time pool hustler " Fast Eddie " Felson and his desire to break into the " major league " of professional hustling and high @-@ stakes wagering by high @-@ rollers that follows it . He throws his raw talent and ambition up against the best player in the country ; seeking to best the legendary pool player " Minnesota Fats . " After initially losing to Fats and getting involved with unscrupulous manager Bert Gordon , Eddie returns to try again , but only after paying a terrible personal price . + The film was shot on location in New York City . It stars Paul Newman as " Fast " Eddie Felson , Jackie Gleason as Minnesota Fats , Piper Laurie as Sarah , and George C. Scott as Bert . + The Hustler was a major critical and popular success , gaining a reputation as a modern classic . Its exploration of winning , losing , and character garnered a number of major awards ; it is also credited with helping to spark a resurgence in the popularity of pool . Real @-@ life pool player Rudolf Wanderone , known at the time as " New York Fats " and " Chicago Fats " , claimed to be the real life inspiration for Gleason 's character , Minnesota Fats , and adopted the name as his own . + + = = Plot = = + + Small @-@ time pool hustler " Fast Eddie " Felson travels cross @-@ country with his partner Charlie to challenge the legendary player " Minnesota Fats " . Arriving at Fats ' home pool hall , Eddie declares he will win $ 10 @,@ 000 that night . Fats arrives and he and Eddie agree to play straight pool for $ 200 a game . After initially falling behind , Eddie surges back to being $ 1 @,@ 000 ahead and suggests raising the bet to $ 1 @,@ 000 a game ; Fats agrees . He sends out a runner , Preacher , to Johnny 's Bar , ostensibly for whiskey , but really to get professional gambler Bert Gordon to the hall . Eddie gets ahead $ 11 @,@ 000 and Charlie tries to convince him to quit , but Eddie insists the game will end only when Fats says it is over . Fats agrees to continue after Bert labels Eddie a " loser . " After 25 hours and an entire bottle of bourbon , Eddie is ahead over $ 18 @,@ 000 , but loses it all along with all but $ 200 of his original stake . At their hotel later , Eddie leaves half of the remaining stake with a sleeping Charlie and leaves . + Eddie stashes his belongings at the local bus terminal , where he meets Sarah Packard , an alcoholic who is supported by her father , attends college part @-@ time , and walks with a limp . He meets her again at a bar . They go back to her place but she refuses to let him in , saying he is " too hungry " . Eddie moves into a rooming house and starts hustling for small stakes . He finds Sarah again and this time she takes him in , but with reservations . Charlie finds Eddie at Sarah 's and tries to persuade him to go back out on the road . Eddie refuses and Charlie realizes he plans to challenge Fats again . Eddie realizes that Charlie held out his percentage and becomes enraged , believing that with that money he could have rebounded to beat Fats . Eddie dismisses Charlie as a scared old man and tells him to " go lie down and die " by himself . + At Johnny 's Bar , Eddie joins a poker game where Bert is playing , and loses $ 20 . Afterward , Bert tells Eddie that he has talent as a pool player but no character . He figures that Eddie will need at least $ 3 @,@ 000 to challenge Fats again . Bert calls him a " born loser " but nevertheless offers to stake him in return for 75 % of his winnings ; Eddie refuses . + Eddie humiliates a local pool shark , exposing himself as a hustler , and the other players punish him by breaking his thumbs . As he heals , Sarah cares for him and tells him she loves him , but he cannot say the words in return . When Eddie is ready to play , he agrees to Bert 's terms , deciding that a " 25 % slice of something big is better than a 100 % slice of nothing " . + Bert , Eddie , and Sarah travel to the Kentucky Derby , where Bert arranges a match for Eddie against a wealthy local socialite named Findley . The game turns out to be carom billiards , not pool . When Eddie loses badly , Bert refuses to keep staking him . Sarah pleads with Eddie to leave with her , saying that the world he is living in and its inhabitants are " perverted , twisted , and crippled " ; he refuses . Seeing Eddie 's anger , Bert agrees to let the match continue at $ 1 @,@ 000 a game . Eddie comes back to win $ 12 @,@ 000 . He collects his $ 3 @,@ 000 share and decides to walk back to the hotel . Bert arrives first and subjects Sarah to a humiliating sexual encounter . After , she scrawls " PERVERTED " , " TWISTED " , and " CRIPPLED " in lipstick on the bathroom mirror . Eddie arrives back at the hotel to learn that she has killed herself . + Eddie returns to challenge Fats again , putting up his entire $ 3 @,@ 000 stake on a single game . He wins game after game , beating Fats so badly that Fats is forced to quit . Bert demands a share of Eddie 's winnings and threatens that Eddie will be injured unless he pays . But Eddie says that if he is not killed he will kill Bert when he recovers ; invoking the memory of Sarah , he shames Bert into giving up his claim . Instead , Bert orders Eddie never to walk into a big @-@ time pool hall again . Eddie and Fats compliment each other as players , and Eddie walks out . + + = = Cast = = + + Cast notes + Pool champion Willie Mosconi has a cameo appearance as Willie , who holds the stakes for Eddie and Fats 's games . Mosconi 's hands also appear in many of the closeup shots . + + = = Production = = + + The Tevis novel had been optioned several times , including by Frank Sinatra , but attempts to adapt it for the screen were unsuccessful . Director Rossen 's daughter Carol Rossen speculates that previous adaptations focused too much on the pool aspects of the story and not enough on the human interaction . Rossen , who had hustled pool himself as a youth and who had made an abortive attempt to write a pool @-@ themed play called Corner Pocket , optioned the book and teamed with Sidney Carroll to produce the script . + According to Bobby Darin 's agent , Martin Baum , Paul Newman 's agent turned down the part of Fast Eddie . Newman was originally unavailable to play Fast Eddie regardless , being committed to star opposite Elizabeth Taylor in the film Two for the Seesaw . Rossen offered Darin the part after seeing him on The Mike Wallace Interview . When Taylor was forced to drop out of Seesaw because of shooting overruns on Cleopatra , Newman was freed up to take the role , which he accepted after reading just half of the script . No one associated with the production officially notified Darin or his representatives that he had been replaced ; they found out from a member of the public at a charity horse race . + Rossen filmed The Hustler over six weeks , entirely in New York City . Much of the action was filmed at two now @-@ defunct pool halls , McGirr 's and Ames Billiard Academy . Other shooting locations included a townhouse on East 82nd Street , which served as the Louisville home of Murray Hamilton 's character Findley , and the Manhattan Greyhound bus terminal . The film crew built a dining area that was so realistic that confused passengers sat there and waited to place their orders . Willie Mosconi served as technical advisor on the film and shot a number of the trick shots in place of the actors . All of Gleason 's shots were his own ; they were filmed in wide @-@ angle to emphasize having the actor and the shot in the same frames . Rossen , in pursuit of the style he termed " neo @-@ neo @-@ realistic " , hired actual street thugs , enrolled them in the Screen Actors Guild and used them as extras . Scenes that were included in the shooting script but did not make it into the final film include a scene at Ames pool hall establishing that Eddie is on his way to town ( originally slated to be the first scene of the film ) and a longer scene of Preacher talking to Bert at Johnny 's Bar which establishes Preacher is a junkie . + Early shooting put more focus on the pool playing , but during filming Rossen made the decision to place more emphasis on the love story between Newman and Laurie 's characters . Despite the change in emphasis , Rossen still used the various pool games to show the strengthening of Eddie 's character and the evolution of his relationship to Bert and Sarah , through the positioning of the characters in the frame . For example , when Eddie is playing Findley , Eddie is positioned below Bert in a two shot but above Findley while still below Bert in a three shot . When Sarah enters the room , she is below Eddie in two shot while in a three shot Eddie is still below Bert . When Eddie is kneeling over Sarah 's body , Bert again appears above him but Eddie attacks Bert , ending up on top of him . Eddie finally appears above Bert in two shot when Eddie returns to beat Fats . + + = = Themes = = + + The Hustler is fundamentally a story of what it means to be a human being , couched within the context of winning and losing . Describing the film , Robert Rossen said : " My protagonist , Fast Eddie , wants to become a great pool player , but the film is really about the obstacles he encounters in attempting to fulfill himself as a human being . He attains self @-@ awareness only after a terrible personal tragedy which he has caused — and then he wins his pool game . " Roger Ebert concurs with this assessment , citing The Hustler as " one of the few American movies in which the hero wins by surrendering , by accepting reality instead of his dreams . " + The film was also somewhat autobiographical for Rossen , relating to his dealings with the House Un @-@ American Activities Committee . A screenwriter during the 1930s and ' 40s , he had been involved with the Communist Party in the 1930s and refused to name names at his first HUAC appearance . Ultimately he changed his mind and identified friends and colleagues as party members . Similarly , Felson sells his soul and betrays the one person who really knows and loves him in a Faustian pact to gain character . + Film and theatre historian Ethan Mordden has identified The Hustler as one of a handful of films from the early 1960s that re @-@ defined the relationship of films to their audiences . This new relationship , he writes , is " one of challenge rather than flattery , of doubt rather than certainty . " No film of the 1950s , Mordden asserts , " took such a brutal , clear look at the ego @-@ affirmation of the one @-@ on @-@ one contest , at the inhumanity of the winner or the castrated vulnerability of the loser . " Although some have suggested the resemblance of this film to classic film noir , Mordden rejects the comparison based on Rossen 's ultra @-@ realistic style , also noting that the film lacks noir 's " Treacherous Woman or its relish in discovering crime among the bourgeoisie , hungry bank clerks and lusty wives . " Mordden does note that while Fast Eddie " has a slight fifties ring " , the character " makes a decisive break with the extraordinarily feeling tough guys of the ' rebel ' era ... [ b ] ut he does end up seeking out his emotions " and telling Bert that he is a loser because he 's dead inside . + + = = Reception = = + + The Hustler had its world premiere in Washington , D.C. on September 25 , 1961 . Prior to the premiere , Richard Burton hosted a midnight screening of the film for the casts of the season 's Broadway shows , which generated a great deal of positive word of mouth . Initially reluctant to publicize the film , 20th Century Fox responded by stepping up its promotional activities . + The film was well received by critics , although with the occasional caveat . Variety praised the performances of the entire main cast but felt that the " sordid aspects " of the story prevented the film from achieving the " goal of being pure entertainment . " Variety also felt the film was far too long . Stanley Kauffmann , writing for The New Republic , concurred in part with this assessment . Kauffmann strongly praised the principal cast , calling Newman " first @-@ rate " and writing that Scott 's was " his most credible performance to date . " Laurie , he writes , gives her part " movingly anguished touches " ( although he also mildly criticizes her for over @-@ reliance on Method acting ) . While he found that the script " strains hard to give an air of menace and criminality to the pool hall " and also declares it " full of pseudo @-@ meaning " , Kauffmann lauds Rossen 's " sure , economical " direction , especially in regard to Gleason who , he says , does not so much act as " [ pose ] for a number of pictures which are well arranged by Rossen . It is the best use of a manikin by a director since Kazan photographed Burl Ives as Big Daddy . " The New York Times , despite finding that the film " strays a bit " and that the romance between Newman and Laurie 's characters " seems a mite far @-@ fetched " , nonetheless found that The Hustler " speaks powerfully in a universal language that spellbinds and reveals bitter truths . " + The Hustler received nine Academy Award nominations . The film won two , for Best Art Direction @-@ Set Decoration , Black @-@ and @-@ White ( Harry Horner and Gene Callahan ) and Best Cinematography , Black @-@ and @-@ White ( Eugen Schüfftan ) . The film was also nominated for Best Picture and Newman was nominated for Best Actor in a Leading Role . Gleason and Scott were both nominated for Best Actor in a Supporting Role ; Scott refused the nomination . Laurie was nominated for Best Actress in a Leading Role . Rossen received nominations for Best Director and , with Carroll , for Best Writing , Screenplay Based on Material from Another Medium . + Newman was nominated for a Golden Globe Award for Best Actor . Gleason and Scott were each nominated for Best Supporting Actor and Scott was also nominated as Best New Star of the Year . At the 1962 BAFTA Awards , The Hustler tied with the Soviet film Ballad of a Soldier for Best Film from Any Source . Newman won for Best Foreign Actor and Piper Laurie was nominated for Best Foreign Actress . Gleason was honored as Best Supporting Actor by the National Board of Review of Motion Pictures and the film was named among the Board 's ten best films of 1961 . Rossen was named Best Director by the New York Film Critics Circle Awards and Rossen and Carroll shared the Writers Guild of America Award for Best Written Drama . + American Film Institute Lists + AFI 's 100 Years ... 100 Movies - Nominated + AFI 's 100 Years ... 100 Thrills - Nominated + AFI 's 100 Years ... 100 Heroes and Villains : + Bert Gordon - Nominated Villain + AFI 's 100 Years ... 100 Movie Quotes : + " Eddie , you 're a born loser . " - Nominated + AFI 's 100 Years ... 100 Movies ( 10th Anniversary Edition ) - Nominated + AFI 's 10 Top 10 - # 6 Sports Film + + = = Legacy = = + + In the decades since its release , The Hustler has cemented its reputation as a classic . Roger Ebert , echoing earlier praise for the performances , direction , and cinematography and adding laurels for editor Dede Allen , cites the film as " one of those films where scenes have such psychic weight that they grow in our memories . " He further cites Fast Eddie Felson as one of " only a handful of movie characters so real that the audience refers to them as touchstones . " TV Guide calls the film a " dark stunner " offering " a grim world whose only bright spot is the top of the pool table , yet [ with ] characters [ who ] maintain a shabby nobility and grace . " The four leads are again lavishly praised for their performances and the film is summed up as " not to be missed . " + Paul Newman reprised his role as Fast Eddie Felson in the 1986 film The Color of Money , for which he won the Academy Award for Best Actor in a Leading Role . A number of observers and critics have suggested that this Oscar was in belated recognition for his performance in The Hustler . In 1997 , the Library of Congress selected The Hustler for preservation in the United States National Film Registry as " culturally , historically , or aesthetically significant . " Carroll and Rossen 's screenplay was selected by the Writers Guild of America in 2006 as the 96th best motion picture screenplay of all time . In June 2008 , AFI released its " Ten top Ten " — the best ten films in ten " classic " American film genres — after polling over 1 @,@ 500 people from the creative community . The Hustler was acknowledged as the sixth best film in the sports genre . + The Hustler is credited with sparking a resurgence in the popularity of pool in the United States , which had been on the decline for decades . The film also brought recognition to Willie Mosconi , who , despite having won multiple world championships , was virtually unknown to the general public . Perhaps the greatest beneficiary of the film 's popularity was a real @-@ life pool hustler named Rudolf Wanderone . Mosconi claimed in an interview at the time of the film 's release that the character of Minnesota Fats was based on Wanderone , who at the time was known as " New York Fatty " . Wanderone immediately adopted the Minnesota Fats nickname and parlayed his association with the film into book and television deals and other ventures . Author Walter Tevis denied for the rest of his life that Wanderone had played any role in the creation of the character . Other players would claim , with greater or lesser degrees of credibility , to have served as models for Fast Eddie , including Ronnie Allen , Ed Taylor , Ed Parker , and Eddie Pelkey . + + = = Customized = = +The earliest known appearance of the phrase was in The Boston Journal. In an article titled "Current Notes" in the February 9, 1885, edition, the phrase is mentioned as a good practice sentence for writing students: "A favorite copy set by writing teachers for their pupils is the following, because it contains every letter of the alphabet: 'A quick brown fox jumps over the lazy dog.'"[2] Dozens of other newspapers published the phrase over the next few months, all using the version of the sentence starting with "A" rather than "The".[3] The earliest known use of the phrase starting with "The" is from the 1888 book Illustrative Shorthand by Linda Bronson.[4] The modern form (starting with "The") became more common even though it is slightly longer than the original (starting with "A"). +A 1908 edition of the Los Angeles Herald Sunday Magazine records that when the New York Herald was equipping an office with typewriters "a few years ago", staff found that the common practice sentence of "now is the time for all good men to come to the aid of the party" did not familiarize typists with the entire alphabet, and ran onto two lines in a newspaper column. They write that a staff member named Arthur F. Curtis invented the "quick brown fox" pangram to address this.[5] +As the use of typewriters grew in the late 19th century, the phrase began appearing in typing lesson books as a practice sentence. Early examples include How to Become Expert in Typewriting: A Complete Instructor Designed Especially for the Remington Typewriter (1890),[6] and Typewriting Instructor and Stenographer's Hand-book (1892). By the turn of the 20th century, the phrase had become widely known. In the January 10, 1903, issue of Pitman's Phonetic Journal, it is referred to as "the well known memorized typing line embracing all the letters of the alphabet".[7] Robert Baden-Powell's book Scouting for Boys (1908) uses the phrase as a practice sentence for signaling.[1] +The first message sent on the Moscow–Washington hotline on August 30, 1963, was the test phrase "THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG'S BACK 1234567890".[8] Later, during testing, the Russian translators sent a message asking their American counterparts, "What does it mean when your people say 'The quick brown fox jumped over the lazy dog'?"[9] +During the 20th century, technicians tested typewriters and teleprinters by typing the sentence.[10] +It is the sentence used in the annual Zaner-Bloser National Handwriting Competition, a cursive writing competition which has been held in the U.S. since 1991. +Hello is a good word to start the conversation with, hello is good to use too with people you recognize. diff --git a/test/Microsoft.ML.Tokenizers.Tests/EnglishRobertaTests.cs b/test/Microsoft.ML.Tokenizers.Tests/EnglishRobertaTests.cs new file mode 100644 index 0000000000..0cfb7135a7 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/EnglishRobertaTests.cs @@ -0,0 +1,148 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using Xunit; + +namespace Microsoft.ML.Tokenizers.Tests +{ + public class EnglishRobertaTests + { + private static readonly string _vocabUrl = "https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/encoder.json"; + private static readonly string _mergeUrl = "https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/vocab.bpe"; + private static readonly string _dictUrl = "https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/dict.txt"; + + public static IEnumerable BertaData + { + get + { + // Sentence, Expected Ids, Expected Tokens, Expected Offsets, Decoded Tokens, Token occurrence values + yield return new object[] + { + "Hello Berta", + new int[] { 15496, 22108, 64 }, + new string[] { "Hello", "\u0120Bert", "a" }, + new (int, int)[] { (0, 5), (5, 10), (10, 11) }, + "Hello\u0120Berta", + new int[] { 35245, 144292, 18759122 } + }; + + // Intentionally repeating the same case data to test caching. + // Sentence, Expected Ids, Expected Tokens, Expected Offsets, Decoded Tokens, Token occurrence values + yield return new object[] + { + "Hello Berta", + new int[] { 15496, 22108, 64 }, + new string[] { "Hello", "\u0120Bert", "a" }, + new (int, int)[] { (0, 5), (5, 10), (10, 11) }, + "Hello\u0120Berta", + new int[] { 35245, 144292, 18759122 } + }; + + // Sentence, Expected Ids, Expected Tokens, Expected Offsets, Decoded Tokens, Token occurrence values + yield return new object[] + { + "In the night.", // Heighest occurence tokens + new int[] { 818, 262, 1755, 13 }, + new string[] { "In", "\u0120the", "\u0120night", "." }, + new (int, int)[] { (0, 2), (2, 6), (6, 12), (12, 13) }, + "In\u0120the\u0120night.", + new int[] { 2224123, 800385005, 6062347, 850314647 } + }; + + // Sentence, Expected Ids, Expected Tokens, Expected Offsets, Decoded Tokens, Token occurrence values + yield return new object[] + { + "He\U0001F601llo Ber\U0001F601ta", // Non-Latin characters should be ignored + new int[] { 1544, 18798, 4312, 8326 }, + new string[] { "He", "llo", "ĠBer", "ta" }, + new (int, int)[] { (0, 2), (4, 7), (7, 11), (13, 15) }, + "Hello\u0120Berta", + new int[] { 2759525, 207306, 565286, 560191 } + }; + + // Sentence, Expected Ids, Expected Tokens, Expected Offsets, Decoded Tokens, Token occurrence values + yield return new object[] + { + "\U0001F601\U0001F601\u0660\u0340", // Full Non-Latin string + new int[] { }, + new string[] { }, + new (int, int)[] { }, + "", + new int[] { } + }; + } + } + + [Fact] + public async void ToknizationTest() + { + string vocabFile = Utils.CreateTemporaryFile("json"); + string mergeFile = Utils.CreateTemporaryFile("txt"); + string translationFile = Utils.CreateTemporaryFile("txt"); + string[]? paths = null; ; + + try + { + await Utils.DownloadFile(_vocabUrl, vocabFile); + await Utils.DownloadFile(_mergeUrl, mergeFile); + await Utils.DownloadFile(_dictUrl, translationFile); + + Tokenizer tokenizer = new Tokenizer(new EnglishRoberta(vocabFile, mergeFile, translationFile), RobertaPreTokenizer.Instance); + TestTokenizer(tokenizer); + + paths = tokenizer.Model.Save(Path.GetTempPath(), "roberta"); + Tokenizer tokenizer1 = new Tokenizer(new EnglishRoberta(paths[0], paths[1], paths[2]), RobertaPreTokenizer.Instance); + TestTokenizer(tokenizer1); + } + finally + { + Utils.DeleteFile(vocabFile); + Utils.DeleteFile(mergeFile); + Utils.DeleteFile(translationFile); + + if (paths is not null) + { + Utils.DeleteFile(paths[0]); + Utils.DeleteFile(paths[1]); + Utils.DeleteFile(paths[2]); + } + } + } + + private void TestTokenizer(Tokenizer tokenizer) + { + Assert.NotNull(tokenizer.Model); + Assert.True(tokenizer.Model is EnglishRoberta); + Assert.True(tokenizer.PreTokenizer is RobertaPreTokenizer); + + foreach (object[] p in BertaData) + { + TokenizerResult encoding = tokenizer.Encode((string)p[0]); + Assert.Equal(p[1], encoding.Ids); + Assert.Equal(p[2], encoding.Tokens); + Assert.Equal(p[3], encoding.Offsets); + Assert.Equal(encoding.Ids.Count, encoding.Tokens.Count); + Assert.Equal(encoding.Ids.Count, encoding.Offsets.Count); + Assert.Equal(p[4], tokenizer.Decode(encoding.Ids)); + EnglishRoberta? robertaModel = tokenizer.Model as EnglishRoberta; + Assert.NotNull(robertaModel); + Assert.Equal(encoding.Ids, robertaModel!.OccurrenceRanksIds(robertaModel!.IdsToOccurrenceRanks(encoding.Ids))); + Assert.Equal(p[5], robertaModel.IdsToOccurrenceValues(encoding.Ids)); + + for (int i = 0; i < encoding.Tokens.Count; i++) + { + Assert.Equal(encoding.Tokens[i], tokenizer.Model.IdToToken(encoding.Ids[i])); + Assert.Equal(encoding.Ids[i], tokenizer.Model.TokenToId(encoding.Tokens[i])); + Assert.Equal(encoding.Tokens[i], tokenizer.Decode(encoding.Ids[i])); + } + } + } + } +} diff --git a/test/Microsoft.ML.Tokenizers.Tests/Microsoft.ML.Tokenizers.Tests.csproj b/test/Microsoft.ML.Tokenizers.Tests/Microsoft.ML.Tokenizers.Tests.csproj new file mode 100644 index 0000000000..65fedd6de1 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/Microsoft.ML.Tokenizers.Tests.csproj @@ -0,0 +1,29 @@ + + + Microsoft.ML.Tokenizers.Tests + Test + $(NoWarn);MSML_ExtendBaseTestClass + enable + + + + + + + + + + Never + wiki.test.raw + + + + + + + + + + + + \ No newline at end of file diff --git a/test/Microsoft.ML.Tokenizers.Tests/NormalizerTests.cs b/test/Microsoft.ML.Tokenizers.Tests/NormalizerTests.cs new file mode 100644 index 0000000000..da204288d4 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/NormalizerTests.cs @@ -0,0 +1,154 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.ML.Tokenizers; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Xunit; + +namespace Microsoft.ML.Tokenizers.Tests +{ + public class NormalizerTests + { + public static IEnumerable NormalizerData + { + get + { + yield return new object?[] + { + new LowerCaseNormalizer(), + "How Are You Doing?", + "how are you doing?", + true, // IsOneToOneMapping + true, // CanMapToOriginal + null, // NormalizedToOriginalMapping + }; + + yield return new object?[] + { + new UpperCaseNormalizer(), + "How Are You Doing?", + "HOW ARE YOU DOING?", + true, // IsOneToOneMapping + true, // CanMapToOriginal + null, // NormalizedToOriginalMapping + }; + + yield return new object?[] + { + new RemoveQuotesNormalizer(), + "This is already normalized string", + "This is already normalized string", + true, // IsOneToOneMapping + true, // CanMapToOriginal + null, // NormalizedToOriginalMapping + }; + + yield return new object?[] + { + new RemoveQuotesNormalizer(), + "String \"to\" normalize", + "String to normalize", + false, // IsOneToOneMapping + true, // CanMapToOriginal + new int[] { 0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }, // NormalizedToOriginalMapping + }; + + yield return new object?[] + { + new UnicodeNormalizer(NormalizationForm.FormKD), + "\uFB01", // Composed form of the character 'fi' one character + "fi", // normalized in 2 characters 'f' and 'i' + false, // IsOneToOneMapping + false, // CanMapToOriginal + null, // NormalizedToOriginalMapping + }; + } + } + + [Theory] + [MemberData(nameof(NormalizerData))] + public void TestNormalizer(Normalizer normalizer, string sentence, string normalized, bool isOneToOneMapping, bool canMapToOriginal, int[] normalizedToOriginalMapping) + { + NormalizedString ns = normalizer.Normalize(sentence); + Assert.Equal(normalized, ns.Normalized); + Assert.Equal(isOneToOneMapping, ns.IsOneToOneMapping); + Assert.Equal(canMapToOriginal, ns.CanMapToOriginal); + Assert.Equal(normalizedToOriginalMapping, ns.NormalizedToOriginalMapping); + + Tokenizer tokenizer = new Tokenizer(new Bpe(), WhiteSpace.Instance, normalizer); + TokenizerResult encoding = tokenizer.Encode(sentence); + Assert.Equal(canMapToOriginal, encoding.OffsetsMappedToOriginalString); + Assert.Equal(sentence, encoding.OriginalString); + Assert.Equal(normalized, encoding.NormalizedString); + } + + public class RemoveQuotesNormalizer : Normalizer + { + public override NormalizedString Normalize(string original) + { + int index = original.IndexOf('"'); + if (index <= 0) + { + return new NormalizedString(original, original, null, true); + } + + StringBuilder sb = new StringBuilder(original.Length); + List mapping = new List(); + + int start = 0; + + do + { + for (int i = start; i < index; i++) + { + sb.Append(original[i]); + mapping.Add(i); + } + + start = index + 1; + + if (start >= original.Length) + { + break; + } + + index = original.IndexOf('"', start); + if (index <= 0) + { + for (int i = start; i < original.Length; i++) + { + sb.Append(original[i]); + mapping.Add(i); + } + break; + } + } while (true); + + return new NormalizedString(original, sb.ToString(), mapping.ToArray(), false); + } + } + + public class UnicodeNormalizer : Normalizer + { + private NormalizationForm _normalizationForm; + public UnicodeNormalizer(NormalizationForm form) + { + _normalizationForm = form; + } + + public override NormalizedString Normalize(string original) + { + if (string.IsNullOrEmpty(original)) + { + return new NormalizedString(original, "", null, true); + } + + return new NormalizedString(original, original.Normalize(_normalizationForm), null, false); + } + } + } +} diff --git a/test/Microsoft.ML.Tokenizers.Tests/PreTokenizerTests.cs b/test/Microsoft.ML.Tokenizers.Tests/PreTokenizerTests.cs new file mode 100644 index 0000000000..d14ef6f3c3 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/PreTokenizerTests.cs @@ -0,0 +1,111 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.ML.Tokenizers; +using System; +using System.Linq; +using System.Collections.Generic; +using Xunit; + +namespace Microsoft.ML.Tokenizers.Tests +{ + public class PreTokenizersTests + { + public static IEnumerable PreTokenizerData + { + get + { + yield return new object[] + { + WhiteSpace.Instance, + "How are you doing?", + new Split[] { new Split("How", (0, 3)), new Split("are", (4, 7)), new Split("you", (8, 11)), new Split("doing", (12, 17)), new Split("?", (17, 18)),} + }; + + yield return new object[] + { + WhiteSpace.Instance, + "I_am_Just_Fine!", + new Split[] { new Split("I_am_Just_Fine", (0, 14)), new Split("!", (14, 15)) } + }; + + yield return new object[] + { + new SpacePreTokenizer(), + "How are you doing?!", + new Split[] { new Split("How", (0, 3)), new Split("are", (4, 7)), new Split("you", (11, 14)), new Split("doing?!", (15, 22)) } + }; + + yield return new object[] + { + new SpacePreTokenizer(), + new string(' ', 100), + new Split[] { } + }; + } + } + + [Theory] + [MemberData(nameof(PreTokenizerData))] + public void TestPreTokenizer(PreTokenizer preTokenizer, string sentence, Split[] splits) + { + Split[] splitParts = preTokenizer.PreTokenize(sentence).ToArray(); + Assert.Equal(splits, splitParts); + + // Empty tokenizer which tokenize all parts as unknown tokens. + Bpe bpe = new Bpe(); + + Tokenizer tokenizer = new Tokenizer(bpe, preTokenizer); + + TokenizerResult encoding = tokenizer.Encode(sentence); + Assert.True(encoding.Tokens.Count >= splitParts.Length, $"Expected to have {encoding.Tokens.Count} >= {splitParts.Length}"); + } + + [Fact] + public void TestWhiteSpacePreTokenizer() + { + WhiteSpace.Instance.PreTokenize(null); + } + + public class SpacePreTokenizer : PreTokenizer + { + public override IReadOnlyList PreTokenize(string sentence) + { + List splits = new(); + if (string.IsNullOrEmpty(sentence)) + { + return splits; + } + + int index = 0; + while (true) + { + while (index < sentence.Length && char.IsWhiteSpace(sentence[index])) + { + index++; + } + + int end = index + 1; + while (end < sentence.Length && !char.IsWhiteSpace(sentence[end])) + { + end++; + } + + if (index < sentence.Length) + { + splits.Add(new Split(sentence.Substring(index, end - index), (index, end))); + } + else + { + break; + } + + index = end + 1; + } + + return splits; + } + } + } +} diff --git a/test/Microsoft.ML.Tokenizers.Tests/Utils.cs b/test/Microsoft.ML.Tokenizers.Tests/Utils.cs new file mode 100644 index 0000000000..e0d2000c31 --- /dev/null +++ b/test/Microsoft.ML.Tokenizers.Tests/Utils.cs @@ -0,0 +1,60 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net.Http; +using System.Threading.Tasks; + +namespace Microsoft.ML.Tokenizers.Tests +{ + public class Utils + { + public static async Task DownloadFile(string url, string fileName) + { + using (var client = new HttpClient()) + { + var response = await client.GetAsync(url); + if (response.IsSuccessStatusCode) + { + var stream = await response.Content.ReadAsStreamAsync(); + var fileInfo = new FileInfo(fileName); + using (var fileStream = fileInfo.OpenWrite()) + { + await stream.CopyToAsync(fileStream); + } + } + else + { + throw new Exception("File not found"); + } + } + } + + public static void DeleteFile(string file) + { + if (File.Exists(file)) + { + try + { + File.Delete(file); + } + catch + { + } + } + } + public static string CreateTemporaryFile(string extension) => + Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), extension)); + + public static string SaveEmbeddedResourceFile(string resourceName) + { + string fileName = CreateTemporaryFile("txt"); + using Stream fileStream = File.Create(fileName); + typeof(BpeTests).Assembly.GetManifestResourceStream(resourceName)!.CopyTo(fileStream); + return fileName; + } + } +} diff --git a/test/data/creditapproval_train.csv b/test/data/creditapproval_train.csv new file mode 100644 index 0000000000..12c7aabba2 --- /dev/null +++ b/test/data/creditapproval_train.csv @@ -0,0 +1,553 @@ +A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16 +a,?,1.5,u,g,ff,ff,0.0,f,t,2,t,g,00200,105,- +a,46.00,4.0,u,g,j,j,0.0,t,f,0,f,g,00100,960,+ +b,20.00,0.0,u,g,d,v,0.5,f,f,0,f,g,00144,0,- +b,47.33,6.5,u,g,c,v,1.0,f,f,0,t,g,00000,228,- +b,19.17,0.0,y,p,m,bb,0.0,f,f,0,t,s,00500,1,+ +b,24.33,6.625,y,p,d,v,5.5,t,f,0,t,s,00100,0,+ +b,21.58,0.79,y,p,cc,v,0.665,f,f,0,f,g,00160,0,- +b,25.00,12.5,u,g,aa,v,3.0,t,f,0,t,s,00020,0,+ +b,21.92,0.5,u,g,c,v,0.125,f,f,0,f,g,00360,0,- +b,20.00,11.045,u,g,c,v,2.0,f,f,0,t,g,00136,0,- +a,23.50,1.5,u,g,w,v,0.875,f,f,0,t,g,00160,0,- +a,40.83,10.0,u,g,q,h,1.75,t,f,0,f,g,00029,837,+ +b,22.67,0.165,u,g,c,j,2.25,f,f,0,t,s,00000,0,+ +b,21.67,1.165,y,p,k,v,2.5,t,t,1,f,g,00180,20,- +a,30.58,10.665,u,g,q,h,0.085,f,t,12,t,g,00129,3,- +b,20.17,9.25,u,g,c,v,1.665,t,t,3,t,g,00040,28,+ +b,27.83,1.0,y,p,d,h,3.0,f,f,0,f,g,00176,537,- +a,16.08,0.335,u,g,ff,ff,0.0,f,t,1,f,g,00160,126,- +b,37.33,2.665,u,g,cc,v,0.165,f,f,0,t,g,00000,501,- +b,29.83,2.04,y,p,x,h,0.04,f,f,0,f,g,00128,1,- +a,16.00,0.165,u,g,aa,v,1.0,f,t,2,t,g,00320,1,- +b,34.75,2.5,u,g,cc,bb,0.5,f,f,0,f,g,00348,0,- +a,21.75,1.75,y,p,j,j,0.0,f,f,0,f,g,00160,0,- +b,21.92,0.54,y,p,x,v,0.04,t,t,1,t,g,00840,59,+ +b,23.92,0.585,y,p,cc,h,0.125,f,f,0,f,g,00240,1,- +?,40.83,3.5,u,g,i,bb,0.5,f,f,0,f,s,01160,0,- +b,40.25,21.5,u,g,e,z,20.0,t,t,11,f,g,00000,1200,+ +b,34.25,3.0,u,g,cc,h,7.415,t,f,0,t,g,00000,0,+ +a,22.50,0.415,u,g,i,v,0.335,f,f,0,t,s,00144,0,- +b,27.67,0.75,u,g,q,h,0.165,f,f,0,t,g,00220,251,- +b,36.25,5.0,u,g,c,bb,2.5,t,t,6,f,g,00000,367,+ +b,?,4.0,u,g,x,v,5.0,t,t,3,t,g,00290,2279,+ +b,39.92,0.54,y,p,aa,v,0.5,t,t,3,f,g,00200,1000,+ +a,19.75,0.75,u,g,c,v,0.795,t,t,5,t,g,00140,5,- +b,38.67,0.21,u,g,k,v,0.085,t,f,0,t,g,00280,0,+ +a,20.67,1.835,u,g,q,v,2.085,t,t,5,f,g,00220,2503,+ +b,60.08,14.5,u,g,ff,ff,18.0,t,t,15,t,g,00000,1000,+ +b,35.25,3.165,u,g,x,h,3.75,t,f,0,t,g,00680,0,- +b,18.50,2.0,u,g,i,v,1.5,t,t,2,f,g,00120,300,+ +a,47.42,8.0,u,g,e,bb,6.5,t,t,6,f,g,00375,51100,+ +b,21.83,11.0,u,g,x,v,0.29,t,t,6,f,g,00121,0,+ +a,38.58,5.0,u,g,cc,v,13.5,t,f,0,t,g,00980,0,- +b,30.75,1.585,u,g,d,v,0.585,f,f,0,t,s,00000,0,- +b,43.08,0.375,y,p,c,v,0.375,t,t,8,t,g,00300,162,+ +b,34.17,2.75,u,g,i,bb,2.5,f,f,0,t,g,00232,200,- +b,64.08,20.0,u,g,x,h,17.5,t,t,9,t,g,00000,1000,+ +a,38.92,1.665,u,g,aa,v,0.25,f,f,0,f,g,00000,390,- +b,34.00,5.085,y,p,i,bb,1.085,f,f,0,t,g,00480,0,- +b,34.08,6.5,u,g,aa,v,0.125,t,f,0,t,g,00443,0,- +b,22.75,11.5,u,g,i,v,0.415,f,f,0,f,g,00000,0,- +a,18.17,10.0,y,p,q,h,0.165,f,f,0,f,g,00340,0,- +b,62.50,12.75,y,p,c,h,5.0,t,f,0,f,g,00112,0,- +b,30.33,0.5,u,g,d,h,0.085,f,f,0,t,s,00252,0,- +b,22.08,0.83,u,g,c,h,2.165,f,f,0,t,g,00128,0,+ +a,20.42,0.835,u,g,q,v,1.585,t,t,1,f,g,00000,0,+ +a,22.67,7.0,u,g,c,v,0.165,f,f,0,f,g,00160,0,- +b,30.17,0.5,u,g,c,v,1.75,t,t,11,f,g,00032,540,+ +b,26.92,2.25,u,g,i,bb,0.5,f,f,0,t,g,00640,4000,- +b,48.33,12.0,u,g,m,v,16.0,t,f,0,f,s,00110,0,+ +a,15.75,0.375,u,g,c,v,1.0,f,f,0,f,g,00120,18,- +b,42.00,9.79,u,g,x,h,7.96,t,t,8,f,g,00000,0,+ +a,50.08,12.54,u,g,aa,v,2.29,t,t,3,t,g,00156,0,+ +b,20.42,7.0,u,g,c,v,1.625,t,t,3,f,g,00200,1391,+ +a,19.17,0.585,y,p,aa,v,0.585,t,f,0,t,g,00160,0,- +b,16.17,0.04,u,g,c,v,0.04,f,f,0,f,g,00000,0,+ +a,35.75,0.915,u,g,aa,v,0.75,t,t,4,f,g,00000,1583,+ +b,39.33,5.875,u,g,cc,h,10.0,t,t,14,t,g,00399,0,+ +b,23.33,11.625,y,p,w,v,0.835,t,f,0,t,g,00160,300,+ +b,48.58,6.5,u,g,q,h,6.0,t,f,0,t,g,00350,0,+ +a,24.83,4.5,u,g,w,v,1.0,f,f,0,t,g,00360,6,- +a,22.50,8.46,y,p,x,v,2.46,f,f,0,f,g,00164,0,+ +a,24.50,0.5,u,g,q,h,1.5,t,f,0,f,g,00280,824,+ +b,36.50,4.25,u,g,q,v,3.5,f,f,0,f,g,00454,50,- +a,27.67,1.5,u,g,m,v,2.0,t,f,0,f,s,00368,0,- +b,23.42,1.0,u,g,c,v,0.5,f,f,0,t,s,00280,0,- +b,21.08,10.085,y,p,e,h,1.25,f,f,0,f,g,00260,0,- +b,21.25,1.5,u,g,w,v,1.5,f,f,0,f,g,00150,8,+ +b,25.75,0.75,u,g,c,bb,0.25,t,f,0,f,g,00349,23,+ +b,39.92,6.21,u,g,q,v,0.04,t,t,1,f,g,00200,300,+ +b,25.83,12.835,u,g,cc,v,0.5,f,f,0,f,g,00000,2,- +a,19.67,0.21,u,g,q,h,0.29,t,t,11,f,g,00080,99,+ +a,22.42,11.25,y,p,x,h,0.75,t,t,4,f,g,00000,321,+ +b,19.42,7.25,u,g,m,v,0.04,f,t,1,f,g,00100,1,- +b,22.67,0.75,u,g,i,v,1.585,f,t,1,t,g,00400,9,- +b,20.42,1.835,u,g,c,v,2.25,t,t,1,f,g,00100,150,+ +a,30.25,5.5,u,g,k,v,5.5,f,f,0,t,s,00100,0,- +b,56.75,12.25,u,g,m,v,1.25,t,t,4,t,g,00200,0,+ +a,30.50,6.5,u,g,c,bb,4.0,t,t,7,t,g,00000,3065,+ +b,29.25,14.79,u,g,aa,v,5.04,t,t,5,t,g,00168,0,+ +b,35.17,25.125,u,g,x,h,1.625,t,t,1,t,g,00515,500,+ +a,20.50,11.835,u,g,c,h,6.0,t,f,0,f,g,00340,0,+ +a,18.83,9.54,u,g,aa,v,0.085,t,f,0,f,g,00100,0,+ +b,56.42,28.0,y,p,c,v,28.5,t,t,40,f,g,00000,15,+ +a,57.08,0.335,u,g,i,bb,1.0,t,f,0,t,g,00252,2197,- +b,32.33,7.5,u,g,e,bb,1.585,t,f,0,t,s,00420,0,- +a,20.67,3.0,u,g,q,v,0.165,t,t,3,f,g,00100,6,+ +a,60.58,16.5,u,g,q,v,11.0,t,f,0,t,g,00021,10561,+ +b,41.58,1.75,u,g,k,v,0.21,t,f,0,f,g,00160,0,- +b,41.17,1.335,u,g,d,v,0.165,f,f,0,f,g,00168,0,- +a,21.08,5.0,y,p,ff,ff,0.0,f,f,0,f,g,00000,0,- +a,69.50,6.0,u,g,ff,ff,0.0,f,f,0,f,s,00000,0,- +a,18.08,0.375,l,gg,cc,ff,10.0,f,f,0,t,s,00300,0,+ +?,24.50,12.75,u,g,c,bb,4.75,t,t,2,f,g,00073,444,+ +a,24.92,1.25,u,g,ff,ff,0.0,t,f,0,f,g,00080,0,- +b,34.17,1.54,u,g,cc,v,1.54,t,t,1,t,g,00520,50000,+ +b,45.17,1.5,u,g,c,v,2.5,t,f,0,t,g,00140,0,- +b,23.92,0.665,u,g,c,v,0.165,f,f,0,f,g,00100,0,+ +b,57.83,7.04,u,g,m,v,14.0,t,t,6,t,g,00360,1332,+ +b,50.75,0.585,u,g,ff,ff,0.0,f,f,0,f,g,00145,0,- +b,54.58,9.415,u,g,ff,ff,14.415,t,t,11,t,g,00030,300,+ +b,32.25,14.0,y,p,ff,ff,0.0,f,t,2,f,g,00160,1,- +b,41.75,0.96,u,g,x,v,2.5,t,f,0,f,g,00510,600,+ +b,33.17,1.04,u,g,r,h,6.5,t,f,0,t,g,00164,31285,+ +b,35.25,16.5,y,p,c,v,4.0,t,f,0,f,g,00080,0,- +a,21.67,11.5,y,p,j,j,0.0,t,t,11,t,g,00000,0,+ +b,69.17,9.0,u,g,ff,ff,4.0,f,t,1,f,g,00070,6,- +a,47.42,3.0,u,g,x,v,13.875,t,t,2,t,g,00519,1704,+ +b,22.58,10.04,u,g,x,v,0.04,t,t,9,f,g,00060,396,+ +b,23.25,12.625,u,g,c,v,0.125,f,t,2,f,g,00000,5552,- +b,32.83,2.5,u,g,cc,h,2.75,t,t,6,f,g,00160,2072,+ +b,42.75,4.085,u,g,aa,v,0.04,f,f,0,f,g,00108,100,- +b,23.08,2.5,u,g,ff,ff,0.085,f,f,0,t,g,00100,4208,- +b,23.08,11.5,u,g,i,v,3.5,t,t,9,f,g,00056,742,+ +a,22.67,0.75,u,g,c,v,2.0,f,t,2,t,g,00200,394,- +b,51.83,2.04,y,p,ff,ff,1.5,f,f,0,f,g,00120,1,- +b,?,0.375,u,g,d,v,0.875,t,f,0,t,s,00928,0,- +b,36.67,2.0,u,g,i,v,0.25,f,f,0,t,g,00221,0,- +b,27.58,3.25,y,p,q,h,5.085,f,t,2,t,g,00369,1,- +b,29.58,4.5,u,g,w,v,7.5,t,t,2,t,g,00330,0,+ +b,28.92,15.0,u,g,c,h,5.335,t,t,11,f,g,00000,2283,+ +b,40.92,2.25,y,p,x,h,10.0,t,f,0,t,g,00176,0,- +b,35.58,0.75,u,g,k,v,1.5,f,f,0,t,g,00231,0,- +b,23.17,0.0,u,g,cc,v,0.085,t,f,0,f,g,00000,0,+ +a,25.25,12.5,u,g,d,v,1.0,f,f,0,t,g,00180,1062,- +a,24.75,3.0,u,g,q,h,1.835,t,t,19,f,g,00000,500,+ +a,41.17,6.5,u,g,q,v,0.5,t,t,3,t,g,00145,0,+ +b,28.00,2.0,u,g,k,h,4.165,t,t,2,t,g,00181,0,+ +a,28.17,0.375,u,g,q,v,0.585,t,t,4,f,g,00080,0,+ +b,24.58,13.5,y,p,ff,ff,0.0,f,f,0,f,g,?,0,- +b,29.17,3.5,u,g,w,v,3.5,t,t,3,t,g,00329,0,- +b,39.83,0.5,u,g,m,v,0.25,t,f,0,f,s,00288,0,- +b,26.00,1.0,u,g,q,v,1.75,t,f,0,t,g,00280,0,+ +b,53.92,9.625,u,g,e,v,8.665,t,t,5,f,g,00000,0,+ +b,34.75,15.0,u,g,r,n,5.375,t,t,9,t,g,00000,134,+ +b,16.50,0.125,u,g,c,v,0.165,f,f,0,f,g,00132,0,- +b,25.42,0.54,u,g,w,v,0.165,f,t,1,f,g,00272,444,- +b,16.25,0.0,y,p,aa,v,0.25,f,f,0,f,g,00060,0,- +b,31.83,2.5,u,g,aa,v,7.5,t,f,0,t,g,00523,0,- +b,21.83,0.25,u,g,d,h,0.665,t,f,0,t,g,00000,0,+ +b,48.08,3.75,u,g,i,bb,1.0,f,f,0,f,g,00100,2,- +b,24.50,13.335,y,p,aa,v,0.04,f,f,0,t,g,00120,475,- +b,33.67,2.165,u,g,c,v,1.5,f,f,0,f,p,00120,0,- +b,?,0.04,y,p,d,v,4.25,f,f,0,t,g,00460,0,- +b,31.67,16.165,u,g,d,v,3.0,t,t,9,f,g,00250,730,+ +a,27.25,0.29,u,g,m,h,0.125,f,t,1,t,g,00272,108,- +b,39.00,5.0,u,g,cc,v,3.5,t,t,10,t,g,00000,0,+ +b,42.08,1.04,u,g,w,v,5.0,t,t,6,t,g,00500,10000,+ +a,21.25,2.335,u,g,i,bb,0.5,t,t,4,f,s,00080,0,+ +a,22.67,0.79,u,g,i,v,0.085,f,f,0,f,g,00144,0,- +a,30.42,1.375,u,g,w,h,0.04,f,t,3,f,g,00000,33,- +a,47.25,0.75,u,g,q,h,2.75,t,t,1,f,g,00333,892,+ +b,22.92,3.165,y,p,c,v,0.165,f,f,0,f,g,00160,1058,- +b,35.00,2.5,u,g,i,v,1.0,f,f,0,t,g,00210,0,- +b,16.92,0.335,y,p,k,v,0.29,f,f,0,f,s,00200,0,- +a,33.25,3.0,y,p,aa,v,2.0,f,f,0,f,g,00180,0,- +b,20.67,0.835,y,p,c,v,2.0,f,f,0,t,s,00240,0,- +b,24.58,1.25,u,g,c,v,0.25,f,f,0,f,g,00110,0,- +b,20.50,2.415,u,g,c,v,2.0,t,t,11,t,g,00200,3000,+ +a,19.50,0.165,u,g,q,v,0.04,f,f,0,t,g,00380,0,- +b,48.17,3.5,u,g,aa,v,3.5,t,f,0,f,s,00230,0,+ +a,19.58,0.665,u,g,w,v,1.665,f,f,0,f,g,00220,5,- +b,15.17,7.0,u,g,e,v,1.0,f,f,0,f,g,00600,0,- +b,22.67,10.5,u,g,q,h,1.335,t,f,0,f,g,00100,0,+ +b,24.08,9.0,u,g,aa,v,0.25,f,f,0,t,g,00000,0,- +b,32.00,1.75,y,p,e,h,0.04,t,f,0,t,g,00393,0,+ +b,43.17,5.0,u,g,i,bb,2.25,f,f,0,t,g,00141,0,- +b,20.08,0.25,u,g,q,v,0.125,f,f,0,f,g,00200,0,- +b,21.83,1.54,u,g,k,v,0.085,f,f,0,t,g,00356,0,- +a,39.08,4.0,u,g,c,v,3.0,f,f,0,f,g,00480,0,- +b,18.58,5.71,u,g,d,v,0.54,f,f,0,f,g,00120,0,- +a,17.33,9.5,u,g,aa,v,1.75,f,t,10,t,g,00000,10,- +b,27.83,4.0,y,p,i,h,5.75,t,t,2,t,g,00075,0,- +b,20.67,1.25,y,p,c,h,1.375,t,t,3,t,g,00140,210,- +b,29.58,4.75,u,g,m,v,2.0,f,t,1,t,g,00460,68,- +b,35.17,2.5,u,g,k,v,4.5,t,t,7,f,g,00150,1270,+ +b,32.75,2.335,u,g,d,h,5.75,f,f,0,t,g,00292,0,- +b,?,5.0,y,p,aa,v,8.5,t,f,0,f,g,00000,0,- +a,22.92,11.585,u,g,cc,v,0.04,t,f,0,f,g,00080,1349,+ +a,49.00,1.5,u,g,j,j,0.0,t,f,0,t,g,00100,27,- +b,22.83,3.0,u,g,m,v,1.29,t,t,1,f,g,00260,800,+ +a,33.08,1.625,u,g,d,v,0.54,f,f,0,t,g,00000,0,- +b,?,10.5,u,g,x,v,6.5,t,f,0,f,g,00000,0,+ +b,39.42,1.71,y,p,m,v,0.165,f,f,0,f,s,00400,0,- +b,80.25,5.5,u,g,?,?,0.54,t,f,0,f,g,00000,340,- +b,36.33,2.125,y,p,w,v,0.085,t,t,1,f,g,00050,1187,+ +a,31.25,3.75,u,g,cc,h,0.625,t,t,9,t,g,00181,0,+ +b,57.42,8.5,u,g,e,h,7.0,t,t,3,f,g,00000,0,+ +b,39.58,13.915,u,g,w,v,8.625,t,t,6,t,g,00070,0,+ +b,29.67,1.415,u,g,w,h,0.75,t,t,1,f,g,00240,100,+ +b,44.25,0.5,u,g,m,v,10.75,t,f,0,f,s,00400,0,- +a,32.33,0.54,u,g,cc,v,0.04,t,f,0,f,g,00440,11177,+ +b,39.50,4.25,u,g,c,bb,6.5,t,t,16,f,g,00117,1210,+ +?,42.25,1.75,y,p,?,?,0.0,f,f,0,t,g,00150,1,- +a,36.00,1.0,u,g,c,v,2.0,t,t,11,f,g,00000,456,+ +b,29.92,1.835,u,g,c,h,4.335,t,f,0,f,g,00260,200,+ +a,37.33,2.5,u,g,i,h,0.21,f,f,0,f,g,00260,246,- +a,22.83,2.29,u,g,q,h,2.29,t,t,7,t,g,00140,2384,+ +a,18.42,9.25,u,g,q,v,1.21,t,t,4,f,g,00060,540,+ +b,17.08,0.085,y,p,c,v,0.04,f,f,0,f,g,00140,722,- +b,22.50,11.5,y,p,m,v,1.5,f,f,0,t,g,00000,4000,- +b,43.25,25.21,u,g,q,h,0.21,t,t,1,f,g,00760,90,- +b,17.08,0.25,u,g,q,v,0.335,f,t,4,f,g,00160,8,- +b,26.67,1.75,y,p,c,v,1.0,t,t,5,t,g,00160,5777,+ +a,26.08,8.665,u,g,aa,v,1.415,t,f,0,f,g,00160,150,+ +b,20.00,7.0,u,g,c,v,0.5,f,f,0,f,g,00000,0,- +b,25.67,3.25,u,g,c,h,2.29,f,t,1,t,g,00416,21,- +a,?,3.5,u,g,d,v,3.0,t,f,0,t,g,00300,0,- +a,27.33,1.665,u,g,ff,ff,0.0,f,f,0,f,g,00340,1,- +b,27.83,1.5,u,g,w,v,2.25,f,t,1,t,g,00100,3,- +?,29.75,0.665,u,g,w,v,0.25,f,f,0,t,g,00300,0,- +b,21.50,9.75,u,g,c,v,0.25,t,f,0,f,g,00140,0,- +a,27.42,14.5,u,g,x,h,3.085,t,t,1,f,g,00120,11,+ +b,36.67,4.415,y,p,k,v,0.25,t,t,10,t,g,00320,0,+ +a,20.83,0.5,y,p,e,dd,1.0,f,f,0,f,g,00260,0,- +a,58.42,21.0,u,g,i,bb,10.0,t,t,13,f,g,00000,6700,+ +b,36.17,0.42,y,p,w,v,0.29,f,f,0,t,g,00309,2,- +b,32.33,2.5,u,g,c,v,1.25,f,f,0,t,g,00280,0,- +b,19.00,1.75,y,p,c,v,2.335,f,f,0,t,g,00112,6,- +a,24.33,2.5,y,p,i,bb,4.5,f,f,0,f,g,00200,456,- +b,33.58,2.75,u,g,m,v,4.25,t,t,6,f,g,00204,0,+ +?,32.25,1.5,u,g,c,v,0.25,f,f,0,t,g,00372,122,- +b,30.17,1.085,y,p,c,v,0.04,f,f,0,f,g,00170,179,- +a,36.75,5.125,u,g,e,v,5.0,t,f,0,t,g,00000,4000,+ +a,27.67,2.04,u,g,w,v,0.25,f,f,0,t,g,00180,50,- +b,39.17,2.5,y,p,i,h,10.0,f,f,0,t,s,00200,0,- +b,42.50,4.915,y,p,w,v,3.165,t,f,0,t,g,00052,1442,+ +a,47.75,8.0,u,g,c,v,7.875,t,t,6,t,g,00000,1260,+ +a,57.58,2.0,u,g,ff,ff,6.5,f,t,1,f,g,00000,10,- +b,65.42,11.0,u,g,e,z,20.0,t,t,7,t,g,00022,0,+ +b,26.17,12.5,y,p,k,h,1.25,f,f,0,t,g,00000,17,- +a,41.58,1.04,u,g,aa,v,0.665,f,f,0,f,g,00240,237,- +b,76.75,22.29,u,g,e,z,12.75,t,t,1,t,g,00000,109,+ +b,27.25,0.625,u,g,aa,v,0.455,t,f,0,t,g,00200,0,- +a,33.25,2.5,y,p,c,v,2.5,f,f,0,t,g,00000,2,- +b,34.08,2.5,u,g,c,v,1.0,f,f,0,f,g,00460,16,- +b,39.17,1.625,u,g,c,v,1.5,t,t,10,f,g,00186,4700,+ +a,24.50,1.75,y,p,c,v,0.165,f,f,0,f,g,00132,0,- +a,20.75,10.25,u,g,q,v,0.71,t,t,2,t,g,00049,0,+ +b,33.17,3.165,y,p,x,v,3.165,t,t,3,t,g,00380,0,+ +a,15.83,7.625,u,g,q,v,0.125,f,t,1,t,g,00000,160,- +b,20.25,9.96,u,g,e,dd,0.0,t,f,0,f,g,00000,0,+ +b,24.75,0.54,u,g,m,v,1.0,f,f,0,t,g,00120,1,- +b,52.33,1.375,y,p,c,h,9.46,t,f,0,t,g,00200,100,- +b,18.83,0.0,u,g,q,v,0.665,f,f,0,f,g,00160,1,- +a,18.25,10.0,u,g,w,v,1.0,f,t,1,f,g,00120,1,- +b,22.17,12.125,u,g,c,v,3.335,f,t,2,t,g,00180,173,- +b,21.42,0.75,y,p,r,n,0.75,f,f,0,t,g,00132,2,- +a,22.42,5.665,u,g,q,v,2.585,t,t,7,f,g,00129,3257,+ +a,25.17,2.875,u,g,x,h,0.875,t,f,0,f,g,00360,0,+ +b,23.00,0.75,u,g,m,v,0.5,f,f,0,t,s,00320,0,- +b,23.08,2.5,u,g,c,v,1.085,t,t,11,t,g,00060,2184,+ +b,20.67,5.29,u,g,q,v,0.375,t,t,1,f,g,00160,0,- +b,34.83,2.5,y,p,w,v,3.0,f,f,0,f,s,00200,0,- +b,19.42,6.5,u,g,w,h,1.46,t,t,7,f,g,00080,2954,+ +b,40.92,0.835,u,g,ff,ff,0.0,t,f,0,f,g,00130,1,- +a,28.67,1.04,u,g,c,v,2.5,t,t,5,t,g,00300,1430,+ +b,26.17,0.25,u,g,i,bb,0.0,t,f,0,t,g,00000,0,+ +b,34.00,4.5,u,g,aa,v,1.0,t,f,0,t,g,00240,0,- +b,41.00,0.04,u,g,e,v,0.04,f,t,1,f,s,00560,0,+ +b,52.50,6.5,u,g,k,v,6.29,t,t,15,f,g,00000,11202,+ +b,34.92,5.0,u,g,x,h,7.5,t,t,6,t,g,00000,1000,+ +b,19.50,9.585,u,g,aa,v,0.79,f,f,0,f,g,00080,350,- +b,42.83,4.625,u,g,q,v,4.58,t,f,0,f,s,00000,0,+ +b,30.83,0.0,u,g,w,v,1.25,t,t,1,f,g,00202,0,+ +b,17.08,3.29,u,g,i,v,0.335,f,f,0,t,g,00140,2,- +b,33.17,1.0,u,g,x,v,0.75,t,t,7,t,g,00340,4071,+ +b,22.08,2.335,u,g,k,v,0.75,f,f,0,f,g,00180,0,- +b,23.58,1.79,u,g,c,v,0.54,f,f,0,t,g,00136,1,- +b,37.75,7.0,u,g,q,h,11.5,t,t,7,t,g,00300,5,- +b,19.67,0.375,u,g,q,v,2.0,t,t,2,t,g,00080,0,+ +b,23.50,2.75,u,g,ff,ff,4.5,f,f,0,f,g,00160,25,- +b,25.33,0.58,u,g,c,v,0.29,t,t,7,t,g,00096,5124,+ +b,30.67,2.5,u,g,cc,h,2.25,f,f,0,t,s,00340,0,- +b,19.58,0.585,u,g,ff,ff,0.0,f,t,3,f,g,00350,769,- +b,27.25,1.665,u,g,cc,h,5.085,t,t,9,f,g,00399,827,+ +b,19.67,10.0,y,p,k,h,0.835,t,f,0,t,g,00140,0,- +b,32.42,2.165,y,p,k,ff,0.0,f,f,0,f,g,00120,0,- +a,25.58,0.0,?,?,?,?,0.0,f,f,0,f,p,?,0,+ +a,29.58,1.75,y,p,k,v,1.25,f,f,0,t,g,00280,0,- +b,59.67,1.54,u,g,q,v,0.125,t,f,0,t,g,00260,0,+ +a,17.92,10.21,u,g,ff,ff,0.0,f,f,0,f,g,00000,50,- +a,41.00,2.04,y,p,q,h,0.125,t,t,23,t,g,00455,1236,+ +a,52.17,0.0,y,p,ff,ff,0.0,f,f,0,f,g,00000,0,- +b,28.25,5.04,y,p,c,bb,1.5,t,t,8,t,g,00144,7,+ +b,35.00,3.375,u,g,c,h,8.29,f,f,0,t,g,00000,0,- +a,20.33,10.0,u,g,c,h,1.0,t,t,4,f,g,00050,1465,+ +a,25.00,11.0,y,p,aa,v,4.5,t,f,0,f,g,00120,0,- +b,34.25,1.75,u,g,w,bb,0.25,t,f,0,t,g,00163,0,- +b,22.67,2.54,y,p,c,h,2.585,t,f,0,f,g,00000,0,+ +b,36.75,0.125,y,p,c,v,1.5,f,f,0,t,g,00232,113,+ +b,37.50,1.75,y,p,c,bb,0.25,t,f,0,t,g,00164,400,- +b,29.67,0.75,y,p,c,v,0.04,f,f,0,f,g,00240,0,- +b,29.42,1.25,u,g,c,h,0.25,f,t,2,t,g,00400,108,- +b,?,4.0,y,p,i,v,0.085,f,f,0,t,g,00411,0,- +b,20.17,8.17,u,g,aa,v,1.96,t,t,14,f,g,00060,158,+ +a,24.75,13.665,u,g,q,h,1.5,f,f,0,f,g,00280,1,- +b,38.92,1.75,u,g,k,v,0.5,f,f,0,t,g,00300,2,- +a,52.83,15.0,u,g,c,v,5.5,t,t,14,f,g,00000,2200,+ +a,23.50,9.0,u,g,q,v,8.5,t,t,5,t,g,00120,0,+ +b,44.25,11.0,y,p,d,v,1.5,t,f,0,f,s,00000,0,- +a,46.08,3.0,u,g,c,v,2.375,t,t,8,t,g,00396,4159,+ +b,48.75,8.5,u,g,c,h,12.5,t,t,9,f,g,00181,1655,+ +b,29.42,1.25,u,g,w,v,1.75,f,f,0,f,g,00200,0,- +b,26.67,14.585,u,g,i,bb,0.0,f,f,0,t,g,00178,0,- +b,19.50,0.29,u,g,k,v,0.29,f,f,0,f,g,00280,364,- +a,38.75,1.5,u,g,ff,ff,0.0,f,f,0,f,g,00076,0,- +b,18.17,2.46,u,g,c,n,0.96,f,t,2,t,g,00160,587,- +b,43.00,0.29,y,p,cc,h,1.75,t,t,8,f,g,00100,375,+ +a,56.50,16.0,u,g,j,ff,0.0,t,t,15,f,g,00000,247,+ +b,22.00,7.835,y,p,i,bb,0.165,f,f,0,t,g,?,0,- +a,19.17,8.585,u,g,cc,h,0.75,t,t,7,f,g,00096,0,+ +b,56.00,12.5,u,g,k,h,8.0,t,f,0,t,g,00024,2028,+ +a,32.17,1.46,u,g,w,v,1.085,t,t,16,f,g,00120,2079,+ +a,16.33,0.21,u,g,aa,v,0.125,f,f,0,f,g,00200,1,- +?,33.17,2.25,y,p,cc,v,3.5,f,f,0,t,g,00200,141,- +a,38.25,6.0,u,g,k,v,1.0,t,f,0,t,g,00000,0,+ +b,48.75,26.335,y,p,ff,ff,0.0,t,f,0,t,g,00000,0,- +a,15.83,0.585,u,g,c,h,1.5,t,t,2,f,g,00100,0,+ +a,44.33,0.0,u,g,c,v,2.5,t,f,0,f,g,00000,0,+ +b,37.50,1.125,y,p,d,v,1.5,f,f,0,t,g,00431,0,+ +b,43.17,2.25,u,g,i,bb,0.75,t,f,0,f,g,00560,0,- +b,16.00,3.125,u,g,w,v,0.085,f,t,1,f,g,00000,6,- +b,33.17,3.04,y,p,c,h,2.04,t,t,1,t,g,00180,18027,+ +b,16.33,2.75,u,g,aa,v,0.665,f,t,1,f,g,00080,21,- +b,49.17,2.29,u,g,ff,ff,0.29,f,f,0,f,g,00200,3,- +b,18.08,6.75,y,p,m,v,0.04,f,f,0,f,g,00140,0,- +b,32.75,1.5,u,g,cc,h,5.5,t,t,3,t,g,00000,0,+ +b,47.67,2.5,u,g,m,bb,2.5,t,t,12,t,g,00410,2510,+ +a,23.00,1.835,u,g,j,j,0.0,f,t,1,f,g,00200,53,- +b,29.50,0.58,u,g,w,v,0.29,f,t,1,f,g,00340,2803,- +a,33.75,0.75,u,g,k,bb,1.0,t,t,3,t,g,00212,0,- +b,26.83,0.54,u,g,k,ff,0.0,f,f,0,f,g,00100,0,- +a,49.83,13.585,u,g,k,h,8.5,t,f,0,t,g,00000,0,+ +a,26.17,2.0,u,g,j,j,0.0,f,f,0,t,g,00276,1,- +b,44.33,0.5,u,g,i,h,5.0,t,f,0,t,g,00320,0,+ +a,53.33,0.165,u,g,ff,ff,0.0,f,f,0,t,s,00062,27,- +a,17.58,9.0,u,g,aa,v,1.375,t,f,0,t,g,00000,0,+ +b,21.17,0.875,y,p,c,h,0.25,f,f,0,f,g,00280,204,- +a,23.25,5.875,u,g,q,v,3.17,t,t,10,f,g,00120,245,+ +b,31.00,2.085,u,g,c,v,0.085,f,f,0,f,g,00300,0,- +a,33.67,0.375,u,g,cc,v,0.375,f,f,0,f,g,00300,44,+ +b,18.17,10.25,u,g,c,h,1.085,f,f,0,f,g,00320,13,- +b,25.17,3.0,u,g,c,v,1.25,f,t,1,f,g,00000,22,- +b,22.25,9.0,u,g,aa,v,0.085,f,f,0,f,g,00000,0,- +b,21.33,10.5,u,g,c,v,3.0,t,f,0,t,g,00000,0,+ +a,27.58,3.0,u,g,m,v,2.79,f,t,1,t,g,00280,10,- +b,32.33,3.5,u,g,k,v,0.5,f,f,0,t,g,00232,0,- +b,27.00,0.75,u,g,c,h,4.25,t,t,3,t,g,00312,150,+ +b,28.75,1.5,y,p,c,v,1.5,t,f,0,t,g,00000,225,- +b,47.67,0.29,u,g,c,bb,15.0,t,t,20,f,g,00000,15000,+ +b,18.25,0.165,u,g,d,v,0.25,f,f,0,t,s,00280,0,- +b,33.58,0.335,y,p,cc,v,0.085,f,f,0,f,g,00180,0,- +b,28.25,5.125,u,g,x,v,4.75,t,t,2,f,g,00420,7,+ +b,31.25,1.125,u,g,ff,ff,0.0,f,t,1,f,g,00096,19,- +a,?,11.25,u,g,ff,ff,0.0,f,f,0,f,g,?,5200,- +b,19.17,4.0,y,p,i,v,1.0,f,f,0,t,g,00360,1000,- +b,32.08,4.0,u,g,m,v,2.5,t,f,0,t,g,00360,0,+ +b,54.33,6.75,u,g,c,h,2.625,t,t,11,t,g,00000,284,+ +b,59.50,2.75,u,g,w,v,1.75,t,t,5,t,g,00060,58,+ +b,39.17,1.71,u,g,x,v,0.125,t,t,5,t,g,00480,0,+ +b,41.33,0.0,u,g,c,bb,15.0,t,f,0,f,g,00000,0,+ +b,28.25,0.875,u,g,m,v,0.96,t,t,3,t,g,00396,0,+ +b,41.50,1.54,u,g,i,bb,3.5,f,f,0,f,g,00216,0,+ +a,21.75,11.75,u,g,c,v,0.25,f,f,0,t,g,00180,0,- +a,22.92,1.25,u,g,q,v,0.25,f,f,0,t,g,00120,809,- +b,27.83,1.54,u,g,w,v,3.75,t,t,5,t,g,00100,3,+ +b,17.25,3.0,u,g,k,v,0.04,f,f,0,t,g,00160,40,- +b,36.08,2.54,u,g,ff,ff,0.0,f,f,0,f,g,00000,1000,- +b,21.17,0.25,y,p,c,h,0.25,f,f,0,f,g,00280,204,- +a,23.75,0.71,u,g,w,v,0.25,f,t,1,t,g,00240,4,- +a,16.50,1.25,u,g,q,v,0.25,f,t,1,f,g,00108,98,- +a,18.83,4.415,y,p,c,h,3.0,t,f,0,f,g,00240,0,+ +b,17.58,10.0,u,g,w,h,0.165,f,t,1,f,g,00120,1,- +b,58.58,2.71,u,g,c,v,2.415,f,f,0,t,g,00320,0,- +b,23.25,4.0,u,g,c,bb,0.25,t,f,0,t,g,00160,0,+ +a,47.00,13.0,u,g,i,bb,5.165,t,t,9,t,g,00000,0,+ +b,42.75,3.0,u,g,i,bb,1.0,t,f,0,f,g,00000,200,- +a,20.42,10.5,y,p,x,h,0.0,f,f,0,t,g,00154,32,- +a,25.75,0.5,u,g,c,h,0.875,t,f,0,t,g,00491,0,+ +b,24.42,2.0,u,g,e,dd,0.165,f,t,2,f,g,00320,1300,- +b,22.08,11.0,u,g,cc,v,0.665,t,f,0,f,g,00100,0,+ +a,23.00,11.75,u,g,x,h,0.5,t,t,2,t,g,00300,551,+ +a,68.67,15.0,u,g,e,z,0.0,t,t,14,f,g,00000,3376,+ +b,21.33,7.5,u,g,aa,v,1.415,t,t,1,f,g,00080,9800,+ +a,50.25,0.835,u,g,aa,v,0.5,f,f,0,t,g,00240,117,- +?,28.17,0.585,u,g,aa,v,0.04,f,f,0,f,g,00260,1004,- +b,33.00,2.5,y,p,w,v,7.0,f,f,0,t,g,00280,0,- +b,27.00,1.5,y,p,w,v,0.375,t,f,0,t,g,00260,1065,+ +b,48.50,4.25,u,g,m,v,0.125,t,f,0,t,g,00225,0,+ +b,23.92,1.5,u,g,d,h,1.875,t,t,6,f,g,00200,327,+ +a,18.92,9.0,u,g,aa,v,0.75,t,t,2,f,g,00088,591,+ +b,34.50,4.04,y,p,i,bb,8.5,t,t,7,t,g,00195,0,+ +a,28.08,15.0,y,p,e,z,0.0,t,f,0,f,g,00000,13212,+ +b,34.17,5.25,u,g,w,v,0.085,f,f,0,t,g,00290,6,+ +b,51.83,3.0,y,p,ff,ff,1.5,f,f,0,f,g,00180,4,- +b,25.92,0.875,u,g,k,v,0.375,f,t,2,t,g,00174,3,- +b,21.50,11.5,u,g,i,v,0.5,t,f,0,t,g,00100,68,- +b,31.83,0.04,y,p,m,v,0.04,f,f,0,f,g,00000,0,- +b,21.00,3.0,y,p,d,v,1.085,t,t,8,t,g,00160,1,+ +b,30.17,6.5,u,g,cc,v,3.125,t,t,8,f,g,00330,1200,+ +b,25.50,0.375,u,g,m,v,0.25,t,t,3,f,g,00260,15108,+ +b,17.92,0.205,u,g,aa,v,0.04,f,f,0,f,g,00280,750,- +b,36.67,3.25,u,g,q,h,9.0,t,f,0,t,g,00102,639,+ +a,55.75,7.08,u,g,k,h,6.75,t,t,3,t,g,00100,50,- +b,25.08,1.71,u,g,x,v,1.665,t,t,1,t,g,00395,20,+ +a,31.75,3.0,y,p,j,j,0.0,f,f,0,f,g,00160,20,- +b,22.67,1.585,y,p,w,v,3.085,t,t,6,f,g,00080,0,+ +a,21.92,11.665,u,g,k,h,0.085,f,f,0,f,g,00320,5,- +b,42.83,1.25,u,g,m,v,13.875,f,t,1,t,g,00352,112,- +a,56.83,4.25,y,p,ff,ff,5.0,f,f,0,t,g,00000,4,- +b,22.17,2.25,u,g,i,v,0.125,f,f,0,f,g,00160,10,- +b,18.83,3.54,y,p,ff,ff,0.0,f,f,0,t,g,00180,1,- +b,37.33,6.5,u,g,m,h,4.25,t,t,12,t,g,00093,0,+ +a,17.67,0.0,y,p,j,ff,0.0,f,f,0,f,g,00086,0,- +b,34.58,0.0,?,?,?,?,0.0,f,f,0,f,p,?,0,- +b,18.08,5.5,u,g,k,v,0.5,t,f,0,f,g,00080,0,+ +a,16.92,0.5,u,g,i,v,0.165,f,t,6,t,g,00240,35,- +b,51.33,10.0,u,g,i,bb,0.0,t,t,11,f,g,00000,1249,+ +b,25.00,12.0,u,g,k,v,2.25,t,t,2,t,g,00120,5,- +b,20.42,1.085,u,g,q,v,1.5,f,f,0,f,g,00108,7,- +b,23.75,0.415,y,p,c,v,0.04,f,t,2,f,g,00128,6,- +a,30.00,5.29,u,g,e,dd,2.25,t,t,5,t,g,00099,500,+ +b,44.83,7.0,y,p,c,v,1.625,f,f,0,f,g,00160,2,- +a,25.42,1.125,u,g,q,v,1.29,t,t,2,f,g,00200,0,- +a,19.58,0.665,y,p,c,v,1.0,f,t,1,f,g,02000,2,- +b,31.08,1.5,y,p,w,v,0.04,f,f,0,f,s,00160,0,- +a,20.75,10.335,u,g,cc,h,0.335,t,t,1,t,g,00080,50,+ +b,34.92,2.5,u,g,w,v,0.0,t,f,0,t,g,00239,200,+ +a,58.33,10.0,u,g,q,v,4.0,t,t,14,f,g,00000,1602,+ +a,22.67,0.335,u,g,q,v,0.75,f,f,0,f,s,00160,0,- +a,35.17,3.75,u,g,ff,ff,0.0,f,t,6,f,g,00000,200,- +b,28.67,9.335,u,g,q,h,5.665,t,t,6,f,g,00381,168,+ +b,39.50,1.625,u,g,c,v,1.5,f,f,0,f,g,00000,316,- +?,26.50,2.71,y,p,?,?,0.085,f,f,0,f,s,00080,0,- +b,32.25,0.165,y,p,c,h,3.25,t,t,1,t,g,00432,8000,+ +a,24.58,0.67,u,g,aa,h,1.75,t,f,0,f,g,00400,0,- +b,54.42,0.5,y,p,k,h,3.96,t,f,0,f,g,00180,314,+ +b,18.42,10.415,y,p,aa,v,0.125,t,f,0,f,g,00120,375,- +b,27.25,1.585,u,g,cc,h,1.835,t,t,12,t,g,00583,713,+ +a,26.92,13.5,u,g,q,h,5.0,t,t,2,f,g,00000,5000,+ +b,23.17,11.125,u,g,x,h,0.46,t,t,1,f,g,00100,0,+ +a,15.92,2.875,u,g,q,v,0.085,f,f,0,f,g,00120,0,- +b,16.08,0.75,u,g,c,v,1.75,t,t,5,t,g,00352,690,+ +b,31.58,0.75,y,p,aa,v,3.5,f,f,0,t,g,00320,0,- +a,23.58,11.5,y,p,k,h,3.0,f,f,0,t,g,00020,16,- +b,43.25,3.0,u,g,q,h,6.0,t,t,11,f,g,00080,0,+ +a,24.50,1.04,y,p,ff,ff,0.5,t,t,3,f,g,00180,147,- +b,23.50,3.165,y,p,k,v,0.415,f,t,1,t,g,00280,80,- +b,19.17,9.5,u,g,w,v,1.5,t,f,0,f,g,00120,2206,+ +b,74.83,19.0,y,p,ff,ff,0.04,f,t,2,f,g,00000,351,- +a,48.17,1.335,u,g,i,o,0.335,f,f,0,f,g,00000,120,- +b,25.17,6.0,u,g,c,v,1.0,t,t,3,f,g,00000,0,+ +b,32.92,2.5,u,g,aa,v,1.75,f,t,2,t,g,00720,0,- +b,22.25,0.46,u,g,k,v,0.125,f,f,0,t,g,00280,55,- +a,46.67,0.46,u,g,cc,h,0.415,t,t,11,t,g,00440,6,+ +b,25.25,1.0,u,g,aa,v,0.5,f,f,0,f,g,00200,0,- +b,23.08,0.0,u,g,k,v,1.0,f,t,11,f,s,00000,0,- +b,18.33,1.21,y,p,e,dd,0.0,f,f,0,f,g,00100,0,- +?,20.08,0.125,u,g,q,v,1.0,f,t,1,f,g,00240,768,+ +a,36.75,4.71,u,g,ff,ff,0.0,f,f,0,f,g,00160,0,- +b,20.00,1.25,y,p,k,v,0.125,f,f,0,f,g,00140,4,- +b,27.75,0.585,y,p,cc,v,0.25,t,t,2,f,g,00260,500,+ +b,22.75,11.0,u,g,q,v,2.5,t,t,7,t,g,00100,809,+ +b,26.17,0.835,u,g,cc,v,1.165,f,f,0,f,g,00100,0,- +b,22.50,0.125,y,p,k,v,0.125,f,f,0,f,g,00200,70,- +b,18.58,10.29,u,g,ff,ff,0.415,f,f,0,f,g,00080,0,- +b,27.58,2.04,y,p,aa,v,2.0,t,t,3,t,g,00370,560,+ +b,22.17,0.585,y,p,ff,ff,0.0,f,f,0,f,g,00100,0,- +b,28.17,0.125,y,p,k,v,0.085,f,f,0,f,g,00216,2100,- +b,23.25,1.5,u,g,q,v,2.375,t,t,3,t,g,00000,582,+ +b,?,3.0,y,p,i,bb,7.0,f,f,0,f,g,00000,1,- +b,28.58,3.625,u,g,aa,v,0.25,f,f,0,t,g,00100,0,- +a,60.92,5.0,u,g,aa,v,4.0,t,t,4,f,g,00000,99,+ +a,26.58,2.54,y,p,ff,ff,0.0,f,f,0,t,g,00180,60,- +b,30.58,2.71,y,p,m,v,0.125,f,f,0,t,s,00080,0,- +b,22.00,0.79,u,g,w,v,0.29,f,t,1,f,g,00420,283,- +a,40.33,7.54,y,p,q,h,8.0,t,t,14,f,g,00000,2300,+ +b,51.42,0.04,u,g,x,h,0.04,t,f,0,f,g,00000,3000,+ +b,63.33,0.54,u,g,c,v,0.585,t,t,3,t,g,00180,0,- +a,36.58,0.29,u,g,ff,ff,0.0,f,t,10,f,g,00200,18,- +a,29.50,1.085,y,p,x,v,1.0,f,f,0,f,g,00280,13,- +b,40.00,6.5,u,g,aa,bb,3.5,t,t,1,f,g,00000,500,+ +a,44.17,6.665,u,g,q,v,7.375,t,t,3,t,g,00000,0,+ +b,32.67,9.0,y,p,w,h,5.25,t,f,0,t,g,00154,0,+ +b,23.00,0.625,y,p,aa,v,0.125,t,f,0,f,g,00180,1,- +b,22.33,11.0,u,g,w,v,2.0,t,t,1,f,g,00080,278,+ +b,38.17,10.125,u,g,x,v,2.5,t,t,6,f,g,00520,196,+ +b,41.17,1.25,y,p,w,v,0.25,f,f,0,f,g,00000,195,- +b,16.33,4.085,u,g,i,h,0.415,f,f,0,t,g,00120,0,- +b,48.17,7.625,u,g,w,h,15.5,t,t,12,f,g,00000,790,+ +b,?,0.5,u,g,c,bb,0.835,t,f,0,t,s,00320,0,- +b,26.33,13.0,u,g,e,dd,0.0,f,f,0,t,g,00140,1110,- +b,33.67,1.25,u,g,w,v,1.165,f,f,0,f,g,00120,0,- +b,16.25,0.835,u,g,m,v,0.085,t,f,0,f,s,00200,0,- +b,35.75,2.415,u,g,w,v,0.125,f,t,2,f,g,00220,1,- +b,?,0.625,u,g,k,v,0.25,f,f,0,f,g,00380,2010,- +b,20.75,5.085,y,p,j,v,0.29,f,f,0,f,g,00140,184,- +a,24.75,12.5,u,g,aa,v,1.5,t,t,12,t,g,00120,567,+ +a,57.08,19.5,u,g,c,v,5.5,t,t,7,f,g,00000,3000,+ +b,24.83,2.75,u,g,c,v,2.25,t,t,6,f,g,?,600,+ +a,27.17,1.25,u,g,ff,ff,0.0,f,t,1,f,g,00092,300,- +b,48.58,0.205,y,p,k,v,0.25,t,t,11,f,g,00380,2732,+ +b,45.00,8.5,u,g,cc,h,14.0,t,t,1,t,g,00088,2000,+ +a,22.25,1.25,y,p,ff,ff,3.25,f,f,0,f,g,00280,0,- +b,47.83,4.165,u,g,x,bb,0.085,f,f,0,t,g,00520,0,- +a,28.42,3.5,u,g,w,v,0.835,t,f,0,f,s,00280,0,+ +a,51.92,6.5,u,g,i,bb,3.085,f,f,0,t,g,00073,0,- +b,36.33,3.79,u,g,w,v,1.165,t,f,0,t,g,00200,0,- +a,33.92,1.585,y,p,ff,ff,0.0,t,f,0,f,g,00320,0,- +a,18.92,9.25,y,p,c,v,1.0,t,t,4,t,g,00080,500,+ +b,23.75,12.0,u,g,c,v,2.085,f,f,0,f,s,00080,0,- +a,22.50,8.5,u,g,q,v,1.75,t,t,10,f,g,00080,990,- +b,29.25,13.0,u,g,d,h,0.5,f,f,0,f,g,00228,0,- +a,25.33,2.085,u,g,c,h,2.75,t,f,0,t,g,00360,1,- +b,22.58,1.5,y,p,aa,v,0.54,f,f,0,t,g,00120,67,- +a,17.92,0.54,u,g,c,v,1.75,f,t,1,t,g,00080,5,- +b,21.00,4.79,y,p,w,v,2.25,t,t,1,t,g,00080,300,+ +a,32.00,6.0,u,g,d,v,1.25,f,f,0,f,g,00272,0,- +b,39.58,5.0,u,g,ff,ff,0.0,f,t,2,f,g,00017,1,- +a,25.00,0.875,u,g,x,h,1.04,t,f,0,t,g,00160,5860,+ +b,24.58,12.5,u,g,w,v,0.875,t,f,0,t,g,00260,0,- +b,33.50,1.75,u,g,x,h,4.5,t,t,4,t,g,00253,857,+ +a,21.50,6.0,u,g,aa,v,2.5,t,t,3,f,g,00080,918,+ +b,26.25,1.54,u,g,w,v,0.125,f,f,0,f,g,00100,0,- +b,27.67,13.75,u,g,w,v,5.75,t,f,0,t,g,00487,500,+ +b,30.08,1.04,y,p,i,bb,0.5,t,t,10,t,g,00132,28,- +b,17.50,22.0,l,gg,ff,o,0.0,f,f,0,t,p,00450,100000,+ +b,31.25,2.835,u,g,ff,ff,0.0,f,t,5,f,g,00176,146,- +b,36.42,0.75,y,p,d,v,0.585,f,f,0,f,g,00240,3,- +b,32.42,3.0,u,g,d,v,0.165,f,f,0,t,g,00120,0,- +a,20.75,9.54,u,g,i,v,0.04,f,f,0,f,g,00200,1000,- +b,17.67,4.46,u,g,c,v,0.25,f,f,0,f,s,00080,0,- +b,28.67,14.5,u,g,d,v,0.125,f,f,0,f,g,00000,286,- +b,22.08,11.46,u,g,k,v,1.585,f,f,0,t,g,00100,1212,- +a,37.75,5.5,u,g,q,v,0.125,t,f,0,t,g,00228,0,+ +a,23.58,0.83,u,g,q,v,0.415,f,t,1,t,g,00200,11,- +a,28.58,3.75,u,g,c,v,0.25,f,t,1,t,g,00040,154,- +b,17.42,6.5,u,g,i,v,0.125,f,f,0,f,g,00060,100,- +b,26.75,4.5,y,p,c,bb,2.5,f,f,0,f,g,00200,1210,- +b,31.33,19.5,u,g,c,v,7.0,t,t,16,f,g,00000,5000,+ +a,20.08,1.25,u,g,c,v,0.0,f,f,0,f,g,00000,0,- +b,40.92,0.5,y,p,m,v,0.5,f,f,0,t,g,00130,0,- diff --git a/test/data/newspaperchurn.csv b/test/data/newspaperchurn.csv new file mode 100644 index 0000000000..42871f679e --- /dev/null +++ b/test/data/newspaperchurn.csv @@ -0,0 +1,1586 @@ +SubscriptionID,HH Income,Home Ownership,Ethnicity,dummy for Children,Year Of Residence,Age range,Language,Address,State,City,County,Zip Code,weekly fee,Deliveryperiod,Nielsen Prizm,reward program,Source Channel,Subscriber +110447118,"$ 40,000 - $49,999",OWNER,German,N,32,55-59,English,9221 JENNRICH AVE,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,SunOnly,MM,0,VRU,NO +110481691,"$ 70,000 - $79,999",OWNER,Irish,N,13,70-74,English,8939 CANARY AVE,CA,FOUNTAIN VALLEY,ORANGE,92708,$4.00 - $4.99,7Day,MM,1,CustCall,YES +181185583,"$ 90,000 - $99,999",OWNER,Chinese,N,6,30-34,English,2 AMELIA,CA,ALISO VIEJO,ORANGE,92656,$0 - $0.01,SunOnly,YM,0,Partner,NO +110232414,"$400,000 - $499,999",OWNER,Polish,Y,14,35-39,English,19301 SURFDALE LN,CA,HUNTINGTON BEACH,ORANGE,92648,$10.00 - $10.99,7Day,MW,9,RetenIn,YES +180688505,"$ 20,000 - $29,999",RENTER,English,N,2,25-29,English,69104 VERANO PL,CA,IRVINE,ORANGE,92617,$7.00 - $7.99,7Day,,0,Internet,NO +140597481,"$100,000 - $124,999",OWNER,English,Y,14,40-44,English,17406 SANTA ISABEL ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$2.00 - $2.99,SatSun,MM,0,CustCall,NO +180167587,"$ 40,000 - $49,999",OWNER,Norwegian,N,18,75 years or more,English,3160 PUESTA DEL SOL CT UNIT 204,CA,CORONA,RIVERSIDE,92882,$1.00 - $1.99,SunOnlyT,YW,0,TeleIn,NO +180424823,"$ 40,000 - $49,999",OWNER,Hispanic,N,20,60-64,Spanish,10282 GILBERT ST,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +150611986,"$100,000 - $124,999",OWNER,Scottish (Scotch),Y,21,75 years or more,English,602 S COATE RD,CA,ORANGE,ORANGE,92869,$0 - $0.01,SunOnly,YW,0,Partner,NO +181198786,"$ 60,000 - $69,999",OWNER,Irish,N,3,75 years or more,English,5215 ELVIRA,CA,LAGUNA WOODS,ORANGE,92637,$3.00 - $3.99,7Day,MM,0,Kiosk,NO +181268482,"$100,000 - $124,999",OWNER,English,N,2,45-49,English,5669 PORTAGE ST,CA,YORBA LINDA,ORANGE,92887,$0 - $0.01,7Day,FM,0,Partner,YES +180341004,"$ 20,000 - $29,999",RENTER,Armenian,N,2,25-29,English,9922 BROADWAY APT 20,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,SunOnly,YM,0,TeleOut,NO +180519103,"$100,000 - $124,999",OWNER,Filipino (Philippine),N,29,75 years or more,English,10042 EL CAPITAN DR,CA,HUNTINGTON BEACH,ORANGE,92646,$0.51 - $0.99,SunOnly,MW,0,DirectMl,NO +140292449,"$ 60,000 - $69,999",OWNER,Chinese,N,38,75 years or more,English,12225 GLEN CREEK RD,CA,CERRITOS,LOS ANGELES,90703,$1.00 - $1.99,7Day,MM,0,FUSS,YES +180699991,"$150,000 - $174,999",RENTER,Korean,N,2,30-34,English,433 RIDGEWAY,CA,IRVINE,ORANGE,92620,$0 - $0.01,SunOnly,YW,0,Partner,NO +180456385,"$ 30,000 - $39,999",OWNER,Hispanic,N,28,55-59,English,7516 EL ESCORIAL WAY,CA,BUENA PARK,ORANGE,90620,$1.00 - $1.99,7Day,FM,0,CustCall,NO +170133895,"$125,000 - $149,999",OWNER,Norwegian,N,38,75 years or more,English,24506 MANDEVILLE DR,CA,LAGUNA HILLS,ORANGE,92653,$4.00 - $4.99,7Day,MW,0,SCinsert,NO +180070896,"$300,000 - $399,999",OWNER,English,Y,12,40-44,English,2692 E STEARNS ST,CA,BREA,ORANGE,92821,$1.00 - $1.99,SunOnly,FW,0,Internet,NO +110142590,"$125,000 - $149,999",OWNER,Vietnamese,N,21,65-69,Vietnamese,4892 KRON,CA,IRVINE,ORANGE,92604,$1.00 - $1.99,Thu-Sun,MW,0,TeleIn,NO +160520714,"$ 70,000 - $79,999",OWNER,unknown,N,5,55-59,,24921 MUIRLANDS BLVD SPC 147,CA,LAKE FOREST,ORANGE,92630,$0.51 - $0.99,7Day,ME,0,TeleIn,NO +180472252,"$ 20,000 - $29,999",OWNER,Vietnamese,Y,21,50-54,Vietnamese,15171 YAWL ST,CA,GARDEN GROVE,ORANGE,92843,$0 - $0.01,SunOnly,MM,0,Partner,NO +181394875,"$150,000 - $174,999",RENTER,Hispanic,N,2,40-44,Spanish,551 SHADOW OAKS,CA,IRVINE,ORANGE,92618,$0 - $0.01,SunOnly,YM,0,Partner,NO +180641496,"$ 20,000 - $29,999",OWNER,Danish,N,17,65-69,English,5 MISTY CREEK LN,CA,LAGUNA HILLS,ORANGE,92653,$0.01 - $0.50,SunOnly,MM,0,Partner,YES +160445618,"$250,000 - $299,999",OWNER,Hispanic,Y,23,50-54,Spanish,1481 RANCHO HILLS DR,CA,CHINO HILLS,SAN BERNARDINO,91709,$2.00 - $2.99,SatSun,YW,0,DirectMl,NO +130494517,"$ 80,000 - $89,999",OWNER,unknown,Y,22,60-64,,18392 CARNABY LN,CA,HUNTINGTON BEACH,ORANGE,92648,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +181202538,"$ 80,000 - $89,999",OWNER,unknown,N,2,25-29,,29 ALSACE,CA,LAGUNA NIGUEL,ORANGE,92677,$0.51 - $0.99,Thu-Sun,MW,0,Internet,NO +180380397,"$ 90,000 - $99,999",OWNER,English,N,17,50-54,English,6001 JADE CIR,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,SunOnly,FM,0,Partner,NO +180466532,"$250,000 - $299,999",OWNER,Japanese,N,19,45-49,English,2127 COG HILL DR,CA,CORONA,RIVERSIDE,92883,$0 - $0.01,SunOnly,YW,0,Partner,NO +110313236,"$ 20,000 - $29,999",OWNER,Scottish (Scotch),N,12,60-64,English,765 N RUSSELL DR,CA,ORANGE,ORANGE,92867,$6.00 - $6.99,7Day,FM,0,CustCall,NO +170235395,"Under $20,000",OWNER,Hispanic,N,2,25-29,Spanish,605 E POMONA ST,CA,SANTA ANA,ORANGE,92707,$4.00 - $4.99,7Day,MM,0,TeleIn,NO +110278747,"$ 80,000 - $89,999",OWNER,Scottish (Scotch),N,11,70-74,English,28183 MANCHUCA,CA,MISSION VIEJO,ORANGE,92692,$4.00 - $4.99,SunOnly,MM,0,TeleIn,YES +180742990,"$ 90,000 - $99,999",OWNER,English,N,30,75 years or more,English,1623 AVENIDA SELVA,CA,FULLERTON,ORANGE,92833,$0 - $0.01,SunOnly,FM,0,Partner,NO +180661380,"$ 60,000 - $69,999",OWNER,Russian,N,11,50-54,English,6932 SAN JULIAN CIR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,MM,0,Partner,NO +180631580,"$ 80,000 - $89,999",RENTER,unknown,N,3,30-34,,25454 SEQUOIAWOOD WAY,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,SunOnly,YM,0,Kiosk,NO +180178644,"$175,000 - $199,999",OWNER,Vietnamese,N,11,50-54,English,10 STILL WATER,CA,NEWPORT COAST,ORANGE,92657,$2.00 - $2.99,Thu-Sun,YW,0,TMC,NO +180538234,"Under $20,000",OWNER,Portuguese,Y,22,70-74,Portuguese,2314 S TOWNER ST,CA,SANTA ANA,ORANGE,92707,$4.00 - $4.99,7Day,FM,0,TeleOut,NO +180561840,"Under $20,000",RENTER,Hispanic,N,4,45-49,Spanish,13116 CYPRESS ST APT 3,CA,GARDEN GROVE,ORANGE,92843,$0.01 - $0.50,SunOnly,FE,0,Partner,YES +181300153,"$ 50,000 - $59,999",OWNER,Hispanic,N,2,30-34,English,624 SHASTA LN,CA,COSTA MESA,ORANGE,92626,$0 - $0.01,SunOnly,FM,0,Partner,NO +180487315,"$200,000 - $249,999",OWNER,English,Y,10,40-44,English,7 SUTHERLAND DR,CA,LADERA RANCH,ORANGE,92694,$0 - $0.01,SunOnly,FW,0,Partner,NO +181371960,"$400,000 - $499,999",OWNER,Scottish (Scotch),N,35,65-69,English,9831 CLOVERDALE AVE,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +181538617,"Under $20,000",RENTER,Hispanic,N,1,24 years or less,Spanish,903 N GARFIELD ST APT 2,CA,SANTA ANA,ORANGE,92701,$3.00 - $3.99,7DAY,FE,0,Crew1,YES +180575053,"$125,000 - $149,999",OWNER,English,N,20,45-49,English,63 RIVERSEA RD,CA,SEAL BEACH,ORANGE,90740,$8.00 - $8.99,7Day,MM,0,CustCall,YES +181344148,"$ 20,000 - $29,999",RENTER,Italian,N,2,24 years or less,English,24071 HOLLYOAK APT E,CA,ALISO VIEJO,ORANGE,92656,$4.00 - $4.99,7Day,YM,0,Crew,NO +160325638,"$125,000 - $149,999",OWNER,Korean,N,3,40-44,English,2800 KELLER DR APT 217,CA,TUSTIN,ORANGE,92782,$4.00 - $4.99,7Day,FM,0,TeleOut,NO +140211571,"$175,000 - $199,999",OWNER,Scottish (Scotch),N,44,75 years or more,English,13142 BOW PL,CA,SANTA ANA,ORANGE,92705,$4.00 - $4.99,7Day,MM,0,VRU,NO +120363000,"$400,000 - $499,999",OWNER,English,Y,24,50-54,English,2556 N SAN MIGUEL DR,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,FW,1,Email,YES +180489719,"$ 50,000 - $59,999",OWNER,Hispanic,N,5,45-49,English,5411 E WARDLOW RD,CA,LONG BEACH,LOS ANGELES,90808,$0 - $0.01,SunOnly,MW,0,Partner,NO +180704207,"$ 40,000 - $49,999",OWNER,Hispanic,Y,27,55-59,Spanish,1618 S ROSS ST,CA,SANTA ANA,ORANGE,92707,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180555722,"Under $20,000",OWNER,Vietnamese,Y,26,70-74,English,8402 SATINWOOD CIR,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,MM,0,Partner,NO +160219588,"$ 50,000 - $59,999",OWNER,Hispanic,N,12,45-49,Spanish,2333 S OLIVE ST,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,Fri-Sun,FM,0,Crew,NO +180477177,"$ 40,000 - $49,999",RENTER,French,N,4,25-29,English,293 N STATE COLLEGE BLVD APT 4047,CA,ORANGE,ORANGE,92868,$1.00 - $1.99,Thu-Sun,YW,0,System,NO +160206092,"$ 30,000 - $39,999",RENTER,Indian,N,9,50-54,Hindi,8671 WALKER ST APT 6,CA,CYPRESS,ORANGE,90630,$1.00 - $1.99,7Day,YM,0,CustCall,NO +160172541,"Under $20,000",RENTER,Hispanic,N,10,35-39,Spanish,15517 WILLIAMS ST APT P3,CA,TUSTIN,ORANGE,92780,$1.00 - $1.99,7Day,FE,0,CircAdm,NO +170605450,"$ 50,000 - $59,999",OWNER,unknown,N,5,55-59,,705 S MACDUFF ST,CA,ANAHEIM,ORANGE,92804,$4.00 - $4.99,7Day,MW,0,CustCall,NO +130333909,"$125,000 - $149,999",OWNER,English,N,23,55-59,English,2133 CHEVY CHASE DR,CA,BREA,ORANGE,92821,$4.00 - $4.99,7Day,YW,0,CustCall,YES +130595856,"$100,000 - $124,999",RENTER,unknown,N,1,30-34,,27 ALARIS AISLE,CA,IRVINE,ORANGE,92614,$2.00 - $2.99,SatSun,YM,0,CustCall,NO +180312906,"$ 80,000 - $89,999",OWNER,English,N,2,60-64,English,1031 S LARAMIE ST,CA,ANAHEIM,ORANGE,92806,$2.00 - $2.99,SunOnly,FM,0,CustCall,NO +180503056,"$ 40,000 - $49,999",RENTER,Hispanic,N,3,40-44,Spanish,14642 CARFAX DR APT C,CA,TUSTIN,ORANGE,92780,$0.01 - $0.50,Thu-Sun,FE,0,System,NO +140262685,"Under $20,000",RENTER,English,N,7,25-29,English,1 KNOLLGLEN APT 113,CA,IRVINE,ORANGE,92614,$2.00 - $2.99,7Day,YM,0,TeleIn,NO +180649293,"$400,000 - $499,999",OWNER,English,Y,16,45-49,English,1690 PASEO VISTA ST,CA,CORONA,RIVERSIDE,92881,$0.01 - $0.50,Thu-Sun,FW,0,Partner,NO +181354397,"Under $20,000",OWNER,Irish,N,8,45-49,English,13772 BORDEAUX ST,CA,GARDEN GROVE,ORANGE,92843,$0.01 - $0.50,Thu-Sun,YM,0,Partner,NO +180382448,"$100,000 - $124,999",OWNER,Dutch,N,13,65-69,English,8954 EL CAPITAN AVE,CA,FOUNTAIN VALLEY,ORANGE,92708,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +160489459,"$150,000 - $174,999",OWNER,unknown,Y,21,55-59,,21155 VIA MARIANO,CA,YORBA LINDA,ORANGE,92887,$5.00 - $5.99,Fri-Sun,MW,0,VRU,NO +180654148,"Under $20,000",RENTER,Hispanic,N,12,35-39,Spanish,619 W MAPLE AVE APT 16,CA,ORANGE,ORANGE,92868,$0 - $0.01,SunOnly,YM,0,Partner,NO +180453245,"$ 70,000 - $79,999",RENTER,English,N,7,30-34,English,1523 CALLE SACRAMENTO APT 1,CA,SAN CLEMENTE,ORANGE,92672,$0.01 - $0.50,Thu-Sun,YM,0,Partner,NO +140359985,"$200,000 - $249,999",OWNER,English,N,11,55-59,English,30902 CLUBHOUSE DR UNIT 27E,CA,LAGUNA NIGUEL,ORANGE,92677,$4.00 - $4.99,7Day,YW,0,Kiosk,NO +180304450,"$ 90,000 - $99,999",OWNER,Hispanic,N,4,40-44,English,673 W HOUSTON AVE,CA,FULLERTON,ORANGE,92832,$2.00 - $2.99,Thu-SunT,FM,0,SCinsert,NO +160070754,"$175,000 - $199,999",OWNER,English,Y,17,50-54,English,24 ORCHARD,CA,IRVINE,ORANGE,92618,$0.51 - $0.99,7Day,YW,0,CustCall,NO +181445079,"$ 20,000 - $29,999",RENTER,Scottish (Scotch),N,1,50-54,English,1815 SHERINGTON PL APT V101,CA,NEWPORT BEACH,ORANGE,92663,$4.00 - $4.99,7Day,YM,0,Crew,NO +180706740,"$ 30,000 - $39,999",OWNER,Hispanic,N,4,70-74,Spanish,10607 MONA WAY,CA,STANTON,ORANGE,90680,$0 - $0.01,SunOnly,FM,0,Partner,NO +180353757,"$ 20,000 - $29,999",OWNER,Hispanic,Y,18,35-39,Spanish,518 E RUSSELL AVE,CA,SANTA ANA,ORANGE,92707,$0 - $0.01,SunOnly,YM,0,Partner,NO +181369910,"Under $20,000",RENTER,Hispanic,N,1,30-34,Spanish,8381 15TH ST APT 13,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,Thu-Sun,FE,0,Crew,NO +110525700,"$100,000 - $124,999",OWNER,Scottish (Scotch),N,5,45-49,English,27232 EASTRIDGE DR,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,7DayOL,MW,0,Internet,NO +150456649,"$125,000 - $149,999",OWNER,Scottish (Scotch),N,11,50-54,English,2042 E WELLINGTON AVE,CA,SANTA ANA,ORANGE,92701,$2.00 - $2.99,Thu-Sun,MW,0,Internet,NO +181495692,"$ 70,000 - $79,999",OWNER,Jewish,N,14,55-59,English,39 COSTA DEL SOL,CA,DANA POINT,ORANGE,92629,$3.00 - $3.99,THU-SUN,MW,0,Kiosk1,NO +181523457,"Under $20,000",RENTER,Welsh,N,3,75 years or more,English,2520 COLUMBIA DR,CA,COSTA MESA,ORANGE,92626,$3.00 - $3.99,THU-SUN,MW,0,Crew1,YES +180608637,"$ 40,000 - $49,999",RENTER,unknown,N,4,30-34,,5600 ORANGETHORPE AVE,CA,LA PALMA,ORANGE,90623,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +110194446,"$500,000 Plus",OWNER,Irish,N,22,55-59,English,20624 BIRCH CIR,CA,YORBA LINDA,ORANGE,92886,$8.00 - $8.99,Thu-Sun,YW,1,RetenIn,YES +181185861,"$ 70,000 - $79,999",OWNER,Hispanic,N,1,35-39,English,13232 DEAN ST,CA,TUSTIN,ORANGE,92780,$0 - $0.01,SunOnly,FW,0,Partner,NO +120066452,"$100,000 - $124,999",OWNER,German,N,30,60-64,English,210 S LOGANBERRY ST,CA,ANAHEIM,ORANGE,92808,$3.00 - $3.99,SunOnly,FM,0,CustCall,NO +150270659,"Under $20,000",OWNER,African American 95%+,N,26,75 years or more,English,1808 PENINSULA PL,CA,COSTA MESA,ORANGE,92627,$10.00 - $10.99,7Day,MW,5,CustCall,YES +180721975,"$125,000 - $149,999",OWNER,English,N,49,75 years or more,English,3708 NIPOMO AVE,CA,LONG BEACH,LOS ANGELES,90808,,7DayOL,MW,0,CircAdm,NO +180396242,"$400,000 - $499,999",OWNER,unknown,Y,6,45-49,,71 ROCKROSE,CA,ALISO VIEJO,ORANGE,92656,$1.00 - $1.99,Thu-Sun,MW,0,DirectMl,YES +160033920,"$125,000 - $149,999",OWNER,English,N,29,60-64,English,17610 SUNWEST CIR,CA,YORBA LINDA,ORANGE,92886,$1.00 - $1.99,SunOnly,FM,3,CustCall,NO +140546997,"$300,000 - $399,999",OWNER,French,N,12,50-54,French,43 CANYON TER,CA,IRVINE,ORANGE,92603,$0.01 - $0.50,SunOnly,FW,0,Partner,YES +120577830,"$ 80,000 - $89,999",OWNER,Hispanic,N,9,65-69,Spanish,27041 EL CIERVO LN,CA,MISSION VIEJO,ORANGE,92691,$0 - $0.01,7Day,MW,0,CircAdm,NO +170561371,"$ 40,000 - $49,999",RENTER,Irish,Y,1,35-39,English,1006 SABLE,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$4.00 - $4.99,7Day,YW,0,TeleOut,NO +180211545,"$125,000 - $149,999",OWNER,English,N,4,45-49,English,828 W GLENWOOD CIR,CA,FULLERTON,ORANGE,92832,$2.00 - $2.99,Thu-Sun,MM,0,TeleIn,NO +180539953,"$ 60,000 - $69,999",OWNER,Vietnamese,Y,15,45-49,Vietnamese,8612 MAYS AVE,CA,GARDEN GROVE,ORANGE,92844,$0 - $0.01,SunOnly,FM,0,Partner,NO +160135014,"$300,000 - $399,999",OWNER,Japanese,N,31,65-69,English,9352 SOUTHSHORE DR,CA,HUNTINGTON BEACH,ORANGE,92646,$6.00 - $6.99,SoooTFS,YW,0,VRU,NO +110245448,"$ 60,000 - $69,999",OWNER,English,N,31,65-69,English,24 ABBEY LN,CA,ALISO VIEJO,ORANGE,92656,$4.00 - $4.99,7Day,FM,4,TeleIn,YES +180693527,"$ 60,000 - $69,999",OWNER,English,N,5,35-39,English,985 S IDAHO ST UNIT 46,CA,LA HABRA,ORANGE,90631,$0.01 - $0.50,SunOnly,FE,0,Partner,YES +180246981,"$400,000 - $499,999",OWNER,Irish,Y,18,55-59,English,3321 N COTTONWOOD ST,CA,ORANGE,ORANGE,92865,$7.00 - $7.99,7Day,YW,6,TeleIn,NO +110014966,"$100,000 - $124,999",OWNER,Irish,N,23,55-59,English,21492 STERLING DR,CA,LAKE FOREST,ORANGE,92630,$0.01 - $0.50,Thu-Sun,ME,0,Partner,NO +181200822,"$175,000 - $199,999",OWNER,Arab,N,23,65-69,English,4321 SUNFIELD AVE,CA,LONG BEACH,LOS ANGELES,90808,$0 - $0.01,SunOnly,MW,0,Partner,YES +160138101,"$100,000 - $124,999",RENTER,Hispanic,N,6,55-59,Spanish,2833 N BRISTOL ST APT 59C,CA,SANTA ANA,ORANGE,92706,$1.00 - $1.99,7Day,FE,0,CircAdm,NO +170448972,"Under $20,000",OWNER,English,N,11,75 years or more,English,2 MAGNOLIA VIA,CA,ANAHEIM,ORANGE,92801,$0.51 - $0.99,7Day,MM,0,DirectMl,NO +180470695,"$125,000 - $149,999",OWNER,Chinese,N,9,50-54,Chinese,21 LILIANO,CA,IRVINE,ORANGE,92614,$0 - $0.01,SunOnly,MW,0,Partner,NO +180653568,"$ 90,000 - $99,999",OWNER,German,Y,5,45-49,English,25242 ORELLANO WAY,CA,LAGUNA HILLS,ORANGE,92653,$10.00 - $10.99,7Day,MM,11,TeleIn,YES +120163017,"$200,000 - $249,999",OWNER,French,N,4,50-54,English,24481 LANTERN HILL DR UNIT C,CA,DANA POINT,ORANGE,92629,$3.00 - $3.99,SunOnly,MM,0,CustCall,YES +110444598,"$100,000 - $124,999",OWNER,Vietnamese,N,12,30-34,Vietnamese,224 N NEWHOPE ST APT 10,CA,SANTA ANA,ORANGE,92703,$4.00 - $4.99,Thu-Sun,MM,0,TeleIn,NO +181536515,"Under $20,000",OWNER,Hispanic,N,14,70-74,Spanish,4001 GEORGINE ST,CA,SANTA ANA,ORANGE,92703,$3.00 - $3.99,THU-SUN,FM,0,Crew1,YES +180499888,"$ 20,000 - $29,999",RENTER,Hispanic,N,3,75 years or more,Spanish,24812 HIDDEN HILLS RD APT H,CA,LAGUNA NIGUEL,ORANGE,92677,$0.51 - $0.99,7Day,YM,0,CustCall,NO +180544408,"$100,000 - $124,999",OWNER,German,Y,1,45-49,English,1815 LOMA ROJA,CA,SANTA ANA,ORANGE,92705,$0.51 - $0.99,7Day,MW,0,Kiosk,NO +140515385,"$ 50,000 - $59,999",RENTER,Scottish (Scotch),N,3,60-64,English,13162 ALLARD AVE APT 2,CA,GARDEN GROVE,ORANGE,92840,$1.00 - $1.99,SunOnly,FE,0,RetenIn,NO +181315386,"$ 20,000 - $29,999",OWNER,Hispanic,Y,23,40-44,Spanish,21920 VIOLETA AVE,CA,HAWAIIAN GARDENS,LOS ANGELES,90716,$0.01 - $0.50,Thu-Sun,MM,0,Crew,NO +180194951,"$ 40,000 - $49,999",RENTER,English,N,2,65-69,English,2509 KINCAID DR APT 208,CA,COSTA MESA,ORANGE,92626,$0 - $0.01,Thu-Sun,YM,0,CircAdm,NO +180596626,"$ 90,000 - $99,999",OWNER,unknown,N,4,25-29,,1734 N RAINWOOD CIR APT C,CA,ANAHEIM,ORANGE,92807,$4.00 - $4.99,7Day,MM,0,Crew,NO +110547575,"$100,000 - $124,999",OWNER,German,N,13,50-54,English,15813 ALGECIRAS DR,CA,LA MIRADA,LOS ANGELES,90638,$3.00 - $3.99,SoooooS,MM,0,TeleIn,NO +180550625,"$175,000 - $199,999",OWNER,unknown,Y,14,35-39,,4 MARTINO,CA,LADERA RANCH,ORANGE,92694,$0 - $0.01,7Day,YW,1,Partner,NO +180635139,"$500,000 Plus",OWNER,Filipino (Philippine),N,31,65-69,English,21120 RIDGE PARK DR,CA,YORBA LINDA,ORANGE,92886,$0.01 - $0.50,Thu-Sun,FW,0,Partner,NO +180466106,"$ 80,000 - $89,999",OWNER,Dutch,N,10,55-59,English,320 S GRAND ST,CA,ORANGE,ORANGE,92866,$0 - $0.01,SunOnly,MW,0,Partner,NO +180171312,"$ 30,000 - $39,999",RENTER,Hispanic,N,1,40-44,Spanish,1210 MAR LES DR,CA,SANTA ANA,ORANGE,92706,$1.00 - $1.99,Thu-Sun,FE,0,Kiosk,NO +180247856,"$ 20,000 - $29,999",OWNER,French,N,8,45-49,English,427 W SYCAMORE ST,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,SunOnly,MW,0,TeleOut,NO +180402211,"Under $20,000",RENTER,Dutch,N,2,35-39,English,34052 DOHENY PARK RD SPC 1,CA,CAPISTRANO BEACH,ORANGE,92624,$2.00 - $2.99,Thu-Sun,MM,0,Crew,NO +150326211,"$100,000 - $124,999",RENTER,English,N,6,45-49,English,1280 BISON AVE STE B9,CA,NEWPORT BEACH,ORANGE,92660,$1.00 - $1.99,7DayOL,,0,Internet,NO +180064851,"$175,000 - $199,999",OWNER,English,N,17,40-44,English,11 GRANT,CA,IRVINE,ORANGE,92620,$1.00 - $1.99,7Day,MW,0,SCinsert,NO +110025494,"$175,000 - $199,999",OWNER,English,N,28,75 years or more,English,20131 IMPERIAL COVE LN,CA,HUNTINGTON BEACH,ORANGE,92646,$3.00 - $3.99,7Day,MW,0,TeleIn,YES +180372517,"$100,000 - $124,999",OWNER,English,Y,35,65-69,English,25012 SHAVER LAKE CIR,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,MW,0,Crew,NO +180716047,"$ 30,000 - $39,999",RENTER,Hispanic,N,13,24 years or less,Spanish,3101 S FAIRVIEW ST SPC 200,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,SunOnly,FM,0,Partner,NO +160217985,"$ 80,000 - $89,999",OWNER,English,N,15,60-64,English,2500 W FULCRUM PL,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,Thu-Sun,MM,0,CustCall,NO +181439026,"$125,000 - $149,999",OWNER,Scottish (Scotch),N,14,55-59,English,149 BROOKSIDE LN,CA,BREA,ORANGE,92821,$0.01 - $0.50,Thu-Sun,YW,0,Internet,YES +120510364,"$125,000 - $149,999",OWNER,Japanese,Y,15,50-54,English,17392 EL CAJON AVE,CA,YORBA LINDA,ORANGE,92886,$1.00 - $1.99,Soooooo,FW,3,Internet,NO +180292061,"$125,000 - $149,999",OWNER,Russian,N,12,75 years or more,Russian,5543 AVENIDA SOSIEGA W UNIT A,CA,LAGUNA WOODS,ORANGE,92637,$2.00 - $2.99,Thu-SunT,MW,0,TeleIn,NO +180629885,"$ 30,000 - $39,999",OWNER,Hispanic,N,4,45-49,Spanish,801 S HESPERIAN ST,CA,SANTA ANA,ORANGE,92703,$0 - $0.01,SunOnly,FE,0,Partner,NO +181291667,"$ 60,000 - $69,999",OWNER,Irish,Y,11,60-64,English,600 W SOUTHGATE AVE,CA,FULLERTON,ORANGE,92832,$4.00 - $4.99,7Day,MW,0,Crew,NO +180755554,"$175,000 - $199,999",RENTER,Hispanic,N,7,45-49,English,14851 MULBERRY DR UNIT 111,CA,WHITTIER,LOS ANGELES,90604,$0 - $0.01,SunOnly,MM,0,Partner,NO +180303526,"Under $20,000",RENTER,Danish,N,3,24 years or less,English,28052 MARGUERITE PKWY APT D,CA,MISSION VIEJO,ORANGE,92692,$1.00 - $1.99,Thu-Sun,YM,0,Crew,NO +150120670,"$125,000 - $149,999",OWNER,Italian,N,24,70-74,English,11932 STEPHANIE LN,CA,GARDEN GROVE,ORANGE,92840,$6.00 - $6.99,7Day,MM,42,System,YES +110246526,"$100,000 - $124,999",OWNER,Lithuanian,Y,23,55-59,English,1191 MEAR LN,CA,TUSTIN,ORANGE,92780,$0.01 - $0.50,SunOnly,YM,0,System,NO +181209323,"$ 60,000 - $69,999",OWNER,Portuguese,Y,13,55-59,Portuguese,341 N DEXTER ST,CA,LA HABRA,ORANGE,90631,$1.00 - $1.99,Soooooo,FM,0,Crew,NO +180464692,"Under $20,000",RENTER,German,N,3,,English,2282 VIA MARIPOSA W UNIT D,CA,LAGUNA WOODS,ORANGE,92637,$0.01 - $0.50,SunOnly,ME,0,Event,NO +180376355,"$ 20,000 - $29,999",RENTER,Hispanic,N,6,40-44,English,201 S MAGNOLIA AVE APT 35,CA,ANAHEIM,ORANGE,92804,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +180499507,"Under $20,000",OWNER,unknown,N,24,65-69,,1220 NORTHWOOD RD APT 230D,CA,SEAL BEACH,ORANGE,90740,$6.00 - $6.99,Thu-Sun,MM,0,Kiosk,NO +181396779,"$ 90,000 - $99,999",OWNER,Italian,N,6,55-59,Italian,9382 DAYTONA CIR,CA,HUNTINGTON BEACH,ORANGE,92646,$0 - $0.01,SunOnly,MW,0,Partner,NO +181394186,"$ 90,000 - $99,999",RENTER,Hispanic,N,1,30-34,English,22751 EL PRADO APT 2111,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$0.01 - $0.50,7Day,FE,0,Internet,YES +181270946,"$ 50,000 - $59,999",RENTER,Arab,N,2,60-64,Arabic,26891 LA ALAMEDA,CA,MISSION VIEJO,ORANGE,92691,$0 - $0.01,7Day,,0,Partner,YES +181446204,"$ 20,000 - $29,999",OWNER,Hispanic,N,1,30-34,Spanish,216 E ADELE ST,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,Thu-Sun,YM,0,Crew,YES +180495924,"$ 90,000 - $99,999",RENTER,Hispanic,N,1,70-74,English,2827 N AUBURN ST APT N,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,YW,0,Event,NO +181179197,"$175,000 - $199,999",OWNER,Hawaiian,N,11,60-64,English,5 CORAL RDG,CA,LAGUNA NIGUEL,ORANGE,92677,$0.01 - $0.50,7Day,FM,0,AdvAdm,NO +110394345,"$ 70,000 - $79,999",RENTER,Irish,N,8,75 years or more,English,860 MORNINGSIDE DR APT C320,CA,FULLERTON,ORANGE,92835,$2.00 - $2.99,7Day,MM,0,CustCall,NO +180480560,"$ 30,000 - $39,999",OWNER,Hispanic,N,30,75 years or more,English,11551 SEACREST CIR,CA,GARDEN GROVE,ORANGE,92840,$0 - $0.01,SunOnly,MW,0,Partner,NO +181405896,"$200,000 - $249,999",OWNER,Hispanic,N,11,55-59,Spanish,19695 CLEVELAND BAY LN,CA,YORBA LINDA,ORANGE,92886,$0.01 - $0.50,SunOnly,FW,0,Partner,YES +181369055,"$150,000 - $174,999",OWNER,English,N,16,65-69,English,5570 VIA DE CAMPO,CA,YORBA LINDA,ORANGE,92887,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180354390,"$ 40,000 - $49,999",RENTER,Hispanic,N,7,25-29,Spanish,624 S SULLIVAN ST APT 4C,CA,SANTA ANA,ORANGE,92704,$2.00 - $2.99,SunOnly,FE,0,TeleIn,NO +180208681,"$ 90,000 - $99,999",OWNER,English,N,8,35-39,English,34022 AMBER LANTERN ST,CA,DANA POINT,ORANGE,92629,$1.00 - $1.99,SunOnly,FM,0,CustCall,NO +120288681,"$150,000 - $174,999",OWNER,Swedish,Y,23,55-59,English,18802 DEVILLE DR,CA,YORBA LINDA,ORANGE,92886,$6.00 - $6.99,Thu-Sun,MW,0,Kiosk,NO +140073041,"$150,000 - $174,999",OWNER,English,Y,7,35-39,English,2701 N VISTA BLUFF RD,CA,ORANGE,ORANGE,92867,$2.00 - $2.99,SunOnly,FW,0,OutMedia,NO +120471080,"$100,000 - $124,999",OWNER,Scottish (Scotch),N,16,45-49,English,19003 CANYON SMT,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,SunOnly,YW,0,CustCall,NO +140200980,"$ 40,000 - $49,999",RENTER,Irish,N,2,75 years or more,English,33 CREEK RD STE 324,CA,IRVINE,ORANGE,92604,$2.00 - $2.99,Thu-SunT,,0,TeleIn,NO +181350571,"$ 20,000 - $29,999",OWNER,Vietnamese,N,17,60-64,English,10832 JEAN ST,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,Thu-Sun,FM,0,Partner,NO +181548709,"$100,000 - $124,999",OWNER,German,N,13,75 years or more,English,754 AVENIDA MAJORCA UNIT C,CA,LAGUNA WOODS,ORANGE,92637,$3.00 - $3.99,Thu-Sun,MM,0,CustCall,YES +150302446,"$100,000 - $124,999",OWNER,English,N,1,24 years or less,English,21870 CARDIFF DR,CA,YORBA LINDA,ORANGE,92887,$0 - $0.01,SunOnly,MW,0,Partner,NO +110166425,"$100,000 - $124,999",OWNER,English,N,3,60-64,English,944 N CAPISTRANO PL,CA,ORANGE,ORANGE,92869,$6.00 - $6.99,7DayT,FM,0,CustCall,NO +160443119,"$175,000 - $199,999",OWNER,Scottish (Scotch),N,18,55-59,English,21761 JOHNSTONE DR,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,MM,0,System,NO +130330213,"$300,000 - $399,999",OWNER,Chinese,N,6,50-54,Chinese,33 LOOKING GLASS,CA,IRVINE,ORANGE,92620,$1.00 - $1.99,7Day,YM,0,TeleIn,NO +150308403,"$ 40,000 - $49,999",RENTER,Irish,N,2,55-59,English,233 PALMER ST APT B,CA,COSTA MESA,ORANGE,92627,$4.00 - $4.99,7Day,YM,0,TeleIn,NO +110544817,"$ 90,000 - $99,999",OWNER,Hispanic,N,4,45-49,Spanish,6540 SAN HOMERO WAY,CA,BUENA PARK,ORANGE,90620,$2.00 - $2.99,Thu-Sun,FM,0,OutMedia,NO +180172661,"$ 40,000 - $49,999",OWNER,Hispanic,N,10,24 years or less,Spanish,2201 EDNA DR,CA,SANTA ANA,ORANGE,92706,$0.01 - $0.50,SunOnly,MW,0,TeleOut,NO +180680670,"$ 70,000 - $79,999",OWNER,Jewish,N,2,35-39,English,4002 FIELDING CT,CA,CYPRESS,ORANGE,90630,$0 - $0.01,SunOnly,FM,0,Partner,NO +180378983,"$ 20,000 - $29,999",RENTER,Dutch,N,1,25-29,English,7 CERRITO,CA,IRVINE,ORANGE,92612,$0 - $0.01,SunOnly,YW,0,Partner,NO +130343814,"$200,000 - $249,999",OWNER,Scottish (Scotch),N,28,60-64,English,700 CALLE CUMBRE,CA,SAN CLEMENTE,ORANGE,92673,$4.00 - $4.99,7Day,MW,0,TeleIn,YES +180071130,"$ 40,000 - $49,999",OWNER,Hispanic,N,22,65-69,Spanish,1715 W 2ND ST,CA,SANTA ANA,ORANGE,92703,$1.00 - $1.99,Soooooo,FE,0,TeleOut,NO +110463883,"$ 50,000 - $59,999",OWNER,English,N,42,70-74,English,830 GOVERNOR ST,CA,COSTA MESA,ORANGE,92627,$3.00 - $3.99,SooooFS,FM,0,CustCall,NO +181356224,"Under $20,000",RENTER,Hispanic,N,6,60-64,Spanish,1251 N PLACENTIA AVE APT 109,CA,ANAHEIM,ORANGE,92806,$0 - $0.01,SunOnly,FE,0,Partner,NO +180286781,"Under $20,000",OWNER,Chinese,N,36,75 years or more,English,709 S VALLEY ST,CA,ANAHEIM,ORANGE,92804,$0.51 - $0.99,7Day,MM,0,TeleIn,NO +180423204,"$ 40,000 - $49,999",RENTER,Japanese,N,2,70-74,Japanese,85 SAN RAPHAEL,CA,DANA POINT,ORANGE,92629,$0 - $0.01,SunOnly,YW,0,Partner,NO +181339386,"$ 40,000 - $49,999",RENTER,Filipino (Philippine),N,4,60-64,Tagalog,13408 HERITAGE WAY APT 212,CA,TUSTIN,ORANGE,92782,$0 - $0.01,SunOnly,YM,0,Partner,NO +181510703,"$ 30,000 - $39,999",OWNER,Hispanic,N,8,65-69,Spanish,208 LEMON ST,CA,LA HABRA,ORANGE,90631,$3.00 - $3.99,7DAY,FE,0,Crew1,NO +181370603,"Under $20,000",RENTER,Hispanic,N,10,40-44,Spanish,14300 CLINTON ST SPC 189,CA,GARDEN GROVE,ORANGE,92843,$0.01 - $0.50,Thu-Sun,FE,0,Partner,NO +180486444,"$ 30,000 - $39,999",RENTER,Hispanic,Y,4,30-34,Spanish,2028 W MCFADDEN AVE,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,Thu-Sun,FE,0,TeleIn,NO +110602462,"$ 70,000 - $79,999",RENTER,English,N,5,70-74,English,50 MAIN ST APT 110,CA,LADERA RANCH,ORANGE,92694,$4.00 - $4.99,7Day,MM,0,CustCall,NO +130115124,"$ 40,000 - $49,999",OWNER,Hispanic,N,3,30-34,English,11036 KIBBINS CIR,CA,STANTON,ORANGE,90680,$0.51 - $0.99,7Day,FM,0,CustCall,NO +140521069,"$100,000 - $124,999",OWNER,Vietnamese,Y,11,35-39,Vietnamese,2722 N COTTONWOOD ST,CA,ORANGE,ORANGE,92865,$4.00 - $4.99,7Day,YW,0,TeleIn,NO +130110742,"$ 30,000 - $39,999",OWNER,Japanese,N,6,75 years or more,English,51 PASEO DE TONER,CA,BREA,ORANGE,92821,$2.00 - $2.99,7Day,MM,3,CustCall,YES +180335954,"$200,000 - $249,999",OWNER,English,Y,3,75 years or more,English,5515 PASEO JOAQUIN,CA,YORBA LINDA,ORANGE,92886,$2.00 - $2.99,7Day,FW,0,SCinsert,NO +181368985,"$ 90,000 - $99,999",OWNER,Scottish (Scotch),N,17,50-54,English,5061 CITATION AVE,CA,CYPRESS,ORANGE,90630,$0 - $0.01,SunOnly,FM,0,Partner,NO +180573953,"$ 40,000 - $49,999",RENTER,Hispanic,N,1,25-29,Spanish,555 PAULARINO AVE APT H204,CA,COSTA MESA,ORANGE,92626,$3.00 - $3.99,7Day,YM,0,Crew,NO +180406694,"$ 30,000 - $39,999",OWNER,Hispanic,N,23,50-54,Spanish,2521 S SPRUCE ST,CA,SANTA ANA,ORANGE,92704,$2.00 - $2.99,Thu-SunT,MW,0,TeleIn,NO +140293520,"Under $20,000",RENTER,Dutch,N,6,50-54,English,6742 WESTERN AVE APT 14,CA,BUENA PARK,ORANGE,90621,$4.00 - $4.99,7DayT,ME,0,CustCall,NO +180490413,"$125,000 - $149,999",OWNER,English,N,37,75 years or more,English,23811 NEW DELHI ST,CA,MISSION VIEJO,ORANGE,92691,$0 - $0.01,SunOnly,MW,0,Partner,NO +180362756,"$150,000 - $174,999",RENTER,Scottish (Scotch),Y,2,35-39,English,7918 E BAUER RD,CA,ANAHEIM,ORANGE,92808,$0 - $0.01,SunOnly,FW,0,Partner,NO +180708717,"$ 30,000 - $39,999",OWNER,Hispanic,N,9,35-39,English,629 W WEST AVE,CA,FULLERTON,ORANGE,92832,$1.00 - $1.99,SunOnly,MM,0,Partner,NO +110095662,"$300,000 - $399,999",OWNER,Dutch,N,31,65-69,English,2326 FORDHAM DR,CA,COSTA MESA,ORANGE,92626,$0.01 - $0.50,7Day,YM,6,TeleIn,YES +180631590,"$ 20,000 - $29,999",OWNER,Hispanic,N,8,75 years or more,English,1418 SOUTHRIDGE DR,CA,BREA,ORANGE,92821,$0 - $0.01,SunOnly,FW,0,Partner,NO +180065262,"$ 30,000 - $39,999",OWNER,Scottish (Scotch),N,38,65-69,English,1346 W ORANGETHORPE AVE,CA,FULLERTON,ORANGE,92833,$1.00 - $1.99,7Day,MM,0,Kiosk,NO +180690285,"Under $20,000",RENTER,Pakistani,N,1,30-34,English,2027 E APPLETON ST UNIT 3,CA,LONG BEACH,LOS ANGELES,90803,$4.00 - $4.99,7Day,MM,0,Crew,NO +140536210,"$ 70,000 - $79,999",OWNER,unknown,N,15,60-64,,11323 BLUEFIELD AVE,CA,WHITTIER,LOS ANGELES,90604,$8.00 - $8.99,Thu-Sun,MM,0,TeleIn,YES +140298070,"$ 70,000 - $79,999",OWNER,Hispanic,N,10,45-49,Spanish,2302 RAMONA DR,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,Fri-Sun,FM,0,Crew,NO +181446460,"$ 30,000 - $39,999",RENTER,Hispanic,N,6,50-54,Spanish,1264 E MCFADDEN AVE UNIT C,CA,SANTA ANA,ORANGE,92705,$0.01 - $0.50,SunOnly,MM,0,Partner,YES +140479783,"$100,000 - $124,999",RENTER,unknown,N,1,40-44,,13460 MOORE ST,CA,CERRITOS,LOS ANGELES,90703,$4.00 - $4.99,7Day,MW,0,TeleOut,NO +180191151,"$ 20,000 - $29,999",RENTER,Hispanic,N,12,35-39,English,420 S BEACH BLVD APT 8,CA,LA HABRA,ORANGE,90631,$2.00 - $2.99,7Day,YM,0,Crew,NO +180318419,"$ 50,000 - $59,999",OWNER,Hispanic,Y,15,50-54,Spanish,2638 W HOOD AVE,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,SunOnly,FM,0,TeleOut,NO +150121069,"$150,000 - $174,999",OWNER,French,N,18,50-54,English,18331 CRANBROOK DR,CA,SANTA ANA,ORANGE,92705,$2.00 - $2.99,7Day,FW,0,VRU,NO +181482884,"$175,000 - $199,999",OWNER,German,N,9,55-59,English,2937 CRAPE MYRTLE CIR,CA,CHINO HILLS,SAN BERNARDINO,91709,$0.01 - $0.50,SunOnly,MM,0,Partner,YES +130193797,"$300,000 - $399,999",OWNER,Italian,N,28,60-64,English,20690 VIA AUGUSTO,CA,YORBA LINDA,ORANGE,92887,$0 - $0.01,Thu-Sun,MW,0,CircAdm,NO +180722961,"$100,000 - $124,999",OWNER,English,N,32,70-74,English,2605 VUELTA GRANDE AVE,CA,LONG BEACH,LOS ANGELES,90815,,7DayOL,MW,0,CircAdm,NO +140114831,"$ 90,000 - $99,999",OWNER,English,N,36,60-64,English,1700 W SOUTHGATE AVE,CA,FULLERTON,ORANGE,92833,$2.00 - $2.99,7Day,FE,1,TeleIn,YES +180550700,"$300,000 - $399,999",OWNER,Chinese,Y,10,45-49,English,7 JOHN ST,CA,LADERA RANCH,ORANGE,92694,$0 - $0.01,7Day,FW,0,Partner,NO +180155787,"Under $20,000",RENTER,Jewish,N,1,60-64,English,707 W SANTA ANA ST APT 148,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,Thu-Sun,ME,0,CircAdm,NO +180462682,"$200,000 - $249,999",OWNER,Scottish (Scotch),N,1,45-49,English,20090 STATE ST,CA,CORONA,RIVERSIDE,92881,$0 - $0.01,SunOnly,YW,0,Partner,NO +160345945,"$125,000 - $149,999",OWNER,Vietnamese,N,21,60-64,English,5715 E STILLWATER AVE UNIT 15,CA,ORANGE,ORANGE,92869,$1.00 - $1.99,7Day,MM,189,CustCall,YES +170385713,"$200,000 - $249,999",OWNER,Hispanic,N,3,35-39,Spanish,21071 VIA CORONADO,CA,YORBA LINDA,ORANGE,92887,$1.00 - $1.99,7Day,FW,2,SCinsert,NO +181319595,"$100,000 - $124,999",OWNER,Welsh,N,8,40-44,English,207 E BALBOA BLVD,CA,NEWPORT BEACH,ORANGE,92661,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +181500212,"$100,000 - $124,999",OWNER,Italian,N,23,55-59,English,2396 N ROBINHOOD PL,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,FW,0,PARTNER,YES +181256991,"Under $20,000",RENTER,Hispanic,N,7,45-49,Spanish,1420 N BROADWAY APT 3,CA,SANTA ANA,ORANGE,92706,$0 - $0.01,SunOnly,FE,0,Partner,NO +180321912,"$ 20,000 - $29,999",OWNER,Hispanic,N,13,50-54,Spanish,7561 PACIFIC AVE,CA,BUENA PARK,ORANGE,90621,$2.00 - $2.99,Thu-Sun,MM,0,TeleOut,NO +130302325,"$ 40,000 - $49,999",OWNER,English,N,20,70-74,English,835 N KINTYRE DR,CA,ORANGE,ORANGE,92869,$4.00 - $4.99,7Day,MW,0,Kiosk,NO +170336321,"$ 20,000 - $29,999",OWNER,English,N,1,35-39,English,2222 E ALDEN AVE,CA,ANAHEIM,ORANGE,92806,$5.00 - $5.99,7Day,YM,0,CircAdm,NO +180198516,"$ 30,000 - $39,999",OWNER,Hispanic,N,4,75 years or more,English,250 HOLGATE ST,CA,LA HABRA,ORANGE,90631,$2.00 - $2.99,SunOnly,FM,0,Internet,NO +181202772,"$ 90,000 - $99,999",OWNER,Czech,Y,17,45-49,English,5890 EQUADOR WAY,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,MW,0,Partner,YES +120103433,"$125,000 - $149,999",OWNER,English,Y,20,60-64,English,2600 CALLE ONICE,CA,SAN CLEMENTE,ORANGE,92673,$0.01 - $0.50,7Day,FW,66,Internet,YES +181303327,"$ 80,000 - $89,999",OWNER,Chinese,N,6,55-59,English,8002 CORNFLOWER CIR,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +160074212,"$ 90,000 - $99,999",OWNER,Dutch,N,38,75 years or more,English,5232 VERNER DR,CA,LA PALMA,ORANGE,90623,$10.00 - $10.99,7Day,MW,0,CustCall,YES +180457002,"$ 30,000 - $39,999",RENTER,Filipino (Philippine),N,1,30-34,English,14515 HAYWARD ST,CA,WHITTIER,LOS ANGELES,90603,$0 - $0.01,SunOnly,MW,0,Partner,NO +140073762,"$ 50,000 - $59,999",OWNER,English,Y,15,75 years or more,English,2616 FOREST LK,CA,SANTA ANA,ORANGE,92705,$1.00 - $1.99,SunOnly,MM,0,System,NO +180657012,"$ 50,000 - $59,999",OWNER,Hispanic,N,11,30-34,English,977 N HART ST,CA,ORANGE,ORANGE,92867,$0 - $0.01,SunOnly,FM,0,Partner,NO +180634540,"$100,000 - $124,999",RENTER,Hispanic,N,3,45-49,Spanish,54 COPPER LEAF,CA,IRVINE,ORANGE,92602,$0 - $0.01,SunOnly,YM,0,Partner,YES +180234172,"Under $20,000",RENTER,Austrian,N,7,65-69,English,8211 SAN ANGELO DR APT J11,CA,HUNTINGTON BEACH,ORANGE,92647,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +180267534,"$150,000 - $174,999",OWNER,Jewish,N,6,65-69,Hebrew,45 MORNING VW,CA,IRVINE,ORANGE,92603,$1.00 - $1.99,Thu-Sun,MW,0,Kiosk,NO +180704221,"Under $20,000",OWNER,Hispanic,Y,12,35-39,Spanish,12449 222ND ST,CA,HAWAIIAN GARDENS,LOS ANGELES,90716,$0 - $0.01,SunOnly,FE,0,Partner,NO +180710738,"$100,000 - $124,999",OWNER,Chinese,N,4,60-64,Chinese,2 ROCKWOOD,CA,IRVINE,ORANGE,92614,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +180534686,"$125,000 - $149,999",OWNER,English,N,18,60-64,English,27392 VIA GARCIA,CA,MISSION VIEJO,ORANGE,92692,$10.00 - $10.99,7Day,YW,0,Internet,YES +180585373,"$100,000 - $124,999",OWNER,English,N,7,40-44,English,401 SIGNAL RD,CA,NEWPORT BEACH,ORANGE,92663,$7.00 - $7.99,7Day,MW,0,Crew,NO +180401613,"$ 40,000 - $49,999",OWNER,Hispanic,N,1,30-34,Spanish,546 S HAVEN DR,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,SunOnly,MW,0,Partner,NO +150273333,"$175,000 - $199,999",OWNER,Austrian,N,20,55-59,English,10565 CEDARHILL CIR,CA,VILLA PARK,ORANGE,92861,$4.00 - $4.99,7Day,MM,0,CustCall,YES +180264579,"Under $20,000",RENTER,Hispanic,N,7,45-49,English,7425 9TH ST APT 223,CA,BUENA PARK,ORANGE,90621,$1.00 - $1.99,Thu-Sun,FE,0,Crew,NO +120166363,"$300,000 - $399,999",OWNER,"Khmer (Kampuchean, Cambodian)",N,1,40-44,English,6 DARK HORSE,CA,TRABUCO CANYON,ORANGE,92679,$1.00 - $1.99,SoooooS,MW,0,TeleIn,NO +180719481,"$ 20,000 - $29,999",OWNER,English,N,18,75 years or more,English,264 MIRA MAR AVE,CA,LONG BEACH,LOS ANGELES,90803,,7DayOL,MW,0,CircAdm,NO +180333774,"$125,000 - $149,999",OWNER,Dutch,Y,39,65-69,English,19603 NICHOLAS AVE,CA,CERRITOS,LOS ANGELES,90703,$0.01 - $0.50,SunOnly,MW,0,Internet,NO +180335194,"$100,000 - $124,999",OWNER,English,N,37,75 years or more,English,1727 WISTERIA DR,CA,BREA,ORANGE,92821,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +180334675,"Under $20,000",RENTER,Hispanic,Y,3,35-39,Spanish,3444 W OLINDA LN APT 9,CA,ANAHEIM,ORANGE,92804,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +150197971,"$100,000 - $124,999",OWNER,Filipino (Philippine),N,1,65-69,English,26911 LA SIERRA DR,CA,MISSION VIEJO,ORANGE,92691,$4.00 - $4.99,7Day,FM,0,CustCall,NO +180471099,"$100,000 - $124,999",OWNER,Vietnamese,N,7,45-49,English,12 S SANTA TERESITA,CA,IRVINE,ORANGE,92606,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180421040,"$ 20,000 - $29,999",OWNER,Hispanic,N,20,30-34,English,26432 PEPPERWOOD LN,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$0 - $0.01,SunOnly,FE,0,Partner,NO +181349322,"$125,000 - $149,999",OWNER,Hispanic,N,9,45-49,Spanish,1722 MITCHELL AVE APT 159,CA,TUSTIN,ORANGE,92780,$4.00 - $4.99,7Day,FM,0,Crew,NO +180375399,"$300,000 - $399,999",OWNER,unknown,Y,10,50-54,,8901 BAYWOOD DR,CA,HUNTINGTON BEACH,ORANGE,92646,$0 - $0.01,SunOnly,MW,0,Partner,NO +170055985,"$ 90,000 - $99,999",OWNER,English,N,41,70-74,English,1225 E HAVEN DR,CA,ANAHEIM,ORANGE,92805,$3.00 - $3.99,7Day,MM,70,CustCall,YES +180384978,"$150,000 - $174,999",OWNER,Vietnamese,Y,20,55-59,English,9569 COLUMBUS CT,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,7Day,MW,0,Partner,YES +140289012,"$100,000 - $124,999",OWNER,Welsh,N,7,75 years or more,English,31911 AVENIDA EVITA,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$0.51 - $0.99,SunOnly,MW,0,TeleIn,NO +180387271,"$ 30,000 - $39,999",OWNER,English,N,8,30-34,English,7898 AZALEA DR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,FM,0,Partner,NO +170315230,"$300,000 - $399,999",OWNER,German,N,26,60-64,English,20842 SPINDRIFT LN,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,SatSun,MW,0,CustCall,NO +170294055,"$175,000 - $199,999",OWNER,Scottish (Scotch),Y,15,45-49,English,1341 MANZANITA DR,CA,FULLERTON,ORANGE,92833,$0.51 - $0.99,Soooooo,FW,0,CircAdm,NO +140562635,"$ 20,000 - $29,999",OWNER,English,N,20,70-74,English,6168 WESTBRIDGE AVE,CA,WESTMINSTER,ORANGE,92683,$10.00 - $10.99,7Day,FM,1,VRU,YES +120230294,"Under $20,000",RENTER,Hispanic,N,2,30-34,English,1026 N PATT ST,CA,ANAHEIM,ORANGE,92801,$4.00 - $4.99,7Day,ME,0,DirectMl,NO +120597304,"$ 60,000 - $69,999",OWNER,Vietnamese,N,6,40-44,English,13301 SHASTA CIR,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,7Day,MM,0,CustCall,NO +110574938,"$ 40,000 - $49,999",RENTER,unknown,N,3,25-29,,3137 W BALL RD APT 115,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,SunOnly,ME,0,TeleIn,NO +180720298,"$ 20,000 - $29,999",RENTER,Hispanic,N,1,25-29,Spanish,6405 ORANGE AVE,CA,LONG BEACH,LOS ANGELES,90805,,7DayOL,FM,0,CircAdm,NO +180176780,"$ 30,000 - $39,999",OWNER,Hispanic,N,20,50-54,Spanish,203 NICE DR,CA,SANTA ANA,ORANGE,92703,$1.00 - $1.99,SunOnly,MM,0,CustCall,NO +120494698,"$100,000 - $124,999",OWNER,French,N,1,25-29,English,17543 CERRO VISTA DR,CA,YORBA LINDA,ORANGE,92886,$9.00 - $9.99,7Day,MM,0,CustCall,NO +170285893,"$ 70,000 - $79,999",RENTER,Hispanic,N,2,35-39,Spanish,15861 LAS FLORES ST,CA,WESTMINSTER,ORANGE,92683,$9.00 - $9.99,7Day,MM,0,CustCall,NO +181292710,"$ 80,000 - $89,999",OWNER,Japanese,N,23,70-74,English,9831 SHOREBREEZE DR,CA,HUNTINGTON BEACH,ORANGE,92646,$0.01 - $0.50,SunOnly,YM,0,Internet,NO +181428537,"$175,000 - $199,999",OWNER,Austrian,N,13,50-54,English,14 VIA PAQUETE,CA,SAN CLEMENTE,ORANGE,92673,$2.00 - $2.99,7Day,YW,0,Email,NO +110540008,"$125,000 - $149,999",OWNER,Scottish (Scotch),Y,1,50-54,English,3106 SUNNYWOOD DR,CA,FULLERTON,ORANGE,92835,,7Day,YW,0,CustCall,NO +180555017,"$ 40,000 - $49,999",RENTER,Hispanic,N,13,45-49,Spanish,701 W NORTHGATE LN APT 8,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,7Day,YM,0,Partner,NO +180369915,"$175,000 - $199,999",OWNER,French,N,11,50-54,English,854 WENDT TER,CA,LAGUNA BEACH,ORANGE,92651,$0.01 - $0.50,SunOnly,YW,0,Partner,NO +180707627,"$175,000 - $199,999",OWNER,Vietnamese,N,20,55-59,Vietnamese,11289 PENNELL CIR,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,FM,0,Partner,NO +180334955,"$ 40,000 - $49,999",RENTER,Hispanic,N,6,30-34,Spanish,1920 E FRANCIS AVE,CA,LA HABRA,ORANGE,90631,$2.00 - $2.99,Thu-Sun,MM,0,Crew,NO +180743308,"$ 40,000 - $49,999",RENTER,Chinese,N,2,75 years or more,Chinese,183 HELIX,CA,IRVINE,ORANGE,92618,$0.01 - $0.50,7Day,MW,0,Partner,NO +180436551,"$ 20,000 - $29,999",OWNER,Hispanic,N,8,35-39,Spanish,320 W HAMPSHIRE AVE,CA,ANAHEIM,ORANGE,92805,$3.00 - $3.99,Thu-Sun,FE,0,Partner,NO +181334288,"Under $20,000",RENTER,Italian,N,4,60-64,English,977 VALENCIA ST APT 2,CA,COSTA MESA,ORANGE,92626,$0.01 - $0.50,Thu-Sun,FE,0,Crew,NO +130299658,"$200,000 - $249,999",OWNER,Slovakian (Slovak),N,14,60-64,English,2321 S COTA AVE,CA,CORONA,RIVERSIDE,92882,$5.00 - $5.99,7Day,FM,0,CustCall,YES +110280728,"$200,000 - $249,999",OWNER,English,N,23,45-49,English,21922 TOBARRA,CA,MISSION VIEJO,ORANGE,92692,$1.00 - $1.99,Thu-Sun,MW,6,CustCall,YES +181194032,"$125,000 - $149,999",OWNER,Jewish,N,30,65-69,English,165 S BETH CIR,CA,ANAHEIM,ORANGE,92806,$0 - $0.01,SunOnly,FW,0,Partner,YES +110513877,"$ 80,000 - $89,999",OWNER,English,N,38,75 years or more,English,10042 SIGNET CIR,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,SatSun,MM,0,CustCall,NO +181497176,"$ 50,000 - $59,999",OWNER,Hispanic,N,7,65-69,English,1021 E MEATS AVE,CA,ORANGE,ORANGE,92865,$0.01 - $0.50,THU-SUN,FM,0,Crew1,NO +180485761,"$175,000 - $199,999",OWNER,Irish,Y,20,55-59,English,9122 BERMUDA DR,CA,HUNTINGTON BEACH,ORANGE,92646,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180551416,"$150,000 - $174,999",OWNER,English,Y,3,50-54,English,26691 BARONET,CA,MISSION VIEJO,ORANGE,92692,$0 - $0.01,SunOnly,MW,0,Partner,NO +181371294,"$100,000 - $124,999",OWNER,German,N,30,75 years or more,English,526 NORMANDY AVE,CA,PLACENTIA,ORANGE,92870,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +120400338,"$150,000 - $174,999",OWNER,English,N,23,65-69,English,6515 SYCAMORE GLEN DR,CA,ORANGE,ORANGE,92869,$9.00 - $9.99,7Day,MM,0,VRU,NO +140138050,"$ 90,000 - $99,999",OWNER,Portuguese,N,12,40-44,English,31138 VIA SAN VICENTE,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +180308241,"$100,000 - $124,999",OWNER,Hispanic,N,20,50-54,English,610 S PEREGRINE ST,CA,ANAHEIM,ORANGE,92806,$2.00 - $2.99,Thu-Sun,MW,0,System,NO +140150475,"$ 60,000 - $69,999",OWNER,English,Y,28,50-54,English,22362 MODINA,CA,LAGUNA HILLS,ORANGE,92653,$1.00 - $1.99,7Day,FM,0,CustCall,NO +181313378,"$ 90,000 - $99,999",OWNER,Hispanic,N,46,75 years or more,English,17289 PEPPER TREE ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +160162923,"$300,000 - $399,999",OWNER,Hungarian,Y,30,60-64,English,2406 E MILLBANK DR,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,FW,0,Internet,NO +180486287,"$ 40,000 - $49,999",OWNER,Hispanic,Y,6,70-74,Spanish,10141 DEWEY DR,CA,GARDEN GROVE,ORANGE,92840,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +150592687,"$100,000 - $124,999",OWNER,unknown,N,5,25-29,,901 GOLDEN SPRINGS DR UNIT E10,CA,DIAMOND BAR,LOS ANGELES,91765,$0.51 - $0.99,7Day,YW,0,TeleIn,NO +180393535,"$100,000 - $124,999",OWNER,Irish,N,6,60-64,English,39 MANN ST,CA,IRVINE,ORANGE,92612,$1.00 - $1.99,SunOnlyT,MM,0,TeleIn,NO +110303800,"$ 70,000 - $79,999",OWNER,Arab,N,1,30-34,Arabic,23212 CAMINITO ANDRETA,CA,LAGUNA HILLS,ORANGE,92653,$0.51 - $0.99,7Day,YW,0,TeleIn,NO +180576784,"$ 50,000 - $59,999",RENTER,Korean,N,5,50-54,English,6401 WARNER AVE APT 548,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +170296323,"$400,000 - $499,999",OWNER,Russian,N,23,65-69,English,9 CHANDON,CA,NEWPORT COAST,ORANGE,92657,$10.00 - $10.99,7Day,MM,0,CustCall,YES +180597234,"$ 40,000 - $49,999",OWNER,Vietnamese,N,16,65-69,Vietnamese,6117 CLARK WAY,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +140179189,"$ 80,000 - $89,999",RENTER,Irish,N,8,55-59,English,14382 RED HILL AVE APT 79,CA,TUSTIN,ORANGE,92780,$4.00 - $4.99,7Day,YM,4,CustCall,YES +110445732,"$500,000 Plus",OWNER,Irish,N,20,70-74,English,90 LINDA ISLE,CA,NEWPORT BEACH,ORANGE,92660,$0.01 - $0.50,7Day,MW,0,CircAdm,NO +170569113,"$200,000 - $249,999",OWNER,English,N,10,50-54,English,3393 TEMPE DR,CA,HUNTINGTON BEACH,ORANGE,92649,$2.00 - $2.99,SatSun,MW,0,DirectMl,NO +110185045,"$ 90,000 - $99,999",OWNER,Vietnamese,Y,13,50-54,Vietnamese,10691 BALLAST AVE,CA,GARDEN GROVE,ORANGE,92843,$1.00 - $1.99,7Day,MW,0,VRU,NO +130119345,"$ 60,000 - $69,999",OWNER,Chinese,N,23,75 years or more,English,2248 CAMINO REY,CA,FULLERTON,ORANGE,92833,$1.00 - $1.99,SunOnly,MM,0,TeleIn,NO +180545898,"$ 40,000 - $49,999",RENTER,Hispanic,N,1,50-54,English,13408 HERITAGE WAY APT 112,CA,TUSTIN,ORANGE,92782,$0.51 - $0.99,Thu-Sun,YM,0,Kiosk,NO +180158990,"$125,000 - $149,999",OWNER,Korean,N,7,40-44,Korean,13756 DARVALLE ST,CA,CERRITOS,LOS ANGELES,90703,$4.00 - $4.99,7Day,MW,0,DirectMl,NO +180681591,"$175,000 - $199,999",OWNER,Hispanic,N,12,55-59,English,6761 LAFAYETTE DR,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +140120221,"$100,000 - $124,999",OWNER,English,N,40,70-74,English,5762 RICH HILL WAY,CA,YORBA LINDA,ORANGE,92886,$4.00 - $4.99,7Day,MM,0,CustCall,NO +110003654,"$100,000 - $124,999",OWNER,English,N,38,75 years or more,English,6941 SPICKARD DR,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,SunOnly,MM,0,TeleIn,NO +180706754,"$ 90,000 - $99,999",OWNER,English,Y,25,70-74,English,6541 LAURELTON AVE,CA,GARDEN GROVE,ORANGE,92845,$0 - $0.01,SunOnly,MW,0,Partner,NO +180682739,"$ 20,000 - $29,999",RENTER,unknown,N,2,55-59,,358 S BEDFORD RD,CA,ORANGE,ORANGE,92868,$0 - $0.01,SunOnly,YM,0,Partner,NO +110391125,"$300,000 - $399,999",OWNER,German,N,21,70-74,English,325 CAMEO SHORES RD,CA,CORONA DEL MAR,ORANGE,92625,$10.00 - $10.99,7Day,YW,0,CustCall,YES +180717989,"$175,000 - $199,999",OWNER,Jewish,Y,29,55-59,English,5002 MEADOW WOOD AVE,CA,LAKEWOOD,LOS ANGELES,90712,,7DayOL,MM,0,CircAdm,NO +180548967,"$ 20,000 - $29,999",OWNER,Hispanic,N,6,25-29,Spanish,521 JUNIPER AVE,CA,SANTA ANA,ORANGE,92707,$0.51 - $0.99,Soooooo,MW,0,TeleIn,NO +160074247,"$100,000 - $124,999",OWNER,Vietnamese,N,14,55-59,Vietnamese,6698 E PRESCOTT CT,CA,ORANGE,ORANGE,92867,$6.00 - $6.99,7Day,FW,0,DirectMl,YES +130570103,"$ 40,000 - $49,999",OWNER,English,N,1,35-39,English,16923 BLUEWATER LN,CA,HUNTINGTON BEACH,ORANGE,92649,$2.00 - $2.99,7Day,FM,0,TeleIn,NO +110436051,"$ 90,000 - $99,999",OWNER,English,N,15,75 years or more,English,310 LAKE ST UNIT 202,CA,HUNTINGTON BEACH,ORANGE,92648,$4.00 - $4.99,7Day,FM,0,Kiosk,NO +150552017,"$300,000 - $399,999",OWNER,English,Y,13,45-49,English,3646 STARLING WAY,CA,BREA,ORANGE,92823,$0.01 - $0.50,SunOnly,FW,0,Internet,NO +180330786,"$125,000 - $149,999",OWNER,Austrian,Y,23,50-54,English,1612 SALMON RIV,CA,PLACENTIA,ORANGE,92870,$3.00 - $3.99,7Day,FW,0,System,NO +180394293,"$400,000 - $499,999",OWNER,Chinese,N,17,35-39,English,3 NIDDEN,CA,IRVINE,ORANGE,92603,$0 - $0.01,SunOnly,MW,0,Partner,NO +180576523,"$400,000 - $499,999",OWNER,Welsh,N,21,75 years or more,English,40 BARNEBURG,CA,TRABUCO CANYON,ORANGE,92679,$3.00 - $3.99,7Day,YW,0,TeleIn,NO +181209231,"Under $20,000",RENTER,Hispanic,Y,14,25-29,Spanish,1401 S GILBERT ST APT 10,CA,FULLERTON,ORANGE,92833,$1.00 - $1.99,SoooTFS,FE,0,Crew,NO +130235524,"$ 30,000 - $39,999",RENTER,Arab,N,4,50-54,Arabic,6242 DUDMAN AVE,CA,GARDEN GROVE,ORANGE,92845,$4.00 - $4.99,7Day,MW,0,CustCall,NO +180427287,"$ 70,000 - $79,999",OWNER,Hispanic,N,2,30-34,Spanish,8929 AHMANN AVE,CA,WHITTIER,LOS ANGELES,90603,$2.00 - $2.99,7Day,FM,0,DirectMl,NO +181307864,"$ 70,000 - $79,999",OWNER,Hispanic,N,25,30-34,English,942 S MCCLOUD ST,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +120470758,"$ 70,000 - $79,999",OWNER,Italian,N,29,55-59,Italian,7853 LA CARTA CIR,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180495726,"$ 50,000 - $59,999",OWNER,unknown,N,7,45-49,,2401 W CHERRY AVE,CA,FULLERTON,ORANGE,92833,$0 - $0.01,7Day,FM,0,Partner,YES +140246179,"$ 90,000 - $99,999",OWNER,French,Y,23,55-59,English,5492 WESTMORELAND DR,CA,YORBA LINDA,ORANGE,92886,$0.51 - $0.99,SunOnly,FM,0,Event,YES +181273025,"$ 50,000 - $59,999",OWNER,Italian,N,11,60-64,English,701 W ROBERTA AVE,CA,FULLERTON,ORANGE,92832,$0 - $0.01,7Day,FM,0,Partner,YES +120318711,"$ 40,000 - $49,999",OWNER,English,N,13,60-64,English,6701 MARIETTA AVE,CA,GARDEN GROVE,ORANGE,92845,$5.00 - $5.99,7Day,MW,0,System,NO +181400858,"$ 40,000 - $49,999",RENTER,English,N,1,35-39,English,4302 HOWARD AVE APT 3,CA,LOS ALAMITOS,ORANGE,90720,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +180566847,"$ 30,000 - $39,999",OWNER,Hispanic,N,19,60-64,Spanish,819 S NEWHOPE ST,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +120248676,"$125,000 - $149,999",OWNER,Indian,N,26,60-64,English,31292 VIA FAJITA,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$9.00 - $9.99,7Day,FW,0,CustCall,NO +181337078,"$ 20,000 - $29,999",OWNER,Hispanic,Y,8,25-29,Spanish,1230 S CLARA ST,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,MM,0,Partner,NO +181148010,"$125,000 - $149,999",OWNER,German,N,13,45-49,English,24 SWEET RAIN,CA,IRVINE,ORANGE,92614,$0 - $0.01,SunOnly,MW,0,Partner,NO +130364961,"$100,000 - $124,999",OWNER,Dutch,Y,17,45-49,English,4087 LARWIN AVE,CA,CYPRESS,ORANGE,90630,$5.00 - $5.99,7Day,MW,0,CustCall,NO +181293045,"$ 60,000 - $69,999",RENTER,Hispanic,N,1,25-29,English,1700 E HILL ST APT 12,CA,SIGNAL HILL,LOS ANGELES,90755,$0.01 - $0.50,Thu-Sun,YM,0,Crew,NO +180208169,"$ 80,000 - $89,999",RENTER,Chinese,Y,7,30-34,Chinese,628 SUN VALLEY LN APT 202,CA,CORONA,RIVERSIDE,92879,$2.00 - $2.99,7Day,YM,0,Crew,NO +180600323,"$ 40,000 - $49,999",RENTER,Thai,N,1,25-29,English,1339 CARTAGENA,CA,NEWPORT BEACH,ORANGE,92660,$7.00 - $7.99,7Day,YW,0,Crew,NO +180391525,"$125,000 - $149,999",OWNER,Italian,N,4,35-39,English,39 SKYWOOD ST,CA,LADERA RANCH,ORANGE,92694,$3.00 - $3.99,7Day,FW,0,Crew,NO +130272561,"$ 60,000 - $69,999",OWNER,English,N,12,70-74,English,9922 DEWEY DR,CA,GARDEN GROVE,ORANGE,92841,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180402658,"$ 20,000 - $29,999",RENTER,Hispanic,N,2,75 years or more,English,1581 GLENVIEW RD APT 65A,CA,SEAL BEACH,ORANGE,90740,$4.00 - $4.99,7Day,MM,3,CustCall,YES +180397410,"$ 40,000 - $49,999",OWNER,English,N,12,60-64,English,7850 SLATER AVE SPC 67,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,SunOnly,MM,0,Partner,NO +130265155,"$ 80,000 - $89,999",OWNER,Scottish (Scotch),N,44,75 years or more,English,1241 CONWAY AVE,CA,COSTA MESA,ORANGE,92626,$4.00 - $4.99,7Day,FM,0,CustCall,NO +130234467,"$ 40,000 - $49,999",RENTER,unknown,N,1,30-34,,10881 MAC ST,CA,ANAHEIM,ORANGE,92804,$4.00 - $4.99,7Day,FM,0,CustCall,NO +170086393,"$ 90,000 - $99,999",OWNER,unknown,Y,24,70-74,,43 E YALE LOOP,CA,IRVINE,ORANGE,92604,$1.00 - $1.99,Thu-Sun,MW,0,TeleIn,NO +180277472,"$150,000 - $174,999",OWNER,Vietnamese,N,14,40-44,Vietnamese,818 HURST PL,CA,BREA,ORANGE,92821,$0 - $0.01,SunOnly,YW,0,Partner,NO +180486404,"$ 30,000 - $39,999",RENTER,Vietnamese,N,2,35-39,Vietnamese,1903 W BROADWAY,CA,ANAHEIM,ORANGE,92804,$2.00 - $2.99,7Day,FM,0,TeleIn,NO +130327399,"Under $20,000",RENTER,Hispanic,N,2,25-29,Spanish,718 W WASHINGTON AVE APT D,CA,SANTA ANA,ORANGE,92706,$4.00 - $4.99,7Day,FE,0,CustCall,NO +130287429,"$ 20,000 - $29,999",OWNER,Finnish,Y,22,45-49,English,19784 CAMBRIDGE LN,CA,HUNTINGTON BEACH,ORANGE,92646,$4.00 - $4.99,7Day,FE,0,TeleIn,NO +160469362,"$150,000 - $174,999",OWNER,English,N,15,55-59,English,10 REGINA,CA,DANA POINT,ORANGE,92629,$6.00 - $6.99,7Day,MW,4,DirectMl,YES +140431021,"$ 90,000 - $99,999",OWNER,Portuguese,N,5,45-49,Portuguese,250 LAS FLORES,CA,ALISO VIEJO,ORANGE,92656,$4.00 - $4.99,7Day,YM,0,Kiosk,NO +110330904,"$ 90,000 - $99,999",OWNER,English,N,7,70-74,English,5811 TROPHY DR,CA,HUNTINGTON BEACH,ORANGE,92649,$6.00 - $6.99,7Day,MW,0,CustCall,NO +180480504,"$ 90,000 - $99,999",OWNER,Hispanic,Y,22,55-59,Spanish,913 S HAMPSTEAD ST,CA,ANAHEIM,ORANGE,92802,$0 - $0.01,SunOnly,FM,0,Partner,NO +170433159,"$150,000 - $174,999",OWNER,English,Y,7,40-44,English,18881 SILVER MAPLE WAY,CA,SANTA ANA,ORANGE,92705,$4.00 - $4.99,7Day,FW,0,CustCall,NO +180419688,"$ 20,000 - $29,999",RENTER,Hispanic,N,6,24 years or less,Spanish,2234 S CENTER ST APT A,CA,SANTA ANA,ORANGE,92704,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +110592424,"$ 20,000 - $29,999",RENTER,English,N,3,75 years or more,English,29755 NIGUEL RD APT F,CA,LAGUNA NIGUEL,ORANGE,92677,$1.00 - $1.99,7Day,YW,0,CircAdm,NO +180394042,"$200,000 - $249,999",OWNER,English,Y,16,50-54,English,3939 HOLLY SPRINGS DR,CA,CORONA,RIVERSIDE,92881,$0.51 - $0.99,SunOnly,FW,0,DirectMl,NO +181218829,"$ 20,000 - $29,999",OWNER,Swedish,N,13,60-64,English,11431 DOLAN ST,CA,GARDEN GROVE,ORANGE,92840,$0 - $0.01,SunOnly,MW,0,Partner,YES +180394214,"$ 40,000 - $49,999",OWNER,Chinese,N,19,55-59,Chinese,11651 WASCO RD,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,MM,0,Partner,NO +130149081,"$125,000 - $149,999",OWNER,German,N,11,45-49,English,6231 PRISCILLA DR,CA,HUNTINGTON BEACH,ORANGE,92647,$1.00 - $1.99,SunOnly,MW,0,CustCall,NO +180413015,"$ 70,000 - $79,999",OWNER,Hispanic,Y,25,60-64,Spanish,8631 HARRIET LN,CA,STANTON,ORANGE,90680,$3.00 - $3.99,Thu-Sun,MM,0,Crew,NO +180342915,"$150,000 - $174,999",OWNER,English,N,54,75 years or more,English,13222 ANAWOOD WAY,CA,WESTMINSTER,ORANGE,92683,$1.00 - $1.99,Thu-Sun,MW,0,Crew,NO +180389171,"$ 40,000 - $49,999",OWNER,Hispanic,Y,16,50-54,Spanish,706 S DORCHESTER ST,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,SunOnly,MM,0,Partner,NO +181181418,"$125,000 - $149,999",OWNER,English,N,24,50-54,English,4641 VIA LOMA LINDA,CA,YORBA LINDA,ORANGE,92886,$0 - $0.01,SunOnly,MM,0,Partner,NO +180236660,"$ 50,000 - $59,999",RENTER,English,N,2,55-59,English,220 W CENTRAL AVE APT 516,CA,BREA,ORANGE,92821,$1.00 - $1.99,Soooooo,MM,0,TeleOut,NO +180735064,"$175,000 - $199,999",OWNER,Irish,N,3,70-74,English,5329 VIA APOLINA,CA,YORBA LINDA,ORANGE,92886,$0.01 - $0.50,7Day,MW,0,AdvAdm,NO +120381032,"$500,000 Plus",OWNER,unknown,Y,20,50-54,,2239 ARALIA ST,CA,NEWPORT BEACH,ORANGE,92660,$10.00 - $10.99,7Day,MM,0,System,YES +180711507,"$ 80,000 - $89,999",OWNER,Hispanic,N,24,55-59,Spanish,3126 S ARTESIA ST,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,YM,0,Partner,NO +180408429,"$ 20,000 - $29,999",OWNER,German,N,5,65-69,English,522 S MANCOS AVE,CA,ANAHEIM,ORANGE,92806,$5.00 - $5.99,7Day,MW,0,TeleOut,NO +160461809,"$300,000 - $399,999",OWNER,English,Y,2,40-44,English,51 WATERMAN,CA,IRVINE,ORANGE,92602,$4.00 - $4.99,Thu-Sun,MW,0,CustCall,NO +110575652,"$175,000 - $199,999",OWNER,Portuguese,Y,23,75 years or more,English,17165 CHICAGO AVE,CA,YORBA LINDA,ORANGE,92886,$0 - $0.01,SunOnly,YW,0,Partner,NO +180549678,"$300,000 - $399,999",OWNER,Hispanic,Y,18,45-49,Spanish,11842 TOPAZ CIR,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,FM,0,Event,NO +180410801,"$100,000 - $124,999",OWNER,Welsh,N,1,55-59,English,9931 GARRETT CIR,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,SunOnly,MW,0,Internet,NO +181295480,"$400,000 - $499,999",OWNER,Italian,N,38,70-74,English,715 S QUAIL CIR,CA,ANAHEIM,ORANGE,92807,$0 - $0.01,SunOnly,FW,0,Partner,NO +170326171,"$125,000 - $149,999",OWNER,German,N,22,45-49,English,9 VIA ANADEJA,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$1.00 - $1.99,7Day,FW,0,Event,NO +140595724,"$ 50,000 - $59,999",RENTER,English,N,1,30-34,English,270 VENETO,CA,IRVINE,ORANGE,92614,$4.00 - $4.99,7Day,YM,0,Crew,NO +180581209,"$300,000 - $399,999",OWNER,English,N,7,45-49,English,22081 OAK GRV,CA,MISSION VIEJO,ORANGE,92692,$7.00 - $7.99,Thu-Sun,MW,0,Internet,YES +180315476,"$ 30,000 - $39,999",OWNER,Hispanic,N,7,45-49,English,114 ORCHID DR,CA,PLACENTIA,ORANGE,92870,$1.00 - $1.99,SunOnly,FM,0,TeleOut,NO +120105477,"$125,000 - $149,999",OWNER,unknown,N,11,50-54,,4 GANADERO,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$10.00 - $10.99,7Day,YW,0,VRU,YES +181223749,"$ 20,000 - $29,999",RENTER,Hispanic,N,2,35-39,Spanish,2858 W BALL RD APT E4,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,SunOnly,FE,0,Crew,YES +180514662,"$ 40,000 - $49,999",OWNER,Welsh,N,1,30-34,English,276 E MONTEREY RD,CA,CORONA,RIVERSIDE,92879,$0.01 - $0.50,7Day,FM,0,Partner,NO +181348421,"$175,000 - $199,999",OWNER,Jewish,N,11,55-59,English,3116 E TRENTON AVE,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +170313438,"$300,000 - $399,999",OWNER,Swedish,N,18,65-69,English,23772 VIA PORTON,CA,MISSION VIEJO,ORANGE,92691,$4.00 - $4.99,7Day,MW,0,CustCall,NO +170072533,"$ 80,000 - $89,999",OWNER,English,Y,6,35-39,English,2443 ALLEGHENY WAY,CA,PLACENTIA,ORANGE,92870,$4.00 - $4.99,7Day,FW,0,TeleIn,NO +180370893,"$ 60,000 - $69,999",OWNER,Thai,Y,21,50-54,English,11242 SANTA ROSALIA ST,CA,STANTON,ORANGE,90680,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180638081,"$ 50,000 - $59,999",RENTER,Scottish (Scotch),N,9,65-69,English,3742 SEBREN AVE,CA,LONG BEACH,LOS ANGELES,90808,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +150113873,"$300,000 - $399,999",OWNER,Hispanic,N,13,50-54,English,1406 W RIVER LN,CA,SANTA ANA,ORANGE,92706,$4.00 - $4.99,7Day,FM,0,TeleIn,NO +180554284,"$500,000 Plus",OWNER,Jewish,N,23,50-54,English,4883 CORSICA DR,CA,CYPRESS,ORANGE,90630,$0 - $0.01,SunOnly,MW,0,Partner,NO +180190903,"$ 40,000 - $49,999",OWNER,English,N,8,75 years or more,English,27632 SUMMERFIELD LN,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$4.00 - $4.99,7Day,YW,0,CustCall,NO +181147613,"$150,000 - $174,999",OWNER,Italian,N,15,55-59,English,10683 WALNUT ST,CA,LOS ALAMITOS,ORANGE,90720,$0 - $0.01,SunOnly,FE,0,Partner,NO +180670307,"$ 90,000 - $99,999",OWNER,unknown,N,2,55-59,,6135 HENRILEE ST,CA,LAKEWOOD,LOS ANGELES,90713,$1.00 - $1.99,SunOnly,YM,0,DirectMl,NO +120547065,"$150,000 - $174,999",OWNER,Italian,N,36,60-64,English,11673 MANILA DR,CA,CYPRESS,ORANGE,90630,$6.00 - $6.99,Soooooo,MW,0,CustCall,NO +140404050,"$ 30,000 - $39,999",OWNER,English,N,49,65-69,English,14617 CORTINA DR,CA,LA MIRADA,LOS ANGELES,90638,$2.00 - $2.99,SatSun,MW,0,CustCall,NO +160404577,"$ 80,000 - $89,999",OWNER,Hispanic,N,28,55-59,Spanish,1044 W WALNUT ST,CA,SANTA ANA,ORANGE,92703,$4.00 - $4.99,7Day,MM,0,TeleIn,NO +120486900,"$ 40,000 - $49,999",OWNER,Vietnamese,N,2,24 years or less,English,3129 S MANITOBA DR,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,YM,0,Crew,NO +110017871,"$ 50,000 - $59,999",OWNER,English,N,20,70-74,English,6052 IROQUOIS RD,CA,WESTMINSTER,ORANGE,92683,$3.00 - $3.99,7Day,MW,0,CustCall,YES +181288907,"$ 50,000 - $59,999",RENTER,Hispanic,N,4,40-44,Spanish,30921 CALLE SAN FELIPE,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$4.00 - $4.99,7Day,MM,0,Crew,NO +180256717,"Under $20,000",RENTER,Hispanic,N,3,50-54,English,14300 NEWPORT AVE APT 82,CA,TUSTIN,ORANGE,92780,$1.00 - $1.99,Thu-Sun,FE,0,Crew,NO +140162753,"$100,000 - $124,999",OWNER,Italian,N,12,40-44,English,18572 MARIPOSA DR,CA,VILLA PARK,ORANGE,92861,$4.00 - $4.99,7Day,MW,0,CustCall,NO +160056593,"$ 30,000 - $39,999",RENTER,Welsh,N,10,50-54,English,7222 MELROSE ST APT 103,CA,BUENA PARK,ORANGE,90621,$2.00 - $2.99,SunOnly,ME,0,CustCall,NO +120214915,"$ 70,000 - $79,999",OWNER,Hispanic,N,18,70-74,English,23 MAGNOLIA VIA,CA,ANAHEIM,ORANGE,92801,$0.01 - $0.50,SunOnly,ME,1,DirectMl,NO +180413607,"$ 40,000 - $49,999",OWNER,Vietnamese,Y,7,40-44,Vietnamese,14811 YARBOROUGH ST,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +150334429,"$100,000 - $124,999",OWNER,Polish,Y,3,45-49,English,23421 DEVONSHIRE DR,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,7Day,MW,0,CustCall,NO +170016414,"$ 70,000 - $79,999",OWNER,Scottish (Scotch),N,20,65-69,English,15700 POPPY WAY,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,SatSun,MM,0,CustCall,NO +110248682,"$100,000 - $124,999",OWNER,Swedish,N,5,30-34,English,22125 RICHFORD DR,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,MW,0,CustCall,NO +170305717,"$125,000 - $149,999",OWNER,English,N,29,75 years or more,English,22450 ROLLING HILLS LN,CA,YORBA LINDA,ORANGE,92887,$1.00 - $1.99,7Day,YW,0,TeleIn,NO +180205395,"$ 20,000 - $29,999",RENTER,Hispanic,Y,9,45-49,English,5476 E WILLOW WOODS LN UNIT C,CA,ANAHEIM,ORANGE,92807,$2.00 - $2.99,7Day,YM,0,Crew,NO +180241901,"$ 70,000 - $79,999",RENTER,Indian,N,12,45-49,English,9282 BLANCHE AVE,CA,GARDEN GROVE,ORANGE,92841,$0.51 - $0.99,Thu-Sun,MW,0,TeleIn,NO +181260448,"Under $20,000",RENTER,Swedish,N,4,35-39,English,118 W MOUNTAIN VIEW AVE APT 7,CA,LA HABRA,ORANGE,90631,$3.00 - $3.99,SoooTFS,FE,0,Crew,NO +181176828,"$ 70,000 - $79,999",OWNER,Italian,N,4,35-39,English,1472 W SOUTHGATE AVE,CA,FULLERTON,ORANGE,92833,$0 - $0.01,7Day,FM,0,Partner,YES +180722213,"Under $20,000",OWNER,Hispanic,Y,21,40-44,English,1136 DAISY AVE,CA,LONG BEACH,LOS ANGELES,90813,,7DayOL,FE,0,CircAdm,NO +180346492,"$100,000 - $124,999",OWNER,Vietnamese,N,4,30-34,English,18117 OYSTER BAY,CA,YORBA LINDA,ORANGE,92886,$4.00 - $4.99,7Day,YW,1,Internet,NO +110163961,"$300,000 - $399,999",OWNER,German,Y,41,65-69,English,6631 E SMOKEY AVE,CA,ORANGE,ORANGE,92867,$8.00 - $8.99,7Day,YW,2,CustCall,YES +130349120,"$200,000 - $249,999",OWNER,German,Y,16,50-54,English,4 CAMILLO,CA,ALISO VIEJO,ORANGE,92656,$1.00 - $1.99,7Day,MW,0,TeleIn,NO +180430764,"$100,000 - $124,999",OWNER,German,N,7,70-74,English,3154 ALTA VIS UNIT C,CA,LAGUNA WOODS,ORANGE,92637,$10.00 - $10.99,7Day,MM,2,TeleIn,YES +180556314,"$200,000 - $249,999",OWNER,Vietnamese,N,17,60-64,Vietnamese,20222 SCALLOP LN,CA,HUNTINGTON BEACH,ORANGE,92648,$6.00 - $6.99,Thu-Sun,YW,0,System,NO +180346653,"$200,000 - $249,999",OWNER,Indian,Y,16,45-49,Hindi,37 PARREMO,CA,MISSION VIEJO,ORANGE,92692,$1.00 - $1.99,SunOnly,MW,0,Partner,NO +181362898,"$ 30,000 - $39,999",RENTER,Hispanic,N,6,55-59,Spanish,811 S FAIRVIEW ST APT V3,CA,SANTA ANA,ORANGE,92704,$3.00 - $3.99,Thu-Sun,FE,0,Crew,NO +130063380,"Under $20,000",RENTER,unknown,N,10,70-74,,1770 N COMMUNITY DR APT 108,CA,ANAHEIM,ORANGE,92806,$2.00 - $2.99,7DayT,ME,0,CustCall,NO +180570395,"Under $20,000",OWNER,Hispanic,N,13,50-54,Spanish,1441 S ROSS ST,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,SunOnly,YM,0,Internet,NO +170360779,"$ 50,000 - $59,999",OWNER,Irish,N,16,55-59,English,530 PECAN WAY,CA,LA HABRA,ORANGE,90631,$4.00 - $4.99,7Day,MM,0,RetenIn,NO +180603964,"$ 50,000 - $59,999",OWNER,German,N,2,40-44,English,861 SENATE ST,CA,COSTA MESA,ORANGE,92627,$1.00 - $1.99,7Day,FM,0,Kiosk,NO +181484311,"$ 40,000 - $49,999",OWNER,Chinese,N,3,40-44,English,2262 COCO PALM DR,CA,TUSTIN,ORANGE,92780,$0.01 - $0.50,SunOnly,FW,0,Partner,YES +140329024,"$200,000 - $249,999",OWNER,Chinese,Y,2,40-44,English,11782 OUTLOOK LN,CA,SANTA ANA,ORANGE,92705,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +180302348,"$ 70,000 - $79,999",OWNER,Chinese,N,14,60-64,Chinese,23601 CAVANAUGH RD,CA,LAKE FOREST,ORANGE,92630,$4.00 - $4.99,7Day,MM,0,CustCall,NO +160287544,"$300,000 - $399,999",OWNER,Dutch,Y,20,50-54,English,21355 VIA DEL PARQUE,CA,YORBA LINDA,ORANGE,92887,$7.00 - $7.99,7Day,YW,0,System,NO +180734618,"$ 20,000 - $29,999",OWNER,unknown,N,38,75 years or more,,6552 SAN HUGO WAY,CA,BUENA PARK,ORANGE,90620,$3.00 - $3.99,Soooooo,MM,3,Internet,NO +180258013,"$125,000 - $149,999",OWNER,Welsh,Y,14,50-54,English,7575 QUIET COVE CIR,CA,HUNTINGTON BEACH,ORANGE,92648,$4.00 - $4.99,Thu-Sun,FM,0,System,NO +180354071,"$ 60,000 - $69,999",OWNER,Scottish (Scotch),N,8,70-74,English,19872 RIVERVIEW DR,CA,YORBA LINDA,ORANGE,92886,$0 - $0.01,SunOnly,YW,0,Partner,NO +140322388,"$ 50,000 - $59,999",RENTER,Hispanic,N,9,30-34,English,1921 W LA VETA AVE APT 12,CA,ORANGE,ORANGE,92868,$3.00 - $3.99,7Day,YM,0,CustCall,NO +150606435,"$ 90,000 - $99,999",OWNER,Dutch,Y,9,40-44,English,3064 N SKYWOOD ST,CA,ORANGE,ORANGE,92865,$2.00 - $2.99,SatSun,YW,0,CustCall,NO +180638065,"$125,000 - $149,999",OWNER,Italian,Y,14,45-49,English,3236 PETALUMA AVE,CA,LONG BEACH,LOS ANGELES,90808,$0 - $0.01,SunOnly,MW,0,Partner,YES +181343428,"$ 90,000 - $99,999",RENTER,English,N,6,45-49,English,12400 MONTECITO RD APT 319,CA,SEAL BEACH,ORANGE,90740,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +120330688,"$100,000 - $124,999",OWNER,English,Y,19,45-49,English,529 N YALE AVE,CA,FULLERTON,ORANGE,92831,$1.00 - $1.99,SoooooS,FM,0,CircAdm,NO +180668610,"$ 50,000 - $59,999",RENTER,unknown,N,3,25-29,,31 GRECO AISLE,CA,IRVINE,ORANGE,92614,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +120120625,"$500,000 Plus",OWNER,German,N,13,60-64,English,19055 FAIRMONT LN,CA,HUNTINGTON BEACH,ORANGE,92648,$4.00 - $4.99,7Day,MW,0,CustCall,NO +180491760,"$100,000 - $124,999",OWNER,Italian,N,33,75 years or more,English,25912 EVERGREEN RD,CA,LAGUNA HILLS,ORANGE,92653,$0.01 - $0.50,SunOnlyT,FM,0,TeleIn,NO +140471663,"$150,000 - $174,999",OWNER,Chinese,N,3,55-59,English,18702 LORAINE LN,CA,YORBA LINDA,ORANGE,92886,$2.00 - $2.99,SatSun,YW,0,CustCall,NO +180486313,"$ 20,000 - $29,999",RENTER,Hispanic,N,8,45-49,Spanish,21661 BROOKHURST ST APT 112,CA,HUNTINGTON BEACH,ORANGE,92646,$0 - $0.01,SunOnly,ME,0,Partner,NO +180375971,"$ 20,000 - $29,999",RENTER,Vietnamese,Y,3,35-39,Vietnamese,2700 PETERSON PL APT 17B,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +140041254,"$150,000 - $174,999",OWNER,English,N,6,55-59,English,25501 CHIMERA DR,CA,MISSION VIEJO,ORANGE,92692,$8.00 - $8.99,7Day,FW,0,CustCall,NO +140462395,"$ 40,000 - $49,999",RENTER,unknown,N,1,50-54,,1324 W VALENCIA DR APT B,CA,FULLERTON,ORANGE,92833,$2.00 - $2.99,SatSun,ME,0,CustCall,NO +180187381,"$100,000 - $124,999",RENTER,Scottish (Scotch),N,5,50-54,English,8506 E TIMBERLINE DR APT 220,CA,ANAHEIM,ORANGE,92808,$2.00 - $2.99,7Day,FM,0,Crew,NO +120026286,"$100,000 - $124,999",OWNER,Hispanic,Y,21,55-59,English,1558 GATEWOOD CT,CA,BREA,ORANGE,92821,$3.00 - $3.99,7Day,MM,0,TeleIn,NO +140199307,"$500,000 Plus",OWNER,Dutch,Y,17,50-54,English,23045 STONERIDGE,CA,MISSION VIEJO,ORANGE,92692,$10.00 - $10.99,7Day,YW,0,VRU,NO +110324583,"$100,000 - $124,999",OWNER,Welsh,Y,24,60-64,English,443 S CREST RD,CA,ORANGE,ORANGE,92868,$4.00 - $4.99,7Day,YM,0,Kiosk,NO +180486542,"$ 50,000 - $59,999",OWNER,Indian,Y,5,65-69,English,11742 216TH ST UNIT 3,CA,LAKEWOOD,LOS ANGELES,90715,$0 - $0.01,7Day,YM,0,Partner,NO +180656004,"$ 40,000 - $49,999",OWNER,Hispanic,Y,51,65-69,English,8086 LIME CIR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,MM,0,Partner,NO +181215933,"$125,000 - $149,999",OWNER,English,Y,25,60-64,English,17291 HARDING CANYON RD,CA,SILVERADO,ORANGE,92676,$0 - $0.01,SunOnly,YW,0,Partner,YES +181498046,"$ 40,000 - $49,999",OWNER,Chinese,N,5,30-34,English,474 MONROE,CA,IRVINE,ORANGE,92620,$3.00 - $3.99,Thu-Sun,MW,0,Crew1,NO +181201419,"$125,000 - $149,999",OWNER,English,Y,8,45-49,English,130 E ALDERWOOD AVE,CA,ORANGE,ORANGE,92865,$0 - $0.01,SunOnly,YW,0,Partner,YES +130606706,"$100,000 - $124,999",OWNER,Hispanic,N,23,50-54,English,224 AVENIDA SERRA APT A,CA,SAN CLEMENTE,ORANGE,92672,$4.00 - $4.99,7Day,MM,0,DirectMl,NO +120236636,"$100,000 - $124,999",OWNER,African (other),N,28,70-74,English,4 ELDERWOOD,CA,IRVINE,ORANGE,92614,$3.00 - $3.99,7Day,MW,0,TeleIn,NO +170033480,"$ 40,000 - $49,999",OWNER,Irish,N,11,70-74,English,5331 TUFTON ST,CA,WESTMINSTER,ORANGE,92683,$6.00 - $6.99,7Day,MM,0,VRU,YES +110043183,"$175,000 - $199,999",OWNER,Irish,N,27,50-54,English,944 N GARDEN ST,CA,ANAHEIM,ORANGE,92801,$10.00 - $10.99,7Day,FM,0,VRU,YES +180740591,"Under $20,000",RENTER,Hispanic,N,5,65-69,English,31641 RANCHO VIEJO RD APT A106,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$0 - $0.01,SunOnly,MM,0,Partner,NO +120061307,"$100,000 - $124,999",OWNER,Japanese,N,37,75 years or more,English,930 S BOONE CIR,CA,ANAHEIM,ORANGE,92807,$3.00 - $3.99,SunOnly,MW,0,CustCall,NO +181294120,"$100,000 - $124,999",OWNER,English,Y,8,45-49,English,6811 DEFIANCE DR,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,7Day,MW,0,Partner,YES +181332790,"$ 40,000 - $49,999",RENTER,Hispanic,Y,3,30-34,Spanish,7811 TALBERT AVE APT 14,CA,HUNTINGTON BEACH,ORANGE,92648,$0.51 - $0.99,SunOnly,ME,0,SCinsert,YES +160229955,"$500,000 Plus",OWNER,Chinese,N,7,50-54,English,22712 COTTONWOOD,CA,MISSION VIEJO,ORANGE,92692,$4.00 - $4.99,7Day,YW,0,CustCall,NO +120074075,"$ 70,000 - $79,999",OWNER,Hispanic,N,21,50-54,Spanish,3172 W MONROE AVE,CA,ANAHEIM,ORANGE,92801,$4.00 - $4.99,7Day,YM,0,Crew,NO +120567232,"$125,000 - $149,999",OWNER,English,N,7,30-34,English,7 CONYERS LN,CA,LADERA RANCH,ORANGE,92694,$4.00 - $4.99,7Day,FW,0,TeleOut,NO +150146185,"$100,000 - $124,999",OWNER,Scottish (Scotch),N,12,50-54,English,386 OLINDA DR,CA,BREA,ORANGE,92823,$0.01 - $0.50,7Day,MW,0,CircAdm,NO +181458083,"$ 20,000 - $29,999",RENTER,Hispanic,Y,9,25-29,Spanish,502 E 6TH ST APT 312,CA,SANTA ANA,ORANGE,92701,$3.00 - $3.99,Thu-Sun,FE,0,Crew,NO +130303697,"$100,000 - $124,999",OWNER,Irish,N,4,50-54,English,26716 CALLE JUANITA,CA,CAPISTRANO BEACH,ORANGE,92624,$4.00 - $4.99,Thu-Sun,MM,0,CustCall,NO +170611022,"$ 70,000 - $79,999",OWNER,Hispanic,N,11,50-54,Spanish,23298 ORANGE AVE APT 1,CA,LAKE FOREST,ORANGE,92630,$4.00 - $4.99,7Day,MM,0,Crew,NO +180356281,"$ 50,000 - $59,999",OWNER,English,N,1,70-74,English,1121 WOODSIDE DR,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,Thu-Sun,MM,0,System,NO +160567173,"$ 80,000 - $89,999",OWNER,English,N,4,75 years or more,English,21 RUE CANNES,CA,NEWPORT BEACH,ORANGE,92660,$6.00 - $6.99,7Day,MW,0,CustCall,NO +180235078,"$ 80,000 - $89,999",OWNER,English,N,23,65-69,English,1825 JOSIE AVE,CA,LONG BEACH,LOS ANGELES,90815,$1.00 - $1.99,SoooTFS,MW,0,TeleIn,NO +180622728,"$ 80,000 - $89,999",OWNER,English,Y,5,50-54,English,925 CUYLER AVE,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,SunOnly,FM,0,Crew,NO +180560904,"Under $20,000",RENTER,Hispanic,N,9,55-59,English,1003 W BISHOP ST APT 9,CA,SANTA ANA,ORANGE,92703,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +180064123,"$125,000 - $149,999",OWNER,English,Y,23,55-59,English,6231 TYNDALL DR,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,Thu-Sun,MM,0,CircAdm,NO +180646535,"$125,000 - $149,999",RENTER,Arab,N,18,55-59,English,5772 GARDEN GROVE BLVD SPC 581,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,ME,0,Partner,YES +170398635,"$100,000 - $124,999",OWNER,Scottish (Scotch),N,20,55-59,English,52 MISSION CT,CA,FOOTHILL RANCH,ORANGE,92610,$2.00 - $2.99,SatSun,FE,0,VRU,NO +160489410,"$100,000 - $124,999",OWNER,Scottish (Scotch),Y,11,30-34,English,7973 OSUNA CIR,CA,HUNTINGTON BEACH,ORANGE,92648,$0.51 - $0.99,Thu-SunT,YW,0,TeleOut,NO +140116700,"Under $20,000",OWNER,English,N,36,65-69,English,2777 PINE CREEK CIR,CA,FULLERTON,ORANGE,92835,$3.00 - $3.99,SunOnly,FM,0,CustCall,YES +120587315,"$ 40,000 - $49,999",OWNER,Arab,N,14,70-74,Arabic,22854 SAILWIND WAY,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,FM,0,Crew,NO +130238065,"$400,000 - $499,999",OWNER,English,N,18,24 years or less,English,2191 N GRANDVIEW RD,CA,ORANGE,ORANGE,92867,$10.00 - $10.99,7Day,MW,2,CustCall,YES +150297553,"$ 20,000 - $29,999",RENTER,Swedish,N,1,25-29,English,1914 PELORUS AVE,CA,SEAL BEACH,ORANGE,90740,$1.00 - $1.99,SunOnly,YM,0,CustCall,NO +180745987,"$175,000 - $199,999",OWNER,English,Y,17,55-59,English,4435 VIA DEL PRADO,CA,YORBA LINDA,ORANGE,92886,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +120511715,"$125,000 - $149,999",OWNER,Swedish,N,43,40-44,English,32302 ALIPAZ ST SPC 121,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$3.00 - $3.99,Thu-Sun,ME,0,VRU,YES +120313342,"$ 50,000 - $59,999",OWNER,English,N,25,60-64,English,1726 W BOWLING ST,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,Thu-Sun,MM,27,Partner,YES +181357667,"$ 80,000 - $89,999",OWNER,Hispanic,N,4,50-54,English,6420 CAROLINA CIR,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +130526668,"$125,000 - $149,999",OWNER,Hispanic,N,20,30-34,Spanish,1033 W SAINT GERTRUDE PL,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,SatSun,YM,0,Crew,NO +181185218,"$100,000 - $124,999",OWNER,unknown,Y,10,50-54,,25885 TRABUCO RD APT 124,CA,LAKE FOREST,ORANGE,92630,$0 - $0.01,SunOnly,FM,0,Partner,NO +181279551,"$ 40,000 - $49,999",RENTER,English,N,14,35-39,English,2881 BEAR ST APT 103,CA,COSTA MESA,ORANGE,92626,$4.00 - $4.99,SoooTFS,YM,0,Crew,NO +130392835,"$100,000 - $124,999",OWNER,Italian,Y,23,60-64,English,645 FEATHERWOOD DR,CA,DIAMOND BAR,LOS ANGELES,91765,$3.00 - $3.99,SunOnly,FM,0,CustCall,YES +140326672,"$125,000 - $149,999",OWNER,Vietnamese,N,14,55-59,English,3672 FALCON WAY,CA,BREA,ORANGE,92823,$1.00 - $1.99,Thu-Sun,MW,0,CustCall,NO +180188920,"$ 60,000 - $69,999",RENTER,Chinese,Y,8,45-49,English,387 DURANZO AISLE,CA,IRVINE,ORANGE,92606,$1.00 - $1.99,SunOnly,YM,0,Crew,NO +180339475,"$ 50,000 - $59,999",OWNER,Hispanic,N,5,60-64,Spanish,7057 E SHORECREST DR,CA,ANAHEIM,ORANGE,92807,$1.00 - $1.99,Thu-Sun,YW,0,Crew,NO +180719426,"Under $20,000",RENTER,Arab,N,6,65-69,Arabic,3631 E 2ND ST APT 2,CA,LONG BEACH,LOS ANGELES,90803,,7DayOL,YM,0,CircAdm,NO +181298570,"Under $20,000",RENTER,German,N,1,75 years or more,English,285 W CENTRAL AVE APT 254,CA,BREA,ORANGE,92821,$6.00 - $6.99,7Day,MM,0,CustCall,YES +130319230,"$150,000 - $174,999",OWNER,Hispanic,N,38,65-69,English,25962 ANACAPA ST,CA,LAGUNA HILLS,ORANGE,92653,$0.01 - $0.50,Thu-Sun,MW,0,Internet,YES +180394467,"$ 70,000 - $79,999",OWNER,English,Y,3,65-69,English,41 ALICANTE AISLE,CA,IRVINE,ORANGE,92614,$0 - $0.01,SunOnly,FM,0,Partner,NO +181486418,"$ 40,000 - $49,999",RENTER,Scottish (Scotch),N,1,25-29,English,4674 E BARKER WAY,CA,LONG BEACH,LOS ANGELES,90814,$3.00 - $3.99,Thu-Sun,FM,0,Crew1,NO +180560508,"Under $20,000",RENTER,Hispanic,N,9,50-54,Spanish,426 S SYCAMORE ST APT 2,CA,SANTA ANA,ORANGE,92701,$0 - $0.01,SunOnly,FE,0,Partner,NO +180675282,"$400,000 - $499,999",OWNER,Italian,Y,22,65-69,English,4667 ADAGIO LN,CA,CYPRESS,ORANGE,90630,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +180706229,"Under $20,000",RENTER,Hispanic,N,1,30-34,English,1721 E 56TH ST,CA,LONG BEACH,LOS ANGELES,90805,$0 - $0.01,SunOnly,MM,0,Partner,NO +150320485,"$ 40,000 - $49,999",RENTER,Scottish (Scotch),Y,2,50-54,English,19153 ALEXA LN,CA,HUNTINGTON BEACH,ORANGE,92648,$0.51 - $0.99,Thu-Sun,FM,0,DirectMl,NO +120402088,"$500,000 Plus",OWNER,German,N,25,55-59,English,1 CRYSTAL VIEW RDG,CA,LAGUNA NIGUEL,ORANGE,92677,$9.00 - $9.99,7Day,MW,0,CustCall,NO +181548065,"Under $20,000",RENTER,English,N,1,55-59,English,1801 E COLLINS AVE TRLR 46,CA,ORANGE,ORANGE,92867,$3.00 - $3.99,Thu-Sun,ME,0,Crew1,YES +180495072,"$125,000 - $149,999",OWNER,African (other),Y,3,40-44,English,1155 MILLBROOK RD,CA,CORONA,RIVERSIDE,92882,$0.01 - $0.50,SunOnly,FM,0,SCinsert,NO +140568760,"$150,000 - $174,999",OWNER,English,N,1,50-54,English,33 BERLAMO,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +160066183,"$125,000 - $149,999",OWNER,unknown,N,9,40-44,,3801 E WOODBINE RD,CA,ORANGE,ORANGE,92867,$4.00 - $4.99,7Day,YW,0,CustCall,NO +180462913,"$ 80,000 - $89,999",OWNER,English,N,35,60-64,English,1408 WHITTIER AVE,CA,BREA,ORANGE,92821,$0.01 - $0.50,Thu-Sun,FM,0,RetenIn,YES +180373522,"$ 60,000 - $69,999",OWNER,Hispanic,N,2,35-39,Spanish,2171 ASSOCIATED RD,CA,FULLERTON,ORANGE,92831,$2.00 - $2.99,SunOnly,YW,0,TeleIn,NO +170019998,"$ 80,000 - $89,999",OWNER,unknown,N,55,55-59,,520 POINSETTIA AVE,CA,CORONA DEL MAR,ORANGE,92625,$3.00 - $3.99,Fri-SunT,YW,0,CustCall,NO +180283398,"Under $20,000",RENTER,Hispanic,N,3,45-49,Spanish,2126 W ELDER AVE,CA,SANTA ANA,ORANGE,92704,$0.51 - $0.99,Soooooo,MM,0,TeleIn,NO +130141073,"$ 60,000 - $69,999",OWNER,English,Y,22,50-54,English,28962 CANYON RIM DR,CA,TRABUCO CANYON,ORANGE,92679,$1.00 - $1.99,SunOnly,YW,0,Crew,NO +140283587,"$100,000 - $124,999",OWNER,French,N,11,65-69,English,5190 DUENAS,CA,LAGUNA WOODS,ORANGE,92637,$1.00 - $1.99,7Day,MM,0,CustCall,NO +160220001,"Under $20,000",OWNER,English,N,30,70-74,English,1422 S VAN NESS AVE,CA,SANTA ANA,ORANGE,92707,$10.00 - $10.99,7Day,MW,0,CustCall,YES +160593521,"$ 20,000 - $29,999",RENTER,Chinese,N,8,35-39,English,2855 PINECREEK DR APT E302,CA,COSTA MESA,ORANGE,92626,$4.00 - $4.99,7Day,YM,0,Crew,NO +180192039,"$ 20,000 - $29,999",OWNER,Scottish (Scotch),N,38,70-74,English,4137 E BAINBRIDGE AVE,CA,ANAHEIM,ORANGE,92807,$0 - $0.01,SunOnly,YW,0,Partner,NO +130366200,"$ 80,000 - $89,999",OWNER,Hispanic,Y,31,65-69,Spanish,2321 DOWNIE PL,CA,SANTA ANA,ORANGE,92706,$0.01 - $0.50,Thu-Sun,FE,0,TeleIn,NO +140354651,"$ 30,000 - $39,999",OWNER,Hispanic,N,29,75 years or more,English,425 W 6TH ST,CA,TUSTIN,ORANGE,92780,$2.00 - $2.99,7Day,YW,0,RetenIn,YES +110177373,"$300,000 - $399,999",OWNER,Welsh,N,23,55-59,English,23 SYCAMORE CANYON DR,CA,TRABUCO CANYON,ORANGE,92679,$4.00 - $4.99,7Day,YW,0,DirectMl,NO +130540542,"$ 50,000 - $59,999",OWNER,Swedish,N,2,45-49,English,462 ESTHER ST,CA,COSTA MESA,ORANGE,92627,$0.51 - $0.99,SunOnly,MW,0,DirectMl,NO +130438657,"$100,000 - $124,999",OWNER,Italian,N,5,60-64,English,6991 E VIA EL ESTRIBO,CA,ANAHEIM,ORANGE,92807,$5.00 - $5.99,Thu-Sun,MW,0,CustCall,NO +120403054,"$300,000 - $399,999",OWNER,Chinese,Y,3,45-49,Chinese,5 ELDORADO,CA,FOOTHILL RANCH,ORANGE,92610,$5.00 - $5.99,7Day,FW,0,CustCall,NO +120366801,"$ 90,000 - $99,999",OWNER,English,N,31,55-59,English,27856 CAMPHOR TREE LN,CA,MISSION VIEJO,ORANGE,92691,$2.00 - $2.99,SoooTFS,MW,0,TeleIn,NO +180472835,"$100,000 - $124,999",OWNER,German,Y,9,55-59,English,5752 MARSHALL DR,CA,HUNTINGTON BEACH,ORANGE,92649,$1.00 - $1.99,SunOnly,FM,0,CustCall,NO +170027614,"$100,000 - $124,999",OWNER,Hispanic,N,18,55-59,English,12 RACING WIND,CA,IRVINE,ORANGE,92614,$5.00 - $5.99,7Day,MW,74,CustCall,YES +120137313,"$ 70,000 - $79,999",OWNER,Italian,N,21,45-49,English,93 FULMAR LN,CA,ALISO VIEJO,ORANGE,92656,$2.00 - $2.99,SoooTFS,FM,0,Crew,NO +140437993,"$ 80,000 - $89,999",RENTER,Danish,N,6,35-39,English,14092 BROWNING AVE SPC 86,CA,TUSTIN,ORANGE,92780,$3.00 - $3.99,SoooTFS,FE,0,TeleIn,NO +170379707,"$ 30,000 - $39,999",RENTER,Hispanic,N,2,24 years or less,Spanish,5306 W HENDERSON PL,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,MM,0,Kiosk,NO +181540344,"$ 60,000 - $69,999",OWNER,Hispanic,N,19,45-49,Spanish,284 S JAMES ST,CA,ORANGE,ORANGE,92869,$0.01 - $0.50,SunOnly,YW,0,Crew1,YES +181446829,"$ 50,000 - $59,999",OWNER,Hispanic,Y,23,50-54,English,804 WILLOW DR,CA,BREA,ORANGE,92821,$0.01 - $0.50,SunOnly,FM,0,Internet,YES +181312697,"$ 40,000 - $49,999",RENTER,Hispanic,N,8,35-39,English,7371 SEABLUFF DR UNIT 105,CA,HUNTINGTON BEACH,ORANGE,92648,$0.01 - $0.50,Thu-Sun,MW,0,Partner,YES +150278891,"$125,000 - $149,999",OWNER,Italian,N,9,45-49,English,5405 W CRYSTAL LN,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,Thu-Sun,MW,0,CircAdm,NO +150201555,"$ 90,000 - $99,999",OWNER,Polish,N,1,30-34,English,44 SANTA AGATHA,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$2.00 - $2.99,SunOnly,FM,0,System,NO +180306986,"$ 70,000 - $79,999",RENTER,Chinese,N,1,75 years or more,Chinese,23442 EL TORO RD APT E318,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,ME,0,CustCall,NO +140304951,"$100,000 - $124,999",OWNER,"Khmer (Kampuchean, Cambodian)",N,45,75 years or more,English,15872 CALTECH CIR,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MM,0,Email,YES +160490600,"$400,000 - $499,999",OWNER,Scottish (Scotch),N,9,50-54,English,14 OLD COURSE DR,CA,NEWPORT BEACH,ORANGE,92660,$4.00 - $4.99,7Day,YW,0,System,NO +180307477,"$ 20,000 - $29,999",OWNER,Hispanic,N,8,30-34,Spanish,31426 LOS RIOS ST,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +180705617,"$ 90,000 - $99,999",OWNER,Zimbabwean,N,2,65-69,English,1041 POWELL DR,CA,PLACENTIA,ORANGE,92870,$10.00 - $10.99,7Day,MM,0,CustCall,NO +170217076,"$ 70,000 - $79,999",OWNER,Hispanic,N,44,55-59,Spanish,2806 N WESTWOOD AVE,CA,SANTA ANA,ORANGE,92706,$4.00 - $4.99,7Day,FM,6,CustCall,YES +180472045,"$ 80,000 - $89,999",RENTER,English,N,7,50-54,English,2579 N ORANGE OLIVE RD APT A,CA,ORANGE,ORANGE,92865,$0 - $0.01,SunOnly,YM,0,Partner,NO +140573723,"$100,000 - $124,999",OWNER,Polish,N,7,50-54,English,11891 AMETHYST ST,CA,GARDEN GROVE,ORANGE,92845,$1.00 - $1.99,Soooooo,FM,0,TeleOut,NO +180414921,"$ 80,000 - $89,999",OWNER,Hispanic,N,8,45-49,English,15803 RICHVALE DR,CA,WHITTIER,LOS ANGELES,90604,$4.00 - $4.99,SoooTFS,MW,0,TeleIn,NO +130530539,"$ 80,000 - $89,999",OWNER,Hispanic,N,18,25-29,Spanish,954 W BROOK ST,CA,SANTA ANA,ORANGE,92703,$2.00 - $2.99,Fri-Sun,FM,0,RetenIn,NO +170410717,"$ 40,000 - $49,999",OWNER,Irish,N,23,45-49,English,11912 FAIRCHILD ST,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +150086125,"$125,000 - $149,999",OWNER,Irish,N,34,65-69,English,28162 ORSOLA,CA,MISSION VIEJO,ORANGE,92692,$8.00 - $8.99,7Day,MW,15,VRU,YES +150313590,"$100,000 - $124,999",OWNER,Scottish (Scotch),Y,4,50-54,English,11251 WEMBLEY RD,CA,LOS ALAMITOS,ORANGE,90720,$4.00 - $4.99,7Day,YW,0,CustCall,NO +180342389,"$200,000 - $249,999",OWNER,Swedish,N,11,45-49,English,24821 STONEGATE LN,CA,LAGUNA NIGUEL,ORANGE,92677,$1.00 - $1.99,Thu-Sun,MW,0,Crew,NO +180571066,"Under $20,000",RENTER,Hispanic,Y,5,25-29,English,1535 MINNIE ST APT C,CA,SANTA ANA,ORANGE,92707,$7.00 - $7.99,7Day,FE,0,Kiosk,NO +150313016,"Under $20,000",OWNER,Vietnamese,N,5,50-54,Vietnamese,1662 W CHATEAU PL,CA,ANAHEIM,ORANGE,92802,$1.00 - $1.99,7Day,FM,0,TeleIn,NO +180442253,"$ 40,000 - $49,999",RENTER,Hispanic,N,6,45-49,English,31492 VIA LA SENDA,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$1.00 - $1.99,Thu-Sun,MM,0,Kiosk,NO +180631930,"$ 40,000 - $49,999",OWNER,Vietnamese,Y,10,40-44,English,12224 CALENDULA AVE,CA,FOUNTAIN VALLEY,ORANGE,92708,$1.00 - $1.99,SunOnly,MM,0,TeleIn,NO +180416491,"$400,000 - $499,999",OWNER,unknown,N,20,60-64,,6 INDIAN PIPE,CA,TRABUCO CANYON,ORANGE,92679,$0.51 - $0.99,7Day,MW,0,TeleIn,NO +180703330,"$ 20,000 - $29,999",OWNER,Vietnamese,N,7,70-74,Vietnamese,14602 GOLDERS GREEN LN,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,MW,0,Partner,NO +180540576,"Under $20,000",RENTER,Scottish (Scotch),N,2,30-34,English,716 MORTIMER ST,CA,SANTA ANA,ORANGE,92701,$0 - $0.01,SunOnly,FE,0,Partner,NO +140012680,"$ 30,000 - $39,999",OWNER,unknown,N,46,75 years or more,,3032 MULBERRY AVE,CA,FULLERTON,ORANGE,92835,$1.00 - $1.99,7Day,MM,2,Internet,YES +181256877,"$150,000 - $174,999",OWNER,German,N,40,70-74,English,8546 PHOENIX AVE,CA,FOUNTAIN VALLEY,ORANGE,92708,$3.00 - $3.99,Thu-Sun,MW,0,CustCall,NO +110025298,"$100,000 - $124,999",OWNER,English,Y,20,50-54,English,10442 COOK CIR,CA,HUNTINGTON BEACH,ORANGE,92646,$6.00 - $6.99,Thu-Sun,MW,0,TeleIn,NO +170382374,"$ 50,000 - $59,999",OWNER,Scottish (Scotch),N,48,75 years or more,English,14723 MANECITA DR,CA,LA MIRADA,LOS ANGELES,90638,$4.00 - $4.99,7Day,MW,0,CustCall,YES +181324121,"$ 60,000 - $69,999",OWNER,Hispanic,N,1,30-34,English,16036 SHARONHILL DR,CA,WHITTIER,LOS ANGELES,90604,$0.01 - $0.50,Thu-Sun,MM,0,Crew,NO +180208723,"$300,000 - $399,999",OWNER,German,N,23,65-69,English,4 CROSSKEY,CA,IRVINE,ORANGE,92620,$1.00 - $1.99,SunOnly,MW,0,TeleOut,NO +181551924,"Under $20,000",RENTER,Hispanic,N,6,30-34,English,710 S BEACH BLVD APT 203,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,SunOnly,YM,0,Partner,YES +180599348,"$125,000 - $149,999",OWNER,Hispanic,N,1,60-64,English,6155 ORANGEGATE DR,CA,YORBA LINDA,ORANGE,92886,$7.00 - $7.99,7Day,FW,0,Crew,NO +170612527,"Under $20,000",RENTER,Irish,N,1,30-34,English,1907 DEERPARK DR APT 547,CA,FULLERTON,ORANGE,92831,$1.00 - $1.99,SoooTFS,YM,0,TeleIn,NO +180454848,"$ 90,000 - $99,999",RENTER,English,N,7,25-29,English,250 S ROSE DR SPC 52,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +181541361,"Under $20,000",RENTER,Hispanic,N,1,24 years or less,English,45 W BORT ST APT 2,CA,LONG BEACH,LOS ANGELES,90805,$3.00 - $3.99,THU-SUN,FE,0,Kiosk1,YES +120394416,"$300,000 - $399,999",OWNER,Hispanic,Y,4,40-44,Spanish,2016 E CLIFPARK WAY,CA,ANAHEIM,ORANGE,92806,$2.00 - $2.99,7Day,FM,0,Kiosk,NO +170571325,"$125,000 - $149,999",OWNER,English,Y,21,50-54,English,910 REGGIO AISLE,CA,IRVINE,ORANGE,92606,$4.00 - $4.99,7Day,YM,0,CustCall,NO +170064357,"$ 60,000 - $69,999",RENTER,unknown,N,1,55-59,,256 CALLE ARAGON UNIT C,CA,LAGUNA WOODS,ORANGE,92637,$1.00 - $1.99,SoooTFST,ME,0,TeleIn,NO +180676251,"Under $20,000",RENTER,Hispanic,N,8,50-54,Spanish,10872 PALMA VISTA AVE APT 1,CA,GARDEN GROVE,ORANGE,92840,$0.01 - $0.50,SunOnly,FE,0,Crew,YES +140396826,"$100,000 - $124,999",OWNER,Jewish,N,38,75 years or more,English,18891 VIA MESSINA,CA,IRVINE,ORANGE,92603,$8.00 - $8.99,Thu-Sun,MW,0,TeleIn,YES +180662604,"$200,000 - $249,999",OWNER,Hispanic,N,13,45-49,Spanish,7623 E DIANE DR,CA,ORANGE,ORANGE,92869,$0 - $0.01,SunOnly,FW,0,Partner,NO +130587253,"Under $20,000",OWNER,Swedish,N,13,65-69,English,14851 JEFFREY RD SPC 244,CA,IRVINE,ORANGE,92618,$1.00 - $1.99,Thu-Sun,MM,0,TeleIn,NO +181398638,"$175,000 - $199,999",OWNER,Portuguese,N,30,55-59,English,25562 MACKENZIE ST,CA,LAGUNA HILLS,ORANGE,92653,$0 - $0.01,SunOnly,MW,0,Partner,NO +120571488,"$ 20,000 - $29,999",OWNER,Hispanic,N,21,65-69,English,505 N LA REINA ST,CA,ANAHEIM,ORANGE,92801,$4.00 - $4.99,7Day,MW,0,Crew,NO +180401599,"$125,000 - $149,999",OWNER,Italian,N,14,65-69,English,3660 VISTA GLEN CIR,CA,YORBA LINDA,ORANGE,92886,$2.00 - $2.99,7Day,MW,0,CustCall,NO +180670557,"$ 80,000 - $89,999",OWNER,Belgian,Y,12,40-44,English,3024 LANTANA AVE,CA,FULLERTON,ORANGE,92835,$0 - $0.01,SunOnly,FM,0,Partner,NO +170570191,"Under $20,000",RENTER,Welsh,N,11,55-59,English,9089 GRAND CIR,CA,CYPRESS,ORANGE,90630,$2.00 - $2.99,Thu-SunT,FM,0,TeleIn,NO +110286825,"$ 60,000 - $69,999",OWNER,Irish,N,21,70-74,English,7941 E HORIZON VIEW DR,CA,ANAHEIM,ORANGE,92808,$3.00 - $3.99,SunOnly,MM,0,CustCall,NO +180443627,"Under $20,000",RENTER,Hispanic,N,2,75 years or more,English,1832 S GREENVILLE ST,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,FM,0,Partner,YES +150234504,"$300,000 - $399,999",OWNER,Polish,N,32,75 years or more,English,1728 SUMMERWOOD DR,CA,FULLERTON,ORANGE,92833,$8.00 - $8.99,7Day,MW,0,DirectMl,YES +180755624,"$ 40,000 - $49,999",RENTER,Hispanic,N,4,25-29,Spanish,8051 WHITAKER ST APT 2,CA,BUENA PARK,ORANGE,90621,$0 - $0.01,SunOnly,FE,0,Partner,NO +150110030,"$ 40,000 - $49,999",OWNER,German,N,37,75 years or more,German,1124 STANFORD AVE,CA,FULLERTON,ORANGE,92831,$7.00 - $7.99,7Day,MM,1,VRU,YES +150245144,"$200,000 - $249,999",OWNER,Arab,N,2,24 years or less,Arabic,76 SARABANDE,CA,IRVINE,ORANGE,92620,$4.00 - $4.99,7Day,YM,0,CustCall,NO +120544629,"$ 70,000 - $79,999",RENTER,Chinese,N,1,25-29,English,8800 GARDEN GROVE BLVD APT 2,CA,GARDEN GROVE,ORANGE,92844,$4.00 - $4.99,7Day,FE,0,Crew,NO +181281226,"$100,000 - $124,999",OWNER,Korean,N,10,55-59,Korean,822 W GLENWOOD CIR,CA,FULLERTON,ORANGE,92832,$0.01 - $0.50,SunOnly,YW,0,TeleOut,NO +170121792,"$300,000 - $399,999",OWNER,unknown,N,18,45-49,,80 CONGRESS PL,CA,IRVINE,ORANGE,92602,$1.00 - $1.99,SunOnly,MW,0,Crew,NO +180237739,"$300,000 - $399,999",OWNER,Polish,N,10,55-59,English,24686 EMBAJADORES LN,CA,MISSION VIEJO,ORANGE,92691,$1.00 - $1.99,SunOnly,MW,0,CustCall,NO +110521353,"$ 60,000 - $69,999",OWNER,unknown,N,27,70-74,,537 S GROVE AVE,CA,ANAHEIM,ORANGE,92805,$7.00 - $7.99,7Day,MM,0,TeleIn,NO +180320167,"$ 40,000 - $49,999",OWNER,Hispanic,N,11,45-49,Spanish,2130 W 9TH ST,CA,SANTA ANA,ORANGE,92703,$2.00 - $2.99,Thu-Sun,FM,0,System,NO +130134780,"$ 60,000 - $69,999",RENTER,Scottish (Scotch),N,2,55-59,English,4841 HEIL AVE APT 82,CA,HUNTINGTON BEACH,ORANGE,92649,$0.51 - $0.99,Thu-Sun,YM,0,Crew,NO +180763197,"$125,000 - $149,999",OWNER,Chinese,N,6,50-54,English,2106 SEAVIEW DR,CA,FULLERTON,ORANGE,92833,$0 - $0.01,SunOnly,MW,0,Partner,NO +181545677,"$ 60,000 - $69,999",OWNER,Irish,N,21,75 years or more,English,376 AVENIDA CASTILLA UNIT C,CA,LAGUNA WOODS,ORANGE,92637,$3.00 - $3.99,7Day,ME,0,TeleOut,YES +150592449,"$150,000 - $174,999",OWNER,Norwegian,N,10,55-59,English,19132 MAGNOLIA ST APT B15,CA,HUNTINGTON BEACH,ORANGE,92646,$4.00 - $4.99,7Day,YM,0,Crew,NO +160610671,"$ 90,000 - $99,999",RENTER,Scottish (Scotch),N,7,60-64,English,5200 IRVINE BLVD SPC 292,CA,IRVINE,ORANGE,92620,$1.00 - $1.99,SunOnly,MM,0,CustCall,NO +181535557,"$ 40,000 - $49,999",RENTER,Vietnamese,N,5,30-34,English,11582 PALOMA AVE,CA,GARDEN GROVE,ORANGE,92843,$3.00 - $3.99,THU-SUN,MM,0,Crew1,YES +180608237,"$ 40,000 - $49,999",OWNER,Hispanic,N,32,55-59,Spanish,551 N MCPHERSON ST,CA,LA HABRA,ORANGE,90631,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180603494,"$ 30,000 - $39,999",RENTER,unknown,N,6,45-49,,3105 E MAPLE AVE APT C,CA,ORANGE,ORANGE,92869,$4.00 - $4.99,7Day,YM,0,Kiosk,NO +150174395,"$ 50,000 - $59,999",OWNER,Vietnamese,Y,19,55-59,Vietnamese,8002 IMPERIAL AVE,CA,GARDEN GROVE,ORANGE,92844,$1.00 - $1.99,Thu-Sun,MM,0,TeleIn,NO +130417419,"$200,000 - $249,999",OWNER,Danish,N,23,50-54,English,24222 VERDE ST,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,SatSun,MW,0,CustCall,NO +181510598,"$150,000 - $174,999",OWNER,Korean,N,13,45-49,Korean,22475 CAMINITO GRANDE,CA,LAGUNA HILLS,ORANGE,92653,$0.01 - $0.50,SunOnly,YW,0,Internet,YES +120119092,"$100,000 - $124,999",OWNER,English,N,4,30-34,English,32122 VIA ALICIA,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$2.00 - $2.99,Soooooo,FM,0,TeleIn,NO +180316182,"$ 90,000 - $99,999",OWNER,German,N,9,50-54,English,2887 ECHO SPRINGS DR,CA,CORONA,RIVERSIDE,92883,$1.00 - $1.99,SunOnly,YM,0,Crew,NO +181398774,"$ 80,000 - $89,999",RENTER,English,N,8,40-44,English,26140 LAGUNA CT APT 111,CA,ALISO VIEJO,ORANGE,92656,$0.01 - $0.50,SunOnly,YM,0,Partner,YES +150211649,"$ 20,000 - $29,999",OWNER,German,N,1,60-64,English,3044 VIA SERENA S UNIT A,CA,LAGUNA WOODS,ORANGE,92637,$2.00 - $2.99,7DayT,MM,0,TeleIn,NO +140329157,"$ 80,000 - $89,999",OWNER,Vietnamese,Y,20,50-54,Vietnamese,3336 GOODMAN DR,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,SunOnly,FM,0,RetenIn,NO +150451840,"$ 30,000 - $39,999",OWNER,Jewish,N,11,75 years or more,English,2333 AVENIDA SEVILLA APT D,CA,LAGUNA WOODS,ORANGE,92637,$3.00 - $3.99,Thu-Sun,MM,0,CustCall,NO +181201497,"$125,000 - $149,999",OWNER,Jewish,N,34,70-74,English,17322 ROB ROY CIR,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,SunOnly,MW,0,Partner,YES +180756039,"$ 70,000 - $79,999",OWNER,German,Y,5,60-64,English,111 SHELL DR,CA,SAN CLEMENTE,ORANGE,92672,$4.00 - $4.99,7Day,MM,5,Internet,NO +180203400,"$150,000 - $174,999",OWNER,Hispanic,N,13,55-59,Spanish,4051 BELVEDERE ST,CA,IRVINE,ORANGE,92604,$4.00 - $4.99,7Day,MW,0,SCinsert,NO +120475616,"$ 70,000 - $79,999",OWNER,Hispanic,Y,24,75 years or more,Spanish,1266 E BROADWAY,CA,ANAHEIM,ORANGE,92805,$2.00 - $2.99,Thu-Sun,MM,0,TeleOut,NO +180396311,"$ 70,000 - $79,999",OWNER,unknown,N,18,45-49,,5761 MARSHALL DR,CA,HUNTINGTON BEACH,ORANGE,92649,$1.00 - $1.99,SunOnly,FM,0,Crew,NO +180318869,"$ 50,000 - $59,999",RENTER,Hispanic,N,6,40-44,Spanish,2024 ORANGE AVE,CA,SANTA ANA,ORANGE,92707,$0.51 - $0.99,7Day,FE,0,TeleIn,NO +130467791,"$300,000 - $399,999",OWNER,English,N,32,65-69,English,21881 SEACREST LN,CA,HUNTINGTON BEACH,ORANGE,92646,$3.00 - $3.99,SunOnly,MW,0,CustCall,NO +140243260,"$ 70,000 - $79,999",OWNER,German,Y,31,60-64,English,21365 LINDSAY DR,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,SunOnly,FM,0,System,NO +181333667,"$150,000 - $174,999",OWNER,Irish,N,13,55-59,English,930 GOLDENROD DR,CA,COSTA MESA,ORANGE,92626,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180462918,"$ 40,000 - $49,999",OWNER,English,N,7,45-49,English,24366 EL PILAR,CA,LAGUNA NIGUEL,ORANGE,92677,$0 - $0.01,SunOnly,FE,0,Partner,NO +170162126,"$ 90,000 - $99,999",OWNER,unknown,N,50,75 years or more,,2840 E HOOVER AVE,CA,ORANGE,ORANGE,92867,$9.00 - $9.99,7Day,MM,0,CustCall,NO +150352132,"$ 90,000 - $99,999",OWNER,French,Y,23,30-34,English,14752 RIDGEBORO PL,CA,TUSTIN,ORANGE,92780,$7.00 - $7.99,7Day,MW,0,Kiosk,NO +180532381,"$300,000 - $399,999",OWNER,Italian,N,9,55-59,English,22 FOLIATE WAY,CA,LADERA RANCH,ORANGE,92694,$0.51 - $0.99,Thu-Sun,FW,0,Crew,NO +130207342,"$125,000 - $149,999",OWNER,English,Y,39,75 years or more,English,22061 IRONBARK LN,CA,LAKE FOREST,ORANGE,92630,$3.00 - $3.99,7Day,MW,0,TeleIn,YES +110198695,"$125,000 - $149,999",OWNER,English,N,44,75 years or more,English,23862 VIA EL ROCIO,CA,MISSION VIEJO,ORANGE,92691,$7.00 - $7.99,7Day,MW,0,CustCall,NO +180192971,"$ 50,000 - $59,999",OWNER,English,N,36,65-69,English,8145 WATERSPRAY DR,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,SunOnlyT,MW,0,TeleIn,NO +140320358,"$ 80,000 - $89,999",OWNER,English,N,30,60-64,English,3 CALABRIA,CA,IRVINE,ORANGE,92620,$2.00 - $2.99,Thu-Sun,MW,0,CustCall,NO +180387568,"$ 60,000 - $69,999",OWNER,Vietnamese,N,13,60-64,Vietnamese,520 S HARVEST LN,CA,ORANGE,ORANGE,92866,$0 - $0.01,SunOnly,YM,0,Partner,NO +130607686,"$ 90,000 - $99,999",OWNER,French,N,15,75 years or more,English,2412 E ORANGEVIEW LN,CA,ORANGE,ORANGE,92867,$2.00 - $2.99,7Day,MM,0,DirectMl,YES +130274269,"$300,000 - $399,999",OWNER,English,N,24,55-59,English,5632 COSTA MARITIMA,CA,SAN CLEMENTE,ORANGE,92673,$1.00 - $1.99,Thu-Sun,YW,0,DirectMl,NO +180632935,"$ 40,000 - $49,999",OWNER,Hispanic,N,20,24 years or less,Spanish,5386 NELSON ST,CA,CYPRESS,ORANGE,90630,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +150280732,"$100,000 - $124,999",OWNER,Hispanic,Y,13,50-54,English,82 RUE FONTAINE,CA,FOOTHILL RANCH,ORANGE,92610,$0.01 - $0.50,SunOnly,FW,0,TeleOut,NO +181278325,"$ 20,000 - $29,999",RENTER,Filipino (Philippine),N,15,30-34,English,7132 FENWAY DR APT 1,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,FE,0,Partner,NO +130381257,"$ 20,000 - $29,999",OWNER,Jewish,Y,9,45-49,Hebrew,11649 TIDWELL AVE,CA,WHITTIER,LOS ANGELES,90604,$2.00 - $2.99,SatSun,MM,0,DirectMl,NO +180593589,"Under $20,000",RENTER,Hispanic,N,6,24 years or less,Spanish,13151 YORBA AVE APT 100,CA,CHINO,SAN BERNARDINO,91710,$4.00 - $4.99,7Day,YE,0,Crew,NO +180695926,"$200,000 - $249,999",OWNER,Vietnamese,N,11,35-39,Vietnamese,13922 FLINT CIR,CA,CORONA,RIVERSIDE,92880,$3.00 - $3.99,7Day,YW,0,Partner,NO +181288808,"$ 30,000 - $39,999",OWNER,Hispanic,Y,21,40-44,Spanish,26472 CALLE SAN LUIS,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$4.00 - $4.99,7Day,FE,0,Crew,NO +180264067,"$ 70,000 - $79,999",OWNER,Hispanic,Y,2,30-34,Spanish,17591 BUENA VISTA AVE,CA,YORBA LINDA,ORANGE,92886,$0 - $0.01,SoooTFS,YW,0,CircAdm,NO +120191451,"$ 90,000 - $99,999",OWNER,English,N,23,60-64,English,29 CALLE MARIA,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$2.00 - $2.99,SatSun,MW,0,CustCall,NO +181303812,"$ 40,000 - $49,999",OWNER,Welsh,N,6,65-69,English,11629 168TH ST,CA,ARTESIA,LOS ANGELES,90701,$0 - $0.01,7Day,FM,0,Partner,YES +130045432,"$125,000 - $149,999",OWNER,Dutch,Y,25,55-59,English,28822 WOODSPRING CIR,CA,TRABUCO CANYON,ORANGE,92679,$0.01 - $0.50,Thu-Sun,FM,1,SCinsert,NO +181180739,"$ 20,000 - $29,999",OWNER,English,N,39,75 years or more,English,22986 VIA CEREZA,CA,MISSION VIEJO,ORANGE,92691,$0 - $0.01,SunOnly,FM,0,Partner,NO +130292602,"Under $20,000",RENTER,Hispanic,N,5,40-44,English,1901 N BUSH ST APT 7,CA,SANTA ANA,ORANGE,92706,$4.00 - $4.99,7Day,FE,0,TeleIn,NO +181396184,"$125,000 - $149,999",OWNER,English,Y,11,40-44,English,517 MARGUERITE AVE,CA,CORONA DEL MAR,ORANGE,92625,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180422431,"$ 80,000 - $89,999",OWNER,Hispanic,Y,20,50-54,English,3834 E 15TH ST,CA,LONG BEACH,LOS ANGELES,90804,$0 - $0.01,SunOnly,YM,0,CircAdm,NO +181181729,"$ 50,000 - $59,999",RENTER,Italian,Y,1,40-44,English,17062 GREEN LN APT 60,CA,HUNTINGTON BEACH,ORANGE,92649,$1.00 - $1.99,7Day,YM,0,Internet,NO +180695486,"Under $20,000",OWNER,Hispanic,N,32,65-69,Spanish,1134 W PINE ST,CA,SANTA ANA,ORANGE,92703,$1.00 - $1.99,SunOnly,FM,0,Partner,NO +181362638,"Under $20,000",OWNER,English,N,3,30-34,English,2130 W LA PALMA AVE,CA,ANAHEIM,ORANGE,92801,$4.00 - $4.99,7Day,FM,0,Crew,NO +181541497,"$ 40,000 - $49,999",OWNER,Hispanic,N,15,45-49,Spanish,410 W BERRY AVE,CA,ANAHEIM,ORANGE,92805,$3.00 - $3.99,7DAY,FE,0,Crew1,YES +130189884,"$100,000 - $124,999",OWNER,Vietnamese,N,9,40-44,Vietnamese,10202 WEMBLEY CIR,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,7Day,FM,0,CustCall,NO +180158530,"$400,000 - $499,999",OWNER,German,N,9,55-59,English,29 LEWISTON CT,CA,LADERA RANCH,ORANGE,92694,$5.00 - $5.99,Thu-Sun,FW,0,TeleIn,YES +181448565,"$ 50,000 - $59,999",OWNER,Hispanic,N,10,60-64,Spanish,302 W GREENWOOD AVE,CA,LA HABRA,ORANGE,90631,$3.00 - $3.99,7Day,FE,0,Crew,NO +150593471,"$400,000 - $499,999",OWNER,Dutch,Y,20,60-64,English,1122 HUNTRIDGE RD,CA,SANTA ANA,ORANGE,92705,$2.00 - $2.99,Thu-Sun,FW,0,TeleIn,NO +181528468,"$ 50,000 - $59,999",RENTER,English,N,2,25-29,English,362 REDONDO AVE APT 3,CA,LONG BEACH,LOS ANGELES,90814,$0.01 - $0.50,SunOnly,YM,0,Crew1,YES +181481271,"$125,000 - $149,999",OWNER,Irish,N,7,60-64,English,1631 PEPPER WOOD CIR,CA,ORANGE,ORANGE,92869,$0.01 - $0.50,SunOnly,MW,0,PARTNER,YES +140562425,"$ 60,000 - $69,999",OWNER,Danish,N,3,35-39,English,12602 ELIZABETH WAY,CA,TUSTIN,ORANGE,92780,$1.00 - $1.99,SunOnly,FW,0,CustCall,NO +130278735,"$125,000 - $149,999",OWNER,Dutch,Y,39,65-69,English,6651 RED COACH DR,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,7Day,MW,94,Partner,YES +110261562,"$ 60,000 - $69,999",OWNER,English,N,6,45-49,English,11722 WASCO RD,CA,GARDEN GROVE,ORANGE,92841,$4.00 - $4.99,7Day,FM,0,CustCall,NO +180755716,"$200,000 - $249,999",OWNER,French,Y,19,45-49,English,1066 EL DORADO DR,CA,FULLERTON,ORANGE,92835,$4.00 - $4.99,7Day,MM,0,Partner,NO +110607628,"$100,000 - $124,999",OWNER,French,N,24,55-59,English,8201 MARSEILLE DR,CA,HUNTINGTON BEACH,ORANGE,92647,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +180519189,"$ 20,000 - $29,999",OWNER,Hispanic,Y,17,45-49,Spanish,1231 S PARTON ST,CA,SANTA ANA,ORANGE,92707,$0 - $0.01,SunOnly,FM,0,Partner,YES +150559591,"$ 70,000 - $79,999",OWNER,Hispanic,N,15,55-59,Spanish,11912 TIMMY LN,CA,GARDEN GROVE,ORANGE,92840,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180618927,"$ 20,000 - $29,999",OWNER,unknown,Y,9,65-69,,1308 CYPRESS AVE,CA,SANTA ANA,ORANGE,92707,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +180753240,"$100,000 - $124,999",RENTER,Hispanic,Y,17,45-49,Spanish,3126 W 1ST ST SPC 38,CA,SANTA ANA,ORANGE,92703,$0 - $0.01,SunOnly,FE,0,Partner,NO +180589237,"$ 30,000 - $39,999",OWNER,Hispanic,N,22,55-59,Spanish,31511 CALLE LA PURISIMA,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +180234833,"$100,000 - $124,999",OWNER,Persian,N,5,35-39,English,15391 HANOVER LN,CA,HUNTINGTON BEACH,ORANGE,92647,$1.00 - $1.99,SunOnly,MW,0,DirectMl,NO +120547933,"$175,000 - $199,999",OWNER,Irish,N,29,75 years or more,English,36 WATERWAY,CA,IRVINE,ORANGE,92614,$3.00 - $3.99,SunOnly,MM,0,CustCall,NO +180475163,"$ 50,000 - $59,999",OWNER,Scottish (Scotch),N,12,70-74,English,3464 SENASAC AVE,CA,LONG BEACH,LOS ANGELES,90808,$0 - $0.01,SunOnly,MM,0,CircAdm,YES +150047415,"$150,000 - $174,999",OWNER,German,Y,6,40-44,English,211 DAHLIA AVE,CA,CORONA DEL MAR,ORANGE,92625,$1.00 - $1.99,Fri-Sun,MW,0,DirectMl,NO +120230875,"$ 80,000 - $89,999",RENTER,Hispanic,Y,4,25-29,Spanish,989 VICTORIA ST APT G2,CA,COSTA MESA,ORANGE,92627,$1.00 - $1.99,7Day,YM,0,DirectMl,NO +180278176,"$ 30,000 - $39,999",RENTER,Hispanic,N,6,24 years or less,English,2101 S PACIFIC AVE UNIT 70,CA,SANTA ANA,ORANGE,92704,$0.51 - $0.99,SunOnly,FE,0,TeleOut,NO +180178331,"$100,000 - $124,999",OWNER,Scottish (Scotch),Y,7,60-64,English,14615 HAWES ST,CA,WHITTIER,LOS ANGELES,90604,$1.00 - $1.99,SunOnly,YM,0,Kiosk,NO +180318111,"$ 70,000 - $79,999",OWNER,English,N,7,50-54,English,14642 ORANGE ACRES LN,CA,IRVINE,ORANGE,92604,$2.00 - $2.99,SunOnly,MW,0,Kiosk,NO +181204306,"$175,000 - $199,999",OWNER,Hispanic,N,5,40-44,Spanish,3014 GERANIUM WAY,CA,CORONA,RIVERSIDE,92881,$1.00 - $1.99,SunOnly,YW,0,Internet,YES +180598822,"$ 50,000 - $59,999",OWNER,Scottish (Scotch),N,20,45-49,English,21075 CAROB LN,CA,MISSION VIEJO,ORANGE,92691,$2.00 - $2.99,SunOnly,MW,0,Crew,NO +150369275,"$ 20,000 - $29,999",RENTER,Hispanic,N,3,55-59,English,2300 FAIRVIEW RD APT J105,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,SatSun,YM,0,Crew,NO +130238772,"$ 50,000 - $59,999",RENTER,English,N,2,30-34,English,106 NORDINA ST,CA,NEWPORT BEACH,ORANGE,92663,$4.00 - $4.99,7Day,YM,0,DirectMl,NO +180187098,"$ 20,000 - $29,999",OWNER,Hispanic,N,19,60-64,Spanish,3600 W VALENCIA DR,CA,FULLERTON,ORANGE,92833,$2.00 - $2.99,7Day,FE,0,Kiosk,NO +181432997,"$ 20,000 - $29,999",RENTER,Hispanic,N,1,25-29,Spanish,221 E VALENCIA DR APT C,CA,FULLERTON,ORANGE,92832,$0.01 - $0.50,7Day,YM,0,Crew,YES +130012959,"$ 50,000 - $59,999",OWNER,Hispanic,N,1,40-44,English,2320 N FLOWER ST,CA,SANTA ANA,ORANGE,92706,$2.00 - $2.99,SoooooS,MW,0,TeleIn,NO +180762525,"$ 50,000 - $59,999",OWNER,Hispanic,Y,4,35-39,Spanish,7415 EL CEDRO CIR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,FM,0,Partner,NO +160004499,"$125,000 - $149,999",OWNER,Dutch,N,30,55-59,English,2133 W FIR AVE,CA,ANAHEIM,ORANGE,92801,$2.00 - $2.99,7DayT,MW,0,TeleIn,NO +180258901,"$ 40,000 - $49,999",RENTER,Hispanic,N,1,55-59,English,30041 TESSIER APT 78,CA,LAGUNA NIGUEL,ORANGE,92677,$1.00 - $1.99,Thu-Sun,YM,0,Crew,NO +180476813,"Under $20,000",RENTER,Vietnamese,N,8,50-54,Vietnamese,7862 MACDONALD DR,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,SunOnly,MM,0,Partner,NO +181303432,"$ 70,000 - $79,999",OWNER,Hispanic,N,16,50-54,English,630 S KNOTT AVE APT 67,CA,ANAHEIM,ORANGE,92804,$0 - $0.01,SunOnly,MM,0,Partner,NO +120214852,"Under $20,000",OWNER,English,N,52,75 years or more,English,414 E 22ND ST,CA,SANTA ANA,ORANGE,92706,$3.00 - $3.99,7Day,FE,0,TeleIn,YES +130393899,"$200,000 - $249,999",OWNER,Japanese,N,19,60-64,English,20670 VISTA DEL SOL,CA,YORBA LINDA,ORANGE,92886,$0 - $0.01,SunOnly,MW,0,System,YES +160160613,"$500,000 Plus",OWNER,Hispanic,N,22,55-59,English,2019 N LAKE MEAD CIR,CA,ORANGE,ORANGE,92867,$2.00 - $2.99,7Day,MW,0,RetenIn,NO +181450002,"$ 50,000 - $59,999",OWNER,Italian,N,1,25-29,Italian,331 S GREENGROVE DR,CA,ORANGE,ORANGE,92866,$0.01 - $0.50,SunOnly,MW,0,Crew,YES +180378744,"$ 60,000 - $69,999",OWNER,English,N,3,30-34,English,4 HEADLAND PL,CA,ALISO VIEJO,ORANGE,92656,$1.00 - $1.99,SunOnly,FM,0,Crew,NO +180462350,"$100,000 - $124,999",OWNER,Hispanic,N,23,70-74,Spanish,1020 N BAXTER ST,CA,ANAHEIM,ORANGE,92805,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +170365686,"$400,000 - $499,999",OWNER,French,N,32,70-74,English,10682 HASTINGS DR,CA,VILLA PARK,ORANGE,92861,$5.00 - $5.99,7Day,FM,0,RetenIn,NO +140267949,"$300,000 - $399,999",OWNER,Irish,N,18,65-69,English,5125 COSTA RUSTICO,CA,SAN CLEMENTE,ORANGE,92673,$1.00 - $1.99,7Day,FW,0,TeleOut,NO +180480873,"$ 60,000 - $69,999",OWNER,Vietnamese,N,17,50-54,Vietnamese,14381 PLEASANT ST,CA,GARDEN GROVE,ORANGE,92843,$3.00 - $3.99,7Day,MM,0,TeleIn,NO +140357948,"$300,000 - $399,999",OWNER,German,N,19,75 years or more,German,1519 SANTIAGO DR,CA,NEWPORT BEACH,ORANGE,92660,$10.00 - $10.99,7Day,MW,0,CustCall,YES +170305808,"$ 20,000 - $29,999",RENTER,Scottish (Scotch),N,1,55-59,English,2164 W CHERRYWOOD LN,CA,ANAHEIM,ORANGE,92804,$4.00 - $4.99,7Day,MW,0,TeleOut,NO +180369948,"Under $20,000",RENTER,Hispanic,N,1,24 years or less,Spanish,838 N VAN NESS AVE,CA,SANTA ANA,ORANGE,92701,$0 - $0.01,SunOnly,MM,0,Partner,NO +181199581,"$ 50,000 - $59,999",OWNER,Chinese,Y,8,35-39,English,2306 W HARVARD ST,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,SunOnly,YM,0,Internet,NO +181337509,"$ 90,000 - $99,999",OWNER,English,N,33,70-74,English,5751 VALLECITO DR,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,FM,0,Partner,NO +130116699,"$ 80,000 - $89,999",OWNER,Hispanic,Y,6,45-49,Spanish,5341 SANTA MONICA AVE,CA,GARDEN GROVE,ORANGE,92845,$4.00 - $4.99,7Day,MW,0,CustCall,NO +181483291,"$100,000 - $124,999",OWNER,Hispanic,Y,24,40-44,Spanish,925 S HAYWARD ST,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,SunOnly,YM,0,Partner,YES +181401113,"$100,000 - $124,999",OWNER,English,N,20,70-74,English,2 MONDRIAN,CA,ALISO VIEJO,ORANGE,92656,$0 - $0.01,SunOnly,YM,0,Partner,NO +110253064,"$ 40,000 - $49,999",OWNER,English,N,28,65-69,English,3349 AMY DR,CA,CORONA,RIVERSIDE,92882,$9.00 - $9.99,7Day,FW,0,SCinsert,NO +130382447,"Under $20,000",OWNER,Scottish (Scotch),N,15,65-69,English,17162 ELM LN,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,SunOnly,YM,0,Partner,NO +110173845,"$ 30,000 - $39,999",OWNER,Scottish (Scotch),N,1,24 years or less,English,807 S OLA VIS,CA,SAN CLEMENTE,ORANGE,92672,$2.00 - $2.99,SooooooT,YW,0,CustCall,NO +180480233,"$300,000 - $399,999",OWNER,English,Y,22,50-54,English,13 ALATO DR,CA,MISSION VIEJO,ORANGE,92692,$0.01 - $0.50,SunOnly,FW,37,RetenIn,YES +180706415,"$ 90,000 - $99,999",OWNER,unknown,N,3,24 years or less,,259 WICKER,CA,IRVINE,ORANGE,92618,$0.01 - $0.50,7Day,YW,0,Partner,NO +180659896,"$ 50,000 - $59,999",RENTER,Hispanic,N,6,45-49,Spanish,3340 E COLLINS AVE APT 18,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,Thu-Sun,MM,0,Partner,NO +130429578,"$100,000 - $124,999",OWNER,Hispanic,Y,36,70-74,Spanish,525 E ADAMS ST,CA,SANTA ANA,ORANGE,92707,$4.00 - $4.99,7Day,YM,0,TeleIn,NO +180551893,"$ 20,000 - $29,999",RENTER,unknown,N,1,55-59,,875 RIVER RD UNIT 324,CA,CORONA,RIVERSIDE,92880,$0 - $0.01,SunOnly,MM,0,Partner,NO +180485928,"$ 70,000 - $79,999",OWNER,Dutch,N,16,75 years or more,English,14702 DONCASTER RD,CA,IRVINE,ORANGE,92604,$1.00 - $1.99,Thu-Sun,MM,0,Crew,NO +180430012,"$ 20,000 - $29,999",RENTER,Hispanic,N,1,24 years or less,English,909 W WALNUT ST,CA,SANTA ANA,ORANGE,92703,$1.00 - $1.99,Thu-Sun,FE,0,Kiosk,NO +160221114,"$100,000 - $124,999",OWNER,Chinese,Y,21,75 years or more,Chinese,16015 MOUNT HICKS ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$1.00 - $1.99,7Day,MM,1,DirectMl,YES +180327255,"$ 30,000 - $39,999",RENTER,Hispanic,N,2,55-59,English,26146 AVENIDA CALIDAD,CA,MISSION VIEJO,ORANGE,92691,$1.00 - $1.99,Thu-Sun,FM,0,Crew,NO +150567970,"$200,000 - $249,999",RENTER,Irish,N,1,25-29,English,70 SKLAR ST APT 205,CA,LADERA RANCH,ORANGE,92694,$1.00 - $1.99,SunOnly,FM,0,Crew,NO +170193297,"Under $20,000",OWNER,unknown,N,28,75 years or more,,13140 DEL MONTE DR APT 51F,CA,SEAL BEACH,ORANGE,90740,$1.00 - $1.99,7Day,ME,0,Email,NO +170283730,"$400,000 - $499,999",OWNER,Welsh,N,24,50-54,English,17646 MANCHESTER AVE,CA,IRVINE,ORANGE,92614,$4.00 - $4.99,7Day,MW,0,Crew,NO +180418021,"$400,000 - $499,999",OWNER,English,Y,16,50-54,English,1 EASTWIND DR,CA,BUENA PARK,ORANGE,90621,$2.00 - $2.99,Thu-Sun,FW,0,TeleIn,NO +181295900,"$125,000 - $149,999",OWNER,French,N,14,50-54,English,821 MARIPOSA ST,CA,LA HABRA,ORANGE,90631,$0 - $0.01,SunOnly,YM,0,Partner,NO +180753951,"$500,000 Plus",OWNER,unknown,N,7,60-64,,5861 HUNTLEY AVE,CA,GARDEN GROVE,ORANGE,92845,$0 - $0.01,SunOnly,MW,0,Partner,NO +180346890,"$ 20,000 - $29,999",OWNER,Vietnamese,N,24,55-59,Vietnamese,12072 PEARCE AVE,CA,GARDEN GROVE,ORANGE,92843,$0 - $0.01,SunOnly,MW,0,Partner,NO +180351996,"$ 80,000 - $89,999",OWNER,Hispanic,N,30,75 years or more,Spanish,1325 N LOTUS PL,CA,ANAHEIM,ORANGE,92801,$0.51 - $0.99,SunOnly,FM,0,TeleIn,NO +181256523,"$100,000 - $124,999",RENTER,English,Y,1,40-44,English,1779 W GREENLEAF AVE,CA,ANAHEIM,ORANGE,92801,$3.00 - $3.99,SoooTFS,FM,0,Crew,NO +181531933,"$100,000 - $124,999",RENTER,Hispanic,Y,2,35-39,English,43 SCARLET BLOOM,CA,IRVINE,ORANGE,92618,$3.00 - $3.99,7Day,YW,0,TeleOut,YES +110494375,"$ 60,000 - $69,999",RENTER,Japanese,N,8,60-64,English,5321 LA PALMA AVE,CA,LA PALMA,ORANGE,90623,$5.00 - $5.99,7Day,,0,CustCall,NO +180378811,"$ 60,000 - $69,999",RENTER,Hispanic,N,1,35-39,Spanish,3591 W GREENTREE CIR UNIT F,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,SunOnly,YM,0,Crew,NO +180440707,"$100,000 - $124,999",OWNER,Vietnamese,N,21,45-49,English,10292 TENNYSON AVE,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,Thu-Sun,MW,0,Crew,NO +181282061,"$ 30,000 - $39,999",OWNER,unknown,Y,29,55-59,,6850 BELHURST AVE,CA,LONG BEACH,LOS ANGELES,90805,$4.00 - $4.99,7Day,MW,0,Crew,NO +150439646,"Under $20,000",RENTER,Hispanic,N,1,75 years or more,Spanish,2173 VIA MARIPOSA E UNIT D,CA,LAGUNA WOODS,ORANGE,92637,$2.00 - $2.99,SunOnly,ME,0,VRU,NO +160028705,"$ 50,000 - $59,999",OWNER,Hispanic,N,4,75 years or more,English,1051 CAMDEN DR,CA,PLACENTIA,ORANGE,92870,$4.00 - $4.99,7Day,MM,1,CustCall,YES +140563860,"$ 40,000 - $49,999",RENTER,English,N,10,45-49,English,285 DURANZO AISLE,CA,IRVINE,ORANGE,92606,$1.00 - $1.99,7Day,YM,0,Crew,NO +110544250,"Under $20,000",RENTER,Hispanic,N,9,50-54,Spanish,9341 CELLINI AVE APT B,CA,GARDEN GROVE,ORANGE,92841,$4.00 - $4.99,7Day,YM,0,Crew,NO +150350809,"$150,000 - $174,999",OWNER,English,Y,15,45-49,English,6 ARIZONA,CA,IRVINE,ORANGE,92606,$1.00 - $1.99,SunOnly,MW,0,RetenIn,NO +180334563,"$500,000 Plus",OWNER,Chinese,N,7,50-54,English,22712 COTTONWOOD,CA,MISSION VIEJO,ORANGE,92692,$10.00 - $10.99,7Day,YW,0,Internet,YES +120181273,"$ 40,000 - $49,999",OWNER,English,N,7,50-54,English,341 MOLOKAI DR,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,SatSun,FM,0,OutMedia,NO +180555825,"$ 50,000 - $59,999",RENTER,Hispanic,N,7,30-34,English,15425 GOLDENWEST ST APT 27,CA,HUNTINGTON BEACH,ORANGE,92647,$1.00 - $1.99,SunOnly,ME,0,Crew,NO +181551656,"$ 60,000 - $69,999",RENTER,Indian,N,20,60-64,Hindi,7545 JACKSON WAY APT 2,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,YM,0,Crew1,YES +130153470,"$150,000 - $174,999",OWNER,unknown,N,48,60-64,,417 AVOCADO AVE,CA,CORONA DEL MAR,ORANGE,92625,$2.00 - $2.99,7Day,MW,0,CustCall,YES +180360518,"$100,000 - $124,999",OWNER,Polish,N,1,50-54,English,251 AVENIDA LA CUESTA,CA,SAN CLEMENTE,ORANGE,92672,$0 - $0.01,SunOnly,MM,0,Partner,NO +181266543,"Under $20,000",RENTER,Italian,N,6,65-69,English,14173 WINDJAMMER LN,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,7Day,FM,0,Partner,YES +180177994,"$ 30,000 - $39,999",RENTER,English,N,3,50-54,English,501 E KATELLA AVE APT 3D,CA,ORANGE,ORANGE,92867,$2.00 - $2.99,7Day,YE,0,Kiosk,NO +181185822,"$ 60,000 - $69,999",OWNER,unknown,N,11,50-54,,1051 QUARRY ST,CA,CORONA,RIVERSIDE,92879,$0 - $0.01,SunOnly,FE,0,Partner,NO +180203697,"Under $20,000",RENTER,Hispanic,N,6,25-29,Spanish,15811 PASADENA AVE APT 15,CA,TUSTIN,ORANGE,92780,$0.51 - $0.99,SunOnly,FE,0,System,NO +110303352,"$400,000 - $499,999",OWNER,English,Y,2,50-54,English,18 ROUNDTREE CT,CA,ALISO VIEJO,ORANGE,92656,$1.00 - $1.99,SunOnly,YW,0,VRU,NO +180451479,"$ 20,000 - $29,999",OWNER,Scottish (Scotch),N,13,65-69,English,3000 MADISON AVE APT A2,CA,FULLERTON,ORANGE,92831,$1.00 - $1.99,SunOnly,YM,0,Internet,NO +180548909,"$ 20,000 - $29,999",RENTER,Scottish (Scotch),N,5,50-54,English,5600 ORANGETHORPE AVE APT 3407,CA,LA PALMA,ORANGE,90623,$2.00 - $2.99,SunOnly,YM,0,TeleIn,NO +160275742,"Under $20,000",RENTER,Hispanic,N,6,50-54,Spanish,1192 MITCHELL AVE APT 24,CA,TUSTIN,ORANGE,92780,$2.00 - $2.99,7Day,FE,0,TeleIn,NO +150029740,"$ 20,000 - $29,999",OWNER,Japanese,N,34,55-59,English,6201 MARCELLA WAY,CA,BUENA PARK,ORANGE,90620,$3.00 - $3.99,SunOnly,MM,0,VRU,YES +181311991,"$400,000 - $499,999",OWNER,Irish,N,19,45-49,English,533 CATALINA DR,CA,NEWPORT BEACH,ORANGE,92663,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180721014,"$ 50,000 - $59,999",OWNER,Hispanic,N,1,25-29,English,5749 E LANAI ST,CA,LONG BEACH,LOS ANGELES,90808,,7DayOL,MW,0,CircAdm,NO +180302966,"$300,000 - $399,999",OWNER,English,N,22,60-64,English,3212 ORLANDO RD,CA,LOS ALAMITOS,ORANGE,90720,$9.00 - $9.99,7Day,MW,0,Internet,NO +170212029,"$150,000 - $174,999",OWNER,German,N,24,70-74,English,4222 E FITZGERALD AVE,CA,ORANGE,ORANGE,92867,$5.00 - $5.99,7DayT,MM,0,VRU,NO +181400352,"$ 80,000 - $89,999",RENTER,Irish,N,1,35-39,English,308 WHITE CAP LN,CA,NEWPORT COAST,ORANGE,92657,$0 - $0.01,SunOnly,YW,0,Partner,NO +130609877,"$125,000 - $149,999",OWNER,Hungarian,N,7,55-59,English,3620 FALCONRIDGE RD,CA,YORBA LINDA,ORANGE,92886,$0.01 - $0.50,SunOnly,FM,0,TeleIn,YES +181281753,"$ 70,000 - $79,999",OWNER,unknown,N,3,24 years or less,,9552 SHANNON AVE,CA,GARDEN GROVE,ORANGE,92841,$0.01 - $0.50,SunOnly,MM,0,SCinsert,NO +140599665,"$100,000 - $124,999",OWNER,English,N,21,45-49,English,515 W SUMMERFIELD CIR,CA,ANAHEIM,ORANGE,92802,$1.00 - $1.99,7Day,MM,0,TeleIn,NO +180664070,"$125,000 - $149,999",OWNER,Indian,N,10,40-44,English,2003 CRESCENT OAK,CA,IRVINE,ORANGE,92618,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +181363376,"Under $20,000",RENTER,French,N,1,35-39,English,3001 W BROOK ST,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,Thu-Sun,MM,0,Partner,NO +120390055,"$400,000 - $499,999",OWNER,Italian,N,25,60-64,English,22 CALLE PASTADERO,CA,SAN CLEMENTE,ORANGE,92672,$3.00 - $3.99,7Day,MW,0,TeleIn,NO +130402320,"$200,000 - $249,999",OWNER,Italian,N,24,55-59,English,17928 SANTA MARIANA ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,MW,0,TeleIn,YES +181416443,"$ 20,000 - $29,999",RENTER,Hispanic,N,2,25-29,Spanish,12282 DALE ST,CA,GARDEN GROVE,ORANGE,92841,$0.01 - $0.50,SunOnly,FE,0,Internet,YES +180396190,"Under $20,000",OWNER,Irish,N,15,65-69,English,931 PAULARINO AVE,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,Thu-Sun,YM,0,DirectMl,NO +150170727,"$125,000 - $149,999",OWNER,English,N,39,70-74,English,1120 OAKMONT ST,CA,PLACENTIA,ORANGE,92870,$7.00 - $7.99,7Day,MM,0,TeleIn,NO +180657628,"$ 20,000 - $29,999",OWNER,Hispanic,Y,21,45-49,Spanish,2213 JETTY ST,CA,SANTA ANA,ORANGE,92706,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180394170,"Under $20,000",RENTER,Vietnamese,N,6,45-49,Vietnamese,1517 N NEWHOPE ST SPC 11,CA,SANTA ANA,ORANGE,92703,$0 - $0.01,7Day,MM,0,Partner,YES +181336063,"$125,000 - $149,999",OWNER,English,N,29,50-54,English,3051 DRUID LN,CA,LOS ALAMITOS,ORANGE,90720,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +120135346,"$200,000 - $249,999",OWNER,German,N,40,75 years or more,English,8511 TOPSIDE CIR,CA,HUNTINGTON BEACH,ORANGE,92646,$4.00 - $4.99,7Day,MW,0,VRU,NO +181503861,"$ 80,000 - $89,999",RENTER,Dutch,N,1,30-34,English,60 OVERBROOK,CA,IRVINE,ORANGE,92620,$0.01 - $0.50,SunOnly,YM,0,Partner,YES +180687921,"$ 90,000 - $99,999",OWNER,English,Y,45,70-74,English,26902 VIA ZARAGOSA,CA,MISSION VIEJO,ORANGE,92691,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180569259,"$150,000 - $174,999",OWNER,English,N,4,70-74,English,12852 LONGDEN ST,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MW,0,CustCall,YES +180277845,"$100,000 - $124,999",OWNER,English,N,7,35-39,English,929 DOGWOOD ST,CA,COSTA MESA,ORANGE,92627,$1.00 - $1.99,Thu-Sun,FM,0,TeleIn,NO +181467814,"$ 40,000 - $49,999",OWNER,English,N,5,30-34,English,3307 WALNUT AVE,CA,SIGNAL HILL,LOS ANGELES,90755,$0.01 - $0.50,SunOnly,FM,0,Crew,YES +130496316,"$ 20,000 - $29,999",OWNER,Hispanic,N,30,70-74,English,1006 E 21ST ST,CA,SANTA ANA,ORANGE,92706,$4.00 - $4.99,7Day,YM,0,CustCall,NO +140558876,"$300,000 - $399,999",OWNER,German,N,9,75 years or more,English,23 SALINGER CT,CA,TRABUCO CANYON,ORANGE,92679,$10.00 - $10.99,7Day,FW,1,VRU,YES +160267727,"$ 80,000 - $89,999",OWNER,Hispanic,Y,21,45-49,Spanish,521 S LYON ST UNIT 54,CA,SANTA ANA,ORANGE,92701,$4.00 - $4.99,7Day,FE,0,Crew,NO +180338126,"Under $20,000",RENTER,Hispanic,N,6,24 years or less,Spanish,2833 N BRISTOL ST APT 9B,CA,SANTA ANA,ORANGE,92706,$1.00 - $1.99,Thu-Sun,FE,0,Crew,NO +180489566,"$ 90,000 - $99,999",OWNER,Hispanic,N,16,40-44,Spanish,1027 W PINE ST,CA,SANTA ANA,ORANGE,92703,$0 - $0.01,SunOnly,FE,0,Partner,NO +180371357,"$ 30,000 - $39,999",RENTER,English,N,7,55-59,English,21042 MONISHA,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +180748075,"$ 50,000 - $59,999",RENTER,German,N,1,35-39,English,21275 BEECHWOOD WAY,CA,LAKE FOREST,ORANGE,92630,$7.00 - $7.99,7Day,YM,0,Kiosk,NO +180402624,"$ 20,000 - $29,999",OWNER,French,N,32,70-74,English,5928 ELKPORT ST,CA,LAKEWOOD,LOS ANGELES,90713,$7.00 - $7.99,7Day,MW,0,CircAdm,YES +150420053,"$150,000 - $174,999",OWNER,Hispanic,N,11,40-44,Spanish,545 S ANAHEIM BLVD,CA,ANAHEIM,ORANGE,92805,$2.00 - $2.99,SoooooS,MW,0,System,NO +181481629,"$300,000 - $399,999",OWNER,unknown,Y,24,65-69,,27972 SHEFFIELD,CA,MISSION VIEJO,ORANGE,92692,$3.00 - $3.99,7Day,MW,0,Kiosk2,NO +181259490,"$150,000 - $174,999",OWNER,English,Y,13,55-59,English,422 N JAMES ST,CA,ORANGE,ORANGE,92869,$0.01 - $0.50,SunOnly,MM,0,Internet,YES +170189909,"$150,000 - $174,999",OWNER,English,N,39,75 years or more,English,9901 WESTHAVEN CIR,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,7Day,MW,0,CustCall,YES +140017615,"$ 30,000 - $39,999",OWNER,Russian,N,1,25-29,English,1412 W APOLLO AVE,CA,ANAHEIM,ORANGE,92802,$5.00 - $5.99,Sun-Fri,MW,0,CustCall,NO +180737044,"$ 20,000 - $29,999",RENTER,Scottish (Scotch),N,4,25-29,English,2656 ASSOCIATED RD APT B29,CA,FULLERTON,ORANGE,92835,$8.00 - $8.99,7Day,YM,2,Internet,NO +170599682,"$ 40,000 - $49,999",OWNER,Scottish (Scotch),N,6,75 years or more,English,1777 W NIOBE AVE,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,7Day,FM,0,TeleIn,NO +130067391,"$300,000 - $399,999",OWNER,Vietnamese,Y,11,55-59,English,10786 LOS JARDINES E,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,MW,0,Partner,YES +180208544,"$ 90,000 - $99,999",RENTER,Hispanic,N,3,50-54,Spanish,23052 VILLAGE DR APT D,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,FE,0,Crew,NO +180570585,"$ 30,000 - $39,999",OWNER,Swedish,N,12,65-69,English,331 DRAKE AVE,CA,FULLERTON,ORANGE,92832,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +170550080,"$ 50,000 - $59,999",RENTER,English,N,3,55-59,English,15621 BEACH BLVD SPC 121,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,7Day,ME,0,CircAdm,NO +181170127,"Under $20,000",RENTER,English,N,4,45-49,English,25212 STOCKPORT ST APT 140,CA,LAGUNA HILLS,ORANGE,92653,$0 - $0.01,SunOnly,YM,0,Partner,NO +140215512,"$ 20,000 - $29,999",RENTER,Scottish (Scotch),N,3,35-39,English,10235 IMPERIAL AVE,CA,GARDEN GROVE,ORANGE,92843,$2.00 - $2.99,SatSun,MM,0,RetenIn,NO +110172368,"$ 20,000 - $29,999",OWNER,Hispanic,N,46,70-74,Spanish,358 S CAMBRIDGE ST,CA,ORANGE,ORANGE,92866,$0 - $0.01,SunOnly,MW,0,Partner,NO +180333300,"$100,000 - $124,999",OWNER,unknown,N,6,35-39,,1807 KENNEDY DR,CA,PLACENTIA,ORANGE,92870,$1.00 - $1.99,Thu-Sun,YW,0,Crew,NO +180580301,"$ 80,000 - $89,999",OWNER,Hispanic,N,1,30-34,English,13237 HITCHING RAIL CIR,CA,CORONA,RIVERSIDE,92883,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +140287717,"$ 70,000 - $79,999",OWNER,English,N,10,65-69,English,5082 CANTERBURY DR,CA,CYPRESS,ORANGE,90630,$4.00 - $4.99,7Day,FM,0,CustCall,NO +130302101,"$125,000 - $149,999",RENTER,English,N,2,40-44,English,5142 THORN TREE LN,CA,IRVINE,ORANGE,92612,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +180377970,"$ 50,000 - $59,999",RENTER,Hispanic,N,1,45-49,English,126 1/2 40TH ST,CA,NEWPORT BEACH,ORANGE,92663,$0 - $0.01,SunOnly,YM,0,Partner,NO +181537802,"$ 50,000 - $59,999",OWNER,German,N,8,35-39,English,841 FEN WAY,CA,LAGUNA BEACH,ORANGE,92651,$0.01 - $0.50,SunOnly,YW,0,Internet,YES +150379005,"$175,000 - $199,999",OWNER,German,Y,23,55-59,English,15119 MATISSE CIR,CA,LA MIRADA,LOS ANGELES,90638,$10.00 - $10.99,7Day,MW,73,VRU,YES +180766960,"$175,000 - $199,999",OWNER,Hispanic,N,28,60-64,Spanish,2794 W TROJAN PL,CA,ANAHEIM,ORANGE,92804,$0 - $0.01,SunOnly,MW,0,Partner,NO +150067638,"$ 70,000 - $79,999",OWNER,Scottish (Scotch),N,9,75 years or more,English,15534 LAMBERT RD,CA,WHITTIER,LOS ANGELES,90604,$1.00 - $1.99,Thu-Sun,FM,0,DirectMl,NO +180461381,"$100,000 - $124,999",OWNER,Irish,Y,8,45-49,English,6814 REEFTON AVE,CA,CYPRESS,ORANGE,90630,$0.51 - $0.99,7Day,MW,0,DirectMl,NO +181405117,"$ 60,000 - $69,999",OWNER,English,N,6,30-34,English,11702 EASY WAY,CA,GARDEN GROVE,ORANGE,92840,$0.01 - $0.50,SunOnly,FM,0,Internet,YES +180328789,"$ 20,000 - $29,999",RENTER,English,N,5,55-59,English,12112 ADRIAN ST APT 6-106,CA,GARDEN GROVE,ORANGE,92840,$1.00 - $1.99,SunOnly,FE,0,Crew,NO +181205844,"$ 30,000 - $39,999",OWNER,Hispanic,N,7,45-49,English,850 HUNTER AVE,CA,SANTA ANA,ORANGE,92701,$0 - $0.01,SunOnly,FE,0,Partner,YES +110548835,"$125,000 - $149,999",RENTER,unknown,N,2,30-34,,5 VIA BELORADO,CA,SAN CLEMENTE,ORANGE,92673,$0 - $0.01,7Day,YW,0,CircAdm,NO +130103714,"$ 40,000 - $49,999",RENTER,unknown,N,1,35-39,,34032 ZARZITO DR,CA,DANA POINT,ORANGE,92629,$9.00 - $9.99,7Day,MW,0,CustCall,NO +160105180,"$300,000 - $399,999",OWNER,Danish,N,32,60-64,Danish,23331 GONDOR DR,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,7Day,MW,1,CustCall,YES +180196617,"Under $20,000",RENTER,Italian,N,11,40-44,English,641 N VENTURA ST APT 1,CA,ANAHEIM,ORANGE,92801,$1.00 - $1.99,SunOnly,YM,0,Crew,NO +160384158,"$ 50,000 - $59,999",OWNER,Irish,N,31,60-64,English,16612 IRBY LN,CA,HUNTINGTON BEACH,ORANGE,92647,$2.00 - $2.99,7Day,MW,0,System,NO +180454818,"$ 20,000 - $29,999",OWNER,Scottish (Scotch),Y,19,45-49,English,6304 E WOODSBORO AVE,CA,ANAHEIM,ORANGE,92807,$1.00 - $1.99,SunOnly,FW,0,Crew,NO +110207676,"$100,000 - $124,999",OWNER,unknown,N,18,50-54,,25011 MAWSON DR,CA,LAGUNA HILLS,ORANGE,92653,$2.00 - $2.99,Fri-Sun,MW,0,CustCall,NO +181434178,"Under $20,000",OWNER,English,N,22,55-59,English,1831 E ORANGE GROVE AVE,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,7Day,MM,0,Crew,YES +130532331,"$150,000 - $174,999",OWNER,English,N,8,75 years or more,English,2364 SANTA ANA AVE APT D,CA,COSTA MESA,ORANGE,92627,$5.00 - $5.99,7Day,YM,0,TeleIn,YES +130044200,"$ 30,000 - $39,999",OWNER,Irish,N,6,60-64,English,10495 W BRIAR OAKS DR APT D,CA,STANTON,ORANGE,90680,$1.00 - $1.99,SunOnlyT,YM,0,TeleIn,NO +180309528,"$ 80,000 - $89,999",OWNER,English,N,24,50-54,English,1110 FREEMAN ST,CA,SANTA ANA,ORANGE,92703,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +180213488,"$100,000 - $124,999",OWNER,Chinese,N,6,50-54,Chinese,26921 PRIMAVERA DR,CA,MISSION VIEJO,ORANGE,92691,$0 - $0.01,7Day,MW,0,CircAdm,NO +180289969,"$175,000 - $199,999",RENTER,Italian,N,2,60-64,Italian,1 MCGWIRE RD APT 101,CA,LADERA RANCH,ORANGE,92694,$7.00 - $7.99,7Day,MM,0,TeleOut,NO +120306559,"$300,000 - $399,999",OWNER,French,Y,3,60-64,English,47 VAN GOGH WAY,CA,TRABUCO CANYON,ORANGE,92679,$3.00 - $3.99,SunOnly,FW,0,CustCall,NO +180317779,"$150,000 - $174,999",OWNER,Japanese,Y,7,65-69,English,9802 MESSERSMITH AVE,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,Thu-Sun,MW,0,Partner,YES +181308855,"$125,000 - $149,999",OWNER,German,N,12,55-59,English,11112 WICKFORD DR,CA,SANTA ANA,ORANGE,92705,$0 - $0.01,SunOnly,FW,0,Partner,NO +160135112,"$100,000 - $124,999",OWNER,Polish,N,41,70-74,Polish,10101 STONYBROOK DR,CA,HUNTINGTON BEACH,ORANGE,92646,$10.00 - $10.99,7Day,MW,5,CustCall,YES +180735301,"$ 30,000 - $39,999",RENTER,Hispanic,N,1,30-34,Spanish,9781 ACACIA AVE APT 7,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,FE,0,Partner,NO +180436483,"Under $20,000",RENTER,Hispanic,N,6,45-49,Spanish,10412 LAMPSON AVE APT 4,CA,GARDEN GROVE,ORANGE,92840,$1.00 - $1.99,SunOnly,FE,0,TeleOut,NO +150497284,"$100,000 - $124,999",OWNER,French,N,10,70-74,English,33561 SEA GULL CT,CA,DANA POINT,ORANGE,92629,$0 - $0.01,Soooooo,MW,0,CircAdm,NO +120235964,"$ 90,000 - $99,999",OWNER,Chinese,N,43,70-74,English,13327 REVA ST,CA,CERRITOS,LOS ANGELES,90703,$0.51 - $0.99,Thu-Sun,MW,0,CustCall,NO +160053289,"Under $20,000",OWNER,Italian,N,46,75 years or more,English,2641 W STONYBROOK DR,CA,ANAHEIM,ORANGE,92804,$0.01 - $0.50,SunOnly,MM,0,TeleIn,NO +140472426,"$ 30,000 - $39,999",RENTER,German,Y,1,30-34,English,5531 DANNY AVE,CA,CYPRESS,ORANGE,90630,$1.00 - $1.99,SunOnly,FM,0,CustCall,NO +180602563,"$ 50,000 - $59,999",OWNER,Hispanic,N,36,70-74,English,2922 S SPRUCE ST,CA,SANTA ANA,ORANGE,92704,$3.00 - $3.99,SunOnly,YM,0,Kiosk,NO +180625718,"Under $20,000",RENTER,English,N,3,75 years or more,English,1502 MERION WAY APT 32D,CA,SEAL BEACH,ORANGE,90740,$4.00 - $4.99,7Day,ME,0,CustCall,YES +110151459,"$150,000 - $174,999",OWNER,English,N,4,55-59,English,31881 NATIONAL PARK DR,CA,LAGUNA NIGUEL,ORANGE,92677,$1.00 - $1.99,Thu-Sun,MW,0,CircAdm,NO +181139664,"$150,000 - $174,999",OWNER,Scottish (Scotch),N,24,55-59,English,1621 N RAYMOND AVE,CA,FULLERTON,ORANGE,92831,$1.00 - $1.99,7Day,FM,0,Internet,NO +180450967,"$ 50,000 - $59,999",OWNER,Hispanic,N,29,55-59,English,19422 BROOKHURST ST,CA,HUNTINGTON BEACH,ORANGE,92646,$0 - $0.01,SunOnly,FM,0,Partner,NO +140265345,"$150,000 - $174,999",OWNER,Scottish (Scotch),N,30,65-69,English,27771 VIA MADRINA,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$2.00 - $2.99,Thu-Sun,MM,0,Kiosk,NO +120038767,"$ 20,000 - $29,999",OWNER,unknown,N,40,70-74,,10544 JUNIPER WAY,CA,STANTON,ORANGE,90680,$7.00 - $7.99,SunOnly,FM,0,TeleIn,YES +180364668,"$ 70,000 - $79,999",OWNER,English,N,6,60-64,English,308 MARIGOLD AVE,CA,CORONA DEL MAR,ORANGE,92625,$0 - $0.01,SunOnly,MW,0,Partner,NO +181372406,"$300,000 - $399,999",OWNER,French,Y,29,65-69,English,3506 E COPPER KETTLE WAY,CA,ORANGE,ORANGE,92867,$0 - $0.01,SunOnly,FW,0,Partner,NO +180218570,"$150,000 - $174,999",OWNER,unknown,N,7,40-44,,14531 GUAMA AVE,CA,IRVINE,ORANGE,92606,$1.00 - $1.99,7Day,MW,0,Kiosk,NO +120353529,"$ 90,000 - $99,999",OWNER,Russian,N,30,75 years or more,English,22792 LA QUINTA DR,CA,MISSION VIEJO,ORANGE,92691,$5.00 - $5.99,7Day,MM,0,CustCall,NO +170143905,"$ 60,000 - $69,999",RENTER,unknown,N,3,35-39,,12812 NEWPORT AVE,CA,TUSTIN,ORANGE,92780,$1.00 - $1.99,SunOnlyT,YM,0,TeleIn,NO +170394449,"Under $20,000",RENTER,Hispanic,N,3,24 years or less,English,1259 E BANYAN AVE,CA,ANAHEIM,ORANGE,92805,$4.00 - $4.99,7Day,FM,0,Kiosk,NO +180620108,"Under $20,000",RENTER,Hispanic,Y,5,35-39,Spanish,107 HICKORY ST,CA,SANTA ANA,ORANGE,92701,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +110291207,"$ 90,000 - $99,999",RENTER,Hispanic,Y,11,45-49,English,21050 LOCHLEA LN APT 58,CA,HUNTINGTON BEACH,ORANGE,92646,$4.00 - $4.99,7Day,YM,0,CustCall,NO +180635574,"Under $20,000",RENTER,English,N,9,30-34,English,2657 E 56TH WAY APT 21,CA,LONG BEACH,LOS ANGELES,90805,$1.00 - $1.99,SunOnly,ME,0,TeleIn,NO +181174807,"$100,000 - $124,999",OWNER,Filipino (Philippine),N,12,50-54,English,8292 SOUTHPORT DR,CA,HUNTINGTON BEACH,ORANGE,92646,$0 - $0.01,SunOnly,MM,0,Partner,NO +180406894,"$300,000 - $399,999",OWNER,Vietnamese,N,23,55-59,Vietnamese,9171 OBSIDIAN DR,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,MM,0,Partner,NO +160389765,"$ 20,000 - $29,999",RENTER,English,N,1,24 years or less,English,27 GAUGUIN CIR,CA,ALISO VIEJO,ORANGE,92656,$5.00 - $5.99,7Day,FM,0,CustCall,NO +130142536,"$125,000 - $149,999",OWNER,English,N,1,45-49,English,700 LIDO PARK DR UNIT 31,CA,NEWPORT BEACH,ORANGE,92663,$5.00 - $5.99,7DayT,MW,0,TeleIn,NO +181463399,"$100,000 - $124,999",RENTER,German,N,6,75 years or more,English,1000 S COAST DR APT S202,CA,COSTA MESA,ORANGE,92626,$4.00 - $4.99,Thu-Sun,MW,0,Crew,NO +110375746,"$ 80,000 - $89,999",OWNER,German,N,9,30-34,English,14305 GALICIA DR,CA,LA MIRADA,LOS ANGELES,90638,$1.00 - $1.99,SoooooS,MM,0,TeleIn,NO +150036628,"$150,000 - $174,999",OWNER,unknown,Y,12,35-39,,5562 BROOKHILL DR,CA,YORBA LINDA,ORANGE,92886,$4.00 - $4.99,7Day,MM,0,CustCall,NO +180649324,"$175,000 - $199,999",OWNER,African American 95%+,N,22,55-59,English,3428 KNOXVILLE AVE,CA,LONG BEACH,LOS ANGELES,90808,$0.01 - $0.50,Thu-Sun,MW,0,Kiosk,NO +130346747,"$100,000 - $124,999",OWNER,Vietnamese,N,14,45-49,English,12280 ALTA PANORAMA,CA,SANTA ANA,ORANGE,92705,$3.00 - $3.99,Thu-Sun,YW,0,DirectMl,YES +181454125,"Under $20,000",RENTER,Irish,N,50,60-64,English,100 ATLANTIC AVE APT 1012,CA,LONG BEACH,LOS ANGELES,90802,$3.00 - $3.99,7Day,MM,0,Crew,NO +140232410,"$175,000 - $199,999",OWNER,Welsh,N,40,75 years or more,English,23 WHITEWOOD WAY,CA,IRVINE,ORANGE,92612,$9.00 - $9.99,7Day,MW,0,CustCall,NO +180421199,"$200,000 - $249,999",OWNER,Arab,N,3,60-64,English,35 FEATHER RDG,CA,MISSION VIEJO,ORANGE,92692,$0 - $0.01,SunOnly,FW,0,Partner,NO +180613371,"Under $20,000",RENTER,Scottish (Scotch),N,4,75 years or more,English,1461 MERION WAY APT 52C,CA,SEAL BEACH,ORANGE,90740,$7.00 - $7.99,7Day,ME,0,CustCall,NO +180619667,"$ 90,000 - $99,999",OWNER,English,Y,31,65-69,English,1115 E MAYFAIR AVE,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,FM,0,Partner,YES +180474602,"$300,000 - $399,999",OWNER,Russian,Y,10,45-49,English,25 SOUTHERN WOOD,CA,IRVINE,ORANGE,92603,$0 - $0.01,SunOnly,FW,0,Partner,NO +180695542,"Under $20,000",OWNER,Hispanic,N,22,60-64,Spanish,2225 OAK ST,CA,SANTA ANA,ORANGE,92707,$1.00 - $1.99,SunOnly,FM,0,Partner,NO +181298971,"$ 80,000 - $89,999",OWNER,Scottish (Scotch),N,44,75 years or more,English,1262 BRIAN ST,CA,PLACENTIA,ORANGE,92870,$10.00 - $10.99,7Day,MW,0,CustCall,YES +110340921,"$175,000 - $199,999",OWNER,unknown,N,9,50-54,,5365 E CRESTHILL DR,CA,ANAHEIM,ORANGE,92807,$4.00 - $4.99,7Day,YW,0,CustCall,NO +140041366,"Under $20,000",OWNER,Hispanic,N,7,60-64,Spanish,411 GOETZ PL,CA,PLACENTIA,ORANGE,92870,$5.00 - $5.99,7Day,ME,0,TeleIn,NO +181411847,"$150,000 - $174,999",RENTER,Hispanic,N,4,45-49,Spanish,215 PRINCESS LN,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,7Day,FE,0,Partner,YES +181401653,"$500,000 Plus",OWNER,unknown,Y,14,50-54,,1 AVIGNON,CA,NEWPORT COAST,ORANGE,92657,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +180678169,"$ 50,000 - $59,999",OWNER,German,N,6,55-59,English,2531 CRESTVIEW DR,CA,NEWPORT BEACH,ORANGE,92663,$10.00 - $10.99,7Day,MW,1,CustCall,YES +180456887,"$ 90,000 - $99,999",OWNER,Estonian,Y,11,50-54,English,5681 CYNTHIA LN,CA,CYPRESS,ORANGE,90630,$0 - $0.01,SunOnly,MW,0,Partner,NO +180235305,"$150,000 - $174,999",OWNER,unknown,Y,20,40-44,,2101 BELFORD AVE,CA,PLACENTIA,ORANGE,92870,$0.01 - $0.50,SunOnly,FW,0,DirectMl,YES +110595798,"$100,000 - $124,999",OWNER,Italian,N,4,40-44,English,28462 CASANAL,CA,MISSION VIEJO,ORANGE,92692,$4.00 - $4.99,7Day,MW,0,Crew,NO +120225849,"Under $20,000",RENTER,African (other),N,14,50-54,English,820 W WALNUT AVE APT 4,CA,ORANGE,ORANGE,92868,$2.00 - $2.99,Fri-Sun,ME,0,Crew,NO +160598939,"Under $20,000",RENTER,English,N,1,24 years or less,English,13881 TUSTIN EAST DR APT 178,CA,TUSTIN,ORANGE,92780,$2.00 - $2.99,SatSun,YM,0,CustCall,NO +181458112,"$ 30,000 - $39,999",RENTER,Arab,N,3,25-29,English,66 CUNNINGHAM,CA,IRVINE,ORANGE,92618,$4.00 - $4.99,7Day,YW,0,Internet,NO +181371605,"$200,000 - $249,999",OWNER,unknown,N,9,40-44,,27386 VIA PRIMERO,CA,MISSION VIEJO,ORANGE,92692,$0.01 - $0.50,Thu-Sun,YW,0,Partner,NO +170184442,"$ 40,000 - $49,999",OWNER,English,N,15,70-74,English,9412 REVERE CT,CA,FOUNTAIN VALLEY,ORANGE,92708,$3.00 - $3.99,7Day,MM,0,CustCall,YES +180519572,"$ 50,000 - $59,999",OWNER,Arab,N,22,60-64,English,14441 RIO GRANDE ST,CA,WESTMINSTER,ORANGE,92683,$6.00 - $6.99,7Day,MW,0,DirectMl,YES +180363320,"$300,000 - $399,999",OWNER,Scottish (Scotch),N,2,40-44,English,42 BLANCO,CA,FOOTHILL RANCH,ORANGE,92610,$1.00 - $1.99,SunOnly,FW,0,Crew,NO +130372549,"$ 50,000 - $59,999",RENTER,Scottish (Scotch),N,3,75 years or more,English,870 MORNINGSIDE DR APT G322,CA,FULLERTON,ORANGE,92835,$4.00 - $4.99,7Day,MM,0,CustCall,NO +110109914,"$ 60,000 - $69,999",RENTER,English,N,1,70-74,English,372 DELAWARE WAY,CA,PLACENTIA,ORANGE,92870,$1.00 - $1.99,7Day,MM,0,CustCall,NO +180762157,"$ 70,000 - $79,999",OWNER,Italian,N,14,45-49,English,3126 KERRY LN,CA,COSTA MESA,ORANGE,92626,$0 - $0.01,SunOnly,MW,0,Partner,NO +110245497,"$100,000 - $124,999",RENTER,unknown,N,1,40-44,,660 CAMINO DE LOS MARES UNIT 204,CA,SAN CLEMENTE,ORANGE,92673,$8.00 - $8.99,7Day,MM,0,CustCall,NO +180688571,"$125,000 - $149,999",OWNER,English,N,5,35-39,English,16 CELESTE,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$0.01 - $0.50,Thu-Sun,FW,0,Partner,YES +181537361,"$ 40,000 - $49,999",OWNER,Vietnamese,N,5,50-54,Vietnamese,10111 TRAYLOR WAY,CA,GARDEN GROVE,ORANGE,92843,$3.00 - $3.99,THU-SUN,FE,0,Crew1,YES +180571090,"$ 30,000 - $39,999",OWNER,Jewish,N,1,24 years or less,English,11 ROBLE,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$2.00 - $2.99,SunOnly,MM,0,Kiosk,NO +181309336,"$100,000 - $124,999",OWNER,Hispanic,N,23,55-59,English,15241 VERMONT ST,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +181515067,"$ 70,000 - $79,999",RENTER,Swedish,N,4,70-74,English,7450 CRESCENT AVE APT 309,CA,BUENA PARK,ORANGE,90620,$3.00 - $3.99,THU-SUN,ME,0,Crew1,YES +180361088,"Under $20,000",RENTER,Vietnamese,N,1,25-29,Vietnamese,128 W ROSSLYNN AVE,CA,FULLERTON,ORANGE,92832,$0 - $0.01,SunOnly,MM,0,Partner,NO +180355651,"Under $20,000",RENTER,English,N,3,25-29,English,27814 VIOLET,CA,MISSION VIEJO,ORANGE,92691,$2.00 - $2.99,Thu-Sun,FM,0,Crew,NO +180190483,"$ 50,000 - $59,999",OWNER,Hispanic,Y,27,50-54,Spanish,1955 W GREENLEAF AVE APT R,CA,ANAHEIM,ORANGE,92801,$0.51 - $0.99,SunOnly,MM,0,TeleOut,NO +110317751,"$ 30,000 - $39,999",OWNER,English,N,43,75 years or more,English,2114 MILLWOOD ST,CA,SANTA ANA,ORANGE,92705,$3.00 - $3.99,SunOnly,MM,0,CustCall,YES +170013096,"$100,000 - $124,999",OWNER,English,N,25,75 years or more,English,31212 CASA GRANDE DR,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$10.00 - $10.99,7Day,MW,0,CustCall,YES +150011918,"$150,000 - $174,999",RENTER,English,N,9,60-64,English,2621 WHITE RD,CA,IRVINE,ORANGE,92614,$10.00 - $10.99,7Day,,0,CustCall,YES +180562319,"$100,000 - $124,999",OWNER,English,Y,5,30-34,English,6082 KILLARNEY AVE,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +180664722,"$150,000 - $174,999",OWNER,English,N,35,75 years or more,English,5 EARLYMORN,CA,IRVINE,ORANGE,92614,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180625827,"Under $20,000",RENTER,Hispanic,N,7,25-29,Spanish,720 SHALIMAR DR APT A,CA,COSTA MESA,ORANGE,92627,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +180750867,"$200,000 - $249,999",OWNER,Arab,N,5,50-54,Arabic,580 PICAACHO DR,CA,LA HABRA,LOS ANGELES,90631,$0 - $0.01,SunOnly,YW,0,Partner,NO +110050932,"$400,000 - $499,999",OWNER,English,N,18,55-59,English,3323 E CASSELLE AVE,CA,ORANGE,ORANGE,92869,$0 - $0.01,SunOnly,YW,0,Partner,NO +130427940,"$400,000 - $499,999",OWNER,Polish,N,22,65-69,English,26462 SILVER SADDLE LN,CA,LAGUNA HILLS,ORANGE,92653,$10.00 - $10.99,7Day,MW,0,DirectMl,YES +140259444,"Under $20,000",RENTER,Hispanic,N,17,35-39,Spanish,520 E WALNUT ST APT 13,CA,SANTA ANA,ORANGE,92701,$2.00 - $2.99,Thu-Sun,FE,0,TeleIn,NO +180746097,"$ 50,000 - $59,999",RENTER,English,N,2,25-29,English,16761 VIEWPOINT LN APT 398,CA,HUNTINGTON BEACH,ORANGE,92647,$0 - $0.01,SunOnly,YM,0,Partner,NO +180597262,"$ 20,000 - $29,999",RENTER,Hispanic,N,9,30-34,English,403 N BEWLEY ST,CA,SANTA ANA,ORANGE,92703,$4.00 - $4.99,7Day,FE,3,TeleIn,NO +181395776,"$125,000 - $149,999",OWNER,unknown,N,6,60-64,,16 WALNUT CRK,CA,IRVINE,ORANGE,92602,$0 - $0.01,SunOnly,MW,0,Partner,NO +180405372,"$ 50,000 - $59,999",OWNER,English,N,16,60-64,English,6562 BELGRAVE AVE,CA,GARDEN GROVE,ORANGE,92845,$0 - $0.01,SunOnly,MM,0,Partner,NO +180286012,"$ 80,000 - $89,999",OWNER,Hispanic,Y,19,45-49,Spanish,26861 CALLE ALCALA,CA,MISSION VIEJO,ORANGE,92691,$2.00 - $2.99,Thu-Sun,FM,0,Crew,NO +181481843,"Under $20,000",RENTER,Scottish (Scotch),N,6,25-29,English,1060 DAWSON AVE,CA,LONG BEACH,LOS ANGELES,90804,$3.00 - $3.99,Thu-Sun,FE,0,Crew1,NO +120314259,"$100,000 - $124,999",OWNER,English,N,3,35-39,English,9712 BLUEREEF DR,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,SunOnly,FM,0,CustCall,NO +180551098,"$ 90,000 - $99,999",OWNER,Hispanic,N,22,55-59,English,9922 ROYAL PALM BLVD,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,FM,0,Partner,NO +180583347,"$ 30,000 - $39,999",OWNER,Hispanic,Y,24,60-64,Spanish,1001 N HARON ST,CA,ANAHEIM,ORANGE,92801,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +170276884,"$175,000 - $199,999",OWNER,Japanese,N,35,75 years or more,English,22072 CAPISTRANO LN,CA,HUNTINGTON BEACH,ORANGE,92646,$10.00 - $10.99,7Day,MW,0,CustCall,YES +181279143,"$ 40,000 - $49,999",OWNER,Arab,N,9,70-74,English,798 PLAYA BLANCA CIR,CA,CORONA,RIVERSIDE,92879,$0 - $0.01,7Day,FM,0,Partner,YES +181515922,"$ 70,000 - $79,999",OWNER,English,N,54,75 years or more,English,9832 READING AVE,CA,GARDEN GROVE,ORANGE,92844,$0.01 - $0.50,SunOnly,MM,0,Internet,YES +180279292,"$ 30,000 - $39,999",OWNER,Vietnamese,N,28,70-74,Vietnamese,9331 CARNATION DR,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,7Day,MM,0,DirectMl,NO +180651655,"$ 20,000 - $29,999",OWNER,Hispanic,N,1,35-39,Spanish,7782 JOEL AVE,CA,STANTON,ORANGE,90680,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +110362817,"$ 90,000 - $99,999",OWNER,Hispanic,N,5,35-39,English,2716 17TH ST,CA,HUNTINGTON BEACH,ORANGE,92648,$7.00 - $7.99,7Day,MM,0,TeleIn,NO +180419618,"Under $20,000",RENTER,Hispanic,N,1,30-34,English,1235 E LINCOLN AVE APT 109,CA,ANAHEIM,ORANGE,92805,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +180478441,"$100,000 - $124,999",OWNER,English,N,15,60-64,English,12501 FALLCREEK LN,CA,CERRITOS,LOS ANGELES,90703,$3.00 - $3.99,7Day,MM,0,Internet,NO +120136221,"$400,000 - $499,999",OWNER,Vietnamese,N,4,40-44,Vietnamese,6892 SEAWAY CIR,CA,HUNTINGTON BEACH,ORANGE,92648,$2.00 - $2.99,7Day,MW,0,CustCall,NO +181468689,"$ 60,000 - $69,999",OWNER,Japanese,N,1,50-54,Japanese,53 LAKEVIEW,CA,IRVINE,ORANGE,92604,$4.00 - $4.99,7Day,MW,0,Internet,NO +120355069,"$ 60,000 - $69,999",OWNER,Irish,N,37,75 years or more,English,463 N SHATTUCK PL,CA,ORANGE,ORANGE,92866,$10.00 - $10.99,7Day,MW,5,CustCall,YES +180500964,"$ 20,000 - $29,999",RENTER,Jewish,N,3,30-34,English,350 PASADENA AVE APT 7,CA,TUSTIN,ORANGE,92780,$0.01 - $0.50,Thu-Sun,FE,0,Crew,NO +170387939,"$ 70,000 - $79,999",OWNER,Scottish (Scotch),N,35,60-64,English,1472 W ELM AVE,CA,FULLERTON,ORANGE,92833,$10.00 - $10.99,7Day,MM,0,CustCall,YES +160033234,"$100,000 - $124,999",OWNER,English,N,2,45-49,English,1051 FOOTHILL BLVD,CA,SANTA ANA,ORANGE,92705,$10.00 - $10.99,7Day,YW,0,CustCall,YES +180647363,"$500,000 Plus",OWNER,German,N,16,55-59,English,2472 COMER LN,CA,TUSTIN,ORANGE,92782,$0.01 - $0.50,SunOnly,YW,0,Partner,NO +120007379,"$125,000 - $149,999",OWNER,Scottish (Scotch),N,43,70-74,English,14152 CLARISSA LN,CA,SANTA ANA,ORANGE,92705,$5.00 - $5.99,7Day,FM,0,TeleIn,YES +180490169,"$125,000 - $149,999",OWNER,Italian,Y,9,40-44,English,1733 N CONCERTO DR,CA,ANAHEIM,ORANGE,92807,$0 - $0.01,SunOnly,YW,0,Partner,NO +130161772,"$500,000 Plus",OWNER,African American 95%+,Y,15,50-54,English,5218 VISTA DE OLMO,CA,SAN CLEMENTE,ORANGE,92673,$0.01 - $0.50,SunOnly,FW,1,CustCall,YES +180266695,"$300,000 - $399,999",OWNER,English,N,2,50-54,English,2009 YACHT VINDEX,CA,NEWPORT BEACH,ORANGE,92660,$0.51 - $0.99,SunOnly,MW,0,DirectMl,NO +170145004,"$ 90,000 - $99,999",OWNER,Jewish,N,5,55-59,English,27715 MANOR HILL RD,CA,LAGUNA NIGUEL,ORANGE,92677,$2.00 - $2.99,Fri-Sun,MW,0,DirectMl,NO +170462335,"$ 40,000 - $49,999",RENTER,German,N,1,45-49,English,2102 RIDGEWOOD ST,CA,SANTA ANA,ORANGE,92705,$7.00 - $7.99,SunOnly,MW,36,System,YES +181333925,"Under $20,000",OWNER,Portuguese,N,6,55-59,English,1121 HICKORY ST,CA,SANTA ANA,ORANGE,92701,$4.00 - $4.99,7Day,MM,0,Crew,NO +140521741,"$125,000 - $149,999",RENTER,Irish,N,3,45-49,English,5807 E TRAPPER TRL,CA,ANAHEIM,ORANGE,92807,$4.00 - $4.99,7Day,MW,0,CustCall,NO +180639697,"$150,000 - $174,999",OWNER,Japanese,N,7,40-44,English,2146 FLAME FLOWER LN,CA,FULLERTON,ORANGE,92833,$0.01 - $0.50,SunOnly,YW,0,Partner,NO +180308049,"$100,000 - $124,999",OWNER,Indian,Y,8,40-44,English,15520 SONORA ST,CA,TUSTIN,ORANGE,92782,$2.00 - $2.99,Thu-Sun,FW,0,TeleIn,NO +181301864,"$175,000 - $199,999",OWNER,Irish,N,43,70-74,English,11328 SANDSTONE AVE,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,MW,0,Partner,NO +110059437,"$400,000 - $499,999",OWNER,Austrian,N,36,60-64,English,2738 E NORM PL,CA,ANAHEIM,ORANGE,92806,$0.51 - $0.99,7Day,MW,8,TeleIn,YES +130563684,"$ 50,000 - $59,999",RENTER,English,Y,3,35-39,English,27152 CAMINO AIREN,CA,LAGUNA NIGUEL,ORANGE,92677,$0.51 - $0.99,Thu-Sun,YM,0,TeleIn,NO +180350078,"$175,000 - $199,999",RENTER,Arab,N,2,50-54,English,1501 S BEACH BLVD APT C312,CA,LA HABRA,ORANGE,90631,$1.00 - $1.99,Thu-Sun,YM,0,TeleOut,NO +180682526,"$ 60,000 - $69,999",RENTER,Hispanic,N,18,40-44,Spanish,1568 CARAWAY DR APT A,CA,COSTA MESA,ORANGE,92626,$0 - $0.01,SunOnly,YM,0,Partner,NO +180586951,"$200,000 - $249,999",OWNER,Italian,Y,16,45-49,Italian,2028 CHARLEMAGNE AVE,CA,LONG BEACH,LOS ANGELES,90815,$4.00 - $4.99,7Day,MW,0,Internet,NO +181547171,"$175,000 - $199,999",OWNER,Italian,N,2,55-59,English,8 FOREST ST,CA,LADERA RANCH,ORANGE,92694,$3.00 - $3.99,Thu-Sun,YW,0,Kiosk,YES +160228408,"$300,000 - $399,999",OWNER,German,N,20,60-64,English,22 HIDDEN CRK,CA,IRVINE,ORANGE,92620,$1.00 - $1.99,SunOnly,MW,24,System,NO +181490845,"Under $20,000",RENTER,Hispanic,N,5,24 years or less,English,1901 N BUSH ST APT 8,CA,SANTA ANA,ORANGE,92706,$3.00 - $3.99,Thu-Sun,FE,0,Crew1,NO +181495893,"$ 70,000 - $79,999",OWNER,Vietnamese,N,19,60-64,Vietnamese,1218 CONCORD AVE,CA,FULLERTON,ORANGE,92831,$0.01 - $0.50,SunOnly,YW,0,Partner,YES +160302069,"$ 40,000 - $49,999",RENTER,Hispanic,N,1,25-29,English,155 S ANGELINA DR APT 181,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,SatSun,YM,0,CustCall,NO +180495310,"Under $20,000",RENTER,Hispanic,Y,15,35-39,Spanish,931 W BISHOP ST APT O,CA,SANTA ANA,ORANGE,92703,$0.51 - $0.99,Thu-Sun,FE,0,TeleOut,NO +120285692,"$300,000 - $399,999",OWNER,German,N,10,55-59,English,22058 ARROWHEAD LN,CA,LAKE FOREST,ORANGE,92630,$5.00 - $5.99,7Day,MW,0,Kiosk,NO +180491046,"$ 80,000 - $89,999",OWNER,Italian,N,3,25-29,English,9973 PETUNIA AVE,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,MW,0,Partner,NO +130471172,"$ 40,000 - $49,999",OWNER,Hispanic,N,13,65-69,English,3218 S DEEGAN DR,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,MM,0,TeleIn,NO +180363791,"$200,000 - $249,999",OWNER,Hispanic,N,16,60-64,English,11 VIA CANDELARIA,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,Soooooo,YW,0,TeleIn,NO +110063357,"$ 50,000 - $59,999",OWNER,English,N,14,70-74,English,2800 W SEGERSTROM AVE UNIT G,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,SunOnly,FE,0,CustCall,YES +180189414,"$ 60,000 - $69,999",RENTER,Portuguese,N,1,40-44,Portuguese,1433 SUPERIOR AVE APT 265,CA,NEWPORT BEACH,ORANGE,92663,$1.00 - $1.99,SunOnly,YM,0,Crew,NO +181345293,"Under $20,000",OWNER,Vietnamese,N,21,65-69,Vietnamese,324 S JACKSON ST,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,FE,0,Crew,NO +180409560,"$ 40,000 - $49,999",RENTER,Hispanic,Y,6,25-29,English,12671 MAIN ST APT 6,CA,GARDEN GROVE,ORANGE,92840,$0.01 - $0.50,SunOnly,ME,0,Partner,NO +180614742,"$300,000 - $399,999",OWNER,Indian,Y,24,55-59,Hindi,45 WAKONDA,CA,TRABUCO CANYON,ORANGE,92679,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +181290523,"$ 90,000 - $99,999",OWNER,Hispanic,Y,5,35-39,Spanish,15441 LASHBURN ST,CA,WHITTIER,LOS ANGELES,90604,$0.01 - $0.50,SunOnly,YM,0,Crew,NO +170602755,"$ 20,000 - $29,999",OWNER,Dutch,Y,20,70-74,English,1117 CABRILLO PARK DR,CA,SANTA ANA,ORANGE,92701,$8.00 - $8.99,7Day,MW,0,TeleIn,NO +181348285,"$300,000 - $399,999",OWNER,Scottish (Scotch),Y,29,55-59,English,5291 TATTERSHALL AVE,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180635305,"$ 40,000 - $49,999",OWNER,Hispanic,N,22,50-54,Spanish,701 E ADELE ST,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,SunOnly,YM,0,Partner,NO +180326304,"$ 20,000 - $29,999",OWNER,Hispanic,Y,29,75 years or more,Spanish,2401 EVERGREEN ST,CA,SANTA ANA,ORANGE,92707,$3.00 - $3.99,SoooTFS,ME,0,Partner,NO +120412224,"$125,000 - $149,999",OWNER,English,N,20,65-69,English,20012 TREASURE CIR,CA,HUNTINGTON BEACH,ORANGE,92646,$9.00 - $9.99,7Day,MW,58,VRU,NO +181480005,"$ 40,000 - $49,999",OWNER,German,Y,13,55-59,English,1224 E CLIFPARK WAY,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,SunOnly,MW,0,Internet,YES +150501974,"$200,000 - $249,999",OWNER,English,N,28,70-74,English,16810 OAK WAY LN,CA,CHINO HILLS,SAN BERNARDINO,91709,$1.00 - $1.99,7Day,YW,0,VRU,NO +120566140,"$ 80,000 - $89,999",OWNER,unknown,N,1,70-74,,5349 ALGARROBO UNIT N,CA,LAGUNA WOODS,ORANGE,92637,$4.00 - $4.99,7Day,MM,0,CustCall,NO +160518383,"$ 70,000 - $79,999",RENTER,German,N,17,50-54,English,6301 WARNER AVE SPC 45,CA,HUNTINGTON BEACH,ORANGE,92647,$2.00 - $2.99,SatSun,MM,0,CustCall,NO +140183137,"Under $20,000",RENTER,Hispanic,N,7,60-64,English,21661 BROOKHURST ST APT 8,CA,HUNTINGTON BEACH,ORANGE,92646,$4.00 - $4.99,7Day,YM,0,Crew,NO +180350900,"Under $20,000",OWNER,English,N,23,70-74,English,16621 VIEWPOINT LN,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,7Day,FM,0,CircAdm,NO +110234465,"$400,000 - $499,999",OWNER,Ukrainian,N,23,65-69,English,1125 EMERALD BAY,CA,LAGUNA BEACH,ORANGE,92651,$0 - $0.01,SunOnly,MW,0,Partner,NO +180490693,"$400,000 - $499,999",OWNER,English,N,14,50-54,English,49 LEDGEWOOD DR,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$0 - $0.01,SunOnly,FW,0,Partner,NO +180660529,"$ 80,000 - $89,999",OWNER,English,Y,13,45-49,English,48 ASPEN CREEK LN,CA,LAGUNA HILLS,ORANGE,92653,$7.00 - $7.99,7Day,MM,0,SCinsert,NO +181535743,"Under $20,000",OWNER,Hispanic,Y,8,35-39,Spanish,1410 S RENE DR,CA,SANTA ANA,ORANGE,92704,$2.00 - $2.99,SunOnly,FE,0,Crew3,NO +181503166,"$175,000 - $199,999",OWNER,English,N,7,35-39,English,16 SOARING HAWK,CA,IRVINE,ORANGE,92614,$3.00 - $3.99,THU-SUN,MW,0,Crew1,NO +180241659,"$100,000 - $124,999",OWNER,unknown,N,2,50-54,,20094 KLYNE ST,CA,CORONA,RIVERSIDE,92881,$7.00 - $7.99,7Day,YW,0,TeleIn,NO +181450445,"$ 20,000 - $29,999",RENTER,Hispanic,N,1,24 years or less,Spanish,4910 CASTANA AVE APT 13,CA,LAKEWOOD,LOS ANGELES,90712,$3.00 - $3.99,7Day,YM,0,Crew,NO +140490682,"$ 60,000 - $69,999",OWNER,Portuguese,Y,20,50-54,English,14408 SAN ARDO DR,CA,LA MIRADA,LOS ANGELES,90638,$1.00 - $1.99,SunOnly,MW,0,System,NO +180646523,"$100,000 - $124,999",OWNER,Hispanic,N,13,50-54,Spanish,14558 NEWPORT AVE UNIT 2,CA,TUSTIN,ORANGE,92780,$4.00 - $4.99,Thu-Sun,MW,0,Partner,NO +140260774,"$100,000 - $124,999",OWNER,Korean,N,5,40-44,English,6412 STANFORD AVE,CA,GARDEN GROVE,ORANGE,92845,$6.00 - $6.99,7Day,MW,0,CustCall,NO +130304334,"$200,000 - $249,999",OWNER,English,N,34,60-64,English,4456 DOGWOOD AVE,CA,SEAL BEACH,ORANGE,90740,$9.00 - $9.99,7Day,MW,0,CustCall,NO +180757094,"$ 40,000 - $49,999",OWNER,English,N,2,75 years or more,English,12432 TUDOR WAY,CA,TUSTIN,ORANGE,92780,$4.00 - $4.99,7Day,MM,0,AdvAdm,YES +110324352,"$100,000 - $124,999",OWNER,English,N,30,60-64,English,908 LAKE ST,CA,HUNTINGTON BEACH,ORANGE,92648,$1.00 - $1.99,7DayT,MW,0,TeleIn,NO +180587837,"Under $20,000",OWNER,Hispanic,N,7,24 years or less,Spanish,114 HORNBEAM LN,CA,FOUNTAIN VALLEY,ORANGE,92708,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +180574871,"$100,000 - $124,999",OWNER,Hungarian,N,2,30-34,English,3454 AUTUMN AVE,CA,CHINO HILLS,SAN BERNARDINO,91709,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180629681,"$100,000 - $124,999",OWNER,Romanian,N,29,60-64,English,1405 S JOANE WAY,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,MM,0,Partner,NO +180257901,"$ 80,000 - $89,999",OWNER,English,N,4,45-49,English,28291 PASEO EL SIENA,CA,LAGUNA NIGUEL,ORANGE,92677,$0.01 - $0.50,SunOnly,YW,0,TeleOut,NO +150101091,"$500,000 Plus",OWNER,Indian,Y,10,45-49,English,15 MARBLE SANDS,CA,NEWPORT BEACH,ORANGE,92660,$4.00 - $4.99,7Day,YW,0,CustCall,NO +130013323,"$100,000 - $124,999",OWNER,Irish,N,13,65-69,English,1 VIA CASTILLA UNIT S,CA,LAGUNA WOODS,ORANGE,92637,$3.00 - $3.99,7Day,MM,0,CustCall,NO +181493582,"$ 90,000 - $99,999",OWNER,Hispanic,Y,10,50-54,Spanish,2191 HARBOR BLVD SPC 19,CA,COSTA MESA,ORANGE,92627,$3.00 - $3.99,Thu-Sun,FE,0,Crew1,NO +181176117,"$ 70,000 - $79,999",OWNER,Portuguese,Y,19,60-64,Portuguese,845 OLD TEMESCAL RD,CA,CORONA,RIVERSIDE,92879,$0 - $0.01,SunOnly,FE,0,Partner,NO +180501938,"$200,000 - $249,999",OWNER,unknown,N,31,65-69,,27136 SOLEDAD,CA,MISSION VIEJO,ORANGE,92691,$1.00 - $1.99,7Day,MW,0,Event,NO +160236556,"$200,000 - $249,999",OWNER,Welsh,Y,7,45-49,English,15 WILLIAMSBURG LN,CA,TRABUCO CANYON,ORANGE,92679,$5.00 - $5.99,Thu-Sun,FW,0,CustCall,NO +120319446,"$100,000 - $124,999",OWNER,unknown,N,1,35-39,,6191 NORBROOK DR,CA,HUNTINGTON BEACH,ORANGE,92648,$2.00 - $2.99,Thu-Sun,MW,0,TeleIn,NO +181445561,"$100,000 - $124,999",OWNER,Hispanic,N,23,75 years or more,English,309 MALVERN AVE,CA,FULLERTON,ORANGE,92832,$0.01 - $0.50,SunOnly,YW,0,Partner,YES +181464493,"$400,000 - $499,999",OWNER,Scottish (Scotch),N,2,40-44,English,5 ANDIAMO,CA,NEWPORT COAST,ORANGE,92657,$0.51 - $0.99,SunOnly,MW,0,Internt4,YES +170514331,"$ 70,000 - $79,999",RENTER,Scottish (Scotch),N,3,70-74,English,500 AVENIDA LORENZO,CA,NEWPORT BEACH,ORANGE,92660,$3.00 - $3.99,7Day,MM,0,CustCall,YES +180670499,"$ 70,000 - $79,999",OWNER,Chinese,N,5,35-39,English,6043 E BRIGHTON LN,CA,ANAHEIM,ORANGE,92807,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180194474,"$ 20,000 - $29,999",OWNER,Hispanic,N,5,65-69,English,3806 E ROBERTA DR,CA,ORANGE,ORANGE,92869,$3.00 - $3.99,7Day,YW,0,DirectMl,YES +150160409,"$125,000 - $149,999",OWNER,German,N,10,70-74,English,424 CHEYENNE PL,CA,PLACENTIA,ORANGE,92870,$10.00 - $10.99,7Day,MM,0,CustCall,YES +130224590,"$ 60,000 - $69,999",OWNER,Hispanic,N,23,65-69,English,532 N GLENROSE DR,CA,ORANGE,ORANGE,92869,$0.51 - $0.99,Thu-Sun,FM,0,System,NO +160580858,"$ 50,000 - $59,999",OWNER,unknown,N,29,65-69,,24992 SALFORD ST,CA,LAGUNA HILLS,ORANGE,92653,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +181337920,"$ 60,000 - $69,999",OWNER,English,N,10,40-44,English,9252 CERRITOS AVE,CA,ANAHEIM,ORANGE,92804,$4.00 - $4.99,7Day,FM,0,Crew,NO +180552703,"$ 80,000 - $89,999",OWNER,unknown,N,1,45-49,,28352 MODJESKA CANYON RD,CA,SILVERADO,ORANGE,92676,$0 - $0.01,SunOnly,YM,0,Partner,NO +180383155,"$175,000 - $199,999",OWNER,Chinese,Y,21,65-69,Chinese,2590 CYPRESS PT,CA,TUSTIN,ORANGE,92782,$0 - $0.01,SunOnly,FW,0,Partner,NO +120055217,"$ 20,000 - $29,999",RENTER,Hispanic,N,4,30-34,Spanish,821 N CLEMENTINE ST,CA,ANAHEIM,ORANGE,92805,$4.00 - $4.99,7Day,FM,0,CustCall,NO +181205872,"Under $20,000",RENTER,Hispanic,Y,9,25-29,Spanish,3808 CAROL DR,CA,FULLERTON,ORANGE,92833,$0 - $0.01,SunOnly,MM,0,Partner,YES +180582146,"$125,000 - $149,999",OWNER,German,N,44,70-74,English,13325 DANVERS WAY,CA,WESTMINSTER,ORANGE,92683,$10.00 - $10.99,7Day,MW,0,CustCall,YES +180449910,"$175,000 - $199,999",OWNER,Italian,N,19,60-64,English,1868 COMARAGO CT,CA,CORONA,RIVERSIDE,92883,$0 - $0.01,SunOnly,FM,0,Partner,NO +130167057,"$300,000 - $399,999",OWNER,English,N,24,75 years or more,English,19350 WARD ST SPC 74,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,Thu-Sun,ME,0,DirectMl,NO +180664506,"$125,000 - $149,999",OWNER,Indian,N,6,45-49,English,28 CEDAR TREE LN,CA,IRVINE,ORANGE,92612,$0.01 - $0.50,Thu-Sun,MW,0,Partner,NO +180168377,"$ 50,000 - $59,999",OWNER,Vietnamese,Y,12,50-54,English,5104 W 1ST ST APT F,CA,SANTA ANA,ORANGE,92703,$2.00 - $2.99,Thu-Sun,MW,0,DirectMl,YES +181284199,"$100,000 - $124,999",OWNER,Hispanic,N,4,30-34,Spanish,1811 BREA BLVD,CA,FULLERTON,ORANGE,92835,$4.00 - $4.99,SoooTFS,YW,0,Crew,NO +180677370,"$ 20,000 - $29,999",OWNER,Hispanic,N,30,55-59,Spanish,26498 LA ZANJA ST,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$0 - $0.01,SunOnly,ME,0,Partner,NO +130277993,"Under $20,000",OWNER,Hispanic,N,38,75 years or more,English,10822 OAK ST,CA,STANTON,ORANGE,90680,$7.00 - $7.99,7Day,FE,0,Crew,NO +180640255,"$125,000 - $149,999",OWNER,Japanese,Y,5,35-39,Japanese,18087 S 3RD ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +130111421,"$ 80,000 - $89,999",RENTER,English,N,2,45-49,English,2404 VIA MARIPOSA W UNIT 2G,CA,LAGUNA WOODS,ORANGE,92637,$4.00 - $4.99,7DayT,MM,0,CustCall,NO +180431408,"$ 60,000 - $69,999",OWNER,Hispanic,Y,17,50-54,Spanish,1323 N ACACIA ST,CA,ANAHEIM,ORANGE,92805,$2.00 - $2.99,SunOnly,FM,0,Crew,NO +180350710,"$100,000 - $124,999",OWNER,Hispanic,N,23,60-64,Spanish,2149 W WELLINGTON CIR,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,Thu-Sun,FM,0,TeleOut,NO +150505810,"$ 50,000 - $59,999",RENTER,Italian,N,2,55-59,English,7701 WARNER AVE APT F99,CA,HUNTINGTON BEACH,ORANGE,92647,$4.00 - $4.99,7Day,YM,0,Crew,NO +140311111,"$400,000 - $499,999",OWNER,English,N,31,75 years or more,English,17522 BECKWALL LN,CA,HUNTINGTON BEACH,ORANGE,92649,$4.00 - $4.99,7Day,MW,0,Kiosk,NO +140453967,"$ 60,000 - $69,999",RENTER,English,N,7,45-49,English,25885 TRABUCO RD APT 244,CA,LAKE FOREST,ORANGE,92630,$4.00 - $4.99,7Day,FM,0,Kiosk,NO +180426028,"$125,000 - $149,999",OWNER,Hispanic,N,33,50-54,Spanish,13952 EUCLID ST,CA,GARDEN GROVE,ORANGE,92843,$0 - $0.01,SunOnly,YM,0,Partner,NO +160125991,"$ 50,000 - $59,999",OWNER,English,N,1,55-59,English,28282 YANEZ,CA,MISSION VIEJO,ORANGE,92692,$4.00 - $4.99,7Day,MM,0,Kiosk,NO +130442143,"$100,000 - $124,999",OWNER,unknown,N,7,75 years or more,,25422 SEA BLUFFS DR UNIT 302,CA,DANA POINT,ORANGE,92629,$2.00 - $2.99,7Day,MM,0,CustCall,NO +120116215,"$ 30,000 - $39,999",OWNER,Hispanic,Y,16,35-39,English,284 S THOMAS ST,CA,ORANGE,ORANGE,92869,$2.00 - $2.99,7Day,MM,0,CustCall,NO +150503094,"Under $20,000",RENTER,Hispanic,Y,7,35-39,Spanish,1131 N ONONDAGA AVE APT 4,CA,ANAHEIM,ORANGE,92801,$4.00 - $4.99,7Day,YM,0,TeleOut,NO +181199711,"$ 80,000 - $89,999",OWNER,unknown,N,32,65-69,,906 RIEDEL AVE,CA,FULLERTON,ORANGE,92831,$0 - $0.01,SunOnly,MM,0,Partner,NO +180607916,"$100,000 - $124,999",OWNER,Hispanic,N,22,55-59,Spanish,2415 N PACIFIC AVE,CA,SANTA ANA,ORANGE,92706,$4.00 - $4.99,Thu-Sun,MM,0,Partner,NO +140240201,"$125,000 - $149,999",OWNER,English,N,45,70-74,English,11702 BLUE JAY LN,CA,GARDEN GROVE,ORANGE,92841,$0.01 - $0.50,SunOnly,MM,0,CustCall,YES +180469630,"$ 70,000 - $79,999",RENTER,Korean,N,2,40-44,Korean,6 BUTTERFIELD,CA,IRVINE,ORANGE,92604,$0 - $0.01,7Day,FM,0,Partner,NO +181364275,"$100,000 - $124,999",OWNER,Slovenian (Slovene),N,10,45-49,Slovenian,8282 SEAPORT DR,CA,HUNTINGTON BEACH,ORANGE,92646,$0.01 - $0.50,Thu-Sun,MW,0,Partner,NO +181452271,"$100,000 - $124,999",OWNER,English,Y,17,45-49,English,2306 HARTFORD AVE,CA,FULLERTON,ORANGE,92831,$3.00 - $3.99,Thu-Sun,MM,0,Crew,NO +181339552,"$100,000 - $124,999",OWNER,Italian,N,24,55-59,English,6802 ANTHONY AVE,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180286062,"$ 70,000 - $79,999",OWNER,English,Y,17,40-44,English,10201 KUKUI DR,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,Thu-Sun,FM,0,Crew,NO +181225008,"$125,000 - $149,999",OWNER,Indian,Y,1,50-54,Hindi,18814 STARK AVE,CA,CERRITOS,LOS ANGELES,90703,$0 - $0.01,SunOnly,MM,0,Partner,YES +150246649,"$ 90,000 - $99,999",OWNER,Irish,N,10,75 years or more,English,3379 PUNTA ALTA UNIT C,CA,LAGUNA WOODS,ORANGE,92637,$4.00 - $4.99,7Day,MM,0,SCinsert,YES +120410929,"$500,000 Plus",OWNER,Irish,Y,20,50-54,English,30 CLEAR CRK,CA,IRVINE,ORANGE,92620,$10.00 - $10.99,7Day,MW,1,CustCall,NO +181337018,"$200,000 - $249,999",OWNER,English,Y,18,55-59,English,13272 IOWA ST,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +150514728,"$ 40,000 - $49,999",OWNER,Italian,N,21,55-59,English,1059 S DAYBREAK CT,CA,ANAHEIM,ORANGE,92808,$1.00 - $1.99,7Day,MM,0,TeleIn,NO +181427453,"$100,000 - $124,999",OWNER,Japanese,N,12,40-44,Japanese,12 KELSEY,CA,IRVINE,ORANGE,92618,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +140602871,"$175,000 - $199,999",OWNER,German,N,19,55-59,English,522 E AVENIDA SAN JUAN,CA,SAN CLEMENTE,ORANGE,92672,$0.01 - $0.50,SunOnly,MW,0,TeleIn,NO +180165863,"$ 20,000 - $29,999",RENTER,German,N,13,70-74,English,6442 SAINT PAUL CIR APT B,CA,HUNTINGTON BEACH,ORANGE,92647,$0.51 - $0.99,7Day,ME,0,System,NO +160228716,"$100,000 - $124,999",OWNER,unknown,N,3,70-74,,30 FRONTIER ST,CA,TRABUCO CANYON,ORANGE,92679,$4.00 - $4.99,7Day,FW,0,CustCall,NO +130282221,"Under $20,000",RENTER,Scottish (Scotch),N,7,50-54,English,19361 BROOKHURST ST SPC 119,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,Fri-Sun,ME,0,DirectMl,NO +180616046,"Under $20,000",OWNER,Hispanic,N,40,75 years or more,Spanish,606 NEWKIRK AVE,CA,FULLERTON,ORANGE,92832,$0.01 - $0.50,SunOnly,ME,0,Partner,NO +181477272,"Under $20,000",OWNER,Hispanic,N,9,75 years or more,Spanish,4901 W 5TH ST,CA,SANTA ANA,ORANGE,92703,$3.00 - $3.99,Thu-Sun,YM,0,Crew1,NO +180497315,"$ 80,000 - $89,999",OWNER,Chinese,N,2,30-34,Chinese,382 CABRILLO CIR,CA,CORONA,RIVERSIDE,92879,$0.51 - $0.99,Thu-Sun,MM,0,Crew,NO +120463730,"$100,000 - $124,999",OWNER,Vietnamese,N,1,30-34,Vietnamese,19682 TORRES WAY,CA,TRABUCO CANYON,ORANGE,92679,$5.00 - $5.99,7Day,FW,0,VRU,NO +150247468,"$ 70,000 - $79,999",OWNER,Vietnamese,N,9,30-34,Vietnamese,1127 S SHAWNEE DR,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,FM,0,Crew,NO +150155327,"$ 50,000 - $59,999",RENTER,Italian,N,4,50-54,English,614 MARIGOLD AVE,CA,CORONA DEL MAR,ORANGE,92625,$5.00 - $5.99,7Day,YW,0,VRU,NO +150003714,"$100,000 - $124,999",OWNER,unknown,N,51,75 years or more,,17431 E SANTA CLARA AVE,CA,SANTA ANA,ORANGE,92705,$0,7Day,MM,0,CustCall,YES +180457634,"$100,000 - $124,999",OWNER,Hispanic,N,18,60-64,Spanish,6165 JEFFREY MARK ST,CA,CYPRESS,ORANGE,90630,$7.00 - $7.99,7Day,MW,0,DirectMl,YES +180621741,"$ 70,000 - $79,999",OWNER,unknown,N,8,50-54,,745 LA CUMBRE ST,CA,CORONA,RIVERSIDE,92879,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +110252175,"$300,000 - $399,999",OWNER,Dutch,Y,23,60-64,English,829 E CHISHOLM CT,CA,BREA,ORANGE,92821,$10.00 - $10.99,7Day,MW,7,CustCall,NO +181468747,"$125,000 - $149,999",OWNER,Hispanic,N,12,24 years or less,English,12832 SYCAMORE ST,CA,GARDEN GROVE,ORANGE,92841,$3.00 - $3.99,7Day,FE,0,TeleOut,NO +180757629,"$150,000 - $174,999",OWNER,English,Y,23,24 years or less,English,6885 SANDBURG DR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,MM,0,Partner,NO +180661322,"Under $20,000",RENTER,Portuguese,N,2,24 years or less,Portuguese,1146 W BROOK ST APT 6,CA,SANTA ANA,ORANGE,92703,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +170186500,"$ 80,000 - $89,999",OWNER,English,N,5,65-69,English,317 MAGPIE LN,CA,FOUNTAIN VALLEY,ORANGE,92708,$9.00 - $9.99,7Day,MM,0,CustCall,NO +130161261,"$ 70,000 - $79,999",OWNER,Hispanic,Y,21,50-54,Spanish,8254 CALENDULA DR,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +170320081,"$100,000 - $124,999",RENTER,Italian,N,2,40-44,English,1935 W CHANTICLEER RD,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,SunOnly,MW,0,Internet,NO +181437421,"$ 50,000 - $59,999",OWNER,French,N,13,75 years or more,English,33092 HALFMOON CT,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$4.00 - $4.99,7Day,MM,0,CustCall,YES +181278632,"$100,000 - $124,999",OWNER,Vietnamese,N,8,50-54,Vietnamese,10211 JON DAY DR,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,7Day,MW,0,TeleIn,NO +110513373,"$125,000 - $149,999",OWNER,English,N,14,50-54,English,3116 MOUNTAIN VIEW DR,CA,LAGUNA BEACH,ORANGE,92651,$3.00 - $3.99,7Day,YW,0,TeleIn,NO +181414428,"$100,000 - $124,999",OWNER,Scottish (Scotch),N,1,45-49,English,33222 CHRISTINA DR,CA,DANA POINT,ORANGE,92629,$0.01 - $0.50,SunOnly,MW,0,Internet,YES +181188347,"$100,000 - $124,999",RENTER,Scottish (Scotch),N,2,40-44,English,2737 N CANAL ST,CA,ORANGE,ORANGE,92865,$0 - $0.01,7Day,YM,0,Partner,NO +181438424,"$125,000 - $149,999",OWNER,Hispanic,N,8,35-39,Spanish,4609 E VIA LA PALOMA UNIT 4,CA,ORANGE,ORANGE,92869,$0.01 - $0.50,7Day,YW,0,Crew,YES +160047885,"$ 50,000 - $59,999",OWNER,English,N,11,75 years or more,English,1330 E GLENWOOD AVE,CA,FULLERTON,ORANGE,92831,$10.00 - $10.99,7Day,MW,0,CustCall,YES +180364270,"$ 80,000 - $89,999",RENTER,unknown,N,16,40-44,,34021 COLEGIO DR APT A,CA,DANA POINT,ORANGE,92629,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +180418741,"$ 70,000 - $79,999",OWNER,Vietnamese,N,28,50-54,Vietnamese,16380 SAN JACINTO ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$0.01 - $0.50,SunOnly,FM,0,System,NO +150573381,"$ 20,000 - $29,999",RENTER,English,N,1,30-34,English,840 IRVINE AVE APT S202,CA,NEWPORT BEACH,ORANGE,92663,$1.00 - $1.99,7Day,ME,0,CircAdm,NO +181309427,"$125,000 - $149,999",OWNER,Vietnamese,N,7,50-54,Vietnamese,15931 BOWIE ST,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,Thu-Sun,MM,0,Partner,YES +120537916,"$175,000 - $199,999",OWNER,English,N,2,50-54,English,49 BOWER TREE,CA,IRVINE,ORANGE,92603,$2.00 - $2.99,7Day,YW,0,CustCall,NO +181286663,"$ 50,000 - $59,999",RENTER,English,N,3,30-34,English,821 CALLE PUENTE APT 2,CA,SAN CLEMENTE,ORANGE,92672,$0.01 - $0.50,Thu-Sun,YE,0,Crew,NO +181417148,"$ 90,000 - $99,999",OWNER,Hispanic,N,18,50-54,Spanish,13881 ROSITA PL,CA,GARDEN GROVE,ORANGE,92843,$3.00 - $3.99,Thu-Sun,FE,0,Crew,NO +180589312,"Under $20,000",RENTER,unknown,N,3,75 years or more,,8190 13TH ST APT 339,CA,WESTMINSTER,ORANGE,92683,$3.00 - $3.99,7Day,ME,0,CustCall,NO +150111598,"$100,000 - $124,999",OWNER,Hispanic,N,15,55-59,Spanish,5909 E CALLE CEDRO,CA,ANAHEIM,ORANGE,92807,$0 - $0.01,SunOnly,FM,0,CircAdm,NO +150043411,"$300,000 - $399,999",OWNER,English,N,18,65-69,English,19 NEWCASTLE LN,CA,LAGUNA NIGUEL,ORANGE,92677,$4.00 - $4.99,7Day,MW,0,CustCall,NO +180370131,"$ 50,000 - $59,999",OWNER,English,N,17,50-54,English,14003 BIOLA AVE,CA,LA MIRADA,LOS ANGELES,90638,$0 - $0.01,Thu-Sun,FM,0,CircAdm,NO +130589612,"$ 70,000 - $79,999",OWNER,unknown,N,7,60-64,,28071 VIA PEDRELL,CA,MISSION VIEJO,ORANGE,92692,$1.00 - $1.99,Thu-Sun,MM,0,CustCall,NO +130064598,"Under $20,000",OWNER,Italian,N,15,75 years or more,English,10550 WESTERN AVE SPC 70,CA,STANTON,ORANGE,90680,$2.00 - $2.99,7Day,MM,1,CustCall,NO +130153890,"$125,000 - $149,999",OWNER,English,N,32,55-59,English,77 S LA SENDA DR,CA,LAGUNA BEACH,ORANGE,92651,$1.00 - $1.99,7Day,MW,0,TeleIn,NO +180374811,"Under $20,000",OWNER,Hispanic,N,27,60-64,Spanish,1808 CEDAR ST,CA,SANTA ANA,ORANGE,92707,$1.00 - $1.99,SunOnly,FE,0,TeleIn,NO +160584134,"$ 20,000 - $29,999",OWNER,Irish,N,7,70-74,English,13375 SAVANNA,CA,TUSTIN,ORANGE,92782,$2.00 - $2.99,SunOnly,MW,0,TeleIn,NO +180448843,"$ 30,000 - $39,999",OWNER,English,N,7,50-54,English,15925 RICHVALE DR,CA,WHITTIER,LOS ANGELES,90604,$1.00 - $1.99,7Day,MM,0,CustCall,NO +120331185,"$125,000 - $149,999",OWNER,Hispanic,N,19,60-64,Spanish,1706 CLEAR CREEK DR,CA,FULLERTON,ORANGE,92833,$4.00 - $4.99,7Day,MM,0,TeleIn,NO +181314064,"$ 80,000 - $89,999",RENTER,Portuguese,N,9,65-69,English,5815 E LA PALMA AVE SPC 223,CA,ANAHEIM,ORANGE,92807,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +181532562,"$ 80,000 - $89,999",OWNER,Indian,Y,26,55-59,English,6760 SAN ALTO WAY,CA,BUENA PARK,ORANGE,90620,$3.00 - $3.99,THU-SUN,YM,0,Crew1,YES +150253831,"$ 20,000 - $29,999",RENTER,Hispanic,Y,7,35-39,Spanish,319 E VALENCIA AVE,CA,ANAHEIM,ORANGE,92805,$4.00 - $4.99,7Day,FE,0,TeleIn,NO +180518210,"$ 20,000 - $29,999",RENTER,Hispanic,N,1,30-34,English,1361 EL CAMINO REAL UNIT 308,CA,TUSTIN,ORANGE,92780,$2.00 - $2.99,7Day,YM,0,Kiosk,NO +181298619,"Under $20,000",OWNER,Irish,N,41,75 years or more,English,10280 WESTERN AVE,CA,STANTON,ORANGE,90680,$0 - $0.01,SunOnly,FM,0,Partner,NO +180511887,"$ 60,000 - $69,999",OWNER,English,N,6,45-49,English,22806 LEO LN,CA,LAKE FOREST,ORANGE,92630,$0.01 - $0.50,7Day,FM,0,Crew,NO +150265010,"$125,000 - $149,999",OWNER,Scottish (Scotch),N,29,60-64,English,12271 WALNUT AVE,CA,GARDEN GROVE,ORANGE,92840,$2.00 - $2.99,SatSun,MW,0,RetenIn,NO +110507108,"$ 30,000 - $39,999",OWNER,Scottish (Scotch),N,12,70-74,English,130 LA PLAZA DR,CA,LA HABRA,ORANGE,90631,$4.00 - $4.99,7Day,MM,0,TeleIn,NO +140423272,"$ 90,000 - $99,999",OWNER,unknown,Y,5,50-54,,14732 GAGELY DR,CA,LA MIRADA,LOS ANGELES,90638,,7Day,MW,0,CustCall,NO +180347130,"$ 20,000 - $29,999",OWNER,Hispanic,N,11,75 years or more,Spanish,13272 SPRINGDALE ST,CA,WESTMINSTER,ORANGE,92683,$1.00 - $1.99,SunOnly,FM,0,Crew,NO +160306766,"$ 80,000 - $89,999",RENTER,Japanese,N,1,55-59,Japanese,23711 MARINER DR APT 37,CA,DANA POINT,ORANGE,92629,$0.51 - $0.99,SunOnly,YW,0,CustCall,NO +170493849,"$ 30,000 - $39,999",OWNER,Hispanic,N,6,75 years or more,Spanish,1710 W PENDLETON AVE,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,FM,0,TeleIn,NO +170486562,"$100,000 - $124,999",OWNER,Hispanic,N,22,60-64,English,301 CALLE SANDIA,CA,SAN CLEMENTE,ORANGE,92672,$2.00 - $2.99,Thu-Sun,MM,0,TeleIn,YES +150033870,"$ 50,000 - $59,999",RENTER,Chinese,N,1,30-34,English,118 N DAHLIA DR,CA,ANAHEIM,ORANGE,92801,$0 - $0.01,SunOnly,FM,0,Partner,YES +180216612,"$125,000 - $149,999",RENTER,Armenian,N,3,75 years or more,English,860 MORNINGSIDE DR APT C403,CA,FULLERTON,ORANGE,92835,$1.00 - $1.99,7Day,MM,0,DirectMl,NO +170408323,"$150,000 - $174,999",OWNER,English,N,20,60-64,English,1624 IOWA ST UNIT A,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,SunOnly,FM,1,VRU,YES +120396215,"$ 90,000 - $99,999",OWNER,German,N,23,60-64,English,212 N JEWELL PL,CA,ORANGE,ORANGE,92868,$6.00 - $6.99,7Day,MM,0,CustCall,NO +181374829,"$ 40,000 - $49,999",OWNER,German,N,7,30-34,German,711 VIA BERNARDO,CA,CORONA,RIVERSIDE,92882,$3.00 - $3.99,7Day,MM,0,Crew,NO +130597466,"Under $20,000",RENTER,English,N,2,24 years or less,English,12152 LAGUNA ST APT 4,CA,GARDEN GROVE,ORANGE,92840,$4.00 - $4.99,7Day,FE,0,CustCall,NO +130574730,"$ 90,000 - $99,999",RENTER,English,N,2,30-34,English,70 PALATINE APT 311,CA,IRVINE,ORANGE,92612,$3.00 - $3.99,SoooTFS,ME,0,TeleOut,NO +120105575,"$ 20,000 - $29,999",OWNER,English,N,21,75 years or more,English,8517 EDGEBROOK DR,CA,GARDEN GROVE,ORANGE,92844,$2.00 - $2.99,Thu-Sun,FM,0,TeleOut,NO +181394280,"$ 30,000 - $39,999",OWNER,Hispanic,Y,24,70-74,Spanish,13001 SUNNYBROOK LN,CA,LA MIRADA,LOS ANGELES,90638,$0 - $0.01,SunOnly,FM,0,Partner,NO +181273278,"Under $20,000",RENTER,Hispanic,N,18,65-69,Spanish,133 S MELROSE ST,CA,PLACENTIA,ORANGE,92870,$4.00 - $4.99,7Day,FE,0,Crew,NO +180389848,"$ 70,000 - $79,999",OWNER,Vietnamese,N,26,45-49,Vietnamese,10242 BELLEHURST AVE,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,MM,0,Partner,NO +180637171,"$200,000 - $249,999",OWNER,Irish,Y,6,55-59,English,3023 PANSY CIR,CA,CORONA,RIVERSIDE,92881,$0.01 - $0.50,Thu-Sun,FM,0,Partner,NO +181403125,"$ 30,000 - $39,999",RENTER,Hispanic,N,2,30-34,Spanish,435 S SUSAN ST APT C,CA,SANTA ANA,ORANGE,92704,$3.00 - $3.99,7Day,FE,0,TeleIn,NO +160544990,"Under $20,000",RENTER,Arab,N,6,30-34,English,1913 VERANO PL,CA,IRVINE,ORANGE,92617,$4.00 - $4.99,7Day,YE,0,CustCall,NO +140518472,"$ 50,000 - $59,999",OWNER,Hispanic,N,5,60-64,English,764 WOODCREST AVE,CA,BREA,ORANGE,92821,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +140412107,"$300,000 - $399,999",OWNER,Hispanic,N,18,50-54,English,188 CHERRYBROOK LN,CA,IRVINE,ORANGE,92618,$0.01 - $0.50,SunOnly,MW,0,DirectMl,YES +181182127,"$100,000 - $124,999",OWNER,English,N,2,45-49,English,165 S BATAVIA ST,CA,ORANGE,ORANGE,92868,$0 - $0.01,SunOnly,YM,0,Partner,NO +140573282,"$300,000 - $399,999",OWNER,Italian,N,24,65-69,English,28005 BLACKBERRY WAY,CA,YORBA LINDA,ORANGE,92887,$4.00 - $4.99,Thu-Sun,MW,18,DirectMl,YES +180206040,"$ 40,000 - $49,999",OWNER,Italian,Y,18,55-59,English,14291 JOYCE AVE,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,ME,0,Partner,NO +140593778,"$ 40,000 - $49,999",RENTER,English,N,1,30-34,English,31872 JOSHUA DR APT 11C,CA,TRABUCO CANYON,ORANGE,92679,$1.00 - $1.99,Thu-SunT,FE,0,CustCall,NO +160420719,"$125,000 - $149,999",OWNER,Jewish,Y,23,50-54,English,47 VIA ZAPADOR,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$2.00 - $2.99,SatSun,FM,0,CustCall,NO +110511924,"$ 40,000 - $49,999",RENTER,Italian,N,2,55-59,English,2592 ASSOCIATED RD APT 2,CA,FULLERTON,ORANGE,92835,$4.00 - $4.99,7Day,YM,0,CustCall,NO +130267556,"$150,000 - $174,999",OWNER,Hispanic,N,23,60-64,English,5952 LITTLEFIELD DR,CA,HUNTINGTON BEACH,ORANGE,92648,$1.00 - $1.99,SatSun,MW,0,CustCall,NO +180184630,"$ 60,000 - $69,999",OWNER,Hispanic,Y,2,50-54,English,28383 PUEBLO DR,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,SooooooT,YW,0,Crew,NO +180659061,"$ 30,000 - $39,999",OWNER,Hispanic,N,9,45-49,Spanish,19211 STROH AVE,CA,CORONA,RIVERSIDE,92881,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +130599111,"$125,000 - $149,999",OWNER,Scottish (Scotch),Y,9,45-49,English,16330 MYRTLEWOOD ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$1.00 - $1.99,7Day,MM,0,TeleOut,NO +180313631,"$125,000 - $149,999",OWNER,Chinese,Y,10,50-54,Chinese,194 GARDEN GATE LN,CA,IRVINE,ORANGE,92620,$2.00 - $2.99,Thu-Sun,YW,0,Crew,NO +120535907,"$ 30,000 - $39,999",RENTER,unknown,N,4,25-29,,16682 DOLORES LN APT 2,CA,HUNTINGTON BEACH,ORANGE,92649,$4.00 - $4.99,7Day,YM,31,CustCall,YES +180283624,"$ 20,000 - $29,999",RENTER,Portuguese,Y,7,45-49,English,11221 ANABEL AVE,CA,GARDEN GROVE,ORANGE,92843,$1.00 - $1.99,Thu-Sun,MW,0,Crew,NO +181345604,"$ 40,000 - $49,999",RENTER,Filipino (Philippine),N,2,45-49,English,23625 LOS GRANDES ST,CA,ALISO VIEJO,ORANGE,92656,$0.01 - $0.50,Thu-Sun,MM,0,Crew,NO +110242858,"$200,000 - $249,999",OWNER,English,N,37,75 years or more,English,2869 CALLE HERALDO,CA,SAN CLEMENTE,ORANGE,92673,$7.00 - $7.99,7Day,MM,0,CustCall,YES +180446888,"$ 90,000 - $99,999",OWNER,Hispanic,Y,18,50-54,Spanish,1120 N RAITT ST,CA,SANTA ANA,ORANGE,92703,$2.00 - $2.99,Thu-Sun,FM,0,Crew,NO +160560341,"$ 70,000 - $79,999",OWNER,English,N,4,75 years or more,English,307 S LIBERTY WAY,CA,ORANGE,ORANGE,92869,$2.00 - $2.99,Thu-Sun,MM,0,CustCall,NO +170097502,"$ 80,000 - $89,999",OWNER,Vietnamese,N,4,25-29,English,3120 BERMUDA DR,CA,COSTA MESA,ORANGE,92626,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +110402136,"$ 90,000 - $99,999",OWNER,Russian,N,39,65-69,English,5458 RICHFIELD PL,CA,YORBA LINDA,ORANGE,92886,$0 - $0.01,SunOnly,YW,9,Partner,YES +130516014,"Under $20,000",RENTER,Hispanic,N,8,55-59,Spanish,7121 21ST ST APT 21,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,7Day,FE,0,Crew,NO +160484958,"$ 90,000 - $99,999",OWNER,English,N,4,55-59,English,7625 E SPOTTED PONY LN,CA,ANAHEIM,ORANGE,92808,$5.00 - $5.99,SoooooS,MW,0,System,NO +181203072,"$ 80,000 - $89,999",OWNER,Irish,N,6,30-34,English,5595 WESTMINSTER BLVD,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,Soooooo,FM,0,Kiosk,NO +180286127,"$300,000 - $399,999",OWNER,English,Y,10,45-49,English,304 PASEO PINTO,CA,SAN CLEMENTE,ORANGE,92672,$2.00 - $2.99,Thu-Sun,FW,0,Crew,NO +180342748,"Under $20,000",RENTER,Vietnamese,N,5,40-44,English,8361 GARDEN GROVE BLVD APT 7,CA,GARDEN GROVE,ORANGE,92844,$2.00 - $2.99,Thu-Sun,ME,0,Crew,NO +181452660,"Under $20,000",RENTER,Hispanic,N,2,30-34,English,1860 FASHION AVE APT 1,CA,LONG BEACH,LOS ANGELES,90810,$0.01 - $0.50,SunOnly,FE,0,Crew,YES +180646141,"$175,000 - $199,999",OWNER,Hispanic,N,27,60-64,English,9258 ROYAL PALM BLVD,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,MW,0,Partner,NO +180367360,"$300,000 - $399,999",OWNER,Jewish,N,35,55-59,English,28701 LA SIENA,CA,LAGUNA NIGUEL,ORANGE,92677,$0 - $0.01,SunOnly,MM,0,Partner,NO +110113533,"$ 50,000 - $59,999",OWNER,English,Y,39,70-74,English,400 KING PL,CA,FULLERTON,ORANGE,92833,$2.00 - $2.99,SatSun,FM,0,OutMedia,NO +180582208,"$ 40,000 - $49,999",RENTER,English,N,2,45-49,English,2415 E 6TH ST APT 3,CA,LONG BEACH,LOS ANGELES,90814,$2.00 - $2.99,SunOnly,YM,0,Crew,NO +150582110,"$ 80,000 - $89,999",OWNER,unknown,N,9,50-54,,640 N DEXTER ST,CA,LA HABRA,ORANGE,90631,$2.00 - $2.99,Thu-Sun,MM,0,DirectMl,NO +180411784,"$ 60,000 - $69,999",RENTER,Welsh,N,2,30-34,English,12200 MONTECITO RD APT F202,CA,SEAL BEACH,ORANGE,90740,$2.00 - $2.99,SunOnly,FM,0,SCinsert,NO +140157272,"$200,000 - $249,999",OWNER,Chinese,N,10,40-44,English,11751 REAGAN ST,CA,LOS ALAMITOS,ORANGE,90720,$4.00 - $4.99,7Day,YM,0,CustCall,NO +160257759,"$175,000 - $199,999",OWNER,Scottish (Scotch),Y,6,35-39,English,5062 CELLINI DR,CA,CHINO HILLS,SAN BERNARDINO,91709,$0.51 - $0.99,Thu-Sun,FM,0,System,NO +181313602,"$ 30,000 - $39,999",OWNER,English,N,21,45-49,English,11906 212TH ST,CA,LAKEWOOD,LOS ANGELES,90715,$0.01 - $0.50,Thu-Sun,MM,0,Crew,NO +180455906,"$ 60,000 - $69,999",RENTER,Hispanic,N,4,65-69,English,1260 WALNUT AVE APT 12,CA,TUSTIN,ORANGE,92780,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +130582416,"$100,000 - $124,999",OWNER,German,Y,14,50-54,German,1787 HUMMINGBIRD DR,CA,COSTA MESA,ORANGE,92626,,7DayOL,MW,0,CircAdm,NO +180441854,"$ 30,000 - $39,999",RENTER,Hispanic,N,6,45-49,English,810 S SULLIVAN ST APT M1,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,FE,0,Partner,NO +160608683,"$ 60,000 - $69,999",OWNER,English,N,31,60-64,English,441 BISHOP DR,CA,LA HABRA,ORANGE,90631,$0 - $0.01,7Day,MM,0,Partner,YES +160000320,"$125,000 - $149,999",OWNER,Irish,N,3,75 years or more,English,3331 E ROMELLE AVE,CA,ORANGE,ORANGE,92869,$0 - $0.01,7Day,FM,0,CircAdm,NO +180589516,"$ 40,000 - $49,999",RENTER,German,N,2,25-29,English,111 W ORANGEWOOD AVE APT C4,CA,ANAHEIM,ORANGE,92802,$2.00 - $2.99,SunOnly,FE,0,Crew,NO +180499557,"$ 60,000 - $69,999",OWNER,English,N,38,70-74,English,23612 VIA SAN GIL,CA,MISSION VIEJO,ORANGE,92691,$4.00 - $4.99,7Day,MW,0,DirectMl,YES +180415462,"$ 30,000 - $39,999",RENTER,Hispanic,N,6,25-29,Spanish,1824 W 2ND ST,CA,SANTA ANA,ORANGE,92703,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +181546007,"$ 20,000 - $29,999",RENTER,Hispanic,N,11,35-39,Spanish,539 N ANNA DR APT G,CA,ANAHEIM,ORANGE,92805,$3.00 - $3.99,THU-SUN,FE,0,Crew1,YES +180432580,"$ 30,000 - $39,999",OWNER,Arab,N,6,65-69,English,251 S GLENVIEW PL,CA,ORANGE,ORANGE,92868,$2.00 - $2.99,Thu-Sun,MW,0,Crew,NO +130054322,"$175,000 - $199,999",OWNER,Scottish (Scotch),N,13,75 years or more,English,5580 MEADOW LAKE LN,CA,YORBA LINDA,ORANGE,92887,$5.00 - $5.99,7Day,FW,0,CustCall,NO +180692387,"$200,000 - $249,999",RENTER,English,N,4,25-29,English,258 QUINCY AVE APT A,CA,LONG BEACH,LOS ANGELES,90803,$9.00 - $9.99,7Day,YM,0,Crew,NO +180195276,"$ 40,000 - $49,999",OWNER,Hispanic,N,37,65-69,Spanish,8502 MADISON AVE,CA,MIDWAY CITY,ORANGE,92655,$2.00 - $2.99,7Day,FM,0,SCinsert,NO +170545929,"$300,000 - $399,999",OWNER,English,Y,11,40-44,English,34 BOWER LN,CA,LADERA RANCH,ORANGE,92694,$2.00 - $2.99,SatSun,FW,0,System,NO +180508123,"$200,000 - $249,999",OWNER,Irish,N,1,45-49,English,28161 MONTECITO UNIT 41,CA,LAGUNA NIGUEL,ORANGE,92677,$1.00 - $1.99,7Day,YM,0,DirectMl,NO +180670849,"$ 50,000 - $59,999",RENTER,English,N,5,25-29,English,401 W ORANGEWOOD AVE APT M104,CA,ANAHEIM,ORANGE,92802,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +110124873,"Under $20,000",OWNER,English,N,29,75 years or more,English,13372 MARTY LN,CA,GARDEN GROVE,ORANGE,92843,$10.00 - $10.99,7Day,MM,0,CustCall,YES +130594659,"$200,000 - $249,999",OWNER,Italian,N,22,70-74,English,2454 CALLE AQUAMARINA,CA,SAN CLEMENTE,ORANGE,92673,$6.00 - $6.99,7Day,MW,3,TeleIn,YES +160085713,"$125,000 - $149,999",OWNER,German,Y,4,40-44,English,3271 SHAKESPEARE DR,CA,LOS ALAMITOS,ORANGE,90720,$7.00 - $7.99,7Day,YM,0,VRU,NO +181464836,"$ 90,000 - $99,999",OWNER,English,N,33,70-74,English,3136 LEES AVE,CA,LONG BEACH,LOS ANGELES,90808,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +140359250,"$ 70,000 - $79,999",OWNER,English,N,23,60-64,English,12560 HASTER ST SPC 90,CA,GARDEN GROVE,ORANGE,92840,$0 - $0.01,SunOnly,FE,0,Partner,NO +180618943,"Under $20,000",OWNER,Chinese,N,18,70-74,Chinese,6512 HUMBOLDT AVE,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +180607217,"$ 20,000 - $29,999",OWNER,Hispanic,Y,20,45-49,English,442 S PACIFIC AVE,CA,SANTA ANA,ORANGE,92703,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180462444,"$ 60,000 - $69,999",OWNER,Hispanic,N,13,40-44,Spanish,13903 PARKWAY DR,CA,GARDEN GROVE,ORANGE,92843,$0 - $0.01,SunOnly,FE,0,Partner,NO +180594739,"$ 30,000 - $39,999",OWNER,Hispanic,N,6,45-49,English,10922 JEAN ST,CA,ANAHEIM,ORANGE,92804,$7.00 - $7.99,7Day,FM,3,InPaper,NO +130167596,"Under $20,000",RENTER,Hispanic,N,3,25-29,Spanish,2341 E SANTA CLARA AVE APT B,CA,SANTA ANA,ORANGE,92705,$1.00 - $1.99,SunOnlyT,FE,0,CustCall,NO +180639707,"$ 30,000 - $39,999",RENTER,English,N,3,45-49,English,26 CUPERTINO CIR,CA,ALISO VIEJO,ORANGE,92656,$0.51 - $0.99,Thu-Sun,YM,0,Crew,NO +180611262,"Under $20,000",RENTER,Italian,N,7,60-64,English,1240 N ROBIN ST APT A,CA,ANAHEIM,ORANGE,92801,$0.01 - $0.50,SunOnly,ME,0,Partner,NO +130541557,"$ 70,000 - $79,999",OWNER,English,N,27,55-59,English,1606 PORTOLA AVE,CA,SANTA ANA,ORANGE,92705,$1.00 - $1.99,7Day,FM,6,CustCall,YES +180393274,"$175,000 - $199,999",OWNER,unknown,N,15,55-59,,21590 VIA PEPITA,CA,YORBA LINDA,ORANGE,92886,$0.01 - $0.50,SunOnly,FW,0,System,YES +180670456,"$100,000 - $124,999",OWNER,Italian,N,20,70-74,Italian,3877 ARUBA CIR,CA,HUNTINGTON BEACH,ORANGE,92649,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +170490293,"$125,000 - $149,999",OWNER,Slovakian (Slovak),N,3,45-49,English,406 20TH ST,CA,HUNTINGTON BEACH,ORANGE,92648,$2.00 - $2.99,SunOnly,MW,0,RetenIn,NO +180348357,"$ 20,000 - $29,999",OWNER,Hispanic,N,25,55-59,Spanish,1118 S AUSTIN ST,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,MM,0,Partner,NO +180766543,"$ 70,000 - $79,999",OWNER,Korean,Y,23,60-64,English,13131 NINA PL,CA,GARDEN GROVE,ORANGE,92843,$0 - $0.01,SunOnly,FM,0,Partner,NO +181298078,"$ 90,000 - $99,999",OWNER,Vietnamese,N,7,40-44,English,1101 N JACKSON ST,CA,SANTA ANA,ORANGE,92703,$0 - $0.01,7Day,MW,0,Partner,YES +181370906,"$ 20,000 - $29,999",RENTER,Hispanic,N,8,25-29,Spanish,565 S PARKER ST APT B,CA,ORANGE,ORANGE,92868,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +180235819,"$ 70,000 - $79,999",RENTER,Scottish (Scotch),N,1,40-44,English,23592 WINDSONG APT 45K,CA,ALISO VIEJO,ORANGE,92656,$2.00 - $2.99,Thu-Sun,YM,0,Crew,NO +180276668,"$125,000 - $149,999",OWNER,Dutch,N,37,70-74,English,472 ESTHER ST,CA,COSTA MESA,ORANGE,92627,$2.00 - $2.99,7Day,MW,0,TeleIn,YES +181507640,"$200,000 - $249,999",OWNER,unknown,Y,4,45-49,,11912 REAGAN ST,CA,LOS ALAMITOS,ORANGE,90720,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +130303088,"$ 30,000 - $39,999",OWNER,Portuguese,N,9,45-49,Portuguese,1538 S GREENVILLE ST,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,MM,0,TeleIn,NO +170208011,"Under $20,000",RENTER,Hispanic,N,1,24 years or less,English,2828 W LINCOLN AVE APT 100,CA,ANAHEIM,ORANGE,92801,$4.00 - $4.99,7Day,FE,0,DirectMl,NO +180376005,"$200,000 - $249,999",OWNER,English,N,9,60-64,English,19586 DORADO DR,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,Thu-Sun,FW,0,Crew,NO +180540394,"$300,000 - $399,999",OWNER,English,Y,3,75 years or more,English,25 KARAM CT,CA,TRABUCO CANYON,ORANGE,92679,$9.00 - $9.99,7Day,YW,32,Internet,YES +180327674,"$ 90,000 - $99,999",OWNER,English,N,16,60-64,English,2012 NUTWOOD AVE,CA,FULLERTON,ORANGE,92831,$0 - $0.01,7Day,FM,5,TeleIn,YES +140129237,"$ 30,000 - $39,999",OWNER,German,N,31,75 years or more,English,6212 TRINETTE AVE,CA,GARDEN GROVE,ORANGE,92845,$2.00 - $2.99,7Day,MW,39,VRU,YES +110204253,"$ 80,000 - $89,999",RENTER,English,N,1,50-54,English,25032 HIDDEN HILLS RD APT J,CA,LAGUNA NIGUEL,ORANGE,92677,$4.00 - $4.99,7Day,YM,0,CustCall,NO +150115133,"$ 50,000 - $59,999",RENTER,Hispanic,Y,5,50-54,Spanish,1250 S BROOKHURST ST UNIT 1079,CA,ANAHEIM,ORANGE,92804,$2.00 - $2.99,7Day,FE,0,CircAdm,NO +160467787,"$ 70,000 - $79,999",OWNER,Vietnamese,N,2,50-54,English,656 S LASSEN CT,CA,ANAHEIM,ORANGE,92804,$2.00 - $2.99,Fri-Sun,MW,0,CustCall,NO +130453462,"$ 20,000 - $29,999",RENTER,unknown,N,4,55-59,,25835 MARGUERITE PKWY APT 203,CA,MISSION VIEJO,ORANGE,92692,$2.00 - $2.99,SatSun,FE,0,CustCall,NO +170430128,"Under $20,000",RENTER,Jewish,N,7,55-59,English,474 CALLE CADIZ UNIT O,CA,LAGUNA WOODS,ORANGE,92637,$2.00 - $2.99,SatSun,MM,0,CustCall,NO +120274072,"$300,000 - $399,999",OWNER,English,Y,12,40-44,English,7 MESA CIR,CA,ALISO VIEJO,ORANGE,92656,$4.00 - $4.99,7Day,YM,0,RetenIn,NO +180747063,"$ 40,000 - $49,999",RENTER,Hispanic,N,1,25-29,Spanish,2414 W ELDER AVE,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,MM,0,Partner,NO +180371416,"$150,000 - $174,999",OWNER,Pakistani,N,3,50-54,Urdu,30922 BELLE MAISON,CA,LAGUNA NIGUEL,ORANGE,92677,$0.51 - $0.99,Thu-Sun,YW,0,DirectMl,NO +180506590,"$300,000 - $399,999",OWNER,English,Y,19,45-49,English,110 VIA MALAGA,CA,SAN CLEMENTE,ORANGE,92673,$2.00 - $2.99,Soooooo,FW,0,TeleIn,NO +180241030,"Under $20,000",RENTER,Hispanic,Y,17,30-34,Spanish,1810 EVERGREEN ST APT 3,CA,SANTA ANA,ORANGE,92707,$1.00 - $1.99,SunOnly,FE,0,CustCall,NO +180314031,"Under $20,000",RENTER,Hispanic,N,1,25-29,English,747 W LA JOLLA ST APT 113,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,SunOnly,FE,0,TeleIn,NO +180448748,"$ 70,000 - $79,999",OWNER,Hispanic,Y,10,35-39,English,539 HEATHER AVE,CA,LA HABRA,ORANGE,90631,$1.00 - $1.99,Thu-Sun,MM,0,Crew,NO +120129172,"$ 70,000 - $79,999",OWNER,English,Y,11,30-34,English,34 BIRCHWOOD LN,CA,ALISO VIEJO,ORANGE,92656,$0 - $0.01,7Day,FM,0,CircAdm,NO +180246355,"$100,000 - $124,999",OWNER,Hispanic,N,23,60-64,English,8112 AINSWORTH LN,CA,LA PALMA,ORANGE,90623,$0.01 - $0.50,Thu-Sun,FM,0,Partner,YES +180592691,"$ 90,000 - $99,999",OWNER,Irish,N,2,50-54,English,985 S BILLINGS WAY,CA,ANAHEIM,ORANGE,92808,$4.00 - $4.99,7Day,YW,0,Crew,NO +160442223,"$200,000 - $249,999",OWNER,unknown,N,4,35-39,,35 ABYSSINIAN WAY,CA,LADERA RANCH,ORANGE,92694,$0.01 - $0.50,SunOnly,FW,0,Email,NO +130014765,"$500,000 Plus",OWNER,English,Y,27,55-59,English,28550 EVENING BREEZE DR,CA,YORBA LINDA,ORANGE,92887,$4.00 - $4.99,7Day,MW,0,VRU,NO +181315733,"$175,000 - $199,999",OWNER,African (other),Y,22,55-59,English,24206 JUANITA DR,CA,LAGUNA NIGUEL,ORANGE,92677,$0 - $0.01,7Day,YM,0,Partner,YES +180626755,"$ 40,000 - $49,999",RENTER,Austrian,N,1,35-39,English,2536 S LAURELWOOD,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +170405299,"$ 60,000 - $69,999",OWNER,German,Y,21,50-54,English,1736 LAKE ST,CA,HUNTINGTON BEACH,ORANGE,92648,$1.00 - $1.99,Thu-Sun,MW,0,CircAdm,NO +170481410,"Under $20,000",RENTER,unknown,N,2,60-64,,13680 EL DORADO DR APT 33E,CA,SEAL BEACH,ORANGE,90740,$2.00 - $2.99,7Day,ME,0,CustCall,NO +181548243,"$ 30,000 - $39,999",RENTER,Hispanic,N,3,25-29,Spanish,7636 EL CAPITAN WAY,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,YM,0,Internet,YES +180136798,"$ 80,000 - $89,999",RENTER,French,N,1,25-29,English,2775 MESA VERDE DR E APT N103,CA,COSTA MESA,ORANGE,92626,$0.01 - $0.50,7Day,YM,0,CircAdm,NO +180498699,"$125,000 - $149,999",OWNER,Irish,N,5,40-44,English,27 LOS INDIOS,CA,IRVINE,ORANGE,92618,$1.00 - $1.99,SunOnly,YW,0,Internet,NO +180066783,"$100,000 - $124,999",OWNER,Italian,N,4,45-49,English,25 SNOWBERRY,CA,IRVINE,ORANGE,92604,$1.00 - $1.99,SunOnly,FM,0,Crew,NO +180394821,"$400,000 - $499,999",RENTER,Hispanic,N,15,50-54,English,172 LA VERNE AVE APT 3,CA,LONG BEACH,LOS ANGELES,90803,$0 - $0.01,SunOnly,YM,0,Partner,NO +180559749,"$ 60,000 - $69,999",OWNER,Japanese,N,12,45-49,English,10037 VICTORIA AVE,CA,WHITTIER,LOS ANGELES,90604,$0 - $0.01,SunOnly,FM,0,Partner,NO +180332039,"$125,000 - $149,999",OWNER,Irish,N,7,75 years or more,English,217 W AVENIDA SAN ANTONIO,CA,SAN CLEMENTE,ORANGE,92672,$3.00 - $3.99,7Day,MW,0,TeleIn,YES +140220181,"$ 20,000 - $29,999",OWNER,Hispanic,Y,33,70-74,Spanish,128 E VALENCIA DR,CA,FULLERTON,ORANGE,92832,$0 - $0.01,SunOnly,FE,0,TeleIn,NO +150515036,"$ 90,000 - $99,999",OWNER,Hispanic,N,23,40-44,Spanish,809 E BORCHARD AVE,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,Thu-SunT,MW,0,TeleIn,NO +181526713,"Under $20,000",RENTER,Dutch,N,2,50-54,English,1151 WALNUT AVE APT 1,CA,LONG BEACH,LOS ANGELES,90813,$3.00 - $3.99,7DAY,FE,0,Kiosk4,YES +180488207,"$ 50,000 - $59,999",OWNER,Hispanic,Y,24,45-49,Spanish,487 W SUMMERFIELD CIR,CA,ANAHEIM,ORANGE,92802,$0 - $0.01,SunOnly,FM,0,Partner,NO +180489861,"$ 90,000 - $99,999",OWNER,German,N,23,60-64,English,12802 TIMBER RD UNIT G,CA,GARDEN GROVE,ORANGE,92840,$1.00 - $1.99,Thu-Sun,MM,0,Crew,NO +160126698,"$175,000 - $199,999",OWNER,English,N,5,70-74,English,16 CALLE DE LA LUNA,CA,SAN CLEMENTE,ORANGE,92673,$1.00 - $1.99,7DayOL,FW,0,Internet,NO +140323872,"$ 90,000 - $99,999",OWNER,English,N,4,75 years or more,English,3998 ALADDIN DR,CA,HUNTINGTON BEACH,ORANGE,92649,$1.00 - $1.99,7Day,MM,0,DirectMl,NO +180186323,"$ 50,000 - $59,999",OWNER,unknown,N,17,40-44,,5869 PORTSMOUTH RD,CA,YORBA LINDA,ORANGE,92887,$2.00 - $2.99,7Day,YW,0,Crew,NO +180443288,"$ 50,000 - $59,999",OWNER,English,N,40,65-69,English,17266 FLAME TREE CIR,CA,FOUNTAIN VALLEY,ORANGE,92708,$5.00 - $5.99,7Day,MW,0,CustCall,NO +180577041,"$125,000 - $149,999",RENTER,English,Y,2,25-29,English,1512 SIMPLICITY,CA,IRVINE,ORANGE,92620,$7.00 - $7.99,7Day,FM,0,Crew,NO +180249019,"$300,000 - $399,999",OWNER,unknown,N,12,55-59,,2579 THORMAN PL,CA,TUSTIN,ORANGE,92782,$4.00 - $4.99,7Day,FW,1,TeleIn,NO +110391202,"$ 20,000 - $29,999",OWNER,Scottish (Scotch),N,20,75 years or more,English,73 PASEO DE TONER,CA,BREA,ORANGE,92821,$7.00 - $7.99,7Day,MM,6,TeleIn,NO +180626304,"$300,000 - $399,999",OWNER,Hispanic,N,29,65-69,Spanish,2309 W KNOX AVE,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +181366683,"$ 40,000 - $49,999",RENTER,Welsh,N,2,35-39,English,1717 E BIRCH ST APT EE201,CA,BREA,ORANGE,92821,$0.01 - $0.50,SunOnly,YM,0,Internet,YES +140171139,"$300,000 - $399,999",OWNER,Indian,Y,8,40-44,English,37 MONTELEGRO,CA,IRVINE,ORANGE,92614,$2.00 - $2.99,Thu-Sun,MW,0,TeleIn,NO +130163179,"$150,000 - $174,999",RENTER,German,N,2,24 years or less,English,300 EMERALD BAY,CA,LAGUNA BEACH,ORANGE,92651,$0 - $0.01,Thu-Sun,MW,0,CircAdm,NO +180704233,"Under $20,000",RENTER,Hispanic,N,1,25-29,English,1236 E LA PALMA AVE APT 2,CA,ANAHEIM,ORANGE,92805,$1.00 - $1.99,SunOnly,FE,0,Partner,NO +180441403,"$ 70,000 - $79,999",OWNER,Hispanic,N,20,60-64,Spanish,1526 W SECREST WAY,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,MM,0,Partner,NO +160516374,"$ 30,000 - $39,999",RENTER,Vietnamese,N,12,65-69,Vietnamese,10200 BOLSA AVE SPC 142,CA,WESTMINSTER,ORANGE,92683,$1.00 - $1.99,7Day,MM,0,TeleIn,NO +140307324,"$125,000 - $149,999",OWNER,unknown,N,5,60-64,,6161 BRIDLE LN,CA,YORBA LINDA,ORANGE,92886,$3.00 - $3.99,7Day,MW,0,CustCall,NO +140215764,"$100,000 - $124,999",OWNER,English,Y,6,55-59,English,991 S HILDA ST,CA,ANAHEIM,ORANGE,92806,$3.00 - $3.99,7Day,FW,44,TeleIn,YES +180310114,"Under $20,000",RENTER,German,N,2,45-49,English,264 STREAMWOOD,CA,IRVINE,ORANGE,92620,$2.00 - $2.99,Thu-Sun,FM,0,TeleOut,NO +150535350,"$ 90,000 - $99,999",RENTER,Italian,N,8,60-64,English,5772 GARDEN GROVE BLVD SPC 257,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,Fri-Sun,ME,0,CustCall,NO +150347701,"$500,000 Plus",OWNER,Welsh,N,17,60-64,English,6 ARABIAN,CA,TRABUCO CANYON,ORANGE,92679,$10.00 - $10.99,7Day,MW,0,CustCall,YES +130322037,"$ 30,000 - $39,999",RENTER,Hispanic,N,1,24 years or less,English,128 E CANADA,CA,SAN CLEMENTE,ORANGE,92672,$4.00 - $4.99,7Day,YM,0,Crew,NO +180426974,"$ 80,000 - $89,999",OWNER,Hispanic,N,22,45-49,English,900 CHEYENNE RD,CA,CORONA,RIVERSIDE,92880,$2.00 - $2.99,Thu-Sun,FM,0,Crew,NO +180340589,"$125,000 - $149,999",OWNER,Vietnamese,N,8,40-44,English,5441 TATTERSHALL AVE,CA,WESTMINSTER,ORANGE,92683,$1.00 - $1.99,Thu-Sun,MW,0,Crew,NO +160557520,"$ 20,000 - $29,999",OWNER,English,N,24,50-54,English,28047 LONGFORD,CA,MISSION VIEJO,ORANGE,92692,$1.00 - $1.99,7Day,MW,6,DirectMl,YES +180501869,"$300,000 - $399,999",OWNER,unknown,N,14,45-49,,9151 BERMUDA DR,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,SunOnly,MW,0,Internet,NO +180655729,"$ 80,000 - $89,999",RENTER,Indonesian,N,2,24 years or less,English,1601 W MACARTHUR BLVD APT 20N,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +170070531,"$ 50,000 - $59,999",OWNER,Hispanic,N,3,50-54,Spanish,6972 SAN DIEGO DR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,MW,0,Partner,NO +180440296,"Under $20,000",RENTER,Vietnamese,N,11,45-49,Vietnamese,7841 12TH ST UNIT B,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +181143271,"$ 40,000 - $49,999",RENTER,Dutch,N,1,40-44,English,3215 S ALTON CT,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,YM,0,Partner,NO +130288640,"$125,000 - $149,999",OWNER,German,N,11,50-54,English,8152 BRYANT DR,CA,HUNTINGTON BEACH,ORANGE,92647,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +180390032,"$ 60,000 - $69,999",RENTER,Latvian,Y,23,50-54,English,17140 SAN MATEO ST APT C3,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,YM,0,Partner,NO +150166835,"$ 60,000 - $69,999",OWNER,Hispanic,N,47,70-74,Spanish,3737 E DOROTHY DR,CA,ORANGE,ORANGE,92869,$8.00 - $8.99,Thu-Sun,YW,0,DirectMl,YES +181272641,"$ 30,000 - $39,999",OWNER,English,N,40,75 years or more,English,10531 COURSON DR,CA,STANTON,ORANGE,90680,$1.00 - $1.99,SoooTFS,MM,0,CustCall,NO +180264526,"$ 80,000 - $89,999",OWNER,Hispanic,N,4,35-39,Spanish,1474 MOORE CIR,CA,CORONA,RIVERSIDE,92882,$1.00 - $1.99,Thu-Sun,YM,0,CircAdm,NO +140329948,"$300,000 - $399,999",OWNER,French,N,18,60-64,English,27880 BEN NEVIS WAY,CA,YORBA LINDA,ORANGE,92887,$1.00 - $1.99,SunOnly,FW,0,System,NO +181361877,"$ 50,000 - $59,999",OWNER,English,N,1,75 years or more,English,26556 MIMOSA LN,CA,MISSION VIEJO,ORANGE,92691,$3.00 - $3.99,7Day,MM,0,InPaper,YES +180166631,"$ 70,000 - $79,999",OWNER,Irish,N,12,65-69,English,4900 E CHAPMAN AVE UNIT 108,CA,ORANGE,ORANGE,92869,$0 - $0.01,Thu-Sun,YW,0,CircAdm,NO +180371356,"$300,000 - $399,999",OWNER,English,Y,4,45-49,English,29361 WOOD CANYON RD,CA,SILVERADO,ORANGE,92676,$2.00 - $2.99,Thu-Sun,YW,0,Crew,NO +110461468,"$150,000 - $174,999",OWNER,Indian,N,12,55-59,English,71 LIVINGSTON PL,CA,LADERA RANCH,ORANGE,92694,$2.00 - $2.99,SatSun,FW,0,CustCall,NO +140567192,"$ 90,000 - $99,999",OWNER,Italian,N,37,75 years or more,English,9732 PACIFIC AVE,CA,ANAHEIM,ORANGE,92804,$0 - $0.01,SunOnly,MM,0,Partner,NO +180566502,"Under $20,000",OWNER,unknown,N,8,70-74,,543 ELKWOOD CT,CA,BREA,ORANGE,92821,$0 - $0.01,SunOnly,YW,0,Partner,NO +181307678,"$ 40,000 - $49,999",OWNER,Irish,N,41,75 years or more,English,403 S PASEO SERENA,CA,ANAHEIM,ORANGE,92807,$0.01 - $0.50,SunOnly,YW,0,Partner,NO +181396301,"$ 90,000 - $99,999",OWNER,Persian,N,8,55-59,English,24302 TOLEDO LN,CA,LAKE FOREST,ORANGE,92630,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +181414836,"Under $20,000",RENTER,Hispanic,N,3,30-34,English,1115 HIGHLAND ST APT 9,CA,SANTA ANA,ORANGE,92703,$3.00 - $3.99,Thu-Sun,FE,0,Crew,NO +180307508,"$ 70,000 - $79,999",RENTER,Italian,N,1,45-49,English,840 E SAINT JAMES AVE,CA,ORANGE,ORANGE,92865,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +130567303,"$400,000 - $499,999",OWNER,English,Y,9,45-49,English,5 SALINGER CT,CA,TRABUCO CANYON,ORANGE,92679,$0.51 - $0.99,Thu-Sun,FW,0,System,NO +181470952,"$100,000 - $124,999",OWNER,Scottish (Scotch),N,21,40-44,English,2207 CONQUISTA AVE,CA,LONG BEACH,LOS ANGELES,90815,$0.01 - $0.50,SunOnly,MM,0,Internet,YES +180554484,"$ 70,000 - $79,999",OWNER,Hispanic,N,14,45-49,Spanish,529 S LEXINGTON PL,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,7Day,FM,0,Partner,NO +180554220,"$125,000 - $149,999",OWNER,Hispanic,N,19,75 years or more,English,24664 HATTON LN,CA,CORONA,RIVERSIDE,92883,$0.01 - $0.50,7Day,MM,0,Partner,NO +130130650,"$ 60,000 - $69,999",OWNER,unknown,N,1,25-29,,25942 ROBIN CIR,CA,MISSION VIEJO,ORANGE,92691,$3.00 - $3.99,SoooooS,FM,0,CustCall,NO +181168868,"$ 50,000 - $59,999",OWNER,Nigerian,N,16,55-59,English,5824 LOS ENCINOS ST,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,7Day,FM,0,Partner,YES +180755521,"$100,000 - $124,999",OWNER,Welsh,N,21,65-69,English,2322 N SACRAMENTO ST,CA,ORANGE,ORANGE,92867,$2.00 - $2.99,SunOnly,MW,0,Kiosk,NO +160588957,"$300,000 - $399,999",OWNER,Scottish (Scotch),Y,32,70-74,English,17041 WHEATLEY DR,CA,WHITTIER,LOS ANGELES,90603,$10.00 - $10.99,7Day,FW,41,CustCall,YES +110139853,"$ 20,000 - $29,999",RENTER,Hispanic,N,2,25-29,Spanish,1421 S STANDARD AVE APT 8,CA,SANTA ANA,ORANGE,92707,$0.01 - $0.50,Thu-Sun,FE,0,TeleIn,NO +180456930,"$125,000 - $149,999",OWNER,Greek,Y,13,40-44,English,6760 SAN BRUNO DR,CA,BUENA PARK,ORANGE,90620,$0 - $0.01,SunOnly,MM,0,Partner,YES +180302347,"$ 50,000 - $59,999",RENTER,Hispanic,N,1,60-64,English,1001 W MACARTHUR BLVD UNIT 7,CA,SANTA ANA,ORANGE,92707,$1.00 - $1.99,SunOnlyT,FE,0,CustCall,NO +180306548,"$ 60,000 - $69,999",OWNER,Scottish (Scotch),N,25,75 years or more,English,661 OLEANDER ST,CA,BREA,ORANGE,92821,$3.00 - $3.99,7Day,MM,0,Internet,NO +140023705,"$ 70,000 - $79,999",OWNER,English,N,3,55-59,English,25215 GROVEWOOD,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,Thu-Sun,FM,0,TeleIn,NO +180302276,"Under $20,000",RENTER,English,N,7,75 years or more,English,13760 ALDERWOOD LN APT 85G,CA,SEAL BEACH,ORANGE,90740,$4.00 - $4.99,7DayT,ME,0,Internet,NO +150584217,"$ 50,000 - $59,999",OWNER,Hispanic,N,13,50-54,Spanish,2326 GROVEMONT ST,CA,SANTA ANA,ORANGE,92705,$2.00 - $2.99,SoooTFS,FM,0,TeleIn,NO +180343888,"$300,000 - $399,999",OWNER,Irish,N,39,75 years or more,English,1472 N STALLION ST,CA,ORANGE,ORANGE,92869,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +170170848,"$125,000 - $149,999",OWNER,English,N,11,60-64,English,2967 GLENBERRY CT,CA,FULLERTON,ORANGE,92835,$3.00 - $3.99,7Day,FW,0,TeleIn,YES +181268098,"$125,000 - $149,999",OWNER,English,Y,1,45-49,English,24662 VIA DEL ORO,CA,LAGUNA NIGUEL,ORANGE,92677,$0.01 - $0.50,SunOnly,MW,0,Internet,YES +180327639,"$125,000 - $149,999",RENTER,English,Y,4,35-39,English,19431 RUE DE VALORE APT 32F,CA,FOOTHILL RANCH,ORANGE,92610,$0 - $0.01,Thu-Sun,FM,0,CircAdm,NO +180583522,"$500,000 Plus",OWNER,French,N,22,65-69,English,1065 VISALIA DR,CA,COSTA MESA,ORANGE,92626,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180461064,"$150,000 - $174,999",OWNER,Vietnamese,Y,9,40-44,Vietnamese,9682 MADISON CIR,CA,GARDEN GROVE,ORANGE,92844,$0 - $0.01,SunOnly,YM,0,Partner,NO +181404414,"$ 50,000 - $59,999",RENTER,Hispanic,N,3,25-29,English,1201 FAIRHAVEN AVE APT 18D,CA,SANTA ANA,ORANGE,92705,$0.01 - $0.50,SunOnly,YM,0,Partner,YES +170219533,"$ 30,000 - $39,999",OWNER,Hispanic,N,29,60-64,Spanish,1737 N STRATFORD CIR,CA,ANAHEIM,ORANGE,92806,$0 - $0.01,7Day,MW,0,CircAdm,NO +180571411,"$300,000 - $399,999",OWNER,English,N,5,60-64,English,1431 LA LOMA DR,CA,SANTA ANA,ORANGE,92705,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +130200713,"$ 60,000 - $69,999",OWNER,Dutch,N,31,75 years or more,Dutch,28450 BUENA VIS,CA,MISSION VIEJO,ORANGE,92692,$7.00 - $7.99,7Day,MM,0,CustCall,NO +180702295,"$ 30,000 - $39,999",RENTER,Hispanic,N,9,40-44,Spanish,1331 W CENTRAL AVE APT 35,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,SunOnly,YM,0,Partner,NO +110224805,"$ 90,000 - $99,999",OWNER,Irish,N,33,75 years or more,English,18815 SANTA MARTA ST,CA,FOUNTAIN VALLEY,ORANGE,92708,$4.00 - $4.99,7Day,MW,0,TeleIn,YES +180539695,"$ 30,000 - $39,999",OWNER,Hispanic,N,23,75 years or more,Spanish,14858 BARNWALL ST,CA,LA MIRADA,LOS ANGELES,90638,$0.51 - $0.99,7Day,MW,0,Crew,NO +110288484,"$400,000 - $499,999",OWNER,Dutch,N,24,55-59,English,22265 PARKWOOD ST,CA,LAKE FOREST,ORANGE,92630,$0.01 - $0.50,7Day,MW,0,CircAdm,NO +110613144,"$ 70,000 - $79,999",OWNER,German,N,17,40-44,English,1205 HUNTINGTON ST,CA,HUNTINGTON BEACH,ORANGE,92648,$4.00 - $4.99,7Day,YM,0,Crew,NO +180304460,"$125,000 - $149,999",OWNER,Dutch,Y,12,45-49,English,6182 MONTECITO DR,CA,HUNTINGTON BEACH,ORANGE,92647,$7.00 - $7.99,7Day,MW,5,CustCall,YES +150534447,"$ 50,000 - $59,999",OWNER,Swedish,N,7,75 years or more,English,28072 VIA PEDRELL,CA,MISSION VIEJO,ORANGE,92692,$1.00 - $1.99,SunOnlyT,MM,0,TeleIn,NO +180660342,"Under $20,000",RENTER,Hispanic,N,10,55-59,English,1207 E FLOWER ST,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,SunOnly,FM,0,Partner,NO +181261282,"$ 70,000 - $79,999",OWNER,Hispanic,Y,46,70-74,Spanish,807 STARDUST DR,CA,PLACENTIA,ORANGE,92870,,7Day,MM,0,DirectMl,NO +140588997,"$ 30,000 - $39,999",RENTER,Scottish (Scotch),N,1,60-64,English,419 PROSPECT ST,CA,NEWPORT BEACH,ORANGE,92663,$4.00 - $4.99,7Day,YM,0,CustCall,NO +140015858,"$ 30,000 - $39,999",OWNER,Hispanic,N,31,70-74,Spanish,17 DICKENS CT,CA,IRVINE,ORANGE,92617,$10.00 - $10.99,7Day,YM,7,CustCall,NO +130398708,"$175,000 - $199,999",OWNER,Slovenian (Slovene),N,6,40-44,Slovenian,24631 VIA TEQUILA,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,SoooTFS,FW,0,TeleIn,NO +180451520,"$125,000 - $149,999",OWNER,Hungarian,N,7,55-59,Hungarian,27505 ABANICO,CA,MISSION VIEJO,ORANGE,92691,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +140336500,"$400,000 - $499,999",OWNER,Polish,N,10,50-54,English,17253 CORIANDER CT,CA,YORBA LINDA,ORANGE,92886,$1.00 - $1.99,SunOnly,MW,0,RetenIn,NO +150183047,"$ 80,000 - $89,999",OWNER,Irish,N,11,70-74,English,52 CHADRON CIR,CA,LADERA RANCH,ORANGE,92694,$4.00 - $4.99,7Day,FW,0,Crew,NO +181509443,"$ 40,000 - $49,999",OWNER,unknown,N,1,65-69,,10306 DANA,CA,IRVINE,ORANGE,92618,$3.00 - $3.99,THU-SUN,YW,0,Crew1,NO +160598848,"$200,000 - $249,999",OWNER,Irish,N,2,45-49,English,57 HASTINGS,CA,LAGUNA NIGUEL,ORANGE,92677,$4.00 - $4.99,7Day,MW,0,CustCall,NO +160163854,"$ 20,000 - $29,999",OWNER,German,N,43,75 years or more,English,956 N SHAFFER ST,CA,ORANGE,ORANGE,92867,$10.00 - $10.99,7Day,FM,0,CustCall,YES +180425374,"$ 30,000 - $39,999",RENTER,Hispanic,N,5,45-49,Spanish,23212 ORANGE AVE APT 7,CA,LAKE FOREST,ORANGE,92630,$2.00 - $2.99,Thu-Sun,FE,0,Crew,NO +140458447,"$ 20,000 - $29,999",RENTER,Hispanic,N,5,50-54,Spanish,2070 S MOUNTAIN VIEW AVE APT 1,CA,ANAHEIM,ORANGE,92802,$4.00 - $4.99,7Day,FE,0,Crew,NO +160057160,"$ 60,000 - $69,999",OWNER,Irish,N,7,60-64,English,531 S RESH ST,CA,ANAHEIM,ORANGE,92805,$4.00 - $4.99,7Day,YM,0,CustCall,NO +110501417,"$125,000 - $149,999",OWNER,English,N,3,30-34,English,26891 LA SIERRA DR,CA,MISSION VIEJO,ORANGE,92691,$1.00 - $1.99,7Day,MW,0,VRU,NO +181146506,"$100,000 - $124,999",OWNER,English,Y,7,45-49,English,1810 N SACRAMENTO ST,CA,ORANGE,ORANGE,92867,$0 - $0.01,SunOnly,FM,0,Partner,NO +110043449,"$100,000 - $124,999",OWNER,English,N,14,65-69,English,651 S COVERED WAGON TRL,CA,ANAHEIM,ORANGE,92807,$10.00 - $10.99,7Day,YW,0,CustCall,YES +170502753,"Under $20,000",OWNER,Vietnamese,Y,10,30-34,English,7765 CENTRAL AVE,CA,STANTON,ORANGE,90680,$4.00 - $4.99,7Day,FM,0,Crew,NO +160247000,"Under $20,000",RENTER,German,N,1,,English,466 FLAGSHIP RD,CA,NEWPORT BEACH,ORANGE,92663,$1.00 - $1.99,SunOnly,,0,Partner,NO +160445114,"$300,000 - $399,999",OWNER,Irish,Y,8,45-49,English,26 AQUILA WAY,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,SatSun,YW,0,CustCall,NO +180412958,"$ 90,000 - $99,999",RENTER,Hispanic,N,6,40-44,English,7200 MELROSE ST APT 202,CA,BUENA PARK,ORANGE,90621,$1.00 - $1.99,SunOnlyT,YM,0,TeleIn,NO +150472630,"Under $20,000",RENTER,English,N,10,60-64,English,2534 ANACAPA DR APT 206,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,SooooooT,ME,0,TeleIn,NO +160329481,"$125,000 - $149,999",OWNER,English,N,17,55-59,English,936 TWILIGHT LN,CA,PLACENTIA,ORANGE,92870,$0.01 - $0.50,SunOnly,MM,0,Agent,YES +180756460,"$ 70,000 - $79,999",RENTER,Chinese,N,2,25-29,Chinese,1637 W MALVERN AVE APT 2,CA,FULLERTON,ORANGE,92833,$0 - $0.01,SunOnly,ME,0,Partner,NO +170079519,"$100,000 - $124,999",OWNER,Irish,Y,7,50-54,English,5022 ROXBOROUGH DR,CA,PLACENTIA,ORANGE,92870,$1.00 - $1.99,SunOnly,FM,0,CustCall,NO +180287158,"$100,000 - $124,999",RENTER,German,N,1,45-49,English,51 SAINT JOHN,CA,DANA POINT,ORANGE,92629,$1.00 - $1.99,7Day,MW,0,TeleIn,NO +181319818,"Under $20,000",OWNER,Hispanic,N,23,60-64,Spanish,899 S WAYSIDE ST,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +160107287,"$125,000 - $149,999",OWNER,Irish,Y,5,30-34,English,660 S CHIPWOOD ST,CA,ORANGE,ORANGE,92869,$0 - $0.01,SunOnly,MM,0,Partner,NO +170580040,"$ 40,000 - $49,999",OWNER,Chinese,N,1,35-39,English,2201 E ROMNEYA DR,CA,ANAHEIM,ORANGE,92806,$2.00 - $2.99,SunOnly,MW,0,System,NO +170276212,"$200,000 - $249,999",OWNER,Irish,N,8,50-54,English,1927 SKYCREST DR,CA,FULLERTON,ORANGE,92831,$2.00 - $2.99,Fri-Sun,MW,0,CustCall,NO +181320527,"$400,000 - $499,999",OWNER,French,N,11,55-59,English,951 N MILFORD ST,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +181548859,"$ 40,000 - $49,999",OWNER,Hispanic,N,20,70-74,Spanish,2321 OTIS AVE,CA,LA HABRA,ORANGE,90631,$3.00 - $3.99,THU-SUN,MM,0,Kiosk1,YES +181479329,"$ 30,000 - $39,999",RENTER,Korean,Y,1,75 years or more,Korean,1331 W ORANGE BLOSSOM WAY,CA,FULLERTON,ORANGE,92833,$3.00 - $3.99,Thu-Sun,YM,0,Kiosk1,NO +140022137,"$ 30,000 - $39,999",RENTER,English,N,3,24 years or less,English,2000 CORPORATE DR APT 1208,CA,LADERA RANCH,ORANGE,92694,$5.00 - $5.99,7Day,FE,0,CustCall,NO +180417836,"$ 60,000 - $69,999",RENTER,Hispanic,N,8,65-69,Spanish,12321 TRASK AVE APT 30,CA,GARDEN GROVE,ORANGE,92843,$1.00 - $1.99,SunOnly,ME,0,TeleIn,NO +180412998,"Under $20,000",RENTER,unknown,N,13,45-49,,945 LOCUST AVE APT 10,CA,LONG BEACH,LOS ANGELES,90813,$0.51 - $0.99,SunOnly,YM,0,TeleIn,NO +180243866,"$100,000 - $124,999",OWNER,Italian,N,20,55-59,English,7925 OLEANDER CIR APT I,CA,BUENA PARK,ORANGE,90620,$0.51 - $0.99,Thu-Sun,YM,0,Crew,NO +150603460,"$150,000 - $174,999",OWNER,Jewish,N,20,55-59,English,5380 GRANBY DR,CA,YORBA LINDA,ORANGE,92887,$1.00 - $1.99,Thu-Sun,MM,0,CustCall,NO +150488177,"$125,000 - $149,999",OWNER,Japanese,N,5,60-64,Japanese,922 VIA PRESA,CA,SAN CLEMENTE,ORANGE,92672,$0.01 - $0.50,SunOnly,MM,0,DirectMl,NO +181400517,"$ 90,000 - $99,999",OWNER,English,Y,12,50-54,English,1026 LAKE ST,CA,HUNTINGTON BEACH,ORANGE,92648,$0 - $0.01,SunOnly,MW,0,Partner,NO +180376048,"$150,000 - $174,999",RENTER,German,N,6,60-64,English,26322 TOWNE CENTRE DR APT 211,CA,FOOTHILL RANCH,ORANGE,92610,$0 - $0.01,SunOnly,YW,0,CircAdm,NO +130021044,"$ 70,000 - $79,999",OWNER,German,N,41,70-74,English,5041 CORDOBA CIR,CA,LA PALMA,ORANGE,90623,$2.00 - $2.99,SunOnly,MM,0,System,NO +110502754,"$500,000 Plus",OWNER,German,Y,20,45-49,English,11842 AMETHYST ST,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180665846,"$200,000 - $249,999",OWNER,unknown,Y,3,40-44,,895 SHEPARD CREST DR,CA,CORONA,RIVERSIDE,92882,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +160166353,"$ 70,000 - $79,999",OWNER,unknown,N,4,70-74,,2522 BURLY AVE,CA,ORANGE,ORANGE,92869,$1.00 - $1.99,7DayOL,MM,0,DirectMl,NO +181309349,"$100,000 - $124,999",OWNER,Hispanic,N,5,40-44,Spanish,947 GOLDENROD DR,CA,COSTA MESA,ORANGE,92626,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180437295,"$125,000 - $149,999",OWNER,English,N,2,75 years or more,English,5210 ELVIRA,CA,LAGUNA WOODS,ORANGE,92637,$3.00 - $3.99,7Day,MM,0,CustCall,NO +180242860,"$ 60,000 - $69,999",RENTER,Irish,N,1,55-59,English,1555 MESA VERDE DR E APT 10C,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,7Day,YM,0,RetenIn,NO +181308950,"Under $20,000",RENTER,English,N,5,24 years or less,English,10250 BEACH BLVD APT 238,CA,STANTON,ORANGE,90680,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +120315799,"$ 50,000 - $59,999",RENTER,Jewish,N,1,30-34,English,7483 SANTA ELISE CIR,CA,BUENA PARK,ORANGE,90620,$4.00 - $4.99,7Day,MW,0,Kiosk,NO +140219418,"Under $20,000",OWNER,Irish,N,40,65-69,English,1424 S ROSS ST,CA,SANTA ANA,ORANGE,92707,$10.00 - $10.99,7Day,MM,0,CustCall,YES +150503661,"$ 90,000 - $99,999",OWNER,Jewish,N,31,70-74,English,2290 EL RANCHO VIS,CA,FULLERTON,ORANGE,92833,$3.00 - $3.99,7Day,FM,0,TeleIn,YES +150089478,"Under $20,000",OWNER,Hispanic,N,6,65-69,English,1659 S HERITAGE CIR,CA,ANAHEIM,ORANGE,92804,$0 - $0.01,Thu-Sun,FM,0,CircAdm,NO +180394811,"$100,000 - $124,999",OWNER,English,N,3,35-39,English,4353 E BLUEWATER CIR,CA,ANAHEIM,ORANGE,92807,$0 - $0.01,SunOnly,YW,0,Partner,NO +180568221,"$300,000 - $399,999",OWNER,English,Y,21,50-54,English,31486 WEST ST,CA,LAGUNA BEACH,ORANGE,92651,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180650039,"$ 90,000 - $99,999",OWNER,Hispanic,N,20,50-54,Spanish,1320 N LEWELLYN AVE,CA,ANAHEIM,ORANGE,92805,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +150217354,"$ 60,000 - $69,999",OWNER,Irish,N,32,70-74,English,2211 S BAKER ST,CA,SANTA ANA,ORANGE,92707,$1.00 - $1.99,7Day,FM,0,CustCall,NO +181199728,"$150,000 - $174,999",OWNER,Vietnamese,N,7,30-34,English,23 SUNSET CIR,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,FM,0,Partner,YES +181361539,"$ 40,000 - $49,999",RENTER,Chinese,Y,10,50-54,English,169 CORNELL,CA,IRVINE,ORANGE,92612,$0 - $0.01,SunOnly,YM,0,Partner,NO +130166728,"$150,000 - $174,999",OWNER,unknown,N,21,70-74,,1534 SANTIAGO DR,CA,NEWPORT BEACH,ORANGE,92660,$2.00 - $2.99,SoooTFS,MW,0,System,NO +180550917,"$150,000 - $174,999",OWNER,Armenian,Y,2,35-39,English,3090 VERMONT DR,CA,CORONA,RIVERSIDE,92881,$0.01 - $0.50,Thu-Sun,FM,0,Partner,NO +180170850,"$300,000 - $399,999",OWNER,Hispanic,Y,17,45-49,Spanish,2622 S TOWNER ST,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,7Day,FM,0,Partner,NO +180628931,"$ 30,000 - $39,999",OWNER,Chinese,N,5,35-39,Chinese,16901 SIERRA VISTA WAY,CA,CERRITOS,LOS ANGELES,90703,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +150070284,"$ 20,000 - $29,999",OWNER,French,N,38,55-59,English,8373 POINSETTIA DR,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,SunOnly,FM,0,System,NO +181444989,"$500,000 Plus",OWNER,Jewish,Y,19,50-54,English,5 ENDICOTT,CA,TRABUCO CANYON,ORANGE,92679,$0.01 - $0.50,SunOnly,FW,0,Partner,YES +180341274,"$200,000 - $249,999",OWNER,Jewish,Y,13,40-44,English,5550 VIA ONTIVEROS,CA,YORBA LINDA,ORANGE,92887,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +181275663,"$ 20,000 - $29,999",RENTER,Irish,N,4,60-64,English,7701 WARNER AVE APT Q229,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,SunOnly,YM,0,Crew,NO +120106016,"Under $20,000",OWNER,Filipino (Philippine),N,23,24 years or less,English,6527 NOTRE DAME DR,CA,BUENA PARK,ORANGE,90620,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +180664875,"$100,000 - $124,999",OWNER,Indian,N,6,30-34,English,79 NASSAU,CA,IRVINE,ORANGE,92620,$0.01 - $0.50,SunOnly,YW,0,Partner,NO +130192523,"$200,000 - $249,999",OWNER,Hispanic,Y,13,50-54,English,212 S FAIRFIELD LN,CA,ORANGE,ORANGE,92869,$4.00 - $4.99,7Day,YW,0,TeleOut,NO +120499703,"Under $20,000",RENTER,Hispanic,N,3,55-59,English,1220 S PALM WAY APT 5,CA,ANAHEIM,ORANGE,92802,$3.00 - $3.99,SoooTFS,ME,0,TeleIn,NO +160095499,"$150,000 - $174,999",OWNER,English,N,54,75 years or more,English,2849 EUROPA DR,CA,COSTA MESA,ORANGE,92626,$2.00 - $2.99,7Day,MW,8,CustCall,YES +181506302,"$175,000 - $199,999",RENTER,English,N,2,45-49,English,10 HALF MOON TRL,CA,LADERA RANCH,ORANGE,92694,$3.00 - $3.99,7DAY,FW,0,Kiosk1,YES +140468443,"$300,000 - $399,999",OWNER,Welsh,N,17,45-49,English,1165 TIMBERLINE LN,CA,SANTA ANA,ORANGE,92705,$2.00 - $2.99,7Day,YW,0,TeleIn,YES +180496345,"Under $20,000",RENTER,Hispanic,N,1,75 years or more,Spanish,2024 W HARTFORD PL,CA,ANAHEIM,ORANGE,92801,$0.01 - $0.50,SunOnly,FM,0,DirectMl,NO +180555633,"$125,000 - $149,999",OWNER,Scottish (Scotch),N,1,55-59,English,19 CARRELAGE AVE,CA,FOOTHILL RANCH,ORANGE,92610,$0 - $0.01,SunOnly,FW,0,Partner,NO +180439144,"$ 40,000 - $49,999",OWNER,Vietnamese,N,2,40-44,English,13212 RALEIGH CT,CA,GARDEN GROVE,ORANGE,92844,$0 - $0.01,SunOnly,FM,0,Partner,NO +160493708,"$ 40,000 - $49,999",OWNER,English,N,2,50-54,English,13 CUERVO DR,CA,ALISO VIEJO,ORANGE,92656,$2.00 - $2.99,Thu-Sun,MW,0,TeleOut,NO +180541984,"$ 20,000 - $29,999",OWNER,Irish,Y,11,35-39,English,1207 W WOODCREST AVE,CA,FULLERTON,ORANGE,92833,$0 - $0.01,SunOnly,FM,0,Partner,NO +180455926,"$ 70,000 - $79,999",OWNER,unknown,Y,23,60-64,,2441 PEPPERWOOD AVE,CA,LONG BEACH,LOS ANGELES,90815,$1.00 - $1.99,7Day,FM,0,Crew,NO +110072751,"$100,000 - $124,999",OWNER,French,N,7,45-49,English,1005 S SEDONA LN,CA,ANAHEIM,ORANGE,92808,$10.00 - $10.99,7Day,FW,8,CustCall,YES +180604128,"$125,000 - $149,999",OWNER,German,Y,1,40-44,English,1044 E CHASE DR,CA,CORONA,RIVERSIDE,92881,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +181140384,"$100,000 - $124,999",OWNER,English,N,20,45-49,English,211 W WILHELMINA ST,CA,ANAHEIM,ORANGE,92805,$7.00 - $7.99,7Day,MW,12,Kiosk,NO +180688454,"$300,000 - $399,999",OWNER,Indian,N,12,65-69,English,583 S PASEO GANADO,CA,ANAHEIM,ORANGE,92807,$4.00 - $4.99,7Day,YW,0,TeleIn,NO +150194758,"$ 50,000 - $59,999",OWNER,Scottish (Scotch),N,23,75 years or more,English,24582 ADOBE LN,CA,MISSION VIEJO,ORANGE,92691,$2.00 - $2.99,7Day,MW,108,TeleIn,NO +180542992,"Under $20,000",OWNER,Hispanic,N,8,50-54,Spanish,2318 S GREENVILLE ST,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,FM,0,Partner,NO +180452514,"$300,000 - $399,999",OWNER,Japanese,Y,17,45-49,English,5235 E PLAYANO AVE,CA,ORANGE,ORANGE,92867,$5.00 - $5.99,Thu-Sun,FM,0,CustCall,NO +180647951,"$ 30,000 - $39,999",RENTER,Hispanic,N,1,30-34,Spanish,1235 CYPRESS AVE,CA,SANTA ANA,ORANGE,92707,$3.00 - $3.99,7Day,FM,0,Partner,NO +180598600,"$ 50,000 - $59,999",RENTER,Italian,Y,1,30-34,English,27952 WENTWORTH,CA,MISSION VIEJO,ORANGE,92692,$7.00 - $7.99,7Day,YM,1,Internet,NO +180413066,"$ 20,000 - $29,999",RENTER,unknown,N,1,60-64,,2470 W CHANTICLEER RD,CA,ANAHEIM,ORANGE,92804,$3.00 - $3.99,Thu-Sun,MM,0,Crew,NO +110348299,"$ 70,000 - $79,999",OWNER,German,N,12,70-74,English,321 DEPOT CT,CA,FULLERTON,ORANGE,92832,$0.01 - $0.50,SunOnly,FM,0,DirectMl,NO +180361032,"Under $20,000",RENTER,Hispanic,N,7,45-49,Spanish,801 S WEBSTER AVE APT 6,CA,ANAHEIM,ORANGE,92804,$0 - $0.01,SunOnly,YM,0,TeleOut,NO +120364827,"$125,000 - $149,999",OWNER,German,N,39,75 years or more,English,24122 LA HERMOSA AVE,CA,LAGUNA NIGUEL,ORANGE,92677,$2.00 - $2.99,SoooTFST,MM,0,TeleIn,NO +130290649,"$500,000 Plus",OWNER,Hispanic,Y,11,45-49,English,21232 LONGRIDGE DR,CA,TRABUCO CANYON,ORANGE,92679,$6.00 - $6.99,Thu-Sun,MW,0,System,NO +120146469,"$150,000 - $174,999",OWNER,Irish,N,34,60-64,English,5892 PINON DR,CA,HUNTINGTON BEACH,ORANGE,92649,$5.00 - $5.99,Thu-Sun,MW,0,CustCall,NO +140101517,"$ 40,000 - $49,999",OWNER,English,N,23,75 years or more,English,182 ROCHESTER ST,CA,COSTA MESA,ORANGE,92627,$3.00 - $3.99,7Day,YM,1,CustCall,YES +180597194,"$100,000 - $124,999",OWNER,unknown,N,21,45-49,,13872 CHERRY AVE,CA,CHINO,SAN BERNARDINO,91710,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +180548793,"Under $20,000",OWNER,Vietnamese,N,2,25-29,Vietnamese,2235 CEDAR ST,CA,SANTA ANA,ORANGE,92707,$0 - $0.01,SunOnly,FM,0,Partner,NO +181475917,"$150,000 - $174,999",OWNER,Portuguese,Y,6,30-34,English,1673 BREA BLVD,CA,FULLERTON,ORANGE,92835,$3.00 - $3.99,Thu-Sun,FE,0,Kiosk1,NO +120572615,"$100,000 - $124,999",OWNER,English,N,33,70-74,English,5521 DOLLAR DR,CA,HUNTINGTON BEACH,ORANGE,92647,$10.00 - $10.99,7Day,MW,0,Kiosk,YES +180597748,"$ 50,000 - $59,999",OWNER,unknown,N,1,25-29,,11823 AMETHYST CT,CA,FOUNTAIN VALLEY,ORANGE,92708,$8.00 - $8.99,7Day,FM,0,CustCall,NO +130368468,"$ 90,000 - $99,999",OWNER,German,N,20,55-59,English,857 AMIGOS WAY,CA,NEWPORT BEACH,ORANGE,92660,$1.00 - $1.99,SunOnlyT,YW,0,System,NO +180164850,"Under $20,000",OWNER,Hispanic,N,3,25-29,Spanish,411 W CAMILE ST,CA,SANTA ANA,ORANGE,92701,$0.01 - $0.50,SunOnly,FE,0,TeleOut,NO +181302599,"$150,000 - $174,999",OWNER,French,Y,9,40-44,English,2626 FAIRWAY DR,CA,COSTA MESA,ORANGE,92627,$0 - $0.01,SunOnly,MW,0,Partner,NO +160332855,"$100,000 - $124,999",OWNER,German,N,23,60-64,English,2939 CALLE GUADALAJARA,CA,SAN CLEMENTE,ORANGE,92673,$3.00 - $3.99,7Day,YW,0,CustCall,NO +160591001,"$125,000 - $149,999",OWNER,Vietnamese,N,20,45-49,Vietnamese,8525 LAMPSON AVE APT A,CA,GARDEN GROVE,ORANGE,92841,$2.00 - $2.99,7Day,ME,0,CustCall,NO +110547309,"$ 80,000 - $89,999",OWNER,Scottish (Scotch),Y,35,55-59,English,921 HEATHER AVE,CA,LA HABRA,ORANGE,90631,$0.01 - $0.50,Thu-Sun,MW,0,Partner,NO +110384874,"$175,000 - $199,999",OWNER,English,N,30,70-74,English,336 E 18TH ST,CA,COSTA MESA,ORANGE,92627,$0.01 - $0.50,SunOnly,MW,1,CustCall,YES +180622372,"$ 20,000 - $29,999",OWNER,Hispanic,N,36,70-74,Spanish,808 S GARNSEY ST,CA,SANTA ANA,ORANGE,92701,$0.01 - $0.50,SunOnly,ME,0,Partner,NO +180558164,"$ 20,000 - $29,999",OWNER,unknown,N,4,60-64,,16072 MOUNT LISTER CT,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,FE,0,Partner,NO +181490292,"$ 60,000 - $69,999",OWNER,Hispanic,Y,11,40-44,Spanish,26182 HILLSFORD PL,CA,LAKE FOREST,ORANGE,92630,$3.00 - $3.99,THU-SUN,MW,0,Kiosk1,NO +180439966,"$ 60,000 - $69,999",OWNER,Italian,N,3,40-44,English,16651 MARIE LN,CA,HUNTINGTON BEACH,ORANGE,92647,$2.00 - $2.99,Thu-Sun,FM,0,System,NO +180325015,"$ 50,000 - $59,999",OWNER,Hispanic,N,10,70-74,English,6236 CHICKASAW DR,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,Thu-Sun,MM,0,Crew,NO +110445718,"$ 40,000 - $49,999",RENTER,unknown,Y,9,45-49,,780 N KATHLEEN LN APT A,CA,ORANGE,ORANGE,92867,$4.00 - $4.99,7Day,ME,0,TeleIn,NO +120414219,"$125,000 - $149,999",OWNER,English,Y,3,45-49,English,4664 PROSPECT LN,CA,YORBA LINDA,ORANGE,92886,$1.00 - $1.99,SunOnly,YW,0,TeleIn,NO +160610062,"$200,000 - $249,999",OWNER,Vietnamese,N,8,45-49,English,18069 SANTA CECILIA,CA,FOUNTAIN VALLEY,ORANGE,92708,$2.00 - $2.99,Thu-Sun,MW,0,DirectMl,NO +180424847,"$ 50,000 - $59,999",OWNER,Vietnamese,N,17,50-54,Vietnamese,14081 MAGNOLIA ST SPC 12,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,SunOnly,MM,0,TeleIn,NO +140192391,"$175,000 - $199,999",OWNER,Ethiopian,N,23,75 years or more,English,5121 MANOR VIEW DR,CA,YORBA LINDA,ORANGE,92886,$5.00 - $5.99,7Day,FM,0,CustCall,YES +150538619,"$300,000 - $399,999",OWNER,Scottish (Scotch),Y,16,60-64,English,11911 EMERALD ST,CA,GARDEN GROVE,ORANGE,92845,$3.00 - $3.99,SoooooS,MW,0,TeleIn,NO +180346283,"$175,000 - $199,999",OWNER,German,Y,31,70-74,German,20772 SKIMMER LN,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,Thu-Sun,MW,0,System,NO +180581282,"Under $20,000",RENTER,Hispanic,N,1,25-29,Spanish,14342 LOCUST ST APT 4,CA,WESTMINSTER,ORANGE,92683,$2.00 - $2.99,SunOnly,FE,0,TeleIn,NO +150031154,"$500,000 Plus",OWNER,English,Y,8,45-49,English,8 WESTFORD,CA,LADERA RANCH,ORANGE,92694,$4.00 - $4.99,7Day,FW,0,CustCall,NO +181509779,"$ 30,000 - $39,999",OWNER,English,N,3,30-34,English,725 CORONADO AVE UNIT 201,CA,LONG BEACH,LOS ANGELES,90804,$0.01 - $0.50,SunOnly,FE,0,Internet,YES +180536043,"$ 40,000 - $49,999",OWNER,German,N,4,50-54,English,1551 E SAN ALANO PL,CA,ORANGE,ORANGE,92865,$0.01 - $0.50,SunOnly,YW,0,Partner,NO +181445409,"Under $20,000",OWNER,Jewish,N,1,35-39,English,868 LINDEN AVE,CA,LONG BEACH,LOS ANGELES,90813,$0.01 - $0.50,Thu-Sun,FE,0,Crew,YES +180651955,"$100,000 - $124,999",OWNER,Dutch,N,5,65-69,English,617 EDITH WAY,CA,LONG BEACH,LOS ANGELES,90807,$8.00 - $8.99,7Day,MW,0,Internet,NO +181412622,"$ 20,000 - $29,999",RENTER,Chinese,N,1,30-34,Chinese,7750 BOLSA AVE APT 1,CA,MIDWAY CITY,ORANGE,92655,$0.01 - $0.50,SunOnly,FM,0,Internet,YES +181414453,"$ 50,000 - $59,999",OWNER,Hispanic,Y,11,45-49,Spanish,1430 E WILSHIRE AVE,CA,FULLERTON,ORANGE,92831,$3.00 - $3.99,Thu-Sun,YM,0,Crew,NO +180683104,"$ 30,000 - $39,999",RENTER,Hispanic,N,2,25-29,Spanish,1419 S ORANGE AVE APT 12,CA,FULLERTON,ORANGE,92833,$0.01 - $0.50,SunOnly,YM,0,Partner,NO +160194045,"$125,000 - $149,999",OWNER,German,N,32,55-59,English,4812 VIA FRONDOSA,CA,YORBA LINDA,ORANGE,92886,$7.00 - $7.99,7Day,MM,0,VRU,NO +180579602,"$175,000 - $199,999",OWNER,English,Y,11,40-44,English,31862 OLD OAK RD,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,SunOnly,FW,0,Internet,NO +181320720,"$300,000 - $399,999",OWNER,Irish,N,26,65-69,English,4201 DOGWOOD AVE,CA,SEAL BEACH,ORANGE,90740,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180323034,"$ 80,000 - $89,999",OWNER,Irish,N,27,75 years or more,English,2700 W SEGERSTROM AVE UNIT D,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,7Day,YM,0,Crew,NO +110296051,"$100,000 - $124,999",OWNER,unknown,N,38,60-64,,21111 SHEPHERD LN,CA,HUNTINGTON BEACH,ORANGE,92646,$1.00 - $1.99,7Day,MM,0,TeleIn,NO +180477743,"Under $20,000",RENTER,English,N,3,25-29,English,8055 CHAPMAN AVE APT 2,CA,STANTON,ORANGE,90680,$0 - $0.01,SunOnly,FE,0,Partner,NO +160248813,"$175,000 - $199,999",OWNER,Hispanic,N,23,50-54,English,27460 GLENWOOD DR,CA,MISSION VIEJO,ORANGE,92692,$10.00 - $10.99,7Day,FW,0,Internet,YES +150243905,"$100,000 - $124,999",OWNER,German,N,28,55-59,English,1701 MOJAVE VIEW CIR,CA,CORONA,RIVERSIDE,92882,$4.00 - $4.99,Thu-Sun,FM,0,CircAdm,NO +150069164,"$ 60,000 - $69,999",OWNER,unknown,N,55,75 years or more,,6189 FREMONT WAY,CA,BUENA PARK,ORANGE,90620,$10.00 - $10.99,7Day,MM,0,CustCall,NO +180644669,"$ 20,000 - $29,999",RENTER,English,N,4,35-39,English,1071 WALNUT AVE APT 61,CA,TUSTIN,ORANGE,92780,$0 - $0.01,SunOnly,FE,0,Partner,YES +180170787,"$125,000 - $149,999",OWNER,Scottish (Scotch),N,3,50-54,English,9130 HUNT RD,CA,CORONA,RIVERSIDE,92883,$1.00 - $1.99,7Day,YM,0,TeleIn,NO +180567689,"$150,000 - $174,999",OWNER,Hispanic,N,4,65-69,English,12861 OSPREY ST,CA,CORONA,RIVERSIDE,92880,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180578292,"$100,000 - $124,999",OWNER,Italian,N,37,70-74,Italian,5371 CERULEAN AVE,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +150348121,"Under $20,000",RENTER,Hispanic,N,1,24 years or less,Spanish,1026 W CANARY WAY APT A,CA,ANAHEIM,ORANGE,92801,$3.00 - $3.99,Soooooo,FE,0,TeleIn,NO +181303393,"$ 70,000 - $79,999",OWNER,Vietnamese,N,6,55-59,Vietnamese,2533 N PACIFIC AVE,CA,SANTA ANA,ORANGE,92706,$0 - $0.01,SunOnly,MM,0,Partner,NO +140567626,"$ 30,000 - $39,999",OWNER,English,N,7,35-39,English,12192 LORNA ST,CA,GARDEN GROVE,ORANGE,92841,$3.00 - $3.99,Soooooo,FM,0,CustCall,NO +181293698,"$ 40,000 - $49,999",OWNER,Irish,N,5,40-44,English,606 S CASITA ST,CA,ANAHEIM,ORANGE,92805,$0 - $0.01,SunOnly,YM,0,Partner,NO +160514246,"$ 20,000 - $29,999",OWNER,Hispanic,N,21,70-74,English,7036 FULTON WAY,CA,STANTON,ORANGE,90680,$3.00 - $3.99,7Day,FM,0,DirectMl,NO +110253925,"$ 50,000 - $59,999",OWNER,English,N,29,65-69,English,23261 CHERRY HL,CA,MISSION VIEJO,ORANGE,92692,$10.00 - $10.99,7Day,MM,0,CustCall,YES +160349879,"$200,000 - $249,999",OWNER,Swedish,Y,5,30-34,English,2033 PALMETTO TER,CA,FULLERTON,ORANGE,92831,$4.00 - $4.99,7Day,FW,0,CustCall,NO +181183646,"$ 20,000 - $29,999",OWNER,Hispanic,N,12,65-69,English,23335 CAMINITO ANDRETA,CA,LAGUNA HILLS,ORANGE,92653,$2.00 - $2.99,7Day,YW,0,TeleIn,NO +180700974,"$200,000 - $249,999",OWNER,English,N,8,40-44,English,8402 E ALTAVIEW DR,CA,ORANGE,ORANGE,92867,$0.01 - $0.50,SunOnly,FW,0,Partner,NO +180723599,"$ 40,000 - $49,999",RENTER,Hispanic,N,3,35-39,Spanish,2596 N BOURBON ST,CA,ORANGE,ORANGE,92865,$2.00 - $2.99,SunOnly,FE,0,CustCall,NO +110192353,"$150,000 - $174,999",OWNER,Japanese,N,38,75 years or more,English,19791 MAJORCA LN,CA,YORBA LINDA,ORANGE,92886,$9.00 - $9.99,7Day,MM,0,VRU,NO +140576614,"$150,000 - $174,999",OWNER,English,N,10,75 years or more,English,3383 PUNTA ALTA UNIT C,CA,LAGUNA WOODS,ORANGE,92637,$8.00 - $8.99,Thu-Sun,MM,0,CustCall,YES +181192947,"$200,000 - $249,999",OWNER,Hispanic,Y,12,40-44,Spanish,524 LOYOLA DR,CA,PLACENTIA,ORANGE,92870,$0 - $0.01,SunOnly,FW,0,Partner,YES +150288264,"$100,000 - $124,999",OWNER,unknown,N,13,65-69,,343 ORANGE BLOSSOM,CA,IRVINE,ORANGE,92618,$0.51 - $0.99,Thu-Sun,MM,0,Internet,YES +150143350,"$ 30,000 - $39,999",OWNER,Hispanic,N,34,65-69,English,826 LAKE ST,CA,HUNTINGTON BEACH,ORANGE,92648,$2.00 - $2.99,7Day,MW,4,CustCall,NO +181147319,"$175,000 - $199,999",OWNER,French,N,4,55-59,English,10 SAN RICARDO,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$2.00 - $2.99,SunOnly,YW,0,Kiosk,NO +180536314,"$ 60,000 - $69,999",OWNER,Hispanic,N,20,60-64,Spanish,9658 WESTMINSTER AVE TRLR 40,CA,GARDEN GROVE,ORANGE,92844,$0 - $0.01,SunOnly,FM,0,Partner,NO +130596675,"$ 80,000 - $89,999",OWNER,Vietnamese,N,23,55-59,Vietnamese,9766 SHRINER CIR,CA,FOUNTAIN VALLEY,ORANGE,92708,$2.00 - $2.99,Thu-SunT,MW,0,TeleIn,NO +170284507,"$ 70,000 - $79,999",OWNER,Hispanic,N,7,70-74,Spanish,4 SONGBIRD LN,CA,ALISO VIEJO,ORANGE,92656,$2.00 - $2.99,SatSun,MW,0,CustCall,NO +170022595,"$ 70,000 - $79,999",OWNER,English,N,3,35-39,English,443 W BRENTWOOD AVE,CA,ORANGE,ORANGE,92865,$0 - $0.01,SunOnly,MW,0,Partner,NO +180385119,"$175,000 - $199,999",OWNER,German,N,7,50-54,English,33672 BLUE LANTERN ST UNIT 8,CA,DANA POINT,ORANGE,92629,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +170223460,"$300,000 - $399,999",OWNER,English,N,10,40-44,English,2700 BREA BLVD APT 24,CA,FULLERTON,ORANGE,92835,$4.00 - $4.99,7Day,YW,0,Kiosk,NO +180314546,"Under $20,000",RENTER,English,N,5,35-39,English,8210 CONSTANTINE DR APT 6,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,Thu-Sun,ME,0,CircAdm,NO +180447572,"$ 70,000 - $79,999",OWNER,German,N,5,35-39,English,1281 LA LIMONAR RD,CA,SANTA ANA,ORANGE,92705,$5.00 - $5.99,Thu-Sun,FW,0,Internet,NO +150152548,"$ 60,000 - $69,999",OWNER,German,N,39,65-69,English,13472 SIOUX RD,CA,WESTMINSTER,ORANGE,92683,$3.00 - $3.99,SunOnly,FM,0,System,YES +170237516,"Under $20,000",RENTER,Hispanic,N,8,30-34,Spanish,11782 STUART DR APT 4,CA,GARDEN GROVE,ORANGE,92843,$4.00 - $4.99,7Day,ME,0,Crew,NO +160109170,"Under $20,000",OWNER,Vietnamese,N,8,40-44,Vietnamese,206 S GUNTHER ST,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,FE,0,TeleIn,NO +120199396,"$150,000 - $174,999",OWNER,French,N,40,75 years or more,English,23941 WARSAW ST,CA,MISSION VIEJO,ORANGE,92691,$10.00 - $10.99,7Day,MW,0,CustCall,YES +181404134,"$ 60,000 - $69,999",OWNER,Jewish,N,3,30-34,English,4752 JOSIE AVE,CA,LAKEWOOD,LOS ANGELES,90713,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +160608214,"$ 90,000 - $99,999",OWNER,Danish,N,6,55-59,Danish,11791 PINE ST,CA,LOS ALAMITOS,ORANGE,90720,$2.00 - $2.99,7DayT,YM,0,CustCall,NO +180715382,"$ 70,000 - $79,999",OWNER,Filipino (Philippine),N,4,50-54,English,2638 E CHAPMAN AVE,CA,FULLERTON,ORANGE,92831,$0.01 - $0.50,SunOnly,FM,0,TeleIn,NO +180614265,"Under $20,000",RENTER,English,N,4,55-59,English,803 LARK AVE,CA,PLACENTIA,ORANGE,92870,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +150005912,"$ 40,000 - $49,999",OWNER,English,N,12,70-74,English,13602 CARROLL WAY,CA,TUSTIN,ORANGE,92780,$10.00 - $10.99,7Day,FM,0,CustCall,YES +180301241,"$ 20,000 - $29,999",RENTER,Hispanic,N,13,60-64,Spanish,600 N HARBOR BLVD APT 77,CA,LA HABRA,ORANGE,90631,$1.00 - $1.99,SunOnly,YM,0,TeleIn,NO +130587085,"$ 50,000 - $59,999",RENTER,Hispanic,N,3,40-44,English,13552 WILLAMETTE DR,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,7Day,MM,0,Kiosk,NO +150116274,"$175,000 - $199,999",OWNER,French,N,19,70-74,English,4561 E LARKSPUR CIR,CA,ANAHEIM,ORANGE,92807,$0 - $0.01,SunOnly,YW,0,Partner,NO +160538277,"$125,000 - $149,999",OWNER,Polish,N,35,75 years or more,English,14631 COUNTRYWOOD LN,CA,IRVINE,ORANGE,92604,$6.00 - $6.99,7Day,MW,0,TeleIn,YES +110297759,"$125,000 - $149,999",OWNER,unknown,N,43,75 years or more,,528 N PLANTATION PL,CA,ANAHEIM,ORANGE,92806,$0.01 - $0.50,SunOnly,FM,0,CustCall,YES +180436861,"$ 60,000 - $69,999",RENTER,French,N,1,45-49,English,14 LEMON TREE,CA,IRVINE,ORANGE,92612,$0.51 - $0.99,7Day,MM,0,System,NO +120597591,"$100,000 - $124,999",OWNER,English,N,24,45-49,English,18133 WOOD BARN LN,CA,FOUNTAIN VALLEY,ORANGE,92708,$0 - $0.01,SunOnly,MM,0,Partner,NO +160612561,"Under $20,000",RENTER,Vietnamese,N,1,75 years or more,Vietnamese,16962 LYNDON LN APT A,CA,HUNTINGTON BEACH,ORANGE,92647,$2.00 - $2.99,Thu-SunT,YM,0,SCinsert,NO +180403774,"$100,000 - $124,999",OWNER,Swedish,Y,21,45-49,English,912 MAGNOLIA AVE,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,Thu-Sun,YW,0,Crew,NO +180563490,"$300,000 - $399,999",OWNER,Chinese,N,18,45-49,English,12940 ESSEX PL,CA,CERRITOS,LOS ANGELES,90703,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +150480505,"$ 60,000 - $69,999",OWNER,Jewish,Y,32,75 years or more,English,1380 E NORTH HILLS DR,CA,LA HABRA,ORANGE,90631,$10.00 - $10.99,7Day,FM,0,DirectMl,YES +181487684,"$125,000 - $149,999",OWNER,Scottish (Scotch),Y,13,55-59,English,4028 ORANGE AVE,CA,CYPRESS,ORANGE,90630,$0.01 - $0.50,SunOnly,FM,0,Partner,YES +160208339,"$ 30,000 - $39,999",OWNER,English,N,34,75 years or more,English,6064 FRED DR,CA,CYPRESS,ORANGE,90630,$4.00 - $4.99,7Day,MW,0,TeleIn,NO +181468610,"$300,000 - $399,999",OWNER,Swedish,Y,1,45-49,English,7 ALGERWOOD,CA,LADERA RANCH,ORANGE,92694,$0.01 - $0.50,SunOnly,YW,0,Internet,YES +140521965,"$200,000 - $249,999",OWNER,Scottish (Scotch),N,20,45-49,English,11911 SCANDIA ST,CA,GARDEN GROVE,ORANGE,92845,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +180136526,"$ 90,000 - $99,999",RENTER,Persian,N,1,45-49,Farsi (Persian),917 OAK GLN,CA,IRVINE,ORANGE,92618,$1.00 - $1.99,7Day,YM,0,Crew,NO +181529772,"$125,000 - $149,999",OWNER,Hispanic,N,3,30-34,Spanish,878 POINTE VISTA CIR,CA,CORONA,RIVERSIDE,92881,$0.01 - $0.50,SunOnly,FM,0,Partner,YES +160538851,"$ 90,000 - $99,999",RENTER,unknown,N,6,70-74,,7700 LAMPSON AVE SPC 72,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,ME,0,Partner,NO +170551508,"$ 50,000 - $59,999",OWNER,Hispanic,Y,13,50-54,Spanish,914 S FIGUEROA ST,CA,SANTA ANA,ORANGE,92704,$2.00 - $2.99,7Day,FM,0,Crew,NO +110107541,"$150,000 - $174,999",OWNER,Irish,N,39,70-74,English,23122 LA VACA ST,CA,LAKE FOREST,ORANGE,92630,$5.00 - $5.99,7Day,MM,11,CustCall,NO +120177738,"$ 50,000 - $59,999",RENTER,Arab,N,1,25-29,English,655 BAKER ST APT U202,CA,COSTA MESA,ORANGE,92626,$4.00 - $4.99,7Day,YM,0,Crew,NO +170556548,"$ 40,000 - $49,999",RENTER,French,Y,8,55-59,English,6343 LINCOLN AVE APT L1,CA,BUENA PARK,ORANGE,90620,$4.00 - $4.99,7Day,YM,0,TeleIn,NO +150025708,"Under $20,000",RENTER,Hispanic,N,13,55-59,Spanish,750 N SABINA ST APT A,CA,ANAHEIM,ORANGE,92805,$7.00 - $7.99,7Day,FE,0,TeleIn,NO +180315844,"Under $20,000",RENTER,Hispanic,N,2,25-29,Spanish,11731 STUART DR APT 7,CA,GARDEN GROVE,ORANGE,92843,$1.00 - $1.99,SunOnly,FE,0,TeleOut,NO +180722955,"$125,000 - $149,999",OWNER,English,N,33,70-74,English,6370 E BARBANELL ST,CA,LONG BEACH,LOS ANGELES,90815,,7DayOL,MW,0,CircAdm,NO +110121205,"$175,000 - $199,999",OWNER,unknown,Y,11,50-54,,110 STEPPING STONE,CA,IRVINE,ORANGE,92603,$1.00 - $1.99,SunOnly,YM,0,Kiosk,NO +181305531,"$100,000 - $124,999",OWNER,German,N,2,30-34,English,12100 MONTECITO RD UNIT 60,CA,LOS ALAMITOS,ORANGE,90720,$0 - $0.01,7Day,YM,0,Partner,YES +180385337,"$125,000 - $149,999",OWNER,English,Y,43,75 years or more,English,876 N HILLSIDE DR,CA,LONG BEACH,LOS ANGELES,90815,$1.00 - $1.99,7Day,MW,0,DirectMl,NO +150543561,"$100,000 - $124,999",OWNER,Greek,N,45,75 years or more,English,444 SERRA DR,CA,CORONA DEL MAR,ORANGE,92625,$1.00 - $1.99,7Day,MW,0,TeleIn,NO +180717694,"$200,000 - $249,999",OWNER,English,Y,15,50-54,English,17513 PARKVALLE PL,CA,CERRITOS,LOS ANGELES,90703,,7DayOL,MW,0,CircAdm,NO +181273793,"$ 90,000 - $99,999",RENTER,Vietnamese,N,1,30-34,English,617 SUNFLOWER,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,YM,0,CustCall,NO +180377486,"Under $20,000",RENTER,Vietnamese,N,4,55-59,English,9161 SHELLEY DR,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,FM,0,Partner,NO +180393848,"$400,000 - $499,999",OWNER,English,Y,11,50-54,English,1816 CALAVERA PL,CA,FULLERTON,ORANGE,92833,$5.00 - $5.99,7Day,FM,0,CustCall,NO +180176425,"$300,000 - $399,999",OWNER,unknown,N,5,60-64,,15431 CHERBOURG AVE,CA,IRVINE,ORANGE,92604,$0 - $0.01,SunOnly,MW,0,Partner,NO +180363658,"$ 60,000 - $69,999",OWNER,Austrian,N,6,65-69,English,210 S HIGHLAND AVE APT K,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,Thu-Sun,YM,0,TeleOut,NO +150417302,"$400,000 - $499,999",OWNER,English,N,22,60-64,English,22555 MAURICE CT,CA,LAKE FOREST,ORANGE,92630,$10.00 - $10.99,7Day,MW,0,VRU,YES +150244080,"$175,000 - $199,999",OWNER,English,N,30,60-64,English,32745 JOHNATHAN CIR,CA,DANA POINT,ORANGE,92629,$2.00 - $2.99,SoooTFS,MW,0,CustCall,NO +120380808,"Under $20,000",OWNER,English,N,19,70-74,English,27131 VIA BRONCA APT B,CA,SAN JUAN CAPISTRANO,ORANGE,92675,$2.00 - $2.99,7Day,MM,22,TeleIn,YES +160300914,"$ 30,000 - $39,999",OWNER,unknown,N,50,,,16801 PHELPS LN,CA,HUNTINGTON BEACH,ORANGE,92649,$4.00 - $4.99,7Day,MW,0,CustCall,NO +181286765,"$ 80,000 - $89,999",OWNER,Hispanic,N,10,55-59,Spanish,118 CHIQUITA,CA,SAN CLEMENTE,ORANGE,92672,$0.01 - $0.50,Thu-Sun,MM,0,Crew,NO +180403298,"$ 90,000 - $99,999",OWNER,Hispanic,N,12,45-49,English,721 S CHANTILLY ST,CA,ANAHEIM,ORANGE,92806,$0 - $0.01,SunOnly,YW,0,Partner,NO +140199755,"Under $20,000",OWNER,Greek,N,37,75 years or more,English,2839 E SOUTH ST,CA,ANAHEIM,ORANGE,92806,$0 - $0.01,7Day,MW,0,CircAdm,NO +170283709,"$100,000 - $124,999",OWNER,Hispanic,N,16,45-49,English,15164 MOIR CT,CA,TUSTIN,ORANGE,92780,$1.00 - $1.99,7Day,FM,0,TeleIn,NO +181271143,"$125,000 - $149,999",OWNER,Vietnamese,N,22,45-49,English,15731 S MYRTLE AVE,CA,TUSTIN,ORANGE,92780,$0 - $0.01,7Day,MM,0,Partner,YES +110534947,"$ 30,000 - $39,999",RENTER,English,N,2,65-69,English,17 MARSALA,CA,IRVINE,ORANGE,92606,$0.01 - $0.50,Thu-Sun,MW,0,Crew,NO +180638096,"$ 60,000 - $69,999",OWNER,English,N,17,60-64,English,4405 N BELLFLOWER BLVD,CA,LONG BEACH,LOS ANGELES,90808,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +140196339,"$100,000 - $124,999",OWNER,Welsh,N,7,70-74,English,13061 FAIRVIEW ST SPC 38,CA,GARDEN GROVE,ORANGE,92843,$2.00 - $2.99,7Day,ME,0,Kiosk,NO +160612610,"$100,000 - $124,999",OWNER,Persian,N,1,45-49,Farsi (Persian),28 MARCILLA,CA,LADERA RANCH,ORANGE,92694,$2.00 - $2.99,Thu-Sun,FM,0,DirectMl,NO +180222948,"$ 80,000 - $89,999",RENTER,Hispanic,N,13,50-54,English,17238 MCFADDEN AVE APT B,CA,TUSTIN,ORANGE,92780,$2.00 - $2.99,Thu-Sun,ME,0,TeleIn,NO +170520687,"$200,000 - $249,999",OWNER,unknown,Y,23,50-54,,21136 HIDDEN SPRING LN,CA,TRABUCO CANYON,ORANGE,92679,$7.00 - $7.99,7Day,YW,0,CustCall,NO +150322648,"$150,000 - $174,999",OWNER,English,N,40,70-74,English,11192 KENSINGTON RD,CA,LOS ALAMITOS,ORANGE,90720,$0 - $0.01,7Day,MM,0,CircAdm,NO +180469743,"$ 70,000 - $79,999",OWNER,Welsh,N,4,30-34,English,1101 FERN AVE,CA,BREA,ORANGE,92821,$0 - $0.01,SunOnly,MW,0,Partner,NO +120554282,"$175,000 - $199,999",OWNER,unknown,N,12,50-54,,1856 GILMAN ST,CA,FULLERTON,ORANGE,92833,$4.00 - $4.99,7Day,FW,0,CustCall,NO +170068109,"Under $20,000",RENTER,English,N,2,24 years or less,English,2201 W BROADWAY APT B213,CA,ANAHEIM,ORANGE,92804,$1.00 - $1.99,SunOnly,FE,0,CustCall,NO +130189765,"$ 70,000 - $79,999",RENTER,English,N,2,45-49,English,560 S CIRCULO LAZO,CA,ANAHEIM,ORANGE,92807,$1.00 - $1.99,7Day,MW,0,OutMedia,NO +181316901,"$ 20,000 - $29,999",OWNER,Hispanic,Y,12,30-34,Spanish,2621 PARK DR,CA,SANTA ANA,ORANGE,92707,$4.00 - $4.99,SoooTFS,MM,0,Crew,NO +180118944,"$ 20,000 - $29,999",OWNER,Hispanic,N,16,70-74,English,2001 MERCED AVE,CA,LA HABRA,ORANGE,90631,$2.00 - $2.99,7Day,FE,0,Kiosk,NO +180435488,"$ 30,000 - $39,999",RENTER,Hispanic,N,8,55-59,Spanish,1744 W JUNO AVE APT A,CA,ANAHEIM,ORANGE,92804,$0 - $0.01,SunOnly,YM,0,Partner,NO +140450992,"$100,000 - $124,999",OWNER,English,N,1,50-54,English,5302 ACORN DR,CA,HUNTINGTON BEACH,ORANGE,92649,$1.00 - $1.99,7Day,YM,0,DirectMl,NO +180352162,"$ 70,000 - $79,999",OWNER,Vietnamese,N,20,60-64,Vietnamese,13471 WEYMOUTH ST,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,MM,0,Partner,NO +170533756,"Under $20,000",RENTER,English,N,2,25-29,English,931 CYPRESS AVE APT B,CA,PLACENTIA,ORANGE,92870,$3.00 - $3.99,SoooTFS,FE,0,TeleOut,NO +181292813,"$ 80,000 - $89,999",OWNER,English,N,1,45-49,English,3019 SAMOA PL,CA,COSTA MESA,ORANGE,92626,$0 - $0.01,SunOnly,MW,0,Partner,NO +180755613,"Under $20,000",RENTER,English,N,4,45-49,English,1907 DEERPARK DR APT 477,CA,FULLERTON,ORANGE,92831,$3.00 - $3.99,7Day,YM,0,Partner,NO +180238236,"Under $20,000",OWNER,Irish,N,17,75 years or more,English,8841 ANNAPOLIS AVE,CA,ANAHEIM,ORANGE,92804,$5.00 - $5.99,Thu-Sun,MW,0,System,NO +180645925,"$ 20,000 - $29,999",OWNER,Hispanic,N,10,45-49,Spanish,7921 18TH ST,CA,WESTMINSTER,ORANGE,92683,$0 - $0.01,SunOnly,FE,0,Partner,NO +180369991,"$ 30,000 - $39,999",OWNER,Hispanic,N,4,25-29,English,6942 SAN ALTO WAY,CA,BUENA PARK,ORANGE,90620,$1.00 - $1.99,SoooTFS,MW,0,TeleIn,NO +180393422,"$100,000 - $124,999",OWNER,Hispanic,Y,25,45-49,Spanish,1433 S ROSS ST,CA,SANTA ANA,ORANGE,92707,$2.00 - $2.99,SunOnly,YM,0,TeleIn,NO +120082629,"$100,000 - $124,999",OWNER,Vietnamese,N,7,45-49,English,15671 CANDLEWOOD ST,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,7Day,MW,0,CustCall,NO +150610397,"$300,000 - $399,999",OWNER,Welsh,N,12,70-74,English,24892 KNOLLWOOD,CA,LAKE FOREST,ORANGE,92630,$4.00 - $4.99,7Day,MW,0,Crew,NO +180420565,"$ 60,000 - $69,999",RENTER,Scottish (Scotch),N,1,40-44,English,23411 SUMMERFIELD APT 52L,CA,ALISO VIEJO,ORANGE,92656,$0 - $0.01,SunOnly,YM,0,Partner,NO +170056461,"$ 90,000 - $99,999",OWNER,Thai,Y,24,40-44,Thai,2222 E VERMONT AVE,CA,ANAHEIM,ORANGE,92806,$1.00 - $1.99,SunOnly,MW,0,CustCall,NO +130227866,"$ 90,000 - $99,999",OWNER,Vietnamese,N,31,50-54,English,14872 GROVEVIEW LN,CA,IRVINE,ORANGE,92604,$2.00 - $2.99,Thu-Sun,MW,0,System,NO +110613452,"$ 30,000 - $39,999",OWNER,Hispanic,N,9,75 years or more,Spanish,14905 LINDHALL WAY,CA,WHITTIER,LOS ANGELES,90604,$0.01 - $0.50,SunOnly,MW,0,SCinsert,NO +180587275,"$100,000 - $124,999",RENTER,English,Y,4,40-44,English,23411 SUMMERFIELD APT 8B,CA,ALISO VIEJO,ORANGE,92656,$4.00 - $4.99,7Day,YM,2,TeleIn,NO +180274872,"$125,000 - $149,999",OWNER,Japanese,N,24,75 years or more,Japanese,26596 LOPE DE VEGA DR,CA,MISSION VIEJO,ORANGE,92691,$1.00 - $1.99,SunOnly,FM,0,TeleIn,NO +180750499,"Under $20,000",RENTER,Italian,N,1,30-34,Italian,7551 FRANKLIN ST APT 5,CA,BUENA PARK,ORANGE,90621,$0 - $0.01,SunOnly,FE,0,Partner,NO +150432800,"$300,000 - $399,999",OWNER,French,N,31,60-64,English,38 RISERO DR,CA,MISSION VIEJO,ORANGE,92692,$2.00 - $2.99,SunOnly,MW,135,VRU,YES +180247326,"$ 60,000 - $69,999",RENTER,German,N,3,60-64,English,208 TEMPLE AVE,CA,LONG BEACH,LOS ANGELES,90803,$7.00 - $7.99,Thu-Sun,YM,0,CustCall,YES +160360589,"$ 50,000 - $59,999",OWNER,Portuguese,N,8,50-54,English,4063 N SANTA LUCIA ST,CA,ORANGE,ORANGE,92865,$0.01 - $0.50,SunOnly,YW,0,Internet,YES +181283247,"$100,000 - $124,999",OWNER,Vietnamese,N,9,40-44,English,5766 CENTERSTONE CT,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,7Day,MW,0,Internet,YES +130357821,"$ 50,000 - $59,999",OWNER,unknown,N,1,40-44,,11015 KENTUCKY AVE,CA,WHITTIER,LOS ANGELES,90603,$2.00 - $2.99,SatSun,MM,0,CustCall,NO +170339338,"$ 30,000 - $39,999",OWNER,Hispanic,N,19,24 years or less,English,4318 W MCFADDEN AVE,CA,SANTA ANA,ORANGE,92704,$4.00 - $4.99,7Day,FM,0,TeleIn,NO +181177244,"$ 30,000 - $39,999",OWNER,Hungarian,N,11,65-69,English,1518 S ROYER AVE,CA,FULLERTON,ORANGE,92833,$0 - $0.01,SunOnly,FM,0,Partner,NO +180076069,"$ 50,000 - $59,999",OWNER,English,N,18,50-54,English,6763 MOUNT WHITNEY DR,CA,BUENA PARK,ORANGE,90620,$0.01 - $0.50,Thu-Sun,FM,0,TeleIn,NO +180543211,"$ 80,000 - $89,999",OWNER,Italian,Y,23,55-59,English,8402 SAN PABLO DR,CA,BUENA PARK,ORANGE,90620,$7.00 - $7.99,7Day,MW,0,TeleIn,NO +170520841,"$ 30,000 - $39,999",RENTER,French,N,6,30-34,English,245 S REDWOOD AVE APT M,CA,BREA,ORANGE,92821,$1.00 - $1.99,7Day,FE,0,TeleOut,NO +140243386,"$175,000 - $199,999",OWNER,English,N,37,60-64,English,10 DAVIS,CA,IRVINE,ORANGE,92620,$10.00 - $10.99,7Day,MW,0,CustCall,YES +180481425,"$200,000 - $249,999",OWNER,Vietnamese,Y,22,50-54,English,5385 CALLE SONORA,CA,YORBA LINDA,ORANGE,92887,$0 - $0.01,SunOnly,FW,0,Partner,NO +180305375,"$ 40,000 - $49,999",OWNER,French,N,28,75 years or more,English,15161 YAWL ST,CA,GARDEN GROVE,ORANGE,92843,$5.00 - $5.99,Thu-Sun,MM,0,CustCall,NO +181401514,"$ 80,000 - $89,999",OWNER,Italian,N,10,55-59,English,214 10TH ST,CA,HUNTINGTON BEACH,ORANGE,92648,$0.01 - $0.50,SunOnly,MW,0,Partner,YES +140239333,"$ 70,000 - $79,999",OWNER,English,N,54,75 years or more,English,3264 IDAHO LN,CA,COSTA MESA,ORANGE,92626,$6.00 - $6.99,7Day,MW,0,TeleIn,NO +180438704,"Under $20,000",OWNER,unknown,N,3,60-64,,1202 S ROSS ST,CA,SANTA ANA,ORANGE,92707,$0 - $0.01,SunOnly,FM,0,Partner,NO +180565583,"$175,000 - $199,999",OWNER,Hispanic,Y,4,40-44,English,1824 JONES PL,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,SunOnly,MW,0,System,NO +180431459,"$100,000 - $124,999",OWNER,Hispanic,N,16,45-49,Spanish,624 S SULLIVAN ST APT 17A,CA,SANTA ANA,ORANGE,92704,$0 - $0.01,SunOnly,FM,0,Partner,NO +120408766,"$ 70,000 - $79,999",OWNER,Chinese,N,2,30-34,Chinese,2532 N MILLSTREAM LN,CA,ORANGE,ORANGE,92865,$0.01 - $0.50,Thu-Sun,FW,0,CircAdm,NO +180239204,"$300,000 - $399,999",OWNER,English,Y,19,65-69,English,5480 BLUE RIDGE DR,CA,YORBA LINDA,ORANGE,92887,$9.00 - $9.99,7Day,FW,1,CustCall,YES +181541283,"$175,000 - $199,999",OWNER,Italian,N,6,40-44,Italian,15 GARDEN VIEW CT,CA,RANCHO SANTA MARGARITA,ORANGE,92688,$4.00 - $4.99,7DAY,FW,0,INTERNET,YES +130603080,"$175,000 - $199,999",RENTER,English,Y,1,45-49,English,21 VIA ALONSO,CA,SAN CLEMENTE,ORANGE,92673,$0.01 - $0.50,Soooooo,FW,0,CircAdm,NO +180585623,"$ 30,000 - $39,999",OWNER,Hispanic,N,9,50-54,Spanish,1835 W RANDOM DR,CA,ANAHEIM,ORANGE,92804,$2.00 - $2.99,SunOnly,FM,0,Crew,NO +150291169,"$125,000 - $149,999",OWNER,English,N,7,55-59,English,28501 SALERNO DR,CA,TRABUCO CANYON,ORANGE,92679,$2.00 - $2.99,SunOnly,YW,0,DirectMl,YES +181281117,"$150,000 - $174,999",OWNER,Hispanic,N,23,60-64,English,2033 RANCHO HILLS DR,CA,CHINO HILLS,SAN BERNARDINO,91709,$0 - $0.01,7Day,YW,2,Partner,YES +181366007,"Under $20,000",RENTER,Hispanic,N,4,45-49,Spanish,458 E 55TH ST,CA,LONG BEACH,LOS ANGELES,90805,$3.00 - $3.99,Thu-Sun,FE,0,Crew,NO +120452390,"$ 70,000 - $79,999",OWNER,Hispanic,N,7,30-34,Spanish,3414 ARIES CT,CA,SANTA ANA,ORANGE,92704,$1.00 - $1.99,7Day,MW,0,TeleIn,NO +160602446,"$ 40,000 - $49,999",OWNER,Polish,N,41,70-74,English,9471 STINSON LN,CA,WESTMINSTER,ORANGE,92683,$4.00 - $4.99,7Day,MW,5,DirectMl,YES +160231824,"$300,000 - $399,999",OWNER,Norwegian,N,32,60-64,English,18811 PORTOFINO DR,CA,IRVINE,ORANGE,92603,$10.00 - $10.99,7Day,MW,0,CustCall,YES +160242709,"$100,000 - $124,999",OWNER,English,N,10,55-59,English,22072 SUMMIT HILL DR,CA,LAKE FOREST,ORANGE,92630,$1.00 - $1.99,SunOnly,MW,0,System,NO +150318581,"$175,000 - $199,999",OWNER,Scottish (Scotch),Y,24,55-59,English,5601 CLARK DR,CA,HUNTINGTON BEACH,ORANGE,92649,$0.51 - $0.99,SunOnly,MW,21,VRU,YES +130234313,"$ 70,000 - $79,999",OWNER,Irish,N,2,24 years or less,English,430 W 1ST ST APT 12,CA,TUSTIN,ORANGE,92780,$1.00 - $1.99,SunOnly,YW,0,Kiosk,NO +160303532,"$ 30,000 - $39,999",RENTER,Vietnamese,N,4,55-59,Vietnamese,19858 COVENTRY LN,CA,HUNTINGTON BEACH,ORANGE,92646,$2.00 - $2.99,SatSun,MM,0,DirectMl,NO +181334478,"$125,000 - $149,999",OWNER,English,N,1,45-49,English,11 GROVESIDE DR,CA,ALISO VIEJO,ORANGE,92656,$1.00 - $1.99,Thu-Sun,FW,0,Internet,YES +180395844,"$125,000 - $149,999",OWNER,Irish,N,36,70-74,English,12832 SYLVAN ST,CA,GARDEN GROVE,ORANGE,92845,$3.00 - $3.99,Thu-Sun,MW,0,DirectMl,YES +180337552,"$ 40,000 - $49,999",OWNER,Japanese,N,5,40-44,English,8795 MOODY ST,CA,CYPRESS,ORANGE,90630,$2.00 - $2.99,Thu-Sun,FM,0,TeleIn,NO +180598161,"$ 70,000 - $79,999",OWNER,Dutch,N,1,45-49,English,4858 LIVERPOOL ST,CA,YORBA LINDA,ORANGE,92886,$4.00 - $4.99,7Day,FE,8,TeleIn,NO +140524415,"$175,000 - $199,999",OWNER,Scottish (Scotch),N,15,60-64,English,2371 NOTRE DAME WAY,CA,CORONA,RIVERSIDE,92881,$1.00 - $1.99,SunOnly,FM,0,CustCall,NO +181180581,"$400,000 - $499,999",OWNER,English,Y,14,40-44,English,265 1/2 CHIQUITA ST,CA,LAGUNA BEACH,ORANGE,92651,$0 - $0.01,SunOnly,YW,0,Partner,NO +140456305,"$150,000 - $174,999",OWNER,French,N,46,65-69,English,9794 RED RIVER CIR,CA,FOUNTAIN VALLEY,ORANGE,92708,$7.00 - $7.99,7Day,MW,0,CustCall,YES +180719862,"$300,000 - $399,999",OWNER,Polish,N,11,65-69,English,174 SAVONA WALK,CA,LONG BEACH,LOS ANGELES,90803,,7DayOL,MW,0,CircAdm,NO +160412515,"$400,000 - $499,999",OWNER,Scottish (Scotch),N,26,70-74,English,4692 TUSCANI DR,CA,CYPRESS,ORANGE,90630,$5.00 - $5.99,Thu-Sun,MW,0,Internet,NO +140165770,"$125,000 - $149,999",RENTER,English,N,3,35-39,English,358 QUAIL MDWS,CA,IRVINE,ORANGE,92603,$4.00 - $4.99,7Day,YM,0,Crew,NO +180582759,"Under $20,000",RENTER,Vietnamese,N,6,70-74,Vietnamese,13881 CEDAR ST APT E,CA,WESTMINSTER,ORANGE,92683,$0.01 - $0.50,SunOnly,ME,0,TeleIn,YES +181447545,"$ 60,000 - $69,999",RENTER,Hispanic,N,11,40-44,Spanish,12881 GALWAY ST APT 204,CA,GARDEN GROVE,ORANGE,92841,$0.01 - $0.50,7Day,FE,0,Crew,YES +180413749,"$ 30,000 - $39,999",RENTER,unknown,N,1,60-64,,4700 WARNER AVE APT 101,CA,HUNTINGTON BEACH,ORANGE,92649,$2.00 - $2.99,SunOnly,YM,0,Internet,NO +180330527,"$ 30,000 - $39,999",OWNER,Hispanic,Y,21,40-44,English,278 PINE AVE,CA,BREA,ORANGE,92821,$2.00 - $2.99,Thu-Sun,FM,0,Crew,NO +160005899,"$150,000 - $174,999",OWNER,unknown,N,35,75 years or more,,1120 CYPRESS POINT DR,CA,PLACENTIA,ORANGE,92870,$0.51 - $0.99,7Day,YW,2,Internet,NO +160458344,"$150,000 - $174,999",OWNER,German,Y,19,45-49,English,25362 GRISSOM RD,CA,LAGUNA HILLS,ORANGE,92653,$4.00 - $4.99,7Day,MW,0,Crew,NO +180351880,"$ 90,000 - $99,999",OWNER,English,N,55,75 years or more,English,134 ANNED DR,CA,PLACENTIA,ORANGE,92870,$2.00 - $2.99,Thu-SunT,MM,0,System,NO +181436736,"$ 40,000 - $49,999",RENTER,German,N,1,30-34,English,3500 S GREENVILLE ST APT G6,CA,SANTA ANA,ORANGE,92704,$0.01 - $0.50,7Day,FM,0,Crew,YES +180577512,"$125,000 - $149,999",OWNER,English,N,12,45-49,English,2872 MAINWAY DR,CA,LOS ALAMITOS,ORANGE,90720,$0.01 - $0.50,SunOnly,MW,0,Partner,NO +160192526,"$125,000 - $149,999",OWNER,German,N,30,50-54,English,4472 MISTY WAY,CA,YORBA LINDA,ORANGE,92886,$2.00 - $2.99,7Day,YW,95,CustCall,YES +180733725,"$125,000 - $149,999",OWNER,unknown,Y,14,45-49,,12342 GEORGIAN ST,CA,GARDEN GROVE,ORANGE,92841,$0 - $0.01,SunOnly,MM,0,Partner,NO +180665115,"$125,000 - $149,999",RENTER,Indian,N,3,40-44,English,321 SAN MARINO,CA,IRVINE,ORANGE,92614,$0.01 - $0.50,SunOnly,FM,0,Partner,NO +180399605,"$ 30,000 - $39,999",RENTER,Filipino (Philippine),N,2,45-49,English,17232 ASH LN APT E,CA,HUNTINGTON BEACH,ORANGE,92647,$0.01 - $0.50,SunOnly,FE,0,Partner,NO +180630851,"$ 20,000 - $29,999",OWNER,Italian,N,14,50-54,English,2219 S ROSEWOOD AVE,CA,SANTA ANA,ORANGE,92707,$3.00 - $3.99,Thu-Sun,MW,0,Partner,NO diff --git a/tools-local/Microsoft.ML.AutoML.SourceGenerator/SearchSpaceGenerator.cs b/tools-local/Microsoft.ML.AutoML.SourceGenerator/SearchSpaceGenerator.cs index b36702c074..f92eb898e1 100644 --- a/tools-local/Microsoft.ML.AutoML.SourceGenerator/SearchSpaceGenerator.cs +++ b/tools-local/Microsoft.ML.AutoML.SourceGenerator/SearchSpaceGenerator.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Globalization; using System.Linq; using System.Text.Json; @@ -52,6 +53,7 @@ public void Execute(GeneratorExecutionContext context) "anchor" => "Anchor", "colorBits" => "ColorBits", "colorsOrder" => "ColorsOrder", + "dnnModelFactory" => "string", _ => throw new ArgumentException("unknown type"), }; @@ -78,42 +80,38 @@ public void Execute(GeneratorExecutionContext context) // default option optionAttribution = string.Empty; } - else + else if (searchSpaceNode is JsonObject searchSpaceObject && searchSpaceObject.ContainsKey("min")) { - var searchSpaceObject = searchSpaceNode.AsObject(); - if (searchSpaceObject.ContainsKey("min")) + // range option + var minToken = searchSpaceNode["min"]; + var minValue = searchSpaceNode["min"].GetValue(); + var maxValue = searchSpaceNode["max"].GetValue(); + var logBase = searchSpaceObject.ContainsKey("log_base") is false ? "false" : searchSpaceNode["log_base"].GetValue() ? "true" : "false"; + optionAttribution = (optionTypeName, minValue, maxValue, logBase, optionDefaultValue) switch { - // range option - var minToken = searchSpaceNode["min"]; - var minValue = searchSpaceNode["min"].GetValue(); - var maxValue = searchSpaceNode["max"].GetValue(); - var logBase = searchSpaceObject.ContainsKey("log_base") is false ? "false" : searchSpaceNode["log_base"].GetValue() ? "true" : "false"; - optionAttribution = (optionTypeName, minValue, maxValue, logBase, optionDefaultValue) switch - { - ("int", _, _, _, null) => $"Range((int){Convert.ToInt32(minValue).ToString(CultureInfo.InvariantCulture)}, (int){Convert.ToInt32(maxValue).ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", - ("float", _, _, _, null) => $"Range((float){Convert.ToSingle(minValue).ToString(CultureInfo.InvariantCulture)}, (float){Convert.ToSingle(maxValue).ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", - ("double", _, _, _, null) => $"Range((double){minValue.ToString(CultureInfo.InvariantCulture)}, (double){maxValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", - ("int", _, _, _, _) => $"Range((int){Convert.ToInt32(minValue).ToString(CultureInfo.InvariantCulture)}, (int){Convert.ToInt32(maxValue).ToString(CultureInfo.InvariantCulture)}, init: (int){optionDefaultValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", - ("float", _, _, _, _) => $"Range((float){Convert.ToSingle(minValue).ToString(CultureInfo.InvariantCulture)}, (float){Convert.ToSingle(maxValue).ToString(CultureInfo.InvariantCulture)}, init: (float){optionDefaultValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", - ("double", _, _, _, _) => $"Range((double){minValue.ToString(CultureInfo.InvariantCulture)}, (double){maxValue.ToString(CultureInfo.InvariantCulture)}, init: (double){optionDefaultValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", - _ => throw new NotImplementedException(), - }; - optionAttribution = $"[{optionAttribution}]"; - } - else + ("int", _, _, _, null) => $"Range((int){Convert.ToInt32(minValue).ToString(CultureInfo.InvariantCulture)}, (int){Convert.ToInt32(maxValue).ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", + ("float", _, _, _, null) => $"Range((float){Convert.ToSingle(minValue).ToString(CultureInfo.InvariantCulture)}, (float){Convert.ToSingle(maxValue).ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", + ("double", _, _, _, null) => $"Range((double){minValue.ToString(CultureInfo.InvariantCulture)}, (double){maxValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", + ("int", _, _, _, _) => $"Range((int){Convert.ToInt32(minValue).ToString(CultureInfo.InvariantCulture)}, (int){Convert.ToInt32(maxValue).ToString(CultureInfo.InvariantCulture)}, init: (int){optionDefaultValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", + ("float", _, _, _, _) => $"Range((float){Convert.ToSingle(minValue).ToString(CultureInfo.InvariantCulture)}, (float){Convert.ToSingle(maxValue).ToString(CultureInfo.InvariantCulture)}, init: (float){optionDefaultValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", + ("double", _, _, _, _) => $"Range((double){minValue.ToString(CultureInfo.InvariantCulture)}, (double){maxValue.ToString(CultureInfo.InvariantCulture)}, init: (double){optionDefaultValue.ToString(CultureInfo.InvariantCulture)}, logBase: {logBase.ToString(CultureInfo.InvariantCulture)})", + _ => throw new NotImplementedException(), + }; + optionAttribution = $"[{optionAttribution}]"; + } + else + { + // choice option + var values = searchSpaceNode.AsArray().Select(x => x.Deserialize()); + var valuesParam = optionTypeName switch { - // choice option - var values = searchSpaceNode["value"].GetValue(); - var valuesParam = optionTypeName switch - { - "int" => $"new object[]{{ {string.Join(",", values)} }}", - "boolean" => $"new object[]{{ {string.Join(",", values)} }}", - "string" => $"new object[]{{ {string.Join(",", values.Select(x => $"\"{x}\""))} }}", - _ => throw new NotImplementedException("only support int|boolean|string"), - }; + "int" => $"new object[]{{ {string.Join(",", values)} }}", + "boolean" => $"new object[]{{ {string.Join(",", values)} }}", + "string" => $"new object[]{{ {string.Join(",", values.Select(x => $"\"{x}\""))} }}", + _ => throw new NotImplementedException("only support int|boolean|string"), + }; - optionAttribution = optionDefaultValue == null ? $"[Choice({valuesParam})]" : $"[Choice({valuesParam}, {optionDefaultValue})]"; - } + optionAttribution = optionDefaultValue == null ? $"[Choice({valuesParam})]" : $"[Choice({valuesParam}, {optionDefaultValue})]"; } return (optionTypeName, optionName, optionAttribution, optionDefaultValue); diff --git a/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.cs b/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.cs index f0f9f3a960..39a64955be 100644 --- a/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.cs +++ b/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.cs @@ -25,9 +25,9 @@ internal partial class EstimatorType : EstimatorTypeBase /// public virtual string TransformText() { - this.Write("\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Converters;\r\n\r\nnamespace "); + this.Write("\r\nnamespace "); this.Write(this.ToStringHelper.ToStringWithCulture(NameSpace)); - this.Write("\r\n{\r\n [JsonConverter(typeof(StringEnumConverter))]\r\n public enum "); + this.Write("\r\n{\r\n public enum "); this.Write(this.ToStringHelper.ToStringWithCulture(ClassName)); this.Write("\r\n {\r\n"); foreach(var e in TrainerNames){ diff --git a/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.tt b/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.tt index 0fcb75f298..8bd821c701 100644 --- a/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.tt +++ b/tools-local/Microsoft.ML.AutoML.SourceGenerator/Template/EstimatorType.tt @@ -4,12 +4,8 @@ <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - namespace <#=NameSpace#> { - [JsonConverter(typeof(StringEnumConverter))] public enum <#=ClassName#> { <# foreach(var e in TrainerNames){#> diff --git a/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs b/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs index 1347cf4565..ed45d59a72 100644 --- a/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs +++ b/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs @@ -71,20 +71,14 @@ public void AnalyzeNamedType(SymbolAnalysisContext context) if (ExtendsBaseTestClass(namedType)) return; - var hasTestMethod = false; foreach (var member in namedType.GetMembers()) { if (member is IMethodSymbol method && method.IsTestMethod(_knownTestAttributes, _factAttribute)) { - hasTestMethod = true; + context.ReportDiagnostic(Diagnostic.Create(Rule, namedType.Locations[0], namedType)); break; } } - - if (!hasTestMethod) - return; - - context.ReportDiagnostic(Diagnostic.Create(Rule, namedType.Locations[0], namedType)); } private bool ExtendsBaseTestClass(INamedTypeSymbol namedType) diff --git a/tools-local/Microsoft.ML.InternalCodeAnalyzer/NameFixProvider.cs b/tools-local/Microsoft.ML.InternalCodeAnalyzer/NameFixProvider.cs index e6ae760e76..94a3b7307f 100644 --- a/tools-local/Microsoft.ML.InternalCodeAnalyzer/NameFixProvider.cs +++ b/tools-local/Microsoft.ML.InternalCodeAnalyzer/NameFixProvider.cs @@ -34,7 +34,6 @@ public sealed class NameFixProvider : CodeFixProvider private static ImmutableArray _fixable = ImmutableArray.Create( NameAnalyzer.PrivateFieldName.Id, NameAnalyzer.GeneralName.Id, ParameterVariableNameAnalyzer.Id, TypeParamNameAnalyzer.Id); - private static readonly ImmutableHashSet _fixableSet = ImmutableHashSet.Empty.Union(_fixable); private static readonly Regex _sections = new Regex( @"(?:\p{Nd}\p{Ll}*)|" + // Numbers we consider a separate token. @@ -49,9 +48,7 @@ public override FixAllProvider GetFixAllProvider() public override async Task RegisterCodeFixesAsync(CodeFixContext context) { - var diagnostic = context.Diagnostics.FirstOrDefault(d => _fixableSet.Contains(d.Id)); - if (diagnostic == null) - return; + var diagnostic = context.Diagnostics[0]; string originalName = diagnostic.Properties[NameAnalyzer.NameProperty]; string desiredNameStr = diagnostic.Properties[NameAnalyzer.DesiredNameProperty]; diff --git a/tools-local/Microsoft.ML.InternalCodeAnalyzer/ParameterVariableNameAnalyzer.cs b/tools-local/Microsoft.ML.InternalCodeAnalyzer/ParameterVariableNameAnalyzer.cs index e626a14cbc..d9b27dcfde 100644 --- a/tools-local/Microsoft.ML.InternalCodeAnalyzer/ParameterVariableNameAnalyzer.cs +++ b/tools-local/Microsoft.ML.InternalCodeAnalyzer/ParameterVariableNameAnalyzer.cs @@ -47,8 +47,8 @@ private static void AnalyzeParameter(SyntaxNodeAnalysisContext context) private static void AnalyzeLocal(SyntaxNodeAnalysisContext context) { var node = (LocalDeclarationStatementSyntax)context.Node; - foreach (var dec in node.DescendantNodesAndSelf().Where(s => s.IsKind(SyntaxKind.VariableDeclarator))) - AnalyzeCore(context, ((VariableDeclaratorSyntax)dec).Identifier, "local variable"); + foreach (var dec in node.Declaration.Variables) + AnalyzeCore(context, dec.Identifier, "local variable"); } private static void AnalyzeCore(SyntaxNodeAnalysisContext context, SyntaxToken identifier, string type)